JP5665725B2 - 符号化装置及びこれを用いた半導体メモリシステム - Google Patents

符号化装置及びこれを用いた半導体メモリシステム Download PDF

Info

Publication number
JP5665725B2
JP5665725B2 JP2011272624A JP2011272624A JP5665725B2 JP 5665725 B2 JP5665725 B2 JP 5665725B2 JP 2011272624 A JP2011272624 A JP 2011272624A JP 2011272624 A JP2011272624 A JP 2011272624A JP 5665725 B2 JP5665725 B2 JP 5665725B2
Authority
JP
Japan
Prior art keywords
matrix
symbol sequence
columns
rows
parity
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.)
Expired - Fee Related
Application number
JP2011272624A
Other languages
English (en)
Other versions
JP2013126028A (ja
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2011272624A priority Critical patent/JP5665725B2/ja
Priority to US13/706,663 priority patent/US8966351B2/en
Publication of JP2013126028A publication Critical patent/JP2013126028A/ja
Application granted granted Critical
Publication of JP5665725B2 publication Critical patent/JP5665725B2/ja
Expired - Fee Related 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/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
    • 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/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • 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/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/118Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure
    • 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

Landscapes

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

Description

実施形態は、誤り訂正符号化技術に関する。
強力な誤り訂正能力を持つ誤り訂正符号の1つとして、LDPC(Low Density Parity Check)符号が知られている。LDPC符号語は、例えばメッセージパッシングアルゴリズムに基づいて復号できる。係る復号処理の計算複雑度は、符号語長(=nシンボル)に対してオーダО(n)(即ち、線形オーダ)と評価できる。他方、LDPC符号語を生成するための符号化処理は、一般的には、データシンボル列(データベクトル)に生成行列を乗算することによって実現される。係る符号化処理の計算複雑度は、符号長(=nシンボル)に対してオーダO(n)と評価できる。
T.Richardson, et.al.,"Efficient encoding of low−density parity−check codes" IEEE Trans. on Comm., Vol.47, No.2, 2001. Manabu Hagiwara, et.al., "Quantum Quasi−Cyclic LDPC Codes," Proc. in IEEE International Symposium on Information Theory (ISIT2007), pp.806−810, 2007.
実施形態は、符号化処理の計算複雑度を低減させると共に符号化処理を高速化することとを目的とする。
実施形態によれば、符号化装置は、q(N−J)個(q,J,Nは自然数であって、N>J)のシンボルを備えるデータシンボル列を入力し、qJ個のシンボルを備えるパリティシンボル列をデータシンボル列に付加してqN個のシンボルを備える符号語を生成する。符号語は、qJ行×qN列のパリティ検査行列を用いたパリティ検査を満足する。パリティ検査行列においてパリティシンボル列に対応するqJ行×qJ列の第1の部分行列は、qL行×qL列(Lは自然数であって、J>L)の第1の単位行列とq(J−L)行×qL列の第1の非零行列とを備えるqJ行×qL列の第2の部分行列を含む。
第1の実施形態に係る符号化装置を例示するブロック図。 第2の実施形態に係る符号化装置を例示するブロック図。 比較例に相当する符号化装置を例示するブロック図。 準巡回シフト行列及び基本行列の関係の説明図。 第3の実施形態に係る半導体メモリシステムを例示するブロック図。 第1の実施形態に係る符号化装置に対応するパリティ検査行列を例示する図。 第2の実施形態に係る符号化装置に対応するパリティ検査行列を例示する図。 第2の実施形態に係る符号化装置に対応するパリティ検査行列の基本行列を例示する図。
以下、図面を参照しながら実施形態の説明が述べられる。尚、以降、説明済みの要素と同一または類似の要素には同一または類似の符号が付され、重複する説明は基本的に省略される。
以降の説明において、各実施形態は、LDPC符号方式に適用されることが想定されている。但し、各実施形態は、他の符号方式に適用されてもよい。
パリティ検査行列の性質は、当該パリティ検査行列に行基本変形及び列基本変形が施されても変化しない。従って、以降の説明において、第1のパリティ検査行列に対して行基本変形及び列基本変形の少なくとも一方を任意に施すことによって導出可能な第2のパリティ検査行列は、第1のパリティ検査行列と同一とみなされる。
また、以降の説明において、簡単化のために、各実施形態はバイナリシンボル(「1」または「0」のシンボル値を取る)に適用されるものとする。従って、シンボル同士の演算において、符号の正負は交換できる。但し、各実施形態が多元シンボルに適用される場合には、シンボル同士の演算において、符号の正負は交換できない。
(第1の実施形態)
符号化とは、長さf=q(N−J)のデータシンボル列mに対して、下記数式(1)を満足させる長さr=qJのパリティシンボル列(パリティベクトル)pを生成する処理と定義される。尚、以降の説明において、「T」は、行列またはベクトルの転置を表す記号である。
Figure 0005665725
数式(1)において、Hはパリティ検査行列を表す。一般的なLDPC符号化処理は、このパリティ検査行列Hに対応する生成行列をデータシンボル列mに乗算することによって実現される。この計算複雑度がオーダO(n)であることは前述の通りである。ここで、パリティ検査行列Hを利用してパリティシンボル列pを生成すれば、計算複雑度を低減させることができる。
具体的には、下記数式(2)に示されるように、パリティ検査行列Hを6つの(部分)行列A,B,T,C,D,Eによって構成されるとする。尚、行列Tは、下三角行列である。他の行列A,B,C,D,Eは、下三角行列である必要はないものの、計算複雑度を低減させる観点から疎行列であることが好ましい。
Figure 0005665725
行列A,Cはデータシンボル列mに対応する(即ち、データシンボル列mに乗算される)。行列B,T,D,Eはパリティシンボル列pに対応する(即ち、パリティシンボル列pに乗算される)。より詳細には、パリティシンボル列p=(p,p)のように分割すると、行列B,Dは第1の(部分)パリティシンボル列p(第1の(部分)パリティベクトル)に対応し、行列T,Eは第2の(部分)パリティシンボル列p(第2の(部分)パリティベクトル)に対応する。第1のパリティシンボル列pの長さをr=q(J−L)とし、第2のパリティシンボル列pの長さをr=qLとすると、r=r+rが成立する。数式(2)のパリティ検査行列Hに、行列Eを零行列に置き換えるための行基本変形を施すと、下記数式(3)に示されるパリティ検査行列H’が導出される。尚、以降の説明において、「−1」は逆行列を表す記号である。
Figure 0005665725
尚、行列Tは下三角行列であるから、逆行列T−1は存在する。行基本変形を施したとしてもパリティ検査行列Hの性質は変化しないから、H’(m,p)=0が成立する。即ち、下記数式(4),(5)が成立する。
Figure 0005665725
Figure 0005665725
数式(5)から、第1のパリティシンボル列pは、下記数式(6)に示されるように生成できる。
Figure 0005665725
また、上記数式(4)から、第2のパリティシンボル列pは、下記数式(7)に示されるように生成できる。
Figure 0005665725
数式(7)において、行列A,Bが疎行列であるならば、行列積Am及びBp の計算複雑度は低い。更に、Tは下三角行列であるから、第2のパリティシンボル列pの各要素を逐次的に計算すれば、計算複雑度を低減させることができる。従って、パリティシンボル列pをこのように生成すれば、符号化処理の一部の計算複雑度を低減させることができる。
他方、係る生成技法は、逐次的な計算を含むので、並列処理が困難である。即ち、係る生成技法は、高速化が困難である。更に、数式(6)における行列φ−1は、概して疎行列でない。故に、係る生成技法によると、第1のパリティシンボル列を生成するための計算複雑度は必ずしも低くない。
行列Tを同じサイズの単位行列Iに置き換えると、上記数式(6),(7)を下記数式(8),(9)に置き換えることができる。尚、前述の通り、2値シンボルに関して、符号の正負は交換できるので、例えば右辺の「−」符号が「+」符号に交換されてよい。
Figure 0005665725
Figure 0005665725
数式(9)によれば、ベクトルAm及びBp の加算によって第2のパリティシンボル列pを生成できるので逐次的な計算が不要である。故に、第2のパリティシンボル列pをこのように生成すれば、符号化処理を並列処理によって実現すること(即ち、符号化処理を高速化すること)が容易である。
第1の実施形態に係る符号化装置は、上記数式(8)及び数式(9)に従って、第1のパリティシンボル列p及び第2のパリティシンボル列pを生成する。この符号化装置は、図6及び下記数式(10)に示されるパリティ検査行列Hに対応する。
Figure 0005665725
行列Aは、qL行×q(N−J)列の行列である。行列Bは、qL行×q(J−L)列の行列である。行列Cは、q(J−L)行×q(N−J)列の行列である。行列Dは、q(J−L)行×q(J−L)列の行列である。行列Eは、q(J−L)行×qL列の行列である。尚、行列A,B,C,D,Eは、計算複雑度を低減させる観点から、疎行列であることが好ましい。
また、行列A,B,C,D,Eは、典型的には、(行数×列数)個のブロック行列(q行×q列の行列)を配列することによって形成される。以降の説明において、行列A,B,C,D,Eは、(行数×列数)個のブロック行列を配列することによって形成されるものとする。具体的には、行列Aは、L×(N−J)個のブロック行列を配列することによって形成される。行列Bは、L×(J−L)個のブロック行列を配列することによって形成される。行列Cは、(J−L)×(N−J)個のブロック行列を配列することによって形成される。行列Dは、(J−L)×(J−L)個のブロック行列を配列することによって形成される。行列Eは、(J−L)×L個のブロック行列を配列することによって形成される。
各ブロック行列は、非零行列(疎行列であることが好ましい)であってもよいし、零行列であってもよい。また、各ブロック行列としての非零行列は、ハードウェア構成の簡素化などの観点から、巡回シフト行列であってもよい。ここで、巡回シフト行列は、各行に1つだけ非零要素が含まれるものが最も疎である。以降の説明において、各ブロック行列は、各行に1つだけ非零要素を含むq行×q列の巡回シフト行列またはq行×q列の零行列であるとする。即ち、パリティ検査行列Hは、J×N個のブロック行列を配列することによって形成される準巡回シフト行列であるとする。
準巡回シフト行列は、基本行列を用いて表現することができる。q行×q列の単位行列に相当するブロック行列は、基本行列における「0」の要素に対応する。また、q行×q列の単位行列の各行の非零要素がi(=1,2,・・・,q−1)列だけ右側に巡回シフトした行列に相当するブロック行列は、基本行列における「i」の要素に対応する。更に、q行×q列の零行列に相当するブロック行列は、基本行列における「∞」の要素に対応する。図4は、パリティ検査行列Hと、その基本行列Ωを例示する。図4の例では、q=3,J=5,N=6,L=3である。
本実施形態に係る符号化装置100が、図1に例示されている。符号化装置100は、行列計算部101,102,103,104と、ベクトル加算部105とを含む。
行列計算部101,102は、上記数式(8)に従って、第1のパリティシンボル列pを生成する。行列計算部103,104及びベクトル加算部105は、上記数式(9)に従って、第2のパリティシンボル列pを生成する。
行列計算部101は、外部からデータシンボル列mを入力する。行列計算部101は、データシンボル列mの左側から行列(−EA+C)を乗算する。即ち、行列計算部101は、下記数式(10)に従って、ベクトル(行列積)v を計算する。行列計算部101は、ベクトルv を行列計算部102へと出力する。
Figure 0005665725
行列計算部102は、行列計算部101からベクトルv を入力する。行列計算部102は、ベクトルv の左側から行列Ψ−1を乗算する。即ち、行列計算部102は、下記数式(12)に従って、第1のパリティシンボル列p を計算する。行列計算部102は、第1のパリティシンボル列pを外部へと出力すると共に行列計算部104へと出力する。
Figure 0005665725
行列計算部103は、外部からデータシンボル列mを入力する。行列計算部103は、データシンボル列mの左側から行列Aを乗算する。即ち、行列計算部103は、下記数式(13)に従って、ベクトル(行列積)v を計算する。行列計算部103は、ベクトルv をベクトル加算部105へと出力する。尚、行列計算部103は、行列計算部101,102,104と並行して動作してもよいし、これらよりも前に或いは後に動作してもよい。
Figure 0005665725
行列計算部104は、行列計算部102から第1のパリティシンボル列pを入力する。行列計算部104は、第1のパリティシンボル列p の左側から行列Bを乗算する。即ち、行列計算部104は、下記数式(14)に従って、ベクトル(行列積)v を計算する。行列計算部104は、ベクトルv をベクトル加算部105へと出力する。
Figure 0005665725
ベクトル加算部105は、行列計算部103からベクトルv を入力し、行列計算部104からベクトルv を入力する。ベクトル加算部105は、ベクトルv 及びベクトルv を加算する。即ち、ベクトル加算部105は、下記数式(15)に従って、第2のパリティシンボル列pを計算する。ベクトル加算部105は、第2のパリティシンボル列pを外部へと出力する。
Figure 0005665725
尚、上記数式(12)に関して、Ψ−1は、q(J−L)行×q(J−L)列の行列である。Ψ−1は、概して疎行列でないので、数式(12)の計算複雑度は必ずしも低くない。従って、LDPC符号の特性を考慮しつつLが大きくなるように設定することによって、LDPC符号の特性を維持しつつ数式(12)の計算複雑度を低減させることが好ましい。
Lの設定可能な最大値は、以下の技法により導出できる。例えば、基本行列Ωのうちパリティシンボル列pに対応する部分において、「∞」でない要素(即ち、「0」,「1」,・・・,「q−1」の要素)を多くともW(=J,J−1,・・・,1)個持つ列の総数が少なくとも(J−W+1)個であるという条件を満足させるWが少なくとも1つ存在する。係るWに関して、L=J−W+1に設定できる。即ち、Wの最小値をWminとし、Lの最大値をLmaxとすれば、Lmax=J−Wmin+1である。図4の例では、W=5,4,3の場合に上記条件が満足する。従って、Lmax=3(=5−3+1)に設定できる。
尚、Lを単純に最大化するとLDPC符号の特性が劣化するおそれがあるので、前述の通り、LDPC符号の特性を考慮しつつLが大きくなるように設定することが望ましい。例えば、復号誤り率が低い領域において良好な特性を示すLDPC符号を定義するパリティ検査行列は、その各列が持つ非零のブロック行列の最小数が3以上であることが経験的に知られている。従って、例えばストレージシステムに適用されるLDPC符号について、W=3を採用してLを設定することが好ましい。即ち、パリティ検査行列Hのうちパリティシンボル列に対応するqJ行×qJ列の第1の部分行列が、q(J−2)行×q(J−2)列の単位行列と、2×(J−2)個の巡回シフト行列を配列した非零行列とを備えるqJ行×q(J−2)列の第2の部分行列を含むように設計することが好ましい。
符号化装置100の比較例に相当する符号化装置300が図3に示されている。符号化装置300は、行列計算部301,302,103,104,306と、ベクトル加算部305とを含む。
行列計算部301,302は、上記数式(6)に従って、第1のパリティシンボル列pを生成する。行列計算部103,104,306及びベクトル加算部305は、上記数式(7)に従って、第2のパリティシンボル列pを生成する。
行列計算部301は、外部からデータシンボル列mを入力する。行列計算部301は、データシンボル列mの左側から行列(−ET−1A+C)を乗算する。即ち、行列計算部301は、下記数式(16)に従って、ベクトル(行列積)v を計算する。行列計算部301は、ベクトルv を行列計算部302へと出力する。
Figure 0005665725
行列計算部302は、行列計算部301からベクトルv を入力する。行列計算部302は、ベクトルv の左側から行列φ−1を乗算する。即ち、行列計算部302は、下記数式(17)に従って、第1のパリティシンボル列p を計算する。行列計算部302は、第1のパリティシンボル列pを外部へと出力すると共に行列計算部104へと出力する。
Figure 0005665725
ベクトル加算部305は、行列計算部103からベクトルv を入力し、行列計算部104からベクトルv を入力する。ベクトル加算部305は、ベクトルv 及びベクトルv を加算する。即ち、ベクトル加算部305は、下記数式(18)に従って、ベクトルv を計算する。ベクトル加算部305は、ベクトルv を行列計算部306へと出力する。
Figure 0005665725
行列計算部306は、ベクトル加算部305からベクトルv を入力する。行列計算部306は、下記数式(19)に従って、第2のパリティシンボル列p を計算する。行列T−1は下三角行列であるため、逐次的に計算することによって計算複雑度を抑えることができる。行列計算部306は、第2のパリティシンボル列pを外部へと出力する。
Figure 0005665725
符号化装置100及び符号化装置300を比較すると、符号化装置100は行列計算部306のように逐次的な計算を行う必要がない。従って、符号化装置100によれば、符号化装置300に比べて、符号化処理を並列処理によって実現すること(即ち、符号化処理を高速化すること)が容易である。
以上説明したように、第1の実施形態に係る符号化装置は、パリティシンボル列に対応する部分行列にqL行×qL列の単位行列を含むように設計されたパリティ検査行列を利用して符号語を生成する。従って、この符号化装置によれば、符号化処理の計算複雑度を低減させると共に符号化処理を高速化できる。
(第2の実施形態)
第2の実施形態に係る符号化装置は、パリティ検査行列の一部において第1の実施形態に係る符号化装置と異なる。具体的には、本実施形態に係る符号化装置は、図7及び下記数式(20)に示されるパリティ検査行列Hに対応する。
Figure 0005665725
数式(20)に示されるパリティ検査行列Hは、上記数式(10)に示されるパリティ検査行列Hにおいて部分行列Dが単位行列Iである場合に相当する。更に、数式(20)のパリティ検査行列Hは、下記数式(21)を満足する。
Figure 0005665725
従って、上記数式(8)は下記数式(22)に置き換えることができる。
Figure 0005665725
本実施形態に係る符号化装置200が、図2に例示されている。符号化装置200は、行列計算部201,103,104と、ベクトル加算部105とを含む。
行列計算部201は、上記数式(22)に従って、第1のパリティシンボル列pを生成する。行列計算部103,104及びベクトル加算部105は、上記数式(9)に従って、第2のパリティシンボル列pを生成する。
行列計算部201は、外部からデータシンボル列mを入力する。行列計算部201は、データシンボル列mの左側から行列(−EA+C)を乗算する。即ち、行列計算部201は、上記数式(22)に従って、第1のパリティシンボル列pを計算する。行列計算部201は、第1のパリティシンボル列pを外部へと出力すると共に行列計算部104へと出力する。
行列計算部103は、前述のものと同一または類似である。但し、行列計算部103は、行列計算部201,104と並行して動作してもよいし、これらよりも前に或いは後に動作してもよい。
上記数式(20),(21)を満足するパリティ検査行列Hによれば、Ψ−1=(−EB+D)−1=Iである。従って、符号化装置200は、上記数式(12)に示されるような、行列Ψ−1を用いた行列計算が不要である。行列Ψ−1は、前述の通り、概して疎行列でないから、当該行列Ψ−1を含む行列積の計算複雑度は必ずしも低くない。故に、符号化装置200は、数式(12)の計算を省略できるから、符号化処理の計算複雑度を効果的に低減できる。
以下、上記数式(21)を満足する行列E,Bを設計するための技法を例示する。尚、下記技法に限られず、種々の技法を利用することによって上記数式(21)を満足する行列E,Bを設計してもよい。例えば、非特許文献2の知見を利用することによって上記数式(21)を満足する行列E,Bを設計してもよい。
本技法において、qM行×qM列の巡回シフト行列Sと、qM行×qM列の巡回シフト行列Qとが用いられる。巡回シフト行列S,Qは、夫々、q行×q列のブロック行列をM×M個配列することによって形成される。ブロック行列の各々は、巡回シフト行列または零行列である。従って、巡回シフト行列S,Qの基本行列Ω,Ωは、夫々、下記の数式(23)によって表される。
Figure 0005665725
数式(23)において、要素s,s,・・・,sM−1,u,u,・・・,uM−1は、「0」,「1」,・・・,「q−1」,「∞」のいずれかである。「∞」の要素は、q行×q列の零行列に対応する。「0」,「1」,・・・,「q−1」の要素は、q行×q列の巡回シフト行列に対応する。要素の値は、対応するq行×q列の巡回シフト行列のシフト値を表す。
行列E,Bは、これら巡回シフト行列S,Uを用いて表すことができる。具体的には、行列E,Bの基本行列Ω,Ωは、下記数式(24)によって表すことができる。
Figure 0005665725
本技法によれば、行列EのサイズはqM行×2qM列となり、行列Bのサイズは2qM行×qM列となる。尚、本技法によって設計された行列E,Bが数式(21)を満足することは、容易に確認できる。また、行列Eの各行(または行列Bの各列は)独立なので、任意の行(または列)を除去することによって行列EまたはBの行列サイズを任意に変更できる。つまり、行列Eのサイズを(qM―P)行×2qM列、行列Bのサイズを2qM行×(qM―P)列に変更することができる。ここで、Pは0〜qM−1の整数となるが、行列EまたはBを巡回シフト行列によって構成することを鑑みるとPはqの整数倍であることが望ましい。
q=7,M=3の場合に、本技法によって設計される基本行列Ω,Ω が、下記数式(25),(26)に例示される。
Figure 0005665725
Figure 0005665725
以上説明したように、第2の実施形態に係る符号化装置は、第1の実施形態に係る符号化装置において第1のパリティシンボル列を生成するために必要とされた行列計算の一部を省略できるように設計されたパリティ検査行列を利用する。行列計算の省略部分は、概して疎行列でない行列を含む行列積計算に相当するから、その計算複雑度は必ずしも低くない。従って、この符号化装置によれば、第1の実施形態に係る符号化装置に比べて、符号化処理の計算複雑度を効果的に低減できる。
図8は、第2の実施形態に係る符号化装置に対応するパリティ検査行列の基本行列を例示する。この基本行列は、符号化率2分の1のLDPC符号を定義するパリティ検査行列に対応し、このパリティ検査行列に関してq=493である。この基本行列によって定義されるLDPC符号において、パリティシンボル(パリティビット)1つあたりの生成に要する平均加算回数は6.2回となることから、符号化の計算複雑度が非常に小さく抑えられていることを確認できる。
(第3の実施形態)
第1乃至第2の実施形態に係る符号化装置は、例えば記憶システム、通信システムなどに組み込まれる。第3の実施形態に係る半導体メモリシステムは、第1乃至第2の実施形態に係る符号化装置を組み込む。尚、詳細な説明は省略されるが、第1乃至第2の実施形態に係る符号化装置は、通信システム、光記録システム、磁気記録システムなど、誤り訂正符号を利用可能なあらゆるシステムに組み込まれてよい。
図5に示されるように、第3の実施形態に係る半導体メモリシステム500は、LDPC符号化部501と、不揮発性半導体メモリ502と、LDPC復号部503とを含む。尚、半導体メモリシステム500は、LDPC符号以外の誤り訂正符号を用いてもよい。また、簡単化のために、図5において不揮発性半導体メモリ502へのデータの読み書きを行う機能部が省略されている。しかしながら、半導体メモリシステム500は、係る機能部を必要に応じて備えることができる。
LDPC符号化部501は、第1乃至第2の実施形態に係る符号化装置に対応する。LDPC符号化部501は、前段の処理部(図示しない)からデータを入力し、当該データを構成するデータシンボル列の各々にLDPC符号化処理を行う。即ち、LDPC符号化部501は、データシンボル列にパリティシンボル列を付加してLDPC符号フレーム(即ち、LDPC符号語)を生成する。LDPC符号化部501は、1以上のLDPC符号フレームを束ねてページデータを形成する。LDPC符号化部501は、ページデータを不揮発性半導体メモリ502へと出力する。
前述の通り、LDPC符号化部501は、第1乃至第2の実施形態に係る符号化装置に対応する。故に、LDPC符号化部501は、上記数式(10)または数式(20)に示されるパリティ検査行列H(或いは、このパリティ検査行列Hに行基本変形及び列基本変形の少なくとも一方を任意に施すことによって導出可能な行列)を利用して符号化処理を行う。即ち、LDPC符号化部501は、データシンボル列に基づいて第1のパリティシンボル列を生成し、当該第1のパリティシンボル列及びデータシンボル列に基づいて第2のパリティシンボル列を生成する。
不揮発性半導体メモリ502への書き込み処理及び不揮発性半導体メモリ502からの読み出し処理は、いずれもページデータ単位で行われる。ページデータは、前述の通り、1以上のLDPC符号フレームが束ねられたものである。ページデータのサイズは、不揮発性半導体メモリ502の構成に依存するが、概ね数KB程度である。不揮発性半導体メモリ502は、複数のメモリセルを備える。具体的には、不揮発性半導体メモリ502は、例えば複数のメモリセルがNAND型に接続されたアレイ構造を備えるフラッシュメモリによって実現される。
各メモリセルは、2個以上の閾値電圧が割り当てられ、1ビット以上のデータを記憶できる。各メモリセルが記憶可能なデータ量は、各メモリセルに割り当てられる閾値電圧の総数によって決まる。例えば、1セルあたり2ビットを記憶するフラッシュメモリに関して、各セルには2ビット値のパターン:「00」,「01」,「10」,「11」に応じた4個の閾値が割り当てられる。メモリセルの閾値電圧は、隣接セルとの容量結合などの理由によって、揺らぐことがある。そして、この閾値電圧の揺らぎは、読み出しデータの誤りを引き起こす一因となる。
不揮発性半導体メモリ502は、LDPC符号化部501によって生成されたページデータを入力する。不揮発性半導体メモリ502は、ページデータをメモリセルに記憶する(書き込む)。また、不揮発性半導体メモリ502は、メモリセルに記憶されたページデータを読み出し、これを出力する。尚、前述の通り、閾値電圧の揺らぎなどの要因によって、ページデータは誤りを含んで読み出される可能性がある。
LDPC復号部503は、不揮発性半導体メモリ502によって読み出されたページデータを入力する。LDPC復号部503は、ページデータに含まれる1以上のLDPC符号フレームの各々にLDPC復号処理を行う。LDPC復号処理は、パリティ検査行列を用いた繰り返し復号アルゴリズムによって実現される。繰り返し復号アルゴリズムは、例えば、sum−productアルゴリズム、min−sumアルゴリズムなどである。
LDPC復号部503は、パリティ検査において誤りなしと判定した場合(即ち、復号成功の場合)に、一時推定語からパリティシンボル列を除去してデータシンボル列を生成し、これを後段の信号処理部(図示しない)へと出力する。また、LDPC復号部503は、復号処理の試行回数が最大繰り返し回数に達した場合(即ち、復号失敗の場合)に、データシンボル列を後段の信号処理部(図示しない)へと出力してもよいし、復号の失敗を後段の信号処理部(図示しない)に通知してもよい。
尚、LDPC復号部503は、上記数式(10)または数式(20)に示されるパリティ検査行列H(或いは、このパリティ検査行列Hに行基本変形及び列基本変形の少なくとも一方を任意に施すことによって導出可能な行列)を用いる。
以上説明したように、第3の実施形態に係る半導体メモリシステムは、第1乃至第2の実施形態に係る符号化装置を組み込む。従って、この半導体メモリシステムによれば、書き込み処理の一部である符号化処理を高速化できる。
上記各実施形態の処理は、汎用のコンピュータを基本ハードウェアとして用いることで実現可能である。上記各実施形態の処理を実現するプログラムは、コンピュータで読み取り可能な記憶媒体に格納して提供されてもよい。プログラムは、インストール可能な形式のファイルまたは実行可能な形式のファイルとして記憶媒体に記憶される。記憶媒体としては、磁気ディスク、光ディスク(CD−ROM、CD−R、DVD等)、光磁気ディスク(MO等)、半導体メモリなどである。記憶媒体は、プログラムを記憶でき、かつ、コンピュータが読み取り可能であれば、何れであってもよい。また、上記各実施形態の処理を実現するプログラムを、インターネットなどのネットワークに接続されたコンピュータ(サーバ)上に格納し、ネットワーク経由でコンピュータ(クライアント)にダウンロードさせてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
100,200,300・・・符号化装置
101,102,103,104,201,301,302,306・・・行列計算部
105,305・・・ベクトル加算部
500・・・半導体メモリシステム
501・・・LDPC符号化部
502・・・不揮発性半導体メモリ
503・・・LDPC復号部

Claims (8)

  1. q(N−J)個(q,J,Nは自然数であって、N>J)のシンボルを備えるデータシンボル列を入力し、qJ個のシンボルを備えるパリティシンボル列を前記データシンボル列に付加してqN個のシンボルを備える符号語を生成する符号化装置において、
    前記符号語は、qJ行×qN列のパリティ検査行列を用いたパリティ検査を満足し、
    前記パリティ検査行列において前記パリティシンボル列に対応するqJ行×qJ列の第1の部分行列は、qL行×qL列(Lは自然数であって、J>L)の第1の単位行列とq(J−L)行×qL列の第1の非零行列とを備えるqJ行×qL列の第2の部分行列を含む、
    符号化装置。
  2. 前記前記第1の部分行列は、qL行×q(J−L)列の第2の非零行列とq(J−L)行×q(J−L)列の第2の単位行列とを備えるqJ行×q(J−L)列の第3の部分行列を更に含み、
    前記第1の非零行列及び前記第2の非零行列の行列積は零行列である、
    請求項1の符号化装置。
  3. 前記パリティシンボル列は、q(J−L)個のシンボルを備える第1の部分パリティシンボル列と、qL個のシンボルを備える第2の部分パリティシンボル列とを備え、
    前記第1の部分パリティシンボル列は、前記データシンボル列に基づいて生成され、
    前記第2の部分パリティシンボル列は、前記第1の部分パリティシンボル列及び前記データシンボル列に基づいて生成される、
    請求項1または2の符号化装置。
  4. 前記パリティ検査行列は、J×N個のq行×q列のブロック行列を配列することによって形成され、
    前記ブロック行列の各々は、非零行列及び零行列のいずれか一方である、
    請求項1乃至3のいずれか1項に記載の符号化装置。
  5. 前記ブロック行列の各々は、巡回シフト行列及び零行列のいずれか一方である、
    請求項4の符号化装置。
  6. 前記ブロック行列の各々は、各行に1つだけ非零要素を含む非零行列及び零行列のいずれか一方である、
    請求項4の符号化装置。
  7. L=J−2であり、
    前記第1の非零行列は、2×(J−2)個のq行×q列のブロック行列を配列することによって形成され、
    前記ブロック行列の各々は、非零行列である、
    請求項1または2の符号化装置。
  8. 請求項1または2の符号化装置と、
    前記符号語を記憶する半導体メモリと
    を具備する半導体メモリシステム。
JP2011272624A 2011-12-13 2011-12-13 符号化装置及びこれを用いた半導体メモリシステム Expired - Fee Related JP5665725B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011272624A JP5665725B2 (ja) 2011-12-13 2011-12-13 符号化装置及びこれを用いた半導体メモリシステム
US13/706,663 US8966351B2 (en) 2011-12-13 2012-12-06 Encoding apparatus, encoding method and semiconductor memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011272624A JP5665725B2 (ja) 2011-12-13 2011-12-13 符号化装置及びこれを用いた半導体メモリシステム

Publications (2)

Publication Number Publication Date
JP2013126028A JP2013126028A (ja) 2013-06-24
JP5665725B2 true JP5665725B2 (ja) 2015-02-04

Family

ID=48573199

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011272624A Expired - Fee Related JP5665725B2 (ja) 2011-12-13 2011-12-13 符号化装置及びこれを用いた半導体メモリシステム

Country Status (2)

Country Link
US (1) US8966351B2 (ja)
JP (1) JP5665725B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8972649B2 (en) * 2012-10-05 2015-03-03 Microsoft Technology Licensing, Llc Writing memory blocks using codewords
WO2016185911A1 (ja) * 2015-05-19 2016-11-24 ソニーセミコンダクタソリューションズ株式会社 符号化装置及び符号化方法
US9927990B2 (en) * 2015-09-10 2018-03-27 Toshiba Memory Corporation Memory system, memory controller and memory control method
US10268539B2 (en) * 2015-12-28 2019-04-23 Intel Corporation Apparatus and method for multi-bit error detection and correction

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL8104342A (nl) * 1981-09-21 1983-04-18 Philips Nv Rekenmachinesysteem, gebaseerd op een symboolkorrigerende kode met twee werkmodes.
EP0386506A3 (en) * 1989-03-06 1991-09-25 International Business Machines Corporation Low cost symbol error correction coding and decoding
KR100809619B1 (ko) * 2003-08-26 2008-03-05 삼성전자주식회사 이동 통신 시스템에서 블록 저밀도 패러티 검사 부호부호화/복호 장치 및 방법
JP4386198B2 (ja) 2004-01-20 2009-12-16 日本電気株式会社 検査行列生成方法、データ伝送システム、符号化装置、復号装置および検査行列生成プログラム
US7219289B2 (en) * 2005-03-15 2007-05-15 Tandberg Data Corporation Multiply redundant raid system and XOR-efficient method and apparatus for implementing the same
CN102904583B (zh) * 2007-01-24 2017-06-23 高通股份有限公司 对可变大小分组进行ldpc编码和译码
FR2921529B1 (fr) * 2007-09-21 2009-11-13 Alcatel Lucent Procede de transmission de donnees depuis une infrastructure d'un reseau de radiocommunication vers des equipements utilisateur, et equipements pour la mise en oeuvre du procede
US9141467B2 (en) * 2012-03-23 2015-09-22 Samsung Electronics Co., Ltd. Semiconductor memory system including Reed-Solomon low density parity check decoder and read method thereof

Also Published As

Publication number Publication date
US8966351B2 (en) 2015-02-24
US20130151921A1 (en) 2013-06-13
JP2013126028A (ja) 2013-06-24

Similar Documents

Publication Publication Date Title
JP5509165B2 (ja) 誤り訂正符号化装置、誤り訂正復号装置、不揮発性半導体記憶システム及びパリティ検査行列生成方法
KR102347823B1 (ko) 구조화된 ldpc의 부호화 및 복호화 방법 및 장치
JP4062435B2 (ja) 誤り訂正符号復号装置
US8347170B2 (en) Method and apparatus for performing decoding using LDPC code
KR102274328B1 (ko) 체크 노드 계산유닛을 관리하는 방법, 장치, 및 상기 방법을 실행하기 위한 소프트웨어
EP3110009A1 (en) Encoding method, decoding method, encoding device and decoding device for structured ldpc
US20110131462A1 (en) Matrix-vector multiplication for error-correction encoding and the like
EP1798861B1 (en) LDPC encoding through decoding algorithm
JP2016012945A (ja) 符号化装置、送信装置、符号化方法及び送信方法
JP3810766B2 (ja) エラー訂正のための付加情報生成方法及びその装置
WO2010073922A1 (ja) 誤り訂正符号化装置、復号装置、符号化方法、復号方法、及びそのプログラム
JP2010532129A (ja) パリティ検査行列の生成
JP5665725B2 (ja) 符号化装置及びこれを用いた半導体メモリシステム
US9088302B2 (en) Low-density parity-check code decoder and decoding method
US10606697B2 (en) Method and apparatus for improved data recovery in data storage systems
JP4832447B2 (ja) チャネルコードを用いた復号化装置及び方法
JP4572937B2 (ja) 復号装置および方法、プログラム、並びに記録媒体
KR100550101B1 (ko) 저밀도 패리티 검사 부호의 부호화와 복호 장치 및 그방법
JP5269936B2 (ja) 符号化器及び記憶装置
CN114499541A (zh) 分层译码方法、装置、终端设备及介质
JP2012050008A (ja) 誤り検出訂正方法および半導体メモリ装置
KR101923116B1 (ko) 분산 저장 시스템에서 부분접속 복구 부호를 이용하는 부호화/복호화 장치 및 방법
CN115237662A (zh) 一种分布式存储节点纠错方法及系统
JP4645645B2 (ja) 復号装置及び検査行列生成方法
JP4985843B2 (ja) 復号装置

Legal Events

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

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131205

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131212

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131219

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131226

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20140109

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140207

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140819

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: 20141111

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141209

R151 Written notification of patent or utility model registration

Ref document number: 5665725

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees