(57)【要約】【課題】  より高い性能を有するメモリシステムを提供する。【解決手段】  一実施形態によるメモリシステムは、メモリセルを含む記憶装置と、メモリコントローラとを含む。メモリコントローラは、メモリセルからの第１データ読み出しに基づく第１データを受け取り、メモリセルからの第１データ読み出しと異なる第２データ読み出しに基づく第２データを受け取り、第１データおよび第２データに基づく第１値を第１関係に従って第２値に変換し、第１値を第１関係と異なる第２関係に従って第３値に変換する、ように構成されている。【選択図】      図１
2019056955.tif 000002
【特許請求の範囲】
【請求項１】
メモリセルを含む記憶装置と、
前記メモリセルからの第１データ読み出しに基づく第１データを受け取り、
前記メモリセルからの前記第１データ読み出しと異なる第２データ読み出しに基づく第２データを受け取り、
前記第１データおよび前記第２データに基づく第１値を第１関係に従って第２値に変換し、
前記第１値を前記第１関係と異なる第２関係に従って第３値に変換する、
ように構成されているコントローラと、
を備えるメモリシステム。
【請求項２】
前記コントローラは、前記第２値の誤りの訂正に失敗すると、前記第１値を前記第３値に変換し、前記第３値の誤りの訂正を試みる、ようにさらに構成されている、
請求項１に記載のメモリシステム。
【請求項３】
前記コントローラは、前記第１データの復号に失敗した場合に前記第２データを読み出すようにさらに構成されている、
請求項１に記載のメモリシステム。
【請求項４】
前記コントローラは、前記第２値、前記第３値、および１つの第１行列を使用して、前記第２値に基づく第１シンドローム値および前記第３値に基づく第２シンドローム値を算出する、ようにさらに構成されている、
請求項１に記載のメモリシステム。
【請求項５】
前記コントローラは、
前記第１および第２シンドローム値に基づいて、前記第２値と前記第３値のいずれかを選択し、
前記選択された値および前記第１行列を使用して、前記第１値の誤りの訂正を試みる、
ようにさらに構成されている、
請求項４に記載のメモリシステム。
【請求項６】
第１メモリセルおよび第２メモリセルを含む記憶装置と、
前記第１および第２メモリセルからの第１データ読み出しにそれぞれ基づく第１データおよび第２データを受け取り、
前記第１および第２メモリセルからの前記第１データ読み出しと異なる第２データ読み出しにそれぞれ基づく第３データおよび第４データを受け取り、
前記第１乃至第４データ、および第１関係を使用して、第１値および第２値を取得し、
前記第１値および前記第２値の誤りを検出して、第１検出結果を取得し、
前記第１乃至第４データ、および前記第１関係と異なる第２関係を使用して、第３値および第４値を取得し、
前記第３値および前記第４値の誤りを検出して、第２検出結果を取得し、
前記第１検出結果および前記第２検出結果の比較の結果に基づいて、前記第１値および前記２値の誤りを訂正する、
ように構成されたコントローラと、
を備えるメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、概してメモリシステムに関する。
【背景技術】
【０００２】
記憶装置および記憶装置を制御するメモリコントローラを含んだメモリシステムが知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−２４４３０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
より高い性能を有するメモリシステムを提供する。
【課題を解決するための手段】
【０００５】
一実施形態によるメモリシステムは、メモリセルを含む記憶装置と、メモリコントローラとを含む。メモリコントローラは、メモリセルからの第１データ読み出しに基づく第１データを受け取り、メモリセルからの第１データ読み出しと異なる第２データ読み出しに基づく第２データを受け取り、第１データおよび第２データに基づく第１値を第１関係に従って第２値に変換し、第１値を第１関係と異なる第２関係に従って第３値に変換する、ように構成されている。
【図面の簡単な説明】
【０００６】
【図１】第１実施形態のメモリシステムの要素および接続、ならびに関連する要素を示す。
【図２】第１実施形態のブロックの要素および接続、ならびに関連する要素を示す。
【図３】第１実施形態のセルトランジスタの閾値電圧の分布の例を示す。
【図４】第１実施形態のセンスアンプの要素および接続を示す。
【図５】第１実施形態のＥＣＣ回路の要素および接続、ならびにメモリコントローラ中のＥＣＣ回路に関連する機能ブロックを示す。
【図６】第１実施形態のハードビットデータ、ソフトビットデータ、ＬＬＲラベル、およびＬＬＲ値の例を示す。
【図７】第１実施形態のメモリシステムの動作の一部のフローを示す。
【図８】第１実施形態での閾値電圧分布の変化を示す。
【図９】第１実施形態でのハードビットデータ、ソフトビットデータ、およびＬＬＲラベルの例を示す。
【図１０】第１実施形態でのＬＬＲテーブルの変更の例を示す。
【図１１】第１実施形態でのＬＬＲテーブルの変更の別の例を示す。
【図１２】ある閾値電圧分布の境界を示す。
【図１３】いくつかのケースでの誤り訂正能力を示す。
【図１４】第２実施形態のメモリシステムの動作の一部のフローを示す。
【図１５】図１４のフローに続く部分を示す。
【図１６】第２実施形態でのＬＬＲテーブルの補正の第１例を示す。
【図１７】第２実施形態でのＬＬＲテーブルの補正の第２例を示す。
【図１８】第２実施形態でのＬＬＲテーブルの補正の第３例を示す。
【図１９】第２実施形態でのＬＬＲテーブルの補正の第４例を示す。
【図２０】第２実施形態でのＬＬＲテーブルの補正の第５例を示す。
【図２１】第２実施形態のＥＣＣ回路の要素および接続、ならびにメモリコントローラ中のＥＣＣ回路に関連する機能ブロックを示す。
【図２２】第３実施形態のメモリシステムの動作の一部のフローを示す。
【図２３】第３実施形態の２種のＬＬＲテーブルの一部を示す。
【図２４】第３実施形態の２つの読み出し電圧の各々でのＬＬＲラベルを示す。
【図２５】第３実施形態のシフトテーブルを示す。
【図２６】第４実施形態のＥＣＣ回路中の要素および接続、ならびにメモリコントローラ中のＥＣＣ回路に関連する機能ブロックを示す。
【図２７】第４実施形態の全体制御部の一部およびシンドロームチェック回路のより詳細なブロック図である。
【図２８】第４実施形態のメモリシステムの動作の一部のフローを示す。
【図２９】第４実施形態のメモリシステムの動作の一部のサブフローを示す。
【図３０】第４実施形態に係る種々の検査行列の例を示す。
【図３１】第５実施形態の全体制御部の一部およびシンドロームチェック回路のより詳細なブロック図である。
【図３２】第５実施形態に係る種々の検査行列の例を示す。
【図３３】第５実施形態の復号用検査行列と部分行列の例を示す。
【図３４】第５実施形態の復号用検査行列と部分行列の別の例を示す。
【図３５】第６実施形態のＥＣＣ回路の一部の要素を示す。
【図３６】第６実施形態の実書き込みデータと連接符号の例を示す。
【図３７】第６実施形態のＥＣＣ回路中の要素および接続、ならびにメモリコントローラ中のＥＣＣ回路に関連する機能ブロックを示す。
【図３８】第６実施形態のハードビットデータ、ソフトビットデータ、ＬＬＲラベル、ＬＬＲ値の詳細を示す。
【図３９】第６実施形態のメモリシステムの動作の一部のサブフローを示す。
【発明を実施するための形態】
【０００７】
以下に実施形態が図面を参照して記述される。以下の記述において、略同一の機能および構成を有する構成要素は同一符号を付され、繰り返しの説明は省略される場合がある。また、ある実施形態についての記述は全て、明示的にまたは自明的に排除されない限り、別の実施形態の記述としても当てはまる。
【０００８】
各機能ブロックは、ハードウェア、コンピュータソフトウェアのいずれかまたは両者を組合せたものとして実現することができる。このため、各機能ブロックがこれらのいずれでもあることが明確となるように、概してそれらの機能の観点から記述される。各機能ブロックが、以下の例のように区別されていることは必須ではない。例えば、一部の機能が例示の機能ブロックとは別の機能ブロックによって実行されてもよい。
【０００９】
また、実施形態の方法のフローにおけるいずれのステップも、例示の順序に限定されず、そうでないと示されない限り、例示の順序とは異なる順序でおよび（または）別のステップと並行して起こることが可能である。
【００１０】
本明細書および特許請求の範囲において、ある第１要素が別の第２要素に「接続されている」とは、第１要素が直接的または常時あるいは選択的に導電性となる要素を介して第２要素に接続されていることを含む。
【００１１】
（第１実施形態）
（１．構造（構成））
図１は、第１実施形態のメモリシステム中の要素および接続、ならびに関連する要素を示す。図１に示されるように、メモリシステム５は、ホスト装置３により制御され、（半導体）記憶装置１およびメモリコントローラ２を含む。記憶装置１は、メモリコントローラ２により制御される。メモリコントローラ２は、ホスト装置３から命令を受け取り、受け取られた命令に基づいて記憶装置１を制御する。
【００１２】
＜１．１．メモリコントローラ＞
メモリコントローラ２は、ホストインターフェイス２１、ＣＰＵ（central processing unit）２２、ＲＡＭ（random access memory）２３、ＲＯＭ（read only memory）２４、メモリインターフェイス２５、ＥＣＣ（error correction code）回路２６を含む。ＲＯＭ２４に保持されかつＲＡＭ２３上にロードされたファームウェア（プログラム）がＣＰＵ２２によって実行されることによって、メモリコントローラ２は種々の動作、およびホストインターフェイス２１ならびにメモリインターフェイス２５の機能の一部を実行する。ＲＡＭ２３は、さらに、データを一時的に保持し、バッファおよびキャッシュとして機能する。
【００１３】
ホストインターフェイス２１は、バスを介してホスト装置３と接続され、メモリコントローラ２とホスト装置３との通信を司る。メモリインターフェイス２５は、記憶装置１と接続され、メモリコントローラ２と記憶装置１との通信を司る。
【００１４】
ＥＣＣ回路２６は、記憶装置１に書き込まれるデータおよび記憶装置１から読み出されたデータに対して、誤りの検出および訂正に必要な処理を行う。具体的には、ＥＣＣ回路２６は、記憶装置１に書き込まれるデータ（実書き込みデータ）の誤り訂正のための冗長データ（パリティ）を生成する。生成された冗長データと実書き込みデータが記憶装置１に書き込まれる。したがって、記憶装置１から読み出されたデータは、実書き込みデータと、対応するパリティを含む。
【００１５】
また、ＥＣＣ回路２６は、記憶装置１から読み出されたデータの中の誤りを検出し、誤りがある場合に誤りの訂正を試みる。ＥＣＣ回路２６は、例えば、ＢＣＨ符号およびリードソロモン符号等の硬判定に基づく誤り訂正、およびＬＤＰＣ（low-density parity check）等の軟判定に基づく誤り訂正を行うことができる。ＥＣＣ回路２６については、後に詳述される。
【００１６】
＜１．２．記憶装置＞
記憶装置１は、（メモリ）セルアレイ１１、入出力回路１２、シーケンサ（制御回路）１３、ドライバ１５、センスアンプ１６、およびロウデコーダ１９等の要素を含む。
【００１７】
セルアレイ１１は複数のメモリブロック（ブロック）ＢＬＫ（ＢＬＫ０、ＢＬＫ１、…）を含む。ブロックＢＬＫは、例えばデータの消去単位であり、各ブロックＢＬＫ中のデータは一括して消去される。１つのブロックＢＬＫより小さい単位（例えばブロックＢＬＫの半分）でデータが消去されてもよい。
【００１８】
各ブロックＢＬＫは複数のストリングユニットＳＵ（ＳＵ０、ＳＵ１、…）の集合である。各ストリングユニットＳＵは複数のＮＡＮＤストリング（ストリング）ＳＴＲ（ＳＴＲ０、ＳＴＲ１、…）（図示せず）の集合である。ストリングＳＴＲは、複数のメモリセルトランジスタ（セルトランジスタ）ＭＴを含む。
【００１９】
入出力回路１２は、ＮＡＮＤバスを介して、メモリコントローラ２と接続されている。ＮＡＮＤバスは、信号￣ＣＥ、ＣＬＥ、ＡＬＥ、￣ＷＥ、￣ＲＥ、￣ＷＰ、８ビットの幅の信号ＤＱ、およびデータストローブ信号ＤＱＳならびに￣ＤＱＳを伝送する。本明細書において、信号の名称の前の記号「￣」は、記号「￣」を伴わない名称の信号の反転論理を示し、記号「￣」を伴う信号がローレベルの場合にアサートされていることを意味する。
【００２０】
入出力回路１２は、信号ＤＱを受け取り、信号ＤＱを送信する。入出力回路１２は、また、データストローブ信号ＤＱＳならびに￣ＤＱＳを受け取り、データストローブ信号ＤＱＳならびに￣ＤＱＳを送信する。入出力回路１２は、メモリコントローラ２から種々の制御信号を受け取り、制御信号に基づいて、信号ＤＱを取り込み、また出力する。制御信号は、信号￣ＣＥ、ＣＬＥ、ＡＬＥ、￣ＷＥ、￣ＲＥ、￣ＷＰ、およびデータストローブ信号ＤＱＳならびに￣ＤＱＳを含む。
【００２１】
信号ＤＱは、コマンド（ＣＭＤ）、書き込みデータまたは読み出しデータ（ＤＡＴ）、アドレス信号（ＡＤＤ）、ステータスデータ（ＳＴＡ）等を含む。
【００２２】
アサートされている信号￣ＣＥは、記憶装置１をイネーブルにする。アサートされている信号ＣＬＥは、この信号ＣＬＥと並行して記憶装置１に入力される信号ＤＱがコマンドＣＭＤであることを記憶装置１に通知する。アサートされている信号ＡＬＥは、この信号ＡＬＥと並行して記憶装置１に入力される信号ＤＱがアドレス信号ＡＤＤであることを記憶装置１に通知する。アサートされている信号￣ＷＥは、この信号￣ＷＥと並行して記憶装置１に入力される信号ＤＱを記憶装置１に取り込ませることを指示する。アサートされている信号￣ＲＥは、記憶装置１に信号ＤＱを出力することを指示する。アサートされている信号￣ＷＰは、データ書き込みおよび消去の禁止を記憶装置１に指示する。信号ＲＹ／￣ＢＹは、記憶装置１がレディー状態であるか、ビジー状態であるかを示し、ローレベルによってビジー状態を示す。記憶装置１は、レディー状態においてメモリコントローラ２からの命令を受け付け、ビジー状態においてメモリコントローラ２からの命令を受け付けない。
【００２３】
メモリコントローラ２から記憶装置１に向かう信号ＤＱＳおよび￣ＤＱＳは、信号ＤＱを出力するタイミングを記憶装置１に指示する。記憶装置１からメモリコントローラ２に向かう信号ＤＱＳおよび￣ＤＱＳは、信号ＤＱを出力するタイミングをメモリコントローラ２に通知する。
【００２４】
シーケンサ１３は、入出力回路１２からコマンドＣＭＤおよびアドレス信号ＡＤＤを受け取り、コマンドＣＭＤおよびアドレス信号ＡＤＤに基づいて、ドライバ１５、センスアンプ１６、およびロウデコーダ１９を制御する。
【００２５】
ドライバ１５は、複数の電位のうちの選択されたものをロウデコーダ１９に供給する。ロウデコーダ１９は、ドライバ１５から種々の電位を受け取り、入出力回路１２からアドレス信号ＡＤＤを受け取り、受け取られたアドレス信号ＡＤＤに基づいて１つのブロックＢＬＫを選択し、選択されたブロックＢＬＫにドライバ１５からの電位を転送する。
【００２６】
センスアンプ１６は、セルトランジスタＭＴの状態をセンスし、センスされた状態に基づいて読み出しデータを生成し、また、書き込みデータをセルトランジスタＭＴに転送する。
【００２７】
＜１．３．セルアレイ＞
図２は、第１実施形態のセルアレイ１１のいくつかの要素および接続の例を示し、１つのブロックＢＬＫ０の要素および接続、ならびに関連する要素を示す。複数の（例えば全ての）ブロックＢＬＫは、みな図２に示される要素および接続を含む。
【００２８】
１つのブロックＢＬＫは、複数（例えば４つ）のストリングユニットＳＵ０〜ＳＵ３を含む。１つのブロックＢＬＫが１つのストリングユニットＳＵのみを含んでいてもよい。
【００２９】
ｐ（ｐは自然数）本のビット線ＢＬ０〜ＢＬｐ−１の各々は、各ブロックＢＬＫにおいて、ストリングユニットＳＵ０〜ＳＵ３の各々からの１つのストリングＳＴＲと接続されている。
【００３０】
各ストリングＳＴＲは、１つの選択ゲートトランジスタＳＴ、複数（例えば８つ）のメモリセルトランジスタＭＴ（ＭＴ０〜ＭＴ７）、および１つの選択ゲートトランジスタＤＴ（ＤＴ０、ＤＴ１、ＤＴ２、またはＤＴ３）を含む。トランジスタＳＴ、ＭＴ、およびＤＴは、この順で、ソース線ＣＥＬＳＲＣと１つのビット線ＢＬとの間に直列に接続されている。セルトランジスタＭＴは、制御ゲート電極（ワード線ＷＬ）、および周囲から絶縁された電荷蓄積層を含み、電荷蓄積層中の電荷の量に基づいてデータを不揮発に保持することができる。
【００３１】
相違する複数のビット線ＢＬとそれぞれ接続された複数のストリングＳＴＲは１つのストリングユニットＳＵを構成する。各ストリングユニットＳＵにおいて、セルトランジスタＭＴ０〜ＭＴ７の制御ゲート電極（ゲート）は、ワード線ＷＬ０〜ＷＬ７とそれぞれ接続されている。さらに、各ブロックＢＬＫにおいて、相違するストリングユニットＳＵ中の同じアドレスのワード線ＷＬも相互に接続されている。１つのストリングユニットＳＵ中でワード線ＷＬを共有するセルトランジスタＭＴの組は、セルユニットＣＵと称される。
【００３２】
トランジスタＤＴ０〜ＤＴ３はストリングユニットＳＵ０〜ＳＵ３にそれぞれ属する。α＝０〜３の各々の場合について、ストリングユニットＳＵαの複数のストリングＳＴＲの各々のトランジスタＤＴαのゲートは選択ゲート線ＳＧＤＬαに接続されている。トランジスタＳＴのゲートは、選択ゲート線ＳＧＳＬに接続されている。
【００３３】
＜１．４．セルトランジスタ＞
図３を参照して、セルトランジスタＭＴについて記述される。記憶装置１は、１つのセルトランジスタＭＴにおいて２ビット以上のデータを保持することができる。図３は、書き込みの結果、１つのセルトランジスタＭＴ当たり３ビットのデータを保持するセルトランジスタＭＴの閾値電圧の分布を示す。各セルトランジスタＭＴの閾値電圧は、保持されるデータに応じた値を有する。セルトランジスタＭＴ当たり３ビットの記憶の場合、各セルトランジスタＭＴは、８つの閾値電圧のうちのいずれかを有し得る。８つの閾値電圧は、“１１１” データ、“１１０”データ、“１００”データ、“０００”データ、“０１０”データ、“０１１”データ、“００１”データ、および“１０１”データをそれぞれ保持している状態である。“１１１” データ、“１１０”データ、“１００”データ、“０００”データ、“０１０”データ、“０１１”データ、“００１”データ、および“１０１”データをそれぞれ保持している状態のセルトランジスタＭＴは、Ｅｒ、Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、およびＧ状態にあると称される。
【００３４】
ある同じ３ビットデータを保持する複数のセルトランジスタＭＴであっても、セルトランジスタＭＴの特性のばらつき等に起因して、互いに相違する閾値電圧を有し得る。このため、ある同じ３ビットデータを保持する複数のセルトランジスタＭＴの閾値電圧は１つの分布を形成する。
【００３５】
読み出し対象のセルトランジスタＭＴによって保持されているデータの判別のために、当該セルトランジスタＭＴの状態が判断される。状態の判断のために、読み出し電圧ＶＡ、ＶＢ、ＶＣ、ＶＤ、ＶＥ、ＶＦ、およびＶＧが用いられる。以下、読み出し電圧ＶＡ、ＶＢ、ＶＣ、ＶＤ、ＶＥ、ＶＦ、およびＶＧを含め、レベルの判断ために読み出し対象のセルトランジスタＭＴに印加されるある大きさの電圧は、読み出し電圧ＶＣＧＲと称される場合がある。
【００３６】
読み出し対象のセルトランジスタＭＴの閾値電圧がある読み出し電圧ＶＣＧＲを超えているか否かが、このセルトランジスタＭＴの閾値電圧の状態の判定に用いられる。読み出し電圧ＶＣＧＲ以上の閾値電圧を有するセルトランジスタＭＴは、制御ゲート電極において読み出し電圧ＶＣＧＲを受け取ってもオフを維持する。一方、読み出し電圧ＶＣＧＲ未満の閾値電圧を有するセルトランジスタＭＴは、制御ゲート電極において読み出し電圧ＶＣＧＲを受け取っていると、オンしている。電圧ＶＲＥＡＤは、非読み出し対象のセルユニットＣＵのセルトランジスタＭＴのワード線ＷＬに印加され、いずれの状態にあるセルトランジスタＭＴの閾値電圧より高い。
【００３７】
１つのセルユニットＣＵのセルトランジスタＭＴのある同じ位置（桁）のビットのデータの組は、１つのページを構成する。
【００３８】
あるページ、例えばアッパーページのデータは、読み出し電圧ＶＡを用いた読み出し（以下、読み出し電圧Ｖβ（βは、Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、またはＧ）を用いた読み出しはβ読み出しと称される）およびＥ読み出しにより割り出される。すなわち、Ａ読み出しにより、読み出し対象のセルトランジスタＭＴが、Ｅｒ状態にあるか、またはＡ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、あるいはＧ状態にあるかが、特定される。次いで、Ｅ読み出しにより、Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、またはＧ状態にある読出し対象セルトランジスタＭＴが、Ａ、Ｂ、Ｃ、またはＤ状態にあるか、あるいはＥ、Ｆ、またはＧ状態にあるかが判断される。読み出し対象セルトランジスタＭＴは、Ｅｒ、Ｅ、Ｆ、またはＧ状態にあると、ロワーページにおいて“１”データを保持し、Ａ、Ｂ、Ｃ、またはＤ状態にあると、ロワーページにおいて“０”データを保持すると判断される。
【００３９】
ミドルページおよびアッパーページの読み出しについても同じである。ミドルページ読み出しでは、Ｂ読み出し、Ｄ読み出し、およびＦ読み出しにより、各読み出し対象セルトランジスタＭＴがミドルページにおいて保持するデータが判断される。アッパーページ読み出しでは、Ｃ読み出しおよびＧ読み出しにより、各読み出し対象セルトランジスタＭＴがアッパーページにおいて保持するデータが判断される。
【００４０】
＜１．５．センスアンプ＞
図４は、センスアンプ１６中の要素および接続を示す。センスアンプ１６は、ｐ個のセンスアンプ回路ＳＡＣ、複数のデータラッチＤＬ（ＤＬ０、ＤＬ１、ＤＬ２、…ＤＬｑ（ｑは自然数））、ｐ個の演算回路ＬＣ、データラッチＸＤＬを含む。データラッチＤＬγ（γは０またはｑ以下の自然数）は、ｐ個のデータラッチ回路ＤＬＣγを含む。データラッチＸＤＬは、ｐ個のデータラッチ回路ＸＤＬＣを含む。データラッチ回路ＤＬＣおよびＸＤＬＣは、データを一時的に保持する。
【００４１】
各ビット線ＢＬは、１つのセンスアンプ回路ＳＡＣ、ｑ＋１個のデータラッチ回路ＤＬＣ０、ＤＬＣ１、ＤＬＣ２、…ＤＬＣｑ、１つの演算回路ＬＣ、１つのデータラッチ回路ＸＤＬＣと接続されている。
【００４２】
各センスアンプ回路ＳＡＣは、データの読み出しの間、当該センスアンプ回路ＳＡＣと接続された１つのビット線ＢＬを介して読み出し対象の１つのセルトランジスタＭＴと電気的に接続される。そして、各センスアンプ回路ＳＡＣは、読み出し対象のセルトランジスタＭＴの閾値電圧に基づいて定まる大きさの電圧を、当該センスアンプ回路ＳＡＣ中のノード上でセンスし、センスの結果に基づいて、当該センスアンプ回路ＳＡと電気的に接続されたセルトランジスタＭＴが２つの状態のいずれに属するかを判断する。セルトランジスタＭＴの２つの状態は、“０”データまたは“１”データとして表現され、各センスアンプ回路ＳＡＣは、読み出しデータが“０”データであるかまたは“１”データであるかを、当該センスアンプ回路ＳＡＣと接続されたいずれかのデータラッチ回路ＤＬＣにおいて保持する。
【００４３】
演算回路ＬＣは、当該演算回路ＬＣと接続されたデータラッチ回路ＤＬＣおよびＸＤＬＣ中のデータに対して論理演算を行うことができる。論理演算は、否定（ＮＯＴ）演算、論理和（ＯＲ）演算、論理積（ＡＮＤ）演算、排他的論理和（ＸＯＲ）演算、否定排他的論理和（ＸＮＯＲ）演算を含む。
【００４４】
＜１．６．ＥＣＣ回路および関連する要素＞
図５は、ＥＣＣ回路２６中の要素および接続、ならびにメモリコントローラ２中のＥＣＣ回路２６に関連する機能ブロックを示す。メモリコントローラ２は、全体制御部２７を有する。全体制御部２７は、ＣＰＵ２２、ＲＡＭ２３、およびＲＯＭ２４のそれぞれの機能の一部の組合せにより実現される。
【００４５】
全体制御部２７は、メモリコントローラ２の全体の動作を制御する。そのような制御は、ＥＣＣ回路２６の動作に関する処理を含む。全体制御部２７は、記憶装置１からの読み出しデータの誤りの訂正を試みる際、メモリインターフェイス２５を介して、誤り訂正に必要なデータを読み出すことを記憶装置１に指示する。誤り訂正に必要なデータは、ハードビット（ＨＢ）データおよびソフトビット（ＳＢ）データを含む。データ保持部２７１は、例えばＲＡＭ２３の機能により実現され、ハードビットデータおよびソフトビットデータを保持する。また、全体制御部２７は、ハードビットデータおよびソフトビットデータから、ＬＬＲ（log likelihood ratio）値を割り出す。全体制御部２７は、データ保持部２７１およびＬＬＲ変換部２７２を含む。
【００４６】
ハードビットデータは、ある読み出し対象のセルユニット（選択セルユニット）ＣＵ中の読み出し対象のページ（選択ページ）から、ロワーページ読み出し、ミドルページ読み出し、またはアッパーページ読み出しによって読み出されたデータである。ハードビットデータは、例えば１ページの大きさを有し、選択セルユニットＣＵ中の各セルトランジスタ（選択セルトランジスタ）ＭＴからのデータ読み出し結果に基づくビット（ハードビット）の列を含む。ソフトビットデータもソフトビットの列を含み、各ソフトビットは、１つの選択セルトランジスタＭＴに関する情報を示す。ソフトビットデータは、各ビットにおいて、当該ビットに対応する選択セルトランジスタＭＴから相違する条件で読み出された複数のビット列に対する論理演算の結果を示す。ソフトビットデータは、演算の詳細に基づいて、種々のタイプを含む。ハードビットデータおよびソフトビットデータについては、後にさらに記述される。
【００４７】
ＬＬＲ変換部２７２は、ハードビットデータおよびソフトビットデータ中の互いに関連する複数ビットの組合せを、当該組合せに対応する１つのＬＬＲ値に変換することができる。複数ビットの各組合せは、以下、ＬＬＲラベルと称される。各ＬＬＲ値は、当該ＬＬＲ値に関連するハードビットの値（“０”または“１”）の確からしさを示す。
【００４８】
ＬＬＲ変換部２７２は、値の相違する複数のＬＬＲラベルと、対応する複数のＬＬＲ値との関係を認識している。変換は、例えば、ＬＬＲテーブルにより行われることができる。ＬＬＲ変換部２７２は、複数のＬＬＲテーブルを保持することができる。ＬＬＲテーブルは、例えば、メモリシステム５に予め、例えば、メモリシステム５の出荷の時点で、格納されている。ＬＬＲ変換部２７２は、ＬＬＲテーブル中のＬＬＲラベルとＬＬＲ値との関係に補正を施して、補正された関係を用いて変換を行うこともできる。
【００４９】
ＥＣＣ回路２６は、誤り訂正回路２６１および誤り検出回路２６２を含む。誤り訂正回路２６１は、全体制御部２７からＬＬＲ値を受け取り、ＬＬＲ値に対して、ＢＣＨ符号およびリードソロモン符号等を使用するハードビット（ＨＢ）復号、およびＬＤＰＣ等のソフトビット（ＳＢ）復号を行うことができる。誤り訂正回路２６１は、例えばフレームと呼ばれる大きさのデータごとに復号を行うことができる。誤り訂正が成功すると、誤り訂正されたＬＬＲの組（ＬＬＲ値セット）が得られる。誤り訂正回路２６１は、誤り訂正に成功すると、パス判定の旨の信号および誤り訂正されたＬＬＲ値セットを出力する。誤り訂正回路２６１は、誤り訂正に失敗すると、フェイル判定の旨を全体制御部２７に通知する。
【００５０】
誤り検出回路２６２は、パス判定の旨の信号および誤り訂正されたＬＬＲ値セットを入力される。誤り検出回路２６２は、例えばパリティを使用して、入力されたＬＬＲ値セットが誤りを含んでいるかを検査する。上記のように、記憶装置１から読み出されたデータは、実書き込みデータと対応するパリティとを含む。したがって、ＬＬＲ値セットは、実書き込みデータに由来するＬＬＲ値と、パリティに由来するＬＬＲ値とを含む。誤り検出回路２６２は、ＬＬＲ値セットのうちのパリティに対応するＬＬＲ値を使用して、ＬＬＲ値セットのうちの実書き込みデータおよびパリティの誤りを検出できる。
【００５１】
誤りが含まれていれば、フェイル判定の旨の信号を全体制御部２７に供給する。誤りが含まれていなければ、誤り検出回路２６２は、誤り訂正回路２６１によってなされた誤り訂正が確からしいと判断し、パス判定の旨の信号を全体制御部２７に供給するとともに、入力された（すなわち、誤り訂正された）ＬＬＲ値セットを全体制御部２７（特に、ＲＡＭ２３）に供給する。全体制御部２７は、誤り訂正されたＬＬＲ値セットから、ホスト装置３またはメモリコントローラ２が記憶装置１からの読み出しを望んだデータを抽出できる。
【００５２】
図６は、ハードビットデータ、ソフトビットデータ、ＬＬＲラベル、およびＬＬＲ値の例を示し、２つのソフトビットデータ１およびソフトビットデータ２についての例を示す。図６中の各桝は、ハードビットデータ（ＨＢ）、ソフトビットデータ１（ＳＢ１）、ソフトビットデータ２（ＳＢ２）中の１つのビットを示す。図６の上下に並ぶ桝は、ある１つの選択セルトランジスタＭＴについてのビットである。１ページの大きさのハードビットデータは、１セルユニットＣＵ中のセルトランジスタＭＴの数ｐと等しいｐ個のビットを含む。同様に、ソフトビットデータ１、ソフトビットデータ２の各々は、ｐ個のビットを含む。
【００５３】
ソフトビットデータは、選択ページの各セルトランジスタＭＴから相違する条件で読み出されたデータに基づいたビット（ソフトビット）の列を含む。各ソフトビットは、１つの選択セルトランジスタＭＴについての情報を担い、当該選択セルトランジスタＭＴのハードビットについてのＬＬＲ値の割り出しに使用される。
【００５４】
１つの選択セルトランジスタＭＴについての、ハードビット、ソフトビットデータ１中のソフトビット、ソフトビットデータ２中のソフトビットは１つの組を構成する。１つの組は、３ビットのデータを含み、１つのＬＬＲラベルの値に相当する。３ビットの相違する組合せは、相違するＬＬＲラベルに帰結する。
【００５５】
上記のように、各ＬＬＲラベルは、ＬＬＲ変換部２７２によりＬＬＲ値に変換されることができる。各ＬＬＲ値は、プラスまたはマイナスの値を有する。理解の促進のために、ＬＬＲ値は、図および以下の記述では、１０進数により表される。
【００５６】
＜２．動作＞
図７は、メモリシステム５の動作の一部のフローを示し、ある１ページからの読み出しのためのメモリシステム５の動作の一部のフローを示す。より具体的には、あるページからの読み出しデータのうちの１フレームサイズの部分の取得の完了までを示す。いくつかのステップの詳細は、後に記述される。
【００５７】
ステップＳ１において、メモリコントローラ２は、選択ページからページサイズのデータを読み出す。データ読み出しは、例えばデフォルト等の最初に使用すべき読み出し電圧ＶＣＧＲを使用する。読み出されたデータ、すなわちハードビットデータは、ＲＡＭ２３中で保持される。ハードビットデータは、実書き込みデータのためのビットと対応するパリティのためのビットを含む。
【００５８】
ステップＳ２において、メモリコントローラ２は、ハードビットデータ中の実書き込みデータおよびパリティを使用したハードビット中の誤りの訂正（ＨＢ復号）を試みる。復号が成功すると（ステップＳ３のＹｅｓ分岐）、フローは終了する。復号が失敗すると（ステップＳ３のＮｏ分岐）、メモリコントローラ２は、ステップＳ５において、例えばＬＬＲ値を使用する復号（ＳＢ復号）を含む、ソフトビットデータを使用する復号（ＳＢ使用復号）を開始すべきかを判断する。ＳＢ使用復号は、予め定められた条件が満たされると開始され、後続のステップＳ６での読み出し条件を変えた数回のデータ読み出しおよびＨＢ復号が全て失敗した場合に開始されることができる。
【００５９】
ＳＢ使用復号が開始すべきでない場合（ステップＳ５のＮｏ分岐）、メモリコントローラ２は、ステップＳ６において、読み出し条件を変更する。図３では、閾値電圧分布は互いに独立しているため、デフォルトの読み出し電圧ＶＡ、ＶＢ、ＶＣ、ＶＤ、ＶＥ、ＶＦ、および（または）ＶＧの使用により、ＨＢ復号を経て、または経なくても、正しいページデータが読み出される可能性が高い。すなわち、図８の書き込み直後のＥｒ状態およびＡ状態の閾値電圧分布を示す上側の部分に示されるように、デフォルトの読み出し電圧ＶＡは、書き込み直後のＥｒ状態およびＡ状態の閾値電圧分布の間に位置する。しかしながら、ディスターブまたは電荷の移動等の種々の要因により、閾値電圧分布は変動し得、結果、図８の下側の部分に示されるように、閾値電圧分布が広がったり、移動したりして、互いに重なることがある。このような場合、デフォルトの読み出し電圧ＶＡの使用では、正しいページデータ（書き込まれたデータ）を取得できない場合がある。このことに対処するために、読み出し条件の変更は、例えば、デフォルトの読み出し電圧ＶＣＧＲの大きさを、予め定められた大きさだけ大きくまたは小さくすることを含む。読み出し電圧ＶＣＧＲの大きさの変更は、例えば、予め定められた最小単位ごとに指定されることができ、最小単位は、例えば、ある３ＤＡＣまたは−３ＤＡＣである。読み出し条件の変更は、より良い読み出し電圧ＶＣＧＲの大きさの推定、および読み出し電圧ＶＣＧＲの大きさをより良いと推定された大きさに変更することを含み得る。
【００６０】
より良い読み出し電圧ＶＣＧＲの推定は、いわゆるＶｔｈトラッキングを含むことができる。図８の下側の部分に示されるように、閾値電圧分布曲線の極小位置に対応する読み出し電圧ＶＡｏｐｔの使用の方が、より良い読み出し（より高い誤り訂正成功率）に繋がり得る。このことに基づいて、メモリコントローラ２は、閾値電圧分布曲線の極小位置を割り出すために、Ｖｔｈトラッキングを行うことができる。Ｖｔｈトラッキングの結果、メモリコントローラ２は、閾値電圧分布曲線の複数の極小位置の電圧（極小電圧）を知る。Ｖｔｈトラッキングは、読み出し電圧ＶＣＧＲの大きさを変更しながら繰り返しのデータ読み出し、および最適と思われる、読み出し電圧ＶＡ、ＶＢ、ＶＣ、ＶＤ、ＶＥ、ＶＦ、および（または）ＶＧの推定を含む。
【００６１】
Ｖｔｈトラッキングは、選択ページからの読み出しに必要な極小電圧だけの推定のためのみに行われてもよいし、選択セルユニットＣＵの全ページに必要な極小電圧の推定のために行われてもよい。Ｖｔｈトラッキングの結果は、例えばＲＡＭ２３により保持され、例えば、デフォルトの読み出し電圧ＶＣＧＲからのシフトとして保持されることができる。そして、選択ページまたは選択セルユニットＣＵからの次のデータの読み出しの際に、使用されることができる。Ｖｔｈトラッキングの結果は、例えばセルユニットＣＵごとに保持される。または、ある１つのセルユニットＣＵについてのＶｔｈトラッキングの結果が、当該セルユニットＣＵと並ぶ複数のセルユニットＣＵに対して使用されてもよい。
【００６２】
図７に戻る。ステップＳ６は、ステップＳ１に継続する。
【００６３】
ステップＳ５においてＳＢ使用復号が開始すべきと判断されると、メモリコントローラ２は、Ｖｔｈトラッキングを行う（ステップＳ７）。ステップＳ６で、Ｖｔｈトラッキングが行われている場合、フローはステップＳ７をスキップしてステップＳ１１に移行し、ステップＳ６で取得された極小電圧を使用することができる。
【００６４】
ステップＳ１１において、メモリコントローラ２は、誤り訂正回路２６１によって採用されているＳＢ復号の形式に基づいて、選択ページのハードビットデータに対するＳＢ復号に必要な全てのソフトビットデータを取得する。すなわち、メモリコントローラ２は、例えば、変数ｉ＝１として、ソフトビットデータ１を記憶装置１から読み出す。そして、メモリコントローラ２は、ｉを１ずつ増分しながら、ソフトビットデータ１、ソフトビットデータ２、ソフトビットデータ３、…を取得する。ソフトビットデータは、任意の順番で取得されることができる。相違するｉについての相違するソフトビットデータ１、ソフトビットデータ２、ソフトビットデータ３、…は相異し、どのようなソフトビットデータが必要かは、誤り訂正回路２６１によって採用されているＳＢ復号の形式に基づく。ソフトビットデータの例については、後述される。必要な全てのソフトビットデータの取得の結果、メモリコントローラ２は、ｐ個の選択セルトランジスタＭＴのそれぞれについてのｐ個のＬＬＲラベルを取得したことになる。
【００６５】
ステップＳ１２において、ＬＬＲ変換部２７２は、ＬＬＲラベルとＬＬＲ値との予め定められた関係、例えばあるＬＬＲテーブルを使用して、ｐ個のＬＬＲラベルをｐ個のＬＬＲ値にそれぞれ変換して、ｐ個のＬＬＲ値を取得する。
【００６６】
ステップＳ１３において、ＥＣＣ回路２６は、ステップＳ１２において取得されたＬＬＲ値を使用する復号を行って、誤り訂正されたハードビットの取得を試みる。そのために、例えば、ＥＣＣ回路２６は、ＬＬＲ値を使用してＳＢ復号を行う。上記のように、ＥＣＣ回路２６は、フレーム単位で処理を行い、よって、全体制御部２７は、読み出し対象ページ中の全ビットのそれぞれについての全ＬＬＲ値のうちｍ個のＬＬＲ値（被処理ＬＬＲ値セット）を誤り訂正回路２６１に供給する。上記のように、誤り検出回路２６２において誤りが検出されないと、処理中のフレームに対する復号が成功したと判断される。復号が成功すると（ステップＳ１４のＹｅｓ分岐）、その旨の通知（誤り検出回路２６２からのパス判定）がＥＣＣ回路２６によって全体制御部２７に送信される。通知の受信によって、全体制御部２７は被処理ＬＬＲセットの復号が成功したことを知る。全体制御部２７は、また、誤り訂正された被処理ＬＬＲ値セットを受け取り、誤り訂正された被処理ＬＬＲ値セットから、誤り訂正されたハードビットを取得し、フローは終了する。
【００６７】
または、ＥＣＣ回路２６は、ステップＳ１３において、ＨＢ復号を行うことができる。すなわち、ＥＣＣ回路２６は、ＬＬＲ値から硬判定値を導出して硬判定値に基づく復号を行ってもよい。硬判定値は、ＬＬＲ値の符号を表し、例えば、マイナスおよびプラスのＬＬＲ値のそれぞれの硬判定値は１および０である。ＬＬＲ値セットの各ＬＬＲ値の硬判定値の組は、選択ページから読み出されたハードビットデータと同じく複数のビットからなる。そして、このような硬判定値の組、すなわちハードビットデータに対して復号が行われる。ステップＳ１３で得られるハードビットデータは、ソフトビットデータの情報が反映されており、ステップＳ１で得られたハードビットデータと相違する。よって、ステップＳ１３でのＨＢ復号が成功する可能性がある。
【００６８】
一方、誤り訂正回路２６１による誤り訂正が失敗である場合または誤り検出回路２６２によって誤りが検出される場合（ステップＳ１４のＮｏ分岐）、その旨が全体制御部２７に通知される。通知によって、全体制御部２７は、被処理ＬＬＲ値セットに対する復号が失敗したと知り、ステップＳ１５の動作を行う。ステップＳ１５において、全体制御部２７は、読み出し対象ページについてのＬＬＲラベルを別のやり方でＬＬＲ値へ変換し直す。全体制御部２７の制御によって、ＬＬＲ変換部２７２は、例えば、フローの中で最初のＬＬＲラベルからＬＬＲへの変換で、すなわち、ステップＳ１２で使用されたＬＬＲテーブル（「元のＬＬＲテーブルと称される）」と別のＬＬＲテーブルを使用して、または、元のＬＬＲテーブルから補正されたＬＬＲテーブルを使用して、ＬＬＲラベルをＬＬＲ値に変換する。例えば、ステップＳ１３での復号に失敗した対象のＬＬＲ値の変換前のＬＬＲラベルが、再変換の対象とされることができる。全ｐ個のＬＬＲラベルが再変換されてもよい。
【００６９】
ステップＳ１５は、ステップＳ１３に継続する。ステップＳ１３において、全体制御部２７は、再変換によって得られたＬＬＲ値をＥＣＣ回路２６に供給する。供給されるＬＬＲ値は、例えば、前回のステップＳ１４における復号で入力されたＬＬＲ値に対応する選択セルトランジスタＭＴと同じ選択セルトランジスタＭＴについてのものである。
【００７０】
＜２．１．ステップＳ１３（ソフトビットデータ読み出し）＞
図９を参照して、図７のステップＳ１３の例が記述される。図７は、ロワーページが読み出しの対象である場合のハードビットデータ、ソフトビットデータ１、ソフトビットデータ２、ソフトビットデータ３、ソフトビットデータ４、およびＬＬＲラベルの例を示す。読み出し電圧ＶＡ、ＶＢ、ＶＣ、ＶＤ、ＶＥ、ＶＦ、およびＶＧは、例えば図７のステップＳ６またはＳ７のＶｔｈトラッキングにより推定された極小位置での電圧に対応する。
【００７１】
ロワーページのハードビットデータは、第１行に示されるように、電圧ＶＡ未満または電圧ＶＥ以上の閾値電圧のセルトランジスタＭＴに対応するビットにおいてデータ“１”を有し、電圧ＶＡ以上電圧ＶＥ未満の閾値電圧のセルトランジスタＭＴに対応するビットにおいてデータ“０”を有する。
【００７２】
ソフトビットデータ１の取得のために、メモリコントローラ２は、まず、電圧ＶＡよりもある大きさだけ小さい電圧および電圧ＶＥよりもある大きさだけ小さい電圧で読み出されるデータを取得する。使用される電圧の電圧ＶＡおよびＶＥとの差は、例えば、−２Δである。すなわち、メモリコントローラ２は、電圧ＶＡおよびＶＥにそれぞれ代えて電圧ＶＡ−２Δおよび電圧ＶＥ−２Δを読み出し電圧として使用してロワーページ読み出しの結果をいずれかのデータラッチＤＬに保持することを記憶装置１に指示する。Δは任意の大きさを有することができ、例えば、記憶装置１に対して指示可能な予め定められた読み出し電圧ＶＣＧＲの上昇または下降の幅の整数倍に等しい。記憶装置１は、指示を受け取ると、指示されたデータ読み出しを行う。電圧ＶＡ−２Δおよび電圧ＶＥ−２Δを使用したロワーページ読み出しの結果は、第２行に示されており、電圧ＶＡ−２Δ未満または電圧ＶＥ−２Δ以上の閾値電圧のセルトランジスタＭＴに対応するビットにおいてデータ“１”を有し、電圧ＶＡ−２Δ以上かつ電圧ＶＥ−２Δ未満の閾値電圧のセルトランジスタＭＴに対応するビットにおいてデータ“０”を有する。差Ｍ（例えば、−２Δ）が使用されたロワーページ読み出しによってデータラッチに読み出されたデータは、以下、Ｍロワーページデータと称される。−２Δロワーページデータは、記憶装置１のあるデータラッチ（例えば、データラッチＤＬ０）において保持される。
【００７３】
同様にして、メモリコントローラ２は、電圧ＶＡおよびＶＥにそれぞれ代えて電圧ＶＡ＋２Δおよび電圧ＶＥ＋２Δを読み出し電圧として使用したロワーページ読み出しを記憶装置１に指示する。読み出しの結果は、記憶装置１の別のデータラッチの組（例えば、データラッチＸＤＬ）において保持される。
【００７４】
次いで、メモリコントローラ２は、記憶装置１に、データラッチＤＬ０中のデータとデータラッチＸＤＬ中のデータに対する否定排他的論理和（ＸＮＯＲ）演算を指示する。指示を受け取ると、記憶装置１は、データラッチＤＬ０中のデータとデータラッチＸＤＬ中のデータに対するＸＮＯＲ演算を行う。具体的には、シーケンサ１３は、データラッチＤＬ０中のデータとデータラッチＸＤＬ中のデータの同じ位置のビットのそれぞれの計２つのビットを入力として用い、演算回路ＬＣを用いて２つの入力のＸＮＯＲを演算し、このような演算をデータラッチＤＬ０およびデータラッチＸＤＬ中のデータの全ビットに対して行う。演算の結果は、データラッチ（例えば、データラッチＸＤＬ）に保持される。より具体的には、シーケンサ１３は、あるデータラッチ回路ＤＬＣ０中のデータと、当該データラッチ回路ＤＬＣ０と接続されたデータラッチ回路ＸＤＬＣ中のデータのＸＮＯＲを、これらのデータラッチ回路ＤＬＣ０およびＸＤＬＣと接続された演算回路ＬＣを使用して演算する。演算の結果は、論理演算の入力のデータを保持するデータラッチ回路ＤＬＣ０およびＸＤＬＣと接続されたデータラッチ回路ＸＤＬＣに保持される。こうして、データラッチＸＤＬに保持されるに至ったデータがソフトビットデータ１である。ソフトビットデータ１は、次いで、メモリコントローラ２に送信され、データ保持部２７１において保持される。
【００７５】
同様にして、ソフトビットデータ２が何回かの選択ページからデータラッチＤＬへのデータ読み出しおよび何回かの論理演算により取得される。まず、−３Δロワーページデータと３ΔロワーページデータのＸＮＯＲの演算の結果（ＸＮＯＲ１データ）が取得され、次いで、ＸＮＯＲ１データと−ΔロワーページデータとのＸＮＯＲ演算の結果（ＸＮＯＲ２データ）が取得される。ＸＮＯＲ２データとΔロワーページデータとのＸＮＯＲ演算の結果（ＸＮＯＲ３データ）が取得される。ＸＮＯＲ３データは、ソフトビットデータ２であり、メモリコントローラ２に送信され、データ保持部２７１において保持される。
【００７６】
メモリコントローラ２は、さらに、選択セルユニットＣＵに対するミドルページ読み出しおよびアッパーページ読み出しを記憶装置１に指示し、ミドルページデータおよびアッパーページデータを取得する。ミドルページデータおよびアッパーページデータは、それぞれ、ソフトビットデータ３およびソフトビットデータ４として扱われる。
【００７７】
ハードビットおよび種々のソフトビットデータのうちのある１つの同じ選択トランジスタＭＴからのデータ読み出し結果に由来する複数ビットの組が１つのＬＬＲラベルを構成する。いくつのビットの組が１つのＬＬＲラベルを構成するかは、ＥＣＣ回路２６による誤り訂正の方法に依存し、いくつのビットの組が使用されるかによって、実施形態は限定されない。図６の例では、３ビットの組が１つのＬＬＲラベルを構成する。一方、図９の例では、ハードビットデータおよびソフトビットデータ１乃至ソフトビットデータ４の各々のうちのある１つの同じ選択セルトランジスタＭＴからのデータ読み出し結果に由来する５ビットの組が１つのＬＬＲラベルを構成する。各ＬＬＲラベルは、５ビットの各値の各組合せに対して固有の値を有する。上記のように、ＬＬＲラベルは、図では、１０進数で記載されている。
【００７８】
ソフトビットデータ（ソフトビットデータ１乃至４）は、メモリコントローラ２、特に全体制御部２７で生成されてもよい。そのためには、メモリコントローラ２は、上記のソフトビットデータ１〜４の算出のためのＭの種々の値についてのＭロワーページデータを記憶装置１から受け取る。そして、メモリコントローラ２は、受け取られたＭロワーページデータに対する論理演算を行って、ソフトビットデータ１〜４を生成する。
【００７９】
＜２．２．ステップＳ１５（ＬＬＲラベルの変換方法の変更）＞
図１０および図１１は、ＬＬＲラベルのＬＬＲ値への変換方法の変更の例を示す。例として、ステップＳ１２での変換が、図１０の上から２番目の（中央の）ＬＬＲテーブルを使用して行われたとする。その後のステップＳ１５において、全体制御部２７は、図１０の最上部または最下部のＬＬＲテーブルを使用することができる。最上部のＬＬＲテーブルは、各ＬＬＲラベルを中央のＬＬＲテーブルでの各ＬＬＲ値より１大きいＬＬＲ値に変換する。最下部のＬＬＲテーブルは、各ＬＬＲラベルを中央のＬＬＲテーブルでの各ＬＬＲ値より１小さいＬＬＲ値に変換する。１より大きい絶対値の増分が使用されてもよい。
【００８０】
または、ステップＳ１５において、全体制御部２７は、図１１の最上部または最下部のＬＬＲテーブルを使用することができる。最上部のＬＬＲテーブルでは、ＬＬＲ値は右に１つシフトしている。すなわち、最上部のＬＬＲテーブルでのＬＬＲラベル１〜１９は、中央のＬＬＲテーブルでのＬＬＲラベル０〜１８のためのそれぞれのＬＬＲ値に変換される。ＬＬＲラベル０は、例えば、−９のＬＬＲ値に変換される。最下部のＬＬＲテーブルでは、ＬＬＲ値は左に１つシフトしている。すなわち、最下部のＬＬＲテーブルでのＬＬＲラベル０〜１８は、中央のＬＬＲテーブルでのＬＬＲラベル１〜１９のためのそれぞれのＬＬＲ値に変換される。ＬＬＲラベル１９は、例えば、−９のＬＬＲ値に変換される。
【００８１】
ステップＳ１５が、ステップＳ１４を経て再び行われる場合は、図１０〜図１１のＬＬＲテーブルの変更のうちの任意のものが使用されることができる。すなわち、ステップＳ１５が繰り返し行われる場合、複数のステップＳ１５にわたって、図１０の最上部、図１０の最下部、図１１の最上部、図１１の最下部のＬＬＲテーブルが、任意の順番の任意の組合せで使用されることができる。
【００８２】
または、ステップＳ１５において、最初に使用されたＬＬＲテーブル（図１０または図１１の真ん中のＬＬＲテーブル）と全く別のＬＬＲテーブルが使用されてもよい。
【００８３】
ここまでの記述は、ロワーページからのデータ読み出しの例に関する。しかしながら、第１実施形態は、この例に限られず、ミドルページおよび（または）アッパーページからのデータ読み出しに適用されてもよい。
【００８４】
＜１．３．利点＞
第１実施形態によれば、メモリコントローラ２は、以下に記述されるように、より効率良く、ＳＢ使用復号を行うことができる。
【００８５】
ＳＢ使用復号が失敗した場合、ソフトビットデータを再び取得すること、すなわち、図７の例でステップＳ１４での復号が失敗した場合に、ステップＳ１３での復号に使用されたソフトビットデータを破棄して、フローがステップＳ１１に戻ることが考えられる。しかしながら、ソフトビットデータの再取得は、繰り返しのデータ読み出しを含んでおり、よって、時間を要する。
【００８６】
一方で、ＳＢ使用復号の失敗は、閾値電圧分布曲線の極小位置が最適な（すなわち、選択ページのハードビットデータにおいて最小の数のＦＢＣ（fail bit count）を得られる）読み出し電圧と乖離していることが原因である可能性がある。すなわち、ＬＬＲテーブルは、最小のＦＢＣに繋がる読み出し電圧（最小ＦＢＣ電圧）を使用して得られたＬＬＲラベルのためのＬＬＲ値を示すように形成されている。最小ＦＢＣ電圧そのものの推定は困難なため、実際は、Ｖｔｈトラッキングによって極小電圧が推定され、推定された極小電圧が最小ＦＢＣを得られるとの仮定に基づいて、極小電圧が最小ＦＢＣ電圧として使用される。このため、ＳＢ使用復号の成功率はＶｔｈトラッキングの精度に依存する。
【００８７】
しかしながら、特定の閾値分布境界では最小ＦＢＣ電圧は極小電圧と乖離しがちである。より具体的には、図１２の部分（ａ）にＦ状態のＧ状態の分布の境界が代表として示されるように、いくつかの分布の対の境界は、最小ＦＢＣ電圧と極小電圧との乖離が小さい。一方、図１２の部分（ｂ）に示されるように、Ｅｒ状態の分布とＡ状態の分布の境界では、最小ＦＢＣ電圧と極小電圧との乖離が大きい。最小ＦＢＣ電圧と極小電圧との乖離が大きい部分の閾値電圧を有するセルトランジスタＭＴは誤って状態を判断され易い。このことが図１３に示されている。
【００８８】
図１３は、いくつかのケースでの誤り訂正能力を示し、縦軸において誤り訂正後のデータ中の誤りビットの数を示す。図１３は、部分（ａ）において、極小電圧と最小ＦＢＣ電圧の差が小さいケースを示し、部分（ｂ）において、極小電圧と最小ＦＢＣ電圧の差が大きいケースを示す。部分（ａ）は、例として、状態Ｅｒと状態Ａとの判別を含まないページの読み出し、例えばミドルページ読み出しのケースを示す。部分（ｂ）は、状態Ｅｒと状態Ａとの判別を含むロワーページ読み出しのケースを示す。また、ケースＡは、デフォルトのＬＬＲテーブルを使用した場合を示し、メモリシステム５の実際の使用において一般的に起こるケースである。ケースＢは、検討のために作成された、読み出し対象のページの現状にとって最適なＬＬＲテーブルを使用したケースであり、メモリシステム５の使用中に起こり得ないケースである。
【００８９】
部分（ａ）では、極小電圧が最小ＦＢＣ電圧と大きく違わないので、極小電圧とデフォルトのＬＬＲテーブルを使用した訂正能力（ケースＡ）は、極小電圧と最適なＬＬＲテーブルを使用した場合の訂正能力（ケースＢ）は、大きく違わない。一方、部分（ｂ）では、極小電圧が最小ＦＢＣ電圧と大きく違うので、極小電圧とデフォルトのＬＬＲテーブルを使用した場合の訂正能力（ケースＡ）は、極小電圧と最適なＬＬＲテーブルを使用した場合の訂正能力（ケースＢ）と大きく異なる。しかし、部分（ｂ）は、見方を変えると、極小電圧が最小ＦＢＣ電圧と大きく異なっている場合、最適なＬＬＲテーブルの使用は現実的に無理であっても、より良いＬＬＲテーブル使用すれば、訂正能力が向上されることができることを示唆する。
【００９０】
第１実施形態のメモリコントローラ２は、ＳＢ使用復号に失敗すると、失敗したＳＢ使用復号で使用されたＬＬＲ値への変換に使用されたＬＬＲテーブルと異なるＬＬＲテーブルでＬＬＲラベルをＬＬＲ値に再変換する。相違するＬＬＲテーブルで変換されたＬＬＲ値は、ＳＢ使用復号の成功に繋がる可能性がある。しかも、ＬＬＲテーブルの変更は、新たなＬＬＲラベルの取得を必要としない。このため、あるＳＢ使用復号の失敗後の別のＳＢ使用復号は、ソフトビットデータを再度取得することを必要としない。よって、第１実施形態のメモリコントローラ２は、ソフトビットデータの再取得を含んだＳＢ使用復号の再実行の場合よりも短い時間で、ＳＢ使用復号に成功でき得る。
【００９１】
（第２実施形態）
第２実施形態は、第１実施形態の詳細に関する。
【００９２】
第２実施形態のメモリシステム５は、第１実施形態のメモリシステム５と同じ要素および接続を有する。一方、第２実施形態のメモリコントローラ２は、以下に記述される動作を行えるように構成されており、具体的には、ＲＯＭ２４中のファームウェアがメモリコントローラ２に以下に記述される動作を行わせるように構成されている。
【００９３】
図１４および図１５は、第２実施形態のメモリシステム５の動作の一部のフローを示し、あるロワーページからの読み出しのためのメモリシステム５の動作の一部のフローを示す。より具体的には、あるページからの読み出しのうちの１フレームサイズのデータの取得の完了までを示す。
【００９４】
図１４に示されるように、メモリコントローラ２は、第１実施形態と同じく、図７を参照して記述されたステップＳ１、Ｓ２、Ｓ３、Ｓ５、Ｓ６、Ｓ７、Ｓ１１、Ｓ１２、Ｓ１３、およびＳ１４を行う。ＳＢ使用復号が失敗すると（ステップＳ１４のＮｏ分岐）、フローはステップＳ２１に移行する。ステップＳ２１において、全体制御部２７は、あるＬＬＲラベルのためのＬＬＲ値を、元のＬＬＲテーブルにおける対応するＬＬＲ値から負の方向に補正する。補正されたＬＬＲ値に変換されるＬＬＲラベルは、Ｅｒ状態の分布およびＡ状態の分布の境界近傍の閾値電圧に対応するものである。図１０のＬＬＲテーブルの例に基づくと、図１６に示されるように、ＬＬＲラベル１、２、３、４、５、および６のためのＬＬＲ値が補正される。補正の大きさは、例えば１である。
【００９５】
図１４に戻る。メモリコントローラ２は、ステップＳ２２およびＳ２３を行う。ステップＳ２２およびＳ２３は、それぞれ、ステップＳ１３およびＳ１４と同じである。ＳＢ使用復号が成功すると（ステップＳ２３のＹｅｓ分岐）、フローは終了し、ＳＢ使用復号が失敗すると（ステップＳ２３のＮｏ分岐）、フローは、ステップＳ２５に移行する。ステップＳ２５において、全体制御部２７は、ステップＳ２１と同様にして、あるＬＬＲラベルのためのＬＬＲ値を、元のＬＬＲテーブルにおける対応するＬＬＲ値から負の方向に補正する。補正されたＬＬＲ値に変換されるＬＬＲラベルは、Ｄ状態の分布およびＥ状態の分布の境界近傍の閾値電圧に対応するものである。図１０のＬＬＲテーブルの例に基づくと、図１７に示されるように、ＬＬＲラベル１３、１４、１５、１６、１７、および１８のためのＬＬＲ値が補正される。補正の大きさは、例えば１である。
【００９６】
図１４に戻る。メモリコントローラ２は、ステップＳ２７およびＳ２８を行う。ステップＳ２７およびＳ２８は、それぞれ、ステップＳ１３およびＳ１４と同じである。ＳＢ使用復号が成功すると（ステップＳ２８のＹｅｓ分岐）、フローは終了し、ＳＢ使用復号が失敗すると（ステップＳ２８のＮｏ分岐）、フローは、ステップＳ３１に移行する。ステップＳ３１において、全体制御部２７は、ステップＳ２１と同様にして、あるＬＬＲラベルのためのＬＬＲ値を、元のＬＬＲテーブルにおける対応するＬＬＲ値から負の方向に補正する。補正されたＬＬＲ値に変換されるＬＬＲラベルは、ステップＳ２１と同じくＥｒ状態の分布およびＡ状態の分布の境界近傍の閾値電圧に対応するものと、ステップＳ２５と同じくＤ状態の分布およびＥ状態の分布の境界近傍の閾値電圧に対応するものである。図１０のＬＬＲテーブルの例に基づくと、図１８に示されるように、ＬＬＲラベル１、２、３、４、５、６、１３、１４、１５、１６、１７、および１８のためのＬＬＲ値が補正される。補正の大きさは、例えば１である。
【００９７】
図１４に戻る。メモリコントローラ２は、ステップＳ３２およびＳ３３を行う。ステップＳ３２およびＳ３３は、それぞれ、ステップＳ１３およびＳ１４と同じである。ＳＢ使用復号が成功すると（ステップＳ３３のＹｅｓ分岐）、フローは終了し、ＳＢ使用復号が失敗すると（ステップＳ３３のＮｏ分岐）、フローは、ステップＳ３５に移行する。ステップＳ３５において、全体制御部２７は、ステップＳ２１と同様にして、あるＬＬＲラベルのためのＬＬＲ値を、元のＬＬＲテーブルにおける対応するＬＬＲ値から正の方向に補正する。補正されたＬＬＲ値に変換されるＬＬＲラベルは、Ｅｒ状態の分布およびＡ状態の分布の境界近傍の閾値電圧に対応するものである。図１０のＬＬＲテーブルの例に基づくと、図１９に示されるように、ＬＬＲラベル１、２、３、４、５、および６のためのＬＬＲ値が補正される。補正の大きさは、例えば１である。
【００９８】
図１４に戻る。メモリコントローラ２は、ステップＳ３７およびＳ３８を行う。ステップＳ３７およびＳ３８は、それぞれ、ステップＳ１３およびＳ１４と同じである。ＳＢ使用復号が成功すると（ステップＳ３８のＹｅｓ分岐）、フローは終了し、ＳＢ使用復号が失敗すると（ステップＳ３８のＮｏ分岐）、フローは、ステップＳ４１に移行する。ステップＳ４１において、全体制御部２７は、ステップＳ２１と同様にして、あるＬＬＲラベルのためのＬＬＲ値を、元のＬＬＲテーブルにおける対応するＬＬＲ値から正の方向に補正する。補正されたＬＬＲ値に変換されるＬＬＲラベルは、Ｄ状態の分布およびＥ状態の分布の境界近傍の閾値電圧に対応するものである。図１０のＬＬＲテーブルの例に基づくと、図２０に示されるように、ＬＬＲラベル１３、１４、１５、１６、１７、および１８のためのＬＬＲ値が補正される。補正の大きさは、例えば１である。
【００９９】
図１４に戻る。メモリコントローラ２は、ステップＳ４３を行う。ステップＳ４３は、それぞれ、ステップＳ１３と同じである。ＳＢ使用復号が成功すると（ステップＳ４３のＹｅｓ分岐）、フローは終了し、ＳＢ使用復号が失敗すると（ステップＳ４３のＮｏ分岐）、フローは、ステップＳ４５に移行する。ステップＳ４５において、メモリコントローラ２は、読み出しフェイルであると決定し、図１４および図１５のフローは終了する。例えば、その後、メモリコントローラ２は、読み出しフェイルをホスト装置３に通知し、および（または）別の誤り訂正でのデータ復号を試みることができる。
【０１００】
図１４および図１５の例でのＬＬＲテーブルの補正の順序は、ＳＢ使用復号成功に比較的より成功しやすいと考えられる順序に基づく。しかしながら、ＬＬＲテーブルの補正が、図１４および図１５の順序と異なる順序で行われてもよい。また、ステップＳ４３のＮｏ分岐は、ステップＳ３５とＳ４１とが組み合わされたステップに継続してもよい。
【０１０１】
ここまでの記述は、ロワーページからのデータ読み出しの例に関する。しかしながら、第２実施形態は、この例に限られず、ミドルページおよび（または）アッパーページからのデータ読み出しに適用されてもよい。
【０１０２】
第２実施形態によれば、メモリコントローラ２は、第１実施形態と同じく、ＳＢ使用復号に失敗すると、失敗したＳＢ使用復号で使用されたＬＬＲ値への変換に使用されたＬＬＲテーブルと異なるＬＬＲテーブルでＬＬＲラベルをＬＬＲ値に再変換する。このため、第１実施形態と同じ利点を得られる。
【０１０３】
また、第２実施形態によれば、ＬＬＲテーブルの補正は、復号成功に比較的より成功しやすいと考えられる順序に基づく。このため、復号の成功しやすさを考慮せずに決定された順序で変換方法の変更が行われる例よりも短い時間で復号に成功する可能性が高い。
【０１０４】
（第３実施形態）
第３実施形態は、第１または第２実施形態に基づき、第３実施形態では第１または第２実施形態での復号の結果が利用される。
【０１０５】
第３実施形態のメモリシステム５は、第１実施形態のメモリシステム５と同じ要素および接続を有する。一方、第３実施形態のメモリコントローラ２は、以下に記述される動作を行えるように構成されており、具体的には、ＲＯＭ２４中のファームウェアがメモリコントローラ２に以下に記述される動作を行わせるように構成されている。さらに、第３実施形態では、図２１に示されるように、全体制御部２７は、シフトテーブル保持部２７３をさらに含む。シフトテーブル保持部２７３は、例えばＲＡＭ２３の機能の一部により実現され、シフトテーブルを保持する。シフトテーブルは、Ｖｔｈトラッキングにより推定された極小電圧についてのシフトの大きさ（シフト値）を保持する。シフトテーブルは、シフト値を、例えばワード線ＷＬごとに、またはアドレスが連続する複数のワード線ごとに保持する。シフトテーブルの詳細は後述される。
【０１０６】
図２２は、第３実施形態のメモリシステム５の動作の一部のフローを示し、あるページからの２回の読み出しのためのメモリシステム５の動作の一部のフローを示す。図２２のフローは、記述が必要以上に複雑になることを避けるために、部分的に簡略化されている。図２２は、第３実施形態が第１実施形態と組合せられた例についてのフローを示す。第３実施形態は、第２実施形態と組合せられることが可能である。
【０１０７】
図２２に示されるように、メモリコントローラ２は、第１実施形態と同じく、図７を参照して記述されたステップＳ１、Ｓ２、Ｓ３、Ｓ５、Ｓ６、Ｓ７、Ｓ１１、Ｓ１２、Ｓ１３、およびＳ１４を行う。ＳＢ使用復号が成功すると（ステップＳ１４のＹｅｓ分岐）、フローはステップＳ５１に移行する。ステップＳ５１において、全体制御部２７は、成功したＳＢ使用復号の結果に基づいて、シフトテーブル中の選択ページの記憶空間を提供するワード線ＷＬについてのシフト値を更新する。ステップＳ５１の詳細は後述される。
【０１０８】
ステップＳ５２において、メモリコントローラ２は、ステップＳ１でのデータ対象の選択ページと同じ選択ページからのデータ読み出しを決定する。ステップＳ５３において、メモリコントローラ２は、シフトテーブルを参照して、選択ページについてのシフト値を取得する。より具体的には、メモリコントローラ２は、あるページからのハードビットデータの読み出しを決定すると、当該ページの記憶空間を提供するセルユニットＣＵのワード線ＷＬについてのシフト値がシフトテーブル中に保持されているかを判断し、保持されている場合は保持されているシフト値を使用することを決定する。
【０１０９】
ステップＳ５３において、メモリコントローラ２は、取得されたシフト値を使用した選択ページからのハードビットデータ読み出しを記憶装置１に指示し、指示されたハードビットデータを受け取る。
【０１１０】
ステップＳ５４において、メモリコントローラ２は、受け取られたハードビットデータに対するＨＢ復号を試みる。ステップＳ５４は、ステップＳ２と同じである。図２１により示される現行の例ではＨＢ復号は成功するものとし、ステップＳ５４が完了すると、フローは終了する。ステップＳ５４での復号が失敗した場合は、フローは、例えばステップＳ３に継続することができる。
【０１１１】
図２３が参照されて、シフトテーブルおよびステップＳ５１について記述される。図２３は、２つのＬＬＲテーブルの各々の一部を示す。実線は、図１０の中央のＬＬＲテーブルの一部であり、すなわち、予め用意されたデフォルトのＬＬＲテーブルの一部である。破線は、図１０の最下部のＬＬＲテーブルの一部である。以下の記述では、破線のような図６の最下部のＬＬＲテーブルによって変換されたＬＬＲ値の使用により、ステップＳ１４のＳＢ使用復号が成功したものとする。図２３から、ＬＬＲ値がゼロのときのＬＬＲラベルに着目すると、デフォルトのＬＬＲテーブルでは、ＬＬＲ値がゼロとなるＬＬＲラベルは、３と４の間、３．６程度に位置することが分かる。一方、ＳＢ使用復号の成功を導いたＬＬＲテーブルは、ＬＬＲラベル４をＬＬＲ値０に変換している。これらのことから、Ｖｔｈトラッキングにより推定された極小電圧を使用した読み出しによってＬＬＲラベル４と判断された選択セルトランジスタＭＴがＬＬＲラベル３．６程度として判断されれば、デフォルトのＬＬＲテーブルの使用により、ＳＢ使用復号が成功することを示す。極小電圧を使用した読み出しによってＬＬＲラベル４と判断された選択トランジスタＭＴがＬＬＲラベル４に繋がるデータを読み出したのは、最適でない極小電圧が用いられたからである。すなわち、推定された極小電圧が最適な（最小の誤り数の）読み出し電圧ＶＡｏｐｔではなかったことが分かる。
【０１１２】
このことに基づいて、全体制御部２７は、ステップ５１において、ＳＢ使用復号の結果に基づいて、関連する極小電圧に対するシフト値を、シフトテーブル中で更新する。図２４に示されるように、極小電圧Ｖｒｍに代えて、電圧Ｖｒｍ＋ΔＶを使用する読み出しが、より少ない誤りを含んだハードビットデータの取得に繋がる。ＬＬＲラベルＮ（Ｎは０または自然数）とＬＬＲラベルＮ＋１との差は既知であり、上記のように、記憶装置１に対して指示可能な予め定められた読み出し電圧ＶＣＧＲの上昇または下降の幅の整数倍に等しい。このことから、全体制御部２７は、ΔＶの値を算出可能であり、例として、ΔＶが約３ＤＡＣの大きさを有するとする。上記のように、全体制御部２７は、あるワード線ＷＬの選択セルユニットＣＵからのデータ読み出しの間に推定された極小電圧Ｖｒｍの値を保持しておいて、当該ワード線ＷＬの選択セルユニットＣＵからの次のデータ読み出しの際に保持された極小電圧Ｖｒｍの値を読み出し電圧ＶＣＧＲとして使用する。そこで、全体制御部２７は、ステップＳ５１において、選択セルユニットＣＵのワード線（選択ワード線）ＷＬについての極小電圧Ｖｒｍを、Ｖｒｍ＋ΔＶへと更新する。
【０１１３】
全体制御部２７は、ステップＳ５３での選択ページからの読み出しのときに、極小電圧Ｖｒｍ＋ΔＶを読み出し電圧として使用する。この結果、極小電圧Ｖｒｍを使用した読み出しではデータ“０”を保持すると判断されるセルトランジスタＭＴの一部は、データ“１”を保持すると判断される。なお、極小電圧Ｖｒｍの使用の場合と、電圧Ｖｒｍ＋ΔＶの使用の場合とでは、ハードビットデータは異なり、ＬＬＲラベルの境界も異なる。この電圧Ｖｒｍ＋ΔＶを使用して得られたハードビットデータは、極小電圧Ｖｒｍを使用して得られたハードビットデータより、少ない誤りを含む可能性が高い。よって、ＨＢ復号のみで誤り訂正が成功する可能性が高い。
【０１１４】
図２５は、第３実施形態のシフトテーブルの例を示す。全体制御部２７は、例えばワード線ＷＬごと、または、アドレスの連続する複数のワード線ＷＬごとに、７つの極小電圧Ｖｒｍ１〜Ｖｒｍ７を保持する。あるワード線ＷＬについての極小電圧Ｖｒｍ１〜Ｖｒｍ７は、当該ワード線ＷＬのセルユニットＣＵからの読み出しの際に読み出し電圧ＶＡ〜ＶＧとして使用される。そして、シフトテーブルは、ワード線ＷＬごと、または極小電圧Ｖｒｍ１〜Ｖｒｍ７の共通の組を割り当てられた複数のワード線ＷＬごとにシフト量ΔＶを保持する。極小電圧Ｖｒｍ１〜Ｖｒｍ７ごとに専用のシフト量が使用されてもよい。
【０１１５】
第３実施形態は、第２実施形態と組わせられてもよい。この場合、ステップＳ２３、Ｓ２８、Ｓ３３、Ｓ３８、およびＳ４３の各々のＹｅｓ分岐がステップＳ５１に継続する。
【０１１６】
第３実施形態によれば、メモリコントローラ２は、以下のように、より短期間で正しいデータを取得できる。上記のように、あるセルユニットＣＵからのデータ読み出しの間に推定された極小電圧は、メモリコントローラ２において保持され、次に、当該セルユニットＣＵからの読み出しの際に使用される。または、ある同じセルユニットＣＵからのデータ読み出しであっても、データ読み出しの度に極小電圧が推定される。いずれの場合でも、極小電圧が最小ＦＢＣ電圧と乖離していると、ＨＢ復号は成功せず、ＳＢ使用復号が行われ得る。すると、あるセルユニットＣＵからのデータ読み出しの度に、ＳＢ使用復号が行われる。このことは、データ読み出しに長い時間を要する。
【０１１７】
第３実施形態のメモリコントローラ２は、元のＬＬＲテーブルと別のＬＬＲテーブルを使用して再取得されたＬＬＲ値を使用したＳＢ使用復号が成功すると、ＳＢ使用復号成功に繋がったＬＬＲテーブルに基づいて、推定された極小電圧に対してなされるべきシフトの量を算出し、これを保持する。メモリコントローラ２は、次のデータ読み出しの際に、保持されたシフト量と、対応する極小電圧との和を使用する。極小電圧とシフト量との和は、より適切な読み出し電圧である。このため、極小電圧とシフト量との和を使用して取得されたハードビットデータは、元の極小電圧を読み出し電圧として使用して取得されたハードビットよりも少ない誤りを含み得る。このため、シフト量を付加された極小電圧を読み出し電圧として使用することは、ＨＢ復号のみでの正しいデータの取得の可能性を高め、ＳＢ使用復号の必要性を減じる。このことは、より短期間での正しいデータの取得を可能にする。
【０１１８】
（第４実施形態）
第４実施形態は、複数のＬＬＲテーブルからのより良い方の選択の方法に関する。
【０１１９】
第４実施形態のメモリシステム５は、第１実施形態のメモリシステム５と同じ要素および接続を有する。一方、第４実施形態のメモリコントローラ２は、以下に記述される動作を行えるように構成されており、具体的には、ＲＯＭ２４中のファームウェアがメモリコントローラ２に以下に記述される動作を行わせるように構成されている。
【０１２０】
図２６は、第４実施形態のＥＣＣ回路２６中の要素および接続、ならびにメモリコントローラ２中のＥＣＣ回路２６に関連する機能ブロックを示す。図２６に示されるように、全体制御部２７は、加算部２７５およびＬＬＲテーブル選択部２７６をさらに含む。加算部２７５は、複数のシンドローム値を受け取り、受け取られたシンドローム値の和を算出し、算出された和をＬＬＲテーブル選択部２７６に供給する。ＬＬＲテーブル選択部２７６は、受け取られた和に基づいて、複数のＬＬＲテーブルから１つを選択する。また、全体制御部２７は、ＥＣＣ回路２６をＬＬＲテーブル選択モードおよび復号モードの選択された方の一方で動作させることができる。復号モードは、ＥＣＣ回路２６によってデータ中の誤り訂正が行われるモードである。ＬＬＲテーブル選択モードは、復号モードに先行して実行され、後続の復号モードで使用されるＬＬＲテーブルが複数のＬＬＲテーブルから選択されるモードである。
【０１２１】
誤り訂正回路２６１は、例えば、シンドロームを使用するＬＤＰＣ復号を行う。誤り訂正回路２６１は、シンドロームチェック回路２６１１、復号回路２６１２、シンドロームチェック回路２６１３を含む。
【０１２２】
シンドロームチェック回路２６１１は、ｎ×ｍの検査行列（ｎおよびｍは自然数）を有しており、複数のＬＬＲ値を入力として受け取り、複数のＬＬＲ値からそれぞれの複数の硬判定値を導出し、複数の硬判定値と検査行列からシンドローム値を計算できる。
【０１２３】
より具体的には、シンドロームチェック回路２６１１は、ｎ個のＬＬＲ値ＬＬＲ１〜ＬＬＲｎ（１×ｎの行列状のＬＬＲ値）と、ｍ×ｎの検査行列の積を算出して、ｍ個のシンドローム値Ｓ１〜Ｓｍを取得できる。シンドロームチェック回路２６１１は、ＬＬＲ値ＬＬＲ１〜ＬＬＲｎに対する並行な処理により、シンドローム値Ｓ１〜Ｓｍを算出できる。シンドローム値Ｓ１〜Ｓｍは、各々、１ビットのデータであり、加算部２７５に供給される。
【０１２４】
また、シンドロームチェック回路２６１１は、復号モードの間、算出されたシンドローム値に基づいて、シンドロームチェック回路２６１１に入力されたＬＬＲ値セットがパスかフェイルかを判断する。パス判定の場合、入力されたＬＬＲ値は誤りを含んでいないと考えられる。シンドロームチェック回路２６１１は、パス判定の旨の信号および入力ＬＬＲ値セットを誤り検出回路２６２に供給する。一方、フェイル判定の場合、シンドロームチェック回路２６１１は、フェイル判定の旨の信号および入力されたＬＬＲ値セットを復号回路２６１２に供給する。
【０１２５】
復号回路２６１２は、フェイル判定の旨の信号およびＬＬＲ値セットを入力されると、入力されたＬＬＲ値セットを使用してＳＢ使用復号を行い、誤り訂正されたＬＬＲ値セットをシンドロームチェック回路２６１３に供給する。
【０１２６】
シンドロームチェック回路２６１３は、シンドロームチェック回路２６１１と同様に、ｎ×ｍの検査行列を有しており、複数のＬＬＲ値を入力として受け取り、複数のＬＬＲ値からそれぞれの複数の硬判定値を導出し、複数の硬判定値と検査行列からシンドローム値を計算できる。シンドロームチェック回路２６１３は、誤り訂正されたＬＬＲ値セットを受け取ると、シンドロームチェック回路２６１１と同様にして、ｍ個のシンドローム値を算出する。シンドロームチェック回路２６１３は、算出されたシンドローム値に基づいて、誤り訂正されたＬＬＲ値セットがパスかフェイルかを判断する。シンドロームチェック回路２６１３は、パス判定の場合、パス判定の旨の信号および誤り訂正されたＬＬＲ値セットを誤り検出回路２６２に供給し、フェイル判定の場合、フェイル判定の旨の信号およびシンドロームチェック回路２６１３から受け取られたＬＬＲ値セットを誤り検出回路２６２に供給する。
【０１２７】
誤り検出回路２６２は、パス判定の旨の信号およびＬＬＲ値セット（すなわち、誤り訂正されたＬＬＲ値セット）を入力されると、入力されたＬＬＲ値セットが誤りを含んでいるかを検査する。誤りが含まれていれば、フェイル判定の旨の信号を全体制御部２７に供給する。誤りが含まれていなければ、誤り検出回路２６２は、誤り訂正回路２６１によってなされた誤り訂正が確からしいと判断し、パス判定の旨の信号を全体制御部２７に供給するとともに、入力された（すなわち、誤り訂正された）ＬＬＲ値セットを全体制御部２７（特に、例えば、ＲＡＭ２３）に供給する。
【０１２８】
シンドロームチェック回路２６１３は、シンドロームチェック回路２６１１に統合されていてもよい。すなわち、シンドロームチェック回路２６１１は、上記のシンドロームチェック回路２６１３によって行われる処理を行う。
【０１２９】
図２７は、第４実施形態の全体制御部２７の一部およびシンドロームチェック回路２６１１のより詳細なブロック図であり、全体制御部２７の一部およびシンドロームチェック回路２６１１のうちのＬＬＲテーブル選択モードで動作する部分を示す。
【０１３０】
図２７に示されるように、ＬＬＲ変換部２７２は、第１部分２７２ａと第２部分２７２ｂを含む。第１部分２７２ａおよび第２部分２７２ｂは、以下、それぞれ、ＬＬＲ変換部２７２ａおよびＬＬＲ変換部２７２ｂと称される。ＬＬＲ変換部２７２ａおよび２７２ｂは、例えば、並行して動作することができる。すなわち、ＬＬＲ変換部２７２ａおよび２７２ｂの各々は、ＬＬＲ変換部２７２の機能の一部により実現され、ＬＬＲ変換部２７２の動作によって、ＬＬＲ変換部２７２ａおよび２７２ｂが並行して動作することになる。ＬＬＲ変換部２７２ａおよび２７２ｂはともに、ｎ個のＬＬＲラベルＬＬＲｌ１〜ＬＬＲｌｎを受け取る。ＬＬＲ変換部２７２ａはＬＬＲテーブル２７２１ａを使用してＬＬＲラベルＬＬＲｌ１〜ＬＬＲｌｎをｎ個のＬＬＲ値ＬＬＲｖａ１〜ＬＬＲｖａｎにそれぞれ変換する。ＬＬＲ変換部２７２ｂはＬＬＲテーブル２７２１ｂを使用してＬＬＲラベルＬＬＲｌ１〜ＬＬＲｌｎをｎ個のＬＬＲ値ＬＬＲｖｂ１〜ＬＬＲｖｂｎにそれぞれ変換する。ＬＬＲテーブル２７２１ａおよび２７２１ｂは、互いに異なり、ある同じＬＬＲラベルを相違するＬＬＲ値に変換し得る。
【０１３１】
シンドロームチェック回路２６１１は、第１部分２６１１ａと第２部分２６１１ｂを含む。第１部分２６１１ａと第２部分２６１１ｂは、以下、それぞれ、シンドロームチェック回路２６１１ａおよびシンドロームチェック回路２６１１ｂと称される。シンドロームチェック回路２６１１ａおよび２６１１ｂは、並行して動作することができる。すなわち、シンドロームチェック回路２６１１ａおよび２６１１ｂの各々は、シンドロームチェック回路２６１１の機能の一部により実現され、シンドロームチェック回路２６１１の動作によって、シンドロームチェック回路２６１１ａおよび２６１１ｂが並行して動作することになる。
【０１３２】
シンドロームチェック回路２６１１ａは、ＬＬＲ値ＬＬＲｖａ１〜ＬＬＲｖａｎを受け取り、ＬＬＲ値ＬＬＲｖａ１〜ＬＬＲｖａｎのそれぞれのｎ個の硬判定値からなる１×ｎ行列とｋ×ｎの検査行列の積を算出し、ｋ個のシンドローム値Ｓａ１〜Ｓａｋを取得する。
【０１３３】
シンドロームチェック回路２６１１ｂは、ＬＬＲ値ＬＬＲｖｂ１〜ＬＬＲｖｂｎを受け取り、ＬＬＲ値ＬＬＲｖｂ１〜ＬＬＲｖｂｎのそれぞれのｎ個の硬判定値からなる１×ｎ行列と（ｍ−ｋ）×ｎの検査行列の積を算出し、ｍ−ｋ個のシンドローム値Ｓｂ１〜Ｓｂ（ｍ−ｋ）を算出する。
【０１３４】
加算部２７５は、加算部２７５ａおよび加算部２７５ｂを含む。加算部２７５ａは、シンドローム値Ｓａ１〜Ｓａｋを受け取り、シンドローム値Ｓａ１〜Ｓａｋを加算して、総和Ｔａを算出する。総和Ｔａは、複数ビットのデータである。加算部２７５ｂは、シンドローム値Ｓｂ１〜Ｓｂ（ｍ−ｋ）を受け取り、シンドローム値Ｓｂ１〜Ｓｂ（ｍ−ｋ）を加算して、総和Ｔｂを算出する。総和Ｔｂは、複数ビットのデータである。
【０１３５】
総和ＴａおよびＴｂは、ＬＬＲテーブル選択部２７６に供給される。ＬＬＲテーブル選択部２７６は、総和ＴａおよびＴｂを比較し、どちらが大きいかを判断する。ＬＬＲテーブル選択部２７６は、総和Ｔａおよび（または）Ｔｂに重みを乗じて、重みを乗じられた総和ＴａおよびＴｂを比較することもできる。ＬＬＲテーブル選択部２７６は、大きさの判断に基づいて、ＬＬＲテーブル２７２１ａまたは２７２１ｂを選択する。ＬＬＲテーブル選択部２７６は、総和Ｔａの方が小さければ、ＬＬＲテーブル２７２１ａを選択し、総和Ｔｂの方が小さければ、ＬＬＲテーブル２７２１ｂを選択する。
【０１３６】
全体制御部２７は、復号モードにおいて、当該復号モードに先行するＬＬＲテーブル選択モードにおいて選択されたＬＬＲテーブル２７２１ａまたは２７２１ｂを使用したＳＢ使用復号を行うようにＥＣＣ回路２６を制御する。
【０１３７】
図２８は、第４実施形態のメモリコントローラ２の一部の動作のフローを示す。第４実施形態は、第１乃至第３実施形態に組合せられることが可能である。図２８および以下の記述は、第４実施形態が第１実施形態と組合せられた例に関する。図２８に示されるように、ステップＳ１１とステップＳ１２の間にステップＳ６１が行われる。ＳＢ使用復号が開始すると、ステップＳ７およびＳ１１が行われ、次いで、ステップＳ６１が行われる。ステップＳ６１は、任意の基準で選択された２つの相違するＬＬＲテーブル２７２１ａおよび２７２１ｂのうち、どちらがより適切か、すなわちより良いＳＢ使用復号をもたらすかを実際にＳＢ使用復号を行う前に推定するために行われる。ステップＳ６１は、ステップＳ１２に継続する。また、ステップＳ１４のＮｏ分岐は、ステップＳ６１に継続する。
【０１３８】
ステップＳ６１が繰り返されて、３つ以上の候補となるＬＬＲテーブルのうち、最小と思われる１つが選択され、その後、ステップＳ１２が行われてもよい。そのためには、ステップＳ６１の繰り返しによって２つのＬＬＲテーブルからの１つの選択が繰り返される。
【０１３９】
図２９は、ステップＳ６１のサブフローを示す。図２９に示されるように、ステップＳＳ１１は、サブステップＳＳ６１１およびＳＳ６１６に継続する。サブステップＳＳ６１１、ＳＳ６１２、およびＳＳ６１１３の組、ならびにサブステップＳＳ６１６、ＳＳ６１７、およびＳＳ６１８の組は、並行して行われる。
【０１４０】
サブステップＳＳ６１１において、ＬＬＲ変換部２７２ａは、ＬＬＲテーブル２７２１ａを用いて、ｎ個のＬＬＲラベルの各々を１つのＬＬＲ値に変換して、ｎ個のＬＬＲ値を得る。サブステップＳＳ６１２において、シンドロームチェック回路２６１１ａは、サブステップＳＳ６１１で得られた１×ｎのＬＬＲ値の行列とｋ×ｎの検査行列とから、ｋ個のシンドローム値を算出する。サブステップＳＳ６１１３において、加算部２７５ａは、算出されたシンドローム値を加算して、総和Ｔａを算出する。サブステップＳ６１３は、サブステップＳＳ６１９に継続する。
【０１４１】
サブステップＳＳ６１６において、ＬＬＲ変換部２７２ｂは、ＬＬＲテーブル２７２１ｂを用いて、ｎ個のＬＬＲラベルの各々を１つのＬＬＲ値に変換して、ｎ個のＬＬＲ値を得る。サブステップＳＳ６１７において、シンドロームチェック回路２６１１ｂは、ステップＳ６１６で得られた１×ｎのＬＬＲ値の行列とＬＬＲ値と（ｍ−ｋ）×ｎの検査行列とから、ｍ−ｋ個のシンドローム値を算出する。サブステップＳＳ６１８において、加算部２７５ｂは、算出されたシンドローム値を加算して、総和Ｔｂを算出する。サブステップＳ６１８は、サブステップＳＳ６１９に継続する。
【０１４２】
サブステップＳＳ６１９において、全体制御部２７は、総和ＴａおよびＴｂの比較に基づいて、ＬＬＲテーブル２７２１ａまたは２７２１ｂを選択する。サブステップＳＳ６１９は、ステップＳ１２に継続する。ステップＳ１２での復号には、ステップＳ６１９で選択されたＬＬＲテーブルが使用される。
【０１４３】
図３０は、第４実施形態に係る種々の検査行列の例を示す。図３０は、第１段目において、復号モードの間に復号回路２６１２によって使用されるｍ×ｎの検査行列を示す。一方、ＬＬＲテーブル選択モードでは、図３０の第２段目および第３段目に示される検査行列が使用される。第２段目は、シンドロームチェック回路２６１１ａによって使用される検査行列の例を示し、第３段目は、シンドロームチェック回路２６１１ｂによって使用される検査行列の例を示す。
【０１４４】
第２段目の検査行列は、復号回路２６１２によって使用されるｍ×ｎの検査行列（以下、復号用検査行列と称される）の部分行列であり、復号用検査行列のうちのｋ行からなり、ｋ×ｎの要素からなる。ｋ行の部分は、復号用検査行列のうちの任意の行であることが可能である。図３０は、復号用検査行列の第１〜第ｋ行の部分である例を示す。
【０１４５】
第３段目の検査行列は、復号用検査行列の部分行列であり、復号用検査行列のうちのｍ−ｋ行からなり、（ｍ−ｋ）×ｎの要素からなる。ｍ−ｋ行の部分は、任意の行であることが可能である。例えば、ｍ−ｋ行の部分は、ＥＣＣ回路２６の回路の複雑化の抑制およびＥＣＣ回路２６中のＲＡＭの使用効率の向上の点から、信号用検査行列のうちの第２段目の検査行列と重複しない行からなることが可能である。図３０は、そのような例を示しており、第３段目の検査行列が、復号用検査行列の第ｋ＋１〜第ｍ行の部分であるケースを示す。
【０１４６】
上記のように、復号用検査行列から任意のｋ行の部分と（ｍ−ｋ）行の部分の部分行列が形成されることが可能である。ただし、ｋ行の部分に含まれる１の数と、（ｍ−ｋ）行の部分に含まれる１の数とが不一致の場合、サブステップＳＳ６１３において、総和ＴａおよびＴｂに重みが乗じられる。すなわち、ｋ行の部分に含まれる１の数がＮ個で、（ｍ−ｋ）行の部分に含まれる１の数がＭ個である場合、総和ＴｂはＭ／Ｎを乗じられて、総和Ｔｂと、総和Ｔｂ×（Ｎ／Ｍ）が比較される。
【０１４７】
第４実施形態によれば、以下に記述されるように、２つのＬＬＲテーブルのうちのより良い方が短い時間で選択されることができる。
【０１４８】
２つのＬＬＲテーブルのより良い方の選択のために、ｍ×ｎの復号用検査行列を使用することが考えられる。すなわち、ｎ個のＬＬＲラベルが、一方のＬＬＲテーブルを使用してＬＬＲ値の第１セットに変換され、ＬＬＲ値の第１セットと復号用検査行列とが使用されて総和が算出される。同様に、ｎ個のＬＬＲラベルが、他方のＬＬＲテーブルを使用してＬＬＲ値の第２セットに変換され、ＬＬＲ値の第２セットと復号用検査行列とが使用されて総和が算出される。そして、２つの総和が比較される。しかしながら、この方法では、ｍ×ｎの復号用検査行列を使用したシンドローム値の計算が２回行われ、計２ｍ個のシンドローム値が計算される。算出される必要のあるシンドローム値の数が多いほど、シンドローム値の計算はより長い時間を要する。
【０１４９】
第４実施形態のメモリコントローラ２は、ｍ×ｎの復号用検査行列がｋ×ｎの部分行列と（ｍ−ｋ）×ｎの部分行列を形成し、部分行列を使用してシンドローム値を算出し、こうして計算されたシンドローム値を使用して複数のＬＬＲテーブルのうち最良と推定されるＬＬＲテーブルを選択する。このため、算出される必要のあるシンドローム値は、ｋ＋（ｍ−ｋ）＝ｍ個である。よって、復号用検査行列が使用されて２ｍ個のシンドローム値が算出される場合より少ない計算量でシンドローム値が算出されることが可能であり、短い時間で必要なシンドローム値が算出されることができる。よって、２つのシンドロームのうち、より良いＬＬＲテーブルが、元の復号用行列を使用した場合よりも短い時間で選択されることが可能である。
【０１５０】
また、シンドローム値の使用を通じてＬＬＲテーブルが評価される。このため、あるＬＬＲテーブルを使用して得られたＬＬＲに対する復号の結果を得る前に、使用されたＬＬＲテーブルが評価、すなわち、他のＬＬＲテーブルと比較されることができる。このため、ＬＬＲテーブルの再選択が、復号の結果に基づいたＬＬＲテーブルの再選択よりも短い時間で完了されることができる。よって、復号の成功までに要する時間が、復号の結果に基づいたＬＬＲテーブルの再選択を含んだ復号の成功までに要する時間よりも短い。
【０１５１】
（第５実施形態）
第５実施形態は、第４実施形態に基づき、３つ以上のＬＬＲテーブルからの選択および選択用途の検査行列の形成の例に関する。
【０１５２】
第５実施形態のメモリシステム５は、第１実施形態のメモリシステム５と同じ要素および接続を有する。一方、第５実施形態のメモリコントローラ２は、第４実施形態のメモリコントローラ２と同じ要素および接続を有し、かつ、以下に記述される動作を行えるように構成されている。具体的には、ＲＯＭ２４中のファームウェアがメモリコントローラ２に以下に記述される動作を行わせるように構成されている。
【０１５３】
図３１は、第５実施形態の全体制御部２７の一部およびシンドロームチェック回路２６１１のより詳細なブロック図であり、全体制御部２７の一部およびシンドロームチェック回路２６１１のうちのＬＬＲテーブル選択モードで動作する部分を示す。
【０１５４】
図３１に示されるように、ＬＬＲ変換部２７２は、ＬＬＲ変換部２７２ａ、２７２ｂ、および２７２ｃを含む。ＬＬＲ変換部２７２ａ、２７２ｂ、および２７２ｃは、例えば、並行して動作することができ、ＬＬＲ変換部２７２の機能の一部により実現される。ＬＬＲ変換部２７２ａ、２７２ｂ、および２７２ｃは、第４実施形態のＬＬＲ変換部２７２ａ（または２７２ｂ）と同様に、それぞれＬＬＲテーブル２７２１ａ、２７２１ｂ、および２７２１ｃを使用して、ＬＬＲラベルＬＬＲｌ１〜ＬＬＲｌｎをｎ個のＬＬＲ値のそれぞれの組に変換する。
【０１５５】
シンドロームチェック回路２６１１は、シンドロームチェック回路２６１１ａ、２６１１ｂ、および２６１１ｃを含む。シンドロームチェック回路２６１１ａ、２６１１ｂ、２および６１１ｃは、並行して動作することができ、シンドロームチェック回路２６１１の機能の一部により実現される。シンドロームチェック回路２６１１ａ、２６１１ｂ、および２６１１ｃは、それぞれ、ｉ×ｎの検査行列、ｊ×ｎの検査行列、（ｍ−ｉ−ｊ）×ｎの検査行列を保持する。ここで、ｉおよびｊは、ｍ以下の自然数である。シンドロームチェック回路２６１１ａは、第４実施形態のシンドロームチェック回路２６１１ａ（または２６１１ｂ）と同様に、ｎ個のＬＬＲ値のそれぞれのｎ個の硬判定値からなる１×ｎ行列とｉ×ｎの検査行列の積を算出し、ｉ個のシンドローム値Ｓａ１〜Ｓａｉを取得する。シンドロームチェック回路２６１１ｂは、第４実施形態のシンドロームチェック回路２６１１ａ（または２６１１ｂ）と同様に、ｎ個のＬＬＲ値のそれぞれのｎ個の硬判定値からなる１×ｎ行列とｊ×ｎの検査行列の積を算出し、ｊ個のシンドローム値Ｓｂ１〜Ｓｂｊを取得する。シンドロームチェック回路２６１１ｃは、第４実施形態のシンドロームチェック回路２６１１ａ（または２６１１ｂ）と同様に、ｎ個のＬＬＲ値のそれぞれのｎ個の硬判定値からなる１×ｎ行列と（ｍ−ｉ−ｊ）×ｎの検査行列の積を算出し、（ｍ−ｉ−ｊ）個のシンドローム値Ｓｃ１〜Ｓｃ（ｍ−ｉ−ｊ）を取得する。
【０１５６】
加算部２７５は、加算部２７５ａ、２７５ｂ、および２７５ｃを含む。加算部２７５ａは、シンドローム値Ｓａ１〜Ｓａｉを加算して、総和Ｔａを算出する。加算部２７５ｂは、シンドローム値Ｓｂ１〜Ｓｂｊを加算して、総和Ｔｂを算出する。加算部２７５ｃは、シンドローム値Ｓｃ１〜Ｓｃ（ｍ−ｉ−ｊ）を加算して、総和Ｔｃを算出する。
【０１５７】
ＬＬＲテーブル選択部２７６は、総和Ｔａ、Ｔｂ、およびＴｃのうちの最小のものを選択する。ＬＬＲテーブル選択部２７６は、総和Ｔａ、Ｔｂ、およびＴｃのうちの最小のものに対応するＬＬＲテーブル２７２１ａ、２１２１ｂ、または２７２１ｃを選択する。
【０１５８】
図３２は、第５実施形態に係る種々の検査行列の例を示す。図３０は、上から第１段目、第２段目、第３段目、第４段目において、それぞれ、ｍ×ｎの復号用検査行列、ｉ×ｎの検査行列、ｊ×ｎの検査行列、（ｍ−ｉ−ｊ）×ｎの検査行列を示す。ｉ×ｎの検査行列、ｊ×ｎの検査行列、（ｍ−ｉ−ｊ）×ｎの検査行列は、復号用検査行列の部分行列であり、それぞれ、シンドロームチェック回路２６１１ａ、２６１１ｂ、および２６１１ｃによって使用される。ｉ×ｎの検査行列中の行、ｊ×ｎの検査行列中の行、（ｍ−ｉ−ｊ）×ｎの検査行列中の行は、復号用検査行列のうちの任意の行を含むことができる。各部分行列は、第４実施形態と同様に、ＥＣＣ回路２６の回路の複雑化の抑制およびＥＣＣ回路２６中のＲＡＭの使用効率の向上の点から、互いに重複しない行からなることができる。図３２は、そのような例を示しており、第１段目の検査行列が、復号用検査行列の第１〜第ｉ行の部分、第２段目の検査行列が第ｉ＋１〜第（ｉ＋ｊ）行の部分、第３段目の検査行列が第（ｉ＋ｊ＋１）〜第ｍ行の部分であるケースを示す。
【０１５９】
ここまで記述された原理の拡張により、４以上のＬＬＲテーブルから最良のＬＬＲテーブルが選択されることができる。
【０１６０】
次に、図３３および図３４を参照して、部分行列の形成の例が記述される。図３３および図３４はともに、復号用検査行列とその複数の部分行列の組を示す。図３３の部分行列は、第５実施形態において使用されることができ、図３４の部分行列は第４および第５実施形態において使用されることができる。
【０１６１】
図３３は、第１段目の復号用検査行列の第１〜第５行の組、第６〜第１０行の組、第１１〜第１５行の組が、相違するシンドロームチェック回路で使用される例を示す。列に沿った太線は、シンドロームチェック回路の処理単位を示す。すなわち、シンドロームチェック回路は、ある最大の処理単位以下の処理単位でシンドロームを計算することができ、図３３の例では、最大の処理単位以下の５列ごとにシンドロームが算出されることを示す。図３３の例は、行の各組において、ちょうど太線により分けられた５×５の部分行列が互いに巡回行列の関係を有するように、部分行列が形成されている。この例では、単に連続する行が各部分行列を構成するので、シンドロームの算出の制御が容易になされることができる。
【０１６２】
図３４は、いずれの部分行列においても全ての処理単位が同じ数の非ゼロ要素（＝１）を有するように部分行列が形成されている。このような部分行列の形成のために、例えば、第１段目の復号用検査行列は、第１〜第３および第７〜第９行からなる部分行列と、第４〜第６および第１０〜第１２行からなる部分行列とに分割される。２つの部分行列が、それぞれ別のシンドロームチェック回路によって使用される。図３４の例では、上記のように、いずれの部分行列においても全ての処理単位が同じ数の非ゼロ要素（＝１）を有するように部分行列が形成されている。この結果、全ての列での列重み（列中の非ゼロ要素の数）が互いに一致する。このため、シンドローム値の総和の比較の際に、列重みの違いが考慮される必要がない。
【０１６３】
第５実施形態によれば、第４実施形態と同じく、復号用検査行列から複数の部分行列が形成され、部分行列が使用されてシンドローム値が計算され、こうして計算されたシンドローム値が使用されて複数のＬＬＲテーブルのうち最良と推定されるＬＬＲテーブルが選択される。このため、第４実施形態と同じ利点を得られる。また、第５実施形態によれば、復号用検査行列から３以上の部分行列が形成されて、３以上の部分行列が並行して使用されて並行してシンドローム値が算出されることができる。このため、多くのＬＬＲテーブルの中から最良と推定されるＬＬＲテーブル値が選択されることができる。
【０１６４】
（第６実施形態）
第６実施形態は、第４実施形態に基づき、ＬＬＲテーブルの選択の別の方法に関する。
【０１６５】
第６実施形態のメモリシステム５は、第１実施形態のメモリシステム５と同じ要素および接続を有する。一方、第６実施形態のメモリコントローラ２は、第４実施形態メモリコントローラ２と同じ要素および接続を有し、かつ、以下に記述される動作を行えるように構成されている。具体的には、ＲＯＭ２４中のファームウェアがメモリコントローラ２に以下に記述される動作を行わせるように構成されている。
【０１６６】
また、第６実施形態のＥＣＣ回路２６は、図３５に示される要素および接続を含む。図３５は、第６実施形態のＥＣＣ回路２６のうち、符号化に関する要素を示す。図３５に示されるように、ＥＣＣ回路２６は、内符号化回路２６４および外符号化回路２６５を含む。
【０１６７】
内符号化回路２６４は、入力されたデータ、例えば、実書き込みデータのうちの全体制御部２７によって分割された部分（実書き込みデータ部分）の誤り訂正のためのパリティを生成して、内符号化データを生成する。内符号化データは、内符号化回路２６４への入力データとパリティを含む。内符号化回路２６４は、内符号化回路２６４によって採用されている誤り訂正の方式に基づいて内符号パリティを生成し、例えばＢＣＨ符号化に基づいて、内符号パリティを生成する。
【０１６８】
外符号化回路２６５は、内符号化回路２６４から内符号化データの組を受け取り、内符号化データの組の誤り検出のためのパリティを生成して、外符号化データを生成する。外符号化データは、内符号化データの組とパリティを含む。外符号化回路２６５は、外符号化回路２６５によって採用されている誤り訂正の方式に基づいて符号化を行い、例えばＬＤＰＣ符号化に基づいて外符号パリティを生成する。
【０１６９】
図３６は、第６実施形態の実書き込みデータ、内符号化データ、および外符号化データの例を示す。図３６に示されるように、実書き込みデータは、複数の部分（実書き込みデータ部分１、２、…、ｓ（ｓは自然数））に分割される。内符号化回路２６４は、実書き込みデータ部分１、２、…、ｓのそれぞれのための内符号パリティ１、２、…、ｓを生成する。実書き込みデータ部分１、２、…、ｓには、それぞれ、内符号パリティ１、２、…、ｓが後続して、内符号化データ１、２…、ｓを構成する。
【０１７０】
連接された内符号化データ１、２、…、ｓに対して、外符号パリティが生成される。外符号化データは、書き込みデータとして、記憶装置１に書き込まれる。
【０１７１】
図３７は、第６実施形態のＥＣＣ回路中の要素および接続、ならびにメモリコントローラ中のＥＣＣ回路に関連する機能ブロックを示す。図３７に示されるように、誤り訂正回路２６１は、内符号復号回路２６１５を含む。内符号復号回路２６１５は、データと当該データのためのパリティの組を受け取り、データとパリティを使用して、データ中の誤りを検出する。内符号復号回路２６１５は、内符号化回路２６４と同じ符号化方式に基づいて、入力されたデータを復号し、すなわち、内符号パリティを使用して、当該内符号パリティと対を構成するデータの誤りを検出する。具体的には、内符号復号回路２６１５は、図３６に示される１つの実書き込みデータ部分（例えば実書き込みデータ部分１）と、対応する内符号パリティ（例えば内符号パリティ１）と、を受け取ると、当該実書き込みデータ部分中の誤りの数を検出する。検出されることが可能な誤り数は、内符号化回路２６４と内符号復号回路２６１５によって採用されている符号化方式に依存する。
【０１７２】
内符号復号回路２６１５は、検出された誤りの数をＬＬＲテーブル選択部２７６に供給する。または、内符号復号回路２６１５は、入力された書き込みデータ部分とパリティ中に内符号復号回路２６１５による誤り検出能力を超える数の誤りが含まれている場合、フェイル判定の旨の信号をＬＬＲテーブル選択部２７６に供給する。
【０１７３】
次に、図３８および図３９を参照して、第６実施形態のフローが記述される。第６実施形態のフローの全体は、第４実施形態（図２８）と同じであり、第６実施形態は、ステップＳ６１のサブフローの点で第４実施形態と相違する。
【０１７４】
第６実施形態では、図３６に示される外符号化データが予め選択ページに書き込まれているものとする。したがって、ステップＳ１およびＳ１１（図７）で読み出されたハードビットデータおよびソフトビットデータは、図３８に示されるように、外符号化データに基づく。すなわち、ハードビットデータは、実書き込みデータ部分のビット、内符号パリティビットのビット、外符号パリティのビットを含み、ソフトビットデータも、実書き込みデータ部分に基づくビット、内符号パリティビットに基づくビット、外符号パリティに基づくビットを含む。よって、ＬＬＲラベルも、実書き込みデータ部分のビットに基づくもの、内符号パリティのビットに基づくもの、外符号パリティのビットに基づくものを含む。
【０１７５】
図３９は、第６実施形態のステップＳ６１のサブフローを示す。図３９に示されるように、ステップＳ１１は、サブステップＳＳ６２１に継続する。サブステップＳＳ６２１において、全体制御部２７は、任意の１つの実書き込みデータ部分（例えば、実書き込みデータ部分１）と、対応する内符号パリティ（例えば内符号パリティ１）との組（検査用内符号化データ）に対応するＬＬＲラベルを、ある第１ＬＬＲテーブル（例えば、ＬＬＲテーブル２７２１ａ）を使用して、ＬＬＲ値セットに変換する。全体制御部２７は、得られたＬＬＲ値セットを内符号復号回路２６１５に供給する。
【０１７６】
サブステップＳＳ６２２において、内符号復号回路２６１５は、受け取られたＬＬＲ値セットの誤りを検出し、誤り数Ｃ１をＬＬＲテーブル選択部２７６に供給する。
【０１７７】
サブステップＳＳ６２３において、ＬＬＲテーブル選択部２７６は、誤り数Ｃ１を保持する。
【０１７８】
サブステップＳＳ６２５において、全体制御部２７は、検査用内符号化データに対応するＬＬＲラベルを、別の第２ＬＬＲテーブル（例えば、ＬＬＲテーブル２７２１ｂ）を使用して、ＬＬＲ値セットに変換する。全体制御部２７は、得られたＬＬＲ値セットを内符号復号回路２６１５に供給する。
【０１７９】
サブステップＳＳ６２６において、内符号復号回路２６１５は、受け取られたＬＬＲ値セットの誤りを検出し、誤り数Ｃ２をＬＬＲテーブル選択部２７６に供給する。
【０１８０】
サブステップＳＳ６２７において、ＬＬＲテーブル選択部２７６は、誤り数Ｃ２を保持する。
【０１８１】
サブステップＳＳ６２８において、ＬＬＲテーブル選択部２７６は、誤り数Ｃ１とＣ２を比較する。誤り数Ｃ１が誤り数Ｃ２より小さければ（サブステップＳＳ６２８のＹｅｓ分岐）、ＬＬＲテーブル選択部２７６は、第１ＬＬＲテーブルを選択する（サブステップＳＳ６３２）。誤り数Ｃ１が誤り数Ｃ２以上であれば（サブステップＳＳ６２８のＮｏ分岐）、ＬＬＲテーブル選択部２７６は、第２ＬＬＲテーブルを選択する（サブステップＳＳ６３３）。サブステップＳＳ６３２およびＳＳ６３３は、ステップＳ１２に継続する。
【０１８２】
ステップＳ１２での復号には、サブステップＳＳ６３２で選択されたＬＬＲテーブルまたはサブステップＳＳ６３３で選択されたＬＬＲテーブルが使用される。
【０１８３】
３つ以上のＬＬＲテーブルが比較されて、比較の結果に基づいて１つのＬＬＲテーブルが選択されることができる。そのために、ＬＬＲ値セットの取得、誤り数の割り出し、誤り数の保持（例えば、ステップＳＳ６２１、ＳＳ６２２、およびＳＳ６２３）が各選択候補のＬＬＲテーブルについて繰り返される。次いで、得られた複数の誤り数のうち、最小のものが選択され、最小の誤り数に繋がったＬＬＲテーブルが選択される。
【０１８４】
第６実施形態のメモリコントローラ２は、内符号パリティを使用した誤り検出の結果に基づいて、使用されたＬＬＲテーブルを評価する。このため、あるＬＬＲテーブルを使用して得られたＬＬＲに対する復号の結果を得る前に、使用されたＬＬＲテーブルが評価、すなわち、他のＬＬＲテーブルと比較されることができる。このため、ＬＬＲテーブルの再選択が、復号の結果に基づいたＬＬＲテーブルの再選択よりも短い時間で完了されることができる。よって、復号の成功までに要する時間が、復号の結果に基づいたＬＬＲテーブルの再選択を含んだ復号の成功までに要する時間よりも短い。
【０１８５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【０１８６】
１…記憶装置、２…メモリコントローラ、３…ホスト装置、５…メモリシステム、１１…セルアレイ、１２…入出力回路、１３…シーケンサ、１５…ドライバ、１６…センスアンプ、１９…ロウデコーダ、２１…ホストインターフェイス、２２…ＣＰＵ、２３…ＲＡＭ、２４…ＲＯＭ、２５…メモリインターフェイス、２６…ＥＣＣ回路、２６１…誤り訂正回路、２６２…誤り検出回路、２６１１…シンドロームチェック回路、２６１２…復号回路、２６１３…シンドロームチェック回路、２６１５…内符号復号回路、２６４…内符号化回路、２６５…外符号化回路、２７…全体制御部、２７１…データ保持部、２７２…ＬＬＲ変換部、２７３…シフトテーブル保持部、２７５…加算部、２７６…ＬＬＲテーブル選択部。
【図１】
2019056955.tif 000003
【図２】
2019056955.tif 000004
【図３】
2019056955.tif 000005
【図４】
2019056955.tif 000006
【図５】
2019056955.tif 000007
【図６】
2019056955.tif 000008
【図７】
2019056955.tif 000009
【図８】
2019056955.tif 000010
【図９】
2019056955.tif 000011
【図１０】
2019056955.tif 000012
【図１１】
2019056955.tif 000013
【図１２】
2019056955.tif 000014
【図１３】
2019056955.tif 000015
【図１４】
2019056955.tif 000016
【図１５】
2019056955.tif 000017
【図１６】
2019056955.tif 000018
【図１７】
2019056955.tif 000019
【図１８】
2019056955.tif 000020
【図１９】
2019056955.tif 000021
【図２０】
2019056955.tif 000022
【図２１】
2019056955.tif 000023
【図２２】
2019056955.tif 000024
【図２３】
2019056955.tif 000025
【図２４】
2019056955.tif 000026
【図２５】
2019056955.tif 000027
【図２６】
2019056955.tif 000028
【図２７】
2019056955.tif 000029
【図２８】
2019056955.tif 000030
【図２９】
2019056955.tif 000031
【図３０】
2019056955.tif 000032
【図３１】
2019056955.tif 000033
【図３２】
2019056955.tif 000034
【図３３】
2019056955.tif 000035
【図３４】
2019056955.tif 000036
【図３５】
2019056955.tif 000037
【図３６】
2019056955.tif 000038
【図３７】
2019056955.tif 000039
【図３８】
2019056955.tif 000040
【図３９】
2019056955.tif 000041