Embodiments of the present disclosure generally relate to reading data from a non-volatile memory, and more particularly to error correction during a read operation from a non-volatile memory.
When data is written to a solid-state memory, such as a flash memory, the data isn't always stored in the manner intended. Transistors, such as floating gate transistors, may be loaded with different amounts of charge, for example, due to heat in the device, the passage of time, location of a memory component on a die, natural degradation of charge, and a variety of other causes of change in charge. Change in charge within a transistor introduces errors into the information stored in the flash memory, resulting in bit error rate (BER), a metric known to those of skill in the art of solid-state memory devices (SSDs).
One method to solve BER is the cell voltage distribution (CVD) model to identify errors in cells. Using CVD, the cells in a physical memory page are modeled to incorporate different attributes of different cells, in order to determine a threshold voltage at which a cell has a high probability of containing a bit of information. CVD models different groups of cells at different peak voltages. Different peak voltages may apply to different groups of cells due to a variety of factors such as location of a group on a page relative to a die boundary layer, cell groups at different temperatures, cell content of cell groups.
Once cells are grouped using CVD, a number of cells are sampled to determine the lowest threshold in a group that can distinguish between cells containing a low or high bit.
During a data read, thresholds for multiple groups and the voltage readings from each cell in concomitant groups are provided to a decoder. The decoder attempts to provide the intended data value from a cell to a host, and if an error is detected, correct the error.
However, decoders may only be able to fix a limited number of errors. For example, a low density parity check decoder (LDPC) can decode 4k bytes, it can only correct 400 errors, whereas a page may contain 16k bytes of data. In some circumstances, such as high device heat, the number of errors may overwhelm the LDPC's ability to correct errors.
Given that modern SSDs are constantly relocating data in a series of read and write operations, the need to detect and correct errors at scale becomes increasingly important as the amount of data on the device increases.
What is needed is a system and method to provide more accurate data to the LDPC so that a correct data value for a cell may be determined, to avoid generation of errors that need to be corrected.
The present disclosure uses a previously written version of the current data being read as input to a decoder, to increase the probability of reading a correct value from a cell. When the current version of the data is being read by the SSD from a NAND, the data is read as a hard-bit. Using header information, the SSD reads a previously written version of the data as soft-bits. A decoder uses the hard-bits and soft-bits to determine the value of a data bit from a cell. As the cell values from a previously written version of the data are used as soft-bits, the probability that the decoder will return the proper value for the cell is increased.
In one embodiment, a data storage device is disclosed. The data storage device includes a memory and a controller configured to perform a method of error correction. In embodiments, the method includes relocating original data to a different location in the memory to create current data, receiving a request from a host for current data, reading current data from memory as hard-bits, and reading the original data as soft-bits. The hard-bits and soft-bits are provided to a decoder, and the decoder decodes the current data using the hard-bits and soft-bits in some embodiments, and then the decoded current data is provided to the hose.
In another embodiment, a data storage device is disclosed. The data storage device includes an interface configured to communicate with a host, a memory, and a decoder communicatively coupled to the host via the interface. In embodiments the decoder may be configured to obtain current data voltage values in the memory, obtain original data voltage values from cells in the memory. The decoder may be further configured to decode the current data voltage values, using original data voltage values for error detection, in some embodiments. The decoded data may provided to the host.
In another embodiment, a system for error correction in a data storage device. In embodiments, the system includes a memory means comprising original data comprising soft-bits and current data comprising hard-bits, a decoder means configured to receive the hard-bits and soft-bits. The decoder may be further configured to decode the hard-bits and soft-bits to generate data. An interface means provides the data to a host.
So that the manner in which the above recited features of the present disclosure can be understood in detail, a more particular description of the disclosure, briefly summarized above, may be had by reference to embodiments, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only typical embodiments of this disclosure and are therefore not to be considered limiting of its scope, for the disclosure may admit to other equally effective embodiments.
To facilitate understanding, identical reference numerals have been used, where possible, to designate identical elements that are common to the figures. It is contemplated that elements disclosed in one embodiment may be beneficially utilized on other embodiments without specific recitation.
In the following, reference is made to embodiments of the disclosure. However, it should be understood that the disclosure is not limited to specific described embodiments. Instead, any combination of the following features and elements, whether related to different embodiments or not, is contemplated to implement and practice the disclosure. Furthermore, although embodiments of the disclosure may achieve advantages over other possible solutions and/or over the prior art, whether or not a particular advantage is achieved by a given embodiment is not limiting of the disclosure. Thus, the following aspects, features, embodiments and advantages are merely illustrative and are not considered elements or limitations of the appended claims except where explicitly recited in a claim(s). Likewise, reference to “the disclosure” shall not be construed as a generalization of any inventive subject matter disclosed herein and shall not be considered to be an element or limitation of the appended claims except where explicitly recited in a claim(s).
The present disclosure uses a previously written version of the current data being read as input to a decoder, to increase the probability of reading a correct value from a cell. When the current version of the data is being read by the SSD from a NAND, the data is read as a hard-bit. Using header information, the SSD reads a previously written version of the data as soft-bits. A decoder uses the hard-bits and soft-bits to determine the value of a data bit from a cell. As the cell values from a previously written version of the data are used as soft-bits, the probability that the decoder will return the proper value for the cell is increased.
Within a SSD device, NAND packages consist of dies, that include planes, which contain blocks, which in turn contain pages. Within pages are individual cells that store bits of data, and each bit may be stored in a transistor, such as a floating gate transistor. A bit of data in a transistor is represented as a voltage level in the transistor. Although a device has a typical voltage level for different bits of data, the actual voltage in a cell may vary from a reference or expected voltage. Variations in cell voltage may be due to temperature of the cell, location of the cell on the die (e.g. location near an edge of the die vs near the center), manufacturing anomalies, degradation of voltage due to the natural loss of charge over time, and a variety of other factors.
When the SSD performs a read operation, such as when a host device requests data or when data is relocated on a NAND within the SSD, or other device or component requests data from the SSD, the SSD detects voltages in a cell to effectuate the read. A hard-bit is a voltage at/above a reference voltage indicating that the data value stored is a particular value (e.g. 1 or 0) with very high probability. A soft-bit is a voltage measured at a fractional reference voltage, indicating that the data value in the cell has a good probability of being a particular value (e.g. a 1 or 0). A decoder, such as a low density parity check decoder (LDPC), uses the hard-bits and soft-bits to ‘decode’ the data value of a cell to determine a stored value (e.g. 1 or 0) to return in response to a data request. In the event a value cannot be determined, or an incorrect value is determined (e.g. via CRC), an error is generated that may be corrected by the LDPC. However, the LDPC may in some embodiments, only be able to correct a limited number of errors. Given the volume of cells in a modern SSD that need to be decoded, and the constant relocation of data within an SSD, errors in the decoding process are to be avoided. In some cases, too many errors are generated than can be corrected, overwhelming the error correction capability of the LDPC. Embodiments of the present disclosure seek to reduce the number of errors by using original data as soft-bits to increase the likelihood that hard bits of current data are properly decoded.
Data storage device 100 includes controller 120 that controls its operations. Decoder 125, in some embodiments, is located within controller 120. In embodiments decoder 125 is a firmware-implemented form of error correction code, such as a low density parity check decoder (LDPC), while in other embodiments decoder 125 may be a Bose Chaudhuri and Hocquenghem (BCH) decoder, or other decoder capable of ensuring the accuracy of data read from the NAND 115. Decoder 125 includes a cyclic redundancy check (CRC) 130 in some embodiments to detect, and potentially correct, erroneous data produced by the decoder 125.
When original data 205 is copied to current data 210, a pointer 215 is added to a header 220 of current data 210, in some embodiments. Pointer 215 points to the original data 205, by pointing to the physical location of the original data 205 on the NAND 115, by pointing to a location in memory that redirects to original data 205, or any virtual or actual location on the data storage device 100 that resolves to the location of the original data 205 on the NAND 115.
When the data storage device 100 receives a data request (e.g. from the host 105, from the controller 120 to relocate data on the NAND 115, etc.), the decoder 125 reads the header 220 of the current data 210 to follow pointer 215 to original data 205. In some embodiments, decoder 125 will verify that the blocks containing the original data 205 by consulting a block status table 235. Block status table 235 in embodiments is maintained by the controller 120 to track the status of blocks within the NAND 115, tracking if a block contains valid data from which current data was copied (e.g. original data 205), or if the block does not contain valid data (e.g. marked as erased or overwritten).
Decoder 125 reads current data 210 as hard-bits, and if the block status table 235 has indicated that the original data 205 is valid, decoder 125 reads the original data 205 as soft-bits. The hard-bits and soft-bits are combined by the decoder 125 to form data that may be provided to the requestor (e.g. host 105, controller 120, or other system).
At 310, original data 205 is relocated on the NAND 115. The relocated data in embodiments is current data 210.
At 315, the header 220 of current data 210 is updated to reference the original data 205, such as via a pointer 215.
At 320, a data read request is received at the data storage device 100, for the current data 210. The data read request may be a request from host 105 for data, a data relocation request from controller 120, or request from another system or component, external or internal to data storage device 100.
At 325, the method 300 reads the header 220 of the current data 210 to obtain the pointer 215 to the original data 205.
At 330, the decoder 125 of the controller 120 verifies the header 220 contains a correct pointer 215 to the original data 205. In some embodiments, header 220 contains a copy of pointer 225, comparing the copy of pointer 225 to pointer 215, to verify the pointer 215 is correct. In other embodiments, header 220 comprises a header ECC 230 to verify that the header 220 and its contents, such as pointer 215.
At 335, the block(s) where original data 205 reside are verified to contain original data 205. In embodiments, controller 120, or decoder 125, maintains the block status table 235 that tracks the status of blocks. If the status of the blocks comprising original data 205 is marked in the block status table 235 as valid (e.g. contains original data 205), then the method may proceed. If the status of the blocks comprising the original data 205 is marked as invalid (e.g. erased or overwritten), and in embodiments data identified at these invalid table entries are not utilized as soft-bits.
At 340, voltages from cells containing current data 210 is read as hard-bits.
At 345, voltages from cells containing original data 205 is read as soft-bits.
At 350, the hard-bits and soft-bits are decoded in the decoder 125, to provide decoded data and at 355, the decoded data is provided to the requestor.
The preceding description is provided to enable any person skilled in the art to practice the various embodiments described herein. The examples discussed herein are not limiting of the scope, applicability, or embodiments set forth in the claims. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments. For example, changes may be made in the function and arrangement of elements discussed without departing from the scope of the disclosure. Various examples may omit, substitute, or add various procedures or components as appropriate. For instance, the methods described may be performed in an order different from that described, and various steps may be added, omitted, or combined. Also, features described with respect to some examples may be combined in some other examples. For example, an apparatus may be implemented or a method may be practiced using any number of the aspects set forth herein. In addition, the scope of the disclosure is intended to cover such an apparatus or method that is practiced using other structure, functionality, or structure and functionality in addition to, or other than, the various aspects of the disclosure set forth herein. It should be understood that any aspect of the disclosure disclosed herein may be embodied by one or more elements of a claim.
As used herein, the word “exemplary” means “serving as an example, instance, or illustration.” Any aspect described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects.
As used herein, a phrase referring to “at least one of” a list of items refers to any combination of those items, including single members. As an example, “at least one of: a, b, or c” is intended to cover a, b, c, a-b, a-c, b-c, and a-b-c, as well as any combination with multiples of the same element (e.g., a-a, a-a-a, a-a-b, a-a-c, a-b-b, a-c-c, b-b, b-b-b, b-b-c, c-c, and c-c-c or any other ordering of a, b, and c).
As used herein, the term “determining” encompasses a wide variety of actions. For example, “determining” may include calculating, computing, processing, deriving, investigating, looking up (e.g., looking up in a table, a database or another data structure), ascertaining and the like. Also, “determining” may include receiving (e.g., receiving information), accessing (e.g., accessing data in a memory) and the like. Also, “determining” may include resolving, selecting, choosing, establishing and the like.
The methods disclosed herein comprise one or more steps or actions for achieving the methods. The method steps and/or actions may be interchanged with one another without departing from the scope of the claims. In other words, unless a specific order of steps or actions is specified, the order and/or use of specific steps and/or actions may be modified without departing from the scope of the claims. Further, the various operations of methods described above may be performed by any suitable means capable of performing the corresponding functions. The means may include various hardware and/or software component(s) and/or module(s), including, but not limited to a circuit, an application specific integrated circuit (ASIC), or processor. Generally, where there are operations illustrated in figures, those operations may have corresponding counterpart means-plus-function components with similar numbering.
The following claims are not intended to be limited to the embodiments shown herein, but are to be accorded the full scope consistent with the language of the claims. Within a claim, reference to an element in the singular is not intended to mean “one and only one” unless specifically so stated, but rather “one or more.” Unless specifically stated otherwise, the term “some” refers to one or more. No claim element is to be construed under the provisions of 35 U.S.C. § 112(f) unless the element is expressly recited using the phrase “means for” or, in the case of a method claim, the element is recited using the phrase “step for.” All structural and functional equivalents to the elements of the various aspects described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the claims. Moreover, nothing disclosed herein is intended to be dedicated to the public regardless of whether such disclosure is explicitly recited in the claims.
In the systems and methods disclosed herein, original data may be used as a soft-bit to verify current data in a decoder, reducing the number of errors produced by the decoder.
In one embodiment, a data storage device is disclosed. The data storage device includes a memory and a controller configured to perform a method of error correction. In embodiments, the method includes relocating original data to a different location in the memory to create current data, receiving a request from a host for current data, reading current data from memory as hard-bits, and reading the original data as soft-bits. The hard-bits and soft-bits are provided to a decoder, and the decoder decodes the current data using the hard-bits and soft-bits in some embodiments, and then the decoded current data is provided to the hose.
In another embodiment, a data storage device is disclosed. The data storage device includes an interface configured to communicate with a host, a soled state memory, and a decoder communicatively coupled to the host via the interface. In embodiments the decoder may be configured to obtain current data voltage values in the memory, obtain original data voltage values from cells in the memory. The decoder may be further configured to decode the current data voltage values, using original data voltage values for error detection, in some embodiments. The decoded data may provided to the host.
In another embodiment, a system for error correction in a data storage device. In embodiments, the system includes a memory means comprising original data comprising soft-bits and current data comprising hard-bits, a decoder means configured to receive the hard-bits and soft-bits. The decoder may be further configured to decode the hard-bits and soft-bits to generate data. An interface means provides the data to a host.
While the foregoing is directed to embodiments of the present disclosure, other and further embodiments of the disclosure may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.