(57)【要約】【課題】フラッシュメモリにデータを記録する場合、論理アドレス−物理アドレスの変換を行なう変換テーブルを用いるが、これが破損等した場合に、変換テーブルの再構築を短時間に行なう。【解決手段】不揮発的に記憶されたデータの消去を複数ページからなるブロックを単位として行ない、データの書き込みと読み出しとをページを単位として実行可能なフラッシュメモリを備えた記憶装置において、変換テーブルの再構築を行なう。その際、フラッシュメモリの各ブロックから、最新の新旧情報ＮＢmxを読み出し、各ブロックの最新の新旧情報の古い順に従って、ブロックに含まれる各ページに記録された論理アドレスを読み出し、論理アドレスに対応する物理アドレスを、論理アドレスに従って配列することで、変換テーブルを再構築する。【選択図】図６
2018206161.tif 000002
【特許請求の範囲】
【請求項１】
ホストデバイスから論理アドレスを用いてアクセスされる記憶装置であって、
不揮発的に記憶されたデータの消去を複数ページからなるブロックを単位として行ない、データの書き込みと読み出しとを前記ページを単位として実行可能なフラッシュメモリと、
前記フラッシュメモリに前記ページを単位として書き込まれるデータの論理アドレスと、前記ブロックと前記ページとにより管理される物理アドレスであって、前記データが書き込まれる物理アドレスとを、変換テーブルによってアドレス変換可能に管理する管理部と、
前記データを前記フラッシュメモリの所定の物理アドレスに書き込む際に、当該物理アドレスに対応する論理アドレスとして前記変換テーブルに記憶される論理アドレスおよび当該書き込みの新旧を表わす新旧情報を、前記ページを単位として、前記データと共に前記物理アドレスに書き込むデータ書込部と、
前記データの書込用として前記ブロックに用意された複数の前記ページへの書き込みを完了する際、前記ブロックの所定のページに、少なくとも前記ブロックに書き込まれた前記新旧情報のうちの最新の新旧情報を書き込む新旧情報書込部と、
前記変換テーブルの再構築を行なうものとして予め定めた再構築タイミングにおいて、前記フラッシュメモリの前記各ブロックから、前記最新の新旧情報を読み出し、前記各ブロックの前記最新の新旧情報の古い順に従って、前記ブロックに含まれる前記各ページに記録された前記論理アドレスを読み出し、当該論理アドレスに対応する前記物理アドレスを、前記論理アドレスに従って配列することで、前記変換テーブルを再構築する再構築部と
を備える記憶装置。
【請求項２】
前記再構築部は、前記新旧情報書込部による書込がなされていない前記ブロックについては、当該ブロックに含まれる前記ページに書き込まれた前記新旧情報を読み出し、前記読み出した新旧情報のうちの最新の新旧情報を、当該ブロックについての最新の新旧情報として扱う請求項１記載の記憶装置。
【請求項３】
請求項１または請求項２記載の記憶装置であって、
前記管理部は、当該記憶装置の使用を終了するタイミングを含むタイミングで、前記変換テーブルを前記フラッシュメモリの所定の領域に記録する変換テーブル記録部を備え、
前記再構築部は、前記フラッシュメモリの前記所定の領域に記録された前記変換テーブルが正常であると判断できないとき、前記再構築タイミングであると判断して、前記変換テーブルの再構築を行なう
記憶装置。
【請求項４】
ホストデバイスから論理アドレスを用いてアクセスされる記憶装置であって、
不揮発的に記憶されたデータの消去を複数ページからなるブロックを単位として行ない、データの書き込みと読み出しとを前記ページを単位として実行可能なフラッシュメモリと、
前記フラッシュメモリに前記ページを単位として書き込まれるデータの論理アドレスと、前記ブロックと前記ページとにより管理される物理アドレスであって、前記データが書き込まれる物理アドレスと、当該データの書き込みの新旧を表わす新旧情報とを、変換テーブルによって管理する管理部と、
前記データを前記フラッシュメモリの所定の物理アドレスに書き込む際に、当該物理アドレスに対応する論理アドレスとして前記変換テーブルに記憶される論理アドレスおよび前記変換テーブルに記憶される前記新旧情報を、前記データと共に前記物理アドレスに書き込むデータ書込部と、
当該記憶装置の使用を終了する際に、前記変換テーブルを前記フラッシュメモリの所定の領域に記録する変換テーブル記録部と、
前記フラッシュメモリの前記所定の領域に記録された前記変換テーブルが正常であると判断できないとき、前記フラッシュメモリの前記ページ単位または前記ブロック単位で記録された前記論理アドレス毎の前記新旧情報と前記フラッシュメモリに記録された前記変換テーブルの前記論理アドレス毎の前記新旧情報とを比較して、前記変換テーブルを再構築する再構築部と
を備える記憶装置。
【請求項５】
少なくとも当該記憶装置の使用開始時に、前記フラッシュメモリに記録された前記変換テーブルの前記新旧情報のうちの最も新しい新旧情報と、前記フラッシュメモリの各ページまたは各ブロックに記録された前記新旧情報のうち最も新しい新旧情報とを比較し、両新旧情報が不一致の場合には、前記変換テーブルが正常であると判断できないと判断する
請求項４に記載された記憶装置。
【請求項６】
前記変換テーブル記録部は、前記変換テーブルの前記フラッシュメモリの所定の領域への記録を、前記記憶装置の使用の終了の際に加えて、前記記憶装置の使用中の所定のタイミングで行なう請求項３から請求項５のいずれか一項に記載の記憶装置。
【請求項７】
請求項３から請求項６のいずれか一項に記載の記憶装置であって、
前記変換テーブル記録部は、前記変換テーブルを前記フラッシュメモリの所定の領域に記録する際、前記変換テーブルに記憶されたすべての新旧情報のうち、最も新しい新旧情報を代表新旧情報として、所定の領域に記録し、
前記再構築部は、前記新旧情報の比較の際に、前記フラッシュメモリに記録された前記変換テーブルの前記新旧情報のうちの最も新しい新旧情報として、前記所定の領域に記録された前記代表新旧情報を読み出して用いる
記憶装置。
【請求項８】
請求項１から請求項７のいずれか一項に記載の記憶装置であって、
前記フラッシュメモリの前記ブロックを単位とした前記データの書き込みが完了する際、前記ページを単位としたデータの書き込みの際に書き込まれた前記論理アドレスと前記新旧情報とを、前記ブロックの所定のページに一括して書き込む一括書込部を備え、
前記再構築部は、前記再構築の際に、前記一括して書き込まれた論理アドレスおよび新旧情報を読み出して、前記フラッシュメモリの前記ページ単位または前記ブロック単位で記録された論理アドレスおよび新旧情報として扱う
記憶装置。
【請求項９】
請求項１から請求項８のいずれか一項に記載の記憶装置が組み込まれ、
前記記憶装置に対して、論理アドレスによりデータをアクセスするコンピュータ装置。
【請求項１０】
不揮発的に記憶されたデータの消去を複数ページからなるブロックを単位として行ない、データの書き込みと読み出しとを前記ページを単位として実行可能なフラッシュメモリを備えた記憶装置に対して、ホストデバイスから論理アドレスを用いてアクセスされる際のデータ管理方法であって、
前記フラッシュメモリに前記ページを単位として書き込まれるデータの論理アドレスと、前記ブロックと前記ページとにより管理される物理アドレスであって、前記データが書き込まれる物理アドレスとを、変換テーブルによってアドレス変換可能に管理し、
前記データを前記フラッシュメモリの所定の物理アドレスに書き込む際に、当該物理アドレスに対応する論理アドレスとして前記変換テーブルに記憶される論理アドレスおよび当該書き込みの新旧を表わす新旧情報を、前記ページを単位として、前記データと共に前記物理アドレスに書き込み、
前記データの書込用として前記ブロックに用意された複数の前記ページへの書き込みを完了する際、前記ブロックの所定のページに、少なくとも前記ブロックに書き込まれた前記新旧情報のうちの最新の新旧情報を書き込み、
前記変換テーブルの再構築を行なうものとして予め定めた再構築タイミングにおいて、前記フラッシュメモリの前記各ブロックから、前記最新の新旧情報を読み出し、前記各ブロックの前記最新の新旧情報の古い順に従って、前記ブロックに含まれる前記各ページに記録された前記論理アドレスを読み出し、当該論理アドレスに対応する前記物理アドレスを、前記論理アドレスに従って配列することで、前記変換テーブルを再構築する
記憶装置のデータ管理方法。
【請求項１１】
不揮発的に記憶されたデータの消去を複数ページからなるブロックを単位として行ない、データの書き込みと読み出しとを前記ページを単位として実行可能なフラッシュメモリを備えた記憶装置に対して、ホストデバイスから論理アドレスを用いてアクセスされる際のデータ管理方法であって、
前記フラッシュメモリに前記ページを単位として書き込まれるデータの論理アドレスと、前記ブロックと前記ページとにより管理される物理アドレスであって、前記データが書き込まれる物理アドレスと、当該データの書き込みの新旧を表わす新旧情報とを、変換テーブルによって管理し、
前記データを前記フラッシュメモリの所定の物理アドレスに書き込む際に、当該物理アドレスに対応する論理アドレスとして前記変換テーブルに記憶される論理アドレスおよび前記変換テーブルに記憶される前記新旧情報を、前記データと共に前記物理アドレスに書き込み、
当該記憶装置の使用を終了する際に、前記変換テーブルを前記フラッシュメモリの所定の領域に記録し、
少なくとも当該記憶装置の使用開始時に、前記フラッシュメモリに記録された前記変換テーブルの前記新旧情報のうちの最も新しい新旧情報と、前記フラッシュメモリの各ページまたは各ブロックに記録された前記新旧情報のうち最も新しい新旧情報とを比較し、両新旧情報が不一致の場合には、前記フラッシュメモリの前記ページ単位または前記ブロック単位で記録された前記論理アドレス毎の前記新旧情報と前記フラッシュメモリに記録された前記変換テーブルの前記論理アドレス毎の前記新旧情報とを比較して、前記変換テーブルを再構築する
記憶装置のデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリを用いた記憶装置におけるデータ管理に関する。
【背景技術】
【０００２】
近年、フラッシュメモリを用いた半導体記憶装置の大容量化が進み、メモリカードやＵＳＢメモリだけでなく、ハードティスクなどの磁気記録型の記憶装置に代わって用いられるようになっている。こうした記憶装置では、記憶されるデータは、通常、ＯＳや専用アプリケーションが提供するファイルシステムを用いて記憶されており、ファイルシステムが扱う論理アドレスから、データが実際に記憶されている物理アドレスを呼び出すのに、両者を対応付けるアドレス変換テーブルが用いられる。従って、ファイルアロケーションテーブルなどが何らかの理由で破損すると、データは残っていても、記憶内容が読み出せなくなってしまうことがある。
【０００３】
このため、従来から、論理アドレスと物理アドレスとを対応付けたテーブルが破損した場合でも、保存されているデータを読み出し可能とするために、記憶装置内に記憶されるデータと共に論理アドレスを記憶しておくことが行なわれている。こうしておけば、データが記憶された領域を読み出すことで、そのデータの論理アドレスを知る事ができ、データを再構築することができる（特許文献１、２参照）。
【０００４】
また、フラッシュメモリでは、データを修正すると、古いデータを上書きするのではなく、新たな領域（フラッシュメモリ内の異なるブロックや異なるページ）に新たにデータが書き込まれるから、同じ論理アドレスを有するデータが異なる場所に記憶さることが生じ得る。そこで、特許文献１では、新たなブロックへの書き込みがなされる度に更新される順序番号を用意し、これをデータと共に記録している。こうすることで、同じ論理アドレスが記録されたブロックが存在すると、両方のブロックに記録された順序番号を比較し、新しい順序番号を有するブロックを、論理アドレスと物理アドレスとを対応付けたテーブルに登録することで、データの再構築を行なっている。特許文献２でも、周回カウンタを用いることで同様の処理を行なっている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−８５５８９号公報
【特許文献２】特開２００８−１４６２５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、これらの特許文献に記載の技術では、記憶されているデータを再構築するのに、全データを読み出さなければならず、再構築に長時間を要するという課題があった。しかも、特許文献１に記載の技術では、あるブロックから読み出した論理アドレスと同一の論理アドレスが他のブロックに記録されていないか、全ブロックのデータを読み出さないと判断できなかった。また特許文献２に記載の技術では、周回カウンタはすべてのブロックへの書き込みが完了した時点で初めてインクリメントされるから、全ブロックへの書き込みが完了する前に生じた不具合に対しては、データの再構築に支障を生じる場合があった。
【課題を解決するための手段】
【０００７】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態又は適用例として実現することが可能である。
【０００８】
（１）本発明の第１の実施態様として、ホストデバイスから論理アドレスを用いてアクセスされる記憶装置が提供される。この記憶装置は、不揮発的に記憶されたデータの消去を複数ページからなるブロックを単位として行ない、データの書き込みと読み出しとを前記ページを単位として実行可能なフラッシュメモリと；前記フラッシュメモリに前記ページを単位として書き込まれるデータの論理アドレスと、前記ブロックと前記ページとにより管理される物理アドレスであって、前記データが書き込まれる物理アドレスとを、変換テーブルによってアドレス変換可能に管理する管理部と；前記データを前記フラッシュメモリの所定の物理アドレスに書き込む際に、当該物理アドレスに対応する論理アドレスとして前記変換テーブルに記憶される論理アドレスおよび当該書き込みの新旧を表わす新旧情報を、前記ページを単位として、前記データと共に前記物理アドレスに書き込むデータ書込部と；前記データの書込用として前記ブロックに用意された複数の前記ページへの書き込みを完了する際、前記ブロックの所定のページに、少なくとも前記ブロックに書き込まれた前記新旧情報のうちの最新の新旧情報を書き込む新旧情報書込部と；前記変換テーブルの再構築を行なうものとして予め定めた再構築タイミングにおいて、前記フラッシュメモリの前記各ブロックから、前記最新の新旧情報を読み出し、前記各ブロックの前記最新の新旧情報の古い順に従って、前記ブロックに含まれる前記各ページに記録された前記論理アドレスを読み出し、当該論理アドレスに対応する前記物理アドレスを、前記論理アドレスに従って配列することで、前記変換テーブルを再構築する再構築部とを備える。
【０００９】
かかる記憶装置は、再構築タイミングにおいて、フラッシュメモリの各ブロックから、最新の新旧情報を読み出し、各ブロックの最新の新旧情報の古い順に従って、そのブロックに含まれる各ページに記録された論理アドレスを読み出し、この論理アドレスに対応する物理アドレスを、論理アドレスに従って配列することで、前記変換テーブルを再構築する。従って、単純な処理で、変換テーブルを容易に再構築することができる。なお、変換テーブルは、初めて記憶装置が用いられるときには、フラッシュメモリにデータが記録される度に、その論理アドレスと物理アドレスとの対応関係を記録していくことで、徐々に作成される。このように、データが書き込まれる度に変換テーブルを構成していることを、本明細書では、変換テーブルを作成すると言う。これに対して、変換テーブルの再構築とは、変換テーブルを、フラッシュメモリに記録されているデータから作成することを意味する。
【００１０】
（２）本発明の第２の態様として、ホストデバイスから論理アドレスを用いてアクセスされるもうひとつの記憶装置が提供される。この記憶装置は、不揮発的に記憶されたデータの消去を複数ページからなるブロックを単位として行ない、データの書き込みと読み出しとを前記ページを単位として実行可能なフラッシュメモリと；前記フラッシュメモリに前記ページを単位として書き込まれるデータの論理アドレスと、前記ブロックと前記ページとにより管理される物理アドレスであって、前記データが書き込まれる物理アドレスと、当該データの書き込みの新旧を表わす新旧情報とを、変換テーブルによって管理する管理部と；前記データを前記フラッシュメモリの所定の物理アドレスに書き込む際に、当該物理アドレスに対応する論理アドレスとして前記変換テーブルに記憶される論理アドレスおよび前記テーブルに記憶される前記新旧情報を、前記データと共に前記物理アドレスに書き込むデータ書込部と；当該記憶装置の使用を終了する際に、前記変換テーブルを前記フラッシュメモリの所定の領域に記録する変換テーブル記録部と；前記フラッシュメモリの前記所定の領域に記録された前記変換テーブルが正常であると判断できないとき、前記フラッシュメモリの前記ページ単位または前記ブロック単位で記録された前記論理アドレス毎の前記新旧情報と前記フラッシュメモリに記録された前記変換テーブルの前記論理アドレス毎の前記新旧情報とを比較して、前記変換テーブルを再構築する再構築部とを備える。
【００１１】
この記憶装置は、フラッシュメモリの所定の領域に記録された変換テーブルが正常であると判断できないとき、フラッシュメモリのページ単位またはブロック単位で記録された論理アドレス毎の新旧情報とフラッシュメモリに記録された変換テーブルの論理アドレス毎の新旧情報とを比較して、変換テーブルを再構築する。従って、同じ論理アドレスが複数記録されている場合でも、新旧情報を用いて変換テーブルを正しく容易に再構築することができる。
【００１２】
本発明は、こうした態様に限らず、記憶装置をコンピュータ装置に一体に組み込んだ構成、あるいはフラッシュメモリを用いた記憶装置におけるデータの管理方法として、など種々の態様で実施することができる。
【図面の簡単な説明】
【００１３】
【図１】実施形態のＳＳＤの概略構成図。
【図２】ＳＳＤへのデータの書き込みと読み出しの流れを示す説明図。
【図３】第１実施形態のＳＳＤにおけるファイル書込処理ルーチンを示すフローチャート。
【図４】フラッシュメモリ内のメモリ構成を示す説明図。
【図５】変換テーブルＣＴの一例を示す説明図。
【図６】変換テーブル再構築処理ルーチンを示すフローチャート。
【図７】フラッシュメモリ内の情報からソート済み作業テーブルＷＴＳを生成する様子を示す説明図。
【図８】第２実施形態のファイル書込処理ルーチンの要部を示すフローチャート。
【図９】第２実施形態における変換テーブルＣＴを示す説明図。
【図１０】ブロックＢ５，Ｂ１２内のデータの一例を示す説明図。
【図１１】変換テーブル保存処理ルーチンを示すフローチャート。
【図１２】起動時処理ルーチンを示すフローチャート。
【図１３】変換テーブル再構築処理を示すフローチャート。
【図１４】他の実施形態におけるデータの保存の様子を示す説明図。
【発明を実施するための形態】
【００１４】
Ａ．第１実施形態：
コンピュータなどのホストデバイス２０に接続され、ホストデバイス２０から見て外部記憶装置の１つとして扱われる記憶装置３０の概略構成を、図１に示した。この記憶装置３０は、いわゆるソリッドステートデバイス（以下、ＳＳＤ）であり、ホストデバイス２０からは、ハードディスクなどと同様に、ファイルシステムを用いて、データを保存することができる。
【００１５】
記憶装置３０は、図示するように、記憶装置３０全体の処理を司るコントローラ４０、データを揮発的に記憶するＲＡＭ５０、データを不揮発的に記憶する大容量のフラッシュメモリ６０を備える。コントローラ４０は、内蔵するプログラムを実行するＣＰＵ４１，ホストデバイス２０との情報のやり取りをシリアル通信により行なうシリアルＩ／Ｏ（以下、単にＳＩ／Ｏと呼ぶ）４３、ＲＡＭ５０とのデータのやり取りを行なうＲＡＭインタフェース（以下、単にＲＡＭＩ／Ｆと呼ぶ）４５、フラッシュメモリ６０とのデータのやり取りを行なうフラッシュインタフェース（以下、単にフラッシュＩ／Ｆと呼ぶ）４６を備える。
【００１６】
この記憶装置３０は、ホストデバイス２０からみれば、単なる外部記憶装置として動作する。この動作の概要を図２に模式的に示した。ホストデバイス２０上では、ＯＳ上でアプリケーションプログラムが動作しており、このアプリケーションプログラムが、データをファイルの形式で外部記憶装置に記憶あるいは読み出そうとすると、対象となるファイルの読み書きを、ＯＳが標準で備えるファイルシステムに依頼する。ファイルシステムは、論理アドレスでファイルを管理するが、実際のデータは、フラッシュメモリ６０内の特定のブロックの特定のページに書き込まれている。このフラッシュメモリ６０のブロックやページによって特定されるアドレスを物理アドレスと呼ぶ。コントローラ４０は、この論理アドレスと物理アドレスとを相互に変換するために、変換用の変換テーブルを持ち、データの保存場所を管理している。この変換テーブルは、記憶装置３０がマウントされて使用されている間は、ＲＡＭ５０に展開されており、記憶装置３０の使用を終了するとき、つまり電源を落すなど、アンマウントされる際に、記憶装置３０のフラッシュメモリ６０の所定の領域に保存される。記憶装置３０の起動時には、フラッシュメモリ６０から読み出されＲＡＭ５０に展開される。
【００１７】
コントローラ４０は、その機能としては、論理アドレスと物理アドレスとの変換を変換テーブルを参照して行なう管理部３１と、アドレス変換を行ないつつ、データをフラッシュメモリ６０の所定のブロック、所定のページに書き込むデータ書込部３２、１つのブロックに用意された複数の前記ページへの書き込みを完了する際、ブロックの所定のページに、少なくともブロックに書き込まれた新旧情報のうちの最新の新旧情報を書き込む新旧情報書込部３３、変換テーブルが破損したとき、これを再構築する再構築部３５などを備える。これら各部は、ディスクリートなハードウェアとしても実現できるが、本実施形態では、コントローラ４０のＣＰＵ４１が内蔵するプログラムを実行することにより、実現されている。このブログラムに従った処理については、後で詳しく説明する。
【００１８】
コントローラ４０により実現される上記各部の処理の説明に先立って、コントローラ４０のＣＰＵ４１が実行するファイル書込ルーチンについて、その概要を、図３のフローチャートを用いて説明する。実際の記憶装置３０では、フラッシュメモリ６０の耐久性を考慮して、各ブロックの使用頻度を平準化する処理なども行なわれているが、それらの処理は公知のものなので、以下の説明では割愛した。
【００１９】
図３に示した処理は、所定のファイルの書き込みの指示をファイルシステムを介して受けた時に、ＣＰＵ４１が実行する。この処理が開始されると、まずファイルサイズＶのファイルを書き込む論理アドレスを決定する処理を行なう（ステップＳ８０）。記憶装置３０へのデータの書き込みや記憶装置３０からのデータの読み出しは、物理アドレスにより行なわれるが、ファイルシステムは、データを論理アドレスで管理するからである。
【００２０】
ステップＳ８０において、ファイルを書き込むべき論理アドレスが決定されたら、ファイルサイズＶのデータを書込可能な物理スペースを探索する（ステップＳ８１）。図４に示したように、本実施形態のフラッシュメモリ６０は、１つのブロックに、データの書込の単位となるPage1〜Page512までの５１２ページを有する。各ページは、２０Ｋバイト程度の大きさを備えるが、そのうちの１６Ｋバイトを４Ｋバイト×４つの部分に分けて、データを保存するデータ部分として管理している。各ページのうち剰余の部分は、冗長部分として用意されており、例えばチェックサムや誤り訂正符号ＥＣＣなどを記憶するために用いられる。本実施形態では、更にこの冗長部分に、論理アドレスと新旧情報とを保存している。新旧情報とは、数十ビットの値であり、この記憶装置３０の使用が開始されてから、ページを単位とする書き込みがフラッシュメモリ６０に生じる度に単調増加（ここでは値１のインクリメント）がなされる値である。新旧情報の役割と扱いについては、後で詳しく説明する。
【００２１】
図４に例示したフラッシュメモリ６０のブロックやページのどの部分が使用されているかは、変換テーブルＣＴに記録されているから、ＣＰＵ４１は、変換テーブルＣＴを参照して、まだデータが書き込まれていないページなどで、ファイルサイズＶのデータを書き込めるスペースがあるかを判断する（ステップＳ８２）。スペースがあると判断した場合には、新旧情報ＮＷをインクリメントする（ステップＳ８３）。その上で、データを、論理アドレスＬＡＤおよび新旧情報ＮＷと共に、そのスペース、つまり物理アドレスに書き込む処理を行なう（ステップＳ８４）。この処理は、図４に示したように、データ（４Ｋバイト×４）、４Ｋバイトのデータ毎の論理アドレスＬＡＤ、そのページの新旧情報を、ページを単位として書き込むことにより行なわれる。
【００２２】
ファイルサイズＶが大きければ、１つのブロックに全部のデータを書き込むことができない場合も存在する。このため、１つのブロック内で書き込みが完了したかを確認し（ステップＳ８５）、書き込みが完了していなければ、つまりブロックの最後の１つの前のページ（この実施形態では、Page511 ）まで達しても書き込むべきデータがまだ残っていたら、そのブロック内の最新の新旧情報ＮＢmxを、最後のページ（Page512 ）に書き込む処理を行ない（ステップＳ８６）、再度上述したステップＳ８４に戻って、ファイルの書き込みを継続する。ブロック内では、番号の小さいページから順にデータが書き込まれていくから、最新の新旧情報ＮＢmxは、Page511 の新旧情報と同じものである。
【００２３】
こうしてファイルサイズＶのデータの書き込みが完了すると、次に、ＲＡＭ５０上の変換テーブルＣＴを更新する処理を行なう（ステップＳ８７）。ここでの変換テーブルＣＴの更新とは、新たに書き込んだデータに関して、その論理アドレスと物理アドレスの関係を追記することに相当する。変換テーブルＣＴの更新を行なったら、「ＥＮＤ」に抜けて、本ルーチンを終了する。
【００２４】
変換テーブルＣＴの一例を図５に示した。この例では、論理アドレスＬＡＤに対する物理アドレスの表示を簡略化し、データの書き込みが開始されるブロックとページのみで示している。符号ＣＫは、論理アドレスＬＡＤ８に対応するデータが、更新されて、当初物理アドレスとしてブロックＢ５のいずれかのページ（例えばページＰ３１〜６４）に書かれたいたものが、ブロックＢ１２のページＰ１に書き込まれたことを示している。この場合、データが保存されていたページＰ３１〜Ｐ６４は、変換テーブルＣＴから除かれ、使用不可のページとして、別途管理される。
【００２５】
他方、ステップＳ８２で、ファイルサイズＶのデータを書き込むスペースがないと判断した場合には、ガベージコレクションを行なう（ステップＳ９０）。データが書き換えられて使用不可となったページは、上述したように、変換テーブルＣＴに使用不可のページとして登録されている。そこで、データを書き込む新たなスペースがなくなった場合には、変換テーブルＣＴに登録されている使用不可のページを解放するためにガベージコレクションを行なう。
【００２６】
ガベージコレクションは、少なくとも１つのスペアブロックを用意しておいた上で、
［１］ガベージコレクションの対象となるブロック（これを、イレーズブロックと呼ぶ）から有効なデータだけをスペアブロックにコピーする。
［２］イレーズブロックを、ブロック単位で消去する。
［３］元のスペアブロックの物理アドレスを、イレーズブロックに記録されていたデータの物理アドレスとして変換テーブルＣＴに登録する。
［４］元のイレーズブロックを新たなスペアブロックとする。
という一連の手続により行なわれる。上記の［１］ないし［４］処理を、使用不可として登録されているページが存在するすべてのブロックについて繰り返し、使用不可のページを解放する。なお、使用できないページはブロックに存在する５１２のページの種々の位置に生じるので、スペアブロックにコピーする際には、先頭のページから順に詰めていく。この結果、データが記録されているページ番号は変更されるので、ガベージコレクションの際には、変換テーブルＣＴ内のページ番号も書き直している。
【００２７】
こうしてガベージコレクションを終えた後で（ステップＳ９０）、再度、ファイルサイズＶのデータを書き込めるだけのスペースがあるかを判断し（ステップＳ９１）、スペースが確保されていれば、上述したステップＳ８３に移行して、新旧情報ＮＷのインクリメント以降の処理を実行する（ステップＳ８３〜Ｓ８７）。他方、ガベージコレクションによってもファイルサイズＶのデータを書き込むスペースが得られていなければ、「ディスク容量が一杯です」といったエラー表示を行ない（ステップＳ９２）、「ＥＮＤ」に抜けて本ルーチンを終了する。
【００２８】
上述したように、記憶装置３０へのデータの書き込みは、ファイルシステムからは論理アドレスにより行なわれ、記憶装置３０のフラッシュメモリ６０へは、ブロック番号とページ番号からなる物理アドレスにより行なわれる。この論理アドレスと物理アドレスとの対応関係は、変換テーブルＣＴにより管理される。これに加えて、フラッシュメモリ６０へは、データと共にそのデータの論理アドレスと新旧情報とを書き込み、更に、１つのブロックの全ページ（ここではPage1〜Page511）へデータが書き込まれると、最後のページ（ここでは、Page512）に、そのブロック内に保存されたデータの最新の新旧情報ＮＢmxが書き込まれる。
【００２９】
ファイルシステムを用いた上記データの書込を前提として、変換テーブル再構築処理が行なわれる。以下、図６を用いてこの処理について説明する。上述したように、変換テーブルＣＴがなければ、ファイルシステムは、論理アドレスを用いて記憶装置３０からデータを読み出すことができない。このため、ＲＡＭ５０に展開されていた変換テーブルＣＴは、記憶装置３０をアンマウントする際に、フラッシュメモリ６０の所定の領域に保存され、次に記憶装置３０がマウントされた時に読み出され、ＲＡＭ５０に展開される。しかしながら、記憶装置３０が正常にアンマウントされる前に突然の電源断などが生じて、ＲＡＭ５０に展開されていた変換テーブルＣＴが正しく保存できない場合が生じ得る。そこで、本実施形態では、記憶装置３０の使用を開始する際に、その都度、変換テーブルＣＴを再構築するものとした。以下、その手法について説明する。
【００３０】
図６のフローチャートに示した処理は、記憶装置３０に電源が投入されるなど、その使用が開始されたタイミングで開始される。まず、すべてのブロックについての最新の新旧情報ＮＢmxの確認が完了したかを判断する（ステップＳ１００）。開始直後は、ステップＳ１００での判断は「ＮＯ」となり、ステップＳ１１０以下の処理に移行する。ステップＳ１１０では、着目ブロックの最終ベージを読み出す処理を行なう。ここで着目ブロックとは、第１ブロックＢ１から最後の第ｎブロックＢｎまでのブロックを、順に処理する際の処理対象となるブロックを意味する。
【００３１】
続いて、読み出した着目ブロックの最終ページ（ここでは、Page512 ）に最新の新旧情報ＮＢmxが書込済みか否かを判断する（ステップＳ１２０）。データが書き込まれる前のページは、全データが消去時の値（通常は値１）となっているので、最新の新旧情報ＮＢmxが書込済みか否かは、最終ページの内容をみれば容易に判断することができる。書込済みでないと判断した場合は、着目ブロックの各ページを先頭から（または末尾から）順に読み出し、使用最終ページを探索する（ステップＳ１３０）。データが書き込まれている最終ページがあれば（ステップＳ１４０）、着目ブロックの最新の新旧情報ＮＢmxとブロック番号とを作業テーブルＷＴに格納する（ステップＳ１５０）。
【００３２】
このとき、最新の新旧情報ＮＢmxが最終ページ（ここでは、Page512 ）に書き込まれていなかったブロックについては、探索した最終ページの新旧情報を最新の新旧情報ＮＢmxとして用いる。図４に例示したように、各ブロックにおいて、データは、番号の小さいページから順に書き込まれていくので、新旧情報もページ番号が大きければ、必ず大きな値が書き込まれている。したがって、データが書き込まれている最後のページの新旧情報を、そのブロックの最新の新旧情報ＮＢmxとして扱って良い。なお、ステップＳ１４０で、最終ページが見い出されないと判断した場合は、着目したブロックにはデータが一度も保存されていないので、何も行なわない。着目ブロックを示すブロック番号１から順にインクリメントしながら、上記の処理を行ない、最新の新旧情報ＮＢmxを作業テーブルＷＴに保存していく。
【００３３】
フラッシュメモリ６０内の新旧情報から、作業テーブルＷＴが作成される様子を図７に例示した。図７の上段は、フラッシュメモリ６０内のブロック番号と最新の新旧情報ＮＢmxを示し、中段は作成された作業テーブルＷＴを示す。図７において、「Ｎ／Ａ」は、そのブロックにはデータが一度も書き込まれていないことを示す。従って、そのブロックは、最新の新旧情報ＮＢmxが読み出されることがなく、作業テーブルＷＴに登録されない。
【００３４】
ステップＳ１４０で「ＮＯ」と判断した場合、またはステップＳ１５０の処理の終了後、ステップＳ１００に戻って、すべてのブロックについて、上記の確認の処理が完了するまで、ステップＳ１１０〜Ｓ１５０を繰り返す。すべてのブロックについての最新の新旧情報ＮＢmxの確認が完了すると（ステップＳ１００：「ＹＥＳ」）、次に、作業テーブルＷＴを、新旧情報でソートする処理を行なう（ステップＳ２００）。ソートの結果得られたソート済み作業テーブルＷＴＳの一例を図７下段に示した。
【００３５】
次に、このソート済み作業テーブルＷＴＳを用いて、以下の処理を、作業テーブルＷＴＳに登録されたすべてのブロックについて繰り返す（ステップｓ２１０−ｅ２１０）。繰返処理内では、まず対象ブロックを確定する（ステップＳ２２０）。つまりソート済み作業テーブルＷＴＳの上から順にブロック番号を読み出し、以下の処理を実施する。
【００３６】
ブロック番号を確定すると、そのブロック内のページ１から最終ページまで、以下の処理を繰り返す（ステップｓ３１０−ｅ３１０）。繰返処理内では、まず各ページから論理アドレスを読み出し（ステップＳ３２０）、読み出した論理アドレスとその論理アドレスに対応する物理アドレスとを、論理アドレス順に、変換テーブルに書き込む処理を行なう（ステップＳ３３０）。この結果、論理アドレスに対応する物理アドレスが、論理アドレスに従って配列されることになる。
【００３７】
この処理を全ベージについて繰り返し、更に全ブロックについて繰り返す。このとき、ブロックについては、その最新の新旧情報ＮＢmxが小さい値から順に処理されるので（図７、ソート済み作業テーブルＷＴＳ参照）、仮に同じ論理アドレスを有するページが読み出されたとしても、既に読み出された論理アドレス−物理アドレスを上書きすれば良い。またフラッシュメモリ６０では、データはページ１から順に書き込まれているので、１つのブロック内の各ページは、ページ番号が小さいほど、小さい新旧情報を持つ。従って、これもページ１から順に処理することで、仮に同じ論理アドレスが現れても、同様に先に読み出された論理アドレス−物理アドレスを上書きするだけで、正しい論理アドレス−物理アドレスの組合せに書き直される。
【００３８】
上記の処理を繰り返すことで、すべてのブロックのすべてのページから読み出した論理アドレス−物理アドレスの組合わせが、変換テーブルＣＴとして記録される。以後、ファイルシステムは、ＲＡＭ５０に展開したこの変換テーブルＣＴを用いて、論理アドレス−物理アドレスの変換を行ないつつ、ファイルを構成するデータのフラッシュメモリ６０への書き込み、フラッシュメモリ６０からの読み出しを行なうことができる。
【００３９】
以上説明した第１実施形態によれば、記憶装置３０にデータを記録する際、データと共にそのデータの論理アドレス、新旧情報とを記録し、更に、フラッシュメモリ６０の各ブロックの最終ページに、そのブロック内の最新の新旧情報ＮＢmxを記録する。その上で、記憶装置３０をマウントする際、各ブロックの最新の新旧情報ＮＢmxを読み出し、各ブロックをこの最新の新旧情報ＮＢmxの順序でソートし、最新の新旧情報ＮＢmxが小さいブロックから順に、論理アドレス−物理アドレスの組合わせを読み出して変換テーブルＣＴを構成する。各ブロックを最新の新旧情報ＮＢmxでソートしているので、単純に各ページに記録された論理アドレス−物理アドレスの組合わせを、論理アドレスの順序で書き込んでいくだけで良く、短時間のうち、変換テーブルＣＴを構成することができる。着目しているブロックの最新の新旧情報ＮＢmxが、既にステップｓ３１０−ｅ３１０で処理済みのブロックの最新の新旧情報ＮＢmxより大きい場合、着目ししているブロックに記録された論理アドレスは、必ず、より後に書き込まれた論理アドレスだからである。
【００４０】
しかも本実施形態では、変換テーブルＣＴとして、従来から用いている論理アドレス−物理アドレスの組からなるものをそのまま使用することができる。新たな特別な情報を変換テーブルに加える必要がない。
【００４１】
第１実施形態では、変換テーブルＣＴは、記憶装置３０の使用開始時に毎回再構築するものとしたが、記憶装置３０の使用が正常に終了しなかったと判断した場合にのみ、再構築するものとしてもよい。例えばアンマウント時などのタイミングで変換テーブルＣＴをフラッシュメモリ６０のシステムエリアに保存するものとし、次に記憶装置３０の使用を開始する際、システムエリアに保存された変換テーブルが正常終了に伴って保存されたものかを判断して、正常終了に伴って保存されたものでない場合にのみ、変換テーブルＣＴを再構築するものとしてもよい。この場合、正常終了に伴って保存されたものであると判断できれば、変換テーブルＣＴの再構築を行なわず、そのまま利用すればよい。正常終了したか否かは、例えば記憶装置３０の使用を開始する際に、使用開始に対応するデータをフラッシュメモリ６０の所定のエリアの末尾に追記し、使用を終了して変換テーブルを保存し終った後で、使用終了に対応するデータをフラッシュメモリ６０の所定のエリアの末尾に追記するようにすれば判断できる。つまり、起動時に、所定のエリアの末尾に記録されたデータを読み出して、使用開始に対応するデータか使用終了に対応するデータかを判断すればよい。使用終了に対応するデータであれば、正常に終了したと判断できるから、記録された変換テーブルＣＴを読み出して、そのまま利用すればよい。こうすれば変換テーブルＣＴの再構築の回数を減らすことができる。
【００４２】
Ｂ．第２実施形態：
次に第２実施形態について説明する。第２実施形態の記憶装置３０は、第１実施形態の記憶装置３０と同一のハードウェア構成を備え、変換テーブルの形式と、変換テーブルを構築する処理が異なる。第２実施形態の記憶装置３０では、図３に例示したファイル書き込み処理ルーチンの末尾のステップＳ８７の処理が異なり、かつその後にステップＳ９９の処理を行なう。この部分の処理を図８に示した。
【００４３】
第２実施形態では、ファイルのデータを書き込む処理（図３）において、データを所定の物理アドレスに書き込んだ後、変換テーブルＣＴを更新するが（ステップＳ８７）、その際、論理アドレス−物理アドレスの組合わせに加えて、新旧情報も保存している。この例を図９示した。第２実施形態では、変換テーブルＣＴには、論理アドレス、物理アドレス（ブロック番号，ページ番号）に加えて、新旧情報が登録されている。
【００４４】
図９に示した例では、論理アドレスＬＡＤ８は更新されており、ブロックＢ５、ページＰ４に記録されていたデータが、更新により、ブロックＢ１２、ページＰ１に移され、新旧情報も更新されている。この場合のブロックＢ５とブロックＢ１２の詳細を図１０に示した。図示するように、ブロックＢ５のページＰ４には、データＤＡＴＡ４とともに、当初、論理アドレスＬＡＤ８と新旧情報としての値８とが書き込まれた。その後、この論理アドレスＬＡＤ８のデータを書き直す必要が生じたが、フラッシュメモリ６０では、データの一部を書き直すことができないので、論理アドレスＬＡＤ８に記録するデータＤＡＴＡ４を、ブロックＢ１２のページＰ１に保存した。データＤＡＴＡ４に併せて、新たな新旧情報として値１５４が保存された。この結果、フラッシュメモリ６０には同一の論理アドレスが記録されたページが複数存在することが分る。このうちにいずれのページのデータが、正しいデータかは、新旧情報を比較すれば分るが、いずれかのページ単独では判断することができない。
【００４５】
ステップＳ８７において変換テーブルＣＴを更新した後、第２実施形態では、ステップＳ９９に移行し、代表新旧情報ＮＷａを更新する処理を行なう。この代表新旧情報ＮＷａとは、すべてのブロック、すべてのページを通して、最大の値を有する新旧情報を意味する。新旧情報は、図３に、ステップＳ８３として示したように、データをフラッシュメモリ６０にページ単位で書き込む際にインクリメントされるので、代表新旧情報ＮＷａとは、その時点で最後にデータを書き込んだ際の新旧情報に等しいということもできる。図９では、最後にデータを書き込んだ際の論理アドレスＬＡＤｎ、物理アドレス（ブロック番号Ｂｎ，ページ番号Ｐｎ）と共に、書き込んだ新旧情報（ここでは、値１５２３）が、代表新旧情報ＮＷａとして、変換テーブルＣＴの所定の領域に書き込まれることを示した。
【００４６】
第２実施形態では、以上説明したように、変換テーブルＣＴには、論理アドレス−物理アドレスの組合わせに対応付けて新旧情報が記憶され、かつ、代表新旧情報ＮＷａも記憶される。また、第２実施形態では、図１１に示すように、この変換テーブルが、フラッシュメモリ６０の所定の領域に保存される。つまり、コントローラ４０のＣＰＵ４１は、保存トリガが生じたか否かを判断し（ステップＳ４１０）、例えば記憶装置３０をアンマウントするといった要求が発生すると、これを保存トリガとして検出し、変換テーブルＣＴをフラッシュメモリ６０のシステムエリアに保存する（ステップＳ４２０）。保存トリガは、この他、所定の時間毎、あるいは所定のデータ容量を保存した毎に発生するようにしてもよい。この結果、アンマウント時など、保存トリガが生じた場合には、図９に示した論理アドレス−物理アドレスの組合わせ、これに対応する新旧情報、および代表新旧情報ＮＷａからなる最新の変換テーブルＣＴが、フラッシュメモリ６０のシステムエリアに記憶される。
【００４７】
こうした処理を前提として運用される第２実施形態の記憶装置３０の起動時処理を図１２を用いて説明する。記憶装置３０の起動とは、記憶装置３０の電源投入のみならず、アンマウントされていた記憶装置３０がマウントされる場合なども含まれる。そこでまず記憶装置３０の起動が電源投入によるものか否かの判断を行なう（ステップＳ５００）。電源投入によるものであると判断すると（ステップＳ５００：「ＹＥＳ」）、フラッシュメモリ６０のシステムエリアから、最新の変換テーブルＣＴを読み出してＲＡＭ５０に展開し（ステップＳ５１０）、その後ステップＳ５２０に移行する。他方、記憶装置３０の起動が電源投入に拠るものでなければ、ＲＡＭ５０には既に変換テーブルＣＴが展開されているので、何も行なわず、ステップＳ５２０に移行する。
【００４８】
ステップＳ５２０では、ＲＡＭ５０に展開した変換テーブルＣＴから代表新旧情報ＮＷａを取得する。その上で、次に、フラッシュメモリ６０の各ブロックに保存された最新の新旧情報ＮＢmxから、その中の最大の値を、フラッシュメモリ６０のユーザエリアに記憶された代表新旧情報ＮＷｂとして、取得する。最新の新旧情報ＮＢmxについては、第１実施形態で詳しく説明した。
【００４９】
次に、こうして取得した２つの代表新旧情報ＮＷａ，ＮＷｂを比較し（ステップＳ５４０）、両者が一致していれば、変換テーブルＣＴは最新のものであって、その内容に誤りはないとして、本起動時処理ルーチンを終了する。以後、ファイルシステムからのデータの読み書きは、ＲＡＭ５０に展開した変換テーブルＣＴを用いて行なわれる。
【００５０】
他方、２つ代表新旧情報ＮＷａ，ＮＷｂが一致していなければ、変換テーブルＣＴを再構築する処理（ステップＳ６００）を行なう。ここで、両者が一致しない場合としては、例えば記憶装置３０の電源が無理に遮断された場合などがある。こうした場合には、使用中の変換テーブルＣＴを、フラッシュメモリ６０のシステムエリアに保存することができないため、両者に不一致を生じるからである。従って、この場合には、変換テーブルＣＴを再度構築する必要がある。これが再構築処理（ステップＳ６００）である。
【００５１】
変換テーブルの再構築処理を図１３に示した。この処理が開始されると、全ブロックについて、ブロック１から順に、以下の処理（ステップｓ６１０−ｅ６１０）を繰り返す。この繰返処理では、まず変換テーブルＣＴ内での着目ブロックの最新の新旧情報ＮＴmxを取得する（ステップＳ６２０）。変換テーブルＣＴは、図９に例示したように、ブロック毎にまとめられている訳ではないが、ＲＡＭ５０に記憶されているので、この変換テーブルＣＴ内を検索して、各ブロックのうちで最も大きな値を持つ新旧データ、即ち最新の新旧データＮＴmxを特定することは容易である。
【００５２】
そこで、次に、この変換テーブルＣＴから得られたブロックの最新の新旧情報ＮＴmxと、各ブロックの最終ページに保存されている最新の新旧情報ＮＢmxとを比較する処理を行なう（ステップＳ６３０）。比較の結果、両者が一致していれば、変換テーブルＣＴのうちの、着目しているブロックについての論理アドレス−物理アドレスの組合わせは最新のものだと判断できるので、何の処理も行なわず、繰り返しの処理の終端まで移行する。全ブロックについての処理が終っていなければ、ステップｓ６１０−ｅ６１０の繰り返しを、着目するブロック番号を１つ進めて再度実行する。
【００５３】
他方、ステップＳ６３０での判断が「ＮＯ」となった場合には、変換テーブルＣＴに記憶されている最新の新旧情報ＮＴmxとブロックに記録されている最新の新旧情報ＮＢmxとが異なることから、そのブロックについての変換テーブルＣＴの内容には誤りがあるとして、そのブロックのページ１から順に、以下の処理（ステップｓ７１０−ｅ７１０）を繰り返す。
【００５４】
この繰返処理では、まずフラッシュメモリ６０の着目ブロック内の着目ページから新旧情報ＮＢｍと論理アドレスＬＤＡとを読み出す処理を行なう（ステップＳ７２０）。各ページの新旧情報ＮＢｍと論理アドレスＬＤＡとは、図４に例示したように、各ページの冗長部分に記録されている。次に、読み出した論理アドレスＬＤＡが、変換テーブルＣＴに記録されているかを判断する（ステップＳ７３０）。読み出した論理アドレスＬＤＡが、変換テーブルＣＴに記録されていなければ、変換テーブルの更新処理（ステップＳ７５０）に移行する。ステップＳ７５０での更新処理については後でまとめて説明する。他方、読み出した論理アドレスＬＤＡが変換テーブルＣＴにあれば（ステップＳ７３０：「ＹＥＳ」）、次に、新旧情報同士の比較を行なう（ステップＳ７４０）。具体的には、変換テーブルＣＴに格納されていた論理アドレスＬＤＡに対応付けられた新旧情報ＮＴｍが、着目ブロック内の着目ページから論理アドレスと共に読み出した新旧情報ＮＢｍと同じか、より大きいかを判断するのである。変換テーブルＣＴに格納されていた新旧情報ＮＴｍが、新旧情報ＮＢｍ以上の値であれば、変換テーブルＣＴ内の情報は正しいとして、何も行なわない（ステップＳ７４０：「ＹＥＳ」）。他方、変換テーブルＣＴ内の新旧情報ＮＴｍが、新旧情報ＮＢｍより小さいか（ステップＳ７４０：「ＮＯ」）、あるいは既に説明した様に、読み出した論理アドレスＬＤＡが変換テーブルＣＴに格納されていなければ（ステップＳ７３０：「ＮＯ」）、変換テーブルＣＴ内の情報は正常でないと判断し、変換テーブルＣＴを更新する処理（ステップＳ７５０）を行なう。
【００５５】
ここでの変換テーブルＣＴの更新処理（ステップＳ７５０）は、次のように行なわれる。
（Ａ）着目ブロック内の着目ページから読み出した論理アドレスＬＤＡが、変換テーブルＣＴに格納されていなければ、読み出した論理アドレスとその物理アドレスとを対応付けて、変換テーブルＣＴに格納する。
（Ｂ）変換テーブルＣＴに格納されていた新旧情報ＮＴｍが着目ブロック内の着目ページから読み出した新旧情報ＮＢｍより小さければ、変換テーブルＣＴ内の新旧情報は古く、フラッシュメモリ６０の着目ブロックの着目ページに記録されている新旧情報の方が正しいとして、変換テーブルＣＴの物理アドレス（ブロック番号およびページ番号）を、その新旧情報ＮＢｍが記録されていたフラッシュメモリ６０の実際の物理アドレス（ブロック番号およびページ番号）によって書き直し、かつ新旧情報ＮＢｍによって新旧情報ＮＴｍを置き換える。
【００５６】
以上の処理（ステップｓ７１０−ｅ７１０）を、着目しているブロックのすべてのページについて順次繰り返し、全ページについて終了すると、着目するブロックを１つ進めて、同様の処理を、最後のブロックまで繰り返す（ステップｓ６１０−ｅ６１０）。
【００５７】
このように、第２実施形態では、変換テーブルＣＴを再構築する際、すべてのブロックのすべてのページについて以上の処理を繰り返すが、ステップＳ６３０において、変換テーブルＣＴに記憶されている最新の新旧情報ＮＴmxと、フラッシュメモリ６０のブロックに記録されている最新の新旧情報ＮＢmxとが一致していれば、そのブロックに含まれるページについての処理は行なわないので、変換テーブルＣＴを再構築する処理を、短時間に終了することができる。
【００５８】
また、第２実施形態では、図１２に示したように、記憶装置３０の起動時に、変換テーブルＣＴの代表新旧情報ＮＷａとフラッシュメモリ６０に記録された代表新旧情報ＮＷｂとが一致しているかを判断し、両者が一致していれば、再構築処理を行なわない。従って、起動の度に変換テーブルＣＴを再構築する必要がない。
【００５９】
Ｃ．その他の実施形態：
上記第１，第２実施形態では、いずれも変換テーブルＣＴの再構築を行なうとき、図６のステップｓ３１０−ｅ３１０の繰り返しや、図１３のステップｓ７１０−ｅ７１０の繰り返しのように、各ブロック内の各ページの内容を読み取っている。そこで、各ブロックの最終ページの１つの前のページまで書き込みが行なわれたとき、そこまでの全ページ（ここでは、Page1-Page511）の冗長部分に記載されたデータを、最終ページ（ここでは、Page512 ）にまとめて書き込むものとしても良い。この様子を図１４に示した。こうしておけば、全ページのデータを読み出して処理する上記繰り返しを、着目するブロックの情報を最終ページから一括して読み出す、という処理で置き換えることができる。なお、最終ページに記録する情報は、冗長部分に記録された論理アドレスと新旧情報のすべてでも良いし、これを圧縮したダイジェストデータであってもよい。ダイジェストデータとしては、例えば論理アドレスや新旧情報が連番であれば、初期値と差分値の形で記録したものであっても良い。
【００６０】
上記の各実施形態では、新旧情報として、順次インクリメントされる値を用いたが、他の実施形態として新旧情報をシステム時刻を用いて記録するものとしてもよい。システム時刻とは、使用されるホストデバイスの内部でリセットされることなく常時計時されている時刻である。あるいは記憶装置３０内にバックアップ用の電源を設け、記憶装置３０内に、リセットされることのないリアルタイムクロックを搭載し、このリアルタイムクロックが発生する時刻の情報を用いてもよい。
【００６１】
この他、本発明は、以下の態様でも実施することができる。１つは、再構築部３５を、新旧情報書込部３３による書込がなされていないブロックについては、そのブロックに含まれるページに書き込まれた新旧情報を読み出し、読み出した新旧情報のうちの最新の新旧情報を、当該ブロックについての最新の新旧情報として扱う構成である。
【００６２】
あるいは、管理部３１に、記憶装置３０の使用を終了するタイミングを含むタイミングで、変換テーブルをフラッシュメモリ６０の所定の領域に記録する変換テーブル記録部を備え、再構築部３５に、フラッシュメモリ６０の所定の領域に記録された変換テーブルが正常であると判断できないとき、再構築タイミングであると判断して、変換テーブルの再構築を行なう構成としてもよい。
【００６３】
また、第２実施形態において、少なくとも当該記憶装置３０の使用開始時に、フラッシュメモリ６０に記録された変換テーブルＣＴの新旧情報のうちの最も新しい新旧情報ＮＷａと、フラッシュメモリ６０の各ページまたは各ブロックに記録された新旧情報のうち最も新しい新旧情報ＮＷｂとを比較し、両新旧情報が不一致の場合には、変換テーブルが正常であると判断できないと判断する構成としてもよい。
【００６４】
更に、変換テーブル記録部は、変換テーブルＣＴのフラッシュメモリ６０の所定の領域への記録を、記憶装置３０の使用の終了の際に加えて、記憶装置３０の使用中の所定のタイミングで行なうものとしてもよい。
【００６５】
また、フラッシュメモリ６０のブロックを単位としたデータの書き込みが完了する際、ページを単位としたデータの書き込みの際に書き込まれた論理アドレスと新旧情報とを、ブロックの所定のページに一括して書き込む一括書込部を備え、再構築部３５は、再構築の際に、一括して書き込まれた論理アドレスおよび新旧情報を読み出して、フラッシュメモリ６０のページ単位またはブロック単位で記録された論理アドレスおよび新旧情報として扱うものとしてもよい。
【００６６】
この他、変換テーブル記録部は、変換テーブルＣＴをフラッシュメモリ６０の所定の領域に記録する際、変換テーブルＣＴに記憶されたすべての新旧情報のうち、最も新しい新旧情報を代表新旧情報として、所定の領域に記録し、再構築部３５が、新旧情報の比較の際に、フラッシュメモリ６０に記録された変換テーブルＣＴの新旧情報のうちの最も新しい新旧情報として、所定の領域に記録されたこの代表新旧情報を読み出して用いるものとしてもよい。
【００６７】
上記実施形態では、記憶装置３０をホストデバイス２０に対する外部記憶装置として扱ったが、記憶装置３０をコンピュータ内に一体に組み込んだ構成としても良い。また、記憶装置３０は、データロガーや携帯電話、デジタルカメラなどと組合わせて用いるものとしてもよい。
【００６８】
上述した第１，第２実施形態は、不揮発的に記憶されたデータの消去を複数ページからなるブロックを単位として行ない、データの書き込みと読み出しとをページを単位として実行可能なフラッシュメモリを備えた記憶装置に対して、ホストデバイスから論理アドレスを用いてアクセスされる際のデータ管理方法としての実施として扱って差し支えない。
【符号の説明】
【００６９】
２０…ホストデバイス
３０…記憶装置
３１…管理部
３２…データ書込部
３３…新旧情報書込部
３５…再構築部
４０…コントローラ
４１…ＣＰＵ
４３…ＳＩ／Ｏ
４５…ＲＡＭＩ／Ｆ
４６…フラッシュＩ／Ｆ
５０…ＲＡＭ
６０…フラッシュメモリ
【図１】
2018206161.tif 000003
【図２】
2018206161.tif 000004
【図３】
2018206161.tif 000005
【図４】
2018206161.tif 000006
【図５】
2018206161.tif 000007
【図６】
2018206161.tif 000008
【図７】
2018206161.tif 000009
【図８】
2018206161.tif 000010
【図９】
2018206161.tif 000011
【図１０】
2018206161.tif 000012
【図１１】
2018206161.tif 000013
【図１２】
2018206161.tif 000014
【図１３】
2018206161.tif 000015
【図１４】
2018206161.tif 000016