(57)【要約】【課題】資源の増加、オーバーヘッドの増加を抑制しながら、階層中間記憶機能の中間記憶領域の容量を、アクセス特性に応じて、性能を向上させるように動的に決定可能とする。【解決手段】ストレージ装置２は、記憶媒体２−１と複数の中間記憶領域を備えた上位中間記憶機能２−２と複数の中間記憶領域を備えた下位中間記憶機能２−３と、アクセス要求に対して中間記憶機能及び下位中間記憶機能の前記中間記憶領域でのヒット情報に基づき上位中間記憶機能の中間記憶領域を増加させた場合と容量を減少させた場合の一方又は両方におけるヒット情報を収集する中間記憶アクセス情報収集部２−４と、中間記憶アクセス情報収集部２−４で収集されたヒットに関する情報に基づき、上位中間記憶機能２−２と下位中間記憶機能２−３の中間記憶領域の容量を決定する中間記憶領域容量決定部２−５を備えている。【選択図】図１８
2014010604.tif 000002
【特許請求の範囲】
【請求項１】
データを格納する記憶媒体と、
前記記憶媒体における物理的又は論理的な単位領域に対応する少なくとも１つの中間記憶領域を備えた上位中間記憶機能と、
前記上位中間記憶機能の前記中間記憶領域に対応する少なくとも１つの中間記憶領域を備えた下位中間記憶機能と、
アクセス要求に対して、前記上位中間記憶機能及び前記下位中間記憶機能の前記中間記憶領域でのヒット情報に基づき、前記上位中間記憶機能の前記中間記憶領域の容量を増加させた場合と、前記上位中間記憶機能の前記中間記憶領域の容量を減少させた場合の一方又は両方におけるヒット情報を収集する中間記憶アクセス情報収集部と、
前記中間記憶アクセス情報収集部で収集された前記ヒット情報に基づき、少なくとも前記上位中間記憶機能の前記中間記憶領域の容量を決定する中間記憶領域容量決定部と、
を備えたストレージ装置。
【請求項２】
前記中間記憶アクセス情報収集部は、前記アクセス要求に対する前記下位中間記憶機能の前記中間記憶領域でのヒット情報に基づき、前記アクセス要求に対して前記上位中間記憶機能でヒットするのに必要な前記上位中間記憶機能の前記中間記憶領域の容量を算出し、前記上位中間記憶機能において算出された前記容量の前記中間記憶領域でヒットしたものとして集計する、請求項１記載のストレージ装置。
【請求項３】
前記中間記憶アクセス情報収集部は、前記アクセス要求に対する前記上位中間記憶機能の前記中間記憶領域でのヒット情報に基づき、前記アクセス要求に対して前記上位中間記憶機能でヒットするのに必要な前記上位中間記憶機能の前記中間記憶領域の容量を算出し、前記上位中間記憶機能において算出された前記容量の前記中間記憶領域でヒットしたものとして集計する、請求項１又は２記載のストレージ装置。
【請求項４】
前記中間記憶アクセス情報収集部は、前記アクセス要求に対して、前記上位中間記憶機能の前記中間記憶領域でミスし、前記下位中間記憶機能の前記中間記憶領域でヒットした場合に、
前記下位中間記憶機能の前記中間記憶領域でヒットした箇所の情報を用いて、前記アクセス要求に対して前記上位中間記憶機能でヒットするのに必要な前記上位中間記憶機能の前記中間記憶機能の容量又は容量増加分を算出し、前記上位中間記憶機能において算出された前記容量又は前記容量増加分増加させた前記中間記憶領域でのヒットとして集計する、請求項２記載のストレージ装置。
【請求項５】
前記中間記憶アクセス情報収集部は、前記アクセス要求に対して、前記上位中間記憶機能の前記中間記憶領域でヒットした場合、前記上位中間記憶機能の前記中間記憶領域でヒットした箇所の情報を用いて、前記アクセス要求に対して前記上位中間記憶機能でヒットするのに必要な前記上位中間記憶機能の前記中間記憶機能の容量又は容量減少分を算出し、前記上位中間記憶機能において算出された前記容量又は前記容量減少分減少させた前記中間記憶領域でのヒットとして集計する、請求項３記載のストレージ装置。
【請求項６】
前記上位中間記憶機能と前記下位中間記憶機能に対してデータを格納する場合、前記データは、前記上位中間記憶機能の前記中間記憶領域に格納され、前記上位中間記憶機能の前記中間記憶領域に格納しきれなくなったデータが前記下位中間記憶機能の前記中間記憶領域に格納される、請求項１乃至５のいずれか１項に記載のストレージ装置。
【請求項７】
前記中間記憶領域容量決定部は、前記上位中間記憶機能の前記中間記憶領域におけるヒット頻度がより大となるように、前記上位中間記憶機能の前記中間記憶領域の容量を決定する、請求項１乃至６のいずれか１項に記載のストレージ装置。
【請求項８】
前記上位中間記憶機能と前記下位中間記憶機能が、データを格納する少なくとも１つの前記記憶媒体から、アクセス頻度の高いデータを選択的に格納するための記憶階層であり、データをアクセス頻度に応じて、前記上位中間記憶機能、前記下位中間記憶機能、及び、前記記憶媒体上に配置する、請求項１乃至７のいずれか１項に記載のストレージ装置。
【請求項９】
前記上位中間記憶機能と前記下位中間記憶機能がそれぞれ、上位キャッシュと下位キャッシュである、請求項１乃至８のいずれか１項に記載のストレージ装置。
【請求項１０】
前記上位中間記憶機能の前記中間記憶領域と前記下位中間記憶機能の前記中間記憶領域が、それぞれ、前記上位キャッシュと前記下位キャッシュを区分したパーティションであり、
前記上位キャッシュと前記下位キャッシュの前記パーティションは、前記記憶媒体において前記単位領域をなすボリュームに対応し、
前記上位キャッシュと前記下位キャッシュの前記パーティションは複数のページからなり、
前記上位キャッシュのページと前記下位キャッシュのページのサイズを共通とし、
前記上位キャッシュと前記下位キャッシュのそれぞれにおいてページ置換をＬＲＵ（Least  Recently  Used）アルゴリズムを用いて行い、
前記上位キャッシュのパーティションのページ置換において、最高の置換優先順位で前記上位キャッシュのパーティションから追い出されたページを、前記下位キャッシュの対応するパーティションに、最低の置換優先順位で挿入し、前記上位キャッシュのパーティションと前記下位キャッシュの対応するパーティションとを、擬似的に１つのキャッシュのパーティションとして管理する請求項９記載のストレージ装置。
【請求項１１】
前記中間記憶アクセス情報収集部は、アクセス要求に対して前記上位キャッシュのパーティションでミスし、前記下位キャッシュのパーティションでヒットした場合、前記上位キャッシュの前記パーティションの容量に対して、前記下位キャッシュでヒットしたページの置換優先順位情報に基づき、前記アクセス要求に対して前記上位キャッシュの前記パーティションでヒットするために必要な前記パーティションの容量増加分を算出し、前記パーティションの容量を前記容量増加分増加させた場合における前記上位キャッシュでのヒットとしてヒット頻度を計測する容量別ヒット頻度計測部を含む、請求項１０記載のストレージ装置。
【請求項１２】
前記中間記憶アクセス情報収集部は、アクセス要求に対して前記上位キャッシュのパーティションでヒットした場合、前記上位キャッシュでヒットしたページのページ置換の優先順位情報に基づき、前記アクセス要求に対して、前記上位キャッシュの前記パーティションでヒットするために必要な前記パーティションの容量を算出し、前記算出された容量の前記パーティションを備えた前記上位キャッシュでのヒットとしてヒット頻度を計測する容量別ヒット頻度計測部を含む、請求項１０又は１１に記載のストレージ装置。
【請求項１３】
新規ページが、前記上位キャッシュに格納され、
前記上位キャシュから追い出されたページが前記下位キャッシュに格納される、請求項１０乃至１２のいずれか１項に記載のストレージ装置。
【請求項１４】
ページの置換優先順位情報と、前記パーティションの容量を参照して、前記上位キャッシュと前記下位キャッシュから置換によって移動又は削除するページを決定するページ配置部と、
前記記憶媒体、前記上位キャッシュ、及び前記下位キャッシュの間でデータをページ単位で読み出し、書き込み、コピー、移動、更新の反映の少なくとも１つを行うデータアクセス部と、
を備えた請求項１０乃至１３のいずれか１項に記載のストレージ装置。
【請求項１５】
データを格納する記憶媒体と、前記記憶媒体における物理的又は論理的な単位領域に対応する少なくとも１つの中間記憶領域を備えた上位中間記憶機能と、前記上位中間記憶機能の前記中間記憶領域に対応する少なくとも１つの中間記憶領域を備えた下位中間記憶機能を備えたストレージの制御方法であって、
アクセス要求に対して、前記上位中間記憶機能及び前記下位中間記憶機能の前記中間記憶領域でのヒット情報に基づき、前記上位中間記憶機能の前記中間記憶領域を増加させた場合と、前記上位中間記憶機能の前記中間記憶領域の容量を減少させた場合の一方又は両方におけるヒット情報を収集する中間記憶アクセス情報収集工程と、
前記中間記憶アクセス情報収集工程で収集された前記ヒット情報に基づき、少なくとも前記上位中間記憶機能の前記中間記憶領域の容量を決定する中間記憶領域容量決定工程と、
を含む、ストレージの制御方法。
【請求項１６】
前記中間記憶アクセス情報収集工程は、前記アクセス要求に対する前記下位中間記憶機能の前記中間記憶領域でのヒット情報に基づき、前記アクセス要求に対して前記上位中間記憶機能でヒットするのに必要な前記上位中間記憶機能の前記中間記憶領域の容量を算出し、前記上位中間記憶機能において算出された前記容量の前記中間記憶領域でヒットしたものとして集計する、請求項１５記載のストレージの制御方法。
【請求項１７】
前記中間記憶アクセス情報収集工程は、前記中間記憶アクセス情報収集部は、前記アクセス要求に対する前記上位中間記憶機能の前記中間記憶領域でのヒット情報に基づき、前記アクセス要求に対して前記上位中間記憶機能でヒットするのに必要な前記上位中間記憶機能の前記中間記憶領域の容量を算出し、前記上位中間記憶機能において算出された前記容量の前記中間記憶領域でヒットしたものとして集計する、請求項１５又は１６記載のストレージの制御方法。
【請求項１８】
前記上位中間記憶機能と前記下位中間記憶機能に対してデータを格納する場合、前記データを前記上位中間記憶機能に格納し、
前記上位中間記憶機能に格納しきれなくなったデータが前記下位中間記憶機能に格納される、請求項１５乃至１７のいずれか１項に記載のストレージの制御方法。
【請求項１９】
前記中間記憶領域容量決定工程は、前記上位中間記憶機能の前記中間記憶領域におけるヒット頻度がより大となるように、前記上位中間記憶機能の前記中間記憶領域の容量を決定する、請求項１５乃至１８のいずれか１項に記載のストレージの制御方法。
【請求項２０】
データを格納する記憶媒体と、前記記憶媒体における物理的又は論理的な単位領域に対応する少なくとも１つの中間記憶領域を備えた上位中間記憶機能と、前記上位中間記憶機能の前記中間記憶領域に対応する少なくとも１つの中間記憶領域を備えた下位中間記憶機能を備えたストレージを構成するコンピュータに、
アクセス要求に対して、前記上位中間記憶機能及び前記下位中間記憶機能の前記中間記憶領域でのヒット情報に基づき、前記上位中間記憶機能の前記中間記憶領域を増加させた場合と、前記上位中間記憶機能の前記中間記憶領域の容量を減少させた場合の一方又は両方におけるヒット情報を収集する中間記憶アクセス情報収集処理と、
前記中間記憶アクセス情報収集処理で収集された前記ヒット情報に基づき、少なくとも前記上位中間記憶機能の前記中間記憶領域の容量を決定する中間記憶領域容量決定処理と、
を実行させるプログラム。
【請求項２１】
前記中間記憶アクセス情報収集処理は、前記アクセス要求に対する前記下位中間記憶機能の前記中間記憶領域でのヒット情報に基づき、前記アクセス要求に対して前記上位中間記憶機能でヒットするのに必要な前記上位中間記憶機能の前記中間記憶領域の容量を算出し、前記上位中間記憶機能において算出された前記容量の前記中間記憶領域でヒットしたものとして集計する、請求項２０記載のプログラム。
【請求項２２】
前記中間記憶アクセス情報収集処理は、前記アクセス要求に対する前記上位中間記憶機能の前記中間記憶領域でのヒット情報に基づき、前記アクセス要求に対して前記上位中間記憶機能でヒットするのに必要な前記上位中間記憶機能の前記中間記憶領域の容量を算出し、前記上位中間記憶機能において算出された前記容量の前記中間記憶領域でヒットしたものとして集計する、請求項２０又は２１記載のプログラム。
【請求項２３】
前記上位中間記憶機能と前記下位中間記憶機能に対してデータを格納する場合、前記データを前記上位中間記憶機能に格納し、
前記上位中間記憶機能に格納しきれなくなったデータを前記下位中間記憶機能に格納する処理を、前記コンピュータに実行させる請求項２０乃至２２のいずれか１項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はストレージ装置とプログラムと方法に関する。
【背景技術】
【０００２】
情報通信技術の進化とその適用分野の拡大に伴い、情報処理システムで扱われるデータ量は増加の一途を辿っている。情報処理システムの種類、数の増加に伴い、データを格納するために多くのストレージが必要とされ、情報処理システムを維持するために多数のストレージの管理が必要となる。このため、ストレージ管理の効率化が求められる。
【０００３】
ストレージ管理の効率化のために、例えば複数システムのデータを単一のストレージに集約するシステムが用いられている。
【０００４】
単一のストレージに複数システムのデータを格納する場合、ストレージには、大容量のデータの格納と、複数のシステムからの大量のアクセスに対応可能とするために、
・大容量化と、
・高性能化と、
が要求される。
【０００５】
近時、ＨＤＤ（Hard Disk Drive）の記憶容量は大容量化している。記憶媒体としてＨＤＤを用いることで、記憶容量の大容量化の要求に対応することは可能である。また、ストレージを構成する記憶媒体の数の増減等により、要求される記憶容量に柔軟に対応することが可能である。
【０００６】
ストレージの高性能化に対処するためにキャッシュ（キャッシュメモリ）が用いられている。ストレージへの読み出しアクセスの結果、キャッシュにアクセス対象のデータが存在しない（キャッシュミス）時には、ストレージからデータが読み出され、該データはキャッシュに格納され、以降のアクセスに対して、キャッシュ上にアクセス対象のデータが存在する場合（ヒット時）、該データはキャッシュから読み出される。この場合、ストレージへの読み出しアクセスは行われない。データの更新は、該データがキャッシュ上にある場合、キャッシュ上でデータを更新し、例えば、キャッシュの当該更新タイミングから遅れてストレージの対応データの更新が行われる（ライトバック）。このように、キャッシュは、記憶媒体に格納されたデータの複製または更新を格納する。キャッシュにアクセス頻度の高いデータを格納することで、性能の低いＨＤＤ等の記憶媒体へのアクセスを削減し、性能向上を図る。なお、ストレージのキャッシュは、例えばＤＲＡＭ（Dynamic  Random  Access  Memory）又はその他等で構成される
【０００７】
アクセス頻度の高いデータの格納は、キャッシュ上のデータ（該データを含むページ）を置換するアルゴリズムによって実現される。例えばＬＦＵ（Least Frequently Used）アルゴリズムは、キャッシュに新規データ（該データを含むページ）を格納する場合に、アクセス頻度が最も低いデータ（該データを含むページ）と置き換えを行うことでアクセス頻度が最も低いデータ（該データを含むページ）をキャッシュから追い出し、新規データを格納する。キャッシュにおいて、最後のアクセスからの経過時間が長いデータほど、アクセス頻度が低いデータであるという想定のもと、キャッシュにおいて、アクセス頻度の低いページを優先的に新規ページと置き換えることで、キャッシュには、アクセス頻度の高いデータが格納されることになる。ページは、キャッシュにおけるデータ管理の参照単位であり、ページ単位で置換が行われる（例えば、アクセス頻度が最低のページの追い出し、新規ページの格納等）。
【０００８】
ストレージにおいて階層キャッシュが用いられている。例えばＤＲＡＭによるキャッシュを上位キャッシュ（「１次キャッシュ」ともいう）とし、ＨＤＤよりも高速であり、キャッシュとして主に用いられるＤＲＡＭよりも低速な記憶媒体を下位のキャッシュ（「２次キャッシュ」ともいう）とする。ＨＤＤより高性能な（アクセスが高速な）記憶媒体として、例えばＳＳＤ（Solid State Drive）が下位のキャッシュ（２次キャッシュ）として用いられる。ＳＳＤは、一般に、ＮＡＮＤフラッシュメモリから構成される。ＮＡＮＤ型フラッシュメモリは、ＨＤＤよりも容量は小さいものの、ＤＲＡＭと比べて、容量が大きく、安価である。
【０００９】
一般に、下位キャッシュには、上位キャッシュに格納しきれなくなったデータが格納される。すなわち、上位キャッシュから追い出されたページが下位キャッシュに格納される。なお、下位キャッシュが上位キャッシュの内容を全て含む構成（Inclusive型）と、上位キャッシュの内容が下位キャッシュに含まれない場合を許容する構成（Exclusive型）がある。
【００１０】
上位キャッシュに格納しきれなくなったデータ（上位キャッシュから下位キャッシに追い出されたデータ）に対して、再度、アクセスを行う場合、下位キャッシュにアクセスすることで、低速なＨＤＤ等の記憶媒体に対するアクセスの発生を防ぎ、アクセス性能を向上させる。
【００１１】
上位キャッシュでミスしたが、下位キャッシュでヒットしたデータ（該データを含むページ）は、再び、上位キャッシュに格納される。上位キャッシュにデータが格納しきれなくなったデータ（該データを含むページ）は上位キャッシュから追い出され、下位キャッシュに格納する、という一連の動作を繰り返す。この結果、上位キャッシュには、アクセス頻度の高いデータが格納される。下位キャッシュには、上位キャッシュに次いで、アクセス頻度の高いデータが格納される。このようにして各キャッシュ階層が効率的に利用される。
【００１２】
なお、上位キャッシュでミスしたデータを下位キャッシュから読み込んだ時点では、該データは上位キャッシュと下位キャッシュに含まれる。この状態で、下位キャッシュから該データを含むページが追い出されたときに、Inclusive型では上位キャッシュの該データを無効化する。一方、Exclusive型では、上位キャッシュの該データを無効化せずにそのまま残す。特に制限されないが、上位キャッシュのデータを、下位キャッシュにライトバック（WRITE BACK）する場合、下位キャッシュにページが確保され該ページにライトバックする。
【００１３】
複数のシステムのデータを単一ストレージに格納した場合、複数のシステム間で共有されるキャッシュの利用効率が低下することが知られている。複数のシステム（プロセス、スレッド）間でストレージに対して異なるデータに並列にアクセスが行われる。また１回のアクセスあたりのデータ量が増加する。この結果、キャッシュ競合の発生が増加し、ヒット率の低下（キャッシュミスの増加）により、ページの入替えが多発し（スラッシング）、キャッシュの利用効率の低下、ストレージの性能低下が発生する。
【００１４】
キャッシュの競合を防ぐ手法として、キャッシュ・パーティショニング（単に「パーティショニング」ともいう）がある（例えば特許文献１参照）。パーティショニングとは、共有キャッシュをプロセス（スレッド）毎の占有領域であるパーティションに分割（区分）することで、プロセス（又はスレッド）間での競合を防ぐものである。
【００１５】
ストレージのキャッシュのパーティショニングとは、多くの場合、ボリューム（記憶領域の管理単位をなす一定のデータセットであり、「論理ボリューム」ともいう）などを単位として、キャッシュ（共有キャッシュ）を、ボリュームの占有領域であるパーティションに分割（区分）することをいう。パーティショニングを用いない場合、あるボリュームへのアクセスに対してキャッシュミスにより、当該アクセスに対応するデータのキャッシュへの登録にあたり、キャッシュに格納されている他のボリュームのデータを追い出しキャッシュの競合を発生させることになる。
【００１６】
キャッシュをパーティションニングした場合、あるボリュームへのアクセスに対して当該ボリュームに対応するパーティションでミスした時、該パーティション内でデータ（ページ）の置換えが行われ、別のボリュームの占有領域に対応する別のパーティションのデータを追い出すことは無い。このため、キャッシュの競合が回避される。
【００１７】
なお、特許文献１には、キャッシュメモリを複数のパーティションに論理的に分割し、それぞれのパーティションは複数の論理ボリュームに対して割り当てられ、複数のパーティションはセグメントサイズが独立して調整可能なように構成され、パーティションのセグメントサイズを調整することで、キャッシュメモリの性能チューニングを行うようにしたストレージシステムが開示されている。
【００１８】
非特許文献１、２、３には、各パーティションに対するアクセス分布から、各パーティションの容量増減に対するキャッシュヒット数の変化を推測することで、キャッシュ全体でヒット数が最大となる各パーティションの容量を算出する手法が開示されている。
【先行技術文献】
【特許文献】
【００１９】
【特許文献１】特許第４８１９３６９号公報
【非特許文献】
【００２０】
【非特許文献１】Stone et al., "Optimal Partitioning of Cache Memory", IEEE Transactions on Computers, Vol. 41, No. 9, pp. 1054-1068, 1992
【非特許文献２】Suh et al., "Dynamic partitioning of shared cache memory", Journal of Supercomputing, Vol. 28, No. 1, pp. 7-26, 2004
【非特許文献３】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
【発明の概要】
【発明が解決しようとする課題】
【００２１】
以下に関連技術の分析を与える。
【００２２】
階層キャッシュにおいて、上位又は最上位のキャッシュのパーティションの容量をアクセス性能が向上するように動的に決定するには、キャッシュのヒット／ミス情報等、アクセスをモニタする回路等、必要なハードウェア／ソフトウェア・リソースが増大する。また、上位又は最上位キャッシュは、高いアクセス性能を実現するために限界に近い速度での動作が要求されるため、キャッシュにおけるアクセスのモニタ等のオーバーヘッドは最小限とすべきである。
【００２３】
したがって、本発明の目的は、必要な資源の増加、オーバーヘッドを抑制しながら、階層キャッシュ等の階層中間記憶機能の中間記憶領域の容量を、アクセス特性に応じて、性能を向上させるように動的に決定可能とする装置、方法、プログラムを提供することにある。
【課題を解決するための手段】
【００２４】
本発明によれば、データを格納する記憶媒体と、
前記記憶媒体における物理的又は論理的な単位領域に対応する少なくとも１つの中間記憶領域を備えた上位中間記憶機能と、
前記上位中間記憶機能の前記中間記憶領域に対応する少なくとも１つの中間記憶領域を備えた下位中間記憶機能と、
アクセス要求に対して、前記上位中間記憶機能及び前記下位中間記憶機能の前記中間記憶領域でのヒット情報に基づき、前記上位中間記憶機能の前記中間記憶領域を増加させた場合と、前記上位中間記憶機能の前記中間記憶領域の容量を減少させた場合の一方又は両方におけるヒット情報を収集する中間記憶アクセス情報収集部と、
前記中間記憶アクセス情報収集部で収集された前記ヒット情報に基づき、少なくとも前記上位中間記憶機能の前記中間記憶領域の容量を決定する中間記憶領域容量決定部と、
を備えたストレージ装置が提供される。
【００２５】
本発明によれば、データを格納する記憶媒体と、前記記憶媒体における物理的又は論理的な単位領域に対応する少なくとも１つの中間記憶領域を備えた上位中間記憶機能と、前記上位中間記憶機能の前記中間記憶領域に対応する少なくとも１つの中間記憶領域を備えた下位中間記憶機能を備えたストレージの制御方法であって、
アクセス要求に対して、前記上位中間記憶機能及び前記下位中間記憶機能の前記中間記憶領域でのヒット情報に基づき、前記上位中間記憶機能の前記中間記憶領域を増加させた場合と、前記上位中間記憶機能の前記中間記憶領域の容量を減少させた場合の一方又は両方におけるヒット情報を収集する中間記憶アクセス情報収集工程と、
前記中間記憶アクセス情報収集工程で収集された前記ヒット情報に基づき、少なくとも前記上位中間記憶機能の前記中間記憶領域の容量を決定する中間記憶領域容量決定工程と、
を含むストレージ制御方法が提供される。
【００２６】
本発明によれば、データを格納する記憶媒体と、前記記憶媒体における物理的又は論理的な単位領域に対応する少なくとも１つの中間記憶領域を備えた上位中間記憶機能と、前記上位中間記憶機能の前記中間記憶領域に対応する少なくとも１つの中間記憶領域を備えた下位中間記憶機能を備えたストレージを構成するコンピュータに、
アクセス要求に対して、前記上位中間記憶機能及び前記下位中間記憶機能の前記中間記憶領域でのヒット情報に基づき、前記上位中間記憶機能の前記中間記憶領域を増加させた場合と、前記上位中間記憶機能の前記中間記憶領域の容量を減少させた場合の一方又は両方におけるヒット情報を収集する中間記憶アクセス情報収集処理と、
前記中間記憶アクセス情報収集処理で収集された前記ヒット情報に基づき、少なくとも前記上位中間記憶機能の前記中間記憶領域の容量を決定する中間記憶領域容量決定処理と、
を実行させるプログラムが提供される。
【発明の効果】
【００２７】
本発明によれば、必要な資源の増加、オーバーヘッドの増加を抑制しながら、階層中間記憶機能の中間記憶領域の容量を、アクセス特性に応じて性能を向上させるように動的に決定可能としている。
【図面の簡単な説明】
【００２８】
【図１】一実施形態の構成を例示する図である。
【図２】一実施形態を例示する図である。
【図３】一実施形態の上位キャッシュ、下位キャッシュの構成を例示する図である。
【図４】一実施形態におけるマッピング情報を例示する図である。
【図５Ａ】一実施形態における上位ディレクトリ情報の内容を例示する図である。
【図５Ｂ】一実施形態における下位ディレクトリ情報の詳細を例示する図である。
【図６】一実施形態におけるパーティションテーブルを例示する図である。
【図７】一実施形態における容量別ヒット頻度テーブルを例示する図である。
【図８】一実施形態におけるアクセス要求テーブルを例示する図である。
【図９】一実施形態におけるアクセス要求処理の手順を例示するフローチャートである。
【図１０Ａ】一実施形態におけるキャッシュヒット頻度の計測処理の手順を示すフローチャートである。
【図１０Ｂ】一実施形態におけるキャッシュヒット頻度の計測処理の手順を示したフローチャートである。
【図１１Ａ】一実施形態における記憶階層間のページ配置を行う手順を示したフローチャートである。
【図１１Ｂ】一実施形態における記憶階層間のページ配置を行う手順を示したフローチャートである。
【図１２】一実施形態における上位パーティションの容量の決定を行う手順を示したフローチャートである。
【図１３】一実施例を例示する図である。
【図１４】一実施例における初期状態の記憶階層毎のヒット数分布を例示する図である。
【図１５】一実施例における容量別ヒット頻度テーブルを例示する図である。
【図１６】一実施例におけるパーティション容量最適化後の記憶階層毎のヒット数分布を例示する図である。
【図１７】本発明の実施形態を例示する図である。
【図１８】本発明の実施形態を例示する図である。
【図１９】（Ａ）、（Ｂ）は階層キャッシュと置換優先度を模式的に説明する図である。
【発明を実施するための形態】
【００２９】
発明の実施形態について説明する。キャッシュがパーティショニングされる場合、各パーティションでは、互いに独立してページの置換(replacement）が行われる。各ボリュームに対するアクセスは、該ボリュームに格納されたデータの種類、用途によって異なる。そのため、通常、ボリュームに対するアクセス頻度はボリューム間で異なる。
【００３０】
各ボリュームに対して各々の占有領域であるパーティションを割り当てる場合、キャッシュの使用効率を向上するために、各ボリュームへのアクセスパターンに応じて、各パーティションの容量を決定するようにしてもよい。例えば、アクセス頻度の高いボリュームとアクセス頻度の低いボリュームに対して、キャッシュ上でパーティションを割り当てる場合、アクセス頻度の高いボリュームに対応するパーティションの容量は、アクセス頻度の低いボリュームに対応するパーティションの容量よりも、大きく設定する。
【００３１】
複数のパーティションに区分されたキャッシュにおいて、ミス時のデータの置換は、ボリュームに対応するパーティション内で、他のボリュームに対応するパーティションとは独立して行われる。その結果、キャッシュにおいて、パーティションの容量の設定が適切でない場合が生じる。例えばパーティション容量が必要量を満たさず、容量不足によって、ボリューム内のアクセス頻度の高いデータを格納することができなくなるパーティションが発生する。逆に、パーティション容量が過剰であるため、アクセス頻度の低いデータを格納するパーティションも発生する。このように、パーティションに区分されたキャッシュにおいて、アクセス頻度が異なる各ボリュームに対する、パーティションの容量の設定の仕方如何で、アクセス頻度の高いデータが必ずしも優先的に格納されないという事態が発生し、キャッシュの使用効率が低下する場合がある。
【００３２】
さらに、キャッシュの使用効率を最大化するパーティションの最適な容量は、
・対応するボリュームに格納されたデータの内容、及び、
・ボリュームにアクセスを行うシステム（例えばホストで実行されるアプリケーション等の種別）、
の組み合わせ如何等によって異なる。また、同一ボリュームにおいても、データの処理内容が変わると、アクセスのパターンが変化する場合がある。
【００３３】
その結果、キャッシュにおけるパーティションの最適容量も、アクセス状況等に応じて変化することになる。キャッシュのパーティションの容量の設定値を固定した場合、アクセス状況等の動的な変化に追従することができず、アクセス性能の低下を招くことになる。
【００３４】
一般にキャッシュのパーティションの容量を最適に維持するためには、
・対応するアクセスの分布を動的に取得し、
・取得した情報から動的に各パーティションの容量を決定する、
必要がある（例えば非特許文献１、２、３）。
【００３５】
キャッシュ上の各パーティションの容量の増減に対するヒット数の変化を推測するには、アクセスの監視（モニタ）、履歴の収集が必要である。
【００３６】
キャッシュ上のパーティションの現在の設定容量Ｃを、ΔＣ減少させた場合のパーティションでのヒット数は、例えば容量減少分ΔＣに対応するヒット数の差分Δｈを、容量Ｃのパーティションでのヒット数ｈから差し引くことで推測することができる。
【００３７】
キャッシュのページ置換アルゴリズムとして、最後に参照されてから最も長い時間が経過したページを追い出すＬＲＵ（Least Recently Used）を用いた例に即して説明する。
【００３８】
ＬＲＵアルゴリズムで制御されるキャッシュでは、キャッシュ（パーティション）が一杯になったとき、最後のアクセスからの経過時刻が長いページほど、置換の優先順位が高く、優先的に、新しいページと置換される。
【００３９】
よって、キャッシュのパーティションの容量が減少した場合、置換の優先順位が高いページは、キャッシュの当該パーティションから追い出され、キャッシュ上には存在しない。置換の優先順位が高いページに含まれるデータに対するアクセスは、パーティションの容量が減少した場合には、ミスとなる。
【００４０】
つまり、キャッシュにおけるページの置換がＬＲＵで管理される場合、置換の優先順位（なお、本明細書では、優先順位を数値化したものを「置換優先度」という）を参照することで、パーティションの容量が減少した場合のヒット数を推測することができる。
【００４１】
一方、キャッシュのパーティションの容量が増加した時のヒット数を推測する場合、パーティション容量の増加によって、キャッシュのミス（パーティション容量を増加する前のミス）がヒットに変化するか（パーティション容量を増加した後にヒットに変化するか）について判定することが必要である。すなわち、キャッシュのパーティションにおいてミスが発生した時に、当該パーティションの容量が増加したと仮定した場合には、ミスではなく、ヒットするものであるか判定を行う必要がある。
【００４２】
ところで、アクセス要求に対してキャッシュミスが発生したということは、アクセス対象のデータはキャッシュ上には存在しない、ということである。キャッシュ上に存在しないデータについて、ヒットの判定を行うためには、キャッシュ上に存在しないデータに関してヒット判定を行うための仕組み（資源）を実装することが必要である。
【００４３】
このように、キャッシュの効率を最大化するように、各パーティションの容量を最適化するためには、余分な資源（ハードウェア、ソフトウェア資源）の実装が必要とされる。
【００４４】
具体的には、キャッシュ上のパーティションの容量の増加に対するヒット数の変化を推測するために、パーティションから置換された各データ（ページ）についても、ヒット判定に使用するアドレス情報を管理する必要がある。例えば上位キャッシュのパーティションから下位キャッシュのパーティションに追い出されたページに関して、下位キャッシュに追い出されたページを、上位キャッシュのパーティションの容量の増加分と看做してヒット判定を行うために、アドレスを管理する必要がある。なお、アクセス対象のデータがキャッシュに存在するか否かの判定（ヒット／ミス判定）は、例えば、アクセス対象のデータのアドレスが、キャッシュに現在格納されているページのアドレス範囲（先頭アドレスとサイズで確定される）にあるか比較することで行われる。
【００４５】
また、データが、現在の設定値よりも大容量のパーティションに格納されている場合を仮定して、キャッシュにおけるページの置換の優先順位情報（置換優先度）を制御する必要がある。
【００４６】
さらに、キャッシュ上の各パーティションの容量の増加に対するヒット数の変化の測定は、アクセス毎に、キャッシュにおける処理（読み出し／複製／更新）の後に、実行する必要がある。このため、アクセス毎にオーバーヘッドが発生する。
【００４７】
ソフトウェアを用いて前記処理（パーティションの容量の増減に対するヒット数の変化の測定処理等）を実現する場合、オーバーヘッドは、レイテンシ（例えば読み出しコマンド入力からデータ出力までの時間）の増加につながる。
【００４８】
本発明の実施形態によれば、必要な資源の増加、オーバーヘッドの増加を抑制しながら、階層キャッシュのパーティション容量を、アクセス特性に応じて、性能を向上させるように動的に決定可能としたものである。  
【００４９】
＜基本構成１＞
図１７を参照すると、ストレージ２（ストレージ装置、システム）は、データを格納する記憶媒体２−１と、
記憶媒体２−１における物理的又は論理的な単位領域（例えばボリューム）に対応する少なくとも１つの中間記憶領域を備えた上位中間記憶機能２−２と、
上位中間記憶機能２−２の前記中間記憶領域（例えばパーティション）に対応する少なくとも１つの中間記憶領域（例えばパーティション）を備えた下位中間記憶機能２−３と、
アクセス要求（Ｒｅａｄ／Ｗｒｉｔｅ）に対して、上位中間記憶機能２−２及び下位中間記憶機能２−３の前記中間記憶領域（パーティション）でのヒット情報に基づき、前記上位中間記憶機能２−２の前記中間記憶領域を増加させた場合と、前記上位中間記憶機能２−２の前記中間記憶領域の容量を減少させた場合の一方又は両方におけるヒット情報を収集する中間記憶アクセス情報収集部２−４と、
中間記憶アクセス情報収集部２−４で収集されたヒットに関する情報に基づき、少なくとも上位中間記憶機能２−２の前記中間記憶領域の容量を決定する中間記憶領域容量決定部２−５とを備える。中間記憶アクセス情報収集機能２−４は、前記アクセス要求に対する前記下位中間記憶機能２−３の前記中間記憶領域（パーティション）でのヒット情報に基づき、前記アクセス要求に対して前記上位中間記憶機能２−２でヒットするのに必要な前記上位中間記憶機能２−２の前記中間記憶領域（パーティション）の容量を算出し、前記上位中間記憶機能２−２において算出された容量の前記中間記憶領域でヒットしたものとして集計する。中間記憶アクセス情報収集部２−４は、前記アクセス要求に対する前記上位中間記憶機能２−２の前記中間記憶領域でのヒット情報に基づき、前記アクセス要求に対して前記上位中間記憶機能２−２でヒットするのに必要な前記上位中間記憶機能２−２の前記中間記憶領域の容量を算出し、前記上位中間記憶機能２−２において前記算出された前記容量の前記中間記憶領域でヒットしたものとして集計する。図１７において、上位中間記憶機能２−２と下位中間記憶機能２−３は、アクセス性能（速度）が記憶媒体２−１よりも高速とされる。上位中間記憶機能２−２と下位中間記憶機能２−３は、同一の記憶装置の異なる記憶領域で構成してもよい。あるいは、上位中間記憶機能２−２と下位中間記憶機能２−３を別々の記憶装置で構成してもよい。この場合、アクセス性能（速度）に関して、上位中間記憶機能２−２が下位中間記憶機能２−３を上回る構成としてもよい。
【００５０】
中間記憶アクセス情報収集部２−４は、上位中間記憶機能２−２上の中間記憶領域（パーティション）でミスし、下位中間記憶機能２−３の対応する中間記憶領域（パーティション）でヒットした場合、下位中間記憶機能２−３の前記中間記憶領域でヒットした箇所（ページ）の情報（例えば置換優先度情報）を用いて、前記アクセス要求に対して上位中間記憶機能２−２の中間記憶機能でヒットするのに必要な中間記憶機能の容量又は容量増加分を算出し、上位中間記憶機能２−２において算出された前記容量、又は前記容量増加分増加させた前記中間記憶領域でのヒットとして集計する。すなわち、上位中間記憶機能２−２の中間記憶機能の容量を、実際には、増加させることなく、上位中間記憶機能２−２の中間記憶領域でのミス時に、下位中間記憶機能２−３の中間記憶領域でのヒット情報に基づき、上位中間記憶機能２−２の中間記憶領域の容量を増加させた場合におけるヒット頻度を算出するようにしてもよい。
【００５１】
中間記憶アクセス情報収集部２−４は、上位中間記憶機能２−２の前記中間記憶領域でヒットした場合、前記上位中間記憶機能２−２の前記中間記憶領域でヒットした箇所（ページ）の情報（置換優先度情報）を用いて、前記アクセス要求に対して前記上位中間記憶機能２−２の前記中間記憶機能でヒットするのに必要な前記中間記憶機能の容量又は容量減少分を算出し、前記上位中間記憶機能２−２において算出された前記容量、又は前記容量減少分減少させた前記中間記憶機能でヒットしたものとして集計するようにしてもよい。
【００５２】
中間記憶領域容量決定部２−５は、上位中間記憶機能２−２におけるヒット頻度がより大となるように、上位中間記憶機能２−２は、中間記憶領域の容量を決定するようにしてもよい。中間記憶領域容量決定部２−５は、上位中間記憶機能２−２の中間記憶領域の容量を決定するとともに、下位中間記憶機能２−３の対応する中間記憶領域の容量を決定するようにしてもよい。
【００５３】
上位中間記憶機能２−２、下位中間記憶機能２−３が、データを格納する１つ又は複数の記憶媒体２−１から、アクセス頻度の高いデータを選択的に格納するための記憶階層であり、データをアクセス頻度に応じて、前記上位中間記憶機能２−２、下位中間記憶機能２−３、及び、記憶媒体２−１に配置するようにしてもよい。
【００５４】
図１７において、Ｒｅａｄアクセス要求に対して、アクセス対象のデータが上位中間記憶機能２−２の中間記憶領域に格納されていれば（ヒット時）、上位中間記憶機能２−２の中間記憶領域から読み出されたデータがＲｅａｄアクセス要求に応答として返される。アクセス対象のデータが上位中間記憶機能２−２の中間記憶領域に格納されていない場合（ミス時）、下位中間記憶機能２−３の対応する中間記憶領域に、アクセス対象のデータが格納されている場合（ヒット時）、下位中間記憶機能２−３から読み出された該データが、上位中間記憶機能２−２の中間記憶領域に書き込まれた上で、上位中間記憶機能２−２からＲｅａｄアクセス要求に応答として返される。下位中間記憶機能２−３の中間記憶領域にアクセス対象のデータが格納されていない場合（ミス）、記憶媒体２−１の対応する単位領域（ボリューム）からデータを読み出し、下位中間記憶機能２−３に書き込んだ上で、上位中間記憶機能２−２を介して、Ｒｅａｄアクセス要求に応答として返される。Ｗｒｉｔｅアクセス要求のＷｒｉｔｅデータは、上位中間記憶機能２−２の中間記憶領域に書き込まれたのち、下位中間記憶機能２−３の対応する中間記憶領域に書き込まれ（ライトバック）、つづいて、記憶媒体２−１の対応する単位領域（ボリューム）に書き込まれる。特に制限されないが、図１７の構成は、上位中間記憶機能２−２の内容を下位中間記憶機能２−３が含む構成（Inclusive型）に適用可能である。
【００５５】
＜基本構成２＞
図１８は、図１７の別の形態を説明するための図である。図１８の基本構成は、図１７と同一であるが、図１７のように、記憶媒体２−１からのＲｅａｄデータ（該データを含むページ）を下位中間記憶機能２−３に一旦格納した上で上位中間記憶機能２−２に格納するのではなく、記憶媒体２−１から読み出したデータ（該データを含むページ）は、上位中間記憶機能２−２にのみ格納され、上位中間記憶機能２−２に格納しきれなくなったデータ（該データを含むページ）が、下位中間記憶機能２−３に格納される。Ｗｒｉｔｅアクセス要求によるＷｒｉｔｅデータは、上位中間記憶機能２−２に格納される。上位中間記憶機能２−２に格納しきれなくなったデータ（該データを含むページ）が下位中間記憶機能２−３に格納される。特に制限されないが、図１８の構成は、上位中間記憶機能２−２の内容が下位中間記憶機能２−３に含まれない（下位中間記憶機能２−３は上位中間記憶機能２−２の内容を含まない）構成（Exclusive型）に適用可能である。
【００５６】
図１７、図１８において、前記上位中間記憶機能２−２と下位中間記憶機能２−３が、階層キャッシュの上位キャッシュ（最上位キャッシュ）（後述する実施形態における図２の２２）と、下位のキャッシュ（後述する実施形態における図２の２３）で構成してもよい。記憶媒体２−１は、後述する実施形態における図２の記憶媒体２１で構成してもよい。中間記憶アクセス情報収集部２−４は、実施形態における図２の容量別ヒット頻度計測部２６で構成してもよい。中間記憶領域容量決定部２−５は、実施形態における図２のパーティション容量決定部２９で構成してもよい。
【００５７】
実施形態においては、それぞれが複数のパーティションに区分された複数階層のキャッシュを備えたストレージにおいて、下位キャッシュにおけるヒット情報を用いて、上位キャッシュにおけるパーティション容量の最適化を行う。
【００５８】
上位キャッシュのパーティションの容量の現在の設定値でヒットした場合、上位キャッシュの当該パーティション内でヒットしたページの置換の優先順位情報を基に、上位キャッシュのパーティションでヒットするためのパーティション容量（最低容量）を推測する。
【００５９】
上位キャッシュのパーティションでミスし、下位キャッシュの対応するパーティションでヒットした場合、下位キャッシュの当該パーティション内でヒットしたページの置換の優先順位情報を基に、上位キャッシュのパーティションでヒットするために必要な最低のパーティション容量（最低容量）を推測する。
【００６０】
上位、下位のキャッシュにおいて、キャッシュの管理単位（ページ）のサイズを共通とする。ページは、予め定められた一定サイズの連続記憶領域である。ページサイズを、複数層のキャッシュ間で共通化することで、階層キャッシュ間におけるページ単位での置換を可能としている。すなわち、例えばＬＲＵに基づき、上位キャッシュのあるページの下位キャッシュへの追い出し、上位キャッシュに新規ページを格納する等、例えば上位、下位キャッシュ間（下位キャッシュ、記憶媒体間）において、ページ単位での置換を可能としている。
【００６１】
特に制限されないが、新規ページの格納は、上位キャッシュに対してのみ行う。下位キャッシュは、上位キャッシュから追い出されたページのデータのみを格納する。
【００６２】
上位、下位キャッシュにおける上記したページ格納方法により、複数階層のキャッシュに格納される新規ページについて、置換の優先順位は、常に同一となる。
【００６３】
さらに、上位キャッシュに格納される新規ページは、データが上位キャッシュのパーティション上に残留している場合、キャッシュの階層構成、及び、階層毎のパーティションの容量によらず、上位キャッシュに、常に同一の置換優先順位で格納される。例えばＬＲＵを使用した場合、新規ページは、上位キャッシュに最低の置換の優先順位で格納される。なお、階層キャッシュの階層数は上位、下位の２層に限定されない。例えば３層以上のキャッシュでは、新規データはページ単位に最上位キャッシュに格納される。
【００６４】
複数階層のキャッシュについて、擬似的に単一のキャッシュと見做してデータを格納した場合に、格納されたデータ（を含むページ）の置換は、各階層のキャッシュの容量の合計に等しい容量を持つ単一のキャッシュにおける置換と、同様とされる。但し、下位のキャッシュは、上位のキャッシュの内容を含まないことが前提とされる。
【００６５】
例えば上位、下位の２階層以上のキャッシュにおいて、各キャッシュにおけるページの置換の優先順位は、各キャッシュの容量の合計容量の単一のキャッシュにおけるページの置換の優先順位と一致する。
【００６６】
＜擬似的単一キャッシュ＞
上位、下位キャッシュを擬似的に単一キャッシュと見做す仕組みについて図１９（Ａ）、図１９（Ｂ）の模式図を参照して説明する。ページ置換のアルゴリズムとしてＬＲＵを用いた場合、あるボリュームに対応する上位キャッシュのパーティションと、下位キャッシュのパーティションは、上位キャッシュのパーティション上のページを置換の優先順位の順に繋いだ線形リストのテイルに、下位キャッシュのパーティション上のページを置換の優先順位の順に線形に繋いだ線形リストのヘッドを、擬似的に結合した単一の線形リストと看做すことができる（図１９（Ａ）、図１９（Ｂ）参照）。
【００６７】
なお、図１９（Ａ）の模式図において、各線形リストのヘッドは、置換の優先順位が最も低いＭＲＵ（Most Recently Used）のページを表し、テイルは置換尾優先順位が最も高いＬＲＵ（Least Recently Used）のページを表す。図１９（Ａ）を参照すると、上位キャッシュ、下位キャッシュのパーティションの複数のページ（パーティションのページ数は、上位キャッシュでは（ｍ＋１）、下位キャッシュでは（ｎ＋１））を、置換の優先順位情報（図１９（Ａ）の各数字は置換優先度を表す）を基に、線形リストにとして模式的に図示されている。キャッシュのページ置換において、置換優先度の値が大きいほど、優先的に追い出されるようにした例が示されている。上位キャッシュのパーティションのページ置換において、上位キャッシュの線形リストのテイルにある置換優先順位が最も高いページ（図１９のｍ）が真っ先に追い出され、下位キャッシュの線形リストのヘッドに挿入される。下位キャッシュのパーティションの線形リストのテイルにあるページ（図１９（Ａ）の置換優先度ｎ）は追い出される。新規データを含むページ（新規ページ）は、上位キャッシュのパーティションの線形リストのヘッド（置換優先順位が最も低い：最後に置換される）に挿入される。新規ページの挿入に伴い、上位キャッシュの線形リストにおいて、ページ置換前の元のページは１つ右にシフトし、置換優先度は適宜更新される。また、下位キャッシュの線形リストにおいて、元のページは１つ右にシフトし、その置換優先度も適宜更新される。
【００６８】
図１９（Ｂ）は、図１９（Ａ）と同様、上位キャッシュ、下位キャッシュのパーティションの複数のページ（上位キャッシュではｍ＋１枚のページ、下位キャッシュではｎ＋１枚のページ）を、置換の優先順位情報を基に、線形リストにとして模式的に図示したものであるが、図１９（Ａ）とは異なり、キャッシュのページ置換において、置換優先度の値が小さいほど優先的に追い出される（置換優先度０は最優先で追い出される）ようにした例を説明する図である。図１９（Ｂ）において、各線形リストのヘッドは、図１９（Ａ）と同様に、置換の優先順位が最も低いＭＲＵ（Most Recently Used）のページを表し、テイルは置換尾優先順位が最も高いＬＲＵ（Least Recently Used）のページを表す。上位キャッシュのパーティションのページ置換において、上位キャッシュの線形リストのテイルにある置換優先順位の最も高いページ（図１９（Ｂ）の置換優先度＝０のページ）が追い出され、下位キャッシュの線形リストのヘッドに挿入される。新規データを含むページ（新規ページ）が上位キャッシュのパーティションの線形リストのヘッド（置換優先順位が最も低い）に挿入される。また、下位キャッシュのパーティションの線形リストのテイルにあるページ（図１９（Ｂ）の置換優先度０）は追い出される。上位キャッシュの線形リストにおいてページ置換前の元のページは右に１つシフトし、それぞれの置換優先度は適宜更新され、また下位キャッシュの線形リストにおいて、元のページは右に１つシフトし、それぞれの置換優先度も適宜更新される。
【００６９】
下位キャッシュのパーティションは、パーティション容量が増加した上位キャッシュのパーティションの領域と看做すことができる。上位キャッシュのパーティションの容量を増加させてヒット数を計測する時に、上位キャッシュのパーティションの容量増加分の記憶領域は、下位キャッシュの対応するパーティションにおける、前記容量増加分の記憶領域で賄われる。下位キャッシュのパーティションにおける前記記憶領域でのヒット数が、上位キャッシュのパーティションにおいて容量を前記容量増加分増加させた領域でのヒット数として集計される。例えば、下位キャッシュでヒットしたページの置換優先度情報から、上位キャッシュにおいて、パーティション容量を増加させた時のヒット数を測定（推測）することができる。
【００７０】
＜上位キャッシュのパーティション容量増減時のヒット情報の算出＞
例えば図１９（Ａ）において、上位キャッシュのパーティションでミスであるが、下位キャッシュの対応するパーティションでヒットした場合、下位キャッシュでヒットしたページの置換優先度がＲの場合（ただし、Ｒは０≦Ｒ≦ｎの非負整数）、１ページのサイズ（容量）をＰとすると、上位キャッシュの当該パーティションの容量が現在の設定値よりも少なくとも、（Ｒ＋１）×Ｐ分増加していれば、アクセス対象のデータは、上位キャッシュの当該パーティションでヒットしていたはずである。すなわち、上位キャッシュのパーティションでミスし、下位キャッシュの対応するパーティションでヒットした場合、上位キャッシュにおいて、容量を、現在の設定値から、（Ｒ＋１）×Ｐ分、増加させた容量とした場合の当該パーティションでのヒットとして集計する。なお、図１９（Ａ）において、前述したように、各線形リストのヘッドは、置換の優先順位が最も低いＭＲＵのページを表し、テイルは置換尾優先順位が最も高いＬＲＵのページを表す。
【００７１】
一方、図１９（Ａ）において、上位キャッシュのパーティションでヒットし、ヒットしたページの置換優先度がＲの場合（０≦Ｒ≦ｍ）、上位キャッシュのパーティションの容量が少なくとも（Ｒ＋１）×Ｐあれば、ヒットしていたはずである。この場合、上位キャッシュのパーティション容量を（Ｒ＋１）×Ｐとした場合における、上位キャッシュでのヒットとして集計する。
【００７２】
また図１９（Ｂ）において、上位キャッシュのパーティションでミスであるが、下位キャッシュの対応するパーティションでヒットした場合、ヒットしたページの置換優先度がＲの場合（０≦Ｒ≦ｎ；ただし、（ｎ＋１）×Ｐ＝下位パーティション容量Ｄ）、１ページのサイズ（容量）をＰとすると、上位キャッシュのパーティションの容量が現在の値から、下位キャッシュのパーティション容量Ｄから、Ｒ×Ｐ差し引いたＤ−Ｒ×Ｐ分、増加していれば、上位キャッシュの該パーティションでヒットしていたはずである。すなわち、上位キャッシュのパーティションでミスし、下位キャッシュの対応するパーティションでヒットした場合、上位キャッシュのパーティションの容量に対して、Ｄ−Ｒ×Ｐ分増加した場合における上位キャッシュでのヒットとして集計する。なお、なお、図１９（Ｂ）において、前述したように、各線形リストのヘッドは、置換の優先順位が最も低いＭＲＵのページを表し、テイルは置換尾優先順位が最も高いＬＲＵのページを表す。
【００７３】
一方、図１９（Ｂ）において、上位キャッシュのパーティションでヒットし、ヒットしたページの置換優先度がＲの場合（０≦Ｒ≦ｍ）、上位キャッシュのパーティションの容量は現在の設定値Ｃから、Ｒ×Ｐ分差し引いた容量があれば、ヒットしていたはずである。この場合、上位キャッシュのパーティションの容量をＣからＲ×Ｐ分減少した場合の上位キャッシュでのヒットとして計測する。
【００７４】
上位キャッシュのパーティションにおいて、線形リスト（図１９（Ａ）、（Ｂ））上のあるページでヒットした場合、当該ページは、例えば線形リストのＭＲＵの位置（ヘッド）に再配置される。また、上位キャッシュのパーティションにおいてミスし、下位キャッシュのパーティションの線形リスト上のあるページでヒットした場合、下位キャッシュの当該ページは、上位キャッシュのパーティションの線形リストのＭＲＵの位置（ヘッド）に繋ぎ替えるようにしてもよい。なお、ＬＲＵにおける時間ステップ（最後にアクセスされてから未使用時間を計時する時間の単位）を粗くする等して、キャッシュ上のページの置換優先度が、同一値を持つ構成であってもよいことは勿論である。
【００７５】
このように、実際には、上位キャッシュのパーティション容量を増加させていない状況下で、上位キャッシュのパーティションでミス、下位キャッシュの対応するパーティションでのヒットを、上位キャッシュの当該パーティション容量を増加させた場合におけるヒットに対応させる。
【００７６】
＜実施形態の概要＞
図１８（又は図１７）の基本構成において、上位中間記憶機能２−２と下位中間記憶機能２−３を、それぞれ上位キャッシュと下位キャッシュで構成し、中間記憶アクセス情報収集部２−４を、容量別ヒット頻度計測部で構成し、中間記憶領域容量決定部２−５を、パーティション容量決定部として実装した例について以下に説明する。図２を参照すると、ストレージ２（ストレージ装置）は、
データを格納する記憶媒体２１と、
記憶媒体２１上のデータのうちアクセス頻度の高いデータの複製又は更新結果を一時的に保持する上位キャッシュ２２、及び、下位キャッシュ２３と、
ストレージ２内の各種制御情報、管理情報を格納するための作業メモリ２４と、
上位キャッシュのパーティション容量増減時のヒットの頻度を計測する容量別ヒット頻度計測部２６と、
キャッシュ上のデータの置換優先順位を制御し、キャッシュ上のデータの置換、階層間のデータ配置を決定するページ配置部２７と、
上位キャッシュの各パーティションの容量を決定するパーティション容量決定部２９と、を備える。
【００７７】
具体的には、ストレージの全データを格納する記憶媒体２１として、例えばＨＤＤまたはＮＡＮＤフラッシュメモリ等で構成されたＳＳＤが用いられる。記憶媒体２１は、単体または複数から構成される。
【００７８】
上位キャッシュ２２及び下位キャッシュ２３は、記憶媒体２１に格納されたデータのうち、アクセス頻度の高いデータの複製または更新を格納する。上位キャッシュ２２は、下位キャッシュ２３に対して、よりアクセス頻度の高いデータに対する複製または更新を格納する。
【００７９】
作業メモリ２４は、ストレージの管理、制御に必要な情報を格納する。作業メモリ２４に格納される情報として、例えば、
・記憶媒体の構成情報、
・ストレージ内で定義されたボリュームの情報、
・キャッシュ上の各ページの管理情報（「ディレクトリ情報」という）、
・ボリュームに対応する上位キャッシュ及び下位キャッシュ上のパーティションの管理情報、
・ストレージ外部から受理した処理中のアクセス要求の管理情報、
が含まれる。
【００８０】
容量別ヒット頻度計測部２６は、ヒットしたページの置換優先度から、上位キャッシュのパーティション容量増減時のヒット頻度を計測する。
【００８１】
容量別ヒット頻度計測部２６は、上位キャッシュ２２又は下位キャッシュ２３でヒットしたページの置換優先度の情報から、上位キャッシュ２２上に定義されたパーティションの容量が任意に増減した場合に、前記ヒットした当該ページが上位キャッシュ２２でヒットするか否か判定する。そして、容量別ヒット頻度計測部２６は、上位キャッシュ２２上のパーティションの容量別にヒット頻度を計測する。
【００８２】
あるアクセスが上位キャッシュ２２でミスし、下位キャッシュ２３でヒットした場合、ヒットしたページの置換優先度が、例えば最低（例えば０）の場合（直前に上位キャッシュ２２から追い出されたページは最低の置換優先度を持つ）、該ページの容量分、上位キャッシュ２２のパーティションの容量が増加していれば、該アクセスに対して、上位キャッシュ２２の当該パーティションの増加した当該ページでヒットしたことになるので、上位キャッシュ２２上の当該パーティションにおいて容量増加分に対応する、容量別のヒット数を１つ増やす。
【００８３】
ページ配置部２７は、上位、下位キャッシュ２２、２３上のページの置換優先度を制御して、上位、下位キャッシュ２２、２３のデータの置換、上位、下位キャッシュ２２、２３の階層間でのデータ配置を決定する。またページ配置部２７は、決定したデータ配置に従って上位キャッシュ２２、下位キャッシュ２３の各ページ及び記憶媒体２１へのデータ格納、上位キャッシュ２２、下位キャッシュ２３、記憶媒体２１間のデータの移動、更新を行う。
【００８４】
パーティション容量決定部２９は、複数のパーティションに区分された上位キャッシュ２２の各パーティションの容量を決定する。パーティション容量決定部２９は、ヒット数（ヒット頻度）を参照して、ストレージ全体の性能が最大になるように、上位キャッシュ２２の各パーティションの容量を決定する。その際、パーティション容量決定部２９は、容量別ヒット頻度計測部２６によって得られた上位キャッシュ２２の各パーティションの容量が任意に変化した場合におけるパーティションの容量別のヒット頻度を参照して、性能が最大になるように、上位キャッシュ２２のパーティションの容量を決定する。本実施形態によれば、上位キャッシュにおいて、アクセス頻度の高いボリュームに対応する１つ又は複数のパーティションのアクセス性能を最大化するように、パーティションの容量を設定するようにしてもよい。その際、パーティション間のアクセス性能の均一化を目指すのではなく（ただし、均一化を目指すことも可能）、アクセス頻度の低いボリュームに対応する１つ又は複数のパーティションのアクセス性能の向上は敢えて行わず、最速の性能が求められる１つ又は複数のパーティションに限定してパーティション容量の最適設定（ピーク性能の最大化）を行うようにしてもよい。
【００８５】
実施形態によれば、上位キャッシュにおけるパーティションの容量を最適化し、パーティションでのヒット率の向上を図り、キャッシュ性能を最大化することで、アクセス性能の向上を実現する。
【００８６】
またストレージの上位キャッシュ上に確保された各パーティションについて、限られた容量の範囲内で、性能を最大化する最適なパーティション容量値を動的に算出する。これにより、
・時間の経過、
・動作するアプリケーションの違いによる、ストレージに対するアクセスパターン、負荷の変化、等に動的に対応可能としている。
【００８７】
下位キャッシュ２３でのヒット状況の測定から、上位キャッシュ２２のパーティション容量を動的に最適化可能としたことで、必要な資源の増大を抑制し、パーティションの容量最適化のための上位キャッシュ２２にけるオーバーヘッドの増大を抑え、制御、管理のコストの削減を可能としている。以下、図面を参照して、実施形態の具体例に即して説明する。
【００８８】
＜システム構成＞
図１は、実施形態１の構成の一例を例示する図である。図１を参照すると、システムは、データにアクセスする１台以上のホスト１、単体又は複数の記憶媒体から構成されるストレージ２、ホスト１、ストレージ２を接続するネットワーク３を含む。
【００８９】
ネットワーク３は、ストレージ２に対して複数のホスト１が接続可能な形態のみならず、ホスト１とストレージ２が直接接続される形態であってもよい。またストレージ２はネットワーク３によって接続された複数の装置、あるいはシステムによって構成されてもよい。
【００９０】
＜ストレージの構成＞
図２は、ストレージ２の構成例を例示する図である。図２を参照すると、ストレージ２は、記憶媒体２１と、上位キャッシュ２２と、下位キャッシュ２３と、作業メモリ２４と、アクセス要求処理部２５と、容量別ヒット頻度計測部２６と、ページ配置部２７と、データアクセス部２８と、パーティション容量決定部２９と、を備えている。ストレージ２に記録されたデータを格納する記憶媒体２１、下位キャッシュ２３、上位キャッシュ２２は、記憶階層を構成する。下位キャッシュ２３、上位キャッシュ２２は階層キャッシュを構成する。なお、図２では、下位キャッシュ２３、上位キャッシュ２２の２階層とされているが、３階層又はそれ以上の階層であってもよいことは勿論である。なお、３階層以上のキャッシュ構成の場合、例えば上位キャッシュを最上位キャッシュ、下位キャッシュを、最上位の１つ下の階層のキャッシュ等と読み替えることで、本発明をそのまま適用することができる。
【００９１】
図２において、アクセス要求処理部２５、容量別ヒット頻度計測部２６、ページ配置部２７、データアクセス部２８、パーティション容量決定部２９は、ストレージ２を構成するコンピュータ（プロセッサ）で実行されるプログラムによりその機能・処理を実現するようにしてもよい。またプログラムを記録する不揮発性半導体メモリデバイス、磁気ディスク、光ディスク等の記録媒体が提供される。これらの記録媒体とストレージ２を構成するコンピュータ（プロセッサ）との接続、読み出し制御等は当業者には明らかであるため、説明は省略する。
【００９２】
図３は、記憶媒体２１、上位キャッシュ２２、及び下位キャッシュ２３の構成を例示する図である。図２、図３を参照して、記憶媒体２１、上位キャッシュ２２、及び下位キャッシュ２３について説明する。
【００９３】
＜記憶媒体＞
記憶媒体２１は、ストレージ２の記憶領域全体のデータを格納し、例えばＨＤＤ又はＮＡＮＤフラッシュ等で構成されたＳＳＤのような単体又は複数の記憶媒体から構成される。ボリューム２１１は、記憶媒体２１の記憶領域上に格納される。
【００９４】
＜上位キャッシュ＞
上位キャッシュ２２は、上位ページ格納部２２１と、上位ヒット判定部２２２を含む。上位ページ格納部２２１は、上位キャッシュ２２上のデータをページ単位で格納する。上位ページ格納部２２１は、記憶媒体２１上の各ボリューム２１１に対応したデータを格納する複数の上位パーティション２２１１を備えている。
【００９５】
上位ヒット判定部２２２は、上位キャッシュ２２へのデータアクセス部２８からのデータの読み出し要求、書き込み要求に対して、作業メモリ２４に格納された上位ディレクトリ情報（後に説明される図５Ａの２４２）を参照し、該当パーティションに、ヒットするページが存在するとき、
・読み出し（Ｒｅａｄ）アクセスの場合、ヒットしたページの内容をデータアクセス部２８に返し、
・書き込み（Ｗｒｉｔｅ）アクセスの場合、ヒットしたページに、データアクセス部２８から受けとったデータを格納する。
【００９６】
上位ヒット判定部２２２は、上位キャッシュ２２の該当パーティションに、ヒットするページが存在しない場合（ミスの場合）、データアクセス部２８に対して、ヒットするページが存在しなかったことを通知する。
【００９７】
＜下位キャッシュ＞
下位キャッシュ２３は、下位ページ格納部２３１と、下位ヒット判定部２３２を含む。下位ページ格納部２３１は、下位キャッシュ２３上のデータをページ単位で格納する。下位ページ格納部２３１は、記憶媒体２１上の各ボリューム２１１に対応したデータを格納可能な複数の下位パーティション２３１１を備えている。
【００９８】
下位ヒット判定部２３２は、下位キャッシュ２３へのデータアクセス部２８からのデータの読み出し要求、書き込み要求に対して、作業メモリ２４に格納された下位ディレクトリ情報（図５Ｂの２４３）を参照し、上位キャッシュ２２における上位ヒット判定部２２２と同様の動作を行う。すなわち、下位ヒット判定部２３２は、下位キャッシュ２３の該当パーティションに、ヒットするページが存在するとき、
・読み出し（Ｒｅａｄ）アクセスの場合、ヒットしたページの内容をデータアクセス部２８に返し、
・書き込み（Ｗｒｉｔｅ）アクセスの場合、ヒットしたページに、データアクセス部２８から受けとったデータを格納する。下位ヒット判定部２３２は、下位キャッシュ２３の該当パーティションに、ヒットするページが存在しない場合（ミスの場合）、データアクセス部２８に対して、ヒットするページが存在しなかったことを通知する。
【００９９】
＜作業メモリ＞
作業メモリ２４は、ストレージ２全体の管理、制御に必要な各種情報を格納する。作業メモリ２４は、上位キャッシュ２２と独立した構成以外に、例えばＤＲＡＭ等で構成されたメモリ上に上位キャッシュ２２と作業メモリ２４の全て又は一部が共存する構成であってもよい。
【０１００】
＜アクセス要求処理部＞
図２のアクセス要求処理部２５は、ストレージ２がホスト１から受理したアクセス要求を解釈し、アクセス要求に従った処理を行い、処理結果をアクセス要求元のホスト１に返す。
【０１０１】
まず、アクセス要求処理部２５は、解釈したアクセス要求の情報（Ｒｅａｄ／Ｗｒｉｔｅの別、アクセス対象のデータのアドレス、アクセス長等）を、作業メモリ２４上のアクセス要求テーブル（図８の２４６）に登録する。その後、アクセス要求処理部２５は、解釈したアクセス要求に従って、データアクセス部２８を介して記憶媒体２１、上位キャッシュ２２、下位キャッシュ２３の順番にアクセスを行う。アクセス要求処理部２５は、アクセス要求がＲｅａｄであれば、読み出しデータをホスト１に返す。アクセス要求がＷｒｉｔｅであれば、アクセス要求処理部２５は、書き込みの完了を通知する。アクセス要求処理部２５は、アクセス処理終了に伴い、作業メモリ２４上のアクセス要求テーブル（図８の２４６）に登録されている、完了したアクセス要求の情報を削除する。
【０１０２】
＜容量別ヒット頻度計測部＞
容量別ヒット頻度計測部２６は、上位キャッシュ２２と下位キャッシュ２３へのアクセスを監視する。容量別ヒット頻度計測部２６は、上位キャッシュ２２又は下位キャッシュ２３の各パーティション内でヒットしたページについて、置換優先度の情報を作業メモリ２４上の上位ディレクトリ情報（図５Ａの２４２）、又は、下位ディレクトリ情報（図５Ｂの２４３）から取得する。
【０１０３】
容量別ヒット頻度計測部２６は、置換優先度の情報から、ヒットしたページが含まれるボリューム２１１に対応する上位キャッシュ２２上の上位パーティション２２１１について、その容量が増減した場合に、上位キャッシュ２２上の上位パーティション２２１１において、当該ページがヒットするために必要な最低容量を求める。
【０１０４】
例えば、上位キャッシュ２２上の上位パーティション２２１１でミス時、下位キャッシュ２３の対応する下位パーティション２３１１でヒットしたページの置換優先度が例えば最低の場合、該ページ（図１９（Ａ）の下位キャッシュのパーティションの線形リストのヘッドの置換優先度が０のページに対応）は、最も最近使用されたページ（一例として上位パーティション２２１１から直前に下位パーティション２３１１に追い出されたページ）であり、上位パーティション２２１１が該ページを含む容量であれば、上位パーティション２２１１でヒットしているはずである。したがって、上位パーティション２２１１上において当該ページでヒットするために必要な最低容量は、上位パーティション２２１１の現在の設定容量に対して当該ページ分増加した値となる。同様にして、上位キャッシュ２２上の上位パーティション２２１１でミス時、下位キャッシュ２３の対応する下位パーティション２３１１でヒットしたページの置換優先度が例えば最低値（０）よりも１単位分の上の場合（図１９（Ａ）の下位キャッシュのパーティションの線形リストにおいて置換優先度が１のページ）、該ページは、最も最近使用されたページ（置換優先度０）よりも１つ前の時間単位で使用されたページであり、置換優先度０と１の２つのページを合わせた容量を、上位パーティション２２１１の現在の設定容量に加算した値が、上位パーティション２２１１においてヒットするための必要な最低容量となる。
【０１０５】
容量別ヒット頻度計測部２６は、上の容量別ヒット頻度テーブル（図７の２４５）の該当するボリュームＩＤ（パーティションに対応）の該当する容量欄のヒット頻度を１つ加算する(increment)。図７の例では、容量別ヒット頻度テーブル２４５は、２５６ＭＢ（megabyte）単位に０〜１２８０ＭＢまでの５カラムを有するが、これらの数値は、あくまで一例を示したものであり、図７の容量別ヒット頻度テーブル２４５において、容量別の単位は２５６MBに限定されるものでなく、またカラム数は５に限定されるものでないことは勿論である。
【０１０６】
また、上位パーティション２２１１、下位パーティション２３１１でともにミスであった場合、容量別ヒット頻度計測部２６は、容量別ヒット頻度テーブル（図７の２４５）に格納されたボリューム毎のミス頻度の欄の値を１つ加算する。
【０１０７】
＜ページ配置部＞
ページ配置部２７は、
・作業メモリ２４に格納された上位ディレクトリ情報２４２、下位ディレクトリ情報２４３（図５Ａ、図５Ｂ）に含まれる各ページの置換優先度の情報、及び、
・パーティションテーブル（図６の２４４）に含まれるパーティションの容量（ページ数の情報）、
を参照して、上位キャッシュ２２、及び下位キャッシュ２３から置換によって移動、削除するページを決定する。
【０１０８】
ページ配置部２７は、決定した結果に基づき、データアクセス部２８を介して、
・新規ページの上位キャッシュ２２への格納、
・ページの置換に伴い、上位キャッシュ２２、下位キャッシュ２３の間で発生するページの移動、
・下位キャッシュ２３において更新済みのページが削除される場合であって、更新ページがライトバックされていない場合、当該ページの内容を記憶媒体２１に格納、
等を行う。
【０１０９】
＜データアクセス部＞
データアクセス部２８は、アクセス要求処理部２５、及びページ配置部２７の指示により、記憶媒体２１、上位キャッシュ２２、及び下位キャッシュ２３の間でデータをページ単位で、
・読み出し、又は書き込み、
・コピー、
・移動、
・更新の反映
を行う。
【０１１０】
＜パーティション容量決定部＞
パーティション容量決定部２９は、作業メモリ２４上のマッピング情報２４１、及び、容量別ヒット頻度計測部２６によって格納された容量別ヒット頻度テーブル２４５を参照して、各ボリューム２１１に対応する上位キャッシュ２２上に設定された上位パーティション２２１１の容量を決定する。
【０１１１】
パーティション容量決定部２９は、上位パーティション２２１１の容量の決定にあたり、例えば、上位キャッシュ２２によるアクセス性能高速化の効果を最大化するように、各ボリューム２１１に対応する上位パーティション２２１１における、ヒット頻度の合計が、最大になるように決定する。
【０１１２】
パーティション容量決定部２９は、決定した各上位パーティション２２１１の容量を作業メモリ２４上の容量別ヒット頻度テーブル（図７の２４５）に格納する。
【０１１３】
＜作業メモリ２４＞
図２、図３の作業メモリ２４に格納される各情報について説明をする。
【０１１４】
作業メモリ２４には、
・マッピング情報２４１（図４）と、
・上位ディレクトリ情報２４２（図５Ａ）と、
・下位ディレクトリ情報２４３（図５Ｂ）と、
・パーティションテーブル２４４（図６）と、
・容量別ヒット頻度テーブル２４５（図７）と、
・アクセス要求テーブル２４６（図８）と、
が格納される。
【０１１５】
＜マッピング情報＞
図４を参照すると、マッピング情報２４１は、記憶媒体２１によって構成される記憶領域内に定義されたボリューム（Volume  ID）に対して、
・ボリューム２１１における記憶領域（容量）、
・記憶媒体２１へのマッピング情報を記録する。
【０１１６】
＜ディレクトリ情報＞
図５Ａの上位ディレクトリ情報２４２は、ボリューム２１１のＩＤに対して、上位キャッシュの各ページに関するディレクトリ情報を記憶する。Ｖｏｌｕｍｅ  ＩＤ、ページアドレス、上位キャッシュ内格納先アドレス、更新フラグ、置換優先度を一エントリとして含む。図５Ｂの下位ディレクトリ情報２４３は、ボリューム２１１のＩＤに対して、下位キャッシュの各ページに関するディレクトリ情報を記憶する。Ｖｏｌｕｍｅ  ＩＤ、ページアドレス、下位キャッシュ内格納先アドレス、更新フラグ、置換優先度を一エントリとして含む。特に制限されないが、置換優先度は、例えば値０が、最も置換優先度が低い（キャッシュに最も優先的に滞在する）ものとし、値が大きくなるに従い、置換優先度が高くなるものとする。
【０１１７】
＜パーティションテーブル＞
図６は、パーティションテーブル２４４の一例を例示する図である。図６を参照すると、パーティションテーブル２４４は、ボリューム２１１のＩＤに対して、上位キャッシュ２２及び下位キャッシュ２３上のパーティションの容量の対応を記録する。ＩＤ１の上位キャッシュ２２上のパーティション（ボリュームＩＤ１の占有領域）、下位キャッシュ２３上のパーティション（ボリュームＩＤ１の占有領域）の容量は、それぞれ１ＧＢ（Gigabyte）、１０ＧＢである。上位キャッシュ２２及び下位キャッシュ２３上のパーティションは、上位キャッシュ２２及び下位キャッシュ２３において連続記憶領域を指すものではなく（ページは連続記憶領域）、複数のページの合計である。
【０１１８】
＜容量別ヒット頻度テーブル＞
図７は、容量別ヒット頻度テーブル２４５の一例を例示する図である。図７を参照すると、容量別ヒット頻度テーブル２４５は、各ボリューム２１１に対応した上位キャッシュ２２上の上位パーティション２２１１の容量増減時の、容量毎のヒット頻度の増減量を記録する。各ボリューム２１１について、上位キャッシュ２２、下位キャッシュ２３が共にミスとなった頻度を記録する。なお、容量別ヒット頻度テーブル２４５は、図７のように、容量毎のヒット頻度の増減量を記録する以外に、上位キャッシュの容量が、各容量に増減した場合に、ヒットとなる全アクセスの頻度を記録しても良い。特に制限されないが、図７の例では、容量別ヒット頻度テーブル２４５は、ボリュームＩＤに関して、容量は、２５６ＭＢ単位で増加し１２８０ＭＢまで５つのカラムを備え、各容量でのヒット頻度情報が記録され、最後のカラムにミス頻度が格納されるテーブル形式とされる。なお、容量別ヒット頻度テーブル２４５のテーブル形式（容量の単位、カラム数等）、は、図７の構成に限定されるものでないことは勿論である。
【０１１９】
＜アクセス要求テーブル＞
図８は、アクセス要求テーブル２４６の一例を例示する図である。図８を参照すると、アクセス要求テーブル２４６は、ホスト１からストレージ２に対するアクセス要求の情報をアクセス処理が終了し、ホスト１への応答が完了するまで記録する。アクセスＩＤ欄と、アクセスの種別（Ｒｅａｄ／Ｗｒｉｔｅ）、アクセス先の先頭アドレス（読み出し又は書き込みの先頭アドレス）、アクセス長（読み出し又は書き込みのデータサイズ）、アクセス要求を発行したホスト名、該要求に対応するコマンドのＩＤからなる。特に制限されないが、アクセス先の先頭アドレスとアクセス長はバイト単位の他に例えばブロック単位などとしてもよい。
【０１２０】
＜全体の動作＞
次に、実施形態１の動作について説明する。全体の動作は、
・アクセス要求の処理中に行われるヒット頻度の計測処理と、
・ヒット頻度の計測の実現に必要な記憶階層（上位キャッシュ２２、下位キャッシュ２３、記憶媒体２１）間のページ配置処理と、
・上位パーティション２２１１の容量の決定処理、
の３段階の処理で行われ、前記一連の３段階の処理を、１回又は複数回繰り返して行う。
【０１２１】
ヒット頻度の計測が行われる、Ｒｅａｄアクセス又はＷｒｉｔｅアクセス要求処理を行う動作ついて、図９の流れ図、図２乃至図５Ａ、図５Ｂ、図８を参照して説明する。
【０１２２】
ホスト１からストレージ２に対してアクセス要求が行われると、アクセス要求処理部２５が、アクセス要求を解釈し、結果を、作業メモリ２４上のアクセス要求テーブル２４６に登録する（ステップＳ１１）。
【０１２３】
アクセス要求処理部２５は、作業メモリ２４に格納されたマッピング情報２４１（図４）を参照して、アクセス要求先のボリュームＩＤ、及び、ボリューム内のアドレスを計算する（ステップＳ１２）。
【０１２４】
アクセス要求処理部２５は、データアクセス部２８に対して、ステップＳ１２で計算したアクセス要求先のボリュームＩＤ、及びボリューム内のアドレスへのアクセスを指示する（ステップＳ１３）。
【０１２５】
データアクセス部２８は、記憶媒体２１、上位キャッシュ２２、下位キャッシュ２３のいずれかの記憶階層に対してアクセスを行う。データアクセス部２８は、アクセス要求処理部２５から受け取ったアクセス先ボリュームＩＤ及びアドレスに対応したページへのアクセスを実行する（ステップＳ１４）。
【０１２６】
データアクセス部２８は、ステップＳ１４におけるアクセス先を、ページ配置部２７に通知する。ページ配置部２７は、受け取ったアクセス先の情報をもとに、作業メモリ２４に格納された上位ディレクトリ情報２４２（図５Ａ）、又は下位ディレクトリ情報２４３（図５Ｂ）に格納されたページの置換優先度情報を更新し、記憶階層間のページの移動を行う（ステップＳ１５）。
【０１２７】
データアクセス部２８は、ステップＳ１３で指示したＲｅａｄアクセスの結果、又はＷｒｉｔｅアクセスの完了通知を、アクセス要求処理部２５に送る。ホスト１からのアクセス要求がＲｅａｄの場合、アクセス要求処理部２５は、Ｒｅａｄアクセス要求の結果であるＲｅａｄデータをアクセス要求元のホスト１に対して返す。ホスト１からのアクセス要求がＷｒｉｔｅの場合、アクセス要求処理部２５は、Ｗｒｉｔｅアクセスの完了通知をアクセス要求元のホスト１に対して返す。アクセス要求処理部２５は、作業メモリ２４上のアクセス要求テーブル２４６（図８）に記録された前記アクセス要求の情報を削除してアクセス処理を終了する（ステップＳ１６）。
【０１２８】
以上のステップＳ１１からＳ１６までの処理を行い、ヒット頻度の計測が行われる、Ｒｅａｄアクセス又はＷｒｉｔｅアクセス要求処理を行う動作が完了する。
【０１２９】
＜ヒット頻度の計測動作＞
次に、図１０Ａ、図１０Ｂの流れ図と、図２乃至図６を参照して、アクセス処理内でヒット頻度の計測を行うステップＳ１４の詳細な動作について説明する。
【０１３０】
データアクセス部２８は、アクセス要求処理部２５からＲｅａｄ要求を受け取ると、アクセス先ボリュームＩＤ、及びアドレスを用いて、上位キャッシュ２２に対して、受け取ったアドレスに対応したページの格納の有無（ヒット／ミス）を問い合わせる（図１０ＡのステップＳ２０１）。
【０１３１】
上位キャッシュ２２の上位ヒット判定部２２２は、作業メモリ２４に格納された上位ディレクトリ情報２４２（図５Ａ）を参照して、問い合わせが行われたページが格納されている場合（図１０ＡのステップＳ２０２のＹｅｓ判定）、上位キャッシュ２２におけるヒットを、アクセス先ボリュームＩＤと、上位ディレクトリ情報２４２（図５Ａ）に格納されたヒットしたページの置換優先度と共に、容量別ヒット頻度計測部２６に通知する（図１０ＡのステップＳ２０３）。
【０１３２】
容量別ヒット頻度計測部２６は、ステップＳ２０３で、上位キャッシュ２２から通知されたアクセス先ボリュームＩＤから、作業メモリ２４に格納されたパーティションテーブル２４４（図６）を参照し、ヒットしたページが含まれるボリューム２１１に対応した上位パーティション２２１１の容量を取得する（図１０ＡのステップＳ２０４）。
【０１３３】
容量別ヒット頻度計測部２６は、
・ステップＳ２０３で通知されたヒットしたページの置換優先度と、
・ステップＳ２０４で取得した上位パーティション２２１１の容量
から、前記ページが、上位キャッシュ２２でヒットするために必要な最低限の容量を算出する。
【０１３４】
ヒットしたページの置換優先度をＲ、ページ容量をＰ、上位パーティション２２１１の容量（現在の設定値）をＣとする。
【０１３５】
一例として、置換優先度Ｒを０から順番に優先度が高いものと定義すると（非負整数の置換優先度Ｒの値が小さいほど優先的に追い出され、０が最優先で追い出される：図１９（Ｂ）参照）、上位キャッシュ２２の上位パーティション２２１１でヒットするための最低容量は次式（１）で計算される。
【０１３６】
Ｃ−Ｒ×Ｐ          ・・・（１）
【０１３７】
式（１）で算出されるパーティション容量は、上位パーティション２２１１の現在の容量Ｃ以下である。ヒットしたページの置換優先度Ｒが０の場合、上位パーティション２２１１の最低容量は現在の設定値Ｃのままとされる。
【０１３８】
容量別ヒット頻度計測部２６は、
・算出したパーティション容量、及び
・ボリュームＩＤに該当する作業メモリ２４に格納された容量別ヒット頻度テーブル２４５（図７）のヒット頻度を加算する（図１０ＡのステップＳ２０５）。
【０１３９】
ステップＳ２０４では、
容量別ヒット頻度計測部２６は、
上位パーティション２２１１のパーティション容量を取得し、
ステップＳ２０５におけるパーティション容量の算出に用いる。
【０１４０】
置換優先度Ｒの別の付与の仕方として、置換の優先順位が最低のものを０として、優先的に置換されるページほど順位が下がる（置換優先度Ｒが大きいほど優先的に追い出される：図１９（Ａ）参照）ことを仮定した場合、ページの置換優先度をＲ、ページ容量をＰとして、上位キャッシュ２２の上位パーティション２２１１でヒットするための最低容量は、次式（２）で表される。
【０１４１】
（Ｒ＋１）×Ｐ            ・・・（２）
【０１４２】
ヒットしたページの置換優先度Ｒが０の場合、上位パーティション２２１１でヒットするための最低容量はＰとされる。また、上位パーティション２２１１の現在の設定容量値が（ｍ＋１）×Ｐであり、ヒットしたページの置換優先度Ｒがｍの場合、上位パーティション２２１１の最低容量は現在の設定値のままとされる。このように置換優先度Ｒを付与する場合、ステップＳ２０４の処理（ヒットしたページが含まれるボリューム２１１に対応した上位パーティション２２１１の容量Ｃの取得）を省略してもよい。
【０１４３】
上位ヒット判定部２２２は、ステップＳ２０１でアクセス要求のあったページに該当する上位ページ格納部２２１上のページにアクセスを行う。
【０１４４】
上位ヒット判定部２２２は、アクセス要求がＲｅａｄであればＲｅａｄしたデータを、Ｗｒｉｔｅであれば、ページへのＷｒｉｔｅ後に、完了通知をデータアクセス部２８に返す。アクセス要求の完了により、容量別ヒット頻度計測部２６は、ヒット頻度の計測処理を終了する（図１０ＡのステップＳ２０６）。
【０１４５】
ステップＳ２０６における、上位ヒット判定部２２２が問い合わせのあったページのデータを、データアクセス部２８に返す処理は、ステップＳ２０３からＳ２０５までの一連の処理の後に行われているが、前記一連の処理と並列、又は事前に行うようにしてもよい。
【０１４６】
上位キャッシュ２２の上位ヒット判定部２２２は、問い合わせされたページが格納されていない場合（ステップＳ２０２のＮｏ判定）、データアクセス部２８に対して要求されたページが存在しなかったことを返す（図１０ＡのステップＳ２０７）。
【０１４７】
データアクセス部２８は、ステップＳ２０１で使用したアクセス先ボリュームＩＤ及びアドレスを用いて、下位キャッシュ２３に対して、受け取ったアドレスに対応したページの格納の有無を問い合わせる（図１０ＢのステップＳ２０８）。
【０１４８】
下位キャッシュ２３の下位ヒット判定部２３２は、作業メモリ２４に格納された下位ディレクトリ情報２４３（図５Ｂ）を参照して、問い合わせがなされたページが格納されている場合（図１０ＢのステップＳ２０９のＹｅｓ判定）、下位キャッシュ２３におけるヒットを、アクセス先ボリュームＩＤと、下位ディレクトリ情報２４３に格納されたヒットしたページの置換優先度と共に容量別ヒット頻度計測部２６に通知する（図１０ＢのステップＳ２１０）。
【０１４９】
容量別ヒット頻度計測部２６は、ステップＳ２１０で下位キャッシュ２３から通知されたアクセス先ボリュームＩＤから、作業メモリ２４に格納されたパーティションテーブル２４４（図６参照）を参照し、ヒットしたページが含まれるボリューム２１１に対応した上位パーティション２２１１、及び、下位パーティション２３１１の容量を取得する（図１０ＢのステップＳ２１１）。
【０１５０】
容量別ヒット頻度計測部２６は、
・ステップＳ２１０で通知されたヒットしたページの置換優先度と、
・ステップＳ２１１で取得した上位パーティション２２１１のパーティション容量、及び、
・下位パーティション２３１１のパーティション容量から、
前記ページが下位キャッシュ２３ではなく、前記ページが上位キャッシュ２２でヒットするために必要な最低限のパーティション容量を算出する。
【０１５１】
ページの置換優先度をＲ、ページ容量をＰ、上位パーティション２２１１の容量をＣ、下位パーティション２３１１の容量をＤとする。置換優先度を０から順番に優先度が高いものと定義すると（非負整数の置換優先度Ｒの値が小さいほど優先的に追い出され、０が最優先で追い出される：図１９（Ｂ）参照）、上位キャッシュ２２の上位パーティション２２１１でヒットするための最低容量は、次式（３）で計算される。
【０１５２】
Ｃ＋Ｄ−Ｒ×Ｐ            ・・・（３）
【０１５３】
下位パーティション２３１１が（ｎ＋１）のページからなり、置換優先度が最も低い値をｎとした場合、（ｎ＋１）×Ｐ＝Ｄの関係が成り立つ。式（３）で算出されるパーティション容量は、上位パーティション２２１１の現在の容量Ｃよりも大きい。ヒットした下位パーティションのページの置換優先度Ｒが０の場合、上位パーティション２２１１の最低容量はＣ＋Ｄとなる。ヒットした下位パーティションのページの置換優先度Ｒがｎの場合、上位パーティション２２１１の最低容量は、Ｃ＋Ｐ、すなわち、１ページ分の増加となる。
【０１５４】
容量別ヒット頻度計測部２６は、算出した上位パーティション２２１１のパーティション容量、及び、ボリュームＩＤに該当する作業メモリ２４に格納された容量別ヒット頻度テーブル２４５（図７）の対応する容量（カラム）のヒット頻度を加算する（ステップＳ２１２）。
【０１５５】
容量別ヒット頻度計測部２６は、ステップＳ２１１では、下位パーティション２３１１の容量を取得し、ステップＳ２１２のパーティションの容量算出で使用する。
【０１５６】
置換優先度Ｒの別の付与の仕方として、置換優先度が最低のものを０として、優先的に置換されるページほど順位が下がるもの（置換優先度Ｒが大きいほど優先的に追い出される：図１９（Ａ）参照）と想定した場合、ページの置換優先度をＲ、ページ容量をＰ、として上位キャッシュ２２の上位パーティション２２１１でヒットするための最低のパーティション容量は次式（４）で表される。
【０１５７】
Ｃ＋（Ｒ＋１）×Ｐ          ・・・（４）
【０１５８】
下位パーティション２３１１が（ｎ＋１）のページからなり、置換優先度が最も低い値をｎとした場合、（ｎ＋１）×Ｐ＝Ｄの関係が成り立つ。ヒットした下位パーティションのページの置換優先度Ｒが０の場合、上位パーティション２２１１の最低容量ＣはＣ＋Ｐとなり、１ページ分の増加となる。ヒットした下位パーティションのページの置換優先度Ｒがｎの場合、上位パーティション２２１１の容量は、Ｃ＋（ｎ＋１）×Ｐ＝Ｃ＋Ｄ、上位パーティション２２１１の最低容量はＣ＋Ｄとなる。
【０１５９】
上位パーティション２２１１でヒットするための最低のパーティション容量を式（４）で求める場合、ステップＳ２１１における下位パーティション２３１１の容量Ｄの取得は不要である。
【０１６０】
下位ヒット判定部２３２は、ステップＳ２０８でアクセス要求のあったページに該当する下位ページ格納部２３１上のページにアクセスを行う。
【０１６１】
下位ヒット判定部２３２は、アクセス要求が、Ｒｅａｄであれば、Ｒｅａｄしたデータを、アクセス要求がＷｒｉｔｅであれば、ページへのＷｒｉｔｅ後に完了通知をデータアクセス部２８に返す。アクセスの完了により、容量別ヒット頻度計測部２６は、ヒット頻度の計測処理を終了する（ステップＳ２１３）。
【０１６２】
ステップＳ２１３における、上位ヒット判定部２２２が、問い合わせのあったページデータをデータアクセス部２８に返す処理は、ステップＳ２１０からＳ２１２までの一連の処理の後に行われているが、前記一連の処理と並列又は事前に行うようにしてもよい。
【０１６３】
問い合わせされたページが格納されていない場合（ステップＳ２０９のＮｏ判定）、下位キャッシュ２３の下位ヒット判定部２３２は、下位キャッシュ２３におけるミスをアクセス先ボリュームＩＤと共に容量別ヒット頻度計測部２６に通知する（ステップＳ２１４）。
【０１６４】
容量別ヒット頻度計測部２６は、ステップＳ２１４で通知されたアクセス先ボリュームＩＤに該当する、作業メモリ２４に格納された容量別ヒット頻度テーブル２４５（図７）におけるミスの欄の頻度を１つ加算する（ステップＳ２１５）。
【０１６５】
下位ヒット判定部２３２は、データアクセス部２８に対して、要求されたページが存在しなかったことを返す（ステップＳ２１６）。
【０１６６】
ステップＳ２１６の処理は、ステップＳ２１４からＳ２１５の一連の処理後に行われているが、前記一連の処理と並列又は事前に行うようにしてもよい。
【０１６７】
データアクセス部２８は、ステップＳ２０１で使用したアクセス先ボリュームＩＤ、及びアドレスを用いて、記憶媒体２１にアクセスを行う。ヒット頻度の計測処理を終了する（ステップＳ２１７）。
【０１６８】
以上のステップＳ２０１からＳ２１７までの処理を行い、アクセス処理内でヒット頻度の計測を行う動作が完了する。
【０１６９】
＜記憶装置間のページ配置＞
次に、図９のステップＳ１５の詳細な動作について図１１Ａ、図１１Ｂの流れ図と、図２乃至図８を参照して説明する。図９のステップＳ１５は、アクセス処理内でヒット頻度の計測の実現に必要な記憶階層間のページ配置を行う。
【０１７０】
データアクセス部２８は、図９のステップＳ１４において、実際にアクセスが行われたページの属する記憶階層、アクセス先が含まれるボリュームＩＤ、ページアドレスをページ配置部２７に通知する（図１１ＡのステップＳ３０１）。
【０１７１】
ステップＳ３０１で通知された記憶階層が上位キャッシュ２２である場合（図１１ＡのステップＳ３０２のＹｅｓ判定）、ページ配置部２７は、作業メモリ２４に格納された上位ディレクトリ情報２４２（図５Ａ）のページの置換優先度を更新する。またページ配置部２７は上位ディレクトリ情報２４２（図５Ａ）に格納された、上位パーティション２２１１に属する他のページの置換優先度を更新して記憶階層間のページ配置処理を終了する（図１１ＡのステップＳ３０３）。
【０１７２】
ステップＳ３０１で通知された記憶階層が上位キャッシュ２２以外の場合（図１１ＡのステップＳ３０２のＮｏ判定）で、ステップＳ３０１で通知された記憶階層が下位キャッシュ２３の場合（図１１ＡのステップＳ３０４のＹｅｓ判定）、ページ配置部２７は、データアクセス部２８に対してステップＳ３０１で通知されたヒットしたページの削除を指示し、ステップＳ３０９以降の処理を継続する（図１１ＡのステップＳ３０５）。
【０１７３】
ステップＳ３０１で通知された記憶階層が記憶媒体２１の場合（図１１ＡのステップＳ３０４のＮｏ判定）、ページ配置部２７は、作業メモリ２４に格納された下位ディレクトリ情報２４３（図５Ｂ）を参照して、置換優先度が最下位のページの情報を取得する（図１１ＡのステップＳ３０６）。
【０１７４】
ステップＳ３０６で取得した、下位キャッシュ２３において置換優先度が最下位のページについて更新済ではない（更新フラグがＮｏ）場合（図１１ＡのステップＳ３０７のＮｏ判定）、ページ配置部２７は、図１１ＢのステップＳ３０９以降の処理を実行する。
【０１７５】
ステップＳ３０６で取得した、下位キャッシュにおいて置換優先度が最下位のページについて更新済（更新フラグがＹｅｓ）の場合（図１１ＡのステップＳ３０７のＹｅｓ判定）、ページ配置部２７は、データアクセス部２８に対して図１１ＡのステップＳ３０６で取得した下位キャッシュ２３で置換優先度が最下位のページの更新されたデータを記憶媒体２１に書き込むように指示する（図１１ＡのステップＳ３０８）。
【０１７６】
ページ配置部２７は、データアクセス部２８に対して下位キャッシュ２３で置換優先度が最下位のページの削除を指示する（図１１ＢのステップＳ３０９）。
【０１７７】
ページ配置部２７は、作業メモリ２４に格納された上位ディレクトリ情報２４２（図５Ａ）を参照して、上位キャッシュ２２において置換優先度が最下位のページの情報を取得する（図１１ＢのステップＳ３１０）。
【０１７８】
ページ配置部２７は、データアクセス部２８に対してステップＳ３１０で取得した上位キャッシュ２２で置換優先度が最下位のページを下位キャッシュ２３に移動し、移動完了後に上位キャッシュ２２から前記ページを削除するように指示する（図１１ＢのステップＳ３１１）。
【０１７９】
ページ配置部２７は、データアクセス部２８に対して、データアクセス部２８がステップＳ１４までにおいて下位キャッシュ２３又は記憶媒体２１から読み込んだＲｅａｄアクセス先ページのデータ、若しくは、アクセス要求処理部２５から受け取ったＷｒｉｔｅデータを上位キャッシュ２２に格納するように指示する（図１１ＢのステップＳ３１２）。
【０１８０】
ページ配置部２７は、ステップＳ３０４からＳ３１２までに行った上位キャッシュ２２及び下位キャッシュ２３に対する更新内容を、作業メモリ２４に格納された上位ディレクトリ情報２４２（図５Ａ）及び下位ディレクトリ情報２４３（図５Ｂ）に反映するように更新して記憶階層間のページ配置処理を終了する（図１１ＢのステップＳ３１３）。
【０１８１】
以上のステップＳ３０１からＳ３１３までの処理を行い、アクセス処理内でヒット頻度の計測の実現に必要な記憶階層間のページ配置を行う動作が完了する。
【０１８２】
＜上位パーティションの容量の決定＞
図１２は、パーティション容量決定部２９において、上位パーティション２２１１の容量の決定を行う動作について説明するための流れ図である。図１２、及び図２乃至図８を参照して、パーティション容量決定部２９における上位パーティション２２１１の容量の決定動作を説明する。
【０１８３】
パーティション容量決定部２９は、作業メモリ２４に格納された容量別ヒット頻度テーブル２４５を読み込む（図１２のステップＳ４０１）。
【０１８４】
パーティション容量決定部２９は、ステップＳ４０１で読み込んだ、各上位パーティション２２１１に割り当てる容量別のヒット頻度を参照して、上位キャッシュ２２全体でヒット頻度が最大になるように各上位パーティション２２１１の容量の組み合わせを決定する。パーティション容量の合計は、上位キャッシュ２２全体の容量によって制限される。
【０１８５】
前記容量別のヒット頻度からパーティション容量の組み合わせを求めるにあたり、パーティション容量決定部２９は、例えば各上位パーティション２２１１に対して取り得る容量の組み合わせを全て試行したうえで、上位キャッシュ全体のヒット頻度が最大になる容量の組み合わせを選択する。各容量の組み合わせにおける上位キャッシュ２２全体のヒット頻度は、各上位パーティション２２１１の容量毎に決まるヒット頻度の合計で求められる。その他、公知のアルゴリズム等を用いてもよいことは勿論である。パーティション容量決定部２９は、例えば非特許文献２、３等に記載されたアルゴリズムを利用することで、上位パーティション２２１１の容量の組み合わせを決定するようにしてもよい（図１２のステップＳ４０２）。
【０１８６】
パーティション容量決定部２９は、ステップＳ４０２で決定した上位パーティション２２１１の容量の組み合わせを、作業メモリ２４に格納されたパーティションテーブル２４４に反映する（図１２のステップＳ４０３）。
【０１８７】
パーティション容量決定部２９は、作業メモリ２４に格納された容量別ヒット頻度テーブル２４５の各ヒット頻度、ミス頻度の値をリセットして、上位パーティション２２１１の容量の決定を行う処理を終了する（図１２のステップＳ４０４）。
【０１８８】
以上のステップＳ４０１からＳ４０４までの処理を行い、１回の上位パーティション２２１１の容量の決定を行う動作が完了する。
【０１８９】
以上の処理を予め定められた一定間隔で行うか、又は、ストレージ２の内外から指示が行われる毎に実行することで、上位パーティション２２１１の容量を、上位キャッシュ２２の効果（キャッシュ性能）が最大化されるように、動的に可変制御することが可能となる。
【０１９０】
＜実施例＞
以下では、アクセスパターン変化に応じたキャッシュのパーティション容量の自動最適化の一例を説明する。本実施例では、
・ページのサイズＰを１ＭＢ、
・上位キャッシュ２２を容量２ＧＢのＤＲＡＭ１３２、
・下位キャッシュ２３を容量１６ＧＢのＳＳＤ１３３、
・記憶媒体２１を容量２００ＧＢのＨＤＤ１３４
とする。なお、上記容量はあくまで一例であり、他の設定値であってもよいことは勿論である。
【０１９１】
図７の容量別ヒット頻度テーブル２４５において使用するヒット頻度、ミス頻度として、ヒット数、ミス数を用いる。容量別ヒット頻度テーブル２４５のヒット頻度、ミス頻度の加算は、ヒット、ミスの発生毎に、１ずつ行う。この結果、容量別ヒット頻度テーブル２４５にヒット数、ミス数が格納される。
【０１９２】
図１３は、本実施例におけるストレージ２の構成及びホスト１からの利用形態を示す図である。図１３は、前記実施形態で説明した図１と、図２、図３の内容に基づき作成した図であり、その構成、動作は、前記実施形態に従う。ストレージ２はホスト１上で動作する２種類のアプリケーションＡ１３１１、アプリケーションＢ１３１２から利用されており、それぞれがストレージ２の記憶領域に定義された各１００ＧＢの容量のボリュームＡ１３４１、ボリュームＢ１３４２を使用する。
【０１９３】
またボリュームＡ１３４１、ボリュームＢ１３４２に対応した上位パーティションＡ１３２１、上位パーティションＢ１３２２が上位キャッシュ２２であるＤＲＡＭ１３２上に定義され、
下位パーティションＡ１３３１、下位パーティションＢ１３３２が下位キャッシュ２３であるＳＳＤ１３３上に定義される。
【０１９４】
上位パーティションＡ１３２１、上位パーティションＢ１３２２は、初期状態においてそれぞれ１ＧＢずつの容量を持つものとする。
【０１９５】
また下位パーティションＡ１３３１、下位パーティションＢ１３３２は本実施例において常に８ＧＢずつの容量を持つものとする。
【０１９６】
図１４に、本実施例におけるアプリケーションＡ１３１１、アプリケーションＢ１３１２が使用する各ボリュームに対応した上位パーティション１３２１、１３２２、下位パーティション１３３１、１３３２のヒット数の分布を表す。
【０１９７】
記憶階層（ＤＲＡＭ１３２、ＳＳＤ１３３、ＨＤＤ１３４）毎のヒット数分布１４１は、一定時間内におけるボリュームＡ１３４１、ボリュームＢ１３４２に対応したパーティションの、各記憶階層でのヒット数を示す。
【０１９８】
記憶階層毎のヒット数分布１４１を参照すると、アプリケーションＡ１３１１、アプリケーションＢ１３１２によるストレージ２へのアクセス総数はともに３００００回である。アプリケーションＡ１３１１に比べて、アプリケーションＢ１３１２は、キャッシュミス数が少なく、ＤＲＡＭ１３２に偏ったヒット数の分布である。
【０１９９】
記憶階層毎のヒット数分布１４１のみでは、アプリケーションＡ１３１１、アプリケーションＢ１３１２それぞれに対する上位パーティションＡ１３２１、上位パーティション１３２２の最適な容量を算出することはできない。
【０２００】
図１５に、本実施例における容量別ヒット頻度テーブル１５１（図７の２４５に対応）の例を示す。
【０２０１】
容量別ヒット頻度テーブル１５１は、アプリケーションＡ１３１１、アプリケーションＢ１３１２からストレージ２に対するアクセス要求において、図９、図１０、図１１を参照して説明した前記実施形態の処理によって作成される。
【０２０２】
上位パーティションＡ１３２１、上位パーティションＢ１３２２は、１ＧＢずつであるため、パーティション容量毎のヒット数分布１４１において、
・１０２４ＭＢまでのヒットはＤＲＡＭ１３２において計測されており、
・１０２５ＭＢ以上のヒットはＳＳＤ１３３において計測されている。
【０２０３】
図１５の容量別ヒット頻度テーブル１５１によると、ＤＲＡＭ１３２の容量が２ＧＢの範囲でボリュームＡ１３４１、ボリュームＢ１３４２の上位パーティションに、２５６ＭＢ単位で容量を割り当てた場合、
・上位パーティションＡ１３２１の容量を１５３６ＭＢ、
・上位パーティションＢ１３２２の容量を５１２ＭＢ、
とした場合に（合計２ＧＢ）、上位キャッシュをなすＤＲＡＭ１３２によって最大のヒット数が得られる。
【０２０４】
パーティション容量決定部２９は、アプリケーションＡ１３１１（ボリュームＡ１３４１）向きの上位パーティションＡ１３２１の容量を設定値１０２４ＭＢから容量増加分５１２ＭＢ増やした１５３６ＭＢとし、アプリケーションＢ１３１２（ボリュームＢ１３４２）向きの上位パーティションＢ１３２２の容量を設定値１０２４ＭＢから５１２ＭＢ減らして５１２ＭＢとしている。また、パーティション容量決定部２９は、ＳＳＤ１３３の下位のパーティションＡ１３１１の容量を、最適化前の容量から、上位パーティションＡ１３２１の容量増加分の５１２ＭＢだけ差し引いた値とし、ＳＳＤ１３３の下位パーティションＢ１３３２の容量を、最適化前の容量に対して、上位パーティションＢ１３２２の容量減少分の５１２ＭＢを加算した値に設定している。
【０２０５】
すなわち、パーティション容量決定部２９は、ＤＲＡＭ１３２（上位キャッシュ）の上位パーティションＡ１３２１の容量と上位パーティションＢ１３２２の容量をそれぞれ決定し、その結果、ＳＳＤ１３３（下位キャッシュ）の下位のパーティションＡ１３３１の容量、及び、下位パーティションＢ１３３２の容量をそれぞれ決定している。
【０２０６】
図１５を参照すると、パーティション容量決定部２９により、上位パーティションＡ１３２１の容量を、１０２４ＭＢから容量増加分５１２ＭＢ増やし１５３６ＭＢとしたことで、アプリケーションＡの上位パーティションＡ１３２１でのヒット数は、最適化前のヒット数１８０００（図１４参照）に対して、ＳＳＤ１３３の下位のパーティションＡ１３３１の領域１０２５ＭＢ−１５３６ＭＢでのヒット数（＝３０００＋３０００＝６０００）分が加わり、１８０００＋６０００＝２４０００となる。一方、ＳＳＤ１３３の下位のパーティションＡ１３３１でのヒット数は、最適化前のヒット数８０００（図１４参照）から、領域１０２５ＭＢ−１５３６ＭＢでのヒット数（＝３０００＋３０００＝６０００）分減少し、８０００−６０００＝２０００となる。また、上位パーティションＢ１３２２の容量を１０２４ＭＢから容量増加分５１２ＭＢ減らし５１２ＭＢとしたことで、最適化前のヒット数２３０００（図１４参照）から、アプリケーションＢの上位パーティションＢ１３２２の領域５１３ＭＢ−１０２４ＭＢ分でのヒット数（＝２０００＋１０００＝３０００）が差し引かれ、２３０００−３０００＝２００００となる。ＳＳＤ１３３の下位のパーティションＢ１３３２でのヒット数は、最適化前のヒット数５０００（図１４参照）に、ＤＲＡＭ１３２の領域５１３ＭＢ−１０２４ＭＢでのヒット数（＝２０００＋１０００＝３０００）が加わり、５０００＋３０００＝８０００となる。
【０２０７】
図１６に、パーティション容量決定部２９により、上位キャッシュをなすＤＲＡＭ１３２によって最大のヒット数が得られるように、上位パーティションＡ１３２１の容量と上位パーティションＢ１３２２の容量を最適化した後の記憶階層（ＤＲＡＭ１３２、ＳＳＤ１３３、ＨＤＤ１３４）毎のヒット数分布１６１を示す。上述したように、ＤＲＡＭ１３２の上位パーティションＡ１３２１の容量を、１０２４ＭＢから容量増加分５１２ＭＢ増やし１５３６ＭＢとしたことで、アプリケーションＡのＤＲＡＭ１３２の上位パーティションＡ１３２１でのヒット数は２４０００となる。ＤＲＡＭ１３２の上位パーティションＢ１３２２の容量を５１２ＭＢとしたことで、アプリケーションＢのＤＲＡＭ１３２の上位パーティションＢ１３２２でのヒット数は２００００となる。図１６に示した最適化後の記憶階層のヒット数分布１６１と、図１４の最適化前のヒット数分布１４１（上位パーティションの容量を変更しない状態での記憶階層毎のヒット数分布１４１）と比較すると、図１６では、ＤＲＡＭ１３２におけるヒット数（アプリケーションＡ、Ｂの総数）が２４０００＋２００００＝４４０００となる。図１４の１８０００＋２３０００＝４１０００に対して３０００増加する。
【０２０８】
図１５において、アプリケーションＡに関してＤＲＡＭ１３２の上位パーティションＡ１３２１とＳＳＤ１３３の下位パーティションＡ１３３１の容量の合計は、上位パーティションＡ１３２１の容量最適化の前後で同一（一定）であり、図１６におけるＤＲＡＭ１３２とＳＳＤ１３３でのヒット数の合計２６０００は、図１４におけるＤＲＡＭ１３２とＳＳＤ１３３でのヒット数の合計と同一である。同様に、図１５に示すように、アプリケーションＢに関してＤＲＡＭ１３２の上位パーティションＢ１３２２とＳＳＤ１３３の下位パーティションＢ１３３２の容量の合計は、上位パーティションＢ１３２２の容量最適化の前後で同一（一定）であり、図１６におけるＤＲＡＭ１３２とＳＳＤ１３３でのヒット数の合計２８０００は、図１４におけるＤＲＡＭ１３２とＳＳＤ１３３でのヒット数の合計と同一である。なお、ＳＳＤ１３３の下位パーティションＡ１３３１、Ｂ１３３２の容量の値を例えば固定値とし、パーティション容量決定部２９では、上位パーティションＡ１３２１、上位パーティションＢ１３２２の容量だけを決定するようにしてもよい。ただし、この場合、ＤＲＡＭ１３２の上位パーティションとＳＳＤ１３３の下位パーティションの容量の合計は容量最適化の前後で同一（一定）とはならない。あるいは、ＳＳＤ１３３の下位パーティションＡ１３３１、Ｂ１３３２の容量を、上記した上位パーティションＡ１３２１、Ａ１３２２の決定とは、別に設定するようにしてもよい。
【０２０９】
上記の通り、アクセスパターン変化に応じて、上位キャッシュのパーティション容量の最適化を動的に行うことで、上位キャッシュ２２の効果（キャッシュ性能）が最大化され、その結果、ストレージ２の性能が向上することができる。
【０２１０】
なお、上記の特許文献、非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施例の各要素、各図面の各要素等を含む）の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【０２１１】
１  ホスト
２  ストレージ
２−１  記憶媒体
２−２  上位中間記憶機能
２−３  下位中間記憶機能
２−４  中間記憶アクセス情報収集部
２−５  中間記憶領域容量決定部
３  ネットワーク
２１  記憶媒体
２１１  ボリューム
２２  上位キャッシュ
２２１  上位ページ格納部
２２１１  上位パーティション
２２２  上位ヒット判定部
２３  下位キャッシュ
２３１  下位ページ格納部
２３１１  下位パーティション
２３２  下位ヒット判定部
２４  作業メモリ
２４１  マッピング情報
２４２  上位ディレクトリ情報
２４３  下位ディレクトリ情報
２４４  パーティションテーブル
２４５  容量別ヒット頻度テーブル
２４６  アクセス要求テーブル
２５  アクセス要求処理部
２６  容量別ヒット頻度計測部
２７  ページ配置部
２８  データアクセス部
２９  パーティション容量決定部
１３１１  実施例におけるアプリケーションＡ
１３１２  実施例におけるアプリケーションＢ
１３２  実施例において上位キャッシュとして使用するＤＲＡＭ
１３２１  実施例における上位パーティションＡ
１３２２  実施例における上位パーティションＢ
１３３  実施例において下位キャッシュとして使用するＳＳＤ
１３３１  実施例における下位パーティションＡ
１３３２  実施例における下位パーティションＢ
１３４  実施例において記憶媒体として使用するＨＤＤ
１３４１  実施例におけるボリュームＡ
１３４２  実施例におけるボリュームＢ
１４１  実施例における初期状態の記憶階層毎のヒット数分布
１５１  実施例における容量別ヒット頻度テーブル
１６１  実施例におけるパーティション容量最適化後の記憶階層毎のヒット数分布
【図１】
2014010604.tif 000003
【図２】
2014010604.tif 000004
【図３】
2014010604.tif 000005
【図４】
2014010604.tif 000006
【図５Ａ】
2014010604.tif 000007
【図５Ｂ】
2014010604.tif 000008
【図６】
2014010604.tif 000009
【図７】
2014010604.tif 000010
【図８】
2014010604.tif 000011
【図９】
2014010604.tif 000012
【図１０Ａ】
2014010604.tif 000013
【図１０Ｂ】
2014010604.tif 000014
【図１１Ａ】
2014010604.tif 000015
【図１１Ｂ】
2014010604.tif 000016
【図１２】
2014010604.tif 000017
【図１３】
2014010604.tif 000018
【図１４】
2014010604.tif 000019
【図１５】
2014010604.tif 000020
【図１６】
2014010604.tif 000021
【図１７】
2014010604.tif 000022
【図１８】
2014010604.tif 000023
【図１９】
2014010604.tif 000024