JP2022536065A - Efficient Error Correction of Codewords Encoded by Binary Symmetric Invariant Product Codes - Google Patents

Efficient Error Correction of Codewords Encoded by Binary Symmetric Invariant Product Codes Download PDF

Info

Publication number
JP2022536065A
JP2022536065A JP2021571707A JP2021571707A JP2022536065A JP 2022536065 A JP2022536065 A JP 2022536065A JP 2021571707 A JP2021571707 A JP 2021571707A JP 2021571707 A JP2021571707 A JP 2021571707A JP 2022536065 A JP2022536065 A JP 2022536065A
Authority
JP
Japan
Prior art keywords
data
error
array
correction circuit
product code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2021571707A
Other languages
Japanese (ja)
Other versions
JP7479401B2 (en
Inventor
キャンプ、チャールズ
スタニサヴリェヴィッチ、ミロス
サイプラス、ロバート、アラン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2022536065A publication Critical patent/JP2022536065A/en
Application granted granted Critical
Publication of JP7479401B2 publication Critical patent/JP7479401B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2909Product codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2903Methods and arrangements specifically for encoding, e.g. parallel encoding of a plurality of constituent codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2927Decoding strategies
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2948Iterative decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/611Specific encoding aspects, e.g. encoding by means of decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

バイナリ対称不変積符号を復号するためのデコーダが、直交する第1および第2の次元を有するデータ・アレイを含む。データ・アレイは、第1の次元のみに沿ってデータ・アレイ内にバッファリングされたバイナリ対称不変積符号にアクセスするように構成される。デコーダはまた、誤り位置を記憶するための誤り記憶アレイと、第1の次元に沿ってデータ・アレイからアクセスされたデータ内の誤りを検出および訂正し、誤り記憶アレイ内に第2の次元に沿った誤り位置を記憶するように構成された第1の訂正回路とを含む。第1の訂正回路は、対称不変積符号のデータ対称性に基づいて誤り位置を求める。デコーダはまた、第1の次元に沿ってデータ・アレイからアクセスされたデータの第1の訂正回路による受信前に、誤り記憶アレイ内に記憶された誤り位置に基づいてデータ・アレイからアクセスされたデータを訂正する第2の訂正回路を含む。A decoder for decoding a binary symmetric invariant product code includes a data array having orthogonal first and second dimensions. The data array is configured to access binary symmetric invariant product codes buffered within the data array along only the first dimension. The decoder also includes an error storage array for storing error locations and detecting and correcting errors in data accessed from the data array along a first dimension and into a second dimension in the error storage array. and a first correction circuit configured to store error locations along. A first correction circuit obtains an error location based on the data symmetry of the symmetric invariant product code. The decoder is also accessed from the data array based on the error locations stored in the error storage array prior to receipt by the first correction circuit of the data accessed from the data array along the first dimension. A second correction circuit is included for correcting the data.

Description

本開示はデータ処理に関し、より詳細には、たとえばデータ記憶システムまたはデータ通信システムでの、バイナリ対称不変積符号(binary symmetry-invariant product code)(たとえば、半積符号(half product code))を利用して符号化されたデータの効率的な誤り訂正に関する。 TECHNICAL FIELD This disclosure relates to data processing, and more particularly, utilizing binary symmetry-invariant product codes (e.g., half product codes), e.g., in data storage systems or data communication systems. Efficient error correction of data encoded as .

誤り訂正符号化は、データ・チャネルからデータを回復することのできる精度を改善するために、データ記憶システムまたはデータ通信システムで利用される。チャネルにデータを供給する前に、誤り訂正符号(ECC)に従ってデータを符号化することにより、ECCの特性に依存する範囲でチャネル出力での誤りが識別および訂正され得る。多数のそのようなECC方式が知られている。ECC方式の1つの良く知られているクラスは積符号に基づく。積符号は、2成分ECC符号を使用して、入力データの概念的2次元アレイ(notional two-dimensional array)の行および列を符号化する。 Error correction coding is utilized in data storage systems or data communication systems to improve the accuracy with which data can be recovered from a data channel. By encoding the data according to an error correction code (ECC) prior to feeding the data to the channel, errors in the channel output can be identified and corrected to an extent dependent on the characteristics of the ECC. Many such ECC schemes are known. One well-known class of ECC schemes is based on product codes. A product code uses a two-component ECC code to encode the rows and columns of a notional two-dimensional array of input data.

従来型積符号の基本構造が図1に概略的に示されている。入力データ・シンボル(一般には、q≧2として、q個の可能なシンボル値を有するqary個のシンボルであり得る)が、n行およびn列のシンボル位置を有する概念的アレイ内のそれぞれのシンボル位置に割り当てられる。この例では、k×k個のデータ・シンボルが、n行n列のアレイの最初のk行と最初のk列の交点のk行k列のサブアレイ内のそれぞれの位置に割り当てられる。得られる入力データ・シンボルのアレイが、アレイの行および列を別々に符号化することによって符号化される。第1のECC符号C1が、アレイの各行のkシンボル・データ・ワードを長さnのC1符号語に符号化するために使用される。この例では、系統的符号化を使用し、それによって入力データが符号語内に保持される。具体的には、所与の行のkシンボル・データ・ワードの後に(n-k)個のパリティ・シンボルを加えることによって、C1符号語のn個のコード・シンボルが得られる。次いで、第2のECC符号C2が、各列の終わりに(n-k)個のパリティ・シンボルを加えることによって、アレイの各列のk個のシンボルを長さnのC2符号語に符号化するために使用される。得られるアレイ内のn×n個のコード・シンボルが、積符号の出力符号語を形成する。この基本的概念の拡張では、インターリーブ積符号が、アレイのs>1個の等間隔の列にわたってC2符号を適用し、n/s個のC2符号語が得られる。 The basic structure of a conventional product code is shown schematically in FIG. An input data symbol (which can in general be q ary symbols with q possible symbol values, where q≧2) is in a conceptual array with n 2 rows and n 1 columns of symbol positions. assigned to each symbol position. In this example, the k 2 ×k 1 data symbols are each in the k 2 -by- k 1 subarray at the intersection of the first k 2 rows and the first k 1 columns of the n 2 -by- n 1 array. is assigned to the position of The resulting array of input data symbols is encoded by separately encoding the rows and columns of the array. A first ECC code C1 is used to encode the k i symbol data words in each row of the array into C1 codewords of length n1. This example uses systematic encoding, whereby the input data is kept in codewords. Specifically, the n 1 code symbols of the C1 codeword are obtained by adding (n 1 −k 1 ) parity symbols after the k 1 symbol data word in a given row. . A second ECC code C2 then converts the k 2 symbols in each column of the array to a length n 2 C2 code by adding (n 2 −k 2 ) parity symbols at the end of each column. used to encode words. The n 2 ×n 1 code symbols in the resulting array form the output codeword of the product code. An extension of this basic concept is that an interleaved product code applies the C2 code over s>1 equally spaced columns of the array, resulting in n 1 /s C2 codewords.

積符号は実際のエンコーダ/デコーダ実装を提供し得、そのデコーダはハード・ディシジョン・ベースであり、したがってソフト・ディシジョン復号に関連する様々な複雑さおよび待ち時間の問題を回避する。インターリーブ積符号のためのいくつかのデコーダは、基本符号構造から定義されるグラフに基づく反復的復号の技術を使用する。簡潔には、2部グラフが、C1符号語にそれぞれ対応するn個の右ノードと、それぞれのC2符号語に対応するn/s個の左ノードと共に定義され得る。各右ノードが、s個のエッジによって各左ノードに接続される。1対のノードを接続するs個のエッジは、前述の概念的アレイ内のそれらのノードについてのC1符号語とC2符号語の交点のs個の共通シンボルを表す。C1符号語を1つずつ復号し、次いでC2符号語を1つずつ復号することによって、反復的復号がグラフに基づいて実施される。符号語が首尾よく復号されるごとに、適切なノードから離れるエッジが訂正される。復号が完了するまで、すなわちデコーダによってもはや誤りが検出されず、または所定の最大反復数に達する(このケースでは、デコーダは復号失敗を宣言し得る)まで、プロセスは反復される。 A product code may provide a real encoder/decoder implementation, the decoder of which is hard-decision based, thus avoiding various complexity and latency issues associated with soft-decision decoding. Some decoders for interleaved product codes use graph-based iterative decoding techniques defined from the basic code structure. Briefly, a bipartite graph can be defined with n2 right nodes, each corresponding to a C1 codeword, and n1 / s left nodes, corresponding to each C2 codeword. Each right node is connected to each left node by s edges. The s edges connecting a pair of nodes represent the s common symbols of the intersections of the C1 and C2 codewords for those nodes in the above conceptual array. Iterative decoding is performed graph-based by decoding the C1 codewords one by one and then decoding the C2 codewords one by one. Edges away from the appropriate node are corrected for each successfully decoded codeword. The process is repeated until decoding is complete, ie no more errors are detected by the decoder, or a predetermined maximum number of iterations is reached (in which case the decoder may declare a decoding failure).

積符号に基づく別のECC方式が、J. Justesen、「Error correcting coding for OTN」、IEEE Communications Magazine、September 2010、およびJ. Justesen、Performance of Product Codes and Related Structures with Iterative Decoding、IEEE Transactions on Communications、2011において、光伝送ネットワーク(OTN)の文脈で提案された。半積符号(HPC)と呼ばれるこれらの符号は、行符号C1および列符号C2について同一の符号を使用する積符号である。各コンポーネント符号C1およびC2が、符号長(すなわち、符号語内のシンボル数)をn、次元(すなわち、各符号語に符号化されるデータ・シンボル数)をkとして、レートk/n符号である場合、得られる積符号Cは、長さN=n、次元K=k、およびレート(k/n)を有する。Cの符号語は、前述の概念的アレイに対応する(n行n列)シンボル行列Xによって定義され得、Xの各行および各列は行/列符号の符号語である。次いで、対応する半積符号CがC={X-X:X∈C}によって定義され、XはXの転置行列である。 Another ECC scheme based on product codes is described in J. Justesen, "Error correcting coding for OTN", IEEE Communications Magazine, September 2010, and J. Justesen, Performance of Product Codes and Related Structures with Iterative Decoding, IEEE Transactions on Communications, 2011, it was proposed in the context of Optical Transport Networks (OTN). These codes, called half-product codes (HPC), are product codes that use the same code for row code C1 and column code C2. Each component code C1 and C2 is a rate k/n code, where n is the code length (i.e., the number of symbols in a codeword) and k is the dimension (i.e., the number of data symbols encoded into each codeword). In one case, the resulting product code C has length N=n 2 , dimension K=k 2 , and rate (k/n) 2 . A codeword of C may be defined by a symbol matrix X (n rows and n columns) corresponding to the conceptual array described above, where each row and column of X is a codeword of a row/column code. The corresponding half-product code C H is then defined by C H ={X−X T :XεC}, where X T is the transposed matrix of X.

Xが符号語である場合、行および列符号が同一であるので、Xも符号語である。構成により、Cのすべての符号語Yはゼロ主対角線を有する(どちらかの主対角線はゼロ主対角線であり得るが、本明細書では、ゼロ主対角線は、(n行n列)シンボル行列Yにわたって右上のシンボルから左下のシンボルまで対角に延びるシンボルの線と定義される)。すなわち、ゼロ主対角線上のすべてのシンボルは値ゼロである。Cの定義から、Y=Y であることがわかるので、ゼロ主対角線のそれぞれの側の三角サブアレイ内のn(n-1)/2個のシンボルのセットは同一である。したがって、これらのn(n-1)/2個のシンボルは、半積符号が実効長N=n(n-1)/2を有するように符号語Yを定義する。HPCを用いて、符号化および反復的復号が積符号と同様に従来通り実施されるが、入力データは、ゼロ主対角線の一方の側の三角サブアレイに制限され、HPCについて次元K=k(k-1)/2が与えられる。 If X is a codeword, then X T is also a codeword since the row and column codes are the same. By construction, every codeword YH of C H has a zero main diagonal (either main diagonal can be a zero main diagonal, but here a zero main diagonal is defined as (n rows n columns) symbol (defined as a line of symbols running diagonally across the matrix YH from the upper right symbol to the lower left symbol). That is, all symbols on the zero main diagonal have the value zero. From the definition of C H we know that Y H =Y H T , so the set of n(n−1)/2 symbols in the triangular subarrays on each side of the zero main diagonal are identical. These n(n−1)/2 symbols thus define the codeword Y H such that the half-product code has effective length N H =n(n−1)/2. With HPC, encoding and iterative decoding are performed conventionally as with product codes, but the input data is restricted to triangular subarrays on either side of the zero main diagonal, and HPC has dimension K H =k ( k-1)/2 is given.

例示的従来技術HPC200が図2に示されている。HPC200を形成するために、元の入力データ204が、ゼロ主対角線202の下の正方形アレイ内に配置される。次いで、元の入力データ204をコピーし、元の入力データを転置し、得られるデータをゼロ主対角線202の上に配置することによって対称的重複データ206が形成される。次いで、パリティ・データ208が(たとえば、Bose-Chaudhuri-Hocquenghem(BCH)誤り訂正機能を利用して)各行および各列について別々に計算される。符号化の後、データ対称性のために、記憶または送信あるいはその両方を行う必要があるのは、ゼロ主対角線202の上または下のアレイの部分だけである。 An exemplary prior art HPC 200 is shown in FIG. To form HPC 200 , original input data 204 are placed in a square array under zero main diagonal 202 . Symmetric duplicate data 206 is then formed by copying the original input data 204 , transposing the original input data, and placing the resulting data on the zero main diagonal 202 . Parity data 208 is then calculated separately for each row and each column (using, for example, Bose-Chaudhuri-Hocquenghem (BCH) error correction functionality). After encoding, only the portion of the array above or below the zero main diagonal 202 needs to be stored and/or transmitted for data symmetry.

データがメモリから検索され、またはデータ伝送を介して受信されるとき、検索/受信されたデータを複製および転置してアレイを埋めることによってHPC200が再構築され得る。図3に示されるように、データの記憶、保持、検索、または伝送、あるいはその組合せの間に生じるどんな誤りも、再構築されたアレイのゼロ主対角線について対称的である。従来の復号(すなわち、行および列の誤りを訂正するために行および列が反復的に処理される誤り訂正プロセス)の間に、まず行フォーマットでアレイ内のデータがアクセスされ、次いで列フォーマットでアクセスされる。 As data is retrieved from memory or received via data transmission, HPC 200 may be rebuilt by duplicating and transposing the retrieved/received data to populate the array. As shown in FIG. 3, any errors that occur during data storage, retention, retrieval, and transmission, or a combination thereof, are symmetrical about the zero principal diagonal of the reconstructed array. During conventional decoding (i.e., an error correction process in which rows and columns are iteratively processed to correct row and column errors), the data in the array are first accessed in row format and then in column format. be accessed.

現実世界の実装では、標準ソフトウェア手法は、一般にはCPUメモリ内のデータを複製せず、ただ1つのデータのセットに対して演算し、複製誤りの暗黙的訂正から恩恵を受ける。図3では、行がアレイの下部から上部に処理されると仮定する。各ビットのただ1つのコピーがCPUメモリ内に記憶される場合、本質的に、A、B、およびCで誤りを含む行を訂正する結果として、これらのビット値を含む3つの後続の行のA、B、およびCについての正しい値が得られる。一見して効率的であるが、このソフトウェア・ベースの手法は、ハードウェア・ベースの解決策よりもずっと長い待ち時間を有し、したがって本当に高性能な応用例には適していない。 In real-world implementations, standard software techniques generally do not duplicate data in CPU memory, but operate on only one set of data and benefit from implicit correction of duplication errors. FIG. 3 assumes that rows are processed from the bottom of the array to the top. If only one copy of each bit is stored in CPU memory, then in essence correcting the erroneous row at A, B, and C results in three subsequent rows containing those bit values. Correct values for A, B, and C are obtained. Although seemingly efficient, this software-based approach has much higher latency than hardware-based solutions and is therefore not suitable for truly high-performance applications.

高性能復号を達成するために、HPC復号のハードウェア実装は通常、メモリ内で全HPCアレイ(複製データ206を含む)を形成し、次いで各行を1つずつ、次いで各列を1つずつ反復的に復号する。この手法は従来型ソフトウェア実装よりもずっと高い性能を提供するが、行フォーマットと列フォーマットの両方でデータにアクセスすることを可能にする回路は非常に費用がかかることを本開示は理解している。従来型ハードウェア実装が行データと列データの両方を独立して読取り、訂正することを必要とすること、つまりハードウェアHPC復号実装がアレイ対称性から恩恵を受けないことも本開示は理解している。 To achieve high performance decoding, hardware implementations of HPC decoding typically form the entire HPC array (including replicated data 206) in memory, then iterate each row one by one and then each column one by one. decrypted Although this approach provides much higher performance than conventional software implementations, the disclosure recognizes that the circuitry that allows data to be accessed in both row and column formats is very expensive. . The present disclosure also understands that conventional hardware implementations require reading and correcting both row and column data independently, i.e. hardware HPC decoding implementations do not benefit from array symmetry. ing.

少なくとも1つの実施形態では、デコーダは、ハードウェアにおいて、半積符号(HPC)などのバイナリ対称不変積符号によって符号化された符号語の反復的復号を実施する。データ・アレイ内にバッファリングされた対称不変積符号が、データ・アレイの第1の次元のみに沿ってアクセスされ、対称不変積符号のデータ内の誤りが、誤り訂正回路によって検出および訂正される。誤りが検出されたとき、データ・アレイの直交する第2の次元についての誤り位置が、誤り記憶アレイ内に記憶され、誤り位置は、対称不変積符号の既知のデータ対称性に基づいて求められる。データがデータ・アレイからアクセスされ、誤り訂正回路に送られるときに、記憶された誤り位置に基づいて、誤りが「オン・ザ・フライ」で訂正される。 In at least one embodiment, the decoder performs, in hardware, iterative decoding of codewords encoded by a binary symmetric invariant product code, such as a half product code (HPC). A symmetric invariant product code buffered in a data array is accessed along only the first dimension of the data array and errors in the data of the symmetric invariant product code are detected and corrected by error correction circuitry. . When an error is detected, the error location for the orthogonal second dimension of the data array is stored in an error storage array, the error location being determined based on the known data symmetry of the symmetric invariant product code. . Based on the stored error locations, errors are corrected "on the fly" as the data is accessed from the data array and sent to the error correction circuitry.

一態様によれば、バイナリ対称不変積符号を復号するためのデコーダが提供され、デコーダは、直交する第1および第2の次元を有するデータ・アレイであって、第1の次元のみに沿ってデータ・アレイ内にバッファリングされたバイナリ対称不変積符号にアクセスするように構成される、データ・アレイと、誤り位置を記憶するための誤り記憶アレイと、第1の次元に沿ってデータ・アレイからアクセスされたデータ内の誤りを検出および訂正し、誤り記憶アレイ内に第2の次元に沿った誤り位置を記憶するように構成された第1の訂正回路であって、対称不変積符号のデータ対称性に基づいて誤り位置を求める、第1の訂正回路と、第1の次元に沿ってデータ・アレイからアクセスされたデータの第1の訂正回路による受信前に、誤り記憶アレイ内に記憶された誤り位置に基づいてデータ・アレイからアクセスされたデータを訂正する第2の訂正回路とを含む回路を備える。 According to one aspect, a decoder is provided for decoding a binary symmetric invariant product code, the decoder being a data array having orthogonal first and second dimensions, along the first dimension only: A data array configured to access binary symmetric invariant product codes buffered in the data array; an error storage array for storing error locations; and a data array along a first dimension. a first correction circuit configured to detect and correct errors in data accessed from the symmetric invariant product code and to store error locations along the second dimension in an error storage array; a first correction circuit for determining error locations based on data symmetry; and storage in an error storage array prior to receipt by the first correction circuit of data accessed from the data array along a first dimension. and a second correction circuit for correcting data accessed from the data array based on the detected error location.

別の態様によれば、バイナリ対称不変積符号を復号する方法が提供され、方法は、第1の次元のみに沿って、直交する第1および第2の次元を有するデータ・アレイ内にバッファリングされたバイナリ対称不変積符号にアクセスすることと、第1の訂正回路が、第1の次元に沿ってデータ・アレイからアクセスされたデータ内の誤りを検出および訂正することと、第1の訂正回路が、対称不変積符号のデータ対称性に基づいて、誤り記憶アレイ内の第2の次元に沿った誤り位置を求め、誤り記憶アレイ内に誤り位置を記憶することと、第1の次元に沿ってデータ・アレイからアクセスされたデータの第1の訂正回路による受信前に、第2の訂正回路が、誤り記憶アレイ内に記憶された誤り位置に基づいてデータ・アレイからアクセスされたデータを訂正することとを含む。 According to another aspect, a method of decoding a binary symmetric invariant product code is provided, the method buffering along only the first dimension into a data array having orthogonal first and second dimensions. accessing a binary symmetric invariant product code; first correction circuitry detecting and correcting errors in data accessed from the data array along a first dimension; a circuit determining error locations along a second dimension in the error storage array based on data symmetry of the symmetric invariant product code; storing the error locations in the error storage array; A second correction circuit corrects the data accessed from the data array based on the error locations stored in the error storage array prior to receipt by the first correction circuit of the data accessed from the data array along the and correcting.

別の態様によれば、コンピュータ・プログラムがコンピュータ上で実行されるとき、先行するパラグラフの方法を実施するように適合されたプログラム・コード手段を含むコンピュータ・プログラムが提供される。 According to another aspect there is provided a computer program comprising program code means adapted to perform the method of the preceding paragraph when the computer program is run on a computer.

次に、添付の図面を参照しながら、本発明の好ましい実施形態が単に例として説明される。 Preferred embodiments of the invention will now be described, by way of example only, with reference to the accompanying drawings.

従来技術の積符号を示す図である。Fig. 2 shows a prior art product code; 従来技術の半積符号(HPC)を示す図である。1 illustrates a prior art half-product code (HPC); FIG. 対称的データ誤りを含む従来技術のHPCを示す図である。FIG. 1 illustrates prior art HPC with symmetrical data errors; 一実施形態によるデータ記憶システムの高レベル・ブロック図である。1 depicts a high-level block diagram of a data storage system according to one embodiment; FIG. 一実施形態によるデータ通信システムの高レベル・ブロック図である。1 depicts a high-level block diagram of a data communication system according to one embodiment; FIG. 図4のデータ記憶システムの例示的実装を示す図である。5 illustrates an exemplary implementation of the data storage system of FIG. 4; FIG. 図4のデータ記憶システムの例示的実装を示す図である。5 illustrates an exemplary implementation of the data storage system of FIG. 4; FIG. 一実施形態による例示的デコーダを示す図である。FIG. 4 illustrates an exemplary decoder according to one embodiment; 一実施形態による、デコーダがバイナリ対称不変積符号を復号する例示的プロセスの高レベル論理フローチャートである。4 depicts a high-level logic flowchart of an exemplary process for a decoder to decode a binary symmetric invariant product code, according to one embodiment. 一実施形態による、デコーダによる例示的HPC内の誤りの訂正を示す図である。FIG. 4 illustrates correction of errors in an exemplary HPC by a decoder, according to one embodiment; 一実施形態による、デコーダによる例示的HPC内の誤りの訂正を示す図である。FIG. 4 illustrates correction of errors in an exemplary HPC by a decoder, according to one embodiment; 一実施形態による、デコーダによる例示的HPC内の誤りの訂正を示す図である。FIG. 4 illustrates correction of errors in an exemplary HPC by a decoder, according to one embodiment; 一実施形態による、デコーダによる例示的HPC内の誤りの訂正を示す図である。FIG. 4 illustrates correction of errors in an exemplary HPC by a decoder, according to one embodiment;

少なくとも1つの実施形態によれば、本願は、ハードウェア回路において、半積符号(HPC)などのバイナリ対称不変積符号によって符号化された符号語の反復的復号を実施するデコーダを対象とする。データ・アレイ内にバッファリングされた対称不変積符号は、データ・アレイの第1の次元のみに沿ってアクセスされ、対称不変積符号のデータ内の誤りが、第1の誤り訂正回路によって検出および訂正される。誤りが検出されたとき、データ・アレイの直交する第2の次元についての誤り位置が、誤り記憶アレイ内に記憶され、誤り位置は、対称不変積符号の既知のデータ対称性に基づいて求められる。データがデータ・アレイからアクセスされ、第1の誤り訂正回路に送られるときに、記憶された誤り位置に基づいて、第2の訂正回路によって誤りが「オン・ザ・フライ」で訂正される。本願は、関連する方法およびプログラム製品をさらに対象とする。 In accordance with at least one embodiment, the present application is directed to a decoder that performs, in hardware circuitry, iterative decoding of codewords encoded by a binary symmetric invariant product code, such as a half product code (HPC). The symmetric invariant product code buffered in the data array is accessed along only the first dimension of the data array and errors in the data of the symmetric invariant product code are detected and corrected by the first error correction circuit. Corrected. When an error is detected, the error location for the orthogonal second dimension of the data array is stored in an error storage array, the error location being determined based on the known data symmetry of the symmetric invariant product code. . As data is accessed from the data array and sent to the first error correction circuit, errors are corrected "on the fly" by the second correction circuit based on the stored error locations. The present application is further directed to related methods and program products.

本明細書で説明される解決策は、上記で論じたように従来型HPCに適用することができるが、本明細書で開示される解決策が、行当たり複数のタイプのコンポーネント符号と、列当たり複数のタイプのコンポーネント符号で形成された対称不変積符号にも適用可能であることを理解されたい。同様に、符号構築で複数のタイプのコンポーネント符号を使用することによってHPCの別の拡張を得ることができる。たとえば、同一の長さnであるが、異なる誤り訂正能力tおよびtを有する2つのタイプのコンポーネント符号を使用し得る。HPCのケースでは、行/列の第1の半分がt誤り訂正コンポーネント符号からの符号語であり、行/列の第2の半分がt誤りコンポーネント符号からの符号語であることを必要とし得る。 Although the solution described herein can be applied to conventional HPC as discussed above, the solution disclosed herein uses multiple types of component codes per row and column It is to be understood that it is also applicable to symmetric invariant product codes formed from multiple types of component codes. Similarly, another extension of HPC can be obtained by using multiple types of component codes in code construction. For example, two types of component codes with the same length n but different error correction capabilities t 1 and t 2 may be used. In the HPC case, we require that the first half of the rows/columns are codewords from the t 1 error correction component code and the second half of the rows/columns are codewords from the t 2 error component code. can be

再び図を参照し、具体的には図4を参照すると、データ記憶デバイス上のECC符号化データを読み書きするためのデータ記憶システム400の例示的実施形態の高レベル・ブロック図がある。データ記憶システム400は、メモリ404(たとえば、フラッシュ・メモリまたは他の不揮発性ランダム・アクセス・メモリ(NVRAM))と、メモリ404内のデータを読み書きするための読取り/書込み装置406とを含む記録チャネル402を含む。図4では単一のブロックとして示されているが、メモリ404は、たとえば、単一のチップまたはダイから、メモリ・チップの複数のパッケージをそれぞれ含む複数のストレージ・バンクに及ぶ、データ記憶ユニットの任意の所望の構成を備え得る。読取り/書込み装置406は、メモリ404内のワード線およびビット線のアレイに適切な電圧を印加することによって読取りおよび書込みの目的でメモリ・セルをアドレス指定して、既知の方式で読取りおよび書込み動作を実施する。 Referring again to the figures, and specifically to FIG. 4, there is a high level block diagram of an exemplary embodiment of a data storage system 400 for reading and writing ECC encoded data on a data storage device. Data storage system 400 includes a recording channel that includes memory 404 (eg, flash memory or other non-volatile random access memory (NVRAM)) and read/write device 406 for reading and writing data in memory 404. 402 included. Although shown as a single block in FIG. 4, memory 404 is a data storage unit that can span, for example, a single chip or die to multiple storage banks each containing multiple packages of memory chips. It can have any desired configuration. Read/write device 406 addresses memory cells for read and write purposes by applying appropriate voltages to an array of wordlines and bitlines in memory 404 to perform read and write operations in a known manner. to implement.

データ記憶システム400は、エンコーダ410およびデコーダ412をさらに含む。エンコーダ410は、バイナリ対称不変積符号(たとえば、HPC)に従って入力データを符号シンボルに符号化し、符号シンボルを記録チャネル402に出力する。デコーダ412は、読取り/書込み装置406によってメモリ404から得られたリードバック・シンボルを処理して、対称不変積符号を復号し、したがって元の入力データを回復し、出力する。 Data storage system 400 further includes encoder 410 and decoder 412 . Encoder 410 encodes input data into code symbols according to a binary symmetric invariant product code (eg, HPC) and outputs the code symbols to recording channel 402 . Decoder 412 processes the readback symbols obtained from memory 404 by read/write unit 406 to decode the symmetric invariant product code, thus recovering and outputting the original input data.

図5にさらに示されるように、HPCなどの対称不変積符号は、データ通信システム500などのデータ通信システムにも応用される。データ通信システム500の送信機は、図4を参照しながら上記で説明したようなエンコーダ510と、変調器508と、送信デバイス(TX)506とを含む。エンコーダ510によって出力された符号シンボルが、変調器508を介して送信デバイス506に供給され、送信デバイス506は、通信リンク504を介して符号シンボルを送信するための信号を生成する。通信リンク504は、物理(ワイヤードまたはワイヤレス)リンク、あるいは1つまたは複数の物理リンクを介する論理リンクを含み得る。データ通信システムの受信機が、リンク504を介して送信された信号を受信するための受信デバイス(RX)516と、受信した信号を復調するための復調器518と、復調器518から受信した、得られる符号シンボルを復号するための前述のようなデコーダ512とを含む。 As further shown in FIG. 5, symmetric invariant product codes such as HPC also find application in data communication systems such as data communication system 500 . The transmitter of data communication system 500 includes encoder 510, modulator 508, and transmitting device (TX) 506 as described above with reference to FIG. Code symbols output by encoder 510 are provided via modulator 508 to transmitting device 506 , which generates signals for transmitting the code symbols over communication link 504 . Communication links 504 may include physical (wired or wireless) links or logical links via one or more physical links. a data communication system receiver receiving device (RX) 516 for receiving signals transmitted over link 504; demodulator 518 for demodulating the received signals; and a decoder 512 as previously described for decoding the resulting code symbols.

好ましい実施形態では、エンコーダ410、510、およびデコーダ412、512の機能が、高性能を達成するためにハードウェア回路(すなわち、集積回路)で実装される。しかしながら、他の実施形態では、エンコーダ410、510、およびデコーダ412、512の機能は、ソフトウェアまたはファームウェアあるいはその両方のプログラム命令を実行するハードウェアで実装され得る。たとえば、符号化および復号は、全体的または部分的に、符号化および復号を実施するために1つまたは複数のプロセッサをエンコーダまたはデコーダあるいはその両方として構成するソフトウェアの実行によって実施され得る。 In a preferred embodiment, the functions of encoders 410, 510 and decoders 412, 512 are implemented in hardware circuits (ie, integrated circuits) to achieve high performance. However, in other embodiments, the functions of encoders 410, 510 and decoders 412, 512 may be implemented in hardware executing program instructions in software and/or firmware. For example, encoding and decoding may be performed, in whole or in part, by executing software that configures one or more processors as encoders and/or decoders to perform the encoding and decoding.

次に図6~7を参照すると、図4のデータ記憶システム400などのデータ記憶システムの例示的実装のより詳細なブロック図が示されている。図6は、命令およびデータを処理する1つまたは複数のプロセッサ604を有するプロセッサ・システム602などの、1つまたは複数のホストを含むデータ処理環境600を示す。さらに、プロセッサ・システム602は、プログラム・コード、オペランド、または1つもしくは複数のプロセッサ604によって実施された処理の実行結果、あるいはその組合せを記憶し得るローカル・ストレージ606(たとえば、ダイナミック・ランダム・アクセス・メモリ(DRAM)またはディスク)を含み得る。様々な実施形態では、プロセッサ・システム602は、たとえば、モバイル・コンピューティング・デバイス(スマートフォンやタブレットなど)、ラップトップまたはデスクトップ・パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム(インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能なPOWER(R)シリーズのサーバのうちの1つなど)、またはメインフレーム・コンピュータ・システムであり得る。プロセッサ・システム602はまた、ARM(R)、POWER(R)、Intel x86(R)、またはメモリ・キャッシュ、メモリ・コントローラ、ローカル・ストレージ、I/Oバス・ハブなどのいずれかと組み合わされた任意の他のプロセッサなどの様々なプロセッサを使用する組込みプロセッサ・システムであり得る。 6-7, more detailed block diagrams of exemplary implementations of data storage systems such as data storage system 400 in FIG. 4 are shown. FIG. 6 illustrates a data processing environment 600 including one or more hosts, such as processor system 602 having one or more processors 604 that process instructions and data. Additionally, processor system 602 has local storage 606 (e.g., dynamic random access memory) that may store program code, operands, or results of execution of processes performed by one or more processors 604, or a combination thereof. • May include memory (DRAM) or disk). In various embodiments, processor system 602 may be, for example, a mobile computing device (such as a smart phone or tablet), a laptop or desktop personal computer system, a server computer system (International Business Machines Corporation), or a mainframe computer system. Processor system 602 may also be any ARM(R), POWER(R), Intel x86(R), or any combination of memory caches, memory controllers, local storage, I/O bus hubs, etc. It may be an embedded processor system using various processors, such as other processors in .

各プロセッサ・システム602は、I/Oチャネル610を介してデータ記憶システム620に直接的に(すなわち、どんな介在デバイスも用いずに)、または間接的に(すなわち、少なくとも1つの中間デバイスを通じて)結合される入力/出力(I/O)アダプタ608をさらに含む。様々な実施形態では、I/Oチャネル610は、たとえば、ファイバ・チャネル(FC)、FC over Ethernet(R)(FCoE)、Internet Small Computer System Interface (iSCSI)、InfiniBand(R)、伝送制御プロトコル/インターネット・プロトコル(TCP/IP)、Peripheral Component Interconnect Express(PCIe)などを含む、既知の、または将来開発される通信プロトコルのいずれか1つまたは組合せを利用し得る。I/Oチャネル610を介して通信されるI/O要求は、プロセッサ・システム602がデータ記憶システム620にデータを要求する読取り要求と、プロセッサ・システム602がデータ記憶システム620内へのデータの記憶を要求する書込み要求とを含む。 Each processor system 602 is coupled to data storage system 620 via I/O channel 610 either directly (i.e., without any intervening device) or indirectly (i.e., through at least one intermediate device). It further includes an input/output (I/O) adapter 608 that is In various embodiments, I/O channel 610 may be, for example, Fiber Channel (FC), FC over Ethernet (FCoE), Internet Small Computer System Interface (iSCSI), InfiniBand, Transmission Control Protocol/ Any one or combination of known or later developed communication protocols may be utilized, including Internet Protocol (TCP/IP), Peripheral Component Interconnect Express (PCIe), and the like. I/O requests communicated over I/O channel 610 include read requests, in which processor system 602 requests data from data storage system 620 , and read requests, in which processor system 602 requests data to be stored in data storage system 620 . and a write request requesting a

必須ではないが、図示される実施形態では、データ記憶システム620は、データ記憶システム620がそれを通じてI/Oチャネル610を介してホストのI/O要求を受信し、それに応答する複数のインターフェース・カード622を含む。各インターフェース・カード622は、フォールト・トレランスおよびロード・バランシングを促進するために複数のRedundant Array of Inexpensive Disks(RAID)コントローラ624のそれぞれに結合される。RAIDコントローラ624のそれぞれは(たとえばPCIeバスによって)不揮発性記憶媒体に結合され、図示される例では、不揮発性記憶媒体は、NANDフラッシュ・メモリを担持する複数のフラッシュ・カード626を含む。他の実施形態では、代替の不揮発性記憶デバイスまたは追加の不揮発性記憶デバイスあるいはその両方が利用され得る。 Although not required, in the illustrated embodiment, data storage system 620 includes a plurality of interface interfaces through which data storage system 620 receives and responds to host I/O requests via I/O channel 610. Includes card 622 . Each interface card 622 is coupled to each of multiple Redundant Array of Inexpensive Disks (RAID) controllers 624 to facilitate fault tolerance and load balancing. Each of the RAID controllers 624 is coupled (eg, by a PCIe bus) to a non-volatile storage medium, which in the illustrated example includes multiple flash cards 626 carrying NAND flash memory. Alternate and/or additional non-volatile storage devices may be utilized in other embodiments.

図示される実施形態では、データ記憶システム620の動作が冗長システム管理コントローラ(SMC)623によって管理され、冗長SMC623はインターフェース・カード622およびRAIDコントローラ624に結合される。様々な実施形態では、システム管理コントローラ623は、ハードウェア、あるいはファームウェアもしくはソフトウェアまたはその両方を実行するハードウェアを利用して実装され得る。 In the illustrated embodiment, operation of data storage system 620 is managed by redundant system management controller (SMC) 623 , which is coupled to interface card 622 and RAID controller 624 . In various embodiments, system management controller 623 may be implemented utilizing hardware or hardware executing firmware and/or software.

図7は、図6のデータ記憶システム620のフラッシュ・カード626の例示的実施形態のより詳細なブロック図を示す。フラッシュ・カード626は、フラッシュ・カード626とRAIDコントローラ624との間のインターフェースとして働くゲートウェイ730を含む。ゲートウェイ730は、汎用プロセッサ(GPP)732に結合され、GPP732は、ゲートウェイ730によって受信されたI/O要求に関する前処理を実施し、またはフラッシュ・カード626によるI/O要求のサービシングをスケジューリングし、あるいはその両方を行うように(たとえば、プログラム・コードによって)構成され得る。GPP732は、処理中にGPP732によって作成され、参照され、もしくは修正され、またはその組合せが行われたデータ、あるいはフラッシュ・コントローラ740のうちの1つまたは複数に宛てられた、ゲートウェイ730を通じて流れるデータを好都合にバッファリングすることのできるGPPメモリ734(たとえば、ダイナミック・ランダム・アクセス・メモリ(DRAM))に結合される。 FIG. 7 shows a more detailed block diagram of an exemplary embodiment of flash card 626 of data storage system 620 of FIG. Flash card 626 includes a gateway 730 that acts as an interface between flash card 626 and RAID controller 624 . Gateway 730 is coupled to a general purpose processor (GPP) 732, which performs preprocessing on I/O requests received by gateway 730 or schedules servicing of I/O requests by flash card 626. , or configured (eg, by program code) to do both. GPP 732 processes data created, referenced, or modified, or a combination thereof, by GPP 732 during processing or data flowing through gateway 730 that is destined for one or more of flash controllers 740. It is coupled to GPP memory 734 (eg, dynamic random access memory (DRAM)), which can be conveniently buffered.

ゲートウェイ730は複数のフラッシュ・コントローラ740にさらに結合され、複数のフラッシュ・コントローラ740のそれぞれは、それぞれのNANDフラッシュ・メモリ・システム750を制御する。フラッシュ・コントローラ740は、たとえば、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはマイクロプロセッサ、あるいはその組合せによって実装され得、それぞれは、関連するフラッシュ・コントローラ・メモリ742(たとえば、DRAM)を有する。フラッシュ・コントローラ740がFPGAと共に実装される実施形態では、GPP732は、データ記憶システム620の起動中にフラッシュ・コントローラ740をプログラムおよび構成し得る。起動後、一般の動作の際に、フラッシュ・コントローラ740は、NANDフラッシュ・メモリ・システム750内に記憶されたデータを読取り、またはNANDフラッシュ・メモリ・システム750内にデータを記憶し、あるいはその両方を行うことを要求するゲートウェイ730からの読み書き要求を受信する。フラッシュ・コントローラ740は、たとえば、NANDフラッシュ・メモリ・システム750にアクセスして、要求されたデータをNANDフラッシュ・メモリ・システム750から読取り、またはNANDフラッシュ・メモリ・システム750に書込むことによって、あるいはNANDフラッシュ・メモリ・システム750に関連付けられるメモリ・キャッシュ(図示せず)にアクセスすることによって、これらの要求にサービスする。 Gateway 730 is further coupled to multiple flash controllers 740 , each of which controls a respective NAND flash memory system 750 . Flash controller 740 may be implemented, for example, by an application specific integrated circuit (ASIC), field programmable gate array (FPGA), or microprocessor, or combination thereof, each with an associated flash controller memory. 742 (eg, DRAM). In embodiments where flash controller 740 is implemented with an FPGA, GPP 732 may program and configure flash controller 740 during power-up of data storage system 620 . After power-up, during normal operation, flash controller 740 reads data stored within NAND flash memory system 750 and/or stores data within NAND flash memory system 750. Receives read and write requests from gateway 730 requesting to perform Flash controller 740 may, for example, access NAND flash memory system 750 to read the requested data from or write to NAND flash memory system 750, or These requests are serviced by accessing a memory cache (not shown) associated with NAND flash memory system 750 .

フラッシュ・コントローラ740は、NANDフラッシュ・メモリ・システム750内の特定のメモリ位置へのアクセスを可能にする論理-物理アドレス変換を提供するフラッシュ変換層(FTL)を実装する。一般には、フラッシュ・コントローラ740によってプロセッサ・システム602などのホスト・デバイスから受信されたI/O要求は、データをアクセス(読取りまたは書込み)すべき論理ブロック・アドレス(LBA)と、書込み要求の場合、データ記憶システム620に記憶すべき書込みデータとを含む。I/O要求はまた、アクセスすべきデータの量(またはサイズ)を指定し得る。データ記憶システム620によってサポートされるプロトコルおよび特徴に応じて、他の情報も通信され得る。フラッシュ変換層は、RAIDコントローラ624から受け取ったLBAを、NANDフラッシュ・メモリ・システム750内の対応する物理位置に割り当てられた物理アドレスに変換する。フラッシュ・コントローラ740は、アドレス変換を実施し、またはフラッシュ・コントローラ・メモリ742内に好都合に記憶され得る、論理-物理変換テーブル(LPT)などの論理-物理変換データ構造内の論理アドレスと物理アドレスとの間のマッピングを記憶し、あるいはその両方を行い得る。 Flash controller 740 implements a Flash Translation Layer (FTL) that provides logical-to-physical address translation that allows access to specific memory locations within NAND Flash memory system 750 . In general, an I/O request received by flash controller 740 from a host device such as processor system 602 identifies the logical block address (LBA) at which data is to be accessed (read or written), and the LBA for write requests. , and write data to be stored in data storage system 620 . An I/O request may also specify the amount (or size) of data to be accessed. Other information may also be communicated depending on the protocols and features supported by data storage system 620 . The flash translation layer translates LBAs received from RAID controller 624 into physical addresses assigned to corresponding physical locations within NAND flash memory system 750 . Flash controller 740 performs address translation, or logical and physical addresses in a logical-to-physical translation data structure, such as a logical-to-physical translation table (LPT), which may be conveniently stored in flash controller memory 742. , or both.

NANDフラッシュ・メモリ・システム750は様々な実施形態で多くの形態を取り得る。図7に示される実施形態では、各NANDフラッシュ・メモリ・システム750は、複数(たとえば、32個)の個々にアドレス指定可能なNANDフラッシュ・メモリ記憶デバイス752を含む。図示される例では、フラッシュ・メモリ記憶デバイス752は、基板に実装されたフラッシュ・メモリ・モジュール、たとえばSingle Level Cell(SLC)、Multi-Level Cell(MLC)、Three Level Cell(TLC)、またはQuad Level Cell(QLC) NANDフラッシュ・メモリ・モジュールの形態を取る。好ましくは、フラッシュ・メモリ記憶デバイス752から読み取られたデータの忠実度は、たとえばフラッシュ・コントローラ740、またはGPP732やRAIDコントローラ624などの高レベル・コントローラ、あるいはその両方による、ECC符号化の実装を通じて高められる。図示される実施形態では、ECC符号化および復号が、少なくともフラッシュ・コントローラ740において、エンコーダ744およびデコーダ746によって実装される。 NAND flash memory system 750 can take many forms in various embodiments. In the embodiment shown in FIG. 7, each NAND flash memory system 750 includes multiple (eg, 32) individually addressable NAND flash memory storage devices 752 . In the illustrated example, flash memory storage device 752 is a substrate mounted flash memory module, such as Single Level Cell (SLC), Multi-Level Cell (MLC), Three Level Cell (TLC), or Quad It takes the form of a Level Cell (QLC) NAND flash memory module. Preferably, the fidelity of data read from flash memory storage device 752 is enhanced through the implementation of ECC encoding, for example by flash controller 740 and/or higher level controllers such as GPP 732 and RAID controller 624. be done. In the illustrated embodiment, ECC encoding and decoding is implemented at least in flash controller 740 by encoder 744 and decoder 746 .

次に図8を参照すると、一実施形態によるデコーダ800の例示的実施形態が示されている。デコーダ800は、デコーダ412、512、または746のいずれかを実装するために利用され得、バイナリ対称不変積符号(たとえば、HPC)を利用して符号化されたデータを復号する。 Referring now to FIG. 8, an exemplary embodiment of decoder 800 is shown in accordance with one embodiment. Decoder 800 can be used to implement any of decoders 412, 512, or 746, which decodes data encoded using a binary symmetric invariant product code (eg, HPC).

図8に示されるように、デコーダ800は、バイナリ対称不変積符号を利用して符号化された未訂正の符号語の復号を制御する制御回路802を含む。さらに、デコーダ800は、バイナリ対称不変積符号が復号されるときにバイナリ対称不変積符号をバッファリングするデータ・アレイ804を含む。従来通り、データ・アレイ804は、本明細書ではそれぞれ行および列と呼ばれる、直交する等しいサイズの第1および第2の次元を含む。従来型デコーダとは対照的に、好ましくは、データ・アレイ804は、その第1および第2の次元の一方のみに沿って復号し、他方に沿って復号しないように、その中にバッファリングされたバイナリ対称不変積符号にアクセスすることを可能にする回路を含む。そのような制限により、ハードウェア回路内のデコーダ800を実装する費用が大いに削減される。簡単のために、以下では、データ・アレイ804が、行ごとにのみアクセスされ、列ごとにアクセスされないと仮定するが、データ・アレイ804内にバッファリングされるバイナリ対称不変積符号のデータ対称性を考えると、アクセスされる次元の選択は完全に任意であることを理解されたい。 As shown in FIG. 8, decoder 800 includes control circuitry 802 that controls the decoding of uncorrected codewords encoded using a binary symmetric invariant product code. Further, decoder 800 includes a data array 804 that buffers the binary symmetric invariant product code as the binary symmetric invariant product code is decoded. As is conventional, the data array 804 includes orthogonal, equal-sized first and second dimensions, referred to herein as rows and columns, respectively. In contrast to conventional decoders, data array 804 is preferably buffered therein such that it decodes only along one of its first and second dimensions and not along the other. It includes circuitry that allows access to a binary symmetric invariant product code. Such limitations greatly reduce the cost of implementing decoder 800 in hardware circuits. For simplicity, the following assumes that the data array 804 is accessed only row by row and not column by column, but the data symmetry of the binary symmetric invariant product code buffered in the data array 804 Given , it should be appreciated that the choice of dimension to be accessed is completely arbitrary.

データ・アレイ804は列訂正回路806に結合され、列訂正回路806は、誤り記憶アレイ810内に記憶された誤り位置情報に基づいて、データ・アレイ804から読み出された行符号語内の個々のビット位置を、必要に応じて、「オン・ザ・フライ」で訂正するように構成される。次いで、場合によっては列訂正回路806によって修正された行符号語が、行訂正回路808によって完全に復号される。当技術分野で既知のように、行訂正回路808は、たとえばBose-Chaudhuri-Hocquenghem(BCH)誤り訂正機能を実装し得る。行符号語の復号に基づいて、行訂正回路808は、誤り記憶アレイ810内の訂正された誤りがあればその位置を記録する。さらに、行訂正回路808は、(列訂正回路806または行訂正回路808あるいはその両方によって行われた訂正があればそれを伴う)復号された行符号語をデータ・アレイ804内に書き戻す。 Data array 804 is coupled to column correction circuitry 806 , which, based on error location information stored in error storage array 810 , provides individual corrections within row codewords read from data array 804 . is configured to correct the bit positions of 'on the fly' as needed. The row codeword, possibly modified by column correction circuit 806, is then fully decoded by row correction circuit 808. FIG. Row correction circuit 808 may implement, for example, a Bose-Chaudhuri-Hocquenghem (BCH) error correction function, as is known in the art. Upon decoding the row codeword, row correction circuit 808 records the location of any corrected errors in error storage array 810 . In addition, row correction circuit 808 writes the decoded row codeword back into data array 804 (with any corrections made by column correction circuit 806 and/or row correction circuit 808).

次に図9を参照すると、一実施形態での、図8のデコーダ800などのデコーダがバイナリ対称不変積符号を復号する例示的プロセスの高レベル論理フローチャートが示されている。図9のプロセスはブロック900から始まり、次いでブロック902に進み、ブロック902は、以下ではHPCと仮定されるバイナリ対称不変積符号の一部をデコーダ800が受信することを示す。上記のように、HPCは、デコーダ800によって、たとえばデータ記憶システム400の記録チャネル402、またはデータ通信システム500の伝送リンク504から受信され得る。HPCの部分の受信に応答して、デコーダ800の制御回路802は、HPCの受信した部分(たとえば、ゼロ主対角線の下のアレイの三角形部分)でデータ・アレイ804の一部を埋め、HPCの受信した部分内のデータを複製して、データ・アレイ804内の全データ対称HPCを形成する。 Referring now to FIG. 9, a high-level logic flowchart of an exemplary process for decoding a binary symmetric invariant product code by a decoder such as decoder 800 of FIG. 8 is shown in one embodiment. The process of FIG. 9 begins at block 900 and then proceeds to block 902, which illustrates decoder 800 receiving a portion of a binary symmetric invariant product code, hereinafter assumed to be HPC. As noted above, HPC may be received by decoder 800 from, for example, recording channel 402 of data storage system 400 or transmission link 504 of data communication system 500 . In response to receiving the portion of the HPC, the control circuit 802 of the decoder 800 fills the portion of the data array 804 with the received portion of the HPC (eg, the triangular portion of the array below the zero main diagonal) and The data in the received portion is replicated to form a full data symmetric HPC in data array 804 .

ブロック902に続いて、制御回路802は、データ・アレイ804の単一の次元のみに沿ったHPCの反復的復号を指示する。したがって、一例では、制御回路802は、HPCにアクセスさせ、列符号語ではなく、行符号語によって復号させる。第2の次元に沿ったHPCのアクセスをなくすことにより、HPCを復号する待ち時間が半分に削減される。 Following block 902 , control circuitry 802 directs iterative decoding of HPC along only a single dimension of data array 804 . Thus, in one example, the control circuit 802 causes the HPC to be accessed and decoded by row codewords rather than by column codewords. By eliminating the HPC access along the second dimension, the latency to decode the HPC is cut in half.

制御回路802は、ブロック904で、データ・アレイ804内にバッファリングされたHPCのすべての行符号語が復号のためにアクセスされたか否かを判定することによって反復的復号プロセスを開始する。アクセスされた場合、プロセスは、以下で説明されるブロック920に進む。アクセスされなかった場合、プロセスはブロック910に進む。ブロック910では、制御回路802は、HPCの最初または次の行符号語をデータ・アレイ804から読み出させる。ブロック912に示されるように、行符号語が復号のために行訂正回路808に送信されるとき、列訂正回路806は、誤り記憶アレイ808によって誤りを含むと識別された行符号語のビットがあればそれを「オン・ザ・フライ」で訂正(すなわち、反転)し、そのような訂正を伴う行符号語を行訂正回路808に転送する。場合によっては列訂正回路806によって修正された行符号語の受信に応答して、行訂正回路808は、誤りがあればそれを訂正するために符号語のパリティ部分を利用して符号語を復号する(ブロック914)。上記のように、一実施形態では、行訂正回路808は、たとえば従来型BCH誤り訂正機能を利用し得る。ブロック914にさらに示されるように、行符号語内の何らかの誤りが訂正される場合、行訂正回路808は、誤り記憶アレイ810内の誤り位置を記録し、したがって列訂正回路806が誤り位置情報を利用して、HPCの既知のデータ対称性に基づいて、1つまたは複数の追加の行符号語内のビットを訂正することを可能にする。ブロック916では、行訂正回路808が復号された行符号語をデータ・アレイ802内の元の位置に書き戻す。その後で、プロセスはブロック904に戻る。 The control circuit 802 begins the iterative decoding process at block 904 by determining whether all row codewords of HPC buffered in the data array 804 have been accessed for decoding. If so, the process proceeds to block 920, described below. If not, the process proceeds to block 910; At block 910 , control circuit 802 causes the first or next row codeword of HPC to be read from data array 804 . As indicated by block 912, when the row codeword is sent to row correction circuit 808 for decoding, column correction circuit 806 causes the bits of the row codeword identified as containing errors by error storage array 808 to be If so, it is corrected (ie, inverted) "on the fly" and the row codeword with such correction is forwarded to row correction circuit 808 . In response to receiving a row codeword, possibly modified by column correction circuit 806, row correction circuit 808 decodes the codeword utilizing the parity portion of the codeword to correct any errors. (block 914). As noted above, in one embodiment, row correction circuit 808 may utilize, for example, conventional BCH error correction functionality. As further shown in block 914, if any errors in the row codeword are corrected, the row correction circuit 808 records the error location in the error storage array 810 so that the column correction circuit 806 stores the error location information. It allows for correcting bits in one or more additional row codewords based on the known data symmetry of HPC. At block 916 , row correction circuit 808 writes the decoded row codeword back to its original location in data array 802 . The process then returns to block 904 .

次にブロック920を参照すると、制御回路802は、行符号語のすべてにわたる最後の反復の間に、HPCの行符号語のいずれかで何らかの誤りが検出されたか否かを判定する。最後の反復の間に行符号語のいずれでも誤りが検出されなかった場合、HPCは首尾よく復号され、プロセスはブロック922に進み、ブロック922は、制御回路802が、復号されたHPCの行符号語をデータ・アレイ804から、たとえばプロセッサ・システム602に、またはデータ通信システム500の構成要素に出力させることを示す。その後で、図9のプロセスはブロック924で終了する。しかしながら、HPCの行符号語のすべてにわたる最後の反復の間に少なくとも1つの行符号語内に少なくとも1つの誤りが見つかったと制御回路802がブロック920で判定した場合、制御回路802は、ブロック926で、HPCの行符号語にわたる最大反復数(たとえば、3)が実施されたか否かを判定する。実施されていない場合、図9のプロセスはページ連結子Aを通じて、説明したブロック910およびそれに続くブロックに戻る。しかしながら、HPCの行符号語のすべてにわたる最大反復数が実施されたと制御回路802がブロック926で判定した場合、図9のプロセスは、ブロック928でエラーと共に終了し、デコーダ800は、必要なエラー処理があればそれを開始する。 Referring now to block 920, control circuit 802 determines whether any errors were detected in any of the row codewords of the HPC during the last iteration over all of the row codewords. If no errors were detected in any of the row codewords during the last iteration, then the HPC was successfully decoded and the process proceeds to block 922 where control circuit 802 causes the row codewords of the decoded HPC to Words are shown to be output from data array 804 , for example to processor system 602 or to components of data communication system 500 . Thereafter, the process of FIG. 9 ends at block 924. FIG. However, if the control circuit 802 determines at block 920 that at least one error was found in at least one row codeword during the last iteration over all of the HPC row codewords, then at block 926 the control circuit 802 , HPC, determine whether the maximum number of iterations (eg, 3) over the row codewords has been implemented. If not, the process of FIG. 9 returns through page connector A to block 910 and subsequent blocks as described. However, if control circuit 802 determines at block 926 that the maximum number of iterations over all of the HPC row codewords has been performed, then the process of FIG. If there is, start it.

次に図10~13を参照して、図9のプロセスを利用する、図8のデコーダによる例示的HPC内の誤りの訂正の一例が与えられる。この例では、データ・アレイ804は、R0からR19およびC0からC19とそれぞれ番号付けされる20行20列を有する。この例では、所与の行(または列)内の最大で3つの誤りをゼロ待ち時間で訂正することのできるBose-Chaudhuri-Hocquenghem(BCH)誤り訂正機能を利用してHPCが符号化されると仮定する。この誤り訂正能力の結果として、好ましくは、誤り記憶アレイ810は、行当たり最大で3つの誤り位置を記憶するための容量を含む。誤り記憶アレイがすべて「無効」値(空き状態)に初期化され、その結果、列訂正回路806は当初、データ・アレイ804から読み出される行符号語に対するどんな訂正も実施しないことになる。 10-13, an example of error correction in an exemplary HPC by the decoder of FIG. 8 utilizing the process of FIG. 9 is provided. In this example, data array 804 has 20 rows and 20 columns, numbered R0 through R19 and C0 through C19, respectively. In this example, HPC is encoded using the Bose-Chaudhuri-Hocquenghem (BCH) error correction function, which can correct up to three errors in a given row (or column) with zero latency. Assume that As a result of this error correction capability, error storage array 810 preferably includes capacity for storing up to three error locations per row. The error storage arrays are all initialized to "invalid" values (empty) so that column correction circuit 806 initially does not perform any corrections on row codewords read from data array 804 .

全入力HPCがデータ・アレイ804内で確立された後、制御回路802は、行R0から始めて、データ・アレイ804から行符号語を反復的かつ順番に読み出させ、BCH復号のために列訂正回路806を通じて行訂正回路808に渡させる。図10に示されるように、行R0およびR1内の行符号語はどんな誤りも含まないが、行R2内の行符号語は当初、列C10、C4、およびC3内に3つの誤りを含む。これらのビット誤りを検出したことに応答して、行訂正回路808は、表1に示されるように表され得る誤り記憶アレイ810を更新する。示されるように、誤り記憶アレイ810は、修正すべき3つの誤り、すなわち列C2内の行R3、R4、およびR10内のビットを記録する。気付くはずであるが、これらの3つの誤りは、行R2の列C3、C4、およびC10内で検出される誤りと対称である。 After all input HPCs are established in data array 804, control circuit 802 causes row codewords to be read out from data array 804 in iterative and sequential order, starting with row R0, and column correction for BCH decoding. It is passed through circuit 806 to row correction circuit 808 . As shown in FIG. 10, the row codewords in rows R0 and R1 do not contain any errors, while the row codeword in row R2 initially contains three errors in columns C10, C4, and C3. In response to detecting these bit errors, row correction circuit 808 updates error storage array 810, which may be represented as shown in Table 1. As shown, error storage array 810 records three errors to be corrected: bits in rows R3, R4, and R10 in column C2. As should be noted, these three errors are symmetrical to the errors detected in columns C3, C4, and C10 of row R2.

Figure 2022536065000002

行R2内の誤りの訂正に続いて、行訂正回路808はデータ・アレイ804を更新し、図11に示されるように、データ・アレイ804は一時的に非対称となる。
Figure 2022536065000002

Following correction of the error in row R2, row correction circuit 808 updates data array 804, making data array 804 temporarily asymmetric, as shown in FIG.

この例を続けると、次に行R3内の行符号語がデータ・アレイ804から読み出され、列訂正回路806を通じて行訂正回路808に渡される。この行符号語が送信されるとき、列訂正回路806が列C2内の誤りを訂正し、誤り記憶アレイ810内の列C2に対応するエントリから「3」を除去するように誤り記憶アレイ810を更新する。行訂正回路808が行R3の行符号語についてBCH復号を実施するとき、行符号語が行訂正回路808によって受信される前に、唯一の誤りが列訂正回路806によって既に訂正されているので、誤りは見つからない。したがって、行訂正回路808は誤り記憶アレイ810内にどんな新しい誤り位置も記憶せず、したがって誤り記憶アレイ810は、以下の表IIに示されるように見えることになる。行訂正回路808が、訂正された行符号語を行R3内に書き戻した後、データ・アレイ804は図12に示されるように見えることになる。 Continuing with the example, the row codeword in row R3 is then read from data array 804 and passed through column correction circuit 806 to row correction circuit 808 . When this row codeword is transmitted, column correction circuit 806 corrects the error in column C2 and resets error storage array 810 to remove "3" from the entry corresponding to column C2 in error storage array 810. Update. When row correction circuit 808 performs BCH decoding on the row codeword of row R3, since the only error has already been corrected by column correction circuit 806 before the row codeword is received by row correction circuit 808, no errors found. Accordingly, row correction circuit 808 will not store any new error locations in error storage array 810, and error storage array 810 will therefore appear as shown in Table II below. After row correction circuit 808 writes the corrected row codeword back into row R3, data array 804 will appear as shown in FIG.

Figure 2022536065000003
Figure 2022536065000003

次に、行R4内の行符号語がデータ・アレイ804から読み出され、列訂正回路806を通じて行訂正回路808に渡される。示されるように、行R4についての行符号語は当初、行訂正回路808によって実装されるBCHアルゴリズムによって訂正され得る誤りよりも多い、4つの誤りを含む。しかしながら、列訂正回路806は、誤り記憶アレイ810によって与えられる情報に基づいて、行訂正回路808による行符号語の受信前に、行符号語の列2内のビットを訂正するので、行訂正回路808は、列訂正後に誤りの存在が4つではなく、3つであることを考えると、行符号語を完全に復号することができる。行訂正回路808が行符号語を復号し、データ・アレイ802および誤り記憶アレイ810を更新した後、データ・アレイ802は、図13に示されるように見えることになり、誤り記憶アレイ810は、以下の表IIIに示される状態を有することになる。 The row codeword in row R4 is then read from data array 804 and passed through column correction circuit 806 to row correction circuit 808 . As shown, the row codeword for row R4 initially contains four errors, more errors than can be corrected by the BCH algorithm implemented by row correction circuit 808. FIG. However, since column correction circuit 806 corrects the bits in column 2 of the row codeword prior to receipt of the row codeword by row correction circuit 808 based on information provided by error storage array 810, the row correction circuit 808 can perfectly decode the row codeword given that there are 3 errors instead of 4 after column correction. After row correction circuit 808 decodes the row codeword and updates data array 802 and error storage array 810, data array 802 will appear as shown in FIG. It will have the states shown in Table III below.

Figure 2022536065000004
Figure 2022536065000004

この復号プロセスは、行R19にわたって反復的に続行されることになる。データ・アレイ802のすべての行にわたる第1の反復が完了すると、誤り記憶アレイ810はクリアされず、第2の反復が開始する。このプロセスは、以下の2つの終了条件の一方が満たされるまで続行されることになる。(1)HPCが誤りを含まない(すなわち、どんな誤りも発見されることなく、HPCのすべての行符号語が行訂正回路808によって復号される)、または(2)最大反復限度に達する(すなわち、HPCが訂正されない)。 This decoding process will continue iteratively across row R19. After the first iteration over all rows of data array 802 is completed, error storage array 810 is not cleared and the second iteration begins. This process will continue until one of the following two termination conditions is met. (1) the HPC does not contain any errors (i.e., all row codewords of the HPC are decoded by the row correction circuit 808 without any errors being found), or (2) the maximum iteration limit is reached (i.e. , HPC is not corrected).

上記の説明では、説明しやすいように、実際のハードウェア実装での待ち時間およびパイプライン化の効果を無視した。待ち時間およびパイプライン化の追加の影響を示すために、行訂正回路808の待ち時間が5サイクルであること、つまり特定の行符号語がBCH復号を開始するとき、得られる訂正が5クロック・サイクル後までは利用可能とならないことを仮定する。この仮定では、行R2内の誤りの位置が、行R7が行訂正回路808に入りつつあるまで、後続の行の訂正のために利用可能とはならない。したがって、行訂正回路808は、行R2を復号することに基づいて、誤り記憶アレイ810内の行R3、R4、およびR10の列C2に対する訂正を記録するが、この誤り位置情報が利用可能になる前に、行R3およびR4の符号語が行訂正回路808内で受信されることになる。その結果、行R3およびR4の行符号語は、理想的なゼロ待ち時間のケースでは、行R2内の誤りが検出される、データ・アレイ804にわたる同一の反復中に、列訂正回路806によって「オン・ザ・フライ」で列訂正され得るが、誤り記憶アレイ810がこれらの行符号語内の誤り位置を反映するまでには、行訂正回路808によって既に処理されている。幸いにも、列訂正回路806がこの第1の反復でこれらの列誤りを訂正することに失敗することは、BCH復号の最終的結果に影響を及ぼさない。列訂正回路806は、誤り記憶アレイ810内に記録された任意の誤り位置情報を利用して、次のパスでビット(たとえば、行R3およびR4の行符号語の列C2内のビット)を訂正するからである。シミュレーションおよび解析により、説明したように、待ち時間は、理想的なゼロ待ち時間のケースに対して、どんな復号性能の著しい損失にもならないことが実証されている。 In the above discussion, for ease of explanation, we have ignored the effects of latency and pipelining in actual hardware implementations. To illustrate the additional impact of latency and pipelining, the latency of row correction circuit 808 is 5 cycles, meaning that when a particular row codeword initiates BCH decoding, the resulting correction is 5 clock cycles. Assume that it will not be available until after the cycle. With this assumption, the location of the error in row R2 will not be available for correction of subsequent rows until row R7 is entering row correction circuit 808. FIG. Accordingly, row correction circuit 808 records corrections to column C2 of rows R3, R4, and R10 in error storage array 810 based on decoding row R2, but this error location information becomes available. Previously, the codewords for rows R3 and R4 would have been received in row correction circuit 808 . As a result, the row codewords for rows R3 and R4 will be " They can be column corrected "on the fly", but by the time error storage array 810 reflects the error locations within these row codewords, they have already been processed by row correction circuit 808. FIG. Fortunately, the failure of column correction circuit 806 to correct these column errors in this first iteration does not affect the final result of BCH decoding. Column correction circuit 806 utilizes any error location information recorded in error storage array 810 to correct bits (eg, bits in column C2 of row codewords for rows R3 and R4) in the next pass. Because it does. Simulations and analysis demonstrate that the latency does not result in any significant decoding performance loss for the ideal zero-latency case, as discussed.

好ましい実施形態では、行訂正回路808は、その復号待ち時間と共に設計され、その復号待ち時間に従って、誤り記憶アレイ内の誤り位置の記憶を指示する。したがって、たとえば、行訂正回路808は、誤り記憶アレイ810内の、行R10の列C2内の誤り位置の記憶を、行R3およびR4の列C2内の誤り位置の記憶の前にインテリジェントに指示し得る。誤り記憶アレイ810の誤り位置の記憶のこのインテリジェントな指示により、可能な最大の範囲で、対称的誤り(たとえば、行R10の列C2内の誤り)が、対応する誤りが検出された行符号語にわたる同一の反復中に、列訂正回路806によって訂正され得ることが保証される。 In a preferred embodiment, row correction circuit 808 is designed with its decoding latency and directs the storage of error locations in the error storage array according to its decoding latency. Thus, for example, row correction circuit 808 intelligently directs storage of error locations in column C2 of row R10 in error storage array 810 before storage of error locations in column C2 of rows R3 and R4. obtain. This intelligent direction of error location storage in error storage array 810 ensures that, to the maximum extent possible, symmetrical errors (e.g., errors in column C2 of row R10) are detected in the row codeword in which the corresponding error is detected. It is guaranteed that it can be corrected by column correction circuit 806 during the same iteration over .

上記で与えた例では、並列化の効果も明示的には論じられていない。少なくともいくつかの実施形態では、列訂正回路806内の列訂正ロジックの並列インスタンスと、行訂正回路808内の復号ロジックの並列インスタンスの実装を通じて、復号スループットを向上させることが望ましい。たとえば、一実施形態では、行訂正回路808は、クロック・サイクル当たり4つの符号語を復号することのできる復号ロジックの4つのインスタンスを含み得、同様に列訂正回路806は、クロック・サイクル当たり4つの符号語内のビットを訂正することのできる列訂正ロジックの4つのインスタンスを含み得る。そのような実施形態では、ロジックの1つのインスタンスが行R0、R4、R8、R12、...の行符号語を処理する場合、ロジックの第2のインスタンスが、論理インスタンスの数を法とするデータ・アレイの次元によって決定される、行R1、R5、R9、R13などの行符号語を処理することが好ましい。列訂正ロジックのインスタンスのいずれかによって訂正された誤り位置が、復号ロジックのインスタンスのいずれかによって検出され得ることに留意されたい。 In the examples given above, the effects of parallelization are also not explicitly discussed. In at least some embodiments, it is desirable to improve decoding throughput through the implementation of parallel instances of column correction logic within column correction circuit 806 and parallel instances of decoding logic within row correction circuit 808 . For example, in one embodiment, row correction circuitry 808 may include four instances of decoding logic capable of decoding four codewords per clock cycle, and column correction circuitry 806 may likewise include four codewords per clock cycle. It may contain four instances of column correction logic that can correct bits within one codeword. In such an embodiment, one instance of logic is on rows R0, R4, R8, R12, . . . A second instance of logic processes row codewords such as rows R1, R5, R9, R13, etc., determined by the dimensions of the data array modulo the number of logic instances. preferably. Note that error locations corrected by any instance of column correction logic may be detected by any instance of decoding logic.

説明したように、少なくとも1つの実施形態では、バイナリ対称不変積符号を復号するためのデコーダが、直交する第1および第2の次元を有するデータ・アレイを含む。データ・アレイは、第1の次元のみに沿ってデータ・アレイ内にバッファリングされたバイナリ対称不変積符号にアクセスするように構成される。デコーダはまた、誤り位置を記憶するための誤り記憶アレイと、第1の次元に沿ってデータ・アレイからアクセスされたデータ内の誤りを検出および訂正し、誤り記憶アレイ内に第2の次元に沿った誤り位置を記憶するように構成された第1の訂正回路とを含む。第1の訂正回路は、対称不変積符号のデータ対称性に基づいて誤り位置を求める。デコーダはまた、第1の次元に沿ってデータ・アレイからアクセスされたデータの第1の訂正回路による受信前に、誤り記憶アレイ内に記憶された誤り位置に基づいてデータ・アレイからアクセスされたデータを訂正する第2の訂正回路を含む。 As described, in at least one embodiment a decoder for decoding a binary symmetric invariant product code includes a data array having orthogonal first and second dimensions. The data array is configured to access binary symmetric invariant product codes buffered within the data array along only the first dimension. The decoder also includes an error storage array for storing error locations and detecting and correcting errors in data accessed from the data array along a first dimension and into a second dimension in the error storage array. and a first correction circuit configured to store error locations along. A first correction circuit obtains an error location based on the data symmetry of the symmetric invariant product code. The decoder is also accessed from the data array based on the error locations stored in the error storage array prior to receipt by the first correction circuit of the data accessed from the data array along the first dimension. A second correction circuit is included for correcting the data.

記載の実施形態は、コストと性能の両方で従来技術のデコーダに勝る著しい利点をもたらし得る。たとえば、バイナリ対称不変積符号を両方の次元に沿ってアクセスするという要件をなくすことにより、回路の費用および面積が、特に、各次元で300以上のビットであり得る大きいバイナリ対称不変積符号について著しく削減される。さらに、両方の次元に沿ってバイナリ対称不変積符号にアクセスする必要をなくすことにより、復号待ち時間が最大で半分に短縮され得る。さらに、記載の実施形態は、対称的誤りが「再発見」され、後続の符号語の復号中に訂正されるのを待つのではなく、データ対称性を活用してそのような対称的誤りを「オン・ザ・フライ」で訂正する。 The described embodiments can provide significant advantages over prior art decoders in both cost and performance. For example, by eliminating the requirement to access binary symmetric invariant product codes along both dimensions, circuit cost and area can be significantly reduced, especially for large binary symmetric invariant product codes, which can be 300 or more bits in each dimension. reduced. Moreover, by eliminating the need to access binary symmetric invariant product codes along both dimensions, decoding latency can be reduced by up to half. Moreover, the described embodiments exploit data symmetry to detect such symmetric errors, rather than waiting for them to be "rediscovered" and corrected during decoding of subsequent codewords. Correct "on the fly".

本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであり得る。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令を有する1つまたは複数のコンピュータ可読記憶媒体を含み得る。 The invention can be a system, method, or computer program product, or a combination thereof. A computer program product may include one or more computer-readable storage media having computer-readable program instructions for causing a processor to implement aspects of the present invention.

コンピュータ可読記憶媒体は、命令実行デバイスによる使用のために命令を保持および記憶し得る有形デバイスであり得る。コンピュータ可読記憶媒体は、限定はしないが、たとえば電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または上記の任意の適切な組合せであり得る。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストには、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピィ・ディスク、パンチ・カードや、命令が記録された溝の中の隆起構造などの機械的に符号化されたデバイス、および上記の任意の適切な組合せが含まれる。本明細書では、コンピュータ可読記憶媒体は、電波または他の自由に伝播する電磁波、導波路または他の伝送媒体を通じて伝播する電磁波(たとえば、光ファイバ・ケーブルを通る光パルス)、またはワイヤを通じて伝送される電気信号など、本質的に一時的信号であると解釈されるべきではない。 A computer-readable storage medium may be a tangible device capable of holding and storing instructions for use by an instruction-executing device. A computer-readable storage medium can be, for example, without limitation, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the above. A non-exhaustive list of more specific examples of computer-readable storage media includes portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disc read-only memory (CD-ROM), digital versatile disc (DVD), memory stick, floppy disc, Included are punched cards, mechanically encoded devices such as raised structures in grooves in which instructions are recorded, and any suitable combination of the above. As used herein, computer-readable storage medium refers to radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through waveguides or other transmission media (e.g., light pulses through fiber optic cables), or transmissions transmitted through wires. should not be construed as being transient in nature, such as electrical signals that

本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいはネットワーク、たとえばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくはワイヤレス・ネットワーク、またはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含み得る。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体内に記憶するためにコンピュータ可読プログラム命令を転送する。 The computer readable program instructions described herein can be transferred from a computer readable storage medium to a respective computing/processing device or over a network, such as the Internet, a local area network, a wide area network, or a wireless network, or combinations thereof. can be downloaded to an external computer or external storage device via A network may include copper transmission cables, optical transmission fibers, wireless transmissions, routers, firewalls, switches, gateway computers, or edge servers, or combinations thereof. A network adapter card or network interface within each computing/processing device receives computer-readable program instructions from the network for storage within a computer-readable storage medium within the respective computing/processing device. Transfer program instructions.

本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語と、「C」プログラミング言語または類似のプログラミング言語などの従来の手続型プログラミング言語とを含む1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードのどちらかであり得る。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、スタンド・アロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上、かつ部分的にリモート・コンピュータ上で、または完全にリモート・コンピュータまたはサーバ上で実行され得る。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続され得、あるいは(たとえば、インターネット・サービス・プロバイダを使用して、インターネットを通じて)外部コンピュータに接続が行われ得る。いくつかの実施形態では、たとえば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル論理アレイ(PLA)を含む電子回路が、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、電子回路を個別設定し得る。 Computer readable program instructions for carrying out the operations of the present invention may be assembler instructions, Instruction Set Architecture (ISA) instructions, machine language instructions, machine dependent instructions, microcode, firmware instructions, state setting data, or Smalltalk(R) instructions. source code written in any combination of one or more programming languages, including object-oriented programming languages such as C++, and conventional procedural programming languages such as the "C" programming language or similar programming languages; It can be either object code. The computer-readable program instructions reside entirely on the user's computer, partly on the user's computer as a stand-alone software package, partly on the user's computer and partly on a remote computer, or It can run entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or wide area network (WAN), or (e.g., through an Internet service provider Connections can be made to external computers (through the Internet, using In some embodiments, electronic circuits including, for example, programmable logic circuits, field programmable gate arrays (FPGAs), or programmable logic arrays (PLAs) are programmed with a computer readable program to implement aspects of the invention. Computer readable program instructions may be executed to personalize the electronic circuit by utilizing the state information of the instructions.

本発明の態様が、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照しながら本明細書で説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組合せが、コンピュータ可読プログラム命令によって実装され得ることを理解されよう。 Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.

これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行される命令により、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定される機能/動作を実装するための手段を生み出すように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに与えられ、マシンが作り出され得る。これらのコンピュータ可読プログラム命令はまた、命令を記憶するコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定される機能/動作の態様を実装する命令を含む製造品を含むように、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示し得るコンピュータ可読記憶媒体内に記憶され得る。 These computer readable program instructions may be executed via a processor of a computer or other programmable data processing apparatus to perform the functions/acts specified in one or more blocks of the flowchart illustrations and/or block diagrams. A processor may be provided to a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a means for implementation to create a machine. These computer readable program instructions also produce an article of manufacture in which the computer readable storage medium storing the instructions contains instructions for implementing aspects of the functions/operations specified in one or more blocks of the flowcharts and/or block diagrams. , may be stored in a computer-readable storage medium capable of directing a computer, programmable data processing apparatus, or other device, or combination thereof, to function in a particular manner.

コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能装置、または別のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定される機能/動作を実装するように、コンピュータ、他のプログラム可能データ処理装置、または別のデバイス上にロードされ、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実施させて、コンピュータ実装プロセスが生成され得る。 Computer readable program instructions may also be instructions that execute on a computer, other programmable apparatus, or another device to implement the functions/acts specified in one or more blocks of the flowchart illustrations and/or block diagrams. A computer-implemented process is loaded onto a computer, other programmable data processing apparatus, or another device to cause a series of operational steps to be performed on the computer, other programmable apparatus, or other device, such that can be generated.

図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。この点で、フローチャートまたはブロック図の各ブロックは、1つまたは複数の指定の論理的機能を実装するための1つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または部分を表し得る。いくつかの代替の実装では、ブロック内に記載の機能は、図に記載されている以外の順序で行われ得る。たとえば、連続して示される2つのブロックは、実際にはほぼ同時に実行され得、またはブロックは、関係する機能に応じて、時には逆の順序で実行され得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組合せが、指定の機能または動作を実施し、あるいは専用ハードウェアおよびコンピュータ命令の組合せを実施する専用ハードウェア・ベースのシステムによって実装され得ることにも留意されよう。 The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block of a flowchart or block diagram may represent a module, segment, or portion of instructions comprising one or more executable instructions for implementing one or more specified logical functions. In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may in fact be executed substantially concurrently or the blocks may sometimes be executed in the reverse order, depending on the functionality involved. Each block of the block diagrams and/or flowchart illustrations, and combinations of blocks in the block diagrams and/or flowchart illustrations, may each perform a specified function or operation, or implement a combination of dedicated hardware and computer instructions. Note also that it can be implemented by a ware-based system.

1つまたは複数の好ましい実施形態を参照しながら説明されたように本発明が具体的に示されたが、本発明の思想および範囲から逸脱することなく、その中で形態および細部の様々な変更が行えることを当業者は理解されよう。たとえば、特定の機能を指示するフラッシュ・コントローラを含むデータ記憶システムに関して態様が説明されたが、代替として、そのような機能を実施するように、またはそのような機能を実施させるようにプロセッサによって処理され得るプログラム・コードを記憶する記憶デバイスを含むプログラム製品として本発明が実装され得ることを理解されたい。本明細書では、「記憶デバイス」が、法定の製造品のみを含み、本質的に信号媒体、本質的に一時的伝播信号、および本質的にエネルギーの形態を除外するように具体的に定義される。 Although the invention has been illustrated and described with reference to one or more preferred embodiments, various changes in form and detail may be made therein without departing from the spirit and scope of the invention. will be understood by those skilled in the art. For example, although aspects have been described in terms of a data storage system including a flash controller that directs certain functions, alternatively, a data storage system processed by a processor to perform such functions or cause such functions to be performed. It should be understood that the present invention can be implemented as a program product including a storage device storing program code that can be executed. As used herein, "storage device" is specifically defined to include only legal articles of manufacture and exclude essentially signal media, essentially transitory signals, and essentially forms of energy. be.

さらに、NANDフラッシュ・メモリの使用を含む実施形態が説明されたが、本発明の実施形態はまた、任意の他のタイプの不揮発性ランダム・アクセス・メモリ(NVRAM)と共に使用され得ることを理解されたい。 Additionally, although embodiments have been described that include the use of NAND flash memory, it is understood that embodiments of the present invention can also be used with any other type of non-volatile random access memory (NVRAM). sea bream.

以下の特定の構造および機能の上記で説明された図および記載の説明は、出願人が発明したものの範囲、または添付の特許請求の範囲の範囲を限定するために提示されるものではない。むしろ、図および記載の説明は、特許保護が求められる発明を作成および使用するように当業者に教示するために与えられる。明快および理解のために、本発明の市販の実施形態のすべての特徴が説明または図示されているわけではないことを当業者は理解されよう。本発明の態様を組み込む実際の市販の実施形態の開発は、市販の実施形態についての開発者の最終的目標を達成するために多数の実装特有の決定を必要とすることを当業者は理解されよう。そのような実装特有の決定には、特定の実装、位置、その時々によって変動し得る、システム関連、ビジネス関連、政府関連のコンプライアンス、および他の制約が含まれ得るが、それに限定されない可能性が高い。絶対的な意味で開発者の努力は複雑で時間がかかり得るが、それでもそのような努力は、本開示の特典を有する当業者にとっては定型化された作業となる。開示され、本明細書で教示される発明には、多数の様々な修正形態および代替形態の余儀があることを理解されたい。最後に、限定はしないが、「a」などの単数形の用語の使用は項目数の限定を意図するものではない。 The above-described figures and written descriptions of specific structures and functions below are not presented to limit the scope of applicant's invention or the scope of the appended claims. Rather, the drawings and written description are provided to teach one skilled in the art to make and use the invention for which patent protection is sought. Those skilled in the art will appreciate that not all features of the commercial embodiments of the invention have been described or illustrated for clarity and understanding. Those skilled in the art will appreciate that the development of an actual commercial embodiment that incorporates aspects of the present invention will require a number of implementation-specific decisions to achieve the developer's ultimate goal for the commercial embodiment. Yo. Such implementation-specific decisions may include, but are not limited to, system-related, business-related, government-related compliance, and other constraints that may vary by particular implementation, location, and from time to time. high. In the absolute sense a developer's effort can be complex and time consuming, yet such an effort would be a routine undertaking for those skilled in the art with the benefit of this disclosure. It is to be understood that the invention disclosed and taught herein is susceptible to numerous and various modifications and alternative forms. Finally, and without limitation, the use of singular terms such as "a" is not intended to limit the number of items.

Claims (21)

バイナリ対称不変積符号を復号するためのデコーダであって、
直交する第1および第2の次元を有するデータ・アレイであって、前記第1の次元のみに沿って前記データ・アレイ内にバッファリングされたバイナリ対称不変積符号にアクセスするように構成される、前記データ・アレイと、
誤り位置を記憶するための誤り記憶アレイと、
前記第1の次元に沿って前記データ・アレイからアクセスされたデータ内の誤りを検出および訂正し、前記誤り記憶アレイ内に前記第2の次元に沿った誤り位置を記憶するように構成された第1の訂正回路であって、前記対称不変積符号のデータ対称性に基づいて前記誤り位置を求める、前記第1の訂正回路と、
前記第1の次元に沿って前記データ・アレイからアクセスされたデータの前記第1の訂正回路による受信前に、前記誤り記憶アレイ内に記憶された前記誤り位置に基づいて前記データ・アレイからアクセスされた前記データを訂正する第2の訂正回路と
を含む回路を備える、デコーダ。
A decoder for decoding a binary symmetric invariant product code, comprising:
A data array having orthogonal first and second dimensions, configured to access binary symmetric invariant product codes buffered within said data array along said first dimension only. , the data array;
an error storage array for storing error locations;
configured to detect and correct errors in data accessed from the data array along the first dimension and store error locations along the second dimension in the error storage array; a first correction circuit for determining the error location based on data symmetry of the symmetric invariant product code;
accessing from the data array based on the error locations stored in the error storage array prior to receipt by the first correction circuitry of data accessed from the data array along the first dimension; and a second correction circuit for correcting the data that has been processed.
前記バイナリ対称不変積符号が半積符号(HPC)である、請求項1に記載のデコーダ。 2. The decoder of claim 1, wherein said binary symmetric invariant product code is a half product code (HPC). 前記データ・アレイが、その中にバッファリングされた前記バイナリ対称不変積符号に、行ごとにのみアクセスするように構成される、請求項1に記載のデコーダ。 2. The decoder of claim 1, wherein said data array is configured to access said binary symmetric invariant product codes buffered therein only row by row. 前記第1の訂正回路が、訂正されたデータで前記データ・アレイを更新する、請求項1に記載のデコーダ。 2. The decoder of claim 1, wherein said first correction circuit updates said data array with corrected data. 前記デコーダが、前記第1の次元のみに沿って前記データ・アレイ内にバッファリングされた前記バイナリ対称不変積符号の符号語に反復的にアクセスし、それによって前記符号語の少なくとも一部が、前記第1の次元に沿って複数回アクセスされる、請求項4に記載のデコーダ。 The decoder iteratively accesses codewords of the binary symmetric invariant product code buffered in the data array along the first dimension only, whereby at least a portion of the codewords are: 5. The decoder of claim 4, accessed multiple times along the first dimension. 前記デコーダが、所定の反復数に達し、前記バイナリ対称不変積符号内の誤りを検出しないことが初めて生じたことに基づいて、前記バイナリ対称不変積符号の符号語に反復的にアクセスすることを中断する、請求項5に記載のデコーダ。 The decoder iteratively accessing codewords of the binary symmetric invariant product code based on the first time the decoder reaches a predetermined number of iterations and fails to detect an error in the binary symmetric invariant product code. 6. The decoder of claim 5, suspending. 前記第1の訂正回路が、クロック・サイクル当たり複数の符号語を復号するように構成され、
前記第2の訂正回路が、クロック・サイクル当たり複数の符号語に前記誤り記憶アレイによって示される訂正を適用するように構成される、請求項1に記載のデコーダ。
wherein the first correction circuit is configured to decode multiple codewords per clock cycle;
2. The decoder of claim 1, wherein said second correction circuit is configured to apply the correction indicated by said error storage array to multiple codewords per clock cycle.
前記第1の訂正回路が、前記デコーダの待ち時間に従って前記誤り記憶アレイ内の前記誤り位置の記憶を指示する、請求項1に記載のデコーダ。 2. The decoder of claim 1, wherein said first correction circuit directs storage of said error locations in said error storage array according to latency of said decoder. 不揮発性メモリ・システムと、
前記不揮発性メモリ・システムに結合されたコントローラであって、請求項1に記載のデコーダを含む、前記コントローラと
を備えるデータ記憶システム。
a non-volatile memory system;
A data storage system comprising a controller coupled to said non-volatile memory system, said controller including the decoder of claim 1 .
通信チャネルから変調符号化データを受信し、前記変調符号化データを復調し、符号化データを出力するように構成された復調器と、
請求項1に記載のデコーダであって、前記復調器に結合され、前記バイナリ対称不変積符号を含む符号化データを入力として受信する、前記デコーダと
を備えるデータ通信システム。
a demodulator configured to receive modulated coded data from a communication channel, demodulate the modulated coded data, and output coded data;
2. A data communication system according to claim 1, comprising a decoder coupled to said demodulator and receiving as input encoded data comprising said binary symmetric invariant product code.
バイナリ対称不変積符号を復号する方法であって、
第1の次元のみに沿って、直交する第1および第2の次元を有するデータ・アレイ内にバッファリングされたバイナリ対称不変積符号にアクセスすることと、
第1の訂正回路が、前記第1の次元に沿って前記データ・アレイからアクセスされたデータの誤りを検出および訂正することと、
前記第1の訂正回路が、前記対称不変積符号のデータ対称性に基づいて、誤り記憶アレイ内の前記第2の次元に沿った誤り位置を求め、誤り記憶アレイ内に前記誤り位置を記憶することと、
前記第1の次元に沿って前記データ・アレイからアクセスされたデータの前記第1の訂正回路による受信前に、第2の訂正回路が、前記誤り記憶アレイ内に記憶された前記誤り位置に基づいて前記データ・アレイからアクセスされた前記データを訂正することと
を含む方法。
A method of decoding a binary symmetric invariant product code, comprising:
accessing a binary symmetric invariant product code buffered in a data array having orthogonal first and second dimensions along only the first dimension;
a first correction circuit detecting and correcting errors in data accessed from the data array along the first dimension;
The first correction circuit determines error locations along the second dimension in an error storage array based on data symmetry of the symmetric invariant product code, and stores the error locations in an error storage array. and
prior to receipt by the first correction circuit of data accessed from the data array along the first dimension, a second correction circuit based on the error locations stored in the error storage array; and correcting said data accessed from said data array.
前記バイナリ対称不変積符号が半積符号(HPC)である、請求項11に記載の方法。 12. The method of claim 11, wherein the binary symmetric invariant product code is a half product code (HPC). 前記アクセスすることが、前記データ・アレイ内にバッファリングされた前記バイナリ対称不変積符号に、行ごとにのみアクセスすることを含む、請求項11に記載の方法。 12. The method of claim 11, wherein said accessing comprises accessing said binary symmetric invariant product code buffered in said data array only row by row. 前記第1の訂正回路が、訂正されたデータで前記データ・アレイを更新することをさらに含む、請求項11に記載の方法。 12. The method of claim 11, further comprising said first correction circuit updating said data array with corrected data. 前記アクセスすることが、前記第1の次元のみに沿って前記データ・アレイ内にバッファリングされた前記バイナリ対称不変積符号の符号語に反復的にアクセスし、それによって前記符号語の少なくとも一部が、前記第1の次元に沿って複数回アクセスされることを含む、請求項14に記載の方法。 The accessing iteratively accesses codewords of the binary symmetric invariant product code buffered in the data array along only the first dimension, thereby at least a portion of the codewords. is accessed multiple times along the first dimension. 所定の反復数に達し、前記バイナリ対称不変積符号内の誤りを検出しないことが初めて生じたことに基づいて、前記バイナリ対称不変積符号の符号語に反復的にアクセスすることを中断することをさらに含む、請求項15に記載の方法。 discontinuing iteratively accessing codewords of the binary symmetric invariant product code based on reaching a predetermined number of iterations and not detecting an error in the binary symmetric invariant product code for the first time. 16. The method of claim 15, further comprising: 前記第1の訂正回路が誤りを検出および訂正することが、前記第1の訂正回路がクロック・サイクル当たり複数の符号語内の誤りを検出および訂正することを含み、
前記第2の訂正回路が前記データを訂正することが、前記第2の訂正回路がクロック・サイクル当たり複数の符号語に前記誤り記憶アレイによって示される訂正を適用することを含む、請求項11に記載の方法。
wherein said first correction circuit detecting and correcting errors includes said first correction circuit detecting and correcting errors in multiple codewords per clock cycle;
12. The method of claim 11, wherein said second correction circuit correcting said data comprises said second correction circuit applying the correction indicated by said error storage array to a plurality of codewords per clock cycle. described method.
前記第1の訂正回路が、復号待ち時間に従って前記誤り記憶アレイ内の前記誤り位置の記憶を指示すること
をさらに含む、請求項11に記載の方法。
12. The method of claim 11, further comprising: said first correction circuit directing storage of said error locations in said error storage array according to decoding latency.
不揮発性メモリ・システムから前記バイナリ対称不変積符号の一部を検索することをさらに含む、請求項11に記載の方法。 12. The method of claim 11, further comprising retrieving a portion of said binary symmetric invariant product code from a non-volatile memory system. 通信リンクから前記バイナリ対称不変積符号の一部を受信することをさらに含む、請求項11に記載の方法。 12. The method of claim 11, further comprising receiving a portion of said binary symmetric invariant product code from a communication link. コンピュータ・プログラムがコンピュータ上で実行されるとき、請求項11ないし20のいずれか1項に記載の方法を実施するように適合されたプログラム・コード手段を含むコンピュータ・プログラム。 A computer program comprising program code means adapted to implement a method according to any one of claims 11 to 20 when the computer program is run on a computer.
JP2021571707A 2019-06-12 2020-06-03 Efficient Error Correction of Codewords Encoded by Binary Symmetric Invariant Product Codes Active JP7479401B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/439,197 2019-06-12
US16/439,197 US10826538B1 (en) 2019-06-12 2019-06-12 Efficient error correction of codewords encoded by binary symmetry-invariant product codes
PCT/IB2020/055248 WO2020250091A1 (en) 2019-06-12 2020-06-03 Efficient error correction of codewords encoded by binary symmetry-invariant product codes

Publications (2)

Publication Number Publication Date
JP2022536065A true JP2022536065A (en) 2022-08-12
JP7479401B2 JP7479401B2 (en) 2024-05-08

Family

ID=73019717

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021571707A Active JP7479401B2 (en) 2019-06-12 2020-06-03 Efficient Error Correction of Codewords Encoded by Binary Symmetric Invariant Product Codes

Country Status (6)

Country Link
US (1) US10826538B1 (en)
JP (1) JP7479401B2 (en)
CN (1) CN113812092A (en)
DE (1) DE112020002794B4 (en)
GB (1) GB2598526B (en)
WO (1) WO2020250091A1 (en)

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3328093B2 (en) * 1994-07-12 2002-09-24 三菱電機株式会社 Error correction device
EP1146515A1 (en) * 1998-02-25 2001-10-17 Matsushita Electric Industrial Co., Ltd. High-speed error correcting apparatus with efficient data transfer
JP3945602B2 (en) 1998-04-14 2007-07-18 富士通株式会社 Correction inspection method and correction inspection apparatus
KR100594241B1 (en) * 2004-01-29 2006-06-30 삼성전자주식회사 RS decoder circuit having forward Chien search type
US7774688B1 (en) 2006-10-11 2010-08-10 Marvell International Ltd. Hardware efficient decoding system for Bose, Ray-Chaudhuri, Hocquenghem (BCH) product codes
US8359518B2 (en) 2009-10-27 2013-01-22 Altera Canada Co. 2D product code and method for detecting false decoding errors
US9166626B2 (en) 2011-11-18 2015-10-20 Korea Advanced Institute Of Science And Technology Encoding, decoding, and multi-stage decoding circuits for concatenated BCH, and error correction circuit of flash memory device using the same
US8499219B2 (en) 2011-12-13 2013-07-30 Broadcom Corporation Encoding methods and systems for binary product codes
US8762821B2 (en) 2012-03-30 2014-06-24 Intel Corporation Method of correcting adjacent errors by using BCH-based error correction coding
US9203437B2 (en) 2012-12-19 2015-12-01 Infineon Technologies Ag Circuitry and method for correcting 3-bit errors containing adjacent 2-bit error
JP5971670B2 (en) 2013-12-09 2016-08-17 三菱電機株式会社 Error correction decoding device
TWI528732B (en) 2013-12-30 2016-04-01 衡宇科技股份有限公司 Decoder having ldpc code and bch code and decoding method thereof
GB2525430B (en) 2014-04-25 2016-07-13 Ibm Error-correction encoding and decoding
US9647694B2 (en) * 2014-12-28 2017-05-09 International Business Machines Corporation Diagonal anti-diagonal memory structure
US9760435B2 (en) 2015-10-14 2017-09-12 Intel Corporation Apparatus and method for generating common locator bits to locate a device or column error during error correction operations
US10009043B2 (en) * 2016-06-30 2018-06-26 Intel Corporation Technologies for providing efficient error correction with half product codes
US10348334B2 (en) * 2016-10-25 2019-07-09 International Business Machines Corporation Reducing a decoding error floor by post-processing codewords encoded by binary symmetry-invariant product codes
US20180167088A1 (en) 2016-12-09 2018-06-14 Futurewei Technologies, Inc. Error-Correcting Code Method and System with Hybrid Block Product Codes
US10389385B2 (en) 2017-01-19 2019-08-20 Samsung Electronics Co., Ltd. BM-based fast chase decoding of binary BCH codes through degenerate list decoding
DE102017216264B4 (en) 2017-09-14 2019-09-12 Deutsches Zentrum für Luft- und Raumfahrt e.V. Decoding method
US10693500B2 (en) * 2017-09-15 2020-06-23 Duke University Systems and methods for decoding forward error correction codes based on component codes
CN109542668B (en) * 2018-10-29 2021-11-23 百富计算机技术(深圳)有限公司 NAND FLASH memory-based verification method, terminal equipment and storage medium

Also Published As

Publication number Publication date
US10826538B1 (en) 2020-11-03
GB2598526B (en) 2022-06-15
GB2598526A (en) 2022-03-02
CN113812092A (en) 2021-12-17
DE112020002794T5 (en) 2022-03-31
WO2020250091A1 (en) 2020-12-17
JP7479401B2 (en) 2024-05-08
DE112020002794B4 (en) 2023-07-20

Similar Documents

Publication Publication Date Title
US10348334B2 (en) Reducing a decoding error floor by post-processing codewords encoded by binary symmetry-invariant product codes
US10613930B2 (en) Global error recovery system
US9996418B2 (en) Error-correction encoding and decoding
US10452477B2 (en) Multiple node repair using high rate minimum storage regeneration erasure code
US10615824B2 (en) Diagonal anti-diagonal memory structure
US10417088B2 (en) Data protection techniques for a non-volatile memory array
US11074124B2 (en) Method and system for enhancing throughput of big data analysis in a NAND-based read source storage
TW202001920A (en) Method and apparatus for improved data recovery in data storage systems
JP6342013B2 (en) Method, system and computer program for operating a data storage system including a non-volatile memory array
US11385833B2 (en) Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
KR20210001927A (en) Generalized concatenated error correction coding scheme with locality
JP7479401B2 (en) Efficient Error Correction of Codewords Encoded by Binary Symmetric Invariant Product Codes
US11063612B1 (en) Parallelizing encoding of binary symmetry-invariant product codes
KR102681248B1 (en) Half-size data array for encoding symmetric-invariant binary product codes
JP7495192B2 (en) Half-size data array for encoding binary symmetric invariant product codes - Patents.com
US12014071B2 (en) Separation of parity columns in bit-flip decoding of low-density parity-check codes with pipelining and column parallelism
US20220374152A1 (en) Low latency ssd read architecture with multi-level error correction codes (ecc)

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220512

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221121

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231226

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240326

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240409

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240423

R150 Certificate of patent or registration of utility model

Ref document number: 7479401

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150