TWI451430B - System and method for correcting errors in non-volatile memory using product codes - Google Patents

System and method for correcting errors in non-volatile memory using product codes Download PDF

Info

Publication number
TWI451430B
TWI451430B TW096129103A TW96129103A TWI451430B TW I451430 B TWI451430 B TW I451430B TW 096129103 A TW096129103 A TW 096129103A TW 96129103 A TW96129103 A TW 96129103A TW I451430 B TWI451430 B TW I451430B
Authority
TW
Taiwan
Prior art keywords
dimension
codeword
memory
codewords
code
Prior art date
Application number
TW096129103A
Other languages
Chinese (zh)
Other versions
TW200816212A (en
Inventor
Wu Zining
Sutardja Pantas
Original Assignee
Marvell World Trade Ltd
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 Marvell World Trade Ltd filed Critical Marvell World Trade Ltd
Publication of TW200816212A publication Critical patent/TW200816212A/en
Application granted granted Critical
Publication of TWI451430B publication Critical patent/TWI451430B/en

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Description

用於利用乘積碼糾正非揮發性記憶體中的錯誤的系統和方法System and method for correcting errors in non-volatile memory using product codes

本發明涉及記憶體系統,更具體地說,涉及記憶體系統的錯誤糾正。This invention relates to memory systems and, more particularly, to error correction of memory systems.

這裏給出的背景技術描述是為了總地給出本公開的上下文。對於在該背景部分中描述的當前署名的發明人的工作和在提交時可能沒有另行作為現有技術的所描述的各個方面,並不明示或者隱含地承認是本公開的現有技術。The background description given herein is for the purpose of providing a general description of the present disclosure. The prior art of the present disclosure is not explicitly or implicitly admitted to the work of the inventor of the present invention as described in the background section and the various aspects that are not described as prior art.

現在參考圖1,非揮發性半導體記憶體10可以包括快閃記憶體、靜態隨機存取記憶體(SRAM)、氮化物唯讀記憶體(NROM)、磁RAM、相變記憶體(PRAM)等。記憶體控制器12可以藉著寫和讀路徑14、16將資料寫到NV記憶體10或者從其讀取。NV記憶體10中的資料破壞或者錯誤可能以干擾的形式發生,例如,符號間干擾,和/或雜訊“n”。Referring now to FIG. 1, the non-volatile semiconductor memory 10 may include a flash memory, a static random access memory (SRAM), a nitride read only memory (NROM), a magnetic RAM, a phase change memory (PRAM), and the like. . The memory controller 12 can write data to or read from the NV memory 10 via the write and read paths 14, 16. Data corruption or errors in the NV memory 10 may occur in the form of interference, such as intersymbol interference, and/or noise "n".

現在參考圖1和2,寫路徑14的編碼器18可以接收資料流程U,並且可以將改錯碼(ECC)應用到該資料來產生經編碼信號Y。NV記憶體10可以儲存經編碼資料。讀路徑16的解碼器24可以使用ECC來在讀信號Y’中檢測並糾正錯誤,以產生資料流程U’。U’可能與U類似。Referring now to Figures 1 and 2, the encoder 18 of the write path 14 can receive the data flow U and can apply an error correction code (ECC) to the data to produce the encoded signal Y. The NV memory 10 can store encoded data. The decoder 24 of the read path 16 can use ECC to detect and correct errors in the read signal Y' to generate a data flow U'. U’ may be similar to U.

編碼器18可以在一維(1D)陣列30中對U進行編碼。陣列30可以包括一系列長度為N的行31-1、31-2、…、和31-M(總稱行31)。每個行可以包含長度為K的用戶資料區域32和長度為N-K的開銷資料區域34,開銷資料區域34可以包含ECC編碼的資料。K和N-K可以是基於在各自區域32、34中儲存的位元的數目的。Encoder 18 may encode U in a one-dimensional (1D) array 30. Array 30 can include a series of rows 31-1, 31-2, ..., and 31-M of length N (collectively, row 31). Each row may contain a user profile area 32 of length K and an overhead data area 34 of length N-K, which may contain ECC encoded material. K and N-K may be based on the number of bits stored in the respective regions 32,34.

解碼器24在讀操作期間可以對ECC編碼的資料進行分析,來確定是否存在錯誤和/或是否糾正這種錯誤。ECC可以包括用於專門的多項式的公共係數。在從NV記憶體10讀出資料時,可以藉著從讀數據重新生成這些係數來檢查資料的完整性。如果重新生成的ECC和所儲存的ECC不“匹配”,則檢測到錯誤。The decoder 24 may analyze the ECC encoded data during a read operation to determine if there is an error and/or whether to correct such an error. The ECC can include common coefficients for specialized polynomials. When reading data from the NV memory 10, the integrity of the data can be checked by regenerating these coefficients from the read data. If the regenerated ECC does not "match" the stored ECC, an error is detected.

示例性的ECC包括漢明碼、裏德-所羅門(RS)碼和Bose-Chaudhuri-Hochquenghem(BCH)二進位碼。其他ECC包括迴圈冗餘碼(CRC)、Golay碼、裏德-莫爾碼、Goppa碼、低密度奇偶校驗(LDPC)碼、turbo碼、卷積碼、網格編碼調製(TCM)、塊編碼調製(BCM)等。Exemplary ECCs include Hamming, Reed-Solomon (RS) codes, and Bose-Chaudhuri-Hochquenghem (BCH) binary codes. Other ECCs include Loop Redundancy Code (CRC), Golay code, Reed-Moore code, Goppa code, Low Density Parity Check (LDPC) code, turbo code, convolutional code, trellis coded modulation (TCM), Block code modulation (BCM), etc.

解碼器24可以恢復資料,但是可能存在一些可接受小概率的錯誤恢復。但是,隨著錯誤資料增加,可靠資料恢復的概率可能迅速減小。一旦檢測到讀數據中的錯誤,解碼器24就可以嘗試糾正和/或擦除該錯誤。The decoder 24 can recover the data, but there may be some error recovery that accepts a small probability. However, as the error data increases, the probability of reliable data recovery may decrease rapidly. Once an error in the read data is detected, decoder 24 can attempt to correct and/or erase the error.

漢明距離是對代碼的錯誤檢測和糾正能力的測量。兩個資料字之間的漢明距離是對應的位元不同的位置的數目。換言之,漢明距離測量將一個字改變成另一個字所要求的替換的數目,或者說一個字被變換成另一個字的錯誤的數目。例如,1111和1001之間的漢明距離是2。1111和0001之間的漢明距離是3。Hamming distance is a measure of the error detection and correction capabilities of the code. The Hamming distance between two data words is the number of different positions of the corresponding bits. In other words, the Hamming distance measurement changes the number of substitutions required to change one word to another, or the number of errors in which one word is transformed into another. For example, the Hamming distance between 1111 and 1001 is 2. The Hamming distance between 1111 and 0001 is 3.

為了檢測錯誤中的E個數位,可能要求最小漢明距離是(E+1)的代碼。為了糾正E個錯誤,代碼必須顯示(2E+1)的最小漢明距離。最小距離指示系統在錯誤地解碼所儲存的碼字之前可以容忍的雜訊量。In order to detect the E digits in the error, a code with a minimum Hamming distance of (E+1) may be required. In order to correct E errors, the code must display the minimum Hamming distance of (2E+1). The minimum distance indicates the amount of noise that the system can tolerate before erroneously decoding the stored codeword.

一種用於非揮發性(NV)記憶體的乘積碼編碼器包括對儲存在所述NV記憶體中的第一維中的碼字中的資料進行編碼的第一編碼器。該乘積碼編碼器還包括對儲存在NV記憶體中的第二維中的碼字中的資料進行編碼的第二編碼器。乘積碼碼字是基於第一維中的碼字和第二維中碼字的。A product code encoder for non-volatile (NV) memory includes a first encoder that encodes data in a codeword stored in a first dimension in the NV memory. The product code encoder further includes a second encoder that encodes data in a codeword stored in the second dimension in the NV memory. The product code codeword is based on the codeword in the first dimension and the codeword in the second dimension.

在其他特徵中,第一和第二維碼字中的至少一個是基於從包括下述代碼的群組中選擇出的代碼的:漢明碼、裏德-所羅門(RS)碼、Bose-Chaudhuri-Hochquenghem(BCH)二進位碼、迴圈冗餘碼、Golay碼、裏德-莫爾碼、Goppa碼、低密度奇偶校驗(LDPC)碼、turbo碼、卷積碼、網格編碼調製(TCM)、塊編碼調製(BCM)。In other features, at least one of the first and second dimensional codewords is based on a code selected from the group consisting of: Hamming code, Reed-Solomon (RS) code, Bose-Chaudhuri- Hochquenghem (BCH) binary code, loop redundancy code, Golay code, Reed-Moore code, Goppa code, low density parity check (LDPC) code, turbo code, convolutional code, trellis coded modulation (TCM) ), block code modulation (BCM).

在其他特徵中,第一和第二編碼器中的至少一個包括乘積碼編碼器。乘積碼碼字是基於第一維中的碼字和第二維中的碼字的乘積的。第一維包括行,並且第二維包括列。In other features, at least one of the first and second encoders comprises a product code encoder. The product code codeword is based on the product of the codeword in the first dimension and the codeword in the second dimension. The first dimension includes rows and the second dimension includes columns.

在其他特徵中,一種NV記憶體系統包括乘積碼編碼器和乘積碼解碼器。該乘積碼解碼器對來自NV記憶體的第一維碼字和第二維碼字進行解碼。該NV記憶體包括下述記憶體中的至少一個:快閃記憶體記憶體、靜態隨機存取記憶體(SRAM)、氮化物唯讀記憶體(NROM)、磁RAM和相變記憶體(PRAM)。突發碼解碼器與乘積碼解碼器平行作業。該突發碼解碼器對第一維碼字和第二維碼字中的至少一個進行解碼。Among other features, an NV memory system includes a product code encoder and a product code decoder. The product code decoder decodes the first dimensional codeword and the second dimensional codeword from the NV memory. The NV memory includes at least one of the following memories: a flash memory memory, a static random access memory (SRAM), a nitride read only memory (NROM), a magnetic RAM, and a phase change memory (PRAM). ). The burst code decoder operates in parallel with the product code decoder. The burst code decoder decodes at least one of the first dimension codeword and the second dimension codeword.

在其他特徵中,該NV記憶體系統包括在寫操作期間對來自乘積碼編碼器的信號進行調製的調製器。解調器在讀操作期間對儲存在NV記憶體中的資料進行解調。乘積碼解碼器包括對第一維碼字進行解碼的行解碼器和對第二維碼字進行解碼的列解碼器。In other features, the NV memory system includes a modulator that modulates a signal from a product code encoder during a write operation. The demodulator demodulates the data stored in the NV memory during a read operation. The product code decoder includes a row decoder that decodes the first dimensional codeword and a column decoder that decodes the second dimensional codeword.

在其他特徵中,當行解碼器檢測到第一維碼字之一中的錯誤時,第一維碼字中的所述一個被標記為擦除。列解碼器基於該擦除,檢測第二維碼字之一中的另一錯誤。乘積碼解碼器在所述行和列解碼器重復,以確定第一和第二維碼字中的其他錯誤。行解碼器基於第一維碼字中的錯誤的數目確定第一維碼字之一被誤糾正,並且擦除該第一維碼字。In other features, when the row decoder detects an error in one of the first dimensional codewords, the one of the first dimensional codewords is marked as erased. The column decoder detects another error in one of the second dimensional codewords based on the erasure. A product code decoder repeats at the row and column decoders to determine other errors in the first and second dimensional codewords. The row decoder determines that one of the first dimensional codewords is miscorrected based on the number of errors in the first dimensional codeword and erases the first dimensional codeword.

在其他特徵中,當未能成功對第二維碼字之一解碼時,乘積碼解碼器擦除多個最不可靠的第一維碼字,並且重復對第二維碼字中的所述一個進行解碼。當乘積碼解碼器對第二維碼字之一進行瞭解碼,但是改變了第一維碼字之一中的符號時,乘積碼解碼器擦除多個最不可靠的第一維碼字。然後,乘積碼解碼器重復對第二維碼字中的所述一個進行解碼。乘積碼編碼器還包括對儲存在NV記憶體中的N個維度中的碼字中的資料進行編碼的N個編碼器。乘積碼碼字是基於N個維度中的碼字的乘積的,其中N是大於等於3的整數。In other features, the product code decoder erases the plurality of least reliable first dimensional codewords when the one of the second dimensional codewords is not successfully decoded, and repeats said in the second dimensional codeword One is for decoding. When the product code decoder decodes one of the second dimensional codewords but changes the symbols in one of the first dimensional codewords, the product code decoder erases the plurality of least reliable first dimensional codewords. The product code decoder then repeats decoding of the one of the second dimensional code words. The product code encoder also includes N encoders that encode data in code words stored in N dimensions in the NV memory. The product code codeword is based on the product of the codewords in the N dimensions, where N is an integer greater than or equal to three.

在其他特徵中,一種乘積碼解碼器包括對儲存在非揮發性(NV)記憶體中的第一維碼字進行解碼的第一解碼器。該乘積碼解碼器還包括對儲存在NV記憶體中的第二維碼字進行解碼的第二解碼器。乘積碼碼字是基於第一維碼字和第二維碼字的。In other features, a product code decoder includes a first decoder that decodes a first dimensional codeword stored in non-volatile (NV) memory. The product code decoder also includes a second decoder that decodes the second dimensional codeword stored in the NV memory. The product code codeword is based on the first dimension codeword and the second dimension codeword.

