WO2013006579A2 - Non-volatile memory error mitigation - Google Patents
Non-volatile memory error mitigation Download PDFInfo
- Publication number
- WO2013006579A2 WO2013006579A2 PCT/US2012/045306 US2012045306W WO2013006579A2 WO 2013006579 A2 WO2013006579 A2 WO 2013006579A2 US 2012045306 W US2012045306 W US 2012045306W WO 2013006579 A2 WO2013006579 A2 WO 2013006579A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- llr
- level
- volatile memory
- memory
- minimum
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
- G06F11/0754—Error or fault detection not based on redundancy by exceeding limits
- G06F11/076—Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
Definitions
- Embodiments of the invention relate to techniques for mitigation of errors in non- volatile memory devices (e.g., flash memory). More particularly, embodiments of the invention relate to techniques for modification of encoding and/or decoding techniques to mitigate non- volatile memory device errors.
- non- volatile memory devices e.g., flash memory
- embodiments of the invention relate to techniques for modification of encoding and/or decoding techniques to mitigate non- volatile memory device errors.
- NAND flash memories that have two or three bits per cell may suffer from program disturb (PD) and single bit cell leakage (SBCL).
- PD may cause a level 0 written to a NAND flash cell to gain charge if neighboring cells are charged to a higher level, for example, level 7, which may cause the bit to be read out as a level 1 (or even a higher level).
- SBCL happens when charge leaks from a higher level, for example, a level 7 to result in the bit being read out as a lower level.
- Both PD and SBCL can cause a bit 1 to be readout as bit 1 for the upper page. This impairment is referred to as long tails due to PD and SBCL.
- LDPC Low-Density Parity Check
- Figure 1 is a block diagram of one embodiment of an electronic system.
- Figure 2 is a diagram of voltage versus probability that may represent a technique for decoding reads from flash memory having two bits per cell.
- Figure 3 is a diagram of voltage versus probability that may represent a technique for decoding reads from flash memory having three bits per cell.
- Figure 4 is a flow diagram of one embodiment of a technique for decoding a memory cell using a modified LLR.
- Figure 5 is a flow diagram of one embodiment of a technique for modifying level patterns to compensate for program disturb errors.
- Figure 6 is an example state transition diagram for a system that does not permit L7-L0 and L0-L7 transitions.
- Figure 7 is a block diagram of one embodiment of a solid state disk.
- Figure 1 is a block diagram of one embodiment of an electronic system.
- the electronic system illustrated in Figure 1 is intended to represent a range of electronic systems (either wired or wireless) including, for example, desktop computer systems, laptop computer systems, tablet devices, cellular telephones, personal digital assistants (PDAs) including cellular-enabled PDAs, set top boxes.
- Alternative electronic systems may include more, fewer and/or different components.
- Electronic system 100 includes bus 105 or other communication device to communicate information, and processor 110 coupled to bus 105 that may process information. While electronic system 100 is illustrated with a single processor, electronic system 100 may include multiple processors and/or co-processors. Electronic system 100 further may include random access memory (RAM) or other storage device 120 (referred to as memory), coupled to bus 105 and may store information and instructions that may be executed by processor 110. Memory 120 may also be used to store temporary variables or other intermediate information during execution of instructions by processor 110.
- RAM random access memory
- Memory 120 may also be used to store temporary variables or other intermediate information during execution of instructions by processor 110.
- memory 120 includes non-volatile memory.
- the non- volatile memory may be any type of non-volatile memory, for example, flash memory or phase change memory.
- NAND flash memory is utilized.
- the flash memory may be single bit per cell memory, or multi-bit per cell memory. In the examples that follow, two-bit per cell NAND flash memory and three-bit per cell NAND flash memory; however, the techniques described herein are applicable to other non- volatile memories.
- Electronic system 100 may also include read only memory (ROM) and/or other static storage device 130 coupled to bus 105 that may store static information and instructions for processor 110.
- Data storage device 140 may be coupled to bus 105 to store information and instructions.
- Data storage device 140 such as a magnetic disk or optical disc and corresponding drive may be coupled to electronic system 100.
- Data storage device 140 may also be a Solid State Drive (SSD), one embodiment of which is described in greater detail below.
- the SSD may include an on-chip controller and NAND flash memory.
- Electronic system 100 may also be coupled via bus 105 to display device 150, such as a cathode ray tube (CRT) or liquid crystal display (LCD), to display information to a user.
- display device 150 such as a cathode ray tube (CRT) or liquid crystal display (LCD)
- CTR cathode ray tube
- LCD liquid crystal display
- Alphanumeric input device 160 may be coupled to bus 105 to communicate information and command selections to processor 110.
- cursor control 170 such as a mouse, a trackball, or cursor direction keys to communicate direction information and command selections to processor 110 and to control cursor movement on display 150.
- Electronic system 100 further may include network interface(s) 180 to provide access to a network, such as a local area network.
- Network interface(s) 180 may include, for example, a wireless network interface having antenna 185, which may represent one or more antenna(e).
- Network interface(s) 180 may also include, for example, a wired network interface to
- network cable 187 which may be, for example, an Ethernet cable, a coaxial cable, a fiber optic cable, a serial cable, or a parallel cable.
- network interface(s) 180 may provide access to a local area network, for example, by conforming to IEEE 802. l ib and/or IEEE 802.1 lg standards, and/or the wireless network interface may provide access to a personal area network, for example, by conforming to Bluetooth standards. Other wireless network interfaces and/or protocols can also be supported.
- IEEE 802.11b corresponds to IEEE Std. 802.11b-1999 entitled "Local and Metropolitan Area Networks, Part 11 : Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications: Higher-Speed Physical Layer Extension in the 2.4 GHz Band," approved September 16, 1999 as well as related documents.
- IEEE 802.1 lg corresponds to IEEE Std.
- Bluetooth protocols are described in "Specification of the Bluetooth System: Core, Version 1.1,” published February 22, 2001 by the Bluetooth Special Interest Group, Inc. Associated as well as previous or subsequent versions of the Bluetooth standard may also be supported.
- network interface(s) 180 may provide wireless communications using, for example, Time Division, Multiple Access (TDMA) protocols, Global System for Mobile Communications (GSM) protocols, Code Division, Multiple Access (CDMA) protocols, and/or any other type of wireless communications protocol.
- TDMA Time Division, Multiple Access
- GSM Global System for Mobile Communications
- CDMA Code Division, Multiple Access
- Figure 2 is a diagram of voltage versus probability that may represent a technique for decoding reads from flash memory having two bits per cell.
- the diagram of Figure 2 corresponds to a two-bit per cell NAND flash memory, but the concepts represented by Figure 2 are applicable to other types of non- volatile memory as well.
- Curves 210, 220, 230 and 240 represent the mathematical probability that the voltage along the horizontal axis corresponds to various bit combinations.
- a binary value of "11” is referred to as Level 0 (L0)
- the binary value of "10” is referred to as Level 1 (LI)
- the binary value of "00” is referred to as Level 2 (L2)
- the binary value of "01” is referred to as Level 3 (L3).
- a voltage read from a memory cell can be decoded to correspond to a two-bit value.
- read errors may occur that may cause a value written as L2 to be read as LI or that a value written as LI to be read as L2. This would be a bit error.
- Figure 2 illustrates various Log-Likelihood Ratio (LLR) values 260 that may be utilized to estimate the probability that the corresponding voltage should be treated as LI or L2. As the voltage that is read from the cell gets closer to center read reference 260, the lower the confidence that the voltage represents LI or L2.
- LLR Log-Likelihood Ratio
- a modified LLR may be used to compensate for misplacement, PD and/or SBCL.
- a modified LLR used for decoding memory reads from a NAND memory device may be modified to compensate for the misplacement effect described above.
- the LLR values may be computed based on the channel and the number of reads. If the number of reads is n, then n+1 LLR values are computed depending on the level distribution statistics. In the example of Figure 2, five reads are performed and 6 LLR values are generated.
- LLR values are typically symmetric because the misplacement model is not incorporated in theoretical computations. If a misplacement error occurs, a 1 bit is read out as a 0 and the LLR of the 0 due to misplacement can take on a value that erroneously indicates that it has high reliability. The can cause appreciable degradation if the misplacement probability is above some threshold value. In one embodiment, a misplacement probability is incorporated into the LLR computation.
- the PD and SBCL error can be described as long-tail effects and the techniques described herein may be utilized to use the misplacement probability incorporated into the LLR computation to improve performance of the LDPC decoder to offset both long tails and misplacement.
- the theoretical model follows with system level applications.
- the above edge variance of Level 0 will be much higher compared to the below edge variance of Level 1, o > c ⁇ .
- the reference voltage is applied in the valley between Level 0 and Level 1. Because a NAND read results in soft information, the readout voltage value r is mapped to the LLR.
- the LLR which would be a linear function of the received noisy level if ideal Gaussian distributions with the same variance were realized is modified to a non- linear function of the readout voltage level.
- a non-linear mapping of the readout voltage can be provided to generate the LLR values that are input to the LDPC decoder. This LLR modification can be used to combat long tails due to different variances between the below edge variance and above edge variance of two levels.
- the lower page is programmed first. Subsequently, the middle page is programmed and to program the middle page, the lower page information has to be read. While reading the lower page information, errors may occur and a 1 bit can be read out as a 0 bit, and vice versa. If this error occurs, then the final programmed voltage is in error
- Misplacement can be compensated for during the LDPC decoding.
- Misplacements can be single sided or double sided. For example, if only two levels are programmed, in single sided misplacements Level 0 is correctly programmed, but Level 1 can be erroneously programmed as a Level 0. Double sided misplacements occur when both levels can be incorrectly read out with the same probability.
- the effect of misplacements is to clip the LLR values. Because the high confidence 0 can be a consequence of a 1 mapping to a 0 due to misplacement, the reliability is clipped and values larger than some threshold (which depends on the misplacement probability) should not be allowed. In single sided misplacement, only the LLR for the bit that is more error prone is clipped because the error-prone bit is not as reliable as the other bit.
- the magnitude of the LLR for the 0 bit may be reduced to the minimum of: 1) the regular LLR value, or 2) the reduced LLR, which is a function of the misplacement probability.
- the voltage read from the cell may be decoded and utilized.
- Data read from the cell may be utilized for any purpose. For example, the data may be written to a different memory location in the non- volatile memory, the data may be written to a location in a volatile memory, the data may be used by a computational circuit to perform an operation, the data may represent pixel data to be displayed on a display device, or may represent audio information to be use to drive speakers, etc.
- Figure 3 is a diagram of voltage versus probability that may represent a technique for decoding reads from flash memory having three bits per cell. Curves 310, 320, 330, 340, 350, 360, 370 and 380 represent the mathematical probability that the voltage along the horizontal axis corresponds to various bit combinations.
- a binary value of "111” is referred to as Level 0 (L0)
- the binary value of "011” is referred to as Level 1 (LI)
- the binary value of "001” is referred to as Level 2 (L2)
- the binary value of "101” is referred to as Level 3 (L3)
- the binary value of "100” is referred to a Level 4 (L4)
- the binary value of "000” is referred to as Level 5 (L5)
- the binary value of "010” is referred to as Level 6 (L6)
- the binary value "110” is referred to as Level 7 (L7).
- the first bit in the 3-bit representation above is the upper page bit
- the middle bit is the middle page bit and the least significant bit is the lower page bit.
- a voltage read from a memory cell can be decoded to correspond to a three-bit value.
- read errors may occur that may cause a value written as L2 to be read as LI or that a value written as LI to be read as L2. This would be a bit error.
- Read reference values 315, 325, 335, 345, 355, 365 and 375 indicate boundaries between levels.
- the LLR techniques discussed above for two-bit cells are equally applicable to three-bit cells as illustrated in Figure 3.
- Figure 4 is a flow diagram of one embodiment of a technique for decoding a memory cell using a modified LLR.
- the technique of Figure 4 described one embodiment of a technique for reading a cell of a non- volatile memory (e.g., NAND flash).
- the data may be written to the cell in any manner known in the art.
- the cell level is read, 410. Reading of the cell level may be accomplished in any manner known in the art.
- the cell may be, for example, a two-bit NAND flash cell, a three-bit NAND flash cell, a four-bit NAND flash cell, or other type of memory cell.
- the level is decoded, 420. Decoding is accomplished utilizing the modified LLR and/or standard LLR decoding techniques. As discussed above, the modified LLR may provide a mechanism to compensate for misplacement and provide an error correcting effect.
- the bits may be utilized, 430. Bits representing the cell level may be transmitted, stored, or otherwise utilized to provide functionality to a system communicatively coupled with the memory having the cell.
- Non- volatile memories may also suffer from PD and or SBCL.
- PD causes a L0 written to the cell to gain charge if the neighboring cells are programmed to a binary "111" or Level 7 (L7) to be read as a LI (or maybe even some other higher level).
- SBCL causes charge to leak from a L7 to be read as a Level 6 (L6) or lower.
- the LDPC decoder can use this information to modify the LLRs. For example, if three neighboring levels are 7-1-7, then the level 1 between the two level 7 values may be a level 0 that has been transformed to a level 1 due to PD. The LDPC decoder can use this information to pre-process LLRs before decoding.
- the LLR values are computed based on the cannel and the number of reads. If the number of reads is n, then n+1 LLR values are possible. If n is odd, half of the LLR values are negative and the other half are positive.
- this information can be used to flag suspect bit 0 reads that have a higher probability of being a bit 1 modified to a bit 0 as a consequence of PD.
- a program disturb means that a 7-0-7 level information is modified to a 7- 1-7 or even a 7-2-7 due to the middle cell picking up charge from neighboring L7 cells.
- a bit 1 that is the upper page bit for the L0 changes to a bit 0 during a read.
- the level information is available, all the 7-1-7 and/or 7-2-7 levels can be identified and the 0 bits for the middle cells can be flagged as suspect.
- the magnitude of the LLRs for these can be modified (e.g., clipped to the lowest allowable non-zero magnitude or clipped according to a percentage of PD) to better represent the PD phenomenon. This will prevent the 0 due to misplacement to appear as highly reliable bit and otherwise causes the LDPC decoder to misread the level.
- the magnitude of the LLR of the 0 bits for the 7-1-7 and/or 7-2-7 patterns are only clipped to the lowest non- zero value. If the LLR is set to 0, which means the bit is erased, then there is a greater loss of information, which degrades performance. If the magnitude is clipped to a non-zero value, then the unnecessary cautioning on an actual 0 only causes an LLR reduction and not an erasure. Thus, information loss is minimized.
- Various clipping values were tried and depending on the percentage of level 0's migrating to level 1 's due to program disturb, the clip value was changed. If the % is very low, then only clipping the LLR of the PD cell by one magnitude lower suffices. If the PD % is higher, then clipping to a lower magnitude is required.
- Constrained coding is another technique that may be used to avoid the occurrence of problematic (e.g., 7-0-7) patterns.
- constrained coding comes at the cost of adding redundancy and extra encoding/decoding complexity.
- a constrained coder substantially reduces the 7-0-7 patterns and the output of the constrained coder is free from the 7-0-7 pattern. Because the LOs are not surrounded by L7s, a PD error cannot occur.
- the level information is first passed through a constrained decoder before being decoded by the LDPC decoder.
- Constrained codes may be designed in various ways to avoid various patterns. Described below, are two types of constrained codes that may be used to avoid the 7-0-7 pattern.
- Type 1 constrained codes modify the level information such that the bits change for all pages. For example, in a three bit per cell memory, the lower page (LP), the middle page (MP) and the upper page (UP) may be modified.
- Type 2 constrained codes do not modify level information on all pages. For example, in a three bit per cell memory, only the UP may be modified. The advantage of Type 2 codes is that the level information is not necessary to decode the LP and MP bits, only the UP.
- Figure 5 is a flow diagram of one embodiment of a technique for modifying level patterns to compensate for program disturb errors.
- the flow diagram of Figure 5 may be utilized with either Type 1 or Type 2 constrained codes.
- a problematic pattern is detected, 510.
- the problematic pattern may be any of the patterns replaced as described herein, for example, 7-0-7.
- the problematic pattern is replaced by a replacement pattern, 520.
- the replacement pattern may be any pattern that does not cause a PD error.
- the replacement pattern is stored in the non- volatile memory, 530.
- the non-volatile memory may be, for example, a NAND flash memory.
- the replacement pattern may be stored until the corresponding memory location is accessed again.
- the replacement pattern is read, 540.
- the replacement pattern is detected, it is replaced by the problematic pattern, 550.
- Output bits are generated that correspond to the problematic pattern, 560.
- FIG. 6 is an example state transition diagram for a system that does not permit L7-L0 and L0-L7 transitions.
- States 600 and 640 correspond to a L7 or a L0 being the past output. Because the following output level cannot be a L0 or a L7, the transitions out of state 600 and state 540 do not allow a L0 or a L7.
- the state matrix for the system of Figure 6 is: 1 6 0
- a simple Type 1 constrained code that may be used is one that replaces:
- n is an integer greater than or equal to 0.
- the decoder will replace Pattern 2 with Pattern 1. This will eliminate the L7-L0 patterns at the output of the constrained encoder. If Pattern 1 is replaced by Pattern 2 by the constrained encoder, the L0-L7 pattern will be eliminate at the output of the constrained encoder.
- the encoder can map a L0 to a LI and a L7 to a L6.
- a L7-L0 transition can only be replaced by a L6-L0 or a L7-L1 or a L6-L1 transition.
- the L0-L7 transition can be replaced by a L0-L6, L1-L7 or a L1-L6 transition.
- the L7-L0 transition is replaced by a L6-L1 transition and the L0-L7 transition is replaced by a L0-L6 transition.
- the encoder my replace any L7-L0 transition with the L6-L1 transition and any L0-L7 transition with the L0-L6 transition in the level stream and append a 1 bit to the end of the bit stream.
- the appended bit stream is initialized to the null stream.
- the encoder may append a 0 bit to the end of the bit stream if the L6-
- Ll or the L0-L6 pattern exists in the level stream.
- the level stream is read out from left to right.
- the decoder reads the level stream an if a L6-L1 or a L0-L6 level is found, it either keeps the level stream untouched if the current appended bit in the appended bit stream is a 0 or replaces these levels with the L7-L0 or the L0-L7 if the appended bit is a 1.
- this constrained code is a variable length constrained code.
- the appended bit stream can be efficiently encoded.
- Level information can be generated from the appended bit stream and these levels can be programmed after the LDPC codeword is programmed.
- the bits for the appended level programmed information will be unused. Only while reading the UP, these levels will be read out and used by the constrained decoder.
- L6-L1 or L0-L6 transitions can map to different levels and consecutive levels that are not L6-L1 or L0-L6 may map to one of these levels.
- the first effect may lead to skipping of the levels that have an appended bit assigned to their occurrence and the second effect may lead to an appended bit expanded at the wrong position. Both of these may result in error propagation.
- the first effect may lead to a deletion in the level information space and the second effect may lead to insertion in the level information space.
- a more robust scheme may be utilized. Instead of appending a 0 or a 1 when the L6-L1 (or the L7-L0) tuple occurs (or a L0-L7 or L0-L6 tuple occurs), another 0 or 1 may be appended to indicate if the programmed level was a L6-L1 or a L0-L6 tuple.
- a trellis may be constructed to do a maximum-likelihood decoding on the channel to introduce insertions, deletions and errors to estimate the insertion and deletion positions. This can mitigate error propagation.
- FIG. 7 is a block diagram of an embodiment of a solid state disk 700.
- Solid state disks also “solid state drives”
- semiconductor memories also referred to as solid state memories, as a storage medium.
- Semiconductor memories are comparatively more rugged than hard drives and offer the advantage of being much less sensitive to vibration, dust, humidity, and sudden changes in velocity. Semiconductor memories also tend to require less power than a typical hard drive with similar storage capacity.
- Solid state disk 700 includes a solid state disk controller 702 to control nonvolatile memory array 704.
- Solid state disk 700 communicates with a host controller via a host interface 706.
- the solid state disk controller 702 controls reading, writing and erasing of the nonvolatile memory array 704 and may include LDPC decoder 720.
- solid state disk controller implements the techniques described herein and non-volatile memory array 704 may be a NAND flash memory.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Error Detection And Correction (AREA)
Abstract
Description
Claims
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| GB1323101.4A GB2505841B (en) | 2011-07-01 | 2012-07-02 | Non-volatile memory error mitigation |
| KR1020137034873A KR101576721B1 (en) | 2011-07-01 | 2012-07-02 | Non-volatile memory error mitigation |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US13/175,459 | 2011-07-01 | ||
| US13/175,459 US8549380B2 (en) | 2011-07-01 | 2011-07-01 | Non-volatile memory error mitigation |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| WO2013006579A2 true WO2013006579A2 (en) | 2013-01-10 |
| WO2013006579A3 WO2013006579A3 (en) | 2013-03-07 |
Family
ID=47391972
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/US2012/045306 Ceased WO2013006579A2 (en) | 2011-07-01 | 2012-07-02 | Non-volatile memory error mitigation |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US8549380B2 (en) |
| KR (1) | KR101576721B1 (en) |
| GB (1) | GB2505841B (en) |
| WO (1) | WO2013006579A2 (en) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20140098702A (en) * | 2013-01-31 | 2014-08-08 | 엘에스아이 코포레이션 | Detection and decoding in flash memories with selective binary and non-binary decoding |
Families Citing this family (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9294224B2 (en) | 2011-09-28 | 2016-03-22 | Intel Corporation | Maximum-likelihood decoder in a memory controller for synchronization |
| US9136011B2 (en) * | 2012-04-26 | 2015-09-15 | Hgst Technologies Santa Ana, Inc. | Soft information module |
| US9135106B2 (en) * | 2012-05-22 | 2015-09-15 | Hgst Technologies Santa Ana, Inc. | Read level adjustment using soft information |
| US8924824B1 (en) | 2013-03-12 | 2014-12-30 | Western Digital Technologies, Inc. | Soft-decision input generation for data storage systems |
| US9135113B2 (en) * | 2013-10-08 | 2015-09-15 | Apple Inc. | Recovery from programming failure in non-volatile memory |
| US9535777B2 (en) | 2013-11-22 | 2017-01-03 | Intel Corporation | Defect management policies for NAND flash memory |
| US9396792B2 (en) | 2014-02-26 | 2016-07-19 | Seagate Technology Llc | Adjusting log likelihood ratio values to compensate misplacement of read voltages |
| KR102247087B1 (en) * | 2014-07-08 | 2021-05-03 | 삼성전자주식회사 | Storage device and operating method of storage device |
| US9489257B2 (en) | 2014-09-28 | 2016-11-08 | Apple Inc. | Correcting soft reliability measures of storage values read from memory cells |
| CN105204958B (en) * | 2015-10-19 | 2018-03-13 | 哈尔滨工业大学 | A kind of coding method of extension NAND Flash data reliable memory times |
| US10033411B2 (en) | 2015-11-20 | 2018-07-24 | Intel Corporation | Adjustable error protection for stored data |
| TWI684106B (en) * | 2018-09-28 | 2020-02-01 | 大陸商深圳衡宇芯片科技有限公司 | Method of training artificial intelligence to correct log-likelihood ratio for storage device |
| US10891189B2 (en) * | 2019-01-28 | 2021-01-12 | Seagate Technology Llc | Customized parameterization of read parameters after a decoding failure for solid state storage devices |
| US12541309B2 (en) * | 2023-10-18 | 2026-02-03 | Apple Inc. | Low complexity crosstalk mitigation in a nonvolatile memory |
| US12608274B2 (en) | 2024-02-29 | 2026-04-21 | Apple Inc. | Low latency crosstalk mitigation in a nonvolatile memory |
Family Cites Families (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20090199075A1 (en) * | 2002-11-25 | 2009-08-06 | Victor Demjanenko | Array form reed-solomon implementation as an instruction set extension |
| US8059763B1 (en) * | 2006-11-09 | 2011-11-15 | Marvell International Ltd. | Approximate soft-information computation in multi-level modulation signaling schemes |
| US7975209B2 (en) * | 2007-03-31 | 2011-07-05 | Sandisk Technologies Inc. | Non-volatile memory with guided simulated annealing error correction control |
| US7876784B1 (en) * | 2007-09-27 | 2011-01-25 | Marvell International Ltd. | Methods and apparatus for providing receivers for use in superposition coded multi-user systems |
| US7656707B2 (en) * | 2007-12-14 | 2010-02-02 | Intel Corporation | Systems and methods for discrete channel decoding of LDPC codes for flash memory |
| US8156398B2 (en) * | 2008-02-05 | 2012-04-10 | Anobit Technologies Ltd. | Parameter estimation based on error correction code parity check equations |
| KR101425020B1 (en) * | 2008-03-17 | 2014-08-04 | 삼성전자주식회사 | Memory device and data determination method |
| US8797795B2 (en) * | 2008-07-01 | 2014-08-05 | Lsi Corporation | Methods and apparatus for intercell interference mitigation using modulation coding |
| US8953696B2 (en) * | 2008-08-05 | 2015-02-10 | Intel Corporation | Signal decoding systems |
| US8406048B2 (en) * | 2008-08-08 | 2013-03-26 | Marvell World Trade Ltd. | Accessing memory using fractional reference voltages |
| JP5535219B2 (en) | 2008-09-30 | 2014-07-02 | エルエスアイ コーポレーション | Method and apparatus for soft data generation in a memory device using a reference cell |
| US8301979B2 (en) * | 2008-10-07 | 2012-10-30 | Sandisk Il Ltd. | Low density parity code (LDPC) decoding for memory with multiple log likelihood ratio (LLR) decoders |
| US8239734B1 (en) * | 2008-10-15 | 2012-08-07 | Apple Inc. | Efficient data storage in storage device arrays |
| US20100251069A1 (en) | 2009-03-31 | 2010-09-30 | Qualcomm Incorporated | Method and apparatus for efficient memory allocation for turbo decoder input with long turbo codeword |
| US8930791B2 (en) * | 2009-12-23 | 2015-01-06 | Intel Corporation | Early stop method and apparatus for turbo decoding |
-
2011
- 2011-07-01 US US13/175,459 patent/US8549380B2/en active Active
-
2012
- 2012-07-02 KR KR1020137034873A patent/KR101576721B1/en active Active
- 2012-07-02 GB GB1323101.4A patent/GB2505841B/en active Active
- 2012-07-02 WO PCT/US2012/045306 patent/WO2013006579A2/en not_active Ceased
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20140098702A (en) * | 2013-01-31 | 2014-08-08 | 엘에스아이 코포레이션 | Detection and decoding in flash memories with selective binary and non-binary decoding |
| KR102154789B1 (en) | 2013-01-31 | 2020-09-10 | 엘에스아이 코포레이션 | Detection and decoding in flash memories with selective binary and non-binary decoding |
Also Published As
| Publication number | Publication date |
|---|---|
| KR101576721B1 (en) | 2015-12-10 |
| US8549380B2 (en) | 2013-10-01 |
| GB2505841B (en) | 2015-02-25 |
| US20130007559A1 (en) | 2013-01-03 |
| WO2013006579A3 (en) | 2013-03-07 |
| GB2505841A (en) | 2014-03-12 |
| KR20140018412A (en) | 2014-02-12 |
| GB201323101D0 (en) | 2014-02-12 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8549380B2 (en) | Non-volatile memory error mitigation | |
| US10437668B2 (en) | Memory controller, memory system, and method for controlling memory system | |
| US8756365B2 (en) | Apparatus and method for enhancing flash endurance by encoding data | |
| KR101519626B1 (en) | Semiconductor memory device and data processing method thereof | |
| US9136872B2 (en) | Memory, memory system, and error checking and correcting method for memory | |
| JP5502064B2 (en) | Memory device and data determination method | |
| CN102394113B (en) | Dynamic LDPC error correction code method for flash memory | |
| KR102257050B1 (en) | Controller, semiconductor memory system and operating method thereof | |
| US9582359B2 (en) | Write mapping to mitigate hard errors via soft-decision decoding | |
| KR102559925B1 (en) | Ldpc decoder, semiconductor memory system and operating method thereof | |
| US10445175B2 (en) | Controller and operating method thereof | |
| CN106128510B (en) | Controller, semiconductor memory system and operating method thereof | |
| CN104282340B (en) | A kind of solid-state disk flash chip threshold voltage cognitive method and system | |
| US8301978B2 (en) | Memory device and method of storing data with error correction using codewords | |
| US8386890B2 (en) | Error correction for multilevel flash memory | |
| CN104283570A (en) | Log-likelihood ratio (LLR) dampening in low-density parity-check (LDPC) decoders | |
| KR102617832B1 (en) | Memory controller, semiconductor memory system and operating method thereof | |
| US11881871B1 (en) | On-the-fly scaling factor change for irregular LDPC codes | |
| JP2015133161A (en) | Semiconductor storage device | |
| KR102314481B1 (en) | Siso decoding method, decoder and semiconductor memory system using the same | |
| CN112988453B (en) | Data recovery method for flash memory | |
| CN104810056A (en) | NAND flash memory error controller based on self-adaptive LDPC (low density parity check) code | |
| US9639421B2 (en) | Operating method of flash memory system | |
| CN116954984A (en) | Accurate BER reporting at CRC termination | |
| WO2025137627A1 (en) | Background data refresh using soft reads |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| ENP | Entry into the national phase |
Ref document number: 20137034873 Country of ref document: KR Kind code of ref document: A |
|
| ENP | Entry into the national phase |
Ref document number: 1323101 Country of ref document: GB Kind code of ref document: A Free format text: PCT FILING DATE = 20120702 |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 1323101.4 Country of ref document: GB |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 12807344 Country of ref document: EP Kind code of ref document: A2 |



