JP2008181203A - 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 - Google Patents
記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 Download PDFInfo
- Publication number
- JP2008181203A JP2008181203A JP2007012607A JP2007012607A JP2008181203A JP 2008181203 A JP2008181203 A JP 2008181203A JP 2007012607 A JP2007012607 A JP 2007012607A JP 2007012607 A JP2007012607 A JP 2007012607A JP 2008181203 A JP2008181203 A JP 2008181203A
- Authority
- JP
- Japan
- Prior art keywords
- block
- data
- flash memory
- page
- written
- 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
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Read Only Memory (AREA)
Abstract
【課題】循環書き込みを効果的に解消でき、各ブロックの書き換え回数の上限を統計的に管理することが可能な記憶装置およびコンピュータシステム、記憶装置の管理方法を提供する。
【解決手段】主記憶メディアとしてフラッシュメモリデバイス39と、制御部32と、を有し、制御部32は、ユーザーアクセスへの応答とは別個に、フラッシュメモリデバイス39の任意の書き込み済みブロックのデータを、乱数を用いて選んだ空きブロックに時折移動させ、しかる後移動元ブロックを消去する。
【選択図】図4
【解決手段】主記憶メディアとしてフラッシュメモリデバイス39と、制御部32と、を有し、制御部32は、ユーザーアクセスへの応答とは別個に、フラッシュメモリデバイス39の任意の書き込み済みブロックのデータを、乱数を用いて選んだ空きブロックに時折移動させ、しかる後移動元ブロックを消去する。
【選択図】図4
Description
本発明は、不揮発性メモリを含む記憶装置およびコンピュータシステム、記憶装置の管理方法に関するものである。
近年、デジタルスチルカメラやモバイルコンピュータ機器の記憶媒体として、フラッシュメモリが注目されている。
フラッシュメモリは、トンネリングやホットエレクトロン加速を用いて、電子にゲート絶縁膜を通過させ、それらを浮遊ゲートやトラップ層に注入し、セルトランジスタの閾値を変化させることでデータを記憶させる半導体メモリである。積層ゲート構造やMNOS構造等を用いたトランジスタ1つのみでメモリセルを構成できるため、安価かつ大容量のメモリを実現できる。
その代表例として、NAND型フラッシュメモリが挙げられる。
その代表例として、NAND型フラッシュメモリが挙げられる。
図1は、NAND型フラッシュメモリの内部構成例を示す図である。
図1のNAND型フラッシュメモリは、ビット線BL1〜BLnに接続された複数のメモリユニット1−1〜1−nがアレイ状に(縦横)に配列されている。
たとえば、選択用トランジスタ2のゲートが選択ゲート線SL1に接続され、選択用トランジスタ3のゲートが選択ゲート線SL2に接続されている。また、各メモリセルN0〜N15のゲートがワード線WL0〜WL15に接続されている。
図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型フラッシュを使用するシステム側で、パリティビット等の各種管理データを格納することが可能である。この予備領域への書き込みは、通常ユーザーデータ領域への書き込みと一括で行なう必要があり、両者は常にセットとして扱われる。
ところで、フラッシュメモリの使用において注意すべき制約事項として、消去回数の上限が規定されていることが挙げられる。
同一ブロックの書き換えが繰り返されて、その消去回数が上限値を越えると、該ブロックにおけるデータ保持は保証されなくなる。たとえば上記NAND型フラッシュの消去回数の上限は10万回またはそれ以下である。
今後メモリセルの微細化に伴ってセルトランジスタの閾値ばらつきが増大し、動作マージンが劣化するため、さらに消去回数の上限は低下していく傾向にある。
同一ブロックの書き換えが繰り返されて、その消去回数が上限値を越えると、該ブロックにおけるデータ保持は保証されなくなる。たとえば上記NAND型フラッシュの消去回数の上限は10万回またはそれ以下である。
今後メモリセルの微細化に伴ってセルトランジスタの閾値ばらつきが増大し、動作マージンが劣化するため、さらに消去回数の上限は低下していく傾向にある。
また、近年微細化に伴う内部構造と書き込みメカニズムの変化から、特にNAND型フラッシュには以下のような制約が新たに課される傾向にある。
まず、ブロック内の各ページの書き込み順序に制約がつくようになった。
すなわち、各ページの書き込みは下位アドレスから上位アドレスへの順方向に制限されており、逆方向の書き込みは禁止されている。たとえば、一旦どこかのページに書き込みを実施したら、同一ブロック内のそれより下位のアドレスが未書き込みの状態でも、そこにデータを書き込むことはできない。
すなわち、各ページの書き込みは下位アドレスから上位アドレスへの順方向に制限されており、逆方向の書き込みは禁止されている。たとえば、一旦どこかのページに書き込みを実施したら、同一ブロック内のそれより下位のアドレスが未書き込みの状態でも、そこにデータを書き込むことはできない。
さらに、各ページの多重書き込みが困難になった。すなわち同一ページ内のデータは2回に分けて書き込むことが出来ない。従って各ページにデータを書き込む前に予備領域の一部のビットを予めマークしたり、データ書き込み後に予備領域にフラグを立てる等、これまでフラッシュメモリの管理に使用されていた各種テクニックが使えない状況になりつつある。
ISSCC2002予稿集のp106、セッション6.4 特開平8−328762号公報
ISSCC2002予稿集のp106、セッション6.4
近年、ハードディスクの消費電力の大きさや、シーク時間の長さ、耐衝撃性や携帯性等の問題を解消すべく、フラッシュメモリにその代替が期待されている。
しかし上述の如く、フラッシュメモリにはアクセス単位を大きくしないと高速化できないという欠点がある。また、データの上書きができないので、書き換えには必ず消去が必要であり、その際の消去ブロックはさらに大きい。このようにアクセス単位に対して消去単位が数十倍大きいのは、消去時間が長く、かつ書き込み時に非選択セルにディスターブが生じるフラッシュメモリには一般的な仕様である。
しかし上述の如く、フラッシュメモリにはアクセス単位を大きくしないと高速化できないという欠点がある。また、データの上書きができないので、書き換えには必ず消去が必要であり、その際の消去ブロックはさらに大きい。このようにアクセス単位に対して消去単位が数十倍大きいのは、消去時間が長く、かつ書き込み時に非選択セルにディスターブが生じるフラッシュメモリには一般的な仕様である。
このようなフラッシュメモリの仕様に対応し、小型のデータに関しても高速に書き換えを実施すべく、追記型の記憶システムが提案されている。
このようなシステムにおいては、書き換えは、更新データを空き領域に追記し、元のデータを無効化することで実施される。
より具体的には、ページ単位で論理アドレスを物理アドレスに対応させるアドレス変換テーブルを用い、書き換えは対照データの物理アドレスを変更し、記憶メディアの空き領域に追記することで実施する。
このようなシステムにおいては、書き換えは、更新データを空き領域に追記し、元のデータを無効化することで実施される。
より具体的には、ページ単位で論理アドレスを物理アドレスに対応させるアドレス変換テーブルを用い、書き換えは対照データの物理アドレスを変更し、記憶メディアの空き領域に追記することで実施する。
たとえば、特許文献1には、アドレス変換テーブルを用いた追記型記憶システムにおける管理方法の詳細が記載されている。図2に一例を示す。
図2において、11はブロック、12はページ領域、13はページバッファ、14は消去済み空きブロック、15はアドレス変換テーブル、16はページ領域をそれぞれ示している。
アドレス変換テーブル15からは、論理ページアドレス(Logical Page Abbress =LPA)をインデックスとして、対応するページのフラッシュメモリ上のアドレスである物理ページアドレス(Phisical Page Abbress =PPA)を取得することができる。
たとえば、ホストから指定された論理ページアドレス“0x5502”への書き込みに対して、アドレス変換テーブルを用いてページ単位でアドレス変換を実施し、フラッシュメモリ上の物理ページアドレス“0x6B05”を取得する。これによりブロック11内の対応するページ領域12へアクセスが実施される。
たとえば、ホストから指定された論理ページアドレス“0x5502”への書き込みに対して、アドレス変換テーブルを用いてページ単位でアドレス変換を実施し、フラッシュメモリ上の物理ページアドレス“0x6B05”を取得する。これによりブロック11内の対応するページ領域12へアクセスが実施される。
一方、同ページに更新を行う際には、フラッシュメモリ内で直接かきこめる適当な空きページ領域が検索される。たとえば物理ブロックアドレス“0xAA”に相当する消去済み空きブロック14の先頭ページ領域16が適切な書き込み先として選択された場合、ページ領域12のデータのみがページバッファ13を介して更新され、ページ領域16に書き込まれる。この際論理ページアドレス“0x5502”はページ領域16の物理アドレス“0xAA00”にリマッピングされる。ページ領域12上の旧データは、当面そのまま残して無効扱いとしておく。
なお、このように無効化されたページが蓄積してくると、ストレージの記憶領域を圧迫する。したがって、適時無効化されたページを多く含むブロックを選択し、そこに回復処理を実施する。
具体的には消去前に有効ページのみを他のブロックに全てコピーし、これに応じて変換テーブルに記載された物理アドレスを書き換え、最後に元ブロックを消去する。これらの作業は、記憶装置の待機時や、システムのアイドル時に実施することで、そのオーバーヘッドをユーザーから隠蔽することができる。
このような管理を実施すれば、フラッシュメモリ内に空き領域が存在する限りは、各ページデータの更新に対して1ページ分のデータ書き込みで良い。したがって、高速に書き換えを実施することができる。その間消去の必要も無いので、フラッシュメモリの書き換え回数も大幅に低減でき、その寿命も向上させることができる。
具体的には消去前に有効ページのみを他のブロックに全てコピーし、これに応じて変換テーブルに記載された物理アドレスを書き換え、最後に元ブロックを消去する。これらの作業は、記憶装置の待機時や、システムのアイドル時に実施することで、そのオーバーヘッドをユーザーから隠蔽することができる。
このような管理を実施すれば、フラッシュメモリ内に空き領域が存在する限りは、各ページデータの更新に対して1ページ分のデータ書き込みで良い。したがって、高速に書き換えを実施することができる。その間消去の必要も無いので、フラッシュメモリの書き換え回数も大幅に低減でき、その寿命も向上させることができる。
しかしそのような対策をとっても、ハードディスク代替のような用途では、十分な寿命が補償されるとは言えない。
たとえば、フラッシュメモリ内に格納されるデータにはアプリケーションプログラムやオペレーティングシステム(OS)のように書き換え頻度が極めて小さな静的データと、ユーザーデータのように書き換え頻度の大きな動的データとが混在している。
前者が格納されたブロックは殆ど無効化ページが発生しないが、後者のブロックは高頻度で書き換えられて、無効化ページが発生しやすい。
ここで後者のブロックに回復処理が施されると、それらは再び格納領域として開放され、動的なデータが再度格納される可能性が高まる。一方前者のブロックは全く書き換えがなされないまま、放置される。こうして後者のみに書き換えと消去が集中し、消去回数の上限値を越えて不良を発生させてしまう懸念がある。
たとえば、フラッシュメモリ内に格納されるデータにはアプリケーションプログラムやオペレーティングシステム(OS)のように書き換え頻度が極めて小さな静的データと、ユーザーデータのように書き換え頻度の大きな動的データとが混在している。
前者が格納されたブロックは殆ど無効化ページが発生しないが、後者のブロックは高頻度で書き換えられて、無効化ページが発生しやすい。
ここで後者のブロックに回復処理が施されると、それらは再び格納領域として開放され、動的なデータが再度格納される可能性が高まる。一方前者のブロックは全く書き換えがなされないまま、放置される。こうして後者のみに書き換えと消去が集中し、消去回数の上限値を越えて不良を発生させてしまう懸念がある。
図3は集中書き換えの一例を示す図である。
図3は物理アドレス上の領域を示しており、空白の領域は消去済み領域、ハッチングを付した領域は有効ページ領域。黒塗りの領域は無効ページ領域である。
図3は物理アドレス上の領域を示しており、空白の領域は消去済み領域、ハッチングを付した領域は有効ページ領域。黒塗りの領域は無効ページ領域である。
ステップST1:
まずストレージが満杯になるまでOS、アプリケーション、ユーザーデータ等が物理アドレス領域21に書き込まれる。なお、論理的に満杯まで書き込まれても、物理アドレス上には予備領域22が残っている。
まずストレージが満杯になるまでOS、アプリケーション、ユーザーデータ等が物理アドレス領域21に書き込まれる。なお、論理的に満杯まで書き込まれても、物理アドレス上には予備領域22が残っている。
ステップST2:
次に書き込んだデータ領域21の一部領域23が論理的に消去され、その一部に小さなWEBキャッシュ領域24が確保される。
次に書き込んだデータ領域21の一部領域23が論理的に消去され、その一部に小さなWEBキャッシュ領域24が確保される。
ステップST3:
それ以降ユーザーがブラウザを起動し、WEBを閲覧する都度に、WEBキャッシュ領域に繰り返し書き換えが実施される。
それ以降ユーザーがブラウザを起動し、WEBを閲覧する都度に、WEBキャッシュ領域に繰り返し書き換えが実施される。
ここでの集中書き換えは論理アドレス上の話であり、物理アドレス上においては消去済み領域を循環するようにデータが書き込まれる。すなわち、物理的には順次旧領域が無効化され、消去済み領域に更新後データが書き込まれる。
一方、ステップST2で消去された一部領域23は、ファイルシステムの管理の中で見かけ上消去されたに過ぎない。すなわち、その記憶装置上の論理及び物理アドレス領域には、有効ページとしてデータが残存しており、論理的に上書き更新がなされた際に、初めて対応する物理アドレス領域のページが無効化する。
したがってこの例では、WEBキャッシュとして確保され、更新された領域24のみが無効化し、他は有効ページとして残存する。そして無効化された領域のみが前述の回復処理或いは消去を施され、再度書き込み可能になる。
したがって、それ以降WEBキャッシュに書き込まれるデータは、無効化した領域24と予備領域22の間を循環し、それ以外の領域は使用されない。
通常、予備領域12の大きさは全体の1〜2%程度であり、8GBのストレージであれば、80MB程度である。たとえばパーソナルコンピュータ(パソコン)においてHDDに累計で書き込まれるデータ量を10TBとすると、ここに125,000回の書き換えが繰り返され、フラッシュメモリの消去寿命を越えてしまう。
したがって、それ以降WEBキャッシュに書き込まれるデータは、無効化した領域24と予備領域22の間を循環し、それ以外の領域は使用されない。
通常、予備領域12の大きさは全体の1〜2%程度であり、8GBのストレージであれば、80MB程度である。たとえばパーソナルコンピュータ(パソコン)においてHDDに累計で書き込まれるデータ量を10TBとすると、ここに125,000回の書き換えが繰り返され、フラッシュメモリの消去寿命を越えてしまう。
本発明は、循環書き込みを効果的に解消でき、各ブロックの書き換え回数の上限を統計的に管理することが可能な記憶装置およびコンピュータシステム、記憶装置の管理方法を提供することにある。
本発明の第1の観点の記憶装置は、主記憶メディアとしてフラッシュメモリデバイスと、制御部と、を有し、上記制御部は、ユーザーアクセスへの応答とは別個に、上記フラッシュメモリデバイスの任意の書き込み済みブロックのデータを、乱数を用いて選んだ空きブロックに時折移動させ、当該移動元ブロックを消去する。
本発明の第2の観点のコンピュータシステムは、主記憶メディアとしてフラッシュメモリデバイスと、制御部と、上記フラッシュメモリデバイスのデータにアクセス可能な処理装置と、を有し、上記制御部は、ユーザーアクセスへの応答とは別個に、上記フラッシュメモリデバイスの任意の書き込み済みブロックのデータを、乱数を用いて選んだ空きブロックに時折移動させ、当該移動元ブロックを消去する。
本発明の第3の観点のフラッシュメモリ管理方法は、記憶メディアたるフラッシュメモリデバイスの任意の書き込み済みブロックのデータを、ユーザーアクセスへの応答とは別個に、乱数を用いて選んだ空きブロックに時折移動させ、しかる後に特定のブロックに書き込みと消去が集中することを防止するように上記移動元ブロックを消去する。
本発明によれば、制御部の制御の下、ユーザーアクセスへの応答とは別個に、フラッシュメモリデバイスの任意の書き込み済みブロックのデータが、乱数を用いて選んだ空きブロックに時折移動され、しかる後に移動元ブロックが消去される。
本発明によれば、循環書き込みを効果的に解消でき、各ブロックの書き換え回数の上限を統計的に管理することが可能になる。これによって記憶装置やシステムに保存されたデータの信頼性を大幅に向上させることが可能である。
以下、本発明の実施形態を図面に関連付けて説明する。
図4は、本発明の実施形態に係る記憶装置を採用したコンピュータシステムの構成例を示す図である。
本コンピュータシステム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は、インターフェース回路(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個のページデータが格納される。
ページバッファ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はCPUを内蔵し、制御プログラムに従って、記憶装置の内部においてページバッファ34とインターフェース回路31の間のデータの送受を管理する。
制御回路32に内蔵されたRAM40には、制御プログラムを実行するためのコードエリアやワーキングエリア41が設けられており、さらにページ単位の仮想アドレスを管理するアドレス変換テーブル42、正常な空きブロックを検索する検索テーブル43、各ブロックの無効ページ数を管理する無効カウンタテーブル44、ライトポインタ45、およびライトポインタ45の周回カウンタ46等が構築されている。
インターフェース回路31は、ATAやPCIエクスプレス等の規格に従ってホストシステム50との間で、データやコマンドの送受を行う。
制御回路32はCPUを内蔵し、制御プログラムに従って、記憶装置の内部においてページバッファ34とインターフェース回路31の間のデータの送受を管理する。
制御回路32に内蔵されたRAM40には、制御プログラムを実行するためのコードエリアやワーキングエリア41が設けられており、さらにページ単位の仮想アドレスを管理するアドレス変換テーブル42、正常な空きブロックを検索する検索テーブル43、各ブロックの無効ページ数を管理する無効カウンタテーブル44、ライトポインタ45、およびライトポインタ45の周回カウンタ46等が構築されている。
本コンピュータシステムCOMSYSにおいては、ホストシステム50は内蔵するCPUによって制御され、アプリケーションやオペレーティングシステム(OS)の要求に応じて、記憶装置30を介して、フラッシュメモリデバイス39にユーザーデータを保存する。
制御回路32はその間のデータ授受に介在し、アドレス変換テーブル42等を用いてアドレス変換を伴うアクセス管理を実施する。
制御回路32はその間のデータ授受に介在し、アドレス変換テーブル42等を用いてアドレス変換を伴うアクセス管理を実施する。
記憶装置30は、ハードディスクと同様に512バイト(Byte)のセクタをアクセス単位とする。
記憶装置内部では簡単のため、16進数のアドレスが次のように割り振られるとする。
たとえば、外部入力アドレスが“0x05502C”であった場合、上位24ビットの“0x05502”はページアドレスであり、最大1Mページを管理できる。一方、下位4ビットの“0xC”はページ領域内のセクタドレスであり、1ページ中には16のセクタが含まれる。
本記憶装置はページバッファ34内のデータを選択することで、1セクタ単位のランダムアクセスが可能である。
記憶装置内部では簡単のため、16進数のアドレスが次のように割り振られるとする。
たとえば、外部入力アドレスが“0x05502C”であった場合、上位24ビットの“0x05502”はページアドレスであり、最大1Mページを管理できる。一方、下位4ビットの“0xC”はページ領域内のセクタドレスであり、1ページ中には16のセクタが含まれる。
本記憶装置はページバッファ34内のデータを選択することで、1セクタ単位のランダムアクセスが可能である。
以下、このような記憶装置30の内部動作を説明する。
本実施形態ではページ単位の仮想アドレス管理が採用されている。
本実施形態ではページ単位の仮想アドレス管理が採用されている。
図5は、アドレス変換テーブル42、検索テーブル43、および無効カウンタテーブル44の構成例を示す図である。また、図6は、そのようなテーブルを使用したデータクセスのフローを示す図である。記憶装置30の内部におけるフラッシュメモリデバイス39への具体的アクセスは、図6のフロー図に従って、以下のような手順で実行される。
<データの読み出し動作>
ステップST11:
ホストシステム50からユーザーデータのアクセスコマンドとともに“0x005502C”のセクタドレスが入力されると、制御回路32は論理ページアドレス部(LPA)“0x005502”をインデックスにアドレス変換テーブル42を参照し、アクセス対象たるユーザーデータの物理ページアドレスPPA“0x0060B0”を取得する。
ステップST11:
ホストシステム50からユーザーデータのアクセスコマンドとともに“0x005502C”のセクタドレスが入力されると、制御回路32は論理ページアドレス部(LPA)“0x005502”をインデックスにアドレス変換テーブル42を参照し、アクセス対象たるユーザーデータの物理ページアドレスPPA“0x0060B0”を取得する。
ステップST12:
上記物理ページアドレスをもって、フラッシュメモリデバイス39がアクセスされ、ページバッファ34内にユーザーデータが格納されたページグループが読み出される。その後セクタドレス“0xC”に相当する部分がページバッファ34から選択的にホストに出力され、読み出し動作が完了する。
さらにデータの更新は以下のように実施する。同じ“0x005502C”のセクタを更新するとする。
上記物理ページアドレスをもって、フラッシュメモリデバイス39がアクセスされ、ページバッファ34内にユーザーデータが格納されたページグループが読み出される。その後セクタドレス“0xC”に相当する部分がページバッファ34から選択的にホストに出力され、読み出し動作が完了する。
さらにデータの更新は以下のように実施する。同じ“0x005502C”のセクタを更新するとする。
<データの更新(書き込み)動作>
ステップST11,ST12:
読み出し時と同様に、フラッシュメモリデバイス39より読み出した所望のデータをページバッファ34に格納する。
ステップST11,ST12:
読み出し時と同様に、フラッシュメモリデバイス39より読み出した所望のデータをページバッファ34に格納する。
ステップST13:
ページバッファ上で所望のセクタ箇所を更新する。
ページバッファ上で所望のセクタ箇所を更新する。
ステップST14:
更新したユーザーデータのフラッシュメモリデバイス39への書き込み先として、RAM40内に常駐した検索テーブル43およびライトポインタ45から、適当なページ領域の物理ページアドレスPPAが選択される。
更新したユーザーデータのフラッシュメモリデバイス39への書き込み先として、RAM40内に常駐した検索テーブル43およびライトポインタ45から、適当なページ領域の物理ページアドレスPPAが選択される。
以下のその手順の詳細を説明する。ここでは簡単のため、物理ページアドレスは、上位16ビットの物理ブロックアドレス部(Phisical Block Address :PBA)と下位8ビットのページオフセット部よりなるとする。この時各消去ブロックは256ページ(28)より構成される。
検索テーブル43には、各ブロックごとにそれらが現在使用されているか、もしくは消去済みの空き状態であるかが、“Used Flag”でマークされている。さらに欠陥ブロックの場合、“Defect Flag”が“1”となっている。
検索テーブル43には、各ブロックごとにそれらが現在使用されているか、もしくは消去済みの空き状態であるかが、“Used Flag”でマークされている。さらに欠陥ブロックの場合、“Defect Flag”が“1”となっている。
ライトポインタ45は、まずその物理ブロックアドレス部のインクリメントに従って、検索テーブル43のアドレス上を下位から上位に向けて良品の消去済みブロックを検索しつつ巡回する。一旦対象ブロックが検出されれば、検索テーブル43の所定の“Used Flag”に“1”が立ち、まずその先頭ページが書き込み先として選択される。
さらにここからはページオフセット部のインクリメントに従って、書き込み先のページが下位アドレスから順次選択されていく。選択がブロックの末尾に達したら、それ以降再び物理ブロックアドレス部のインクリメントに従って、次の未使用かつ良品のブロックの検索を進める。
このようにしてライトポインタ45はフラッシュメモリデバイス39のアドレス上を循環する。そして検索テーブル43の末尾アドレスのブロックに達し、更にあるいはその末尾ページに達したら、周回カウンタ46を一つインクリメントして再びその先頭アドレスに戻る。
さらにここからはページオフセット部のインクリメントに従って、書き込み先のページが下位アドレスから順次選択されていく。選択がブロックの末尾に達したら、それ以降再び物理ブロックアドレス部のインクリメントに従って、次の未使用かつ良品のブロックの検索を進める。
このようにしてライトポインタ45はフラッシュメモリデバイス39のアドレス上を循環する。そして検索テーブル43の末尾アドレスのブロックに達し、更にあるいはその末尾ページに達したら、周回カウンタ46を一つインクリメントして再びその先頭アドレスに戻る。
ライトポインタ45の値は現在“0x00AA01”であり、制御回路32はまずユーザーデータの書き込み先として、それをインクリメントした物理ページアドレス“0x00AA02”を選択する。
ステップST15:
上記物理ページアドレスをもって、フラッシュメモリデバイス39がアクセスされ、ページバッファ34内のユーザーデータがフラッシュメモリデバイス39に一括書き込みされる。
この時同時に、ページ領域内の冗長部に、周回カウンタ46のカウンタ値“0x000352”と、データの論理ページアドレス“0x005502”が記載される。なお、周回カウンタ46の値の記載はタイムスタンプに相当し、これを参照することで各ページに記載されたデータの新旧を判別することが可能である。
書き込みが完了すると、アドレス変換テーブル42が更新され、論理ページアドレスLPA“0x005502”に対応する物理ページアドレスPPAは“0x00AA02”に更新される。
上記物理ページアドレスをもって、フラッシュメモリデバイス39がアクセスされ、ページバッファ34内のユーザーデータがフラッシュメモリデバイス39に一括書き込みされる。
この時同時に、ページ領域内の冗長部に、周回カウンタ46のカウンタ値“0x000352”と、データの論理ページアドレス“0x005502”が記載される。なお、周回カウンタ46の値の記載はタイムスタンプに相当し、これを参照することで各ページに記載されたデータの新旧を判別することが可能である。
書き込みが完了すると、アドレス変換テーブル42が更新され、論理ページアドレスLPA“0x005502”に対応する物理ページアドレスPPAは“0x00AA02”に更新される。
ステップST16:
また、これに伴って旧物理ページアドレス“0x0060B0”に相当するページ領域は無効となる。そこで上記無効ページ発生に対応して、無効カウンタテーブル44の、物理ブロックアドレス“0x0060”に対応するカウンタ値を“0x10”から“0x11”にインクリメントする。
また、これに伴って旧物理ページアドレス“0x0060B0”に相当するページ領域は無効となる。そこで上記無効ページ発生に対応して、無効カウンタテーブル44の、物理ブロックアドレス“0x0060”に対応するカウンタ値を“0x10”から“0x11”にインクリメントする。
ところで、上述の如き追記型書き込みを実施した場合、更新前のデータが格納されていた物理ページアドレス“0x0060B0”に相当するページ領域はアドレス変換テーブル42の物理アドレスフィールドから削除され、外からアクセスできなくなる。すなわち無効化される。
しかし、それらにはデータが書き込まれており、そのままでは空き領域として使用することもできない。上述のような書き換えを何度も繰り返すと、多くの無効ページ領域が発生する。それらは再度空き領域として使用できるよう、消去して回復させる必要がある。またその場合、消去ブロック“0x0060”に残された他の有効データは退避させる必要がある。
しかし、それらにはデータが書き込まれており、そのままでは空き領域として使用することもできない。上述のような書き換えを何度も繰り返すと、多くの無効ページ領域が発生する。それらは再度空き領域として使用できるよう、消去して回復させる必要がある。またその場合、消去ブロック“0x0060”に残された他の有効データは退避させる必要がある。
このような回復処理は、たとえばまず対象ブロック内の有効データを、更新の際と同様に一旦ページバッファに読み出してから、他のブロックの空き領域に追記で書き込んでいき、それによって実質的な退避を行なえば良い。すなわち有効ページを仮更新することで、その元領域を全て無効化する。その後対象ブロックを消去することによって、回復処理が実施される。
図7(A)〜(C)には消去ブロック51,52内部の有効データを退避し、無効ページ領域を実質的に回復させる手順を、概念的に図解している。
ステップST21:
上述の如く追記による書き換えが進行し、消去ブロック51、52には、一度データが書き込まれた後、更新によって無効化されたページ領域群56、58が、有効なページ領域群55、57、59と共存しているとする。
ここで有効ページ領域のデータを残しつつ、無効化領域を空き領域に回復させる必要がある。
一方、53、54は現在ライトポインタ45によって選択されて、追記用の空き領域として使用している消去ブロックを示し、ページ領域60まで書き込みがなされている。
上述の如く追記による書き換えが進行し、消去ブロック51、52には、一度データが書き込まれた後、更新によって無効化されたページ領域群56、58が、有効なページ領域群55、57、59と共存しているとする。
ここで有効ページ領域のデータを残しつつ、無効化領域を空き領域に回復させる必要がある。
一方、53、54は現在ライトポインタ45によって選択されて、追記用の空き領域として使用している消去ブロックを示し、ページ領域60まで書き込みがなされている。
ステップST22:
有効なページ領域群55、57、59のデータを消去ブロック53、54内の空きページ領域群61、62、63に下詰めにして順番にコピーしていく。
一方、無効なページ領域群56、58はコピーしない。各ページの有効/無効の判定は、たとえばデータ書き込み時に冗長部に論理ページアドレスを記載しておき、それと物理ページアドレスとの対応が、アドレス変換テーブル42と一致するか否かをチェックすることで実施する。
有効ページの場合、対象ページ内のデータ全体をページバッファ34に読み込み、消去ブロック53、54に、ライトポインタ45のインクリメントに従って書き込みを実施する。この際、ページの冗長領域には、通常のデータ書き込み時と同様に、論理アドレスと周回カウンタ46のカウンタ値が記載される。
さらにアドレス変換テーブル42を更新する。すなわち各々のページ領域の論理アドレスに対応する物理アドレスフィールドに、コピー先の物理ページアドレスを登録していく。またこの作業に伴って、元のページ領域55、57、59は無効化される。したがって、各ページの処理ごとに、無効カウンタテーブル44の該当ブロックのカウンタ値がインクリメントされる。
この操作は、すなわち有効ページ領域群55、57、59を追記方式で書き換える作業に等しい。
実際には書き換えずコピーするのみであるが、この作業によって消去ブロック51、52内の全てのページは無効化され、有効ページ領域のデータは消去ブロック53、54に実質的に退避させられる。
有効なページ領域群55、57、59のデータを消去ブロック53、54内の空きページ領域群61、62、63に下詰めにして順番にコピーしていく。
一方、無効なページ領域群56、58はコピーしない。各ページの有効/無効の判定は、たとえばデータ書き込み時に冗長部に論理ページアドレスを記載しておき、それと物理ページアドレスとの対応が、アドレス変換テーブル42と一致するか否かをチェックすることで実施する。
有効ページの場合、対象ページ内のデータ全体をページバッファ34に読み込み、消去ブロック53、54に、ライトポインタ45のインクリメントに従って書き込みを実施する。この際、ページの冗長領域には、通常のデータ書き込み時と同様に、論理アドレスと周回カウンタ46のカウンタ値が記載される。
さらにアドレス変換テーブル42を更新する。すなわち各々のページ領域の論理アドレスに対応する物理アドレスフィールドに、コピー先の物理ページアドレスを登録していく。またこの作業に伴って、元のページ領域55、57、59は無効化される。したがって、各ページの処理ごとに、無効カウンタテーブル44の該当ブロックのカウンタ値がインクリメントされる。
この操作は、すなわち有効ページ領域群55、57、59を追記方式で書き換える作業に等しい。
実際には書き換えずコピーするのみであるが、この作業によって消去ブロック51、52内の全てのページは無効化され、有効ページ領域のデータは消去ブロック53、54に実質的に退避させられる。
ステップST23:
消去ブロック51、52を消去する。これに伴って検索テーブル43における該当ブロックの“Used Flag”はゼロにリセットされる。また、消去カウンタテーブル45における該当ブロックの消去カウンタ値がインクリメントされる。これによってその内部は全て空き領域となり、後の追記に使用することが可能になる。
これをもって無効領域56、58は実効的に回復される。
消去ブロック51、52を消去する。これに伴って検索テーブル43における該当ブロックの“Used Flag”はゼロにリセットされる。また、消去カウンタテーブル45における該当ブロックの消去カウンタ値がインクリメントされる。これによってその内部は全て空き領域となり、後の追記に使用することが可能になる。
これをもって無効領域56、58は実効的に回復される。
このように無効ページ領域の回復処理は、各有効ページ領域のコピーによる退避処理と、元消去ブロックの消去よりなる。また、回復対象となる消去ブロック内の有効ページに通常の更新処理と同様の手順でダミーの更新を施し、それをもってページの退避を実行すれば、回復処理時の有効ページ退避を通常の書き込みアルゴリズムに統合させることが可能である。この場合、制御が容易になるばかりではなく、フラッシュメモリへの書き込みの均一化等、書き込み時の信頼性向上のための各種工夫を回復処理にも適用することができ、記憶装置の総合的な信頼性を向上させることができる。
ところで、上記回復処理は、記憶装置の待機時やシステムのアイドル時に実施することで、ユーザーからその存在を隠蔽できる。この場合たとえば、待機状態に入ると自動的に回復処理を実施する機能を記憶装置30に設けたり、またはシステムがアイドル状態になるとホストシステム50が回復処理用のコマンドを送信し、それに応じて記憶装置30が回復処理を実行する。
この際、回復処理の対象ブロックを選定する機能が必要となるが、これはたとえば無効カウンタテーブル44の一部または全部をスキャンし、無効ページの多いブロックを検索してそれを回復対象とすることで、効率の良い回復処理が実行できる。
この際、回復処理の対象ブロックを選定する機能が必要となるが、これはたとえば無効カウンタテーブル44の一部または全部をスキャンし、無効ページの多いブロックを検索してそれを回復対象とすることで、効率の良い回復処理が実行できる。
ただし、このようなシステムは、図3に示したように、小さな物理領域内での循環書き込みに陥る可能性がある。そこで、本実施形態では、循環書き込みに陥った領域内の各ブロックに対し、一定の書き換え回数以内で循環領域から離脱させるような仕組みを提供する。これは一種の攪拌操作とみなすことができる。
図8は、本実施形態における攪拌操作の概念図である。以下、図8等に関連付けて攪拌操作について説明する。なお、図8においては、理解を容易にするために、図3と同一構成部分は同一符号を付している。
ステップST31:
図3におけるステップST1のように、領域22および24に循環的に書き込みが実施されている。論理アドレス上に確保されたWEBキャッシュ領域に繰り返される更新に従って、その中に書き込まれたデータは順次無効化され、さらに消去が実施される。すなわち上記循環領域内には、旧データが格納された無効ページ(図中、黒ぬりの領域)と現在のWEBキャッシュ内容が格納された有効ページ(図中、ハッチングを付加した領域)、さらに新規データが格納されるべき消去済みページ(図中、空白の領域)が混在している。
なお、消去はブロック単位で実施されるので、現在書き込み中のブロック以外の消去済みページは、各々消去済みブロックとして存在する。
図3におけるステップST1のように、領域22および24に循環的に書き込みが実施されている。論理アドレス上に確保されたWEBキャッシュ領域に繰り返される更新に従って、その中に書き込まれたデータは順次無効化され、さらに消去が実施される。すなわち上記循環領域内には、旧データが格納された無効ページ(図中、黒ぬりの領域)と現在のWEBキャッシュ内容が格納された有効ページ(図中、ハッチングを付加した領域)、さらに新規データが格納されるべき消去済みページ(図中、空白の領域)が混在している。
なお、消去はブロック単位で実施されるので、現在書き込み中のブロック以外の消去済みページは、各々消去済みブロックとして存在する。
ステップST32:
ここで書き込み済み領域から、たとえば攪拌操作ごとにインクリメントされる専用アドレスポインタに従って、書き込み済みブロック25がデータの移動元として選択される。さらに上記循環領域中の消去済みブロックから、乱数を用いてブロック26データの移動先として選択される。そして、ブロック25のデータがブロック26に、図7に示したダミー更新と同様の手順で移動させられる。
ここで書き込み済み領域から、たとえば攪拌操作ごとにインクリメントされる専用アドレスポインタに従って、書き込み済みブロック25がデータの移動元として選択される。さらに上記循環領域中の消去済みブロックから、乱数を用いてブロック26データの移動先として選択される。そして、ブロック25のデータがブロック26に、図7に示したダミー更新と同様の手順で移動させられる。
ステップST33:
最後にデータ移動元たるブロック25が消去される。この時点で繰り返し書き込みがなされていた循環領域からブロック26が離脱し、代わりにブロック25がそこに加わることになる。
最後にデータ移動元たるブロック25が消去される。この時点で繰り返し書き込みがなされていた循環領域からブロック26が離脱し、代わりにブロック25がそこに加わることになる。
図9は、本実施形態に係る攪拌操作の手順を示すフロー図である。
ステップST41:
ユーザーコマンドへの応答に従って、フラッシュメモリへのデータ書き込みが実施される。なお、フラッシュメモリに1ブロック分の書き込みがなされるごとにブロックカウンタがインクリメントされていく。
ユーザーコマンドへの応答に従って、フラッシュメモリへのデータ書き込みが実施される。なお、フラッシュメモリに1ブロック分の書き込みがなされるごとにブロックカウンタがインクリメントされていく。
ステップST42:
たとえば上記ブロックカウンタ値が128以上になると、以下の攪拌操作に移行する。
たとえば上記ブロックカウンタ値が128以上になると、以下の攪拌操作に移行する。
ステップST43:
専用のアドレスポインタのインクリメントに従って、図5の検索テーブル43から使用済みブロックが検索され、データの移動元ブロックとして選択される。
専用のアドレスポインタのインクリメントに従って、図5の検索テーブル43から使用済みブロックが検索され、データの移動元ブロックとして選択される。
ステップST44:
乱数で発生させたブロックアドレスから、図5の検索テーブル43より直近の空きブロックが検索され、データの移動先ブロックとして選択される。
乱数で発生させたブロックアドレスから、図5の検索テーブル43より直近の空きブロックが検索され、データの移動先ブロックとして選択される。
ステップST45:
移動元ブロックから移動先ブロックに、たとえば図7に示したダミー更新と同様の手順でデータが移動させられる。なお、移動したデータは、対応する論理アドレスは変わらないが、物理アドレスとなる格納場所が変化する。したがって図5のアドレス変換テーブル42にその更新が反映される必要がある。
移動元ブロックから移動先ブロックに、たとえば図7に示したダミー更新と同様の手順でデータが移動させられる。なお、移動したデータは、対応する論理アドレスは変わらないが、物理アドレスとなる格納場所が変化する。したがって図5のアドレス変換テーブル42にその更新が反映される必要がある。
ステップST46:
移動元ブロックが消去される。ブロックカウンタはクリアされ、通常の書き込みに戻る。
移動元ブロックが消去される。ブロックカウンタはクリアされ、通常の書き込みに戻る。
なお、このような攪拌作業はユーザーアクセスへの応答とは別個の作業追加となり、たとえば128ブロックに対して1ブロック分のデータ読み出しと書き込みが必要となるが、実施頻度が少ない上、待機時に実施することもできるので、性能には殆ど影響しない。
書き込みブロック数のカウントについては主としてユーザーデータの書き込みに応じて行うが、無効領域の回復処理や管理用データの保存に伴うフラッシュメモリへのデータ書き込みについてもカウントに入れて良い。
以下にこのような攪拌操作の効果を説明する。
書き込みブロック数のカウントについては主としてユーザーデータの書き込みに応じて行うが、無効領域の回復処理や管理用データの保存に伴うフラッシュメモリへのデータ書き込みについてもカウントに入れて良い。
以下にこのような攪拌操作の効果を説明する。
たとえば、80ブロックの領域間で循環書き込みがなされているとする。一回の攪拌操作で離脱するのは1ブロックであり、平均的には凡そ80回の攪拌操作で離脱することが見込まれる。
ここで128ブロックの書き込みごとに一回の攪拌操作が成されるとすれば、この間128x80ブロックの書き込みがストレージに実施される。これが80ブロックの領域内に循環的に書き込まれるので、上記ブロックには離脱前に128回の書き換え、消去が実施されることになる。
ここで128ブロックの書き込みごとに一回の攪拌操作が成されるとすれば、この間128x80ブロックの書き込みがストレージに実施される。これが80ブロックの領域内に循環的に書き込まれるので、上記ブロックには離脱前に128回の書き換え、消去が実施されることになる。
このように、循環書き込みの状態に陥ったブロックがそこから離脱するまでに受ける書き換え、消去の回数は、平均値としてはほぼ攪拌操作の実行頻度に従う。一方、循環領域に存在するブロック数自体への依存度は非常に小さい。
そこで、攪拌操作の頻度を適切に設定し、これによって書き換え寿命に対して十分小さい書き換え回数で、各ブロックを循環状態から離脱させることができれば、ストレージの寿命を保証することが可能になる。
そこで、攪拌操作の頻度を適切に設定し、これによって書き換え寿命に対して十分小さい書き換え回数で、各ブロックを循環状態から離脱させることができれば、ストレージの寿命を保証することが可能になる。
ここで重要なのは、循環領域から離脱させるブロックの選択に偏りが出ないことである。たとえば特定の物理アドレスが何らかの規則性を持って高頻度で選択されるようなことがあると、その一方でいつまでも循環書き込みから離脱できないブロックが発生することになる。このような選択の偏りがあると、ばらつきの問題が深刻となって、ストレージ全域に対する書き換え寿命の保証は困難になる。
逆にこのような偏りを排除すれば、消去回数の分布は統計的に予測でき、信頼性の保証が可能になる。
逆にこのような偏りを排除すれば、消去回数の分布は統計的に予測でき、信頼性の保証が可能になる。
すなわち本実施形態のポイントは、図8のステップST32の工程において、データ移動先たる空きブロックの選択に偏りが発生するのを排除することであり、具体的にはその選択に乱数を使用する。
たとえば、全物理アドレスの範囲で均一に乱数を発生させ、物理アドレスがその値か、あるいはその上位で最も近接している空きブロックを、データの移動先として選択する。
あるいは空きブロックの総数をカウントしておき、その範囲内で均一に乱数を発生させ、図5に示した検索テーブル43の先頭からUsedのフラグをスキャンして、その値が“0”のフィールドが乱数値分だけカウントされたところを対象ブロックとして選択すれば、より厳密に偏りのない選択が実現できる。
完全な乱数による選択が実施された場合、各ブロックが循環領域から離脱するまでになされる攪拌操作回数及び消去回数のばらつきは、二項分布で予測できる。
たとえば、全物理アドレスの範囲で均一に乱数を発生させ、物理アドレスがその値か、あるいはその上位で最も近接している空きブロックを、データの移動先として選択する。
あるいは空きブロックの総数をカウントしておき、その範囲内で均一に乱数を発生させ、図5に示した検索テーブル43の先頭からUsedのフラグをスキャンして、その値が“0”のフィールドが乱数値分だけカウントされたところを対象ブロックとして選択すれば、より厳密に偏りのない選択が実現できる。
完全な乱数による選択が実施された場合、各ブロックが循環領域から離脱するまでになされる攪拌操作回数及び消去回数のばらつきは、二項分布で予測できる。
また、この際データの移動元となる書き込み済みブロックの選択にも偏りが出ないことが望ましい。ここに偏りがあると、特定のブロックが何度も繰り返し循環書き込みに入る可能性が生じ、消去回数の累計値が大きくばらつく原因となる。
ただし、書き換え寿命が問題になるのは非常に小さな領域内で書き込みの循環が発生するケースであり、このような状況では、それ以外の領域から選ばれるデータの移動元ブロックは、殆どアドレス領域全体(たとえば全体の99%)を対象に選択されることになる。
したがって、各攪拌操作において個々のブロックが選択される確率は非常に小さく、各ブロックはストレージの寿命中に、ごく僅かな回数(たとえば10回)しか選択されない。この選択に乱数を使うと1回も選択されないブロックが発生する等、均一な選択条件の下でも統計的なばらつきそのものが、かなり大きくなってしまう。
したがって、データの移動先ブロックについては、乱数を使用するより、単にアドレス順に使用済みブロックを検索し、順次選択を行なった方が、簡単で効果的である。この際は攪拌操作の度に、ユーザーデータ(OSやプログラムを含む)の格納領域となっている全物理アドレスを特定の順番で循環するように専用のポインタを進め、それに従って使用済みブロックを順次検出して選択していく。
ただし、書き換え寿命が問題になるのは非常に小さな領域内で書き込みの循環が発生するケースであり、このような状況では、それ以外の領域から選ばれるデータの移動元ブロックは、殆どアドレス領域全体(たとえば全体の99%)を対象に選択されることになる。
したがって、各攪拌操作において個々のブロックが選択される確率は非常に小さく、各ブロックはストレージの寿命中に、ごく僅かな回数(たとえば10回)しか選択されない。この選択に乱数を使うと1回も選択されないブロックが発生する等、均一な選択条件の下でも統計的なばらつきそのものが、かなり大きくなってしまう。
したがって、データの移動先ブロックについては、乱数を使用するより、単にアドレス順に使用済みブロックを検索し、順次選択を行なった方が、簡単で効果的である。この際は攪拌操作の度に、ユーザーデータ(OSやプログラムを含む)の格納領域となっている全物理アドレスを特定の順番で循環するように専用のポインタを進め、それに従って使用済みブロックを順次検出して選択していく。
図10(A),(B)は、本実施形態の効果を、簡単なシミュレーションで定量的に見積もった結果を示す図である。
8kブロックよりなるストレージにおいて、80ブロックの領域内で循環書き込みが発生したケースを想定した。簡単のためデータはブロック単位の塊で書き込まれ、更新されるとし、無効化されたブロックは即座に消去されるとした。ここにライトポインタのインクリメントに従って10Mブロック分のデータが書き込まれた際の、ブロック消去回数の分布が示されている。
攪拌操作を全く行なわない場合は、80ブロックのみにそのまま10Mブロックが循環書き込みされるので、その80ブロックには各々12,5000回の消去がなされ、他のブロックは一切消去されない。
図9の例においては、これに対して128ブロックの書き込みごとに、2種類の方法で攪拌操作を実施している。
攪拌操作では、まず循環領域以外からデータの移動元ブロックが、循環領域からデータの移動先ブロックが選択される。データ移動の後、前者は消去されて新たに循環領域に入り、後者は循環領域から離脱する。
図9の例においては、これに対して128ブロックの書き込みごとに、2種類の方法で攪拌操作を実施している。
攪拌操作では、まず循環領域以外からデータの移動元ブロックが、循環領域からデータの移動先ブロックが選択される。データ移動の後、前者は消去されて新たに循環領域に入り、後者は循環領域から離脱する。
図10(A)のケースでは、攪拌操作の際、データの移動先たる空きブロックの選択は、通常の書き込みや回復処理の際と全く同様に図5のライトポインタ45に従っており、その直後の空きブロックにそのまま移動データの書き込みを行っている。
一方、図10(B)のケースでは、全物理アドレス領域の範囲で乱数を発生させ、それ以降で最も近接した空きブロックを、データ移動先として選択している。
なお、データの移動元についてはアドレス順に使用済みブロックを検索して選択している。
いずれのケースも攪拌効果が現われているが、図10(A)では、プロファイルに変則的なばらつきがあるのに対し、図10(B)のプロファイルは際立ってシャープであり、どのブロックの消去回数も1000回〜1500回の範囲に入っている。すなわち全ブロックに均一に書き込んだ理想ケース(1250回)に非常に近い状態になっていることが解る。
図10(A)の変則的ばらつきは、ブロック選択をライトポインタの成り行きにまかせたことで、その選択に規則性に起因する偏りが生じたことによる。図10(B)のようにブロック選択に乱数を導入し、外部要因等による規則性を完全に排除することで、消去分布を統計的に制御することが可能になった。
一方、図10(B)のケースでは、全物理アドレス領域の範囲で乱数を発生させ、それ以降で最も近接した空きブロックを、データ移動先として選択している。
なお、データの移動元についてはアドレス順に使用済みブロックを検索して選択している。
いずれのケースも攪拌効果が現われているが、図10(A)では、プロファイルに変則的なばらつきがあるのに対し、図10(B)のプロファイルは際立ってシャープであり、どのブロックの消去回数も1000回〜1500回の範囲に入っている。すなわち全ブロックに均一に書き込んだ理想ケース(1250回)に非常に近い状態になっていることが解る。
図10(A)の変則的ばらつきは、ブロック選択をライトポインタの成り行きにまかせたことで、その選択に規則性に起因する偏りが生じたことによる。図10(B)のようにブロック選択に乱数を導入し、外部要因等による規則性を完全に排除することで、消去分布を統計的に制御することが可能になった。
なお、攪拌操作の実施時期について、上記例では128ブロックの書き込みが実施されるごととしたが、たとえば図5のライトポインタ45が一巡するごと、あるいは特定ブロック数進行するごとに実施する等、各種バリエーションが考えられる。長期的な使用の中で一定の頻度が保証されていれば良く、実施基準にゆらぎや曖昧さがあっても良い。
またデータの移動元をアドレス順に選択する場合も、さらにデータの新旧に配慮したバリエーションが考えられる。すなわちたとえば攪拌操作ごとに以下の操作を行なう。
まず、アドレス順に8個ずつの使用済みブロックを候補として選択する。次に、その先頭ページの予備領域を検査することで、そこに記載されたタイムスタンプを検査する。タイムスタンプにはたとえば図5の周回カウンタ46の値が使用される。その中で最も更新の古い(記載された周回カウンタ値の小さい)データが、データ移動元ブロックとして選択される。
まず、アドレス順に8個ずつの使用済みブロックを候補として選択する。次に、その先頭ページの予備領域を検査することで、そこに記載されたタイムスタンプを検査する。タイムスタンプにはたとえば図5の周回カウンタ46の値が使用される。その中で最も更新の古い(記載された周回カウンタ値の小さい)データが、データ移動元ブロックとして選択される。
ところでここまでは、独立した記憶装置の内部に、アドレス変換等各種制御を実装する場合について説明してきた。しかしアドレス変換テーブルの管理と関連処理を、ホスト側の制御で実施することも可能である。このような形態は、特にフラッシュメモリが内部に組み込まれた、安価なコンピュータシステムに適している。そのようなコンピュータシステムの例を図11に示す。
図11は、アドレス変換テーブルの管理と関連処理を、ホスト側の制御で実施するコンピュータシステムの構成例を示す図である。
この場合、ホストシステム80bは、CPU81bとシステムメモリ82bを含む。
CPU81bは32ビットのシステムバス83bを介してシステムメモリであるRAM82bと接続されている。さらに、システムバス83bにはブリッジ回路84bが接続されており、ブリッジ回路84bに繋がる32ビットのデータバス38bには、16ビットの入出力を持つ2チップのNAND型フラッシュメモリ35b,36bが並列接続されている。2つのチップは読み出しや書き込みにおいて、同時並列にアクセスされる。アクセスされたページ領域を一時記憶するページバッファ34bは、ブリッジ回路84bに内蔵されている。
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の所定のページへのアクセスの他、同フラッシュメモリの所定ブロックの消去、および所定ページの指定アドレスへのコピー、フラッシュメモリのリセット等である。
ブリッジ回路84bが受け取るコマンドは、たとえばフラッシュメモリ35b、36bの所定のページへのアクセスの他、同フラッシュメモリの所定ブロックの消去、および所定ページの指定アドレスへのコピー、フラッシュメモリのリセット等である。
一方、システムメモリ82b内には上記フラッシュ記憶システムを制御するためのドライバ86bが常駐している。このドライバ86bは、OSやアプリケーションからの記憶装置へのアクセスを受け、同じメモリ中に構成されたアドレス変換テーブル42bを参照してアクセス時のページアドレスを変換する。
また、データ更新時には検索テーブル43bとライトポインタ45bを参照して書き込み先ページアドレスを決定し、更新用データとともにフラッシュメモリへの書き込み命令をブリッジ回路84bに送信する。あるいは更新され無効化されたページが発生すると、それを無効カウンタテーブル44bに反映させる。
また、データ更新時には検索テーブル43bとライトポインタ45bを参照して書き込み先ページアドレスを決定し、更新用データとともにフラッシュメモリへの書き込み命令をブリッジ回路84bに送信する。あるいは更新され無効化されたページが発生すると、それを無効カウンタテーブル44bに反映させる。
すなわちこのようなケースでは、CPU81bとシステムメモリ82bよりなるホストシステム85b自体が図4における制御回路32の役割を代替し、アドレス変換テーブルの管理と無効ページ領域の回復処理を実施する。すなわちドライバ86bは各種テーブルやポインタを使用し、OSやアプリケーションから論理アドレスを受け、物理アドレスPPAを生成してブリッジ回路84bにコマンドを送信することで、フラッシュメモリ35b、36bの各種アクセスを実施する。
なお、これらアドレス変換テーブル42b、検索テーブル43b、無効カウンタテーブル44b、およびライトポインタ45bには、たとえば図5に示したテーブル42、43、44、よびポインタ45と同様のものが使用される。
このようなシステムにおいても本発明の概念は同様に適用することが可能である。すなわちドライバ86bは、アプリケーションからのフラッシュメモリへのアクセス要求への応答とは別個に、フラッシュメモリ35b、36bに特定ブロック数分のデータを書き込むごとに、データの移動元たる使用済みブロックをたとえばアドレス順で、データの移動先たる消去済みブロックを乱数を用いて選択し、データの移動を実施する。
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 (9)
- 主記憶メディアとしてフラッシュメモリデバイスと、
制御部と、を有し、
上記制御部は、
ユーザーアクセスへの応答とは別個に、
上記フラッシュメモリデバイスの任意の書き込み済みブロックのデータを、乱数を用いて選んだ空きブロックに時折移動させ、当該移動元ブロックを消去する
記憶装置。 - 上記制御部は、
上記移動元の書き込み済みブロックを、上記フラッシュメモリデバイスにおけるブロックアドレスに従って、特定の順番で循環するように選択する
請求項1記載の記憶装置。 - 上記制御部は、
上記移動処理を、上記フラッシュメモリデバイスに一定のデータ量が書き込まれる毎に実施する
請求項1記載の記憶装置。 - 主記憶メディアとしてフラッシュメモリデバイスと、
制御部と、
上記フラッシュメモリデバイスのデータにアクセス可能な処理装置と、を有し、
上記制御部は、
ユーザーアクセスへの応答とは別個に、
上記フラッシュメモリデバイスの任意の書き込み済みブロックのデータを、乱数を用いて選んだ空きブロックに時折移動させ、当該移動元ブロックを消去する
コンピュータシステム。 - 上記制御部は、
上記移動元の書き込み済みブロックを、上記フラッシュメモリデバイスにおけるブロックアドレスに従って、特定の順番で循環するように選択する
請求項4記載のコンピュータシステム。 - 上記制御部は、
上記移動処理を、上記フラッシュメモリデバイスに一定のデータ量が書き込まれる毎に実施する
請求項4記載のコンピュータシステム。 - 記憶メディアたるフラッシュメモリデバイスの任意の書き込み済みブロックのデータを、ユーザーアクセスへの応答とは別個に、乱数を用いて選んだ空きブロックに時折移動させ、
しかる後に特定のブロックに書き込みと消去が集中することを防止するように上記移動元ブロックを消去する
記憶装置の管理方法。 - 上記移動元の書き込み済みブロックは、上記フラッシュメモリデバイスにおけるブロックアドレスに従って、特定の順番で循環するように選択される
請求項7記載の記憶装置の管理方法。 - 上記移動処理は、上記フラッシュメモリデバイスに一定のデータ量が書き込まれる毎に実施される
請求項7記載の記憶装置の管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007012607A JP2008181203A (ja) | 2007-01-23 | 2007-01-23 | 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007012607A JP2008181203A (ja) | 2007-01-23 | 2007-01-23 | 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008181203A true JP2008181203A (ja) | 2008-08-07 |
Family
ID=39725081
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007012607A Pending JP2008181203A (ja) | 2007-01-23 | 2007-01-23 | 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008181203A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101526921A (zh) * | 2008-12-31 | 2009-09-09 | 北京飞天诚信科技有限公司 | 写入数据的方法及装置 |
JP2010140580A (ja) * | 2008-12-15 | 2010-06-24 | Kyocera Mita Corp | 不揮発性メモリドライバ及びこれを備えた電子機器並びに不揮発性メモリ駆動方法 |
JP2011243274A (ja) * | 2010-04-30 | 2011-12-01 | Micron Technology Inc | メモリデバイスに対するインデックスレジスタアクセス |
WO2021033445A1 (ja) * | 2019-08-19 | 2021-02-25 | ソニーセミコンダクタソリューションズ株式会社 | コントローラ、半導体記憶装置、及び該装置における摩耗平準化処理方法 |
CN112631522A (zh) * | 2020-12-25 | 2021-04-09 | 上海威固信息技术股份有限公司 | 一种固态硬盘闪存颗粒数据的快速清除方法 |
-
2007
- 2007-01-23 JP JP2007012607A patent/JP2008181203A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010140580A (ja) * | 2008-12-15 | 2010-06-24 | Kyocera Mita Corp | 不揮発性メモリドライバ及びこれを備えた電子機器並びに不揮発性メモリ駆動方法 |
CN101526921A (zh) * | 2008-12-31 | 2009-09-09 | 北京飞天诚信科技有限公司 | 写入数据的方法及装置 |
JP2011243274A (ja) * | 2010-04-30 | 2011-12-01 | Micron Technology Inc | メモリデバイスに対するインデックスレジスタアクセス |
WO2021033445A1 (ja) * | 2019-08-19 | 2021-02-25 | ソニーセミコンダクタソリューションズ株式会社 | コントローラ、半導体記憶装置、及び該装置における摩耗平準化処理方法 |
CN112631522A (zh) * | 2020-12-25 | 2021-04-09 | 上海威固信息技术股份有限公司 | 一种固态硬盘闪存颗粒数据的快速清除方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8745310B2 (en) | Storage apparatus, computer system, and method for managing storage apparatus | |
JP4910360B2 (ja) | 記憶装置、コンピュータシステム、およびデータ書き込み方法 | |
JP5130646B2 (ja) | 記憶装置 | |
US7890550B2 (en) | Flash memory system and garbage collection method thereof | |
US9183132B2 (en) | Storage device, computer system, and storage system | |
JP2008146255A (ja) | 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法 | |
US8285954B2 (en) | Memory system managing a plurality of logs | |
JP2008146253A (ja) | 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法 | |
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 | |
JP2008146254A (ja) | 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法 | |
US20150347291A1 (en) | Flash memory based storage system and operating method | |
KR20170035155A (ko) | 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법 | |
JP2011522350A (ja) | ハイブリッドメモリ管理 | |
JPWO2007119267A1 (ja) | フラッシュメモリ用のメモリコントローラ | |
KR101403922B1 (ko) | 접근 빈도에 따라 데이터를 할당하는 저장장치 및 저장방법 | |
JP2011221996A (ja) | 不揮発性メモリコントローラ及び不揮発性記憶装置 | |
CN112130749B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
TWI718710B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
JP2008181203A (ja) | 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 | |
JP2007334413A (ja) | 記憶装置 | |
US11126552B2 (en) | Memory system, memory controller and method for operating memory controller | |
KR20210130341A (ko) | 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법 | |
JP5617873B2 (ja) | 記憶装置 | |
JP4801111B2 (ja) | フラッシュメモリのデータ即時リフレッシュ方法 |