在其他特徵中,第一維包括行,並且第二維包括列。乘積碼碼字是基於第一維碼字和第二維碼字的乘積的。第一和第二解碼器中的至少一個包括乘積碼解碼器。當第一解碼器檢測到第一維碼字之一中的錯誤時,第一維碼字中的所述之一被標記為擦除。第二解碼器基於所述擦除,檢測第二維碼字之一中的另一錯誤。In other features, the first dimension includes rows and the second dimension includes columns. The product code codeword is based on the product of the first dimension codeword and the second dimension codeword. At least one of the first and second decoders includes a product code decoder. When the first decoder detects an error in one of the first dimensional codewords, the one of the first dimensional codewords is marked as erased. The second decoder detects another error in one of the second dimensional codewords based on the erasure.

在其他特徵中,第一和第二解碼器重復來確定第一和第二維碼字中的其他錯誤。第一解碼器基於第一維碼字中的錯誤的數目確定第一維碼字之一被誤糾正,並且擦除第一維碼字。當第二解碼器未能成功對第二維碼字之一解碼時,第一和第二解碼器之一擦除多個最不可靠的第一維碼字。然後,第二解碼器重復對第二維碼字中的所述一個進行解碼。In other features, the first and second decoders repeat to determine other errors in the first and second dimensional codewords. The first decoder determines that one of the first dimensional codewords is miscorrected based on the number of errors in the first dimensional codeword and erases the first dimensional codeword. When the second decoder fails to successfully decode one of the second dimensional codewords, one of the first and second decoders erases the plurality of least reliable first dimensional codewords. The second decoder then repeats decoding of the one of the second dimensional codewords.

在其他特徵中,當第二解碼器對第二維碼字之一進行瞭解碼,但是改變了第一維碼字之一中的符號時,第一和第二解碼器之一擦除多個最不可靠的第一維碼字。然後,第二解碼器重復對第二維碼字中的所述之一進行解碼。In other features, when the second decoder decodes one of the second dimensional codewords but changes the symbols in one of the first dimensional codewords, one of the first and second decoders erases multiple The least reliable first dimension codeword. The second decoder then repeats decoding of the one of the second dimensional codewords.

在其他特徵中,第一和第二維碼字中的至少一個是基於從包括下述代碼的群組中選擇出的代碼的:漢明碼、裏德-所羅門(RS)碼、Bose-Chaudhuri-Hochquenghem(BCH)二進位碼、迴圈冗餘碼、Golay碼、裏德-莫爾碼、Goppa碼、低密度奇偶校驗(LDPC)碼、turbo碼、卷積碼、網格編碼調製(TCM)、塊編碼調製(BCM)。In other features, at least one of the first and second dimensional codewords is based on a code selected from the group consisting of: Hamming code, Reed-Solomon (RS) code, Bose-Chaudhuri- Hochquenghem (BCH) binary code, loop redundancy code, Golay code, Reed-Moore code, Goppa code, low density parity check (LDPC) code, turbo code, convolutional code, trellis coded modulation (TCM) ), block code modulation (BCM).

在其他特徵中,一種NV記憶體系統包括乘積碼解碼器。NV記憶體包括下述記憶體中的至少一個:快閃記憶體記憶體、靜態隨機存取記憶體(SRAM)、氮化物唯讀記憶體(NROM)、磁RAM和相變記憶體(PRAM)。該記憶體系統還包括乘積碼編碼器,其包括對第一維碼字進行編碼的行編碼器和對第二維碼字進行編碼的列編碼器。乘積碼解碼器包括對儲存在NV記憶體中的N個維度中的碼字中的資料進行解碼的N個解碼器。乘積碼碼字是基於N個維度中的碼字的乘積的,其中,N是大於等於3的整數。Among other features, an NV memory system includes a product code decoder. The NV memory includes at least one of the following memories: flash memory memory, static random access memory (SRAM), nitride read only memory (NROM), magnetic RAM, and phase change memory (PRAM). . The memory system also includes a product code encoder including a row encoder that encodes the first dimensional codeword and a column encoder that encodes the second dimensional codeword. The product code decoder includes N decoders that decode data in code words stored in N dimensions in NV memory. The product code codeword is based on the product of the codewords in the N dimensions, where N is an integer greater than or equal to 3.

在其他特徵中,一種用於編碼乘積碼的方法,包括對儲存在NV記憶體中的第一維中的碼字中的資料進行編碼。該方法還包括對儲存在NV記憶體中的第二維中的碼字中的資料進行編碼。乘積碼碼字是基於第一維中的碼字和第二維中在碼字的。乘積碼碼字是基於第一維中的碼字和第二維中在碼字的乘積的。第一維包括行並且第二維包括列。In other features, a method for encoding a product code includes encoding data in a codeword stored in a first dimension in NV memory. The method also includes encoding the data in the codewords stored in the second dimension in the NV memory. The product code codeword is based on the codeword in the first dimension and the codeword in the second dimension. The product code codeword is based on the product of the codeword in the first dimension and the codeword in the second dimension. The first dimension includes rows and the second dimension includes columns.

在其他特徵中,該方法包括對儲存在NV記憶體中的N個維度中的碼字中的資料進行編碼。乘積碼碼字是基於N個維度中的碼字的乘積的,其中,N是大於等於3的整數。In other features, the method includes encoding data in codewords stored in N dimensions in NV memory. The product code codeword is based on the product of the codewords in the N dimensions, where N is an integer greater than or equal to 3.

在其他特徵中,一種用於解碼乘積碼的方法,包括對儲存在非揮發性(NV)記憶體中的第一維碼字進行解碼。該方法還包括對儲存在NV記憶體中的第二維碼字進行解碼。乘積碼碼字是基於第一維碼字和第二維碼字的。第一維包括行,並且第二維包括列。乘積碼碼字是基於第一維碼字和第二維碼字的乘積的。In other features, a method for decoding a product code includes decoding a first dimensional codeword stored in non-volatile (NV) memory. The method also includes decoding the second dimensional codeword stored in the NV memory. The product code codeword is based on the first dimension codeword and the second dimension codeword. The first dimension includes rows and the second dimension includes columns. The product code codeword is based on the product of the first dimension codeword and the second dimension codeword.

在其他特徵中,該方法包括檢測第一維碼字之一中的錯誤,並且將第一維碼字中的所述一個標記為擦除。該方法還包括基於該擦除,檢測第二維碼字之一中的另一錯誤。該方法還包括基於第一維碼字中的錯誤的數目確定第一維碼字之一被誤糾正。該方法還包括擦除第一維碼字。In other features, the method includes detecting an error in one of the first dimensional codewords and marking the one of the first dimensional codewords as an erase. The method also includes detecting another error in one of the second dimensional codewords based on the erasing. The method also includes determining that one of the first dimensional codewords was miscorrected based on the number of errors in the first dimensional codeword. The method also includes erasing the first dimension codeword.

在其他特徵中,該方法包括回應于未能成功對第二維碼字之一解碼,擦除多個最不可靠的第一維碼字。該方法還包括重復對第二維碼字中的所述之一進行解碼。該方法還包括當第二維碼字之一被解碼但是第一維碼字之一中的符號被改變了時,擦除多個最不可靠的第一維碼字。該方法還包括重復對第二維碼字中的所述之一進行解碼。In other features, the method includes erasing the plurality of least reliable first dimensional codewords in response to failing to successfully decode one of the second dimensional codewords. The method also includes repeatedly decoding the one of the second dimensional codewords. The method also includes erasing the plurality of least reliable first dimensional codewords when one of the second dimensional codewords is decoded but the symbols in one of the first dimensional codewords are changed. The method also includes repeatedly decoding the one of the second dimensional codewords.

在其他特徵中,第一和第二維碼字中的至少一個是基於從包括下述代碼的群組中選擇出的代碼的:漢明碼、裏德-所羅門(RS)碼、Bose-Chaudhuri-Hochquenghem(BCH)二進位碼、迴圈冗餘碼、Golay碼、裏德-莫爾碼、Goppa碼、低密度奇偶校驗(LDPC)碼、turbo碼、卷積碼、網格編碼調製(TCM)、塊編碼調製(BCM)。In other features, at least one of the first and second dimensional codewords is based on a code selected from the group consisting of: Hamming code, Reed-Solomon (RS) code, Bose-Chaudhuri- Hochquenghem (BCH) binary code, loop redundancy code, Golay code, Reed-Moore code, Goppa code, low density parity check (LDPC) code, turbo code, convolutional code, trellis coded modulation (TCM) ), block code modulation (BCM).

在其他特徵中,一種用於儲存資料的NV裝置的乘積碼編碼器,包括對儲存在NV記憶體中的第一維中的碼字中的資料進行編碼的第一編碼裝置。該乘積碼編碼器還包括用於對儲存在NV記憶體中的第二維中的碼字中的資料進行編碼的第二編碼裝置。乘積碼碼字是基於第一維中的碼字和第二維中在碼字的。In other features, a product code encoder for an NV device for storing data includes a first encoding device that encodes data in a codeword stored in a first dimension in NV memory. The product code encoder further includes second encoding means for encoding data in a codeword stored in the second dimension in the NV memory. The product code codeword is based on the codeword in the first dimension and the codeword in the second dimension.

在其他特徵中,第一和第二維碼字中的至少一個是基於從包括下述代碼的群組中選擇出的代碼的:漢明碼、裏德-所羅門(RS)碼、Bose-Chaudhuri-Hochquenghem(BCH)二進位碼、迴圈冗餘碼、Golay碼、裏德-莫爾碼、Goppa碼、低密度奇偶校驗(LDPC)碼、turbo碼、卷積碼、網格編碼調製(TCM)、塊編碼調製(BCM)。In other features, at least one of the first and second dimensional codewords is based on a code selected from the group consisting of: Hamming code, Reed-Solomon (RS) code, Bose-Chaudhuri- Hochquenghem (BCH) binary code, loop redundancy code, Golay code, Reed-Moore code, Goppa code, low density parity check (LDPC) code, turbo code, convolutional code, trellis coded modulation (TCM) ), block code modulation (BCM).

在其他特徵中,第一和第二編碼裝置中的至少一個包括用於對乘積碼進行編碼的編碼裝置。乘積碼碼字是基於第一維中的碼字和第二維中的碼字的。第一維包括行,並且第二維包括列。In other features, at least one of the first and second encoding means includes encoding means for encoding the product code. The product code codeword is based on the codeword in the first dimension and the codeword in the second dimension. The first dimension includes rows and the second dimension includes columns.

在其他特徵中,乘積碼解碼器包括用於對儲存在用於儲存資料的NV裝置中的第一維碼字進行解碼的第一解碼裝置。乘積碼解碼器還包括對儲存在NV記憶體裝置中的第二維碼字進行解碼的第二解碼裝置。乘積碼碼字是基於第一維碼字和第二維碼字的。第一維包括行並且第二維包括列。乘積碼碼字是基於第一維碼字和第二維碼字的乘積的。In other features, the product code decoder includes a first decoding device for decoding a first dimensional codeword stored in an NV device for storing material. The product code decoder also includes a second decoding device that decodes the second dimensional codeword stored in the NV memory device. The product code codeword is based on the first dimension codeword and the second dimension codeword. The first dimension includes rows and the second dimension includes columns. The product code codeword is based on the product of the first dimension codeword and the second dimension codeword.

在其他特徵中,第一和第二解碼裝置中至少一個包括用於解碼的乘積碼裝置。當第一解碼裝置檢測到第一維碼字之一中的錯誤時,該第一維碼字被標記為擦除。第二解碼裝置基於所述擦除,檢測第二維碼字之一中的另一錯誤。第一和第二解碼裝置重復來確定第一和第二維碼字中的其他錯誤。第一解碼裝置基於第一維碼字中的錯誤的數目確定第一維碼字之一被誤糾正,並且擦除第一維碼字。In other features, at least one of the first and second decoding devices includes a product code means for decoding. When the first decoding device detects an error in one of the first dimensional codewords, the first dimensional codeword is marked as erased. The second decoding device detects another error in one of the second dimensional code words based on the erasing. The first and second decoding means are iterative to determine other errors in the first and second dimensional codewords. The first decoding device determines that one of the first dimensional codewords is miscorrected based on the number of errors in the first dimensional codeword and erases the first dimensional codeword.

在其他特徵中,當第二解碼裝置未能成功對第二維碼字之一解碼時,第一和第二解碼裝置之一擦除多個最不可靠的第一維碼字。然後,第二解碼裝置重復對第二維碼字中的所述之一進行解碼。當第二解碼裝置對第二維碼字之一進行瞭解碼,但是改變了第一維碼字之一中的符號時,第一和第二解碼裝置之一擦除多個最不可靠的第一維碼字。然後,第二解碼裝置重復對第二維碼字中的所述一個進行解碼。In other features, one of the first and second decoding devices erases the plurality of least reliable first dimensional codewords when the second decoding device fails to successfully decode one of the second dimensional codewords. The second decoding device then repeats decoding of the one of the second dimensional codewords. When the second decoding device decodes one of the second dimensional codewords but changes the symbols in one of the first dimensional codewords, one of the first and second decoding devices erases the plurality of least reliable One-dimensional codeword. Then, the second decoding means repeats decoding of the one of the second dimensional code words.

