(57)【特許請求の範囲】
【請求項１】
ディスク装置上の一部のデータを一時記憶するためのディスクキャッシュを備えたディスク制御装置において、
ホスト装置から与えられた読み出し要求の履歴が記憶される読み出し要求履歴記憶手段と、
前記ホスト装置から読み出し要求が与えられた場合に、要求されたデータを前記ディスクキャッシュを利用して前記ホスト装置に転送する読み出し要求実行手段と、
前記ホスト装置から与えられた読み出し要求に基づき、対応する読み出し要求履歴要素を先行する読み出し要求履歴要素にリンクさせて前記読み出し要求履歴記憶手段に登録するための登録手段と、
前記ホスト装置から与えられた読み出し要求と前記読み出し要求履歴記憶手段に記憶されている読み出し要求履歴とから、次の読み出し要求の内容を予測し、該当するデータが前記ディスクキャッシュに存在しない場合には、当該データを前記ディスク装置から前記ディスクキャッシュにプリフェッチするプリフェッチ手段とを具備し、
前記読み出し要求履歴記憶手段は、各読み出し要求について、当該要求の示す要求先アドレス情報を第１の読み出し要求履歴要素として保持すると共に、当該要求が与えられる毎に当該要求の後に取得される、当該要求の示す前記要求先アドレス情報から始まるシーケンシャルな読み出しから最初に外れる読み出し要求の示す要求先アドレス情報を所定個数を上限にそれぞれ第２の読み出し要求履歴要素として保持する履歴要素組であって、前記シーケンシャルな読み出しでの連続アクセス数の情報を含む履歴要素組の形式で記憶するデータ構造を有し、
前記プリフェッチ手段は、前記ホスト装置から与えられた読み出し要求の示す要求先アドレス情報を前記第１の読み出し要求履歴要素とする前記履歴要素組中の全ての前記第２の読み出し要求履歴要素と対応する前記連続アクセス数情報とに従って前記プリフェッチを行うことを特徴とするディスク制御装置。
【請求項２】
前記登録手段は、前記ホスト装置からシーケンシャルな読み出しから外れる読み出し要求が与えられ、且つ当該シーケンシャルな読み出しの要求先アドレス情報を示す読み出し要求である前回読み出し要求に対応する前記第１の読み出し要求履歴要素を含む履歴要素組が前記読み出し要求履歴記憶手段に存在する場合で、少なくとも、前記与えられた読み出し要求に対応する前記第２の読み出し要求履歴要素が当該履歴要素組に含まれない場合、当該履歴要素組に含まれている前記第２の読み出し要求履歴要素の数が前記所定個数に達していないならば、当該履歴要素組中に前記与えられた読み出し要求に対応する前記第２の読み出し要求履歴要素を追加登録し、前記所定個数に達しているならば、当該履歴要素組中のいずれか１つの前記第２の読み出し要求履歴要素の１つを前記与えられた読み出し要求に対応する前記第２の読み出し要求履歴要素に変更する追加・変更登録手段を備えていることを特徴とする請求項１記載のディスク制御装置。
【請求項３】
前記ホスト装置から与えられた読み出し要求により要求されたデータに後続するデータを、当該読み出し要求に対応する前記第１の読み出し要求履歴要素と組をなして前記読み出し要求履歴記憶手段に記憶されている前記連続アクセス数情報に従ってプリフェッチするシーケンシャルプリフェッチ手段を更に具備することを特徴とする請求項１記載のディスク制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、計算機システムにおいて使用される、ディスクキャッシュ機構を備えたディスク制御装置に係り、特にデータ読み出し要求に先立って、ディスクキャッシュへのプリフェッチを効率的に行うことによって、データ読み出し時のディスクキャッシュヒット率の向上を図ったディスク制御装置に関する。
【０００２】
【従来の技術】
磁気ディスク装置等を用いて構成されるディスク記憶装置は、読み出し／書き込みを高速化するために、半導体メモリで構成された（ディスクキャッシュメモリを含む）ディスクキャッシュ機構（ディスクキャッシュ）を備えるのが一般的である。特に複数のディスク装置（ディスクドライブ）を使用したＲＡＩＤ（Redundant Arrays of Inexpensive Disks）装置においては、大容量のキャッシュメモリを搭載する例が多い。
【０００３】
しかし多くの場合、ディスクキャッシュは、データ書き込み用のバッファとして、ホストコンピュータ（ホスト装置）からの書き込みを見かけ上高速化する効果は大きいが、データ読み出しにおいては、高速化の効果は小さい。これは、ディスク記憶装置への読み出し要求には局所性がない場合が多いため、キャッシュのヒット率が低いことによる。
【０００４】
データ読み出し要求に先立って、ディスク装置からディスクキャッシュへのプリフェッチを行えば、ヒット率を改善することができる。ところが、実際には、どこからプリフェッチを行えばよいのかが確定できない。そこで従来は、シーケンシャルな読み出しを想定してプリフェッチを行っていた。
【０００５】
【発明が解決しようとする課題】
上記したようにディスクキャッシュを備えた従来のディスク記憶装置では、シーケンシャルな読み出しを想定してディスクキャッシュへのプリフェッチを行っていた。
【０００６】
しかし、ホストコンピュータからディスク記憶装置へのデータ読み出し要求は、実際にはシーケンシャルであるとは限らない。ホストコンピュータ側からみると、実はファイル単位であったり、テーブルサーチであったり、或いは複数のファイルをセットで読み出したり、といった相関があっても、ディスク記憶装置側ではそのようなパターンを知ることはできないので、単にランダムなアクセスとしてしか捉えられない。
【０００７】
このため従来は、ディスクキャッシュへのプリフェッチは限られた場合にしか効果がなく、場合によっては全く効果がないこともあった。
【０００８】
本発明は上記事情を考慮してなされたものでその目的は、データ読み出し要求の受け付け時に、アクセスの履歴を利用して有効にプリフェッチを行うことで、ディスクキャッシュのヒット率の向上を図ることができるディスク制御装置を提供することにある。
【０００９】
【課題を解決するための手段】
本発明は、ディスク装置上の一部のデータを一時記憶するためのディスクキャッシュを備えたディスクキャッシュ制御装置において、ホスト装置から与えられた読み出し要求の履歴が記憶される読み出し要求履歴記憶手段と、ホスト装置から読み出し要求が与えられた場合に、要求されたデータを上記ディスクキャッシュを利用してホスト装置に転送する読み出し要求実行手段と、ホスト装置から与えられた読み出し要求に基づき、対応する読み出し要求履歴要素を先行する読み出し要求履歴要素にリンクさせて上記読み出し要求履歴記憶手段に登録するための登録手段と、ホスト装置から与えられた読み出し要求と上記読み出し要求履歴記憶手段に記憶されている読み出し要求履歴とから、次の読み出し要求の内容を予測し、該当するデータがディスクキャッシュに存在しない場合には、当該データをディスク装置からディスクキャッシュにプリフェッチするプリフェッチ手段とを備えたことを特徴とする。
【００１０】
このような構成においては、読み出し要求履歴記憶手段にデータ読み出し要求の履歴を記録し、データ読み出し要求の受け付け時には、当該読み出し要求の履歴を利用して次の要求を予測することで有効にプリフェッチを行うことができ、ディスクキャッシュのヒット率の向上を図ることが可能となる。
【００１１】
ここで、ホスト装置から与えられた読み出し要求により要求されたデータに後続するデータをシーケンシャルプリフェッチする周知のシーケンシャルプリフェッチ手段を付加し、このシーケンシャルプリフェッチ手段によるプリフェッチと、上記プリフェッチ手段による新規なプリフェッチとを併用するならば、ディスクキャッシュのヒット率を一層向上することが可能となる。
【００１２】
また、上記読み出し要求履歴記憶手段のデータ構造としては、各読み出し要求について、対応す読み出し要求履歴要素を第１の読み出し要求履歴要素とし、後続する読み出し要求の読み出し要求履歴要素を第２の読み出し要求履歴要素として含む履歴要素組の形式で記憶するデータ構造を適用するとよい。この場合、上記プリフェッチ手段は、ホスト装置から与えられた読み出し要求に対応する読み出し要求履歴要素を第１の読み出し要求履歴要素とする履歴要素組中の第２の読み出し要求履歴要素に従ってプリフェッチを行えばよい。ここで、読み出し要求に対応する読み出し要求履歴要素には、要求先を示す要求先アドレス情報を用いるとよい。この場合の読み出し要求履歴記憶手段のデータ構造を第１のデータ構造と呼ぶ。
【００１３】
また、上記の構成において、上記登録手段に新規登録手段と変更登録手段とを持たせ、ホスト装置から読み出し要求が与えられ、且つ先行する読み出し要求に対応する第１の読み出し要求履歴要素を含む履歴要素組が読み出し要求履歴記憶手段に存在しない場合に、上記先行する読み出し要求に対応する第１の読み出し要求履歴要素と、与えられた読み出し要求に対応する第２の読み出し要求履歴要素とを含む履歴要素組を読み出し要求履歴記憶手段に新規登録し、先行する読み出し要求に対応する第１の読み出し要求履歴要素を含む履歴要素組が読み出し要求履歴記憶手段に存在する場合で、少なくとも、与えられた読み出し要求に対応する第２の読み出し要求履歴要素が当該履歴要素組に含まれない場合に、当該履歴要素組中の第２の読み出し要求履歴要素を与えられた読み出し要求に対応する第２の読み出し要求履歴要素に変更する構成を適用するとよい。
【００１４】
また、読み出し要求履歴記憶手段のデータ構造として、上記第１のデータ構造に代えて、各読み出し要求について、当該要求の示す要求先アドレス情報における所定の単位領域が指定可能な所定アドレス部分を第１の読み出し要求履歴要素とし、当該要求の後に当該要求とは上記所定アドレス部分が異なる要求先アドレス情報を最初に示した読み出し要求の当該要求先アドレス情報を第２の読み出し要求履歴要素として含む履歴要素組の形式で記憶する第２のデータ構造を適用するとよい。この場合、上記プリフェッチ手段は、ホスト装置から与えられた読み出し要求の示す要求先アドレス情報の所定アドレス部分を第１の読み出し要求履歴要素とする履歴要素組中の第２の読み出し要求履歴要素に従ってプリフェッチを行えばよい。
【００１５】
ここでは、ホスト装置から要求先アドレス情報の所定アドレス部分が前回とは異なる読み出し要求が与えられ、且つ前回の読み出し要求に対応する第１の読み出し要求履歴要素を含む履歴要素組が存在しない場合に、上記前回の読み出し要求に対応する第１の読み出し要求履歴要素と、与えられた読み出し要求に対応する第２の読み出し要求履歴要素とを含む履歴要素組を新規登録し、前回の読み出し要求に対応する第１の読み出し要求履歴要素を含む履歴要素組が存在する場合で、少なくとも、与えられた読み出し要求に対応する第２の読み出し要求履歴要素が当該履歴要素組に含まれない場合に、当該履歴要素組中の第２の読み出し要求履歴要素を与えられた読み出し要求に対応する第２の読み出し要求履歴要素に変更する構成を適用するとよい。
【００１６】
上記第２のデータ構造の読み出し要求履歴記憶手段を用いた構成では、先行する読み出し要求に対してシーケンシャルな読み出しとなる読み出し要求については、読み出し要求履歴記憶手段への登録が抑止されるため、読み出し要求履歴記憶手段のサイズを圧縮することができる。
【００１７】
また、読み出し要求履歴記憶手段のデータ構造として、各読み出し要求について、当該要求の示す要求先アドレス情報を第１の読み出し要求履歴要素とし、当該要求の後に当該要求の示す要求先アドレス情報から始まるシーケンシャルな読み出しから最初に外れる読み出し要求の示す要求先アドレス情報を第２の読み出し要求履歴要素とする履歴要素組であって、上記シーケンシャルな読み出しでの連続アクセス数の情報を含む履歴要素組の形式で記憶する第３のデータ構造を適用すると、なおよい。この場合、上記プリフェッチ手段は、ホスト装置から与えられた読み出し要求の示す要求先アドレス情報を第１の読み出し要求履歴要素とする履歴要素組中の第２の読み出し要求履歴要素と対応する連続アクセス数とに従ってプリフェッチを行えばよい。
【００１８】
ここでは、ホスト装置からシーケンシャルな読み出しから外れる読み出し要求が与えられ、且つ当該シーケンシャルな読み出しの要求先アドレス情報を示す読み出し要求である前回読み出し要求に対応する第１の読み出し要求履歴要素を含む履歴要素組が読み出し要求履歴記憶手段に存在しない場合に、上記前回の読み出し要求に対応する第１の読み出し要求履歴要素と、与えられた読み出し要求に対応する第２の読み出し要求履歴要素と、当該シーケンシャルな読み出しでの連続アクセス数の情報とを含む履歴要素組を新規登録し、前回の読み出し要求に対応する第１の読み出し要求履歴要素を含む履歴要素組が存在する場合で、少なくとも、与えられた読み出し要求に対応する第２の読み出し要求履歴要素が当該履歴要素組に含まれない場合に、当該履歴要素組中の第２の読み出し要求履歴要素を与えられた読み出し要求に対応する第２の読み出し要求履歴要素に変更すると共に、当該履歴要素組中の連続アクセス数の情報を当該シーケンシャルな読み出しの連続アクセス数の情報に変更する構成を適用するとよい。
【００１９】
上記第３のデータ構造の読み出し要求履歴記憶手段を用いた構成では、プリフェッチ手段によるプリフェッチを、ホスト装置から与えられた読み出し要求の示す要求先アドレス情報を第１の読み出し要求履歴要素とする履歴要素組中の第２の読み出し要求履歴要素と、対応する連続アクセス数とに従って行うことができるため、無駄なプリフェッチの発生を抑え、効率的なプリフェッチが実現可能となる。また、シーケンシャルプリフェッチを併用する場合も、ホスト装置から与えられた読み出し要求により要求されたデータに後続するデータを、当該読み出し要求に対応する第１の読み出し要求履歴要素と組をなして読み出し要求履歴記憶手段に記憶されている連続アクセス数情報に従ってシーケンシャルプリフェッチできるため、効率的なシーケンシャルプリフェッチが実現可能となる。
【００２０】
また、上記第３のデータ構造に代えて、第１の読み出し要求履歴要素に対応させて、複数の第２の読み出し要求履歴要素を登録可能とした第４のデータ構造を適用するならば、第１の読み出し履歴要素に対応する読み出し要求が与えられた場合に、複数の第２の読み出し要求履歴要素と対応する連続アクセス数とに従って、それぞれプリフェッチが行えることから、ディスクキャッシュのヒット率をより一層向上することが可能となる。
【００２１】
【発明の実施の形態】
以下、本発明の実施の形態につき図面を参照して説明する。
［第１の実施形態］
図１は本発明の第１の実施形態に係るディスク記憶装置を備えた計算機システムのブロック構成図を示す。
【００２２】
図１において、ディスク記憶装置１０は、ホストコンピュータ（ホスト）２０と所定のインタフェース、例えばＳＣＳＩ（Small Computer System Interface）３０により接続されている。なお、ＳＣＳＩ３０に代えて、Fibre Channel、IEEE1394等のチャネルインタフェース、或いはカードＲＡＩＤを想定すると、ＰＣＩ（Peripheral Component Interconnect Bus）等のホストコンピュータ２０の内部Ｉ／Ｏバスインタフェースを用いることも可能である。
【００２３】
ディスク記憶装置１０は、少なくとも１つのディスク装置、例えばＲＡＩＤに代表されるディスクアレイをなす複数の磁気ディスク装置（以下、ＨＤＤと称する）１１と、ＳＣＳＩ３０を介して送られるホストコンピュータ２０からの要求に応じてディスク記憶装置１０全体を制御するディスク制御装置１２とから構成される。
【００２４】
ディスク制御装置１２は、半導体メモリで構成された（ディスクキャッシュメモリを有する）ディスクキャッシュ（ディスクキャッシュ機構）１２１と、プリフェッチ予測テーブル１２２と、これら各部を制御するコントローラ１２３とを備えている。このディスク制御装置１２が従来の（ディスク記憶装置に設けられる）ディスク制御装置と大きく異なるのは、プリフェッチ予測テーブル１２２が付加されている点にある。なお、プリフェッチ予測テーブル１２２が付加されたことで、コントローラ１２３の制御内容も従来と一部異なる。またコントローラ１２３には、ホストコンピュータ２０からの前回のデータ読み出し要求で指定される領域アドレスの情報を保持する保持手段としてのレジスタ（以下、前回要求レジスタと称する）１２３ａを有している。このレジスタ１２３ａはハードウェアレジスタ（物理的なレジスタ）であっても、或いはコントローラ１２３のメモリ上に確保されるソフトウェアレジスタ（論理的なレジスタ）であっても構わない。
【００２５】
プリフェッチ予測テーブル１２２は、ホストコンピュータ２０から送られたデータ読み出し要求の指定する要求先ディスクアドレス（以下、領域アドレスと称する）に基づき次に要求されるデータ、つまりディスクキャッシュ１２へのプリフェッチの対象となるデータを予測するのに用いられる。
【００２６】
このプリフェッチ予測テーブル１２２の詳細を説明する前に、当該テーブル１２２を付加するに至った技術的背景について述べる。
まず、ホストコンピュータ２０からディスク記憶装置１０に対してデータ読みだし要求があった場合、当該ディスク記憶装置１０のディスク制御装置１２に設けられたコントローラ１２３は、ディスクキャッシュ１２１（内の図示せぬタグメモリ）を参照する。
【００２７】
もし、要求されたデータがディスクキャッシュ１２１に存在しないミスヒット時には、コントローラ１２３はＨＤＤ１１から該当するデータを読み出してディスクキャッシュ１２１に格納すると共に、当該データをホストコンピュータ２０に転送する。
【００２８】
これに対し、要求されたデータがディスクキャッシュ１２１に存在するヒット時には、コントローラ１２３はＨＤＤ１１にはアクセスせずに、当該ディスクキャッシュ１２１から該当するデータを読み出してホストコンピュータ２０に転送する。ここでディスクキャッシュ１２１は半導体メモリで構成されているため、ＨＤＤ１１よりも高速にアクセスできる。したがって、ホストコンピュータ２０からみると、ディスクキャッシュ１２１にヒットした場合には、ＨＤＤ１１にアクセスしない分、高速にデータが読み出せることになる。つまりディスクキャッシュ１２１のヒット率が上がれば、ディスク記憶装置１０は高速になるといえる。
【００２９】
さて、ディスクキャッシュ１２１のヒット率を向上するには、ホストコンピュータ２０からのデータ読み出し要求を上記の如く実行した場合に、当該要求から次に要求されるデータを予測して、その予測したデータを、ホストコンピュータ２０による次の読み出し要求の送出に先立って、ＨＤＤ１１からディスクキャッシュ１２１にプリフェッチ（先読み）しておけばよい。このようにすると、その後ホストコンピュータ２０が、実際に次のデータ読み出しを要求した場合には、該当データは既にディスクキャッシュ１２１にあるので、高速にデータを読み出すことができる。
【００３０】
ここで問題となるのは、ホストコンピュータ２０から次に要求されるデータをコントローラ１２３が予測する手法である。従来技術では、単に前のデータに連続するデータが要求されると予測して、つまりシーケンシャルな読み出しを想定してプリフェッチを行っていた。ところが、ホストコンピュータ２０からディスク記憶装置１０へのデータ読み出し要求は［発明が解決しようとする課題］の欄でも述べたように、実際にはシーケンシャルであるとは限らないため、ディスクキャッシュへのプリフェッチは限られた場合にしか効果がなく、場合によっては全く効果がないこともあった。
【００３１】
そこで本実施形態では、ディスク制御装置１２内にアクセス（読み出し要求）の履歴が記録されるプリフェッチ予測テーブル１２２を付加し、当該テーブル１２２を利用することでホストコンピュータ２０から要求されるデータを従来技術に比べて効果的に予測できるようにしている。
【００３２】
図１の構成では、プリフェッチ予測テーブル１２２はコントローラ１２３に接続されていて、当該テーブル１２２が専用のハードウェアとして用意されているように示されている。しかし、プリフェッチ予測テーブル１２２は、コントローラ１２３のメモリ（図示せず）、或いはディスクキャッシュ１２１の一部の領域に、論理的に構成されたものであっても構わない。また、プリフェッチ予測テーブル１２２の構成としては、ダイレクトマッピング、セットアソシアティブ、或いはフルアソシアティブのいずれの方式を適用してもよい。ここではフルアソシアティブ方式を適用するものとする。
【００３３】
プリフェッチ予測テーブル１２２の各エントリは、ＨＤＤ１１上の領域アドレスが（第１の読み出し要求履歴要素として）設定されるフィールド（領域アドレスフィールド）と、当該領域アドレスを用いたデータ読み出し要求の次にホストコンピュータ２０から要求された領域アドレスが予測アドレス（第２の読み出し要求履歴要素）として設定されるフィールド（予測アドレスフィールド）と、該当するエントリの内容が有効であるか否かを示すフラグ情報（Ｖフラグ）が設定されるフィールド（Ｖフィールド）とを有している。なお、プリフェッチ予測テーブル１２２をダイレクトマッピングまたはセットアソシアティブ方式で構成する場合には、領域アドレスの下位ビットで指定されるエントリの領域アドレスフィールドに、当該領域アドレスの上位ビットを設定して用いる。
【００３４】
次に、第１の実施形態におけるディスク記憶装置１０の動作について、ホストコンピュータ２０からデータ読み出し要求を受け付けた場合の処理（読み出し要求時処理）を例に、図２及び図３のフローチャートを適宜参照して説明する。
【００３５】
まず、ホストコンピュータ２０からディスク記憶装置１０に対してデータ読み出し要求が出されたものとする。
ディスク記憶装置１０のディスク制御装置１２に設けられたコントローラ１２３は、ホストコンピュータ２０からのデータ読み出し要求を受け付けると、当該要求の指定する領域アドレスでディスクキャッシュ１２１を参照することにより、要求されたデータがディスクキャッシュ１２１に存在するか否かをチェックする（ステップＳ１）。
【００３６】
もし、要求されたデータがディスクキャッシュ１２１に存在しないミスヒット時には、コントローラ１２３はＨＤＤ１１から該当するデータを読み出してディスクキャッシュ１２１に格納すると共に（ステップＳ２）、当該データをホストコンピュータ２０に転送する（ステップＳ３）。また、要求されたデータがディスクキャッシュ１２１に存在するヒット時には、コントローラ１２３はＨＤＤ１１にはアクセスせずに、当該ディスクキャッシュ１２１から該当するデータを読み出してホストコンピュータ２０に転送する（ステップＳ３）。
【００３７】
次にコントローラ１２３は、以下に述べる予測テーブル登録処理（ステップＳ４）を行う。
まずコントローラ１２３は、前回要求レジスタ１２３ａに保持されている、前回のデータ読み出し要求で指定された領域アドレス、つまり前回要求時の領域アドレスを取り出して、当該領域アドレスでプリフェッチ予測テーブル１２２を参照する（ステップＳ１１）。そしてコントローラ１２３は、前回要求時の領域アドレスを持つ有効なエントリ、つまり前回要求時の領域アドレスに対応し、且つＶフラグが例えば１（ＯＮ状態）となっているエントリ（有効な対応エントリ）が存在するか否かをチェックする（ステップＳ１２）。
【００３８】
もし、有効な対応エントリが存在しないならば、コントローラ１２３はプリフェッチ予測テーブル１２２上で、登録用のエントリ、例えば空きエントリを１つ確保し、今回要求時の領域アドレスを予測アドレスとして、前回要求時の領域アドレスと当該予測アドレスとの組を含むエントリ情報（履歴要素組）を、この確保したエントリに登録する（ステップＳ１３）。この際、Ｖフラグを１（ＯＮ状態）に設定する。なお、空きエントリがない場合には、例えばＬＲＵ（Least Recently Used）法で決まるエントリ、つまり最も以前に参照されたエントリを登録用エントリとすればよい。そしてコントローラ１２３は、前回要求レジスタ１２３ａの内容を今回要求時の領域アドレスに変更して（ステップＳ１６）、一連の予測テーブル登録処理（ステップＳ４）を終了する。
【００３９】
以上の処理により、前回要求時の領域アドレスに対応するプリフェッチ予測テーブル１２２内のエントリには、当該前回要求時の領域アドレスと予測アドレスとしての今回要求時の領域アドレスとの組を含むエントリ情報が登録される。
【００４０】
一方、上記ステップＳ１２で有効な対応エントリが存在すると判定された場合、コントローラ１２３は当該エントリ中の予測アドレスフィールドの内容が今回要求時の領域アドレスに一致するか否かをチェックする（ステップＳ１４）。もし、一致しない場合には、コントローラ１２３は、当該予測アドレスフィールドの内容を今回要求時の領域アドレスに変更する（ステップＳ１５）。そしてコントローラ１２３は、前回要求レジスタ１２３ａの内容を今回要求時の領域アドレスに変更して（ステップＳ１６）、予測テーブル登録処理（ステップＳ４）を終了する。これに対し、一致する場合には、コントローラ１２３は、前回要求レジスタ１２３ａの内容を今回要求時の領域アドレスに変更するだけで（ステップＳ１６）、予測テーブル登録処理（ステップＳ４）を終了する。なお、有効な対応エントリが存在する場合、ステップＳ１４の判定を行わずに、当該エントリの予測アドレスフィールドの内容を今回要求時の領域アドレスに変更するようにしても構わない。
【００４１】
以上は、プリフェッチ予測テーブル１２２がフルアソシアティブ方式の場合である。もし、ダイレクトマッピングまたはセットアソシアティブ方式の場合には、上記ステップＳ１１，Ｓ１２に相当する処理として、領域アドレスの所定の下位ビットの指定するプリフェッチ予測テーブル１２２内エントリを参照し、そのエントリの領域アドレスフィールドの内容が、当該領域アドレスの所定の上位フィールドの値に一致する有効なエントリであるか否かにより、有効な対応エントリが存在するか否かをチェックすればよい。
【００４２】
さてコントローラ１２３は予測テーブル登録処理（ステップＳ４）を終了すると、今回要求時の領域アドレスの次のアドレスのデータがディスクキャッシュ１２１に存在するか否かをチェックする（ステップＳ５）。もし、存在しないならば、つまりディスクキャッシュ１２１にヒットしないならば、今回要求時の領域アドレスの次のアドレスのデータをＨＤＤ１１からディスクキャッシュ１２１にプリフェッチする、いわゆるシーケンシャルプリフェッチを行い（ステップＳ６）、しかる後にステップＳ７に進む。これに対し、ヒット時には、そのままステップＳ７に進む。
【００４３】
コントローラ１２３はステップＳ７において、今回要求時の領域アドレスでプリフェッチ予測テーブル１２２内の対応エントリを参照することで、当該領域アドレスと組をなす予測アドレスを取り出す。この予測アドレスは、今回要求時の領域アドレスに一致するアドレスの指定するデータ読み出し要求が最も最近に出された場合に、その要求に続いて出されたデータ読み出し要求の指定した領域アドレスである。
【００４４】
次にコントローラ１２３は、取り出した予測アドレスでディスクキャッシュ１２１を参照することで、当該予測アドレスのデータがディスクキャッシュ１２１に存在するか否かをチェックする（ステップＳ８）。もし、存在するならば、コントローラ１２３は一連の読み出し要求時処理を終了し、次のデータ読み出し要求を待つ。また、既に次のデータ読み出し要求が出されているならば、当該次のデータ読み出し要求に対する新たな読み出し要求時処理を行う。これに対し、予測アドレスのデータがディスクキャッシュ１２１に存在しないならば、コントローラ１２３は当該予測アドレスのデータをＨＤＤ１１からディスクキャッシュ１２１にプリフェッチして（ステップＳ９）、一連の読み出し要求時処理を終了する。
【００４５】
なお、以上の説明では、フローチャートの作図の都合上、ホストコンピュータ２０から要求されたデータをホストコンピュータ２０に転送してから、シーケンシャルプリフェッチを行い、このシーケンシャルプリフェッチの後に予測アドレスに基づくプリフェッチを行うものとしたが、並行して行うようにして構わない。特に本実施形態のように、ディスクアレイをなす複数のＨＤＤ１１を備えた構成では、プリフェッチの並行動作が効率的に行える。
【００４６】
次に、以上に述べた読み出し要求時処理の具体例について、図４を参照して説明する。
まず、図４に示すように、領域アドレスａ（で且つサイズ１、ここではセクタ単位のサイズ）を対象とするデータ読み出し要求があり、次に領域アドレスｂ（で且つサイズ１）を対象とする読み出し要求があったとする。この場合、プリフェッチ予測テーブル１２２のａに対応するエントリには、図４中の矢印４１で示すように、領域アドレスａ（またはａの指定する所定単位のディスク領域を特定するのに十分な部分アドレス）と予測アドレスｂとの組が登録される。更にその次に、領域アドレスｃを対象とする要求があると、今度はプリフェッチ予測テーブル１２２のｂに対応するエントリに、図４中の矢印４２で示すように、領域アドレスｂ（またはｂの指定する所定単位のディスク領域を特定するのに十分な部分アドレス）と予測アドレスｃとの組が登録される。同様に、更にその次に、領域アドレスｄを対象とする要求があると、今度はプリフェッチ予測テーブル１２２のｃに対応するエントリに、図４中の矢印４３で示すように、領域アドレスｃ（またはｃの指定する所定単位のディスク領域を特定するの十分な部分アドレス）と予測アドレスｄとの組が登録される。このように連鎖して、プリフェッチ予測テーブル１２２内エントリの登録がなされていく。
【００４７】
このような状態で、再び領域アドレスａを対象とする読み出し要求があった場合、ディスク記憶装置１０のコントローラ１２３は、当該領域アドレスａに関しては、ＨＤＤ１１またはディスクキャッシュ１２１から該当するデータを読み出してホストコンピュータ２０に返す。
【００４８】
その後、或いは並行して、コントローラ１２３は領域アドレスａによりプリフェッチ予測テーブル１２２を参照し、当該領域アドレスａと組をなす予測アドレスｂを取り出す。そしてコントローラ１２３は、取り出した予測アドレスｂのデータがディスクキャッシュ１２１に存在しないディスクキャッシュミスヒットの場合には、当該予測アドレスｂのデータをディスクキャッシュ１２１にプリフェッチする。つまりコントローラ１２３は、ホストコンピュータ２０から前回と同じ順序で読み出し要求があると予測してプリフェッチを行う。
【００４９】
以上のプリフェッチの結果、領域アドレスａを対象とする読み出し要求の次に、ホストコンピュータ２０が領域アドレスｂを対象とするデータ読み出し要求を行った場合には、必ずディスクキャッシュ１２１にヒットする。この場合、領域アドレスｂのデータの高速読み出しが可能となる。
【００５０】
ここで注目すべきなのは、予測が完全には当たらない場合、例えば、領域アドレスａを対象とする読み出し要求の次の次に領域アドレスｂを対象とする読み出し要求があったような場合でも、ディスクキャッシュ１２１にヒットする可能性が高いということである。
【００５１】
このように本実施形態においては、ホストコンピュータ２０からのデータ読み出し要求毎に、要求された領域アドレスを予測アドレスとして前回要求時の領域アドレスと組にしてプリフェッチ予測テーブル１２２に登録することで、ホストコンピュータ２０から要求された領域アドレスの履歴、つまりホストコンピュータ２０からのデータ読み出し要求のパターンがプリフェッチ予測テーブル１２２に記録されるようにすると共に、ホストコンピュータ２０から新たにデータ読み出しが要求された場合に、要求された領域アドレスと組をなす予測アドレスを用いて当該予測アドレスのデータをＨＤＤ１１からディスクキャッシュ１２１にプリフェッチするようにしているので、プリフェッチ予測テーブル１２２に記録されている読み出し要求のパターンがホストコンピュータ２０からの読み出しの順序に完全に同一でなくても、ある程度の相関があれば、ディスクキャッシュ１２１にヒットする確率は向上する。
【００５２】
また本実施形態では、従来のシーケンシャルなプリフェッチ動作を併用しており、例えば領域アドレスａを対象とするデータ読み出しが要求された場合、次の領域アドレスａ＋１のデータもプリフェッチされる。このため、予測アドレスだけを用いたプリフェッチ動作を適用する場合より、ディスクキャッシュ１２１のヒット率が一層向上する。但し、シーケンシャルなプリフェッチは必ずしも必須条件ではない。
【００５３】
［第２の実施形態］
次に本発明の第２の実施形態について説明する。
本実施形態の特徴は、前記第１の実施形態で適用したプリフェッチ予測テーブル１２２のエントリ情報登録方法に工夫を加えた点にある。これに伴い、コントローラ１２３の制御内容も第１の実施形態とは一部異なるが、便宜的に図１のブロック図、図２のフローチャートを援用する。
【００５４】
一般にホストコンピュータ２０からのデータの読み出し単位は、ファイルの構造等に依存するので、ディスク記憶装置１０側の最小アクセス単位（例えばセクタ）より大きい。この場合、ディスク記憶装置１０側からみると、ある程度はシーケンシャルなアクセスが続くのが一般的なパターンとなる。このような場合、前記第１の実施形態のようにホストコンピュータ２０からの読み出し単位（読み出し要求）毎に、図３のフローチャートの予測テーブル登録処理に従って図４の構造のプリフェッチ予測テーブル１２２への登録動作を行ったのでは、シーケンシャルなパターン部分が登録される可能性があり、無駄な情報が多くなる。
【００５５】
そこで、シーケンシャルな読み出し、例えば前回要求時の領域アドレスがａ、サイズが１（セクタ）、今回要求時の領域アドレスがａ＋１、サイズが１といった組や、前回要求時の領域アドレスがａ、サイズがｋで、今回要求時の領域アドレスがａ＋ｋ、サイズがｎ＋１−ｋといった組については登録せず、次に領域アドレスｂといった不連続な読み出し要求があった場合に、このシーケンシャルな読み出しの先頭のアドレスａ，ｂの組を登録することが考えられる。しかし、その後、領域アドレスａ＋１を対象とする読み出し要求が送られることも想定される。そのため本実施形態では、ＨＤＤ１１の領域を一定の単位で区切り、領域アドレスを当該一定の単位を示す所定の上位アドレス部分（以下、先頭アドレスと称する）とオフセット（offset）とに分解し、その先頭アドレスと不連続な領域アドレスである予測アドレスとの組をプリフェッチ予測テーブル１２２に登録する予測テーブル登録処理を適用する。
【００５６】
この本実施形態で適用する予測テーブル登録処理の手順を図５のフローチャートに、具体例を図６に示し、前記第１の実施形態と異なる部分について具体的に説明する。
【００５７】
まず、要求された領域アドレスが、図６に示すａ，ａ＋１，…ａ＋ｎのように先行する読み出し要求により要求された領域アドレスに連続する場合、つまりシーケンシャル読み出しとなる場合（ステップＳ２１）、コントローラ１２３はプリフェッチ予測テーブル１２２へのエントリ情報登録と、前回要求レジスタ１２３ａの内容の変更を行わず、そのまま一連の予測テーブル登録処理（ステップＳ４）を終了する。
【００５８】
したがって、図６の例のようにａ，ａ＋１，…ａ＋ｎの読み出し要求が続き、次に不連続な読み出し要求ｂが続いた段階、つまりａから始まるシーケンシャルな読み出しから最初に外れる読み出し要求ｂが与えられた段階では、前回要求レジスタ１２３ａには領域アドレスａが保持されていることになる。なお、シーケンシャルな読み出しとなるのは、上記ａ，ａ＋１，…ａ＋ｎの例のように領域アドレスが連続する１セクタ単位の読み出し要求の列の場合とは限らず、例えば領域アドレスがａ、サイズがｋのデータの読み出しを指定する読み出し要求と、領域アドレスがａ＋ｋ、サイズがｎ＋１−ｋのデータの読み出しを指定する読み出し要求とが続く場合にも、シーケンシャルな読み出しとなる。これは、後述するで第３及び第４の実施形態でも同様である。
【００５９】
さてホストコンピュータ２０から、ａ＋ｎを対象とする読み出し要求の次に、ｂを対象とする読み出し要求が出された場合、つまりシーケンシャルな読み出し要求でなくなった場合（ステップＳ２１）、コントローラ１２３は、前回要求レジスタ１２３ａに設定されている領域アドレスａを、図６中の矢印６１で示すように、先頭アドレスａ′とオフセットとに分解する（ステップＳ２２）。そしてコントローラ１２３は、先頭アドレスａ′（をプリフェッチ予測テーブル１２２上での領域アドレスとして、当該領域アドレス）によりプリフェッチ予測テーブル１２２を参照し、対応する有効なエントリが存在しない場合、図６において矢印６２で示すように、ａ′とｂとの組を含むエントリ情報をプリフェッチ予測テーブル１２２に登録する（ステップＳ２３〜Ｓ２５）。また、ａ′に対応する有効なエントリが存在し、且つ当該エントリにａ′と組をなして登録されている予測アドレスがｂ（今回要求時の領域アドレス）でなければ、当該エントリ中の予測アドレスをｂに変更する（ステップＳ２３，Ｓ２４，Ｓ２６，Ｓ２７）。なお、有効な対応エントリが存在する場合、当該エントリにａ′と組をなして登録されている予測アドレスがｂであるか否かに無関係に、当該エントリの予測アドレスフィールドの内容を今回要求時の領域アドレスに変更するようにしても構わない。
【００６０】
そしてコントローラ１２３は、前回要求レジスタ１２３ａの内容を今回要求時の領域アドレスに変更して（ステップＳ２８）、一連の予測テーブル登録処理（ステップＳ４）を終了する。
【００６１】
このような予測テーブル登録処理を適用した本実施形態では、その後ホストコンピュータ２０から領域アドレスａを対象とするデータ読み出しが要求された場合、ａ＋１からのデータを例えば予め設定されているサイズ分だけシーケンシャルプリフェッチする動作（ステップＳ６）と、（プリフェッチ予測テーブル１２２内に領域アドレスａの先頭アドレスａ′と組をなして予測アドレスとして登録されている）ｂからのデータを例えば予め設定されているサイズ分だけプリフェッチ（シーケンシャルプリフェッチ）する動作（ステップＳ９）とが、順にまたは並列に行われる。
【００６２】
このように、領域アドレスが連続する読み出し要求に対してはプリフェッチ予測テーブル１２２への登録を行わない構成とすることにより、プリフェッチ予測テーブル１２２のサイズを圧縮することができる。この構成を適用した場合、ディスクキャッシュ１２１のヒット率を考慮すると、シーケンシャルプリフェッチを併用することが好ましい。
【００６３】
［第３の実施形態］
次に本発明の第３の実施形態について説明する。
本実施形態の特徴は、前記第１の実施形態で適用したプリフェッチ予測テーブル１２２のエントリ情報登録方法に工夫を加えた点にある。これに伴い、コントローラ１２３の制御内容も第１の実施形態とは一部異なるが、便宜的に図１のブロック図を援用する。
【００６４】
既に述べたように、ホストコンピュータ２０からのデータの読み出し要求は、ディスク記憶装置１０側からみると、ある程度はシーケンシャルなアクセスが続くのが一般的なパターンとなる。このような場合、前記第２の実施形態では、次に不連続な読み出し要求があった段階で、領域アドレスとしての先頭アドレスと予測アドレスとの組を含むエントリ情報を登録していた。しかし、第２の実施形態では、プリフェッチ予測テーブル１２２からはシーケンシャルな読み出し要求が続いた数は予測できず、無駄なシーケンシャルプリフェッチが発生する可能性がある。そこで本実施形態では、プリフェッチ予測テーブル１２２の各エントリに、図９に示すように、シーケンシャルな読み出し要求が続いた数（例えばセクタ数）を示す情報（以下、連続アクセス数と称する）が登録されるフィールド（連続アクセス数フィールド）を追加し、不連続な読み出し要求があった段階で、前記第１の実施形態と同様の領域アドレス（前回要求時の領域アドレス）と予測アドレス（今回要求時の領域アドレス）との組に連続アクセス数を付加したエントリ情報（履歴組）を登録する予測テーブル登録処理を適用する。
【００６５】
この予測テーブル登録処理を適用する読み出し要求時処理の手順を図７のフローチャートに、当該予測テーブル登録処理の手順を図８のフローチャートに、そして具体例を図９に示し、前記第１の実施形態と異なる部分について具体的に説明する。
【００６６】
まず、ホストコンピュータ２０からデータ読み出しが要求された場合、図２中のステップＳ１〜Ｓ３と同様の処理Ｓ３１〜Ｓ３３が行われた後、予測テーブル登録処理（ステップＳ３４）に進む。この予測テーブル登録処理（ステップＳ３４）では、図９の例のようにａ，ａ＋１，…ａ＋ｎの読み出し要求が続いている間は、つまりシーケンシャルな読み出しの場合には（ステップＳ５１）、プリフェッチ予測テーブル１２２へのエントリ情報登録を行わない。この場合、コントローラ１２３は以下に述べるステップＳ５９の前回要求レジスタ更新処理を行って、一連の予測テーブル登録処理（ステップＳ３４）を終了する。
【００６７】
本実施形態では、前回要求レジスタ１２３ａには、前記第１の実施形態と異なって、前回要求時の領域アドレスと連続アクセス数との組が保持されるようになっている。コントローラ１２３は、ステップＳ５９の更新処理で、前回要求レジスタ１２３ａ中の連続アクセス数を今回要求時のサイズだけインクリメントする。ここでは、領域アドレスは変更しない。
【００６８】
したがって、図９の例のようにａ，ａ＋１，…ａ＋ｎの読み出し要求が続いた直後では、前回要求レジスタ１２３ａの内容は領域アドレス＝ａ，（ａから始まる）連続アクセス数＝ｎ＋１となる。つまり本実施形態において、前回要求レジスタ１２３ａの示す前回要求時の領域アドレスは、一連のシーケンシャルな読み出し要求を１つの読み出し要求とみなした場合の先頭の領域アドレスを指す。
【００６９】
さてホストコンピュータ２０から、ａ＋ｎを対象とする読み出し要求の次に、これとは不連続なｂを対象とする読み出し要求が出されたものとする。この場合、コントローラ１２３はシーケンシャルな読み出しでないことから（ステップＳ５１）、前回要求レジスタ１２３ａに保持されている前回要求時領域アドレスでプリフェッチ予測テーブル１２２を参照する（ステップＳ５２）。このとき前回要求レジスタ１２３ａには（前回要求時の）領域アドレス＝ａ，（前回要求時の）連続アクセス数＝ｎ＋１が保持されていることから、領域アドレスａでプリフェッチ予測テーブル１２２が参照される。
【００７０】
コントローラ１２３は、領域アドレスａに対応する有効なエントリが存在しない場合（ステップＳ５３）、今回要求時の領域アドレスｂを予測アドレスとして、図９において矢印９１で示すように、前回要求レジスタ１２３ａに保持されている領域アドレスａ、即ち前回要求時（ａ，ａ＋１，…ａ＋ｎのシーケンシャルな読み出し要求の最初の要求時）の領域アドレスａと、当該予測アドレスｂと、前回要求レジスタ１２３ａに保持されている連続アクセス数−１の値で示される、ａ＋１から始まる連続アクセス数（これを前回要求時連続アクセス数と称する）ｎとの組を含むエントリ情報をプリフェッチ予測テーブル１２２に登録する（ステップＳ５４）。
【００７１】
また、ａに対応する有効なエントリが存在し、且つそのエントリにａと組をなして登録されている予測アドレスがｂ（今回要求時の領域アドレス）でなければ、そのエントリ中の現連続アクセス数、現予測アドレスを、それぞれｎ，ｂに変更する（ステップＳ５３，Ｓ５５，Ｓ５６）。
【００７２】
また、ａに対応する有効なエントリが存在し、且つそのエントリにａと組をなして登録されている予測アドレスがｂ（今回要求時の領域アドレス）であれば、そのエントリ中の現連続アクセス数をｎに変更する（ステップＳ５３，Ｓ５５，Ｓ５７）。なお、有効な対応エントリが存在する場合、当該エントリにａと組をなして登録されている予測アドレスがｂであるか否かに無関係に、ステップＳ５６の処理を行うようにしても構わない。
【００７３】
そしてコントローラ１２３は、前回要求レジスタ１２３ａ中の領域アドレスａを今回要求時の領域アドレスｂに、連続アクセス数ｎ＋１を今回要求時の（ｂから始まる）連続アクセス数（サイズ）に、それぞれ変更して（ステップＳ５８）、一連の予測テーブル登録処理（ステップＳ３４）を終了する。
【００７４】
同様に、図９の例のように、ｂの次に更にｂ＋１，…ｂ＋ｍの読み出し要求が続き、その次にｃを対象とする読み出し要求が続いた場合、ｂに対応するプリフェッチ予測テーブル１２２のエントリには、矢印９２で示すように、領域アドレス＝ｂ，連続アクセス数＝ｍ，予測アドレス＝ｃを含むエントリ情報が登録される。
【００７５】
このような予測テーブル登録処理を適用した本実施形態では、その後ホストコンピュータ２０から領域アドレスａを対象とするデータ読み出しが要求された場合、図７のフローチャートに示すように、当該領域アドレスａに対応するプリフェッチ予測テーブル１２２内のエントリの情報に基づき、次のａ＋１から連続アクセス数ｎのデータだけ、つまりａ＋１〜ａ＋ｎのデータだけ、シーケンシャルプリフェッチが行われる（ステップＳ３６，Ｓ３７）。また、このシーケンシャルプリフェッチに続いて、または、このシーケンシャルプリフェッチと並行して、プリフェッチ予測テーブル１２２内に領域アドレスａと組をなして予測アドレスとして登録されているｂからのプリフェッチが行われる（ステップＳ３８〜Ｓ４０）。このプリフェッチは、領域アドレスａと組をなして予測アドレスとして登録されているｂによりプリフェッチ予測テーブル１２２を参照し、当該ｂを領域アドレスとするエントリ情報中の連続アクセス数と予測アドレス（ここでは、連続アクセス数＝ｍ，予測アドレス＝ｃ）を取り出すことで行われ、ｂから連続アクセス数ｍ＋１のデータだけ、つまりｂ〜ｂ＋ｍのデータだけプリフェッチされる。
【００７６】
このように本実施形態においては、ａのデータが読み出された後、次のａ＋１からａ＋ｎまでのシーケンシャルなデータが読み出され、次にｂのデータが読み出され、更に次のｂ＋１からｂ＋ｍまでのシーケンシャルなデータが読み出された状態で、その後再びａからの読み出しが要求された場合、領域アドレス、連続アクセス数、予測アドレスの組を含むプリフェッチ予測テーブル１２２のエントリ情報に従い、ａに対応する（ａ，ｎ，ｂ）のエントリ情報からは、ａ，ｎで決まるａ＋１からａ＋ｎまでのシーケンシャルプリフェッチが行われ、（ａ，ｎ，ｂ）中のｂに対応する（ｂ，ｍ，ｃ）のエントリ情報からは、ｂ，ｍで決まるｂからｂ＋ｍまでのシーケンシャルプリフェッチが行われる。これにより、無駄なシーケンシャルプリフェッチが発生する確率を低く抑えることができる。
【００７７】
なお、以上の説明では、プリフェッチ予測テーブル１２２内の各エントリ中の連続アクセス数が、領域アドレス側の連続アクセス数、つまり領域アドレスに続くシーケンシャルな読み出しアクセスの数を示すものとしたが、これに限るものではない。例えば、予測アドレス側の連続アクセス数、つまり予測アドレスに続くシーケンシャルな読み出しアクセスの数を示すものであっても構わない。この場合、図９の例であれば、ｃの読み出しが要求された段階で、（ａ，ｍ，ｂ）のエントリ情報を登録すればよい。但し、そのためには、前回要求レジスタ１２３ａには、前々回の要求時の領域アドレス（前々回のシーケンシャルな読み出し時の最初の領域アドレス）と、そこからの連続アクセス数と、前回の要求時の領域アドレス（前回のシーケンシャルな読み出し時の最初の領域アドレス）とを保持する必要がある。
【００７８】
［第４の実施形態］
次に本発明の第４の実施形態について説明する。
本実施形態の特徴は、前記第３の実施形態で適用したプリフェッチ予測テーブル１２２のエントリ情報登録方法に工夫を加えた点にある。具体的には、プリフェッチ予測テーブル１２２の各エントリに、複数の予測アドレスを登録可能としたこと、つまり複数の予測アドレスフィールドを設けたことである。これに伴い、コントローラ１２３の制御内容も第３の実施形態とは一部異なるが、便宜的に当該第３の実施形態と同様に図１のブロック図を援用する。
【００７９】
ここで、本実施形態で適用する読み出し要求時処理の手順を第１０のフローチャートに、当該読み出し要求時処理中の予測テーブル登録処理の手順を図１１のフローチャートに、そして具体例を図１２に示し、前記第３の実施形態と異なる部分について具体的に説明する。
【００８０】
まず、ホストコンピュータ２０からデータ読み出しが要求された場合、図７中のステップＳ３１〜Ｓ３３と同様の処理Ｓ６１〜Ｓ６３が行われた後、予測テーブル登録処理（ステップＳ６４）に進む。この予測テーブル登録処理（ステップＳ６４）では、図１２の例のようにａ，ａ＋１，…ａ＋ｎの読み出し要求の次に、これとは不連続な読み出し要求ｂが出された際、或いはａ，ａ＋１，…ａ＋ｎの読み出し要求の次に、これとは不連続な読み出し要求ｄが出された際、つまりシーケンシャルな読み出しでなくなった場合に（ステップＳ８１）、前記第３の実施形態と同様にプリフェッチ予測テーブル１２２へのエントリ情報登録が行われる。但し、その登録方法は第３の実施形態と一部異なる。
【００８１】
ここでは、ａ，ａ＋１，…ａ＋ｎの読み出し要求の次にｂに対する読み出し要求があった結果、プリフェッチ予測テーブル１２２内のエントリには、予測テーブル登録処理（ステップＳ６４）により、前記第３の実施形態と同様にして、図１２に示すように、領域アドレスａと連続アクセス数ｎと矢印１２Ａで示す予測アドレスｂを含むエントリ情報、つまり（ａ，ｎ，ｂ）の組を含むエントリ情報が登録されたものとする。
【００８２】
その後、ａ，ａ＋１，…ａ＋ｎの読み出し要求の次に、今度は図１２に示すように、ｄに対する読み出し要求があったものとする。この場合、前記第３の実施形態であれば、プリフェッチ予測テーブル１２２の対応エントリ中の（ａ，ｎ，ｂ）が（ａ，ｎ，ｄ）に変更される、即ち予測アドレスがｂからｄに変更されることになる。しかし、このようにすると、次にａ，ａ＋１，…ａ＋ｎの読み出し要求に続いてｂに対する要求があった場合には、ディスクキャッシュ１２１にヒットしない可能性が高い。
【００８３】
そこで本実施形態では、ａ，ａ＋１，…ａ＋ｎの読み出し要求の次に、ｄに対する読み出し要求があった場合にも、現予測アドレスｂを変更せずに、以下に述べるように、別途ｄを予測アドレスｄとして追加登録するようにしている。
【００８４】
即ち、プリフェッチ予測テーブル１２２中に前回要求時の領域アドレスａに対応する有効なエントリが存在し、且つそのエントリにａと組をなして登録されている予測アドレスが今回要求時の領域アドレスｄに一致しない場合（ステップＳ８３，Ｓ８５）、コントローラ１２３は当該エントリ中に空きの予測アドレスフィールドがあるか否かを調べる（ステップＳ８６）。もし空きの予測アドレスフィールドがないならば、全予測アドレスフィールド（図１２の例ではｘ個の予測アドレスフィールド）のうち、最も優先度の低い予測アドレスフィールドを空きフィールドとして確保する（ステップＳ８７）。そのため、プリフェッチ予測テーブル１２２の各エントリには、当該エントリ中のｘ個の予測アドレスフィールド（に設定されている予測アドレス）についての優先度情報が登録されるフィールド（優先度フィールド）が設けられている。この優先度は、例えばＬＲＵとして知られているアルゴリズムにより決定すればよい。
【００８５】
コントローラ１２３は、既に空きの予測アドレスフィールドがある場合には、そのうちの任意の予測アドレスフィールドに、空きの予測アドレスフィールドがなかった場合には、ステップＳ８７で予測アドレスフィールドを確保して、今回要求時の領域アドレスｄを図１２中の矢印１２Ｂで示すように、予測アドレスとして追加登録する（ステップＳ８８）。
【００８６】
このようにして、プリフェッチ予測テーブル１２２のエントリには、ａから始まる一連の同一のシーケンシャル読み出し要求に続いて出された、それぞれ異なる領域アドレスを対象とする読み出し要求の履歴が、一定個数（ｘ個）を上限に登録される。
【００８７】
なお、シーケンシャル読み出しの場合には（ステップＳ８１）、前記第３の実施形態におけるステップＳ５９と同様の前回要求レジスタ更新処理（ステップＳ９１）が行われる。また、ステップＳ８８での予測アドレス追加登録処理を行った場合と、前回要求時の領域アドレスａに対応する有効なエントリが存在し、且つ当該エントリにａと組をなして登録されている予測アドレスがｂ（今回要求時の領域アドレス）でない場合は、前記第３の実施形態におけるステップＳ５７，Ｓ５８と同様の処理、即ち当該エントリ中の連続アクセス数を前回要求時連続アクセス数（前回要求レジスタ１２３ａの示す連続アクセス数−１の値）に変更する処理（ステップＳ８９）と、前回要求レジスタ１２３ａの内容を今回要求時の領域アドレスとアクセス数（サイズ）とに変更する前回要求レジスタ更新処理（ステップＳ９０）とが行われる。また、ステップＳ８４のエントリ情報登録処理の後は、ステップＳ９０の処理が行われる。
【００８８】
このような予測テーブル登録処理を適用した本実施形態では、その後ホストコンピュータ２０から領域アドレスａを対象とするデータ読み出しが要求された場合、コントローラ１２３は、図１０のフローチャートに示すように、当該領域アドレスａに対応するプリフェッチ予測テーブル１２２内のエントリの情報に基づき、当該領域アドレスａと対をなす連続アクセス数（図１２の例ではｎ）、及び全ての予測アドレス（図１２の例では、ｂ，ｄ，…）を取り出す（ステップＳ６５）。次にコントローラ１２３は、次のａ＋１から連続アクセス数ｎのデータだけ、つまりａ＋１〜ａ＋ｎのデータだけ、シーケンシャルプリフェッチを行う（ステップＳ６６，Ｓ６７）。
【００８９】
またコントローラ１２３は、ステップＳ６５で取り出した全ての予測アドレス（ｂ，ｄ，…）について、当該予測アドレス（ｂ，ｄ，…）を領域アドレスとしてプリフェッチ予測テーブル１２２内の対応エントリを参照し、その領域アドレス（ｂ，ｄ，…）と対をなす連続アクセス数（図１２の例では、ｍ，ｐ，…）を取り出す（ステップＳ６８）。そしてコントローラ１２３は、領域アドレス（ｂ，ｄ，…）と連続アクセス数（図１２の例では、ｍ，ｐ，…）とに基づき、当該領域アドレス（予測アドレス）から始まる連続アクセス数＋１のデータだけ、シーケンシャルプリフェッチを行う（ステップＳ６９〜Ｓ７１）。
【００９０】
このように本実施形態においては、過去の読み出しの履歴をプリフェッチ予測テーブル１２２に複数登録し、この複数の履歴を利用して、それぞれプリフェッチを行うようにしたので、ディスクキャッシュ１２１のヒット率を更に向上させることができる。
【００９１】
なお、本実施形態では、プリフェッチ予測テーブル１２２の同一エントリに登録されている予測アドレスの全てについて、当該予測アドレスに基づくプリフェッチを行うものとして説明したが、これに限るものではない。例えば優先度の高いものから所定数（２つ等）の予測アドレスを選択し、その選択した予測アドレスに基づくプリフェッチを行う構成としてもよい。
【００９２】
【発明の効果】
以上詳述したように本発明によれば、データ読み出し時に、アクセスの履歴を利用して有効にプリフェッチを行うようにしたので、ディスクキャッシュのヒット率を高めることができ、データ読み出しの高速化を図ることができる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係るディスク記憶装置を備えた計算機システムのブロック構成図。
【図２】上記第１の実施形態における読み出し要求時処理の手順を示すフローチャート。
【図３】図２中の予測テーブル登録処理（ステップＳ４）の手順を示すフローチャート。
【図４】上記第１の実施形態における予測テーブル登録処理の具体例を説明するための図。
【図５】本発明の第２の実施形態における予測テーブル登録処理の手順を示すフローチャート。
【図６】上記第２の実施形態における予測テーブル登録処理の具体例を説明するための図。
【図７】本発明の第３の実施形態における読み出し要求時処理の手順を示すフローチャート。
【図８】図７中の予測テーブル登録処理（ステップＳ３４）の手順を示すフローチャート。
【図９】上記第３の実施形態における予測テーブル登録処理の具体例を説明するための図。
【図１０】本発明の第４の実施形態における読み出し要求時処理の手順を示すフローチャート。
【図１１】図１０中の予測テーブル登録処理（ステップＳ６４）の手順を示すフローチャート。
【図１２】上記第４の実施形態における予測テーブル登録処理の具体例を説明するための図。
【符号の説明】
１０…ディスク記憶装置
１１…ＨＤＤ（ディスク装置）
１２…ディスク制御装置
２０…ホストコンピュータ（ホスト装置）
３０…ＳＣＳＩ（インタフェース）
１２１…ディスクキャッシュ
１２２…プリフェッチ予測テーブル（読み出し要求履歴記憶手段）
１２３…コントローラ（読み出し要求実行手段、登録手段、プリフェッチ手段、新規登録手段、変更登録手段、追加・変更登録手段）
１２３ａ…前回要求レジスタ
【図１】
0004060506.tif 000002
【図２】
0004060506.tif 000003
【図３】
0004060506.tif 000004
【図４】
0004060506.tif 000005
【図５】
0004060506.tif 000006
【図６】
0004060506.tif 000007
【図７】
0004060506.tif 000008
【図８】
0004060506.tif 000009
【図９】
0004060506.tif 000010
【図１０】
0004060506.tif 000011
【図１１】
0004060506.tif 000012
【図１２】
0004060506.tif 000013