(57)【要約】【課題】回転待ち時間を先読みに充てるに際しキャッシュ内データの蓄積状況に応じて先読みの仕方を制御することで、ヒット率を向上させ、ディスクの性能を向上させる。【解決手段】先読み中に受領したリードコマンドがキャッシュミスであり、該受領リードコマンドの処理のためにシークを行う必要がある場合において発生する回転待ち時間を先行リードコマンドの先読み処理と、該受領リードコマンドの先読み処理に充てる場合において、すでにキャッシュに存在する領域のデータを先読みしないよう、先読み領域を随時決定できるようにしている。【選択図】  図５
2004164144.tif 000002
【特許請求の範囲】
【請求項１】
ディスクとディスクにアクセスするヘッドと、ディスクから読み込んだデータを一時的に保存するキャッシュと、キャッシュ上のデータを管理するためのキャッシュデータ管理テーブルと、キャッシュを介してデータ転送を制御するキャッシュ制御部と、ディスクから読み込んだアナログデータをディジタルデータに変換する、あるいはホストからのディジタルデータをアナログデータに変換する信号処理部と、ゲートの開閉を行いキャッシュから信号処理部へのデータ転送、あるいは信号処理部からキャッシュへのデータ転送を制御するディスクフォーマッタを実装するディスク装置であって、
先読み中に受領したリードコマンドがキャッシュミスであり、該受領リードコマンドの処理のためにシークを行う必要がある場合において発生する回転待ち時間を先行リードコマンドの先読み処理と、該受領リードコマンドの先読み処理に充てる場合において、すでにキャッシュに存在する領域のデータを先読みしないよう、先読み領域を決定する先読み制御手段を備えることを特徴とするディスク装置。
【請求項２】
請求項１に記載のディスク装置であって、該受領リードコマンドのリード要求範囲の前半部分を含む領域のデータがキャッシュに存在している場合は、該発生する回転待ち時間をすべて先行リードコマンドの後続データの先読み処理に充てる先読み制御手段を備えることを特徴とするディスク装置。
【請求項３】
請求項２に記載のディスク装置であって、該先行リードコマンドの後続データの先読みデータがキャッシュに重複して存在するか判定し、該後続データの先読みデータの一部が重複してキャッシュに存在すると判断された場合には、ただちに先読みを停止する先読み制御手段を備えることを特徴とするディスク装置。
【請求項４】
請求項２に記載のディスク装置であって、該回転待ち時間を先行リードコマンドの後続データの先読みに充てる場合、該先行リードコマンドの後続データ先読み予測領域の後半のデータの一部がキャッシュに転送済みであるか判定し、該データの一部がキャッシュに転送済みであると判断された場合には、該先読み予測領域の内、キャッシュに未転送のデータ領域まで先行リードコマンドの後続データの先読みを行い、その後すぐに先読みを停止する先読み制御手段を備えることを特徴とするディスク装置。
【請求項５】
請求項１に記載のディスク装置であって、該受領リードコマンドのリード要求範囲の前半部分を含む領域のデータがキャッシュに存在していない場合でかつ、先行リードコマンドの後続データの先読み範囲内のデータがキャッシュに重複して存在するか判定し、該後続データの先読み範囲内のデータがキャッシュに重複して存在すると判断された場合には、すぐにシークを行って該受領リードコマンドのリード要求データの先行データの先読みに該回転待ち時間を充てる先読み制御手段を備えることを特徴とするディスク装置。
【請求項６】
請求項５に記載のディスク装置であって該回転待ち時間を受領リードコマンドの先行データの先読みに充てるに際し、トラックの先頭から先行データの先読みを開始しても尚、回転待ちが発生すると予測され、かつ該予測回転待ち時間が、該受領リードコマンドのリード要求データが存在するターゲットトラックと該ターゲットトラックとアドレス順で１つ前のトラックとの間のトラックチェンジ時間よりも大きい場合には、該アドレス順で１つ前のトラックにシークして、該受領リードコマンドにおける先行データの先読みを開始する先読み制御手段を備えることを特徴とするディスク装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ハードディスク上のデータを効率よくキャッシュに転送し、キャッシュのヒット率を高め、コマンド実行時間を短縮するための先読み制御方式に関する。
【０００２】
【従来の技術】
ハードディスクでは、キャッシュを設けディスク上のデータをキャッシュに転送して管理し、キャッシュから直接ホストにデータを転送できるようにすることで、ホストへのデータ転送効率を上げている。
【０００３】
ディスクからキャッシュにデータを転送するに際しては、キャッシュ上のデータが後続リードコマンドでヒットするよう、ホスト要求データ直後のデータをあらかじめキャッシュに転送する方式がある。また、先読み継続中に受領したコマンドにより先読みを停止する際、先読み中のヘッドのアドレスと該コマンドにおけるホスト要求アドレスから、該コマンド受領後すぐにシークを開始した場合の回転待ち時間を算出し、該回転待ち時間が最少となるまで直前コマンドの先読みを継続する方式がある。このような先読み方式には例えば「磁気ディスク装置」と題する下記の特許文献１がある。
【０００４】
【特許文献１】
特開平６−９５８１０号公報
【０００５】
【発明が解決しようとする課題】
キャッシュによりホストへのデータ転送効率を高めるには先読み処理においてできるだけ多くのデータをキャッシュに転送することが必要である。またその際、キャッシュ領域を有効に活用するため、ディスク上同一領域のデータがキャッシュに重複して存在することのないように先読みを制御することが必要である。
【０００６】
前記「磁気ディスク装置」での従来技術では、回転待ちを先読みに充て先読み量を増やしてはいるものの、回転待ち時間を先読みに充てるに際し、キャッシュ内のデータ蓄積状況を参照して先読みしないため、すでにキャッシュに転送済のデータも転送してしまうという問題があった。
【０００７】
本発明の課題は、先読み中に受領したリードコマンドがキャッシュミスであった場合でかつ該受領リードコマンドの処理のためにシーク処理を行う必要がある場合において発生する回転待ち時間を先読みに充てるに際し、キャッシュ内のデータの蓄積状況に応じて先読み領域を決定することで、ヒット率を向上させ、ディスクの性能を向上させることである。
【０００８】
【課題を解決するための手段】
上記課題を達成するために本発明のディスク装置は、回転待ち時間を先読みに充てるに際し、ディスク上同一領域からのデータがキャッシュに同時に存在することのないように先読する領域を決定し、先読みを実行できるようにしている。
【０００９】
すなわち、本発明は、ディスクとディスクにアクセスするヘッドと、ディスクから読み込んだデータを一時的に保存するキャッシュと、キャッシュ上のデータを管理するためのキャッシュデータ管理テーブルと、キャッシュを介してデータ転送を制御するキャッシュ制御部と、ディスクから読み込んだアナログデータをディジタルデータに変換する、あるいはホストからのディジタルデータをアナログデータに変換する信号処理部と、ゲートの開閉を行いキャッシュから信号処理部へのデータ転送、あるいは信号処理部からキャッシュへのデータ転送を制御するディスクフォーマッタを実装するディスク装置であって、先読み中に受領したリードコマンドがキャッシュミスであり、該受領リードコマンドの処理のためにシークを行う必要がある場合において発生する回転待ち時間を先行リードコマンドの先読み処理と、該受領リードコマンドの先読み処理に充てる場合において、すでにキャッシュに存在する領域のデータを先読みしないよう、先読み領域を随時決定する先読み制御手段をもつことを特徴とするディスク装置を提供している。
【００１０】
また、上記ディスク装置は、該受領リードコマンドのリード要求データの前半部分を含む領域のデータがキャッシュにすでに存在している場合は、該発生する回転待ち時間をすべて先行リードコマンドの先読み処理に充てるよう先読みの仕方を制御している。
【００１１】
また、上記ディスク装置は、該受領リードコマンドのリード要求データの前半部分を含む領域のデータがキャッシュにすでに存在しかつ、先行リードコマンドの先読み範囲内のデータの一部が重複してキャッシュに存在するか判定し、該先読み範囲のデータの一部が重複してキャッシュに存在することが判明した場合は、ただちに先読みを停止するよう先読みを制御している。
【００１２】
また、上記ディスク装置は該受領リードコマンドのリード要求データの前半部分を含む領域のデータがキャッシュにすでに存在している場合でかつ、該回転待ち時間を先行リードコマンドの先読みに充てた場合の先読み予測領域のデータの後半の一部がキャッシュにすでに転送済みであるか判定し、予測領域のデータの後半の一部がキャッシュに転送済みであると判断された場合には、該先読み予測領域の内、ディスク未転送のデータ領域まで先行リードコマンドの先読みを行い、その後すぐに先読みを停止するよう先読みの仕方を制御している。
【００１３】
また、上記ディスク装置は、該受領リードコマンドのリード要求範囲の前半部分を含む領域のデータがキャッシュに存在していない場合でかつ、先行リードコマンドの後続データの先読み範囲内のデータがキャッシュに重複して存在するか判定し、該後続データの先読み範囲内のデータがキャッシュに重複して存在すると判断された場合は、すぐにシークを行って該受領リードコマンドのリード要求データの先行データの先読みに該回転待ち時間を充てるよう先読みの仕方を制御している。
【００１４】
また、上記ディスク装置は、該受領リードコマンドのリード要求データの前半部分を含む領域のデータがキャッシュにすでに存在していない場合でかつ先行リードコマンドの先読み範囲内のデータがすでにキャッシュに存在することが判明し、かつ発生する回転待ち時間を該受領コマンドの先行データの先読みに充てた場合に、トラックの先頭から先行データの先読みを開始しても尚、回転待ちが発生すると予測され、かつ該予測回転待ち時間が、該受領リードコマンドのリード要求データが存在するターゲットトラックと該ターゲットトラックとアドレス順で１つ前のトラックとの間のトラックチェンジ時間よりも大きいと予測される場合には、該アドレス順で１つ前のトラックにシークして、該受領リードコマンドの先行データの先読みを開始するよう先読みの仕方を制御している。
【００１５】
【発明の実施の形態】
以下、本発明の実施例を図面により説明する。
【００１６】
図１は本発明を適用したディスク装置の例である。本発明を適用するディスク装置は、先読み制御プログラムを実装するプログラムＲＯＭ１０１、ＲＯＭ上の制御プログラムを読み込み実行する制御プロセッサ１０２、ホストとキャッシュ及びキャッシュとディスクの間のデータ転送を制御するキャッシュ制御部１０３、リード要求データ／ライト要求データを一時的に書き込むキャッシュ１０４（尚、制御プロセッサ１０２に、ディスクからキャッシュ１０４に読み込んだデータについての情報を管理するキャッシュデータ管理テーブル１０５を備える）、データの読み書きをする際に指定された位置にヘッドを移動するための制御を行うサーボ制御部１０６、サーボ制御部１０６の指示に従って、ヘッドを移動するボイスコイルモータ（ＶＣＭ）１０７、ディスクの回転を制御するモータドライバ１０８、ヘッドから読み込んだ磁気信号から指定されたヘッドの信号だけを選択するセレクタ１０９、セレクタから送られたアナログデータをディジタルデータに変換するまたはキャッシュ制御部１０３から送られたディジタルデータをアナログデータに変換する信号処理部１１０、リード用ゲートを開閉することにより、信号処理部１１０より送られたリードデータをキャッシュ１０４に転送し、また、ライト用ゲートを開閉することにより、キャッシュ１０４より転送されるライトデータを信号処理部１１０に転送するディスクフォーマッタ１１１、コマンドやデータをやり取りするインタフェース制御部１１２よりなる。
【００１７】
次にリードコマンド処理における動作を、図１の構成に基づき説明する。ホストは、ディスクに接続されたバス（ホストインタフェース１１３）を介してディスクに対しリードコマンドデータを送信する。  図２に、リード処理の際に発行されるコマンドの構成を示す。リードコマンドは、リードコマンドを示すコード２１、リードするデータの論理ブロックアドレス（以下、ＬＢＡ）２２、リード要求データのサイズを示すホスト要求データ転送数２３よりなる。
【００１８】
ディスク装置はリードコマンドを受け取ると、制御プロセッサ１０２内にあるキャッシュデータ管理テーブル１０５を用いて、要求されたデータがキャッシュ１０４上に存在するか検索する。図３にキャッシュデータ管理テーブル１０５の構成を示す。キャッシュデータ管理テーブル１０５はキャッシュ１０４に書き込んだデータの開始ＬＢＡ３１、キャッシュメモリ上開始アドレス３２、データサイズ３３より成る。ヒット検索の際には、キャッシュデータ管理テーブル１０５を用いて、ホスト要求データのすべてがキャッシュ１０４上に存在するかを調べ、存在する場合は、該キャッシュ上データのキャッシュメモリ上開始アドレス３２からホスト要求データのキャッシュ１０４上での開始アドレスを算出し、該開始アドレスからホスト要求データを読み出しホストに転送する。キャッシュ１０４上にホスト要求データが存在しない場合には、プログラムＲＯＭ１０１に実装されている論理アドレス変換プログラムを用いてＬＢＡをディスク上での配置を示す物理アドレスに変換し、次にサーボ制御部１０６を用いて物理アドレスの位置を検出し、ディスクフォーマッタ１１１のリード用ゲートの開閉を制御して信号制御部１１０から送られてきたデータをキャッシュ制御部１０３に転送する。キャッシュ制御部１０３は、転送されたデータをキャッシュ１０４に書き込み、さらにキャッシュ１０４に書き込んだデータについての情報をキャッシュデータ管理テーブル１０５に登録する。それからキャッシュ１０４よりホストにホスト要求データを転送する。
【００１９】
キャッシュデータ管理テーブル１０５に登録されたリードデータは、転送元であるディスク上の領域がライトにより更新された場合、キャッシュデータ管理テーブル１０５より削除される。そのためキャッシュデータ管理テーブル１０５にはキャッシュ１０４に読み込まれたリードデータの内有効なリードデータのみが登録されている。
【００２０】
次に図４を用いて、先読み中に受領したリードコマンドがキャッシュミスでありかつ該受領リードコマンドの処理のためにシーク処理を行う必要がある場合において発生する回転待ち時間を先行リードコマンドの先読み処理と、該受領リードコマンドの先読み処理に充てる場合の例を説明する。
【００２１】
図４中Ｒ１は、先行リードコマンドＲ１のリード要求範囲４１を示している。また図４中Ｒ２は、先行リードコマンドＲ１で開始した先読み処理中に受領したリードコマンドＲ２のリード要求範囲４２を示している。図４では、Ｒ２のリード要求範囲４２は、キャッシュに存在せず、そのためＲ２のリード要求範囲４２までシークしなければならないが、その際に発生する回転待ち時間を先行リードコマンドのＲ１のリード要求範囲４１に後続する領域の先読み（以下後続データの先読み）と、先読み中に受領したリードコマンドＲ２のリード要求範囲に先行する領域の先読み（以下先行データの先読み）に充てることができる。尚、先行リードコマンドＲ１のリード処理では、後続コマンドのＲ２を受領するまでの間、Ｒ１のリード要求範囲４１に後続する領域の先読みを行うこととする。また本発明のディスク装置は、後続コマンドＲ２のリード要求範囲４２と、Ｒ２受領直後の先読み位置４３からＲ２受領直後のシーク後のヘッド位置４４を算出して求めることができる。尚、シーク後のヘッドの位置がＲ２の開始アドレスよりも後に位置付いた場合は、該ヘッド位置からトラックエンドまでは、先行データの先読みをすることができない。そのため、該回転待ちを最少にするには、予測したシーク後のヘッド位置がＲ２の開始アドレスよりも大きかった場合、該予測ヘッド位置からトラックエンドまでの回転にかかる時間を、先行リードコマンドの後続データの先読みに充てることが望ましい。図４のコマンドパタンでは、該リードコマンドを受領後すぐにシークを開始すると、Ｒ２のリード要求範囲４２よりも後にヘッドが位置づくことが判明したため、予測したシーク後のヘッド位置４４から、Ｒ２のリード要求範囲４２のあるトラックのエンド４５までを移動するのにかかる時間を、該先読み処理中のＲ１の後続データの先読み４７に充て、その後、Ｒ２のリード要求データのあるターゲットトラック４８にシークを行って、ターゲットトラック４８の先頭からＲ２のリード要求範囲に先行する領域のデータの先読み４９を行っている。このように、先読み中にリードコマンドを受領し、該受領リードコマンドがキャッシュミスでシークの必要が生じ回転待ちが発生すると予測された場合には、その予測される回転待ち時間を、先行リードコマンドの後続データの先読みと、該受領リードコマンドにおける先行データの先読みに充てることが可能である。
【００２２】
以下では、図４で示したアクセスパタンを用いて、本発明を適用した場合の先読み制御の動作を説明することにする。
【００２３】
図５、図６に、先読み中に受領したリードコマンドがキャッシュミスであり、該受領リードコマンドの処理のためにシークを行う必要がある場合において発生する回転待ち時間を先行リードコマンドの後続データの先読み処理と、該受領リードコマンドの先行データの先読み処理に充てる場合において、すでにキャッシュに転送済みの領域のデータを先読みしないよう先読みする領域を決定する先読み制御方式のフローを示す。
【００２４】
先読み中に受領したリードコマンドがキャッシュミスであることが判明すると（ステップ５０１）、本発明のディスク装置は、該受領リードコマンドのリード要求データの前半部分のデータを含むデータがキャッシュに存在するか調べる（ステップ５０２）。
【００２５】
図７に該受領コマンドのリード要求データの一部を含む領域のパタンを示す。図７中、Ａ６２はリード要求データの前半部分を含む領域である。また、図７中Ｂ６２は、リード要求データの後半部分を含む領域である。図中Ａ６１のように、リード要求範囲の前半部分のデータを含む領域のデータがキャッシュに存在していた場合に、リード要求データの前半部分のデータを含むデータがキャッシュに存在するということにする。
【００２６】
尚、先に説明したように、ヒット検索では、図３で示したキャッシュデータ管理テーブルを用いて検索するが、キャッシュヒット（またはミス）を判定する過程で、検索対象リードコマンドのリード要求範囲の前半部分のデータを含むデータの有無を同時に判定することができる。本発明のディスク装置は、ヒット検索途中で、該リードコマンドのリード要求範囲の前半部分のデータを含むデータがキャッシュに存在する場合には、その結果を一時的に保存できるようにすることが可能である。
【００２７】
図５に戻り、該受領リードコマンドがキャッシュミスした場合（ステップ５０１）、該受領リードコマンドのリード要求データの前半部分のデータが、キャッシュに存在するかチェックし（ステップ５０２）、該リード要求範囲の前半部分のデータを含むデータがキャッシュに存在する場合は（ステップ５０３）、該回転待ち時間をすべて先行リードコマンドの後続データの先読み処理に充てた場合の予測先読み範囲を求め、該予測先読み範囲のデータが、キャッシュに転送済みであるかを、キャッシュデータ管理テーブルを用いて判定し、該予測先読み範囲内のデータがキャッシュに存在しないことが判明した場合（ステップ５０４）、先行リードコマンドの後続データの先読みに該回転待ち時間をすべて充てる（ステップ５０５）。
【００２８】
図８に、図４で示した回転待ちが発生する際のパタンにおいて、該受領リードコマンドのリード要求範囲の前半部分のデータを含む領域のデータがキャッシュに存在し（Ａの領域７１）、かつ発生する回転待ちを先行リードコマンドの後続データの先読み処理に充てた場合の予測先読み範囲（７２）内のデータが、キャッシュに存在しない場合の例を示す。この場合は、発生する回転待ち時間をすべて、先行リードコマンドの後続データの先読みに充てる。
【００２９】
図５に戻り、またもし該予測先読み範囲のデータがキャッシュに存在する場合（ステップ５０４）で、かつ該予測先読み範囲の後半部分のデータのみがキャッシュに存在することが判明した場合（ステップ５０６）でかつ、該予測範囲の内キャッシュに未転送のデータをキャッシュに転送しても、すでにキャッシュに存在する該予測範囲の後半部分のデータが上書きされないかを調べ（ステップ５０７）、上書きされない場合には、該予測範囲の内、キャッシュに未転送のデータのみを先読みして（ステップ５０８）、すぐに先読みを停止する（ステップ５０９）。
【００３０】
図９に図４で示した回転待ちが発生する際のパタンにおいて、該受領リードコマンドのリード要求範囲の前半部分のデータを含む領域のデータがキャッシュに存在し、かつ発生する回転待ちを先行リードコマンドの後続データの先読み処理に充てた場合でかつ予測先読み範囲の後半部分のデータのみがキャッシュに転送済みであることが判明した場合の例を示す。範囲Ｂ８１がキャッシュに転送済みの領域である。この場合、該予測先読み範囲８２の内、キャッシュに未転送の範囲８３内のデータをキャッシュに転送しても、キャッシュに転送済みの領域Ｂ８２内のデータがキャッシュ上で上書きされない場合は、該キャッシュに未転送の範囲８３を先読みし、すぐに先読み停止する。
【００３１】
図５に戻り、またもし、該予測先読み範囲の内、前半部分の範囲のデータがキャッシュに転送済みであることが判明したら、すぐに該先読み中の先行リードコマンドの先読みを停止する（ステップ５１１）。
【００３２】
図１０に図４で示したパタンにおいて、該先行リードコマンドの該予測先読み範囲の前半部分のデータがキャッシュに転送済みである場合の例を示す。図１０中の領域Ｂ９１はキャッシュに転送済みのデータ範囲を示す。この場合、先行リードコマンドＲ１の先読みはすぐに停止することとする。
【００３３】
図５に戻り、また、該予測先読み範囲内の後半部分のデータがキャッシュに存在する場合（ステップ５０６）で、該予測先読み範囲内のキャッシュに存在しない部分のデータをキャッシュに転送した場合に、該予測範囲内のキャッシュに転送済みの後半部分の領域のデータが上書きされると判断された場合（ステップ５０７）は、該予測先読み範囲内のデータをすべて先読みする（ステップ５１０）。
【００３４】
また、先読み中に受領したリードコマンドにおいて、キャッシュミスが判明し、該受領リードコマンドのリード要求データの前半部分のデータがキャッシュに存在しない場合でかつ、該リードコマンド受領した時点で先読みを行っている領域の一部のデータが、キャッシュデータ管理テーブルを用いて検索した結果、キャッシュに重複して存在することが判明した場合（図６のステップ５１２）は、先読み中の先行リードコマンドの先読みをすぐに停止してシークを行った場合に発生する予測回転待ち時間を該受領リードコマンドの先行データの先読みに充てた場合に、該受領リードコマンドのリード要求データが存在するターゲットトラックの先頭から該受領リードコマンドの先行データの先読みを開始しても尚、回転待ちが発生すると判断され（ステップ５１３）、さらに、該予測回転待ち時間が、ターゲットトラックとアドレス順で１つ前のトラックとの間で生じるトラックチェンジ時間よりも大きい場合は（ステップ５１４）、ターゲットトラックよりアドレス順で１つ前のトラックにシークを行って（但しシーク距離が変わることでシーク時間に変動がない場合とする）、該受領リードコマンドの先行データの先読みを開始する（ステップ５１５）。
【００３５】
図１１に、図４で示した回転待ちが発生する際のパタンにおいて、リードコマンド受領した時点で先読みを行っている領域の一部が、キャッシュデータ管理テーブルを用いて検索した結果、キャッシュに重複して存在することが判明したため、発生する回転待ち時間を先行リードコマンドの先読み処理に充てた場合の例を示す。図１１中領域Ａ１００１がキャッシュに転送済みの範囲である。コマンドＲ１の先読み処理は、コマンドＲ２を受領した時点１００２ですでに、領域Ａ１００１内のデータを読み込んでいるので、発生する回転待ちをコマンドＲ２の先行データの先読みに充てる。コマンドＲ２受領直後にシークを行った場合のヘッドの位置１００３は、Ｒ２のリード要求範囲１００４を超えるため、シーク後に回転待ち１００５が生じる。
【００３６】
また、図１２にＲ２を受領した直後にシークを行った場合に発生する回転待ち時間を受領コマンドの先行データの先読みに充てても尚、回転待ちが発生すると判断された場合でかつ、そのときの予測回転待ち時間がターゲットトラックとアドレス順で１つ前のトラックとの間のトラックチェンジ時間よりも大きい場合のアクセスの例を示す。尚、本発明のディスク装置はＲ２  受領直後にシークを行ったときの回転待ち（図１１中の１００５）を算出可能である。この場合、ターゲットトラック１１１よりアドレス順で１つの前のトラック１１２にシークを行って先行データの先読みを開始する。
【００３７】
図６に戻り、また、該受領リードコマンドのリード要求データが存在するターゲットトラックの先頭から該受領リードコマンドの先行データの先読みを開始しても尚、回転待ちが発生すると判断された場合で、該発生する予測回転待ち時間がターゲットトラックとアドレス順で１つ前のトラックとの間のトラックチェンジ時間よりも小さい場合は、該ターゲットトラックの先頭から該受領リードコマンドの先行データの先読みを開始する（ステップ５１６）。
【００３８】
また、先行リードコマンドの先読みをすぐに停止してシークを行った場合に発生する該予測回転待ち時間をすべて該受領リードコマンドのターゲットトラックにおける先行データの先読みに充てられる場合（シーク後の予測ヘッド位置が該受領リードコマンドのリード要求範囲の前に位置づく場合）は、すぐに、先行リードコマンドの先読みを停止し、シークを行って該ターゲットトラックにおいて先行データの先読みを開始する（ステップ５１７）。
【００３９】
また、先読み中に受領したリードコマンドにおいて、キャッシュミスが判明し、さらに該受領リードコマンドのリード要求データの前半部分のデータがキャッシュに存在しない場合でかつ、該リードコマンドを受領した時点で先読みを行っている領域の一部が、キャッシュデータ管理テーブルを用いて検索した結果、キャッシュに重複して存在しなかった場合は、回転待ちを最少にするように、先行リードコマンドの後続データの先読み処理と、該受領リードコマンドの先行データの先読み処理に、回転待ち時間を充てる（ステップ５１８）。本発明は、回転待ち時間を最少にする先読み制御を課題としていないので、回転待ちを最少にするための先読み処理については詳述しない。
【００４０】
【発明の効果】
本発明のディスク装置によれば、先読み中に受領したリードコマンドがキャッシュミスで、該受領リードコマンドの処理のためにシーク処理を行う必要がある場合において発生する回転待ち時間を先読みに充てるに際し、キャッシュ内データの蓄積状況に応じて先読みの領域を決定することで、ヒット率を向上させ、ディスクの性能を向上させることができる。
【図面の簡単な説明】
【図１】本実施形態に係わるディスク装置の構成例を示す図。
【図２】ホストが発行するリードコマンドの構成例を示す図。
【図３】キャッシュデータ管理テーブルの構成例を示す図。
【図４】回転待ちが発生するリードアクセスパタンの例を示す図。
【図５】回転待ち時間を先読みに充てるに際し、ディスク上同一領域のデータをキャッシュに存在しないようにする先読み制御方式を示すフローチャート。
【図６】図５に続く先読み制御方式のフローチャート。
【図７】リード要求データの一部がキャッシュに存在する場合のパタンを示す図。
【図８】回転待ち時間を先読みに充てるに際し、先読み中に受領したリードコマンドのリード要求データが部分的にキャッシュに存在する場合の先読み制御（後続データの先読みの実行）の例を説明する図。
【図９】回転待ち時間を先読みに充てるに際し、先読み中に受領したリードコマンドのリード要求データが部分的にキャッシュに存在する場合の先読み制御（キャッシュに未転送の領域まで後続データの先読みを実行）の例を説明する図。
【図１０】回転待ち時間を先読みに充てるに際し、先読み中に受領したリードコマンドのリード要求データが部分的にキャッシュに存在する場合の先読み制御（リードコマンド受領直後に先行リードコマンドの先読みを停止）の例を説明する図。
【図１１】先行リードコマンドの後続データ先読み領域の一部のデータがキャッシュに重複して存在する場合の先読み制御（受領リードコマンドのターゲットトラックの先頭から先行データの先読みを開始）の例を説明する図。
【図１２】先行リードコマンドの後続データ先読み領域の一部のデータがキャッシュに重複して存在する場合の先読み制御（受領リードコマンドのターゲットトラックのアドレス順で１つ前のトラックから先行データの先読みを開始）の例を説明する図。
【符号の説明】
１０１…プログラムＲＯＭ、１０２…制御プロセッサ、１０３…キャッシュ制御部、１０４…キャッシュメモリ、１０５…キャッシュデータ管理テーブル、１０６…サーボ制御部、１０７…ボイスコイルモータ（ＶＣＭ）、１０８…モータドライバ、１０９…セレクタ、１１０…信号処理部、１１１…ディスクフォーマッタ、１１２…インタフェース制御部、１１３…ホストインタフェース、２１…コマンドコード、２２…論理ブロックアドレス（ＬＢＡ）、２３…ホスト要求データ転送数、３１…データ開始ＬＢＡ、３２…キャッシュメモリ上開始アドレス、３３…データサイズ。
【図１】
2004164144.tif 000003
【図２】
2004164144.tif 000004
【図３】
2004164144.tif 000005
【図４】
2004164144.tif 000006
【図５】
2004164144.tif 000007
【図６】
2004164144.tif 000008
【図７】
2004164144.tif 000009
【図８】
2004164144.tif 000010
【図９】
2004164144.tif 000011
【図１０】
2004164144.tif 000012
【図１１】
2004164144.tif 000013
【図１２】
2004164144.tif 000014