(57)【要約】【課題】  リード・データのキャッシュ・ヒット率を上げる。【解決手段】  本発明の一実施形態に係るＨＤＤ１は、リード・データの磁気ディスク１１からの読み出しのために、リード・バッファ２４１を全体として使用するか、一部の連続領域４１１を使用するかを決定する。一部の連続領域を使用すると決定した場合に、その一部の連続領域内において、先端位置と終端位置が連結された連続領域であるサブ・バッファ４１２を規定し、そのサブ・バッファへのデータ書き込みとそのサブ・バッファからのホスト５１へのデータの読み出しとを並列して実行する。サブ・バッファの容量は後データＢＤのデータ長と一致する。【選択図】  図４
2006185162.tif 000002
【特許請求の範囲】
【請求項１】
記録媒体から読み出したリード・データをホストへ送信するデータ記憶装置であって、
その先端と終端が連結され、ポインタで指定される書き込み開始位置から連続してデータを記録することが可能なバッファと、
前記バッファへのデータ記録を制御するコントローラと、を備え、
前記コントローラは、
前記リード・データの前記記録媒体からの読み出しのために、前記バッファを全体として使用するか、前記バッファ内の一部の連続領域を使用するかを決定し、
前記一部の連続領域を使用すると決定した場合に、その一部の連続領域内において、先端位置と終端位置が連結された連続領域であるサブ・バッファを規定し、そのサブ・バッファへの前記記録ディスクからのデータ書き込みとそのサブ・バッファからの前記ホストへの前記リード・データの読み出しとを並列して実行する、
データ記憶装置。
【請求項２】
前記サブ・バッファと前記一部の連続領域とが一致する、請求項１に記載のデータ記憶装置。
【請求項３】
前記記録媒体から読み出されるデータは、前記ホストへのリード・データに加えて、前記記録媒体においてそのリード・データの後ろの位置に記憶されている後データを含み、前記サブ・バッファの容量は前記後データのデータ長と一致する、請求項２に記載のデータ記憶装置。
【請求項４】
前記記録媒体から読み出されるデータは、前記ホストへのリード・データに加えて、前記記録媒体においてそのリード・データの後ろの位置に記憶されている後データを含み、
前記サブ・バッファの容量は、前記記録媒体から読み出されるデータよりも小さく前記後データのデータ長以上である、
請求項１に記載のデータ記憶装置。
【請求項５】
前記記録媒体から読み出されるデータは、前記ホストへのリード・データに加えて、前記記録媒体においてそのリード・データの後ろの位置に記憶されている後データを含み、
前記サブ・バッファの容量は前記後データのデータ長と一致する、
請求項１に記載のデータ記憶装置。
【請求項６】
前記記録媒体から読み出されるデータは、前記ホストへのリード・データに加えて、前記記録媒体においてそのリード・データの後ろの位置に連続して記憶されている後データと、前記記録媒体においてそのリード・データの前の位置に連続して記憶されている前データとを含み、
前記サブ・バッファの容量は前記後データのデータ長以上であり、
前記サブ・バッファの前の領域に前記前データを書き込み、前記サブ・バッファに前記リード・データを書き込んだ後に前記後データを書き込む、
請求項１に記載のデータ記憶装置。
【請求項７】
前記データ記憶装置は、前記記録ディスクからのデータを記憶するための前記バッファとは別に、前記ホストからのライト・データを記憶するためのライト・バッファを備えている、請求項１に記載のデータ記憶装置。
【請求項８】
前記コントローラは、前記記録媒体から読み出すデータの予期されるデータ長が参照値よりも大きい場合に、前記一部の連続領域を使用すると決定する、請求項１に記載のデータ記憶装置。
【請求項９】
前記記録媒体から読み出すデータは、前記ホストへのリード・データと、前記記録媒体においてそのリード・データの後ろの位置に連続して記憶されている後データと、前記記録媒体においてそのリード・データの前の位置に記憶されている前データとを含む、請求項８に記載のデータ記憶装置。
【請求項１０】
前記参照値は予め定められた固定値であり、その固定値は前記リード・バッファ容量の５０％以上の値から選択されている、請求項８に記載のデータ記憶装置。
【請求項１１】
前記コントローラは、前記記録媒体から読み出すデータの予期されるデータ長が前記リード・バッファ容量よりも大きい場合には、前記一部の連続領域を使用すると決定する、請求項１に記載のデータ記憶装置。
【請求項１２】
前記コントローラは、前記記録媒体から読み出すデータの予期されるデータ長が、前記リード・バッファへの前回のデータ書き込み終了位置の後ろに隣接する連続空き領域の容量よりも大きく、さらに、参照値よりも大きい場合に、前記一部の連続領域を使用すると決定する、請求項１に記載のデータ記憶装置。
【請求項１３】
前記コントローラは、前記リード・データが対応するコマンドがシーケンシャル・リードであることを、前記リード・バッファ内の一部の連続領域を使用すると決定する基準のひとつとして使用する、請求項１に記載のデータ記憶装置。
【請求項１４】
前記データ記憶装置は、前記記録ディスクから前記ホストへ送信するリード・データと共に、前記記録媒体においてそのリード・データの後ろの位置に記憶されている後データを読み出し、
前記コントローラは、シーケンシャル・リードのリード・データの少なくとも一部が前回の記録ディスクからの読み出しにおける後データに含まれていない場合に、そのシーケンシャル・リードのリード・データを前記記録ディスクから読み出すために、前記リード・バッファ内の一部の連続領域を使用すると決定する、
請求項１に記載のデータ記憶装置。
【請求項１５】
その先端と終端が連結された連続領域として使用され、ポインタで指定される書き込み開始位置からデータを連続して記録するバッファを備えるデータ記憶装置の制御方法であって、
ホストからリード・コマンドを受信し、
前記リード・コマンドに対応するリード・データを記録媒体から読み出すことを決定し、
前記リード・データを含む前記記録媒体からの読み出しデータを格納するために、前記バッファを全体として使用するか、前記バッファ内の一部の連続領域を使用するかを決定し、
前記一部の連続領域を使用すると決定した場合に、その一部の連続領域内において規定される、先端位置と終端位置が連結された連続領域であるサブ・バッファへ前記記録媒体からのデータを書き込み、
前記サブ・バッファへのデータ書き込みと並列して、そのサブ・バッファから前記ホストへの前記リード・データの読み出しを行う、
データ記憶装置の制御方法。
【請求項１６】
前記記録媒体から読み出すデータのデータ長に基づいて、前記バッファを全体として使用するか、前記リード・バッファ内の一部の連続領域を使用するかを決定する、請求項１５に記載のデータ記憶装置の制御方法。
【請求項１７】
前記記録媒体から読み出されるデータは、前記ホストへのリード・データに加えて、前記記録媒体においてそのリード・データの後ろの位置に記憶されている後データを含み、
前記サブ・バッファの容量は前記後データのデータ長と一致する、
請求項１５に記載のデータ記憶装置の制御方法。
【請求項１８】
前記記録媒体から読み出されるデータは、前記ホストへのリード・データに加えて、前記記録媒体においてそのリード・データの後ろの位置に記憶されている後データと、前記記録媒体においてそのリード・データの前の位置に記憶されている前データとを含み、
前記一部の連続領域の容量は、前記後データのデータ長と前記前データのデータ長とを足した値以上である、
請求項１５に記載のデータ記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ記憶装置に関し、特に、データ記憶装置におけるバッファ制御に関する。
【背景技術】
【０００２】
データ記憶装置として、光ディスクや磁気テープあるいは半導体メモリなどの様々な態様のメディアを使用する装置が知られている。その中で、ハードディスク・ドライブ（以下、ＨＤＤ）は、コンピュータの記憶装置として広く普及し、現在のコンピュータ・システムにおいて欠かすことができない記憶装置の一つとなっている。さらに、コンピュータにとどまらず、動画像記録再生装置、カーナビゲーション・システム、あるいはデジタル・カメラなどで使用されるリムーバブルメモリなど、ＨＤＤの用途はその優れた特性により益々拡大している。
【０００３】
ＨＤＤで使用される磁気ディスクは、同心円状に形成された複数のトラックを有しており、各トラックは複数のセクタに区分されている。各セクタにはサーボ・データと、ユーザ・データが記憶される。ヘッド素子部がセクタのサーボ・データに従って所望のセクタにアクセスすることによって、所望アドレスへのデータ書き込みあるいは所望アドレスからのデータ読み出しを行うことができる。データ読み出し処理において、ヘッド素子部が磁気ディスクから読み出した信号は信号処理回路によって波形整形や復号処理などの所定の信号処理が施され、ホストに送信される。ホストからの転送データは、信号処理回路によって同様に所定処理された後に、磁気ディスクに書き込まれる。
【０００４】
磁気ディスクから読み出されたリード・データは、一旦バッファに格納された後、ホストに対して転送される。バッファ内には、過去に磁気ディスクから読み出されたデータが格納されており、ホストから要求されたデータがバッファにキャッシュされている場合は、磁気ディスクにアクセスすることなく、バッファに記憶されているデータをホストに転送する。これによって、ＨＤＤのパフォーマンスを向上することができる。
【０００５】
ＨＤＤのパフォーマンス向上するため、リード・データのバッファ制御に関するいくつかの手法が知られている。その一つは、例えば特許文献１に開示されている。ＨＤＤは読み書きしたデータを格納するためのメイン・メモリおよび補助メモリからなるデータ・バッファを具備する。初期化時に、シーク動作を伴う交替処理のような特定のセクタのデータを記憶媒体から予め補助メモリに読み出しておく。これにより、ＨＤＤのパフォーマンスを向上させる。
【特許文献１】特開２００３−１２２６３１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
リード・データのバッファリング技術として、リング・バッファを使用する技術が知られている。ＨＤＤは、磁気ディスクから読み出したデータをリング・バッファに時系列的に格納していく。バッファをその終端位置まで使い切った時にはバッファの先端位置に戻る。一つのリング・バッファが、リード・データとライト・データの双方を記憶するＨＤＤ、あるいは、リード・データを格納するリング・バッファとライト・データを格納するリング・バッファとをそれぞれ別に備えるＨＤＤが知られている。
【０００７】
しかし、ライト・データとリード・データを一つのリング・バッファに格納する場合、空き領域以上のデータ長のリード・コマンドを受信すると、ライト・データを消去することを防止するため、そのライト・データの磁気ディスクへの書き出しが終了するまで、リードの処理を行うことできない。あるいは、リード・データとライト・データとで異なるバッファを備えるＨＤＤにおいて、大きなデータ長のリード・データを要求するリード・コマンドが発行されると、バッファ内の既存キャッシュ・データの多くが上書きされてしまう。さらに、転送されたデータはホストにおいてキャッシュされるため、ＨＤＤのバッファがホストのキャッシュ・データと重複したデータをキャッシュすることなる。このため、ホストからのリード・コマンドに対するキャッシュ・ヒット率が低下し、ＨＤＤのパフォーマンスが低下する。
【０００８】
本発明は上述のような事情を背景としてなされたものであって、データ記憶装置のバッファにおけるリード・データのキャッシュ・ヒット率を向上することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の第１の態様は、記録媒体から読み出したリード・データをホストへ送信するデータ記憶装置であって、その先端と終端が連結され、ポインタで指定される書き込み開始位置から連続してデータを記録することが可能なバッファと、前記バッファへのデータ記録を制御するコントローラと、を備え、前記コントローラは、前記リード・データの前記記録媒体からの読み出しのために、前記バッファを全体として使用するか、前記バッファ内の一部の連続領域を使用するかを決定し、前記一部の連続領域を使用すると決定した場合に、その一部の連続領域内において、先端位置と終端位置が連結された連続領域であるサブ・バッファを規定し、そのサブ・バッファへの前記記録ディスクからのデータ書き込みとそのサブ・バッファからの前記ホストへの前記リード・データの読み出しとを並列して実行するものである。バッファ全体の使用と一部領域の使用を選択することによって、キャッシュ・ヒット率を向上することができる。
【００１０】
前記サブ・バッファと前記一部の連続領域とが一致することは、好ましい一つの態様です。これによって、バッファ内において上書き消去される既存キャッシュ・データを減らすことができる。さらに、第１の態様のデータ記憶装置において、前記記録媒体から読み出されるデータは、前記ホストへのリード・データに加えて、前記記録媒体においてそのリード・データの後ろの位置に記憶されている後データを含み、前記サブ・バッファの容量は前記後データのデータ長と一致するものであることが好ましい。これによって、消去される既存キャッシュ・データを少なくし、後データをキャッシュ・データとして残すことができる。
【００１１】
前記記録媒体から読み出されるデータは、前記ホストへのリード・データに加えて、前記記録媒体においてそのリード・データの後ろの位置に記憶されている後データを含み、前記サブ・バッファの容量は、前記記録媒体から読み出されるデータよりも小さく前記後データのデータ長以上であることが好ましい。これによって、後データをキャッシュ・データとして残すことができる。
【００１２】
前記記録媒体から読み出されるデータは、前記ホストへのリード・データに加えて、前記記録媒体においてそのリード・データの後ろの位置に記憶されている後データを含み、前記サブ・バッファの容量は前記後データのデータ長と一致することが好ましい。これによって、消去される既存キャッシュ・データを少なくし、後データをキャッシュ・データとして残すことができる。
【００１３】
前記記録媒体から読み出されるデータは、前記ホストへのリード・データに加えて、前記記録媒体においてそのリード・データの後ろの位置に連続して記憶されている後データと、前記記録媒体においてそのリード・データの前の位置に記憶されている前データとを含み、前記サブ・バッファの容量は前記後データのデータ長以上であり、前記サブ・バッファの前の領域に前記前データを書き込み、前記サブ・バッファに前記リード・データを書き込んだ後に前記後データを書き込むことが好ましい。これによって、前データと後データをキャッシュ・データとして残すことができる。
【００１４】
前記データ記憶装置は、パフォーマンスの点から、前記記録ディスクからのデータを記憶するための前記バッファとは別に、前記ホストからのライト・データを記憶するためのライト・バッファを備えていることが好ましい。
【００１５】
前記コントローラは、前記記録媒体から読み出すデータの予期されるデータ長が参照値よりも大きい場合に、前記一部の連続領域を使用すると決定することが好ましい。また、データ長により制御することで、前記参照値は予め定められた固定値であり、その固定値は前記リード・バッファ容量の５０％以上の値から選択されていることが好ましい。データ長が大きいときに一部連続領域を使用することで、既存キャッシュ・データの多くが消去されることを避けることができる。
【００１６】
前記コントローラは、前記記録媒体から読み出すデータの予期されるデータ長が前記リード・バッファ容量よりも大きい場合には、前記一部の連続領域を使用すると決定することが好ましい。これによって、既存キャッシュ・データの全てが消去されることを避けることができる。
【００１７】
前記コントローラは、前記記録媒体から読み出すデータの予期されるデータ長が、前記リード・バッファへの前回のデータ書き込み終了位置の後ろに隣接する連続空き領域の容量よりも大きく、さらに、参照値よりも大きい場合に、前記一部の連続領域を使用すると決定する。これによって、既存キャッシュ・データの多くが消去されることを避けることができる。
【００１８】
前記コントローラは、前記リード・データが対応するコマンドがシーケンシャル・リードであることを、前記リード・バッファ内の一部の連続領域を使用すると決定する基準のひとつとして使用することが好ましい。これによって、ホストへ転送したデータ以外のデータをキャッシュ・データとして残すことができる。
【００１９】
前記データ記憶装置は、前記記録ディスクから前記ホストへ送信するリード・データと共に、前記記録媒体においてそのリード・データの後ろの位置に記憶されている後データを読み出し、前記コントローラは、シーケンシャル・リードのリード・データの少なくとも一部が前回の記録ディスクからの読み出しにおける後データに含まれていない場合に、そのシーケンシャル・リードのリード・データを前記記録ディスクから読み出すために、前記リード・バッファ内の一部の連続領域を使用すると決定することが好ましい。これによって、ホストへ転送したデータ以外のデータをキャッシュ・データとして残すことができる。
【００２０】
本発明の他の態様は、その先端と終端が連結された連続領域として使用され、ポインタで指定される書き込み開始位置からデータを連続して記録するバッファを備えるデータ記憶装置の制御方法であって、ホストからリード・コマンドを受信し、前記リード・コマンドに対応するリード・データを記録媒体から読み出すことを決定し、前記リード・データを含む前記記録媒体からの読み出しデータを格納するために、前記バッファを全体として使用するか、前記バッファ内の一部の連続領域を使用するかを決定し、前記一部の連続領域を使用すると決定した場合に、その一部の連続領域内において規定される、先端位置と終端位置が連結された連続領域であるサブ・バッファへ前記記録媒体からのデータを書き込み、前記サブ・バッファへのデータ書き込みと並列して、そのサブ・バッファから前記ホストへの前記リード・データの読み出しを行うものである。バッファ全体の使用と一部領域の使用を選択することによって、キャッシュ・ヒット率を向上することができる。
【００２１】
前記記録媒体から読み出すデータのデータ長に基づいて、前記バッファを全体として使用するか、前記リード・バッファ内の一部の連続領域を使用するかを決定することが好ましい。データ長に従ってキャッシュ・データとして残すデータを選択することで、キャッシュ・ヒット率を上げることができる。
【００２２】
前記記録媒体から読み出されるデータは、前記ホストへのリード・データに加えて、前記記録媒体においてそのリード・データの後ろの位置に記憶されている後データを含み、前記サブ・バッファの容量は前記後データのデータ長と一致することが好ましい。これによって、後データをキャッシュ・データとして残すと共に、消去される既存キャッシュ・データを減らすことができる。
【００２３】
前記記録媒体から読み出されるデータは、前記ホストへのリード・データに加えて、前記記録媒体においてそのリード・データの後ろの位置に記憶されている後データと、前記記録媒体においてそのリード・データの前の位置に記憶されている前データとを含み、前記一部の連続領域の容量は、前記後データのデータ長と前記前データのデータ長とを足した値以上であることが好ましい。これによって、後データと前データをキャッシュ・データとして残すことができる。
【発明の効果】
【００２４】
本発明によれは、データ記憶装置のバッファにおけるリード・データのキャッシュ・ヒット率を向上することができる。
【発明を実施するための最良の形態】
【００２５】
以下に、本発明を適用可能な実施の形態を説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。又、各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略されている。
【００２６】
本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。本発明は、データ記憶装置におけるバッファ制御に関する。本形態においては、データ記憶装置の一例であるハードディスク・ドライブ（ＨＤＤ）を例として、本発明のバッファ制御を説明する。本発明の理解の容易のため、最初に、ＨＤＤの全体構成の概略を説明する。図１は、本実施の形態に係るＨＤＤ１の構成を模式的に示すブロック図である。図１に示すように、ＨＤＤ１は、密閉されたエンクロージャ１０内に、記録メディア（記録媒体）の一例である磁気ディスク１１、ヘッド素子部１２、アーム電子回路（アームエレクトロニクス：ＡＥ）１３、スピンドル・モータ（ＳＰＭ）１４、ボイス・コイル・モータ（ＶＣＭ）１５を備えている。
【００２７】
ＨＤＤ１は、エンクロージャ１０の外側に固定された回路基板２０を備えている。回路基板２０上には、リード・ライト・チャネル（Ｒ／Ｗチャネル）２１、モータ・ドライバ・ユニット２２、ハードディスク・コントローラ（ＨＤＣ）とＭＰＵの集積回路（以下、ＨＤＣ／ＭＰＵ）２３、及びメモリの一例であるＲＡＭ２４などの各ＩＣを備えている。尚、各回路構成は一つのＩＣに集積すること、あるいは、複数のＩＣに分けて実装することができる。
【００２８】
外部ホスト５１からのライト・データは、ＨＤＣ／ＭＰＵ２３によって受信され、Ｒ／Ｗチャネル２１、ＡＥ１３を介して、ヘッド素子部１２によって磁気ディスク１１に書き込まれる。また、磁気ディスク１１に記憶されているリード・データはヘッド素子部１２によって読み出され、そのリード・データは、ＡＥ１３、Ｒ／Ｗチャネル２１を介して、ＨＤＣ／ＭＰＵ２３から外部ホスト５１に出力される。
【００２９】
次に、ＨＤＤ１の各構成要素について説明する。磁気ディスク１１は、ＳＰＭ１４に固定されている。ＳＰＭ１４は所定の速度で磁気ディスク１１を回転する。ＨＤＣ／ＭＰＵ２３からの制御データに従って、モータ・ドライバ・ユニット２２がＳＰＭ１４を駆動する。本例の磁気ディスク１１は、データを記録する記録面を両面に備え、各記録面に対応するヘッド素子部１２が設けられている。
【００３０】
各ヘッド素子部１２はスライダ（不図示）に固定されている。また、スライダはアクチュエータ（不図示）に固定されている。アクチュエータはＶＣＭ１５に連結され、回転軸を中心に揺動することによって、ヘッド素子部１２を磁気ディスク１１上において半径方向に移動する。モータ・ドライバ・ユニット２２は、ＨＤＣ／ＭＰＵ２３からの制御データに従ってＶＣＭ１５を駆動する。
【００３１】
ヘッド素子部１２には、典型的には、磁気ディスク１１への記録データに応じて電気信号を磁界に変換する記録ヘッド、及び磁気ディスク１１からの磁界を電気信号に変換する再生ヘッドが一体的に形成されている。なお、磁気ディスク１１は、１枚以上あればよく、記録面は磁気ディスク１１の片面あるいは両面に形成することができる。
【００３２】
続いて各回路部の説明を行う。ＡＥ１３は、複数のヘッド素子部１２の中からデータ・アクセスが行われる１つのヘッド素子部１２を選択し、選択されたヘッド素子部１２により再生される再生信号を一定のゲインで増幅（プリアンプ）し、Ｒ／Ｗチャネル２１に送る。また、Ｒ／Ｗチャネル２１からの記録信号を選択されたヘッド素子部１２に送る。
【００３３】
Ｒ／Ｗチャネル２１は、ホスト５１から転送されたデータについて、ライト処理を実行する。ライト処理において、Ｒ／Ｗチャネル２１はＨＤＣ／ＭＰＵ２３から供給されたライト・データをコード変調し、更にコード変調されたライト・データをライト信号（電流）に変換してＡＥ１３に供給する。また、ホスト５１にデータを供給する際にはリード処理を行う。リード処理において、Ｒ／Ｗチャネル２１はＡＥ１３から供給されたリード信号を一定の振幅となるように増幅し、取得したリード信号からデータを抽出し、デコード処理を行う。読み出されるデータは、ユーザ・データとサーボ・データを含む。デコード処理されたリード・データは、ＨＤＣ／ＭＰＵ２３に供給される。
【００３４】
ＨＤＣ／ＭＰＵ２３は、ＭＰＵとＨＤＣが一つのチップに集積された回路である。ＭＰＵは、ＲＡＭ２４にロードされたマイクロ・コードに従って動作する。ＨＤＤ１の起動に伴い、ＲＡＭ２４には、ＭＰＵ上で動作するマイクロ・コードの他、制御及びデータ処理に必要とされるデータが磁気ディスク１１あるいはＲＯＭ（不図示）からロードされる。ＨＤＣ／ＭＰＵ２３は、ヘッド素子部１２のポジショニング制御、インターフェース制御、ディフェクト管理などのデータ処理に関する必要な処理の他、ＨＤＤ１の全体制御を実行する。
【００３５】
ＨＤＣ／ＭＰＵ２３は、Ｒ／Ｗチャネル２１から取得した磁気ディスク１１からのリード・データを、ホスト５１に伝送する。磁気ディスク１１からのリード・データは、ＲＡＭ２４内のリード・バッファに一端格納された後、ＨＤＣ／ＭＰＵ２３を介してホスト５１に転送される。また、ホスト５１からのライト・データは、ＨＤＣ／ＭＰＵ２３を介して、ＲＡＭ２４内のライト・バッファに一端格納され、その後、所定のタイミングでＨＤＣ／ＭＰＵ２３を介して磁気ディスク１１に転送される。
【００３６】
続いて、本実施形態に係るＨＤＤ１のリード・バッファ制御について説明する。本形態のＨＤＤ１は、リード・バッファとライト・バッファを個別に備えている。また、一つのリード・バッファによって全てのリード・データに対応する。ＨＤＤ１は、リード・コマンドに対応するリード・データ（ホスト５１に転送するデータ）を磁気ディスク１１から読み出す際に、先読み及び前読みを行う。つまり、リード・データに加えて、磁気ディスク１１においてリード・データの後に記録されている後データ（先読み）と、リード・データの前に記録されている前データ（前読み）とを磁気ディスク１１から読み出す。なお、前データと後データは、典型的にはリード・データに連続して磁気ディスク１１に記録されている。
【００３７】
ＨＤＤ１は、磁気ディスク１１から読み出すデータに基づいて、リード・バッファを全体として使用するか、あるいは、その一部の連続領域のみを使用するかを決定する。図２は、本形態に係るリード・バッファ制御を説明するため、リード・バッファを概念的に示している。図２に示すように、本形態のリード・バッファ２４１は、その先端アドレスＡＤ１と終端アドレスＡＤ２が連結されたバッファ構成を備えている。
【００３８】
リード・バッファ２４１は、磁気ディスク１１から読み出したデータをその終端アドレスＡＤ２まで記憶すると、終端アドレスＡＤ２から先端アドレスＡＤ１に続けてデータを記憶する。つまり、リード・バッファ２４１は、一つのリード・コマンドに対応するデータを、終端アドレスＡＤ２と先端アドレスＡＤ１にまたがって格納することができる。ここで、リード・コマンドに対応するデータは、先読み及び前読みを行う場合は、リード・データＲＤに加え、前データＦＤ及び／または後データＢＤを含む。このように、リード・バッファ２４１の先端ＡＤ１と終端ＡＤ２を連結することで、リード・バッファ２４１を効率的に利用することができる。
【００３９】
また、リード・バッファ２４１はＨＤＤ１のデータ処理単位であるセクタ単位でアドレスし、一つのリード・コマンドに対応する読み出しデータを一つの連続アドレスに記憶する。本形態のリード・バッファ２４１は複数のセグメントに分割されておらず、一つの連続セクションとして構成されている。このため、リード・バッファ２４１は、任意のアドレスから開始する連続空き領域に、一つのリード・コマンドに対応するデータを記憶することができる。複数のセグメントによって区切られず、一つの連続セクションとして構成することで、バッファ内領域の利用効率が上がる。
【００４０】
リード・バッファ２４１へのデータの書き込みは、ライト・ポインタＷＰによって指示されるアドレス（位置）から開始される。同様に、ホスト５１へのリード・データＲＤの読み出しは、リード・ポインタＲＰによって指示されたアドレス（位置）から開始される。ここで、従来のリード・バッファ制御においては、常にリード・バッファ全体を一つの連続領域として使用していたため、大きなデータを磁気ディスク１１から読み出す場合、リード・バッファ内において既にキャッシュされていたデータが上書きされ、キャッシュ・ヒット率を低下させていた。
【００４１】
これに対し、本形態のＨＤＤ１は、必要な場合に、リード・バッファの一部の連続領域のみを使用して磁気ディスク１１から読み出したデータを格納する。さらに、一部の連続領域内に、先端位置と終端位置が連結された連続領域であるサブ・バッファを形成し、磁気ディスク１１から読み出したデータのサブ・バッファへの書き込みと、ホスト５１へのリード・データの読み出しを並列して行う。このように、リード・バッファ２４１の全体としての使用と、その一部領域のみの使用を選択することによって、効率的なリード・バッファ制御を実現することができる。
【００４２】
図３は、ホスト５１からの一つのリード・コマンドに対応して、全体としてリード・バッファ２４１を使用する場合を示している。図３に示すように、磁気ディスク１１から読み出したデータは、ライト・ポインタＷＰで指示される書き込み開始位置ＡＤ３から、書き込み終了位置ＡＤ４までの領域に書き込まれる。書き込み終了後、ライト・ポインタは書き込み終了位置ＡＤ４にセットされている。本例においては、ホスト５１からのリード・コマンドに対応して、リード・データＲＤに加えて、前データＦＤと後データＢＤを磁気ディスク１１から読み出している。
【００４３】
磁気ディスク１１から読み出されたデータは、ライト・ポインタＷＰで指示される書き込み開始位置ＡＤ３から書き込み終了位置ＡＤ４まで、アドレスが連続的に増加するように（図の右方向に）順次記録される。なお、記録データがリード・バッファ２４１の終端ＡＤ２に到達した場合、その先端ＡＤ１から連続的に記録する。リード・データＲＤは、アドレス位置ＡＤ５からアドレス位置ＡＤ６までの領域に記憶されている。リード・ポインタＲＰは読み出し開始位置ＡＤ５を指示し、リード・ポインタＲＰに従って読み出されたリード・データＲＤは、ホスト５１へ転送される。本シーケンスの終了により、リード・バッファ２４１内には、新たに書き込まれた前データＦＤ、リード・データＲＤ及び後データＢＤがキャッシュ・データとして残る。
【００４４】
図４は、リード・バッファ２４１の一部の連続領域を使用する例を示している。図４の例は、先端位置ＡＤ７から終端位置ＡＤ８までの一部の連続領域４１１に、磁気ディスク１１からの読み出しデータを格納する。また、本例では、この一部の連続領域と一致するようにサブ・バッファ４１２が定義される。上述のように、サブ・バッファ４１２の先端ＡＤ７と終端ＡＤ８とは連結される。
【００４５】
ライト・ポインタＷＰは最初、一部連続領域４１１の（かつサブ・バッファ４１２の）先端位置ＡＤ７を書き込み開始位置として指示する。まず、前データＦＤが、ライト・ポインタＷＰの指示する位置からリード・バッファ２４１に書き込まれる。前データＦＤは、アドレス位置ＡＤ９までの領域に書き込まれる。その後、リード・データＲＤが、アドレス位置ＡＤ９から一部連続領域４１１の（かつサブ・バッファ４１２の）終端位置ＡＤ８までの領域に記録される。なお、リード・データＲＤのデータ長が短かい場合は、リード・データＲＤは終端位置ＡＤ８より手前のアドレスまでの領域に格納される。
【００４６】
終端位置ＡＤ８までデータが記録されると、磁気ディスク１１から読み出されたデータは、サブ・バッファ４１２の先端位置ＡＤ７から記録される。本例においては、後データＲＤが、先端位置ＡＤ７から終端位置ＡＤ８の間の領域に記録される。リード・バッファ２４１は、後データＢＤを、前データＦＤとリード・データＲＤとを上書きするように記録する。このため、ＨＤＤ１は、磁気ディスク１１からのデータの書き込みと並列して、ホスト５１へ転送するリード・データＲＤの読み出しを実行する。リード・ポインタＲＰはアドレス位置ＡＤ９を指示し、そこからリード・データＲＤの読み出しが開始される。ＡＤ９からＡＤ８までの領域に記録されていたリード・データＲＤの全てがホスト５１に転送される。
【００４７】
上述のように、リード・バッファ２４１は、後データＲＤを前データＦＤとリード・データＲＤに上書きするので、リード・バッファ２４１内には、キャッシュ・データとして後データＲＤが残る。ここで、本例において、サブ・バッファの容量と後データＢＤのデータ長とが一致している。このため、全ての後データＲＤをキャッシュ・データとしてリード・バッファ２４１内に残すことができる。
【００４８】
リード・データＲＤはすでにホスト５１に転送しており、ホスト５１内でキャッシュされる。このため、ホスト５１が、このリード・データについてＨＤＤ１にコマンド発行する可能性は少ない。従って、リード・バッファ２４１は、転送されたリード・データ以外のデータをキャッシュ・データとして記憶することで、キャッシュ・ヒット率を上げることができる。
【００４９】
上述のようにサブ・バッファ４１２を使用することによって、ホストに転送されるリード・データＲＤによって上書き消去される、既存のキャッシュ・データが減少する。これによって、キャッシュ・ヒット率を上げることができる。さらに、サブ・バッファ４１２内に、ホスト５１に転送されていない後データＢＤをキャッシュ・データとして残すことができるため、キャッシュ・ヒット率を上げることができる。なお、後データＢＤを全て残すためには、サブ・バッファ４１２が後データＢＤのデータ長以上であればよいが、既存のキャッシュ・データをできる限る消去しないためには、サブ・バッファ４１２の容量と後データＢＤのデータ長とが一致することが好ましい。なお、後データＢＤ全てをキャッシュ・データとして残すことが好ましいが、その一部のみを残すようにバッファ制御することもできる。
【００５０】
図４の例においては、一部の連続領域４１１とサブ・バッファ４１２とが一致しているが、一部の連続領域４１１が、サブ・バッファ４１２の領域に加えて付加的な領域を備えることができる。図５は、一部の連続領域４１１内に、サブ・バッファ４１２と付加領域４１３を備えるリード・バッファ２４１を模式的に示している。リード・バッファ２４１から選択された一部連続領域４１１は、アドレス位置ＡＤ１０からＡＤ１１の間の領域として確保されている。一部連続領域４１１内において、サブ・バッファ４１２はアドレス位置ＡＤ１２からＡＤ１１で画定される領域である。アドレス位置ＡＤ１２がサブ・バッファ４１２の先端位置に相当し、アドレス位置ＡＤ１１がその終端位置に相当し、これらが連結されている。付加領域４１３はアドレス位置ＡＤ１０からＡＤ１２に形成されている。
【００５１】
磁気ディスク１１からの読み出し開始において、ライト・ポインタＷＰはアドレス位置ＡＤ１０を指示している。磁気ディスク１１から読み出された前データＦＤは、アドレス位置ＡＤ１０からアドレス位置ＡＤ１２までの付加領域４１３に記録される。続いて、リード・データＲＤが、アドレス位置ＡＤ１２からサブ・バッファ４１２に記録される。リード・データＲＤは、本例において、アドレス位置ＡＤ１２からアドレス位置ＡＤ１３までの領域に記録される。
【００５２】
リード・データＲＤの書き込みが終了すると、アドレス位置ＡＤ１３から後データＢＤの書き込みが開始される。後データＢＤがサブ・バッファ４１２（一部領域４１１）の終端位置ＡＤ１１まで記録されると、続けてサブ・バッファ４１２の先端位置ＡＤ１２から記録される。アドレス位置ＡＤ１２から先にはリード・データが記録されているが、後データがそれに上書きされる。その後、後データＢＤはアドレス位置ＡＤ１３まで記録される。ライト・ポインタＷＰは、アドレス位置ＡＤ１３に一端セットされるが、後データＢＤへのデータの上書きを避けるため、例えば、アドレス位置ＡＤ１１などに変更される。
【００５３】
リード・データＲＤは後データＢＤによって上書き消去される前に、ホスト５１に転送される。ＨＤＤ１は、サブ・バッファ４１２への後データＢＤの書き込みと並列に、リード・データＲＤのサブ・バッファ４１２からの読み出しを実行する。リード・ポインタＲＰがＡＤ１２にセットされ、そこからリード・データＲＤの読み出しが開始される。アドレス位置ＡＤ１２からＡＤ１３に格納されていた全てのリード・データＲＤがホスト５１に転送される。
【００５４】
図５に示されたバッファ制御は、図４の例と比較してその制御が複雑になるが、サブ・バッファ４１２内に記録された後データＢＤの他に、付加領域４１３内に前データＦＤが記録される。このため、後データＢＤに加えて前データＦＤをもキャッシュ・データとしてリード・バッファ２４１内に残すことができる。ここで、前データＦＤを全て残すためには、付加領域４１３が前データＦＤのデータ長以上であればよいが、既存のキャッシュ・データをできる限り消去しないため、付加領域４１３は前データＦＤのデータ長と一致することが好ましい。
【００５５】
本形態のＨＤＤ１は、全体としてリード・バッファ２４１を使用するか、その一部の連続領域４１１のみを使用するかを決定する。好ましい判断基準として、本形態のＨＤＤ１は、リード・コマンドに応答して磁気ディスク１１から読み出されるデータのデータ長に基づいて、リード・バッファ２４１の使用方法を決定する。ＨＤＤ１は磁気ディスク１１から読み出されるデータのデータ長が参照値よりも大きい場合は、一部の連続領域を使用することを決定する。参照値とし使用される値の一つは、リード・バッファ２４１の空き領域である。リード・バッファ２４１に空き領域が十分に存在し、そこに磁気ディスク１１からの読み出しデータを格納することができる場合において、リード・バッファ２４１を全体として使用する。
【００５６】
参照値として、予め設定された固定値を使用することができる。例えば、十分な空き領域が存在しない場合であって、読み出されるデータのデータ長が所定の固定値より大きい場合に一部の連続領域を使用することを決定する。これによって、既存のキャッシュ・データ残し、キャッシュ・ヒット率を上げることができる。
【００５７】
好ましい値の一つは、リード・バッファ２４１の容量である。磁気ディスク１１から読み出されるデータのデータ長が、リード・バッファ２４１全体よりも大きい場合、ＨＤＤ１は、一部の連続領域を使用することを決定する。読み出されるデータによって、リード・バッファ２４１内の全ての既存キャッシュ・データが上書き消去されてしまうため、キャッシュ・ヒットの点から、一部のキャッシュ・データを残すことが好ましい。同様に、固定値をリード・バッファ２４１容量の５０％以上の値から選択することは、好ましい態様の一つである。この場合、ＨＤＤ１は固定値のみで判断する、あるいは、空き領域と固定値の双方を使用して判断する、つまり、空き領域及び固定値よりも大きい場合に一部連続領域を使用することを決定することができる。
【００５８】
データ長が短い場合には、リード・バッファ２４１を全体として使用する。これによって、図４に示した制御を行う場合などにおいても、前データをリード・バッファ２４１にキャッシュ・データとして確実に残すことができる。リード・データのデータ長が短い場合、続いて前データに対する要求がホスト５１から来ることが多い。このため、前データをキャッシュ・データとして残しておくことによって、キャッシュ・ヒット率を高めることができる。また、例えば、図５に示した制御のように一部連続領域を使用する場合、新たにキャッシュされるデータＦＤとＢＤがＬＡＢ順に並ばない。このため、一つのコマンドについてキャッシュ・テーブルを二つ以上使うことになり、テーブルの使用効率が低下する。データ長が短い場合は、上書きされる既存のキャッシュ・データが少ないため、テーブル使用効率の点から、リード・バッファ２４１を全体として使用することが好ましい。
【００５９】
ここで、磁気ディスク１１から読み出されるデータは、前データＦＤ、リード・データＲＤ及び後データＢＤを含んでいる。前データＦＤと後データＢＤは、固定データ長として設定する、もしくは、リード・データのデータ長に応じて可変とすることができる。前データＦＤは、通常、リード・データＲＤの記録トラックへのシークが完了した後に読み出される。従って、シーク完了後からリード・データＲＤにヘッドが到着するまでの時間が短い場合、前データＦＤは短くなる。つまり、ＨＤＤ１は、シーク開始時には前データＦＤのデータ長を正確に知ることができない。このため、本形態のＨＤＤ１は、読み出されるデータ長の予期される値を使用して、リード・バッファ２４１の使用方法を決定する。読み出す前データＦＤの最大長を規定し、前データＦＤの予期されるデータ長としてその最大長（規定値）を使用することができる。
【００６０】
図６を参照して、ＨＤＤ１による、リード・バッファ２４１使用方法の決定処理の一例を説明する。Ｓ１１において、リード・コマンドを受信すると、ＨＤＤ１は、対応するリード・データがリード・バッファ２４１内に記憶されているか（キャッシュ・ヒット）を判断する（Ｓ１２）。キャッシュ・ヒットの場合、リード・バッファ２４１内のデータをホスト５１に転送する（Ｓ１３）。
【００６１】
リード・バッファ２４１内に、対応するリード・データが記憶されていない場合、ＨＤＤ１は、予期される読み出しデータ長が、リード・バッファの空き領域より大きいか判断する（Ｓ１４）。空き領域以下の場合、ＨＤＤ１は、リード・バッファ２４１を全体として使用することを決定する（Ｓ１５）。一方、Ｓ１４において、データ長が空き領域より大きいと判断した場合、ＨＤＤ１は、そのデータ長がバッファ容量などの固定値（固定参照値）より大きいかを判断する（Ｓ１６）。データ長が固定値より大きい場合は、ＨＤＤ１は一部連続領域を使用すると決定し（Ｓ１７）、固定値以下の場合はリード・バッファ２４１を全体として使用することを決定する（Ｓ１５）。
【００６２】
また、ＨＤＤ１は、シーケンシャル・リードの場合に、磁気ディスク１１からデータを読み出すために一部の連続領域を使用する。シーケンシャル・リードの場合、読み出されたデータは、後データも含めてホスト５１に順次転送される。このため、サブ・バッファ４１２を使用して、転送されたデータの上に新たな読み出しデータを上書きすることで、消去される既存のキャッシュ・データの量を減らし、キャッシュ・ヒット率を向上することができる。ここでシーケンシャル・リードは、良く知られているように、その前のリード・コマンドのリード・データ・アドレスに連続するデータのリード処理もしくはそのリード・コマンドである。
【００６３】
シーケンシャル・リードの場合、それ以前に磁気ディスク１１から読み出した後データＢＤに、そのリード・データが含まれている場合がある。例えば、そのシーケンシャル・リード・コマンドの一つ前のリード・コマンドに従って磁気ディスク１１からデータを読み出している場合、その後データに現在のシーケンシャル・リードのリード・データが含まれている。従って、シーケンシャル・リードの場合、既に磁気ディスク１１から読み出した後データにリード・データが含まれていない場合に、磁気ディスク１１からデータが読み出される。
【００６４】
図７を参照して、シーケンシャル・リードに対する、リード・バッファ２４１使用方法の決定処理の一例を説明する。Ｓ２１において、リード・コマンドを受信すると、ＨＤＤ１は、対応するリード・データがリード・バッファ２４１内に記憶されているか（キャッシュ・ヒット）を判断する（Ｓ２２）。キャッシュ・ヒットの場合（Ｓ２２におけるＹ）、リード・バッファ２４１内のデータをホスト５１に転送する（Ｓ２３）。リード・バッファ２４１内に、対応するリード・データが記憶されていない場合（Ｓ２２におけるＮ）、リード・コマンドがシーケンシャル・リードであるか判断する（Ｓ２４）。シーケンシャル・リードでない場合（Ｓ２４におけるＮ）、データ長に基づいてバッファの使用方法を決定する（Ｓ２５）。シーケンシャル・リードである場合（Ｓ２４におけるＹ）、一部連続領域の使用を決定する（Ｓ２６）。
【００６５】
シーケンシャル・リードのために磁気ディスク１１からデータを読み出す場合、ＨＤＤ１は、一部連続領域を使用する。ＨＤＤ１は、図４もしくは図５を参照して説明したいずれの態様の一部連続領域を使用することもできる。例えば、既存のキャッシュ・データの優先度が高い場合、あるいは制御を容易なものとするために、図４に示したように、一部連続領域４１１とサブ・バッファ４１２が一致するバッファ構成を、ＨＤＤ１は選択する。一方、前データＦＤをキャッシュ・データとして残すことが好ましい場合は、図５に示した態様でバッファ制御することができる。
【００６６】
ＨＤＤ１は、一部の連続領域のみを使用する場合、リード・バッファ２４１内において、その領域を定義し、さらにその内部にサブ・バッファを定義する。一部連続領域の書き込み開始位置（先端位置）は、例えば制御が容易なように、前回に磁気ディスク１１から書き込まれたデータの終端位置、あるいは書き込み終了位置に設定することができる。あるいは、キャッシュ・ヒット率を上げるため、優先度が低いキャッシュ・データが記憶されている領域に一部連続領域の書き込み開始位置をセットすることができる。優先度は、例えば、ホスト５１からそのデータへのアクセス頻度や、キャッシュ・データの古い、新しいを示すリード・バッファ２４１に記録された順番などに基づいて決定することができる。
【００６７】
本形態においては、ＨＤＣ／ＭＰＵ２３が上述のリード・バッファ２４１の制御を行う。そこで、ＨＤＣ／ＭＰＵ２３のリード・バッファ制御の詳細について説明する。図８は、ＨＤＤ１において、リード・バッファ２４１制御に関する構成を示すブロック図である。ＨＤＣ／ＭＰＵ２３は、ハード・ウェア構成として、ホスト・インターフェース２３１、ドライブ・インターフェース２３２及びメモリ・マネージャ２３３を備えている。マイクロ・コードがＭＰＵ上で動作することによって、ＭＰＵは、ホスト・インターフェース・マネージャ２３４、コマンド実行マネージャ２３５及びキャッシュ・マネージャ２３６として機能することができる。メモリＲＡＭ２４はコマンド及びデータを一時的に記憶し、リード・バッファ２４１及びキャッシュ・テーブル２４２として機能することができる。
【００６８】
ホスト・インターフェース２３１は、ホスト５１との間における実際のデータ伝送処理を実行し、データ伝送部として機能する。ドライブ・インターフェース２３２は、磁気ディスク１１との間（あるいはリード・ライト・チャネル２１との間）における実際のデータ入出力処理を行う。メモリ・マネージャ２３３はＲＡＭ（メモリ）２４のデータ記憶を制御し、ＨＤＣ／ＭＰＵ２３内の他の機能ブロックとＲＡＭ２４との間における様々なデータの仲介処理を行う。
【００６９】
ホスト・インターフェース・マネージャ２３４はホスト・インターフェース２３１を管理するデータ伝送制御部として機能し、ホスト・インターフェース２３１との間において所定の通知あるいは命令の授受を行う。キャッシュ・マネージャ２３６は、キャッシュ・テーブル２４２を参照して、リード・バッファ２４１のリード・ポインタＲＰ及びライト・ポインタＷＰの設定を行う。さらに、リード・バッファ２４１内の一部連続領域を使用する場合、その一部連続領域及びサブ・バッファの設定を実行する。コマンド実行マネージャ２３５は、キャッシュ・マネージャ２３６の指示に従って、コマンドの実行を制御する。さらに、ドライブ・インターフェース２３２を制御することによって、磁気ディスク１１との間のデータ書き込み及びデータ読み出しを制御する。
【００７０】
ここで、キャッシュ・テーブル２４２内には、リード・バッファ２４１に記憶されているデータについての情報が登録されている。具体的には、図９に示すように、各データの識別番号、ＬＢＡ、データ長、リード・バッファ２４１内の開始位置（アドレス）などが登録されている。ここで、各データは、例えば、ＬＢＡが連続するアドレスを一つのデータ単位として登録することがきる。図５の例を参照すれば、新たに書き込まれた前データＦＤと後データＢＤのそれぞれに対して、上記各情報がキャッシュ・テーブル２４２に登録されている。この他、キャッシュ・テーブルは、各データがリード・バッファ２４１に記録された順番、これまでにキャッシュ・ヒットした回数などの情報を登録することができる。
【００７１】
続いて、リード・バッファ２４１の制御シーケンスについて、図１０のフロー・チャートを参照して説明する。図１０のＳ３１において、ホスト５１からリード・コマンドをホスト・インターフェース２３１が受信すると、リード・コマンドがキャッシュ・マネージャ２３６に転送される。キャッシュ・マネージャ２３６は、リード・コマンドを受信すると、要求されたリード・データがリード・バッファ２４１内に存在するかを、キャッシュ・テーブルを参照して判断する（Ｓ３２）。
【００７２】
キャッシュ・ヒットの場合（Ｓ３２におけるＹ）、キャッシュ・マネージャ２３６はリード・バッファ２４１から読み出すリード・データのアドレスとデータ長を指定して、コマンド実行マネージャ２３５にリード処理の実行を指示する。コマンド実行マネージャ２３５は、リード・ポインタとデータ長をメモリ・マネージャ２３３のレジスタにセットし、リード・データの読み出しをメモリ・マネージャ２３３に指示する。メモリ・マネージャ２３３は、その指示に応答して、リード・バッファ２４１からリード・データを読み出し、ホスト・インターフェース２３１を介して、ホスト５１にリード・データを転送する（Ｓ３３）。
【００７３】
リード・データがリード・バッファ内に存在しない場合（Ｓ３２におけるＮ）、キャッシュ・マネージャ２３６は、磁気ディスク１１から読み出すデータのために、リード・バッファ２４１全体を使用するか、その一部の連続領域を使用するかを決定する（Ｓ３４）。キャッシュ・マネージャ２３６は、上述の判断基準に従って、リード・バッファ２４１の使用方法を決定することができる。
【００７４】
全体としてリード・バッファ２４１を使用することを決定した場合（Ｓ３４におけるＮ）、キャッシュ・マネージャ２３６は、磁気ディスク１１から読み出すデータのＬＢＡ範囲と、リード・バッファ２４１全体使用、リード・バッファ２４１のライト・ポインタ位置を指定して、コマンド実行マネージャ２３５に磁気ディスク１１から読み出したデータのリード・バッファ２４１への書き込みを指示する。コマンド実行マネージャ２３５は、キャッシュ・マネージャ２３６から指定された情報をメモリ・マネージャ２３３及ドライブ・インターフェース２３２のレジスタにセットする。ドライブ・インターフェース２３２及びメモリ・マネージャ２３３は、それに従って磁気ディスク１１から読み出したデータを、リード・バッファ２４１に記録する（Ｓ３５）。
【００７５】
コマンド実行マネージャ２３５は、ドライブ・インターフェース２３２から前データのデータ長に関する情報を取得すると、リード・データをホスト５１に転送するため、リード・ポインタをメモリ・マネージャ２３３にセットする。メモリ・マネージャ２３３は、セットされたリード・ポインタに従って、リード・データをリード・バッファ２４１から読み出し、ホスト５１へ転送する（Ｓ３６）。また、前データに関する情報はキャッシュ・マネージャ２３６に転送され、キャッシュ・マネージャ２３６はその情報と既に取得している情報とを使用して、キャッシュ・テーブル２４２を更新する。
【００７６】
リード・バッファ２４１の一部の連続領域のみを使用することを決定した場合（Ｓ３４におけるＹ）、キャッシュ・マネージャ２３６は、磁気ディスク１１から読み出すデータのＬＢＡ範囲と、一部連続領域の先端位置と終端位置、サブ・バッファの先端位置と終端位置を指定して、コマンド実行マネージャ２３５に磁気ディスク１１から読み出したデータのリード・バッファ２４１への書き込みを指示する（Ｓ３７）。ここで、リード・バッファ２４１のライト・ポインタ位置は、一部連続領域の先端位置に一致する。キャッシュ・マネージャ２３６は、一部連続領域及びサブ・バッファそれぞれの先端位置と終端位置とを、上述の基準に従って決定することができる。
【００７７】
コマンド実行マネージャ２３５は、キャッシュ・マネージャ２３６から指定された情報をメモリ・マネージャ２３３及ドライブ・インターフェース２３２のレジスタにセットする。ドライブ・インターフェース２３２及びメモリ・マネージャ２３３は、それに従って磁気ディスク１１から読み出したデータを、リード・バッファ２４１に記録する。このとき、メモリ・マネージャ２３３は、一部連続領域及びその中のサブ・バッファにデータを格納する（Ｓ３８）。
【００７８】
コマンド実行マネージャ２３５は、ドライブ・インターフェース２３２から前データのデータ長に関する情報を取得すると、リード・データをホスト５１に転送するため、リード・ポインタをメモリ・マネージャ２３３にセットする。メモリ・マネージャ２３３は、セットされたリード・ポインタに従って、リード・データをリード・バッファ２４１から読み出し、ホスト５１へ転送する（Ｓ３６）。また、前データに関する情報はキャッシュ・マネージャ２３６に転送され、キャッシュ・マネージャ２３６はその情報と既に取得している情報とを使用して、キャッシュ・テーブル２４２を更新する。
【００７９】
尚、上記の説明は、本発明の実施形態を説明するものであり、本発明が上記の実施形態に限定されるものではない。当業者であれば、上記の実施形態の各要素を、本発明の範囲において容易に変更、追加、変換することが可能である。例えば、本形態のライト・バッファ制御を、磁気ディスク以外の記録媒体を利用するデータ記憶装置に適用することができる。また、本発明のバッファ制御は、先読み及び前読みを行わないＨＤＤ、ならびに先読みのみもしくは前読みのみを行うＨＤＤに適用することができる。データ記憶装置は、パフォーマンス向上の点から、リード・バッファとライト・バッファを別に備えることが好ましいが、本発明のバッファ制御をライト・データとリード・データの両方を格納するバッファに適用することができる。
【図面の簡単な説明】
【００８０】
【図１】本実施形態に係るＨＤＤの全体構成を模式的に示すブロック図である。
【図２】本実施形態に係るリード・バッファを説明する模式図である。
【図３】本実施形態に係るリード・バッファを全体として使用する場合の制御方法を説明する模式図である。
【図４】本実施形態に係るリード・バッファの一部連続領域を使用する場合の制御方法を説明する模式図である。
【図５】本実施形態に係るリード・バッファの一部連続領域を使用する場合の他の制御方法を説明する模式図である。
【図６】本実施形態に係るリード・バッファの制御シーケンスを示すフロー・チャートである。
【図７】本実施形態に係るリード・バッファの制御シーケンスを示すフロー・チャートである。
【図８】本実施形態に係るＨＤＤにおいて、リード・バッファ制御に関する論理構成を示すブロック図である。
【図９】本実施形態に係るＨＤＤにおいて、リード・バッファ制御のためのキャッシュ・テーブルの一例を示す図である。
【図１０】本実施形態に係るリード・バッファの制御シーケンスを示すフロー・チャートである。
【符号の説明】
【００８１】
１０  エンクロージャ、１１  磁気ディスク、１２  ヘッド素子部、２０  回路基板
２１  Ｒ／Ｗチャネル、２２  モータ・ドライバ・ユニット、２３  ＨＤＣ／ＭＰＵ、
２４  ＲＡＭ、５１  ホスト、２３１  ホスト・インターフェース、
２３２  ドライブ・インターフェース、２３３  メモリ・マネージャ、
２３４  ホスト・インターフェース・マネージャ、２３５  コマンド実行マネージャ、
２３６  キャッシュ・マネージャ、２４１  リード・バッファ、
２４２  キャッシュ・テーブル、４１１  一部連続領域、４１２  サブ・バッファ、
４１３  付加領域、ＢＤ  後データ、ＦＤ  前データ、
ＲＰ  リード・ポインタ、ＷＰ  ライト・ポインタ
【図１】
2006185162.tif 000003
【図２】
2006185162.tif 000004
【図３】
2006185162.tif 000005
【図４】
2006185162.tif 000006
【図５】
2006185162.tif 000007
【図６】
2006185162.tif 000008
【図７】
2006185162.tif 000009
【図８】
2006185162.tif 000010
【図９】
2006185162.tif 000011
【図１０】
2006185162.tif 000012