在其他特徵中,第一和第二維碼字中的至少一個是基於從包括下述代碼的群組中選擇出的代碼的:漢明碼、裏德-所羅門(RS)碼、Bose-Chaudhuri-Hochquenghem(BCH)二進位碼、迴圈冗餘碼、Golay碼、裏德-莫爾碼、Goppa碼、低密度奇偶校驗(LDPC)碼、turbo碼、卷積碼、網格編碼調製(TCM)、塊編碼調製(BCM)。In other features, at least one of the first and second dimensional codewords is based on a code selected from the group consisting of: Hamming code, Reed-Solomon (RS) code, Bose-Chaudhuri- Hochquenghem (BCH) binary code, loop redundancy code, Golay code, Reed-Moore code, Goppa code, low density parity check (LDPC) code, turbo code, convolutional code, trellis coded modulation (TCM) ), block code modulation (BCM).

在其他特徵中,一種儲存來由處理器用於操作NV記憶體的乘積碼編碼器的電腦程式,包括對儲存在NV記憶體中的第一維中的碼字中的資料進行編碼。該電腦程式還包括對儲存在NV記憶體中的第二維中的碼字中的資料進行編碼。乘積碼碼字是基於第一維中的碼字和第二維中在碼字的。乘積碼碼字是基於第一維中的碼字和第二維中在碼字的乘積的。第一維包括行並且第二維包括列。In other features, a computer program stored by a processor for operating a product code encoder of an NV memory includes encoding data in a codeword stored in a first dimension in NV memory. The computer program also includes encoding the data in the codewords stored in the second dimension in the NV memory. The product code codeword is based on the codeword in the first dimension and the codeword in the second dimension. The product code codeword is based on the product of the codeword in the first dimension and the codeword in the second dimension. The first dimension includes rows and the second dimension includes columns.

在其他特徵中,該電腦程式包括對儲存在NV記憶體中的N個維度中的碼字中的資料進行編碼。乘積碼碼字是基於N個維度中的碼字的乘積的,其中,N是大於等於3的整數。In other features, the computer program includes encoding data in codewords stored in N dimensions in NV memory. The product code codeword is based on the product of the codewords in the N dimensions, where N is an integer greater than or equal to 3.

在其他特徵中,一種用於解碼乘積碼的電腦程式,包括對儲存在NV記憶體中的第一維碼字進行解碼。該電腦程式還包括對儲存在NV記憶體中的第二維碼字進行解碼。乘積碼碼字是基於第一維碼字和第二維碼字的。第一維包括行,並且第二維包括列。乘積碼碼字是基於第一維碼字和第二維碼字的乘積的。In other features, a computer program for decoding a product code includes decoding a first dimensional codeword stored in NV memory. The computer program also includes decoding the second dimensional codeword stored in the NV memory. The product code codeword is based on the first dimension codeword and the second dimension codeword. The first dimension includes rows and the second dimension includes columns. The product code codeword is based on the product of the first dimension codeword and the second dimension codeword.

在其他特徵中,該電腦程式包括檢測第一維碼字之一中的錯誤,並且將第一維碼字中的所述之一標記為擦除。該電腦程式還包括基於該擦除,檢測第二維碼字之一中的另一錯誤。該電腦程式還包括基於第一維碼字中的錯誤的數目確定第一維碼字之一被誤糾正。該電腦程式還包括擦除第一維碼字。In other features, the computer program includes detecting an error in one of the first dimension codewords and marking the one of the first dimension codewords as being erased. The computer program also includes detecting another error in one of the second dimension codewords based on the erasure. The computer program also includes determining that one of the first dimensional codewords was miscorrected based on the number of errors in the first dimensional codeword. The computer program also includes erasing the first dimension codeword.

在其他特徵中,該電腦程式包括回應于未能成功對第二維碼字之一解碼,擦除多個最不可靠的第一維碼字。該電腦程式還包括重復對第二維碼字中的所述之一進行解碼。該電腦程式還包括當第二維碼字之一被解碼但是第一維碼字之一中的符號被改變了時,擦除多個最不可靠的第一維碼字。該電腦程式還包括重復對第二維碼字中的所述一個進行解碼。In other features, the computer program includes erasing a plurality of least reliable first dimensional codewords in response to failure to successfully decode one of the second dimensional codewords. The computer program also includes repeatedly decoding the one of the second dimension codewords. The computer program also includes erasing the plurality of least reliable first dimensional codewords when one of the second dimensional codewords is decoded but the symbols in one of the first dimensional codewords are changed. The computer program also includes repeatedly decoding the one of the second dimension codewords.

在其他特徵中,第一和第二維碼字中的至少一個是基於從包括下述代碼的群組中選擇出的代碼的:漢明碼、裏德-所羅門(RS)碼、Bose-Chaudhuri-Hochquenghem(BCH)二進位碼、迴圈冗餘碼、Golay碼、裏德-莫爾碼、Goppa碼、低密度奇偶校驗(LDPC)碼、turbo碼、卷積碼、網格編碼調製(TCM)、塊編碼調製(BCM)。In other features, at least one of the first and second dimensional codewords is based on a code selected from the group consisting of: Hamming code, Reed-Solomon (RS) code, Bose-Chaudhuri- Hochquenghem (BCH) binary code, loop redundancy code, Golay code, Reed-Moore code, Goppa code, low density parity check (LDPC) code, turbo code, convolutional code, trellis coded modulation (TCM) ), block code modulation (BCM).

在其他特徵中,上述系統和方法用由一個或多個處理器執行的電腦程式實現。該電腦程式可以駐留在電腦可讀介質上,例如但不限於記憶體、非揮發性資料儲存設備和/或其他適當的有形儲存介質。In other features, the systems and methods described above are implemented in a computer program executed by one or more processors. The computer program can reside on a computer readable medium such as but not limited to a memory, a non-volatile data storage device, and/or other suitable tangible storage medium.

從下面提供的詳細描述可以清楚本發明的其他應用領域。應當理解詳細描述和具體示例儘管示出了本發明的優選實施例,但是僅是出於說明目的,而不是要限制本發明的範圍。Further areas of applicability of the present invention will become apparent from the detailed description provided below. The detailed description and specific examples of the invention are intended to

下面的描述本質上僅是示例性的,而絕不是要限制本公開、其應用或使用。為了清楚起見,在附圖中將使用相同的標號來指示類似的元素。如這裏所使用的,術語“模組”指專用積體電路(ASIC)、電子電路、執行一個或多個軟體或固件程式的處理器(共用的、專用的或者群組的)和記憶體,組合邏輯電路,和/或提供所述功能的其他使得的元件。如這裏所使用的,短語“A、B和C中至少一個”應當被解釋為利用非排他邏輯or的邏輯(A or B or C)。應當理解,方法中的步驟可以按照不同的順序執行,而不改變本公開的原理。The following description is merely exemplary in nature and is in no way intended to limit For the sake of clarity, the same reference numbers will be used in the drawings. As used herein, the term "module" refers to a dedicated integrated circuit (ASIC), an electronic circuit, a processor (shared, dedicated, or group) that executes one or more software or firmware programs, and a memory. Combining logic circuits, and/or other enabled components that provide the functionality. As used herein, the phrase "at least one of A, B, and C" should be interpreted to mean the logic (A or B or C) that utilizes a non-exclusive logic or. It should be understood that steps of the method may be performed in a different order without changing the principles of the disclosure.

本公開與利用乘積碼在非揮發性(NV)記憶體中儲存資料相關。The present disclosure relates to the use of product codes to store data in non-volatile (NV) memory.

現在參考圖3,記憶體儲存系統50包括寫路徑54和讀路徑56。寫路徑54具有乘積碼編碼器58,而乘積碼編碼器58接收來自記憶體控制器59的資訊資料流程U,並且生成乘積碼資料流程X。乘積碼資料流程X被調製器60接收到,調製器60將該資料流程X調製成適於NV記憶體儲存的信號。資料流程X然後被寫到單級單元(SLC)或者多級單元(MLC)NV記憶體62。Referring now to FIG. 3, memory storage system 50 includes a write path 54 and a read path 56. The write path 54 has a product code encoder 58, and the product code encoder 58 receives the information material flow U from the memory controller 59 and generates a product code data flow X. The product code data stream X is received by the modulator 60, which modulates the data stream X into a signal suitable for NV memory storage. The data flow X is then written to a single level unit (SLC) or multi-level unit (MLC) NV memory 62.

信號“n”代表NV記憶體62中的調製信號所經歷的並且因此在效果上被添加到該調製信號的雜訊或失真。雜訊n和該調製信號的組合被讀路徑56的解調器70接收。解調器70生成接收信號X’,並使信號X’被乘積碼解碼器72接收。解調器70可以首先將來自NV記憶體單元的讀回電壓(或者電流)量子化,並且將讀數轉換成二進位資料X’,但是二進位資料X’可能包括由於n而產生的錯誤。The signal "n" represents the noise or distortion experienced by the modulated signal in the NV memory 62 and thus added to the modulated signal in effect. The combination of the noise n and the modulated signal is received by the demodulator 70 of the read path 56. The demodulator 70 generates a received signal X' and causes the signal X' to be received by the product code decoder 72. The demodulator 70 may first quantize the readback voltage (or current) from the NV memory cell and convert the reading to binary data X', but the binary data X' may include errors due to n.

如果在讀回處理/解調期間沒有錯誤發生,則X’可能與X相同。如果有錯誤,則乘積碼解碼器72可以檢測和/或清除X’中的錯誤,使得U’總是等於U。If no error occurs during readback processing/demodulation, X' may be the same as X. If there is an error, product code decoder 72 can detect and/or clear the error in X' such that U' is always equal to U.

現在參考圖4和5,乘積碼的資料可以逐列和/或逐行被寫入和/或讀出。乘積碼編碼器58可以包括行編碼器74和列編碼器76,它們對要被寫到NV記憶體62的資料的行和列進行編碼。乘積碼解碼器72可以包括行解碼器78、列解碼器80和糾錯模組82。行和列解碼器78、80對從NV記憶體62讀出的資料的行和列進行解碼,並且可以檢測資料錯誤。糾錯模組82可以糾正資料錯誤。Referring now to Figures 4 and 5, the material of the product code can be written and/or read row by column and/or row by row. Product code encoder 58 may include a row encoder 74 and a column encoder 76 that encode the rows and columns of material to be written to NV memory 62. The product code decoder 72 may include a row decoder 78, a column decoder 80, and an error correction module 82. The row and column decoders 78, 80 decode the rows and columns of the material read from the NV memory 62 and can detect data errors. The error correction module 82 can correct data errors.

現在參考圖6A,乘積碼編碼器58可以在寫操作期間以示例性二維(2D)乘積碼(Cp )86的形式對資料進行編碼。Cp =C1 ×C2 ,其中C1 可以代表(N1 ,K1 )碼,而在碼長N1 和資料長度K1 垂直的方向上,該(N1 ,K1 )碼可以是二進位線性碼。C2 可以代表(N2 ,K2 )碼,而在碼長N2 和資訊長度K2 垂直的方向上,該(N2 ,K2 )碼也可以是二進位線性碼。乘積碼86可以代表(N1 N2 ,K1 K2 )線性碼。Referring now to Figure 6A, a product code encoder 58 may be a product code (C p) 86 in the form of data encoded in an exemplary two-dimensional (2D) during a write operation. C p = C 1 × C 2 , where C 1 may represent a (N 1 , K 1 ) code, and in a direction in which the code length N 1 and the data length K 1 are perpendicular, the (N 1 , K 1 ) code may be Binary linear code. C 2 may represent a (N 2 , K 2 ) code, and in the direction in which the code length N 2 and the information length K 2 are perpendicular, the (N 2 , K 2 ) code may also be a binary linear code. The product code 86 can represent a (N 1 N 2 , K 1 K 2 ) linear code.

即,C1 和C2 可以分別具有K1 和K2 個資料位元,並且在編碼後分別變為N1 和N2 個經編碼的位元。乘積碼可以藉著在具有K1 行K2 列的塊1的2D陣列中首先儲存K1 ×K2 個資料位元來構造。塊1可表示為: 其中,D表示資料,i、j表示矩陣的行和列。Di,j (i=1、2、…,K1 ;j=1、2、…、K2 )可以為0或1。塊2可以藉著向第一到第K2 列的各個列提供C1 碼的(N1 -K1 )位檢驗來構造。塊2可以表示為具有N1 -K1 行和K2 列的2D陣列。塊3和塊4可以藉著隨後向從第一到第N1 行的各個行提供C2 碼的(N2 -K2 )位檢驗來構造。That is, C 1 and C 2 may have K 1 and K 2 data bits, respectively, and become N 1 and N 2 encoded bits, respectively, after encoding. The product code can be constructed by first storing K 1 × K 2 data bits in a 2D array of blocks 1 having K 1 rows and K 2 columns. Block 1 can be expressed as: Where D represents data and i and j represent rows and columns of the matrix. D i,j (i=1, 2, . . . , K 1 ; j=1, 2, . . . , K 2 ) may be 0 or 1. Block 2 can be constructed by providing a (N 1 -K 1 ) bit check of the C 1 code to each column of the first through K 2 columns. Block 2 can be represented as a N 1 -K 1 row and K 2 2D array columns. Blocks 3 and 4 may be constructed by subsequently provided to the respective line C from the first to N 1 row 2 codes (N 2 -K 2) test bit.

塊1指定原始資料位元K1 ×K2 ,並且塊2和3每個指定對原始資料位元上的檢驗。塊4可以指定對塊2-3的冗餘檢驗。塊4因此可以包括(N1 -K1 )×(N2 -K2 )檢驗資料。Block 1 specifies the original data bit K 1 × K 2 , and blocks 2 and 3 each specify a check on the original data bit. Block 4 can specify a redundancy check for block 2-3. Block 4 may thus comprise (N 1 -K 1 )×(N 2 -K 2 ) test data.

現在參考圖6B,該圖進一步示出了圖6A的示例性乘積碼86。行編碼器74可以對資料的每個行88-1、88-2、…、和88-P進行編碼,並且每個行可以代表C2 中的碼字。列編碼器76可以對每個列90-1、90-2、…、和90-Q進行編碼,並且每個列可以是C1 中的碼字。C1 和C2 之一或者二者可以包括裏德-所羅門(RS)碼、Bose-Chaudhuri-Hochquenghem(BCH)二進位碼和漢明碼等等。C1 和C2 也可以包括迴圈冗餘碼(CRC)、Golay碼、裏德-莫爾碼、Goppa碼、低密度奇偶校驗(LDPC)碼、turbo碼、卷積碼、網格編碼調製(TCM)、塊編碼調製(BCM)等。Referring now to Figure 6B, this figure further illustrates the exemplary product code 86 of Figure 6A. Line encoder 74 may each row of data 88-1,88-2, ..., 88-P, and encoded, and each row can represent the code word C 2. Column encoder 76 may encode each of the columns 90-1, 90-2, ..., and 90-Q, and each column can be a C 1 in the codeword. One or both of C 1 and C 2 may include a Reed-Solomon (RS) code, a Bose-Chaudhuri-Hochquenghem (BCH) binary code, a Hamming code, and the like. C 1 and C 2 may also include loop redundancy code (CRC), Golay code, Reed-Moore code, Goppa code, low density parity check (LDPC) code, turbo code, convolutional code, trellis coding. Modulation (TCM), block code modulation (BCM), and the like.

乘積碼的總碼率可以為(K1 *K2 )/(N1 *N2 )。如果C1 具有最小漢明距離d1 ,並且C2 具有最小漢明距離d2 ,乘積碼可以具有最小漢明距離d1 ×d2The total code rate of the product code may be (K 1 *K 2 )/(N 1 *N 2 ). If C 1 has a minimum Hamming distance d 1 and C 2 has a minimum Hamming distance d 2 , the product code may have a minimum Hamming distance d 1 ×d 2 .

再次參考圖4和圖5,乘積碼編碼器58可以逐個維度地對乘積碼進行編碼。例如,對於圖6A和6B中的2D乘積碼,可以利用行編碼器74首先對每行進行編碼。經編碼的位元可以被轉換成矩陣格式。乘積碼編碼器58然後可以利用列編碼器76對每列進行編碼。或者,列可以在行之前被編碼。Referring again to Figures 4 and 5, the product code encoder 58 can encode the product code dimension by dimension. For example, for the 2D product code in Figures 6A and 6B, each row can be encoded first using row encoder 74. The encoded bits can be converted to a matrix format. Product code encoder 58 may then encode each column using column encoder 76. Alternatively, the column can be encoded before the line.

乘積碼解碼器72可以首先利用行解碼器78對每行進行解碼,然後利用列解碼器80對每列進行解碼(或者反之)。乘積碼解碼器72從解調器70逐行或者逐列地接收儲存的資料。解碼器72可以首先逐行地解碼,這可以允許在逐列地接收資料時糾正突發錯誤,反之亦然。後續列(或者行)解碼可以清理行(或列)解碼導致的誤糾正。Product code decoder 72 may first decode each row using row decoder 78 and then decode each column using column decoder 80 (or vice versa). The product code decoder 72 receives the stored material line by line or column by column from the demodulator 70. The decoder 72 may first decode line by line, which may allow for the correction of burst errors when receiving data column by column, and vice versa. Subsequent column (or row) decoding can clean up the error correction caused by row (or column) decoding.

在替換實施例中,解碼器72可以基於僅針對一維的解碼進行錯誤檢測。當行解碼器78檢測到行上的錯誤時,行解碼器(或者糾錯模組82)將該行標記為擦除。然後,列解碼器80和糾錯模組82利用行解碼器78所標記的擦除執行錯誤和擦除解碼。In an alternate embodiment, decoder 72 may perform error detection based on decoding for only one dimension. When row decoder 78 detects an error on the line, row decoder (or error correction module 82) marks the row as erased. Column decoder 80 and error correction module 82 then perform error and erasure decoding using the erases flagged by row decoder 78.

乘積碼解碼器72可以在行和列解碼器78、80之間重復。首先,行解碼器78可以用來糾正每行。對於每行,行解碼器78可以儲存數位mP ,該數位是在行88-P中糾正的符號數。較大的mP 值可以與更可能已被錯誤糾正的行相對應。不可糾正的行可以被分配以mP =“無窮大”,並且糾錯模組82可以擦除該行中的所有符號。Product code decoder 72 may be repeated between row and column decoders 78,80. First, row decoder 78 can be used to correct each line. For each row, the row decoder 78 may store several bits m P, the digit is the row number of symbols in the 88-P corrected. Larger m P values may correspond to rows that are more likely to have been incorrectly corrected. Uncorrectable row may be assigned to m P = "infinity", and the error correction module 82 may erase all symbols in this row.

然後,列解碼器80可以被用來利用錯誤和擦除糾正方法順序地對列進行糾正。例如,如果因為列是不可糾正的而解碼失敗,或者如果糾正成功,但是解碼卻改變了未擦除行中的符號,那麼某些行解碼可能已不正確。在這種情形中,糾錯模組82可以擦除兩個最不可靠的未擦除行(具有最大值mP 的行)並且重復對該列的解碼。Column decoder 80 can then be used to sequentially correct the columns using error and erase correction methods. For example, if the decoding fails because the column is uncorrectable, or if the correction is successful, but the decoding changes the symbols in the unerased rows, then some row decoding may be incorrect. In this case, the error correction module 82 can be erased two most unreliable unerased rows (row having the maximum value m P) and the repetitive decoding of the column.

現在參考圖7,乘積碼可能允許解碼突發錯誤和隨機錯誤同時發生。因此,突發錯誤解碼器84可以與解碼器模組89中的疊代乘積碼解碼器72並行運行。如果解碼器72、84確定了有效的碼字,則可以認為解碼是成功的。Referring now to Figure 7, the product code may allow decoding burst errors and random errors to occur simultaneously. Therefore, the burst error decoder 84 can operate in parallel with the iterative product code decoder 72 in the decoder module 89. If the decoder 72, 84 determines a valid codeword, then the decoding can be considered successful.

現在參考圖8,該圖示出了2D乘積碼的示例性性能曲線150,其中C1 和C2 都包括BCH碼。曲線150示出了乘積碼解碼器的輸出處的字錯誤率(WER)。還基於錯誤率和信噪比(SNR)示出了原始(raw)誤位元率(BER)156和原始WER 158。在本公開的一個示例中,C1 和C2 二者包括(511,466)二進位BCH碼。C1 和C2 的參數可以包括N1 =N2 =511,k1 =K2 =466,d1 =d2 =11,即,每個代碼可以糾正多至5位元錯誤。乘積碼可以具有最小漢明距離dmin =121,並且可以糾正多至60個位錯誤。碼率是0.83。所得到的乘積碼性能如曲線150所示。編碼增益在WER為10-10 時可以大於6.5dB,這與未經編碼的系統性能相比有相當的提高。Referring now to Figure 8, which illustrates an exemplary performance curves 2D product code 150, wherein C 1 and C 2 comprise a BCH code. Curve 150 shows the word error rate (WER) at the output of the product code decoder. The raw bit error rate (BER) 156 and the original WER 158 are also shown based on the error rate and signal to noise ratio (SNR). In one example of the present disclosure, both C 1 and C 2 include (511, 466) binary BCH codes. The parameters of C 1 and C 2 may include N 1 = N 2 = 511, k 1 = K 2 = 466, and d 1 = d 2 = 11, that is, each code can correct up to 5 bit errors. The product code can have a minimum Hamming distance dmin = 121 and can correct up to 60 bit errors. The code rate is 0.83. The resulting product code performance is shown as curve 150. The coding gain can be greater than 6.5 dB at WER of 10 -10 , which is a considerable improvement over unencoded system performance.

來自乘積碼的較大的編碼增益允許增大非揮發性記憶體系統的容量和/或可靠性。如果每個記憶體單元中的級數從4級增加到8級,則雜訊餘量可以減少,並且因此增大原始BER。來自乘積碼解碼器的最終WER在原始BER大約為10-4 時可能小於10-13The larger coding gain from the product code allows for an increase in the capacity and/or reliability of the non-volatile memory system. If the number of stages in each memory cell is increased from 4 to 8, the noise margin can be reduced, and thus the original BER is increased. The final WER from the product code decoder may be less than 10 -13 when the original BER is approximately 10 -4 .

現在參考圖9,框圖200示出了用於編碼和解碼NV記憶體的方法。該方法開始於步驟204,此時從記憶體控制器接收到資料。在步驟206中,該資料被乘積碼編碼器編碼成碼字的行和列。在步驟208中,調製器對經編碼資料進行調製。在步驟210中,經調製的資料藉著寫操作被儲存到NV記憶體中。在步驟212中,所儲存的資料被從NV記憶體讀出並且被解調。在步驟214中,解調後的資料被解碼並且糾正錯誤。Referring now to Figure 9, a block diagram 200 illustrates a method for encoding and decoding NV memory. The method begins in step 204 when data is received from a memory controller. In step 206, the data is encoded by the product code encoder into rows and columns of codewords. In step 208, the modulator modulates the encoded data. In step 210, the modulated material is stored into the NV memory by a write operation. In step 212, the stored material is read from the NV memory and demodulated. In step 214, the demodulated data is decoded and the error corrected.

現在參考圖10,儘管上述示例說明瞭2D乘積碼,但是本公開也可以包括3維或者更高維。例如,圖10示出了3維(3D)乘積碼220。乘積碼220是基於3維中的碼字的乘積的,使得Cp =C1 ×C2 ×C3 ,其中C1 ×C2 ×C3 代表分別第一、第二和第三維中的代碼/碼字222、224和226。此外,每一維可以是或不是“矩形”形式。如果編碼器輸入是X0 、X1 、…XN-1 ,其中N=N1 *N2 ,則矩形形式中的維度可以在數學上由第一(行)維(Xi )表示,使得i=mN2 +z,其中0m<N1 ,m是行索引。0zN2 ,z列舉出了同一行中的所有位。此外,維度可由第二(列)維(Xj )表示,使得j=sN1 +t,其中0sN2 ,s是列索引;並且0t<N1 ,t列舉出了同一列中的所有位。Referring now to FIG. 10, although the above examples illustrate 2D product codes, the present disclosure may also include 3D or higher dimensions. For example, FIG. 10 shows a 3-dimensional (3D) product code 220. The product code 220 is based on the product of the codewords in 3 dimensions such that C p = C 1 × C 2 × C 3 , where C 1 × C 2 × C 3 represents the codes in the first, second, and third dimensions, respectively. / Codewords 222, 224 and 226. Moreover, each dimension may or may not be in the form of a "rectangular". If the encoder input is X 0 , X 1 , ... X N-1 , where N = N 1 * N 2 , the dimension in the rectangular form can be mathematically represented by the first (row) dimension (X i ), such that i=mN 2 +z, where 0 m<N 1 , m is the row index. 0 z N 2 ,z lists all the bits in the same row. Furthermore, the dimension can be represented by the second (column) dimension (X j ) such that j=sN 1 +t, where 0 s N 2 , s is the column index; and 0 t<N 1 ,t lists all the bits in the same column.

也可以使用其他方法來限定每個維度。例如,行可以用於第一維,並且對角線用於第二維。對於這種安排,位X0 到XN-1 首先以矩陣形式安排,其中每個位元可由Xi,j 索引。維度然後被在數學上定義為第一(行)維(Xi,j ),其中i是行索引,並且j列舉出了同一行中的所有位。此外,第二(對角線)維(Xi,j )被限定,使得i-j=m,其中m是對角線索引。滿足i-j=m的所有(i,j)的組合可以列舉出同一對角線中的所有位。Other methods can also be used to qualify each dimension. For example, a row can be used for the first dimension and a diagonal for the second dimension. For this arrangement, bits X 0 through X N-1 are first arranged in a matrix, where each bit can be indexed by X i,j . The dimension is then mathematically defined as the first (row) dimension (X i,j ), where i is the row index and j enumerates all the bits in the same row. Furthermore, the second (diagonal) dimension (X i,j ) is defined such that i-j=m, where m is the diagonal index. All combinations of (i, j) satisfying i-j=m can enumerate all bits in the same diagonal.

乘積碼或者其他組合碼也可以被用作一個或多個維度的組成代碼。例如,在圖6A中,列維度中的代碼1可以是乘積碼。將乘積碼用作組成碼可以簡化對相應維度的解碼並且實現更高的編碼增益。Product codes or other combination codes can also be used as component codes for one or more dimensions. For example, in Figure 6A, code 1 in the column dimension can be a product code. Using the product code as a component code simplifies the decoding of the corresponding dimensions and achieves a higher coding gain.

