JP2016144052A - 復号装置および復号方法 - Google Patents

復号装置および復号方法 Download PDF

Info

Publication number
JP2016144052A
JP2016144052A JP2015018840A JP2015018840A JP2016144052A JP 2016144052 A JP2016144052 A JP 2016144052A JP 2015018840 A JP2015018840 A JP 2015018840A JP 2015018840 A JP2015018840 A JP 2015018840A JP 2016144052 A JP2016144052 A JP 2016144052A
Authority
JP
Japan
Prior art keywords
message
check
unit
check node
nodes
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.)
Pending
Application number
JP2015018840A
Other languages
English (en)
Inventor
義史 西
Yoshifumi Nishi
義史 西
孝生 丸亀
Takao Marugame
孝生 丸亀
祐一郎 三谷
Yuichiro Mitani
祐一郎 三谷
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 JP2015018840A priority Critical patent/JP2016144052A/ja
Priority to US14/924,254 priority patent/US10069515B2/en
Publication of JP2016144052A publication Critical patent/JP2016144052A/ja
Pending legal-status Critical Current

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/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/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • 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/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms

Abstract

【課題】LDPC符号の復号処理をより小規模な構成により実現可能とする。【解決手段】実施形態の復号装置は、符号に応じて定められる変数ノードに対して変数ノード処理を行い第1のメッセージを出力し、符号に応じて定められるチェックノードに対して第1のメッセージに基づきチェックノード処理を行い第2のメッセージを出力し、第2のメッセージのうち一部のメッセージを記憶する。第1のメッセージに含まれるメッセージであって、チェックノードのうち既に記憶される一部のメッセージに対応するチェックノードに転送されるべきメッセージを除外したメッセージをチェックノードに転送し、第2のメッセージを変数ノードに転送すると共に、第2のメッセージのうち一部のメッセージを記憶部に転送する。【選択図】図7

Description

