A process is performed periodically or in response to an error in order to dynamically and adaptively optimize read compare levels based on memory cell threshold voltage distribution. One embodiment of the process includes determining threshold voltage distribution data for a population of non-volatile storage elements, smoothing the threshold voltage distribution data using a weighting function to create an interim set of data, determining a derivative of the interim set of data, and identifying and storing negative to positive zero crossings of the derivative as read compare points.
|
17. A non-volatile storage apparatus, comprising:
an array of non-volatile storage elements; and
a managing circuit in communication with said array of non-volatile storage elements, said managing circuit operates said array of non-volatile storage elements including:
determining threshold voltage distribution data for a population of non-volatile storage elements;
smoothing said threshold voltage distribution data using a weighted function to create an interim set of data;
determining a derivative of the interim set of data;
identifying new read compare values based on negative to positive zero crossings of the derivative; and
performing one or more read operations using the new read compare values.
1. A memory system, comprising:
a plurality of non-volatile storage elements; and
one or more managing circuits in communication with said plurality of non-volatile storage elements, said managing circuits operate said plurality of non-volatile storage elements including:
accessing threshold voltage distribution data for a population of non-volatile storage elements;
operating on the threshold voltage distribution data to create transformed threshold voltage distribution data;
identifying read compare points based on the transformed threshold voltage distribution data;
replacing old read compare points with the identified read compare points; and
performing one or more read operations using the identified read compare points.
19. A non-volatile storage apparatus, comprising:
an array of non-volatile storage elements; and
a managing circuit in communication with said array of non-volatile storage elements, said managing circuit operates said array of non-volatile storage elements including:
determining threshold voltage distribution data for a population of flash memory devices;
convolving said threshold voltage distribution data with a gaussian function to create an interim set of data;
determining a derivative of the interim set of data;
identifying negative to positive zero crossings of the derivative;
storing new read compare values based on the identified negative to positive zero crossings of the derivative; and
performing one or more read operations using the new read compare values.
2. A memory system according to
3. A memory system according to
calculating derivative information for the threshold voltage distribution data, the read compare points are identified from the derivative information.
4. A memory system according to
smoothing the threshold voltage distribution data prior to calculating the derivative information.
5. A memory system according to
convolving the threshold voltage distribution data with a truncated gaussian function to create an interim set of data, the derivative information is calculated from the interim set of data.
6. A memory system according to
smoothing the threshold voltage distribution data using a weighted function to create an interim set of data, the derivative information is calculated from the interim set of data.
7. A memory system according to
the weighted function is a truncated gaussian function multiplied by a sloped line.
8. A memory system according to
9. A memory system according to
identifying and storing negative to positive zero crossings in the derivative information.
10. A memory system according to
convolving the threshold voltage distribution data with a gaussian function.
11. A memory system according to
12. A memory system according to
convolving the threshold voltage distribution data with a function.
13. A memory system according to
squaring the threshold voltage distribution data.
14. A memory system according to
15. A memory system according to
16. A memory system according to
searching for minima in the threshold voltage distribution data near the read compare points;
replacing old read compare points with the minima; and
performing one or more read operations using the minima.
18. A non-volatile storage apparatus according to 17, wherein:
said identifying new read compare values based on negative to positive zero crossings of the derivative includes applying one or more offsets to the negative to positive zero crossings and storing the offset negative to positive zero crossings as the new read compare values, said new read compare values are indications of voltage levels for differentiating between multiple data states for multi-state flash memory.
20. A non-volatile storage apparatus according to 19, wherein:
said storing new read compare values based on the identified negative to positive zero crossings of the derivative includes applying one or more offsets to the negative to positive zero crossings and storing the offset negative to positive zero crossings as the new read compare values.
0. 21. The memory system of claim 1, wherein:
the plurality of non-volatile storage elements comprises a three-dimensional array of storage elements.
0. 22. The memory system of claim 1, wherein:
the plurality of non-volatile storage elements comprises a three-dimensional array of memory cells.
0. 23. The memory system of claim 1, wherein:
the plurality of non-volatile storage elements are arranged in a three-dimensional memory structure.
0. 24. The non-volatile storage apparatus of claim 17, wherein:
said array of non-volatile storage elements comprises a three-dimensional array of storage elements.
0. 25. The non-volatile storage apparatus of claim 17, wherein:
said array of non-volatile storage elements comprises a three-dimensional array of memory cells.
0. 26. The non-volatile storage apparatus of claim 19, wherein:
said array of non-volatile storage elements comprises a three-dimensional array of storage elements.
0. 27. The non-volatile storage apparatus of claim 19, wherein:
said array of non-volatile storage elements comprises a three-dimensional array of memory cells.
|
This application is a divisional application of U.S. patent application Ser. No. 12/338,850, entitled “Dynamic And Adaptive Optimization Of Read Compare Levels Based On Memory Cell Threshold Voltage Distribution”, filed Dec. 18, 2008, and claims the benefit of U.S. Provisional Application No. 61/052,156 “Dynamic And Adaptive Optimization Of Read Compare Levels Based On Memory Cell Threshold Voltage Distribution,” by Nima Mokhlesi and Henry Chin, filed on May 9, 2008, incorporated herein by reference.
1. Field of the Invention
The present invention relates to technology for non-volatile storage.
2. Description of the Related Art
Semiconductor memory has become more 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. Electrical Erasable Programmable Read Only Memory (EEPROM) and flash memory are among the most popular non-volatile semiconductor memories.
Both EEPROM and flash memory utilize a floating gate that is positioned above and insulated from a channel region in a semiconductor substrate. The floating gate and channel regions are 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 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. Electrons from the channel are 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 cell is raised so that the memory cell is in a programmed state. More information about programming can be found in U.S. Pat. No. 6,859,397, titled “Source Side Self Boosting Technique for Non-Volatile Memory;” U.S. Pat. No. 6,917,542, titled “Detecting Over Programmed Memory;” and U.S. Pat. No. 6,888,758, titled “Programming Non-Volatile Memory,” all three cited patents are incorporated herein by reference in their entirety.
In many cases, the program voltage is applied to the control gate as a series of pulses (referred to as programming pulses), with the magnitude of the pulses increasing at each pulse. Between programming pulses, a set of one or more verify operations are performed to determine whether the memory cell(s) being programmed have reached their target level. If a memory cell has reached its target level, programming stops for that memory cell. If a memory cell has not reached its target level, programming will continue for that memory cell.
Some EEPROM and flash memory devices have a floating gate that is used to store two ranges of charges and, therefore, the memory cell can be programmed/erased between two states (an erased state and a programmed state). Such a flash memory device is sometimes referred to as a binary memory device.
A multi-state memory device stores multiple bits of data per memory cell by identifying multiple distinct valid threshold voltage distributions (or data states) separated by forbidden ranges. Each distinct threshold voltage distribution corresponds to a predetermined value for the set of data bits encoded in the memory device. For example, a memory cell that stores two bits of data uses four valid threshold voltage distributions. A memory cell that stores three bits of data uses eight valid threshold voltage distributions.
Although non-volatile memory has proven to be very reliable, sometimes errors can occur. Many memory systems uses Error Correction Codes (ECC) to correct errors found during a read process. Sometime, however, ECC cannot correct all errors.
A process is performed to dynamically and adaptively optimize the read compare levels based on memory cell threshold voltage distribution. The read compare levels are used to perform a read operation. By optimizing the read compare levels, the accuracy of the read operation will be improved.
One embodiment includes accessing threshold voltage distribution data for a population of non-volatile storage elements, operating on the threshold voltage distribution data to create transformed threshold voltage distribution data, and identifying read compare points based on the transformed threshold voltage distribution data.
One embodiment includes accessing threshold voltage distribution data for a population of non-volatile storage elements, smoothing the threshold voltage distribution data, determining derivative information for the smoothed data, and identifying read compare points from the derivative information.
One embodiment includes determining threshold voltage distribution data for a population of non-volatile storage elements, smoothing said threshold voltage distribution data using a weighted function to create an interim set of data, determining a derivative of the interim set of data, identifying new read compare values based on negative to positive zero crossings of the derivative, and performing one or more read operations using the new read compare values.
One embodiment includes determining threshold voltage distribution data for a population of flash memory devices, convolving said threshold voltage distribution data with a Gaussian function to create an interim set of data, determining a derivative of the interim set of data, identifying negative to positive zero crossings of the derivative, storing new read compare values based on the identified negative to positive zero crossings of the derivative, and performing one or more read operations using the new read compare values.
One example implementation includes a two or three dimensional array of non-volatile storage elements and one or more managing circuits in communication with the non-volatile storage elements. The one or more managing circuits perform any of the processes described herein, including accessing threshold voltage distribution data for a population of non-volatile storage elements, smoothing the threshold voltage distribution data, determining derivative information for the smoothed data, and identifying read compare points from the derivative information.
One example implementation includes plurality of non-volatile storage elements, means for accessing threshold voltage distribution data for the non-volatile storage elements, means for operating on the threshold voltage distribution data to create transformed threshold voltage distribution data, and means for identifying read compare points based on the transformed threshold voltage distribution.
FIG. 20 20A is a flow chart that describes an alternative embodiment of the process of
The table below provides an example set of data representing twenty one points along a Gaussian curve used for the convolution operation in step 902. As can be seen, the Gaussian serves as a weighting function.
2.73E−12
3.15E−10
2.21E−08
9.39E−07
2.42E−05
0.000379
0.003595
0.020685
0.072198
0.152842
0.196254
0.152842
0.072198
0.020685
0.003593
0.000379
2.42E−05
9.39E−07
2.21E−08
3.15E−10
2.73E−12
FIG. 21 21A is a flow chart that describes an alternative embodiment of the process of
In another embodiment, the width of the Gaussian function can be changed by changing the sigma for the Gaussian function. For example, one sigma could be used for low data states and a different sigma could be used for high data states. Alternatively, the sigma could change for each data state.
Steps 1120-1134 provide one example of a process for determining one or more offsets (step 1100) using device characterization. In step 1120, one or more memory chips 212 are cycled many times (e.g., thousand or tens of thousands of times). For example, the memory is programmed and erased as many times as the maximum number of cycles allowed by specifications of the product (e.g., four thousand or other number). In step 1122, a data pattern is written to the memory cells. In step 1124, the one or more memory chips 212 are baked in an oven accelerate charge loss/gain. In step 1126, new read compare points are determined using any of the methods described above. In step 1128, a read process is performed using the new read compare points. In step 1130, the data measured in step 1128 is compared to the actual data. In step 1132, an error is calculated. In step 1134 adjustments are made to the read compare points and the error is recalculated. Trial and error can be used to make a large amount of guesses at the adjustments in order to minimize the error. A computer can be used to guess at the adjustments and calculate the new error in the attempt to minimize the error. The adjustments made to minimize the error are the offset to be used in step 1104. In one embodiment, each read compare points has a separate offset. In another embodiment, all of the calculated offsets are averaged to calculate a single offset foe all read compare points.
Another method that can be employed to determine each read point's offset value individually does not require any pre-characterization of the memory. This method can use any of the procedures discussed above to find the zero crossing of the derivative of the smoothed distribution function. It may be preferable to use a non-skewed function (e.g. a regular Gaussian) for the smoothing operation in order not to end up over-skewing the read levels. In this method, once the minima of the smoothed distribution function are determined, the values at X volts to the right and to the left of each minimum are observed and compared to each other. The difference in the two values or the ratio of the values can be used to obtain the sign and the magnitude of the offset for each and every read level. The tails of each distribution can often be modeled by an exponential function. A simple mathematical study can show that when two neighbor distributions merge into one another with one's upper tail overlapping the other's lower tail what happens to the position of the minimum of the sum of the two distributions (which is the only distribution function that can be measured if one does not have prior knowledge of the data was written to the page). Typically, the ideal read level that minimizes the error is where the two distributions cross each other. However, we do not have information about the two individual distributions, as we do not know the data that was written to the page. As a result we have to rely on the only information that is available which is the sum or superposition of all the states' distributions. The superposition distribution (e.g. plot 860 of
The processes discussed above for reading data, including determining new read compare points, can be used to read data after the data is programmed or can be used as part of a verify process during programming.
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 |
11568954, | Jun 18 2020 | SanDisk Technologies LLC | Technique to proactively identify potential uncorrectable error correction memory cells and countermeasure in field |
Patent | Priority | Assignee | Title |
5920501, | Dec 12 1997 | Round Rock Research, LLC | Flash memory system and method for monitoring the disturb effect on memory cell blocks due to high voltage conditions of other memory cell blocks |
5963473, | May 23 1996 | Round Rock Research, LLC | Flash memory system and method for monitoring the disturb effect on memory cell blocks due to high voltage conditions of other memory cell blocks |
7181565, | May 03 2005 | Atmel Corporation | Method and system for configuring parameters for flash memory |
7315917, | Jan 20 2005 | SanDisk Technologies LLC | Scheduling of housekeeping operations in flash memory systems |
7577036, | May 02 2007 | U S BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT | Non-volatile multilevel memory cells with data read of reference cells |
7808819, | Apr 29 2008 | Western Digital Israel Ltd | Method for adaptive setting of state voltage levels in non-volatile memory |
7957187, | May 09 2008 | SanDisk Technologies LLC | Dynamic and adaptive optimization of read compare levels based on memory cell threshold voltage distribution |
8154921, | May 09 2008 | SanDisk Technologies LLC | Dynamic and adaptive optimization of read compare levels based on memory cell threshold voltage distribution |
20070217258, | |||
20080263266, | |||
20080285351, | |||
20090282186, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Mar 31 2014 | SanDisk Technologies LLC | (assignment on the face of the patent) | / | |||
May 16 2016 | SanDisk Technologies Inc | SanDisk Technologies LLC | CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 038807 | /0807 |
Date | Maintenance Fee Events |
Sep 27 2019 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Sep 27 2023 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Feb 05 2022 | 4 years fee payment window open |
Aug 05 2022 | 6 months grace period start (w surcharge) |
Feb 05 2023 | patent expiry (for year 4) |
Feb 05 2025 | 2 years to revive unintentionally abandoned end. (for year 4) |
Feb 05 2026 | 8 years fee payment window open |
Aug 05 2026 | 6 months grace period start (w surcharge) |
Feb 05 2027 | patent expiry (for year 8) |
Feb 05 2029 | 2 years to revive unintentionally abandoned end. (for year 8) |
Feb 05 2030 | 12 years fee payment window open |
Aug 05 2030 | 6 months grace period start (w surcharge) |
Feb 05 2031 | patent expiry (for year 12) |
Feb 05 2033 | 2 years to revive unintentionally abandoned end. (for year 12) |