(57)【特許請求の範囲】
【請求項１】
ｎレベル（ｎは、３以上の自然数）のデータをページ単位で記憶する不揮発性メモリのコントローラであって、前記コントローラは、
前記ページのデータ長よりも短い第１データ長を有する第１データ列から、前記第１データ列よりもデータ長が短い第２データ列を抽出する抽出部と、
前記第２データ列に含まれる隣接する２つのデータに対応する前記不揮発性メモリの閾値電圧の差が第１レベル差である場合、前記第２データ列を、前記第２データ列より長く前記第１レベル差より小さな第２レベル差を有する第３データ列に変換する変換部と、
前記第３データ列に付加するエラー訂正符号の割合を制御する制御部と、
前記制御部による制御に基づき、エラー訂正符号を生成するエラー訂正符号エンコーダ部と、を具備する。
【請求項２】
前記変換部は、前記第２データ列を前記第３データ列に変換するための変換情報を生成し、
前記制御部は、前記第３データ列に付加する前記変換情報の割合を更に制御する
請求項１に記載のコントローラ。
【請求項３】
前記制御部は、前記不揮発性メモリのアクセス回数に基づいて、前記第３データ列に付加する前記エラー訂正符号および前記変換情報の割合を制御する
請求項２に記載のコントローラ。
【請求項４】
前記不揮発性メモリのアクセス回数と、付加されるエラー訂正符号と、が対応して示されるテーブルを更に具備する
請求項１乃至３のいずれかに記載のコントローラ。
【請求項５】
前記制御部は、前記テーブルを参照し、フィードバックされるアクセス回数が前記テーブルに示されるアクセス回数の閾値を超える場合、前記ページに付加する前記エラー訂正符号および前記変換情報の割合を変更する
請求項４に記載のコントローラ。
【請求項６】
前記アクセス回数は、ページの書き込み回数、ページの読み出し回数、および消去回数のいずれか１つを含む
請求項３乃至５のいずれかに記載のコントローラ。
【請求項７】
前記制御部は、前記第３データ列が配置される領域以外の領域である前記ページの冗長領域において、前記エラー訂正符号および前記変換情報の割合を制御する
請求項２乃至６のいずれかに記載のコントローラ。
【請求項８】
前記制御部は、外部からの要求に基づき、前記エラー訂正符号および前記変換情報の割合を制御する
請求項２乃至７のいずれかに記載のコントローラ。
【請求項９】
前記制御部の制御に基づき、前記エラー訂正符号が付加される領域の位置を前記ページ内で移動させる移動部を更に具備する
請求項１乃至８のいずれかに記載のコントローラ。
【請求項１０】
ｎレベル（ｎは、３以上の自然数）のデータをページ単位で記憶する不揮発性メモリの制御方法であって、
前記ページのデータ長よりも短い第１データ長を有する第１データ列から、前記第１データ列よりもデータ長が短い第２データ列を抽出し、
前記第２データ列に含まれる隣接する２つのデータに対応する前記不揮発性メモリの閾値電圧の差が第１レベル差である場合、前記第２データ列を、前記第２データ列より長く前記第１レベル差より小さな第２レベル差を有する第３データ列に変換し、
前記第３データ列に付加するエラー訂正符号の割合を制御し、
前記制御に基づき、エラー訂正符号を生成する。
【請求項１１】
不揮発性メモリにページ単位でデータを記憶するコントローラであって、前記コントローラは、
前記ページのデータ長よりも短い第１データ列から、前記第１データ列よりも短い第２データ列を抽出し、
前記第２データ列に含まれる２つのデータに対応する前記不揮発性メモリの閾値電圧の差を参照し、前記第２データ列を、前記第２データ列より長い第３データ列に変換し、
前記第３データ列に付加するエラー訂正符号の割合を制御する。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、コントローラおよび制御方法に関する。
【背景技術】
【０００２】
不揮発性半導体メモリとしてのＮＡＮＤ型フラッシュメモリは、１つのメモリセルに複数の閾値電圧を用いて例えばマルチレベルのデータを記憶することができる。メモリセルに高い閾値電圧が繰り返し書き込まれると、メモリセルのトンネル酸化膜が劣化し、メモリセルの寿命が短くなる。また、ワード線方向、又はビット線方向に隣接して配置された複数のメモリセルの閾値電圧の差が大きい場合、低い閾値電圧を有するメモリセルの閾値電圧が変化し、例えばプログラムディスターブが生じる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第８７９９５５９号明細書  Ｂ２
【発明の概要】
【発明が解決しようとする課題】
【０００４】
不揮発性メモリの長寿命化に有利なコントローラおよび制御方法を提供する。
【課題を解決するための手段】
【０００５】
実施形態によれば、ｎレベル（ｎは、３以上の自然数）のデータをページ単位で記憶する不揮発性メモリのコントローラであって、前記コントローラは、前記ページのデータ長よりも短い第１データ長を有する第１データ列から、前記第１データ列よりもデータ長が短い第２データ列を抽出する抽出部と、前記第２データ列に含まれる隣接する２つのデータに対応する前記不揮発性メモリの閾値電圧の差が第１レベル差である場合、前記第２データ列を、前記第２データ列より長く前記第１レベル差より小さな第２レベル差を有する第３データ列に変換する変換部と、前記第３データ列に付加するエラー訂正符号の割合を制御する制御部と、前記制御部による制御に基づき、エラー訂正符号を生成するエラー訂正符号エンコーダ部と、を具備する。
【図面の簡単な説明】
【０００６】
【図１】第１実施形態に係るコントローラの一例を示すものであり、データの書き込み系を概略的に示す構成図。
【図２】第１実施形態に適用されるページの一例を概略的に示す図。
【図３】第１実施形態に適用されるＮＡＮＤ型フラッシュメモリの一例を概略的に示す図。
【図４】ＮＡＮＤ型フラッシュメモリの閾値電圧の一例を示す図。
【図５】ＮＡＮＤ型フラッシュメモリのプログラムディスターブの一例を示す図。
【図６】図１に示すエンコーダの概略的な動作を示す図。
【図７】エンコーダの一例を概略的に示す構成図。
【図８】エンコーダの動作を概略的に示すフローチャート。
【図９Ａ】入力データの一例を示す図。
【図９Ｂ】エンコーダの動作を示す図。
【図９Ｃ】コードブックの一例を示す図。
【図１０】図１に示すＥＣＣ移動部の動作を概略的に示す図。
【図１１】ＥＣＣ移動部の動作を概略的に示すフローチャート。
【図１２】第１実施形態に係るコントローラの一例を示すものであり、データの読み出し系を概略的に示す構成図。
【図１３】図１２の動作を概略的に示すフローチャート。
【図１４】第１実施形態に係るコントローラが適用されるＳＳＤの一例を示す構成図。
【図１５】第２実施形態に係るコントローラの一例を示すものであり、データの書き込み系を概略的に示す構成図。
【図１６】図１５の第３テーブルの一例を示す図。
【図１７】第２実施形態に係るＥＣＣの比率の変換処理を示すフローチャート。
【図１８】第２実施形態に係るページ構成の一例を示す図。
【図１９】第３実施形態に係るＥＣＣの比率の変換処理を示すフローチャート。
【図２０】第３実施形態に係るページ構成の一例を示す図。
【図２１】変形例１に係るコントローラの一例を示すものであり、データの書き込み系を概略的に示す構成図。
【発明を実施するための形態】
【０００７】
以下、図面を参照して、発明の実施形態について説明する。この説明においては、全図にわたり共通の部分には共通の参照符号を付す。
【０００８】
なお、以下の説明において、実質的に同一の機能及び要素については、同一符号を付し、必要に応じて説明を行う。また、本明細書では、いくつかの要素に複数の表現の例を付している。これら表現の例はあくまで例示であり、上記要素が他の表現で表現されることを否定するものではない。また、複数の表現が付されていない要素についても、別の表現で表現されてもよい。
【０００９】
（第１実施形態）
まず、以下の図面を参照して、第１実施形態について説明する。図面において、同一部分には同一符号を付している。
【００１０】
図１は、第１実施形態に係るＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリと称す）１４を制御するコントローラ１０の一例を概略的に示している。図１は、データの書き込み系のみを示している。コントローラ１０は、エンコーダ１１、error correction code(ＥＣＣ)エンコーダ１２、及びＥＣＣ移動部１３を含んでいる。
【００１１】
エンコーダ１１は、ＮＡＮＤメモリ１４の耐久性、及びプログラムディスターブを改善するため、入力された書き込みデータＤｗの変換処理を行う。ＥＣＣエンコーダ１２は、エンコーダ１１から供給されたデータにＥＣＣを付加する。なお、一般にＥＣＣとはエラー訂正のための符号化方式そのものを指すが、本実施形態ではエラー訂正のために付加する冗長データをＥＣＣと呼ぶ。ＥＣＣ移動部１３は、データに付加されたＥＣＣの位置をページ内で移動させ、書き込み毎にＥＣＣがＮＡＮＤメモリ１４上で異なる位置に記録されるよう平滑化を行なう。
【００１２】
ＮＡＮＤメモリ１４は、例えばマルチレベルメモリであり、２ビット以上のデータにより複数の閾値電圧のうちの１つがメモリセルに記憶される。ＮＡＮＤメモリ１４は、図示せぬ複数のブロックを含み、各ブロックは、複数のページを含む。第１実施形態において、ブロックは、データの消去単位である。ページは、データの書き込み単位であり、書き込みデータ及びＥＣＣを含む。
【００１３】
図２は、ページの一例を示している。図２に示すページは、書き込みデータＤｗ等が配置されるデータ領域ＤＡと、コードブックおよびＥＣＣが配置される冗長領域ＲＡとにより構成される。ページ全体の長さ、及びページ内のデータの長さ（データサイズ、又はビット長）は一定である。しかし、後述するように、ページ内のデータ長、及びＥＣＣ領域のデータ長を管理することにより、データ長、及びＥＣＣ領域のデータ長を可変とすることも可能である。なお、図２に示すページ構成は一例である。例えば、データ領域ＤＡに、コードブックを含んでもよい。また、ページの先頭に、コマンド等を配置するヘッダ領域等を設けてもよい。
【００１４】
図３は、ＮＡＮＤメモリ１４の構成の一例を概略的に示している。図３に示すように、ＮＡＮＤメモリ１４は、管理領域１４ａとデータ領域１４ｂを有している。
【００１５】
管理領域１４ａとデータ領域１４ｂは、それぞれ消去単位としての複数のブロックを有している。管理領域１４ａは、ＮＡＮＤメモリ１４の各種管理データＣＤ１を記録する。データ領域１４ｂは、例えば音楽データ等のユーザデータＵＤを記録する。
【００１６】
管理領域１４ａは、例えば第１テーブルＴａと、第２テーブルＴｂを含んでいる。第１テーブルＴａは、ブロック毎の書き込み回数、及び消去回数を管理する。第１テーブルＴａの内容は、各ブロックが書き込み、又は消去される毎に更新される。第２デーブルＴｂは、後述するように、ページ内のＥＣＣ領域の位置を例えばブロック単位で管理する。
【００１７】
図４は、ＮＡＮＤメモリ１４の各メモリセルに設定される閾値電圧と書き込みデータの関係を示している。図４に示すように、ＮＡＮＤメモリ１４は、例えば複数の閾値電圧を用いてマルチレベルのデータを記憶することが可能である。図４は、例えば２ビット、４レベルの閾値電圧の分布を示している。２ビットのデータをメモリセルに記憶する場合、ロワーページのデータと、アッパーページのデータにより“Ｅ”“Ａ”“Ｂ”“Ｃ”の分布を有する閾値電圧が設定される。
【００１８】
以下、閾値電圧の分布“Ｅ”“Ａ”“Ｂ”“Ｃ”を、レベル“Ｅ”“Ａ”“Ｂ”“Ｃ”とも言う。レベル“Ｅ”は、消去レベルを示し、レベル“Ｅ”“Ａ”“Ｂ”“Ｃ”は、閾値電圧Ｖｔｈが“Ｅ”“Ａ”“Ｂ”“Ｃ”の順に高く設定されている。すなわち、これらレベルの関係は、“Ｅ”＜“Ａ”＜“Ｂ”＜“Ｃ”である。ここで、「レベル差（閾値電圧の分布の差）」とは、少なくとも各レベル（各閾値電圧の分布）の相違が、例えばセンスアンプ等により、認識可能な程度に存在していればよい。そのため、レベル差とは、例えばあるレベルの一部が他のレベルの一部と重複している場合等の各レベルが分離していない場合も含まれ得る。
【００１９】
４レベルのうち、例えば最も閾値電圧が高いレベル“Ｃ”がメモリセルに頻繁に書き込まれた場合、メモリセルのゲート絶縁膜が劣化し、メモリセルの寿命が短くなる。このため、メモリセルに対するレベル“Ｃ”の書き込み回数を低減する必要がある。
【００２０】
また、ＮＡＮＤメモリ１４は、行方向（例えば図示せぬワード線に沿った方向）に隣接する複数のメモリセルに同時にデータが書き込まれる。図５に示すように、行方向に隣接する複数のメモリセルに書き込まれるレベルが、例えば“Ｅ”“Ｃ”“Ｅ”のようなパターンである場合、レベル“Ｅ”とレベル“Ｃ”は、大きなレベル差を有している。このように、レベル“Ｅ”に対して大きなレベル差を有する“レベル“Ｃ”を書き込む際、レベル“Ｅ”の閾値電圧が変化し、エラーが発生する。
【００２１】
この現象は、列方向（例えば図示せぬビット線に沿った方向）に隣接する複数のメモリセルに対して、レベル差の大きなデータを書き込む場合にも発生する。このように、行方向、又は列方向に隣接する複数のメモリセルのレベル差が大きい場合、低いレベル（閾値電圧）が上昇し、所謂プログラムディスターブが発生する。
【００２２】
プログラムディスターブを抑制するため、隣接する複数のメモリセルのレベル差を小さくする必要がある。このため、高い閾値電圧であるレベル“Ｃ”の書き込みを抑制する必要がある。
【００２３】
［エンコーダ］
図６は、図１に示すエンコーダ１１の概略的な動作を示している。
【００２４】
図６において、Ｄｗは、例えば行方向に隣接して配置された複数のメモリセルに書き込まれる複数のデータを含むデータ列の一例を示している。このデータ列Ｄｗは、各メモリセルに書き込まれるデータを、各メモリセルに設定されるレベルとして示している。
【００２５】
図６に示すように、データ列Ｄｗによりメモリセルに設定されるレベルのパターンが、例えば“Ｃ”“Ｅ”“Ｃ”“Ｂ”である場合、図１に示すエンコーダ１１は、このデータＤｗからレベル差（閾値電圧の差）が大きなレベルのパターン、例えば“Ｃ”“Ｅ”を探索する。レベルパターン“Ｃ”“Ｅ”が見つかった場合、エンコーダ１１は、レベルパターン“Ｃ”“Ｅ”を、レベルパターン“Ｃ”“Ｅ”のレベル差より小さなレベル差で、例えばデータ列Ｄｗ内に出現しないレベルパターンに変換する。換言すると、エンコーダ１１は、隣接セル間の干渉が大きい符号を伸長することにより、干渉の小さい符号に置き換える。ここで、符号とは、データを構成する“０”又は“１”のビットの集合により情報を表現する目的で示された記号である。尚、置き換えた符号が他の符号と識別することが可能であれば、データ列Ｄｗ内に出現するレベルパターンを用いることも可能である。
【００２６】
図６に示す例の場合、レベルパターン“Ｃ”“Ｅ”は、例えばレベルパターン“Ｂ”“Ｂ”“Ｅ”に置き換えられる。エンコーダ１１は、この探索、及び変換処理をページ内で繰り返す。
【００２７】
変換後のレベルパターン“Ｂ”“Ｂ”“Ｅ”は、元のレベルパターン“Ｃ”“Ｅ”よりデータ長（ビット長）が長い。このため、エンコーダ１１は、探索及び変換処理を繰り返すことにより、変換後のデータ長が予め定められたページ内のデータ長を超えると判断された場合、探索及び変換処理を中止する。このため、変換後のデータ長は、予め定められたページ内のデータ長を超えない。すなわち、変換処理は、予め定められたページ内のデータ長以内で実行される。変換処理を中止したことにより、ページ内の残りのデータ内にレベルパターン“Ｃ”“Ｅ”が有る場合、このレベルパターン“Ｃ”“Ｅ”は、変換されずに残る。したがって、第１実施形態は、メモリセルの耐久性の劣化、及びプログラムディスターブを若干許容する。
【００２８】
尚、探索及び変換処理は、列方向に配置された複数のメモリセルに書き込まれるデータのパターンに関しても同様に行なうことが可能である。この場合、例えば１ブロック分のデータを保持することが可能な例えばバッファメモリを設け、バッファメモリに保持されたデータについて、列方向に上述した探索を行い、探索結果に基づき、変換処理を行えばよい。
【００２９】
図７は、エンコーダ１１の一例を示している。図７に示すように、エンコーダ１１は、エントロピー解析部１１ａと、変換部１１ｂを含んでいる。
【００３０】
エントロピー解析部１１ａは、例えばページ単位に入力されたデータＤｗのビット列から特定のビットパターン毎に、そのビットパターンの出現する確立、又は回数を求める。さらに、エントロピー解析部１１ａは、求められた例えばビットパターン毎の出現回数を大きい順に並べる。
【００３１】
変換部１１ｂは、エントロピー解析部１１ａの解析結果に基づき、各ビットパターンを圧縮するための変換コードを含むコードブック１１ｃを生成する。
【００３２】
また、変換部１１ｂは、コードブック１１ｃの変換コードに従って、解析された特定のビットパターンをコードに変換する。さらに、変換部１１ｂは、例えば予め設定されたパラメータＰを受ける。このパラメータＰは、例えばＮＡＮＤメモリ１４の耐久性や特性を改善するためのパラメータであり、例えばレベル差の大きなビットパターンを示すコードである。変換部１１ｂは、前述した変換コードに従って変換されたコード内からパラメータＰで示されるコードを探索し、パラメータＰで示されるコードが見つかった場合、このコードをレベル差の小さなビットパターン対応する別のコードに変換する。この変換処理は、後述するように、例えばコードを伸張する伸張処理である。
【００３３】
さらに、変換部１１ｂは、コードブック１１ｃのレベル差の大きなコードをレベル差の小さなビットパターン対応する別のコードで更新する。このコードブック１１ｃは、データ列の例えば末尾に付加される。
【００３４】
図８、図９Ａ、９Ｂ、９Ｃは、エンコーダ１１の動作の一例を示している。図８、図９Ａ、９Ｂ、９Ｃを参照して、エンコーダ１１の動作についてさらに説明する。
【００３５】
エントロピー解析部１１ａは、例えばページ単位に入力されたデータ列Ｄｗから特定のビットパターンの出現回数を求める（Ｓ１）。ここで、出現回数とは、データ列Ｄｗに含まれる特定のビットパターン毎の数である。
【００３６】
具体的には、図９Ａに示すようなデータ列Ｄｗがある場合、このデータ列Ｄｗから、特定のビットパターン、例えば“００００”“１１００”“１１１”…の出現する回数が、ビットパターン毎に計数される。この計数された出現回数は、多い順に並べられる。
【００３７】
つまり、図９Ｂに示すように、“００００”の出現回数がｍ個、“１１００”の出現回数がｎ個、“１１１”の出現回数がｐ個（ｍ＞ｎ＞ｐ）…のように、特定のビットパターン毎に出現回数が計数され、出現回数の多い順に並べられる。このように、特定のビットパターンを探索することにより、データ列Ｄｗ中に出現しないビットパターンが判明する。
【００３８】
尚、メモリセルに記憶されるデータが２ビット、４レベルにより構成される場合、上述したように、２ページによりデータが構成される。このため、例えば例えば２ページ分のバッファメモリを設け、このバッファメモリ内の２ページのデータ列から特定のビットパターン毎に出現回数が計数され、出現回数が多い順に並べられる。
【００３９】
また、３ビット、８レベル以上のデータについては、３ページ以上のバッファメモリを設け、３ページ以上のデータ列について上記処理が実行される。
【００４０】
変換部１１ｂは、エントロピー解析部１１ａの解析結果に基づき、ページ毎にビット長を圧縮するための変換コードなどの変換情報を含むコードブック１１ｃを生成し、このコードブック１１ｃに基づき、入力されたデータ列Ｄｗを圧縮処理する（Ｓ２）。
【００４１】
図９Ｃは、コードブック１１ｃの一例を示している。コードブック１１ｃは、変換情報として、例えばエントロピー解析部１１ａで求められた特定のビットパターン毎の出現回数、及び又は特定のビットパターンの出現位置、特定のビットパターンに対応して生成された変換コードを含んでいる。コードブック１１ｃの構成は、これに限定されるものではなく、変形可能である。
【００４２】
変換部１１ｂは、コードブック１１ｃの変換コードに基づき、データ列Ｄｗを圧縮する。具体的には、図９Ｂに示すように、最も出現回数の多いビットパターン“００００”は、変換コードに基づき、例えばコード“０”に変換され、次に出願回数の多いビットパターン“１１００”は、例えばコード“０１”に変換され、次に出願回数の多いビットパターン“１１１”は、例えばコード“１０”に変換される。このため、ビットパターン“００００”は、４ビット×ｍが、１／４ｍに圧縮され、ビットパターン“１１００”は、４ビット×ｎが、１／２ｎに圧縮される。ビットパターン“１１１”は、３ビット×ｐが、２／３ｐに圧縮される。
【００４３】
さらに、変換部１１ｂは、パラメータＰに基づき、変換後のコード内に、レベル差が最も大きいレベルパターンに対応するコードがあるかどうか探索する（Ｓ３）。この結果、レベル差が最も大きいレベルパターンに対応するコードが見つかった場合、このコードを、レベル差が小さいコードに変換する（Ｓ４）。
【００４４】
具体的には、図９Ｂに示すように、例えばパラメータＰが最もレベル差が大きいレベルパターン“Ｃ”“Ｅ”に対応するコード“１０”を示す場合、変換後のコードからコード“１０”が探索される。このコード“１０”が見つかった場合、変換後のコード“１０”が、レベルパターン“Ｃ”“Ｅ”より小さいレベル差を有する例えばレベルパターン“Ｂ”“Ｂ”“Ｅ”に対応するコード、例えば“１１０”に変換される。このコード“１１０”は、エントロピー解析部１１ａにおいて、解析されたデータ列Ｄｗに出現しないコードである。このように、閾値電圧のレベル差が最も高いレベルパターン“Ｃ”“Ｅ”は、レベル差が小さなレベルパターン“Ｂ”“Ｂ”“Ｅ”に変換されることにより、レベルパターンが伸張されることとなる。
【００４５】
このレベル差が小さなレベルパターン“Ｂ”“Ｂ”“Ｅ”に対応するコード“１１０”により、コードブック１１ｃの変換コードとしてのコード“１０”が更新される（Ｓ５）。
【００４６】
上記変換処理により、変換前のデータ列Ｄｗは、原則として圧縮されるが、閾値電圧のレベル差が最も高いレベルパターンについては、変換後のビット長が、変換前のビット長より長くなる。
【００４７】
変換部１１ｂは、上記探索と、変換処理をデータ列Ｄｗに対して繰り返す（Ｓ６−Ｓ３）。この処理の途中で、変換されたデータのビット長が、例えば予め設定されたページ内のデータのビット長を超えた場合、変換部１１ｂは、変換処理を中止する。換言すると、変換処理は、予め定められたページ内のデータ長以内で実行される。
【００４８】
この後、生成されたコードブック１１ｃがページ内のデータ列の例えば末尾に付加される（Ｓ７）。
【００４９】
尚、メモリセルに記憶されるデータが２ビット、４レベルにより構成される場合、変換部１１ｂは、上記変換動作により、例えば２ページ分のデータを生成し、メモリセルに記憶されるデータが３ビット、８レベル以上により構成される場合、３ページ以上のデータを生成する。
【００５０】
また、変換部１１ｂに供給されるパラメータＰは１つに限定されるものではなく、複数のパラメータを設定してもよい。すなわち、上記説明はパラメータＰとして最もレベル差が大きいレベルパターン“Ｃ”“Ｅ”に対応するコード“１０”を探索した。しかし、これに加えて、次にレベル差が大きいレベルパターン“Ｃ”“Ａ”又は“Ｂ”“Ｅ”に対応するコードをパラメータとして設定し、このコードを探索してレベル差が小さな別のコードに変換してもよい。
【００５１】
［ＥＣＣエンコーダ］
図１に示すＥＣＣエンコーダ１２は、例えば組織符号を使用してエンコーダ１１から供給されたコードブック１１ｃを含むデータ列にエラー訂正用のデータとしてのエラー訂正符号（ＥＣＣ）を付加する。組織符号としては、例えばハミング符号、ＢＨＣ符号、リードソロモン符号などがあるが、誤り訂正の最小単位が複数ビットのリードソロモン符号が適用される。しかし、リードソロモン符号に限定されるものではない。組織符号は、データ列とＥＣＣが分離されている。したがって、コードブック１１ｃを含むデータ列の内容は変更されないため、上記圧縮又は伸張されたデータ列の状態、及びコードブック１１ｃの内容を保持することができる。
【００５２】
［ＥＣＣ移動部］
上記ＥＣＣエンコーダ１２により、組織符号によりデータ列に付加されるＥＣＣは、上記変換処理が行われていない。このため、ＥＣＣがレベル“Ｃ”のデータを含む可能性があり、レベル“Ｃ”のデータの出現確率が高いことも考えられる。このため、ページ内でＥＣＣが付加される領域（以下、ＥＣＣ領域と称す）の位置がページに対して固定されている場合、ＥＣＣ領域のメモリセルは、頻繁にレベル“Ｃ”のデータが書き込まれることとなる。したがって、ＥＣＣ領域のメモリセルは、データが書き込まれるメモリセルより、劣化される可能性が高い。
【００５３】
図１に示すＥＣＣ移動部１３は、ページ内のＥＣＣ領域の位置を例えばブロックのアクセス回数、具体的には、ブロックに対する例えば書き込み回数及び／又は消去回数に基づき移動する。
【００５４】
図３に示すように、ＮＡＮＤメモリ１４の各ブロックは、ブロック毎に書き込み回数や消去回数が第１テーブルＴａにより管理されている。ＥＣＣ移動部１３は、例えば書き込み対象のブロックの書き込み回数が基準値を超えた場合、ページ内のＥＣＣ領域の位置を変更する。
【００５５】
すなわち、図１０に示すように、ＥＣＣ領域は、最初、ページ内の例えばmost significant bit（ＭＳＢ）近傍に設けられる。書き込み対象のブロックの書き込み回数が基準値を超える毎に、ページ内のＥＣＣ領域の位置は、例えばＭＳＢからleast significant bit（ＬＳＢ）方向に移動される。
【００５６】
具体的には、ＥＣＣ移動部１３は、例えばシフトレジスタにより構成され、シフトレジスタ内のデータが、ブロックの書き込み回数に基づき、ＭＳＢからＬＳＢ方向にサーキュラシフトされる。すなわち、シフト動作に従ってＬＳＢ側から出力されたデータは、ＭＳＢ側に入力される。このようにして、ページ内のＥＣＣ領域の位置が変化される。ＥＣＣ領域の移動方向、及び移動位置は、これに限定されるものではなく、ページ内のＥＣＣ領域の位置が変化すればよい。
【００５７】
図１１は、ＥＣＣ移動部１３の動作の一例を示している。ＥＣＣ移動部１３は、データの書き込み時、第１テーブルＴａに記録された書き込み対象のブロックの書き込み回数と基準値とを比較する（Ｓ１１）。この比較の結果、書き込み回数が基準値を超えている場合、ＥＣＣ領域がページ内で移動される（Ｓ１２）。この後、ＮＡＮＤメモリ１４の第２テーブルＴｂが新たなＥＣＣ領域の位置情報により更新される（Ｓ１３）。すなわち、第２テーブルＴｂの書き込み対象ブロックに対応するＥＣＣ領域の位置情報が更新される。一方、ステップＳ１１の比較の結果、書き込み回数が基準値以下である場合、ＥＣＣ領域の位置は移動されない。この後、ページ内のＥＣＣ領域の位置が制御されたデータは、ＮＡＮＤメモリ１４に書き込まれる（Ｓ１４）。
【００５８】
このように、ブロックの書き込み回数が基準値を超える毎にページ内のＥＣＣ領域の位置を移動させることにより、ＥＣＣ領域内のメモリセルの劣化を防止することができ、メモリセルの寿命を延ばすことが可能である。
【００５９】
図１０は、ＥＣＣ領域と一緒にページ内のコードブック１１ｃも移動される場合を示している。コードブック１１ｃは、上述したように、レベルパターン“Ｃ”“Ｅ”をレベルパターン“Ｂ”“Ｂ”“Ｅに変換するための変換コードを含むため、レベル“Ｃ”のデータを含んでいる。このため、ＥＣＣ領域と同様に、コードブック１１ｃが付加される領域（以下、コードブック領域と言う）をページ内の同じ位置に繰り返し書き込むと、メモリセルが劣化する。したがって、図１０に示すように、ＥＣＣ領域と共にコードブック領域を移動することにより、メモリセルの劣化を防止することができる。
【００６０】
尚、コードブック領域はＥＣＣ領域と共に移動されるため、コードブック領域のページ内の位置は、ＥＣＣ領域の位置から相対的に判別することが可能である。
【００６１】
また、上記説明は、ＮＡＮＤメモリ１４内の管理領域に記録されたブロック毎の書き込み回数に従って、ＥＣＣ領域の位置を移動させた。しかし、これに限定されるものではなく、例えば、ブロックの消去回数に基づきＥＣＣ領域及びコードブック領域の位置を変更しても同様の効果を得ることが可能である。
【００６２】
［データの読み出し］
次に、データの読み出し動作について説明する。データの読み出し動作は、上記データの書き込み動作と逆の処理が実行される。
【００６３】
図１２は、データの読み出し系の構成を概略的に示し、図１３はデータの読み出し系の動作を示している。図１２、図１３を参照して、データの読み出し動作について説明する。
【００６４】
ＮＡＮＤメモリ１４から読み出された例えば１ページのデータは、ＥＣＣ移動部１３に供給される。ＥＣＣ移動部１３は、図３に示す第２テーブルＴｂに記録されたブロック毎のＥＣＣ領域の位置情報に基づき、ページ内のＥＣＣ領域の位置を判別する（Ｓ２１）。ＥＣＣ移動部１３は、判別結果に基づきＥＣＣ領域を、例えば図２に示す位置に戻してもよい。
【００６５】
ＥＣＣデコーダ１２ａは、判別されたＥＣＣ領域のＥＣＣに基づき、データ列にエラーが有る場合、エラー訂正処理を行う。
【００６６】
デコーダ１１ｄは、ページ内のデータに付加されたコードブック１１ｃに基づき、ページ内のデータを逆変換し、圧縮されたデータ、又は伸張されたデータを基のデータに戻すことにより、書き込みデータを再現する（Ｓ２３）。すなわち、変換部１１ｂは、コードブック１１ｃに従って、圧縮又は伸張されたデータ列を元のデータ列に変換することにより、レベル差が小さいレベルパターンに置き換えられたデータ列は、大きなレベル差のレベルパターンを有する元のビットパターンに変換される。また、特定のビットパターン毎の出現回数に基づき圧縮されたデータは、元のビットパターンに変換され、元の出現位置に復帰される。このようにして、元のデータ列が再現される。
【００６７】
［ＳＳＤの構成］
図１４は、第１実施形態が適用されるＳＳＤ（メモリシステム）３１の一例を示している。
【００６８】
ＳＳＤ３１において、コントローラ３２は、フロントエンド３２Ｆと、バックエンド３２Ｂとを備える。
【００６９】
フロントエンド（ホスト通信部）３２Ｆは、ホストインタフェース３３、ホストインタフェースコントローラ３４、暗号化／復号化部（Advanced Encryption Standard (AES)）３５、及びＣＰＵ３６を備える。
【００７０】
ホストインタフェース３３は、ホスト２１との間で、各種の要求、ＬＢＡ、及びデータなどを通信する。要求としては、例えば書き込みコマンド、読み出しコマンド、消去コマンドなどがある。
【００７１】
ホストインタフェースコントローラ３４は、ＣＰＵ３６の制御に基づき、ホストインタフェース３３の通信を制御する。
【００７２】
ＡＥＳ３５は、データの書き込み動作において、ホストインタフェースコントローラ３４から供給される書き込みデータを暗号化し、バックエンド３２Ｂの書き込みバッファＷＢに供給する。ＡＥＳ３５は、データ読み出し動作において、バックエンド３２ＢのリードバッファＲＢから送信される暗号化された読み出しデータを復号化する。なお、ＡＥＳ３５を介さずに、書き込みデータ及び読み出しデータを送信することも、必要に応じて可能である。
【００７３】
ＣＰＵ３６は、フロントエンド３２Ｆのホストインタフェース３３、ホストインタフェースコントローラ３４、ＡＥＳ３５を制御し、フロントエンド３２Ｆの全体の動作を制御する。
【００７４】
バックエンド３２Ｂは、ライトバッファＷＢ、リードバッファＲＢ、ＬＵＴ(Lookup table)４１、ＤＤＲＣ(Double data Rate Controller)４２、ＤＲＡＭ(Dynamic Random Access Memory)４３、ＤＭＡＣ(Direct Memory Access Controller)４４、ＣＰＵ４５、前述したエンコーダ１１／デコーダ１１ａ、ＥＣＣエンコーダ１２／ＥＣＣデコーダ１２ａ、ＥＣＣ移動部１３、及びＮＡＮＤＣ(NAND controller)４９を備える。
【００７５】
ライトバッファＷＢは、情報処理装置２から送信された書き込みデータを一時的に格納する。具体的には、ライトバッファＷＢは、当該書き込みデータがＮＡＮＤメモリ１４に適した所定のデータサイズになるまで、一時的にデータを格納する。
【００７６】
リードバッファＲＢは、ＮＡＮＤメモリ１４から読み出された読み出しデータを一時的に格納する。具体的には、リードバッファＲＢにおいて、読み出しデータは、情報処理装置２に適した順序（情報処理装置２が指定した論理ブロックアドレス（ＬＢＡ）の順序）になるように並び替えられる。
【００７７】
ＬＵＴ４１は、論理ブロックアドレス（ＬＢＡ）を物理ブロックアドレス（ＰＢＡ）に変換するためのデータである。
【００７８】
ＤＤＲＣ４２は、ＤＲＡＭ４３におけるＤＤＲ（Double Data Rate）を制御する。
【００７９】
ＤＲＡＭ４３は、例えば、ＬＵＴ４１を格納する不揮発性のメモリである。
【００８０】
ＤＭＡＣ４４は、内部バスＩＢを介して、書き込みデータや読み出しデータなどを転送する。
【００８１】
ＣＰＵ４５は、バックエンド３２Ｂの上記各構成（４１〜４２、１１、１１ａ、１２、１２ａ、１３、４９）を制御し、バクエンド３２Ｂの全体の動作を制御する。
【００８２】
データの書き込み時、エンコーダ１１は、ライトバッファＷＢから供給されるデータ列のエントロピーを上述したように解析し、隣接するメモリセルに書き込まれるレベル差が低減されるように、コードブック１１ｃに基づきデータ列をエンコードする。ＥＣＣエンコーダ１２は、エンコーダ１１から供給されるコードブック１１ｃを含むデータ列に、組織符号を用いてＥＣＣを付加する。ＥＣＣ移動部１３は、書き込み対象のブロックの例えば書き込み回数に基づき、ページ内のＥＣＣ領域、及びコードブック領域の位置を移動する。ＥＣＣ移動部１３から出力された１ページ分のデータは、ＮＡＭＤＣ４９に供給され、ＮＡＮＤＣ４９により、ＮＡＮＤメモリ１４に書き込まれる。
【００８３】
データ読み出し時、ＮＡＮＤメモリ１４から読み出された１ページ分のデータは、ＮＡＭＤＣ４９を介してＥＣＣ移動部１３に供給される。ＥＣＣ移動部１３は、第２テーブルＴｂに記録されたＥＣＣ領域の位置情報に基づき、１ページ内のＥＣＣ領域の位置を判別する。ＥＣＣデコーダ１２ａは、判別されたＥＣＣ領域内のＥＣＣに基づき、データのエラー訂正処理を行う。デコーダ１１ａは、ＥＣＣデコーダ１２ａから供給されるデータをコードブック１１ｃに基づきデコードする。このデコータ１１ａにより再現されたデータ列は、リードバッファＲＢに供給される。
【００８４】
図１４において、１つのＤＭＡＣ４４が図示されているが、コントローラ４は、２以上のＤＭＡＣ４４を含んでもよい。ＤＭＡＣ４４は、必要に応じて、コントローラ３２内の様々な位置に設定することが可能である。
【００８５】
ＮＡＮＤメモリＣ４９は、所定の速度の要求を満たすため、複数のチャンネル（ここでは、４つのチャンネルＣＨ０〜ＣＨ３）を用いて、並列にＮＡＮＤメモリ１４にアクセスする。
【００８６】
尚、図１４に示したコントローラ３２の構成は例示であり、この構成に限定されるものではない。
【００８７】
また、ＳＳＤ３１は、デザインルールの異なるＮＡＮＤメモリや、平面型のＮＡＮＤメモリや立体型のＮＡＮＤメモリのように異なるタイプのＮＡＮＤメモリが適用可能とされている。
【００８８】
［第１実施形態の効果］
上記第１実施形態によれば、入力データＤｗに含まれる閾値電圧の差が大きなデータパターンが閾値電圧の差が小さなデータパターンに変換される。このため、プログラムディスターブを抑制することが可能である。しかも、閾値電圧の高いデータが減少するため、メモリセルの耐久性が向上し、メモリセルの寿命を伸ばすことが可能である。
【００８９】
また、プログラムディスターブが抑制されるため、読出しエラーを低減することができる。このため、高度なＥＣＣを用いる必要がなく、ＥＣＣのエンコード、及びデコードに要する時間を削減することができる。
【００９０】
さらに、ページ内のＥＣＣ領域、及びコードブック領域の位置は、ブロックの書き込み回数や消去回数に基づき移動される。このため、ＥＣＣ領域、及びコードブック領域の位置が固定されている場合に比べてメモリセルの耐久性を向上させることができる。
【００９１】
（第２実施形態）
次に、図１５乃至図１８を用い、第２実施形態について説明する。なお、以下の説明においては、上記第１実施形態と重複する部分の説明については省略する。
【００９２】
［構成］
［コントローラの構成］
図１５を用い、第２実施形態に係るコントローラ１０について説明する。図１５に示すように、第２実施形態に係るコントローラ１０は、第１実施形態と比較して、第３テーブルＴｃおよび制御部１５を更に備え、ＥＣＣ移動部１３を備えていない。
【００９３】
第３テーブルＴｃは、少なくとも、ページの書き込み回数と、付加されるエラー訂正符号（ＥＣＣ）とが対応して示される。第３テーブルＴｃの詳細については、後述する。
【００９４】
制御部１５は、制御信号ＣＳをエンコーダ１１およびＥＣＣエンコーダ１２に送信し、ページにおけるコードブック１１ｃおよびエラー訂正符号を付加する比率（割合）を制御する。具体的には、制御部１５は、ＮＡＮＤメモリ１４の所定のページに書き込みデータＤｗを書き込む際に、第３テーブルＴｃを参照する。さらに、制御部１５は、当該ページの書き込み回数ＮＰＸのフィードバックを受け、フィードバックされた書き込み回数ＮＰＸと参照した第３テーブルＴｃの書き込み回数とを比較した結果に基づき、制御信号ＣＳ１〜ＣＳ３を生成する。この制御部１５の動作の詳細については後述する。
【００９５】
なお、制御部１５は、例えば上記図１４で示したＣＰＵ４５等に対応する。また、書き込み回数ＮＰＸは、例えば上記図１４で示したＮＡＮＤＣ４９等により制御線ＩＢを介して、制御部１５にフィードバックされてもよい。さらに、制御部１５にフィードバックされる情報は、書き込み回数ＮＰＸに限らず、例えばページ毎の読み出し回数やブロック毎の消去回数等のＮＡＮＤメモリ１４へのアクセス回数であればよい。
【００９６】
上記構成により、ＥＣＣエンコーダ（エラー訂正部）１４は、制御部１５による制御信号ＣＳ１〜ＣＳ３に基づき、第３データ列を含む書き込みデータＤｗに、エラー訂正符号（ＥＣＣ）を付加する。
【００９７】
なお、エラー訂正符号が付加された書き込みデータＤｗは、例えばＮＡＮＤＣ４９等により、ページ単位でＮＡＮＤメモリ１４に同様に書き込まれる。
【００９８】
［第３テーブルＴｃの構成］
図１６を用い、第２実施形態に係る第３テーブルＴｃの構成について説明する。図１６に示すように、第３テーブルＴｃは、ページの書き込み回数と、付加されるＥＣＣおよびコードブックとが対応付けて示される。
【００９９】
例えば、第３テーブルＴｃには、書き込み回数である１回〜１０００回（ＮＰ１）と、ＥＣＣ１およびコードブック１１ｃ１とが対応付けて示される。ここでは、１０００回であるＮＰ１が、書き込み回数の第１閾値として示される。例えば、第３テーブルＴｃには、書き込み回数である１００１回〜１００００回（ＮＰ２）と、ＥＣＣ２およびコードブック１１ｃ２とが対応付けて示される。１００００回であるＮＰ２が、書き込み回数の第２閾値として示される。例えば、第３テーブルＴｃには、書き込み回数である１０００１回〜１０００００回（ＮＰ３）と、ＥＣＣ３およびコードブック１１ｃ３とが対応付けて示される。
【０１００】
第３テーブルＴｃでは、書き込み回数に比例して、冗長領域ＲＡおけるＥＣＣの割合は大きくなるように示される（ＥＣＣ１＜ＥＣＣ２＜ＥＣＣ３）。換言すると、第３テーブルＴｃでは、書き込み回数に比例して、冗長領域ＲＡにおけるＥＣＣのデータサイズは大きい。これに対して、第３テーブルＴｃでは、ＥＣＣの強さの変更に伴い、書き込み回数に比例して、冗長領域ＲＡにおけるコードブック１１ｃの割合は小さい（１１ｃ１＞１１ｃ２＞１１ｃ３）。例えば、コードブック１１ｃの冗長領域ＲＡに占める割合は、冗長領域ＲＡ全体からＥＣＣが占める割合を減算した残りとなる。
【０１０１】
なお、第３テーブルＴｃの構成は一例であり、図１６に示したものに限られない。例えば、書き込み回数に限らず、ページ毎の読み出し回数や消去回数でもよい。また、書き込み回数がコントローラ１０内の所定のメモリに格納されている場合等には、書き込み回数は不要である。さらに、テーブル形式に限らず、例えば、所定の数式や関数等であってもよい。
【０１０２】
その他の構成に関しては、上記第１実施形態と実質的に同様であるため、その詳細な説明を省略する。
【０１０３】
［動作］
［ＥＣＣの比率の変更処理］
次に、上記構成において、第２実施形態に係るＥＣＣの比率の変更処理について説明する。ここでは、図１７に沿って、以下説明する。
【０１０４】
ステップＳ３１において、コントローラ１０は、書き込みデータＤｗを書き込むページの書き込み回数ＮＰＸのフィードバックを受ける。具体的には、コントローラ１０の制御部１５は、書き込みデータＤｗを書き込むページアドレスのページの書き込み回数ＮＰＸについて、例えば上記ＮＡＮＤＣ４９等からフィードバックを受ける。
【０１０５】
ステップＳ３２において、コントローラ１０は、第３テーブルＴｃを参照する。具体的には、コントローラ１０の制御部１５は、第３テーブルＴｃを参照し、フィードバックを受けた書き込み回数ＮＰＸが、第３テーブルＴｃのどの書き込み回数に対応するかを確認する。
【０１０６】
ステップＳ３３において、コントローラ１０は、書き込み回数ＮＰＸが、参照した第３テーブルＴｃの書き込み回数の閾値（ＮＰ１またはＮＰ２）を超えるか否かを判定する。
【０１０７】
ステップＳ３４において、コントローラ１０は、書き込み回数ＮＰＸが参照した第３テーブルＴｃの書き込み回数の閾値を超える場合（ステップＳ３３でＹｅｓ）、当該ページの冗長領域ＲＡにおけるＥＣＣの比率（割合）を変更する。
【０１０８】
例えば、ステップＳ３４において、コントローラ１０の制御部１５は、書き込み回数ＮＰＸが第３テーブルＴｃの書き込み回数の閾値ＮＰ１を超える場合、ページの冗長領域ＲＡにおいて付加するＥＣＣの割合が大きくなるように、即ち、ＥＣＣ１からＥＣＣ２へ変更する。このＥＣＣの割合の変更に伴い、制御部１５は、ページの冗長領域ＲＡにおいて付加するコードブック１１ｃの比率が小さくなるように、即ち、１１ｃ１から１１ｃ２となるように変更する。そのため、制御部１５は、ＥＣＣおよびコードブック１１ｃの変更に伴い、制御信号をＣＳ１からＣＳ２へ切り替える。
【０１０９】
なお、制御信号ＣＳ２を受信したエンコーダ１１は、制御信号ＣＳ２に従い、小さく変更したコードブック１１ｃ２を書き込みデータＤｗに付加する。同様に、制御信号ＣＳ２を受信したＥＣＣエンコーダ１２は、制御信号ＣＳ２に従い、大きく変更したＥＣＣ２を、コードブック１１ｃ２および書き込みデータＤｗを含むデータ列に付加する。コードブック１１ｃ２、ＥＣＣ２、および書き込みデータＤｗを含むデータ列は、ＮＡＮＤメモリ１４の所定のページに書き込まれる。
【０１１０】
例えば、ステップＳ３４において、コントローラ１０の制御部１５は、書き込み回数ＮＰＸが第３テーブルＴｃの書き込み回数の閾値ＮＰ２を超える場合、ページの冗長領域ＲＡにおいて付加するＥＣＣの割合が大きくなるように、即ち、ＥＣＣ２からＥＣＣ３へ変更する。このＥＣＣの割合の変更に伴い、制御部１５は、ページの冗長領域ＲＡにおいて付加するコードブック１１ｃの比率が小さくなるように、即ち、１１ｃ２から１１ｃ３となるように変更する。そのため、制御部１５は、ＥＣＣおよびコードブック１１ｃの変更に伴い、制御信号をＣＳ２からＣＳ３へ切り替える。
【０１１１】
なお、制御信号ＣＳ３を受信したエンコーダ１１は、制御信号ＣＳ３に従い、小さく変更したコードブック１１ｃ３を書き込みデータＤｗに付加する。同様に、制御信号ＣＳ２を受信したＥＣＣエンコーダ１２は、制御信号ＣＳ３に従い、大きく変更したＥＣＣ３を、コードブック１１ｃ３および書き込みデータＤｗを含むデータ列に付加する。コードブック１１ｃ３、ＥＣＣ３、および書き込みデータＤｗを含むデータ列は、ＮＡＮＤメモリ１４の所定のページに書き込まれる。
【０１１２】
ステップＳ３５において、コントローラ１０は、書き込み回数ＮＰＸが参照した第３テーブルＴｃの書き込み回数の閾値以下の場合（ステップＳ３３でＮｏ）、当該ページの冗長領域ＲＡにおけるＥＣＣの比率を変更しない。
【０１１３】
例えば、ステップＳ３５において、コントローラ１０の制御部１５は、書き込み回数ＮＰＸが第３テーブルＴｃの書き込み回数の閾値ＮＰ１以下の場合、ページの冗長領域ＲＡにおいて付加するＥＣＣの割合およびコードブック１１ｃの割合を変更せず、これを維持する。そのため、この場合、制御部１５は、ＥＣＣおよびコードブック１１ｃの変更しないため、制御信号を切り替えることなく、ＣＳ１をエンコーダ１１およびＥＣＣエンコーダ１２に送信する。
【０１１４】
その他の動作に関しては、上記第１実施形態と実質的に同様であるため、その詳細な説明を省略する。
【０１１５】
［作用効果］
以上説明したように、第２実施形態に係る構成および動作によれば、上記第１実施形態と同様の効果が得られ、さらに少なくとも下記（１）の効果が得られる。
【０１１６】
（１）過不足なくデータを保護し、ＮＡＮＤメモリ１４を長寿命化できる。
【０１１７】
ここで、時間があまり経過していない初期（例えば、製品の出荷当初）では、ＮＡＮＤメモリ１４のメモリセルは、まだ書き込みがされていない。そのため、エラー訂正はほとんど必要なく、付加するＥＣＣもほとんど必要ない。一方、時間が経過すると、繰り返しデータがメモリセルに書き込まれることで、ＮＡＮＤメモリ１４のメモリセルのトンネル酸化膜が劣化する。そのため、より強いエラー訂正が必要となり、より大きなサイズのエラー訂正符号ＥＣＣを付加する必要がある。
【０１１８】
そこで、第２実施形態に係るコントローラ１０は、ページにおけるエラー訂正符号ＥＣＣおよびコードブック１１ｃを付加する割合を制御する制御部１４を備える（図１５）。
【０１１９】
上記構成において、コントローラ１０の制御部１５は、フィードバックされた書き込み回数ＮＰＸが、第３テーブルＴｃの書き込み回数の閾値（ＮＰ１またはＮＰ２）を超えるか否かを判定する（図１７のＳ３３）。書き込み回数ＮＰＸが第３テーブルＴｃの書き込み回数の閾値以下の場合、制御部１５は、当該ページの冗長領域ＲＡにおけるＥＣＣおよびコードブック１１ｃの比率（割合）を変更しない（図１７のＳ３５）。
【０１２０】
例えば、図１８の（ａ）初期状態の場合、ＮＡＮＤメモリ１４のメモリセルは、まだ書き込みがされていない。そのため、エラー訂正はほとんど必要なく、付加するＥＣＣもほとんど必要ない。従って、コントローラ１０の制御部１５は、例えば、書き込み回数ＮＰＸが第３テーブルＴｃの書き込み回数の閾値ＮＰ１以下の場合、ページの冗長領域ＲＡにおいて付加するＥＣＣの割合およびコードブック１１ｃの割合を変更せず、これを維持する。その結果、（ａ）初期状態のページは、冗長領域ＲＡに占めるＥＣＣ１の割合がコードブック１１ｃ１の割合よりも小さくなるように構成される。例えば、（ａ）初期状態におけるＥＣＣ１の先頭の位置は、最もＭＳＢ側のページアドレスＰＡ１である。このように、（ａ）初期状態では、余分なＥＣＣ１を軽くする一方で、コードブック１１ｃ１を多くすることで、データ領域ＤＡのデータの消耗を抑えることができる。
【０１２１】
さらに、制御部１５は、書き込み回数ＮＰＸが第３テーブルＴｃの書き込み回数の閾値を超える場合、当該ページの冗長領域ＲＡにおけるＥＣＣおよびコードブック１１ｃの比率（割合）を変更する（図１７のＳ３４）。
【０１２２】
例えば、図１８の（ｃ）の末期状態の場合、ＮＡＮＤメモリ１４のメモリセルには、繰り返しデータが書き込まれているため、より強いエラー訂正が必要となる。従って、コントローラ１０の制御部１５は、例えば、書き込み回数ＮＰＸが第３テーブルＴｃの書き込み回数の閾値ＮＰ２を超える場合、ページの冗長領域ＲＡにおいて付加するＥＣＣの割合を大きくし、コードブック１１ｃの割合を小さくするように変更する。その結果、（ｃ）末期状態のページは、冗長領域ＲＡに占めるＥＣＣ３の割合がコードブック１１ｃ３の割合よりも大きくなるように構成される。例えば、（ｃ）末期状態におけるＥＣＣ３の先頭の位置は、よりＬＳＢ側に近くなり、ページアドレスＰＡ３に位置する。このように、（ｃ）末期状態では、必要なＥＣＣ３を重くする一方で、コードブック１１ｃ３を少なくすることで、データ領域ＤＡのデータの寿命を長期化することができる。
【０１２３】
上記説明したように、第２実施形態によれば、時間の経過（メモリセルの消耗）に合わせて、ＥＣＣおよびコードブック１１ｃの割合を変更する。例えば、初期状態において誤りが少ない場合に、ＥＣＣとして使用する冗長領域ＲＡの一部を、コードブック１１ｃに割り当てる。このことで、過不足なくデータを保護し、ＮＡＮＤメモリ１４のメモリセルの寿命を長期化できる。
【０１２４】
換言すれば、第２実施形態によれば、ＮＡＮＤメモリ１４の消耗の進行やライフステージに合わせて、ＥＣＣおよびコードブック１１ｃの割合を変更することで、初期と末期とでのデータ性能の変動を極めて少なくすることができる。また、第２実施形態は、過剰な傾向がある初期の品質を、末期に持ち越すことができる。
【０１２５】
加えて、第２実施形態では、冗長領域ＲＡのＥＣＣおよびコードブック１１ｃの割合は変更させる一方、データ領域ＤＡのデータ量は変更させない。そのため、１ページＰＳああたりのデータ領域ＤＡのデータ量が変わらず、設計が容易で、製造コストの低減化に対しても有利である。
【０１２６】
（第３実施形態（ホストからの要求に従う一例））
次に、図１９乃至図２０を用い、第３実施形態について説明する。第３実施形態は、ホスト２１からの要求に従い、ＥＣＣおよびコードブックの割合を変更する一例に関する。なお、以下の説明においては、上記第２実施形態と重複する部分の説明については省略する。
【０１２７】
［構成］
構成については、上記第２実施形態と実質的に同様であるため、その詳細な説明を省略する。
【０１２８】
［動作］
［ＥＣＣの比率の変更処理］
次に、第３実施形態に係るＥＣＣの比率の変更処理について説明する。ここでは、図１９に沿って、以下説明する。
【０１２９】
ステップＳ４１において、コントローラ１０は、ホスト２１から、書き込みデータＤｗを書き込むページの状態（品質）に係る拡張的な要求ｅＣＯＭを受信する。ここで、「拡張的な要求ｅＣＯＭ」とは、少なくともメモリシステム３１の種々の状態（例えば、ここでは、データの状態等）をメモリシステム３１に要求するために意図的に送信される信号であって、上記リードコマンド等とは別定義である信号をいう。具体的には、コントローラ１０の制御部１５は、ホスト２１から送信された要求ｅＣＯＭを受信すると、受信した当該要求ｅＣＯＭの内容を解析する。
【０１３０】
ステップＳ４２において、コントローラ１０は、受信した要求ｅＣＯＭに基づき、当該ページの冗長領域ＲＡにおけるＥＣＣの比率を変更する。具体的には、コントローラ１０の制御部１５は、解析した要求ｅＣＯＭの内容に従い、要求ｅＣＯＭに記載されたアドレスのページの冗長領域ＲＡにおけるＥＣＣの比率を同様に変更する。また、ＥＣＣの比率の変更に伴い、コントローラ１０の制御部１５は、当該ページの冗長領域ＲＡにおけるコードブック１１ｃの比率を同様に変更する。
【０１３１】
例えば、図２０に示すように、ホスト２１の要求ｅＣＯＭに従い、コントローラ１０は、（ａ）第１状態から（ｃ）第３状態に示すようなページ構成となるように、冗長領域ＲＡにおけるＥＣＣおよびコードブック１１ｃの割合を変更する。
【０１３２】
具体的には、書き込みデータＤｗがユーザデータＵＤ等の場合には、ホスト２１は、ページ構成が図２０の（ａ）第１状態となるように、コントローラ１０に要求する。ユーザデータＵＤは、短期間に書き換えられるため短寿命が許容される一方、プログラムディスターブを防止する必要がある。そのため、ホスト２１は、図２０の（ａ）第１状態のように、ＥＣＣ１の割合がコードブック１１ｃ１の割合よりも小さくなるように、コントローラ１０に要求する。
【０１３３】
また、管理データＣＤ等の場合には、ホスト２１は、ページ構成が図２０の（ｃ）第３状態となるように、コントローラ１０に要求する。管理データＣＤは、短期間に書き換えられるものでないため長寿命が必要とされる一方、プログラムディスターブを防止する必要性が少ない。そのため、ホスト２１は、図２０の（ｃ）第３状態のように、ＥＣＣ３の割合がコードブック１１ｃ３の割合よりも大きくなるように、コントローラ１０に要求する。
【０１３４】
図１９に戻り、ステップＳ４３において、コントローラ１０は、変更後の当該ページの冗長領域ＲＡにおけるＥＣＣの比率を示すステータス信号ＲｅＳを、ホスト２１に返信する。具体的には、コントローラ１０の制御部１５は、変更後の当該ページの冗長領域ＲＡにおけるＥＣＣおよびコードブック１１ｃの比率を示すステータス信号ＲｅＳを、ホスト２１に返信し、この動作を終了する。なお、ホスト２１は、コントローラ１０から送信されたステータス信号ＲｅＳの内容を解析することで、変更後の当該ページの冗長領域ＲＡにおけるＥＣＣおよびコードブック１１ｃの比率を検知することが可能である。
【０１３５】
その他の動作については、上記第２実施形態と実質的に同様であるため、その詳細な説明を省略する。
【０１３６】
なお、上記拡張的なコマンドｅＣＯＭや拡張的なステータス信号ＲｅＳは、その送信の順序や内容が、第２実施形態に説明したものに限定されることはない。例えば、まずコントローラ１０からホスト２１へ拡張的な所定の信号を送信し、次にホスト２１からコントローラ１０へ拡張的な所定の信号を送信してもよい。
【０１３７】
［作用効果］
以上説明したように、第３実施形態に係る構成および動作によれば、上記第１および第２実施形態と同様の効果が得られ、さらに少なくとも下記（２）の効果が得られる。
【０１３８】
（２）要求に合わせて、過剰な品質を減らし、寿命を適正に制御できる。
【０１３９】
コントローラ１０は、ホスト２１から、書き込みデータＤｗを書き込むページの状態（品質）に係る拡張的な要求ｅＣＯＭを受信する（図１９のＳ４１）。コントローラ１０は、受信した要求ｅＣＯＭに基づき、当該ページの冗長領域ＲＡにおけるＥＣＣおよびコードブック１１ｃの比率を変更する（図１９のＳ４２）。
【０１４０】
具体的には、コントローラ１０の制御部１５は、解析した要求ｅＣＯＭの内容に従い、要求ｅＣＯＭに記載されたアドレスのページの冗長領域ＲＡにおけるＥＣＣの比率を同様に変更する。また、ＥＣＣの比率の変更に伴い、コントローラ１０の制御部１５は、当該ページの冗長領域ＲＡにおけるコードブック１１ｃの比率を同様に変更する。例えば、図２０に示すように、ホスト２１の要求ｅＣＯＭに従い、コントローラ１０は、（ａ）第１状態から（ｃ）第３状態に示すようなページ構成となるように、冗長領域ＲＡにおけるＥＣＣおよびコードブック１１ｃの割合を変更する。
【０１４１】
このように、第３実施形態によれば、ホスト２１等からの要求に合わせて、過剰な品質を減らし、寿命を適正に制御できる。換言すれば、第３実施形態によれば、要求品質に合わせて、ＥＣＣおよびコードブック１１ｃの比率を変更できる。そのため、図２０の（ａ）第１状態のように、データの信頼性への要求が低いまたはメモリ寿命が短くてよい場合には、ＥＣＣの割合を低くし、コードブック１１ｃの割合を高くすることで、データの消耗を抑制する。一方、そうでない場合には、図２０の（ｂ）第２状態や（ｃ）第３状態のように、ＥＣＣの割合を高くし、コードブック１１ｃの割合を低くすればよい。
【０１４２】
なお、第３実施形態では、ホスト２１等からの拡張的な要求ｅＣＯＭにより、コントローラ１０が、ＥＣＣおよびコードブック１１ｃの割合を変更したが、これに限られない。当該変更を要求する主体はホスト２１に限らず、例えば、コントローラ１０自身が、受信した書き込みデータＤｗの種類に基づき、変更してもよい。
【０１４３】
（変形例１）
以上説明した第１乃至第３実施形態は、これに限られず、必要に応じて変形することが可能である。
【０１４４】
例えば、図２１に示すように、コントローラ１０は、ＥＣＣ移動部１３を更に備えてもよい。ＥＣＣ移動部１３を更に備えることで、ＥＣＣおよびコードブック１１ｃの割合を変更できることに加え、図１０に示したように、ＥＣＣおよびコードブック１１ｃのページ内における位置を移動させることができる。そのため、メモリ寿命を更に長期化できる点で有利である。
【０１４５】
また、図２１に示すように、コントローラ１０は、乱数発生回路１３ａを備えてもよい。乱数発生回路１３ａは、ランダムに発生させた所定の乱数ＲＮを、ＥＣＣ移動部１３へ送信する。ＥＣＣ移動部１３は、入力された乱数ＲＮに基づき、ＥＣＣおよびコードブック１１ｃを移動させる。このように、書き込み回数等に限らず、所定の乱数ＲＮに基づき、必要に応じて、ＥＣＣおよびコードブック１１ｃを移動させることが可能となる。
【０１４６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１４７】
１０…コントローラ、１１…エンコーダ、１１ｃ…コードブック、１２…ＥＣＣエンコーダ、１３…ＥＣＣ移動部、１４…ＮＡＮＤメモリ、１５…制御部、２１…ホスト、３１…メモリシステム、Ｔａ…第１テーブル、Ｔｂ…第２テーブル、Ｔｃ…第３テーブル、ＤＡ…データ領域、ＲＡ…冗長領域。
【図１】
0006346123.tif 000002
【図２】
0006346123.tif 000003
【図３】
0006346123.tif 000004
【図４】
0006346123.tif 000005
【図５】
0006346123.tif 000006
【図６】
0006346123.tif 000007
【図７】
0006346123.tif 000008
【図８】
0006346123.tif 000009
【図９Ａ】
0006346123.tif 000010
【図９Ｂ】
0006346123.tif 000011
【図９Ｃ】
0006346123.tif 000012
【図１０】
0006346123.tif 000013
【図１１】
0006346123.tif 000014
【図１２】
0006346123.tif 000015
【図１３】
0006346123.tif 000016
【図１４】
0006346123.tif 000017
【図１５】
0006346123.tif 000018
【図１６】
0006346123.tif 000019
【図１７】
0006346123.tif 000020
【図１８】
0006346123.tif 000021
【図１９】
0006346123.tif 000022
【図２０】
0006346123.tif 000023
【図２１】
0006346123.tif 000024