JP2014052978A - 不揮発性半導体メモリの制御方法及びメモリシステム - Google Patents
不揮発性半導体メモリの制御方法及びメモリシステム Download PDFInfo
- Publication number
- JP2014052978A JP2014052978A JP2012198816A JP2012198816A JP2014052978A JP 2014052978 A JP2014052978 A JP 2014052978A JP 2012198816 A JP2012198816 A JP 2012198816A JP 2012198816 A JP2012198816 A JP 2012198816A JP 2014052978 A JP2014052978 A JP 2014052978A
- Authority
- JP
- Japan
- Prior art keywords
- data
- block
- read
- normal
- logical
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
【課題】リフレッシュの回数を削減し、不揮発性半導体メモリの長寿命化を図る。
【解決手段】複数の通常の物理ブロックと少なくとも1つの不良物理ブロックまたはダミーの物理ブロックである非通常物理ブロックによって論理ブロックを構築し、書き換え回数が所定値より少ないリードオンリーデータを前記構築した論理ブロックの非通常物理ブロックに書き込み、前記リードオンリーデータ以外の通常データと、前記リードオンリーデータおよび前記通常データの符号化結果とを前記論理ブロックの前記複数の通常の物理ブロックに書き込み、前記論理ブロック内のデータを読み出す際、前記通常データおよび前記符号化結果を用いて前記リードオンリーデータを復元する。
【選択図】 図1
【解決手段】複数の通常の物理ブロックと少なくとも1つの不良物理ブロックまたはダミーの物理ブロックである非通常物理ブロックによって論理ブロックを構築し、書き換え回数が所定値より少ないリードオンリーデータを前記構築した論理ブロックの非通常物理ブロックに書き込み、前記リードオンリーデータ以外の通常データと、前記リードオンリーデータおよび前記通常データの符号化結果とを前記論理ブロックの前記複数の通常の物理ブロックに書き込み、前記論理ブロック内のデータを読み出す際、前記通常データおよび前記符号化結果を用いて前記リードオンリーデータを復元する。
【選択図】 図1
Description
本発明の実施形態は、不揮発性半導体メモリの制御方法及びメモリシステムに関する。
不揮発性半導体メモリの一つであるフラッシュメモリには以下の特徴がある。
1.データの上書きができない
2.ブロックに対しデータを消去して書き直すことを書き込み可能回数以上繰り返すと、そのブロックは正常な記録ができなくなる可能性が上昇する
3.書き換えずに繰り返し読み出されるデータは、読み出す際にデータの誤り量が増加しやすくなる。
1.データの上書きができない
2.ブロックに対しデータを消去して書き直すことを書き込み可能回数以上繰り返すと、そのブロックは正常な記録ができなくなる可能性が上昇する
3.書き換えずに繰り返し読み出されるデータは、読み出す際にデータの誤り量が増加しやすくなる。
誤り量が増加したデータについては、データの誤り量が閾値を超えた時点で、別のブロックに書き直すリフレッシュ処理を行うことで、誤り量を抑制することができるが、フラッシュメモリにとっては書き換え回数が少ないほうが望ましいので、リフレッシュ処理による書き換えについても回数を抑えられることが望ましい。
本発明の一つの実施形態は、リフレッシュの回数を削減し、不揮発性半導体メモリの長寿命化を図る不揮発性半導体メモリの制御方法及びメモリシステムを提供することを目的とする。
本発明の一つの実施形態によれば、データ消去の単位である物理ブロックを複数個有する不揮発性半導体メモリの制御方法において、複数の通常の物理ブロックと少なくとも1つの不良物理ブロックまたはダミーの物理ブロックである非通常物理ブロックによって論理ブロックを構築する。書き換え回数が所定値より少ないリードオンリーデータを前記構築した論理ブロックの非通常物理ブロックに書き込み、前記リードオンリーデータ以外の通常データと、前記リードオンリーデータおよび前記通常データの符号化結果とを前記論理ブロックの前記複数の通常の物理ブロックに書き込む。前記論理ブロック内のデータを読み出す際、前記通常データおよび前記符号化結果を用いて前記リードオンリーデータを復元する。
以下に添付図面を参照して、実施形態にかかる不揮発性半導体メモリの制御方法及びメモリシステムを詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、実施形態にかかるメモリシステムの構成を示すブロック図である。ここでは、メモリシステムの一例としてSSD(Solid State Drive)100を例に挙げて説明するが、本実施の形態の適用対象はSSDに限定しない。例えば、不揮発にデータを記憶する半導体メモリ及びコントローラを搭載したメモリカード等の補助記憶装置に対しても、本実施の形態を適用することが可能である。
図1は、実施形態にかかるメモリシステムの構成を示すブロック図である。ここでは、メモリシステムの一例としてSSD(Solid State Drive)100を例に挙げて説明するが、本実施の形態の適用対象はSSDに限定しない。例えば、不揮発にデータを記憶する半導体メモリ及びコントローラを搭載したメモリカード等の補助記憶装置に対しても、本実施の形態を適用することが可能である。
SSD100は、パーソナルコンピュータなどのホスト装置1とホストインタフェース(ホストI/F)150で接続され、ホスト装置1の外部記憶装置として機能する。SSD100は、ホストI/F150と、ホスト装置1からリード/ライトされるデータを記憶する不揮発性半導体メモリであるNAND型フラシュメモリ(以下、NANDフラッシュと略す)10(10−0〜10−4)と、SSD100とホスト装置1とのデータ転送制御にかかる各種制御を実行するコントローラ20と、コントローラ20がデータ転送のための転送データを一次格納するために使用され、例えばDRAMなどの揮発性メモリで構成されるRAM30と、RAM30に対する書き込みおよび読み出し制御を実行するRAMコントローラ(RAMC)35と、NANDフラッシュ10−0〜10−4とRAM30との間のデータ転送制御をRAMC35と協働して実行するNANDコントローラ(NANDC)40(40−0〜40−4)と、複数のNANDフラッシュ10−0〜10−4に跨って分散記憶されたデータのECC処理(誤り訂正符号化/復号化)を実行するECC処理部50とを備える。
ホスト装置1から送信されてきたデータは、コントローラ20の制御の基に、ホストI/F150、RAMC35を経由してRAM30に一旦格納され、その後、RAM30から読み出されて、RAMC35、NANDC40を経由してNANDフラッシュ10に書き込まれる。NANDフラッシュ10から読み出されたデータは、NANDC40、RAMC35を経由してRAM30に一旦格納され、その後、RAM30から読み出されて、RAMC35、ホストI/F150を経由してホスト装置1に転送される。
NANDフラッシュ10は、ホスト1によって指定されたユーザデータを記憶したり、管理情報をバックアップ用に記憶したりする。NANDフラッシュ10は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。NANDフラッシュ10−0〜10−4は、夫々1〜複数のメモリチップによって構成されている。各メモリチップは、データ消去の単位である物理ブロックを複数配列して構成される。また、NANDフラッシュ10では、物理ページごとにデータの書き込み及びデータの読み出しが行われる。物理ブロックは、複数の物理ページによって構成されている。
本実施形態では、NANDフラッシュ10は、並列動作可能な5個のチャネルを介してNANDC40に接続されている。すなわち、NANDフラッシュ10−0〜10−4に対して各々1つのチャネル(ch0〜ch4)を割り当て、このうち1つのチャネル(ch4とする)を、ECC処理部50で作成した冗長情報を書き込むためのチャネルとして割り当てて、残りのチャネル(ch0〜ch3)を、ホスト装置1から書き込みが要求されたデータを書き込むためのチャネルとして割り当てて、チャネルch0〜ch4の各ページを1つの組として誤り訂正符号を構成する。すなわち、NANDフラッシュ10−0〜10−3がデータ記憶用であり、NANDフラッシュ10−4が誤り訂正符号用である。誤り訂正符号を構成するチャネルch0〜ch4の5つの物理ブロックの組を論理ブロックということとする。NANDフラッシュ10−0〜10−4は、各別のチャネルch0〜ch4を介してNANDコントローラ(NANDC)40−0〜40−4に接続されており、NANDフラッシュ10−0〜10−4は、独立して並列動作することが可能である。
ホストI/F150は、例えばATA(Advanced Technology Attachment)規格などの通信インタフェースを有し、コントローラ20の制御にしたがってSSD100とホスト装置1との通信を制御する。ホストI/F150は、ホスト装置1から送信されたコマンドを受信し、当該コマンドによって論理アドレス(LBA:Logical Block Addressing)が指定されたデータの書き込みが要求されている場合、当該コマンド(ライトコマンド)をコントローラ20に送る。また、ホストI/F150は、書き込み要求されたデータをRAM30に送る。
RAM30は、データ転送用の一時記憶部として使用される。すなわち、ホスト装置1から書込み要求があったデータをNANDフラッシュ10に書込む前に一時的に保存したり、ホスト装置1から読出し要求があったデータをNANDフラッシュ10から読出して一時的に保存したりするために使用される。また、RAM30は、アドレス変換テーブル31、論理ブロック管理テーブル32、バッドブロックテーブル33などの管理情報を記憶、更新するための記憶領域と、NANDフラッシュ10からリードされたデータを一時記憶するなどのための作業領域を有する。アドレス変換テーブル31、論理ブロック管理テーブル32、バッドブロックテーブル33などの管理情報は、NANDフラッシュ10に記憶されている不揮発管理テーブルが起動時などに展開されたものである。
NANDC40−0〜40−4は、NANDフラッシュ10−0〜10−4とRAM30との間のデータ転送制御を実行するものであり、DMAコントローラと、NANDインタフェース(I/F)などを備える。DMAコントローラは、RAM30とNANDI/Fとの間のデータ転送制御をDMA(Direct Memory Access)方式に従って行う。
ECC処理部50は、RAM30に一時記憶されたライトデータに対し、誤り訂正符号化処理を実行し、ライトデータをNANDC40−0〜40−3に出力し、誤り訂正符号をNANDC40−4に出力する。NANDC40−0〜40−4は、入力されたデータ、誤り訂正符号をNANDフラッシュ10−0〜10−4にライトする。また、ECC処理部50は、NANDC40−0〜40−4を介してNANDフラッシュ10−0〜10−4からリードされたデータ、誤り訂正符号を用いて誤り訂正復号化処理を実行し、リードデータをRAM30に出力する。
誤り訂正符号化処理の一例を、図2に示す。誤り訂正符号化処理においては、独立動作可能な複数のNANDフラッシュ10−0〜10−3に分散記憶されるデータ、別言すれば複数のメモリチップに分散記憶されるデータを用いて誤り訂正符号を作成する。図2では、ECC処理部50は、チャネルch0〜ch3への各書き込み対象のページサイズのデータに対して、オフセットが等しい位置の例えばバイト同士で誤り訂正符号を計算する。この計算結果は冗長情報として、ECC処理部50からチャネルch4のNANDC40−4に転送され、チャネルch4のNANDC40−4によってNANDフラッシュ10−4の上述のオフセットが等しい位置に書き込まれる。即ち、チャネルch0〜ch4において、ページ内のオフセットが等しい位置のバイト同士によって誤り訂正符号が構成される。
このような誤り訂正符号化の際に、各チャネルch0〜ch3からそれぞれ1つの物理ブロックを選択し、選択した各物理ブロックから1つのページを選択し、選択した各ページのオフセットが等しい位置の例えばバイト同士(同一カラム)から誤り訂正符号を計算するようにしてもよいし、各チャネルch0〜ch3からそれぞれ複数個の物理ブロックを選択し、選択した各物理ブロックから1つのページを選択し、選択した各ページのオフセットが等しい位置の例えばバイト同士(同一カラム)から誤り訂正符号を計算するようにしてもよい。
誤り訂正復号化処理の一例を、図3に示す。図3は、チャネルch3のNANDフラッシュ10−3に発生した故障により異常の発生したデータを復元する様子を示す図である。図3に示した復元の様子は、符号化方式としてパリティが採用された場合を示している。具体的には、訂正できない誤りの生じたデータと同一の誤り訂正符号に関連付けられたデータであって、訂正できない誤りの生じたデータに対応するチャネル以外のチャネルのNANDフラッシュに書き込まれたデータと冗長情報(ここでは、チャネルch0、ch1、ch2に書き込まれた各データ及びチャネルch4に書き込まれた冗長情報)を読み出す。そして、ECC処理部50は、当該各データ及び冗長情報における同じオフセットのバイトデータを用いてチャネルch3におけるデータを復元する。なお、符号化方式としては、訂正できない誤りの生じたデータに対応するチャネル以外のチャネルのNANDフラッシュに書き込まれたデータと冗長情報とを用いて訂正できない誤りの生じたデータを復元できるものであれば、パリティに限らず、他の任意の符号化方式を採用することにしてもよい。
なお、ECC処理部50で行う誤り訂正処理は、チャネル間を跨ったデータに限らず、チップ間を跨ったデータ、あるいは物理ブロック間を跨ったデータに対しも、誤り訂正符号を形成するようにしてもよい。すなわち、複数のブロック内のデータから誤り訂正符号を形成し、形成した誤り訂正符号を別のブロックに書き込むようにすればよい。
図1において、コントローラ20は、NANDフラッシュ10に記憶されたシステムプログラム(ファームウエア)と、このファームウェアを実行するプロセッサによってその機能が実現される。コントローラ20は、論理ブロック構築部21、リフレッシュ制御部22、データアクセス制御部23、ブロック管理部24を備える。論理ブロック構築部21、リフレッシュ制御部22は、後述するようにして、論理ブロックの構築処理、リフレッシュ処理を実行する。
データアクセス制御部23は、RAM30を介したNANDフラッシュ10へのライト処理、NANDフラッシュ10からのリード処理、NANDフラッシュ10でのデータ整理(コンパクション)などを実行する。コンパクション処理は、論理ブロック内の有効データを集めて別の論理ブロックに書き直すことで、新たなフリーブロック(用途未割り当ての論理ブロック)を生成する処理である。
ブロック管理部24は、ブロックの使用状態(使用中であるアクティブブロックであるか未使用であるフリーブロックであるか)を管理するとともに、エラーが多いなど記憶領域として使用できないバッドブロックを識別管理する。ブロック管理部24は、データアクセス制御部23に対して、使用すべきフリーブロックまたはアクティブブロックを通知する。
SSD100においては、複数の物理ブロックをまとめて管理する単位として、前述した論理ブロックという仮想的なブロックを定義する。この実施の形態では、論理ブロックは、チャネル並列を行えるように物理ブロックを組み合わせる。すなわち、論理ブロックは、チャネル数の物理ブロックで構成される。図1に示したように、チャネル数=5であれば、論理ブロックは、最大5個の物理ブロックで構成される。そして、論理ブロックに含まれる物理ページの集合(各チャネルの物理ページの集合)である論理ページ単位でデータの書き込み、読み出しを行う。
書き込みを行う際に、論理ブロックの組となった複数の物理ブロックのうち少なくとも1個のブロックについては、前述したように、他のブロックのデータが読めなかった場合に備え、他のブロックのデータから該当のブロックのデータを復元するための訂正符号を書き込んでおく。これにより、初期不良、または後天的不良によって物理ブロックが読み書き不能の不良ブロック(バッドブロック)になってしまった場合でも、読み出し時には論理ページの他のデータと訂正符号を利用して対象のデータを復元し、あたかも不良ブロックから通常通りデータを仮想的に読み出すことができる。
一方で、SSD100では、書き換えずに繰り返しデータを読み出すと、そのデータの誤り量が増加してしまうため、特に書き換えの必要がなくとも、誤り量の増えたデータについては別の場所に書き込みなおすリフレッシュを実行する。リフレッシュはリフレッシュ制御部22によって行われる。リフレッシュでは、
・データリードが発生した際に、読み出せたがデータの誤り量が所定値より多いデータについてはリフレッシュ対象として、いずれ別のブロックに書き直す
・定期的にNANDフラッシュの物理ブロックを巡回して読み出しを行い、読み出せたがデータの誤り量が多いブロックをリフレッシュ対象とする
等の処理が行われる。なお、不良ブロック上のデータはデータが壊れており、使われていないため、当然リフレッシュの対象にならない。
・データリードが発生した際に、読み出せたがデータの誤り量が所定値より多いデータについてはリフレッシュ対象として、いずれ別のブロックに書き直す
・定期的にNANDフラッシュの物理ブロックを巡回して読み出しを行い、読み出せたがデータの誤り量が多いブロックをリフレッシュ対象とする
等の処理が行われる。なお、不良ブロック上のデータはデータが壊れており、使われていないため、当然リフレッシュの対象にならない。
ここで、NANDフラッシュ10に書かれるデータの中には、読み出しは発生するが書き換え頻度が少ないかまたは書き換えられないデータ群(以下、リードオンリーデータ群という)が存在する。リードオンリーデータ群は、例えば、次のようなデータを含む。
(1)SSDのシステム内部で管理されるシステムデータ(ファームウェア、システム情報、パスワードなど)
(2)書き換えが少ないと統計的に認識できるユーザデータ
(1)SSDのシステム内部で管理されるシステムデータ(ファームウェア、システム情報、パスワードなど)
(2)書き換えが少ないと統計的に認識できるユーザデータ
統計的に書き換えが少ないと認識できるユーザデータは、例えば、各ユーザデータの書き換え回数をカウントし、カウントした書き換え回数が所定の閾値以下のユーザデータを書き換えが少ないユーザデータと認識するようにしてもよい。
また、図4に示すように、NANDフラッシュ10に、NANDバッファ領域10a、メインストレージ領域10bから成る2つのユーザデータ記憶領域を定義し、NANDバッファ領域10aの途中で無効にされることなくメインストレージ領域10bに移動されたユーザデータを書き換えが少ないユーザデータと認識するようにしてもよい。NANDフラッシュ10に書き込まれるユーザデータは、先ず、NANDバッファ領域10aに書き込まれ、NANDバッファ領域10aを通過した後、メインストレージ領域10bに移動される。NANDバッファ領域10aは、データの書き込み順序(LRU:Least Recently Used)でブロックが管理されるFIFO構造となっている。NANDバッファ領域10aに存在するデータと同一LBAのデータがNANDバッファ領域10aに入力された場合、NANDバッファ領域10a内のデータを無効化し、書き換え動作を行わない。
NANDバッファ領域10aに入力されたデータと同一LBAのデータについては、ブロック内で無効化し、ブロック内の全データが無効になったブロックはフリーブロックとして解放する。NANDバッファ領域10aのFIFO管理構造の最後まで到達したブロックは、ホスト1から再書き込みされる可能性の低いデータとみなし、メインストレージ領域10bの管理下に移動する。更新頻度の高いデータはNANDバッファ領域10aを通過している最中に無効化され、更新頻度の低いデータだけがNANDバッファ領域10aから溢れていくため、更新頻度の高いデータと低いデータとをNANDバッファ領域10aで選り分けることができる。したがって、FIFO管理構造の最後まで到達して、メインストレージ領域10bに移動されるブロック内のデータを書き換えが所定値より少ないユーザデータと認識するようにしてもよい。
この実施形態では、図5に示すように、正常な複数の物理ブロックのみで構成されるフル論理ブロックと、正常な複数の物理ブロックと1つの不良物理ブロックで構成される欠損論理ブロックとの二種類の論理ブロックを構築する。このような論理ブロックの構築処理は、論理ブロック構築部21によって行われる。不良ブロックとは、エラーが多いなど記憶領域として使用できないブロックのことである。なお、欠損論理ブロックを構築する際に、不良ブロックを用いるのではなく、ダミーの物理ブロック(仮想不良ブロック)を用いるようにしてもよい。ダミーの物理ブロックを用いるとは、実際に物理ブロックを割り当てないことを意味する。
そして、欠損論理ブロックにデータを書き込む際は、図6に示すように、リードオンリーデータを不良ブロックに書き込み、リードオンリーデータ以外の通常データおよび訂正符号を正常な複数の物理ブロックに書き込むようにする。実際の書き込み動作としては、実際に不良ブロックに書き込みに行こうことにしてエラーを発生させてもよいし、書き込みに行くふりだけする(実際の書き込み動作は行わない)ようにしてもよく、いずれを選択してもよい。
リードオンリーデータを読み出す際は、論理ブロック内の他のデータおよび訂正符号を用いてリードオンリーデータの復元処理を行って読み出すことになる。不良ブロックはリフレッシュ対象ではないので、仮想的に不良ブロック位置に書き込まれたデータは、リフレッシュ対象となることはない。よって、不良ブロックに対し書き換えの発生しにくいリードオンリーデータを書き込むことで、リードオンリーデータを正常な物理ブロック上に書き込む場合に比べ、リフレッシュによるデータの書き換え頻度が低くなる。
なお、欠損論理ブロックにおいて、不良ブロックに組み合わせる複数の物理ブロックは、より信頼性の高い、別言すれば誤り訂正数の少ない物理ブロックを選択するほうが好ましい。
図7は、複数のリードオンリーデータを複数の欠損論理ブロックの不良ブロックまたは仮想不良ブロックに配置して、複数の論理ブロックを構築することを示すものである。すなわち、リードオンリーデータの総量を判別し、これらの全てのリードオンリーデータを不良物理ブロック位置に配置することを前提とすれば、予め論理ブロックを構築する際に、リードオンリーの総量分だけ不良物理ブロック(またはダミー物理ブロック)を用意して論理ブロックに含めるようにする。これにより、不良物理ブロックの位置を分散させれば、全てフル論理ブロックによって論理ブロックを構成するのに比べ、論理ブロックの数は多くなる。そして、この不良論理ブロックにリードオンリーのデータを書き込むようにすることで、リフレッシュの頻度を下げつつ全体の論理ブロック容量を見かけ上多くすることができる。
図8は、RAM30で管理されるアドレス変換テーブル31を示すものである。アドレス変換テーブル31には、リードオンリーのシステムデータの種類(sys1、sys2、…)を識別するためのシステムデータ識別情報、ホスト装置1から指定される論理アドレスとしてのLBAまたはリードオンリーのシステムデータ識別情報に対応するデータが記憶されているNANDフラッシュ10上の記憶位置であるPBA(physical block address:例えば、データが記憶されている論理ブロック番号と論理ブロック内記憶位置)と、当該データが有効か無効かを示す有効/無効フラグと、当該LBAに対応するデータまたはリードオンリーのシステムデータ識別情報に対応するデータがリードオンリーデータであるか否かを示すリードオンリーデータフラグと、当該LBAに対応するデータがリードオンリーデータと組み合わされて論理ブロックを構築しているか否かを示すリードオンリー組み合わせ情報を含んでいる。
リードオンリーデータに関しては、LBA「3」、「sys1」、「sys2」に示すように、PBAには、ヌルまたは不良ブロックのPBAが登録される。すなわち、リードオンリーデータを不良物理ブロックに書き込む場合は、不良ブロックのPBAが登録され、リードオンリーデータをダミーの物理ブロック(仮想不良物理ブロック)に書き込む場合は、ヌルが登録される。リードオンリーデータフラグは、統計的に書き換えが少ないユーザデータとして認識されたユーザデータを識別するためのフラグであり、書き換えが少ないリードオンリーのユーザデータに対応するLBAの欄は、「1」となっている。リードオンリーのシステムデータについても、リードオンリーデータフラグが「1」となっている。リードオンリー組み合わせ情報については、リードオンリーのユーザデータまたはリードオンリーのシステムデータと組み合わされて論理ブロックが構築される通常データの欄が「1」となっている。
図9は、RAM30で管理される論理ブロック管理テーブル32を示すものである。論理ブロック管理テーブル32へのデータの登録は、主に論理ブロック構築部21によって実行される。論理ブロック管理テーブル32には、論理ブロック番号と、この論理ブロックを構成する複数の物理ブロックの識別情報(この実施形態では5個)を示すブロック構成情報と、論理ブロック内に配置されるデータを識別するためのブロック内データ情報と、欠損情報と、使用/未使用情報とが登録されている。ブロック構成情報には、論理ブロックを構成する5個の物理ブロックの番号が登録されている。
ブロック内構成情報は、論理ブロック内の5つの物理ブロック内に配置されるデータの情報(LBA、システムデータ識別情報sys1,sys2,…、誤り訂正符号)を含む。
欠損情報は、欠損フラグFkと、欠損チャネルchkとを含む。欠損フラグFkは、5個の物理ブロックが全て揃っているか否か、すなわち不良物理ブロック(または仮想不良物理ブロック)が存在するか否かを識別する。欠損フラグFkによって論理ブロックがフル論理ブロックであるか欠損論理ブロックであるかを識別することができる。欠損チャネルchkは、不良物理ブロック(または仮想不良物理ブロック)が位置するチャネル番号を示す。
使用/未使用情報は、各論理ブロックが使用中であるか否か、すなわち各論理ブロックがフリーブロックであるかアクティブブロックであるかを識別する。この使用/未使用情報を使用して、NANDフラッシュ10に対する書き込みの際に使用するフリーブロックを選択可能である。なお、フリーブロックは、今まで一度も書き込みが行われなかったブロック及び一旦書き込みが行われたがその後全てのデータが無効データとなったブロックの両方を含む。フリーブロックはアクティブブロックとして利用される前の所定のタイミングで消去される。
SSD100では、論理アドレス(LBA)と物理アドレス(NANDフラッシュ10の記憶位置)との関係は予め静的に決定されておらず、データの書込み時に動的に関係付けられる論物動的変換方式が採用されている。例えば、同じLBAのデータを上書きする場合は、つぎのような処理が行われる。論理アドレスA1にブロックサイズの有効なデータが保存されており、記憶領域としてはブロックB1が使用されていたとする。ホスト1から論理アドレスA1のブロックサイズの更新データを上書きするコマンドを受信した場合、フリーブロック(ブロックB2とする)を1個確保し、そのフリーブロックにホスト1から受信したデータを書き込む。その後、論理アドレスA1とブロックB2を関係付ける。その結果、ブロックB2はアクティブブロックになり、ブロックB1に保存されたデータは無効になるためブロックB1はフリーブロックとなる。
図10は、RAM20で管理されるバッドブロックテーブル33を示すものである。バッドブロックテーブル33には、製造段階からのバッドブロックである先天性バッドブロックおよび使用中にバッドブロックとなった後天性バッドブロックが登録される。バッドブロックテーブル33には、例えば、バッドブロックを示す物理ブロック番号が登録される。なお、先天性バッドブロックは、バッドブロックテーブル33に登録しないように管理してもよい。
図11は、NANDフラッシュ10内のブロックを概念的に示すものである。NANDフラッシュ10内の論理ブロックには、前述したように、用途が割り当てられた論理ブロックであるアクティブブロックと、内部に有効データを含まない、用途未割り当ての論理ブロックであるフリーブロックが含まれる。フリーブロックは、正常な複数の物理ブロックのみで構成されるフルフリーブロックと、正常な複数の物理ブロックと1つの不良物理ブロック(または仮想不良物理ブロック)で構成される欠損フリーブロックからなる。フルフリーブロックは、フルフリーブロックプールFBP1にプールされ、欠損フリーブロックはフリーブロックプールFBP2にプールされる。
図12は、SSD100の初期使用段階における書き込み動作を示すフローチャートである。リードオンリーデータとして設定されたシステムデータは、SSD100の出荷当初は、NANDフラッシュ10の所定の管理領域に書き込まれている。
コントローラ20のデータアクセス制御部23は、書き込み命令をホスト1から受信すると(ステップS100)、ホスト1から受信した書き込みデータをホストI/F150、RAMC35を介してRAM30に一旦記憶する。その後、データアクセス制御部23は、データをRAM30から読み出してRAMC35を介してECC処理部50に入力する。
データアクセス制御部23は、管理領域に記憶されているシステムデータ(リードオンリーデータ)のなかに欠損論理ブロックへの再配置が行われていないシステムデータが存在するか否かを判定する(ステップS110)。ブロック管理部24は、再配置が行われていないシステムデータが存在すると判定された場合は、フリーブロックプールFBP2に欠損フリーブロックが存在するか否かを判定し(ステップS120)、フリーブロックプールFBP2に欠損フリーブロックが存在する場合は、欠損フリーブロックをフリーブロックプールFBP2から取得し(ステップS150)、取得した欠損フリーブロックをデータアクセス制御部23に通知する。
また、データアクセス制御部23は、再配置が行われていないシステムデータ(リードオンリーデータ)をNANDフラッシュ10の管理領域から読み出して、NANDC40を介してECC処理部50に入力する。ECC処理部50は、RAM30から入力された通常データと、システムデータ(リードオンリーデータ)に基づいて誤り訂正符号を形成する。また、データアクセス制御部23は、取得した欠損フリーブロックの情報を論理ブロック管理テーブル32から取得し、システムデータ(リードオンリーデータ)が欠損フリーブロックの不良物理ブロック(仮想不良物理ブロック)に配置され、通常データが欠損フリーブロックの不良物理ブロック(仮想不良物理ブロック)に配置されるように、ECC処理部50に対し、通常データおよびシステムデータとチャネル番号との対応関係を通知する。ECC処理部50は、通知された対応関係に基づいて、通常データおよびシステムデータを、通知された各所定のチャネルに対応するNANDC40−0〜40−3に出力し、形成した誤り訂正符号をch4のNANDC40−4に出力する。これにより、図6に示すように、リードオンリーのシステムデータが欠損フリーブロックの不良ブロックに書き込まれ、通常データおよび誤り訂正符号が欠損フリーブロックの正常ブロックに書き込まれる(ステップS160)。この書き込み後、データアクセス制御部23は、アドレス変換テーブル31、論理ブロック管理テーブル32を更新する。
データアクセス制御部23は、ステップS110において、管理領域に記憶されているシステムデータ(リードオンリーデータ)のなかに欠損論理ブロックへの再配置が行われていないシステムデータが存在しないと判定された場合(ステップS110:No)、またはステップS120において、フリーブロックプールFBP2に欠損フリーブロックが存在しないと判定された場合は(ステップS120:No)、フルフリーブロックをフリーブロックプールFBP1から取得し(ステップS130)、取得したフルフリーブロックをデータアクセス制御部23に通知する。また、ECC処理部50は、RAM30から入力された通常データに基づいて誤り訂正符号を形成する。ECC処理部50は、通常データを、各所定のチャネルCh0〜Ch3に対応するNANDC40−0〜40−3に出力し、形成した誤り訂正符号をch4のNANDC40−4に出力する。これにより、通常データおよび誤り訂正符号がフルフリーブロックの正常ブロックに書き込まれる(ステップS140)。この書き込み後、データアクセス制御部23は、アドレス変換テーブル31、論理ブロック管理テーブル32を更新する。
このような処理を繰り返すことにより、NANDフラッシュ10の所定の管理領域に書き込まれているシステムデータ(リードオンリーデータ)を、欠損論理ブロックの不良物理ブロック(仮想不良物理ブロック)に再配置する。
図13は、統計的に書き換えが少ないユーザデータを識別して分類した後の、書き込み動作を示すフローチャートである。アドレス変換テーブル31において、統計的に書き換えが少ないユーザデータに対応するLBAについては、リードオンリーデータフラグが1となっている。コントローラ20のデータアクセス制御部23は、書き込み命令をホスト1から受信すると、ホスト1から受信した書き込みデータをホストI/F150、RAMC35を介してRAM30に一旦記憶する。その後、データアクセス制御部23は、データをRAM30から読み出してRAMC35を介してECC処理部50に入力する。ECC処理部50は、入力されたデータに基づいて誤り訂正符号を形成する。コントローラ20は、書き込み命令に含まれるLBAに基づき、アドレス変換テーブル31のリードオンリーデータフラグを検索し、今回の書き込みデータにリードオンリーデータが含まれているか否かを判定し(ステップS220)、リードオンリーデータが含まれない場合は、フルフリーブロックをフリーブロックプールFBP1から取得し(ステップS250)、取得したフルフリーブロックに書き込みデータを書き込む(ステップS260)。
一方、コントローラ20は、今回の書き込みデータにリードオンリーデータが含まれると判定した場合は(ステップS220:Yes)、フリーブロックプールFBP2に欠損フリーブロックが存在するか否かを判定し(ステップS230)、フリーブロックプールFBP2に欠損フリーブロックが存在する場合は、欠損フリーブロックをフリーブロックプールFBP2から取得し(ステップS240)、取得した欠損フリーブロックに書き込みデータを書き込む(ステップS260)。しかし、ステップS230において、コントローラ20は、フリーブロックプールFBP2に欠損フリーブロックが存在しないと判定した場合は、フルフリーブロックをフリーブロックプールFBP1から取得し(ステップS250)、取得したフルフリーブロックに書き込みデータを書き込む(ステップS260)。この書き込み後、データアクセス制御部23は、アドレス変換テーブル31、論理ブロック管理テーブル32を更新する。
また、上述したリフレッシュ処理やコンパクション処理の際に、欠損論理ブロック間でデータの移動が行われる際には、図14に示すように、移動元と移動先の不良ブロック位置が異なる場合があるので、その際には、移動元の不良ブロック位置のデータが移動先の不良ブロック位置に書き込まれるようにデータの再配置を行う。これにより、常にリードオンリーデータが不良ブロック位置上に置かれるようになり、データの移動に関わらず、リフレッシュによる書き換え発生の頻度が低い状態を保つことができる。
また、システムデータのようにリードオンリーデータが重要なデータである場合は、図15に示すように、必要な信頼性が得られるまで複数の欠損論理ブロックの各不良ブロックにリードオンリーデータを書き込む、多重化を行うようにしてもよい。
このようにこの実施形態では、全て正常な複数の物理ブロックのみで構成されるフル論理ブロックと、正常な複数の物理ブロックと1つの不良物理ブロック(またはダミー物理ブロック)で構成される欠損論理ブロックとの二種類の論理ブロックを構築し、読み出しは発生するが書き換え頻度が低いまたは書き換わらないリードオンリーデータを選別し、選別したリードオンリデータを欠損論理ブロックの不良物理ブロック(またはダミー物理ブロック)に書き込み、通常データを欠損論理ブロックの正常物理ブロックに書き込む。また、リードオンリデータと通常データとの誤り訂正の符号化結果を欠損論理ブロックに含まれる別の正常な物理ブロックに書き込む。そして、論理ブロック内のデータを読み出す際、通常データおよび符号化結果を用いてリードオンリーデータを復号化して復元し、この復元されたリードオンリーデータを通常データとともに読み出すようにする。
これによりこの実施形態では、リフレッシュの回数を削減し、不揮発性半導体メモリの長寿命化を図ることが可能となる。また、論理ブロックの容量を見かけ上増大させることが可能となる。
なお、上記実施形態では、欠損論理ブロックは、欠損が1個のみを採用したが、誤り訂正によって復元が可能であれば、欠損が2個以上の論理ブロックを採用するようにしてもよい。また、論理ブロックは、チャネル並列動作のみならず、バンクインターリーブ、プレーン倍速動作が行えるように物理ブロックを組み合わせてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 ホスト装置、10 NANDフラッシュ、20 コントローラ、21 論理ブロック構築部、22 リフレッシュ制御部、23 データアクセス制御部、24 ブロック管理部、31 アドレス変換テーブル、32 論理ブロック管理テーブル、33 バッドブロックテーブル、50 ECC処理部。
Claims (6)
- データ消去の単位である物理ブロックを複数個有する不揮発性半導体メモリの制御方法において、
複数の通常の物理ブロックと少なくとも1つの不良物理ブロックまたはダミーの物理ブロックである非通常物理ブロックによって論理ブロックを構築する第1ステップと、
書き換え回数が所定値より少ないリードオンリーデータを前記構築した論理ブロックの非通常物理ブロックに書き込み、前記リードオンリーデータ以外の通常データと、前記リードオンリーデータおよび前記通常データの符号化結果とを前記論理ブロックの前記複数の通常の物理ブロックに書き込む第2ステップと、
前記論理ブロック内のデータを読み出す際、前記通常データおよび前記符号化結果を用いて前記リードオンリーデータを復元する第3ステップと、
を備えることを特徴とする不揮発性半導体メモリの制御方法。 - 前記第1ステップによって構築される論理ブロックの個数は、前記リードオンリーデータの個数に対応することを特徴とする請求項1に記載の不揮発性半導体メモリの制御方法。
- 前記第2ステップでは、前記符号化結果を、チャネル間に跨った前記リードオンリーデータおよび前記通常データを用いて符号化結果を導出するか、チップ間に跨った前記リードオンリーデータおよび前記通常データを用いて符号化結果を導出することを特徴とする請求項1に記載の不揮発性半導体メモリの制御方法。
- 前記第2のステップでは、複数の論理ブロックの各非通常物理ブロックに同じリードオンリーデータを書き込み、通常データと前記符号化結果を前記複数の論理ブロックの各複数の正常な物理ブロックに書き込む、多重化書き込みを行うことを特徴とする請求項1に記載の不揮発性半導体メモリの制御方法。
- 第1ステップで作成された論理ブロック間でデータの移動を行う際は、移動元の非通常物理ブロックのデータが移動先の非通常物理ブロックに書き込まれるようにデータの移動を行うことを特徴とする請求項1に記載の不揮発性半導体メモリの制御方法。
- データ消去の単位である物理ブロックを複数個有する不揮発性半導体メモリと、
前記不揮発性半導体メモリに対し、データの書き込みおよび読み出し制御を行うコントローラとを備えるメモリシステムにおいて、
複数の通常の物理ブロックと少なくとも1つの不良物理ブロックまたはダミーの物理ブロックである非通常物理ブロックによって論理ブロックを構築する論理ブロック構築部と、
データの符号化処理および復号化処理を実行する誤り訂正処理部と、
書き換え回数が所定値より少ないリードオンリーデータを前記構築した論理ブロックの非通常物理ブロックに書き込み、前記リードオンリーデータ以外の通常データと、前記リードオンリーデータおよび前記通常データの前記誤り訂正処理部での符号化結果とを前記論理ブロックの前記複数の通常の物理ブロックに書き込む書き込み制御部と、
前記論理ブロック内のデータを読み出す際、前記誤り訂正処理部で前記通常データおよび前記符号化結果を用いて前記リードオンリーデータを復号化して復元し、この復元されたリードオンリーデータを前記通常データとともに読み出す読み出し制御部と、
備えることを特徴とするメモリシステム。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2012198816A JP2014052978A (ja) | 2012-09-10 | 2012-09-10 | 不揮発性半導体メモリの制御方法及びメモリシステム |
| US13/786,025 US20140075099A1 (en) | 2012-09-10 | 2013-03-05 | Control method and memory system of non-volatile semiconductor memory |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2012198816A JP2014052978A (ja) | 2012-09-10 | 2012-09-10 | 不揮発性半導体メモリの制御方法及びメモリシステム |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2014052978A true JP2014052978A (ja) | 2014-03-20 |
Family
ID=50234576
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2012198816A Pending JP2014052978A (ja) | 2012-09-10 | 2012-09-10 | 不揮発性半導体メモリの制御方法及びメモリシステム |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US20140075099A1 (ja) |
| JP (1) | JP2014052978A (ja) |
Families Citing this family (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20150062646A (ko) * | 2013-11-29 | 2015-06-08 | 삼성전자주식회사 | 전자 시스템 및 이의 동작 방법 |
| US9632927B2 (en) | 2014-09-25 | 2017-04-25 | International Business Machines Corporation | Reducing write amplification in solid-state drives by separating allocation of relocate writes from user writes |
| US9529668B2 (en) * | 2014-09-26 | 2016-12-27 | Intel Corporation | Method and system for using NAND page buffers to improve the transfer buffer utilization of a solid state drive |
| US10078582B2 (en) | 2014-12-10 | 2018-09-18 | International Business Machines Corporation | Non-volatile memory system having an increased effective number of supported heat levels |
| KR20160074025A (ko) * | 2014-12-17 | 2016-06-28 | 에스케이하이닉스 주식회사 | 데이터 저장 장치의 동작 방법 |
| US9779021B2 (en) | 2014-12-19 | 2017-10-03 | International Business Machines Corporation | Non-volatile memory controller cache architecture with support for separation of data streams |
| EP3262508B1 (en) * | 2015-06-30 | 2021-08-04 | Hewlett-Packard Development Company, L.P. | Patrol scrub periods based on power status |
| US9886208B2 (en) | 2015-09-25 | 2018-02-06 | International Business Machines Corporation | Adaptive assignment of open logical erase blocks to data streams |
| US10725933B2 (en) * | 2016-12-30 | 2020-07-28 | Intel Corporation | Method and apparatus for redirecting memory access commands sent to unusable memory partitions |
| US10579471B2 (en) * | 2017-03-02 | 2020-03-03 | Toshiba Memory Corporation | Storage device and error correction method for storage device |
| US10977174B2 (en) * | 2018-12-31 | 2021-04-13 | Micron Technology, Inc. | Using a common pool of blocks for user data and a system data structure |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8281227B2 (en) * | 2009-05-18 | 2012-10-02 | Fusion-10, Inc. | Apparatus, system, and method to increase data integrity in a redundant storage system |
| US8832507B2 (en) * | 2010-08-23 | 2014-09-09 | Apple Inc. | Systems and methods for generating dynamic super blocks |
-
2012
- 2012-09-10 JP JP2012198816A patent/JP2014052978A/ja active Pending
-
2013
- 2013-03-05 US US13/786,025 patent/US20140075099A1/en not_active Abandoned
Also Published As
| Publication number | Publication date |
|---|---|
| US20140075099A1 (en) | 2014-03-13 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2014052978A (ja) | 不揮発性半導体メモリの制御方法及びメモリシステム | |
| US8904261B2 (en) | Data management in solid state storage devices | |
| JP5066199B2 (ja) | 半導体記憶装置 | |
| JP4901968B2 (ja) | 半導体記憶装置 | |
| JP5364807B2 (ja) | メモリコントローラ及び不揮発性記憶装置 | |
| CN101903866A (zh) | 非易失存储介质中的数据存储的方法和系统 | |
| WO2015087184A1 (en) | Recording dwell time in a non-volatile memory system | |
| US11734112B2 (en) | Memory system | |
| JP6817340B2 (ja) | 計算機 | |
| JP2010152542A (ja) | メモリシステム | |
| CN116909802A (zh) | 用于经分区存储系统的动态rain | |
| JP2012068765A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
| WO2016051599A1 (ja) | メモリコントローラ及びデータ制御方法 | |
| TW202601387A (zh) | 快閃記憶體控制器的控制方法、快閃記憶體控制器以及記憶體裝置 | |
| JP2012037971A (ja) | メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 | |
| US11789643B2 (en) | Memory system and control method | |
| JP2013200722A (ja) | 半導体記憶装置の論理ブロックの構築方法 | |
| CN117992282A (zh) | 异常断电后的编码方法和存储器存储装置 |