(57)【要約】【課題】ＦＡＴファイルシステムとの互換性を保ったまま、ＦＡＴファイルシステムでは使用中とされているクラスタの未使用の余白エリアを有効に利用できる情報処理装置の実現を課題とする。【解決手段】ＦＡＴ管理テーブル２１とは別個に、テンポラリファイル管理テーブル２２を設け、ＦＡＴで使用しているクラスタに未使用で残っているセクタを空きセクタ取得手段３４で検索し、それにデータ書き込み手段３５でデータを記録し、データ読み出し手段３６で読み出すようにしているので、比較的簡単な方法で、ＦＡＴファイルシステムとの互換性を保ったまま、一部使用中のクラスタの未使用の余白エリアを有効に利用することができる。【選択図】　　　　図１
2004038595.tif 000002
【特許請求の範囲】
【請求項１】
情報記憶手段を具備し、
前記情報記憶手段の記憶領域を複数の一次分割データ格納領域に分割し、
前記一次分割データ格納領域を複数の二次分割データ格納領域に分割し、
前記データ格納領域の使用状況を管理テーブルで管理する情報処理装置において、
前記一次分割データ格納領域の使用状況を一次分割データ格納領域管理テーブルで管理する一次分割データ格納領域管理手段と、
前記二次分割データ格納領域の使用状況を二次分割データ格納領域管理テーブルで管理する二次分割データ格納領域管理手段と
を有することを特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置において、
前記一次分割データ格納領域管理テーブルは前記一次分割データ格納領域に使用中の前記二次分割データ格納領域があるかないかの情報を記憶し、
前記二次分割データ格納領域管理テーブルは、前記第１の一次分割データ格納領域内のすべての二次分割データ格納領域の使用ステータスを記憶することを特徴とする情報処理装置。
【請求項３】
前記二次分割データ格納領域管理手段は、
前記一次分割データ格納領域管理テーブル上で使用中とされている一次分割データ格納領域中の未使用二次分割データ格納領域を管理する二次分割データ格納領域管理テーブルを初期化する二次分割データ格納領域管理テーブル初期化手段と、
前記一次分割データ格納領域管理テーブル上で使用中とされている一次分割データ格納領域中の未使用二次分割データ格納領域を検索し前記二次分割データ格納領域管理テーブルに登録する未使用二次分割データ格納領域検索手段と、
前記二次分割データ格納領域管理テーブルからデータ長に応じた未使用二次分割データ格納領域を探してデータを書き込むデータ書き込み手段と、
このデータ書き込み手段が書き込んだデータを読み出すデータ読み出し手段と、
前記一次分割データ格納領域管理手段が動作を開始したとき前記二次分割データ格納領域管理テーブルに登録されている二次分割データ格納領域を解放する二次分割データ格納領域解放手段と
を具備することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
請求項１の情報処理装置に用いられるプログラムにおいて、
前記一次分割データ格納領域管理テーブル上で使用中とされている一次分割データ格納領域中の未使用二次分割データ格納領域を管理する二次分割データ格納領域管理テーブルを初期化する二次分割データ格納領域管理テーブル初期化手順と、
前記一次分割データ格納領域管理テーブル上で使用中とされている一次分割データ格納領域中の未使用二次分割データ格納領域を検索し前記二次分割データ格納領域管理テーブルに登録する未使用二次分割データ格納領域検索手順と、
前記二次分割データ格納領域管理テーブルからデータ長に応じた未使用二次分割データ格納領域を探してデータを書き込むデータ書き込み手順と、
前記データ書き込み手順で書き込んだデータを読み出すデータ読み出し手順と、
前記一次分割データ格納領域管理手段が動作を開始したとき前記二次分割データ格納領域管理テーブルに登録されている二次分割データ格納領域を解放する二次分割データ格納領域解放手順と
を情報処理装置に実行させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置およびプログラムに関し、特に情報記憶手段の有効利用を図った情報処理装置およびプログラムに関する。
【０００２】
【従来の技術】
フラッシュメモリはＥＥＰＲＯＭ（Ｅｌｅｃｔｏｒｉｃａｌｌｙ　Ｅｒａｓａｂｌｅ　ａｎｄ　Ｐｒｏｇｒａｍｍａｂｌｅ　Ｒｅａｄ　Ｏｎｌｙ　Ｍｅｍｏｒｙ）の一種であるが、通常のＥＥＰＲＯＭが１バイトづつ消去を行うのに対して、ブロック単位または一括に消去できるように構成されているメモリである。データは比較的自由に繰り返し書き替えることができ、バックアップ電源を必要とせず、また構成が簡単なため、単位セル面積がＲＡＭよりも小さいという長所を有している。また、書き込み、消去回数も１０万回ぐらいは保証されている。さらに、記憶容量は数Ｍバイトから５１２Ｍバイトぐらいまで幅広いものがある。このため、パソコンなどのＢＩＯＳ（基本入出力システム）の記憶などに用いられているほか、オンボードメモリとしても広く用いられるようになってきている。
ところで、フラッシュメモリの素子は、メーカおよびその型番によってその仕様が異なっており、殊に記憶容量にともなって一度に転送できるデータの最大単位であるブロックサイズが異なるためにその違いに応じて制御の仕方、処理方法を変えなければならないという問題があった。
【０００３】
これを解決する手段として、従来の情報記録装置でハードディスク装置上のファイル管理に用いられる、ＦＡＴ（Ｆｉｌｅ　Ａｌｌｏｃａｔｉｏｎ　Ｔａｂｌｅ　）ファイルシステムと呼ばれる管理方法を用いてフラッシュメモリの記録領域を管理する方法が報告されている。この方法では、ハードディスクに習ってフラッシュメモリの記録領域を複数の小データ格納領域である仮想セクタに分割し、この複数の仮想セクタをまとめたものを仮想クラスタとする。情報記録装置へのアクセスの単位はこのセクタである。クラスタの使用状況を記憶するテーブルがＦＡＴである。
【０００４】
ＦＡＴの内容は対応するクラスタの使用状況を示し、使用中の場合はファイルが次のクラスタに続くかどうかなどの情報を含んでいる。セクタの大きさ（セクタサイズ）は５１２バイトなどで、クラスタの大きさ（クラスタサイズ）はＭＳ−ＤＯＳでのＦＡＴでは１ｋバイト、ＭＳ−ＤＯＳ３．０から採用されたＦＡＴ１６では３２ｋバイト、Ｗｉｎｄｏｗｓ（Ｒ）９５から採用されたＦＡＴ３２では４ｋバイトである。クラスタサイズが大きいと管理やアクセスが容易になるが、大きすぎるとディスク装置のメモリ領域の利用効率は悪くなる。
【０００５】
ＦＡＴディスクファイルシステムでは、通常データの書き込みに際しては、論理アドレスに従ってファイルを管理するための表であるディレクトリの番号の小さい順にＦＡＴのクラスタ情報（データ格納領域であるクラスタの使用／未使用状態を記録したもの）を参照し、未使用であるクラスタを検索する。次に当該未使用クラスタデータにデータを格納し、ディレクトリ構造とＦＡＴを更新する。
【０００６】
図７はディレクトリ構造を示す説明図である。図８はＦＡＴを示す説明図である。
図７のディレクトリ構造には、ファイル名やファイルが管理されているＯＳの種類を表す拡張子、バイト数や作成日時を表す属性およびＦＡＴ上の開始位置を表すＦＡＴエントリなどが記録されている。図８のＦＡＴにはデータ格納領域の使用／未使用状態を示すクラスタ情報と、そのクラスタのファイルの続きがどのクラスタに続くのか、あるいはここで終了するのかを示す情報が記録されている。
【０００７】
データの書き込みに当たって未使用領域を探す場合、図７のディレクトリから対応付けられたＦＡＴエントリを参照し、図８のＦＡＴからクラスタ情報を参照する。図９のフローチャートに示すように、もし、データ格納領域が未使用（すなわちクラスタ情報＝０）であれば、そのクラスタにデータを格納し、ＦＡＴのクラスタのステータスを未使用（クラスタ情報＝０）から使用（クラスタ情報＝１）に書き換える。さらに、ディレクトリ構造の書き換えを行う。ここで、ディレクトリ構造の書き換えは、ディレクトリ番号に割り当てられるＦＡＴエントリ（ＦＡＴ番号を示す）、ファイル名、拡張子等である。
一方、データ格納領域が使用中（クラスタ情報＝１）であれば、次のディレクトリについて上記の手順を繰り返す。ここで、検索順はディレクトリの小さい順に行う。また、ディレクトリ番号とＦＡＴエントリは固定した形になっている。
【０００８】
ところで、フラッシュメモリの記憶領域をＦＡＴファイルシステムなどのファイルシステムで管理する場合、そのメモリ容量は論理クラスタ単位で処理され、ファイルは論理クラスタ単位で作成される。したがって、ファイルは必ずクラスタの先頭から格納される。また、１つのクラスタは１つのファイルしか含まない。このため、クラスタには未使用セクタが発生する場合がある。クラスタが一部でも使用中の場合は、クラスタ情報は１となり、未使用のセクタが残っていてもＦＡＴファイルシステムでは利用することはできない。
【０００９】
【発明が解決しようとする課題】
上述のごとく、フラッシュメモリをファイルシステムで管理するとファイルの終りにクラスタの未使用のセクタが発生する場合がある。この未使用セクタを全く無駄にしてしまうのは勿体ない。
本発明は、比較的簡単な方法でこの問題を解決して、ＦＡＴファイルシステムへの互換性を保ったまま、一部使用されているクラスタの未使用のセクタを有効に利用することができるフラッシュメモリの利用方法を実行する情報処理装置およびプログラムの実現を課題とする。
【００１０】
【課題を解決するための手段】
上記課題を達成するため、本発明は、情報記憶手段を具備し、前記情報記憶手段の記憶領域を複数の一次分割データ格納領域に分割し、前記一次分割データ格納領域を複数の二次分割データ格納領域に分割し、前記データ格納領域の使用状況を管理テーブルで管理する情報処理装置において、前記一次分割データ格納領域の使用状況を一次分割データ格納領域管理テーブルで管理する一次分割データ格納領域管理手段と、前記二次分割データ格納領域の使用状況を二次分割データ格納領域管理テーブルで管理する二次分割データ格納領域管理手段とを有することを特徴とする。
これにより、比較的簡単な方法で一次分割データ格納領域の管理テーブルによる管理との互換性を保ったまま、管理テーブル上で使用中とされているデータ格納領域中の未使用二次分割データ格納領域を別途管理することが可能な情報処理装置を実現することができる。
【００１１】
また、本発明は、前記一次分割データ格納領域管理テーブルは前記一次分割データ格納領域に使用中の前記二次分割データ格納領域があるかないかの情報を記憶し、前記二次分割データ格納領域管理テーブルは、前記第１の一次分割データ格納領域内のすべての二次分割データ格納領域の使用ステータスを記憶することを特徴とする。
これにより、使用中の一次分割データ格納領域中の二次分割データ格納領域を二次分割データ格納領域管理テーブルによって別途管理することが可能な情報処理装置を実現することができる。
【００１２】
また、本発明の前記二次分割データ格納領域管理手段は、前記一次分割データ格納領域管理テーブル上で使用中とされている一次分割データ格納領域中の未使用二次分割データ格納領域を管理する二次分割データ格納領域管理テーブルを初期化する二次分割データ格納領域管理テーブル初期化手段と、前記一次分割データ格納領域管理テーブル上で使用中とされている一次分割データ格納領域中の未使用二次分割データ格納領域を検索し前記二次分割データ格納領域管理テーブルに登録する未使用二次分割データ格納領域検索手段と、前記二次分割データ格納領域管理テーブルからデータ長に応じた未使用二次分割データ格納領域を探してデータを書き込むデータ書き込み手段と、このデータ書き込み手段が書き込んだデータを読み出すデータ読み出し手段と、前記一次分割データ格納領域管理手段が動作を開始したとき前記二次分割データ格納領域管理テーブルに登録されている二次分割データ格納領域を解放する二次分割データ格納領域解放手段とを具備することを特徴とする。
これにより、一次分割データ格納領域管理テーブルとは別個に、未使用二次分割データ格納領域を管理し、これにデータを記録し、記録したデータを読み出すことが可能な二次分割データ格納領域管理手段を実現することができる。
【００１３】
また、本発明は、情報処理装置に用いられるプログラムにおいて、前記一次分割データ格納領域管理テーブル上で使用中とされている一次分割データ格納領域中の未使用二次分割データ格納領域を管理する二次分割データ格納領域管理テーブルを初期化する二次分割データ格納領域管理テーブル初期化手順と、前記一次分割データ格納領域管理テーブル上で使用中とされている一次分割データ格納領域中の未使用二次分割データ格納領域を検索し前記二次分割データ格納領域管理テーブルに登録する未使用二次分割データ格納領域検索手順と、前記二次分割データ格納領域管理テーブルからデータ長に応じた未使用二次分割データ格納領域を探してデータを書き込むデータ書き込み手順と、前記データ書き込み手順で書き込んだデータを読み出すデータ読み出し手順と、前記一次分割データ格納領域管理手段が動作を開始したとき前記二次分割データ格納領域管理テーブルに登録されている二次分割データ格納領域を解放する二次分割データ格納領域解放手順とを情報処理装置に実行させることを特徴とする。
これにより、管理テーブル上で使用中とされているデータ格納領域中の未使用二次分割データ格納領域を有効に利用することが可能な情報処理装置用のプログラムを実現することができる。
【００１４】
【発明の実施の形態】
以下、本発明にかかる情報処理装置およびプログラムを添付図面を参照にして詳細に説明する。
【００１５】
図１に、本発明が用いられる情報処理装置の構成を示す。図１において、符号１はＣＰＵ、符号２はＲＡＭ、符号３はＲＯＭ、符号４はフラッシュメモリ、符号５はＩ／Ｏインターフェース、符号６はバスである。この構成でＲＡＭ２はＣＰＵ１のメインメモリとしての機能とＦＡＴ管理テーブル２１および本発明のテンポラリファイル管理テーブル２２など全管理テーブルやシステム領域の記憶機能を、ＲＯＭ３はデバイスドライバ、ＦＡＴファイルシステムコントロールブロック３１、テンポラリファイルシステムコントロールブロック３２およびユーザプログラムなどの記憶機能を、フラッシュメモリ４はデータ記憶領域とシステム管理領域とクラスタ情報、不良ブロック情報などの記憶機能を分担すると共に、電源オフ時にＲＡＭ２上のシステム領域を退避する機能を有する。
ここで、ＦＡＴファイルシステムコントロールブロック３１は、クラスタ情報を記憶するＦＡＴを制御する手段である。テンポラリファイルシステムコントロールブロック３２は、セクタ情報を記憶するテンポラリファイル管理テーブルを制御する手段である。このテンポラリファイルシステムコントロールブロック３２はテンポラリファイル初期化手段３３、空きセクタ取得手段３４、データ書き込み手段３５、データ読み出し手段３６、セクタ解放手段３７の各機能を有している。これらと本発明の対応については順次発明の記述の中で説明することにする。
【００１６】
また、このフラッシュメモリファイルシステムを層構成的にイメージしたのが図２である。図２において、符号１１はＣＰＵ、符号１２はフラッシュメモリ、符号１３はアドレスバス、符号１４はデータバス、符号１５はデバイスドライバ、符号１６はファイルシステム、符号１７はテンポラリファイルシステム、符号１８はユーザプログラムである。ハードウェア領域（物理領域）ではＣＰＵ１１と、フラッシュメモリ１２と、ＣＰＵ１１とフラッシュメモリ１２を結ぶアドレスバス１３およびデータバス１４で構成されており、ソフトウェア領域（論理領域）は、ユーザプログラム１８と周辺機器（ここではフラッシュメモリ１２）とを仲介する周辺機器管理プログラムであるデバイスドライバ１５と、それに接続されるＦＡＴ構成のファイルシステム１６、未使用セクタを管理するテンポラリファイルシステム１７およびユーザプログラム１８とで構成されている。デバイスドライバ１５とＦＡＴファイルシステム１６とテンポラリファイルシステム１７はユーザプログラム１８などと共にＲＯＭ３に記憶されている。
【００１７】
図３は、クラスタとセクタの関係を示す説明図である。この例では、１セクタは５１２バイト、１クラスタは３２ｋバイトであると仮定する。したがって、１クラスタは６４セクタから構成されている。クラスタは特許請求の範囲の一次分割データ格納領域にあたり、セクタは二次分割データ格納領域にあたる。また、図４は、本発明でのセクタの利用方法を説明する説明図である。
いま、図４に示すように、ＦＡＴ形式で２ｋバイトのデータをフラシュメモリのクラスタに記録したとする。データが記録されたクラスタをクラスタ１とすると、このクラスタ１には３２ｋ−２ｋ＝３０ｋバイトの余白（未使用部分）が生じる。この余白をセクタに換算すると６０セクタになる。
このような余白を管理して利用するために、本発明では、テンポラリファイルシステムを設けている。
【００１８】
テンポラリファイルシステムの動作を図５および図６のフローチャートに沿って説明する。テンポラリファイルシステムを動作する際には、ＦＡＴが動作中であるかを確認する。ステップ１０１でＦＡＴが動作中の場合は待機する。ＦＡＴが動作していなければ、ステップ１０２に移行する。ステップ１０２でテンポラリファイル初期化手段３３によってテンポラリファイル管理情報を初期化する。
ステップ１０３で空きセクタ取得手段３４は、ＦＡＴ管理情報をもとにＦＡＴで使用しているクラスタ情報およびクラスタに記録されているファイルのサイズ情報を得る。これらの情報をもとに、余白情報を得る。この余白情報はＦＡＴで使用しているクラスタ内に未使用のセクタがあるかどうかを検索し決定する。この時、余白情報の検索対象はあくまでＦＡＴで使用しているクラスタに限っており、ＦＡＴで未使用のクラスタは対象にしない。
ステップ１０４で、こうして求めた余白情報をテンポラリファイル管理情報にＩＤ（識別番号）を付けて登録する。登録する情報の個数は、テンポラリファイル初期化手段３３による初期化の際に予め決められている。
【００１９】
ステップ１０５で、テンポラリファイルシステムへデータを書き込む場合は、ステップ１０６でデータ書き込み手段３５はテンポラリファイル管理情報からデータのサイズにあった最適な余白情報を取得し、ステップ１０７で、余白情報として登録されている未使用のセクタに書き込む。ステップ１０８で、データ書き込み手段３５を呼び出したアプリケーションにＩＤを返し、テンポラリファイル管理情報の余白情報を修正する。
ステップ１０５でデータを書き込みでないと判定された場合、ステップ１０９に移行し、ステップ１０９で、テンポラリファイルシステムからデータを読み出す場合は、ステップ１１０でアプリケーションはデータ読み出し手段３６にＩＤを渡す。データ読み出し手段３６はテンポラリファイル管理情報からＩＤの示すセクタを検索し、ステップ１１１でそのセクタに記録されたデータを読み出してアプリケーションに返す。
テンポラリファイルシステムを使用している期間は、ＦＡＴファイルシステムの操作は行わないことが望ましいために次の制御を行う。ステップ１０９でデータ読出しを行わないと判定された場合、ステップ１１２でＦＡＴファイルシステムの操作を行う場合は、ステップ１１３でセクタの解放手段３７を使用して、テンポラリファイル管理情報に登録されたセクタを解放し、ステップ１１４でテンポラリファイルシステムを無効にしてＦＡＴファイルシステムに移り終了する。なお、本発明は発明の要旨の範囲内において種々の変形実施が可能である。例えば、ステップ１０５，１０６，１０７，１０８とステップ１０９，１１０，１１１と入れ替えることが可能である。
【００２０】
【発明の効果】
以上説明したように本発明によると、ＦＡＴファイルシステムとは別個に、テンポラリファイルシステムを設け、ＦＡＴで使用しているクラスタに未使用で残っているセクタを管理するようにしているので、比較的簡単な方法で、ＦＡＴファイルシステムとの互換性を保ったまま、一部使用中のクラスタの未使用の余白エリアを有効に利用することができ、実用的な価値の高い情報処理装置とプログラムを実現することができる。
【図面の簡単な説明】
【図１】本発明が用いられる情報処理装置の構成を示す図。
【図２】本発明のフラシュメモリファイルシステムの層構成イメージを示す図。
【図３】クラスタとセクタの関係を示す説明図。
【図４】本発明での未使用セクタの利用方法を説明する説明図。
【図５】本発明のテンポラリファイルシステムの処理動作を示すフローチャート。
【図６】本発明のテンポラリファイルシステムの処理動作を示すフローチャート。
【図７】ディレクトリ構造を示す説明図。
【図８】ＦＡＴを示す説明図。
【図９】従来のデータの書き込み手順を示す説明図。
【符号の説明】
１、１１　　ＣＰＵ
２　　ＲＡＭ
３　　ＲＯＭ
４、１２　　フラッシュメモリ
５　　Ｉ／Ｏインターフェース
６　　バス
１３　　アドレスバス
１４　　データバス
１５　　デバイスドライバ
１６　　ファイルシステム
１７　　テンポラリファイルシステム
１８　　ユーザプログラム
２１　　ＦＡＴ管理テーブル
２２　　テンポラリファイル管理テーブル
３１　　ＦＡＴファイルシステムコントロールブロック
３２　　テンポラリファイルシステムコントロールブロック
３３　　テンポラリファイル初期化手段
３４　　空きセクタ取得手段
３５　　データ書き込み手段
３６　　データ読み出し手段
３７　　セクタ解放手段
【図１】
2004038595.tif 000003
【図２】
2004038595.tif 000004
【図３】
2004038595.tif 000005
【図４】
2004038595.tif 000006
【図５】
2004038595.tif 000007
【図６】
2004038595.tif 000008
【図７】
2004038595.tif 000009
【図８】
2004038595.tif 000010
【図９】
2004038595.tif 000011