JP4077313B2 - 情報処理装置、フラッシュrom管理方法およびプログラム - Google Patents
情報処理装置、フラッシュrom管理方法およびプログラム Download PDFInfo
- Publication number
- JP4077313B2 JP4077313B2 JP2002381287A JP2002381287A JP4077313B2 JP 4077313 B2 JP4077313 B2 JP 4077313B2 JP 2002381287 A JP2002381287 A JP 2002381287A JP 2002381287 A JP2002381287 A JP 2002381287A JP 4077313 B2 JP4077313 B2 JP 4077313B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- area
- recorded
- state
- valid
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Description
【発明の属する技術分野】
この発明は、フラッシュROM(Read Only Memory)を有する情報処理装置、フラッシュROM管理方法およびプログラムに関する。
【0002】
【従来の技術】
記憶しているデータを書き換えることが可能な読み出し専用メモリとして、PROM(Programmable ROM)が用いられている。このようなPROMの中でも、フラッシュROMは、固定長のブロック単位で内容を消去することができ、そのメモリ構造も簡易であり、チップサイズが小さいといった利点がある。また、フラッシュROMは一般的にDRAM(Dynamic Random Access Memory)よりも価格が安いという利点がある。以上のような理由からフラッシュROMに対する注目は高まっている。
【0003】
しかし、フラッシュROMには、以下のような機能的な制限があり、かかる制限がフラッシュROMを管理するファイルシステムに特殊な要求を課すこととなる。
【0004】
まず、1つ目の制限は、ビット値1を0に変更するのはいつもで可能であるのに対し、ビット値0を1に変更する、つまりビット値の消去を行うにはビット境界の操作ではない複雑な処理が要求される。現在のフラッシュROMでは、例えば32kバイトといったサイズのブロック単位でしか消去を行うことができず、このような単位で消去を行わなければ再書き込みをすることはできない。
【0005】
2つ目の制限は、上記のようなブロック単位の消去を行う際に一定の時間が必要なことである。また、3つの目の制限は書き込みや消去の回数に制限があることであり、具体的には何万回といった書き込み/消去制限がなされているものが多い。
【0006】
以上のような制限がある一方で、以下の理由からフラッシュROMを管理するファイルシステムは注目されており、フラッシュROMを管理するファイルシステムに関して種々の技術が提案されている(例えば特許文献1、特許文献2、特許文献3、特許文献4、特許文献5参照)。
▲1▼従来の磁気記録メディアによるシステムと比較して、装置の小型化、軽量化が容易であること
▲2▼従来の磁気記録メディアによるシステムと比較して、衝撃に強いので、搭載装置が可搬性に優れること
▲3▼従来のSRAM(Static RAM)によるシステムと比較して、記憶内容を保持するためのバックアップ電源が不要であること
▲4▼従来のEEPROM(Electrically Erasable Programmable ROM)によるシステムと比較して、素子の小型化が可能であるので、大容量化が可能であること
【0007】
【特許文献1】
特開平6−95955号公報
【特許文献2】
特開平9−93523号公報
【特許文献3】
特開平9−97139号公報
【特許文献4】
特開平9−97206号公報
【特許文献5】
特開平9−97314号公報
【0008】
【発明が解決しようとする課題】
しかし、フラッシュROMは、上述したようにその消去する際のブロックの単位が大きいという制限があるので、ファイルシステムとの整合性がよくない。すなわち、通常のファイルシステムが記憶デバイスとして仮定しているHDD(Hard Disk Drive)やFDD(Floppy(R) Disk Drive)は書き込み単位と消去単位が同一であり、ファイルシステムはこのような特性をもつことを前提とした設計がなされているため、フラッシュROMを記録媒体として使用する場合には上記のようなファイルシステムをそのまま利用することはできない。
【0009】
また、フラッシュROMへのデータの記録中等に電源がオフになされた場合において、データの消失防止やデータの整合性を維持することができないといった不都合が生じる場合がある。このような不都合を抑制するためには、データや管理情報の書き込み回数を増やす必要があるが、上述したようにフラッシュROMには書き込み/消去回数に制限があり、このような書き込み回数の増加はフラッシュROMの寿命の短縮化という問題を招くことになる。
【0010】
この発明は上記に鑑みてなされたもので、消去単位の大きいフラッシュROMをファイルシステムと適合させることができるとともに、データ記録中の電源オフ等に起因する不具合発生を抑制することができる情報処理装置、フラッシュROM管理方法およびプログラムを得ることを目的とする。
【0011】
【課題を解決するための手段】
上記目的を達成するため、請求項1にかかる発明は、複数のデータ領域と、これらのデータ領域に対応する管理領域とを有する消去ブロックを複数備えたフラッシュROM(Read Only Memory)と、前記フラッシュROMにデータを記録する手段であって、前記フラッシュROMの前記管理領域に対応する前記データ領域に記憶されるデータの状態情報を記録する記録手段とを備え、前記記録手段は、ある前記データ領域に記録されているデータを他の前記データ領域に記録させる際に、当該あるデータ領域に対応する前記管理領域に記録される前記状態情報が有効であり、前記他のデータ領域に対応する前記管理領域に記録される前記状態情報が空き状態である場合に以下の(a)〜(e)の処理を順次行い
(a)前記あるデータ領域に対応する前記管理領域に記録されている状態情報を確保状態に書き換え、(b)前記あるデータ領域に対応する前記管理領域に記録されている状態情報を旧有効状態に書き換え、(c)前記あるデータ領域に記録されているデータを前記他のデータ領域に記録し、(d)前記他のデータ領域に対応する前記管理領域に記録されている状態情報を有効状態に書き換え、(e)前記あるデータ領域に対応する前記管理領域に記録されている状態情報を無効状態に書き換え、前記記録手段は、さらに、(f)電源が投入された際に前記管理領域に記録される状態情報が確保状態である場合において、当該管理領域に記録される状態情報以外の情報および対応する前記データ領域のデータが未記録のときには当該管理領域に記録される状態情報を空き状態に書き換える一方で、未記録でないときには状態情報を無効に書き換え、(g)電源が投入された際に前記管理領域に記録される状態情報が旧有効である場合において、当該管理領域に対応する前記データ領域に記録されるデータと同一のデータが他の前記データ領域に記録されており、かつ当該他の前記データ領域に対応する前記管理領域に記録される状態情報が有効であるときには当該管理領域に記録される前記状態情報を旧有効から無効に書き換える一方で、同一のデータが他の前記データ領域に記録されていない、または記録されている場合であっても当該他の前記データ領域に対応する前記管理領域に記録される状態情報が有効以外であるときには当該管理領域の状態情報を旧有効から有効に書き換えることを特徴とする情報処理装置である。
【0012】
請求項1にかかる発明によれば、データ領域に記憶されるデータを、他のデータ領域に記憶させる処理を行う際に、その処理過程の進行に応じて移動元のデータ領域の状態情報が有効状態→旧有効状態→無効状態といった順序で書き換えられ、移動先のデータ領域の状態情報が空き状態→確保状態→有効状態といった順序で書き換えられる。したがって、あるデータ領域から他のデータ領域にデータを移動させる処理中に、電源がオフにされるといった事態が発生した場合であっても、移動元および移動先のデータ領域の状態情報を参照すれば処理中のどの過程で電源がオフになされたか、つまりどの程度処理が進んでいるかを把握することができ、その後いずれのデータ領域のデータを使用すればよいかを把握することができる。したがって、不完全なデータを利用してしまうことに起因する不具合等の発生を抑制できる。
また、電源が投入された際の状態情報が確保状態や旧有効状態である場合に、上記のような条件にしたがってデータ領域の状態が示す状態情報を空き状態、無効状態、有効状態のいずれかに書き換えられることで、当該処理後のデータ領域の真の状態を示す状態情報である有効、無効、空きのいずれかとなり、その後はこの状態情報を参照してデータ読み出し処理等を行うことができる。したがって、不完全なデータが読み出されて使用されるといった不具合の発生を抑制できる。
【0015】
また、請求項2にかかる発明は、請求項1にかかる発明の構成において、前記フラッシュROMの前記消去ブロックは、複数の前記データ領域を連続して配置するデータ領域配置エリアと、複数の前記管理領域を連続して配置する管理領域配置エリアとを有することを特徴とする。
【0016】
請求項2にかかる発明によれば、データ領域が連続して配置されるデータ領域配置エリアがあるので、仮想記憶システムにおいてスワップファイル等をフラッシュROMのデータ領域に記憶する際に、スワップファイルをそのデータ領域配置エリアに含まれるデータ領域に保持することができ、仮想記憶システムとの親和性を高めることができる。
【0017】
また、請求項3にかかる発明は、請求項1または2にかかる発明の構成において、前記管理領域に記録される状態情報は、空き状態、確保状態、有効状態、旧有効状態、無効状態のいずれかであり、かかる順序で状態情報を変更する際にビット値を1から0への変更で行えるようなビット値によって各状態情報が表されることを特徴とする。
【0018】
請求項3にかかる発明によれば、フラッシュROMはビット値を0から1に変更する、つまり消去するには、32kビットといった単位で消去を行わなくてはならないが、ビット値を1から0に変更するだけで足り、状態情報の変更が容易となる。
【0019】
また、請求項4にかかる発明は、複数のデータ領域と、これらのデータ領域に対応する管理領域であって、対応する前記データ領域に記録されるデータの状態情報を記録する管理領域とを有する消去ブロックを複数備えたフラッシュROM(Read Only Memory)へのデータ記録/消去を管理するフラッシュROM管理方法であって、ある前記データ領域に記録されているデータを他の前記データ領域に記録させる際に、当該あるデータ領域に対応する前記管理領域に記録される前記状態情報が有効であり、前記他のデータ領域に対応する前記管理領域に記録される前記状態情報が空き状態である場合に以下の(a)〜(e)の処理を順次行い、
(a)前記あるデータ領域に対応する前記管理領域に記録されている状態情報を確保状態に書き換え、(b)前記あるデータ領域に対応する前記管理領域に記録されている状態情報を旧有効状態に書き換え、(c)前記あるデータ領域に記録されているデータを前記他のデータ領域に記録し、(d)前記他のデータ領域に対応する前記管理領域に記録されている状態情報を有効状態に書き換え、(e)前記あるデータ領域に対応する前記管理領域に記録されている状態情報を無効状態に書き換え、前記記録手段が、さらに前記フラッシュROMを備える装置に電源が投入された際に前記管理領域に記録される状態情報が確保状態である場合において、当該管理領域に対応する前記データ領域のデータが未記録のときには当該管理領域に記録される状態情報を空き状態に書き換える一方で、未記録でないときには状態情報を無効に書き換えるステップと、前記フラッシュROMを備える装置に電源が投入された際に前記管理領域に記録される状態情報が旧有効である場合において、当該管理領域に対応する前記データ領域に記録されるデータと同一のデータが他の前記データ領域に記録されており、かつ当該他の前記データ領域に対応する前記管理領域に記録される状態情報が有効であるときには当該管理領域に記録される前記状態情報を旧有効から無効に書き換える一方で、同一のデータが他の前記データ領域に記録されていない、または記録されている場合であっても当該他の前記データ領域に対応する前記管理領域に記録される状態情報が有効以外であるときには当該管理領域の状態情報を旧有効から有効に書き換えるステップと、を具備することを特徴とするフラッシュROM管理方法である。
【0020】
請求項4にかかる発明によれば、データ領域に記憶されるデータを、他のデータ領域に記憶させる処理を行う際に、その処理過程の進行に応じて移動元のデータ領域の状態情報が有効状態→旧有効状態→無効状態といった順序で書き換えられ、移動先のデータ領域の状態情報が空き状態→確保状態→有効状態といった順序で書き換えられる。したがって、あるデータ領域から他のデータ領域にデータを移動させる処理中に、電源がオフにされるといった事態が発生した場合であっても、移動元および移動先のデータ領域の状態情報を参照すれば処理中のどの過程で電源がオフになされたか、つまりどの程度処理が進んでいるかを把握することができ、その後いずれのデータ領域のデータを使用すればよいかを把握することができる。したがって、不完全なデータを利用してしまうことに起因する不具合等の発生を抑制できる。
また、電源が投入された際の状態情報が確保状態や旧有効状態である場合に、上記のような条件にしたがってデータ領域の状態が示す状態情報を空き状態、無効状態、有効状態のいずれかに書き換えられることで、当該処理後のデータ領域の真の状態を示す状態情報である有効、無効、空きのいずれかとなり、その後はこの状態情報を参照してデータ読み出し処理等を行うことができる。したがって、不完全なデータが読み出されて使用されるといった不具合の発生を抑制できる。
【0023】
また、請求項5にかかる発明は、複数のデータ領域と、これらのデータ領域に対応する管理領域とを有する消去ブロックを複数備えたフラッシュROM(Read Only Memory)へのデータの記録/消去を制御するコンピュータを、前記フラッシュROMの前記データ領域にデータを記録するとともに、前記フラッシュROMの前記管理領域に対応する前記データ領域に記憶されるデータの状態情報を記録する手段であって、ある前記データ領域に記録されているデータを他の前記データ領域に記録させる際に、当該あるデータ領域に対応する前記管理領域に記録される前記状態情報が有効であり、前記他のデータ領域に対応する前記管理領域に記録される前記状態情報が空き状態である場合に以下の(a)〜(e)の処理を順次行う記録手段
(a)前記あるデータ領域に対応する前記管理領域に記録されている状態情報を確保状態に書き換え、(b)前記あるデータ領域に対応する前記管理領域に記録されている状態情報を旧有効状態に書き換え、(c)前記あるデータ領域に記録されているデータを前記他のデータ領域に記録し、(d)前記他のデータ領域に対応する前記管理領域に記録されている状態情報を有効状態に書き換え、(e)前記あるデータ領域に対応する前記管理領域に記録されている状態情報を無効状態に書き換える、として機能させ、さらに、前記記録手段に、(f)電源が投入された際に前記管理領域に記録される状態情報が確保状態である場合において、当該管理領域に記録される状態情報以外の情報および対応する前記データ領域のデータが未記録のときには当該管理領域に記録される状態情報を空き状態に書き換える一方で、未記録でないときには状態情報を無効に書き換え、(g)電源が投入された際に前記管理領域に記録される状態情報が旧有効である場合において、当該管理領域に対応する前記データ領域に記録されるデータと同一のデータが他の前記データ領域に記録されており、かつ当該他の前記データ領域に対応する前記管理領域に記録される状態情報が有効であるときには当該管理領域に記録される前記状態情報を旧有効から無効に書き換える一方で、同一のデータが他の前記データ領域に記録されていない、または記録されている場合であっても当該他の前記データ領域に対応する前記管理領域に記録される状態情報が有効以外であるときには当該管理領域の状態情報を旧有効から有効に書き換える、ことを実現させることを特徴とするプログラムである。
【0024】
請求項5にかかる発明によれば、データ領域に記憶されるデータを、他のデータ領域に記憶させる処理を行う際に、その処理過程の進行に応じて移動元のデータ領域の状態情報が有効状態→旧有効状態→無効状態といった順序で書き換えられ、移動先のデータ領域の状態情報が空き状態→確保状態→有効状態といった順序で書き換えられる。したがって、あるデータ領域から他のデータ領域にデータを移動させる処理中に、電源がオフにされるといった事態が発生した場合であっても、移動元および移動先のデータ領域の状態情報を参照すれば処理中のどの過程で電源がオフになされたか、つまりどの程度処理が進んでいるかを把握することができ、その後いずれのデータ領域のデータを使用すればよいかを把握することができる。したがって、不完全なデータを利用してしまうことに起因する不具合等の発生を抑制できる。
また、電源が投入された際の状態情報が確保状態や旧有効状態である場合に、上記のような条件にしたがってデータ領域の状態が示す状態情報を空き状態、無効状態、有効状態のいずれかに書き換えられることで、当該処理後のデータ領域の真の状態を示す状態情報である有効、無効、空きのいずれかとなり、その後はこの状態情報を参照してデータ読み出し処理等を行うことができる。したがって、不完全なデータが読み出されて使用されるといった不具合の発生を抑制できる。
【0027】
【発明の実施の形態】
以下に添付図面を参照して、この発明にかかる情報処理装置、フラッシュROM管理方法およびプログラムの好適な実施の形態を詳細に説明する。
【0028】
まず、図1は本発明の一実施形態にかかる情報処理装置のハードウェア構成を示すブロック図である。同図に示すように、この情報処理装置100は、互いにバスBUSを介して接続されるCPU(Central Processing Unit)101、ROM102、RAM103、フラッシュROM104およびハードディスクドライブ(HDD)105の他、図示せぬFDD、メモリディスク等の記憶装置を備えている。
【0029】
このような情報処理装置としては、PC(Personal Computer)やPDA(Personal Digital Assistant)などがあるが、これらに限定されるものではなく種々の情報処理装置に適用が可能である。
【0030】
CPU101は、各種演算処理を行うとともに各部を制御する。ROM102はCPU101に読み出された実行されるプログラム群等を格納する。RAM103は、CPU101のワークメモリとして使用される。ハードディスクドライブ105等の記憶装置はCPU120に読み出されて実行されるオペレーティングシステム(OS:Operating System)やアプリケーションプログラム等のプログラム群を格納している。
【0031】
上記構成の下、情報処理装置100の電源を投入すると、CPU101が、ファイル管理、メモリ管理、入出力の管理、ユーザインターフェース等の提供を行う基本ソフトウェアであるOSを読み出して起動し、その後ユーザが指定したアプリケーション等がCPU101によって読み出されて実行される。
【0032】
ここで、図2にOSやアプリケーションが起動されている際のファイルシステムの階層構造を模式的に示す。同図に示すように、最上位の層がユーザアプリケーション201であり、ユーザアプリケーション201はファイルの入出力操作を行う際に、OSの基本機能を実行するカーネル202に対してファイルの入出力要求を行う。
【0033】
カーネル202は、ファイル操作インターフェース部203にこのファイル入出力要求を処理させるが、当該処理要求がファイルシステム上のファイルに対する操作である場合、その処理を当該ファイルが存在しているファイルシステムに応じた処理を行うファイルシステム204に依頼する。
【0034】
ファイルシステム部204は、FAT(File Allocation Table)、FFS(Fast File System)、NFS(Network File System)、ROMFS(ROM File System)、FLASHFS(Flash File System)、ISO(International Organization for Standardization)09660(CD-ROMの論理ファイルフォーマット規格)などの各ファイルシステムに応じた処理を行う。なお、上記依頼に応じて実際にデバイスに対してアクセスを行う場合には、各々のデバイス(FDD、HDD、メモリディスク、フラッシュROM)に対応するデバイスドライバ205を呼び出して依頼に応じた処理を行う。
【0035】
かかる階層構造を採用することで、複数の記録デバイス上に複数のファイルシステムを混在させて使用することができるようになっている。
【0036】
以上が本発明の適用されるファイルシステムであり、このうちのフラッシュファイルシステム(現実の動作主体はCPUであるが説明の便宜上ファイルシステムを主体とする)が上位ユーザアプリケーション201等からの書き込み/消去要求等に応じてフラッシュROM104に対してデータの記録/消去処理、後述するガベージコレクション(Garbage Collection)等の処理を行う記録手段として機能する。本実施形態は、このようなフラッシュROM104に対する処理を行うフラッシュファイルシステムに特徴があり、以下その特徴点を中心に説明する。
【0037】
まず、図3に、フラッシュROM104の領域構成を示す。同図に示すように、このフラッシュROM104は、複数の消去ブロック(#0〜#N)を備えている。上述したようにフラッシュROMは、ビット値1を0に変更するのはいつもで可能であるのに対し、ビット値0を1に変更する、つまりビット値の消去を行うにはビット境界の操作ではない複雑な処理が要求される。現在のフラッシュROMでは、例えば32kバイトといったサイズのブロック単位でしか消去を行うことができず、ここでいう消去ブロックはフラッシュROM104において消去できる単位ブロックである。
【0038】
フラッシュROM104は、複数の消去ブロック301を備えているが、各消去ブロックは、複数のレコード領域(データ領域)302(#0、#1‥‥)と、各々のデータ領域に対応するレコードヘッダ303(#0、#1‥‥)といった2つの領域を有している。このフラッシュROM104では、レコードヘッダ303と、これに対応するレコード領域302とが隣接して配置されるような領域構成となっている。つまり、レコードヘッダ#0の隣に対応するデータ領域#0、レコードヘッダ#1の隣に対応するデータ領域#1が配置されるといったようにレコードヘッダ303とレコード領域302とが交互に隙間なく配置される領域構成となっている。
【0039】
ここで、レコード領域302は、ファイルを構成するデータを記録するための領域である。レコードヘッダ303には、対応するレコード領域302の状態に関する状態情報、対応するレコード領域302に記録されるデータを含むファイルを識別するためのファイル番号および対応するレコード領域302に記録されるデータが当該ファイル中のどの位置にあるものかを示すレコード番号といった情報が記録される領域がある。なお、レコード番号とは、対応するレコード領域302に記録されるデータがある10個のデータから構成されるファイルの中の5番目のデータである場合には、「5番」や「5番/10個」等を意味するデータである。
【0040】
レコードヘッダ303に記録される状態情報とは、対応するレコード領域302に記録されているデータの状態を示す情報であり、本実施形態においては、「空き」、「確保」、「有効」、「旧有効」および「無効」といった5種類の情報のいずれかが記録されるようになっている。
【0041】
ここで、「空き」とは、対応するレコード領域302が未使用であることを意味する状態情報であり、新たなデータ等をフラッシュROM105に記録する際には、かかる状態情報が記録されているレコードヘッダ303に対応するレコード領域302にデータを記録することができる。
【0042】
「有効」とは、対応するレコード領域302が使用されている、つまり有効なデータが記録されていることを意味する状態情報である。
【0043】
「無効」とは、対応するレコード領域302にデータが記録されているものの、そのデータが無効であることを意味する状態情報である。例えば、ファイル中のあるレコード領域に記録されていたデータについて変更するといいった処理があると、そのレコード領域302に記録されているデータはとりあえずそのまま残され、対応するレコードヘッダ303の状態情報を無効とするとともに、変更後のデータを別の「空き」状態のレコード領域302に記録するといった処理が行われる。このような場合に状態情報が「無効」となるのである。
【0044】
なお、状態情報が「無効」であるレコードヘッダ303に対応するレコード領域302には、上記のような変更前のデータ等が記録されているので、消去を行わずには新たなデータを書き込むといった再利用はできない。このようなレコード領域302の再利用を行うには、ガベージコレクションを行わなくてはならないが、かかるガベージコレクションの詳細については後述する。
【0045】
また、本実施形態では、レコードヘッダ303の状態情報として記録される各々の状態「空き」、「確保」、「有効」、「旧有効」、「無効」といった情報は、それぞれ「0xff」、「0xfe」、「0xfc」、「0xf8」、「0xf0」といった値が用いられている。このような値を用いることで、「空き」→「確保」→「有効」→「旧有効」→「無効」といった順序で状態情報を変更する場合、ビット値を1から0に変更するのみで足り、0から1に変更する必要がない。すなわち、上記のようにフラッシュROM104のビット値を0から1に変更するには消去ブロック単位で行わなくてはならないといった制限があるが、以上のようにビット値を1から0に変更するだけで足りる値を用いることで、上記の順序で状態情報の変更が可能となる。
【0046】
なお、状態情報「確保」、「旧有効」は、後述するデータ移動処理(図9参照)によって用いられる状態情報であるが、かかる状態およびデータ移動処理についての詳細は後述する。
【0047】
次に、本実施形態におけるフラッシュファイルシステムでは、フラッシュROM104をファイルシステムに適合させるために、前処理として図4に示すようなファイルテーブルおよびレコードリストを作成し、RAM103に格納する。
【0048】
同図に示すように、ファイルテーブル401は、フラッシュROM104に記録されるファイル名と、ファイルを識別するファイル番号と、ファイルサイズと、レコードリスト402とが対応つけられたテーブルである。レコードリスト402には、そのファイルに含まれるレコード番号と、フラッシュROM104におけるアドレス情報とを含むレコード情報がリスト形式で含まれている。
【0049】
すなわち、あるファイルが、複数のレコード領域302(図3参照)に記録されるデータから構成される場合、レコードリスト402には、これらのレコード領域302に対応するレコードヘッダ303に記録されるレコード番号と、これらのレコード領域302のフラッシュROM104におけるアドレス情報とを有するレコード情報が含まれているのである。したがって、このコードリスト402を参照し、当該レコードリスト402のレコード情報をたどることで、当該ファイルを構成する各々のレコード領域302に記録されたデータをレコード番号順に順次読み出すことができ、ファイルデータ全体を読み出すことができる。
【0050】
また、レコードヘッダ303に記録されている状態情報が「空き」であるレコード領域302については、空きレコードリストが作成される。空きレコードリストは、上記のような状態情報が「空き」であるレコードに関する情報(アドレス情報等)をリスト形式で格納したものであり、かかる空きレコードリストを参照することでどのレコードが「空き」であるかを判別することができるようになっている。
【0051】
さらに、レコードヘッダ303に記録されている状態情報が「無効」であるレコード領域302については、無効レコードリストが作成される。無効レコードリストは、上記のような状態情報が「無効」であるレコードに関する情報(アドレス情報等)をリスト形式で格納したものであり、かかる無効レコードリストを参照することでどのレコードが「無効」であるかを判別することができるようになっている。また、状態情報は、データの書き換えやデータ移動処理等が行われると、「有効」等から「無効」に書き換えられることがある。書き換え処理等によって状態情報が「無効」に書き換えられた場合には、そのレコードに関するアドレス情報等が無効レコードリストに追加される。
【0052】
なお、上記のようにレコード番号およびアドレス情報といったレコード情報をリスト形式で格納するレコードリスト402に代えて、図5に示すように上記情報を配列形式、つまり順序を決めて並べる形式で格納するようにしてもよい。このようにすることで、ファイルに含まれる途中のデータを読み出す際にも、レコードリスト402を参照してその順序をたどるといった必要がなく、処理を高速化できる。ただし、ファイル中に新たなデータを含める等データの追加処理を行う際には、リスト形式では追加するデータに関する情報を単にリストに追加すればよいのに対し、配列形式では順序にしたがって並べる必要があるので追加処理は若干煩雑となる。
【0053】
以上のような構成のファイルテーブル401およびレコードリスト402は、CPU101がソフトウェアを実行することによって機能するファイルシステム部204によって以下のような手順で作成される。
【0054】
まず、フラッシュROM104にあるすべての消去ブロックに含まれるすべてのレコードヘッダ303(図3参照)に記録されているデータを読み出し、状態情報が「有効」であるものについてレコードヘッダ303に記録されているファイル番号を抽出する。そして、抽出したすべてのファイル番号ごとにレコードリスト402を作成し、各々のファイル番号をファイルテーブル401のファイル番号を記録する領域に記録する。
【0055】
また、レコードヘッダ303に記録されている状態情報が「空き」であるものについては、そのアドレス情報等を取得して空きレコードリストを作成する。同様に、レコードヘッダ303に記録されている状態情報が「無効」であるものについては、そのアドレス情報等を取得して無効レコードリストを作成する。
【0056】
一般的に行われるファイル管理において、特殊なファイル番号(例えば「0」)は、ディレクトリファイルを表すファイル番号として使用されており、このようなディレクトリファイルを表すファイル番号のレコードリストをたどってレコードデータを読み出すことで、各ファイル番号に対応するファイル名、ファイルサイズ、その他の属性情報を取得することができる。このように取得したファイル名等の情報をファイルテーブル401にセットする。
【0057】
以上のような処理が終了すると、ファイルテーブル401に登録されたすべてのファイルのレコードリスト402を参照してたどる等して、抜けているレコードがないか、もしくはファイルテーブル401に登録されているファイルサイズとファイルに含まれるレコードの個数から求まるファイルサイズとの整合性が取れているか等のチェックを行い、チェック結果が正常である場合にはテーブル作成処理が完了する。以上が、ファイルシステムによって行われるファイルテーブル作成処理である。
【0058】
次に、上記のようなファイルテーブル401等を用いてファイルの読み出し等を行うファイルシステム部204の動作について説明する。
【0059】
(ファイル読み出し時の動作)
まず、ファイルデータの読み出し時の処理動作について説明する。上位層であるユーザアプリケーション201から、あるファイルデータの読み出し指示を受けると、ファイルテーブル401およびレコードリスト402を参照し、その指示によって特定されるファイル番号に対応したレコードリスト402をたどることで、読み出し指示に対応するファイルデータを構成するデータを各レコード領域302から順次読み出す。これによりユーザアプリケーション201から指示されたファイルデータの読み出しが完了する。
【0060】
(ファイル書き換え時の動作)
次に、ファイルデータを書き換える際の処理動作について図6を参照しながら説明する。ここでは、あるファイルを構成するデータのうち、ユーザアプリケーション201から、図6に示すレコード領域302bに格納されているデータが新たなデータに書き換えられた場合について説明する。
【0061】
かかる場合においては、ファイルシステム部204は、フラッシュROM104における状態情報が「空き」となっているレコードヘッダ303を検索する。ここでは、レコードヘッダ303dの状態情報が「空き」となっており、かかるレコードヘッダ303dに対応するレコード領域302dに新たなデータを書き込めると判断する。
【0062】
そして、ファイルシステム部204は、上記のように検索したレコード領域302dに書き換え後のデータを書き込むとともに、当該レコード領域302dに対応するレコードヘッダ303dの状態情報を「空き」から「有効」に書き換える。また、ファイルシステム部204は、レコードを書き換えられる前のファイルデータを格納するレコード領域302bに対応するレコードヘッダ303bの状態情報を「有効」から「無効」に書き換える。
【0063】
以上がファイル中のあるレコードに格納されるデータを新たなデータに書き換えた際にファイルシステム部204によって行われる動作である。
【0064】
(ガベージコレクション時の動作)
上記のような書き換え動作等が行われると、状態情報が「無効」となっているレコードヘッダ303の数が増加することになる。しかし、状態情報が「無効」であるレコードヘッダ303に対応するレコード領域302には新たなデータを書き込むことができないため、フラッシュROM104の記憶領域を有効活用するためには、かかる状態情報が「無効」のレコードヘッダ303に対応するレコード領域302に記録されたデータを消去して再利用できるようにする必要がある。かかる再利用を可能とするためにファイルシステム部204によって行われる処理がガベージコレクションであり、以下ガベージコレクション実行時の動作について図7および図8を参照しながら説明する。
【0065】
まず、ガベージコレクションでは、フラッシュROM104におけるいずれかの消去ブロックを、消去対象ブロックとして選択する(ステップSa1)。ここで、ファイルシステム部204は、フラッシュROM104に存在する複数の消去ブロックの中から、状態情報が「無効」であるレコードヘッダ303を多数含むといった基準(所定個数以上含むという基準)、状態情報が「有効」であるレコードヘッダ303の数が少ないという基準(所定個数より少ないという基準)、もしくは「無効」の数が所定個数以上であり、かつ「有効」の数が所定個数よりも少ないといった基準で消去ブロックを選択する。
【0066】
上記のように消去ブロックを選択すると、選択した消去ブロックに含まれる状態情報として「有効」が記録されているレコードヘッダ303に対応するレコード領域302に記憶されているデータを、他の消去ブロックに含まれるレコード領域302に移動(コピー)する処理を行う(ステップSa2)。
【0067】
ここで、データのコピー先である他の消去ブロックに含まれるレコード領域302は、対応するレコードヘッダ303に記録されている状態情報が「空き」となっているものである。図8に示す例では、レコードヘッダ303aに対応するレコード領域302aに格納されたデータAを他の消去ブロックのレコード領域302Bに移動させ、レコードヘッダ303dに対応するレコード領域302dに格納されるデータDを他の消去ブロックのレコード領域302Cに移動させる処理を行うことになる。なお、本例では、図を使った説明の便宜上、選択された消去ブロック中に含まれる「有効」データのすべて(図示の例では2つ)を同一の他の消去ブロック中のレコードに移動させることとしているが、異なる消去ブロック中のレコードに移動させるようにしてもよい。
【0068】
次に、図9および図10を参照しながら、ステップSa2におけるデータの移動処理の詳細について説明する。図9に示すように、ファイルシステム部204は、移動先のレコード領域302に対応するレコードヘッダ303の状態情報を「空き」から「確保」に書き換える(ステップSb1)。例えば、図8に示すレコード領域302aに格納されている「データA」をレコード領域302Bに移動させる場合には、移動先のレコード領域302Bに対応するレコードヘッダ303Bの状態情報を「空き」から「確保」に書き換える。
【0069】
次に、ファイルシステム部204は、移動下のレコード領域302に対応するレコード領域302の状態情報を「有効」から「旧有効」に書き換える(ステップSb2)。図8に示す例では、移動元であるレコード領域302aに対応するレコードヘッダ303aの状態情報を「有効」から「旧有効」に書き換える。
【0070】
以上のように移動先および移動元のレコードヘッダ303の状態情報を書き換えると、ファイルシステム部204は、移動元のレコード領域302に格納されているデータおよび移動元のレコードヘッダ303に格納されている状態情報以外のデータ(レコード番号やファイル番号等のデータ)を移動先のレコードに移動、つまりコピーする処理を行う(ステップSb3)。図8に示す例では、レコード領域302aに格納されている「データA」をレコード領域302Bにコピーする処理を行う。
【0071】
データのコピーが終了すると、ファイルシステム部204は、移動先のレコード領域302に対応するレコードヘッダ303の状態情報を「確保」から「有効」に書き換える。図8に示す例では、「データA」がコピーされる他の消去ブロックのレコード領域302Bに対応するレコードヘッダ303Bの状態情報を「確保」から「有効」に書き換える(ステップSb4)。
【0072】
そして、ファイルシステム部204は、移動元のレコード領域302に対応するレコードヘッダ303の状態情報を「旧有効」から「無効」に書き換える(ステップSb5)。図8に示す例では、移動元であるレコード領域302aに対応するレコードヘッダ303aの状態情報を「旧有効」から「無効」に書き換える。
【0073】
本実施形態におけるファイルシステム部204は、あるレコード領域302に格納されたデータを他のレコードに移動(コピー)させる際に上記のような処理を行うのである。
【0074】
なお、図10は、上記データ移動処理の各過程における移動元のレコード領域302に対応するレコードヘッダ303に記録される状態情報と、移動先のレコード領域302に対応するレコードヘッダ303に記録される状態情報とを示している。
【0075】
以上のようなデータ移動処理をあるレコードに格納されたデータについて行うと、ファイルシステム部204は、選択した消去ブロック中に他の状態情報が「有効」となっているレコードヘッダ303が存在するか否かを判別する(ステップSa3)。そして、状態情報が「有効」となっているレコードヘッダ303が存在する場合には、そのレコードヘッダ303に対応するレコード領域302に格納されているデータについて上記のデータ移動処理を行う(ステップSa2)。
【0076】
以上のように選択した消去ブロック中に状態情報が「有効」であるレコードヘッダ303が存在しなくなるまでデータ移動処理を行い、すべての状態情報が「有効」であったデータについての移動処理を完了すると(ステップSa3の判別「Yes」)、選択した消去ブロックについてデータの消去処理を行う(ステップSa4)。図8に示すように、選択した消去ブロック中のすべての「有効」データについてのデータ移動処理が終了すると、選択した消去ブロックには状態情報が「有効」となるデータは存在せず、状態情報が「有効」であった「データA」および「データB」は他の消去ブロック中に格納されている。したがって、選択した消去ブロックのデータをすべて消去することができるのである。
【0077】
以上のように選択した消去ブロックのデータをすべて消去すると、当該消去ブロック中の各レコードヘッダ303の状態情報に「空き」である旨を記述する(ステップSa5)。この結果、以降当該消去ブロック中のレコード領域302を空き領域として新たなデータを記録する等に利用することができるようになる。
【0078】
以上がガベージコレクション実行時の動作の詳細である。本実施形態では、以上のようなガベージコレクションを行うことで、選択された消去ブロック中のレコード領域302に格納されたデータを他の消去ブロックのレコード領域302に移動させる際に、レコードヘッダに記述されたデータ(ファイル番号やレコード番号)をともに移動させることにより、ファイルテーブル401に格納される情報等を大幅に変更することなく、移動後のデータ格納状態でファイルシステムとしての整合性を維持することができる。したがって、ガベージコレクション時の動作が簡易となるといった利点がある。
【0079】
また、本実施形態では、ガベージコレクション時におけるデータの移動処理時に、上記のように移動元、移動先のレコードヘッダ303に格納される状態情報を遷移させるとともに(図9、図10参照)、以下のような状態情報整合処理を電源投入後に行うことで、データ移動処理時に電源がオフにされた場合であっても、電源オフに起因するデータの不整合等の不具合の発生を抑制することができるようになっている。以下、このような状態情報整合処理について図11を参照しながら説明する。
【0080】
電源が投入されると、ファイルシステム部204は、フラッシュROM104中のすべてのレコードヘッダ303について以下の処理を行う。まず、ファイルシステム部204は、処理対象となっているレコードヘッダ303の状態情報が「空き」であるか否かを判別し(ステップSc1)、状態情報が「空き」である場合には、状態情報の書き換え処理等を行わずそのレコードヘッダ303についての処理を終了する。すなわち、このレコードヘッダの状態情報は「空き」のままである。
【0081】
次に、状態情報が「空き」ではない場合(ステップSc1の判別「No」)、ファイルシステム部204は、状態情報が「確保」であるか否かを判別する(ステップSc2)。状態情報が「確保」である場合、このレコードヘッダ303に格納されている状態情報以外のデータ(レコード番号やファイル番号)が未記録状態(例えばデータが0xff)であるか否かを判別する(ステップSc3)。
【0082】
ここで、レコードヘッダの状態情報以外が未記録である場合には、当該レコードヘッダ303の状態情報を「確保」から「空き」に書き換え、当該レコードヘッダ303についての処理を終了する(ステップSc4)。
【0083】
すなわち、レコードヘッダの状態情報が「確保」であり、かつ状態情報以外のデータが未記録ということは、データ移動処理のステップSb1の後、ステップSb3のデータコピーがなされる前に電源がオフになされたと考えられるので、かかるレコードヘッダ303に対応するレコード領域302は未記録であると考えられる。よって、上記のようにこのレコードヘッダ303の状態情報を「確保」から「空き」に書き換えるのである。
【0084】
一方、ステップSc3の判別において、レコードヘッダ303の状態情報以外のデータが未記録ではない場合(判別「No」)、つまりレコード番号やファイル番号等のデータが格納されている場合には、レコードヘッダ303の状態情報を「確保」から「無効」に書き換え(ステップSc5)、当該レコードヘッダについての処理を終了する。
【0085】
すなわち、レコードヘッダの状態情報が「確保」であり、かつ状態情報以外のデータが記録されているということは、データ移動処理のステップSb3のデータコピーが実行されている途中、もしくはコピー後ステップSc4の処理がなされる前に電源がオフになされたと考えられる。この場合、すべてのデータがきちんとコピーされているか否かが不明であるため、このデータを有効にすることはできず、上記のようにこのレコードヘッダ303の状態情報を「確保」から「無効」に書き換えるのである。
【0086】
次に、レコードヘッダ303の状態情報が「確保」ではない場合(ステップSc2の判別「No」)、状態情報が「無効」であるか否かを判別する(ステップSc6)。状態情報が「無効」である場合には、状態情報の書き換え処理等は行わず、そのまま当該レコードヘッダについての処理を終了する。
【0087】
一方、レコードヘッダの状態情報が「無効」でない場合には、状態情報が「旧有効」であるか否かを判別する(ステップSc7)。状態情報が「旧有効」である場合には、当該レコードヘッダ303に記録されているレコード番号と同一のレコード番号が、フラッシュROM104の他のレコードヘッダ303に記録されており、かつ当該他のレコードヘッダ303の状態情報が「有効」であるものが存在するか否かを判別する(ステップSc8)。
【0088】
同一のレコード番号が他のレコードヘッダ303に記録されおり、かつ同一レコード番号を記録するレコードヘッダ303の状態情報が「有効」であるものが存在する場合には、処理対象であるレコードヘッダ303の状態情報を「旧有効」から「無効」に書き換え(ステップSc9)、当該レコードヘッダについての処理を終了する。
【0089】
一方、同一のレコード番号が他のレコードヘッダ303に記録されおり、かつ同一レコード番号を記録するレコードヘッダ303の状態情報が「有効」であるものが存在しない場合には(ステップSc8の判別「No」)、処理対象であるレコードヘッダ303の状態情報を「旧有効」から「有効」に書き換え(ステップSc10)、当該レコードヘッダについての処理を終了する。
【0090】
すなわち、レコードヘッダ303の状態情報が「旧有効」である場合には、図9に示すデータ移動処理中のステップSb2以降ステップSb4のいずれかの過程において電源がオフされたものと考えられる。そして、同一のレコード番号を記録する他のレコードヘッダが存在し、そのレコードヘッダの状態情報が「有効」である場合には、ステップSb4の処理が終了した後ステップSb5の処理が行われる前に電源がオフになされたと考えられ、この場合移動先のデータ、つまり同一のレコード番号が記録されている他のレコードヘッダ303、およびこれに対応するレコード領域302には完全にデータが移動させられており、有効なデータとして扱える状態となっている。したがって、状態情報が「旧有効」のレコードヘッダ303に対応するレコード領域302のデータは不要であるから、かかる状態情報を「無効」とするのである。
【0091】
これに対し、同一のレコード番号を記録する他のレコードヘッダが存在しない、もしくは存在してもそのレコードヘッダの状態情報が「有効」でない場合には、データ移動処理におけるステップSb3のコピー処理が完了した後に電源がオフされたか否かが不明であるので、移動先のデータが完全に有効なものとして扱えるか否かが不明である。したがって、「旧有効」となっている状態情報を「有効」に書き換えることで、かかるレコードヘッダ303に格納されるレコード番号やファイル番号のデータ、およびこれに対応するレコード領域302に格納されたデータを有効なものとして扱うようにするのである。
【0092】
なお、ステップSc7の判別において、状態情報が「旧有効」でない場合には(判別「No」)、状態情報が「有効」であるか否かを判別する(ステップSc11)。そして、状態情報が「有効」である場合には、そのまま状態情報の書き換えを行わずに当該レコードヘッダについての処理を終了する。一方、状態情報が「有効」でない場合には、かかる状態情報は「空き」、「確保」、「無効」、「旧有効」および「有効」のいずれでもないことを意味しており、これは記録エラー等に起因するものと考えられるので、状態情報を「無効」に書き換える(ステップSc12)。
以上が電源投入時にファイルシステム部204によって行われる状態情報整合処理である。
【0093】
上述したようにデータ移動処理(図9参照)の際に処理の進行にしたがって、移動元のレコードヘッダ303の状態情報を「有効」→「旧有効」→「無効」といったように順次書き換えるとともに、移動先のレコードヘッダ303の状態情報を「空き」→「確保」→「有効」といったように順次書き換えることで、図10に示すように、データ移動処理の途中のいずれの過程において電源がオフになされた場合であっても、電源投入後の移動元および移動先の状態情報等を参照することで、電源オフ直前の移動元および移動先のレコード領域302およびレコードヘッダ303のいずれが使用できるもの(完全なデータ)であるか否かを判別することができる。より具体的には、図10に示すように、データ移動処理中のステップSb1〜ステップSb3までの処理中に電源がオフにされた場合には、移動元のレコードに記録されたデータを使用すればよく、ステップSb4以降に電源がオフになされた場合には移動先のレコードに記録されたデータを使用すればよいことがわかる。
【0094】
このように移動元および移動先の状態情報等を参照することで、電源オフ直前の状態を判別できるようにすることが可能なデータ移動処理を行うとともに、電源投入後に上記のように状態情報等を参照して状態情報の整合性を図る状態情報整合処理(図11参照)を行うことで、その後フラッシュROM104に記録されているデータを通常通り利用することができる。
【0095】
すなわち、従来では、データをあるレコードから他のレコードに移動させる処理中に電源がオフになされると、その処理が何処まで進んでいたかを把握することができず、移動元のデータと移動先のデータのいずれを利用すればよいかが判別できないことがある。また、誤った判別をした場合には、書き込み途中のデータを利用してしまうといったように正確なデータを利用できないという不都合が生じていた。これに対し、本実施形態では、上記のような処理を行うことで、データ移動処理中に電源がオフになされるといった事態が発生した場合にもそれによって生じる上記のような不具合の発生を抑制することができるのである。また、かかる不具合の発生を抑止するためにデータの書き換え処理等を頻繁に行う必要もなく、フラッシュROM104の寿命短縮化を抑制することもできる。
【0096】
(変形例)
以上が本発明の一実施形態にかかる情報処理装置および当該情報処理装置が行うフラッシュROMの管理方法であるが、本発明は上記実施形態に限定されるものではなく、以下に例示するような種々の変形が可能である。
【0097】
上述した実施形態においては、フラッシュROM104の領域構成は、レコードヘッダ303とこれに対応するレコード領域302とが隣り合う位置に配置される、つまりレコードヘッダ303とレコード領域302とが交互に配置されるようになっていた。
【0098】
フラッシュROM104の領域構成は、レコードヘッダ303とこれに対応するレコード領域302とが設けられている構成であれば上記のようなものに限らず、例えば図12または図13に示すような領域構成としてもよい。図12および図13に示すように、これらの変形例におけるフラッシュROM104の各消去ブロック301は、レコードヘッダ領域104aと、データ領域104bとに2分割されており、複数のレコードヘッダ303がレコードヘッダ領域104aにまとめて配置されるとともに、当該レコードヘッダ303の各々に対応するレコード領域302がデータ104bにまとめて配置されるといった構成をとっている。
【0099】
このようにレコードヘッダ領域104aとデータ領域104bとを2分割する領域構成を採用する場合においては、データ領域104bの記憶容量を、CPU101が実行する仮想記憶処理におけるページサイズ(スワップファイルサイズ)等と同じ容量とすることが好ましい。このようにすることで、仮想記憶処理におけるスワップファイルをそのままフラッシュROM104のデータ領域104bに保持することができるので、仮想記憶処理を行うシステムとの親和性を高めることができる。
【0100】
また、上述した実施形態では、図9に示すデータ移動処理をガベージコレクション中において行う場合について説明したが、ガベージコレクション実行時以外であってもある消去ブロックのあるレコード領域302に格納されたデータを、他の消去ブロックのレコード領域302に移動させる際には上記データ移動処理を行うことで、処理中に電源がオフにされた場合であっても上記実施形態と同様に不完全なデータを利用してしまうといった不都合を回避することができる。
【0101】
また、上述した実施形態では、CPU101がプログラムにしたがって動作することにより、上述したデータ移動処理(図9参照)や状態情報整合処理(図11参照)を含むファイル管理処理を行う、つまりファイルシステムとして機能するようになっていたが、コンピュータにこのような処理を実行させるためのプログラムをインターネット等の通信回線を介してユーザに提供するようにしてもよいし、当該プログラムをCD−ROM(Compact Disc-Read Only Memory)などのコンピュータ読み取り可能な記録媒体に記録してユーザに提供するようにしてもよい。
【0102】
【発明の効果】
以上説明したように、請求項1にかかる発明によれば、あるデータ領域から他のデータ領域にデータを移動させる処理中に、電源がオフにされるといった事態が発生した場合であっても、移動元および移動先のデータ領域の状態情報を参照すれば処理中のどの過程で電源がオフになされたか、つまりどの程度処理が進んでいるかを把握することができ、その後いずれのデータ領域のデータを使用すればよいかを把握することができる。したがって、不完全なデータを利用してしまうことに起因する不具合等の発生を抑制できるという効果を奏する。
また、各データ領域の状態を示す状態情報が、真の状態を示す状態情報である有効、無効、空きのいずれかとなり、その後はこの状態情報を参照してデータ読み出し処理等を行うことができる。したがって、不完全なデータが読み出されて使用されるといった不具合の発生を抑制できるという効果を奏する。
【0104】
また、請求項2にかかる発明によれば、仮想記憶システムにおいてスワップファイル等をフラッシュROMのデータ領域に記憶する際に、スワップファイルをそのデータ領域配置エリアに含まれるデータ領域に保持することができ、仮想記憶システムとの親和性を高めることができる。
【0105】
また、請求項3にかかる発明によれば、フラッシュROMはビット値を0から1に変更する、つまり消去するには、32kビットといった単位で消去を行わなくてはならないが、ビット値を1から0に変更するだけで足り、状態情報の変更が容易となるという効果を奏する。
【0106】
また、請求項4にかかる発明によれば、あるデータ領域から他のデータ領域にデータを移動させる処理中に、電源がオフにされるといった事態が発生した場合であっても、移動元および移動先のデータ領域の状態情報を参照すれば処理中のどの過程で電源がオフになされたか、つまりどの程度処理が進んでいるかを把握することができ、その後いずれのデータ領域のデータを使用すればよいかを把握することができる。したがって、不完全なデータを利用してしまうことに起因する不具合等の発生を抑制できるという効果を奏する。
また、各データ領域の状態を示す状態情報が、真の状態を示す状態情報である有効、無効、空きのいずれかとなり、その後はこの状態情報を参照してデータ読み出し処理等を行うことができる。したがって、不完全なデータが読み出されて使用されるといった不具合の発生を抑制できるという効果を奏する。
【0108】
また、請求項5にかかるプログラムをコンピュータに実行させることで、あるデータ領域から他のデータ領域にデータを移動させる処理中に、電源がオフにされるといった事態が発生した場合であっても、移動元および移動先のデータ領域の状態情報を参照すれば処理中のどの過程で電源がオフになされたか、つまりどの程度処理が進んでいるかを把握することができ、その後いずれのデータ領域のデータを使用すればよいかを把握することができる。したがって、不完全なデータを利用してしまうことに起因する不具合等の発生を抑制できるという効果を奏する。
また、請求項5にかかるプログラムをコンピュータに実行させることで、各データ領域の状態を示す状態情報が、真の状態を示す状態情報である有効、無効、空きのいずれかとなり、その後はこの状態情報を参照してデータ読み出し処理等を行うことができる。したがって、不完全なデータが読み出されて使用されるといった不具合の発生を抑制できるという効果を奏する。
【図面の簡単な説明】
【図1】本発明の一実施形態にかかる情報処理装置のハードウェア構成を示すブロック図である。
【図2】前記情報処理装置のファイルシステムの階層構造を示す図である。
【図3】前記情報処理装置の構成要素であるフラッシュROMの領域構成を示す図である。
【図4】前記ファイルシステムによって作成されるファイルテーブルの内容を示す図である。
【図5】前記ファイルテーブルによって作成されるレコード情報の配列形式を示す図である。
【図6】前記ファイルシステムによるフラッシュROMに記録されたデータの書き換え処理の内容を説明するための図である。
【図7】前記ファイルシステムによって行われるガベージコレクションの手順を示すフローチャートである。
【図8】前記ガベージコレクションの内容を説明するための図である。
【図9】前記ガベージコレクション時に前記ファイルシステムによって行われるデータ移動処理の手順を示すフローチャートである。
【図10】前記データ移動処理の各過程におけるデータの移動元レコードの状態と移動先レコードの状態とを示す図である。
【図11】前記ファイルシステムが電源投入後に行う状態情報整合処理の手順を示すフローチャートである。
【図12】前記フラッシュROMの領域構成の変形例を示す図である。
【図13】前記フラッシュROMの領域構成の他の変形例を示す図である。
【符号の説明】
100 情報処理装置
101 CPU
102 ROM
103 RAM
104 フラッシュROM
104b データ領域
104a レコードヘッダ領域
105 ハードディスクドライブ
201 ユーザアプリケーション
202 カーネル
203 ファイル操作インターフェース部
204 ファイルシステム部
205 デバイスドライバ
301 消去ブロック
302 レコード領域
303 レコードヘッダ
401 ファイルテーブル
402 レコードリスト
Claims (5)
- 複数のデータ領域と、これらのデータ領域に対応する管理領域とを有する消去ブロックを複数備えたフラッシュROM(Read Only Memory)と、
前記フラッシュROMにデータを記録する手段であって、前記フラッシュROMの前記管理領域に、対応する前記データ領域に記憶されるデータの状態情報を記録する記録手段とを備え、
前記記録手段は、ある前記データ領域に記録されているデータを他の前記データ領域に記録させる際に、当該あるデータ領域に対応する前記管理領域に記録される前記状態情報が有効であり、前記他のデータ領域に対応する前記管理領域に記録される前記状態情報が空き状態である場合に以下の(a)〜(e)の処理を順次行い、
(a)前記あるデータ領域に対応する前記管理領域に記録されている状態情報を確保状態に書き換え、
(b)前記あるデータ領域に対応する前記管理領域に記録されている状態情報を旧有効状態に書き換え、
(c)前記あるデータ領域に記録されているデータを前記他のデータ領域に記録し、
(d)前記他のデータ領域に対応する前記管理領域に記録されている状態情報を有効状態に書き換え、
(e)前記あるデータ領域に対応する前記管理領域に記録されている状態情報を無効状態に書き換え、
前記記録手段は、さらに、
(f)電源が投入された際に前記管理領域に記録される状態情報が確保状態である場合において、当該管理領域に記録される状態情報以外の情報および対応する前記データ領域のデータが未記録のときには当該管理領域に記録される状態情報を空き状態に書き換える一方で、未記録でないときには状態情報を無効に書き換え、
(g)電源が投入された際に前記管理領域に記録される状態情報が旧有効である場合において、当該管理領域に対応する前記データ領域に記録されるデータと同一のデータが他の前記データ領域に記録されており、かつ当該他の前記データ領域に対応する前記管理領域に記録される状態情報が有効であるときには当該管理領域に記録される前記状態情報を旧有効から無効に書き換える一方で、同一のデータが他の前記データ領域に記録されていない、または記録されている場合であっても当該他の前記データ領域に対応する前記管理領域に記録される状態情報が有効以外であるときには当該管理領域の状態情報を旧有効から有効に書き換える
ことを特徴とする情報処理装置。 - 前記フラッシュROMの前記消去ブロックは、複数の前記データ領域を連続して配置するデータ領域配置エリアと、複数の前記管理領域を連続して配置する管理領域配置エリアとを有する
ことを特徴とする請求項1に記載の情報処理装置。 - 前記管理領域に記録される状態情報は、空き状態、確保状態、有効状態、旧有効状態、無効状態のいずれかであり、かかる順序で状態情報を変更する際にビット値を1から0への変更で行えるようなビット値によって各状態情報が表される
ことを特徴とする請求項1または2に記載の情報処理装置。 - 複数のデータ領域と、これらのデータ領域に対応する管理領域であって、対応する前記データ領域に記録されるデータの状態情報を記録する管理領域とを有する消去ブロックを複数備えたフラッシュROM(Read Only Memory)へのデータ記録/消去を管理するフラッシュROM管理方法であって、
記録手段が、ある前記データ領域に記録されているデータを他の前記データ領域に記録させる際に、当該あるデータ領域に対応する前記管理領域に記録される前記状態情報が有効であり、前記他のデータ領域に対応する前記管理領域に記録される前記状態情報が空き状態である場合に以下の(a)〜(e)の処理を順次行い、
(a)前記あるデータ領域に対応する前記管理領域に記録されている状態情報を確保状態に書き換え、
(b)前記あるデータ領域に対応する前記管理領域に記録されている状態情報を旧有効状態に書き換え、
(c)前記あるデータ領域に記録されているデータを前記他のデータ領域に記録し、
(d)前記他のデータ領域に対応する前記管理領域に記録されている状態情報を有効状態に書き換え、
(e)前記あるデータ領域に対応する前記管理領域に記録されている状態情報を無効状態に書き換え、
前記記録手段が、さらに前記フラッシュROMを備える装置に電源が投入された際に前記管理領域に記録される状態情報が確保状態である場合において、当該管理領域に対応する前記データ領域のデータが未記録のときには当該管理領域に記録される状態情報を空き状態に書き換える一方で、未記録でないときには状態情報を無効に書き換えるステップと、
前記フラッシュROMを備える装置に電源が投入された際に前記管理領域に記録される状態情報が旧有効である場合において、当該管理領域に対応する前記データ領域に記録されるデータと同一のデータが他の前記データ領域に記録されており、かつ当該他の前記データ領域に対応する前記管理領域に記録される状態情報が有効であるときには当該管理領域に記録される前記状態情報を旧有効から無効に書き換える一方で、同一のデータが他の前記データ領域に記録されていない、または記録されている場合であっても当該他の前記データ領域に対応する前記管理領域に記録される状態情報が有効以外であるときには当該管理領域の状態情報を旧有効から有効に書き換えるステップと、
を具備することを特徴とするフラッシュROM管理方法。 - 複数のデータ領域と、これらのデータ領域に対応する管理領域とを有する消去ブロックを複数備えたフラッシュROM(Read Only Memory)へのデータの記録/消去を制御するコンピュータを、
前記フラッシュROMの前記データ領域にデータを記録するとともに、前記フラッシュROMの前記管理領域に、対応する前記データ領域に記憶されるデータの状態情報を記録する手段であって、ある前記データ領域に記録されているデータを他の前記データ領域に記録させる際に、当該あるデータ領域に対応する前記管理領域に記録される前記状態情報が有効であり、前記他のデータ領域に対応する前記管理領域に記録される前記状態情報が空き状態である場合に以下の(a)〜(e)の処理を順次行う記録手段
(a)前記あるデータ領域に対応する前記管理領域に記録されている状態情報を確保状態に書き換え、
(b)前記あるデータ領域に対応する前記管理領域に記録されている状態情報を旧有効状態に書き換え、
(c)前記あるデータ領域に記録されているデータを前記他のデータ領域に記録し、
(d)前記他のデータ領域に対応する前記管理領域に記録されている状態情報を有効状態に書き換え、
(e)前記あるデータ領域に対応する前記管理領域に記録されている状態情報を無効状態に書き換える
として機能させ、
さらに、前記記録手段に、
(f)電源が投入された際に前記管理領域に記録される状態情報が確保状態である場合において、当該管理領域に記録される状態情報以外の情報および対応する前記データ領域のデータが未記録のときには当該管理領域に記録される状態情報を空き状態に書き換える一方で、未記録でないときには状態情報を無効に書き換え、
(g)電源が投入された際に前記管理領域に記録される状態情報が旧有効である場合において、当該管理領域に対応する前記データ領域に記録されるデータと同一のデータが他の前記データ領域に記録されており、かつ当該他の前記データ領域に対応する前記管理領域に記録される状態情報が有効であるときには当該管理領域に記録される前記状態情報を旧 有効から無効に書き換える一方で、同一のデータが他の前記データ領域に記録されていない、または記録されている場合であっても当該他の前記データ領域に対応する前記管理領域に記録される状態情報が有効以外であるときには当該管理領域の状態情報を旧有効から有効に書き換える、
ことを実現させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002381287A JP4077313B2 (ja) | 2002-12-27 | 2002-12-27 | 情報処理装置、フラッシュrom管理方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002381287A JP4077313B2 (ja) | 2002-12-27 | 2002-12-27 | 情報処理装置、フラッシュrom管理方法およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004213263A JP2004213263A (ja) | 2004-07-29 |
JP4077313B2 true JP4077313B2 (ja) | 2008-04-16 |
Family
ID=32817259
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002381287A Expired - Fee Related JP4077313B2 (ja) | 2002-12-27 | 2002-12-27 | 情報処理装置、フラッシュrom管理方法およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4077313B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4691355B2 (ja) * | 2004-12-28 | 2011-06-01 | 日本電産サンキョー株式会社 | 不揮発性メモリ |
CA2766231C (en) | 2009-06-26 | 2017-01-17 | Simplivity Corporation | Namespace file system accessing an object store |
-
2002
- 2002-12-27 JP JP2002381287A patent/JP4077313B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004213263A (ja) | 2004-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100771519B1 (ko) | 플래시 메모리를 포함한 메모리 시스템 및 그것의 머지방법 | |
JP4422652B2 (ja) | 漸進的マージ方法及びそれを利用したメモリシステム | |
KR100684887B1 (ko) | 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법 | |
JP4988215B2 (ja) | 複数のマッピング技法を採用した適応型フラッシュメモリ制御装置及びそれを含むフラッシュメモリシステム | |
US7610434B2 (en) | File recording apparatus | |
JP4257834B2 (ja) | 磁気ディスク装置、ファイル管理システム及びその方法 | |
JP4749255B2 (ja) | 複数種類の記憶デバイスを備えたストレージシステムの制御装置 | |
US20110208898A1 (en) | Storage device, computing system, and data management method | |
JP2008198208A (ja) | ホストデータ処理装置の動作方法、ホストデータ処理装置並びにデータ格納装置 | |
JP2009199625A (ja) | メモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法 | |
CZ9701859A3 (cs) | Ukládání počítačových dat | |
JP2006040264A (ja) | メモリカードの制御方法および不揮発性半導体メモリの制御方法 | |
US20110113075A1 (en) | Garbage collection program, garbage collection method, and garbage collection system | |
JP2008070975A (ja) | データ保存装置及びデータ保存方法 | |
KR20000022716A (ko) | 로그 구조화 목표 저장장치를 사전에 구성하여 볼륨을 효율적으로 복사하는 방법 및 장치 | |
JP2006313531A (ja) | ファイル管理システム | |
JP4077313B2 (ja) | 情報処理装置、フラッシュrom管理方法およびプログラム | |
JP2007128448A (ja) | ファイルシステム及びファイル情報処理方法 | |
CN100555243C (zh) | 信息处理装置、图像摄取装置以及信息处理方法 | |
JP4714291B2 (ja) | 情報記録装置、情報記録方法及び情報記録用プログラム | |
JPH0695955A (ja) | フラッシュ・ファイル・システム | |
Fulton | Solid State Disk forensics: Is there a path forward? | |
JP2006323462A (ja) | ファイルコピー装置およびファイルコピー方法 | |
JP2010003150A (ja) | メモリコントローラおよびフラッシュメモリのデータ管理方法 | |
JP4599450B2 (ja) | 電子機器、ファイルシステムの記憶領域割当法、および記憶領域割当プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050221 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20071109 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071113 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080108 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080129 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080131 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110208 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120208 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130208 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130208 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140208 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |