(57)【要約】【課題】効率の良い回復処理を可能にしながらも、不良ブロックの発生を未然に防止することが可能な記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法を提供する。【解決手段】制御部３２は、フラッシュメモリ３５，３６上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、ブロックを未使用ブロックに回復させ、回復処理に引き続き、回復させたブロックの消去回数を検査し、その結果に応じて、消去回数のより少ないブロックのデータを該ブロックに移動させる。【選択図】図３
2008146254.tif 000002
【特許請求の範囲】
【請求項１】
主記憶媒体としてフラッシュメモリと、
制御部と、を有し、
上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み／読み出し領域であるページを複数含み、
上記制御部は、
上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、
無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、該ブロックを未使用ブロックに回復させ、
上記回復処理に引き続き、回復させたブロックの消去回数を検査し、その結果に応じて、上記消去回数のより少ないブロックのデータを該ブロックに移動させる
記憶装置。
【請求項２】
上記制御部は、上記回復処理に先立って、複数のブロックにおける無効ページ数を比較参照し、その結果から回復対象ブロックを選択する
請求項１記載の記憶装置。
【請求項３】
ブロックごとの消去回数を反映したカウンタがテーブル化されており、少なくともその一部が記憶装置或いはシステム内部の第２メモリに保存されている
請求項１記載の記憶装置。
【請求項４】
上記テーブルは分割されてフラッシュメモリ内に保存されており、必要に応じてその一部が第２メモリ内に読み出され、参照される
請求項３記載の記憶装置。
【請求項５】
主記憶媒体としてフラッシュメモリと、
制御部と、を有し、
上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み／読み出し領域であるページを複数含み、
上記制御部は、
上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、
無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、該ブロックを未使用ブロックに回復させ、
複数のブロックからなるユニットごとにカウンタが設置されており、当該カウンタを各ユニットに所属するブロックの最大消去回数あるいは累計消去回数を反映するように適時インクリメントまたはディクリメントし、
上記回復処理に引き続き、回復させたブロックが所属するユニットのカウンタを検査し、その結果に応じて、当該カウンタ値がより少ない消去回数に該当するユニットを選択し、その中のデータを該ブロックに移動させる
記憶装置。
【請求項６】
上記制御部は、上記回復処理に先立って、複数のブロックにおける無効ページ数を比較参照し、その結果から回復対象ブロックを選択する
請求項５記載の記憶装置。
【請求項７】
主記憶媒体としてフラッシュメモリと、
制御部と、を有し、
上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み／読み出し領域であるページを複数含み、
上記制御部は、
上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、
各ブロックには各々独立に、或いは複数ブロックよりなるユニットごとに、その消去回数を反映した指標を設け、その値を当該記憶装置またはシステム内に保存し、
複数ブロックにおける無効ページ数を比較参照して回復対象ブロックを選択し、
上記ブロックから有効なページのデータを他のブロックにコピーし、しかる後に該ブロックを消去して未使用ブロックに回復させ、
上記ブロックの該指標値を検査し、その結果に応じて、より少ない消去回数に該当する指標値を持つブロックのデータを該ブロックに移動させる
記憶装置。
【請求項８】
主記憶媒体としてフラッシュメモリと、
制御部と、
上記フラッシュメモリのデータにアクセス可能な処理装置と、を有し、
上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み／読み出し領域であるページを複数含み、
上記制御部は、
上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、
無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、該ブロックを未使用ブロックに回復させ、
上記回復処理に引き続き、回復させたブロックの消去回数を検査し、その結果に応じて、上記消去回数のより少ないブロックのデータを該ブロックに移動させる
コンピュータシステム。
【請求項９】
上記制御部は、上記回復処理に先立って、複数のブロックにおける無効ページ数を比較参照し、その結果から回復対象ブロックを選択する
請求項８記載のコンピュータシステム。
【請求項１０】
ブロックごとの消去回数を反映したカウンタがテーブル化されており、少なくともその一部が記憶装置或いはシステム内部の第２メモリに保存されている
請求項８記載のコンピュータシステム。
【請求項１１】
上記テーブルは分割されてフラッシュメモリ内に保存されており、必要に応じてその一部が第２メモリ内に読み出され、参照される
請求項１０記載のコンピュータシステム。
【請求項１２】
主記憶媒体としてフラッシュメモリと、
制御部と、
上記フラッシュメモリのデータにアクセス可能な処理装置と、を有し、
上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み／読み出し領域であるページを複数含み、
上記制御部は、
上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、
無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、該ブロックを未使用ブロックに回復させ、
複数のブロックからなるユニットごとにカウンタが設置されており、当該カウンタを各ユニットに所属するブロックの最大消去回数あるいは累計消去回数を反映するように適時インクリメントまたはディクリメントし、
上記回復処理に引き続き、回復させたブロックが所属するユニットのカウンタを検査し、その結果に応じて、当該カウンタ値がより少ない消去回数に該当するユニットを選択し、その中のデータを該ブロックに移動させる
コンピュータシステム。
【請求項１３】
上記制御部は、上記回復処理に先立って、複数のブロックにおける無効ページ数を比較参照し、その結果から回復対象ブロックを選択する
請求項１２記載のコンピュータシステム。
【請求項１４】
主記憶媒体としてフラッシュメモリと、
制御部と、
上記フラッシュメモリのデータにアクセス可能な処理装置と、を有し、
上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み／読み出し領域であるページを複数含み、
上記制御部は、
上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、
各ブロックには各々独立に、或いは複数ブロックよりなるユニットごとに、その消去回数を反映した指標を設け、その値を当該記憶装置またはシステム内に保存し、
複数ブロックにおける無効ページ数を比較参照して回復対象ブロックを選択し、
上記ブロックから有効なページのデータを他のブロックにコピーし、しかる後に該ブロックを消去して未使用ブロックに回復させ、
上記ブロックの該指標値を検査し、その結果に応じて、より少ない消去回数に該当する指標値を持つブロックのデータを該ブロックに移動させる
コンピュータシステム。
【請求項１５】
主記憶媒体としてフラッシュメモリを有し、上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み／読み出し領域であるページを複数含む記憶装置のデータ処理方法であって、
上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施するステップと、
無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、該ブロックを未使用ブロックに回復させるステップと、
上記回復処理に引き続き、回復させたブロックの消去回数を検査し、その結果に応じて、上記消去回数のより少ないブロックのデータを該ブロックに移動させるステップと
を有する記憶装置のデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリを含む記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法に関するものである。
【背景技術】
【０００２】
近年、デジタルスチルカメラやモバイルコンピュータ機器の記憶媒体として、フラッシュメモリが注目されている。
【０００３】
フラッシュメモリは、トンネリングやホットエレクトロン加速を用いて、電子にゲート絶縁膜を通過させ、それらを浮遊ゲートやトラップ層に注入し、セルトランジスタの閾値を変化させることでデータを記憶させる半導体メモリである。積層ゲート構造やＭＮＯＳ構造等を用いたトランジスタ１つのみでメモリセルを構成できるため、安価かつ大容量のメモリを実現できる。
その代表例として、ＮＡＮＤ型フラッシュメモリが挙げられる。
【０００４】
図１は、ＮＡＮＤ型フラッシュメモリの内部構成例を示す図である。
図１のＮＡＮＤ型フラッシュメモリは、ビット線ＢＬ１〜ＢＬｎに接続された複数のメモリユニット１−１〜１−ｎがアレイ状に（縦横）に配列されている。
たとえば、選択用トランジスタ２のゲートが選択ゲート線ＳＬ１に接続され、選択用トランジスタ３のゲートが選択ゲート線ＳＬ２に接続されている。また、各メモリセルＮ０〜Ｎ１５のゲートがワード線ＷＬ０〜ＷＬ１５に接続されている。
【０００５】
各メモリセルＮ０〜Ｎ１５は積層ゲート構造を持ち、浮遊ゲートへの電荷蓄積量に従ってデータを記憶する。すなわち、浮遊ゲートに多くの電子が蓄積されていると、トランジスタの閾値が上昇するので、チャージされたビット線ＢＬ１〜ＢＬｎからのメモリユニット１（−１〜−ｎ）への電流貫通の有無を、センスアンプ等を含むアクセス回路４で検出してデータ判定を行う。
【０００６】
このようなＮＡＮＤ型フラッシュメモリは、メモリセル毎にビット線へのコンタクト領域を設ける必要もないので、特に大容量で安価な記憶装置の媒体に適している。
【０００７】
ところで、一般にフラッシュメモリのプログラム速度は非常に遅く、セルあたり数百マイクロ（μ）秒を必要とする。またデータの上書きはできないので、プログラムに先立って消去を行う必要があり、これには数ｍ秒もの時間がかかる。このような問題に対しては、多くのメモリセルを並列処理することで対処している。
【０００８】
すなわち、たとえば同一ワード線ＷＬ０に接続され、ページ単位を成すメモリセル群５を、同時一括に書き込み、さらに互いにメモリユニットを共有するページ群で構成されるセルブロック６を全て一括で消去することにより、プログラムの転送速度を向上させている。
【０００９】
具体的には、たとえば非特許文献１には１ＧｂのＮＡＮＤ型フラッシュメモリが掲載されており、ページサイズを２ｋバイト、消去ブロックサイズを１２８ｋＢとしている。すなわち、一つのメモリアレイ内で１２８ｋバイトのメモリセル群を並列消去し、そこにメモリセルを２ｋバイト毎に並列でプログラムしていくことによって、１０ＭＢ／ｓのプログラム転送速度を実現している。
【００１０】
なお、通常ＮＡＮＤ型フラッシュの各ページは、たとえば２ｋバイトのユーザーデータ格納領域に対して６４バイトの予備領域を有している。
この予備領域には、ＮＡＮＤ型フラッシュを使用するシステム側で、パリティビット等の各種管理データを格納することが可能である。この予備領域への書き込みは、通常ユーザーデータ領域への書き込みと一括で行なう必要があり、両者は常にセットとして扱われる。
【００１１】
ところで、フラッシュメモリの使用において注意すべき制約事項として、消去回数の上限が規定されていることが挙げられる。
同一ブロックの書き換えが繰り返されて、その消去回数が上限値を越えると、該ブロックにおけるデータ保持は保証されなくなる。たとえば上記ＮＡＮＤ型フラッシュの消去回数の上限は１０万回またはそれ以下である。
今後メモリセルの微細化に伴ってセルトランジスタの閾値ばらつきが増大し、動作マージンが劣化するため、さらに消去回数の上限は低下していく傾向にある。
【００１２】
また、近年微細化に伴う内部構造と書き込みメカニズムの変化から、特にＮＡＮＤ型フラッシュには以下のような制約が新たに課される傾向にある。
【００１３】
まず、ブロック内の各ページの書き込み順序に制約がつくようになった。
すなわち、各ページの書き込みは下位アドレスから上位アドレスへの順方向に制限されており、逆方向の書き込みは禁止されている。たとえば、一旦どこかのページに書き込みを実施したら、同一ブロック内のそれより下位のアドレスが未書き込みの状態でも、そこにデータを書き込むことはできない。
【００１４】
さらに、各ページの多重書き込みが困難になった。すなわち同一ページ内のデータは２回に分けて書き込むことが出来ない。従って各ページにデータを書き込む前に予備領域の一部のビットを予めマークしたり、データ書き込み後に予備領域にフラグを立てる等、これまでフラッシュメモリの管理に使用されていた各種テクニックが使えない状況になりつつある。
【非特許文献１】ＩＳＳＣＣ２００２予稿集のｐ１０６、セッション６．４
【特許文献１】特開平８−３２８７６２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
近年、ハードディスクの消費電力の大きさや、シーク時間の長さ、耐衝撃性や携帯性等の問題を解消すべく、フラッシュメモリにその代替が期待されている。
しかし上述の如く、フラッシュメモリにはアクセス単位を大きくしないと高速化できないという欠点がある。また、データの上書きができないので、書き換えには必ず消去が必要であり、その際の消去ブロックはさらに大きい。このようにアクセス単位に対して消去単位が数十倍大きいのは、消去時間が長く、かつ書き込み時に非選択セルにディスターブが生じるフラッシュメモリには一般的な仕様である。
【００１６】
このようなフラッシュメモリの仕様に対応し、小型のデータに関しても高速に書き換えを実施すべく、追記型の記憶システムが提案されている。
このようなシステムにおいては、書き換えは、更新データを空き領域に追記し、元のデータを無効化することで実施される。
より具体的には、ページ単位で論理アドレスを物理アドレスに対応させるアドレス変換テーブルを用い、書き換えは対照データの物理アドレスを変更し、記憶メディアの空き領域に追記することで実施する。
【００１７】
たとえば、特許文献１には、アドレス変換テーブルを用いた追記型記憶システムにおける管理方法の詳細が記載されている。図２に一例を示す。
【００１８】
図２において、２１はブロック、２２はページ領域、２３はページバッファ、２４は消去済み空きブロック、２５はアドレス変換テーブル、２６はページ領域をそれぞれ示している。
【００１９】
アドレス変換テーブル２５からは、論理ページアドレス（Ｌｏｇｉｃａｌ  Ｐａｇｅ  Ａｂｂｒｅｓｓ  ＝ＬＰＡ）をインデックスとして、対応するページのフラッシュメモリ上のアドレスである物理ページアドレス（Ｐｈｉｓｉｃａｌ  Ｐａｇｅ  Ａｂｂｒｅｓｓ  ＝ＰＰＡ）を取得することができる。
たとえば、ホストから指定された論理ページアドレス“０ｘ５５０２”への書き込みに対して、アドレス変換テーブルを用いてページ単位でアドレス変換を実施し、フラッシュメモリ上の物理ページアドレス“０ｘ６Ｂ０５”を取得する。これによりブロック２１内の対応するページ領域２２へアクセスが実施される。
【００２０】
一方、同ページに更新を行う際には、フラッシュメモリ内で直接かきこめる適当な空きページ領域が検索される。たとえば物理ブロックアドレス“０ｘＡＡ”に相当する消去済み空きブロック２４の先頭ページ領域２６が適切な書き込み先として選択された場合、ページ領域２２のデータのみがページバッファ２３を介して更新され、ページ領域２６に書き込まれる。この際論理ページアドレス“０ｘ５５０２”はページ領域２６の物理アドレス“０ｘＡＡ００”にリマッピングされる。ページ領域２２上の旧データは、当面そのまま残して無効扱いとしておく。
【００２１】
このような管理を実施すれば、フラッシュメモリ内に空き領域が存在する限りは、各ページデータの更新に対して１ページ分のデータ書き込みで良い。したがって、高速に書き換えを実施することができる。その間消去の必要も無いので、フラッシュメモリの書き換え回数も大幅に低減でき、その寿命も向上させることができる。
【００２２】
しかし、このような追記型記憶システムでは、無効化した元データ領域が無駄になる。したがって、そのような領域は消去して、再度書き込みが可能となるよう回復処理を行いたい。
しかしその場合、消去ブロックが複数のページ領域を含むと、無効化されたページ領域と同じ消去ブロック内に有効データを含むページ領域が存在するケースが多発する。このようなブロックを回復させるには、消去前に有効ページのみを、他のブロックに退避させる必要がある。すなわちまず対象ブロック内の有効ページのデータを他のブロックに全てコピーし、これに応じて変換テーブルに記載された物理アドレスを書き換え、最後に元ブロックを消去する。
【００２３】
このような回復処理は、特に無効ページの多いブロックを選択し、それに対して優先的に実施することが望ましい。すなわち、このような選択によって、退避するページ数を減らし、回復するページ数を増やすことができ、処理の効率を大幅に向上させることができる。これは記憶装置やシステム内でのフラッシュメモリへの累計書き込み量や累計消去回数を削減することに寄与し、寿命の向上や消費電力削減にも貢献する。
【００２４】
しかしその一方で、以下のような問題が発生する。すなわち、フラッシュメモリ内に格納されるデータにはアプリケーションプログラムやオペレーティングシステム（ＯＳ）のように書き換え頻度が極めて小さな静的データと、ユーザーデータのように書き換え頻度の大きな動的データとが混在している。前者が格納されたブロックは殆ど無効化ページが発生しないが、後者のブロックは高頻度で書き換えられて、無効化ページが発生しやすい。ここで後者のブロックに回復処理が施されると、それらは再び格納領域として開放され、動的なデータが再び格納される可能性が高まる。一方前者のブロックは全く書き換えがなされないまま、放置される。
【００２５】
すなわち、特定のブロックのみに動的データが書き込まれ、それらは更新されて無効化ページを発生される。するとそれらのブロックは回復対象として選択されて、消去され、再び動的データが格納される。このような循環に入ると、各ブロックごとに書き換え回数に大きなムラが生じてしまう。その結果幾つかのブロックは容易に消去回数の制限値を越え、不良ブロックとなってしまう。
【００２６】
本発明は、効率の良い回復処理を可能にしながらも、不良ブロックの発生を未然に防止することが可能な記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法を提供することにある。
【課題を解決するための手段】
【００２７】
本発明の第１の観点の記憶装置は、主記憶媒体としてフラッシュメモリと、制御部と、を有し、上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み／読み出し領域であるページを複数含み、上記制御部は、上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、該ブロックを未使用ブロックに回復させ、上記回復処理に引き続き、回復させたブロックの消去回数を検査し、その結果に応じて、上記消去回数のより少ないブロックのデータを該ブロックに移動させる。
【００２８】
好適には、上記制御部は、上記回復処理に先立って、複数のブロックにおける無効ページ数を比較参照し、その結果から回復対象ブロックを選択する。
【００２９】
好適には、ブロックごとの消去回数を反映したカウンタがテーブル化されており、少なくともその一部が記憶装置或いはシステム内部の第２メモリに保存されている。
【００３０】
好適には、上記テーブルは分割されてフラッシュメモリ内に保存されており、必要に応じてその一部が第２メモリ内に読み出され、参照される。
【００３１】
本発明の第２の観点の記憶装置は、主記憶媒体としてフラッシュメモリと、制御部と、を有し、上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み／読み出し領域であるページを複数含み、上記制御部は、上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、該ブロックを未使用ブロックに回復させ、複数のブロックからなるユニットごとにカウンタが設置されており、当該カウンタを各ユニットに所属するブロックの最大消去回数あるいは累計消去回数を反映するように適時インクリメントまたはディクリメントし、上記回復処理に引き続き、回復させたブロックが所属するユニットのカウンタを検査し、その結果に応じて、当該カウンタ値がより少ない消去回数に該当するユニットを選択し、その中のデータを該ブロックに移動させる。
【００３２】
本発明の第３の観点の記憶装置は、主記憶媒体としてフラッシュメモリと、制御部と、を有し、上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み／読み出し領域であるページを複数含み、上記制御部は、上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、各ブロックには各々独立に、或いは複数ブロックよりなるユニットごとに、その消去回数を反映した指標を設け、その値を当該記憶装置またはシステム内に保存し、複数ブロックにおける無効ページ数を比較参照して回復対象ブロックを選択し、上記ブロックから有効なページのデータを他のブロックにコピーし、しかる後に該ブロックを消去して未使用ブロックに回復させ、上記ブロックの該指標値を検査し、その結果に応じて、より少ない消去回数に該当する指標値を持つブロックのデータを該ブロックに移動させる。
【００３３】
本発明の第４の観点のコンピュータシステムは、主記憶媒体としてフラッシュメモリと、制御部と、上記フラッシュメモリのデータにアクセス可能な処理装置と、を有し、上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み／読み出し領域であるページを複数含み、上記制御部は、上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、該ブロックを未使用ブロックに回復させ、上記回復処理に引き続き、回復させたブロックの消去回数を検査し、その結果に応じて、上記消去回数のより少ないブロックのデータを該ブロックに移動させる。
【００３４】
本発明の第５の観点のコンピュータシステムは、主記憶媒体としてフラッシュメモリと、制御部と、上記フラッシュメモリのデータにアクセス可能な処理装置と、を有し、上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み／読み出し領域であるページを複数含み、上記制御部は、上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、該ブロックを未使用ブロックに回復させ、複数のブロックからなるユニットごとにカウンタが設置されており、当該カウンタを各ユニットに所属するブロックの最大消去回数あるいは累計消去回数を反映するように適時インクリメントまたはディクリメントし、上記回復処理に引き続き、回復させたブロックが所属するユニットのカウンタを検査し、その結果に応じて、当該カウンタ値がより少ない消去回数に該当するユニットを選択し、その中のデータを該ブロックに移動させる。
【００３５】
本発明の第６の観点のコンピュータシステムは、主記憶媒体としてフラッシュメモリと、制御部と、上記フラッシュメモリのデータにアクセス可能な処理装置と、を有し、上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み／読み出し領域であるページを複数含み、上記制御部は、上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、各ブロックには各々独立に、或いは複数ブロックよりなるユニットごとに、その消去回数を反映した指標を設け、その値を当該記憶装置またはシステム内に保存し、複数ブロックにおける無効ページ数を比較参照して回復対象ブロックを選択し、上記ブロックから有効なページのデータを他のブロックにコピーし、しかる後に当該ブロックを消去して未使用ブロックに回復させ、上記ブロックの該指標値を検査し、その結果に応じて、より少ない消去回数に該当する指標値を持つブロックのデータを該ブロックに移動させる。
【００３６】
本発明の第７の観点は、主記憶媒体としてフラッシュメモリを有し、上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み／読み出し領域であるページを複数含む記憶装置のデータ処理方法であって、上記フラッシュメモリ上のユーザーデータの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施するステップと、無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、該ブロックを未使用ブロックに回復させるステップと、上記回復処理に引き続き、回復させたブロックの消去回数を検査し、その結果に応じて、上記消去回数のより少ないブロックのデータを該ブロックに移動させるステップとを有する。
【００３７】
本発明によれば、無効ページを含むブロックの回復シーケンスに、消去回数の上限保証のための手段を導入する。上限保証は、各ブロックごとに消去回数がカウントされ、ブロックの消去時にこのカウンタ値が参照され、消去回数が一定値を越えている場合は、それ以降動的なデータが格納されないように、静的なデータでブロックを埋めることで実施される。
すなわち、無効ページを含むブロックの回復シーケンスにおいては、まず無効ページ数の多いブロックを回復対象として選択し、回復作業を実施した後に、さらに上記上限保証のための操作を実行する。
これによって、回復作業の効率を良好に保ちつつ、書き換え磨耗による欠陥の発生を未然に防止した記憶装置やシステムが構築される。
【発明の効果】
【００３８】
本発明によれば、フラッシュメモリにおける無効ページの回復作業を効率よく実施しつつも、磨耗による欠陥ブロックの発生を未然に防止することができる。
これによって、無駄な書き込みや消去作業を極力防止でき、アクセスパフォーマンスを向上させ、装置の寿命を向上させ、さらに電力消費を削減できる。
【発明を実施するための最良の形態】
【００３９】
以下、本発明の実施形態を図面に関連付けて説明する。
【００４０】
図３は、本発明の実施形態に係る記憶装置を採用したコンピュータシステムの構成例を示す図である。
【００４１】
本コンピュータシステムＣＯＭＳＹＳは、記憶装置３０、およびホストシステム（処理装置）５０を主構成要素として有している。
記憶装置３０は、インターフェース回路（Ｉ／Ｆ）３１、制御回路３２、内部バス３３、ページバッファ３４、ＮＡＮＤ型フラッシュメモリ３５，３６、制御回路３７、およびメモリバス３８を有する。
制御回路３２は、第２メモリとしてのＲＡＭ４０を含み、ＲＡＭ４０にはワーキングエリア４１が設けられ、アドレス変換テーブル４２、検索テーブル４３、無効カウンタテーブル４４、消去カウンタテーブル４５、およびライトポインタ４６が構築されている。
ホストシステム５０は、ＣＰＵ、ＲＡＭ、ＲＯＭ、システムバス等を含んで構成されている。
【００４２】
記憶装置３０の内部においては、３２ビットのメモリバス３８に、１６ビットの入出力を持つ２チップの８ＧｂＮＡＮＤ型フラッシュメモリ（フラッシュメモリチップという場合もある）３５，３６が並列接続されている。２つのチップは読み出しや書き込みにおいて、同時並列にアクセスされる。すなわち、メモリバス３８は１６ビットバスを２チャンネル備えた構成となっている。各々のフラッシュメモリは書き込みや読み出しのアクセスをたとえば４ｋＢのページ単位で行う。したがって、実ページサイズとしては８ｋＢが一括アクセスされることになる。
ページバッファ３４はアクセスされたページ領域のデータを一時記憶する。フラッシュメモリ３５，３６とページバッファ３４との間のデータの送受は、制御回路３７で制御されている。
さらに、制御回路３７は、必要に応じて転送データにＥＣＣ符号化によるエラー補正を施したり、フラッシュメモリ内の欠陥ブロックの管理を実施する。両フラッシュメモリ３５，３６は，ページバッファ３４を介して記憶装置の内部バス３３との間でデータを入出力する。
すなわち、ページバッファ３４、ＮＡＮＤ型フラッシュメモリ３５，３６、制御回路３７、およびメモリバス３８の回路群は実質的に一つのフラッシュメモリデバイス（フラッシュメモリモジュールという場合もある）３９を構成し、記憶装置３０の内部バス３３に接続されているとみなすことができる。その総容量は１６Ｇｂ（２ＧＢ）であり、実ページサイズは８ｋＢである。すなわち装置内には２５６ｋ個のページデータが格納される。
【００４３】
さらに、内部バス３３にはインターフェース回路３１、および制御回路３２が接続されている。
インターフェース回路３１は、ＡＴＡやＰＣＩエクスプレス等の規格に従ってホストシステム５０との間で、データやコマンドの送受を行う。
制御回路３２は、記憶装置の内部においてページバッファ３４とインターフェース回路３１の間のデータの送受を管理する。
制御回路３２に内蔵されたＲＡＭ４０には、プログラムを実行するためのコードエリアやワーキングエリア４１が設けられており、さらにページ単位の仮想アドレスを管理するアドレス変換テーブル４２、正常な空きブロックを検索する検索テーブル４３、各ブロックの無効ページ数を管理する無効カウンタテーブル４４、各ブロックの消去回数を管理する消去カウンタテーブル４５、およびライトポインタ４６等が構築されている。
【００４４】
本コンピュータシステムＣＯＭＳＹＳにおいては、ホストシステム５０は内蔵するＣＰＵによって制御され、アプリケーションやオペレーティングシステム（ＯＳ）の要求に応じて、記憶装置３０を介して、フラッシュメモリデバイス３９にユーザーデータを保存する。
制御回路３２はその間のデータ授受に介在し、アドレス変換テーブル４２等を用いてアドレス変換を伴うアクセス管理を実施する。
【００４５】
記憶装置３０は、ハードディスクと同様に５１２バイト（Ｂｙｔｅ）のセクタをアクセス単位とする。
記憶装置内部では簡単のため、１６進数のアドレスが次のように割り振られるとする。
たとえば、外部入力アドレスが“０ｘ０５５０２Ｃ”であった場合、上位２４ビットの“０ｘ０５５０２”はページアドレスであり、最大１Ｍページを管理できる。一方、下位４ビットの“０ｘＣ”はページ領域内のセクタドレスであり、１ページ中には１６のセクタが含まれる。
本記憶装置はページバッファ３４内のデータを選択することで、１セクタ単位のランダムアクセスが可能である。
【００４６】
以下、このような記憶装置３０の内部動作を説明する。
本実施形態ではページ単位の仮想アドレス管理が採用されている。
【００４７】
図４は、アドレス変換テーブル４２、検索テーブル４３、無効カウンタテーブル４４、および消去カウンタテーブル４５の構成例を示す図である。また、図５は、そのようなテーブルを使用したデータアクセスのフローを示す図である。記憶装置３０の内部におけるフラッシュメモリデバイス３９への具体的アクセスは、図５のフロー図に従って、以下のような手順で実行される。
【００４８】
＜データの読み出し動作＞
ステップＳＴ１：
ホストシステム５０からユーザーデータのアクセスコマンドとともに”０ｘ００５５０２Ｃ”のセクタドレスが入力されると、制御回路３２は論理ページアドレス部（ＬＰＡ）”０ｘ００５５０２”をインデックスにアドレス変換テーブル４２を参照し、アクセス対象たるユーザーデータの物理ページアドレスＰＰＡ”０ｘ００６０Ｂ０”を取得する。
【００４９】
ステップＳＴ２：
上記物理ページアドレスをもって、フラッシュメモリデバイス３９がアクセスされ、ページバッファ３４内にユーザーデータが格納されたページグループが読み出される。その後セクタドレス”０ｘＣ”に相当する部分がページバッファ３４から選択的にホストに出力され、読み出し動作が完了する。
さらにデータの更新は以下のように実施する。同じ”０ｘ００５５０２Ｃ”のセクタを更新するとする。
【００５０】
＜データの更新（書き込み）動作＞
ステップＳＴ１，ＳＴ２：
読み出し時と同様に、フラッシュメモリデバイス３９より読み出した所望のデータをページバッファ３４に格納する。
【００５１】
ステップＳＴ３：
ページバッファ上で所望のセクタ箇所を更新する。
【００５２】
ステップＳＴ４：
更新したユーザーデータのフラッシュメモリデバイス３９への書き込み先として、ＲＡＭ４０内に常駐した検索テーブル４３およびライトポインタ４６から、適当なページ領域の物理ページアドレスＰＰＡが選択される。
【００５３】
以下のその手順の詳細を説明する。ここでは簡単のため、物理ページアドレスは、上位１６ビットの物理ブロックアドレス部（Ｐｈｉｓｉｃａｌ  Ｂｌｏｃｋ  Ａｂｂｒｅｓｓ  ：ＰＢＡ）と下位８ビットのページオフセット部よりなるとする。この時各消去ブロックは２５６ページ（２８）より構成される。
検索テーブル４３には、各ブロックごとにそれらが現在使用されているか、もしくは消去済みの空き状態であるかが、“Ｕｓｅｄ  Ｆｌａｇ”でマークされている。さらに欠陥ブロックの場合、“Ｄｅｆｅｃｔ  Ｆｌａｇ”が“１”となっている。
【００５４】
データの書き込みは、消去済みブロックの先頭ページから順に実行されていく。前回の書き込んだページの物理アドレスはライトポインタ４６に示されており、それがインクリメントされていくことで、書き込み先のページが下位アドレスから順次選択される。選択がブロックの末尾に達したら、それ以降のブロックの“Ｕｓｅｄ  Ｆｌａｇ”と“Ｄｅｆｅｃｔ  Ｆｌａｇ”がスキャンされ、次の未使用かつ良品のブロックが検出されて、その先頭ページが選択される。
【００５５】
ライトポインタ４６の値は現在“０ｘ００ＡＡ０１”であり、制御回路３２はまずユーザーデータの書き込み先として、それをインクリメントした物理ページアドレス“０ｘ００ＡＡ０２”を選択する。
【００５６】
ステップＳＴ５：
上記物理ページアドレスをもって、フラッシュメモリデバイス３９がアクセスされ、ページバッファ３４内のユーザーデータがフラッシュメモリデバイス３９に一括書き込みされる。
書き込みが完了すると、アドレス変換テーブル４２が更新され、論理ページアドレスＬＰＡ“０ｘ００５５０２”に対応する物理ページアドレスＰＰＡは“０ｘ００ＡＡ０２”に更新される。
【００５７】
ステップＳＴ６：
また、これに伴って旧物理ページアドレス“０ｘ００６０Ｂ０”に相当するページ領域は無効となる。そこで上記無効ページ発生に対応して、無効カウンタテーブル４４の、物理ブロックアドレス“０ｘ００６０”に対応するカウンタ値を“０ｘ１０”から“０ｘ１１”にインクリメントする。
【００５８】
ところで、上述の如き追記型書き込みを実施した場合、更新前のデータが格納されていた物理ページアドレス“０ｘ００６０Ｂ０”に相当するページ領域はアドレス変換テーブル４２の物理アドレスフィールドから削除され、外からアクセスできなくなる。すなわち無効化される。
しかし、それらにはデータが書き込まれており、そのままでは空き領域として使用することもできない。上述のような書き換えを何度も繰り返すと、多くの無効ページ領域が発生する。それらは再度空き領域として使用できるよう、消去して回復させる必要がある。またその場合、消去ブロック“０ｘ００６０”に残された他の有効データは退避させる必要がある。
【００５９】
このような回復処理は、たとえばまず対象ブロック内の有効データを、更新の際と同様に一旦ページバッファに読み出してから、他のブロックの空き領域に追記で書き込んでいき、それによって実質的な退避を行なえば良い。すなわち有効ページを仮更新することで、その元領域を全て無効化する。その後対象ブロックを消去することによって、回復処理が実施される。
【００６０】
図６（Ａ）〜（Ｃ）には消去ブロック５１，５２内部の有効データを退避し、無効ページ領域を実質的に回復させる手順を、概念的に図解している。
【００６１】
ステップＳＴ１１：
上述の如く追記による書き換えが進行し、消去ブロック５１、５２には、一度データが書き込まれた後、更新によって無効化されたページ領域群５６、５８が、有効なページ領域群５５、５７、５９と共存しているとする。
ここで有効ページ領域のデータを残しつつ、無効化領域を空き領域に回復させる必要がある。
一方、５３、５４は現在ライトポインタ４５によって選択されて、追記用の空き領域として使用している消去ブロックを示し、ページ領域６０まで書き込みがなされている。
【００６２】
ステップＳＴ１２：
有効なページ領域群５５、５７、５９のデータを消去ブロック５３、５４内の空きページ領域群６１、６２、６３に下詰めにして順番にコピーしていく。
一方、無効なページ領域群５６、５８はコピーしない。各ページの有効／無効の判定は、たとえばデータ書き込み時に冗長部に論理ページアドレスを記載しておき、それと物理ページアドレスとの対応が、アドレス変換テーブル４２と一致するか否かをチェックすることで実施する。
有効ページの場合、対象ページ内のデータ全体をページバッファ３４に読み込み、消去ブロック５３、５４に書き込むとともに、アドレス変換テーブル４２を更新する。すなわち各々のページ領域の論理アドレスに対応する物理アドレスフィールドに、コピー先の物理ページアドレスを登録していく。またこの作業に伴って、元のページ領域５５、５７、５９は無効化される。したがって、各ページの処理ごとに、無効カウンタテーブル４４の該当ブロックのカウンタ値がインクリメントされる。
この操作は、すなわち有効ページ領域群５５、５７、５９を追記方式で書き換える作業に等しい。
実際には書き換えずコピーするのみであるが、この作業によって消去ブロック５１、５２内の全てのページは無効化され、有効ページ領域のデータは消去ブロック５３、５４に実質的に退避させられる。
【００６３】
ステップＳＴ１３：
消去ブロック５１、５２を消去する。これに伴って検索テーブル４３における該当ブロックの“Ｕｓｅｄ  Ｆｌａｇ”はゼロにリセットされる。また、消去カウンタテーブル４５における該当ブロックの消去カウンタ値がインクリメントされる。これによってその内部は全て空き領域となり、後の追記に使用することが可能になる。
これをもって無効領域５６、５８は実効的に回復される。
【００６４】
このように無効ページ領域の回復処理は、各有効ページ領域のコピーによる退避処理と、元消去ブロックの消去よりなる。また、回復対象となる消去ブロック内の有効ページに通常の更新処理と同様の手順でダミーの更新を施し、それをもってページの退避を実行すれば、回復処理時の有効ページ退避を通常の書き込みアルゴリズムに統合させることが可能である。この場合、制御が容易になるばかりではなく、フラッシュメモリへの書き込みの均一化等、書き込み時の信頼性向上のための各種工夫を回復処理にも適用することができ、記憶装置の総合的な信頼性を向上させることができる。
【００６５】
ところで、上記回復処理は、記憶装置の待機時やシステムのアイドル時に実施することで、ユーザーからその存在を隠蔽できる。この場合たとえば、待機状態に入ると自動的に回復処理を実施する機能を記憶装置３０に設けたり、またはシステムがアイドル状態になるとホストシステム５０が回復処理用のコマンドを送信し、それに応じて記憶装置３０が回復処理を実行する。
この際、回復処理の対象ブロックを選定する機能が必要となるが、これはたとえば無効カウンタテーブル４４の一部または全部をスキャンし、無効ページの多いブロックを検索してそれを回復対象とすることで、効率の良い回復処理が実行できる。
【００６６】
さらに、回復処理を実行した後、消去カウンタテーブル４５を参照することで、対象ブロックの消去回数をチェックできる。ここで消去回数が保証された仕様の上限に近づいている場合、それ以上動的なデータの書き込みが実施されないよう、消去回数の少ないブロックから静的なデータを移動させて、そのブロックを埋めてしまう。移動元のブロックは、たとえば消去カウンタテーブル４５の一部または全部をスキャンし、消去回数の少ないブロックを検索してそれを移動元ブロックとして選択する。このように静的なデータでブロックをキャッピングすることで、それ以降このブロックのデータが更新され、無効化されて再度回復対象とされ、消去されることを防止する。
【００６７】
上記一連の作業を回復シーケンスとして図７に示す。たとえば記憶装置３０は、待機状態に入った際、まず回復処理が必要か否かを判定する。それはたとえば装置内の無効ページ総数や空きページ総数等をチェックすることで実施され、回復処理が必要と判定された場合、以下の回復シーケンスを実行する。
【００６８】
ステップＳＴ２１：
まず、無効カウンタテーブル４４の一部または全部をスキャンして、無効ページ数の多いブロックを検索する。その結果から回復対象ブロックを決定する。
【００６９】
ステップＳＴ２２：
上記ブロックを回復対象として、図６のような回復処理を実施する。なお、全てのページが無効化されたブロックに対しては、無効化判定と退避処理を最初から省略し、最初から消去のみを実施しても良い。
【００７０】
ステップＳＴ２３：
消去カウンタテーブル４５から上記ブロックの消去回数を取得する。たとえばフラッシュメモリ３５、３６におけるブロック消去回数の上限保証値が、チップの仕様として１万回であったとすると、判定基準を０ｘ２０００、すなわち８１９２回とし、この基準に達したブロックに対しては静的データの格納によるキャッピング処理を実行する（ＳＴ２４，ＳＴ２５）。
【００７１】
ステップＳＴ２４：
消去カウンタテーブル４５の一部または全部をスキャンして、書き換え回数の少ないブロックを静的データの移動元として選択する。
【００７２】
ステップＳＴ２５：
図６の処理ＳＴ１２に示した仮更新と同様の手順で、移動元ブロック内の有効データを、回復処理を実施したブロックに順次移動させていく。移動先のブロックが満杯になったらキャッピング処理は完了となり、回復シーケンスを終了する。
一方、移動先のブロックにまだ空きがある内に移動元ブロックの有効データが全て無効化された場合には、ステップＳＴ２４の処理に戻って次の移動元ブロックを検索する。この際最初の移動元ブロックを消去しても良い（ＳＴ２６，２Ｔ２７）。
【００７３】
なお、ＲＡＭ４０内の無効カウンタテーブル４４や消去カウンタテーブル４５は、電源オフ時にはフラッシュメモリデバイス３９の規定の物理ブロックに格納保存し、電源投入時には再びＲＡＭ内に読み出して使用する。
【００７４】
ここで、仮にキャッピングのために移動したデータがたまたま更新され、再度同じブロックが回復対象に選択されても、回復処理の完了時には、ステップＳＴ２３の処理で上記消去カウンタ値が再度参照され、再び静的データによるキャッピングが実施される。したがって、動的データの書き込み及び消去に対する抑止効果は継続することになる。
また、ステップＳＴ２４で一旦移動元として選択されたブロックは、その後消去されて動的データが入る可能性が高いので、続けて移動元として選択されないようにするのが望ましい。これはたとえば消去カウンタテーブル４５の対応フィールドの最上位ビットに”１”をたてて禁止フラグにすれば良い。
【００７５】
ところで、上記シーケンスではステップＳＴ２３のキャッピング処理実行判定や、ステップＳＴ２３のデータ移動元ブロックの選択に、消去カウンタテーブル４５を使用した。
しかし、左記テーブルは各ブロックごとの消去カウンタフィールドに２バイトを要するので、たとえば６４ｋブロックのフラッシュメモリを使用した大容量ストレージでは１２８ｋバイトのＲＡＭを占有する。これはコスト増の要因となる。
【００７６】
その対策として、消去カウンタテーブルをフラッシュメモリ内に保存し、その一部だけをＲＡＭに読み出す手法が考えられる。図８に関連付けてその実施形態を説明する。
【００７７】
記憶装置のハードウエア構成は図３と同様で、フラッシュメモリ３５、３６は周辺回路とともに一体化した一つのフラッシュメモリデバイス３９として扱われるが、６４ｋ個の消去ブロックを有し、その物理アドレスＰＢＡは”０ｘ００００”〜”０ｘＦＦＦＦ”となっている。各ブロックは２５６ページで構成されており、各ページの実サイズは８ｋＢである。すなわちフラッシュメモリデバイス３９あるいは記憶装置３０の容量は約１２８ＧＢと巨大化している。
【００７８】
消去カウンタテーブルは６４分割されてフラッシュメモリデバイス３９に保存されており、各小テーブルは１ｋブロックの領域をカバーしている。保存には一つのブロックが動的に確保され、ブロック内の各ページに１個ずつの小テーブルが格納される。余った空きページは書き換え用に使用される。
各小テーブルのフラッシュメモリデバイス３９内の格納場所は、ＲＡＭ４０に常駐した二次テーブル７０に記載されている。ここではＰＢＡ”０ｘ０５２１”にカウンタテーブル保存用のブロックが確保されており、各テーブルごとに格納先のページオフセット（ブロック内のページ位置）が記載されている。二次テーブル７０の容量は６６バイトである。
【００７９】
たとえばＰＢＡ“０ｘ１０６０”のブロックにおける消去回数を取得する場合は、以下の手順で行う。
【００８０】
ステップＳＴ３１：
二次テーブル（７０）からＰＢＡ“０ｘ１０６０”を含む小テーブルの格納場所を取得する。これは＃４の小テーブルが該当し、そのアドレス（ＰＰＡ）は“０ｘ０５２１０１”である。
【００８１】
ステップＳＴ３２：
上記アドレスでフラッシュメモリデバイス３９をアクセスし、小テーブル７１を読み出してＲＡＭ４０内に格納する。
【００８２】
ステップＳＴ３３：
小テーブル７１からＰＢＡ“０ｘ１０６０”の消去カウンタ値“０ｘ１Ａ００”を取得する。
【００８３】
なお、その後小テーブル７１が書き換えられた場合、それは再度フラッシュメモリデバイス３９に書き戻す必要がある。この時はカウンタテーブル用に確保したＰＢＡ“０ｘ０５２１”のブロック内に空きページを探し、そこに書き込んで二次テーブル７０の対応ページオフセット値を更新する。
【００８４】
なお、このように消去カウンタテーブルをフラッシュメモリ３９に格納すると、そのアクセス速度はＲＡＭよりはるかに遅いので、たとえば図７のフローにおけるステップＳＴ２４の処理で、消去カウンタ値の小さなブロックを検索するのが煩雑となる。この対処例を図９に示す。
【００８５】
分布テーブル７２は上記実施例で分割した小テーブルごとの、所属ブロックの消去カウンタ値の分布状態を示している。
各ブロックの消去カウンタ値は、値の大小に応じて８つのカテゴリに分類されている。カテゴリごとにカウンタ値が該当するブロックの数が示されており、たとえば＃１の小テーブルにおいては消去カウンタ値が“０ｘ００３Ｆ”以下のブロックが４つ存在する。
各フィールドは２バイト（１ｋブロックをカバー）なので、このテーブルの総容量は１ｋバイトと小さく、ＲＡＭに常駐させることができる。
なお、このフィールドの値はブロックの有無のみを示すフラグでも良い。その場合ＲＡＭの占有領域は僅か６４バイトである。
【００８６】
たとえば、消去カウンタ値が最も少ないカテゴリに属するブロックを検索する場合、以下の手順で行う。
【００８７】
ステップＳＴ４１：
まず、分布テーブル７２において、小テーブルの先頭＃０から消去カウンタ値が“０ｘ００００〜０ｘ００３Ｆ”のカテゴリをスキャンし、値が“１”以上の小テーブルを検索する。ここでは＃１の小テーブルが該当した。すなわち、＃１の小テーブル内には、カウンタ値“０ｘ００００〜０ｘ００３Ｆ”のブロックが４個存在することが確認された。
【００８８】
ステップＳＴ４２：
図８の二次テーブル７０から＃１の小テーブルの格納場所を取得し、フラッシュメモリデバイス３９をアクセスして該当テーブル７３をＲＡＭ４０内に格納する。
【００８９】
ステップＳＴ４３：
小テーブル７３のカウンタ値を先頭からスキャンして、消去カウンタ値が“０ｘ００００〜０ｘ００３Ｆ”のブロックを検索する。これによってＰＢＡ“０ｘ０５２０”のブロックが該当ブロックとして抽出された。
【００９０】
このようにして、たとえば図７の回復シーケンスのステップＳＴ２４において、消去カウンタ値が“０ｘ００００〜０ｘ００３Ｆ”の、最も消去回数が少ないカテゴリに属するブロックが、静的データの移動元ブロックとして検索される。検索を２段階で実施することで、迅速かつ的確に所望のブロックを抽出できる。
【００９１】
なお、静的データによるキャッピングにおいては、データの移動元として最も消去回数の少ないブロックが選択されるのが理想的であるが、少なくともデータの移動先たるブロックに対して消去回数のより少ないブロックであれば、その中のデータはより静的であると想定でき、キャッピングの効果を期待できる。
【００９２】
したがって、移動元ブロックの選択には、システムのリソース等に応じてより簡略な各種バリエーションが存在し得る。たとえば図７において回復対象ブロックＰＢＡ“０ｘ１０６０”の消去回数をチェックした際に、消去カウンタの小テーブル＃４がＲＡＭ内に読み出されている。その小テーブルの全体または一部をスキャンして、消去回数が最小のブロックを移動元として選択すれば、上記分布テーブル７２は不要である。
【００９３】
また、ＲＡＭ内への消去カウンタテーブルの構築自体を省略して、各ブロックの消去回数の格納にはブロック内の先頭ページを使用しても良い。この場合、ブロックのデータ格納領域が１ページずつ減少するが、テーブル格納用のＲＡＭのリソースは不要となる。移動元ブロックの選択は、たとえば複数ブロックの先頭ページをランダムまたはシーケンシャルにスキャンして、その中から消去回数が最小のブロックを選択する。
【００９４】
ところで、各ブロックごとに消去回数を管理するのではなく、より簡略な消去回数の指標を設定する第２の実施形態を、図１０に関連付けて説明する。
【００９５】
本第２の実施形態では、総計６４ｋ個のブロックが６４ブロックずつの１ｋグループに分けられ、各ブロックごとに消去の指標カウンタが設置されている。それらはＲＡＭ上に設けられたテーブル７５に格納されており、指標カウンタの各フィールドは２バイトなので、テーブルサイズは２ｋバイトである。
【００９６】
指標カウンタは各グループごとの消去回数を示す指標である。この指標の大きなグループに属するブロックは、消去回数が多いと想定され、その前提に従って処理される。この指標カウンタは例えば以下のように、データ書き込みに関連して計上される。
【００９７】
検索テーブル７４は図５に示した検索テーブル４３と同じものであり、書き込み先のブロック選択に使用される。各ブロックごとにそれらが現在使用されているか、もしくは消去済みの空き状態であるかが、“Ｕｓｅｄ  Ｆｌａｇ”でマークされている。さらに欠陥ブロックの場合、“Ｄｅｆｅｃｔ  Ｆｌａｇ”が”１”となっている。
【００９８】
データの書き込みは、ライトポインタ７６のインクリメントに従って消去済みブロックが検索され、その下位アドレスのページから順次実施されていく。選択がブロックの末尾に達したら、それ以降のブロックの“Ｕｓｅｄ  Ｆｌａｇ”と“Ｄｅｆｅｃｔ  Ｆｌａｇ”がスキャンされ、次の未使用かつ良品のブロックが検出されて、その先頭ページが選択される。
このようにして、ライトポインタは書き込み先となるブロックを検索しつつ、フラッシュメモリ内の領域を繰り返し循環する。
【００９９】
ここでたとえば＃２の指標カウンタは、ＰＢＡ“０ｘ００８０〜０ｘ００ＢＦ”の所属ブロックのいずれかが、ライトポインタの一循環の中で、最初に選択されたときにインクリメントされる。その後、同じ循環中に他の所属ブロックが選択されても、このカウンタはインクリメントされない。
【０１００】
あるブロックが書き込み対象として選択される回数は、そのブロックの消去回数に対応している。その頻度はライトポインタが一循環した際に最大で一回のみとなる。したがって、上記指標は、各グループに所属するブロックに実施され得る、消去回数の最大値を示す数値となる。
【０１０１】
本第２の実施形態における回復シーケンスのフローは図７に示した手順と同様であるが、ステップＳＴ２３における回復処理後の消去回数判定、およびステップＳＴ２４における静的データの移動元ブロックの選定は、上記指標カウンタに基づいて実行される。すなわちステップＳＴ２３では回復対象となったブロックが所属するグループの指標カウンタ値が既定値を越えていたら、そのブロックに対して静的データによるキャッピングを実施する。また、その際のデータ移動元ブロックの選定は、指標カウンタ値のもっとも小さなグループから行われる。
【０１０２】
なお、指標カウンタ値が最小のグループが一度検出されると、データ移動元としてその先頭アドレスのブロックが選定され、グループ内のブロックのオフセットがポインタとして保存される。その後キャッピング処理が実施されるごとに、上記オフセットポインタがインクリメントされ、同一グループ内のブロックが移動元として順次選択される。
【０１０３】
こうしてポインタがグループの末尾ブロックに達したら、このグループの指標値カウンタの最上位ビットに“１”を立て、以降そのグループは移動元として選択されなくなる。その次からは、改めて指標カウンタ値を元に、次のグループが選択される。
【０１０４】
このように本実施形態では、消去回数の大小判定は指標カウンタに基づいてグループ単位で行われる。ただし、実際のデータ移動によるキャッピングは、消去されたブロックのみを対象にブロック単位で実施される。したがって、指標値の大きいグループ内にあっても、静的なデータを保持し、消去がなされないブロックに対しては、キャッピング処理も実施されない。
【０１０５】
なお、上記指標カウンタの計上方法については、各グループに属するブロックの消去回数を反映するのであれば、各種バリエーションが存在し得る。一例としてはグループ内ブロックの消去の累計回数を、指標カウンタとして計上しても良い。
【０１０６】
ところでここまでは、独立した記憶装置の内部に、アドレス変換等各種制御を実装する場合について説明してきた。しかしアドレス変換テーブルの管理と関連処理を、ホスト側の制御で実施することも可能である。このような形態は、特にフラッシュメモリが内部に組み込まれた、安価なコンピュータシステムに適している。そのようなコンピュータシステムの例を図１１に示す。
【０１０７】
図１１は、アドレス変換テーブルの管理と関連処理を、ホスト側の制御で実施するコンピュータシステムの構成例を示す図である。
【０１０８】
この場合、ホストシステム８０ｂは、ＣＰＵ８１ｂとシステムメモリ８２ｂを含む。
ＣＰＵ８１ｂは３２ビットのシステムバス８３ｂを介してシステムメモリであるＲＡＭ８２ｂと接続されている。さらに、システムバス８３ｂにはブリッジ回路８４ｂが接続されており、ブリッジ回路８４ｂに繋がる３２ビットのデータバス３８ｂには、１６ビットの入出力を持つ２チップのＮＡＮＤ型フラッシュメモリ３５ｂ，３６ｂが並列接続されている。２つのチップは読み出しや書き込みにおいて、同時並列にアクセスされる。アクセスされたページ領域を一時記憶するページバッファ３４ｂは、ブリッジ回路８４ｂに内蔵されている。
【０１０９】
ブリッジ回路８４ｂは、ＣＰＵ８１ｂから各種コマンドを受け取り、フラッシュメモリ３５ｂ、３６ｂとＣＰＵ８１ｂまたはシステムメモリ８２ｂとの間のデータのやり取りを、ページバッファ３４ｂを用いて媒介する。また必要に応じて転送データにＥＣＣ符号化によるエラー補正を施す。
ブリッジ回路８４ｂが受け取るコマンドは、たとえばフラッシュメモリ３５ｂ、３６ｂの所定のページへのアクセスの他、同フラッシュメモリの所定ブロックの消去、および所定ページの指定アドレスへのコピー、フラッシュメモリのリセット等である。
【０１１０】
一方、システムメモリ８２ｂ内には上記フラッシュ記憶システムを制御するためのドライバ８６ｂが常駐している。このドライバ８６ｂは、ＯＳやアプリケーションからの記憶装置へのアクセスを受け、同じメモリ中に構成されたアドレス変換テーブル４２ｂを参照してアクセス時のページアドレスを変換する。
また、データ更新時には検索テーブル４３ｂとライトポインタ４５ｂを参照して書き込み先ページアドレスを決定し、更新用データとともにフラッシュメモリへの書き込み命令をブリッジ回路８４ｂに送信する。あるいは更新され無効化されたページが発生すると、それを無効カウンタテーブル４４ｂに反映させる。
【０１１１】
すなわちこのようなケースでは、ＣＰＵ８１ｂとシステムメモリ８２ｂよりなるホストシステム８５ｂ自体が図３における制御回路３２の役割を代替し、アドレス変換テーブルの管理と無効ページ領域の回復処理を実施する。すなわちドライバ８６ｂは各種テーブルやポインタを使用し、ＯＳやアプリケーションから論理アドレスを受け、物理アドレスＰＰＡを生成してブリッジ回路８４ｂにコマンドを送信することで、フラッシュメモリ３５ｂ、３６ｂの各種アクセスを実施する。
【０１１２】
なお、これらアドレス変換テーブル４２ｂ、検索テーブル４３ｂ、およびライトポインタ４６ｂには、たとえば図５に示したテーブル４２、４３、よびポインタ４６と同様のものが使用される。
【０１１３】
このようなシステムにおいても本発明の概念は同様に適用することが可能である。すなわちホストシステム８０ｂには、さらにＲＡＭ８２ｂ内に、各ブロックの無効ページ数を管理するカウンタテーブル４４ｂが構築されている。さらに各ブロックの消去回数を管理するカウンタテーブル４５ｂが構築されている。
【０１１４】
ここでシステムがアイドル状態になると、ドライバ８６ｂは自律的にカウンタテーブル４４ｂから無効化ページ数の多いブロックを検索し、取得したブロックを対象として回復処理を実行する。すなわちブロック内の有効ページを他ブロックの未使用ページにコピーし、しかる後に対象ブロックを消去して未使用状態にする。カウンタテーブル４４ｂには、たとえば図５のテーブル４４と同様の構成が使用できる。
【０１１５】
さらに、たとえば消去カウンタテーブル４５ｂを用いて回復対象となったブロックの消去回数がチェックされる。それが既定値を越えていれば、同じ消去カウンタテーブル４５ｂに基づいて消去回数のより少ないブロックが選択され、それを移動元としてデータの移動が実施される。これによって回復対象ブロックが静的データでキャッピングされる。
【図面の簡単な説明】
【０１１６】
【図１】ＮＡＮＤ型フラッシュメモリの内部構成例を示す図である。
【図２】フラッシュメモリにおける書き込みとマッピング手順を説明するための図である。
【図３】本発明の実施形態に係る記憶装置を採用したコンピュータシステムの構成例を示す図である。
【図４】アドレス変換テーブル、検索テーブル、および無効カウンタテーブルの構成例を示す図である。
【図５】記憶装置の内部におけるフラッシュメモリデバイスへの具体的アクセス処理を説明するためのフローチャートである。
【図６】消去ブロック内部の有効データを退避し、無効ページ領域を実質的に回復させる手順を概念的に示す図である。
【図７】回復シーケンスを説明するためのフローチャートである。
【図８】消去カウンタテーブルの分割と格納を説明するための図である。
【図９】カウンタ値の検索処理について説明するための図である。
【図１０】簡略な消去回数の指標を設定する第２の実施形態を説明するための図である。
【図１１】アドレス変換テーブルの管理と関連処理を、ホスト側の制御で実施するコンピュータシステムの構成例を示す図である。
【符号の説明】
【０１１７】
３０・・・記憶装置、３１・・・インターフェース回路、３２・・・制御回路、３３・・・内部バス、３４・・・ページバッファ、３５，３６・・・ＮＡＮＤ型フラッシュメモリ、３７・・・制御回路、３８・・・メモリバス、３９・・・フラッシュメモリデバイス（フラッシュメモリモジュール）、４０・・・ＲＡＭ、４１・・・ワーキングエリア、４２，４２ｂ・・・アドレス変換テーブル、４３，４３ｂ・・・、検索テーブル、４４，４４ｂ・・・無効カウンタテーブル、４５，４５ｂ・・・消去カウンタテーブル、４６，４６ｂ・・・ライトポインタ、５０，８０ｂ・・・ホストシステム。
【図１】
2008146254.tif 000003
【図２】
2008146254.tif 000004
【図３】
2008146254.tif 000005
【図４】
2008146254.tif 000006
【図５】
2008146254.tif 000007
【図６】
2008146254.tif 000008
【図７】
2008146254.tif 000009
【図８】
2008146254.tif 000010
【図９】
2008146254.tif 000011
【図１０】
2008146254.tif 000012
【図１１】
2008146254.tif 000013