(57)【要約】【課題】  フラッシュメモリ等のデータ記録媒体へ高速にデータを記憶させる。【解決手段】  記憶すべきデータからなる各ファイルが階層的なＦＡＴシステム３０を介して管理されるデータ領域３３に、複数のクラスタにより構成される書き込みブロック単位でデータを書き込む際に、外部から供給されたデータをＲＡＭ１４に連続的に配置し、ＲＡＭ１４に配置したデータを書き込みブロック単位でデータ領域３３へ書き込む際にその書き込み状況をＦＡＴシステム３０上の管理テーブル３１,３２に反映させ、またデータ記憶領域へ書き込んだデータを当該管理テーブル３１,３２を用いて複数のファイルに分割する。ＲＡＭ１４にデータを配置する際には、先頭アドレス位置からクラスタサイズのｎ倍（ｎは１を除く整数）に応じたアドレス位置に至るまで、各ファイルを構成するデータを配置するとともに、各ファイル間の空き領域が上記クラスタサイズ未満となるようにこれを制御する。【選択図】図３
2005235007.tif 000002
【特許請求の範囲】
【請求項１】
記憶すべきデータからなる各ファイルが階層的なファイルシステムを介して管理されるデータ記憶領域に、複数の固定長クラスタにより構成されるブロック単位でデータを書き込むデータ記憶装置において、
外部から供給されたデータを連続的に配置するためのメモリと、
上記メモリに配置されたデータを上記ブロック単位で上記データ記憶領域へ書き込む際にその書き込み状況を上記ファイルシステム上の管理テーブルに反映させ、また上記データ記憶領域へ書き込んだデータを当該管理テーブルを用いて複数のファイルに分割する制御手段とを備え、
上記制御手段は、先頭アドレス位置から上記固定長クラスタサイズのｎ倍（ｎは１を除く整数）に応じたアドレス位置に至るまで、各ファイルを構成するデータを上記メモリに上記ブロック単位で連続的に配置するとともに、各ファイル間の空き領域が上記固定長クラスタサイズ未満となるようにこれを制御すること
を特徴とするデータ記憶装置。
【請求項２】
上記制御手段は、上記複数のファイルを分割する際に、上記ファイルシステムを構成する階層ディレクトリにおける書き込み単位の整数倍のサイズを一度に処理すること
を特徴とする請求項１記載のデータ記憶装置。
【請求項３】
上記制御手段は、上記データ記憶領域への書き込み単位又は消去単位の整数倍を上記ブロック単位として上記メモリに配置されたデータを書き込むこと
を特徴とする請求項１記載のデータ記憶装置。
【請求項４】
上記制御手段は、上記ファイルシステムを構成する階層ディレクトリを新たに作成し或いは拡張する場合には、上記データ記憶領域への書き込み単位又は消去単位の整数倍の記憶領域をこれに割り当てること
を特徴とする請求項１記載のデータ記憶装置。
【請求項５】
上記制御手段は、上記データ記憶領域への書き込み時間の最も短いデータを上記空き領域に割り当てること
を特徴とする請求項１記載のデータ記憶装置。
【請求項６】
上記ファイルシステムは、ＦＡＴシステムであり、また上記管理デーブルは、上記ＦＡＴテーブルであること
を特徴とする請求項１記載のデータ記憶装置。
【請求項７】
上記データ記憶領域は、フラッシュメモリであること
を特徴とする請求項１記載のデータ記憶装置。
【請求項８】
記憶すべきデータからなる各ファイルが階層的なファイルシステムを介して管理されるデータ記憶領域に、複数の固定長クラスタにより構成されるブロック単位でデータを書き込むデータ記憶方法において、
外部から供給されたデータをメモリに連続的に配置する配置ステップと、
上記メモリに配置したデータを上記ブロック単位で上記データ記憶領域へ書き込む際にその書き込み状況を上記ファイルシステム上の管理テーブルに反映させ、また上記データ記憶領域へ書き込んだデータを当該管理テーブルを用いて複数のファイルに分割する書込ステップとを有し、
上記配置ステップでは、先頭アドレス位置から上記固定長クラスタサイズのｎ倍（ｎは１を除く整数）に応じたアドレス位置に至るまで、各ファイルを構成するデータを上記メモリに上記ブロック単位で連続的に配置するとともに、各ファイル間の空き領域が上記固定長クラスタサイズ未満となるようにこれを制御すること
を特徴とするデータ記憶方法。
【請求項９】
上記書込ステップでは、上記複数のファイルを分割する際に、上記ファイルシステムを構成する階層ディレクトリにおける書き込み単位の整数倍のサイズを一度に処理すること
を特徴とする請求項８記載のデータ記憶方法。
【請求項１０】
上記書込ステップでは、上記データ記憶領域への書き込み単位又は消去単位の整数倍を上記ブロック単位として上記メモリに配置されたデータを書き込むこと
を特徴とする請求項８記載のデータ記憶方法。
【請求項１１】
上記書込ステップでは、上記ファイルシステムを構成する階層ディレクトリを新たに作成し或いは拡張する場合には、上記データ記憶領域への書き込み単位又は消去単位の整数倍の記憶領域をこれに割り当てること
を特徴とする請求項８記載のデータ記憶方法。
【請求項１２】
上記配置ステップでは、上記データ記憶領域への書き込み時間の最も短いデータを上記空き領域に割り当てること
を特徴とする請求項８記載のデータ記憶方法。
【請求項１３】
上記ファイルシステムは、ＦＡＴシステムであり、また上記管理デーブルは、上記ＦＡＴテーブルであること
を特徴とする請求項８記載のデータ記憶方法。
【請求項１４】
上記書込ステップでは、フラッシュメモリとしてのデータ記憶領域にデータを書き込むこと
を特徴とする請求項８記載のデータ記憶方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶すべきデータからなる各ファイルが階層的なファイルシステムを介して管理されるデータ記憶領域に、複数の固定長クラスタにより構成されるブロック単位でデータを書き込むデータ記憶装置及び方法に関する。
【背景技術】
【０００２】
パーソナルコンピュータやＰＤＡ（Personal Digital Assistants）等の情報処理装置では、ノンリニアアクセス可能なハードディスクを始めとして、光ディスク、光磁気ディスク、メモリカード等の各種データ記録媒体が装着され、これにデータが記録される。
【０００３】
このデータ記録媒体に記録されるデータを管理するためのファイルシステムが構築されるところ、その代表的なものとして例えば図８に示すようなＦＡＴ(File Allocation Table)システムが提案されている。
【０００４】
このＦＡＴシステム８０では、クラスタの使用状況を管理するためのＦＡＴ領域８１と、記録すべきデータの各種属性情報を記録するためのディレクトリ領域８２と、実データを記録するためのデータ領域８３とを有する。
【０００５】
ＦＡＴ領域８１は、データ領域８３を構成する複数のクラスタに対応した数のＦＡＴエントリからなり、主としてデータ領域８３に記録されているデータからなる各ファイルのクラスタを検索するために使用される。
【０００６】
ディレクトリ領域８２は、データ領域８３に記録すべきデータのファイル名やファイルサイズ、書き込み日時、生成日時等に加え、更に記録開始クラスタ等を管理するための領域である。例えばデータ領域８３において、ファイル名“ＡＢＣ.ＴＸＴ”のデータが、クラスタＣ１〜クラスタＣ３におけるデータを連結させたものとして構成され、またファイル名“ＤＥＦ.ＴＸＴ”のデータが、クラスタＣ４〜クラスタＣ５におけるデータを連結させたものとして構成されている場合には、図８に示すように、ディレクトリ領域８２においてその記録開始クラスタがファイル毎に管理される。
【０００７】
また、このディレクトリ領域８２を介して“ＡＢＣ.ＴＸＴ”の記録開始クラスタがクラスタＣ１であるものと判別することができることから、ＦＡＴ領域８１のエントリ番号１を参照し、そこに格納されている数字を識別する。ここで、エントリ番号１において“２”が格納されていた場合には、エントリ番号２に格納されている数字を識別する。この図８においては、このエントリ番号２においてさらに“３”が格納されているため、エントリ番号３を識別する。エントリ番号３には、Ｅｎｄの意味を示す文字“Ｅ”が格納されているため、ファイル“ＡＢＣ.ＴＸＴ”は、クラスタＣ１〜クラスタＣ３で構成されていることを、このＦＡＴ領域８１のエントリ番号に格納されている数字に基づき容易に判別することができる。ちなみに、ファイル“ＤＥＦ.ＴＸＴ”が如何なるクラスタで構成されているかについても、このＦＡＴ領域８１を介して容易に識別することができる。
【０００８】
データ領域８３は、ＦＡＴシステム８０における管理単位であるクラスタ毎にデータを記録するための領域である。クラスタのサイズは固定長であり、標準で４Ｋバイトとされるが、５１２バイト〜３２Ｋバイトの間で２のべき乗の大きさをとることができる。ちなみに、１クラスタはｎセクタで表される。
【０００９】
このようなＦＡＴシステム８０によりクラスタの使用状況を読み出すことにより、データ記録媒体へデータを記録する際に空クラスタの検索及び論理アドレスの算出をクラスタ毎に行う必要性をなくすことで、短時間に多量のデータを記録することができるファイル管理プログラムが提案されている（例えば、特許文献１参照。）。
【００１０】
【特許文献１】特開２００３−２８０９５１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
ところで、図９(a)に示すようなクラスタＣ１〜クラスタＣ６で構成される空のデータ領域８３に、太枠で示される２クラスタ分を書き込みブロック単位として、３クラスタ分のデータ量を持つ“ＡＢＣ.ＴＸＴ”のデータを書き込む場合には、先ずクラスタＣ１,Ｃ２を含む最初の書き込みブロックにおいて、当該データの書き込みのみを実行する（図９(b)）。次のクラスタＣ３,Ｃ４を含む２番目の書き込みブロックでは、“ＡＢＣ.ＴＸＴ”のデータの書き込みは最初のクラスタＣ３で終了してしまう。このため、当該書き込みブロックによる書き込み時において、後述するread-modify-write処理を行う。
【００１２】
同様に２クラスタ分のデータ量を持つ“ＤＥＦ.ＴＸＴ”のデータを続けて書き込む場合には、図９(c)に示すように、クラスタＣ３,Ｃ４を含む２番目の書き込みブロックにおいて、クラスタＣ４に対する書き込みを実行するとともに、クラスタＣ５,Ｃ６を含む３番目の書き込みブロックにおいて、クラスタＣ５に対する書き込みを実行する。即ち、２クラスタ分のデータ量を持つ“ＤＥＦ.ＴＸＴ”では、互いに異なる書き込みブロックの一部を構成するクラスタＣ４,Ｃ５に対して書き込みを実行するため、ともにread-modify-write処理を行うことになる。
【００１３】
このread-modify-write処理により、２クラスタで構成される書き込みブロックに対し、１クラスタ分のデータを書き込む場合には、先ず図１０のステップＳ１１に示すように、１ブロック中に記録されているデータの全てをバッファ８５へ読み出す。ちなみに、このバッファ８５は、１書き込みブロックに相当する２クラスタ分のデータを一時的に格納できる構成とされている。
【００１４】
次にステップＳ１２へ移行し、新たに書き込むべき１クラスタ分のデータ（以下、新規データという。）をこのバッファ８５上において上書きする。即ち、このステップＳ１２終了時においてバッファ８５には、１クラスタ分の新規データが新たに書き込まれた状態となっている。次にステップＳ１３へ移行し、データ領域８３に記録されているデータを消去する。このステップＳ１３終了時においてこのデータ領域８３は空となっている。次にステップＳ１４へ移行し、１クラスタ分の新規データを含む２クラスタのデータをバッファ８５からデータ領域８３へそのまま書き込む。即ち、このデータ領域８３は、ステップＳ１３において空の状態となっているため、バッファ８５からそのままデータを書き込んでも何ら支障は生じないこととなる。
【００１５】
図１１は、read-modify-write処理を行うことによりＦＡＴシステムを構築する手順を示している。
【００１６】
先ず、ステップＳ２１において、ＦＡＴ領域８１とディレクトリ領域８２において記憶されている情報を読み出す。次にステップＳ２２に移行し、ＦＡＴ領域８１から読み出したＦＡＴエントリを介してデータ領域８３中の空きクラスタを識別する。次にステップＳ２３へ移行し、ステップＳ２２において識別した空きクラスタを含む書き込みブロックからデータを読み出し、これをバッファ８５へ一時記憶させる。このステップＳ２３の動作は、上述のステップＳ１１に相当する。
【００１７】
次にステップＳ２４へ移行し、バッファ８５に新規データを書き込む。このステップＳ２４における動作は、上述のステップＳ１２に相当する。次にステップＳ２５へ移行し、データ領域８３に記憶されているデータを消去し、これを空の状態とする。このステップＳ２５における動作は、空きクラスタを含む書き込みブロック単位で実行し、上述のステップＳ１３に相当する。
【００１８】
次にステップＳ２６へ移行し、ステップＳ２５において空の状態とした書き込みブロックに、新規データを含む２クラスタのデータを書き込む。このステップＳ２６の動作は、上述のステップＳ１４に相当する。次にステップＳ２７へ移行し、ＦＡＴ領域８１の各ＦＡＴエントリに、ステップＳ２６においてデータが書き込まれたクラスタの番号を書き込む。ステップＳ２６において複数のクラスタに跨ってデータを書き込んだ場合には、当該複数クラスタにおけるデータを連結させた、いわゆるクラスタチェーンをこのＦＡＴ領域８１に作成することになる。
【００１９】
次にステップＳ２８へ移行し、新規データに応じたファイルを最終クラスタまで書き終えたか否か確認する。このステップＳ２８において、未だ最終クラスタまでの書き込みを終了していないものと判別された場合にはステップＳ２２へ戻り、上述した書き込み動作を繰り返す。また、このステップＳ２８において最終クラスタまでの書き込みを終了しているものと判別された場合には、ステップＳ２９へ移行する。
【００２０】
ステップＳ２９では、データ領域８３に記録されたデータのファイル名やファイルサイズ、クラスタ番号等の各種情報をディレクトリ領域８２へ書き込む。次にステップＳ３０へ移行し、全てのファイルの書き込みを終了したか否か判別する。データ領域８３に書き込むべきファイルが複数ある場合であって、全てのファイルの書き込みが終了していない場合には、ステップＳ２２へ戻り、上述した書き込み動作を繰り返す。また、このステップＳ３０において、全てのファイルの書き込みが終了しているものと判別された場合には、ステップＳ３１へ移行する。
【００２１】
ステップＳ３１では、上述の如く生成したＦＡＴ領域８１並びにディレクトリ領域８２をフラッシュメモリ等のメディアに書き込む。
【００２２】
ところで、上述したread-modify-write処理は、バッファへのデータの書き込み、データ領域におけるデータ消去、バッファからデータ領域へのデータ書き込みの３ステップが必要となり、データの書き込みを全て終了させるまで長時間を要してしまう。特にクラスタのサイズに対する、データの書き込みサイズ又は消去サイズが異なる場合には、多くの箇所においてread-modify-write処理を実行しなければならず、また書き込むべきファイル数が増加するにつれて、read-modify-write処理の回数は増加することから、データの書き込みに要する時間は著しく増加することになる。
【００２３】
また図１２は、ディレクトリ領域８２における３クラスタ分のデータをデータ記録媒体へ記録した上で、さらに２クラスタからなるファイル“ＡＢＣ.ＴＸＴ”をそこに記録する場合につき説明するための図である。先ず図１２(a)に示すように、ディレクトリ領域８２におけるデータをクラスタＣ１〜クラスタＣ３から順に書き込んでゆく結果、クラスタＣ３,Ｃ４からなる書き込みブロックにおいては、上述したread-modify-write処理を実行しなければならない。またファイル“ＡＢＣ.ＴＸＴ”のデータをクラスタＣ４,Ｃ５に格納する場合にはおいても、図１２(b)に示すように書き込みブロック毎にread-modify-write処理を実行しなければならない。
【００２４】
即ち、ディレクトリ領域８２とデータ領域８３の境界位置が上述した書き込みブロック中にくる場合においてもread-modify-write処理を実行しなければならず、これもデータの書き込み全体に要する時間の増加につながることになる。
【００２５】
そこで、本発明は、上述した問題点に鑑みて案出されたものであり、その目的とするところは、read-modify-write処理を省略しつつ、フラッシュメモリ等のデータ記録媒体へ高速にデータを記憶させることができるデータ記憶装置及び方法を提供することにある。
【課題を解決するための手段】
【００２６】
本発明を適用したデータ記憶装置は、記憶すべきデータからなる各ファイルが階層的なファイルシステムを介して管理されるデータ記憶領域に複数の固定長クラスタにより構成されるブロック単位でデータを書き込むデータ記憶装置において、外部から供給されたデータを連続的に配置するためのメモリと、メモリに配置されたデータをブロック単位でデータ記憶領域へ書き込む際にその書き込み状況をファイルシステム上の管理テーブルに反映させ、またデータ記憶領域へ書き込んだデータを当該管理テーブルを用いて複数のファイルに分割する制御手段とを備え、制御手段は、先頭アドレス位置から固定長クラスタサイズのｎ倍（ｎは１を除く整数）に応じたアドレス位置に至るまで、各ファイルを構成するデータを上記メモリにブロック単位で連続的に配置するとともに、各ファイル間の空き領域が固定長クラスタサイズ未満となるようにこれを制御する。
【００２７】
本発明を適用したデータ記憶方法では、記憶すべきデータからなる各ファイルが階層的なファイルシステムを介して管理されるデータ記憶領域に複数の固定長クラスタにより構成されるブロック単位でデータを書き込むデータ記憶方法において、外部から供給されたデータをメモリに連続的に配置する配置ステップと、メモリに配置したデータをブロック単位でデータ記憶領域へ書き込む際にその書き込み状況を上記ファイルシステム上の管理テーブルに反映させ、またデータ記憶領域へ書き込んだデータを当該管理テーブルを用いて複数のファイルに分割する書込ステップとを有し、配置ステップでは、先頭アドレス位置から上記固定長クラスタサイズのｎ倍（ｎは１を除く整数）に応じたアドレス位置に至るまで、各ファイルを構成するデータをメモリに連続的にブロック単位で配置するとともに、各ファイル間の空き領域が固定長クラスタサイズ未満となるようにこれを制御する。
【発明の効果】
【００２８】
本発明では、データ領域へ書き込むべきデータを書き込みブロック単位でメモリ上に一時的に記憶し、このメモリにて一時的に記憶したデータを書き込みブロック単位で書き込む。即ち、２クラスタで構成される書き込みブロックに対し、２クラスタ未満のデータを書き込む場合においても、これを予めメモリへ配置しておき、書き込みブロック単位でデータ領域に記憶させることができる。このため、従来におけるバッファへの読み出し動作や、バッファ上の上書き動作を省略することができ、データ領域へ全てデータを記憶させるまでの時間を大幅に短縮させることができる。
【発明を実施するための最良の形態】
【００２９】
以下、本発明を実施するための最良の形態として、複数のファイル内の各データを階層的なファイルシステムを介してブロック単位でデータ記録媒体へ記憶させるデータ記憶装置１につき図面を参照しながら詳細に説明する。
【００３０】
データ記憶装置１は、ノンリニアアクセス可能なハードディスクを始めとして、光ディスク、光磁気ディスク、メモリカード等の各種データ記録媒体等が装着されるパーソナルコンピュータやＰＤＡ（Personal Digital Assistants）等に適用され、例えば図１に示すように、バスインターフェース（バスＩ／Ｆ）１２を介してバス２５に接続されたＣＰＵ(Central Processing Unit)１１と、バス２５にそれぞれ接続されてなるＤＭＡＣ（Direct Memory Access Controller）１３,ＲＡＭ(Random Access Memory)１４,フラッシュメモリ１５と、ビデオインターフェース（ビデオＩ／Ｆ）１６を介してバス２５に接続され、ユーザに開示する情報を表示するためのモニタ１７と、キーボードインターフェース（キーボードＩ／Ｆ）１８を介してバス２５に接続されるキーボード１９と、メディアインターフェース（メディアＩ／Ｆ）２０を介してバス２５に接続されるフラッシュメモリカード２１とを備えている。
【００３１】
ＣＰＵ１１は、バスＩ／Ｆ１２を介してバス２５に対して制御信号を送信することにより、データ記憶装置１全体を制御する中央演算ユニットであり、バス２５を介して実行すべき制御プログラムを格納するフラッシュメモリ１５、及びデータの蓄積や展開等に使用する作業領域としての図示しないＲＡＭ１４にアクセス可能となる。このＣＰＵ１１は、キーボード１９を介した操作に基づき、各種制御用の指令をバス２５を介して伝達し、或いは所定の文字情報をモニタ１７へ表示させる。
【００３２】
ＤＭＡＣ１３は、周辺機器とフラッシュメモリカード２１との間におけるデータ転送を仲介する専用のブロックである。このＤＭＡＣ１３は、バス２５を介してＲＡＭ１４並びにフラッシュメモリ１５へのアクセスが可能となる。ＤＭＡＣ１３は、ＣＰＵ１１を介さずに上記データ転送を仲介するようにしてもよい。
【００３３】
フラッシュメモリ１５は、不揮発性半導体メモリの一種で、メモリセル（記憶単位）は、スタックゲート型ＭＯＳトランジスタで構成される。このフラッシュメモリ１５は、ＣＰＵ１１やＤＭＡＣ１３によりプログラム情報が書き込まれ、或いは読み出されることになる。
【００３４】
モニタ１７は、例えば図示しない液晶表示素子やバックライト等から構成され、ユーザが撮像された画像を視認するためのインターフェースである。液晶表示素子の背面からは上述したバックライトにより照明光が照射され、モニタ１７全体の視認性を向上させることができる。
【００３５】
フラッシュメモリカード２１は、メディアＩ／Ｆ２０に対して着脱可能な半導体メモリであり、接続されたバス２５を介してデータを受け取り、これを指定されたアドレスへ記録する。また、このフラッシュメモリカード２１は、ＣＰＵ１１による制御の下、記録すべきデータを管理するためのファイルシステムが構築される。ちなみにこのフラッシュメモリカード２１は、データを記録することができるハードディスクや、着脱自在なディスク状記録媒体に代替してもよい。
【００３６】
なお、このフラッシュメモリカード２１に構築されるファイルシステムとして、本発明では、ＦＡＴ(File Allocation Table)システムを構築する場合を例にとり説明をする。このＦＡＴシステムでは、例えば図２に示すように、クラスタの使用状況を管理するためのＦＡＴ領域３１と、記録すべきデータの各種属性情報を記録するためのディレクトリ領域３２と、実データを記録するためのデータ領域３３とを有する。このＦＡＴ領域３１とディレクトリ領域３２は、このデータ領域３３に記憶されるデータを管理するためのいわゆる管理テーブルとして機能する。
【００３７】
ＦＡＴ領域３１は、データ領域３３を構成する複数のクラスタに対応した数のＦＡＴエントリからなり、主としてデータ領域３３に記録されているデータからなる各ファイルのクラスタを検索するために使用される。
【００３８】
ディレクトリ領域３２は、データ領域８３に記録すべきデータのファイル名やファイルサイズ、書き込み日時、生成日時等に加え、更に記録開始クラスタ等を管理するための領域である。例えばデータ領域３３において、ファイル名“ＡＢＣ.ＴＸＴ”のデータが、クラスタＣ１〜クラスタＣ３におけるデータを連結させたものとして構成され、またファイル名“ＤＥＦ.ＴＸＴ”のデータが、クラスタＣ４〜クラスタＣ５におけるデータを連結させたものとして構成されている場合には、図２に示すように、ディレクトリ領域３２においてその記録開始クラスタがファイル毎に管理される。
【００３９】
また、このディレクトリ領域３２を介して“ＡＢＣ.ＴＸＴ”の記録開始クラスタがクラスタＣ１であるものと判別することができることから、ＦＡＴ領域３１のエントリ番号１を参照し、そこに格納されている数字を識別する。ここで、エントリ番号１において“２”が格納されていた場合には、エントリ番号２に格納されている数字を識別する。この図２においては、このエントリ番号２においてさらに“３”が格納されているため、エントリ番号３を識別する。エントリ番号３には、終了の意味を示す文字“Ｅ”が格納されているため、ファイル“ＡＢＣ.ＴＸＴ”は、クラスタＣ１〜クラスタＣ３で構成されていることを、このＦＡＴ領域３１のエントリ番号に格納されている数字に基づき容易に判別することができる。
【００４０】
ちなみに、ファイル“ＤＥＦ.ＴＸＴ”が如何なるクラスタで構成されているかについても、このＦＡＴ領域３１を介して容易に識別することができる。
【００４１】
データ領域３３は、ＦＡＴシステム３０における管理単位であるクラスタ毎にデータを記録するための領域である。クラスタのサイズは、固定長で構成され、標準で４Ｋバイトとされるが、５１２バイト〜３２Ｋバイトの間で２のべき乗の大きさをとることができる。ちなみに、１クラスタは複数セクタで表される。
【００４２】
次に、このようなＦＡＴシステム３０を構築するデータ記憶装置１において、複数ファイルで構成されるデータを記憶する方法につき、図３を用いて説明をする。
【００４３】
先ず図３(a)に示すようなクラスタＣ１〜クラスタＣ６で構成される空のデータ領域３３に対し、太枠で示される２クラスタ分を書き込みブロック単位として、図３(b)に示すように、クラスタＣ１,Ｃ２を含む最初の書き込みブロック、クラスタＣ３,Ｃ４を含む２番目の書き込みブロック、クラスタＣ５,Ｃ６を含む３番目の書き込みブロック毎にデータを書き込んでゆく。
【００４４】
全てのファイルにつき、上述した書き込みブロック単位でデータをデータ領域３３に書き込むことにより、上述したＦＡＴ領域３１、ディレクトリ領域３２に、各クラスタに応じた情報が書き込まれることになる。ちなみに、このＦＡＴ領域３１やディレクトリ領域３２に書き込まれた情報が変更されると、データ領域３３の記録状況にこれが反映されることになる。
【００４５】
仮に、ファイル名“ＡＢＣ.ＴＸＴ”のデータが、クラスタＣ１〜クラスタＣ３におけるデータを連結させたものとして構成され、またファイル名“ＤＥＦ.ＴＸＴ”のデータがクラスタＣ４〜クラスタＣ５におけるデータを連結させたものとして構成されている場合には、図３(c)に示すように、このＦＡＴ領域３１、ディレクトリ領域３２に書き込まれた内容を変更することにより、これを２つのファイルに分割する。
【００４６】
図４は、データ領域３３に対して、書き込みブロック単位でデータを書き込む例を示している。この図４に示すステップＳ４１において１書き込みブロックに相当する２クラスタ分のデータを、データ領域３３から消去する。このステップＳ４１終了時においてこのデータ領域３３は空となっている。また、ステップＳ４１において、書き込むべきデータは、書き込みブロック単位でＲＡＭ１４に格納されている。
【００４７】
次にステップＳ４２へ移行し、１書き込みブロックに相当する２クラスタ分のデータをＲＡＭ１４からデータ領域３３へそのまま書き込む。即ち、このデータ領域３３は、ステップＳ４１において空の状態となっているため、ＲＡＭ１４からそのままデータを書き込んでも何ら支障は生じないこととなる。
【００４８】
即ち、本発明を適用したデータ記憶装置１では、データ領域３３へ書き込むべきデータを書き込みブロック単位でＲＡＭ１４へ一時的に記憶する。そしてデータ領域３３が空になった段階で、このＲＡＭ１４にて一時的に記憶したデータを書き込みブロック単位で書き込むことができる。即ち、２クラスタで構成される書き込みブロックに対し、２クラスタ未満のデータを書き込む場合においても、これを予めＲＡＭ１４へ配置しておくことで、上述したread-modify-write処理を行うことなく、これをデータ領域３３へ記憶させることができる。このため、上記従来のステップＳ１１におけるバッファへの読み出し動作や、上記従来のＳ１２におけるバッファ上の上書き動作を省略することができる。その結果、データ領域３３へ全てデータを記憶させるまでの時間を大幅に短縮させることができる。
【００４９】
図５は、ステップＳ４１においてデータをＲＡＭ１４へ配置させる例を示している。
【００５０】
例えば、データ領域３３に、ファイル名“ＡＢＣ.ＴＸＴ”のデータが、クラスタＣ１からクラスタＣ３の途中に至るまで書き込み、またファイル名“ＤＥＦ.ＴＸＴ”のデータが、クラスタＣ４からクラスタＣ５の途中に至るまで書き込む場合には、この図５に示すようにＲＡＭ１４上にこの２つのファイルを配置する。ちなみに、これら２のファイルのデータは、互いにクラスタ境界から書き込まれるようにＲＡＭ１４上に配置されることになる。その結果、ファイル名“ＡＢＣ.ＴＸＴ”のデータがクラスタＣ３の途中まで入っているため、ファイル名“ＤＥＦ.ＴＸＴ”のデータは、クラスタＣ４の先頭位置から書き込まれるように、このＲＡＭ１４上で展開させる。
【００５１】
即ち、本発明では、外部から供給すべきデータを、先頭アドレス位置からクラスタサイズのｎ倍（ｎは１を除く整数）に応じたアドレス位置に至るまで、ＲＡＭ１４上において連続的に配置する。また、各ファイル間の空き領域が上記クラスタサイズ未満となるようにこれを制御する。
【００５２】
ちなみに、このファイル名“ＡＢＣ.ＴＸＴ”のデータが途中まで展開されたクラスタＣ３の空き領域については、ダミーデータで埋める。即ち、このダミーデータで埋められる領域は、クラスタサイズ未満となる。同様にファイル名“ＤＥＦ.ＴＸＴ”のデータが途中まで展開されたクラスタＣ５の残りの領域についても同様にダミーデータで埋める。クラスタＣ５とともに書き込みブロックを形成しているクラスタＣ６についても同様にダミーデータで埋める。
【００５３】
このように各ファイルのデータをクラスタの境界が起点となるように配置し、残りの領域をダミーデータで埋めることにより、全ての書き込みブロックにつきデータが配置された状態をＲＡＭ１４上で作り出すことが可能となる。また書き込むべきデータが複数のファイルで構成されている場合であっても、このＲＡＭ１４上で作り出されたデータの配置をそのままデータ領域３３上に書き込むことにより、上記read-modify-write処理を省略することができる。またＲＡＭ１４上に配置されたデータをそのままデータ領域３３上に書き込む際に、データ領域３１への書き込み単位又は消去単位の整数倍を上記書き込みブロック単位としてもよい。データ領域３１への書き込み単位又は消去単位に応じた量とすることで、書き込み速度の高速化が図れることになる。
【００５４】
また、このような配置のデータがデータ領域３３に書き込まれることにより、ＦＡＴ領域３１とディレクトリ領域３２に書き込まれた情報を操作するのみで、ファイル名“ＡＢＣ.ＴＸＴ”、ファイル名“ＤＥＦ.ＴＸＴ”からなる２つのファイルに分割することも可能となる。なお、上記複数のファイルを分割する際に、ファイルシステム３０を構成する階層ディレクトリにおける書き込み単位の整数倍のサイズを一度に処理することで、処理速度を向上させることができる。
【００５５】
このファイルの具体的な分割方法は、例えば特開平１１−１２００４３号公報に記載されている方法に基づいてもよい。
【００５６】
なお、上述したダミーデータとして、フラッシュメモリカード２１への書き込み時間が最も短いデータを配置するようにしてもよい。これにより、データの書き込み時間を短縮化させることができ、記憶領域３３への書き込み動作をより高速化させることができる。
【００５７】
また、本発明では、この書き込み時間が最も短いデータとして、“ＦＦ”を用いるようにしてもよい。フラッシュメモリカード２１において、ビット０の書き込みは、ビット１の書き込みよりも時間がかかる。このため、ダミーデータとしてビット１のデータのみで構成される“ＦＦ”データを用いることにより、処理動作を更に高速化させることも可能となる。
【００５８】
図６は、本発明を適用したデータ記憶装置１により、ＦＡＴシステムを構築する手順を示している。
【００５９】
先ず、ステップＳ５１において、ＦＡＴ領域３１とディレクトリ領域３２において書き込まれている情報を読み出す。次にステップＳ５２に移行し、ＦＡＴ領域３１から読み出したＦＡＴエントリを介してデータ領域３３中の空きクラスタを識別する。なおデータ領域３３への書き込みは、前述の如く複数クラスタから構成される書き込みブロック単位で実行するため、このステップＳ５２において識別すべき空きクラスタは、書き込みブロックを構成するクラスタが全て空きとなっているものに限定する。
【００６０】
次にステップＳ５３へ移行し、データ領域３３に記憶されているデータを消去し、これを空の状態とする。ちなみに、ステップＳ５２において全て空きクラスタのみで構成されている書き込みブロックが精度よく識別されている場合には、このステップＳ５３を省略するようにしてもよい。
【００６１】
次にステップＳ５４へ移行し、ステップＳ５３において空の状態とした書き込みブロックにデータを書き込む。このステップＳ５４の動作は、上述のステップＳ４２に相当する。次にステップＳ５５へ移行し、ＦＡＴ領域３１の各ＦＡＴエントリに、ステップＳ５４においてデータが書き込まれたクラスタの番号を書き込む。ステップＳ５４において複数のクラスタに跨ってデータを書き込んだ場合には、当該複数クラスタにおけるデータを連結させた、いわゆるクラスタチェーンをこのＦＡＴ領域３１上に作成することになる。
【００６２】
次にステップＳ５６へ移行し、最終クラスタまでデータを書き終えたか否か確認する。このステップＳ５６において、未だ最終クラスタまでの書き込みを終了していないものと判別された場合にはステップＳ５２へ戻り、上述した書き込み動作を繰り返す。また、このステップＳ５６において最終クラスタまでの書き込みを終了しているものと判別された場合には、ステップＳ５７へ移行する。
【００６３】
ステップＳ５７では、作成したクラスタチェーンを分割し、さらにデータ領域３３に記録されたデータのファイル名やファイルサイズ、クラスタ番号等の各種情報をディレクトリ領域３２へ書き込む。
【００６４】
次にステップＳ５８へ移行し、全てのファイルの書き込みを終了したか否か判別する。データ領域３３に書き込むべきファイルが複数ある場合であって、全てのファイルの書き込みが終了していない場合には、ステップＳ５２へ戻り、上述した書き込み動作を繰り返す。また、このステップＳ５８において、全てのファイルの書き込みが終了しているものと判別された場合には、ステップＳ５９へ移行する。
【００６５】
ステップＳ５９では、上述の如く生成したＦＡＴ領域３１並びにディレクトリ領域３２をフラッシュメモリカード２１に書き込む。
【００６６】
即ち、この図６に示すＦＡＴシステムの構築手順では、従来存在していた書き込みブロックからデータを読み出すステップと、読み出したデータに新規データを上書きするステップを省略することができ、より迅速な書き込み動作を実行することができる。
【００６７】
また図７は、ディレクトリ領域３２におけるデータをフラッシュメモリカード２１へ記録した上で、さらに２クラスタからなるファイル“ＡＢＣ.ＴＸＴ”をそこに記録する場合につき説明するための図である。本発明を適用したデータ記憶装置１では、２クラスタ単位でデータを書き込むため、ディレクトリ領域３２に記録すべきデータが仮に３クラスタ分に相当する場合であっても、図７(a)に示すように、あえてクラスタＣ１〜クラスタＣ４の４クラスタ分をこれに割り当てる。
【００６８】
即ち、ファイルシステムを構成する階層ディレクトリを新たに作成し或いは拡張する場合に、上記データ領域３３への書き込み単位又は消去単位の整数倍の記憶領域をこれに割り当てる。これにより、ディレクトリの１書き込みブロック単位中に入るディレクトリエントリの最大数の整数倍の数を一度に処理することができるため、ディレクトリの書き込みの高速化を図ることができる。また、データ領域３３と同様、read-modify-write処理を省略することができるため、より迅速な書き込み動作を実行することができる。なお、続くファイル“ＡＢＣ.ＴＸＴ”のデータに関しては、クラスタＣ５の先頭から書き込まれることになる（図７(b)）。
【００６９】
なお、上述した実施の形態では、ＦＡＴシステムを例に挙げて説明をしたが、かかる場合に限定されるものではなく、他のいかなるファイルシステムを構成する場合においても同様の効果を得ることができる。
【００７０】
上述した実施の形態では、あくまでフラッシュメモリカード２１にデータを記憶させる場合を例に挙げて説明をしたが、かかる場合に限定されるものではなく、他のいかなる記録媒体（ハードディスク、光ディスク、磁気ディスク等）を対象としたものであっても、同様の効果を得ることができる。
【図面の簡単な説明】
【００７１】
【図１】本発明を適用したデータ記憶装置の構成図である。
【図２】フラッシュメモリカードに構築されるファイルシステムにつき説明するための図である。
【図３】複数ファイルで構成されるデータをＦＡＴシステムに基づいて記憶する方法につき説明するための図である。
【図４】データ領域に対して、書き込みブロック単位でデータを書き込む例を示す図である。
【図５】ステップＳ４１においてデータをＲＡＭへ配置させる例を示す図である。
【図６】本発明を適用したデータ記憶装置により、ＦＡＴシステムを構築する手順を示すフローチャートである。
【図７】ディレクトリ領域におけるデータを記録した上で、さらに２クラスタからなるファイルを記録する場合につき説明するための図である。
【図８】ＦＡＴシステムにつき説明するための図である。
【図９】各ファイルのデータを書き込む例につき説明するための図である。
【図１０】read-modify-write処理につき説明するための図である。
【図１１】従来におけるＦＡＴシステムを構築する手順を示す図である。
【図１２】従来のディレクトリ配置例につき説明するための図である。
【符号の説明】
【００７２】
１  データ記憶装置、１１  ＣＰＵ  １２  バスＩ／Ｆ  １３  ＤＭＡＣ、１４  ＲＡＭ、１５  フラッシュメモリ、１６  ビデオＩ／Ｆ、１７  モニタ、１８  キーボードＩ／Ｆ、１９  キーボード、２０  メディアＩ／Ｆ、２１  フラッシュメモリカード、２５  バス
【図１】
2005235007.tif 000003
【図２】
2005235007.tif 000004
【図３】
2005235007.tif 000005
【図４】
2005235007.tif 000006
【図５】
2005235007.tif 000007
【図６】
2005235007.tif 000008
【図７】
2005235007.tif 000009
【図８】
2005235007.tif 000010
【図９】
2005235007.tif 000011
【図１０】
2005235007.tif 000012
【図１１】
2005235007.tif 000013
【図１２】
2005235007.tif 000014