現在參考圖11A-11G,這些圖示出了結合了本公開的教導的各種示例性實現方式。現在參考圖11A,本公開的教導可以用於對硬碟驅動器(HDD)300的NV記憶體312的資料進行編碼、解碼和糾正。HDD 300包括硬碟元件(HDA)301和HDD PCB 302。HDA 301可以包括磁介質303(例如,儲存資料的一個或多個碟片)和讀/寫器件304。讀/寫器件304可以被佈置在執行臂305上,並且可以讀磁介質303上的資料和將資料寫到磁介質303上。另外,HDA 301包括使磁介質303旋轉的主軸馬達306和驅動執行臂305的音圈馬達(VCM)307。前置放大器件308在讀操作期間對由讀/寫器件304生成的信號進行放大,並且在寫操作期間將信號提供給讀/寫器件304。Referring now to Figures 11A-11G, these figures illustrate various exemplary implementations incorporating the teachings of the present disclosure. Referring now to FIG. 11A, the teachings of the present disclosure can be used to encode, decode, and correct data for NV memory 312 of a hard disk drive (HDD) 300. The HDD 300 includes a hard disk component (HDA) 301 and an HDD PCB 302. The HDA 301 can include a magnetic medium 303 (eg, one or more discs that store material) and a read/write device 304. The read/write device 304 can be disposed on the execution arm 305 and can read material on the magnetic medium 303 and write data onto the magnetic medium 303. In addition, the HDA 301 includes a spindle motor 306 that rotates the magnetic medium 303 and a voice coil motor (VCM) 307 that drives the actuator arm 305. Preamplifier component 308 amplifies the signal generated by read/write device 304 during a read operation and provides a signal to read/write device 304 during a write operation.

HDD PCB 302包括讀/寫通道模組(下文稱作“讀通道”)309、硬碟控制器(HDC)模組310、緩衝器311、NV記憶體312、處理器313和主軸/VCM驅動器模組314。讀通道309對接收自和發送向前置放大器308的資料進行處理。HDC模組310對HDA 301的元件進行控制,並且經由I/O介面315與外部設備(未示出)進行通信。外部設備可以包括電腦、多媒體設備、移動計算設備等。I/O介面315可以包括有線和/或無線通信鏈路。The HDD PCB 302 includes a read/write channel module (hereinafter referred to as "read channel") 309, a hard disk controller (HDC) module 310, a buffer 311, an NV memory 312, a processor 313, and a spindle/VCM driver module. Group 314. Read channel 309 processes the data received and transmitted to preamplifier 308. The HDC module 310 controls the elements of the HDA 301 and communicates with external devices (not shown) via the I/O interface 315. External devices may include computers, multimedia devices, mobile computing devices, and the like. The I/O interface 315 can include wired and/or wireless communication links.

HDC模組310可以接收來自HDA 301、讀通道309、緩衝器311、非揮發性記憶體312、處理器313、主軸/VCM驅動器模組314和/或I/O介面315的資料。處理器313可以對資料進行處理,包括編碼、解碼、過濾和/或格式化。處理後的資料可以被輸出到HDA 301、讀通道309、緩衝器311、非揮發性記憶體312、處理器313、主軸/VCM驅動器模組314和/或I/O介面315。The HDC module 310 can receive data from the HDA 301, the read channel 309, the buffer 311, the non-volatile memory 312, the processor 313, the spindle/VCM driver module 314, and/or the I/O interface 315. The processor 313 can process the data, including encoding, decoding, filtering, and/or formatting. The processed data can be output to HDA 301, read channel 309, buffer 311, non-volatile memory 312, processor 313, spindle/VCM driver module 314, and/or I/O interface 315.

HDC模組310可以利用緩衝器311和/或非揮發性記憶體312來儲存與HDD 300的控制和操作相關的資料。緩衝器311可以包括DRAM、SDRAM等。非揮發性記憶體312可以包括快閃記憶體記憶體(包括NAND和NOR快閃記憶體記憶體)、相變記憶體、磁RAM或者多狀態記憶體(其中每個記憶體單元具有多於兩個狀態)。主軸/VCM驅動器模組314對主軸馬達306和VCM 307進行控制。HDD PCB 302包括向HDD 300的元件提供電力的電源316。The HDC module 310 can utilize the buffer 311 and/or the non-volatile memory 312 to store data related to the control and operation of the HDD 300. The buffer 311 may include a DRAM, an SDRAM, or the like. Non-volatile memory 312 may include flash memory memory (including NAND and NOR flash memory), phase change memory, magnetic RAM or multi-state memory (where each memory cell has more than two Status). Spindle/VCM driver module 314 controls spindle motor 306 and VCM 307. The HDD PCB 302 includes a power source 316 that provides power to components of the HDD 300.

現在參考圖11B,本公開的教導可以用於對DVD驅動器318或者CD驅動器(未示出)的NV記憶體323的資料進行編碼、解碼和糾正。DVD驅動器318包括DVD PCB 319和DVD元件(DVDA)320。DVD PCB 319包括DVD控制模組321、緩衝器322、NV記憶體323、處理器324、主軸/FM(進給馬達)驅動器模組325、類比前端模組326、寫策略模組327和DSP模組328。Referring now to FIG. 11B, the teachings of the present disclosure can be used to encode, decode, and correct data for the NV memory 323 of a DVD drive 318 or a CD drive (not shown). The DVD drive 318 includes a DVD PCB 319 and a DVD component (DVDA) 320. The DVD PCB 319 includes a DVD control module 321, a buffer 322, an NV memory 323, a processor 324, a spindle/FM (feed motor) driver module 325, an analog front end module 326, a write strategy module 327, and a DSP module. Group 328.

DVD控制模組321對DVDA 320的元件進行控制,並且經由I/O介面329與外部設備(未示出)進行通信。外部設備可以包括電腦、多媒體設備、移動計算設備等。I/O介面329可以包括有線和/或無線通信鏈路。The DVD control module 321 controls the elements of the DVDA 320 and communicates with an external device (not shown) via the I/O interface 329. External devices may include computers, multimedia devices, mobile computing devices, and the like. I/O interface 329 can include wired and/or wireless communication links.

DVD控制模組321可以接收來自緩衝器322、非揮發性記憶體323、處理器324、主軸/FM驅動器模組325、類比前端模組326、寫策略模組327、DSP模組328和/或I/O介面329的資料。處理器324可以對資料進行處理,包括編碼、解碼、過濾和/或格式化。DSP模組328執行信號處理,例如,視頻和/或音頻編碼/解碼。處理後的資料可以被輸出到緩衝器322、非揮發性記憶體323、處理器324、主軸/FM驅動器模組325、類比前端模組326、寫策略模組327、DSP模組328和/或I/O介面329。The DVD control module 321 can receive from the buffer 322, the non-volatile memory 323, the processor 324, the spindle/FM driver module 325, the analog front end module 326, the write strategy module 327, the DSP module 328, and/or Information on the I/O interface 329. Processor 324 can process the data, including encoding, decoding, filtering, and/or formatting. The DSP module 328 performs signal processing, such as video and/or audio encoding/decoding. The processed data can be output to buffer 322, non-volatile memory 323, processor 324, spindle/FM driver module 325, analog front end module 326, write strategy module 327, DSP module 328, and/or I/O interface 329.

DVD控制模組321可以利用緩衝器322和/或非揮發性記憶體323來儲存與DVD驅動器318的控制和操作相關的資料。緩衝器322可以包括DRAM、SDRAM等。非揮發性記憶體323可以包括快閃記憶體記憶體(包括NAND和NOR快閃記憶體記憶體)、相變記憶體、磁RAM或者多狀態記憶體(其中每個記憶體單元具有多於兩個狀態)。DVD PCB 319包括向DVD驅動器318的元件提供電力的電源330。The DVD control module 321 can utilize the buffer 322 and/or the non-volatile memory 323 to store data related to the control and operation of the DVD drive 318. Buffer 322 can include DRAM, SDRAM, and the like. The non-volatile memory 323 may include flash memory memory (including NAND and NOR flash memory), phase change memory, magnetic RAM, or multi-state memory (where each memory cell has more than two Status). The DVD PCB 319 includes a power source 330 that provides power to components of the DVD drive 318.

DVDA 320可以包括前置放大器331、鐳射驅動器332和光器件333,該光器件333可以是光讀/寫(ORW)器件或者光唯讀(OR)器件。主軸馬達334使光儲存介質335旋轉,並且進給馬達336相對於光儲存介質335驅動光器件333。The DVDA 320 can include a preamplifier 331, a laser driver 332, and an optical device 333, which can be an optical read/write (ORW) device or an optical read only (OR) device. Spindle motor 334 rotates optical storage medium 335 and feed motor 336 drives optical device 333 relative to optical storage medium 335.

在從光儲存介質335讀數據時,鐳射驅動器向光器件333提供讀功率。光器件333檢測來自光儲存介質335的資料,並且將該資料發送到前置放大器331。類比前端模組326從前置放大器331接收到資料,並且執行諸如過濾和A/D轉換之類的功能。為了向光儲存介質335寫入,寫策略模組327將功率水平和定時資料發送到鐳射驅動器332。鐳射驅動器332對光器件333進行控制來將資料寫到光儲存介質335。Upon reading data from the optical storage medium 335, the laser driver provides read power to the optical device 333. The optical device 333 detects material from the optical storage medium 335 and transmits the data to the preamplifier 331. The analog front end module 326 receives the material from the preamplifier 331 and performs functions such as filtering and A/D conversion. In order to write to the optical storage medium 335, the write strategy module 327 sends the power level and timing data to the laser driver 332. The laser driver 332 controls the optical device 333 to write material to the optical storage medium 335.

現在參考圖11C,本公開的教導可以用來對高清晰電視(HDTV)337中的記憶體341的資料進行編碼、解碼和糾正。HDTV 337包括HDTV控制模組338、顯示器339、電源340、記憶體341、儲存設備342、網路介面343和外部介面345。如果網路介面343包括無線局域網介面,則可能包括天線(未示出)。Referring now to FIG. 11C, the teachings of the present disclosure can be used to encode, decode, and correct data for memory 341 in high definition television (HDTV) 337. The HDTV 337 includes an HDTV control module 338, a display 339, a power source 340, a memory 341, a storage device 342, a network interface 343, and an external interface 345. If the network interface 343 includes a wireless local area network interface, an antenna (not shown) may be included.

HDTV 337可以接收來自經由線纜、寬帶因特網和/或衛星發送和接收資料的網路介面343和/或外部介面345的輸入信號。HDTV控制模組338可以對輸入信號進行處理,包括編碼、解碼、過濾和/或格式化,並且生成輸出信號。輸出信號可以被傳輸到顯示器339、記憶體341、儲存設備342、網路介面343和外部介面345中的一個或多個。The HDTV 337 can receive input signals from a network interface 343 and/or an external interface 345 that transmit and receive data via cable, broadband Internet, and/or satellite. The HDTV control module 338 can process the input signal, including encoding, decoding, filtering, and/or formatting, and generate an output signal. The output signal can be transmitted to one or more of display 339, memory 341, storage device 342, network interface 343, and external interface 345.

記憶體341可以包括隨機存取記憶體(RAM)和/或非揮發性記憶體,非揮發性記憶體例如是快閃記憶體記憶體、相變記憶體或者多狀態記憶體(其中每個記憶體單元具有多於兩個狀態)。儲存設備342可以包括光儲存驅動器(例如,DVD驅動器)和/或硬碟驅動器(HDD)。HDTV控制模組338經由網路介面343和/或外部介面345與外部通信。電源340向HDTV 337的元件提供電力。The memory 341 may include random access memory (RAM) and/or non-volatile memory, such as a flash memory, a phase change memory, or a multi-state memory (each of which memories) The body unit has more than two states). The storage device 342 can include an optical storage drive (eg, a DVD drive) and/or a hard disk drive (HDD). The HDTV control module 338 communicates with the outside via the network interface 343 and/or the external interface 345. Power source 340 provides power to the components of HDTV 337.

現在參考圖11D,本公開的教導可以用來對車輛346的資料進行編碼、解碼和糾正。車輛346可以包括車輛控制系統347、電源348、NV記憶體349、儲存設備350,以及網路介面352。如果網路介面352包括無線局域網介面,則可以包括天線(未示出)。車輛控制系統347可以是傳動系控制系統、主體控制系統、娛樂控制系統、防抱死剎車系統(ABS)、導航系統、遠端資訊處理系統、車道偏離系統、自適應巡航控制系統等。Referring now to FIG. 11D, the teachings of the present disclosure can be used to encode, decode, and correct data for the vehicle 346. Vehicle 346 may include vehicle control system 347, power source 348, NV memory 349, storage device 350, and network interface 352. If the network interface 352 includes a wireless local area network interface, an antenna (not shown) may be included. The vehicle control system 347 can be a powertrain control system, a main body control system, an entertainment control system, an anti-lock braking system (ABS), a navigation system, a remote information processing system, a lane departure system, an adaptive cruise control system, and the like.

車輛控制系統347可以與一個或多個感測器354通信,並且生成一個或多個輸出信號356。感測器354可以包括溫度感測器、加速感測器、壓力感測器、轉動感測器、氣流感測器等。輸出信號356可以控制引擎工作參數、傳輸工作參數、懸挂參數等。Vehicle control system 347 can communicate with one or more sensors 354 and generate one or more output signals 356. The sensor 354 can include a temperature sensor, an acceleration sensor, a pressure sensor, a rotational sensor, a gas flu detector, and the like. The output signal 356 can control engine operating parameters, transmission operating parameters, suspension parameters, and the like.

