In solid state storage systems, one or more thresholds are used to read the solid state storage. The selection of these thresholds is important because it affects the number of bit errors contained in the read-back bit sequence. Naturally, it would be desirable to use the optimal threshold (i.e., the threshold which returns the fewest bit errors). Although techniques for estimating an optimal threshold already exist, under certain conditions these techniques may be unable to converge on the actual optimal threshold (e.g., the system gets “stuck” and/or converges on an estimate that is a poor estimate). New optimal threshold estimation techniques which avoid such problems would be desirable.
Various embodiments of the invention are disclosed in the following detailed description and the accompanying drawings.
The invention can be implemented in numerous ways, including as a process; an apparatus; a system; a composition of matter; a computer program product embodied on a computer readable storage medium; and/or a processor, such as a processor configured to execute instructions stored on and/or provided by a memory coupled to the processor. In this specification, these implementations, or any other form that the invention may take, may be referred to as techniques. In general, the order of the steps of disclosed processes may be altered within the scope of the invention. Unless stated otherwise, a component such as a processor or a memory described as being configured to perform a task may be implemented as a general component that is temporarily configured to perform the task at a given time or a specific component that is manufactured to perform the task. As used herein, the term ‘processor’ refers to one or more devices, circuits, and/or processing cores configured to process data, such as computer program instructions.
A detailed description of one or more embodiments of the invention is provided below along with accompanying figures that illustrate the principles of the invention. The invention is described in connection with such embodiments, but the invention is not limited to any embodiment. The scope of the invention is limited only by the claims and the invention encompasses numerous alternatives, modifications and equivalents. Numerous specific details are set forth in the following description in order to provide a thorough understanding of the invention. These details are provided for the purpose of example and the invention may be practiced according to the claims without some or all of these specific details. For the purpose of clarity, technical material that is known in the technical fields related to the invention has not been described in detail so that the invention is not unnecessarily obscured.
At 100, a bit flip count is determined for each bin in a plurality of bins, including by: (1) performing a first read on a group of solid state storage cells at a first threshold that corresponds to a lower bound for a given bin, (2) performing a second read on the same group of solid state storage cells at a second threshold that corresponds to an upper bound for the given bin. The bit flip count is calculated based on the read back values from the first read at (1) and the second read at (2).
See, for example,
In diagram 200, for each of bins B1-B4 (210-213), a corresponding bit flip count would be determined. To determine the bit flip count for bin B1 (210), a first read is performed at threshold voltage R1 (206) and a second read is performed at threshold voltage R2 (208). If any of the bits flip (i.e., change) between the read at threshold voltage R1 (206) and threshold voltage R2 (208), then the bit flip count is incremented.
Diagram 250 shows exemplary read-back bit sequences which are returned by the reads at threshold voltage R1 (206) and threshold voltage R2 (208). In this example, the group of cells being read contains four cells. The read-back values for cells 1 and 4 are consistently a 0 and a 1, respectively, and thus do not correspond to bit flips and the bit flip count is not incremented.
In some embodiments, only plausible or expected bit flips are counted at step 100 in
In contrast, the bit flip shown by cell 3 is implausible. A returned value of 1 at threshold voltage R1 corresponds to a stored voltage which is less than R1 (i.e., stored_voltagecell_3<R1). However, the returned value of 0 at threshold voltage R2 corresponds to a stored voltage which is greater than R2 (i.e., stored_voltagecell_3>R2). There is no value of stored_voltagecell_3 which satisfies both inequalities because something cannot be both less than R1 and greater than R2. This is one example of an implausible bit flip and in some embodiments such implausible bit flips are not counted at step 100 in
Oftentimes, implausible bit flips are due to read noises and if two threshold voltages (e.g., R1 and R2) are sufficiently separated implausible bit flips will not occur. Therefore, in some embodiments, there is no differentiation between the plausible and implausible bit flips. All the bit flips are counted in such embodiments.
Returning to
Although the subscript numbering of placed thresholds (i.e., R1, R2, . . . , R5) shown in
The following figure shows an example of a system which performs the process of
In the example shown, placed threshold generator 302 generates placed thresholds. Using diagram 200 in
Storage interface 304 receives the placed thresholds from placed threshold generator 302 and performs reads on solid state storage 350 using the placed thresholds. In one example, solid state storage 350 comprises NAND Flash. In various embodiments, solid state storage 350 includes SLC storage where a cell stores 1 bit, multi-level cell (MLC) storage where a cell stores 2 bits, or tri-level cell (TLC) storage where a cell stores 3 bits. In some embodiments, solid state storage 350 includes multiple types of storage (e.g., SLC storage as well as MLC storage).
Storage interface 304 passes the read-back bit sequences to bit flip calculator 306. Diagram 250 in
Optimal threshold estimator 308 in turn generates an estimated threshold, including by determining a minimum. In a first example described below, a minimum bin (which corresponds to the bin having the lowest bit flip count) is selected and is used to generate the estimated threshold. In a second example described below, a curve is fitted to data points (e.g., corresponding to or otherwise based on the bit flip counts) and the minimum of the fitted curve is used to estimate the optimal threshold.
At 102a, a minimum is determined using the bit flip counts corresponding to the plurality of bins, including by determining a minimum bin corresponding to a bin having the lowest bit flip count.
Returning to
As is shown in diagram 550 in
In the example shown, optimal threshold estimator 600 includes minimum bin identifier 602. In this example, minimum bin identifier 602 selects the lowest bit flip count input to it (e.g., 10 bit flips in
Averager 604 performs an average on the lower bound and upper bound of the minimum bin; the result is output as the estimated threshold. Averager 604 is one example of a component which performs step 104a in
As described above, another way of estimating an optimal threshold is to use a fitted curve. The following figures describe an example of this.
At 102b, a minimum is determined using the bit flip counts corresponding to the plurality of bins, including by fitting a curve and determining a minimum associated with the fitted curve. The following figure shows one example of a fitted curve.
In this example, a quadratic function (i.e., y=ax2+bx+c) is fitted to the data points using a Least Squares fit. This produces the quadratic coefficients: a=24.8843, b=−3559.7, and c=1.26×105. Diagram 800 shows the fitted curve (802) corresponding to those coefficients. Fitted curve 802 includes minimum 804.
Returning to
In this example, this is rounded to 72.
As is shown in diagram 800, the estimated threshold is better than the default threshold according to a number of metrics. For example, using distance from the optimal threshold as a metric, the estimated threshold is closer to the optimal threshold (a difference of two units of threshold voltage) compared to the default threshold, which is off by 4 units. If the number of bit errors returned by a given threshold is used as a metric, the estimated threshold returns 7 bit errors whereas the default threshold returns 13 bit errors compared to the actual data.
As described above, one problem with some other techniques is that in some cases they get stuck and/or converge on a threshold which could be improved upon. For example, one other technique uses a gradient descent technique to estimate the optimal threshold. However, in some cases, the gradient descent technique gets stuck in a local minimum which is not the global minimum. One benefit of fitting a quadratic function to the data points is that a quadratic function only has a single minimum, which (as a result of the curve fitting) is likely to be near the actual optimal threshold. It is thus impossible to accidentally select or converge towards the wrong minimum using a quadratic function since there is only 1 minimum.
Optimal threshold estimator 900 includes data point generator 902 which generates data points from the bins and bit flip counts which are input to it. The x coordinates generated by data point generator 902 are the centers of the bins and the y coordinates generated by data point generator 902 are the bit flip counts. For example, if the bin values input to data point generator 902 do not already include the lower bound and upper bound for each bin, then data point generator 902 obtains the two bounds and averages them for each bin to obtain the x coordinate.
Coefficient generator 903 uses the data points to generate quadratic coefficients. As described above, in this example, a Least Squares fit is used to fit the curve. In some other embodiments, some other technique for fitting a curve (i.e., besides Least Squares) is used. Coefficient generator 903 is one example of a component which fits a curve at step 102b in
Minimum locator 904 uses the quadratic coefficients to find the minimum of the fitted curve. It is the x-coordinate of the minimum that is of interest, so minimum locator 904 uses the equation
to generate the x-coordinate of the minimum. (Naturally, if some other type of curve were fitted to the data points then another equation to calculate xmin would be used.) The x-coordinate of the minimum is then output as the estimate of the optimal threshold. Minimum locator 904 is one example of a component which determines a minimum at step 102b in
As described above, solid state storage may include SLC storage (i.e., 1 bit of storage per cell), MLC storage (i.e., 2 bits of storage per cell), TLC storage (i.e., 3 bits of storage per cell), etc. The techniques described above are applicable to higher density storage, such as MLC and TLC, and the following figures show some examples of this. First, an MLC example is described. This is followed by a TLC example.
An optimal threshold estimation process which is performed on MLC storage will generate three estimates: one for the A threshold, one for the B threshold, and one for the C threshold. The optimal A threshold corresponds to the threshold voltage at which distributions 1002 and 1003 intersect; the optimal B threshold corresponds to the threshold voltage at which distributions 1003 and 1004 intersect; the optimal C threshold corresponds to the threshold voltage at which distributions 1004 and 1005 intersect.
In MLC storage, the B threshold (e.g., at or near assist read 1008) is used to read the LSB. Cells having a voltage less than the specified B threshold are read as having an LSB of 1. Cells having a voltage greater than the specified B threshold are read as having an LSB of 0. This is the same as the SLC examples described above and so the examples described above are applicable in a straightforward manner to the estimation of the optimal B threshold used to read the LSB. As such, it is not repeated here for brevity.
The process of estimating the optimal A threshold and the optimal C threshold is not as straightforward. In this example, the process begins with an assist read at threshold voltage 1008. In embodiments described herein, an assist read comprises an SLC assist read. In other words, the controller reads the storage as if it were SLC storage (e.g., even if the storage is actually MLC storage or TLC storage). To put it another way, an assist read uses only a single threshold voltage when performing a read, which is a characteristic of reading SLC storage.
During the assist read at 1008, cells which have a voltage less than the threshold voltage of the assist read (1008) are read as a 1 and cells which have a voltage greater than the threshold voltage of the assist read are read as a 0. Cells which are read as a 0 are grouped into one group (1012) and cells which are read as a 1 are grouped into another group (1010). The cells in group 1010 are then used to estimate the optimal A threshold (i.e., for the MSB of the MLC storage) between distributions 1002 and 1003 and the cells in group 1012 are used to estimate the optimal C threshold (i.e., for the MSB of the MLC storage) between distributions 1004 and 1005. This is described in further detail below.
It is noted that cells in distribution 1003 which have a voltage greater than the threshold voltage of assist read 1008 will be misread (i.e., a 0 instead of 1) and cells in distribution 1004 which have a voltage less than the threshold voltage of assist read 1008 will also be misread (i.e., a 1 instead of 0). Since distributions 1003 and 1004 overlap, it is impossible to avoid misreads. However, the misreads around the assist read will not affect the optimal threshold estimation as long as the misread bits keep the same value for all the A reads or C reads. In another words, if the tail of distribution 1003 does not cross C1, C threshold estimation will not be affected. Similarly, if the tail of distribution 1004 does not cross A6, A threshold estimation will not be affected either. In any case, the estimation technique(s) described herein work to an acceptable degree even with the misreads.
In some embodiments, the threshold voltage of the assist read is set to some nominal or typical voltage associated with the intersection of distribution 1003 and distribution 1004. In some embodiments, the threshold voltage of the assist read is set to some midpoint between the placed thresholds which will be simultaneously changing (e.g., the midpoint between the A and C placed thresholds).
The following figure shows exemplary bit sequences which are read back from the MLC storage and continues the example shown here.
After the assist read is performed, 6 MSB reads are performed at (A1, C1), . . . , (A6, C6). During an MSB read, cells which store a voltage between the two specified threshold voltages (e.g., between A1 and C1, or between A2 and C2) are read as having an MSB of 0. Cells which store a voltage less than the lower threshold voltage (e.g., less than A1) or greater than the higher threshold voltage (e.g., greater than C1) are read as having an MSB of 1.
Diagram 1150 shows the bit flip counts corresponding to bins 1-5 and 7-11 (see, e.g.,
Once the bit flip counts have been determined for bins 1-5 and 7-11, the techniques described above may be used to estimate the optimal A threshold and the optimal C threshold. For example, the process of
As described above, there is a cost associated with not using an assist read. Specifically, more reads would have to be performed in order to obtain the bit flip counts. Without the assist read, the A threshold would have to be held constant while the C threshold is varied and vice versa. Using the thresholds shown in diagram 1000 of
This technique of using an (SLC) assist read to estimate optimal thresholds also applies to TLC storage. The following figures describe one such TLC example.
In diagram 1200, a first SLC assist read is performed at threshold voltage 1210. As described above, the assist read treats the storage as if it is SLC storage, even though it is actually TLC storage. For example, TLC storage is normally read with two or more threshold voltages: 2 threshold voltages must be specified when an LSB read is performed, 2 threshold voltages must be specified when an MSB read is performed, and 3 threshold voltages must be specified when a CSB read is performed. However, the assist read shown in diagram 1200 uses only one threshold voltage, which is a characteristic of reading SLC storage; this is why the assist reads are described herein as SLC assist reads.
Cells which are read as a 1 are grouped into one group which is used to estimate the optimal LSB threshold between distributions 1204 and 1205. Cells which are read as a 0 are grouped into another group which is used to estimate the optimal LSB threshold between distributions 1208 and 1209. In some embodiments, the threshold voltage of assist read 1210 is set to a nominal or default value associated with the intersection of distributions 1206 and 1207.
Once the cells have been divided up, 6 reads of the LSB are performed at (R1a, R1c), (R2a, R2c), (R3a, R3c), (R4a, R4c), (R5a, R5c), and (R6a, R6c). As described above, the assist read at threshold voltage 1210 permits the A threshold and the C threshold to be varied simultaneously which results in fewer total reads than without an assist read.
The reads of the LSB are used to calculate bit flip counts for bins B1a-B5a and B1c-B5c, as described above. The bit flip counts for bins B1a-B5a are used to estimate an optimal threshold for the LSB threshold between distributions 1204 and 1205; the bit flip counts for bins B1c-B5c are used to estimate an optimal threshold for the LSB threshold between distributions 1208 and 1209. In some embodiments, a minimum bin may be used to estimate the optimal A or C threshold. In some embodiments, a curve fitting process is performed.
Reads of the MSB are then performed at (R1a′, R1c′), (R2a′, R2c′), (R3a′, R3c′), (R4a′, R4c′), (R5a′, R5c′), and (R6a′, R6c′). The bit flip counts for bins B1a′-B5a′ are then used to estimate the optimal MSB threshold between distribution 1202 and 1203. Similarly, the bit flip counts for bins B1c′-B5c′ are used to estimate the optimal MSB threshold between distributions 1206 and 1207.
With the cells divided into three groups, 6 CSB reads are performed at (R1a″, R1b″, R1c″), (R2a″, R2b″, R2c″), (R3a″, R3b″, R3c″), (R4a″, R4b″, R4c″), (R5a″, R5b″, R5c″), and (R6a″, R6b″, R6c″) in order to determine bit flip counts for bins B1a′-B5a″, bins B1b″-B5b″, and bins B1c″-B5c″. In a CSB read, a voltage less than the lowest threshold voltage (e.g., less than R1a″) is read as a 1, a voltage between the lowest threshold voltage and the middle threshold voltage (e.g., between R1a″ and R1b″) is read as a 0, a voltage between the middle threshold voltage and the highest threshold voltage (e.g., between R1b″ and R1c″) is read as a 1, and a voltage greater than the highest threshold voltage (e.g., greater than R1c″) is read as a 0.
The assist reads used during LSB optimal threshold estimation (e.g.,
As shown herein, optimal threshold estimation can be performed for TLC storage using 22 reads with the assistance of assist reads. In contrast, if assist reads were not used, then 12 reads would be needed in order to estimate optimal thresholds for the LSB, 12 reads would be needed in order to estimate optimal thresholds for the MSB, and 18 reads would be needed in order to estimate optimal thresholds for the CSB; this is a total of 42 reads.
In one example application of
In another example application of
In another example application of
At 1500, a first SLC assist read is performed on the group of solid state storage cells. At 1502, the group of solid state storage cells is divided into a first sub-group and a second sub-group using the first SLC assist read, wherein (1) a first optimal threshold is estimated using the first sub-group, (2) a second optimal threshold is estimated using the second sub-group, and (3) the first optimal threshold and the second optimal threshold are associated with the same bit position.
At 1504, a second SLC assist read is performed on the group of solid state storage cells. At 1506, the group of solid state storage cells is divided into a third sub-group and a fourth sub-group using the second SLC assist read, wherein (1) a third optimal threshold is estimated using the third sub-group, (2) a fourth optimal threshold is estimated using the fourth sub-group, and (3) the third optimal threshold and the fourth optimal threshold are associated with the same bit position.
At 1508, a third SLC assist read is performed on the group of solid state storage cells. At 1510, a fourth SLC assist read is performed on the group of solid state storage cells. At 1512, the group of solid state storage cells is divided into a fifth sub-group, a sixth sub-group, and a seventh sub-group using the third SLC assist read and the fourth SLC assist read, wherein (1) a fifth optimal threshold is estimated using the fifth sub-group, (2) a sixth optimal threshold is estimated using the sixth sub-group, (3) a seventh optimal threshold is estimated using the seventh sub-group, and (4) the fifth optimal threshold, the sixth optimal threshold, and the seventh optimal threshold are associated with the same bit position.
Placed threshold generator 1602 generates a storage type signal, a bit position signal, and one or more placed thresholds and passes those signals to storage interface 1604. The storage type signal indicates to storage interface 1604 whether solid state storage 1650 should be read as SLC storage, MLC storage, TLC storage, etc. If the storage type signal is MLC or TLC, then the bit position signal is used to indicate what bit position should be read (e.g., LSB, CSB, MSB, etc.). Naturally, if the signal type is SLC then the bit position signal is ignored. Depending upon the storage type specified and/or the bit position specified, the appropriate number of placed thresholds are generated and passed to storage interface 1604.
For example, for assist read 1102 in
Returning to
Cell grouper and bit flip calculator 1606 generates 3 signals: a sub-group, a bin, and a bit flip count. The sub-group signal indicates which bins (and their bit flip count) should be grouped together during optimal threshold estimation. For example, for bins 1-5 in
Optimal threshold estimator 1608 generates the estimated thresholds. Using
As described above, in some embodiments, a curve is fitted to data points (e.g., where the x-coordinate corresponds to the center of the bin and the y-coordinate corresponds to the bit flip count for that bin) during optimal threshold estimation. The following figure describes an embodiment in which the data points are filtered before curve fitting is performed. As will be shown in the example, this enables the resulting curve to have a minimum which is closer to the actual optimal threshold, which results in better estimates of the optimal threshold.
Once the value of β is selected, it is used (at least in this example) in the following manner. First, bit flip counts for each bin are obtained. Then, the differences in bit flip counts between adjacent bins are determined. With all of the differences obtained, any number of outer bins are trimmed (e.g., from the left going inwards, or from the right going inwards) so that there are (at most) 2 differences that exceed the specified β: the leftmost pair of bins (after any trimming) and/or the rightmost pair of bins (after any trimming). The other differences between adjacent bins must be less than the specified value of β, otherwise more trimming still needs to be performed.
In diagram 1700, β=100. The bins shown in diagram 1700 are the result of the bin trimming process described above. In this example, the difference in bit flip counts between the bin centered at 25 and the bin centered at 37 exceeds 100. Similarly, the difference in bit flip counts between the bin centered at 85 and the bin centered at 97 exceeds 100. All other differences between adjacent bins are less than 100.
In diagram 1750, β=50. As such, the difference in bit flip counts between the bin centered at 49 and the bin centered at 61 exceeds 50. The difference in bit flip counts between the bin centered at 73 and the bin centered at 85 also exceeds 50. However, the difference in bit flip counts between the bin centered at 61 and the bin centered at 73 is less than 50.
Fitted curve 1710 in diagram 1700 and fitted curve 1712 in diagram 1750 show the fitted curves which result from the respective filtered data points. Fitted curve 1710 in diagram 1700 produces an estimated optimal threshold 1720 of 59 units. This is an error of 18 units compared to the actual optimal threshold at 1730. In contrast, fitted curve 1712 in diagram 1750 produces an estimated optimal threshold 1722 of 71 units, which has an error of 6 units compared to the actual optimal threshold at 1730.
As shown herein, in some embodiments, the number of bins or data points (i.e., N), may be varied using a threshold, β. This enables the most relevant data points (i.e., those closest to the cross-over point between two distributions) to be used by the fitting process. Less relevant data points (i.e., further away from the cross-over point between two distributions) are not considered by the curve fitting process. This enables the fitted curve to have its minimum closer to the actual minimum, producing a better quality estimate.
In some embodiments, a trimming process checks (e.g., prior to curve fitting) to see if a minimum number of bins remain after trimming. Using diagram 1750 as an example, suppose the minimum is 5 bins so that the results shown in diagram 1750 are insufficient and an additional bin needs to be added back in. The bin to the left of the bin centered at 49 and the bin to the right of the bin centered at 85 are both candidates to be added back in. For convenience, those bins (not shown) are referred to hereafter as the left bin candidate and the right bin candidate, respectively. If the left bin candidate and the bin centered at 49 have a smaller difference than the right bin candidate and the bin centered at 85, then the left bin candidate is added back in. Otherwise, the right bin candidate is added back in. In some embodiments, a minimum number of bins relates to the type of curve being fitted (e.g., a minimum of 2 data points is required to fit a line, a minimum of 3 data points is required to fit a quadratic function, etc.).
At 1800, a threshold associated with a difference between adjacent bit flip counts is obtained. For example, in
At 1802, for each pair of adjacent bins in the plurality of bins, a difference between bit flip counts is determined. For example, if the bin centers and bit flip counts are: (61, 25), (71, 10), (81, 427), (91, 5211), and (101, 12430), then the differences would be: 15, 417, 4784, and 7219.
At 1804, one or more outer bins from the plurality of bins are trimmed, wherein only (1) a leftmost bin and a second-from-left bin and (2) a rightmost bin and a second-from-right bin are permitted to have differences that exceed the threshold.
To continue the example from above, if β=500, then the bin centers and bit flip counts that would remain after trimming would be: (61, 25), (71, 10), (81, 427), and (91, 5211). As illustrated in this example, although the leftmost pair of adjacent bins and the rightmost pair of adjacent bins are permitted to exceed the threshold, they are not required to (e.g., in the event one or both of the leftmost pair of adjacent bins and the rightmost pair of adjacent bins have differences which do not exceed the threshold from the beginning).
Although the foregoing embodiments have been described in some detail for purposes of clarity of understanding, the invention is not limited to the details provided. There are many alternative ways of implementing the invention. The disclosed embodiments are illustrative and not restrictive.
This application claims priority to U.S. Provisional Patent Application No. 61/901,960 entitled SIMPLIFIED OPTIMAL THRESHOLD ESTIMATION FOR NAND-BASED STORAGE DEVICES filed Nov. 8, 2013 which is incorporated herein by reference for all purposes.
Number | Name | Date | Kind |
---|---|---|---|
7447970 | Wu et al. | Nov 2008 | B2 |
7975192 | Sommer et al. | Jul 2011 | B2 |
8243514 | Kang et al. | Aug 2012 | B2 |
8482978 | Perlmutter et al. | Jul 2013 | B1 |
9007854 | Nemati Anaraki | Apr 2015 | B1 |
20090310404 | Cho | Dec 2009 | A1 |
20110182119 | Strasser et al. | Jul 2011 | A1 |
20120182810 | Radke et al. | Jul 2012 | A1 |
20130033933 | Park | Feb 2013 | A1 |
20130215682 | Yang | Aug 2013 | A1 |
20130336072 | Wood | Dec 2013 | A1 |
20140126285 | Kang | May 2014 | A1 |
20140355340 | Sharon | Dec 2014 | A1 |
20140359202 | Sun | Dec 2014 | A1 |
20140365172 | Liao | Dec 2014 | A1 |
20150085571 | Hu | Mar 2015 | A1 |
Number | Date | Country |
---|---|---|
103295635 | Sep 2013 | CN |
Entry |
---|
U.S. Appl. No. 13/935,714, “Generating Read Thresholds Using Gradient Descent and Without Side Information”, filed Jul. 5, 2013 |
U.S. Appl. No. 13/935,714, Office Action, Mailed Aug. 11, 2014. |
Office Action issued by the State Intellectual Property Office dated May 27, 2017. |
Number | Date | Country | |
---|---|---|---|
20150131376 A1 | May 2015 | US |
Number | Date | Country | |
---|---|---|---|
61901960 | Nov 2013 | US |