JP2008146254A - 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法 - Google Patents

記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法 Download PDF

Info

Publication number
JP2008146254A
JP2008146254A JP2006331098A JP2006331098A JP2008146254A JP 2008146254 A JP2008146254 A JP 2008146254A JP 2006331098 A JP2006331098 A JP 2006331098A JP 2006331098 A JP2006331098 A JP 2006331098A JP 2008146254 A JP2008146254 A JP 2008146254A
Authority
JP
Japan
Prior art keywords
block
data
page
flash memory
erase
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
Application number
JP2006331098A
Other languages
English (en)
Inventor
Toshiyuki Nishihara
利幸 西原
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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP2006331098A priority Critical patent/JP2008146254A/ja
Publication of JP2008146254A publication Critical patent/JP2008146254A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】効率の良い回復処理を可能にしながらも、不良ブロックの発生を未然に防止することが可能な記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法を提供する。
【解決手段】制御部32は、フラッシュメモリ35,36上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、ブロックを未使用ブロックに回復させ、回復処理に引き続き、回復させたブロックの消去回数を検査し、その結果に応じて、消去回数のより少ないブロックのデータを該ブロックに移動させる。
【選択図】図3

Description

本発明は、不揮発性メモリを含む記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法に関するものである。
近年、デジタルスチルカメラやモバイルコンピュータ機器の記憶媒体として、フラッシュメモリが注目されている。
フラッシュメモリは、トンネリングやホットエレクトロン加速を用いて、電子にゲート絶縁膜を通過させ、それらを浮遊ゲートやトラップ層に注入し、セルトランジスタの閾値を変化させることでデータを記憶させる半導体メモリである。積層ゲート構造やMNOS構造等を用いたトランジスタ1つのみでメモリセルを構成できるため、安価かつ大容量のメモリを実現できる。
その代表例として、NAND型フラッシュメモリが挙げられる。
図1は、NAND型フラッシュメモリの内部構成例を示す図である。
図1のNAND型フラッシュメモリは、ビット線BL1〜BLnに接続された複数のメモリユニット1−1〜1−nがアレイ状に(縦横)に配列されている。
たとえば、選択用トランジスタ2のゲートが選択ゲート線SL1に接続され、選択用トランジスタ3のゲートが選択ゲート線SL2に接続されている。また、各メモリセルN0〜N15のゲートがワード線WL0〜WL15に接続されている。
各メモリセルN0〜N15は積層ゲート構造を持ち、浮遊ゲートへの電荷蓄積量に従ってデータを記憶する。すなわち、浮遊ゲートに多くの電子が蓄積されていると、トランジスタの閾値が上昇するので、チャージされたビット線BL1〜BLnからのメモリユニット1(−1〜−n)への電流貫通の有無を、センスアンプ等を含むアクセス回路4で検出してデータ判定を行う。
このようなNAND型フラッシュメモリは、メモリセル毎にビット線へのコンタクト領域を設ける必要もないので、特に大容量で安価な記憶装置の媒体に適している。
ところで、一般にフラッシュメモリのプログラム速度は非常に遅く、セルあたり数百マイクロ(μ)秒を必要とする。またデータの上書きはできないので、プログラムに先立って消去を行う必要があり、これには数m秒もの時間がかかる。このような問題に対しては、多くのメモリセルを並列処理することで対処している。
すなわち、たとえば同一ワード線WL0に接続され、ページ単位を成すメモリセル群5を、同時一括に書き込み、さらに互いにメモリユニットを共有するページ群で構成されるセルブロック6を全て一括で消去することにより、プログラムの転送速度を向上させている。
具体的には、たとえば非特許文献1には1GbのNAND型フラッシュメモリが掲載されており、ページサイズを2kバイト、消去ブロックサイズを128kBとしている。すなわち、一つのメモリアレイ内で128kバイトのメモリセル群を並列消去し、そこにメモリセルを2kバイト毎に並列でプログラムしていくことによって、10MB/sのプログラム転送速度を実現している。
なお、通常NAND型フラッシュの各ページは、たとえば2kバイトのユーザーデータ格納領域に対して64バイトの予備領域を有している。
この予備領域には、NAND型フラッシュを使用するシステム側で、パリティビット等の各種管理データを格納することが可能である。この予備領域への書き込みは、通常ユーザーデータ領域への書き込みと一括で行なう必要があり、両者は常にセットとして扱われる。
ところで、フラッシュメモリの使用において注意すべき制約事項として、消去回数の上限が規定されていることが挙げられる。
同一ブロックの書き換えが繰り返されて、その消去回数が上限値を越えると、該ブロックにおけるデータ保持は保証されなくなる。たとえば上記NAND型フラッシュの消去回数の上限は10万回またはそれ以下である。
今後メモリセルの微細化に伴ってセルトランジスタの閾値ばらつきが増大し、動作マージンが劣化するため、さらに消去回数の上限は低下していく傾向にある。
また、近年微細化に伴う内部構造と書き込みメカニズムの変化から、特にNAND型フラッシュには以下のような制約が新たに課される傾向にある。
まず、ブロック内の各ページの書き込み順序に制約がつくようになった。
すなわち、各ページの書き込みは下位アドレスから上位アドレスへの順方向に制限されており、逆方向の書き込みは禁止されている。たとえば、一旦どこかのページに書き込みを実施したら、同一ブロック内のそれより下位のアドレスが未書き込みの状態でも、そこにデータを書き込むことはできない。
さらに、各ページの多重書き込みが困難になった。すなわち同一ページ内のデータは2回に分けて書き込むことが出来ない。従って各ページにデータを書き込む前に予備領域の一部のビットを予めマークしたり、データ書き込み後に予備領域にフラグを立てる等、これまでフラッシュメモリの管理に使用されていた各種テクニックが使えない状況になりつつある。
ISSCC2002予稿集のp106、セッション6.4 特開平8−328762号公報
近年、ハードディスクの消費電力の大きさや、シーク時間の長さ、耐衝撃性や携帯性等の問題を解消すべく、フラッシュメモリにその代替が期待されている。
しかし上述の如く、フラッシュメモリにはアクセス単位を大きくしないと高速化できないという欠点がある。また、データの上書きができないので、書き換えには必ず消去が必要であり、その際の消去ブロックはさらに大きい。このようにアクセス単位に対して消去単位が数十倍大きいのは、消去時間が長く、かつ書き込み時に非選択セルにディスターブが生じるフラッシュメモリには一般的な仕様である。
このようなフラッシュメモリの仕様に対応し、小型のデータに関しても高速に書き換えを実施すべく、追記型の記憶システムが提案されている。
このようなシステムにおいては、書き換えは、更新データを空き領域に追記し、元のデータを無効化することで実施される。
より具体的には、ページ単位で論理アドレスを物理アドレスに対応させるアドレス変換テーブルを用い、書き換えは対照データの物理アドレスを変更し、記憶メディアの空き領域に追記することで実施する。
たとえば、特許文献1には、アドレス変換テーブルを用いた追記型記憶システムにおける管理方法の詳細が記載されている。図2に一例を示す。
図2において、21はブロック、22はページ領域、23はページバッファ、24は消去済み空きブロック、25はアドレス変換テーブル、26はページ領域をそれぞれ示している。
アドレス変換テーブル25からは、論理ページアドレス(Logical Page Abbress =LPA)をインデックスとして、対応するページのフラッシュメモリ上のアドレスである物理ページアドレス(Phisical Page Abbress =PPA)を取得することができる。
たとえば、ホストから指定された論理ページアドレス“0x5502”への書き込みに対して、アドレス変換テーブルを用いてページ単位でアドレス変換を実施し、フラッシュメモリ上の物理ページアドレス“0x6B05”を取得する。これによりブロック21内の対応するページ領域22へアクセスが実施される。
一方、同ページに更新を行う際には、フラッシュメモリ内で直接かきこめる適当な空きページ領域が検索される。たとえば物理ブロックアドレス“0xAA”に相当する消去済み空きブロック24の先頭ページ領域26が適切な書き込み先として選択された場合、ページ領域22のデータのみがページバッファ23を介して更新され、ページ領域26に書き込まれる。この際論理ページアドレス“0x5502”はページ領域26の物理アドレス“0xAA00”にリマッピングされる。ページ領域22上の旧データは、当面そのまま残して無効扱いとしておく。
このような管理を実施すれば、フラッシュメモリ内に空き領域が存在する限りは、各ページデータの更新に対して1ページ分のデータ書き込みで良い。したがって、高速に書き換えを実施することができる。その間消去の必要も無いので、フラッシュメモリの書き換え回数も大幅に低減でき、その寿命も向上させることができる。
しかし、このような追記型記憶システムでは、無効化した元データ領域が無駄になる。したがって、そのような領域は消去して、再度書き込みが可能となるよう回復処理を行いたい。
しかしその場合、消去ブロックが複数のページ領域を含むと、無効化されたページ領域と同じ消去ブロック内に有効データを含むページ領域が存在するケースが多発する。このようなブロックを回復させるには、消去前に有効ページのみを、他のブロックに退避させる必要がある。すなわちまず対象ブロック内の有効ページのデータを他のブロックに全てコピーし、これに応じて変換テーブルに記載された物理アドレスを書き換え、最後に元ブロックを消去する。
このような回復処理は、特に無効ページの多いブロックを選択し、それに対して優先的に実施することが望ましい。すなわち、このような選択によって、退避するページ数を減らし、回復するページ数を増やすことができ、処理の効率を大幅に向上させることができる。これは記憶装置やシステム内でのフラッシュメモリへの累計書き込み量や累計消去回数を削減することに寄与し、寿命の向上や消費電力削減にも貢献する。
しかしその一方で、以下のような問題が発生する。すなわち、フラッシュメモリ内に格納されるデータにはアプリケーションプログラムやオペレーティングシステム(OS)のように書き換え頻度が極めて小さな静的データと、ユーザーデータのように書き換え頻度の大きな動的データとが混在している。前者が格納されたブロックは殆ど無効化ページが発生しないが、後者のブロックは高頻度で書き換えられて、無効化ページが発生しやすい。ここで後者のブロックに回復処理が施されると、それらは再び格納領域として開放され、動的なデータが再び格納される可能性が高まる。一方前者のブロックは全く書き換えがなされないまま、放置される。
すなわち、特定のブロックのみに動的データが書き込まれ、それらは更新されて無効化ページを発生される。するとそれらのブロックは回復対象として選択されて、消去され、再び動的データが格納される。このような循環に入ると、各ブロックごとに書き換え回数に大きなムラが生じてしまう。その結果幾つかのブロックは容易に消去回数の制限値を越え、不良ブロックとなってしまう。
本発明は、効率の良い回復処理を可能にしながらも、不良ブロックの発生を未然に防止することが可能な記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法を提供することにある。
本発明の第1の観点の記憶装置は、主記憶媒体としてフラッシュメモリと、制御部と、を有し、上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含み、上記制御部は、上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、該ブロックを未使用ブロックに回復させ、上記回復処理に引き続き、回復させたブロックの消去回数を検査し、その結果に応じて、上記消去回数のより少ないブロックのデータを該ブロックに移動させる。
好適には、上記制御部は、上記回復処理に先立って、複数のブロックにおける無効ページ数を比較参照し、その結果から回復対象ブロックを選択する。
好適には、ブロックごとの消去回数を反映したカウンタがテーブル化されており、少なくともその一部が記憶装置或いはシステム内部の第2メモリに保存されている。
好適には、上記テーブルは分割されてフラッシュメモリ内に保存されており、必要に応じてその一部が第2メモリ内に読み出され、参照される。
本発明の第2の観点の記憶装置は、主記憶媒体としてフラッシュメモリと、制御部と、を有し、上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含み、上記制御部は、上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、該ブロックを未使用ブロックに回復させ、複数のブロックからなるユニットごとにカウンタが設置されており、当該カウンタを各ユニットに所属するブロックの最大消去回数あるいは累計消去回数を反映するように適時インクリメントまたはディクリメントし、上記回復処理に引き続き、回復させたブロックが所属するユニットのカウンタを検査し、その結果に応じて、当該カウンタ値がより少ない消去回数に該当するユニットを選択し、その中のデータを該ブロックに移動させる。
本発明の第3の観点の記憶装置は、主記憶媒体としてフラッシュメモリと、制御部と、を有し、上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含み、上記制御部は、上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、各ブロックには各々独立に、或いは複数ブロックよりなるユニットごとに、その消去回数を反映した指標を設け、その値を当該記憶装置またはシステム内に保存し、複数ブロックにおける無効ページ数を比較参照して回復対象ブロックを選択し、上記ブロックから有効なページのデータを他のブロックにコピーし、しかる後に該ブロックを消去して未使用ブロックに回復させ、上記ブロックの該指標値を検査し、その結果に応じて、より少ない消去回数に該当する指標値を持つブロックのデータを該ブロックに移動させる。
本発明の第4の観点のコンピュータシステムは、主記憶媒体としてフラッシュメモリと、制御部と、上記フラッシュメモリのデータにアクセス可能な処理装置と、を有し、上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含み、上記制御部は、上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、該ブロックを未使用ブロックに回復させ、上記回復処理に引き続き、回復させたブロックの消去回数を検査し、その結果に応じて、上記消去回数のより少ないブロックのデータを該ブロックに移動させる。
本発明の第5の観点のコンピュータシステムは、主記憶媒体としてフラッシュメモリと、制御部と、上記フラッシュメモリのデータにアクセス可能な処理装置と、を有し、上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含み、上記制御部は、上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、該ブロックを未使用ブロックに回復させ、複数のブロックからなるユニットごとにカウンタが設置されており、当該カウンタを各ユニットに所属するブロックの最大消去回数あるいは累計消去回数を反映するように適時インクリメントまたはディクリメントし、上記回復処理に引き続き、回復させたブロックが所属するユニットのカウンタを検査し、その結果に応じて、当該カウンタ値がより少ない消去回数に該当するユニットを選択し、その中のデータを該ブロックに移動させる。
本発明の第6の観点のコンピュータシステムは、主記憶媒体としてフラッシュメモリと、制御部と、上記フラッシュメモリのデータにアクセス可能な処理装置と、を有し、上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含み、上記制御部は、上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、各ブロックには各々独立に、或いは複数ブロックよりなるユニットごとに、その消去回数を反映した指標を設け、その値を当該記憶装置またはシステム内に保存し、複数ブロックにおける無効ページ数を比較参照して回復対象ブロックを選択し、上記ブロックから有効なページのデータを他のブロックにコピーし、しかる後に当該ブロックを消去して未使用ブロックに回復させ、上記ブロックの該指標値を検査し、その結果に応じて、より少ない消去回数に該当する指標値を持つブロックのデータを該ブロックに移動させる。
本発明の第7の観点は、主記憶媒体としてフラッシュメモリを有し、上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含む記憶装置のデータ処理方法であって、上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施するステップと、無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、該ブロックを未使用ブロックに回復させるステップと、上記回復処理に引き続き、回復させたブロックの消去回数を検査し、その結果に応じて、上記消去回数のより少ないブロックのデータを該ブロックに移動させるステップとを有する。
本発明によれば、無効ページを含むブロックの回復シーケンスに、消去回数の上限保証のための手段を導入する。上限保証は、各ブロックごとに消去回数がカウントされ、ブロックの消去時にこのカウンタ値が参照され、消去回数が一定値を越えている場合は、それ以降動的なデータが格納されないように、静的なデータでブロックを埋めることで実施される。
すなわち、無効ページを含むブロックの回復シーケンスにおいては、まず無効ページ数の多いブロックを回復対象として選択し、回復作業を実施した後に、さらに上記上限保証のための操作を実行する。
これによって、回復作業の効率を良好に保ちつつ、書き換え磨耗による欠陥の発生を未然に防止した記憶装置やシステムが構築される。
本発明によれば、フラッシュメモリにおける無効ページの回復作業を効率よく実施しつつも、磨耗による欠陥ブロックの発生を未然に防止することができる。
これによって、無駄な書き込みや消去作業を極力防止でき、アクセスパフォーマンスを向上させ、装置の寿命を向上させ、さらに電力消費を削減できる。
以下、本発明の実施形態を図面に関連付けて説明する。
図3は、本発明の実施形態に係る記憶装置を採用したコンピュータシステムの構成例を示す図である。
本コンピュータシステムCOMSYSは、記憶装置30、およびホストシステム(処理装置)50を主構成要素として有している。
記憶装置30は、インターフェース回路(I/F)31、制御回路32、内部バス33、ページバッファ34、NAND型フラッシュメモリ35,36、制御回路37、およびメモリバス38を有する。
制御回路32は、第2メモリとしてのRAM40を含み、RAM40にはワーキングエリア41が設けられ、アドレス変換テーブル42、検索テーブル43、無効カウンタテーブル44、消去カウンタテーブル45、およびライトポインタ46が構築されている。
ホストシステム50は、CPU、RAM、ROM、システムバス等を含んで構成されている。
記憶装置30の内部においては、32ビットのメモリバス38に、16ビットの入出力を持つ2チップの8GbNAND型フラッシュメモリ(フラッシュメモリチップという場合もある)35,36が並列接続されている。2つのチップは読み出しや書き込みにおいて、同時並列にアクセスされる。すなわち、メモリバス38は16ビットバスを2チャンネル備えた構成となっている。各々のフラッシュメモリは書き込みや読み出しのアクセスをたとえば4kBのページ単位で行う。したがって、実ページサイズとしては8kBが一括アクセスされることになる。
ページバッファ34はアクセスされたページ領域のデータを一時記憶する。フラッシュメモリ35,36とページバッファ34との間のデータの送受は、制御回路37で制御されている。
さらに、制御回路37は、必要に応じて転送データにECC符号化によるエラー補正を施したり、フラッシュメモリ内の欠陥ブロックの管理を実施する。両フラッシュメモリ35,36は,ページバッファ34を介して記憶装置の内部バス33との間でデータを入出力する。
すなわち、ページバッファ34、NAND型フラッシュメモリ35,36、制御回路37、およびメモリバス38の回路群は実質的に一つのフラッシュメモリデバイス(フラッシュメモリモジュールという場合もある)39を構成し、記憶装置30の内部バス33に接続されているとみなすことができる。その総容量は16Gb(2GB)であり、実ページサイズは8kBである。すなわち装置内には256k個のページデータが格納される。
さらに、内部バス33にはインターフェース回路31、および制御回路32が接続されている。
インターフェース回路31は、ATAやPCIエクスプレス等の規格に従ってホストシステム50との間で、データやコマンドの送受を行う。
制御回路32は、記憶装置の内部においてページバッファ34とインターフェース回路31の間のデータの送受を管理する。
制御回路32に内蔵されたRAM40には、プログラムを実行するためのコードエリアやワーキングエリア41が設けられており、さらにページ単位の仮想アドレスを管理するアドレス変換テーブル42、正常な空きブロックを検索する検索テーブル43、各ブロックの無効ページ数を管理する無効カウンタテーブル44、各ブロックの消去回数を管理する消去カウンタテーブル45、およびライトポインタ46等が構築されている。
本コンピュータシステムCOMSYSにおいては、ホストシステム50は内蔵するCPUによって制御され、アプリケーションやオペレーティングシステム(OS)の要求に応じて、記憶装置30を介して、フラッシュメモリデバイス39にユーザーデータを保存する。
制御回路32はその間のデータ授受に介在し、アドレス変換テーブル42等を用いてアドレス変換を伴うアクセス管理を実施する。
記憶装置30は、ハードディスクと同様に512バイト(Byte)のセクタをアクセス単位とする。
記憶装置内部では簡単のため、16進数のアドレスが次のように割り振られるとする。
たとえば、外部入力アドレスが“0x05502C”であった場合、上位24ビットの“0x05502”はページアドレスであり、最大1Mページを管理できる。一方、下位4ビットの“0xC”はページ領域内のセクタドレスであり、1ページ中には16のセクタが含まれる。
本記憶装置はページバッファ34内のデータを選択することで、1セクタ単位のランダムアクセスが可能である。
以下、このような記憶装置30の内部動作を説明する。
本実施形態ではページ単位の仮想アドレス管理が採用されている。
図4は、アドレス変換テーブル42、検索テーブル43、無効カウンタテーブル44、および消去カウンタテーブル45の構成例を示す図である。また、図5は、そのようなテーブルを使用したデータアクセスのフローを示す図である。記憶装置30の内部におけるフラッシュメモリデバイス39への具体的アクセスは、図5のフロー図に従って、以下のような手順で実行される。
<データの読み出し動作>
ステップST1
ホストシステム50からユーザーデータのアクセスコマンドとともに”0x005502C”のセクタドレスが入力されると、制御回路32は論理ページアドレス部(LPA)”0x005502”をインデックスにアドレス変換テーブル42を参照し、アクセス対象たるユーザーデータの物理ページアドレスPPA”0x0060B0”を取得する。
ステップST2
上記物理ページアドレスをもって、フラッシュメモリデバイス39がアクセスされ、ページバッファ34内にユーザーデータが格納されたページグループが読み出される。その後セクタドレス”0xC”に相当する部分がページバッファ34から選択的にホストに出力され、読み出し動作が完了する。
さらにデータの更新は以下のように実施する。同じ”0x005502C”のセクタを更新するとする。
<データの更新(書き込み)動作>
ステップST1,ST2
読み出し時と同様に、フラッシュメモリデバイス39より読み出した所望のデータをページバッファ34に格納する。
ステップST3
ページバッファ上で所望のセクタ箇所を更新する。
ステップST4
更新したユーザーデータのフラッシュメモリデバイス39への書き込み先として、RAM40内に常駐した検索テーブル43およびライトポインタ46から、適当なページ領域の物理ページアドレスPPAが選択される。
以下のその手順の詳細を説明する。ここでは簡単のため、物理ページアドレスは、上位16ビットの物理ブロックアドレス部(Phisical Block Abbress :PBA)と下位8ビットのページオフセット部よりなるとする。この時各消去ブロックは256ページ(2)より構成される。
検索テーブル43には、各ブロックごとにそれらが現在使用されているか、もしくは消去済みの空き状態であるかが、“Used Flag”でマークされている。さらに欠陥ブロックの場合、“Defect Flag”が“1”となっている。
データの書き込みは、消去済みブロックの先頭ページから順に実行されていく。前回の書き込んだページの物理アドレスはライトポインタ46に示されており、それがインクリメントされていくことで、書き込み先のページが下位アドレスから順次選択される。選択がブロックの末尾に達したら、それ以降のブロックの“Used Flag”と“Defect Flag”がスキャンされ、次の未使用かつ良品のブロックが検出されて、その先頭ページが選択される。
ライトポインタ46の値は現在“0x00AA01”であり、制御回路32はまずユーザーデータの書き込み先として、それをインクリメントした物理ページアドレス“0x00AA02”を選択する。
ステップST5
上記物理ページアドレスをもって、フラッシュメモリデバイス39がアクセスされ、ページバッファ34内のユーザーデータがフラッシュメモリデバイス39に一括書き込みされる。
書き込みが完了すると、アドレス変換テーブル42が更新され、論理ページアドレスLPA“0x005502”に対応する物理ページアドレスPPAは“0x00AA02”に更新される。
ステップST6
また、これに伴って旧物理ページアドレス“0x0060B0”に相当するページ領域は無効となる。そこで上記無効ページ発生に対応して、無効カウンタテーブル44の、物理ブロックアドレス“0x0060”に対応するカウンタ値を“0x10”から“0x11”にインクリメントする。
ところで、上述の如き追記型書き込みを実施した場合、更新前のデータが格納されていた物理ページアドレス“0x0060B0”に相当するページ領域はアドレス変換テーブル42の物理アドレスフィールドから削除され、外からアクセスできなくなる。すなわち無効化される。
しかし、それらにはデータが書き込まれており、そのままでは空き領域として使用することもできない。上述のような書き換えを何度も繰り返すと、多くの無効ページ領域が発生する。それらは再度空き領域として使用できるよう、消去して回復させる必要がある。またその場合、消去ブロック“0x0060”に残された他の有効データは退避させる必要がある。
このような回復処理は、たとえばまず対象ブロック内の有効データを、更新の際と同様に一旦ページバッファに読み出してから、他のブロックの空き領域に追記で書き込んでいき、それによって実質的な退避を行なえば良い。すなわち有効ページを仮更新することで、その元領域を全て無効化する。その後対象ブロックを消去することによって、回復処理が実施される。
図6(A)〜(C)には消去ブロック51,52内部の有効データを退避し、無効ページ領域を実質的に回復させる手順を、概念的に図解している。
ステップST11
上述の如く追記による書き換えが進行し、消去ブロック51、52には、一度データが書き込まれた後、更新によって無効化されたページ領域群56、58が、有効なページ領域群55、57、59と共存しているとする。
ここで有効ページ領域のデータを残しつつ、無効化領域を空き領域に回復させる必要がある。
一方、53、54は現在ライトポインタ45によって選択されて、追記用の空き領域として使用している消去ブロックを示し、ページ領域60まで書き込みがなされている。
ステップST12
有効なページ領域群55、57、59のデータを消去ブロック53、54内の空きページ領域群61、62、63に下詰めにして順番にコピーしていく。
一方、無効なページ領域群56、58はコピーしない。各ページの有効/無効の判定は、たとえばデータ書き込み時に冗長部に論理ページアドレスを記載しておき、それと物理ページアドレスとの対応が、アドレス変換テーブル42と一致するか否かをチェックすることで実施する。
有効ページの場合、対象ページ内のデータ全体をページバッファ34に読み込み、消去ブロック53、54に書き込むとともに、アドレス変換テーブル42を更新する。すなわち各々のページ領域の論理アドレスに対応する物理アドレスフィールドに、コピー先の物理ページアドレスを登録していく。またこの作業に伴って、元のページ領域55、57、59は無効化される。したがって、各ページの処理ごとに、無効カウンタテーブル44の該当ブロックのカウンタ値がインクリメントされる。
この操作は、すなわち有効ページ領域群55、57、59を追記方式で書き換える作業に等しい。
実際には書き換えずコピーするのみであるが、この作業によって消去ブロック51、52内の全てのページは無効化され、有効ページ領域のデータは消去ブロック53、54に実質的に退避させられる。
ステップST13
消去ブロック51、52を消去する。これに伴って検索テーブル43における該当ブロックの“Used Flag”はゼロにリセットされる。また、消去カウンタテーブル45における該当ブロックの消去カウンタ値がインクリメントされる。これによってその内部は全て空き領域となり、後の追記に使用することが可能になる。
これをもって無効領域56、58は実効的に回復される。
このように無効ページ領域の回復処理は、各有効ページ領域のコピーによる退避処理と、元消去ブロックの消去よりなる。また、回復対象となる消去ブロック内の有効ページに通常の更新処理と同様の手順でダミーの更新を施し、それをもってページの退避を実行すれば、回復処理時の有効ページ退避を通常の書き込みアルゴリズムに統合させることが可能である。この場合、制御が容易になるばかりではなく、フラッシュメモリへの書き込みの均一化等、書き込み時の信頼性向上のための各種工夫を回復処理にも適用することができ、記憶装置の総合的な信頼性を向上させることができる。
ところで、上記回復処理は、記憶装置の待機時やシステムのアイドル時に実施することで、ユーザーからその存在を隠蔽できる。この場合たとえば、待機状態に入ると自動的に回復処理を実施する機能を記憶装置30に設けたり、またはシステムがアイドル状態になるとホストシステム50が回復処理用のコマンドを送信し、それに応じて記憶装置30が回復処理を実行する。
この際、回復処理の対象ブロックを選定する機能が必要となるが、これはたとえば無効カウンタテーブル44の一部または全部をスキャンし、無効ページの多いブロックを検索してそれを回復対象とすることで、効率の良い回復処理が実行できる。
さらに、回復処理を実行した後、消去カウンタテーブル45を参照することで、対象ブロックの消去回数をチェックできる。ここで消去回数が保証された仕様の上限に近づいている場合、それ以上動的なデータの書き込みが実施されないよう、消去回数の少ないブロックから静的なデータを移動させて、そのブロックを埋めてしまう。移動元のブロックは、たとえば消去カウンタテーブル45の一部または全部をスキャンし、消去回数の少ないブロックを検索してそれを移動元ブロックとして選択する。このように静的なデータでブロックをキャッピングすることで、それ以降このブロックのデータが更新され、無効化されて再度回復対象とされ、消去されることを防止する。
上記一連の作業を回復シーケンスとして図7に示す。たとえば記憶装置30は、待機状態に入った際、まず回復処理が必要か否かを判定する。それはたとえば装置内の無効ページ総数や空きページ総数等をチェックすることで実施され、回復処理が必要と判定された場合、以下の回復シーケンスを実行する。
ステップST21
まず、無効カウンタテーブル44の一部または全部をスキャンして、無効ページ数の多いブロックを検索する。その結果から回復対象ブロックを決定する。
ステップST22
上記ブロックを回復対象として、図6のような回復処理を実施する。なお、全てのページが無効化されたブロックに対しては、無効化判定と退避処理を最初から省略し、最初から消去のみを実施しても良い。
ステップST23
消去カウンタテーブル45から上記ブロックの消去回数を取得する。たとえばフラッシュメモリ35、36におけるブロック消去回数の上限保証値が、チップの仕様として1万回であったとすると、判定基準を0x2000、すなわち8192回とし、この基準に達したブロックに対しては静的データの格納によるキャッピング処理を実行する(ST24,ST25)。
ステップST24
消去カウンタテーブル45の一部または全部をスキャンして、書き換え回数の少ないブロックを静的データの移動元として選択する。
ステップST25
図6の処理ST12に示した仮更新と同様の手順で、移動元ブロック内の有効データを、回復処理を実施したブロックに順次移動させていく。移動先のブロックが満杯になったらキャッピング処理は完了となり、回復シーケンスを終了する。
一方、移動先のブロックにまだ空きがある内に移動元ブロックの有効データが全て無効化された場合には、ステップST24の処理に戻って次の移動元ブロックを検索する。この際最初の移動元ブロックを消去しても良い(ST26,2T27)。
なお、RAM40内の無効カウンタテーブル44や消去カウンタテーブル45は、電源オフ時にはフラッシュメモリデバイス39の規定の物理ブロックに格納保存し、電源投入時には再びRAM内に読み出して使用する。
ここで、仮にキャッピングのために移動したデータがたまたま更新され、再度同じブロックが回復対象に選択されても、回復処理の完了時には、ステップST23の処理で上記消去カウンタ値が再度参照され、再び静的データによるキャッピングが実施される。したがって、動的データの書き込み及び消去に対する抑止効果は継続することになる。
また、ステップST24で一旦移動元として選択されたブロックは、その後消去されて動的データが入る可能性が高いので、続けて移動元として選択されないようにするのが望ましい。これはたとえば消去カウンタテーブル45の対応フィールドの最上位ビットに”1”をたてて禁止フラグにすれば良い。
ところで、上記シーケンスではステップST23のキャッピング処理実行判定や、ステップST23のデータ移動元ブロックの選択に、消去カウンタテーブル45を使用した。
しかし、左記テーブルは各ブロックごとの消去カウンタフィールドに2バイトを要するので、たとえば64kブロックのフラッシュメモリを使用した大容量ストレージでは128kバイトのRAMを占有する。これはコスト増の要因となる。
その対策として、消去カウンタテーブルをフラッシュメモリ内に保存し、その一部だけをRAMに読み出す手法が考えられる。図8に関連付けてその実施形態を説明する。
記憶装置のハードウエア構成は図3と同様で、フラッシュメモリ35、36は周辺回路とともに一体化した一つのフラッシュメモリデバイス39として扱われるが、64k個の消去ブロックを有し、その物理アドレスPBAは”0x0000”〜”0xFFFF”となっている。各ブロックは256ページで構成されており、各ページの実サイズは8kBである。すなわちフラッシュメモリデバイス39あるいは記憶装置30の容量は約128GBと巨大化している。
消去カウンタテーブルは64分割されてフラッシュメモリデバイス39に保存されており、各小テーブルは1kブロックの領域をカバーしている。保存には一つのブロックが動的に確保され、ブロック内の各ページに1個ずつの小テーブルが格納される。余った空きページは書き換え用に使用される。
各小テーブルのフラッシュメモリデバイス39内の格納場所は、RAM40に常駐した二次テーブル70に記載されている。ここではPBA”0x0521”にカウンタテーブル保存用のブロックが確保されており、各テーブルごとに格納先のページオフセット(ブロック内のページ位置)が記載されている。二次テーブル70の容量は66バイトである。
たとえばPBA“0x1060”のブロックにおける消去回数を取得する場合は、以下の手順で行う。
ステップST31
二次テーブル(70)からPBA“0x1060”を含む小テーブルの格納場所を取得する。これは#4の小テーブルが該当し、そのアドレス(PPA)は“0x052101”である。
ステップST32
上記アドレスでフラッシュメモリデバイス39をアクセスし、小テーブル71を読み出してRAM40内に格納する。
ステップST33
小テーブル71からPBA“0x1060”の消去カウンタ値“0x1A00”を取得する。
なお、その後小テーブル71が書き換えられた場合、それは再度フラッシュメモリデバイス39に書き戻す必要がある。この時はカウンタテーブル用に確保したPBA“0x0521”のブロック内に空きページを探し、そこに書き込んで二次テーブル70の対応ページオフセット値を更新する。
なお、このように消去カウンタテーブルをフラッシュメモリ39に格納すると、そのアクセス速度はRAMよりはるかに遅いので、たとえば図7のフローにおけるステップST24の処理で、消去カウンタ値の小さなブロックを検索するのが煩雑となる。この対処例を図9に示す。
分布テーブル72は上記実施例で分割した小テーブルごとの、所属ブロックの消去カウンタ値の分布状態を示している。
各ブロックの消去カウンタ値は、値の大小に応じて8つのカテゴリに分類されている。カテゴリごとにカウンタ値が該当するブロックの数が示されており、たとえば#1の小テーブルにおいては消去カウンタ値が“0x003F”以下のブロックが4つ存在する。
各フィールドは2バイト(1kブロックをカバー)なので、このテーブルの総容量は1kバイトと小さく、RAMに常駐させることができる。
なお、このフィールドの値はブロックの有無のみを示すフラグでも良い。その場合RAMの占有領域は僅か64バイトである。
たとえば、消去カウンタ値が最も少ないカテゴリに属するブロックを検索する場合、以下の手順で行う。
ステップST41
まず、分布テーブル72において、小テーブルの先頭#0から消去カウンタ値が“0x0000〜0x003F”のカテゴリをスキャンし、値が“1”以上の小テーブルを検索する。ここでは#1の小テーブルが該当した。すなわち、#1の小テーブル内には、カウンタ値“0x0000〜0x003F”のブロックが4個存在することが確認された。
ステップST42
図8の二次テーブル70から#1の小テーブルの格納場所を取得し、フラッシュメモリデバイス39をアクセスして該当テーブル73をRAM40内に格納する。
ステップST43
小テーブル73のカウンタ値を先頭からスキャンして、消去カウンタ値が“0x0000〜0x003F”のブロックを検索する。これによってPBA“0x0520”のブロックが該当ブロックとして抽出された。
このようにして、たとえば図7の回復シーケンスのステップST24において、消去カウンタ値が“0x0000〜0x003F”の、最も消去回数が少ないカテゴリに属するブロックが、静的データの移動元ブロックとして検索される。検索を2段階で実施することで、迅速かつ的確に所望のブロックを抽出できる。
なお、静的データによるキャッピングにおいては、データの移動元として最も消去回数の少ないブロックが選択されるのが理想的であるが、少なくともデータの移動先たるブロックに対して消去回数のより少ないブロックであれば、その中のデータはより静的であると想定でき、キャッピングの効果を期待できる。
したがって、移動元ブロックの選択には、システムのリソース等に応じてより簡略な各種バリエーションが存在し得る。たとえば図7において回復対象ブロックPBA“0x1060”の消去回数をチェックした際に、消去カウンタの小テーブル#4がRAM内に読み出されている。その小テーブルの全体または一部をスキャンして、消去回数が最小のブロックを移動元として選択すれば、上記分布テーブル72は不要である。
また、RAM内への消去カウンタテーブルの構築自体を省略して、各ブロックの消去回数の格納にはブロック内の先頭ページを使用しても良い。この場合、ブロックのデータ格納領域が1ページずつ減少するが、テーブル格納用のRAMのリソースは不要となる。移動元ブロックの選択は、たとえば複数ブロックの先頭ページをランダムまたはシーケンシャルにスキャンして、その中から消去回数が最小のブロックを選択する。
ところで、各ブロックごとに消去回数を管理するのではなく、より簡略な消去回数の指標を設定する第2の実施形態を、図10に関連付けて説明する。
本第2の実施形態では、総計64k個のブロックが64ブロックずつの1kグループに分けられ、各ブロックごとに消去の指標カウンタが設置されている。それらはRAM上に設けられたテーブル75に格納されており、指標カウンタの各フィールドは2バイトなので、テーブルサイズは2kバイトである。
指標カウンタは各グループごとの消去回数を示す指標である。この指標の大きなグループに属するブロックは、消去回数が多いと想定され、その前提に従って処理される。この指標カウンタは例えば以下のように、データ書き込みに関連して計上される。
検索テーブル74は図5に示した検索テーブル43と同じものであり、書き込み先のブロック選択に使用される。各ブロックごとにそれらが現在使用されているか、もしくは消去済みの空き状態であるかが、“Used Flag”でマークされている。さらに欠陥ブロックの場合、“Defect Flag”が”1”となっている。
データの書き込みは、ライトポインタ76のインクリメントに従って消去済みブロックが検索され、その下位アドレスのページから順次実施されていく。選択がブロックの末尾に達したら、それ以降のブロックの“Used Flag”と“Defect Flag”がスキャンされ、次の未使用かつ良品のブロックが検出されて、その先頭ページが選択される。
このようにして、ライトポインタは書き込み先となるブロックを検索しつつ、フラッシュメモリ内の領域を繰り返し循環する。
ここでたとえば#2の指標カウンタは、PBA“0x0080〜0x00BF”の所属ブロックのいずれかが、ライトポインタの一循環の中で、最初に選択されたときにインクリメントされる。その後、同じ循環中に他の所属ブロックが選択されても、このカウンタはインクリメントされない。
あるブロックが書き込み対象として選択される回数は、そのブロックの消去回数に対応している。その頻度はライトポインタが一循環した際に最大で一回のみとなる。したがって、上記指標は、各グループに所属するブロックに実施され得る、消去回数の最大値を示す数値となる。
本第2の実施形態における回復シーケンスのフローは図7に示した手順と同様であるが、ステップST23における回復処理後の消去回数判定、およびステップST24における静的データの移動元ブロックの選定は、上記指標カウンタに基づいて実行される。すなわちステップST23では回復対象となったブロックが所属するグループの指標カウンタ値が既定値を越えていたら、そのブロックに対して静的データによるキャッピングを実施する。また、その際のデータ移動元ブロックの選定は、指標カウンタ値のもっとも小さなグループから行われる。
なお、指標カウンタ値が最小のグループが一度検出されると、データ移動元としてその先頭アドレスのブロックが選定され、グループ内のブロックのオフセットがポインタとして保存される。その後キャッピング処理が実施されるごとに、上記オフセットポインタがインクリメントされ、同一グループ内のブロックが移動元として順次選択される。
こうしてポインタがグループの末尾ブロックに達したら、このグループの指標値カウンタの最上位ビットに“1”を立て、以降そのグループは移動元として選択されなくなる。その次からは、改めて指標カウンタ値を元に、次のグループが選択される。
このように本実施形態では、消去回数の大小判定は指標カウンタに基づいてグループ単位で行われる。ただし、実際のデータ移動によるキャッピングは、消去されたブロックのみを対象にブロック単位で実施される。したがって、指標値の大きいグループ内にあっても、静的なデータを保持し、消去がなされないブロックに対しては、キャッピング処理も実施されない。
なお、上記指標カウンタの計上方法については、各グループに属するブロックの消去回数を反映するのであれば、各種バリエーションが存在し得る。一例としてはグループ内ブロックの消去の累計回数を、指標カウンタとして計上しても良い。
ところでここまでは、独立した記憶装置の内部に、アドレス変換等各種制御を実装する場合について説明してきた。しかしアドレス変換テーブルの管理と関連処理を、ホスト側の制御で実施することも可能である。このような形態は、特にフラッシュメモリが内部に組み込まれた、安価なコンピュータシステムに適している。そのようなコンピュータシステムの例を図11に示す。
図11は、アドレス変換テーブルの管理と関連処理を、ホスト側の制御で実施するコンピュータシステムの構成例を示す図である。
この場合、ホストシステム80bは、CPU81bとシステムメモリ82bを含む。
CPU81bは32ビットのシステムバス83bを介してシステムメモリであるRAM82bと接続されている。さらに、システムバス83bにはブリッジ回路84bが接続されており、ブリッジ回路84bに繋がる32ビットのデータバス38bには、16ビットの入出力を持つ2チップのNAND型フラッシュメモリ35b,36bが並列接続されている。2つのチップは読み出しや書き込みにおいて、同時並列にアクセスされる。アクセスされたページ領域を一時記憶するページバッファ34bは、ブリッジ回路84bに内蔵されている。
ブリッジ回路84bは、CPU81bから各種コマンドを受け取り、フラッシュメモリ35b、36bとCPU81bまたはシステムメモリ82bとの間のデータのやり取りを、ページバッファ34bを用いて媒介する。また必要に応じて転送データにECC符号化によるエラー補正を施す。
ブリッジ回路84bが受け取るコマンドは、たとえばフラッシュメモリ35b、36bの所定のページへのアクセスの他、同フラッシュメモリの所定ブロックの消去、および所定ページの指定アドレスへのコピー、フラッシュメモリのリセット等である。
一方、システムメモリ82b内には上記フラッシュ記憶システムを制御するためのドライバ86bが常駐している。このドライバ86bは、OSやアプリケーションからの記憶装置へのアクセスを受け、同じメモリ中に構成されたアドレス変換テーブル42bを参照してアクセス時のページアドレスを変換する。
また、データ更新時には検索テーブル43bとライトポインタ45bを参照して書き込み先ページアドレスを決定し、更新用データとともにフラッシュメモリへの書き込み命令をブリッジ回路84bに送信する。あるいは更新され無効化されたページが発生すると、それを無効カウンタテーブル44bに反映させる。
すなわちこのようなケースでは、CPU81bとシステムメモリ82bよりなるホストシステム85b自体が図3における制御回路32の役割を代替し、アドレス変換テーブルの管理と無効ページ領域の回復処理を実施する。すなわちドライバ86bは各種テーブルやポインタを使用し、OSやアプリケーションから論理アドレスを受け、物理アドレスPPAを生成してブリッジ回路84bにコマンドを送信することで、フラッシュメモリ35b、36bの各種アクセスを実施する。
なお、これらアドレス変換テーブル42b、検索テーブル43b、およびライトポインタ46bには、たとえば図5に示したテーブル42、43、よびポインタ46と同様のものが使用される。
このようなシステムにおいても本発明の概念は同様に適用することが可能である。すなわちホストシステム80bには、さらにRAM82b内に、各ブロックの無効ページ数を管理するカウンタテーブル44bが構築されている。さらに各ブロックの消去回数を管理するカウンタテーブル45bが構築されている。
ここでシステムがアイドル状態になると、ドライバ86bは自律的にカウンタテーブル44bから無効化ページ数の多いブロックを検索し、取得したブロックを対象として回復処理を実行する。すなわちブロック内の有効ページを他ブロックの未使用ページにコピーし、しかる後に対象ブロックを消去して未使用状態にする。カウンタテーブル44bには、たとえば図5のテーブル44と同様の構成が使用できる。
さらに、たとえば消去カウンタテーブル45bを用いて回復対象となったブロックの消去回数がチェックされる。それが既定値を越えていれば、同じ消去カウンタテーブル45bに基づいて消去回数のより少ないブロックが選択され、それを移動元としてデータの移動が実施される。これによって回復対象ブロックが静的データでキャッピングされる。
NAND型フラッシュメモリの内部構成例を示す図である。 フラッシュメモリにおける書き込みとマッピング手順を説明するための図である。 本発明の実施形態に係る記憶装置を採用したコンピュータシステムの構成例を示す図である。 アドレス変換テーブル、検索テーブル、および無効カウンタテーブルの構成例を示す図である。 記憶装置の内部におけるフラッシュメモリデバイスへの具体的アクセス処理を説明するためのフローチャートである。 消去ブロック内部の有効データを退避し、無効ページ領域を実質的に回復させる手順を概念的に示す図である。 回復シーケンスを説明するためのフローチャートである。 消去カウンタテーブルの分割と格納を説明するための図である。 カウンタ値の検索処理について説明するための図である。 簡略な消去回数の指標を設定する第2の実施形態を説明するための図である。 アドレス変換テーブルの管理と関連処理を、ホスト側の制御で実施するコンピュータシステムの構成例を示す図である。
符号の説明
30・・・記憶装置、31・・・インターフェース回路、32・・・制御回路、33・・・内部バス、34・・・ページバッファ、35,36・・・NAND型フラッシュメモリ、37・・・制御回路、38・・・メモリバス、39・・・フラッシュメモリデバイス(フラッシュメモリモジュール)、40・・・RAM、41・・・ワーキングエリア、42,42b・・・アドレス変換テーブル、43,43b・・・、検索テーブル、44,44b・・・無効カウンタテーブル、45,45b・・・消去カウンタテーブル、46,46b・・・ライトポインタ、50,80b・・・ホストシステム。

