(57)【要約】【課題】キャッシュの動作時に、動的に独立データと共有データとの判別を行い、共有データを優先してキャッシュに保持する。【解決手段】記憶装置に接続され、複数の要求元に接続されるキャッシュ装置であって、要求元と記憶装置との間の読み出し要求及び読み出し応答を中継するキャッシュ手段と、読み出し要求中の第１のデータの指定に対応付けて要求元を第１の履歴として記憶し、キャッシュ手段により第１のデータが保持されておらず且つ第１のデータを保持するために十分な記憶領域が存在しない場合に、第１のデータ又はキャッシュ手段に保持されたデータのうち、第１の履歴においてより少数の要求元に対応付けられたデータをより多数の要求元に対応付けられたデータに優先して第２のデータとして選択し、第２のデータと第１のデータとが異なるならば、第２のデータを破棄させた後に第１のデータを記憶させる記憶領域制御手段とを備える。【選択図】      図１
2016114967.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置に接続され、複数の要求元に接続されるキャッシュ装置であって、
第１の前記要求元から第１の読み出し要求を受信し、前記第１の読み出し要求において指定された第１のデータを保持していない場合に、前記記憶装置に前記第１の読み出し要求を送信し、前記記憶装置から第１の読み出し応答を受信し、前記第１の読み出し応答を前記第１の要求元へ送信する一方、前記第１のデータを保持している場合に、前記第１のデータを含む第２の読み出し応答を前記第１の要求元へ送信するキャッシュ手段と、
前記第１のデータの指定に対応付けて前記第１の要求元を第１の履歴として記憶し、前記キャッシュ手段により前記第１のデータが保持されておらず且つ前記キャッシュ手段に前記第１のデータを保持するために十分な記憶領域が存在する場合に、前記キャッシュ手段に前記第１のデータを記憶させる一方、前記キャッシュ手段により前記第１のデータが保持されておらず且つ前記キャッシュ手段に前記第１のデータを保持するために十分な記憶領域が存在しない場合に、前記第１のデータ又は前記キャッシュ手段に保持されたデータのうち、前記第１の履歴においてより少数の前記要求元に対応付けられたデータを前記第１の履歴においてより多数の前記要求元に対応付けられたデータに優先して第２のデータとして選択し、前記第２のデータと前記第１のデータとが異なるならば、前記キャッシュ手段に前記第２のデータを破棄させた後に前記第１のデータを記憶させる記憶領域制御手段と
を備えることを特徴とするキャッシュ装置。
【請求項２】
複数の前記要求元にそれぞれ１台の２次キャッシュ装置を介して接続され、
前記２次キャッシュ装置は、前記第１の要求元から第２の読み出し要求を受信し、前記第２の読み出し要求において指定された第３のデータを保持していない場合に、前記キャッシュ装置を介して前記記憶装置に前記第２の読み出し要求を送信し、前記キャッシュ装置を介して前記記憶装置から第３の読み出し応答を受信し、前記第３の読み出し応答を前記第１の要求元へ送信する一方、前記第３のデータを保持している場合に、前記第３のデータを含む第４の読み出し応答を前記第１の要求元へ送信し、
前記２次キャッシュ装置は、前記第３のデータの指定に対応付けて前記第１の要求元を第２の履歴として記憶し、前記第３のデータが保持されておらず且つ前記第３のデータを保持するために十分な記憶領域が存在する場合に、前記第３のデータを記憶する一方、前記第３のデータが保持されておらず且つ前記第３のデータを保持するために十分な記憶領域が存在しない場合に、前記第３のデータ又は保持されたデータのうち、前記第２の履歴においてより少数回、前記要求元に対応付けられたデータを前記第２の履歴においてより多数回、前記要求元に対応付けられたデータに優先して第４のデータとして選択し、前記第４のデータと前記第３のデータとが異なるならば、前記第４のデータを破棄した後に前記第３のデータを記憶する
ことを特徴とする請求項１に記載のキャッシュ装置。
【請求項３】
複数の前記要求元にそれぞれ１台の２次キャッシュ装置を介して接続され、
前記キャッシュ装置は、前記２次キャッシュ装置に前記第１の履歴の情報を送信する通信手段を更に備え、
前記２次キャッシュ装置は、前記第１の要求元から第２の読み出し要求を受信し、前記第２の読み出し要求において指定された第３のデータを保持していない場合に、前記キャッシュ装置を介して前記記憶装置に前記第２の読み出し要求を送信し、前記キャッシュ装置を介して前記記憶装置から第３の読み出し応答を受信し、前記第３の読み出し応答を前記第１の要求元へ送信する一方、前記第３のデータを保持している場合に、前記第３のデータを含む第４の読み出し応答を前記第１の要求元へ送信し、
前記２次キャッシュ装置は、前記第３のデータが保持されておらず且つ前記第３のデータを保持するために十分な記憶領域が存在する場合に、前記第３のデータを記憶する一方、前記第３のデータが保持されておらず且つ前記第３のデータを保持するために十分な記憶領域が存在しない場合に、前記キャッシュ装置から前記第１の履歴の情報を取得し、前記第３のデータ又は保持されたデータのうち、前記第１の履歴においてより多数の前記要求元に対応付けられたデータを前記第１の履歴においてより少数の前記要求元に対応付けられたデータに優先して第５のデータとして選択し、前記第５のデータと前記第３のデータとが異なるならば、前記第５のデータを破棄した後に前記第３のデータを記憶する
ことを特徴とする請求項１に記載のキャッシュ装置。
【請求項４】
請求項１に記載のキャッシュ装置を介して記憶装置に接続され、それぞれ１台の要求元に接続された２次キャッシュ装置であって、
前記２次キャッシュ装置は、前記キャッシュ装置から前記第１の履歴の情報を取得し、前記第１の履歴に基づいて、破棄するデータを決定する
ことを特徴とする２次キャッシュ装置。
【請求項５】
請求項１に記載のキャッシュ装置を介して記憶装置に接続され、それぞれ１台の要求元に接続された２次キャッシュ装置であって、
前記２次キャッシュ装置は、前記第１の要求元から第２の読み出し要求を受信し、前記第２の読み出し要求において指定された第３のデータを保持していない場合に、前記キャッシュ装置を介して前記記憶装置に前記第２の読み出し要求を送信し、前記キャッシュ装置を介して前記記憶装置から第３の読み出し応答を受信し、前記第３の読み出し応答を前記第１の要求元へ送信する一方、前記第３のデータを保持している場合に、前記第３のデータを含む第４の読み出し応答を前記第１の要求元へ送信する２次キャッシュ手段と、
前記２次キャッシュ装置は、前記第３のデータが保持されておらず且つ前記第３のデータを保持するために十分な記憶領域が存在する場合に、前記第３のデータを記憶する一方、前記第３のデータが保持されておらず且つ前記第３のデータを保持するために十分な記憶領域が存在しない場合に、前記キャッシュ装置から前記第１の履歴の情報を取得し、前記第３のデータ又は保持されたデータのうち、前記第１の履歴においてより多数の前記要求元に対応付けられたデータを前記第１の履歴においてより少数の前記要求元に対応付けられたデータに優先して第５のデータとして選択し、前記第５のデータと前記第３のデータとが異なるならば、前記第５のデータを破棄した後に前記第３のデータを記憶する２次記憶領域制御手段と
を備えることを特徴とする２次キャッシュ装置。
【請求項６】
前記記憶領域制御手段は、前記キャッシュ手段に前記第１のデータを記憶させる際に、前記記憶装置が保持する、前記第１のデータを含むデータブロックを、前記第１のデータとして記憶させ、
前記キャッシュ手段は、前記第１のデータを保持するか否かを判定する際に、前記第１のデータが、前記第１のデータとして記憶されたデータブロックに含まれるならば、前記第１のデータを保持すると判定する
ことを特徴とする請求項１乃至請求項３のいずれか１項に記載のキャッシュ装置。
【請求項７】
記憶装置に接続されたキャッシュ装置と、
前記キャッシュ装置を介して前記記憶装置に接続され、それぞれ１台の要求元に接続される、複数の２次キャッシュ装置とを備えたキャッシュシステムあって、
前記キャッシュ装置は、
前記２次キャッシュ装置を介して第１の前記要求元から第１の読み出し要求を受信し、前記第１の読み出し要求において指定された第１のデータを保持していない場合に、前記記憶装置に前記第１の読み出し要求を送信し、前記記憶装置から第１の読み出し応答を受信し、前記第１の読み出し応答を前記２次キャッシュ装置を介して前記第１の要求元へ送信する一方、前記第１のデータを保持している場合に、前記第１のデータを含む第２の読み出し応答を前記２次キャッシュ装置を介して前記第１の要求元へ送信するキャッシュ手段と、
前記第１のデータの指定に対応付けて前記第１の要求元を第１の履歴として記憶し、前記キャッシュ手段により前記第１のデータが保持されておらず且つ前記キャッシュ手段に前記第１のデータを保持するために十分な記憶領域が存在する場合に、前記キャッシュ手段に前記第１のデータを記憶させる一方、前記キャッシュ手段により前記第１のデータが保持されておらず且つ前記キャッシュ手段に前記第１のデータを保持するために十分な記憶領域が存在しない場合に、前記第１のデータ又は前記キャッシュ手段に保持されたデータのうち、前記第１の履歴においてより少数の前記要求元に対応付けられたデータを前記第１の履歴においてより多数の前記要求元に対応付けられたデータに優先して第２のデータとして選択し、前記第２のデータと前記第１のデータとが異なるならば、前記キャッシュ手段に前記第２のデータを破棄させた後に前記第１のデータを記憶させる記憶領域制御手段とを備え、
前記２次キャッシュ装置は、
前記第１の要求元から第２の読み出し要求を受信し、前記第２の読み出し要求において指定された第３のデータを保持していない場合に、前記キャッシュ装置を介して前記記憶装置に前記第２の読み出し要求を送信し、前記キャッシュ装置を介して前記記憶装置から第３の読み出し応答を受信し、前記第３の読み出し応答を前記第１の要求元へ送信する一方、前記第３のデータを保持している場合に、前記第３のデータを含む第４の読み出し応答を前記第１の要求元へ送信する２次キャッシュ手段と、
前記第３のデータが保持されておらず且つ前記第３のデータを保持するために十分な記憶領域が存在する場合に、前記第３のデータを記憶する一方、前記第３のデータが保持されておらず且つ前記第３のデータを保持するために十分な記憶領域が存在しない場合に、前記キャッシュ装置から前記第１の履歴の情報を取得し、前記第３のデータ又は保持されたデータのうち、前記第１の履歴においてより多数の前記要求元に対応付けられたデータを前記第１の履歴においてより少数の前記要求元に対応付けられたデータに優先して第４のデータとして選択し、前記第４のデータと前記第３のデータとが異なるならば、前記第４のデータを破棄した後に前記第３のデータを記憶する２次記憶領域制御手段とを備える
ことを特徴とするキャッシュシステム。
【請求項８】
記憶装置に接続され、複数の要求元に接続されるキャッシュ装置において、
第１の前記要求元から第１の読み出し要求を受信し、前記第１の読み出し要求において指定された第１のデータを保持していない場合に、前記記憶装置に前記第１の読み出し要求を送信し、前記記憶装置から第１の読み出し応答を受信し、前記第１の読み出し応答を前記第１の要求元へ送信する一方、前記第１のデータを保持している場合に、前記第１のデータを含む第２の読み出し応答を前記第１の要求元へ送信し、
前記第１のデータの指定に対応付けて前記第１の要求元を第１の履歴として記憶し、前記第１のデータが保持されておらず且つ前記第１のデータを保持するために十分な記憶領域が存在する場合に、前記第１のデータを記憶する一方、前記第１のデータが保持されておらず且つ前記第１のデータを保持するために十分な記憶領域が存在しない場合に、前記第１のデータ又は保持されたデータのうち、前記第１の履歴においてより少数の前記要求元に対応付けられたデータを前記第１の履歴においてより多数の前記要求元に対応付けられたデータに優先して第２のデータとして選択し、前記第２のデータと前記第１のデータとが異なるならば、前記第２のデータを破棄した後に前記第１のデータを記憶する
ことを特徴とするキャッシュ方法。
【請求項９】
記憶装置に接続され、複数の要求元に接続されるキャッシュ装置であって、
第１の前記要求元から第１の読み出し要求を受信し、前記第１の読み出し要求において指定された第１のデータを保持していない場合に、前記記憶装置に前記第１の読み出し要求を送信し、前記記憶装置から第１の読み出し応答を受信し、前記第１の読み出し応答を前記第１の要求元へ送信する一方、前記第１のデータを保持している場合に、前記第１のデータを含む第２の読み出し応答を前記第１の要求元へ送信するキャッシュ処理と、
前記第１のデータの指定に対応付けて前記第１の要求元を第１の履歴として記憶し、前記第１のデータが保持されておらず且つ前記第１のデータを保持するために十分な記憶領域が存在する場合に、前記第１のデータを記憶する一方、前記第１のデータが保持されておらず且つ前記第１のデータを保持するために十分な記憶領域が存在しない場合に、前記第１のデータ又は保持されたデータのうち、前記第１の履歴においてより少数の前記要求元に対応付けられたデータを前記第１の履歴においてより多数の前記要求元に対応付けられたデータに優先して第２のデータとして選択し、前記第２のデータと前記第１のデータとが異なるならば、前記第２のデータを破棄した後に前記第１のデータを記憶する記憶領域制御処理と
をコンピュータに実行させることを特徴とするキャッシュプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュされたデータのヒット率を向上させるキャッシュ装置、キャッシュシステム、キャッシュ方法、及びキャッシュプログラムに関する。
【背景技術】
【０００２】
データの読み出しを行う装置の多くでは、使用頻度の高いデータを高速な記憶装置に一時的に保持することにより、毎回、低速な記憶装置からデータを読み出す無駄を省いてデータの読み出しを高速化する「キャッシュ」技術が利用される。データの書き込みについても、「キャッシュ」技術が利用されることが多い。また、「キャッシュ」のために使われる高速な記憶装置や、複製されたデータも「キャッシュ」と呼ばれることがある。近年、キャッシュを高機能化又は高性能化するための技術が開発されている。
【０００３】
キャッシュを高性能化するための技術の一例が、特許文献１に開示されている。
【０００４】
特許文献１のストレージサブシステムは、書き込み速度に優劣がある記憶デバイスに対して、書き込み速度毎に書き込みキャッシュを分けることにより、速い記憶デバイスへの書き込み時間に対する、遅い記憶デバイスへの書き込み時間の影響を低減する。
【０００５】
上記の動作の結果、特許文献１のストレージサブシステムでは、キャッシュから各記憶デバイスへのデータの書き込み速度に違いがある場合であっても、データの書き込み処理が停滞しない。
【０００６】
キャッシュを高性能化するための技術の別の一例が、特許文献２に開示されている。
【０００７】
特許文献２の印刷文書処理システムは、複数のラスターイメージ生成部から出力された画像データをキャッシュに保持しつつ、プリンタに出力する。印刷文書処理システムは、キャッシュの残容量が少ない場合に、画像データをキャッシュに保持するか否かを、画像データのスコアにより決定する。画像データのスコアは、オブジェクトの種類若しくは複雑さ、又はラスターイメージ生成時の負荷、所要時間、データサイズ、色空間変換の要否、拡大率、回転の有無、グラデーション処理の有無、若しくはキャッシュ問い合わせ累積回数等により決定される。
【０００８】
上記の動作の結果、特許文献２の印刷文書処理システムは、画像データのスコアが適切に定義されることにより、データをキャッシュに保持するか否かを適切に判断する。
【０００９】
サーバがストレージからデータを読み出す場合、サーバとストレージのそれぞれがキャッシュを備えることがある。サーバ側のキャッシュを「サーバキャッシュ」、ストレージ側のキャッシュを「ストレージキャッシュ」と言う。
【００１０】
サーバキャッシュとストレージキャッシュとの両方を備える構成では、サーバにより読み出されたデータは、サーバキャッシュとストレージキャッシュの両方に一時的に保持される。そのため、１つのデータが、サーバキャッシュとストレージキャッシュとの両方に存在することがある。ところが、ストレージキャッシュ上のデータはサーバキャッシュ上のデータが消去されるまで参照されないため、ストレージのキャッシュが無駄に占有されるような状況が発生する可能性がある。
【００１１】
データが特定の１台のサーバのみにより読み出されるデータ（以下、「独立データ」という。）である場合には、特定のサーバのサーバキャッシュ上にあるデータが消去されるまで、ストレージキャッシュ上の対応するデータは読み出されない。一方、データが複数のサーバにより読み出されるデータ（以下、「共有データ」という。）である場合には、複数のサーバのうちの少なくとも一台のサーバのサーバキャッシュ上にあるデータが消去されると、ストレージキャッシュ上の対応するデータが読み出される。そこで、ストレージキャシュでは、読み出される可能性が低い独立データを保持するよりも、読み出される可能性が高い共有データを保持する方が、限られたキャッシュ領域においてヒット率を向上させることができる。
【００１２】
独立データと共有データとを区別して扱うことにより、キャッシュを高性能化するための技術の一例が、特許文献３に開示されている。
【００１３】
特許文献３のディスクアレイ装置では、共有ディスクのキャッシュはディスクインターフェースユニット内の共有キャッシュに、占有ディスクのキャッシュはホストインターフェースユニット内の占有キャッシュに置かれる。
【００１４】
上記の動作の結果、特許文献３のディスクアレイ装置では、ホストインターフェースユニット及びディスクインターフェースユニットが増設された場合に、ディスクアレイ装置の性能が低下しない。
【００１５】
独立データと共有データとを区別して扱うことにより、キャッシュを高性能化するための技術の別の一例が、特許文献４に開示されている。
【００１６】
特許文献４のマルチコアプロセッサシステムでは、共有キャッシュコントローラは、プログラムコードに基づいて、変数がスレッド間で共有される共有データであるか、あるいは共有されない非共有データであるかを判別する。共有キャッシュコントローラは、共有メモリ中の共有データを共有キャッシュメモリに、共有メモリ中の非共有データを分散キャッシュに保持する。
【００１７】
上記の動作の結果、特許文献４のマルチコアプロセッサシステムは、共有キャッシュメモリの領域を効率的に利用する。
【先行技術文献】
【特許文献】
【００１８】
【特許文献１】特開２０１０−０４９５０２
【特許文献２】特開２０１２−１１８７４５
【特許文献３】特開２００７−２０６９４９
【特許文献４】ＷＯ２０１１／１６１８２９
【発明の概要】
【発明が解決しようとする課題】
【００１９】
特許文献３及び特許文献４の技術では、事前に設定、分析等が行われることにより、キャッシュ動作前に独立データと共有データとの判別が行われる。そのため、特許文献３及び特許文献４の技術には、キャッシュ動作時に、動的に独立データと共有データとの判別を行うことができないという問題がある。
（発明の目的）
本発明の主たる目的は、キャッシュの動作時に、動的に独立データと共有データとの判別を行い、共有データを優先してキャッシュに保持することができるキャッシュ装置、キャッシュシステム、キャッシュ方法、及びキャッシュプログラムを提供することにある。
【課題を解決するための手段】
【００２０】
本発明のキャッシュ装置は、記憶装置に接続され、複数の要求元に接続されるキャッシュ装置であって、第１の要求元から第１の読み出し要求を受信し、第１の読み出し要求において指定された第１のデータを保持していない場合に、記憶装置に第１の読み出し要求を送信し、記憶装置から第１の読み出し応答を受信し、第１の読み出し応答を第１の要求元へ送信する一方、第１のデータを保持している場合に、第１のデータを含む第２の読み出し応答を第１の要求元へ送信するキャッシュ手段と、第１のデータの指定に対応付けて第１の要求元を第１の履歴として記憶し、キャッシュ手段により第１のデータが保持されておらず且つキャッシュ手段に第１のデータを保持するために十分な記憶領域が存在する場合に、キャッシュ手段に第１のデータを記憶させる一方、キャッシュ手段により第１のデータが保持されておらず且つキャッシュ手段に第１のデータを保持するために十分な記憶領域が存在しない場合に、第１のデータ又はキャッシュ手段に保持されたデータのうち、第１の履歴においてより少数の要求元に対応付けられたデータを第１の履歴においてより多数の要求元に対応付けられたデータに優先して第２のデータとして選択し、第２のデータと第１のデータとが異なるならば、キャッシュ手段に第２のデータを破棄させた後に第１のデータを記憶させる記憶領域制御手段とを備えることを特徴とする。
【００２１】
本発明のキャッシュシステムは、記憶装置に接続されたキャッシュ装置と、キャッシュ装置を介して記憶装置に接続され、それぞれ１台の要求元に接続される、複数の２次キャッシュ装置とを備えたキャッシュシステムあって、キャッシュ装置は、２次キャッシュ装置を介して第１の要求元から第１の読み出し要求を受信し、第１の読み出し要求において指定された第１のデータを保持していない場合に、記憶装置に第１の読み出し要求を送信し、記憶装置から第１の読み出し応答を受信し、第１の読み出し応答を２次キャッシュ装置を介して第１の要求元へ送信する一方、第１のデータを保持している場合に、第１のデータを含む第２の読み出し応答を２次キャッシュ装置を介して第１の要求元へ送信するキャッシュ手段と、第１のデータの指定に対応付けて第１の要求元を第１の履歴として記憶し、キャッシュ手段により第１のデータが保持されておらず且つキャッシュ手段に第１のデータを保持するために十分な記憶領域が存在する場合に、キャッシュ手段に第１のデータを記憶させる一方、キャッシュ手段により第１のデータが保持されておらず且つキャッシュ手段に第１のデータを保持するために十分な記憶領域が存在しない場合に、第１のデータ又はキャッシュ手段に保持されたデータのうち、第１の履歴においてより少数の要求元に対応付けられたデータを第１の履歴においてより多数の要求元に対応付けられたデータに優先して第２のデータとして選択し、第２のデータと第１のデータとが異なるならば、キャッシュ手段に第２のデータを破棄させた後に第１のデータを記憶させる記憶領域制御手段とを備え、２次キャッシュ装置は、第１の要求元から第２の読み出し要求を受信し、第２の読み出し要求において指定された第３のデータを保持していない場合に、キャッシュ装置を介して記憶装置に第２の読み出し要求を送信し、キャッシュ装置を介して記憶装置から第３の読み出し応答を受信し、第３の読み出し応答を第１の要求元へ送信する一方、第３のデータを保持している場合に、第３のデータを含む第４の読み出し応答を第１の要求元へ送信する２次キャッシュ手段と、第３のデータが保持されておらず且つ第３のデータを保持するために十分な記憶領域が存在する場合に、第３のデータを記憶する一方、第３のデータが保持されておらず且つ第３のデータを保持するために十分な記憶領域が存在しない場合に、キャッシュ装置から第１の履歴の情報を取得し、第３のデータ又は保持されたデータのうち、第１の履歴においてより多数の要求元に対応付けられたデータを第１の履歴においてより少数の要求元に対応付けられたデータに優先して第４のデータとして選択し、第４のデータと第３のデータとが異なるならば、第４のデータを破棄した後に第３のデータを記憶する２次記憶領域制御手段とを備えることを特徴とする。
【００２２】
本発明のキャッシュ方法は、記憶装置に接続され、複数の要求元に接続されるキャッシュ装置において、第１の要求元から第１の読み出し要求を受信し、第１の読み出し要求において指定された第１のデータを保持していない場合に、記憶装置に第１の読み出し要求を送信し、記憶装置から第１の読み出し応答を受信し、第１の読み出し応答を第１の要求元へ送信する一方、第１のデータを保持している場合に、第１のデータを含む第２の読み出し応答を第１の要求元へ送信し、第１のデータの指定に対応付けて第１の要求元を第１の履歴として記憶し、第１のデータが保持されておらず且つ第１のデータを保持するために十分な記憶領域が存在する場合に、第１のデータを記憶する一方、第１のデータが保持されておらず且つ第１のデータを保持するために十分な記憶領域が存在しない場合に、第１のデータ又は保持されたデータのうち、第１の履歴においてより少数の要求元に対応付けられたデータを第１の履歴においてより多数の要求元に対応付けられたデータに優先して第２のデータとして選択し、第２のデータと第１のデータとが異なるならば、第２のデータを破棄した後に第１のデータを記憶することを特徴とする。
【００２３】
本発明のキャッシュプログラムは、記憶装置に接続され、複数の要求元に接続されるキャッシュ装置であって、第１の要求元から第１の読み出し要求を受信し、第１の読み出し要求において指定された第１のデータを保持していない場合に、記憶装置に第１の読み出し要求を送信し、記憶装置から第１の読み出し応答を受信し、第１の読み出し応答を第１の要求元へ送信する一方、第１のデータを保持している場合に、第１のデータを含む第２の読み出し応答を第１の要求元へ送信するキャッシュ処理と、第１のデータの指定に対応付けて第１の要求元を第１の履歴として記憶し、第１のデータが保持されておらず且つ第１のデータを保持するために十分な記憶領域が存在する場合に、第１のデータを記憶する一方、第１のデータが保持されておらず且つ第１のデータを保持するために十分な記憶領域が存在しない場合に、第１のデータ又は保持されたデータのうち、第１の履歴においてより少数の要求元に対応付けられたデータを第１の履歴においてより多数の要求元に対応付けられたデータに優先して第２のデータとして選択し、第２のデータと第１のデータとが異なるならば、第２のデータを破棄させた後に第１のデータを記憶させる記憶領域制御処理とをコンピュータに実行させることを特徴とする。
【発明の効果】
【００２４】
本発明によれば、キャッシュの動作時に、動的に独立データと共有データとの判別を行い、共有データを優先してキャッシュに保持することができるという効果がある。
【図面の簡単な説明】
【００２５】
【図１】本発明の第１の実施形態におけるキャッシュ装置１００の構成の一例を示すブロック図である。
【図２】本発明の第１の実施形態におけるキャッシュ装置１００の動作を示すフローチャートである。
【図３】本発明の第１の実施形態におけるキャッシュ装置１００の動作の具体例を説明するための図である。
【図４】本発明の第２の実施形態におけるキャッシュ装置１１０の構成の一例を示すブロック図である。
【図５】本発明の第２の実施形態における２次キャッシュ装置４００の動作を示すフローチャートである。
【図６】本発明の第２の実施形態におけるキャッシュ装置１１０及び２次キャッシュ装置４００、４０１の動作の具体例を説明するための図である。
【図７】本発明の第３の実施形態におけるキャッシュ装置１２０の構成の一例を示すブロック図である。
【図８】本発明の第３の実施形態におけるキャッシュ装置１２０及び２次キャッシュ装置４１０、４１１の動作を示すフローチャートである。
【図９】本発明の第３の実施形態におけるキャッシュ装置１２０及び２次キャッシュ装置４１０、４１１の動作の具体例を説明するための図である。
【図１０】本発明の第４の実施形態におけるストレージ１３０の構成の一例を示すブロック図である。
【図１１】本発明の第４の実施形態におけるストレージ１３０の動作を示すフローチャートである。
【図１２】本発明の第４の実施形態におけるストレージ１３０における「分割領域」の作成方法の具体例を説明するための図である。
【図１３】本発明の第４の実施形態におけるストレージ１３０におけるストレージキャッシュ１３８から破棄されるデータの選択方法の具体例を説明するための図である。
【図１４】本発明の第４の実施形態及び第５の実施形態におけるキャッシュデータの配置の一例を示す図である。
【図１５】本発明の第５の実施形態におけるストレージ１４０及びサーバ３４０、３４１、３４２の構成の一例を示すブロック図である。
【図１６】本発明の第５の実施形態におけるストレージ１４０及びサーバ３４０の動作を示すフローチャートである。
【発明を実施するための形態】
【００２６】
以下、本発明の実施形態について、図面を参照して詳細に説明する。なお、すべての図面において、同等の構成要素には同じ符号を付し、適宜説明を省略する。
（第１の実施形態）
まず、本実施形態における構成について説明する。
【００２７】
図１は、本発明の第１の実施形態におけるキャッシュ装置１００の構成の一例を示すブロック図である。
【００２８】
本実施形態のキャッシュ装置１００は、記憶装置２００と、要求元３００と、要求元３０１とに接続される。キャッシュ装置１００は、キャッシュ手段１０１と、記憶領域制御手段１０２とを有する。なお、キャッシュ装置１００は、複数の記憶装置に接続されてもよいし、３台以上の要求元に接続されてもよい。
【００２９】
キャッシュ手段１０１は、まず、要求元３００からデータの読み出し要求を受信する。
【００３０】
次に、キャッシュ手段１０１は、読み出し要求において指定された指定データを保持していない場合に、記憶装置２００に読み出し要求を送信し、記憶装置２００から読み出し要求に対する応答（読み出し応答）を受信し、読み出し応答を要求元３００へ送信する。一方、キャッシュ手段１０１は、読み出し要求において指定された指定データを保持している場合に、その保持している指定データを含む読み出し応答を要求元３００へ送信する。
【００３１】
なお、キャッシュ手段１０１は、保持可能なキャッシュデータの量を定める所定の上限値（キャッシュ容量）を有する。キャッシュ容量は、保持可能なキャッシュデータのバイト数の合計により規定される。あるいは、キャッシュ容量は、指定データを格納するために使われるメモリ領域のブロック数の上限、保持可能な指定データの個数の上限等により規定されてもよい。
【００３２】
キャッシュ手段１０１は、要求元３０１に対しても、要求元３００に対するのと同様に動作する。
【００３３】
記憶領域制御手段１０２は、まず、読み出し要求における指定データの「指定」に対応付けて、要求元３００を履歴に記憶する。以下、キャッシュ装置１００の記憶領域制御手段１０２が有する前述の履歴を「要求履歴」と呼ぶ。なお、指定データの「指定」とは、指定データを特定する任意の情報である。指定データの指定は、例えば、データの識別子、ファイル名、開始アドレスと終了アドレスとの組、開始アドレスとデータ長との組、記憶装置の識別子、又はこれらの組み合わせである。また、要求履歴において、要求元３００は、要求元の識別子、ネットワークアドレス等の要求元を特定する任意の情報により特定される。
【００３４】
なお、記憶領域制御手段１０２は、要求履歴の要素として、所定の個数の最新の要素のみを保持してもよい。また、記憶領域制御手段１０２は、特定の指定データの指定に対する、要求元及び要求回数を、要求履歴として記憶してもよい。
【００３５】
次に、記憶領域制御手段１０２は、キャッシュ手段１０１により指定データが保持されておらず、且つキャッシュ手段１０１に上述の指定データを保持するために十分な記憶領域が存在する場合に、キャッシュ手段１０１に指定データを記憶させる。一方、記憶領域制御手段１０２は、キャッシュ手段１０１により指定データが保持されておらず、且つキャッシュ手段１０１に指定データを保持するために十分な記憶領域が存在しない場合に、破棄候補のデータを決定する。具体的には、記憶領域制御手段１０２は、指定データ又はキャッシュ手段１０１に保持されたデータのうち、要求履歴においてより少数の要求元に対応付けられたデータを、より多数の要求元に対応付けられたデータに優先して破棄候補のデータとして選択する。続いて、記憶領域制御手段１０２は、選択した破棄候補のデータと指定データとが異なるならば、キャッシュ手段１０１に、破棄候補のデータを破棄させた後に指定データを記憶させる。
【００３６】
なお、記憶領域制御手段１０２は、要求履歴の要素のうち、所定の個数の最新の要素のみを参照してもよい。また、最も少数の要求元に対応付けられた、キャッシュデータ又は指定データが複数存在する場合には、記憶領域制御手段１０２は、その中から任意のキャッシュデータ又は指定データを破棄候補として選択してもよい。キャッシュ装置１００は、例えば、その中から最も古い読み出し要求に対応するキャッシュデータを破棄候補として選択してもよい。
【００３７】
記憶領域制御手段１０２は、要求元３０１に対しても、要求元３００に対するのと同様に動作する。
【００３８】
記憶装置２００は、キャッシュデータの元データを保持する。記憶装置２００は、例えば、メモリ、ＳＳＤ（Solid State Drive）、ハードディスク、ディスクアレイ、データベース、サーバである。
【００３９】
要求元３００、要求元３０１は、記憶装置２００が保持するデータを読み出す。要求元３００、要求元３０１は、例えば、サーバ、端末、ＣＰＵ（Central Processing Unit）、マルチコアＣＰＵにおける各コア、マルチスレッドに対応したＣＰＵにおける各スレッドである。
【００４０】
次に、本実施形態における動作について説明する。
【００４１】
図２は、本発明の第１の実施形態におけるキャッシュ装置１００の動作を示すフローチャートである。図２のフローチャートは、１つの要求元からの１つのデータ読み出しに対する処理を示す。以下では、要求元３００に対する処理を例に説明する。なお、図２に示すフローチャート及び以下の説明は一例であり、適宜求める処理に応じて、処理順等を入れ替えたり、処理を戻したり、又は処理を繰り返したりしてもよい。また、キャッシュ装置１００が３つ以上の要求元に接続される場合にも、キャッシュ装置１００は、以下に説明する動作と同様に動作する。
【００４２】
キャッシュ手段１０１は、要求元３００から特定のデータの読み出し要求を受信する（ステップＳ１０１）。
【００４３】
記憶領域制御手段１０２は、読み出し要求における指定データの指定に対応付けて、要求元３００を要求履歴として記憶する（ステップＳ１０２）。
【００４４】
記憶領域制御手段１０２は、キャッシュ手段１０１により指定データが保持されているか否かを判定する（ステップＳ１０３）。
【００４５】
キャッシュ手段１０１により指定データが保持されている場合に（ステップＳ１０３：Ｙｅｓ）、キャッシュ手段１０１は、その保持されている指定データを含む読み出し応答を要求元３００へ送信し（ステップＳ１０４）、処理を終了する。
【００４６】
キャッシュ手段１０１により指定データが保持されていない場合に（ステップＳ１０３：Ｎｏ）、キャッシュ手段１０１は、記憶装置２００に読み出し要求を送信し（ステップＳ１０５）、ステップＳ１０６の処理へ進む。キャッシュ手段１０１は、記憶装置２００から読み出し応答を受信し（ステップＳ１０６）、読み出し応答を要求元３００へ送信し（ステップＳ１０７）、ステップＳ１０８の処理へ進む。
【００４７】
記憶領域制御手段１０２は、キャッシュ手段１０１に上述の指定データを保持するために十分な記憶領域が存在するか否かを判定する（ステップＳ１０８）。
【００４８】
キャッシュ手段１０１に上述の指定データを保持するために十分な記憶領域が存在する場合に（ステップＳ１０８：Ｙｅｓ）、記憶領域制御手段１０２は、キャッシュ手段１０１に指定データを記憶させ（ステップＳ１０９）、処理を終了する。
【００４９】
キャッシュ手段１０１に上述の指定データを保持するために十分な記憶領域が存在しない場合に（ステップＳ１０８：Ｎｏ）、記憶領域制御手段１０２は、指定データ又はキャッシュ手段１０１に保持されたデータのうち、要求履歴においてより少数の要求元に対応付けられたデータを、より多数の要求元に対応付けられたデータに優先して破棄候補のデータとして選択し（ステップＳ１１０）、ステップＳ１１１の処理へ進む。記憶領域制御手段１０２は、選択した破棄候補のデータと指定データとが異なるならば、キャッシュ手段１０１に、破棄候補のデータを破棄させた後に指定データを記憶させ（ステップＳ１１１）、処理を終了する。なお、上記の要求元の数は、要求履歴において特定のデータを要求した要求元の数である。例えば、特定のデータを、要求元３００が３回、要求元３０１が４回要求した場合には、上記の要求元の数は２である。
【００５０】
次に、本実施形態における処理の具体例について説明する。
【００５１】
図３は、本発明の第１の実施形態におけるキャッシュ装置１００の動作の具体例を説明するための図である。
【００５２】
図３（ａ）は、要求元３００及び要求元３０１からのデータ読み取り要求の時系列を示す。１番目の要素は、時刻“１”に、要求元“要求元Ａ”（要求元３００）から指定データ“データＡ”の読み出し要求があることを示す。２番目の要素は、時刻“２”に、要求元“要求元Ｂ”（要求元３０１）から指定データ“データＢ”の読み出し要求があることを示す。３番目の要素は、時刻“３”に、要求元“要求元Ａ”から指定データ“データＣ”の読み出し要求があることを示す。４番目の要素は、時刻“４”に、要求元“要求元Ｂ”から指定データ“データＣ”の読み出し要求があることを示す。５番目から８番目の要素は、時刻“５”から時刻“８”に、それぞれ、時刻“１”から時刻“４”における読み出し要求が繰り返されることを示す。
【００５３】
つまり、“データＡ”は要求元“要求元Ａ”からのみ要求される独立データである。また、“データＢ”は要求元“要求元Ｂ”からのみ要求される独立データである。一方、“データＣ”は要求元“要求元Ａ”及び要求元“要求元Ｂ”の両方から要求される共有データである。
【００５４】
図３（ｂ）は、キャッシュ装置１００のキャッシュデータに対する操作を示す。第１列は、時刻を示す。第２列、第３列、第４列は、それぞれ、指定データ“データＡ”、指定データ“データＢ”、指定データ“データＣ”に対するキャッシュ装置１００の操作を示す。操作“更新”は、記憶装置２００に対するデータ読み出し要求及びデータ読み出し応答を中継し、データ読み出し応答中のデータでキャッシュデータを更新することを示す。操作“ヒット”は、保持するキャッシュデータを用いてデータ読み出し応答を送信することを示す。操作“維持”は、キャッシュデータを変更しないことを示す。操作“中継”は、記憶装置２００に対するデータ読み出し要求及びデータ読み出し応答を中継するが、キャッシュデータを更新しないことを示す。なお、図３（ｂ）では、キャッシュ手段１０１のキャッシュ容量は、指定データ１つ分である。また、時刻“１”の前には、キャッシュは空であるものとする。
時刻“１”）
キャッシュ装置１００は、指定データ“データＡ”に対する要求元“要求元Ａ”からの読み出し要求を受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＡ”のキャッシュデータは存在しないので（ステップＳ１０３：Ｎｏ）、キャッシュ装置１００は、記憶装置２００から指定データ“データＡ”を取得し（ステップＳ１０５、Ｓ１０６）、要求元“要求元Ａ”へ送信する（ステップＳ１０７）。キャッシュに必要な空き容量があるので（ステップＳ１０８：Ｙｅｓ）、キャッシュ装置１００は、キャッシュに指定データ“データＡ”を記憶する（ステップＳ１０９）。
時刻“２”）
キャッシュ装置１００は、指定データ“データＢ”に対する要求元“要求元Ｂ”からの読み出し要求を受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＢ”のキャッシュデータは存在しないので（ステップＳ１０３：Ｎｏ）、キャッシュ装置１００は、記憶装置２００から指定データ“データＢ”を取得し（ステップＳ１０５、Ｓ１０６）、要求元“要求元Ｂ”へ送信する（ステップＳ１０７）。キャッシュに必要な空き容量がないので（ステップＳ１０８：Ｎｏ）、キャッシュ装置１００は、１つの要求元“要求元Ａ”に対応付けられたデータ“データＡ”を破棄候補として選択し（ステップＳ１１０）、選択した破棄候補“データＡ”を指定データ“データＢ”に更新する（ステップＳ１１１）。なお、本動作例では、最も少数台の要求元に対応付けられた、キャッシュデータ又は指定データが複数存在する場合には、キャッシュ装置１００は、最も古い読み出し要求に対応するキャッシュデータを破棄候補として選択する。
時刻“３”）
キャッシュ装置１００は、指定データ“データＣ”に対する要求元“要求元Ａ”からの読み出し要求を受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＣ”のキャッシュデータは存在しないので（ステップＳ１０３：Ｎｏ）、キャッシュ装置１００は、記憶装置２００から指定データ“データＣ”を取得し（ステップＳ１０５、Ｓ１０６）、要求元“要求元Ａ”へ送信する（ステップＳ１０７）。キャッシュに必要な空き容量がないので（ステップＳ１０８：Ｎｏ）、キャッシュ装置１００は、１つの要求元“要求元Ｂ”に対応付けられたデータ“データＢ”を破棄候補として選択し（ステップＳ１１０）、選択した破棄候補“データＢ”を指定データ“データＣ”に更新する（ステップＳ１１１）。
時刻“４”）
キャッシュ装置１００は、指定データ“データＣ”に対する要求元“要求元Ｂ”からの読み出し要求を受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＣ”のキャッシュデータは存在するので（ステップＳ１０３：Ｙｅｓ）、キャッシュ装置１００は、キャッシュデータ“データＣ”を含む読み出し応答を要求元“要求元Ｂ”へ送信する（ステップＳ１０４）。
時刻“５”）
キャッシュ装置１００は、指定データ“データＡ”に対する要求元“要求元Ａ”からの読み出し要求を受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＡ”のキャッシュデータは存在しないので（ステップＳ１０３：Ｎｏ）、キャッシュ装置１００は、記憶装置２００から指定データ“データＡ”を取得し（ステップＳ１０５、Ｓ１０６）、要求元“要求元Ａ”へ送信する（ステップＳ１０７）。キャッシュに必要な空き容量がないので（ステップＳ１０８：Ｎｏ）、キャッシュ装置１００は、１つの要求元“要求元Ａ”に対応付けられたデータ“データＡ”を破棄候補として選択し（ステップＳ１１０）、選択した破棄候補“データＡ”と指定データ“データＡ”が同じなので処理を終了する（ステップＳ１１１）。
時刻“６”）
キャッシュ装置１００は、指定データ“データＢ”に対する要求元“要求元Ｂ”からの読み出し要求を受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＢ”のキャッシュデータは存在しないので（ステップＳ１０３：Ｎｏ）、キャッシュ装置１００は、記憶装置２００から指定データ“データＢ”を取得し（ステップＳ１０５、Ｓ１０６）、要求元“要求元Ｂ”へ送信する（ステップＳ１０７）。キャッシュに必要な空き容量がないので（ステップＳ１０８：Ｎｏ）、キャッシュ装置１００は、１台の要求元“要求元Ｂ”に対応付けられたデータ“データＢ”を破棄候補として選択し（ステップＳ１１０）、選択した破棄候補“データＢ”と指定データ“データＢ”が同じなので処理を終了する（ステップＳ１１１）。
時刻“７”）
キャッシュ装置１００は、指定データ“データＣ”に対する要求元“要求元Ａ”からの読み出し要求を受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＣ”のキャッシュデータは存在するので（ステップＳ１０３：Ｙｅｓ）、キャッシュ装置１００は、キャッシュデータ“データＣ”を含む読み出し応答を要求元“要求元Ａ”へ送信する（ステップＳ１０４）。
時刻“８”）
キャッシュ装置１００は、指定データ“データＣ”に対する要求元“要求元Ｂ”からの読み出し要求を受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＣ”のキャッシュデータは存在するので（ステップＳ１０３：Ｙｅｓ）、キャッシュ装置１００は、キャッシュデータ“データＣ”を含む読み出し応答を要求元“要求元Ｂ”へ送信する（ステップＳ１０４）。
【００５５】
以上説明したように、本実施形態のキャッシュ装置１００は、共有データを独立データに優先してキャッシュに保持する。特に、キャッシュ装置１００は、共有データの全体を保持するために十分なキャッシュ容量を有する場合には、全ての共有データの読み出しをキャッシュに保持する。また、キャッシュ装置１００は、要求履歴に基づき、指定データが共有データであるか否かをキャッシュ動作時に動的に判断する。従って、本実施形態のキャッシュ装置１００は、キャッシュの動作時に、動的に独立データと共有データとの判別を行い、共有データを優先してキャッシュに保持することができる。
【００５６】
なお、本実施形態のキャッシュ装置１００では、共有データが独立データに優先してキャッシュに保持されるので、共有データの読み出し要求の独立データの読み出し要求に対する比率が大きい場合に、特にキャッシュのヒット率が高い。
（第２の実施形態）
次に、上述した第１の実施形態において、キャッシュ装置が２次キャッシュ装置を介して要求元に接続される、本発明の第２の実施形態について説明する。なお、以下の説明において、第１の実施形態と同等の構成要素には同じ符号を付し、適宜説明を省略する。
【００５７】
まず、本実施形態における構成について説明する。
【００５８】
図４は、本発明の第２の実施形態におけるキャッシュ装置１１０の構成の一例を示すブロック図である。
【００５９】
本実施形態のキャッシュ装置１１０は、２次キャッシュ装置４００を介して、要求元３００に接続される。また、キャッシュ装置１１０は、２次キャッシュ装置４０１を介して、要求元３０１に接続される。本実施形態のキャッシュ装置１１０の構成は、第１の実施形態のキャッシュ装置１００の構成と同じである。
【００６０】
２次キャッシュ装置４００及び２次キャッシュ装置４０１は、一般的なキャッシュ装置である。２次キャッシュ装置４００、２次キャッシュ装置４０１は、それぞれ、要求元３００、要求元３０１からのデータ読み出し要求を、キャッシュ装置１１０を介して、記憶装置２００へ中継する。２次キャッシュ装置４００、２次キャッシュ装置４０１は、データ読み出し要求を中継する際に、中継する読み出しデータを内部のキャッシュに保持する。２次キャッシュ装置４００、２次キャッシュ装置４０１は、キャッシュデータがキャッシュ容量を超える場合には、読み出し頻度の低いキャッシュデータを優先して破棄する。
【００６１】
次に、本実施形態における動作について説明する。
【００６２】
図５は、本発明の第２の実施形態における２次キャッシュ装置４００、４０１の動作を示すフローチャートである。図５のフローチャートは、１つの要求元からの１つのデータ読み出しに対する処理を示す。以下では、要求元３００に対する２次キャッシュ装置４００処理を例に説明する。なお、図５に示すフローチャート及び以下の説明は一例であり、適宜求める処理に応じて、処理順等を入れ替えたり、処理を戻したり、又は処理を繰り返したりしてもよい。
【００６３】
本実施形態のキャッシュ装置１１０の動作は、第１の実施形態のキャッシュ装置１００の動作と同じである。
【００６４】
本実施形態の２次キャッシュ装置４００の動作は、ステップＳ１１０の処理がステップＳ２１０の処理に置き換えられることを除いて、第１の実施形態のキャッシュ装置１００の動作と同じである。
【００６５】
２次キャッシュ装置４００は、指定データ又はキャッシュに保持されたデータのうち、要求履歴においてより少数回、要求元に対応付けられたデータを、より多数回、要求元に対応付けられたデータに優先して破棄候補のデータとして選択し（ステップＳ２１０）、ステップＳ１１１の処理へ進む。なお、上記の回数は、要求履歴において特定のデータが要求元から要求された累積回数である。例えば、特定のデータを、要求元３００が２回要求した場合には、上記の回数は２である。
【００６６】
なお、最も少数回、要求元に対応付けられた、キャッシュデータ又は指定データが複数存在する場合には、２次キャッシュ装置４００は、その中から任意のキャッシュデータ又は指定データを破棄候補として選択してもよい。２次キャッシュ装置４００は、例えば、その中から最も古い読み出し要求に対応するキャッシュデータを破棄候補として選択してもよい。
【００６７】
次に、本実施形態における処理の具体例について説明する。
【００６８】
図６は、本発明の第２の実施形態におけるキャッシュ装置１１０及び２次キャッシュ装置４００、４０１の動作の具体例を説明するための図である。
【００６９】
図６（ａ）は、要求元３００及び要求元３０１からのデータ読み取り要求の時系列を示す。１番目の要素は、時刻“１”に、要求元“要求元Ａ”から指定データ“データＡ”の読み出し要求があることを示す。２番目の要素は、時刻“２”に、要求元“要求元Ｂ”から指定データ“データＢ”の読み出し要求があることを示す。３番目から４番目の要素は、時刻“３”から時刻“４”に、それぞれ、時刻“１”から時刻“２”における読み出し要求が繰り返されることを示す。５番目の要素は、時刻“５”に、要求元“要求元Ａ”から指定データ“データＣ”の読み出し要求があることを示す。６番目の要素は、時刻“６”に、要求元“要求元Ｂ”から指定データ“データＣ”の読み出し要求があることを示す。７番目から１２番目の要素は、時刻“７”から時刻“１２”に、それぞれ、時刻“１”から時刻“６”における読み出し要求が繰り返されることを示す。
【００７０】
つまり、“データＡ”は要求元“要求元Ａ”からのみ要求される独立データである。また、“データＢ”は要求元“要求元Ｂ”からのみ要求される独立データである。一方、“データＣ”は要求元“要求元Ａ”及び要求元“要求元Ｂ”の両方から要求される共有データである。
【００７１】
図６（ｂ）は、２次キャッシュ装置４００のキャッシュデータに対する操作を示す。前提条件及び操作の記載方法は、図３（ｂ）の前提条件及び記載方法と同様である。
【００７２】
図６（ｃ）は、２次キャッシュ装置４０１のキャッシュデータに対する操作を示す。前提条件及び操作の記載方法は、図３（ｂ）の前提条件及び記載方法と同様である。
【００７３】
図６（ｄ）は、キャッシュ装置１１０のキャッシュデータに対する操作を示す。前提条件及び操作の記載方法は、図３（ｂ）の前提条件及び記載方法と同様である。
時刻“１”）
２次キャッシュ装置４００は、指定データ“データＡ”に対する要求元“要求元Ａ”からの読み出し要求を受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＡ”のキャッシュデータは存在しないので（ステップＳ１０３：Ｎｏ）、２次キャッシュ装置４００は、キャッシュ装置１１０を介して記憶装置２００から指定データ“データＡ”を取得し（ステップＳ１０５、Ｓ１０６）、要求元“要求元Ａ”へ送信する（ステップＳ１０７）。キャッシュに必要な空き容量があるので（ステップＳ１０８：Ｙｅｓ）、２次キャッシュ装置４００は、キャッシュに指定データ“データＡ”を記憶する（ステップＳ１０９）。
【００７４】
キャッシュ装置１１０は、指定データ“データＡ”に対する要求元“要求元Ａ”からの読み出し要求を２次キャッシュ装置４００を介して受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＡ”のキャッシュデータは存在しないので（ステップＳ１０３：Ｎｏ）、キャッシュ装置１１０は、記憶装置２００から指定データ“データＡ”を取得し（ステップＳ１０５、Ｓ１０６）、２次キャッシュ装置４００を介して要求元“要求元Ａ”へ送信する（ステップＳ１０７）。キャッシュに必要な空き容量があるので（ステップＳ１０８：Ｙｅｓ）、キャッシュ装置１１０は、キャッシュに指定データ“データＡ”を記憶する（ステップＳ１０９）。
時刻“２”）
２次キャッシュ装置４０１は、指定データ“データＢ”に対する要求元“要求元Ｂ”からの読み出し要求を受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＢ”のキャッシュデータは存在しないので（ステップＳ１０３：Ｎｏ）、２次キャッシュ装置４０１は、キャッシュ装置１１０を介して記憶装置２００から指定データ“データＢ”を取得し（ステップＳ１０５、Ｓ１０６）、要求元“要求元Ｂ”へ送信する（ステップＳ１０７）。キャッシュに必要な空き容量があるので（ステップＳ１０８：Ｙｅｓ）、２次キャッシュ装置４０１は、キャッシュに指定データ“データＢ”を記憶する（ステップＳ１０９）。
【００７５】
キャッシュ装置１１０は、指定データ“データＢ”に対する要求元“要求元Ｂ”からの読み出し要求を２次キャッシュ装置４０１を介して受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＢ”のキャッシュデータは存在しないので（ステップＳ１０３：Ｎｏ）、キャッシュ装置１１０は、記憶装置２００から指定データ“データＢ”を取得し（ステップＳ１０５、Ｓ１０６）、２次キャッシュ装置４０１を介して要求元“要求元Ｂ”へ送信する（ステップＳ１０７）。キャッシュに必要な空き容量がないので（ステップＳ１０８：Ｎｏ）、キャッシュ装置１１０は、１台の要求元“要求元Ａ”に対応付けられたデータ“データＡ”を破棄候補として選択し（ステップＳ１１０）、選択した破棄候補“データＡ”を指定データ“データＢ”に更新する（ステップＳ１１１）。
時刻“３”）
２次キャッシュ装置４００は、指定データ“データＡ”に対する要求元“要求元Ａ”からの読み出し要求を受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＡ”のキャッシュデータは存在するので（ステップＳ１０３：Ｙｅｓ）、２次キャッシュ装置４００は、キャッシュデータ“データＡ”を含む読み出し応答を要求元“要求元Ａ”へ送信する（ステップＳ１０４）。
時刻“４”）
２次キャッシュ装置４０１は、指定データ“データＢ”に対する要求元“要求元Ｂ”からの読み出し要求を受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＢ”のキャッシュデータは存在するので（ステップＳ１０３：Ｙｅｓ）、２次キャッシュ装置４０１は、キャッシュデータ“データＢ”を含む読み出し応答を要求元“要求元Ｂ”へ送信する（ステップＳ１０４）。
時刻“５”）
２次キャッシュ装置４００は、指定データ“データＣ”に対する要求元“要求元Ａ”からの読み出し要求を受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＣ”のキャッシュデータは存在しないので（ステップＳ１０３：Ｎｏ）、２次キャッシュ装置４００は、キャッシュ装置１１０を介して記憶装置２００から指定データ“データＣ”を取得し（ステップＳ１０５、Ｓ１０６）、要求元“要求元Ａ”へ送信する（ステップＳ１０７）。キャッシュに必要な空き容量がないので（ステップＳ１０８：Ｎｏ）、２次キャッシュ装置４００は、１回、要求元“要求元Ａ”に対応付けられたデータ“データＣ”を破棄候補として選択し（ステップＳ２１０）、選択した破棄候補“データＣ”を破棄する（ステップＳ１１１）。
【００７６】
キャッシュ装置１１０は、指定データ“データＣ”に対する要求元“要求元Ａ”からの読み出し要求を２次キャッシュ装置４００を介して受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＣ”のキャッシュデータは存在しないので（ステップＳ１０３：Ｎｏ）、キャッシュ装置１１０は、記憶装置２００から指定データ“データＣ”を取得し（ステップＳ１０５、Ｓ１０６）、２次キャッシュ装置４００を介して要求元“要求元Ａ”へ送信する（ステップＳ１０７）。キャッシュに必要な空き容量がないので（ステップＳ１０８：Ｎｏ）、キャッシュ装置１１０は、１台の要求元“要求元Ｂ”に対応付けられたデータ“データＢ”を破棄候補として選択し（ステップＳ１１０）、選択した破棄候補“データＢ”を指定データ“データＣ”に更新する（ステップＳ１１１）。
時刻“６”）
２次キャッシュ装置４０１は、指定データ“データＣ”に対する要求元“要求元Ｂ”からの読み出し要求を受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＣ”のキャッシュデータは存在しないので（ステップＳ１０３：Ｎｏ）、２次キャッシュ装置４０１は、キャッシュ装置１１０を介して記憶装置２００から指定データ“データＣ”を取得し（ステップＳ１０５、Ｓ１０６）、要求元“要求元Ｂ”へ送信する（ステップＳ１０７）。キャッシュに必要な空き容量がないので（ステップＳ１０８：Ｎｏ）、２次キャッシュ装置４０１は、１回、要求元“要求元Ｂ”に対応付けられたデータ“データＣ”を破棄候補として選択し（ステップＳ２１０）、選択した破棄候補“データＣ”を破棄する（ステップＳ１１１）。
【００７７】
キャッシュ装置１１０は、指定データ“データＣ”に対する要求元“要求元Ｂ”からの読み出し要求を２次キャッシュ装置４０１を介して受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＣ”のキャッシュデータは存在するので（ステップＳ１０３：Ｙｅｓ）、キャッシュ装置１１０は、キャッシュデータ“データＣ”を含む読み出し応答を２次キャッシュ装置４０１を介して要求元“要求元Ｂ”へ送信する（ステップＳ１０４）。
時刻“７”）
２次キャッシュ装置４００は、時刻“３”と同様に動作する。
時刻“８”）
２次キャッシュ装置４０１は、時刻“４”と同様に動作する。
時刻“９”）
２次キャッシュ装置４００は、時刻“３”と同様に動作する。
時刻“１０”）
２次キャッシュ装置４０１は、時刻“４”と同様に動作する。
時刻“１１”）
２次キャッシュ装置４００は、時刻“５”と同様に動作する。
【００７８】
キャッシュ装置１１０は、指定データ“データＣ”に対する要求元“要求元Ａ”からの読み出し要求を２次キャッシュ装置４００を介して受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＣ”のキャッシュデータは存在するので（ステップＳ１０３：Ｙｅｓ）、キャッシュ装置１１０は、キャッシュデータ“データＣ”を含む読み出し応答を２次キャッシュ装置４００を介して要求元“要求元Ａ”へ送信する（ステップＳ１０４）。
時刻“１２”）
２次キャッシュ装置４０１は、時刻“６”と同様に動作する。
【００７９】
キャッシュ装置１１０は、時刻“６”と同様に動作する。
【００８０】
以上説明したように、本実施形態のキャッシュ装置１１０は、共有データを独立データに優先してキャッシュに保持する。特に、キャッシュ装置１１０は、共有データの全体を保持するために十分なキャッシュ容量を有する場合には、全ての共有データの読み出しをキャッシュに保持する。また、キャッシュ装置１１０は、要求履歴に基づき、指定データが共有データであるか否かをキャッシュ動作時に動的に判断する。従って、本実施形態のキャッシュ装置１１０は、キャッシュの動作時に、動的に独立データと共有データとの判別を行い、共有データを優先してキャッシュに保持することができる。
【００８１】
なお、２次キャッシュ装置４００は、要求元３００の要求頻度の高いデータを優先してキャッシュに保持する。特に、２次キャッシュ装置４００は、要求頻度の高いデータの全体を保持するために十分なキャッシュ容量を有する場合には、要求頻度の高い全てのデータの読み出しをキャッシュに保持する。２次キャッシュ装置４０１も、２次キャッシュ装置４００と同様である。つまり、２次キャッシュ装置４００、４０１は、要求頻度の高いデータを優先してキャッシュに保持し、キャッシュ装置１１０は、共有データを優先してキャッシュに保持する。そのため、キャッシュ装置１１０では、個々の独立データの読み出し要求の個々の共有データの読み出し要求に対する比率が大きい場合に、特にキャッシュのヒット率が高い。
【００８２】
また、２次キャッシュ装置４００、２次キャッシュ装置４０１は、個々の独立データの読み出し要求の個々の共有データの読み出し要求に対する比率が大きい場合には、主に要求頻度の高いデータのキャッシュを保持する。一方、キャッシュ装置１１０は、個々の独立データの読み出し要求の個々の共有データの読み出し要求に対する比率が大きい場合には、主に共有データのキャッシュを保持する。その結果、本実施形態のキャッシュ装置１１０では、通常のキャッシュ装置を用いる場合に比べて、キャッシュ全体の利用効率が向上する。
（第３の実施形態）
次に、上述した第２の実施形態において、キャッシュ装置が２次キャッシュ装置に要求履歴の情報を渡す、本発明の第３の実施形態について説明する。なお、以下の説明において、第２の実施形態と同等の構成要素には同じ符号を付し、適宜説明を省略する。
【００８３】
まず、本実施形態における構成について説明する。
【００８４】
図７は、本発明の第３の実施形態におけるキャッシュ装置１２０の構成の一例を示すブロック図である。
【００８５】
キャッシュ装置１２０は、第２の実施形態における２次キャッシュ装置４００の代わりに、２次キャッシュ装置４１０に接続される。また、キャッシュ装置１２０は、第２の実施形態における２次キャッシュ装置４０１の代わりに、２次キャッシュ装置４１１に接続される。
【００８６】
本実施形態のキャッシュ装置１２０は、通信手段１２３を有する。
【００８７】
通信手段１２３は、２次キャッシュ装置４１０又は２次キャッシュ装置４１１から要求履歴の情報を要求されると、２次キャッシュ装置へ要求履歴の情報を送信する。
【００８８】
２次キャッシュ装置４１０は、第２の実施形態における２次キャッシュ装置４００と動作が異なる。また、２次キャッシュ装置４１１は、第２の実施形態における２次キャッシュ装置４１０と動作が異なる。本実施形態では、キャッシュ装置１２０は、第２の実施形態と同様に共有データを優先して保持する一方、２次キャッシュ装置４１０及び２次キャッシュ装置４１１は、独立データを優先して保持する。それによってキャッシュ全体の利用効率を向上させる。
【００８９】
本実施形態のキャッシュ装置１２０のその他の構成は、第２の実施形態のキャッシュ装置１１０の構成と同じである。
【００９０】
次に、本実施形態における動作について説明する。
【００９１】
図８は、本発明の第３の実施形態におけるキャッシュ装置１２０及び２次キャッシュ装置４１０、４１１の動作を示すフローチャートである。
【００９２】
図８（ａ）は、キャッシュ装置１２０の動作を示すフローチャートである。図８（ａ）のフローチャートは、１台の２次キャッシュ装置から１つの要求履歴の取得要求を受信した際の処理を示す。以下では、２次キャッシュ装置４１０から取得要求を受信した際の処理を例に説明する。なお、図８（ａ）に示すフローチャート及び以下の説明は一例であり、適宜求める処理に応じて、処理を繰り返してもよい。
【００９３】
図８（ｂ）は、２次キャッシュ装置４１０及び２次キャッシュ装置４１１の動作を示すフローチャートである。図８（ｂ）のフローチャートは、１つの要求元からの１つのデータ読み出しに対する処理を示す。以下では、要求元３００に対する２次キャッシュ装置４１０の処理を例に説明する。なお、図８（ｂ）に示すフローチャート及び以下の説明は一例であり、適宜求める処理に応じて、処理順等を入れ替えたり、処理を戻したり、又は処理を繰り返したりしてもよい。
【００９４】
本実施形態のキャッシュ装置１２０の動作は、ステップＳ４０１の処理が追加されることを除いて、第２の実施形態のキャッシュ装置１１０の動作と同じである。
【００９５】
キャッシュ装置１２０は、２次キャッシュ装置４１０から、要求履歴の取得要求を受信すると、キャッシュ装置１２０が有する要求履歴の情報を送信する（ステップＳ４０１）。
【００９６】
本実施形態の２次キャッシュ装置４１０の動作は、ステップＳ２１０の処理がステップＳ３１０及びステップＳ３１１の処理に置き換えられることを除いて、第２の実施形態の２次キャッシュ装置４００の動作と同じである。
【００９７】
２次キャッシュ装置４１０は、キャッシュ装置１２０からキャッシュ装置１２０の要求履歴を取得し（ステップＳ３１０）、ステップＳ３１１の処理へ進む。
【００９８】
２次キャッシュ装置４１０は、指定データ又はキャッシュに保持されたデータのうち、キャッシュ装置１２０の要求履歴においてより多数の要求元に対応付けられたデータを、より少数の要求元に対応付けられたデータに優先して破棄候補のデータとして選択し（ステップＳ３１１）、ステップＳ１１１の処理へ進む。なお、上記の要求元の数は、要求履歴において特定のデータを要求した要求元の数である。例えば、特定のデータを、要求元３００が２回、要求元３０１が３回要求した場合には、上記の要求元の数は２である。
【００９９】
なお、最も多数の要求元に対応付けられた、キャッシュデータ又は指定データが複数存在する場合には、２次キャッシュ装置４１０は、その中から任意のキャッシュデータ又は指定データを破棄候補として選択してもよい。２次キャッシュ装置４１０は、例えば、その中から最も新しい読み出し要求に対応するキャッシュデータを破棄候補として選択してもよい。
【０１００】
次に、本実施形態における処理の具体例について説明する。
【０１０１】
図９は、本発明の第３の実施形態におけるキャッシュ装置１２０及び２次キャッシュ装置４１０、４１１の動作の具体例を説明するための図である。
【０１０２】
図９（ａ）は、要求元３００及び要求元３０１からのデータ読み取り要求の時系列を示し、図３（ａ）と同様である。
【０１０３】
図９（ｂ）は、２次キャッシュ装置４１０のキャッシュデータに対する操作を示す。前提条件及び操作の記載方法は、図６（ｂ）の前提条件及び記載方法と同様である。
【０１０４】
図９（ｃ）は、２次キャッシュ装置４１１のキャッシュデータに対する操作を示す。前提条件及び操作の記載方法は、図６（ｃ）の前提条件及び記載方法と同様である。
【０１０５】
図９（ｄ）は、キャッシュ装置１２０のキャッシュデータに対する操作を示す。前提条件及び操作の記載方法は、図６（ｄ）の前提条件及び記載方法と同様である。
時刻“１”）
２次キャッシュ装置４１０は、指定データ“データＡ”に対する要求元“要求元Ａ”からの読み出し要求を受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＡ”のキャッシュデータは存在しないので（ステップＳ１０３：Ｎｏ）、２次キャッシュ装置４１０は、キャッシュ装置１２０を介して記憶装置２００から指定データ“データＡ”を取得し（ステップＳ１０５、Ｓ１０６）、要求元“要求元Ａ”へ送信する（ステップＳ１０７）。キャッシュに必要な空き容量があるので（ステップＳ１０８：Ｙｅｓ）、２次キャッシュ装置４１０は、キャッシュに指定データ“データＡ”を記憶する（ステップＳ１０９）。
【０１０６】
キャッシュ装置１２０は、指定データ“データＡ”に対する要求元“要求元Ａ”からの読み出し要求を２次キャッシュ装置４１０を介して受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＡ”のキャッシュデータは存在しないので（ステップＳ１０３：Ｎｏ）、キャッシュ装置１２０は、記憶装置２００から指定データ“データＡ”を取得し（ステップＳ１０５、Ｓ１０６）、２次キャッシュ装置４１０を介して要求元“要求元Ａ”へ送信する（ステップＳ１０７）。キャッシュに必要な空き容量があるので（ステップＳ１０８：Ｙｅｓ）、キャッシュ装置１２０は、キャッシュに指定データ“データＡ”を記憶する（ステップＳ１０９）。
時刻“２”）
２次キャッシュ装置４１１は、指定データ“データＢ”に対する要求元“要求元Ｂ”からの読み出し要求を受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＢ”のキャッシュデータは存在しないので（ステップＳ１０３：Ｎｏ）、２次キャッシュ装置４１１は、キャッシュ装置１２０を介して記憶装置２００から指定データ“データＢ”を取得し（ステップＳ１０５、Ｓ１０６）、要求元“要求元Ｂ”へ送信する（ステップＳ１０７）。キャッシュに必要な空き容量があるので（ステップＳ１０８：Ｙｅｓ）、２次キャッシュ装置４１１は、キャッシュに指定データ“データＢ”を記憶する（ステップＳ１０９）。
【０１０７】
キャッシュ装置１２０は、指定データ“データＢ”に対する要求元“要求元Ｂ”からの読み出し要求を２次キャッシュ装置４１１を介して受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＢ”のキャッシュデータは存在しないので（ステップＳ１０３：Ｎｏ）、キャッシュ装置１２０は、記憶装置２００から指定データ“データＢ”を取得し（ステップＳ１０５、Ｓ１０６）、２次キャッシュ装置４１１を介して要求元“要求元Ｂ”へ送信する（ステップＳ１０７）。キャッシュに必要な空き容量がないので（ステップＳ１０８：Ｎｏ）、キャッシュ装置１２０は、１台の要求元“要求元Ａ”に対応付けられたデータ“データＡ”を破棄候補として選択し（ステップＳ１１０）、選択した破棄候補“データＡ”を指定データ“データＢ”に更新する（ステップＳ１１１）。
時刻“３”）
２次キャッシュ装置４１０は、指定データ“データＣ”に対する要求元“要求元Ａ”からの読み出し要求を受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＣ”のキャッシュデータは存在しないので（ステップＳ１０３：Ｎｏ）、２次キャッシュ装置４１０は、キャッシュ装置１２０を介して記憶装置２００から指定データ“データＣ”を取得し（ステップＳ１０５、Ｓ１０６）、要求元“要求元Ａ”へ送信する（ステップＳ１０７）。
【０１０８】
キャッシュ装置１２０は、指定データ“データＣ”に対する要求元“要求元Ａ”からの読み出し要求を２次キャッシュ装置４１０を介して受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＣ”のキャッシュデータは存在しないので（ステップＳ１０３：Ｎｏ）、キャッシュ装置１２０は、記憶装置２００から指定データ“データＣ”を取得し（ステップＳ１０５、Ｓ１０６）、２次キャッシュ装置４１０を介して要求元“要求元Ａ”へ送信する（ステップＳ１０７）。キャッシュに必要な空き容量がないので（ステップＳ１０８：Ｎｏ）、キャッシュ装置１２０は、１台の要求元“要求元Ｂ”に対応付けられたデータ“データＢ”を破棄候補として選択し（ステップＳ１１０）、選択した破棄候補“データＢ”を指定データ“データＣ”に更新する（ステップＳ１１１）。
【０１０９】
２次キャッシュ装置４１０は、キャッシュに必要な空き容量がないので（ステップＳ１０８：Ｎｏ）、キャッシュ装置１２０の要求履歴を取得する（ステップＳ３１０）。
【０１１０】
キャッシュ装置１２０は、２次キャッシュ装置４１０から、要求履歴の取得要求を受信すると、キャッシュ装置１２０が有する要求履歴の情報を送信する（ステップＳ４０１）。
【０１１１】
２次キャッシュ装置４１０は、キャッシュ装置１２０の要求履歴に基づいて、１台の要求元“要求元Ａ”に対応付けられたデータ“データＣ”を破棄候補として選択し（ステップＳ３１１）、選択した破棄候補“データＣ”を破棄する（ステップＳ１１１）。
時刻“４”）
２次キャッシュ装置４１１は、指定データ“データＣ”に対する要求元“要求元Ｂ”からの読み出し要求を受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＣ”のキャッシュデータは存在しないので（ステップＳ１０３：Ｎｏ）、２次キャッシュ装置４１１は、キャッシュ装置１２０を介して記憶装置２００から指定データ“データＣ”を取得し（ステップＳ１０５、Ｓ１０６）、要求元“要求元Ｂ”へ送信する（ステップＳ１０７）。
【０１１２】
キャッシュ装置１２０は、指定データ“データＣ”に対する要求元“要求元Ｂ”からの読み出し要求を２次キャッシュ装置４１１を介して受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＣ”のキャッシュデータは存在するので（ステップＳ１０３：Ｙｅｓ）、キャッシュ装置１２０は、キャッシュデータ“データＣ”を含む読み出し応答を２次キャッシュ装置４１１を介して要求元“要求元Ｂ”へ送信する（ステップＳ１０４）。
【０１１３】
２次キャッシュ装置４１１は、キャッシュに必要な空き容量がないので（ステップＳ１０８：Ｎｏ）、キャッシュ装置１２０の要求履歴を取得する（ステップＳ３１０）。
【０１１４】
キャッシュ装置１２０は、２次キャッシュ装置４１１から、要求履歴の取得要求を受信すると、キャッシュ装置１２０が有する要求履歴の情報を送信する（ステップＳ４０１）。
【０１１５】
２次キャッシュ装置４１１は、キャッシュ装置１２０の要求履歴に基づいて、２台の要求元“要求元Ａ”及び“要求元Ｂ”に対応付けられたデータ“データＣ”を破棄候補として選択し（ステップＳ３１１）、選択した破棄候補“データＣ”を破棄する（ステップＳ１１１）。
時刻“５”）
２次キャッシュ装置４１０は、指定データ“データＡ”に対する要求元“要求元Ａ”からの読み出し要求を受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＡ”のキャッシュデータは存在するので（ステップＳ１０３：Ｙｅｓ）、２次キャッシュ装置４１０は、キャッシュデータ“データＡ”を含む読み出し応答を要求元“要求元Ａ”へ送信する（ステップＳ１０４）。
時刻“６”）
２次キャッシュ装置４１１は、指定データ“データＢ”に対する要求元“要求元Ｂ”からの読み出し要求を受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＢ”のキャッシュデータは存在するので（ステップＳ１０３：Ｙｅｓ）、２次キャッシュ装置４１１は、キャッシュデータ“データＢ”を含む読み出し応答を要求元“要求元Ｂ”へ送信する（ステップＳ１０４）。
時刻“７”）
２次キャッシュ装置４１０は、時刻“３”と同様に動作する。
【０１１６】
キャッシュ装置１２０は、指定データ“データＣ”に対する要求元“要求元Ａ”からの読み出し要求を２次キャッシュ装置４１０を介して受信すると（ステップＳ１０１）、要求履歴に記録する（ステップＳ１０２）。指定データ“データＣ”のキャッシュデータは存在するので（ステップＳ１０３：Ｙｅｓ）、キャッシュ装置１２０は、キャッシュデータ“データＣ”を含む読み出し応答を２次キャッシュ装置４１０を介して要求元“要求元Ａ”へ送信する（ステップＳ１０４）。
【０１１７】
キャッシュ装置１２０は、２次キャッシュ装置４１０から、要求履歴の取得要求を受信すると、キャッシュ装置１２０が有する要求履歴の情報を送信する（ステップＳ４０１）。
時刻“８”）
２次キャッシュ装置４１１は、時刻“４”と同様に動作する。
【０１１８】
キャッシュ装置１２０は、時刻“４”と同様に動作する。
【０１１９】
以上説明したように、本実施形態のキャッシュ装置１２０は、共有データを独立データに優先してキャッシュに保持する。特に、キャッシュ装置１２０は、共有データの全体を保持するために十分なキャッシュ容量を有する場合には、全ての共有データの読み出しをキャッシュに保持する。また、キャッシュ装置１２０は、要求履歴に基づき、指定データが共有データであるか否かをキャッシュ動作時に動的に判断する。従って、本実施形態のキャッシュ装置１２０は、キャッシュの動作時に、動的に独立データと共有データとの判別を行い、共有データを優先してキャッシュに保持することができる。
【０１２０】
なお、２次キャッシュ装置４１０は、要求元３００の独立データを優先してキャッシュに保持する。特に、２次キャッシュ装置４１０は、要求元３００の独立データの全体を保持するために十分なキャッシュ容量を有する場合には、要求元３００の全ての独立データの読み出しをキャッシュに保持する。２次キャッシュ装置４１１も、２次キャッシュ装置４１０と同様である。つまり、２次キャッシュ装置４１０、２次キャッシュ装置４１１は、それぞれ、要求元３００、要求元３０１の独立データを優先してキャッシュに保持し、キャッシュ装置１２０は、共有データを優先してキャッシュに保持する。そのため、キャッシュ装置１２０では、キャッシュ装置１２０が共有データを保持するために十分なキャッシュ容量を有し、２次キャッシュ装置４１０及び２次キャッシュ装置４１１が独立データを保持するために十分なキャッシュ容量を有する場合には、独立データの読み出し要求の共有データの読み出し要求に対する比率によらずに、キャッシュのヒット率が高い。
【０１２１】
また、２次キャッシュ装置４１０及び２次キャッシュ装置４１１が独立データを保持するために十分なキャッシュ容量を有する場合には、２次キャッシュ装置４１０、２次キャッシュ装置４１１は、専ら独立データのキャッシュを保持する。一方、キャッシュ装置１２０が共有データを保持するために十分なキャッシュ容量を有する場合には、キャッシュ装置１２０は専ら共有データのキャッシュを保持する。その結果、本実施形態のキャッシュ装置１２０では、キャッシュ装置１１０を用いる場合に比べて、キャッシュ全体の利用効率が向上する。
（第４の実施形態）
次に、上述した第２の実施形態におけるキャッシュ装置を内蔵するストレージである、本発明の第４の実施形態について説明する。なお、以下の説明において、第２の実施形態と同等の構成要素には同じ符号を付し、適宜説明を省略する。
【０１２２】
まず、本実施形態における構成について説明する。
【０１２３】
図１０は、本発明の第４の実施形態におけるストレージ１３０の構成の一例を示すブロック図である。
【０１２４】
ストレージ１３０は、サーバキャッシュ４３０と、サーバキャッシュ４３１と、サーバキャッシュ４３２とに接続される。ストレージ１３０は、サーバキャッシュ４３０、サーバキャッシュ４３１、サーバキャッシュ４３２を介して、それぞれ、サーバ３３０、サーバ３３１、サーバ３３２に接続される。なお、サーバキャッシュ４３０、サーバキャッシュ４３１、サーバキャッシュ４３２は、それぞれ、サーバ３３０、サーバ３３１、サーバ３３２に内蔵される。ストレージ１３０は、サーバ３３０、サーバ３３１、サーバ３３２により読み出されるデータを保持する、キャッシュを内蔵する記憶装置である。
【０１２５】
ストレージ１３０は、ストレージキャッシュ情報制御手段１３１と、分割領域判定手段１３２と、アクセス情報制御手段１３３と、データ破棄判定手段１３４と、分割領域作成手段１３５と、ストレージキャッシュ１３８と、ＨＤＤ（Hard Disk Drive）１３９とを有する。
【０１２６】
キャッシュ情報制御手段１３１は、各サーバからストレージ１３０に対してデータ読み出し要求が発行された際に、データ読み出しの指定データがストレージキャッシュ１３８に存在するか否かを判定し、ストレージキャッシュ１３８の使用量を計測する。
【０１２７】
分割領域判定手段１３２は、データ読み出しの指定データがストレージキャッシュ１３８上のどの「分割領域」に属するかの判定を行う。なお、「分割領域」については、後述する。
【０１２８】
アクセス情報制御手段１３３は、各サーバからのデータ読み出しの要求の要求履歴を記憶する。
【０１２９】
データ破棄判定手段１３４は、ストレージキャッシュ１３８に存在するデータのうち、破棄対象のデータの判定を行う。なお、データ破棄判定手段１３４は、ストレージキャッシュ１３８に存在するデータのうち、独立データを共有データに優先して、破棄対象のデータとして選択する。
【０１３０】
分割領域作成手段１３５は、ストレージキャッシュ１３８に新たにデータを保持させる際に、新たな「分割領域」を作成する。
【０１３１】
ストレージキャッシュ１３８は、ＨＤＤ１３９から読み出したデータを一時的に保持する。
【０１３２】
ＨＤＤ１３９は、サーバ３３０、サーバ３３１、サーバ３３２により読み出されるデータを常に保持する。
【０１３３】
次に、本実施形態における動作について説明する。
【０１３４】
図１１は、本発明の第４の実施形態におけるストレージ１３０の動作を示すフローチャートである。なお、図１１のフローチャートでは、説明を簡単にするために、ストレージキャッシュにおけるキャッシュデータの更新処理のみが示され、その他の処理は省略されている。また、図１１に示すフローチャート及び以下の説明は一例であり、適宜求める処理に応じて、処理順等を入れ替えたり、処理を戻したり、又は処理を繰り返したりしてもよい。
【０１３５】
ストレージキャッシュ情報制御手段１３１は、各サーバからのデータ読み出し要求の指定データがストレージキャッシュ１３８に存在するか否かを判定する（ステップＳ５０１）。ストレージキャッシュ情報制御手段１３１は、存在する場合（ステップＳ５０１：Ｙｅｓ）にはステップＳ５０２の処理へ推移し、存在しない場合（ステップＳ５０１：Ｎｏ）にはステップＳ５０３の処理へ推移する。
【０１３６】
分割領域判定手段１３２は、データ読み出し要求の指定データがどの「分割領域」に対応するのかを判定し（ステップＳ５０２）、ステップＳ５０６の処理へ推移する。
【０１３７】
データ破棄判定手段１３４は、ストレージキャッシュ情報制御手段１３１からの情報に基づいて、ストレージキャッシュの使用量が所定の閾値を超えているか否かを判定する（ステップＳ５０３）。閾値を超えている場合（ステップＳ５０３：Ｙｅｓ）には、データ破棄判定手段１３４は、ステップＳ５０４の処理へ推移する。閾値を超えていない場合（ステップＳ５０３：Ｎｏ）には、分割領域作成手段１３５は、ステップＳ５０５の処理へ推移する。
【０１３８】
データ破棄判定手段１３４は、独立データである「分割領域」を優先して特定の「分割領域」のデータを破棄し（ステップＳ５０４）、ステップＳ５０５の処理へ推移する。なお、データ破棄判定手段１３４は、「分割領域」に関連付けられた「サーバ優先度」にも基づいて破棄対象を決定してもよい。破棄対象の選択方法の具体例については、後述する。
【０１３９】
分割領域作成手段１３５は、データ読み出し要求の指定データが存在する範囲を覆うように、論理ディスクにおける開始アドレス及び終了アドレスにより指定された「分割領域」を決定し、その「分割領域」内に存在するデータをストレージキャッシュ１３８に保持させる（ステップＳ５０５）。新たな「分割領域」の作成方法の具体例については、後述する。
【０１４０】
アクセス情報制御手段１３３は、データ読み出し要求元のサーバから特定の「分割領域」の読み出しがあったことを要求履歴に登録し（ステップＳ５０６）、ステップＳ５０１の処理へ戻る。
【０１４１】
次に、本実施形態における処理の具体例について説明する。
【０１４２】
まず、「分割領域」について説明する。
【０１４３】
図１２は、本発明の第４の実施形態におけるストレージ１３０における「分割領域」の作成方法の具体例を説明するための図である。
【０１４４】
「分割領域」とは、ストレージ１３０がＨＤＤ１３９上のデータをキャッシュデータとして管理するためのデータ指定方法である。分割領域は、ＨＤＤ１３９が抽象化された「論理ディスク」における、特定のデータを含むブロックの、開始アドレス、終了アドレスの組である。以下では、分割領域におけるブロックの最小単位が“１ＭＢ”である場合の例を説明するが、最小単位は“１ＭＢ”に限定されない。
【０１４５】
最初に、ストレージ１３０は、あるサーバから論理ディスクのアドレス“２ＭＢ”からアドレス“２.７ＭＢ”の範囲のデータを読み出すコマンドを受信する。
【０１４６】
ストレージ１３０の分割領域作成手段１３５は、分割領域におけるブロックの最小単位は“１ＭＢ”なので、開始アドレスが“２ＭＢ”であり終了アドレスが“３ＭＢ”であるブロックを１つの分割領域として作成し、ストレージキャッシュ１３８にデータを保持する。
【０１４７】
次に、ストレージ１３０は、あるサーバから論理ディスクのアドレス“５.２ＭＢ”からアドレス“８.６ＭＢ”の範囲のデータを読み出すコマンドを受信する。
【０１４８】
分割領域作成手段１３５は、開始アドレスが“５ＭＢ”であり終了アドレスが“９ＭＢ”であるブロックを１つの分割領域として作成し、ストレージキャッシュ１３８にデータを保持する。
【０１４９】
続いて、ストレージ１３０は、他のサーバから同一論理ディスクのアドレス“８.７ＭＢ”からアドレス“８.９ＭＢ”の範囲のデータを読み出すコマンドを受信する。
【０１５０】
最新のデータ読み出しコマンドにおいて指定されたデータは、直前のデータ読み出しコマンドにおいて指定されたデータとは異なるデータである。しかしながら、最新のデータ読み出しコマンドにおいて指定されたデータは、直前のデータ読み出しコマンドに対応してストレージキャッシュ１３８上に保持されている分割領域に含まれる。そこで、ストレージ１３０は、最新のデータ読み出しコマンドにおいて指定されたデータを直前のデータ読み出しコマンドにおいて指定されたデータと同一のデータであるものとみなす。
【０１５１】
次に、ストレージキャッシュ１３８から破棄されるデータの選択方法の具体例について説明する。
【０１５２】
図１３は、本発明の第４の実施形態におけるストレージ１３０におけるストレージキャッシュ１３８から破棄されるデータの選択方法の具体例を説明するための図である。
【０１５３】
最初に、ストレージ１３０は、サーバＡからストレージキャッシュ１３８上に保持されていないデータＡに対するデータ読み出し要求を受信する。
【０１５４】
ストレージ１３０は、ストレージキャッシュ１３８にデータＡを含む分割領域Ａを保持する。また、ストレージ１３０は、サーバＡからの分割領域Ａに対する読み出し要求を要求履歴に登録する。この時点では、ストレージ１３０は、分割領域ＡがサーバＡの独立データであると判別する。
【０１５５】
次に、ストレージ１３０は、サーバＢからストレージキャッシュ１３８上に存在する分割領域Ａに含まれるデータ対するデータ読み出し要求を受信する。
【０１５６】
ストレージ１３０は、既に存在する分割領域Ａについての要求履歴に対しサーバＢからのデータ読み出し要求があった旨を追加する。その結果、ストレージ１３０は、分割領域ＡがサーバＡ及びサーバＢの共有データであると判別する。
【０１５７】
ストレージ１３０は、同様に、サーバＡ、サーバＢ、サーバＣから、データＢ、データＣ、データＤ、又はデータＥに対するデータ読み出し要求を受信する。その結果、ストレージ１３０は、図１３に示される、分割領域Ｂ、分割領域Ｃ、分割領域Ｄ、及び分割領域Ｅを生成し、各分割領域に関する要求履歴を保持する。
【０１５８】
図１３に示されるように、複数のサーバからのデータ読み出し要求が要求履歴に記録された分割領域Ａ、分割領域Ｂ、分割領域Ｅは共有データである。一方、単一のサーバからのデータ読み出し要求が要求履歴に記録された分割領域Ｃと分割領域Ｄは独立データである。
【０１５９】
ストレージ１３０は、サーバ毎の優先度にも基づいて、ストレージキャッシュ１３８からキャッシュデータを破棄してもよい。例えば、どのサーバのデータ読み出し要求を優先してストレージキャッシュ１３８に残すかに関するサーバ毎の優先度が、優先度の高いものから、サーバＡ、サーバＢ、サーバＣの順で定義されるものとする。この場合、ストレージ１３０は、ストレージキャッシュ１３８の使用量が閾値を超えた場合に、独立データでありサーバの優先度の低い分割領域Ｄを最優先してストレージキャッシュ１３８から破棄する。
【０１６０】
また、ストレージ１３０は、ストレージキャッシュ１３８上に共有データしか存在しない場合に、共有データの中で、データの「共有度」が低く、更にサーバ毎の優先度が低いキャッシュデータを優先して、ストレージキャッシュ１３８から破棄してもよい。なお、「共有度」とは、共有データを共有しているサーバの台数である。
【０１６１】
図１３に示される状況では、キャッシュデータが破棄される優先度は、優先度の高いものから順に、分割領域Ｄ、分割領域Ｃ、分割領域Ｅ、分割領域Ａ、分割領域Ｂである。
【０１６２】
なお、サーバ毎の優先度は、ユーザにより予め設定されるか、データ読み出しの優先度の統計を取ることにより取得可能である。例えば、「SCSI Architecture Model」に準拠するデータ読み出しコマンドが利用される場合には、ストレージ１３０は、データ読み出しコマンド中の「Command priority」の値を参照することにより、サーバ毎の優先度を取得することが可能である。
【０１６３】
以上説明したように、本実施形態のストレージ１３０は、共有データを独立データに優先してストレージキャッシュに保持する。特に、ストレージ１３０は、共有データの全体を保持するために十分なキャッシュ容量を有する場合には、全ての共有データの読み出しをストレージキャッシュに保持する。また、ストレージ１３０は、要求履歴に基づき、指定データが共有データであるか否かをキャッシュ動作時に動的に判断する。従って、本実施形態のストレージ１３０は、キャッシュの動作時に、動的に独立データと共有データとの判別を行い、共有データを優先してキャッシュに保持することができる。
【０１６４】
また、本実施形態のストレージ１３０は、各サーバの共有データをストレージキャッシュ１３８に保持する可能性が高い。そのため、本実施形態のストレージ１３０では、共有データの独立データに対する比率が高い場合には、キャッシュヒット率が高いという効果がある。
【０１６５】
また、本実施形態のストレージ１３０では、共有データが優先的にストレージキャッシュ１３８に保持されるので、共有データの独立データに対する比率が高い場合に、キャッシュ容量が効率的に利用される。そのため、本実施形態のストレージ１３０では、共有データの独立データに対する比率が高い場合には、読み出しキャッシュのメモリ容量を減らして、その分のメモリ容量を書き込みキャッシュに割り当て可能である。
【０１６６】
また、本実施形態のストレージ１３０では、データの共有度及びサーバ毎の優先度に応じて破棄するキャッシュデータが決定される場合には、優先サーバから要求されたデータがストレージキャッシュ１３８に保持される可能性が高い。そのため、本実施形態のストレージ１３０では、高負荷時にも、優先サーバからのデータ読み出し要求に対する応答性能の低下を抑制することができる。
【０１６７】
なお、上述の説明において、分割領域の最低単位は１ＭＢであるが、最低単位は１ＭＢに限定されない。また、同一のデータであるか否かの判定のために分割領域を使用したが、別の方法を用いて同一のデータであるか否かの判定が行われてもよい。例えば、ストレージキャッシュ１３８に保持されるデータは、データ読み出し要求における指定データの、開始アドレスとデータ長の組を用いて同定されてもよい。
【０１６８】
また、上述の説明において、破棄対象データの判定のために、データの共有度及びサーバ毎の優先度が使用された。しかしながら、破棄対象データの判定のために、別の要素が使用されてもよい。例えば、破棄対象データの判定の際に、データの読み出しが要求された最近の時刻が古いキャッシュデータから優先的に破棄する、又は要求頻度が低いキャッシュデータから優先的に破棄する等の、新しい要素が追加されてもよい。さらに、各要素に基づく優先度の重み付き総和を各分割領域について算出し、重み付き総和が低いキャッシュデータが優先されて破棄されてもよい。
（第５の実施形態）
次に、上述した第４の実施形態において、サーバキャッシュとストレージキャッシュが連携してキャッシュデータを保持する、本発明の第５の実施形態について説明する。なお、以下の説明において、第４の実施形態と同等の構成要素には同じ符号を付し、適宜説明を省略する。
【０１６９】
まず、本実施形態におけるキャッシュデータの配置について説明する。
【０１７０】
図１４は、本発明の第４の実施形態及び第５の実施形態におけるキャッシュデータの配置の一例を示す図である。本発明の第４の実施形態では、同一の共有データが各サーバキャッシュに保持される可能性が高い（図１４（ａ））。一方、本実施形態では、ストレージキャッシュには共有データのみが保持され、サーバキャッシュには独立データのみが保持される可能性が高い（図１４（ｂ））。
【０１７１】
図１４（ｂ）の詳細について説明する。
【０１７２】
サーバＡからのみ参照される独立データＡは、サーバキャッシュＡのみにより保持される可能性が高い。すなわち、ストレージキャッシュにより一旦は保持された独立データＡは、サーバキャッシュにより保持された後に、優先的に破棄される。独立データＢ、独立データＣについても同様である。
【０１７３】
複数のサーバＡ、サーバＢ、サーバＣから参照される共有データＤは、ストレージキャッシュのみにより保持される可能性が高い。すなわち、サーバキャッシュＡ、サーバキャッシュＢ、又はサーバキャッシュＣにより一旦は保持された共有データＤは、ストレージキャッシュにより保持された後に、優先的に破棄される。
【０１７４】
次に、本実施形態における構成について説明する。
【０１７５】
図１５は、本発明の第５の実施形態におけるストレージ１４０及びサーバ３４０、３４１、３４２の構成の一例を示すブロック図である。
【０１７６】
本実施形態のストレージ１４０の構成は、第４の実施形態のストレージ１３０の構成と同じである。ただし、本実施形態のアクセス情報制御手段１４３は、第４の実施形態のアクセス情報制御手段１３３と動作が異なる。
【０１７７】
アクセス情報制御手段１４３は、ストレージ１４０の要求履歴の情報を取得するための「取得コマンド」を受信すると、ストレージ１４０の要求履歴の情報を送信する。
【０１７８】
また、アクセス情報制御手段１４３は、ストレージ１４０の特定の分割領域（キャッシュデータ）を破棄するための「破棄コマンド」を受信すると、指定された分割領域が独立データである場合には分割領域を破棄し、指定された分割領域が共有データである場合には要求履歴から対象サーバを削除する。
【０１７９】
アクセス情報制御手段１４３のその他の動作は、第４の実施形態のアクセス情報制御手段１３３の動作と同じである。
【０１８０】
サーバ３４０の構成について説明する。なお、サーバ３４１、サーバ３４２の構成は、サーバ３４０の構成と同じである。また、サーバ３４０、サーバ３４１、サーバ３４２は、それぞれ、サーバキャッシュ４４０、サーバキャッシュ４４１、サーバキャッシュ４４２を有する。また、サーバキャッシュ４４０、サーバキャッシュ４４１、サーバキャッシュ４４２は、それぞれ、サーバキャッシュ情報制御手段４５０、サーバキャッシュ情報制御手段４５１、サーバキャッシュ情報制御手段４５２を有する。
【０１８１】
サーバ３４０のサーバキャッシュ４４０は、サーバキャッシュ情報制御手段４５０を有する。
【０１８２】
また、サーバキャッシュ情報制御手段４５０は、ストレージ１４０に取得コマンドを送信して、ストレージ１４０の要求履歴の情報を受信する。
【０１８３】
また、サーバキャッシュ情報制御手段４５０は、取得した要求履歴の情報に基づいて、ストレージキャッシュ１３８上の各分割領域（キャッシュデータ）が、サーバキャッシュ４４０により保持されているか否かを判定する。
【０１８４】
また、サーバキャッシュ情報制御手段４５０は、各キャッシュデータをサーバキャッシュ４４０又はストレージキャッシュ１３８のどちらにより保持されるべきか否かを判定する。
【０１８５】
また、サーバキャッシュ情報制御手段４５０は、ストレージ１４０にストレージキャッシュ１３８上の特定の分割領域（キャッシュデータ）を破棄させる破棄コマンドを送信する。
【０１８６】
本実施形態のサーバ３４０のその他の構成は、第４の実施形態のサーバ３３０の構成と同じである。
【０１８７】
なお、取得コマンドに対する応答は、ストレージ１４０の要求履歴の情報のうち少なくとも、サーバ３４０からの要求履歴が存在する分割領域に関する要求履歴の情報を含む。１つの分割領域に関する要求履歴の情報は、例えば、分割領域の開始アドレス、分割領域のデータ長、分割領域データに対する各サーバからのデータ読み出し要求の有無の情報である。
【０１８８】
また、破棄コマンドは、例えば、分割領域の開始アドレスとデータ長を含む。
【０１８９】
もしくは、取得コマンドの応答において、各分割領域の識別子がサーバキャッシュ４４０に通知され、破棄コマンドにおいて、分割領域の識別子により各分割領域が識別されてもよい。
【０１９０】
次に、本実施形態における動作について説明する。
【０１９１】
図１６は、本発明の第５の実施形態におけるストレージ１４０及びサーバ３４０の動作を示すフローチャートである。サーバ３４１、サーバ３４２の動作は、サーバ３４０の動作と同じである。なお、図１６のフローチャートでは、説明を簡単にするために、ストレージキャッシュ及びサーバキャッシュにおける１つのキャッシュデータの更新処理のみが示され、その他の処理は省略されている。また、図１６に示すフローチャート及び以下の説明は一例であり、適宜求める処理に応じて、処理順等を入れ替えたり、処理を戻したり、又は処理を繰り返したりしてもよい。
【０１９２】
サーバ３４０のサーバキャッシュ情報制御手段４５０は、ストレージ１４０へストレージ１４０の要求履歴の情報を取得するコマンドを送信し（ステップＳ６０１）、ステップＳ６０２の処理へ推移する。
【０１９３】
ストレージ１４０のアクセス情報制御手段１４３は、サーバ３４０から取得コマンドを受信し、アクセス情報制御手段１４３にて保持される分割領域の要求履歴の情報のうち、サーバ３４０から要求された分割領域に関する要求履歴の情報を送信し（ステップＳ６０２）、ステップＳ６０３の処理へ推移する。なお、分割領域に対する扱いは本発明の第４の実施形態における扱いと同じである。
【０１９４】
サーバ３４０のサーバキャッシュ情報制御手段４５０は、ストレージキャッシュ１３８の要求履歴の情報に基づいて、ストレージキャッシュ１３８の各分割領域がサーバキャッシュ４４０に保持されているか否かを判定する（ステップＳ６０３）。サーバキャッシュ情報制御手段４５０は、存在しない場合（ステップＳ６０３：Ｙｅｓ）にはステップＳ６０４の処理へ推移し、存在する場合（ステップＳ６０３：Ｎｏ）にはステップＳ６０６の処理へ推移する。
【０１９５】
サーバ３４０のサーバキャッシュ情報制御手段４５０は、各分割領域（キャッシュデータ）の共有度や要求頻度等に基づいて、特定の分割領域がストレージキャッシュ１３８により保持されるべきか否かを判定する（ステップＳ６０４）。サーバキャッシュ情報制御手段４５０は、分割領域がストレージキャッシュ１３８により保持されるべき場合（ステップＳ６０４：Ｙｅｓ）にはステップＳ６０１の処理へ戻り、サーバキャッシュ４４０により保持されるべき場合（ステップＳ６０４：Ｎｏ）にはステップＳ６０５の処理へ推移する。
【０１９６】
サーバ３４０のサーバキャッシュ情報制御手段４５０は、特定の分割領域をサーバキャッシュ４４０に保持し（ステップＳ６０５）、ステップＳ６０８の処理へ推移する。
【０１９７】
サーバ３４０のサーバキャッシュ情報制御手段４５０は、各分割領域（キャッシュデータ）の共有度や要求頻度等に基づいて、特定の分割領域がサーバキャッシュ４４０により保持されるべきか否かを判定する（ステップＳ６０６）。サーバキャッシュ情報制御手段４５０は、分割領域がサーバキャッシュ４４０により保持されるべき場合（ステップＳ６０６：Ｙｅｓ）にはステップＳ６０８の処理へ推移し、ストレージキャッシュ１３８により保持されるべき場合（ステップＳ６０６：Ｎｏ）にはステップＳ６０７の処理へ推移する。
【０１９８】
サーバ３４０のサーバキャッシュ情報制御手段４５０は、サーバキャッシュ４４０の特定の分割領域を破棄し（ステップＳ６０７）、ステップＳ６０１の処理へ戻る。
【０１９９】
サーバ３４０サーバキャッシュ情報制御手段４５０は、は、ストレージキャッシュ１３８の特定の分割領域（キャッシュデータ）を破棄させるためのコマンドをストレージ１４０へ送信し（ステップＳ６０８）、ステップＳ６０９の処理へ推移する。
【０２００】
ストレージ１４０のアクセス情報制御手段１４３は、破棄コマンドを受信し、指定された分割領域が独立データであるか否かを判定する（ステップＳ６０９）。アクセス情報制御手段１４３は、独立データである場合（ステップＳ６０９：Ｙｅｓ）にはステップＳ６１０の処理へ推移し、共有データである場合（ステップＳ６０９：Ｎｏ）にはステップＳ６１１の処理へ推移する。
【０２０１】
ストレージ１４０のアクセス情報制御手段１４３は、特定の分割領域をストレージキャッシュ１３８から破棄し（ステップＳ６１０）、ステップＳ６０１の処理へ戻る。
【０２０２】
ストレージ１４０のアクセス情報制御手段１４３は、サーバ３４０から特定の分割領域に関する要求履歴からサーバ３４０を消去し（ステップＳ６１１）、ステップＳ６０１の処理へ戻る。
【０２０３】
以上説明したように、本実施形態のサーバ３４０は、サーバキャッシュ４４０に保持されている共有データを破棄できる。従って、本実施形態のサーバ３４０では、本発明の第４の実施形態における効果に加えて、限られたサーバキャッシュの容量の利用効率を向上することができるか、又はサーバキャッシュの容量を低減することができるとういう効果がある。
【０２０４】
また、本実施形態のサーバ３４０、３４１、３４２及びストレージ１４０では、サーバキャッシュとストレージキャッシュに同一のデータが保持される可能性が低い。従って、本実施形態のサーバ３４０、３４１、３４２又はストレージ１４０では、本発明の第４の実施形態における効果に加えて、限られたサーバキャッシュ若しくはストレージキャッシュの容量の利用効率を向上することができるか、又はサーバキャッシュ若しくはストレージキャッシュの容量を低減することができるとういう効果がある。
【０２０５】
なお、上述した各実施形態におけるキャッシュ装置は、専用の装置によって実現してもよいが、コンピュータ（情報処理装置）によっても実現可能である。この場合、係るコンピュータは、メモリ（不図示）に格納されたソフトウェア・プログラムをＣＰＵ（Ｃｅｎｔｒａｌ＿Ｐｒｏｃｅｓｓｉｎｇ＿Ｕｎｉｔ、不図示）に読み出し、読み出したソフトウェア・プログラムをＣＰＵにおいて実行することにより、実行結果を、例えば、ユーザ・インタフェースに出力する。上述した各実施形態及び変形例の場合、係るソフトウェア・プログラムには、上述したところの、図１に示したキャッシュ装置１００の各手段、図４に示したキャッシュ装置１１０の各手段、又は図７に示したキャッシュ装置１２０の各手段の機能を実現可能な記述がなされていればよい。但し、キャッシュ装置１００のキャッシュ手段１０１は、キャッシュ装置１１０のキャッシュ手段１０１、又はキャッシュ装置１２０のキャッシュ手段１０１は、適宜ハードウェアを含むことも想定される。そして、このような場合、係るソフトウェア・プログラム（コンピュータ・プログラム）は、本発明を構成すると捉えることができる。更に、係るソフトウェア・プログラムを格納した、コンピュータ読み取り可能な記憶媒体も、本発明を構成すると捉えることができる。
【０２０６】
以上、本発明を、上述した各実施形態およびその変形例によって例示的に説明した。しかしながら、本発明の技術的範囲は、上述した各実施形態およびその変形例に記載した範囲には限定されない。当業者には、係る実施形態に対して多様な変更又は改良を加えることが可能であることは明らかである。そのような場合、係る変更又は改良を加えた新たな実施形態も、本発明の技術的範囲に含まれ得る。そしてこのことは、特許請求の範囲に記載した事項から明らかである。
【産業上の利用可能性】
【０２０７】
本発明は、複数のサーバを含むシステムにおいて、各サーバにより、共有される、メモリ、ＳＳＤ、ハードディスク、ディスクアレイ、データベース、サーバ等がアクセスされる際のキャッシュデータを制御する用途に利用できる。
【０２０８】
本発明は、複数の端末を含むシステムにおいて、各端末により、共有される、メモリ、ＳＳＤ、ハードディスク、ディスクアレイ、データベース、サーバ等がアクセスされる際のキャッシュデータを制御する用途に利用できる。
【０２０９】
本発明は、複数のＣＰＵを含む装置において、各ＣＰＵにより、共有される、メモリ、ＳＳＤ、ハードディスク、ディスクアレイ、データベース、サーバ等がアクセスされる際のキャッシュデータを制御する用途に利用できる。
【０２１０】
本発明は、マルチコアＣＰＵにおいて、各コアにより、共有される、メモリ、ＳＳＤ、ハードディスク、ディスクアレイ、データベース、サーバ等がアクセスされる際のキャッシュデータを制御する用途に利用できる。
【０２１１】
本発明は、マルチスレッドに対応したＣＰＵにおいて、各スレッドにより、共有される、メモリ、ＳＳＤ、ハードディスク、ディスクアレイ、データベース、サーバ等がアクセスされる際のキャッシュデータを制御する用途に利用できる。
【符号の説明】
【０２１２】
１００  キャッシュ装置
１０１  キャッシュ手段
１０２  記憶領域制御手段
２００  記憶装置
３００、３０１  要求元
１１０  キャッシュ装置
４００、４０１  ２次キャッシュ装置
１２０  キャッシュ装置
１２３  通信手段
４１０、４１１  ２次キャッシュ装置
１３０  ストレージ
１３１  ストレージキャッシュ情報制御手段
１３２  分割領域判定手段
１３３  アクセス情報制御手段
１３４  データ破棄判定手段
１３５  分割領域作成手段
１３８  ストレージキャッシュ
１３９  ＨＤＤ
３３０、３３１、３３２  サーバ
４３０、４３１、４３２  サーバキャッシュ
１４０  ストレージ
１４３  アクセス情報制御手段
３４０、３４１、３４２  サーバ
４４０、４４１、４４２  サーバキャッシュ
４５０、４５１、４５２  サーバキャッシュ情報制御手段
【図１】
2016114967.tif 000003
【図２】
2016114967.tif 000004
【図３】
2016114967.tif 000005
【図４】
2016114967.tif 000006
【図５】
2016114967.tif 000007
【図６】
2016114967.tif 000008
【図７】
2016114967.tif 000009
【図８】
2016114967.tif 000010
【図９】
2016114967.tif 000011
【図１０】
2016114967.tif 000012
【図１１】
2016114967.tif 000013
【図１２】
2016114967.tif 000014
【図１３】
2016114967.tif 000015
【図１４】
2016114967.tif 000016
【図１５】
2016114967.tif 000017
【図１６】
2016114967.tif 000018