(57)【要約】  【課題】  着脱可能な記録媒体からのデータの読み出しを、記録媒体を入れ替えた場合でも高速に行えるようにする。  【解決手段】  光ディスク３の記録領域に対応するキャッシュ領域３１をＨＤＤ４に確保すると共に、光ディスク３の識別情報に基づきキャッシュ情報３０を作成する。光ディスク３から読み出したデータを領域３１にキャッシュし、情報３０内のビットマップにおいて、光ディスク３から読み出したセクタに対応する位置のフラグを「１」とする。光ディスク３が他のディスクに交換された後、再び光ディスク３が装填された際に、光ディスク３の識別情報が対応する情報３０を取得する。光ディスク３への読み出し指示に対してこの情報３０を参照し、ビットマップに基づき読み出し指示されたデータがキャッシュされていると判断したら、光ディスク３の代わりにＨＤＤ４からキャッシュされたデータを読み出す。【選択図】  図５
2007128286.tif 000002
【特許請求の範囲】
【請求項１】
着脱可能な第１の記録媒体からデータを再生する再生部と、
上記第１の記録媒体から上記再生部でデータが再生されたときに、上記第１の記録媒体から再生されたデータを、上記第１の記録媒体よりもアクセス速度が高速な第２の記録媒体に記録する記録部と、
上記第１の記録媒体を識別するための識別情報と、上記再生部で再生された上記データの上記第１の記録媒体上の再生位置を示す情報と、上記データが上記第２の記録媒体に記録された記録位置を示す情報とを関連付けた関連付け情報を保持する保持部と、
上記再生部により上記第１の記録媒体にアクセスされたときに、上記関連付け情報に基づき、上記アクセス位置に対応するデータが上記第２の記録媒体に記録されているか否かを判断し、判断結果に基づき上記アクセス位置に対応するデータが上記第２の記録媒体に記録されていると判断したら、該第２の記録媒体から上記アクセス位置に対応するデータを読み出すキャッシュ制御部と
を有することを特徴とする再生装置。
【請求項２】
請求項１に記載の再生装置において、
上記キャッシュ制御部は、
上記再生部により上記第１の記録媒体にアクセスされたときに、上記第１の記録媒体の識別情報と上記関連付け情報に記述された識別情報とを比較し、上記第１の記録媒体の識別情報と上記関連付け情報に記述された識別情報とが一致した場合に、上記関連付け情報に基づき、該識別情報に対応する上記再生位置を示す情報を参照し、上記第１の記録媒体がアクセスされた再生位置と、上記関連付け情報に記述された上記再生位置を示す情報に示される再生位置とが一致した場合に、上記第２の記録媒体から上記再生位置に対応するデータを読み出す
ことを特徴とする再生装置。
【請求項３】
請求項１に記載の再生装置において、
上記第１の記録媒体に対してアクセスを指示するためのアプリケーション層と、
上位から渡されたコマンドに基づき上記再生部の制御を行うドライバ層と、
上記アプリケーション層からの指示を上記ドライバ層に渡すコマンドに変換する入出力管理層と
からなる制御部とをさらに有し、
上記キャッシュ制御部は、
上記入出力管理層と上記ドライバ層との間にさらに設けられるフィルタドライバ層に含まれることを特徴とする再生装置。
【請求項４】
請求項３に記載の再生装置において、
上記フィルタドライバ層は、
上記アプリケーション層による上記第１の記録媒体に対するアクセスの指示が上記入出力管理層で変換された上記コマンドに応じて上記関連付け情報を参照し、参照結果に基づき上記アクセスが指示されたデータが上記第２の記録媒体に記録されているか否かを判断し、該データが上記第２の記録媒体に記録されていると判断された場合には、該第２の記録媒体から該データを読み出して入出力管理層に渡し、該データが上記第２の記録媒体に記録されていないと判断された場合には、上記ドライバ層に対して該データを上記第１の記録媒体から読み出すように指示する
ことを特徴とする再生装置。
【請求項５】
請求項１に記載の再生装置において、
上記第１の記録媒体に対してアクセスを指示するためのアプリケーション層と、
上位から渡されたコマンドに基づき上記再生部および上記記録部の制御を行うドライバ層と、
上記アプリケーション層からの指示を上記ドライバ層に渡すコマンドに変換する入出力管理層と
からなる制御部とをさらに有し、
上記キャッシュ制御部は、
上記ドライバ層に含まれることを特徴とする再生装置。
【請求項６】
請求項５に記載の再生装置において、
上記ドライバ層は、
上記アプリケーション層による上記第１の記録媒体に対するアクセスの指示が上記入出力管理層で変換された上記コマンドに応じて上記関連付け情報を参照し、参照結果に基づき上記アクセスが指示されたデータが上記第２の記録媒体に記録されているか否かを判断し、該データが上記第２の記録媒体に記録されていると判断された場合には、該第２の記録媒体から該データを読み出して入出力管理層に供給し、該データが上記第２の記録媒体に記録されていないと判断された場合には、上記第１の記録媒体から該データを読み出して入出力管理層に供給する
ことを特徴とする再生装置。
【請求項７】
請求項１に記載の再生装置において、
上記第１の記録媒体に対してアクセスを指示するためのアプリケーション層と、
上位から渡されたコマンドに基づき上記再生部の制御を行うドライバ層と、
上記アプリケーション層からの指示を上記ドライバ層に渡すコマンドに変換する入出力管理層と
からなる制御部とをさらに有し、
上記キャッシュ制御部は、
上記アプリケーション層に含まれることを特徴とする再生装置。
【請求項８】
請求項７に記載の再生装置において、
上記アプリケーション層は、
上記第１の記録媒体に対してアクセスを行う際に、上記関連付け情報を参照し、参照結果に基づき上記アクセスにより上記第１の記録媒体から読み出すデータが上記第２の記録媒体に記録されているか否かを判断し、該データが上記第２の記録媒体に記録されていると判断された場合には、該第２の記録媒体から該データを読み出し、該データが上記第２の記録媒体に記録されていないと判断された場合には、上記入出力管理層に対して上記第１の記録媒体からの該データの読み出しを指示する
ことを特徴とする再生装置。
【請求項９】
請求項１に記載の再生装置において、
上記識別情報に対応する上記第１の記録媒体に関連付けられた上記第２の記録媒体上のデータを仮想的な該第１の記録媒体として管理する
ことを特徴とする再生装置。
【請求項１０】
請求項９に記載の再生装置において、
上記仮想記録媒体内のデータは、
上記関連付け情報の再生位置を示す情報に基づき、該仮想記録媒体内で連続的に再生される
ことを特徴とする再生装置。
【請求項１１】
請求項１に記載の再生装置において、
上記関連付け情報は、
不揮発性の記憶または記録媒体に記録される
ことを特徴とする再生装置。
【請求項１２】
請求項１に記載の再生装置において、
上記関連付け情報は、上記第１の記録媒体の更新時刻を示す情報を、該第１の記録媒体の上記識別情報に関連付けてさらに格納する
ことを特徴とする再生装置。
【請求項１３】
請求項１２に記載の再生装置において、
上記キャッシュ制御部は、
上記第１の記録媒体の更新時刻と上記関連付け情報に記述された該第１の記録媒体に対応する上記更新時刻とが異なる場合、上記第２の記録媒体に記録された該第１の記録媒体に対応するデータを破棄するようにした
ことを特徴とする再生装置。
【請求項１４】
請求項１に記載の再生装置において、
上記関連付け情報は、上記第１の記録媒体に記録されたファイルの更新時刻を示す情報を、該第１の記録媒体の上記識別情報に関連付けてさらに格納し、
上記キャッシュ制御部は、
上記第１の記録媒体から上記再生部で再生され上記第２の記録媒体に記録されるデータを、上記第１の記録媒体上のファイル単位で管理するようにした
ことを特徴とする再生装置。
【請求項１５】
請求項１４に記載の再生装置において、
上記キャッシュ制御部は、
上記第１の記録媒体上のファイルの更新時刻と、上記関連付け情報に記述された該第１の記録媒体の該ファイルに対応する上記更新時刻とが異なる場合、上記第２の記録媒体に記録された該ファイルを破棄するようにした
ことを特徴とする再生装置。
【請求項１６】
着脱可能な第１の記録媒体からデータが再生されたときに、上記第１の記録媒体から再生されたデータを、上記第１の記録媒体よりもアクセス速度が高速な第２の記録媒体に記録し、
上記第１の記録媒体にアクセスされたときに、上記第１の記録媒体を識別するための識別情報と、上記第１の記録媒体から再生された上記データの該第１の記録媒体上の再生位置を示す情報と、上記データが上記第２の記録媒体に記録された記録位置を示す情報とを関連付けた関連付け情報に基づき、上記アクセス位置に対応するデータが上記第２の記録媒体に記録されているか否かを判断し、判断結果に基づき上記アクセス位置に対応するデータが上記第２の記録媒体に記録されていると判断したら、該第２の記録媒体から該データを読み出す
ようにしたことを特徴とする再生方法。
【請求項１７】
着脱可能な第１の記録媒体からデータが再生されたときに、上記第１の記録媒体から再生されたデータを、上記第１の記録媒体よりもアクセス速度が高速な第２の記録媒体に記録し、
上記第１の記録媒体にアクセスされたときに、上記第１の記録媒体を識別するための識別情報と、上記第１の記録媒体から再生された上記データの該第１の記録媒体上の再生位置を示す情報と、上記データが上記第２の記録媒体に記録された記録位置を示す情報とを関連付けた関連付け情報に基づき、上記アクセス位置に対応するデータが上記第２の記録媒体に記録されているか否かを判断し、判断結果に基づき上記アクセス位置に対応するデータが上記第２の記録媒体に記録されていると判断したら、該第２の記録媒体から該データを読み出す
ようにした再生方法をコンピュータ装置に実行させることを特徴とする再生プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、着脱可能な記録媒体に記録されたデータに対するアクセス速度を高速化するようにした再生装置、再生方法および再生プログラムに関する。
【背景技術】
【０００２】
従来、ビデオカメラなどの撮像装置は、映像や音声などのＡＶ(Audio Video)データを磁気テープなどの記録媒体に記録する撮像装置が主流であった。近年では、光ディスクにおける記録容量の増加やアクセス速度の向上に伴い、光ディスクを記録媒体とした撮像装置が登場している。
【０００３】
また、近年では、パーソナルコンピュータなどのコンピュータ装置の処理速度が向上し、ＡＶデータの編集作業などをコンピュータ装置上で行う例が増えてきている。磁気テープを記録媒体とした撮像装置で撮影されたＡＶデータを、コンピュータ装置などを利用して編集する場合は、例えば、磁気テープに記録されたＡＶデータをＯＳ(Operating System)が認識できるデータ形式に変換してから、コンピュータ装置に接続されているハードディスクドライブに一旦取り込んで、ファイルとして認識させてから編集を行う必要があった。
【０００４】
一方、光ディスクを記録媒体とした撮像装置を用いる場合、例えば、撮像で得られたＡＶデータを、ＵＤＦ(Universal Disc Format)などのコンピュータ装置に対応したファイルシステムでフォーマットされた光ディスクに、ファイルとして記録することになる。これによれば、コンピュータ装置に搭載された光ディスクドライブに光ディスクを装填するだけで、記録されたＡＶデータを光ディスクから直接的にファイルとして取り出すことができる。
【０００５】
ところで、ＡＶデータの編集を行う際に、記録されたＡＶデータから目的の区間を検索するには、ＡＶデータを再生させながらスクラブ操作や高速早送り、早戻しなどの操作が必要となる。光ディスクに記録されたＡＶデータに対して上述の操作を行った場合、編集対象のＡＶデータが光ディスクの連続的な領域に記録されていたとしても、ランダムなシークが発生する。このとき、光ディスクドライブは、ハードディスクドライブに比べてシーク性能が劣るため、スクラブ操作や高速早送り、早戻しを行った場合、単位時間あたりに表示される画像が少なくなってしまう。そのため、細かい編集ができず、満足のいく操作感を得ることができない。
【０００６】
この問題を解決するために、光ディスクから読み出したＡＶデータを、例えばハードディスクドライブやバッファメモリにキャッシュし、再度そのデータを読み出す時には、ハードディスクドライブやバッファメモリにキャッシュされたデータを読み出すことが行われている。特許文献１には、上述のように、キャッシュを用いて光ディスクに対するアクセス速度を高速化する技術が記載されている。
【０００７】
【特許文献１】特開平９−３５４２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来の方法では、ハードディスクドライブやバッファメモリには、直前に光ディスクドライブに装填された光ディスクについてのデータのみをキャッシュし、別の光ディスクを光ディスクドライブに装填した時に、以前にキャッシュされていたデータを消去するようにしていた。そのため、光ディスクを入れ替えるたびに、データをキャッシュし直す必要があるという問題点があった。
【０００９】
特に、頻繁に光ディスクを入れ替えてデータを読み出すような場合、光ディスクを入れ替える度に、以前にキャッシュされたデータが消去されてしまうため、光ディスクに対するアクセス速度を高速化することができなかった。
【００１０】
したがって、この発明の目的は、着脱可能な記録媒体からのデータの読み出しを、記録媒体を入れ替えた場合でも、高速に行うことができるようにした再生装置、再生方法および再生プログラムを提供することにある。
【課題を解決するための手段】
【００１１】
この発明は、上述した課題を解決するために、着脱可能な第１の記録媒体からデータを再生する再生部と、第１の記録媒体から再生部でデータが再生されたときに、第１の記録媒体から再生されたデータを、第１の記録媒体よりもアクセス速度が高速な第２の記録媒体に記録する記録部と、第１の記録媒体を識別するための識別情報と、再生部で再生されたデータの第１の記録媒体上の再生位置を示す情報と、データが第２の記録媒体に記録された記録位置を示す情報とを関連付けた関連付け情報を保持する保持部と、再生部により第１の記録媒体にアクセスされたときに、関連付け情報に基づき、アクセス位置に対応するデータが第２の記録媒体に記録されているか否かを判断し、判断結果に基づきアクセス位置に対応するデータが第２の記録媒体に記録されていると判断したら、第２の記録媒体からアクセス位置に対応するデータを読み出すキャッシュ制御部とを有することを特徴とする再生装置である。
【００１２】
また、この発明は、着脱可能な第１の記録媒体からデータが再生されたときに、第１の記録媒体から再生されたデータを、第１の記録媒体よりもアクセス速度が高速な第２の記録媒体に記録し、第１の記録媒体にアクセスされたときに、第１の記録媒体を識別するための識別情報と、第１の記録媒体から再生されたデータの第１の記録媒体上の再生位置を示す情報と、データが第２の記録媒体に記録された記録位置を示す情報とを関連付けた関連付け情報に基づき、アクセス位置に対応するデータが第２の記録媒体に記録されているか否かを判断し、判断結果に基づきアクセス位置に対応するデータが第２の記録媒体に記録されていると判断したら、第２の記録媒体からデータを読み出すようにしたことを特徴とする再生方法である。
【００１３】
また、この発明は、着脱可能な第１の記録媒体からデータが再生されたときに、第１の記録媒体から再生されたデータを、第１の記録媒体よりもアクセス速度が高速な第２の記録媒体に記録し、第１の記録媒体にアクセスされたときに、第１の記録媒体を識別するための識別情報と、第１の記録媒体から再生されたデータの第１の記録媒体上の再生位置を示す情報と、データが第２の記録媒体に記録された記録位置を示す情報とを関連付けた関連付け情報に基づき、アクセス位置に対応するデータが第２の記録媒体に記録されているか否かを判断し、判断結果に基づきアクセス位置に対応するデータが第２の記録媒体に記録されていると判断したら、第２の記録媒体からデータを読み出すようにした再生方法をコンピュータ装置に実行させることを特徴とする再生プログラムである。
【００１４】
上述のように、この発明は、着脱可能な第１の記録媒体からデータが再生されたときに、第１の記録媒体から再生されたデータを、第１の記録媒体よりもアクセス速度が高速な第２の記録媒体に記録し、第１の記録媒体にアクセスされたときに、第１の記録媒体を識別するための識別情報と、第１の記録媒体から再生されたデータの第１の記録媒体上の再生位置を示す情報と、データが第２の記録媒体に記録された記録位置を示す情報とを関連付けた関連付け情報に基づき、アクセス位置に対応するデータが第２の記録媒体に記録されているか否かを判断し、判断結果に基づきアクセス位置に対応するデータが第２の記録媒体に記録されていると判断したら、第２の記録媒体からデータを読み出すようにしているため、第１の記録媒体を排出して他の第１の記録媒体を装填した場合でも、当該他の第１の記録媒体のデータが第２の記録媒体に記録されていれば、当該第１の記録媒体へのアクセスに対して対応するデータを第２の記録媒体から読み出すことができる。
【発明の効果】
【００１５】
この発明は、上述したように、第１の記録媒体からデータが再生される際に、再生されたデータをよりアクセス速度が高速な第２の記録媒体にキャッシュすると共に、第１の記録媒体を識別するための識別情報を、当該第１の記録媒体から再生されたデータ第１の記録媒体における位置情報と、当該データの第２の記録媒体に対する記録位置を示す情報と共に、キャッシュ情報として関連付け情報として保持している。そして、第１の記録媒体が装填されアクセスされた際に、当該関連付け情報を参照して、アクセス位置に対応するデータが第２の記録媒体に記録されているか否かを判断し、判断結果に基づきアクセス位置に対応するデータが第２の記録媒体に記録されていると判断したら、第２の記録媒体からデータを読み出すようにしている。
【００１６】
そのため、第１の記録媒体を他の第１の記録媒体に入れ替えた場合でも、識別情報に基づき当該他の第１の記録媒体のデータが第２の記録媒体に記録されているか否かを判断することができ、当該他の第１の記録媒体のデータが第２の記録媒体に記録されている場合には、第２の記録媒体に記録されている当該他の第１の記録媒体に記録されたデータにアクセスすることができる。これにより、着脱可能な第１の記録媒体を入れ替えて用いるような場合でも、第１の記録媒体それぞれに対するアクセスを見かけ上、高速化することができる効果がある。
【発明を実施するための最良の形態】
【００１７】
以下、この発明の実施の一形態について説明する。この発明は、着脱可能な第１の記録媒体から読み出したデータを、第１の記録媒体に比べてデータに対するアクセス速度がより高速な第２の記録媒体に記録すると共に、第２の記録媒体に記録されたデータを、第１の記録媒体それぞれに固有の識別情報と関連付けて管理するようにしている。装填された第１の記録媒体の識別情報に基づき、第２の記録媒体に記録された対応するデータを読み出すことができ、第１の記録媒体が交換されて用いられるような場合でも、第１の記録媒体それぞれに対するアクセスを見かけ上、高速化することができる。
【００１８】
なお、以下では、「アクセス速度が比較的低速な第１の記録媒体から読み出したデータを、アクセス速度が第１の記録媒体よりも高速な第２の記録媒体に記録し、第１の記録媒体の当該データにアクセスする際に、第２の記録媒体に記録された対応する当該データにアクセスできるようにする」ことを、「キャッシュする」のように記述する。
【００１９】
図１は、この発明の実施の一形態の使用例を示す。コンピュータ装置１は、例えばオーディオデータおよびビデオデータ（以下、ＡＶ(Audio Video)データと略称する）を編集するためのアプリケーションが搭載されており、光ディスク３に記録されたＡＶデータを光ディスクドライブ２を用いて読み出して編集する、編集装置または再生装置として機能する。
【００２０】
この発明では、コンピュータ装置１から光ディスク３に対してアクセスした際に、光ディスク３から再生されたＡＶデータをコンピュータ装置１に供給すると共に、ハードディスクドライブ４にキャッシュする。このとき、コンピュータ装置１は、光ディスク３を識別するための識別情報と、光ディスク３から再生されたデータの光ディスク３上の位置を示す位置情報と、光ディスク３から再生されたデータのハードディスクドライブ４に対する記録位置を示す情報とを、互いに関連付けてキャッシュ情報テーブルとして保持する。
【００２１】
そして、例えば次に光ディスク３が光ディスクドライブ２に装填された際に、装填された光ディスク３の識別情報に基づきキャッシュ情報テーブルが参照され、光ディスク３に対してアクセスされるデータがハードディスクドライブ４に記録されているか否かを判断する。記録されていると判断されれば、光ディスク３にアクセスすることなく当該データをハードディスクドライブ４から読み出す。一方、光ディスク３に対してアクセスされるデータがハードディスクドライブ４に記録されていないと判断されれば、当該データを光ディスク３から読み出すと共にハードディスクドライブ４に記録し、記録されたデータに関する情報に基づきキャッシュ情報テーブルを更新する。
【００２２】
こうすることにより、光ディスク３が光ディスクドライブ２に装填された際に、識別情報に基づきハードディスクドライブ４にキャッシュデータが存在するディスクであるか否かを判断することができる。したがって、一度ハードディスクドライブ４にデータがキャッシュされたことのある光ディスク３であれば、ディスクを交換し他のディスクを再生した後でも、ハードディスクドライブ４にキャッシュされたデータを利用することができ、光ディスク３に対するアクセス速度を見かけ上、高速化することができる。
【００２３】
なお、ハードディスクドライブ４の記録容量は、光ディスク３に比べて十分大きいのが好ましく、少なくとも光ディスク３の記録容量の２倍以上である必要がある。また、ハードディスクドライブ４のアクセス速度は、光ディスク３のアクセス速度に比べて十分高速であることが必要とされる。
【００２４】
図２は、コンピュータ装置１の一例の構成を示す。なお、ここでは、コンピュータ装置１について、この発明の実施の一形態に関係の深い部分のみを表し、それ以外の部分については、繁雑さを避けるため説明を省略する。
【００２５】
コンピュータ装置１は、例えば、ＣＰＵ(Central Processing Unit)１１、メモリコントローラ１２、Ｉ／Ｏ(Input/Output)コントローラ１３およびメモリ１４を有する。また、コンピュータ装置１には、光ディスクドライブ２およびハードディスクドライブ４が接続される。
【００２６】
光ディスクドライブ２およびハードディスクドライブ４は、コンピュータ装置１に対して外部的に接続されていてもよいし、コンピュータ装置１に内蔵されていてもよい。以下の説明では、光ディスクドライブ２およびハードディスクドライブ４は、コンピュータ装置１に外部的に接続されているものとして説明する。
【００２７】
また、光ディスクドライブ２およびハードディスクドライブ４をコンピュータ装置１に対して接続するインターフェイスとしては、例えばＡＴＡ(AT Attachment)インターフェースを用いることができる。勿論、光ディスクドライブ２およびハードディスクドライブ４をコンピュータ装置１に接続するインターフェイスとして、他のインターフェイスを用いることもできる。
【００２８】
ＣＰＵ１１は、プログラムに従い、メモリ１４をワークメモリとして用いて、コンピュータ装置１の各部の制御や、光ディスクドライブ２、ハードディスクドライブ４のアクセス制御を行う。プログラムは、例えば、図示されないＲＯＭ(Read Only Memory)やＩ／Ｏコントローラ１３に別途接続された図示されないハードディスクドライブに予め記録される。また、ハードディスクドライブ４にプログラムを記録してもよい。
【００２９】
ＣＰＵ１１は、光ディスクドライブ２やハードディスクドライブ４に対して直接的にデータやコマンドのやりとりを行うことができない。ＣＰＵ１１と、これら光ディスクドライブ２やハードディスクドライブ４との間のやりとりは、Ｉ／Ｏコントローラ１２を介して行われる。例えば、ＣＰＵ１１から光ディスクドライブ２やハードディスクドライブ４に対する読み出し要求や書き込み要求は、メモリコントローラ１２およびＩ／Ｏコントローラ１３を介して、ディスクドライブ２やハードディスクドライブ４に供給される。
【００３０】
光ディスク３に書き込むために光ディスクドライブ２に供給されるデータや、ハードディスクドライブ４に書き込むデータは、一旦メモリ１４に溜め込まれる。メモリ１４に書き込まれたデータは、例えばセクタ単位といった記録媒体に応じた所定の記録単位でメモリ１４から読み出され、メモリコントローラ１２およびＩ／Ｏコントローラ１３を介して光ディスクドライブ２やハードディスクドライブ４に供給される。
【００３１】
また、ＣＰＵ１１の読み出し要求に応じて、光ディスク３やハードディスクドライブ４から、記録媒体に応じた所定の記録単位（セクタ単位など）でデータが読み出され、Ｉ／Ｏコントローラ１３およびメモリコントローラ１２を介してメモリ１４に溜め込まれる。ＣＰＵ１１は、メモリ１４に溜め込まれたデータを読み込み、所定の処理を行う。
【００３２】
光ディスクドライブ２は、ＣＰＵ１１の命令に基づき、光ディスク３に対するデータの読み出しや書き込みを行う。ここで、ＣＰＵ１１は、光ディスクドライブ２により、光ディスク３の所定領域に記録された光ディスク３の識別情報を読み取ることができる。光ディスク３の識別情報については、後述する。
【００３３】
光ディスク３の記録フォーマットとしては、例えば、ＵＤＦ(Universal Disk Format)を用いることができる。ＵＤＦは、最小アクセス単位である１セクタあたりの記録容量が２０４８バイトとされている。記録フォーマットとしてＵＤＦを用いる場合、光ディスクドライブ２は、光ディスク３に対するデータの書き込みおよび光ディスク３からのデータの読み出しを、例えばセクタ単位すなわち２０４８バイトを単位として行う。
【００３４】
次に、この発明の実施の一形態による読み出し処理について、概略的に説明する。コンピュータ装置１は、光ディスクドライブ２に装填された光ディスク３が、識別情報に基づき初めてデータが読み出されるディスクであると判断された場合、光ディスク３から読み出されたデータをハードディスクドライブ４にキャッシュし、光ディスク３に関する情報とデータとを関連付け、キャッシュ情報として作成して保持する。
【００３５】
また、コンピュータ装置１は、光ディスクドライブ２に装填された光ディスク３が、識別情報に基づき、以前にデータを読み出したことがあり、且つ、当該光ディスク３に対して読み出しが指示されたデータが以前に読み出したことのあるデータであると判断された場合、当該光ディスク３に対応するキャッシュ情報に基づき、ハードディスクドライブ４にキャッシュされたデータを読み出す。さらに、この光ディスク３から以前読み出したことがないデータを新たに読み出す際には、読み出したデータをハードディスクドライブ４にキャッシュすると共に、キャッシュ情報を更新する。
【００３６】
キャッシュ情報を格納する記録または記憶媒体は、不揮発性であれば、特に種類を限定されない。例えば、キャッシュ情報をハードディスクドライブ４に記録することができる。これに限らず、キャッシュ情報を不揮発性の他の記録媒体に記録してもよい。例えば、Ｉ／Ｏコントローラ１３を介して接続される他のハードディスクドライブや、不揮発性の半導体メモリに、キャッシュ情報を記録または記憶しておくことができる。さらに、光ディスクなどの着脱可能な記録媒体に記録することも考えられる。
【００３７】
キャッシュ情報について、より具体的に説明する。キャッシュ情報は、過去に装填された光ディスク３のそれぞれと、ハードディスクドライブ４にキャッシュされたデータとの関係を示す情報である。図３は、ＣＰＵ１１で作成されるキャッシュ情報３０の一例を示す。この図３の例では、キャッシュ情報３０は、項目「メディアＩＤ(IDentification)」、項目「キャッシュファイル名」、項目「タイムスタンプ」および項目「ビットマップ」を含む。
【００３８】
項目「メディアＩＤ」は、光ディスク３毎に割り当てられる固有の識別情報が格納される。メディアＩＤとしては、光ディスク３の製造時に物理層に記録される製造番号を用いることができる。例えば、光ディスク３がＰＤ(Professional Disc：登録商標)や記録可能なＤＶＤ(Digital Versatile Disc)の場合、製造時にＢＣＡ(Burst Cutting Area)に記録される製造番号を用いることができる。
【００３９】
また、識別情報として、光ディスク３のディスクフォーマットがＵＤＦである場合、ＵＤＦに規定されているＰＶＤ(Primary Volume Descriptor)中にある「Volume Identifier」の識別子を用いることができる。さらに、ＵＭＩＤ(Unique Material IDentifier)などの全世界においてユニークとされるＩＤをディスク情報を記述するためのメタファイルに記述し、このＵＭＩＤを識別情報として用いることもできる。
【００４０】
なお、光ディスク３の識別情報として用いることができるこれらの情報は、当該光ディスクを扱うアプリケーションやファイルシステム側で、光ディスク上の記録場所を予め知っているものである。例えば、このような識別情報は、光ディスク３の記録領域よりも内周側に記録されたり、光ディスク３の記録領域に対して予め決められたファイル名で以て記録されたりする。
【００４１】
識別情報として使用可能な情報は、光ディスク３毎にユニークで、当該光ディスク３を扱うアプリケーションやファイルシステムにおいて記録位置やフォーマットが既知であれば、他の情報を用いることもできる。
【００４２】
項目「キャッシュファイル名」は、ハードディスクドライブ４にキャッシュされているデータのファイル名およびパスが格納される。すなわち、この実施の一形態においては、光ディスク３の記録領域に対応する領域が、光ディスク３のそれぞれに対してハードディスクドライブ４にファイルとして確保される。このファイル名およびパスが項目「キャッシュファイル名」に格納される。
【００４３】
項目「タイムスタンプ」は、光ディスク３の最終更新日時が格納される。タイムスタンプは、例えば、最後に更新されたファイルの更新日時であり、光ディスク３の管理情報に記述されている最終更新日時情報に基づく。
【００４４】
項目「ビットマップ」は、光ディスク３のデータが読み出されたか否かを、光ディスク３の記録単位（例えばセクタ）毎に示す情報が格納される。すなわち、光ディスク３の各記録単位毎に、データが読み出されたか否かを示すフラグを設定する。フラグは、例えば１ビットの情報で、値「１」でその記録単位のデータが読み出されたことを示し、値「０」でその記録単位のデータが読み出されていないことを示す。光ディスク３の記録領域における全セクタのフラグが項目「ビットマップ」に格納される。
【００４５】
図３では、キャッシュ情報３０がメディアＩＤ毎の個別データのように示されているが、これはこの例に限らず、図３に示すキャッシュ情報３０が多数集まった１つのテーブル（キャッシュ情報テーブルと呼ぶ）として構成することができる。キャッシュ情報テーブル状のキャッシュ情報のそれぞれは、メディアＩＤにより管理される。また、例えば、キャッシュ情報３０に記述される各項目を構造体として管理するようにしてもよい。一例として、項目「ビットマップ」の内容をキャッシュ情報３０に直接的に記述せずに、ビットマップ情報を別ファイルとして保存し、キャッシュ情報３０には、そのファイルへのアクセス方法を示すポインタ情報だけを記述してもよい。
【００４６】
次に、この発明の実施の一形態によるキャッシュ制御の例について、図４に示すフローチャートを参照しながら説明する。なお、この図４のフローチャートに示される各処理は、ＣＰＵ１１によりプログラムに基づき実行されるものである。また、以下において、光ディスク３の記録領域は、セクタ単位で管理され、セクタ番号を指示してデータの読み出し指示を行うものとする。
【００４７】
ＣＰＵ１１は、光ディスクドライブ２に光ディスク３が装填されると（ステップＳ１）、装填された光ディスク３の識別情報を取得する（ステップＳ２）。そして、ステップＳ３で、取得された識別情報に対応するキャッシュ情報３０が存在するか否かが判断される。若し、取得された識別情報に対応するキャッシュ情報３０が存在すると判断されれば、処理はステップＳ４に移行され、当該キャッシュ情報３０が読み出され、メモリ１４に保持される。
【００４８】
一方、ステップＳ３で対応するキャッシュ情報３０が存在しないと判断された場合、処理はステップＳ５に移行され、ステップＳ２で取得された識別情報に対応するキャッシュ情報３０が新規に作成される。例えば、光ディスク３が初めてコンピュータ装置１に装填されたときなど、取得した識別情報に対応するキャッシュ情報３０が存在しない。このような場合、新規にキャッシュ情報３０が作成される。作成されたキャッシュ情報３０は、ステップＳ４で、メモリ１４に保持される。キャッシュ情報３０が作成された時点では、キャッシュ情報３０の項目「ビットマップ」における各フラグの値は、対応するセクタが未だ読み出されていないことを示す値「０」とされる。
【００４９】
キャッシュ情報３０の新規作成の際には、キャッシュ情報３０を作成する光ディスク３における記録領域の全体に対応する容量を有するファイルをハードディスクドライブ４上に確保する。一例として、光ディスク３が２３ＧＢ(Giga Byte)の記録容量を有している場合、ハードディスクドライブ４上に、データサイズが２３ＧＢのファイルを作成する。
【００５０】
次のステップＳ６で、上述のステップＳ２でメディアＩＤが取得された光ディスク３からのデータの読み出しが指示されるか、当該光ディスク３が光ディスクドライブ２からの排出が指示されるかが判断される。
【００５１】
若し、当該光ディスク３が光ディスクドライブ２からの排出が指示されたと判断されれば、処理はステップＳ１１に移行され、ステップＳ４でメモリ１４に保持されたキャッシュ情報３０がメモリ１４から削除される。そして、処理がステップＳ１に戻され、光ディスクドライブ２に対する光ディスク３の装填の待機状態とされる。
【００５２】
一方、ステップＳ６で、当該光ディスク３からのデータの読み出しが指示されたと判断されれば、処理はステップＳ７に移行される。ステップＳ７では、メモリ１４に保持されたキャッシュ情報３０が参照され、読み出しが指示されたデータがハードディスクドライブ４にキャッシュされているか否かが判断される。
【００５３】
すなわち、ステップＳ７では、キャッシュ情報３０に基づき、読み出すデータの光ディスク３上の位置に対応したビットマップ上のデータを検索し、その位置からデータが読み出し済みであるか否かが判断される。読み出し済みであれば、その位置のデータは、ハードディスクドライブ４にキャッシュされていることになる。
【００５４】
一例として、光ディスク３からのデータの読み出しが指示されると、ファイルシステムは、データの読み出し指示に基づき、読み出されるデータの光ディスク３上のセクタ番号を取得する。そして、キャッシュ情報３０の項目「ビットマップ」に基づき取得されたセクタ番号に対応するフラグを参照する。当該フラグの値が「１」であれば、そのセクタ番号のセクタが読み出し済みであって、そのセクタ番号に対応するデータがハードディスクドライブ４にキャッシュされていると判断される。
【００５５】
若し、ステップＳ７で、読み出し指示されたデータがハードディスクドライブ４にキャッシュされていると判断されれば、処理はステップＳ８に移行され、当該データがハードディスクドライブ４から読み出される。読み出されたデータは、例えばＩ／Ｏコントローラ１３およびメモリコントローラ１２を介してメモリ１４に書き込まれ、ＣＰＵ１１に所定に処理される。データが読み出されると、処理はステップＳ６に戻される。
【００５６】
一方、ステップＳ７で、読み出しが指示されたデータがハードディスクドライブ４にキャッシュされていないと判断されれば、処理はステップＳ９に移行される。ステップＳ９では、読み出しが指示されたデータを光ディスク３から読み出す。読み出されたデータは、例えばＩ／Ｏコントローラ１３およびメモリコントローラ１２を介してメモリ１４に書き込まれ、ＣＰＵ１１により所定に処理されると共に、ハードディスクドライブ４の、当該光ディスク３に対して予め確保されたキャッシュ領域にキャッシュされる。
【００５７】
そして、次のステップＳ１０で、キャッシュ情報３０における項目「ビットマップ」の、光ディスク３から読み出されたデータの光ディスク上の位置に対応するフラグが、データがキャッシュされたことを示す値（この例では「１」）とされる。
【００５８】
すなわち、光ディスク３から１セクタのデータが読み出された際に、データが読み出されたセクタのセクタ番号が取得され、セクタ番号に対応するハードディスクドライブ４のキャッシュ領域内の位置に、読み出されたデータがキャッシュされる。それと共に、キャッシュ情報３０の項目「ビットマップ」に確保されたビットマップにおいて、取得されたセクタ番号に対応するフラグの値を「１」にする。
【００５９】
ステップＳ１０でキャッシュ情報３０の項目「ビットマップ」のデータが更新されると、処理はステップＳ６に戻される。上述のステップＳ６からステップＳ８またはステップＳ１０までの一連の処理は、指定されたデータの読み出しが完了するまで、セクタ単位で繰り返される。
【００６０】
なお、メモリ１４に保持されるキャッシュ情報３０が更新された場合、更新された内容がハードディスクドライブ４に格納されるキャッシュ情報３０に対して、所定のタイミングで反映される。例えば、上述したステップＳ６において、光ディスク３を排出する指示が出されたと判断された場合、メモリ１４に保持されるキャッシュ情報３０がハードディスクドライブ４に格納されるキャッシュ情報３０に対して上書きされる。
【００６１】
図５は、光ディスク３上のデータとキャッシュ情報３０との一例の関係を示す。ここでは、説明を簡単にするために、キャッシュ情報３０およびキャッシュされたデータは、共にハードディスクドライブ４に記録されるものとして説明する。
【００６２】
キャッシュ情報３０のうち、項目「メディアＩＤ」は、光ディスク３上の所定の領域３５から読み出された識別情報が格納される。また、光ディスク３上に記録されるファイル管理情報３６に基づき当該光ディスク３の最終更新日時が取得され、キャッシュ情報３０の項目「タイムスタンプ」に格納される。キャッシュ情報３０の項目「メディアＩＤ」に格納される識別情報と対応する識別情報３０を持つ光ディスク３について、キャッシュ情報３０内の項目「タイムスタンプ」に記述された情報よりも、光ディスク３上のファイル管理情報３６に記述される最終更新日時の方が新しい日時を示している場合、当該光ディスク３が他のシステムで書き換えられたことが分かる。
【００６３】
上述したように、光ディスク３から読み出されたデータをハードディスクドライブ４にキャッシュするため、光ディスク３上に記録されるファイル管理情報から光ディスク３の最大記録容量を示す最大記録容量情報が取得され、取得された最大記録容量情報に基づき、光ディスク３の最大記録容量と同容量のキャッシュ領域３１がハードディスクドライブ４上にファイルとして確保される。確保されたキャッシュ領域のファイル名およびパスがキャッシュ情報３０の項目「キャッシュファイル名」に記述される。
【００６４】
なお、キャッシュ領域３１は、ハードディスクドライブ４上のアドレスが連続した領域に確保するのが好ましい。これに限らず、キャッシュ領域３１をハードディスクドライブ４上にアドレス的に不連続に確保してもよい。
【００６５】
一方、キャッシュ情報３０における項目「ビットマップ」は、光ディスク３上のデータを、１ビットのフラグを用いて、例えばセクタ単位で管理する。項目「ビットマップ」において、１ビットが光ディスク３上のデータ１セクタ分のハードディスクドライブ４に対するキャッシュ状況を示している。光ディスク３上のデータがハードディスクドライブ４上の何処にキャッシュされたかは、キャッシュ情報３０の項目「キャッシュファイル名」および項目「ビットマップ」から辿ることができる。例えば、光ディスク３のセクタ長が２０４８バイトである場合に、ビットマップの先頭から数えて１００ビット目に対応するセクタにアクセスしたい時は、「（キャッシュファイル名に記述されたファイルの先頭アドレス）＋２０４８（バイト）×１００」のポインタにアクセスすればよい。
【００６６】
図６は、システムが過去に再生したことのない光ディスク３を初めて再生する際の一例の処理を示す。光ディスク３が光ディスクドライブ２に装填されると、ＣＰＵ１１（図示しない）は、装填された光ディスク３の識別情報を取得し、取得された識別情報に対応するキャッシュ情報３０を、例えばハードディスクドライブ４から読み出そうとする（ＳＥＱ１０）。この場合、光ディスク３は、システムが過去に再生したことのないディスクであるため、識別情報に対応するキャッシュ情報３０がハードディスクドライブ４上に存在しない。
【００６７】
この光ディスク３に対して、ユーザがデータの読み出しを指示すると（ＳＥＱ１１）、ＣＰＵ１１は、この光ディスク３から読み出し指示に応じて読み出されたデータを取得する（ＳＥＱ１２）と共に、当該データをハードディスクドライブ４に所定に確保されたキャッシュ領域３１に所定にキャッシュする（ＳＥＱ１３）。また、キャッシュ情報３０が新規に作成される（ＳＥＱ１４）。なお、実際には、新たなキャッシュ領域３１は、キャッシュ情報３０の新規作成と共に確保される。光ディスク３から読み出されキャッシュ領域３１にキャッシュされたデータの管理は、例えば光ディスク３のセクタ（２０４８バイト）単位で行う。
【００６８】
図７は、システムが一度読み出したことのあるデータに対して読み出しを行う際の一例の処理を示す。光ディスク３が光ディスクドライブ２に装填されると、ＣＰＵ１１は、装填された光ディスクの識別情報を取得し（ＳＥＱ２０）、取得された識別情報に対応するキャッシュ情報３０を例えばハードディスクドライブ４から読み出す（ＳＥＱ２１）。この場合、一度読み出されたことのあるセクタにアクセスするので、読み出しが指示されたセクタに対応するビットマップ上のフラグは、そのセクタが読み出し済みであることを示す値「１」となっている。このビットマップに基づき、ハードディスクドライブ４上のキャッシュ領域３１における対応するデータを辿ることができる。キャッシュ領域３１から対応するデータが読み出される（ＳＥＱ２２）。
【００６９】
このように、ユーザ側からは、光ディスク３にアクセスしているように見えても、実際には、よりアクセス速度が高速なハードディスクドライブ４に対してアクセスがなされ、データが読み出される。したがって、光ディスク３に対する読み出しが、見かけ上、高速化される。
【００７０】
なお、この発明の実施の一形態は、書き換え可能な光ディスク３にも適用することができる。書き換え可能な光ディスク３を使用した場合、キャッシュ情報３０が作成された時点以降に光ディスク３に記録されているデータが更新されている場合が考えられる。この場合、キャッシュ情報３０およびキャッシュ領域３１にキャッシュされたデータと、実際に光ディスク３に記録されている情報とが異なることになる。そのため、光ディスク３からデータを読み出す際に、キャッシュ情報３０に基づきハードディスクドライブ４のキャッシュ領域３１にキャッシュされたデータを読み出すと、再生が指示されたデータと、実際に読み出されたデータとの間に矛盾が生じてしまう可能性がある。
【００７１】
そのため、光ディスク３が光ディスクドライブ２に装填された際に、光ディスク３に記録されるファイル管理情報３６から最終更新日時情報を取得する。そして、光ディスク３から得られた最終更新日時情報が示す最終更新日時と、光ディスク３が装填された際に、装填された光ディスク３の識別情報に対応するキャッシュ情報３０の項目「タイムスタンプ」に記述されている最終更新日時とを比較する。キャッシュ情報３０の項目「タイムスタンプ」に記述されている最終更新日時に比べて、光ディスク３から取得した最終更新日時情報が新しければ、この光ディスク３に記録されたデータが他の機器により更新されたと判断することができる。
【００７２】
ここで、上述したように、キャッシュ情報３０の項目「タイムスタンプ」が示す最終更新日時は、光ディスク３全体を対象とした最終更新日時であり、どのデータが更新されたかを特定することができない。そのため、装填された光ディスク３の最終更新日時と、キャッシュ情報３０に基づく最終更新日時とが異なる場合には、当該光ディスク３からキャッシュされたデータをハードディスクドライブ４から全て削除する。それと共に、当該光ディスク３に対応するキャッシュ情報３０の項目「ビットマップ」に格納されるビットマップにおけるフラグを全て値「０」に初期化し、項目「タイムスタンプ」の値を、新たに得られた最終更新日時の値に更新する。その上で、当該光ディスク３から読み出されたデータをハードディスクドライブ４にキャッシュし、キャッシュ情報３０の項目「ビットマップ」において、当該光ディスク３からデータが読み出された位置に対応するフラグの値が「１」とされる。
【００７３】
上述では、光ディスク３からハードディスクドライブ４にキャッシュされたデータを光ディスク３単位で管理するように説明したが、これはこの例に限らず、例えばキャッシュを光ディスク３上のファイル単位で管理することもできる。キャッシュをファイル単位で管理することで、光ディスク３上のあるファイルを他の機器で更新したような場合、ハードディスクドライブ４上のキャッシュデータの対応するファイル部分だけを削除し、他の更新されていないファイルに対応する部分を残しておくことができるため、効率的にキャッシュを行うことができる。
【００７４】
より具体的には、光ディスク３のファン留管理情報３６には、光ディスク３に記録されるファイル情報がファイル毎に管理される。このファイル情報には、ファイルの更新日時を示す情報も含まれる。キャッシュ情報３０の項目として、例えばファイル名などファイルを識別する情報を追加し、項目「タイムスタンプ」をファイル毎に管理すると共に、項目「ビットマップ」に示されるビットマップ上の位置と、光ディスク３上のファイルの位置とを関連付ける。
【００７５】
なお、ハードディスクドライブ４にキャッシュされているデータは、読み出しのみが可能とされる。これに限らず、キャッシュされているデータを書き換え可能とすることもできる。この場合、例えば、キャッシュされたデータに対応する光ディスク３が光ディスクドライブ２に装填された際に、光ディスク３の最終更新日時情報と、当該光ディスク３からハードディスクドライブ４にキャッシュされたデータの更新日時情報とを比較し、ハードディスクドライブ４にキャッシュされたデータの更新日時情報がより新しければ、キャッシュされたデータで光ディスク３の対応するデータを更新することが考えられる。
【００７６】
次に、図４で説明したような、この発明の実施の一形態によるキャッシュ制御を実現する方法について説明する。なお、以下では、コンピュータ装置１のＯＳ(Operating System)として米国マイクロソフト社によるウィンドウズ(Windows：登録商標)システムが搭載され、この発明の実施の一形態によるキャッシュ制御がこのウィンドウズシステムに基づき行われるものとする。
【００７７】
先ず、この発明の実施の一形態によるキャッシュ制御方法の説明に先んじて、ウィンドウズシステムにおける、光ディスクドライブ２やハードディスクドライブ４といったストレージデバイスの読み出し制御について、図８および図９を用いて概略的に説明する。
【００７８】
ウィンドウズシステムにおいては、ソフトウェアの動作は、コンピュータ装置１のあらゆるハードウェアを利用する命令を実行可能なカーネルモードと、実行可能な命令が制限されるユーザモードとからなる。ＯＳは、カーネルモードで動作すると共に、カーネルモードにおいては、ＯＳの内部動作の変更も可能である。一方、ユーザモードは、ＯＳの管轄下にあり、ユーザプログラム（例えばアプリケーション）が動作する。ユーザモードにおいては、他のユーザプログラムや、ＯＳの実行に支障が生じるような命令は実行できない。
【００７９】
図８に一例が示されるように、ユーザモードで動作するアプリケーション２１は、カーネルモードで動作するＩ／Ｏ(Input/Output)マネージャ２２およびドライバ２３を介して、ハードウェアである例えば光ディスクドライブ２やハードディスクドライブ４といったストレージデバイス２４を利用する。Ｉ／Ｏマネージャ２２は、アプリケーション２１からの、ストレージデバイス２４に対する読み出し命令や書き込み命令を受け取ると、受け取ったこれらの命令を、対応する読み出しおよび書き込みを行うためのＩＲＰ(I/O Request Packet)に変換し、ドライバ２３に渡す。ドライバ２３は、受け取ったＩＲＰに応じてハードウェアとしてのストレージデバイス２４を制御し、データのストレージデバイス２４への書き込みや、ストレージデバイス２４からのデータの読み出しを行う。
【００８０】
ＩＲＰは、入出力要求が格納されるパケットであって、ドライバ間でのＩ／Ｏの処理単位である。ＩＲＰは、要求の種類、サイズ、同期／非同期、バッファに対するポインタ、ステータスといった、ドライバ２３に共通の情報を含むヘッダと、ファンクションコード、関数固有のパラメータ、読み出し元のファイルオブジェクトへのポインタといった、ドライバ２３に固有の情報を含むスタックロケーションとからなる。
【００８１】
一方、図９に一例が示されるように、上述の構成に対して、ドライバ２３の動作を変更することができるフィルタドライバ２５を追加することができる。フィルタドライバ２５は、カーネルモードで動作する。フィルタドライバ２５は、この図９の例では、Ｉ／Ｏマネージャ２２とドライバ２３との間に割り込んで動作し、Ｉ／Ｏマネージャ２２からドライバ２３に渡されるオリジナルのＩＲＰを、ドライバ２３が受け取る前に参照、変更し、変更されたＩＲＰをドライバ２３に渡す。これにより、新たな機能の追加やドライバ２３の動作を変更することが可能となる。
【００８２】
上述のような、ウィンドウズシステムにおける読み出し制御に対して、この発明の実施の一形態によるキャッシュ制御を実現する方法として、以下の３通りが考えられる。
（１）アプリケーション２１でキャッシュ制御を行う方法
（２）フィルタドライバ２５でキャッシュ制御を行う方法
（３）光ディスクドライブ２を制御するドライバ２３でキャッシュ制御を行う方法
【００８３】
（１）の、アプリケーション２１でキャッシュ制御を行う方法の例について、図１０を用いて説明する。この場合、アプリケーション２１は、例えば光ディスク３から読み出されたデータを用いて所定の処理を行うようなソフトウェアである。一例として、光ディスク３からビデオデータを読み出し編集するビデオ編集ソフトウェアがこの場合のアプリケーション２１に相当することになる。
【００８４】
光ディスクドライブ２に光ディスク３が装填されると、光ディスク３の識別情報が例えばＩ／Ｏマネージャ２２により取得される。アプリケーション２１は、Ｉ／Ｏマネージャ２２から取得された識別情報を受け取り、受け取った識別情報に基づきハードディスクドライブ４のキャッシュ情報テーブルを参照し、識別情報に対応するキャッシュ情報３０が存在するか否かを判断する（図４のステップＳ３）。以降、図４のフローチャートを用いて説明したステップＳ３以降の処理がアプリケーション２１において実行され、キャッシュ制御がなされる。
【００８５】
すなわち、図４に対応させて説明すると、キャッシュ情報３０が存在する場合、ハードディスクドライブ４から当該キャッシュ情報３０を読み出してメモリ１４に保持する（ステップＳ４）。光ディスク３から読み出しを行う場合、アプリケーション２１は、キャッシュ情報３０の項目「ビットマップ」に基づき、読み出すデータがハードディスクドライブ４にキャッシュされているか否かを判断し（ステップＳ７）、キャッシュされていると判断されれば、ハードディスクドライブ４のキャッシュ領域３１から当該データを読み出す（ステップＳ８）。
【００８６】
一方、ステップＳ７でキャッシュされていないと判断されれば、光ディスク３から当該データを読み出すようにＩ／Ｏマネージャ２２に対して読み出し要求を出し、Ｉ／Ｏマネージャ２２は、この読み出し要求に基づきＩＲＰを生成し、ドライバ２３に渡す。ドライバ２３は、渡されたＩＲＰに基づき光ディスクドライブ２を制御して光ディスク３からデータを読み出す。読み出されたデータは、ドライバ２３からＩ／Ｏマネージャ２２を介してアプリケーション２１に渡される。アプリケーション２１は、受け取ったデータをハードディスクドライブ４のキャッシュ領域３１に所定にキャッシュする（ステップＳ９）と共に、キャッシュ情報３０の、項目「ビットマップ」におけるビットマップに対し、光ディスク３からデータが読み出された位置に対応するビットを「１」とする（ステップＳ１０）。
【００８７】
なお、ステップＳ７で、アプリケーション２１は、読み出すデータの光ディスク３上での位置を知っている必要があるが、これは、アプリケーション２１からＯＳに対してその都度問い合わせてもよいし、アプリケーション２１側で光ディスク３上の位置情報を管理していてもよい。
【００８８】
（２）の、フィルタドライバ２５でキャッシュ制御を行う方法について、図１１を用いて説明する。この場合、上述の図４のフローチャートにおけるステップＳ３以降の処理は、フィルタドライバ２５上で行われることになる。
【００８９】
光ディスク３が光ディスクドライブ２に装填されると、光ディスク３の識別情報が例えばＩ／Ｏマネージャ２２に取得される。Ｉ／Ｏマネージャ２２は、アプリケーション２１から読み出し要求があると、この読み出し要求に応じてＩＲＰを生成し、そのＩＲＰに光ディスク３の識別情報を乗せる。Ｉ／Ｏマネージャ２２は、このＩＲＰをドライバ２３に渡す。
【００９０】
Ｉ／Ｏマネージャ２２からドライバ２３に渡されるＩＲＰは、ドライバ２３が受け取る前にフィルタドライバ２５に取得される。フィルタドライバ２５は、ＩＲＰを取得すると、ＩＲＰに含まれる識別情報に基づきハードディスクドライブ４のキャッシュ情報テーブルを参照し、当該識別情報に対応するキャッシュ情報３０が存在するか否かを判断する（図４のステップＳ３）。以降、図４のフローチャートを用いて説明したステップＳ３以降の処理がフィルタドライバ２５において実行され、キャッシュ制御がなされる。
【００９１】
図４に対応させて説明すると、フィルタドライバ２５は、キャッシュ情報３０が存在する場合、ハードディスクドライブ４から当該キャッシュ情報３０を読み出してメモリ１４に保持する（ステップＳ４）。フィルタドライバ２５は、Ｉ／Ｏマネージャ２２から受け取ったＩＲＰとキャッシュ情報３０とに基づき、Ｉ／Ｏマネージャ２２から受け取ったＩＲＰを光ディスクドライブ２およびハードディスクドライブ４の何方に渡すかを判断する。
【００９２】
すなわち、フィルタドライバ２５は、Ｉ／Ｏマネージャ２２から受け取ったＩＲＰに基づきキャッシュ情報３０の項目「ビットマップ」を参照し、読み出すデータがハードディスクドライブ４のキャッシュ領域３１にキャッシュされているか否かを判断する（ステップＳ７）。
【００９３】
キャッシュされていると判断された場合、フィルタドライバ２５は、Ｉ／Ｏマネージャ２２から受け取ったＩＲＰの宛先を光ディスクドライブ２からハードディスクドライブ４に変更し、変更されたＩＲＰをハードディスクドライブ４に渡す。ハードディスクドライブ４では、受け取ったＩＲＰに基づきキャッシュ領域３１から所定にデータが読み出される（ステップＳ８）。
【００９４】
一方、ステップＳ７でキャッシュされていないと判断されれば、フィルタドライバ２５は、Ｉ／Ｏマネージャ２２から受け取ったＩＲＰをドライバ２３に渡す。ドライバ２３は、渡されたＩＲＰに基づき光ディスクドライブ２を制御して光ディスク３からデータを読み出す。読み出されたデータは、ドライバ２３からフィルタドライバ２５およびＩ／Ｏマネージャ２２を介してアプリケーション２１に渡される。また、フィルタドライバ２５は、ドライバ２３から渡された、光ディスク３から読み出されたデータをハードディスクドライブ４のキャッシュ領域３１に所定にキャッシュする（ステップＳ９）と共に、キャッシュ情報３０の、項目「ビットマップ」におけるビットマップに対し、光ディスク３からデータが読み出された位置に対応するビットを「１」とする（ステップＳ１０）。
【００９５】
この（２）のフィルタドライバ２５を用いてキャッシュ制御を行う方法では、アプリケーション２１およびドライバ２３は、既存のものをそのまま用いることができる。すなわち、アプリケーション２１は、Ｉ／Ｏマネージャ２２に対して単に光ディスク３の読み出し要求を渡せばよく、ドライバ２３は、フィルタドライバ２５から渡されたＩＲＰに応じて光ディスクドライブ２を制御し、光ディスク３からのデータを読み出せばよい。
【００９６】
（３）の、ドライバ２３によりキャッシュ制御を行う方法について、図１２を用いて説明する。この場合、上述した（２）の、フィルタドライバ２５を用いてキャッシュ制御を行う方法で説明したフィルタドライバ２５の機能を、ドライバ２３に組み込むことにより実現される。換言すると、上述の図４のフローチャートにおけるステップＳ３以降の処理は、ドライバ２３上で行われることになる。
【００９７】
光ディスク３が光ディスクドライブ２に装填されると、光ディスク３の識別情報が例えばＩ／Ｏマネージャ２２に取得される。Ｉ／Ｏマネージャ２２は、アプリケーション２１から読み出し要求があると、この読み出し要求に応じてＩＲＰを生成し、そのＩＲＰに光ディスク３の識別情報を乗せる。Ｉ／Ｏマネージャ２２は、このＩＲＰをドライバ２３に渡す。
【００９８】
ドライバ２３は、ＩＲＰを受け取ると、ＩＲＰに含まれる識別情報に基づきハードディスクドライブ４のキャッシュ情報テーブルを参照し、当該識別情報に対応するキャッシュ情報３０が存在するか否かを判断する（図４のステップＳ３）。以降、図４のフローチャートを用いて説明したステップＳ３以降の処理がドライバ２３において実行され、キャッシュ制御がなされる。
【００９９】
図４に対応させて説明すると、フィルタドライバ２３は、キャッシュ情報３０が存在する場合、ハードディスクドライブ４から当該キャッシュ情報３０を読み出してメモリ１４に保持する（ステップＳ４）。ドライバ２３は、Ｉ／Ｏマネージャ２２から受け取ったＩＲＰとキャッシュ情報３０とに基づき、Ｉ／Ｏマネージャ２２から受け取ったＩＲＰに基づく読み出し制御を、光ディスクドライブ２およびハードディスクドライブ４の何方に対して行うかを判断する。
【０１００】
すなわち、ドライバ２３は、Ｉ／Ｏマネージャ２２から受け取ったＩＲＰに基づきキャッシュ情報３０の項目「ビットマップ」を参照し、読み出すデータがハードディスクドライブ４のキャッシュ領域３１にキャッシュされているか否かを判断する（ステップＳ７）。
【０１０１】
キャッシュされていると判断された場合、ドライバ２３は、ハードディスクドライブ４に対して読み出し制御を行い、キャッシュ領域３１から所定にデータを読み出す（ステップＳ８）。
【０１０２】
一方、ステップＳ７でキャッシュされていないと判断されれば、ドライバ２３は、光ディスクドライブ２に対して読み出し制御を行い、光ディスク３からデータを読み出す。読み出されたデータは、ドライバ２３からＩ／Ｏマネージャ２２を介してアプリケーション２１に渡される。また、ドライバ２３は、光ディスク３から読み出されたデータをハードディスクドライブ４のキャッシュ領域３１に所定にキャッシュする（ステップＳ９）と共に、キャッシュ情報３０の、項目「ビットマップ」におけるビットマップに対し、光ディスク３からデータが読み出された位置に対応するビットを「１」とする（ステップＳ１０）。
【０１０３】
なお、上述では、この発明の実施の一形態によるキャッシュ制御方法を、アプリケーション２１で実現する方法、フィルタドライバ２５で実現する方法およびドライバ２３で実現する方法について、それぞれ説明したが、これはこの例に限定されない。例えば、アプリケーション２１、フィルタドライバ２５およびドライバ２３のそれぞれに、この発明の実施の一形態によるキャッシュ制御方法の機能を分担させ、それぞれの動作を組み合わせて実現することも可能である。
【０１０４】
次に、この発明の実施の一形態の応用例について説明する。上述したように、この発明の実施の一形態によれば、光ディスク３の記録領域に対応してハードディスクドライブ４に対してキャッシュ領域３１が確保される。また、このキャッシュ領域３１は、キャッシュ情報３０の項目「メディアＩＤ」により、光ディスク３毎にそれぞれ管理される。光ディスク３に対するアクセスを行う際に、ユーザが特に意識することなく、ハードディスクドライブ４に対するデータのキャッシュやキャッシュされたデータの読み出しが行われる。そのため、この発明の実施の一形態は、仮想的なメディアチェンジャに応用することができる。
【０１０５】
すなわち、キャッシュ情報３０の項目「メディアＩＤ」に記述される識別情報に対応するキャッシュ領域３１を、当該識別情報に対応する仮想的な光ディスク３と見做す。そして、この仮想的な光ディスク３に対して読み出し要求を行うことで、対応するキャッシュ領域３１にキャッシュされた分の光ディスク３のデータを読み出すことができる。したがって、光ディスク３を実際に光ディスクドライブ２に装填しなくても、キャッシュ領域３１にキャッシュされた分であれば、光ディスク３に記録されているのと同一のデータを取得することができる。
【０１０６】
図１３Ａは、仮想的なメディアチェンジャ（以下、仮想チェンジャと呼ぶ）を利用する際の一例のＧＵＩ(Graphical User Interface)を示す。この図１３Ａの例では、コンピュータ装置１上で各種ファイルやフォルダなどの操作を行う、所謂ファイル操作ソフトウェアのファイル閲覧操作画面４０に対して、仮想チェンジャ４１が表示されている。仮想チェンジャ４１に対して、仮想チェンジャ４１に現在仮想的に装填されている仮想ディスク４２Ａ、４２Ｂ、４２Ｃ、・・・がそれぞれアイコンで示されている。仮想チェンジャ４１は、仮想的な光ディスク３である仮想ディスク４２Ａ、４２Ｂ、４２Ｃ、・・・を交換しながら再生することができるようになっている。例えば、仮想ディスク４２Ａのアイコンを所定に指定することで、当該仮想ディスク４２Ａが再生される。
【０１０７】
仮想ディスク４２Ａ、４２Ｂ、４２Ｃ、・・・は、実際には、図１３Ｂに一例が示されるように、キャッシュ情報３０Ａ、３０Ｂ、３０Ｃ、・・・にそれぞれ対応する、ハードディスクドライブ４上のキャッシュ領域３１Ａ、３１Ｂ、３１Ｃ、・・・である。換言すれば、ある光ディスク３の記録領域に対応する領域をハードディスクドライブ４上に確保した例えばキャッシュ領域３１Ａが、当該光ディスク３に対応する仮想ディスク４２Ａであって、当該仮想ディスク４２Ａに対するアクセス方法や属性情報などがキャッシュ領域３１Ａおよび当該光ディスク３に対応するキャッシュ情報３０Ａにより示される。
【０１０８】
上述したように、光ディスク３から再生されたデータのキャッシュ領域３１に対するキャッシュは、所定単位毎、例えば光ディスク３の記録単位であるセクタ単位毎になされる。そのため、ハードディスクドライブ４のキャッシュ領域３１には、光ディスク３のデータがキャッシュされた既キャッシュ部分とキャッシュされていない未キャッシュ部分とが存在することになる。したがって、対応する仮想ドライブ４２Ａ、４２Ｂ、４２Ｃ、・・・にも、図１４Ａに一例が示されるように、光ディスク３からキャッシュされたデータが存在する部分と存在しない部分が生じることになる。図１４Ａの例では、仮想ディスク４２Ａおよび４２Ｂそれぞれにおいて、斜線で示す部分以外は、対応する光ディスク３のデータがキャッシュされていない。
【０１０９】
このように、既キャッシュ部分と未キャッシュ部分とが混在する仮想ディスクを再生する際には、図１４Ｂに一例が示されるように、未キャッシュ部分を飛ばし、既キャッシュ部分を繋げて連続的に再生することが考えられる。これは、ＡＶデータを記録した光ディスク３のデータをキャッシュしたような場合に、用いて好適である。
【０１１０】
なお、これに限られず、例えば、未キャッシュ部分がある仮想ディスクを再生する場合、光ディスクドライブ２に対応する光ディスク３を装填するよう要求し、未キャッシュ部分を再生する際に光ディスク３からデータを読み出し、データを連続的に再生するようにしてもよい。
【０１１１】
また、ユーザは、仮想ディスク４２Ａ、４２Ｂ、４２Ｃ、・・・において、プロパティを表示させることで、対応する光ディスク３のどの部分がキャッシュされているかを視覚的に知ることができる。例えば、プロパティ表示が指定された仮想ディスク４２に対応するキャッシュ情報３０Ａの、項目「ビットマップ」に基づき、対応する光ディスク３のキャッシュされている部分を示すことができる。このとき、例えば光ディスク３の実際の形状を模して円グラフ状の表示を行うと、キャッシュ部分が直感的に分かり、好ましい。
【０１１２】
なお、この応用例による仮想チェンジャ４１を実現するためには、上述した３通りのキャッシュ制御の実現方法のうち、（２）のフィルタドライバ２５でキャッシュ制御を行う方法か、あるいは、（３）のドライバ２３でキャッシュ制御を行う方法の何れかを用いると、ＯＳレベルで仮想チェンジャ４１を認識させることができ、好ましい。（１）の、アプリケーション２１でキャッシュ制御を行う方法を用いた場合には、例えば、専用のＧＵＩを用いて仮想チェンジャ４１の管理や操作などを行うことが考えられる。
【０１１３】
なお、上述では、光ディスク３のデータをハードディスクドライブ４にキャッシュする際の単位を、セクタ単位などの光ディスク３の記録単位としたが、これはこの例に限定されない。例えば、キャッシュ対象のデータがＡＶデータに限られる場合、キャッシュの単位をフレーム単位やＧＯＰ(Group Of Picture)などの、ＡＶデータの区切り単位としてもよい。
【０１１４】
また、この発明は、上述したこの発明の実施の一形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。例えば、上述では、キャッシュ情報や光ディスク３から読み出したデータをキャッシュする記録媒体としてハードディスクドライブを用いた例について説明したが、これに限らず、光ディスク３のデータをキャッシュする記録媒体として、不揮発性の半導体メモリや、光ディスク３よりもアクセス速度が高速な記録型光ディスクなどを用いてもよい。
【０１１５】
さらに、上述では、この発明によるキャッシュ制御がウィンドウズシステムに対して適用した例について説明したが、これはこの例に限定されず、他のＯＳに対してもこの発明によるキャッシュ制御方法を適用することができる。
【図面の簡単な説明】
【０１１６】
【図１】この発明の実施の一形態の使用例を示す略線図である。
【図２】コンピュータ装置１の一例の構成を示すブロック図である。
【図３】キャッシュ情報の一例を示す略線図である。
【図４】この発明の実施の一形態による一例のキャッシュ制御を示すフローチャートである。
【図５】光ディスク上のデータとキャッシュ情報との一例の関係を示す略線図である。
【図６】システムが過去に再生したことのない光ディスクを初めて再生する際の一例の処理を示す略線図である。
【図７】システムが一度読み出したことのあるデータに対して読み出しを行う際の一例の処理を示す。
【図８】ウィンドウズシステムにおける一例のストレージデバイスの読み出し制御を概略的に説明する略線図である。
【図９】ウィンドウズシステムにおける一例のストレージデバイスの読み出し制御を概略的に説明する略線図である。
【図１０】アプリケーションでキャッシュ制御を行う一例の方法を説明するための略線図である。
【図１１】フィルタドライバでキャッシュ制御を行う一例の方法を説明するための略線図である。
【図１２】ドライバによりキャッシュ制御を行う一例の方法を説明するための略線図である。
【図１３】仮想メディアチェンジャの一例を説明するための略線図である。
【図１４】仮想ディスクの一例の再生方法を説明するための略線図である。
【符号の説明】
【０１１７】
１  コンピュータ装置
２  光ディスクドライブ
３  光ディスク
４  ハードディスクドライブ
１１  ＣＰＵ
１２  メモリコントローラ
１３  Ｉ／Ｏコントローラ
１４  メモリ
２１  アプリケーション
２２  Ｉ／Ｏマネージャ
２３  ドライバ
２５  フィルタドライバ
３０  キャッシュ情報
３１  キャッシュ領域
【図１】
2007128286.tif 000003
【図２】
2007128286.tif 000004
【図３】
2007128286.tif 000005
【図４】
2007128286.tif 000006
【図５】
2007128286.tif 000007
【図６】
2007128286.tif 000008
【図７】
2007128286.tif 000009
【図８】
2007128286.tif 000010
【図９】
2007128286.tif 000011
【図１０】
2007128286.tif 000012
【図１１】
2007128286.tif 000013
【図１２】
2007128286.tif 000014
【図１３】
2007128286.tif 000015
【図１４】
2007128286.tif 000016