(57)【要約】【課題】誤り訂正をより高精度に実行可能とする。【解決手段】実施形態のメモリシステムは、不揮発性メモリと、メモリコントローラと、を備える。不揮発性メモリは、符号を構成するシンボルのうち少なくとも１つのシンボルが少なくとも第１の成分符号と第２の成分符号とによって保護される多次元の誤り訂正符号を記憶する。メモリコントローラは、誤り訂正符号を不揮発性メモリから読み出し、読み出した誤り訂正符号に対して、第１の成分符号の硬判定復号を実行し、第１復号結果と、第１復号結果の尤もらしさを算出するためのインデックス情報と、を出力し、硬判定復号に失敗した場合は、第１復号結果とインデックス情報とを用いて第２の成分符号の軟判定復号を実行し、復号結果をハードビットとして出力し、軟判定復号に失敗した場合は、ハードビットとして出力された軟判定復号の結果に対して硬判定復号を実行する。【選択図】図１
2020155861.tif 000002
【特許請求の範囲】
【請求項１】
符号を構成するシンボルのうち少なくとも１つのシンボルが少なくとも第１の成分符号と第２の成分符号とによって保護されている多次元の誤り訂正符号が記憶された不揮発性メモリと、
前記誤り訂正符号を前記不揮発性メモリから読み出し、
読み出した前記誤り訂正符号に対して、前記第１の成分符号の硬判定復号を実行し、当該硬判定復号の結果である第１復号結果と、前記第１復号結果の尤もらしさを算出するためのインデックス情報と、を出力し、
前記硬判定復号に失敗した場合には、前記第１復号結果と前記インデックス情報とを用いて前記第２の成分符号の軟判定復号を実行して、前記軟判定復号の結果をハードビットとして出力し、
前記軟判定復号に失敗した場合には、前記第１の成分符号に対応するデータであって前記ハードビットとして出力された前記軟判定復号の結果に対して、前記硬判定復号を実行する、
メモリコントローラと、
を備えるメモリシステム。
【請求項２】
前記メモリコントローラは、前記第１復号結果と、前記第１復号結果で訂正したビット数と、に基づいて前記インデックス情報を決定する、
請求項１に記載のメモリシステム。
【請求項３】
前記メモリコントローラは、前記第１復号結果と、前記第１復号結果で訂正したビット数と、訂正したビットの訂正する前の値の尤もらしさと、に基づいて前記インデックス情報を決定する、
請求項１に記載のメモリシステム。
【請求項４】
前記メモリコントローラは、前記第１復号結果と、前記第１復号結果で訂正したビット数と、前記尤もらしさの値が含まれる範囲と、の組合せごとに異なる前記インデックス情報を決定する、
請求項３に記載のメモリシステム。
【請求項５】
前記メモリコントローラは、前記第１復号結果と、訂正した１以上のビットの訂正する前の値それぞれの尤もらしさの総和と、に基づいて前記インデックス情報を決定する、
請求項１に記載のメモリシステム。
【請求項６】
前記メモリコントローラは、前記第１復号結果と、前記総和の値が含まれる範囲と、の組合せごとに異なる前記インデックス情報を決定する、
請求項５に記載のメモリシステム。
【請求項７】
前記メモリコントローラは、
前記第１復号結果および前記インデックス情報に対する前記第１復号結果の尤もらしさを対応づけた対応情報を用いて、前記第１復号結果および前記インデックス情報に対応する前記尤もらしさを求め、求めた前記尤もらしさを用いて、前記第２の成分符号の軟判定復号を実行する、
請求項１に記載のメモリシステム。
【請求項８】
前記誤り訂正符号は、前記第１の成分符号と前記第２の成分符号とによって保護されている２次元の誤り訂正符号であり、
前記メモリコントローラは、
前記軟判定復号に失敗した場合、さらに前記硬判定復号を実行する、
請求項１に記載のメモリシステム。
【請求項９】
前記メモリコントローラは、
前記硬判定復号または前記軟判定復号により復号されたデータを、前記不揮発性メモリからのデータの読み出しを要求したホストに送信する、
請求項１に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
以下の実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
メモリシステムでは、一般に、記憶するデータを保護するために、誤り訂正符号化されたデータが記憶される。このため、メモリシステムに記憶されたデータを読み出す際には、誤り訂正符号化されたデータに対する復号が行われる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許出願公開第２０１０／００５８１５２号明細書
【特許文献２】特開２０１４−１４０１１１号公報
【特許文献３】特許第４５９９６２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態は、誤り訂正をより高精度に実行可能なメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
実施形態のメモリシステムは、不揮発性メモリと、メモリコントローラと、を備える。不揮発性メモリは、符号を構成するシンボルのうち少なくとも１つのシンボルが少なくとも第１の成分符号と第２の成分符号とによって保護される多次元の誤り訂正符号を記憶する。メモリコントローラは、誤り訂正符号を不揮発性メモリから読み出し、読み出した誤り訂正符号に対して、第１の成分符号の硬判定復号を実行し、第１復号結果と、第１復号結果の尤もらしさを算出するためのインデックス情報と、を出力し、硬判定復号に失敗した場合は、第１復号結果とインデックス情報とを用いて第２の成分符号の軟判定復号を実行し、復号結果をハードビットとして出力し、軟判定復号に失敗した場合は、ハードビットとして出力された軟判定復号の結果に対して硬判定復号を実行する。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１の実施形態に係るメモリシステムの概略構成例を示すブロック図である。
【図２】図２は、第１の実施形態に係る多次元の誤り訂正符号の一例を示す図である。
【図３】図３は、第１の実施形態の符号化／復号部の機能構成の一例を示すブロック図である。
【図４】図４は、第１の実施形態による反復復号処理の概要を説明するための図である。
【図５】図５は、ＬＬＲテーブルの一例を示す図である。
【図６】図６は、８ビットを１シンボルとするＲＳ符号の例を示す図である。
【図７】図７は、ＬＬＲの絶対値の算出結果の例を示す図である。
【図８】図８は、第１の実施形態における反復復号処理の一例を示すフローチャートである。
【図９】図９は、第２の実施形態の符号化／復号部の機能構成の一例を示すブロック図である。
【図１０】図１０は、第２の実施形態における反復復号処理の一例を示すフローチャートである。
【図１１】図１１は、第３の実施形態の符号化／復号部の機能構成の一例を示すブロック図である。
【図１２】図１２は、第３の実施形態における反復復号処理の一例を示すフローチャートである。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態に係るメモリシステムを詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
【０００８】
（第１の実施形態）
図１は、第１の実施形態に係るメモリシステムの概略構成例を示すブロック図である。図１に示すように、メモリシステム１は、メモリコントローラ１０と不揮発性メモリ２０とを備える。メモリシステム１は、ホスト３０と接続可能であり、図１ではホスト３０と接続された状態が示されている。ホスト３０は、例えば、パーソナルコンピュータ、携帯端末などの電子機器であってよい。
【０００９】
不揮発性メモリ２０は、データを不揮発に記憶する不揮発性メモリであり、例えば、ＮＡＮＤ型フラッシュメモリ（以下、単にＮＡＮＤメモリという）である。以下の説明では、不揮発性メモリ２０としてＮＡＮＤメモリが用いられた場合を例示するが、不揮発性メモリ２０として３次元構造フラッシュメモリ、ＲｅＲＡＭ（Resistance  Random  Access  Memory）、ＦｅＲＡＭ（Ferroelectric  Random  Access  Memory）等のＮＡＮＤメモリ以外の記憶装置を用いることも可能である。また、不揮発性メモリ２０が半導体メモリであることは必須ではなく、半導体メモリ以外の種々の記憶媒体に対して本実施形態を適用することも可能である。
【００１０】
メモリシステム１は、メモリコントローラ１０と不揮発性メモリ２０とが１つのパッケージとして構成されるメモリカード等であってもよいし、ＳＳＤ（Solid  State  Drive）等であってもよい。
【００１１】
メモリコントローラ１０は、例えばＳｏＣ（System-On-a-Chip）として構成される半導体集積回路である。以下で説明するメモリコントローラ１０の各構成要素の動作の一部又は全部は、ＣＰＵ（Central  Processing  Unit）がファームウエアを実行することによって実現されてもよいし、ハードウエアで実現されてもよい。
【００１２】
メモリコントローラ１０は、ホスト３０からの書込み要求に従って不揮発性メモリ２０への書込みを制御する。また、ホスト３０からの読出し要求に従って不揮発性メモリ２０からの読み出しを制御する。メモリコントローラ１０は、ホストＩ／Ｆ（ホストインタフェース）１５、メモリＩ／Ｆ（メモリインタフェース）１３、制御部１１、符号化／復号部（コーデック）１４、データバッファ１２および共有メモリ１７を備える。ホストＩ／Ｆ１５、メモリＩ／Ｆ１３、制御部１１、符号化／復号部１４、データバッファ１２および共有メモリ１７は、内部バス１６で相互に接続されている。
【００１３】
ホストＩ／Ｆ１５は、ホスト３０との間のインタフェース規格に従った処理を実施し、ホスト３０から受信した要求、書込み対象のユーザデータなどを内部バス１６に出力する。また、ホストＩ／Ｆ１５は、不揮発性メモリ２０から読み出されて復元されたユーザデータ、制御部１１からの応答などをホスト３０へ送信する。
【００１４】
メモリＩ／Ｆ１３は、制御部１１の指示に基づいて、不揮発性メモリ２０への書込み処理を行う。また、メモリＩ／Ｆ１３は、制御部１１の指示に基づいて、不揮発性メモリ２０からの読み出し処理を行う。
【００１５】
データバッファ１２は、メモリコントローラ１０がホスト３０から受信したユーザデータを不揮発性メモリ２０へ記憶するまでに一時記憶する。また、データバッファ１２は、不揮発性メモリ２０から読み出したユーザデータをホスト３０へ送信するまでに一時記憶する。データバッファ１２には、例えば、ＳＲＡＭ（Static  Random  Access  Memory）やＤＲＡＭ（Dynamic  Random  Access  Memory）などの汎用メモリを用いることができる。
【００１６】
制御部１１は、メモリシステム１の各構成要素を統括的に制御する。制御部１１は、ホスト３０からの要求をホストＩ／Ｆ１５経由で受け付けた場合に、その要求に応じた制御を行う。例えば、制御部１１は、ホスト３０からの書込み要求に応じて、不揮発性メモリ２０へのユーザデータおよびパリティの書き込みをメモリＩ／Ｆ１３へ指示する。また、制御部１１は、ホスト３０からの読出し要求に応じて、不揮発性メモリ２０からのユーザデータおよびパリティの読み出しをメモリＩ／Ｆ１３へ指示する。
【００１７】
また、制御部１１は、ホスト３０からユーザデータの書込み要求を受信した場合、データバッファ１２に蓄積されるユーザデータに対して、不揮発性メモリ２０上の記憶領域（メモリ領域）を決定する。すなわち、制御部１１は、ユーザデータの書込み先を管理する。ホスト３０から受信したユーザデータの論理アドレスと該ユーザデータが記憶された不揮発性メモリ２０上の記憶領域を示す物理アドレスとの対応は、アドレス変換テーブルとして例えばデータバッファ１２に記憶される。
【００１８】
また、制御部１１は、ホスト３０から読出し要求を受信した場合、読出し要求により指定された論理アドレスを上述のアドレス変換テーブルを用いて物理アドレスに変換し、該物理アドレスからの読み出しをメモリＩ／Ｆ１３へ指示する。
【００１９】
ここで、ＮＡＮＤメモリでは、一般に、ページと呼ばれるデータ単位で、書き込みおよび読み出しが行われ、ブロックと呼ばれるデータ単位で消去が行われる。本実施形態では、同一のワード線に接続される複数のメモリセルをメモリセルグループと呼ぶ。メモリセルがシングルレベルセル（ＳＬＣ）である場合は、１つのメモリセルグループが１ページに対応する。メモリセルがマルチレベルセル（ＭＬＣ）である場合は、１つのメモリセルグループが複数ページに対応する。また、各メモリセルはワード線に接続するとともにビット線にも接続される。従って、各メモリセルは、ワード線を識別するアドレスとビット線を識別するアドレスとで識別することが可能である。
【００２０】
例えばメモリセルが２ビット／セルのメモリセルである場合、Ｅｒ、Ａ、Ｂ、Ｃレベルの４つの閾値分布に２ビットのデータ値がそれぞれ対応づけられる。この対応をデータコーディングという。データコーディングは予め定められる。データの書き込み（プログラム）時には、データコーディングに従って記憶するデータ値に応じたレベル（閾値分布）となるようにメモリセルに電荷が注入される。また、２ビット／セルを用いる場合、１つのメモリセルグループは２ページに対応する。各メモリセルが記憶可能な２ビットは、それぞれこの２ページに対応する。以下では、この２ページをロアーページおよびアッパーページと呼ぶ。
【００２１】
ホスト３０から送信されるユーザデータは、内部バス１６に転送されてデータバッファ１２に一旦記憶される。符号化／復号部１４は、不揮発性メモリ２０に記憶されるユーザデータを符号化して符号化データ（符号語）を生成する。また、符号化／復号部１４は、不揮発性メモリ２０から読み出された符号化データ（読出し情報又は受信語ともいう）を復号してユーザデータを復元する。なお、符号化／復号部１４により符号化されるデータには、ユーザデータ以外にも、メモリコントローラ１０内部で用いる制御データ等が含まれてもよい。
【００２２】
以上のような構成を備えるメモリシステム１における書込み処理では、制御部１１は、不揮発性メモリ２０への書込み時に、ユーザデータの符号化を符号化／復号部１４に指示する。その際、制御部１１は、不揮発性メモリ２０における符号語の記憶場所（記憶アドレス）を決定し、決定した記憶場所もメモリＩ／Ｆ１３へ指示する。符号化／復号部１４は、制御部１１からの指示に基づいて、データバッファ１２上のユーザデータを符号化して符号語を生成する。符号化方式としては、例えば、ＬＤＰＣ（Low-Density  Parity-Check）符号やＢＣＨ（Bose-Chaudhuri-Hocquenghem）符号やＲＳ（Reed-Solomon）符号を用いた符号化方式を採用することができる。
【００２３】
一方、読出し処理では、制御部１１は、不揮発性メモリ２０からの読出し時に、不揮発性メモリ２０上のアドレスを指定してメモリＩ／Ｆ１３へ読み出しを指示する。また、制御部１１は、符号化／復号部１４へ復号の開始を指示する。メモリＩ／Ｆ１３は、制御部１１の指示に従って、不揮発性メモリ２０の指定されたアドレスに対する読み出しを実行し、この読み出しにより得られた読出し情報を符号化／復号部１４に入力する。そして、符号化／復号部１４は、入力された読出し情報を復号する。
【００２４】
符号化／復号部１４は、例えば、多次元の誤り訂正符号の各成分符号の符号化器／復号器として用いることもできる。多次元の誤り訂正符号とは、誤り訂正符号の少なくとも一つ以上の構成単位であるシンボルが、複数のより小規模な成分符号によって多重に保護されているものを指す。その際、１シンボルは、例えば１ビット（二元体（binary  field）の元（element））、又は、二元体以外の有限体（finite  field）などのアルファベットの元で構成される。
【００２５】
ここで、多次元の誤り訂正符号の例として、図２に積符号の構成例を示す。図２に示す積符号５００は、各情報ビット（シンボルであってもよい）ｄ０〜ｄ３が、行方向（図面中横方向）と列方向（図面中縦方向）とのそれぞれで、情報長２ビットで且つパリティ長３ビットのハミング符号５１１〜５１５及び５２１〜５２５で保護された構造を備える。このような積符号５００では、全ての情報ビットｄ０〜ｄ３およびパリティビットｐ０〜ｐ２０が行方向（次元１とも称する）のハミング符号５１１〜５１５と列方向（次元２とも称する）のハミング符号５２１〜５２５とで二重に保護されている。積符号を構成する２つの成分符号のうち一方がハミング符号５１１〜５１５であり、他方がハミング符号５２１〜５２５である。
【００２６】
図２のような積符号の復号では、例えば符号化／復号部１４は、まず積符号を構成する次元１のハミング符号５１１〜５１５を順次復号する。次元１のハミング符号５１１〜５１５のうち復号に成功しないハミング符号があった場合、符号化／復号部１４は、次元１のハミング符号５１１〜５１５の復号において訂正できた誤りを訂正し、次元２のハミング符号５２１〜５２５を復号する。次元２のハミング符号５２１〜５２５のうち復号に成功しないハミング符号があった場合、符号化／復号部１４は、次元２のハミング符号５２１〜５２５の復号において訂正できた誤りを訂正し、再度、次元１のハミング符号５１１〜５１５を復号する。以上のように、次元１のハミング符号５１１〜５１５の復号と次元２のハミング符号５２１〜５２５の復号とが、終了条件を満たすまで繰り返し実行される。以下では、このように繰り返される復号を反復復号処理という場合がある。積符号は、訂正能力が高く計算量の小さい符号化方式を実現するために使用される。
【００２７】
なお、多次元の誤り訂正符号としては、図２に例示する積符号５００に限定されず、例えば一般化ＬＤＰＣ符号（Generalized  Low  Density  Parity  Check  Code）などであってもよい。一般化ＬＤＰＣ符号を含む一般の多次元の誤り訂正符号では、シンボルごとに保護の多重度が異なっていてもよい。また、一般の多次元の誤り訂正符号では成分符号を次元１と次元２のようにグループ分けすることができないが、このような符号構造を有する多次元の誤り訂正符号に対しても本技術は適用することが可能である。以下では、多次元の誤り訂正符号として積符号を用いた場合を例に説明する。
【００２８】
本実施形態では、積符号の反復復号処理に含まれる２つの成分符号の復号処理のうち、一方が硬判定復号であり、他方が軟判定復号である。硬判定復号は、不揮発性メモリ２０から読み出した「０」か「１」の１ビットのバイナリ情報のみを入力とし、パリティと呼ばれる冗長ビットを使って誤りを訂正し、「０」か「１」の１ビットのバイナリ情報を出力する復号方法である。軟判定復号は、不揮発性メモリ２０に記憶されている各ビットの値が「０」である確率を示す情報を入力（受信語）とする。また軟判定復号は、例えば、復号後の各ビットが「０」である確率に基づいて判定（事後値硬判定）を実行し、「０」か「１」の１ビットのバイナリ情報を出力する。
【００２９】
本実施形態に係るメモリシステム１における反復復号において、繰り返される復号処理のうち初回の復号処理を除いた復号処理では、軟判定復号の入力として硬判定復号の復号結果が反映されたデータが使用される。本実施形態では、硬判定復号の復号結果（１ビットのバイナリ情報）のみではなく、復号結果に基づいて復号の尤もらしさを算出するための情報を求め、求めた情報も軟判定復号の入力に反映させる。復号の尤もらしさは、例えば、対数尤度比（Log  Likelihood  Ratio：ＬＬＲ）で表される。復号の尤もらしさ（ＬＬＲ）を算出するための情報は、例えば、ＬＬＲを求めるためのテーブル（ＬＬＲテーブル）のインデックス情報である。
【００３０】
図３は、符号化／復号部１４の機能構成の一例を示すブロック図である。図３は、図２に示すような２次元の積符号の符号化／復号を行う場合の例を示す。以下では主に２次元の誤り訂正符号を例に説明するが、Ｎ次元（Ｎは２以上の整数）の誤り訂正符号について同様の手法を適用できる。
【００３１】
図３に示すように、符号化／復号部１４は、符号化器２０１ａ、２０１ｂと、復号器２０２ａ、２０２ｂとを含む。符号化器２０１ａ、２０１ｂは、それぞれ次元１および次元２の成分符号を符号化する。復号器２０２ａ、２０２ｂは、それぞれ次元１および次元２の成分符号を復号する。以下では、復号器２０２ａが次元１の成分符号（第１の成分符号）を硬判定復号し、復号器２０２ｂが次元２の成分符号（第２の成分符号）を軟判定復号するものとして説明する。
【００３２】
図２の共有メモリ１７は、符号化器２０１ａ、２０１ｂによる符号化、および、復号器２０２ａ、２０２ｂによる復号で参照されるデータを記憶する。共有メモリ１７は、例えば、復号器２０２ａ、２０２ｂのｍ回目（ｍは１以上の整数）の復号処理で、ｎ次元（ｎは１以上Ｎ以下の整数）の誤り訂正符号を復号するときに用いる入力データをそれぞれ記憶する。また、共有メモリ１７は、ｍ回目の復号処理でのｎ次元の誤り訂正符号の復号結果である出力データをそれぞれ記憶する。共有メモリ１７は、符号化／復号部１４の内部に備えられていてもよい。
【００３３】
図４は、本実施形態による反復復号処理の概要を説明するための図である。反復復号処理は、復号器２０２ａ、２０２ｂによる復号処理を繰り返す処理である。メモリＩ／Ｆ１３を介して不揮発性メモリ２０から読み出された復号対象のデータは共有メモリ１７に記憶される（ステップＳ１１）。復号器２０２ａおよび復号器２０２ｂは、それぞれ共有メモリ１７にアクセスすることができる。
【００３４】
不揮発性メモリ２０からデータを読み出す際には、ある読み出し電圧を印加したときにメモリセルに電流が流れるか流れないかでメモリセルのデータが「１」であるか「０」であるかが判定される。本実施形態では、復号器２０２ｂは、読み出されたデータの尤もらしさ（尤度情報）を用いて軟判定復号を行う。このため、メモリコントローラ１０は、ソフトビットリードにより不揮発性メモリ２０からの読み出しを実行する。ソフトビットリードは、ビット値の判定の基準となる読み出し電圧（基準読み出し電圧）と、基準読み出し電圧より低い側および高い側に一定値（ΔＲ）ずつずらした複数の読み出し電圧と、によるデータを読み出す方法である。
【００３５】
以下では、基準読み出し電圧と、基準読み出し電圧から±ΔＲ、±２ΔＲ、±３ΔＲずらした６つの読み出し電圧と、を用いる場合を例に説明する。基準読み出し電圧からずらす読み出し電圧の個数はこれに限られるものではない。また以下では、例えば基準読み出し電圧から＋ΔＲずらした読み出し電圧を用いた読み出し結果を、＋ΔＲの読み出し結果という場合がある。−ΔＲ、±２ΔＲ、±３ΔＲについても同様である。
【００３６】
基準読み出し電圧で読み出された「１」か「０」かを示すビット値を以下ではＨＢ（ハードビット）という。図４に示すように、共有メモリ１７は、ＨＢとともにソフトビットＳＢ１〜ＳＢ４を記憶する。ソフトビットは、例えば、以下のように算出される１ビットの値である。なお以下は、３ビット／セルのメモリセルのロアーページからデータを読み出す場合の例である。他のメモリセル、および、他のページからデータを読み出す場合は、それぞれに対して適切に定められたソフトビットを記憶すればよい。ソフトビットの個数は４つに限られるものではない。
【００３７】
ＳＢ１は、＋Δ２Ｒの読み出し結果と、−Δ２Ｒの読み出し結果とのＸＮＯＲ（否定排他的論理和）である。ＳＢ２は、−Δ３Ｒと＋３ΔＲのＸＮＯＲをＸＮＯＲ１とし、ＸＮＯＲ１と−ΔＲのＸＮＯＲをＸＮＯＲ２とするとき、ＸＮＯＲ２と＋ΔＲのＸＮＯＲである。ＳＢ３は、ミドルページのＨＢの読み出し結果である。ＳＢ４は、アッパーページのＨＢの読み出し結果である。
【００３８】
ソフトビット（ＳＢ１〜ＳＢ４）が、復号の尤もらしさ（ＬＬＲ）を算出するためのインデックス情報に相当する。以下では、このインデックス情報をＳＢインデックスという。ＬＬＲは、ＨＢとＳＢインデックスとをインデックスとして決定される。例えば復号器２０２ｂは、共有メモリ１７に書き込まれているＨＢおよびＳＢインデックス（ＳＢ１〜ＳＢ４）を取得し、取得した各ビットの値から、復号の尤もらしさ（ＬＬＲ）を算出する。復号器２０２ｂは、例えば、予め定められたＬＬＲテーブルを用いてＬＬＲを算出する。ＬＬＲテーブルは、ＨＢおよびＳＢインデックスを含むインデックスと、ＬＬＲと、を対応づけた情報（対応情報）である。
【００３９】
図５は、ＬＬＲテーブルの一例を示す図である。図５に示すように、ＬＬＲテーブルは、ＨＢおよびＳＢインデックス（ＳＢ１〜ＳＢ４）を含むインデックスごとに、ＬＬＲの値が対応づけられている。図４に示す例のようにＨＢおよびＳＢ１〜ＳＢ４の計５ビットが用いられる場合、ＬＬＲテーブルのインデックスは、最大２５＝３２種類となり得る。インデックスは３２種類すべてが使用される必要はなく、未使用のインデックスがあってもよい。
【００４０】
復号器２０２ｂが使用するＬＬＲテーブルは、例えば積符号と組み合わせずに用いる軟判定復号のために、メモリシステム１のベンダーにより予め定められている場合がある。本実施形態では、予め定められたＬＬＲテーブルに未使用のインデックスがある場合、復号器２０２ａ用のインデックスとして未使用のインデックスを使用するように、メモリシステム１のベンダーによってＬＬＲテーブルが修正され、修正したＬＬＲテーブルが使用される。復号器２０２ａ用のインデックスとは、復号器２０２ａによる復号の尤もらしさを表すＬＬＲ（以下、復号器２０２ａのＬＬＲという場合がある）を、復号器２０２ｂが算出可能とするためのインデックスを表す。未使用のインデックスがない場合等には、予め定められたＬＬＲテーブルのインデックスのうち、復号器２０２ａのＬＬＲに最も近い値が復号器２０２ｂによって算出されるようなインデックスが使用されてもよい。
【００４１】
図４に戻り、復号器２０２ａは、共有メモリ１７に書き込まれているＨＢ（「０」か「１」の１ビットのバイナリ情報）を入力し、硬判定復号を実行する（ステップＳ１２）。本実施形態では、復号器２０２ａは、硬判定復号で得られるＨＢのみでなく、復号器２０２ａによる復号（誤り訂正）の状態に応じてＳＢインデックスを決定し、決定したＳＢインデックスを共有メモリ１７に書き込む（ステップＳ１３）。復号の状態は、例えば、訂正ビット数である。復号器２０２ａは、復号の状態に応じたＬＬＲが算出されるような値を、復号の状態に応じたＳＢインデックスとして決定する。
【００４２】
復号器２０２ａにより書き込まれたＨＢおよびＳＢインデックスが、次の復号器２０２ｂによる軟判定復号で用いられる（ステップＳ１４）。すなわち、復号器２０２ｂは、ＨＢのみでなく、復号器２０２ａによる硬判定復号の状態に応じて変更されるＳＢインデックスを用いて軟判定復号を実行可能となる。これにより、軟判定復号の精度を向上させることが可能となる。
【００４３】
復号器２０２ｂは、ＬＬＲテーブルを用いて、復号器２０２ａにより書き込まれたＨＢおよびＳＢインデックスをＬＬＲに変換する（ステップＳ１５）。復号器２０２ｂは、得られたＬＬＲを用いて、読み出されたデータが「０」であるか「１」であるかの判定（事後値硬判定）を実行し、１ビットのバイナリ情報を軟判定復号の復号結果ＨＢとして共有メモリ１７に書き込む（ステップＳ１６）。
【００４４】
硬判定復号の状態に応じたＳＢインデックスの決定手順の具体例を以下に説明する。以下は、硬判定復号の状態として訂正ビット数を用いる例である。
【００４５】
復号器２０２ａが、ある符号語を復号し、復号結果である符号語Ｙが得られたとする。さらに符号語Ｙが得られたときの訂正ビット数ｔがαであったとする。ｉ番目のビットのＬＬＲは以下の（１）式により算出されるものとする。
ＬＬＲ（ｂｉ）＝ｌｏｇ（Ｐ（ｂｉ＝０｜Ｙｔ＝α）／Ｐ（ｂｉ＝１｜Ｙｔ＝α））  （１）
【００４６】
Ｐ（ｂｉ＝０｜Ｙｔ＝α）は、訂正ビット数ｔがαであるときの、ｉ番目のビットが「０」である確率（尤もらしさ）を表す。Ｐ（ｂｉ＝１｜Ｙｔ＝α）は、訂正ビット数ｔがαであるときの、ｉ番目のビットが「１」である確率（尤もらしさ）を表す。ＬＬＲの値が正であればビットデータは「０」である確率が高く、負であればビットデータは「１」である確率が高い。またＬＬＲの絶対値は、そのビットデータの信頼度を表す。ＬＬＲの絶対値が大きいほど信頼度が高く、小さいほど信頼度が低い。
【００４７】
ｂｉが、復号器２０２ａの復号により「０」と判定されたビットであったとする。送信語（復号器２０２ａに入力されるデータ）をＸとしたとき、送信語Ｘと異なるが当該ビット（ｉ番目のビット）は送信語Ｘと同じ値であると判定される確率が、正しい復号を行う確率に対して無視できるほど低くなるという条件下（例えばα＝１という条件下）では、Ｐ（ｂｉ＝０｜Ｙｔ＝α）は以下の（２）式および（３）式のように変形できる。
Ｐ（ｂｉ＝０｜Ｙｔ＝α）＝Ｐ（ｂｉ＝０，Ｘ＝Ｙｔ＝α｜Ｙｔ＝α）＋
Ｐ（ｂｉ＝０，Ｘ≠Ｙｔ＝α｜Ｙｔ＝α）  （２）
Ｐ（ｂｉ＝０｜Ｙｔ＝α）≒Ｐ（ｂｉ＝０，Ｘ＝Ｙｔ＝α｜Ｙｔ＝α）  （３）
【００４８】
正しい訂正を行ったときに当該ビット（ｉ番目のビット）が「１」と判定される確率は０であるため、Ｐ（ｂｉ＝１｜Ｙｔ＝α）は、以下の（４）式のように変形できる。
Ｐ（ｂｉ＝１｜Ｙｔ＝α）＝Ｐ（ｂｉ＝１，Ｘ＝Ｙｔ＝α｜Ｙｔ＝α）＋
Ｐ（ｂｉ＝１，Ｘ≠Ｙｔ＝α｜Ｙｔ＝α）
＝Ｐ（ｂｉ＝１，Ｘ≠Ｙｔ＝α｜Ｙｔ＝α）  （４）
【００４９】
（３）式を用いると（１）式のｌｏｇの真数は、訂正が正しい確率と訂正が誤っている（誤訂正である）確率との比で表される。（２）式の右辺の第２項が省略できないとき、すなわち訂正が正しい確率および誤訂正である確率のオーダーが同程度となる領域では、（２）式の第２項を（３）式のように省略せず、（２）式を用いて値を算出したほうがより正確な値が算出できる。
【００５０】
（３）式の近似を用いると、例えば、ある符号において想定されるエラー率（Bit  Error  Rate：ＢＥＲ）がβであり、訂正ビット数α＝１で訂正される符号語の訂正が正しい確率が９０％であり、誤訂正である確率が１０％であるときのＬＬＲは、（１）式により以下のように算出することができる。
・ｉ番目のビットが「１」から「０」に訂正されたとき
ＬＬＲ（ｂｉ）＝ｌｏｇ（Ｐ（ｂｉ＝０｜Ｙｔ＝１）／Ｐ（ｂｉ＝１｜Ｙｔ＝１））＝ｌｏｇ９＝２．１９
・ｉ番目のビットが「０」から「１」に訂正されたとき
ＬＬＲ（ｂｉ）＝ｌｏｇ（Ｐ（ｂｉ＝０｜Ｙｔ＝１）／Ｐ（ｂｉ＝１｜Ｙｔ＝１））＝ｌｏｇ（１／９）＝−２．１９
【００５１】
このように、訂正されたビットの値が「０」のときＬＬＲの符号は正となり、「０」のときＬＬＲの符号は負となる。また、この復号結果（符号語Ｙ）が得られたときの訂正ビット数ｔが１（α＝１）であるという条件は同じであるため、そのビットの尤もらしさを表す絶対値はＬＬＲの符号によらず等しくなる。
【００５２】
同様にして、予め想定されるＢＥＲ（β）で訂正ビット数がαのときに正しい訂正を行う確率をシミュレーションにより算出することができる。すなわち、例えばあるＢＥＲおよび訂正ビット数αを仮定して、ランダムにエラービットを記憶させた不揮発性メモリ２０に対する誤り訂正をシミュレーションすることにより、符号語が正しい訂正であった確率および符号語が誤訂正であった確率が算出できる。そして、これらの確率を（１）式に代入することによりＬＬＲが算出できる。
【００５３】
復号器２０２ａで用いる符号の種類によっては、符号語の訂正が正しい確率および誤訂正である確率を、シミュレーションによらず、計算式により算出することができる。ここでは例として復号器２０２ａがＲＳ符号を用いる場合を例に、ＬＬＲの算出方法を説明する。
【００５４】
ＲＳ符号ではｒビットの連続した固まりを一つのシンボルとし、Ｎ個のシンボルすなわちｒ×Ｎビットの並びを一つの符号語とする。図６は、８ビット（ｒ＝８）を１シンボルとするＲＳ符号の例を示す図である。簡単のため、ここでは訂正シンボル数が１であるＲＳ符号を考える。
【００５５】
ＲＳ符号を復号して、ｔビット訂正の結果得られた符号語が正しい確率Ｐｃｏｒ，α＝ｔは、ＲＳ符号語の中にエラーが１ビットだけ含まれている確率に等しくなる。Ｐｃｏｒ，α＝ｔは、以下の（５）式により表される。
Ｐｃｏｒ，α＝ｔ＝ＮＣ１×ｒＣｔ×βｔ×（１−β）Ｎｒ−ｔ  （５）
【００５６】
ＲＳ符号を復号して、１ビット訂正（α＝１）の結果得られた符号語が誤訂正である確率Ｐｍｉｓ，α＝１は、いくつかのパターンに対応する確率すべての和を取るのが正しい。すなわち、Ｐｍｉｓ，α＝１は、以下の（６）式のように表される。
Ｐｍｉｓ，α＝１＝Ｐｍｉｓ，α＝１，ｅ＝３＋Ｐｍｉｓ，α＝１，ｅ＝５＋Ｐｍｉｓ，α＝１，ｅ＝７＋・・・  （６）
【００５７】
Ｐｍｉｓ，α＝１，ｅ＝ｔは、１つの符号語にｔビットのエラーが２シンボル以上に分かれて挿入され、ＲＳ符号を復号した結果誤った１ビットを訂正する確率を示す。。なお、Ｐｍｉｓ，ｅ＝t＝係数×βt×（１−β）Ｎｒ−t（β＜＜１）となるため、ｔが小さいほどＰｍｉｓが大きくなる
【００５８】
α＝２のとき、すなわち２ビット訂正の結果得られた符号語が誤訂正である確率Ｐｍｉｓ，α＝２は、以下の（７）式により表される。
Ｐｍｉｓ、α＝２＝Ｐｍｉｓ,α＝２，ｅ＝２＋Ｐｍｉｓ,α＝２，ｅ＝４＋Ｐｍｉｓ,α＝２，ｅ＝６＋・・・  （７）
【００５９】
同様にα＝３および４の場合は、訂正の結果得られた符号語が誤訂正である確率は、それぞれ以下の（８）式および（９）式で表される。
Ｐｍｉｓ，α＝３＝Ｐｍｉｓ，α＝３，ｅ＝３＋Ｐｍｉｓ，α＝３，ｅ＝５＋Ｐｍｉｓ，α＝３，ｅ＝７＋・・・（８）
Ｐｍｉｓ，α＝４＝Ｐｍｉｓ，α＝４，ｅ＝４＋Ｐｍｉｓ，α＝４，ｅ＝６＋Ｐｍｉｓ，α＝４，ｅ＝８＋・・・（９）
【００６０】
（６）〜（９）式の右辺は（ＢＥＲ(β)＜＜１）の条件下でｅの値が最も小さい項に近似することができる。従って、例えば（６）式は、右辺のうち最も寄与が大きいパターンであるｔ＝３の場合の確率Ｐｍｉｓ，α＝１，ｅ＝３すなわち符号語内に３ビットのエラーが含まれているが１ビットしか検出されないパターンに近似できる。
【００６１】
この場合、（６）式は、さらに以下の（１０）式のように変形できる。なお（Ｎ／２ｒ）は、ＲＳ符号語の短縮による誤訂正検出の寄与に相当する。
Ｐｍｉｓ，α＝１≒Ｐｍｉｓ，α＝１，ｅ＝３
＝（Ｎ／２ｒ）×ＮＣ２×ＮＣ１×ｒＰ２×β３×（１−β）Ｎｒ−３  （１０）
【００６２】
上記のようなＰｃｏｒおよびＰｍｉｓをそれぞれ（１）式のＰ（ｂｉ＝０｜Ｙｔ＝α）およびＰ（ｂｉ＝１｜Ｙｔ＝α）の代わりに用いることにより、ＲＳ符号に対するＬＬＲが算出できる。
【００６３】
図７は、ＲＳ符号の１シンボル内のビット数を８としたときの１ビット訂正時のＬＬＲの絶対値の算出結果の例を示す図である。Ｎはシンボル数を表す。図７ではＮ＝１０、１５、２０、２５、３０の場合の例が示されている。ＢＥＲはエラー率を表す。図７ではＢＥＲ＝０．００１、０．００２、０．００３、０．００４、０．００５、０．００６、０．００７、０．００８、０．００９、０．０１、０．０１２５の場合の例が示されている。図７ではＬＬＲの値が小数で表されているが、小数点を丸め込み、離散化した値を用いてもよい。
【００６４】
以上のようにして算出された、復号器２０２ａによる復号の尤もらしさを表すＬＬＲが、復号器２０２ｂによる軟判定復号時に算出されるように、軟判定復号で用いられるＬＬＲテーブルがメモリシステム１のベンダーにより予め定義されるとともに、復号時には復号器２０２ａが復号の状態に応じてこのＬＬＲテーブルのインデックス（ＨＢ、ＳＢインデックス）を決定する。復号器２０２ａは、例えば以下のように、ＨＢと復号器２０２ａの訂正ビット数ｔとの組合せごとに、インデックスを決定する。
・ＨＢ＝「０」、ｔ＝１：インデックスＩＤＸ１
・ＨＢ＝「０」、ｔ＝２：インデックスＩＤＸ２
・ＨＢ＝「０」、ｔ＝３：インデックスＩＤＸ３
・ＨＢ＝「１」、ｔ＝１：インデックスＩＤＸ４
・ＨＢ＝「１」、ｔ＝２：インデックスＩＤＸ５
・ＨＢ＝「１」、ｔ＝３：インデックスＩＤＸ６
【００６５】
インデックスＩＤＸ１〜インデックスＩＤＸ６には、ＨＢおよび訂正ビット数ｔに応じて上記のように算出されたＬＬＲの値に対応づけられたインデックスが、メモリシステム１のベンダーによりそれぞれ定義される。インデックスのうちＨＢ以外がＳＢインデックスに相当する。従って、インデックスを決定することは、ＳＢインデックスを決定することを含む。
【００６６】
復号時には、復号器２０２ａは、硬判定復号により得られたＨＢと、訂正ビット数ｔと、に対応するインデックスを、例えば上記のようにしてメモリシステム１のベンダーにより予め定義された６つのインデックスから決定する。復号器２０２ａは、決定したインデックスに相当するＨＢ、ＳＢ１〜ＳＢ４の値を、共有メモリ１７に書き込む。
【００６７】
次に、このように構成された本実施形態にかかるメモリシステム１による反復復号処理の流れについて説明する。図８は、本実施形態における反復復号処理の一例を示すフローチャートである。
【００６８】
ホスト３０からの読出し要求があった場合、制御部１１は、不揮発性メモリ２０からのデータ（ユーザデータおよびパリティ）の読み出しをメモリＩ／Ｆ１３へ指示する。読み出されたデータは共有メモリ１７に記憶される。本実施形態では、メモリＩ／Ｆ１３は、ＨＢおよびＳＢ１〜ＳＢ４を共有メモリ１７に書き込む（ステップＳ１０１）。
【００６９】
復号器２０２ｂは、共有メモリ１７から軟判定復号に用いるデータ（ＨＢ、ＳＢ１〜ＳＢ４）を読み出す（ステップＳ１０２）。復号器２０２ｂは、読み出されたデータに対して軟判定復号を実行する（ステップＳ１０３）。復号器２０２ａは、軟判定復号の結果であるＨＢを共有メモリ１７に記憶する（ステップＳ１０４）。
【００７０】
符号化／復号部１４は、エラーがすべて訂正されたか否かを判定する（ステップＳ１０５）。エラーがすべて訂正された場合（ステップＳ１０５：Ｙｅｓ）、反復復号処理が終了する。
【００７１】
エラーがすべて訂正されていない場合（ステップＳ１０５：Ｎｏ）、復号器２０２ａは、共有メモリ１７から硬判定復号に用いるデータ（ＨＢ）を読み出す（ステップＳ１０６）。復号器２０２ａは、読み出されたデータに対して硬判定復号を実行する（ステップＳ１０７）。復号器２０２ａは、復号結果であるＨＢおよび硬判定復号による訂正ビット数に応じてＳＢインデックス（ＳＢ１〜ＳＢ４）の値を決定する（ステップＳ１０８）。復号器２０２ａは、復号結果であるＨＢと、決定したＳＢインデックス（ＳＢ１〜ＳＢ４）とを、共有メモリ１７に記憶する（ステップＳ１０９）。
【００７２】
符号化／復号部１４は、エラーがすべて訂正されたか否かを判定する（ステップＳ１１０）。エラーがすべて訂正された場合（ステップＳ１１０：Ｙｅｓ）、反復復号処理が終了する。
【００７３】
エラーがすべて訂正されていない場合（ステップＳ１１０：Ｎｏ）、符号化／復号部１４は、反復復号を終了するか否かを判定する（ステップＳ１１１）。符号化／復号部１４は、例えば、反復復号の回数が予め設定した上限数（Ｍ回）に達した場合に反復復号を終了すると判定する。反復復号を終了しない場合（ステップＳ１１１：Ｎｏ）、ステップＳ１０２に戻り処理が繰り返される。反復復号を終了すると判定した場合（ステップＳ１１１：Ｙｅｓ）、符号化／復号部１４は、反復復号処理を終了する。
【００７４】
本実施形態に係るメモリシステムでは、ＳＢインデックスを決定する機能を有するＳＢインデックス演算器が共有メモリ１７内に備えられていてもよい。本実施形態に係るメモリシステムにおいて、以下、共有メモリ１７内のＳＢインデックス演算器が、ＳＢインデックスを決定する機能を備えるものとして説明する。まず、復号器２０２ａは、硬判定復号による復号結果であるＨＢ、および、訂正ビット数を共有メモリ１７のＳＢインデックス演算器に渡す。ＳＢインデックス演算器は、復号器２０２ａから受け取ったＨＢおよび訂正ビット数に応じて、ＳＢインデックス（ＳＢ１〜ＳＢ４）の値を決定する。ＳＢインデックス演算器は、決定したＳＢインデックスの値を、共有メモリ１７の記憶領域に記憶する。
【００７５】
以上のように、本実施形態によれば、硬判定復号の復号結果（１ビットのバイナリ情報）のみではなく、復号結果に基づいて復号の尤もらしさを算出するためのインデックス情報を求め、求めた情報を次の軟判定復号の入力に反映させることができる。従って、軟判定復号による訂正能力を向上させることが可能となる。
【００７６】
（第２の実施形態）
第１の実施形態では、復号結果（ＨＢ）と、訂正ビット数に応じてインデックス情報（ＳＢインデックス）が決定された。第２の実施形態では、さらに、訂正されたビットの元のＬＬＲの絶対値γも考慮してＳＢインデックスが決定される。すなわち本実施形態では、硬判定復号の状態として訂正ビット数と元のＬＬＲの絶対値γとが用いられる。元のＬＬＲとは、不揮発性メモリ２０から読み出されたときに共有メモリ１７に記憶されるＳＢ１〜ＳＢ４を用いて算出されるＬＬＲである。
【００７７】
図９は、第２の実施形態の符号化／復号部１４−２の機能構成の一例を示すブロック図である。なお第２の実施形態に係るメモリシステムの概略構成は、符号化／復号部１４−２以外は第１の実施形態のメモリシステムの概略構成を示す図１と同様であるため、説明を省略する。
【００７８】
図９に示すように、符号化／復号部１４−２は、符号化器２０１ａ、２０１ｂと、復号器２０２−２ａ、２０２ｂとを含む。第２の実施形態では、復号器２０２−２ａの機能が第１の実施形態の復号器２０２ａと異なっている。その他の機能は第１の実施形態と同様であるため、同一の符号を付し説明を省略する。
【００７９】
復号器２０２−２ａは、復号結果（ＨＢ）および訂正ビット数に加えて、訂正されたビットの元のＬＬＲの絶対値γに応じて、ＳＢインデックスを決定する。例えば不揮発性メモリ２０から読み出されたときのＳＢ１〜ＳＢ４を、共有メモリ１７内の、反復復号の中で更新されるＳＢ１〜ＳＢ４の記憶領域とは異なる領域に記憶しておき、復号器２０２−２ａは、この領域に記憶されたＳＢ１〜ＳＢ４と、ＬＬＲテーブル（例えば共有メモリ１７内に記憶される）とから元のＬＬＲを算出する。元のＬＬＲは、例えば不揮発性メモリ２０から読み出されたときのＳＢ１〜ＳＢ４を用いて算出して共有メモリ１７に記憶しておき、復号器２０２−２ａで参照可能とされてもよい。
【００８０】
以下、ＳＢインデックスの決定手順の詳細について説明する。本実施形態では、ｉ番目のビットの復号後のＬＬＲは以下の（１１）式のように表される。なおａｂｓ（ＬＬＲ）はＬＬＲの絶対値を表す。
ＬＬＲ（ｂｉ）＝ｌｏｇ（Ｐ（ｂｉ＝０｜Ｙｔ＝α，ａｂｓ（ＬＬＲ）＝γ）／Ｐ（ｂｉ＝１｜Ｙｔ＝α，ａｂｓ（ＬＬＲ）＝γ））  （１１）
【００８１】
第１の実施形態では、ある符号において想定されるエラー率（ＢＥＲ）がβのとき、訂正ビット数αで訂正される符号語の訂正が正しい確率と、誤訂正である確率とが、シミュレーションにより予め求められた。第２の実施形態では、想定されるエラー率（ＢＥＲ）がβであり、訂正ビット数αで訂正されたビットのＬＬＲの絶対値がγであるときの、訂正が正しい確率と誤訂正である確率とがそれぞれシミュレーションにより求められる。
【００８２】
不揮発性メモリ２０から読み出されたＬＬＲの絶対値（正確にはインデックスの値からＬＬＲテーブルを用いて決定されたＬＬＲの絶対値）が小さいほど、対象のビットがエラーである確率は高いため、復号後のＬＬＲは大きな値をとる。逆に、不揮発性メモリ２０から読み出されたＬＬＲの絶対値が大きいほど、対象のビットがエラーである確率は低いため、復号後のＬＬＲの絶対値は小さい値をとる。
【００８３】
このため、復号器２０２−２ａは、復号器２０２−２ａによる硬判定復号の結果のＨＢ、硬判定復号時の訂正ビット数α、および、元のＬＬＲの絶対値γに応じて、例えば以下のようにインデックスの値を決定する。
・ＨＢ＝「０」、ｔ＝１、γ＜３：インデックスＩＤＸ１
・ＨＢ＝「０」、ｔ＝１、γ≧３：インデックスＩＤＸ２
・ＨＢ＝「０」、ｔ＝２、γ＜３：インデックスＩＤＸ３
・ＨＢ＝「０」、ｔ＝２、γ≧３：インデックスＩＤＸ４
・ＨＢ＝「１」、ｔ＝１、γ＜３：インデックスＩＤＸ５
・ＨＢ＝「１」、ｔ＝１、γ≧３：インデックスＩＤＸ６
・ＨＢ＝「１」、ｔ＝２、γ＜３：インデックスＩＤＸ７
・ＨＢ＝「１」、ｔ＝２、γ≧３：インデックスＩＤＸ８
【００８４】
このように、復号器２０２−２ａは、ＨＢと、訂正ビット数ｔと、元のＬＬＲの絶対値γの値が含まれる範囲と、の組合せごとに異なるインデックスを決定してもよい。範囲の条件、および、インデックスの個数は上記例に限られるものではない。例えば、範囲の境界を示す値は「３」に限られず、他の値であってもよい。また、γ＜３、３≦γ≦５、５＜γのように、３以上の範囲の条件を用いてもよい。この場合、ＨＢ（０または１）および訂正ビット数ｔ（１または２）の値に応じて、合計１２個の組み合わせに対する１２個のインデックスが用いられてもよい。ＬＬＲの値は使用できるインデックスの数に応じて統合されてもよい。例えば未使用インデックスが８個であり、１２個のインデックスを割り当てられない場合は、１２個のインデックスを上記のような８個のインデックスに統合して使用してもよい。
【００８５】
次に、このように構成された本実施形態にかかるメモリシステム１による反復復号処理の流れについて説明する。図１０は、本実施形態における反復復号処理の一例を示すフローチャートである。
【００８６】
本実施形態では、ステップＳ２０８の処理が、第１の実施形態の反復復号処理の流れを示す図８のステップＳ１０８と異なる。ステップＳ２０１、ステップＳ２０２、ステップＳ２０３、ステップＳ２０４、ステップＳ２０５、ステップＳ２０６、ステップＳ２０７、ステップＳ２０９、ステップＳ２１０、および、ステップＳ２１１は、それぞれ第１の実施形態の反復復号処理の流れを示す図８のステップＳ１０１、ステップＳ１０２、ステップＳ１０３、ステップＳ１０４、ステップＳ１０５、ステップＳ１０６、ステップＳ１０７、ステップＳ１０９、ステップＳ１１０、および、ステップＳ１１１と同様であるため、説明を省略する。
【００８７】
ステップＳ２０８では、復号器２０２−２ａは、復号結果であるＨＢと、硬判定復号による訂正ビット数と、訂正ビットの元のＬＬＲの絶対値とに応じてＳＢインデックス（ＳＢ１〜ＳＢ４）の値を決定する（ステップＳ２０８）。
【００８８】
本実施形態に係るメモリシステムでは、ＳＢインデックスを決定する機能を有するＳＢインデックス演算器が共有メモリ１７内に備えられていてもよい。本実施形態に係るメモリシステムにおいて、以下、共有メモリ１７内のＳＢインデックス演算器が、ＳＢインデックスを決定する機能を備えるものとして説明する。まず、復号器２０２−２ａは、硬判定復号による復号結果であるＨＢ、および、訂正情報（訂正ビット数、訂正ビットの位置など）を共有メモリ１７のＳＢインデックス演算器に渡す。ＳＢインデックス演算器は、ＬＬＲテーブルと、元のＳＢ１〜ＳＢ４とから、元のＬＬＲを算出する。ＳＢインデックス演算器は、復号器２０２−２ａから受け取ったＨＢおよび訂正ビット数、並びに、算出した元のＬＬＲの絶対値に応じて、ＳＢインデックス（ＳＢ１〜ＳＢ４）の値を決定する。ＳＢインデックス演算器は、決定したＳＢインデックスの値を、共有メモリ１７の記憶領域に記憶する。
【００８９】
このように、本実施形態によれば、復号結果および訂正ビット数に加え、訂正ビットの元のＬＬＲも考慮して、ＬＬＲを算出するためのインデックスが決定される。このため、第１の実施形態より正確にＬＬＲを算出可能となる。
【００９０】
（第３の実施形態）
第３の実施形態では、第２の実施形態で用いた元のＬＬＲの絶対値γの代わりに、復号の尤もらしさを表す指標であるＩＥＤ（Incremental  Euclidian  Distance）が用いられる。すなわち本実施形態では、硬判定復号の状態としてＩＥＤが用いられる。ＩＥＤは、例えば、復号結果である符号語Ｙが得られたときの、すべての訂正ビットの元のＬＬＲの絶対値の総和を表す。
【００９１】
図１１は、第３の実施形態の符号化／復号部１４−３の機能構成の一例を示すブロック図である。なお第３の実施形態に係るメモリシステムの概略構成は、符号化／復号部１４−３以外は第１の実施形態のメモリシステムの概略構成を示す図１と同様であるため、説明を省略する。
【００９２】
図１１に示すように、符号化／復号部１４−３は、符号化器２０１ａ、２０１ｂと、復号器２０２−３ａ、２０２ｂとを含む。第３の実施形態では、復号器２０２−３ａの機能が第１の実施形態の復号器２０２ａと異なっている。その他の機能は第１の実施形態と同様であるため、同一の符号を付し説明を省略する。
【００９３】
復号器２０２−３ａは、復号結果（ＨＢ）に加えて、ＩＥＤの値ωに応じて、ＳＢインデックスを決定する。例えば不揮発性メモリ２０から読み出されたときのＳＢ１〜ＳＢ４を、共有メモリ１７内の、反復復号の中で更新されるＳＢ１〜ＳＢ４の記憶領域とは異なる領域に記憶しておき、復号器２０２−３ａは、この領域に記憶されたＳＢ１〜ＳＢ４と、ＬＬＲテーブル（例えば共有メモリ１７内に記憶される）とから１以上の訂正ビットそれぞれの元のＬＬＲを算出する。さらに復号器２０２−３ａは、訂正ビットそれぞれに対して算出したＬＬＲの絶対値の総和をＩＥＤの値ωとして算出する。
【００９４】
本実施形態では、ｉ番目のビットの復号後のＬＬＲは以下の（１２）式のように表される。（１２）式は、復号された符号語Ｙに対するＩＥＤ（ＹＩＥＤ）がωであったときの、各ビットの復号後のＬＬＲを表す。
ＬＬＲ（ｂｉ）＝ｌｏｇ（Ｐ（ｂｉ＝０｜ＹＩＥＤ＝ω）／Ｐ（ｂｉ＝１｜ＹＩＥＤ＝ω））  （１２）
【００９５】
本実施形態では、想定されるエラー率（ＢＥＲ）がβであり、ＩＥＤの値がωであるときの、訂正が正しい確率と誤訂正である確率とがそれぞれシミュレーションにより求められる。
【００９６】
訂正ビット数ｔが多くなるほどＩＥＤも大きな値となり、また訂正ビットのＬＬＲの絶対値が大きいとＩＥＤも大きな値となる。すなわち、ＩＥＤが小さいほど符号語Ｙの信頼度は高いため、訂正後のＬＬＲの絶対値の値は大きくなり、ＩＥＤが大きいほど符号語Ｙの信頼度は低いため、訂正後のＬＬＲの絶対値の値は小さくなる。
【００９７】
このため、復号器２０２−３ａは、復号器２０２−３ａによる硬判定復号の結果のＨＢ、および、ＩＥＤの値ωに応じて、例えば以下のようにインデックスの値を決定する。
・ＨＢ＝「０」、    ＩＥＤ≦１：インデックスＩＤＸ１
・ＨＢ＝「０」、１＜ＩＥＤ≦３：インデックスＩＤＸ２
・ＨＢ＝「０」、３＜ＩＥＤ≦５：インデックスＩＤＸ３
・ＨＢ＝「０」、５＜ＩＥＤ≦９：インデックスＩＤＸ４
・ＨＢ＝「０」、９＜ＩＥＤ    ：インデックスＩＤＸ５
・ＨＢ＝「１」、    ＩＥＤ≦１：インデックスＩＤＸ６
・ＨＢ＝「１」、１＜ＩＥＤ≦３：インデックスＩＤＸ７
・ＨＢ＝「１」、３＜ＩＥＤ≦５：インデックスＩＤＸ８
・ＨＢ＝「１」、５＜ＩＥＤ≦９：インデックスＩＤＸ９
・ＨＢ＝「１」、９＜ＩＥＤ    ：インデックスＩＤＸ１０
【００９８】
このように、復号器２０２−３ａは、ＨＢと、ＩＥＤの値ωの値が含まれる範囲と、の組合せごとに異なるインデックスを決定してもよい。範囲の条件、および、インデックスの個数は上記例に限られるものではない。また第２の実施形態と同様に、ＬＬＲの値は使用できるインデックスの数に応じて統合されてもよい。
【００９９】
次に、このように構成された本実施形態にかかるメモリシステム１による反復復号処理の流れについて説明する。図１２は、本実施形態における反復復号処理の一例を示すフローチャートである。
【０１００】
本実施形態では、ステップＳ３０８の処理が、第１の実施形態の反復復号処理の流れを示す図８のステップＳ１０８と異なる。ステップＳ３０１、ステップＳ３０２、ステップＳ３０３、ステップＳ３０４、ステップＳ３０５、ステップＳ３０６、ステップＳ３０７、ステップＳ３０９、ステップＳ３１０、および、ステップＳ３１１は、それぞれ第１の実施形態の反復復号処理の流れを示す図８のステップＳ１０１、ステップＳ１０２、ステップＳ１０３、ステップＳ１０４、ステップＳ１０５、ステップＳ１０６、ステップＳ１０７、ステップＳ１０９、ステップＳ１１０、および、ステップＳ１１１と同様であるため、説明を省略する。
【０１０１】
ステップＳ３０８では、復号器２０２−３ａは、復号結果であるＨＢ、および、元のＬＬＲの絶対値の総和であるＩＥＤの値ωに応じてＳＢインデックス（ＳＢ１〜ＳＢ４）の値を決定する（ステップＳ３０８）。
【０１０２】
本実施形態に係るメモリシステムでは、ＳＢインデックスを決定する機能を有するＳＢインデックス演算器が共有メモリ１７内に備えられていてもよい。本実施形態に係るメモリシステムにおいて、以下、共有メモリ１７内のＳＢインデックス演算器が、ＳＢインデックスを決定する機能を備えるものとして説明する。まず、復号器２０２−３ａは、硬判定復号による復号結果であるＨＢ、および、訂正情報（訂正ビット数、訂正ビットの位置など）を共有メモリ１７のＳＢインデックス演算器に渡す。ＳＢインデックス演算器は、ＬＬＲテーブルと、元のＳＢ１〜ＳＢ４とから、１以上の訂正ビットそれぞれの元のＬＬＲを算出する。ＳＢインデックス演算器は、訂正ビットそれぞれに対して算出したＬＬＲの絶対値の総和をＩＥＤの値ωとして算出する。ＳＢインデックス演算器は、復号器２０２−３ａから受け取ったＨＢ、および、算出したＩＥＤの値ωに応じて、ＳＢインデックス（ＳＢ１〜ＳＢ４）の値を決定する。ＳＢインデックス演算器は、決定したＳＢインデックスの値を、共有メモリ１７の記憶領域に記憶する。
【０１０３】
このように、本実施形態によれば、復号結果に加え、訂正ビットの元のＬＬＲの絶対値の総和（ＩＥＤ）も考慮して、ＬＬＲを算出するためのインデックスが決定される。このため、第１の実施形態より正確にＬＬＲを算出可能となる。
【０１０４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１０５】
１  メモリシステム
１０  メモリコントローラ
１１  制御部
１２  データバッファ
１３  メモリＩ／Ｆ
１４、１４−２、１４−３  符号化／復号部
１５  ホストＩ／Ｆ
１６  内部バス
１７  共有メモリ
２０  不揮発性メモリ
３０  ホスト
２０１ａ、２０１ｂ  符号化器
２０２ａ、２０２−２ａ、２０２−３ａ、２０２ｂ  復号器
【図１】
2020155861.tif 000003
【図２】
2020155861.tif 000004
【図３】
2020155861.tif 000005
【図４】
2020155861.tif 000006
【図５】
2020155861.tif 000007
【図６】
2020155861.tif 000008
【図７】
2020155861.tif 000009
【図８】
2020155861.tif 000010
【図９】
2020155861.tif 000011
【図１０】
2020155861.tif 000012
【図１１】
2020155861.tif 000013
【図１２】
2020155861.tif 000014