JP2016218897A - コントローラ、制御方法 - Google Patents

コントローラ、制御方法 Download PDF

Info

Publication number
JP2016218897A
JP2016218897A JP2015105487A JP2015105487A JP2016218897A JP 2016218897 A JP2016218897 A JP 2016218897A JP 2015105487 A JP2015105487 A JP 2015105487A JP 2015105487 A JP2015105487 A JP 2015105487A JP 2016218897 A JP2016218897 A JP 2016218897A
Authority
JP
Japan
Prior art keywords
data
data string
page
ecc
error correction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015105487A
Other languages
English (en)
Other versions
JP6346123B2 (ja
Inventor
菅野 伸一
Shinichi Sugano
伸一 菅野
浩典 内川
Hironori Uchikawa
浩典 内川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2015105487A priority Critical patent/JP6346123B2/ja
Priority to US14/833,246 priority patent/US9594627B2/en
Publication of JP2016218897A publication Critical patent/JP2016218897A/ja
Application granted granted Critical
Publication of JP6346123B2 publication Critical patent/JP6346123B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • G11C7/1012Data reordering during input/output, e.g. crossbars, layers of multiplexers, shifting or rotating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Abstract

【課題】不揮発性メモリの長寿命化に有利なコントローラおよび制御方法を提供する。
【解決手段】実施形態によれば、nレベル(nは、3以上の自然数)のデータをページ単位で記憶する不揮発性メモリ14のコントローラ10は、前記ページのデータ長よりも短い第1データ長を有する第1データ列から前記第1データ列よりもデータ長が短い第2データ列を抽出する抽出部11aと、前記第2データ列に含まれる隣接する2つのデータに対応する前記不揮発性メモリの閾値電圧の差が第1レベル差である場合、前記第2データ列を、前記第2データ列より長く前記第1レベル差より小さな第2レベル差を有する第3データ列に変換する変換部11bと、前記第3データ列に付加するエラー訂正符号の割合を制御する制御部15と、前記制御部による制御に基づき、エラー訂正符号を生成するエラー訂正符号エンコーダ部12と、を具備する。
【選択図】図15

Description

実施形態は、コントローラおよび制御方法に関する。
不揮発性半導体メモリとしてのNAND型フラッシュメモリは、1つのメモリセルに複数の閾値電圧を用いて例えばマルチレベルのデータを記憶することができる。メモリセルに高い閾値電圧が繰り返し書き込まれると、メモリセルのトンネル酸化膜が劣化し、メモリセルの寿命が短くなる。また、ワード線方向、又はビット線方向に隣接して配置された複数のメモリセルの閾値電圧の差が大きい場合、低い閾値電圧を有するメモリセルの閾値電圧が変化し、例えばプログラムディスターブが生じる。
米国特許第8799559号明細書 B2
不揮発性メモリの長寿命化に有利なコントローラおよび制御方法を提供する。
実施形態によれば、nレベル(nは、3以上の自然数)のデータをページ単位で記憶する不揮発性メモリのコントローラであって、前記コントローラは、前記ページのデータ長よりも短い第1データ長を有する第1データ列から、前記第1データ列よりもデータ長が短い第2データ列を抽出する抽出部と、前記第2データ列に含まれる隣接する2つのデータに対応する前記不揮発性メモリの閾値電圧の差が第1レベル差である場合、前記第2データ列を、前記第2データ列より長く前記第1レベル差より小さな第2レベル差を有する第3データ列に変換する変換部と、前記第3データ列に付加するエラー訂正符号の割合を制御する制御部と、前記制御部による制御に基づき、エラー訂正符号を生成するエラー訂正符号エンコーダ部と、を具備する。
第1実施形態に係るコントローラの一例を示すものであり、データの書き込み系を概略的に示す構成図。 第1実施形態に適用されるページの一例を概略的に示す図。 第1実施形態に適用されるNAND型フラッシュメモリの一例を概略的に示す図。 NAND型フラッシュメモリの閾値電圧の一例を示す図。 NAND型フラッシュメモリのプログラムディスターブの一例を示す図。 図1に示すエンコーダの概略的な動作を示す図。 エンコーダの一例を概略的に示す構成図。 エンコーダの動作を概略的に示すフローチャート。 入力データの一例を示す図。 エンコーダの動作を示す図。 コードブックの一例を示す図。 図1に示すECC移動部の動作を概略的に示す図。 ECC移動部の動作を概略的に示すフローチャート。 第1実施形態に係るコントローラの一例を示すものであり、データの読み出し系を概略的に示す構成図。 図12の動作を概略的に示すフローチャート。 第1実施形態に係るコントローラが適用されるSSDの一例を示す構成図。 第2実施形態に係るコントローラの一例を示すものであり、データの書き込み系を概略的に示す構成図。 図15の第3テーブルの一例を示す図。 第2実施形態に係るECCの比率の変換処理を示すフローチャート。 第2実施形態に係るページ構成の一例を示す図。 第3実施形態に係るECCの比率の変換処理を示すフローチャート。 第3実施形態に係るページ構成の一例を示す図。 変形例1に係るコントローラの一例を示すものであり、データの書き込み系を概略的に示す構成図。
以下、図面を参照して、発明の実施形態について説明する。この説明においては、全図にわたり共通の部分には共通の参照符号を付す。
なお、以下の説明において、実質的に同一の機能及び要素については、同一符号を付し、必要に応じて説明を行う。また、本明細書では、いくつかの要素に複数の表現の例を付している。これら表現の例はあくまで例示であり、上記要素が他の表現で表現されることを否定するものではない。また、複数の表現が付されていない要素についても、別の表現で表現されてもよい。
(第1実施形態)
まず、以下の図面を参照して、第1実施形態について説明する。図面において、同一部分には同一符号を付している。
図1は、第1実施形態に係るNAND型フラッシュメモリ(以下、NANDメモリと称す)14を制御するコントローラ10の一例を概略的に示している。図1は、データの書き込み系のみを示している。コントローラ10は、エンコーダ11、error correction code(ECC)エンコーダ12、及びECC移動部13を含んでいる。
エンコーダ11は、NANDメモリ14の耐久性、及びプログラムディスターブを改善するため、入力された書き込みデータDwの変換処理を行う。ECCエンコーダ12は、エンコーダ11から供給されたデータにECCを付加する。なお、一般にECCとはエラー訂正のための符号化方式そのものを指すが、本実施形態ではエラー訂正のために付加する冗長データをECCと呼ぶ。ECC移動部13は、データに付加されたECCの位置をページ内で移動させ、書き込み毎にECCがNANDメモリ14上で異なる位置に記録されるよう平滑化を行なう。
NANDメモリ14は、例えばマルチレベルメモリであり、2ビット以上のデータにより複数の閾値電圧のうちの1つがメモリセルに記憶される。NANDメモリ14は、図示せぬ複数のブロックを含み、各ブロックは、複数のページを含む。第1実施形態において、ブロックは、データの消去単位である。ページは、データの書き込み単位であり、書き込みデータ及びECCを含む。
図2は、ページの一例を示している。図2に示すページは、書き込みデータDw等が配置されるデータ領域DAと、コードブックおよびECCが配置される冗長領域RAとにより構成される。ページ全体の長さ、及びページ内のデータの長さ(データサイズ、又はビット長)は一定である。しかし、後述するように、ページ内のデータ長、及びECC領域のデータ長を管理することにより、データ長、及びECC領域のデータ長を可変とすることも可能である。なお、図2に示すページ構成は一例である。例えば、データ領域DAに、コードブックを含んでもよい。また、ページの先頭に、コマンド等を配置するヘッダ領域等を設けてもよい。
図3は、NANDメモリ14の構成の一例を概略的に示している。図3に示すように、NANDメモリ14は、管理領域14aとデータ領域14bを有している。
管理領域14aとデータ領域14bは、それぞれ消去単位としての複数のブロックを有している。管理領域14aは、NANDメモリ14の各種管理データCD1を記録する。データ領域14bは、例えば音楽データ等のユーザデータUDを記録する。
管理領域14aは、例えば第1テーブルTaと、第2テーブルTbを含んでいる。第1テーブルTaは、ブロック毎の書き込み回数、及び消去回数を管理する。第1テーブルTaの内容は、各ブロックが書き込み、又は消去される毎に更新される。第2デーブルTbは、後述するように、ページ内のECC領域の位置を例えばブロック単位で管理する。
図4は、NANDメモリ14の各メモリセルに設定される閾値電圧と書き込みデータの関係を示している。図4に示すように、NANDメモリ14は、例えば複数の閾値電圧を用いてマルチレベルのデータを記憶することが可能である。図4は、例えば2ビット、4レベルの閾値電圧の分布を示している。2ビットのデータをメモリセルに記憶する場合、ロワーページのデータと、アッパーページのデータにより“E”“A”“B”“C”の分布を有する閾値電圧が設定される。
以下、閾値電圧の分布“E”“A”“B”“C”を、レベル“E”“A”“B”“C”とも言う。レベル“E”は、消去レベルを示し、レベル“E”“A”“B”“C”は、閾値電圧Vthが“E”“A”“B”“C”の順に高く設定されている。すなわち、これらレベルの関係は、“E”<“A”<“B”<“C”である。ここで、「レベル差(閾値電圧の分布の差)」とは、少なくとも各レベル(各閾値電圧の分布)の相違が、例えばセンスアンプ等により、認識可能な程度に存在していればよい。そのため、レベル差とは、例えばあるレベルの一部が他のレベルの一部と重複している場合等の各レベルが分離していない場合も含まれ得る。
4レベルのうち、例えば最も閾値電圧が高いレベル“C”がメモリセルに頻繁に書き込まれた場合、メモリセルのゲート絶縁膜が劣化し、メモリセルの寿命が短くなる。このため、メモリセルに対するレベル“C”の書き込み回数を低減する必要がある。
また、NANDメモリ14は、行方向(例えば図示せぬワード線に沿った方向)に隣接する複数のメモリセルに同時にデータが書き込まれる。図5に示すように、行方向に隣接する複数のメモリセルに書き込まれるレベルが、例えば“E”“C”“E”のようなパターンである場合、レベル“E”とレベル“C”は、大きなレベル差を有している。このように、レベル“E”に対して大きなレベル差を有する“レベル“C”を書き込む際、レベル“E”の閾値電圧が変化し、エラーが発生する。
この現象は、列方向(例えば図示せぬビット線に沿った方向)に隣接する複数のメモリセルに対して、レベル差の大きなデータを書き込む場合にも発生する。このように、行方向、又は列方向に隣接する複数のメモリセルのレベル差が大きい場合、低いレベル(閾値電圧)が上昇し、所謂プログラムディスターブが発生する。
プログラムディスターブを抑制するため、隣接する複数のメモリセルのレベル差を小さくする必要がある。このため、高い閾値電圧であるレベル“C”の書き込みを抑制する必要がある。
[エンコーダ]
図6は、図1に示すエンコーダ11の概略的な動作を示している。
図6において、Dwは、例えば行方向に隣接して配置された複数のメモリセルに書き込まれる複数のデータを含むデータ列の一例を示している。このデータ列Dwは、各メモリセルに書き込まれるデータを、各メモリセルに設定されるレベルとして示している。
図6に示すように、データ列Dwによりメモリセルに設定されるレベルのパターンが、例えば“C”“E”“C”“B”である場合、図1に示すエンコーダ11は、このデータDwからレベル差(閾値電圧の差)が大きなレベルのパターン、例えば“C”“E”を探索する。レベルパターン“C”“E”が見つかった場合、エンコーダ11は、レベルパターン“C”“E”を、レベルパターン“C”“E”のレベル差より小さなレベル差で、例えばデータ列Dw内に出現しないレベルパターンに変換する。換言すると、エンコーダ11は、隣接セル間の干渉が大きい符号を伸長することにより、干渉の小さい符号に置き換える。ここで、符号とは、データを構成する“0”又は“1”のビットの集合により情報を表現する目的で示された記号である。尚、置き換えた符号が他の符号と識別することが可能であれば、データ列Dw内に出現するレベルパターンを用いることも可能である。
図6に示す例の場合、レベルパターン“C”“E”は、例えばレベルパターン“B”“B”“E”に置き換えられる。エンコーダ11は、この探索、及び変換処理をページ内で繰り返す。
変換後のレベルパターン“B”“B”“E”は、元のレベルパターン“C”“E”よりデータ長(ビット長)が長い。このため、エンコーダ11は、探索及び変換処理を繰り返すことにより、変換後のデータ長が予め定められたページ内のデータ長を超えると判断された場合、探索及び変換処理を中止する。このため、変換後のデータ長は、予め定められたページ内のデータ長を超えない。すなわち、変換処理は、予め定められたページ内のデータ長以内で実行される。変換処理を中止したことにより、ページ内の残りのデータ内にレベルパターン“C”“E”が有る場合、このレベルパターン“C”“E”は、変換されずに残る。したがって、第1実施形態は、メモリセルの耐久性の劣化、及びプログラムディスターブを若干許容する。
尚、探索及び変換処理は、列方向に配置された複数のメモリセルに書き込まれるデータのパターンに関しても同様に行なうことが可能である。この場合、例えば1ブロック分のデータを保持することが可能な例えばバッファメモリを設け、バッファメモリに保持されたデータについて、列方向に上述した探索を行い、探索結果に基づき、変換処理を行えばよい。
図7は、エンコーダ11の一例を示している。図7に示すように、エンコーダ11は、エントロピー解析部11aと、変換部11bを含んでいる。
エントロピー解析部11aは、例えばページ単位に入力されたデータDwのビット列から特定のビットパターン毎に、そのビットパターンの出現する確立、又は回数を求める。さらに、エントロピー解析部11aは、求められた例えばビットパターン毎の出現回数を大きい順に並べる。
変換部11bは、エントロピー解析部11aの解析結果に基づき、各ビットパターンを圧縮するための変換コードを含むコードブック11cを生成する。
また、変換部11bは、コードブック11cの変換コードに従って、解析された特定のビットパターンをコードに変換する。さらに、変換部11bは、例えば予め設定されたパラメータPを受ける。このパラメータPは、例えばNANDメモリ14の耐久性や特性を改善するためのパラメータであり、例えばレベル差の大きなビットパターンを示すコードである。変換部11bは、前述した変換コードに従って変換されたコード内からパラメータPで示されるコードを探索し、パラメータPで示されるコードが見つかった場合、このコードをレベル差の小さなビットパターン対応する別のコードに変換する。この変換処理は、後述するように、例えばコードを伸張する伸張処理である。
さらに、変換部11bは、コードブック11cのレベル差の大きなコードをレベル差の小さなビットパターン対応する別のコードで更新する。このコードブック11cは、データ列の例えば末尾に付加される。
図8、図9A、9B、9Cは、エンコーダ11の動作の一例を示している。図8、図9A、9B、9Cを参照して、エンコーダ11の動作についてさらに説明する。
エントロピー解析部11aは、例えばページ単位に入力されたデータ列Dwから特定のビットパターンの出現回数を求める(S1)。ここで、出現回数とは、データ列Dwに含まれる特定のビットパターン毎の数である。
具体的には、図9Aに示すようなデータ列Dwがある場合、このデータ列Dwから、特定のビットパターン、例えば“0000”“1100”“111”…の出現する回数が、ビットパターン毎に計数される。この計数された出現回数は、多い順に並べられる。
つまり、図9Bに示すように、“0000”の出現回数がm個、“1100”の出現回数がn個、“111”の出現回数がp個(m>n>p)…のように、特定のビットパターン毎に出現回数が計数され、出現回数の多い順に並べられる。このように、特定のビットパターンを探索することにより、データ列Dw中に出現しないビットパターンが判明する。
尚、メモリセルに記憶されるデータが2ビット、4レベルにより構成される場合、上述したように、2ページによりデータが構成される。このため、例えば例えば2ページ分のバッファメモリを設け、このバッファメモリ内の2ページのデータ列から特定のビットパターン毎に出現回数が計数され、出現回数が多い順に並べられる。
また、3ビット、8レベル以上のデータについては、3ページ以上のバッファメモリを設け、3ページ以上のデータ列について上記処理が実行される。
変換部11bは、エントロピー解析部11aの解析結果に基づき、ページ毎にビット長を圧縮するための変換コードなどの変換情報を含むコードブック11cを生成し、このコードブック11cに基づき、入力されたデータ列Dwを圧縮処理する(S2)。
図9Cは、コードブック11cの一例を示している。コードブック11cは、変換情報として、例えばエントロピー解析部11aで求められた特定のビットパターン毎の出現回数、及び又は特定のビットパターンの出現位置、特定のビットパターンに対応して生成された変換コードを含んでいる。コードブック11cの構成は、これに限定されるものではなく、変形可能である。
変換部11bは、コードブック11cの変換コードに基づき、データ列Dwを圧縮する。具体的には、図9Bに示すように、最も出現回数の多いビットパターン“0000”は、変換コードに基づき、例えばコード“0”に変換され、次に出願回数の多いビットパターン“1100”は、例えばコード“01”に変換され、次に出願回数の多いビットパターン“111”は、例えばコード“10”に変換される。このため、ビットパターン“0000”は、4ビット×mが、1/4mに圧縮され、ビットパターン“1100”は、4ビット×nが、1/2nに圧縮される。ビットパターン“111”は、3ビット×pが、2/3pに圧縮される。
さらに、変換部11bは、パラメータPに基づき、変換後のコード内に、レベル差が最も大きいレベルパターンに対応するコードがあるかどうか探索する(S3)。この結果、レベル差が最も大きいレベルパターンに対応するコードが見つかった場合、このコードを、レベル差が小さいコードに変換する(S4)。
具体的には、図9Bに示すように、例えばパラメータPが最もレベル差が大きいレベルパターン“C”“E”に対応するコード“10”を示す場合、変換後のコードからコード“10”が探索される。このコード“10”が見つかった場合、変換後のコード“10”が、レベルパターン“C”“E”より小さいレベル差を有する例えばレベルパターン“B”“B”“E”に対応するコード、例えば“110”に変換される。このコード“110”は、エントロピー解析部11aにおいて、解析されたデータ列Dwに出現しないコードである。このように、閾値電圧のレベル差が最も高いレベルパターン“C”“E”は、レベル差が小さなレベルパターン“B”“B”“E”に変換されることにより、レベルパターンが伸張されることとなる。
このレベル差が小さなレベルパターン“B”“B”“E”に対応するコード“110”により、コードブック11cの変換コードとしてのコード“10”が更新される(S5)。
上記変換処理により、変換前のデータ列Dwは、原則として圧縮されるが、閾値電圧のレベル差が最も高いレベルパターンについては、変換後のビット長が、変換前のビット長より長くなる。
変換部11bは、上記探索と、変換処理をデータ列Dwに対して繰り返す(S6−S3)。この処理の途中で、変換されたデータのビット長が、例えば予め設定されたページ内のデータのビット長を超えた場合、変換部11bは、変換処理を中止する。換言すると、変換処理は、予め定められたページ内のデータ長以内で実行される。
この後、生成されたコードブック11cがページ内のデータ列の例えば末尾に付加される(S7)。
尚、メモリセルに記憶されるデータが2ビット、4レベルにより構成される場合、変換部11bは、上記変換動作により、例えば2ページ分のデータを生成し、メモリセルに記憶されるデータが3ビット、8レベル以上により構成される場合、3ページ以上のデータを生成する。
また、変換部11bに供給されるパラメータPは1つに限定されるものではなく、複数のパラメータを設定してもよい。すなわち、上記説明はパラメータPとして最もレベル差が大きいレベルパターン“C”“E”に対応するコード“10”を探索した。しかし、これに加えて、次にレベル差が大きいレベルパターン“C”“A”又は“B”“E”に対応するコードをパラメータとして設定し、このコードを探索してレベル差が小さな別のコードに変換してもよい。
[ECCエンコーダ]
図1に示すECCエンコーダ12は、例えば組織符号を使用してエンコーダ11から供給されたコードブック11cを含むデータ列にエラー訂正用のデータとしてのエラー訂正符号(ECC)を付加する。組織符号としては、例えばハミング符号、BHC符号、リードソロモン符号などがあるが、誤り訂正の最小単位が複数ビットのリードソロモン符号が適用される。しかし、リードソロモン符号に限定されるものではない。組織符号は、データ列とECCが分離されている。したがって、コードブック11cを含むデータ列の内容は変更されないため、上記圧縮又は伸張されたデータ列の状態、及びコードブック11cの内容を保持することができる。
[ECC移動部]
上記ECCエンコーダ12により、組織符号によりデータ列に付加されるECCは、上記変換処理が行われていない。このため、ECCがレベル“C”のデータを含む可能性があり、レベル“C”のデータの出現確率が高いことも考えられる。このため、ページ内でECCが付加される領域(以下、ECC領域と称す)の位置がページに対して固定されている場合、ECC領域のメモリセルは、頻繁にレベル“C”のデータが書き込まれることとなる。したがって、ECC領域のメモリセルは、データが書き込まれるメモリセルより、劣化される可能性が高い。
図1に示すECC移動部13は、ページ内のECC領域の位置を例えばブロックのアクセス回数、具体的には、ブロックに対する例えば書き込み回数及び/又は消去回数に基づき移動する。
図3に示すように、NANDメモリ14の各ブロックは、ブロック毎に書き込み回数や消去回数が第1テーブルTaにより管理されている。ECC移動部13は、例えば書き込み対象のブロックの書き込み回数が基準値を超えた場合、ページ内のECC領域の位置を変更する。
すなわち、図10に示すように、ECC領域は、最初、ページ内の例えばmost significant bit(MSB)近傍に設けられる。書き込み対象のブロックの書き込み回数が基準値を超える毎に、ページ内のECC領域の位置は、例えばMSBからleast significant bit(LSB)方向に移動される。
具体的には、ECC移動部13は、例えばシフトレジスタにより構成され、シフトレジスタ内のデータが、ブロックの書き込み回数に基づき、MSBからLSB方向にサーキュラシフトされる。すなわち、シフト動作に従ってLSB側から出力されたデータは、MSB側に入力される。このようにして、ページ内のECC領域の位置が変化される。ECC領域の移動方向、及び移動位置は、これに限定されるものではなく、ページ内のECC領域の位置が変化すればよい。
図11は、ECC移動部13の動作の一例を示している。ECC移動部13は、データの書き込み時、第1テーブルTaに記録された書き込み対象のブロックの書き込み回数と基準値とを比較する(S11)。この比較の結果、書き込み回数が基準値を超えている場合、ECC領域がページ内で移動される(S12)。この後、NANDメモリ14の第2テーブルTbが新たなECC領域の位置情報により更新される(S13)。すなわち、第2テーブルTbの書き込み対象ブロックに対応するECC領域の位置情報が更新される。一方、ステップS11の比較の結果、書き込み回数が基準値以下である場合、ECC領域の位置は移動されない。この後、ページ内のECC領域の位置が制御されたデータは、NANDメモリ14に書き込まれる(S14)。
このように、ブロックの書き込み回数が基準値を超える毎にページ内のECC領域の位置を移動させることにより、ECC領域内のメモリセルの劣化を防止することができ、メモリセルの寿命を延ばすことが可能である。
図10は、ECC領域と一緒にページ内のコードブック11cも移動される場合を示している。コードブック11cは、上述したように、レベルパターン“C”“E”をレベルパターン“B”“B”“Eに変換するための変換コードを含むため、レベル“C”のデータを含んでいる。このため、ECC領域と同様に、コードブック11cが付加される領域(以下、コードブック領域と言う)をページ内の同じ位置に繰り返し書き込むと、メモリセルが劣化する。したがって、図10に示すように、ECC領域と共にコードブック領域を移動することにより、メモリセルの劣化を防止することができる。
尚、コードブック領域はECC領域と共に移動されるため、コードブック領域のページ内の位置は、ECC領域の位置から相対的に判別することが可能である。
また、上記説明は、NANDメモリ14内の管理領域に記録されたブロック毎の書き込み回数に従って、ECC領域の位置を移動させた。しかし、これに限定されるものではなく、例えば、ブロックの消去回数に基づきECC領域及びコードブック領域の位置を変更しても同様の効果を得ることが可能である。
[データの読み出し]
次に、データの読み出し動作について説明する。データの読み出し動作は、上記データの書き込み動作と逆の処理が実行される。
図12は、データの読み出し系の構成を概略的に示し、図13はデータの読み出し系の動作を示している。図12、図13を参照して、データの読み出し動作について説明する。
NANDメモリ14から読み出された例えば1ページのデータは、ECC移動部13に供給される。ECC移動部13は、図3に示す第2テーブルTbに記録されたブロック毎のECC領域の位置情報に基づき、ページ内のECC領域の位置を判別する(S21)。ECC移動部13は、判別結果に基づきECC領域を、例えば図2に示す位置に戻してもよい。
ECCデコーダ12aは、判別されたECC領域のECCに基づき、データ列にエラーが有る場合、エラー訂正処理を行う。
デコーダ11dは、ページ内のデータに付加されたコードブック11cに基づき、ページ内のデータを逆変換し、圧縮されたデータ、又は伸張されたデータを基のデータに戻すことにより、書き込みデータを再現する(S23)。すなわち、変換部11bは、コードブック11cに従って、圧縮又は伸張されたデータ列を元のデータ列に変換することにより、レベル差が小さいレベルパターンに置き換えられたデータ列は、大きなレベル差のレベルパターンを有する元のビットパターンに変換される。また、特定のビットパターン毎の出現回数に基づき圧縮されたデータは、元のビットパターンに変換され、元の出現位置に復帰される。このようにして、元のデータ列が再現される。
[SSDの構成]
図14は、第1実施形態が適用されるSSD(メモリシステム)31の一例を示している。
SSD31において、コントローラ32は、フロントエンド32Fと、バックエンド32Bとを備える。
フロントエンド(ホスト通信部)32Fは、ホストインタフェース33、ホストインタフェースコントローラ34、暗号化/復号化部(Advanced Encryption Standard (AES))35、及びCPU36を備える。
ホストインタフェース33は、ホスト21との間で、各種の要求、LBA、及びデータなどを通信する。要求としては、例えば書き込みコマンド、読み出しコマンド、消去コマンドなどがある。
ホストインタフェースコントローラ34は、CPU36の制御に基づき、ホストインタフェース33の通信を制御する。
AES35は、データの書き込み動作において、ホストインタフェースコントローラ34から供給される書き込みデータを暗号化し、バックエンド32Bの書き込みバッファWBに供給する。AES35は、データ読み出し動作において、バックエンド32BのリードバッファRBから送信される暗号化された読み出しデータを復号化する。なお、AES35を介さずに、書き込みデータ及び読み出しデータを送信することも、必要に応じて可能である。
CPU36は、フロントエンド32Fのホストインタフェース33、ホストインタフェースコントローラ34、AES35を制御し、フロントエンド32Fの全体の動作を制御する。
バックエンド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/デコーダ11a、ECCエンコーダ12/ECCデコーダ12a、ECC移動部13、及びNANDC(NAND controller)49を備える。
ライトバッファWBは、情報処理装置2から送信された書き込みデータを一時的に格納する。具体的には、ライトバッファWBは、当該書き込みデータがNANDメモリ14に適した所定のデータサイズになるまで、一時的にデータを格納する。
リードバッファRBは、NANDメモリ14から読み出された読み出しデータを一時的に格納する。具体的には、リードバッファRBにおいて、読み出しデータは、情報処理装置2に適した順序(情報処理装置2が指定した論理ブロックアドレス(LBA)の順序)になるように並び替えられる。
LUT41は、論理ブロックアドレス(LBA)を物理ブロックアドレス(PBA)に変換するためのデータである。
DDRC42は、DRAM43におけるDDR(Double Data Rate)を制御する。
DRAM43は、例えば、LUT41を格納する不揮発性のメモリである。
DMAC44は、内部バスIBを介して、書き込みデータや読み出しデータなどを転送する。
CPU45は、バックエンド32Bの上記各構成(41〜42、11、11a、12、12a、13、49)を制御し、バクエンド32Bの全体の動作を制御する。
データの書き込み時、エンコーダ11は、ライトバッファWBから供給されるデータ列のエントロピーを上述したように解析し、隣接するメモリセルに書き込まれるレベル差が低減されるように、コードブック11cに基づきデータ列をエンコードする。ECCエンコーダ12は、エンコーダ11から供給されるコードブック11cを含むデータ列に、組織符号を用いてECCを付加する。ECC移動部13は、書き込み対象のブロックの例えば書き込み回数に基づき、ページ内のECC領域、及びコードブック領域の位置を移動する。ECC移動部13から出力された1ページ分のデータは、NAMDC49に供給され、NANDC49により、NANDメモリ14に書き込まれる。
データ読み出し時、NANDメモリ14から読み出された1ページ分のデータは、NAMDC49を介してECC移動部13に供給される。ECC移動部13は、第2テーブルTbに記録されたECC領域の位置情報に基づき、1ページ内のECC領域の位置を判別する。ECCデコーダ12aは、判別されたECC領域内のECCに基づき、データのエラー訂正処理を行う。デコーダ11aは、ECCデコーダ12aから供給されるデータをコードブック11cに基づきデコードする。このデコータ11aにより再現されたデータ列は、リードバッファRBに供給される。
図14において、1つのDMAC44が図示されているが、コントローラ4は、2以上のDMAC44を含んでもよい。DMAC44は、必要に応じて、コントローラ32内の様々な位置に設定することが可能である。
NANDメモリC49は、所定の速度の要求を満たすため、複数のチャンネル(ここでは、4つのチャンネルCH0〜CH3)を用いて、並列にNANDメモリ14にアクセスする。
尚、図14に示したコントローラ32の構成は例示であり、この構成に限定されるものではない。
また、SSD31は、デザインルールの異なるNANDメモリや、平面型のNANDメモリや立体型のNANDメモリのように異なるタイプのNANDメモリが適用可能とされている。
[第1実施形態の効果]
上記第1実施形態によれば、入力データDwに含まれる閾値電圧の差が大きなデータパターンが閾値電圧の差が小さなデータパターンに変換される。このため、プログラムディスターブを抑制することが可能である。しかも、閾値電圧の高いデータが減少するため、メモリセルの耐久性が向上し、メモリセルの寿命を伸ばすことが可能である。
また、プログラムディスターブが抑制されるため、読出しエラーを低減することができる。このため、高度なECCを用いる必要がなく、ECCのエンコード、及びデコードに要する時間を削減することができる。
さらに、ページ内のECC領域、及びコードブック領域の位置は、ブロックの書き込み回数や消去回数に基づき移動される。このため、ECC領域、及びコードブック領域の位置が固定されている場合に比べてメモリセルの耐久性を向上させることができる。
(第2実施形態)
次に、図15乃至図18を用い、第2実施形態について説明する。なお、以下の説明においては、上記第1実施形態と重複する部分の説明については省略する。
[構成]
[コントローラの構成]
図15を用い、第2実施形態に係るコントローラ10について説明する。図15に示すように、第2実施形態に係るコントローラ10は、第1実施形態と比較して、第3テーブルTcおよび制御部15を更に備え、ECC移動部13を備えていない。
第3テーブルTcは、少なくとも、ページの書き込み回数と、付加されるエラー訂正符号(ECC)とが対応して示される。第3テーブルTcの詳細については、後述する。
制御部15は、制御信号CSをエンコーダ11およびECCエンコーダ12に送信し、ページにおけるコードブック11cおよびエラー訂正符号を付加する比率(割合)を制御する。具体的には、制御部15は、NANDメモリ14の所定のページに書き込みデータDwを書き込む際に、第3テーブルTcを参照する。さらに、制御部15は、当該ページの書き込み回数NPXのフィードバックを受け、フィードバックされた書き込み回数NPXと参照した第3テーブルTcの書き込み回数とを比較した結果に基づき、制御信号CS1〜CS3を生成する。この制御部15の動作の詳細については後述する。
なお、制御部15は、例えば上記図14で示したCPU45等に対応する。また、書き込み回数NPXは、例えば上記図14で示したNANDC49等により制御線IBを介して、制御部15にフィードバックされてもよい。さらに、制御部15にフィードバックされる情報は、書き込み回数NPXに限らず、例えばページ毎の読み出し回数やブロック毎の消去回数等のNANDメモリ14へのアクセス回数であればよい。
上記構成により、ECCエンコーダ(エラー訂正部)14は、制御部15による制御信号CS1〜CS3に基づき、第3データ列を含む書き込みデータDwに、エラー訂正符号(ECC)を付加する。
なお、エラー訂正符号が付加された書き込みデータDwは、例えばNANDC49等により、ページ単位でNANDメモリ14に同様に書き込まれる。
[第3テーブルTcの構成]
図16を用い、第2実施形態に係る第3テーブルTcの構成について説明する。図16に示すように、第3テーブルTcは、ページの書き込み回数と、付加されるECCおよびコードブックとが対応付けて示される。
例えば、第3テーブルTcには、書き込み回数である1回〜1000回(NP1)と、ECC1およびコードブック11c1とが対応付けて示される。ここでは、1000回であるNP1が、書き込み回数の第1閾値として示される。例えば、第3テーブルTcには、書き込み回数である1001回〜10000回(NP2)と、ECC2およびコードブック11c2とが対応付けて示される。10000回であるNP2が、書き込み回数の第2閾値として示される。例えば、第3テーブルTcには、書き込み回数である10001回〜100000回(NP3)と、ECC3およびコードブック11c3とが対応付けて示される。
第3テーブルTcでは、書き込み回数に比例して、冗長領域RAおけるECCの割合は大きくなるように示される(ECC1<ECC2<ECC3)。換言すると、第3テーブルTcでは、書き込み回数に比例して、冗長領域RAにおけるECCのデータサイズは大きい。これに対して、第3テーブルTcでは、ECCの強さの変更に伴い、書き込み回数に比例して、冗長領域RAにおけるコードブック11cの割合は小さい(11c1>11c2>11c3)。例えば、コードブック11cの冗長領域RAに占める割合は、冗長領域RA全体からECCが占める割合を減算した残りとなる。
なお、第3テーブルTcの構成は一例であり、図16に示したものに限られない。例えば、書き込み回数に限らず、ページ毎の読み出し回数や消去回数でもよい。また、書き込み回数がコントローラ10内の所定のメモリに格納されている場合等には、書き込み回数は不要である。さらに、テーブル形式に限らず、例えば、所定の数式や関数等であってもよい。
その他の構成に関しては、上記第1実施形態と実質的に同様であるため、その詳細な説明を省略する。
[動作]
[ECCの比率の変更処理]
次に、上記構成において、第2実施形態に係るECCの比率の変更処理について説明する。ここでは、図17に沿って、以下説明する。
ステップS31において、コントローラ10は、書き込みデータDwを書き込むページの書き込み回数NPXのフィードバックを受ける。具体的には、コントローラ10の制御部15は、書き込みデータDwを書き込むページアドレスのページの書き込み回数NPXについて、例えば上記NANDC49等からフィードバックを受ける。
ステップS32において、コントローラ10は、第3テーブルTcを参照する。具体的には、コントローラ10の制御部15は、第3テーブルTcを参照し、フィードバックを受けた書き込み回数NPXが、第3テーブルTcのどの書き込み回数に対応するかを確認する。
ステップS33において、コントローラ10は、書き込み回数NPXが、参照した第3テーブルTcの書き込み回数の閾値(NP1またはNP2)を超えるか否かを判定する。
ステップS34において、コントローラ10は、書き込み回数NPXが参照した第3テーブルTcの書き込み回数の閾値を超える場合(ステップS33でYes)、当該ページの冗長領域RAにおけるECCの比率(割合)を変更する。
例えば、ステップS34において、コントローラ10の制御部15は、書き込み回数NPXが第3テーブルTcの書き込み回数の閾値NP1を超える場合、ページの冗長領域RAにおいて付加するECCの割合が大きくなるように、即ち、ECC1からECC2へ変更する。このECCの割合の変更に伴い、制御部15は、ページの冗長領域RAにおいて付加するコードブック11cの比率が小さくなるように、即ち、11c1から11c2となるように変更する。そのため、制御部15は、ECCおよびコードブック11cの変更に伴い、制御信号をCS1からCS2へ切り替える。
なお、制御信号CS2を受信したエンコーダ11は、制御信号CS2に従い、小さく変更したコードブック11c2を書き込みデータDwに付加する。同様に、制御信号CS2を受信したECCエンコーダ12は、制御信号CS2に従い、大きく変更したECC2を、コードブック11c2および書き込みデータDwを含むデータ列に付加する。コードブック11c2、ECC2、および書き込みデータDwを含むデータ列は、NANDメモリ14の所定のページに書き込まれる。
例えば、ステップS34において、コントローラ10の制御部15は、書き込み回数NPXが第3テーブルTcの書き込み回数の閾値NP2を超える場合、ページの冗長領域RAにおいて付加するECCの割合が大きくなるように、即ち、ECC2からECC3へ変更する。このECCの割合の変更に伴い、制御部15は、ページの冗長領域RAにおいて付加するコードブック11cの比率が小さくなるように、即ち、11c2から11c3となるように変更する。そのため、制御部15は、ECCおよびコードブック11cの変更に伴い、制御信号をCS2からCS3へ切り替える。
なお、制御信号CS3を受信したエンコーダ11は、制御信号CS3に従い、小さく変更したコードブック11c3を書き込みデータDwに付加する。同様に、制御信号CS2を受信したECCエンコーダ12は、制御信号CS3に従い、大きく変更したECC3を、コードブック11c3および書き込みデータDwを含むデータ列に付加する。コードブック11c3、ECC3、および書き込みデータDwを含むデータ列は、NANDメモリ14の所定のページに書き込まれる。
ステップS35において、コントローラ10は、書き込み回数NPXが参照した第3テーブルTcの書き込み回数の閾値以下の場合(ステップS33でNo)、当該ページの冗長領域RAにおけるECCの比率を変更しない。
例えば、ステップS35において、コントローラ10の制御部15は、書き込み回数NPXが第3テーブルTcの書き込み回数の閾値NP1以下の場合、ページの冗長領域RAにおいて付加するECCの割合およびコードブック11cの割合を変更せず、これを維持する。そのため、この場合、制御部15は、ECCおよびコードブック11cの変更しないため、制御信号を切り替えることなく、CS1をエンコーダ11およびECCエンコーダ12に送信する。
その他の動作に関しては、上記第1実施形態と実質的に同様であるため、その詳細な説明を省略する。
[作用効果]
以上説明したように、第2実施形態に係る構成および動作によれば、上記第1実施形態と同様の効果が得られ、さらに少なくとも下記(1)の効果が得られる。
(1)過不足なくデータを保護し、NANDメモリ14を長寿命化できる。
ここで、時間があまり経過していない初期(例えば、製品の出荷当初)では、NANDメモリ14のメモリセルは、まだ書き込みがされていない。そのため、エラー訂正はほとんど必要なく、付加するECCもほとんど必要ない。一方、時間が経過すると、繰り返しデータがメモリセルに書き込まれることで、NANDメモリ14のメモリセルのトンネル酸化膜が劣化する。そのため、より強いエラー訂正が必要となり、より大きなサイズのエラー訂正符号ECCを付加する必要がある。
そこで、第2実施形態に係るコントローラ10は、ページにおけるエラー訂正符号ECCおよびコードブック11cを付加する割合を制御する制御部14を備える(図15)。
上記構成において、コントローラ10の制御部15は、フィードバックされた書き込み回数NPXが、第3テーブルTcの書き込み回数の閾値(NP1またはNP2)を超えるか否かを判定する(図17のS33)。書き込み回数NPXが第3テーブルTcの書き込み回数の閾値以下の場合、制御部15は、当該ページの冗長領域RAにおけるECCおよびコードブック11cの比率(割合)を変更しない(図17のS35)。
例えば、図18の(a)初期状態の場合、NANDメモリ14のメモリセルは、まだ書き込みがされていない。そのため、エラー訂正はほとんど必要なく、付加するECCもほとんど必要ない。従って、コントローラ10の制御部15は、例えば、書き込み回数NPXが第3テーブルTcの書き込み回数の閾値NP1以下の場合、ページの冗長領域RAにおいて付加するECCの割合およびコードブック11cの割合を変更せず、これを維持する。その結果、(a)初期状態のページは、冗長領域RAに占めるECC1の割合がコードブック11c1の割合よりも小さくなるように構成される。例えば、(a)初期状態におけるECC1の先頭の位置は、最もMSB側のページアドレスPA1である。このように、(a)初期状態では、余分なECC1を軽くする一方で、コードブック11c1を多くすることで、データ領域DAのデータの消耗を抑えることができる。
さらに、制御部15は、書き込み回数NPXが第3テーブルTcの書き込み回数の閾値を超える場合、当該ページの冗長領域RAにおけるECCおよびコードブック11cの比率(割合)を変更する(図17のS34)。
例えば、図18の(c)の末期状態の場合、NANDメモリ14のメモリセルには、繰り返しデータが書き込まれているため、より強いエラー訂正が必要となる。従って、コントローラ10の制御部15は、例えば、書き込み回数NPXが第3テーブルTcの書き込み回数の閾値NP2を超える場合、ページの冗長領域RAにおいて付加するECCの割合を大きくし、コードブック11cの割合を小さくするように変更する。その結果、(c)末期状態のページは、冗長領域RAに占めるECC3の割合がコードブック11c3の割合よりも大きくなるように構成される。例えば、(c)末期状態におけるECC3の先頭の位置は、よりLSB側に近くなり、ページアドレスPA3に位置する。このように、(c)末期状態では、必要なECC3を重くする一方で、コードブック11c3を少なくすることで、データ領域DAのデータの寿命を長期化することができる。
上記説明したように、第2実施形態によれば、時間の経過(メモリセルの消耗)に合わせて、ECCおよびコードブック11cの割合を変更する。例えば、初期状態において誤りが少ない場合に、ECCとして使用する冗長領域RAの一部を、コードブック11cに割り当てる。このことで、過不足なくデータを保護し、NANDメモリ14のメモリセルの寿命を長期化できる。
換言すれば、第2実施形態によれば、NANDメモリ14の消耗の進行やライフステージに合わせて、ECCおよびコードブック11cの割合を変更することで、初期と末期とでのデータ性能の変動を極めて少なくすることができる。また、第2実施形態は、過剰な傾向がある初期の品質を、末期に持ち越すことができる。
加えて、第2実施形態では、冗長領域RAのECCおよびコードブック11cの割合は変更させる一方、データ領域DAのデータ量は変更させない。そのため、1ページPSああたりのデータ領域DAのデータ量が変わらず、設計が容易で、製造コストの低減化に対しても有利である。
(第3実施形態(ホストからの要求に従う一例))
次に、図19乃至図20を用い、第3実施形態について説明する。第3実施形態は、ホスト21からの要求に従い、ECCおよびコードブックの割合を変更する一例に関する。なお、以下の説明においては、上記第2実施形態と重複する部分の説明については省略する。
[構成]
構成については、上記第2実施形態と実質的に同様であるため、その詳細な説明を省略する。
[動作]
[ECCの比率の変更処理]
次に、第3実施形態に係るECCの比率の変更処理について説明する。ここでは、図19に沿って、以下説明する。
ステップS41において、コントローラ10は、ホスト21から、書き込みデータDwを書き込むページの状態(品質)に係る拡張的な要求eCOMを受信する。ここで、「拡張的な要求eCOM」とは、少なくともメモリシステム31の種々の状態(例えば、ここでは、データの状態等)をメモリシステム31に要求するために意図的に送信される信号であって、上記リードコマンド等とは別定義である信号をいう。具体的には、コントローラ10の制御部15は、ホスト21から送信された要求eCOMを受信すると、受信した当該要求eCOMの内容を解析する。
ステップS42において、コントローラ10は、受信した要求eCOMに基づき、当該ページの冗長領域RAにおけるECCの比率を変更する。具体的には、コントローラ10の制御部15は、解析した要求eCOMの内容に従い、要求eCOMに記載されたアドレスのページの冗長領域RAにおけるECCの比率を同様に変更する。また、ECCの比率の変更に伴い、コントローラ10の制御部15は、当該ページの冗長領域RAにおけるコードブック11cの比率を同様に変更する。
例えば、図20に示すように、ホスト21の要求eCOMに従い、コントローラ10は、(a)第1状態から(c)第3状態に示すようなページ構成となるように、冗長領域RAにおけるECCおよびコードブック11cの割合を変更する。
具体的には、書き込みデータDwがユーザデータUD等の場合には、ホスト21は、ページ構成が図20の(a)第1状態となるように、コントローラ10に要求する。ユーザデータUDは、短期間に書き換えられるため短寿命が許容される一方、プログラムディスターブを防止する必要がある。そのため、ホスト21は、図20の(a)第1状態のように、ECC1の割合がコードブック11c1の割合よりも小さくなるように、コントローラ10に要求する。
また、管理データCD等の場合には、ホスト21は、ページ構成が図20の(c)第3状態となるように、コントローラ10に要求する。管理データCDは、短期間に書き換えられるものでないため長寿命が必要とされる一方、プログラムディスターブを防止する必要性が少ない。そのため、ホスト21は、図20の(c)第3状態のように、ECC3の割合がコードブック11c3の割合よりも大きくなるように、コントローラ10に要求する。
図19に戻り、ステップS43において、コントローラ10は、変更後の当該ページの冗長領域RAにおけるECCの比率を示すステータス信号ReSを、ホスト21に返信する。具体的には、コントローラ10の制御部15は、変更後の当該ページの冗長領域RAにおけるECCおよびコードブック11cの比率を示すステータス信号ReSを、ホスト21に返信し、この動作を終了する。なお、ホスト21は、コントローラ10から送信されたステータス信号ReSの内容を解析することで、変更後の当該ページの冗長領域RAにおけるECCおよびコードブック11cの比率を検知することが可能である。
その他の動作については、上記第2実施形態と実質的に同様であるため、その詳細な説明を省略する。
なお、上記拡張的なコマンドeCOMや拡張的なステータス信号ReSは、その送信の順序や内容が、第2実施形態に説明したものに限定されることはない。例えば、まずコントローラ10からホスト21へ拡張的な所定の信号を送信し、次にホスト21からコントローラ10へ拡張的な所定の信号を送信してもよい。
[作用効果]
以上説明したように、第3実施形態に係る構成および動作によれば、上記第1および第2実施形態と同様の効果が得られ、さらに少なくとも下記(2)の効果が得られる。
(2)要求に合わせて、過剰な品質を減らし、寿命を適正に制御できる。
コントローラ10は、ホスト21から、書き込みデータDwを書き込むページの状態(品質)に係る拡張的な要求eCOMを受信する(図19のS41)。コントローラ10は、受信した要求eCOMに基づき、当該ページの冗長領域RAにおけるECCおよびコードブック11cの比率を変更する(図19のS42)。
具体的には、コントローラ10の制御部15は、解析した要求eCOMの内容に従い、要求eCOMに記載されたアドレスのページの冗長領域RAにおけるECCの比率を同様に変更する。また、ECCの比率の変更に伴い、コントローラ10の制御部15は、当該ページの冗長領域RAにおけるコードブック11cの比率を同様に変更する。例えば、図20に示すように、ホスト21の要求eCOMに従い、コントローラ10は、(a)第1状態から(c)第3状態に示すようなページ構成となるように、冗長領域RAにおけるECCおよびコードブック11cの割合を変更する。
このように、第3実施形態によれば、ホスト21等からの要求に合わせて、過剰な品質を減らし、寿命を適正に制御できる。換言すれば、第3実施形態によれば、要求品質に合わせて、ECCおよびコードブック11cの比率を変更できる。そのため、図20の(a)第1状態のように、データの信頼性への要求が低いまたはメモリ寿命が短くてよい場合には、ECCの割合を低くし、コードブック11cの割合を高くすることで、データの消耗を抑制する。一方、そうでない場合には、図20の(b)第2状態や(c)第3状態のように、ECCの割合を高くし、コードブック11cの割合を低くすればよい。
なお、第3実施形態では、ホスト21等からの拡張的な要求eCOMにより、コントローラ10が、ECCおよびコードブック11cの割合を変更したが、これに限られない。当該変更を要求する主体はホスト21に限らず、例えば、コントローラ10自身が、受信した書き込みデータDwの種類に基づき、変更してもよい。
(変形例1)
以上説明した第1乃至第3実施形態は、これに限られず、必要に応じて変形することが可能である。
例えば、図21に示すように、コントローラ10は、ECC移動部13を更に備えてもよい。ECC移動部13を更に備えることで、ECCおよびコードブック11cの割合を変更できることに加え、図10に示したように、ECCおよびコードブック11cのページ内における位置を移動させることができる。そのため、メモリ寿命を更に長期化できる点で有利である。
また、図21に示すように、コントローラ10は、乱数発生回路13aを備えてもよい。乱数発生回路13aは、ランダムに発生させた所定の乱数RNを、ECC移動部13へ送信する。ECC移動部13は、入力された乱数RNに基づき、ECCおよびコードブック11cを移動させる。このように、書き込み回数等に限らず、所定の乱数RNに基づき、必要に応じて、ECCおよびコードブック11cを移動させることが可能となる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
10…コントローラ、11…エンコーダ、11c…コードブック、12…ECCエンコーダ、13…ECC移動部、14…NANDメモリ、15…制御部、21…ホスト、31…メモリシステム、Ta…第1テーブル、Tb…第2テーブル、Tc…第3テーブル、DA…データ領域、RA…冗長領域。

Claims (11)

  1. nレベル(nは、3以上の自然数)のデータをページ単位で記憶する不揮発性メモリのコントローラであって、前記コントローラは、
    前記ページのデータ長よりも短い第1データ長を有する第1データ列から、前記第1データ列よりもデータ長が短い第2データ列を抽出する抽出部と、
    前記第2データ列に含まれる隣接する2つのデータに対応する前記不揮発性メモリの閾値電圧の差が第1レベル差である場合、前記第2データ列を、前記第2データ列より長く前記第1レベル差より小さな第2レベル差を有する第3データ列に変換する変換部と、
    前記第3データ列に付加するエラー訂正符号の割合を制御する制御部と、
    前記制御部による制御に基づき、エラー訂正符号を生成するエラー訂正符号エンコーダ部と、を具備する。
  2. 前記変換部は、前記第2データ列を前記第3データ列に変換するための変換情報を生成し、
    前記制御部は、前記第3データ列に付加する前記変換情報の割合を更に制御する
    請求項1に記載のコントローラ。
  3. 前記制御部は、前記不揮発性メモリのアクセス回数に基づいて、前記第3データ列に付加する前記エラー訂正符号および前記変換情報の割合を制御する
    請求項2に記載のコントローラ。
  4. 前記不揮発性メモリのアクセス回数と、付加されるエラー訂正符号と、が対応して示されるテーブルを更に具備する
    請求項1乃至3のいずれかに記載のコントローラ。
  5. 前記制御部は、前記テーブルを参照し、フィードバックされるアクセス回数が前記テーブルに示されるアクセス回数の閾値を超える場合、前記ページに付加する前記エラー訂正符号および前記変換情報の割合を変更する
    請求項4に記載のコントローラ。
  6. 前記アクセス回数は、ページの書き込み回数、ページの読み出し回数、および消去回数のいずれか1つを含む
    請求項3乃至5のいずれかに記載のコントローラ。
  7. 前記制御部は、前記第3データ列が配置される領域以外の領域である前記ページの冗長領域において、前記エラー訂正符号および前記変換情報の割合を制御する
    請求項2乃至6のいずれかに記載のコントローラ。
  8. 前記制御部は、外部からの要求に基づき、前記エラー訂正符号および前記変換情報の割合を制御する
    請求項2乃至7のいずれかに記載のコントローラ。
  9. 前記制御部の制御に基づき、前記エラー訂正符号が付加される領域の位置を前記ページ内で移動させる移動部を更に具備する
    請求項1乃至8のいずれかに記載のコントローラ。
  10. nレベル(nは、3以上の自然数)のデータをページ単位で記憶する不揮発性メモリの制御方法であって、
    前記ページのデータ長よりも短い第1データ長を有する第1データ列から、前記第1データ列よりもデータ長が短い第2データ列を抽出し、
    前記第2データ列に含まれる隣接する2つのデータに対応する前記不揮発性メモリの閾値電圧の差が第1レベル差である場合、前記第2データ列を、前記第2データ列より長く前記第1レベル差より小さな第2レベル差を有する第3データ列に変換し、
    前記第3データ列に付加するエラー訂正符号の割合を制御し、
    前記制御に基づき、エラー訂正符号を生成する。
  11. 不揮発性メモリにページ単位でデータを記憶するコントローラであって、前記コントローラは、
    前記ページのデータ長よりも短い第1データ列から、前記第1データ列よりも短い第2データ列を抽出し、
    前記第2データ列に含まれる2つのデータに対応する前記不揮発性メモリの閾値電圧の差を参照し、前記第2データ列を、前記第2データ列より長い第3データ列に変換し、
    前記第3データ列に付加するエラー訂正符号の割合を制御する。
JP2015105487A 2015-05-25 2015-05-25 コントローラ、制御方法 Active JP6346123B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015105487A JP6346123B2 (ja) 2015-05-25 2015-05-25 コントローラ、制御方法
US14/833,246 US9594627B2 (en) 2015-05-25 2015-08-24 Controller and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015105487A JP6346123B2 (ja) 2015-05-25 2015-05-25 コントローラ、制御方法

Publications (2)

Publication Number Publication Date
JP2016218897A true JP2016218897A (ja) 2016-12-22
JP6346123B2 JP6346123B2 (ja) 2018-06-20

Family

ID=57398762

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015105487A Active JP6346123B2 (ja) 2015-05-25 2015-05-25 コントローラ、制御方法

Country Status (2)

Country Link
US (1) US9594627B2 (ja)
JP (1) JP6346123B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021506024A (ja) * 2017-12-12 2021-02-18 ホアウェイ・テクノロジーズ・カンパニー・リミテッド ストレージクラスメモリシステムのウェアレベリングスキーム及び実装

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10007573B2 (en) * 2015-04-27 2018-06-26 Invensas Corporation Preferred state encoding in non-volatile memories
US10236909B2 (en) * 2017-03-31 2019-03-19 Sandisk Technologies Llc Bit-order modification for different memory areas of a storage device
US10230395B2 (en) * 2017-03-31 2019-03-12 Sandisk Technologies Llc Determining codebooks for different memory areas of a storage device
US10355712B2 (en) * 2017-03-31 2019-07-16 Sandisk Technologies Llc Use of multiple codebooks for programming data in different memory areas of a storage device
US10853168B2 (en) 2018-03-28 2020-12-01 Samsung Electronics Co., Ltd. Apparatus to insert error-correcting coding (ECC) information as data within dynamic random access memory (DRAM)
JP2022147380A (ja) 2021-03-23 2022-10-06 キオクシア株式会社 メモリコントローラおよびメモリシステム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009134799A (ja) * 2007-11-29 2009-06-18 Toshiba Corp メモリシステム
JP2010262640A (ja) * 2009-04-30 2010-11-18 Internatl Business Mach Corp <Ibm> 不揮発性メモリの適応型エンデュランス・コーディング方法及びシステム
JP2014529827A (ja) * 2011-08-31 2014-11-13 マイクロン テクノロジー,インク. メモリエンデュランスのために動作させる装置および方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4564520B2 (ja) 2007-08-31 2010-10-20 株式会社東芝 半導体記憶装置およびその制御方法
US7639532B2 (en) * 2007-10-10 2009-12-29 Micron Technology, Inc. Non-equal threshold voltage ranges in MLC NAND
US8560918B1 (en) 2009-04-21 2013-10-15 Marvell International Ltd. Method and apparatus for dynamically selecting an error correction code to be applied to data in a communication system
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
JP4660632B2 (ja) 2010-07-29 2011-03-30 株式会社東芝 半導体記憶装置
US8799559B2 (en) * 2011-10-24 2014-08-05 Sandisk Technologies Inc. Endurance enhancement coding of compressible data in flash memories

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009134799A (ja) * 2007-11-29 2009-06-18 Toshiba Corp メモリシステム
JP2010262640A (ja) * 2009-04-30 2010-11-18 Internatl Business Mach Corp <Ibm> 不揮発性メモリの適応型エンデュランス・コーディング方法及びシステム
JP2014529827A (ja) * 2011-08-31 2014-11-13 マイクロン テクノロジー,インク. メモリエンデュランスのために動作させる装置および方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021506024A (ja) * 2017-12-12 2021-02-18 ホアウェイ・テクノロジーズ・カンパニー・リミテッド ストレージクラスメモリシステムのウェアレベリングスキーム及び実装

Also Published As

Publication number Publication date
JP6346123B2 (ja) 2018-06-20
US20160350177A1 (en) 2016-12-01
US9594627B2 (en) 2017-03-14

Similar Documents

Publication Publication Date Title
JP6346123B2 (ja) コントローラ、制御方法
JP6606039B2 (ja) メモリシステムおよび制御方法
US11683053B2 (en) Memory controller, memory system, and memory control method
US9201785B2 (en) Data writing method, memory controller and memory storage apparatus
US20180276114A1 (en) Memory controller
TWI783017B (zh) 記憶體系統及其操作方法
US9582224B2 (en) Memory control circuit unit, memory storage apparatus and data accessing method
US20160070507A1 (en) Memory system and method of controlling memory device
US20210407612A1 (en) Two-Layer Code with Low Parity Cost for Memory Sub-Systems
US8634243B2 (en) Data writing method and data storage device
US9865338B2 (en) Memory system and method of controlling nonvolatile memory by converting write data written to a page
US11675714B2 (en) Memory sub-system including an in package sequencer separate from a controller
US11567817B2 (en) Providing bandwidth expansion for a memory sub-system including a sequencer separate from a controller
US10289334B2 (en) Valid data merging method, memory controller and memory storage apparatus
US9396063B2 (en) Storage device and operating method thereof
JP6437428B2 (ja) 不揮発性半導体メモリのコントローラ
US11372719B1 (en) Memory system
US11734190B2 (en) Generating codewords with diverse physical addresses for 3DXP memory devices
US20230101310A1 (en) Early detection of compression status using inline metadata
US11854603B2 (en) Logical to encoded value table in data storage device
US10963178B2 (en) Repetitive data processing method for solid state drive

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20170531

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180418

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180424

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180524

R150 Certificate of patent or registration of utility model

Ref document number: 6346123

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350