(57)【要約】【課題】光ディスク装置において、ホスト装置からのリードコマンドを入力したときの読み出し速度を向上する。【解決手段】光ディスク１０から読み出されたデータはキャッシュメモリ３８にバッファリングされ、その後要求されたデータがホスト装置に転送される。キャッシュメモリをＡキャッシュとＢキャッシュの２つに分割し、Ａキャッシュに主にディレクトリデータをバッファリング、Ｂキャッシュに主にファイルデータをバッファリングする。ディレクトリデータとファイルデータを交互に読み出す場合のキャッシュヒット率が向上する。【選択図】図１
2005107997.tif 000002
【特許請求の範囲】
【請求項１】
光ディスクからデータを読み出す読出手段と、
読み出されたデータを記憶するキャッシュメモリと、
前記キャッシュメモリへの書き込み及びキャッシュメモリからの読み出しを制御する制御手段であって、入力コマンドで要求されるデータが前記キャッシュメモリに存在しない場合には前記光ディスクから読み出されたデータを前記キャッシュメモリに書き込むとともに要求されたデータを転送し、入力コマンドで要求されるデータが前記キャッシュメモリに既に存在する場合には当該データを前記キャッシュメモリから転送する制御手段と、
を有し、
前記キャッシュメモリは、前記光ディスクに記録されたファイル管理情報を主に記憶する第１メモリ領域と、前記光ディスクに記録されたファイルデータを主に記憶する第２メモリ領域から構成される
ことを特徴とする光ディスク装置。
【請求項２】
請求項１記載の装置において、
前記第２メモリ領域は、前記第１メモリ領域よりも記憶容量が大きい
ことを特徴とする光ディスク装置。
【請求項３】
請求項１、２のいずれかに記載の装置において、
前記制御手段は、前記入力コマンドで要求されるデータの目標アドレスの大小に応じ、目標アドレスが相対的に小さい場合には前記第１メモリ領域を選択して前記読み出されたデータを記憶し、目標アドレスが相対的に大きい場合には前記第２メモリ領域を選択して前記読み出されたデータを書き込む
ことを特徴とする光ディスク装置。
【請求項４】
請求項１、２のいずれかに記載の装置において、
前記制御手段は、前記入力コマンドで要求されるデータの目標アドレスに応じ、目標アドレスが前記第１メモリ領域に記憶されているデータの開始アドレスより小さい場合には前記第１メモリ領域を選択して前記読み出されたデータを書き込み、目標アドレスが前記第２メモリ領域に記憶されているデータの開始アドレスよりも大きい場合には前記第２メモリ領域を選択して前記読み出されたデータを書き込み、目標アドレスが前記第１メモリ領域の開始アドレスと前記第２メモリ領域の開始アドレスの間である場合には現在使用していない方のメモリ領域を選択して前記読み出されたデータを書き込む
ことを特徴とする光ディスク装置。
【請求項５】
請求項２記載の装置において、
前記制御手段は、前記入力コマンドで要求されるデータの目標アドレスの大小に応じ、目標アドレスが相対的に小さい場合には記憶容量の小さい前記第１メモリ領域を選択して前記読み出されたデータを記憶し、目標アドレスが相対的に大きい場合には記憶容量の大きい前記第２メモリ領域を選択して前記読み出されたデータを書き込み、かつ、前記入力コマンドで要求されるデータが前記第１メモリ領域に既に存在するキャッシュヒットが連続して所定回数に達した場合には、前記第２メモリ領域を選択して前記読み出されたデータを書き込む
ことを特徴とする光ディスク装置。
【請求項６】
請求項３、４のいずれかに記載の装置において、
前記制御手段は、入力コマンドで要求されるデータが前記キャッシュメモリに全く存在していないか、あるいは部分的に存在しているかを判定し、全く存在していない場合に前記選択及び書き込み処理を実行し、部分的に存在していない場合には部分的に存在した方のメモリ領域を選択して前記読み出されたデータを書き込む
ことを特徴とする光ディスク装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は光ディスク装置、特に光ディスクから読み出したデータを一時記憶するキャッシュメモリの処理に関する。
【背景技術】
【０００２】
ＣＤやＤＶＤ等の光ディスクからデータを読み出す際に、読み出し速度を向上させるためにキャッシュメモリが用いられている。すなわち、パーソナルコンピュータ（ＰＣ）等のホスト装置からのリードコマンドが入力された場合、光ディスク装置のコントローラは光ディスクから読み出したデータをそのままホスト装置に転送するのではなく、一度キャッシュメモリに格納した後にホスト装置に転送する。これにより、次に同一データについてリードコマンドが入力された場合でも、光ディスクにアクセスしてデータを読み出すことなくキャッシュメモリから転送するだけで良いので、読み出し速度が向上する。キャッシュメモリのヒット率を向上させるために、要求されたデータだけではなく、それに続くデータも先読みしてキャッシュメモリに格納しておく方法が採用される。
【０００３】
下記に示す従来技術には、キャッシュメモリを２つのセグメントに分割して管理する技術が記載されている。
【０００４】
図１０乃至図１２には、この従来技術におけるキャッシュメモリの使用方法が示されている。図１０に示されるように、キャッシュメモリ１００をＳＧ１とＳＧ２の２つのセグメントに分割する。ホスト装置からＬＢＡ（論理ブロックアドレス）＝Ｍ、ＬＢＡ＝Ｍ＋１のデータ要求が発生した場合、コントローラは光ディスクからＬＢＡ＝Ｍ、Ｍ＋１のデータを読み出し、復調するだけでなく、それに続くＭ＋２、Ｍ＋３についても読み出して復調し、キャッシュメモリ１００のＳＧ１に格納する。キャッシュメモリ１００に記憶（バッファリング）されたデータのうち、ホスト装置から要求されたＭ、Ｍ＋１のデータがホスト装置に転送される。
【０００５】
次に、ホスト装置からＬＢＡ＝Ｎ、Ｎ＋１のデータが要求された場合、図１１に示されるように、コントローラは光ディスクからこれらのデータを読み出し、復調してキャッシュメモリ１００のＳＧ２に格納するだけでなく、これらのデータに続くＮ＋２、Ｎ＋３についても光ディスクから読み出し、復調してキャッシュメモリ１００のＳＧ２に格納する。キャッシュメモリ１００に記憶されたデータのうち、ホスト装置から要求されたＮ，Ｎ＋１のデータがホスト装置に転送される。
【０００６】
次に、ホスト装置からＮ＋２、Ｎ＋３、Ｎ＋４のデータが要求された場合、図１２に示されるようにＮ＋２、Ｎ＋３についてはＳＧ２内に既に存在するのでキャッシュヒットし、データをホスト装置に転送できる。また、前回の転送もＳＧ２内のデータであったためコントローラはシーケンシャルリードであると判定し、図１２に示されるように、Ｎ＋２、Ｎ＋３についてはキャッシュヒット転送を行うとともに、未だ読み込んでいないＮ＋４を光ディスクから読み出し、復調してＳＧ１に格納する。すなわち、キャッシュメモリ１００のＳＧ１が無効化され、キャッシュメモリ１００は一つのリングメモリとして機能させてＮ＋４をＳＧ１に格納する。
【０００７】
また、シーケンシャルリードではなく、ディスク上で離れた２つの位置のデータセクタのデータを交互に転送要求するような２ポイントリードの場合にも、前回のセグメントと同一のセグメントから転送した場合にはその後もシーケンシャルリードが行われる可能性が高いと判断してＳＧ１、ＳＧ２の区別を無くし、キャッシュメモリ１００全体を１つのリングメモリとして使用することが記載されている。
【０００８】
【特許文献１】特開平１１−１４３６４３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、光ディスクに記録されるファイルの数が例えば１０，０００個以上と膨大なものとなる場合も少なくなく、このような場合に上記従来技術のようにキャッシュメモリを管理したのでは読み出し速度の向上が困難となる問題があった。
【００１０】
すなわち、例えばマイクロソフト社のＯＳであるＷｉｎｄｏｗｓ（登録商標）では、本来読み出すべきファイルの合間に当該ファイルの管理情報であるディレクトリ情報を読み出す処理を行うが、上記の技術では本来読み出すべきファイルがある程度のシーケンシャルリードとなるため、ＳＧ１、ＳＧ２と２つに分割されていたキャッシュメモリの分割が無効化されて１つのリングメモリとして機能することになるため、ディレクトリ情報を読み出そうとしてもキャッシュヒットせず、光ディスクから読み出さなくてはならず、読み出しに時間を要することとなる。ディレクトリ情報を読み出した後に本来のファイルデータを再び読み出す場合にも、既にキャッシュメモリにはディレクトリデータが格納されているためキャッシュメモリにはバッファリングしておいたファイルデータがもはや存在せず、再び光ディスクから読み出さなくてはならない。
【００１１】
本発明の目的は、光ディスクからデータを読み出す場合の読み出し速度を確実に向上させることにある。
【課題を解決するための手段】
【００１２】
本発明は、光ディスクからデータを読み出す読出手段と、読み出されたデータを記憶するキャッシュメモリと、前記キャッシュメモリへの書き込み及びキャッシュメモリからの読み出しを制御する制御手段であって、入力コマンドで要求されるデータが前記キャッシュメモリに存在しない場合には前記光ディスクから読み出されたデータを前記キャッシュメモリに書き込むとともに要求されたデータを転送し、入力コマンドで要求されるデータが前記キャッシュメモリに既に存在する場合には当該データを前記キャッシュメモリから転送する制御手段とを有し、前記キャッシュメモリは、前記光ディスクに記録されたファイル管理情報を主に記憶する第１メモリ領域と、前記光ディスクに記録されたファイルデータを主に記憶する第２メモリ領域から構成される。
【００１３】
第１メモリ領域に主にディレクトリデータ等のファイル管理情報を記憶し、第２メモリ領域に主にファイルデータを記憶することで、ディレクトリデータとファイルデータとが交互にリードされる場合においても、キャッシュヒット率を向上させる。すなわち、ディレクトリデータが要求された場合には第１メモリ領域でキャッシュヒットする可能性があり、続いてファイルデータが要求された場合には第２メモリ領域でキャッシュヒットする可能性がある。第２メモリ領域に対して読み出されたデータを書き込む場合にも、第１メモリ領域に記憶されているファイル管理データは影響をうけず、再びディレクトリデータが要求されても第１メモリ領域でキャッシュヒットする可能性を維持する。
【００１４】
本発明において、前記第２メモリ領域の記憶容量を前記第１メモリ領域よりも大きくすることが好適である。ファイル管理情報よりもファイルデータ自体の方がデータサイズが大きいからである。ファイルデータを記憶容量の大きい第２メモリ領域に書き込むことで、ファイルデータの先読みデータ量を増大させ、キャッシュヒット率が向上する。
【００１５】
本発明において、前記制御手段は、前記入力コマンドで要求されるデータの目標アドレスの大小に応じ、目標アドレスが相対的に小さい場合には前記第１メモリ領域を選択して前記読み出されたデータを記憶し、目標アドレスが相対的に大きい場合には前記第２メモリ領域を選択して前記読み出されたデータを書き込んでもよい。ファイル管理情報は光ディスクの内周近傍に記憶されており、そのアドレスも小さい。目標アドレスが小さい場合に第１メモリ領域に書き込むことで、結果として主にファイル管理情報を第１メモリ領域に記憶させることになる。
【００１６】
また、本発明において、前記制御手段は、前記入力コマンドで要求されるデータの目標アドレスに応じ、目標アドレスが前記第１メモリ領域に記憶されているデータの開始アドレスより小さい場合には前記第１メモリ領域を選択して前記読み出されたデータを書き込み、目標アドレスが前記第２メモリ領域に記憶されているデータの開始アドレスよりも大きい場合には前記第２メモリ領域を選択して前記読み出されたデータを書き込み、目標アドレスが前記第１メモリ領域の開始アドレスと前記第２メモリ領域の開始アドレスの間である場合には現在使用していない方のメモリ領域を選択して前記読み出されたデータを書き込んでもよい。目標アドレスが第１メモリ領域の開始アドレスよりも小さい場合に第１メモリ領域を選択し、第２メモリ領域の開始アドレスよりも大きい場合に第２メモリ領域を選択して光ディスクから読み出されたデータを書き込むことにより、結果としてアドレスの小さいファイル管理情報は主に第１メモリ領域に書き込まれ記憶されることになる。目標アドレスが両アドレスの間にある場合には、一義的に第１メモリ領域、あるいは第２メモリ領域のいずれかに設定することも可能であるが、この場合にはいずれかのメモリ領域の使用頻度が増大することになる。そこで、目標アドレスが両開始アドレスの間にある場合には交互に第１メモリ領域と第２メモリ領域に書き込むことで、使用頻度の平準化を図る。
【００１７】
本発明において、第２メモリ領域の記憶容量を第１メモリ領域の記憶容量よりも大きく設定した場合、前記制御手段は、前記入力コマンドで要求されるデータの目標アドレスの大小に応じ、目標アドレスが相対的に小さい場合には記憶容量の小さい前記第１メモリ領域を選択して前記読み出されたデータを記憶し、目標アドレスが相対的に大きい場合には記憶容量の大きい前記第２メモリ領域を選択して前記読み出されたデータを書き込み、かつ、前記入力コマンドで要求されるデータが前記第１メモリ領域に既に存在するキャッシュヒットが連続して所定回数に達した場合には、前記第２メモリ領域を選択して前記読み出されたデータを書き込んでもよい。容量の小さい第１メモリ領域で連続してキャッシュヒットした場合（シーケンシャルリード）、引き続いてシーケンシャルリードとなる可能性があるため、第１メモリ領域に代わって第２メモリ領域を選択することで、シーケンシャルリードにおけるキャッシュヒット率を向上させる。
【発明の効果】
【００１８】
本発明によれば、光ディスクからデータを読み出す場合の読み出し速度を向上させることができる。特に、ディレクトリデータ、ファイルデータ、ディレクトリデータ、ファイルデータ・・・とファイル管理情報とファイルデータとを交互に転送すべきとの要求がなされた場合においても、キャッシュヒット率を向上させて読み出し速度を向上できる。
【発明を実施するための最良の形態】
【００１９】
以下、図面に基づき本発明の実施形態について説明する。
【００２０】
図１には、本実施形態に係る光ディスク装置の全体構成図が示されている。ＤＶＤ−ＲＯＭやＤＶＤ−ＲＷ、ＤＶＤ−ＲＡＭ等の光ディスク１０はスピンドルモータ（ＳＰＭ）１２により回転駆動される。スピンドルモータＳＰＭ１２は、ドライバ１４で駆動され、ドライバ１４はサーボプロセッサ３０により所望の回転速度となるようにサーボ制御される。
【００２１】
光ピックアップ１６は、レーザ光を光ディスク１０に照射するためのレーザダイオード（ＬＤ）や光ディスク１０からの反射光を受光して電気信号に変換するフォトディテクタ（ＰＤ）を含み、光ディスク１０に対向配置される。光ピックアップ１６はスレッドモータ１８により光ディスク１０の半径方向に駆動され、スレッドモータ１８はドライバ２０で駆動される。ドライバ２０は、ドライバ１４と同様にサーボプロセッサ３０によりサーボ制御される。また、光ピックアップ１６のＬＤはドライバ２２により駆動され、ドライバ２２はオートパワーコントロール回路（ＡＰＣ）２４により駆動電流が所望の値となるように制御される。ＡＰＣ２４は、光ディスク１０のテストエリア（ＰＣＡ）において実行されたＯＰＣ（Optimum Power Control）により選択された最適記録パワーとなるようにドライバ２２の駆動電流を制御する。ＯＰＣは、光ディスク１０のＰＣＡに記録パワーを複数段に変化させてテストデータを記録し、該テストデータを再生してその信号品質を評価し、所望の信号品質が得られる記録パワーを選択する処理である。信号品質には、β値やγ値、変調度、ジッタ等が用いられる。
【００２２】
光ディスク１０に記録されたデータを再生する際には、光ピックアップ１６のＬＤから再生パワーのレーザ光が照射され、その反射光がＰＤで電気信号に変換されて出力される。光ピックアップ１６からの再生信号はＲＦ回路２６に供給される。ＲＦ回路２６は、再生信号からフォーカスエラー信号やトラッキングエラー信号を生成し、サーボプロセッサ３０に供給する。サーボプロセッサ３０は、これらのエラー信号に基づいて光ピックアップ１６をサーボ制御し、光ピックアップ１６をオンフォーカス状態及びオントラック状態に維持する。また、ＲＦ回路２６は、再生信号に含まれるアドレス信号をアドレスデコード回路２８に供給する。アドレスデコード回路２８はアドレス信号から光ディスク１０のアドレスデータを復調し、サーボプロセッサ３０やシステムコントローラ３２に供給する。
【００２３】
アドレス信号の１つの例は、ＣＤ−ＲＷディスクの場合にはウォブル信号であり、光ディスク１０の絶対アドレスを示す時間情報の変調信号で光ディスク１０のトラックをウォブルさせ、このウォブル信号を再生信号から抽出しデコードすることでアドレスデータ（ＡＴＩＰ）を得ることができる。ＤＶＤ−ＲＷディスクの場合にはランドプリピット方式でアドレスデータを得ることができる。ＤＶＤ−ＲＡＭディスクの場合にはＣＡＰＡ（Complimentary Allocated Pit Adressing）方式でアドレスデータを得ることができ、セクタ内に記録されたヘッダ部にアドレスデータが存在する。また、ＲＦ回路２６は、再生ＲＦ信号を２値化回路３４に供給する。２値化回路３４は、再生信号を２値化し、得られたＥＦＭ信号（ＣＤディスク）あるいは８−１６変調信号（ＤＶＤディスク）をエンコード／デコード回路３６に供給する。エンコード／デコード回路３６では、２値化信号をＥＦＭ復調あるいは８−１６復調及びエラー訂正して再生データを得、当該再生データをインタフェースＩ／Ｆ４０を介してパーソナルコンピュータなどのホスト装置に出力する。なお、再生データをホスト装置に出力する際には、エンコード／デコード回路３６はキャッシュメモリ（バッファメモリ）３８に再生データを一旦蓄積した後に出力する。キャッシュメモリ３８へのデータ格納についてさらに後述する。
【００２４】
光ディスク１０にデータを記録する際には、ホスト装置からの記録すべきデータはインターフェースＩ／Ｆ４０を介してエンコード／デコード回路３６に供給される。エンコード／デコード回路３６は、記録すべきデータをキャッシュメモリ３８に格納し、当該記録すべきデータをエンコードしてＥＦＭデータあるいは８−１６変調データとしてライトストラテジ回路４２に供給する。ライトストラテジ回路４２は、ＥＦＭデータを所定の記録ストラテジに従ってマルチパルス（パルストレーン）に変換し、記録データとしてドライバ２２に供給する。記録ストラテジは、例えばマルチパルスにおける先頭パルスのパルス幅や後続パルスのパルス幅、パルスデューティから構成される。記録ストラテジは記録品質に影響することから、通常はある最適ストラテジに固定される。ＯＰＣ時に記録ストラテジを併せて設定してもよい。記録データによりパワー変調されたレーザ光は光ピックアップ１６のＬＤから照射されて光ディスク１０にデータが記録される。データを記録した後、光ピックアップ１６は再生パワーのレーザ光を照射して当該記録データを再生し、ＲＦ回路２６に供給する。ＲＦ回路２６は再生信号を２値化回路３４に供給し、２値化されたＥＦＭデータあるいは８−１６変調データはエンコード／デコード回路３６に供給される。エンコード／デコード回路３６は、ＥＦＭデータあるいは８−１６変調データをデコードし、キャッシュメモリ３８に記憶されている記録データと照合する。ベリファイの結果はシステムコントローラ３２に供給される。システムコントローラ３２はベリファイの結果に応じて引き続きデータを記録するか、あるいは交替処理を実行するかを決定する。
【００２５】
このような構成において、データを再生する際には、既述したようにキャッシュメモリ３８に一旦データを格納し、ホスト装置に転送する。システムコントローラ３２の基本動作は、ホスト装置からのリードコマンドを受け付け、リードコマンドにより転送要求されたデータ区間として転送要求開始位置を目標アドレスとして光ピックアップ１６をシークさせ、データの読み出しを行う。読み出されたデータをエンコード／デコード回路３６でデコードし、キャッシュメモリ３８に格納する。このとき、従来技術と同様に、転送要求されていないデータについても先読みしてデコードし、キャッシュメモリ３８に格納する。これにより、キャッシュメモリのヒット率を向上させることができる。
【００２６】
一方、本実施形態のキャッシュメモリ３８は、図２に示されるように２つの領域を有する。第１の領域（以下、Ａキャッシュと称する）は主にファイル管理情報としてのディレクトリ情報を格納する領域であり、第２の領域（以下、Ｂキャッシュと称する）は主にファイル本体のデータを格納する領域である。光ディスク１０の内周に近い部分にはディレクトリ情報が記憶される。
【００２７】
ここで、ディレクトリ情報について簡単に説明する。ＤＶＤ等においては、ＵＤＦ(Universal Disk Format)に従った論理フォーマットが用いられており、ＵＤＦは階層的なファイルシステムによって構成され、ルート・ディレクトリに格納された情報からサブディレクトリや実体的なファイルが参照される。サブディレクトリに格納された情報から、さらに別のサブディレクトリの参照や、実体的なファイルの参照がなされる。ディスク上の記録領域は、セクタを最小単位としてアクセスされる。光ディスクの最内周側から、リードイン領域に続けてボリューム情報が書き込まれるシステム領域が配され、ここに、ＶＲＳ(Volume Recognition Sequence)、ＭＶＤＳ(Main VolumeDescriptor Sequence)、ＬＶＩＳ(Logical Volume Integrity Sequence)およびＡＶＤＰ（Anchor Volume Descriptor Pointer）が書き込まれる。ルートディレクトリのファイルエントリが書き込まれる記録領域の位置は、ＡＶＤＰからＭＶＤＳおよびＦＳＤを順に参照することで認識される。ファイルエントリは、ファイルやディレクトリの属性情報およびアロケーションディスクリプタからなる。アロケーションディスクリプタは、ファイルやディレクトリの論理アドレスと大きさ（長さ）との情報であり、これによってファイルの実体的なデータ（実データ）が記録された記録領域やディレクトリの実体が記録された記録領域が示される。また、ルートディレクトリのファイルエントリにおいて、アロケーションディスクリプタによって実体としてのルートディレクトリの論理アドレスと大きさとが示される。ルートディレクトリは、１または複数のファイル識別記述子ＦＩＤを含み、ＦＩＤによって、ルートディレクトリ下にあるサブディレクトリのファイルエントリやファイルのファイルエントリが参照される。ＵＤＦにおいて、ルートディレクトリを除いてディスクに記録されているサブディレクトリやファイルは、ＦＩＤおよびファイルエントリをポインタとして、ＦＩＤ、ファイルエントリおよび実体の順にアクセスが行われて認識される。このように、ディレクトリ情報を参照することで実体のファイルデータにアクセスするため、光ディスク１０のファイルを読み出す場合には、本来読むべきファイルデータを読み出す合間に細かくこれらのディレクトリ情報を読み出すことになる。すなわち、
ディレクトリデータ→ファイルデータ→ディレクトリデータ→ファイルデータ→ディレクトリデータ・・
の如くである。図２において、キャッシュメモリ３８をＡキャッシュとＢキャッシュの２つの分割することで、ディレクトリデータをＡキャッシュに保持し、ファイルデータをＢキャッシュに保持することが可能となり、これによりキャッシュヒット率を向上させることができる。Ａキャッシュは主にディレクトリデータ用、Ｂキャッシュは主にファイルデータ用であるため、これら２つのキャッシュのメモリ容量はＡキャッシュ＜Ｂキャッシュであることが望ましい。例えば、１つのキャッシュメモリ３８を２つに分割する場合、ＡキャッシュとＢキャッシュの容量比を１：４とすることができる。
【００２８】
以下、本実施形態におけるキャッシュメモリ３８へのデータの格納及び転送処理について説明する。
【００２９】
図３には、本実施形態における電源ＯＮ時の処理が示されている。まず、電源がＯＮされると、各種ＬＳＩ、パラメータ等を初期化し（Ｓ１０１）、次にキャッシュメモリ３８のＡキャッシュ及びＢキャッシュのバッファスタートアドレスをＰＳＮ（物理セクタアドレス）＝５００００ｈに初期化する（Ｓ１０２）。このＰＳＮ＝５００００ｈは、光ディスク１０の内周側の所定位置であり、ディレクトリデータがこの所定位置よりも内周側に存在し、ファイルデータがこの所定位置よりも外周側に存在すると一応推定できる程度の位置である。ちなみに、ＤＶＤにおいては、半径２４ｍｍからのデータ領域の先頭セクタ番号はＰＳＮ＝３００００ｈと定められており、３００００ｈ〜５００００ｈにディレクトリデータが含まれると一応推定される。ホスト装置からリードコマンドを受け付け、転送要求された目標アドレスが５００００ｈより小さければＡキャッシュが使用され、５００００ｈより大きければＢキャッシュが使用されることになる。もちろん、５００００ｈの前後でディレクトリデータとファイルデータとが厳密に峻別される必要はなく、５００００ｈを超えてディレクトリデータが存在してもよく、あるいは５００００ｈより小さいアドレスにファイルデータが存在してもよい。
【００３０】
バッファスタートアドレスの初期化が完了した後、システムコントローラ３２は媒体起動処理を行い（Ｓ１０３）、所定のアイドル（ＩＤＬＥ）処理を実行する（Ｓ１０４）。
【００３１】
図４には、アイドル処理のフローチャートが示されている。まず、ヒットしていないセクタのデコード処理実行指令があるか否かを判定し（Ｓ２０１）、ホスト装置からの指令があれば所定のデコード処理を実行する（Ｓ２０３）。初期状態からリードコマンドを受け付ける場合、キャッシュメモリ３８にはデータが格納されていないので、常にヒットしていないセクタのデコード処理実行命令となる。デコード処理実行指令がない場合には、インタフェースやサーボ系などの制御を行う（Ｓ２０２）。
【００３２】
図５には、アイドル処理において割込でリードコマンドを受け付けたときの処理フローチャートが示されている。まず、現在デコードしているキャッシュのヒットチェックを行い、キャッシュがヒットしたか否かを判定する（Ｓ２０１１，Ｓ２０１２）。初期状態においてはキャッシュメモリ３８にはデータがバッファリングされていないからヒットすることはない。前回の読み出しにおいてバッファリングしている場合、ヒットする可能性がある。そして、キャッシュがヒットした場合、現在デコード中のキャッシュがヒットしたことをデータとして保持する（Ｓ２０１３）。次に、要求セクタが全てヒットしたか否かを判定し（Ｓ２０１４）、全てヒットした場合にはＡｌｌＨｉｔ（全てヒット）をデータとして保持する（Ｓ２０１５）。この場合、ヒットしたセクタをホスト装置に転送してリードコマンドに対する処理が終了する（Ｓ２０１６）。
【００３３】
一方、要求セクタの全てがヒットしない場合、ＦｒｏｎｔＨｉｔ（部分ヒット）であることをデータとして保持し、ヒットしていないセクタのデコード処理実行指令を出力する（Ｓ２０２０）。このデコード処理実行指令が出力されると、上述したアイドル処理のＳ２０１においてＹＥＳと判定され、デコード処理が実行される。
【００３４】
また、キャッシュが全くヒットしない場合、現在デコード中ではないキャッシュのヒットチェックを行う（Ｓ２０１７）。つまり、現在Ａキャッシュのデコード中である場合、Ｂキャッシュのヒットチェックを行う。このチェックは現在デコード中ではないＢキャッシュの、キャッシュ開始アドレスやデコード完了セクタ数等のデータに基づいて実行され、これらのデータは予めＢキャッシュ使用中に取得して保持しておく。そして、他のキャッシュでヒットする場合には、現在デコード中ではないキャッシュがヒットしたことをデータとして保持し（Ｓ２０１９）、要求セクタが全てヒットしたか否かを判定する（Ｓ２０１４）。当該他のキャッシュでもヒットしない場合、ＮｏＨｉｔ（キャッシュヒットせず）を示すデータを保持し、デコード処理実行指令を出力する（Ｓ２０２１）。この場合も、アイドル処理のＳ２０１にてＹＥＳと判定され、デコード処理が実行されることになる。
【００３５】
図６には、アイドル処理においてデコード処理実行指令があると判定された場合（部分ヒット及びキャッシュヒットしなかった場合）に実行される、デコード処理の処理フローチャートが示されている。まず、システムコントローラ３２は、キャッシュ状況の確認と、デコードするキャッシュ（光ディスク１０から読み出して復調し、これらをバッファリングするためのキャッシュ）の選択を行う（Ｓ３０１）。この処理は、要求セクタの全てがキャッシュヒットしていないか、あるいは部分的にヒットしているかのいずれであるかを確認し、キャッシュヒットしていない場合であって、ホスト装置から要求された目標アドレスが５００００ｈより小さければＡキャッシュを選択し、５００００ｈより大きければＢキャッシュを選択する処理である。部分的にヒットしている場合には、ヒットしているキャッシュがそのまま継続して選択される。初期化後の最初のリードコマンドを受け付けた場合、その目標アドレスに応じてＡキャッシュ、Ｂキャッシュのいずれかが選択されることになる。
【００３６】
デコードに用いるキャッシュを選択した後、ホスト装置から要求された目標アドレスの手前に光ピックアップ１６をシークさせ、要求データのデコードを開始する（Ｓ３０２）。すなわち、光ディスク１０からデータを読み出し、エンコード／デコード回路３６で復調し、復調データをＳ３０１で選択したキャッシュにバッファリングする。例えば、目標アドレスが３００００ｈである場合、５００００ｈより小さいためＡキャッシュが選択され、復調データはＡキャッシュにバッファリングされる。そして、目標アドレスが正常にデコードできたか否かを判定し（Ｓ３０３）、正常にデコードできた場合には、目標アドレスを次のブロックに設定して引き続きデコードを行う（Ｓ３０４）。以上の処理を要求された全てのセクタについて行い、さらに要求されていないセクタについても先読みして選択されたキャッシュにバッファリングする。デコードしたデータを選択キャッシュにバッファリングした後、ホスト装置から要求されたセクタをキャッシュから読み出してホスト装置に転送する（Ｓ３０５）。要求されたセクタを全て転送した場合、ホスト装置からのリードコマンドに対する処理を終了する。
【００３７】
一方、要求されたセクタを全て転送できなかった場合には（Ｓ３０６でＮＯ）、現在、Ａキャッシュでデコード及び転送を実行しているか否かを判定する（Ｓ３０７）。容量の小さいＡキャッシュでデコード及び転送している場合には、Ａキャッシュで既にシーケンシャルにリードしＡキャッシュをリングメモリとして３回（３周）以上使用しているか否かを判定する（Ｓ３０８）。この判定のために、システムコントローラ３２はＡキャッシュにおけるリングの回数をカウントしてそのデータを保持していることは言うまでもない。シーケンシャルにリードして３周以上に達していない場合には、引き続きデコードしてＡキャッシュにバッファリングするが（Ｓ３１０）、既に３周に達している場合には、しばらくシーケンシャルリードが続くと判断し、デコード及び転送の対象をＡキャッシュから容量の大きなＢキャッシュに変更する（Ｓ３０９）。すなわち、ホスト装置に転送すべき要求セクタの目標アドレスの大小によらず、読み出されたデータのバッファリング先として、Ｂキャッシュを選択する。但し、ＡキャッシュからＢキャッシュにバッファリング先を変更しても、キャッシュメモリ３８の２分割構造はそのまま維持される。つまり、従来技術のようにＡキャッシュを無効としてキャッシュメモリ３８を全てリングメモリとして使用するのではなく、Ｂキャッシュにバッファリングする場合でも、Ａキャッシュにバッファリングされているデータは何らの影響も受けずそのまま維持する。３周以上リングメモリとして使用された場合にＡキャッシュからＢキャッシュにバッファリング先を変更するのは、シーケンシャルリードが続くような大きなデータの場合に、容量の小さいＡキャッシュを使用し続けるのは効率的ではない（バッファリングできるデータ容量が小さく、先読みできるデータ量が限定される）からである。Ｓ３０１にてＢキャッシュが選択されている場合には、シーケンシャルリードが続いてもＢキャッシュをそのままリングメモリとして使用し続ける（Ｓ３０７にてＮＯ）。
【００３８】
なお、Ｓ３０３にて目標アドレスが正常にデコードできなかった場合には、目標ブロックのデコードに失敗したとして（Ｓ３１１）、リトライを行い、所定のリトライ回数だけリトライしても依然としてデコードできない場合には何らかの異常が生じたと判定してエラーを表示する（Ｓ３１２，Ｓ３１３）。
【００３９】
図７には、キャッシュヒットしなかった場合におけるキャッシュ選択処理が示されている。図５のＳ２０２１にてＮｏＨｉｔであると判定された場合に図６のＳ３０１にて実行される処理である。まず、ホスト装置からのリードコマンドの目標アドレスがＡキャッシュのバッファ開始アドレスより小さいか否かを判定する（Ｓ４０１）。初期状態では、既述したように開始アドレスはＰＳＮ＝５００００ｈに初期化されているため、この５００００ｈより小さいか否かが判定され、それ以後は既にバッファリングされているデータの開始アドレスが比較の対象となる。そして、目標アドレスが開始アドレスよりも小さい場合には、Ａキャッシュを選択する（Ｓ４０２）。目標アドレスがＡキャッシュの開始アドレスよりも小さくない場合には、次に目標アドレスがＢキャッシュの開始アドレスよりも大きいか否かを判定する（Ｓ４０５）。Ｂキャッシュの開始アドレスはＰＳＮ＝５００００ｈに初期化されているため、初期状態では５００００ｈより大きいか否かが判定され、それ以後は既にバッファリングされているデータの開始アドレスが比較の対象となる。目標アドレスがＢキャッシュの開始アドレスよりも大きい場合には、Ｂキャッシュを選択する（Ｓ４０５）。これらの処理は、目標アドレスの小さいものはできるだけＡキャッシュを使用し、目標アドレスの大きいものはできるだけＢキャッシュを使用するためであり、ディレクトリデータは内周近傍に存在してそのＰＳＮは小さいため、主にＡキャッシュにバッファリングされることになる。
【００４０】
一方、目標アドレスがＡキャッシュの開始アドレスよりも大きく、かつ、Ｂキャッシュの開始アドレスよりも小さい場合には、いずれのキャッシュを選択してもよいが、本実施形態では、Ａキャッシュ及びＢキャッシュの使用頻度を平準化するために、これらのキャッシュを交互に選択する。すなわち、前回、もしくは現在デコードしているのはＡキャッシュか否かを判定し、Ａキャッシュを使用しているのであればＢキャッシュを選択し（Ｓ４０６）、Ｂキャッシュを使用しているのであればＡキャッシュを選択する（Ｓ４０２）。この交互選択処理により、Ａキャッシュにおいてもディレクトリデータだけでなくファイルデータをバッファリングする場合が生じるが、ファイルデータのシーケンシャルリードが所定回数続いた場合にはＡキャッシュからＢキャッシュに変更されることは既に述べた通りである。ＡキャッシュとＢキャッシュの平準化を考慮しない場合、目標アドレスがＡキャッシュの開始アドレスよりも大きく、かつ、Ｂキャッシュの開始アドレスよりも小さい場合には一律にＢキャッシュを選択してもよい。
【００４１】
Ａキャッシュが選択された場合、現在、Ａキャッシュを用いてデコードしているか否かを判定する（Ｓ４０３）。現在、Ａキャッシュでデコードしている場合には引き続きＡキャッシュでデコードすることを意味するから、既述した図６のデコード処理に移行する。一方、現在Ａキャッシュでデコードしていない、つまりＢキャッシュでデコードしている場合には、Ｂキャッシュのキャッシュ開始アドレス、デコード完了セクタ数等の情報を、デコードしていないキャッシュの情報としてシステムコントローラ３２が保持しておく（Ｓ４０４）。保持した情報は、図５のＳ２０１７にてキャッシュヒットするか否かを確認するために使用される。その後、図６のデコード処理に移行する。初期状態からのリードコマンド受付時には、当然ながら保持すべきデータは存在しない。
【００４２】
Ｂキャッシュが選択された場合、同様にして現在、Ｂキャッシュを用いてデコードしているか否かを判定し（Ｓ４０７）、現在Ｂキャッシュでデコードしている場合には引き続きＢキャッシュでデコードすることを意味するから、図６のデコード処理に移行する。一方、現在Ａキャッシュでデコードしている場合には、Ａキャッシュのキャッシュ開始アドレス、デコード完了セクタ数等の情報を、デコードしていないキャッシュの情報としてシステムコントローラ３２が保持しておく（Ｓ４０８）。このデータも、図５のＳ２０１７で使用される。その後、図６のデコード処理に移行する。
【００４３】
以上のようにして、ＮｏＨｉｔの場合には、目標アドレスの大小に応じてＡキャッシュとＢキャッシュのいずれかが選択され、光ディスク１０から読み出され復調されたデータが選択されたキャッシュにバッファリングされて転送される。ディレクトリデータのようにアドレスが小さいデータに関しては、優先的にＡキャッシュにバッファリングされてホスト装置に転送され、本来のファイルデータのようにアドレスが大きいデータに関しては、優先的にＢキャッシュにバッファリングされてホスト装置に転送される。したがって、ディレクトリデータ→ファイルデータ→ディレクトリデータ→ファイルデータ・・と交互にリードする場合においても、アドレスの小さなディレクトリデータはＡキャッシュにバッファリングされ、ファイルデータのリード時においてもＡキャッシュにバッファリングされたディレクトリデータはそのまま有効に存在するため、次にディレクトリデータをリードする際にもＡキャッシュにおいてヒットする確率が高く、リード時間を短縮することができる。また、ディレクトリデータのリードからファイルデータのリードを実行する場合にも、Ｂキャッシュにファイルデータがバッファリングされており、ディレクトリデータのリード時にもこのデータは影響されることはないので、ファイルデータリード時にＢキャッシュでヒットする確率が高く、リード時間を短縮することができる。
【００４４】
図８には、部分的にキャッシュヒットしている場合のキャッシュ選択処理が示されている。図５のＳ２０２０にて部分ヒットであると判定された場合に図６のＳ３０１にて実行される処理である。まず、部分ヒットしたキャッシュがＡキャッシュか否かを判定する（Ｓ５０１）。Ａキャッシュで部分ヒットした場合、Ａキャッシュが選択されるが、現在Ａキャッシュでデコードされているか否かを確認し（Ｓ５０２）、現在Ｂキャッシュでデコードされている場合には、Ａキャッシュに変更するに際してＢキャッシュのキャッシュ開始アドレス、デコード完了セクタ数等の情報を保持しておく（Ｓ５０３）。その後、図６のデコード処理に移行する。現在Ａキャッシュでデコードしていない場合とは、具体的には図５のＳ２０１９、Ｓ２０１４の処理である。また、Ｂキャッシュで部分ヒットした場合、Ｂキャッシュが選択されるが、現在Ｂキャッシュでデコードされているか否かを確認し（Ｓ５０４）、現在Ａキャッシュでデコードされている場合にはＡキャッシュのキャッシュ開始アドレス、デコード完了セクタ数等の情報を保持しておく。現在Ｂキャッシュでデコードしていない場合とは、具体的には図５のＳ２０１９、Ｓ２０１４の処理である。
【００４５】
以上のようにして、部分ヒット時には、部分ヒットしたキャッシュが選択され、光ディスク１０から読み出され復調されたデータが選択されたキャッシュにバッファリングされて転送される。したがって、ディレクトリデータ→ファイルデータ→ディレクトリデータ→ファイルデータ・・と交互にリードする場合においても、例えばサイズの大きなファイルデータを読み出す場合にも継続して同一キャッシュにバッファリングされてヒットすることになる。
【００４６】
図９Ａ〜図９Ｄには、キャッシュメモリ３８の使用状況の一例が示されている。ディレクトリデータ→ファイルデータ→ディレクトリデータ→ファイルデータとリードする場合、まず目標アドレスが小さいためＡキャッシュが選択され、ディレクトリデータが読み出されてデコードされ、Ａキャッシュにバッファリングされる。バッファリングされたディレクトリデータの全部あるいはその一部はホスト装置に転送される（図９Ａ）。次に、ディレクトリデータに基づいて本来のファイルデータをデコードする場合、Ｂキャッシュが選択され、ファイルデータが読み出されてデコードされ、Ｂキャッシュにバッファリングされる。バッファリングされたファイルデータの全部あるいはその一部はホスト装置に転送される（図９Ｂ）。次に、ディレクトリデータが再び要求された場合、現在デコード中であるＢキャッシュではヒットしないが、ディレクトリデータをバッファリングしているＡキャッシュでヒットする可能性があり、ヒットした場合にはそのデータをホスト装置に転送できる（図９Ｃ）。Ａキャッシュで部分的にヒットした場合、残りのデータを読み出してＡキャッシュにバッファリングするとともにホスト装置に転送する。その後、再びファイルデータが要求された場合、現在デコード中であるＡキャッシュではヒットしないが、ファイルデータをバッファリングしているＢキャッシュでヒットする可能性があり、ヒットした場合にはそのデータをホスト装置に転送できる（図９Ｄ）。
【００４７】
このように、ＡキャッシュとＢキャッシュを常に確保し、容量の小さいＡキャッシュに主にディレクトリデータをバッファリングし、容量の大きいＢキャッシュに主にファイルデータをバッファリングすることで、ヒット率を向上させ、リード速度を向上させることができる。なお、本願出願人は、ファイル数約４５００、総容量約４５０ＭＢのデータに対し、キャッシュメモリを２つに分割した場合と分割しない場合とでファイルのコピーに要する時間を計測したところ、以下のようなデータを得ることができた。本実施形態の有効性は明らかであろう。
【００４８】
キャッシュメモリを分割しない場合：１６分５３秒
キャッシュメモリを２つに分割する場合：４分１５秒
【図面の簡単な説明】
【００４９】
【図１】実施形態の光ディスク装置の全体構成図である。
【図２】実施形態のキャッシュメモリの構成図である。
【図３】電源ＯＮ時の処理フローチャートである。
【図４】アイドル処理フローチャートである。
【図５】リードコマンド受付時の処理フローチャートである。
【図６】図４におけるデコード処理の詳細フローチャートである。
【図７】図６におけるキャッシュ選択処理の詳細フローチャートであって、ノーヒット時のフローチャートである。
【図８】図６におけるキャッシュ選択処理の詳細フローチャートであって、部分ヒット時のフローチャートである。
【図９Ａ】キャッシュメモリの使用状況説明図（その１）である。
【図９Ｂ】キャッシュメモリの使用状況説明図（その２）である。
【図９Ｃ】キャッシュメモリの使用状況説明図（その３）である。
【図９Ｄ】キャッシュメモリの使用状況説明図（その４）である。
【図１０】従来のキャッシュ使用状況説明図（その１）である。
【図１１】従来のキャッシュ使用状況説明図（その２）である。
【図１２】従来のキャッシュ使用状況説明図（その３）である。
【符号の説明】
【００５０】
１０  光ディスク装置、１６  光ピックアップ、３２  システムコントローラ、３８  キャッシュメモリ。
【図１】
2005107997.tif 000003
【図２】
2005107997.tif 000004
【図３】
2005107997.tif 000005
【図４】
2005107997.tif 000006
【図５】
2005107997.tif 000007
【図６】
2005107997.tif 000008
【図７】
2005107997.tif 000009
【図８】
2005107997.tif 000010
【図９Ａ】
2005107997.tif 000011
【図９Ｂ】
2005107997.tif 000012
【図９Ｃ】
2005107997.tif 000013
【図９Ｄ】
2005107997.tif 000014
【図１０】
2005107997.tif 000015
【図１１】
2005107997.tif 000016
【図１２】
2005107997.tif 000017