電源348向車輛346的元件提供電力。車輛控制系統347可以將資料儲存到記憶體349和/或儲存設備350中。記憶體349可以包括隨機存取記憶體(RAM)和/或非揮發性記憶體,非揮發性記憶體例如是快閃記憶體記憶體、相變記憶體或者多狀態記憶體(其中每個記憶體單元具有多於兩個狀態)。儲存設備350可以包括光儲存驅動器(例如,DVD驅動器)和/或硬碟驅動器(HDD)。車輛控制系統347可以利用網路介面352與外部通信。Power source 348 provides power to the components of vehicle 346. The vehicle control system 347 can store the data in the memory 349 and/or the storage device 350. The memory 349 may include random access memory (RAM) and/or non-volatile memory, such as flash memory, phase change memory or multi-state memory (where each memory) The body unit has more than two states). The storage device 350 can include an optical storage drive (eg, a DVD drive) and/or a hard disk drive (HDD). Vehicle control system 347 can communicate with the outside using network interface 352.

現在參考圖11E,本公開的教導可以用來對蜂窩電話358中的NV記憶體364的資料進行編碼、解碼和糾正。蜂窩電話358包括電話控制模組360、電源362、NV記憶體364、儲存設備366,以及蜂窩網路介面367。蜂窩電話358可以包括網路介面368、麥克風370、音頻輸出372(例如,揚聲器和/或輸出插孔)、顯示幕374,以及用戶輸入設備376(例如,鍵盤和/或點選設備)。如果網路介面368包括無線局域網介面,則可以包括天線(未示出)。Referring now to FIG. 11E, the teachings of the present disclosure can be used to encode, decode, and correct data for NV memory 364 in cellular telephone 358. The cellular telephone 358 includes a telephone control module 360, a power source 362, an NV memory 364, a storage device 366, and a cellular network interface 367. Cellular phone 358 can include a network interface 368, a microphone 370, an audio output 372 (eg, a speaker and/or output jack), a display screen 374, and a user input device 376 (eg, a keyboard and/or pointing device). If the network interface 368 includes a wireless local area network interface, an antenna (not shown) may be included.

電話控制模組360可以接收來自蜂窩網路介面367、網路介面368、麥克風370和/或用戶輸入設備376的輸入信號。電話控制模組360可以對信號進行處理(包括編碼、解碼、過濾和/或格式化),並且生成輸出信號。輸出信號可以被傳輸到記憶體364、儲存設備366、蜂窩網路介面367、網路介面368和音頻輸出372中的一個或多個。The telephony control module 360 can receive input signals from the cellular network interface 367, the network interface 368, the microphone 370, and/or the user input device 376. The telephony control module 360 can process the signals (including encoding, decoding, filtering, and/or formatting) and generate an output signal. The output signal can be transmitted to one or more of memory 364, storage device 366, cellular network interface 367, network interface 368, and audio output 372.

記憶體364可以包括隨機存取記憶體(RAM)和/或非揮發性記憶體,非揮發性記憶體例如是快閃記憶體記憶體、相變記憶體或者多狀態記憶體(其中每個記憶體單元具有多於兩個狀態)。儲存設備366可以包括光儲存驅動器(例如,DVD驅動器)和/或硬碟驅動器(HDD)。電源362向蜂窩電話358的元件提供電力。The memory 364 may include random access memory (RAM) and/or non-volatile memory, such as flash memory, phase change memory or multi-state memory (where each memory) The body unit has more than two states). The storage device 366 can include an optical storage drive (eg, a DVD drive) and/or a hard disk drive (HDD). Power source 362 provides power to the components of cellular telephone 358.

現在參考圖11F,本公開的教導可以用來對機頂盒378中的記憶體383的資料進行編碼、解碼和糾正。機頂盒378包括機頂盒控制模組380、顯示器381、電源382、記憶體383、儲存設備384,以及網路介面385。如果網路介面385包括無線局域網介面,則可以包括天線(未示出)。Referring now to FIG. 11F, the teachings of the present disclosure can be used to encode, decode, and correct data for memory 383 in set top box 378. The set top box 378 includes a set top box control module 380, a display 381, a power source 382, a memory 383, a storage device 384, and a network interface 385. If the network interface 385 includes a wireless local area network interface, an antenna (not shown) may be included.

機頂盒控制模組380可以接收來自可以經由線纜、寬帶因特網和/或衛星發送和接收信號的網路介面385和外部介面387的輸入信號。機頂盒控制模組380可以對信號進行處理(包括編碼、解碼、過濾和/或格式化),並且生成輸出信號。輸出信號可以包括標準和/或高清晰格式的音頻和/或視頻信號。輸出信號可以被傳輸到網路介面385和/或顯示器381。顯示器381可以包括電視、投影儀和/或監視器。The set top box control module 380 can receive input signals from a network interface 385 and an external interface 387 that can transmit and receive signals via cable, broadband Internet, and/or satellite. The set top box control module 380 can process the signals (including encoding, decoding, filtering, and/or formatting) and generate an output signal. The output signals may include audio and/or video signals in standard and/or high definition formats. The output signal can be transmitted to network interface 385 and/or display 381. Display 381 can include a television, a projector, and/or a monitor.

電源382向機頂盒378的元件提供電力。記憶體383可以包括隨機存取記憶體(RAM)和/或非揮發性記憶體,非揮發性記憶體例如是快閃記憶體記憶體、相變記憶體或者多狀態記憶體(其中每個記憶體單元具有多於兩個狀態)。儲存設備384可以包括光儲存驅動器(例如,DVD驅動器)和/或硬碟驅動器(HDD)。Power source 382 provides power to the components of set top box 378. The memory 383 may include random access memory (RAM) and/or non-volatile memory, such as flash memory, phase change memory or multi-state memory (where each memory) The body unit has more than two states). The storage device 384 can include an optical storage drive (eg, a DVD drive) and/or a hard disk drive (HDD).

現在參考圖11G,本公開的教導可以用於對移動設備的NV記憶體392中的資料進行編碼、解碼和糾正。移動設備389可以包括移動設備控制模組390、電源391、NV記憶體392、儲存設備393、WLAN介面394和外部介面399。如果網路介面394包括無線局域網介面,則可以包括天線(未示出)。Referring now to FIG. 11G, the teachings of the present disclosure can be used to encode, decode, and correct data in NV memory 392 of a mobile device. The mobile device 389 can include a mobile device control module 390, a power source 391, an NV memory 392, a storage device 393, a WLAN interface 394, and an external interface 399. If the network interface 394 includes a wireless local area network interface, an antenna (not shown) may be included.

移動設備控制模組390可以接收來自網路介面394和/或外部介面399的輸入信號。外部介面399可以包括USB、紅外和/或乙太網。輸入信號可以包括經壓縮的音頻和/或視頻,並且可以遵循MP3格式。另外,移動設備控制模組390可以接收來自諸如鍵盤、觸摸屏或單個按鈕之類的用戶輸入396的輸入。移動設備控制模組390可以對輸入信號進行處理(包括編碼、解碼、過濾和/或格式化),並且生成輸出信號。Mobile device control module 390 can receive input signals from network interface 394 and/or external interface 399. External interface 399 can include USB, infrared, and/or Ethernet. The input signal can include compressed audio and/or video and can follow the MP3 format. Additionally, the mobile device control module 390 can receive input from a user input 396 such as a keyboard, touch screen, or a single button. The mobile device control module 390 can process the input signal (including encoding, decoding, filtering, and/or formatting) and generate an output signal.

移動設備控制模組390可以將音頻信號輸出到音頻輸出397,和將視頻信號輸出到顯示幕398。音頻輸出397可以包括揚聲器和/或輸出插孔。顯示幕398可以呈現圖形用戶介面,該圖形用戶介面可以包括功能表、圖示等。電源391向媒體播放機389的元件提供電力。記憶體392可以包括隨機存取記憶體(RAM)和/或非揮發性記憶體,非揮發性記憶體例如是快閃記憶體記憶體、相變記憶體或者多狀態記憶體(其中每個記憶體單元具有多於兩個狀態)。儲存設備393可以包括光儲存驅動器(例如,DVD驅動器)和/或硬碟驅動器(HDD)。移動設備可以包括個人數位助理、媒體播放機、膝上型電腦、遊戲控制臺或者其他移動計算設備。The mobile device control module 390 can output an audio signal to the audio output 397 and output the video signal to the display screen 398. Audio output 397 can include a speaker and/or an output jack. Display 398 may present a graphical user interface, which may include a menu, icons, and the like. Power source 391 provides power to the components of media player 389. The memory 392 may include random access memory (RAM) and/or non-volatile memory, such as flash memory, phase change memory or multi-state memory (each memory) The body unit has more than two states). The storage device 393 can include an optical storage drive (eg, a DVD drive) and/or a hard disk drive (HDD). Mobile devices may include personal digital assistants, media players, laptops, game consoles, or other mobile computing devices.

本領域的技術人員現在可從前述描述中意識到本發明的寬泛教導可按多種形式實現。因此,儘管本公開包括特定示例,但是本公開的真實範圍不應受到限制,因為本領域的技術人員在研究附圖、說明書和所附權利要求書之後將明白其他修改。Those skilled in the art can now appreciate from the foregoing description that the broad teachings of the invention can be implemented in various forms. Accordingly, the present invention is intended to be limited by the scope of the inventions

10...記憶體10. . . Memory

12...記憶體控制器12. . . Memory controller

14...寫路徑14. . . Write path

16...讀路徑16. . . Reading path

18...編碼器18. . . Encoder

20...解碼器20. . . decoder

30...陣列30. . . Array

31、31-1、31-2、…、和31-M...行31, 31-1, 31-2, ..., and 31-M. . . Row

32...用戶資料區域32. . . User profile area

34...開銷資料區域34. . . Overhead data area

50...記憶體儲存系統50. . . Memory storage system

54...寫路徑54. . . Write path

56...讀路徑56. . . Reading path

58...乘積碼編碼器58. . . Product code encoder

59...記憶體控制器59. . . Memory controller

60...調製器60. . . Modulator

62...NV記憶體62. . . NV memory

70...解調器70. . . Demodulator

72...乘積碼解碼器72. . . Product code decoder

74...行編碼器74. . . Line encoder

76...列編碼器76. . . Column encoder

78...行解碼器78. . . Row decoder

80...列解碼器80. . . Column decoder

82...糾錯模組82. . . Error correction module

84...突發錯誤解碼器84. . . Burst error decoder

86...乘積碼(Cp )86. . . Product code (C p )

88-1、88-2、…、和88-P...行88-1, 88-2, ..., and 88-P. . . Row

89...解碼器模組89. . . Decoder module

90-1、90-2、…、和90-Q...列90-1, 90-2, ..., and 90-Q. . . Column

220...乘積碼220. . . Product code

222、224和226...代碼/碼字222, 224 and 226. . . Code/codeword

300...硬碟驅動器300. . . Hard disk drive

301...硬碟元件(HDA)模組301. . . Hard disk component (HDA) module

302...硬碟元件(HDA)印刷電路板302. . . Hard disk component (HDA) printed circuit board

303...磁介質303. . . Magnetic medium

304...讀/寫器件304. . . Read/write device

305...驅動執行臂305. . . Drive actuator arm

306...主軸馬達306. . . Spindle motor

307...音圈馬達(VCM)307. . . Voice coil motor (VCM)

308...前置放大器件308. . . Preamplifier

309...讀/寫通道模組309. . . Read/write channel module

310...HDC模組310. . . HDC module

311...緩衝器模組311. . . Buffer module

313...處理器313. . . processor

314...主軸/VCM驅動器模組314. . . Spindle/VCM driver module

315...I/O介面315. . . I/O interface

316...電源316. . . power supply

318...DVD驅動器318. . . DVD drive

319...DVD PCB319. . . DVD PCB

320...DVD元件(DVDA)320. . . DVD component (DVDA)

321...DVD控制模組321. . . DVD control module

322...緩衝器322. . . buffer

323...NV記憶體323. . . NV memory

324...處理器324. . . processor

325...主軸/FM(進給馬達)驅動器模組325. . . Spindle/FM (feed motor) driver module

326...類比前端模組326. . . Analog front end module

327...寫策略模組327. . . Write strategy module

328...DSP模組328. . . DSP module

329...I/O介面329. . . I/O interface

330...電源330. . . power supply

331...前置放大器331. . . Preamplifier

332...鐳射驅動器332. . . Laser driver

333...光器件333. . . Optical device

334...主軸馬達334. . . Spindle motor

335...光儲存介質335. . . Optical storage medium

336...馬達336. . . motor

337...高清晰電視(HDTV)337. . . High definition television (HDTV)

338...HDTV控制模組338. . . HDTV control module

339...顯示器339. . . monitor

340...電源340. . . power supply

341...記憶體341. . . Memory

342...儲存設備342. . . Storage device

343...網路介面343. . . Network interface

345...外部介面345. . . External interface

346...車輛346. . . vehicle

347...車輛控制系統347. . . Vehicle control system

348...電源348. . . power supply

349...NV記憶體349. . . NV memory

350...儲存設備350. . . Storage device

352...網路介面352. . . Network interface

354...感測器354. . . Sensor

356...信號356. . . signal

358...蜂窩電話358. . . Cellular phone

360...電話控制模組360. . . Telephone control module

362...電源362. . . power supply

364...NV記憶體364. . . NV memory

366...儲存設備366. . . Storage device

367...蜂窩網路介面367. . . Cellular network interface

368...網路介面368. . . Network interface

370...麥克風370. . . microphone

372...音頻輸出372. . . Audio output

374...顯示幕374. . . Display screen

376...用戶輸入設備376. . . User input device

378...機頂盒378. . . Set top box

380...控制模組380. . . Control module

381...顯示器381. . . monitor

382...電源382. . . power supply

383...記憶體383. . . Memory

384...儲存設備384. . . Storage device

385...網路介面385. . . Network interface

389...移動設備389. . . Mobile devices