本発明の実施形態は、復号装置および復号方法に関する。
通信システムや記憶装置などに用いられる、強力な誤り訂正符号能力を持った符号方式としてLDPC(Low-Density Parity-Check)符号が知られている。このLDPC符号は、パリティ検査行列を用いて行処理演算および列処理演算と呼ばれるメッセージ値の計算を繰り返し行い、受信語データの事後確率を求めることで復号を行う。LDPC符号は、既存のエラー訂正符号の中で最も理論限界に近いエラー訂正能力を有することから、通信システムや記憶装置において広く用いられている。
一方、近年の不揮発性の半導体記憶装置として主流となっているフラッシュメモリは、メモリセルの微細化や多値化に伴い、読み出し時に発生するエラーが深刻化している。そのため、従来から用いられているBCH符号ではエラー訂正能力不足となってきており、近年では、より高いエラー訂正能力を持つLDPC符号が注目されている。それと共に、エラー訂正方式における世代間の互換性を保つため、LDPC符号の復号回路のオンチップ化技術が求められている。このオンチップ化により、LDPC符号の復号処理を半導体記憶装置が形成されるチップ上の回路で行うことで、半導体記憶装置の見かけ上のエラー発生率を一定以下に抑制することが可能となる。
Ming Gu, and Shantanu Chakrabartty, IEEE Journal of Solid-State Circuits, val. 46, no. 6, pp. 1433-1442 (2011).
ところで、LDPC符号は、確率に基づきエラー訂正を行うため、複雑な実数演算を必要とする。特に、LDPC符号の復号計算におけるチェックノード処理は、確率値の和積計算が必要となり、大きな計算リソースが要求される。したがって、LDPC符号の復号処理をハードウェア化するためには、大規模なディジタル半導体回路が必要となり、オンチップ化が難しい。
そこで、LDPC符号の復号を行う半導体回路の規模を縮小するため、実数を電流で表現してアナログ回路により実数計算処理を行う方法も提案されている。しかしながら、電流によってデータ値を表現する場合、データ処理中は常に電流を流し続ける必要があり、膨大な電力を消費することになってしまうという問題点があった。
このように、従来の技術を用いてLDPC符号にて十分なエラー訂正能力を得るためには、実数計算による復号処理を用いる必要があり、半導体集積回路などを用いた誤り訂正装置の実装が大規模化してしまうという問題点があった。
本発明が解決しようとする課題は、LDPC符号の復号処理をより小規模な構成により実現可能とする復号装置および復号方法を提供することにある。
実施形態の復号装置は、符号に応じて定められる変数ノードに対して変数ノード処理を行い第1のメッセージを出力し、符号に応じて定められるチェックノードに対して第1のメッセージに基づきチェックノード処理を行い第2のメッセージを出力し、第2のメッセージのうち一部のメッセージを記憶する。第1のメッセージに含まれるメッセージであって、チェックノードのうち既に記憶される一部のメッセージに対応するチェックノードに転送されるべきメッセージを除外したメッセージをチェックノードに転送し、第2のメッセージを変数ノードに転送すると共に、第2のメッセージのうち一部のメッセージを記憶する。
図1は、各実施形態に係る復号装置を含むメモリシステムの一例の構成を概略的に示す図である。 図2は、検査行列を表現するタナーグラフの例を示す図である。 図3は、実施形態に適用可能なチェックノード処理を説明するための図である。 図4は、確率伝播法によるLDPC符号の復号処理の流れを概略的に示す図である。 図5は、各実施形態に係る、確率伝播法によるLDPC符号の復号処理の流れを概略的に示す図である。 図6は、各実施形態に係る、一部のチェックノードの更新を休止させた場合の効果について説明するための図である。 図7は、第1の実施形態に係る復号装置の一例の構成を示すブロック図である。 図8は、第1の実施形態に係る、転送を除外するチェックノードの部分集合を各イタレーション間で異ならせる場合を示す図である。 図9は、転送を除外するチェックノードの部分集合を各イタレーション間で異ならせない場合を示す図である。 図10は、第2の実施形態に係る復号装置の一例の構成を示すブロック図である場合。 図11は、既存技術による復号装置の構成の一例を示すブロック図である。 図12は、第3の実施形態に適用可能な通信システムの一例の構成を示す図である。
(各実施形態に共通の構成)
以下、各実施形態に係る復号装置について説明する。各実施形態に係る復号装置は、低密度パリティ検査符号(LDPC code:Low-Density Parity-Check code)の復号を行う。図1は、各実施形態に係る復号装置を含むメモリシステムの一例の構成を概略的に示す。
図1において、メモリシステム1は、メモリ部2と、符号化部3と、復号部4とを含む。入力データ5は、符号化部3に入力されてLDPC符号に符号化され、メモリ部2に供給される。メモリ部2は、例えばコントローラと記憶媒体とを備え、メモリ部2に供給されたLDPC符号は、コントローラにより記憶媒体に書き込まれる。第1の実施形態では、記憶媒体としてフラッシュメモリを用いるものとする。
これらメモリ部2、符号化部3および復号部4は、1つの半導体チップ内に組み込んで構成することができる。これに限らず、メモリ部2、符号化部3および復号部4を、それぞれ個別のハードウェアとして構成することもできる。さらに、符号化部3および復号部4を、CPU(Central Processing Unit)上で動作するプログラムにより構成してもよい。
また、メモリ部2は、例えば外部から読み出し要求を受け取ると、コントローラにより記憶媒体からLDPC符号を読み出す。読み出されたLDPC符号は、復号部4に供給される。復号部4は、供給されたLDPC符号を復号し、元の入力データ5を復元して出力データ6としてメモリシステム1から出力する。
なお、記憶媒体としてフラッシュメモリを用いた場合、情報の読み出しは、閾値電圧がハイかローかによって行われる。
先ず、LDPC符号について説明する。LDPC符号は、検査行列と呼ばれる、成分の大多数が0であり、少数の成分のみが1である疎(Low-Density)な行列によって特徴付けられる符号である。符号長に応じて大きな検査行列が必要となるが、以下では、説明のため検査行列Hを8×4行列であるとして説明する。次式(1)に、検査行列Hの例を示す。
Figure 2016144052
検査行列Hの各行および各列に含まれる1の数を重みと呼び、全ての行および列の重みが0より大きくなるように検査行列を作成する。行重みおよび列重みがそれぞれ一定値である場合、この検査行列を正則と呼ぶ。式(1)に例示した検査行列Hは、行重みが全て4であり、列重みが全て2である正則行列である。
LDPC方式においては、通信路に送る、メモリに格納するなどの処理の対象のデータ列xを、HcT=0となるようなデータ列cに変換する。このデータ列cを符号と呼ぶ。つまり、LDPC方式において情報処理に用いられるデータは、元のデータ列xではなく、変換された符号cである。上述した符号化部3は、入力データ5によるデータ列に対して、この変換処理を施す。メモリ部2は、入力データ5が変換された符号cをフラッシュメモリに書き込む。
一般に、符号cは、データ列xよりデータ長の長いデータ列であり、データ列xに含まれる情報に加えて、エラー訂正に必要な情報が含まれる。一方、符号化自体は、1対1対応の写像であり、データ列xが与えられれば符号cが一意に決まり、逆に、符号cが与えられれば元のデータ列xは一意に決まる。また、(データ列xの長さ)/(符号cの長さ)を符号化率と呼び、符号化率が高い程、効率の良いエラー訂正方法であるといえる。
検査行列Hは、図2に示すタナーグラフで表現できる。タナーグラフは、ノード{c0,c1,…,c7}とノード{f0,f1,f2,f3}とを上下に並べ、検査行列Hの成分hijについて、成分hij=1の場合にのみ、直線で結んだグラフである。タナーグラフにおいて、ノード{ci}を変数ノード、ノード{fj}をチェックノードと呼ぶ。変数ノードciの各ノードは、検査行列Hの各列に対応しており、値が1である行の行番号と、結ばれているチェックノードfjの番号とが一致している。一方、チェックノードfjの各ノードは、検査行列Hの各行に対応しており、値が1である列の列番号と、結ばれている変数ノードciの番号とが一致している。
式(2)は、上述した式(1)の検査行列Hの場合の各変数ノード{ci}および各チェックノード{fj}の例を示す。
Figure 2016144052
次に、LDPC符号における基本的な復号処理について説明する。以下の復号処理は、例えば上述した復号部4にて実行されるものとする。この場合、復号部4は、メモリ部2に格納された符号を読み出して復号し、元のデータを復元する。LDPC符号におけるエラー訂正方法として、確率伝播法(Belief Propagation:BP法)を用いた方法が一般的に知られている。以下、確率伝播法について説明する。
先ず、各変数ノードciは、ある物理量の列y={yi}について、それぞれの値yiに対応するディジタル値が0である確率Q0iを受信する。変数ノードciは、自身が接続するチェックノード{fj,fh,…}にこの確率Q0iをメッセージ{qij,qih,…}として送信する(図3(a)参照)。
なお、物理量の列yは、例えばメモリ部2から読み出されたビット列である。メモリ部2は、記憶媒体としてフラッシュメモリを用いている場合、記憶媒体からのビット列の読み出しの際のしきい値電圧を取得し、取得したしきい値電圧に基づき、読み出したビット列について、確からしさを示す確率をビット毎に求め、しきい値電圧を確率値に変換する。各変数ノードciは、この各ビットの確率値を確率Q0iとして受信することになる。
チェックノードfjは、接続する変数ノード{ci,ck,…}から送信されたメッセージq={qij,qkj,…}を元に、パリティ条件を考慮の上、各変数ノード{ci,ck,…}がディジタルデータ値の1を持つ確率{rji,rjk,…}を計算し、メッセージrijとして各変数ノード{ci,ck,…}に返信する(図3(b)参照)。
ここで、チェックノードfjは、変数ノードciに返送するメッセージrjiを計算する際に、変数ノードci自身からのメッセージqijを含めない。すなわち、変数ノードciは、メッセージrjiによって、自身以外の変数ノードのメッセージを受け取ることになる。より具体的には、チェックノードfjは、次式(3)に従いチェックノード処理を行い、メッセージrjiの計算を行う。なお、式(3)において、値A(j)は、チェックノードfjに接続する変数ノードの添字{i,k,…}の集合である。
Figure 2016144052
変数ノードciは、接続する各々のチェックノード{fj,fk,…}から受け取ったメッセージ(確率){rji,rki,…}に基づき変数ノード処理を行う。
すなわち、変数ノードciは、メッセージ{rji,rki,…}と、自身の持つ確率Q0iとを用いて、受信したデータが元々0であった確率Q’iを計算する。変数ノードciは、計算の結果、確率Q’iが1/2以上であれば、受信データの値が1であると仮定し、確率Q’iが1/2未満であれは、受信データの値が0であると仮定する。
LDPC方式によるエラー訂正では、この仮定値を用いてパリティチェックを行う。より具体的には、仮定値の列ctemp={c0temp,c1temp,…}に対して、Hctemp T=0となるか否かを判定する。若し、Hctemp T=0であれば、仮定値ctempが格納されていたディジタルデータ列であると推定し、計算を終了する。一方、Hctemp T=0でなければ、変数ノードciは、メッセージq={qij,qkj,…}を再計算し、計算結果をチェックノード{fj,fk,…}に送信する(図3(b)参照)。
変数ノードciにおける計算は、具体的には、下記の式(4)のようになる。
Figure 2016144052
ここで、式(4)中の値B(i)は、変数ノードciに接続するチェックノードfの添字{j,k,…}の集合である。また、値Kは、下記の式(5)を満たすように決定される規格化定数である。
Figure 2016144052
ここで、変数ノードciからチェックノードfjに送信されるメッセージqijは、確率Q01と確率{rki,rli,…}を元に計算した、「変数ノードciのディジタルデータ値が1である確率」であり、チェックノードfjからのメッセージrjiは含まれない。すなわち、チェックノードfjは、メッセージqijにより自身以外のチェックノードのメッセージを受け取ることになる。
メッセージqを受け取ったチェックノードは、受け取ったメッセージqを元にメッセージ(確率)rを計算して、変数ノードに返送する。以上のアルゴリズムを、パリティ条件が満たされるまで繰り返し実行する。すなわち、計算したメッセージrを用いて仮定値の列ctempを更新し、更新した仮定値の列ctempに対して、Hctemp T=が0になるまで、アルゴリズムを繰り返す。
各実施形態においては、変数ノードがメッセージqを計算してチェックノードに送信し、チェックノードからメッセージrを受信するまでをエラー訂正処理の単位とし、その単位を「イタレーション」と呼ぶことにする。
図4は、上述した、確率伝播法によるLDPC符号の復号処理の流れを概略的に示す。なお、図4は、検査行列Hとして式(1)に例示した4行8列の行列を用いた例である。すなわち、図4では、8個の変数ノード{c1,c2,c3,c4,c5,c6,c7}を含む変数ノードciと、4個のチェックノード{f0,f1,f2,f3}を含むチェックノードfjとが示されている。
図4において、ステップS1で、変数ノードciは、例えばメモリ部2から読み出された8ビットの読み出しビットそれぞれに対応する確率Q0iをそれぞれ受信する。変数ノードciは、受信した各確率Q0iに基づき仮定値の列ctempを更新すると共に、各確率Q0iをメッセージqijとして、検査行列Hに従いチェックノードfjに振り分ける(ステップS2)。
チェックノードfjは、受信した各メッセージqijに基づき式(3)に従いチェックノード処理を行い(ステップS3)、結果をメッセージrjiとして、検査行列Hに従い変数ノードciに返送する(ステップS4)。各メッセージrjiは、変数ノードciに受信される(ステップS5)。
変数ノードciは、受信した各メッセージrjiに基づき変数ノード処理を行う。変数ノードciは、変数ノード処理の結果、仮定値の列ctempに対してHcT=0とならないと判定した場合、メッセージqijを再計算する。
変数ノードciは、再計算したメッセージqijをチェックノードfjに送信し(ステップS6)、チェックノードfjは、受信したメッセージqijに基づきチェックノード処理を行い(ステップS7)、結果のメッセージrjiを変数ノードciに送信する(ステップS8)。このメッセージrjiは、変数ノードciに受信される(ステップS9)。変数ノードciは、受信したメッセージrjiに基づき仮定値の列ctempを更新する。
以降、ステップS5での変数ノードciにおけるメッセージqijの計算から、ステップS9でのチェックノードfjにおけるメッセージrjiの受信までの処理を繰り返し単位として、パリティ条件が満たされるまで処理が繰り返される。この繰り返し単位が、上述したイタレーションに相当する。
なお、受信した各確率Q0iに基づく仮定値の列ctempの更新および各確率Q0iのチェックノードfjへの送信の処理から、ステップS5でのメッセージrjiの受信までの処理も、上述の繰り返し単位の処理と同等の処理であると見做す。
(各実施形態によるエラー訂正処理の詳細)
確率伝播法によるエラー訂正処理では、上述した通り、変数ノードとチェックノードとの間で確率値のやり取りを行うことによって、変数ノードにおける元データを推定するための確率Q’を計算している。一連の処理において最終的に必要な情報は、確率Q’が1/2より大きいか否かという情報であり、具体的な値の詳細については、重要性が低い。そのため、変数ノード処理およびチェックノード処理における確率の計算は、厳密である必要性が低いといえる。特に、変数ノード処理における確率計算は、各チェックノードから送信されたメッセージを相乗して行われるため、1つのチェックノードからのメッセージが最終的な結果に与える影響はそれほど大きくないと考えられる。
したがって、変数ノードに送信されるチェックノードからのメッセージは、イタレーション毎に更新される一方で、チェックノードの一部でこの更新がなされなかったとしても、最終的な結果に大きな影響は及ぼさないと考えられる。
各実施形態では、この点を考慮して、イタレーションにおいて、各チェックノード{f0,f1,…}のうち一部のチェックノードの更新を休止させ、チェックノード処理を休止させる。更新を休止させるチェックノードは、連続するイタレーション間で異ならせるようにする。休止させるチェックノードから変数ノードに送信されるべきメッセージは、前回のイタレーションの際に当該チェックノードにおいて計算されたメッセージをメモリなどに記憶させておき、このメモリに記憶されたメッセージで代替する。
このように、イタレーションにおいて各チェックノード{f0,f1,…}のうち一部のチェックノードの更新を休止させることで、チェックノード処理を行うための構成を削減することができる。また、チェックノード処理を行うための構成によっては、チェックノード処理をより高速に実行することが可能となる。
図5は、各実施形態に係る、確率伝播法によるLDPC符号の復号処理の流れを概略的に示す。なお、図5において、上述した図4と同様に、検査行列Hとして式(1)に例示した4行8列の行列を用い、8個の変数ノード{c1,c2,c3,c4,c5,c6,c7}を含む変数ノードciと、4個のチェックノード{f0,f1,f2,f3}を含むチェックノードfjとが示されている。また、図5において、更新を休止させるチェックノードfjは、斜線および「休」の文字を付して示している。
なお、変数ノードおよびチェックノードは、実際には、メモリやレジスタといった記憶媒体を用いて構成される。
第kイタレーションでは、チェックノードf0の更新を休止させる。すなわち、第kイタレーションでは、チェックノードf0は、変数ノードciからのメッセージqijを受け取らず、値すなわち確率r0i)の更新は行わない。チェックノードf0から変数ノードciへ返送するメッセージr0iは、第k−1イタレーションにおいて得られた、別途記憶しているメッセージr0iで代替する。
第kイタレーションにおいて、その他のチェックノードf1〜f3は、通常通り値の更新を行い、メッセージを変数ノードciに返送する。また、次の第k+1イタレーションにおいて値の更新を行わないチェックノードf1のメッセージr1iは、別途メモリに記憶する。
同様に、第k+1、第k+2および第k+3イタレーションでは、それぞれチェックノードf1、f2およびf3の更新が休止される。したがって、第k+1、第k+2および第k+3イタレーションでは、各チェックノードf1、f2およびf3は、変数ノードciからのメッセージqijは受け取らず、値の更新も行わない。これらのチェックノードf1、f2およびf3から変数ノードciへ返送すべきメッセージは、直前のイタレーションにおいて記憶していた値で代替し、且つ、次のイタレーションで更新を行わないチェックノードのメッセージは別途メモリに記憶する。
このように、各イタレーションにおいて各チェックノードf0〜f3のうち一部のチェックノードの更新を休止させることで、チェックノード処理を、検査行列Hにより規定されるチェックノード数よりも少ないチェックノード数で実行することができる。これにより、チェックノード処理による計算量(並列度)を削減し、回路規模を縮小することが可能となる。
なお、図5の例では、第k−1イタレーションは、イタレーションを繰り返す繰り返し処理の最初のイタレーションである。この最初のイタレーションにおける処理は、図4のステップS1〜ステップS5における処理と略同様である。すなわち、第k−1イタレーションでは、変数ノードciは、例えばメモリ部2から読み出しビットそれぞれに対応する確率Q0iを受信し、仮定値の列ctempの更新およびメッセージqijの各チェックノードf0〜f3への送信を行う。
このとき、全てのチェックノードf0〜f3にメッセージqijを送信し各チェックノードf0〜f3でチェックノード処理を行うと、チェックノード処理の削減の効果が十分に得られないことになる。
そこで、この最初のイタレーションにおいては、次のイタレーション(図5の例では第kイタレーション)で更新を休止させないチェックノード(例えばチェックノードf3)に対してメッセージqijを送信せず、当該チェックノードの更新を休止させる。そして、当該チェックノードから変数ノードciに送信すべきメッセージrjiは、例えばメモリに予め記憶されている固定値を用いる。固定値としては、例えば1/2を用いることが考えられる。固定値は、1/2に限定されず、確率の値として利用可能な値であればよい。
次に、図6を用いて、各実施形態に係る、チェックノードのうち一部のチェックノードの更新を休止させた場合の効果について説明する。図6は、LDPC符号によるエラー訂正処理において、最初のイタレーションを除く各イタレーションにおいてチェックノード更新の休止率を異ならせた場合のエラービット数の例を示す。なお、図6は、符号長1k(キロ)ビットのLDPC符号によりエラー訂正を行った例である。更新を休止したチェックノードは、直前のイタレーションにおいて記憶された値で代替している。
図6において、「○(丸印)」は休止率が0、「*(星印)」、「×(バツ印)」、「△(三角印)」、「□(四角印)」および「◇(菱型印)」は、それぞれ休止率が1/10、2/10、3/10、4/10および5/10を示す。また、図6において、縦軸はエラー訂正処理を行った結果の平均エラービット数、横軸はイタレーションの回数をそれぞれ示す。
チェックノード更新の休止率が3/10以下の場合、イタレーションを繰り返すことで平均エラービット数が減少してゆくことが分かる。一方、チェックノード更新の休止率が4/10以上では、イタレーションを繰り返しても平均エラービット数が減少せず、エラーフロアの現象が生じる。
なお、更新を休止するチェックノードは、イタレーション毎に異ならせることが望ましく、各チェックノードの更新の休止率は、全てのチェックノードで同程度であることが望ましい。チェックノード更新の休止率にチェックノード間で偏りがあると、一部の変数ノードでエラーが訂正されにくくなるおそれがあるからである。
図6に示すエラー訂正処理においては、各変数ノードに3つのチェックノードが接続されている検査行列を用いた。図3および式(3)を用いて説明したように、変数ノードからチェックノードへ送るメッセージは、そのチェックノードを除く、残りのチェックノードから返送されたメッセージを利用している。したがって、図6の例の場合、1つのチェックノードに送られるメッセージは、別の2個のチェックノードの情報を元にしている。
更新を休止するチェックノード数が全体のチェックノード数の1/3である場合は、この2個のチェックノードのうち1個が更新を休止している。一方、更新を休止するチェックノード数が全体のチェックノード数の1/3を超える場合は、2個のチェックノードの両方が休止している状態が生じる。この場合、変数ノードからチェックノードへ返送するメッセージの更新も行われないため、エラー訂正が適切に行われなくなる。図6において、休止率が4/10および5/10においてエラーフロアが現れるのは、このためである。
ここで、各イタレーションにおいて、全体のチェックノードのうち一部のチェックノードで更新を休止する場合の、チェックノードの休止率について考える。なお、各変数ノードに接続されているチェックノード数の平均値をN個(N>2)とする。上述のように、各変数ノードにおいて更新を休止するチェックノード数の、チェックノード数の総数に対する割合が(N−2)/Nを越える場合、変数ノードからチェックノードへ返信するメッセージの更新が行われない状態が生じ、適切なエラー訂正ができなくなるおそれがある。したがって、各変数ノードにおいて更新を休止するチェックノード数の全チェックノード数に対する割合は、(N−2)/N以下であることが望ましい。
(第1の実施形態)
図7は、第1の実施形態に係る復号装置の一例の構成を示す。図7において、復号部4は、変数ノード処理部40と、第1転送部41と、チェックノード処理部42と、第2転送部43と、振り分け制御部44と、メッセージ記憶部45とを含む。また、メモリ部2は、メモリ20と、閾値読み出し部21と、閾値・確率変換部22と、初期確率記憶部23とを含む。
復号部4をハードウェアで構成する場合、復号部4に含まれる各部は、例えば1つの半導体チップ上に構成される。これに限らず、復号部4に含まれる各部の一部または全部を個別のハードウェアによって構成してもよい。また、メッセージ記憶部45は、例えば、書き換え可能な不揮発性メモリと、当該不揮発性メモリに対するデータの読み書きを行うための構成とを含む。メモリ部2についても同様に、メモリ部2に含まれる各部は、例えば1つの半導体チップ上に構成される。また、メモリ部2に含まれる各部の一部または全部を個別のハードウェアによって構成することもできる。
なお、復号部4およびメモリ部2は、例えば、これら復号部4およびメモリ部2が含まれるメモリシステム1の上位の構成からの制御に従い動作する。これに限らず、メモリシステム1にコントローラを設け、復号部4およびメモリ部2は、このコントローラにより動作が制御されるようにしてもよい。また、以下では、説明のため、検査行列Hにより定められるチェックノード数が6個であるものとする。
メモリ部2において、メモリ20は、記憶媒体であり、例えばフラッシュメモリである。閾値読み出し部21は、メモリ20からの読み出しの際のしきい値電圧を取得する。閾値・確率変換部22は、閾値読み出し部21に取得された閾値電圧に基づき、読み出したビット列について、確からしさを示す確率をビット毎に求め、閾値電圧を確率に変換する。閾値・確率変換器22で求められた各ビットの確率値は、初期確率記憶部23に記憶される。
復号部4において、変数ノード処理部40は、初期確率記憶部23に記憶された確率値または後述する第2転送部43から送信されるメッセージ(確率値)rjiに基づき変数ノード処理を行い、確率Q0iを算出する。変数ノード処理部40は、算出した各確率Q0iをメッセージqijとして、それぞれ第1転送部41に送信する。
第1転送部41は、変数ノード処理部40からメッセージqijを受信すると、その旨を振り分け制御部44に通知する。また、第1転送部41は、振り分け制御部44の制御に従い、メッセージqijのうちチェックノード処理部42においてチェックノード処理を行うべきメッセージを選択してチェックノード処理部42に転送する。
チェックノード処理部42は、検査行列Hに応じて予め定められたチェックノード数未満の数のチェックノードに対するチェックノード処理を行い、確率rijを算出する。例えば、チェックノード処理部42は、検査行列Hに応じて予め定められた6個のチェックノード数に対し、4個のチェックノードに対するチェックノード処理を行う。チェックノード処理部42は、チェックノード処理により算出された確率rjiによりチェックノードを更新し、当該確率rjiをメッセージrjiとして第2転送部43に送信する。
第2転送部43は、振り分け制御部44の制御に従い、チェックノード処理部42から送信されたメッセージrjiのうち指定された一部のメッセージをメッセージ記憶部45に記憶する。この例では、検査行列Hに応じて予め定められた6個のチェックノードに対し、4個のチェックノードに対するチェックノード処理を行うため、少なくともその差分の2個のチェックノードに対応するメッセージをメッセージ記憶部45に記憶する。
また、第2転送部43は、振り分け制御部44の制御に従い、チェックノード処理部42から送信されたメッセージrjiと、メッセージ記憶部45に前回のイタレーションにおいて記憶されたメッセージとを、それぞれ適切な変数ノードに供給されるように、変数ノード処理部40に送信する。変数ノード処理部40は、変数ノード毎に確率Q0i’を算出して仮定値の列ctempを求める。
判定部46は、変数ノード処理部40で求められた仮定値の列ctempに対してHctemp=0が成り立つか否かを判定する。判定部46は、成り立つと判定した場合、変数ノード毎に算出された確率Q0iをそれぞれビット値に変換して、例えばこのメモリシステム1の上位の構成に対して出力する。成り立たないと判定した場合は、その旨を上位構成に対して通知する。
次に、振り分け制御部44における第kイタレーションの処理について、より詳細に説明する。振り分け制御部44は、第1転送部41から、メッセージqijを受け取った旨の通知を受けると、受け取った各メッセージqijの転送先を判定し、チェックノード処理部42における判定した転送先に各メッセージqijを転送する。
このとき、振り分け制御部44は、全てのチェックノードfjのうち一部のチェックノードを含む部分集合Aに属するチェックノードfAに送るべきメッセージqiAをチェックノード処理部42に転送しないように、第1転送部41を制御する。換言すれば、振り分け制御部44は、全てのチェックノードfjに送るべきメッセージqijから部分集合Aに含まれるチェックノードfAに送るべきメッセージqiAを除外したメッセージ(メッセージqi(j-A)とする)をチェックノード処理部42に転送する。これにより、チェックノードfAに対するチェックノード処理が休止され、チェックノードfAの更新が行われないようになる。
第1転送部41は、この制御に従い、メッセージqi(j-A)をチェックノード処理部42に転送する。
チェックノード処理部42は、それぞれのチェックノードに対応するチェックノード処理を行う。ここで、部分集合Aに属するチェックノードfAに送るべきメッセージqiAは、チェックノード処理部42に転送されていないため、チェックノード処理部42は、部分集合Aに属するチェックノードfAに対応する処理を行わない。チェックノード処理部42は、チェックノード処理によって生成したメッセージr(j-A)iを第2転送部43に送信する。このメッセージr(j-A)iは、全てのチェックノードfjのうちチェックノードfAを除外したチェックノードに対するチェックノード処理により生成されたメッセージである。
振り分け制御部44は、メッセージ記憶部45から、前回のイタレーション(この場合は第k−1イタレーション)において記憶した部分集合AによるメッセージrAi’を読み出すように第2転送部43を制御する。この、メッセージ記憶部45から読み出したメッセージrAi’は、第kイタレーションでチェックノード処理部42において除外され転送されなかったメッセージrAiの代替のメッセージとなる。
なお、1回目のイタレーション(第1イタレーション)による処理の実行にあたり、メッセージ記憶部45に対して、初期値となるメッセージを予め記憶させておく。この初期値となるメッセージは、確率値として利用可能な値であれば、特に限定されない。例えば、1/2を初期値としてメッセージ記憶部45に記憶させておくことが考えられる。
振り分け制御部44は、メッセージ記憶部45から読み出したメッセージrAi’と、チェックノード処理部42から転送されたメッセージr(j-A)iとを、変数ノード処理部40に転送するように、第2転送部43を制御する。このとき、振り分け制御部44は、これらメッセージrAi’およびメッセージr(j-A)iの転送先を判定し、変数ノード処理部40における判定した転送先に各メッセージを転送するように、第2転送部43を制御する。
また、振り分け制御部44は、全てのチェックノードfjのうち、次の第k+1イタレーションの際にチェックノード処理を休止する、部分集合Bに属するチェックノードfBから送られたメッセージ(メッセージrBiとする)をメッセージ記憶部45に記憶させるように、第2転送部43を制御する。
一例として、振り分け制御部44は、上述した図5に示されるように、第kイタレーション、第k+1イタレーション、…において、チェックノードf0、チェックノードf1、…のように、各チェックノードf0〜f3から、チェックノード処理を休止させるチェックノードを順次に選択することができる。これに限らず、振り分け制御部44は、乱数などを用い、チェックノード処理を休止させるチェックノードを、各チェックノードf0〜f3からランダムに選択してもよい。さらに、振り分け制御部44は、予め作成されたテーブルに従い、チェックノード処理を休止させるチェックノードを選択してもよい。
第2転送部43は、これらの制御に従い、メッセージrAi’およびメッセージr(j-A)iを変数ノード処理部40の判定した転送先に転送すると共に、メッセージrBiをメッセージ記憶部45に記憶させる。
変数ノード処理部40は、第2転送部43から受信したメッセージrAi’およびメッセージr(j-A)iを用いて、各変数ノードにおいてビットが0(または1)である確率Q0i’の値をそれぞれ計算する。変数ノード処理部40は、算出した各確率Q0i’の値を、判定部46に送信する。変数ノード処理部40が各確率Q0i’の値を判定部46に送信する処理までが、第kイタレーションの処理である。
判定部46は、各確率Q0i’の値に基づき、計算が収束したか否かを判定する。すなわち、判定部46は、各確率Q0i’の値に基づき、仮定値の列ctempに対してHctemp Tの値が収束したか否かを判定する。収束したと判定した場合、各確率Q0i’の値をそのまま、またはビット値に変換して上位構成に対して出力する。
一方、収束していないと判定した場合、その旨を示す通知を例えば上位構成に送信する。この場合、上位構成からの制御により、次の第k+1イタレーションの処理が開始される。
第k+1イタレーションでは、振り分け制御部44は、変数ノード処理部40からのメッセージqijが第1転送部41に受信されると、受信したメッセージqijの転送先を判定する。そして、振り分け制御部44は、全てのチェックノードfjのうち一部のチェックノードを含み、且つ、上述の部分集合Aと異なる部分集合Bに属するチェックノードfBに送るべきメッセージqiBを除外したメッセージ(メッセージqi(j-B)とする)をチェックノード処理部42の適切なチェックノードに転送するように、第1転送部41を制御する。
以上のように、第1の実施形態に係る復号部4は、変数ノード処理部40からチェックノード処理部42に送るメッセージqijのうち、一部のチェックノードへ送るべきメッセージを除外してチェックノード処理部42に送る。そして、復号部4は、メッセージ記憶部45に記憶している過去のメッセージを、除外したメッセージに対して代替して変数ノード処理部40で利用するようにしている。これにより、第1の実施形態に係る復号部4では、チェックノード処理の計算量を低減することができ、既存の構成と比較して、チェックノード処理部42の回路規模を小さくすることができる。
ところで、上述した構成において、第1転送部41が転送を除外するチェックノードの部分集合は、各イタレーション間で異ならせるようにすると好ましい。さらに、連続するイタレーション間では、第1転送部41が転送を除外するチェックノードの部分集合が互いに重複部分を持たないようにすると、より好ましい。
以下、このことについて、図8および図9を用いてより具体的に説明する。なお、図8および図9において、チェックノードは、互いに重複部分を持たない4個の部分集合20210、20211、20212および20213に分割されている。なお、図8および図9において、チェックノード処理が休止される部分集合は、斜線を付して示している。
図8は、第1の実施形態に係る復号処理を概略的に示す。第1の実施形態では、上述したように、イタレーション間で、チェックノード処理を休止させるチェックノードを異ならせている。
図8の例では、第kイタレーションのチェックノード処理2021において、部分集合20213に対するチェックノード処理が休止され、部分集合20213に含まれるチェックノードの更新が行われない。一方、他の部分集合20210〜20212については、チェックノード処理が実行されチェックノードが更新される。このチェックノードが更新された部分集合20210〜20212に対するチェックノード処理により生成された各メッセージが、次の第k+1イタレーションにおける変数ノード処理2002に送られる。
また、変数ノード処理2002に対して、第kイタレーションで更新が行われなかった部分集合20213に対する、前回の第k−1イタレーションでのチェックノード処理により生成され記憶されたメッセージ2011が、第kイタレーションにおける部分集合20213に対応するメッセージの代替メッセージとして変数ノード処理2002に送られる。
さらに、第kイタレーションにおいて、次の第k+1イタレーションで更新を行わない部分集合20213に対するチェックノード処理により生成されたメッセージ2012が記憶される。
第k+1イタレーションにおいて、チェックノード処理2021で生成された部分集合20210〜20212によるメッセージと、記憶されたメッセージ2011とを用いて変数ノード処理2002が実行される。変数ノード処理2002で生成された各メッセージは、チェックノード処理2022に送られる。
チェックノード処理2022では、第kイタレーションにおいてチェックノート処理が休止された部分集合20213と異なる部分集合20212に対するチェックノード処理が休止され、部分集合20212に含まれるチェックノードの更新が行われない。一方、他の部分集合20210、20211および20213については、チェックノード処理が実行されチェックノードが更新される。このチェックノードが更新された部分集合20210、20211および20213に対するチェックノード処理により生成された各メッセージが、次の第k+2イタレーションにおける変数ノード処理2003に送られる。
また、変数ノード処理2003に対して、第k+1イタレーションで更新が行われなかった部分集合20212に対する、前回の第kイタレーションでのチェックノード処理により生成され記憶されたメッセージ2012が、第kイタレーションにおける部分集合20212に対応するメッセージの代替メッセージとして変数ノード処理2003に送られる。さらに、第k+1イタレーションにおいて、次の第k+2イタレーションで更新を行わない部分集合20211に対するチェックノード処理により生成されたメッセージ2013が記憶される。
このように、第1の実施形態に係る復号処理では、変数ノード処理200x(添字xは、1、2、…)からチェックノード処理202xにメッセージを転送する際に、一部のチェックノードへ送られるべきメッセージを転送しない。したがって、当該一部のチェックノードの更新は行われず、前回のイタレーションにおいて記憶されたメッセージが代替メッセージとして変数ノード処理200xに転送される。
図9は、イタレーション間で同一のチェックノードのチェックノード処理を休止させる例を示す。なお、図9において、上述した図8と共通する部分には同一の符号を付して、詳細な説明を省略する。
図9の例では、各イタレーションの各チェックノード処理2021、2022および2023において、同一の部分集合20213に対するチェックノード処理を休止させている。この場合、例えば第k+1イタレーションにおける代替用に記憶させるためのメッセージ2012(図8参照)を第kイタレーションで生成することができない。そのため、第k+1イタレーションにおける変数ノード処理2002では、第kイタレーションと同じメッセージ2011を使うことになる。この場合、計算が収束しにくくなり、エラーフロアが生じるおそれがある。
したがって、第kイタレーションにおいて更新されないチェックノードの集合CKと、第k+1イタレーションにおいて更新されないチェックノードの集合Ck+1は、異ならせることが望ましい。また、チェックノードの集合Ckと集合Ck+1との間で共通部分が存在する場合、共通部分に属するチェックノードの更新頻度が低下するため、計算が収束しにくくなるおそれがある。したがって、集合Ckと集合Ck+1との間で共通部分を持たないことが望ましい。
さらに、更新されないチェックノードに偏りが発生しないように、各チェックノードのメッセージが過去のイタレーションにおいて記憶されたメッセージによって代替される頻度は、全てのチェックノード間で一定であることが望ましい。例えば、当該代替される頻度が、イタレーション回数が大きくなる極限において全てのチェックノードにおいて等しくなるように、チェックノード処理を休止させるチェックノードを各イタレーション間で振り分ける。チェックノード処理を休止させるチェックノードは、各イタレーション間で順次に選択してもよいし、乱数などを用いてランダムに選択してもよい。また、予め作成したテーブルに従い、チェックノード処理を休止させるチェックノードを選択してもよい。
(第2の実施形態)
次に、第2の実施形態について説明する。第2の実施形態は、図7を用いて説明した第1の実施形態に係るチェックノード処理部42において、それぞれ式(3)に示したチェックノードの演算を実行する複数のチェックノード演算部を並列に設けた例である。
図10は、第2の実施形態に係る復号装置の一例の構成を示す。なお、図10において、上述した図7と共通する部分には同一の符号を付して、詳細な説明を省略する。また、以下では、説明のため、検査行列Hにより定められるチェックノード数が6個であるものとする。
図10の例では、チェックノード処理部42’は、検査行列Hにより定められるチェックノード数より少ない、4個のチェックノード演算部4201、4202、4203および4204を含む。したがって、各イタレーションにおけるチェックノードの更新の休止率は、1/3となる。各チェックノード演算部4201、4202、4203および4204は、イタレーション毎に1回または複数回のチェックノード演算を行う。
振り分け制御部44は、第1転送部41から、メッセージqijを受け取った旨の通知を受けると、受け取った各メッセージqijの転送先を判定する。そして、振り分け制御部44は、転送先の判定結果に従い、各メッセージqijを各チェックノード演算部4201、4202、4203および4204に転送するように第1転送部41を制御する。このとき、振り分け制御部44は、各メッセージqijのうち2個のチェックノードに送るべきメッセージqi2をチェックノード処理部42’に転送しないように、第1転送部41を制御する。
第1転送部41は、この制御に従い、メッセージqijからメッセージqi2を除外したメッセージqi(j-2)をチェックノード処理部42’に転送する。各メッセージqi(j-2)は、各チェックノード演算部4201、4202、4203および4204にそれぞれ転送される。
チェックノード処理部42’において、各チェックノード演算部4201、4202、4203および4204は、転送された各メッセージqi(j-2)に基づきそれぞれチェックノード処理を行う。チェックノード処理部42’は、各チェックノード演算部4201、4202、4203および4204により算出されたメッセージr(j-2)iを第2転送部43に転送する。
振り分け制御部44は、メッセージ記憶部45から、前回のイタレーションにおいて記憶した、2個のチェックノードによるメッセージrji’を読み出すように第2転送部43を制御する。この、メッセージ記憶部45から読み出したメッセージrji’は、今回のイタレーションでチェックノード処理部42において除外され転送されなかったメッセージの代替のメッセージとなる。
振り分け制御部44は、メッセージ記憶部45から読み出したメッセージrji’と、チェックノード処理部42から転送されたメッセージr(j-2)iとを変数ノード処理部40に転送するように、第2転送部43を制御する。このとき、振り分け制御部44は、これらメッセージrAi’およびメッセージr(j-A)iの転送先を判定し、変数ノード処理部40における判定した転送先に各メッセージを転送するように、第2転送部43を制御する。
また、振り分け制御部44は、全てのチェックノードfjのうち、次のイタレーションの際にチェックノード処理を休止する2個のチェックノードから送られたメッセージをメッセージ記憶部45に記憶させるように、第2転送部43を制御する。
第2転送部43は、これらの制御に従い、メッセージrji’およびメッセージr(j-2)iを変数ノード処理部40の判定した転送先に転送すると共に、次のイタレーションにおいてチェックノード処理を休止させる2個のチェックノードから送られたメッセージをメッセージ記憶部45に記憶させる。
図11は、既存技術による復号装置の構成の一例を示す。なお、図11において、図7および図10と共通する部分には同一の符号を付して、詳細な説明を省略する。図11に例示されるように、既存技術による復号部4”では、チェックノード処理部101は、検査行列Hにより予め定められるチェックノード数に応じた数(この例では6個)のチェックノード演算部1011、1012、…、1016を備える必要があった。
図10に示すチェックノード演算部4201〜4204、および、図11に示すチェックノード演算部1011〜1016は、それぞれ上述した式(3)の演算を行う。この式(3)は、(変数ノード数−1)回の乗算を行う総乗演算であり、変数ノード数によっては大きな回路規模が必要となる可能性がある。
第2の実施形態では、検査行列Hにより予め定められるチェックノード数よりも少ない数のチェックノード演算部でチェックノード処理が可能であるため、既存技術による構成に対して、チェックノード処理部の回路規模を小さくすることができる。より具体的には、各イタレーションにおいて、全チェックノード数をC個とし、チェックノード演算部が式(3)によるチェックノードの計算を行う平均回数をL回(但し、L<2×C)とすれば、第2の実施形態に係る構成では、チェックノード演算部の数をC/L(個)よりも少なくすることができる。したがって、第2の実施形態に係る構成では、チェックノード処理部の回路規模を、既存の構成と比べて小さくすることができる。
(第3の実施形態)
次に、第3の実施形態について説明する。上述では、各実施形態が図1のメモリシステム1の復号部4に適用されるように説明したが、これはこの例に限定されない。すなわち、上述の各実施形態は、有線または無線の通信路上でデータの送受信を行う通信システムに適用することも可能である。
図12は、第3の実施形態に適用可能な通信システムの一例の構成を示す。図12において、入力データ5’が符号化部3’に入力され、LDPC符号に符号化される。符号化されたLDPC符号は、変調部7において通信路8に適した方式で変調され、変調信号として通信路8に送信される。復調部9は、通信路8を介して送信された変調信号を受信して復調し、ディジタルデータとして復号部4’に供給する。このとき、復調部9は、受信信号に関する情報を復号部4’に渡す。復号部4’は、復調部9から渡された受信信号に関する情報に基づき、復調部9から供給されたディジタルデータのビット毎の確率値を求める。そして、復号部4’は、求めた確率値に基づき各実施形態で説明したようにしてLDPC符号を復号し、入力データ5’を復元する。復号部4’は、復元したデータを出力データ6’として出力する。
このように、通信路8を介して情報の送受信を行う通信システムにおいても、LDPC復号においてチェックノード処理を行うチェックノード処理部の回路規模を、既存の構成と比べて小さくすることができる。
なお、本発明は上述した各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、各実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
1 メモリシステム
2 メモリ部
3,3’ 符号化部
4,4’,4” 復号部
8 通信路
20 メモリ
21 閾値読み出し部
22 閾値・確率変換部
23 初期確率記憶部
40 変数ノード処理部
41 第1転送部
42,42’ チェックノード処理部
43 第2転送部
44 振り分け制御部
45 メッセージ記憶部
46 判定部
2001,2002,2003 変数ノード処理
2011,2012,2013 メッセージ
2021,2022,2023 チェックノード処理
20210,20211,20212,20213 部分集合
4201,4202,4203,4204 チェックノード演算部

