WO2007018913A2 - Reduction of programming time in electrically programmable devices - Google Patents

Reduction of programming time in electrically programmable devices Download PDF

Info

Publication number
WO2007018913A2
WO2007018913A2 PCT/US2006/026925 US2006026925W WO2007018913A2 WO 2007018913 A2 WO2007018913 A2 WO 2007018913A2 US 2006026925 W US2006026925 W US 2006026925W WO 2007018913 A2 WO2007018913 A2 WO 2007018913A2
Authority
WO
WIPO (PCT)
Prior art keywords
programming
data
bit cell
bit
sequence
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
PCT/US2006/026925
Other languages
French (fr)
Other versions
WO2007018913A3 (en
Inventor
Johnny Chan
Jeffrey Ming-Hung Tsai
Tin-Wai Wong
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Atmel Corp
Original Assignee
Atmel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Atmel Corp filed Critical Atmel Corp
Publication of WO2007018913A2 publication Critical patent/WO2007018913A2/en
Publication of WO2007018913A3 publication Critical patent/WO2007018913A3/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups

Definitions

  • the present invention relates to programming electrically programmable devices. More particularly, the invention relates to a method for determining programming of data based on an input data value.
  • Non-volatile memory devices are typically classified into volatile memory devices and non-volatile memory devices. Volatile memory devices are subdivided into dynamic random access memories (DRAMs) and static random access memories (SRAMs) .
  • Non-volatile memory types include mask read-only memories (MROMs) , programmable read-only memories (PROMs) , erasable programmable read-only memories (EPROMs) , and electrically erasable programmable read-only memories (EEPROMs) .
  • flash EEPROMs are advantageous as mass storage devices because their integration density is high compared with conventional EEPROMs.
  • Non-volatile semiconductor memories have attained broad utilization due to an ability to retain data within a device, even after power has been suspended.
  • EEPROMs are non-volatile semiconductor memories that possess these abilities and additionally are able to store data by electrically erasing and writing storage devices. This programming process can be repeated over hundreds of thousands of cycles .
  • a flash memory is a type of non-volatile memory where all bit cells or pages of bit cells are erased simultaneously to a logic one or logic zero level before programming occurs.
  • a bit cell is programmed by hot electron injection (HEI) .
  • Each bit cell of the flash memory is erased by tunneling of electrons through a thin tunnel diode window from a conductive channel to a floating polysilicon gate.
  • the bit cell contains a select transistor and a sense or memory transistor. With an NMOSFET device used for the memory transistor, erasure produces a logic level of "1" in the cell.
  • a PMOSFET memory transistor produces a complementary result.
  • a charge pump is used for generating the voltages required for programming the bit cells of the flash memory.
  • the size of a charge pump on a substrate is large due to the size of a typical capacitor used and the number of stages of capacitors required. It is desirable to keep the number of charge pumps per byte small in order to save space on the substrate due to the relatively large size of each charge pump.
  • Programming of a bit cell takes one programming time, t P .
  • a charge pump programs one bit cell at a time.
  • programming (writing) each bit cell involves setting the cell to a "0" logic level by biasing the cell with a charge pump and inducing hot electron injection for the programming time, t P .
  • t P programming time
  • no programming is required in a bit cell to be programmed to a logic level "1," no programming is required.
  • the initial bulk erasing operation places each bit cell into a "1" logic level condition by default.
  • One or more charge pumps may engage a particular data structure. For instance, two charge pumps may be associated with a byte of data at a time. A total time for programming a data structure is given by
  • BCxtp — where BC is a number of bit cells in the data
  • t P is an amount of time for programming one bit cell
  • CP is a number of charge pumps engaged in programming the data structure. For example, in the case of programming a single byte data structure with two charge pumps, the total programming time is equal to
  • a prior art process flow diagram 100 of a single charge pump programming a byte wide data structure commences with writing 110 Bit (7) , where a bit cell index, i, equals 7.
  • the process continues with writing 120 Bit (6) and continues through each bit position of the byte by decrementing the bit cell index, i, by one to engage each successive bit cell location.
  • the process continues until reaching the step of writing 180 Bit(0) .
  • the process concludes with ending 190 the flow.
  • the programming time for this process is
  • a prior art process flow diagram 200 for two charge pumps programming a byte wide data structure commences with writing 210 Bits (7, 6), where a bit cell pair index, i:j, equals 7, 6. The process continues with writing 220 Bits (5, 4) and continues through bit pairs of the byte by decrementing each element of the bit cell pair index by two. The process continues until reaching the step of writing 240 Bits(l, 0). The process concludes with ending 250 the flow. A programming time for the dual charge pump process, substituting the prior art values into the
  • the direct approach of the prior art of engaging the charge pumps to the data structure does not take into account any correlation of a logic level set by the initial erasing of the bit cells and a logic level to be programmed.
  • a direct programming approach applies an equal programming time per bit cell regardless of the final logic level of programmed data.
  • a device not taking into account a lack of required programming for one gender of input data is expending programming time with no effective programming transpiring. This lack of effective programming happens with each occurrence of an input data value equaling the erased logic level . It would be ideal if a device would take into account the gender of data to be programmed and skip the programming of bit cell locations with an erased logic level equal to the gender of data to be programmed.
  • Combining data gender coordinated programming with an ability to engage multiple charge pumps would truncate overall programming time in proportion to the amount of data equal to the logic level of the erased bit cells.
  • a process of programming a flash memory device incorporates, for example, two charge pumps per byte of bit cells to be programmed.
  • the entirety of bit cells in the device is first erased. Erasure of a bit cell places the cell in a data "one" value.
  • a data content to be applied to the cell is scrutinized. If a data "zero" condition is to be applied to the bit cell, a charge pump is engaged to bias the cell and activate a hot electron injection process to affect the programming. If a data "one" value is to be applied to the bit cell, no programming activity is undertaken and the process increments to the next bit cell to be programmed and one bit cell programming time is saved.
  • Fig. 1 is a prior art process flow diagram of programming a byte wide data structure with a single charge pump.
  • Fig. 2 is a prior art process flow diagram of programming a byte wide data structure with two charge pumps .
  • Fig. 3 is a process flow diagram of an exemplary method of programming a memory cell data content based on data value.
  • Figs. 4a and 4b are exemplary bit sequence programming arrays for a two charge pump approach to programming an electrically programmable device.
  • an exemplary process flow diagram 300 of a data content based programming method commences with setting 305 the variable test quantity, ZC, equal to the number of zeros in a sequence of input data to be stored. The method continues with setting 310 an index, i, equal to zero and determining
  • a first exemplary bit cell programming sequence array 405 two charge pump programming rows CPl, CP2 are labeled on the ordinate with four programming time slots t ⁇ -t 4 sequenced along the abscissa. Each programming time slot signifies a duration of programming time equal to t P .
  • a first charge pump CPl programs Bit (7) in a first programming time slot ti, Bit (6) in a second programming time slot t 2/ Bit (5) in a third programming time slot t 3 , and Bit (4) in a fourth programming time slot t 4 .
  • a second charge pump CP2 programs Bit (3) through Bit(O) in the same sequence of four programming time slots ti-t 4 .
  • Each of the two charge pumps CPl, CP2 sequences through the four bit cell programming stages during the four respective programming time slots t ⁇ -t 4 .
  • a data "one" value to be programmed by the data content programming method (Fig. 3), described supra means that the respective programming time slot may be skipped; saving one programming time, t P .
  • any sequence of zeros may be operated on with the greatest optimization of data "one" contents within the input data sequence and minimizes an overall programming time for the data structure.
  • the first charge pump CPl requires one programming time slot t P to program the single zero within the input data sequence.
  • the second charge pump CP2 requires three programming time slots or 3xt P to program the three zeros in the input data.
  • a limiting factor in bit cell programming optimization therefore, is the number of zeros in the input data for a given charge pump .
  • a data byte with a value 10010011 has an equal number of zeros to program for each charge pump CPl, CP2.
  • the first charge pump CPl programs the sequence 1001 and the second charge pump CP2 programs the sequence 0011.
  • the total amount of programming time
  • a second exemplary bit cell programming sequence array 415 two charge pump programming rows CPl, CP2 are labeled on the ordinate with four programming time slots t x -t 4 sequenced along the abscissa. Each programming time slot signifies a programming duration equal to t P .
  • a first charge pump CPl programs Bit (7) in a first programming time slot t x ,
  • Bit (5) in a second programming time slot t 2 Bit (3) in a third programming time slot t 3 , and Bit(l) in a fourth programming time slot t 4 .
  • a second charge pump CP2 programs Bit (6) through Bit(0) in the same sequence of four programming time slots t x -t 4 .
  • Each of the two charge pumps CPl, CP2 sequences through the four bit cell programming stages during the four respective programming time slots ti-t 4 .
  • a data "one" value programmed by the data content programming method (Fig. 3) means that the respective programming time slot may be skipped; saving one programming time, t P .
  • any sequence of zeros may be operated on with the greatest optimization of data "one" content within the input data sequence and minimizes an overall programming time for the data structure.
  • a data byte with a value 10111000 engaged with the bit cell programming sequence above (Fig. 4b), would have the first charge pump CPl programming the sequence 1110 and the second charge pump CP2 programming the sequence 0100 in parallel.
  • the first charge pump CPl requires one programming time slot t P to program the single zero within the input data sequence.
  • the second charge pump CP2 requires three programming time slots or 3xt P to program the three zeros in the input data.
  • a limiting factor in bit cell programming optimization therefore, is the number of zeros in the input data for a given charge pump.
  • a data byte with a value 10111000 engaged with the bit cell programming sequence above (Fig. 4b)
  • the first charge pump CPl requires one programming time slot t P to program the single zero within the input data sequence.
  • the second charge pump CP2 requires three programming time slots or 3xt P to program the three zeros in the input data.
  • a limiting factor in bit cell programming optimization therefore, is the number of zeros in the input data for
  • 10010011 has an equal number of zeros to program for each charge pump CPl, CP2.
  • the first charge pump CPl programs the sequence 1001 and the second charge pump CP2 programs the sequence 0101.
  • the total amount of programming time, . ⁇ 1 . %zeros ⁇ BC ⁇ t p , ⁇ 0.5 ⁇ 8xt p using the expression — — is equal to —
  • two different bit cell programming sequences 405, 415 produce the same net total programming time when two charge pumps engage the same data byte value.
  • certain data structures may contain a predetermined distribution or a probability distribution (or density) function (PDF) of occurrences of ones or zeros within certain fields of a data structure or data word.
  • PDF probability distribution
  • a microprocessor architecture may have a particular distribution of opcodes and operand encodings within an instruction set encoding scheme. The distribution of encodings may accentuate a number of ones or zeros within a particular field or subfield within each instruction word across a range of storage locations.
  • a bit cell programming sequence may be crafted to optimize a total programming time of the device.
  • a person skilled in the art would also readily identify a similar situation occurring within the probability distribution of opcodes within the encodings of instructions for typical programming. For example, certain logical or arithmetic operations may occur more often than operations to test equivalence or to perform comparisons. The respective operations and their encodings therefore, will occur with different likelihood.
  • a bit cell programming sequence may be tailored to optimize programming time in view of the distribution of encoding.
  • a RISC processor targeted to operate with the C programming language may also operate within a recommend procedural call standard (PCS) .
  • PCS is employed to coordinate a conformity in register usage between calling and called program segments.
  • the use of a PCS will specify a subset of registers to contain a finite set of operand locations.
  • the instructions used at subprogram calls will have a limited set of register location (operand) encodings and therefore, a limited distribution of data within the operand subfield of storage instructions.
  • the limited operand encodings make an opportunity for a bit cell programming sequencing approach similar to those presented supra.

Landscapes

  • Read Only Memory (AREA)

Abstract

A flash memory programming process incorporates two charge pumps per byte of bit cells. Placing a data 'one” value in each bit cell erases an entire memory device. Before programming each cell, a prospective data content is scrutinized. If a data 'zero' is to be applied to the bit cell, a charge pump engages to bias the cell and activate a hot electron injection process to affect the programming. If a data 'one' is to be applied to the bit cell, no programming activity is undertaken and the process increments to the next bit cell in the data structure. Therefore, total programming time is reduced proportionally to the number of data 'one' bits to be programmed. Where more than one charge pump is engaged in parallel to a data structure, total programming time is further reduced when two data 'one' values are to be programmed in parallel.

Description

Description
REDUCTION OF PROGRAMMING TIME IN ELECTRICALLY PROGRAMMABLE DEVICES
TECHNICAL FIELD
The present invention relates to programming electrically programmable devices. More particularly, the invention relates to a method for determining programming of data based on an input data value.
BACKGROUND ART
Semiconductor memory devices are typically classified into volatile memory devices and non-volatile memory devices. Volatile memory devices are subdivided into dynamic random access memories (DRAMs) and static random access memories (SRAMs) . Non-volatile memory types include mask read-only memories (MROMs) , programmable read-only memories (PROMs) , erasable programmable read-only memories (EPROMs) , and electrically erasable programmable read-only memories (EEPROMs) . Additionally, flash EEPROMs are advantageous as mass storage devices because their integration density is high compared with conventional EEPROMs. Non-volatile semiconductor memories have attained broad utilization due to an ability to retain data within a device, even after power has been suspended. EEPROMs are non-volatile semiconductor memories that possess these abilities and additionally are able to store data by electrically erasing and writing storage devices. This programming process can be repeated over hundreds of thousands of cycles .
A flash memory is a type of non-volatile memory where all bit cells or pages of bit cells are erased simultaneously to a logic one or logic zero level before programming occurs. A bit cell is programmed by hot electron injection (HEI) . Each bit cell of the flash memory is erased by tunneling of electrons through a thin tunnel diode window from a conductive channel to a floating polysilicon gate. The bit cell contains a select transistor and a sense or memory transistor. With an NMOSFET device used for the memory transistor, erasure produces a logic level of "1" in the cell. A PMOSFET memory transistor produces a complementary result. A charge pump is used for generating the voltages required for programming the bit cells of the flash memory. The size of a charge pump on a substrate is large due to the size of a typical capacitor used and the number of stages of capacitors required. It is desirable to keep the number of charge pumps per byte small in order to save space on the substrate due to the relatively large size of each charge pump.
Programming of a bit cell takes one programming time, tP. A charge pump programs one bit cell at a time. For the NMOSFET-type memory device, programming (writing) each bit cell involves setting the cell to a "0" logic level by biasing the cell with a charge pump and inducing hot electron injection for the programming time, tP. In a bit cell to be programmed to a logic level "1," no programming is required. The initial bulk erasing operation places each bit cell into a "1" logic level condition by default.
One or more charge pumps may engage a particular data structure. For instance, two charge pumps may be associated with a byte of data at a time. A total time for programming a data structure is given by
BCxtp — , where BC is a number of bit cells in the data
CP structure, tP is an amount of time for programming one bit cell, and CP is a number of charge pumps engaged in programming the data structure. For example, in the case of programming a single byte data structure with two charge pumps, the total programming time is equal to
8x3 msec or ,12„ mi.l-,l-,i.second,s (msecλ) w-huere the programming time, tP, for a single bit cell is 3 msec.
With reference to Fig. 1, a prior art process flow diagram 100 of a single charge pump programming a byte wide data structure commences with writing 110 Bit (7) , where a bit cell index, i, equals 7. The process continues with writing 120 Bit (6) and continues through each bit position of the byte by decrementing the bit cell index, i, by one to engage each successive bit cell location. The process continues until reaching the step of writing 180 Bit(0) . The process concludes with ending 190 the flow. The programming time for this process is
8xtp, where there are eight bit cells (BC=8) for the byte data structure and one charge pump (CP=I) .
With reference to Fig. 2, a prior art process flow diagram 200 for two charge pumps programming a byte wide data structure commences with writing 210 Bits (7, 6), where a bit cell pair index, i:j, equals 7, 6. The process continues with writing 220 Bits (5, 4) and continues through bit pairs of the byte by decrementing each element of the bit cell pair index by two. The process continues until reaching the step of writing 240 Bits(l, 0). The process concludes with ending 250 the flow. A programming time for the dual charge pump process, substituting the prior art values into the
expression given supra, i s 8x tP— or 4Ax 4t.p .
However, the direct approach of the prior art of engaging the charge pumps to the data structure does not take into account any correlation of a logic level set by the initial erasing of the bit cells and a logic level to be programmed. A direct programming approach applies an equal programming time per bit cell regardless of the final logic level of programmed data. A device not taking into account a lack of required programming for one gender of input data is expending programming time with no effective programming transpiring. This lack of effective programming happens with each occurrence of an input data value equaling the erased logic level . It would be ideal if a device would take into account the gender of data to be programmed and skip the programming of bit cell locations with an erased logic level equal to the gender of data to be programmed. Combining data gender coordinated programming with an ability to engage multiple charge pumps would truncate overall programming time in proportion to the amount of data equal to the logic level of the erased bit cells.
SUMMARY OF THE INVENTION
A process of programming a flash memory device incorporates, for example, two charge pumps per byte of bit cells to be programmed. In an exemplary embodiment, the entirety of bit cells in the device is first erased. Erasure of a bit cell places the cell in a data "one" value. As the programming process progresses through the cells, a data content to be applied to the cell is scrutinized. If a data "zero" condition is to be applied to the bit cell, a charge pump is engaged to bias the cell and activate a hot electron injection process to affect the programming. If a data "one" value is to be applied to the bit cell, no programming activity is undertaken and the process increments to the next bit cell to be programmed and one bit cell programming time is saved. In this way total programming time is reduced in direct proportion to the number of data "one" bits to be programmed. Where more than one charge pump is engaged in parallel to a data structure, a further reduction in total programming time is realized with each pair of data "one" values occurring in parallel .
BRIEF DESCRIPTION OF THE DRAWINGS
Fig. 1 is a prior art process flow diagram of programming a byte wide data structure with a single charge pump.
Fig. 2 is a prior art process flow diagram of programming a byte wide data structure with two charge pumps .
Fig. 3 is a process flow diagram of an exemplary method of programming a memory cell data content based on data value. Figs. 4a and 4b are exemplary bit sequence programming arrays for a two charge pump approach to programming an electrically programmable device.
DETAILED DESCRIPTION OF THE INVENTION With reference to Fig. 3, an exemplary process flow diagram 300 of a data content based programming method, commences with setting 305 the variable test quantity, ZC, equal to the number of zeros in a sequence of input data to be stored. The method continues with setting 310 an index, i, equal to zero and determining
315 if ZC is equal to zero. If ZC is equal to zero, the process ends 320. If ZC is not equal to zero, a determination 325 is made whether an ith data bit is equal to zero. If the ith data bit is not equal to zero, a step of incrementing 340 the index, i, by one is made. If the ith data bit is equal to zero, a next step of writing 330 the ith data bit to a respective bit cell is taken and a step of decrementing 335 ZC by one is taken. The process flow continues with the step of incrementing 340 the index, i, by one, as described supra. A next step is determining 315 if ZC is equal to zero with the incremented index, i, and subsequently proceeding as described supra. The total amount of programming time for a byte data structure, per the exemplary process
f-Fliow, is given Xb-.y —%zerosxBCxtp— , where %zeros i-s ^the
percentage of zeros (expressed as a decimal) in the sequence of input data.
With reference to Fig. 4a, a first exemplary bit cell programming sequence array 405, two charge pump programming rows CPl, CP2 are labeled on the ordinate with four programming time slots tχ-t4 sequenced along the abscissa. Each programming time slot signifies a duration of programming time equal to tP. A first charge pump CPl programs Bit (7) in a first programming time slot ti, Bit (6) in a second programming time slot t2/ Bit (5) in a third programming time slot t3, and Bit (4) in a fourth programming time slot t4. A second charge pump CP2 programs Bit (3) through Bit(O) in the same sequence of four programming time slots ti-t4. Each of the two charge pumps CPl, CP2 sequences through the four bit cell programming stages during the four respective programming time slots tχ-t4. For either charge pump, a data "one" value to be programmed by the data content programming method (Fig. 3), described supra, means that the respective programming time slot may be skipped; saving one programming time, tP. With each charge pump operating independently, any sequence of zeros may be operated on with the greatest optimization of data "one" contents within the input data sequence and minimizes an overall programming time for the data structure.
For instance, a data byte with a value
10111000, engaged with the bit cell programming sequence above (Fig. 4a) , would have the first charge pump CPl programming the sequence 1011 and the second charge pump CP2 programming the sequence 1000 in parallel. The first charge pump CPl requires one programming time slot tP to program the single zero within the input data sequence. The second charge pump CP2 requires three programming time slots or 3xtPto program the three zeros in the input data. A limiting factor in bit cell programming optimization, therefore, is the number of zeros in the input data for a given charge pump .
In a further example, a data byte with a value 10010011 has an equal number of zeros to program for each charge pump CPl, CP2. The first charge pump CPl programs the sequence 1001 and the second charge pump CP2 programs the sequence 0011. The total amount of programming time,
%zeros x BC x tp , , 0.5x8xtp using the expression — cp — ,, is eq^ual to 2 or 2xtp, where tP is the programming time for one bit cell. Therefore, both charge pumps CPl, CP2 finish programming at the same time and finish in half the time of a conventional bit cell programming sequence.
With reference to Fig. 4b, a second exemplary bit cell programming sequence array 415, two charge pump programming rows CPl, CP2 are labeled on the ordinate with four programming time slots tx-t4 sequenced along the abscissa. Each programming time slot signifies a programming duration equal to tP. A first charge pump CPl programs Bit (7) in a first programming time slot tx,
Bit (5) in a second programming time slot t2, Bit (3) in a third programming time slot t3, and Bit(l) in a fourth programming time slot t4. A second charge pump CP2 programs Bit (6) through Bit(0) in the same sequence of four programming time slots tx-t4. Each of the two charge pumps CPl, CP2 sequences through the four bit cell programming stages during the four respective programming time slots ti-t4. For either charge pump, a data "one" value programmed by the data content programming method (Fig. 3) , described supra, means that the respective programming time slot may be skipped; saving one programming time, tP. With each charge pump operating independently, any sequence of zeros may be operated on with the greatest optimization of data "one" content within the input data sequence and minimizes an overall programming time for the data structure.
For instance, a data byte with a value 10111000, engaged with the bit cell programming sequence above (Fig. 4b), would have the first charge pump CPl programming the sequence 1110 and the second charge pump CP2 programming the sequence 0100 in parallel. The first charge pump CPl requires one programming time slot tP to program the single zero within the input data sequence. The second charge pump CP2 requires three programming time slots or 3xtPto program the three zeros in the input data. A limiting factor in bit cell programming optimization, therefore, is the number of zeros in the input data for a given charge pump. In a further example, a data byte with a value
10010011 has an equal number of zeros to program for each charge pump CPl, CP2. The first charge pump CPl programs the sequence 1001 and the second charge pump CP2 programs the sequence 0101. The total amount of programming time, . ^1 . %zerosχBCχtp , π 0.5χ8xtp using the expression — — , is equal to —
GJr 2 or 2xtP, where tP is the programming time for one bit cell. Therefore, both charge pumps CPl, CP2 finish programming at the same time and finish in half the time of a conventional bit cell programming sequence. From the two examples cited above (Figs. 4a,
4b), two different bit cell programming sequences 405, 415 produce the same net total programming time when two charge pumps engage the same data byte value. An artisan would appreciate that certain data structures may contain a predetermined distribution or a probability distribution (or density) function (PDF) of occurrences of ones or zeros within certain fields of a data structure or data word. For instance, a microprocessor architecture may have a particular distribution of opcodes and operand encodings within an instruction set encoding scheme. The distribution of encodings may accentuate a number of ones or zeros within a particular field or subfield within each instruction word across a range of storage locations. When an electrically programmable storage device is matched to a data structure with a known probability distribution function within subfields, a bit cell programming sequence may be crafted to optimize a total programming time of the device.
A person skilled in the art would also readily identify a similar situation occurring within the probability distribution of opcodes within the encodings of instructions for typical programming. For example, certain logical or arithmetic operations may occur more often than operations to test equivalence or to perform comparisons. The respective operations and their encodings therefore, will occur with different likelihood. A bit cell programming sequence may be tailored to optimize programming time in view of the distribution of encoding.
In a further example of operand encoding, a RISC processor targeted to operate with the C programming language, may also operate within a recommend procedural call standard (PCS) . A PCS is employed to coordinate a conformity in register usage between calling and called program segments. The use of a PCS will specify a subset of registers to contain a finite set of operand locations. The instructions used at subprogram calls will have a limited set of register location (operand) encodings and therefore, a limited distribution of data within the operand subfield of storage instructions. The limited operand encodings make an opportunity for a bit cell programming sequencing approach similar to those presented supra. Knowing the distribution of the opcodes from typical programs would allow an artisan to tailor a bit cell programming sequence to optimize storage of such programs and reduce the total bit cell programming time. While examples have been presented of matching bit cell programming sequences to particular data distribution probabilities, one skilled in the art would readily recognize that many different bit cell programming sequences may be incorporated to store the same data. The skilled artisan would also recognize that there may exist a probability of distribution in the data that will make certain selections of bit cell programming sequences more effective in reducing total bit cell programming time for a memory device. The exemplary embodiments contained herein should thus be considered in an illustrative rather than restrictive sense.

Claims

Claims
1. A method of programming a nonvolatile electrically programmable device comprising: ascertaining a count, the count indicating a quantity of data values of a first gender in a sequence of input data; indexing the sequence of input data; making a first determination whether a data content at the position indexed in the sequence of input data is equal to the first gender; programming a bit cell location if the first determination is true that the data content is equal to the first gender; decrementing the count if the first determination is true that the data content is equal to the first gender; and incrementing the index of the position in the sequence of input data.
2. The method of claim 1, further comprising making a second determination whether the count is equal to a defined value, the defined value being determined by a number of locations desired to be processed.
3. The method of claim 2 , further comprising ending the programming if the second determination is true that the count is equal to the defined value.
4. The method of claim 1, further comprising saving a programming time of the bit cell location if the input data content is not equal to the first gender.
5. The method of claim 1, further comprising reducing an overall bit cell programming time by adding one or more charge pumps .
6. The method of claim 5, further comprising assigning a bit cell programming sequence of the two or more charge pumps based on an input data probability distribution function.
7. The method of claim 1, wherein the data values of the first gender are zeros.
8. The method of claim 1, wherein the data values of the first gender are ones.
PCT/US2006/026925 2005-07-25 2006-07-10 Reduction of programming time in electrically programmable devices Ceased WO2007018913A2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/188,612 2005-07-25
US11/188,612 US7233528B2 (en) 2005-07-25 2005-07-25 Reduction of programming time in electrically programmable devices

Publications (2)

Publication Number Publication Date
WO2007018913A2 true WO2007018913A2 (en) 2007-02-15
WO2007018913A3 WO2007018913A3 (en) 2007-07-05

Family

ID=37678905

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2006/026925 Ceased WO2007018913A2 (en) 2005-07-25 2006-07-10 Reduction of programming time in electrically programmable devices

Country Status (3)

Country Link
US (1) US7233528B2 (en)
TW (1) TW200713285A (en)
WO (1) WO2007018913A2 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009230414A (en) * 2008-03-21 2009-10-08 Toshiba Corp Storage device having plurality of nonvolatile memory devices
US9111629B2 (en) 2012-04-06 2015-08-18 Freescale Semiconductor, Inc. Smart charge pump configuration for non-volatile memories
US10249346B2 (en) * 2017-07-13 2019-04-02 Winbond Electronics Corp. Power supply and power supplying method thereof for data programming operation

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04123471A (en) 1990-09-14 1992-04-23 Oki Electric Ind Co Ltd Writing and erasing method for data of semiconductor memory
US5537350A (en) * 1993-09-10 1996-07-16 Intel Corporation Method and apparatus for sequential programming of the bits in a word of a flash EEPROM memory array
JP3976839B2 (en) 1996-07-09 2007-09-19 株式会社ルネサステクノロジ Nonvolatile memory system and nonvolatile semiconductor memory
DE69832019T2 (en) 1997-09-09 2006-07-20 Interuniversitair Micro-Electronica Centrum Vzw Method for erasing and programming a memory in low-voltage applications and low-power applications
KR100268442B1 (en) 1997-12-31 2000-10-16 윤종용 Program Method of Nonvolatile Semiconductor Memory Device
US6606267B2 (en) 1998-06-23 2003-08-12 Sandisk Corporation High data rate write process for non-volatile flash memories
EP0971361B1 (en) 1998-06-23 2003-12-10 SanDisk Corporation High data rate write process for non-volatile flash memories
US6469955B1 (en) 2000-11-21 2002-10-22 Integrated Memory Technologies, Inc. Integrated circuit memory device having interleaved read and program capabilities and methods of operating same
US6282145B1 (en) 1999-01-14 2001-08-28 Silicon Storage Technology, Inc. Array architecture and operating methods for digital multilevel nonvolatile memory integrated circuit system
EP1079395B1 (en) 1999-07-26 2003-12-03 STMicroelectronics S.r.l. Method for programming EEPROM memory devices with improved reliability, and corresponding EEPROM memory device
US6653682B1 (en) 1999-10-25 2003-11-25 Interuniversitair Microelektronica Centrum (Imel,Vzw) Non-volatile electrically alterable semiconductor memory device
JP2001195890A (en) 2000-01-12 2001-07-19 Sharp Corp Write method and write circuit for nonvolatile semiconductor memory device
US6424569B1 (en) * 2000-02-25 2002-07-23 Advanced Micro Devices, Inc. User selectable cell programming
US6295228B1 (en) 2000-02-28 2001-09-25 Advanced Micro Devices, Inc. System for programming memory cells
US6418059B1 (en) * 2000-06-26 2002-07-09 Intel Corporation Method and apparatus for non-volatile memory bit sequence program controller
JP2002025287A (en) 2000-07-12 2002-01-25 Hitachi Ltd Semiconductor storage device
US6385065B1 (en) 2000-09-14 2002-05-07 Fairchild Semiconductor Corporation Low voltage charge pump employing distributed charge boosting
JP3922516B2 (en) 2000-09-28 2007-05-30 株式会社ルネサステクノロジ Nonvolatile memory and writing method of nonvolatile memory
JP4055103B2 (en) * 2000-10-02 2008-03-05 株式会社ルネサステクノロジ Nonvolatile memory, semiconductor integrated circuit incorporating the same, and method of writing nonvolatile memory
JP2002133878A (en) 2000-10-23 2002-05-10 Hitachi Ltd Nonvolatile memory circuit and semiconductor integrated circuit
IT1319614B1 (en) 2000-12-22 2003-10-20 St Microelectronics Srl METHOD TO PROGRAM A PLURALITY OF PARALLEL CONNECTED MEMORY CELLS AND RELATED PROGRAMMING CIRCUIT
JP4084922B2 (en) 2000-12-22 2008-04-30 株式会社ルネサステクノロジ Non-volatile memory device writing method
JP3802763B2 (en) 2001-01-29 2006-07-26 シャープ株式会社 Nonvolatile semiconductor memory device and erasing method thereof
JP2002230985A (en) 2001-02-06 2002-08-16 Sharp Corp Nonvolatile semiconductor memory device and control method therefor
FR2821974B1 (en) 2001-03-12 2003-05-23 St Microelectronics Sa CIRCUIT AND ASSOCIATED METHOD FOR ERASING OR PROGRAMMING A MEMORY CELL
JP4715024B2 (en) 2001-05-08 2011-07-06 セイコーエプソン株式会社 Program method for nonvolatile semiconductor memory device
US6747893B2 (en) 2002-03-14 2004-06-08 Intel Corporation Storing data in non-volatile memory devices
US6661724B1 (en) 2002-06-13 2003-12-09 Cypress Semiconductor Corporation Method and system for programming a memory device
JP2004055012A (en) * 2002-07-18 2004-02-19 Renesas Technology Corp Non-volatile semiconductor memory
US6754103B2 (en) 2002-11-04 2004-06-22 Silicon Storage Technology, Inc. Method and apparatus for programming and testing a non-volatile memory cell for storing multibit states
KR100645047B1 (en) * 2004-10-12 2006-11-10 삼성전자주식회사 Nonvolatile Memory Device And Its High Speed Programming Method

Also Published As

Publication number Publication date
TW200713285A (en) 2007-04-01
US7233528B2 (en) 2007-06-19
US20070019471A1 (en) 2007-01-25
WO2007018913A3 (en) 2007-07-05

Similar Documents

Publication Publication Date Title
CN101496109B (en) Non-volatile memory with multi-block erase mode and method thereof
US7697359B2 (en) Flash memory device and refresh method thereof
US9177653B2 (en) Method and system for programming non-volatile memory cells based on programming of proximate memory cells
US7586790B2 (en) Flash memory device and refresh method
US20040128594A1 (en) High bandwidth datapath load and test of multi-level memory cells
US20080189478A1 (en) Nonvolatile semiconductor memory device with advanced multi-page program operation
US20200395087A1 (en) Soft erase and programming of nonvolatile memory
US9824775B2 (en) Feedback validation of arbitrary non-volatile memory data
US20020133312A1 (en) Setting data retention thresholds in charge-based memory
US7755956B2 (en) Non-volatile semiconductor memory and method for replacing defective blocks thereof
US20120020166A1 (en) Nonvolatile semiconductor storage device
US10803958B2 (en) Non-volatile memory device and a method of operating the same
US6687648B1 (en) Method of predicting reliabilty of oxide-nitride-oxide based non-volatile memory
US7233528B2 (en) Reduction of programming time in electrically programmable devices
US11842775B2 (en) Systems and methods for dynamically sensing a memory block
US8045390B2 (en) Memory system with dynamic reference cell and method of operating the same
US20060067131A1 (en) Non-volatile memory device and program method thereof
US7292473B2 (en) Method and apparatus for programming/erasing a non-volatile memory
EP3428921A1 (en) Memory sector retirement in a non-volatile memory
JP2011070712A (en) Nand flash memory
US20140281678A1 (en) Memory controller and memory system
US6385093B1 (en) I/O partitioning system and methodology to reduce band-to-band tunneling current during erase
KR20130138019A (en) Nonvolatile memory device and method for controlling the same
US20120051142A1 (en) Soft Program Method and Computer Redable Medium Thereof
US6208558B1 (en) Acceleration circuit for fast programming and fast chip erase of non-volatile memory

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application
DPE1 Request for preliminary examination filed after expiration of 19th month from priority date (pct application filed from 20040101)
NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 06774634

Country of ref document: EP

Kind code of ref document: A2

DPE1 Request for preliminary examination filed after expiration of 19th month from priority date (pct application filed from 20040101)