(57)【要約】【課題】アプリケーションの処理の特性にあわせたキャッシュ制御を可能にし、データ転送効率を高めること。【解決手段】ディスクと、ディスクから読み込んだデータ及びホストから転送されたデータを一時的に保存するキャッシュと、キャッシュとホスト及びキャッシュとディスクの間のデータ転送を制御する制御部とを備え、キャッシュ内に、データの処理方針の異なるアプリケーション用のコマンド種別ごとにそれぞれ独立したキャッシュ領域を設定可能にする。さらに該コマンド種別ごとに先読みの仕方を制御することで、データの処理方針の異なるアプリケーションのアクセス特性を生かした効率のよい先読みを実現可能にする。【選択図】  図４
2005309653.tif 000002
【特許請求の範囲】
【請求項１】
ディスクと、前記ディスクから読み込んだデータ及びホストから転送されたデータを一時的に保存するキャッシュと、前記キャッシュとホスト及び前記キャッシュと前記ディスクの間のデータ転送を制御する制御部とを備えるディスク装置において、
前記キャッシュ内に、データの処理方針が異なるアプリケーション用のコマンド種別ごとにそれぞれ独立したキャッシュ領域を設定し、前記キャッシュ領域毎に当該キャッシュ領域に書き込まれたデータを管理するキャッシュデータ管理テーブルを有することを特徴とするディスク装置。
【請求項２】
請求項１に記載のディスク装置において、AVデータ処理用コマンドとPCアプリケーション用コマンドに対してそれぞれ独立したキャッシュ領域を設定することを特徴とするディスク装置。
【請求項３】
請求項１に記載のディスク装置において、ホストからコマンド種別ごとのキャッシュ領域の比率についての指示を受け、前記比率に従って前記キャッシュ内にコマンド種別ごとのキャッシュ領域を設定することを特徴とするディスク装置。
【請求項４】
請求項１に記載のディスク装置において、コマンド種別ごとのコマンド発行頻度に基づいて、前記コマンド種別ごとに設定するキャッシュ領域の比率を決定することを特徴とするディスク装置。
【請求項５】
請求項１に記載のディスク装置において、コマンド種別ごとの最新コマンド受領時刻とコマンド種別ごとに予め設定したキャッシュ領域継続時間を保持するテーブルを有し、最新コマンド受領時刻からの経過時間が前記キャッシュ領域継続時間を超過したコマンド種別に割り当てたキャッシュ領域を開放し、他のコマンド種別に割り当てたキャッシュ領域と統合することを特徴とするディスク装置。
【請求項６】
請求項１に記載のディスク装置において、ホストからの指示により、特定のコマンド種別に一旦割り当てたキャッシュ領域を開放し、他のコマンド種別に割り当てたキャッシュ領域と統合することを特徴とするディスク装置。
【請求項７】
請求項１に記載のディスク装置において、コマンド種別に応じて先読み方法が異なることを特徴とするディスク装置。
【請求項８】
請求項７に記載のディスク装置において、AVデータ処理用コマンドとPCアプリケーション用コマンドとで先読み方法が異なることを特徴とするディスク装置。
【請求項９】
請求項８に記載のディスク装置において、AVデータ処理用コマンドでは最大で割り当てたキャッシュ領域いっぱい先読みを実行し、PCアプリケーション用コマンドでは先読み可能な時間いっぱい先読みを実行することを特徴とするディスク装置。
【請求項１０】
ディスクと、前記ディスクから読み込んだデータ及びホストから転送されたデータを一時的に保存するキャッシュと、前記キャッシュとホスト及び前記キャッシュと前記ディスクの間のデータ転送を制御する制御部とを備えるディスク装置によるキャッシュ制御方法において、
前記制御部は、
受領したコマンドの種別を判定するステップと、
前記キャッシュを検査するステップと、
前記検査の結果、前記キャッシュに前記判定された第１の種別のコマンドに割り当てられたキャッシュ領域がなく前記第１の種別のコマンドとはデータの処理方針が異なるアプリケーション用の第２の種別のコマンドに割り当てられたキャッシュ領域があったとき、現キャッシュ領域のカレントアドレスが所定のアドレスを超えているか否か判定するステップと、
前記判定でカレントアドレスが前記所定のアドレスを超えていれば、前記キャッシュの０から前記所定のアドレス−１までを前記第１の種別のコマンドに対するキャッシュ領域に設定し、前記所定のアドレスから最大アドレスまでを前記第２の種別のコマンドに対するキャッシュ領域に設定するステップと
を実行することを特徴とするキャッシュ制御方法。
【請求項１１】
請求項１０に記載のキャッシュ制御方法において、前記第１の種別のコマンドはAVデータ処理用コマンド又はPCアプリケーション用コマンドであり、前記第２の種別のコマンドはPCアプリケーション用コマンド又はAVデータ処理用コマンドであることを特徴とするキャッシュ制御方法。
【請求項１２】
請求項１０に記載のキャッシュ制御方法において、前記制御部は、ホストからキャッシュ領域の分割比率についての指示を受領し、その指示に基づいて前記所定のアドレスを決定することを特徴とするキャッシュ制御方法。
【請求項１３】
請求項１０に記載のキャッシュ制御方法において、前記制御部は、前記第１の種別のコマンドの発行間隔及び前記第１の種別のコマンドの発行間隔に関する情報を収集し、その情報に基づいて前記所定のアドレスを決定することを特徴とするキャッシュ制御方法。
【請求項１４】
請求項１０に記載のキャッシュ制御方法において、
前記制御部は、
コマンド種別ごとに最新のコマンド受領時刻からの経過時間が予め設定したキャッシュ領域継続時間を超過したか否かを判定するステップと、
最新コマンド受領時刻からの経過時間が前記キャッシュ領域継続時間を超過したコマンド種別があるとき、当該コマンド種別に割り当てたキャッシュ領域を開放し、他のコマンド種別に割り当てたキャッシュ領域と統合するステップとを実行することを特徴とするキャッシュ制御方法。
【請求項１５】
請求項１０に記載のキャッシュ制御方法において、コマンド種別に応じて先読み方法を変えることを特徴とするキャッシュ制御方法。
【請求項１６】
請求項１０に記載のキャッシュ制御方法において、AVデータ処理用コマンドとPCアプリケーション用コマンドとで先読み方法を変えることを特徴とするキャッシュ制御方法。
【請求項１７】
請求項１０に記載のキャッシュ制御方法において、AVデータ処理用コマンドでは最大で割り当てたキャッシュ領域いっぱい先読みを実行し、PCアプリケーション用コマンドでは先読み可能な時間いっぱい先読みを実行することを特徴とするキャッシュ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードディスク上のデータを効率よくキャッシュに転送し、キャッシュのヒット率を高め、コマンド実行時間を短縮し、データ転送速度を高めるためのキャッシュ制御に関する。
【背景技術】
【０００２】
ハードディスクでは、キャッシュを設けディスク上のデータをキャッシュに転送して管理し、キャッシュから直接ホストにデータを転送できるようにすることで、ホストへのデータ転送効率を上げている。さらにキャッシュ領域をいくつかに区分し、それぞれの領域に性質の異なる処理のデータあるいは性質の異なるデータを分類して書き込むことでキャッシュのヒット率をより向上させ、データの転送効率を上げている。
【０００３】
たとえば、ランダム、シーケンシャルなどのアクセスパタンを抽出し、各パタンごとにキャッシュ領域を割り当て、ヒット率を向上させるという方式がある。このようなキャッシュ制御方式は、特許文献１、特許文献２、特許文献３などに記載されている。また、キャッシュ領域を２つに分け、データへのアクセス状況を統計処理した結果に基づき２つに分けたキャッシュ領域にデータを振り分ける方式がある。このようなキャッシュ制御方式は、特許文献４に記載されている。またたとえば、プログラムやスレッドごとに、キャッシュ領域を設定・管理するキャッシュ制御方式などがある。このようなキャッシュ制御方式は、特許文献５、特許文献６などに記載されている。
【０００４】
【特許文献１】特開平7-105095号公報
【特許文献２】特開平10-301847号公報
【特許文献３】特開平10-254778号公報
【特許文献４】特開平5-189316号公報
【特許文献５】特開平2001-101076号公報
【特許文献６】特開平2000−56993号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
キャッシュのヒット率を高めるためには、ヒットする可能性が高いデータを効率よくキャッシュに読み込み、かつ優先的にキャッシュに残すことが必要である。特許文献１、特許文献２、特許文献３に記載の技術では、制御プログラムにより抽出したシーケンシャルやランダムなどのアクセスパタンに基づき、キャッシュ領域を割り当て管理しているものの、明確なアクセスパタンを抽出できないと、キャッシュデータを効率良く管理できないという問題があった。特許文献４に記載の技術では、アクセスが特定のデータに集中しないアクセスパタンでは効果が得られないという問題があった。また、特許文献５、特許文献６に記載の技術では、プロセスやスレッドごとにキャッシュ領域を管理できるため、複数アプリケーションを実行するシステム全体の処理効率を上げることが可能であるものの、システムによってはコスト等の問題から、ディスク外部に新たにキャッシュとその制御装置を設けられないという問題があった。そのため、ディスク装置単体だけでもプロセスやスレッドの概念を念頭に置いて制御の効率化を図ることが必要となっている。
【０００６】
以上の問題点を考慮した上で、本発明の第１の課題は、データの処理方針の異なるアプリケーション用のコマンド種別ごとにキャッシュ領域を設けデータを管理することで、アプリケーションの処理の特性にあわせたキャッシュ制御を可能にすることである。ここで、データの処理方針の相違とは、リアルタイム処理と非リアルタイム処理のような処理の違いを指す。
【０００７】
また、本発明の第２の課題は、コマンド発行状況の経時変化に対応するため、特定のコマンド種別に一旦割り当てたキャッシュ領域を開放し、他のコマンド種別に割り当てたキャッシュ領域と統合可能にすることで、キャッシュ領域の有効活用を図ることである。
【０００８】
また、本発明の第３の課題は、コマンド種別ごとに割り当てたキャッシュ領域に、各コマンド種別のアクセス特性を生かして効率よく先読みを実施してデータを読み込むことで、ヒット率を向上させディスク装置のデータ転送速度を上げることである。
【課題を解決するための手段】
【０００９】
上記課題を解決するために本発明は、データの処理方針が異なるアプリケーション用のコマンド種別ごとに、キャッシュ領域を設定可能にした。すなわち、本発明のディスク装置は、ディスクと、ディスクから読み込んだデータ及びホストから転送されたデータを一時的に保存するキャッシュと、キャッシュとホスト及びキャッシュとディスクの間のデータ転送を制御する制御部とを備え、キャッシュ内に、データの処理方針が異なるアプリケーション用のコマンド種別ごとにそれぞれ独立したキャッシュ領域を設定し、そのキャッシュ領域毎に当該キャッシュ領域に書き込まれたデータを管理するキャッシュデータ管理テーブルを有する。
【００１０】
また、コマンド種別ごとの最新コマンド受領時刻からの経過時間により、あるいはホストの指示によって、特定のコマンド種別に一旦割り当てたキャッシュ領域を開放し、他のコマンド種別に割り当てたキャッシュ領域と統合することを可能にした。さらに、コマンド種別ごとに先読み方法を選択可能にすることで、コマンド種別のアクセス特性を生かした効率のよい先読みを実施可能にした。
【発明の効果】
【００１１】
本発明によれば、データの処理方針が異なるアプリケーション用のコマンド種別ごとにキャッシュ領域を設定し、さらにコマンド種別ごとに先読みの仕方を制御することで、キャッシュヒット率を向上させ、データの転送速度を上げることが可能である。そのため例えば、動画像再生などのAVアプリケーションと、文書作成などのPCアプリケーションをPC上で同時に実行する場合において、効率よいデータ転送を実現できる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施例を図面により説明する。本実施例では、代表的なコマンド種別として、主として動画・音声を処理するアプリケーションが使用するコマンド（以下AVコマンド）、文書を処理するアプリケーションや、プログラムを開発するアプリケーションで使用するコマンド（以下PCコマンド）を挙げ、説明する。AVコマンドは、主にシーケンシャルアクセスとなり、またPCコマンドは、アクセス傾向が一様でないアクセスとなる傾向があり、両者のコマンド種別によるアクセス傾向は異なる。
【００１３】
図１に、本発明を適用したディスク装置の例を示す。本発明を適用するディスク装置は、先読み制御プログラムを実装するプログラムROM１０１、キャッシュ内部のデータおよび、キャッシュ領域に関するデータを管理するテーブルを記憶するRAM１０２、ディスク装置内部の時刻を管理・設定するTimer１０３、上記、ROM１０１、RAM１０２、Timer１０３を内蔵し、ROM上の制御プログラムを読み込み実行する制御プロセッサ１０４、リード要求データ/ライト要求データを一時的に書き込むキャッシュ１０５、ホストとキャッシュ１０５及びキャッシュ１０５とディスクの間のデータ転送を制御するハードディスク制御装置（以下HDC）１０６、データの読み書きをする際にディスク１１４上の指定された位置にヘッドを移動するための制御を行うサーボ制御部１０７、サーボ制御部の指示に従って、ヘッドを移動するボイスコイルモータ（VCM）１０８、ディスクの回転を制御するモータドライバ１０９、ヘッドから読み込んだ磁気信号から指定されたヘッドの信号だけを選択するセレクタ１１０、セレクタ１１０から送られたアナログデータをディジタルデータに変換するまたはHDC１０６から送られたディジタルデータをアナログデータに変換する信号処理部１１１、リード用ゲートを開閉することにより、信号処理部１１１より送られたリードデータをキャッシュ１０５に転送し、また、ライト用ゲートを開閉することにより、キャッシュ１０５より転送されるライトデータを信号処理部１１１に転送するディスクフォーマッタ１１２、ホストとの間でコマンドやデータをやり取りするインタフェース制御部１１３よりなる。
【００１４】
図２に、ホストより発行されるコマンドの構成例を示す。コマンドは、コマンドの種類を示すコマンドコード２１、リード・ライトするデータの論理ブロックアドレス（以下、LBA）２２、ホスト要求データのサイズを示すホスト要求データ転送数２３よりなる。コマンドコード２１により、ディスク装置はAVコマンドとPCコマンドを区別することが可能である。
たとえば、ATA/ATAPI 7 (draft)でのコマンドコードは、PCコマンドであるREAD DMA EXTは25h、AVコマンドであるREAD STREAM DMA EXTは2Ahである。
【００１５】
図３に、キャッシュデータ管理テーブルの構成例を示す。キャッシュデータ管理テーブルはキャッシュ１０５に書き込んだデータの開始LBA３１、キャッシュメモリ上開始アドレス３２、データサイズ３３より成る。複数に区切られたキャッシュ領域には個々別々にデータが書き込まれるため、キャッシュデータ管理テーブルもキャッシュ領域ごとに設定する。
【００１６】
図４に、AVコマンド用の領域４１とPCコマンド用の領域４２にキャッシュ領域を2分割した場合の例を示す。各領域へのデータの書き込み方向は矢印で示されている。AVコマンド用の開始アドレスは「０」、終了アドレスは「（最大アドレス＋１）/2−１」である。PCコマンド用領域の開始アドレスは「（最大アドレス＋１）/2」、終了アドレスは「最大アドレス」である。各キャッシュ領域では、終了アドレスにおいてラップラウンドが実行される。ラップラウンド処理の設定は、開始アドレスと終了アドレスをHDC１０６のレジスタに設定することで可能である。
【００１７】
図５に、キャッシュ領域管理テーブルの構成例を示す。キャッシュ領域管理テーブルは、領域種別５１、領域の開始アドレス５２と終了アドレス５３、領域のサイズ５４、該コマンド種別以外の領域のキャッシュデータ管理テーブルをチェックする必要性の有無を示す他領域データ管理テーブルチェックフラグ５５よりなる。他領域データ管理テーブルチェックフラグ５５は、キャッシュ領域分割直後、コマンド種別ごとのデータがコマンド種別に割り当てられた各キャッシュ領域にきちんと振り分けられていない状況において、該コマンド種別とは別のキャッシュ領域のキャッシュデータ管理テーブルを更新する必要性の有無を示す。すなわち、キャッシュ１０５へのデータの書き込みに際し、該コマンド種別以外の領域のキャッシュデータ管理テーブルを更新する必要がある場合に１を設定し、該コマンド種別以外の領域のキャッシュデータ管理テーブルを更新する必要がない場合には0を設定する。このフラグは、すでにコマンド種別に割り当てた領域に新たにキャッシュ領域を設定した直後に１とし、新たに設定したキャッシュ領域においてラップラウンドが2度行われた時点で0に設定する。  
【００１８】
図６aから図６ｄに、AVコマンド、PCコマンドの種別ごとにキャッシュ領域１０５を設定する（2分割する）キャッシュ制御方式のフローを示す。
【００１９】
コマンドを受領すると（ステップ６０１）、本発明のディスク装置は、コマンドコード２１によりコマンド種別を判別する（ステップ６０２）。キャッシュ領域管理テーブルに、データが登録されているか調べ（ステップ６０３）、登録されていなければ、該コマンド種別を領域種別５１、0アドレスを開始アドレス５２、 最大アドレス５３を終了アドレスとして、キャッシュ領域管理テーブルに登録する（ステップ６０４）。次に0アドレスを開始アドレス、 最大アドレスを終了アドレス、0アドレスをカレントアドレスとしてHDCのセグメント管理用レジスタに設定する（ステップ６０５）。次に該キャッシュ領域の他領域データ管理テーブルチェックフラグ５５を0に設定する（ステップ６０６）。
【００２０】
ステップ６０３に戻り、キャッシュ領域管理テーブルにデータが登録されていれば、キャッシュ領域管理テーブルに、該コマンドに割り当てられているキャッシュ領域があるか調べる（ステップ６０７）。該コマンドに割り当てられているキャッシュ領域がなければ、さらに現キャッシュ領域のカレントアドレスが最大アドレス/2を超えているか調べる（ステップ６０８）。図７に現キャッシュ領域のカレントアドレスが最大アドレス/2を超えている場合のキャッシュ分割時の状態を示す。以下では図7を参照しながら、現キャッシュ領域のカレントアドレスが最大アドレス/2を超えている場合のキャッシュ分割処理について説明する。
【００２１】
現キャッシュ領域のカレントアドレス７１が最大アドレス/2を超えていれば、該コマンド種別を領域種別５１、0アドレス７２を開始アドレス５２、「(最大アドレス＋1)/2−1」（７３）を終了アドレス５３としてキャッシュ領域管理テーブルに登録する（ステップ６０９）。次に、0アドレス７２を開始アドレス、「(最大アドレス＋1)/2−1」（７３）を終了アドレス、0アドレス７２をカレントアドレスとしてHDCのセグメント管理用レジスタに設定する（ステップ６１０）。次に、「(最大アドレス＋1)/2」（７４）を該コマンド種別とは別のコマンド種別のキャッシュ領域の開始アドレス５２としてキャッシュ領域管理テーブルに再登録する（ステップ６１１）。次に、該コマンド種別とは別のコマンド種別のキャッシュ領域の開始アドレスを「(最大アドレス＋1)/2」（７４）としてHDCのレジスタに再設定する（ステップ６１２）。分割の結果、アドレス0（７２）からアドレス「（最大アドレス＋１）/ 2 −1」（７３）までの領域が新たに設定したコマンド種別のキャッシュ領域（７５）となる。また、「(最大アドレス＋1)/2」（７４）から最大アドレス（７６）までの領域が、分割前のコマンド種別のキャッシュ領域（７７）となる。  
【００２２】
次に新たに設定したキャッシュ領域内ライトデータがディスクに書き込み済みか調べる（ステップ６１３）。ディスクに書き込み済みでなければ、該キャッシュデータ領域のライトデータをすべてディスクに書き込む（ステップ６１４）。次に、該コマンド種別のキャッシ領域のカレントアドレスよりデータを入力する（ステップ６１５）。次に、該コマンド種別のキャッシ領域のキャッシュデータ管理テーブルに入力データの管理情報を登録する（ステップ６１６）。次に、他領域データ管理テーブルチェックフラグを１に設定する（ステップ６１７）。次に設定したキャッシュ領域以外のキャッシュ領域のキャッシュデータ管理テーブルにもデータ更新状況を反映させる（ステップ６１８）。
【００２３】
ステップ６１３にもどり、新たに設定したキャッシュ領域内ライトデータがディスクに書き込み済みであれば、該コマンド種別のキャッシ領域のカレントアドレスよりデータを入力する（ステップ６１５）。次に該コマンド種別のキャッシ領域のキャッシュデータ管理テーブルに入力データの管理情報を登録する（ステップ６１６）。次に、他領域データ管理テーブルチェックフラグを１に設定する（ステップ６１７）。次に設定したキャッシュ領域以外のキャッシュ領域のキャッシュデータ管理テーブルにもデータ更新状況を反映させる（ステップ６１８）。
【００２４】
図８に、現キャッシュ領域のカレントアドレスが最大アドレス/2を超えていない場合のキャッシュ分割時の状態を示す。以下では図８を参照しながら、カレントアドレスが最大アドレス/2を超えていない場合のキャッシュ分割処理について説明する。
【００２５】
ステップ６０８に戻り、現キャッシュ領域のカレントアドレス（８１）が最大アドレス/2を超えていなければ、該コマンド種別を領域種別５１、「(最大アドレス＋1)/2」（８２）を開始アドレス５２、最大アドレス（８３）を終了アドレス５３としてキャッシュ領域管理テーブルに登録する（ステップ６１９）。次に「(最大アドレス＋１)/2」（８２）を開始アドレス、最大アドレス（８３）を終了アドレス、「(最大アドレス＋１)/2」（８２）をカレントアドレスとしてHDCのセグメント管理用レジスタに設定する（ステップ６２０）。次に、「(最大アドレス＋1)/2−1」（８４）を該コマンド種別とは別のコマンド種別のキャッシュ領域の終了アドレス５３としてキャッシュ領域管理テーブルに再登録する（ステップ６２１）。次に、「(最大アドレス＋1)/2−1」（８４）を該コマンド種別とは別のコマンド種別のキャッシュ領域の終了アドレスとしてHDCのレジスタに再設定する（ステップ６２２）。分割の結果、アドレス0（８５）からアドレス「（最大アドレス＋１）/ 2−1」（８４）までの領域が分割前のコマンド種別のキャッシュ領域（８６）となる。また、「(最大アドレス＋1)/2」（８２）から最大アドレス（８３）までの領域が、新たに設定したコマンド種別のキャッシュ領域（８７）となる。
【００２６】
次に、新たに設定したキャッシュ領域内ライトデータがディスクに書き込み済みか調べる（ステップ６１３）。ディスクに書き込み済みでなければ、該キャッシュデータ領域のライトデータをすべてディスクに書き込む（ステップ６１４）。次に、該コマンド種別のキャッシ領域のカレントアドレスよりデータを入力する（ステップ６１５）。次に、該コマンド種別のキャッシ領域のキャッシュデータ管理テーブルに入力データの管理情報を登録する（ステップ６１６）。次に、他領域データ管理テーブルチェックフラグを１に設定する（ステップ６１７）。次に設定したキャッシュ領域以外のキャッシュ領域のキャッシュデータ管理テーブルにもデータ更新状況を反映させる（ステップ６１８）。
【００２７】
ステップ６１３にもどり、新たに設定したキャッシュ領域内ライトデータがディスクに書き込み済みであれば、該コマンド種別のキャッシ領域のカレントアドレスよりデータを入力する（ステップ６１５）。次に該コマンド種別のキャッシ領域のキャッシュデータ管理テーブルに入力データの管理情報を登録する（ステップ６１６）。次に、他領域データ管理テーブルチェックフラグを１に設定する（ステップ６１７）。次に設定したキャッシュ領域以外のキャッシュ領域のキャッシュデータ管理テーブルにもデータ更新状況を反映させる（ステップ６１８）。
【００２８】
ステップ６０７に戻り、キャッシュ領域管理テーブルに該コマンド種別に割り当てられているキャッシュ領域があれば、該コマンド種別のキャッシュ領域のカレントアドレスからデータを入力する（ステップ６２３）。次に該コマンド種別のキャッシュ領域のキャッシュデータ管理テーブルに入力データの管理情報を登録する（ステップ６２４）。次に該キャッシュ領域の他領域データ管理テーブルチェックフラグは１かを調べ（ステップ６２５）、該チェックフラグが１であれば、該キャッシュ領域以外のキャッシュ領域のキャッシュデータ管理テーブルにもデータ更新状況を反映させる（ステップ６２６）。また、ステップ６２５に戻り、該チェックフラグが１でなければ、処理を終了する。
【００２９】
図９に、デバイス側の動作設定を行うコマンドの例を示す。Command Code９１は、デバイス設定用のコマンド種別を示すCodeを記入する。また、Features９２には動作設定の内容を示す。ATAコマンドの標準仕様には、キャッシュ領域の分割を設定するCode はないが、新たに設定することは可能である。Featuresでキャッシュ領域分割のCodeを記入し、Sector Count９３のビット[7:4]９４で、PCコマンド用領域、ビット[3:0]９５でAVコマンド用領域の比率を設定することは可能である。例えば、図９のように、ビット[7:4]９４に０００１、ビット[3:0]９５に０００１と入力して、PCコマンド用領域とAVコマンド用領域を1対１に設定することが可能である。
【００３０】
また、図９に示したようなコマンドを用いて、ホスト側から指定されたAVコマンド用領域とPCコマンド用領域の比率をもとに、キャッシュ領域を分割することも可能である。図６a、図6ｂ、図6cでは、キャッシュ領域をPCコマンド用領域とAV用コマンド領域を１：１に分割する場合の処理のフローを示したが、分割する際の比率を、図９で示したようなコマンドにより、ホスト側で指示された比率に基づいて設定することも可能である。
【００３１】
上記のように、コマンド種別ごとのキャッシュ領域の比率をホスト側より指示することもできるが、コマンド種別ごとのコマンド発行間隔を用いて、ディスク側で適当な比率を算出して設定することも可能である。ただしその場合、新たたなコマンド種別を受領した直後に、キャッシュ領域を分割するのではなく、新たなコマンド種別を受領してからしばらくは、従来どおりのキャッシュ制御を実行する。例えば新たなコマンド種別のコマンド発行間隔を測定し、その値に基づき適当な分割比率を決定してから、分割処理を実行する。
【００３２】
図１０にコマンド発行間隔登録テーブルの構成例を示す。コマンド発行間隔登録テーブルは、コマンド種別１００１、最新5コマンドの発行間隔１００２と平均発行間隔１００３よりなる。コマンド発行間隔登録テーブルでは、コマンド種別ごとに、最新コマンドの発行間隔を登録する。さらに、登録済みの発行間隔に基づき、平均コマンド発行間隔を算出したものを登録する。図１０のように、PCコマンドとAVコマンドの平均コマンド発行間隔がそれぞれ、40ms、200msであるとした場合、たとえば、PCコマンド用領域とAVコマンド用領域の比率を5：1として設定することが可能である。この比率に基づき、分割処理を実行することも可能である。
【００３３】
次に、一旦２つに分割したキャッシュ領域の一方が、一定時間経過しても使用されなかった場合（キャッシュ領域を割り当てたコマンド種別のコマンドが一定時間経過しても発行されない場合）該領域をもう一方のキャッシュ領域に統合する場合の例を示す。
【００３４】
図１１に、キャッシュ状況管理テーブルの構成例を示す。キャッシュ状況管理テーブルはコマンド種別ごとの領域種別１１０１、領域種別ごとの最新コマンド受領時刻１１０２、ライトデータ転送済みチェックフラグ１１０３、最新リードコマンド終了チェックフラグ１１０４、キャッシュ領域ごとに設定するキャッシュ領域継続時間（ms）１１０５よりなる。最新コマンド受領時刻１１０２には、最新コマンドの受領時刻を領域種別（コマンド種別）ごとに登録する。尚、時刻は、CPUに内蔵のTimer１０３を参照して取得する。ライトデータ転送済みチェックフラグ１１０３には、コマンド種別ごとに設定されているキャッシュ領域内のライトデータが、ディスクに転送済みであるかをチェックし、転送済みである場合に１を、転送済みでない場合に0を入力する。最新リードコマンド終了チェックフラグ１１０４には、最新リードコマンドの処理が終了済みの場合１を、終了済みでない場合0を設定する。
【００３５】
図１２に、２つに分割したキャッシュ領域を、最新コマンドを受領後一定時間経過した場合に、どちらか一方の領域に統合する処理のフローを示す。尚、図１２に示す処理は、ROM１０１に実装されているファームウエアにより、一定時間間隔ごとに実行されるものとする。
【００３６】
キャッシュ領域管理テーブルに領域が複数登録されているか調べ（ステップ１２０１）、複数登録されていなければ処理を終了する。また、キャッシュ領域管理テーブルに領域が複数登録されていれば、すべての登録データをチェックしたか調べる（ステップ１２０２）。登録データをすべてチェックしていなければ、未チェックの登録キャッシュ領域を１つ選択する（ステップ１２０３）。次に、図１１で示したキャッシュ状況管理テーブルを用いて、該キャッシ領域内のライトデータはディスクに転送済みか調べる（ステップ１２０４）。該キャッシ領域内ライトデータはディスクに転送済みでなく（ステップ１２０４）、かつすべての登録データをチェックしていなければ（ステップ１２０２）、別の未チェック登録キャッシュ領域を選択する（ステップ１２０３）。また、該キャッシ領域内ライトデータがディスクに転送済みであれば（ステップ１２０４）、キャッシュ状況管理テーブルを用いて、該領域種別の最新リードコマンドの処理が終了しているか調べる（ステップ１２０５）。該領域種別の最新リードコマンドの処理が終了していない状態で（ステップ１２０５）、かつすべての登録データをチェックしていなければ（ステップ１２０２）、別な未チェック登録キャッシュ領域を選択する（ステップ１２０３）。
【００３７】
また、該領域種別の最新リードコマンドの処理が終了していたら（ステップ１２０５）、CPU１０４に内蔵のTimer１０３を参照して、現在の時刻を取得する（ステップ１２０６）。次に、キャッシュ状況管理テーブルの該領域種別の最新コマンド受領時刻１１０２と、現時刻に基づき最新コマンド受領からの経過時間を求める（ステップ１２０７）。また、該経過時間が、キャッシュ状況管理テーブルのキャッシュ領域継続時間１１０５を越えているかを調べる（ステップ１２０８）。キャッシュ状況管理テーブルのキャッシュ領域継続時間１１０５を越えていなければ、すべての登録データがチェックされたかを調べ（ステップ１２０２）、チェックされていなければ、別な未チェック登録キャッシュ領域を選択する（ステップ１２０３）。
【００３８】
経過時間がキャッシュ状況管理テーブルのキャッシュ領域継続時間１１０５を越えていれば、キャッシュ領域管理テーブルにおいて、該キャッシュ領域の開始アドレス５２が0であるかを調べる（ステップ１２０９）。該キャッシュ領域の開始アドレス５２が0であれば、キャッシュ領域管理テーブルにおいて、該キャッシュ領域以外のキャッシュ領域の開始アドレス５２を0に設定する（ステップ１２１０）。また、該キャッシュ領域の開始アドレス５２が0でなければ、キャッシュ領域管理テーブルにおいて、該キャッシュ領域以外のキャッシュ領域の終了アドレス５３を最大アドレスに設定する（ステップ１２１１）。次に該キャッシュ領域に割り当てたHDCの開始アドレスレジスタ、カレントアドレスレジスタ、終了アドレスレジスタを０クリアする（ステップ１２１２）。次にキャッシュ領域管理テーブルにおいて、該キャッシュ領域についてのデータを削除する（ステップ１２１３）。次にキャッシュ状況管理テーブルにおいて、該キャッシュ領域のデータをすべて削除する（ステップ１２１４）。
【００３９】
また、コマンド種別ごとに一旦割り当てたキャッシュ領域は、ホスト側からの指示により開放、統合することも可能である。すなわち、図９で示したデバイス側の動作設定を行うコマンドを用いて、開放、統合の指示を出すことも可能である。例えば、図９のコマンドのFeatures９２ で、キャッシュ領域の開放と統合を示す動作設定を行い、Sector Countの[7:4]９４ビットでPC用の比率を示す０００１、また、[3:0]９５ビットでAV用の比率を示す００００を設定して、AV用領域として割り当てていた領域を開放し、PC用領域だけに統合するよう指示を出すことが可能である。
【００４０】
図１３に、ホスト側の指示により、コマンド種別ごとに２つに分割したキャッシュ領域を１つに統合する処理のフローを示す。割り当てたキャッシュ領域を開放、統合するコマンドをホストから受領すると（ステップ１３０１）、開放する領域内のライトデータがディスクに転送済みであるか調べる（ステップ１３０２）。開放するキャッシュ領域内のライトデータのディスクへの転送が確認されたら、キャッシュ領域管理テーブルを用いて、該キャッシュ領域の開始アドレス５２が0であるかを調べる（ステップ１３０３）。該キャッシュ領域の開始アドレス５２が0であれば、キャッシュ領域管理テーブルを用いて、該キャッシュ領域以外のキャッシュ領域の開始アドレス５２を0に設定する（ステップ１３０４）。また、該キャッシュ領域の開始アドレス５２が0でなければ、キャッシュ領域管理テーブルを用いて、該キャッシュ領域以外のキャッシュ領域の終了アドレス５３を最大アドレスに設定する（ステップ１３０５）。次に該キャッシュ領域に割り当てたHDCの開始アドレスレジスタ、カレントアドレスレジスタ、終了アドレスレジスタを０クリアする（ステップ１３０６）。次にキャッシュ領域管理テーブルにおいて、該キャッシュ領域についてのデータを削除する（ステップ１３０７）。次にキャッシュ状況管理テーブルにおいて、該キャッシュ領域のデータをすべて削除する（ステップ１３０８）。
【００４１】
このように、本発明によるディスク装置では、ホスト側の指示によっても、ディスク装置内のキャッシュ領域の分割と統合を可能にしている。
【００４２】
図１４に、AVコマンド、PCコマンドのコマンド種別ごとに先読み方式を選択する制御のフローを示す。リードコマンドを判別し（ステップ１４０１）、ホスト要求データがキャッシュヒットするか調べる（ステップ１４０２）。キャッシュヒットの場合は、処理を終了する。キャッシュヒットでなければ、コマンド種別を判別する（ステップ１４０３）。AVコマンドであれば（ステップ１４０４）、AV用キャッシュ領域があるか調べる（ステップ１４０５） 。AV用キャッシュ領域がなければ、AV用キャッシュ領域を設定する（ステップ１４０６）。次に（AV用キャッシュ領域のサイズ−該コマンドのホスト要求データ）分先読みを行う（ステップ１４０７）。
【００４３】
ステップ１４０５に戻り、AV用キャッシュ領域があれば、AV用キャッシュ領域内のライトデータはディスクに書き込み済みか調べる（ステップ１４０８）。AV用キャッシュ領域内のライトデータはディスクに書き込み済みであれば、キャッシュ領域管理テーブルを用いて、AV用に割り当てられているキャッシュ領域のサイズを調べる（ステップ１４０９）。次に、（AV用キャッシュ領域のサイズ−該コマンドのホスト要求データ）分先読みを行う（ステップ１４１１）。
【００４４】
またステップ１４０８に戻り、AV用キャッシュ領域内のライトデータがディスクに書き込み済みかを調べ、書き込み済みでなければ、AV用キャッシュ領域のサイズの1/4分またはカレントアドレスに一番近い未書き込みのライトデータの開始アドレスまで先読みを行う（ステップ１４１０）。
【００４５】
またステップ１４０４に戻り、AVコマンドでなければ、従来通りの空き時間いっぱい先読みを行う（ステップ１４１２）。
【図面の簡単な説明】
【００４６】
【図１】本発明によるディスク装置の構成例を示す図。
【図２】ホストが発行するコマンドの構成例を示す図。
【図３】キャッシュデータ管理テーブルの構成例を示す図。
【図４】キャッシュ領域の分割の例を示す図。
【図５】キャッシュ領域管理テーブルの構成例を示す図。
【図６ａ】コマンドの種別ごとにキャッシュ領域を２つに分割するキャッシュ制御方式のフローチャート。
【図６ｂ】コマンドの種別ごとにキャッシュ領域を２つに分割するキャッシュ制御方式のフローチャート。
【図６ｃ】コマンドの種別ごとにキャッシュ領域を２つに分割するキャッシュ制御方式のフローチャート。
【図６ｄ】コマンドの種別ごとにキャッシュ領域を２つに分割するキャッシュ制御方式のフローチャート。
【図７】キャッシュ領域の分割の例を示す図。
【図８】キャッシュ領域の分割の例を示す図。
【図９】デバイス側の動作設定を行うATAコマンドの例を示す図。
【図１０】コマンド発行間隔登録テーブルの構成例を示す図。
【図１１】キャッシュ状況管理テーブルの構成例を示す図。
【図１２】最新コマンドを受領後一定時間経過した場合に2つに分割したキャッシュ領域を一方の領域に統合する処理のフローチャート。
【図１３】2つに分割したキャッシュ領域をホストの指示により一方の領域に統合する処理のフローチャート。
【図１４】AVコマンド、PCコマンドのコマンド種別ごとに先読み方式を選択する制御のフローチャート。
【符号の説明】
【００４７】
１０１：ＲＯＭ
１０２：ＲＡＭ
１０３：Timer
１０４：制御プロセッサ
１０５：キャッシュメモリ
１０６：ハードディスク制御装置
１０７：サーボ制御部
１０８：ボイスコイルモータ（ＶＣＭ）
１０９：モータドライバ
１１０：セレクタ
１１１：信号処理部
１１２：ディスクフォーマッタ
１１３：ホストインタフェース
１１４：ディスク
【図１】
2005309653.tif 000003
【図２】
2005309653.tif 000004
【図３】
2005309653.tif 000005
【図４】
2005309653.tif 000006
【図５】
2005309653.tif 000007
【図６ａ】
2005309653.tif 000008
【図６ｂ】
2005309653.tif 000009
【図６ｃ】
2005309653.tif 000010
【図６ｄ】
2005309653.tif 000011
【図７】
2005309653.tif 000012
【図８】
2005309653.tif 000013
【図９】
2005309653.tif 000014
【図１０】
2005309653.tif 000015
【図１１】
2005309653.tif 000016
【図１２】
2005309653.tif 000017
【図１３】
2005309653.tif 000018
【図１４】
2005309653.tif 000019