(57)【要約】【課題】アクセス速度の異なる複数の記憶部を具備したストレージにおいて、相対的に低速な記憶部へのアクセス時間の短縮を図り、性能を向上させる。【解決手段】情報の書き込み及び読み出しが可能な第１の記憶部を含む第１の記憶装置と、情報データの書き込み及び読み出しが可能な第２の記憶部を含む第２の記憶装置と、を含み、前記第１の記憶部は、前記第２の記憶部よりも高速であるか同等とされ、前記第１の記憶部及び前記第２の記憶装置は、それぞれ、前記第２の記憶部の制御と管理に必要な管理情報の少なくとも一部を記憶する、所定の容量の記憶領域を有し、アクセス要求に対して、前記第２の記憶部にアクセスするにあたり、該当する前記第２の記憶部の管理情報が前記第１の記憶部に記憶されている場合、前記第１の記憶部に記憶されている該当する前記第２の記憶部の管理情報を参照して前記第２の記憶部にアクセスするアクセス制御部を含む。【選択図】図１４
2014170325.tif 000002
【特許請求の範囲】
【請求項１】
情報の書き込み及び読み出しが可能な第１の記憶部を含む第１の記憶装置と、
情報データの書き込み及び読み出しが可能な第２の記憶部を含む第２の記憶装置と、
を含み、
前記第１の記憶部は、前記第２の記憶部よりも高速であるか同等とされ、
前記第１の記憶部及び前記第２の記憶装置は、それぞれ、前記第２の記憶部の制御と管理に必要な管理情報の少なくとも一部を記憶する、所定の容量の記憶領域を有し、
アクセス要求に対して、前記第２の記憶部にアクセスするにあたり、該当する前記第２の記憶部の管理情報が前記第１の記憶部に記憶されている場合、前記第１の記憶部に記憶されている該当する前記第２の記憶部の管理情報を参照して前記第２の記憶部にアクセスするアクセス制御部を含む、ストレージ装置。
【請求項２】
前記第１の記憶部に設けられた、前記第２の記憶部の管理情報を記憶する記憶領域の容量値を設定する容量設定部を備えた、請求項１に記載のストレージ装置。
【請求項３】
前記第１の記憶装置は、前記第１の記憶部の制御と管理に必要な管理情報を記憶する記憶領域を、前記第１の記憶部とは別に備え、
前記第２の記憶装置は、前記第２の記憶部の制御と管理に必要な管理情報を記憶する記憶領域を、前記第２の記憶部とは別に備えている、請求項１又は２に記載のストレージ装置。
【請求項４】
ストレージ装置で記憶保持される情報を記憶する記憶媒体を備え、
前記第１及び第２の記憶部は、前記記憶媒体よりも高速とされ、前記記憶媒体に記憶される情報の一部の写し又は更新内容を記憶する、請求項３に記載のストレージ装置。
【請求項５】
前記記憶媒体は、前記第２の記憶部の管理情報を記憶する、請求項４に記載のストレージ装置。
【請求項６】
前記アクセス制御部は、前記アクセス要求に対して、前記第２の記憶部へアクセスするにあたり、前記第１の記憶部に、該当する前記第２の記憶部の管理情報が記憶されていない場合には、前記第２の記憶装置又は前記記憶媒体に記憶されている前記第２の記憶部の管理情報を参照して、前記第２の記憶部へのアクセスを行う、請求項４又は５に記載のストレージ装置。
【請求項７】
前記アクセス制御部は、前記第１の記憶部に新たなデータを格納するにあたり、前記第１の記憶部に、前記新たなデータの格納用の空き領域がない場合、前記第１の記憶部において、前記第２の記憶部の管理情報の記憶に使用されている記憶領域の容量が、前記所定の容量値未満である場合には、前記第１の記憶部に設けられた前記第２の記憶部の管理情報の記憶用の記憶領域のうち、前記第２の記憶部の管理情報の記憶に使用されていない記憶領域の一部を、データ格納用の空き領域として確保し、
前記第１の記憶部において、前記第２の記憶部の管理情報の記憶に使用されている記憶領域の容量が、前記所定の容量値以上の場合には、前記第１の記憶部において前記第２の記憶部の管理情報の記憶に使用されている記憶領域の一部を選択してデータ格納用の空き領域として確保し、
前記データ格納用の空き領域にデータを格納する、請求項６に記載のストレージ装置。
【請求項８】
前記アクセス制御部は、前記第２の記憶装置又は前記記憶媒体に記憶されている前記第２の記憶部の管理情報を、前記第１の記憶部に格納するにあたり、
前記第１の記憶部に、前記第２の記憶部の管理情報格納用の空き領域がある場合、前記空き領域の任意の領域を、前記第２の記憶部の管理情報の格納用とし、
前記第１の記憶部に、前記第２の記憶部の管理情報格納用の空き領域がない場合、前記第１の記憶部において前記第２の記憶部の管理情報の記憶に使用されている記憶領域の容量が、前記所定の容量値未満である場合には、前記第１の記憶部において前記第２の記憶部の管理情報の記憶には使用されていない記憶領域の一部を選択し、選択した前記記憶領域の一部を、前記第２の記憶部の管理情報の格納領域として確保し、
前記第１の記憶部において、前記第２の記憶部の管理情報の記憶に使用されている記憶領域の容量が、前記所定の容量値以上である場合には、
前記第１の記憶部において前記第２の記憶部の管理情報の記憶用の記憶領域の一部を選択し、選択した前記記憶領域の一部を、前記第２の記憶部の管理情報の格納領域として確保し、
前記確保した格納領域に前記第２の記憶部の管理情報を格納する、請求項６又は７に記載のストレージ装置。
【請求項９】
前記アクセス制御部は、アクセス対象のデータが前記第１の記憶部に記憶されていない場合に、前記第１の記憶部に記憶されている前記第２の記憶部の管理情報を参照して、前記アクセス対象のデータが前記第２の記憶部に記憶されているか否か判定し、その際、
前記第１の記憶部に、前記データに対応する前記第２の記憶部の管理情報が記憶されている場合には、前記管理情報を取得し、
前記第１の記憶部に、前記データに対応する前記第２の記憶部の管理情報が記憶されていない場合には、前記第２の記憶装置に記憶されている前記データに対応する前記第２の記憶部の管理情報を格納するための領域を、前記第１の記憶部に確保し、前記第１の記憶部に確保した前記領域に、前記第２の記憶装置に記憶されている、前記データ対応する前記第２の記憶部の管理情報を格納する、請求項３に記載のストレージ装置。
【請求項１０】
前記アクセス制御部は、前記第１の記憶部に、アクセス対象のデータに対応する前記第２の記憶部の管理情報が記憶されていない場合、前記第１の記憶部に空き領域が存在するか確認し、前記第１の記憶部に空き領域が存在する場合、前記空き領域を、前記第２の記憶部の管理情報格納用の領域として確保し、
前記第１の記憶部に空き領域が存在しない場合、
前記第１の記憶部において、前記第２の記憶部の管理情報の記憶に使用されている記憶領域の容量が、前記所定の容量値以下である場合には、前記第１の記憶部において、前記第２の記憶部の管理情報の記憶用の領域に含まれていない領域を、前記第１の記憶部において前記第２の記憶部の管理情報を格納するための領域として確保し、
前記第１の記憶部において、前記第２の記憶部の管理情報を記憶する記憶領域の容量が、前記所定の容量値以上の場合には、
前記第１の記憶部において、前記第２の記憶部の管理情報の記憶に使用されている一部の領域を、前記第１の記憶部において前記第２の記憶部の管理情報を新たに格納するための領域として確保し、前記確保した領域について、前記第２の記憶部の管理情報の更新情報が、前記第２の記憶装置に反映されていない場合には、前記更新情報を前記第２の記憶装置に反映した上で、前記領域を空とし、前記空とした領域を前記第２の記憶部の管理情報を新たに格納するための領域とする、請求項６乃至９のいずれか１項に記載のストレージ装置。
【請求項１１】
前記第１の記憶部が上位キャッシュであり、
前記第２の記憶部が下位キャッシュであり、
前記第２の記憶装置に記憶された前記第２の記憶部の管理情報が、前記下位キャッシュのディレクトリ情報であり、
前記上位キャッシュは、前記下位キャッシュのディレクトリ情報の一部が記憶されるパーティションを備え、
前記第１の記憶装置は、前記上位キャッシュのディレクトリ情報を記憶する記憶部を、前記上位キャッシュとは別に備えた請求項１乃至１０のいずれか１項に記載のストレージ装置。
【請求項１２】
前記上位キャッシュのディレクトリ情報が、前記上位キャッシュのメモリ管理の単位である各ページについて、
前記ページが未使用であるか否かを表す第１のフラグと、
前記下位キャッシュのディレクトリ情報の格納領域に含まれるページであるか否かを表す第２のフラグと、
前記ページの前記ストレージ装置におけるアドレスと、
前記ページの前記上位キャッシュにおける格納先を表すアドレスと、
前記ページのデータが前記上位キャッシュに格納された後に更新済であるかを表す第３のフラグと、
前記ページの置換における優先度を表す情報を含む、請求項１１に記載のストレージ装置。
【請求項１３】
前記下位キャッシュのディレクトリ情報が、前記下位キャッシュのメモリ管理の単位である各ページについて、
前記ページが未使用であるか否かを表す第１のフラグと、
前記ページのデータが前記下位キャッシュに格納された後に、更新済であるかを表す第３のフラグと、
前記ページの置換における優先度を表す情報を含む、請求項１２に記載のストレージ装置。
【請求項１４】
情報の書き込み及び読み出しが可能な第１の記憶部を含む第１の記憶装置と、
情報の書き込み及び読み出しが可能な第２の記憶部を含む第２の記憶装置と、
を含み、
前記第１の記憶部が、前記第２の記憶部よりも高速であるか同等とされるストレージの制御方法であって、
前記第１の記憶部及び前記第２の記憶装置に、それぞれ、前記第２の記憶部の制御と管理に必要な管理情報の少なくとも一部を記憶する、所定の容量の記憶領域を設け、
前記第２の記憶装置に、前記第２の記憶部の制御と管理に必要な管理情報を記憶する記憶領域を設け、
アクセス要求に対して、前記第２の記憶部にアクセスするにあたり、該当する前記第２の記憶部の管理情報が前記第１の記憶部に記憶されている場合、前記第１の記憶部に記憶されている該当する前記第２の記憶部の管理情報を参照して前記第２の記憶部にアクセスする、ストレージの制御方法。
【請求項１５】
情報の書き込み及び読み出しが可能な第１の記憶部を含む第１の記憶装置と、
情報の書き込み及び読み出しが可能な第２の記憶部を含む第２の記憶装置と、
を含み、
前記第１の記憶部が、前記第２の記憶部よりも高速であるか同等とされ、
前記第１の記憶部及び前記第２の記憶装置が、それぞれ、前記第２の記憶部の制御と管理に必要な管理情報の少なくとも一部を記憶する、所定の容量の記憶領域を有し、
前記第１の記憶部が、前記第２の記憶部の制御と管理に必要な管理情報の少なくとも一部を記憶する、所定の容量の記憶領域を有するストレージを構成するコンピュータに、
アクセス要求に対して、前記第２の記憶部にアクセスするにあたり、該当する前記第２の記憶部の管理情報が前記第１の記憶部に記憶されている場合、前記第１の記憶部に記憶されている該当する前記第２の記憶部の管理情報を参照して前記第２の記憶部にアクセスする処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はストレージ装置と方法並びにプログラムに関する。
【背景技術】
【０００２】
情報通信技術の進化とその適用分野の拡大に伴い、情報処理システムが扱うデータ量が日々増加している。情報処理システムの種類、数の増加に伴い、それらのデータを格納するために大容量かつ高性能なストレージに対する要求が増加している。ストレージ管理を効率化するために、複数のシステムのデータの単一ストレージへの集約が行われている。単一のストレージに複数のシステムのデータを格納する場合、ストレージに対して大量のデータを格納可能な記憶容量（大容量化）と、複数システムからの大量のアクセスを処理する高性能化が求められる。
【０００３】
ＨＤＤ（Hard Disk Drive）の大容量化に伴い、記憶媒体としてＨＤＤを用いることで記憶容量の大容量化への対応が可能である。さらにストレージを構成する記憶媒体数の増減により、記憶容量への要求に柔軟に対応が可能である。
【０００４】
ストレージの高性能化の要求に対してキャッシュ（キャッシュメモリ）が用いられる。ストレージのキャッシュは、例えばＤＲＡＭ（Dynamic Random Access Memory）等で構成され、記憶媒体に格納されたデータの複製又は更新を格納する。キャッシュにアクセス頻度の高いデータを格納することで、ＤＲＡＭ等と比べてアクセス性能が低いＨＤＤ等の記憶媒体へのアクセスを削減し、性能向上を図る。
【０００５】
ストレージにおいて、アクセス時間（アクセス速度）の異なるキャッシュを階層化し、アクセス時間の短い上位キャッシュから順番にアクセス頻度の高いデータを格納する階層キャッシュが用いられつつある。記憶媒体として一般的なＨＤＤより高性能な記憶媒体として、例えばＳＳＤ（Solid State Drive）がストレージにおいて使用されている。ＳＳＤの多くは、一般的にＮＡＮＤ型フラッシュメモリによって構成され、ＤＲＡＭより性能は低いものの、ＨＤＤよりも高いアクセス性能を持つ。またＨＤＤと比べて容量は小さいものの、ＤＲＡＭと比べて容量が大きく、安価である、という利点を持つ。
【０００６】
一般的に、下位のキャッシュには、ＳＳＤに代表される高速な記憶媒体を使用し、ＤＲＡＭ等で構成される上位キャッシュに格納しきれないデータを格納する。上位キャッシュに格納しきれなくなったデータに対して再度アクセスを行う場合、下位キャッシュに、該上位キャッシュに格納しきれなくなったデータを格納することで、ＨＤＤ等の記憶媒体に対するアクセスの発生を防ぐことが可能となり、その結果、アクセス性能を向上させる。
【０００７】
下位キャッシュでヒットしたデータは、再度、上位キャッシュに格納され、上位キャッシュにデータを格納しきれなくなった場合、データ格納領域を確保するため、その時点で上位キャッシュに格納されているデータを上位キャッシュから追い出し、追い出したデータを下位キャッシュに格納する、という動作を繰り返す。この一連の動作により、上位キャッシュには、最もアクセス頻度の高いデータが格納され、下位キャッシュには、上位キャッシュに次いでアクセス頻度の高いデータが格納され、各キャッシュ階層が効率的に利用される。
【０００８】
また一部のストレージでは、キャッシュにおいて複数種類のデータを格納する場合に、各データ間でキャッシュの競合を防ぐ目的で、特許文献１や非特許文献１で示されるようなパーティショニングが用いられる。パーティショニングとは、共有キャッシュをプロセス（スレッド）毎の占有領域であるパーティションに分割（区分）し、容量を制限することで、プロセス（又はスレッド）間での競合を防ぐものである。ストレージのキャッシュのパーティショニングは、多くの場合、ボリューム（記憶領域の管理単位をなす一定のデータセットであり、「論理ボリューム」ともいう）などを単位として、キャッシュ（共有キャッシュ）を、ボリュームの占有領域であるパーティションに分割（区分）することをいう。
【０００９】
パーティショニングを用いない場合、あるボリュームへのアクセスに対してキャッシュミスにより、当該アクセスに対応するデータのキャッシュへの登録にあたり、キャッシュに格納されている他のボリュームのデータを追い出しキャッシュの競合を発生させることになる。一方、キャッシュをパーティショニングした場合、あるボリュームへのアクセスに対して当該ボリュームに対応するパーティションでミスした時、該パーティション内でデータ（ページ）の置換えが行われ、別のボリュームの占有領域に対応する別のパーティションのデータを追い出すことは無い。このため、キャッシュの競合が回避される。
【００１０】
なお、特許文献１には、キャッシュメモリを複数のパーティションに論理的に分割し、それぞれのパーティションは複数の論理ボリュームに対して割り当てられ、複数のパーティションはセグメントサイズが独立して調整可能なように構成され、パーティションのセグメントサイズを調整することで、キャッシュメモリの性能チューニングを行うようにしたストレージシステムが開示されている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特許第４８１９３６９号公報
【非特許文献】
【００１２】
【非特許文献１】Suh et al., "Dynamic partitioning of shared cache memory", Journal of Supercomputing, Vol. 28, No. 1, pp. 7-26, 2004
【発明の開示】
【発明が解決しようとする課題】
【００１３】
以下に関連技術の分析を与える。
【００１４】
記憶部の制御及び管理の為の管理情報を参照して記憶部のアクセス対象の領域へのアクセスが行われ、アクセス速度が互いに異なる複数の記憶部からなる階層キャッシュ構成の記憶装置に関して、相対的に低速な記憶部へのアクセスに時間を要し、階層キャッシュの性能が低下する、という課題がある。
【００１５】
これは、相対的に低速な記憶部の管理情報が、相対的に低速な記憶部に格納されており、相対的に低速な記憶部へのデータアクセスにあたり、まず、該相対的に低速な記憶部を参照して管理情報を取得することが必要とされ、該取得した管理情報に基づき、該相対的に低速な記憶部のデータへアクセスが行われるためである。
【００１６】
一方、後述する比較例で説明するように、相対的に低速な記憶部の管理情報を、全て高速な記憶部に記憶する構成とした場合、相対的に低速な記憶部の記憶容量の増大に伴い、
高速な記憶部で必要とされる記憶容量が増大する、あるいは、高速な記憶部においてデータ格納領域が削減するか無くなり階層キャッシュの性能が著しく低下する、という課題もある。
【００１７】
本発明は、前記課題に鑑みて創案されたものであって、その目的は、アクセス速度の異なる複数の記憶部を具備したストレージにおいて、相対的に低速な記憶部へのアクセス時間の短縮を図り、性能を向上させる装置、方法、プログラムを提供することにある。その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１８】
本発明によれば、情報の書き込み及び読み出しが可能な第１の記憶部を含む第１の記憶装置と、
情報データの書き込み及び読み出しが可能な第２の記憶部を含む第２の記憶装置と、
を含み、
前記第１の記憶部は、前記第２の記憶部よりも高速であるか同等とされ、
前記第１の記憶部及び前記第２の記憶装置は、それぞれ、前記第２の記憶部の制御と管理に必要な管理情報の少なくとも一部を記憶する、所定の容量の記憶領域を有し、
アクセス要求に対して、前記第２の記憶部にアクセスするにあたり、該当する前記第２の記憶部の管理情報が前記第１の記憶部に記憶されている場合、前記第１の記憶部に記憶されている該当する前記第２の記憶部の管理情報を参照して前記第２の記憶部にアクセスするアクセス制御部を含む、ストレージ装置が提供される。
【００１９】
本発明によれば、情報の書き込み及び読み出しが可能な第１の記憶部を含む第１の記憶装置と、
情報の書き込み及び読み出しが可能な第２の記憶部を含む第２の記憶装置と、
を含み、
前記第１の記憶部が、前記第２の記憶部よりも高速であるか同等とされるストレージの制御の方法であって、
前記第１の記憶部及び前記第２の記憶装置に、それぞれ、前記第２の記憶部の制御と管理に必要な管理情報の少なくとも一部を記憶する、所定の容量の記憶領域を設け、
アクセス要求に対して、前記第２の記憶部にアクセスするにあたり、該当する前記第２の記憶部の管理情報が前記第１の記憶部に記憶されている場合、前記第１の記憶部に記憶されている該当する前記第２の記憶部の管理情報を参照して前記第２の記憶部にアクセスする、方法が提供される。
【００２０】
本発明によれば、情報の書き込み及び読み出しが可能な第１の記憶部を含む第１の記憶装置と、
情報の書き込み及び読み出しが可能な第２の記憶部を含む第２の記憶装置と、
を含み、
前記第１の記憶部が、前記第２の記憶部よりも高速であるか同等とされ、
前記第１の記憶部及び前記第２の記憶装置が、それぞれ、前記第２の記憶部の制御と管理に必要な管理情報の少なくとも一部を記憶する、所定の容量の記憶領域を有し、
前記第１の記憶部が、前記第２の記憶部の制御と管理に必要な管理情報の少なくとも一部を記憶する、所定の容量の記憶領域を有するストレージを構成するコンピュータに、
アクセス要求に対して、前記第２の記憶部にアクセスするにあたり、該当する前記第２の記憶部の管理情報が前記第１の記憶部に記憶されている場合、前記第１の記憶部に記憶されている該当する前記第２の記憶部の管理情報を参照して前記第２の記憶部にアクセスする処理を実行させるプログラムが提供される。本発明によれば、前記プログラムを記録し、コンピュータで読み出し可能なメモリ媒体（半導体メモリデバイス）、磁気／光記録ディスク（記録デバイス）が提供される。
【発明の効果】
【００２１】
本発明によれば、アクセス速度の異なる複数の記憶部を具備したストレージにおいて、相対的に低速な記憶部へのアクセス時間の短縮を図り、性能を向上させることができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の一実施形態における全体のシステム構成を例示する図である。
【図２】本発明の実施形態のストレージの構成を例示する図である。
【図３】本発明の一実施形態におけるストレージ内の１次高速記憶、２次高速記憶の詳細な構成を例示する図である。
【図４】実施形態における上位キャッシュのディレクトリ情報を例示する図である。
【図５】実施形態における下位キャッシュのディレクトリ情報を例示する図である。
【図６】本発明の一実施形態におけるＲｅａｄ又はＷｒｉｔｅ処理手順を示すフローチャートである。
【図７】本発明の一実施形態における上位キャッシュ新規データ格納ページ確保の手順を示すフローチャートである。
【図８】本発明の一実施形態における下位キャッシュ新規データ格納ページ確保の手順を示すフローチャートである。
【図９】本発明の一実施形態における下位キャッシュディレクトリ情報Ｒｅａｄ手順を示すフローチャートである。
【図１０】本発明の一実施形態における下位キャッシュディレクトリ情報Ｗｒｉｔｅ手順を示すフローチャートである。
【図１１】本発明の一実施形態におけるＤ−Ｐａｒｔｉｔｉｏｎ  新規データ格納ページ確保の手順を示すフローチャートである。
【図１２】本発明の第１の実施例における本発明の有無、及び下位キャッシュの容量とディレクトリ情報の格納に必要なメモリ容量の関係を例示する図である。
【図１３】本発明の第２の実施例におけるキャッシュ容量毎のヒット数分布の変化を例示する図である。
【図１４】本発明の一形態の構成を説明する図である。
【図１５】本発明の実施形態を説明する図である。
【発明を実施するための形態】
【００２３】
本発明のいくつかの好ましい形態の一つによれば、ストレージ装置は、図１４を参照すると、情報の書き込み及び読み出しが行われる第１及び第２の記憶部（２２１、２３１）をそれぞれ備えた第１及び第２の記憶装置（２２、２３）を備え、前記第１の記憶部（２２１）は、前記第２の記憶部（２３１）よりもアクセスが高速であるか同等とされる。前記第１の記憶部（２２１）と第２の記憶装置（２３）は、それぞれ、前記第２の記憶部（２３１）の制御と管理に必要な管理情報（第２の記憶部管理情報）の少なくとも一部を記憶する記憶領域（２２３、２３２）を有する。アクセス制御部（２９）は、アクセス要求に対して、前記第２の記憶部（２３１）へアクセスするにあたり、前記第１の記憶部（２２１）に、該当する第２の記憶部管理情報が記憶されている場合（第１の記憶部でヒットした場合）、前記第１の記憶部（２２１）に記憶されている前記第２の記憶部管理情報（２２３）を参照して前記第２の記憶部（２３１）へのアクセスを行う。
【００２４】
本発明のいくつかの好ましい形態の一つによれば、前記第１の記憶部（２２１）に記憶されている第２の記憶部管理情報（２２３）を参照して、前記第２の記憶部（２３１）へのアクセスを行う構成としたことで、アクセスに対応する第２の記憶部管理情報が前記第１の記憶部（２２１）でヒットした場合には、低速なアクセス速度の記憶部をアクセスして第２の記憶部管理情報を取得する場合と比べて、アクセス時間を短縮し、アクセス性能を向上させることができる。また、第２の記憶装置（２３）で第２の記憶部管理情報を記憶することで、第２の記憶部（２３１）の記憶容量の増大に対して、第１の記憶部（２２１）の記憶容量の増大、あるいは、第１の記憶部（２２１）においてデータ格納領域が削減するか無くなり階層キャッシュの性能が著しく低下する、という課題を解消することができる。
【００２５】
図１５を参照すると、本発明の好ましい形態の１つにおいて、ストレージ装置（２）で記憶保持される情報を記憶する記憶媒体（２１）を備え、前記第１及び第２の記憶部（２２１、２３１）は、前記記憶媒体（２１）よりも高速とされ、前記記憶媒体（２１）に記憶される情報の一部の写し又は更新内容を記憶する。
【００２６】
前記第１の記憶装置（２２）は、前記第１の記憶部（２２１）の制御と管理に必要な管理情報を記憶する記憶領域（２２３）を、前記第１の記憶部（２２１）とは、別に備えている。前記第２の記憶装置（２３）は、前記第２の記憶部（２３１）の制御と管理に必要な管理情報を記憶する記憶領域（２３２）を、前記第２の記憶部（２３１）とは、別に備えている。
【００２７】
また、前記第１の記憶部（２２１）において、前記第２の記憶部の管理情報（２２３）を記憶する記憶容領域の容量値を設定する容量設定部（２７）を備えている。
【００２８】
前記第２の記憶部の管理情報（２２３）を記憶する記憶容量の値を、システムコンフィギュレーション、使用環境等、システム管理者の判断等で設定可能とすることで、システム性能のチューニングの最適化等に寄与する。
【００２９】
前記第２の記憶部（２３１）の制御と管理に必要な管理情報（第２の記憶部管理情報２３２）は、
・第１の記憶部（２２１）と第２の記憶装置（２３）、又は、
・第１の記憶部（２２１）と第２の記憶装置（２３）と記憶媒体（２１）
に備えた構成としてもよい。
【００３０】
本発明の好ましい形態の１つにおいて、アクセス制御部（２９）は、アクセス要求に応じて、前記第２の記憶部（２３１）にアクセスするにあたり、前記第１の記憶部（２２１）の記憶領域（２２３）に、該当する前記第２の記憶部管理情報が記憶されている場合には、前記第１の記憶部（２２１）に記憶されている前記第２の記憶部管理情報を参照して、前記第２の記憶部（２３１）へのアクセスを行い、一方、前記第１の記憶部（２２１）の記憶領域（２２３）に、該当する前記第２の記憶部管理情報が記憶されていない場合には、前記第２の記憶装置（２３）又は前記記憶媒体（２１）に記憶されている前記第２の記憶部管理情報（２３２）を参照して前記第２の記憶部（２３）へのアクセスを行うように制御する。
【００３１】
アクセス制御部（２９）は、前記第１の記憶部（２２１）に新たなデータを格納するにあたり、前記第１の記憶部（２２１）に、前記新たなデータの格納用の空き領域がない場合、前記第１の記憶部（２２１）において、前記第２の記憶部の管理情報の記憶に使用されている記憶領域の容量が、前記容量設定部（２７）で指定された容量値未満である場合には、前記第１の記憶部（２２１）に設けられた前記第２の記憶部の管理情報の記憶用の記憶領域のうち、前記第２の記憶部の管理情報の記憶に使用されていない記憶領域の一部を、データ格納用の空き領域として確保し、前記第１の記憶部（２２１）において、前記第２の記憶部の管理情報の記憶に使用されている記憶領域の容量が、前記容量設定部で指定された容量値未満でない場合には、前記第１の記憶部（２２１）において、前記第２の記憶部の管理情報の記憶に使用されている記憶領域（２２３）の一部を選択してデータ格納用の空き領域として確保し、前記データ格納用の空き領域にデータを格納する。
【００３２】
前記アクセス制御部（２９）は、前記第２の記憶装置（２３）又は前記記憶媒体（２１）に記憶されている前記第２の記憶部の管理情報を、前記第１の記憶部（２２１）に格納するにあたり、
前記第１の記憶部（２２１）に、前記第２の記憶部の管理情報格納用の空き領域がある場合、前記空き領域の任意の領域を、前記第２の記憶部の管理情報の格納用とし、前記第１の記憶部（２２１）に、前記第２の記憶部の管理情報格納用の空き領域がない場合、前記第１の記憶部（２２１）において、前記第２の記憶部の管理情報の記憶に使用されている記憶領域（２２３）の容量が、前記容量設定部（２７）で指定された容量値未満である場合には、前記第１の記憶部において、データ記憶用に確保されている記憶領域の一部を選択し、選択した前記記憶領域の一部を、前記第２の記憶部の管理情報の格納領域として確保し、
前記第１の記憶部（２２１）において、前記第２の記憶部の管理情報の記憶に使用されている記憶領域（２２３）の容量が、前記容量設定部（２７）で指定された容量値未満でない（容量値以上である）場合には、前記第１の記憶部（２１）に設けられた、前記第２の記憶部の管理情報の記憶用の記憶領域（２２３）の一部を選択し、選択した前記記憶領域の一部を、前記第２の記憶部の管理情報の格納領域として確保し、前記確保した格納領域に前記第２の記憶部の管理情報を格納する。
【００３３】
前記アクセス制御部（２９）は、前記第１の記憶部（２２１）において、前記第２の記憶部の管理情報の記憶に使用されている記憶領域（２２３）の容量が、前記容量設定部（２７）で指定された容量値以上であり、
前記第１の記憶部（２２１）において、前記第２の記憶部の管理情報を記憶する記憶領域（２２３）に含まれずデータを記憶する記憶領域、又は、前記第２の記憶部の管理情報を記憶する記憶領域（２２３）の一部を選択し、選択した前記記憶領域の一部を、新たなデータ、又は前記第２の記憶部の管理情報の格納領域に置き換えるにあたり、
前記第１の記憶部（２２１）において前記選択した記憶領域の一部に記憶されている、前記データ又は前記第２の記憶部の管理情報が更新され、且つ、前記更新内容が前記第２の記憶装置（２３）又は前記記憶媒体（２１）に反映されていない場合には、前記選択した記憶領域の一部に記憶されている前記データ又は前記第２の記憶部の管理情報の更新内容を、前記第２の記憶装置（２３）又は前記記憶媒体（２１）に反映した上で、前記選択した記憶領域の一部に、新たなデータ又は前記第２の記憶部の管理情報を格納する。
【００３４】
前記アクセス制御部（２９）は、アクセス対象のデータが前記第１の記憶部（２２１）に記憶されていない場合（例えば図６のＳ１０２のＮｏ分岐に対応）、前記第２の記憶部（２３１）に記憶されているか否か判定し（例えば図６のＳ１０４に対応）、前記第１の記憶部（２２１）にアクセス対象のデータを格納するための領域を確保し（例えば図６のＳ１０５に対応）、アクセス対象のデータが前記第２の記憶部（２３１）に記憶されている場合、前記第２の記憶部（２３１）の該当するデータを前記第１の記憶部（２２１）に格納し（例えば図６のＳ１０９に対応）、
アクセス対象のデータが前記第２の記憶部（２３１）に記憶されていない場合、前記記憶媒体（２１）の該当するデータを前記第１の記憶部に格納し（例えば図６のＳ１１０に対応）、前記第１の記憶部の管理情報を更新する（例えば図６のＳ１１１に対応）。
【００３５】
前記アクセス制御部（２９）は、前記第１の記憶部（２２１）にアクセス対象のデータを格納するための領域を確保するにあたり（例えば図６のＳ１０５に対応）、前記第１の記憶部（２２１）に空き領域がある場合（例えば図７の２０２に対応）、前記空き領域を、前記アクセス対象のデータを格納するための領域として確保し（例えば図７のＳ２０３に対応）、前記第１の記憶部（２２１）に空き領域がない場合、前記第１の記憶部（２２１）において前記第２の記憶部の管理情報の記憶に使用されている記憶領域（２２３）の容量が、前記容量設定部（２７）で指定された容量値以下である場合には（例えば図７のＳ２０５に対応）、前記第１の記憶部（２２１）において、前記第２の記憶部の管理情報の記憶のために使用されていない領域を、前記アクセス対象のデータを格納するための領域として確保する（例えば図７のＳ２０６に対応）。前記アクセス制御部（２９）は、前記第１の記憶部（２２１）において、前記第２の記憶部の管理情報の記憶に使用されている記憶領域（２２３）の容量が、前記容量設定部（２７）で指定された容量値を超えている場合には、前記第１の記憶部（２２１）において、前記第２の記憶部の管理情報の格納に使用されている記憶領域（２２３）の一部を、前記アクセス対象のデータ（新規データ）を格納するための領域として確保し（例えば図７のＳ２０７に対応）、前記確保した領域について、前記第２の記憶部の管理情報の更新が、前記第２の記憶装置（２３）に反映されていない場合には、前記更新を、前記第２の記憶装置（２３）に反映した上で（例えば図７のＳ２０９に対応）、前記領域を、前記第２の記憶部の管理情報格納用の記憶領域（２２３）から削除し（例えば図７のＳ２１０に対応）、前記アクセス対象のデータを格納するための領域とする。
【００３６】
前記アクセス制御部（２９）は、前記第１の記憶部（２２１）において、前記第２の記憶部の管理情報を記憶する記憶領域（２２３）に含まれない記憶領域の一部（前記第２の記憶部の管理情報の記憶のために使用されていない領域の一部）を、前記アクセス対象のデータを格納するための領域として確保する場合（例えば図７のＳ２０６に対応）、前記第１の記憶部（２２１）の前記領域のデータをコピーするために、前記第２の記憶部（２３１）に領域を確保し（例えば図８のＳ３０４に対応）、前記第１の記憶部（２２１）の前記領域のデータを、前記第２の記憶部（２３１）に確保した前記領域にコピーし（例えば図８のＳ３０９に対応）、前記第２の記憶部の管理情報を更新し（図８のＳ３１０に対応）、前記第１の記憶部（２２１）の前記領域を、前記アクセス対象のデータを格納するための領域とする。
【００３７】
前記アクセス制御部（２９）は、アクセス対象のデータが前記第１の記憶部（２２１）に記憶されていない場合に、前記第１の記憶部（２２１）に記憶されている前記第２の記憶部の管理情報を参照して、前記アクセス対象のデータが前記第２の記憶部（２３１）に記憶されているか否か判定するにあたり、前記第１の記憶部（２２１）に記憶されている前記第２の記憶部の管理情報でヒットした場合（例えば図９のＳ４２に対応）、該当する管理情報を取得し（例えば図９のＳ４３に対応）、前記第１の記憶部（２２１）に記憶されている前記第２の記憶部の管理情報でヒットしない場合、前記第２の記憶装置（２３）に記憶されている対応する前記第２の記憶部の管理情報を格納するための領域を、前記第１の記憶部（２２１）に確保し（例えば図９のＳ４４に対応）、前記第１の記憶部（２２１）に確保した前記領域に、対応する前記第２の記憶部の管理情報を格納し（図９のＳ４５）、該当する前記管理情報を取得し（例えば図９のＳ４３、Ｓ４５に対応）、前記第２の記憶部の管理情報を更新する（例えば図９のＳ４６に対応）。
【００３８】
前記アクセス制御部（２９）は、前記第２の記憶部の管理情報の更新にあたり（例えば図６のＳ１１１、図８のＳ３１０に対応）、前記第１の記憶部（２２１）に該当する前記第２の記憶部の管理情報が記憶されている場合（例えば図１０のＳ５２に対応）、前記管理情報を更新し（例えば図１０のＳ５３に対応）、前記第１の記憶部（２２１）に、該当する前記第２の記憶部の管理情報が記憶されていない場合、前記管理情報を格納するための領域を前記第１の記憶部（２２１）に確保して格納し（例えば図１０のＳ５４、Ｓ５５に対応）、前記管理情報を更新する（例えば図１０のＳ５６に対応）。
【００３９】
前記アクセス制御部（２９）は、前記第１の記憶部（２２１）に記憶されている前記第２の記憶部の管理情報でヒットしない場合（例えば図９のＳ４２のＮｏ分岐に対応）、前記第１の記憶部（２２１）に空き領域が存在するか確認し、前記第１の記憶部（２２１）に空き領域が存在する場合、前記空き領域を、前記第２の記憶部の管理情報格納用の領域として確保し（図１１のＳ６０３に対応）、前記第１の記憶部（２２１）に空き領域が存在しない場合、前記第１の記憶部（２２１）において、前記第２の記憶部の管理情報の記憶に使用されている記憶領域（２２３）の容量が、前記容量設定部（２７）で指定された容量値未満である場合には（例えば図１１のＳ６０５のYes分岐に対応）、前記第１の記憶部（２２１）において、前記第２の記憶部の管理情報用の記憶用に含まれない領域を、前記第１の記憶部（２２１）における前記第２の記憶部の管理情報を格納するための領域として確保し（例えば図１１のＳ６０６に対応）、前記第１の記憶部（２２１）において、前記第２の記憶部の管理情報の記憶に使用されている記憶領域（２２３）の容量が、前記容量設定部で設定された容量値未満でない（容量値以上である）場合には（例えば図１１のＳ６０５のＮｏ分岐に対応）、前記第１の記憶部（２２１）において、前記第２の記憶部の管理情報の格納用に既に使用されている一部の領域を、前記第１の記憶部（２２１）における前記第２の記憶部の管理情報を新たに格納するための格納領域として確保し（例えば図１１のＳ６０７に対応）、前記確保した領域について、前記第２の記憶部の管理情報の更新情報が、前記第２の記憶装置（２３）に反映されていない場合には、前記更新情報を前記第２の記憶装置（２３）に反映した上で（例えば図１１のＳ６０９に対応）、前記領域を空とし、前記空とした領域を、前記第２の記憶部の管理情報を新たに格納するための格納領域とする（例えば図１１のＳ６１０に対応）。
【００４０】
第１及び第２の記憶部（２２１、２３１）は階層化されたキャッシュを構成する。実施形態の理解のための、まず、その前提と原理に関する考察を記載する。
【００４１】
階層化されたキャッシュを持つストレージでは、例えば、各階層のデータの格納先として、上位のキャッシュから順番に高速な記憶媒体を使用する。例えば上位キャッシュ、下位キャッシュの２階層が存在するストレージでは、
・上位キャッシュのデータ格納先としてＤＲＡＭ等を用いる。
・下位キャッシュのデータ格納先に、上位キャッシュよりも低速なＳＳＤ等を用いる。
【００４２】
キャッシュは、格納するデータ本体以外に、キャッシュ自身を管理、制御するために必要な情報を持つ。例えばキャッシュは、データ格納先の領域を一定のサイズの連続した記憶領域を単位として管理するために必要な情報（キャッシュの記憶領域の管理単位を「ページ」という）のほか、例えば、
・ヒット判定に用いる情報、
・新規データの格納対象となるページの優先順位情報、
等のキャッシュの制御と管理に必要な情報である。キャッシュの制御と管理に必要な情報を総称して「ディレクトリ情報」という。
【００４３】
ディレクトリ情報は、例えばキャッシュヒットの判定時に参照、更新される。キャッシュのディレクトリ情報は、キャッシュに格納されたデータ（キャッシュに対するＲｅａｄアクセスやＷｒｉｔｅアクセス時のＲｅａｄデータ／Ｗｒｉｔｅデータ）よりも、頻繁にアクセスされる。
【００４４】
よって、アクセス頻度の高いキャッシュにおいてキャッシュ性能の維持又は向上を図るには、キャッシュに格納されたデータだけでなく、ディレクトリ情報についても、例えばＤＲＡＭ等のような、高速な記憶媒体に格納する必要がある。
【００４５】
階層化されたキャッシュを持つストレージでは、上位キャッシュでミスが発生した場合に、下位キャッシュに対してヒットの判定が行われる。キャッシュにおいて、ヒット判定の処理性能は、アクセスへの応答時間に影響する。
【００４６】
このため、ストレージ全体の性能の向上を図るには、例えば、下位キャッシュのディレクトリ情報を、上位キャッシュと同一のＤＲＡＭ等の高速な記憶媒体に格納する必要がある。
【００４７】
この場合、上位キャッシュに格納されたデータと、上位キャッシュのディレクトリ情報と、下位キャッシュのディレクトリ情報を、ＤＲＡＭ等の同一の記憶媒体上に格納する必要がある。
【００４８】
しかし、下位キャッシュのディレクトリ情報を上位キャッシュに格納する場合、上位キャッシュの記憶媒体の記憶容量が問題となる。
【００４９】
キャッシュのディレクトリ情報において、該キャッシュを構成する各ページの管理に必要な情報が、必要な記憶容量の大部分を占める。ページの総数は、キャッシュの容量に比例する。このため、キャッシュの記憶容量の増加に比例して、ディレクトリ情報の容量が増加する。
【００５０】
一般に、階層化されたキャッシュにおいて、高速な上位キャッシュに比べて、低速な下位キャッシュは、大きな記憶容量を持つ。
【００５１】
下位キャッシュでは、一般に、データ本体が格納される記憶媒体は、ディレクトリ情報が格納される記憶媒体とは別に独立して設けられる。
【００５２】
下位キャッシュにおいて、キャッシュされるデータ本体が格納される記憶媒体が大容量である場合、下位キャッシュのディレクトリ情報の格納に必要な記憶容量も大容量となる。
【００５３】
下位キャッシュのディレクトリ情報を、上位キャッシュの記憶媒体に格納する構成において、下位キャッシュのディレクトリ情報の格納に必要な記憶容量が、上位キャッシュで利用可能な容量を上回り、容量不足が発生する場合がある（この場合、上位キャッシュにデータを格納することができなくなる）。
【００５４】
つまり、複数階層のキャッシュを持つストレージにおいて、上位キャッシュ及び下位キャッシュのディレクトリ情報が格納される記憶媒体の総容量を超えない範囲で、各階層のキャッシュ容量を決定する必要がある。
【００５５】
このとき、ストレージに対するワークロード（Work Load：資源の利用状況）が一定であれば、各キャッシュの階層に対して、高速な記憶媒体の総容量を超えない範囲で、例えばアクセス性能を最大化するように各容量を最適化することができる。しかし、ストレージに対するワークロードは、時間の経過、ストレージにアクセスするホストで動作するプログラムの種類等によって変化する。
【００５６】
さらに、ホストで動作する複数のプログラム（プロセス、スレッド）が、ストレージに対して並列にアクセスを行う場合、並列動作するプログラムの組み合わせによって、ワークロードが変化する。つまり、アクセス性能を最適化するように、各キャッシュ階層の容量を決定するためには、ストレージに対するワークロードを例えば定期的に調べ、各キャッシュ階層の容量を変更する必要がある。
【００５７】
キャッシュ容量の変更を実現するためには、各キャッシュ階層のディレクトリ情報において、容量の増減を行うためのデータ構造が必要である。
【００５８】
しかしながら、キャッシュのディレクトリ情報に、キャッシュ容量の増減に対応したデータ構造を用いた場合、キャッシュ性能の低下を引き起こす場合がある。例えばキャッシュの容量が一定であれば、キャッシュ内のページ数は一定である。キャッシュの特定のページのディレクトリ情報にアクセスするためには、一定サイズのページ毎のディレクトリ情報が並べられた配列に対して、配列のインデックス（配列要素を指すインデックス）を用いることで、直ちに（余分な処理を伴わずに）、当該情報（インデックスの配列要素に格納されたページのディレクトリ情報）へのアクセスが可能である。
【００５９】
一方、キャッシュ容量が増減する場合、キャッシュ内のページ数は一定ではなく容量に応じて変わるため、上記した配列（ページ毎のディレクトリ情報が並べられた配列）のインデックスで、対応するページのディレクトリ情報をアクセスすることはできない。現在のキャッシュ容量がｎページであり、ｍページ分に増加／減少させる場合、ｍページ分のディレクトリ情報を動的に追加／削除可能なデータ構造（例えば動的バッファ管理等に用いられるキュー構造）とする必要がある。このように、ディレクトリ情報のデータ構造が複雑化する結果、該ディレクトリ情報において、目的とする情報にアクセスするために、配列のような簡単なデータ構造のディレクトリ情報と比べて、余分な処理時間を伴う。
【００６０】
また、キャッシュ容量の増減を可能にするには、キャッシュ容量が一定の場合とは異なり、余分なディレクトリ情報（キュー構造の場合、次の要素へのポインタ情報）が必要になる。その結果、ディレクトリ情報の容量が増大する。さらに、ディレクトリ情報が、上位キャッシュの記憶媒体の容量を圧迫する。
【００６１】
ストレージのアクセス性能等を最大化するために、キャッシュの容量を直接変更するのではなく、階層キャッシュの上位、下位のキャッシュが使用するＤＲＡＭ等の高速な記憶媒体の容量のみを可変させる方法が挙げられる。具体的には、下位キャッシュの制御と管理に用いられるディレクトリ情報のうち、アクセス頻度の高い一部を、上位キャッシュの記憶媒体に一時的に格納し、その他のディレクトリ情報は、同等又はより低速な記憶媒体に格納する。
【００６２】
上位キャッシュのＤＲＡＭ等の高速な記憶媒体において、ディレクトリ情報の格納に使用する容量のみを変更することで、ディレクトリ情報のデータ構造を変更することは付与不要とされる。この手法では、上位キャッシュのＤＲＡＭ等の高速な記憶媒体に格納されていない下位キャッシュのディレクトリ情報へのアクセスが必要になった場合には、低速な記憶媒体への参照が行われるため、アクセス性能の低下が発生する。しかしながら、上位キャッシュのＤＲＡＭ等の高速な記憶媒体に格納されていない下位キャッシュのディレクトリ情報は、アクセス頻度が低いものである。このため、上位キャッシュのＤＲＡＭ等の高速な記憶媒体に格納されていないディレクトリ情報へのアクセスが必要となった場合でも、ストレージ全体の性能への影響は小さく抑えられる。
【００６３】
しかし、ディレクトリ情報のうち、アクセス頻度の高い一部の情報のみを格納するには、ディレクトリ情報におけるアクセス頻度を監視し、定期的に、高速な記憶媒体に格納するアクセス頻度の高いディレクトリ情報の入れ替えを行う要がある。
【００６４】
キャッシュ内に、データのキャッシュ制御のみでなく、ディレクトリ情報のキャッシュ機能を持つ必要がある。
【００６５】
よって、上位キャッシュにおいて、高速な記憶媒体に対して、データキャッシュ機能と、ディレクトリ情報キャッシュ機能の複数の実装が並存することになる。この結果、制御ソフトウェアの処理、複雑性が増加する。また、保守性の減少につながる。
【００６６】
さらに、複数の階層のキャッシュを持つストレージでは、多くの場合、各キャッシュが別々に制御されており、各階層間で、例えば上位キャッシュの高速な記憶媒体で使用していない容量を、直接、他の階層の記憶媒体に割り当てることは、困難である。
【００６７】
上記のとおり、複数キャッシュ階層を持つストレージにおいて、各階層のキャッシュによる、高速な記憶媒体の容量の効率的な配分、利用が困難である。
【００６８】
実施形態によれば、前記した図１４の第１の記憶部（２２１）を、上位キャッシュとし、前記第２の記憶部（２３１）を下位キャッシュとする。また、第２の記憶装置（２３）又は記憶媒体２１）に格納された前記第２の記憶部（２３１）の管理情報が、前記下位キャッシュのディレクトリ情報である。前記上位キャッシュに、前記下位キャッシュのディレクトリ情報の一部の複製又は更新情報が格納され、第１の記憶装置（２２）は、第１の記憶部（２２１）である前記上位キャッシュのディレクトリ情報を格納する記憶部（２２２）を、前記上位キャッシュとは別に備えた構成とされる。
【００６９】
すなわち、少なくとも上位キャッシュ（２２１）、下位のキャッシュ（２３１）の階層キャッシュ構成のストレージにおいて、上位キャッシュのデータ本体と、ディレクトリ情報が格納される記憶媒体に、下位キャッシュのディレクトリ情報を格納する場合に、上位キャッシュ、及び、下位キャッシュのディレクトリ情報が使用する前記記憶媒体の容量を、まとめて効率的に管理し、前記記憶媒体において、ある階層が使用しない容量を、他の階層に直接割り当てるための機能を備えている。
【００７０】
具体的には、上位キャッシュに、下位キャッシュのディレクトリ情報の一部又は全てを格納し、上位キャッシュ内において、下位キャッシュのディレクトリ情報の格納に使用される容量を、可変に調整することで、上位キャッシュと下位キャッシュが使用する記憶媒体の容量を、直接的かつ効率的に管理する。
【００７１】
下位キャッシュのディレクトリ情報の一部を、上位キャッシュに格納するためには、下位キャッシュの全ディレクトリ情報を格納することが可能な記憶領域を、上位キャッシュの格納先とは異なる記憶媒体に用意する必要がある。
【００７２】
例えば、ストレージで記憶領域の単位として用いられるボリュームを、物理的又は仮想的に定義し、前記ボリュームを、下位キャッシュのディレクトリ情報を格納するための専用の記憶領域として使用する。本明細書では、下位キャッシュのディレクトリ情報を格納するためのボリュームをディレクトリボリューム、「Ｄ−Ｖｏｌ」（Ｄｉｒｅｃｔｏｒｙ  Ｖｏｌｕｍｅ）という。
【００７３】
Ｄ−Ｖｏｌ（図３の２３２）は、下位キャッシュのディレクトリ情報の全てを格納するために十分な容量を有する。Ｄ−Ｖｏｌに格納された下位キャッシュのディレクトリ情報のうち、アクセス頻度の高い一部の情報を優先的に、上位キャッシュに格納する。ただし、上位キャッシュにおいて、下位キャッシュのディレクトリ情報の格納に利用可能な容量を上回らない範囲とする。
【００７４】
ストレージにおいて、キャッシュのパーティショニングをＤ−Ｖｏｌに対して適用することで、上位キャッシュに、Ｄ−Ｖｏｌ専用のパーティション（「Ｄ−Ｐａｒｔｉｔｉｏｎ」という、図３のＤ−Ｐａｒｔｉｔｉｏｎ２２３参照）を定義する。上位キャッシュ上の当該Ｄ−Ｐａｒｔｉｔｉｏｎ内に下位キャッシュのディレクトリ情報が格納される。上位キャッシュにパーティション（Ｄ−Ｐａｒｔｉｔｉｏｎ）を設け、当該パーティションを下位キャッシュのディレクトリ情報格納用に所定の容量を確保可能としている。
【００７５】
また上位キャッシュのキャッシュ置換制御により、下位キャッシュのディレクトリ情報の中からアクセス頻度の高いディレクトリ情報が、優先的に、上位キャッシュのＤ−Ｐａｒｔｉｔｉｏｎ内に格納される。
【００７６】
なお、上位キャッシュのＤ−Ｐａｒｔｉｔｉｏｎ内に格納される、下位キャッシュのディレクトリ情報のページの置換は、キャッシュデータのページ置換と同様に、例えばＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）等任意の公知の置換アルゴリズムが用いられる。また、キャッシュされるデータと同様、上位キャッシュのＤ−Ｐａｒｔｉｔｉｏｎ内から置換されるページ（下位キャッシュのディレクトリ情報を含むページ）は、更新が反映されていない場合には、下位キャッシュのディレクトリボリュームＤ−Ｖｏｌに反映した上で置換される。また、下位キャッシュのディレクトリボリュームＤ−Ｖｏｌに記憶されるディレクトリ情報は、基本的に、上位キャッシュのＤ−Ｐａｒｔｉｔｉｏｎ内に格納される下位キャッシュのディレクトリ情報を含む構成とされるが（Ｄ−Ｐａｒｔｉｔｉｏｎのディレクトリ情報は、下位キャッシュのディレクトリボリュームＤ−Ｖｏｌのディレクトリ情報の写し、又は更新情報）、上位キャッシュのＤ−Ｐａｒｔｉｔｉｏｎ内に格納される下位キャッシュのディレクトリ情報が、下位キャッシュのディレクトリボリュームＤ−Ｖｏｌに含まれないか、含まれない場合を許容する構成であってもよいことは勿論である。
【００７７】
さらに、一般的なストレージにおけるパーティショニング機能が持つ各パーティションの容量を変更する機能を用いることで、Ｄ−Ｐａｒｔｉｔｉｏｎの記憶容量は、可変自在とされる。つまり、上位キャッシュにおいて、下位キャッシュのディレクトリ情報の格納に使用する容量の値の変更が可能である。
【００７８】
上記した機能を複数階層のキャッシュを持つストレージで実現するために、
・ストレージに保持されるデータを記憶保持する記憶媒体と、
・記憶媒体上のデータをキャッシュする、高速な上位キャッシュ及び低速な下位キャッシュと、
・上位キャッシュと下位キャッシュの情報の格納に用いる１次高速記憶及び２次高速記憶と、
・下位キャッシュのディレクトリ情報を格納するための記憶領域であるＤ−Ｖｏｌと、
・上位キャッシュ上に、Ｄ−Ｖｏｌに対して定義されたパーティションであるＤ−Ｐａｒｔｉｔｉｏｎと、
・下位キャッシュのディレクトリ情報へのアクセスを、Ｄ−Ｖｏｌに対するアクセスに変換する機能と、
・Ｄ−Ｐａｒｔｉｔｉｏｎの記憶容量を指定する機能と、
を備える。
【００７９】
具体的には、ストレージの全データを格納する記憶媒体として、例えばＨＤＤ又はＳＳＤが用いられる。記憶媒体は、単体又は複数のユニットから構成される。
【００８０】
上位キャッシュ、及び、下位キャッシュは、前記記憶媒体に格納されたデータのうち、アクセス頻度の高いデータの複製又は更新を格納する。また、下位キャッシュに対して、上位キャッシュは、よりアクセス頻度の高いデータに対する複製又は更新を格納する。
【００８１】
１次高速記憶（図３の２２）は、前記上位キャッシュ（図３の２２１）に格納されるデータ、及び、ディレクトリ情報を実際に格納する記憶媒体である。
【００８２】
１次高速記憶（図３の２２）は、前記下位キャッシュ（図３の２３１）のディレクトリ情報を格納する。一方、２次高速記憶（図３の２３）は、前記下位キャッシュ（２３１）に格納されるデータを実際に格納する記憶媒体である。1次高速記憶、２次高速記憶共に前記記憶媒体に比べて高速なアクセスが可能であり、1次高速記憶（図３の２２）は２次高速記憶（図３の２３）に比べてより高速なアクセスが可能である。
【００８３】
Ｄ−Ｖｏｌ（図３の２３２）は、２次高速記憶（２３）等、ストレージ内に存在する１次高速記憶以外の記憶媒体上に定義され、下位キャッシュ（２３１）のディレクトリ情報を格納する。Ｄ−Ｖｏｌ（図３の２３２）に格納された下位キャッシュのディレクトリ情報は、ストレージ外部から参照されないように、ストレージ全体の記憶領域には割り当てられず、独立して存在する。
【００８４】
Ｄ−Ｐａｒｔｉｔｉｏｎ（図３の２２３）は、前記上位キャッシュの領域上に定義され、上位キャッシュにおいて、前記Ｄ−Ｖｏｌ（図３の２３２）に格納された下位キャッシュのディレクトリ情報を格納するために設けられたパーティションである。上位キャッシュ（２２１）上に定義されたパーティションであるため、Ｄ−Ｐａｒｔｉｔｉｏｎ（図３の２２３）に格納された下位キャッシュのディレクトリ情報は、1次高速記憶（２２）上に格納される。Ｄ−Ｐａｒｔｉｔｉｏｎ（図３の２２３）は、Ｄ−Ｖｏｌ（図３の２３２）に対する専用のキャッシュとして動作する。下位キャッシュ（２３１）のディレクトリ情報は、Ｄ−Ｐａｒｔｉｔｉｏｎ（２２３）以外の上位キャッシュ（２２１）の領域には格納されない。
【００８５】
下位キャッシュ（図３の２３１）のディレクトリ情報へのアクセスを、Ｄ−Ｖｏｌ（２３２）に対するアクセスに変換する機能（以下、「Ｄ−Ｖｏｌアクセス変換機能」という）は、下位キャッシュ（２３１）の制御において、ディレクトリ情報の読み書き処理を、Ｄ−Ｖｏｌ（図３の２３２）の対応するアドレスへのＲｅａｄ又はＷｒｉｔｅ要求に変換する。
【００８６】
変換後のＲｅａｄ、Ｗｒｉｔｅ要求は、他の記憶領域に対するアクセスと同様にして、処理が行われ、Ｄ−Ｐａｒｔｉｔｉｏｎ（２２３）、又は、Ｄ−Ｖｏｌ（２３２）に格納されたディレクトリ情報へのアクセスが行われる。
【００８７】
Ｄ−Ｐａｒｔｉｔｉｏｎ（２２３）の容量を指定する機能（例えば図２のパーティション容量設定部２７に対応）は、ストレージの外部又は内部から入力された容量の指定を入力として、Ｄ−Ｐａｒｔｉｔｉｏｎ（２２３）の容量を設定する。
【００８８】
Ｄ−Ｐａｒｔｉｔｉｏｎ（２２３）の容量が変更された場合、上位キャッシュ（２２１）は、前記容量の変更を満たすように格納されたデータの置換を行う。
【００８９】
本実施形態によれば、上位キャッシュ（２２１）に、下位キャッシュ（２３１）のディレクトリ情報の一部をキャッシュすることで、上位キャッシュ（２２１）の容量、及び、前記下位キャッシュ（２３１）のディレクトリ情報が使用する前記記憶媒体の容量について、各階層が使用しないＤＲＡＭ等に代表される高速な記憶媒体の容量を、他の階層に、効率的かつ即時の割り当てを実現する。
【００９０】
また、上位キャッシュ（２２１）のＤ−Ｐａｒｔｉｔｉｏｎ（２２３）に格納された、下位キャッシュ（２３１）のディレクトリ情報に対して、上位キャッシュ（２２１）がデータの置換を行うことで、アクセス頻度の高いディレクトリ情報が優先的に高速な記憶媒体に格納される。
【００９１】
上位キャッシュ（２２１）において、下位キャッシュ（２３１）のディレクトリ情報が使用する容量は、Ｄ−Ｐａｒｔｉｔｉｏｎ（２２３）の容量で制限される。
【００９２】
そのため、高速な記憶媒体に格納されていないディレクトリ情報へのアクセスに伴う性能低下を最小限に防ぎつつ、下位キャッシュのディレクトリ情報を高速な記憶媒体に格納していた場合に比べて高速な記憶媒体の容量を圧迫することなく、下位キャッシュの容量増加を可能にする。
【００９３】
＜実施形態１＞
例示的な実施形態のシステム構成について図面を参照して説明する。図１は、例示的な実施形態の構成例を例示する図である。図１を参照すると、システムは、データにアクセスする１台以上のホスト１、単体又は複数の記憶媒体から構成されるストレージ２、及び、ホスト１、ストレージ２を接続するネットワーク３を含む。
【００９４】
ネットワーク３は、ストレージ２に対して複数のホスト１が接続可能な形態のみならず、ホスト１とストレージ２が直接接続される形態であってもよい。またストレージ２は、ネットワーク３によって接続された複数の装置、あるいは、システムによって構成されてもよい。
【００９５】
次に、ストレージ２の構成について図２、図３を参照して説明する。図２は、実施形態１におけるストレージ２の構成を例示した図である。図２を参照すると、ストレージ２は、ストレージ２に格納される情報を格納する記憶媒体２１と、１次高速記憶２２と、２次高速記憶２３と、アクセス要求処理部２４と、ディレクトリ情報アクセス変換部２５と、データアクセス部２６と、パーティション容量設定部２７と、アクセステーブル２８と、を備えている。図３は、１次高速記憶２２、及び、２次高速記憶２３の構成を模式的に示す図である。
【００９６】
＜記憶媒体＞
図２を参照すると、記憶媒体２１は、ストレージ２の記憶領域全体のデータを格納し、例えばＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、又はＮＡＮＤフラッシュ等で構成されたＳＳＤのような単体又は複数の記憶媒体から構成される。なお、図２では、簡単のため、記憶媒体２１を１台（ユニット）で表しているが、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）等複数の記憶媒体（ディスクアレイ）を備えた構成としてもよいことは勿論である。
【００９７】
＜１次高速記憶＞
１次高速記憶２２は、記憶媒体２１に対してより高速な媒体であり、例えば記憶媒体２１が、ＨＤＤ又はＳＳＤである場合にＤＲＡＭ等の高速な媒体で構成される。
【００９８】
図３を参照すると、１次高速記憶２２は、記憶媒体２１又は２次高速記憶２３に格納されたデータ・情報の写し（複製）と更新内容を一時的に記憶保持（キャッシュ）する上位キャッシュ２２１と、上位キャッシュ２２１のディレクトリ情報である上位ディレクトリ情報２２２を備えている。１次高速記憶２２において、上位ディレクトリ情報２２２を記憶する記憶領域は、上位キャッシュ２２１の記憶領域とは別に設定されるが、上位ディレクトリ情報２２２を記憶する記憶領域を構成する記憶素子は、上位キャッシュ２２１を構成するＤＲＡＭ等と同一デバイスとしてもよいことは勿論である。
【００９９】
上位キャッシュ２２１において、ストレージ２の記憶媒体２１の記憶領域に保持されるデータを、ページ単位で管理する。さらに、上位キャッシュ２２１内にパーティションＤ−Ｐａｒｔｉｔｉｏｎ２２３を設定する。なお、ストレージ２の記憶媒体２１がＨＤＤ等の場合、ディスクアクセス単位となるブロックのサイズは、例えば５１２バイト、１０２４（１Ｋ）バイト、２Ｋ、あるいは、４Ｋバイト等となる。キャッシュの記憶領域の単位であるページのサイズは、例えば５１２バイトから４Ｋバイト、あるいは８Ｋバイト（場合によってはより大きな値）とされ、例えば、ページアドレス（ページ番号）とページ内のオフセットでアクセスされる。なお、ページアドレスを物理ページアドレスに変換するアドレス変換テーブル等は、図３では省略されている。
【０１００】
＜２次高速記憶＞
２次高速記憶２３は、１次高速記憶２２と同様に、記憶媒体２１に対してより高速である。１次高速記憶２２と同等又はより低速な媒体である。例えば記憶媒体２１がＨＤＤ、１次高速記憶がＤＲＡＭである場合には、ＳＳＤ等の中間的な性能を持つ媒体で構成される。
【０１０１】
２次高速記憶２３は、図３を参照すると、
・記憶媒体２１に格納されたデータの写し又は更新内容を一時的に記憶保持（キャッシュ）する下位キャッシュ２３１と、
・下位キャッシュ２３１のディレクトリ情報を格納するためのボリュームであるＤ−Ｖｏｌ２３２と、を備えている。
【０１０２】
下位キャッシュ２３１は、記憶媒体２１の記憶領域上のデータをページ単位で管理する。下位キャッシュ２３１におけるページサイズは、上位キャッシュ２２１と共通であることを前提とする。この場合、ページサイズを、上位キャッシュ２２１、下位キャッシュ２３１、記憶媒体２１で共通としてもよい。あるいは、下位キャッシュにおけるページサイズを上位キャッシュ２２１とは共通としない構成であってもよい。
【０１０３】
図３において、Ｄ−Ｖｏｌ２３２は、２次高速記憶２３に格納される構成に制限されるものではない。例えばＤ−Ｖｏｌ２３２を、１次高速記憶２２以外の任意の媒体に格納する構成としてもよい。例えば、１つの変形例として、Ｄ−Ｖｏｌ２３２を図２の記憶媒体２１に格納する構成としてもよい。この場合、以下の動作の説明等において、図３の２次高速記憶２３のＤ−Ｖｏｌ２３２は、図２の記憶媒体２１内のＤ−Ｖｏｌに読み替えられる。あるいは、図３のＤ−Ｖｏｌ２３２を、２次高速記憶２３と記憶媒体２１とに備えた構成としてもよい。
【０１０４】
＜アクセス要求処理部＞
図２のアクセス要求処理部２４は、ストレージ２が、ホスト１から受理したアクセス要求を解釈し、アクセス要求に従った処理を行い、アクセス処理の処理結果を、アクセス要求元であるホスト１に返す。アクセス要求処理部２４は、アクセス要求を解釈し（コマンドをデコードしＲｅａｄアクセスであるかをＷｒｉｔｅアクセスであるか等を判別する）、アクセス要求（Ｒｅａｄであるか、Ｗｒｉｔｅであるか）に応じた制御を行う。アクセス要求処理部２４は、アクセス処理の実行制御にあたり、データアクセス部２６を介して、１次高速記憶２２上の上位キャッシュ２２１、２次高速記憶２３上の下位キャッシュ２３１、記憶媒体２１の順に、アクセスを行う。例えばデータ読出し要求のＲｅａｄアクセスの実行にあたり、以下のアクセス制御が行われる。
【０１０５】
（ａ）１次高速記憶２２上の上位キャッシュ２２１でヒットすれば（アクセス対象のデータを含むページが上位キャッシュ２２１に格納されている）、２次高速記憶２３上の下位キャッシュ２３１、記憶媒体２１へのアクセスは行われない。
【０１０６】
（ｂ）１次高速記憶２２上の上位キャッシュ２２１でミスであるが（アクセス対象のデータを含むページが上位キャッシュ２２１に格納されていない）、２次高速記憶２３上の下位キャッシュ２３１でヒットすれば（アクセス対象のデータを含むページが下位キャッシュ２３１に格納されている）、記憶媒体２１へのアクセスは行われない。
【０１０７】
（ｃ）１次高速記憶２２上の上位キャッシュ２２１でミスであり、且つ、２次高速記憶２３上の下位キャッシュ２３１でミスであれば（アクセス対象のデータを含むページが上位キャッシュ２２１、下位キャッシュ２３１のいずれにも格納されていない）、記憶媒体２１へのアクセスが行われる。
【０１０８】
なお、１次高速記憶２２上の上位キャッシュ２２１でミスであるが、２次高速記憶２３上の下位キャッシュ２３１でヒットした場合（上記（ｂ）のケース）、ヒットした下位キャッシュ２３１のページを、１次高速記憶２２上の上位キャッシュ２２１に新規ページとしてページの入れ替えを行う。上位キャッシュ２２１におけるページの入れ替えは、例えば上位キャッシュ２２１において、当該入れ替え発生の時点で、上位キャッシュ２２１においてそれまで最も長く参照されないページ選択して空ページとし、下位キャッシュ２３１のヒットしたページのデータを格納し、新規ページとして上位キャッシュ２２１に登録することで行われる。
【０１０９】
また、１次高速記憶２２上の上位キャッシュ２２１でミスであり、且つ、２次高速記憶２３上の下位キャッシュ２３１でミスの場合（上記（ｃ）のケース）、記憶媒体２１のデータを含むページを、１次高速記憶２２上の上位キャッシュ２２１に、新規ページとして入れ替えを行うようにしてもよい。  
【０１１０】
アクセス要求処理部２４において、２次高速記憶２３上の下位キャッシュ２３１でのヒット／ミスの判定は、上位キャッシュ２２１内のＤ−Ｐａｒｔｉｏｎ２２３、又は、２次高速記憶２３のＤ−Ｖｏｌ２３２のディレクトリ情報に基づき行われる。アクセス要求処理部２４は、これら上位キャッシュ２２１内のＤ−Ｐａｒｔｉｏｎ２２３、及び、２次高速記憶２３のＤ−Ｖｏｌ２３２のディレクトリ情報は、データアクセス部２６を介してアクセスする。
【０１１１】
アクセス要求処理部２４は、Ｒｅａｄアクセスの応答として、上位キャッシュ２２１、又は下位キャッシュ２３１、又は記憶媒体２１から読み出したデータを、アクセス要求元であるホスト１に送信する。
【０１１２】
ホスト１（図１）からの書き込み要求（更新要求）に応じたＷｒｉｔｅアクセスでは、
アクセス要求処理部２４は、データアクセス部２６を介して、１次高速記憶２２上の上位キャッシュ２２１（図３）に確保された空きページに、Ｗｒｉｔｅデータを格納する。なお、上位キャッシュ２２１に空きページを確保するにあたり、データアクセス部２６は、例えば上位キャッシュ２２１において、それまで最も長く参照されないものから必要な数のページを追い出し、これを空ページとするようにしてもよい。なお、Ｗｒｉｔｅデータ格納用に空ページを確保するにあたり、更新が行われているが当該更新内容が記憶媒体２１又は２次高速記憶２３に反映されていないページについては、当該更新内容を記憶媒体２１又は２次高速記憶２３に反映した上で、Ｗｒｉｔｅデータ格納用の空ページとして確保するようにしてもよい。アクセス要求処理部２４は、Ｗｒｉｔｅアクセスに対する応答として、書き込みの完了をアクセス要求元であるホスト１に通知する。１次高速記憶２２上の上位キャッシュ２２１にデータの書き込みが行われたページは、記憶媒体２１にライトバック（WriteBack）される。
【０１１３】
＜ディレクトリ情報アクセス変換部＞
図２のディレクトリ情報アクセス変換部２５は、アクセス要求処理部２４が下位キャッシュ２３１（図３）にアクセスする際に必要とされるディレクトリ情報に対するアクセスを、上位キャッシュ２２１内のＤ−Ｐａｒｔｉｔｉｏｎ２２３に対するアクセス要求に変換する。ディレクトリ情報アクセス変換部２５で変換された、アクセス要求処理部２４からの下位キャッシュディレクトリ情報へのアクセス要求は、データアクセス部２６に渡され、データアクセス部２６を介して、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３へのアクセスが行われる。データアクセス部２６は、アクセス対象の下位キャッシュ２３１のディレクトリ情報が、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３にキャッシュされているか否かを調べる（Ｄ−Ｐａｒｔｉｔｉｏｎ２２３は、Ｄ−Ｖｏｌ２３２に格納される下位キャッシュ２３１のディレクトリ情報をキャッシュするために上位キャッシュ２２１に設けられたパーティションである）。
【０１１４】
上位キャッシュ２２内のＤ−Ｐａｒｔｉｔｉｏｎ２２３に該当する下位キャッシュ２３１のディレクトリ情報（下位ディレクトリ情報）が格納されている場合、データアクセス部２６は、下位キャッシュ２３１のディレクトリ情報として、上位キャッシュ２２１におけるＤ−Ｐａｒｔｉｔｉｏｎ２２３に格納されたディレクトリ情報にアクセスし、アクセス要求処理部２４に引き渡す。
【０１１５】
一方、上位キャッシュ２２内のＤ−Ｐａｒｔｉｔｉｏｎ２２３でミスした場合、データアクセス部２６は、２次高速記憶２３のＤ−Ｖｏｌ２３２に格納されたディレクトリ情報（下位ディレクトリ情報）にアクセスする。
【０１１６】
データアクセス部２６は、アクセス要求処理部２４、及びディレクトリ情報アクセス変換部２５からの指示により、記憶媒体２１、１次高速記憶２２の上位キャッシュ２２１、及び２次高速記憶２３の下位キャッシュ２３１の間でデータ／情報をページ単位で読み書きし、コピー、移動、更新の反映を行う。なお、図２及び図３では、記憶媒体２１、１次高速記憶２２、２次高速記憶２３は、データアクセス部２６を介して相互接続される構成として示されており、データアクセス部２６は、図示されないハードウエアリソースとして、記憶媒体２１、１次高速記憶２２、２次高速記憶２３間のバス、及びバスインタフェース（バスアダプタ）等を含む。
【０１１７】
＜パーティション容量設定部＞
パーティション容量設定部２７は、１次高速記憶２２の上位キャッシュ２２１上に設定されたＤ−Ｐａｒｔｉｔｉｏｎ２２３の容量（記憶容量）を、ストレージ２の外部又はストレージ２の内部で指定された容量に設定する。ストレージ２の外部からの設定として例えば不図示の管理サーバ等から、パーティション容量設定部２７にＤ−Ｐａｒｔｉｔｉｏｎ２２３の容量を設定してもよい。ストレージ２の内部でのＤ−Ｐａｒｔｉｔｉｏｎ２２３の容量の指定としては、ストレージ２のシステムコンフィギュレーション設定時において該容量を設定するようにしてもよい。Ｄ−Ｐａｒｔｉｔｉｏｎ２２３の容量は、例えば上位キャッシュ２２１におけるパーティションのページ数によって定義される。上位キャッシュ２２１、及びＤ−Ｐａｒｔｉｔｉｏｎ２２３において、ページ単位の置換が行われる。パーティション容量設定部２７は、例えば、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３の設定容量値を記憶保持するＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory）等電気的に書き換え可能な不揮発メモリ等で構成し、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３の容量設定値として、データアクセス部２６を介して、アクセス要求処理部２４等で参照できるようにしてもよい。パーティション容量設定部２７で設定される容量値は、可変とされ、例えば、システムの動作環境、負荷等に応じて可変に調整するようにしてもよい。
【０１１８】
実施形態１では、パーティション容量設定部２７で指定されたＤ−Ｐａｒｔｉｔｉｏｎの容量値が、上位キャッシュ２２１において、実際のＤ−Ｐａｒｔｉｔｉｏｎ２２３のページ数（ディレクトリ情報格納用のページ数）と異なる場合には、実際のＤ−Ｐａｒｔｉｔｉｏｎ２２３のページ数が、パーティション容量設定部２７に設定された容量設定値に、より近づくか、あるいは等しくなる（ほぼ等しくなる）ように、ページの置換が行われる。
【０１１９】
例えばＤ−Ｐａｒｔｉｔｉｏｎ２２３において、下位キャッシュのディレクトリ情報の記憶に使用されているページ数がパーティション容量設定部２７で指定されたページ数よりも少ない場合には、２次高速記憶２３のＤ−Ｖｏｌ２３２から下位キャッシュ２３１のディレクトリ情報を読み込んだ場合に、上位キャッシュ２２１のデータ格納用のページ（Ｄ−Ｐａｒｔｉｔｉｏｎ２２３に含まれないページ）を選択して、下位キャッシュ２３１のディレクトリ情報格納用のページ（Ｄ−Ｐａｒｔｉｔｉｏｎ２２３のページ）への置き換えを行うことで、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３の実際のページ数（下位キャッシュのディレクトリ情報の記憶に使用されているページ数）がパーティション容量設定部２７で指定されたページ数と等しくなるか、より近づくようにする。
【０１２０】
上位キャッシュ２２１のデータ格納用のページを、下位キャッシュ２３１のディレクトリ情報格納用のページ（Ｄ−Ｐａｒｔｉｔｉｏｎ２２３のページ）へ置き換えるにあたり、ディレクトリ情報格納用のページへ置き換えられた当該ページに含まれているデータ自体は、上位キャッシュ２２１から、廃棄してもよい。
【０１２１】
下位キャッシュ２３１のディレクトリ情報格納用のページへ置き換えられた当該ページ（上位キャッシュ２２１のデータ格納用のページ）のデータの破棄に伴い、上位ディレクトリ情報２２２が変更される。あるいは、ディレクトリ情報格納用のページへ置き換えられる当該ページのデータを、下位キャッシュ２３１に、新規ページとして格納するようにしてもよい。この場合、下位キャッシュ２３１のディレクトリ情報（図３のＤ−Ｖｏｌ２３２又は、上位キャッシュ２２１内のＤ−Ｐａｒｔｉｏｎ２２３）が変更される。
【０１２２】
逆に、上位キャッシュ２２１のＤ−Ｐａｒｔｉｔｉｏｎ２２３（図３参照）において、ディレクトリ情報格納用のページの数が、パーティション容量設定部２７で指定されたページ数よりも多い場合には、アクセス要求に対して、上位キャッシュ２２１でミスが発生した場合に、上位キャッシュ２２１のＤ−Ｐａｒｔｉｔｉｏｎ２２３のディレクトリ情報格納用ページの中から、例えば１ページを選択して、該選択したページを、データ格納用のページに置き換える。そして、上位キャッシュ２２１でミスしたデータを含むページが、データアクセス部２６を介して、下位キャッシュ２３１又は記憶媒体２１から読み出され、上位キャッシュ２２１において、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３のディレクトリ情報格納用ページからデータ格納用への置き換えが行われた当該ページに格納される。
【０１２３】
＜アクセステーブル＞
図２において、アクセステーブル２８は、アクセス要求処理部２４がホスト１から受理したアクセス要求を処理するために、記憶媒体２１、１次高速記憶２２の上位キャッシュ２２１（図３）、２次高速記憶２３の下位キャッシュ２３１、Ｄ−Ｖｏｌ２３２（図３）に対するアクセス先のページアドレスを格納する。
【０１２４】
図２において、アクセステーブル２８に格納されたページアドレスは、アクセス要求処理部２４によって参照される。アクセス要求処理部２４において、アクセス対象のページのデータが、下位キャッシュ２３１（図３）に格納されている場合に、アクセス処理中に、例えば、当該データをロックし、当該データが他のページのデータによって置換されることを防ぐ相互排他（mutual exclusion）のためにアクセステーブル２８が用いられる。
【０１２５】
アクセステーブル２８に格納されたページアドレスは、対応するアクセス処理の完了時に、アクセス要求処理部２４によって削除される（アンロック）。
【０１２６】
次に、図３における、１次高速記憶２２内の上位ディレクトリ情報２２２に格納された上位キャッシュ２２１のディレクトリ情報（上位ディレクトリ情報）と、２次高速記憶２３内のＤ−Ｖｏｌ２３２に格納された下位キャッシュ２３１のディレクトリ情報（下位ディレクトリ情報）についてそれぞれ説明する。
【０１２７】
＜上位ディレクトリ情報の構成例＞
図４は、図３の上位ディレクトリ情報２２２の内容の一例を例示した図である。図４を参照すると、上位ディレクトリ情報２２２は、無効フラグ、Ｄ−Ｐａｒｔｉｔｉｏｎ、ページアドレス、格納先アドレス、更新済フラグ、置換優先度の欄を１エントリとしてページ毎に有する。
【０１２８】
無効フラグは、該当ページについてディレクトリ情報が無効であるか、すなわち、対応する上位キャッシュ２２１のページが未使用であるか否かを表すフラグである。該当ページについてディレクトリ情報が無効（未使用である）の場合、Ｙｅｓ、無効でない（使用されている）場合、Ｎｏである。なお、無効フラグの値Ｙｅｓ／Ｎｏは例えば１ビット情報（あるいは１バイト／ワード）の１／０で表現するようにしてもよい。
【０１２９】
Ｄ−Ｐａｒｔｉｔｉｏｎ（フラグ情報）は、上位キャッシュ２２１の各ページに対して、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３に含まれるページであるか否かを表すフラグである。Ｄ−Ｐａｒｔｉｔｉｏｎフラグの値Ｙｅｓは、当該ページが、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３に含まれるページ（下位ディレクトリ情報格納用のページ）である、Ｄ−Ｐａｒｔｉｔｉｏｎフラグの値Ｎｏは、当該ページがＤ−Ｐａｒｔｉｔｉｏｎ２２３に含まれるページ（ディレクトリ情報格納用ページ）ではない（データ格納用のページである）、ことを表している。
【０１３０】
ページアドレスは、上位キャッシュ２２１に格納されたページについてストレージ２全体での対応するページアドレス（例えば論理アドレス空間でのページ番号）である。
【０１３１】
格納先アドレスは、当該ページの上位キャッシュ２２１における格納先を表すアドレスである。
【０１３２】
更新済フラグは、当該ページのデータが上位キャッシュ２２１に格納された後に、更新済であるかを表すフラグである。更新済フラグは、上位キャッシュ２２１の当該ページにデータが格納された後に、該ページのデータが更新され、記憶媒体２１へは該更新内容が反映されていない場合に、更新済み（Ｙｅｓ）とされ、上位キャッシュ２２１の当該ページにデータが格納された後に、該ページのデータが未更新状態であるか、記憶媒体２１へ更新内容が反映されている場合に、Ｎｏとされる。
【０１３３】
置換優先度は、当該ページの置換における優先度を表す情報である（値の設定としては、例えば正値に関して、大きいほど、優先的に置換される、あるいは、値が小さいほど、優先的に置換される、のいずれかに設定される）。
【０１３４】
上位ディレクトリ情報２２２において、各欄の情報のうち、上位キャッシュ２２１における格納先を表す格納先アドレスは、各ページに対応したディレクトリ情報の大きさが同一であり、整列されて格納されている場合には、省略可能である。例えば図４に示すように、格納先アドレスは１、２、３・・・と１つずつ増加しており、各ページに対応したディレクトリ情報の大きさが同一、且つ、順番に整列されて格納される場合、格納先アドレスは不要である。
【０１３５】
また、上位ディレクトリ情報２２２において、各ページのディレクトリ情報が無効であるか否かを表す無効フラグは、無効である場合に、対応するページアドレスを予め定められた特定の値（例えばページアドレスとしてとり得ない負値）に変更する等の方法により、省略することが可能である。
【０１３６】
さらに、上位ディレクトリ情報２２２として、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３が上位キャッシュ２２１に占める容量を記録してもよい。Ｄ−Ｐａｒｔｉｔｉｏｎ２２３が上位キャッシュ２２１に占める容量を記録することで、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３の容量（ディレクトリ情報格納用ページの数）が、パーティション容量設定部２７で指定された容量値（ページ数）を満たすか否かを判定する判定処理の負荷を軽減することができる。この判定処理は、上位キャッシュ２２１において、ディレクトリ情報格納用ページのデータ格納用のページへの置換、又はその逆の置換対象のページを決定するために行われる。
【０１３７】
＜下位ディレクトリ情報の構成例＞
図５は、２次高速記憶２３のＤ−Ｖｏｌ２３２に格納された下位キャッシュ２３１のディレクトリ情報（下位ディレクトリ情報）の内容の一例を例示した図である。図５を参照すると、下位ディレクトリ情報２３２１は、無効フラグ、ページアドレス、格納先アドレス、更新済フラグ、置換優先度の欄を１エントリとしてページ毎に有する。
【０１３８】
無効フラグは、また各ページについて対応するディレクトリ情報が無効であるか、つまり対応する下位キャッシュ２３１のページが未使用であるか否かを表すフラグである。該当ページについてディレクトリ情報が無効（未使用である）の場合、Ｙｅｓ、無効でない（使用されている）場合、Ｎｏである。なお、無効フラグの値Ｙｅｓ／Ｎｏは例えば１ビット情報（あるいは１バイト／ワード）の１／０で表現するようにしてもよい。
【０１３９】
ページアドレスは、下位キャッシュ２３１に格納されたページについてストレージ２全体での対応するページアドレスである。
【０１４０】
格納先アドレスは、当該ページの下位キャッシュ２３１における格納先を表すアドレスである。
【０１４１】
更新済フラグは、当該ページのデータが下位キャッシュ２３１に格納された後に更新済であるか否かを表すフラグである。更新済フラグは、例えば下位キャッシュ２３１の当該ページにデータが格納された後に更新されたが、記憶媒体２１へ該更新内容が反映されていない場合にＹｅｓとされ、下位キャッシュ２３１の当該ページにデータが格納された後に、該ページのデータが未更新状態であるか、記憶媒体２１へ該更新内容が反映された場合に、Ｎｏとされる。
【０１４２】
置換優先度は、当該ページの置換における優先度を表す情報である（値の設定としては、例えば正値に関して、大きいほど、優先的に置換される、あるいは、値が小さいほど、優先的に置換される、のいずれかに設定される。但し、上位ディレクトリ情報の置換優先度の採番方法と共通の採番方法とされる）。
【０１４３】
下位ディレクトリ情報２３２１において、上記各欄の情報のうち下位キャッシュ２３１における格納先を表すアドレスは、各ページに対応したディレクトリ情報の大きさが同一であり、整列されて格納されている場合には、省略可能である。また各ページのディレクトリ情報が無効であるか表すフラグは、対応するページアドレスをディレクトリ情報が無効である場合に、特定の値に変更する等の方法により、省略が可能である。
【０１４４】
次に、実施形態の動作について説明する。
【０１４５】
＜Ｒｅａｄ、Ｗｒｉｔｅアクセス要求処理＞
図６は、Ｒｅａｄ、Ｗｒｉｔｅアクセス処理を説明する流れ図である。図１乃至図６を参照して、実施形態におけるＲｅａｄアクセス又はＷｒｉｔｅアクセス要求処理を行う動作の概要について説明する。
【０１４６】
図１において、ホスト１からストレージ２に対してアクセス要求が行われると、図２のストレージ２において、アクセス要求処理部２４がアクセス要求を解釈し、アクセス対象となるページのアドレスをアクセステーブル２８に登録する。また、アクセス要求処理部２４は、データアクセス部２６を介して、上位キャッシュ２２１のディレクトリ情報である上位ディレクトリ情報２２２（図３）にアクセスし、アクセス対象となるページが上位キャッシュ２２１（図３）に格納されているか否かの判定（ヒット判定）を行う（図６のステップＳ１０１）。アクセス要求処理部２４でのヒット／ミスの判定は、アクセス対象となるページのアドレスと同一のページアドレスが、上位ディレクトリ情報２２２に格納されているか否かで行われる。例えば図４において、上位ディレクトリ情報２２２のページアドレスがアクセス対象となるページのアドレスと一致し、無効フラグがＮｏ、Ｄ−ＰａｒｔｉｔｉｏｎフラグがＮｏのページが存在する場合に、ヒット判定となる。
【０１４７】
上位キャッシュ２２１（図３）に、アクセス対象となるページが格納されている場合（ヒットした場合）（図６のステップＳ１０２のＹｅｓ分岐）、図２のアクセス要求処理部２４は、データアクセス部２６を介して、上位キャッシュ２２１のヒットしたページに対するアクセスを実行する。そして、アクセス要求処理部２４は、１次高速記憶２２の上位ディレクトリ情報２２２（図３）に含まれる、ヒットした当該ページのディレクトリ情報（図４参照）を更新する（置換優先度、更新の場合、更新済フラグの設定等）。その後、ステップＳ１１３以降（連結子１）の処理を実行する（図６のステップＳ１０３）。
【０１４８】
一方、上位キャッシュ２２１（図３）に、アクセス対象となるページが格納されていない場合（ミスした場合）（図６のステップＳ１０２のＮｏ分岐）、図２のアクセス要求処理部２４は、ディレクトリ情報アクセス変換部２５を介して、下位キャッシュ２３１のディレクトリ情報を読み出し、アクセス対象となるページが下位キャッシュ２３１に格納されているか否かの判定（ヒット判定）を行う（図６のステップＳ１０４）。なお、アクセス要求処理部２４は、ディレクトリ情報アクセス変換部２５を介して、上位キャッシュ２２１のＤ−Ｐａｒｔｉｔｉｏｎ２２３内に格納された下位ディレクトリ情報２３２１（図５）を参照し、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３内にアクセス対象の下位ディレクトリ情報２３２１が格納されていない場合、２次高速記憶２３のＤ−Ｖｏｌ２３２を参照する。
【０１４９】
図２のアクセス要求処理部２４は、データアクセス部２６を介して、上位キャッシュ２２１（図３）に対して、新たにアクセスされるデータを格納するための空きページを確保する。データアクセス部２６は、空きページを確保するために、上位キャッシュ２２１（図３）のページに対する置換を行う（図６のステップＳ１０５）。すなわち、上位キャッシュ２２１に空きページを確保するにあたり、データアクセス部２６は、例えば上位キャッシュ２２１において、それまで最も長く参照されないものから必要な数のページを追い出し、これを空ページに置換するようにしてもよい。上位キャッシュ２２１（図３）から追い出されたページは、例えば下位キャッシュ２３１（図３）に格納され、上位ディレクトリ情報２２２（図３、図４）、下位ディレクトリ情報２３２１（図５）が更新される。
【０１５０】
アクセス要求がＷｒｉｔｅ（書き込み）の場合（図６のステップＳ１０６のＹｅｓ分岐)、アクセス要求処理部２４は、データアクセス部２６を介して上位キャッシュ２２１（図３）にページを確保し、確保された空きページに、Ｗｒｉｔｅデータを書き込み（図６のステップＳ１０７）、その後、ステップＳ１１１以下を行う。
【０１５１】
アクセス要求がＲｅａｄ（読み出し）の場合（図６のステップＳ１０６のＮｏ分岐）、ステップＳ１０４での判定結果が、下位キャッシュ２３１（図３）がヒットしているものである場合（図６のステップＳ１０８のＹｅｓ分岐）、図２のアクセス要求処理部２４は、データアクセス部２６を介して、下位キャッシュ２３１のヒットしたページに対するアクセスを実行する。また、アクセス要求処理部２４は、データアクセス部２６を介して、下位キャッシュ２３１のヒットしたページから読み出したデータで、上位キャッシュ２２１に含まれる任意のページを置換して、図６のステップＳ１１１以降の処理を実行する（図６のステップＳ１０９）。
【０１５２】
下位キャッシュ２３１（図３）がミスした場合（図６のステップＳ１０８のＮｏ分岐）、図２のアクセス要求処理部２４は、データアクセス部２６を介して、記憶媒体２１に対してアクセス要求を実行する。アクセス要求処理部２４は、データアクセス部２６を介して、記憶媒体２１よりアクセスしたデータを、ページ単位で、上位キャッシュ２２１（図３）に格納する。さらに、上位キャッシュ２２１に新たなデータが格納されることで、置換されるページ（上位キャッシュ２２１から追出されるページ）のデータを追い出して、下位キャッシュ２３１に移動する。下位キャッシュ２３１において、上位キャッシュ２２１の当該ページのデータの移動により、置換されるページを削除する（上位キャッシュ２２１から下位キャッシュ２３１に追い出されたデータを格納するために、下位キャッシュ２３１のページのデータを削除し空ページを確保する）。なお、削除されるページが更新されていた場合（当該ページの更新フラグがオン）には、アクセス要求処理部２４は、データアクセス部２６を介して、記憶媒体２１に該更新内容を反映する（図６のステップＳ１１０）。
【０１５３】
図２において、アクセス要求処理部２４は、ディレクトリ情報アクセス変換部２５を介して、図３の上位キャッシュ２２１のＤ−Ｐａｒｔｉｔｉｏｎ２２３、又は、２次高速記憶２３のＤ−Ｖｏｌ２３２に格納された下位キャッシュ２３１のディレクトリ情報（下位ディレクトリ情報）を更新する（図６のステップＳ１１１）。すなわち、ステップＳ１０５乃至Ｓ１１０等による、図３の下位キャッシュ２３１におけるページの状態の変更を、上位キャッシュ２２１のＤ−Ｐａｒｔｉｔｉｏｎ２２３、又は、２次高速記憶２３のＤ−Ｖｏｌ２３２に反映させる。
【０１５４】
図２において、アクセス要求処理部２４は、データアクセス部２６を介して、１次高速記憶２２の上位ディレクトリ情報２２２（図３）に含まれる、置換を行ったページの情報を更新する（図６のステップＳ１１２）。ステップＳ１０５乃至Ｓ１１０等による、上位キャッシュ２２１（図３）におけるページの状態の変更を、１次高速記憶２２の上位ディレクトリ情報２２２に反映させる。
【０１５５】
図６では、ステップＳ１０９における、上位ディレクトリ情報２２２（図３）の更新は、ステップＳ１０８の下位キャッシュ２３１のディレクトリ情報の更新より後に行われているが、ステップＳ１０８と同時、又は、ステップＳ１０８よりも先に行うようにしてもよい。
【０１５６】
図２において、アクセス要求処理部２４は、Ｒｅａｄアクセス要求の結果であるＲｅａｄデータ、又は、Ｗｒｉｔｅアクセスの完了通知を、アクセス要求元のホスト１（図１）に対して返し、処理を終了する（図６のステップＳ１１３）。図６のステップＳ１０８〜Ｓ１１０は、上位、下位キャッシュ２２１、２３１でミスヒット時に、記憶媒体２１からアクセスデータを読み出し、上位キャッシュ２２１に格納するというＲｅａｄアクセスの一例を説明している。
【０１５７】
Ｗｒｉｔｅアクセスでは、図３の上位キャッシュ２２１及び下位キャッシュ２３１でミスヒット時に、上位キャッシュ２２１にページを確保して書き込みを行い、その後、記憶媒体２１にライトバック（ｗrite  back）する構成としてもよい。この場合、ホスト１（図１）へのＷｒｉｔｅアクセスの完了通知は、上位キャッシュ２２１へのデータ格納の完了を契機として行うようにしてもよい。
【０１５８】
以上のステップＳ１０１からＳ１１３までの処理を行い、実施形態におけるＲｅａｄアクセス又はＷｒｉｔｅアクセス要求処理を行う動作が完了する。
【０１５９】
＜上位キャッシュにおける新規データ格納用ページの確保＞
図７は、図６のステップＳ１０５の処理を説明するための流れ図である。図６のステップＳ１０５では、前述したように、アクセス要求処理部２４がデータアクセス部２６を介して、１次高速記憶２２の上位キャッシュ２２１において新たにアクセスされるデータを格納するための空きページを確保する。図１乃至図５、図７を参照して、図６のステップＳ１０５（上位キャッシュにおける新規データ格納用ページの確保）の詳細について説明する。
【０１６０】
図２のアクセス要求処理部２４は、データアクセス部２６を介して、上位ディレクトリ情報２２２（図３）における各ページのディレクトリ情報の無効フラグを参照し、上位キャッシュ２２１（図３）に空きページ（無効フラグがＹｅｓの未使用ページ）が存在するか否かを確認する（図７のステップＳ２０１）。上位キャッシュ２２１に、空きページが存在する場合（図７のステップＳ２０２のＹｅｓ分岐）、アクセス要求処理部２４は、データアクセス部２６を介して、上位キャッシュ２２１の空きページのうちの任意のページを、新規データ格納のための空きページとして確保して、処理を終了する（図７のステップＳ２０３）。
【０１６１】
上位キャッシュ２２１に空きページが存在しない場合（図７のステップＳ２０２のＮｏ分岐）、アクセス要求処理部２４は、データアクセス部２６を介して、上位ディレクトリ情報２２２（図４）を参照して、図３の上位キャッシュ２２１に含まれる、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３の容量を確認する。上位キャッシュ２２１に含まれるＤ−Ｐａｒｔｉｔｉｏｎ２２３の容量は、図４の上位ディレクトリ情報２２２の「Ｄ−Ｐａｒｔｉｔｉｏｎ」の欄がＹｅｓのページ（Ｄ−Ｐａｒｔｉｔｉｏｎ２２３に含まれるページ）の合計から算出される。
【０１６２】
図２のアクセス要求処理部２４は、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３（図３）の容量（現在の容量）を、図２のパーティション容量設定部２７で指定されたＤ−Ｐａｒｔｉｔｉｏｎ２２３の容量値（閾値）と比較する（図７のステップＳ２０４）。Ｄ−Ｐａｒｔｉｔｉｏｎ２２３（図３）の現在の容量が、図２のパーティション容量設定部２７で指定された容量値以下であった場合（図７のステップＳ２０５のＹｅｓ分岐）、アクセス要求処理部２４は、上位キャッシュ２２１に含まれるページのうち、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３に含まれないページ（図４のＤ−Ｐａｒｔｉｔｉｏｎフラグ欄の値がＮｏのページ）のデータを削除して、空きページとし、新規に格納するデータのために確保して、処理を終了する（図７のステップＳ２０６）。
【０１６３】
一方、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３（図３）の容量が、パーティション容量設定部２７で指定された容量値よりも大きい場合には（図７のステップＳ２０５のＮｏ分岐）、アクセス要求処理部２４は、上位キャッシュ２２１に含まれるページのうち、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３に含まれる任意のページ（下位ディレクトリ情報格納用のページ）について、新規にデータを格納するためのページとして選択する（図７のステップＳ２０７）。Ｄ−Ｐａｒｔｉｔｉｏｎ２２３に含まれるページ（下位ディレクトリ情報格納用のページ）から新規にデータを格納するためのページを選択し、該ページを新規データ格納用ページとして確保するにあたり、当該時点で、それまえ最も長く使用されないページ（下位ディレクトリ情報格納用のページ）を選択するようにしてもよい。
【０１６４】
上位ディレクトリ情報２２２（図３）に記録されたディレクトリ情報（図４の更新済フラグ）から、図７のステップＳ２０７で確保したページが更新済ではない場合には（図７のステップＳ２０８のＮｏ分岐）、図２のアクセス要求処理部２４は、図７のステップＳ２１０以降の処理を実行する。
【０１６５】
上位ディレクトリ情報２２２（図３）に記録されたディレクトリ情報から、図７のステップＳ２０７で確保したページが更新済である場合には（図７のステップＳ２０８のＹｅｓ分岐）、図２のアクセス要求処理部２４は、ステップＳ２０７で確保したＤ−Ｐａｒｔｉｔｉｏｎ２２３（図３）に含まれるページについて、該ページに対応する下位キャッシュ２３１のＤ−Ｖｏｌ２３２（図３）のページに、図７のステップＳ２０７で確保した当該ページの更新内容を反映する（図７のステップＳ２０９）。
【０１６６】
図２のアクセス要求処理部２４は、データアクセス部２６を介して、ステップＳ２０７で確保した当該ページ（上位キャッシュ２２１のＤ−Ｐａｒｔｉｔｉｏｎ２２３に含まれていた当該ページ）を、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３から削除する（すなわち、当該ページを、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３に含まれないように設定する。上位ディレクトリ情報２２２のＤ−Ｐａｒｔｉｔｉｏｎフラグ（図４）をＮｏに設定する）。また、アクセス要求処理部２４は、データアクセス部２６を介して、確保したページを、新規にデータを格納するための空きページとし、上位ディレクトリ情報２２２（図３）に対して、図７のステップＳ２０７等による上位キャッシュ２２１のページの変更を反映させる更新を行った上で、処理を終了する（図７のステップＳ２１０）。
【０１６７】
以上のステップＳ２０１からＳ２１０までの処理を行い、アクセス要求処理部２４は、データアクセス部２６を介して、上位キャッシュ２２１に対して新たにアクセスされるデータを格納するための空きページを確保する動作（図６のステップＳ１０５）が完了する。
【０１６８】
＜Ｄ−Ｐａｒｔｉｔｉｏｎに含まれない新規データ格納用の空きページの確保＞
図８は、図７のステップＳ２０６の処理を説明するための流れ図である。図７のステップＳ２０６では、上位キャッシュ２２１に含まれるページのうち、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３に含まれないページを、新規データに格納用のページとして確保する。次に図１乃至図５、図７、図８を参照して、新規データ格納用の空きページの確保（図７のステップＳ２０６）について説明する。
【０１６９】
図２のアクセス要求処理部２４は、データアクセス部２６を介して、上位キャッシュ２２１のＤ−Ｐａｒｔｉｔｉｏｎ２２３、又は、２次高速記憶２３のＤ−Ｖｏｌ２３２（図３）にアクセスして、下位ディレクトリ情報２３２１（図５）を参照し、下位キャッシュ２３１において、
・上位キャッシュ２２１で確保されたページ（Ｄ−Ｐａｒｔｉｔｉｏｎ２２３に含まれないページ（図４のＤ−Ｐｒａｔｉｏｎフラグの値がＮｏのページ））と同一アドレスに対応したページ、又は、
・下位キャッシュ２３１の空きページ
を探索する（図８のステップＳ３０１）。
【０１７０】
ステップＳ３０１における探索の結果、上位キャッシュ２２１（図３）で確保されたページと同一アドレスに対応したページが下位キャッシュ２３１（図３）に存在する場合には（図８のステップＳ３０２のＹｅｓ分岐）、図２のアクセス要求処理部２４は、ステップＳ３０９以降の処理を実行する。
【０１７１】
ステップＳ３０１での探索の結果、上位キャッシュ２２１で確保されたページと同一アドレスに対応したページが下位キャッシュ２３１に存在しない場合には（図８のステップＳ３０２のＮｏ分岐）、アクセス要求処理部２４は、ステップＳ３０３以降の処理を実行する。
【０１７２】
ステップＳ３０３での探索の結果、下位キャッシュ２３１に空きページが存在する場合（図８のステップＳ３０３のＹｅｓ分岐）、アクセス要求処理部２４は、データアクセス部２６を介して、下位キャッシュ２３１における任意の空きページを、新規データの格納に伴い上位キャッシュ２２１から置換される（追い出される）ページのデータを格納するために、確保する（図８のステップＳ３０４）。
【０１７３】
ステップＳ３０３での探索の結果、下位キャッシュ２３１に空きページが存在しない場合（図８のステップＳ３０３のＮｏ判定）、アクセス要求処理部２４は、下位ディレクトリ情報２３２１を参照して下位キャッシュ２３１の任意のページから、新規データの格納に伴い上位キャッシュ２２１から置換される（追い出される）ページのデータ格納のために使用するページを選択する。このとき、アクセス要求処理部２４は、アクセステーブル２８を併せて参照して、アクセス中のページを、上位キャッシュ２２１から置換される（追い出される）ページのデータ格納のために使用するページの選択対象から、除外する（図８のステップＳ３０５）。
【０１７４】
ステップＳ３０５で選択したページが、未更新の状態である場合（図５の下位ディレクトリ情報２３２１において、選択した当該ページの更新済フラグの値がＮｏ）（図８のステップＳ３０６のＹｅｓ判定）、アクセス要求処理部２４は、ステップＳ３０８以降の処理を実行する。
【０１７５】
ステップＳ３０５で選択したページが更新されている場合（図５の下位ディレクトリ情報２３２１において、選択した当該ページの更新済フラグの値がＹｅｓ）（図８のステップＳ３０６のＮｏ分岐）、アクセス要求処理部２４は、データアクセス部２６を介してステップＳ３０５で選択した下位キャッシュ２３１のデータを、記憶媒体２１に書き込み、更新を反映する（図８のステップＳ３０７）。
【０１７６】
アクセス要求処理部２４は、データアクセス部２６を介して、上位キャッシュ２２１のＤ−Ｐａｒｔｉｔｉｏｎ２２３、及び、２次高速記憶２３のＤ−Ｖｏｌ２３２に格納された下位ディレクトリ情報２３２１（図５）を更新し、ステップＳ３０５で選択した下位キャッシュ２３１のページのデータを削除する（図８のステップＳ３０８）。
【０１７７】
アクセス要求処理部２４は、データアクセス部２６を介して、上位キャッシュ２２１において、新規データ格納用に確保されたページのデータを、ステップＳ３０５で選択された下位キャッシュ２３１のページにコピーする。その際、アクセス要求処理部２４は、下位キャッシュ２３１側のページへのデータのコピーが行われる上位キャッシュ２２１のページに対応した上位ディレクトリ情報２２２に含まれる情報を、下位ディレクトリ情報（例えば下位キャッシュ２３１のＤ−Ｐａｒｔｉｔｉｏｎ２２３における対応するページエントリ）にコピーする（図８のステップＳ３０９）。
【０１７８】
アクセス要求処理部２４は、データアクセス部２６を介して上位ディレクトリ情報２２２にアクセスし、新規データの格納のために確保された上位キャッシュ２２１のページのデータを削除し空きページとする。また、アクセス要求処理部２４は、データアクセス部２６を介して、上位キャッシュ２２１のＤ−Ｐａｒｔｉｔｉｏｎ２２３と２次高速記憶２３のＤ−Ｖｏｌ２３２に格納された下位ディレクトリ情報２３２１のうち、上位キャッシュ２３１から追い出されるページのデータを格納するページに関する情報を更新する（図８のステップＳ３１０）。
【０１７９】
図７のステップＳ２０１からＳ２１０までの処理を行い、ステップＳ２０６における、上位キャッシュ２２１に含まれるページのうち、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３に含まれないページを新規に格納するデータのために確保する動作が完了する。
【０１８０】
＜下位キャッシュディレクトリ情報の読み出し動作＞
図９は、図６のステップＳ１０４、及び、図８のステップＳ３０１における、下位キャッシュディレクトリ情報の読み出し処理を説明する流れ図である。前述したように、図８のステップＳ３０１では、アクセス要求処理部２４は、上位キャッシュ２２１で確保したページと同一アドレスに対応するページ、又は、下位キャッシュ２３１の空きページ、下位キャッシュ２３１から探索する。次に図１乃至図６、図８、図９を参照して、図６のステップＳ１０４及び、図８のステップＳ３０１におけるディレクトリ情報アクセス変換部２５を介して、下位キャッシュ２３１のディレクトリ情報である下位ディレクトリ情報（図５の２３２１）を読み出す動作について説明する。
【０１８１】
アクセス要求処理部２４は、ディレクトリ情報アクセス変換部２５に対して、下位ディレクトリ情報（図５の２３２１）から、必要な情報を一意に特定するためのアドレス等の情報（識別子）を指定して、読み出し要求を行う。
【０１８２】
ディレクトリ情報アクセス変換部２５は、前記識別子を、２次高速記憶２３のＤ−Ｖｏｌ２３２における前記識別子が表すディレクトリ情報が格納されたアドレスに変換する。
【０１８３】
また、ディレクトリ情報アクセス変換部２５は、データアクセス部２６を介して、１次高速記憶２２の上位ディレクトリ情報２２２（図３）にアクセスし、上位キャッシュ２２１のＤ−Ｐａｒｔｉｔｉｏｎ２２３内に、読み出し対象のディレクトリ情報（下位キャッシュ２３１の該当するディレクトリ情報）を含むページが格納されているか否かの判定（ヒット判定）を行う（図９のステップＳ４１）。
【０１８４】
１次高速記憶２２の上位ディレクトリ情報２２２から、上位キャッシュ２２１のＤ−Ｐａｒｔｉｔｉｏｎ２２３内に、要求されたディレクトリ情報を含むページが格納されている場合（ヒットした場合）（図９のステップＳ４２のＹｅｓ分岐）、ディレクトリ情報アクセス変換部２５は、データアクセス部２６を介して、上位キャッシュ２２１のＤ−Ｐａｒｔｉｔｉｏｎ２２３に対して、ヒットしたページ（下位キャッシュ２３１のディレクトリ情報を含むページ）に対する読み出しを実行し、図９のステップＳ４６以降の処理を実行する（図９のステップＳ４３）。
【０１８５】
上位キャッシュ２２１のＤ−Ｐａｒｔｉｔｉｏｎ２２３において要求されたディレクトリ情報がミスした場合（図９のステップＳ４２のＮｏ分岐）、ディレクトリ情報アクセス変換部２５は、上位キャッシュ２２１上のＤ−Ｐａｒｔｉｔｉｏｎ２２３内に、２次高速記憶２３のＤ−Ｖｏｌ２３２に格納された下位ディレクトリ情報（図５の２３２１）のコピー（写し）を格納するためのページを確保する（図９のステップＳ４４）。なお、ディレクトリ情報アクセス変換部２５において、このページの確保にあたり、１次高速記憶２２の上位ディレクトリ情報２２２に基づき、上位キャッシュ２２１のＤ−Ｐａｒｔｉｔｉｏｎ２２３に格納されたページ（図４の上位ディレクトリ情報２２２において、無効フラグがＮｏ、Ｄ−ＰａｒｔｉｔｉｏｎフラグがＹｅｓのページ）の中から、置換優先度が最も置換され易い値のページを選択するようにしてもよい。図４の上位ディレクトリ情報２２２において、ページの置換優先度の値が大（小）であるほど、優先度が高い場合、値の大きな（小さな）ページが、置換対象として選択される。
【０１８６】
ディレクトリ情報アクセス変換部２５は、データアクセス部２６を介して、２次高速記憶２３のＤ−Ｖｏｌ２３２に対して要求されたデータの読み出しを実行する。また、ディレクトリ情報アクセス変換部２５は、２次高速記憶２３のＤ−Ｖｏｌ２３２から読み出したデータを、１次高速記憶２２の上位キャッシュ２２１のＤ−Ｐａｒｔｉｔｉｏｎ２２３において、下位ディレクトリ情報の写し格納用に確保されたページに格納する。
【０１８７】
さらに、ディレクトリ情報アクセス変換部２５は、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３において、下位ディレクトリ情報の写し格納用に確保したページが、当該確保の時点までに更新されており、且つ、更新結果が反映していない場合（図４の上位ディレクトリ情報２２２において、無効フラグがＮｏ、Ｄ−ＰａｒｔｉｏｎフラグがＹｅｓ、更新済フラグがＹｅｓ、置換優先度が１番目に置換対象であることを示す値のページ）、当該ページに、下位ディレクトリ情報の写しを格納する前に、当該ページの更新内容（下位ディレクトリ情報）を、２次高速記憶２３のＤ−Ｖｏｌ２３２に含まれる下位ディレクトリ情報（図５参照）の該当ページエントリの情報に、反映させる（図９のステップＳ４５）。
【０１８８】
ディレクトリ情報アクセス変換部２５は、データアクセス部２６を介して、１次高速記憶２２の上位ディレクトリ情報２２２に含まれるページの情報（図４参照）のうちＤ−Ｐａｒｔｉｔｉｏｎ２２３においてヒットしたページ（図９のステップＳ４２のでＹｅｓ判定の該当ページ）もしくは、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３に格納されたページ（図９のステップＳ４５でＤ−Ｐａｒｔｉｔｉｏｎ２２３に格納したページ）のディレクトリ情報を更新する（図９のステップＳ４６）。例えば上位ディレクトリ情報２２２の該当ページの置換優先度（図４）を、例えば、最も最近使用されたページに対応する値（最も置換され難い値）に設定する。また、該当ページのディレクトリ情報の更新済フラグがＹｅｓ（更新済み）であった場合、Ｎｏ（未更新）に設定する。
【０１８９】
ディレクトリ情報アクセス変換部２５は、要求された下位キャッシュ２３１のディレクトリ情報である下位ディレクトリ情報の読み出し結果を、アクセス要求処理部２４に返し、処理を終了する（図９のステップＳ４７）。
【０１９０】
以上のステップＳ４１からＳ４７までの処理を行い、図６のステップＳ１０４、及び図８のステップＳ３０１における、ディレクトリ情報アクセス変換部２５による処理を介して、下位キャッシュ２３１のディレクトリ情報である下位ディレクトリ情報（図５の２３２１）を読み出す動作が完了する。
【０１９１】
＜下位キャッシュのディレクトリ情報の更新（Ｗｒｉｔｅ）動作＞
図１０は、図６のステップＳ１０９、及び図８のステップＳ３１０における下位キャッシュのディレクトリ情報の更新（Ｗｒｉｔｅ）処理を説明する流れ図である。図６のステップＳ１０９及び図８のステップＳ３１０におけるディレクトリ情報アクセス変換部２５を介して下位キャッシュ２３１のディレクトリ情報である下位ディレクトリ情報（図５の２３２１）を更新する。図１乃至図６、図８、図１０を参照して、下位キャッシュのディレクトリ情報の更新処理について説明する。なお、下位ディレクトリ情報の更新（Update）は、更新情報（下位ディレクトリ情報）の書き込み動作を伴うため、図１０等では書き込み（Ｗｒｉｔｅ）を更新と同義で用いている。
【０１９２】
図２のアクセス要求処理部２４は、ディレクトリ情報アクセス変換部２５に対して、下位ディレクトリ情報（図５の２３２１）から、更新対象の情報を一意に特定するためのアドレス等の識別子を指定して更新要求を行う。ディレクトリ情報アクセス変換部２５は、前記識別子を、Ｄ−Ｖｏｌ２３２(図３)における前記識別子が表すディレクトリ情報が格納されたアドレスに変換する。また、ディレクトリ情報アクセス変換部２５は、データアクセス部２６を介して、１次高速記憶２２の上位ディレクトリ情報２２２（図３）にアクセスし、上位キャッシュ２２１のＤ−Ｐａｒｔｉｔｉｏｎ２２３（図３）内に、更新要求されたディレクトリ情報（下位ディレクトリ情報）を含むページが格納されているか否かの判定（ヒット判定）を行う（図１０のステップＳ５１）。
【０１９３】
Ｄ−Ｐａｒｔｉｔｉｏｎ２２３内に、更新要求されたディレクトリ情報（下位ディレクトリ情報）を含むページが格納されている場合（ヒットした場合）（ステップＳ５２のＹｅｓ分岐）、ディレクトリ情報アクセス変換部２５は、データアクセス部２６を介して、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３内に格納されている、ヒットしたページに対する更新（Ｗｒｉｔｅ）を実行し、ステップＳ５６以降の処理を実行する（図１０のステップＳ５３）。
【０１９４】
Ｄ−Ｐａｒｔｉｔｉｏｎ２２３内に、更新要求されたディレクトリ情報（下位ディレクトリ情報）を含むページが格納されていない場合（ミスした場合）（ステップＳ５２のＮｏ分岐）、ディレクトリ情報アクセス変換部２５は、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３において、２次高速記憶２３のＤ−Ｖｏｌ２３２に格納された下位ディレクトリ情報２３２１（図５）の更新内容を格納するためのページを確保する（図１０のステップＳ５４）。
【０１９５】
このページの確保にあたり、１次高速記憶２２の上位ディレクトリ情報２２２に基づき、上位キャッシュ２２１のＤ−Ｐａｒｔｉｔｉｏｎ２２３に格納されたページ（図４の上位ディレクトリ情報２２２において、無効フラグがＮｏ、Ｄ−ＰａｒｔｉｔｉｏｎフラグがＹｅｓのページ）の中から、置換優先度が最も置換され易い値のページを選択するようにしてもよい。ディレクトリ情報アクセス変換部２５は、データアクセス部２６を介して、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３において、下位ディレクトリ情報２３２１の更新を格納するためのページに、更新された下位ディレクトリ情報を格納する。
【０１９６】
前記置換されたＤ−Ｐａｒｔｉｔｏｎ２２３の下位ディレクトリ情報の更新結果格納用に確保したページが更新されていた場合（図４の上位ディレクトリ情報２２２において、無効フラグがＮｏ、Ｄ−ＰａｒｔｉｏｎフラグがＹｅｓ、更新済フラグがＹｅｓ、置換優先度が１番目に置換対象であることを示す値のページ）、該ページに、下位ディレクトリ情報を書き込む前に、該ページの前記更新済みの内容を、２次高速記憶２３のＤ−Ｖｏｌ２３２に含まれる下位ディレクトリ情報（図５参照）の該当ページエントリの情報に反映する（図１０のステップＳ５５）。
【０１９７】
ディレクトリ情報アクセス変換部２５は、データアクセス部２６を介して上位ディレクトリ情報２２２に含まれる、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３においてヒットしたページ（図１０のステップＳ５３のヒットしたページ）、もしくは、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３に格納されたページ（図１０のステップＳ５５でＤ−Ｐａｒｔｉｔｉｏｎ２２３に格納したページ）の下位ディレクトリ情報（図５参照）を更新する（図１０のステップＳ５６）。
【０１９８】
以上のステップＳ５１からＳ５６までの処理を行い、前記ステップＳ１０９及びステップＳ３１０におけるディレクトリ情報アクセス変換部２５を介して、下位キャッシュ２３１のディレクトリ情報である下位ディレクトリ情報２３２１を更新する動作が完了する。
【０１９９】
＜Ｄ−Ｐａｒｔｉｔｉｏｎに新規ページ格納用ページの確保＞
図１１は、図９のステップＳ４４、及び図１０のステップＳ５４における、Ｄ−Ｐａｒｔｉｔｉｏｎに新規ページ格納用ページの確保の処理を説明する流れ図である。図９のステップＳ４４及び図１０のステップＳ５４では、図３のＤ−Ｐａｒｔｉｔｉｏｎ２２３に下位ディレクトリ情報２３２１（図５）をキャッシュするためのページを確保する。図１乃至図５、図８乃至図１１を参照して、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３に下位ディレクトリ情報２３２１をキャッシュするためのページを確保する処理について説明する。
【０２００】
図２のディレクトリ情報アクセス変換部２５は、データアクセス部２６を介して、上位ディレクトリ情報２２２を参照して、上位キャッシュ２２１に空きページ（無効フラグがＹｅｓのページ）が存在するか確認する（図１１のステップＳ６０１）
【０２０１】
図１１のステップＳ６０１における確認の結果、上位キャッシュ２２１に空きページが存在した場合（図１１のステップＳ６０２のＹｅｓ分岐）、ディレクトリ情報アクセス変換部２５は、上位キャッシュ２２１の任意の空きページを、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３に、下位ディレクトリ情報２３２１の一部の写し（複製）を格納するためのページ（下位ディレクトリ情報格納用ページ）として確保して、処理を終了する（図１１のステップステップＳ６０３）。
【０２０２】
図１１のステップＳ６０１における確認の結果、上位キャッシュ２２１に空きページが存在した場合（図１１のステップＳ６０２のＮｏ分岐）、ディレクトリ情報アクセス変換部２５は、データアクセス部２６を介して、上位ディレクトリ情報２２２から取得したＤ−Ｐａｒｔｉｔｉｏｎ２２３の容量と、パーティション容量設定部２７で指定されたＤ−Ｐａｒｔｉｔｉｏｎ２２３の容量を比較する（図１１のステップＳ６０４）。
【０２０３】
図１１のステップＳ６０４において、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３の容量がパーティション容量設定部２７で指定された容量値未満であった場合（図１１のステップＳ６０５のＹｅｓ分岐）、ディレクトリ情報アクセス変換部２５は、アクセス要求処理部２４に対して、上位キャッシュ２２１に含まれるページのうち、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３に含まれないページ（上位ディレクトリ情報２２２（図４）のＤ−Ｐａｒｔｉｔｉｏｎフラグの値がＮｏのページ）のうち、所要数のページを確保し、該ページのデータを削除して、空きページを作成することで、新規に格納するデータのために確保するように要求して、処理を終了する（図１１のステップＳ６０６）。
【０２０４】
図１１のステップＳ６０５におけるアクセス要求処理部２４による、上位キャッシュ２２１に含まれるページのうち、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３に含まれないページを新規に格納するデータのために確保する処理手順は、図８のステップＳ３０１からＳ３１０までの処理と同一である。このため、その説明は省略する。
【０２０５】
図１１のステップＳ６０４においてＤ−Ｐａｒｔｉｔｉｏｎ２２３の容量がパーティション容量設定部２７で指定された容量値以上であった場合（図１１のステップＳ６０５のＮｏ判定）、ディレクトリ情報アクセス変換部２５は、上位キャッシュ２２１に含まれるページのうち、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３に含まれるページ（上位ディレクトリ情報２２２（図４）のＤ−Ｐａｒｔｉｔｉｏｎフラグの値がＹｅｓのページ）の中から、置換するページを選択し、新規にデータを格納するページを確保する（図１１のステップＳ６０７）。Ｄ−Ｐａｒｔｉｔｉｏｎ２２３に含まれるページの中から新規にデータを格納するページを確保する際に、その時点で、最も長く参照されない状態が続いているページを選択するようにしてもよい。
【０２０６】
上位ディレクトリ情報２２２に記録されたディレクトリ情報（図４）から、ステップＳ６０７において確保したページが未更新である（更新済みでない）（上位ディレクトリ情報２２２（図４）の更新済フラグの値がＮｏ）場合（図１１のステップＳ６０８のＮｏ判定）、ステップＳ６１０以降の処理を実行する。
【０２０７】
上位ディレクトリ情報２２２に記録されたディレクトリ情報から、ステップＳ６０７において確保したページが更新済である（上位ディレクトリ情報２２２（図４）の更新済フラグの値がＹｅｓ）場合（図１１のステップＳ６０８のＹｅｓ分岐）、ディレクトリ情報アクセス変換部２５は、データアクセス部２６を介して、ステップＳ６０７で確保したＤ−Ｐａｒｔｉｔｉｏｎ２２３に含まれるページについて、該ページに対応する、２次高速記憶２３のＤ−Ｖｏｌ２３２のページに、更新を反映する（図１１のステップＳ６０９）
【０２０８】
ディレクトリ情報アクセス変換部２５は、データアクセス部２６を介して、ステップＳ６０７で確保したＤ−Ｐａｒｔｉｔｉｏｎ２２３に含まれるページのデータを削除し、該ページを、新規データ格納のために空きページとする。また、ディレクトリ情報アクセス変換部２５は、データアクセス部２６を介して、上位ディレクトリ情報２２２を更新し、前記確保した対応するページを空ページにして、処理を終了する（図１１のステップＳ６１０）
【０２０９】
以上のステップＳ６０１からＳ６１０までの処理を行い、前記ステップＳ４４及びステップＳ５４における、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３に下位ディレクトリ情報２３２１をキャッシュするためのページを確保する動作が完了する。
【０２１０】
なお、上記実施形態において、容量設定部２７で指定する容量値は、システムの動作環境（アクセス状況）や負荷等に応じて、手動又は自動（動的）で可変させるようにしてもよい。
【０２１１】
図１２、図１３は、上記実施形態による作用効果の例を説明する図である。以下では、図１乃至図５、図１２、図１３を参照して、メモリ使用量の削減効果（実施例１）、ワークロード変化等に伴うメモリ使用量の変更による効果（実施例２）を説明する。
【０２１２】
＜実施例１＞
実施例１では、図３の上位キャッシュ２２１、下位キャッシュ２３１共にページサイズを３２ＫＢ（ＫｉｌｏＢｙｔｅ）、各キャッシュのディレクトリ情報を１ページあたり６４Ｂ（Ｂｙｔｅ）であるとする。また上位キャッシュ２２１が格納される１次高速記憶２２はＤＲＡＭ、下位キャッシュ２３１が格納される２次高速記憶２３はＳＳＤ、記憶媒体２１はＨＤＤであるとする。ＤＲＡＭ及びＳＳＤはＨＤＤよりも十分に高速であるとする。またストレージ２に対するホスト１（図１）からの各アクセスはページ単位で行われるものとする。
【０２１３】
図１２は、下位キャッシュの容量（１行目の第２列の５１２ＧＢ（Ｇｉｇａｂｙｔｅ）〜第５列の２ＴＢ（ＴｅｒａＢｙｔｅ））と、下位キャッシュのディレクトリ情報（下位ディレクトリ情報）の格納に必要なメモリ容量及びＤ−Ｐａｒｔｉｔｉｏｎの関係を示す。２行目の第２〜第５列は下位キャッシュのディレクトリ情報（下位ディレクトリ情報）の格納に必要なメモリ容量を表している。３行目の第２〜第５列、４行目の第２〜第５列は、上記実施形態における１ＧＢと２ＧＢのＤ−Ｐａｒｔｉｔｉｏｎを例示している。
【０２１４】
３２ＫＢの各ページ当りのディレクトリ情報が６４Ｂであることから、図３の下位キャッシュ２３１の容量が５１２ＧＢのとき、下位キャッシュ２３１のディレクトリ情報（下位ディレクトリ情報）の容量は、（５１２ＧＢ／３２ＫＢ）×６４Ｂ＝１ＧＢとなる。下位キャッシュ２３１の容量が５１２ＧＢ増加する毎に下位ディレクトリ情報の容量は１ＧＢ増加する。容量１ＴＢ、１．５ＴＢ、２ＴＢの下位キャッシュ２３１の下位ディレクトリ情報の容量は２ＧＢ、３ＧＢ、４ＧＢとなる。
【０２１５】
したがって、比較例（本発明を適用しない場合の例）として、ストレージが持つＤＲＡＭの容量が２ＧＢであるシステムにおいて、例えば１ＴＢの容量の下位キャッシュ２３１の下位ディレクトリ情報（２ＧＢ）を、全てＤＲＡＭに格納する構成とした場合、ＤＲＡＭの２ＧＢは下位ディレクトリ情報の格納に使われ、ＤＲＡＭを上位キャッシュ２２１に割り当てることは不可能となる（上位キャッシュ２２１をデータキャッシュとして使用できない）。
【０２１６】
同様に、比較例（本発明を適用しない場合の例）では、図１２の２行目に示すように、容量１ＴＢ、１．５ＴＢ、２ＴＢの下位キャッシュの構成に対してＤＲＡＭを２ＧＢ、３ＧＢ、４ＧＢ備えた構成としても該ＤＲＡＭをデータ格納用の上位キャッシュに割り当てることはできない。また、容量１ＴＢの下位キャッシュ２３１に対して、ＤＲＡＭを４ＧＢ持つ場合でも、下位キャッシュ２３１の下位ディレクトリ情報の格納に２ＧＢ要することから、上位キャッシュ２２１に割り当てられるＤＲＡＭの容量は、２ＧＢに留まる。このように、比較例では高速ＤＲＡＭのメモリ容量の有効活用ができない。
【０２１７】
これに対して、上記実施形態によれば、下位キャッシュ２３１の下位ディレトリ情報は、ＤＲＡＭからなる上位キャッシュ２２１上の一定容量のＤ−Ｐａｒｔｉｔｉｏｎ２２３に格納され、さらに、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３に格納されない下位ディレトリ情報は、ＳＳＤのＤ−Ｖｏｌ２３２に格納される。上位キャッシュ２２１において、下位キャッシュ２３１の下位ディレクトリ情報を格納する領域は、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３に制限される。例えば図１２に示すように、容量１ＴＢ、１．５ＴＢ、２ＴＢの下位キャッシュ２３１において、それぞれの下位ディレクトリ情報の容量は２ＧＢ、３ＧＢ、４ＧＢであるが、上位キャッシュ２２１のＤ−Ｐａｒｔｉｔｉｏｎ２２３の容量は１ＧＢの固定値とされ、それぞれの下位ディレクトリ情報の容量から、１ＧＢを差引いた残りの１ＧＢ、２ＧＢ、３ＧＢの下位ディレクトリ情報は、ＳＳＤのＤ−Ｖｏｌ２３２に格納される。
【０２１８】
このため、上記実施形態によれば、ストレージ２が持つＤＲＡＭの容量が例えば２ＧＢの構成において、容量１ＴＢ、１．５ＴＢ、２ＴＢの下位キャッシュ２３１の場合にも、ＤＲＡＭからなる上位キャッシュ２２１のＤ−Ｐａｒｔｉｔｉｏｎ２２３（１ＧＢ）以外の１ＧＢのメモリ領域をデータキャッシュに用いることができる。このように、本実施形態によれば、ＤＲＡＭのメモリ容量の有効利用（下位ディレクトリ情報格納用のメモリ使用量の削減）を実現可能としている。
【０２１９】
＜実施例２＞
図１３は、ストレージ２に対する外部からのアクセスと、キャッシュ容量毎の１０万アクセスあたりのヒット数分布の変化を説明する図である。図１３において、各容量に対するヒット数は、前記各容量のキャッシュが利用可能である場合にヒットとなるアクセスの数を表す。
【０２２０】
図１３において、上位キャッシュ２２１を格納するＤＲＡＭの容量は４ＧＢ、下位キャッシュ２３１を格納するＳＳＤの容量は２ＴＢとする。上位キャッシュ２２１（ＤＲＡＭ）の各容量（１ＧＢ、２ＧＢ、３ＧＢ、４ＧＢ）以下でヒットするアクセスは、上位キャッシュ２２１でヒットし（ヒット件数は、ＤＲＡＭの容量１ＧＢ、２ＧＢ、３ＧＢ、４ＧＢでそれぞれ５００００、８００００、９００００、９００１０）、その他のヒットは、下位キャッシュ２３１（ＳＳＤ）でヒットする。
【０２２１】
実施例２では、図３の下位キャッシュ２３１のディレクトリ情報（下位ディレクトリ情報：図５の２３２１参照）を格納するＤＲＡＭの容量を制限して下位ディレクトリ情報をＤＲＡＭの上位キャッシュ２２１上のＤ−ｐａｒｔｉｔｉｏｎ２２３に格納し、Ｄ−ｐａｒｔｉｔｉｏｎ２２３に格納されていない下位ディレクトリ情報をＳＳＤのＤ−Ｖｏｌ２３２に格納する。一般的に、ＤＲＡＭに比べて、ＳＳＤのアクセス性能は低い。実施例２では、階層キャッシュのアクセス性能の高速化のために、可能な限り、下位キャッシュ２３１の下位ディレクトリ情報をＤＲＡＭに格納できるように、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３の容量を決定する。
【０２２２】
図１３の初期状態８１では、例えば上位キャッシュ２２１（図３）の容量が３ＧＢの場合、１０００００件のアクセスに対して、９００００件（＝５００００＋３００００＋１００００）のアクセスがヒットする。
また、ＳＳＤの下位キャッシュ２３１（図３）の容量が０．５ＴＢの場合、１０＋８９８０＝８９９０件のアクセスは、下位キャッシュ２３１のディレクトリ情報（下位ディレクトリ情報）が全て上位キャッシュ２２１のＤ−Ｐａｒｔｉｔｉｏｎ２２３に存在する状態でヒットする。
【０２２３】
図１３の初期状態８１において、１０＋８９８０の１０件は、上位キャッシュ２２１を４ＧＢに設定した場合の１０件であり、上位キャッシュ２２１の容量が３ＧＢのときは、
例えば、下位ディレクトリ情報が上位キャッシュ２２１のＤ−Ｐａｒｔｉｔｉｏｎ２２３に存在する状態でヒットする。ＳＳＤに格納された下位キャッシュ２３１の利用可能な容量を２ＴＢに増加した場合でも、上位キャッシュ２２１でのヒット件数の増加は、０．５ＴＢの場合の８９９０から、僅か１０に留まる。
【０２２４】
図１３の初期状態８１では、上位キャッシュ２２１（図３）の４ＧＢのＤＲＡＭのうち１ＧＢを上位キャッシュ２２１上のＤ−Ｐａｒｔｉｔｉｏｎ２２３に割り当て、４ＧＢから１ＧＢを差し引いた残りの３ＧＢのＤＲＡＭを上位キャッシュ（データキャッシュ）として使用することで、階層キャッシュに対して最大の性能が得られる。
【０２２５】
前記の条件では、１０万件のアクセスのうち
・９万件のアクセスが上位キャッシュ２２１（ＤＲＡＭ）でヒットし、
・８９９０件のアクセスは、下位キャッシュ２３１（ＳＳＤ）において下位キャッシュ２３１のディレクトリ情報（図５の下位ディレクトリ情報２３２１）が全て上位キャッシュ２２１のＤ−Ｐａｒｔｉｔｉｏｎ２２３に存在する状態でヒットする。
【０２２６】
次に、図１３の負荷変更状態８２では、初期状態８１とはアクセスパターンが異なるため、階層キャッシュの性能の最大化のために、Ｄ−Ｐａｒｔｉｔｉｏｎ２２３の容量の再設定が必要である。パーティション容量設定部２７を通して上位キャッシュ２２１におけるＤ−Ｐａｒｔｉｔｉｏｎ２２３の容量値（閾値）を変更する。
【０２２７】
図１３の負荷変更状態８２（アクセスパターン変更状態）では、１ＧＢの上位キャッシュ２２１が利用可能である場合に、４４５００件のアクセスがヒットする。しかしながら、負荷変更状態８２では、上位キャッシュ２２１の容量を増加させた場合に、１ＧＢ増加毎に増加するヒット件数は、１００に留まる。
【０２２８】
ＳＳＤの下位キャッシュ２３１では、１．５ＴＢの容量まで０．５ＴＢ容量が増加する毎に、１５０００件のアクセスの割合でヒット件数が増加する。負荷変更状態８２では、４ＧＢのＤＲＡＭのうちの３ＧＢをＤ−Ｐａｒｔｉｔｉｏｎ２２３に割り当て、残りの容量１ＧＢを上位キャッシュ２２１として用いることで最大の性能が得られる。
【０２２９】
前記の条件では、１０万件のアクセスのうち、
・４４５００件のアクセスが、ＤＲＡＭの上位キャッシュ２２１でヒットし、
・４５３００件のアクセスが、ＳＳＤの下位キャッシュ２３１において、下位キャッシュ２３１のディレクトリ情報が全てＤ−Ｐａｒｔｉｔｉｏｎ２２３に存在する状態で、ヒットする。
【０２３０】
実施例２に示したように、上位キャッシュ２２１におけるＤ−Ｐａｒｔｉｔｉｏｎ２２３の容量の割り当てを、運用条件、負荷状態等に応じて、最適な値に設定することで、階層キャッシュにおけるアクセス性能の最大化を実現可能としている。
【０２３１】
なお、上記の特許文献、非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ乃至選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【０２３２】
１  ホスト
２  ストレージ
３  ネットワーク
２１  記憶媒体
２２  １次高速記憶
２３  ２次高速記憶
２４  アクセス要求処理部
２５  ディレクトリ情報アクセス変換部
２６  データアクセス部
２７  パーティション容量設定部
２８  アクセステーブル
２９  アクセス制御部
７１  下位キャッシュの容量とディレクトリ情報の格納に必要なメモリ容量の関係
８１  第２の実施例における初期状態
８２  第２の実施例における負荷変更状態
２２１  上位キャッシュ
２２２  上位ディレクトリ情報
２２３  Ｄ−Ｐａｒｔｉｔｉｏｎ
２３１  下位キャッシュ
２３２  Ｄ−Ｖｏｌ
２３２１  下位ディレクトリ情報
【図１】
2014170325.tif 000003
【図２】
2014170325.tif 000004
【図３】
2014170325.tif 000005
【図４】
2014170325.tif 000006
【図５】
2014170325.tif 000007
【図６】
2014170325.tif 000008
【図７】
2014170325.tif 000009
【図８】
2014170325.tif 000010
【図９】
2014170325.tif 000011
【図１０】
2014170325.tif 000012
【図１１】
2014170325.tif 000013
【図１２】
2014170325.tif 000014
【図１３】
2014170325.tif 000015
【図１４】
2014170325.tif 000016
【図１５】
2014170325.tif 000017