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