390...移動設備控制模組390. . . Mobile device control module

391...電源391. . . power supply

392...NV記憶體392. . . NV memory

393...儲存設備393. . . Storage device

394...WLAN介面394. . . WLAN interface

396...用戶輸入396. . . User input

397...音頻輸出397. . . Audio output

398...顯示幕398. . . Display screen

399...外部介面399. . . External interface

圖1是根據現有技術的記憶體系統的功能框圖;圖2是根據現有技術的記憶體陣列的示意圖;圖3是根據本公開的記憶體系統的功能框圖;圖4是根據本公開的乘積碼編碼器的功能框圖;圖5是根據本公開的乘積碼解碼器的功能框圖;圖6A-6B是根據本公開的記憶體陣列的示意圖;圖7是根據本公開的乘積碼解碼器的功能框圖;圖8是示出了非揮發性記憶體系統的示例性性能的圖;圖9是示出了根據本公開的用於編碼和解碼非揮發性記憶體的方法的框圖;圖10是根據本公開的三維(3D)乘積碼的示意圖;圖11A是硬碟驅動器的功能框圖;圖11B是DVD驅動器的功能框圖;圖11C是高清晰電視的功能框圖;圖11D是車輛控制系統的功能框圖;圖11E是蜂窩電話的功能框圖;圖11F是機頂盒的功能框圖;以及圖11G是移動設備的功能框圖。1 is a functional block diagram of a memory system according to the prior art; FIG. 2 is a schematic diagram of a memory array according to the prior art; FIG. 3 is a functional block diagram of a memory system according to the present disclosure; Functional block diagram of a product code encoder; FIG. 5 is a functional block diagram of a product code decoder in accordance with the present disclosure; FIGS. 6A-6B are schematic diagrams of a memory array in accordance with the present disclosure; FIG. 7 is a product code decoding in accordance with the present disclosure. Functional block diagram of the device; FIG. 8 is a diagram showing exemplary performance of a non-volatile memory system; FIG. 9 is a block diagram showing a method for encoding and decoding non-volatile memory according to the present disclosure. Figure 10 is a schematic diagram of a three-dimensional (3D) product code in accordance with the present disclosure; Figure 11A is a functional block diagram of a hard disk drive; Figure 11B is a functional block diagram of a DVD drive; Figure 11C is a functional block diagram of a high definition television; 11D is a functional block diagram of the vehicle control system; FIG. 11E is a functional block diagram of the cellular phone; FIG. 11F is a functional block diagram of the set top box; and FIG. 11G is a functional block diagram of the mobile device.

50...記憶體儲存系統50. . . Memory storage system

54...寫路徑54. . . Write path

56...讀路徑56. . . Reading path

58...乘積碼編碼器58. . . Product code encoder

59...記憶體控制器59. . . Memory controller

60...調製器60. . . Modulator

62...NV記憶體62. . . NV memory

70...解調器70. . . Demodulator

72...乘積碼解碼器72. . . Product code decoder

Claims (13)

