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