Claims (15)

  1. 主記憶媒体としてフラッシュメモリと、
    制御部と、を有し、
    上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含み、
    上記制御部は、
    上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、
    無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、該ブロックを未使用ブロックに回復させ、
    上記回復処理に引き続き、回復させたブロックの消去回数を検査し、その結果に応じて、上記消去回数のより少ないブロックのデータを該ブロックに移動させる
    記憶装置。
  2. 上記制御部は、上記回復処理に先立って、複数のブロックにおける無効ページ数を比較参照し、その結果から回復対象ブロックを選択する
    請求項1記載の記憶装置。
  3. ブロックごとの消去回数を反映したカウンタがテーブル化されており、少なくともその一部が記憶装置或いはシステム内部の第2メモリに保存されている
    請求項1記載の記憶装置。
  4. 上記テーブルは分割されてフラッシュメモリ内に保存されており、必要に応じてその一部が第2メモリ内に読み出され、参照される
    請求項3記載の記憶装置。
  5. 主記憶媒体としてフラッシュメモリと、
    制御部と、を有し、
    上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含み、
    上記制御部は、
    上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、
    無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、該ブロックを未使用ブロックに回復させ、
    複数のブロックからなるユニットごとにカウンタが設置されており、当該カウンタを各ユニットに所属するブロックの最大消去回数あるいは累計消去回数を反映するように適時インクリメントまたはディクリメントし、
    上記回復処理に引き続き、回復させたブロックが所属するユニットのカウンタを検査し、その結果に応じて、当該カウンタ値がより少ない消去回数に該当するユニットを選択し、その中のデータを該ブロックに移動させる
    記憶装置。
  6. 上記制御部は、上記回復処理に先立って、複数のブロックにおける無効ページ数を比較参照し、その結果から回復対象ブロックを選択する
    請求項5記載の記憶装置。
  7. 主記憶媒体としてフラッシュメモリと、
    制御部と、を有し、
    上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含み、
    上記制御部は、
    上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、
    各ブロックには各々独立に、或いは複数ブロックよりなるユニットごとに、その消去回数を反映した指標を設け、その値を当該記憶装置またはシステム内に保存し、
    複数ブロックにおける無効ページ数を比較参照して回復対象ブロックを選択し、
    上記ブロックから有効なページのデータを他のブロックにコピーし、しかる後に該ブロックを消去して未使用ブロックに回復させ、
    上記ブロックの該指標値を検査し、その結果に応じて、より少ない消去回数に該当する指標値を持つブロックのデータを該ブロックに移動させる
    記憶装置。
  8. 主記憶媒体としてフラッシュメモリと、
    制御部と、
    上記フラッシュメモリのデータにアクセス可能な処理装置と、を有し、
    上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含み、
    上記制御部は、
    上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、
    無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、該ブロックを未使用ブロックに回復させ、
    上記回復処理に引き続き、回復させたブロックの消去回数を検査し、その結果に応じて、上記消去回数のより少ないブロックのデータを該ブロックに移動させる
    コンピュータシステム。
  9. 上記制御部は、上記回復処理に先立って、複数のブロックにおける無効ページ数を比較参照し、その結果から回復対象ブロックを選択する
    請求項8記載のコンピュータシステム。
  10. ブロックごとの消去回数を反映したカウンタがテーブル化されており、少なくともその一部が記憶装置或いはシステム内部の第2メモリに保存されている
    請求項8記載のコンピュータシステム。
  11. 上記テーブルは分割されてフラッシュメモリ内に保存されており、必要に応じてその一部が第2メモリ内に読み出され、参照される
    請求項10記載のコンピュータシステム。
  12. 主記憶媒体としてフラッシュメモリと、
    制御部と、
    上記フラッシュメモリのデータにアクセス可能な処理装置と、を有し、
    上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含み、
    上記制御部は、
    上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、
    無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、該ブロックを未使用ブロックに回復させ、
    複数のブロックからなるユニットごとにカウンタが設置されており、当該カウンタを各ユニットに所属するブロックの最大消去回数あるいは累計消去回数を反映するように適時インクリメントまたはディクリメントし、
    上記回復処理に引き続き、回復させたブロックが所属するユニットのカウンタを検査し、その結果に応じて、当該カウンタ値がより少ない消去回数に該当するユニットを選択し、その中のデータを該ブロックに移動させる
    コンピュータシステム。
  13. 上記制御部は、上記回復処理に先立って、複数のブロックにおける無効ページ数を比較参照し、その結果から回復対象ブロックを選択する
    請求項12記載のコンピュータシステム。
  14. 主記憶媒体としてフラッシュメモリと、
    制御部と、
    上記フラッシュメモリのデータにアクセス可能な処理装置と、を有し、
    上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含み、
    上記制御部は、
    上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、
    各ブロックには各々独立に、或いは複数ブロックよりなるユニットごとに、その消去回数を反映した指標を設け、その値を当該記憶装置またはシステム内に保存し、
    複数ブロックにおける無効ページ数を比較参照して回復対象ブロックを選択し、
    上記ブロックから有効なページのデータを他のブロックにコピーし、しかる後に該ブロックを消去して未使用ブロックに回復させ、
    上記ブロックの該指標値を検査し、その結果に応じて、より少ない消去回数に該当する指標値を持つブロックのデータを該ブロックに移動させる
    コンピュータシステム。
  15. 主記憶媒体としてフラッシュメモリを有し、上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含む記憶装置のデータ処理方法であって、
    上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施するステップと、
    無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、該ブロックを未使用ブロックに回復させるステップと、
    上記回復処理に引き続き、回復させたブロックの消去回数を検査し、その結果に応じて、上記消去回数のより少ないブロックのデータを該ブロックに移動させるステップと
    を有する記憶装置のデータ処理方法。