Claims (13)

  1. 符号に応じて定められる変数ノードに対して変数ノード処理を行い第1のメッセージを出力する変数ノード処理部と、
    前記符号に応じて定められるチェックノードに対して前記第1のメッセージに基づきチェックノード処理を行い第2のメッセージを出力するチェックノード処理部と、
    前記第2のメッセージのうち一部のメッセージを記憶する記憶部と、
    前記第1のメッセージに含まれるメッセージであって、前記チェックノードのうち既に前記記憶部に記憶された前記一部のメッセージに対応するチェックノードに転送されるべきメッセージを除外したメッセージを前記チェックノードに転送する第1転送部と、
    前記第2のメッセージを前記変数ノードに転送すると共に、前記第2のメッセージのうち一部のメッセージを前記記憶部に転送する第2転送部と
    を備える
    復号装置。
  2. 前記チェックノード処理部は、
    前記符号に応じて予め定められるチェックノード数未満の数の前記チェックノードに対して前記チェックノード処理を行う
    請求項1に記載の復号装置。
  3. 前記チェックノード処理部は、
    前記チェックノード処理を行うチェックノード演算部を複数含み、
    前記チェックノード処理部が含む前記チェックノード演算部の数は、
    前記チェックノードの総数をC(Cは1以上の整数)とし、前記変数ノード処理部および前記チェックノード処理部による処理の繰り返し単位における前記チェックノード演算部によるチェックノード処理を行う平均回数をL(L<2×C)とするとき、C/Lよりも少ない
    請求項1または請求項2に記載の復号装置。
  4. 1つの前記変数ノードに接続する前記チェックノードの平均数をN(N>2)とするとき、前記一部のメッセージに対応するチェックノード数の全チェックノード数に対する割合は、(N−2)/N以下である
    請求項1乃至請求項3の何れか1項に記載の復号装置。
  5. 前記第2転送部は、
    前記変数ノード処理部および前記チェックノード処理部による処理の繰り返し単位毎に異なる前記チェックノードの集合に基づく前記一部のメッセージを前記記憶部に転送する
    請求項1乃至請求項4の何れか1項に記載の復号装置。
  6. 前記第2転送部は、
    連続する前記繰り返し単位では互いに共通部分を持たない前記チェックノードの集合に基づく前記一部のメッセージを前記記憶部に転送する
    請求項5に記載の復号装置。
  7. 前記第2転送部は、
    前記繰り返し単位による繰り返し回数が大きくなる極限で前記一部のメッセージそれぞれの前記記憶部に転送される回数が等しくなるように前記チェックノードの集合を異ならせて、前記チェックノードの集合に基づく前記一部のメッセージを前記記憶部に転送する
    請求項5または請求項6に記載の復号装置。
  8. 符号に応じて定められる変数ノードに対して変数ノード処理を行い第1のメッセージを出力し、
    前記符号に応じて定められるチェックノードに対して前記第1のメッセージに基づきチェックノード処理を行い第2のメッセージを出力し、
    前記第2のメッセージのうち一部のメッセージを記憶部に記憶し、
    前記第1のメッセージに含まれるメッセージであって、前記チェックノードのうち既に前記記憶部に記憶された前記一部のメッセージに対応するチェックノードに転送されるべきメッセージを除外したメッセージを前記チェックノードに転送し、
    前記第2のメッセージを前記変数ノードに転送すると共に、前記第2のメッセージのうち一部のメッセージを前記記憶部に転送する
    復号方法。
  9. 処理の繰り返し単位毎に一部のチェックノードの更新値を記憶し、
    次の前記繰り返し単位における前記一部のチェックノードの更新値は前記記憶している更新値で代替し、
    チェックノード処理を行う毎に全ての変数ノードの更新を行う
    復号方法。
  10. 前記変数ノードに接続する前記チェックノードの数の平均値をN(Nは2を超える整数)とし、前記更新値を前記記憶している更新値で代替する前記一部のチェックノード数の全チェックノード数に対する割合は(N−2)/N以下である
    請求項9に記載の復号方法。
  11. 前記更新値を前記記憶している更新値で代替する前記一部のチェックノードの集合は、前記繰り返し単位毎に異なる
    請求項9または請求項10に記載の復号方法。
  12. 連続する前記繰り返し単位では、前記更新値を前記記憶している更新値で代替する前記一部のチェックノードの集合は、互いに共通部分を含まない
    請求項11に記載の復号方法。
  13. 前記繰り返し単位毎の繰り返し数が大きくなる極限で、前記チェックノードそれぞれの前記更新値が前記記憶している更新値で代替される確率が等しくなる
    請求項9乃至請求項12の何れか1項に記載の復号方法。
JP2015018840A 2015-02-02 2015-02-02 復号装置および復号方法 Pending JP2016144052A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015018840A JP2016144052A (ja) 2015-02-02 2015-02-02 復号装置および復号方法
US14/924,254 US10069515B2 (en) 2015-02-02 2015-10-27 Decoding device and decoding method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015018840A JP2016144052A (ja) 2015-02-02 2015-02-02 復号装置および復号方法

Publications (1)

Publication Number Publication Date
JP2016144052A true JP2016144052A (ja) 2016-08-08

Family

ID=56554898

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015018840A Pending JP2016144052A (ja) 2015-02-02 2015-02-02 復号装置および復号方法

Country Status (2)

Country Link
US (1) US10069515B2 (ja)
JP (1) JP2016144052A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101839749B1 (ko) 2016-11-07 2018-03-20 중앙대학교 산학협력단 협력 반복 복호 방법 및 장치

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10404734B2 (en) * 2016-07-07 2019-09-03 International Business Machines Corporation Root cause analysis in dynamic software testing via probabilistic modeling

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100594818B1 (ko) * 2004-04-13 2006-07-03 한국전자통신연구원 순차적 복호를 이용한 저밀도 패리티 검사 부호의 복호장치 및 그 방법
KR100762619B1 (ko) * 2004-05-21 2007-10-01 삼성전자주식회사 저밀도 패리티 검사 코드를 이용한 복호화 장치 및 방법
KR100727316B1 (ko) * 2005-06-01 2007-06-12 삼성전자주식회사 저밀도채리티체크 채널 디코딩 방법 및 장치
JP4526451B2 (ja) 2005-06-30 2010-08-18 ルネサスエレクトロニクス株式会社 復号装置と方法並びにプログラム
KR100804793B1 (ko) * 2005-10-07 2008-02-20 삼성전자주식회사 저밀도 패러티 검사 복호기에서의 검사 노드 갱신 방법
JP2008219528A (ja) 2007-03-05 2008-09-18 Keio Gijuku Ldpc符号検出装置及びプログラム
US8458556B2 (en) * 2009-10-09 2013-06-04 Stmicroelectronics, Sa Low complexity finite precision decoders and apparatus for LDPC codes
US8433970B2 (en) * 2010-03-31 2013-04-30 Silicon Laboratories Inc. Techniques to control power consumption in an iterative decoder by control of node configurations
US8555131B2 (en) * 2010-03-31 2013-10-08 Silicon Laboratories Inc. Techniques to control power consumption in an iterative decoder by control of node configurations
JP2012124888A (ja) 2010-11-15 2012-06-28 Fujitsu Ltd 復号装置及び復号方法
JP5765281B2 (ja) 2012-03-27 2015-08-19 株式会社Jvcケンウッド 復号装置、復号方法、及び、プログラム
JP2014027432A (ja) 2012-07-25 2014-02-06 Toshiba Corp 復号装置、記憶装置、および復号方法
US9553608B2 (en) * 2013-12-20 2017-01-24 Sandisk Technologies Llc Data storage device decoder and method of operation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101839749B1 (ko) 2016-11-07 2018-03-20 중앙대학교 산학협력단 협력 반복 복호 방법 및 장치

Also Published As

Publication number Publication date
US20160226523A1 (en) 2016-08-04
US10069515B2 (en) 2018-09-04

Similar Documents

Publication Publication Date Title
JP5593312B2 (ja) デコーダのリセットによるldpcトラッピング集合の克服
US10511326B2 (en) Systems and methods for decoding error correcting codes
KR101492595B1 (ko) 메모리 효율적인 ldpc 디코딩
JP6555759B2 (ja) 構造化されたldpcのコーディング方法、デコーディング方法、コーディング装置及びデコーディング装置
US7802162B2 (en) Parity check matrix generation method, data transmission system, encoding device, decoding device, and a parity check matrix generation program
US20040153938A1 (en) Error correcting code decoding device, program and method used in the same
TWI652908B (zh) 在硬決策軟解碼期間決定何時結束位元翻轉演算法的方法
CN106936444B (zh) 一种集合译码方法和集合译码器
JP5631846B2 (ja) 半導体メモリ装置および復号方法
US9853661B2 (en) On-the-fly evaluation of the number of errors corrected in iterative ECC decoding
KR20090062086A (ko) 기본 행렬을 이용한 저밀도 패리티 검사 부호의 복호화장치 및 그 방법
KR102019893B1 (ko) 저밀도 패리티 검사 부호를 지원하는 통신 시스템에서 신호 수신 장치 및 방법
KR20190059028A (ko) 저밀도 패리티 체크 코드의 디코딩 방법, 이를 수행하는 디코더 및 시스템
US20170338838A1 (en) Efficient convergence in iterative decoding
KR101657912B1 (ko) 비이진 저밀도 패리티 검사 코드의 복호화 방법
JP2016144052A (ja) 復号装置および復号方法
JP2007110265A (ja) 復号装置および復号方法
CN107404320B (zh) 用于进行重组解码的低密度奇偶校验解码装置及相关方法
CN107026655B (zh) 用于对码字进行译码的方法及译码器
CN115296675A (zh) 用于ldpc码的解码的提前收敛
KR101917829B1 (ko) Ldpc 부호의 셔플 복호를 위한 복호 순서 결정 방법 및 장치
JP4492352B2 (ja) 復号装置及びその方法並びにプログラム
KR101813132B1 (ko) 디코딩 장치 및 방법과 신호 전송 시스템
Ren et al. An NB-LDPC decoder algorithm combined using channel information for storage application
JP7419113B2 (ja) メモリシステム