(57)【要約】【課題】ハードウェアのコントローラによるヒット判定を継続的に実行できるキャッシュ機能を実現したデータ記憶装置を提供することにある。【解決手段】セグメントに分割して管理するバッファメモリ２０を使用したキャッシュ制御を実行するキャッシュコントローラ１１を有するディスクドライブ１において、ホストシステム３０からのリード又はライトのコマンドによる要求アクセス範囲に応じて、セグメント毎にシーケンシャルヒット判定を実行し、ミスヒットの場合にセグメント毎に設定されたヒット上限ＬＢＡを更新する構成である。【選択図】図１
2011022926.tif 000002
【特許請求の範囲】
【請求項１】
セグメントに分割して管理するバッファメモリを使用したキャッシュ制御を実行するコントローラを有し、
前記コントローラは、
ホストシステムからのリード又はライトのコマンドによる要求アクセス範囲に応じて、前記セグメント毎にシーケンシャルヒット判定を行うヒット判定手段と、
前記ヒット判定結果がミスヒットの場合に、前記セグメント毎に設定されたヒット開始アドレス及びヒット上限アドレスからなるヒットアドレス範囲と前記要求アクセス範囲とのオーバーラップ状況に基づいて、前記ヒット上限アドレスを更新する更新手段と
を有するデータ記憶装置。
【請求項２】
前記ヒット判定手段は、前記要求アクセス範囲の開始アドレスと前記ヒット開始アドレスとが一致し、かつ前記要求アクセス範囲の終了アドレスが前記ヒット上限アドレス以内の場合にヒットとするヒット判定結果を出力する請求項１に記載のデータ記憶装置。
【請求項３】
前記更新手段は、
前記オーバーラップ状況として、前記要求アクセス範囲が前記ヒットアドレス範囲内の一部に対応する場合に、前記ヒット上限アドレスを前記要求アクセス範囲の開始アドレスに対応するアドレスに設定するように更新する請求項２に記載のデータ記憶装置。
【請求項４】
前記更新手段は、
前記オーバーラップ状況として、前記要求アクセス範囲の開始アドレスが前記ヒットアドレス範囲内で、かつ前記要求アクセス範囲の終了アドレスが前記ヒット上限アドレスを超えている場合に、前記ヒット上限アドレスを前記要求アクセス範囲の開始アドレスに対応するアドレスに設定するように更新する請求項２に記載のデータ記憶装置。
【請求項５】
前記更新手段は、
前記オーバーラップ状況として、前記要求アクセス範囲が前記ヒットアドレス範囲を超えている場合に、前記ヒット上限アドレスを前記ヒット開始アドレスに一致させるように更新する請求項２に記載のデータ記憶装置。
【請求項６】
前記更新手段は、
前記オーバーラップ状況として、前記要求アクセス範囲の開始アドレスが前記ヒットアドレス範囲外で、かつ前記終了アドレスが前記ヒットアドレス範囲内の場合に、前記ヒット上限アドレスを前記ヒット開始アドレスに一致させるように更新する請求項２に記載のデータ記憶装置。
【請求項７】
前記コントローラは、
前記セグメント毎にヒット判定を行うための管理情報として、前記バッファメモリのアドレス範囲、前記ヒット開始アドレス、前記ヒット上限アドレス、及びリード又はライトの属性を示す情報を含む前記管理情報を有する構成である請求項１から請求項６のいずれか１項に記載のデータ記憶装置。
【請求項８】
前記管理情報はヒット判定の可否を示すフラグ情報を含み、
前記更新手段は、
前記オーバーラップ状況として、前記要求アクセス範囲が前記ヒットアドレス範囲を超えている場合に、前記ヒット判定を不可能とするように前記フラグ情報を更新する請求項７に記載のデータ記憶装置。
【請求項９】
前記管理情報はヒット判定の可否を示すフラグ情報を含み、
前記更新手段は、
前記オーバーラップ状況として、前記要求アクセス範囲の開始アドレスが前記ヒットアドレス範囲外で、かつ前記終了アドレスが前記ヒットアドレス範囲内の場合に、前記ヒット判定を不可能とするように前記フラグ情報を更新する請求項７に記載のデータ記憶装置。
【請求項１０】
請求項１から請求項１０のいずれか１項に記載のデータ記憶装置を含み、
前記バッファメモリとの間でデータ転送し、前記リードデータを読み出し、又は前記ライトデータを記録するためのディスクを有する構成であるディスクドライブ。
【請求項１１】
請求項１から請求項１０のいずれか１項に記載のデータ記憶装置を含み、
前記バッファメモリとの間でデータ転送し、前記リードデータを読み出し、又は前記ライトデータを記録するためのフラッシュメモリを有する構成である記憶ドライブ。
【請求項１２】
請求項１から請求項１０のいずれか１項に記載のデータ記憶装置を含み、
前記バッファメモリに格納されたデータを使用してデータ処理を実行する手段を有する構成である電子機器。
【請求項１３】
セグメントに分割して管理するバッファメモリを使用したキャッシュ制御を実行するキャッシュ制御方法であって、
ホストシステムからのリード又はライトのコマンドによる要求アクセス範囲に応じて、前記セグメント毎にシーケンシャルヒット判定を行うヒット判定処理と、
前記ヒット判定結果がミスヒットの場合に、前記セグメント毎に設定されたヒット開始アドレス及びヒット上限アドレスからなるヒットアドレス範囲と前記要求アクセス範囲とのオーバーラップ状況を検出する処理と、
前記オーバーラップ状況に基づいて、前記ヒット上限アドレスを更新する処理と
を実行するキャッシュ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスクドライブなどのデータ記憶装置に関し、特にキャッシュ制御技術に関する。
【背景技術】
【０００２】
ハードディスクドライブ（ＨＤＤ）を代表とするデータ記憶装置は、ホストシステムからのコマンドに応じて、リードコマンドであればリードデータを転送し、ライトコマンドであれば転送されたライトデータを記録媒体であるディスクなどに記録する。ここで、ホストシステムは、例えばパーソナルコンピュータや、ディジタルＴＶなどの電子機器を意味する。
【０００３】
通常では、ＨＤＤは、ＤＲＡＭからなるバッファメモリを有し、このバッファメモリを使用してキャッシュ機能を実現することで、ホストシステムに対する応答性能を高める構成をとっている。キャッシュ機能には、リードキャッシュとライトキャッシュがある。
【０００４】
リードキャッシュは、過去において、ホストシステムから発行されたリードコマンドに応じてディスクから読み出されたリードデータ（先読みデータを含む）をバッファメモリに保持する。さらに、リードキャッシュは、ホストシステムから新たに発行されたリードコマンドに応じて、バッファメモリでヒットしたリードデータを読み出して、ホストシステムに転送する。一方、ライトキャッシュは、過去において、ホストシステムから発行されたライトコマンドに応じて、ホストシステムから転送されたライトデータをバッファメモリに保持する。バッファメモリに保持されたライトデータは、適宜、ディスクに転送されて記録される。
【０００５】
ＨＤＤのキャッシュ方法の先行技術として、バッファメモリの格納領域を複数のセグメントに分割して管理する方法が提案されている（例えば、特許文献１を参照）。この先行技術は、特にリードキャッシュの自動ヒット機能を複数セグメントに対して行なう方法である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００１−１３４４８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
前述の先行技術のキャッシュ方法は、リードコマンド処理時に行なうヒット判定をハードウェアのコントローラにより行なう方法である。具体的には、複雑なリードヒット判定を必要としない限定的な状況下において、ハードウェアのコントローラにより、ホストシステムのコマンドにより指定される論理ブロックアドレス（以下、ＬＢＡ:logical block address）の連続性チェックを実行してヒット判定することで、ホストシステムに対する応答性能を向上させるものである。
【０００８】
しかしながら、ホストシステムから新規にライトコマンドが発行された場合に、データの一貫性（coherency）を維持する観点から、コントローラによるヒット判定機能をオフする（ヒット判定を無効化する）必要がある。即ち、リードコマンドとライトコマンドが発行されるような場合に、後続するコマンドに対してヒット判定を継続的に実行できない状態が発生する。
【０００９】
そこで、本発明の目的は、ハードウェアのコントローラによるヒット判定を継続的に実行できるキャッシュ機能を実現したデータ記憶装置を提供することにある。
【課題を解決するための手段】
【００１０】
本発明の観点に従ったデータ記憶装置は、セグメントに分割して管理するバッファメモリを使用したキャッシュ制御を実行するコントローラを有し、前記コントローラは、ホストシステムからのリード又はライトのコマンドによる要求アクセス範囲に応じて、前記セグメント毎にシーケンシャルヒット判定を行うヒット判定手段と、前記ヒット判定結果がミスヒットの場合に、前記セグメント毎に設定されたヒット開始アドレス及びヒット上限アドレスからなるヒットアドレス範囲と前記要求アクセス範囲とのオーバーラップ状況に基づいて、前記ヒット上限アドレスを更新する更新手段とを備えた構成である。
【発明の効果】
【００１１】
本発明によれば、ハードウェアのコントローラによるヒット判定を継続的に実行できるキャッシュ機能を実現することにある。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態に関するディスクドライブの要部を示すブロック図。
【図２】本実施形態に関するバッファメモリの構成を説明するための図。
【図３】本実施形態に関するセグメント管理情報の構成を説明するための図。
【図４】本実施形態に関するキャッシュを説明するための図。
【図５】本実施形態に関する上限ＬＢＡの更新処理を説明するための図。
【図６】本実施形態に関するオーバーラップ検出処理を説明するための図。
【図７】本実施形態に関するキャッシュ制御を説明するためのフローチャート。
【発明を実施するための最良の形態】
【００１３】
以下図面を参照して、本発明の実施形態を説明する。
【００１４】
［ディスクドライブの構成］
図１は、本実施形態に関するディスクドライブ１の構成を説明するためのブロック図である。
【００１５】
本実施形態は、データ記憶装置としてＨＤＤであるディスクドライブ１に適用する場合を説明する。図１に示すように、ディスクドライブ１は、ハードディスクコントローラ（ＨＤＣ、以下単にディスクコントローラと表記する）１０と、バッファメモリ２０と、ヘッドアンプ２１と、記録媒体であるディスク２２と、ヘッド２３とを有する。
【００１６】
ヘッドアンプ２１は、ディスク２２からヘッド２３により読み出されたリード信号を増幅してディスクコントローラ１０に伝送する。また、ヘッドアンプ２１は、ディスクコントローラ１０から転送されるライトデータをライト信号に変換してヘッド２３に伝送する。
【００１７】
ディスクコントローラ１０は、ホストシステム３０とディスク２２間のデータ転送を行なうためのインターフェースを構成している。ホストシステム３０は、例えばパーソナルコンピュータやディジタルＴＶなどの電子機器である。
【００１８】
ディスクコントローラ１０は、キャッシュコントローラ１１と、マイクロプロセッサ（ＣＰＵ）１２と、転送コントローラ１３と、ホストインターフェース（ホストＩ／Ｆ）１４と、ディスクインターフェース（ディスクＩ／Ｆ）１５と、リード／ライト（Ｒ／Ｗ）チャネル１６とを有する１チップの集積回路である。
【００１９】
キャッシュコントローラ１１は、後述するキャッシュ制御を実行するハードウェア（ＨＷ）である。ＣＰＵ１２は、ファームウェア（ＦＷ）処理によりキャッシュ制御及びリード／ライト動作の制御を実行する。転送コントローラ１３は、バッファメモリ２０を制御し、ホストシステム３０とディスク２２間のデータ転送制御を実行する。
【００２０】
ホストＩ／Ｆ１４は、ホストシステム３０との間のデータ転送を行なうインターフェースであり、ホストシステム３０から発行されたリードコマンドまたはライトコマンドを受信する。さらに、ホストＩ／Ｆ１４は、ホストシステム３０から伝送されたライトデータを、転送コントローラ１３を介してバッファメモリ２０に転送する。また、ホストＩ／Ｆ１４は、転送コントローラ１３によりバッファメモリ２０から読み出されたリードデータをホストシステム３０に転送する。
【００２１】
ディスクＩ／Ｆ１５は、バッファメモリ２０とディスク２２間のデータ転送を行なうためのインターフェースである。ディスクＩ／Ｆ１５は、転送コントローラ１３によりバッファメモリ２０から読み出されたライトデータをＲ／Ｗチャネル１６に転送する。また、ディスクＩ／Ｆ１５は、Ｒ／Ｗチャネル１６から出力されたリードデータを、転送コントローラ１３を介してバッファメモリ２０に転送する。
【００２２】
Ｒ／Ｗチャネル１６は、リード／ライト信号処理回路であり、ホストシステム３０から伝送されたライトデータを符号化し、またヘッドアンプ２１から伝送されるリード信号の復号化を行なう。
【００２３】
バッファメモリ２０は、ＤＲＡＭ（dynamic random access memory）からなり、図２に示すように、データ格納領域が複数のセグメント（０，１…）に分割して管理される。各セグメントは、対応するデータ格納領域が固定ではなく任意に設定されて、またリードキャッシュ用セグメント又はライトキャッシュ用セグメントとして任意に設定される。
【００２４】
図３に示すように、キャッシュコントローラ１１は、セグメント管理情報（テーブル）１００を有し、セグメント管理情報１００に基づいてバッファメモリ２０を用いたキャッシュ制御を実行する。
【００２５】
［キャッシュ制御］
まず、通常のＨＤＤのキャッシュ制御について説明する。
【００２６】
通常のキャッシュ制御では、ＣＰＵ１２のＦＷ処理により、バッファメモリ２０の各セグメントに対して複雑なヒット判定が行われる。具体的には、例えばホストシステム３０からＬＢＡ１００番のライトコマンドが複数回発行された場合、各ライトコマンドに対応するライトデータがバッファメモリ２０の各セグメントに格納される。このような状態で、ホストシステム３０から例えばＬＢＡ１００番のリードコマンドが発行されると、バッファメモリ２０から当該リードコマンドに対する最新のデータを探し出す必要がある。このような複雑なヒット判定により、キャッシュのデータの一貫性（coherency）が維持される。
【００２７】
ここで、ＬＢＡ（logical block address）は、ホストシステム３０により発行されるコマンドにより指定される論理ブロックアドレスであり、ディスク２２及びバッファメモリ２０のアドレスに対応している。
【００２８】
本実施形態のキャッシュ制御は、ホストシステム３０に対する応答性能向上を目的として、ＨＷのキャッシュコントローラ１１によるヒット判定を行う。このヒット判定機能は、シーケンシャルヒット判定機能と呼ばれている。例えばＬＢＡ１００番〜１９９番までのライトキャッシュ用セグメントにデータが格納されている状態において、ホストシステム３０からＬＢＡ２００番〜２９９番のライトコマンドが発行された場合を想定する。シーケンシャルヒット判定機能は、ＨＷのキャッシュコントローラ１１がヒット判定を実行し、ＦＷ（ＣＰＵ１２）の介在を待たずにホストシステム３０に対してライトデータの転送を促す機能である。シーケンシャルヒット判定機能は、ホストシステム３０からリードコマンドが発行された場合も同様にＨＷによるヒット判定を実行する。
【００２９】
但し、シーケンシャルヒット判定がミスヒットした場合、リードコマンドのシーケンシャルヒット判定可能状態でライトコマンドが発行された場合、あるいはライトコマンドのシーケンシャルヒット判定可能状態でリードコマンドが発行された場合には、キャッシュのデータの一貫性（coherency）が維持するために、一時的にシーケンシャルヒット判定機能をオフする必要が発生してしまう。
【００３０】
具体的には、例えばリードコマンド処理時に、ディスクから読み出したリードデータをバッファメモリに格納するときに、コマンドで指定されたＬＢＡのデータと共に、それに連続するＬＢＡのデータを先読みデータとしてバッファメモリに格納する。ここで、先読みデータが例えばＬＢＡ２００番〜２９９番のキャッシュ領域に格納されるとき、ＬＢＡ２００番〜２９９番の一部を含むライトコマンドが発行された場合である。このような場合には、データの一貫性を維持するために、一時的にシーケンシャルヒット判定機能をオフすることになる。以後、通常では、ＦＷ（ＣＰＵ１２）がバッファメモリのキャッシュ範囲をチェックし、シーケンシャルヒット判定の継続が可能であると判定した場合に、シーケンシャルヒット判定機能はオンになる。
【００３１】
そこで、本実施形態は、リードコマンドまたはライトコマンドが発行された後に、後続のコマンドに対してシーケンシャルヒット判定を継続的に行うことができるキャッシュ制御を実現する構成である。以下、図２から図７を参照して、本実施形態のキャッシュ制御を具体的に説明する。
【００３２】
図３に示すように、キャッシュコントローラ１１は、各セグメント毎のセグメント管理情報１００を使用して、バッファメモリ２０に確保するキャッシュ領域を複数分割したセグメントとして管理する。各セグメントは、開始アドレス（ＳＡ）１０１と終了アドレス（ＥＡ）１０２によりバッファメモリ２０上にキャッシュ領域として確保される。これの開始アドレスＳＡと終了アドレスＥＡは、ＣＰＵ１２であるＦＷにより管理されて、セグメント管理情報１００の項目として設定される。即ち、ＦＷがＨＷであるキャッシュコントローラ１１に設定する。
【００３３】
さらに、セグメント管理情報１００には、セグメントの有効セクタ数（有効データ数）１０３、ヒット開始ＬＢＡ１０４、ヒット上限ＬＢＡ１０５、リード／ライト（Ｒ／Ｗ）を識別するＲ／Ｗフラグ１０６、ヒット判定の可否フラグ１０７、及びポインタアドレスＰＡ１０８の各情報が含まれている。
【００３４】
キャッシュコントローラ（ＨＷ）１１は、ホストシステム３０からのライトコマンド処理時に、ホストシステム３０から１セクタ分のデータを受信する毎に有効セクタ数１０３を＋１する。また、ＨＷ１１は、１セクタ分のデータをディスク２２にライトする毎に有効セクタ数１０３を−１する。一方、ＨＷ１１は、ホストシステム３０からのリードコマンド処理時には、逆に、ディスク２２から１セクタ分のデータを受信する毎に有効セクタ数１０３を＋１し、ホストシステム３０に１セクタ分のデータを転送する毎に有効セクタ数１０３を−１する。
【００３５】
ＨＷ１１は、当該セグメント内で、ホスト転送が行なわれたデータの最終ＬＢＡ＋１をヒット開始ＬＢＡとしてセットする。ＨＷ１１は、ヒット開始ＬＢＡ以降で、バッファメモリ２０内に存在するもっとも近いＬＢＡ値をセットする。但し、ヒット上限ＬＢＡ１０５の初期値は、ＣＰＵ（ＦＷ）１２により設定される。
【００３６】
Ｒ／Ｗフラグ１０６は、当該セグメントがライトキャッシュで使用されるのか、あるいはリードキャッシュで使用されるのかを示す情報であり、ＦＷ１２により設定される。ヒット判定の可否フラグ１０７は、当該セグメントに対して、ＨＷ１１によるシーケンシャルヒット判定を可能とするか否かを示すフラグであり、ＦＷ１２により設定される。
【００３７】
ポインタアドレスＰＡ１０８は、図２に示すように、当該セグメントの開始アドレスＳＡから、ライトキャッシュ又はリードキャッシュで格納されたデータの最終アドレスを示すアドレスで、ＨＷ１１によりセットされる。
【００３８】
図７のブロック２００に示すように、ホストシステム３０からコマンドが発行されると、キャッシュコントローラ（ＨＷ）１１は、受信したコマンドに従ってライトキャッシュに対するシーケンシャルヒット判定、又はリードキャッシュに対するシーケンシャルヒット判定を開始する。ＨＷ１１は、コマンドにより指定される開始アドレス（開始ＬＢＡ）と終了アドレス（終了ＬＢＡ）によりアクセス範囲を設定する（ブロック２０１）。なお、終了アドレスとは、「開始アドレス＋転送セクタ数−１」となる。
【００３９】
ＨＷ１１は、セグメント管理情報１００のＲ／Ｗフラグ１０６に基づいて、ライトキャッシュ又はリードキャッシュのヒット判定対象となるセグメントを設定する（ブロック２０２）。ＨＷ１１は、ホストシステム３０からリードコマンドを受信したときには、リードキャッシュのシーケンシャルヒット判定（以下、単にヒット判定と表記する）を実行する（ブロック２０３）。また、ＨＷ１１は、ホストシステム３０からライトコマンドを受信したときには、ライトキャッシュのヒット判定を実行する（ブロック２０８）。
【００４０】
ここで、各セグメントに対するシーケンシャルヒット判定において、「ヒット」とする条件は、各セグメントのそれぞれにＲ／Ｗフラグ１０６により設定されたリード／ライト属性と、ホストシステム３０からのコマンドのリード／ライト属性（リードコマンド又はライトコマンド）とが一致し、かつ、各セグメント毎に設定されたヒット対象の開始ＬＢＡ１０４と、ホストシステム３０からのコマンドで指定される開始ＬＢＡとが一致し、さらに、ホストシステム３０からの終了ＬＢＡが、各セグメント毎に設定されたヒット対象の上限ＬＢＡ１０５以内に含まれていることである。
【００４１】
図４（Ａ），（Ｂ）は、各セグメントのシーケンシャルヒット判定可能範囲の一例を示す図である。図４（Ａ）に示すように、ＨＷ１１は、バッファメモリ２０の各セグメントに配置されているデータのアドレス範囲がＲ１〜Ｒ７である場合、各セグメントのアドレス範囲４０〜４３がヒット判定可能範囲となる。即ち、前述したように、ヒット対象の開始ＬＢＡは、各セグメントに格納されているデータの最終ＬＢＡ＋１となる。また、各セグメントのリード／ライト属性は、当該セグメントに配置されているデータの属性（リード／ライトキャッシュ用データ）に応じて決定されることになる。ホストシステム３０から発行されたコマンドによりアドレス範囲５０が指定された場合、図４（Ｂ）に示すように、ＨＷ１１による各セグメントのヒット判定可能範囲は、アドレス範囲４０〜４３に変化する。即ち、アドレス範囲４１の上限がＨＷ１１によって書き換えられる。
【００４２】
なお、ＨＷ１１によるヒット判定（即ち、シーケンシャルヒット判定）は、各セグメントに対してある程度連続したセクタ数のアクセス範囲を対象としている。従って、例えばアドレス範囲Ｒ４〜Ｒ７の間となる相対的に狭いヒット判定可能範囲については、ＣＰＵ（ＦＷ）１２によるヒット判定が実行される。
【００４３】
ＨＷ１１は、リードコマンドに対しては、リードキャッシュのシーケンシャルヒット判定を実行し、ヒットと判定された場合には、ヒットと判定されたセグメントから当該データを読み出してホストシステム３０に転送する（ブロック２０４のＹＥＳ，ブロック２０５）。一方、ＨＷ１１は、ライトコマンドに対しては、ライトキャッシュのシーケンシャルヒット判定を実行し、ヒットと判定された場合には、ホストシステム３０から転送されたライトデータをバッファメモリ２０内のヒットと判定されたセグメントに転送する（ブロック２０９のＹＥＳ，ブロック２１０）。
【００４４】
即ち、リードキャッシュのヒット判定がヒットの場合には、ディスク２２に対するリード動作を実行することなく、リード属性のセグメントに格納されているヒット対象のデータがホストシステム３０に転送される。また、ライトキャッシュのヒット判定がヒットの場合には、ホストシステム３０から転送されたライトデータがライト属性のセグメントに格納される。このライト属性のセグメントに格納されたデータは、ディスク２２上の当該アドレスに書き込まれる。この転送実行後に、転送に使用したセグメントのヒット開始ＬＢＡは、ＨＷ１１により、ホストシステム３０から（又はホストシステム３０に）転送した最終ＬＢＡ＋１の値に更新される。
【００４５】
次に、ＨＷ１１は、リードキャッシュのヒット判定によりミスヒットした場合（ヒットしない場合）、リードコマンドにより指定されたデータをディスク２２から読み出す処理に移行する（ブロック２０４のＮＯ，２１３）。このミスヒットの場合に、ＨＷ１１は、オーバーラップ検出処理を実行する（ブロック２０６）。オーバーラップ検出処理は、ミスヒットしたセグメントに対して、ホストシステム３０のリードコマンドのアドレス範囲と、そのセグメントのヒット対象アドレス範囲（以下、単にヒット対象範囲）とのオーバーラップ状況を判定して検出する。
【００４６】
オーバーラップ検出処理は、図６（Ａ）〜（Ｄ）に示す４種類のオーバーラップ状況を検出する。即ち、図６（Ａ）は、ホストシステム３０のコマンドで指定されるアクセス範囲（以下、要求アクセス範囲と略す）５１が、セグメントのヒット対象範囲８１の一部に対応するオーバーラップ状況である。図６（Ｂ）は、要求アクセス範囲５２の開始ＬＢＡがヒット対象範囲８２内で、かつ要求アクセス範囲５２の終了ＬＢＡがヒット対象範囲８２の上限ＬＢＡを超えている場合のオーバーラップ状況である。図６（Ｃ）は、要求アクセス範囲５３がヒット対象範囲８３を超えている場合のオーバーラップ状況である。図６（Ｄ）は、要求アクセス範囲５４の開始ＬＢＡがヒット対象範囲８４外で、かつ要求アクセス範囲５４の終了ＬＢＡがヒット対象範囲８４の範囲内の場合のオーバーラップ状況である。
【００４７】
ＨＷ１１は、検出したオーバーラップ状況に基づいて、当該セグメントのヒット上限ＬＢＡを更新する処理を実行する（ブロック２０７）。具体的には、図６（Ａ）に示すオーバーラップ状況の場合には、ＨＷ１１は、セグメントのヒット上限ＬＢＡを要求アクセス範囲５１の開始ＬＢＡに対応するアドレスに設定する。また、図６（Ｂ）に示すオーバーラップ状況の場合にも同様に、ＨＷ１１は、セグメントのヒット上限ＬＢＡを要求アクセス範囲５２の開始ＬＢＡに対応するアドレスに設定する。このような更新処理により、次回のリードコマンド処理時のリードキャッシュのヒット判定のときに、当該セグメントのヒット可能範囲を狭くすることができる。
【００４８】
一方、図６（Ｃ）に示すオーバーラップ状況の場合には、ＨＷ１１は、セグメントのヒット上限ＬＢＡをそのヒット開始ＬＢＡに一致させる。図６（Ｄ）に示すオーバーラップ状況の場合にも同様に、ＨＷ１１は、セグメントのヒット上限ＬＢＡをそのヒット開始ＬＢＡに一致させる。このような更新処理により、次回のリードコマンド処理時のリードキャッシュのヒット判定のときに、当該セグメントをヒット不可能な状態に設定することができる。
【００４９】
一方、ＨＷ１１は、ライトキャッシュのヒット判定によりミスヒットした場合、ライトコマンドにより指定された要求アクセス範囲のデータをディスク２２に書き込む処理に移行する（ブロック２０９のＮＯ，２１３）。このライトキャッシュのミスヒットの場合でも、ＨＷ１１は、前述と同様のオーバーラップ検出処理を実行する（ブロック２１１）。さらに、ＨＷ１１は、オーバーラップ検出処理により検出されたオーバーラップ状況に基づいて、前述と同様に当該セグメントのヒット上限ＬＢＡを更新する処理を実行する（ブロック２１２）。
【００５０】
ここで、各セグメントのヒット上限ＬＢＡには、当該セグメントの最大ＬＢＡを超え、キャッシュされている他のデータのＬＢＡと重複していない範囲の上限値であり、またはその上限値を超えない範囲内のＬＢＡで設定されるものである。このＬＢＡは、例えば、ディスク２２に対するリード動作時に、先読み動作でディスク２２から読み出しているデータを格納するリードキャッシュ用セグメントの最終ＬＢＡに相当する。
【００５１】
以上のようにして本実施形態のキャッシュ制御方法によれば、ＨＷ１１によるヒット判定でミスヒットの場合には、セグメントのヒット上限ＬＢＡを必要に応じて書き換える。具体的には、オーバーラップ検出処理とセグメントのヒット上限ＬＢＡの更新処理を実行する。これにより、各セグメントのヒット開始ＬＢＡからヒット上限ＬＢＡで定義されるアドレス空間を、ホストシステム３０から発行されたライトコマンドに対応するデータを受信した後も、他のキャッシュデータとは重複しない領域であることが保証することができる。従って、リードコマンドとライトコマンドが発行されるような場合に、後続するコマンドに対してシーケンシャルヒット判定を中断することなく、継続的に実行することが可能となる。
【００５２】
換言すれば、複数のセグメントを有するＨＷ１１において、リードキャッシュ及びライトキャッシュのシーケンシャルヒット判定可能状態で、ライトコマンドが発行された場合を想定する。このような場合でも、後続するコマンドに対するシーケンシャルヒット判定を継続して行なうことが可能になる。従って、ＨＷ１１によるヒット判定が可能な状態が継続し、ホストシステム３０に対する応答性能を向上させることができる。
【００５３】
なお、セグメントのヒット上限ＬＢＡを更新する処理は、ＨＷ１１が管理するセグメントの全てに対して行なう。即ち、ホストシステム３０からのコマンドのリード／ライト属性とセグメントの属性とが一致しない場合でも、ＨＷ１１はヒット上限ＬＢＡの更新処理を実行する。具体的には、リードコマンド処理時に、ライトキャッシュ用セグメントに対してヒット上限ＬＢＡの更新処理を実行する。また、ライトコマンド処理時に、キャッシュ用セグメントに対してヒット上限ＬＢＡの更新処理を実行する。但し、ヒット判定では、前述したように、コマンド属性とセグメント属性とが一致している条件が必要である。
【００５４】
図５（Ａ），（Ｂ）は、複数のセグメントに渡ってヒット上限ＬＢＡを更新する処理を説明するための図である。図５（Ａ）は、ホストシステム３０の要求アクセス範囲５０において、複数のセグメントのヒット対象範囲６１〜６４を示す。図５（Ｂ）は、各セグメントにおいて、後続のコマンドが発行された場合に、ヒット上限ＬＢＡの更新処理により、狭くなったヒット対象範囲７２及びヒットが不可能状態７３，７４を示す。なお、ヒット対象範囲７１は変化しない。
【００５５】
なお、本実施形態のＨＷ１１による更新処理は、全セグメントの開始ＬＢＡから上限ＬＢＡの範囲が一切重複していないことが前提である。即ち、あるコマンドがヒットする場合、そのコマンドがヒットしたセグメント以外のセグメントの上限ＬＢＡを更新することはない。
【００５６】
また、セグメント管理情報１００のヒット判定の可否フラグ１０７は、ＦＷ（ＣＰＵ１２）が、例えば当該セグメントの領域が小さく、ヒット判定すべきでないと判断した場合などに、ヒット判定否（０）のフラグをセットする。即ち、可否フラグ１０７は、ヒット判定およびミスヒット時のオーバーラップ検出の機能を無効にするためのフラグである。本実施形態において、ＨＷ１１は、図６（Ｃ），（Ｄ）に示すオーバーラップ状況の場合に、前述の更新処理の代わりに、ヒット判定の可否フラグ１０７を否（０）にセットして、ヒット判定不可にしてもよい。
【００５７】
なお、本実施形態は、データ記憶装置としてＨＤＤであるディスクドライブ１に適用する場合について説明したが、記録媒体としてフラッシュメモリを使用するメモリモジュールであるＳＳＤ（solid state drive）にも適用できる。
【００５８】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【００５９】
１…ディスクドライブ、１０…ディスクコントローラ（ＨＤＣ）、
１１…キャッシュコントローラ（ＨＷ）、１２…ＣＰＵ（ＦＷ）、
１３…転送コントローラ、１４…ホストインターフェース（ホストＩ／Ｆ）、
１５…ディスクインターフェース（ディスクＩ／Ｆ）、
１６…リード／ライト（Ｒ／Ｗ）チャネル、２０…バッファメモリ、
２１…ヘッドアンプ、２２…ディスク、２３…ヘッド、３０…ホストシステム。
【図１】
2011022926.tif 000003
【図２】
2011022926.tif 000004
【図３】
2011022926.tif 000005
【図４】
2011022926.tif 000006
【図５】
2011022926.tif 000007
【図６】
2011022926.tif 000008
【図７】
2011022926.tif 000009