一種記憶體儲存系統,包括:一非揮發性半導體記憶體;一乘積碼編碼器,包括:一第一編碼器,配置以對一第一維中的碼字中的資料進行編碼;以及一第二編碼器,配置以對一第二維中的碼字中的資料進行編碼,其中,該乘積碼編碼器係配置以提供用於儲存於該非揮發性半導體記憶體中的一乘積碼碼字,該乘積碼碼字是基於該第一維中的該等碼字以及該第二維中的該等碼字;一調製器,配置以將該乘積碼碼字的位元映射至該非揮發性半導體記憶體的單元中對應的電壓級數;一解調器,配置以讀取該等單元中的該等電壓級數以及將該等電壓級數轉換成對應至該乘積碼碼字的位元;以及一解碼器,包括:一乘積碼解碼器,配置以對該乘積碼碼字執行疊代解碼;以及一突發碼解碼器,配置以與該疊代解碼平行地對該乘積碼碼字執行突發錯誤解碼。 A memory storage system comprising: a non-volatile semiconductor memory; a product code encoder comprising: a first encoder configured to encode data in a codeword in a first dimension; and a first a second encoder configured to encode data in a codeword in a second dimension, wherein the product code encoder is configured to provide a product codeword for storage in the non-volatile semiconductor memory, The product code codeword is based on the codewords in the first dimension and the codewords in the second dimension; a modulator configured to map bits of the product code codeword to the non-volatile semiconductor a corresponding voltage level in the cells of the memory; a demodulator configured to read the voltage levels in the cells and convert the voltage levels into bits corresponding to the product codeword; And a decoder comprising: a product code decoder configured to perform iterative decoding on the product code codeword; and a burst code decoder configured to perform the product codeword word in parallel with the iterative decoding Burst error decoding. 如申請專利範圍第1項所述的記憶體儲存系統,進一步包括:一寫路徑,包括該乘積碼編碼器以及該調製器;以及一讀路徑,包括該解調器以及該解碼器。 The memory storage system of claim 1, further comprising: a write path including the product code encoder and the modulator; and a read path including the demodulator and the decoder. 如申請專利範圍第1項所述的記憶體儲存系統,其中該非揮發性半導體記憶體包括一單級單元非揮發性半導體記憶體或者一多級單元非揮發性半導體記憶體。 The memory storage system of claim 1, wherein the non-volatile semiconductor memory comprises a single-level cell non-volatile semiconductor memory or a multi-level cell non-volatile semiconductor memory. 如申請專利範圍第1項所述的記憶體儲存系統,其中該第一編碼器以及該第二編碼器皆係配置以依據Bose-Chaudhuri-Hochquenghem(BCH)編碼而編碼。 The memory storage system of claim 1, wherein the first encoder and the second encoder are configured to be encoded according to Bose-Chaudhuri-Hochquenghem (BCH) encoding. 如申請專利範圍第1項所述的記憶體儲存系統,其中該乘積碼編碼器係配置以在該第一維中的該等碼字以及該第二維中的該等碼字之間疊代。 The memory storage system of claim 1, wherein the product code encoder is configured to be iterated between the codewords in the first dimension and the codewords in the second dimension. . 如申請專利範圍第1項所述的記憶體儲存系統,其中該解碼器係配置以儲存解碼時被糾正的該第一維中的該等碼字的一符號數的一指示。 The memory storage system of claim 1, wherein the decoder is configured to store an indication of a symbol number of the codewords in the first dimension corrected during decoding. 如申請專利範圍第6項所述的記憶體儲存系統,其中該解碼器係配置以基於該指示而選擇性地擦除該第一維中的該等碼字。 The memory storage system of claim 6, wherein the decoder is configured to selectively erase the codewords in the first dimension based on the indication. 一種記憶體儲存方法,包括:對一第一維中的碼字中的資料進行編碼;對一第二維中的碼字中的資料進行編碼;提供用於儲存於一非揮發性半導體記憶體中的一乘積碼碼字,該乘積碼碼字是基於該第一維中的該等碼字以及該第二維中的該等碼字;將該乘積碼碼字的位元映射至該非揮發性半導體記憶體的單元中對應的電壓級數;讀取該等單元中的該等電壓級數;將該等電壓級數轉換成對應至該乘積碼碼字的位元;對該乘積碼碼字執行疊代解碼;以及與該疊代解碼平行地對該乘積碼碼字執行突發錯誤解碼。 A memory storage method includes: encoding data in a codeword in a first dimension; encoding data in a codeword in a second dimension; providing for storage in a non-volatile semiconductor memory a product codeword in which the codeword is based on the codewords in the first dimension and the codewords in the second dimension; mapping the bits of the product codeword to the non-volatile Corresponding voltage levels in the cells of the semiconductor memory; reading the voltage levels in the cells; converting the voltage levels into bits corresponding to the product codeword; the product code The word performs iterative decoding; and performs burst error decoding on the product code codeword in parallel with the iterative decoding. 如申請專利範圍第8項所述的記憶體儲存方法,其中該非揮發性半導體記憶體包括一單級單元非揮發性半導體記憶體或者一多級單元非揮發性半導體記憶體。 The memory storage method of claim 8, wherein the non-volatile semiconductor memory comprises a single-level cell non-volatile semiconductor memory or a multi-level cell non-volatile semiconductor memory. 如申請專利範圍第8項所述的記憶體儲存方法,其中對該第一維中的該等碼字中的該資料進行編碼以及對該第二維中的該等碼 字中的該資料進行編碼包括依據Bose-Chaudhuri-Hochquenghem(BCH)編碼而編碼。 The memory storage method of claim 8, wherein the data in the codewords in the first dimension is encoded and the codes in the second dimension are The encoding of the material in the word includes encoding according to the Bose-Chaudhuri-Hochquenghem (BCH) encoding. 如申請專利範圍第8項所述的記憶體儲存方法,其中對該第一維中的該等碼字中的該資料進行編碼以及對該第二維中的該等碼字中的該資料進行編碼包括在該第一維中的該等碼字以及該第二維中的該等碼字之間疊代。 The memory storage method of claim 8, wherein the data in the codewords in the first dimension is encoded and the data in the codewords in the second dimension is performed. Encoding the codewords included in the first dimension and the iterations between the codewords in the second dimension. 如申請專利範圍第8項所述的記憶體儲存方法,進一步包括儲存解碼時被糾正的該第一維中的該等碼字的一符號數的一指示。 The memory storage method of claim 8, further comprising storing an indication of a symbol number of the codewords in the first dimension corrected during decoding. 如申請專利範圍第12項所述的記憶體儲存方法,進一步包括基於該指示而選擇性地擦除該第一維中的該等碼字。 The memory storage method of claim 12, further comprising selectively erasing the codewords in the first dimension based on the indication.
TW096129103A 2006-08-07 2007-08-07 System and method for correcting errors in non-volatile memory using product codes TWI451430B (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US82165406P 2006-08-07 2006-08-07
US11/820,934 US8046660B2 (en) 2006-08-07 2007-06-21 System and method for correcting errors in non-volatile memory using product codes

Publications (2)

Publication Number Publication Date
TW200816212A TW200816212A (en) 2008-04-01
TWI451430B true TWI451430B (en) 2014-09-01

Family

ID=38904795

Family Applications (1)

Application Number Title Priority Date Filing Date
TW096129103A TWI451430B (en) 2006-08-07 2007-08-07 System and method for correcting errors in non-volatile memory using product codes

Country Status (4)

Country Link
US (2) US8046660B2 (en)
CN (1) CN101501784B (en)
TW (1) TWI451430B (en)
WO (1) WO2008021045A2 (en)

Families Citing this family (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7823043B2 (en) * 2006-05-10 2010-10-26 Sandisk Il Ltd. Corruption-resistant data porting with multiple error correction schemes
CN101681282A (en) 2006-12-06 2010-03-24 弗森多系统公司(dba弗森-艾奥) Be used to share, front end, the device of distributed raid, system and method
US9495241B2 (en) * 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
US8120989B2 (en) * 2007-06-25 2012-02-21 Qualcomm Incorporated Concurrent multiple-dimension word-addressable memory architecture
US8051358B2 (en) 2007-07-06 2011-11-01 Micron Technology, Inc. Error recovery storage along a nand-flash string
US8065583B2 (en) 2007-07-06 2011-11-22 Micron Technology, Inc. Data storage with an outer block code and a stream-based inner code
US8301963B2 (en) * 2007-10-23 2012-10-30 Spansion Llc Low-density parity-check code based error correction for memory device
US8327245B2 (en) 2007-11-21 2012-12-04 Micron Technology, Inc. Memory controller supporting rate-compatible punctured codes
JP4978576B2 (en) * 2008-07-03 2012-07-18 株式会社Jvcケンウッド Encoding method, encoding apparatus, decoding method, and decoding apparatus
US8458536B2 (en) * 2008-07-17 2013-06-04 Marvell World Trade Ltd. Data recovery in solid state memory devices
US8291297B2 (en) * 2008-12-18 2012-10-16 Intel Corporation Data error recovery in non-volatile memory
US8023345B2 (en) * 2009-02-24 2011-09-20 International Business Machines Corporation Iteratively writing contents to memory locations using a statistical model
US8166368B2 (en) * 2009-02-24 2012-04-24 International Business Machines Corporation Writing a special symbol to a memory to indicate the absence of a data signal
US8572460B2 (en) * 2009-03-17 2013-10-29 Broadcom Corporation Communication device employing binary product coding with selective additional cyclic redundancy check (CRC) therein
US20100241923A1 (en) * 2009-03-17 2010-09-23 Broadcom Corporation Communication device employing LDPC (Low Density Parity Check) coding with Reed-Solomon (RS) and/or binary product coding
US8418021B2 (en) * 2009-03-27 2013-04-09 Mediatek Inc. Storage controller with encoding/decoding circuit programmable to support different ECC requirements and related method thereof
US20100332922A1 (en) * 2009-06-30 2010-12-30 Mediatek Inc. Method for managing device and solid state disk drive utilizing the same
US8407564B2 (en) * 2009-07-15 2013-03-26 Intel Corporation Prediction and cancellation of systematic noise sources in non-volatile memory
US8230276B2 (en) * 2009-09-28 2012-07-24 International Business Machines Corporation Writing to memory using adaptive write techniques
US8386739B2 (en) * 2009-09-28 2013-02-26 International Business Machines Corporation Writing to memory using shared address buses
TWI497293B (en) * 2009-12-17 2015-08-21 Ibm Data management in solid state storage devices
US8463985B2 (en) 2010-03-31 2013-06-11 International Business Machines Corporation Constrained coding to reduce floating gate coupling in non-volatile memories
US8386895B2 (en) 2010-05-19 2013-02-26 Micron Technology, Inc. Enhanced multilevel memory
US8615703B2 (en) * 2010-06-04 2013-12-24 Micron Technology, Inc. Advanced bitwise operations and apparatus in a multi-level system with nonvolatile memory
US8671328B2 (en) * 2011-08-15 2014-03-11 Marvell World Trade Ltd. Error correction code techniques for matrices with interleaved codewords
US9048876B2 (en) * 2011-11-18 2015-06-02 Sandisk Enterprise Ip Llc Systems, methods and devices for multi-tiered error correction
US8996952B2 (en) * 2012-01-04 2015-03-31 Marvell World Trade Ltd. High-throughput iterative decoding's defect scan in retry mode of storage system channel
US8954824B2 (en) 2012-02-28 2015-02-10 Micron Technology, Inc. Error detection or correction of stored signals after one or more heat events in one or more memory devices
US8949704B2 (en) * 2012-03-22 2015-02-03 Lsi Corporation Systems and methods for mis-correction correction in a data processing system
US8327185B1 (en) * 2012-03-23 2012-12-04 DSSD, Inc. Method and system for multi-dimensional raid
US8854759B2 (en) 2012-04-24 2014-10-07 International Business Machines Corporation Combined soft detection/soft decoding in tape drive storage channels
CN102708028B (en) * 2012-05-18 2015-01-07 中国人民解放军第二炮兵装备研究院第四研究所 Trusted redundant fault-tolerant computer system
US8996957B1 (en) 2012-05-22 2015-03-31 Pmc-Sierra, Inc. Systems and methods for initializing regions of a flash drive having diverse error correction coding (ECC) schemes
US9021337B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for adaptively selecting among different error correction coding schemes in a flash drive
US9183085B1 (en) 2012-05-22 2015-11-10 Pmc-Sierra, Inc. Systems and methods for adaptively selecting from among a plurality of error correction coding schemes in a flash drive for robustness and low latency
US9021336B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for redundantly storing error correction codes in a flash drive with secondary parity information spread out across each page of a group of pages
US8788910B1 (en) 2012-05-22 2014-07-22 Pmc-Sierra, Inc. Systems and methods for low latency, high reliability error correction in a flash drive
US9021333B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for recovering data from failed portions of a flash drive
US9176812B1 (en) 2012-05-22 2015-11-03 Pmc-Sierra, Inc. Systems and methods for storing data in page stripes of a flash drive
US8793556B1 (en) 2012-05-22 2014-07-29 Pmc-Sierra, Inc. Systems and methods for reclaiming flash blocks of a flash drive
US9047214B1 (en) 2012-05-22 2015-06-02 Pmc-Sierra, Inc. System and method for tolerating a failed page in a flash device
US8972824B1 (en) 2012-05-22 2015-03-03 Pmc-Sierra, Inc. Systems and methods for transparently varying error correction code strength in a flash drive
US9558782B2 (en) 2012-05-29 2017-01-31 International Business Machines Corporation Partial reverse concatenation for data storage devices using composite codes
US9178534B2 (en) 2012-05-29 2015-11-03 International Business Machines Corporation Methods for partial reverse concatenation for data storage devices using composite codes
US9190076B2 (en) 2012-05-29 2015-11-17 International Business Machines Corporation Data format using an efficient reverse concatenated modulation code for magnetic tape recording
CN102710264B (en) * 2012-06-29 2014-11-19 华为技术有限公司 Decoding method and device
US9577673B2 (en) * 2012-11-08 2017-02-21 Micron Technology, Inc. Error correction methods and apparatuses using first and second decoders
US9201727B2 (en) 2013-01-15 2015-12-01 International Business Machines Corporation Error protection for a data bus
US9041428B2 (en) 2013-01-15 2015-05-26 International Business Machines Corporation Placement of storage cells on an integrated circuit
US20140201599A1 (en) * 2013-01-15 2014-07-17 International Business Machines Corporation Error protection for integrated circuits in an insensitive direction
US9021328B2 (en) 2013-01-15 2015-04-28 International Business Machines Corporation Shared error protection for register banks
US9043683B2 (en) 2013-01-23 2015-05-26 International Business Machines Corporation Error protection for integrated circuits
CN103198869B (en) * 2013-03-04 2016-04-27 中国科学院长春光学精密机械与物理研究所 A kind of space ccd image storer nand flash memory error correction coder/decoder and error correction method
US9081701B1 (en) 2013-03-15 2015-07-14 Pmc-Sierra, Inc. Systems and methods for decoding data for solid-state memory
US9208018B1 (en) 2013-03-15 2015-12-08 Pmc-Sierra, Inc. Systems and methods for reclaiming memory for solid-state memory
US9053012B1 (en) 2013-03-15 2015-06-09 Pmc-Sierra, Inc. Systems and methods for storing data for solid-state memory
US9026867B1 (en) 2013-03-15 2015-05-05 Pmc-Sierra, Inc. Systems and methods for adapting to changing characteristics of multi-level cells in solid-state memory
US9009565B1 (en) 2013-03-15 2015-04-14 Pmc-Sierra, Inc. Systems and methods for mapping for solid-state memory
CN103618584A (en) * 2013-04-28 2014-03-05 张涛 Coding and decoding method and coding and decoding system of power line communication channel
CN103309766A (en) * 2013-06-20 2013-09-18 中国科学院微电子研究所 Error correction method of cyclic hamming code based on parallel coding and decoding
CN103338046B (en) * 2013-06-21 2016-03-30 上海交通大学 The encoding and decoding method of the LDPC-RS two dimensional product codes of code-rate-compatible
US9166627B2 (en) 2013-08-07 2015-10-20 International Business Machines Corporation Combination error and erasure decoding for product codes
US10275624B2 (en) * 2013-10-29 2019-04-30 Hand Held Products, Inc. Hybrid system and method for reading indicia
US9436550B2 (en) * 2013-10-31 2016-09-06 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for internal disk drive data compression
US9819362B2 (en) * 2015-03-27 2017-11-14 Intel Corporation Apparatus and method for detecting and mitigating bit-line opens in flash memory
US9712188B2 (en) * 2015-05-04 2017-07-18 International Business Machines Corporation Decoding data stored with three orthogonal codewords
US9606868B2 (en) 2015-05-04 2017-03-28 International Business Machines Corporation Encoding and writing of data on multitrack tape
US10587288B1 (en) * 2015-06-04 2020-03-10 Marvell International Ltd. Systems and methods for iterative coding of product codes in nand FLASH controllers
US9792176B2 (en) 2015-11-13 2017-10-17 Samsung Electronics Co., Ltd. Method and apparatus for encoding and decoding data in memory system
US9413392B1 (en) * 2015-12-14 2016-08-09 International Business Machines Corporation Post-decoding error check with diagnostics for product codes
US10846174B2 (en) * 2016-06-30 2020-11-24 Samsung Electronics Co., Ltd. Method of recovering data and memory system and raid storage system using the same
CN107743036B (en) * 2016-08-24 2020-09-25 中国科学院微电子研究所 BCH code decoding method
US10284230B2 (en) * 2016-11-15 2019-05-07 Western Digital Technologies, Inc. Linked storage system and host system error correcting code
CN107483188A (en) * 2017-08-07 2017-12-15 浪潮(北京)电子信息产业有限公司 A kind of key method for secure storing and system
CN107682020B (en) * 2017-10-26 2020-09-04 北京邮电大学 Encoding and decoding method and device based on Turbo code
US10831596B2 (en) * 2018-01-22 2020-11-10 Micron Technology, Inc. Enhanced error correcting code capability using variable logical to physical associations of a data block
KR102511903B1 (en) * 2018-02-26 2023-03-21 에스케이하이닉스 주식회사 Memory system capable of performing reconfigurable error correction using ECC engine with fixed ECC capability
US20190317857A1 (en) * 2019-04-26 2019-10-17 Intel Corporation Technologies for providing error correction for row direction and column direction in a cross point memory
TWI783895B (en) * 2022-04-01 2022-11-11 國立勤益科技大學 QR code verification system and method of random RS code

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4688219A (en) * 1984-08-17 1987-08-18 Fujitsu Limited Semiconductor memory device having redundant memory and parity capabilities
US5719884A (en) * 1995-07-27 1998-02-17 Hewlett-Packard Company Error correction method and apparatus based on two-dimensional code array with reduced redundancy
US20010050622A1 (en) * 2000-03-14 2001-12-13 Hewitt Eric John Enhanced turbo product codes
US20020049947A1 (en) * 2000-06-02 2002-04-25 Satish Sridharan Product code based forward error correction system
US20020083391A1 (en) * 2000-12-22 2002-06-27 Huggett Anthony Richard Method and apparatus for encoding a product code
US20020099996A1 (en) * 1998-02-05 2002-07-25 Masayuki Demura Method and apparatus for detecting and correcting errors and erasures in product ecc-coded data arrays for dvd and similar storage subsystems
US20040123223A1 (en) * 2002-07-29 2004-06-24 Robert Halford Multi-dimensional data protection and mirroring method for micro level data
US20050273688A1 (en) * 2004-06-02 2005-12-08 Cenk Argon Data communication system with multi-dimensional error-correction product codes
US7003712B2 (en) * 2001-11-29 2006-02-21 Emin Martinian Apparatus and method for adaptive, multimode decoding

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6017496A (en) * 1995-06-07 2000-01-25 Irori Matrices with memories and uses thereof
JPH10334607A (en) 1997-05-30 1998-12-18 Matsushita Electric Ind Co Ltd Magnetic disk device
US20020034269A1 (en) * 2000-07-28 2002-03-21 Victor Demjanenko Use of soft-decision or sum-product inner coders to improve the performance of outer coders
JP4056488B2 (en) * 2004-03-30 2008-03-05 エルピーダメモリ株式会社 Semiconductor device testing method and manufacturing method
US8055979B2 (en) * 2006-01-20 2011-11-08 Marvell World Trade Ltd. Flash memory with coding and signal processing
US7802163B2 (en) * 2006-07-31 2010-09-21 Agere Systems Inc. Systems and methods for code based error reduction

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4688219A (en) * 1984-08-17 1987-08-18 Fujitsu Limited Semiconductor memory device having redundant memory and parity capabilities
US5719884A (en) * 1995-07-27 1998-02-17 Hewlett-Packard Company Error correction method and apparatus based on two-dimensional code array with reduced redundancy
US20020099996A1 (en) * 1998-02-05 2002-07-25 Masayuki Demura Method and apparatus for detecting and correcting errors and erasures in product ecc-coded data arrays for dvd and similar storage subsystems
US20010050622A1 (en) * 2000-03-14 2001-12-13 Hewitt Eric John Enhanced turbo product codes
US20020049947A1 (en) * 2000-06-02 2002-04-25 Satish Sridharan Product code based forward error correction system
US20020083391A1 (en) * 2000-12-22 2002-06-27 Huggett Anthony Richard Method and apparatus for encoding a product code
US7003712B2 (en) * 2001-11-29 2006-02-21 Emin Martinian Apparatus and method for adaptive, multimode decoding
US20040123223A1 (en) * 2002-07-29 2004-06-24 Robert Halford Multi-dimensional data protection and mirroring method for micro level data
US20050273688A1 (en) * 2004-06-02 2005-12-08 Cenk Argon Data communication system with multi-dimensional error-correction product codes

Also Published As

Publication number Publication date
WO2008021045A2 (en) 2008-02-21
CN101501784A (en) 2009-08-05
US20120042224A1 (en) 2012-02-16
TW200816212A (en) 2008-04-01
US20080034272A1 (en) 2008-02-07
US8566664B2 (en) 2013-10-22
CN101501784B (en) 2013-10-23
US8046660B2 (en) 2011-10-25
WO2008021045A3 (en) 2008-04-17

Similar Documents

Publication Publication Date Title
TWI451430B (en) System and method for correcting errors in non-volatile memory using product codes
US20200177208A1 (en) Device, system and method of implementing product error correction codes for fast encoding and decoding
US10135465B2 (en) Error correction methods and apparatuses using first and second decoders
US8713411B2 (en) Encoding and/or decoding memory devices and methods thereof
US10417089B2 (en) Data storage device extending erasures for LDPC-type decoding
JP5055578B2 (en) Link code for holographic storage
US8281217B2 (en) Memory devices and encoding and/or decoding methods
KR101410434B1 (en) Method and system for error correction in flash memory
US8255763B1 (en) Error correction system using an iterative product code
JP5232014B2 (en) Flash memory having coding and signal processing functions
US8677217B2 (en) Data input / output control device and semiconductor memory device system
US20090177943A1 (en) Error correction coding using soft information and interleaving
US20140168811A1 (en) Irregular Low Density Parity Check Decoder With Low Syndrome Error Handling
US8601354B1 (en) Methods and apparatus for identification of likely errors in data blocks
US20150370631A1 (en) Write mapping to mitigate hard errors via soft-decision decoding
US11049520B1 (en) Data storage device employing multi-tier coding for magnetic tape
JP2019057752A (en) Memory system
US20110029839A1 (en) Systems and Methods for Utilizing Circulant Parity in a Data Processing System
US8910013B1 (en) Methods and apparatus for providing multi-layered coding for memory devices
US20150170765A1 (en) Apparatus and method for decoding data
US7984367B1 (en) Method for iterative decoding in the presence of burst errors
US10592334B2 (en) Data storage device emphasizing parity sector processing of un-converged codewords
JP2009271963A (en) Decoding method, hard disk controller, and hard disk device

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees