(57)【要約】【課題】情報記録モジュールの不揮発性メモリをＦＡＴファイルシステムにより領域管理する場合において、シーク処理を高速化し、且つ領域管理情報の整合性を容易に維持できる方法を提供する。【解決手段】情報記録モジュールの不揮発性メモリを管理しているファイルシステム内に拡張ＦＡＴを格納する。拡張ＦＡＴを参照し、その中に格納された通常ＦＡＴエントリと拡張ＦＡＴエントリの両方のエントリを使い分けて領域管理を行う拡張ＦＡＴ処理部をアクセスモジュール内に設ける。この拡張ＦＡＴ処理部における領域管理では、ファイルデータが連続領域に格納されている場合は拡張ＦＡＴエントリを使用し、少量の情報で連続領域をまとめて管理する。【選択図】図１
2009205591.tif 000002
【特許請求の範囲】
【請求項１】
ファイルデータを格納する不揮発性メモリを具備する情報記録モジュールにアクセスするアクセスモジュールであって、
前記不揮発性メモリ内の記録領域を固定長ブロック単位で管理すると共に、１つの前記固定長ブロックに関する領域管理情報を含む第１のエントリ情報と、
前記不揮発性メモリ内の複数の前記固定長ブロックから構成される連続領域の管理情報を含む第２のエントリ情報と、
を用いて、前記不揮発性メモリ内の記録領域の領域管理を行うファイルシステム制御部を具備することを特徴とするアクセスモジュール。
【請求項２】
前記第１のエントリ情報と、前記第２のエントリ情報とは、前記不揮発性メモリの記録領域内に存在する共通の領域管理情報テーブル内で管理され、
１つの前記固定長ブロックの領域管理は、前記第１のエントリ情報か、前記第２のエントリ情報のいずれか一方でのみ行われることを特徴とする請求項１記載のアクセスモジュール。
【請求項３】
前記ファイルシステム制御部は、
前記第１のエントリ情報のみを用いて領域管理を行う通常ＦＡＴ処理部と、
前記第１のエントリ情報と、前記第２のエントリ情報の両方を用いて領域管理を行う拡張ＦＡＴ処理部と、
を具備することを特徴とする請求項２記載のアクセスモジュール。
【請求項４】
前記ファイルシステム制御部は、
前記不揮発性メモリ内の記録領域に存在するファイルシステム管理情報に格納された判定フラグを参照し、前記通常ＦＡＴ処理部と、前記拡張ＦＡＴ処理部のいずれを使用するかを決定することを特徴とする請求項３記載のアクセスモジュール。
【請求項５】
前記第１のエントリ情報は、
対応する前記固定長ブロックに格納されているデータに引き続くデータが格納されている前記固定長ブロックの位置を示す情報を含むことを特徴とする請求項２記載のアクセスモジュール。
【請求項６】
前記第２のエントリ情報は、
前記第１のエントリ情報と前記第２のエントリ情報とを識別するための情報と、
前記第２のエントリ情報が管理する連続領域の大きさを示す情報と、
前記第２のエントリ情報が管理する連続領域に格納されているデータに引き続くデータが格納されている前記固定長ブロックの位置を示す情報を含むことを特徴とする請求項２記載のアクセスモジュール。
【請求項７】
前記ファイルシステム制御部は、
ファイルデータを格納する領域が所定の個数以上の前記固定長ブロックから構成される領域である場合に、前記第２のエントリ情報を用いて領域を管理し、
ファイルデータを格納する領域が前記所定の個数未満の前記固定長ブロックから構成される領域である場合に、前記第１のエントリ情報を用いて領域を管理することを特徴とする請求項２記載のアクセスモジュール。
【請求項８】
前記ファイルシステム制御部は、
ファイル内の現在参照している前記固定長ブロックの位置である現在参照位置情報を保持しており、
前記現在参照位置情報をファイル内の任意の位置に変更するシーク処理を行う際において、現在参照位置が前記第１のエントリ情報により管理されている場合、１つの前記固定長ブロック分の大きさだけ現在参照位置を進め、現在参照位置が前記第２のエントリ情報により管理されている場合、該第２のエントリ情報により管理されている連続領域分の大きさだけ現在参照位置を進めることを特徴とする請求項２記載のアクセスモジュール。
【請求項９】
ファイルデータを格納する不揮発性メモリを具備する情報記録モジュールであって、
前記不揮発性メモリは固定長ブロック単位で管理されており、
１つの前記固定長ブロックに関する領域管理情報を含む第１のエントリ情報と、
複数の前記固定長ブロックから構成される連続領域の管理情報を含む第２のエントリ情報と、
により構成された前記不揮発性メモリの領域管理情報が前記不揮発性メモリ内に格納されることを特徴とする情報記録モジュール。
【請求項１０】
前記第１のエントリ情報と、前記第２のエントリ情報とは、前記不揮発性メモリの記録領域内に存在する共通の領域管理情報テーブル内で管理され、
１つの前記固定長ブロックの領域管理は、前記第１のエントリ情報か、前記第２のエントリ情報のいずれか一方でのみ行われることを特徴とする請求項９記載の情報記録モジュール。
【請求項１１】
前記第１のエントリ情報は、
対応する前記固定長ブロックに格納されているデータに引き続くデータが格納されている前記固定長ブロックの位置を示す情報を含むことを特徴とする請求項１０記載の情報記録モジュール。
【請求項１２】
前記第２のエントリ情報は、
前記第１のエントリ情報と前記第２のエントリ情報とを識別するための情報と、
前記第２のエントリ情報が管理する連続領域の大きさを示す情報と、
前記第２のエントリ情報が管理する連続領域に格納されているデータに引き続くデータが格納されている前記固定長ブロックの位置を示す情報を含むことを特徴とする請求項１０記載の情報記録モジュール。
【請求項１３】
ファイルデータを格納する不揮発性メモリを具備する情報記録モジュールと、前記情報記録モジュールにアクセスするアクセス装置からなる情報記録システムであって、
前記不揮発性メモリは固定長ブロック単位で管理されており、
１つの前記固定長ブロックに関する領域管理情報を含む第１のエントリ情報と、
複数の前記固定長ブロックから構成される連続領域の管理情報を含む第２のエントリ情報と、
により構成された前記不揮発性メモリの領域管理情報が前記不揮発性メモリ内に格納され、
前記アクセスモジュールは、前記領域管理情報を用いて前記不揮発性メモリ内の記録領域の領域管理を行うファイルシステム制御部を具備することを特徴とする情報記録システム。
【請求項１４】
前記第１のエントリ情報と、前記第２のエントリ情報とは、前記不揮発性メモリの記録領域内に存在する共通の領域管理情報テーブル内で管理され、
１つの前記固定長ブロックの領域管理は、前記第１のエントリ情報か、前記第２のエントリ情報のいずれか一方でのみ行われることを特徴とする請求項１３記載の情報記録システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを不揮発性メモリに格納し、ファイルとして管理するアクセスモジュール、情報記録モジュール、及び情報記録システムに関する。
【背景技術】
【０００２】
音楽コンテンツや、映像データ等のデジタルデータを記録する記録媒体には、磁気ディスク、光ディスク、光磁気ディスク等、様々な種類が存在する。これら記録媒体の内、記録素子にフラッシュＲＯＭ等の半導体メモリを使用したメモリカードは、記録媒体の小型化が図れることから、デジタルスチルカメラや携帯電話端末等、小型の携帯機器を中心に急速に普及している。更に最近では、フラッシュＲＯＭ等の半導体メモリを機器に内蔵してハードディスクの代わりに使用するなど、従来のメモリカードのような着脱可能なリムーバブルメディアとしての用途のみならず、機器内蔵ストレージとしての用途でも半導体メモリが使用されるようになってきた。
【０００３】
このようなメモリカードや機器内蔵ストレージには、主にＮＡＮＤ型フラッシュメモリと呼ばれる半導体素子が使用されている。ＮＡＮＤ型フラッシュメモリは、既に記録されたデータを一旦消去した後、再度別のデータを記録することが可能な記録素子であり、従来のハードディスクと同様に、複数回書き換え可能な情報記録装置を構成することが可能である。
【０００４】
従来、メモリカードや機器内蔵ストレージに格納されたデータはファイルシステムにより管理されている。データをファイルシステムにより管理することで、同一のファイルシステムを解釈する機器間でデータをファイルとして共有することが可能となり、ユーザは自分の格納したデータを複数の機器間で容易に参照したり、コピーしたりすることが可能となる。
【０００５】
従来最も広く使用されているファイルシステムはＦＡＴファイルシステムと呼ばれるものである。ＦＡＴファイルシステムは、領域管理をファイルアロケーションテーブル（ＦＡＴ）と呼ばれるテーブルで一元管理するという特徴を持っており、比較的構造がシンプルで実装が容易なことから、フレキシブルディスクやＰＣのハードディスク、メモリカードなどのファイルシステムとして広く使用されている。
【０００６】
図２にＦＡＴファイルシステムの構成を示す。ＦＡＴファイルシステムではファイルアロケーションテーブル内の管理単位のビット幅の違いにより、ＦＡＴ１２、ＦＡＴ１６、ＦＡＴ３２などの種類が存在するが、ファイルアロケーションテーブルによる領域管理方法はほぼ同じであり、以下ではＦＡＴ１６を例に説明する。同図に示すように論理アドレス空間の先頭には、領域割り当て単位やファイルシステムが管理する領域の大きさ等、ファイルシステムの管理情報が格納される領域であるファイルシステム管理情報領域２０１が存在する。このファイルシステム管理情報領域２０１には、マスターブートレコード・パーティションテーブル２０３、パーティションブートセクタ２０４、ＦＡＴ（２０５、２０６）、ルートディレクトリエントリ２０７と呼ばれるファイルシステムの管理情報が含まれ、ユーザデータ領域２０２を管理するために必要な情報が各々格納されている。マスターブートレコード・パーティションテーブル２０３は、ファイルシステムが管理する論理アドレス空間上の領域を複数のパーティションと呼ばれる領域に分割して管理するための情報が格納される領域である。パーティションブートセクタ２０４は、パーティション内の領域管理単位の大きさなど、１つのパーティション内の管理情報が格納される領域である。ＦＡＴ（２０５、２０６）は、ファイルに含まれるデータの格納位置に関する情報が格納される領域であり、通常、同じ情報を持つ２つのＦＡＴ（２０５、２０６）が存在し、一方のＦＡＴ（２０５、２０６）が破損したとしても他方のＦＡＴ（２０５、２０６）によりファイルにアクセスできるよう二重化されている。ルートディレクトリエントリ２０７は、ルートディレクトリ直下に存在するファイル、ディレクトリの情報（ディレクトリエントリ）が格納される領域である。
【０００７】
またＦＡＴファイルシステムでは、このファイルシステム管理情報領域２０１に引き続く領域にファイル本体のデータなどを格納するユーザデータ領域２０２が存在する。ユーザデータ領域２０２は、５１２バイトから３２ＫＢ程度の大きさを持つクラスタと呼ばれる管理単位毎に分割管理されており、各クラスタにはファイルに含まれるデータが格納されている。多くのデータを格納するファイルは、複数のクラスタに跨ってデータを格納しており、各クラスタ間の繋がりは、ＦＡＴ（２０５、２０６）に格納されたリンク情報により管理されている。また、ルートディレクトリ直下のディレクトリ内に存在するファイル、サブディレクトリの情報（ディレクトリエントリ）は、このユーザデータ領域２０２の一部を利用して格納される。
【０００８】
図３はＦＡＴ１６のディレクトリエントリの構成を示した図である。ディレクトリエントリ２０８は１つのファイル、ディレクトリ毎に３２バイトのディレクトリエントリ２０８が割り当てられ、ファイル、ディレクトリに関する情報を格納している。すなわち、１つのファイルやディレクトリが追加される度に３２バイトのディレクトリエントリ２０８の情報が新規に作成され、ルートディレクトリエントリ２０７の領域、あるいはユーザデータ領域２０２に記録される。ディレクトリエントリ２０８の先頭８バイトにはファイルやディレクトリの名称が格納される。続く３バイトには拡張子が格納される。続く１バイトにはファイル・ディレクトリの種別を識別するフラグや、ファイル・ディレクトリがリードオンリーか否かを識別するフラグ等の属性情報が格納される。また、ファイル・ディレクトリの最終更新日時の情報や、ファイル・ディレクトリデータの実体が格納されているクラスタの開始位置を示す開始クラスタ番号、ファイルサイズのバイト数等が格納される。このようにディレクトリエントリ２０８には、データ実体が格納されている領域の最初の１クラスタの位置を示す情報しか含まれておらず、データ実体の大きさが１クラスタよりも大きい場合において２クラスタ目以降のデータがどの領域に格納されているかについては、ＦＡＴ（２０５、２０６）で管理されている。
【０００９】
図４はＦＡＴ１６のＦＡＴ（２０５、２０６）の構成を示した図である。ＦＡＴ１６では、ＦＡＴ（２０５、２０６）は２バイト（１６ビット）の情報を１つのＦＡＴエントリとして管理しており、１つのＦＡＴエントリが１つのクラスタの状態を示している。すなわち、ユーザデータ領域２０２にＭ個のクラスタが存在する場合、ＦＡＴエントリもＭ個存在することから、ＦＡＴ（２０５、２０６）の１つ分の大きさは約２×Ｍバイトとなる。但し、先頭２ＦＡＴエントリ分はＦＡＴの先頭を示す固定の値（０ｘＦ８ＦＦ、０ｘＦＦＦＦ）がシグネチャとして記録されるため、ユーザデータ領域２０２の先頭クラスタに対応するＦＡＴエントリはＦＡＴ（２０５、２０６）の４バイト目、５バイト目の２バイトに存在している。ＦＡＴ先頭に存在する４バイトのシグネチャをＦＡＴエントリの０番、１番とすると、４バイト目、５バイト目の２バイトの位置は２番目になることから、ユーザデータ領域２０２の先頭クラスタは、便宜上クラスタ番号＝“２”と割り当てられており、クラスタ番号＝“０”、“１”に対応するクラスタは存在しないことになっている。
【００１０】
更に、各ＦＡＴエントリは各々対応するクラスタの状態（使用中、空き、欠陥）、及びリンク先のクラスタ番号を示す。例えば図４において対応クラスタ番号２のＦＡＴエントリは０ｘ０００３（十進数では“３”）に設定されており、クラスタ番号２のクラスタ内に格納されたデータの続きのデータは、クラスタ番号３のクラスタ内に格納されていることを意味する。同様に対応クラスタ番号３のＦＡＴエントリは０ｘ０００４（十進数では“４”）に設定されており、クラスタ番号３のクラスタ内に格納されたデータの続きのデータは、クラスタ番号４のクラスタ内に格納されていることを意味する。また、対応クラスタ番号６のＦＡＴエントリは０ｘＦＦＦＦに設定されている。これは次のリンク先が存在せず、リンクが終端していることを意味する。よって、図４の例では、クラスタ番号２、３、４、５、６の順に一連のファイルデータが格納されていることになる。また、対応クラスタ番号７のＦＡＴエントリは０ｘ００００に設定されている。これは対応するクラスタが使用されておらず、“空き”の状態であることを意味する。また、対応クラスタ番号（Ｍ＋１）のＦＡＴエントリは０ｘＦＦＦ７に設定されている。これは対応するクラスタが物理的に壊れていて記録が出来ない状態である等の欠陥状態であることを意味する。まとめると、０ｘ００００、０ｘＦＦＦＦ、０ｘＦＦＦ７の３つのＦＡＴエントリ値は各々特殊な意味を持ち、０ｘ０００２から０ｘＦＦＦ６までのＦＡＴエントリ値がリンク先クラスタ番号として使用されることになる。また、それ以外の０ｘ０００１、０ｘＦＦＦ８から０ｘＦＦＦＥまでの値は予約されており、通常は使用されない値になっている。
【００１１】
このようにＦＡＴファイルシステムでは、ファイルデータが複数のクラスタに跨って格納されている場合、各クラスタ間のリンク関係をＦＡＴエントリの値に格納し管理している。よって、ファイルデータを先頭から順に終端まで読み出す場合、クラスタ境界に来る度にＦＡＴ（２０５、２０６）を参照し、次のリンク先のクラスタ番号を特定する必要がある。同様にファイル内の任意の位置を読み出すためにシーク処理を行う場合、ＦＡＴ（２０５、２０６）を参照してシークサイズ分のクラスタ数だけリンクを辿り所望のデータが格納されているクラスタ番号を特定する必要がある。そのため、シーク処理はファイルサイズに比例して処理時間が長くなることになる。ここで１ＧＢのファイルを１６ＫＢクラスタ単位で管理している場合を想定すると、リンクを辿る回数は約６５０００回となり、比較的低速なＣＰＵを使用した場合等では、シーク処理に数秒かかる場合もある。更にＦＡＴ（２０５、２０６）ではファイルの順方向のリンク情報しか保持していないため、ファイルの前方に向かってシークする場合には再度ファイルの先頭からシーク処理をやり直す必要があり、高速にシークできないという問題が生じる。
【００１２】
従来、このような問題を解決する方法として、ジャンプテーブルを用いる方法が提案されている（例えば、特許文献１参照）。この方法では、ファイル先頭から所定単位サイズ毎にデータが格納されているクラスタ番号のリストをジャンプテーブルとして生成して保持し、シーク時にはジャンプテーブルに保持された情報を参照してシーク先の位置に最も近い位置のクラスタ番号を探し出し、そこからＦＡＴ（２０５、２０６）を参照してシーク処理を継続するという技術が開示されている。
【特許文献１】特開２００１−２３６２５１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかしながら、上記の従来技術には次のような問題点がある。従来の方法では、電源起動時等に予めジャンプテーブルを生成する時間が必要であり、アクセス装置の起動時間が長くなるという問題が生じる。更に、ファイルデータが格納されている領域に関する情報をＦＡＴ（２０５、２０６）とジャンプテーブルで二重管理するため、ファイルを追記したり部分削除したりした場合、両方の情報を整合性の取れた状態に維持するために複雑な処理が必要となる。
【００１４】
本発明では上記問題点に鑑み、ＦＡＴファイルシステムにおけるＦＡＴエントリを拡張することにより、シーク処理を高速化し、且つファイルシステム管理情報の不整合が生じにくいアクセスモジュール、情報記録モジュール、及び情報記録システムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明のアクセスモジュールは、ファイルデータを格納する不揮発性メモリを具備する情報記録モジュールにアクセスするアクセスモジュールであって、前記不揮発性メモリ内の記録領域を固定長ブロック単位で管理すると共に、１つの前記固定長ブロックに関する領域管理情報を含む第１のエントリ情報と、前記不揮発性メモリ内の複数の前記固定長ブロックから構成される連続領域の管理情報を含む第２のエントリ情報とを用いて、前記不揮発性メモリ内の記録領域の領域管理を行うファイルシステム制御部を具備することを特徴とする。
【００１６】
また、前記第１のエントリ情報と、前記第２のエントリ情報とは、前記不揮発性メモリの記録領域内に存在する共通の領域管理情報テーブル内で管理され、１つの前記固定長ブロックの領域管理は、前記第１のエントリ情報か、前記第２のエントリ情報のいずれか一方でのみ行われるようにしても良い。
【００１７】
更に、前記ファイルシステム制御部は、前記第１のエントリ情報のみを用いて領域管理を行う通常ＦＡＴ処理部と、前記第１のエントリ情報と、前記第２のエントリ情報の両方を用いて領域管理を行う拡張ＦＡＴ処理部とを具備する構成にしても良い。
【００１８】
この構成の場合、前記ファイルシステム制御部は、前記不揮発性メモリ内の記録領域に存在するファイルシステム管理情報に格納された判定フラグを参照し、前記通常ＦＡＴ処理部と、前記拡張ＦＡＴ処理部のいずれを使用するかを決定するように構成することができる。
【００１９】
また、前記第１のエントリ情報は、対応する前記固定長ブロックに格納されているデータに引き続くデータが格納されている前記固定長ブロックの位置を示す情報を含んでも良い。
【００２０】
また、前記第２のエントリ情報は、前記第１のエントリ情報と前記第２のエントリ情報とを識別するための情報と、前記第２のエントリ情報が管理する連続領域の大きさを示す情報と、前記第２のエントリ情報が管理する連続領域に格納されているデータに引き続くデータが格納されている前記固定長ブロックの位置を示す情報を含んでも良い。
【００２１】
更に、前記ファイルシステム制御部は、ファイルデータを格納する領域が所定の個数以上の前記固定長ブロックから構成される領域である場合に、前記第２のエントリ情報を用いて領域を管理し、ファイルデータを格納する領域が前記所定の個数未満の前記固定長ブロックから構成される領域である場合に、前記第１のエントリ情報を用いて領域を管理するようにしても良い。
【００２２】
また、前記ファイルシステム制御部は、ファイル内の現在参照している前記固定長ブロックの位置である現在参照位置情報を保持しており、前記現在参照位置情報をファイル内の任意の位置に変更するシーク処理を行う際において、現在参照位置が前記第１のエントリ情報により管理されている場合、１つの前記固定長ブロック分の大きさだけ現在参照位置を進め、現在参照位置が前記第２のエントリ情報により管理されている場合、該第２のエントリ情報により管理されている連続領域分の大きさだけ現在参照位置を進めるようにしても良い。
【００２３】
本発明の情報記録モジュールは、ファイルデータを格納する不揮発性メモリを具備する情報記録モジュールであって、前記不揮発性メモリは固定長ブロック単位で管理されており、１つの前記固定長ブロックに関する領域管理情報を含む第１のエントリ情報と、複数の前記固定長ブロックから構成される連続領域の管理情報を含む第２のエントリ情報により構成された前記不揮発性メモリの領域管理情報が前記不揮発性メモリ内に格納されることを特徴とする。
【００２４】
本発明の情報記録システムは、ファイルデータを格納する不揮発性メモリを具備する情報記録モジュールと、前記情報記録モジュールにアクセスするアクセス装置から構成され、前記不揮発性メモリは固定長ブロック単位で管理されており、１つの前記固定長ブロックに関する領域管理情報を含む第１のエントリ情報と、複数の前記固定長ブロックから構成される連続領域の管理情報を含む第２のエントリ情報により構成された前記不揮発性メモリの領域管理情報が前記不揮発性メモリ内に格納され、前記アクセスモジュールは、前記領域管理情報を用いて前記不揮発性メモリ内の記録領域の領域管理を行うファイルシステム制御部を具備することを特徴とする。
【発明の効果】
【００２５】
本発明によれば、ＦＡＴファイルシステムによりデータを管理する場合において、シーク処理を高速に実施することが可能となり、且つファイルシステム管理情報の不整合が生じる可能性を低減することが可能となる。
【発明を実施するための最良の形態】
【００２６】
以下、本発明のアクセスモジュール、情報記録モジュール、及び情報記録システムについて、図面を参照しつつ説明する。
【００２７】
（実施の形態）
図１は本発明の実施の形態におけるアクセスモジュール、情報記録モジュールの構成図である。図１においてアクセスモジュール１は、ＣＰＵ１１、ＲＡＭ１２、情報記録モジュールインタフェース１３、ＲＯＭ１４を含む。ＲＯＭ１４にはアクセスモジュール１を制御するプログラムが格納されており、このプログラムはＲＡＭ１２を一時記憶領域として使用し、ＣＰＵ１１上で動作する。情報記録モジュールインタフェース１３は、情報記録モジュール２とアクセスモジュール１との接続部であり、制御信号及びデータの送受信を行う。ＲＯＭ１４は更に、アプリケーション制御部１０１、ファイルシステム制御部１０２、情報記録モジュールアクセス部１０５を含む。アプリケーション制御部１０１は、データの生成や電源の制御などアクセスモジュール１全体の制御を行う。ファイルシステム制御部１０２は、ＦＡＴファイルシステムによりデータをファイルとして管理するための制御を行う。情報記録モジュールアクセス部１０５は、ファイルシステム制御部１０２からデータと共にサイズとアドレスを渡され、指定されたサイズのデータを情報記録モジュール２の記録領域内における指定された位置に記録するなど、情報記録モジュール２に対するコマンドやデータの送受信を制御する。ファイルシステム制御部１０２は更に、通常ＦＡＴ処理部１０３、拡張ＦＡＴ処理部１０４を含む。通常ＦＡＴ処理部１０３は、従来のＦＡＴ（２０５、２０６）を制御する処理部であり、従来のアクセスモジュール内に存在するＦＡＴ処理部と同様のものである。拡張ＦＡＴ処理部１０４は本願の特徴である拡張ＦＡＴを制御する処理部であり、従来のアクセスモジュールには存在しないものである。
【００２８】
一方、図１において情報記録モジュール２は、アクセスモジュールインタフェース２１、ＣＰＵ２２、ＲＡＭ２３、ＲＯＭ２４、不揮発性メモリ２５を含む。アクセスモジュールインタフェース２１は、情報記録モジュール２とアクセスモジュール１との接続部であり、情報記録モジュールインタフェース１３同様、制御信号及びデータを送受信するインタフェースである。ＲＯＭ２４には情報記録モジュール２を制御するプログラムが格納されており、このプログラムはＲＡＭ２３を一時記憶領域として使用し、ＣＰＵ２２上で動作する。不揮発性メモリ２５は、アクセスモジュール１から送信されたデータを記録する領域であり、その中はＦＡＴファイルシステムで管理されている。不揮発性メモリ２５内の論理アドレス空間には、マスターブートレコード・パーティションテーブル２０３や、パーティションブートセクタ２０４、ルートディレクトリエントリ２０７等の、従来のＦＡＴファイルシステムに存在する管理情報が格納されており、ユーザデータ領域２０２内に格納されたファイル、ディレクトリを管理している。また、従来ＦＡＴ（ファイルアロケーションテーブル）が格納されていた領域には、本願の特徴である拡張ＦＡＴが格納されている。拡張ＦＡＴには従来のＦＡＴに格納されている通常ＦＡＴエントリの他、連続領域をまとめて少量の情報で管理する拡張ＦＡＴエントリが格納される。
【００２９】
本実施の形態のアクセスモジュール１は、情報記録モジュール２内の不揮発性メモリ２５に構築されたＦＡＴファイルシステムにおいて、連続領域を少量の情報で管理する拡張ＦＡＴエントリを記録する機能を持つ。更に拡張ＦＡＴエントリを読み出して解釈する機能を持つ。これら拡張ＦＡＴにアクセスする機能により、ファイルのシーク処理を高速化し、且つファイルシステム管理情報の不整合が生じる可能性を低減することが可能となる。
【００３０】
次に図５、図６を用いて、本発明における拡張ＦＡＴファイルシステムの構成について説明する。図５は本発明における拡張ＦＡＴファイルシステムの構成を示した図である。図５が、従来のＦＡＴファイルシステムの構成を示した図２と異なる点は、ＦＡＴ（２０５、２０６）の領域が拡張ＦＡＴ（３０１、３０２）の領域に変化している点である。従来のＦＡＴ（２０５、２０６）では１クラスタに対応する管理情報を１つのＦＡＴエントリ（通常ＦＡＴエントリ）を用いて管理していたが、本発明の拡張ＦＡＴ（３０１、３０２）では、通常ＦＡＴエントリの他、複数のＦＡＴエントリを結合して一連の連続領域の情報を格納する拡張ＦＡＴエントリも格納する。
【００３１】
図６は本発明における拡張ＦＡＴエントリの構成を示した図である。拡張ＦＡＴエントリは、通常ＦＡＴエントリの３つ分の領域を使用する。ＦＡＴ１６の場合には１つの通常ＦＡＴエントリが２バイトで管理されるため、拡張ＦＡＴエントリは６バイトの大きさとなる。拡張ＦＡＴエントリの先頭２バイトには、本エントリが拡張ＦＡＴエントリであることを示す固定の値が拡張エントリシグネチャ（ｅｘｔ＿ｓｉｇ）として格納される。拡張エントリシグネチャとしては例えば０ｘＦＦＦＥ等が用いられる。
【００３２】
また、続く２バイトには、本エントリが管理する領域の連続クラスタ数（ｃｏｕｎｔ）が格納される。例えば拡張ＦＡＴエントリが１００クラスタからなる連続領域を管理する場合、ｃｏｕｎｔには“０ｘ００６４（１００）”が格納される。
【００３３】
また、最後の２バイトには、本エントリが管理する領域の次に存在する領域の開始クラスタ番号を示す次リンク先クラスタ番号（ｎｅｘｔ）が格納される。例えば拡張ＦＡＴエントリで管理される連続領域の次に存在する領域の開始クラスタ番号が１０００であった場合、ｎｅｘｔには“０ｘ０３Ｅ８（１０００）”が格納される。
【００３４】
このように、従来１ＦＡＴエントリあたり１クラスタの情報を管理していたのに対して、拡張ＦＡＴエントリでは１つあたり１連続領域の情報を管理することが可能となる。そのため、連続領域の大きさが大きければ大きい程少量の情報量で大きな連続領域を管理することが可能となり、シーク処理時に参照するＦＡＴエントリの数を削減して処理を高速化することが可能となる。
【００３５】
続いて本発明の特徴を明確にするために、従来のＦＡＴファイルシステムにおける処理手順と、本発明の拡張ＦＡＴ処理部における処理手順とを比較して説明する。
【００３６】
まず始めに、図７を用いて従来のＦＡＴファイルシステムにおけるファイルデータ書き込み処理手順について説明する。
（Ｓ７０１）対象ファイルのディレクトリエントリ２０８を読み出す。
（Ｓ７０２）読み出したディレクトリエントリ２０８に格納された開始クラスタ番号を取得し、ファイルデータの先頭位置を確認する。
（Ｓ７０３）ＦＡＴ（２０５、２０６）をアクセスモジュールのＲＡＭ上に読み出し、Ｓ７０２で取得したファイルデータの先頭位置から順にＲＡＭ上のＦＡＴ（２０５、２０６）内でリンクを辿り、書き込み位置のクラスタ番号を取得する。ここでリンクを辿る処理は、ファイル内の任意の位置にシークする場合の処理とほぼ同じであり、詳細については後述する。
（Ｓ７０４）ファイルデータ書き込みに際し、ファイルに新たに空き領域を割り当てる必要があるか判定する。空き領域の割り当てが必要な場合Ｓ７０５の処理に進む。空き領域の割り当てが不要な場合Ｓ７０８の処理に進む。
（Ｓ７０５）ＲＡＭ上のＦＡＴ（２０５、２０６）内で空き領域を検索し、１クラスタの空き領域を取得する。具体的にはＲＡＭ上のＦＡＴ（２０５、２０６）内のＦＡＴエントリを順次参照し、値が０ｘ００００に設定されているＦＡＴエントリを見つけ、該ＦＡＴエントリの対応クラスタ番号の値を求める。ＦＡＴエントリの検索処理は例えばＦＡＴ（２０５、２０６）の先頭から終端まで順に処理を実施しても良いし、前回空き領域を割り当てたＦＡＴエントリの次のＦＡＴエントリから処理を開始してＦＡＴ（２０５、２０６）の終端まで到達したらＦＡＴ（２０５、２０６）の先頭に折り返し、前回空き領域を割り当てたＦＡＴエントリまで処理を実施しても良い。このようにＦＡＴエントリの検索処理手順はＦＡＴ（２０５、２０６）領域の全面に対して空き領域を検索する処理を実現できるものであれば良く、特に限定はされない。
（Ｓ７０６）Ｓ７０５で取得した空きクラスタの番号に対応するＦＡＴエントリの値を、使用済みを意味する０ｘＦＦＦＦにＲＡＭ上で設定する。
（Ｓ７０７）現在のリンク終端のクラスタ番号に対応するＦＡＴエントリの値を０ｘＦＦＦＦからＳ７０５で取得した空きクラスタの番号にＲＡＭ上で設定する。空き領域を取得する必要がある場合は、ファイル終端への追記を意味し、その場合Ｓ７０３でのリンクを辿る処理においてファイル終端までリンクが辿られている。そのため、現在のリンク終端のクラスタ番号に対応するＦＡＴエントリの値はリンク終端を意味する０ｘＦＦＦＦが設定されている。そのため、Ｓ７０７の処理により、Ｓ７０５で新たに取得した空きクラスタへリンクを接続することによりファイルのリンクが１クラスタ分長くなり、ファイルデータを追記することが可能となる。
（Ｓ７０８）現在参照している書き込み位置のクラスタ内にファイルデータを書き込む。Ｓ７０４で空き領域取得が必要と判断した場合は、現在参照している書き込み位置はＳ７０５で取得した空きクラスタとなる。またＳ７０４で空き領域取得が不要と判断した場合は、現在参照している書き込み位置はＳ７０３でリンクを辿った結果到達したクラスタとなる。
（Ｓ７０９）全ファイルデータの書き込みが完了したか判定する。まだファイルデータが残っている場合Ｓ７０４の処理に戻る。全ファイルデータの書き込みが完了した場合Ｓ７１０の処理に進む。
（Ｓ７１０）ディレクトリエントリ２０８内に格納されたファイルサイズや最終更新日時等の情報を更新し、情報記録モジュールの不揮発性メモリ内に格納されたディレクトリエントリ２０８を上書きする。
（Ｓ７１１）情報記録モジュールの不揮発性メモリ内に格納されたＦＡＴ（２０５、２０６）に、アクセスモジュールのＲＡＭ上のＦＡＴ（２０５、２０６）のデータを上書きし、処理を完了する。
【００３７】
このファイルデータ書き込み処理により、図８に示された６００００バイトのデータを持つＦＩＬＥ１．ＴＸＴに１００００バイトのデータを追記した場合、図９に示されるような７００００バイトのデータを持つファイルに変化する。すなわち、空きクラスタとしてクラスタ番号６のクラスタが取得されてファイルデータが追記され、従来のＦＡＴ（２０５、２０６）上のリンクにクラスタ番号６が接続される。その結果、ＦＩＬＥ１．ＴＸＴのリンクは、クラスタ番号２〜５の４クラスタからなる状態から、クラスタ番号２〜６の５クラスタからなる状態に更新される。
【００３８】
次に、本発明の拡張ＦＡＴ処理部１０４におけるファイルデータ書き込み処理手順について説明する。本発明のアクセスモジュール１は、ファイルシステム制御部１０２内に通常ＦＡＴ処理部１０３と、拡張ＦＡＴ処理部１０４を含んでいる。通常ＦＡＴ処理部１０３は従来のＦＡＴ（２０５、２０６）にアクセスする処理部であり、ファイルデータ書き込み時には図７で説明した従来の処理手順と同様の手順を実施する。また、拡張ＦＡＴ処理部１０４は、本発明の特徴である拡張ＦＡＴ（３０１、３０２）を解釈しアクセスする処理部である。また、通常ＦＡＴ処理部１０３、拡張ＦＡＴ処理部１０４のいずれの処理部を用いるかに関する判定は、例えばパーティションブートセクタ内に拡張ＦＡＴの有無を示すフラグを設けてそれを参照することにより判定する等の方法により実現する。以下、図１０を用いて本発明の拡張ＦＡＴ処理部１０４におけるファイルデータ書き込み処理手順について説明する。
【００３９】
（Ｓ１００１）対象ファイルのディレクトリエントリ２０８を読み出す。
（Ｓ１００２）読み出したディレクトリエントリ２０８に格納された開始クラスタ番号を取得し、ファイルデータの先頭位置を確認する。
（Ｓ１００３）拡張ＦＡＴ（３０１、３０２）をアクセスモジュール１のＲＡＭ１２上に読み出し、Ｓ１００２で取得したファイルデータの先頭位置から順にＲＡＭ１２上の拡張ＦＡＴ（３０１、３０２）内でリンクを辿り、書き込み位置のクラスタ番号を取得する。ここでリンクを辿る処理は、ファイル内の任意の位置にシークする場合の処理とほぼ同じであり、詳細については後述する。
（Ｓ１００４）ファイルデータ書き込みに際し、ファイルに新たに空き領域を割り当てる必要があるか判定する。空き領域の割り当てが必要な場合Ｓ１００５の処理に進む。空き領域の割り当てが不要な場合Ｓ１０１１の処理に進む。
（Ｓ１００５）ＲＡＭ１２上の拡張ＦＡＴ（３０１、３０２）内で空き領域を検索し、１クラスタの空き領域を取得する。具体的にはＲＡＭ１２上の拡張ＦＡＴ（３０１、３０２）内の通常ＦＡＴエントリ、拡張ＦＡＴエントリを順次参照し、値が０ｘ００００に設定されている通常ＦＡＴエントリを見つけ、該通常ＦＡＴエントリの対応クラスタ番号の値を求める。このＦＡＴエントリの検索処理手順については図７で説明した通り、特に限定されるものではない。また、拡張ＦＡＴエントリを見つけた場合は、既に領域が割り当てられていることが判明しているため、拡張ＦＡＴエントリのｃｏｕｎｔに設定されているクラスタ数分の通常ＦＡＴエントリをスキップして検索処理を継続する。
（Ｓ１００６）Ｓ１００５で取得した空きクラスタが拡張ＦＡＴエントリで管理可能か判定する。管理できると判定した場合はＳ１００９の処理に進む。管理できないと判定した場合はＳ１００７の処理に進む。拡張ＦＡＴエントリで管理可能な場合とは、次の２つの条件を共に満たした場合である。
＜条件１＞Ｓ１００５で取得した空きクラスタは、現在のリンク終端のクラスタの直後のクラスタである。
＜条件２＞現在のリンク終端のクラスタが既に拡張ＦＡＴエントリで管理されている、あるいは通常ＦＡＴエントリで管理されている場合にＳ１００５で取得した空きクラスタを含む連続領域が３クラスタ以上存在する。
上記条件を満たした場合、Ｓ１００５で取得した空きクラスタは一連の連続領域の終端に位置し、且つ３クラスタ以上の大きさを持つ連続領域であることから、通常ＦＡＴエントリの３クラスタ分のエントリ情報から構成される拡張ＦＡＴエントリで管理できることになる。
（Ｓ１００７）Ｓ１００６において拡張ＦＡＴエントリで管理できないと判定した場合、Ｓ１００５で取得した空きクラスタの番号に対応する通常ＦＡＴエントリの値を、使用済みを意味する０ｘＦＦＦＦにＲＡＭ１２上で設定する。
（Ｓ１００８）現在のリンク終端のクラスタ番号に対応するＦＡＴエントリの値を０ｘＦＦＦＦからＳ１００５で取得した空きクラスタの番号にＲＡＭ１２上で設定する。現在のリンク終端が通常ＦＡＴエントリで管理されている場合には、通常ＦＡＴエントリに直接空きクラスタ番号の値を設定する。また拡張ＦＡＴエントリで管理されている場合には、拡張ＦＡＴエントリのｎｅｘｔに空きクラスタ番号の値を設定する。
（Ｓ１００９）Ｓ１００６において拡張ＦＡＴエントリで管理できると判定した場合、拡張ＦＡＴエントリの情報をＲＡＭ１２上で更新する。具体的には現在のリンク終端が既に拡張ＦＡＴエントリで管理されている場合は、拡張ＦＡＴエントリ内のｃｏｕｎｔの値を１加算する。また、現在のリンク終端が通常ＦＡＴエントリで管理されている場合は、Ｓ１００５で取得した空きクラスタを含む連続領域の先頭を見つけ、その先頭クラスタに対応する通常ＦＡＴエントリの位置に拡張ＦＡＴエントリのｅｘｔ＿ｓｉｇとして０ｘＦＦＦＥを設定し、更に拡張ＦＡＴエントリのｃｏｕｎｔに連続クラスタ数を、ｎｅｘｔにリンク終端を意味する０ｘＦＦＦＦを設定する。
（Ｓ１０１０）Ｓ１００５で取得した空きクラスタの番号に対応する通常ＦＡＴエントリの値を、使用済みを意味する０ｘＦＦＦＦにＲＡＭ１２上で設定する。但し、Ｓ１００９の処理において通常ＦＡＴエントリの管理から拡張ＦＡＴエントリの管理へ切り替えた場合、既に正しいｎｅｘｔの値が該当領域に設定されているため、Ｓ１０１０の処理は不要となる。
（Ｓ１０１１）現在参照している書き込み位置のクラスタ内にファイルデータを書き込む。Ｓ１００４で空き領域取得が必要と判断した場合は、現在参照している書き込み位置はＳ１００５で取得した空きクラスタとなる。またＳ１００４で空き領域取得が不要と判断した場合は、現在参照している書き込み位置はＳ１００３でリンクを辿った結果到達したクラスタとなる。
（Ｓ１０１２）全ファイルデータの書き込みが完了したか判定する。まだファイルデータが残っている場合Ｓ１００４の処理に戻る。全ファイルデータの書き込みが完了した場合Ｓ１０１３の処理に進む。
（Ｓ１０１３）ディレクトリエントリ２０８内に格納されたファイルサイズや最終更新日時等の情報を更新し、情報記録モジュール２の不揮発性メモリ２５内に格納されたディレクトリエントリ２０８を上書きする。
（Ｓ１０１４）情報記録モジュール２の不揮発性メモリ２５内に格納された拡張ＦＡＴ（３０１、３０２）に、アクセスモジュール１のＲＡＭ１２上の拡張ＦＡＴ（３０１、３０２）のデータを上書きし、処理を完了する。
【００４０】
このように本発明のファイルデータ書き込み処理手順が従来のファイルデータ書き込み処理手順と異なる主な点は、Ｓ１００６、Ｓ１００９、Ｓ１０１０で説明した処理が追加されている点である。本発明の拡張ＦＡＴ制御部１０４は、通常ＦＡＴエントリと拡張ＦＡＴエントリの両方を扱い、連続領域として管理できるか否かで両ＦＡＴエントリを使い分けている。この拡張ＦＡＴエントリを扱う点が従来のファイルデータ書き込み処理手順とは大きく異なる点であり、この拡張ＦＡＴエントリによりシーク処理を高速化することが可能となる。
【００４１】
次に、シーク処理手順を比較するため、まずは図１１を用いて従来のＦＡＴファイルシステムにおけるシーク処理手順について説明する。
（Ｓ１１０１）シークで実際に移動するサイズを元にシーククラスタ数（ＳＥＥＫ＿ＮＵＭ）を算出する。シーククラスタ数はシーク処理でリンクを追いかける必要があるクラスタ数を意味し、例えばファイル先頭から１０クラスタ分のシークを実施する場合はＳＥＥＫ＿ＮＵＭには“１０”が設定される。またファイル内の現在参照位置よりも前方にシークする場合は、シーク実施後におけるファイル先頭からのオフセットを算出し、クラスタ数に換算することでＳＥＥＫ＿ＮＵＭを算出する。例えば、ファイル先頭から１０クラスタ目の位置に現在参照位置が存在する場合においてファイル前方に２クラスタシークする場合、ファイル先頭から８クラスタ目の位置がシーク実施後のオフセットとなるため、ＳＥＥＫ＿ＮＵＭには“８”が設定される。
（Ｓ１１０２）現在参照クラスタ番号を確認する。ファイル先頭からのシークであれば現在参照クラスタ番号はファイル先頭のクラスタ番号となる。また既にシーク処理やリード・ライト処理などでファイルの任意の位置に現在参照位置が移動している場合は、その位置のクラスタ番号が現在参照クラスタ番号となる。
（Ｓ１１０３）アクセスモジュールのＲＡＭ上に読み出されたＦＡＴ（２０５、２０６）を参照し、現在参照クラスタ番号に対応するＦＡＴエントリの値を取得する。
（Ｓ１１０４）Ｓ１１０３で取得したＦＡＴエントリ値（次リンク先クラスタ番号）を新しい現在参照クラスタ番号として管理する。
（Ｓ１１０５）１クラスタ分のシーク処理が完了したため、ＳＥＥＫ＿ＮＵＭを１減算する。
（Ｓ１１０６）ＳＥＥＫ＿ＮＵＭの値が０以外の場合、Ｓ１１０２に戻り、処理を継続する。また、ＳＥＥＫ＿ＮＵＭの値が０の場合、全てのシーク処理が完了したため、処理を終了する。
【００４２】
すなわち、従来のＦＡＴファイルシステムにおけるシーク処理では１ＦＡＴエントリ毎にＦＡＴ（２０５、２０６）を参照し、次のリンク先のクラスタ番号を取得するという処理をシーククラスタ数分だけループして処理を繰り返すことになる。そのため、シーククラスタ数が大きい場合、ループ回数が膨大になりシーク処理に長時間かかることになる。
【００４３】
次に、図１２を用いて本発明の拡張ＦＡＴ処理部１０４におけるシーク処理手順について説明する。
（Ｓ１２０１）シークで実際に移動するサイズを元にシーククラスタ数（ＳＥＥＫ＿ＮＵＭ）を算出する。シーククラスタ数の算出方法は図１１で説明したものと同じである。
（Ｓ１２０２）現在参照クラスタ番号を確認する。ファイル先頭からのシークであれば現在参照クラスタ番号はファイル先頭のクラスタ番号となる。また既にシーク処理やリード・ライト処理などでファイルの任意の位置に現在参照位置が移動している場合は、その位置のクラスタ番号が現在参照クラスタ番号となる。
（Ｓ１２０３）アクセスモジュール１のＲＡＭ１２上に読み出された拡張ＦＡＴ（３０１、３０２）を参照し、現在参照クラスタ番号に対応するＦＡＴエントリの値を取得する。但し、既にシーク処理等が実施された後で、現在参照クラスタ番号が拡張ＦＡＴエントリの管理する連続領域内のいずれかの領域に存在することが判明している場合、改めて拡張ＦＡＴ（３０１、３０２）を参照することなく、次の処理に進む。この場合、前回の
シーク処理等が実施された時点で、現在参照クラスタ番号が含まれる連続領域を示す拡張ＦＡＴエントリに関する情報がアクセスモジュール１のＲＡＭ１２上に保持されているものとする。
（Ｓ１２０４）Ｓ１２０３で取得したＦＡＴエントリが拡張ＦＡＴエントリであるか確認する。拡張ＦＡＴエントリである場合はＳ１２０５の処理に進み、拡張ＦＡＴエントリでない場合はＳ１２０９の処理に進む。
（Ｓ１２０５）Ｓ１２０４の判定処理において拡張ＦＡＴエントリであると判定した場合、シーク先がＳ１２０３で取得した拡張ＦＡＴエントリが示す連続領域内に存在するか判定する。連続領域内に存在する場合はＳ１２０６の処理に進み、連続領域内に存在しない場合はＳ１２０７の処理に進む。
（Ｓ１２０６）Ｓ１２０５の判定処理においてシーク先が連続領域内に存在すると判定した場合、現在参照クラスタ番号をシーク位置まで更新し、処理を終了する。例えば、拡張ＦＡＴエントリがクラスタ番号１０から２０までの１０クラスタの連続領域を示しており、現在参照クラスタ番号が１０、ＳＥＥＫ＿ＮＵＭが５であった場合を想定する。この場合、拡張ＦＡＴエントリが示す連続領域内にシーク先が存在するため、現在参照クラスタ番号の１０にＳＥＥＫ＿ＮＵＭの５を加算し、現在参照クラスタ番号を１５に更新して処理を終了する。
（Ｓ１２０７）Ｓ１２０５の判定処理においてシーク先が連続領域内に存在しないと判定した場合、現在参照クラスタ番号を拡張ＦＡＴエントリの次リンク先クラスタ番号（ｎｅｘｔ）の値に更新する。例えば、拡張ＦＡＴエントリがクラスタ番号１０から２０までの１０クラスタの連続領域を示し、ｎｅｘｔには３０が設定されており、現在参照クラスタ番号が１０、ＳＥＥＫ＿ＮＵＭが１５であった場合を想定する。この場合、拡張ＦＡＴエントリが示す連続領域内にはシーク先が存在しないため、現在参照クラスタ番号の１０を拡張ＦＡＴエントリのｎｅｘｔに設定されている値である３０に更新する。
（Ｓ１２０８）ＳＥＥＫ＿ＮＵＭから拡張ＦＡＴエントリの連続クラスタ数分減算し、Ｓ１２１１の処理に進む。例えば、拡張ＦＡＴエントリがクラスタ番号１０から２０までの１０クラスタの連続領域を示しており、現在参照クラスタ番号が１０、ＳＥＥＫ＿ＮＵＭが１５であった場合を想定する。この場合、ＳＥＥＫ＿ＮＵＭから連続領域のクラスタ数１０を差し引き、ＳＥＥＫ＿ＮＵＭを５に設定する。但し、現在参照クラスタ番号が連続領域の先頭を示していない場合は、現在参照位置から連続領域終端までのクラスタ数分をＳＥＥＫ＿ＮＵＭから減算する。
（Ｓ１２０９）Ｓ１２０４の判定処理において拡張ＦＡＴエントリではないと判定した場合、Ｓ１２０３で取得したＦＡＴエントリ値（次リンク先クラスタ番号）を新しい現在参照クラスタ番号として管理する。
（Ｓ１２１０）１クラスタ分のシーク処理が完了したため、ＳＥＥＫ＿ＮＵＭを１減算する。
（Ｓ１２１１）ＳＥＥＫ＿ＮＵＭの値が０以外の場合、Ｓ１２０２に戻り、処理を継続する。また、ＳＥＥＫ＿ＮＵＭの値が０の場合、全てのシーク処理が完了したため、処理を終了する。
【００４４】
このように従来のＦＡＴファイルシステムにおけるシーク処理と本発明の拡張ＦＡＴ処理部におけるシーク処理の主な違いは、Ｓ１２０４からＳ１２０８で説明した処理が追加されている点である。この処理により、連続領域が拡張ＦＡＴエントリでまとめて管理されている場合、連続領域分をまとめてシークすることが可能となる。具体的には、従来はＳ１１０５でＳＥＥＫ＿ＮＵＭを１しか減算することが出来なかったのに対し、本発明の方式ではＳ１２０８でＳＥＥＫ＿ＮＵＭを連続領域分まとめて減算することができるため、ループ処理の回数を削減することができ、シーク処理を高速化することが可能となる。
【００４５】
更に、この効果を図１３、図１４の例を用いて説明する。図１３は従来のＦＡＴ（２０５、２０６）においてＦＩＬＥ２．ＴＸＴのファイルを管理した場合の一例を示す図である。同様に図１４は本発明の拡張ＦＡＴ（３０１、３０２）において同じファイルを管理した場合の一例を示す図である。これら２つの図で管理しているファイルのサイズや、ファイルデータ格納領域の配置等は同じにしており、ファイルデータがクラスタ番号２〜１５までと、クラスタ番号２４から３０までの２つの連続領域に格納されている例を示している。
【００４６】
従来のシーク処理手順ではファイルデータが連続領域に格納されているかどうかに依らず常にシーククラスタ数のＦＡＴ（２０５、２０６）参照を伴うループ処理が発生する。図１３の例でファイル先頭から終端までシークする場合、ＳＥＥＫ＿ＮＵＭは２０となり、ループ回数も２０となる。
【００４７】
一方、本発明の拡張ＦＡＴ処理部１０４のシーク処理手順では、ファイルデータが連続領域に格納されている場合にはまとめてシーク処理を実施するため、拡張ＦＡＴ（３０１、３０２）の参照を伴うループ処理回数を削減することが可能となる。図１４の例でファイル先頭から終端までシークする場合、ＳＥＥＫ＿ＮＵＭは２０となるが、ＦＩＬＥ２．ＴＸＴは２つの連続領域から構成されているため、ループ回数は２となる。
【００４８】
このループ回数の差がシーク処理時間に大きく影響するため、本発明の拡張ＦＡＴ処理部１０４の処理によりシーク処理が高速化されることになる。また、本実施の形態の例ではアクセスモジュール１のＲＡＭ１２にＦＡＴ（２０５、２０６）あるいは拡張ＦＡＴ（３０１、３０２）が全て読み出されている場合の例について説明したが、アクセスモジュール１のＲＡＭ１２容量が小さい場合はＦＡＴ（２０５、２０６）あるいは拡張ＦＡＴ（３０１、３０２）の一部しかＲＡＭ１２上に読み出すことができず、キャッシュのように逐次読み替えながら動作する必要がある。この場合、最悪ではループ１回分の処理毎にＦＡＴの読み替え処理が発生し、ループ回数の差による処理時間の違いが顕著になるため、本発明の高速化の効果がより顕著に現れることになる。
【００４９】
以上のように、本発明の情報記録モジュール２の不揮発性メモリ２５はファイルシステムで管理されており、領域管理情報として拡張ＦＡＴ（３０１、３０２）を持つ。また本発明のアクセスモジュール１は、拡張ＦＡＴ（３０１、３０２）を参照し、その中に格納された通常ＦＡＴエントリと拡張ＦＡＴエントリの両方のエントリを使い分けて領域管理を行う拡張ＦＡＴ処理部１０４を含む。この拡張ＦＡＴ処理部１０４における領域管理では、ファイルデータが連続領域に格納されている場合は拡張ＦＡＴエントリを使用し、少量の情報で連続領域をまとめて管理する。これにより、シーク時の処理時間を短縮し、シーク処理を高速化することが可能となる。
【００５０】
更に本発明の拡張ＦＡＴ（３０１、３０２）では領域管理情報を拡張ＦＡＴ（３０１、３０２）で一元管理している。そのため、従来のジャンプテーブルによる高速化手法で必要となる起動時等におけるジャンプテーブルの算出時間が本発明では不要となり、起動時間を短縮することが可能となる。また、領域管理情報を一元管理することにより、ファイルの追記や部分削除等が発生した場合でも拡張ＦＡＴ（３０１、３０２）の情報のみ更新すれば良いため、領域管理情報の整合性維持が容易に行える。
【００５１】
尚、本発明を上記の実施形態に基づいて説明してきたが、本発明は上記の実施形態に限定されないのは勿論である。本発明の趣旨を逸脱しない範囲で実施変更することができる。本発明の実施の形態で記載された数値は一例であり、他の値を使用しても良い。例えば、拡張ＦＡＴエントリのｅｘｔ＿ｓｉｇに０ｘＦＦＦＥを設定する場合について説明したが、拡張ＦＡＴエントリであることを判別することが出来れば良く、その他の方法を用いても良い。また、拡張ＦＡＴエントリが管理する連続領域において、先頭のエントリ部分以外のＦＡＴエントリを使用済みであることを示す０ｘＦＦＦＦに設定する場合について説明した。この値についても特に限定するものではなく、その他の値を用いても良い。
【００５２】
また、拡張ＦＡＴエントリがｅｘｔ＿ｓｉｇ、ｃｏｕｎｔ、ｎｅｘｔの３つのフィールドから構成される場合について説明したが、従来のＦＡＴエントリ管理よりも少ない情報で連続領域を管理できるものであれば良く、その他の構成としても構わない。
【００５３】
また、ＦＡＴエントリが２バイトで構成されるＦＡＴ１６をベースにした例について説明したが、その他のＦＡＴファイルシステムに本発明を適用しても良い。すなわち、ＦＡＴ１２、ＦＡＴ３２などのＦＡＴ型ファイルシステムに適用しても良いし、ＦＡＴファイルシステムとは互換性のないファイルシステムであっても、ＦＡＴのように１つの処理単位の情報を１つのエントリに対応づけて領域管理する方式であれば本発明を適用することが可能である。
【産業上の利用可能性】
【００５４】
本発明に関わる情報記録モジュール２の不揮発性メモリ２５はファイルシステムで管理されており、領域管理情報として拡張ＦＡＴ（３０１、３０２）を持つ。また本発明のアクセスモジュール１は、拡張ＦＡＴ（３０１、３０２）を参照し、領域管理を行う拡張ＦＡＴ処理部１０４を含む。これによりＦＡＴファイルシステムにおいて連続領域をまとめて管理することが可能となり、シーク処理を高速化することが可能となる。このようなアクセスモジュール１は、音楽や静止画、動画などのデジタルコンテンツを取り扱う機器、とりわけ１ファイルのサイズが大きなコンテンツを取り扱う機器に最適であり、ＰＣアプリケーション、オーディオレコーダ、ＤＶＤレコーダ、ＨＤＤレコーダ、ムービー、デジタルスチルカメラ、携帯電話端末等として利用することができる。また、本発明の情報記録モジュール２は、上記デジタルコンテンツなどを格納するメモリカードなどのリムーバブルメディア、あるいは内蔵記録装置等として利用することができる。
【図面の簡単な説明】
【００５５】
【図１】本発明の実施の形態におけるアクセスモジュール、及び情報記録モジュールの構成を示した説明図
【図２】ＦＡＴファイルシステムの構成を示した説明図
【図３】ディレクトリエントリの構成を示した説明図
【図４】ＦＡＴの一例を示した説明図
【図５】本発明の実施の形態における拡張ＦＡＴファイルシステムの構成を示した説明図
【図６】本発明の実施の形態における拡張ＦＡＴエントリの構成を示した説明図
【図７】従来のＦＡＴファイルシステムにおけるファイルデータ書き込み処理を示したフローチャート
【図８】従来のＦＡＴファイルシステムにおけるファイルデータ書き込み前の状態の一例を示した説明図
【図９】従来のＦＡＴファイルシステムにおけるファイルデータ書き込み後の状態の一例を示した説明図
【図１０】本発明の実施の形態におけるファイルデータ書き込み処理を示したフローチャート
【図１１】従来のＦＡＴファイルシステムにおけるシーク処理を示したフローチャート
【図１２】本発明の実施の形態におけるシーク処理を示したフローチャート
【図１３】従来のＦＡＴファイルシステムにおけるファイルデータの配置状態の一例を示した説明図
【図１４】本発明の実施の形態におけるファイルデータの配置状態の一例を示した説明図
【符号の説明】
【００５６】
１  アクセスモジュール
２  情報記録モジュール
１１，２２  ＣＰＵ
１２，２３  ＲＡＭ
１３  情報記録モジュールインタフェース
１４，２４  ＲＯＭ
２１  アクセスモジュールインタフェース
２５  不揮発性メモリ
１０１  アプリケーション制御部
１０２  ファイルシステム制御部
１０３  通常ＦＡＴ処理部
１０４  拡張ＦＡＴ処理部
１０５  情報記録モジュールアクセス部
２０１  ファイルシステム管理情報領域
２０２  ユーザデータ領域
２０３  マスターブートレコード・パーティションテーブル
２０４  パーティションブートセクタ
２０５，２０６  ＦＡＴ
２０７  ルートディレクトリエントリ
２０８  ディレクトリエントリ
３０１，３０２  拡張ＦＡＴ
【図１】
2009205591.tif 000003
【図２】
2009205591.tif 000004
【図３】
2009205591.tif 000005
【図４】
2009205591.tif 000006
【図５】
2009205591.tif 000007
【図６】
2009205591.tif 000008
【図７】
2009205591.tif 000009
【図８】
2009205591.tif 000010
【図９】
2009205591.tif 000011
【図１０】
2009205591.tif 000012
【図１１】
2009205591.tif 000013
【図１２】
2009205591.tif 000014
【図１３】
2009205591.tif 000015
【図１４】
2009205591.tif 000016