A solid state drive (SSD) is a data storage device that utilizes solid-state memory to retain data in nonvolatile memory chips. NAND-based flash memories are widely used as the solid-state memory storage in SSDs due to their compactness, low power consumption, low cost, high data throughput and reliability. SSDs commonly employ several NAND-based flash memory chips and a flash controller to manage the flash memory and to transfer data between the flash memory and a host computer.
While NAND-based flash memories are reliable, they are not inherently error-free and often rely on error correction coding (ECC) to correct raw bit errors in the stored data. One commonly employed error correction code employed in nonvolatile memory storage modules, such as SSDs, are low-density parity-check (LDPC) codes. An LDPC code is a linear error correcting code having a parity check matrix with a small number of nonzero elements in each row and column. Various methods for decoding data encoded with LDPC error correction codes are known in the art. One commonly employed decoding method for LDPC coding is the layered min-sum algorithm (MSA). While the min-sum algorithm is an approximation of the quasi-optimal decoding method of belief propagation, the layered min-sum algorithm introduces a further hardware simplification. The layered min-sum algorithm is iterative by layer and is based on belief propagation. The layered min-sum algorithm (MSA) is less complex than other decoding methods known in the art. However, the min-sum algorithm exhibits a noticeable degradation in the decoding performance compared to the more complex decoding methods, such as belief propagation. To counteract the degradation in the decoding performance achievable with the layered min-sum algorithm, normalized layered min-sum algorithms with have been developed incorporating a normalization factor, or attenuation factor, to account for the degradation in decoding performance.
The power of LDPC codes resides in the ability of the decoding strategy to exploit the soft information on the stored data. In LDPC decoding, the two voltage distributions represent the two possible states: “0” and “1”, of the cells within the NAND chips. Soft information for the stored data is expressed by a log likelihood ratio (LLR). The read errors are not binary in nature, but instead vary from an ideal voltage according to an analog function. LDPC decoders have the ability to address this non-binary behavior using LLRs. The LLR attributed to a bit is representative of the probability that the voltage value read corresponds to a 0 or a 1. The sign of the LLR typically provides the bit estimation (i.e. positive LLR corresponds to 0 and negative LLR corresponds to 1). The magnitude of the LLR provides the reliability of the estimation (i.e. |LLR|=0 means that the estimation is completely unreliable and |LLR|=∞ means that the estimation is completely reliable and the bit value is known.
Soft information is essential to improving the quality of the LLRs used in the LDPC decoding process. However, when the soft information is acquired from a variety of sources, an efficient method of accumulating the soft information is necessary.
Accordingly, what is needed in the art is an efficient method of acquiring, accumulating and processing soft information for use in LDPC decoding.
In various embodiments, a nonvolatile memory system includes a nonvolatile memory storage module for storing encoded data. The encoded data stored in the nonvolatile memory storage module is encoded using a low-density parity check (LDPC) error correction code. A decoder receives the LDPC encoded data stored in the nonvolatile memory storage module and attempts to decode and recover the data.
A nonvolatile memory storage controller is provided for delivering log likelihood ratios (LLRs) to a low-density parity check (LDPC) decoder for use in the decoding of an LDPC encoded codeword.
A method of accumulating soft information of a nonvolatile memory storage module for use in LDPC (Low-Density Party Check) decoding of a codeword stored in the nonvolatile memory storage module is provided. The method includes, performing one or more reads of a cell of a nonvolatile memory storage module to generate one or more soft reads associated with a bit stored in the cell. After the one or more soft reads have been generated, the method continues by accumulating the one or more soft reads to generate an accumulated soft read associated with the bit stored in the cell and converting the accumulated soft read into a log-likelihood ratio (LLR) for use in LDPC decoding of a codeword stored in the nonvolatile memory storage module.
The one or more reads of the cell may be performed at one or more different reference voltages. Additionally, the one or more reads of the cell may be compressed prior to being accumulated to generate an accumulated soft read. The one or more reads may include one or more reads of the neighboring cells of the cell being read.
A nonvolatile memory controller for accumulating soft information of a nonvolatile memory storage module for use in LDPC (Low-Density Parity Check) decoding of a codeword stored in the nonvolatile memory storage module is provided. The controller includes read circuitry configured for performing one or more reads of a cell of a nonvolatile memory storage module to generate one or more soft reads associated with a bit stored in the cell, accumulation circuitry coupled to the read circuitry, the accumulation circuitry configured for accumulating the one or more soft reads to generate an accumulated soft read associated with the bit stored in the cell and look-up circuitry coupled to the accumulation circuitry, the look-up circuitry configured for converting the accumulated soft read into a log-likelihood ratio (LLR) for use in LDPC decoding of a codeword stored in the nonvolatile memory storage module.
A system for accumulating soft information for use in LDPC (Low-Density Parity Check) decoding is provided. The system includes a nonvolatile memory storage module storing a codeword, read circuitry coupled to the nonvolatile memory storage module, the read circuitry configured for performing one or more reads of a cell of the nonvolatile memory storage module to generate one or more soft reads associated with a bit stored in the cell, accumulation circuitry coupled to the read circuitry, the accumulation circuitry configured for accumulating the one or more soft reads to generate an accumulated soft read associated with the bit stored in the cell and look-up circuitry coupled to the accumulation circuitry, the look-up circuitry for converting the accumulated soft read into a log-likelihood ratio (LLR) for use in LDPC decoding of the codeword stored in the nonvolatile memory storage module.
Accordingly, the system and method of the present invention provides an efficient method of acquiring, accumulating and processing soft information for use in LDPC decoding.
The accompanying drawings are included to provide a further understanding of the invention, and are incorporated in and constitute a part of this specification. The drawings illustrate embodiments of the invention, and together with the description, serve to explain the principles of the invention.
In the operation of a stored channel utilizing LDPC encoding, original data is stored in a nonvolatile memory system. Different noise sources, estimated as a White Gaussian Noise (AWGN) Channel, corrupt the original stored message resulting in a one becoming a zero or vice versa. To improve the bit error rate, BER, the SSD write controller may comprise an LDPC encoder which multiplies an information bit vector with a generator matrix G of the LDPC code. The output of the encoder is then stored in a nonvolatile memory system. During the read operation, the nonvolatile memory system provides the stored codewords to an LDPC decoder which performs the LDPC decoding process.
The nonvolatile memory system may be a NAND-based flash memory system. NAND flash memories are nonvolatile, and as such, are able to store and keep data even in the absence of a power source. With reference to
In NAND based memories, a logical page is composed of cells belonging to the same WL. The number of pages per WL is related to the storage capability of the memory cell. Depending upon the number of storage levels, flash memories are referred to in different ways: SLC (single level cell) memories store 1 bit per cell, MLC (multi-level cell) memories store 2 bits per cell, 8LC (eight level cell or triple level cell) memories store 3 bits per cell and 16LC (sixteen level cell) memories store 4 bits per cell.
Considering the SLC case with interleaved architecture, wherein one page is composed of even cells and a second page is composed of odd cells, as shown in
In general, a logical page is the smallest addressable unit for reading from and writing to the NAND memory. The number of logical pages within a logical block is typically a multiple of 16 (e.g. 64, 128). Additionally, in a NAND based memory, a logical block is the smallest erasable unit.
As shown with reference to
While NAND-based flash memories are reliable, they are not inherently error-free and often rely on error correction coding (ECC) to correct raw bit errors in the stored data. Various mechanisms may lead to bit errors in flash memories, including noise at the power rails, voltage threshold disturbances during the reading and/or writing of neighboring cells, retention loss due to leakage within the cells and tunneling. Error correction codes (ECC) are commonly employed in flash memories to recover stored data that is affected by such error mechanisms. In operation, ECC supplements the user data with parity bits which store enough extra information for the data to be reconstructed if one or more of the data bits are corrupted. Generally, the number of data bit errors detectable and correctable in the data increases with an increasing number of parity bits in the ECC. In many memory devices, data is stored in a memory location of the memory device along with the ECC for the data. In this way, the data and the ECC may be written to the memory location in a single write memory operation and read from the memory location in a single read memory operation. ECC is typically implemented in the flash memory controller.
NAND flash memories are based on floating gate storage. In floating gate storage technologies, two logic states are achieved by altering the number of electrons within the floating gate. The difference between the two logic states (1 and 0) is on the order of few electrons and is decreasing as the floating gate storage technology advances. The decreasing number of electrons responsible for the difference between the two logic states results in an increased probability of errors in the flash memory cell requiring more error correction. The fraction of data bits that are known to be corrupted, and therefore contain incorrect data, before applying the ECC is referred to as the raw bit error rate (RBER). As a result of the advances in the floating gate storage technology, the RBER for a flash page of memory cells is increasing and at technologies with feature sizes in the 1× range (below 20 nm) is nearing the Shannon Limit of the communication channel. The increased probability of errors in the stored data results in an increase in the error code correction necessary to correct the bit errors in the flash memory. The error rate observed after application of the ECC is referred to as the uncorrectable bit error rate (UBER). The acceptable UBER is often dependent upon the application in which the SSD is employed. In the case of price sensitive, consumer applications, which experience a relatively low number of memory accesses during the SSD product lifetime, the SSD may tolerate a higher UBER as compared to a high-end application experiencing a relatively high number of memory accesses, such as an Enterprise application.
To achieve an acceptable UBER for Enterprise applications employed in a flash storage controller, low-density parity-check (LDPC) error correction coding is commonly used. An LDPC code is a linear error correcting code having a parity check matrix with a small number of nonzero elements in each row and column.
LDPC codes are capacity-approaching codes that allow the noise threshold to be set very close to the Shannon limit for a symmetric, memory-less channel. The noise threshold defines an upper bound for the channel noise, up to which the probability of lost information can be made as small as desired. Well-designed LDPC codes have an UBER very near the Shannon limit.
The power of LDPC codes resides in the ability of the decoding strategy to exploit the soft information on the stored data. In LDPC decoding, the two voltage distributions represent the two possible states: “0” and “1”, of the cells within the NAND chips. When the voltage distributions overlap 310, as shown with reference to the graph 300 of
LDPC decoding is performed based upon a parity check matrix which consists of “0”'s and “1”'s that define the parity check equations. An M×N parity check matrix (H) comprises M rows and N columns. The number of columns N corresponds to the number N of codeword bits within one encoded codeword and the codeword comprises a plurality of information bits (K) and M parity check bits. The number of rows within the parity check matrix corresponds to the number M of parity check bits in the codeword.
To perform a successful read operation on the NAND-based flash memory device employing LDPC encoding, a plurality of read operations are performed at various read reference voltage levels, by applying the read reference voltage to the corresponding control gate of the cell to see if the sensed cell conducts at that particular read reference voltage. The responses of the cell for each of the read reference voltages are then used to determine the value of the bit stored by the cell. The conventional design practice is to employ uniform distribution for sensing the cells, wherein the soft-decision reference voltages are uniformly distributed between two consecutive hard-decision reference voltages. However, since the area where most errors will occur is in the overlap of the threshold voltage distributions, and since most of the overlap between two adjacent states occurs in the vicinity of the corresponding hard-decision reference voltages, the present invention employs non-uniform partitioning of the threshold voltage distribution to improve the quality of the soft information. As such, by concentrating the soft-decision reference voltages around the hard-decision reference voltages and within the overlap regions, the same number of sensing voltages can be used in a non-uniform way to provide better information for determining the bit value.
As shown with reference to
As previously described, for LDPC decoding, the log likelihood ratio (LLR) of the received data bits in the codeword is used to decode the codeword. As such, after each bit position is measured and the 3-bit soft-decision data has been identified, the proper LLR associated with the soft-decision bits is extracted from a look-up table stored in the flash controller and the LLR is then fed to the LDPC decoder for subsequent decoding of the codeword. In the exemplary embodiment shown in
In an alternative embodiment, a single soft-decision reference voltage may be used instead of a plurality of soft-decision references voltages, resulting in only two soft-decision bits. In this embodiment, the soft-decision decoding may be considered hard-decision decoding resulting in a two-state result and therefore, two corresponding LLRs. As with the soft-decision LLRs, these hard-decision LLRs will also change over the lifetime of the device.
LLRs are a function of the shape and location of the threshold voltage distribution for the flash cells and can be computed or measured in a characterization laboratory. In order to provide the LDPC decoder with the correct soft-decision information, the LLR look-up tables used for decoding must represent the channel and the BER at that specific point in the lifetime of the flash memory. The threshold voltage distribution for the flash cells changes over the lifetime of the device due to wear-out and as such, the LLRs also change. As such, in order to provide the correct soft-decision information over the lifetime of the flash memory, a plurality of LLR tables are needed that accurately reflect the threshold voltage distributions at various points over the lifetime of the device. For example, a first LLR look-up table would be used for a fresh device, having a BER of around 10−6 and a second LLR look-up table would be used for the device towards the end of the device lifetime, when the BER is around 10−2. By utilizing LLR look-up tables that are reflective of the current point in the lifetime of the device, the LLR look-up table will most accurately represent the noise and the LDPC will perform in a quasi-optimal way.
Each flash technology exhibits a unique threshold voltage distribution over its lifetime. As such, a generic law does not exist for determining standard LLR look-up table values for the variety of flash devices available in the market. Instead, in order to characterize the flash device and thereby determine the appropriate lifetime LLR look-up table values, it is necessary to measure billions and billions of flash cell distributions over the lifetime of each flash device to understand how the flash cells will perform. The lifetime threshold voltage distribution will differ among technologies and among vendors. For example, it may be determined that a different LLR look-up table for every decade of BER accurately reflects the behavior of the flash cells over the lifetime of the device. As such, when the BER of the flash device changes from 10−5 to 10−4 a different LLR look-up table will be accessed in the flash controller to reflect this characterized change in BER. Additionally, at any single point in time, there may be multiple flash chips of the flash device operating at different points in their lifetime, or perhaps a single flash chip comprising regions that are operating at different points in their lifetime. By performing characterization of the flash device, either by computational techniques and laboratory measurements, a plurality of lifetime LLR look-up tables can be generated for the flash device that accurately reflect the change in the threshold voltage distribution of the flash device over its lifetime. The LLR look-up tables may also reflect changes to specific flash chips of the flash device or specific regions of a flash chip over the lifetime of the device. The plurality of LLR look-up tables are stored in the flash memory controller and in operation, the flash memory controller selects the appropriate LLR look-up table to use for decoding the codeword based upon the present point in the lifetime of the device.
As shown with reference to
In one embodiment, the LLR look-up tables 635 may include an LLR look-up table 635 that is associated with a current point in the lifetime of the nonvolatile memory storage module 615. As such, the BER appropriate for the age of the nonvolatile memory storage module 615 may be taken into consideration when generating the LLR look-up tables 635.
The read circuitry 640 of the nonvolatile memory controller 605 may be configured for performing one or more reads of a cell of a nonvolatile memory storage module 615 to generate one or more soft reads associated with a bit stored in the cell. When multiple reads of the same cell are performed by the read circuitry 640, at varying voltage levels, it is necessary to accumulate these multiple reads into a single index that can be used to access an LLR look-up table and to extract the appropriate LLR for the cell from the LLR look-up table. As such, in accordance with the present invention, the nonvolatile memory controller 605 may further include accumulation circuitry 655 coupled to the read circuitry 640. The accumulation circuitry 655 is configured for accumulating the one or more soft reads, performed by the read circuitry 640, to generate an accumulated soft read associated with the bit stored in the cell. The look-up circuitry 650 is coupled to the accumulation circuitry 655 and the look-up circuitry is configured for converting the accumulated soft read into a log-likelihood ratio (LLR) for use in LDPC decoding of a codeword stored in the nonvolatile memory storage module.
In one embodiment, a plurality of reads of the same cell 630 of the nonvolatile memory storage module 615 are performed, each at a different voltage level. The results of the plurality of reads need to be accumulated so that only one LLR is assigned to every bit of the page. In an exemplary embodiment, the first 6 bits of a page of the nonvolatile memory storage module 615 have been written and stored as 1, 1, 1, 0, 0, 0, respectively. In this exemplary embodiment, it is assumed that bits 0 and 3 exhibit no significant error when read from the nonvolatile memory storage module 615. It is also assumed that bits 1 and 4 exhibit a moderate error when read and that bits 2 and 5 exhibit a very large error. The bits of the cell are read three times, once with a low threshold voltage, once with a medium threshold voltage and one with a high threshold voltage, yielding the following results:
As shown, bits 0 and 3 are read without error in all three of the reads performed. As such, in this case an LLR will be assigned that has a large magnitude, indicating a high confidence that the read is correct. Additionally, bits 1 and 4 are read correctly twice and incorrectly once, when utilizing the three different reference voltages. As such, a smaller magnitude LLR, indicating a low confidence that performing a read of bits 1 and 4 will produce the correct result, should be assigned to bits 1 and 4. Similarly, bits 2 and 5 are read incorrectly twice and correctly only once. As such, bits 2 and 5 should be assigned a smaller magnitude LLR. It can be seen that the assigned LLR is directly related to the total number of 1's read using each of the reference voltages. In both instances of two 1's being read, the assigned LLR is −1. In both instances of one 1 being read, the assigned LLR is +1. Additionally, in some cases the sign of the assigned LLR may differ from the data originally written to the nonvolatile memory storage 615. When reading of the data stored in the nonvolatile memory storage module 615, it is not possible to determine the correct sign of the data originally written, so it is not possible to know if the sign of the assigned LLR is the same as the data written to the cell. However, when an incorrect sign is assigned to the LLR, the magnitude of the assigned LLR will be small. The nonvolatile memory controller can more easily decode the small magnitude assigned LLR to determine the bits that are in error and to determine the correct sign for the data.
In the present invention, the accumulation circuitry 655 receives the result of the reads from the read circuitry 640 and sums the number of 1's to generate an accumulated soft read. This accumulated soft read is then provided to the look-up circuitry 650 to assign an LLR value from the LLR look-up table 635.
With reference to
In an additional embodiment, the nonvolatile memory storage module 615 may further include compression circuitry 660 for compressing the one or more soft reads to generate a compressed soft read prior to transferring the one or more soft reads to the nonvolatile memory controller 605. In an exemplary embodiment, 7 reads are performed at varying threshold voltages. Performing 7 reads requires that the same page of the nonvolatile memory storage module 615 to be read 7 times and that the result of each of the reads be transferred across the interface to the nonvolatile memory controller 605. The transfer between the nonvolatile memory storage module 615 and the nonvolatile memory controller 605 is typically performed at a rate of 2 bytes per clock for a double-data-rate (DDR) interface. To reduce the time required to transfer the soft reads between the nonvolatile memory storage module 615 and the nonvolatile memory controller 605, the nonvolatile memory storage module 615 may include compression circuitry 660. With the compression circuitry 660, the 7 reads are performed, but instead of transferring all of the soft reads resulting from the 7 reads to the nonvolatile memory controller 605, the compression circuitry 660 first compresses the soft reads to generate a compressed soft read that is representative of the sum of the number of 1 's read for each bit and then transfers the compressed soft read to the nonvolatile memory controller 605 for further processing. In one embodiment, the 7 soft reads may be performed, but only the sum of the number of 1's read for each bit may be transferred to the nonvolatile memory controller 605, so each bit is represented by a compressed soft read that is a number between 0 and 7. The compressed soft read may be represented by a 3 bit number, thereby requiring the page to be transferred across the DDR interface only 3 times, once for each bit of the compressed soft read.
In operation, the ALU 710 performs a concatenation operation on the 3 bit number transferred by the 3 pages across the DDR interface from the nonvolatile memory storage module 615. In performing the concatenation, the first page read may contain the lower order bit of the compressed soft read, the second page read may contain the second significant bit that needs to be concatenated with the lower order bit and the third page may contain the third significant bit that needs to be concatenated with the lower order bit and the second significant bit. The ALU 710 performs the concatenation of the 3 bit number to generate the compressed soft read.
After the compressed soft read is received by the nonvolatile memory controller 605, the soft reads needs to be reconstructed to regenerate the original 7 reads of the cell. The accumulation circuitry of the nonvolatile memory controller 605 is further configured for reconstructing the compressed soft reads to regenerate the one or more soft reads. In one embodiment, upon receiving the compressed soft read from the compression circuitry 660 of the nonvolatile memory storage module 615, the accumulation circuitry 655 of the nonvolatile memory controller 605 reconstructs the soft reads from the compressed soft reads by concatenating the 3 pages of compressed soft reads to regenerate the original 7 soft reads. The compressed soft read is then provided to the look-up circuitry 650 for indexing the appropriate look-up table 635 to extract the LLR for the bit stored by the cell.
As previously mentioned, the ideal distribution of a SLC device is influenced by the data programmed into the adjoining cells in the device. One of the largest contributing factors affecting the distribution width of a target cell is the cell-to-cell floating gate coupling, which is influenced by the target cell's neighboring cells.
Each of the cells 801, 802, 803, 804, 805, 806, 807, 808 surrounding the target cell 800 contributes to the distribution of the target cell 800, depending upon the capacitive coupling ratio between the target cell 800 and the neighboring cells 801, 802, 803, 804, 805, 806, 807, 808. For each neighboring cell 801, 802, 803, 804, 805, 806, 807, 808 the effect on the distribution is dependent upon the coupling coefficients between the target cell 800 and the neighboring cells 801, 802, 803, 804, 805, 806, 807, 808 and the distribution voltage shift during program operation of the neighboring cells 801, 802, 803, 804, 805, 806, 807, 808.
Typically, cells in a page are sequentially programmed from the bottom to the top (WLn−2 to WLn+2). In this way, background pattern dependency is minimized. Additionally, cell-to-cell coupling effects are mitigated for the target cell 800, because lower cells (pages) are programmed before the target cells 800. However, this order of programming is true only if the target cell 800 is reprogrammed (or programmed) to “0”. Alternatively, if the target cell 800 stays in the erased state, it will be affected by the lowest cells as well as the highest cells, because it is not possible to lower the threshold voltage during program operation. Only the erase operation of the cells can lower the threshold voltage. As such, for an erased cell, the effect of all the surrounding cells must be considered.
The coupling coefficients of the cells do not all have the same values/weights. Experimental results show that Y coefficients 802, 807 are dominant, followed by X 804, 805 then XY 801, 803, 806, 808. Bit errors introduced by the coupling coefficients (and other phenomena) can be corrected using an ECC, such as LDPC encoding.
Additionally, in order to provide a higher quality LLR for a target cell, the effect of the programmed states of the neighboring cells on the threshold voltage of the target cell need to be considered. In the present invention to address the contribution of the programmed state of the neighboring cells to the threshold voltage of a target cell, the LLR look-up tables 635 of the nonvolatile memory controller 605 includes one or more neighboring cell contribution LLR look-up tables. The neighboring cell contribution LLR look-up tables are populated to be representative of the BER of a target cell (bit error probability) for each combination of possible patterns of the surrounding cells. As such, the elements of the neighboring cell contribution LLR look-up tables are dependent upon the effects of the programmed state of some or all of the neighboring cells of the target cell. With reference to
In addition, it is possible that the values of all neighboring cells 801, 802, 803, 804, 805, 806, 807 and 808 may not need to be fully determined for the application of the invention. For example, in the case of an MLC, the two states of the MSB value may have a larger voltage difference than the two LSB states. So, the MSB bit of the neighboring cells may influence the target cell 800 the most and the LSB bit of the neighboring cells may be ignored.
Experimental results show that the BER of the target cell 800 is page dependent. As such, the LUT index generated by the ALU 710 may take into account the particular page of the target cell.
Because the contribution from the neighboring cells is dependent upon the programmed state of the target cell, one or more neighboring cell contribution LLR look-up tables 635 may include a first neighboring cell contribution look-up table associated with a programmed state of the target cell and a second neighboring cell contribution look-up table associated with an unprogrammed state of the target cell, wherein the first neighboring cell contribution look-up table 635 is different than the second neighboring cell contribution look-up table 635.
In order to determine the LLRs it is necessary to know the states of the cells surrounding the target cell so that the pattern can be determined and the appropriate LLR can be extracted from the neighboring cell contribution LLR look-up table 635. The nonvolatile memory storage module 615 comprises a plurality of pages which may be organized in an interleaved architecture or, alternatively, in an all-bit-line (ABL) architecture.
In an exemplary embodiment, in the case of an interleaving NAND memory architecture, two pages belong to the same word-line (WL). As shown with reference to
In an additional embodiment, as shown with reference to
The plurality of LLR look-up tables reflecting the effects of the neighboring cells are stored in the flash memory controller and in operation, the flash memory controller selects the appropriate LLR look-up table to use for decoding the codeword.
In the present invention, an LLR look-up table need not be a physical entity, but may be considered in a broader sense to be a logical entity. Additionally, the various LLR look-up tables reflecting the current BER of the device may be independent look-up tables or may alternatively be subsets of a larger look-up table.
The present invention utilizes a pattern recognition circuit to identify a pattern of the state of some or all of the neighboring cells in addition to the value of a target cell. The interpretation of the pattern by the pattern recognition circuit takes into account the proximity of the neighboring cells to the target cell, electrical coupling strengths, etc. The pattern recognition circuit translates the pattern into an LLR value for storage into an LLR table. Many different patterns may translate to the same LLR value. A particular pattern for one vendor's flash technology may translate into a different LLR on another vendor's flash technology because the same pattern may be representing a different physical layout of the cells. Furthermore, the LLR a certain pattern translates to may change over time as a result of the program/erase cycles. For example, pattern A may translate to LLR “x” at the beginning of the life of the flash device, but after 8,000 erase cycles, pattern A may now translate to LLR “y”. The LLRs stored in the look-up tables may reflect both the contribution of the neighboring cells to a cell being read and the change of the contribution over the device lifetime.
Additionally, it is not necessary to consider all of the neighboring cells in the LLRs. For example, the diagonal neighbors may have a weaker electrical coupling with the center cell and may be omitted. While the final LLR value for the center cell may not be quite as accurate as it could be when considering all the neighboring cells, omitting the diagonal neighbors may save additional flash read and processing time. The tradeoff in increased performance by omitting some of the neighboring cells may be preferred in a particular application.
In accordance with the present invention, the nonvolatile memory controller 605 is configured for performing one or more reads of one or more neighboring cells of the cell of the nonvolatile memory storage module to generate one or more neighboring cell soft reads associated with a bit stored in the one or more neighboring cells. Reading the neighboring cells of a target cells results in soft-decision information in the form of one or more soft reads. These one or more soft reads need to be accumulated to generate an accumulated soft read that can be used to index a neighboring cell contribution LLR look-up table associated with the nonvolatile memory storage module 615 to extract the appropriate LLR for the cell from the table. The accumulation circuitry 655 of the nonvolatile memory controller 605 is configured for concatenating the one or more soft reads associated with the bit stored in the cell and the one or more neighboring cell soft reads associated with the bit stored in the one or more neighboring cells to generate the accumulated soft read associated with the bits stored in the cell. The look-up circuitry 650 is coupled to the accumulation circuitry 655 and the look-up circuitry is configured for using the accumulated soft read to index an LUT table to identify a log-likelihood ratio (LLR) for use in LDPC decoding of a codeword stored in the nonvolatile memory storage module.
In an exemplary embodiment wherein page “n” and the programming of page “n+1” has affected the bits of page “n”, the bit “n” from the target cell is read to generate a soft read for the bit and the one or more neighboring cells of the target cell (page n+1) are read to generate one or more neighboring soft reads. Accumulating the soft read of the bit and the neighboring soft reads requires that concatenation of the soft bits. The concatenation of the soft bits may be performed by the arithmetic logic unit 710 of the accumulation circuitry 655 in combination with the soft accumulation RAM 700 and under the direction of the soft accumulation control and sequencing module 715. In operation, for a target bit having one or more neighboring cells that induce electrical coupling effects on the target bit, the ALU 710 may be instructed by the soft accumulation control and sequencing module 715 to concatenate the value of the target bit with the value of the two neighboring bits of the target bit. The target bit 800 stored in the nonvolatile memory storage module has both logical neighbors and physical neighbors. It is the programmed state of the physical neighbors that effects the programmed state of the target bit 800. In a particular embodiment, the physical neighboring bits of the target bit 800 may not be the logical neighbors of the target bit 800. In an exemplary embodiment, the neighboring bits may be 8 bit positions away from the target bit 800 in the logical structure of the data. To identify the physical neighbors of the target cell 800, a multiplexor may be included to select the correct physical neighbors prior to the concatenation process previously described.
In an exemplary embodiment, assuming the sequence of bit in page “n” starts as:
0 0 1 1 0 1 1 0 0 . . . .
To perform the concatenation, each bit of page “n” is converted into a result that consists of the soft read of the bit itself concatenated with the soft read of the bit on the left and the soft read of the bit on the right. Since the first bit of the sequence has no bit on the left and the last bit in the sequence has no bit on the right, it is assumed that these bits are “0”, because a zero value has the least effect on the bit being read. In performing the concatenation, the starting bits become:
000 001 101 110 011 101 110 010 00 . . . 0 . . . .
After the concatenation is performed, page “n+1” is read to generate the neighboring soft reads. The neighboring cells in the exemplary embodiment the electrical coupling between is a result of bit “p” of page “n+1” being coupled to bit “p” of page “n”. Following the reading of page “n+1”, the arithmetic logic unit 710 shifts the running RAM result temporarily stored in the soft accumulation RAM 700 to the left by one and concatenates the corresponding bit of page “n+1” to that result to generate the final concatenated result:
If there are additional pages to be considered in the electrical coupling of the target cell, the process is repeated as appropriate. The final result of the concatenation is transformed into an LLR that is appropriate for the neighboring cell pattern associated with each bit of the page as previously described.
The nonvolatile memory storage module 615 of
In operation of the present invention, during a read operation of the nonvolatile memory storage module 615, multiple reads of the stored codewords, and possibly the neighboring cells, are executed to provide soft-decision information represented by the LLRs 1670 extracted from an LLR look-up table 635 that is specific to the cells of the device. The LLR look-up tables 635 may also include the current point in the lifetime of the device, which may be identified by the BER of the device or by other means, such as by counting the P/E cycles of the device. The LLRs 1670 are used as input to the LDPC decoder 1640 to decode the unencoded user message data 1660 encoded by the encoder 1635, utilizing LDPC coding following a parity check matrix (H). The received LLR values for each variable node are taken as the initial variable node messages. The check node processor 1645 updates the check nodes of a first layer with the variable node messages to which they are connected. The resulting messages of the check node processor 1645 are then passed to the variable node processor 1650 and the variable node processor 1650 then updates each variable node with the check node messages to which they are connected. The iterative decoding process continues, as is known in the art, and the resulting codeword estimate is then checked by a codeword estimate check processor 1655, to verify whether or not the codeword estimate is a valid codeword. In a particular embodiment, the codeword estimate may be multiplied by the parity check matrix to determine the syndrome and if the syndrome is zero, it may be determined that the codeword estimate is a valid codeword. If the codeword estimate is determined to be a valid codeword, the decoding is complete and the estimated codeword is provided as output 1675 from the decoder 1640. If it is determined by the codeword estimate check processor 1655 that the codeword estimate is not a valid codeword, a second iteration of the decoding begins. The iteration counter 1680 may be used to track the number of iterations of the decoding process and may cause the decoding to terminate if a maximum number of iterations is reached.
With reference to
Following the generation of the one or more soft reads associated with a bit stored in the cell, the method continues by accumulating the one or more soft reads to generate an accumulated soft read associated with the bit stored in the cell 1705. In one embodiment, the accumulation circuitry 655 accumulates the one or more soft reads to generate an accumulated soft read associated with the bit stored in the cell. In a particular embodiment, each of the one or more soft reads is representative of a logical “1” or a logical “0” and accumulating the one or more soft reads to generate an accumulated soft read associated with the bit stored in the cell further comprises, summing the soft reads representative of a logical “1” to generate the accumulated soft read associated with the bit stored in the cell. In an additional embodiment, the one or more reads of a cell of a nonvolatile memory storage module 615 may be compressed by compression circuitry 660 to generate a compressed soft read. In this embodiment, the compressed soft read is reconstructed to regenerate the one or more soft reads prior to accumulating the one or more soft reads to generate the accumulated soft read. In one embodiment, accumulating the one or more soft reads to generate an accumulated soft read associated with the bit stored in the cell further includes, concatenating the one or more soft reads associated with the bit stored in the cell and the one or more neighboring cell soft reads associated with the bit stored in the one or more neighboring cells.
Following the generation of the accumulated soft read associated with the bit stored in the cell, the method continues by converting the accumulated soft read into a log-likelihood ratio (LLR) for use in LDPC decoding of a codeword stored in the nonvolatile memory storage module 1710.
The present invention provides an efficient method of acquiring, accumulating and processing soft information for use in LDPC decoding. The accumulation may include incrementation, concatenation, collation, shifting and various other operations, performed independently or in combination, for the generation of a look-up table index to provide an appropriate LLR to be used in the LDPC decoding.
In various embodiments, the system of the present invention may be implemented in a Field Programmable Gate Array (FPGA) or Application Specific Integrated Circuit (ASIC) suitable for the design of encoders/decoders for LDPC codes.
Although the invention has been described with reference to particular embodiments thereof, it will be apparent to one of ordinary skill in the art that modifications to the described embodiment may be made without departing from the spirit of the invention. Accordingly, the scope of the invention will be defined by the attached claims not by the above detailed description.
Number | Name | Date | Kind |
---|---|---|---|
5615235 | Kakuishi et al. | Mar 1997 | A |
5732092 | Shinohara | Mar 1998 | A |
6115788 | Thowe | Sep 2000 | A |
6539515 | Gong | Mar 2003 | B1 |
6633856 | Richardson et al. | Oct 2003 | B2 |
6725409 | Wolf | Apr 2004 | B1 |
6789227 | De Souza et al. | Sep 2004 | B2 |
6895547 | Eleftheriou et al. | May 2005 | B2 |
6934804 | Hashemi | Aug 2005 | B2 |
6976194 | Cypher | Dec 2005 | B2 |
6976197 | Faust et al. | Dec 2005 | B2 |
7116732 | Worm et al. | Oct 2006 | B2 |
7206992 | Xin | Apr 2007 | B2 |
7209527 | Smith et al. | Apr 2007 | B2 |
7237183 | Xin | Jun 2007 | B2 |
7324559 | McGibney | Jan 2008 | B2 |
7450668 | Ghosh et al. | Nov 2008 | B2 |
7457906 | Pettey et al. | Nov 2008 | B2 |
7472331 | Kim et al. | Dec 2008 | B2 |
7484158 | Sharon et al. | Jan 2009 | B2 |
7529215 | Osterling | May 2009 | B2 |
7567472 | Gatzemeier et al. | Jul 2009 | B2 |
7694047 | Alston | Apr 2010 | B1 |
7739472 | Guterman et al. | Jun 2010 | B2 |
7752346 | Talayco et al. | Jul 2010 | B2 |
7801233 | Chow et al. | Sep 2010 | B1 |
7904793 | Mokhlesi et al. | Mar 2011 | B2 |
7937641 | Amidi | May 2011 | B2 |
7945721 | Johnsen et al. | May 2011 | B1 |
7958430 | Kolokowsky et al. | Jun 2011 | B1 |
7975193 | Johnson | Jul 2011 | B2 |
8094508 | Gatzemeier et al. | Jan 2012 | B2 |
8140930 | Mauro | Mar 2012 | B1 |
8176367 | Dreifus et al. | May 2012 | B2 |
8219894 | Au et al. | Jul 2012 | B2 |
8223745 | Johnsen et al. | Jul 2012 | B2 |
8228728 | Yang | Jul 2012 | B1 |
8245112 | Hicken et al. | Aug 2012 | B2 |
8245117 | Wu | Aug 2012 | B1 |
8250286 | Yeh et al. | Aug 2012 | B2 |
8254112 | Yang et al. | Aug 2012 | B2 |
8255770 | Park et al. | Aug 2012 | B2 |
8259498 | Yogev et al. | Sep 2012 | B2 |
8261136 | D'abreu et al. | Sep 2012 | B2 |
8281227 | Thatcher et al. | Oct 2012 | B2 |
8286004 | Williams | Oct 2012 | B2 |
8307258 | Flynn et al. | Nov 2012 | B2 |
8327220 | Borchers et al. | Dec 2012 | B2 |
8335977 | Weingarten et al. | Dec 2012 | B2 |
8341502 | Steiner et al. | Dec 2012 | B2 |
8359522 | Gunnam et al. | Jan 2013 | B2 |
8392789 | Biscondi et al. | Mar 2013 | B2 |
8402201 | Flynn et al. | Mar 2013 | B2 |
8418023 | Gunnam et al. | Apr 2013 | B2 |
8429325 | Onufryk et al. | Apr 2013 | B1 |
8429497 | Tu et al. | Apr 2013 | B2 |
8493791 | Karakulak et al. | Jul 2013 | B2 |
8504885 | Haratsch et al. | Aug 2013 | B2 |
8504887 | Varnica et al. | Aug 2013 | B1 |
8555140 | Gunnam et al. | Oct 2013 | B2 |
8621318 | Micheloni et al. | Dec 2013 | B1 |
8640005 | Wilkerson et al. | Jan 2014 | B2 |
8645613 | Tan et al. | Feb 2014 | B2 |
8656257 | Micheloni et al. | Feb 2014 | B1 |
8694849 | Micheloni et al. | Apr 2014 | B1 |
8694855 | Micheloni et al. | Apr 2014 | B1 |
8707122 | Micheloni et al. | Apr 2014 | B1 |
8739008 | Liu et al. | May 2014 | B2 |
8775913 | Haratsch et al. | Jul 2014 | B2 |
8898372 | Yeh | Nov 2014 | B2 |
8917734 | Brown | Dec 2014 | B1 |
8924824 | Lu | Dec 2014 | B1 |
8958247 | Asaoka et al. | Feb 2015 | B2 |
8995302 | Brown et al. | Mar 2015 | B1 |
9025495 | Onufryk et al. | May 2015 | B1 |
9058289 | Tai et al. | Jun 2015 | B2 |
9294132 | Peleato-Inarrea | Mar 2016 | B1 |
20020051501 | Demjanenko et al. | May 2002 | A1 |
20020181438 | McGibney | Dec 2002 | A1 |
20030033567 | Tamura et al. | Feb 2003 | A1 |
20030104788 | Kim | Jun 2003 | A1 |
20030225970 | Hashemi | Dec 2003 | A1 |
20040088636 | Cypher | May 2004 | A1 |
20040123230 | Lee et al. | Jun 2004 | A1 |
20040234150 | Chang | Nov 2004 | A1 |
20040252791 | Shen et al. | Dec 2004 | A1 |
20040268015 | Pettey et al. | Dec 2004 | A1 |
20050010846 | Kikuchi et al. | Jan 2005 | A1 |
20050226355 | Kibune et al. | Oct 2005 | A1 |
20050248999 | Tamura et al. | Nov 2005 | A1 |
20050286511 | Johnsen et al. | Dec 2005 | A1 |
20060039370 | Rosen et al. | Feb 2006 | A1 |
20060126728 | Yu et al. | Jun 2006 | A1 |
20060282603 | Onufryk et al. | Dec 2006 | A1 |
20070050688 | Thayer | Mar 2007 | A1 |
20070089031 | Hufman et al. | Apr 2007 | A1 |
20070136628 | Doi et al. | Jun 2007 | A1 |
20070147489 | Sun et al. | Jun 2007 | A1 |
20070233939 | Kim | Oct 2007 | A1 |
20080005382 | Mimatsu | Jan 2008 | A1 |
20080016425 | Khan et al. | Jan 2008 | A1 |
20080229079 | Flynn et al. | Sep 2008 | A1 |
20080229164 | Tamura et al. | Sep 2008 | A1 |
20080256292 | Flynn et al. | Oct 2008 | A1 |
20080267081 | Roeck | Oct 2008 | A1 |
20080276156 | Gunnam et al. | Nov 2008 | A1 |
20090067320 | Rosenberg et al. | Mar 2009 | A1 |
20090164694 | Talayco et al. | Jun 2009 | A1 |
20090290441 | Gatzemeier et al. | Nov 2009 | A1 |
20090296798 | Banna et al. | Dec 2009 | A1 |
20090303788 | Roohparva | Dec 2009 | A1 |
20090327802 | Fukutomi | Dec 2009 | A1 |
20100085076 | Danilin | Apr 2010 | A1 |
20100162075 | Brannstrom et al. | Jun 2010 | A1 |
20100199149 | Weingarten | Aug 2010 | A1 |
20100211737 | Flynn et al. | Aug 2010 | A1 |
20100211852 | Lee et al. | Aug 2010 | A1 |
20100226422 | Taubin et al. | Sep 2010 | A1 |
20100246664 | Citta et al. | Sep 2010 | A1 |
20100293440 | Thatcher | Nov 2010 | A1 |
20110055659 | Tu et al. | Mar 2011 | A1 |
20110066902 | Sharon et al. | Mar 2011 | A1 |
20110072331 | Sakaue et al. | Mar 2011 | A1 |
20110119553 | Gunnam et al. | May 2011 | A1 |
20110209031 | Kim et al. | Aug 2011 | A1 |
20110225341 | Satoh et al. | Sep 2011 | A1 |
20110246136 | Haratsch | Oct 2011 | A1 |
20110246842 | Haratsch | Oct 2011 | A1 |
20110246853 | Kim | Oct 2011 | A1 |
20110296084 | Nango | Dec 2011 | A1 |
20120051144 | Weingarten et al. | Mar 2012 | A1 |
20120054413 | Brandt | Mar 2012 | A1 |
20120096192 | Tanaka et al. | Apr 2012 | A1 |
20120141139 | Bakhru et al. | Jun 2012 | A1 |
20120166690 | Regula | Jun 2012 | A1 |
20120311402 | Tseng et al. | Dec 2012 | A1 |
20130013983 | Livshitz et al. | Jan 2013 | A1 |
20130086451 | Grube et al. | Apr 2013 | A1 |
20130117616 | Tai et al. | May 2013 | A1 |
20130117640 | Tai et al. | May 2013 | A1 |
20130145235 | Aussien et al. | Jun 2013 | A1 |
20130163327 | Karakulak et al. | Jun 2013 | A1 |
20130163328 | Karakulak et al. | Jun 2013 | A1 |
20130176779 | Chen | Jul 2013 | A1 |
20130185598 | Haratsch | Jul 2013 | A1 |
20130315252 | Emmadi et al. | Nov 2013 | A1 |
20130318422 | Weathers et al. | Nov 2013 | A1 |
20140040704 | WU et al. | Feb 2014 | A1 |
20140053037 | Wang et al. | Feb 2014 | A1 |
20140068368 | Zhang et al. | Mar 2014 | A1 |
20140072056 | Fay | Mar 2014 | A1 |
20140085982 | Asaoka et al. | Mar 2014 | A1 |
20140101510 | Wang et al. | Apr 2014 | A1 |
20140181617 | Wu et al. | Jun 2014 | A1 |
20140185611 | Lie et al. | Jul 2014 | A1 |
20140198581 | Kim et al. | Jul 2014 | A1 |
20140281767 | Alhussien et al. | Sep 2014 | A1 |
20140281822 | Wu | Sep 2014 | A1 |
20140281823 | Micheloni et al. | Sep 2014 | A1 |
20150149871 | Chen et al. | May 2015 | A1 |
20150186055 | Darragh | Jul 2015 | A1 |
Number | Date | Country | |
---|---|---|---|
20140281828 A1 | Sep 2014 | US |
Number | Date | Country | |
---|---|---|---|
61794750 | Mar 2013 | US |