(57)【特許請求の範囲】
【請求項１】
互いに接続された複数のキャッシュモジュールと、該複数のキャッシュモジュールにそれぞれ接続され、情報をそれぞれ格納する複数のストレージモジュールからなるストレージシステムのキャッシュ動作を制御するキャッシュ制御装置であって、
前記複数のキャッシュモジュールのうちの１つのキャッシュモジュールに接続されたストレージモジュールが格納する情報が該１つのキャッシュモジュールまたは他のキャッシュモジュールのいずれかに存在することを示す管理用データを有する管理手段と、
前記１つのキャッシュモジュールに存在する情報を、該１つのキャッシュモジュールから前記他のキャッシュモジュールに転出する転出手段と、
前記他のキャッシュモジュールに存在する情報を、該他のキャッシュモジュールから前記１つのキャッシュモジュールに転入する転入手段とを備え、
前記転出手段は、アクセス要求元から前記１つのキャッシュモジュールに対するアクセス要求頻度が高く、前記他のキャッシュモジュールに対するアクセス要求頻度が低いとき、該１つのキャッシュモジュールに存在する情報を該他のキャッシュモジュールに転出することを特徴とするキャッシュ制御装置。
【請求項２】
前記１つのキャッシュモジュールが前記他のキャッシュモジュールに存在する情報に対するアクセス要求を受け取ったとき、前記転入手段は、アクセス対象の情報を該１つのキャッシュモジュールに転入することを特徴とする請求項１記載のキャッシュ制御装置。
【請求項３】
前記１つのキャッシュモジュールに存在する情報が該１つのキャッシュモジュールに留まり続けるべきか、廃棄されるべきか、または転出されるべきかを判断する評価手段と、該情報が転出されるべきである場合に転出先のキャッシュモジュールを決定する転出先決定手段をさらに備えることを特徴とする請求項１記載のキャッシュ制御装置。
【請求項４】
前記１つのキャッシュモジュールが情報を保持する空き領域を確保するとき、前記評価手段により転出されるべきと判断される情報があれば、前記転出手段は情報を転出して該空き領域を確保することを特徴とする請求項３記載のキャッシュ制御装置。
【請求項５】
前記１つのキャッシュモジュールが情報を保持する空き領域を確保するとき、前記評価手段により廃棄されるべきと判断される情報があれば、該１つのキャッシュモジュールは情報を廃棄して該空き領域を確保することを特徴とする請求項３記載のキャッシュ制御装置。
【請求項６】
互いに接続された複数のキャッシュモジュールと、該複数のキャッシュモジュールにそれぞれ接続され、情報をそれぞれ格納する複数のストレージモジュールからなるストレージシステムのキャッシュ動作を制御するキャッシュ制御装置であって、
前記複数のキャッシュモジュールのうちの１つのキャッシュモジュールに接続されたストレージモジュールが格納する情報を、該１つのキャッシュモジュールと他のキャッシュモジュールとの間で動的に移動する手段と、
アクセス要求元から前記他のキャッシュモジュールに移動した情報に対するアクセス要求を受け付ける手段とを備え、
前記移動する手段は、前記１つのキャッシュモジュールに対するアクセス要求頻度が高く、前記他のキャッシュモジュールに対するアクセス要求頻度が低いとき、該１つのキャッシュモジュールに存在する情報を該他のキャッシュモジュールに移動させることを特徴とするキャッシュ制御装置。
【請求項７】
ネットワークにより互いに接続され、プロセッサとメモリを有する複数のキャッシュモジュールと、該複数のキャッシュモジュールにそれぞれ接続され、情報をそれぞれ格納する複数のストレージモジュールからなるストレージシステムのキャッシュ動作を制御するキャッシュ制御装置であって、
前記複数のキャッシュモジュールのうちの１つのキャッシュモジュールに接続されたストレージモジュールが格納する情報が該１つのキャッシュモジュールまたは他のキャッシュモジュールのいずれかのメモリに存在することを示す管理用データを有する管理手段と、
前記１つのキャッシュモジュールのメモリに存在する情報を、該１つのキャッシュモジュールのメモリから他のキャッシュモジュールのメモリに転出する転出手段と、
他のキャッシュモジュールのメモリに存在する情報を、該他のキャッシュモジュールのメモリから前記１つのキャッシュモジュールのメモリに転入する転入手段と、
前記１つのキャッシュモジュールのメモリ上の任意の情報が該１つのキャッシュモジュールのメモリに留まり続けるべきか、廃棄されるべきか、または転出されるべきかを判断する評価手段と、
前記任意の情報が転出されるべきである場合に、転出先のキャッシュモジュールを決定する転出先決定手段とを備え、
前記転出先決定手段は、アクセス要求元から前記１つのキャッシュモジュールに対するアクセス要求頻度が高く、前記他のキャッシュモジュールに対するアクセス要求頻度が低いとき、該他のキャッシュモジュールを前記転出先のキャッシュモジュールに決定することを特徴とするキャッシュ制御装置。
【請求項８】
互いに接続された複数のキャッシュモジュールと、該複数のキャッシュモジュールにそれぞれ接続され、情報をそれぞれ格納する複数のストレージモジュールからなるストレージシステムのキャッシュ動作を制御するコンピュータのためのプログラムを記録した記録媒体であって、
アクセス要求元から前記複数のキャッシュモジュールのうちの１つのキャッシュモジュールに対するアクセス要求頻度が高く、他のキャッシュモジュールに対するアクセス要求頻度が低いとき、該１つのキャッシュモジュールに接続されたストレージモジュールが格納する情報を、該１つのキャッシュモジュールから他のキャッシュモジュールに転出するステップと、
前記他のキャッシュモジュールに転出された情報が該他のキャッシュモジュールに存在することを示す管理用データを、前記１つのキャッシュモジュールに保持させるステップと、
前記１つのキャッシュモジュールが前記他のキャッシュモジュールに転出された情報に対するアクセス要求を受け取ったとき、アクセス対象の情報を、該他のキャッシュモジュールから前記１つのキャッシュモジュールに転入するステップと
を含む処理を前記コンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項９】
互いに接続された複数のキャッシュモジュールと、該複数のキャッシュモジュールにそれぞれ接続され、情報をそれぞれ格納する複数のストレージモジュールからなるストレージシステムのキャッシュ動作を制御するキャッシュ制御方法であって、
前記複数のキャッシュモジュールのうちの１つのキャッシュモジュールに対するアクセス要求頻度が高く、他のキャッシュモジュールに対するアクセス要求頻度が低いとき、該１つのキャッシュモジュールに接続されたストレージモジュールが格納する情報を、該１つのキャッシュモジュールから他のキャッシュモジュールに転出し、
前記他のキャッシュモジュールに転出された情報が該他のキャッシュモジュールに存在することを示す管理用データを、前記１つのキャッシュモジュールに保持させ、
アクセス要求元から前記１つのキャッシュモジュールにアクセス要求を送信し、
前記アクセス要求が前記他のキャッシュモジュールに転出された情報に対するアクセス要求であるとき、アクセス対象の情報を、該他のキャッシュモジュールから前記１つのキャッシュモジュールに転入する
ことを特徴とするキャッシュ制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワーク接続された複数のキャッシュモジュールと、それらに接続される複数のストレージモジュールから成るストレージシステムにおいて、キャッシュモジュールのメモリの利用を制御するキャッシュ制御装置およびその方法に関する。
【０００２】
【従来の技術および発明が解決しようとする課題】
近年のコンピュータシステムにおいては、補助記憶装置内の情報へのアクセスを高速化するために、補助記憶装置と情報の要求元との間に、半導体メモリを利用したバッファ記憶装置が設けられることがある。ディスク装置用のバッファ記憶装置は、ディスクキャッシュと呼ばれ、ディスク装置を制御するディスクコントローラ内に設けられることが多い。
【０００３】
今、ディスク装置に対応する複数のストレージモジュールと、各ストレージモジュールに接続されたバッファ記憶装置に対応するキャッシュモジュールとから成るストレージシステムを考える。
【０００４】
各キャッシュモジュールが管理するディスクページは、そのキャッシュモジュールに接続されたストレージモジュールに格納されているとする。ここで、ディスクページとは、あらかじめ決められた固定長の記憶領域（ブロック）に格納された情報に対応し、「ディスクページを管理する」とは、そのディスクページに対するアクセス要求を受け付けることと、そのディスクページに対する排他制御、一貫性保持制御等を行うことを意味する。
【０００５】
例えば、ストレージシステムが２つのキャッシュモジュールＡ、Ｂを備え、キャッシュモジュールＡが管理するストレージモジュールに対しては頻繁なアクセス要求が集中し、キャッシュモジュールＢが管理するストレージモジュールに対するアクセス要求は比較的疎である場合を考える。
【０００６】
この場合、キャッシュモジュールＡは、キャッシュモジュールＢより多いメモリ量を持っていることが望ましい。何故なら、より多いメモリ量はより良いキャッシュヒット率を意味し、頻繁なアクセスを受けるキャッシュモジュールがより良いヒット率を達成すれば、疎なアクセスを受けるキャッシュモジュールのヒット率が低くなったとしても引き合うからである。しかし、実際には、各キャッシュモジュールのメモリ量は、ハードウェアに応じてあらかじめ固定されており、それをアクセス要求の頻度に応じて変更することはできない。
【０００７】
この状況は、キャッシュ上に置くページを決定する標準的な方法であるＬＲＵ法（Least Recently Used Method）に照らしてみると、より明瞭となる。ＬＲＵ法は、その名の通り、最近使用されたページをキャッシュ上に残し、最も長く使われていないページを置き換えの対象として選ぶ。したがって、キャッシュ上には、最近アクセス時間の新しい順にキャッシュが一杯になるまで選ばれたページ群が存在する。ここで、最近アクセス時間は、そのページへの過去のアクセスのうち、最も新しいアクセスが行われた時刻を表す。
【０００８】
一般に、あるページに対するアクセス要求が発生する確率は、そのページに対する最近アクセス時刻が新しい程高いことが観察されているので、ＬＲＵ法は最もアクセスを受ける可能性の低いページを置き換えるという最適な制御を行っていることになる。
【０００９】
しかし、上述の例のように、２つのキャッシュモジュール間にアクセス要求頻度の差がある場合、それぞれのキャッシュモジュールが与えられたメモリ量の範囲内で独立にＬＲＵ法による制御を行うと、システム全体としてはＬＲＵ法が実現できず、最適な制御を行うことができない。
【００１０】
この場合、アクセス要求頻度が高いキャッシュモジュール中に存在するページ群の最近アクセス時刻のレンジは、アクセス要求頻度が低いキャッシュモジュールのレンジよりも狭くなる。ここで、最近アクセス時刻のレンジは、キャッシュモジュール中の各ページの最近アクセス時刻のうち、最も新しいものと最も古いものの差を表す。
【００１１】
このように、キャッシュモジュール間で最近アクセス時刻のレンジに差があるということは、アクセス頻度が高いキャッシュモジュールでは、システム全体として置き換えられるべきでないページの置き換えが発生しやすく、アクセス要求頻度が低いキャッシュモジュールでは、システム全体として置き換えられるべきページの置き換えが発生しにくいことを意味している。したがって、システム全体として最適な制御が行われていない。
【００１２】
本発明の課題は、複数のストレージモジュールと複数のキャッシュモジュールを含むストレージシステムにおいて、システム全体として最適なページ割り当てを行うキャッシュ制御装置およびその方法を提供することである。
【００１３】
【課題を解決するための手段】
図１は、本発明のキャッシュ制御装置の原理図である。図１のキャッシュ制御装置は、管理手段１、転出手段２、および転入手段３を備え、互いに接続された複数のキャッシュモジュールと、各キャッシュモジュールに接続され、情報を格納するストレージモジュールからなるストレージシステムのキャッシュ動作を制御する。
【００１４】
管理手段１は、複数のキャッシュモジュールのうちの１つのキャッシュモジュール４が管理する情報が他のキャッシュモジュール５に存在することを許容する。
【００１５】
転出手段２は、キャッシュモジュール４が管理する情報を、キャッシュモジュール４からキャッシュモジュール５に転出する。
【００１６】
転入手段３は、キャッシュモジュール４が管理する情報を、キャッシュモジュール５からキャッシュモジュール４に転入する。
【００１７】
管理手段１は、例えば、キャッシュモジュール４が管理するストレージモジュールから読み出されたページ等の情報を一元的に管理し、その情報の一部がキャッシュモジュール５に存在する場合でも、その所在を把握している。転出手段２は、キャッシュモジュール４が管理し、キャッシュモジュール４に存在する情報を、必要に応じてキャッシュモジュール５に移動する。また、転入手段３は、キャッシュモジュール４が管理し、キャッシュモジュール５に存在する情報を、必要に応じてキャッシュモジュール４に転入する。
【００１８】
このように、各キャッシュモジュールに対応して情報を一元的に管理する管理手段１と、管理している情報を２つのキャッシュモジュール間で動的に移動する転出手段２および転入手段３を備えることで、１つのキャッシュモジュールが管理する情報を、複数のキャッシュモジュールに分散して保持することができる。
【００１９】
例えば、キャッシュモジュール４のメモリに空き領域がない状態で新たなアクセス要求を受け取り、空き領域を確保する必要が生じたとき、転出手段２が情報をキャッシュモジュール５に転出すれば、キャッシュモジュール４に保持されていた情報を廃棄することなく、空き領域を確保することができる。そして、確保された領域に、要求された情報をストレージモジュールから読み込めばよい。また、要求された情報がキャッシュモジュール５に存在する場合、キャッシュモジュール４に確保された領域に、転入手段３がその情報を転入すればよい。
【００２０】
また、システム内のすべてのキャッシュモジュールのメモリが一杯の場合は、例えば、システム内で最も古い最近アクセス時刻を持つ情報を保持するキャッシュモジュールが、その情報を廃棄する。そして、アクセス要求を受け取ったキャッシュモジュールからそのキャッシュモジュールに、溢れた情報を転出すればよい。
【００２１】
このように、各キャッシュモジュールが他のキャッシュモジュールと共同して分散処理を行い、新たなアクセス要求を受け取ったときに、他のキャッシュモジュールの情報の廃棄を可能にする機構を備えることにより、システム全体として最適な情報割り当てを行うことができる。
本発明の別のキャッシュ制御装置は、管理手段１、転出手段２、および転入手段３を備え、互いに接続された複数のキャッシュモジュールと、該複数のキャッシュモジュールにそれぞれ接続され、情報をそれぞれ格納する複数のストレージモジュールからなるストレージシステムのキャッシュ動作を制御する。管理手段１は、複数のキャッシュモジュールのうちの１つのキャッシュモジュール４に接続されたストレージモジュールが格納する情報がそのキャッシュモジュール４または他のキャッシュモジュール５のいずれかに存在することを示す管理用データを有する。転出手段２は、転出手段２は、アクセス要求元からキャッシュモジュール４に対するアクセス要求頻度が高く、キャッシュモジュール５に対するアクセス要求頻度が低いとき、キャッシュモジュール４に存在する情報をキャッシュモジュール５に転出する。転入手段３は、キャッシュモジュール５に存在する情報を、キャッシュモジュール５からキャッシュモジュール４に転入する。
【００２２】
例えば、図１の管理手段１、転出手段２、および転入手段３は、それぞれ、後述する図２のページ管理部１１、転出部１４、および転入部１５に対応する。
【００２３】
【発明の実施の形態】
以下、図面を参照しながら、本発明の実施の形態を詳細に説明する。
【００２４】
複数のキャッシュモジュールを含むストレージシステムにおいて、システム全体として最適なページ割り当てを実現するには、各キャッシュモジュールが独立に処理を行うのではなく、他のキャッシュモジュールと共同で分散処理を行う必要がある。
【００２５】
また、ストレージシステムにおいては、１つのストレージモジュールの全記憶領域、あるいは、その一部の領域に対する排他制御を行う必要がある。このとき、ページ毎に異なるキャッシュモジュールが管理していたのでは、ページの集合に対する排他制御は、キャッシュモジュール間の通信を必要とする重い処理になってしまう。したがって、１つのストレージモジュールに属するページ群の管理は、１つのキャッシュモジュールにより行われることが望ましい。
【００２６】
また、一貫性保持制御においては、キャッシュモジュールからストレージモジュールへの書き戻し処理を行う必要がある。このとき、ページ毎に異なるキャッシュモジュールが管理していたのでは、ページの集合の書き戻し処理は、やはり、キャッシュモジュール間の通信を必要とする重い処理になってしまう。この書き戻し処理をまとめ書きにより効率良く行うためにも、１つのストレージモジュールに属するページ群の管理は、１つのキャッシュモジュールにより行われることが望ましい。
【００２７】
そこで、本発明においては、ページの管理用データを格納するメモリ領域とそのページのデータを格納するメモリ領域を別々のキャッシュモジュールに割り当てることを許容する。すなわち、１つのストレージモジュールに属するページの管理は１つのキャッシュモジュールが行うが、そのストレージモジュールに属するページは、複数のキャッシュモジュールに割り当てられる。
【００２８】
この場合、ストレージモジュールに対するアクセス要求は、それを管理するキャッシュモジュールが受け付け、そのキャッシュモジュールは、要求されたページの所在を調べる。そして、そのページが他のキャッシュモジュールに存在する場合は、そのキャッシュモジュールと共同でアクセス要求に対する応答処理を行う。
【００２９】
このようなシステムによれば、１つのストレージモジュールのページ群を複数のキャッシュモジュールに分散させることができ、アクセス要求頻度が高いストレージモジュールのページを、それを管理するキャッシュモジュールからアクセス要求頻度が低いストレージモジュールを管理する他のキャッシュモジュールへ移動させることができる。
【００３０】
このため、アクセス要求が１つのキャッシュモジュールに集中して、そのキャッシュモジュールの最近アクセス時刻のレンジを狭めるようなことは起こらない。したがって、システム全体として最適なページ割り当てを行うことが可能になり、キャッシュのヒット率が向上する。
【００３１】
しかしながら、要求されたページが他のキャッシュモジュールに存在する場合、そのページを管理するキャッシュモジュールとそのページを保持するキャッシュモジュールの共同作業が発生する。その結果、この場合の応答時間は、共同作業のオーバヘッドだけ長くなる。
【００３２】
キャッシュ上にページが存在する場合の応答時間は、通常１ｍｓ未満の非常に短い時間であるため、共同作業のオーバヘッドがもたらす影響は大きいものになり得る。このため、応答時間に対するオーバヘッドを小さくすることが要求される。
【００３３】
そこで、あるキャッシュモジュールが管理するページのうち、アクセス要求を受ける可能性の高いものはそのキャッシュモジュールのメモリに保持し、それらに比べて可能性の低いものを他のキャッシュモジュールに割り当てるという戦略を採用する。
【００３４】
この戦略により、キャッシュ上に存在するアクセス対象のページが、それを管理するキャッシュモジュール以外のキャッシュモジュールに存在する可能性を低くし、キャッシュ上にページが存在する場合の応答時間に対するオーバヘッドを小さくすることができる。
【００３５】
この戦略を実現するためには、ページをキャッシュモジュール間で動的に移動する機能を備える必要がある。何故なら、あるページがアクセスを受ける可能性は、時々刻々と変化するからである。キャッシュ上に存在するページがアクセス要求を受ける可能性は、ＬＲＵ法に基づく観察によれば、そのページへのアクセスが来ないまま時間が過ぎるにつれて段々と小さくなる。また、そのページへのアクセスが訪れれば、その瞬間に非常に大きくなる。
【００３６】
このようにアクセスを受ける可能性が変化すると、そのページを保持すべきキャッシュモジュールも変化する。すなわち、ページが大きなアクセス可能性を持つ間は、そのページがそれを管理するキャッシュモジュールに保持され、アクセス可能性が小さくなると、他のキャッシュモジュールに移出されるか、あるいは単純に廃棄される。また、他のキャッシュモジュールに存在するページも、アクセスを受けたためにアクセス可能性が高くなれば、そのページを管理するキャッシュモジュールへ移入される。
【００３７】
図２は、このような動作を行うキャッシュ制御装置の構成図である。図２のキャッシュ制御装置は、ページ管理部１１、評価部１２、転出先決定部１３、転出部１４、および転入部１５を備える。
【００３８】
ページ管理部１１は、あるキャッシュモジュール１６が管理するページ群が他のキャッシュモジュール１６に存在することを可能とするようなページ管理を行う。転出部１４は、あるキャッシュモジュール１６が管理し、かつ、そのキャッシュモジュール１６のメモリに存在するページを、他のキャッシュモジュール１６のメモリに転送する。転入部１５は、あるキャッシュモジュール１６が管理し、他のキャッシュモジュール１６のメモリに存在するページを、管理しているキャッシュモジュール１６のメモリに転入する。
【００３９】
また、評価部１２は、ページ管理部１１が管理する各ページについて、そのページがメモリに留まり続けるべきであるか、廃棄されるべきであるか、または転出されるべきであるかを判断する。転出先決定部１３は、評価部１２により転出されるべきであると判断されたページの転出先を決定する。
【００４０】
例えば、図２のキャッシュ制御装置は各キャッシュモジュール１６に搭載され、ストレージモジュールに格納されたページへのアクセス要求を受け付けると、ページ管理部１１により、要求されたページの所在を知る。そして、そのキャッシュモジュール１６のメモリにそのページが存在すれば、そのページに対する要求を処理し、そのページの最近アクセス時刻を更新して、動作を終了する。最近アクセス時刻は、ページ管理部１１により管理される。
【００４１】
一方、要求されたページがキャッシュ上に存在しないか、または他のキャッシュモジュール１６に存在すれば、キャッシュ制御装置は、アクセス要求を受け付けたキャッシュモジュール１６自身のメモリにそのページを保持するための領域を確保する。そして、その領域にストレージモジュールから対象ページを読み込むか、あるいは転入部１５により、その領域に他のキャッシュモジュール１６から対象ページを転入する。
【００４２】
ここで、既にメモリが一杯になっている状態でこの領域を確保するには、メモリに保持されているページのいずれかを廃棄または転出する必要がある。そこで、キャッシュ制御装置は、評価部１２により、転出可能なページがメモリ上にあるかどうかを調べる。評価部１２は、メモリ上の最も古いページが他のキャッシュモジュール１６内のメモリ上の最も古いページよりも有意に新しい場合に、そのページを転出可能と判断する。
【００４３】
転出可能なページがあれば、転出部１４により、転出先決定部１３が決定するキャッシュモジュール１６へそのページを転出し、対象ページのための領域を確保する。また、転出可能なページがなければ、評価部１２が決定するページを廃棄して、その領域を確保する。
【００４４】
評価部１２は、例えば、キャッシュモジュール１６のメモリ上に存在する各ページの最近アクセス時刻を比較して、キャッシュモジュール１６内の最も古い最近アクセス時刻を求める。
【００４５】
そして、その最近アクセス時刻から転出下限関数により時刻の下限値を計算し、ページの最近アクセス時刻がその下限値よりも新しい場合に、そのページは転出されるべきであると判断し、最近アクセス時刻が下限値と同じかそれよりも古い場合に、そのページが廃棄されるべきであると判断する。また、メモリが一杯になっていない状態においては、すべてのページがメモリに留まり続けるべきであると判断する。
【００４６】
転出下限関数としては、例えば、すべてのキャッシュモジュール１６における最近アクセス時刻の平均を用いることができる。今、キャッシュモジュールの総数をｎとし、キャッシュモジュール＃ｉ（ｉ＝０，１，．．．，ｎ−１）が保持するページ群の最も古い最近アクセス時刻をｒｉとする。このとき、εを小さい正の定数として、転出下限関数は、次式により与えられる。
【００４７】
【数１】
0004036992.tif 000002
【００４８】
ただし、キャッシュモジュール間で通信することにより、評価部１２は、各キャッシュモジュール＃ｉにおける最も古い最近アクセス時刻ｒｉを保持しているものとする。
【００４９】
また、転出先決定部１３は、転出下限関数により計算された下限値と同じかそれよりも古いｒｉを持つキャッシュモジュールか、あるいは最も古いｒｉを持つキャッシュモジュールを、転出先として選択する。
【００５０】
図３は、このようなキャッシュ制御装置を搭載したキャッシュモジュールを含むストレージシステムの構成図である。図３のストレージシステムは、複数のキャッシュモジュール２１、複数のストレージモジュール２２、およびそれらのキャッシュモジュール２１を接続する通信ネットワーク２３を備え、通信ネットワーク２４によりクライアント２５と接続されている。
【００５１】
ストレージモジュール２２は、磁気ディスク装置、光ディスク装置、光磁気ディスク（magneto-optical disk）装置等の二次記憶装置に対応し、クライアント２５は、ストレージモジュール２２に格納されたデータを要求するコンピュータシステム等に対応する。キャッシュモジュール２１は、クライアント２５からのアクセス要求に従って、要求されたデータを主記憶３３またはストレージモジュール２２から読み出し、クライアント２５に送信する。
【００５２】
各キャッシュモジュール２１は、要求受け付け部３１、プロセッサ３２、主記憶３３、モジュール間通信部３４、ストレージ制御部３５、および駆動部３６を備え、それらはシステムバス３７により互いに接続されている。
【００５３】
要求受け付け部３１は、ネットワーク２４に接続され、クライアント２５との通信を制御するネットワークインタフェースであり、クライアント２５からのアクセス要求を受け付ける。プロセッサ３２は、プログラムを実行することにより主記憶３３に格納されたデータを処理する。
【００５４】
図２のページ管理部１１、評価部１２、および転出先決定部１３は、主記憶３３の特定のプログラムコードセグメントに格納されたソフトウェアコンポーネントに対応し、主記憶３３のデータを用いて必要な処理を行う。
【００５５】
モジュール間通信部３４は、ネットワーク２３に接続され、他のキャッシュモジュール２１との通信を制御するネットワークインタフェースである。図２の転出部１４および転入部１５は、このモジュール間通信部３４に対応する。
【００５６】
ストレージ制御部３５は、ストレージモジュール２２へのアクセスを制御し、主記憶３３とストレージモジュール２２との間でデータの入出力を行うストレージインタフェースである。駆動部３６は、可搬記録媒体３８を駆動し、その記録内容にアクセスする。可搬記録媒体３８としては、メモリカード、フロッピーディスク、ＣＤ−ＲＯＭ（compact disk read only memory ）、光ディスク、光磁気ディスク等、任意のコンピュータ読み取り可能な記録媒体が用いられる。
【００５７】
この可搬記録媒体３８に処理に用いるプログラムとデータを格納しておき、必要に応じて、それらを主記憶３３にロードして使用することもできる。また、キャッシュモジュール２１は、これらのプログラムとデータをネットワーク２４上の外部の装置から受け取り、主記憶３３にロードして使用することもできる。
【００５８】
次に、図４から図１１までを参照しながら、キャッシュモジュール２１に保持されるデータの変化を具体的に説明する。以下の実施形態では、ストレージモジュール２２がディスク装置であり、格納されるデータはディスクページ毎に管理されるものとする。
【００５９】
図４は、２つのキャッシュモジュール＃０、＃１からなるストレージシステムにおいて、時刻０′５″（０分５秒）における各キャッシュモジュールの主記憶３３の状態を示している。
【００６０】
キャッシュモジュール＃０が管理するストレージモジュール２２にはページ“０”〜“９”が格納されており、キャッシュモジュール＃０は、これらのページに対するアクセス要求を受け取る。また、キャッシュモジュール＃１が管理するストレージモジュール２２にはページ“１０”〜“１９”が格納されており、キャッシュモジュール＃１は、これらのページに対するアクセス要求を受け取る。ここでは、簡単のため、すべての要求は読み出し要求であるものとする。
【００６１】
キャッシュモジュール＃０、＃１の主記憶３３は、それぞれ、３つのページを保持するキャッシュ容量を持ち、２つのキャッシュモジュール＃０、＃１の各々に対応するＬＲＵリスト４１を１つずつ持つ。ＬＲＵリスト４１の各要素は、主記憶３３に保持される１つのページを管理する構造体であり、その要素が管理するページへのポインタ、そのページの最近アクセス時刻、および次の要素へのポインタを持つ。
【００６２】
例えば、キャッシュモジュール＃０が保持している＃０のＬＲＵリストにおいて、第１要素４２は、第２要素４３へのポインタのみを持ち、第２要素４３は、ページ“１”のデータ４４へのポインタ、ページ“１”の最近アクセス時刻“０′５″”、および第３要素４５へのポインタを持つ。
【００６３】
また、第３要素４５は、ページ“０”のデータ４６へのポインタ、ページ“０”の最近アクセス時刻“０′４″”、および第４要素４７へのポインタを持ち、第４要素４７は、ページ“５”のデータ４８へのポインタ、ページ“５”の最近アクセス時刻“０′２″”を持つ。第４要素４７は、最後尾の要素であるため、次の要素へのポインタは持たない。
【００６４】
また、キャッシュモジュール＃１が保持している＃１のＬＲＵリストにおいて、第１要素４９は、第２要素５０へのポインタのみを持ち、第２要素５０は、ページ“１７”のデータ５１へのポインタ、ページ“１７”の最近アクセス時刻“０′３″”、および第３要素５２へのポインタを持つ。
【００６５】
また、第３要素５２は、ページ“１２”のデータ５３へのポインタ、ページ“１２”の最近アクセス時刻“０′１″”、および第４要素５４へのポインタを持ち、第４要素５４は、ページ“１０”のデータ５５へのポインタ、ページ“１０”の最近アクセス時刻“０′０″”を持つ。
【００６６】
次に、図５に示すように、時刻０′６″においてキャッシュモジュール＃０がページ“２”に対する要求ｒｅｑ（２）を受け取ると、キャッシュモジュール＃０は、ストレージモジュールからページ“２”を読み込み、その代わりに最も古いページ“５”を追い出す。
【００６７】
ここで、上述した（１）式の転出下限関数により最近アクセス時刻の下限値を計算すると、ｎ＝２、ｒ０＝“０′２″”、ｒ１＝“０′０″”であるから、下限値は“０′１″＋ε”となる。εを１″に比べて十分に小さい値と仮定すると、ページ“５”の最近アクセス時刻“０′２″”はこの下限値より新しいため、ページ“５”は廃棄されずに転出されるべきであると判断される。そこで、ページ“５”は、それよりも古いページ“１０”を持つキャッシュモジュール＃１へ転出される。
【００６８】
ページ“５”を受け入れたキャッシュモジュール＃１は、その代わりに最も古い最近アクセス時刻を持つページ“１０”を追い出す。ページ“１０”の最近アクセス時刻“０′０″”は下限値“０′１″＋ε”よりも古いので、ページ“１０”は廃棄される。
【００６９】
こうして、キャッシュモジュール＃０の＃０のＬＲＵリストには、ストレージモジュールから読み込まれたページ“２”の要素が追加され、その要素に最近アクセス時刻“０′６″”が書き込まれる。また、キャッシュモジュール＃１の＃０のＬＲＵリストには、キャッシュモジュール＃０から転出されたページ“５”の要素が追加され、＃１のＬＲＵリストからページ“１０”の要素が削除される。
【００７０】
次に、図６に示すように、時刻０′７″においてキャッシュモジュール＃０がページ“４”に対する要求ｒｅｑ（４）を受け取ると、キャッシュモジュール＃０は、ストレージモジュールからページ“４”を読み込み、その代わりに最も古いページ“０”を追い出す。
【００７１】
ここでは、ｒ０＝“０′４″”、ｒ１＝“０′１″”であるから、（１）式より下限値は“０′２．５″＋ε”となる。ページ“０”の最近アクセス時刻“０′４″”はこの下限値より新しいため、ページ“０”は廃棄されずに、それよりも古いページ“１２”を持つキャッシュモジュール＃１へ転出される。
【００７２】
ページ“０”を受け入れたキャッシュモジュール＃１は、その代わりに最も古い最近アクセス時刻を持つページ“１２”を追い出す。ページ“１２”の最近アクセス時刻“０′１″”は下限値“０′２．５″＋ε”よりも古いので、ページ“１２”は廃棄される。
【００７３】
こうして、キャッシュモジュール＃０の＃０のＬＲＵリストには、ストレージモジュールから読み込まれたページ“４”の要素が追加され、その要素に最近アクセス時刻“０′７″”が書き込まれる。また、キャッシュモジュール＃１の＃０のＬＲＵリストには、キャッシュモジュール＃０から転出されたページ“０”の要素が追加され、＃１のＬＲＵリストからページ“１２”の要素が削除される。
【００７４】
次に、図７に示すように、時刻０′８″においてキャッシュモジュール＃１がページ“１１”に対する要求ｒｅｑ（１１）を受け取ると、キャッシュモジュール＃１は、ストレージモジュールからページ“１１”を読み込み、その代わりに最も古いページ“５”を追い出す。
【００７５】
ここでは、ｒ０＝“０′５″”、ｒ１＝“０′２″”であるから、（１）式より下限値は“０′３．５″＋ε”となる。ページ“５”の最近アクセス時刻“０′２″”はこの下限値より古いため、ページ“５”は廃棄される。
【００７６】
こうして、キャッシュモジュール＃１の＃０のＬＲＵリストからページ“５”の要素が削除され、＃１のＬＲＵリストには、ストレージモジュールから読み込まれたページ“１１”の要素が追加され、その要素に最近アクセス時刻“０′８″”が書き込まれる。
【００７７】
次に、図８に示すように、時刻０′９″においてキャッシュモジュール＃０がページ“０”に対する要求ｒｅｑ（０）を受け取ると、ページ“０”はキャッシュモジュール＃１に存在するので、その要求はヒットする。そこで、キャッシュモジュール＃０は、キャッシュモジュール＃１に転出されていたページ“０”を転入し、その代わりに最も古いページ“１”をキャッシュモジュール＃１に転出する。
【００７８】
こうして、キャッシュモジュール＃０の＃０のＬＲＵリストからページ“１”の要素が削除され、そのＬＲＵリストにページ“０”の要素が追加されて、その要素に最近アクセス時刻“０′９″”が書き込まれる。また、キャッシュモジュール＃１の＃０のＬＲＵリストからページ“０”の要素が削除され、そのＬＲＵリストにページ“１”の要素が追加される。
【００７９】
次に、図９に示すように、時刻０′１０″においてキャッシュモジュール＃０がページ“２”に対する要求ｒｅｑ（２）を受け取ると、ページ“２”はキャッシュモジュール＃０に存在するので、その要求はヒットする。そこで、キャッシュモジュール＃０は、ページ“２”の要素を＃０のＬＲＵリストの先頭に移動し、その要素に最近アクセス時刻“０′１０″”を書き込む。
【００８０】
次に、図１０に示すように、時刻０′１１″においてキャッシュモジュール＃１がページ“１２”に対する要求ｒｅｑ（１２）を受け取ると、キャッシュモジュール＃１は、ストレージモジュールからページ“１２”を読み込み、その代わりに最も古いページ“１７”を追い出す。
【００８１】
ここでは、ｒ０＝“０′７″”、ｒ１＝“０′３″”であるから、（１）式より下限値は“０′５″＋ε”となる。ページ“１７”の最近アクセス時刻“０′３″”はこの下限値より古いため、ページ“１７”は廃棄される。
【００８２】
こうして、キャッシュモジュール＃１の＃１のＬＲＵリストからページ“１７”の要素が削除され、そのＬＲＵリストにストレージモジュールから読み込まれたページ“１２”の要素が追加されて、その要素に最近アクセス時刻“０′１１″”が書き込まれる。
【００８３】
次に、図１１に示すように、時刻０′１２″においてキャッシュモジュール＃０がページ“１”に対する要求ｒｅｑ（１）を受け取ると、ページ“１”はキャッシュモジュール＃１に存在するので、その要求はヒットする。そこで、キャッシュモジュール＃０は、キャッシュモジュール＃１に転出されていたページ“１”を転入し、その代わりに最も古いページ“４”をキャッシュモジュール＃１に転出する。
【００８４】
こうして、キャッシュモジュール＃０の＃０のＬＲＵリストからページ“４”の要素が削除され、そのＬＲＵリストにページ“１”の要素が追加されて、その要素に最近アクセス時刻“０′１２″”が書き込まれる。また、キャッシュモジュール＃１の＃０のＬＲＵリストからページ“１”の要素が削除され、そのＬＲＵリストにページ“４”の要素が追加される。
【００８５】
以上、図４から図１１までに示したように、ページの転出／転入を繰り返すことで、あるキャッシュモジュールが管理するページを他のキャッシュモジュールに保持することが可能になり、システム全体としてＬＲＵ法を実現することができる。
【００８６】
上述の実施形態においては、主として、ストレージモジュールに格納されるデータがページ単位で管理されている場合について説明したが、これに限らず、データが可変長のセグメント単位で管理されている場合にも、本発明は同様に適用可能である。
【００８７】
また、キャッシュモジュールが管理するストレージモジュールは、１つの二次記憶装置のデータ全体に対応するとは限らず、その一部分のデータ群を論理的なストレージモジュールとみなしてもよい。
【００８８】
さらに、データを転出すべきか廃棄すべきかを決めるアルゴリズムは、（１）式のような転出下限関数を用いたものに限られず、データのタイプ、サイズ等の他の属性に基づくアルゴリズムであってもよい。
【００８９】
【発明の効果】
本発明によれば、複数のキャッシュモジュールの間でデータの転出／転入を動的に行うことで、システム全体として最適なデータ割り当てが行われ、キャッシュのヒット率が向上する。また、１つのストレージシステムに属するデータ群は１つのキャッシュモジュールにより管理されるため、排他制御および一貫性保持制御を効率良く行うことができる。
【図面の簡単な説明】
【図１】本発明のキャッシュ制御装置の原理図である。
【図２】キャッシュ制御装置の構成図である。
【図３】ストレージシステムの構成図である。
【図４】第１の状態を示す図である。
【図５】第２の状態を示す図である。
【図６】第３の状態を示す図である。
【図７】第４の状態を示す図である。
【図８】第５の状態を示す図である。
【図９】第６の状態を示す図である。
【図１０】第７の状態を示す図である。
【図１１】第８の状態を示す図である。
【符号の説明】
１  管理手段
２  転出手段
３  転入手段
４、５、１６、２１  キャッシュモジュール
１１  ページ管理部
１２  評価部
１３  転出先決定部
１４  転出部
１５  転入部
２２  ストレージモジュール
２３、２４  通信ネットワーク
２５  クライアント
３１  要求受け付け部
３２  プロセッサ
３３  主記憶
３４  モジュール間通信部
３５  ストレージ制御部
３６  駆動部
３７  システムバス
３８  可搬記録媒体
４１  ＬＲＵリスト
４２、４３、４５、４７、４９、５０、５２、５４  要素
４４、４６、４８、５１、５３、５５  ページ
【図１】
0004036992.tif 000003
【図２】
0004036992.tif 000004
【図３】
0004036992.tif 000005
【図４】
0004036992.tif 000006
【図５】
0004036992.tif 000007
【図６】
0004036992.tif 000008
【図７】
0004036992.tif 000009
【図８】
0004036992.tif 000010
【図９】
0004036992.tif 000011
【図１０】
0004036992.tif 000012
【図１１】
0004036992.tif 000013