図1は、共有分散キャッシュシステムの構成例を示す図である。この共有分散キャッシュシステムは、3個のコア(プロセッサ:処理装置)101〜103、3個のコア101〜103に一対一に対応する3個の3ウェイ1次キャッシュ111〜113、キャッシュ111〜113に接続されるキャッシュ間接続コントローラ(ICC)120、及びメインメモリ(又は2次キャッシュ)130を含む。コア101〜103はそれぞれ、自己に直接に接続されるキャッシュ(自コアキャッシュ)を上位階層キャッシュとしてアクセス可能である。この共有分散キャッシュシステムでは、さらに、他のコアのキャッシュ(他コアキャッシュ)を下位階層キャッシュとしてアクセス可能なように構成される。すなわち、例えばコア101から見たときに、キャッシュ111を上位階層キャッシュとしてアクセス可能であるとともに、さらに他コアキャッシュ112及び113を下位階層キャッシュとしてアクセス可能なように構成される。このような下位階層キャッシュをアクセスする経路は、キャッシュ間接続コントローラ120を介して提供される。
キャッシュ間接続コントローラ120は、第1のLRU情報121〜123及び第2のLRU情報129を記憶する情報メモリを有する。情報メモリは、キャッシュ間接続コントローラ120の外にあってもよい。第1のLRU情報121は、キャッシュ111のエントリa,b,c及び他コアキャッシュ112及び113のグループxの最古順を示し、「0」が最古、「2」が最新を示す。すなわち、第1のLRU情報121は、自己のキャッシュ111の3個のエントリa,b,cに、n個(=1個)の他コアキャッシュグループxを追加したLRU情報である。
図2は、図1の第1のLRU情報121〜123及び第2のLRU情報129の詳細を示す図である。第1のLRU情報122は、第1のLRU情報121と同様に、キャッシュ112のエントリa,b,c及び他コアキャッシュ111及び113のグループxの最古順を示す。第1のLRU情報123も、第1のLRU情報121と同様に、キャッシュ113のエントリa,b,c及び他コアキャッシュ111及び112のグループxの最古順を示す。第1のLRU情報121〜123を2項関係方式によりエンコードすると、それぞれ6ビットになる。
コア101はコアAであり、キャッシュ111はキャッシュAである。コア102はコアBであり、キャッシュ112はキャッシュBである。コア103はコアCであり、キャッシュ113はキャッシュCである。
第2のLRU情報129は、3個のコア101〜103間での自己のキャッシュ111〜113に対する使用古さ順を示し、AがキャッシュA(111)のLRU情報、BがキャッシュB(112)のLRU情報、CがキャッシュC(113)のLRU情報である。第2のLRU情報129を2項関係方式によりエンコードすると、3ビットになる。したがって、LRU情報121〜123、129の合計は、6+6+6+3=21ビットになり、図15のシステムのビット数より少なくなる。第1のLRU情報121〜123の情報メモリは、各キャッシュ111〜113のローカルなLRU情報に、他コアキャッシュグループが1ウェイ増えたとみて、各キャッシュ毎に第1のLRU情報121〜123を保持する。
図3は、共有分散キャッシュシステムの他の構成例を示す図である。以下、図3が図1と異なる点を説明する。この共有分散キャッシュシステムは、6個のコア101〜106、6個のコア101〜106に一対一に対応する6個の1次キャッシュ111〜116、キャッシュ111〜116に接続されるキャッシュ間接続コントローラ(ICC)120、及びメインメモリ(又は2次キャッシュ)130を含む。キャッシュ111〜114及び116は3ウェイであり、キャッシュ115は2ウェイである。コア101〜106はそれぞれ、自コアキャッシュ111〜116を上位階層キャッシュとしてアクセス可能である。この共有分散キャッシュシステムでは、さらに、他コアキャッシュを下位階層キャッシュとしてアクセス可能なように構成される。すなわち、例えばコア101から見たときに、キャッシュ111を上位階層キャッシュとしてアクセス可能であるとともに、さらに他コアキャッシュ112及び113のグループx、他コアキャッシュ114及び115のグループy、他コアキャッシュ116のグループzを下位階層キャッシュとしてアクセス可能なように構成される。
キャッシュ間接続コントローラ120は、第1のLRU情報121〜126及び第2のLRU情報129を記憶する情報メモリを有する。第1のLRU情報121は、キャッシュ111のエントリa,b,c、他コアキャッシュ112及び113のグループx、他コアキャッシュ114及び115のグループy、他コアキャッシュ116グループzの最古順を示し、「0」が最古、「5」が最新を示す。すなわち、第1のLRU情報121は、自己のキャッシュ111の3個のエントリa,b,cに、n個(=3個)の他コアキャッシュグループx,y,zを追加したLRU情報である。
図4は、図3の第1のLRU情報121〜126及び第2のLRU情報129の詳細を示す図である。第1のLRU情報122は、第1のLRU情報121と同様に、キャッシュ112のエントリa,b,c、n個(=3個)の他コアキャッシュ111及び113のグループx、他コアキャッシュ114及び115のグループy、他コアキャッシュ116のグループzの最古順を示す。第1のLRU情報123は、キャッシュ113のエントリa,b,c、n個(=3個)の他コアキャッシュ111及び112のグループx、他コアキャッシュ114及び115のグループy、他コアキャッシュ116のグループzの最古順を示す。第1のLRU情報124は、キャッシュ114のエントリa,b,c、n個(=2個)の他コアキャッシュ111及び112のグループx、他コアキャッシュ113、115及び116のグループyの最古順を示す。第1のLRU情報125は、キャッシュ115の2個のエントリa,b、n個(=3個)の他コアキャッシュ111及び112のグループx、他コアキャッシュ113及び114のグループy、他コアキャッシュ116のグループzの最古順を示す。第1のLRU情報126は、キャッシュ116のエントリa,b,c、n個(=3個)の他コアキャッシュ111及び112のグループx、他コアキャッシュ113及び114のグループy、他コアキャッシュ115のグループzの最古順を示す。グループの組み合わせは、任意に決めることができる。
第1のLRU情報121〜123,126を2項関係方式によりエンコードすると、それぞれ15ビットになる。第1のLRU情報124は、2個の他コアキャッシュグループx及びyの情報を有するので、2項関係方式によりエンコードすると10ビットになる。第1のLRU情報125は、キャッシュ115の2個のエントリa及びbの情報を有するので、2項関係方式によりエンコードすると10ビットになる。
コア101はコアAであり、キャッシュ111はキャッシュAである。コア102はコアBであり、キャッシュ112はキャッシュBである。コア103はコアCであり、キャッシュ113はキャッシュCである。コア104はコアDであり、キャッシュ114はキャッシュDである。コア105はコアEであり、キャッシュ115はキャッシュEである。コア106はコアFであり、キャッシュ116はキャッシュFである。
第2のLRU情報129は、6個のコア101〜106間での自己のキャッシュ111〜116に対する使用古さ順を示し、AがキャッシュA(111)のLRU情報、BがキャッシュB(112)のLRU情報、CがキャッシュC(113)のLRU情報、DがキャッシュD(114)のLRU情報、EがキャッシュE(115)のLRU情報、FがキャッシュF(116)のLRU情報である。第2のLRU情報129を2項関係方式によりエンコードすると、15ビットになる。したがって、LRU情報121〜126、129の合計は、15+15+15+10+10+15+15=95ビットになり、コア数が多いときにはビット数を少なくできる効果が大きい。
図5は、共有分散キャッシュシステムにおけるデータロードアクセス動作を示すフローチャートである。以下、図1のシステムを例に説明する。ステップS1において、まず、複数のコア101〜103の何れか1つのコアが、自己に直接に接続されたキャッシュ(自コアキャッシュ)へロード要求を発行する。
ステップS2において、ロード要求を受け取ったキャッシュは、要求対象のデータがキャッシュ内に存在するか否か、すなわちキャッシュヒットであるか否かを判定する。キャッシュヒットである場合には、ステップS3において、自コアキャッシュから要求対象のデータを読み出して、ロード要求を発行したコアにデータを返送する。
ステップS2においてキャッシュミスである場合には、ステップS4に進む。このステップS4において、キャッシュミスが検出されたキャッシュの下に、下位階層キャッシュが存在するか否かを判定する。例えばステップS2においてキャッシュミスが検出されてステップS4に進んだ場合には、キャッシュミスが検出されたキャッシュはキャッシュ111〜113の何れか1つであるので、この場合、他の2つのキャッシュが下位階層キャッシュとして存在する。下位階層キャッシュが存在する場合には、ステップS5に進む。
ステップS5において、キャッシュ階層が1つ下の他コアキャッシュにアクセスする。ステップS6において、アクセス要求を受け取ったキャッシュは、要求対象のデータがキャッシュ内に存在するか否か、すなわちキャッシュヒットであるか否かを判定する。キャッシュミスである場合には、ステップS4に戻り、上記の処理を繰り返す。
ステップS6においてキャッシュヒットである場合には、ステップS7に進む。このステップS7において、キャッシュデータの交換処理を行う。すなわち、キャッシュヒットしたキャッシュからアクセス対象のキャッシュライン(アクセス対象のデータ)を自コアキャッシュに移動し、コアへデータを返送する。この際に、キャッシュラインの自コアキャッシュへの移動に伴い、自コアキャッシュから追い出されるキャッシュラインを他コアに移動する。ステップS7の詳細は、後に図6を参照しながら説明する。
またステップS4において、下位階層キャッシュが存在しないと判定された場合には、ステップS8に進む。例えばステップS6においてキャッシュミスが検出されてステップS4に進んだ際に、このキャッシュミスが検出されたキャッシュが既に最下層のキャッシュであった場合、その下層にはメインメモリ130しか存在しない。このような場合には、ステップS8で、メインメモリ130から要求対象のデータを読み出し、自コアキャッシュにアロケート(1キャッシュライン分の要求対象のデータを自コアキャッシュにコピー)するとともに、ロード要求を発行したコアにデータを返送する。またこの動作に伴い自コアキャッシュから追い出されたキャッシュラインは、例えば下位階層キャッシュに移動される。ステップS8の詳細は、後に図10を参照しながら説明する。
上記の動作フローにおいて、ステップS7はキャッシュとキャッシュとの間のデータ転送に関連する動作であり、ステップS8はメインメモリ130とキャッシュとの間のデータ転送に関連する動作である。
図6は、図5のステップS7の交換処理を示すフローチャートである。まず、ステップA1では、図5のステップS6の判断により、下位階層キャッシュとして利用可能な他コアキャッシュにヒットしたと判断される。
次に、ステップA2では、キャッシュ間接続コントローラ120は判定処理を行う。すなわち、ヒットした他コアが所属するグループの自コアローカルの第1のLRU情報が最新であり、かつ、ヒットした他コアキャッシュの第1のLRU情報のエントリが最新でないことの条件を満たすか否かを判定する。条件を満たす場合にはステップA4に進み、条件を満たさない場合にはステップA7に進む。
ステップA4では、キャッシュ間接続コントローラ120は自コアキャッシュ及び他コアキャッシュ間で交換処理を行う。すなわち、自コアキャッシュの最古エントリと他コアキャッシュのヒットしたエントリを交換する。
次に、ステップA5では、キャッシュ間接続コントローラ120はLRU更新処理を行う。すなわち、自コアの第1のLRU情報については自コアキャッシュの交換されたエントリを最新に更新し、他コアの第1のLRU情報については他コアキャッシュの交換されたエントリを最古に更新し、第2のLRU情報については自コアキャッシュが最新となるように更新する。その後、ステップA6に進み、処理を終了する。
ステップA7では、自コアはキャッシュ間接続コントローラ120を介して参照処理を行う。すなわち、他コアキャッシュのヒットしたエントリを直接参照する(読み出す)。
次に、ステップA3では、キャッシュ間接続コントローラ120はLRU更新処理を行う。すなわち、自コアの第1のLRU情報についてはヒットした他コアキャッシュが所属するグループを最新に更新し、他コアの第1のLRU情報についてはヒットした他コアキャッシュのエントリが最新であれば2番目に新しいものと交換するように更新し、第2のLRU情報についてはヒットした他コアキャッシュが最新となるように更新する。その後、ステップA6に進み、処理を終了する。
図7〜図9は、図1及び図2のシステムにおける図6の交換処理の例を示す図である。図7は、初期状態を示す。第1のLRU情報121〜123及び第2のLRU情報129は、0が最古であり、値が大きくなるほど新しいことを示す。
まず、ステップA1において、自コアA(101)から他コアB(102)のキャッシュB(112)のエントリcにヒットした場合を説明する。
次に、ステップA2では、ヒットした他コアキャッシュB(112)が所属するグループxの自コアローカルの第1のLRU情報121が1であり、最新でないので、ステップA7に進む。ステップA7では、他コアキャッシュB(112)のヒットしたエントリcを直接参照する。
次に、ステップA3では、図8に示すように、自コアA(101)の第1のLRU情報121についてはヒットした他コアキャッシュB(112)が所属するグループxを最新(値「3」)に更新し、他コアB(102)の第1のLRU情報122についてはヒットした他コアキャッシュB(112)のエントリcが最新(図7の値「3」)であるので、2番目に新しいエントリxと交換するように更新し、第2のLRU情報129についてはヒットした他コアキャッシュB(112)が最新となるように更新する。その後、ステップA6に進み、処理を終了する。
次に、ステップA1において、再度、自コアA(101)から他コアB(102)のキャッシュB(112)のエントリcにヒットした場合を説明する。
次に、ステップA2では、ヒットした他コアキャッシュB(112)が所属するグループxの自コアローカルの第1のLRU情報121が最新(値「3」)であり、かつ、ヒットした他コアキャッシュB(112)の第1のLRU情報122のエントリcが最新でない(値「2」)ので、ステップA4に進む。ステップA4では、自コアキャッシュA(111)の最古エントリbと他コアキャッシュB(112)のヒットしたエントリcを交換する。
次に、ステップA5では、図9に示すように、自コアA(101)の第1のLRU情報121については自コアキャッシュA(111)の交換されたエントリbを最新に更新し、他コアB(102)の第1のLRU情報122については他コアキャッシュB(112)の交換されたエントリcを最古に更新し、第2のLRU情報129については自コアキャッシュA(111)が最新となるように更新する。その後、ステップA6に進み、処理を終了する。
以上のように、第1回目に他コアキャッシュBのエントリcにヒットした場合には、交換処理を行わず、第2回目に他コアキャッシュBのエントリcにヒットした場合に交換処理行うことにより、無駄な交換処理をなくし、トラフィックを減少させることができる。すなわち、自コアAが連続してアクセスし、かつ、ヒットした他コアキャッシュBで現在あまり使っていないエントリcのみ交換することにより、効率的な交換処理を行うことができる。
図10は、図5のステップS8の追い出し処理を示すフローチャートである。まず、ステップB1では、図5のステップS4の判断により、下位階層キャッシュとして利用可能な他コアキャッシュに全てミスしたと判断される。
次に、ステップB2では、キャッシュ間接続コントローラ120は判定処理を行う。すなわち、第2のLRU情報を参照し、自コアが最近そのインデックスのエントリを最も使っていないコアでないことの条件を満たすか否かを判定する。条件を満たす場合にはステップB4に進み、条件を満たさない場合にはステップB7に進む。
ステップB4では、キャッシュ間接続コントローラ120は自コアキャッシュから他コアキャッシュへ追い出し処理を行う。すなわち、最近最も使われていない他コアキャッシュの最古エントリに自コアキャッシュの最古エントリ(他コアグループ用エントリを含まないものの中で最古エントリ)を移動する。
次に、ステップB5では、キャッシュ間接続コントローラ120はLRU更新処理を行う。すなわち、自コアの第1のLRU情報については自コアキャッシュの最古エントリを最新に更新し、他コアの第1のLRU情報については追い出し先の他コアキャッシュの最古エントリを最新に更新し、第2のLRU情報については自コアキャッシュが最新に、追い出し先の他コアキャッシュを2番目に新しいものとなるように更新する。その後、ステップB6に進む。
ステップB7では、キャッシュ間接続コントローラ120は破棄処理を行う。すなわち、自コアキャッシュの最古エントリを破棄する。具体的には、このステップでは何も処理せず、後のステップB6の上書き処理により自コアキャッシュの最古エントリが破棄される。
次に、ステップB3では、キャッシュ間接続コントローラ120はLRU更新処理を行う。すなわち、自コアの第1のLRU情報については自コアキャッシュの最古エントリを最新に更新し、第2のLRU情報については自コアキャッシュが最新になるように更新する。その後、ステップB6に進む。
ステップB6では、キャッシュ間接続コントローラ120は自コアキャッシュの最古エントリ(LRU情報更新後の最新エントリ)にメインメモリ130から読み出したデータを上書きし、自コアはそのデータを取得する。以上で、処理を終了する。
図11〜図13は、図1及び図2のシステムにおける図10の追い出し処理の例を示す図である。図11は、初期状態を示す。第1のLRU情報121〜123及び第2のLRU情報129は、0が最古であり、値が大きくなるほど新しいことを示す。
まず、ステップB1において、自コアA(101)のアクセスが全ての他コアキャッシュでミスした場合を説明する。
次に、ステップB2では、第2のLRU情報129を参照すると、自コアキャッシュA(111)が最近最も使っていないので、ステップB7を介してステップB3に進む。
ステップB3では、図12に示すように、自コアA(101)の第1のLRU情報121については自コアキャッシュA(111)の最古エントリbを最新に更新し、第2のLRU情報129については自コアキャッシュAが最新になるように更新する。
次に、ステップB6では、自コアキャッシュA(111)の最古エントリ(LRU情報更新後の最新エントリ)bにメインメモリ130から読み出したデータを上書きする。以上で処理を終了する。
次に、ステップB1において、再度、自コアA(101)のアクセスが全ての他コアキャッシュでミスした場合を説明する。
次に、ステップB2では、第2のLRU情報129を参照すると、他コアキャッシュC(113)が最近最も使っていないので、ステップB4に進む。
ステップB4では、最近最も使われていない他コアキャッシュC(113)の最古エントリbに自コアキャッシュA(111)の最古エントリ(他コアグループ用エントリを含まないものの中で最古エントリ)aを移動する。
次に、ステップB5では、図13に示すように、自コアA(101)の第1のLRU情報121については自コアキャッシュA(111)の最古エントリaを最新に更新し、他コアC(103)の第1のLRU情報123については追い出し先の他コアキャッシュC(113)の最古エントリbを最新に更新し、第2のLRU情報129については自コアキャッシュA(111)が最新に、追い出し先の他コアキャッシュC(113)を2番目に新しいものとなるように更新する。
次に、ステップB6では、自コアキャッシュA(111)の最古エントリ(LRU情報更新後の最新エントリ)aにメインメモリ130から読み出したデータを上書きする。以上で処理を終了する。
以上のように、第1回目に全ての他コアキャッシュでミスした場合には、追い出し処理を行わず、第2回目に全ての他コアキャッシュでミスした場合に追い出し処理行うことにより、無駄な追い出し処理をなくし、トラフィックを減少させることができる。すなわち、自コアAが連続してキャッシュミスし、かつ、他コアキャッシュが最古であるときのみ追い出し処理することにより、効率的な追い出し処理を行うことができる。
第2のLRU情報129は最新のアクセスのみしか保持していないが、完全な最古順を保持しても構わない。最新のアクセスのみしか保持しない理由は、ビット数削減のためである。また、第2のLRU情報129の更新時に追い出し先コアを2番目に新しいものに更新して、追い出し先を持ち回りすることで、完全な最古順を保持した場合に比べた性能低下を抑えられる。
図14は、本発明の実施形態による共有分散キャッシュシステムの構成例を示す図である。以下、図14が図1と異なる点を説明する。情報メモリ1421及び判定回路1424及びキャッシュ間接続ネットワーク(ICN)1425は、図1のキャッシュ間接続コントローラ120に対応する。情報メモリ1421は、LRU情報1422及び送受信バッファ情報1423を記憶する。LRU情報1422は、図1のLRU情報121〜123及び129に対応する。キャッシュ間接続ネットワーク1425は、メインメモリ130及びキャッシュ111〜113に接続される。判定回路1424は、情報メモリ1421内のLRU情報1422又は送受信バッファ情報1423に応じてキャッシュ間接続ネットワーク1425の通信を制御する。
送信バッファA(1401)及び受信バッファA(1411)は、キャッシュA(111)内に設けられる。送信バッファ1401は、キャッシュ111内のデータをキャッシュ間接続ネットワーク1425を介してキャッシュ112又は113に送信するためのバッファである。受信バッファ1411は、キャッシュ112又は113内のデータをキャッシュ間接続ネットワーク1425を介してキャッシュ111に受信するためのバッファである。
送信バッファB(1402)及び受信バッファB(1412)は、キャッシュB(112)内に設けられる。送信バッファ1402は、キャッシュ112内のデータをキャッシュ間接続ネットワーク1425を介してキャッシュ111又は113に送信するためのバッファである。受信バッファ1412は、キャッシュ111又は113内のデータをキャッシュ間接続ネットワーク1425を介してキャッシュ112に受信するためのバッファである。
送信バッファC(1403)及び受信バッファC(1413)は、キャッシュC(113)内に設けられる。送信バッファ1403は、キャッシュ113内のデータをキャッシュ間接続ネットワーク1425を介してキャッシュ111又は112に送信するためのバッファである。受信バッファ1413は、キャッシュ111又は112内のデータをキャッシュ間接続ネットワーク1425を介してキャッシュ113に受信するためのバッファである。
送受信バッファ情報1423は、送信バッファ1401、受信バッファ1411、送信バッファ1402、受信バッファ1412、送信バッファ1403及び受信バッファ1413の各バッファが閾値を超えて埋まっているか否かを示す使用量情報である。
図15は図14のキャッシュシステムにおける図5のステップS7の交換処理を示すフローチャートであり、図16は図15のステップC13の玉突き処理の例を示す図であり、図17は図15のステップC11の移動処理の例を示す図である。
まず、ステップC1では、図5のステップS6の判断により、下位階層キャッシュとして利用可能な他コアキャッシュにヒットしたと判断される。
次に、ステップC2では、図6のステップA2と同様に、判定回路1424はLRU判定処理を行う。すなわち、ヒットした他コアが所属するグループの自コアローカルの第1のLRU情報が最新であり、かつ、ヒットした他コアキャッシュの第1のLRU情報のエントリが最新でないことの条件を満たすか否かを判定する。条件を満たす場合にはステップC8に進み、条件を満たさない場合にはステップC7に進む。
ステップC8では、判定回路1424は第1のバッファ判定処理を行う。すなわち、ヒットした他コアキャッシュから自コアキャッシュへのバッファが閾値を越えて埋まっているか否かを判定する。例えば、ヒットした他コアバッファ112から自コアバッファ111へのデータ転送を行うため、送受信バッファ情報1423を参照し、他コアバッファ112の送信バッファ1402又は自コアバッファ111の受信バッファ1411が閾値を越えて埋まっているか否かを判定する。送信バッファ1402又は受信バッファ1411の少なくともいずれかが埋まっていればステップC7に進み、送信バッファ1402及び受信バッファ1411の両方が埋まっていなければステップC9へ進む。
ステップC7では、図6のステップA7と同様に、自コアはキャッシュ間接続ネットワーク1425を介して参照処理を行う。すなわち、他コアキャッシュのヒットしたエントリを直接参照する(読み出す)。
次に、ステップC3では、図6のステップA3と同様に、キャッシュシステムはLRU更新処理を行う。すなわち、自コアの第1のLRU情報についてはヒットした他コアが所属するグループを最新に更新し、他コアの第1のLRU情報についてはヒットした他コアのエントリが最新であれば2番目に新しいものと交換するように更新し、第2のLRU情報についてはヒットした他コアキャッシュが最新となるように更新する。その後、ステップC6に進み、処理を終了する。
ステップC9では、判定回路1424は第2のバッファ判定処理を行う。すなわち、自コアキャッシュからヒットした他コアキャッシュへのバッファが閾値を越えて埋まっているか否かを判定する。例えば、自コアバッファ111からヒットした他コアバッファ112へのデータ転送を行うため、送受信バッファ情報1423を参照し、自コアバッファ111の送信バッファ1401又は他コアバッファ112の受信バッファ1412が閾値を越えて埋まっているか否かを判定する。送信バッファ1401又は受信バッファ1412の少なくともいずれかが埋まっていれば交換処理ができないためステップC10に進み、送信バッファ1401及び受信バッファ1412の両方が埋まっていなければ交換処理可能であるためステップC4へ進む。
ステップC4では、図6のステップA4と同様に、キャッシュシステムは自コアキャッシュ及び他コアキャッシュ間で交換処理を行う。例えば、図16及び図17に示すように、自コアキャッシュ111の最古エントリbと他コアキャッシュ112のヒットしたエントリcを交換する。すなわち、データ転送処理1611により、他コアキャッシュ112のヒットエントリcのデータは自コアキャッシュ111の最古エントリbに移動され、データ転送処理1612により、自コアキャッシュ111の最古エントリbのデータは他コアキャッシュ112のヒットエントリcに移動される。
次に、ステップC5では、図6のステップA5と同様に、キャッシュシステムはLRU更新処理を行う。すなわち、自コアの第1のLRU情報については自コアの交換されたエントリを最新に更新し、他コアの第1のLRU情報については他コアの交換されたエントリを最古に更新し、第2のLRU情報については自コアキャッシュが最新となるように更新する。その後、ステップC6に進み、処理を終了する。
ステップC10では、判定回路1424は第3のバッファ判定処理を行う。すなわち、LRU情報1422及び送受信バッファ情報1423を参照することにより、自コアのバッファが最古であり、又は、自コアのバッファから最古コアのバッファへの送受信バッファが閾値を越えて埋まっているか否かを判定する。自コアのバッファが最古であるときには、玉突き処理(ステップC13)を行う必要がないので、ステップC11へ進む。自コアのバッファから最古コアのバッファへの送受信バッファが閾値を越えて埋まっているときには、玉突き処理(ステップC13)を行うことができないので、ステップC11に進む。自コアのバッファが最古でなく、かつ、自コアのバッファから最古コアのバッファへの送受信バッファが閾値を越えて埋まっていないときには、玉突き処理を行うためにステップC13に進む。
ステップC13では、キャッシュシステムは玉突き処理を行う。すなわち、図16に示すように、データ転送処理1613により、最古コア103のキャッシュ113の最古エントリcに自コア101のキャッシュ111の最古エントリbを上書きし、データ転送処理1611により、自コア101のキャッシュ111の最古エントリbに他コア102のキャッシュ112のヒットしたエントリcを上書きし、該他コア102のキャッシュ112のヒットしたエントリcを無効化する。最古コアは第2のLRU情報129を基に判断し、最古エントリは第1のLRU情報121〜123を基に判断することができる。
図16に示すように、ヒットした他コアキャッシュ112から自コアキャッシュ111への通信パス1601の送信バッファ1402及び受信バッファ1411が閾値を越えて埋まっておらず、かつ、自コアキャッシュ111からヒットした他コアキャッシュ112への通信パス1602の送信バッファ1401及び受信バッファ1412が閾値を越えて埋まっており、かつ、自コアキャッシュ111から最古コアキャッシュ113への通信パス1603の送信バッファ1401及び受信バッファ1413が閾値を越えて埋まっていないときには、交換処理(ステップC4)1611及び1612ができないので、上記の玉突き処理(ステップC13)1611及び1613を行う。
次に、ステップC14では、キャッシュシステムはLRU更新処理を行う。すなわち、自コアの第1のLRU情報については自コアキャッシュの最古エントリを最新に更新し、最古の他コアの第1のLRU情報については最古エントリを最新に更新し、第2のLRU情報については自コアキャッシュが最新、最古の他コアが2番目に新しい順番となるように更新する。その後、ステップC6に進み、処理を終了する。
ステップC11では、キャッシュシステムは移動処理を行う。すなわち、図17に示すように、データ転送処理1611により、自コア101のキャッシュ111の最古エントリbに他コア102のキャッシュ112のヒットしたエントリcを上書きし、該他コア102のキャッシュ112のヒットしたエントリcを無効化する。上記の上書きにより、自コアキャッシュ111の最古エントリbの元のキャッシュラインは破棄処理1614される。
以上のように、ヒットした他コアキャッシュ112から自コアキャッシュ111への通信パス1601の送信バッファ1402及び受信バッファ1411が閾値を越えて埋まっておらず、かつ、自コアキャッシュ111からヒットした他コアキャッシュ112への通信パス1602の送信バッファ1401及び受信バッファ1412が閾値を越えて埋まっており、かつ、自コアキャッシュ111から最古コアキャッシュ113への通信パス1603の送信バッファ1401及び受信バッファ1413が閾値を越えて埋まっているときには、交換処理(ステップC4)1611,1612及び玉突き処理(ステップC13)ができないので、上記の移動処理(ステップC11)1611及び1614を行う。
次に、ステップC12では、キャッシュシステムはLRU更新処理を行う。すなわち、自コアの第1のLRU情報については自コアキャッシュの最古エントリを最新に更新し、第2のLRU情報については自コアのキャッシュを最新の順番に更新する。その後、ステップC6に進み、処理を終了する。
なお、ステップC10において、自コアキャッシュが最古でなく、かつ、自コアキャッシュから最古コアキャッシュへの送受信バッファが閾値を越えて埋まっていると判断された場合には、自コアキャッシュから2番目に古いキャッシュへの送受信バッファが閾値を越えて埋まっているか否かを判定してもよい。埋まっていない場合には、自コアのキャッシュの最古エントリを2番目に古いコアキャッシュの最古エントリに上書きし、自コアキャッシュの最古エントリに他コアキャッシュのヒットしたエントリを上書きし、該他コアキャッシュのヒットエントリを無効化する。埋まっている場合には、さらに、自コアキャッシュから3番目に古いキャッシュへの送受信バッファが閾値を越えて埋まっているか否かを判定し、上記と同様に、3、4、・・・番目に古いコアキャッシュを順次玉突き処理の対象にしてもよい。
以上のように、本実施形態は、交換処理を行う際には、LRU判定処理(ステップC2)の他に、送受信バッファ判定処理(ステップC8〜C10)を行う。図15では、図6に対して、玉突き処理(ステップC13)及び移動処理(ステップC11)が追加されている。LRU判定処理(ステップC2)でステップC8に進む場合、送受信バッファ(例えば送信バッファ1401及び受信バッファ1412)の埋まり具合に応じて、参照処理(ステップC7)、交換処理(ステップC4)、玉突き処理(ステップC13)又は移動処理(ステップC11)を行う。これにより、トラフィックを低減することができる。
図18は図14のキャッシュシステムにおける図5のステップS8の追い出し処理を示すフローチャートであり、図19は図18のステップD10の次候補への追い出し処理の例を示す図である。
まず、ステップD1では、図5のステップS4の判断により、下位階層キャッシュとして利用可能な他コアキャッシュに全てミスしたと判断される。
次に、ステップD2では、図10のステップB2と同様に、判定回路1424はLRU判定処理を行う。すなわち、第2のLRU情報を参照し、自コアが最近そのインデックスのエントリを最も使っていないコアでないことの条件を満たすか否かを判定する。条件を満たす場合にはステップD8に進み、条件を満たさない場合にはステップD7に進む。
ステップD8では、判定回路1424は第1のバッファ判定処理を行う。すなわち、自コアのバッファから最古コアのバッファへの送受信バッファが閾値を越えて埋まっているか否かを判定する。例えば、図19において、自コア101のバッファ111から最古コア102のバッファ112への通信パス1901の送信バッファ1401又は受信バッファ1412が閾値を越えて埋まっているか否かを判定する。送信バッファ1401又は受信バッファ1412が閾値を越えて埋まっているときにはステップD9へ進み、送信バッファ1401及び受信バッファ1412が閾値を越えて埋まっていないときにはステップD4へ進む。
ステップD4では、図10のステップB4と同様に、キャッシュシステムは自コアキャッシュから他コアキャッシュへ追い出し処理を行う。すなわち、図19に示すように、データ転送処理1912により、最近最も使われていない他コアキャッシュ112の最古エントリcに自コアキャッシュ111の最古エントリ(他コアグループ用エントリを含まないものの中で最古エントリ)bを移動する。
次に、ステップD5では、図10のステップB5と同様に、キャッシュシステムはLRU更新処理を行う。すなわち、自コアの第1のLRU情報については自コアキャッシュの最古エントリを最新に更新し、他コアの第1のLRU情報については追い出し先の他コアキャッシュの最古エントリを最新に更新し、第2のLRU情報については自コアキャッシュが最新に、追い出し先の他コアキャッシュが2番目に新しい順番となるように更新する。その後、ステップD6に進む。
ステップD9では、判定回路1424は第2のバッファ判定処理を行う。すなわち、自コアのキャッシュから2番目に古いコアのキャッシュへの送受信バッファが閾値を越えて埋まっているか否かを判定する。例えば、図19において、自コア101のキャッシュ111から2番目に古いコア103のキャッシュ113への通信パス1902の送信バッファ1401又は受信バッファ1413が閾値を越えて埋まっているか否かを判定する。送信バッファ1401又は受信バッファ1413が閾値を越えて埋まっているときにはステップD7へ進み、送信バッファ1401及び受信バッファ1413が閾値を越えて埋まっていないときにはステップD10へ進む。
ステップD7では、図10のステップB7と同様に、キャッシュシステムは破棄処理を行う。すなわち、自コアキャッシュの最古エントリを破棄する。具体的には、このステップでは何も処理せず、後のステップD6の上書き処理により自コアキャッシュの最古エントリが破棄される。
次に、ステップD3では、図10のステップB3と同様に、キャッシュシステムはLRU更新処理を行う。すなわち、自コアの第1のLRU情報については自コアキャッシュの最古エントリを最新に更新し、第2のLRU情報については自コアキャッシュが最新になるように更新する。その後、ステップD6に進む。
ステップD10では、キャッシュシステムは次候補への追い出し処理を行う。すなわち、図19に示すように、データ転送処理1913により、2番目に古いコアキャッシュ113の最古エントリcに自コアキャッシュ111の最古エントリ(他コアグループ用エントリを含まないものの中で最古)bを移動する。
次に、ステップD11では、キャッシュシステムはLRU更新処理を行う。すなわち、自コアの第1のLRU情報については自コアキャッシュの最古エントリを最新に更新し、2番目に古いコア(追い出し先コア)の第1のLRU情報については最古エントリを最新に更新し、第2のLRU情報については自コアキャッシュを最新に、2番目に古いコア(追い出し先コア)を2番目に新しい順番に更新する。その後、ステップD6に進む。
ステップD6では、図10のステップB6と同様に、図19に示すように、自コア101は、データ読み出し処理1911により、自コアキャッシュ111の最古エントリ(LRU情報更新後の最新エントリ)bにメインメモリ(又は2次キャッシュ)130から読み出したデータを上書きすると共に、そのデータを取得する。以上で、処理を終了する。
なお、ステップD9において、自コアキャッシュから2番目に古いコアキャッシュへの送受信バッファが閾値を越えて埋まっていると判断された場合には、自コアキャッシュから3番目に古いコアキャッシュへの送受信バッファが閾値を越えて埋まっているか否かを判定してもよい。埋まっていない場合には、自コアのキャッシュの最古エントリを3番目に古いコアキャッシュの最古エントリに上書きし、自コアキャッシュの最古エントリに他コアキャッシュのヒットしたエントリを上書きし、該他コアキャッシュのヒットエントリを無効化する。埋まっている場合には、さらに、自コアキャッシュから4番目に古いコアキャッシュへの送受信バッファが閾値を越えて埋まっているか否かを判定し、上記と同様に、4、5、・・・番目に古いコアキャッシュを順次追い出し処理の対象にしてもよい。
以上のように、本実施形態は、追い出し処理を行う際には、LRU判定処理(ステップD2)の他に、送受信バッファ判定処理(ステップD8及びD9)を行う。図18では、図10に対して、次候補への追い出し処理(ステップD10)が追加されている。LRU判定処理(ステップD2)でステップD8に進む場合、送受信バッファ(例えば送信バッファ1401及び受信バッファ1412)の埋まり具合に応じて、破棄処理(ステップD7)、追い出し処理(ステップD4)又は次候補への追い出し処理(ステップD10)を行う。これにより、トラフィックを低減することができる。
図20は、本発明の他の実施形態による共有分散キャッシュシステムの構成例を示す図である。以下、図20が図14と異なる点を説明する。図14では、共通の1個の情報メモリ1421内に全キャッシュ111〜113のLRU情報1422及び送受信バッファ情報1423を記憶させる。図20の情報メモリ1421a,1421b,1421c、LRU情報1422a,1422b,1422c、及び送受信バッファ1423a,1423b,1423cは、それぞれ図14の情報メモリ1421、LRU情報1422及び送受信バッファ1423を分散させたものである。
情報メモリ1421aは、キャッシュ111内に設けられ、LRU情報1422a及び送受信バッファ情報1423aを記憶する。LRU情報1422aは、図1の第1のLRU情報121に対応する。送受信バッファ情報1423aは、送信バッファ1401及び受信バッファ1411の各バッファが閾値を越えて埋まっているか否かの情報である。
情報メモリ1421bは、キャッシュ112内に設けられ、LRU情報1422b及び送受信バッファ情報1423bを記憶する。LRU情報1422bは、図1の第1のLRU情報122に対応する。送受信バッファ情報1423bは、送信バッファ1402及び受信バッファ1412の各バッファが閾値を越えて埋まっているか否かの情報である。
情報メモリ1421cは、キャッシュ113内に設けられ、LRU情報1422c及び送受信バッファ情報1423cを記憶する。LRU情報1422cは、図1の第1のLRU情報123に対応する。送受信バッファ情報1423cは、送信バッファ1403及び受信バッファ1413の各バッファが閾値を越えて埋まっているか否かの情報である。
図1の第2のLRU情報129は、判定回路1424内に記憶させてもよいし、キャッシュ111〜113内に記憶させてもよい。図20のキャッシュシステムの動作は、図14のキャッシュシステムと同様である。
以上のように、本実施形態は、エントリ(キャッシュライン)移動の判定をLRU情報の他、トラフィックの状態を直接知ることができる送受信バッファ情報を基にエントリの移動判定を行うことにより、トラフィックを直接的に低減することができる。
本実施形態は、複数の処理装置(コア)101〜103と、前記複数の処理装置101〜103に一対一に接続された複数のキャッシュ111〜113と、前記複数のキャッシュ111〜113に接続され、前記複数のキャッシュ111〜113間のデータ通信を行うネットワーク1425と、前記キャッシュ111〜113毎に設けられ、前記キャッシュ111〜113が前記ネットワーク1425に対してデータ通信するための複数のバッファ1401〜1403,1411〜1413とを有する。前記処理装置が要求したデータが、一のキャッシュでミスした場合、前記複数のバッファの状態(送受信バッファ情報)1423に応じて、前記キャッシュが前記ネットワークを介してデータ通信する。
前記処理装置が要求したデータが、一のキャッシュでミスし(図5のステップS2)、他のキャッシュでヒットした場合(図5のステップS6)に、前記ヒットした他のキャッシュから前記一のキャッシュへデータを送信するための前記バッファに所定量データが存在せず(図15のステップC8)、かつ、前記一のキャッシュから前記ヒットした他のキャッシュへデータを送信するための前記バッファに所定量データが存在しないとき(図15のステップC9)には、前記一のキャッシュのエントリ及び前記ヒットした他のキャッシュのエントリを交換する(図15のステップC4)。
また、前記処理装置が要求したデータが、一のキャッシュでミスし(図5のステップS2)、他のキャッシュでヒットした場合(図5のステップS6)に、前記ヒットした他のキャッシュから前記一のキャッシュへデータを送信するための前記バッファに所定量データが存在するとき(図15のステップC8)には、前記要求した処理装置は前記ヒットした他のキャッシュのデータを参照する(図15のステップC7)。
また、前記処理装置が要求したデータが、一のキャッシュでミスし(図5のステップS2)、他のキャッシュでヒットした場合(図5のステップS6)に、前記ヒットした他のキャッシュから前記一のキャッシュへデータを送信するための前記バッファに所定量データが存在せず(図15のステップC8)、かつ、前記一のキャッシュから前記ヒットした他のキャッシュへデータを送信するための前記バッファに所定量データが存在し(図15のステップC9)、かつ、前記複数のキャッシュの中で前記一のキャッシュが最も最近使用されていないとき(図15のステップC10)には、前記ヒットした他のキャッシュのエントリを前記一のキャッシュのエントリに上書きする(図15のステップC11)。
また、前記処理装置が要求したデータが、一のキャッシュでミスし(図5のステップS2)、他のキャッシュでヒットした場合(図5のステップS6)に、前記ヒットした他のキャッシュから前記一のキャッシュへデータを送信するための前記バッファに所定量データが存在せず(図15のステップC8)、かつ、前記一のキャッシュから前記ヒットした他のキャッシュへデータを送信するための前記バッファに所定量データが存在し(図15のステップC9)、かつ、前記複数のキャッシュの中で前記一のキャッシュが最も最近使用されていないものでなく(図15のステップC10)、かつ、前記一のキャッシュから前記複数のキャッシュの中で最も最近使用されていないキャッシュへデータを送信するための前記バッファに所定量データが存在しないとき(図15のステップC10)には、前記一のキャッシュのエントリを前記最も最近使用されていないキャッシュのエントリに上書きし、前記ヒットした他のキャッシュのエントリを前記一のキャッシュのエントリに上書きする(図15のステップC13)。
また、前記処理装置が要求したデータが、一のキャッシュでミスし(図5のステップS2)、他のキャッシュでヒットした場合(図5のステップS6)に、前記ヒットした他のキャッシュから前記一のキャッシュへデータを送信するための前記バッファに所定量データが存在せず(図15のステップC8)、かつ、前記一のキャッシュから前記ヒットした他のキャッシュへデータを送信するための前記バッファに所定量データが存在し(図15のステップC9)、かつ、前記複数のキャッシュの中で前記一のキャッシュが最も最近使用されていないものでなく(図15のステップC10)、かつ、前記一のキャッシュから前記複数のキャッシュの中で最も最近使用されていないキャッシュへデータを送信するための前記バッファに所定量データが存在するとき(図15のステップC10)には、前記ヒットした他のキャッシュのエントリを前記一のキャッシュのエントリに上書きする(図15のステップC11)。
また、前記処理装置が要求したデータが、一のキャッシュでミスし(図5のステップS2)、他のキャッシュでヒットした場合(図5のステップS6)に、前記ヒットした他のキャッシュから前記一のキャッシュへデータを送信するための前記バッファに所定量データが存在せず(図15のステップC8)、かつ、前記一のキャッシュから前記ヒットした他のキャッシュへデータを送信するための前記バッファに所定量データが存在し(図15のステップC9)、かつ、前記複数のキャッシュの中で前記一のキャッシュが最も最近使用されていないものでなく(図15のステップC10)、かつ、前記一のキャッシュから前記複数のキャッシュの中で最も最近使用されていないキャッシュへデータを送信するための前記バッファに所定量データが存在し(図15のステップC10)、かつ、前記一のキャッシュから前記複数のキャッシュの中で2番目に最近使用されていないキャッシュへデータを送信するための前記バッファに所定量データが存在しないときには、前記一のキャッシュのエントリを前記2番目に最近使用されていないキャッシュのエントリに上書きし、前記ヒットした他のキャッシュのエントリを前記一のキャッシュのエントリに上書きする。
また、前記処理装置が要求したデータが、前記複数のキャッシュすべてでミスした場合(図5のステップS2、S4及びS6)に、前記要求した処理装置の一のキャッシュから前記複数のキャッシュの中で最も最近使用していないキャッシュへデータを送信するための前記バッファに所定量データが存在しないとき(図18のステップD8)には、前記一のキャッシュのエントリを前記最も最近使用していないキャッシュのエントリに移動し(図18のステップD4)、主記憶装置(メインメモリ)又は前記複数のキャッシュより下位階層のキャッシュ(2次キャッシュ)130から読み出したデータを前記移動した一のキャッシュのエントリに上書きする(図18のステップD6)。
また、前記処理装置が要求したデータが、前記複数のキャッシュすべてでミスした場合(図5のステップS2、S4及びS6)に、前記要求した処理装置の一のキャッシュから前記複数のキャッシュの中で最も最近使用していないキャッシュへデータを送信するための前記バッファに所定量データが存在し(図18のステップD8)、かつ、前記一のキャッシュから前記複数のキャッシュの中で2番目に最近使用していないキャッシュへデータを送信するための前記バッファに所定量データが存在しないとき(図18のステップD9)には、前記一のキャッシュのエントリを前記2番目に最近使用していないキャッシュのエントリに移動し(図18のステップD10)、主記憶装置又は前記複数のキャッシュより下位階層のキャッシュから読み出したデータを前記移動した一のキャッシュのエントリに上書きする(図18のステップD6)。
また、前記処理装置が要求したデータが、前記複数のキャッシュすべてでミスした場合(図5のステップS2、S4及びS6)に、前記要求した処理装置の一のキャッシュから前記複数のキャッシュの中で最も最近使用していないキャッシュへデータを送信するための前記バッファに所定量データが存在し(図18のステップD8)、かつ、前記一のキャッシュから前記複数のキャッシュの中で2番目に最近使用していないキャッシュへデータを送信するための前記バッファに所定量データが存在するとき(図18のステップD9)には、主記憶装置又は前記複数のキャッシュより下位階層のキャッシュから読み出したデータを前記一のキャッシュのエントリに上書きする(図18のステップD6)。
また、前記処理装置が要求したデータが、前記複数のキャッシュすべてでミスした場合(図5のステップS2、S4及びS6)に、前記要求した処理装置の一のキャッシュから前記複数のキャッシュの中で最も最近使用していないキャッシュへデータを送信するための前記バッファに所定量データが存在し(図18のステップD8)、かつ、前記一のキャッシュから前記複数のキャッシュの中で2番目に最近使用していないキャッシュへデータを送信するための前記バッファに所定量データが存在し(図18のステップD9)、かつ、前記一のキャッシュから前記複数のキャッシュの中で3番目に最近使用していないキャッシュへデータを送信するための前記バッファに所定量データが存在しないときには、前記一のキャッシュのエントリを前記3番目に最近使用していないキャッシュのエントリに移動し、主記憶装置又は前記複数のキャッシュより下位階層のキャッシュから読み出したデータを前記移動した一のキャッシュのエントリに上書きする。
図14のキャッシュシステムは、前記複数のバッファ111〜113の状態(送受信バッファ情報)1423を集中して記憶する1個の情報メモリ1421を有する。これに対し、図20のキャッシュシステムは、前記複数のバッファ111〜113の状態1423a,1423b,1423cを前記バッファ毎に分散して記憶する複数の情報メモリ1421a,1421b,1421cを有する。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
本発明の実施形態は、例えば以下のように種々の適用が可能である。
(付記1)
複数の処理装置と、
前記複数の処理装置に一対一に接続された複数のキャッシュと、
前記複数のキャッシュに接続され、前記複数のキャッシュ間のデータ通信を行うネットワークと、
前記キャッシュ毎に設けられ、前記キャッシュが前記ネットワークに対してデータ通信するための複数のバッファとを有し、
前記処理装置が要求したデータが、一のキャッシュでミスした場合、前記複数のバッファの状態に応じて、前記キャッシュが前記ネットワークを介してデータ通信することを特徴とするキャッシュシステム。
(付記2)
前記処理装置が要求したデータが、一のキャッシュでミスし、他のキャッシュでヒットした場合に、前記ヒットした他のキャッシュから前記一のキャッシュへデータを送信するための前記バッファに所定量データが存在せず、かつ、前記一のキャッシュから前記ヒットした他のキャッシュへデータを送信するための前記バッファに所定量データが存在しないときには、前記一のキャッシュのエントリ及び前記ヒットした他のキャッシュのエントリを交換することを特徴とする付記1記載のキャッシュシステム。
(付記3)
前記処理装置が要求したデータが、一のキャッシュでミスし、他のキャッシュでヒットした場合に、前記ヒットした他のキャッシュから前記一のキャッシュへデータを送信するための前記バッファに所定量データが存在するときには、前記要求した処理装置は前記ヒットした他のキャッシュのデータを参照することを特徴とする付記1記載のキャッシュシステム。
(付記4)
前記処理装置が要求したデータが、一のキャッシュでミスし、他のキャッシュでヒットした場合に、前記ヒットした他のキャッシュから前記一のキャッシュへデータを送信するための前記バッファに所定量データが存在せず、かつ、前記一のキャッシュから前記ヒットした他のキャッシュへデータを送信するための前記バッファに所定量データが存在し、かつ、前記複数のキャッシュの中で前記一のキャッシュが最も最近使用されていないときには、前記ヒットした他のキャッシュのエントリを前記一のキャッシュのエントリに上書きすることを特徴とする付記1記載のキャッシュシステム。
(付記5)
前記処理装置が要求したデータが、一のキャッシュでミスし、他のキャッシュでヒットした場合に、前記ヒットした他のキャッシュから前記一のキャッシュへデータを送信するための前記バッファに所定量データが存在せず、かつ、前記一のキャッシュから前記ヒットした他のキャッシュへデータを送信するための前記バッファに所定量データが存在し、かつ、前記複数のキャッシュの中で前記一のキャッシュが最も最近使用されていないものでなく、かつ、前記一のキャッシュから前記複数のキャッシュの中で最も最近使用されていないキャッシュへデータを送信するための前記バッファに所定量データが存在しないときには、前記一のキャッシュのエントリを前記最も最近使用されていないキャッシュのエントリに上書きし、前記ヒットした他のキャッシュのエントリを前記一のキャッシュのエントリに上書きすることを特徴とする付記1記載のキャッシュシステム。
(付記6)
前記処理装置が要求したデータが、一のキャッシュでミスし、他のキャッシュでヒットした場合に、前記ヒットした他のキャッシュから前記一のキャッシュへデータを送信するための前記バッファに所定量データが存在せず、かつ、前記一のキャッシュから前記ヒットした他のキャッシュへデータを送信するための前記バッファに所定量データが存在し、かつ、前記複数のキャッシュの中で前記一のキャッシュが最も最近使用されていないものでなく、かつ、前記一のキャッシュから前記複数のキャッシュの中で最も最近使用されていないキャッシュへデータを送信するための前記バッファに所定量データが存在するときには、前記ヒットした他のキャッシュのエントリを前記一のキャッシュのエントリに上書きすることを特徴とする付記1記載のキャッシュシステム。
(付記7)
前記処理装置が要求したデータが、一のキャッシュでミスし、他のキャッシュでヒットした場合に、前記ヒットした他のキャッシュから前記一のキャッシュへデータを送信するための前記バッファに所定量データが存在せず、かつ、前記一のキャッシュから前記ヒットした他のキャッシュへデータを送信するための前記バッファに所定量データが存在し、かつ、前記複数のキャッシュの中で前記一のキャッシュが最も最近使用されていないものでなく、かつ、前記一のキャッシュから前記複数のキャッシュの中で最も最近使用されていないキャッシュへデータを送信するための前記バッファに所定量データが存在し、かつ、前記一のキャッシュから前記複数のキャッシュの中で2番目に最近使用されていないキャッシュへデータを送信するための前記バッファに所定量データが存在しないときには、前記一のキャッシュのエントリを前記2番目に最近使用されていないキャッシュのエントリに上書きし、前記ヒットした他のキャッシュのエントリを前記一のキャッシュのエントリに上書きすることを特徴とする付記1記載のキャッシュシステム。
(付記8)
前記処理装置が要求したデータが、前記複数のキャッシュすべてでミスした場合に、前記要求した処理装置の一のキャッシュから前記複数のキャッシュの中で最も最近使用していないキャッシュへデータを送信するための前記バッファに所定量データが存在しないときには、前記一のキャッシュのエントリを前記最も最近使用していないキャッシュのエントリに移動し、主記憶装置又は前記複数のキャッシュより下位階層のキャッシュから読み出したデータを前記移動した一のキャッシュのエントリに上書きすることを特徴とする付記1記載のキャッシュシステム。
(付記9)
前記処理装置が要求したデータが、前記複数のキャッシュすべてでミスした場合に、前記要求した処理装置の一のキャッシュから前記複数のキャッシュの中で最も最近使用していないキャッシュへデータを送信するための前記バッファに所定量データが存在し、かつ、前記一のキャッシュから前記複数のキャッシュの中で2番目に最近使用していないキャッシュへデータを送信するための前記バッファに所定量データが存在しないときには、前記一のキャッシュのエントリを前記2番目に最近使用していないキャッシュのエントリに移動し、主記憶装置又は前記複数のキャッシュより下位階層のキャッシュから読み出したデータを前記移動した一のキャッシュのエントリに上書きすることを特徴とする付記1記載のキャッシュシステム。
(付記10)
前記処理装置が要求したデータが、前記複数のキャッシュすべてでミスした場合に、前記要求した処理装置の一のキャッシュから前記複数のキャッシュの中で最も最近使用していないキャッシュへデータを送信するための前記バッファに所定量データが存在し、かつ、前記一のキャッシュから前記複数のキャッシュの中で2番目に最近使用していないキャッシュへデータを送信するための前記バッファに所定量データが存在するときには、主記憶装置又は前記複数のキャッシュより下位階層のキャッシュから読み出したデータを前記一のキャッシュのエントリに上書きすることを特徴とする付記1記載のキャッシュシステム。
(付記11)
前記処理装置が要求したデータが、前記複数のキャッシュすべてでミスした場合に、前記要求した処理装置の一のキャッシュから前記複数のキャッシュの中で最も最近使用していないキャッシュへデータを送信するための前記バッファに所定量データが存在し、かつ、前記一のキャッシュから前記複数のキャッシュの中で2番目に最近使用していないキャッシュへデータを送信するための前記バッファに所定量データが存在し、かつ、前記一のキャッシュから前記複数のキャッシュの中で3番目に最近使用していないキャッシュへデータを送信するための前記バッファに所定量データが存在しないときには、前記一のキャッシュのエントリを前記3番目に最近使用していないキャッシュのエントリに移動し、主記憶装置又は前記複数のキャッシュより下位階層のキャッシュから読み出したデータを前記移動した一のキャッシュのエントリに上書きすることを特徴とする付記1記載のキャッシュシステム。
(付記12)
さらに、前記複数のバッファの状態を集中して記憶する1個の情報メモリを有する付記1記載のキャッシュシステム。
(付記13)
さらに、前記複数のバッファの状態を前記バッファ毎に分散して記憶する複数の情報メモリを有する付記1記載のキャッシュシステム。