(57)【特許請求の範囲】
【請求項１】
データを格納する記録領域を有し該格納データがファイルシステムにより管理される情報記録媒体に対してデータを記録する記録方法であって、
前記情報記録媒体はその記録領域がブロック単位で管理され、該ブロックはファイルシステムのデータを格納する単位であるクラスタを所定数含んでおり、
前記記録方法は、
新たな空き領域にデータを記録する必要がある場合、所定の閾値以上の未使用クラスタを含む有効ブロックを検索し、該検索した有効ブロックをブロック単位で管理し、データ記録処理の際に、前記管理する有効ブロックの中から、データを記録する有効ブロックを検索し、該検索した前記有効ブロックに対して優先的にデータの書き込み処理を行い、
前記所定の閾値は、前記情報記録媒体内に格納されている閾値に関する情報を参照して決定される、
データ記録方法。
【請求項２】
新たな空き領域にデータを記録する必要がある場合に、前記検索した有効ブロック内の未使用クラスタに対してデータの書き込み処理を行う、
請求項１記載のデータ記録方法。
【請求項３】
前記記録領域の各ブロックに含まれる未使用クラスタの数をカウントし、そのカウント結果に基づき前記有効ブロックを求め、該有効ブロックに関するリスト情報である有効空き領域リストを生成して保持し、
データ記録処理の際に、前記有効空き領域リストを参照して前記有効ブロックを検索する、
請求項２記載のデータ記録方法。
【請求項４】
前記閾値は１ブロック中のクラスタ数の１／２以上の値である、請求項１記載のデータ記録方法。
【請求項５】
情報記録媒体に対するデータの書き込み、読み出しを行うデータ処理装置であって、
前記情報記録媒体はその記録領域がブロック単位で管理され、該ブロックはファイルシステムのデータを格納する単位であるクラスタを所定数含んでおり、
前記データ処理装置は、
前記情報記録媒体への情報の入出力を行う入出力処理部と、
前記情報記録媒体に格納されたデータをファイルとして管理するファイルシステム制御部と、
前記情報記録媒体に対するデータの書き込み、読み出しに関する制御を行うデータ処理部と、
前記情報記録媒体の領域において所定の閾値以上の未使用クラスタを含む有効ブロックに関する情報を前記ブロック単位で管理する有効空き領域管理部とを備え、
前記データ処理部は、新たな空き領域にデータを記録する必要がある場合、前記有効空き領域管理部に保持された情報を参照して、前記管理するブロックの中から、データが記録される有効ブロックを検索し、該検索した前記有効ブロックに対して優先的にデータの書き込みを行うよう、制御を行い、
前記データ処理部は、前記情報記録媒体内に格納されている閾値に関する情報を参照して前記所定の閾値を決定する、
データ処理装置。
【請求項６】
前記有効空き領域管理部は、前記閾値以上の未使用クラスタを含むブロックである有効ブロックに関するリスト情報である有効空き領域リストを保持する、
請求項５記載のデータ処理装置。
【請求項７】
前記閾値は、１ブロック中のクラスタ数の１／２以上の値である、請求項５記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報記録媒体にディジタルデータを記録するデータ処理装置及びデータ記録方法に関し、特に、ディジタルデータの書き込み処理の最低速度を保証する技術に関する。
【背景技術】
【０００２】
音楽コンテンツ、動画コンテンツ、静止画コンテンツなどのディジタルデータ（以下単に「データ」という。）を記録する記録媒体には、半導体記録媒体、磁気ディスク、光ディスク、光磁気ディスクなど、様々な種類が存在する。特に、半導体記録媒体は小型化・軽量化が図れるという特徴があるために、ディジタルスチルカメラや携帯電話端末などの携帯機器を中心に急速に普及しつつある。代表的な半導体記録媒体としては、ＳＤメモリカード（登録商標）、メモリースティック（登録商標）、コンパクトフラッシュ（登録商標）などがある。
【０００３】
半導体記録媒体は、年々大容量化が進んでおり、大容量のメリットを生かした応用分野として、特に動画コンテンツ記録用途への応用が期待されている。携帯型ムービー端末等で動画コンテンツをリアルタイム録画する場合、記録媒体への書き込み速度不足による録画停止を防止するため、書き込み処理の最低速度を保証することが重要となる。
【０００４】
これらの半導体記録媒体に格納されるデータの管理は、ファイルシステムにより実現されている。ファイルシステムでは、記録領域を最小アクセス単位であるセクタ、及びセクタの集合であるクラスタに分割して管理し、１つ以上のクラスタをファイルとして管理する。ＰＣ（パーソナルコンピュータ）などの情報機器で一般に用いられているファイルシステムとして、ＦＡＴ（ファイル・アロケーション・テーブル）ファイルシステムが一例に挙げられる（詳細は、非特許文献１参照）。
【０００５】
一方、半導体記録媒体内部ではブロックという単位で記録領域を管理している。そのため、書き込みサイズが同じであるならば、できるだけ同一のブロックに連続して書き込みを行う方が高速に実行される。ブロックのサイズは前記クラスタサイズよりも一般的に大きい。
【０００６】
従来、クラスタの境界をブロックの境界に一致させることにより半導体記録媒体への書き込み速度を高速化する方法が提案されている（例えば、特許文献１参照）。この方法を用いれば、１つのブロック内に整数個のクラスタが存在することになる。従って、１つのクラスタの書き込み処理を行う際に２つ以上のブロックに対して更新処理を行う必要がない。
【特許文献１】特開２００１−１８８７０１号公報
【非特許文献１】ＩＳＯ/ＩＥＣ９２９３、「インフォメーション  テクノロジー  ボリュウム  アンド  ファイル  ストラクチャ  オブ  ディスク  カートリッジ  フォー  インフォメーション（Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ−Ｖｏｌｕｍｅ  ａｎｄ  ｆｉｌｅ  ｓｔｒｕｃｔｕｒｅ  ｏｆ  ｄｉｓｋ  ｃａｒｔｒｉｄｇｅｓ  ｆｏｒ  ｉｎｆｏｒｍａｔｉｏｎ）」、１９９４年
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記の従来技術には次のような問題点がある。従来の制御方法では、半導体記録媒体に様々なサイズのファイルの書き込み及び消去を繰り返すと、空き領域が断片化された状態となる。すなわち、空きクラスタの位置が離散的になる。このような状態の半導体記録媒体に対してデータの記録を行うと、各ブロック内の空きクラスタ数が少ない場合、ブロックを跨いだ書き込み処理が頻繁に行われるため、同一のブロックに連続して書き込みを行う場合と比べて極端に速度が低下する可能性がある。従って、動画コンテンツ等のリアルタイム録画に必要となる最低書き込み速度を保証できないため、録画処理が破綻するという問題が発生し得る。
【課題を解決するための手段】
【０００８】
本発明は上記問題点に鑑みてなされたものであり、情報記録媒体への書き込み処理の速度低下を低減するデータ記録装置及び記録方法を提供することを目的とする。
【０００９】
（１）本発明に係る第１のデータ記録方法は、データを格納する記録領域を有し、格納データがファイルシステムにより管理される情報記録媒体に対してデータを記録する記録方法である。このとき、情報記録媒体は、その記録領域がブロック単位で管理され、各ブロックはファイルシステムのデータを格納する単位であるクラスタを所定数含む。データ記録方法は、新たな空き領域にデータを記録する必要がある場合、所定の閾値以上の未使用クラスタを含む有効ブロックを検索し、検索した有効ブロックをブロック単位で管理し、データ記録処理の際に、管理する有効ブロックの中から、データを記録する有効ブロックを検索し、検索した有効ブロックに対して優先的にデータの書き込み処理を行う。所定の閾値は、情報記録媒体内に格納されている閾値に関する情報を参照して決定される。
【００１０】
その場合、未使用クラスタを閾値以上含むブロックである有効ブロック内の未使用クラスタに対してデータの書き込み処理を行ってもよい。
【００１１】
また、上記データ記録方法において、記録領域の各ブロックに含まれる未使用クラスタの数をカウントし、そのカウント結果に基づき前記有効ブロックを求め、有効ブロックに関するリスト情報である有効空き領域リストを生成して保持し、データ記録処理の際に、前記有効空き領域リストを参照して前記有効ブロックを検索してもよい。
【００１２】
閾値は、１ブロック中のクラスタ数の１／２以上の値であってもよい。
【００１３】
（２）本発明に係る第１のデータ処理装置は、情報記録媒体に対するデータの書き込み、読み出しを行うデータ処理装置である。情報記録媒体はその記録領域がブロック単位で管理され、各ブロックはファイルシステムのデータを格納する単位であるクラスタを所定数含む。第１のデータ処理装置は、情報記録媒体への情報の入出力を行う入出力処理部と、情報記録媒体に格納されたデータをファイルとして管理するファイルシステム制御部と、情報記録媒体に対するデータの書き込み、読み出しに関する制御を行うデータ処理部と、情報記録媒体の領域において所定の閾値以上の未使用クラスタを含むブロックに関する情報を保持する有効空き領域管理部とを備える。データ処理部は、新たな空き領域にデータを記録する必要がある場合、有効空き領域管理部に保持された情報を参照して、管理するブロックの中から、データが記録される有効ブロックを検索し、検索した有効ブロックに対して優先的にデータの書き込みを行うよう、制御を行う。データ処理部は、情報記録媒体内に格納されている閾値に関する情報を参照して前記所定の閾値を決定する。
【発明の効果】
【００１８】
本発明によれば、空き領域が断片化された半導体記録媒体に対する書き込み処理において、速度が極端に低下することを避けることができる。従って、動画コンテンツのリアルタイム録画に必要となる最低書き込み速度を保証することができるため、非常に有効である。
【発明を実施するための最良の形態】
【００１９】
以下、添付の図面を参照して本発明の実施の形態について説明する。
【００２０】
（実施の形態１）
図１は、本発明の実施の形態１に於ける半導体記録媒体及びデータ処理装置の構成例を示すブロック図である。
【００２１】
半導体記録媒体１００は、ホストインタフェース部１１０、制御部１２０及びデータ格納部１３０から構成される。
【００２２】
ホストインタフェース部１１０は、半導体記録媒体１００のホスト機器であるデータ処理装置２００との間で情報の受け渡しをする。
【００２３】
制御部１２０は半導体記録媒体１００の内部制御を行う。制御部１２０は、ホストインタフェース部１１０で受信したコマンドの処理を行い、必要に応じて処理結果をホストインタフェース部１１０経由でデータ処理装置２００に通知する。また、データ格納部１３０に格納されるデータの管理を行う。
【００２４】
データ格納部１３０は、データ処理装置２００からの任意のデータの読み書きが可能な、データを記録する領域を有し、フラッシュメモリなどの不揮発性メモリで構成される。データ格納部１３０の記録領域は、制御部１２０により、ブロックと呼ばれる単位で管理される。本実施の形態においては、１ブロックのサイズが２５６ｋＢ（キロバイト）であり、データ格納部１３０の記録領域はブロック＃０、・・・、ブロック＃（Ｎ−１）のＮ個のブロックで構成されている。データ格納部１３０にはＦＡＴファイルシステムが構築されている。
【００２５】
データ処理装置２００は、装着部２１０、入出力処理部２２０、ファイルシステム制御部２３０、有効空き領域管理部２４０及びデータ処理部２５０から構成される。
【００２６】
装着部２１０は、半導体記録媒体１００を装着するハードウェアである。
【００２７】
入出力処理部２２０は、装着部２１０に装着された半導体記録媒体１００に対してコマンドやデータなどの情報の受け渡しを行う。
【００２８】
ファイルシステム制御部２３０は、データ格納部１３０上に構築されたＦＡＴファイルシステムを解釈し、制御する。ファイルシステム制御部２３０はデータ処理部２５０に対して、データをファイルとしてアクセスする手段を提供する。また、入出力処理部２２０経由でデータ格納部１３０のデータにアクセスする。また、ファイルシステム制御部２３０は内部にＲＡＭ（図示せず）を有し、半導体記録媒体１００に格納されるＦＡＴ情報をそのＲＡＭに格納する。
【００２９】
有効空き領域管理部２４０は、ファイルシステム制御部２３０によって管理されるデータ格納部１３０の空き領域が有効か否かをブロック単位で管理する。ここで、「有効」とは、その領域（ブロック）において一定速度以上でのデータ書き込み処理が可能であることを意味する。一定速度とは例えば動画コンテンツのリアルタイム録画に必要とされる最低書き込み速度である。また、有効空き領域管理部２４０で管理されるブロックは、論理アドレス空間上の領域であり、半導体記録媒体１００のデータ格納部１３０内の物理アドレス空間でのブロックと対応して設定される。有効空き領域管理部２４０は、有効な空き領域のリストである有効空き領域リスト２４１を生成し、管理する。図２に有効空き領域リスト２４１の構成例を示す。図２は、ブロック番号が０、Ｑ−１のブロックが有効な空き領域すなわち有効ブロックであることを示している。また、有効空き領域管理部２４０は選択フラグ２４２を有する。選択フラグ２４２は、データ書き込み処理において、有効空き領域リスト２４１に含まれる複数のエントリのうちの１つが選択中であるか否かを示すフラグである。
【００３０】
データ処理部２５０はデータ処理装置２００の中心的な処理を担い、半導体記録媒体１００に格納されたデータまたはこれから格納するデータを処理する。例えば、データ処理部２５０は半導体記録媒体１００に対するデータの書き込み、読み出しに関する制御を行う。
【００３１】
次に、データ格納部１３０に構築されるＦＡＴファイルシステムについて説明する。
【００３２】
図３はデータ格納部１３０に構築されたＦＡＴファイルシステムのデータ構造例を示した図である。データ格納部１３０を構成するＮ個（Ｎは２以上の自然数）のブロックのうち、Ｐ個（Ｐ≦Ｎ）のブロックが、本ファイルシステムの全体を管理するための情報を格納する管理情報領域１３１として利用され、残りのＱ個（Ｑ＝Ｎ−Ｐ）のブロックはファイルの実体データなどを格納するデータ領域１３２として利用される。
【００３３】
管理情報領域１３１は、データ格納部１３０を複数のパーティションと呼ばれる領域に分割して管理するための情報を格納するマスターブートレコード・パーティションテーブル、１つのパーティション内の管理情報を格納するパーティションブートセクタ、ファイルに含まれるデータの物理的な格納位置を示すＦＡＴテーブル１及びＦＡＴテーブル２、ルートディレクトリ直下に存在するファイルやディレクトリの情報を格納するルートディレクトリエントリから構成される。ここで、ＦＡＴテーブルが２つ存在しているのは、ＦＡＴテーブルは重要な情報を格納しているために、二重化されているためである。
【００３４】
データ領域１３２は、複数の、クラスタと呼ばれる論理的なデータ単位に分割され管理されており、各クラスタにはファイルに含まれるデータが格納されている。サイズの大きいデータを格納するファイルなどは複数のクラスタを使用しており、各クラスタ間のつながりは、ＦＡＴテーブル１及びＦＡＴテーブル２に格納されたリンク情報により管理されている。なお、本実施の形態においてはクラスタのサイズを１６ｋＢとする。従って、１ブロックは１６個のクラスタを含む。データ領域１３２には、クラスタ＃０、・・・、クラスタ＃（Ｍ−１）のＭ個のクラスタが存在しているとする。
【００３５】
図４を用いてＦＡＴファイルシステムにおけるファイルデータのより具体的な格納例を説明する。
【００３６】
ルートディレクトリエントリやデータ領域１３２の一部には、図４（ａ）に示すような、ファイル名やファイルサイズなどを格納するディレクトリエントリ３０１が格納される。ファイルデータの格納先であるデータ領域１３２はクラスタ単位で管理されており、各クラスタには一意に識別可能なクラスタ番号が付与されている。ファイルのデータが格納されているクラスタを特定するために、ディレクトリエントリ３０１には、ファイルデータの先頭部分が格納されているクラスタのクラスタ番号（開始クラスタ番号）が格納されている。図４（ａ）のディレクトリエントリ３０１の例は、”ＦＩＬＥ００１．ＴＸＴ”という名前を持つファイルのデータが、クラスタ番号３１のクラスタから格納されていることを示している。
【００３７】
複数のクラスタにデータが格納されているファイルの場合、リンク情報がＦＡＴテーブルに格納される。図４（ｂ）にＦＡＴテーブル３０２の例を示す。ＦＡＴテーブル３０２には、各クラスタのリンク情報を示すＦＡＴエントリが格納される。ＦＡＴエントリは、次にリンクされるクラスタのクラスタ番号を格納する。図４（ｂ）の例では、クラスタ番号３１に対応するＦＡＴエントリとして「３２」が格納されている。これは、クラスタ番号３１のクラスタは、クラスタ番号３２のクラスタにリンクしていることを示す。同様にクラスタ番号３２に対応するＦＡＴエントリには「３４」、クラスタ番号３４に対応するＦＡＴエントリには「３５」が格納されており、クラスタ番号３１、３２、３４、３５の順でリンクされていることになる。次にクラスタ番号３５に対応するＦＡＴエントリには「ＦＦＦ」が格納されているが、「ＦＦＦ」はリンクの終端を意味していることから、クラスタ番号３１で始まるリンクは、クラスタ番号３１、３２、３４、３５の４クラスタで終ることになる。従って、”ＦＩＬＥ００１．ＴＸＴ”というファイル名のデータは、データ領域１３２において、図４（ｃ）に示すようにクラスタ＃３１、＃３２、＃３４、＃３５に順に格納されていることになる。なお、クラスタ番号３３に対応するＦＡＴエントリに格納されている「０」は、そのクラスタがファイルに割り当てられておらず、空き領域、すなわち、未使用であることを意味している。
【００３８】
次に、ＦＡＴファイルシステムにおけるファイルデータの書き込み処理の一例について説明する。
【００３９】
図５は、ＦＡＴファイルシステムにおけるファイルデータ書き込み処理の手順を示すフローチャートである。ファイルデータ書き込み処理では、先ず始めに、書き込みを行う対象ファイルのディレクトリエントリ３０１を、ファイルシステム制御部２３０のＲＡＭ上に読み出し、そのディレクトリエントリ３０１に格納された開始クラスタ番号を取得することで、対象ファイルのデータの先頭位置を確認する（Ｓ４０１）。さらに、ＦＡＴテーブル１及びＦＡＴテーブル２をファイルシステム制御部２３０のＲＡＭ上に読み出し、ステップＳ４０１で取得した対象ファイルのデータ先頭位置から順に、ＲＡＭ上に読み出したＦＡＴテーブル１またはＦＡＴテーブル２を参照してリンクを辿り、書き込み位置に対応するクラスタ番号を取得する（Ｓ４０２）。
【００４０】
そして、データ書き込みに際し、その対象ファイルに対して新たに空き領域を割り当てる必要があるか否かを判定する（Ｓ４０３）。空き領域の割り当てが不要な場合は、ステップＳ４０５の処理に進む。空き領域の割り当てが必要な場合、ＦＡＴテーブル１またはＦＡＴテーブル２上で空き領域（空きクラスタ）を検索し、１クラスタ分の空き領域を対象ファイルの終端に割り当てる（Ｓ４０４）。
【００４１】
その後、現在参照しているクラスタに、書き込めるだけのデータを書き込む（Ｓ４０５）。このとき、ファイルシステム制御部２３０のＲＡＭ上に読み出されたＦＡＴテーブル１、２についても、データ書き込み処理にともない更新する。
【００４２】
次に、全データの書き込みが完了したかを判定する（Ｓ４０６）。まだデータが残っている場合、ステップＳ４０３の処理に戻り、次にクラスタに対してＳ４０３〜Ｓ４０６を繰り返し、データ領域１３２へのデータ書き込みを行う。対象ファイルの全データの書き込みが完了した場合、ファイルシステム制御部２３０のＲＡＭ上に読み出されたディレクトリエントリ３０１内に格納されたファイルサイズやタイムスタンプなどを更新した後、更新されたディレクトリエントリを半導体記録媒体１００に書き込む（Ｓ４０７）。
【００４３】
最後に、ファイルシステム制御部２３０のＲＡＭ上で更新されたＦＡＴテーブル１及びＦＡＴテーブル２を、半導体記録媒体１００に書き戻し、処理を完了する（Ｓ４０８）。
【００４４】
サイズの異なるファイルの書き込みや消去を繰返し行うことにより、前記ＦＡＴエントリのリンク情報は複雑になっていく。すなわち、個々のファイルデータは、データ領域１３２において離散的な状態で格納された状態になる。同様に未使用の領域である空き領域も離散的な位置に格納された状態となる。これを「データの断片化」と呼ぶ。このデータの断片化が生じた記録領域へデータを記録した場合、その領域へのアクセスに時間がかかる。そこで、本実施形態では、データ記録時において、そのようなデータの断片化が生じている領域へはデータを記録しないようにしている。そのようなデータ記録方法の詳細について、以下に説明する。
【００４５】
データ記録方法の説明に先立って、まず、有効空き領域リスト２４１の生成手順について説明する。
【００４６】
図６は、データ処理装置２００の有効空き領域管理部２４０が有効空き領域リスト２４１を生成する手順のシーケンス例である。
【００４７】
有効空き領域リストの生成処理では、第１に、有効空き領域管理部２４０がブロック中にいくつ以上の空きクラスタが存在する場合に書き込みを許可するかという閾値Ｔを設定する（Ｓ５０１）。本実施の形態においては、閾値Ｔは予め決められた値（固定値）を用いる。閾値Ｔは、１ブロック中に含まれるクラスタ数の１／２以上の値に設定するのが好ましい。同時に、閾値Ｔの設定以外の初期化処理を行う（Ｓ５０１）。例えば、有効空き領域リスト２４１の全エントリの有効フラグを“０”（無効）に設定する。
【００４８】
次に、データ領域１３２の先頭からのブロック番号ｉ（ｉは変数）を０として（Ｓ５０２）、以下の処理を行う。
【００４９】
有効空き領域管理部２４０は、ファイルシステム制御部２３０からＦＡＴテーブル１、２の情報を受取り、ｉ番目のブロックに存在する空きクラスタ数Ｘをカウントする（Ｓ５０３）。そして、空きクラスタ数Ｘが閾値Ｔ以上であるか否かを判断する（Ｓ５０４）。
【００５０】
空きクラスタ数Ｘが閾値Ｔ以上である場合（Ｙｅｓの場合）、図２に示す有効空き領域リスト２４１のｉ番目のエントリの有効フラグを“１”（有効）に設定する（Ｓ５０５）。
【００５１】
空きクラスタ数Ｘが閾値Ｔ以上でない場合（Ｎｏの場合）、有効空き領域リスト２４１のｉ番目のエントリの有効フラグを“０”（無効）に設定する（Ｓ５０６）。
【００５２】
その後、ブロック番号ｉに１を加算し（Ｓ５０７）、ブロック番号ｉがデータ領域１３２の総ブロック数Ｑ以上であるか否かを判断する（Ｓ５０８）。ｉがＱ未満であるならば、ステップＳ５０３の処理に戻り、Ｓ５０３〜５０７を繰り返す。一方、ステップＳ５０８において、ブロック番号ｉがＱ以上であるならば処理を完了する。
【００５３】
図７は、閾値Ｔが「８」の場合の、有効空き領域リスト２４１のエントリの有効フラグの設定の仕方を説明した図である。図中、使用中クラスタには、ハッチングが施されている。図７（ａ）の例では、ブロックは１１個の空きクラスタを有し、閾値Ｔが８以上であるため、エントリの有効フラグとして“１”（有効）が設定される。図７（ｂ）の例では、ブロックは３個の空きクラスタを有し、空きクラスタ数は８未満であるため、エントリの有効フラグとして“０”（無効）が設定される。
【００５４】
本実施の形態におけるファイルデータ書き込み処理の手順を説明する。図８は、本実施の形態におけるファイルデータ書き込み処理の手順を示した図である。
【００５５】
ファイルデータ書き込み処理では、第１に、選択フラグ２４２をＯＦＦに設定する（Ｓ８０１）。続いて、書き込み対象ファイルのディレクトリエントリ３０１をファイルシステム制御部２３０のＲＡＭ上に読み出し、前記ディレクトリエントリ３０１に格納されたファイル開始クラスタ番号を取得し、ファイルデータの先頭位置を確認する（Ｓ８０２）。
【００５６】
次に、ＦＡＴテーブル１、ＦＡＴテーブル２を、ファイルシステム制御部２３０のＲＡＭ上に読み出し、ステップＳ８０２で取得したファイルデータの先頭位置から、順に、ＲＡＭ上に読み出したＦＡＴテーブル１またはＦＡＴテーブル２を参照してリンクを辿り、書き込み位置のクラスタ番号を取得する（Ｓ８０３）。
【００５７】
次に、データ書き込みに際し、その対象ファイルに新たに空き領域を割り当てる必要があるか否かを判定する（Ｓ８０４）。空き領域の割り当てが不要な場合（Ｎｏの場合）は、ステップＳ８１０の処理に進む。
【００５８】
空き領域の割り当てが必要な場合（ステップＳ８０４でＹｅｓの場合）、選択フラグ２４２がＯＮか否かを判定し（Ｓ８０５）、選択フラグ２４２がＯＦＦの場合にのみ、有効空き領域リスト２４１を参照し、有効フラグが“１”（有効）であるブロックを１つ選択し、それとともに選択フラグ２４２をＯＮにする（Ｓ８０６）。つまり、選択フラグ２４１がＯＮのときは、書き込み領域として、既に有効フラグが”１”（有効）であるブロックが選択されているが、選択フラグ２４１がＯＦＦのときは、未だ、有効フラグが”１”（有効）であるブロックが選択されていないため、有効空き領域リスト２４１を参照して有効フラグが”１”（有効）であるブロックを新たに選択する必要がある。なお、有効空き領域リスト２４１において有効フラグが”１”（有効）であるブロックが全く存在しないときは、有効フラグが”０”（無効）であるブロック中から１つのブロックを選択する。このように、有効フラグが”１”（有効）であるブロックから優先的に選択する。
【００５９】
ＲＡＭ上のＦＡＴテーブル１またはＦＡＴテーブル２を参照し、選択したブロックにおける空きクラスタを検索する（Ｓ８０７）。そして、空きクラスタが存在するか否かを判断する（Ｓ８０８）。
【００６０】
空きクラスタが存在しない場合（Ｓ８０８でＮｏの場合）、空き領域リスト２４１において現在選択中のブロックの有効フラグを無効化する（Ｓ８０９）。すなわち、該当するエントリの有効フラグを“０”（無効）に更新する。さらに、選択フラグ２４２をＯＦＦに設定して（Ｓ８０９）、ステップＳ８０６の処理に戻る。
【００６１】
空きクラスタが存在する場合（Ｓ８０８でＹｅｓの場合）、現在参照している空きクラスタ内に書き込めるだけのデータを書き込む（Ｓ８１０）。
【００６２】
次に、全データの書き込みが完了したか判定する（Ｓ８１１）。まだ、書き込むべきデータが残っている場合、ステップＳ８０４の処理に戻り、全データの書き込みが完了するまで、上記ステップＳ８０４〜Ｓ８１０を繰り返す。
【００６３】
全データの書き込みが完了した場合、ファイルシステム制御部２３０のＲＡＭ上のディレクトリエントリ３０１内に格納されたファイルサイズやタイムスタンプなどを更新し、その後、更新したディレクトリエントリを半導体記録媒体１００に書き込む（Ｓ８１２）。そして、ファイルシステム制御部２３０のＲＡＭ上のＦＡＴテーブル１、ＦＡＴテーブル２を半導体記録媒体１００に書き戻す（Ｓ８１３）。
【００６４】
最後に、現在選択中のブロックの空きクラスタ数を確認し、閾値Ｔ未満であるならば有効空き領域リスト２４１の該当するエントリの有効フラグを“０”（無効）に更新し、処理を完了する（Ｓ８１４）。
【００６５】
図９を参照し、上記のファイルデータ書き込み処理による、空きクラスタの選択を具体的に説明する。ファイルデータの書き込みを行う前のデータ領域１３２の状態が図９（ａ）に示す状態であるとする。閾値Ｔは８であり、有効空き領域リスト２４１において、ブロック＃０及びブロック＃３は「有効」、ブロック＃１及びブロック＃２は「無効」となっている。
【００６６】
図９（ｂ）は、１６クラスタ分のデータを、上記のファイルデータ書き込み処理により書き込んだ場合の例を示している。ブロック＃０からデータ書き込みが開始され、ブロック＃０の空きクラスタ全てにデータを記録すると、引き続いてブロック＃３にデータが記録される。これは、ブロック＃１及びブロック＃２は有効フラグが「無効」に設定されているため、それらのブロックへの書き込みは行われないからである。この場合、ブロック間で遷移するのは、ブロック＃０からブロック＃３への１回のみとなる。
【００６７】
一方、１６クラスタ分のデータを従来のファイルデータ書き込み処理にて書き込んだ場合の例を図９（ｃ）に示す。従来方法では、ＦＡＴテーブル１、ＦＡＴテーブル２の先頭から空きを検索していくので、ブロック＃１及びブロック＃２への書き込みも発生する。その結果、ブロック間の遷移は、ブロック＃０からブロック＃１、ブロック＃１からブロック＃２、ブロック＃２からブロック＃３、と３回発生することになる。この場合、図９（ｂ）の場合に比して、ブロック間で遷移する回数が増えるため、データ記録時の処理速度がより遅くなる。
【００６８】
以上のように、本実施形態では、データ処理装置２００が半導体記録媒体１００にデータを書き込む前に半導体記録媒体１００のブロック中の空きクラスタの数を確認し、空きクラスタ数がある一定値以上のブロックにのみ書き込み処理を行うため、書き込み速度の極端な低下の原因であるブロック間遷移の発生回数を低減させることが可能となる。
【００６９】
従って、空き領域が断片化された半導体記録媒体１００に対しても動画コンテンツのリアルタイム録画に必要となる最低書き込み速度を保証することが可能となる。
【００７０】
なお、以下のような変形例が考えられる。
（１）本実施の形態においては、図６に示すステップＳ５０１の処理において、閾値Ｔが予め固定値として決定されているものとして説明したが、半導体記録媒体１００に閾値Ｔに関する情報を格納しておき、データ処理装置２００がその情報を参照して閾値Ｔを設定するようにしてもよい。また、ユーザから指定された情報により決定してもよい。
【００７１】
（２）本実施の形態においては、ＦＡＴファイルシステムを例として記述したが、これに限定されるものではない。アクセス単位よりも小さな単位でファイルデータを管理している場合、本発明の思想は適用できる。
【００７２】
また、ブロック単位やクラスタ単位等は全て一例であり、他のサイズであってもよい。
【００７３】
（３）本実施の形態においては、ファイルデータ書き込み処理の手順の説明において、エラー処理を省略しているが、エラー処理を追加してもよい。例えば、図８に示すステップＳ８０６の処理において、有効空き領域リスト２４１に有効フラグ“１”（有効）であるブロックが存在しない場合、エラー処理として書き込み処理を中断してもよい。
【００７４】
（４）本実施の形態においては、ファイルデータ書き込み処理の前に、予め有効空き領域リスト２４１を作成しておく例を記述したが、有効空き領域リスト２４１及び選択フラグ２４２は必ずしも必要ではない。ＦＡＴテーブルを参照して使用する空き領域を検索する際に、割り当てようとしている空きクラスタの属するブロックの空きクラスタ数が閾値Ｔ以上であるか否かを判断し、閾値Ｔ以上である場合にのみ、そのブロックの空きクラスタを使用するという仕様であってもよい。
【００７５】
また、本実施の形態においては、データ領域１３２の全ブロックに対する有効空き領域リスト２４１を作成したが、有効空き領域リスト２４１の生成に時間がかかる場合や、十分なメモリが確保できない場合には、前記有効空き領域リスト２４１を一部のブロックに対して作成し、必要に応じて再生成するという仕様であってもよい。
【００７６】
また、本実施の形態には選択フラグ２４２が有効空き領域管理部２４０にあるとしたが、ファイルシステム制御部２３０の内部にあってもよい。
【００７７】
（５）本実施の形態におけるデータ記録方法は、記録媒体内で管理するブロックがファイルシステムにおけるファイルデータの単位であるクラスタよりも大きく、かつブロックまたぎによってアクセス速度が低下する場合に有効である。このような条件を満たす記録媒体であれば、半導体記録媒体１００に限定されるものではなく、他の情報記録媒体であっても本発明の思想は適用できる。
【００７８】
（実施の形態２）
図１０に、本発明の実施の形態２に於ける半導体記録媒体及びデータ処理装置の構成例を示す。本実施形態では、半導体記録媒体の記録領域の断片化を解消するために半導体記録媒体の格納データの並べ替えを行う。
【００７９】
本実施形態のデータ処理装置２００ｂは、基本的に実施の形態１のものと同様の構成を有するが、有効空き領域管理部２４０の代わりに、半導体記録媒体の格納データの並べ替えのための構成としてブロック判定部２６０を備えている点が実施の形態１のものと異なる。
【００８０】
ブロック判定部２６０は、半導体記録媒体１００のデータ格納部１３０内の各ブロックの“型”を判別する。図１１に、ブロック判定部２６０の内部構成例を示す。本実施形態では、ブロックの型はブロック中に存在する空きクラスタ数によって決定され、Ａ型、Ｂ型、Ｃ型の３つが定義される。本実施の形態では、実施の形態１と同様に１ブロックのサイズが２５６ｋＢであり、１ブロックは１６ｋＢのクラスタが１６個で構成されている。１ブロックにおいて８個以上の空きクラスタが存在する場合、すなわち、１ブロックにおいて半数以上が空きクラスタである場合を「Ａ型」とする。１ブロックにおいて、１個から７個の空きクラスタが存在する場合を「Ｂ型」、全て使用中で空きクラスタが存在しない場合を「Ｃ型」とする。
【００８１】
ブロック中に存在する空きクラスタ数が少ないＢ型のブロックが多く存在している状態では、動画などの大容量のデータを連続的に記録する際に、頻繁にブロックをまたいだ書き込みが発生するため、書き込み処理の速度が極端に低下する可能性がある。
【００８２】
そこで、本実施形態では、Ｂ型のブロックを検索し、そのブロックに対して他のブロックからデータを移動させることにより、すなわち、データを並べ替えることにより、Ｂ型のブロックをできるだけＣ型になるようにする。つまり、空き領域の少ないＢ型のブロックに、よりデータを集中させることができるため、他のブロックの空き領域が拡大し、断片化を解消できる。
【００８３】
以下、本実施の形態に於けるデータ並べ替え方法の詳細を説明する。図１２は、データ処理装置２００ｂのデータ処理部２５０がファイルシステム制御部２３０に対して半導体記録媒体１００のデータ並べ替えを指示したときのフローチャートである。本実施の形態に於けるデータ並べ替え方法は、前述のように、Ｂ型のブロック、すなわち１６個中１個から７個の空きクラスタを有するブロックをできるだけ減らすことを目的としている。
【００８４】
ファイルシステム制御部２３０は、第１に、ＦＡＴテーブル１及びＦＡＴテーブル２をＲＡＭ上に読み出す（Ｓ１２０１）。次に、データ領域１３２の先頭からのブロック番号を示す変数ｉに０を設定し（Ｓ１２０２）、以下の処理を実行する。
【００８５】
ブロック判定部２６０はファイルシステム制御部２３０からの情報をもとに、ｉ番目のブロックに存在する空きクラスタ数をカウントし、ｉ番目のブロックの型を判断する（Ｓ１２０３）。
【００８６】
ステップＳ１２０３の判断の結果、Ｂ型でない場合は、ステップＳ１２０７に進み、ブロック番号ｉをインクリメントする。Ｂ型である場合は、ｉ番目のブロック中の最初の空きクラスタである空きクラスタに他のブロックからデータを移動させる処理を行う（Ｓ１２０４）。この処理の詳細については後述する。なお、以下の説明において、他のブロックからのデータの移動先となる空きクラスタを「空きクラスタＺ」という。
【００８７】
次に、上記の移動処理の完了／未完了を判断する（Ｓ１２０５）。未完了の場合、すなわち、移動させるデータが既に存在しない場合には、ファイルシステム制御部２３０のＲＡＭ上にあるＦＡＴテーブル１、ＦＡＴテーブル２のデータに基づき、半導体記録媒体１００のＦＡＴテーブル１、ＦＡＴテーブル２の更新を行い（Ｓ１２０９）、処理を完了する。
【００８８】
ステップＳ１２０４の移動処理が完了した場合、ｉ番目のブロック内の残りの空きクラスタを検索する（Ｓ１２０６）。ｉ番目のブロック内に空きクラスタが残っている場合、その空きクラスタを、データ移動先である空きクラスタＺとして、ステップＳ１２０４の処理に戻る。残っていない場合は、ブロック番号ｉをインクリメントした後（Ｓ１２０７）、ｉがデータ領域１３２の総ブロック数Ｑ以下であるか否かを判断する（Ｓ１２０８）。
【００８９】
ｉがＱ以下である場合、ステップＳ１２０３の処理に戻り、ステップＳ１２０３〜Ｓ１２０７の処理を継続する。ｉがＱより大きい場合、ファイルシステム制御部２３０のＲＡＭ上にあるＦＡＴテーブル１、ＦＡＴテーブル２のデータに基づき、半導体記録媒体１００のＦＡＴテーブル１、ＦＡＴテーブル２の更新を行い（Ｓ１２０９）、処理を完了する。
【００９０】
以上のように、本実施の形態における並べ替え処理はデータ領域１３２の先頭ブロックから順に空きクラスタを検出し、その空きクラスタに他のブロックからデータを移動させることでデータの並べ替えを行い、これ以上データの移動が不可能となるか最後のブロックの処理を行った時点で、並べ替えの処理を完了する。
【００９１】
次に、上記のステップＳ１２０４における、データの移動処理について図１３を用いて詳細に説明する。図１３は、ｉ番目のブロックにおける空きクラスタＺに他のブロックからデータを移動させる処理のフローチャートである。
【００９２】
本移動処理において、空きクラスタＺにデータを移動させる際にデータ移動元となるクラスタの検索はＦＡＴテーブル１またはＦＡＴテーブル２を用いて行う。本移動処理は、半導体記録媒体１００上のＦＡＴテーブル１またはＦＡＴテーブル２に格納されるリンク情報の付け替え処理、及びデータ領域１３２へのデータコピー処理によって実現する。データ移動処理において、リンクの先頭となるデータは移動させないため、ディレクトリエントリの検索や書き換えなどが発生せず、高速な処理が可能である。
【００９３】
図１３を参照し、本移動処理では、第１に、データ領域１３２の先頭からのクラスタ番号を指定する変数ｋを０に設定する（Ｓ１３０１）。つまり、データ領域１３２の各クラスタについて、データ領域先頭から順次以下の処理を実行する。次に、ＦＡＴテーブル１またはＦＡＴテーブル２を参照して、ｋ番目のクラスタが使用中であるか否かを判断する（Ｓ１３０２）。
【００９４】
ｋ番目のクラスタが使用中でなければｋをインクリメントする（Ｓ１３１１）。インクリメント後のｋ番目のクラスタがデータ領域１３２の範囲内にあるか否かを判定する（Ｓ１３１２）。範囲内であれば、ステップＳ１３０２の処理に戻る。範囲外であれば、そのブロック中においてデータを移動できるクラスタはもはや存在しないため、「移動ＮＧ（未完了）」とし（Ｓ１３１３）、処理を終了する。
【００９５】
ステップＳ１３０２において、ｋ番目のクラスタが使用中である場合、ＦＡＴエントリからｋ番目のクラスタのリンク先を検索する（Ｓ１３０３）。リンク先のクラスタが属するブロック（ブロックＲ）がｉ番目のブロックであるか否かを判断する（Ｓ１３０４）。
【００９６】
リンク先のクラスタが属するブロックがｉ番目のブロックである場合、同じブロック内での移動となり、無意味であるので、そのクラスタに対しては何も処理を行わずに、ステップＳ１３１１に進む。ステップＳ１３１１以降の処理は前述のとおりである。
【００９７】
リンク先のクラスタが属するブロックＲがｉ番目のブロックでない場合（Ｓ１３０４でＮＯ）、ブロックＲがＣ型か否かを判断する（Ｓ１３０５）。ブロックＲがＣ型である場合、そのブロックＲからデータを移動させることは断片化を生じさせるため、適切ではない。よって、リンク先のクラスタが属するブロックＲがＣ型の場合は、ステップＳ１３１１に進み、次のクラスタについて検討を行う。
【００９８】
一方、ブロックＲがＣ型でない場合、データ移動前に、データ移動先となる空きクラスタＺが「仮空きクラスタ」であるか否かを判断する（Ｓ１３０６）。仮空きクラスタの詳細は後述する。
【００９９】
空きクラスタＺが仮空きクラスタの場合（Ｓ１３０６でＹＥＳ）、クラスタＺのデータを上書きすることになるので、その前にシステム制御部２３０のＲＡＭ上のＦＡＴテーブル１、ＦＡＴテーブル２を半導体記録媒体１００に書き戻す（Ｓ１３０７）。すなわち、データ書き込み前に半導体記録媒体１００上のＦＡＴテーブル１、ＦＡＴテーブル２を更新しておく。
【０１００】
次に、クラスタ番号ｋのリンク先のデータを空きクラスタＺにコピーする（Ｓ１３０８）。すなわちデータ領域１３２への書き込みを行う。
【０１０１】
その後、ファイルシステム制御部２３０のＲＡＭにおいて、クラスタ番号ｋ、クラスタ番号ｋのリンク先、及び空きクラスタＺの間のリンク情報を書き換え（Ｓ１３０９）、「移動ＯＫ（完了）」として（Ｓ１３１０）、処理を終了する。
【０１０２】
次に、仮空きクラスタについて説明する。仮空きクラスタとは、クラスタ間のデータ移動後に、データ処理装置２００ｂのＦＡＴテーブル上では空き（未使用）であると認識されているが、半導体記録媒体１００のＦＡＴテーブル上では空きであると認識されていないクラスタのことである。例えば、クラスタＸからクラスタＹへデータを移動したときに、クラスタＸは、データ処理装置２００ｂのＦＡＴテーブル上では空き（未使用）であると認識されるが、半導体記録媒体１００のＦＡＴテーブル上では空きであると認識されない場合がある。これは、データ処理装置２００ｂのＦＡＴテーブルと半導体記録媒体１００のＦＡＴテーブルの更新タイミングが異なるからである。
【０１０３】
データ処理装置２００ｂは処理効率の観点から、半導体記録媒体１００のＦＡＴテーブルをデータ処理装置２００ｂ内部に取り込み、通常はその内部のＦＡＴ情報のみを更新し、あるタイミングでのみ半導体記録媒体１００にＦＡＴテーブルを書き戻す。これは、半導体記録媒体１００のＦＡＴテーブルの更新処理には時間がかかることから、データ更新時の処理時間を低減するためである。また、クラスタＸからクラスタＹへデータを移動させる場合、移動元のクラスタＸのデータを移動先のクラスタＹにコピーするとともに、データ処理装置２００ｂ内部のＦＡＴテーブルのリンク情報を書き換える。このとき、クラスタＸについては、そのリンク情報が書き換えられるのみで、データは消去されない。よって、移動処理後、半導体記録媒体１００のＦＡＴテーブルが更新されるまでの間、データ処理装置２００ｂ内部のＦＡＴテーブル上では、クラスタＸは空きクラスタであると認識されるが、半導体記録媒体１００のＦＡＴテーブル上では、クラスタＸの移動前の状態が保持される。このようなクラスタＸが仮空きクラスタである。この場合、仮空きクラスタであるクラスタＸは以前のデータを格納しているため、半導体記録媒体１００内部においては、そのＦＡＴテーブルとデータの対応関係はとれている。しかし、仮空きクラスタへデータを書き込む途中または書き込み終了直後に、不測の事態により半導体記録媒体１００への電源供給が遮断されると、仮空きクラスタのデータは上書きされるが、半導体記録媒体１００内部のＦＡＴテーブルは更新されないという状況になり、半導体記録媒体１００内部のＦＡＴテーブルとデータの対応関係において不整合が生じる、という問題がある。そこで、本実施形態では、仮空きクラスタへのデータ書き込み前に、半導体記録媒体１００上のＦＡＴテーブル１、ＦＡＴテーブル２を更新するようにしている（Ｓ１３０６、Ｓ１３０７）。これにより、仮空きクラスタへのデータ書き込み途中または終了直後に、不測の事態により半導体記録媒体１００への電源供給が遮断された場合であっても、半導体記録媒体１００内部のＦＡＴテーブルとデータの整合性が保持できる。
【０１０４】
図１４は、移動前にブロック＃２に空きクラスタＺが存在し、上記の並べ替え処理により、ブロック＃４の「クラスタＺ２」のデータが「空きクラスタＺ」に移動したときの状態の変化を説明する。但し、リンク情報をデータ処理装置２００ｂのファイルシステム制御部２３０のＲＡＭ上で書き換えただけであり、半導体記録媒体１００のＦＡＴ情報は更新されていないとする。このとき、半導体記録媒体１００は、ブロック＃４にある移動元のクラスタＺ２に未だデータが記録されていると認識する。移動後のクラスタＺ２が「仮空きクラスタ」となる。図１２で説明したデータの並び替え処理を進めていくと、仮空きクラスタに別のデータが上書きされる可能性がある。上書き中に電源断などが発生すると、データを復旧できなくなるため、ステップＳ１３０７の処理を行い、ＦＡＴテーブル１、ＦＡＴテーブル２を半導体記録媒体１００に書き戻して、半導体記録媒体１００に、クラスタＺ２が空き領域であることを認識させる必要がある。
【０１０５】
図１５は、移動前にブロック＃２に空きクラスタＺが存在し、上記の並べ替え処理により、ブロック＃０のクラスタＺ２のデータが、空きクラスタＺに移動したときの状態の変化を説明する。移動後にクラスタＺ２が仮空きクラスタとなっている。
【０１０６】
以上のように、本実施形態では、半導体記録媒体１００の各ブロック中に一定の個数以上の空きクラスタが存在するようにデータを並び替えることによって、書き込み処理の速度が極端に低下するブロックの数を低減することを可能とする。
【０１０７】
さらに、本実施形態の並べ替え方法は、ＦＡＴテーブル１、ＦＡＴテーブル２に格納されているリンク情報の付け替え及びデータ領域１３２へのデータコピーのみによって実現する。ディレクトリエントリ３０１の検索や書き換えなどを必要としないので高速な処理が可能である。
【０１０８】
なお、以下のような変形例が考えられる。
（１）本実施の形態においては、ブロック判定部２６０が、ブロックの型の定義についての情報を予め持っているものとして説明したが、半導体記録媒体１００にブロックの型の定義に関する情報が格納されている場合、データ処理装置２００ｂが前記情報を参照してブロックの型の定義を決定してもよい。また、ユーザから指定された情報により決定してもよい。
【０１０９】
また、本実施の形態におけるブロックの型の定義は一例である。ブロックの型の定義は空きクラスタ数ではなくて、空きクラスタ数の割合や空きクラスタ数の占めるサイズで決定されていてもよい。
【０１１０】
（２）本実施の形態においては、ＦＡＴファイルシステムを例として記述したが、これに限定されるものではない。ブロックよりも小さな単位でファイルデータを管理している場合に、本発明の思想は適用できる。
【０１１１】
また、ブロック単位やクラスタ単位等は全て一例であり、他のサイズであってもよい。
【０１１２】
（３）本実施の形態においては、データの並べ替え処理の説明において、エラー処理を省略しているが、エラー処理を追加してもよい。例えば、ＦＡＴテーブル１、ＦＡＴテーブル２が壊れている場合、エラー処理として並べ替え処理を中断してもよい。
【０１１３】
（４）本実施の形態においては、並べ替え処理の最中に電源断が発生し、半導体記録媒体１００のデータ領域１３２に格納されている情報と管理情報領域１３１に格納されている情報に不整合が生じることを避けるために、データの上書きを行う直前にＦＡＴテーブル１、ＦＡＴテーブル２を書き込む処理（Ｓ１３０６、Ｓ１３０７）が存在していた。しかし、電源断が発生しないことが予め保証されている場合や、前記不整合が発生しても構わない場合などにはこれらの処理を省略することが可能である。
【０１１４】
（５）本実施の形態においては、Ｓ１３０１においてクラスタ番号ｋを０とし、データ領域１３２の最初のクラスタから順に移動元のデータの検索を開始していたが、常に最初から検索しなくてもよい。例えば、前回検索したクラスタ番号を覚えておいて、次はその続きから検索する仕様であってもよい。
【０１１５】
（６）本実施の形態におけるデータ並べ替え方法は、記録媒体内で管理するブロックが、ファイルシステムにおけるファイルデータの管理単位であるクラスタよりも大きく、かつブロックまたぎによってアクセス速度が低下する恐れのある場合に有効である。このような条件を満たす記録媒体であれば、半導体記録媒体に限定されない。
【０１１６】
（７）本実施の形態においては、ＦＡＴテーブル１及びＦＡＴテーブル２の書き込み順序などについて特に言及しなかったが、下記の変形例によりＦＡＴテーブル１もしくはＦＡＴテーブル２の書き込み処理中に電源断などが発生してもデータを復旧させることが可能となる。
【０１１７】
図１６Ａ、図１６Ｂは、データ並べ替え処理の変形例のフローチャートである。本変形例においては、データ処理装置２００ｂが有効ＦＡＴフラグを有しているものとする。有効ＦＡＴフラグは、ＦＡＴテーブル１及びＦＡＴテーブル２のうち、いずれのＦＡＴテーブルが有効であるかを示すフラグである。このフラグを参照し、有効な方のＦＡＴテーブルを決定し、その情報を参照することで、正しいリンク情報を得ることができる。
【０１１８】
最初に、有効ＦＡＴフラグを“１”に設定する（Ｓ１６０１）。その後、図１２、図１３で示した並べ替え処理を実行する（Ｓ１６０２）。但し、ステップＳ１２０９及びＳ１３０７におけるＦＡＴテーブルの書き込み処理については、図１６Ｂに示す処理を実行する。
【０１１９】
図１６Ｂに示す処理を説明する。
まず、データ処理装置２００ｂ上のＦＡＴテーブル２を、半導体記録媒体１００に書き戻す（Ｓ１６１１）。次に、有効ＦＡＴフラグを“２”に設定し（Ｓ１６１２）、半導体記録媒体１００上でＦＡＴテーブル２をＦＡＴテーブル１にコピーする（Ｓ１６１３）。コピー完了後に、有効ＦＡＴフラグを“１”に戻す（Ｓ１６１４）。
【０１２０】
この変形例を適用した場合、ＦＡＴの書き込み処理中に電源断などが発生し、書き込みエラーが生じた場合には、データ処理装置２００ｂは有効ＦＡＴフラグを参照し、現在有効になっているＦＡＴテーブルをもう一方にコピーすることができる。すなわち、有効ＦＡＴフラグが“１”ならば、ＦＡＴテーブル１をＦＡＴテーブル２にコピーし、有効ＦＡＴフラグが“２”ならば、ＦＡＴテーブル２をＦＡＴテーブル１にコピーする。
【０１２１】
この手順によりＦＡＴテーブルの書き込み中にエラーが発生した場合でも、データを整合性のある状態に復元することが可能となる。なお、前記有効ＦＡＴフラグは半導体記録媒体１００中に格納していてもよい。
【０１２２】
（８）本実施形態のデータ並べ替え方法を、実施の形態１のデータ記録方法と組み合わせることも可能である。両実施形態の技術思想を組み合わせることで、データ記録時の断片化による速度低下をより効果的に低減することができる。
【０１２３】
以上、本発明は、特定の実施形態について説明されてきたが、当業者にとっては他の多くの変形例、修正、他の利用が明らかである。それゆえ、本発明は、ここでの特定の開示に限定されず、添付の請求の範囲によってのみ限定され得る。なお、本出願は日本国特許出願、特願２００３−４０４１５８号（２００３年１２月０３日提出）に関連し、それらの内容は参照することにより本文中に組み入れられる。
【産業上の利用可能性】
【０１２４】
本発明は、空きクラスタ数がある一定値以上のブロックに対してのみ書き込みを行うことによって、情報記録媒体へのある書き込み処理の最低速度が極端に低下することを避けることが可能であるため、動画コンテンツの記録時等の高速な書き込み処理が要求される情報記録媒体のデータ処理装置に適用できる。
【図面の簡単な説明】
【０１２５】
【図１】本発明の実施の形態１に於ける半導体記録媒体及びデータ処理装置の構成例を示したブロック図
【図２】有効空き領域リストのデータ例を示す図
【図３】ＦＡＴファイルシステムの構成例を示した図
【図４】ＦＡＴファイルシステムのデータ格納例を示した図
【図５】ＦＡＴファイルシステムのデータ書き込み処理の一例を示すフローチャート
【図６】有効空き領域リストの生成処理の一例を示すフローチャート
【図７】有効空き領域リストのエントリの有効フラグの決定方法を説明するための図
【図８】有効空き領域リストを用いたＦＡＴファイルシステムのデータ書き込み処理の一例を示すフローチャート
【図９】ファイルデータ書き込み処理前後の状態の一例を示した図
【図１０】本発明の実施の形態２に於ける半導体記録媒体及びデータ処理装置の構成例を示したブロック図
【図１１】ブロック判定部の一例を示す概念図
【図１２】データ並べ替え処理の一例を示すフローチャート
【図１３】空きクラスタＺへのデータ移動処理の一例を示すフローチャート
【図１４】空きクラスタＺへのデータ移動処理の前後における状態の変化の一例（リンク先のクラスタが空きクラスタＺの後方にある場合）を示した図
【図１５】空きクラスタＺへのデータ移動処理の前後における状態の変化の一例（リンク先のクラスタが空きクラスタＺの前方にある場合）を示した図
【図１６Ａ】データ並べ替え処理の変形例を示すフローチャート
【図１６Ｂ】データ並べ替え処理の変形例におけるＦＡＴ書き込み処理を示すフローチャート
【符号の説明】
【０１２６】
１００    半導体記録媒体
１１０    ホストインタフェース部
１２０    制御部
１３０    データ格納部
１３１    管理情報領域
１３２    データ領域
２００、２００ｂ    データ処理装置
２１０    装着部
２２０    入出力処理部
２３０    ファイルシステム制御部
２４０    有効空き領域管理部
２４１    有効空き領域リスト
２４２    選択フラグ
２５０    データ処理部
３０１    ディレクトリエントリ
３０２    ＦＡＴテーブル
２６０    ブロック判定部 
【図１】
0004608434.tif 000002
【図２】
0004608434.tif 000003
【図３】
0004608434.tif 000004
【図４】
0004608434.tif 000005
【図５】
0004608434.tif 000006
【図６】
0004608434.tif 000007
【図７】
0004608434.tif 000008
【図８】
0004608434.tif 000009
【図９】
0004608434.tif 000010
【図１０】
0004608434.tif 000011
【図１１】
0004608434.tif 000012
【図１２】
0004608434.tif 000013
【図１３】
0004608434.tif 000014
【図１４】
0004608434.tif 000015
【図１５】
0004608434.tif 000016
【図１６Ａ】
0004608434.tif 000017
【図１６Ｂ】
0004608434.tif 000018