The present invention relates generally to flash memory devices and more particularly, to improved soft demapping and soft data generation techniques for mitigating the effect of intercell interference, back pattern dependency, noise and other distortions in such flash memory devices.
A number of memory devices, such as flash memory devices, use analog memory cells to store data. Each memory cell stores an analog value, also referred to as a storage value, such as an electrical charge or voltage. The storage value represents the information stored in the cell. In flash memory devices, for example, each analog memory cell typically stores a certain voltage. The range of possible analog values for each cell is typically divided into threshold regions, with each region corresponding to one or more data bit values. Data is written to an analog memory cell by writing a nominal analog value that corresponds to the desired one or more bits.
Single-level cell (SLC) flash memory devices, for example, store one bit per memory cell (or two possible memory states). Multi-level cell (MLC) flash memory devices, on the other hand, store two or more bits per memory cell (i.e., each cell has four or more programmable states). For a more detailed discussion of MLC flash memory devices, see, for example, International Patent Application Serial No. PCT/US09/36810, filed Mar. 11, 2009, entitled “Methods and Apparatus for Storing Data in a Multi-Level Cell Flash Memory Device with Cross-Page Sectors, Multi-Page Coding And Per-Page Coding,” incorporated by reference herein.
In multi-level NAND flash memory devices, for example, floating gate devices are employed with programmable threshold voltages in a range that is divided into multiple intervals with each interval corresponding to a different multibit value. To program a given multibit value into a memory cell, the threshold voltage of the floating gate device in the memory cell is programmed into the threshold voltage interval that corresponds to the value.
The analog values stored in memory cells are often distorted. The distortions are typically due to, for example, back pattern dependency (BPD), noise and intercell interference (ICI). For a more detailed discussion of distortion in flash memory devices, see, for example, J. D. Lee et al., “Effects of Floating-Gate Interference on NAND Flash Memory Cell Operation,” IEEE Electron Device Letters, 264-266 (May 2002) or Ki-Tae Park, et al., “A Zeroing Cell-to-Cell Interference Page Architecture With Temporary LSB Storing and Parallel MSB Program Scheme for MLC NAND Flash Memories,” IEEE J. of Solid State Circuits, Vol. 43, No. 4, 919-928, (April 2008), each incorporated by reference herein.
A number of techniques have been proposed or suggested for mitigating the effect of ICI and other disturbances. For example, Ki-Tae Park, et al. describe existing programming techniques, such as even/odd programming, bottom up programming and multi-stage programming that mitigate ICI. International Patent Application Serial No. PCT/US09/49333, filed Jun. 30, 2009, entitled “Methods and Apparatus for Soft Demapping and Intercell Interference Mitigation in Flash Memories,” discloses methods and apparatus for soft demapping and disturbance mitigation in flash memories.
While these existing methods have helped to improve the decoding performance of flash memories, they suffer from a number of limitations, which if overcome, could further improve the reliability of flash memories. For example, current flash memories typically only provide hard data to the flash control system for decoding. It is well known, however, that soft data can improve error rate performance in the decoding process. Thus, a need exists for soft data generation techniques that use hard data from the flash memory to estimate or enhance the soft data and thereby improve the decoding performance.
Generally, methods and apparatus for soft data generation for memory devices using decoder performance feedback. According to one aspect of the invention, at least one soft data value is generated in a memory device, by obtaining performance feedback from a decoder; obtaining a read statistic based on the performance feedback; and generating the at least one soft data value based on the obtained read statistic. The performance feedback may comprise decoded data, a number of erroneous bits assigned by a memory device based on data decoded by the decoder or a number of unsatisfied parity checks.
According to one aspect of the invention, at least one soft data value is generated in a memory device, by obtaining hard data; decoding the hard data; obtaining a read statistic based on the decoded data; and generating the at least one soft data value based on the obtained read statistic. The hard data comprises one or more of data bits, voltage levels, current levels and resistance levels. The soft data value may comprise (i) a soft read value that is used to generate one or more log likelihood ratios, or (ii) one or more log likelihood ratios.
The read statistic or the soft data value (or both) can be computed as a function of one or more of endurance, number of program/erase cycles, number of read cycles, retention time, temperature, temperature changes, process corner, inter-cell interference impact, location within the memory device and pattern of aggressor cells.
In one variation, the soft data value is obtained for one or more desired locations of a memory array and wherein a number of erroneous bits is determined for the one or more desired locations.
In another variation, the read statistic is obtained for a given pattern, PATT, in one or more aggressor cells associated with at least one target cell; and wherein the method further comprises the steps of decoding hard data for one or more target cells and one or more associated aggressor cells; determining a number of erroneous decoded target bits having the given pattern, PATT in the associated aggressor cells; and obtaining the read statistic for the given pattern based on the number of erroneous decoded target bits.
In yet another variation, the read statistic comprises asymmetric read statistics obtained for a plurality of possible values; and wherein the method further comprises the steps of determining a number of erroneous bits having a first value in the decoded data; determining the number of erroneous bits having a second value in the decoded data; obtaining an read statistic for the first value based on the number of erroneous bits having the first value; and obtaining an read statistic for the second value based on the number of erroneous bits having the second value.
In various embodiments, the read statistics comprise one or more of bit-based statistics, cell-based and pattern-dependent statistics. The read statistics can also comprise one or more of probabilities and a mean or variance of a read distribution.
According to another aspect of the invention, at least one soft data value is generated in a memory device, by obtaining a number of unsatisfied parity checks; and generating the at least one soft data value based on the number of unsatisfied parity checks.
A more complete understanding of the present invention, as well as further features and advantages of the present invention, will be obtained by reference to the following detailed description and drawings.
Various aspects of the present invention are directed to soft data generation techniques for improved decoding in memory devices, such as single-level cell or multi-level cell (MLC) NAND flash memory devices. As used herein, a multi-level cell flash memory comprises a memory where each memory cell stores two or more bits. Typically, the multiple bits stored in one flash cell belong to different pages. While the invention is illustrated herein using memory cells that store an analog value as a voltage, the present invention can be employed with any storage mechanism for memory devices, such as the use of voltages or currents to represent stored data, as would be apparent to a person of ordinary skill in the art.
The exemplary flash memory block 160 comprises a memory array 170 and one or more buffers 180 that may each be implemented using well-known commercially available techniques and/or products. The memory array 170 may be embodied as a single-level or multi-level cell flash memory, such as a NAND flash memory, a phase-change memory (PCM), an MRAM memory, a NOR flash memory or another non-volatile flash memory. While the invention is illustrated primarily in the context of a multi-level cell NAND flash memory, the present invention can be applied to single-level cell flash memories and other non-volatile memories as well, as would be apparent to a person of ordinary skill in the art.
Multi-Level Cell Flash Memory
In a multi-level cell NAND flash memory, a threshold detector is typically employed to translate the voltage value associated with a particular cell to a predefined memory state.
In the exemplary embodiment shown in
The peaks 210-213 of the threshold voltage distribution graph 200 are labeled with corresponding binary values. Thus, when a cell is in a first state 210, it represents a “1” for the lower bit (also known as least significant bit, LSB) and a “1” for the upper bit (also known as most significant bit, MSB). State 210 is generally the initial unprogrammed or erased state of the cell. Likewise, when a cell is in the second state 211, it represents a “0” for the lower bit and a “1” for the upper bit. When a cell is in the third state 212, it represents a “0” for the lower bit and a “0” for the upper bit. Finally, when a cell is in the fourth state 213, it represents a “1” for the lower bit and a “0” for the upper bit.
Threshold voltage distribution 210 represents a distribution of the threshold voltages Vt of the cells within the array that are in an erased state (“11” data state), with negative threshold voltage levels below 0 volts. Threshold voltage distributions 211 and 212 of memory cells storing “10” and “00” user data, respectively, are shown to be between 0 and 1 volts and between 1 and 2 volts, respectively. Threshold voltage distribution 213 shows the distribution of cells that have been programmed to the “01” data state, with a threshold voltage level set between 2 and 4.5 volts of the read pass voltage.
Thus, in the exemplary embodiment of
It is further noted that cells are typically programmed using well-known Program/Verify techniques. Generally, during a Program/Verify cycle, the flash memory 160 gradually applies an increasing voltage to store a charge in the cell transistor until a minimum target threshold voltage is exceeded. For example, when programming a ‘10’ data state in the example of
As discussed further below, each of the two bits stored in a single memory cell is from a different page. In other words, each bit of the two bits stored in each memory cell carries a different page address. The right side bit shown in
In addition,
It is noted that the programming scheme 400 of
As indicated above, a flash cell array can be further partitioned into even and odd pages, where for example cells with even numbers (such as cells 2 and 4 in
Intercell Interference and Other Disturbances
WL: wordline;
BL: bitline;
BLo: odd bitline;
BLe: even bitline; and
C: capacitance.
ICI, for example, is caused by aggressor cells 720 that are programmed after the target cell 710 has been programmed. The ICI changes the voltage, Vt, of the target cell 710. In the exemplary embodiment, a “bottom up” programming scheme is assumed and adjacent aggressor cells in wordlines i and i+1 cause ICI for the target cell 710. With such bottom-up programming of a block, ICI from the lower wordline i−1 is removed, and up to five neighboring cells contribute to ICI as aggressor cells 720, as shown in
Generally, Vt is the voltage representing the data stored on a cell and obtained during a read operation. Vt can be obtained by a read operation, for example, as a soft voltage value with more precision than the number of bits stored per cell, or as a value quantized to a hard voltage level with the same resolution as the number of bits stored per cell (e.g., 3 bits for 3 bits/cell flash).
For a more detailed discussion of ICI mitigation techniques, see, for example, International Patent Application Serial No. PCT/US09/49326, entitled “Methods and Apparatus for Read-Side Intercell Interference Mitigation in Flash Memories;” or International Patent Application Serial No. PCT/US09/49327, entitled “Methods and Apparatus for Write-Side Intercell Interference Mitigation in Flash Memories,” each incorporated by reference herein.
The present invention provides soft demapping and soft data generation techniques for flash memories. In one exemplary embodiment, discussed further below in conjunction with
The exemplary read channel 825 comprises a signal processing unit 830, an encoder/decoder block 840 and one or more buffers 845. It is noted that the term “read channel” can encompass the write channel as well. In an alternative embodiment, the encoder/decoder block 840 and some buffers 845 may be implemented inside the flash controller 820. The encoder/decoder block 840 and buffers 845 may be implemented, for example, using well-known commercially available techniques and/or products, as modified herein to provide the features and functions of the present invention.
The exemplary signal processing unit 830 comprises one or more processors that implement one or more soft demapper and/or soft data generation processes 835, discussed further below in conjunction with, for example,
The exemplary flash memory block 860 comprises a memory array 870 and one or more buffers 880 that may each be implemented using well-known commercially available techniques and/or products.
In various embodiments of the disclosed soft data generation techniques, the exemplary interface 850 may need to convey additional information relative to a conventional flash memory system, such as values representing information associated with aggressor cells. Thus, the interface 850 may need to have a higher capacity or faster rate than an interface in conventional flash memory systems. The interface 850 may optionally be implemented, for example, in accordance with the teachings of International PCT Patent Application Serial No. PCT/US09/49328, entitled “Methods and Apparatus for Interfacing Between a Flash Memory Controller and a Flash Memory Array”, (Attorney Docket No. 08-0769), filed Jun. 30, 2009 and incorporated by reference herein, which increases the information-carrying capacity of the interface 850 using, for example, Double Data Rate (DDR) techniques. During a write operation, the interface 850 transfers the program values to be stored in the target cells, typically using page or wordline level access techniques. For a more detailed discussion of exemplary page or wordline level access techniques, see, for example, International Patent Application Serial No. PCT/US09/36810, filed Mar. 11, 2009, entitled “Methods and Apparatus for Storing Data in a Multi-Level Cell Flash Memory Device with Cross-Page Sectors, Multi-Page Coding and Per-Page Coding,” incorporated by reference herein.
During a read operation, the interface 850 transfers hard and/or soft read values that have been obtained from the memory array 870 for target and aggressor cells. For example, in addition to read values for the page with the target cell, read values for one or more adjacent pages in upper/lower wordlines or neighboring even or odd bit lines are transferred over the interface bus. In the embodiment of
The exemplary flash control system 910 comprises a flash controller 920 and an optional read channel 925, typically on one or more integrated circuits. In an alternative embodiment, the encoder/decoder block 940 and some buffers 945 may be implemented inside the flash controller 920. The exemplary flash controller 920 may be implemented, for example, using well-known commercially available techniques and/or products, as modified herein to support the features and functions of the present invention. The exemplary read channel 925 comprises an encoder/decoder block 940 and one or more buffers 945. The encoder/decoder block 940 and buffers 945 may be implemented using well-known commercially available techniques and/or products.
The exemplary flash memory block 960 comprises a memory array 970 and one or more buffers 980 that may each be implemented using well-known commercially available techniques and/or products. In addition, the exemplary flash memory block 960 comprises an exemplary signal processing unit 985 that comprises one or more processors that implement one or more soft demapping and/or soft data generation processes 990, discussed further below in conjunction with, for example,
In various embodiments of the disclosed soft data generation techniques, the exemplary interface 950 may need to convey additional information relative to a conventional flash memory system, such as values representing information associated with aggressor cells.
Thus, the interface 950 may need to have a higher capacity or faster rate than an interface in conventional flash memory systems. The interface 950 may optionally be implemented, for example, in accordance with the teachings of International PCT Patent Application Serial No. PCT/US09/49328, entitled “Methods and Apparatus for Interfacing Between a Flash Memory Controller and a Flash Memory Array”, (Attorney Docket No. 08-0769), filed Jun. 30, 2009 and incorporated by reference herein, which increases the information-carrying capacity of the interface 950 using, for example, Double Data Rate (DDR) techniques.
During a write operation, the interface 950 transfers the program data to be stored in the target and aggressor cells. During a read operation, the interface 950 transfers the new hard or soft read values or data for the target cell(s) and optionally the aggressor cells. Typically, the information conveyed for a single read access is a page or wordline of data. It is noted that only sending data for the target cells reduces the bandwidth requirements of the interface 950, at the expense of implementing the soft data generation processes inside the memory using the memory process technology used to manufacture the flash memory, which is typically optimized for memory and not logic circuits.
The equations employed by the soft demapper 1060 to generate the soft information (LLRs) in accordance with the present invention are discussed below in the section entitled “Computation of Soft Data (LLRs) Using Read Statistics.” As shown in
Soft Data Generation Based on Data from Flash
The present invention recognizes that current flash memories 860, 960 typically only provide hard data to the flash control system 810, 910. It is well known, however, that soft data can improve error rate performance in the decoding process. Thus, according to one aspect of the invention, hard data from the flash memory 860, 960 is used to estimate soft data and thereby improve the decoding performance in the flash control system 810, 910. For example, as discussed hereinafter, statistical properties of the hard data can be used to estimate or enhance the soft data. The generated soft data can then be used for decoding, such as belief propagation decoding of LDPC codes, to improve error rate performance.
According to another aspect of the invention, the flash memory 860, 960 provides soft data or soft information to the flash control system 810, 910. Enhanced soft data is generated from the soft data provided by the flash memory 860, 960 to thereby improve the decoding performance in the flash control system 810, 910. In an implementation using soft information, the flash memory system 860, 960 transmits the measured voltages or a quantized version of the measured voltages to the flash control system 810, 910 as soft information, where a larger number of bits is used to represent the measured voltage than the number of bits stored in the memory cell.
As shown in
Soft Demapper/Soft Data Generator 1200
The soft demapping process 1200 then obtains statistics (or probabilities) based on r and optionally h during step 1220, such as one or more probability density functions. The statistics are discussed further below in the section entitled “Collection of Statistics.”
The obtained statistics are then used during step 1230 to compute the LLR(s). The LLR(s) are discussed below in the section entitled “Computation of Soft Data (LLRs) Using Read Statistics.” The computed LLRs are then provided to the decoder 1400 during step 1240, or optionally to a deinterleaver. The computed LLRs may optionally be used to make a final decision on the read data, for example, based on the sign of the LLRs.
To compute the LLR for one bit in a cell and the other bits are not available, the other bits in the cell are read using, for example, page and wordline access techniques. For a more detailed discussion of exemplary page or wordline level access techniques, see, for example, International Patent Application Serial No. PCT/US09/36810, filed Mar. 11, 2009, entitled “Methods and Apparatus for Storing Data in a Multi-Level Cell Flash Memory Device with Cross-Page Sectors, Multi-Page Coding and Per-Page Coding,” incorporated by reference herein. With page access techniques, the page for which LLRs are being computed is read, and optionally, the other pages within the same wordline can be read as well, so that the hard data can be mapped to levels ŝ for the cells. With wordline access techniques, an entire wordline can be read to obtain all the bits within a cell, from which the hard data level ŝ is obtained.
The pattern
The soft data generation process 1250 then obtains statistics (or probabilities) based on ŝ and optionally
The obtained statistics are then used during step 1280 to compute the LLR(s). The LLR(s) are discussed below in the section entitled “Computation of Soft Data (LLRs) Using Read Statistics.” It is noted that in addition to, or instead of, the statistics, a-priori LLRs La provided by the decoder can optionally be used to compute the LLRs, as explained in the section entitled “Computation of Soft Data (LLRs) Using Read Statistics.” When the LLR for a bit in a cell is computed, the a-priori LLR La is used for at least one bit (optionally all other bits) within a cell. This requires that these other bits in the cell have been read and a-priori LLRs La have been computed for them by the decoder.
The computed LLRs are then provided to the decoder 1400 during step 1290, or optionally to a deinterleaver. The computed LLRs may optionally be used to make a final decision on the read data, for example, based on the sign of the LLRs. It is noted that all bits within a cell (or all pages within a wordline) can be encoded and decoded jointly as described in International Patent Application Serial No. PCT/US09/36810, filed Mar. 11, 2009, entitled “Methods and Apparatus for Storing Data in a Multi-Level Cell Flash Memory Device with Cross-Page Sectors, Multi-Page Coding and Per-Page Coding.” In another embodiment, the bits within a cell (or all pages within a wordline) can be encoded and decoded separately, again as described in International Patent Application Serial No. PCT/US09/36810.
Decoder 1400—LDPC Implementation The following background discussion of LDPC codes and LDPC decoding is based on a discussion in, A. J. Blanksby and C. J. Howland, “A 690-mW 1-Gb/s 1024-b, Rate-½ Low-Density Parity-Check Decoder,” IEEE J. Solid-State Circuits, Vol. 37, 404-412 (March 2002), incorporated by reference herein. For a more detailed discussion, the reader is referred to the full Blanksby and Howland paper.
Graph Representation of LDPC Codes
LDPC codes can also be represented using a bipartite graph, where one set of nodes represents the parity check constraints and the other set represents the data bits.
One algorithm used for decoding LDPC codes is known as the sum-product algorithm. For good decoding performance with this algorithm, it is important that the length of cycles in the graph representation of the LDPC code is as long as possible. In the exemplary representation of
The Sum-Product Algorithm
The sum-product algorithm is an iterative algorithm for decoding LDPC codes. The sum-product algorithm is also known as the message passing algorithm or belief propagation. For a more detailed discussion of the sum-product algorithm, see, for example, A. J. Blanksby and C. J. Howland, “A 690-mW 1-Gb/s 1024-b, Rate-½ Low-Density Parity-Check Decoder,” IEEE J. Solid-State Circuits, Vol. 37, 404-412 (March 2002), D. E. Hocevar, “LDPC Code Construction With Flexible Hardware Implementation,” IEEE Int'l Conf. on Comm. (ICC), Anchorage, Ak., 2708-2712 (May, 2003), and R. N. S. Ratnayake, E. F. Haratsch and Gu-Yeon Wei, “A Bit-node centric architecture for low-density parity check decoders,”' IEEE Global Telecommunications Conference (Globecom), Washington, D.C., 265-270 (November 2007) each incorporated by reference herein.
The message, Qi,j, from bit node i to check node j is given by:
where Le,i is extrinsic LLR provided by the soft demapper/soft data generator for bit i. The message, Rj,i, from check node j to bit node i is given by:
The a-posteriori information value, which is also called a-posteriori log-likelihood ratio (LLR), for bit i, Λi, is given by:
The LLR La,i for bit i. provided to the soft demapper/soft data generator for iterative demapping and decoding is given as
where Bi is the set of check nodes connected to bit node i; and Cj is the set of bit nodes connected to check node j.
LDPC Decoder—Hardware-Sharing Decoder Architecture
A significant challenge when implementing the sum-product algorithm for decoding LDPC codes is managing the passing of the messages. As the functionality of both the check and bit nodes is relatively simple, their respective realizations involve only a small number of gates. The main issue is the implementation of the bandwidth required for passing messages between the functional nodes.
It has been recognized that such a hardware-sharing architecture reduces the area of the decoder.
The statistics generated by the statistics generator(s) 1570 are used by the LLR generator 1550 to generate the soft data, for example, in the form of LLRs, Le. Initially, the LLRs, Le, are based on the soft or hard readouts (or both) from the flash memory 1510 and the corresponding statistics. The LLRs, Le, are processed by the decoder 1530 to generate new soft information, La, that is fed back to the LLR generator 1550 in an iterative manner, until the iterative process converges to a final decision.
The decoder 1530 may again be embodied, for example, using an LDPC decoding algorithm, such as a Belief Propagation, Message Passing, Sum-Product or Min-Sum algorithm. It is noted that the functions of the statistics generator 1570 and LLR generator 1550 described herein can be implemented in one or more of the flash control system 1520, decoder 1530 and read channel 825 (see
Computation of Soft Data (LLRs) Using Read Statistics
The a priori log likelihood ratio (LLR), La, for a bit, c, can be defined as follows:
where P( . . . ) is a probability.
Likewise, the LLR of bit c conditioned on the flash output, r, is computed as follows:
where Le (c) is the extrinsic LLR or soft information that is passed to a subsequent decoder, and p( . . . ) is a probability density function (PDF).
Extrinsic LLR for Binary Asymmetric Channel
The extrinsic LLR, Le(c), of bit c for the binary asymmetric channel defined by the trellis 1600 can be expressed as follows:
The extrinsic LLR, Le(c), for a read bit, ĉ=0, is computed as:
The extrinsic LLR, Le(c), for a read bit, ĉ=1, is computed as:
Extrinsic LLR for Binary Symmetric Channel (where p=q=p0)
The extrinsic LLR, Le(c), for a read bit, ĉ=0, is computed as:
The extrinsic LLR, Le (c), for a read bit, ĉ=1, this LLR is computed as:
Extrinsic LLRs for Soft Outputs from Flash Memory:
For a 2-Bits/cell flash memory, the extrinsic LLR can be computed as follows r or a soft value, r, received from the flash memory 810, 910:
In general, for any number of bits per cell, the extrinsic LLR for bit Ci can be expressed as
where:
r: received signal
s: original stored state or level given by stored bits (c0, c1, . . . cm)
ci: coded bit
m bits per cell
La (Ci): extrinsic LLR
χc
Using the following equality:
the expression for the extrinsic LLR can also be written as follows:
This expression can be further simplified to:
This expression is mathematically equivalent to the above expression if all states or levels are equally likely.
Pattern-Dependent Extrinsic LLRs for Soft Outputs from Flash Memory
For one or more soft values, r, for the target cell and one or more values,
where
The pattern
The expression for the extrinsic LLR can also be written as follows:
This expression can be further simplified to:
This expression is mathematically equivalent to the above expression if all states are equally likely.
Extrinsic LLRs for Hard Outputs from Flash Memory
When soft outputs are not available from the flash memory, and the flash memory provides only hard data ŝ, which is the state or level assigned to the stored data by the flash memory, the extrinsice LLR can be computed as:
where E{r|ŝ} is the expected value for the soft value r (such as voltage) or some other estimate for the soft value r assuming the hard value ŝ. P(ŝ|s) is the probability that the hard value (such as state or level) ŝ is read assuming that the state or level s was originally written stored.
The extrinsic LLR can be computed alternatively as:
where P(s|ŝ) is the probability that the state or level s was originally written or stored assuming that the hard value (such as state or level) ŝ is read.
Pattern-Dependent Extrinsic LLRs for Hard Outputs from Flash Memory
When soft outputs are not available from the flash memory, and the flash memory provides only hard data ŝ, which is the state or level assigned to the stored data by the flash memory, the extrinsic LLR can be computed based on the pattern
where P(ŝ,
The pattern
The pattern-dependent LLRs can be computed alternatively as:
where P(s|ŝ,
Extrinsic LLRs without Soft Decoder Feedback for Soft Outputs from Flash
When no soft outputs from the decoder are used in the soft demapper/soft data generator (in other words La(Ci)=0), the extrinsic LLRs in the soft demapper/soft data generator can be computed as follows:
These extrinsic LLRs are then passed to the decoder as shown in
Pattern-dependent LLRs can be computed in this case as follows:
Extrinsic LLRs without Soft Decoder Feedback for Hard Outputs from Flash
If no soft data is available from the flash memory, and no soft outputs from the decoder are used to reduce the computation complexity the extrinsic LLRs can be compute as follows:
where E{r|ŝ} is the expected value for the soft value r (such as voltage) or some other estimate for the soft value r assuming the hard value ŝ. P(ŝ|s) is the probability that the hard value (such as state or level) ŝ is read assuming that the state or level s was originally written stored.
In an alternative implementation, the LLRs can be computed as:
where P(s|ŝ) is the probability that the state or level s was originally written or stored assuming that the hard value (such as state or level) ŝ is read.
Pattern-dependent LLRs can be computed in this case as follows:
Gaussian Approximation of Extrinsic LLRs for Soft Outputs from Flash
If the soft outputs from the flash memory (such as read threshold voltages) are modeled having Gaussian distributions, the conditional PDFs p(r|s) for soft output p(r) assuming originally stored or written level s can be expressed as:
where σ(s) is the standard deviation and E{r|s} is the mean or expected value of the soft output (such as threshold voltage) for state s.
Then, the extrinsic LLRs can be computed as:
If the voltage distributions for all states have the same standard deviation σ(s)=σ, this equation can be simplified to the following expression:
This equation can be further simplified to:
Gaussian Approximation of Extrinsic LLRs for Hard Outputs from Flash
When no soft output from the flash memory are available, the LLRs can computed as following assuming that the soft outputs are Gaussian distributed:
where E{r|s} is the mean or expected value of the soft output r (such as threshold voltage) for state s, and E{r|ŝ} is the mean or expected value of the soft output r (such as threshold voltage) for the hard output ŝ, which is the state or level assigned and provided by the flash memory.
If the voltage distributions for all states have the same standard deviation σ(s)=σ, this equation can be simplified to the following expression:
This equation can be further simplified to:
Gaussian Approximation of Pattern-Dependent Extrinsic LLRs for Hard Outputs from Flash Memory
Pattern-dependent LLRs for Hard outputs can be computed as follows if the distributions for the soft outputs are modeled as Gaussian:
where
If the voltage distributions for all states and patterns have the same standard deviation σ(s,
This equation can be further simplified to:
Gaussian approximation for Extrinsic LLRs without Soft Decoder Feedback for Soft Outputs from Flash Memory
When no soft decoder feedback is used, the extrinsic LLRs can be computed as follows using the Gaussian approximation for the soft output distributions when soft outputs from the flash memory are available:
If the voltage distributions for all states have the same standard deviation σ(s)=σ, this equation can be simplified to the following expression:
This expression can be further simplified to:
Gaussian approximation for Extrinsic LLRs without Soft Decoder Feedback for Hard Outputs from Flash Memory
When no soft decoder feedback is used, the extrinsic LLRs can be computed as follows using the Gaussian approximation for the soft output distributions when only hard outputs from the flash memory are available:
If the voltage distributions for all states have the same standard deviation σ(s)=σ, this equation can be simplified to the following expression:
This equation can be further simplified to:
The corresponding pattern-dependent LLRs are computed as follows:
If the voltage distributions for all states and patterns have the same standard deviation σ(s,
This can be further simplified to:
Read Statistics Tables
Statistics Collection Using Reference Cells
The exemplary reference cells 1920 are shown in
In a further variation, the location of the reference cells 1920 is varied over time in order that the performance of the reference cells 1920 reflects the performance of the entire array 1900. In yet another variation, the statistics can be obtained from reference cells 1920 in a number of different arrays 1900 and then the results are averaged.
As discussed further below, the reference cells 1920 are read and compared to the known pattern. For example, an estimate of the probability, p0, of detecting an error can be obtained as follows:
The programming and reading of reference cells can optionally be combined with wear-level algorithms that spread out the wear and tear across the memory, in a known manner.
In various embodiments, the reference cells 1920 can store all possible levels, can have a periodic pattern (where the levels alternate) and be either periodically written or read over time.
As discussed hereinafter, various embodiments of the present invention collect and employ bit-based statistics, cell-based or pattern-dependent statistics. For embodiments employing bit-based statistics, bit error performance is measured. For embodiments employing cell-based statistics, read statistics are measured on a cell basis. For pattern-dependent statistics, read statistics account also for the data pattern stored in aggressor cells.
1. Bit-Based Statistics Using Reference Cells
Thereafter, the reference cells are read during step 2020. The statistics generation process 2000 then determines an error metric, such as number of erroneous bits in the reference cells 1920, during step 2030. As previously indicated, the reference cells 1920 that were read during step 2020 can be compared to the known pattern.
The statistics generation process 2000 computes the error probability statistics during step 2040 as follows:
2. Cell-Based Statistics Using Reference Cells
Thereafter, the cell-based statistics generation process 2100 reads the voltage levels during step 2120 from the reference cells 1920. For each possible write level, s or LVLwrit, the cell-based statistics generation process 2100 counts during step 2130 the number of times each level, ŝ or LVLread, was read when this write level, s or LVLwrit, was written.
The error probability statistics are computed during step 2140 as follows:
where # denotes number.
Alternatively, the error probability statistics can be computed during step 2140 as follows (reverse case):
It is noted that alternative normalization terms can be used in the denominator for the equations computed during step 2140.
Statistics Collection Using Decoded Codewords
In the decoded codeword embodiments of the present invention, soft data is generated for a memory device, such as a flash memory device 810, 910, using data obtained form decoded codewords as reference cells. Generally, hard data from a memory device, such as a flash memory device is decoded, and an error metric is obtained, such as a number of erroneous decoded bits. For example, the number of erroneous decoded bits can be obtained by comparing the decoded bits to the hard data obtained from the memory device. In this manner, the decoded codewords can be assumed to be correct and can serve as the reference cells discussed above.
1. Bit-Based Statistics Using Decoded Codewords
Thereafter, the bit-based statistics generation process (decoded codewords) 2200 decodes the hard data during step 2220. An error metric, such as the number of erroneous bits from the flash memory is determined during step 2230. The number of erroneous bits can be determined, for example, by comparing the decoded bits (which are assumed to be correct) to the hard data from the flash memory.
The statistics generation process 2200 computes the error probability statistics during step 2240 as follows:
2. Cell-Based Statistics Using Decoded Codewords
Thereafter, the cell-based statistics generation process (decoded codewords) 2300 decodes the hard data during step 2320. The decoded bits are then mapped to the corresponding voltage levels during step 2325.
For each possible decoded voltage level, s or LVLdecod, the cell-based statistics generation process (decoded codewords) 2300 then counts during step 2330 the number of times each voltage level, ŝ or LVLread, was read when this decoded level, s LVLdecod, was decoded.
The error probability statistics are computed during step 2340 as follows:
Alternatively, the error probability statistics can be computed during step 2340 as follows (reverse case):
Condition-Specific Error Probabilities
As previously indicated, the error probability statistics can optionally be obtained for different conditions, such as for different locations of the memory array, for different patterns of aggressor cells, for different temperatures, for different number of program/erase or read cycles, etc. Thereafter, when the same conditions are observed, the soft data can be obtained using the proper condition-dependent statistics or probabilities.
As discussed below in conjunction with
Bit-Based Location-Specific Statistics
The location-specific statistics generation process 2400 then computes the location-specific error probability statistics during step 2440, as follows:
Cell-Based Location-Specific Statistics
For a cell-based location-specific implementation, the different locations of interest in the memory array may comprise, for example, one or more of different wordline locations or bitline locations (such as even and odd bitlines).
The cell-based location-specific statistics generation process 2500 then computes the location-specific error probability statistics during step 2540, as follows:
Alternatively, p(s|
In various implementations of the present invention, separate bit-based, cell-based or pattern-based statistics can be collected for each page, wordline or memory array, or for groups of pages, wordline or memory arrays (such as for the different page levels within a wordline, or for bottom, middle and top wordlines in a memory array). In addition, statistics can be averaged over multiple pages, wordlines or memory arrays and then the average statistics can be used for these pages, wordlines or memory arrays.
Pattern-Dependent Statistics
As previously indicated, various embodiments of the present invention compute extrinsic LLRs, Le, for one or more soft values, r, for a target cell and one or more values,
Generally, each probability density function in
According to one aspect of the invention, disturbance in a flash memory device can be characterized by obtaining one or more probability density functions that express pattern-dependent disturbance of one or more aggressor cells on at least one target cell. The disturbance may comprise, for example, back pattern dependency, intercell interference, program disturb, read disturb and/or additional noise. The probability density function can be updated based on one or more data decisions. The probability density function can be represented as a stored table and/or an expression.
It is further noted that the table entries or function parameters of the probability density functions may optionally be adaptively updated, e.g., based on received data decisions. For example, a probability density function is selected based on a received aggressor pattern,
As previously indicated, the number of aggressor cells 720 that influence a given target cell 710 can be reduced or neglected based on a number of factors. In this manner, the number of probability density functions that need to be considered can be reduced. For example, in an exemplary implementation that mitigates ICI, if the diagonal coupling coefficients, kxy, are much smaller than other coupling coefficients (as is often the case), the ICI from the diagonally positioned cells can be neglected. In addition, the programming sequence influences the number of aggressor cells 720 that need to be considered. For example, if wordlines are always written in a fixed order, such as a bottom up approach, then there is may be no disturbance ICI contribution from cells in a lower wordline. In addition, if the disturbance ICI is symmetric with respect to left and right neighbors of a target cell 710, the number of probability density functions that need to be characterized is reduced by half.
As previously indicated, in one exemplary implementation, the probability density functions can be approximated using Gaussian probability density functions. In further variations, improved performance can be obtained at the expense of additional complexity, if the probability density functions are based on, for example, histograms. When the probability density functions are implemented using histograms, the probability density functions can be adaptively updated using successfully decoded wordlines to train the histograms.
In a further embodiment, the probability density functions and approximation thereof can be used by trellis-based detection algorithms, such as Viterbi, Soft Output Viterbi (SOVA) and BCJR algorithms to detect the read data.
1. Bit-Based Pattern-Dependent Statistics
For one or more identified patterns, the number of erroneous target bits having the corresponding pattern is determined during step 2730. The error probability statistics are then computed during step 2740, as follows:
It is noted that the above-described techniques can optionally be integrated to obtain location-specific, pattern-dependent statistics, as would be apparent to a person of ordinary skill in the art. In addition, in further variations, the read statistics can also or alternatively be obtained as a function of the endurance, read cycles, retention, temperature or other parameters of the memory device.
2. Cell-Based Pattern-Dependent Statistics
Thereafter, for one or more identified patterns, and for each possible reference voltage level, s or LVLref, the cell-based pattern-dependent statistics generation process 2800 counts during step 2830 the number of times each voltage level, ŝ or LVLread, was read when this reference level, s or LVLref, was decoded or written.
The pattern-dependent error probability statistics are computed during step 2840 as follows:
Asymmetric Error Probability Statistics
As previously indicated, in certain channels, such as NAND flash memory channels, the probability of detecting an error for different possible binary values, such as binary zero and binary one, can differ significantly. Thus, the present invention optionally provides the probability of detecting an error for asymmetric channels.
Asymmetric Error Probabilities—Reference Cells
As previously indicated, in certain channels, such as NAND flash memory channels, the probability of detecting an error for different possible binary values, such as binary zero and binary one, can differ significantly. Thus, the present invention optionally provides the probability of detecting an error for asymmetric channels.
As shown in
Thereafter, the asymmetric statistics generation process 2900 determines the number of erroneous bits having a binary one in the reference data during step 2950, and then computes the error probability statistics for binary one during step 2960, as follows:
Asymmetric Error Probabilities—Decoded Codewords
The asymmetric statistics generation process 3000 then determines the number of erroneous bits from the flash memory that have a binary zero in the decoded data during step 3030. The error probability statistics for binary zero are then computed during step 3040, as follows:
Similarly, the number of erroneous bits from the flash memory that have a binary one in the decoded data is then determined during step 3050. The error probability statistics for binary one are then computed during step 3060, as follows:
In one embodiment, the statistics can be collected, computed and stored while the NAND flash memory is idle (i.e., not actively reading or writing user data).
While the exemplary embodiments have employed statistics collection using reference cells or decoder feedback, adaptive methods can also be employed to estimate statistics using detected or decoded data, for example, using a minimum mean square error criterion.
In an alternative embodiment, statistics or corresponding LLRs can be precomputed for worst-case operating condition (in terms of the number of, for example, the program/erase cycles, retention time and temperature), for example, based on experimental characterization of flash memories and then use them for bad channel conditions. In this manner, more accurate statistics or LLRs are available when the error probability is the highest. In other words, pre-defined statistics or corresponding LLRs can be precomputed for predefined operating conditions.
In a further variation, soft data can be iteratively generated based on different statistics (such as error probabilities) until decoding is successful. The statistics can be varied over a range until successful detection or decoding of the data. This variation of the invention provides a virtual reread of the data. Although the data is not actually reread from the flash memory, the data is decoded successfully with different soft information.
Error Performance Based on Unsatisfied Parity Checks
Aspects of the present invention recognize that unsatisfied parity checks can also be employed as a performance metric to obtain soft data. Consider a (N,K,J,L) LDPC code where N is codeword length, K is the uncoded codeword length (user data length in a codeword), and J and L are column and row weights of the parity check matrix respectively. When the (N,K,J,L) LDPC codeword is transmitted or stored with an error probability p0, the probability that a check sum fails in the first iteration can be expressed as follows:
This probability can be estimated as follows:
Thus, the error probability, p0, can be estimated as follows:
In the above procedure, the channel and initial LLR values can be estimated before performing iterative decoding. The channel estimation complexity and latency are less than that of one iteration of soft-decision decoding with a significant performance gain over hard decision decoding of LDPC codes. The additional hardware compared to a standard implementation of soft-decision decoding is a block that performs the following computation:
Initially, the statistics generation process 3100 obtains the number of unsatisfied parity checks during step 3110. The statistics generation process 3100 then computes the error probability statistics during step 3120 as follows:
Location-Specific Statistics—Unsatisfied Parity Checks
As shown in
Asymmetric Statistics Based on Unsatisfied Parity Checks
The values for p and q can be computed based on the average error probability probability,
The ratio k of error probabilities, p and q, can be obtained using data analysis, such as the decoded codewords techniques described above. Alternatively, the ratio k of error probabilities, p and q, can be obtained, for example, using the reference cell techniques described in International Patent Application entitled “Methods and Apparatus for Soft Data Generation for memory devices Using Reference Cells,” filed contemporaneously herewith and incorporated by reference herein. The ratio k of error probabilities, p and q, would typically be computed offline and stored, for example, in a table. As shown in
The average error probability probability,
Thereafter, the error probability statistics, p, for binary zero are computed during step 3330, as follows:
Thereafter, the error probability statistics, q, for binary one are computed during step 3340, as follows:
It is noted that the error probability statistics, p and q, computed by the asymmetric statistics generation process (unsatisfied parity checks) 3300 can optionally be location-specific and/or pattern-dependent.
Process, System and Article of Manufacture Details
While a number of flow charts herein describe an exemplary sequence of steps, it is also an embodiment of the present invention that the sequence may be varied. Various permutations of the algorithm are contemplated as alternate embodiments of the invention. While exemplary embodiments of the present invention have been described with respect to processing steps in a software program, as would be apparent to one skilled in the art, various functions may be implemented in the digital domain as processing steps in a software program, in hardware by circuit elements or state machines, or in combination of both software and hardware. Such software may be employed in, for example, a digital signal processor, application specific integrated circuit, micro-controller, or general-purpose computer. Such hardware and software may be embodied within circuits implemented within an integrated circuit.
Thus, the functions of the present invention can be embodied in the form of methods and apparatuses for practicing those methods. One or more aspects of the present invention can be embodied in the form of program code, for example, whether stored in a storage medium, loaded into and/or executed by a machine, or transmitted over some transmission medium, wherein, when the program code is loaded into and executed by a machine, such as a computer, the machine becomes an apparatus for practicing the invention. When implemented on a general-purpose processor, the program code segments combine with the processor to provide a device that operates analogously to specific logic circuits. The invention can also be implemented in one or more of an integrated circuit, a digital signal processor, a microprocessor, and a micro-controller.
As is known in the art, the methods and apparatus discussed herein may be distributed as an article of manufacture that itself comprises a computer readable medium having computer readable code means embodied thereon. The computer readable program code means is operable, in conjunction with a computer system, to carry out all or some of the steps to perform the methods or create the apparatuses discussed herein. The computer readable medium may be a recordable medium (e.g., floppy disks, hard drives, compact disks, memory cards, semiconductor devices, chips, application specific integrated circuits (ASICs)) or may be a transmission medium (e.g., a network comprising fiber-optics, the world-wide web, cables, or a wireless channel using time-division multiple access, code-division multiple access, or other radio-frequency channel). Any medium known or developed that can store information suitable for use with a computer system may be used. The computer-readable code means is any mechanism for allowing a computer to read instructions and data, such as magnetic variations on a magnetic media or height variations on the surface of a compact disk.
The computer systems and servers described herein each contain a memory that will configure associated processors to implement the methods, steps, and functions disclosed herein. The memories could be distributed or local and the processors could be distributed or singular. The memories could be implemented as an electrical, magnetic or optical memory, or any combination of these or other types of storage devices. Moreover, the term “memory” should be construed broadly enough to encompass any information able to be read from or written to an address in the addressable space accessed by an associated processor. With this definition, information on a network is still within a memory because the associated processor can retrieve the information from the network.
It is to be understood that the embodiments and variations shown and described herein are merely illustrative of the principles of this invention and that various modifications may be implemented by those skilled in the art without departing from the scope and spirit of the invention.
The present application claims priority to United States Provisional Patent Application Ser. No. 61/194,751, filed Sep. 30, 2008, and International Patent Application Serial No. PCT/US09/49333, filed Jun. 30, 2009, entitled “Methods and Apparatus for Soft Demapping and Intercell Interference Mitigation in Flash Memories,” each incorporated by reference herein. The present application is related to International Patent Application entitled “Methods and Apparatus for Soft Data Generation for Memory Devices Based on Performance Factor Adjustment,” International Patent Application entitled “Methods and Apparatus for Soft Data Generation for Memory Devices,” and International Patent Application entitled “Methods and Apparatus for Soft Data Generation for Memory Devices Using Reference Cells,” each filed simultaneously herewith and incorporated by reference herein.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/US09/59087 | 9/30/2009 | WO | 00 | 5/31/2011 |
Number | Date | Country | |
---|---|---|---|
61194751 | Sep 2008 | US |