JP2006331098A 2006-12-07 2006-12-07 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法 Pending JP2008146254A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006331098A JP2008146254A (ja) 2006-12-07 2006-12-07 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006331098A JP2008146254A (ja) 2006-12-07 2006-12-07 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法

Publications (1)

Publication Number Publication Date
JP2008146254A true JP2008146254A (ja) 2008-06-26

Family

ID=39606382

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006331098A Pending JP2008146254A (ja) 2006-12-07 2006-12-07 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法

Country Status (1)

Country Link
JP (1) JP2008146254A (ja)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010176280A (ja) * 2009-01-28 2010-08-12 Mitsubishi Electric Corp 電子制御装置
JP2010182266A (ja) * 2009-02-09 2010-08-19 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2010250533A (ja) * 2009-04-15 2010-11-04 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
WO2011010348A1 (ja) * 2009-07-23 2011-01-27 株式会社日立製作所 フラッシュメモリ装置
WO2011068109A1 (ja) * 2009-12-03 2011-06-09 株式会社日立製作所 記憶装置、およびメモリコントローラ
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
JP2014241185A (ja) * 2007-03-07 2014-12-25 コンバーサント・インテレクチュアル・プロパティ・マネジメント・インコーポレイテッドConversant Intellectual Property Management Inc. フラッシュメモリ向け部分ブロック消去アーキテクチャ
JP2017146722A (ja) * 2016-02-16 2017-08-24 日本電気株式会社 ストレージ装置
JP2017162065A (ja) * 2016-03-08 2017-09-14 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法
CN108536610A (zh) * 2017-03-03 2018-09-14 株式会社东芝 管理装置、信息处理装置以及管理方法
US10884630B2 (en) * 2017-04-13 2021-01-05 Hitachi, Ltd. Storage system
CN112181316A (zh) * 2020-11-04 2021-01-05 深圳佰维存储科技股份有限公司 数据块信息继承方法、装置、存储介质及电子设备

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014241185A (ja) * 2007-03-07 2014-12-25 コンバーサント・インテレクチュアル・プロパティ・マネジメント・インコーポレイテッドConversant Intellectual Property Management Inc. フラッシュメモリ向け部分ブロック消去アーキテクチャ
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
JP4647010B2 (ja) * 2009-01-28 2011-03-09 三菱電機株式会社 電子制御装置
JP2010176280A (ja) * 2009-01-28 2010-08-12 Mitsubishi Electric Corp 電子制御装置
JP4666080B2 (ja) * 2009-02-09 2011-04-06 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2010182266A (ja) * 2009-02-09 2010-08-19 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2010250533A (ja) * 2009-04-15 2010-11-04 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
WO2011010348A1 (ja) * 2009-07-23 2011-01-27 株式会社日立製作所 フラッシュメモリ装置
US8949515B2 (en) 2009-12-03 2015-02-03 Hitachi, Ltd. Storage device and memory controller
JP5480913B2 (ja) * 2009-12-03 2014-04-23 株式会社日立製作所 記憶装置、およびメモリコントローラ
GB2488480A (en) * 2009-12-03 2012-08-29 Hitachi Ltd Storage device and memory controller
WO2011068109A1 (ja) * 2009-12-03 2011-06-09 株式会社日立製作所 記憶装置、およびメモリコントローラ
GB2488480B (en) * 2009-12-03 2017-07-19 Hitachi Ltd Storage device and memory controller
JP2017146722A (ja) * 2016-02-16 2017-08-24 日本電気株式会社 ストレージ装置
JP2017162065A (ja) * 2016-03-08 2017-09-14 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法
CN108536610A (zh) * 2017-03-03 2018-09-14 株式会社东芝 管理装置、信息处理装置以及管理方法
JP2018147191A (ja) * 2017-03-03 2018-09-20 株式会社東芝 管理装置、情報処理装置および管理方法
US10719436B2 (en) 2017-03-03 2020-07-21 Kabushiki Kaisha Toshiba Management device, information processing device, and management method
US10884630B2 (en) * 2017-04-13 2021-01-05 Hitachi, Ltd. Storage system
CN112181316A (zh) * 2020-11-04 2021-01-05 深圳佰维存储科技股份有限公司 数据块信息继承方法、装置、存储介质及电子设备

