(57)【要約】  ストレージのアクセス性能の向上を可能とする。ストレージは、データの書き込み及び読み出しが可能な第１、第２の記憶部をそれぞれ含む第１、第２の記憶装置を含み、前記第１の記憶装置は、前記第２の記憶装置よりも高速であるか同等とされ、前記第１の記憶装置は、前記第２の記憶部のアクセス制御と管理のための管理情報を記憶する第１の記憶領域をさらに含み、前記第２の記憶装置は、前記第２の記憶部のアクセス制御と管理のための管理情報を記憶する第２の記憶領域をさらに含み、前記第２の記憶部へのアクセスに用いられる前記第２の記憶部の管理情報の検索を、前記第１の記憶装置の前記第１の記憶領域から行い、前記第１の記憶領域に記憶されていない場合に、前記第２の記憶装置の前記第２の記憶領域を検索するアクセス制御部と、前記第１の記憶装置における前記第１記憶部の容量と前記第１の記憶領域の容量の配分を可変に設定する容量制御部を含む。
2014142337.tif 000002
【特許請求の範囲】
【請求項１】
データの書き込み及び読み出しが可能な第１の記憶部を含む第１の記憶装置と、
データの書き込み及び読み出しが可能な第２の記憶部を含む第２の記憶装置と、
を含み、
前記第１の記憶装置は、前記第２の記憶装置よりも高速であるか同等とされ、
前記第１の記憶装置は、前記第２の記憶部のアクセス制御と管理のための管理情報を記憶する第１の記憶領域をさらに含み、
前記第２の記憶装置は、前記第２の記憶部のアクセス制御と管理のための管理情報を記憶する第２の記憶領域をさらに含み、
前記第２の記憶部へのアクセスに用いられる前記第２の記憶部の管理情報の検索を、前記第１の記憶装置の前記第１の記憶領域から行い、前記第１の記憶領域に記憶されていない場合に、前記第２の記憶装置の前記第２の記憶領域を検索するアクセス制御部と、
前記第１の記憶装置における前記第１記憶部の容量と前記第１の記憶領域の容量の配分を可変に設定する容量制御部と、
を含む、ストレージ装置。
【請求項２】
前記アクセス制御部は、アクセス要求に対して、アクセス対象が前記第１の記憶部に記憶されていず、前記第２の記憶部にアクセスするにあたり、前記第１の記憶装置の前記第１の記憶領域を検索し、アクセスに対応する前記第２の記憶部の管理情報が前記第１の記憶領域に記憶されている場合には、前記第１の記憶領域に記憶されている前記第２の記憶部の管理情報を参照して前記第２の記憶部にアクセスし、
前記第２の記憶部の管理情報が前記第１の記憶領域に記憶されていない場合には、前記第２の記憶装置の前記第２の記憶領域に記憶されている前記第２の記憶部の管理情報を参照して前記第２の記憶部にアクセスする制御を行う、請求項１記載のストレージ装置。
【請求項３】
前記容量制御部は、前記第１記憶部の容量と前記第１の記憶領域の容量の予め定められた所定の組み合わせに関するアクセスの分析に基づき、前記組み合せの中から、前記第１の記憶部の容量と前記第１の記憶領域の容量の配分を決定し、
前記決定した容量の配分を、前記第１の記憶部と前記第１の記憶領域に設定する、請求項１又は２記載のストレージ装置。
【請求項４】
前記容量制御部は、アクセス対象が前記第１の記憶部でヒットするために必要な前記第１の記憶部の容量と、前記第２の記憶部の管理情報が前記第１の記憶領域でヒットするために必要な前記第１の記憶領域の容量の配分を求める判別部と、
前記第１の記憶部と前記第１の記憶領域に対して、予め定められた容量毎に、ヒット頻度情報を記録するヒット頻度記録部と、
前記第１記憶部と前記第１の記憶領域の容量の配分の組み合わせに対する、前記ヒット頻度情報から、アクセス時間の短縮に最適な容量の配分を決定する容量配分探索部と、
を含む、請求項１乃至３のいずれか１項に記載のストレージ装置。
【請求項５】
前記判別部は、前記第１の記憶部と、前記第１の記憶領域の容量の配分の複数の組み合わせにおいて発生するヒットの種類を判定し、前記容量の配分の複数の組み合わせに対するヒットの種類の判定結果から、アクセス対象が、前記第１の記憶部でヒットするか、又は、前記第２の記憶部の管理情報が前記第１の記憶領域でヒットするために必要とされる、前記第１の記憶部の容量と前記第１の記憶領域の容量の配分を求める、請求項４記載のストレージ装置。
【請求項６】
前記容量制御部は、予め定められたアクセス数毎に、前記第１の記憶部における前記第１の記憶部と前記第１の記憶領域に対する容量の配分を決定する、請求項１乃至３のいずれか１項に記載のストレージ装置。
【請求項７】
前記容量制御部は、前記第１の記憶部の容量の増減によるヒット数の変化、及び、前記第１の記憶領域の容量の増減による前記第２の記憶部の管理情報のヒット数の変化から、前記第１の記憶部の容量と前記第１の記憶領域の容量の組み合わせのうちヒットによるアクセス時間の短縮効果の点で最適な容量配分を決定する、請求項１乃至３のいずれか１項に記載のストレージ装置。
【請求項８】
前記第１の記憶部のアクセス制御と管理に必要な管理情報を記憶する記憶領域を、前記第１の記憶装置又は前記第１の記憶装置と同等のアクセス速度の記憶装置に備えている、請求項１乃至７のいずれか１項に記載のストレージ装置。
【請求項９】
ストレージ装置で記憶保持されるデータを記憶する記憶媒体を備え、
前記第１及び第２の記憶装置は、前記記憶媒体よりも高速とされ、
前記第１及び第２の記憶部は、前記記憶媒体に記憶されるデータの一部の写し又は更新内容を記憶する、請求項１乃至８のいずれか１項に記載のストレージ装置。
【請求項１０】
前記第１の記憶装置において前記第１の記憶部が第１のキャッシュであり、
前記第２の記憶装置において前記第２の記憶部が第２のキャッシュであり、
前記第１の記憶領域は、前記第２の記憶領域に格納された前記第２のキャッシュの管理情報の一部の写し又は更新内容を一時的に保持し、
前記第１のキャッシュは、前記記憶媒体に記憶されるデータの一部の写し又は更新内容を一時的に保持し、
前記第２のキャッシュは、前記第１のキャッシュから追い出されたデータを一時的に保持する、請求項９記載のストレージ装置。
【請求項１１】
データの書き込み及び読み出しが可能な第１の記憶部を含む第１の記憶装置と、
データの書き込み及び読み出しが可能な第２の記憶部を含む第２の記憶装置と、
を含み、
前記第１の記憶装置は、前記第２の記憶装置よりも高速であるか同等とされるストレージの制御にあたり、
前記第１の記憶装置に、前記第２の記憶部のアクセス制御と管理のための管理情報を記憶する第１の記憶領域をさらに含ませ、
前記第２の記憶装置は、前記第２の記憶部のアクセス制御と管理のための管理情報を記憶する第２の記憶領域をさらに有し、
前記第２の記憶部へのアクセスに用いられる前記第２の記憶部の管理情報の検索を、前記第１の記憶装置の前記第１の記憶領域から行い、前記第１の記憶領域に記憶されていない場合に、前記第２の記憶装置の前記第２の記憶領域を検索する制御を行い、
前記第１の記憶装置における前記第１記憶部の容量と前記第１の記憶領域の容量の配分を可変に設定する、ストレージ制御方法。
【請求項１２】
アクセス要求に対して、アクセス対象が前記第１の記憶部に記憶されていず、前記第２の記憶部にアクセスするにあたり、アクセスに対応する前記第２の記憶部の管理情報が前記第１の記憶領域に記憶されている場合には、前記第１の記憶領域に記憶されている前記第２の記憶部の管理情報を参照して前記第２の記憶部にアクセスし、前記第２の記憶部の管理情報が前記第１の記憶領域に記憶されていない場合には、前記第２の記憶領域に記憶されている前記第２の記憶部の管理情報を参照して前記第２の記憶部にアクセスする、請求項１１記載のストレージ制御方法。
【請求項１３】
前記容量配分を決定するにあたり、前記第１記憶部の容量と前記第１の記憶領域の容量の予め定められた所定の組み合わせに関するアクセスの分析に基づき、前記組み合せの中から、前記第１の記憶部の容量と前記第１の記憶領域の容量の配分を決定し、
前記決定した容量の配分を前記第１の記憶部と前記第１の記憶領域に設定する、請求項１１又は１２記載のストレージ制御方法。
【請求項１４】
前記容量配分を決定するにあたり、アクセス対象が前記第１の記憶部でヒットするために必要な前記第１の記憶部の容量と、前記第２の記憶部の管理情報が前記第１の記憶領域でヒットするために必要な前記第１の記憶領域の容量の配分を求め、
前記第１の記憶部と前記第１の記憶領域に対して、予め定められた容量毎に、ヒット頻度情報を記憶部に記録し、
前記第１記憶部と前記第１の記憶領域の容量の配分の組み合わせに対する、前記ヒット頻度情報から、アクセス時間の短縮に最適な容量の配分を決定する、請求項１１乃至１３のいずれか１項に記載のストレージ制御方法。
【請求項１５】
前記第１の記憶部と、前記第１の記憶領域の容量の配分の複数の組み合わせにおいて発生するヒットの種類を判定し、前記容量の配分の複数の組み合わせに対するヒットの種類の判定結果から、アクセス対象が、前記第１の記憶部でヒットするか、又は、前記第２の記憶部の管理情報が前記第１の記憶領域でヒットするために必要とされる、前記第１の記憶部の容量と前記第１の記憶領域の容量の配分を求める、請求項１４記載のストレージ制御方法。
【請求項１６】
予め定められたアクセス数毎に、前記第１の記憶部における前記第１の記憶部と前記第１の記憶領域に対する容量の配分を変更する、請求項１１乃至１４のいずれか１項に記載のストレージ制御方法。
【請求項１７】
前記第１の記憶部の容量の増減によるヒット数の変化、及び、前記第１の記憶領域の容量の増減による前記第２の記憶部の管理情報のヒット数の変化から、前記第１の記憶部の容量と前記第１の記憶領域の容量の組み合わせのうちヒットによるアクセス時間の短縮効果の点で最適な容量配分を決定する、請求項１１乃至１３のいずれか１項に記載のストレージ制御方法。
【請求項１８】
前記第１の記憶装置において前記第１の記憶部が第１のキャッシュであり、
前記第２の記憶装置において前記第２の記憶部が第２のキャッシュであり、
前記第１の記憶領域は、前記第２の記憶領域に格納された前記第２のキャッシュの管理情報の一部の写し又は更新内容を一時的に保持し、
前記第１のキャッシュは、前記ストレージで保持するデータを記憶する記憶媒体に記憶されるデータの一部の写し又は更新内容を一時的に保持し、
前記第２のキャッシュは、前記第１のキャッシュから追い出されたデータを一時的に保持する、請求項１１乃至１７のいずれか１項に記載のストレージ制御方法。
【請求項１９】
データの書き込み及び読み出しが可能な第１の記憶部を含む第１の記憶装置と、
データの書き込み及び読み出しが可能な第２の記憶部を含む第２の記憶装置と、
を少なくとも含み、
前記第１の記憶装置は、前記第２の記憶装置よりも高速であるか同等とされ、
前記第１の記憶装置は、前記第２の記憶部のアクセス制御と管理のための管理情報を記憶する第１の記憶領域をさらに含み、
前記第２の記憶装置は、前記第２の記憶部のアクセス制御と管理のための管理情報を記憶する第２の記憶領域をさらに含むストレージを構成するコンピュータに、
前記第２の記憶部へのアクセスに用いられる前記第２の記憶部の管理情報の検索を、前記第１の記憶装置の前記第１の記憶領域から行い、前記第１の記憶領域に記憶されていない場合に、前記第２の記憶装置の前記第２の記憶領域を検索するアクセス制御処理と、
前記第１の記憶装置における前記第１記憶部の容量と前記第１の記憶領域の容量の配分を可変に設定する容量制御処理と、
を実行させるプログラム。
【請求項２０】
前記アクセス制御処理が、
アクセス要求に対して、アクセス対象が前記第１の記憶部に記憶されていず、前記第２の記憶部にアクセスするにあたり、前記第１の記憶装置の前記第１の記憶領域を検索し、アクセスに対応する前記第２の記憶部の管理情報が前記第１の記憶領域に記憶されている場合には、前記第１の記憶領域に記憶されている前記第２の記憶部の管理情報を参照して前記第２の記憶部にアクセスし、
前記第２の記憶部の管理情報が前記第１の記憶領域に記憶されていない場合には、前記第２の記憶装置の前記第２の記憶領域に記憶されている前記第２の記憶部の管理情報を参照して前記第２の記憶部にアクセスする制御を行う処理を含む、請求項１９記載のプログラム。
【請求項２１】
前記容量制御処理は、前記第１記憶部の容量と前記第１の記憶領域の容量の予め定められた所定の組み合わせに関するアクセスの分析に基づき、前記組み合せの中から、前記第１の記憶部の容量と前記第１の記憶領域の容量の配分を決定し、
前記決定した容量の配分を、前記第１の記憶部と前記第１の記憶領域に設定する処理を含む、請求項１９又は２０記載のプログラム。
【請求項２２】
前記容量制御処理が、
前記容量配分を決定するにあたり、アクセス対象が前記第１の記憶部でヒットするために必要な前記第１の記憶部の容量と、前記第２の記憶部の管理情報が前記第１の記憶領域でヒットするために必要な前記第１の記憶領域の容量の配分を求める処理と、
前記第１の記憶部と前記第１の記憶領域に対して、予め定められた容量毎に、ヒット頻度情報を記憶部に記録する処理と、
前記第１記憶部と前記第１の記憶領域の容量の配分の組み合わせに対する、前記ヒット頻度情報から、アクセス時間の短縮に最適な容量の配分を決定する処理と、
を含む、請求項１９乃至２１のいずれか１項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２０１３−０５３６４６号（２０１３年３月１５日出願）に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明はストレージ装置と方法及びプログラムに関する。
【背景技術】
【０００２】
情報通信技術の進化とその適用分野の拡大に伴い、情報処理システムが扱うデータ量は増加している。情報処理システムの種類、数の増加に伴い、情報処理システムが扱うデータを格納するストレージの大容量化、高性能化が求められている。【０００３】
ストレージの管理を効率化するために、例えば、複数のシステムのデータの単一ストレージへの集約が行われる場合もある。この場合、単一のストレージに複数のシステムのデータが格納される。このため、単一のストレージに対して、大量のデータを格納することが可能な大容量の記憶容量と、複数のシステムからの大量のアクセスを処理するに十分な高性能が求められる。近時、ＨＤＤ（Hard Disk Drive）は大容量化が著しい。記憶媒体としてＨＤＤを用いることで、記憶容量に対する容量増大の要求に対応可能である。また単一のストレージを構成する記憶媒体数の増減により、記憶容量に対する要求に対して適宜対応が可能である。【０００４】
ストレージへの性能要求、すなわちアクセス高速化の実現のため、キャッシュが用いられる。ストレージのキャッシュは、特に制限されないが、ＤＲＡＭ（Dynamic Random Access Memory）等で構成される。ストレージのキャッシュは、ＨＤＤ等の記憶媒体に格納されたデータの複製又は更新を格納する。ストレージのキャッシュ（単に「キャッシュ」ともいう）にアクセス頻度の高いデータを格納することで、ＤＲＡＭ等に対してアクセス性能の低いＨＤＤ等の記憶媒体へのアクセスを削減する。その結果、ストレージシステムのアクセス性能が向上する。【０００５】
ストレージにおいて、階層キャッシュ構成が知られている。これは、アクセス時間の異なる複数のキャッシュを階層化し、アクセス時間の短い上位キャッシュから順番にアクセス頻度の高いデータを格納するものである。階層キャッシュ構成では、一般的なＨＤＤよりも高性能な記憶媒体としてＳＳＤ（Solid State Drive）が用いられる。ＳＳＤは、例えばＮＡＮＤ（否定論理積）型フラッシュメモリによって構成される。ＳＳＤは、ＤＲＡＭと比べてアクセス性能は低い。しかし、ＨＤＤよりも高いアクセス性能を持つ。また、ＳＳＤは、ＨＤＤと比べて容量は小さい。しかしながら、ＤＲＡＭと比べて、容量が大きく、且つ、安価である。【０００６】
階層キャッシュ構成において、下位のキャッシュには、ＳＳＤ等に代表される高速な記憶媒体を使用する。上位キャッシュには、ＤＲＡＭ等を使用する。下位のキャッシュには、上位キャッシュに格納しきれなくなったデータ(例えば上位キャッシュから置換等により追い出されたデータ）を格納する。上位キャッシュから追い出され下位キャッシュに格納されたデータに対して、再度アクセスを行う場合、当該下位キャッシュへのアクセスが行われる。これにより、ストレージのＨＤＤ等の記憶媒体に対するアクセスの発生頻度を低減している。その結果、アクセス性能を向上させる。上位キャッシュと下位キャッシュの間で以下の処理が行われる。
（ａ）下位キャッシュでヒットしたデータを、再度、上位キャッシュに格納する。
（ｂ）上位キャッシュにデータを格納しきれなくなった時点で、下位キャッシュから格納各された当該データを上位キャッシュから追い出し、再び、下位キャッシュに格納する。【０００７】
階層キャッシュ構成において、上記（ａ）と（ｂ）の一連の動作が繰り返し行われる。この結果、
・上位キャッシュには、最もアクセス頻度の高いデータが格納される。
・一方、下位キャッシュには、上位キャッシュに次いでアクセス頻度の高いデータが格納される。
このようにして、キャッシュが効率的に利用されることになる。【０００８】
キャッシュにおいて、複数種類のデータを格納する場合に、各データ間でキャッシュの競合を防ぐ目的でパーティショニングが用いられる。パーティショニングに関して例えば特許文献１や非特許文献１が参照される。パーティショニングは、例えばＣＰＵ（Central Processing Unit）のキャッシュにおいても提案されている。例えば共有キャッシュを、プロセス（スレッド）毎の占有領域であるパーティションに分割（区分）し、容量を制限することで、プロセス（又はスレッド）間での競合を防いでいる。【０００９】
ストレージのキャッシュにおいて、パーティショニングは、多くの場合、ボリューム（記憶領域の管理単位をなす一定のデータセットであり、「論理ボリューム」ともいう）などを単位として、キャッシュを、ボリュームの占有領域であるパーティションに分割（区分）することをいう。
あるボリュームへのアクセスに対してキャッシュミスにより、当該アクセスに対応するデータをキャッシュへ登録することになる。パーティショニングを用いない場合、キャッシュに既に格納されている他のボリュームのデータを追い出し、キャッシュの競合を発生させることになる。
一方、キャッシュをパーティションニングしている場合、あるボリュームへのアクセスに対して当該ボリュームに対応するパーティションでミスした時、該パーティション内でデータ（ページ）の置き換えが行われ、別のボリュームの占有領域に対応する別のパーティションのデータを追い出すことはない。このため、ボリューム間でのキャッシュ競合が回避される。【００１０】
本件に関して出願人によるサーチの結果、特許文献２−５がサーチされている。このうち、特許文献２には、ＤＢＭＳ（Data Base Management System）のキャッシュと記憶装置のキャッシュとを排他的に利用し、それらキャッシュをデータにより分割して割当量を最適化することにより、記憶装置のデータキャッシュを効率的に利用する構成が開示されている。特許文献２には、分割キャッシュに割り当てられる記憶領域の量を増やした場合のキャッシュヒット数も見積ることが開示されている。【００１１】
特許文献３には、複数のハードディスクユニットを有するディスクアレイ装置の装置全体を制御するコントローラモジュールに搭載される大容量メモリに、ＯＳ(Operating System)が管理するシステム域とキャッシュメモリとしてのキャッシュ域と、装置の管理・制御情報を格納し、かつ任意の時点で領域サイズを変更可能なテーブル域とを設け、電源のオン／オフを行うことなく装置の状態に応じてテーブル域を活性で変更し、テーブル域の使用しない領域は解放しキャッシュ領域として使用できるようにして、テーブル域及びキャッシュ域を運用中に活性で適宜増減させる構成のディスクアレイ装置が開示されている。【００１２】
特許文献４には、ＲＡＩＤ（Redundant Array of Inexpensive Disks）コントローラのメモリが、外部記憶装置（ＨＤＤ）に対する一次キャッシュ（ホストシステムのキャッシュメモリ（一次キャッシュ）として機能するために、キャッシュ管理情報が格納される領域と一時的なキャッシュ領域とを含み、ＳＳＤが二次キャッシュとして機能し、キャッシュ領域とキャッシュ管理情報が格納される領域とを含む構成が開示されている。【００１３】
特許文献５には、アクセス速度の異なる記憶装置が階層的に接続される階層記憶装置で階層毎にアクセスされる確率を動的に求める構成が開示されている。記憶階層を拡張すべきかどうかはアクセス情報管理部に記録されたアクセスパターンと拡張後のシステム構成を用いてアクセス速度計算部で階層記憶装置全体としてのアクセス速度を計算して判断する。記憶装置のアクセス速度は各階層のデータ転送速度と、過去のアクセス履歴から計算される各階層にデータが存在した割合とを掛け合わせて求められる。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特許４８１９３６９号公報
【特許文献２】特開２００５−２８５０５８号公報
【特許文献３】特開２００６−１０７０５４号公報
【特許文献４】特開２０１２−０７８９４１号公報
【特許文献５】特開平０９−００６６７８号公報
【非特許文献】
【００１５】
【非特許文献１】Qureshi et al., “Utility-Based Cache Partitioning: A Low-Overhead, High-Performance, Runtime Mechanism to Partition Shared Caches”, Proceedings of the 39th Annual International Symposium on Microarchitecture, pp. 423-432, 2006
【発明の開示】
【発明が解決しようとする課題】
【００１６】
以下に、本発明者による分析結果を与える。【００１７】
階層化されたキャッシュを持つ多くのストレージでは、高速な最上位のキャッシュから下位側のキャッシュへと順番に記憶媒体がアクセスされる。例えば上位キャッシュ、下位キャッシュの２階層方式のストレージでは、アクセス要求に応答して、ＤＲＡＭ等の上位キャッシュでヒット判定が行われる。該ヒット判定の結果、上位キャッシュでミスの場合（ヒットでない場合）、ＳＳＤ等の下位キャッシュでヒット判定が行われる。【００１８】
キャッシュのアクセス制御・管理を行うための管理情報として、例えば、
・キャッシュでのデータ格納先のアドレスや、
・アクセス要求で指定されたＨＤＤ上での論理アドレス、
・ページの追い出し等のアルゴリズムで用いられる置換優先度情報
等が含まれる。なお、ページは、キャッシュの管理単位である。特に制限されないが、ページサイズは、例えば４ＫＢ（キロバイト）あるいは８ＫＢの一定値からなる。【００１９】
なお、本明細書では、キャッシュの制御と管理のための管理情報を、「ディレクトリ情報」と呼ぶ。ディレクトリ情報は、例えば、アクセス要求に応答して、アクセス対象（アクセスターゲット）が、キャッシュに格納されているか（ヒット）、いないか（ミス）の判定を行うときに、参照／更新される。【００２０】
キャッシュの制御部（例えばキャッシュのアクセス制御部）において、アクセス要求に応答して、ディレクトリ情報を参照して、アクセス対象がキャッシュに登録されているか否かのヒット判定処理は、実際のデータのＲｅａｄ（読み出し）、Ｗｒｉｔｅ（書き込み）の実行の前に必ず行われる。【００２１】
また、キャッシュの制御部（アクセス制御部）において、キャッシュヒット／ミスの判定結果にしたがって、キャッシュのデータ格納領域に対してＲｅａｄ（読み出し）、Ｗｒｉｔｅ（書き込み）アクセスを実行する時も、このディレクトリ情報を参照／更新する。【００２２】
したがって、キャッシュのディレクトリ情報は、キャッシュのデータ格納領域よりも頻繁にアクセスされる。【００２３】
このことから、ストレージのアクセス性能を向上するには、データだけでなく、ディレクトリ情報も、ＤＲＡＭ等の高速な記憶媒体（例えば高速キャッシュ）に格納することが必要とされる。【００２４】
階層キャッシュ構成のストレージでは、キャッシュの制御部（アクセス制御部）において、上位キャッシュでミスが発生した場合に、下位キャッシュのディレクトリ情報を参照して、下位キャッシュでのヒット判定が行われる。【００２５】
キャッシュのヒット判定処理の性能は、ストレージのアクセス応答時間に影響する。このため、下位キャッシュのディレクトリ情報を、例えばＤＲＡＭ等の高速な記憶媒体に格納することで、ヒット判定処理の高速化を図る必要がある。【００２６】
しかしながら、下位キャッシュのディレクトリ情報の全てを、例えばＤＲＡＭ等の上位キャッシュと同一の記憶媒体に格納する構成（プロトタイプ例、参考例）とした場合、記憶媒体の容量の点で、以下のような問題が発生するものと思料される。【００２７】
キャッシュはページ単位でアクセスが制御される。このため、キャッシュのディレクトリ情報において、キャッシュを構成するページ関連の情報が大部分を占める。キャッシュのページ数は、キャッシュの容量に比例する。したがって、キャッシュの容量の増加に比例して、ページ数が増大し、キャッシュのディレクトリ情報の容量が増大する。【００２８】
下位キャッシュでのヒット判定処理の高速化のために、下位キャッシュのディレクトリ情報の全て、又は大半を、上位キャッシュと同様の高速な記憶媒体に格納する構成（プロトタイプ例）について検討する。【００２９】
この場合、下位キャッシュのディレクトリ情報の容量の増大により、上位キャッシュでのデータ格納領域の容量に不足が生じる事態が起こり得る。
上位キャッシュのデータ格納領域の容量が不足するか、なくなる(データ格納のための領域が枯渇)すると、上位キャッシュでのヒット頻度の極端な落ち込みを招く。【００３０】
すなわち、下位キャッシュのディレクトリ情報をＤＲＡＭ等の高速な記憶媒体に記録したことで、該ディレクトリ情報を参照して行われる下位キャッシュのヒット判定処理自体はたしかに高速化する。しかしながら、上位キャッシュでのヒット頻度の極端な落ち込みが発生する（上位キャッシュでは殆どミス判定となる）。【００３１】
上位キャッシュでのミス判定の多発により、下位キャッシュへのアクセス頻度が増大する。【００３２】
下位キャッシュでヒットしたデータは、再度、上位キャッシュに格納される。このため、下位キャッシュへのアクセス頻度の増大は、上位キャッシュにおいて、下位キャッシュのデータを格納するための空き領域確保のためのページ置換等の頻発を招くことになる。その結果、キャッシュ全体のアクセス性能はむしろ低下する。【００３３】
ＤＲＡＭ等の高速な記憶媒体に、下位キャッシュのディレクトリ情報の全て、又は、ほぼ全てを格納したことで、上位キャッシュにおいてデータ格納領域の容量不足が発生する、という問題に対して、ＤＲＡＭ等の高速な記憶媒体の容量を増大させることで解決を図ることも、案としては考えられる。しかしながら、この場合、ＤＲＡＭ等の高速な記憶媒体の容量を特段に増大させる必要があり、コスト等の面で、実用化は困難である。【００３４】
換言すれば、
データの書き込み及び読み出しが行われる第１の記憶部（例えば上位キャッシュ）を含む第１の記憶装置と、
データの書き込み及び読み出しが行われる第２の記憶部（例えば下位キャッシュ）を含む第２の記憶装置を少なくとも含み、
前記第１の記憶装置は、前記第２の記憶装置よりも高速であるか同等であり、アクセス要求に対して前記第１の記憶装置側からアクセスされるストレージ（プロトタイプ例、参考例）について、以下のことが問題となる。【００３５】
前記第２の記憶装置へのアクセス高速化を図るために、前記第１の記憶装置に、前記第２の記憶部（例えば下位キャッシュ）のアクセス制御と管理のための管理情報（ディレクトリ情報）を格納する構成とした場合、第１の記憶装置においてデータを格納する第１の記憶部に十分な領域が確保できず、ストレージ全体でのアクセス高速化が困難となる、という課題がある。【００３６】
また、第１の記憶装置の容量を増大することで、上記課題の解決を図る場合、第１の記憶装置（第１の記憶部）の容量を特段に増大させる必要があり、コスト面等で実現は困難である。【００３７】
本発明の目的は、上記した課題を解決し、ストレージのアクセス性能の向上を可能とする装置、方法、プログラムを提供することにある。
【課題を解決するための手段】
【００３８】
本発明の１側面によれば、データの書き込み及び読み出しが可能な第１の記憶部を含む第１の記憶装置と、
データの書き込み及び読み出しが可能な第２の記憶部を含む第２の記憶装置と、
を含み、
前記第１の記憶装置は、前記第２の記憶装置よりも高速であるか同等とされ、
前記第１の記憶装置は、前記第２の記憶部のアクセス制御と管理のための管理情報を記憶する第１の記憶領域をさらに含み、
前記第２の記憶装置は、前記第２の記憶部のアクセス制御と管理のための管理情報を記憶する第２の記憶領域をさらに含み、
前記第２の記憶部へのアクセスに用いられる前記第２の記憶部の管理情報の検索を、前記第１の記憶装置の前記第１の記憶領域から行い、前記第１の記憶領域に記憶されていない場合に、前記第２の記憶装置の前記第２の記憶領域を検索するアクセス制御部と、
前記第１の記憶装置における前記第１記憶部の容量と前記第１の記憶領域の容量の配分を可変に設定する容量制御部とを含むストレージ装置が提供される。【００３９】
別の側面によれば、データの書き込み及び読み出しが可能な第１の記憶部を含む第１の記憶装置と、
データの書き込み及び読み出しが可能な第２の記憶部を含む第２の記憶装置と、
を含み、
前記第１の記憶装置は、前記第２の記憶装置よりも高速であるか同等とされるストレージの制御にあたり、
前記第１の記憶装置に、前記第２の記憶部のアクセス制御と管理のための管理情報を記憶する第１の記憶領域をさらに含ませ、
前記第２の記憶装置は、前記第２の記憶部のアクセス制御と管理のための管理情報を記憶する第２の記憶領域をさらに有し、
前記第２の記憶部へのアクセスに用いられる前記第２の記憶部の管理情報の検索を、前記第１の記憶装置の前記第１の記憶領域から行い、前記第１の記憶領域に記憶されていない場合に、前記第２の記憶装置の前記第２の記憶領域を検索する制御を行い、
前記第１の記憶装置における前記第１記憶部の容量と前記第１の記憶領域の容量の配分を可変に設定するストレージ制御方法が提供される。【００４０】
さらに別の側面によれば、
データの書き込み及び読み出しが可能な第１の記憶部を含む第１の記憶装置と、
データの書き込み及び読み出しが可能な第２の記憶部を含む第２の記憶装置と、
を少なくとも含み、
前記第１の記憶装置は、前記第２の記憶装置よりも高速であるか同等とされ、
前記第１の記憶装置は、前記第２の記憶部のアクセス制御と管理のための管理情報を記憶する第１の記憶領域をさらに含み、
前記第２の記憶装置は、前記第２の記憶部のアクセス制御と管理のための管理情報を記憶する第２の記憶領域をさらに含むストレージを構成するコンピュータに、
前記第２の記憶部へのアクセスに用いられる前記第２の記憶部の管理情報の検索を、前記第１の記憶装置の前記第１の記憶領域から行い、前記第１の記憶領域に記憶されていない場合に、前記第２の記憶装置の前記第２の記憶領域を検索するアクセス制御処理と、
前記第１の記憶装置における前記第１記憶部の容量と前記第１の記憶領域の容量の配分を可変に設定する容量制御処理と、を実行させるプログラムが提供される。本発明によれば、前記プログラムを記録し、コンピュータで読み出し可能なメモリ媒体（a transitory machine readable medium:例えば半導体メモリデバイス、磁気／光記録ディスク（記録デバイス）が提供される。
【発明の効果】
【００４１】
本発明によれば、前述した課題を解決し、ストレージのアクセス性能の向上を可能としている。
【図面の簡単な説明】
【００４２】
【図１】本発明の一実施形態における全体のシステム構成を例示する図である。
【図２】本発明の一実施形態のストレージの構成を例示する図である。
【図３】本発明の一実施形態のストレージのアクセス制御部の構成を例示する図である。
【図４】（Ａ）、（Ｂ）は本発明の一実施形態における上位キャッシュ下限容量分布、及びＤ−Ｐａｒｔｉｔｉｏｎ下限容量分布を例示する図である。
【図５】本発明の一実施形態における、アクセス処理毎に上位キャッシュ下限容量分布の更新を行う手順を示すフローチャートである。
【図６】本発明の一実施形態における、アクセス処理毎にＤ−Ｐａｒｔｉｔｉｏｎ下限容量分布の更新を行う手順を示すフローチャート（その１）である。
【図７】発明の一実施形態における、アクセス処理毎にＤ−Ｐａｒｔｉｔｉｏｎ下限容量分布の更新を行う手順を示したフローチャート（その２）である。
【図８】本発明の実施例におけるキャッシュヒットの種類毎のアクセス時間短縮効果を例示する図である。
【図９】（Ａ）、（Ｂ）は本発明の実施例における上位キャッシュ下限容量分布（ヒット頻度）、及びＤ−Ｐａｒｔｉｔｉｏｎ下限容量分布（ヒット頻度）を例示する図である。
【図１０】本発明の実施例における上位キャッシュ容量、Ｄ−Ｐａｒｔｉｔｉｏｎ容量と頻度、アクセス時間短縮効果を例示する図である。
【図１１】実施形態における上位キャッシュのディレクトリ情報を例示する図である。
【図１２】実施形態における下位キャッシュのディレクトリ情報を例示する図である。
【図１３】本発明の一実施形態におけるＲｅａｄ又はＷｒｉｔｅ処理手順を示すフローチャートである。
【図１４】本発明の一実施形態における上位キャッシュ新規データ格納ページ確保の手順を示すフローチャートである。
【図１５】本発明の一実施形態における下位キャッシュ新規データ格納ページ確保の手順を示すフローチャートである。
【図１６】本発明の一実施形態における下位キャッシュディレクトリ情報Ｒｅａｄ手順を示すフローチャートである。
【図１７】本発明の一実施形態における下位キャッシュディレクトリ情報Ｗｒｉｔｅ手順を示すフローチャートである。
【図１８】本発明の一実施形態におけるＤ−Ｐａｒｔｉｔｉｏｎ  新規データ格納ページ確保の手順を示すフローチャートである。
【図１９】本発明の技術的特徴を例示する図である。
【発明を実施するための形態】
【００４３】
本発明のいくつかの実施形態について説明する。前述したように、例えば階層化キャッシュ構成）において、上位キャッシュに比べて低速な下位キャッシュは、上位キャッシュよりも大きな容量を持つ。また、下位キャッシュにおいて、キャッシュされるデータ本体を格納する記憶媒体は、ディレクトリ情報を格納する記憶媒体とは、独立して配設される場合がある（この点で上位キャッシュと相違している）。この場合、下位キャッシュにおいて、データ本体を格納する記憶媒体が大容量であると、下位キャッシュのディレクトリ情報の容量が上位キャッシュで利用可能な容量を上回り、上位キャッシュに容量不足が発生することになる。すなわち、階層キャッシュ構成のストレージにおいて、下位キャッシュのディレクトリ情報の全てを、ＤＲＡＭなどの高速な記憶媒体に格納する構成とした場合、前記課題の欄の前記プロトタイプ例について説明した前記問題が発生する。
【００４４】
本発明のいくつかの形態では、例えば下位キャッシュのディレクトリ情報のうち、アクセス頻度の高い一部のディレクトリ情報を、ＤＲＡＭなどの高速な記憶媒体に格納する構成としてもよい。また、下位キャッシュの全ディレクトリ情報を格納可能な記憶領域を、前記高速な記憶媒体とは異なる記憶媒体上に用意する構成としてもよい。具体的には、ボリュームのような記憶領域を、物理的又は仮想的に定義し、前記ボリュームを、下位キャッシュのディレクトリ情報を格納するための専用の記憶領域として使用する。本明細書では、このボリュームを「Ｄ−Ｖｏｌ」（Directory Volume）と呼ぶ。
【００４５】
本発明のいくつかの形態によれば、Ｄ−Ｖｏｌ（例えば図２の２３２）は、下位キャッシュ（図２の２３１）のディレクトリ情報（下位ディレクトリ情報：例えば図１２参照）の全てを格納するために十分な容量を有している。
【００４６】
本発明のいくつかの形態によれば、Ｄ−Ｖｏｌ（例えば図２の２３２）に格納された下位キャッシュ（図２の２３１）のディレクトリ情報のうち、アクセス頻度が相対的に高い一部のディレクトリ情報を、優先的に、ＤＲＡＭなどの高速な記憶媒体（２２）に格納する。
【００４７】
このように、アクセス頻度が相対的に高いディレクトリ情報を、優先的に、高速な記憶媒体（２２）に格納することで、下位キャッシュへのアクセス時に、アクセス頻度の相対的に高い下位ディレクトリ情報に関して、該情報が高速な記憶媒体（２２）でヒットする可能性は、より高くなる。該当する下位ディレクトリ情報が高速な記憶媒体（２２）でヒットした場合、Ｄ−Ｖｏｌ（例えば図２の２３２）へのアクセスは不要となる。この結果、下位キャッシュへのアクセスを高速化し、ストレージシステム全体のアクセス性能を向上する。高速な記憶媒体（２２）に格納された下位ディレクトリ情報（２２２）は、Ｄ−Ｖｏｌ（２３２）のキャッシュとして機能する。
【００４８】
本発明のいくつかの形態では、例えば、高速な記憶媒体（２２）に設けられた下位ディレクトリ情報格納領域である、キャッシュ上のパーティション（図２のＤ−ｐａｒｔｉｔｉｏｎ２２２）に、アクセス頻度の相対的に高い下位ディレクトリ情報を、優先的に格納する。下位ディレクトリ情報を格納するキャッシュ（下位ディレクトリ情報格納領域）をパーティションに分割することで、キャッシュの競合を防いでいる。
【００４９】
本発明のいくつかの形態によれば、高速な記憶媒体（２２）の総容量を超えない範囲で、高速な記憶媒体（２２）を、データキャッシュである上位キャッシュ（図２の２２１）と、下位ディレクトリ情報格納領域（図２のＤ−Ｐａｒｔｉｔｉｏｎ２２２）の容量の配分を決定するようにしてもよい。
【００５０】
各キャッシュ階層に対する性能面で最適な容量は、ストレージに対するワークロードに依存する。またストレージに対するワークロードは、例えば時間経過やストレージにアクセスするホストで動作するプログラムの種類などによって変化する。さらにホストで動作する複数のプログラムがストレージに並列にアクセスを行う場合、並列動作するプログラムの組み合わせによってワークロードが変化する。
【００５１】
本発明のいくつかの形態によれば、階層化されたキャッシュ全体でのアクセス性能を最適化するため、高速な記憶媒体（図２の２２）における上位キャッシュ（図２の２２１）と下位ディレクトリ情報格納領域（図２のＤ−Ｐａｒｔｉｔｉｏｎ２２２）の容量配分の組み合わせに対する、ヒット頻度情報から、アクセス時間の短縮に適した容量配分を最適に可変制御するようにしてもよい。
【００５２】
図１９を参照すると、本発明の好ましいいくつかの形態の一つに係るストーレッジ装置は、書き込み及び読み出しが可能な第１の記憶部（２２１：例えば上位キャッシュ）を含む第１の記憶装置（２２）と、情報データの書き込み及び読み出しが可能な第２の記憶部（２３１：例えば下位キャッシュ）を含む第２の記憶装置（２３）と、を含む。第１の記憶装置（２２）は、第２の記憶装置（２３）よりも高速であるか、同等とされる。アクセス要求に対して、アクセス対象の情報が第１の記憶部（２２１）に記憶されていず、第２の記憶部（２３１）にアクセスするにあたり、アクセスに対応する前記第２の記憶部の管理情報が第１の記憶領域（２２２）に記憶されている場合には、前記第１の記憶領域（２２２）に記憶されている前記第２の記憶部の管理情報を参照して前記第２の記憶部（２３１）にアクセスする。前記第１の記憶領域（２２２）に前記第２の記憶部の管理情報が記憶されていない場合には、前記第２の記憶領域（２３２）に記憶されている前記第２の記憶部の管理情報を参照して前記第２の記憶部（２３１）にアクセスする制御を行うアクセス制御部（２８）と、前記第１の記憶部（２２１）の容量と、前記第１の記憶領域（２２２）の容量の予め定められた所定の組み合わせに関する、アクセスの分析（ヒット頻度情報）に基づき、前記組み合せの中から、前記第１の記憶部（２２１）の容量と、前記第１の記憶領域（２２２）の容量の配分を決定し、決定した容量の配分を前記第１の記憶部と前記第１の記憶領域（２２２）に設定する容量制御部（２７）を含む。
【００５３】
図２を参照すると、前記容量制御部（２７）は、判別部（図２のキャッシュヒット種類判別部２４）と、ヒット頻度記録部（図２の容量別キャッシュヒット頻度記録部２５）と容量配分探索部（図２の最適容量配分探索部２６）を備えた構成としてもよい。判別部（図２のキャッシュヒット種類判別部２４）は、アクセス対象が前記第１の記憶部（２２１）でヒットするために必要な前記第１の記憶部（２２１）の容量と、前記第２の記憶部の管理情報が前記第１の記憶領域（２２２）でヒットするために必要な前記第１の記憶領域（２２２）の容量の配分を求める。ヒット頻度記録部（図２の容量別キャッシュヒット頻度記録部２５）は、前記第１の記憶部（２２１）と前記第１の記憶領域（２２２）に対して、予め定められた単位容量毎にヒットの発生頻度を記録する。容量配分探索部（図２の最適容量配分探索部２６）は、前記第１の記憶部（２２１）と前記第１の記憶領域（２２２）の容量配分の組み合わせに対するヒット頻度情報から、アクセス時間の短縮に適した容量配分を決定する。
【００５４】
本発明の一形態によれば、前記第１の記憶部（２２１）の制御と管理のための管理情報を記憶する記憶領域（図２の２２２）を、前記第１の記憶装置（２２）、又は第１の記憶装置（２２）と同等の記憶装置に備えている。
【００５５】
アクセス制御部（２８）は、アクセス要求に対して、前記第１の記憶装置（２２）の前記第１の記憶部（２２１）でヒットしない場合、前記第２の記憶装置（２３）の前記第２の記憶部（２３１）にアクセスする制御を行う。その際、該当する前記第２の記憶部の管理情報が、前記第１の記憶装置（２２）の前記第１の記憶領域（２２２）に記憶されている場合には、アクセス制御部（２８）は、前記第１の記憶装置の前記第１の記憶領域（２２２）に記憶されている、該当する前記第２の記憶部の管理情報を参照して、前記第２の記憶装置の前記第２の記憶部（２３１）にアクセスする。前記第１の記憶部（２２１）でヒットしない場合、前記第２の記憶部（２３１）へアクセスするにあたり、前記第１の記憶領域（２２２）に、該当する前記第２の記憶部の管理情報（下位ディレクトリ情報）が記憶されていない場合には、アクセス制御部（２８）は、前記第２の記憶装置（２３）の第２の記憶領域（２３２）又は記憶媒体（２１）に記憶されている前記第２の記憶部の管理情報を参照して、前記第２の記憶部（２３１）へのアクセスを行うように制御する構成としてもよい。
【００５６】
本発明の一形態において、前記第１の記憶装置（２２）において、前記第１の記憶部（２２１）は、第１のキャッシュ（上位キャッシュ）である。また、前記第２の記憶装置（２３）において、前記第２の記憶部（２３１）は第２のキャッシュ（下位キャッシュ）であり、前記第２の記憶部の管理情報が、前記第２のキャッシュのディレクトリ情報であり、前記第１の記憶領域（２２２）を、前記第２のキャッシュのディレクトリ情報の一部を記憶するパーティション（D−Partition））（２２２）として備えている。
【００５７】
本発明の一形態においては、特に制限されないが、キャッシュは、上位、下位のキャッシュの２階層構成とされる。上位キャッシュ（２２１）に加えて下位キャッシュ（２３１）のディレクトリ情報の一部又は全てを、上位キャッシュ（２２１）を備えた第１の記憶装置（２２）に格納するストレージ（２）において、性能向上を最大化するために、前記容量制御部（２７）は、上位キャッシュ（２２１）の容量と第１の記憶装置（２２）において、下位キャッシュのディレクトリ情報を格納する第１の記憶領域（Ｄ−Ｐａｒｔｉｔｉｏｎ）（２２２）に対する最適な容量配分を動的に算出する。
【００５８】
前記容量制御部（２７）は、第１の記憶部（上位キャッシュ）（２２１）において、アクセス数、ヒット数の計測を行うと共に、各アクセスでヒットしたページに関する置換の優先順位（ページ追い出しの優先順位）の情報（図１１の上位ディレクトリ情報２２３の置換優先度）を監視する。例えば、ページの置換優先度を用いて、第１の記憶部（上位キャッシュ）の容量が減少した場合の第１の記憶部（上位キャッシュ）におけるヒット数の変化の推測を行うようにしてもよい。
【００５９】
前記容量制御部（２７）は、第２の記憶部（下位キャッシュ）（２３１）についても、第１の記憶部（上位キャッシュ）（２２１）と同様に、アクセス数、ヒット数の計測を行うと共に、各アクセスでヒットしたページに関する置換の優先順位の情報（図１２の下位ディレクトリ情報２３２１の置換優先度）を監視する。ページの置換優先順位情報を用いて、第１の記憶部（上位キャッシュ）の容量が増加した場合における第１の記憶部（上位キャッシュ）（２２１）におけるヒット数の変化の推測を行う。
【００６０】
前記容量制御部（２７）は、第１の記憶領域（Ｄ−Ｐａｒｔｉｔｉｏｎ）（２２２）における、容量の割り当ての増減に伴う、第２の記憶部（下位キャッシュ）（２３１）のディレクトリ情報へのアクセスに関するヒット数の変化を推測する。
【００６１】
推測した第１の記憶部（上位キャッシュ）（２２１）の容量の増減によるヒット数の変化、及び、第１の記憶領域（Ｄ−Ｐａｒｔｉｔｉｏｎ）（２２２）の容量増減による第２の記憶部（下位キャッシュ）（２３１）の管理情報（下位ディレクトリ情報）のヒット数の変化から、第１の記憶部（上位キャッシュ）（２２１）と第１の記憶領域（Ｄ−Ｐａｒｔｉｔｉｏｎ）（２２２）に対して、アクセス性能向上の効果が最大となる容量配分を算出する。
【００６２】
具体的には、ストレージに対する各アクセスにおいて、
・第１の記憶部（上位キャッシュ）でヒットした場合、
・第２の記憶部（下位キャッシュ）でヒットし、且つ、ヒットしたページの管理情報（ディレクトリ情報）が第１の記憶領域（Ｄ−Ｐａｒｔｉｔｉｏｎ）でヒットした場合、及び、それ以外の場合（以下、これらのキャッシュヒットの場所、及びディレクトリ情報のヒットの有無を、「キャッシュヒットの種類」と呼ぶ）を区別する。
【００６３】
また「キャッシュヒットの種類」の種類毎に、１回あたりのアクセスで短縮されるアクセス時間を見積もる。
【００６４】
さらに第１の記憶部（上位キャッシュ）（２２１）、及び第１の記憶領域（Ｄ−Ｐａｒｔｉｔｉｏｎ）（２２２）に割り当てる容量を変化させたと仮定した場合に、各アクセスがヒットするか否か判定を行い、各アクセスがヒットするために最低限必要な容量で分類し、アクセス数を計測する。
【００６５】
一定数のアクセスに対して、前記ヒット判定、分類を行い、第１の記憶部（上位キャッシュ）（２２１）、第１の記憶領域（Ｄ−Ｐａｒｔｉｔｉｏｎ）（２２２）に割り当てる容量の組み合わせ毎に、前記一定数のアクセスに対して、キャッシュヒットにより短縮されるアクセス時間を計算し、前記計算結果から、短縮されるアクセス時間が最大となる容量の割り当てを決定する。
【００６６】
本発明の一形態によれば、ストレージの記憶領域に格納された全データを格納する記憶媒体（２１）と、
記憶媒体（２１）上のデータをキャッシュする第１の記憶部（上位キャッシュ）（２２１）、及び、第２の記憶部（下位キャッシュ）（２３１）と、
第１の記憶部（上位キャッシュ）（２２１）、及び、第２の記憶部（下位キャッシュ）（２３１）（２３１）の情報の格納にそれぞれ使用する記憶媒体である第１の高速記憶（第１の記憶装置２２）、及び、２次高速記憶（第２の記憶装置２３）と、
第２の記憶部（下位キャッシュ）（２３１）の管理情報（ディレクトリ情報）を格納するための記憶領域である第２の記憶領域（Ｄ−Ｖｏｌ）（２３２）と、
第１の記憶部（上位キャッシュ）（２２１）において、第２の記憶領域（Ｄ−Ｖｏｌ）（２３２）に対して定義され、第２の記憶部（下位キャッシュ）の管理情報（ディレクトリ情報）に対するキャッシュのパーティションである第１の記憶領域（Ｄ−Ｐａｒｔｉｔｉｏｎ）（２２２）と、
を備えている。
判別部（図２のキャッシュヒット種類判別部２４）は、各アクセスに対して容量配分別にキャッシュヒットの種類を判別する。
頻度記録部（図２の容量別キャッシュヒット頻度記録部２５）は、上位キャッシュ（２２１）、下位キャッシュ（２３１）及びＤ−Ｐａｒｔｉｔｉｏｎ（２２２）に対する各キャッシュヒットの種類の発生頻度を容量別に記録する。
最適容量配分探索部（２６）は、キャッシュヒットによるアクセス時間短縮の効果が最大となる第１の高速記憶の容量配分を探索する。
【００６７】
特許文献１では、ストレージの全データを格納する記憶媒体として、例えばＨＤＤ又はＮＡＮＤフラッシュ等で構成されたＳＳＤが用いられる。記憶媒体は単体又は複数から構成される。
【００６８】
第１の記憶部（上位キャッシュ）及び第２の記憶部（下位キャッシュ）は、前記記憶媒体（２１）に格納されたデータのうち、アクセス頻度の高いデータの複製又は更新を格納する。また第２の記憶部（下位キャッシュ）に対して、第１の記憶部（上位キャッシュ）は、よりアクセス頻度の高いデータに対する複製又は更新を格納する。
【００６９】
第１の記憶装置（２２）は、前記第１の記憶部（上位キャッシュ）に格納されるデータ、及び、ディレクトリ情報を実際に格納する記憶媒体である。第１の記憶装置（２２）は、第２の記憶部（下位キャッシュ）の管理情報（ディレクトリ情報）に対するキャッシュである第１の記憶領域（Ｄ−Ｐａｒｔｉｔｉｏｎ）を格納する。第２の記憶装置（２３）は、第２の記憶部（下位キャッシュ）に格納されるデータを実際に格納する記憶媒体である。第１の記憶装置（２２）、２次高速記憶（２３）共に、前記記憶媒体（２１）に比べて高速なアクセスが可能であり、第１の記憶装置（２２）は、第２の記憶装置（２３）に比べてより高速なアクセスが可能である。
【００７０】
第２の記憶領域（Ｄ−Ｖｏｌ）は、第２の記憶部（下位キャッシュ）の管理情報（ディレクトリ情報）を格納する。第２の記憶領域（Ｄ−Ｖｏｌ）に格納された第２の記憶部（下位キャッシュ）の管理情報（ディレクトリ情報）はストレージ外部から参照されないように、ストレージ全体の記憶領域には割り当てられず、独立して存在する。
【００７１】
第１の記憶領域（Ｄ−Ｐａｒｔｉｔｉｏｎ）は、第１の記憶装置（２２）上に定義され、第２の記憶領域（Ｄ−Ｖｏｌ）に格納された第２の記憶部（下位キャッシュ）の管理情報（ディレクトリ情報）の一部の写し又は更新内容を一時的に保持する。第１の記憶領域（Ｄ−Ｐａｒｔｉｔｉｏｎ）は、例えば第２の記憶領域（Ｄ−Ｖｏｌ）に対する専用のキャッシュとして機能し、第２の記憶部（下位キャッシュ）の管理情報（ディレクトリ情報）は、第１の記憶領域（Ｄ−Ｐａｒｔｉｔｉｏｎ）以外のキャッシュ領域には、格納されない。
【００７２】
本発明の一形態においては、ストレージの容量制御部（２７）は、各アクセスに対して容量配分別にキャッシュヒットの種類を判別する判別部（キャッシュヒット種類判別部２４）において、第１の記憶部（上位キャッシュ）と第１の記憶領域（Ｄ−Ｐａｒｔｉｔｉｏｎ）に対する容量配分を仮に変化させた場合に、それぞれの容量配分におけるキャッシュヒットの種類を判別する。キャッシュヒットの種類の判別結果から、アクセスが第１の記憶部（上位キャッシュ）におけるヒットとなるために最低限必要な第１の記憶部（上位キャッシュ）の容量、及びアクセスが第２の記憶部（下位キャッシュ）でヒットする場合にディレクトリ情報が第１の記憶領域（Ｄ−Ｐａｒｔｉｔｉｏｎ）でヒットするために最低限必要な第１の記憶領域（Ｄ−Ｐａｒｔｉｔｉｏｎ）の容量を計算する。
【００７３】
ヒット頻度記録部（容量別キャッシュヒット頻度記録部２５）は、第１の記憶部（上位キャッシュ）（２２１）、第２の記憶部（下位キャッシュ）（２３１）、及び、第１の記憶領域（Ｄ−Ｐａｒｔｉｔｉｏｎ）（２２２）に対する各キャッシュヒットの種類の発生頻度を、容量別に記録する。前記判別部（キャッシュヒット種類判別部２４）によって計算された第１の記憶部（上位キャッシュ）（２２１）でヒットし、及び、第２の記憶部（下位キャッシュ）（２３１）の管理情報が第１の記憶領域（Ｄ−Ｐａｒｔｉｔｉｏｎ）（２２２）でヒットするために最低限必要な容量に基づいて、容量配分の組み合わせ毎に、ヒットの種類の発生頻度を記録する。
【００７４】
容量配分探索部（図２の最適容量配分探索部２６）は、キャッシュヒットによるアクセス時間短縮の効果が最大となる第１の記憶装置の第１の記憶部（上位キャッシュ）（２２１）と、第１の記憶領域（Ｄ−Ｐａｒｔｉｔｉｏｎ）（２２２）の容量配分を探索する。例えば、ストレージに対して、一定数のアクセスが行われる毎に、前記容量別キャッシュヒット頻度記録部（２５）が記録した情報（容量配分の組み合わせ毎に集計された各ヒットの種類の発生頻度）を参照し、キャッシュヒットによるアクセス時間の短縮幅が最大となる組み合わせ、を探索する。
【００７５】
例えば本発明を適用しない場合の比較例（プロトタイプ例）と比べて、ＤＲＡＭなどの第１の高速記憶（第１の記憶装置）を、第１の記憶部（上位キャッシュ）と、第１の記憶領域（第２の記憶部（下位キャッシュ）の管理情報（下位ディレクトリ情報）の一部をキャッシュするＤ−Ｐａｒｔｉｔｉｏｎ）に対して、キャッシュの効果が最大となるような容量の最適配分を自動で決定することができる。この結果、例えば、時間と共に変化するアクセスパターンに対して、動的に、第１の記憶部（上位キャッシュ）（２２１）と、第１の記憶領域（Ｄ−Ｐａｒｔｉｔｉｏｎ）（２２２）への第１の高速記憶（第１の記憶装置）の容量配分を決定し、キャッシュの効果が最大となるように最適化を図ることができる。
【００７６】
図１は、本発明の実施形態の構成を例示する図である。図１を参照すると、本発明の実施形態においてシステム全体の構成はデータにアクセスする１台以上のホスト１、単体又は複数の記憶媒体から構成されるストレージ２、及び前記１、２を接続するネットワーク３を含む。
【００７７】
ネットワーク３は、ストレージ２に対して複数のホスト１が接続可能な形態のみならず、ホスト１とストレージ２が直接接続される形態であってもよい。またストレージ２はネットワーク３によって接続された複数の装置、或いはシステムによって構成されてもよい。
【００７８】
次に、本実施形態におけるストレージ２の構成について説明する。図２を参照すると、ストレージ２は、記憶媒体２１と、１次高速記憶装置２２と、２次高速記憶装置２３と、アクセス制御部２８と、容量制御部２７を備えている。容量制御部２７は、キャッシュヒット種類判別部２４と、容量別キャッシュヒット頻度記録部２５と、最適容量配分探索部２６、を備えている。
【００７９】
記憶媒体２１は、ストレージ２の記憶領域全体のデータを格納し、例えばＨＤＤ又はＮＡＮＤ型フラッシュメモリ等で構成されたＳＳＤのような単体又は複数の記憶媒体から構成される。
【００８０】
１次高速記憶装置２２（図１９の第１の記憶装置）は、記憶媒体２１に対してより高速な媒体である。１次高速記憶装置２２は、例えばＤＲＡＭ（例えばクロック同期型の高速DRAM（Synchronous DRAM）の集合体）で構成される。１次高速記憶装置２２は、キャッシュ領域２２４を備えている。キャッシュ領域２２４は、データを格納する上位キャッシュ２２１と、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２にパーティショニングされている。上位キャッシュ２２１（データキャッシュ）は、記憶媒体２１又は下位キャッシュ２３１に格納されたデータの写し又は更新内容を一時的に保持する。Ｄ−Ｐａｒｔｉｔｉｏｎ２２２は、下位キャッシュ２３１のディレクトリ情報（下位ディレクトリ情報）の写し又は更新内容（Ｄ−Ｖｏｌの一部の下位ディレクトリ情報）を一時的に保持する。上位キャッシュ２２１はストレージ２の記憶領域上のデータをページ単位で管理する。１次高速記憶装置２２は、上位キャッシュ領域２２１のディレクトリ情報（上位ディレクトリ情報）２２３を記憶保持する。なお、上位ディレクトリ情報２２３は、アクセス制御部２８内に、１次高速記憶装置２２と同様、ＤＲＡＭ等からなるテーブルとして備えた構成としてもよい。この場合、１次高速記憶装置２２において、キャッシュ領域２２４上でパーティショニングされた上位キャッシュ２２１とＤ−Ｐａｒｔｉｔｉｏｎ２２２間の競合は回避される。
【００８１】
上位ディレクトリ情報２２３は、特に制限されないが、例えば図１１に示すように、一エントリあたり、無効（無効フラグ）、Ｄ−Ｐａｒｔｉｔｉｏｎ、ページアドレス、格納先アドレス、更新済（更新済フラグ）、置換優先度の各フィールドを含む。
【００８２】
無効フラグは、該当ページについてディレクトリ情報が無効であるか、すなわち、対応する上位キャッシュ２２１のページが未使用であるか否かを表すフラグである。該当ページについてディレクトリ情報が無効（未使用である）の場合、Ｙｅｓ、無効でない（使用されている）場合、Ｎｏである。なお、無効フラグの値Ｙｅｓ／Ｎｏは例えば１ビット情報（あるいは１バイト／ワード）の１／０で表現するようにしてもよい。
【００８３】
Ｄ−Ｐａｒｔｉｔｉｏｎ（フラグ情報）は、上位キャッシュ２２１の各ページに対して、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に含まれるページであるか否かを表すフラグである。Ｄ−Ｐａｒｔｉｔｉｏｎフラグの値Ｙｅｓは、当該ページが、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に含まれるページ（下位ディレクトリ情報格納用のページ）である、Ｄ−Ｐａｒｔｉｔｉｏｎフラグの値Ｎｏは、当該ページがＤ−Ｐａｒｔｉｔｉｏｎ２２２に含まれるページ（下位ディレクトリ情報格納用ページ）ではない（データ格納用のページである）ことを表している。
【００８４】
ページアドレスは、上位キャッシュ２２１に格納されたページについてストレージ２全体での対応するページアドレス（例えば論理アドレス空間でのページ番号）である。
格納先アドレスは、当該ページの上位キャッシュ２２１における格納先を表すアドレスである。
【００８５】
更新済フラグは、当該ページのデータが上位キャッシュ２２１に格納された後に、更新済であるか否かを表すフラグである。更新済フラグは、上位キャッシュ２２１の当該ページにデータが格納された後に、該ページのデータが更新され、記憶媒体２１へは該更新内容が反映されていない場合（例えばＷｒｉｔｅ  ｂａｃｋされていない場合）に、更新済み（Ｙｅｓ）の値とされ、上位キャッシュ２２１の当該ページにデータが格納された後に、該ページのデータが未更新状態であるか、記憶媒体２１へ更新内容が反映されている場合に、未更新（Ｎｏ）の値とされる。
【００８６】
置換優先度は、当該ページの置換における優先度を表す情報である（値の設定としては、例えば正値に関して、大きいほど、優先的に置換される、あるいは、値が小さいほど、優先的に置換される、のいずれかに設定される）。
【００８７】
上位ディレクトリ情報２２３において、各欄の情報のうち、上位キャッシュ２２１における格納先を表す格納先アドレスは、各ページに対応したディレクトリ情報の大きさが同一であり、整列されて格納されている場合には、省略可能である。
【００８８】
１次高速記憶装置２２に配設される上位キャッシュ２２１は、１次キャッシュとして動作する。ホスト１からのアクセス要求が行われた場合に、最初に、上位キャッシュ２２１に対するアクセスが行われる。
【００８９】
ホスト１からのアクセス要求がＲｅａｄである場合、上位キャッシュ２２１において、アクセス対象データが格納されていない場合（ミス判定時）、下位キャッシュ２３１に、当該アクセス対象データが格納されているか、問い合わせが行われる。
【００９０】
下位キャッシュ２３１において、アクセス対象データが格納されていない場合（ミス判定時）、記憶媒体２１に対して、アクセス対象データのＲｅａｄが行われる。
【００９１】
上位キャッシュ２２１以外（下位キャッシュ２３１又は記憶媒体２１）から、Ｒｅａｄされたデータは、ページ単位に、上位キャッシュ２２１に格納され、上位ディレクトリ情報２２３が更新される。
【００９２】
Ｗｒｉｔｅアクセスにおけるデータも、上位キャッシュ２２１に格納され、上位ディレクトリ情報２２３が更新される。
【００９３】
上位キャッシュ２２１に新たなページを格納する場合、当該データを格納するだけの空き領域をページ単位で確保する必要がある。
【００９４】
上位キャッシュ２２１において、必要な空き領域が確保できない場合、既にデータが格納されているページを、例えばＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）等の置換アルゴリズムを用いて追い出し、必要な空き領域を確保する。
【００９５】
上位キャッシュ２２１から置換されるページが更新済みでない場合、当該ページは下位キャッシュ２３１に格納され、上位ディレクトリ情報２２３の該当ページの情報が更新される。
【００９６】
２次高速記憶装置２３（図１９の第２の記憶装置２３）は、記憶媒体２１に対してより高速であるが、１次高速記憶装置２２と同等又はより低速な媒体である。例えば記憶媒体２１がＨＤＤ、第１の高速記憶がＤＲＡＭである場合、２次高速記憶装置２３は、例えばＮＡＮＤ型フラッシュメモリで構成されるＳＳＤなどの中間的な性能を持つ媒体で構成される。
【００９７】
２次高速記憶装置２３は、記憶媒体２１に格納されたデータをキャッシュするための下位キャッシュ２３１と、下位キャッシュ２３１のディレクトリ情報を格納するためのボリュームであるＤ−Ｖｏｌ２３２を格納する。下位キャッシュ２３１は、ストレージ２の記憶領域上のデータを例えばページ単位で管理する。
【００９８】
下位キャッシュ２３１は、上位キャッシュ２２１と共に、記憶媒体２１に対する一般的な階層キャッシュを構成している。下位キャッシュ２３１は、上位キャッシュ２２１に対して、第２のキャッシュとして動作する。下位キャッシュ２３１は、上位キャッシュ２２１から追い出されたデータを格納する。下位キャッシュ２３１は、記憶媒体２１に対して上位キャッシュ２２１と同一のページをキャッシュしてもよい。
【００９９】
Ｄ−Ｖｏｌ２３２は、２次高速記憶装置２３に格納される構成以外に、例えば記憶媒体２１のように、１次高速記憶装置２２以外の任意の媒体に格納される構成でもよい。また本実施形態において下位キャッシュ２３１におけるページサイズは、上位キャッシュ２２１と共通であることを前提とするが、共通でない構成としてもよい。
【０１００】
下位キャッシュ２３１のディレクトリ情報は、特に制限されないが、例えば図１２の下位ディレクトリ情報２３２１からなる。
【０１０１】
図１２を参照すると、下位ディレクトリ情報２３２１は、一エントリあたり、無効（無効フラグ）、ページアドレス、格納先アドレス、更新済（更新済フラグ）、置換優先度の各フィールドを含む。
【０１０２】
無効フラグは、また各ページについて対応するディレクトリ情報が無効であるか、つまり対応する下位キャッシュ２３１のページが未使用であるか否かを表すフラグである。該当ページについてディレクトリ情報が無効（未使用である）の場合、Ｙｅｓ、無効でない（使用されている）場合、Ｎｏである。なお、無効フラグの値Ｙｅｓ／Ｎｏは例えば１ビット情報（あるいは１バイト／ワード）の１／０で表現するようにしてもよい。
【０１０３】
ページアドレスは、下位キャッシュ２３１に格納されたページについてストレージ２全体での対応するページアドレスである。格納先アドレスは、当該ページの下位キャッシュ２３１における格納先を表すアドレスである。
【０１０４】
更新済フラグは、当該ページのデータが下位キャッシュ２３１に格納された後に更新済であるか否かを表すフラグである。更新済フラグは、例えば下位キャッシュ２３１の当該ページにデータが格納された後に更新されたが、記憶媒体２１へ該更新内容が反映されていない場合にＹｅｓとされ、下位キャッシュ２３１の当該ページにデータが格納された後に、該ページのデータが未更新状態であるか、記憶媒体２１へ該更新内容が反映された場合に、Ｎｏとされる。
【０１０５】
置換優先度は、当該ページの置換における優先度を表す情報である。特に制限されないが、置換優先度の値の設定としては、例えば正値に関して、大きいほど、優先的に置換される、あるいは、値が小さいほど、優先的に置換される、のいずれかに設定される。但し、上位ディレクトリ情報の置換優先度の栽番方法と共通の栽番方法とされる。
【０１０６】
下位ディレクトリ情報２３２１において、上記各欄の情報のうち下位キャッシュ２３１における格納先を表すアドレスは、各ページに対応したディレクトリ情報の大きさが同一であり、整列されて格納されている場合には、省略可能である。
【０１０７】
また各ページのディレクトリ情報が無効であるか表すフラグは、対応するページアドレスをディレクトリ情報が無効である場合に、特定の値に変更する等の方法により、省略が可能である。
【０１０８】
なお、図２では、下位ディレクトリ情報は、Ｄ−Ｐａｒｔｉｔｉｏｎ２２１、Ｄ−Ｖｏｌ２３２に記憶する構成とされているが、下位ディレクトリ情報はさらに記憶媒体２１に記憶する構成としてもよい。
【０１０９】
アクセス制御部２８は、ホスト１(図１)からのアクセス要求を受け、１次高速記憶装置２２、２次高速記憶装置２３、記憶媒体２１へのアクセスを行う。
【０１１０】
キャッシュヒット種類判別部２４は、ホスト１からストレージ２に対する各アクセス要求について、上位キャッシュ２２１とＤ−Ｐａｒｔｉｔｉｏｎ２２２に対する１次高速記憶装置２２の容量の配分について、複数の組み合わせを仮定し（上位キャッシュ：Ａバイト、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２：Ｂバイト、Ａ＋Ｂ＝一定（＝キャッシュ領域２２４のメモリ容量）のもとでの（Ａ，Ｂ）の所定の組み合せ）、仮定した各容量配分の組み合わせにおいて発生するキャッシュヒットの種類を判定する。
【０１１１】
キャッシュヒット種類判別部２４は、  キャッシュヒットの種類の判定には、上位キャッシュ２２１のディレクトリ情報、及び下位キャッシュ２３１に対するアクセスで参照されたＤ−Ｐａｒｔｉｔｉｏｎ２２２、又はＤ−Ｖｏｌ２３２のディレクトリ情報を用いる。
【０１１２】
キャッシュヒット種類判別部２４は、各容量配分の組み合わせに対するキャッシュヒットの種類の判定結果から、アクセスされたページが上位キャッシュ２２１でヒット、又は、下位キャッシュ２３１のディレクトリ情報がＤ−Ｐａｒｔｉｔｉｏｎ２２２でヒットするために、最低限必要となる上位キャッシュ２２１、及びＤ−Ｐａｒｔｉｔｉｏｎ２２２の容量配分を求める。
【０１１３】
容量別キャッシュヒット頻度記録部２５は、アクセスされるページ毎にキャッシュヒット種類判別部２４によって計算された、上位キャッシュ２２１でヒット、又は下位キャッシュ２３１のディレクトリ情報がＤ−Ｐａｒｔｉｔｉｏｎ２２２でヒットするために最低限必要となる上位キャッシュ２２１、及びＤ−Ｐａｒｔｉｔｉｏｎ２２２の容量配分を参照して、容量配分の組み合わせ毎に各キャッシュヒットの種類の発生頻度を記録する。
【０１１４】
最適容量配分探索部２６は、容量別キャッシュヒット頻度記録部２５に記録されるキャッシュヒットの種類毎の発生頻度を参照し、ホスト１からストレージ２に対して一定数のアクセスが行われる毎に、上位キャッシュ２２１、及びＤ−Ｐａｒｔｉｔｉｏｎ２２２に対する１次高速記憶装置２２の容量配分の各組み合わせから、キャッシュヒットによるアクセス時間の短縮幅が最大となる容量配分を探索する。また、最適容量配分探索部２６は、アクセス時間の短縮幅が最大となる容量配分の探索完了後に容量別キャッシュヒット頻度記録部２５が記録する各キャッシュヒットの種類の発生頻度の情報を初期化する。
【０１１５】
１アクセスあたりのアクセス時間の短縮幅は、
・上位キャッシュ２２１にヒットした場合のホスト１からストレージ２に対するアクセス要求からアクセス完了応答までに要する時間、
・上位キャッシュ２２１ではミスであるが、下位キャッシュ２３１にヒットし、その際、下位ディレクトリ情報がＤ−Ｐａｒｔｉｔｉｏｎ２２２でヒットし場合のアクセス要求からアクセス完了応答までに要する時間、
・上位キャッシュ２２１ではミスあるが、下位キャッシュ２３１にヒットし、その際、下位ディレクトリ情報がＤ−Ｐａｒｔｉｔｉｏｎ２２２ではミスし、Ｄ−Ｖｏｌ２３２から参照された場合のアクセス要求から応答までに要する時間、
のいずれかと、
・上位キャッシュ２２１でミスし、下位キャッシュ２３１でミスし、記憶媒体２１を参照した場合の、アクセス要求からアクセス完了応答までに要する時間と、
の差分から求められる。
【０１１６】
最適容量配分探索部２６は、前記差分と、キャッシュヒットの種類毎の発生頻度から、一定数のアクセスに対するアクセス時間の短縮幅を計算する。
【０１１７】
図３は、図２のアクセス制御部２８の構成例を例示する図である。図８を参照すると、アクセス制御部２８は、アクセス要求処理部２８１、ディレクトリ情報アクセス変換部２８２、データアクセス部２８３、アクセステーブル２８４を備えている。
【０１１８】
アクセス要求処理部２８１は、ストレージ２が、ホスト１（図１）から受理したアクセス要求を解釈し、アクセス要求に従った処理を行う。またアクセス要求処理部２８１は、アクセス処理の処理結果を、アクセス要求元であるホスト１に返す。
【０１１９】
アクセス要求処理部２８１は、アクセス要求を解釈し（コマンドをデコードしＲｅａｄアクセスであるかをＷｒｉｔｅアクセスであるか等を判別する）、アクセス要求（Ｒｅａｄであるか、Ｗｒｉｔｅであるか）に応じた制御を行う。
【０１２０】
アクセス要求処理部２８１は、アクセス処理の実行制御にあたり、データアクセス部２８３を介して、１次高速記憶装置２２上の上位キャッシュ２２１、２次高速記憶装置２３上の下位キャッシュ２３１、記憶媒体２１の順に、アクセスを行う。例えばデータ読出し要求のＲｅａｄアクセスの実行にあたり、以下のアクセス制御が行われる。
【０１２１】
（ａ）１次高速記憶装置２２上の上位キャッシュ２２１でヒットすれば（アクセス対象のデータを含むページが上位キャッシュ２２１に格納されている）、２次高速記憶装置２３上の下位キャッシュ２３１、記憶媒体２１へのアクセスは行われない。
【０１２２】
（ｂ）１次高速記憶装置２２上の上位キャッシュ２２１でミスであるが（アクセス対象のデータを含むページが上位キャッシュ２２１に格納されていない）、２次高速記憶装置２３上の下位キャッシュ２３１でヒットすれば（アクセス対象のデータを含むページが下位キャッシュ２３１に格納されている）、記憶媒体２１へのアクセスは行われない。
【０１２３】
（ｃ）１次高速記憶装置２２上の上位キャッシュ２２１でミスであり、且つ、２次高速記憶装置２３上の下位キャッシュ２３１でミスであれば（アクセス対象のデータを含むページが上位キャッシュ２２１、下位キャッシュ２３１のいずれにも格納されていない）、記憶媒体２１へのアクセスが行われる。
【０１２４】
なお、１次高速記憶装置２２上の上位キャッシュ２２１でミスであるが、２次高速記憶装置２３上の下位キャッシュ２３１でヒットした場合（上記（ｂ）のケース）、ヒットした下位キャッシュ２３１のページを１次高速記憶装置２２上の上位キャッシュ２２１に新規ページとして、ページの入れ替えを行う。上位キャッシュ２２１におけるページの入れ替えは、例えば上位キャッシュ２２１での当該入れ替え発生の時点で、その時点までで、最も長く参照されないページ（Least Recently Used Page）を選択して空ページとし、下位キャッシュ２３１のヒットしたページのデータを格納し、新規ページとして上位キャッシュ２２１に登録することで行われる。
【０１２５】
また、１次高速記憶装置２２上の上位キャッシュ２２１でミスであり、且つ、２次高速記憶装置２３上の下位キャッシュ２３１でミスの場合（上記（ｃ）のケース）、記憶媒体２１のデータを含むページを、１次高速記憶装置２２上の上位キャッシュ２２１に、新規ページとして入れ替えを行うようにしてもよい。  
【０１２６】
アクセス要求処理部２８１において、２次高速記憶装置２３上の下位キャッシュ２３１でのヒット／ミスの判定は、上位キャッシュ２２１内のＤ−Ｐａｒｔｉｏｎ２２２、又は、２次高速記憶装置２３のＤ−Ｖｏｌ２３２のディレクトリ情報に基づき行われる。アクセス要求処理部２８１は、これら上位キャッシュ２２１内のＤ−Ｐａｒｔｉｏｎ２２２、及び、２次高速記憶装置２３のＤ−Ｖｏｌ２３２のディレクトリ情報に対して、データアクセス部２８３を介して、アクセスする。
【０１２７】
アクセス要求処理部２８１は、Ｒｅａｄアクセスの応答として、上位キャッシュ２２１、又は、下位キャッシュ２３１、又は記憶媒体２１から読み出したデータを、アクセス要求元であるホスト１（図１）に送信する。
【０１２８】
ホスト１（図１）からの書き込み要求（更新要求）に応答して行われるＷｒｉｔｅアクセスでは、アクセス要求処理部２８１は、データアクセス部２８３を介して、１次高速記憶装置２２の上位キャッシュ２２１（図２）に確保された空きページに、Ｗｒｉｔｅデータを格納する。
【０１２９】
なお、上位キャッシュ２２１に空きページを確保するにあたり、データアクセス部２８３は、例えば上位キャッシュ２２１において、それまで最も長く参照されないものから必要な数のページを追い出し、これを空ページとするようにしてもよい。また、Ｗｒｉｔｅデータ格納用に空ページを確保するにあたり、更新が行われているが、当該更新内容が記憶媒体２１又は２次高速記憶装置２３に反映されていないページについては、当該更新内容を記憶媒体２１又は２次高速記憶装置２３に反映した上で、Ｗｒｉｔｅデータ格納用の空ページとして確保するようにしてもよい。
【０１３０】
アクセス要求処理部２８１は、Ｗｒｉｔｅアクセスに対する応答として、書き込みの完了をアクセス要求元であるホスト１に通知する。１次高速記憶装置２２上の上位キャッシュ２２１にデータの書き込みが行われたページは、記憶媒体２１にライトバック（Ｗｒｉｔｅ  Ｂａｃｋ）される。
【０１３１】
ディレクトリ情報アクセス変換部２８２は、アクセス要求処理部２８１が下位キャッシュ２３１（図３）にアクセスする際に必要とされるディレクトリ情報に対するアクセスを、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に対するアクセス要求に変換する。
【０１３２】
ディレクトリ情報アクセス変換部２８２で変換された、アクセス要求処理部２８１からの下位キャッシュディレクトリ情報へのアクセス要求は、データアクセス部２８３に渡され、データアクセス部２８３を介して、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２へのアクセスが行われる。
【０１３３】
データアクセス部２８３は、アクセス対象の下位キャッシュ２３１のディレクトリ情報が、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２にキャッシュされているか否かを調べる（Ｄ−Ｐａｒｔｉｔｉｏｎ２２２は、Ｄ−Ｖｏｌ２３２に格納される下位キャッシュ２３１のディレクトリ情報をキャッシュするために、キャッシュ領域２２４に設けられたパーティションである）。
【０１３４】
Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に、該当する下位キャッシュ２３１のディレクトリ情報（下位ディレクトリ情報）が格納されている場合、データアクセス部２８３は、下位キャッシュ２３１のディレクトリ情報として、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に格納されたディレクトリ情報にアクセスし、アクセス要求処理部２８１に引き渡す。
【０１３５】
一方、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２でミスした場合、データアクセス部２８３は、２次高速記憶装置２３のＤ−Ｖｏｌ２３２に格納されたディレクトリ情報（下位ディレクトリ情報）にアクセスする。
【０１３６】
データアクセス部２８３は、アクセス要求処理部２８１、及びディレクトリ情報アクセス変換部２８２からの指示により、記憶媒体２１、１次高速記憶装置２２の上位キャッシュ２２１、及び２次高速記憶装置２３の下位キャッシュ２３１の間でデータ／情報をページ単位で読み書きし、コピー、移動、更新の反映を行う。
【０１３７】
なお、図２及び図３では、記憶媒体２１、１次高速記憶装置２２、２次高速記憶装置２３は、データアクセス部２８３を介して相互接続される構成として示されており、データアクセス部２８３は、図示されないハードウェアリソースとして、記憶媒体２１、１次高速記憶装置２２、２次高速記憶装置２３間のバス、及びバス・インタフェース（バス・アダプタ）等を含む。
【０１３８】
アクセステーブル２８４は、アクセス要求処理部２８１がホスト１から受理したアクセス要求を処理するために、記憶媒体２１、１次高速記憶装置２２の上位キャッシュ２２１（図３）、２次高速記憶装置２３の下位キャッシュ２３１、Ｄ−Ｖｏｌ２３２（図２）に対するアクセス先のページアドレスを格納する。
【０１３９】
アクセステーブル２８４に格納されたページアドレスは、アクセス要求処理部２８１によって参照される。
【０１４０】
アクセス要求処理部２８１において、アクセス対象のページのデータが、下位キャッシュ２３１（図２）に格納されている場合に、アクセス処理中に、例えば、当該データをロックし、当該データが他のページのデータによって置換されることを防ぐ相互排他（ｍｕｔｕａｌ  ｅｘｃｌｕｓｉｏｎ）に、アクセステーブル２８４が用いられる。
【０１４１】
アクセステーブル２８４に格納されたページアドレスは、対応するアクセス処理の完了時に、アクセス要求処理部２８１によって削除される（アンロック）。
【０１４２】
図４（Ａ）、図４（Ｂ）は、本実施形態（図２、図３）の容量別キャッシュヒット頻度記録部２５による、上位キャッシュ２２１、及び、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２の容量配分の組み合わせ毎に記録される、各キャッシュヒットの種類の発生頻度の情報の例をそれぞれ表している。１次高速記憶装置２２には、上位キャッシュ２２１、及びＤ−Ｐａｒｔｉｔｉｏｎ２２２のみが格納されるため、上位キャッシュ２２１、又はＤ−Ｐａｒｔｉｔｉｏｎ２２２のいずれかの容量によって容量配分の組み合わせが一意に決定される。そのため、容量別キャッシュヒット頻度記録部２５は、実際にはキャッシュヒットの種類毎に、キャッシュヒットに必要な最低限の容量と、前記各容量に該当するアクセス頻度を計測すればよい。
【０１４３】
容量別キャッシュヒット頻度記録部２５は、
・各アクセスが上位キャッシュ２２１でヒットするために最低限必要となる容量を求めた場合の、上位キャッシュ２２１の下限容量の分布を表す上位キャッシュ下限容量分布２５１と、
・下位キャッシュ２３１のディレクトリ情報がヒットするために最低限必要となるＤ−Ｐａｒｔｉｔｉｏｎ２２２の容量を求めた場合の、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２の下限容量の分布を表すＤ−Ｐａｒｔｉｔｉｏｎ下限容量分布２５２を生成する。
【０１４４】
例えば図４（Ａ）の上位キャッシュ下限容量分布２５１では、ホスト１からストレージ２に対する３００００アクセスについて上位キャッシュ２２１のヒットに関する下限容量の分布を、上位キャッシュ２２１の容量について、２５６ＭＢ（MegaByte）単位で表している。図３の上位キャッシュ下限容量分布２５１の例では、上位キャッシュ２２１の容量が２５６ＭＢから５１２ＭＢに増えた場合に、新たに４０００アクセスが上位キャッシュ２２１でヒットしたことを表す。
【０１４５】
同様に図４（Ｂ）のＤ−Ｐａｒｔｉｔｉｏｎ下限容量分布２５２では、ホスト１からストレージ２に対する３００００アクセスについて、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２のヒットに関する下限容量の分布を、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２の容量について、２５６ＭＢ単位で表している。
【０１４６】
図４の例における上位キャッシュ下限容量分布２５１、及びＤ−Ｐａｒｔｉｔｉｏｎ下限容量分布２５２では、２５６ＭＢ単位で下限容量の分布を表しているが、容量の単位は１次高速記憶装置２２の範囲で任意に決定してもよい。また、下限容量毎の新たにヒットとなるアクセスの数について、図３では各容量における数の差分で表しているが、各容量においてヒットするアクセスの絶対数でもよい。
【０１４７】
次に、図１乃至図４、図５の流れ図と、図６及び図７の流れ図を参照して、本発明の実施形態の動作について説明する。なお、図６と図７は単に図面作成の都合で分図されたものである。
【０１４８】
まず、図１乃至図５を参照して、本実施形態において、ホスト１からアクセスされたページが上位キャッシュ２２１でヒットするために最低限必要となる上位キャッシュ２２１の容量を求め、容量配分の組み合わせ毎に各キャッシュヒットの種類の発生頻度を求めるための手順を説明する。
【０１４９】
ホスト１からストレージ２に対してアクセス要求が行われると、キャッシュヒット種類判別部２４は、アクセスされたページについて、上位キャッシュ２２１のディレクトリ情報２２３を参照する（ステップＳ１１）。
【０１５０】
アクセス先のページが上位キャッシュ２２１でヒットし、上位ディレクトリ情報２２３が存在する場合（ステップＳ１２のＹｅｓ判定）、キャッシュヒット種類判別部２４は、ヒットしたページの上位ディレクトリ情報から、上位キャッシュ２２１における置換の優先度情報を読み出す。なお、ヒットの判定は、アクセス制御部２８で行われる。キャッシュヒット種類判別部２４は、アクセス制御部２８によるヒット判定結果を受ける。キャッシュヒット種類判別部２４は、上位キャッシュ２２１でヒットしたページの置換の優先度情報から、前記ページの上位キャッシュ２２１でのヒットに最低限必要な容量を求める。その後、ステップＳ１８以降の処理を実行する（ステップＳ１３）。
【０１５１】
アクセス先のページが上位キャッシュ２２１でヒットしない場合（ステップＳ１２のＮｏ判定）、キャッシュヒット種類判別部２４は、アクセス先のページについて、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２を参照する（ステップＳ１４）。Ｄ−Ｐａｒｔｉｔｉｏｎ２２２は、下位キャッシュ２３１のディレクトリ情報をキャッシュしている。
【０１５２】
アクセス先のページがＤ−Ｐａｒｔｉｔｉｏｎ２２２でヒットし、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に、下位ディレクトリ情報が存在する場合（ステップＳ１５のＹｅｓ判定）、キャッシュヒット種類判別部２４は、ヒットしたページについての下位ディレクトリ情報から、下位キャッシュ２３１における置換の優先度情報を読み出す。キャッシュヒット種類判別部２４は、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２でヒットしたページの置換の優先度情報から、前記ページが、上位キャッシュ２２１で仮にヒットしたと仮定した場合における上位キャッシュ２２１で最低限必要な容量を求める。その後、ステップＳ１８以降の処理を実行する（ステップＳ１６）。  
【０１５３】
アクセス先のページがＤ−Ｐａｒｔｉｔｉｏｎ２２２でヒットせず、下位ディレクトリ情報が存在しない場合（ステップＳ１５のＮｏ判定）、アクセス先のページは、１次高速記憶装置２２の上位キャッシュ２２１、及び、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２への容量配分によらず、上位キャッシュ２２１でヒットさせることは不可能であるため、キャッシュヒット種類判別部２４は、１次高速記憶装置２２の容量配分によらず、上位キャッシュ２２１ではヒットしないと判定する（ステップＳ１７）。
【０１５４】
容量別キャッシュヒット頻度記録部２５は、キャッシュヒット種類判別部２４が求めた上位キャッシュ２２１における、ヒットのために最低限必要な容量を参照して、上位キャッシュ下限容量分布２５１の当該容量の数を加算する。
【０１５５】
ステップＳ１７において１次高速記憶装置２２の容量配分によらず上位キャッシュ２２１にヒットしないと判定された場合は、上位キャッシュ下限容量分布２５１の常時ミスの数を加算する（ステップＳ１８）。
【０１５６】
以上のステップＳ１１からＳ１８までの処理を行い、ホスト１からアクセスされたページが上位キャッシュ２２１でヒットするために最低限必要となる上位キャッシュ２２１の容量を求め、容量配分の組み合わせ毎に各キャッシュヒットの種類の発生頻度を求めるための動作が完了する。
【０１５７】
次に図１乃至図７を参照して、本発明においてホスト１からアクセスされたページが下位キャッシュ２３１でヒットし、且つ、前記ページのディレクトリ情報がＤ−Ｐａｒｔｉｔｉｏｎ２２２でヒットするために最低限必要となるＤ−Ｐａｒｔｉｔｉｏｎ２２２の容量を求め、容量配分の組み合わせ毎に各キャッシュヒットの種類の発生頻度を求めるための手順を説明する。
【０１５８】
ホスト１からストレージ２に対してアクセス要求が行われると、キャッシュヒット種類判別部２４は、アクセスされたページについて上位キャッシュ２２１のディレクトリ情報を参照する（図６のステップＳ２０１）。
【０１５９】
アクセス先のページが上位キャッシュ２２１でヒットし、上位ディレクトリ情報が存在する場合（図６のステップＳ２０２のＹｅｓ判定）、キャッシュヒット種類判別部２４は、ヒットしたページのディレクトリ情報から上位キャッシュ２２１における置換の優先度情報を読み出す。
【０１６０】
キャッシュヒット種類判別部２４は、上位キャッシュ２２１でヒットしたページの置換の優先度情報から、前記ページが上位キャッシュ２２１から追い出されて下位キャッシュ２３１でヒットするようになった場合に、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２において下位ディレクトリ情報がヒットするために最低限必要な容量を求める。その後、ステップＳ２１１以降の処理を実行する（図６のステップＳ２０３）。
【０１６１】
アクセス先のページが上位キャッシュ２２１でヒットしない場合（ステップＳ２０２のＮｏ判定）、キャッシュヒット種類判別部２４は、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２を参照する（図６のステップＳ２０４）。Ｄ−Ｐａｒｔｉｔｉｏｎ２２２は、アクセス先のページについて下位キャッシュ２３１の下位ディレクトリ情報をキャッシュする。
【０１６２】
アクセス先のページがＤ−Ｐａｒｔｉｔｉｏｎ２２２でヒットし、ディレクトリ情報が存在する場合（図６のステップＳ２０５のＹｅｓ判定）、キャッシュヒット種類判別部２４は、ヒットしたページについての下位ディレクトリ情報から、下位キャッシュ２３１における置換の優先度情報を読み出す。
【０１６３】
キャッシュヒット種類判別部２４は、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２でヒットしたページの置換の優先度情報から、前記ページが下位キャッシュ２３１でヒットする場合に、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２において、下位ディレクトリ情報がヒットするために、最低限必要な容量を求める。その後、ステップＳ２１１以降の処理を実行する（図６のステップＳ２０６）。
【０１６４】
アクセス先のページがＤ−Ｐａｒｔｉｔｉｏｎ２２２でヒットせず、ディレクトリ情報が存在しない場合（図６のステップＳ２０５のＮｏ判定）、キャッシュヒット種類判別部２４は、下位キャッシュヒット判定、及びアクセスのためにＤ−Ｖｏｌ２３２から読み出されるディレクトリ情報から下位キャッシュ２３１における置換の優先度情報を読み出す（図７のステップＳ２０７）。
【０１６５】
アクセス先のページが下位キャッシュ２３１でヒットした場合（図７のステップＳ２０８のＹｅｓ判定）、キャッシュヒット種類判別部２４は、Ｄ−Ｖｏｌ２３２から読み出されたページの下位ディレクトリ情報の置換優先度情報から、前記ページが下位キャッシュ２３１でヒットする場合に、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２においてディレクトリ情報がヒットするために最低限必要な容量を求める。その後、ステップＳ２１１以降の処理を実行する（図７のステップＳ２０９）。
【０１６６】
アクセス先のページが下位キャッシュ２３１においてもミスであった場合（図７のステップＳ２０８のＮｏ判定）、アクセス先のページは、１次高速記憶装置２２の上位キャッシュ２２１、及び、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２への容量配分によらず、下位キャッシュ２３１でヒットした場合に、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２において、ディレクトリ情報をヒットさせることは不可能である。そのため、キャッシュヒット種類判別部２４は、１次高速記憶装置２２の容量配分によらず、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２ではヒットしないと判定する（図７のステップＳ２１０）。
【０１６７】
容量別キャッシュヒット頻度記録部２５は、キャッシュヒット種類判別部２４が求めたＤ−Ｐａｒｔｉｔｉｏｎ２２２におけるディレクトリ情報のヒットのために最低限必要な容量を参照して、Ｄ−Ｐａｒｔｉｔｉｏｎ下限容量分布２５２の当該容量の数を加算する。ステップＳ２１０において１次高速記憶装置２２の容量配分によらず、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２にヒットしないと判定された場合には、Ｄ−Ｐａｒｔｉｔｉｏｎ下限容量分布２５２の常時ミスの数を加算する（図６のステップＳ２１１）。
【０１６８】
以上のステップＳ２０１からＳ２１１までの処理を行い、ホスト１（図１）からアクセスされたページが下位キャッシュ２３１でヒットし、前記ページの下位ディレクトリ情報がＤ−Ｐａｒｔｉｔｉｏｎ２２２でヒットするために最低限必要となるＤ−Ｐａｒｔｉｔｉｏｎ２２２の容量を求め、容量配分の組み合わせ毎に各キャッシュヒットの種類の発生頻度を求める、ための一連の動作が完了する。
【０１６９】
図１３乃至図１８を参照して、Ｄ−ｐａｒｔｉｔｉｏｎ２２２の容量がある値に設定されている（上位キャッシュ２２１とＤ−ｐａｒｔｉｔｉｏｎ２２２の容量配分がある値に設定されている）場合におけるアクセス制御動作例を説明する。
【０１７０】
＜Ｒｅａｄ、Ｗｒｉｔｅアクセス要求処理＞
図１３は、Ｒｅａｄ、Ｗｒｉｔｅアクセス処理を説明する流れ図である。図１、図３、図１３を参照して、実施形態におけるＲｅａｄアクセス又はＷｒｉｔｅアクセス要求処理を行う動作の概要について説明する。
【０１７１】
ホスト１からストレージ２に対してアクセス要求が行われると、ストレージ２において、アクセス要求処理部２８１がアクセス要求を解釈し、アクセス対象となるページのアドレスをアクセステーブル２８４に登録する。また、アクセス要求処理部２８１は、データアクセス部２８３を介して、上位キャッシュ２２１のディレクトリ情報である上位ディレクトリ情報２２３にアクセスし、アクセス対象となるページが上位キャッシュ２２１に格納されているか否かの判定（ヒット判定）を行う（図１３のステップＳ１０１）。
【０１７２】
アクセス要求処理部２８１でのヒット／ミスの判定は、アクセス対象となるページのアドレスと同一のページアドレスが、上位ディレクトリ情報２２３に格納されているか否かで行われる。例えば図４において、上位ディレクトリ情報２２３のページアドレスがアクセス対象となるページのアドレスと一致し、無効フラグが「Ｎｏ」、Ｄ−Ｐａｒｔｉｔｉｏｎフラグの値が「Ｎｏ」のページが存在する場合に、ヒット判定となる。
【０１７３】
上位キャッシュ２２１に、アクセス対象となるページが格納されている場合（ヒットした場合）（図１３のステップＳ１０２のＹｅｓ分岐）、アクセス要求処理部２８１は、データアクセス部２８３を介して、上位キャッシュ２２１のヒットしたページに対するアクセスを実行する。そして、アクセス要求処理部２８１は、１次高速記憶装置２２の上位ディレクトリ情報２２３に含まれる、ヒットした当該ページのディレクトリ情報を更新する（置換優先度、更新の場合、更新済フラグの設定等）。その後、ステップＳ１１３以降（連結子１）の処理を実行する（図１３のステップＳ１０３）。
【０１７４】
一方、上位キャッシュ２２１に、アクセス対象となるページが格納されていない場合（ミスした場合）（図１３のステップＳ１０２のＮｏ分岐）、アクセス要求処理部２８１は、ディレクトリ情報アクセス変換部２８２を介して、下位キャッシュ２３１の下位ディレクトリ情報を読み出し、アクセス対象となるページが下位キャッシュ２３１に格納されているか否かの判定（ヒット判定）を行う（図１３のステップＳ１０４）。なお、アクセス要求処理部２８１は、ディレクトリ情報アクセス変換部２８２、データアクセス部２８３を介して、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２内に格納された下位ディレクトリ情報２３２１（図１２）を参照する。Ｄ−Ｐａｒｔｉｔｉｏｎ２２２内にアクセス対象の下位ディレクトリ情報２３２１が格納されていない場合、アクセス要求処理部２８１は、ディレクトリ情報アクセス変換部２８２、データアクセス部２８３を介して、２次高速記憶装置２３のＤ−Ｖｏｌ２３２を参照する。
【０１７５】
アクセス要求処理部２８１は、データアクセス部２８３を介して、上位キャッシュ２２１に対して、新たにアクセスされるデータを格納するための空きページを確保する。データアクセス部２８３は、空きページを確保するために、上位キャッシュ２２１のページに対する置換を行う（図１３のステップＳ１０５）。すなわち、上位キャッシュ２２１に空きページを確保するにあたり、データアクセス部２８３は、例えば上位キャッシュ２２１において、それまで最も長く参照されないものから必要な数のページを追い出した上で、これを空ページに置換するようにしてもよい。上位キャッシュ２２１から追い出されたページは、例えば下位キャッシュ２３１に格納され、上位ディレクトリ情報２２３、下位ディレクトリ情報２３２１が更新される。
【０１７６】
アクセス要求がＷｒｉｔｅ（書き込み）の場合（図１３のステップＳ１０６のＹｅｓ分岐)、アクセス要求処理部２８１は、データアクセス部２８３を介して上位キャッシュ２２１にページを確保し、確保された空きページに、Ｗｒｉｔｅデータを書き込み（図１３のステップＳ１０７）、その後、ステップＳ１１１以下を行う。
【０１７７】
アクセス要求がＲｅａｄ（読み出し）の場合（図１３のステップＳ１０６のＮｏ分岐）、ステップＳ１０４での判定結果が、下位キャッシュ２３１がヒットしているものである場合（図１３のステップＳ１０８のＹｅｓ分岐）、アクセス要求処理部２８１は、データアクセス部２８３を介して、下位キャッシュ２３１のヒットしたページに対するアクセスを実行する。また、アクセス要求処理部２８１は、データアクセス部２８３を介して、下位キャッシュ２３１のヒットしたページから読み出したデータで、上位キャッシュ２２１に含まれる任意のページを置換して、図１３のステップＳ１１１以降の処理を実行する（図１３のステップＳ１０９）。
【０１７８】
下位キャッシュ２３１がミスした場合（図１３のステップＳ１０８のＮｏ分岐）、アクセス要求処理部２８１は、データアクセス部２８３を介して、記憶媒体２１に対してアクセス要求を実行する。アクセス要求処理部２８１は、データアクセス部２８３を介して、記憶媒体２１よりアクセスしたデータを、ページ単位で、上位キャッシュ２２１に格納する。さらに、上位キャッシュ２２１に新たなデータが格納されることで置換されるページ（上位キャッシュ２２１から追出されるページ）のデータを追い出して、該追い出したデータを下位キャッシュ２３１に移動させる。下位キャッシュ２３１において、上位キャッシュ２２１の当該ページのデータの移動により、置換されるページを削除する（上位キャッシュ２２１から下位キャッシュ２３１に追い出されたデータを格納するために、下位キャッシュ２３１のページのデータを削除し空ページを確保する）。なお、削除されるページが更新されていた場合（当該ページの更新フラグがオン）には、アクセス要求処理部２８１は、データアクセス部２８３を介して、記憶媒体２１に該更新内容を反映する（図１３のステップＳ１１０）。
【０１７９】
アクセス要求処理部２８１は、ディレクトリ情報アクセス変換部２８２、データアクセス部２８３を介して、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２、又は、２次高速記憶装置２３のＤ−Ｖｏｌ２３２に格納された下位キャッシュ２３１のディレクトリ情報（下位ディレクトリ情報）を更新する（図１３のステップＳ１１１）。すなわち、ステップＳ１０５乃至Ｓ１１０等による、下位キャッシュ２３１におけるページの状態の変更を、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２、又は、２次高速記憶装置２３のＤ−Ｖｏｌ２３２に反映させる。
【０１８０】
アクセス要求処理部２８１は、データアクセス部２８３を介して、１次高速記憶装置２２の上位ディレクトリ情報２２３に含まれる、置換を行ったページの情報を更新する（図１３のステップＳ１１２）。ステップＳ１０５乃至Ｓ１１０等による、上位キャッシュ２２１におけるページの状態の変更を、１次高速記憶装置２２の上位ディレクトリ情報２２３に反映させる。
【０１８１】
図１３では、ステップＳ１０９における、上位ディレクトリ情報２２３の更新は、ステップＳ１０８の下位キャッシュ２３１のディレクトリ情報の更新より後に行われているが、ステップＳ１０８と同時、又は、ステップＳ１０８よりも先に行うようにしてもよい。
【０１８２】
アクセス要求処理部２８１は、Ｒｅａｄアクセス要求の結果であるＲｅａｄデータ、又は、Ｗｒｉｔｅアクセスの完了通知を、アクセス要求元のホスト１（図１）に対して返し、処理を終了する（図１３のステップＳ１１３）。図１３のステップＳ１０８〜Ｓ１１０は、上位、下位キャッシュ２２１、２３１でミスヒット時に、記憶媒体２１からアクセスデータを読み出し、上位キャッシュ２２１に格納するというＲｅａｄアクセスの一例を説明している。
【０１８３】
Ｗｒｉｔｅアクセスでは、上位キャッシュ２２１及び下位キャッシュ２３１でミスヒット時に、上記キャッシュ２２１にページを確保して書き込みを行い、その後、記憶媒体２１にライトバック（ｗｒｉｔｅ  ｂａｃｋ）する構成としてもよい。この場合、ホスト１（図１）へのＷｒｉｔｅアクセスの完了通知は、上位キャッシュ２２１へのデータ格納の完了を契機として行うようにしてもよい。
【０１８４】
以上のステップＳ１０１からＳ１１３までの処理を行い、実施形態におけるＲｅａｄアクセス又はＷｒｉｔｅアクセス要求処理を行う動作が完了する。
【０１８５】
＜上位キャッシュにおける新規データ格納用ページの確保＞
図１４は、図１３のステップＳ１０５の処理を説明するための流れ図である。図１３のステップＳ１０５では、前述したように、アクセス要求処理部２８１がデータアクセス部２８３を介して、１次高速記憶装置２２の上位キャッシュ２２１において新たにアクセスされるデータを格納するための空きページを確保する。図１４を参照して、図１３のステップＳ１０５（上位キャッシュにおける新規データ格納用ページの確保）の詳細について説明する。
【０１８６】
アクセス要求処理部２８１は、データアクセス部２８３を介して、上位ディレクトリ情報２２３における各ページのディレクトリ情報の無効フラグを参照し、上位キャッシュ２２１に空きページ（図１１の無効フラグが「Ｙｅｓ」の未使用ページ）が存在するか否かを確認する（図１４のステップＳ２２１）。上位キャッシュ２２１に、空きページが存在する場合（図１４のステップＳ２２２のＹｅｓ分岐）、アクセス要求処理部２８１は、データアクセス部２８３を介して、上位キャッシュ２２１の空きページのうちの任意のページを、新規データ格納のための空きページとして確保して、処理を終了する（図１４のステップＳ２２３）。
【０１８７】
上位キャッシュ２２１に空きページが存在しない場合（図１４のステップＳ２２２のＮｏ分岐）、アクセス要求処理部２８１は、データアクセス部２８３を介して、上位ディレクトリ情報２２３を参照して、上位キャッシュ２２１に含まれる、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２の容量を確認する。上位キャッシュ２２１に含まれるＤ−Ｐａｒｔｉｔｉｏｎ２２２の容量は、図１１の上位ディレクトリ情報２２３の「Ｄ−Ｐａｒｔｉｔｉｏｎ」の欄が「Ｙｅｓ」のページ（Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に含まれるページ）の合計から算出される。
【０１８８】
アクセス要求処理部２８１は、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２の容量（現在の容量）を、容量制御部２７（最適容量配分探索部２６）で指定されたＤ−Ｐａｒｔｉｔｉｏｎ２２２の容量値（閾値）と比較する（図１４のステップＳ２２４）。Ｄ−Ｐａｒｔｉｔｉｏｎ２２２の現在の容量が、容量制御部２７（最適容量配分探索部２６）で指定された容量値以下であった場合（図１４のステップＳ２２５のＹｅｓ分岐）、アクセス要求処理部２８１は、上位キャッシュ２２１に含まれるページのうち、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に含まれないページ（図１１のＤ−Ｐａｒｔｉｔｉｏｎフラグ欄の値が「Ｎｏ」のページ）のデータを削除して、空きページとし、新規に格納するデータのために確保して、処理を終了する（図１４のステップＳ２２６）。
【０１８９】
一方、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２の容量が、容量制御部２７で指定された容量値よりも大きい場合には（図１４のステップＳ２２５のＮｏ分岐）、アクセス要求処理部２８１は、上位キャッシュ２２１に含まれるページのうち、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に含まれる任意のページ（下位ディレクトリ情報格納用のページ）について、新規にデータを格納するためのページとして選択する（図１４のステップＳ２２７）。Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に含まれるページ（下位ディレクトリ情報格納用のページ）から新規にデータを格納するためのページを選択し、該ページを新規データ格納用ページとして確保するにあたり、当該時点で、それまで最も長く使用されないページ（下位ディレクトリ情報格納用のページ）を選択するようにしてもよい。
【０１９０】
上位ディレクトリ情報２２３に記録されたディレクトリ情報（図１１の更新済フラグ）から、図１４のステップＳ２２７で確保したページが更新済ではない場合には（図１４のステップＳ２２８のＮｏ分岐）、アクセス要求処理部２８１は、図１４のステップＳ２３０以降の処理を実行する。
【０１９１】
上位ディレクトリ情報２２３に記録されたディレクトリ情報から、図１４のステップＳ２２７で確保したページが更新済である場合には（図１４のステップＳ２２８のＹｅｓ分岐）、アクセス要求処理部２８１は、ステップＳ２０７で確保したＤ−Ｐａｒｔｉｔｉｏｎ２２２に含まれるページについて、該ページに対応する下位キャッシュ２３１のＤ−Ｖｏｌ２３２のページに、図１４のステップＳ２２７で確保した当該ページの更新内容を反映する（図１４のステップＳ２２９）。
【０１９２】
アクセス要求処理部２８１は、データアクセス部２８３を介して、ステップＳ２２７で確保した当該ページ（Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に含まれていた当該ページ）を、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２から削除する（すなわち、当該ページを、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に含まれないように設定する。上位ディレクトリ情報２２３のＤ−Ｐａｒｔｉｔｉｏｎフラグ（図１１）を「Ｎｏ」に設定する）。また、アクセス要求処理部２８１は、データアクセス部２８３を介して、確保したページを、新規にデータを格納するための空きページとし、上位ディレクトリ情報２２３に対して、図１４のステップＳ２２７等による上位キャッシュ２２１のページの変更を反映させる更新を行った上で、処理を終了する（図１４のステップＳ２３０）。
【０１９３】
以上のステップＳ２２１からＳ２３０までの処理を行い、アクセス要求処理部２８１は、データアクセス部２８３を介して、上位キャッシュ２２１に対して新たにアクセスされるデータを格納するための空きページを確保する動作（図１３のステップＳ１０５）が完了する。
【０１９４】
＜Ｄ−Ｐａｒｔｉｔｉｏｎに含まれない新規データ格納用の空きページの確保＞
図１５は、図１４のステップＳ２２６の処理を説明するための流れ図である。図１４のステップＳ２２６では、上位キャッシュ２２１に含まれるページのうち、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に含まれないページを、新規データに格納用のページとして確保する。次に図１５を参照して、新規データ格納用の空きページの確保（図１４のステップＳ２２６）について説明する。
【０１９５】
アクセス要求処理部２８１は、データアクセス部２８３を介して、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２、又は、２次高速記憶装置２３のＤ−Ｖｏｌ２３２にアクセスして、下位ディレクトリ情報２３２１を参照し、下位キャッシュ２３１において、
・上位キャッシュ２２１で確保されたページ（Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に含まれないページ（図１１のＤ−Ｐｒａｔｉｏｎフラグの値が「Ｎｏ」のページ））と同一アドレスに対応したページ、又は、
・下位キャッシュ２３１の空きページ
を探索する（図１５のステップＳ３０１）。
【０１９６】
ステップＳ３０１における探索の結果、上位キャッシュ２２１で確保されたページと同一アドレスに対応したページが下位キャッシュ２３１に存在する場合には（図１５のステップＳ３０２のＹｅｓ分岐）、アクセス要求処理部２８１は、ステップＳ３０９以降の処理を実行する。
【０１９７】
ステップＳ３０１での探索の結果、上位キャッシュ２２１で確保されたページと同一アドレスに対応したページが下位キャッシュ２３１に存在しない場合には（図１５のステップＳ３０２のＮｏ分岐）、アクセス要求処理部２８１は、ステップＳ３０３以降の処理を実行する。
【０１９８】
ステップＳ３０３での探索の結果、下位キャッシュ２３１に空きページが存在する場合（図１５のステップＳ３０３のＹｅｓ分岐）、アクセス要求処理部２８１は、データアクセス部２８３を介して、下位キャッシュ２３１における任意の空きページを、新規データの格納に伴い上位キャッシュ２２１から置換される（追出される）ページのデータを格納するために、確保する（図１５のステップＳ３０４）。
【０１９９】
ステップＳ３０３での探索の結果、下位キャッシュ２３１に空きページが存在しない場合（図１５のステップＳ３０３のＮｏ判定）、アクセス要求処理部２８１は、下位ディレクトリ情報２３２１を参照して下位キャッシュ２３１の任意のページから、新規データの格納に伴い上位キャッシュ２２１から置換される（追出される）ページのデータ格納のために使用するページを選択する。このとき、アクセス要求処理部２８１は、アクセステーブル２８４を併せて参照して、アクセス中のページを、上位キャッシュ２２１から置換される（追出される）ページのデータ格納のために使用するページの選択対象から、除外する（図１５のステップＳ３０５）。
【０２００】
ステップＳ３０５で選択したページが、未更新の状態である場合（図１２の下位ディレクトリ情報２３２１において、選択した当該ページの更新済フラグの値がＮｏ）（図１５のステップＳ３０６のＹｅｓ判定）、アクセス要求処理部２８１は、ステップＳ３０８以降の処理を実行する。
【０２０１】
ステップＳ３０５で選択したページが更新されている場合（図１２の下位ディレクトリ情報２３２１において、選択した当該ページの更新済フラグの値がＹｅｓ）（図１５のステップＳ３０６のＮｏ分岐）、アクセス要求処理部２８１は、データアクセス部２８３を介してステップＳ３０５で選択した下位キャッシュ２３１のデータを、記憶媒体２１に書き込み、更新を反映する（図１５のステップＳ３０７）。
【０２０２】
アクセス要求処理部２８１は、データアクセス部２８３を介して、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２、及び、２次高速記憶装置２３のＤ−Ｖｏｌ２３２に格納された下位ディレクトリ情報２３２１を更新し、ステップＳ３０５で選択した下位キャッシュ２３１のページのデータを削除する（図１５のステップＳ３０８）。
【０２０３】
アクセス要求処理部２８１は、データアクセス部２８３を介して、上位キャッシュ２２１において、新規データ格納用に確保されたページのデータを、ステップＳ３０５で選択された下位キャッシュ２３１のページにコピーする。その際、アクセス要求処理部２８１は、下位キャッシュ２３１側のページへのデータのコピーが行われる上位キャッシュ２２１のページに対応した上位ディレクトリ情報２２３に含まれる情報を、下位ディレクトリ情報（例えば下位キャッシュ２３１のＤ−Ｐａｒｔｉｔｉｏｎ２２２の対応するページエントリ）にコピーする（図１５のステップＳ３０９）。
【０２０４】
アクセス要求処理部２８１は、データアクセス部２８３を介して上位ディレクトリ情報２２３にアクセスし、新規データの格納のために確保された上位キャッシュ２２１のページのデータを削除し空きページとする。また、アクセス要求処理部２８１は、データアクセス部２８３を介して、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２と２次高速記憶装置２３のＤ−Ｖｏｌ２３２に格納された下位ディレクトリ情報２３２１のうち、上位キャッシュ２３１から追い出されるページのデータを格納するページに関する情報を更新する（図１５のステップＳ３１０）。
【０２０５】
図１４のステップＳ２２１からＳ２３０までの処理を行い、ステップＳ２２６における、上位キャッシュ２２１に含まれるページのうち、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に含まれないページを新規に格納するデータのために確保する動作が完了する。
【０２０６】
＜下位キャッシュディレクトリ情報の読み出し動作＞
図１６は、図１３のステップＳ１０４、及び、図１５のステップＳ３０１における、下位キャッシュディレクトリ情報の読み出し処理を説明する流れ図である。前述したように、図１５のステップＳ３０１では、アクセス要求処理部２８１は、上位キャッシュ２２１で確保したページと同一アドレスに対応するページ、又は、下位キャッシュ２３１の空きページ、下位キャッシュ２３１から探索する。次に、図２、図３、図１６を参照して、図１３のステップＳ１０４及び、図１５のステップＳ３０１におけるディレクトリ情報アクセス変換部２８２を介して、下位キャッシュ２３１のディレクトリ情報である下位ディレクトリ情報（図１２の２３２１）を読み出す動作について説明する。
【０２０７】
アクセス要求処理部２８１は、ディレクトリ情報アクセス変換部２８２に対して、下位ディレクトリ情報（図１２の２３２１）から、必要な情報を一意に特定するためのアドレス等の情報（識別子）を指定して、読み出し要求を行う。
【０２０８】
ディレクトリ情報アクセス変換部２８２は、前記識別子を、２次高速記憶装置２３のＤ−Ｖｏｌ２３２における前記識別子が表すディレクトリ情報が格納されたアドレスに変換する。
【０２０９】
また、ディレクトリ情報アクセス変換部２８２は、データアクセス部２８３を介して、１次高速記憶装置２２の上位ディレクトリ情報２２３にアクセスし、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２内に、読み出し対象のディレクトリ情報（下位キャッシュ２３１の該当するディレクトリ情報）を含むページが格納されているか否かの判定（ヒット判定）を行う（図１６のステップＳ４１）。
【０２１０】
１次高速記憶装置２２の上位ディレクトリ情報２２３から、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２内に、要求されたディレクトリ情報を含むページが格納されている場合（ヒットした場合）（図１６のステップＳ４２のＹｅｓ分岐）、ディレクトリ情報アクセス変換部２８２は、データアクセス部２８３を介して、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に対して、ヒットしたページ（下位キャッシュ２３１のディレクトリ情報を含むページ）に対する読み出しを実行し、図１６のステップＳ４６以降の処理を実行する（図１６のステップＳ４３）。
【０２１１】
Ｄ−Ｐａｒｔｉｔｉｏｎ２２２において要求されたディレクトリ情報がミスした場合（図１６のステップＳ４２のＮｏ分岐）、ディレクトリ情報アクセス変換部２８２は、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２内に、２次高速記憶装置２３のＤ−Ｖｏｌ２３２に格納された下位ディレクトリ情報（図１２の２３２１）のコピー（写し）を格納するためのページを確保する（図１６のステップＳ４４）。なお、ディレクトリ情報アクセス変換部２８２において、このページの確保にあたり、１次高速記憶装置２２の上位ディレクトリ情報２２３に基づき、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に格納されたページ（図１１の上位ディレクトリ情報２２３において、無効フラグが「Ｎｏ」、Ｄ−Ｐａｒｔｉｔｉｏｎフラグが「Ｙｅｓ」のページ）の中から、置換優先度が最も置換され易い値のページを選択するようにしてもよい。図１１の上位ディレクトリ情報２２３において、ページの置換優先度の値が大（小）であるほど、優先度が高い場合、値の大きな（小さな）ページが、置換対象として選択される。
【０２１２】
ディレクトリ情報アクセス変換部２８２は、データアクセス部２８３を介して、２次高速記憶装置２３のＤ−Ｖｏｌ２３２に対して要求されたデータの読み出しを実行する。また、ディレクトリ情報アクセス変換部２８２は、２次高速記憶装置２３のＤ−Ｖｏｌ２３２から読み出したデータを、１次高速記憶装置２２のＤ−Ｐａｒｔｉｔｉｏｎ２２２において、下位ディレクトリ情報の写し格納用に確保されたページに格納する。
【０２１３】
さらに、ディレクトリ情報アクセス変換部２８２は、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２において、下位ディレクトリ情報の写し格納用に確保したページが、当該確保の時点までに更新されており、且つ、更新結果を反映していない場合（図１１の上位ディレクトリ情報２２３において、無効フラグが「Ｎｏ」、Ｄ−Ｐａｒｔｉｏｎフラグが「Ｙｅｓ」、更新済フラグが「Ｙｅｓ」、置換優先度が１番目に置換対象であることを示す値のページ）、当該ページに、下位ディレクトリ情報の写しを格納する前に、当該ページの更新内容（下位ディレクトリ情報）を、２次高速記憶装置２３のＤ−Ｖｏｌ２３２に含まれる下位ディレクトリ情報（図１２参照）の該当ページエントリの情報に、反映させる（図１６のステップＳ４５）。
【０２１４】
ディレクトリ情報アクセス変換部２８２は、データアクセス部２８３を介して、１次高速記憶装置２２の上位ディレクトリ情報２２３に含まれるページの情報（図１１参照）のうちＤ−Ｐａｒｔｉｔｉｏｎ２２２においてヒットしたページ（図１６のステップＳ４２のＹｅｓ判定の該当ページ）又は、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に格納されたページ（図１６のステップＳ４５でＤ−Ｐａｒｔｉｔｉｏｎ２２２に格納したページ）のディレクトリ情報を更新する（図１６のステップＳ４６）。例えば上位ディレクトリ情報２２３の該当ページの置換優先度（図１１）を、例えば、最も最近使用された（most recently used: MRU）ページに対応する値（最も置換され難い値）に設定する。また、該当ページのディレクトリ情報の更新済フラグがＹｅｓ（更新済み）であった場合、Ｎｏ（未更新）に設定する。
【０２１５】
ディレクトリ情報アクセス変換部２８２は、要求された下位キャッシュ２３１のディレクトリ情報である下位ディレクトリ情報の読み出し結果を、アクセス要求処理部２８１に返し、処理を終了する（図１６のステップＳ４７）。
【０２１６】
以上のステップＳ４１からＳ４７までの処理を行い、図１３のステップＳ１０４、及び図１５のステップＳ３０１における、ディレクトリ情報アクセス変換部２８２による処理を介して、下位キャッシュ２３１のディレクトリ情報である下位ディレクトリ情報（図１２の２３２１）を読み出す動作が完了する。
【０２１７】
＜下位キャッシュのディレクトリ情報の更新（Ｗｒｉｔｅ）動作＞
図１７は、図１３のステップＳ１０９、及び図１５のステップＳ３１０における下位キャッシュのディレクトリ情報の更新（Ｗｒｉｔｅ）処理を説明する流れ図である。図１３のステップＳ１０９、及び図１５のステップＳ３１０におけるディレクトリ情報アクセス変換部２８２を介して下位キャッシュ２３１のディレクトリ情報である下位ディレクトリ情報（図１２の２３２１）を更新する。図２、図３、図１７を参照して、下位キャッシュのディレクトリ情報の更新処理について説明する。なお、下位ディレクトリ情報の更新（Update）は、更新情報（下位ディレクトリ情報）の書き込み動作を伴うため、図１７等では書き込み（Ｗｒｉｔｅ）を更新と同義で用いている。
【０２１８】
アクセス要求処理部２８１は、ディレクトリ情報アクセス変換部２８２に対して、下位ディレクトリ情報（図１２の２３２１）から、更新対象の情報を一意に特定するためのアドレス等の識別子を指定して更新要求を行う。ディレクトリ情報アクセス変換部２８２は、前記識別子を、Ｄ−Ｖｏｌ２３２における前記識別子が表すディレクトリ情報が格納されたアドレスに変換する。また、ディレクトリ情報アクセス変換部２８２は、データアクセス部２８３を介して、１次高速記憶装置２２の上位ディレクトリ情報２２３にアクセスし、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２内に、更新要求されたディレクトリ情報（下位ディレクトリ情報）を含むページが格納されているか否かの判定（ヒット判定）を行う（図１７ステップＳ５１）。
【０２１９】
Ｄ−Ｐａｒｔｉｔｉｏｎ２２２内に、更新要求されたディレクトリ情報（下位ディレクトリ情報）を含むページが格納されている場合（ヒットした場合）（ステップＳ５２のＹｅｓ分岐）、ディレクトリ情報アクセス変換部２８２は、データアクセス部２８３を介して、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２内に格納されている、ヒットしたページに対する更新（Ｗｒｉｔｅ）を実行し、ステップＳ５６以降の処理を実行する（図１７ステップＳ５３）。
【０２２０】
Ｄ−Ｐａｒｔｉｔｉｏｎ２２２内に、更新要求されたディレクトリ情報（下位ディレクトリ情報）を含むページが格納されていない場合（ミスした場合）（ステップＳ５２のＮｏ分岐）、ディレクトリ情報アクセス変換部２８２は、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２において、２次高速記憶装置２３のＤ−Ｖｏｌ２３２に格納された下位ディレクトリ情報２３２１の更新内容を格納するためのページを確保する（図１７ステップＳ５４）。このページの確保にあたり、１次高速記憶装置２２の上位ディレクトリ情報２２３に基づき、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に格納されたページ（図１１の上位ディレクトリ情報２２３において、無効フラグが「Ｎｏ」、Ｄ−Ｐａｒｔｉｔｉｏｎフラグが「Ｙｅｓ」のページ）の中から、置換優先度が最も置換され易い値のページを選択するようにしてもよい。ディレクトリ情報アクセス変換部２８２は、データアクセス部２８３を介して、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２において、下位ディレクトリ情報２３２１の更新を格納するためのページに、更新された下位ディレクトリ情報を格納する。
【０２２１】
前記置換されたＤ−Ｐａｒｔｉｔｉｏｎ２２２の下位ディレクトリ情報の更新結果格納用に確保したページが更新されていた場合（図１１の上位ディレクトリ情報２２３において、無効フラグが「Ｎｏ」、Ｄ−Ｐａｒｔｉｏｎフラグが「Ｙｅｓ」、更新済フラグが「Ｙｅｓ」、置換優先度が１番目に置換対象であることを示す値のページ）、該ページに、下位ディレクトリ情報を書き込む前に、該ページの前記更新済みの内容を、２次高速記憶装置２３のＤ−Ｖｏｌ２３２に含まれる下位ディレクトリ情報（図１２参照）の該当ページエントリの情報に反映する（図１７ステップＳ５５）。
【０２２２】
ディレクトリ情報アクセス変換部２８２は、データアクセス部２８３を介して上位ディレクトリ情報２２３に含まれる、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２においてヒットしたページ（図１７ステップＳ５３のヒットしたページ）、又は、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に格納されたページ（図１７ステップＳ５５でＤ−Ｐａｒｔｉｔｉｏｎ２２２に格納したページ）の下位ディレクトリ情報（図１２参照）を更新する（図１７ステップＳ５６）。
【０２２３】
以上のステップＳ５１からＳ５６までの処理を行い、前記ステップＳ１０９及びステップＳ３１０におけるディレクトリ情報アクセス変換部２８２を介して、下位キャッシュ２３１のディレクトリ情報である下位ディレクトリ情報２３２１を更新する動作が完了する。
【０２２４】
＜Ｄ−Ｐａｒｔｉｔｉｏｎに新規ページ格納用ページの確保＞
図１８は、図１６のステップＳ４４、及び図１７ステップＳ５４における、Ｄ−Ｐａｒｔｉｔｉｏｎに新規ページ格納用ページの確保の処理を説明する流れ図である。図１６のステップＳ４４及び図１７ステップＳ５４では、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に下位ディレクトリ情報２３２１をキャッシュするためのページを確保する。図２、図３、図１８を参照して、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に下位ディレクトリ情報２３２１（図１２）をキャッシュするためのページを確保する処理について説明する。
【０２２５】
ディレクトリ情報アクセス変換部２８２は、データアクセス部２８３を介して、上位ディレクトリ情報２２３を参照して、上位キャッシュ２２１に空きページ（無効フラグが「Ｙｅｓ」のページ）が存在するか確認する（図１８のステップＳ６０１）
【０２２６】
図１８のステップＳ６０１における確認の結果、上位キャッシュ２２１に空きページが存在した場合（図１８のステップＳ６０２のＹｅｓ分岐）、ディレクトリ情報アクセス変換部２８２は、上位キャッシュ２２１の任意の空きページを、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に、下位ディレクトリ情報２３２１（図１２）の一部の写し（複製）を格納するためのページ（下位ディレクトリ情報格納用ページ）として確保して、処理を終了する（図１８のステップＳ６０３）。
【０２２７】
図１８のステップＳ６０１における確認の結果、上位キャッシュ２２１に空きページが存在しない場合（図１８のステップＳ６０２のＮｏ分岐）、ディレクトリ情報アクセス変換部２８２は、データアクセス部２８３を介して、上位ディレクトリ情報２２３から取得したＤ−Ｐａｒｔｉｔｉｏｎ２２２の容量と、容量制御部２７で決定されたＤ−Ｐａｒｔｉｔｉｏｎ２２２の容量を比較する（図１８のステップＳ６０４）。
【０２２８】
図１８のステップＳ６０４において、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２の容量が容量制御部２７で決定された容量値未満であった場合（図１８のステップＳ６０５のＹｅｓ分岐）、ディレクトリ情報アクセス変換部２８２は、アクセス要求処理部２８１に対して、上位キャッシュ２２１に含まれるページのうち、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に含まれないページ（上位ディレクトリ情報２２３（図４）のＤ−Ｐａｒｔｉｔｉｏｎフラグの値が「Ｎｏ」のページ）から、所要数のページを確保し、該ページのデータを削除して、空きページを作成することで、新規に格納するデータのために確保するように要求して、処理を終了する（図１８のステップＳ６０６）。
【０２２９】
図１８のステップＳ６０３におけるアクセス要求処理部２８１による、上位キャッシュ２２１に含まれるページのうち、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に含まれないページを新規に格納するデータのために確保する処理手順は、図１５のステップＳ３０１からＳ３１０までの処理と同一である。このため、その説明は省略する。
【０２３０】
図１８のステップＳ６０４においてＤ−Ｐａｒｔｉｔｉｏｎ２２２の容量が容量制御部２７で決定された容量値以上であった場合（図１８のステップＳ６０５のＮｏ判定）、ディレクトリ情報アクセス変換部２８２は、上位キャッシュ２２１に含まれるページのうち、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に含まれるページ（上位ディレクトリ情報２２３（図４）のＤ−Ｐａｒｔｉｔｉｏｎフラグの値がＹｅｓのページ）の中から、置換するページを選択し、新規にデータを格納するページを確保する（図１８のステップＳ６０７）。Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に含まれるページの中から新規にデータを格納するページを確保する際に、その時点で、最も長く参照されない状態が続いているページを選択するようにしてもよい。
【０２３１】
上位ディレクトリ情報２２３に記録されたディレクトリ情報（図４）から、ステップＳ６０７において確保したページが未更新である（更新済みでない）（上位ディレクトリ情報２２３（図４）の更新済フラグの値がＮｏ）場合（図１８のステップＳ６０８のＮｏ判定）、ステップＳ６１０以降の処理を実行する。
【０２３２】
上位ディレクトリ情報２２３に記録されたディレクトリ情報からステップＳ６０７において確保したページが更新済である（上位ディレクトリ情報２２３（図４）の更新済フラグの値がＹｅｓ）場合（図１８のステップＳ６０８のＹｅｓ分岐）、ディレクトリ情報アクセス変換部２８２は、データアクセス部２８３を介して、ステップＳ６０７で確保したＤ−Ｐａｒｔｉｔｉｏｎ２２２に含まれるページについて、該ページに対応する、２次高速記憶装置２３のＤ−Ｖｏｌ２３２のページに、更新を反映する（図１８のステップＳ６０９）
【０２３３】
ディレクトリ情報アクセス変換部２８２は、データアクセス部２８３を介して、ステップＳ６０７で確保したＤ−Ｐａｒｔｉｔｉｏｎ２２２に含まれるページのデータを削除し、該ページを、新規データ格納のために空きページとする。また、ディレクトリ情報アクセス変換部２８２は、データアクセス部２８３を介して、上位ディレクトリ情報２２３を更新し、前記確保した対応するページを空ページにして、処理を終了する（図１８のステップＳ６１０）
【０２３４】
以上のステップＳ６０１からＳ６１０までの処理を行い、前記ステップＳ４４及びステップＳ５４における、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に下位ディレクトリ情報２３２１（図１２）をキャッシュするためのページを確保する動作が完了する。
【０２３５】
＜実施例＞
本実施形態による効果の例として、最適容量配分探索部２６における１次高速記憶装置２２の上位キャッシュ２２１、及びＤ−Ｐａｒｔｉｔｉｏｎ２２２に対する性能面で最適な容量配分の例を示す。本実施例では第１の高速記憶２１における上位キャッシュ２２１、及びＤ−Ｐａｒｔｉｔｉｏｎ２２２が使用可能な容量の合計を２ＧＢ（Gigabyte）（＝２０４８ＭＢ(Megabyte)）と定め、上位キャッシュ２２１、及びＤ−Ｐａｒｔｉｔｉｏｎ２２２に対する容量の配分を２５６ＭＢ単位で変化させる。各アクセスはページ単位で行われるものと仮定し、最適容量配分探索部２６による上位キャッシュ２２１、及びＤ−Ｐａｒｔｉｔｉｏｎ２２２に対する第１の高速記憶２１の容量配分変更を、３００００ページに対するアクセス毎に行う。
【０２３６】
また本実施例では、１次高速記憶装置２２をＤＲＡＭ、２次高速記憶装置２３をＦｌａｓｈ  ＳＳＤと仮定し、下位キャッシュ２３１にヒットしてディレクトリ情報をＤ−Ｖｏｌ２３２から読み出した場合を基準とした場合に、キャッシュヒットの種類毎のアクセス時間短縮効果は、図８に例示するように、キャッシュヒットの種類毎のアクセス時間短縮効果６１に示した通りである。上位キャッシュ２２１でヒットした場合に、下位キャッシュ２３１でヒットした場合と比べて２００uｓ(microsecond)の短縮時間、Ｄ−ｐａｒｔｉｔｉｏｎ２２２でヒットした（アクセス対象の下位ディレクトリ情報がＤ−ｐａｒｔｉｔｉｏｎ２２２に格納されている）場合に、下位キャッシュ２３１でヒットした場合と比べて１００uｓ(microsecond)の短縮時間である。
【０２３７】
図９（Ａ）、（Ｂ）は、本実施例における、容量別キャッシュヒット頻度記録部２５によって生成される上位キャッシュ下限容量分布７１と、Ｄ−Ｐａｒｔｉｔｉｏｎ下限容量分布７２を表す。図９（Ｂ）のＤ−Ｐａｒｔｉｔｉｏｎ下限容量の常時ミスでは、図２のＤ−Ｐａｒｔｉｔｉｏｎ２２２でミス（下位ディレクトリ情報がミス）のため、Ｄ−Ｖｏｌ２３２へのアクセスが行われる。図２の最適容量配分探索部２６は、キャッシュヒットの種類毎のアクセス時間短縮効果６１に示された１アクセスあたりの短縮時間を、上位キャッシュ下限容量分布７１と、Ｄ−Ｐａｒｔｉｔｉｏｎ下限容量分布７２のアクセス頻度の値に掛け合わせて、割り当てられた容量毎に短縮されるアクセス時間の合計を求める。なお、図９では、ヒット頻度の測定区分を２５６ＭＢ単位としているが、２５６ＭＢは単に具体例の１つを例示しただけのものであって、ヒット頻度の測定区間は２５６ＭＢに限定されるものでなく、任意に設定可能であることは勿論である。
【０２３８】
図１０は、本実施例において、上位キャッシュ２２１の容量と、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２の容量の各組み合わせにおける、３００００ページへのアクセスに対する上位キャッシュ２２１、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２のヒット数、及びアクセス時間の短縮効果の合計値を表す。上位キャッシュ２２１、及びＤ−Ｐａｒｔｉｔｉｏｎ２２２の容量の各組み合わせにおけるヒット数は、図９の上位キャッシュ下限容量分布７１と、Ｄ−Ｐａｒｔｉｔｉｏｎ下限容量分布７２から求められる。また、アクセス時間の短縮効果は、図８のキャッシュヒットの種類毎のアクセス時間短縮効果６１から求められる。
【０２３９】
各容量における上位キャッシュ２２１のヒット頻度は、図９（A）の上位キャッシュ下限容量分布７１から以下の通り求められる。例えば上位キャッシュの容量が１０２４ＭＢである場合は、上位キャッシュ下限容量分布７１における、１０２４ＭＢ以下のヒット頻度、つまり２５６ＭＢ、５１２ＭＢ、７６８ＭＢ、１０２４ＭＢでのヒット頻度の合計：
１００００＋４０００＋３５００＋３０００
＝２０５００
で表される。
【０２４０】
同様に、各容量におけるＤ−Ｐａｒｔｉｔｉｏｎ２２２のヒット頻度についても、図９のＤ−Ｐａｒｔｉｔｉｏｎ下限容量分布７２から求められる。しかし前記各容量における上位キャッシュ２２１においてヒットでは、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に対するアクセスが行われずに処理が終了する。そのため、各容量におけるＤ−Ｐａｒｔｉｔｉｏｎ２２２のヒット頻度は、上位キャッシュ２２１におけるヒット数を差し引いた値となる。
【０２４１】
例えばＤ−Ｐａｒｔｉｔｉｏｎ２２２の容量が１０２４ＭＢである場合、上位キャッシュ２２１の容量は１次高速記憶装置２２の容量が２０４８ＭＢであることから、１０２４ＭＢとなるので、上位キャッシュ２２１の容量が１０２４ＭＢである場合のヒット頻度を差し引く。つまり、Ｄ−Ｐａｒｔｉｔｉｏｎ下限容量分布７２における、１０２４ＭＢ以下のヒット頻度：
２５０００＋２０００＋１２００＋４００＝２８６００
から、上位キャッシュ２２１の容量が１０２４ＭＢである場合のヒット頻度２０５００を差し引いて、
２８６００−２０５００＝８１００
がＤ−Ｐａｒｔｉｔｉｏｎ２２２におけるヒット頻度と求められる。
【０２４２】
また、各容量の組み合わせにおける、上位キャッシュ２２１及びＤ−Ｐａｒｔｉｔｉｏｎ２２２によるアクセス時間短縮効果の合計Ｔは、
・上位キャッシュ２２１でのヒット数をＸ、
・上位キャッシュ２２１における１ヒットあたりのアクセス時間短縮効果をＡ、
・Ｄ−Ｐａｒｔｉｔｉｏｎ２２２でのヒット数をＹ、
・Ｄ−Ｐａｒｔｉｔｉｏｎ２２２における１ヒットあたりのアクセス時間短縮効果をＹ
とした場合に、
Ｔ＝Ａ×Ｘ＋Ｂ×Ｙ
で求められる。
【０２４３】
例えば上位キャッシュ２２１に対して１ＧＢ（＝１０２４ＭＢ）の容量を割り当てた場合、図８のキャッシュヒットの種類毎のアクセス時間短縮効果６１、及び図８の上位キャッシュ２２１でのヒット頻度から、短縮されるアクセス時間の合計は、
２０５００×２００ｕｓ＝４１０００００ｕｓ＝４１００ｍｓ（millisecond）
と求められる。
【０２４４】
この時、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に割り当てられる容量は１ＧＢ（＝１０２４ＭＢ）であるため、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２でのヒット頻度から短縮されるアクセス時間の合計は、
８１００×１００ｕｓ＝８１０ｍｓ
と求められる。
【０２４５】
つまり、上位キャッシュ２２１、及びＤ−Ｐａｒｔｉｔｉｏｎ２２２に１ＧＢずつ容量を割り当てた場合のアクセス時間短縮効果の合計は、
４１００＋８１０＝４９１０ｍｓ
と計算できる。
【０２４６】
同様に、上位キャッシュ２２１、及び、Ｄ−Ｐａｒｔｉｔｉｏｎ２２２に対する各容量割り当てについてアクセス時間短縮効果を計算すると、アクセス時間の短縮効果が最大となるのは、
・上位キャッシュ２２１の容量を１２８０ＭＢ、
・Ｄ−Ｐａｒｔｉｔｉｏｎ２２２の容量を７６８ＭＢ
に配分した場合である。この容量配分でのアクセス時間短縮効果は、
２１５００×２００ｕｓ＋６７００×１００ｕｓ＝４３０００００ｕｓ＋６７００００ｕｓ＝４９７０ｍｓ
である。
【０２４７】
よって、最適容量配分探索部２６は、
・上位キャッシュ２２１の容量を１２８０ＭＢ、
・Ｄ−Ｐａｒｔｉｔｉｏｎ２２２の容量を７６８ＭＢ
に配分することで、１次高速記憶装置２２に対して、アクセス性能の側面から、最適な割り当てを実現することができる。
【０２４８】
なお、上記の特許文献１−５、非特許文献１の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ乃至選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【０２４９】
１  ホスト
２  ストレージ
３  ネットワーク
２１  記憶媒体
２２  第１の高速記憶
２３  ２次高速記憶装置
２４  キャッシュヒット種類判別部
２５  容量別キャッシュヒット頻度記録部
２６  最適容量配分探索部
２７  容量制御部
２８  アクセス制御部
２９  アクセス制御部
６１  キャッシュヒットの種類毎のアクセス時間短縮効果
７１  上位キャッシュ下限容量分布
７２  Ｄ−Ｐａｒｔｉｔｉｏｎ下限容量分布
２２１  上位キャッシュ
２２２  Ｄ−Ｐａｒｔｉｔｉｏｎ
２２３  上位ディレクトリ情報
２２４  キャッシュ領域
２３１  下位キャッシュ
２３２  Ｄ−Ｖｏｌ
２５１  上位キャッシュ下限容量分布
２５２  Ｄ−Ｐａｒｔｉｔｉｏｎ下限容量分布
２８１  アクセス要求処理部
２８２  ディレクトリ情報アクセス変換部
２８３  データアクセス部
２８４  アクセステーブル
２３２１  下位ディレクトリ情報
【図１】
2014142337.tif 000003
【図２】
2014142337.tif 000004
【図３】
2014142337.tif 000005
【図４】
2014142337.tif 000006
【図５】
2014142337.tif 000007
【図６】
2014142337.tif 000008
【図７】
2014142337.tif 000009
【図８】
2014142337.tif 000010
【図９】
2014142337.tif 000011
【図１０】
2014142337.tif 000012
【図１１】
2014142337.tif 000013
【図１２】
2014142337.tif 000014
【図１３】
2014142337.tif 000015
【図１４】
2014142337.tif 000016
【図１５】
2014142337.tif 000017
【図１６】
2014142337.tif 000018
【図１７】
2014142337.tif 000019
【図１８】
2014142337.tif 000020
【図１９】
2014142337.tif 000021
【国際調査報告】
2014142337.tif 000022
2014142337.tif 000023
2014142337.tif 000024
2014142337.tif 000025