The maximum allowable number of voltage programming pulses to program memory elements of a non-volatile memory device is adjusted to account for changes in the memory elements which occur over time. programming pulses are applied until the threshold voltage of one or more memory elements reaches a certain verify level, after which a defined maximum number of additional pulses may be applied to other memory elements to allow them to also reach associated target threshold voltage levels. The technique enforces a maximum allowable number of programming pulses that can change over time as the memory is cycled.
|
1. A method for programming non-volatile storage, comprising:
programming at least a first non-volatile storage element to reach a first verify level using a series of voltage pulses;
detecting when the at least a first non-volatile storage element has reached the first verify level; and
enforcing, responsive to the detecting, a maximum allowable number of additional voltage pulses to be used in programming at least a second non-volatile storage element to reach a second verify level.
21. A method for programming non-volatile storage, comprising:
detecting when at least a first non-volatile storage element in a set of non-volatile storage elements has reached a first verify level after voltage pulses have been applied thereto; and
enforcing, responsive to the detecting, a maximum allowable number of voltage pulses to be applied to at least a second non-volatile storage element in the set of non-volatile storage elements to cause the at least a second non-volatile storage element to reach a second verify level.
17. A method for programming non-volatile storage, comprising:
performing one or more initial program cycles for a set of non-volatile storage elements until a first subset of said non-volatile storage elements has reached a first verify level; and
performing one or more additional program cycles for said set of non-volatile storage elements subsequent to said first subset of said non-volatile storage elements reaching said first verify level, said one or more additional program cycles not to exceed a predefined maximum number of additional program cycles.
2. The method of
the maximum allowable number of additional voltage pulses is enforced based on a sum of: (a) a number of the voltage pulses needed for the at least a first non-volatile storage element to reach the first verify level, and (b) the maximum allowable number of additional voltage pulses.
3. The method of
the maximum allowable number of additional voltage pulses is variable according to a number of the voltage pulses needed for the at least a first non-volatile storage element to reach the verify level.
4. The method of
the maximum allowable number of additional voltage pulses is fixed.
5. The method of
the maximum allowable number of additional voltage pulses is variable.
6. The method of
tracking a usage of the at least a first non-volatile storage element over time;
wherein the maximum allowable number of additional voltage pulses is variable according to the usage.
7. The method of
the tracking of the usage comprises maintaining a count of programming cycles.
8. The method of
determining a number of the voltage pulses needed for each of the plurality of non-volatile storage elements to reach the first verify level; and
enforcing the maximum allowable number of additional voltage pulses to be used in programming the at least a second non-volatile storage element to reach the second verify level based on the number of the voltage pulses needed for each of the plurality of non-volatile storage elements to reach the first verify level.
9. The method of
the maximum allowable number of additional voltage pulses for use in programming the at least a second non-volatile storage element to reach the second verify level is enforced based on a statistical metric derived from the number of the voltage pulses needed for each of the plurality of non-volatile storage elements to reach the first verify level.
10. The method of
the at least a first non-volatile storage element and the at least a second non-volatile storage element are programmed in a common programming cycle.
11. The method of
the at least a second non-volatile storage element is programmed in a programming cycle which is after a programming cycle in which the at least a first non-volatile storage element is programmed.
12. The method of
the maximum allowable number of additional voltage pulses is based on a threshold voltage distribution of at least the first non-volatile storage element divided by a step size of the voltage pulses.
13. The method of
the at least a first non-volatile storage element and the at least a second non-volatile storage element are provided in at least one of a common block and a common segment.
14. The method of
the at least a first non-volatile storage element and the at least a second non-volatile storage element are programmed with data from a common page.
15. The method of
at least one of the first and second verify levels is an intermediate voltage level which is before a final voltage level.
16. The method of
at least one of the first and second verify levels is a final voltage level.
19. The method of
the at least a first non-volatile storage element and the at least a second non-volatile storage element are programmed in a common programming cycle.
20. The method of
the at least a second non-volatile storage element is programmed in a programming cycle which is after a programming cycle in which the at least a first non-volatile storage element is programmed.
22. The method of
the maximum allowable number of additional voltage pulses is fixed.
23. The method of
the maximum allowable number of additional voltage pulses is variable.
24. The method of
tracking a usage of the at least a first non-volatile storage element over time;
wherein the maximum allowable number of additional voltage pulses is variable according to the usage.
25. The method of
the at least a first non-volatile storage element and the at least a second non-volatile storage element are programmed in a common programming cycle.
26. The method of
the at least a second non-volatile storage element is programmed in a programming cycle which is after a programming cycle in which the at least a first non-volatile storage element is programmed.
|
This application is related to co-pending, commonly assigned U.S. patent application Ser. No. 11/194,827, titled “System For Programming Non-Volatile Memory With Self-Adjusting Maximum Program Loop”, by Jun Wan and Jeffrey W. Lutze, filed on the same date herewith, incorporated herein by reference in its entirety.
1. Field of the Invention
The present invention relates to programming non-volatile memory.
2. Description of the Related Art
Semiconductor memory has become increasingly popular for use in various electronic devices. For example, non-volatile semiconductor memory is used in cellular telephones, digital cameras, personal digital assistants, mobile computing devices, non-mobile computing devices and other devices. Electrically Erasable Programmable Read Only Memory (EEPROM) and flash memory are among the most popular non-volatile semiconductor memories. With flash memory, also a type of EEPROM, the contents of the whole memory array, or of a portion of the memory, can be erased in one step, in contrast to the traditional, full-featured EEPROM.
Both the traditional EEPROM and the flash memory utilize a floating gate that is positioned above and insulated from a channel region in a semiconductor substrate. The floating gate is positioned between the source and drain regions. A control gate is provided over and insulated from the floating gate. The threshold voltage of the transistor thus formed is controlled by the amount of charge that is retained on the floating gate. That is, the minimum amount of voltage that must be applied to the control gate before the transistor is turned on to permit conduction between its source and drain is controlled by the level of charge on the floating gate.
When programming an EEPROM or flash memory device, such as a NAND flash memory device, typically a program voltage is applied to the control gate and the bit line is grounded, causing electrons from the channel of a cell or memory element, e.g., storage element, to be injected into the floating gate. When electrons accumulate in the floating gate, the floating gate becomes negatively charged and the threshold voltage of the memory element is raised so that the memory element is in a programmed state. More information about such programming can be found in U.S. Pat. No. 6,859,397, titled “Source Side Self Boosting Technique For Non-Volatile Memory,” and in U.S. Patent Application Publication 2005/0024939, titled “Detecting Over Programmed Memory,” filed on Jul. 29, 2003; both of which are incorporated herein by reference in their entirety.
Some EEPROM and flash memory devices have a floating gate that is used to store two ranges of charges and, therefore, the memory element can be programmed/erased between two states, e.g., an erased state and a programmed state. Such a flash memory device is sometimes referred to as a binary flash memory device because each memory element can store one bit of data.
A multi-state (also called multi-level) flash memory device is implemented by identifying multiple distinct allowed/valid programmed threshold voltage ranges. Each distinct threshold voltage range corresponds to a predetermined value for the set of data bits encoded in the memory device. For example, each memory element can store two bits of data when the element can be placed in one of four discrete charge bands corresponding to four distinct threshold voltage ranges.
Typically, the program voltage applied to the control gate during a program operation is applied as a series of pulses. In one possible approach, the magnitude of the pulses is increased with each successive pulse by a predetermined step size, e.g., 0.2–0.4 V.
If an element does not reach the desired program level after a given number of pulses, which is conventionally fixed, an error condition is declared. The choice of the magnitude of program voltage Vpgm, including an initial value, the voltage step size, if applicable, and the maximum number of pulses to apply before declaring an error condition, involves a compromise among various factors. In particular, if the initial value or the step size is too large, some memory elements may be over-programmed, resulting in an inaccurate threshold voltage, while longer programming times will result if the initial value or the step size is too small. Typically, users of non-volatile memory desire that the memory program quickly. Furthermore, the number of pulses needed to program different memory elements to a desired state can differ. Slower memory elements will need more pulses while faster memory elements will need fewer pulses. In order to have a sufficient margin or cushion so that the die-sort yield is acceptable, a relatively large number of Vpgm pulses is typically allowed. For example, in 90 nm devices, although most upper pages in multi-state memory element devices can be programmed within eighteen pulses, the maximum allowed number of pulses may be set at, e.g., twenty-four, to provide a margin of six pulses. However, if one normal page of memory elements has several slow elements or has one bad column, the entire page will keep programming until the maximum number of pulses has occurred.
As a result, some elements along the same word line as the slow element or the bad column could be disturbed. Moreover, this scenario is more severe for cycled devices, which have undergone many programming cycles, than for fresh devices, which have not been significantly used, because the cycled devices are faster than fresh devices due to charge trapping. In particular, as a non-volatile memory device undergoes many programming cycles, charge becomes trapped in the insulator or dielectric between the floating gate and the channel region. This trapping of charge shifts the threshold voltage to a higher level, which allows the memory element to program quicker while also making it harder to erase the charge in the element. If the magnitude of the program signal is set too high, even though it does not result in over programming of a fresh device, as that device becomes more heavily used, that device may experience over programming. Thus, new devices will have their program voltage set low enough to avoid over programming when the device is older. This lowering of the magnitude of the program voltage will reduce the speed at which the fresh device programs data.
Consequently, an excessive number of program pulses may be applied to the normal elements in the cycled device. The problem is exacerbated by the fact that cycled devices have more bad columns than fresh devices. While it is possible to lower the number of Vpgm pulses used before declaring an error condition, as mentioned, this reduces yield. For example, if the maximum number of program pulses is reduced from twenty-four to twenty-two, the die-sort yield is reduced by about 5%, which is generally considered to be unacceptable.
The present invention addresses the above and other issues by providing a method for adjusting the number of program voltage pulses that are applied to the elements in a non-volatile memory without increasing the incidence of errored elements, that is, elements that do not reach the desired voltage level within the maximum allowable number of pulses. To achieve this result, the number of allowed voltage pulses is adjusted so that it is changed for cycled memory devices relative to fresh memory devices.
In one embodiment, a method for programming non-volatile storage includes programming at least a first non-volatile storage element to reach a first verify level using a series of voltage pulses, and detecting when the at least a first non-volatile storage element has reached the first verify level. The method further includes enforcing, responsive to the detecting, a maximum allowable number of additional voltage pulses to be used in programming at least a second non-volatile storage element to reach a second verify level. The first and second verify levels can be the same or different, and can further be intermediate or final verify levels.
In another embodiment, a method for programming non-volatile storage includes performing one or more initial program cycles for a set of non-volatile storage elements until a first subset of the non-volatile storage elements has reached a first verify level, and performing one or more additional program cycles for the set of non-volatile storage elements subsequent to the first subset of the non-volatile storage elements reaching the first verify level, the one or more additional program cycles not to exceed a predefined maximum number of additional program cycles.
In another embodiment, a method for programming non-volatile storage includes detecting when at least a first non-volatile storage element in a set of non-volatile storage elements has reached a first verify level after voltage pulses have been applied thereto, and enforcing, responsive to the detecting, a maximum allowable number of voltage pulses to be applied to at least a second non-volatile storage element to cause the at least a second non-volatile storage element to reach a second verify level.
One example of a non-volatile memory system suitable for implementing the present invention uses the NAND flash memory structure, which includes arranging multiple transistors in series between two select gates. The transistors in series and the select gates are referred to as a NAND string.
Note that although
Each memory element can store data represented in analog or digital form. When storing one bit of digital data, the range of possible threshold voltages of the memory element is divided into two ranges, which are assigned logical data “1” and “0.” In one example of a NAND-type flash memory, the voltage threshold is negative after the memory element is erased, in what may be defined as the logic “1” state. The threshold voltage is positive after a program operation, in what may be defined as the logic “0” state. When the threshold voltage is negative and a read is attempted by applying 0 V to the control gate, the memory element will turn on to indicate logic one is being stored. When the threshold voltage is positive and a read operation is attempted by applying 0 V to the control gate, the memory element will not turn on, which indicates that logic zero is stored.
A memory element can also store multiple states, thereby storing multiple bits of digital data. In the case of storing multiple states of data, the threshold voltage window is divided into the number of states. For example, if four states are used, there will be four threshold voltage ranges assigned to the data values “11” “10,” “01,” and “00.” In one example of a NAND-type memory, the threshold voltage after an erase operation is negative and defined as “11.” Positive threshold voltages are used for the states of “10,” “01,” and “00.” In some implementations, the data values (e.g., logical states) are assigned to the threshold ranges using a Gray code assignment so that if the threshold voltage of a floating gate erroneously shifts to its neighboring physical state, only one bit will be affected. The specific relationship between the data programmed into the memory element and the threshold voltage ranges of the element depends upon the data encoding scheme adopted for the memory elements. For example, U.S. Pat. No. 6,222,762 and U.S. patent application Ser. No. 10/461,244, “Tracking Cells For A Memory System,” filed on Jun. 13, 2003, and published as U.S. Patent Application Publication 2004/0255090 on Dec. 16, 2004, both of which are incorporated herein by reference in their entirety, describe various data encoding schemes for multi-state flash memory elements.
Relevant examples of NAND-type flash memories and their operation are provided in the following U.S. Patents, each of which is incorporated herein by reference in its entirety: U.S. Pat. Nos. 5,386,422, 5,570,315, 5,774,397, 6,046,935, 6,456,528 and 6,522,580. Other types of non-volatile memory in addition to NAND flash memory can also be used with the present invention.
Another type of memory element useful in flash EEPROM systems is the charge trapping element, which utilizes a non-conductive dielectric material in place of a conductive floating gate to store charge in a non-volatile manner. Such an element is described in an article by Chan et al., “A True Single-Transistor Oxide-Nitride-Oxide EEPROM Device,” IEEE Electron Device Letters, Vol. EDL-8, No. 3, March 1987, pp. 93–95. A triple layer dielectric formed of silicon oxide, silicon nitride and silicon oxide (“ONO”) is sandwiched between a conductive control gate and a surface of a semi-conductive substrate above the memory element channel. The element is programmed by injecting electrons from the element channel into the nitride, where they are trapped and stored in a limited region. This stored charge then changes the threshold voltage of a portion of the channel of the element in a manner that is detectable. The element is erased by injecting hot holes into the nitride. See also Nozaki et al., “A 1-Mb EEPROM with MONOS Memory Cell for Semiconductor Disk Application,” IEEE Journal of Solid-State Circuits, Vol. 26, No. 4, April 1991, pp. 497–501, which describes a similar element in a split-gate configuration where a doped polysilicon gate extends over a portion of the memory element channel to form a separate select transistor. The foregoing two articles are incorporated herein by reference in their entirety. The programming techniques mentioned in section 1.2 of “Nonvolatile Semiconductor Memory Technology,” edited by William D. Brown and Joe E. Brewer, EEE Press, 1998, incorporated herein by reference, are also described in that section to be applicable to dielectric charge-trapping devices. The memory elements described in this paragraph can also be used with the present invention. Thus, the technology described herein also applies to coupling between dielectric regions of different memory elements.
Another approach to storing two bits in each element has been described by Eitan et al., “NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell,” IEEE Electron Device Letters, vol. 21, no. 11, November 2000, pp. 543–545, which describes an ONO dielectric layer that extends across the channel between source and drain diffusions. The charge for one data bit is localized in the dielectric layer adjacent to the drain, and the charge for the other data bit localized in the dielectric layer adjacent to the source. Multi-state data storage is obtained by separately reading binary states of the spatially separated charge storage regions within the dielectric. The memory elements described in this paragraph can also be used with the present invention.
The c-source control circuit 210 controls a common source line (labeled as “C-source” in
The data stored in the memory elements are read out by the column control circuit 204 and output to external I/O lines via data input/output buffer 212. Program data to be stored in the memory elements is input to the data input/output buffer 212 via the external I/O lines, and transferred to the column control circuit 204. The external I/O lines are connected to a controller 218.
Command data for controlling the flash memory device is input to the controller 218. The command data informs the flash memory of what operation is requested. The input command is transferred to the state machine 216, which controls the column control circuit 204, the row control circuit 206, the c-source control 210, the p-well control circuit 208 and the data input/output buffer 212. The state machine 216 can also output status data of the flash memory such as READY/BUSY or PASS/FAIL. In some designs, state machine 216 is responsible for managing the programming process, including the processes depicted in the flow charts described below.
The controller 218 is connected or connectable with a host system such as a personal computer, a digital camera, personal digital assistant, etc. The controller 218 communicates with the host in order to receive commands and data from the host, and provide data and status information to the host. The controller 218 converts commands from the host into command signals that can be interpreted and executed by command circuits 214, which are in communication with the state machine 216. Controller 218 typically contains buffer memory for the user data being written to, or read from, the memory array. In some designs, the programming process can be managed by the controller.
One example memory system comprises one integrated circuit that includes controller 218, and one or more integrated circuit chips that each contains a memory array and associated control, input/output and state machine circuits. The trend is to integrate the memory arrays and controller circuits of a system together on one or more integrated circuit chips. The memory system may be embedded as part of the host system, or may be included in a memory card (or other package) that is removably inserted into the host systems. Such a removable card may include the entire memory system (e.g., including the controller) or just the memory array(s) and associated peripheral circuits (with the controller being embedded in the host). Thus, the controller (or control capability) can be embedded in the host or included within a removable memory system.
In some implementations, some of the components of
During one configuration of read and programming operations, 4,256 memory elements are simultaneously selected. The memory elements selected have the same word line and the same kind of bit line (e.g., even bit lines or odd bit lines). Therefore, 532 bytes of data, which form a logical page, can be read or programmed simultaneously, and one block of the memory can store at least eight logical pages (four word lines, each with odd and even pages). For multi-state memory elements, when each memory element stores two bits of data, where each of these two bits are stored in a different page, one block stores sixteen logical pages. Other sized blocks and pages can also be used with the present invention. Additionally, architectures other than those of
Memory elements can be erased by raising the p-well to an erase voltage (e.g., 20 V) and grounding the word lines of a selected block. The source and bit lines are floating. Erasing can be performed on the entire memory array, separate blocks, or another unit of the memory elements which is a portion of the memory device. Electrons are transferred from the floating gate to the p-well region so that the threshold voltage becomes negative, in one possible approach.
In the read and verify operations, the select gates (SGD and SGS) and the unselected word lines (e.g., WL0, WL2 and WL3, when WL1 is the selected word line) are raised to a read pass voltage (e.g., 4.5 V) to make the transistors operate as pass gates. The selected word line WL1 is connected to a voltage, a level of which is specified for each read and verify operation in order to determine whether a threshold voltage of the concerned memory element is above or below such level. For example, in a read operation for a two-level memory element, the selected word line WL1 may be grounded, so that it is detected whether the threshold voltage is higher than 0 V. In a verify operation for a two level memory element, the selected word line WL1 is connected to 0.8 V, for example, so that it is verified whether or not the threshold voltage has reached at least 0.8 V. The source and p-well are at 0 V. The selected bit lines, assumed to be the even bit lines (BLe), are pre-charged to a level of, for example, 0.7 V. If the threshold voltage is higher than the read or verify level on the word line, the potential level of the bit line (BLe) associated with the element of interest maintains the high level because of the non-conductive memory element. On the other hand, if the threshold voltage is lower than the read or verify level, the potential level of the concerned bit line (BLe) decreases to a low level, for example, less than 0.5 V, because the conductive memory element discharges the bit line. The state of the memory element can thereby be detected by a voltage comparator sense amplifier that is connected to the bit line.
The erase, read and verify operations described above are performed according to techniques known in the art. Thus, many of the details explained can be varied by one skilled in the art. Other erase, read and verify techniques known in the art can also be used.
As described above, each block can be divided into a number of pages. In one approach, a page is a unit of programming. In some implementations, the individual pages may be divided into segments and the segments may contain the fewest number of elements that are written at one time as a basic programming operation. One or more pages of data are typically stored in one row of memory elements. A page can store one or more sectors. A sector includes user data and overhead data, such as an Error Correction Code (ECC) that has been calculated from the user data of the sector. A portion of the controller calculates the ECC when data is being programmed into the array, and also checks the data using the ECC when the data is read from the array. Alternatively, the ECCs and/or other overhead data are stored in different pages, or even different blocks, than the user data to which they pertain. In other designs, other parts of the memory device, such as the state machine, can calculate the ECC.
A sector of user data is typically 512 bytes, corresponding to the size of a sector in magnetic disk drives. Overhead data is typically an additional 16–20 bytes. A large number of pages form a block that includes anywhere from 8 pages, for example, up to 32, 64 or more pages.
Each distinct threshold voltage range of
In one approach, known as full sequence programming, memory elements can be programmed from the erase state E directly to any of the programmed states A, B or C (as depicted by the curved arrows). For example, a population of memory elements to be programmed may first be erased so that all memory elements in the population are in the erased state E. While some memory elements are being programmed from state E to state A, other memory elements are being programmed from state E to state B and/or from state E to state C.
In a second programming pass, the element's threshold voltage level is set according to the bit being programmed into the upper logical page. If the upper logical page bit is to store a logic “1,” then no programming occurs since the element is in one of the states E or A, depending upon the programming of the lower page bit, both of which carry an upper page bit of “1.” If the upper page bit is to be a logic “0,” then the threshold voltage is shifted. If the first pass resulted in the element remaining in the erased state E, then in the second phase the element is programmed so that the threshold voltage is increased to be within state C, as depicted by arrow 234. If the element had been programmed into state A as a result of the first programming pass, then the memory element is further programmed in the second pass so that the threshold voltage is increased to be within state B, as depicted by arrow 232. The result of the second pass is to program the element into the state designated to store a logic “0” for the upper page without changing the data for the lower page.
In one approach, a system can be set up to perform full sequence writing if enough data is written to fill up an entire page. If not enough data is written for a full page, then the programming process can program the lower page with the data received. When subsequent data is received, the system will then program the upper page. In yet another approach, the system can start writing in the mode that programs the lower page and convert to full sequence programming mode if enough data is subsequently received to fill up all, or most of, a word line's memory elements. More details of such an approach are disclosed in U.S. patent application titled “Pipelined Programming of Non-Volatile Memories Using Early Data,” Ser. No. 11/013,125, filed on Dec. 14, 2004 by inventors Sergy Anatolievich Gorobets and Yan Li, incorporated herein by reference in its entirety.
In one design, after a memory element is programmed from state E to state B′, its neighbor memory element on an adjacent word line will then be programmed with respect to its lower page. After programming the neighbor memory element, the floating gate-to-floating gate coupling effect will raise the apparent threshold voltage of memory element under consideration, which is in state B′. This will have the effect of widening the threshold voltage distribution for state B′ to that depicted as threshold voltage distribution 250 of
To avoid applying an excessive number of program pulses to the normal cells or elements in a cycled device without increasing the risk of reducing die-sort yield, it is proposed to adaptively adjust the maximum allowable number of programming pulses which may be applied to a memory element before the memory element is declared to be errored. In this way, the maximum allowable number of programming pulses can be gradually adjusted over time as the device is cycled.
Optionally, the system may access a flag that indicates the magnitude of an initial program pulse. Referring to
If none of the memory elements has been verified, Vpgm is increased at step 418 and an additional pass or programming loop begins at step 410 as the next program pulse is applied, as long as the fixed pulse limit has not been exceeded. The process described is repeated until at least one of the memory elements has been verified. Note that the magnitude of Vpgm can be incremented by a fixed or varying step size (e.g., 0.3 V), or no incrementing is needed when pulses of equal magnitude are used. Once the first memory element or elements has been verified to meet a specified threshold voltage level at step 416, a count of additional voltage pulses begins at step 424. The specified number of additional pulses “A” can be applied to allow the remaining memory elements to reach the verify level, thereby adaptively setting the total number of pulses applied to the elements. In one embodiment, “A” can be equal to the natural threshold voltage distribution of a page or other group of non-volatile storage elements divided by a step size of the stepped voltage pulses. In other embodiments, the number of additional pulses can be determined by device characterization or other means.
Moreover, it is not necessary to count the number of pulses needed for the first memory element(s) to reach the verify level since the number of additional pulses applied can be counted once the verification of the first memory element(s) is detected. For example, the first memory element may reach the verify level after eight pulses, and the number of additional pulses allowed “A” may be six pulses. The adaptive pulse limit (APL), which is the total number of pulses which may be applied, is therefore limited to fourteen in this example, which is below the FPL of twenty four pulses. In this case, the counter need only count up to six to enforce the APL. This approach provides a streamlined design which minimizes processing overhead. Thus, the APL may be enforced by starting a separate counter after the first memory element has been verified, to determine when the maximum allowable number of additional pulses (“A”) have been applied to the remaining memory elements to allow them to also reach the desired verify level. In another approach, the pulse count (PC1) when the first memory element is verified can be recorded and summed with the maximum allowable number of additional pulses (“A”) to obtain the adaptive pulse limit (APL) by the formula APL=PC1+A. A single counter which tracks the total number of pulses can then be used to determine when the APL is reached. See
At step 426, a check is made to determine whether the adaptive pulse limit (APL) has been exceeded. If the limit has been exceeded, all six additional pulses have already been applied, in the present example, prior to all elements being verified. In this case, the programming process has failed, and a fail status is set at step 420. Additionally, an error is declared for the specific failed memory elements at step 422. If the adaptive limit has not been exceeded at step 426, a check is made at step 428 as to whether all the memory elements have been verified to have reached their target threshold voltage level. If all elements have been verified, then the programming process has completed successfully, as indicated by “status=pass” in step 430. If not all elements have been verified at step 428, Vpgm is increased and an additional loop begins at step 410. Thus, the process described is repeated until the APL is exceeded, all memory elements are verified, or the FPL is exceeded, whichever comes first. Note that the memory elements that have reached their target threshold voltage are locked out of programming for the remainder of the current programming cycle. The entire process of
The process of
Moreover, it is possible to modify step 416 by determining when a number of memory elements, such as a defined portion of all memory elements, e.g., 10%, have been verified. In this case, a statistical metric such as an average or mean of the pulse count values can be obtained as the value PC1 which is summed with the limit on the additional pulses “A” to obtain the APL. Such a value is representative of a plurality of the fastest programming elements in the memory device rather than being representative of the single fastest element. Some additional complexity is added in that appropriate control circuitry is needed to record and process the multiple pulse count values. The APL can then be enforced against the remaining elements in the same programming cycle, and/or in one or more subsequent programming cycles. It is also possible to determine the pulse count for every verified element, and derive a representative PC, in which case the resulting APL can be enforced in one or more subsequent programming cycles. Additionally, a moving average or mean of PC1 taken over a number of programming cycles can be used to derive an APL that can be enforced in one or more subsequent programming cycles. The metric used may further include weighting, e.g., so that more recent values of PC1 are accorded a higher weight.
Moreover, rules may be imposed regarding the maximum change in APL each time it is calculated. For instance, a rule may be imposed so that APL does not change by more than one pulse count each time it is calculated. Smoothing out variations in APL can avoid abrupt changes that affect performance. Additionally, a rule may be imposed so that APL is only adjusted in one direction, such as downward, to avoid anomalous results.
Furthermore, while
Regarding “A”, the maximum additional number of pulses used to accommodate different programming performance characteristics of the different memory elements, this value should be set large enough so that the number of elements which remain unverified after “A” additional pulses are applied is not excessive, yet the value should be small enough so that the overall programming time and total number of pulses used in the memory is not excessive. In one approach, a value of about six pulses can be used. Moreover, “A” can be a fixed or variable value. For example, “A” can vary as a function of a parameter such as the number of pulses needed for one or more memory elements to program, PC1. In this case, a larger value of “A” is used when PC1 is larger, and a smaller value is used when PC1 is smaller. A table may be implemented where different ranges of PC1 are correlated with different values of “A”. For example, for PC1=1–10, “A”=5; for PC1=11–15, “A”=6; for PC1=16–20, “A”=7 and for PC1=21–24, “A”=8. Or, “A” may be calculated as a portion of PC1, such as a fraction or percentage, e.g., 50%, and rounded to the nearest whole number. Rounding up to the next highest whole number may be used. For example, for PC1=15, “A”=8.
In another approach, “A” can be set based on a usage of the memory elements, such as determined by the number (N) of programming cycles which the memory has experienced. For example, for N=1–1,000, “A”=8; for N=1,001–5,000, “A”=7 and for N=5,001–10,000, “A”=6. “A” can also be set based on both PC1 and the number of programming cycles. In any case, “A” decreases as PC1 and/or the number of programming cycles decreases over time. Note that separate values of “A” may be maintained for different portions of the memory, such as the memory elements that store data from upper and lower pages, in correspondence with the separate APL values which may be maintained, as discussed above. The values FPL, APL and “A” can also be set based on the type of programming used, e.g., page mode programming versus full sequence programming.
The process of
With this approach, a narrower programmed threshold voltage distribution can be achieved relative to the case where a single verify level is used because the shift per pulse of the threshold voltage is reduced once the threshold voltage is close to the target value (e.g., when the threshold voltage is above Vver1 and below Vver2). However, the intermediate bit line bias slows down the programming of the memory cells so that overall programming time can increase. Multiple additional pulses (e.g., typically, two to three pulses) may be needed to finish the programming process.
The foregoing detailed description of the invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. The described embodiments were chosen in order to best explain the principles of the invention and its practical application, to thereby enable others skilled in the art to best utilize the invention in various embodiments and with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the claims appended hereto.
Patent | Priority | Assignee | Title |
8924661, | Jan 18 2009 | Apple Inc | Memory system including a controller and processors associated with memory devices |
Patent | Priority | Assignee | Title |
5386422, | Mar 12 1991 | Kabushiki Kaisha Toshiba | Electrically erasable and programmable non-volatile memory system with write-verify controller using two reference levels |
5570315, | Sep 21 1993 | Kabushiki Kaisha Toshiba | Multi-state EEPROM having write-verify control circuit |
5774397, | Jun 29 1993 | Kabushiki Kaisha Toshiba | Non-volatile semiconductor memory device and method of programming a non-volatile memory cell to a predetermined state |
5801989, | Dec 11 1995 | SAMSUNG ELECTRONICS CO , LTD | Method and apparatus for optimizing erase and program times for a non-volatile memory device |
6046935, | Mar 18 1996 | Kabushiki Kaisha Toshiba | Semiconductor device and memory system |
6222762, | Jan 14 1992 | SanDisk Technologies LLC | Multi-state memory |
6456528, | Sep 17 2001 | SanDisk Technologies LLC | Selective operation of a multi-state non-volatile memory system in a binary mode |
6522580, | Jun 27 2001 | TOSHIBA MEMORY CORPORATION | Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states |
6859397, | Mar 05 2003 | SanDisk Technologies LLC | Source side self boosting technique for non-volatile memory |
6888758, | Jan 21 2004 | SanDisk Technologies LLC | Programming non-volatile memory |
6914823, | Jul 29 2003 | SanDisk Technologies LLC | Detecting over programmed memory after further programming |
6917542, | Jul 29 2003 | SanDisk Technologies LLC | Detecting over programmed memory |
7073103, | Dec 05 2002 | WODEN TECHNOLOGIES INC | Smart verify for multi-state memories |
7092290, | Nov 16 2004 | SanDisk Technologies LLC | High speed programming system with reduced over programming |
20030112663, | |||
20040109362, | |||
20040255090, | |||
20050024939, | |||
20050083735, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Aug 01 2005 | SanDisk Corporation | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Date | Maintenance Schedule |
Jan 09 2010 | 4 years fee payment window open |
Jul 09 2010 | 6 months grace period start (w surcharge) |
Jan 09 2011 | patent expiry (for year 4) |
Jan 09 2013 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jan 09 2014 | 8 years fee payment window open |
Jul 09 2014 | 6 months grace period start (w surcharge) |
Jan 09 2015 | patent expiry (for year 8) |
Jan 09 2017 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jan 09 2018 | 12 years fee payment window open |
Jul 09 2018 | 6 months grace period start (w surcharge) |
Jan 09 2019 | patent expiry (for year 12) |
Jan 09 2021 | 2 years to revive unintentionally abandoned end. (for year 12) |