(57)【要約】【課題】ホストとストレージデバイス間のデータ転送効率を高めた構成を実現する。【解決手段】ホストはストレージデバイスのメディア記録データに対応するファイルシステム管理情報を利用して読み出しファイルの先頭データが記録された先頭クラスタ番号と、非読み出しファイルの先頭データが記録された先頭クラスタ番号を識別可能としたビットマップデータを生成してストレージデバイスに出力する。ストレージデバイスはビットマップデータを解析して要求ファイルおよび対応したクラスタを判別して、ファイル構成データをメディアから読み出してホストに提供する。本構成により、ホストがコマンド送信を繰り返すことなく複数ファイルの読み出しおよび転送を行うことが可能となる。【選択図】図１６
2010182254.tif 000002
【特許請求の範囲】
【請求項１】
データ記録可能なメディアを有するストレージデバイスに対して、メディア記録データの読み出し要求を出力してデータ読み出しを行う制御部を有し、
前記制御部は、
前記メディア記録データに対応するファイルシステム管理情報を利用して、読み出しファイルの先頭データが記録された先頭クラスタ番号と、非読み出しファイルの先頭データが記録された先頭クラスタ番号を識別可能としたビットマップデータを生成して、前記ストレージデバイスに出力する処理を行う情報処理装置。
【請求項２】
前記制御部は、
前記ファイルシステム管理情報を利用して、前記メディアに記録された全てのファイルの先頭データが記録された先頭クラスタ番号のリストである記録ファイル対応先頭クラスタ番号リストと、
読み出し予定の選択されたファイルの先頭データが記録された先頭クラスタ番号のリストである読み出しファイル対応先頭クラスタ番号リストを生成し、
前記記録ファイル対応先頭クラスタ番号リストと、前記読み出しファイル対応先頭クラスタ番号リストの各エントリの照合処理によって前記ビットマップデータを生成する請求項１に記載の情報処理装置。
【請求項３】
前記制御部は、
前記ビットマップデータに、ビットマップデータの有効性判別情報を含むヘッダ情報を設定した送信用データを生成して前記ストレージデバイスに出力する請求項１に記載の情報処理装置。
【請求項４】
前記制御部は、
ファイルシステム管理情報としてＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ）およびディレクトリエントリを適用して、前記ビットマップデータを生成する請求項１に記載の情報処理装置。
【請求項５】
前記制御部は、
前記ストレージデバイスに対する１回のデータ読み出しコマンドの送信処理を実行して、前記ビットマップデータによって識別される１または複数のファイルの読み出しデータをストレージデバイスから取得する請求項１〜４いずれかに記載の情報処理装置。
【請求項６】
データを記録するメディアと、
前記メディアに対するデータ記録またはデータ読み出し処理を行う制御部を有し、
前記制御部は、
ホストが要求する読み出しファイルの先頭データが記録された先頭クラスタ番号と、非読み出しファイルの先頭データが記録された先頭クラスタ番号を識別可能としたビットマップデータをホストから受信し、受信ビットマップデータとファイルシステム管理情報を適用して、読み出しファイルの記録クラスタを解析してファイル読み出し処理を実行するストレージデバイス。
【請求項７】
前記メディア記録データに対応するファイルシステム管理情報を利用して、読み出しファイルの先頭データが記録された先頭クラスタ番号と、非読み出しファイルの先頭データが記録された先頭クラスタ番号を識別可能としたビットマップデータを生成して、ストレージデバイスに出力するホストと、
前記ビットマップデータをホストから受信し、受信ビットマップデータとファイルシステム管理情報を適用して、読み出しファイルの記録クラスタを解析してファイル読み出し処理を実行するストレージデバイスと、
を有する情報処理システム。
【請求項８】
情報処理装置において実行する情報処理方法であり、
制御部が、メディア記録データに対応するファイルシステム管理情報を利用して、読み出しファイルの先頭データが記録された先頭クラスタ番号と、非読み出しファイルの先頭データが記録された先頭クラスタ番号を識別可能としたビットマップデータを生成して、ストレージデバイスに出力するステップと、
前記制御部が、前記ストレージデバイスにメディア記録データ読み出し要求を出力するステップと、
前記制御部が、前記ストレージデバイスから、前記ビットマップによって識別された読み出しファイルの全データを順次、受信するステップと、
を有する情報処理方法。
【請求項９】
情報処理装置において情報処理を実行させるプログラムであり、
制御部に、メディア記録データに対応するファイルシステム管理情報を利用して、読み出しファイルの先頭データが記録された先頭クラスタ番号と、非読み出しファイルの先頭データが記録された先頭クラスタ番号を識別可能としたビットマップデータを生成させて、ストレージデバイスに出力させるステップと、
前記制御部に、前記ストレージデバイスにメディア記録データ読み出し要求を出力させるステップと、
前記制御部に、前記ストレージデバイスから、前記ビットマップによって識別された読み出しファイルの全データを順次、受信させるステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、および情報処理方法、並びにプログラムに関する。さらに詳細には、例えばストレージデバイスに記録されたデータの読み出し処理を実行する情報処理装置、および情報処理方法、並びにプログラムに関する。
【背景技術】
【０００２】
近年、例えばパーソナルコンピュータ（ＰＣ）やカメラ、あるいはＰＤＡなどのデータ記憶装置としてストレージデバイスが利用されている。ストレージデバイスは、ＰＣ、カメラ、ＰＤＡなどのホストにＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）やＳＡＴＡ（Ｓｅｒｉａｌ  ＡＴＡ）などのインターフェース（Ｉ／Ｆ）によって接続され、ホストとの間でデータ転送を行う。
【０００３】
例えばホストがストレージデバイスからデータ読み出しを行う場合、ホストとストレージデバイス間においてＡＴＡＰＩ（ＡＴＡ  Ａｔｔａｃｈｅｍｅｎｔ  Ｐａｃｋｅｔ  Ｉｎｔｅｒｆａｃｅ）やＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）などの規格で規定されるＲＥＡＤコマンドが使用される。
【０００４】
以下、従来の一般的なホストとストレージデバイス間のデータ転送処理の一例として、ＳＣＳＩ規格のＲＥＡＤ（１０）コマンドを使用した場合の例について説明する。ＳＣＳＩ規格であるＳＢＣ−２（ＳＣＳＩ  Ｂｌｏｃｋ  Ｃｏｍｍａｎｄｓ−２）のＲＥＡＤ（１０）コマンドのフォーマットを図１に示す。ＲＥＡＤコマンド（１０）は、図１に示すように０Ｂｙｔｅ〜９Ｂｙｔｅの計１０Ｂｙｔｅの構造を持つ。
【０００５】
０Ｂｙｔｅ目は命令コード（Ｏｐｅｒａｔｉｏｎ  Ｃｏｄｅ）領域、
２〜５Ｂｙｔｅ目は論理ブロックアドレス（ＬＢＡ：ＬＯＧＩＣＡＬ  ＢＬＯＣＫ  ＡＤＤＲＥＳＳ）領域（以下ＬＢＡ領域と表現する場合がある）、
７〜８Ｂｙｔｅ目は転送長（ＴＲＡＮＳＦＥＲ  ＬＥＮＧＴＨ）領域である。本発明に関連がない領域については説明を省略する。
【０００６】
命令コード領域はコマンドの種別を示す領域である。本例では命令コードが２８ｈであることをもって当該コマンドがＲＥＡＤ（１０）であることを示す。ＬＢＡ領域はホストが要求するデータの先頭の論理ブロックアドレス（ＬＢＡ）を格納する。ストレージデバイスは、コマンドで指定された論理ブロックアドレス（ＬＢＡ）から連続したアドレスのデータを読み出し、順次ホストに転送する。転送長領域は、ホストが要求するデータの総転送長を格納する。ＲＥＡＤ（１０）の転送長の単位は論理的なブロック単位であり、例えば１ブロックが５１２Ｂｙｔｅである場合、１単位が５１２Ｂｙｔｅとなり、転送長×５１２Ｂｙｔｅが、Ｂｙｔｅ単位でのデータ転送長となる。
【０００７】
ホストがＲＥＡＤ（１０）コマンドでストレージデバイスに対しデータの読み出しを要求する場合、まず、ＲＥＡＤ（１０）コマンド内に命令コード、論理ブロックアドレス（ＬＢＡ）、転送長の各パラメータを格納し、ストレージデバイスに転送する。ストレージデバイスは、ホストが送信したコマンドを受信したら、コマンドの命令コード領域を参照して当該コマンドがＲＥＡＤ（１０）であることを判断する。次に、ＬＢＡ領域が示す論理ブロックアドレスからアドレス順にデータを順次読み出し、ホストに送信する。ストレージデバイスは、転送長領域が示す長さのデータを送信し、データ転送を終了する。以上がＲＥＡＤ（１０）コマンドにおけるデータ転送方法の概要である。
【０００８】
ところで、ホストが要求するデータは、ストレージデバイスの論理ブロックアドレス（ＬＢＡ）上に分散して配置されている場合がある。例えば、代表的なファイルシステムにおけるＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ）ファイルシステムを利用した場合のデータ記憶例について図２を参照して説明する。図２は、ストレージデバイスの管理するメモリに対応して設定される論理ブロックアドレスと、記憶データの関係を示す図である。
【０００９】
ＦＡＴファイルシステムでは、図２に示すように一つのファイルが複数の論理ブロックアドレス上に分散して配置される場合があり、データが連続した論理ブロックアドレスに配置されるとは限らない。図２の例では、ファイルＡを構成する実データが領域１、領域２、領域３に分散して配置されている。これをファイルの断片化という。ファイルＢの実データは領域４に格納されている。
【００１０】
また、ホストがストレージデバイスに対して読み出しを要求するファイルが複数である場合も、要求するデータは異なる論理ブロックアドレス上に分散して配置され、連続した論理ブロックアドレス上に配置されるとは限らない。このような場合、ホストは、分散したデータ各々に対応する論理ブロックアドレスを１つずつ適用してその都度読み出しコマンドをストレージデバイスに送信し、所望のデータを取得することになる。
【００１１】
ストレージデバイス上のデータが分散して記憶されると、ホストとストレージデバイス間のデータ転送の速度低下を招くことになる。この原因について、図３を参照して説明する。図３は、ホストがストレージデバイスからのデータ読み出しを行う場合のシーケンスを示す図である。
【００１２】
図３のシーケンス図は、図２に示す領域１〜３に分割して記録されたファイルＡを読み出す場合の処理シーケンスを示している。
まず、ホストは、ステップＳ１１において、図２に示す領域１への読み出しを要求する読み出しコマンドをストレージデバイスに送信する。
ストレージデバイスはコマンドを受信すると、ステップＳ１２において、ＬＢＡ（論理ブロックアドレス）領域からホストが要求する論理ブロックアドレスを取得して、論理ブロックアドレスによって指定されたデータ、すなわち領域１のデータの読み出しを開始する。
次に、ストレージデバイスは、ステップＳ１３において、領域１から読み出したデータを順次ホストにデータを転送する。
【００１３】
次に、ホストは、要求した領域１のデータの受信終了後、ステップＳ１４において、次の領域２への読み出しを要求する読み出しコマンドをストレージデバイスに送信する。
ストレージデバイスはコマンドを受信すると、ステップＳ１５において、領域２のデータの読み出しを開始し、ステップＳ１６において、領域２から読み出したデータを順次ホストにデータを転送する。
【００１４】
さらに、ホストは、要求した領域２のデータの受信終了後、ステップＳ１７において、次の領域３への読み出しを要求する読み出しコマンドをストレージデバイスに送信する。
ストレージデバイスはコマンドを受信すると、ステップＳ１８において、領域３のデータの読み出しを開始し、ステップＳ１９において、領域３から読み出したデータを順次ホストにデータを転送する。
【００１５】
このように、ホストは読み出しファイルが格納された複数の分散領域の全領域について、その都度、領域対応の論理ブロックアドレス（ＬＢＡ）を設定した読み出しコマンドを生成して送信することが必要となる。ストレージデバイスも、ホストからの複数のコマンド各々に対して、各領域からデータ読み出しを行って、読み出したデータを、順次ホストに返す処理を行うことになる。この場合、ストレージデバイスは、各読み出しコマンドに対して最後のデータ送信が終了してから、次の読み出しコマンドが来るまでの間は、処理を行わない、すなわち無駄な時間が発生する。図３に示す期間Ａ、期間Ｂが無駄な時間となる。
【００１６】
またストレージデバイスは、ホストからの次の読み出しコマンドを受信してはじめてホストが要求する論理ブロックアドレスを知り、実際のメディアへの読み出しを開始するため、コマンド受信後すぐにデータをホストに返すことができない。これもデータ転送速度の低下の原因となる。
【００１７】
さらに、分散した論理ブロックアドレスに対してその都度読み出しコマンドが送信されるということは、ストレージデバイス側で、コマンドの受信処理、及びコマンド内容の解析処理がその都度必要となり、それらの処理に時間がかかる。また、例えばＵＳＢのバルクオンリートランスポート（ＢｕｌｋＯｎｌｙ  Ｔｒａｎｓｐｏｒｔ）などの一般的なコマンドのやり取りをつかさどるネットワークトランスポート層では、ストレージデバイスの状態を通知するためのデータ転送が行われることがあり、これらの処理もデータ転送の速度低下の原因となる。
【００１８】
次に、以上に述べたデータ転送の速度低下に対する対策を開示した従来技術について説明する。まず特許文献１（特開２００６−２７７７３７号公報）は、ＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ）ファイルシステムにおけるファイル管理情報を利用した構成を開示している。ファイル管理情報には、１つのファイルの構成データを記録した論理ブロックアドレス（ＬＢＡ）の連鎖情報（クラスタチェーン情報）が記述されている。この情報を利用する構成である。
【００１９】
すなわち、ストレージデバイスの制御部は、分散記録されているファイルの複数の分散位置各々に対応する論理ブロックアドレスを、ファイル管理情報のＬＢＡ連鎖情報を参照することであらかじめ取得する。ストレージデバイスは、この取得情報を適用して、ホストから最後に受信した読み出しコマンドの論理ブロックアドレスの次にホストが要求するデータの論理ブロックアドレスを予測する。この処理によって、効率的な読み出し処理を行うものである。
【００２０】
しかし、この方法の問題点は、ストレージデバイス側で予測したアドレスが必ず正しいアドレスであることを保証するものでなないことである。すなわち、ホストは、突然、別のファイルの読み出し処理を開始することもあり、この場合には、ストレージデバイス側の予測したアドレスは利用できない。このように、予測が外れた場合には、ストレージデバイスのメディア読み出し処理が停止し、さらに正しい論理ブロックアドレスでのメディアの読み出し処理のやり直しを行う必要が発生する。このような事態が発生すると、かえってホストのデータ取得までの時間が大幅に遅延してしまうという問題を生じさせる。
【００２１】
また、特許文献１に示す論理ブロックアドレスの予測方法は、ファイルシステムの管理情報における分散化された論理アドレスの結合情報から予測するものであるため、複数のファイルに対する読み出しコマンドに対しては有効ではないという欠点がある。
【００２２】
また、特許文献２（特開２００８−２１０２２６号公報）は、拡張したＲＥＡＤコマンドを利用して、１つのコマンドのＣＤＢ（Ｃｏｍｍａｎｄ  Ｄｅｓｃｒｉｐｔｏｒ  Ｂｌｏｃｋ）の中で複数の論理ブロックアドレスおよび転送長を指定し、擬似的に複数のＲＥＡＤコマンドを１回のコマンドで送信する方法を開示している。
【００２３】
この方法では、ストレージデバイスはあらかじめホストが要求するデータに対応する複数の論理ブロックアドレスを一括して知ることができる。しかし、前述のＡＴＡＰＩやＳＣＳＩなどの代表的なコマンドの規格、および各種のトランスポート層の規格などに従った実装を行う場合、１度に指定できる論理ブロックアドレスおよび転送長の数が限られる。例えばＵＳＢのバルクオンリートランスポートにおいては、コマンドの長さは最大１６Ｂｙｔｅとなっている。これらの規格に従わない場合は独自規格となり、ホストのデバイスドライバ層を独自実装となるため、ホストのアプリケーション開発において、汎用性を損なうという欠点がある。
【００２４】
さらに上述の特許文献２の構成は、１度のコマンドで送信する論理ブロックアドレス（ＬＢＡ）とデータ転送長の数が多い場合に、ストレージデバイス側でコマンドのデータを保存するためのメモリを多く確保しなければならないという欠点がある。例えば、１００００個の論理ブロックアドレスとデータ転送長を送る構成とする場合には、１つのＬＢＡ＝８Ｂｙｔｅとしてストレージデバイス側は８００００Ｂｙｔｅを受信し格納するメモリ領域を確保しなければならない。これは一般的な組み込み機器では現実的ではない。その結果、前述の拡張したＲＥＡＤコマンドを何度かにわけて送信することになり、発行されるコマンドの数を少なくするという点において、効果が薄いという欠点がある。
【先行技術文献】
【特許文献】
【００２５】
【特許文献１】特開２００６−２７７７３７号公報
【特許文献２】特開２００８−２１０２２６号公報
【発明の概要】
【発明が解決しようとする課題】
【００２６】
本発明は、例えば上述の問題点に鑑みてなされたものであり、ホストとストレージデバイス間のデータ転送処理の効率化を実現する情報処理装置、および情報処理方法、並びにプログラムを提供することを目的とする。
【課題を解決するための手段】
【００２７】
本発明の第１の側面は、
データ記録可能なメディアを有するストレージデバイスに対して、メディア記録データの読み出し要求を出力してデータ読み出しを行う制御部を有し、
前記制御部は、
前記メディア記録データに対応するファイルシステム管理情報を利用して、読み出しファイルの先頭データが記録された先頭クラスタ番号と、非読み出しファイルの先頭データが記録された先頭クラスタ番号を識別可能としたビットマップデータを生成して、前記ストレージデバイスに出力する処理を行う情報処理装置にある。
【００２８】
さらに、本発明の情報処理装置の一実施態様において、前記制御部は、前記ファイルシステム管理情報を利用して、前記メディアに記録された全てのファイルの先頭データが記録された先頭クラスタ番号のリストである記録ファイル対応先頭クラスタ番号リストと、読み出し予定の選択されたファイルの先頭データが記録された先頭クラスタ番号のリストである読み出しファイル対応先頭クラスタ番号リストを生成し、前記記録ファイル対応先頭クラスタ番号リストと、前記読み出しファイル対応先頭クラスタ番号リストの各エントリの照合処理によって前記ビットマップデータを生成する。
【００２９】
さらに、本発明の情報処理装置の一実施態様において、前記制御部は、前記ビットマップデータに、ビットマップデータの有効性判別情報を含むヘッダ情報を設定した送信用データを生成して前記ストレージデバイスに出力する。
【００３０】
さらに、本発明の情報処理装置の一実施態様において、前記制御部は、ファイルシステム管理情報としてＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ）およびディレクトリエントリを適用して、前記ビットマップデータを生成する。
【００３１】
さらに、本発明の情報処理装置の一実施態様において、前記制御部は、前記ストレージデバイスに対する１回のデータ読み出しコマンドの送信処理を実行して、前記ビットマップデータによって識別される１または複数のファイルの読み出しデータをストレージデバイスから取得する。
【００３２】
さらに、本発明の第２の側面は、
データを記録するメディアと、
前記メディアに対するデータ記録またはデータ読み出し処理を行う制御部を有し、
前記制御部は、
ホストが要求する読み出しファイルの先頭データが記録された先頭クラスタ番号と、非読み出しファイルの先頭データが記録された先頭クラスタ番号を識別可能としたビットマップデータをホストから受信し、受信ビットマップデータとファイルシステム管理情報を適用して、読み出しファイルの記録クラスタを解析してファイル読み出し処理を実行するストレージデバイスにある。
【００３３】
さらに、本発明の第３の側面は、
前記メディア記録データに対応するファイルシステム管理情報を利用して、読み出しファイルの先頭データが記録された先頭クラスタ番号と、非読み出しファイルの先頭データが記録された先頭クラスタ番号を識別可能としたビットマップデータを生成して、ストレージデバイスに出力するホストと、
前記ビットマップデータをホストから受信し、受信ビットマップデータとファイルシステム管理情報を適用して、読み出しファイルの記録クラスタを解析してファイル読み出し処理を実行するストレージデバイスと、
を有する情報処理システムにある。
【００３４】
さらに、本発明の第４の側面は、
情報処理装置において実行する情報処理方法であり、
制御部が、メディア記録データに対応するファイルシステム管理情報を利用して、読み出しファイルの先頭データが記録された先頭クラスタ番号と、非読み出しファイルの先頭データが記録された先頭クラスタ番号を識別可能としたビットマップデータを生成して、ストレージデバイスに出力するステップと、
前記制御部が、前記ストレージデバイスにメディア記録データ読み出し要求を出力するステップと、
前記制御部が、前記ストレージデバイスから、前記ビットマップによって識別された読み出しファイルの全データを順次、受信するステップと、
を有する情報処理方法にある。
【００３５】
さらに、本発明の第５の側面は、
情報処理装置において情報処理を実行させるプログラムであり、
制御部に、メディア記録データに対応するファイルシステム管理情報を利用して、読み出しファイルの先頭データが記録された先頭クラスタ番号と、非読み出しファイルの先頭データが記録された先頭クラスタ番号を識別可能としたビットマップデータを生成させて、ストレージデバイスに出力させるステップと、
前記制御部に、前記ストレージデバイスにメディア記録データ読み出し要求を出力させるステップと、
前記制御部に、前記ストレージデバイスから、前記ビットマップによって識別された読み出しファイルの全データを順次、受信させるステップと、
を実行させるプログラムにある。
【００３６】
なお、本発明のプログラムは、例えば、様々なプログラム・コードを実行可能な情報処理装置やコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体によって提供可能なプログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、情報処理装置やコンピュータ・システム上でプログラムに応じた処理が実現される。
【００３７】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【００３８】
本発明の一実施例の構成によれば、ホストはストレージデバイスのメディア記録データに対応するファイルシステム管理情報を利用して読み出しファイルの先頭データが記録された先頭クラスタ番号と、非読み出しファイルの先頭データが記録された先頭クラスタ番号を識別可能としたビットマップデータを生成してストレージデバイスに出力する。ストレージデバイスはビットマップデータを解析して要求ファイルおよび対応したクラスタを判別して、ファイル構成データをメディアから読み出してホストに提供する。本構成により、ホストがコマンド送信を繰り返すことなく複数ファイルの読み出しおよび転送を行うことが可能となる。
【図面の簡単な説明】
【００３９】
【図１】ＳＣＳＩ規格であるＳＢＣ−２（ＳＣＳＩ  Ｂｌｏｃｋ  Ｃｏｍｍａｎｄｓ−２）のＲＥＡＤ（１０）コマンドのフォーマットについて説明する図である。
【図２】ＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ）ファイルシステムを利用した場合のデータ記憶例について説明する図である。
【図３】従来のデータ読み取り処理におけるホストとストレージデバイス間のデータ処理シーケンスについて説明する図である。
【図４】本発明の情報処理装置であるデジタルカメラの構成例について説明する図である。
【図５】ＦＡＴ１６およびＦＡＴ３２でフォーマットした場合のデータ構造について説明する図である。
【図６】マスターブートレコード（ＭＢＲ）のデータ構成について説明する図である。
【図７】ディレクトリエントリの情報構造を説明する図である。
【図８】一般的なファイルアロケーションテーブル（ＦＡＴ）のデータ構成例について説明する図である。
【図９】ストレージデバイスのメディアに記録されるファイルの記録例について説明する図である。
【図１０】記録ファイル対応先頭クラスタ番号リストのデータ構成例について説明する図である。
【図１１】読み出しファイル対応先頭クラスタ番号リストのデータ構成例について説明する図である。
【図１２】ビットマップデータのデータ構成例について説明する図である。
【図１３】ビットマップデータを格納したビットマップデータ送信用データのデータ構成例について説明する図である。
【図１４】ホストの実行する処理シーケンスについて説明するフローチャートを示す図である。
【図１５】ストレージデバイスホストの実行する処理シーケンスについて説明するフローチャートを示す図である。
【図１６】ホストとストレージデバイス間で実行する通信処理シーケンスについて説明するシーケンス図である。
【発明を実施するための形態】
【００４０】
以下、図面を参照しながら本発明の実施形態に係る情報処理装置、および情報処理方法、並びにプログラムの詳細について説明する。
【００４１】
以下では、本発明について、以下の項目に従って順次説明する。
（１）本発明の情報処理装置の一例であるデジタルカメラの構成例
（２）ファイルシステム管理情報の概要
（３）本発明のデータ転送処理に利用するビットマップデータ等の情報について
（４）ホストおよびストレージデバイスの処理シーケンス
【００４２】
［（１）本発明の情報処理装置の一例であるデジタルカメラの構成例］
本発明の情報処理装置は、例えばデジタルカメラ、ＰＣ、ＰＤＡなどの情報処理装置であり、ストレージデバイスを適用したデータ書き込みやデータ読み出しを行う情報処理装置である。まず、図４を参照して、発明の情報処理装置の一例であるデジタルカメラの構成例について説明する。
【００４３】
図４に示すように、本発明の一実施例である情報処理装置（デジタルカメラ）１００は、カメラ部１１０と、カメラＤＳＰ（Digital Signal Processor）１２０と、インターフェース（Ｉ／Ｆ）１４０、制御部１５０を有する。さらに、操作部１６０と、ＬＣＤ（Liquid Crystal Display）コントローラ１７０と、液晶ディスプレイやビューファインダに対応するＬＣＤ１８１，１８２と、外部インターフェース（外部Ｉ／Ｆ）１９０、および内部メモリ１９５を備える。さらに、撮影画像の記憶手段としてストレージデバイス（例えばメモリカード）１４５がインターフェース１４０を介して接続されている。
【００４４】
カメラ部１１０は、図４に示すように、光学ブロック１１１、ＣＣＤ（Charge Coupled Device）１１２、前処理回路１１３、光学ブロック用ドライバ１１４、ＣＣＤ用ドライバ１１５、タイミング生成回路１１６を備えたものである。ここで、光学ブロック１１１は、レンズ、フォーカス機構、シャッター機構、絞り（アイリス）機構などを備えている。
【００４５】
また、制御部１５０は、ＣＰＵ（Central Processing Unit）１５１、フラッシュＲＯＭ（Read Only Memory）１５３、時計回路１５４が、システムバス１５５を通じて接続されて構成されたマイクロコンピュータであり、装置の各部を制御する。フラッシュＲＯＭ１５３は、ＣＰＵ１５１において実行する種々のプログラムや、処理に必要になるデータなどが記憶されたものである。また、時計回路１５４は、現在年月日、現在曜日、現在時刻を提供することができるとともに、撮影日時などを提供するなどのことができるものである。
【００４６】
内部メモリ１９５は、ＲＡＭ（Random Access Memory）によって構成され、撮影画像データの一覧表示に適用する画像データの記憶領域として利用される。
【００４７】
画像の撮影時においては、光学ブロック用ドライバ１１４は、制御部１５０からの制御に応じて、光学ブロック１１１を動作させるようにする駆動信号を形成し、これを光学ブロック１１１に供給して、光学ブロック１１１を動作させる。光学ブロック１１１は、ドライバ１１４からの駆動信号に応じて、フォーカス機構、シャッター機構、絞り機構が制御され、被写体の画像を取り込んで、これをＣＣＤ１１２に対して提供する。
【００４８】
ＣＣＤ１１２は、光学ブロック１１１からの画像を光電変換して出力する。ＣＣＤドライバ１１５からの駆動信号に応じて動作し、光学ブロック１１１からの被写体の画像を取り込むとともに、制御部１５０によって制御されるタイミング生成回路１１６からのタイミング信号に基づいて、取り込んだ被写体の画像（画像情報）を電気信号として前処理回路１１３に供給する。
【００４９】
なお、タイミング生成回路１１６は、制御部１５０からの制御に応じて、所定のタイミングを提供するタイミング信号を形成する。また、ＣＣＤドライバ１１５は、タイミング生成回路１１６からのタイミング信号に基づいて、ＣＣＤ１１２に供給する駆動信号を形成する。
【００５０】
前処理回路１１３は、これに供給された電気信号の画像情報に対して、ＣＤＳ（Correlated Double Sampling）処理を行って、Ｓ／Ｎ比を良好に保つようにするとともに、ＡＧＣ（Automatic Gain Control）処理を行って、利得を制御し、そして、Ａ／Ｄ（Analog/Digital）変換を行って、デジタル信号とされた画像データを形成する。
【００５１】
前処理回路１１３においてデジタル信号とされた画像データは、ＤＳＰ１２０に供給される。ＤＳＰ１２０は、これに供給された画像データに対して、ＡＦ（Auto Focus）、ＡＥ（Auto Exposure）、ＡＷＢ（Auto White Balance）などのカメラ信号処理を施す。このようにして種々の調整がされた画像データは、所定の圧縮方式でデータ圧縮され、システムバス１５５、Ｉ／Ｆ１４０を通じて、ストレージデバイス１４５に供給され、ストレージデバイス１４５にファイルとして記録される。ストレージデバイス１４５は、例えばフラッシュメモリ、光学メディア、ハードディスクなどの記録メディアを有し、さらに制御部（ホスト）１５０からのコマンド解釈処理、メディアに対するデータ記録やデータ読み出し処理の制御を行う制御部を有するデバイスである。
【００５２】
ストレージデバイス１４５に記録された画像データは、タッチパネルやコントロールキーなどからなる操作部１６０を通じて受け付けたユーザからの操作入力に応じて読み出される。読み出された画像データがＩ／Ｆ１４０を通じてストレージデバイス１４５から出力され制御部（ホスト）１５０を介してＤＳＰ１２０に供給される。
【００５３】
ＤＳＰ１２０は、ストレージデバイス１４５から読み出され、Ｉ／Ｆ１４０を通じて供給されたデータ圧縮されている画像データの解凍処理（伸張処理）を行い、解凍後の画像データをシステムバス１５５を通じて、ＬＣＤコントローラ１７０に供給する。ＬＣＤコントローラ１７０は、供給された画像データからＬＣＤ１８１，１８２に供給する画像信号を形成し、これをＬＣＤ１８１，１８２に供給する。これにより、ストレージデバイス１４５に記録されている画像データに応じた画像が、ＬＣＤ１８１，１８２の表示画面に表示される。
【００５４】
また、図４に示す情報処理装置（カメラ）は、外部Ｉ／Ｆ１９０を通じて、例えば外部のパーソナルコンピュータと接続して、パーソナルコンピュータから画像データの供給を受けて、これを自機に装填されたストレージデバイス１４５に記録することができる。また、自機に装填されたストレージデバイス１４５に記録されている画像データを外部のパーソナルコンピュータ等に供給したりすることもできる。
【００５５】
また、外部Ｉ／Ｆ１９０に通信モジュールを接続することにより、例えば、インターネットなどのネットワークに接続して、ネットワークを通じて種々の画像データやその他の情報を取得し、自機に装填されたストレージデバイス１４５に記録することが可能である。あるいは、自機に装填されたストレージデバイスに記録されているデータを、ネットワークを通じて目的とする相手先に送信したりすることもできる。
【００５６】
また、外部のパーソナルコンピュータやネットワークを通じて取得し、ストレージデバイスに記録した画像データなどの情報についても、読み出して再生し、ＬＣＤ１８１，１８２に表示してユーザが閲覧することも可能である。
【００５７】
なお、外部Ｉ／Ｆ１９０は、例えば、ＩＥＥＥ（Institute of Electrical and Electronics Engineers）１３９４、ＵＳＢ（Universal Serial Bus）などの有線用インターフェースとして設けることも可能であるし、光や電波による無線インターフェースとして設けることも可能である。すなわち、外部Ｉ／Ｆ１９０は、有線、無線のいずれのインターフェースであってもよい。
【００５８】
図４に示すデジタルカメラ１００では、例えば撮像／収音により得られるデータに基づいて制御部（ホスト）１５０等の処理によって生成したＡＶファイルを、ＨＤＤや、各種光学ディスク媒体、半導体記憶装置などのメディアを有するストレージデバイス１４５に出力して、ストレージデバイス１４５内のメディアに記録する。ホスト１５０とストレージデバイス１４５はインターフェース１４０を介したデータ転送を実行して、データ記録やデータ読み出しを行う。先に説明したように、ストレージデバイス１４５は、図には示していないが制御部を有し、制御部（ホスト）１５０からのコマンドを解釈し、コマンド解釈に基づくデータ書き込みやデータ読み出し処理を実行する。
【００５９】
ストレージデバイス１４５内のメディアに記憶されるファイルは、情報処理装置の利用するファイルシステムによって規定されるフォーマットに従って管理される。以下において説明する実施例では、ストレージデバイス１４５に記録する記録データは、ＦＡＴファイルシステムにより管理されるものとする。
【００６０】
［（２）ファイルシステム管理情報の概要］
次に、ファイルシステム管理情報について説明する。本発明の情報処理装置のホストは、ストレージデバイスのメディア記録データの読み出し処理に際して、メディア記録データに対応するファイルシステム管理情報を利用してビットマップデータを生成し、これを利用したデータ読み出し処理を行う。ビットマップデータは、読み出しファイルの先頭データが記録された先頭クラスタ番号と、読み出し対象としない非読み出しファイルの先頭データの先頭クラスタ番号を識別可能としたデータである。なお、ビットマップデータの詳細については後段で詳細に説明する。
【００６１】
以下では、ビットマップデータの生成に適用するファイルシステム管理情報について説明する。ファイルシステム管理情報は、メディアに記録されたデータの管理情報である。。ファイルシステム管理情報もメディアの一部領域に記録される。ファイルシステム管理情報は、例えば、ＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ）やディレクトリエントリなどの情報によって構成される。
【００６２】
例えばデジタルビデオカメラやＰＣ、その他の情報処理機器において、フラッシュメモリや光学ディスク、あるいはハードディスクなどのメディアに対する情報記録を行なう場合、記録データファイルの管理情報、例えばＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ）を適用した処理が行なわれる。
【００６３】
ＦＡＴには、例えばＦＡＴ１６、ＦＡＴ３２などがあり、これらのファイルシステムは、メディア（情報記録媒体）に対して記録されるデータファイル各々についての記録位置情報、記録位置連鎖情報（クラスタチェーン情報）等を管理する。なお、ＦＡＴ１６／３２の詳細については、例えば、「Ｍｉｃｒｏｓｏｆｔ  Ｅｘｔｅｎｓｉｂｌｅ  Ｆｉｒｍｗａｒｅ  Ｉｎｉｔｉａｔｉｖｅ  ＦＡＴ３２  Ｆｉｌｅ  Ｓｙｓｔｅｍ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ」などに説明がある。
【００６４】
図５を参照して、ＦＡＴ１６およびＦＡＴ３２でフォーマットした場合のデータ構造について説明する。図５（ａ）がＦＡＴ１６、（ｂ）がＦＡＴ３２によるフォーマットを示している。
【００６５】
ＦＡＴ１６のデータ構造は、図５（ａ）に示すように、先頭セクタ（ＬＢＡ＝０）から順に、マスターブートレコード（ＭＢＲ）、パーティションブートレコード（ＰＢＲ）に続き、ファイルアロケーションテーブル１（ＦＡＴ１）と、ファイルアロケーションテーブル２（ＦＡＴ２）が記録され、さらにルートディレクトリエントリに続いて、データ領域としてのクラスタが複数設定される。
【００６６】
ＦＡＴ３２のデータ構造は、図５（ｂ）に示すように、先頭セクタ（ＬＢＡ＝０）から順に、マスターブートレコード（ＭＢＲ）、パーティションブートレコード（ＰＢＲ）、ファイルシステム情報（ＦＳｉｎｆｏ）に続いて、ファイルアロケーションテーブル１（ＦＡＴ１）と、ファイルアロケーションテーブル２（ＦＡＴ２）が記録され、その後、データ領域としてのクラスタが複数設定される。
【００６７】
マスターブートレコード（ＭＢＲ）は、図６（ａ）に示すように、起動情報と、パーティション情報、すなわち、各パーティションの開始アドレスとサイズ情報を含むパーティションテーブルを保持している。なお、図５に示すＦＡＴ１６，ＦＡＴ３２のデータ構造では、パーティションを１つのみとした例を示しているが、ハードディスクなどの記録媒体を複数のパーティションに区切って管理することが可能であり、この場合には、図６に示すように、複数のパーティションの各パーティションの開始アドレスとサイズ情報が含まれるパーティションテーブルが設定される。
【００６８】
起動時においては、まず、ＭＢＲの起動コード領域から起動コード（プログラム）が読み出される。この読み出されたＭＢＲの起動コードは、図６（ａ）に示す起動コードの直後に形成されるパーティションテーブル領域のパーティションテーブルを参照し、目的とするパーティションのブートセクタの情報を読み出し、このブートセクタのコード（プログラム）によって、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が起動される。
【００６９】
パーティションテーブルは複数個（例えば４個）設けることができるようにされる。各パーティションテーブルは、上述したように、例えばハードディスクの記録領域を分割して形成される各パーティション領域の位置（開始アドレス）と大きさ（パーティションサイズ）を示す情報を保持する。なお、パーティションテーブル領域に続く２バイト（０Ｅ，０Ｆ）には、パーティションテーブルに対する署名が付与される。
【００７０】
１６バイト（１２８ビット）データ長のパーティションテーブルのデータ構造を図６（ｂ）に示す。０バイト目から７バイト目までの８バイト分のエリアがＣＨＳ方式でアドレスを指定する場合に用いる情報の格納エリアであり、８バイト目から１５バイト目までの８バイト分のエリアがＬＢＡ方式でアドレスを指定する場合に用いる情報の格納エリアである。
【００７１】
ＣＨＳ方式は、シリンダ（Ｃｙｌｉｎｄｅｒ）、ヘッド（Ｈｅａｄ）、セクタ（Ｓｅｃｔｏｒ）の３つのパラメータを１組として用いて、記録媒体（ハードディスク）上のアドレス（位置）を指定するようにするものである。また、ＬＢＡ方式は、ハードディスクの記録領域上のアクセス可能な単位ブロック（例えば、１セクタ単位）それぞれについて、例えば０番から順番に数字（ブロックアドレス（論理アドレス））を割り当てておき、その数字を指定することにより、ハードディスクの記録領域上のアドレス（位置）を指定するようにするものである。
【００７２】
図６（ｂ）に示すように、ＣＨＳ方式でアクセスする場合に用いる情報の格納エリアは、０バイト目がアクティブフラグ情報（以下、単にフラグ情報という。）の格納エリア、１バイト目から３バイト目までの３バイト分がＣＨＳ方式でアクセスする場合に用いる開始セクタ情報の格納アリア、４バイト目がパーティションタイプ情報（以下、単にタイプ情報という。）の格納エリア、５バイト目から７バイト目までの３バイト分がＣＨＳ方式でアクセスする場合に用いる終了セクタ情報の格納エリアである。
【００７３】
また、図６（ｂ）に示すように、ＬＢＡ方式でアクセスする場合に用いる情報の格納エリアは、８バイト目から１１バイト目までの４バイト分がＬＢＡ方式で用いられる開始セクタ情報の格納エリア、１２バイト目から１５バイト目までの４バイト分がＬＢＡ方式で用いられるパーティションサイズの格納エリアである。
【００７４】
なお、ＣＨＳ方式は、ハードディスクの物理的構造をそのまま流用しており、シリンダ、ヘッド、セクタというアドレス指定のためのパラメータが３つあることから、ソフトウェア的な処理が複雑になってしまう。これに対し、ＬＢＡ方式の場合には、ブロックアドレスという単一のパラメータで指定するので、アクセス時のアドレス指定が極めて簡単である。このため、ハードディスクにおけるアドレス指定方式としてはＬＢＡ方式が主流になっており、その他の記録媒体、例えば、いわゆるリムーバブルメディアとして広く用いられるようになってきている種々のメモリカードなどにおいても、ＬＢＡ方式でアドレス指定ができるものが多くなってきている。
【００７５】
情報記録媒体に記録される各ファイルには、ファイル名や記録日時などのファイル管理情報が設定される。図７に各パーティションに設けられるディレクトリに格納される情報であって、ファイル毎に形成されるファイル管理情報であるディレクトリエントリの情報構造を示す。このディレクトリエントリは、パーティション内にファイルが形成された場合に、その形成されたファイルに応じてディレクトリに形成されるファイル管理情報であり、形成されたファイルの詳細情報を管理するものである。
【００７６】
各ファイルに対応するファイル管理情報としてのディレクトリエントリは、図７に示すように、名前（ファイル名）欄、拡張名欄、属性欄、予約欄、作成時刻欄、作成日欄、最終アクセス日付欄、先頭クラスタ番号の指示情報（Ｈｉｇｈ）欄、記録時刻欄、記録日付欄、先頭クラスタ番号の指示情報（Ｌｏｗ）欄、ファイルサイズ欄を備え、それぞれ対応する情報、すなわち、ファイル名、拡張名、属性、作成時刻、作成日、最終アクセス日付、先頭クラスタ番号（Ｈｉｇｈ）、記録時刻、記録日付、先頭クラスタ番号（Ｌｏｗ）、ファイルサイズを管理する。このディレクトリエントリの情報を用いることにより、ファイル名によって特定されるファイルは、（１）どのような属性のものであり、（２）開始クラスタはどこで、（３）どの位の大きさのファイルであり、（４）いつ作成され、（５）最終アクセスはいつで、（６）データの記録はいつ行われたか等について管理することができる。
【００７７】
開始クラスタ番号は、ファイルのデータ記録が開始されたパーティションのデータ領域のクラスタ単位の記憶領域を特定する情報である。換言すれば、開始クラスタ番号は、当該パーティションのデータ領域をクラスタ単位に分割した各記憶領域の内の何番目の記憶領域から当該ファイルのデータの記録が行われたかを示している。そして、この例の場合には、図７に示すように、先頭クラスタ番号は、上位側（ｈｉｇｈ側）の２バイトと、下位側（Ｌｏｗ側）の２バイトとに分けて管理される。
【００７８】
クラスタは、図５に示すように、データ領域に含まれ、ＦＡＴにおけるデータを管理できる最小単位であり、複数のセクタをまとめた、１ファイル当たりの最小記録単位を意味する。１クラスタは、セクタ（ハードディスクの場合、セクタサイズ＝５１２バイト）をｎ個（ｎ＝１，２，４，・・・６４，１２８）集めた構成になる。ハードディスクの最小単位であるセクタは、ファイルを管理するための単位としては小さすぎるので、複数のセクタをまとめたクラスタという単位領域を用いることによって、ファイルの管理が容易となるようにしている。クラスタの具体的な大きさは、例えば、ＦＡＴ１６の場合には３２キロバイト、ＦＡＴ３２の場合には４キロバイトである。
【００７９】
図５に示すＦＡＴのデータ構造には、図６を参照して説明したマスターブートレコード（ＭＢＲ）に続いて、パーティションに対応する起動コードを含むパーティションブートレコード（ＰＢＲ）が設定され、その後、ファイルアロケーションテーブル１（ＦＡＴ１）と、ファイルアロケーションテーブル２（ＦＡＴ２）が格納される。
【００８０】
ファイルアロケーションテーブル２（ＦＡＴ２）は、ファイルアロケーションテーブル１（ＦＡＴ１）の予備データとして利用される。すなわち、ファイルアロケーションテーブル２（ＦＡＴ２）には、ファイルアロケーションテーブル１（ＦＡＴ１）のコピーデータを格納している。
【００８１】
一般的なファイルアロケーションテーブル（ＦＡＴ）のデータ構成例について、図８を参照して説明する。ファイルアロケーションテーブル（ＦＡＴ）は、メディア（情報記録媒体）に対して記録されるデータファイル各々についての記録位置情報、記録位置連鎖情報（クラスタチェーン情報）を管理するテーブルである。
【００８２】
前述したように、各データファイルの構成データは、１つ以上のクラスタに分散されて情報記録媒体に記録される。ファイルアロケーションテーブル（ＦＡＴ）は、各ファイルの構成データを格納したクラスタのクラスタ番号の連鎖情報（クラスタチェーン情報）を格納している。
【００８３】
図８に示すＦＡＴは、２つに分割して示してある。２重線で示す項目は、インデックスであり、データエントリとして、
［０ｘ００００００００］〜［０ｘ０００００００Ｆ］
［０ｘ００００００１０］〜［０ｘ００００００１Ｆ］
［０ｘ００００００２０］〜［０ｘ００００００２Ｆ］
［０ｘ００００００３０］〜［０ｘ００００００３Ｆ］
のクラスタ番号を示している。なお、図に示すテーブルでは［０ｘ］を省略しているが、上記［０ｘ］は後続の８桁の０〜Ｆの数値で示されるクラスタ番号が１６進数表記であることを示している。
【００８４】
各ファイルの構成データを格納したクラスタ番号の位置に、ファイル構成データの次のデータを格納したクラスタ番号が記録され、最終クラスタ番号の位置にはＥＯＦ（エンドオブファイル）を示すコード［０ｘ０ＦＦＦＦＦＦＦ］が記録される。先頭クラスタ番号は、図７を参照して説明した各ファイルのディレクトリエントリに記録されている。
【００８５】
例えば、各ファイルのディレクトリエントリに記録された先頭クラスタ番号を、
第１ファイル：０ｘ０００００００７
第２ファイル：０ｘ０００００００Ａ
第３ファイル：０ｘ００００００１Ｂ
第４ファイル：０ｘ００００００２Ｃ
とする。
【００８６】
第１ファイルの先頭クラスタ番号は、［０ｘ０００００００７］であるので、まず、クラスタ番号［０ｘ０００００００７］のクラスタを読み取ることで、第１ファイルの最初のデータが取得できる。第１ファイルの次の構成データの記録されたクラスタ番号は、図８に示すＦＡＴのクラスタ番号［０ｘ０００００００７］の位置の記録情報に基づいて知ることができる。図８に示すＦＡＴのクラスタ番号［０ｘ０００００００７］の位置にはクラスタ番号［０ｘ０００００００８］が記録され、第１ファイルの次の構成データの記録されたクラスタ番号は［０ｘ０００００００８］であることが判明し、クラスタ番号［０ｘ０００００００８］のクラスタからデータを読み取ることができる。
【００８７】
さらに、第１ファイルの次の構成データの記録されたクラスタ番号は、図８に示すＦＡＴのクラスタ番号［０ｘ０００００００８］の位置に記録されている。図８に示すＦＡＴのクラスタ番号［０ｘ０００００００８］の位置にはクラスタ番号［０ｘ０００００００９］が記録され、第１ファイルの次の構成データの記録されたクラスタ番号は［０ｘ０００００００９］であることが判明し、クラスタ番号［０ｘ０００００００９］のクラスタからデータを読み取ることができる。さらに、次の構成データの記録されたクラスタ番号を取得するため、ＦＡＴのクラスタ番号［０ｘ０００００００９の位置の記録情報を参照すると、ＥＯＦ（エンドオブファイル）の対応コード［０ｘ０ＦＦＦＦＦＦＦ］が記録されており、後続データはないことが判明する。
【００８８】
結果として、第１ファイルは、
クラスタ番号：［０ｘ０００００００７］→［０ｘ０００００００８］→［０ｘ０００００００９］によって指定されるクラスタに格納されていることが判明する。
【００８９】
同様に、
第２ファイルは、
クラスタ番号：［０ｘ０００００００Ａ］→［０ｘ００００００１Ｆ］→［００００００２５］→［０ｘ００００００３１］→［０ｘ００００００３０］
第３ファイルは、
クラスタ番号：［０ｘ０００００１Ｂ］→［０ｘ０００００１１］→［０ｘ０００００１２］→［０ｘ０００００１３］→［０ｘ０００００１４］→［０ｘ００００００３］
第４ファイルは、
クラスタ番号：［０ｘ０００００２Ｃ］→［０ｘ０００００２Ｄ］→［０ｘ０００００２Ｅ］→［０ｘ０００００２Ｆ］→［０ｘ０００００３８］→［０ｘ０００００３９］→［０ｘ０００００３Ａ］→［０ｘ０００００３Ｂ］
によって指定されるクラスタに格納されていることが判明し、これらのクラスタからデータを取得することが可能となる。
【００９０】
なお、図８に示すＦＡＴは、ＦＡＴ３２に対応するデータ例である。ＦＡＴ３２では、ＥＯＦ（エンドオブファイル）の対応コードは［０ｘ０ＦＦＦＦＦＦＦ］であるが、ＦＡＴ１６では、ＥＯＦ（エンドオブファイル）の対応コードは［０ｘＦＦＦＦ］である。このＥＯＦ（エンドオブファイル）の対応コードを検出することで、ファイル構成データが終了することを判別することができる。
【００９１】
このように、メディアに記録される各ファイルは、
（ａ）ファイル名や作成日時、ファイルサイズなどを保持する「ディレクトリエントリ」
（ｂ）クラスタの連鎖情報（クラスタチェーン情報）を保持する「ＦＡＴ」
（ｃ）クラスタ単位で記録されている「データ（ファイルの実体）」
の３要素を有する。これらがフラッシュメモリやハードディスクなどのメディアに記録され、ファイルシステム管理情報である「ディレクトリエントリ」と、「ＦＡＴ」に基づいて、各ファイルの構成クラスタを識別して、データを読み取ることができる。なお、これらの３要素はメディア上に記録される。
【００９２】
［（３）本発明のデータ転送処理に利用するビットマップデータ等の情報について］
次に、本発明のデータ転送処理に利用するビットマップデータ等の情報について説明する。
【００９３】
なお、以下において説明する実施例においては、ホストが読出しコマンドとして使用するコマンドはＳＣＳＩ規格のＲＥＡＤ（１０）コマンド（以下、ＲＥＡＤコマンド）とする。このコマンドのフォーマットは、先に図１を参照して説明した通りである。ホストが読み出そうとするストレージデバイス上の記録ファイルは断片化したデータとして、例えば図９に示すようにメディア上に配置されているとする。
【００９４】
図９は、メディア上の各クラスタに存在する断片化したファイルのファイル名を記載した図である。ファイルＡ、ファイルＢ、ファイルＣ・・・これら複数のファイルが、各クラスタに分散して記録されている。太線枠でかつ文字を斜体で示したファイル名が記載されたクラスタ番号（例えばクラスタ５，９，１１，１２・・・６４）は、各ファイルの先頭クラスタであることを示している。ＦＡＴファイルシステムの仕様上、断片化したファイルのデータにおいて、そのファイルを構成するクラスタのうち、先頭クラスタ番号は、一番小さい値とは限らず、さまざまな値を取りうる。
【００９５】
なお、図９においてグレーで示しているクラスタは、ホストが読み出し処理を行うファイル（ファイルＣ，Ｆ，Ｈ，Ｅ，Ｊ，Ｎ）を格納したクラスタである。ホストはストレージデバイスへＲＥＡＤコマンドを送信するに先立ち、これから読み出しを行うファイルを示すためのビットマップデータの作成を行う。この方法について以下に説明する。
【００９６】
まずホストは、ストレージデバイスのメディア上の全ＦＡＴ領域をＲＥＡＤコマンドにより読み出し、各ＦＡＴエントリを解析することで、全てのファイルにおける先頭クラスタ番号を取得する。周知のとおり、ＦＡＴ領域はメディアにおける全クラスタに対して個々に対応するＦＡＴエントリの集合によるテーブル構造をなしており、ＦＡＴエントリに対して次に連結すべきクラスタ番号を格納することで、ファイルをクラスタ単位の連結により管理している。
【００９７】
従ってＦＡＴ領域に存在する全てのクラスタチェーンを解析することで、ストレージデバイス上に存在する全てのファイルの先頭クラスタ番号を知ることができる。この処理で、例えば図１０に示すような１６個の先頭クラスタ番号が抽出されたとする。これらの番号は、後の処理のために例えば昇順で並べておく。図１０に示すように昇順に並べたリストを「記録ファイル対応先頭クラスタ番号リスト」とする。
【００９８】
図１０に示す「記録ファイル対応先頭クラスタ番号リスト」には、上から、クラスタ番号５，９，１１，１２・・・の各クラスタ番号が設定されている。これらは、図９に示す太線枠でかつ文字を斜体で示した各ファイルの先頭クラスタ番号に対応するクラスタ番号である。図１０の右側に示すファイルＢ〜Ｑの先頭クラスタである。
【００９９】
すなわち、図１０に示す「記録ファイル対応先頭クラスタ番号リスト」の１番目のエントリ［５］は、ファイルＢの先頭クラスタ番号である。２番目のエントリ［９］は、ファイルＣの先頭クラスタ番号である。このように、図１０に示す「記録ファイル対応先頭クラスタ番号リスト」は、メディアに記録されたファイル各々の先頭クラスタ番号を昇順に並べたリストである。
【０１００】
ただし、図１０に示す「記録ファイル対応先頭クラスタ番号リスト」は、メディアに記録された複数のファイルの各クラスタチェーンにおける先頭クラスタ番号を配列したデータであり、各々のクラスタ番号がどのファイルに対応するかの情報は有していない。図１０の右側に示すファイル名は説明のために記載したのみであり、ストレージデバイスからホストが取得するデータは、図１０の左側に示す「記録ファイル対応先頭クラスタ番号リスト」のみであるので、ホストは、メディアに記録された複数のファイルの各クラスタチェーンにおける先頭クラスタ番号の情報のみを取得することになる。各々のクラスタ番号がどのファイルに対応するかの情報は取得できない。
【０１０１】
次にホストは、ストレージデバイスのメディアに記録された複数ファイルから選択したファイルのデータを読み出すため、読み出しファイルの先頭クラスタ番号をストレージデバイスから取得する。先頭クラスタ番号は各ファイルのディレクトリエントリに格納されており、ホストはＲＥＡＤコマンドにより当該ディレクトリエントリを読み出すことによって、それらを取得することができる。
【０１０２】
この処理は、ホストがファイルの読み出しを行うにあたり、従来のデータ転送処理においても同様に行われる処理である。この処理で、例えばホストが読み出しを行う各ファイルが図１１に示す６つのファイル（ファイルＣ，Ｆ，Ｈ，Ｅ，Ｊ，Ｎ）であるとして、各々のファイルに対応する先頭セクタ番号は、図１１の表に示すように求まったとする。図１１に示すリストを「読み出しファイル対応先頭クラスタ番号リスト」とする。
【０１０３】
次にホストは、先に取得した図１０に示す「記録ファイル対応先頭クラスタ番号リスト」、すなわち、メディアに記録された全ファイルの先頭クラスタ番号について昇順に並べたリストの各エントリに設定された各クラスタ番号に１ビットを対応させたビットマップデータを作成する。
【０１０４】
「記録ファイル対応先頭クラスタ番号リスト」のエントリであるクラスタ番号に設定するビットは、以下のビットとする。
ホストがこれから読み出すファイルの先頭クラスタ番号に対応したビットの値は［１］、
その他の先頭クラスタ番号に対応したビットの値は［０］とする。
すなわち、ホストが読み出すファイルとその他のファイルを区別するビット値を各先頭クラスタ番号に対応付ける。なお、［１］，［０］の設定は、逆の設定でもよく、ホストが読み出すファイルとその他のファイルを区別可能なビット値であればよい。
【０１０５】
この処理について、
図１０に示す「記録ファイル対応先頭クラスタ番号リスト」と、
図１１に示す「読み出しファイル対応先頭クラスタ番号リスト」、
これらの２つのリストを参照して説明する。
まず、図１０に示す「記録ファイル対応先頭クラスタ番号リスト」における先頭クラスタ番号５は、図１１に示す「読み出しファイル対応先頭クラスタ番号リスト」において、先頭クラスタ番号がどれも一致しないため、ビットマップデータをのビットを［０］とする。
【０１０６】
次に図１０に示す「記録ファイル対応先頭クラスタ番号リスト」における先頭クラスタ番号９は、図１１に示す「読み出しファイル対応先頭クラスタ番号リスト」において、ファイルＣの先頭クラスタ番号が一致するので、ビットマップデータのビットを［１］とする。このように、図１０に示す「記録ファイル対応先頭クラスタ番号リスト」におけるすべて先頭クラスタ番号について１ビットを対応させ、ビットマップデータを作成する。例えば図１２（ｂ）に示すようなビットマップデータを作成する。
【０１０７】
さらにホストは、作成したビットマップデータにヘッダ情報などを設定したビットマップデータ送信用データを生成する。例えば図１３に示すビットマップデータ送信用データ（Ｐａｇｅ）である。図１３に示すＢｙｔｅ３以降の領域をビットマップ領域としてビットマップデータ２００を格納する。このビットマップデータは図１２（ｂ）に示すビットマップデータと同じデータである。Ｂｙｔｅ３のｂｉｔ０を起点としてｂｉｔ７までの値が、図１２（ｂ）に示すビットマップデータの最上部から８番目のビット値に対応する。Ｂｙｔｅ４のｂｉｔ０を起点としてｂｉｔ７までの値が、図１２（ｂ）に示すビットマップデータの９番目から１６番目のビット値に対応する。
【０１０８】
図１３に示すビットマップデータ送信用データのＢｙｔｅ０〜Ｂｙｔｅ２の領域はヘッダ情報格納領域である。
Ｂｙｔｅ０には、この情報（Ｐａｇｅ）がビットマップデータ送信用データであることを示すコード情報、
Ｂｙｔｅ１には、この情報（Ｐａｇｅ）のデータ長、
Ｂｙｔｅ２には、この情報（Ｐａｇｅ）に格納したビットマップデータでのファイル指定の有効性、
これらの情報を設定する。
【０１０９】
例えば、Ｂｙｔｅ２の最終ビットが［１］である場合、Ｂｙｔｅ３以下に格納されたビットマップデータが有効であることを示し、Ｂｙｔｅ２の最終ビットが［０］である場合、ビットマップデータが有効であることを示す。
【０１１０】
ホストは、図１３に示すビットマップデータ送信用データを生成して、ストレージデバイスに出力する。ホストは、その後、ＲＥＡＤコマンドをストレージデバイスに出力する。
【０１１１】
ホストからのビットマップデータ送信用データを受信したストレージデバイスは、この後にホストから受信する予定のＲＥＡＤコマンドによって読み出しの要求されるファイルを、先行してホストから受信したビットマップデータ送信用データに基づいて選別する。
【０１１２】
ストレージデバイスは、ビットマップデータ送信用データに格納されたビットマップデータ（例えば図１２（ｂ））に従って、読み出しファイルを選定して、読み出しを開始する。その後、ホストからのＲＥＡＤコマンドの受信に応じて、読み出したファイルを順次ホストに送信する。
【０１１３】
ホストが作成したビットマップデータは、全ファイルの先頭クラスタ番号に対応するＦＡＴエントリについて、各々［０］または［１］の１ビットが割り当てられ、そのビット値が、ホストがデータ読出しを要求するか否かを意味するデータとなる。
ビットマップデータの生成についての説明は以上である。
【０１１４】
［（４）ホストおよびストレージデバイスの処理シーケンス］
次に、図１４〜図１６を参照してホストおよびストレージデバイスの処理シーケンスについて説明する。
【０１１５】
まず、図１４に示すフローチャートを参照してホスト側の処理シーケンスについて説明する。なお、ホストはデータ記録可能なメディアを有するストレージデバイスに対して、メディアに記録されたデータの読み出し要求を出力し、データ読み出しを行う制御部に相当する。図１４に示すフローは、情報処理装置の制御部（ホスト）の実行する処理シーケンスである。制御部（ホスト）は、メディア記録データに対応するファイルシステム管理情報を利用して、読み出しファイルの先頭データが記録された先頭クラスタ番号と、非読み出しファイルの先頭データが記録された先頭クラスタ番号を識別可能としたビットマップデータを生成して、ストレージデバイスに出力する処理を行う。すなわち、図１３に示すビットマップデータ送信用データを生成してストレージデバイスに送信する。さらに、ホストはデータ読み出しコマンド、すなわちＲＥＡＤコマンドをストレージデバイスに送信して、読み出しファイルをストレージデバイスから取得する。
【０１１６】
図１４に示すフローチャートの各ステップについて説明する。まずホストはステップＳ１０１において、ＦＡＴ、ディレクトリエントリなどのファイルシステム管理情報を取得する。これらの情報は、例えばストレージデバイスの管理するメディアに記録されており、ストレージデバイスを介して取得する。
【０１１７】
次に、ホストはステップＳ１０２において、ステップＳ１０１で取得したファイルシステム管理情報を解析し、メディアに記録されたファイルの先頭クラスタ番号を取得して、記録ファイル対応先頭クラスタ番号リストを作成する。例えば図１０を参照して説明した、記録ファイル対応先頭クラスタ番号リストである。
【０１１８】
次に、ホストはステップＳ１０３において、例えばユーザの指定情報などに基づく読み出しファイル指定情報に従って、読み出しファイル対応先頭クラスタ番号リストを作成する。例えば図１１を参照して説明した、読み出しファイル対応先頭クラスタ番号リストである。
【０１１９】
次に、ホストはステップＳ１０４において、記録ファイル対応先頭クラスタ番号リストと、読み出しファイル対応先頭クラスタ番号リストに基づいて、ビットマップデータを作成してストレージデバイスに送信する。
【０１２０】
図１０に示す「記録ファイル対応先頭クラスタ番号リスト」における先頭クラスタ番号と、図１１に示す「読み出しファイル対応先頭クラスタ番号リスト」に設定された先頭クラスタ番号が一致する場合と一致しない場合を区別可能としたビットマップデータを作成する。例えば図１２（ｂ）に示すビットマップデータである。ホストはこのビットマップデータにヘッダ情報を設定した図１３に示すビットマップデータ送信用データを生成してストレージデバイスに送信する。
【０１２１】
なお、ホストはなんらかの方法でストレージデバイスに対してビットマップデータを送信すればよいが、ＳＣＳＩ規格のコマンドを使用するのであれば、たとえばＭｏｄｅ  Ｓｅｌｅｃｔコマンド（モードセレクトコマンド）を使えばよい。ＳＣＳＩ規格のＭｏｄｅ  Ｓｅｌｅｃｔコマンドでは、Ｍｏｄｅ  Ｐａｇｅと呼ばれる各種情報を格納するためのデータ領域が規定されており、ストレージデバイスは自由なベンダー定義のＭｏｄｅ  Ｐａｇｅを持つことができる。このＭｏｄｅ  Ｐａｇｅのうちひとつをビットマップデータに割り当てて、ストレージデバイスに送信することが可能である。このようにホストは例えばＭｏｄｅ  Ｓｅｌｅｃｔコマンドを送信することで、ストレージデバイスにビットマップデータを送信することができる。
【０１２２】
次に、ホストはステップＳ１０５において、読み出しコマント、例えば図１に示すようなＲＥＡＤコマンドをストレージデバイスに送信する。
次に、ホストはステップＳ１０６において、ストレージデバイスから読み出しファイルを順次受信する。
【０１２３】
この処理において、ストレージデバイスは、ホストから受信したビットマップデータに基づいて複数の読み出しファイルの先頭クラスタ番号を取得できているので、ホストは、データ読み出しコマンド（ＲＥＡＤコマンド）の送信は１回のみで、複数のファイルをストレージデバイスから取得することが可能となる。
【０１２４】
次に、ホストからのビットマップデータを受信したストレージデバイス側の処理について図１５に示すフローチャートを参照して説明する。
【０１２５】
ストレージデバイスは、データを記録するメディアと、メディアに対するデータ記録またはデータ読み出し処理を行う制御部を有する。制御部は、ホストが要求する読み出しファイルの先頭データが記録された先頭クラスタ番号と、非読み出しファイルの先頭データが記録された先頭クラスタ番号を識別可能としたビットマップデータをホストから受信し、受信ビットマップデータとファイルシステム管理情報を適用して、読み出しファイルの記録クラスタを解析してファイル読み出し処理を実行する。図１５に示すフローは、ストレージデバイスの制御部の制御によって実行される。図１５に示すフローの各ステップの処理の詳細について説明する。
【０１２６】
ストレージデバイスは、ホストから図１３に示す構成を持つビットマップデータ送信用データを受信すると、まず、ステップＳ２０１において、Ｂｙｔｅ２のビット０のビット値が、ビットマップデータが有効であることを示す値に設定されているか否かを確認する。例えば、この値が［１］である場合、ビットマップデータが有効であると判定する。例えば、この値が［０］である場合、ビットマップデータが無効であると判定し、その後の処理は行わず処理終了とする。
【０１２７】
ステップＳ２０１において、ビットマップデータが有効であると判定された場合は、ステップＳ２０２に進む。ステップＳ２０２では、図１３に示す構成を持つビットマップデータ送信用データに格納されたビットマップデータを取得し解析する。具体的には、Ｂｙｔｅ３以降のビットマップデータについて、順番に値が０であるか１であるかを確認する。まず、図１３に示すＢｙｔｅ３の８ビットデータのＬＳＢ側からＭＳＢ側に向けて値を判定する。
【０１２８】
ビット値が、「読み出しファイル対応先頭クラスタ番号リスト」にクラスタ番号が記録されていることを示す値、例えばビット値＝［１］である場合はステップＳ２０５の処理を行う。一方、ビット値が、「読み出しファイル対応先頭クラスタ番号リスト」にクラスタ番号が記録されていないことを示す値、例えばビット値＝［０］である場合はステップＳ２０４に進み、次のビットを検査対象に設定して、ステップＳ２０３のビット値判定処理を繰り返す。
【０１２９】
このようにして、ビット値が、「読み出しファイル対応先頭クラスタ番号リスト」にクラスタ番号が記録されていることを示す値である場合にのみ、ステップＳ２０５の処理を行い、ステップＳ２０６において、すべてのビットマップデータに対する処理が終了したと判定した場合に処理を終了する。
【０１３０】
ステップＳ２０３において、ビット値が、「読み出しファイル対応先頭クラスタ番号リスト」にクラスタ番号が記録されていることを示す値である場合は、ステップＳ２０５において、現在のビット探索位置に基づいてビット位置に対応するファイルの先頭セクタ番号を割り出す。
【０１３１】
このステップＳ２０５の処理の詳細処理について説明する。
ストレージデバイスは、まず、［１］のビット値を持つ現在の探索ビットがＢｙｔｅ３のビット０をＬＳＢとして、ＬＳＢから数えて何ビットめかを計算する。この計算された値は、前述したビットマップデータの生成方法の例によれば、図１０に示す「記録ファイル対応先頭クラスタ番号リスト」の上からのエントリ数に対応する。
【０１３２】
次にストレージデバイスは、メディアに格納されたＦＡＴに基づいて、メディアに記録されたファイルすべての先頭クラスタ番号を得る。これは、図１０に示す「記録ファイル対応先頭クラスタ番号リスト」の取得に相当する。ストレージデバイスはメディアからＦＡＴを取得できるため、全ファイルの先頭クラスタ番号を容易に取得可能であり、あらかじめ取得してメモリ等に用意しておくことも可能である。
【０１３３】
次にストレージデバイスは、ビットマップデータの値が１に設定されたビットに対応する先頭クラスタ番号から、ＦＡＴ等のファイルシステム管理情報を適用してクラスタチェーンをたどり、ファイル構成データを格納している連結されたクラスタ番号を取得する。クラスタ番号と論理ブロックアドレスは規定の計算式によりお互いの値を計算することができるので、ストレージデバイスは、ホストに送信すべきデータの論理ブロックアドレスと、データの転送長を得ることができる。
【０１３４】
このクラスタチェーンを利用して、１つのファイルの構成データの読み出しに必要なクラスタ番号を取得することができる。この取得したクラスタ番号を利用してファイルの構成データを順次、読み出してホストに送信する。なお、ホストへの送信タイミングは、ホストからのデータ読み出しコマンド（ＲＥＡＤコマンド）の受信後としてよい。
【０１３５】
これらのステップＳ２０５の処理の後、ステップＳ２０６に進み、現在のビットマップデータの探索ビット位置がビットマップデータの最後のビットであるか否かを判定する。すなわち未処理ビットが残っているか否かを判定する。未処理ビットがない場合は、処理終了する。未処理ビットがある場合は、ステップＳ２０４に進み、ビット探索位置を、未処理ビット側に１ソビットずらして、ステップＳ２０３以下の処理を繰り返す。
【０１３６】
最終的に、ステップＳ２０６において、すべてのビットマップデータに対する処理が終了したと判定した場合に処理を終了する。
【０１３７】
この処理シーケンスに従えば、ストレージデバイスは、ホストが読み出そうとするデータの論理ブロックアドレスとデータ転送長を、ホストからのビットマップデータの受信時に知ることができる。従って、ストレージデバイスは、ビットマップデータの受信後、ホストからのＲＥＡＤコマンドを受信する前に、先行してメディアの読出しを開始することができる。
【０１３８】
図１６は、ホストとストレージデバイスの通信シーケンスを示す図である。図１６には、ホストがビットマップデータ（図１３参照）をストレージデバイスに送信する処理以降のシーケンスを示している。このシーケンス図について説明する。
【０１３９】
図１６のステップＳ３０１において、ホストはストレージデバイスに対してビットマップデータを送信する。これは、図１３を参照して説明した構成を持つビットマップデータ送信用データに格納して送信される。
【０１４０】
ステップＳ３０２において、ストレージデバイスがホストからビットマップデータを受信すると、ストレージデバイスは、図１６のフローチャートに従った処理を開始する。具体的には、まず、図１３を参照して説明した構成を持つビットマップデータ送信用データＢｙｔｅ２のビット０のビット値が、ビットマップデータが有効であることを示す値に設定されているか否かを確認する。
【０１４１】
有効であると判定された場合は、ビットマップデータを取得し、順番に値が０であるか１であるかを確認し、１であるビットに対応するクラスタ番号を取得し、さらにＦＡＴを適用してクラスタチェーンをたどって、ファイルの格納されたクラスタ位置を取得して、ファイルの読み出し処理を開始（Ｓ３０３）する。
【０１４２】
その後、ステップＳ３０４においてホストがストレージデバイスに対して読み出しコマンド（ＲＥＡＤコマンド）を送信する。
【０１４３】
ステップＳ３０５において、ストレージデバイスは、ホストからのて読み出しコマンド（ＲＥＡＤコマンド）の受信に応じて、読み出しデータを、順次ホストに送信する。ビットマップデータに指定された読み出しファイルのすべてが順次連続送信される。
【０１４４】
なお、図１６に示すように、ホストはビットマップデータの送信を行ったあと、実際のデータ転送を開始させるためＲＥＡＤコマンドを１回発行する。この時のＲＥＡＤコマンドにおけるＬＢＡ領域の論理ブロックアドレスは利用する必要がないので、例えばその値を０とする。またＲＥＡＤコマンドにおける転送長領域の値は、例えばその値を、ホストが事前に送ったビットマップデータで指定される全ファイルの合計のデータ転送長とする。ＲＥＡＤコマンドを受信したストレージデバイスは、前記ビットマップデータを解析して得た論理ブロックアドレスとデータ転送長に基づき、メディアからデータを順次読出し、ホストに転送する。全ファイルのデータを転送すると終了となる。
【０１４５】
なお、図１６では、ホストからのビットマップデータの送信処理と、読み出しコマンド（ＲＥＡＤコマンド）の送信処理を別処理として記載しているが、ビットマップデータの送信処理と、読み出しコマンド（ＲＥＡＤコマンド）の送信処理は併せて１回のデータ送信処理として実行してもよい。
【０１４６】
なお、ストレージデバイスの処理として、ビットマップデータから該当するファイルの論理ブロックアドレスとデータの転送長を割り出す処理は、ビットマップデータ受信時に全て行ってもよいし、実際のデータ転送を行いながら順次行ってもよい。転送するファイルが多い場合は、論理ブロックアドレスとデータ転送長を記憶しておくためのメモリ領域の確保が必要であるため、十分なメモリが確保できない場合は、後者の方法が有効である。
【０１４７】
また、次にホストが新たなファイルの読出しを行う場合に、本発明によるデータ転送方法で読出しを行う場合には、新たなファイル指定のためのビットマップデータを作成し、ストレージデバイスに送信して、ＲＥＡＤコマンドによって該当ファイルの読出しを行えばよい。
【０１４８】
また、次にホストが新たなファイルの読出しを行う場合に、従来のデータ転送方法で読出しを行いたい場合には、ビットマップデータでのファイル指定が無効であることを示すための情報を付加して、ストレージデバイスにビットマップデータの送信を行えばよい。前述の例で言うならば、ビットマップデータ送信用データのヘッダ情報であるＢｙｔｅ２のビット値をビットマップデータが無効であることを示す値に設定して送信すればよい。
【０１４９】
以上、説明したように、本発明に従ったデータ転送処理では、ホストが読み出そうとするデータが、ストレージデバイスの管理するメディア上の分散した論理ブロックアドレス上に存在する断片化したファイルである場合や複数のファイルである場合でも、ホストは読み出しコマンド（ＲＥＡＤコマンド）を繰り返し送信する必要がない。
【０１５０】
すなわち、複数のファイルを特定できる情報であるビットマップをストレージデバイスに送信し、ストレージデバイスはビットマップに基づいて、複数のファイルの先頭クラスタ番号を取得できるので、１回の読出しコマンドのみで、複数のクラスタに分散された複数のファイルを読み出してデータ転送を行うことができる。
【０１５１】
このように、ストレージデバイスは、ホストからの読み出しコマンド（ＲＥＡＤコマンド）の受信前にホストから受信するビットマップデータに基づいてメディアからのデータの読出しを行うことができ、その結果、データの転送速度を従来のデータ転送方法よりも高速化させることができる。
【０１５２】
またホストは、分散した論理ブロックアドレス毎に読出しコマンドを発行する必要がないので、コマンドの解析処理や、コマンドに付随するステータスデータの送信処理など、コマンド１回あたりに発生する処理を行う必要がなく、その結果、データの転送速度を、従来のデータ転送方法よりも高速化させることができる。
【０１５３】
また、本発明におけるデータ転送方法では、ホストが読出そうとするファイルを特定する情報をストレージデバイスに通知する場合に利用するデータを１ファイルあたり１ビットの情報量としたビットマップデータとしている。従って、この通知処理にかかるデータ転送量を非常に少なくすることができ、その結果、データの転送速度を従来のデータ転送方法よりも高速化することができる。また、これによって、ホストが読み出そうとするファイルの情報をストレージデバイスにおいて記憶するメモリ領域が少なくてすむ。すなわち従来のデータ転送方法よりも使用するメモリ資源を小さくすることができ、システムを小型化・低価格化することができる。
【０１５４】
また、本発明におけるデータ転送処理は、ホストとストレージデバイスとのデータ転送に従来から使用されているコマンドの規格を逸脱しないで実行することができる。従って、本発明の実行のための独自のデバイスドライバなどの開発は不要であり、従来のデバイスドライバを使うことができる。従って、システム開発者にとっては、開発を容易に行えるメリットがあり、かつユーザにとっては、デバイスドライバの入れ替えの手間が不要となり、コスト安で簡素なシステムによって本発明に従った効率的なデータ転送を実現することができる。
【０１５５】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
【０１５６】
また、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。例えば、プログラムは記録媒体に予め記録しておくことができる。記録媒体からコンピュータにインストールする他、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットといったネットワークを介してプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【０１５７】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【０１５８】
以上、説明したように、本発明の一実施例の構成によれば、ホストとストレージデバイス間のデータ転送効率を高めることが可能となる。ホストはストレージデバイスのメディア記録データに対応するファイルシステム管理情報を利用して読み出しファイルの先頭データが記録された先頭クラスタ番号と、非読み出しファイルの先頭データが記録された先頭クラスタ番号を識別可能としたビットマップデータを生成してストレージデバイスに出力する。ストレージデバイスはビットマップデータを解析して要求ファイルおよび対応したクラスタを判別して、ファイル構成データをメディアから読み出してホストに提供する。本構成により、ホストがコマンド送信を繰り返すことなく複数ファイルの読み出しおよび転送を行うことが可能となる。
【符号の説明】
【０１５９】
１００  デジタルカメラ
１１０  カメラ部
１１１  光学ブロック
１１２  ＣＣＤ（Charge Coupled Device）
１１３  前処理回路
１１４  光学ブロック用ドライバ
１１５  ＣＣＤ用ドライバ
１１６  タイミング生成回路
１２０  カメラＤＳＰ（Digital Signal Processor）
１４０  インターフェース
１４５  ストレージデバイス
１５０  制御部
１５１  ＣＰＵ
１５３  フラッシュＲＯＭ
１５４  時計回路
１６０  操作部
１７０  ＬＣＤ（Liquid Crystal Display）コントローラ
１８１，１８２  ＬＣＤ
１９０  外部インターフェース
１９５  内部メモリ
２００  ビットマップデータ
【図１】
2010182254.tif 000003
【図３】
2010182254.tif 000004
【図４】
2010182254.tif 000005
【図５】
2010182254.tif 000006
【図７】
2010182254.tif 000007
【図８】
2010182254.tif 000008
【図１１】
2010182254.tif 000009
【図１３】
2010182254.tif 000010
【図１４】
2010182254.tif 000011
【図１５】
2010182254.tif 000012
【図１６】
2010182254.tif 000013
【図２】
2010182254.tif 000014
【図６】
2010182254.tif 000015
【図９】
2010182254.tif 000016
【図１０】
2010182254.tif 000017
【図１２】
2010182254.tif 000018
【手続補正書】
【提出日】平成22年2月15日(2010.2.15)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００３９
【補正方法】変更
【補正の内容】
【００３９】
【図１】ＳＣＳＩ規格であるＳＢＣ−２（ＳＣＳＩ  Ｂｌｏｃｋ  Ｃｏｍｍａｎｄｓ−２）のＲＥＡＤ（１０）コマンドのフォーマットについて説明する図である。
【図２】ＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ）ファイルシステムを利用した場合のデータ記憶例について説明する図である。
【図３】従来のデータ読み取り処理におけるホストとストレージデバイス間のデータ処理シーケンスについて説明する図である。
【図４】本発明の情報処理装置であるデジタルカメラの構成例について説明する図である。
【図５】ＦＡＴ１６およびＦＡＴ３２でフォーマットした場合のデータ構造について説明する図である。
【図６】マスターブートレコード（ＭＢＲ）のデータ構成について説明する図である。
【図７】ディレクトリエントリの情報構造を説明する図である。
【図８】一般的なファイルアロケーションテーブル（ＦＡＴ）のデータ構成例について説明する図である。
【図９】ストレージデバイスのメディアに記録されるファイルの記録例について説明する図である。
【図１０】記録ファイル対応先頭クラスタ番号リストのデータ構成例について説明する図である。
【図１１】読み出しファイル対応先頭クラスタ番号リストのデータ構成例について説明する図である。
【図１２】ビットマップデータのデータ構成例について説明する図である。
【図１３】ビットマップデータを格納したビットマップデータ送信用データのデータ構成例について説明する図である。
【図１４】ホストの実行する処理シーケンスについて説明するフローチャートを示す図である。
【図１５】ストレージデバイスの実行する処理シーケンスについて説明するフローチャートを示す図である。
【図１６】ホストとストレージデバイス間で実行する通信処理シーケンスについて説明するシーケンス図である。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１０９
【補正方法】変更
【補正の内容】
【０１０９】
例えば、Ｂｙｔｅ２の最終ビットが［１］である場合、Ｂｙｔｅ３以下に格納されたビットマップデータが有効であることを示し、Ｂｙｔｅ２の最終ビットが［０］である場合、ビットマップデータが無効であることを示す。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０１４０
【補正方法】変更
【補正の内容】
【０１４０】
ステップＳ３０２において、ストレージデバイスがホストからビットマップデータを受信すると、ストレージデバイスは、図１５のフローチャートに従った処理を開始する。具体的には、まず、図１３を参照して説明した構成を持つビットマップデータ送信用データＢｙｔｅ２のビット０のビット値が、ビットマップデータが有効であることを示す値に設定されているか否かを確認する。