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