US20130314988A1 - Systems and methods of updating read voltages - Google Patents
Systems and methods of updating read voltages Download PDFInfo
- Publication number
- US20130314988A1 US20130314988A1 US13/523,680 US201213523680A US2013314988A1 US 20130314988 A1 US20130314988 A1 US 20130314988A1 US 201213523680 A US201213523680 A US 201213523680A US 2013314988 A1 US2013314988 A1 US 2013314988A1
- Authority
- US
- United States
- Prior art keywords
- modified
- error count
- reference voltage
- reference voltages
- error
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 230000015654 memory Effects 0.000 claims abstract description 177
- 238000013500 data storage Methods 0.000 claims abstract description 34
- 238000012937 correction Methods 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 5
- 238000013507 mapping Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 7
- 230000008859 change Effects 0.000 description 5
- 230000003044 adaptive effect Effects 0.000 description 4
- 230000009467 reduction Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000000704 physical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3418—Disturbance prevention or evaluation; Refreshing of disturbed memory data
- G11C16/3431—Circuits or methods to detect disturbed nonvolatile memory cells, e.g. which still read as programmed but with threshold less than the program verify threshold or read as erased but with threshold greater than the erase verify threshold, and to reverse the disturbance via a refreshing programming or erasing step
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5642—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
- G11C16/28—Sensing or reading circuits; Data output circuits using differential sensing or reference cells, e.g. dummy cells
Definitions
- the present disclosure is generally related to updating reference voltages in a data storage device.
- Non-volatile memory devices such as universal serial bus (USB) flash memory devices or removable storage cards, have allowed for increased portability of data and software applications.
- Flash memory devices can enhance data storage density by storing multiple bits in each flash memory cell.
- Multi-Level Cell (MLC) flash memory devices can provide increased storage density by storing 3 bits per cell, 4 bits per cell, or more.
- Storing multiple bits of information in a single flash memory cell typically includes mapping sequences of bits to states of the flash memory cell. For example, a first sequence of bits “110” may correspond to a first state of a flash memory cell and a second sequence of bits “010” may correspond to a second state of the flash memory cell. After determining that a sequence of bits is to be stored into a particular flash memory cell, the particular flash memory cell may be programmed to a state (e.g., by setting a threshold voltage) that corresponds to the sequence of bits.
- data may be read from the memory cells by sensing the programmed state of each memory cell by comparing the cell threshold voltage to one or more reference voltages.
- the sensed programming states can sometimes vary from the written programmed states due to one or more factors, such as data retention and program disturb conditions.
- Accuracy of reading data stored in a data storage device may be improved by updating a set of reference voltages to reduce a count of errors associated with reading the stored data.
- a selection of a first updated reference voltage may be made by comparing an error count of read errors associated with a first reference voltage to a modified error count of read errors associated with a modified first reference voltage. For each of the set of reference voltages, either the reference voltage or the modified reference voltage may be selected based on a comparison of the error count to the modified error count. Each of the selections may be included in an updated set of reference voltages.
- the updated reference voltage may be selected from among the reference voltage and several modified reference voltages based on a comparison of the corresponding error counts of read errors for the reference voltage and each of the modified reference voltages.
- FIG. 1 is a general diagram of a first illustrative embodiment of a system including a data storage device that updates a set of reference voltages based on a comparison of an error count associated with each reference voltage to error counts associated with each of one or more modified reference voltages, and FIG. 1 graphically illustrates errors associated with a reference voltage due to overlapping of states of memory elements;
- FIG. 2 is general diagram of a particular embodiment of a sensing scheme and includes a graphical depiction of a cell voltage distribution for states (Er, A, . . . G) of a multi-bit storage element of a memory of the data storage device of FIG. 1 ;
- FIG. 3 is a flow diagram illustrating a particular embodiment of a method of updating reference voltages based on a comparison of error counts
- FIG. 4 is a flow diagram illustrating another particular embodiment of a method of updating reference voltages based on a comparison of error counts.
- a programmed state of a particular data element of a data storage device may change over time due to various factors, such as time-related degradation of memory, program disturb factors, and other proximity-related factors.
- a cell voltage distribution of the data storage device may change over time depending on various parameters including a time elapsed since program, a temperature, a geometry (e.g., die/block/word line), and a number of program and erase cycles, as illustrative examples.
- a memory controller of the memory device may be beneficial for a memory controller of the memory device to timely update the reference voltages for the memory device.
- the change may be reflected in the magnitude of the reference voltage that correctly reads the stored data. That is, the reference voltage that is used to correctly sense the memory element threshold voltage may change over time.
- use of a fixed set of reference voltages may result in errors in data values read from memory elements whose threshold voltages have changed over time.
- Improved error correction capability of data stored in a memory of a data storage device may be achieved with reduced latency by updating reference voltages based on a comparison of error counts.
- Systems and methods of updating each of a set of reference voltages by comparing an error count associated with each reference voltage to corresponding error counts associated with one or more modified reference voltages are disclosed.
- FIG. 1 a particular illustrative embodiment of a system generally designated 100 and including a data storage device 104 that is configured to update reference voltages.
- the system 100 includes the data storage device 104 coupled to a host device 102 .
- the data storage device 104 includes a memory 106 coupled to a controller 108 .
- the data storage device 104 is configured to enable exchange of data, such as data 103 , between the host device 102 and the memory 106 of the data storage device 104 .
- the host device 102 may be configured to provide data to be stored at the memory 106 or to request data to be read from the memory 106 .
- the host device 102 may include a mobile telephone, a music or video player, a gaming console, an electronic book reader, a personal digital assistant (PDA), a computer such as a laptop computer, a notebook computer, or a tablet, any other electronic device, or any combination thereof
- PDA personal digital assistant
- the data storage device 104 may be a memory card, such as a Secure Digital SD® card, a microSD® card, a miniSDTM card (trademarks of SD-3C LLC, Wilmington, Del.), a MultiMediaCardTM (MMCTM) card (trademark of JEDEC Solid State Technology Association, Arlington, Va.), or a CompactFlash® (CF) card (trademark of SanDisk Corporation, Milpitas, Calif.).
- the data storage device 104 may be embedded memory in the host device 102 , such as eMMC® (trademark of JEDEC Solid State Technology Association, Arlington, Va.) memory and eSD memory, as illustrative examples.
- the memory 106 may be a non-volatile memory of a flash device, such as a NAND flash device, a NOR flash device, or any other type of flash device.
- the memory 106 may include a group of memory elements 107 .
- the group of memory elements 107 may include a word line.
- Each memory element in the group of memory elements 107 may be a memory cell of a multi-level cell (MLC) memory.
- MLC multi-level cell
- Each memory element may have an associated threshold voltage corresponding to a state of the memory element. Each state may correspond to a particular range of threshold voltage values, such as depicted in a graph 120 .
- the state of each memory element represents data stored at the memory element, such as according to a mapping 160 of bits to states of the memory element.
- the data stored at the memory element may be read by comparing the threshold voltage of the memory element to one or more reference voltages of a set of reference voltages 116 including reference voltages V a , V b , . . . V g that are stored in the memory 106 .
- the set of reference voltages 116 may be used to sense the state of each of the memory elements of the group of memory elements 107 .
- the controller 108 may include an error correction code (ECC) engine 110 .
- the ECC engine 110 may include an ECC encoder 112 and an ECC decoder 114 .
- the ECC encoder 112 may be configured to encode data with error correction information.
- the ECC decoder 114 may be configured to decode the error correction information of the data read from the memory 106 to correct errors in the data, up to an error correction capability of the ECC decoder 114 .
- the controller 108 includes an adaptive voltage engine 118 .
- the adaptive voltage engine 118 is configured to create an updated set of reference voltages that includes a first reference voltage, e.g., V a 122 , or a modified first reference voltage based on a comparison of error counts associated with each of the first reference voltage and the modified first reference voltage, as described with reference to FIG. 2 .
- Graph 120 is a histogram illustrating a count of memory elements within a memory, such as the memory 106 , vs. threshold voltage of the memory elements.
- the memory 106 may include multiple level cells (MLC), each MLC capable of storing data and each MLC having a threshold voltage corresponding to a data value of the stored data.
- MLC level cells
- each of the MLC memory elements has a total of eight states.
- the eight states can be represented by three bits, illustrated in the mapping 160 as a first bit in an upper page 162 , a second bit in a middle page 164 , and a third bit in a lower page 166 .
- a first histogram curve 132 illustrates a distribution of memory elements of the group of memory elements 107 having a threshold voltage that is less than the reference voltage V a 122 .
- Each memory element represented in the curve 132 is /programmed to a state corresponding to a data value of 1 1 1, e.g., an “Erase state,” or “Er,” corresponding to a “1” bit in the upper page 162 , a “1” bit in the middle page 164 , and a “1” bit in the lower page 166 .
- a second histogram curve 134 represents all memory elements of the group of memory elements 107 having corresponding threshold voltages between voltage V a 122 and voltage V b 124 .
- Each of these memory elements is programmed to a state corresponding to a data value of 1 1 0 (e.g., state “A” corresponding to a “1” bit in the upper page 162 , a “1” bit in the middle page 164 , and a “0” bit in the lower page 166 .)
- each subsequent curve in the graph 120 lies between two reference voltages and represents memory elements that are programmed to threshold voltages corresponding to a data value as shown in the mapping 160 .
- Each memory element in the group of memory elements 107 stores a data value corresponding to its programmed state, and the corresponding data value can be found in the mapping 160 .
- each of the curves depicted in the graph 120 lies entirely between two reference voltages (e.g., the curve 132 lies entirely below reference voltage V a 122 , and the curve 134 lies entirely between reference voltages V a 122 and V b 124 ).
- the ECC decoder 114 When the data is initially stored in the group of memory elements 107 , each of the curves depicted in the graph 120 lies entirely between two reference voltages (e.g., the curve 132 lies entirely below reference voltage V a 122 , and the curve 134 lies entirely between reference voltages V a 122 and V b 124 ).
- all memory elements represented in the curve 134 are read as storing the same value (e.g., all elements represented in the curve 134 store the value 1 1 0) and the ECC decoder 114 detects no errors in the sensed data. All memory elements of a curve are initially programmed to the same state.
- the programmed state of a particular data element is reflected in the threshold voltage, and the threshold voltage may change over time due to various time-driven factors and proximity-related factors.
- An example of changing threshold voltages is illustrated in the graph 170 .
- a curve 142 represents the memory elements that were initially depicted in the curve 132 of the graph 120 , where the curve 132 has changed shape over time to become the curve 142 .
- a portion of the curve 142 appears to the right of the reference voltage V a 122 and represents memory elements originally programmed to state Er but disturbed to have threshold voltages greater than V a 122 .
- All memory elements to the right of the reference voltage V a 122 will be read to have a value of 1 1 0 (as shown in the mapping 160 ) instead of the value of 1 1 1 that was originally stored.
- Memory elements programmed to store 1 1 1 but read as storing the 1 1 0 value introduce an error in the lower page 166 that are reflected in an associated error count.
- Curve 144 represents a histogram of memory elements for which the stored data value was 1 1 0, initially determinable from the reference voltages V a 122 and V b 124 . That is, when the data was initially stored in the memory elements and represented by the curve 134 of the graph 120 , the stored value of the data was 1 1 0, determined through use of the reference voltages V a 122 and V b 124 . However, over time, the curve 134 has changed shape to become the curve 144 . The curve 144 crosses over the reference voltage V a 122 . As a result, some of the memory elements within the curve 144 that had been initially programmed to 1 1 0 no longer appear between the reference voltages V a 122 and V b 124 .
- a portion of the curve 144 to the left of reference voltage V a 122 represents memory elements that may be read as having a stored value of 1 1 1, according to the mapping 160 , instead of the originally stored value of 1 1 0. Thus, over time, the read values of some of the memory elements may be incorrect and may be counted as errors by the ECC decoder 114 .
- a shaded area 176 (i.e., sum of areas under curves 142 and 144 extending beyond the original reference voltage V a 122 ) represents errors in values of data read using the original reference voltages V a 122 , V b 124 , etc. as a result of the curves 142 and 144 having shapes that are different than their respective original curves 132 and 134 .
- the reference voltage V a 122 may be replaced by a modified reference voltage 172 that differs from the reference voltage V a 122 by an offset voltage ⁇ V.
- a (dashed) vertical line representing modified reference voltage 172 may intersect the crossing point of the curves 142 and 144 .
- a portion of the curve 144 lies to the right of the modified reference voltage 172
- another portion of the curve 144 lies to the left of the modified reference voltage 172 .
- the sum of the areas of these portions is a measure of the error count associated with the modified reference voltage 172 .
- a first reference voltage (represented by a first straight line) that does not pass through the intersection of two adjacent histogram curves has an associated error count that is larger than a second reference voltage (represented by a second straight line) that passes through the intersection of the two adjacent histogram curves.
- a first region (of the curve 142 ) is right of the alternate modified reference voltage 174 and a second region (of the curve 144 ) is left of the reference voltage 174 .
- the sum of the areas of first region and the second region corresponds to the error count associated with the alternate modified reference voltage 174 .
- the modified reference voltage 172 is closest to the intersection of curves 142 and 144 , and therefore has the smallest associated error count.
- each reference voltage V a , V b , etc. By adjusting the voltage of each reference voltage V a , V b , etc., the count of read errors associated with each reference voltage may be reduced.
- Each of the reference voltages may be changed by adding or subtracting the same offset voltage ⁇ V from the original reference voltage (i.e., using a same value of ⁇ V) or by adding or subtracting different offset voltages (i.e., using different values of ⁇ V).
- a selection of an updated reference voltage may be made that reduces the error count of data errors.
- an updated reference voltage may be selected that results in a reduction of the error count of data read errors.
- a selection of an updated reference voltage may be made from among reference voltages 122 , 172 , and 174 to reduce read errors.
- the controller 108 may be configured to read first data values from the group of memory elements 107 using the set of reference voltages 116 and to determine a first error count associated with a first reference voltage (e.g., a count of errors associated with V a 122 , as described with respect to FIG. 2 ) of the set of reference voltages 116 .
- the controller 108 may be configured to associate each error identified in the first data values with a corresponding reference voltage of the set of reference voltages 107 .
- the controller 108 may be configured to read second data values from the group of memory elements 107 using a set of modified reference voltages and determine a modified error count associated with a modified first reference voltage (e.g., a count of errors associated with V ⁇ a 172 , as described with respect to FIG. 2 ).
- the controller 108 may be further configured to create an updated set of reference voltages that includes the first reference voltage V a 122 or the modified first reference voltage V ⁇ a . 172 based on a comparison of the first error count to the second error count.
- the controller 108 may be further configured to determine a third error count associated with a second reference voltage, e.g., V b 124 of the set of reference voltages 107 and a fourth error count associated with a modified second reference voltage (e.g., V b ⁇ V.)
- the controller 108 may be configured to include, in the updated set of reference voltages, the second reference voltage or the modified second reference voltage based on a comparison of the third error count to the fourth error count.
- the voltage i.e., second reference voltage or modified second reference voltage
- the voltage that is closest to the intersection of two intersecting histogram curves has the smaller associated error count.
- the set of reference voltages may include seven reference voltages.
- Each memory element of the group of memory elements 107 of FIG. 1 may store three bits, as shown in the mapping 160 of FIG. 1 .
- An updated set of reference voltages may result in reduced errors associated with read data. Reduced errors may result in a longer useful life of the data storage device 104 . Additionally, the reduction in errors due to use of the updated set of references in reading the stored data may result in reduced processing at the ECC decoder 114 , which may result in reduced read latency experienced by the host device 102 .
- FIG. 2 is a diagram of a particular embodiment of a sensing scheme and includes a graphical depiction of a cell voltage distribution in a memory including multi-level storage elements.
- a graph 210 corresponding to the graph 120 of FIG. 1 , depicts a histogram showing a number of memory elements versus threshold voltage.
- Each of the curves 142 , 144 , 146 , 148 , 150 , 152 , 154 , and 156 corresponds to a particular originally stored data value.
- the memory elements represented in the curve 142 were originally programmed with the threshold voltage corresponding to the data value 1 1 1, illustrated as the curve 132 of FIG. 1 . Over time, the curve 132 of FIG. 1 changed to the curve 142 , typically due to physical effects such as program disturb.
- Curve 144 corresponds to storage elements originally programmed to store the data value 110 (i.e., state A, according to the mapping 160 of FIG. 1 ). Similarly, the memory elements of each of the curves 146 - 156 have been programmed to a particular threshold voltage and corresponding stored data value, and each of the curves 142 - 156 in the graph 210 represents a distribution of threshold voltages that has changed from a corresponding curve of the graph 120 of FIG. 1 .
- Curves 142 - 146 and 150 - 156 include portions that cross over a reference voltage.
- the curve 142 has a portion that lies to the right of the reference voltage V a 122 and another portion that lies to the left of the reference voltage V a 122 .
- each of the memory elements represented in the curve 142 was originally programmed to store the data value 1 1 1 (i.e., the curve 132 is entirely to the left of the reference voltage V a 122 .)
- the read values read by comparing a storage element's threshold voltage to the reference voltage V a 122 .
- First data 212 may be read from the memory 106 by the controller 108 of FIG. 1 and the read data may be output as an upper page, a middle page, and a lower page.
- an initial portion of an output data stream may be the upper page, which is a stream of 1s and 0s that includes the uppermost bit extracted from the three-bit values read from each of the memory elements. That is, for each memory element, only the uppermost bit of the corresponding data value will be included in the upper page (i.e., each bit in the upper page 162 of FIG. 1 of the read data value of a memory element).
- a second portion of the output data stream is the middle page 164 that includes, for each memory element, the middle bit of the three-bit data value of each of the memory elements.
- a third portion of the output data stream includes a lower page 166 that corresponds to the lowest bit of the three-bit data value of each of the memory elements.
- Each of the upper, middle, and lower pages may include an ECC code word that is decoded independently of the other pages.
- the ECC decoder 114 of FIG. 1 may determine a count of errors associated with the upper page 162 of the read data.
- the mapping 160 of FIG. 1 there are only two transitional points in the upper page coding. That is, there are only two positions along the upper page of the mapping 160 where the value changes from 1 to 0 or from 0 to 1, corresponding to reference voltages V c and V g .
- V c the most likely point of transition associated with the error(s) in the upper page reported by the ECC decoder 114 of FIG. 1 is either V c or V g .
- a total error count of the readout of the upper page of the group of memory elements, plus the read data value, is sufficient information to select a particular point of transition in the upper page 162 of the mapping 160 associated with the errors.
- a memory element that has an error in its upper page bit and that stores a “0” value in its lower page bit is most likely in state B (i.e., 1 0 0) or state C (i.e., 0 0 0) and the upper page error of the memory element is associated with reference voltage V c .
- a memory element that has an error in its upper page bit and that stores a “1” value in its lower page bit is most likely in state F (i.e., 0 0 1) or state G (i.e., 1 0 1) and the upper page error of the memory element is associated with reference voltage V g .
- a count of errors of the middle page of the read data and the read values of each of the memory elements is sufficient to associate the count of errors of the middle page with one of the reference voltages V b , V d , and V f , and errors in the lower page of the read data are associated with one of V a , and V e as may be determined through analysis of the read data values.
- an error count may be associated with each reference voltage V a -V g .
- V a has an associated error count of 6
- V b has an associated error count of 0
- V c has an associated error count of 2
- V d has an associated error count of 3
- V e has an associated error count of 3
- V f has an associated error count of 2
- V g has an associated error count of 6.
- the associated error count may be determined as a sum of error counts represented by the area of each portion of the histogram curve extending beyond the line represented by the reference voltage. For instance, considering V a .
- the error count contributed by curve 142 is represented by the portion of curve 142 that is to the right of V a 122 and the error count contributed by curve 144 is represented by the portion of curve 144 that is to the left of V a 122 .
- the error count associated with V a 122 is the sum of the contributions from curves 142 and 144 .
- a graph 220 depicts a second histogram with a set of modified reference voltages V ⁇ a , V ⁇ b , etc.
- Each of the modified reference voltages has been determined by subtracting an offset voltage ⁇ V from a corresponding reference voltage.
- Each of the modified reference voltages V ⁇ a , V ⁇ b , V ⁇ g is formed by subtracting the same amount ⁇ V from a corresponding reference voltage.
- each of the modified reference voltages may be formed by subtracting different offset voltages from each of the corresponding original reference voltages.
- modified reference voltage V ⁇ a has a modified error count of 4, as compared with reference voltage V a that has the error count of 6.
- modified reference voltage V ⁇ e passes through the intersection of curves D and E and has a modified error count of 1, as compared with the original reference voltage V e that has an error count of 3.
- An updated set of reference voltages may be selected based on the first data 212 and the second data 222 in order to reduce the error counts associated with the read data.
- the modified reference voltage V ⁇ e may be an advantageous choice to include in the updated set of reference voltages instead of the reference voltage V e because the modified error count associated with V ⁇ e is smaller than the error count associated with V e .
- a comparison can be made of corresponding error counts of each reference voltage to the corresponding modified reference voltage.
- An updated set of reference voltages may be determined by selecting the smaller error count and including its associated reference voltage in the updated set of reference voltages.
- a graph 230 depicts a third histogram with alternate modified reference voltages that are determined by adding an offset voltage to each of the original reference voltages.
- an alternate modified reference voltage V + a may be formed by adding an offset voltage ⁇ V to the value V a of the original reference voltage V a .
- alternate modified reference voltages can be formed from each of the original reference voltages V a , V b , V c , etc. by adding the offset voltage ⁇ V to the original reference voltage.
- the same offset voltage ( ⁇ V) is added to each of the reference voltages. However, in other embodiments, the offset voltage added may be different for one or more reference voltages. Reading the storage elements using the alternate modified reference voltages results in third data 232 . Errors detected in each of the upper, middle, and lower pages of the third data 232 may be attributed to the alternate modified reference voltages and a third set of associated counts (“read point error counts”) may be determined, each read point error count associated with a unique reference voltage.
- An updated set of reference voltages may be determined by comparing, for each reference voltage, error counts of the reference voltage (of the graph 210 ), the modified reference voltage (of the graph 220 ), and the alternative modified reference voltage (of the graph 230 ).
- An updated set of reference voltages may include a selected one of V a , V ⁇ a , and V + a based on a comparison of their respective error counts. For example, V a has an error count of 6, V ⁇ a has a modified error count of 4, and V + a has an alternate modified error count of 7.
- the modified reference voltage V ⁇ a may be selected to be included in the updated set of reference voltages based on a comparison of the error counts associated with each of V a , V ⁇ a , and V + a .
- V g has an error count of 6
- V ⁇ g has a modified error count of 4
- V + g has an alternated modified error count of 7. Therefore, V ⁇ g will be selected to be included in the updated set of reference voltages based on a comparison of the error counts associated with each of V g , V ⁇ g , and V + g
- error counts associated with each reference voltage may be compared to the corresponding error counts associated with their corresponding modified reference voltage and alternate modified reference voltage.
- the updated set of reference voltages may result in fewer read errors of the data stored in the memory elements.
- a graphical depiction of errors associated with various choices of reference voltages is shown in a histogram graph 270 .
- the curve 132 shown in the graph 120 of FIG. 1 , has evolved to the curve 142 .
- a portion 278 of the graph 142 lies to the right of the reference voltage V a 122 .
- the curve 134 of the graph 120 of FIG. 1 has evolved to the curve 144 .
- a portion 276 of the graph 144 lies to the left of reference voltage V a 122 .
- An error count associated with V a 122 corresponds to a sum of areas of the portion 278 and the portion 276 .
- a modified error count associated with the modified reference voltage V ⁇ a 172 corresponds to a sum of areas of a portion 274 (i.e., the portion of the curve 142 to the right of V ⁇ a 172 ) and a portion 272 (i.e., portion of the curve 144 to the left of V ⁇ a 172 ).
- An alternate modified error count associated with the alternate modified reference voltage V + a 174 corresponds to a sum of areas of a portion 282 (i.e., the portion of the curve 142 to the right of V + a 172 ) and a portion 280 (i.e., portion of the curve 144 to the left of V + a 172 ).
- Selection of an updated reference voltage from 122 , 172 , or 174 to be included in an updated set of reference voltages can be made by determining the smallest of the associated error counts and including the corresponding reference voltage (i.e., 122 , 172 , or 174 ) in the updated set of reference voltages.
- the updated set of reference voltages may result in a reduced error count associated with reading the data stored in the memory elements.
- FIG. 3 is a flow diagram illustrating a particular embodiment of a method of updating reference voltages based on a comparison of error counts.
- First data values are read from a group of memory elements using an initial set of reference voltages, at 302 .
- the group of memory elements may be in the non-volatile memory 106 of FIG. 1 , such as a flash memory.
- the first data values may include the first data 212 of FIG. 2 .
- a first error count associated with a first reference voltage of the initial set of reference voltages is determined, at 304 .
- the first error count may correspond to errors associated with V a of FIG. 2 (i.e., error count of 6).
- Second data values are read from the group of memory elements using a set of modified reference voltages, at 306 (e.g., the second data 222 of FIG. 2 .)
- a modified error count associated with a modified first reference voltage is determined, at 308 .
- the modified error count may be associated with V ⁇ a of FIG. 2 (i.e., error count of 4).
- An updated set of reference voltages is created, including the first reference voltage or the modified first reference voltage based on a comparison of the first error count to the modified error count, at 310 .
- the error count of 6 for V a is greater than the modified error count of 4 for V ⁇ a , and therefore V ⁇ a is selected to be included in the updated set of reference voltages.
- selection of the corresponding updated reference voltage may be made by comparing the error count of the reference voltage to the error count of the corresponding modified reference voltage.
- the method ends at 312 .
- the updated set of reference voltages may be stored in the memory 106 of FIG. 1 and may replace the set of reference voltages 116 .
- the updated set of reference voltages stored in the memory 106 may be used to read the data values stored in the group of memory elements 107 of FIG. 1 .
- the updated set of reference voltages may be sent from the controller 108 to the memory 106 and may be stored in the memory 106 , where the updated set of reference voltages is available for reading the stored data values in the group of memory elements 107 .
- a second error count associated with a second reference voltage of the set of reference voltages may be determined. For example, at the graph 210 of FIG. 2 , an error count of 3 is associated with V e . A modified second error count may be determined that is associated with a modified second reference voltage. For example, at the graph 220 of FIG. 2 , a modified error count of 1 is associated with V ⁇ e .
- the second reference voltage (i.e., V e ) or the modified second reference voltage (i.e., V ⁇ e ) may be included in the updated set of reference voltages based on a comparison of the second error count to the modified second error count. For example, in FIG. 2 , the error count of 1 for V ⁇ e is less than the error count of 3 for V e , and therefore V ⁇ e is selected to be included in the updated set of reference voltages.
- Errors in the first data values and errors in the second data values may be identified by an ECC decoder, such as the ECC decoder 114 of FIG. 1 .
- the first data values may be read from multiple logical pages, each logical page being decoded by the ECC decoder 114 of FIG. 1 .
- the second data values may be read from multiple logical pages, each logical page being decoded at the ECC decoder 114 of FIG. 1 .
- Errors may be determined by the ECC decoder 114 , e.g., after each logical page of data is read, after a block of data that includes multiple logical pages is read, when an expected movement in one or more of the reference voltages exceeds a threshold value, e.g., X millivolts, after a defined number of reads and/or writes to the memory 106 , when a count of read errors exceeds a threshold error count, or in response to another condition.
- a threshold value e.g., X millivolts
- the set of reference voltages may include seven reference voltages.
- Each memory element may store three bits.
- each memory element of the group of memory elements 107 of FIG. 1 may store three bits, as shown in the mapping 160 of FIG. 1 .
- each memory element of a group of memory elements may store less than three bits or more than three bits.
- memory elements may store 2 bits per cell (to be read using 3 reference voltages), memory elements may store 4 bits per cell (to be read using 15 reference voltages), etc.
- a modified error count associated with each modified reference voltage may be determined.
- the updated set of reference voltages may be stored in the memory 106 of FIG. 1 , replacing the set of reference voltages 116 .
- the updated set of reference voltages may be changed or defined to include the first reference voltage, the modified first reference voltage, or the alternate modified first reference voltage based on a comparison of the first error count, the modified error count, and the alternate modified error count. For example, as shown in the graphs 210 , 220 , and 230 of FIG.
- An updated set of reference voltages may be changed or defined to include V ⁇ e based on a comparison of the corresponding error count associated with each of V e , V ⁇ 3 , and V + e .
- a total number of errors associated with reading data stored in memory may be reduced when reading data using the updated set of reference voltages.
- Updating the set of reference voltages can be accomplished during operation of a data storage device (e.g., after a defined number of read/write cycles, upon detecting that an expected movement in reference voltages exceeds a threshold value, in response to a periodic or aperiodic analysis of error counts, e.g., an error count exceeding an error count threshold, or in response to another indicator.
- Updating the set of reference voltages on a repeating basis can be advantageous in that the updating may compensate for increases in error counts due changes in the threshold voltages of some of the memory elements “on the fly.” Reducing errors in data read from memory may extend the useful life of the memory and may result in reduced read latency.
- FIG. 4 is a flow diagram illustrating another particular embodiment of a method of updating reference voltages based on a comparison of error counts, and is generally designated 400 .
- Data is retained/cycled as part of normal operations in a non-volatile memory, at 404 .
- a determination is made (e.g., in the controller 108 of FIG. 1 ) as to whether an expected movement in the reference voltages exceeds X mV, at 406 .
- Each modified reference voltage is calculated as (reference voltage ⁇ V), at 414 .
- the modified reference voltage V ⁇ a is calculated as V a ⁇ V.
- the three pages of data are again read using the modified reference voltages to determine the read data, at 416 .
- the page errors may be determined by an ECC decoder such as the ECC decoder 114 of FIG. 1 .
- ECC decoding is performed to find page errors, and the page errors may be split into read point error counts (E ⁇ a , E ⁇ b , E ⁇ c , E ⁇ d , E ⁇ e , E ⁇ f , E ⁇ g ), at 418 .
- the read errors associated with V ⁇ a may be determined
- the read errors associated with V ⁇ b may be determined, etc.
- An alternate modified reference voltage may be determined from the reference voltage by adding ⁇ V to the reference voltage, at 420 .
- Each of the three pages may be read again using the alternate modified reference voltages, at 422 .
- the read data is sent to an ECC decoder, such as the ECC decoder 114 of FIG. 1 , and errors may be determined.
- ECC decoding is performed to find page errors, and the page errors may be split into read point error counts (E + a , E + b , E + c , E + d , E + e , E + f , E + g ), at 424 .
- a smallest of the determined read point error counts may be selected from among the read point error count E i (associated with the reference voltage V i ), the read point error count E ⁇ i (associated with the modified reference voltage V ⁇ i ) and the read point error count E + i (associated with the alternate modified reference voltage V + i ), at 426 .
- An updated reference voltage associated with the smallest of the read point error counts E i , E ⁇ i , and E ⁇ i is included in an updated set of reference voltages. If the smallest of the read point error counts E i , E ⁇ i , and E ⁇ i is associated with the reference voltage V i , then the reference voltage is not changed and an updated set of reference voltages includes the original reference voltage. If the smallest of the three read point error counts E i , E ⁇ i , and E + i is E ⁇ i , an updated V i is set equal to V i ⁇ V, at 428 .
- the updated reference voltage V i is set equal to V i + ⁇ V, at 430 .
- the method returns to 404 , where the memory operations continue using the updated set of reference voltages.
- the updated set of reference voltages may be stored in the memory 106 of FIG. 1 and may replace the set of reference voltages 116 .
- the updated set of reference voltages stored in the controller 108 may be used to read the data values stored in the memory 106 of FIG. 1 .
- the updated set of reference voltages may be sent from the controller 108 to the memory 106 and may be stored in the memory 108 , where the updated set of reference voltages is available for reading the stored data values in the group of memory elements 107 .
- the method 400 may be used to reduce error counts of read data. By selecting each updated reference voltage based on a comparison of associated error counts, a total number of errors associated with reading data stored in memory may be reduced. An additional advantage of reducing the error count may be a reduction in the load of the ECC decoder, which may result in faster data reads.
- such components may include one or more microprocessors, state machines, or other circuits configured to enable a data storage device, such as the data storage device 104 of FIG. 1 , to perform the particular functions attributed to such components.
- the adaptive voltage engine 118 of FIG. 1 may represent physical components, such as controllers, processors, state machines, logic circuits, or other structures to create an updated set of reference voltages.
- the adaptive voltage engine 118 may be implemented using a microprocessor or microcontroller programmed to generate control information and to create the updated set of reference voltages by reading a first set of data using a set of reference voltages and determining a read point error count associated with each reference voltage, reading a second set of data using modified reference voltages and determining a read point error count associated with each modified reference voltage, and for each reference voltage, selecting the reference voltage or the modified reference voltage to be included in the updated set of reference voltages based on a comparison of the read point error count of the reference voltage to the read point error count of the modified reference voltage.
- the controller 108 includes a processor that executes instructions that are stored at the memory 106 . Alternatively, or in addition, instructions that are executable by the processor may be stored at a separate memory location that is not part of the memory 106 , such as at a read-only memory (ROM).
- ROM read-only memory
- the data storage device 104 may be a portable device configured to be selectively coupled to one or more external devices.
- the data storage device 104 may be a removable device such as a universal serial bus (USB) flash drive or a removable memory card.
- USB universal serial bus
- the data storage device 104 may be attached or embedded within one or more host devices, such as within a housing of a portable communication device.
- the data storage device 104 may be within a packaged apparatus, such as a wireless telephone, a personal digital assistant (PDA), a gaming device or console, a portable navigation device, a computer, or other device that uses internal non-volatile memory.
- PDA personal digital assistant
- the data storage device 104 includes a non-volatile memory, such as a Flash memory (e.g., NAND, NOR, Multi-Level Cell (MLC), Divided bit-line NOR (DINOR), AND, high capacitive coupling ratio (HiCR), asymmetrical contactless transistor (ACT), or other Flash memories), an erasable programmable read-only memory (EPROM), an electrically-erasable programmable read-only memory (EEPROM), a read-only memory (ROM), a one-time programmable memory (OTP), or any other type of memory.
- a Flash memory e.g., NAND, NOR, Multi-Level Cell (MLC), Divided bit-line NOR (DINOR), AND, high capacitive coupling ratio (HiCR), asymmetrical contactless transistor (ACT), or other Flash memories
- EPROM erasable programmable read-only memory
- EEPROM electrically-erasable programmable read-only memory
- ROM read-only memory
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Read Only Memory (AREA)
Abstract
Description
- The present application claims priority from Indian Patent Application No. 2024/CHE/2012 filed on May 22, 2012, which is incorporated herein in its entirety.
- FIELD OF THE DISCLOSURE
- The present disclosure is generally related to updating reference voltages in a data storage device.
- Non-volatile memory devices, such as universal serial bus (USB) flash memory devices or removable storage cards, have allowed for increased portability of data and software applications. Flash memory devices can enhance data storage density by storing multiple bits in each flash memory cell. For example, Multi-Level Cell (MLC) flash memory devices can provide increased storage density by storing 3 bits per cell, 4 bits per cell, or more.
- Storing multiple bits of information in a single flash memory cell typically includes mapping sequences of bits to states of the flash memory cell. For example, a first sequence of bits “110” may correspond to a first state of a flash memory cell and a second sequence of bits “010” may correspond to a second state of the flash memory cell. After determining that a sequence of bits is to be stored into a particular flash memory cell, the particular flash memory cell may be programmed to a state (e.g., by setting a threshold voltage) that corresponds to the sequence of bits.
- Once memory cells in the memory device have been programmed, data may be read from the memory cells by sensing the programmed state of each memory cell by comparing the cell threshold voltage to one or more reference voltages. However, the sensed programming states can sometimes vary from the written programmed states due to one or more factors, such as data retention and program disturb conditions.
- Accuracy of reading data stored in a data storage device may be improved by updating a set of reference voltages to reduce a count of errors associated with reading the stored data. A selection of a first updated reference voltage may be made by comparing an error count of read errors associated with a first reference voltage to a modified error count of read errors associated with a modified first reference voltage. For each of the set of reference voltages, either the reference voltage or the modified reference voltage may be selected based on a comparison of the error count to the modified error count. Each of the selections may be included in an updated set of reference voltages.
- Alternatively, for each reference voltage, the updated reference voltage may be selected from among the reference voltage and several modified reference voltages based on a comparison of the corresponding error counts of read errors for the reference voltage and each of the modified reference voltages.
-
FIG. 1 is a general diagram of a first illustrative embodiment of a system including a data storage device that updates a set of reference voltages based on a comparison of an error count associated with each reference voltage to error counts associated with each of one or more modified reference voltages, andFIG. 1 graphically illustrates errors associated with a reference voltage due to overlapping of states of memory elements; -
FIG. 2 is general diagram of a particular embodiment of a sensing scheme and includes a graphical depiction of a cell voltage distribution for states (Er, A, . . . G) of a multi-bit storage element of a memory of the data storage device ofFIG. 1 ; -
FIG. 3 is a flow diagram illustrating a particular embodiment of a method of updating reference voltages based on a comparison of error counts; and -
FIG. 4 is a flow diagram illustrating another particular embodiment of a method of updating reference voltages based on a comparison of error counts. - A programmed state of a particular data element of a data storage device may change over time due to various factors, such as time-related degradation of memory, program disturb factors, and other proximity-related factors. A cell voltage distribution of the data storage device may change over time depending on various parameters including a time elapsed since program, a temperature, a geometry (e.g., die/block/word line), and a number of program and erase cycles, as illustrative examples.
- In order to maintain reliability and performance of a memory device, it may be beneficial for a memory controller of the memory device to timely update the reference voltages for the memory device. When a threshold voltage of a memory element changes, the change may be reflected in the magnitude of the reference voltage that correctly reads the stored data. That is, the reference voltage that is used to correctly sense the memory element threshold voltage may change over time. As a result, use of a fixed set of reference voltages may result in errors in data values read from memory elements whose threshold voltages have changed over time.
- Improved error correction capability of data stored in a memory of a data storage device may be achieved with reduced latency by updating reference voltages based on a comparison of error counts. Systems and methods of updating each of a set of reference voltages by comparing an error count associated with each reference voltage to corresponding error counts associated with one or more modified reference voltages are disclosed.
- Referring to
FIG. 1 , a particular illustrative embodiment of a system generally designated 100 and including adata storage device 104 that is configured to update reference voltages. Thesystem 100 includes thedata storage device 104 coupled to ahost device 102. Thedata storage device 104 includes amemory 106 coupled to acontroller 108. Thedata storage device 104 is configured to enable exchange of data, such asdata 103, between thehost device 102 and thememory 106 of thedata storage device 104. - The
host device 102 may be configured to provide data to be stored at thememory 106 or to request data to be read from thememory 106. For example, thehost device 102 may include a mobile telephone, a music or video player, a gaming console, an electronic book reader, a personal digital assistant (PDA), a computer such as a laptop computer, a notebook computer, or a tablet, any other electronic device, or any combination thereof - The
data storage device 104 may be a memory card, such as a Secure Digital SD® card, a microSD® card, a miniSD™ card (trademarks of SD-3C LLC, Wilmington, Del.), a MultiMediaCard™ (MMC™) card (trademark of JEDEC Solid State Technology Association, Arlington, Va.), or a CompactFlash® (CF) card (trademark of SanDisk Corporation, Milpitas, Calif.). As another example, thedata storage device 104 may be embedded memory in thehost device 102, such as eMMC® (trademark of JEDEC Solid State Technology Association, Arlington, Va.) memory and eSD memory, as illustrative examples. - The
memory 106 may be a non-volatile memory of a flash device, such as a NAND flash device, a NOR flash device, or any other type of flash device. Thememory 106 may include a group ofmemory elements 107. For example, the group ofmemory elements 107 may include a word line. Each memory element in the group ofmemory elements 107 may be a memory cell of a multi-level cell (MLC) memory. - Each memory element may have an associated threshold voltage corresponding to a state of the memory element. Each state may correspond to a particular range of threshold voltage values, such as depicted in a
graph 120. The state of each memory element represents data stored at the memory element, such as according to amapping 160 of bits to states of the memory element. The data stored at the memory element may be read by comparing the threshold voltage of the memory element to one or more reference voltages of a set ofreference voltages 116 including reference voltages Va, Vb, . . . Vg that are stored in thememory 106. The set ofreference voltages 116 may be used to sense the state of each of the memory elements of the group ofmemory elements 107. - The
controller 108 may include an error correction code (ECC)engine 110. TheECC engine 110 may include anECC encoder 112 and anECC decoder 114. TheECC encoder 112 may be configured to encode data with error correction information. TheECC decoder 114 may be configured to decode the error correction information of the data read from thememory 106 to correct errors in the data, up to an error correction capability of theECC decoder 114. - The
controller 108 includes anadaptive voltage engine 118. Theadaptive voltage engine 118 is configured to create an updated set of reference voltages that includes a first reference voltage, e.g.,V a 122, or a modified first reference voltage based on a comparison of error counts associated with each of the first reference voltage and the modified first reference voltage, as described with reference toFIG. 2 . -
Graph 120 is a histogram illustrating a count of memory elements within a memory, such as thememory 106, vs. threshold voltage of the memory elements. For instance, thememory 106 may include multiple level cells (MLC), each MLC capable of storing data and each MLC having a threshold voltage corresponding to a data value of the stored data. In a particular embodiment, each of the MLC memory elements has a total of eight states. The eight states can be represented by three bits, illustrated in themapping 160 as a first bit in anupper page 162, a second bit in amiddle page 164, and a third bit in alower page 166. - A
first histogram curve 132 illustrates a distribution of memory elements of the group ofmemory elements 107 having a threshold voltage that is less than thereference voltage V a 122. Each memory element represented in thecurve 132 is /programmed to a state corresponding to a data value of 1 1 1, e.g., an “Erase state,” or “Er,” corresponding to a “1” bit in theupper page 162 , a “1” bit in themiddle page 164, and a “1” bit in thelower page 166. - A
second histogram curve 134 represents all memory elements of the group ofmemory elements 107 having corresponding threshold voltages betweenvoltage V a 122 andvoltage V b 124. Each of these memory elements is programmed to a state corresponding to a data value of 1 1 0 (e.g., state “A” corresponding to a “1” bit in theupper page 162, a “1” bit in themiddle page 164, and a “0” bit in thelower page 166.) In a similar fashion, each subsequent curve in thegraph 120 lies between two reference voltages and represents memory elements that are programmed to threshold voltages corresponding to a data value as shown in themapping 160. Each memory element in the group ofmemory elements 107 stores a data value corresponding to its programmed state, and the corresponding data value can be found in themapping 160. - When the data is initially stored in the group of
memory elements 107, each of the curves depicted in thegraph 120 lies entirely between two reference voltages (e.g., thecurve 132 lies entirely belowreference voltage V a 122, and thecurve 134 lies entirely betweenreference voltages V a 122 and Vb 124). When the data stored in the group ofmemory elements 107 is read immediately following storage of the data, there may be no errors to be corrected by theECC decoder 114. Because thecurve 134 lies between two corresponding reference voltages, all memory elements represented in thecurve 134 are read as storing the same value (e.g., all elements represented in thecurve 134 store thevalue 1 1 0) and theECC decoder 114 detects no errors in the sensed data. All memory elements of a curve are initially programmed to the same state. - The programmed state of a particular data element is reflected in the threshold voltage, and the threshold voltage may change over time due to various time-driven factors and proximity-related factors. An example of changing threshold voltages is illustrated in the
graph 170. Acurve 142 represents the memory elements that were initially depicted in thecurve 132 of thegraph 120, where thecurve 132 has changed shape over time to become thecurve 142. A portion of thecurve 142 appears to the right of thereference voltage V a 122 and represents memory elements originally programmed to state Er but disturbed to have threshold voltages greater thanV a 122. All memory elements to the right of thereference voltage V a 122 will be read to have a value of 1 1 0 (as shown in the mapping 160) instead of the value of 1 1 1 that was originally stored. Memory elements programmed to store 1 1 1 but read as storing the 1 1 0 value introduce an error in thelower page 166 that are reflected in an associated error count. -
Curve 144 represents a histogram of memory elements for which the stored data value was 1 1 0, initially determinable from thereference voltages V a 122 andV b 124. That is, when the data was initially stored in the memory elements and represented by thecurve 134 of thegraph 120, the stored value of the data was 1 1 0, determined through use of thereference voltages V a 122 andV b 124. However, over time, thecurve 134 has changed shape to become thecurve 144. Thecurve 144 crosses over thereference voltage V a 122. As a result, some of the memory elements within thecurve 144 that had been initially programmed to 1 1 0 no longer appear between thereference voltages V a 122 andV b 124. A portion of thecurve 144 to the left ofreference voltage V a 122 represents memory elements that may be read as having a stored value of 1 1 1, according to themapping 160, instead of the originally stored value of 1 1 0. Thus, over time, the read values of some of the memory elements may be incorrect and may be counted as errors by theECC decoder 114. - When the reference voltages of the set of
reference voltages 116 are kept at theiroriginal values V a 122,V b 124, etc., reading the data values after a certain amount of time has passed may result in more errors in the read data values than if the set of reference voltages is updated. For example, a shaded area 176 (i.e., sum of areas undercurves reference voltages V a 122,V b 124, etc. as a result of thecurves original curves - In a particular embodiment, the
reference voltage V a 122 may be replaced by a modifiedreference voltage 172 that differs from thereference voltage V a 122 by an offset voltage ΔV. For example, a (dashed) vertical line representing modifiedreference voltage 172 may intersect the crossing point of thecurves curve 144 lies to the right of the modifiedreference voltage 172, and another portion of thecurve 144 lies to the left of the modifiedreference voltage 172. The sum of the areas of these portions is a measure of the error count associated with the modifiedreference voltage 172. There may a smaller error count associated with modifiedreference voltage 172 than the error count associated with thereference voltage 122. Typically a first reference voltage (represented by a first straight line) that does not pass through the intersection of two adjacent histogram curves has an associated error count that is larger than a second reference voltage (represented by a second straight line) that passes through the intersection of the two adjacent histogram curves. - Considering an alternate modified
reference voltage 174, a first region (of the curve 142) is right of the alternate modifiedreference voltage 174 and a second region (of the curve 144) is left of thereference voltage 174. The sum of the areas of first region and the second region corresponds to the error count associated with the alternate modifiedreference voltage 174. Of the threevoltages reference voltage 172 is closest to the intersection ofcurves - By adjusting the voltage of each reference voltage Va, Vb, etc., the count of read errors associated with each reference voltage may be reduced. Each of the reference voltages may be changed by adding or subtracting the same offset voltage ΔV from the original reference voltage (i.e., using a same value of ΔV) or by adding or subtracting different offset voltages (i.e., using different values of ΔV). By comparing the error count of data read errors associated with the
reference voltage V a 122 with the error count of data read errors associated with the modifiedreference voltage V 172, a selection of an updated reference voltage may be made that reduces the error count of data errors. Alternatively, by comparing the error count using thereference voltage V a 122 to the error count using the alternate modifiedreference voltage 174, an updated reference voltage may be selected that results in a reduction of the error count of data read errors. Alternatively, a selection of an updated reference voltage may be made from amongreference voltages - During operation, the
controller 108 may be configured to read first data values from the group ofmemory elements 107 using the set ofreference voltages 116 and to determine a first error count associated with a first reference voltage (e.g., a count of errors associated withV a 122, as described with respect toFIG. 2 ) of the set ofreference voltages 116. Thecontroller 108 may be configured to associate each error identified in the first data values with a corresponding reference voltage of the set ofreference voltages 107. Thecontroller 108 may be configured to read second data values from the group ofmemory elements 107 using a set of modified reference voltages and determine a modified error count associated with a modified first reference voltage (e.g., a count of errors associated withV − a 172, as described with respect toFIG. 2 ). Thecontroller 108 may be further configured to create an updated set of reference voltages that includes the firstreference voltage V a 122 or the modified first reference voltage V− a. 172 based on a comparison of the first error count to the second error count. - The
controller 108 may be further configured to determine a third error count associated with a second reference voltage, e.g.,V b 124 of the set ofreference voltages 107 and a fourth error count associated with a modified second reference voltage (e.g., Vb−ΔV.) Thecontroller 108 may be configured to include, in the updated set of reference voltages, the second reference voltage or the modified second reference voltage based on a comparison of the third error count to the fourth error count. Typically, the voltage (i.e., second reference voltage or modified second reference voltage) that is closest to the intersection of two intersecting histogram curves has the smaller associated error count. - As depicted in
FIG. 1 for a 3-bit per cell (BPC) MLC memory, the set of reference voltages may include seven reference voltages. For example, the seven reference voltages may be Vi (i=a, . . . g), as ingraphs memory elements 107 ofFIG. 1 may store three bits, as shown in themapping 160 ofFIG. 1 . However, in other embodiments, there may be 2 bits per cell (3 reference voltages), 4 bits per cell (15 reference voltages), or a different number of bits per cell. - An updated set of reference voltages may result in reduced errors associated with read data. Reduced errors may result in a longer useful life of the
data storage device 104. Additionally, the reduction in errors due to use of the updated set of references in reading the stored data may result in reduced processing at theECC decoder 114, which may result in reduced read latency experienced by thehost device 102. -
FIG. 2 is a diagram of a particular embodiment of a sensing scheme and includes a graphical depiction of a cell voltage distribution in a memory including multi-level storage elements. Agraph 210, corresponding to thegraph 120 ofFIG. 1 , depicts a histogram showing a number of memory elements versus threshold voltage. Each of thecurves curve 142 were originally programmed with the threshold voltage corresponding to thedata value 1 1 1, illustrated as thecurve 132 ofFIG. 1 . Over time, thecurve 132 ofFIG. 1 changed to thecurve 142, typically due to physical effects such as program disturb. -
Curve 144 corresponds to storage elements originally programmed to store the data value 110 (i.e., state A, according to themapping 160 ofFIG. 1 ). Similarly, the memory elements of each of the curves 146-156 have been programmed to a particular threshold voltage and corresponding stored data value, and each of the curves 142-156 in thegraph 210 represents a distribution of threshold voltages that has changed from a corresponding curve of thegraph 120 ofFIG. 1 . - Curves 142-146 and 150-156 include portions that cross over a reference voltage. For instance, the
curve 142 has a portion that lies to the right of thereference voltage V a 122 and another portion that lies to the left of thereference voltage V a 122. However, each of the memory elements represented in thecurve 142 was originally programmed to store thedata value 1 1 1 (i.e., thecurve 132 is entirely to the left of thereference voltage V a 122.) Hence, there will be errors in the read values (read by comparing a storage element's threshold voltage to the reference voltage Va 122) of the data stored in some of the memory elements represented by thecurve 142. Similarly, there will be errors in the read values of the data stored in some of the memory elements represented by the curves 144-146 and 150-156, because each of these curves crosses a reference voltage of the original set of reference voltages Va-Vg. Curve 148 lies entirely between the reference voltages Vc and Vd, as originally programmed. Therefore, there will be no errors in the read data for memory elements represented by thecurve 148. -
First data 212 may be read from thememory 106 by thecontroller 108 ofFIG. 1 and the read data may be output as an upper page, a middle page, and a lower page. For example, an initial portion of an output data stream may be the upper page, which is a stream of 1s and 0s that includes the uppermost bit extracted from the three-bit values read from each of the memory elements. That is, for each memory element, only the uppermost bit of the corresponding data value will be included in the upper page (i.e., each bit in theupper page 162 ofFIG. 1 of the read data value of a memory element). A second portion of the output data stream is themiddle page 164 that includes, for each memory element, the middle bit of the three-bit data value of each of the memory elements. A third portion of the output data stream includes alower page 166 that corresponds to the lowest bit of the three-bit data value of each of the memory elements. Each of the upper, middle, and lower pages may include an ECC code word that is decoded independently of the other pages. - The
ECC decoder 114 ofFIG. 1 may determine a count of errors associated with theupper page 162 of the read data. In themapping 160 ofFIG. 1 , there are only two transitional points in the upper page coding. That is, there are only two positions along the upper page of themapping 160 where the value changes from 1 to 0 or from 0 to 1, corresponding to reference voltages Vc and Vg. By receiving the read value of each of the memory elements, it is possible to determine that the most likely point of transition associated with the error(s) in the upper page reported by theECC decoder 114 ofFIG. 1 is either Vc or Vg. Thus, a total error count of the readout of the upper page of the group of memory elements, plus the read data value, is sufficient information to select a particular point of transition in theupper page 162 of themapping 160 associated with the errors. Specifically, a memory element that has an error in its upper page bit and that stores a “0” value in its lower page bit is most likely in state B (i.e., 1 0 0) or state C (i.e., 0 0 0) and the upper page error of the memory element is associated with reference voltage Vc. Similarly, a memory element that has an error in its upper page bit and that stores a “1” value in its lower page bit is most likely in state F (i.e., 0 0 1) or state G (i.e., 1 0 1) and the upper page error of the memory element is associated with reference voltage Vg. Similarly, a count of errors of the middle page of the read data and the read values of each of the memory elements is sufficient to associate the count of errors of the middle page with one of the reference voltages Vb, Vd, and Vf, and errors in the lower page of the read data are associated with one of Va, and Ve as may be determined through analysis of the read data values. - Thus, by analyzing the read data and the total error count for each of the upper page, middle page, and lower page of the read
data 212, an error count may be associated with each reference voltage Va-Vg. In the example shown inhistogram 210, Va has an associated error count of 6, Vb has an associated error count of 0, Vc has an associated error count of 2, Vd has an associated error count of 3, Ve has an associated error count of 3, Vf has an associated error count of 2, and Vg has an associated error count of 6. For each reference voltage, the associated error count may be determined as a sum of error counts represented by the area of each portion of the histogram curve extending beyond the line represented by the reference voltage. For instance, considering Va. 122, the error count contributed bycurve 142 is represented by the portion ofcurve 142 that is to the right ofV a 122 and the error count contributed bycurve 144 is represented by the portion ofcurve 144 that is to the left ofV a 122. The error count associated withV a 122 is the sum of the contributions fromcurves - A
graph 220 depicts a second histogram with a set of modified reference voltages V− a, V− b, etc. Each of the modified reference voltages has been determined by subtracting an offset voltage ΔV from a corresponding reference voltage. Each of the modified reference voltages V− a, V− b, V− g is formed by subtracting the same amount ΔV from a corresponding reference voltage. However, in other embodiments, each of the modified reference voltages may be formed by subtracting different offset voltages from each of the corresponding original reference voltages. - The modified reference voltages, when used to read out
second data 222 stored in the memory elements, results in modified error counts. For instance, modified reference voltage V− a has a modified error count of 4, as compared with reference voltage Va that has the error count of 6. The modified reference voltage V− e passes through the intersection of curves D and E and has a modified error count of 1, as compared with the original reference voltage Ve that has an error count of 3. - An updated set of reference voltages may be selected based on the
first data 212 and thesecond data 222 in order to reduce the error counts associated with the read data. For example, the modified reference voltage V− e may be an advantageous choice to include in the updated set of reference voltages instead of the reference voltage Ve because the modified error count associated with V− e is smaller than the error count associated with Ve. In another example, there may be a smaller error count associated with the reference voltage Ve (error count=2) than the modified error count associated with the modified reference voltage V− e (modified error count=3). Therefore, including the reference voltage Ve instead of the modified reference voltage V− e in the updated set of reference voltages may result in a reduced error count. Similarly, a comparison can be made of corresponding error counts of each reference voltage to the corresponding modified reference voltage. An updated set of reference voltages may be determined by selecting the smaller error count and including its associated reference voltage in the updated set of reference voltages. - Although the updated set of reference voltages may be determined based on the
first data 212 and thesecond data 222, in other implementations the updated set may be further determined based on one or more additional sets of modified reference voltages. Agraph 230 depicts a third histogram with alternate modified reference voltages that are determined by adding an offset voltage to each of the original reference voltages. For example, an alternate modified reference voltage V+ a may be formed by adding an offset voltage ΔV to the value Va of the original reference voltage Va. In similar fashion, alternate modified reference voltages can be formed from each of the original reference voltages Va, Vb, Vc, etc. by adding the offset voltage ΔV to the original reference voltage. The same offset voltage (ΔV) is added to each of the reference voltages. However, in other embodiments, the offset voltage added may be different for one or more reference voltages. Reading the storage elements using the alternate modified reference voltages results inthird data 232. Errors detected in each of the upper, middle, and lower pages of thethird data 232 may be attributed to the alternate modified reference voltages and a third set of associated counts (“read point error counts”) may be determined, each read point error count associated with a unique reference voltage. - An updated set of reference voltages may be determined by comparing, for each reference voltage, error counts of the reference voltage (of the graph 210), the modified reference voltage (of the graph 220), and the alternative modified reference voltage (of the graph 230). An updated set of reference voltages may include a selected one of Va, V− a, and V+ a based on a comparison of their respective error counts. For example, Va has an error count of 6, V− a has a modified error count of 4, and V+ a has an alternate modified error count of 7. Therefore, the modified reference voltage V− a may be selected to be included in the updated set of reference voltages based on a comparison of the error counts associated with each of Va, V− a, and V+ a. In another example, Vg has an error count of 6, V− g has a modified error count of 4, and V+ g has an alternated modified error count of 7. Therefore, V− g will be selected to be included in the updated set of reference voltages based on a comparison of the error counts associated with each of Vg, V− g, and V+ g In similar fashion, error counts associated with each reference voltage may be compared to the corresponding error counts associated with their corresponding modified reference voltage and alternate modified reference voltage. The selection of which of Vi, V− i, and V− i (i=a, . . . g) to include in the updated set of reference voltages may be based on a comparison of corresponding error counts. The updated set of reference voltages may result in fewer read errors of the data stored in the memory elements.
- A graphical depiction of errors associated with various choices of reference voltages is shown in a
histogram graph 270. Over time, thecurve 132, shown in thegraph 120 ofFIG. 1 , has evolved to thecurve 142. As a result, aportion 278 of thegraph 142 lies to the right of thereference voltage V a 122. Thecurve 134 of thegraph 120 ofFIG. 1 has evolved to thecurve 144. Aportion 276 of thegraph 144 lies to the left ofreference voltage V a 122. An error count associated withV a 122 corresponds to a sum of areas of theportion 278 and theportion 276. - A modified error count associated with the modified
reference voltage V − a 172 corresponds to a sum of areas of a portion 274 (i.e., the portion of thecurve 142 to the right of V− a 172) and a portion 272 (i.e., portion of thecurve 144 to the left of V− a 172). An alternate modified error count associated with the alternate modifiedreference voltage V + a 174 corresponds to a sum of areas of a portion 282 (i.e., the portion of thecurve 142 to the right of V+ a 172) and a portion 280 (i.e., portion of thecurve 144 to the left of V+ a 172). - Selection of an updated reference voltage from 122, 172, or 174 to be included in an updated set of reference voltages can be made by determining the smallest of the associated error counts and including the corresponding reference voltage (i.e., 122, 172, or 174) in the updated set of reference voltages. The updated set of reference voltages may result in a reduced error count associated with reading the data stored in the memory elements.
-
FIG. 3 is a flow diagram illustrating a particular embodiment of a method of updating reference voltages based on a comparison of error counts. First data values are read from a group of memory elements using an initial set of reference voltages, at 302. For example, the group of memory elements may be in thenon-volatile memory 106 ofFIG. 1 , such as a flash memory. The first data values may include thefirst data 212 ofFIG. 2 . - A first error count associated with a first reference voltage of the initial set of reference voltages is determined, at 304. To illustrate, the first error count may correspond to errors associated with Va of
FIG. 2 (i.e., error count of 6). Second data values are read from the group of memory elements using a set of modified reference voltages, at 306 (e.g., thesecond data 222 ofFIG. 2 .) A modified error count associated with a modified first reference voltage is determined, at 308. To illustrate, the modified error count may be associated with V− a ofFIG. 2 (i.e., error count of 4). An updated set of reference voltages is created, including the first reference voltage or the modified first reference voltage based on a comparison of the first error count to the modified error count, at 310. To illustrate, inFIG. 2 the error count of 6 for Va is greater than the modified error count of 4 for V− a, and therefore V− a is selected to be included in the updated set of reference voltages. Similarly for all remaining reference voltages, selection of the corresponding updated reference voltage may be made by comparing the error count of the reference voltage to the error count of the corresponding modified reference voltage. The method ends at 312. The updated set of reference voltages may be stored in thememory 106 ofFIG. 1 and may replace the set ofreference voltages 116. The updated set of reference voltages stored in thememory 106 may be used to read the data values stored in the group ofmemory elements 107 ofFIG. 1 . For example, the updated set of reference voltages may be sent from thecontroller 108 to thememory 106 and may be stored in thememory 106, where the updated set of reference voltages is available for reading the stored data values in the group ofmemory elements 107. - In another example of updating a reference voltage of the set of reference voltages, a second error count associated with a second reference voltage of the set of reference voltages may be determined. For example, at the
graph 210 ofFIG. 2 , an error count of 3 is associated with Ve. A modified second error count may be determined that is associated with a modified second reference voltage. For example, at thegraph 220 ofFIG. 2 , a modified error count of 1 is associated with V− e. The second reference voltage (i.e., Ve) or the modified second reference voltage (i.e., V− e) may be included in the updated set of reference voltages based on a comparison of the second error count to the modified second error count. For example, inFIG. 2 , the error count of 1 for V− e is less than the error count of 3 for Ve, and therefore V− e is selected to be included in the updated set of reference voltages. - Errors in the first data values and errors in the second data values may be identified by an ECC decoder, such as the
ECC decoder 114 ofFIG. 1 . The first data values may be read from multiple logical pages, each logical page being decoded by theECC decoder 114 ofFIG. 1 . Further, the second data values may be read from multiple logical pages, each logical page being decoded at theECC decoder 114 ofFIG. 1 . Errors may be determined by theECC decoder 114, e.g., after each logical page of data is read, after a block of data that includes multiple logical pages is read, when an expected movement in one or more of the reference voltages exceeds a threshold value, e.g., X millivolts, after a defined number of reads and/or writes to thememory 106, when a count of read errors exceeds a threshold error count, or in response to another condition. - The set of reference voltages may include seven reference voltages. For example, the seven reference voltages may be Vi (i=a, . . . g), as in
graphs FIG. 1 and thegraph 210 ofFIG. 2 . Each memory element may store three bits. For example, each memory element of the group ofmemory elements 107 ofFIG. 1 may store three bits, as shown in themapping 160 ofFIG. 1 . In other implementations, each memory element of a group of memory elements may store less than three bits or more than three bits. For example, memory elements may store 2 bits per cell (to be read using 3 reference voltages), memory elements may store 4 bits per cell (to be read using 15 reference voltages), etc. - For each reference voltage of the set of reference voltages, a corresponding error count may be determined. For example, for each of the reference voltages Vi (i=a, . . . g) of the
graph 212 ofFIG. 2 , a corresponding error count is determined. For each of the reference voltages of the set of reference voltages a corresponding modified reference voltage may be determined by adding an offset voltage (i.e., a negative offset voltage or a positive offset voltage) to the reference voltage. For example, thegraph 220 ofFIG. 2 shows a set of modified reference voltages V− i (i=a, . . . g) determined by adding a negative offset voltage to (i.e., subtracting ΔV from) the corresponding reference voltage Vi (i=a, . . . g) and thegraph 230 ofFIG. 2 shows a set of alternate modified reference voltages V+ i (i=a, . . . g) determined by adding the offset voltage ΔV to each reference voltage Vi (i=a, . . . g). A modified error count associated with each modified reference voltage may be determined. For example, thegraph 220 ofFIG. 2 shows the modified error count associated with each of the modified reference voltages V− i (i=a, . . . g), and thegraph 230 shows the alternate modified error count associated with each of the alternate modified reference voltages V+ i (i=a, . . . g). The reference voltage or the modified reference voltage may be included in the updated set of reference voltages based on a comparison of the corresponding error count to the corresponding modified error count. For example, by comparing the error count (error count of Ve =3) of Ve shown in thegraph 210 ofFIG. 2 to the modified error count of V− e (modified error count of V− e=1) shown in thegraph 220 ofFIG. 2 , V− e may be selected to be included in the updated set of reference voltages because V− e has a smaller associated error count. The updated set of reference voltages may be stored in thememory 106 ofFIG. 1 , replacing the set ofreference voltages 116. - The
method 300 may also include reading alternate data values from the group of memory elements using a set of alternate modified reference voltages and determining an alternate modified error count associated with an alternate modified first reference voltage of the set of alternate modified reference voltages, such as the set of alternate modified reference voltages V+ i (i=a, . . . g) of thegraph 230 ofFIG. 2 . The updated set of reference voltages may be changed or defined to include the first reference voltage, the modified first reference voltage, or the alternate modified first reference voltage based on a comparison of the first error count, the modified error count, and the alternate modified error count. For example, as shown in thegraphs FIG. 2 , an error count (=3) is associated with Ve, a modified error count (=1) is associated with V− e, and an alternate modified error count (=4) is associated with V+ e. An updated set of reference voltages may be changed or defined to include V− e based on a comparison of the corresponding error count associated with each of Ve, V− 3, and V+ e. - By selecting each updated reference voltage based on a comparison of associated error counts, a total number of errors associated with reading data stored in memory may be reduced when reading data using the updated set of reference voltages. Updating the set of reference voltages can be accomplished during operation of a data storage device (e.g., after a defined number of read/write cycles, upon detecting that an expected movement in reference voltages exceeds a threshold value, in response to a periodic or aperiodic analysis of error counts, e.g., an error count exceeding an error count threshold, or in response to another indicator. Updating the set of reference voltages on a repeating basis can be advantageous in that the updating may compensate for increases in error counts due changes in the threshold voltages of some of the memory elements “on the fly.” Reducing errors in data read from memory may extend the useful life of the memory and may result in reduced read latency.
-
FIG. 4 is a flow diagram illustrating another particular embodiment of a method of updating reference voltages based on a comparison of error counts, and is generally designated 400. A default set of reference voltages Vi (i=a, b, . . . g) and an offset voltage ΔV=X millivolts (mV) where X is a threshold quantity, are established, at 402. Data is retained/cycled as part of normal operations in a non-volatile memory, at 404. A determination is made (e.g., in thecontroller 108 ofFIG. 1 ) as to whether an expected movement in the reference voltages exceeds X mV, at 406. If the expected movement in each of the reference voltages does not exceed X mV, returning to 404, data cycling/retention in the non-volatile memory continues. If the expected movement in any of the reference voltages exceeds X mV, training is started with regard to the reference voltages, at 408. - Three pages of data (lower, middle, upper) are read, at 410. For each page, ECC decoding is performed to find page errors, and the page errors may be split into read point error counts (Ea, Eb, Ec, Ed, Ee, Ef, Eg), at 412. For example, in the
graph 210 ofFIG. 2 , each read point error count (Ea, Eb, Ec, Ed, Ee, Ef, Eg) is the error count associated with the corresponding reference voltage Vi (i=a, b, . . . g). Each modified reference voltage is calculated as (reference voltage −ΔV), at 414. For example, in thegraph 220 ofFIG. 2 , the modified reference voltage V− a is calculated as Va−ΔV. - The three pages of data are again read using the modified reference voltages to determine the read data, at 416. The page errors may be determined by an ECC decoder such as the
ECC decoder 114 ofFIG. 1 . For each page, ECC decoding is performed to find page errors, and the page errors may be split into read point error counts (E− a, E− b, E− c, E− d, E− e, E− f, E− g), at 418. For example, the read errors associated with V− a may be determined, the read errors associated with V− b, may be determined, etc. - An alternate modified reference voltage may be determined from the reference voltage by adding ΔV to the reference voltage, at 420. Each of the three pages may be read again using the alternate modified reference voltages, at 422. The read data is sent to an ECC decoder, such as the
ECC decoder 114 ofFIG. 1 , and errors may be determined. For each page, ECC decoding is performed to find page errors, and the page errors may be split into read point error counts (E+ a, E+ b, E+ c, E+ d, E+ e, E+ f, E+ g), at 424. - For each Vi (i=a, b, . . . g), a smallest of the determined read point error counts may be selected from among the read point error count Ei (associated with the reference voltage Vi), the read point error count E− i (associated with the modified reference voltage V− i) and the read point error count E+ i (associated with the alternate modified reference voltage V+ i), at 426. The smallest of the read point error counts Ei, E− i, and E+ i is determined for each i=a, b, . . . g. An updated reference voltage associated with the smallest of the read point error counts Ei, E− i, and E− i is included in an updated set of reference voltages. If the smallest of the read point error counts Ei, E−i, and E− i is associated with the reference voltage Vi, then the reference voltage is not changed and an updated set of reference voltages includes the original reference voltage. If the smallest of the three read point error counts Ei, E− i, and E+ i is E− i, an updated Vi is set equal to Vi−ΔV, at 428. If the smallest of the three read point error counts Ei, E− i, and E+ i is E+ i, the updated reference voltage Vi is set equal to Vi+ΔV, at 430. The method returns to 404, where the memory operations continue using the updated set of reference voltages. For example, the updated set of reference voltages may be stored in the
memory 106 ofFIG. 1 and may replace the set ofreference voltages 116. The updated set of reference voltages stored in thecontroller 108 may be used to read the data values stored in thememory 106 ofFIG. 1 . For instance, the updated set of reference voltages may be sent from thecontroller 108 to thememory 106 and may be stored in thememory 108, where the updated set of reference voltages is available for reading the stored data values in the group ofmemory elements 107. - The
method 400 may be used to reduce error counts of read data. By selecting each updated reference voltage based on a comparison of associated error counts, a total number of errors associated with reading data stored in memory may be reduced. An additional advantage of reducing the error count may be a reduction in the load of the ECC decoder, which may result in faster data reads. - Although various components depicted herein are illustrated as block components and described in general terms, such components may include one or more microprocessors, state machines, or other circuits configured to enable a data storage device, such as the
data storage device 104 ofFIG. 1 , to perform the particular functions attributed to such components. For example, theadaptive voltage engine 118 ofFIG. 1 may represent physical components, such as controllers, processors, state machines, logic circuits, or other structures to create an updated set of reference voltages. - The
adaptive voltage engine 118 may be implemented using a microprocessor or microcontroller programmed to generate control information and to create the updated set of reference voltages by reading a first set of data using a set of reference voltages and determining a read point error count associated with each reference voltage, reading a second set of data using modified reference voltages and determining a read point error count associated with each modified reference voltage, and for each reference voltage, selecting the reference voltage or the modified reference voltage to be included in the updated set of reference voltages based on a comparison of the read point error count of the reference voltage to the read point error count of the modified reference voltage. In a particular embodiment, thecontroller 108 includes a processor that executes instructions that are stored at thememory 106. Alternatively, or in addition, instructions that are executable by the processor may be stored at a separate memory location that is not part of thememory 106, such as at a read-only memory (ROM). - In a particular embodiment, the
data storage device 104 may be a portable device configured to be selectively coupled to one or more external devices. For example, thedata storage device 104 may be a removable device such as a universal serial bus (USB) flash drive or a removable memory card. However, in other embodiments, thedata storage device 104 may be attached or embedded within one or more host devices, such as within a housing of a portable communication device. For example, thedata storage device 104 may be within a packaged apparatus, such as a wireless telephone, a personal digital assistant (PDA), a gaming device or console, a portable navigation device, a computer, or other device that uses internal non-volatile memory. In a particular embodiment, thedata storage device 104 includes a non-volatile memory, such as a Flash memory (e.g., NAND, NOR, Multi-Level Cell (MLC), Divided bit-line NOR (DINOR), AND, high capacitive coupling ratio (HiCR), asymmetrical contactless transistor (ACT), or other Flash memories), an erasable programmable read-only memory (EPROM), an electrically-erasable programmable read-only memory (EEPROM), a read-only memory (ROM), a one-time programmable memory (OTP), or any other type of memory. - The illustrations of the embodiments described herein are intended to provide a general understanding of the various embodiments. Other embodiments may be utilized and derived from the disclosure, such that structural and logical substitutions and changes may be made without departing from the scope of the disclosure. This disclosure is intended to cover any and all subsequent adaptations or variations of various embodiments.
- The above-disclosed subject matter is to be considered illustrative, and not restrictive, and the appended claims are intended to cover all such modifications, enhancements, and other embodiments, which fall within the scope of the present disclosure. Thus, to the maximum extent allowed by law, the scope of the present invention is to be determined by the broadest permissible interpretation of the following claims and their equivalents, and shall not be restricted or limited by the foregoing detailed description.
Claims (21)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN2024CH2012 | 2012-05-22 | ||
IN2024/CHE/2012 | 2012-05-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
US20130314988A1 true US20130314988A1 (en) | 2013-11-28 |
US8605502B1 US8605502B1 (en) | 2013-12-10 |
Family
ID=49621492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/523,680 Active US8605502B1 (en) | 2012-05-22 | 2012-06-14 | Systems and methods of updating read voltages |
Country Status (1)
Country | Link |
---|---|
US (1) | US8605502B1 (en) |
Cited By (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150294739A1 (en) * | 2014-04-10 | 2015-10-15 | Lsi Corporation | Online histogram and soft information learning |
US9520197B2 (en) | 2013-11-22 | 2016-12-13 | Sandisk Technologies Llc | Adaptive erase of a storage device |
US9524235B1 (en) | 2013-07-25 | 2016-12-20 | Sandisk Technologies Llc | Local hash value generation in non-volatile data storage systems |
US9582058B2 (en) | 2013-11-29 | 2017-02-28 | Sandisk Technologies Llc | Power inrush management of storage devices |
US9612948B2 (en) | 2012-12-27 | 2017-04-04 | Sandisk Technologies Llc | Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device |
US9626400B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Compaction of information in tiered data structure |
US9626399B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Conditional updates for reducing frequency of data modification operations |
US9639463B1 (en) | 2013-08-26 | 2017-05-02 | Sandisk Technologies Llc | Heuristic aware garbage collection scheme in storage systems |
US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
US9697267B2 (en) | 2014-04-03 | 2017-07-04 | Sandisk Technologies Llc | Methods and systems for performing efficient snapshots in tiered data structures |
US9699263B1 (en) | 2012-08-17 | 2017-07-04 | Sandisk Technologies Llc. | Automatic read and write acceleration of data accessed by virtual machines |
US9703491B2 (en) | 2014-05-30 | 2017-07-11 | Sandisk Technologies Llc | Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device |
US9703816B2 (en) | 2013-11-19 | 2017-07-11 | Sandisk Technologies Llc | Method and system for forward reference logging in a persistent datastore |
US9703636B2 (en) | 2014-03-01 | 2017-07-11 | Sandisk Technologies Llc | Firmware reversion trigger and control |
US9799405B1 (en) | 2015-07-29 | 2017-10-24 | Ip Gem Group, Llc | Nonvolatile memory system with read circuit for performing reads using threshold voltage shift read instruction |
US9813080B1 (en) | 2013-03-05 | 2017-11-07 | Microsemi Solutions (U.S.), Inc. | Layer specific LDPC decoder |
US9870830B1 (en) * | 2013-03-14 | 2018-01-16 | Sandisk Technologies Llc | Optimal multilevel sensing for reading data from a storage medium |
US9886214B2 (en) | 2015-12-11 | 2018-02-06 | Ip Gem Group, Llc | Nonvolatile memory system with erase suspend circuit and method for erase suspend management |
US9892794B2 (en) | 2016-01-04 | 2018-02-13 | Ip Gem Group, Llc | Method and apparatus with program suspend using test mode |
US9899092B2 (en) | 2016-01-27 | 2018-02-20 | Ip Gem Group, Llc | Nonvolatile memory system with program step manager and method for program step management |
US10114557B2 (en) | 2014-05-30 | 2018-10-30 | Sandisk Technologies Llc | Identification of hot regions to enhance performance and endurance of a non-volatile storage device |
US10146448B2 (en) | 2014-05-30 | 2018-12-04 | Sandisk Technologies Llc | Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device |
US10157677B2 (en) | 2016-07-28 | 2018-12-18 | Ip Gem Group, Llc | Background reference positioning and local reference positioning using threshold voltage shift read |
US10162748B2 (en) | 2014-05-30 | 2018-12-25 | Sandisk Technologies Llc | Prioritizing garbage collection and block allocation based on I/O history for logical address regions |
US10230396B1 (en) | 2013-03-05 | 2019-03-12 | Microsemi Solutions (Us), Inc. | Method and apparatus for layer-specific LDPC decoding |
US10236915B2 (en) | 2016-07-29 | 2019-03-19 | Microsemi Solutions (U.S.), Inc. | Variable T BCH encoding |
US10291263B2 (en) | 2016-07-28 | 2019-05-14 | Ip Gem Group, Llc | Auto-learning log likelihood ratio |
CN109840047A (en) * | 2017-11-27 | 2019-06-04 | 华为技术有限公司 | It is a kind of to reduce the method and device for reading delay |
US10332613B1 (en) | 2015-05-18 | 2019-06-25 | Microsemi Solutions (Us), Inc. | Nonvolatile memory system with retention monitor |
US10372613B2 (en) | 2014-05-30 | 2019-08-06 | Sandisk Technologies Llc | Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device |
US10656842B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device |
US10656840B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Real-time I/O pattern recognition to enhance performance and endurance of a storage device |
US11216323B2 (en) * | 2015-09-16 | 2022-01-04 | Samsung Electronics Co., Ltd. | Solid state memory system with low power error correction mechanism and method of operation thereof |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9697905B2 (en) | 2013-05-31 | 2017-07-04 | Sandisk Technologies Llc | Updating read voltages using syndrome weight comparisons |
US9728263B2 (en) | 2013-05-31 | 2017-08-08 | Sandisk Technologies Llc | Method and device for iteratively updating read voltages |
US10475523B2 (en) | 2013-05-31 | 2019-11-12 | Western Digital Technologies, Inc. | Updating read voltages triggered by the rate of temperature change |
US9645763B2 (en) | 2014-01-13 | 2017-05-09 | Seagate Technology Llc | Framework for balancing robustness and latency during collection of statistics from soft reads |
KR102238592B1 (en) | 2014-08-08 | 2021-04-09 | 삼성전자주식회사 | Method of setting default read voltage of non-volatile memory device and method of reading data of non-volatile memory device |
US10140055B2 (en) * | 2015-12-21 | 2018-11-27 | Memory Technologies Llc | Ensuring that memory device actions are valid using reference values |
US10558381B2 (en) | 2016-12-16 | 2020-02-11 | Sandisk Technologies Llc | Dynamic read table generation |
US10418097B2 (en) | 2017-11-27 | 2019-09-17 | Western Digital Technologies, Inc. | Non-volatile storage system with read calibration |
US10811091B2 (en) | 2018-10-12 | 2020-10-20 | Western Digital Technologies, Inc. | Adaptive processing for read threshold voltage calibration |
US11907571B2 (en) | 2020-07-13 | 2024-02-20 | SK Hynix Inc. | Read threshold optimization systems and methods using domain transformation |
US11355204B2 (en) | 2020-09-03 | 2022-06-07 | SK Hynix Inc. | Efficient read-threshold calculation method for parametric PV-level modeling |
US11430530B2 (en) | 2021-01-25 | 2022-08-30 | SK Hynix Inc. | Deep learning based program-verify modeling and voltage estimation for memory devices |
US11514999B2 (en) | 2021-04-16 | 2022-11-29 | SK Hynix Inc. | Systems and methods for parametric PV-level modeling and read threshold voltage estimation |
US11749354B2 (en) | 2021-07-13 | 2023-09-05 | SK Hynix Inc. | Systems and methods for non-parametric PV-level modeling and read threshold voltage estimation |
US11769555B2 (en) | 2021-07-27 | 2023-09-26 | SK Hynix Inc. | Read threshold voltage estimation systems and methods for parametric PV-level modeling |
US11769556B2 (en) | 2021-07-27 | 2023-09-26 | SK Hynix Inc. | Systems and methods for modeless read threshold voltage estimation |
US11854629B2 (en) | 2021-11-22 | 2023-12-26 | SK Hynix Inc. | System and method for non-parametric optimal read threshold estimation using deep neural network |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7911834B2 (en) * | 2006-05-15 | 2011-03-22 | Apple Inc. | Analog interface for a flash memory die |
US7941590B2 (en) | 2006-11-06 | 2011-05-10 | Marvell World Trade Ltd. | Adaptive read and write systems and methods for memory cells |
US7876621B2 (en) | 2007-04-23 | 2011-01-25 | Sandisk Il Ltd. | Adaptive dynamic reading of flash memories |
KR101391362B1 (en) | 2008-07-23 | 2014-05-07 | 삼성전자주식회사 | Flash memory system configuring reading voltage level and configuration method of reading voltage level |
-
2012
- 2012-06-14 US US13/523,680 patent/US8605502B1/en active Active
Cited By (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9699263B1 (en) | 2012-08-17 | 2017-07-04 | Sandisk Technologies Llc. | Automatic read and write acceleration of data accessed by virtual machines |
US9612948B2 (en) | 2012-12-27 | 2017-04-04 | Sandisk Technologies Llc | Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device |
US9813080B1 (en) | 2013-03-05 | 2017-11-07 | Microsemi Solutions (U.S.), Inc. | Layer specific LDPC decoder |
US10230396B1 (en) | 2013-03-05 | 2019-03-12 | Microsemi Solutions (Us), Inc. | Method and apparatus for layer-specific LDPC decoding |
US9870830B1 (en) * | 2013-03-14 | 2018-01-16 | Sandisk Technologies Llc | Optimal multilevel sensing for reading data from a storage medium |
US9524235B1 (en) | 2013-07-25 | 2016-12-20 | Sandisk Technologies Llc | Local hash value generation in non-volatile data storage systems |
US9639463B1 (en) | 2013-08-26 | 2017-05-02 | Sandisk Technologies Llc | Heuristic aware garbage collection scheme in storage systems |
US9703816B2 (en) | 2013-11-19 | 2017-07-11 | Sandisk Technologies Llc | Method and system for forward reference logging in a persistent datastore |
US9520197B2 (en) | 2013-11-22 | 2016-12-13 | Sandisk Technologies Llc | Adaptive erase of a storage device |
US9582058B2 (en) | 2013-11-29 | 2017-02-28 | Sandisk Technologies Llc | Power inrush management of storage devices |
US9703636B2 (en) | 2014-03-01 | 2017-07-11 | Sandisk Technologies Llc | Firmware reversion trigger and control |
US9626399B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Conditional updates for reducing frequency of data modification operations |
US9626400B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Compaction of information in tiered data structure |
US9697267B2 (en) | 2014-04-03 | 2017-07-04 | Sandisk Technologies Llc | Methods and systems for performing efficient snapshots in tiered data structures |
US20150294739A1 (en) * | 2014-04-10 | 2015-10-15 | Lsi Corporation | Online histogram and soft information learning |
US10146448B2 (en) | 2014-05-30 | 2018-12-04 | Sandisk Technologies Llc | Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device |
US9703491B2 (en) | 2014-05-30 | 2017-07-11 | Sandisk Technologies Llc | Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device |
US10114557B2 (en) | 2014-05-30 | 2018-10-30 | Sandisk Technologies Llc | Identification of hot regions to enhance performance and endurance of a non-volatile storage device |
US10656840B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Real-time I/O pattern recognition to enhance performance and endurance of a storage device |
US10162748B2 (en) | 2014-05-30 | 2018-12-25 | Sandisk Technologies Llc | Prioritizing garbage collection and block allocation based on I/O history for logical address regions |
US10656842B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device |
US10372613B2 (en) | 2014-05-30 | 2019-08-06 | Sandisk Technologies Llc | Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device |
US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
US10332613B1 (en) | 2015-05-18 | 2019-06-25 | Microsemi Solutions (Us), Inc. | Nonvolatile memory system with retention monitor |
US9799405B1 (en) | 2015-07-29 | 2017-10-24 | Ip Gem Group, Llc | Nonvolatile memory system with read circuit for performing reads using threshold voltage shift read instruction |
US11216323B2 (en) * | 2015-09-16 | 2022-01-04 | Samsung Electronics Co., Ltd. | Solid state memory system with low power error correction mechanism and method of operation thereof |
US9886214B2 (en) | 2015-12-11 | 2018-02-06 | Ip Gem Group, Llc | Nonvolatile memory system with erase suspend circuit and method for erase suspend management |
US10152273B2 (en) | 2015-12-11 | 2018-12-11 | Ip Gem Group, Llc | Nonvolatile memory controller and method for erase suspend management that increments the number of program and erase cycles after erase suspend |
US9892794B2 (en) | 2016-01-04 | 2018-02-13 | Ip Gem Group, Llc | Method and apparatus with program suspend using test mode |
US9899092B2 (en) | 2016-01-27 | 2018-02-20 | Ip Gem Group, Llc | Nonvolatile memory system with program step manager and method for program step management |
US10291263B2 (en) | 2016-07-28 | 2019-05-14 | Ip Gem Group, Llc | Auto-learning log likelihood ratio |
US10283215B2 (en) | 2016-07-28 | 2019-05-07 | Ip Gem Group, Llc | Nonvolatile memory system with background reference positioning and local reference positioning |
US10157677B2 (en) | 2016-07-28 | 2018-12-18 | Ip Gem Group, Llc | Background reference positioning and local reference positioning using threshold voltage shift read |
US10236915B2 (en) | 2016-07-29 | 2019-03-19 | Microsemi Solutions (U.S.), Inc. | Variable T BCH encoding |
CN109840047A (en) * | 2017-11-27 | 2019-06-04 | 华为技术有限公司 | It is a kind of to reduce the method and device for reading delay |
EP3702897A4 (en) * | 2017-11-27 | 2020-12-16 | Huawei Technologies Co., Ltd. | Method and device for reducing reading latency |
US11210210B2 (en) | 2017-11-27 | 2021-12-28 | Huawei Technologies Co., Ltd. | Read latency reduction method and apparatus |
Also Published As
Publication number | Publication date |
---|---|
US8605502B1 (en) | 2013-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8605502B1 (en) | Systems and methods of updating read voltages | |
US8811076B2 (en) | Systems and methods of updating read voltages | |
US8874992B2 (en) | Systems and methods to initiate updating of reference voltages | |
US8838883B2 (en) | System and method of adjusting a programming step size for a block of a memory | |
US8683297B2 (en) | Systems and methods of generating a replacement default read threshold | |
US8811081B2 (en) | Systems and methods of updating read voltages in a memory | |
US9070479B2 (en) | Systems and methods of updating read voltages | |
US9318215B2 (en) | Systems and methods to update reference voltages of non-volatile memory | |
US9025374B2 (en) | System and method to update read voltages in a non-volatile memory in response to tracking data | |
US9153331B2 (en) | Tracking cell erase counts of non-volatile memory | |
US20150085571A1 (en) | Updating read voltages | |
US8737130B2 (en) | System and method of determining a programming step size for a word line of a memory | |
US9349489B2 (en) | Systems and methods to update reference voltages in response to data retention in non-volatile memory | |
US9129689B2 (en) | Tracking erase pulses for non-volatile memory | |
US9063879B2 (en) | Inspection of non-volatile memory for disturb effects | |
US20140281685A1 (en) | Probability-based remedial action for read disturb effects | |
US9406385B2 (en) | Apparatus and method of storing data at a multi-bit storage element | |
US20120224421A1 (en) | System and method of decoding data from memory based on sensing information and decoded data of neighboring storage elements |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: SANDISK TECHNOLOGIES INC., TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:DESIREDDI, SATEESH;NARADASI, JAYAPRAKASH;VENKITACHALAM, ANAND;REEL/FRAME:028379/0347 Effective date: 20120614 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: SANDISK TECHNOLOGIES LLC, TEXAS Free format text: CHANGE OF NAME;ASSIGNOR:SANDISK TECHNOLOGIES INC;REEL/FRAME:038807/0898 Effective date: 20160516 |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |