説明

半導体メモリ装置および復号方法

【課題】復号効率がよい半導体メモリ装置1を提供する
【解決手段】半導体メモリ装置1は、半導体メモリ部3と、LDPC符号化データをサムプロダクトアルゴリズムを用い復号する復号部18と、を具備し、復号部18が、検査行列の行毎に、行処理演算と列処理演算とからなるイタレーション処理を繰り返し実行することで事後尤度比を更新するときに、列処理演算において事後尤度比の絶対値が閾値以上の場合、列要素尤度比には事後尤度比をそのまま使用し、事後尤度更新処理において、列要素尤度比の絶対値が前記閾値以上の場合、事後尤度比には列要素尤度比をそのまま使用する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、低密度パリティ符号を用いる誤り検出訂正部を具備する半導体メモリ装置および低密度パリティ符号により符号化されたデータの復号方法に関する。
【背景技術】
【0002】
半導体メモリ装置の高密度記録化等のために、デジタルデータの誤り訂正符号に関する開発が行われている。誤り訂正符号は、代数系の符号と確率に基づく反復計算による符号とに大別できる。そして、後者に属する低密度パリティ符号(Low Density Parity Check codes、以下、「LDPC符号」という)はシャノン限界に迫る、優れた性能が報告されている。
【0003】
LDPC符号は、非常に疎な検査行列、すなわち、行列内の非零要素数が少ない検査行列により定義される線形符号であり、タナーグラフで示すことができる。そして、復号では、タナーグラフ上で接続された符号語の各ビットに対応したビットノードと各パリティ検査式に対応したチェックノードとの間で行処理および列処理により局所的に推論した結果をやりとりする。そして、行処理および列処理からなるイタレーション処理を、何サイクルも繰り返し実行することで、誤り訂正を行っている。
【0004】
LDPC符号化データの復号は、サムプロダクト(Sum-Product)アルゴリズムを用いることにより、比較的少ない回路規模で並列処理を行うことができる。そして、サムプロダクトアルゴリズムによる復号方法は、行処理と列処理が、それぞれ一括して実行される一括型方法と、行処理と列処理とが、行インデックス毎に逐次的に実行される逐次型方法と、に大別することができる。逐次型復号方法は、一括型復号方法よりも、収束速度が速く、またメモリ使用量が少ないことが知られている。
【0005】
また、Sum-Productアルゴリズムにおける検査行列の行方向に処理演算を行う行処理演算は、非線形関数の計算を行うため特に演算量が大きいこのため、検査行列における各行の各々において、「1」の要素毎に、当該要素を除く他の「1」の要素に対応する列処理演算データのうち最小値を、当該「1」の要素に対する行処理演算データとして求めるミニサム(Min-Sum)アルゴリズムを用いた復号が用いられる。
【0006】
ここで、後述するように、逐次型の復号方法は、量子化ビット数が少ない場合には、クリッピング誤差の影響により復号効率がよいとはいえない場合があった。このため、逐次型復号法を用いる半導体メモリ装置は復号効率がよいとはいえない場合があった。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2009−100222号公報
【非特許文献】
【0008】
【非特許文献1】E. Sharon, S. Litsyn, and J. Goldberger, “An efficient message-passing schedule for LDPC decoding,” in Electrical and Electronics Engineers in Israel, 2004. Proceedings. 2004 23rd IEEE Convention of, pp. 223-226, sept. 2004.
【発明の概要】
【発明が解決しようとする課題】
【0009】
本発明の実施形態は、LDPC符号化データの逐次型復号法による復号効率がよい半導体メモリ装置およびLDPC符号化データの復号効率がよい逐次型の復号方法を提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明の実施形態の半導体メモリ装置は、低密度パリティ検査符号により符号化された符号化データを記憶する半導体メモリ部と、前記符号化データをサムプロダクトアルゴリズムを用い復号する復号部と、を具備し、前記復号部が、検査行列の行毎に、行処理演算と列処理演算とからなるイタレーション処理を繰り返し実行することで事後尤度比を更新するときに、列処理演算において事後尤度比の絶対値が閾値以上の場合、列要素尤度比には事後尤度比をそのまま使用し、事後尤度更新処理において、列要素尤度比の絶対値が前記閾値以上の場合、事後尤度比には列要素尤度比をそのまま使用し、前記イタレーション処理を所定の第1のサイクル回数、行っても復号できない場合、または、シンドロームエラーの数が所定の第1のシンドロームエラー数よりも小さくなった場合、少なくとも一部の事後尤度比の絶対値を縮小するとともに、すべての事前尤度比を「0」にリセットし、所定の第2のサイクル回数のイタレーション処理までは第1のMin−Sum係数を用いて、前記第2のサイクル回数を超えるイタレーション処理では前記第1のMin−Sum係数より大きい第2のMin−Sum係数を用いる。
【0011】
また別の実施形態の復号方法は、低密度パリティ検査符号により符号化された符号化データの、サムプロダクトアルゴリズムを用いた逐次法による復号方法であって、列処理演算において事後尤度比の絶対値が閾値以上の場合、列要素尤度比には事後尤度比をそのまま使用し、事後尤度更新処理において、列要素尤度比の絶対値が前記閾値以上の場合、事後尤度比には列要素尤度比をそのまま使用する。
【発明の効果】
【0012】
本発明の実施形態によれば、復号効率がよい半導体メモリ装置および復号効率がよい復号方法を提供することができる。
【図面の簡単な説明】
【0013】
【図1】実施形態の半導体メモリ装置の構成図である。
【図2】第1実施形態の半導体メモリ装置の復号部の構成図である。
【図3】4行6列(M=4、N=6)の検査行列Hである。
【図4】第1実施形態の半導体メモリ装置のスケジューラの構成図である。
【図5】第1実施形態の復号方法の処理の流れを説明するためのフローチャートである。
【図6】第1実施形態の復号方法の処理の流れを説明するためのフローチャートである。
【図7】第2実施形態の半導体メモリ装置の復号部の構成図である。
【図8】第2実施形態の半導体メモリ装置のスケジューラの構成図である。
【図9】第2実施形態の復号方法の処理の流れを説明するためのフローチャートである。
【図10】第3実施形態の半導体メモリ装置のスケジューラの構成図である。
【発明を実施するための形態】
【0014】
<第1実施形態>
最初に、図1を用いて本発明の第1実施形態の半導体メモリ装置1の構成を説明する。
半導体メモリ装置1は、例えば、パソコンまたはデジタルカメラ等のホスト4から受信したデータを記憶し、記憶したデータをホスト4に送信するメモリカード等、または、ホスト4の内部に格納され、ホスト4の起動データ等を記憶するSSD(Solid State Drive)等の記憶装置である。
【0015】
図1に示すように、半導体メモリ装置1は、半導体メモリ部3と、メモリコントローラ2と、から構成されている。半導体メモリ部3は、NAND型フラッシュメモリから構成されており、単位セルである複数のメモリセルを有する。そして、メモリコントローラ2は、バス12を介して他の機能部と接続されているCPUコア11を用いて、ホスト I/F(インターフェイス)14を介してホスト4とのデータ送受信を、NAND I/F(インターフェイス)16を介して半導体メモリ部3とのデータ送受信を行う。またメモリコントローラ2は、半導体メモリ部3のアドレス管理をCPUコア11で実行されるFW(Firm Ware)で実現している。また、ホスト4からのコマンド入力に応じた半導体メモリ装置1全体の制御もFWで実行される。ROM10には、半導体メモリ装置1の制御プログラム等が格納されており、RAM13には、アドレス管理で必要となるアドレス変換デーブル等が記憶される。
【0016】
メモリコントローラ2の誤り検出訂正部(ECC部)15は、データ記憶時に誤り訂正符号を生成し付与し符号化データを出力する符号化部17と、データ読み出し時に、読み出された符号化データを復号し復号データを出力する復号部18と、を有する。
【0017】
ECC部15は、軟判定復号する誤り訂正符号であるLDPC符号を用いる。後に詳述するが、LDPC符号により符号化されたデータの復号においては、最初に入力された、それぞれのビットデータの確からしさを示す尤度比が算出される。そして検査行列をもとに行処理および列処理からなるイタレーション処理を繰り返すことで尤度比を更新することにより誤り訂正処理が行われる。
【0018】
図2に示すように、復号部18は、硬判定部21と、LLRメモリ22と、検査行列保持部24と、尤度比更新処理部であるLLR更新処理部25と、スケジューラ26と、中間メモリ27と、を有する。
【0019】
復号部18は、前段の信号処理部(図示しない)から符号化データ(例えば、データフレーム)の入力尤度比Fnが入力され、復号を行う。なお、復号部18は、行処理と列処理とが、行インデックス毎に逐次的に実行される逐次型復号を行う。
【0020】
図示しない前段の信号処理から入力される受信語データは、符号語のビット数と同数の要素からなり、各要素はそれぞれ対応するビットデータの対数尤度比(LLR:Log Likelihood Ratio、以下、単に「尤度比」ともいう。)を表す。ここで、対数尤度比とは、(式1)に示されるように、データビットが「1」である確率P(x=1)に対する、データビットが「0」である確率P(x=0)の比の対数値(自然対数)である。
【0021】
(式1)
【数1】

【0022】
LLRメモリ22は、受信語データ(入力尤度比)Fnを記憶し、これを更新しながら復号完了まで出力尤度比(事後尤度比)qnとして保持する。すなわち、入力尤度比Fnは、最初のイタレーション処理により事後尤度比qnに更新され、事後尤度比qnはイタレーション処理毎に新しい事後尤度比qnに更新されながらLLRメモリ22に保持される。
【0023】
検査行列保持部24は、M行N列の検査行列Hの情報を保持している。検査行列Hは、符号化部17と復号部18とで共通である。検査行列Hの情報は、LLR更新処理部25およびスケジューラ26によって必要に応じて読み出される。
【0024】
図3に、4行6列(M=4、N=6)の検査行列Hを例示する。検査行列Hによって定義される符号化データの符号長は6ビットであり、パリティ長は4ビットである。検査行列Hの第m行(mはM以下の整数)に含まれる「1」の数は第m行の行重みと呼ばれる。また、検査行列Hの第n列(nはN以下の整数)に含まれる「1」の数は第n列の列重みと呼ばれる。
【0025】
また、第m行目に含まれる「1」の列位置を示す列インデックスの集合はN(m)、第n列目に含まれる「1」の行位置を示す行インデックスの集合はM(n)と呼ばれる。図2の例であれば、N(2)={1,2,5}、M(3)={1,4}である。
【0026】
LLR更新処理部25は、LLRメモリ22から入力される出力尤度比(事後尤度比)qnと、中間メモリ27から入力される行処理演算データである行要素尤度比(事前尤度比)
【数2】

と、を用いてスケジューラ26から通知される行インデックスmに対して、行処理および列処理を行う。
【0027】
行処理はシンドローム値(信頼度係数)演算からなる。列処理は列処理演算および更新処理からなる。LLR更新処理部25は、行要素尤度比(事前尤度比)を中間メモリ27へ書き込み、出力尤度比(事後尤度比)qnをLLRメモリ22へ書き込む。また、LLR更新処理部25は、行処理で算出したシンドローム値および行インデックスをスケジューラ26に通知する。列要素尤度比qmn(列処理演算データ)については、例えばLLR更新処理部25の内部で保持する。つまり、LLR更新処理部25は、書き込み要求を受けて、列要素尤度比qmn(列処理演算データ)を行番号および列番号毎に記憶する列処理演算データ記憶手段を含んでもよい。
【0028】
以下、行インデックスmに対して行われる、Min−Sumアルゴリズムを用いる行処理演算および列処理演算について、式を用いて説明する。
【0029】
<列処理演算>
逐次型復号法では、(式2)のように、出力尤度比(2サイクル目からは「事後尤度比」)qnから行要素尤度比(事前尤度比)を差し引くことで列要素尤度比qmnが算出される。
【0030】
(式2)
【数3】

【0031】
ここで、量子化ビット数が少ない場合には、出力尤度比(事後尤度比)qnは、処理されるとき量子化ビット幅でクリッピングされ、絶対値が本来の値よりも小さくなる。クリッピングされた出力尤度比(事後尤度比)qnから、行要素尤度比(事前尤度比)が差し引いて算出された列要素尤度比qmnには、クリッピング誤差が生じる。そして、逐次型復号法は一括型復号法に比べて、クリッピング誤差により誤り率特性が劣化しやすい。
【0032】
ここで、事後尤度比qnの絶対値が、十分大きいことは、その信頼性が高いことを意味している。そして、発明者は、事後尤度比qnの絶対値が、所定の大きな閾値thr以上の場合には、更新しない方が、更新するよりも復号効率がよいことを見いだした。なお、閾値thrは計算機シミュレーションなどの数値実験により予め算出される。
【0033】
すなわち、半導体メモリ装置1では、事後尤度比qnの絶対値が閾値未満thrのときは(式2)に示す列処理演算を行う。一方、事後尤度比qnの絶対値が閾値thr以上の場合、(式3)のように列要素尤度比qmnには事後尤度比qnをそのまま使用する。
【0034】
(式2)
【数4】

【0035】
(式3)
【数5】

【0036】
なお、iは、イタレーション処理のサイクル回数(繰り返し回数)を表し、復号開始時(i=1)には、行要素尤度比(事前尤度比)=0であるため、列要素尤度比qmn=出力尤度比(事後尤度比)qn=入力尤度比Fnである。
【0037】
<行処理演算>
行処理演算では、シンドローム値
【数6】

と、行要素尤度比(事前尤度比)
【数7】

とが(式4)および(式5)により算出される。
【0038】
(式4)
【数8】

【0039】
(式5)
【数9】

【0040】
なお、N(m)は行インデックスmのパリティ検査式において、「1」の値を持つ列インデックスの集合N(m)を表す。N(m)∈nは集合N(m)のうちnを除いた列インデックスの部分集合を表す。またsign(x)は、xの符号を表す。
【0041】
また、
【数10】

は、列インデックス集合N(m)に含まれる列インデックスに対応する列要素尤度比qmnのうち絶対値が最も小さい列要素尤度比qmnを表す。
【0042】
さらに、
【数11】

は、列インデックス集合N(m)\nに含まれる列インデックスに対応する列要素尤度比qmnのうち絶対値が最も小さい列要素尤度比qmnを示す。また、後述するMin−Sum係数αは、スケジューラ26から通知される。
【0043】
(式4)および(式5)により、各列インデックスの行要素尤度比(事前尤度比)
【数12】

が、算出された後、(式6)に示す演算により出力尤度比(事後尤度比)qnが更新される。一方、(式7)に示すように、閾値thr以上の列要素尤度比qmnについては、事後尤度比qnには列要素尤度比qmnを、そのまま使用する。
【0044】
(式6)
【数13】

【0045】
(式7)
【数14】

【0046】
なお、2サイクル目以降のイタレーション処理では、出力尤度比(事後尤度比)qnは、ひとつ前のイタレーション処理で更新された事後尤度比qnを使用する。このように、LLR更新処理部25は、行毎に行処理と列処理を行うことにより、出力尤度比(事後尤度比)qnを更新する。
【0047】
スケジューラ26は復号処理全体の制御を行う。図4にスケジューラ26の構成を示す。スケジューラ26は、復号完了判定部31と、繰り返し回数カウント部32と、シンドローム累積部34と、シンドロームチェック部36と、行番号通知部37と、を有する。
【0048】
シンドロームチェック部36は、LLR更新処理部25より通知されるシンドローム値が「正」の場合は「真(0)」を、「負」の場合は「偽(1)」を、シンドローム累積部34へ出力する。
【0049】
シンドローム累積部34は、シンドロームチェック部36から行インデックス毎に入力されるシンドロームチェック結果(「真(0)」または「偽(1)」)をすべての行について累積することによりシンドローム累積値を得る。シンドローム累積値が、シンドロームエラーの数である。すべての行についてシンドロームチェック結果が「真(0)」となったときのみ、シンドローム累積値は「真(0)」となり、シンドロームチェック結果が「偽(1)」である行が1つでもあるときシンドローム累積値は「0」以外の「偽」となる。シンドローム累積部34はシンドローム累積値を復号完了判定部31に出力する。
【0050】
復号完了判定部31は、シンドローム累積部34から入力されるシンドローム累積値が「真」のとき、または繰り返し回数カウント部32から通知されるサイクル回数iが所定の最大サイクル回数Imaxに達したとき、復号処理の完了を判定する。復号完了判定部31は復号処理の完了を判定した場合、そのとき保持している事後尤度比qnを硬判定部21へ出力するようLLRメモリ22へ指示する。また、復号処理の完了と判定しない場合、次のイタレーション処理を開始することをLLR更新処理部25に通知する。
【0051】
行番号通知部37はLLR更新処理部25から通知される行インデックス番号をインクリメントし、LLR更新処理部25へ通知する。ただし、通知される行インデックス番号が最終行つまりMのときは「0」を通知する。
【0052】
中間メモリ27は、LLR更新処理部25の説明から理解されるように、LLR更新処理部25により算出される行要素尤度比(事前尤度比)をLLR更新処理部25からの書き込み要求を受けて記憶する。
【0053】
硬判定部21は、LLRメモリから入力される出力尤度比(事後尤度比)の正負を判定し、正の時は「0」を、負の時は「1」を選択する。ビット毎に判定された「0」または「1」である硬判定データは図示しない後段の信号処理部へ出力される。
【0054】
ここで、図5および図6に示すフローチャートを用いて、復号部18の動作の流れについて説明する。なお、図5および図6では、mが行インデックスを表し、Mがパリティ検査行列の行数を表し、iがイタレーション処理の繰り返し回数(サイクル回数)を表し、Imaxが最大繰り返し回数を表す。
【0055】
<ステップS11>
図示しない前段の信号処理部より、受信語データ(入力尤度比Fn)が入力されると最初(1サイクル目)のイタレーション処理が開始される。なお、入力された受信語データ(入力尤度比Fn)は、イタレーション処理により更新されながら出力尤度比(事後尤度比)qnとして、復号完了まで、LLRメモリ22で保持される。
最初に、イタレーション処理のサイクル回数iが「1」にセットされる。
【0056】
<ステップS12>
更新処理が実行される行を示す行インデックスmが「1」にセットされる。
【0057】
<ステップS13>
行インデックスmについて、LLR更新処理が実行される。
【0058】
ここで、図6のフローチャートを用いてLLR更新処理部25の動作について説明する。
<ステップS31>
更新処理を実行する列インデックスnが「1」に設定される。
【0059】
<ステップS32>
列インデックスnが、検査行列Hのm行目の列インデックス集合N(m)に含まれるかが判定され、含まれる場合(Yes)ステップS33に進む。含まれない場合(No)、ステップS36に進む。
【0060】
<ステップS33>
事後尤度比qnの絶対値が閾値thr未満かどうかの判定が行われる。閾値thr未満の場合(Yes)はステップS34へ進み、閾値thr以上の場合(No)は、ステップS35へ進む。
【0061】
<ステップS34>
(式2)を用いて、列要素尤度比qmnが算出される。
【0062】
<ステップS35>
(式3)に示すように、列要素尤度比qmnには、出力尤度比(事後尤度比)qnが、そのまま使用される。
【0063】
<ステップS36>
列インデックスnが最終列インデックスNかどうか判定し、最終列インデックスの場合は、ステップS38に進み、最終列インデックスではない場合は、ステップS37に進む。
【0064】
<ステップS37>
更新処理を実行する列インデックスnがインクリメントされ、ステップS32からの処理が繰り返される。
【0065】
<ステップS38>
(式4)および(式5)を用いてシンドローム値と行要素尤度比(事前尤度比)とが算出される。
【0066】
<ステップS39>
列インデックスnが、「1」に設定される。
【0067】
<ステップS40>
列インデックスnが、m行目の列インデックス集合N(m)に含まれるか判定し、含まれる場合(Yes)には、ステップS41に進む。含まれない場合(No)には、ステップS44に進む。
【0068】
<ステップS41>
列要素尤度比qmnの絶対値が、閾値thr未満かどうかが判定され、閾値thr未満の場合(Yes)はステップS42へ進み、閾値thr以上の場合(No)は、ステップS43へ進む。
【0069】
<ステップS42>
(式6)を用いて、出力尤度比(事後尤度比)qnが算出される。
【0070】
<ステップS43>
(式7)に示すように、出力尤度比(事後尤度比)qnには列要素尤度比qmnが、そのまま使用される。
【0071】
<ステップS44>
列インデックスnが、最終列を示すインデックスNかどうかが判定される。最終列インデックスNの場合(Yes)であれば、ステップS14に進み、最終列インデックスNでない場合には、ステップS45に進む。
【0072】
<ステップS45>
列インデックスnがインクリメントされ、ステップS39からの処理が繰り返し行われる。
【0073】
<ステップS14>
行インデックスmが、最終行インデックスMかどうかが判定される。
【0074】
<ステップS15>
ステップS14の判定が、「No」の場合には、行インデックスmが、インクリメントされ、ステップS13からの処理が繰り返される。
【0075】
<ステップS16>
ステップS14の判定が、「Yes」の場合には、シンドローム累積値の判定が行われる。そして、シンドローム累積値が「真」の場合には硬判定を行った後、復号処理は終了する。
【0076】
<ステップS17>
ステップS16の判定が、「偽」の場合には、イタレーション処理のサイクル回数iが最大サイクル回数Imaxに達したかどうかが判定される。最大サイクル回数Imaxに達していた場合(Yes)には、硬判定が行われた後、復号処理は終了する。最大サイクル回数Imax未満の場合(No)は、ステップS12に戻り、次のサイクルのイタレーション処理が行われる。
【0077】
以上の説明のように、実施形態の復号方法は、低密度パリティ検査符号により符号化された符号化データの、サムプロダクトアルゴリズムを用いた逐次法により、列処理演算において事後尤度比の絶対値が閾値以上の場合、列要素尤度比には事後尤度比をそのまま使用し、事後尤度比の更新処理において、列要素尤度比の絶対値が前記閾値以上の場合、事後尤度比には列要素尤度比をそのまま使用する。
【0078】
実施形態の復号方法は、収束速度が速く、またメモリ使用量が少ない逐次型復号方法を用いているが、クリッピング誤差の影響により復号効率が低下することがない。このため、半導体メモリ装置1は復号効率がよい。
【0079】
なお、上記説明は、サムプロダクト(Sum-Product)アルゴリズムとして、ミニサム(Min-Sum)アルゴリズムを用いた復号を例に説明したが、モディファイドミニサム(Modified-Min-Sum)アルゴリズム等を用いても、同様の効果を有する。
【0080】
<第2実施形態>
次に第2実施形態の半導体メモリ装置1Aおよび第2実施形態の復号方法について説明する。第2実施形態の半導体メモリ装置1Aおよび第2実施形態の復号方法は、第1実施形態の半導体メモリ装置1および第1実施形態の復号方法と類似しているので、同じ構成要素には同じ符号を付し、説明は省略する。
【0081】
図7に示すように、第2実施形態の半導体メモリ装置1Aの復号部18Aは、ミニサム(Min-Sum)アルゴリズムを用いた復号を行い、リセッティング制御部23を有する。
【0082】
さらに、図8に示すように、第2実施形態の半導体メモリ装置1Aのスケジューラ26Aは、Min−Sum係数制御部33と、リセッティング判定部35と、を有する。
【0083】
すでに説明したように、第1実施形態の半導体メモリ装置1の復号部18が行う復号では、事後尤度比qnの絶対値が閾値thr以上の場合には、更新処理を行わない。しかし、イタレーション処理の初期段階(初期サイクル)で、誤った符号(「正」または「負」)のまま閾値thr以上となる可能性は否定できない。すると、以降のイタレーション処理では、そのビットデータの事後尤度比qnは更新されないため、復号エラーとなる。
【0084】
これに対して、復号部18Aでは、リセッティング制御部23が、所定のサイクル回数のイタレーション処理を行っても復号できなかった場合には、リセッティング処理を行う。
【0085】
すなわち、リセッティング判定部35は、繰り返し回数カウント部32から通知されるサイクル回数iが、第1の回数I1に達した場合は、リセッティング制御部23および中間メモリ27へ、リセッティング要求を通知する。
【0086】
また、中間メモリ27は、スケジューラ26からリセッティング要求が通知された場合は、保持しているすべての行要素尤度比(事前尤度比)
【数15】

を、「0」にリセットする。
【0087】
リセッティング制御部23では、スケジューラ26からリセッティング要求が通知された場合、LLRメモリ22から事後尤度比qnを読み出し、すべての事後尤度比qnを(式8)により縮小する。
【0088】
(式8)
【数16】

【0089】
ただし、Aは1より大きい値であり、Aはthrの5%〜50%が好ましく、前記範囲内であれば、復号速度が大きく低下することなく復号効率が上がる。
【0090】
(式8)より明らかなように、「縮小する」とは「絶対値を減ずる」ことである。また、例えば、(絶対値が閾値以上の事後尤度比qnの半分)だけを縮小してもよい。すなわち、少なくとも一部の事後尤度比qnの絶対値を縮小してもよい。
【0091】
また、リセッティング制御部23は、事後尤度比qnの縮小に替えて、すべての事後尤度比qnの絶対値を(式9)により、所定値Bにしても縮小処理と同様の効果を得ることができる。すなわち、すべての事後尤度比qnは、符号が「正」で絶対値がB、または符号が「負」で絶対値がBの、2値のいずれかにリセッティング処理される。
【0092】
(式9)
【数17】

ここで、B < thrであり、Bはthrの5%〜50%が好ましく、前記範囲内であれば、復号速度が大きく低下することなく復号効率が上がる。
【0093】
また、例えば、(絶対値が閾値以上の出力尤度比(事後尤度比)qnの半分)だけを、絶対値をBにしても良い。すなわち、少なくとも一部の出力尤度比(事後尤度比)qnを、絶対値がBの正負の2値にすればよい。
【0094】
一方、イタレーション処理の初期段階(初期サイクル)で、誤った符号のまま更新処理されなくなることを防止するためには、初期段階では事後尤度比qnの絶対値が大きくなり難くする方法も有効である。事後尤度比qnの絶対値を大きくなり難くするには、(式4)のMin−Sum係数αとして小さな値を用いることで実現できる。
【0095】
この方法を用いるため、Min−Sum係数制御部33は、繰り返し回数カウント部32から通知されるサイクル回数iが、所定の第2の回数I2以下の初期段階では、小さい値の第1のMin−Sum係数α1を更新処理部25に通知するが、通知されるサイクル回数iが、所定の第2の回数I2より大きくなった後は、第1のMin−Sum係数α1よりも大きな第2のMin−Sum係数α2を更新処理部25に通知する。
【0096】
なお、第1のMin−Sum係数α1は、第2のMin−Sum係数α2の50%〜90%が好ましい。前記範囲であれば、復号速度が大きく低下することなく復号効率が上がる。また、第2の回数I2は、最大繰り返し数Imaxの5〜50%が好ましい前記範囲であれば、復号速度が大きく低下することなく復号効率が上がる。
【0097】
Min−Sum係数制御部33の動作により、エラーフロアが低く、ウォーターフォール特性の劣化を防ぐことができる。
【0098】
以下、図9のフローチャートを用いて、復号部18Aの動作の流れについて説明する。なお、図9は、図5と類似しているので、異なる工程のみを説明する。
【0099】
<ステップS11A>
イタレーション処理のサイクル回数iが「1」にセットされるとともに、Min−Sum係数αが、第1のMin−Sum係数α1にセットされる。
【0100】
<ステップS17>
ステップS16の判定が、「偽」の場合には、イタレーション処理のサイクル回数iが最大サイクル回数Imaxに達したかどうかが判定される。最大サイクル回数Imax未満の場合(No)は、ステップS19に進む。
【0101】
<ステップS19>
イタレーション処理のサイクル回数iが、所定の第2の回数I2であった場合(Yes)には、ステップS20に進む。一方、サイクル回数iが、第2の回数I2未満の場合(No)、ステップS21に進む。
【0102】
<ステップS20>
Min−Sum係数αを、第1のMin−Sum係数α1から第2のMin−Sum係数α2に変更してステップS21に進む。
【0103】
<ステップS21>
サイクル回数iが第1の回数I1であるかの判定が行われる。判定がYesの場合、ステップS22に進む。一方、判定がNoの場合は、ステップS18に進む。
【0104】
半導体メモリ装置1Aは、半導体メモリ装置1が有する効果を有し、さらに、イタレーション処理の初期段階(初期サイクル)で、誤った符号のまま更新処理されなくなることに起因する復号エラーが発生しにくく、さらに復号効率がよい。
【0105】
なお、リセッティング判定部35は、シンドロームエラー数に応じて、リセッティング要求を通知しても良い。また、Min−Sum係数αも、シンドロームエラー数に応じて変更しても良い。
【0106】
すなわち、リセッティング制御部23はシンドロームエラーの数が、所定の第1のシンドロームエラー数よりも小さくなった場合、少なくとも一部の事後尤度比の絶対値を縮小するとともに、すべての事前尤度比を「0」にリセットしてもよい。
【0107】
また、リセッティング制御部23は、シンドロームエラーの数が、所定の第1のシンドロームエラー数よりも小さくなった場合、少なくとも一部の事後尤度比の絶対値を所定値とするリセット処理を行ってもよい。
【0108】
さらに、更新処理する順序を、行インデックス順ではなく、例えば、LLR更新処理部25より通知されるシンドローム値が「1」、すなわち、シンドロームエラーがある行から行うようにすることも好ましい。
【0109】
<第3実施形態>
次に第3実施形態の半導体メモリ装置1Bおよび第3実施形態の復号方法について説明する。第3実施形態の半導体メモリ装置1Bおよび第3実施形態の復号方法は、第1実施形態の半導体メモリ装置1および第1実施形態の復号方法と類似しているので、同じ構成要素には同じ符号を付し、説明は省略する。
【0110】
図10に示すように半導体メモリ装置1Bの復号部18Bのスケジューラ26Bはパリティ検査部38を有する。そして、スケジューラ26Bは、シンドローム累積値ではなく、M行毎にパリティ検査を行い、復号完了を判定する。
【0111】
パリティ検査部38では、更新処理部25より通知される行インデックスが最終行Mであるとき、LLRメモリ22から事後尤度比qnを読み出し、その正負を判定し、正の時は「0」を、負の時は「1」を選択する硬判定が行われる。なお、硬判定は硬判定部21と同様の硬判定部を用いても良い。
【0112】
その後、硬判定結果を用いて次式によりパリティ検査が行われる。
【数18】

【0113】
なお、Uはパリティ検査ベクトルであり、
【数19】

は、硬判定結果であり、Hは検査行列である。
【0114】
パリティ検査ベクトルが全零ベクトルである場合、パリティ検査部38は、復号完了判定部31に「真」を通知し、全零ベクトルでない場合は「偽」を通知する。
【0115】
復号完了判定部31Bは、パリティ検査部38から通知される信号が「真」である場合、または繰り返し回数カウント部32から通知されるサイクル回数iが所定の最大繰り返し数Imaxに達したとき、復号の完了を判定する。
【0116】
半導体メモリ装置1Bおよび第3実施形態の復号方法は、第1実施形態の半導体メモリ装置1および第1実施形態の復号方法と同様の効果を有する。
【0117】
また、半導体メモリ装置1Bおよび第3実施形態の復号方法は、第2実施形態の半導体メモリ装置1Aおよび第2実施形態の復号方法と組み合わせても、同様の効果を有する。
【0118】
すなわち、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【0119】
1、1A、1B…半導体メモリ装置、2…メモリコントローラ、3…半導体メモリ部、4…ホスト、15…ECC部、17…符号化部、18…復号部、21…硬判定部、22…メモリ、23…リセッティング制御部、24…検査行列保持部、25…LLR更新処理部、26…スケジューラ、27…中間メモリ、31…復号完了判定部、32…回数カウント部、33…係数制御部、34…シンドローム累積部、35…リセッティング判定部、36…シンドロームチェック部、37…行番号通知部、38…パリティ検査部

【特許請求の範囲】
【請求項1】
低密度パリティ検査符号により符号化された符号化データを記憶する半導体メモリ部と、
前記符号化データをサムプロダクトアルゴリズムを用い、復号する復号部と、を具備する半導体メモリ装置であって、
前記復号部が、検査行列の行毎に、行処理演算と列処理演算とからなるイタレーション処理を繰り返し実行することで事後尤度比を更新するときに、列処理演算において事後尤度比の絶対値が閾値以上の場合、列要素尤度比には事後尤度比をそのまま使用し、事後尤度更新処理において、列要素尤度比の絶対値が前記閾値以上の場合、事後尤度比には列要素尤度比をそのまま使用し、
前記イタレーション処理を所定の第1のサイクル回数、行っても復号できない場合、または、シンドロームエラーの数が所定の第1のシンドロームエラー数よりも小さくなった場合、少なくとも一部の事後尤度比の絶対値を縮小するとともに、すべての事前尤度比を「0」にリセットし、
所定の第2のサイクル回数のイタレーション処理までは第1のMin−Sum係数を用いて、前記第2のサイクル回数を超えるイタレーション処理では前記第1のMin−Sum係数より大きい第2のMin−Sum係数を用いることを特徴とする。
【請求項2】
低密度パリティ検査符号により符号化された符号化データを記憶する半導体メモリ部と、
前記符号化データをサムプロダクトアルゴリズムを用い、復号する復号部と、を具備する半導体メモリ装置であって、
前記復号部が、検査行列の行毎に、行処理演算と列処理演算とからなるイタレーション処理を繰り返し実行することで事後尤度比を更新するときに、列処理演算において事後尤度比の絶対値が閾値以上の場合、列要素尤度比には事後尤度比をそのまま使用し、事後尤度更新処理において、列要素尤度比の絶対値が前記閾値以上の場合、事後尤度比には列要素尤度比をそのまま使用することを特徴とする。
【請求項3】
前記イタレーション処理を所定の第1のサイクル回数、行っても復号できない場合、または、シンドロームエラーの数が所定の第1のシンドロームエラー数よりも小さくなった場合、少なくとも一部の事後尤度比の絶対値を縮小するとともに、すべての事前尤度比を「0」にリセットすることを特徴とする請求項2に記載の半導体メモリ装置。
【請求項4】
イタレーション処理を所定の第1のサイクル回数、行っても復号できない場合、または、シンドロームエラーの数が所定の第1のシンドロームエラー数よりも小さくなった場合、少なくとも一部の事後尤度比の絶対値を所定値とするとともに、すべての事前尤度比を「0」にリセットすることを特徴とする請求項2に記載の半導体メモリ装置。
【請求項5】
低密度パリティ検査符号により符号化された符号化データの、サムプロダクトアルゴリズムを用いた逐次法による復号方法であって、
列処理演算において事後尤度比の絶対値が閾値以上の場合、列要素尤度比には事後尤度比をそのまま使用し、事後尤度更新処理において、列要素尤度比の絶対値が前記閾値以上の場合、事後尤度比には列要素尤度比をそのまま使用することを特徴とする。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2013−98793(P2013−98793A)
【公開日】平成25年5月20日(2013.5.20)
【国際特許分類】
【出願番号】特願2011−240483(P2011−240483)
【出願日】平成23年11月1日(2011.11.1)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】