図面 (/)
概要
背景
不揮発性半導体メモリとしてのNANDフラッシュメモリは、1つのメモリセルに複数の閾値電圧を用いて例えばマルチレベルのデータを記憶することができる。メモリセルに高い閾値電圧が繰り返し書き込まれると、メモリセルのトンネル酸化膜が劣化し、メモリセルの寿命が短くなる。また、ワード線方向、又はビット線方向に隣接して配置された複数のメモリセルの閾値電圧の差が大きい場合、低い閾値電圧を有するメモリセルの閾値電圧が変化し、例えばプログラムディスターブが生じる。
概要
メモリセルの耐久性が向上し、メモリセルの寿命を伸ばすことが可能な不揮発性半導体メモリのコントローラを提供する。nレベル(nは、3以上の自然数)のデータをページ単位に記憶する不揮発性半導体メモリのコントローラは、抽出部11aと、変換部11bを含んでいる。抽出部11aは、不揮発性半導体メモリに書き込まれる複数のデータを含む第1のデータ列から第1のデータ列より短い第2のデータ列を抽出する。変換部11bは、第2のデータ列に含まれる隣接する2つのデータに対応する前記不揮発性半導体メモリの閾値電圧の差が第1のレベル差である場合、第2のデータ列を前記第2のデータ列より長い第3のデータ列に変換する。第3のデータ列は、第1のレベル差より小さな第2のレベル差を有する。
目的
米国特許出願公開第2014/0136927A1号明細書
米国特許第8122323B2号明細書
特開2011−203878号公報
本実施形態は、メモリセルの耐久性が向上し、メモリセルの寿命を伸ばすことが可能な不揮発性半導体メモリのコントローラを提供する
効果
実績
- 技術文献被引用数
- 0件
- 牽制数
- 0件
この技術が所属する分野
(分野番号表示ON)※整理標準化データをもとに当社作成
請求項1
nレベル(nは、3以上の自然数)のデータをページ単位に記憶する不揮発性半導体メモリのコントローラであって、前記不揮発性半導体メモリに書き込まれる複数のデータを含み、前記ページの長さより短い第1の長さを有する第1のデータ列から前記第1のデータ列より短い第2のデータ列を抽出する抽出部と、前記第2のデータ列に含まれる隣接する2つのデータに対応する前記不揮発性半導体メモリの閾値電圧の差が第1のレベル差である場合、前記第2のデータ列を前記第2のデータ列より長く、前記第1のレベル差より小さな第2のレベル差を有する第3のデータ列に変換する変換部と、を具備することを特徴とする不揮発性半導体メモリのコントローラ。
請求項2
請求項3
前記変換部は、前記第2のデータ列を前記第3のデータ列に変換するための変換情報を生成することを特徴とする請求項2記載の不揮発性半導体メモリのコントローラ。
請求項4
前記変換部は、前記変換情報を前記第3のデータ列に付加することを特徴とする請求項3記載の不揮発性半導体メモリのコントローラ。
請求項5
請求項6
前記不揮発性半導体メモリに含まれるブロックのアクセス回数に基づき、前記エラー訂正符号が付加される領域の位置を前記ページ内で移動させる移動部をさらに具備することを特徴とする請求項5記載の不揮発性半導体メモリのコントローラ。
請求項7
前記移動部は、前記変換情報が付加される領域の位置を前記エラー訂正符号が付加される領域の位置と共に前記ページ内で移動させることを特徴とする請求項6記載の不揮発性半導体メモリのコントローラ。
請求項8
請求項9
前記抽出部は、前記第1のデータ列から前記第1のデータ列より短い前記第2のデータ列の数を計数することを特徴とする請求項1記載の不揮発性半導体メモリのコントローラ。
請求項10
前記変換部は、計数された前記数に基づき、前記第2のデータ列を前記第2のデータ列より短い第4のデータ列に変換することを特徴とする請求項9記載の不揮発性半導体メモリのコントローラ。
請求項11
前記第1のレベル差は、前記nレベルと消去レベルとの差であり、前記第2のレベル差は、前記nレベルと前記消去レベルより高いレベルとの差、及びn−1レベルと前記消去レベルとの差の少なくとも一方であることを特徴とする請求項1記載の不揮発性半導体メモリのコントローラ。
請求項12
前記変換部は、前記第2のデータ列を前記第4のデータ列に変換するための変換情報を生成することを特徴とする請求項10記載の不揮発性半導体メモリのコントローラ。
請求項13
前記移動部は、データの読み出し時、前記不揮発性半導体メモリに含まれるブロックのアクセス回数に基づき、前記エラー訂正符号が付加される領域の位置を判別することを特徴とする請求項6記載の不揮発性半導体メモリのコントローラ。
請求項14
請求項15
前記変換部は、前記変換情報に基づき、前記データに含まれる前記第3のデータ列を前記第2のデータ列に変換することを特徴とする請求項12記載の不揮発性半導体メモリのコントローラ。
請求項16
nレベル(nは、3以上の自然数)のデータをページ単位に記憶する不揮発性半導体メモリのコントローラであって、前記不揮発性半導体メモリに書き込まれる複数のデータを含む第1のデータ列から前記第1のデータ列より短い第2のデータ列を抽出する抽出部と、前記第2のデータ列に含まれる隣接する2つのデータに対応する前記不揮発性半導体メモリの閾値電圧の差が第1のレベル差である場合、前記第2のデータ列を前記第2のデータ列より長く、前記第1のレベル差より小さな第2のレベル差を有する第3のデータ列に変換する変換部と、を具備することを特徴とする不揮発性半導体メモリのコントローラ。
技術分野
0001
本発明の実施形態は、不揮発性半導体メモリのコントローラに関する。
背景技術
0002
不揮発性半導体メモリとしてのNANDフラッシュメモリは、1つのメモリセルに複数の閾値電圧を用いて例えばマルチレベルのデータを記憶することができる。メモリセルに高い閾値電圧が繰り返し書き込まれると、メモリセルのトンネル酸化膜が劣化し、メモリセルの寿命が短くなる。また、ワード線方向、又はビット線方向に隣接して配置された複数のメモリセルの閾値電圧の差が大きい場合、低い閾値電圧を有するメモリセルの閾値電圧が変化し、例えばプログラムディスターブが生じる。
先行技術
0003
米国特許出願公開第2014/0136927A1号明細書
米国特許第8122323B2号明細書
特開2011−203878号公報
発明が解決しようとする課題
0004
本実施形態は、メモリセルの耐久性が向上し、メモリセルの寿命を伸ばすことが可能な不揮発性半導体メモリのコントローラを提供する。
課題を解決するための手段
0005
実施形態は、nレベル(nは、3以上の自然数)のデータをページ単位に記憶する不揮発性半導体メモリのコントローラであって、前記不揮発性半導体メモリに書き込まれる複数のデータを含み、前記ページの長さより短い第1の長さを有する第1のデータ列から前記第1のデータ列より短い第2のデータ列を抽出する抽出部と、前記第2のデータ列に含まれる隣接する2つのデータに対応する前記不揮発性半導体メモリの閾値電圧の差が第1のレベル差である場合、前記第2のデータ列を前記第2のデータ列より長く、前記第1のレベル差より小さな第2のレベル差を有する第3のデータ列に変換する変換部と、を具備する。
図面の簡単な説明
0006
本実施形態に係るコントローラの一例を示すものであり、データの書き込み系を概略的に示す構成図。
本実施形態に適用されるページの一例を概略的に示す図。
本実施形態に適用されるNANDフラッシュメモリの一例を概略的に示す図。
NANDフラッシュメモリの閾値電圧の一例を示す図。
NANDフラッシュメモリのプログラムディスターブの一例を示す図。
図1に示すエンコーダの概略的な動作を示す図。
エンコーダの一例を概略的に示す構成図。
エンコーダの動作を概略的に示すフローチャート。
図9(a)は、入力データの一例を示す図、図9(b)は、エンコーダの動作を示す図、図9(c)は、コードブックの一例を示す図。
図1に示すECC移動部の動作を概略的に示す図。
ECC移動部の動作を概略的に示すフローチャート。
本実施形態に係るコントローラの一例を示すものであり、データの読み出し系を概略的に示す構成図。
図12の動作を概略的に示すフローチャート。
本実施形態に係るコントローラが適用されるSSDの一例を示す構成図。
実施例
0007
以下、実施の形態について、図面を参照して説明する。
0008
以下、図面を参照して本実施形態について説明する。図面において、同一部分には同一符号を付している。
0009
図1は、本実施形態に係るNANDフラッシュメモリ(以下、NANDと称す)14を制御するコントローラ10の一例を概略的に示している。図1は、データの書き込み系のみを示している。コントローラ10は、エンコーダ11、error correction code(ECC)エンコーダ12、及びECC移動部13を含んでいる。
0010
エンコーダ11は、NAND14の耐久性、及びプラグラムディスターブを改善するため、入力された書き込みデータDwの変換処理を行う。ECCエンコーダ12は、エンコーダ11から供給されたデータにECCを付加する。ECC移動部13は、データに付加されたECCの位置をページ内で移動させ、ECCに関して所謂ウェアレべリング(wear leveling)を行なう。
0011
NAND14は、例えばマルチレベルメモリであり、2ビット以上のデータにより複数の閾値電圧のうちの1つがメモリセルに記憶される。NAND14は、図示せぬ複数のブロックを含み、各ブロックは、複数のページを含む。本実施形態において、ブロックは、データの消去単位である。ページは、データの書き込み単位であり、書き込みデータ及びECCを含む。
0012
図2は、ページの一例を示している。ページの長さ、及びページ内のデータの長さ(データ長、又はビット長)は一定であり、ECCが付加されるECC領域の長さ(データ長、又はビット長)も一定である。しかし、ページ内のデータ長、及びECC領域のデータ長を管理することにより、データ長、及びECC領域のデータ長を可変とすることも可能である。また、ページ内のデータ領域は、後述するコードブックを含み、コードブックが記録される位置や、ECC領域の位置は、後述するように、変更可能とされている。
0013
図3は、NAND14の構成の一例を概略的に示している。図3に示すように、NAND14は、管理領域14aとデータ領域14bを有している。管理領域14aとデータ領域14bは、それぞれ消去単位としての複数のブロックを有している。データ領域は、例えばユーザデータを記録する領域であり、管理領域14aは、NAND14の各種管理情報を記録する領域である。
0014
管理領域14aは、例えば第1のテーブルTaと、第2のテーブルTbを含んでいる。第1のテーブルTaは、ブロック毎の書き込み回数、及び消去回数を管理する。第1のテーブルTaの内容は、各ブロックが書き込み、又は消去される毎に更新される。第2のデーブルTbは、後述するように、ページ内のECC領域の位置を例えばブロック単位で管理する。
0015
図4は、NAND14の各メモリセルに設定される閾値電圧と書き込みデータの関係を示している。図4に示すように、NAND14は、例えば複数の閾値電圧を用いてマルチレベルのデータを記憶することが可能である。図4は、例えば2ビット、4レベルの閾値電圧の分布を示している。2ビットのデータをメモリセルに記憶する場合、ロワーページのデータと、アッパーページのデータにより“E”“A”“B”“C”の分布を有する閾値電圧が設定される。
0016
以下、閾値電圧の分布“E”“A”“B”“C”を、レベル“E”“A”“B”“C”とも言う。レベル“E”は、消去レベルを示し、レベル“E”“A”“B”“C”は、閾値電圧Vthが“E”“A”“B”“C”の順に高く設定されている。すなわち、これらレベルの関係は、“E”<“A”<“B”<“C”である。
0017
4レベルのうち、例えば最も閾値電圧が高いレベル“C”がメモリセルに頻繁に書き込まれた場合、メモリセルのゲート絶縁膜が劣化し、メモリセルの寿命が短くなる。このため、メモリセルに対するレベル“C”の書き込み回数を低減する必要がある。
0018
また、NAND14は、行方向(例えば図示せぬワード線に沿った方向)に隣接する複数のメモリセルに同時にデータが書き込まれる。図5に示すように、行方向に隣接するビット線BLn−1、BLn、BLn+1に接続される図示せぬ1ページ内の複数のメモリセルに書き込まれるレベルが、例えば“E”“C”“E”のようなパターンである場合、レベル“E”とレベル“C”は、大きなレベル差を有している。このように、レベル“E”に対して大きなレベル差を有するレベル“C”を書き込む際、レベル“E”の閾値電圧が変化し、エラーが発生する。
0019
この現象は、列方向(例えば1つのビット線に沿った方向)に隣接する図示せぬ複数のメモリセルに対して、レベル差の大きなデータを書き込む場合にも発生する。このように、行方向、又は列方向に隣接する複数のメモリセルのレベル差が大きい場合、低いレベル(閾値電圧)が上昇し、所謂プログラムディスターブが発生する。
0020
プログラムディスターブを抑制するため、隣接する複数のメモリセルのレベル差を小さくする必要がある。このため、高い閾値電圧であるレベル“C”の書き込みを抑制する必要がある。
0022
図6において、Dwは、例えば行方向に隣接して配置された複数のメモリセルに書き込まれる複数のデータを含むデータ列の一例を示している。このデータ列Dwは、各メモリセルに書き込まれるデータを、各メモリセルに設定されるレベルとして示している。
0023
図6に示すように、データ列Dwによりメモリセルに設定されるレベルのパターンが、例えば“C”“E”“C”“B”である場合、図1に示すエンコーダ11は、このデータDwからレベル差(閾値電圧の差)が大きなレベルのパターン、例えば“C”“E”を探索する。レベルパターン“C”“E”が見つかった場合、エンコーダ11は、レベルパターン“C”“E”を、レベルパターン“C”“E”のレベル差より小さなレベル差で、例えばデータ列Dw内に出現しないレベルパターンに変換する。換言すると、エンコーダ11は、隣接セル間の干渉が大きい符号を拡張することにより、干渉の小さい符号に置き換える。ここで、符号とは、データを構成する“0”又は“1”のビットの集合により情報を表現する目的で示された記号である。尚、置き換えた符号が他の符号と識別することが可能であれば、データ列Dw内に出現するレベルパターンを用いることも可能である。
0024
図6に示す例の場合、レベルパターン“C”“E”は、例えばレベルパターン“B”“B”“E”に置き換えられる。エンコーダ11は、この探索、及び変換処理をページ内で繰り返す。
0025
変換後のレベルパターン“B”“B”“E”は、元のレベルパターン“C”“E”よりデータ長(ビット長)が長い。このため、エンコーダ11は、探索及び変換処理を繰り返すことにより、変換後のデータ長が予め定められたページ内のデータ長を超えると判断された場合、探索及び変換処理を中止する。このため、変換後のデータ長は、予め定められたページ内のデータ長を超えない。すなわち、変換処理は、予め定められたページ内のデータ長以内で実行される。変換処理を中止したことにより、ページ内の残りのデータ内にレベルパターン“C”“E”が有る場合、このレベルパターン“C”“E”は、変換されずに残る。したがって、本実施形態は、メモリセルの耐久性の劣化、及びプログラムディスターブを若干許容する。
0026
尚、探索及び変換処理は、列方向に配置された複数のメモリセルに書き込まれるデータのパターンに関しても同様に行なうことが可能である。この場合、例えば1ブロック分のデータを保持することが可能な例えばバッファメモリを設け、バッファメモリに保持されたデータについて、列方向に上述した探索を行い、探索結果に基づき、変換処理を行えばよい。
0028
エントロピー解析部11aは、例えばページ単位に入力されたデータDwのビット列から特定のビットパターン毎に、そのビットパターンの出現する確率、又は回数を求める。さらに、エントロピー解析部11aは、求められた例えばビットパターン毎の出現回数を大きい順に並べる。
0030
また、変換部11bは、コードブック11cの変換コードに従って、解析された特定のビットパターンをコードに変換する。さらに、変換部11bは、例えば予め設定されたパラメータPを受ける。このパラメータPは、例えばNAND14の耐久性や特性を改善するためのパラメータであり、例えばレベル差の大きなビットパターンを示すコードである。変換部11bは、前述した変換コードに従って変換されたコード内からパラメータPで示されるコードを探索する。パラメータPで示されるコードが見つかった場合、このコードをレベル差の小さなビットパターンに対応する別のコードに変換する。この変換処理は、後述するように、例えばコードを伸張する伸張処理である。
0031
さらに、変換部11bは、コードブック11cのレベル差の大きなコードをレベル差の小さなビットパターンに対応する別のコードで更新する。このコードブック11cは、データ列の例えば末尾に付加される。
0033
エントロピー解析部11aは、例えばページ単位に入力されたデータ列Dwから特定のビットパターンの出現回数を求める(S1)。ここで、出現回数とは、データ列Dwに含まれる特定のビットパターン毎の数である。
0034
具体的には、図9(a)に示すようなデータ列Dwがある場合、このデータ列Dwから、特定のビットパターン、例えば“0000”“1100”“111”…の出現する回数が、ビットパターン毎に計数される。この計数された出現回数は、多い順に並べられる。
0035
つまり、図9(b)に示すように、“0000”の出現回数がm個、“1100”の出現回数がn個、“111”の出現回数がp個(m>n>p)…のように、特定のビットパターン毎に出現回数が計数される。出現回数m、n、p…は、多い順に並べられる。このように、特定のビットパターンを探索することにより、データ列Dw中に出現しないビットパターンが判明する。
0036
尚、メモリセルに記憶されるデータが2ビット、4レベルにより構成される場合、上述したように、2ページによりデータが構成される。このため、例えば例えば2ページ分のバッファメモリが設けられる。これらバッファメモリ内の2ページのデータ列から特定のビットパターン毎に出現回数が計数され、出現回数が多い順に並べられる。
0037
また、3ビット、8レベル以上のデータについては、3ページ以上のバッファメモリを設け、3ページ以上のデータ列について上記処理が実行される。
0038
変換部11bは、エントロピー解析部11aの解析結果に基づき、ページ毎にビット長を圧縮するための変換コードなどの変換情報を含むコードブック11cを生成し、このコードブック11cに基づき、入力されたデータ列Dwを圧縮処理する(S2)。
0039
図9(c)は、コードブック11cの一例を示している。コードブック11cは、変換情報として、例えばエントロピー解析部11aで求められた特定のビットパターン毎の出現回数、及び又は特定のビットパターンの出現位置、特定のビットパターンに対応して生成された変換コードを含んでいる。コードブック11cの構成は、これに限定されるものではなく、変形可能である。
0040
変換部11bは、コードブック11cの変換コードに基づき、データ列Dwを圧縮する。具体的には、図9(b)に示すように、最も出現回数の多いビットパターン“0000”は、変換コードに基づき、例えばコード“0”に変換され、次に出願回数の多いビットパターン“1100”は、例えばコード“01”に変換され、次に出願回数の多いビットパターン“111”は、例えばコード“10”に変換される。このため、ビットパターン“0000”は、4ビット×mが、1/4mに圧縮され、ビットパターン“1100”は、4ビット×nが、1/2nに圧縮される。ビットパターン“111”は、3ビット×pが、2/3pに圧縮される。
0041
さらに、変換部11bは、パラメータPに基づき、変換後のコード内に、レベル差が最も大きいレベルパターンに対応するコードがあるかどうかを探索する(S3)。この結果、レベル差が最も大きいレベルパターンに対応するコードが見つかった場合、このコードを、レベル差が小さいコードに変換する(S4)。
0042
具体的には、図9(b)に示すように、例えばパラメータPが最もレベル差が大きいレベルパターン“C”“E”に対応するコード“10”を示す場合、変換後のコードからコード“10”が探索される。このコード“10”が見つかった場合、変換後のコード“10”が、レベルパターン“C”“E”より小さいレベル差を有する例えばレベルパターン“B”“B”“E”に対応するコード、例えば“110”に変換される。このコード“110”は、エントロピー解析部11aにおいて、解析されたデータ列Dwに出現しないコードである。このように、閾値電圧のレベル差が最も高いレベルパターン“C”“E”は、レベル差が小さなレベルパターン“B”“B”“E”に変換される。レベルパターン“B”“B”“E”は、レベルパターン“C”“E”より伸張されることとなる。
0043
このレベル差が小さなレベルパターン“B”“B”“E”に対応するコード“110”により、コードブック11cの変換コードとしてのコード“10”が更新される(S5)。
0044
上記変換処理により、変換前のデータ列Dwは、原則として圧縮されるが、閾値電圧のレベル差が最も高いレベルパターンについては、変換後のビット長が、変換前のビット長より長くなる。
0045
変換部11bは、上記探索と、変換処理をデータ列Dwに対して繰り返す(S6−S3)。この処理の途中で、変換されたデータのビット長が、例えば予め設定されたページ内のデータのビット長を超えた場合、変換部11bは、変換処理を中止する。換言すると、変換処理は、予め定められたページ内のデータ長以内で実行される。
0046
この後、生成されたコードブック11cがページ内のデータ列の例えば末尾に付加される(S7)。
0047
尚、メモリセルに記憶されるデータが2ビット、4レベルにより構成される場合、変換部11bは、上記変換動作により、例えば2ページ分のデータを生成し、メモリセルに記憶されるデータが3ビット、8レベル以上により構成される場合、3ページ以上のデータを生成する。
0048
また、変換部11bに供給されるパラメータPは1つに限定されるものではなく、複数のパラメータを設定してもよい。すなわち、上記説明はパラメータPとして最もレベル差が大きいレベルパターン“C”“E”に対応するコード“10”を探索した。しかし、これに加えて、次にレベル差が大きいレベルパターン“C”“A”又は“B”“E”に対応するコードをパラメータとして設定し、このコードを探索してレベル差が小さな別のコードに変換してもよい。
0049
(ECCエンコーダ)
図1に示すECCエンコーダ12は、例えば組織符号を使用してエンコーダ11から供給されたコードブック11cを含むデータ列にエラー訂正用のデータとしてのエラー訂正符号(ECC)を付加する。組織符号としては、例えばハミング符号、BHC符号、リードソロモン符号などがあるが、誤り訂正の最小単位が複数ビットのリードソロモン符号が適用される。しかし、リードソロモン符号に限定されるものではない。組織符号は、データ列とECCが分離されている。したがって、コードブック11cを含むデータ列の内容は変更されないため、上記圧縮又は伸張されたデータ列の状態、及びコードブック11cの内容を保持することができる。
0050
(ECC移動部)
上記ECCエンコーダ12により、組織符号によりデータ列に付加されるECCは、上記変換処理が行われていない。このため、ECCがレベル“C”のデータを含む可能性があり、レベル“C”のデータの出現確率が高いことも考えられる。このため、ページ内でECCが付加される領域(以下、ECC領域と称す)の位置がページに対して固定されている場合、ECC領域のメモリセルは、頻繁にレベル“C”のデータが書き込まれることとなる。したがって、ECC領域のメモリセルは、データが書き込まれるメモリセルより、劣化する可能性が高い。
0052
図3に示すように、NAND14の各ブロックは、ブロック毎に書き込み回数や消去回数が第1のテーブルTaにより管理されている。ECC移動部13は、例えば書き込み対象のブロックの書き込み回数が基準値を超えた場合、ページ内のECC領域の位置を変更する。
0053
すなわち、図10に示すように、ECC領域は、最初、ページ内の例えばMSB(most significant bit)近傍に設けられる。書き込み対象のブロックの書き込み回数が基準値を超える毎に、ページ内のECC領域の位置は、例えばMSBからLSB(least significant bit)方向に移動される。
0054
具体的には、ECC移動部13は、例えばシフトレジスタにより構成され、シフトレジスタ内のデータが、ブロックの書き込み回数に基づき、MSBからLSB方向にサーキュラシフトされる。すなわち、シフト動作に従ってLSB側から出力されたデータは、MSB側に入力される。このようにして、ページ内のECC領域の位置が変化される。ECC領域の移動方向、及び移動位置は、これに限定されるものではなく、ページ内のECC領域の位置が変化すればよい。
0055
図11は、ECC移動部13の動作の一例を示している。ECC移動部13は、データの書き込み時、第1のテーブルTaに記録された書き込み対象のブロックの書き込み回数と基準値とを比較する(S11)。この比較の結果、書き込み回数が基準値を超えている場合、ECC領域がページ内で移動される(S12)。この後、NAND14の第2のテーブルTbが新たなECC領域の位置情報により更新される(S13)。すなわち、第2のテーブルTbの書き込み対象ブロックに対応するECC領域の位置情報が更新される。一方、ステップS11の比較の結果、書き込み回数が基準値以下である場合、ECC領域の位置は移動されない。この後、ページ内のECC領域の位置が制御されたデータは、NAND14に書き込まれる(S14)。
0056
このように、ブロックの書き込み回数が基準値を超える毎にページ内のECC領域の位置を移動させることにより、ECC領域内のメモリセルの劣化を防止することができ、メモリセルの寿命を延ばすことが可能である。
0057
図10は、ECC領域と一緒にページ内のコードブック11cも移動される場合を示している。コードブック11cは、上述したように、レベルパターン“C”“E”をレベルパターン“B”“B”“Eに変換するための変換コードを含むため、レベル“C”のデータを含んでいる。このため、ECC領域と同様に、コードブック11cが付加される領域(以下、コードブック領域と言う)をページ内の同じ位置に繰り返し書き込むと、メモリセルが劣化する。したがって、図10に示すように、ECC領域と共にコードブック領域を移動することにより、メモリセルの劣化を防止することができる。
0058
尚、コードブック領域はECC領域と共に移動されるため、コードブック領域のページ内の位置は、ECC領域の位置から相対的に判別することが可能である。
0059
また、上記説明は、NAND14内の管理領域に記録されたブロック毎の書き込み回数に従って、ECC領域の位置を移動させた。しかし、これに限定されるものではなく、例えば、ブロックの消去回数に基づきECC領域及びコードブック領域の位置を変更しても同様の効果を得ることが可能である。
0062
NAND14から読み出された例えば1ページのデータは、ECC移動部13に供給される。ECC移動部13は、図3に示す第2のテーブルTbに記録されたブロック毎のECC領域の位置情報に基づき、ページ内のECC領域の位置を判別する(S21)。ECC移動部13は、判別結果に基づきECC領域を、例えば図2に示す位置に戻してもよい。
0064
デコーダ11dは、ページ内のデータに付加されたコードブック11cに基づき、ページ内のデータを逆変換し、圧縮されたデータ、又は伸張されたデータを基のデータに戻すことにより、書き込みデータを再現する(S23)。すなわち、変換部11bは、コードブック11cに従って、圧縮又は伸張されたデータ列を元のデータ列に変換する。これにより、レベル差が小さいレベルパターンに置き換えられたデータ列は、大きなレベル差のレベルパターンを有する元のビットパターンに変換される。また、特定のビットパターン毎の出現回数に基づき圧縮されたデータは、元のビットパターンに変換され、元の出現位置に復帰される。このようにして、元のデータ列が再現される。
0065
(SSDの構成)
図14は、本実施形態が適用されるSSD31の一例を示している。
0067
フロントエンド(ホスト通信部)32Fは、ホストインタフェース33、ホストインタフェースコントローラ34、暗号化/復号化部(AES (Advanced Encryption Standard))35、及びCPU36を備える。
0069
ホストインタフェースコントローラ34は、CPU36の制御に基づき、ホストインタフェース33の通信を制御する。
0070
AES35は、データの書き込み動作において、ホストインタフェースコントローラ34から供給される書き込みデータを暗号化し、バックエンド32BのライトバッファWBに供給する。AES35は、データ読み出し動作において、バックエンド32BのリードバッファRBから送信される暗号化された読み出しデータを復号化する。なお、AES35を介さずに、書き込みデータ及び読み出しデータを送信することも、必要に応じて可能である。
0071
CPU36は、フロントエンド32Fのホストインタフェース33、ホストインタフェースコントローラ34、AES35を制御し、フロントエンド32Fの全体の動作を制御する。
0072
バックエンド32Bは、ライトバッファWB、リードバッファRB、LUT(Lookup table)41、DDRC(Double data Rate Controller)42、DRAM(Dynamic Random Access Memory)43、DMAC(Direct Memory Access Controller)44、CPU45、前述したエンコーダ11/デコーダ11d、ECCエンコーダ12/ECCデコーダ12a、ECC移動部13、及びNANDC(NAND controller)49を備える。
0073
ライトバッファWBは、ホスト21から送信された書き込みデータを一時的に格納する。具体的には、ライトバッファWBは、当該書き込みデータがNAND15に適した所定のデータサイズになるまで、一時的にデータを格納する。
0074
リードバッファRBは、NAND15から読み出された読み出しデータを一時的に格納する。具体的には、リードバッファRBにおいて、読み出しデータは、ホスト21に適した順序(ホスト21が指定した論理ブロックアドレス(LBA)の順序)になるように並び替えられる。
0075
LUT41は、論理ブロックアドレス(LBA)を物理ブロックアドレス(PBA)に変換するためのデータである。
0076
DDRC42は、DRAM43におけるDDR(Double Data Rate)を制御する。
0077
DRAM43は、例えば、LUT41を格納する不揮発性のメモリである。
0080
データの書き込み時、エンコーダ11は、ライトバッファWBから供給されるデータ列のエントロピーを上述したように解析し、隣接するメモリセルに書き込まれるレベル差が低減されるように、コードブック11cに基づきデータ列をエンコードする。ECCエンコーダ12は、エンコーダ11から供給されるコードブック11cを含むデータ列に、組織符号を用いてECCを付加する。ECC移動部13は、書き込み対象のブロックの例えば書き込み回数に基づき、ページ内のECC領域、及びコードブック領域の位置を移動する。ECC移動部13から出力された1ページ分のデータは、NAMDC49に供給され、NANDC49により、NAND14に書き込まれる。
0081
データ読み出し時、NAND14から読み出された1ページ分のデータは、NAMDC49を介してECC移動部13に供給される。ECC移動部13は、第2のテーブルTbに記録されたECC領域の位置情報に基づき、1ページ内のECC領域の位置を判別する。ECCデコーダ12aは、判別されたECC領域内のECCに基づき、データのエラー訂正処理を行う。デコーダ11dは、ECCデコーダ12aから供給されるデータをコードブック11cに基づきデコードする。このデコータ11dにより再現されたデータ列は、リードバッファRBに供給される。
0082
図14において、1つのDMAC44が図示されているが、コントローラ32は、2以上のDMAC44を含んでもよい。DMAC44は、必要に応じて、コントローラ32内の様々な位置に設定することが可能である。
0084
尚、図14に示したコントローラ32の構成は例示であり、この構成に限定されるものではない。
0086
(実施形態の効果)
上記実施形態によれば、入力データDwに含まれる閾値電圧の差が大きなデータパターンが閾値電圧の差が小さなデータパターンに変換される。このため、プログラムディスターブを抑制することが可能である。しかも、閾値電圧の高いデータが減少するため、メモリセルの耐久性が向上し、メモリセルの寿命を伸ばすことが可能である。
0087
また、プログラムディスターブが抑制されるため、読出しエラーを低減することができる。このため、高度なECCを用いる必要がなく、ECCのエンコード、及びデコードに要する時間を削減することができる。
0088
さらに、ページ内のECC領域、及びコードブック領域の位置は、ブロックの書き込み回数や消去回数に基づき移動される。このため、ECC領域、及びコードブック領域の位置が固定されている場合に比べてメモリセルの耐久性を向上させることができる。
0089
その他、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
0090
11…エンコーダ、11a…エントロピー解析部、11b…変換部、11c…コードブック、11d…デコーダ、12…ECCエンコーダ、12a…ECCデコーダ、13…ECC移動部、14…NANDフラッシュメモリ。