US8856616B1 - Two dimensional encoding for non-volatile memory blocks - Google Patents

Two dimensional encoding for non-volatile memory blocks Download PDF

Info

Publication number
US8856616B1
US8856616B1 US13/556,088 US201213556088A US8856616B1 US 8856616 B1 US8856616 B1 US 8856616B1 US 201213556088 A US201213556088 A US 201213556088A US 8856616 B1 US8856616 B1 US 8856616B1
Authority
US
United States
Prior art keywords
error correction
code
memory
vertical
decoding
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.)
Active, expires
Application number
US13/556,088
Inventor
Borja Manuel Peleato-Inarrea
Andrei Eugenievich Vityaev
Nenad Miladinovic
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mobiveil Inc
Original Assignee
Proton Digital Systems Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Proton Digital Systems Inc filed Critical Proton Digital Systems Inc
Priority to US13/556,088 priority Critical patent/US8856616B1/en
Assigned to Proton Digital Systems, Inc. reassignment Proton Digital Systems, Inc. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: VITYAEV, ANDREI, MILADINOVIC, NENAD, PELEATO-INARREA, BORJA
Application granted granted Critical
Publication of US8856616B1 publication Critical patent/US8856616B1/en
Assigned to Mobiveil, Inc. reassignment Mobiveil, Inc. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: Proton Digital Systems, Inc.
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1012Adding 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 codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Definitions

  • the invention is related to the non-volatile memory controller technology and more particularly to the encoding of the information during the write process and error correction during the read process from such memory.
  • NAND Flash Memory The main challenges of NAND Flash Memory are its higher cost relative to Hard-Disk-Drive storage, slow sequential write time, limited endurance (defined as the maximum number of Program/Erase cycles) and limited high temperature data retention time. These challenges are inter-related: in order to improve cost, one must use higher-density (more bits per cell) Flash, which in turn worsens its endurance and data retention.
  • SLC single level charge
  • P/E Program/Erase
  • 2-bit per cell MLC multiple level charge Flash is typically rated for 10K, 5K or even as few as 3K P/E cycles.
  • the present invention is directed to a method and system of using two independent error correcting codes in improving the Flash memory reliability that substantially overcomes disadvantages of the related art.
  • the invention described herein is a novel information encoding scheme that allows the data to be recovered after being corrupted by high levels of noise and read-back signal distortion.
  • the proposed memory device would read the data successfully and error-free. This allows one to either increase the maximum allowable number of P/E cycles, or increase the maximum rated temperature and hours of guaranteed data retention. Alternatively, this can be used to lower the cost of Flash memory, by using the higher-density Flash memory without incurring in the accompanying endurance and data retention issues.
  • the invention allows the data to be read in the presence of lower Signal-to-Noise (SNR) ratio, regardless of where the lower SNR comes from.
  • SNR Signal-to-Noise
  • the disturbance mechanisms addressed by this invention include inter-cell interference, read disturbance, erratic over-programming, high temperature retention loss, low temperature retention loss, high number of Program/Erase cycles, coarse (faster) write, coarse (faster) read operations and error floor of the LDPC (Low Density Parity Check) codes.
  • the basic unit for read and write operations in flash memories is called a page.
  • each page in a flash memory block is encoded independently so that they can be decoded as they are being read without additional read operations.
  • the aggressive scaling of the technology has reduced the reliability of the read values.
  • Manufacturers are now struggling with an increasingly large number of bit errors and require powerful error correction codes, which in turn reduce the power efficiency and throughput of the memory.
  • a block groups multiple adjacent pages that must be erased simultaneously.
  • This application describes an error correction scheme where the page-level (horizontal direction) encoding is combined with an additional independent encoding across all the pages in a block (vertical direction). This vertical encoding can significantly reduce the probability of unrecoverable errors, with a very low memory and complexity overhead cost. The amount of redundancy in both codes can be changed depending on the desired trade-off between efficiency and reliability.
  • both the horizontal and the vertical code generally have multiple independent codes concatenated in parallel.
  • each user information bit is mapped to two codewords: one horizontal (from the page-level code) and one vertical (from the block level code).
  • specific bit lines get corrupted, causing errors in the same bit position across all the pages in the block. If many of these errors were to fall on the same codeword, recovery would be very difficult.
  • the horizontal page-level code will be enough to correct any errors that might arise, and the vertical block-level encoding will be ignored. Only on those rare occasions in which the decoding of the page fails, it will be necessary to read additional pages and decode the vertical code. If this also fails, a joint decoding of both vertical and horizontal codes could be attempted.
  • FIG. 1 shows a diagram of an embedded memory package incorporating a flash controller IC and a plurality of flash chips
  • FIG. 2 is a diagram of the flash read channel where the low level controller is encoding user information and storing it on the flash.
  • FIG. 3 is a diagram of the flash read channel where the low level controller is decoding data read from the flash and returning it to the user.
  • FIG. 4 illustrates an allocation of information and parity bits on a flash block and a mapping of the bits to codewords, as proposed in the detailed description of the invention.
  • the invention described herein is a novel method of improving the reliability of the data read from the Non-Volatile Memory device that uses coding and signal processing algorithms for recovering of the data.
  • the invention is described using the example of NAND Flash Memory but can be used for any block-level access memory device such as Phase Change Memory, MRAM, STT-MRAM, Resistive-RAM, etc.
  • the invention described in this application uses the two independent error correction codes to improve overall reliability of the Flash memory by employing one error correction code in horizontal direction (pages) and second error correction code in the vertical direction (block).
  • Flash Read Channel a digital block which is implemented inside a Flash Controller.
  • the Flash Controller here can mean any of the following: Solid-State-Drive Controller IC, Flash Card Controller IC, USB Drive Controller IC.
  • FIG. 1 The overall system configuration is shown in FIG. 1 .
  • the algorithm for error recovery described in this invention divides the parity bits allocated for redundancy between two different codes with aim to reduce the overall parity allocation necessary to achieve desired performance.
  • the horizontal direction ECC code is used to encode user data stored in each page, and it is the primary error correction scheme for the error recovery in Flash memory.
  • the horizontal direction ECC code can be any linear ECC code.
  • the vertical code is a secondary error correction code with much smaller error correction capability.
  • the vertical direction ECC code can also be any linear ECC code.
  • the decoder of the horizontal code “flags” all the bits of the failed codeword, and/or all the bits of the page which contain the failed codeword, as “erasures”.
  • the “erasure” is a special symbol interpreted by the erasure decoder of the vertical code. It is an inherent property of all linear block codes that they can correct twice as many erasures than errors, see S. Lin and D. J. Costello, Error control coding , Prentice-Hall (2004).
  • the invention described herein relies on the above mentioned fundamental property of linear codes to improve the error correction capability of the vertical code by utilizing the information about erasures provided by the horizontal ECC code.
  • FIG. 1 shows the managed memory, consisting of a 3 bit-per-cell flash memory die 103 and a single Flash Controller silicon die with two distinct areas 101 (Flash Read Channel) and 102 (actual Flash Controller).
  • Each block in the flash memory die is divided into 516 pages, and each page has capacity for 9216 bytes.
  • the first 512 pages of each block will be used to store user information, and the last 4 pages will store the redundant bits introduced by the vertical code. Observe that the number of user information pages is a power of two, as is common practice in the industry.
  • LDPC Low Density Parity Check
  • RS Reed-Solomon
  • Each RS codeword takes 10 bits from each page, totaling 5120 bits of information from the first 512 pages in the block and saving 40 bits from the last 4 pages in the block for redundancy.
  • the mapping of bits to RS codewords, as well as the location of information and parity bits, is shown in FIG. 4 .
  • FIG. 2 shows a block diagram of the flash read channel 101 acting as encoder.
  • Block 200 is a more detailed block diagram of the read channel (block 101 in FIG. 1 ) during encoding.
  • the controller 102 When the host sends new information to be written on the flash memory, the controller 102 temporarily stores the incoming bits in a random access memory buffer 201 before writing them on the flash. In most flash memory architectures, all the information bits to be written on a flash block are available at the buffer 201 before the block starts getting written. If this is the case, the RS encoding does not require any dedicated memory space, since the encoding can be done in-place at the buffer once the first four pages have been transferred to the flash.
  • the information bits are first partitioned according to the RS codeword that they were mapped to and then each group is independently encoded.
  • the RS encoding is done by computing the syndrome (redundant bits) as explained in Lin et al., supra, and saving it in the space released by the pages already transferred to the flash. Once all the syndromes have been computed, they can be written to the last 4 pages of the flash block.
  • the RS encoding will require 4 pages of dedicated buffer space to store the syndromes.
  • the syndromes are computed as in the same way as in the previous case (as explained in [Lin, Costello]) but they need to be updated each time a new page is written on the flash block. Hence, four pages of buffer space are needed to store the provisional values for the syndromes.
  • the final value for the syndromes is known and can be written on the last 4 pages of the block. In the event of power loss before the block has been completely written, the syndromes would be lost (assuming the buffer was volatile). In this case, they can be recomputed by reading all the previous pages on the block.
  • Blocks 203 and 202 in FIG. 2 respectively represent the RS and LDPC encoders.
  • FIG. 3 shows a block diagram of the flash read channel 101 acting as decoder.
  • Block 300 is a more detailed block diagram of the read channel during decoding.
  • the controller 102 reads the corresponding pages and passes the read values to the LDPC decoder 302 .
  • the LDPC decoder 302 translates the read values into bits, attempting to correct any errors that might have occurred (there are several different algorithms for doing this, see, for example, Xiao-Yu Hu, Eleftheriou, E., Arnold, D.-M., Dholakia, A., Efficient implementations of the sum - product algorithm for decoding LDPC codes , Global Telecommunications Conference, November 2001 . In most cases, the LDPC decoder succeeds and the vertical RS encoding is ignored.
  • the controller 102 reads all the other pages in the block, decoding each of them in turn and computing their contribution to the RS residual in block 303 . It is not necessary to store all these pages in the buffer 301 , since only the residual is required for error correcting, see, for example, Lin et al., supra.
  • a Reed-Solomon code with four symbols of redundancy can correct up to four erroneous symbols, as long as their locations are known. Consequently, the suggested RS vertical encoding will always be able to correct blocks where the horizontal decoding failed for four or less pages.
  • LDPC codes offer very high error correction capability in general, but they occasionally fail due to their error floor. By relying on the vertical encoding to correct those cases, a significantly higher reliability than most of the other coding schemes results, with a very small cost in terms of code rate.

Abstract

Method for encoding information in a flash memory block which combines an independent encoding of each page with a block-level code across multiple pages. The method includes two independent error correction codes, one in horizontal direction and one in vertical direction, with horizontal direction error correction decoding; and vertical direction erasure correction decoding.

Description

CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a non-provisional of U.S. Provisional Patent Application No. 61/513,510, filed on Jul. 29, 2011, which is incorporated by reference herein in its entirety.
BACKGROUND OF THE INVENTION
1. Field of the Invention
The invention is related to the non-volatile memory controller technology and more particularly to the encoding of the information during the write process and error correction during the read process from such memory.
2. Description of the Related Art
The main challenges of NAND Flash Memory are its higher cost relative to Hard-Disk-Drive storage, slow sequential write time, limited endurance (defined as the maximum number of Program/Erase cycles) and limited high temperature data retention time. These challenges are inter-related: in order to improve cost, one must use higher-density (more bits per cell) Flash, which in turn worsens its endurance and data retention. As an example, SLC (single level charge) Flash is typically rated for 100K or 50K P/E (Program/Erase) cycles and 2-bit per cell MLC (multiple level charge) Flash is typically rated for 10K, 5K or even as few as 3K P/E cycles.
Therefore, there is a need in the art for a method and system that provide for the improved reliability in reading and recovering data from the Flash memories.
SUMMARY OF THE INVENTION
The present invention is directed to a method and system of using two independent error correcting codes in improving the Flash memory reliability that substantially overcomes disadvantages of the related art.
The invention described herein is a novel information encoding scheme that allows the data to be recovered after being corrupted by high levels of noise and read-back signal distortion. In other words, in a situation where the conventional read operation would fail (due to too many read errors exceeding the capability of the error correction code), the proposed memory device would read the data successfully and error-free. This allows one to either increase the maximum allowable number of P/E cycles, or increase the maximum rated temperature and hours of guaranteed data retention. Alternatively, this can be used to lower the cost of Flash memory, by using the higher-density Flash memory without incurring in the accompanying endurance and data retention issues.
The invention allows the data to be read in the presence of lower Signal-to-Noise (SNR) ratio, regardless of where the lower SNR comes from. The disturbance mechanisms addressed by this invention include inter-cell interference, read disturbance, erratic over-programming, high temperature retention loss, low temperature retention loss, high number of Program/Erase cycles, coarse (faster) write, coarse (faster) read operations and error floor of the LDPC (Low Density Parity Check) codes.
The basic unit for read and write operations in flash memories is called a page. Traditionally, each page in a flash memory block is encoded independently so that they can be decoded as they are being read without additional read operations. However, the aggressive scaling of the technology has reduced the reliability of the read values. Manufacturers are now struggling with an increasingly large number of bit errors and require powerful error correction codes, which in turn reduce the power efficiency and throughput of the memory.
Before a page can be written, it needs to be erased. The basic unit for erase operations in flash memories is called a block. A block groups multiple adjacent pages that must be erased simultaneously. This application describes an error correction scheme where the page-level (horizontal direction) encoding is combined with an additional independent encoding across all the pages in a block (vertical direction). This vertical encoding can significantly reduce the probability of unrecoverable errors, with a very low memory and complexity overhead cost. The amount of redundancy in both codes can be changed depending on the desired trade-off between efficiency and reliability.
To simplify the encoding and decoding, both the horizontal and the vertical code generally have multiple independent codes concatenated in parallel. In this case each user information bit is mapped to two codewords: one horizontal (from the page-level code) and one vertical (from the block level code). In practice, it is common that specific bit lines get corrupted, causing errors in the same bit position across all the pages in the block. If many of these errors were to fall on the same codeword, recovery would be very difficult. In order to avoid this, it is recommended to map the bits to the vertical codewords in such a way that two bits occupying the same position in different pages are not assigned to the same codeword. For example, this could be achieved with the diagonal mapping in FIG. 4.
For most page reads, the horizontal page-level code will be enough to correct any errors that might arise, and the vertical block-level encoding will be ignored. Only on those rare occasions in which the decoding of the page fails, it will be necessary to read additional pages and decode the vertical code. If this also fails, a joint decoding of both vertical and horizontal codes could be attempted.
Additional features and advantages of the invention will be set forth in the description that follows, and in part will be apparent from the description, or may be learned by practice of the invention. The advantages of the invention will be realized and attained by the structure particularly pointed out in the written description and claims hereof as well as the appended drawings.
It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are intended to provide further explanation of the invention as claimed.
BRIEF DESCRIPTION OF THE ATTACHED DRAWINGS
The accompanying drawings, which are included to provide a further understanding of the invention and are incorporated in and constitute a part of this specification, illustrate embodiments of the invention and together with the description serve to explain the principles of the invention.
In the drawings:
FIG. 1 shows a diagram of an embedded memory package incorporating a flash controller IC and a plurality of flash chips;
FIG. 2 is a diagram of the flash read channel where the low level controller is encoding user information and storing it on the flash.
FIG. 3 is a diagram of the flash read channel where the low level controller is decoding data read from the flash and returning it to the user.
FIG. 4 illustrates an allocation of information and parity bits on a flash block and a mapping of the bits to codewords, as proposed in the detailed description of the invention.
DETAILED DESCRIPTION OF EMBODIMENTS OF THE INVENTION
Reference will now be made in detail to the preferred embodiments of the present invention, examples of which are illustrated in the accompanying drawings.
The invention described herein is a novel method of improving the reliability of the data read from the Non-Volatile Memory device that uses coding and signal processing algorithms for recovering of the data. The invention is described using the example of NAND Flash Memory but can be used for any block-level access memory device such as Phase Change Memory, MRAM, STT-MRAM, Resistive-RAM, etc. The invention described in this application uses the two independent error correction codes to improve overall reliability of the Flash memory by employing one error correction code in horizontal direction (pages) and second error correction code in the vertical direction (block).
The key algorithms used by the proposed invention are implemented in a digital block called “Flash Read Channel” which is implemented inside a Flash Controller. The Flash Controller here can mean any of the following: Solid-State-Drive Controller IC, Flash Card Controller IC, USB Drive Controller IC. The overall system configuration is shown in FIG. 1.
The algorithm for error recovery described in this invention divides the parity bits allocated for redundancy between two different codes with aim to reduce the overall parity allocation necessary to achieve desired performance. The horizontal direction ECC code is used to encode user data stored in each page, and it is the primary error correction scheme for the error recovery in Flash memory. The horizontal direction ECC code can be any linear ECC code. In this application, we propose but not limit the horizontal direction ECC code to be LDPC code since the class of LDPC codes is known to be one of the best ECC codes providing great error correction capability (although the invention is not limited to this scheme). The vertical code is a secondary error correction code with much smaller error correction capability. The vertical direction ECC code can also be any linear ECC code.
On those rare occasions where the horizontal ECC code fails, the decoder of the horizontal code “flags” all the bits of the failed codeword, and/or all the bits of the page which contain the failed codeword, as “erasures”. The “erasure” is a special symbol interpreted by the erasure decoder of the vertical code. It is an inherent property of all linear block codes that they can correct twice as many erasures than errors, see S. Lin and D. J. Costello, Error control coding, Prentice-Hall (2004). The invention described herein relies on the above mentioned fundamental property of linear codes to improve the error correction capability of the vertical code by utilizing the information about erasures provided by the horizontal ECC code.
An implementation of the invention on a NAND flash memory that uses the LDPC code as horizontal code and Reed-Solomon (RS) code as vertical code is described, and some of the advantages for this specific case are explained. FIG. 1 shows the managed memory, consisting of a 3 bit-per-cell flash memory die 103 and a single Flash Controller silicon die with two distinct areas 101 (Flash Read Channel) and 102 (actual Flash Controller).
Each block in the flash memory die is divided into 516 pages, and each page has capacity for 9216 bytes. The first 512 pages of each block will be used to store user information, and the last 4 pages will store the redundant bits introduced by the vertical code. Observe that the number of user information pages is a power of two, as is common practice in the industry.
We propose using an LDPC (Low Density Parity Check) code with 11% parity (1024 parity bytes per page) for the page-level encoding of the information pages and 6554 identical Reed-Solomon (RS) codes with 10 bits per symbol concatenated in parallel for the block-level encoding. The number of user information bits per page is not a multiple of 10, so for the purpose of the vertical encoding, four dummy zeros will be appended to the user information bits of each page. Each of the last 4 pages will therefore store 65540 parity bits from the RS codes, leaving only 8188 bits for the page-level code redundancy. Consequently, these pages cannot be encoded with the same LDPC code proposed above for the information pages, and a different LDPC code will be used. Another option that avoids using a different LDPC code for encoding of the vertical parity bits is to use an LDPC code that supports a slightly larger user length for information page encoding and perform shortening. Then, the same LDPC code can be used for encoding of both information and parity pages.
Each RS codeword takes 10 bits from each page, totaling 5120 bits of information from the first 512 pages in the block and saving 40 bits from the last 4 pages in the block for redundancy. The mapping of bits to RS codewords, as well as the location of information and parity bits, is shown in FIG. 4.
The encoding and decoding procedure will now be described. FIG. 2 shows a block diagram of the flash read channel 101 acting as encoder. Block 200 is a more detailed block diagram of the read channel (block 101 in FIG. 1) during encoding. When the host sends new information to be written on the flash memory, the controller 102 temporarily stores the incoming bits in a random access memory buffer 201 before writing them on the flash. In most flash memory architectures, all the information bits to be written on a flash block are available at the buffer 201 before the block starts getting written. If this is the case, the RS encoding does not require any dedicated memory space, since the encoding can be done in-place at the buffer once the first four pages have been transferred to the flash. The information bits are first partitioned according to the RS codeword that they were mapped to and then each group is independently encoded. The RS encoding is done by computing the syndrome (redundant bits) as explained in Lin et al., supra, and saving it in the space released by the pages already transferred to the flash. Once all the syndromes have been computed, they can be written to the last 4 pages of the flash block.
If the architecture of the flash memory is such that a block can start being written before all its information bits are available in the buffer 201, the RS encoding will require 4 pages of dedicated buffer space to store the syndromes. The syndromes are computed as in the same way as in the previous case (as explained in [Lin, Costello]) but they need to be updated each time a new page is written on the flash block. Hence, four pages of buffer space are needed to store the provisional values for the syndromes. When all 512 information pages have arrived, the final value for the syndromes is known and can be written on the last 4 pages of the block. In the event of power loss before the block has been completely written, the syndromes would be lost (assuming the buffer was volatile). In this case, they can be recomputed by reading all the previous pages on the block.
Finally, the page level LDPC encoding is done by computing the redundant bits as explained in Thomas J. Richardson and Rudiger L. Urbanke, Efficient Encoding of Low-Density Parity-Check Codes, IEEE Transactions in Information Theory, 47(2), February 2001, and writing the whole codeword (information and redundant bits) to the corresponding page in the flash 103. Blocks 203 and 202 in FIG. 2 respectively represent the RS and LDPC encoders.
FIG. 3 shows a block diagram of the flash read channel 101 acting as decoder. Block 300 is a more detailed block diagram of the read channel during decoding. When the host requests information from the flash memory, the controller 102 reads the corresponding pages and passes the read values to the LDPC decoder 302. The LDPC decoder 302 translates the read values into bits, attempting to correct any errors that might have occurred (there are several different algorithms for doing this, see, for example, Xiao-Yu Hu, Eleftheriou, E., Arnold, D.-M., Dholakia, A., Efficient implementations of the sum-product algorithm for decoding LDPC codes, Global Telecommunications Conference, November 2001. In most cases, the LDPC decoder succeeds and the vertical RS encoding is ignored.
In the rare cases in which the LDPC decoder 302 cannot recover the originally written bits, the controller 102 reads all the other pages in the block, decoding each of them in turn and computing their contribution to the RS residual in block 303. It is not necessary to store all these pages in the buffer 301, since only the residual is required for error correcting, see, for example, Lin et al., supra.
A Reed-Solomon code with four symbols of redundancy can correct up to four erroneous symbols, as long as their locations are known. Consequently, the suggested RS vertical encoding will always be able to correct blocks where the horizontal decoding failed for four or less pages. LDPC codes offer very high error correction capability in general, but they occasionally fail due to their error floor. By relying on the vertical encoding to correct those cases, a significantly higher reliability than most of the other coding schemes results, with a very small cost in terms of code rate.
Having thus described a preferred embodiment, it should be apparent to those skilled in the art that certain advantages of the described method and apparatus have been achieved. It should also be appreciated that various modifications, adaptations and alternative embodiments thereof may be made within the scope and spirit of the present invention. The invention is further defined by the following claims.

Claims (14)

What is claimed is:
1. A memory system with error correction, the system comprising:
a memory organized into physical rows and columns;
a read/write channel encoder/decoder storing error correction code data;
the error correction code data representing two independent error correction codes, a first error correction code in a horizontal (row) direction and a second error correction code in a vertical (column) direction;
wherein the read/write channel encoder/decoder uses the horizontal direction error correction for error decoding;
wherein the read/write channel encoder/decoder uses the vertical direction error correction for erasure correction decoding.
2. The system of claim 1, wherein the memory is a flash memory.
3. The system of claim 1, wherein horizontal direction decoding flags failed codeword bits/page bits with erasures.
4. The system of claim 1, wherein the vertical direction erasure correction decoding is performed on values obtained after horizontal direction errors decoding.
5. The system of claim 1, wherein an error floor of LDPC (Low Density Parity Check) codes when used in horizontal direction is mitigated by the vertical direction error correction code.
6. The system of claim 5, wherein an overall error correction performance of the system is calculated from a performance of the horizontal direction error correction code and erasure capability of the vertical direction error correction code.
7. The system of claim 1, wherein an LDPC (Low Density Parity Check) code used for the horizontal direction for information pages is different from vertical parity pages.
8. The system of claim 1, wherein the vertical error correction code is a Reed Solomon code.
9. The system of claim 1, wherein a Low Density Parity Check (LDPC) code is used for page-level encoding of the information pages and Reed-Solomon (RS) code is used for block-level encoding.
10. The system of claim 1, wherein the horizontal direction error correction code is a linear code.
11. The system of claim 1, wherein the vertical error correction code is a linear code.
12. The system of claim 1, wherein the read/write channel encoder/decoder includes a random memory access buffer for temporarily storing incoming data prior to encoding.
13. A memory system with error correction, the system comprising:
a flash memory having physical rows and columns;
a read/write channel receiving incoming user data;
a first error correction code in a horizontal (row) direction and a second error correction code in a vertical (column) direction, the error correction codes being independent of each other;
the incoming user data written into the memory in encoded form;
wherein the horizontal direction error correction is used for error decoding;
wherein the vertical direction error correction is used for erasure correction decoding.
14. A method of storing and recovering data in a memory with error correction, the method comprising:
receiving data in a read/write channel encoder/decoder;
encoding the received data using error correction code data representing two independent error correction codes, a first error correction code in a horizontal (row) direction and a second error correction code in a vertical (column) direction;
writing the encoded data into the memory;
reading the encoded data from the memory and using the horizontal direction error correction for error decoding; and
using the vertical direction error correction for erasure correction decoding.
US13/556,088 2011-07-29 2012-07-23 Two dimensional encoding for non-volatile memory blocks Active 2032-08-15 US8856616B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/556,088 US8856616B1 (en) 2011-07-29 2012-07-23 Two dimensional encoding for non-volatile memory blocks

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201161513510P 2011-07-29 2011-07-29
US13/556,088 US8856616B1 (en) 2011-07-29 2012-07-23 Two dimensional encoding for non-volatile memory blocks

Publications (1)

Publication Number Publication Date
US8856616B1 true US8856616B1 (en) 2014-10-07

Family

ID=51627114

Family Applications (1)

Application Number Title Priority Date Filing Date
US13/556,088 Active 2032-08-15 US8856616B1 (en) 2011-07-29 2012-07-23 Two dimensional encoding for non-volatile memory blocks

Country Status (1)

Country Link
US (1) US8856616B1 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150058662A1 (en) * 2013-08-23 2015-02-26 Silicon Motion, Inc. Methods for Accessing a Storage Unit of a Flash Memory and Apparatuses using the Same
US9411686B2 (en) 2013-08-23 2016-08-09 Silicon Motion, Inc. Methods for accessing a storage unit of a flash memory and apparatuses using the same
US9459962B2 (en) 2013-08-23 2016-10-04 Silicon Motion, Inc. Methods for accessing a storage unit of a flash memory and apparatuses using the same
US9513995B2 (en) 2013-08-23 2016-12-06 Silicon Motion, Inc. Methods for accessing a storage unit of a flash memory and apparatuses using the same
US20170262646A1 (en) * 2016-03-11 2017-09-14 CNEXLABS, Inc. Computing system with non-orthogonal data protection mechanism and method of operation thereof
CN112486725A (en) * 2020-11-05 2021-03-12 杭州华澜微电子股份有限公司 Method and device for carrying out error correction coding on compressed data

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7647536B2 (en) * 2005-12-30 2010-01-12 Intel Corporation Repair bits for a low voltage cache
US8615700B2 (en) * 2009-08-18 2013-12-24 Viasat, Inc. Forward error correction with parallel error detection for flash memories

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7647536B2 (en) * 2005-12-30 2010-01-12 Intel Corporation Repair bits for a low voltage cache
US8132061B2 (en) * 2005-12-30 2012-03-06 Intel Corporation Repair bits for a low voltage cache
US8615700B2 (en) * 2009-08-18 2013-12-24 Viasat, Inc. Forward error correction with parallel error detection for flash memories

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Hu, X-Y et al., "Efficient Implementations of the Sum-Product Algorithm for Decoding LDPC Codes," IEEE, pp. 1036-1036E (2001).
Kim, C. et al., "Product Reed-Solomon Codes for Implementing NAND Flash Controller on FPGA chip," IEEE Computer Society, pp. 281-285 (2010).
Richardson, T. et al., "Efficient Encoding of Low-Density Parity-Check Codes," pp. 1-42 (Mar. 6, 2001).
Yang, C. et al., "Flexible Product Code-Based ECC Schemes for MLC NAND Flash Memories," IEEE Workshop on Signal Processing Systems, pp. 1-6 (Oct. 4, 2011).

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150058662A1 (en) * 2013-08-23 2015-02-26 Silicon Motion, Inc. Methods for Accessing a Storage Unit of a Flash Memory and Apparatuses using the Same
US9411686B2 (en) 2013-08-23 2016-08-09 Silicon Motion, Inc. Methods for accessing a storage unit of a flash memory and apparatuses using the same
US9459962B2 (en) 2013-08-23 2016-10-04 Silicon Motion, Inc. Methods for accessing a storage unit of a flash memory and apparatuses using the same
US9513995B2 (en) 2013-08-23 2016-12-06 Silicon Motion, Inc. Methods for accessing a storage unit of a flash memory and apparatuses using the same
US9977714B2 (en) * 2013-08-23 2018-05-22 Silicon Motion, Inc. Methods for programming a storage unit of a flash memory in multiple stages and apparatuses using the same
US20180239670A1 (en) * 2013-08-23 2018-08-23 Silicon Motion, Inc. Methods for Accessing a Storage Unit of a Flash Memory and Apparatuses using the Same
US10552262B2 (en) * 2013-08-23 2020-02-04 Silicon Motion, Inc. Data programming for a data storage medium using horizontal and vertical error correction codes
US20170262646A1 (en) * 2016-03-11 2017-09-14 CNEXLABS, Inc. Computing system with non-orthogonal data protection mechanism and method of operation thereof
US10402595B2 (en) * 2016-03-11 2019-09-03 Cnex Labs, Inc. Computing system with non-orthogonal data protection mechanism and method of operation thereof
CN112486725A (en) * 2020-11-05 2021-03-12 杭州华澜微电子股份有限公司 Method and device for carrying out error correction coding on compressed data
CN112486725B (en) * 2020-11-05 2022-10-18 杭州华澜微电子股份有限公司 Method and device for carrying out error correction coding on compressed data

Similar Documents

Publication Publication Date Title
US11347584B2 (en) Memory system
US9928126B1 (en) Recovery from cross-temperature read failures by programming neighbor word lines
US9195539B2 (en) Method for reading data from block of flash memory and associated memory device
KR101267183B1 (en) Semiconductor memory device
US9390774B2 (en) Systems and methods of storing data
KR100845529B1 (en) Ecc controller for use in flash memory device and memory system including the same
US8656257B1 (en) Nonvolatile memory controller with concatenated error correction codes
US20190252035A1 (en) Decoding method, memory storage device and memory control circuit unit
US8856616B1 (en) Two dimensional encoding for non-volatile memory blocks
US6981196B2 (en) Data storage method for use in a magnetoresistive solid-state storage device
CN112068778B (en) Method and apparatus for maintaining integrity of data read from a storage array
US9836351B2 (en) Method for decoding bits in a solid state drive, and related solid state drive
US9230684B2 (en) Memory controller, storage device, and memory control method
US20150222291A1 (en) Memory controller, storage device and memory control method
US10756764B2 (en) Memory system and control method
US11204834B1 (en) Implementation of keeping data integrity in multiple dimensions
US9170881B2 (en) Solid state device coding architecture for chipkill and endurance improvement
KR101496052B1 (en) Decoding circuit and method for improved performance and lower error floors of block-wise concatenated BCH codes with cyclic shift of constituent BCH codes
JP2021033530A (en) Memory system
JP2005011386A (en) Error correction apparatus
US11145372B2 (en) Decoding method, memory controlling circuit unit, and memory storage device
CN111435604B (en) Decoding method, memory control circuit unit and memory storage device

Legal Events

Date Code Title Description
AS Assignment

Owner name: PROTON DIGITAL SYSTEMS, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:VITYAEV, ANDREI;MILADINOVIC, NENAD;PELEATO-INARREA, BORJA;SIGNING DATES FROM 20120719 TO 20120723;REEL/FRAME:028617/0154

STCF Information on status: patent grant

Free format text: PATENTED CASE

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YR, SMALL ENTITY (ORIGINAL EVENT CODE: M2551)

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YR, SMALL ENTITY (ORIGINAL EVENT CODE: M2552); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY

Year of fee payment: 8

AS Assignment

Owner name: MOBIVEIL, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:PROTON DIGITAL SYSTEMS, INC.;REEL/FRAME:064686/0457

Effective date: 20230823