(57)【要約】【課題】ビットエラーの発生を抑制して安定したデータ読出しを可能にする。【解決手段】実施形態に係るメモリシステムは、不揮発性メモリの処理対象ページに格納するライトデータに対して誤り抑制符号化を実行する誤り抑制符号化器と、前記誤り抑制符号化済みの前記ライトデータを前記不揮発性メモリの前記処理対象ページに書き込み、前記処理対象ページから前記誤り抑制符号化済みの前記ライトデータをリードデータとして読み出すメモリインタフェースと、前記不揮発性メモリの前記処理対象ページから読み出された前記リードデータに対して誤り抑制復号を実行する誤り抑制復号器と、前記処理対象ページを示す情報と前記処理対象ページのデバイス特性を示す情報とのうちの少なくとも１つを基に、前記誤り抑制符号化器及び前記誤り抑制復号器の誤り抑制符号化率を決定する誤り抑制符号化率決定部とを備える。【選択図】図６
2019169216.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが多値ビットを記憶可能な複数のメモリセルを備える不揮発性メモリと、
前記不揮発性メモリの処理対象ページに格納するライトデータに対して誤り抑制符号化を実行する誤り抑制符号化器と、
前記誤り抑制符号化済みの前記ライトデータを前記不揮発性メモリの前記処理対象ページに書き込み、前記処理対象ページから前記誤り抑制符号化済みの前記ライトデータをリードデータとして読み出すメモリインタフェースと、
前記不揮発性メモリの前記処理対象ページから読み出された前記リードデータに対して誤り抑制復号を実行する誤り抑制復号器と、
前記処理対象ページを示す情報と前記処理対象ページのデバイス特性を示す情報とのうちの少なくとも１つを基に、前記誤り抑制符号化器及び前記誤り抑制復号器の誤り抑制符号化率を決定する誤り抑制符号化率決定部と、
を備えるメモリシステム。
【請求項２】
前記誤り抑制符号化済みの前記ライトデータに対してページ内方向の第１誤り訂正用の第１パリティを付加する第１誤り訂正符号化を実行する第１誤り訂正符号化器と、
前記不揮発性メモリの前記処理対象ページから読み出された前記リードデータに対して前記第１パリティを用いた第１誤り訂正を行う第１誤り訂正復号器と、
前記処理対象ページを示す情報と前記処理対象ページのデバイス特性を示す情報とのうちの少なくとも１つを基に、前記第１誤り訂正符号化器及び前記第１誤り訂正復号器の誤り訂正符号化率を決定する誤り訂正符号化率決定部と、
をさらに備え、
前記メモリインタフェースは、前記第１パリティが付加された前記誤り抑制符号化済みの前記ライトデータを前記処理対象ページに書き込み、
前記誤り抑制復号器は、前記第１誤り訂正復号器による前記第１誤り訂正済みの前記リードデータに対して前記誤り抑制復号を実行する
請求項１に記載のメモリシステム。
【請求項３】
前記デバイス特性を示す情報は、各ページの誤り抑制符号化率の組合せとセル閾値電圧の制御性能との関係を示す情報である請求項１に記載のメモリシステム。
【請求項４】
前記デバイス特性を示す情報は、各ページの誤り抑制符号化率の組合せと、ビットエラーレート（ＢＥＲ）又はフレームエラーレート（ＦＥＲ）の変化、若しくは、ＢＥＲとＦＥＲとの相対的関係の変化を示す情報である請求項１に記載のメモリシステム。
【請求項５】
前記誤り抑制符号化器と前記第１誤り訂正符号化器とは、前記誤り抑制符号化によって増加するデータ量と、前記第１誤り訂正符号化によって増加するデータ量との和が一定となるように制御される請求項２に記載のメモリシステム。
【請求項６】
前記第１誤り訂正符号化器は、前記第１誤り訂正符号化によって増加するデータ量が全処理対象ページで同一となるように前記第１誤り訂正符号化を実行し、
前記誤り抑制符号化器は、前記誤り抑制符号化によって増加するデータ量が多い処理対象ページにおける増加データの一部を、前記誤り抑制符号化によって増加する前記データ量が少ない処理対象ページに書き込むことで、前記第１パリティを除いたデータ量が全処理対象ページで同一となるように、前記誤り抑制符号化を実行する
請求項２に記載のメモリシステム。
【請求項７】
ページ当たりに記憶される論理データ量を減らし、削減分を前記誤り抑制符号化器の前記誤り抑制符号化率を下げることに使用する請求項１に記載のメモリシステム。
【請求項８】
前記複数のメモリセルのうちの一部の複数のメモリセルは、複数のページに対応するメモリセルグループを構成し、
前記ライトデータは、前記メモリセルグループが構成する前記複数のページそれぞれに格納される複数のページデータで構成されたデータクラムであり、
前記誤り抑制符号化率決定部は、前記処理対象ページを示す情報と前記処理対象ページのデバイス特性を示す情報とのうちの少なくとも１つを基に、前記複数のページデータそれぞれのサブデータクラムへの分割数を決定し、
前記誤り抑制符号化器は、前記誤り抑制符号化率決定部で決定された前記分割数に基づいて前記複数のページデータそれぞれを１以上のサブデータクラムに分割し、前記サブデータクラムごとにデータ変換の実行有無を決定し、前記サブデータクラムそれぞれに対する前記データ変換の実行有無を示すフラグを前記ページデータに付加し、前記付加されたフラグに従って前記サブデータクラムそれぞれにデータ変換を実行する
請求項１に記載のメモリシステム。
【請求項９】
前記誤り抑制符号化器は、前記データクラムを構成する前記複数のページデータに付加された前記フラグの全通りの組合せそれぞれに従って前記サブデータクラムそれぞれにデータ変換を実行することで、前記フラグの全通りの組合せに関するデータ変換候補を生成し、前記生成したデータ変換候補の中から所定の選択ルールに従って１つのデータ変換候補を選択し、前記選択したデータ変換候補を前記誤り抑制符号化済みの前記ライトデータとする請求項８に記載のメモリシステム。
【請求項１０】
前記誤り抑制復号器は、前記フラグに従って、前記サブデータクラムごとに、前記データ変換の逆変換である誤り抑制復号を実行する請求項８に記載のメモリシステム。
【請求項１１】
前記誤り抑制符号化済みの前記ライトデータに対してページ内方向の第１誤り訂正用の第１パリティを付加する第１誤り訂正符号化を実行する第１誤り訂正符号化器と、
前記不揮発性メモリの前記処理対象ページから読み出された前記リードデータに対して前記第１パリティを用いた第１誤り訂正を行う第１誤り訂正復号器と、
前記処理対象ページを示す情報と前記処理対象ページのデバイス特性を示す情報とのうちの少なくとも１つを基に、前記第１誤り訂正符号化器及び前記第１誤り訂正復号器の誤り訂正符号化率を決定する誤り訂正符号化率決定部と、
をさらに備え、
前記メモリインタフェースは、前記第１パリティが付加された前記誤り抑制符号化済みの前記ライトデータを前記処理対象ページに書き込み、
前記誤り抑制復号器は、前記第１誤り訂正復号器による前記第１誤り訂正済みの前記リードデータに対して前記誤り抑制復号を実行する
請求項８に記載のメモリシステム。
【請求項１２】
前記誤り抑制符号化済みの複数のページデータで構成される多次元の誤り訂正符号に対してページ間の第２誤り訂正用の第２パリティを付加する第２誤り訂正符号化を実行する第２誤り訂正符号化器と、
前記誤り抑制符号化済みの各ページデータ及び前記第２誤り訂正符号化で生成された前記第２パリティに対してページ内方向の第１誤り訂正用の第１パリティをそれぞれ付加する第１誤り訂正符号化を実行する第１誤り訂正符号化器と、
前記不揮発性メモリの前記処理対象ページから読み出された前記リードデータに対して前記第１パリティを用いた前記第１誤り訂正を行う第１誤り訂正復号器と、
前記第１誤り訂正済みの前記リードデータに対して前記第２パリティを用いた前記第２誤り訂正を行う第２誤り訂正復号器と、
前記処理対象ページを示す情報と前記処理対象ページのデバイス特性を示す情報とのうちの少なくとも１つを基に、前記第１誤り訂正符号化器及び前記第１誤り訂正復号器の誤り訂正符号化率を決定する誤り訂正符号化率決定部と、
をさらに備え、
前記メモリインタフェースは、前記第１パリティが付加された前記誤り抑制符号化済みの前記ライトデータ及び前記第２パリティを前記処理対象ページに書き込み、
前記誤り抑制復号器は、前記第２誤り訂正復号器による前記第２誤り訂正済みの前記リードデータに対して前記誤り抑制復号を実行する
請求項８に記載のメモリシステム。
【請求項１３】
前記多次元の誤り訂正符号は、データ長が同一である前記複数のページデータで構成されている請求項１２に記載のメモリシステム。
【請求項１４】
前記多次元の誤り訂正符号は、前記複数のページデータのうち、フラグ長が短いページデータに対して所定のデータを付加することで、前記複数のページデータのデータ長を揃える請求項１２に記載のメモリシステム。
【請求項１５】
前記多次元の誤り訂正符号は、前記複数のページデータのうち、フラグ長が短いページデータに対して、フラグ長が長いページデータの一部のフラグデータを再配置することで、前記複数のページデータのデータ長を揃える請求項１２に記載のメモリシステム。
【請求項１６】
前記複数のメモリセルそれぞれは、１つのセルに２ビットのデータを記憶可能なメモリセル、１つのセルに３ビットのデータを記憶可能なメモリセル、又は、１つのセルに４ビットのデータを記憶可能なメモリセルである請求項１に記載のメモリシステム。
【請求項１７】
不揮発性メモリと、
ライトデータに対してページ内方向の第１誤り訂正用の第１パリティを付加する第１誤り訂正符号化を実行する第１誤り訂正符号化器と、
前記第１誤り訂正符号化済みの前記ライトデータに対して誤り抑制符号化を実行する誤り抑制符号化器と、
前記誤り抑制符号化済みの前記ライトデータに対してページ間方向の第２誤り訂正用の第２パリティを付加する第２誤り訂正符号化を実行する第２誤り訂正符号化器と、
前記第２誤り訂正符号化済みの前記ライトデータを前記不揮発性メモリに書き込み、前記不揮発性メモリから前記第２誤り訂正符号化済みの前記ライトデータをリードデータとして読み出すメモリインタフェースと、
前記不揮発性メモリから読み出された前記リードデータに第２誤り訂正を行う第２誤り訂正復号器と、
前記第２誤り訂正済みの前記リードデータに対して誤り抑制復号を実行する誤り抑制復号器と、
前記誤り抑制復号済みの前記リードデータに対して第１誤り訂正を行う第１誤り訂正復号器と、
を備えるメモリシステム。
【請求項１８】
前記誤り抑制符号化器による前記誤り抑制符号化は、
前記第１誤り訂正符号化済みの前記ライトデータに対し、第１ビット値と第２ビット値との出願頻度に偏りが生じるように、第１所定単位でビット反転とビット非反転とを制御し、
前記ビット反転が選択された前記第１所定単位のライトデータの全ビットをビット反転することでビット反転データを生成し、
前記第１所定単位よりも小さいか等しい第２所定単位で前記ビット反転データを分割して分割ビット反転データを生成し、
前記分割ビット反転データ単位でビットを入れ替えるビットスワップ処理を実行する
ことを含む請求項１７に記載のメモリシステム。
【請求項１９】
前記誤り抑制符号化器による前記誤り抑制符号化は、
前記第１誤り訂正符号化済みの前記ライトデータに対し、第１ビット値と第２ビット値との出願頻度に偏りが生じるように、第１所定単位でビット反転とビット非反転とを制御し、
前記ビット反転が選択された前記第１所定単位のライトデータのうち除外対象ビット列の少なくとも一部を除くビットをビット反転する
ことを含み、
前記除外対象ビット列は、前記第１所定単位の入力データを前記第１所定単位より小さいか等しい第２所定単位で分割した分割入力データの部分ビット列であって、第１ビット値と第２ビット値との出願数が等しい
請求項１７に記載のメモリシステム。
【請求項２０】
前記入力データをｘ＝｛ｂ０，ｂ１，…，ｂＭ−１｝とし、ＭＳＢを最上位ビット、ＬＳＢを最下位ビットとした場合、前記入力データのビット反転は、以下の式（１）で定義される
【数１】
2019169216.tif 000009
請求項１９に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
以下の実施形態は、一般的に、メモリシステムに関する。
【背景技術】
【０００２】
近年、ＮＡＮＤセル型フラッシュメモリ（以下、単にＮＡＮＤメモリという）などの不揮発性半導体メモリの分野では、微細化に伴い、読出し時のビットエラーが増加してきている。そのため、システム全体でエラーを低減する技術が重要となっている。不揮発性半導体メモリでは一般的に、消去状態にデータ“１”を対応させ、書込み状態にデータ“０”を対応させるが、書込み・消去が繰り返される中で、書込み状態と消去状態との往復回数（以下、Ｗ／Ｅ回数という）が増加するほど、メモリセルの酸化膜を通過する電子の数が多くなり、メモリセルの疲弊が進行した状態となる。また、より高い閾値電圧分布に書込みがなされるほど、隣接するメモリセルに与える干渉効果が大きくなり、それにより、ビットエラーを誘発する確率が高くなる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−２０４０９号公報
【特許文献２】特許第６０２５８４４号公報
【特許文献３】特開２００１−２０２７９３号公報
【特許文献４】特開２０１５−３６９８２号公報
【特許文献５】特表２０１６−５１０９２８号公報
【特許文献６】特開２０１４−１３０５８７号公報
【特許文献７】特開２０１５−６４９２５号公報
【特許文献８】特開２０１３−４５４２８号公報
【特許文献９】特表２０１１−５０８３５８号公報
【特許文献１０】特許第５３０３３２５号公報
【特許文献１１】特許第４９２８８３０号公報
【特許文献１２】米国特許第７６４４２２５号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態は、ビットエラーの発生を抑制して安定したデータ読出しを可能にするメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
実施形態によれば、メモリシステムは、それぞれが多値ビットを記憶可能な複数のメモリセルを備える不揮発性メモリと、前記不揮発性メモリの処理対象ページに格納するライトデータに対して誤り抑制符号化を実行する誤り抑制符号化器と、前記誤り抑制符号化済みの前記ライトデータを前記不揮発性メモリの前記処理対象ページに書き込み、前記処理対象ページから前記誤り抑制符号化済みの前記ライトデータをリードデータとして読み出すメモリインタフェースと、前記不揮発性メモリの前記処理対象ページから読み出された前記リードデータに対して誤り抑制復号を実行する誤り抑制復号器と、前記処理対象ページを示す情報と前記処理対象ページのデバイス特性を示す情報とのうちの少なくとも１つを基に、前記誤り抑制符号化器及び前記誤り抑制復号器の誤り抑制符号化率を決定する誤り抑制符号化率決定部とを備える。
【図面の簡単な説明】
【０００６】
【図１】図１は、一般的な誤り抑制符号及び誤り訂正符号の実装形態を備えるメモリシステムの概略構成例を示すブロック図である。
【図２】図２は、符号化単位毎の誤り抑制性能を説明するための図である。
【図３】図３は、ＴＬＣを用いた不揮発性メモリに対して誤り抑制符号を適用した場合における閾値電圧分布の例を示す図である。
【図４】図４は、ＴＬＣを用いた不揮発性メモリに対する符号化テーブルの一例を示す図である。
【図５】図５は、ページ毎に非均等なエラー特性を持った不揮発性メモリに対して同一の誤り抑制符号化率を設定した場合のＦＥＲ特性の例を示す図である。
【図６】図６は、第１の実施形態に係るメモリシステムの概略構成例を示すブロック図である。
【図７】図７は、第１の実施形態に係る誤り抑制符号及び誤り訂正符号の一実装形態を示すブロック図である。
【図８】図８は、第１の実施形態に係るページ毎に異なる誤り抑制符号化率を設定した場合のＦＥＲ特性を示す図である。
【図９】図９は、第１の実施形態に係るデバイス特性情報の一例を示す図である。
【図１０】図１０は、第１の実施形態に係るデバイス特性情報の他の一例を示す図である。
【図１１】図１１は、第２の実施形態に係るデータクラムの概略構成例を示す図である。
【図１２】図１２は、第１の実施形態における誤り抑制符号化率と第４の実施形態に係る誤り抑制符号化率との関係を説明するための図である。
【図１３】図１３は、第６の実施形態に係るＭＬＣの閾値電圧分布とデータコーディングとの対応付けの一例を示す図である。
【図１４】図１４は、第６の実施形態においてライトデータであるワードラインデータをデータクラムよりも小さい単位（サブデータクラム）に分割する流れを説明するための図である。
【図１５】図１５は、第６の実施形態において生成されるデータ変換候補の例を示す図である。
【図１６】図１６は、第６の実施形態に係る誤り抑制符号化のより詳細な流れの一例を示すフローチャートである。
【図１７】図１７は、第６の実施形態に係る誤り抑制復号のより詳細な流れの一例を示すフローチャートである。
【図１８】図１８は、第７の実施形態に係るＴＬＣの閾値電圧分布とデータコーディングとの対応付けの一例を示す図である。
【図１９】図１９は、第７の実施形態に係るワードラインデータをサブデータクラムに分割する流れを説明するための図である。
【図２０】図２０は、第８の実施形態に係るＱＬＣの閾値電圧分布とデータコーディングとの対応付けの一例を示す図である。
【図２１】図２１は、第８の実施形態に係るワードラインデータをサブデータクラムに分割する流れを説明するための図である。
【図２２】図２２は、第９の実施形態に係る書込み動作の一例を示すフローチャートである。
【図２３】図２３は、第９の実施形態に係る読出し動作の一例を示すフローチャートである。
【図２４】図２４は、第９の実施形態に係るＥＣＣフレームの概略構成例を示す図である。
【図２５】図２５は、第１０の実施形態に係るメモリシステムの概略構成例を示すブロック図である。
【図２６】図２６は、第１０の実施形態に係る積符号の一例を示す図である。
【図２７】図２７は、第１０の実施形態に係る書込み動作の一例を示すフローチャートである。
【図２８】図２８は、第１０の実施形態に係る読出し動作の一例を示すフローチャートである。
【図２９】図２９は、第１１の実施形態に係る積符号の一例を示す図である。
【図３０】図３０は、第１２の実施形態に係る積符号の一例を示す図である。
【図３１】図３１は、第１３の実施形態に係る積符号の一例を示す図である。
【図３２】図３２は、第１４の実施形態に係る積符号の一例を示す図である。
【図３３】図３３は、ページ間方向の誤り訂正符号と誤り抑制符号とページ内方向の誤り訂正符号との一実装形態を示すブロック図である。
【図３４】図３４は、図３３に示す構成においてリードデータのエラーが誤り抑制復号により増幅される際の流れを説明するための図である。
【図３５】図３５は、第１５の実施形態に係る誤り抑制符号及び誤り訂正符号の一実装形態を示すブロック図である。
【図３６】図３６は、第１５の実施形態に係る誤り抑制符号化から誤り抑制復号までの流れにおいてフラグビットにエラーが発生した場合の例を示す図である。
【図３７】図３７は、第１６の実施形態に係る誤り抑制符号及び誤り訂正符号の一実装形態を示すブロック図である。
【図３８】図３８は、第１７の実施形態に係る適応的ビット反転を隣接２３＝８ビット（Ｎ＝３）に拡張した結果を説明するための図である。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態に係るメモリシステムを詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
【０００８】
（第１の実施形態）
書込み対象のデータ（以下、ライトデータという）を信号処理によって変換してセル間干渉効果や書込み・消去によるメモリセル（単にセルともいう）の疲弊（以下、セル疲弊という）を低減するための技術には、例えば、誤り抑制符号が存在する。誤り抑制符号には、ＡＣ（Asymmetric Coding）を使用した誤り抑制符号やＢＳＥ（Bit Swap Encoding）を使用した誤り抑制符号などが存在し、メモリシステムの耐久性向上や信頼性改善を目的として、不揮発性メモリへ書き込むライトデータに対してデータ変換を適用することで、セル疲弊の抑制やビットエラーレート（ＢＥＲ）の低減を行う。なお、ＢＳＥを使用した誤り抑制符号では、例えば、ワードライン内の全ページが一まとまりにされた上で一定長さのデータクラムに区切られ、そして符号化時には、データクラムごとに閾値分布の状況を解析してデータ変換方法が決定される。
【０００９】
図１は、一般的な誤り抑制符号及び誤り訂正符号の実装形態を備えるメモリシステムの概略構成例を示すブロック図である。図１に示す構成において、ホストインタフェース（Ｉ／Ｆ）９０１７を経由してホストから入力されたライトデータは、誤り抑制符号化器９１６１によって誤り抑制符号化され、誤り訂正符号化器（以下、ＥＣＣ符号化器という）９１５１によってパリティを付加された上で、メモリＩ／Ｆ９０１８から不揮発性メモリ９０２０に書き込まれる。一方、メモリＩ／Ｆ９０１８によって不揮発性メモリ９０２０から読み出されたデータ（以下、リードデータという）は、誤り訂正復号器（以下、ＥＣＣ復号器という）９１５２によって誤り訂正された後、誤り抑制復号器９１６２によって復号される。
【００１０】
ここで、誤り抑制符号の符号化単位をどのように定義するかに関しては、いくつかのバリエーションがあり、１ページ分のリードデータを得るために不揮発性メモリ９０２０から読み出す必要があるデータ量が符号化単位により異なる。一般に、符号化単位を大きくすることによって誤り抑制符号の性能は向上する傾向にあるが、その反面、ランダムアクセス性が低下するという、トレードオフの関係にある。
【００１１】
図２は、符号化単位毎の誤り抑制性能を説明するための図である。図２に示すように、例えば、符号化単位をプレーン単位、ワードライン（ＷＬ）単位及びページ単位とした場合の中では、符号化単位毎の誤り抑制性能は、プレーン単位とした場合が最も高く、次いでワードライン単位とした場合が高く、ページ単位とした場合が最も低い。一方、目的のデータに対するランダムアクセス性については、ページ単位とした場合が最も高く、次いでワードライン単位とした場合が高く、プレーン単位とした場合が最も低い。なお、本説明において、ページは、例えば、複数のセルで構成されており、データの書込み／読出しの単位である。ワードラインとは、複数のページを構成する複数のセルが接続された制御信号線である。したがって、ワードライン単位には、複数のページが含まれる。また、プレーンは、例えば、１つ以上のブロックや１つ以上のメモリチップに相当する。したがって、プレーン単位には、複数のワードラインが含まれる。ただし、これらに限定されるものではない。以下の説明では、符号化単位をページとした場合の誤り抑制符号について、例を挙げて説明する。
【００１２】
誤り抑制によるセル疲弊抑制やＢＥＲ低減の基本的原理では、ライトデータをデータ変換することによりセルの閾値電圧に偏りを持たせ、それにより、セル疲弊やＢＥＲに関して特性の悪い閾値電圧へプログラムされるセルを削減し、特性の良い閾値電圧へプログラムされるセルを増加させる。
【００１３】
図３に、１つのセルに３ビットのデータを記憶可能（以下、３ビット／セルという）なＴＬＣ（Triple Level Cell）を用いた不揮発性メモリに対して誤り抑制符号を適用した場合における閾値電圧分布の例を示す。図３（ａ）は、誤り抑制符号を適用しない場合のセル疲弊及びＢＥＲ特性を示し、図３（ｂ）は、誤り抑制符号を適用した場合のセル疲弊及びＢＥＲ特性を示している。図３（ａ）に示すように、セル疲弊及びＢＥＲ特性は、閾値電圧が高いほど悪い傾向となっている。そのため、図３（ｂ）に示すように、誤り抑制符号化は、高い閾値電圧のセルの出現確率Ｐ（Ｖｔｈ）を低く、低い閾値電圧のセルの出現確率Ｐ（Ｖｔｈ）を高くするように行われる。
【００１４】
また、ＴＬＣを用いた場合、同じワードラインＷＬに接続されてグループ化されている複数のセルは、UPPERページ、MIDDLEページ及びLOWERページを構成する。各ページ（UPPERページ、MIDDLEページ及びLOWERページ）のビット値は、例えば、図４に示すような符号化テーブルによって、セルの閾値電圧と対応付けられている。したがって、ページを符号化単位として誤り抑制符号化を行う場合、UPPER／MIDDLE／LOWERページにおけるビット“０”の出現確率Ｐ（Ｖｔｈ）とビット“１”の出現確率Ｐ（Ｖｔｈ）とを制御することによって、閾値電圧の出現確率Ｐ（Ｖｔｈ）を削減／増加させる。例えば、図４に例示する符号化デーブルを用いてＴＬＣにおける最も高い閾値電圧（後述するＧレベルに相当）を削減した場合、UPPER／MIDDLE／LOWERページ各々に対してビット“１”が削減されるように誤り抑制符号化が実行される。
【００１５】
誤り抑制符号化を行うと、符号化前後でデータ量の増加が発生するが、誤り抑制によるデータ量の増加分だけ誤り訂正符号のパリティビットを削減することによって上記データ量増加を隠蔽することができる。ここで、パリティビットを削減したことにより誤り訂正の能力が低下するが、誤り抑制によるＢＥＲ改善が誤り訂正能力の低下を上回る場合には、結果的に、メモリシステムの信頼性を向上することが可能である。
【００１６】
ここで、誤り抑制と誤り訂正とを含めて信頼性を評価する場合、信頼性を評価するための指標には、例えば、誤り訂正失敗率（フレームエラーレート、ＦＥＲ）を使用することができる。ＦＥＲは、誤り抑制符号化の符号化率（=符号化前のデータ量/符号化後のデータ量）、及び、それによって変化する誤り訂正の符号化率に応じて変化するので、ＦＥＲ特性が最も良い誤り抑制の符号化率を選択することを可能にする。
【００１７】
ところで、ワードラインに含まれる各ページのエラー特性は同一でない場合がある。例えば、ＴＬＣの場合、LOWERページとMIDDLEページとUPPERページとのそれぞれで、エラー特性が異なる場合がある。これは、１つのセルに２ビットのデータを記憶可能（以下、２ビット／セルという）なＭＬＣ（Multiple Level Cell）の場合や１つのセルに４ビットのデータを記憶可能（以下、４ビット／セルという）なＱＬＣ（Quad Level Cell）の場合などでも同じである。したがって、同一の符号化率を使用して誤り抑制符号を適用したとしても、各ページでＦＥＲが異なる場合があり、それにより、あるページのエラー特性に対して誤り抑制の符号化率が過剰（誤り訂正の符号化率が過小、且つ、訂正能力が過剰）となる場合や、誤り抑制の符号化率が過小（誤り訂正の符号化率が過大、且つ、訂正能力が過小）となる場合がある。
【００１８】
図５に、ページ毎に非均等なエラー特性を持った不揮発性メモリ９０２０に対して同一の誤り抑制符号化率を設定した場合のＦＥＲ特性の例を示す。なお、図５には、ＴＬＣを用いた場合の例が示されている。図５に示すように、最もＦＥＲ特性の悪いUPPERページに関しては、誤り抑制の前後でＦＥＲがほぼ変化していない。また、MIDDLEページ及びLOWERページのＦＥＲは改善しているが、メモリシステムの外部から見た信頼性は、ＦＥＲが最も悪いUPPERページの影響を強く受けるため、この例では誤り抑制符号による信頼性の改善効果は小さい。
【００１９】
そこで第１の実施形態では、誤り抑制符号化をページ毎に適用する際に、各ページのエラー特性に応じて誤り抑制の符号化率を変化させる場合について、例を挙げて説明する。以下で説明する第１の実施形態によれば、各ページで誤り訂正に失敗する確率（ＦＥＲ）を、全ページで共通の誤り抑制符号化率とした場合と比較して改善することが可能となる。
【００２０】
図６は、第１の実施形態に係るメモリシステムの概略構成例を示すブロック図である。図６に示すように、メモリシステム１は、メモリコントローラ１０と、不揮発性メモリ２０とを備える。メモリシステム１は、ホスト３０と接続可能であり、図６ではホスト３０と接続された状態が示されている。ホスト３０は、例えば、パーソナルコンピュータ、携帯端末などの電子機器であってよい。
【００２１】
不揮発性メモリ２０は、データを不揮発に記憶する不揮発性メモリであり、例えば、ＮＡＮＤ型フラッシュメモリ（以下、単にＮＡＮＤメモリという）である。以下の説明では、不揮発性メモリ２０としてＮＡＮＤメモリが用いられた場合を例示するが、不揮発性メモリ２０として３次元構造フラッシュメモリ、ＲｅＲＡＭ（Resistance Random Access Memory）、ＦｅＲＡＭ（Ferroelectric Random Access Memory）等のＮＡＮＤメモリ以外の記憶装置を用いることも可能である。また、不揮発性メモリ２０が半導体メモリであることは必須ではなく、半導体メモリ以外の種々の記憶媒体に対して本実施形態を適用することも可能である。
【００２２】
メモリシステム１は、メモリコントローラ１０と不揮発性メモリ２０とが１つのパッケージとして構成されるメモリカード等であってもよいし、ＳＳＤ（Solid State Drive）等であってもよい。
【００２３】
メモリコントローラ１０は、例えばＳｏＣ（System-On-a-Chip）として構成される半導体集積回路である。以下で説明するメモリコントローラ１０の各構成要素の動作の一部又は全部は、ＣＰＵ（Central Processing Unit）がファームウエアを実行することによって実現されてもよいし、ハードウエアで実現されてもよい。
【００２４】
メモリコントローラ１０は、ホスト３０からの書込み要求に従って不揮発性メモリ２０への書込みを制御する。また、ホスト３０からの読出し要求に従って不揮発性メモリ２０からの読み出しを制御する。メモリコントローラ１０は、ホストＩ／Ｆ（ホストインタフェース）１７、メモリＩ／Ｆ（メモリインタフェース）１８、プロセッサ１１、ＲＡＭ（Random Access Memory）１２、ＲＯＭ（Read Only Memory）１３、ランダマイザ１４、ＥＣＣ回路１５、及び、信号処理回路１６を備える。ホストＩ／Ｆ（ホストインタフェース）１７、メモリＩ／Ｆ（メモリインタフェース）１８、プロセッサ１１、ＲＡＭ（Random Access Memory）１２、ＲＯＭ（Read Only Memory）１３、ランダマイザ１４、ＥＣＣ回路１５、及び、信号処理回路１６は、内部バス１９で相互に接続されている。
【００２５】
ホストＩ／Ｆ１７は、ホスト３０との間のインタフェース規格に従った処理を実施し、ホスト３０から受信した要求、書込み対象のユーザデータなどを内部バス１９に出力する。また、ホストＩ／Ｆ１７は、不揮発性メモリ２０から読み出されて復元されたユーザデータ、プロセッサ１１からの応答などをホスト３０へ送信する。
【００２６】
メモリＩ／Ｆ１８は、プロセッサ１１の指示に基づいて、不揮発性メモリ２０への書込み処理を行う。また、メモリＩ／Ｆ１８は、プロセッサ１１の指示に基づいて、不揮発性メモリ２０からの読み出し処理を行う。
【００２７】
プロセッサ１１は、メモリシステム１の各構成要素を統括的に制御する制御部である。プロセッサ１１は、ホスト３０からの要求をホストＩ／Ｆ１７経由で受け付けた場合に、その要求に応じた制御を行う。例えば、プロセッサ１１は、ホスト３０からの書込み要求に応じて、不揮発性メモリ２０へのユーザデータおよびパリティの書き込みをメモリＩ／Ｆ１８へ指示する。また、プロセッサ１１は、ホスト３０からの読出し要求に応じて、不揮発性メモリ２０からのユーザデータおよびパリティの読み出しをメモリＩ／Ｆ１８へ指示する。
【００２８】
また、プロセッサ１１は、ホスト３０から書込み要求を受信した場合、ＲＡＭ１２に蓄積されるユーザデータに対して、不揮発性メモリ２０上の格納領域（メモリ領域）を決定する。すなわち、プロセッサ１１は、ユーザデータの書込み先を管理する。ホスト３０から受信したユーザデータの論理アドレスと該ユーザデータが格納された不揮発性メモリ２０上の格納領域を示す物理アドレスとの対応はアドレス変換テーブルとして格納される。
【００２９】
また、プロセッサ１１は、ホスト３０から読出し要求を受信した場合、読出し要求により指定された論理アドレスを上述のアドレス変換テーブルを用いて物理アドレスに変換し、該物理アドレスからの読み出しをメモリＩ／Ｆ１８へ指示する。
【００３０】
ここで、ＮＡＮＤメモリでは、一般に、ページと呼ばれるデータ単位で、書き込みおよび読み出しが行われ、ブロックと呼ばれるデータ単位で消去が行われる。本実施形態では、同一のワードラインに接続される複数のメモリセルをメモリセルグループと呼ぶ。メモリセルがＳＬＣ（Single Level Cell）である場合は、１つのメモリセルグループが１ページに対応する。メモリセルがＭＬＣやＴＬＣやＱＬＣなどの多ビットセルである場合は、１つのメモリセルグループが複数ページに対応する。また、各メモリセルはワード線に接続するとともにビット線にも接続される。したがって、各メモリセルは、ワード線を識別するアドレスとビット線を識別するアドレスとで識別することが可能である。
【００３１】
ＲＡＭ１２は、例えばデータバッファとして使用され、メモリコントローラ１０がホスト３０から受信したユーザデータを不揮発性メモリ２０へ記憶するまでに一時格納する。また、ＲＡＭ１２は、不揮発性メモリ２０から読み出したユーザデータをホスト３０へ送信するまでに一時格納する。ＲＡＭ１２には、例えば、ＳＲＡＭ（Static Random Access Memory）やＤＲＡＭ（Dynamic Random Access Memory）などの汎用メモリを用いることができる。
【００３２】
また、ＲＡＭ１２は、アドレス変換テーブルや、起動時等に不揮発性メモリ２０の特定の領域から読み出されて展開されるマスタテーブル（スナップショット）などの各種管理テーブルや、各種管理テーブルの変更差分であるログ情報などを記憶するワーキングメモリとして使用されてもよい。
【００３３】
ＲＯＭ１３は、メモリコントローラ１０を動作させるための種々のプログラムやパラメータ等を記憶する。ＲＯＭ１３に格納されているプログラムやパラメータ等は、必要に応じてプロセッサ１１に読み出されて実行される。
【００３４】
ランダマイザ１４は、例えば線形帰還シフトレジスタ等を含んで構成され、入力されたシード値に対して一意に求まる擬似乱数を生成する。ランダマイザ１４で生成された擬似乱数は、例えばプロセッサ１１においてライトデータとの排他的論理和が取られる。これにより、不揮発性メモリ２０に書き込まれるライトデータがランダマイズされる。
【００３５】
信号処理回路１６は、不揮発性メモリ２０へ書き込むデータを誤り抑制符号化する符号化器として動作する。また、信号処理回路１６は、不揮発性メモリ２０から読み出されたデータを誤り抑制復号する復号器としても動作する。なお、信号処理回路１６のより詳細な構成例及び動作例については、後述において説明する。
【００３６】
ホスト３０から送信されるユーザデータは、内部バス１９に転送されてＲＡＭ１２に一旦格納された後、信号処理回路１６により誤り抑制符号化され、さらに、ＥＣＣ回路１５により誤り訂正符号化（以下、ＥＣＣ符号化という）され、その後、メモリＩ／Ｆ１８を介して不揮発性メモリ２０に書き込まれる。一方、不揮発性メモリ２０から読み出されたデータは、ＥＣＣ回路１５により誤り訂正復号（以下、ＥＣＣ復号という）され、その後、必要に応じて、信号処理回路１６により誤り抑制符号化されることで、オリジナルのユーザデータに復元される。復元されたユーザデータは、例えばＲＡＭ１２に一旦格納された後、ホストＩ／Ｆ１７を介してホスト３０へ転送される。なお、信号処理回路１６及び／又はＥＣＣ回路１５により符号化されるデータには、ユーザデータ以外にも、メモリコントローラ１０内部で用いる制御データ等が含まれてもよい。
【００３７】
以上のような構成を備えるメモリシステム１における書込み処理では、プロセッサ１１は、不揮発性メモリ２０への書込み時に、ユーザデータの誤り抑制符号化及びＥＣＣ符号化を信号処理回路１６及びＥＣＣ回路１５へ指示する。その際、プロセッサ１１は、不揮発性メモリ２０におけるライトデータの格納場所（格納アドレス）を決定し、決定した格納場所をメモリＩ／Ｆ１８へ指示する。信号処理回路１６は、プロセッサ１１からの指示に基づいて、ＲＡＭ１２上のユーザデータを誤り抑制符号化する。そして、ＥＣＣ回路１５は、プロセッサ１１からの指示に基づいて、ＲＡＭ１２上の誤り抑制符号化されたユーザデータをさらにＥＣＣ符号化する。これにより生成されたライトデータは、メモリＩ／Ｆ１８を介して不揮発性メモリ２０の指定された格納場所に書き込まれる。なお、ＥＣＣ回路１５の符号化方式としては、例えば、ＬＤＰＣ（Low-Density Parity-Check）符号やＢＣＨ（Bose-Chaudhuri-Hocquenghem）符号やＲＳ（Reed-Solomon）符号を用いた符号化方式を採用することができる。
【００３８】
一方、読出し処理では、プロセッサ１１は、不揮発性メモリ２０からの読出し時に、不揮発性メモリ２０上のアドレスを指定してメモリＩ／Ｆ１８へ読出しを指示する。また、プロセッサ１１は、ＥＣＣ回路１５へＥＣＣ復号の開始を指示するとともに、必要に応じて、信号処理回路１６へ誤り抑制復号の開始を指示する。メモリＩ／Ｆ１８は、プロセッサ１１の指示に従って、不揮発性メモリ２０の指定されたアドレスに対する読出しを実行し、この読出しにより得られたリードデータをＥＣＣ回路１５に入力する。そして、ＥＣＣ回路１５は、入力されたリードデータをＥＣＣ復号し、この復号に成功した場合、復元されたオリジナルのユーザデータをＲＡＭ１２に格納する。一方、ＥＣＣ復号に失敗した場合、プロセッサ１１は、例えば、ホスト３０へリードエラーを通知する。
【００３９】
次に、本実施形態に係る誤り抑制符号の実装形態について、図面を参照して詳細に説明する。図７は、本実施形態に係る誤り抑制符号及び誤り訂正符号の一実装形態を示すブロック図である。
【００４０】
図７に示すように、本実施形態に係る誤り抑制符号及び誤り訂正符号の一実装形態は、上述において図１を用いて例示した一般的な誤り抑制符号及び誤り訂正符号の一実装形態と同様に、ホストＩ／Ｆ１７を経由してホスト３０から入力されたライトデータが誤り抑制符号化器１６１によって誤り抑制符号化され、ＥＣＣ符号化器１５１によってパリティを付加された上で、メモリＩ／Ｆ１８から不揮発性メモリ０２に書き込まれる構成を備える。また、メモリＩ／Ｆ１８によって不揮発性メモリ２０から読み出されたリードデータが、ＥＣＣ復号器１５２によって誤り訂正された後、誤り抑制復号器１６２によって復号される構成を備える。
【００４１】
また、本実施形態に係る誤り抑制符号及び誤り訂正符号の一実装形態では、上記の構成に加え、誤り抑制符号化率決定部１６３及びＥＣＣ符号化率決定部１５３が追加されている。これらの構成において、誤り抑制符号化器１６１、誤り抑制復号器１６２及び誤り抑制符号化率決定部１６３は、例えば、図６における信号処理回路１６を構成する。また、ＥＣＣ符号化器１５１、ＥＣＣ復号器１５２及びＥＣＣ符号化率決定部１５３は、例えば、図６におけるＥＣＣ回路１５を構成する。
【００４２】
誤り抑制符号化率決定部１６３は、デバイス特性情報１２１と、現在処理しているページ（UPPER／MIDDLE／LOWER）を示す情報である処理対象ページ情報１２２とに基づいて、誤り抑制符号の符号化率を決定する。同様に、ＥＣＣ符号化率決定部１５３は、デバイス特性情報１２１と処理対象ページ情報１２２とに基づいて、ＥＣＣ符号化器１５１が実行する誤り訂正符号の符号化率を決定する。なお、デバイス特性情報１２１については、後述において説明する。また、デバイス特性情報１２１と処理対象ページ情報１２２とは、例えば適宜取得されてＲＡＭ１２等に保持されているものとする。
【００４３】
本実施形態では、誤り抑制の符号化率及び誤り訂正の符号化率が、ページによって異なり得る。そこで、ＦＥＲが最善となる符号化率をページ毎に設定することによって、メモリシステム１の信頼性の改善効果を高めることができる。
【００４４】
図８に、ページ毎に非均等なエラー特性を持った不揮発性メモリ２０に対してページ毎に異なる誤り抑制符号化率を設定した場合のＦＥＲ特性を示す。上述において図５を用いて説明したように、誤り抑制を適用しない場合にＦＥＲが最も悪いのはUPPERページであって、誤り抑制による改善効果も小さいことから、本実施形態では、UPPERページに対する誤り抑制符号化率を大きく設定して誤り訂正符号化率を小さく設定する。一方、LOWERページについては、UPPERページと比較して、大幅にＦＥＲ特性が良好であるため、誤り抑制符号化率を小さく設定して誤り訂正符号化率を大きく設定する。なお、特性的に中間に位置するMIDDLEページについては、例えば、図５で説明した共通符号化率設定時と同一の誤り抑制符号化率及び誤り訂正符号化率とする。
【００４５】
このように、LOWERページにおいて誤り抑制符号化率を小さく設定することによってLOWERページにおけるビット“０”及び“１”に対応する閾値電圧の制御性能が向上し、それにより、UPPERページのＦＥＲが向上する。なお、LOWERページでは、誤り訂正符号化率を大きくしていることからＦＥＲが悪化するが、依然としてUPPERページよりも良いＦＥＲである。したがって、ＦＥＲの最も悪いUPPERページについてＦＥＲを改善することで、メモリシステム１の信頼性を改善することができる。
【００４６】
なお、上述におけるデバイス特性情報１２１には、例えば以下のような情報が含まれ得る。１つは、図９に例示するような、各ページの誤り抑制符号化率の組合せと、ビットエラーレート（ＢＥＲ）又はフレームエラーレート（ＦＥＲ）の変化、若しくは、ＢＥＲとＦＥＲとの相対的関係の変化に関する情報である。他の１つは、図１０に例示するような、各ページの誤り抑制符号化率の組合せとセルの閾値電圧の制御性能との関係に関する情報である。図７における誤り抑制符号化器１６１及びＥＣＣ符号化器１５１は、これらのようなデバイス特性情報１２１を参照して各ページで最適な誤り抑制符号化率を選択することによって、信頼性改善の効果を最大化することができる。
【００４７】
以上で説明したように、本実施形態では、誤り抑制符号化をページ毎に適用する場合に、各ページのエラー特性に応じて誤り抑制の符号化率を変化させる。それにより、本実施形態によれば、全ページで共通の誤り抑制符号化率とした場合と比較して、各ページで誤り訂正に失敗する確率（ＦＥＲ）を改善することができる。その結果、ビットエラーの発生を抑制して安定したデータ読出しを可能にするメモリシステムを実現することが可能となる。
【００４８】
（第２の実施形態）
次に、第２の実施形態について説明する。なお、以下の説明において、上述した実施形態と同様の構成及び動作については、それらを引用することで、重複する説明を省略する。
【００４９】
第１の実施形態では、誤り抑制の符号化率を各ページの特性に応じて変化させるのに対応して誤り訂正の符号化率も変更させることで、誤り抑制符号化によって増加するデータ量と、誤り訂正符号化によって増加するデータ量との和が一定となるように制御されていた。これに対し、第２の実施形態では、図１１に示すように、誤り訂正の符号化率は全ページで一定とし、誤り抑制の符号化率の低いページの誤り抑制符号化データの一部を誤り抑制の符号化率が高いページに配置する。
【００５０】
図１１に示す例では、誤り訂正の符号化率は全ページで一定としたことで、UPPERページ、MIDDLEページ及びLOWERページそれぞれのパリティＰＵ、ＰＭ及びＰＬは同じパリティ長であるが、誤り抑制の符号化率の最も低いLOWERページの誤り抑制符号化データ（ＤＬ＋ＤＬ’）のデータ長は、他のMIDDLEページ及びUPPERページの誤り抑制符号化データＤＵ及びＤＭのデータ長よりも長い。
【００５１】
そこで本実施形態では、最も長いLOWERページの誤り抑制符号化データ（ＤＬ＋ＤＬ’）の一部の誤り抑制符号化データＤＬ’を、例えば、最も短いUPPERページの誤り抑制符号化データＤＵに配置する。これにより、UPPERページ、MIDDLEページ及びLOWERページそれぞれに実際に格納される誤り抑制符号化データ（ＤＵ＋ＤＬ’）、ＤＭ及びＤＬを均等にすることが可能となる。
【００５２】
本実施形態に係るメモリシステムは、例えば第１の実施形態において図６を用いて説明したメモリシステム１と同様であってよく、また、本実施形態に係る誤り抑制符号及び誤り訂正符号の一実装形態は、例えば第１の実施形態において図７を用いて説明した誤り抑制符号及び誤り訂正符号の一実装形態と同様であってよい。
【００５３】
ただし、本実施形態では、UPPERページ、MIDDLEページ及びLOWERページそれぞれに格納されたパリティＰＵ、ＰＭ及びＰＬと、各パリティが誤り訂正の対象とする誤り抑制符号化データとの組合せを、それぞれ以下のような組合せとする。
ＰＵ：（ＤＵ＋ＤＬ’）
ＰＭ：ＤＭ
ＰＬ：ＤＬ
【００５４】
以上のような組合せによれば、各パリティの訂正対象は、そのパリティが属しているページに書き込まれている誤り抑制符号化データを保護することとなる。
【００５５】
また、UPPERページ、MIDDLEページ及びLOWERページそれぞれのリード動作は、それぞれ以下のようになる。
【００５６】
＜UPPERページに対するリード動作＞
（１）ＤＵ、ＤＬ’及びＰＵを読出し、ＰＵを使用してＤＵ及びＤＬ’を誤り訂正。
（２）誤り訂正後のＤＵを誤り抑制復号し、復元されたユーザデータを出力。
【００５７】
＜MIDDLEページに対するリード動作＞
（１）ＤＭ及びＰＭを読出し、ＰＭを使用してＤＭを誤り訂正。
（２）誤り訂正後のＤＭを誤り抑制復号し、復元されたユーザデータを出力。
【００５８】
＜LOWERページに対するリード動作＞
（１）ＤＵ、ＤＬ’及びＰＵを読出し、ＰＵを使用してＤＵ及びＤＬ’を誤り訂正。
（２）ＤＬ及びＰＬを読出し、ＰＬを使用してＤＬを誤り訂正。
（３）ＤＬとＤＬ’とを連結してLOWERページの誤り抑制符号化データ（ＤＬ＋ＤＬ’）を復元。
（４）復元された（ＤＬ＋ＤＬ’）を誤り抑制復号し、復元されたユーザデータを出力。
【００５９】
以上のように、本実施形態では、LOWERページのリード時に２ページ分のリード動作及び誤り訂正が必要となるが、誤り訂正の符号化率を全ページで共通にてきるという利点がある。その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【００６０】
（第３の実施形態）
次に、第３の実施形態について説明する。なお、以下の説明において、上述した実施形態と同様の構成及び動作については、それらを引用することで、重複する説明を省略する。
【００６１】
第３の実施形態では、第２の実施形態と同様に、誤り抑制符号化データの一部を他のページに配置する。ただし、本実施形態では、UPPERページ、MIDDLEページ及びLOWERページそれぞれに格納されたパリティＰＵ、ＰＭ及びＰＬと、各パリティが誤り訂正の対象とする誤り抑制符号化データとの組合せが、第２の実施形態とは異なる。すなわち、本実施形態では、それぞれ以下のような組合せとする。
ＰＵ：ＤＵ
ＰＭ：ＤＭ
ＰＬ：（ＤＬ＋ＤＬ’）
【００６２】
以上のような組合せによれば、パリティ長は全ページで共通となるが、誤り訂正の符号化率は各ページで異なることとなる。また、本実施形態では、LOWERページのリード時に必要な誤り訂正を、１ページ分とすることが可能となる。なお、その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【００６３】
（第４の実施形態）
次に、第４の実施形態について説明する。なお、以下の説明において、上述した実施形態と同様の構成及び動作については、それらを引用することで、重複する説明を省略する。
【００６４】
図１２は、第１の実施形態における誤り抑制符号化率と第４の実施形態に係る誤り抑制符号化率との関係を説明するための図である。なお、図１２（ａ）は、第１の実施形態に係る誤り抑制符号化率を示す図であり、図１２（ｂ）は、第４の実施形態に係る誤り抑制符号化率を示す図である。
【００６５】
図１２に示すように、第１の実施形態（図１２（ａ）参照）と第４の実施形態（図１２（ｂ）参照）とでは、UPPERページ、MIDDLEページ及びLOWERページのそれぞれで、誤り抑制符号化データＤＵ、ＤＭ及びＤＬのデータ長、並びに、パリティＰＵ、ＰＭ及びＰＬのパリティ長は同じであるが、第４の実施形態では、１ページ当たりに格納される誤り抑制符号化前のデータ量（論理データ量ともいう）が、例えば上述した第１の実施形態におけるそれよりも少ない。それにより、本実施形態では、第１の実施形態よりも、各ページの誤り抑制の符号化率を下げられている。
【００６６】
このように、本実施形態では、１ページ当たりに格納される誤り抑制符号化前のデータ量（論理データ量）を減らすことで、各ページの誤り抑制の符号化率を下げる。これにより、メモリシステムの信頼性をより向上することが可能となる。なお、その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【００６７】
（第５の実施形態）
また、第４の実施形態では、第１の実施形態をベースとして、１ページ当たりに格納される誤り抑制符号化前のデータ量（論理データ量）を削減して、各ページの誤り抑制の符号化率を下げる場合を例示したが、ベースとする実施形態は、第１の実施形態に限定されず、例えば上述した第２又は第３の実施形態や、後述する実施形態をベースとすることも可能である。それにより、各実施形態におけるメモリシステムの信頼性をより向上することが可能となる。
【００６８】
（第６の実施形態）
次に、第６の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。第６の実施形態では、上述した実施形態において触れた、ページ間で誤り抑制の符号化率を変化させる方法について、より具体的な例を挙げて説明する。ただし、上述した実施形態に係るページ間で誤り抑制の符号化率を変化させる方法が、以下で説明する方法に限定されることを意図するものではない。また、以下の説明において、上述した実施形態と同様の構成及び動作については、それらを引用することで、重複する説明を省略する。
【００６９】
本実施形態に係るメモリシステムは、例えば第１の実施形態において図６を用いて説明したメモリシステム１と同様であってよく、また、本実施形態に係る誤り抑制符号及び誤り訂正符号の一実装形態は、例えば第１の実施形態において図７を用いて説明した誤り抑制符号及び誤り訂正符号の一実装形態と同様であってよい。ただし、本実施形態では、誤り抑制符号化の流れが以下のようになる。なお、本実施形態では、不揮発性メモリ２０のメモリセルがＭＬＣである場合とする。
【００７０】
第６の実施形態では、書込み対象のライトデータ（元データ列ともいう）をある一定のデータ長のデータクラムに区切り、区切られたデータクラム毎に誤り抑制符号化を実施する。そこで、本実施形態に係る誤り抑制符号化では、まず、基本となるデータクラムのデータ長を決定し、そして、UPPERページとLOWERページとをそれぞれ任意の整数（以下の分割数に相当）で分割する。本説明では、分割により生成されたデータ片をサブデータクラムと称する。サブデータクラムのデータ長は、基本となるデータクラムのデータ長の整数（１以上）分の１となる。なお、分割数が１の場合、符号化しない場合もあり得る。その場合、後述する第８の実施形態で説明するように、そのページの誤り抑制符号化率は１となる。
【００７１】
そして、本実施形態に係る誤り抑制符号化では、各サブデータクラムに対してフラグを付加する。フラグは、対応するサブデータクラムがデータ変換されたか否かを表すメタ情報であり、例えば１ビットフラグである。したがって、例えば、あるサブデータクラムがデータ変換された場合にはそのフラグに“１”が設定され、データ変換されなかった場合にはそのフラグに“０”が設定される。したがって、本実施形態では、各ページデータに対し、サブデータクラムへの分割数に応じたビット数の冗長データ（フラグデータ）が付加される。それにより、本実施形態では、ページ間で誤り抑制の符号化率が変化することとなる。
【００７２】
つづいて、本実施形態に係る誤り抑制符号化では、データクラム単位で誤り抑制符号化が実行される。この誤り抑制符号化では、データクラムに含まれる全てのページのフラグを使用することで、各サブデータクラムをデータ変換するか否かの全ての組合せに対して、データ変換候補が生成される。以下に、図１３〜図１５を用いて、データ変換候補の生成について説明する。
【００７３】
図１３は、２ビット／セルであるＭＬＣの閾値電圧分布とデータコーディングとの対応付けの一例を示す図である。なお、図１３（ｂ）は、ＭＬＣの閾値電圧分布を示し、図１３（ａ）は、図１３（ｂ）に示す各分布に対応付けられるデータコーディングの例を示している。また、図１３（ｂ）において、横軸は閾値電圧を表し、縦軸はメモリセル数を表している。
【００７４】
図１３（ｂ）に示すように、ＭＬＣの場合、閾値電圧分布には、分布Ｅｒ、分布Ａ、分布Ｂ及び分布Ｃの４つの分布が含まれる。分布Ｅｒは閾値電圧が最も低く、消去状態の閾値電圧分布に対応する。分布Ａ、分布Ｂ、分布Ｃの順に閾値電圧が高くなる。分布Ｃは閾値電圧が最も高い。２ビット／セルのＭＬＣを用いる場合、４つの閾値電圧分布Ｅｒ、Ａ、Ｂ、Ｃに、２ビットのデータ値をそれぞれ対応させる。この対応をデータコーディングという。このデータコーディングをあらかじめ定めておき、データの書込み（プログラム）時には、データコーディングに従って記憶するデータ値に応じた閾値電圧分布となるように各メモリセルに電荷を注入する。
【００７５】
また、ＭＬＣの場合、１つのワードラインに接続されたメモリセルグループに格納するデータ（以下、ワードラインデータという）が、２ページ分のデータ（以下、それぞれをページデータという）に対応する。各メモリセルが記憶可能な２ビットそれぞれは、これら２ページのいずれかに対応している。本実施形態では、これら２ページを、それぞれLOWERページ及びUPPERページと呼ぶ。
【００７６】
図１３（ｂ）は、データコーディングの一例を示す図である。図１３（ｂ）に示すように、分布Ｅｒは“１１”のデータ値に対応し、分布Ａは“０１”のデータ値に対応し、分布Ｂは“００”のデータ値に対応し、分布Ｃは“１０”のデータ値に対応する。図１３（ｂ）に示すデータコーディングは一例であり、データコーディングは図１３（ｂ）の例に限定されない。分布Ｅｒと分布Ａとの間に読出し電圧ＶＡが設定され、分布Ａと分布Ｂとの間に読出し電圧ＶＢが設定され、分布Ｂと分布Ｃとの間に読出し電圧ＶＣが設定される。ＶＢは、LOWERページのデータ値を判定するための読出し電圧であり、ＶＡ及びＶＣは、UPPERページのデータ値を判定するための読出し電圧である。なお、本実施形態に係るデータコーディングは、図１３（ｂ）に示すものに限定されず、種々変形することが可能である。
【００７７】
図１４は、本実施形態においてライトデータであるワードラインデータをデータクラムよりも小さい単位（サブデータクラム）に分割する流れを説明するための図である。図１４に示すように、本実施形態では、まず、ワードラインデータをある一定のデータ長で区切ることで、１つ以上のデータクラムが生成される。各データクラムは、UPPERページ及びLOWERページそれぞれのページデータで構成されている。そして本実施形態では、UPPERページ及びLOWERページそれぞれのページデータをサブデータクラムに分割する。その際、本実施形態では、分割数を１以上とする。本実施形態では、各ページデータを均等なデータ長のサブデータクラムに分割することを可能にするために、データクラムのデータ長が分割数の整数倍となるように設定される。図１４に示す例では、LOWERページのページデータを２分割し、UPPERページのページデータを１分割とした例が示されている。
【００７８】
次に、本実施形態に係る誤り抑制符号化では、図１４のようにして生成したデータクラムに対し、各サブデータクラムに対して付加するフラグの組合せパターン数と同じパターン数のデータ変換候補を仮想的に生成する。これを、図１４の例を用いて説明すると、１分割（分割無し）のUPPERページに対しては１つのフラグが設定され、２分割のLOWERページに対しては２つのサブデータクラムそれぞれに対して１つずつの合計２つのフラグが設定される。すなわち、図１４に示す例では、合計３つのフラグが設定される。そこで本実施形態では、図１５（ａ）〜図１５（ｈ）に示すように、３ビットのフラグが取り得るビットパターン（本説明では８通りのビットパターン）それぞれに対して１つずつのデータ変換候補が生成される。
【００７９】
なお、図１５に示す例では、“１”のフラグに対応するページデータをデータ変換（ビットフリップ）し、“０”のフラグに対応するページデータをデータ変換しないことで、それぞれのデータ変換候補が生成される場合が例示されている。したがって、図１５（ａ）に示す例では、全てのフラグが“０”であるため、データ変換候補はオリジナルのライトデータと同じものとなる。一方、図１５（ｂ）に示す例では、LOWERページのサブデータクラム＃０に設定されたフラグが‘１’であるため、サブデータクラム＃０のビット値がフリップされたデータ変換候補が生成される。図１５（ｃ）〜図１５（ｈ）についても同様に、フラグが‘１’のサブデータクラムのビット値をフリップすることで、それぞれのデータ変換候補が生成される。
【００８０】
以上のように、フラグの全ての組合せパターンに対してデータ変換候補を生成すると、本実施形態に係る誤り抑制符号化では、生成したデータ変換候補から、予め作成しておいた選択ルールに従って、１つのデータ変換候補を選択する。
【００８１】
ここで、選択ルールの一例について説明する。本実施形態では、例えば、以下の（１）及び（２）の選択ルールに従って、生成したデータ変換候補の中から１つのデータ変換候補を選択する。
（１）分布Ｅｒと分布Ｃが隣接している箇所の個数が最も少ないものを選択する。すなわち、ＥtoＡエラーが発生しやすい隣接データパターン数が最小のものを選択する。
（２）もし（１）の条件を満たす複数の変換候補が存在する場合は、分布Ｅｒの個数が最も多い変換候補を選択する。すなわち、セルに与える疲労度がより少ないものを選択する。
【００８２】
なお、この選択ルールは、一例を述べたに過ぎず、他の任意の選択ルールを採用してもよい。例えば、セルに与える疲労度をより少なくするために、最高の閾値電圧をもつ分布Ｃがより少ない変換候補を選択することを前記選択ルールの第１条件としてもよい。すなわち、複数の候補から最も条件の良いものを選抜することが重要であり、選択ルールの内容自体は、対象とするメモリの特性に応じて他の種々の形態に変形しても良い。
【００８３】
そして、本実施形態に係る誤り抑制符号化では、選択ルールに従って選択したデータ変換候補に対して、それぞれのサブデータクラムに対するフラグビットよりなるフラグデータを付加する。したがって、本実施形態において、フラグデータのデータ量は、各データクラムにおけるサブデータクラムの数に応じて変化する値となる。また、フラグデータのデータ内容は、選択したデータ変換候補がオリジナルのライトデータに対して変換されたサブデータクラムを表すようにする。すなわち、本実施形態では、図１５に例示したフラグデータが、選択したデータ変換候補に付加される。
【００８４】
本実施形態に係る誤り抑制符号化では、以上のような処理が全てのデータクラムに対して実行される。したがって、不揮発性メモリ２０に書き込まれるデータには、フラグデータが含まれている。
【００８５】
次に、上述した本実施形態に係る誤り抑制符号化のより詳細な流れを、図６に示す構成及び図１６に示すフローチャートを用いて説明する。図１６に示すように、誤り抑制符号化では、まず、信号処理回路１６は、例えばデバイス特性情報（図７のデバイス特性情報１２１に相当）等に基づいて、UPPERページのページデータ及びLOWERページのページデータそれぞれの分割数を決定する（ステップＳ６０１）。次に、信号処理回路１６は、ステップＳ６０１で決定した各ページデータの分割数に基づいて、データクラムのデータ長を決定する（ステップＳ６０２）。例えば、信号処理回路１６は、それぞれのページデータを分割する分割数の最小公倍数の倍数となるようにデータ長を決定する。その場合、図１３〜図１５に示した例では、UPPERページの分割数が１であり、LOWERページの分割数が２であるため、データ長は、１と２との最小公倍数である２の倍数となるように決定される。
【００８６】
次に、信号処理回路１６は、例えばＲＡＭ１２（図６参照）に蓄積されたライトデータからデータクラム１つ分のデータを取得し（ステップＳ６０３）、この取得したデータクラムの各ページのページデータを、ステップＳ６０１で決定した分割数のサブデータクラムに分割する（ステップＳ６０４）。つづいて、信号処理回路１６は、各サブデータクラムを適宜データ変換（ビットフリップ）することで、データクラムに対する全通りのデータ変換候補を作成する（ステップＳ６０５）。
【００８７】
次に、信号処理回路１６は、各データ変換候補の分布位置を特定する（ステップＳ６０６）。具体的には、信号処理回路１６は、例えば図１５（ａ）に示すデータ変換候補であれば、データクラムが“１１”、“１０”、“１０”、“００”、“００”、“０１”、“０１”、“１１”であることから、分布Ａ、分布Ｃ、分布Ｃ、分布Ｂ、分布Ｂ、分布Ａ、分布Ａ、分布Ｅｒの分布位置を特定し、これをメモリセル番号と対応付けて記憶する。なお、メモリセル番号は、例えば、各メモリセルが接続されたビットラインに対応して付されるメモリセルの番号である。
【００８８】
次に、信号処理回路１６は、ステップＳ６０５で作成したデータ変換候補のうちの１つを、特定した分布位置と予め用意しておいた選択ルールに基づいて選択する（ステップＳ６０７）。つづいて、信号処理回路１６は、選択したデータ変換候補に対し、このデータ変換候補の生成に使用したフラグの組合せをフラグデータとして付加する（ステップＳ６０８）。これにより、ステップＳ６０３で取得したデータクラムに対する誤り抑制符号が生成される。
【００８９】
その後、信号処理回路１６は、全てのデータクラムに対して誤り抑制符号化が完了したか否かを判定し（ステップＳ６０９）、完了している場合（ステップＳ６０９のＹＥＳ）、本動作を終了する。一方、完了していない場合（ステップＳ６０９のＮＯ）、信号処理回路１６は、次のデータクラムへ移行して（ステップＳ６１０）、ステップＳ６０３へリターンし、以降の動作を実行する。
【００９０】
次に、本実施形態に係る誤り抑制復号について説明する。本実施形態に係る誤り抑制復号では、基本的には、上述した誤り抑制符号化の逆の手順、すなわち、誤り抑制符号化で実行されるデータ変換の逆変換が実行される。ただし、本実施形態に係る誤り抑制復号では、不揮発性メモリ２０における読出し対象のデータが含まれるページからのデータ読出しが実行される。これは、誤り抑制符号化時には、ワードライン内の全ページデータを一括して扱ってそれぞれの分布位置を特定する必要があるが、誤り抑制復号時には、ワードライン内の全ページデータを必要としていないためである。また、誤り抑制符号化では、ライトデータをある一定のデータ長に区切り、区切られたデータクラム毎に誤り抑制符号化が実行されるのに対し、誤り抑制復号では、サブデータクラム毎に誤り抑制復号が実行されるためである。ただし、データクラムとフラグとの配置は、誤り抑制符号化時に決定した配置がそのまま使用される。
【００９１】
誤り抑制符号化の説明で触れたように、フラグデータは、誤り抑制符号化時に元データをフリップしたか否かを、サブデータクラム毎及びページ毎に示している。そのため、誤り抑制復号時には、フラグデータの内容に基づき、サブデータクラム毎に、データをフリップするかしないかを判断することが可能である。
【００９２】
次に、上述した本実施形態に係る誤り抑制復号のより詳細な流れを、図６に示す構成及び図１７に示すフローチャートを用いて説明する。なお、本動作において、信号処理回路１６に入力されるデータは、不揮発性メモリ２０から直接読み出されたデータであってもよいし、不揮発性メモリ２０から読み出されてＲＡＭ１２に一旦格納されたデータであってもよい。
【００９３】
図１７に示すように、誤り抑制復号では、まず、信号処理回路１６は、不揮発性メモリ２０又はＲＡＭ１２から、サブデータクラム１つ分のデータと、このサブデータクラムに対応するフラグとを取得する（ステップＳ６２１）。次に、信号処理回路１６は、取得したフラグがサブデータクラムの“データ変換あり”を示しているか否かを判定する（ステップＳ６２２）。なお、図１５に示す例では、フラグが“０”である場合、そのサブデータクラムは“データ変換なし”であり、“１”である場合、そのサブデータクラムは“データ変換あり”である。
【００９４】
フラグが “データ変換あり”を示している場合（ステップＳ６２２のＹＥＳ）、信号処理回路１６は、ステップＳ６２１で取得したサブデータクラムに対し、施されているデータ変換を解消するデータ変換（逆データ変換という）を実行し（ステップＳ６２３）、ステップＳ６２４へ進む。一方、フラグが“データ変換なし”を示している場合（ステップＳ６２２のＮＯ）、信号処理回路１６は、ステップＳ６２３をスキップして、ステップＳ６２４へ進む。なお、データ変換がビットフリップである場合、逆データ変換は同じくビットフリップであってよい。
【００９５】
ステップＳ６２４では、信号処理回路１６は、読出し対象のデータを構成する全てのサブデータクラムに対する上記動作の実行が完了したか否かを判定し、完了している場合（ステップＳ６２４のＹＥＳ）、本動作を終了する。一方、完了していない場合（ステップＳ６２４のＮＯ）、信号処理回路１６は、処理対象を次のサブデータクラムへと移行し（ステップＳ６２５）、その後、ステップＳ６２１へリターンして、以降の動作を実行する。
【００９６】
以上のように、本実施形態によれば、各ページのページデータの分割数を制御することでページ毎に独立して誤り抑制符号化率を変化させることが可能となる。それにより、本実施形態によれば、ビットエラーの発生を抑制して安定したデータ読出しを可能にするメモリシステムを実現することができる。
【００９７】
なお、上述では、誤り抑制符号化と誤り抑制復号との両方で、データクラム毎に独立した演算が実行される。そのため、誤り抑制符号の現実の実装では、データクラム毎に直列に演算が実行される実装形態とすることも、複数のデータクラムに並列に演算が実行される実装形態とすることも可能である。
【００９８】
また、フラグデータの配置に関しては、データとフラグとをそれぞれでまとめて配置する構成や、データとフラグとを全データ長に分散させて配置する構成など、種々変形することが可能である。
【００９９】
さらに、本実施形態では、UPPERページとLOWERページとの両方をサブデータクラムに分割する例を説明したが、このような例に限定されず、例えば、何れか一方のページについては誤り抑制符号化を実施しないように構成することも可能である。
【０１００】
さらにまた、本実施形態では、データ変換の一例としてビットフリップを挙げているが、ビットフリップ以外のデータ変換を適用することも可能である。例えば、あらかじめ決定しておいた固定パターンとサブデータクラムとの排他的論理和を演算するＸＯＲ演算や、あらかじめ決定しておいたルールに従ってビットを並べ替えるインターリービングなどをデータ変換として使用することも可能である。
【０１０１】
さらにまた、本実施形態に係るデータ変換候補の選択ルールは、複数のデータ変換候補の中から条件の良いデータ変換候補（好ましくは、最も条件のよいデータ変換候補）を選択することが可能な選択ルールであれば、上述した選択ルールに限定されず、種々変形することが可能となる。例えば、対象とする不揮発性メモリ２０の特性に応じて適宜変更されてもよい。
【０１０２】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【０１０３】
（第７の実施形態）
上述した第６の実施形態では、不揮発性メモリ２０のメモリセルがＭＬＣである場合を例示した。これに対し、第７の実施形態では、不揮発性メモリ２０のメモリセルがＴＬＣである場合を例示する。なお、以下の説明において、上述した実施形態と同様の構成及び動作については、それらを引用することで、重複する説明を省略する。
【０１０４】
第６の実施形態と同様、第７の実施形態に係るメモリシステムは、例えば第１の実施形態において図６を用いて説明したメモリシステム１と同様であってよく、また、本実施形態に係る誤り抑制符号及び誤り訂正符号の一実装形態は、例えば第１の実施形態において図７を用いて説明した誤り抑制符号及び誤り訂正符号の一実装形態と同様であってよい。さらに、本実施形態に係る誤り抑制符号化及び誤り抑制復号の流れについても、基本的には、第６の実施形態に係るそれらと同様であってよい。以下、本実施形態に係る誤り抑制符号化及び誤り抑制復号について、より詳細に説明する。
【０１０５】
まず、本実施形態に係る誤り抑制符号化について説明する。図１８は、３ビット／セルであるＴＬＣの閾値電圧分布とデータコーディングとの対応付けの一例を示す図である。なお、図１８（ｂ）は、ＴＬＣの閾値電圧分布を示し、図１８（ａ）は、図１８（ｂ）に示す各分布に対応付けられるデータコーディングの例を示している。また、図１８（ｂ）において、横軸は閾値電圧を表し、縦軸はメモリセル数を表している。
【０１０６】
図１８に示すように、ＴＬＣの場合も、ＭＬＣの場合（図１３参照）と同様に、ライトデータがある一定のデータ長に区切られて、区切られたデータクラム毎に誤り抑制符号化が実施される。この誤り抑制符号化では、基本となるデータクラムのデータ長が決定され、そして、UPPERページとMIDDLEページとLOWERページとのそれぞれのページデータが任意の整数で分割されることで、各ページデータが１つ以上のサブデータクラムに分割される。
【０１０７】
図１９は、本実施形態に係るワードラインデータをサブデータクラムに分割する流れを説明するための図である。図１９に示すように、本実施形態では、まず、ワードラインデータをある一定のデータ長で区切ることで、１つ以上のデータクラムが生成される。各データクラムは、UPPERページ、MIDDLEページ及びLOWERページそれぞれのページデータで構成されている。そして本実施形態では、UPPERページ、MIDDLEページ及びLOWERページそれぞれのページデータをサブデータクラムに分割する。その際、本実施形態でも、第６の実施形態と同様に、各ページデータの分割数を１以上とする。そして、各ページデータを均等なデータ長のサブデータクラムに分割することを可能にするために、データクラムのデータ長が分割数の整数倍となるように設定される。図１９に示す例では、LOWERページのページデータを４分割し、MIDDLEページのページデータを２分割し、UPPERページのページデータを１分割とした例が示されている。
【０１０８】
また、本実施形態においても、第６の実施形態において図１５を用いて説明した動作と同様に、サブデータクラムと同数のフラグ（本説明では７ビットのフラグ）が取り得るビットパターン（本説明では１２８通りのビットパターン）それぞれに対して１つずつのデータ変換候補が生成される。そして、生成した１２８通りのデータ変換候補から、予め作成しておいた選択ルールに従って、１つのデータ変換候補が選択される。そして、第６の実施形態と同様に、選択ルールに従って選択したデータ変換候補に対してフラグデータを付加することで、誤り抑制符号化された符号化データを生成する。
【０１０９】
次に、本実施形態に係る誤り抑制復号について説明する。本実施形態に係る誤り抑制復号についても、第６の実施形態に係る誤り抑制復号と同様に、基本的には、上述した誤り抑制符号化の逆の手順が実行される。すなわち、読出し対象のデータが含まれるページのみに対してデータ読出しが実行される。そして、誤り抑制符号化時の元データ列とフラグとの配置及びデータ内容に基づき、必要な全てのサブデータクラムに対して逆データ変換が実施される。
【０１１０】
以上のように、本実施形態によれば、不揮発性メモリ２０のメモリセルがＴＬＣである場合でも、第６の実施形態と同様に、各ページのページデータの分割数を制御することでページ毎に独立して誤り抑制符号化率を変化させることが可能となる。それにより、本実施形態によれば、ビットエラーの発生を抑制して安定したデータ読出しを可能にするメモリシステムを実現することができる。
【０１１１】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【０１１２】
（第８の実施形態）
また、第８の実施形態では、不揮発性メモリ２０のメモリセルがＱＬＣである場合を例示する。なお、以下の説明において、上述した実施形態と同様の構成及び動作については、それらを引用することで、重複する説明を省略する。
【０１１３】
第６及び第７の実施形態と同様、第８の実施形態に係るメモリシステムは、例えば第１の実施形態において図６を用いて説明したメモリシステム１と同様であってよく、また、本実施形態に係る誤り抑制符号及び誤り訂正符号の一実装形態は、例えば第１の実施形態において図７を用いて説明した誤り抑制符号及び誤り訂正符号の一実装形態と同様であってよい。さらに、本実施形態に係る誤り抑制符号化及び誤り抑制復号の流れについても、基本的には、第６及び第７の実施形態に係るそれらと同様であってよい。以下、本実施形態に係る誤り抑制符号化及び誤り抑制復号について、より詳細に説明する。
【０１１４】
まず、本実施形態に係る誤り抑制符号化について説明する。図２０は、４ビット／セルであるＱＬＣの閾値電圧分布とデータコーディングとの対応付けの一例を示す図である。なお、図２０（ｂ）は、ＱＬＣの閾値電圧分布を示し、図２０（ａ）は、図２０（ｂ）に示す各分布に対応付けられるデータコーディングの例を示している。また、図２０（ｂ）において、横軸は閾値電圧を表し、縦軸はメモリセル数を表している。
【０１１５】
図２０に示すように、ＱＬＣの場合も、ＭＬＣ及びＴＬＣの場合（図１３及び図１８参照）と同様に、ライトデータがある一定のデータ長に区切られて、区切られたデータクラム毎に誤り抑制符号化が実施される。この誤り抑制符号化では、基本となるデータクラムのデータ長が決定され、そして、TOPページとUPPERページとMIDDLEページとLOWERページとのそれぞれのページデータが任意の整数で分割されることで、各ページデータが１つ以上のサブデータクラムに分割される。
【０１１６】
図２１は、本実施形態に係るワードラインデータをサブデータクラムに分割する流れを説明するための図である。図２１に示すように、本実施形態では、まず、ワードラインデータをある一定のデータ長で区切ることで、１つ以上のデータクラムが生成される。各データクラムは、TOPページ、UPPERページ、MIDDLEページ及びLOWERページそれぞれのページデータで構成されている。
【０１１７】
そこで、本実施形態では、TOPページを誤り抑制符号化の対象とせず、それ以外の、UPPERページ、MIDDLEページ及びLOWERページを誤り抑制符号化する場合について説明する。この場合、TOPページ以外の、UPPERページ、MIDDLEページ及びLOWERページそれぞれのページデータがサブデータクラムに分割される。その際、本実施形態でも、第６及び第７の実施形態と同様に、各ページデータの分割数を１以上とする。
【０１１８】
そして、各ページデータを均等なデータ長のサブデータクラムに分割することを可能にするために、データクラムのデータ長が分割数の整数倍となるように設定される。図２１に示す例では、LOWERページのページデータを２分割し、MIDDLEページのページデータを１分割とし、UPPERページのページデータを２分割とした例が示されている。
【０１１９】
また、本実施形態においても、第６又は第７の実施形態において図１５を用いて説明した動作と同様に、サブデータクラムと同数のフラグ（本説明では５ビットのフラグ）が取り得るビットパターン（本説明では３２通りのビットパターン）それぞれに対して１つずつのデータ変換候補が生成される。そして、生成した３２通りのデータ変換候補から、予め作成しておいた選択ルールに従って、１つのデータ変換候補が選択される。そして、第６又は第７の実施形態と同様に、選択ルールに従って選択したデータ変換候補に対してフラグデータを付加することで、誤り抑制符号化された符号化データを生成する。
【０１２０】
次に、本実施形態に係る誤り抑制復号について説明する。本実施形態に係る誤り抑制復号についても、第６及び第７の実施形態に係る誤り抑制復号と同様に、基本的には、上述した誤り抑制符号化の逆の手順が実行される。すなわち、読出し対象のデータが含まれるページのみに対してデータ読出しが実行される。そして、誤り抑制符号化時の元データ列とフラグとの配置及びデータ内容に基づき、必要な全てのサブデータクラムに対して逆データ変換が実施される。
【０１２１】
以上のように、本実施形態によれば、不揮発性メモリ２０のメモリセルがＱＬＣである場合でも、第６及び第７の実施形態と同様に、各ページのページデータの分割数を制御することでページ毎に独立して誤り抑制符号化率を変化させることが可能となる。それにより、本実施形態によれば、ビットエラーの発生を抑制して安定したデータ読出しを可能にするメモリシステムを実現することができる。
【０１２２】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【０１２３】
（第９の実施形態）
次に、第９の実施形態について説明する。不揮発性メモリ２０を用いたメモリシステムには、上述した実施形態において触れたように、誤り訂正を実行するためのＥＣＣ回路１５（図６参照）が搭載される。そこで本実施形態では、誤り抑制を実行するための信号処理回路１６とＥＣＣ回路１５とを備えるメモリシステム１（図６参照）の動作について、以下に図面を参照して詳細に説明する。
【０１２４】
第９の実施形態に係るメモリシステムは、上述の実施形態において図６を用いて説明したメモリシステム１と同様であってよい。また、本実施形態に係る誤り抑制符号化及び誤り抑制復号の流れについては、上述した実施形態のうちのいずれが適用されてもよい。
【０１２５】
図２２は、本実施形態に係る書込み動作の一例を示すフローチャートである。図２２に示すように、本実施形態に係る書込み動作では、まず、制御部であるプロセッサ１１は、例えば、ホスト３０からホストＩ／Ｆ１７を介して書込み要求を受信する（ステップＳ９０１）。つづいて、プロセッサ１１は、書込み要求に含まれている論理アドレスから、不図示のアドレス変換テーブルを用いることで、書込み先のページを示す物理アドレスを特定する（ステップＳ９０２）。なお、論理アドレスと共に書込み要求に含まれている書込み対象のデータ（ライトデータ）は、例えばＲＡＭ１２に一時的に保持される。
【０１２６】
次に、プロセッサ１１は、信号処理回路１６に対して誤り抑制符号化の実行を指示する。その際、不揮発性メモリ２０への書込みがワードライン単位で実行されることから、プロセッサ１１は、ＲＡＭ１２内のワードラインデータ１つ分のライトデータに対する誤り抑制符号化の実行を信号処理回路１６へ指示する。これに対し、信号処理回路１６は、ＲＡＭ１２から１つ分のワードラインデータを取得し、取得したワードラインデータに対して、上述の実施形態で説明した誤り抑制符号化を実行する（ステップＳ９０３）。なお、誤り抑制符号化により得られたデータ（以下、誤り抑制符号化データという）は、例えば、再度、ＲＡＭ１２に格納される。
【０１２７】
次に、プロセッサ１１は、ＥＣＣ回路１５に対し、ＲＡＭ１２に格納されている誤り抑制符号化データのＥＣＣ符号化を指示する。これに対し、ＥＣＣ回路１５は、ＲＡＭ１２から誤り抑制符号化データを取得し、取得した誤り抑制符号化データに対して、ＥＣＣ符号化を実行する（ステップＳ９０４）。なお、ＥＣＣ符号化は、ＥＣＣフレーム単位で実行される。ＥＣＣフレームについては、後述において説明する。
【０１２８】
また、プロセッサ１１は、ＥＣＣ回路１５によりＥＣＣ符号化で生成されたＥＣＣフレームの不揮発性メモリ２０への書込みをメモリＩ／Ｆ１８へ指示する。これに対し、メモリＩ／Ｆ１８は、ＥＣＣ回路１５から入力されたＥＣＣフレームを不揮発性メモリ２０へ転送するとともに、不揮発性メモリ２０における不図示のコマンド処理部に対してＥＣＣフレームの上記物理アドレスへの書込みを指示する。これにより、不揮発性メモリ２０において、ＥＣＣフレームの上記物理アドレスへの書込みが実行される（ステップＳ９０５）。
【０１２９】
その後、プロセッサ１１は、ＲＡＭ１２内の全てのライトデータに対する処理が完了したか否かを判定し（ステップＳ９０６）、完了している場合（ステップＳ９０６のＹＥＳ）、本動作を終了する。一方、完了していない場合（ステップＳ９０６のＮＯ）、プロセッサ１１は、ステップＳ９０３へリターンし、次のワードラインデータに対して以降の処理を実行する。
【０１３０】
なお、図２２に示した書込み動作において、先に誤り抑制符号化を実行し、後にＥＣＣ符号化を実行する流れとしたのは、データクラムのみならずフラグデータを含むデータ全体を誤り訂正符号で保護するためである。すなわち、フラグデータにエラーが生じた場合、エラーのフラグに基づいてデータ変換されたサブデータクラム全体がエラーとなり、それにより、エラー率を増幅させてしまう。そこで本実施形態では、誤り抑制符号化データに対してＥＣＣ符号化を実行する構成とすることで、データクラムのみならずフラグデータを含むデータ全体を誤り訂正符号で保護するように構成する。
【０１３１】
次に、本実施形態に係る読出し動作について、図面を参照して詳細に説明する。図２３は、本実施形態に係る読出し動作の一例を示すフローチャートである。図２３に示すように、本実施形態に係る読出し動作では、まず、プロセッサ１１は、例えば、ホスト３０からホストＩ／Ｆ１７を介して読出し要求を受信する（ステップＳ９２１）。つづいて、プロセッサ１１は、読出し要求に含まれている論理アドレスから、不図示のアドレス変換テーブルを用いることで、読出し先のページを示す物理アドレスを特定する（ステップＳ９２２）。そして、プロセッサ１１は、特定した物理アドレスからのデータの読出しをメモリＩ／Ｆ１８に指示する。これに対し、メモリＩ／Ｆ１８は、指定された物理アドレスからのデータの読出しを不揮発性メモリ２０における不図示のコマンド処理部へ指示する。これにより、不揮発性メモリ２０において、上記物理アドレスからのデータの読出しが実行される（ステップＳ９２３）。
【０１３２】
メモリＩ／Ｆ１８によって読み出されたリードデータは、まず、ＥＣＣ回路１５に入力される。ＥＣＣ回路１５は、プロセッサ１１からの指示に従い、入力されたリードデータに対するＥＣＣ復号を実行する（ステップＳ９２４）。なお、ＥＣＣ回路１５によるＥＣＣ復号によって誤り訂正されたデータは、例えばＲＡＭ１２に格納される。
【０１３３】
次に、プロセッサ１１は、ＥＣＣ回路１５によるＥＣＣ復号に成功したか否かを判定し（ステップＳ９２５）、成功しなかった場合（ステップＳ９２５のＮＯ）、ホストＩ／Ｆ１７を介してホスト３０にリードエラーを通知し（ステップＳ９２８）、本動作を終了する。一方、ＥＣＣ復号に成功した場合（ステップＳ９２５のＹＥＳ）、プロセッサ１１は、ＥＣＣ回路１５によるＥＣＣ復号によって誤り訂正されたデータ（以下、誤り訂正済みデータという）に対する誤り抑制復号の実行を信号処理回路１６へ指示する。これに対し、信号処理回路１６は、ＲＡＭ１２に格納されている誤り訂正済みデータに対して、上述の実施形態で説明した誤り抑制復号を実行する（ステップＳ９２６）。なお、誤り抑制復号により復元されたユーザデータは、例えば、再度、ＲＡＭ１２に格納される。
【０１３４】
その後、プロセッサ１１は、ＲＡＭ１２内に復元されたユーザデータをホストＩ／Ｆ１７を介してホスト３０へ転送し（ステップＳ９２７）、本動作を終了する。
【０１３５】
このように、本実施形態に係る読出し動作では、ページ毎にデータが読み出され、そして、読み出されたデータに対してＥＣＣ復号が実行された後に、誤り訂正復号が実行される。
【０１３６】
次に、本実施形態に係るＥＣＣフレームについて、図面を用いて詳細に説明する。図２４は、本実施形態に係るＥＣＣフレームの概略構成例を示す図である。ここで、ＥＣＣフレームとは、ＥＣＣ符号化及びＥＣＣ復号を実行する際のデータの単位である。一般的に、不揮発性メモリ２０のページ長は固定であるが、上述した第６〜第８の実施形態では、フラグのデータサイズがサブデータクラムの分割数に応じてページ毎に異なる。そこで、図２４に示すように、本実施形態では、ＥＣＣ符号化対象のユーザデータを格納するデータ部と、誤り抑制符号化で付加されたフラグデータと、ＥＣＣ符号化で付加されたパリティを格納するＥＣＣパリティ部との総データ量が一定となるように、誤り訂正符号化率を調節する。
【０１３７】
以上のように、本実施形態によれば、誤り抑制符号と誤り訂正符号とを組み合わせることで、より安定したデータ読出しを可能にするメモリシステムを実現することが可能となる。
【０１３８】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【０１３９】
（第１０の実施形態）
次に、第１０の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。本実施形態では、上述した実施形態において、ＥＣＣ符号を多次元の誤り訂正符号とする。多次元の誤り訂正符号とは、ＥＣＣ符号の少なくとも一つ以上の構成単位であるシンボルが、複数のより小規模な成分符号によって多重に保護されているものを指す。その際、１シンボルは、例えば１ビット（二元体（binary field）の元（element））、又は、二元体以外の有限体（finite field）などのアルファベットの元で構成される。以下の説明では、多次元の誤り訂正符号の具体例として、積符号を例に挙げて説明する。ただし、積符号に限定されず、種々の多次元の誤り訂正符号を用いることが可能である。
【０１４０】
図２５は、本実施形態に係るメモリシステムの概略構成例を示すブロック図である。図２５に示すように、本実施形態に係るメモリシステム２は、例えば第１の実施形態において図６を用いて説明したメモリシステム１と同様の構成に加え、ページ間ＥＣＣ回路２１５をさらに備える。すなわち、本実施形態に係るメモリシステム２は、各ページデータをＥＣＣフレームとしてＥＣＣ符号化／復号を実行するＥＣＣ回路１５と、複数のページデータで構成された積符号に対してページ間方向にＥＣＣ符号化／復号を実行するページ間ＥＣＣ回路２１５とを備える。本実施形態において、ＥＣＣ回路１５をページ内ＥＣＣ回路１５といい、ページ内ＥＣＣ回路１５によるＥＣＣ符号化／復号をＥＣＣ１符号化／復号といい、これにより生成されたパリティをＥＣＣ１パリティという。また、ページ間ＥＣＣ回路２１５によるＥＣＣ符号化／復号をＥＣＣ２符号化／復号といい、これにより生成されたパリティをＥＣＣ２パリティという。
【０１４１】
ここで、図２６に、本実施形態に係る積符号の一例を示す。図２６に示す積符号では、複数のページデータ＃０〜＃ｍ−１に対して、ページ間方向に１つ以上のＥＣＣ２パリティ（本例では、２つのＥＣＣ２パリティページ＃０〜＃１）が付加された構造を有する。各ページデータ＃０〜＃ｍ−１は、ページ間で同じシンボル数（ｎ個）のユーザデータを格納するデータ部と、ページ間で異なる長さのフラグデータを格納するフラグ部と、各ページデータの長さが同じとなるように調整された長さのＥＣＣ１パリティを格納するＥＣＣ１パリティ部とから構成されている。ページデータ＃０〜＃ｍ−１それぞれは、ページ内ＥＣＣ回路１５の符号化単位であるＥＣＣフレームである。本説明では、各ページデータ＃０〜＃ｍ−１をＥＣＣ１フレームと称する。
【０１４２】
一方、各ＥＣＣ２パリティページ＃０〜＃１は、ＥＣＣ１フレームのデータ部と同じシンボル数のＥＣＣ２パリティ部と、ＥＣＣ２パリティページ間で異なる長さのフラグデータを格納するフラグ部と、各ＥＣＣ２パリティページの長さが同じとなるように調整された長さのＥＣＣ１パリティを格納するＥＣＣ１パリティ部とから構成されている。ＥＣＣ２パリティページ＃０〜＃１それぞれも、ページ内ＥＣＣ回路１５の符号化単位であるＥＣＣフレームである。なお、ＥＣＣ２パリティページの数は２つに限定されず、目的とする符号化率や誤り訂正能力に応じて種々変形されてよい。
【０１４３】
各ＥＣＣ２パリティページ＃０〜＃１は、例えば以下のようにして生成される。まず、ＥＣＣ１フレームを任意のワードラインの任意のページからｍ個集め、各ＥＣＣ１フレームのデータ部をｎ個のシンボルに分割する。そして、各ＥＣＣ１フレームにおける同じ番号のシンボルを集めることで、ＥＣＣ２パリティ＃０〜＃１それぞれのＥＣＣ２パリティ部におけるｎ個のシンボルを算出するためのｎ個のフレームデータを作成する。つづいて、ｎ個のフレームデータをＥＣＣ２符号化することで、ＥＣＣ２パリティページ＃０〜＃１それぞれのｎ個のシンボルよりなるＥＣＣ２パリティ部を生成する。
【０１４４】
このように作成されたＥＣＣ２パリティ部に対しては、ページデータ＃０〜＃ｍ−１におけるデータ部と同様に、誤り抑制符号化が実行されてフラグ部が付与される。さらに、各ＥＣＣ２パリティ部にフラグ部を付加したものにＥＣＣ１符号化を実行することで、ＥＣＣ１パリティ部が生成される。その結果、各ＥＣＣ２パリティ部とフラグ部とＥＣＣ１パリティ部とからなるＥＣＣ２パリティページ＃０〜＃１が生成される。
【０１４５】
つづいて、本実施形態に係る書込み動作について、図面を参照して詳細に説明する。図２７は、本実施形態に係る書込み動作の一例を示すフローチャートである。図２７に示すように、本実施形態に係る書込み動作では、まず、制御部であるプロセッサ１１は、例えば、ホスト３０からホストＩ／Ｆ１７を介して書込み対象のライトデータを受信する（ステップＳ１００１）。受信したライトデータは、例えばＲＡＭ１２に蓄積される。
【０１４６】
次に、プロセッサ１１は、上述した実施形態のいずれかに係る誤り抑制符号化の実行に必要なページ数分のライトデータを受信済みであるか否か、すなわち、必要なページ数分のライトデータがＲＡＭ１２に蓄積されているか否かを判定し（ステップＳ１００２）、未だ必要なページ数分のライトデータが蓄積されていない場合（ステップＳ１００２のＮＯ）、ステップＳ１００１へリターンする。一方、必要なページ数分のライトデータがＲＡＭ１２に蓄積されている場合（ステップＳ１００２のＹＥＳ）、プロセッサ１１は、信号処理回路１６に対し、ＲＡＭ１２に蓄積されている必要なページ数分のライトデータに対する誤り抑制符号化の実行を指示する。これに対し、信号処理回路１６は、ＲＡＭ１２からワードラインデータ１つ分のライトデータを順次取得し（ステップＳ１００３）、この取得したワードラインデータに対して、上述の実施形態で説明した誤り抑制符号化を実行する（ステップＳ１００４）。そして、信号処理回路１６は、ＲＡＭ１２に蓄積されている必要なページ数分のライトデータ全てに対して誤り抑制符号化の実行を完了したか否かを判定し（ステップＳ１００５）、完了している場合（ステップＳ１００５のＹＥＳ）、ステップＳ１００６へ進む。一方、完了していない場合（ステップＳ１００５のＮＯ）、ステップＳ１００３へリターンし、次の１つ分のワードラインデータに対して以降の処理を実行する。その結果、ＲＡＭ１２内には、必要なページ数分の誤り抑制符号化済みデータが蓄積される。
【０１４７】
ステップＳ１００６では、プロセッサ１１は、ページ間ＥＣＣ回路２１５に対し、ＲＡＭ１２内に蓄積されている必要なページ数分の誤り抑制符号化済みデータに対するＥＣＣ２符号化の実行を指示する。これに対し、ページ間ＥＣＣ回路２１５は、ＲＡＭ１２から必要なページ数分の誤り抑制符号化済みデータを取得し、取得した誤り抑制符号化済みデータに対してＥＣＣ２符号化を実行する（ステップＳ１００６）。なお、ＥＣＣ２符号化により得られたＥＣＣ２符号化済みデータは、ＲＡＭ１２に格納されてよい。
【０１４８】
次に、プロセッサ１１は、ページ内ＥＣＣ回路１５に対し、ＲＡＭ１２に蓄積されているＥＣＣ２符号化済みデータに対するＥＣＣ１符号化の実行を指示する。これに対し、ページ内ＥＣＣ回路１５は、ＲＡＭ１２からワードラインデータ１つ分のライトデータを順次取得し（ステップＳ１００７）、この取得したワードラインデータに対してＥＣＣ１符号化を実行する（ステップＳ１００８）。そして、プロセッサ１１は、書込み先のページを選択し（ステップＳ１００９）、その後、例えば図２２のステップＳ９０５と同様に、ＥＣＣ１符号化で生成されたＥＣＣ１フレームの不揮発性メモリ２０への書込みをメモリＩ／Ｆ１８へ指示し、この指示に応じてメモリＩ／Ｆ１８が動作することで、ＥＣＣ１フレームの不揮発性メモリ２０への書込みが実行される（ステップＳ１０１０）。
【０１４９】
次に、プロセッサ１１は、ＲＡＭ１２に蓄積されているＥＣＣ２符号化済みデータ全てに対してＥＣＣ１符号化の実行を完了したか否かを判定し（ステップＳ１０１１）、完了している場合（ステップＳ１０１１のＹＥＳ）、本動作を終了する。一方、完了していない場合（ステップＳ１０１１のＮＯ）、ステップＳ１００７へリターンし、次の１つ分のワードラインデータに対して以降の処理を実行する。
【０１５０】
このように、本実施形態に係る書込み動作では、ＥＣＣ２符号化が複数ページにまたがるため、ＥＣＣ２符号化に必要となる複数ページを一括で書込む書込み動作が実施される。そして、第９の実施形態でも説明したように、誤り抑制符号化を行った後にＥＣＣ符号化する必要があるため、本実施形態では、ＥＣＣ２符号化に必要となる複数ページ全てに対して先に誤り抑制符号化を実施することが必要となる。そして、誤り抑制符号化及びＥＣＣ２符号化が完了したひとまとまりのデータに対して、ページデータ毎にＥＣＣ１符号化が実行され、これにより得られたＥＣＣ１フレームが不揮発性メモリ２０に順次書き込まれる。
【０１５１】
つづいて、本実施形態に係る読出し動作について、図面を参照して詳細に説明する。図２８は、本実施形態に係る読出し動作の一例を示すフローチャートである。図２８に示すように、本実施形態に係る読出し動作では、図２３におけるステップＳ９２１〜Ｓ９２４と同様に、ホスト３０から受信した読出し要求に応じて、読出し要求で指定されたページからページデータが読み出され、この読み出されたページデータに対するＥＣＣ１復号が実行される（ステップＳ１０２１〜Ｓ１０２４）。そして、プロセッサ１１は、ページ内ＥＣＣ回路１５によるＥＣＣ１復号に成功したか否かを判定する（ステップＳ１０２５）。
【０１５２】
ＥＣＣ１復号に成功した場合（ステップＳ１０２５のＹＥＳ）、プロセッサ１１は、ステップＳ１０３０へ進む。一方、ＥＣＣ１復号に失敗した場合（ステップＳ１０２５のＮＯ）、プロセッサ１１は、読出し対象のページから読み出したページデータに対してＥＣＣ２復号を実行する際に必要となる全てのページデータを格納するページを選択し（ステップＳ１０２６）、選択した全てのページに対するデータの読出しをメモリＩ／Ｆ１８に指示する。これに対し、メモリＩ／Ｆ１８は、選択された全てのページからのデータの読出しを不揮発性メモリ２０における不図示のコマンド処理部へ指示する。これにより、不揮発性メモリ２０において、選択された全てのページからのデータの読出しが実行される（ステップＳ１０２７）。
【０１５３】
次に、プロセッサ１１は、選択された全てのページから読み出されたページデータに対するＥＣＣ２符号化をページ間ＥＣＣ回路２１５へ指示する。ページ間ＥＣＣ回路２１５は、プロセッサ１１からの指示に従い、入力された全てのページデータに対するＥＣＣ２復号を実行する（ステップＳ１０２８）。
【０１５４】
次に、プロセッサ１１は、ページ間ＥＣＣ回路２１５によるＥＣＣ２復号に成功したか否かを判定し（ステップＳ１０２９）、成功しなかった場合（ステップＳ１０２９のＮＯ）、ホストＩ／Ｆ１７を介してホスト３０にリードエラーを通知し（ステップＳ１０３２）、本動作を終了する。一方、ＥＣＣ２復号に成功した場合（ステップＳ１０２９のＹＥＳ）、プロセッサ１１は、ステップＳ１０３０へ進む。
【０１５５】
ステップＳ１０３０では、プロセッサ１１は、ページ間ＥＣＣ回路２１５によるＥＣＣ２復号によって誤り訂正された誤り訂正済みデータに対する誤り抑制復号の実行を信号処理回路１６へ指示する。これに対し、信号処理回路１６は、ＲＡＭ１２に格納されている誤り訂正済みデータに対して、上述の実施形態で説明した誤り抑制復号を実行する。なお、誤り抑制復号により復元されたユーザデータは、例えば、ＲＡＭ１２に格納される。
【０１５６】
その後、プロセッサ１１は、ＲＡＭ１２内に復元されたユーザデータをホストＩ／Ｆ１７を介してホスト３０へ転送し（ステップＳ１０３１）、本動作を終了する。
【０１５７】
このように、本実施形態に係る読出し処理では、ＥＣＣ１復号に失敗した場合にＥＣＣ２復号が実行されるが、その際にＥＣＣ２復号に必要なデータは複数ページにまたがるため、ＥＣＣ２復号に先立ち、それらのデータを全て読み出すことが必要である。そして、ＥＣＣ２復号に成功して誤り訂正がなされた場合、読出し対象のページデータに対する誤り抑制復号が実行される。
【０１５８】
以上のように、本実施形態によれば、より訂正能力の高い多次元の誤り訂正符号と誤り抑制符号とを組み合わせることで、より安定したデータ読出しを可能にするメモリシステムを実現することが可能となる。
【０１５９】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【０１６０】
（第１１の実施形態）
次に、第１１の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。上述した第１０の実施形態では、ＥＣＣ２符号化を実行する際、集めたｍ個のフレーム（ページデータ）のデータ部だけをＥＣＣ２符号化の対象としていた。ただし、復号処理において、ＥＣＣ１復号では訂正不可能であったが、その後のＥＣＣ２復号で訂正可能である場合が存在する。そのような場合、第１０の実施形態では、フラグ部がＥＣＣ２復号の対象外であるため、フラグ部にエラーが含まれていると、ＥＣＣ２復号でフラグ部のエラーを誤り訂正することができず、その結果、その後の誤り抑制復号が正常に実施できない可能性がある。そこで、第１１の実施形態では、フラグ部をＥＣＣ２符号化の対象とした場合について、例を挙げて説明する。
【０１６１】
ただし、フラグ部のデータ長（フラグ長ともいう）は、ページ毎に異なる可能性がある。異なるフラグ長のページが混在した状態でＥＣＣ２符号化を実行した場合、フラグ部に対するＥＣＣ２符号化においてデータが存在しないページが発生してしまう。そこで本実施形態では、このような事態の発生を避けるために、積符号を構成する際の収集対象とするページデータを、データ部のデータ長が同じであるという条件に加え、フラグ部のデータ長が同じであるという条件を満たすページデータとする。例えば、ＭＬＣの場合では、UPPERページのみ又はLOWERページのみのＥＣＣ１フレームを集めて積符号を構成する。
【０１６２】
図２９は、本実施形態に係る積符号の一例を示す図である。図２９に示すように、本実施形態に係る積符号では、ページデータ＃０〜＃ｍ−１間で、シンボル数がｎ個のデータ部のみならず、シンボル数がｋ個（ｋは１以上の整数）のフラグ部のデータ長も同じである。そのため、本実施形態では、データ部のみならずフラグ部も対象として、ＥＣＣ２符号化を実行することが可能である。その結果、ＥＣＣ２パリティページ＃０及び＃１には、＃０〜＃ｎ＋ｋ−１の計ｎ＋ｋ個のＥＣＣ２パリティで構成されたＥＣＣ２パリティ部が含まれることとなる。
【０１６３】
以上のように、本実施形態によれば、フラグデータもＥＣＣ２符号化の対象とすることで、フラグデータをＥＣＣ２パリティで保護することが可能となるため、より安定したデータ読出しを可能にするメモリシステムを実現することが可能となる。
【０１６４】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【０１６５】
（第１２の実施形態）
次に、第１２の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。上述した第１１の実施形態では、データ部だけでなくフラグ部のデータ長も同じページデータを収集して積符号を構成した。これに対し、第１２の実施形態では、データ長の短いフラグに対してダミーデータを付加することで擬似的にフラグ長を揃え、それにより、積符号を構成する際の収集対象とするページデータに課す条件を第１０の実施形態と同程度に緩和しつつ、ＥＣＣ２符号によりフラグ部も保護することを可能にする。
【０１６６】
図３０は、本実施形態に係る積符号の一例を示す図である。図３０に示すように、本実施形態に係る積符号では、ページデータ＃１及び＃ｍ−１のフラグ長が他のページデータにおける最長のフラグ長よりも１シンボル短く、ページデータ＃３のフラグ長が最長のフラグ長よりも２シンボル短い。そこで本実施形態では、ページデータ＃１及び＃ｍ−１のフラグ部に１シンボルのダミーデータを付加し、ページデータ＃３のフラグ部に２シンボルのダミーデータを付加することで、擬似的にフラグ長を揃える。なお、ダミーデータの内容は任意であるが、例えば全ビット“０”のシンボルなどとすることが可能である。その場合、ダミーデータの付加をゼロパディングともいう。
【０１６７】
以上のように、本実施形態によれば、ゼロパディングによりページ間で擬似的にフラグ長を揃えることが可能となるため、多次元の誤り訂正符号を構成するページデータの選択自由度を高まることが可能となる。
【０１６８】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【０１６９】
（第１３の実施形態）
次に、第１３の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。上述した第１２の実施形態では、データ長の短いフラグに対してダミーデータを付加することで擬似的にフラグ長を揃えていた。これに対し、第１３の実施形態では、フラグ長の長いフラグ部の一部のシンボル（フラグ）をフラグ長の短いフラグ部に再配分することで、擬似的にフラグ長を揃える場合について、例を挙げて説明する。
【０１７０】
図３１は、本実施形態に係る積符号の一例を示す図である。図３１に示すように、本実施形態に係る積符号では、ページデータ＃０及び＃２のフラグ長が平均のフラグ長よりも１シンボル長く、ページデータ＃１及び＃３のフラグ長が平均のフラグ長よりも１シンボル短い。そこで本実施形態では、平均よりもフラグ長が１シンボル長いページデータ＃０及び＃２の各フラグ部の１シンボルを、平均よりもフラグ長が１シンボル短いページデータ＃１及び＃３の各フラグ部に再配分することで、擬似的にフラグ長を揃える。
【０１７１】
以上のように、本実施形態によれば、フラグデータの再配分によりページ間で擬似的にフラグ長を揃えることが可能となるため、多次元の誤り訂正符号を構成するページデータの選択自由度を高まることが可能となる。
【０１７２】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【０１７３】
（第１４の実施形態）
次に、第１４の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。上述した第１３の実施形態では、フラグ長の長いフラグ部の一部のフラグをフラグ長の短いフラグ部に再配分することで、擬似的にフラグ長を揃えたが、この場合、フラグ部の実データ長によっては、ページ間で完全に均等となるようにフラグを再配分することができない可能性が存在する。そこで第１４の実施形態では、フラグを再配分した結果、未だフラグ長が足りていないページデータに対しては、ダミーデータを付加することで、擬似的にフラグ長を揃えることとする。
【０１７４】
図３２は、本実施形態に係る積符号の一例を示す図である。図３２に示すように、本実施形態に係る積符号では、ページデータ＃０及び＃２のフラグ長が他の平均的なフラグ長よりも１シンボル長く、ページデータ＃１及び＃ｍ−１のフラグ長が他の平均的なフラグ長よりも１シンボル短く、ページデータ＃３のフラグ長が他の平均的なフラグ長よりも１．５シンボル短い。
【０１７５】
そこで本実施形態では、他の平均的なフラグ長よりも１シンボル長いページデータ＃０及び＃２の各フラグ部の１シンボルを、他の平均的なフラグ長よりも１シンボル以上短いページデータ＃１及び＃３各フラグ部に再配分する。また、フラグが再配分されないページデータ＃ｍ−１のフラグ部、及び、フラグの再配分によってもフラグ長が不足しているページデータ＃３のフラグ部には、不足分のダミーデータを付加することで、擬似的にフラグ長を揃える。なお、ダミーデータは、例えば第１２の実施形態で例示したダミーデータと同様であってよい。
【０１７６】
以上のように、本実施形態によれば、フラグデータの再配分とゼロパディングとの組合せによりページ間で擬似的にフラグ長を揃えることが可能となるため、多次元の誤り訂正符号を構成するページデータの選択自由度を高まることが可能となる。
【０１７７】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【０１７８】
（第１５の実施形態）
次に、第１５の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。上述の第１０〜第１４の実施形態で例示したような、ページ内ＥＣＣを内符号、ページ間ＥＣＣを外符号とした積符号を用いる場合、ページ内ＥＣＣでの誤り訂正失敗時にはページ間ＥＣＣを使用した誤り訂正処理へ移行する。この際、ページ内ＥＣＣとページ間ＥＣＣとの間に誤り抑制符号化処理が挿入されていると、ページ内ＥＣＣの誤り訂正失敗時に誤り抑制復号でのエラー増幅が発生してしまう場合がある。これを、図３３及び図３４を用いて説明する。
【０１７９】
図３３は、ページ間方向の誤り訂正符号と誤り抑制符号とページ内方向の誤り訂正符号との一実装形態を示すブロック図である。図３４は、図３３に示す誤り抑制符号化器で誤り抑制符号化されたデータに発生したエラーが誤り抑制復号器で増幅される場合の一例を示す図である。なお、図３３において、ページ内ＥＣＣ符号化器９１５１及びページ内ＥＣＣ復号器９１５２は、図１に示したＥＣＣ符号化器９１５１及びＥＣＣ復号器９１５２と同様であってよい。また、その他の、ホストＩ／Ｆ９０１７、メモリＩ／Ｆ９０１８、不揮発性メモリ９０２０、誤り抑制符号化器９１６１及び誤り抑制復号器９１６２も、図１に示したそれらと同様であってよい。さらに、ページ間ＥＣＣ符号化器９２５１は、複数のページデータで構成された積符号に対してページ間方向にＥＣＣ符号化を実行し、ページ間ＥＣＣ復号器９２５２は、積符号に対してページ間方向にＥＣＣ復号を実行する。
【０１８０】
図３３に示す例では、ホスト３０からホストＩ／Ｆ１７を介して入力されたライトデータは、まず、ページ間ＥＣＣ符号化器９２５１に入力されてＥＣＣ２パリティが付加された後、誤り抑制符号化器９１６１に入力されて誤り抑制符号化される。そして、誤り抑制符号化されたデータは、ページ内ＥＣＣ符号化器９１５１に入力されてＥＣＣ１パリティが付加された後、メモリＩ／Ｆ９０１８を介して不揮発性メモリ９０２０に書き込まれる。
【０１８１】
また、メモリＩ／Ｆ９０１８により不揮発性メモリ９０２０から読み出されたリードデータは、まず、ページ内ＥＣＣ復号器９１５２に入力され、ページ内ＥＣＣ復号器９１５２においてページデータに対する誤り訂正がなされた後、誤り抑制復号器９１６２に入力されて誤り抑制復号される。そして、誤り抑制復号されたデータは、ページ間ＥＣＣ復号器９２５２に入力されてページ間方向に誤り訂正される。本実施形態においては、「ページ内ＥＣＣ復号器９１５２においてページデータに対する誤り訂正がなされる」ことを、「ページ内ＥＣＣ復号器９１５２によりページ内方向に誤り訂正される」とも呼ぶ。
【０１８２】
ここで、不揮発性メモリ９０２０から読み出したリードデータのエラーが誤り抑制復号により増幅される場合について、図３４の例を用いて説明する。図３４（ａ）は、誤り抑制符号化器９１６１へ入力されるデータ（ライトデータ）の一例を示し、図３４（ｂ）は、誤り抑制符号化器９１６１から出力された誤り抑制符号化済みのデータの一例を示し、図３４（ｃ）は、誤り抑制復号器９１６２へ入力されるデータ（リードデータ）の一例を示し、図３４（ｄ）は、誤り抑制復号器９１６２から出力された誤り抑制復号済みのデータの一例を示している。
【０１８３】
図３４（ａ）から図３４（ｂ）に示すように、誤り抑制符号化器９１６１では、各データクラムに対して必要に応じてデータ変換（図３４に示す例ではビットフリップ）が実行される。そして、誤り抑制符号化器９１６１は、データ変換されていないデータクラムに“０”のフラグビットを付加し、データ変換されたデータクラムに“１”のフラグビットを付加して、誤り抑制符号化済みのデータを出力する。図３４（ｂ）に示す例では、データ変換されていない先頭のデータクラム＃０には“０”のフラグビットが付され、データ変換された２番目のデータクラム＃１には“１”のフラグビットが付されている。このようにして誤り抑制符号化されたデータは、ページ内ＥＣＣ符号化器９１５１でＥＣＣ１符号化された後、メモリＩ／Ｆ９０１８により不揮発性メモリ９０２０に書き込まれる。
【０１８４】
その後、図３４（ｃ）に示すように、メモリＩ／Ｆ９０１８により不揮発性メモリ９０２０から読み出されたデータ（リードデータ）にフラグビットのエラーが発生し、フラグビットのエラーを含むリードデータ（ただし、ＥＣＣ１復号後）が誤り抑制復号器９１６２に入力された場合、誤り抑制復号器９１６２では、エラーであるフラグビットに基づいた誤り抑制復号が実行される。例えば図３４（ｃ）及び図３４（ｄ）に示す例では、先頭のデータクラム＃０がエラーの生じたフラグ“１”に基づいてビット変換（ビットフリップ）される。その結果、図３４（ｄ）に示すように、先頭のデータクラム＃０が付加されたフラグのエラーが、本来エラーが発生していなかったデータクラム＃０全体に増幅されてしまう。
【０１８５】
そこで本実施形態では、フラグに生じたエラーが誤り抑制復号によって増幅されてしまうことを低減することが可能なメモリシステムについて、例を挙げて説明する。
【０１８６】
図３５は、本実施形態に係る誤り抑制符号及び誤り訂正符号の一実装形態を示すブロック図である。図３５に示すように、本実施形態に係る誤り抑制符号及び誤り訂正符号の一実装形態は、ホストＩ／Ｆ１７とメモリＩ／Ｆ１８との間に、符号化系列として、ページ間ＥＣＣ符号化器２１５１と、誤り抑制符号化器１６１０と、ページ内ＥＣＣ符号化器１５１０とが配置され、復号系列として、ページ内ＥＣＣ復号器１５２０と、誤り抑制復号器１６２０と、ページ間ＥＣＣ復号器２１５２とが配置された構成を備える。この構成において、ページ間ＥＣＣ符号化器２１５１及びページ間ＥＣＣ復号器２１５２は、例えば図２５におけるページ間ＥＣＣ回路２１５に相当し、誤り抑制符号化器１６１０及び誤り抑制復号器１６２０は、例えば図２５における信号処理回路１６に相当し、ページ内ＥＣＣ符号化器１５１０及びページ内ＥＣＣ復号器１５２０は、例えば図２５におけるページ内ＥＣＣ回路１５に相当する。
【０１８７】
図３５において、ページ間ＥＣＣ符号化器２１５１によるＥＣＣ２符号化、ページ内ＥＣＣ符号化器１５１０によるＥＣＣ１符号化、ページ内ＥＣＣ復号器１５２０によるＥＣＣ１復号、及び、ページ間ＥＣＣ復号器２１５２によるＥＣＣ２復号は、上述したページ間ＥＣＣ回路２１５によるＥＣＣ２符号化及びＥＣＣ２復号、並びに、ページ内ＥＣＣ回路１５によるＥＣＣ１符号化及びＥＣＣ１復号と同様であってよい。
【０１８８】
本実施形態に係る誤り抑制符号化器１６１０は、フラグビット決定部１６１１と、ビット反転部１６１２と、ビットスワップ部１６１３と、セレクタ１６１４とを備える。この構成において、誤り抑制符号化器１６１０には、誤り抑制符号化の単位であるデータクラム単位でデータが入力される。誤り抑制符号化器１６１０に入力されたデータクラムは、フラグビット決定部１６１１と、ビット反転部１６１２と、セレクタ１６１４とにそれぞれ入力される。
【０１８９】
ビット反転部１６１２は、入力されたデータクラムをビット反転（ビットフリップ）する。ビット反転部１６１２でビットフリップされたデータクラムは、ビットスワップ部１６１３に入力される。ビットスワップ部１６１３は、入力されたデータクラムに対し、例えば、隣接する２ビット単位でビットを入れ替えるビットスワップ処理を行う。ビットスワップ部１６１３によりビットスワップされたデータクラムは、セレクタ１６１４に入力される。
【０１９０】
フラグビット決定部１６１１は、入力されたデータクラムにおけるビット‘０’の数とビット‘１’の数とをカウントし、このカウント値に基づいてデータクラムに付加するフラグビットの値を決定する。また、フラグビット決定部１６１１は、決定したフラグビットをセレクタ１６１４の制御端子に入力する。したがって、セレクタ１６１４は、フラグビット決定部１６１１から入力されたフラグビットの値に基づいて、ビットフリップ及びビットスワップされたデータクラムと、ビットフリップ及びビットスワップされていないデータクラムとのいずれかを選択的に出力する。例えば、フラグビット決定部１６１１は、決定したフラグビットが“１”の場合、セレクタ１６１４にビットフリップ及びビットスワップされたデータクラムを出力させる。一方、決定したフラグビットが“０”の場合、フラグビット決定部１６１１は、セレクタ１６１４にビットフリップ及びビットスワップされていないデータクラムを出力させる。
【０１９１】
また、本実施形態に係る誤り抑制復号器１６２０は、ビットスワップ部１６２１と、ビット反転部１６２２と、セレクタ１６２３とを備える。この構成において、誤り抑制復号器１６２０には、誤り抑制復号の単位であるデータクラム単位でデータが入力される。誤り抑制復号１６２０に入力されたデータクラムは、ビットスワップ部１６２１と、セレクタ１６１４とにそれぞれ入力される。
【０１９２】
ビットスワップ部１６２１は、誤り抑制符号化器１６１０におけるビットスワップ部１６１３による隣接２ビット単位のビットスワップを解除するように、隣接２ビット単位でビットを入れ替えるビットスワップ処理を実行し、ビットスワップ後のデータクラムをビット反転部１６２２に入力する。ビット反転部１６２２は、ビットスワップが解除されたデータクラムに対し、さらにビットフリップを解除するように、ビットフリップ処理を実行する。これにより、セレクタ１６２３には、ビットスワップ部１６２１及びビット反転部１６２２を経由していないデータクラムに加え、ビットスワップ部１６２１及びビット反転部１６２２を経由することでビットフリップ及びビットスワップが解除されたデータクラムも入力される。
【０１９３】
セレクタ１６２３の制御端子には、各データクラムに付加されているフラグビットも入力される。セレクタ１６２３は、フラグビットの値に基づいて、ビットスワップ部１６２１及びビット反転部１６２２を経由していないデータクラムと、ビットスワップ部１６２１及びビット反転部１６２２を経由することでビットフリップ及びビットスワップが解除されたデータクラムとのいずれかを選択的に出力する。例えば、入力されたフラグビットが“１”の場合、セレクタ１６２３は、ビットスワップ部１６２１及びビット反転部１６２２を経由することでビットフリップ及びビットスワップが解除されたデータクラムを出力する。一方、入力されたフラグビットが“０”の場合、セレクタ１６２３は、ビットスワップ部１６２１及びビット反転部１６２２を経由していないデータクラムを出力する。
【０１９４】
次に、本実施形態に係る誤り抑制符号化／復号の流れ及びその効果について、図面を用いて詳細に説明する。図３６は、本実施形態に係る誤り抑制符号化から誤り抑制復号までの流れにおいてフラグビットにエラーが発生した場合の例を示す図である。なお、図３６には、８ビット単位で誤り抑制符号化を行う場合を例示する。また、この８ビットのデータクラムのビット配列を｛ｂ０，ｂ１，ｂ２，ｂ３，ｂ４，ｂ５，ｂ６，ｂ７｝とする。また、図面及び以下の説明において、“〜”はビットフリップされていることを示している。
【０１９５】
図３６（Ａ）〜図３６（Ｃ）は、誤り抑制符号化器１６１０による誤り抑制符号化によってフラグビット＝０がデータクラムに付加された場合の流れを示している。図３６（Ａ）に示すように、フラグビット＝０が付加されたデータクラムに対しては、ビットフリップ及びビットスワップが実施されていない。そのため、データクラムのビット配列は、元々のビット配列｛ｂ０，ｂ１，ｂ２，ｂ３，ｂ４，ｂ５，ｂ６，ｂ７｝にフラグビット＝０が付加されたものとなる。そこで、図３６（Ｂ）に示すように、フラグビットにエラーが発生し、これにより、フラグビット＝１に変化した場合、誤り抑制復号器１６２０では、エラーであるフラグビット＝１に基づいて、ビットスワップ及びビットフリップが実行される。その結果、図３６（Ｃ）に示すように、誤り抑制復号器１６２０から出力されるデータクラムのビット配列が｛〜ｂ１，〜ｂ０，〜ｂ３，〜ｂ２，〜ｂ５，〜ｂ４，〜ｂ７，〜ｂ６｝となり、元々のビット配列｛ｂ０，ｂ１，ｂ２，ｂ３，ｂ４，ｂ５，ｂ６，ｂ７｝とは大きく異なる配列となる。
【０１９６】
一方、図３６（ａ）〜図３６（ｃ）は、誤り抑制符号化器１６１０による誤り抑制符号化によってフラグビット＝１がデータクラムに付加された場合の流れを示している。図３６（ａ）に示すように、フラグビット＝１が付加されたデータクラムに対しては、ビットフリップ及びビットスワップが順に実施される。そのため、データクラムのビット配列は、ビットフリップ及びビットスワップ後のビット配列｛〜ｂ１，〜ｂ０，〜ｂ３，〜ｂ２，〜ｂ５，〜ｂ４，〜ｂ７，〜ｂ６｝にフラグビット＝１が付加されたものとなる。そこで、図３６（ｂ）に示すように、フラグビットにエラーが発生し、これにより、フラグビット＝０に変化した場合、誤り抑制復号器１６２０では、エラーであるフラグビット＝０に基づき、入力データに対するビットスワップ及びビットフリップを実行しない。その結果、図３６（ｃ）に示すように、誤り抑制復号器１６２０から出力されるデータクラムのビット配列が｛〜ｂ１，〜ｂ０，〜ｂ３，〜ｂ２，〜ｂ５，〜ｂ４，〜ｂ７，〜ｂ６｝となり、元々のビット配列｛ｂ０，ｂ１，ｂ２，ｂ３，ｂ４，ｂ５，ｂ６，ｂ７｝とは大きく異なる配列となる。
【０１９７】
以上のように、不揮発性メモリ２０への書込みから誤り抑制復号器１６２０への入力の過程でフラグビットにエラーが発生した場合、誤り抑制復号器１６２０から出力されるデータクラムのビット配列が、本来出力されるべき元々のビット配列｛ｂ０，ｂ１，ｂ２，ｂ３，ｂ４，ｂ５，ｂ６，ｂ７｝から、エラーフラグに基づいてビットフリップ及びビットスワップが施されたビット配列｛〜ｂ１，〜ｂ０，〜ｂ３，〜ｂ２，〜ｂ５，〜ｂ４，〜ｂ７，〜ｂ６｝に変化する。したがって、フラグビットのエラーによるエラー増幅の度合いは、本来あるべきビット配列｛ｂ０，ｂ１，ｂ２，ｂ３，ｂ４，ｂ５，ｂ６，ｂ７｝における各ビット値と、エラーフラグに基づいてビットフリップ及びビットスワップが施されたビット配列｛〜ｂ１，〜ｂ０，〜ｂ３，〜ｂ２，〜ｂ５，〜ｂ４，〜ｂ７，〜ｂ６｝における各ビット値との間の不一致のビットの数によって表すことができる。なお、不一致ビット数Ｋは、以下の式（１）より求めることができる。なお、式（１）において、“＾”は、ビット間ＸＯＲ（排他的論理和）を示している。
【数１】
2019169216.tif 000003
【０１９８】
式（１）から明らかなように、誤り抑制符号化器１６１０の入力と誤り抑制復号器１６２０の出力とで、（ｂｘ＾〜ｂｘ＋１）が“１”、すなわち、あるビットｘ及び（ｘ＋１）が不一致となる確率は、隣接ビット間の相関が無いと仮定すれば、以下の表１に示すように、１／２の確率となる。
【表１】
2019169216.tif 000004
【０１９９】
これに対し、隣接２ビット単位でのビットスワップを行なわない構成（例えば図３３参照）においてフラグビットにエラーが発生した場合、誤り抑制符号化器９１６１の入力と誤り抑制復号器９１６２の出力とでビットが不一致となる確率は１である。したがって、本実施形態のように、隣接２ビット単位でビットスワップを行なう構成とすることで、フラグエラー時のエラー増幅を１／２に低減することができる。また、ビットスワップ処理によって“０”ビット／“１”ビットの出現頻度が変化しないため、誤り抑制の性能を損なうことも回避できる。
【０２００】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【０２０１】
（第１６の実施形態）
次に、第１６の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。上述の第１５の実施形態では、フラグビット＝１である場合は隣接２ビット単位でビットスワップする構成について、例を挙げて説明した。これに対し、第１６の実施形態では、隣接４ビット単位で、且つ、誤り抑制符号化器への入力に応じて適応的にビットスワップを実行する場合について、例を挙げて説明する。
【０２０２】
図３７は、本実施形態に係る誤り抑制符号及び誤り訂正符号の一実装形態を示すブロック図である。図３７に示すように、本実施形態に係る誤り抑制符号及び誤り訂正符号の一実装形態は、図３５に示した誤り抑制符号及び誤り訂正符号の一実装形態と同様の構成において、誤り抑制符号化器１６１０及び誤り抑制復号器１６２０が、誤り抑制符号化器１６３０及び誤り抑制復号器１６４０に置き換えられている。
【０２０３】
誤り抑制符号化器１６３０は、図３５に示す誤り抑制符号化器１６１０と同様の構成において、ビット反転部１６１２及びビットスワップ部１６１３が、適応的データ変換部１６３１に置き換えられている。同様に、誤り抑制復号器１６４０は、図３５に示す誤り抑制復号器１６２０と同様の構成において、ビットスワップ部１６２１及びビット反転部１６２２が、適応的データ変換部１６４１に置き換えられている。
【０２０４】
適応的データ変換部１６３１は、例えば、ページ間ＥＣＣ符号化器２１５１から入力されたデータクラムに対し、以下に示す表２に従って、隣接４ビット単位で適応的にビットスワップを実行する。具体的には、適応的データ変換部１６３１は、誤り抑制符号化器入力であるデータクラムをビット反転（ビットフリップ）し、そしてビット反転後のデータクラムを、表２に従って隣接４ビット単位｛ｂｘ，ｂｘ＋１，ｂｘ＋２，ｂｘ＋３｝でビットスワップする。
【表２】
2019169216.tif 000005
【０２０５】
ただし、本実施形態では、“０”ビット同士の組合せ及び“１”ビット同士の組合せについては、ビットスワップによる効果を得られないため、表２において斜線のハッチングにて示されている“０”ビットと“１”ビットとの組合せに対して、適応的にビットスワップが実行されればよい。
【０２０６】
また、誤り抑制復号器１６４０における適応的データ変換部１６４１も同様に、ページ内ＥＣＣ復号器１５２０から入力されたＥＣＣ１フレームに対し、ビット反転（ビットフリップ）と、表２に従った隣接４ビット単位のビットスワップとを順次実行する。
【０２０７】
本実施形態では、フラグビットにエラーが発生した場合の誤り抑制符号化器１６３０への入力と誤り抑制復号器１６４０からの出力とが不一致となるビット不一致確率は、以下の表３に示すように、０．３７５である。したがって、本実施形態のように、隣接４ビット単位で表２に従ってビットスワップを行なう構成とすることで、フラグエラー時のエラー増幅を０．３７５に低減することができる。また、ビットスワップ処理によって“０”ビット／“１”ビットの出現頻度が変化しないため、誤り抑制の性能を損なうことも回避できる。
【表３】
2019169216.tif 000006
【０２０８】
ところで、上述した表２を用いたビットスワップ処理は、以下の表４に示すように、例えば、次の４つの規則に基づいた適応的ビット反転処理と見做すことができる。
・第１の規則：誤り抑制符号化器入力の隣接４ビットで“０”ビットの数と“１”ビットの数とが等しければ（２つずつ）、その隣接４ビットはビット反転しない。
・第２の規則：誤り抑制符号化器入力の隣接４ビットが全て“０”ビット又は全て“１”ビットであれば、全ビットを反転する。
・第３の規則：誤り抑制符号化器入力の隣接４ビットで“０”ビットの数が１、“１”ビットの数が３であれば、４ビット中の下位２ビット又は上位２ビットに存在する“１１”を“００”にビット反転する。
・第４の規則：誤り抑制符号化器入力の隣接４ビットで“０”ビットの数が３、“１”ビットの数が１であれば、４ビット中の下位２ビット又は上位２ビットに存在する“００”を“１１”にビット反転する。
【表４】
2019169216.tif 000007
【０２０９】
以上のような適応的ビット反転は、以下に例示する特徴を備える。すなわち、誤り抑制符号化器入力の隣接４ビット中、ビット反転前後における“０”ビットの数(又は“１”ビットの数)の変化量と一致するビット数が反転される。また、誤り抑制符号化器入力の隣接４ビット中、“０”ビットの数が多ければ“０”ビットから“１”ビットへの反転、“１”ビットの数が多ければ“１”ビットから“０”ビットへのビット反転が行われる。即ち、ビット反転によって“０”ビット／“１”ビットの数が変化する部分についてのみビット反転が行われるため、誤り抑制性能を保存しつつ、ビット反転が行われずに“０”ビット／“１”ビットの数が変化しない部分のエラー増幅を低減することが可能となる。
【０２１０】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【０２１１】
（第１７の実施形態）
次に、第１７の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。第１７の実施形態では、第１６の実施形態で例示した適応的ビット反転を、隣接２Ｎ（Ｎは正の整数）ビットへ拡張した場合を例に挙げて説明する。
【０２１２】
第１７の実施形態では、以下の式（２）に示す関数ｆ（ｘ）（ｘ＝｛ｂ０，ｂ１，…，ｂＭ−１｝）（Ｍは２以上の整数）に従い、再帰的なビット反転処理を行う。復号についても同様に、適応的ビット反転後のデータをｙとした時、適用前のデータはｆ（ｙ）で得られる。なお、式（２）において、ＭＳＢは最上位ビットであり、ＬＳＢは最下位ビットである。
【数２】
2019169216.tif 000008
【０２１３】
ここで、本実施形態に係る適応的ビット反転を隣接２３＝８ビット（Ｎ＝３）に拡張した結果を、図３８を用いて説明する。図３８は、ｘ＝｛０，０，１，０，０，１，０，１｝に対して適応的ビット反転を実行する場合の例であり、図３８（ａ）は誤り抑制符号化時における適応的ビット反転処理を示し、図３８（ｂ）は誤り抑制復号時における適応的ビット反転処理を示している。
【０２１４】
まず、図３８（ａ）に示すように、誤り抑制符号化時における適応的ビット反転処理では、ｘ中の“０”ビットの数が５、“１”ビットの数が３であることから、ｘをＭＳＢ側４ビットのｘａ＝｛０，０，１，０｝とＬＳＢ側４ビットのｘｂ＝｛０，１，０，１｝とに分割する。図面中右側ルートのｘｂは、“０”ビットの数と“１”ビットの数とが共に２であるから、ｆ（ｘｂ）＝ｘｂ＝｛０，１，０，１｝となる。一方、図面中左側ルートのｘａは、“０”ビットの数＝３、“１”ビットの数＝１であるので、ｘａをＭＳＢ側２ビットのｘａａ＝｛０，０｝とＬＳＢ側２ビットのｘａｂ＝｛１，０｝とに分割する。ｘａａは全ビットが“０”であるので、ｆ（ｘａａ）＝〜ｘａａ＝｛１，１｝となる。一方、ｆ（ｘａｂ）は“０”ビットの数と“１”ビットの数とが共に１であるから、ｆ（ｘａｂ）＝ｘａｂ＝｛１，０｝となる。その結果、ｆ（ｘ）＝｛１，１，１，０，０，１，０，１｝となる。
【０２１５】
また、ｆ（ｘ）＝ｙからｘへ戻す場合も、同様に関数ｆを適用すればよい。すなわち、図３８（ｂ）に示すように、誤り抑制復号時における適応的ビット反転処理では、ｙ（＝ｆ（ｘ））中の“０”ビットの数が３、“１”ビットの数が５であることから、ｙをＭＳＢ側４ビットとＬＳＢ側４ビットとのｙａ＝｛１，１，１，０｝とＬＳＢ側４ビットのｙｂ＝｛０，１，０，１｝とに分割する。図面中右側ルートのｙｂは、“０”ビットの数と“１”ビットの数とが共に２であるから、ｆ（ｙｂ）＝ｙｂ＝｛０，１，０，１｝となる。一方、図面中左側ルートのｙａは、“１”ビットの数＝３、“０”ビットの数＝１であるので、ｙａをＭＳＢ側２ビットのｙａａ＝｛１，１｝とＬＳＢ側２ビットのｙａｂ＝｛１，０｝とに分割する。ｙａａは全ビットが“１”であるので、ｆ（ｙａａ）＝〜ｙａａ＝｛０，０｝となる。一方、ｆ（ｙａｂ）は“０”ビットの数と“１”ビットの数とが共に１であるから、ｆ（ｙａｂ）＝ｙａｂ＝｛１，０｝となる。その結果、ｆ（ｙ）＝ｘ＝｛０，０，１，０，０，１，０，１｝となる。
【０２１６】
ここで、ｘとｆ（ｘ）とを比較すると、適応的ビット反転処理の結果、ＬＳＢ側の６ビットについては適応的ビット反転後もビット反転されずに元のビットパターンが維持され、ＭＳＢ側の２ビットについてのみビット反転が行われている。そのため、例えば、誤り抑制符号化データにおいてフラグビットにエラーが発生していた場合、誤り抑制復号データはｘではなくｙ＝ｆ（ｘ）へ誤ることになるが、このとき、ＬＳＢ側の６ビットについてはｘのビットパターンが維持されている。そのため、ＬＳＢ側の６ビットについては誤りが発生せず、ＭＳＢ側の２ビットについてのみ誤りが発生することとなる。すなわち、本実施形態によれば、フラグビットに発生したエラーがデータクラム全体に増幅されることを回避することが可能となる。
【０２１７】
以上のような本実施形態に係る適用的ビット反転を全８ビットデータに対して適用した場合、フラグビットにエラーが発生した際の誤り抑制符号化器１６３０への入力と誤り抑制復号器１６４０からの出力とが不一致となるビット不一致確率は、０．３０４となる。したがって、本実施形態のような適用的ビット反転を採用することで、フラグエラー時のエラー増幅を０．３０４に低減することができる。
【０２１８】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【０２１９】
なお、上述の実施形態では、多値メモリセルに対するデータコーディングの例として、４値、８値及び１６値のメモリセルそれぞれについて１種類ずつのデータコーディングの例を示したが、これらのデータコーディングに限定されず、他の種々のデータコーディングを適用することが可能である。
【０２２０】
また、上述の実施形態では、多値の状態数として、４値、８値及び１６値を例示したが、これらに限定されず、それ以外の状態数とすることも可能である。
【０２２１】
さらに、上述の実施形態では、不揮発性メモリ２０の例として、閾値電圧に従ってメモリセルのデータ状態を決定するＮＡＮＤメモリを挙げたが、これに限定されず、例えば抵抗値でメモリセルのデータ状態を決めるＲｅＲＡＭなどのような他の種類の不揮発性メモリを用いた場合でも、上述の実施形態を適用することが可能である。
【０２２２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０２２３】
１…メモリシステム、１０…メモリコントローラ、１１…プロセッサ、１２…ＲＡＭ、１３…ＲＯＭ、１４…ランダマイザ、１５…ＥＣＣ回路（ページ内ＥＣＣ回路）、１６…信号処理回路、１７…ホストＩ／Ｆ、１８…メモリＩ／Ｆ、１９…内部バス、２０…不揮発性メモリ、３０…ホスト、１２１…デバイス特性情報、１２２…処理対象ページ情報、１５１…ＥＣＣ符号化器、１５２…ＥＣＣ復号器、１５３…ＥＣＣ符号化率決定部、１６１，１６１０，１６３０…誤り抑制符号化器、１６２，１６２０，１６４０…誤り抑制復号器、１６３…誤り抑制符号化率決定部、２１５…ページ間ＥＣＣ回路、１５１０…ページ内ＥＣＣ符号化器、１５２０…ページ内ＥＣＣ復号器、１６１１…フラグビット決定部、１６１２，１６２２…ビット反転部、１６１３，１６２１…ビットスワップ部、１６１４，１６２３…セレクタ、１６３１，１６４１…適応的データ変換部、２１５１…ページ間ＥＣＣ符号化器、２１５２…ページ間ＥＣＣ復号器。
【図１】
2019169216.tif 000010
【図２】
2019169216.tif 000011
【図３】
2019169216.tif 000012
【図４】
2019169216.tif 000013
【図５】
2019169216.tif 000014
【図６】
2019169216.tif 000015
【図７】
2019169216.tif 000016
【図８】
2019169216.tif 000017
【図９】
2019169216.tif 000018
【図１０】
2019169216.tif 000019
【図１１】
2019169216.tif 000020
【図１２】
2019169216.tif 000021
【図１３】
2019169216.tif 000022
【図１４】
2019169216.tif 000023
【図１５】
2019169216.tif 000024
【図１６】
2019169216.tif 000025
【図１７】
2019169216.tif 000026
【図１８】
2019169216.tif 000027
【図１９】
2019169216.tif 000028
【図２０】
2019169216.tif 000029
【図２１】
2019169216.tif 000030
【図２２】
2019169216.tif 000031
【図２３】
2019169216.tif 000032
【図２４】
2019169216.tif 000033
【図２５】
2019169216.tif 000034
【図２６】
2019169216.tif 000035
【図２７】
2019169216.tif 000036
【図２８】
2019169216.tif 000037
【図２９】
2019169216.tif 000038
【図３０】
2019169216.tif 000039
【図３１】
2019169216.tif 000040
【図３２】
2019169216.tif 000041
【図３３】
2019169216.tif 000042
【図３４】
2019169216.tif 000043
【図３５】
2019169216.tif 000044
【図３６】
2019169216.tif 000045
【図３７】
2019169216.tif 000046
【図３８】
2019169216.tif 000047