Similar Documents

Publication Publication Date Title
CN109783009B (zh) 存储器系统及其操作方法
JP2008146254A (ja) 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法
US9075740B2 (en) Memory system
US8745310B2 (en) Storage apparatus, computer system, and method for managing storage apparatus
JP4058322B2 (ja) メモリカード
JP2008146253A (ja) 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法
JP4524309B2 (ja) フラッシュメモリ用のメモリコントローラ
JP4910360B2 (ja) 記憶装置、コンピュータシステム、およびデータ書き込み方法
JP5130646B2 (ja) 記憶装置
JP2008146255A (ja) 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法
JP5612514B2 (ja) 不揮発性メモリコントローラ及び不揮発性記憶装置
US8285954B2 (en) Memory system managing a plurality of logs
US11386005B2 (en) Memory system, memory controller, and method of operating memory system for caching journal information for zone in the journal cache
US10740013B2 (en) Non-volatile data-storage device with spare block pools using a block clearing method
JP2007164318A (ja) 記憶装置
KR20100094241A (ko) 예비 블록을 포함하지 않는 불휘발성 메모리 장치
KR101403922B1 (ko) 접근 빈도에 따라 데이터를 할당하는 저장장치 및 저장방법
CN112130749B (zh) 数据储存装置以及非挥发式存储器控制方法
JP2007334413A (ja) 記憶装置
TWI748542B (zh) 電子裝置、快閃記憶體控制器及快閃記憶體模組進行垃圾收集操作的方法
JP2008181203A (ja) 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法
JP2011203771A (ja) 不揮発性記憶装置および不揮発性メモリコントローラ
JP2008112455A (ja) メモリカード
CN114520013A (zh) 存储器系统及其操作方法
JP4801111B2 (ja) フラッシュメモリのデータ即時リフレッシュ方法