JP2009064308A - Cache system - Google Patents
Cache system Download PDFInfo
- Publication number
- JP2009064308A JP2009064308A JP2007232606A JP2007232606A JP2009064308A JP 2009064308 A JP2009064308 A JP 2009064308A JP 2007232606 A JP2007232606 A JP 2007232606A JP 2007232606 A JP2007232606 A JP 2007232606A JP 2009064308 A JP2009064308 A JP 2009064308A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- core
- data
- caches
- entry
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
本発明は、キャッシュシステムに関する。 The present invention relates to a cache system.
コンピュータシステムにおいては一般に、主記憶とは別に小容量で高速なキャッシュメモリが設けられる。主記憶に記憶される情報の一部をキャッシュにコピーしておくことで、この情報をアクセスする場合には主記憶からではなくキャッシュから読み出すことで、高速な情報の読み出しが可能となる。 In general, in a computer system, a small-capacity and high-speed cache memory is provided separately from the main memory. By copying a part of the information stored in the main memory to the cache, when accessing this information, it is possible to read the information at high speed by reading it from the cache instead of from the main memory.
キャシュは複数のキャッシュラインを含み、主記憶からキャッシュへの情報のコピーはキャッシュライン単位で実行される。主記憶のメモリ空間はキャッシュライン単位で分割され、分割されたメモリ領域を順番にキャッシュラインに割当てておく。キャッシュの容量は主記憶の容量よりも小さいので、主記憶のメモリ領域を繰り返して同一のキャッシュラインに割当てることになる。 The cache includes a plurality of cache lines, and information is copied from the main memory to the cache in units of cache lines. The memory space of the main memory is divided in units of cache lines, and the divided memory areas are sequentially assigned to the cache lines. Since the capacity of the cache is smaller than the capacity of the main memory, the memory area of the main memory is repeatedly assigned to the same cache line.
メモリ空間上のあるアドレスに最初のアクセスが実行されると、そのアドレスの情報(データやプログラム)をキャシュ内の対応するキャッシュラインにコピーする。同一アドレスに対して次のアクセスを実行する場合にはキャシュから直接に情報を読み出す。一般に、アドレスの全ビットのうちで、所定数の下位ビットがキャッシュのインデックスとなり、それより上位に位置する残りのビットがキャッシュのタグとなる。 When the first access is executed to an address in the memory space, the information (data or program) at that address is copied to the corresponding cache line in the cache. When executing the next access to the same address, information is read directly from the cache. Generally, out of all bits of the address, a predetermined number of lower bits serve as a cache index, and the remaining bits positioned higher than that serve as a cache tag.
データをアクセスする場合には、アクセス先を示すアドレス中のインデックス部分を用いて、キャッシュ中の対応するインデックスのタグを読み出す。読み出したタグと、アドレス中のタグ部分のビットパターンが一致するか否かを判断する。一致しない場合にはキャッシュミスとなる。一致する場合には、キャッシュヒットとなり、当該インデックスに対応するキャッシュデータ(1キャッシュライン分の所定ビット数のデータ)がアクセスされる。 When accessing the data, the tag of the corresponding index in the cache is read using the index portion in the address indicating the access destination. It is determined whether or not the read tag matches the bit pattern of the tag portion in the address. If they do not match, a cache miss occurs. If they match, a cache hit occurs, and the cache data corresponding to the index (data of a predetermined number of bits for one cache line) is accessed.
各キャッシュラインに対して1つだけタグを設けたキャッシュの構成を、ダイレクトマッピング方式と呼ぶ。各キャッシュラインに対してN個のタグを設けたキャッシュの構成をNウェイセットアソシアティブと呼ぶ。ダイレクトマッピング方式は1ウェイセットアソシアティブとみなすことができる。 A cache configuration in which only one tag is provided for each cache line is called a direct mapping method. A cache configuration in which N tags are provided for each cache line is called an N-way set associative. The direct mapping method can be regarded as a one-way set associative.
キャッシュミスが発生した場合に、主記憶にアクセスすることによるペナルティーを軽減するために、キャッシュメモリを多階層化したシステムが用いられる。例えば、1次キャッシュと主記憶との間に、主記憶よりは高速にアクセスできる2次キャッシュを設けることにより、1次キャッシュにおいてキャッシュミスが発生した場合に、主記憶にアクセスが必要になる頻度を低くして、キャッシュミス・ペナルティーを軽減することができる。 In order to reduce the penalty for accessing the main memory when a cache miss occurs, a system in which the cache memory is hierarchized is used. For example, by providing a secondary cache that can be accessed faster than the main memory between the primary cache and the main memory, the frequency at which access to the main memory is required when a cache miss occurs in the primary cache. Can be reduced to reduce the cache miss penalty.
従来、プロセッサにおいては動作周波数の向上やアーキテクチャの改良により処理速度を向上させてきた。しかし近年、周波数をこれ以上高くすることには技術的な限界が見え始めており、複数のプロセッサを用いたマルチプロセッサ構成により処理速度の向上を目指す動きが強くなっている。 Conventionally, in a processor, the processing speed has been improved by improving the operating frequency and improving the architecture. However, in recent years, a technical limit has begun to appear when the frequency is further increased, and there is a strong movement toward improving the processing speed by a multiprocessor configuration using a plurality of processors.
複数のプロセッサが存在するシステムは、各々がキャッシュを有する既存のシングルプロセッサコアを複数個設け、それらを単純に繋げることで実現可能である。このような構成は、設計コストを低く抑えることができるが、キャッシュの使用効率やキャッシュの一貫性に関して問題がある。 A system having a plurality of processors can be realized by providing a plurality of existing single processor cores each having a cache and simply connecting them. Such a configuration can keep the design cost low, but there are problems with cache usage efficiency and cache consistency.
下記の特許文献1には、ネットワークで相互に接続された複数のプロセッサエレメントの各々が、処理装置と、その処理装置で実行される命令列とその命令列で使用されるデータを保持するローカルメモリと、該ネットワークを介して他のプロセッサエレメントへデータを送信する送信ユニットと、該ネットワークを介して他のプロセッサエレメントから転送されたデータを受信する受信ユニットと、該処理装置が要求した、そのローカルメモリに保持されているデータまたはそのローカルメモリに記憶されるべきデータを一時的に保持するための第1のキャッシュメモリと、該受信ユニットにより受信され、該ローカルメモリに記憶されるべきデータを一時的に保持するための第2のキャッシュメモリと、該受信ユニットによりデータが受信されたことに応答して、そのデータを該第2のキャッシュメモリに書き込み、該処理装置からの、ローカルメモリ内データの読み出し要求に応答して、該第1、第2のキャッシュメモリの内、そのいずれか一方にその要求の対象とされるデータがあるか否かを検出し、いずれか一方にそのデータがあるときには、そのデータをその一方のキャッシュメモリから読み出すキャッシュアクセス制御手段とを有する並列計算機が記載されている。
In
また、下記の特許文献2には、プロセッサとキャッシュメモリとを有する一つ以上のプロセッサモジュールと、前記プロセッサモジュールにより共有されるメインメモリを有するメモリモジュールと、前記一つ以上のプロセッサモジュールと前記メモリモジュールとを相互に接続する結合手段とを備えるマルチプロセッサシステムにおいて、前記プロセッサモジュール内のキャッシュメモリ間のデータのコヒーレンシを維持するキャッシュコヒーレンシ制御の際のデータの単位であるラインサイズが、前記結合手段を介してメインメモリのデータを転送する際のデータの単位である転送サイズのn倍(nは2以上の整数)であって、前記プロセッサモジュールは、前記ラインサイズの値を前記キャッシュコヒーレンシ制御の際のデータの単位としてキャッシュメモリを制御するキャッシュ制御手段を有し、前記プロセッサモジュールは、その中のプロセッサが発行したデータ要求が自己のキャッシュメモリでキャッシュミスを起こしたときには、前記プロセッサモジュールと前記メモリモジュールとにデータを要求するコヒーレント・リード要求を発行し、前記メモリモジュールのみにデータを要求するノン・コヒーレント・リード要求を、(n−1)回だけ発行することを特徴とするデータ要求発行の制御手段を有することを特徴とするマルチプロセッサシステムが記載されている。
また、下記の特許文献3には、データの転送を行う共有バスと、この共有バスに接続され、データを保持する共有メモリと、前記共有バスに接続され、データを保持するデータ保持部、及び、このデータ保持部に保持されたデータの情報を保持するタグ保持部を備えた複数のキャッシュメモリと、この複数のキャッシュメモリのうち一のキャッシュメモリに接続され、必要なデータを前記キャッシュメモリに要求して所定の処理を行う複数のプロセッサ(PE)と、を備えたマルチプロセッサを制御する方法において、前記複数のキャッシュメモリのうちの所定のキャッシュメモリで、他のキャッシュメモリと共有状態にあってかつ共有メモリに対して更新されているデータがリプレイスされるとき、前記データを共有している前記他のキャッシュメモリのうちの1つのキャッシュメモリのタグ保持部に、共有メモリに対して更新されている旨の情報を保持させ、前記共有メモリへの前記更新されているデータの書き戻しを行わないことを特徴とするマルチプロセッサの制御方法が記載されている。
本発明の目的は、複数の処理装置に一対一に複数のキャッシュを接続した場合に、複数のキャッシュ間で効率的にデータ転送を行うことができるキャッシュシステムを提供することである。 An object of the present invention is to provide a cache system capable of efficiently transferring data between a plurality of caches when a plurality of caches are connected to a plurality of processing devices on a one-to-one basis.
本発明のキャッシュシステムは、複数の処理装置と、前記複数の処理装置に一対一に接続された複数のキャッシュと、前記複数のキャッシュに接続され、前記複数のキャッシュ間のデータ通信を行うネットワークと、前記キャッシュ毎に設けられ、前記キャッシュが前記ネットワークに対してデータ通信するための複数のバッファとを有し、前記処理装置が要求したデータが、一のキャッシュでミスした場合、前記複数のバッファの状態に応じて、前記キャッシュが前記ネットワークを介してデータ通信することを特徴とする。 The cache system of the present invention includes a plurality of processing devices, a plurality of caches connected to the plurality of processing devices on a one-to-one basis, and a network connected to the plurality of caches and performing data communication between the plurality of caches. A plurality of buffers provided for each cache, wherein the cache has a plurality of buffers for data communication with the network, and when the data requested by the processing device misses in one cache, the plurality of buffers According to the state, the cache performs data communication via the network.
バッファの状態に応じて、複数のキャッシュ間で効率的にデータ転送を行うことができ、トラフィックの増大を防止することができる。 Data can be efficiently transferred between a plurality of caches according to the state of the buffer, and an increase in traffic can be prevented.
図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を介して提供される。
FIG. 1 is a diagram illustrating a configuration example of a shared distributed cache system. This shared distributed cache system has three cores (processors: processing devices) 101 to 103, three three-way
キャッシュ間接続コントローラ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情報である。
The
図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ビットになる。
FIG. 2 is a diagram showing details of the
コア101はコアAであり、キャッシュ111はキャッシュAである。コア102はコアBであり、キャッシュ112はキャッシュBである。コア103はコアCであり、キャッシュ113はキャッシュCである。
The
第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を保持する。
The
図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を下位階層キャッシュとしてアクセス可能なように構成される。
FIG. 3 is a diagram illustrating another configuration example of the shared distributed cache system. Hereinafter, the points of FIG. 3 different from FIG. 1 will be described. The shared distributed cache system includes six
キャッシュ間接続コントローラ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情報である。
The
図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の最古順を示す。グループの組み合わせは、任意に決めることができる。
FIG. 4 is a diagram showing details of the
第1のLRU情報121〜123,126を2項関係方式によりエンコードすると、それぞれ15ビットになる。第1のLRU情報124は、2個の他コアキャッシュグループx及びyの情報を有するので、2項関係方式によりエンコードすると10ビットになる。第1のLRU情報125は、キャッシュ115の2個のエントリa及びbの情報を有するので、2項関係方式によりエンコードすると10ビットになる。
When the
コア101はコアAであり、キャッシュ111はキャッシュAである。コア102はコアBであり、キャッシュ112はキャッシュBである。コア103はコアCであり、キャッシュ113はキャッシュCである。コア104はコアDであり、キャッシュ114はキャッシュDである。コア105はコアEであり、キャッシュ115はキャッシュEである。コア106はコアFであり、キャッシュ116はキャッシュFである。
The
第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ビットになり、コア数が多いときにはビット数を少なくできる効果が大きい。
The
図5は、共有分散キャッシュシステムにおけるデータロードアクセス動作を示すフローチャートである。以下、図1のシステムを例に説明する。ステップS1において、まず、複数のコア101〜103の何れか1つのコアが、自己に直接に接続されたキャッシュ(自コアキャッシュ)へロード要求を発行する。
FIG. 5 is a flowchart showing a data load access operation in the shared distributed cache system. Hereinafter, the system of FIG. 1 will be described as an example. In step S1, first, any one of the plurality of
ステップS2において、ロード要求を受け取ったキャッシュは、要求対象のデータがキャッシュ内に存在するか否か、すなわちキャッシュヒットであるか否かを判定する。キャッシュヒットである場合には、ステップS3において、自コアキャッシュから要求対象のデータを読み出して、ロード要求を発行したコアにデータを返送する。 In step S2, the cache that has received the load request determines whether or not the requested data exists in the cache, that is, whether or not it is a cache hit. If it is a cache hit, in step S3, the requested data is read from the own core cache, and the data is returned to the core that issued the load request.
ステップS2においてキャッシュミスである場合には、ステップS4に進む。このステップS4において、キャッシュミスが検出されたキャッシュの下に、下位階層キャッシュが存在するか否かを判定する。例えばステップS2においてキャッシュミスが検出されてステップS4に進んだ場合には、キャッシュミスが検出されたキャッシュはキャッシュ111〜113の何れか1つであるので、この場合、他の2つのキャッシュが下位階層キャッシュとして存在する。下位階層キャッシュが存在する場合には、ステップS5に進む。
If there is a cache miss in step S2, the process proceeds to step S4. In step S4, it is determined whether or not a lower hierarchy cache exists under the cache in which a cache miss is detected. For example, when a cache miss is detected in step S2 and the process proceeds to step S4, the cache in which the cache miss is detected is any one of the
ステップS5において、キャッシュ階層が1つ下の他コアキャッシュにアクセスする。ステップS6において、アクセス要求を受け取ったキャッシュは、要求対象のデータがキャッシュ内に存在するか否か、すなわちキャッシュヒットであるか否かを判定する。キャッシュミスである場合には、ステップS4に戻り、上記の処理を繰り返す。 In step S5, the cache hierarchy accesses the other core cache one level below. In step S6, the cache that has received the access request determines whether or not the requested data exists in the cache, that is, whether or not it is a cache hit. If it is a cache miss, the process returns to step S4 and the above processing is repeated.
ステップS6においてキャッシュヒットである場合には、ステップS7に進む。このステップS7において、キャッシュデータの交換処理を行う。すなわち、キャッシュヒットしたキャッシュからアクセス対象のキャッシュライン(アクセス対象のデータ)を自コアキャッシュに移動し、コアへデータを返送する。この際に、キャッシュラインの自コアキャッシュへの移動に伴い、自コアキャッシュから追い出されるキャッシュラインを他コアに移動する。ステップS7の詳細は、後に図6を参照しながら説明する。 If it is a cache hit in step S6, the process proceeds to step S7. In step S7, cache data exchange processing is performed. That is, the cache line to be accessed (data to be accessed) is moved from the cache hit to the own core cache, and the data is returned to the core. At this time, as the cache line moves to the own core cache, the cache line evicted from the own core cache is moved to another core. Details of step S7 will be described later with reference to FIG.
またステップS4において、下位階層キャッシュが存在しないと判定された場合には、ステップS8に進む。例えばステップS6においてキャッシュミスが検出されてステップS4に進んだ際に、このキャッシュミスが検出されたキャッシュが既に最下層のキャッシュであった場合、その下層にはメインメモリ130しか存在しない。このような場合には、ステップS8で、メインメモリ130から要求対象のデータを読み出し、自コアキャッシュにアロケート(1キャッシュライン分の要求対象のデータを自コアキャッシュにコピー)するとともに、ロード要求を発行したコアにデータを返送する。またこの動作に伴い自コアキャッシュから追い出されたキャッシュラインは、例えば下位階層キャッシュに移動される。ステップS8の詳細は、後に図10を参照しながら説明する。
If it is determined in step S4 that there is no lower hierarchy cache, the process proceeds to step S8. For example, when a cache miss is detected in step S6 and the process proceeds to step S4, if the cache in which this cache miss is detected is already the lowermost cache, only the
上記の動作フローにおいて、ステップS7はキャッシュとキャッシュとの間のデータ転送に関連する動作であり、ステップS8はメインメモリ130とキャッシュとの間のデータ転送に関連する動作である。
In the above operation flow, step S7 is an operation related to data transfer between the cache and the cache, and step S8 is an operation related to data transfer between the
図6は、図5のステップS7の交換処理を示すフローチャートである。まず、ステップA1では、図5のステップS6の判断により、下位階層キャッシュとして利用可能な他コアキャッシュにヒットしたと判断される。 FIG. 6 is a flowchart showing the exchange process in step S7 of FIG. First, in step A1, it is determined that another core cache that can be used as a lower hierarchy cache has been hit by the determination in step S6 of FIG.
次に、ステップA2では、キャッシュ間接続コントローラ120は判定処理を行う。すなわち、ヒットした他コアが所属するグループの自コアローカルの第1のLRU情報が最新であり、かつ、ヒットした他コアキャッシュの第1のLRU情報のエントリが最新でないことの条件を満たすか否かを判定する。条件を満たす場合にはステップA4に進み、条件を満たさない場合にはステップA7に進む。
Next, in step A2, the
ステップA4では、キャッシュ間接続コントローラ120は自コアキャッシュ及び他コアキャッシュ間で交換処理を行う。すなわち、自コアキャッシュの最古エントリと他コアキャッシュのヒットしたエントリを交換する。
In step A4, the
次に、ステップA5では、キャッシュ間接続コントローラ120はLRU更新処理を行う。すなわち、自コアの第1のLRU情報については自コアキャッシュの交換されたエントリを最新に更新し、他コアの第1のLRU情報については他コアキャッシュの交換されたエントリを最古に更新し、第2のLRU情報については自コアキャッシュが最新となるように更新する。その後、ステップA6に進み、処理を終了する。
Next, in step A5, the
ステップA7では、自コアはキャッシュ間接続コントローラ120を介して参照処理を行う。すなわち、他コアキャッシュのヒットしたエントリを直接参照する(読み出す)。
In step A7, the self-core performs a reference process via the
次に、ステップA3では、キャッシュ間接続コントローラ120はLRU更新処理を行う。すなわち、自コアの第1のLRU情報についてはヒットした他コアキャッシュが所属するグループを最新に更新し、他コアの第1のLRU情報についてはヒットした他コアキャッシュのエントリが最新であれば2番目に新しいものと交換するように更新し、第2のLRU情報についてはヒットした他コアキャッシュが最新となるように更新する。その後、ステップA6に進み、処理を終了する。
Next, in step A3, the
図7〜図9は、図1及び図2のシステムにおける図6の交換処理の例を示す図である。図7は、初期状態を示す。第1のLRU情報121〜123及び第2のLRU情報129は、0が最古であり、値が大きくなるほど新しいことを示す。
7 to 9 are diagrams illustrating an example of the exchange process of FIG. 6 in the system of FIGS. 1 and 2. FIG. 7 shows an initial state. The
まず、ステップA1において、自コアA(101)から他コアB(102)のキャッシュB(112)のエントリcにヒットした場合を説明する。 First, the case where the entry c of the cache B (112) of the other core B (102) is hit from the own core A (101) in step A1 will be described.
次に、ステップA2では、ヒットした他コアキャッシュB(112)が所属するグループxの自コアローカルの第1のLRU情報121が1であり、最新でないので、ステップA7に進む。ステップA7では、他コアキャッシュB(112)のヒットしたエントリcを直接参照する。
Next, in step A2, the
次に、ステップ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に進み、処理を終了する。
Next, in step A3, as shown in FIG. 8, for the
次に、ステップA1において、再度、自コアA(101)から他コアB(102)のキャッシュB(112)のエントリcにヒットした場合を説明する。 Next, the case where the entry c of the cache B (112) of the other core B (102) is hit again from the own core A (101) in step A1 will be described.
次に、ステップA2では、ヒットした他コアキャッシュB(112)が所属するグループxの自コアローカルの第1のLRU情報121が最新(値「3」)であり、かつ、ヒットした他コアキャッシュB(112)の第1のLRU情報122のエントリcが最新でない(値「2」)ので、ステップA4に進む。ステップA4では、自コアキャッシュA(111)の最古エントリbと他コアキャッシュB(112)のヒットしたエントリcを交換する。
Next, in Step A2, the
次に、ステップA5では、図9に示すように、自コアA(101)の第1のLRU情報121については自コアキャッシュA(111)の交換されたエントリbを最新に更新し、他コアB(102)の第1のLRU情報122については他コアキャッシュB(112)の交換されたエントリcを最古に更新し、第2のLRU情報129については自コアキャッシュA(111)が最新となるように更新する。その後、ステップA6に進み、処理を終了する。
Next, in step A5, as shown in FIG. 9, for the
以上のように、第1回目に他コアキャッシュBのエントリcにヒットした場合には、交換処理を行わず、第2回目に他コアキャッシュBのエントリcにヒットした場合に交換処理行うことにより、無駄な交換処理をなくし、トラフィックを減少させることができる。すなわち、自コアAが連続してアクセスし、かつ、ヒットした他コアキャッシュBで現在あまり使っていないエントリcのみ交換することにより、効率的な交換処理を行うことができる。 As described above, when the entry c of the other core cache B is hit at the first time, the replacement process is not performed, and when the entry c of the other core cache B is hit at the second time, the replacement process is performed. , Useless exchange processing can be eliminated and traffic can be reduced. In other words, efficient exchange processing can be performed by exchanging only the entry c that is continuously accessed by the own core A and that is currently not frequently used in the hit other core cache B.
図10は、図5のステップS8の追い出し処理を示すフローチャートである。まず、ステップB1では、図5のステップS4の判断により、下位階層キャッシュとして利用可能な他コアキャッシュに全てミスしたと判断される。 FIG. 10 is a flowchart showing the eviction process in step S8 of FIG. First, in step B1, it is determined that all other core caches that can be used as the lower hierarchy cache have missed by the determination in step S4 of FIG.
次に、ステップB2では、キャッシュ間接続コントローラ120は判定処理を行う。すなわち、第2のLRU情報を参照し、自コアが最近そのインデックスのエントリを最も使っていないコアでないことの条件を満たすか否かを判定する。条件を満たす場合にはステップB4に進み、条件を満たさない場合にはステップB7に進む。
Next, in step B2, the
ステップB4では、キャッシュ間接続コントローラ120は自コアキャッシュから他コアキャッシュへ追い出し処理を行う。すなわち、最近最も使われていない他コアキャッシュの最古エントリに自コアキャッシュの最古エントリ(他コアグループ用エントリを含まないものの中で最古エントリ)を移動する。
In step B4, the
次に、ステップB5では、キャッシュ間接続コントローラ120はLRU更新処理を行う。すなわち、自コアの第1のLRU情報については自コアキャッシュの最古エントリを最新に更新し、他コアの第1のLRU情報については追い出し先の他コアキャッシュの最古エントリを最新に更新し、第2のLRU情報については自コアキャッシュが最新に、追い出し先の他コアキャッシュを2番目に新しいものとなるように更新する。その後、ステップB6に進む。
Next, in step B5, the
ステップB7では、キャッシュ間接続コントローラ120は破棄処理を行う。すなわち、自コアキャッシュの最古エントリを破棄する。具体的には、このステップでは何も処理せず、後のステップB6の上書き処理により自コアキャッシュの最古エントリが破棄される。
In step B7, the
次に、ステップB3では、キャッシュ間接続コントローラ120はLRU更新処理を行う。すなわち、自コアの第1のLRU情報については自コアキャッシュの最古エントリを最新に更新し、第2のLRU情報については自コアキャッシュが最新になるように更新する。その後、ステップB6に進む。
Next, in step B3, the
ステップB6では、キャッシュ間接続コントローラ120は自コアキャッシュの最古エントリ(LRU情報更新後の最新エントリ)にメインメモリ130から読み出したデータを上書きし、自コアはそのデータを取得する。以上で、処理を終了する。
In Step B6, the
図11〜図13は、図1及び図2のシステムにおける図10の追い出し処理の例を示す図である。図11は、初期状態を示す。第1のLRU情報121〜123及び第2のLRU情報129は、0が最古であり、値が大きくなるほど新しいことを示す。
11 to 13 are diagrams illustrating an example of the eviction process of FIG. 10 in the system of FIGS. 1 and 2. FIG. 11 shows an initial state. The
まず、ステップB1において、自コアA(101)のアクセスが全ての他コアキャッシュでミスした場合を説明する。 First, in step B1, the case where the access of the own core A (101) misses in all other core caches will be described.
次に、ステップB2では、第2のLRU情報129を参照すると、自コアキャッシュA(111)が最近最も使っていないので、ステップB7を介してステップB3に進む。
Next, in step B2, when referring to the
ステップB3では、図12に示すように、自コアA(101)の第1のLRU情報121については自コアキャッシュA(111)の最古エントリbを最新に更新し、第2のLRU情報129については自コアキャッシュAが最新になるように更新する。
In step B3, as shown in FIG. 12, for the
次に、ステップB6では、自コアキャッシュA(111)の最古エントリ(LRU情報更新後の最新エントリ)bにメインメモリ130から読み出したデータを上書きする。以上で処理を終了する。
Next, in step B6, the data read from the
次に、ステップB1において、再度、自コアA(101)のアクセスが全ての他コアキャッシュでミスした場合を説明する。 Next, the case where the access of the own core A (101) misses in all other core caches again in step B1 will be described.
次に、ステップB2では、第2のLRU情報129を参照すると、他コアキャッシュC(113)が最近最も使っていないので、ステップB4に進む。
Next, in step B2, referring to the
ステップB4では、最近最も使われていない他コアキャッシュC(113)の最古エントリbに自コアキャッシュA(111)の最古エントリ(他コアグループ用エントリを含まないものの中で最古エントリ)aを移動する。 In step B4, the oldest entry b of the own core cache A (111) is included in the oldest entry b of the other core cache C (113) that has not been used most recently (the oldest entry among those not including the other core group entry). Move 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番目に新しいものとなるように更新する。
Next, in step B5, as shown in FIG. 13, for the
次に、ステップB6では、自コアキャッシュA(111)の最古エントリ(LRU情報更新後の最新エントリ)aにメインメモリ130から読み出したデータを上書きする。以上で処理を終了する。
Next, in step B6, the data read from the
以上のように、第1回目に全ての他コアキャッシュでミスした場合には、追い出し処理を行わず、第2回目に全ての他コアキャッシュでミスした場合に追い出し処理行うことにより、無駄な追い出し処理をなくし、トラフィックを減少させることができる。すなわち、自コアAが連続してキャッシュミスし、かつ、他コアキャッシュが最古であるときのみ追い出し処理することにより、効率的な追い出し処理を行うことができる。 As described above, if all other core caches miss in the first time, the eviction process is not performed, and if the other core cache misses in the second time, the eviction process is performed, so that unnecessary eviction is performed. Processing can be eliminated and traffic can be reduced. In other words, efficient eviction processing can be performed by performing eviction processing only when the own core A continuously misses the cache and the other core cache is the oldest.
第2のLRU情報129は最新のアクセスのみしか保持していないが、完全な最古順を保持しても構わない。最新のアクセスのみしか保持しない理由は、ビット数削減のためである。また、第2のLRU情報129の更新時に追い出し先コアを2番目に新しいものに更新して、追い出し先を持ち回りすることで、完全な最古順を保持した場合に比べた性能低下を抑えられる。
The
図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の通信を制御する。
FIG. 14 is a diagram showing a configuration example of the shared distributed cache system according to the embodiment of the present invention. Hereinafter, the points of FIG. 14 different from FIG. 1 will be described. The
送信バッファA(1401)及び受信バッファA(1411)は、キャッシュA(111)内に設けられる。送信バッファ1401は、キャッシュ111内のデータをキャッシュ間接続ネットワーク1425を介してキャッシュ112又は113に送信するためのバッファである。受信バッファ1411は、キャッシュ112又は113内のデータをキャッシュ間接続ネットワーク1425を介してキャッシュ111に受信するためのバッファである。
The transmission buffer A (1401) and the reception buffer A (1411) are provided in the cache A (111). The
送信バッファB(1402)及び受信バッファB(1412)は、キャッシュB(112)内に設けられる。送信バッファ1402は、キャッシュ112内のデータをキャッシュ間接続ネットワーク1425を介してキャッシュ111又は113に送信するためのバッファである。受信バッファ1412は、キャッシュ111又は113内のデータをキャッシュ間接続ネットワーク1425を介してキャッシュ112に受信するためのバッファである。
The transmission buffer B (1402) and the reception buffer B (1412) are provided in the cache B (112). The
送信バッファC(1403)及び受信バッファC(1413)は、キャッシュC(113)内に設けられる。送信バッファ1403は、キャッシュ113内のデータをキャッシュ間接続ネットワーク1425を介してキャッシュ111又は112に送信するためのバッファである。受信バッファ1413は、キャッシュ111又は112内のデータをキャッシュ間接続ネットワーク1425を介してキャッシュ113に受信するためのバッファである。
The transmission buffer C (1403) and the reception buffer C (1413) are provided in the cache C (113). The
送受信バッファ情報1423は、送信バッファ1401、受信バッファ1411、送信バッファ1402、受信バッファ1412、送信バッファ1403及び受信バッファ1413の各バッファが閾値を超えて埋まっているか否かを示す使用量情報である。
The transmission /
図15は図14のキャッシュシステムにおける図5のステップS7の交換処理を示すフローチャートであり、図16は図15のステップC13の玉突き処理の例を示す図であり、図17は図15のステップC11の移動処理の例を示す図である。 FIG. 15 is a flowchart showing the exchange process of step S7 of FIG. 5 in the cache system of FIG. 14, FIG. 16 is a diagram showing an example of the ball hitting process of step C13 of FIG. 15, and FIG. 17 is step C11 of FIG. It is a figure which shows the example of this movement process.
まず、ステップC1では、図5のステップS6の判断により、下位階層キャッシュとして利用可能な他コアキャッシュにヒットしたと判断される。 First, in step C1, it is determined that another core cache that can be used as a lower hierarchy cache has been hit by the determination in step S6 of FIG.
次に、ステップC2では、図6のステップA2と同様に、判定回路1424はLRU判定処理を行う。すなわち、ヒットした他コアが所属するグループの自コアローカルの第1のLRU情報が最新であり、かつ、ヒットした他コアキャッシュの第1のLRU情報のエントリが最新でないことの条件を満たすか否かを判定する。条件を満たす場合にはステップC8に進み、条件を満たさない場合にはステップC7に進む。
Next, in step C2, as in step A2 of FIG. 6, the
ステップC8では、判定回路1424は第1のバッファ判定処理を行う。すなわち、ヒットした他コアキャッシュから自コアキャッシュへのバッファが閾値を越えて埋まっているか否かを判定する。例えば、ヒットした他コアバッファ112から自コアバッファ111へのデータ転送を行うため、送受信バッファ情報1423を参照し、他コアバッファ112の送信バッファ1402又は自コアバッファ111の受信バッファ1411が閾値を越えて埋まっているか否かを判定する。送信バッファ1402又は受信バッファ1411の少なくともいずれかが埋まっていればステップC7に進み、送信バッファ1402及び受信バッファ1411の両方が埋まっていなければステップC9へ進む。
In step C8, the
ステップC7では、図6のステップA7と同様に、自コアはキャッシュ間接続ネットワーク1425を介して参照処理を行う。すなわち、他コアキャッシュのヒットしたエントリを直接参照する(読み出す)。
In step C7, the own core performs a reference process via the
次に、ステップC3では、図6のステップA3と同様に、キャッシュシステムはLRU更新処理を行う。すなわち、自コアの第1のLRU情報についてはヒットした他コアが所属するグループを最新に更新し、他コアの第1のLRU情報についてはヒットした他コアのエントリが最新であれば2番目に新しいものと交換するように更新し、第2のLRU情報についてはヒットした他コアキャッシュが最新となるように更新する。その後、ステップC6に進み、処理を終了する。 Next, in step C3, the cache system performs LRU update processing as in step A3 of FIG. That is, for the first LRU information of the own core, the group to which the hit other core belongs is updated to the latest, and for the first LRU information of the other core, the second is the second if the entry of the hit other core is the latest. The second LRU information is updated so that it is replaced with a new one, and the other core cache that has been hit is updated so as to be the latest. Then, it progresses to step C6 and complete | finishes a process.
ステップC9では、判定回路1424は第2のバッファ判定処理を行う。すなわち、自コアキャッシュからヒットした他コアキャッシュへのバッファが閾値を越えて埋まっているか否かを判定する。例えば、自コアバッファ111からヒットした他コアバッファ112へのデータ転送を行うため、送受信バッファ情報1423を参照し、自コアバッファ111の送信バッファ1401又は他コアバッファ112の受信バッファ1412が閾値を越えて埋まっているか否かを判定する。送信バッファ1401又は受信バッファ1412の少なくともいずれかが埋まっていれば交換処理ができないためステップC10に進み、送信バッファ1401及び受信バッファ1412の両方が埋まっていなければ交換処理可能であるためステップC4へ進む。
In step C9, the
ステップC4では、図6のステップA4と同様に、キャッシュシステムは自コアキャッシュ及び他コアキャッシュ間で交換処理を行う。例えば、図16及び図17に示すように、自コアキャッシュ111の最古エントリbと他コアキャッシュ112のヒットしたエントリcを交換する。すなわち、データ転送処理1611により、他コアキャッシュ112のヒットエントリcのデータは自コアキャッシュ111の最古エントリbに移動され、データ転送処理1612により、自コアキャッシュ111の最古エントリbのデータは他コアキャッシュ112のヒットエントリcに移動される。
In step C4, as in step A4 of FIG. 6, the cache system performs an exchange process between the own core cache and the other core cache. For example, as shown in FIGS. 16 and 17, the oldest entry b in the
次に、ステップC5では、図6のステップA5と同様に、キャッシュシステムはLRU更新処理を行う。すなわち、自コアの第1のLRU情報については自コアの交換されたエントリを最新に更新し、他コアの第1のLRU情報については他コアの交換されたエントリを最古に更新し、第2のLRU情報については自コアキャッシュが最新となるように更新する。その後、ステップC6に進み、処理を終了する。 Next, in step C5, as in step A5 of FIG. 6, the cache system performs LRU update processing. That is, for the first LRU information of the own core, the exchanged entry of the own core is updated to the latest, for the first LRU information of the other core, the exchanged entry of the other core is updated to the oldest, The LRU information of 2 is updated so that the own core cache becomes the latest. Then, it progresses to step C6 and complete | finishes a process.
ステップC10では、判定回路1424は第3のバッファ判定処理を行う。すなわち、LRU情報1422及び送受信バッファ情報1423を参照することにより、自コアのバッファが最古であり、又は、自コアのバッファから最古コアのバッファへの送受信バッファが閾値を越えて埋まっているか否かを判定する。自コアのバッファが最古であるときには、玉突き処理(ステップC13)を行う必要がないので、ステップC11へ進む。自コアのバッファから最古コアのバッファへの送受信バッファが閾値を越えて埋まっているときには、玉突き処理(ステップC13)を行うことができないので、ステップC11に進む。自コアのバッファが最古でなく、かつ、自コアのバッファから最古コアのバッファへの送受信バッファが閾値を越えて埋まっていないときには、玉突き処理を行うためにステップC13に進む。
In step C10, the
ステップ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を基に判断することができる。
In step C13, the cache system performs a ball hitting process. That is, as shown in FIG. 16, the
図16に示すように、ヒットした他コアキャッシュ112から自コアキャッシュ111への通信パス1601の送信バッファ1402及び受信バッファ1411が閾値を越えて埋まっておらず、かつ、自コアキャッシュ111からヒットした他コアキャッシュ112への通信パス1602の送信バッファ1401及び受信バッファ1412が閾値を越えて埋まっており、かつ、自コアキャッシュ111から最古コアキャッシュ113への通信パス1603の送信バッファ1401及び受信バッファ1413が閾値を越えて埋まっていないときには、交換処理(ステップC4)1611及び1612ができないので、上記の玉突き処理(ステップC13)1611及び1613を行う。
As shown in FIG. 16, the
次に、ステップC14では、キャッシュシステムはLRU更新処理を行う。すなわち、自コアの第1のLRU情報については自コアキャッシュの最古エントリを最新に更新し、最古の他コアの第1のLRU情報については最古エントリを最新に更新し、第2のLRU情報については自コアキャッシュが最新、最古の他コアが2番目に新しい順番となるように更新する。その後、ステップC6に進み、処理を終了する。 Next, in step C14, the cache system performs LRU update processing. That is, the oldest entry of the own core cache is updated to the latest for the first LRU information of the own core, the oldest entry is updated to the latest for the first LRU information of the oldest other core, and the second The LRU information is updated so that the own core cache is the latest and the oldest other core is the second most recent. Then, it progresses to step C6 and complete | finishes a process.
ステップC11では、キャッシュシステムは移動処理を行う。すなわち、図17に示すように、データ転送処理1611により、自コア101のキャッシュ111の最古エントリbに他コア102のキャッシュ112のヒットしたエントリcを上書きし、該他コア102のキャッシュ112のヒットしたエントリcを無効化する。上記の上書きにより、自コアキャッシュ111の最古エントリbの元のキャッシュラインは破棄処理1614される。
In step C11, the cache system performs migration processing. That is, as shown in FIG. 17, the
以上のように、ヒットした他コアキャッシュ112から自コアキャッシュ111への通信パス1601の送信バッファ1402及び受信バッファ1411が閾値を越えて埋まっておらず、かつ、自コアキャッシュ111からヒットした他コアキャッシュ112への通信パス1602の送信バッファ1401及び受信バッファ1412が閾値を越えて埋まっており、かつ、自コアキャッシュ111から最古コアキャッシュ113への通信パス1603の送信バッファ1401及び受信バッファ1413が閾値を越えて埋まっているときには、交換処理(ステップC4)1611,1612及び玉突き処理(ステップC13)ができないので、上記の移動処理(ステップC11)1611及び1614を行う。
As described above, the
次に、ステップC12では、キャッシュシステムはLRU更新処理を行う。すなわち、自コアの第1のLRU情報については自コアキャッシュの最古エントリを最新に更新し、第2のLRU情報については自コアのキャッシュを最新の順番に更新する。その後、ステップC6に進み、処理を終了する。 Next, in step C12, the cache system performs LRU update processing. That is, the oldest entry of the own core cache is updated to the latest for the first LRU information of the own core, and the cache of the own core is updated to the latest order for the second LRU information. Then, it progresses to step C6 and complete | finishes a process.
なお、ステップC10において、自コアキャッシュが最古でなく、かつ、自コアキャッシュから最古コアキャッシュへの送受信バッファが閾値を越えて埋まっていると判断された場合には、自コアキャッシュから2番目に古いキャッシュへの送受信バッファが閾値を越えて埋まっているか否かを判定してもよい。埋まっていない場合には、自コアのキャッシュの最古エントリを2番目に古いコアキャッシュの最古エントリに上書きし、自コアキャッシュの最古エントリに他コアキャッシュのヒットしたエントリを上書きし、該他コアキャッシュのヒットエントリを無効化する。埋まっている場合には、さらに、自コアキャッシュから3番目に古いキャッシュへの送受信バッファが閾値を越えて埋まっているか否かを判定し、上記と同様に、3、4、・・・番目に古いコアキャッシュを順次玉突き処理の対象にしてもよい。 In step C10, if it is determined that the own core cache is not the oldest and the transmission / reception buffer from the own core cache to the oldest core cache is filled beyond the threshold, 2 from the own core cache. It may be determined whether the transmission / reception buffer for the second oldest cache is filled beyond the threshold. If not, the oldest entry in the own core cache is overwritten with the oldest entry in the second oldest core cache, the oldest entry in the own core cache is overwritten with the hit entry in the other core cache, Invalidate hit entries in other core caches. If it is filled, it is further determined whether the transmission / reception buffer from the own core cache to the third oldest cache is filled beyond the threshold, and the third, fourth,... Old core caches may be sequentially subjected to the ball hitting process.
以上のように、本実施形態は、交換処理を行う際には、LRU判定処理(ステップC2)の他に、送受信バッファ判定処理(ステップC8〜C10)を行う。図15では、図6に対して、玉突き処理(ステップC13)及び移動処理(ステップC11)が追加されている。LRU判定処理(ステップC2)でステップC8に進む場合、送受信バッファ(例えば送信バッファ1401及び受信バッファ1412)の埋まり具合に応じて、参照処理(ステップC7)、交換処理(ステップC4)、玉突き処理(ステップC13)又は移動処理(ステップC11)を行う。これにより、トラフィックを低減することができる。
As described above, according to the present embodiment, when performing the exchange process, in addition to the LRU determination process (step C2), the transmission / reception buffer determination process (steps C8 to C10) is performed. In FIG. 15, a ball hitting process (step C13) and a moving process (step C11) are added to FIG. When the process proceeds to step C8 in the LRU determination process (step C2), the reference process (step C7), the exchange process (step C4), and the ball hitting process (step S4) are performed depending on how the transmission / reception buffers (for example, the
図18は図14のキャッシュシステムにおける図5のステップS8の追い出し処理を示すフローチャートであり、図19は図18のステップD10の次候補への追い出し処理の例を示す図である。 18 is a flowchart showing the eviction process in step S8 of FIG. 5 in the cache system of FIG. 14, and FIG. 19 is a diagram showing an example of the eviction process to the next candidate in step D10 of FIG.
まず、ステップD1では、図5のステップS4の判断により、下位階層キャッシュとして利用可能な他コアキャッシュに全てミスしたと判断される。 First, in step D1, it is determined that all other core caches that can be used as the lower hierarchy cache have missed by the determination in step S4 of FIG.
次に、ステップD2では、図10のステップB2と同様に、判定回路1424はLRU判定処理を行う。すなわち、第2のLRU情報を参照し、自コアが最近そのインデックスのエントリを最も使っていないコアでないことの条件を満たすか否かを判定する。条件を満たす場合にはステップD8に進み、条件を満たさない場合にはステップD7に進む。
Next, in step D2, as in step B2 of FIG. 10, the
ステップD8では、判定回路1424は第1のバッファ判定処理を行う。すなわち、自コアのバッファから最古コアのバッファへの送受信バッファが閾値を越えて埋まっているか否かを判定する。例えば、図19において、自コア101のバッファ111から最古コア102のバッファ112への通信パス1901の送信バッファ1401又は受信バッファ1412が閾値を越えて埋まっているか否かを判定する。送信バッファ1401又は受信バッファ1412が閾値を越えて埋まっているときにはステップD9へ進み、送信バッファ1401及び受信バッファ1412が閾値を越えて埋まっていないときにはステップD4へ進む。
In step D8, the
ステップD4では、図10のステップB4と同様に、キャッシュシステムは自コアキャッシュから他コアキャッシュへ追い出し処理を行う。すなわち、図19に示すように、データ転送処理1912により、最近最も使われていない他コアキャッシュ112の最古エントリcに自コアキャッシュ111の最古エントリ(他コアグループ用エントリを含まないものの中で最古エントリ)bを移動する。
In step D4, as in step B4 of FIG. 10, the cache system performs eviction processing from its own core cache to another core cache. That is, as shown in FIG. 19, the
次に、ステップD5では、図10のステップB5と同様に、キャッシュシステムはLRU更新処理を行う。すなわち、自コアの第1のLRU情報については自コアキャッシュの最古エントリを最新に更新し、他コアの第1のLRU情報については追い出し先の他コアキャッシュの最古エントリを最新に更新し、第2のLRU情報については自コアキャッシュが最新に、追い出し先の他コアキャッシュが2番目に新しい順番となるように更新する。その後、ステップD6に進む。 Next, in step D5, the cache system performs LRU update processing as in step B5 of FIG. That is, the oldest entry of the own core cache is updated to the latest for the first LRU information of the own core, and the oldest entry of the other core cache to be evicted is updated to the latest for the first LRU information of the other core. The second LRU information is updated so that the own core cache is in the latest order and the other core cache in the eviction destination is in the second most recent order. Thereafter, the process proceeds to Step D6.
ステップD9では、判定回路1424は第2のバッファ判定処理を行う。すなわち、自コアのキャッシュから2番目に古いコアのキャッシュへの送受信バッファが閾値を越えて埋まっているか否かを判定する。例えば、図19において、自コア101のキャッシュ111から2番目に古いコア103のキャッシュ113への通信パス1902の送信バッファ1401又は受信バッファ1413が閾値を越えて埋まっているか否かを判定する。送信バッファ1401又は受信バッファ1413が閾値を越えて埋まっているときにはステップD7へ進み、送信バッファ1401及び受信バッファ1413が閾値を越えて埋まっていないときにはステップD10へ進む。
In step D9, the
ステップD7では、図10のステップB7と同様に、キャッシュシステムは破棄処理を行う。すなわち、自コアキャッシュの最古エントリを破棄する。具体的には、このステップでは何も処理せず、後のステップD6の上書き処理により自コアキャッシュの最古エントリが破棄される。 In step D7, as in step B7 of FIG. 10, the cache system performs a discard process. That is, the oldest entry in the own core cache is discarded. Specifically, nothing is processed in this step, and the oldest entry in the own core cache is discarded by the overwrite process in the subsequent step D6.
次に、ステップD3では、図10のステップB3と同様に、キャッシュシステムはLRU更新処理を行う。すなわち、自コアの第1のLRU情報については自コアキャッシュの最古エントリを最新に更新し、第2のLRU情報については自コアキャッシュが最新になるように更新する。その後、ステップD6に進む。 Next, in step D3, the cache system performs LRU update processing as in step B3 of FIG. That is, for the first LRU information of the own core, the oldest entry in the own core cache is updated to the latest, and the second LRU information is updated to be the latest. Thereafter, the process proceeds to Step D6.
ステップD10では、キャッシュシステムは次候補への追い出し処理を行う。すなわち、図19に示すように、データ転送処理1913により、2番目に古いコアキャッシュ113の最古エントリcに自コアキャッシュ111の最古エントリ(他コアグループ用エントリを含まないものの中で最古)bを移動する。
In step D10, the cache system performs an eviction process for the next candidate. That is, as shown in FIG. 19, the
次に、ステップD11では、キャッシュシステムはLRU更新処理を行う。すなわち、自コアの第1のLRU情報については自コアキャッシュの最古エントリを最新に更新し、2番目に古いコア(追い出し先コア)の第1のLRU情報については最古エントリを最新に更新し、第2のLRU情報については自コアキャッシュを最新に、2番目に古いコア(追い出し先コア)を2番目に新しい順番に更新する。その後、ステップD6に進む。 Next, in step D11, the cache system performs LRU update processing. That is, the oldest entry of the own core cache is updated to the latest for the first LRU information of the own core, and the oldest entry is updated to the latest for the first LRU information of the second oldest core (ejecting destination core). For the second LRU information, the local core cache is updated to the latest, and the second oldest core (ejecting destination core) is updated to the second newest. Thereafter, the process proceeds to Step D6.
ステップD6では、図10のステップB6と同様に、図19に示すように、自コア101は、データ読み出し処理1911により、自コアキャッシュ111の最古エントリ(LRU情報更新後の最新エントリ)bにメインメモリ(又は2次キャッシュ)130から読み出したデータを上書きすると共に、そのデータを取得する。以上で、処理を終了する。
In step D6, as in step B6 of FIG. 10, as shown in FIG. 19, the
なお、ステップD9において、自コアキャッシュから2番目に古いコアキャッシュへの送受信バッファが閾値を越えて埋まっていると判断された場合には、自コアキャッシュから3番目に古いコアキャッシュへの送受信バッファが閾値を越えて埋まっているか否かを判定してもよい。埋まっていない場合には、自コアのキャッシュの最古エントリを3番目に古いコアキャッシュの最古エントリに上書きし、自コアキャッシュの最古エントリに他コアキャッシュのヒットしたエントリを上書きし、該他コアキャッシュのヒットエントリを無効化する。埋まっている場合には、さらに、自コアキャッシュから4番目に古いコアキャッシュへの送受信バッファが閾値を越えて埋まっているか否かを判定し、上記と同様に、4、5、・・・番目に古いコアキャッシュを順次追い出し処理の対象にしてもよい。 When it is determined in step D9 that the transmission / reception buffer from the own core cache to the second oldest core cache is filled beyond the threshold, the transmission / reception buffer from the own core cache to the third oldest core cache is determined. It may be determined whether or not is buried beyond the threshold. If it is not filled, the oldest entry in the own core cache is overwritten with the oldest entry in the third oldest core cache, the oldest entry in the own core cache is overwritten with the hit entry in the other core cache, Invalidate hit entries in other core caches. If it is filled, it is further determined whether or not the transmission / reception buffer from the own core cache to the fourth oldest core cache exceeds the threshold, and the fourth, fifth,... Alternatively, older core caches may be sequentially targeted for eviction processing.
以上のように、本実施形態は、追い出し処理を行う際には、LRU判定処理(ステップD2)の他に、送受信バッファ判定処理(ステップD8及びD9)を行う。図18では、図10に対して、次候補への追い出し処理(ステップD10)が追加されている。LRU判定処理(ステップD2)でステップD8に進む場合、送受信バッファ(例えば送信バッファ1401及び受信バッファ1412)の埋まり具合に応じて、破棄処理(ステップD7)、追い出し処理(ステップD4)又は次候補への追い出し処理(ステップD10)を行う。これにより、トラフィックを低減することができる。
As described above, in the present embodiment, when the eviction process is performed, the transmission / reception buffer determination process (steps D8 and D9) is performed in addition to the LRU determination process (step D2). In FIG. 18, a process of evicting to the next candidate (step D10) is added to FIG. When the process proceeds to step D8 in the LRU determination process (step D2), the discard process (step D7), the eviction process (step D4), or the next candidate is selected depending on how the transmission / reception buffers (for example, the
図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を分散させたものである。
FIG. 20 is a diagram showing a configuration example of a shared distributed cache system according to another embodiment of the present invention. Hereinafter, the points of FIG. 20 different from FIG. 14 will be described. In FIG. 14, the
情報メモリ1421aは、キャッシュ111内に設けられ、LRU情報1422a及び送受信バッファ情報1423aを記憶する。LRU情報1422aは、図1の第1のLRU情報121に対応する。送受信バッファ情報1423aは、送信バッファ1401及び受信バッファ1411の各バッファが閾値を越えて埋まっているか否かの情報である。
The
情報メモリ1421bは、キャッシュ112内に設けられ、LRU情報1422b及び送受信バッファ情報1423bを記憶する。LRU情報1422bは、図1の第1のLRU情報122に対応する。送受信バッファ情報1423bは、送信バッファ1402及び受信バッファ1412の各バッファが閾値を越えて埋まっているか否かの情報である。
The
情報メモリ1421cは、キャッシュ113内に設けられ、LRU情報1422c及び送受信バッファ情報1423cを記憶する。LRU情報1422cは、図1の第1のLRU情報123に対応する。送受信バッファ情報1423cは、送信バッファ1403及び受信バッファ1413の各バッファが閾値を越えて埋まっているか否かの情報である。
The
図1の第2のLRU情報129は、判定回路1424内に記憶させてもよいし、キャッシュ111〜113内に記憶させてもよい。図20のキャッシュシステムの動作は、図14のキャッシュシステムと同様である。
The
以上のように、本実施形態は、エントリ(キャッシュライン)移動の判定をLRU情報の他、トラフィックの状態を直接知ることができる送受信バッファ情報を基にエントリの移動判定を行うことにより、トラフィックを直接的に低減することができる。 As described above, in this embodiment, the determination of entry (cache line) movement is performed by performing entry movement determination based on transmission / reception buffer information that can directly know the traffic state in addition to LRU information. It can be reduced directly.
本実施形態は、複数の処理装置(コア)101〜103と、前記複数の処理装置101〜103に一対一に接続された複数のキャッシュ111〜113と、前記複数のキャッシュ111〜113に接続され、前記複数のキャッシュ111〜113間のデータ通信を行うネットワーク1425と、前記キャッシュ111〜113毎に設けられ、前記キャッシュ111〜113が前記ネットワーク1425に対してデータ通信するための複数のバッファ1401〜1403,1411〜1413とを有する。前記処理装置が要求したデータが、一のキャッシュでミスした場合、前記複数のバッファの状態(送受信バッファ情報)1423に応じて、前記キャッシュが前記ネットワークを介してデータ通信する。
In the present embodiment, a plurality of processing devices (cores) 101 to 103, a plurality of
前記処理装置が要求したデータが、一のキャッシュでミスし(図5のステップS2)、他のキャッシュでヒットした場合(図5のステップS6)に、前記ヒットした他のキャッシュから前記一のキャッシュへデータを送信するための前記バッファに所定量データが存在せず(図15のステップC8)、かつ、前記一のキャッシュから前記ヒットした他のキャッシュへデータを送信するための前記バッファに所定量データが存在しないとき(図15のステップC9)には、前記一のキャッシュのエントリ及び前記ヒットした他のキャッシュのエントリを交換する(図15のステップC4)。 When the data requested by the processing device misses in one cache (step S2 in FIG. 5) and hits in another cache (step S6 in FIG. 5), the one cache is transferred from the other hit cache. There is no predetermined amount of data in the buffer for transmitting data to (step C8 in FIG. 15), and the predetermined amount of data in the buffer for transmitting data from the one cache to the other hit cache When there is no data (step C9 in FIG. 15), the entry in the one cache and the entry in the other hit cache are exchanged (step C4 in FIG. 15).
また、前記処理装置が要求したデータが、一のキャッシュでミスし(図5のステップS2)、他のキャッシュでヒットした場合(図5のステップS6)に、前記ヒットした他のキャッシュから前記一のキャッシュへデータを送信するための前記バッファに所定量データが存在するとき(図15のステップC8)には、前記要求した処理装置は前記ヒットした他のキャッシュのデータを参照する(図15のステップC7)。 In addition, when the data requested by the processing device misses in one cache (step S2 in FIG. 5) and hits in another cache (step S6 in FIG. 5), the data from the other cache hit becomes the one. When a predetermined amount of data exists in the buffer for transmitting data to the cache (step C8 in FIG. 15), the requested processing device refers to the data in the other cache hit (in FIG. 15). Step C7).
また、前記処理装置が要求したデータが、一のキャッシュでミスし(図5のステップS2)、他のキャッシュでヒットした場合(図5のステップS6)に、前記ヒットした他のキャッシュから前記一のキャッシュへデータを送信するための前記バッファに所定量データが存在せず(図15のステップC8)、かつ、前記一のキャッシュから前記ヒットした他のキャッシュへデータを送信するための前記バッファに所定量データが存在し(図15のステップC9)、かつ、前記複数のキャッシュの中で前記一のキャッシュが最も最近使用されていないとき(図15のステップC10)には、前記ヒットした他のキャッシュのエントリを前記一のキャッシュのエントリに上書きする(図15のステップC11)。 In addition, when the data requested by the processing device misses in one cache (step S2 in FIG. 5) and hits in another cache (step S6 in FIG. 5), the data from the other cache hit becomes the one. There is no predetermined amount of data in the buffer for transmitting data to the cache (step C8 in FIG. 15), and the buffer for transmitting data from the one cache to the other cache hit. When a predetermined amount of data exists (step C9 in FIG. 15) and the one cache is least recently used among the plurality of caches (step C10 in FIG. 15), the other hits The cache entry is overwritten with the one cache entry (step C11 in FIG. 15).
また、前記処理装置が要求したデータが、一のキャッシュでミスし(図5のステップS2)、他のキャッシュでヒットした場合(図5のステップS6)に、前記ヒットした他のキャッシュから前記一のキャッシュへデータを送信するための前記バッファに所定量データが存在せず(図15のステップC8)、かつ、前記一のキャッシュから前記ヒットした他のキャッシュへデータを送信するための前記バッファに所定量データが存在し(図15のステップC9)、かつ、前記複数のキャッシュの中で前記一のキャッシュが最も最近使用されていないものでなく(図15のステップC10)、かつ、前記一のキャッシュから前記複数のキャッシュの中で最も最近使用されていないキャッシュへデータを送信するための前記バッファに所定量データが存在しないとき(図15のステップC10)には、前記一のキャッシュのエントリを前記最も最近使用されていないキャッシュのエントリに上書きし、前記ヒットした他のキャッシュのエントリを前記一のキャッシュのエントリに上書きする(図15のステップC13)。 In addition, when the data requested by the processing device misses in one cache (step S2 in FIG. 5) and hits in another cache (step S6 in FIG. 5), the data from the other cache hit becomes the one. There is no predetermined amount of data in the buffer for transmitting data to the cache (step C8 in FIG. 15), and the buffer for transmitting data from the one cache to the other cache hit. There is a predetermined amount of data (step C9 in FIG. 15), and the one of the plurality of caches is not the least recently used (step C10 in FIG. 15). A predetermined amount of data is stored in the buffer for transmitting data from the cache to the least recently used cache of the plurality of caches. Is not present (step C10 in FIG. 15), the entry of the one cache is overwritten with the entry of the least recently used cache, and the entry of the other cache hit is the entry of the one cache. (Step C13 in FIG. 15).
また、前記処理装置が要求したデータが、一のキャッシュでミスし(図5のステップS2)、他のキャッシュでヒットした場合(図5のステップS6)に、前記ヒットした他のキャッシュから前記一のキャッシュへデータを送信するための前記バッファに所定量データが存在せず(図15のステップC8)、かつ、前記一のキャッシュから前記ヒットした他のキャッシュへデータを送信するための前記バッファに所定量データが存在し(図15のステップC9)、かつ、前記複数のキャッシュの中で前記一のキャッシュが最も最近使用されていないものでなく(図15のステップC10)、かつ、前記一のキャッシュから前記複数のキャッシュの中で最も最近使用されていないキャッシュへデータを送信するための前記バッファに所定量データが存在するとき(図15のステップC10)には、前記ヒットした他のキャッシュのエントリを前記一のキャッシュのエントリに上書きする(図15のステップC11)。 In addition, when the data requested by the processing device misses in one cache (step S2 in FIG. 5) and hits in another cache (step S6 in FIG. 5), the data from the other cache hit becomes the one. There is no predetermined amount of data in the buffer for transmitting data to the cache (step C8 in FIG. 15), and the buffer for transmitting data from the one cache to the other cache hit. There is a predetermined amount of data (step C9 in FIG. 15), and the one of the plurality of caches is not the least recently used (step C10 in FIG. 15). A predetermined amount of data is stored in the buffer for transmitting data from the cache to the least recently used cache of the plurality of caches. When but present in (step C10 in FIG. 15) overwrites the entry of other caches that the hit entry of said one cache (step C11 in FIG. 15).
また、前記処理装置が要求したデータが、一のキャッシュでミスし(図5のステップS2)、他のキャッシュでヒットした場合(図5のステップS6)に、前記ヒットした他のキャッシュから前記一のキャッシュへデータを送信するための前記バッファに所定量データが存在せず(図15のステップC8)、かつ、前記一のキャッシュから前記ヒットした他のキャッシュへデータを送信するための前記バッファに所定量データが存在し(図15のステップC9)、かつ、前記複数のキャッシュの中で前記一のキャッシュが最も最近使用されていないものでなく(図15のステップC10)、かつ、前記一のキャッシュから前記複数のキャッシュの中で最も最近使用されていないキャッシュへデータを送信するための前記バッファに所定量データが存在し(図15のステップC10)、かつ、前記一のキャッシュから前記複数のキャッシュの中で2番目に最近使用されていないキャッシュへデータを送信するための前記バッファに所定量データが存在しないときには、前記一のキャッシュのエントリを前記2番目に最近使用されていないキャッシュのエントリに上書きし、前記ヒットした他のキャッシュのエントリを前記一のキャッシュのエントリに上書きする。 In addition, when the data requested by the processing device misses in one cache (step S2 in FIG. 5) and hits in another cache (step S6 in FIG. 5), the data from the other cache hit becomes the one. There is no predetermined amount of data in the buffer for transmitting data to the cache (step C8 in FIG. 15), and the buffer for transmitting data from the one cache to the other cache hit. There is a predetermined amount of data (step C9 in FIG. 15), and the one of the plurality of caches is not the least recently used (step C10 in FIG. 15). A predetermined amount of data is stored in the buffer for transmitting data from the cache to the least recently used cache of the plurality of caches. (Step C10 in FIG. 15), and there is no predetermined amount of data in the buffer for transmitting data from the one cache to the second least recently used cache among the plurality of caches Sometimes, the one cache entry is overwritten with the second least recently used cache entry, and the other cache entry with the hit is overwritten with the one cache entry.
また、前記処理装置が要求したデータが、前記複数のキャッシュすべてでミスした場合(図5のステップS2、S4及びS6)に、前記要求した処理装置の一のキャッシュから前記複数のキャッシュの中で最も最近使用していないキャッシュへデータを送信するための前記バッファに所定量データが存在しないとき(図18のステップD8)には、前記一のキャッシュのエントリを前記最も最近使用していないキャッシュのエントリに移動し(図18のステップD4)、主記憶装置(メインメモリ)又は前記複数のキャッシュより下位階層のキャッシュ(2次キャッシュ)130から読み出したデータを前記移動した一のキャッシュのエントリに上書きする(図18のステップD6)。 In addition, when the data requested by the processing device misses in all of the plurality of caches (steps S2, S4, and S6 in FIG. 5), from one cache of the requested processing device to the plurality of caches. When the predetermined amount of data does not exist in the buffer for transmitting data to the least recently used cache (step D8 in FIG. 18), the entry of the one cache is stored in the least recently used cache. Move to the entry (step D4 in FIG. 18), and overwrite the data read from the main storage device (main memory) or the cache (secondary cache) 130 lower than the plurality of caches on the entry of the moved one cache. (Step D6 in FIG. 18).
また、前記処理装置が要求したデータが、前記複数のキャッシュすべてでミスした場合(図5のステップS2、S4及びS6)に、前記要求した処理装置の一のキャッシュから前記複数のキャッシュの中で最も最近使用していないキャッシュへデータを送信するための前記バッファに所定量データが存在し(図18のステップD8)、かつ、前記一のキャッシュから前記複数のキャッシュの中で2番目に最近使用していないキャッシュへデータを送信するための前記バッファに所定量データが存在しないとき(図18のステップD9)には、前記一のキャッシュのエントリを前記2番目に最近使用していないキャッシュのエントリに移動し(図18のステップD10)、主記憶装置又は前記複数のキャッシュより下位階層のキャッシュから読み出したデータを前記移動した一のキャッシュのエントリに上書きする(図18のステップD6)。 In addition, when the data requested by the processing device misses in all of the plurality of caches (steps S2, S4, and S6 in FIG. 5), from one cache of the requested processing device to the plurality of caches. A predetermined amount of data exists in the buffer for transmitting data to the least recently used cache (step D8 in FIG. 18), and the second most recently used from the one cache to the plurality of caches When a predetermined amount of data does not exist in the buffer for transmitting data to a cache that has not been processed (step D9 in FIG. 18), the cache entry that has not been used the second most recently is entered. (Step D10 in FIG. 18) and read from the main storage device or a cache lower than the plurality of caches. Overwrite out data to the entry of one cache and the moved (step D6 in Fig. 18).
また、前記処理装置が要求したデータが、前記複数のキャッシュすべてでミスした場合(図5のステップS2、S4及びS6)に、前記要求した処理装置の一のキャッシュから前記複数のキャッシュの中で最も最近使用していないキャッシュへデータを送信するための前記バッファに所定量データが存在し(図18のステップD8)、かつ、前記一のキャッシュから前記複数のキャッシュの中で2番目に最近使用していないキャッシュへデータを送信するための前記バッファに所定量データが存在するとき(図18のステップD9)には、主記憶装置又は前記複数のキャッシュより下位階層のキャッシュから読み出したデータを前記一のキャッシュのエントリに上書きする(図18のステップD6)。 In addition, when the data requested by the processing device misses in all of the plurality of caches (steps S2, S4, and S6 in FIG. 5), from one cache of the requested processing device to the plurality of caches. A predetermined amount of data exists in the buffer for transmitting data to the least recently used cache (step D8 in FIG. 18), and the second most recently used from the one cache to the plurality of caches When there is a predetermined amount of data in the buffer for transmitting data to a cache that has not been processed (step D9 in FIG. 18), the data read from the main storage device or a cache in a lower hierarchy than the plurality of caches is stored in the buffer. The entry in one cache is overwritten (step D6 in FIG. 18).
また、前記処理装置が要求したデータが、前記複数のキャッシュすべてでミスした場合(図5のステップS2、S4及びS6)に、前記要求した処理装置の一のキャッシュから前記複数のキャッシュの中で最も最近使用していないキャッシュへデータを送信するための前記バッファに所定量データが存在し(図18のステップD8)、かつ、前記一のキャッシュから前記複数のキャッシュの中で2番目に最近使用していないキャッシュへデータを送信するための前記バッファに所定量データが存在し(図18のステップD9)、かつ、前記一のキャッシュから前記複数のキャッシュの中で3番目に最近使用していないキャッシュへデータを送信するための前記バッファに所定量データが存在しないときには、前記一のキャッシュのエントリを前記3番目に最近使用していないキャッシュのエントリに移動し、主記憶装置又は前記複数のキャッシュより下位階層のキャッシュから読み出したデータを前記移動した一のキャッシュのエントリに上書きする。 In addition, when the data requested by the processing device misses in all of the plurality of caches (steps S2, S4, and S6 in FIG. 5), from one cache of the requested processing device to the plurality of caches. A predetermined amount of data exists in the buffer for transmitting data to the least recently used cache (step D8 in FIG. 18), and the second most recently used from the one cache to the plurality of caches There is a predetermined amount of data in the buffer for sending data to a cache that has not been performed (step D9 in FIG. 18), and the third most recently used from the one cache to the plurality of caches When there is no predetermined amount of data in the buffer for sending data to the cache, the entry in the one cache is Go to the entry of the cache serial third not recently used, overwrites the data read from the cache of the lower hierarchical than the main storage device or the plurality of cache entries of one cache that the mobile.
図14のキャッシュシステムは、前記複数のバッファ111〜113の状態(送受信バッファ情報)1423を集中して記憶する1個の情報メモリ1421を有する。これに対し、図20のキャッシュシステムは、前記複数のバッファ111〜113の状態1423a,1423b,1423cを前記バッファ毎に分散して記憶する複数の情報メモリ1421a,1421b,1421cを有する。
The cache system shown in FIG. 14 has one
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。 The above-described embodiments are merely examples of implementation in carrying out the present invention, and the technical scope of the present invention should not be construed in a limited manner. That is, the present invention can be implemented in various forms without departing from the technical idea or the main features thereof.
本発明の実施形態は、例えば以下のように種々の適用が可能である。 The embodiment of the present invention can be applied in various ways as follows, for example.
(付記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記載のキャッシュシステム。
(Appendix 1)
A plurality of processing devices;
A plurality of caches connected one-to-one to the plurality of processing devices;
A network connected to the plurality of caches and performing data communication between the plurality of caches;
A plurality of buffers provided for each cache, the cache having data communication with the network;
When the data requested by the processing device misses in one cache, the cache performs data communication via the network according to the states of the plurality of buffers.
(Appendix 2)
When the data requested by the processing device misses in one cache and hits in another cache, a predetermined amount of data is stored in the buffer for transmitting data from the hit other cache to the one cache. When there is no predetermined amount of data in the buffer for transmitting data from the one cache to the other hit cache, the one cache entry and the other hit cache entry The cache system according to
(Appendix 3)
When the data requested by the processing device misses in one cache and hits in another cache, a predetermined amount of data is stored in the buffer for transmitting data from the hit other cache to the one cache. 2. The cache system according to
(Appendix 4)
When the data requested by the processing device misses in one cache and hits in another cache, a predetermined amount of data is stored in the buffer for transmitting data from the hit other cache to the one cache. Does not exist, and a predetermined amount of data exists in the buffer for transmitting data from the one cache to the other hit cache, and the one cache is the most recent among the plurality of caches The cache system according to
(Appendix 5)
When the data requested by the processing device misses in one cache and hits in another cache, a predetermined amount of data is stored in the buffer for transmitting data from the hit other cache to the one cache. Does not exist, and a predetermined amount of data exists in the buffer for transmitting data from the one cache to the other hit cache, and the one cache is the most recent among the plurality of caches When the predetermined amount of data does not exist in the buffer for transmitting data from the one cache to the least recently used cache among the plurality of caches when not being used, Overwrite cache entry with the least recently used cache entry and hit Cache system according to
(Appendix 6)
When the data requested by the processing device misses in one cache and hits in another cache, a predetermined amount of data is stored in the buffer for transmitting data from the hit other cache to the one cache. Does not exist, and a predetermined amount of data exists in the buffer for transmitting data from the one cache to the other hit cache, and the one cache is the most recent among the plurality of caches The hit is found when there is a predetermined amount of data in the buffer for transmitting data from the one cache to the least recently used cache among the plurality of caches that are not used
(Appendix 7)
When the data requested by the processing device misses in one cache and hits in another cache, a predetermined amount of data is stored in the buffer for transmitting data from the hit other cache to the one cache. Does not exist, and a predetermined amount of data exists in the buffer for transmitting data from the one cache to the other hit cache, and the one cache is the most recent among the plurality of caches A predetermined amount of data exists in the buffer for transmitting data from the one cache to the least recently used cache among the plurality of caches, and is not used, and the one cache Sending data from one cache to the second least recently used cache among the plurality of caches When a predetermined amount of data does not exist in the buffer, the one cache entry is overwritten with the second least recently used cache entry, and the hit other cache entry is overwritten with the one cache entry. The cache system according to
(Appendix 8)
When data requested by the processing device misses in all of the plurality of caches, the data is transmitted from one cache of the requested processing device to the least recently used cache among the plurality of caches. When the predetermined amount of data does not exist in the buffer, the entry of the one cache is moved to the entry of the least recently used cache, and the data read from the main storage device or the cache at a lower hierarchy than the plurality of
(Appendix 9)
When data requested by the processing device misses in all of the plurality of caches, the data is transmitted from one cache of the requested processing device to the least recently used cache among the plurality of caches. There is a predetermined amount of data in the buffer, and there is no predetermined amount of data in the buffer for transmitting data from the one cache to the second least recently used cache among the plurality of caches. Sometimes the entry of the one cache is moved to the entry of the second least recently used cache, and the data read from the main storage device or the cache lower than the plurality of caches is moved to the cache of the moved one cache. The cache system according to
(Appendix 10)
When data requested by the processing device misses in all of the plurality of caches, the data is transmitted from one cache of the requested processing device to the least recently used cache among the plurality of caches. There is a predetermined amount of data in the buffer, and there is a predetermined amount of data in the buffer for transmitting data from the one cache to the second least recently used cache among the plurality of caches. 2. The cache system according to
(Appendix 11)
When data requested by the processing device misses in all of the plurality of caches, the data is transmitted from one cache of the requested processing device to the least recently used cache among the plurality of caches. A predetermined amount of data exists in the buffer, and there is a predetermined amount of data in the buffer for transmitting data from the one cache to the second least recently used cache among the plurality of caches. And when there is no predetermined amount of data in the buffer for transmitting data from the one cache to the third least recently used cache among the plurality of caches, the entry of the one cache is Move to the third least recently used cache entry and either main storage or the caches Cache system according to
(Appendix 12)
The cache system according to
(Appendix 13)
The cache system according to
101〜103 コア(処理装置)
111〜113 キャッシュ
130 メインメモリ
1401〜1403 送信バッファ
1411〜1413 受信バッファ
1421 情報メモリ
1422 LRU情報
1423 送受信バッファ情報
1424 判定回路
1425 キャッシュ間接続ネットワーク
101-103 core (processing equipment)
111 to 113
Claims (5)
前記複数の処理装置に一対一に接続された複数のキャッシュと、
前記複数のキャッシュに接続され、前記複数のキャッシュ間のデータ通信を行うネットワークと、
前記キャッシュ毎に設けられ、前記キャッシュが前記ネットワークに対してデータ通信するための複数のバッファとを有し、
前記処理装置が要求したデータが、一のキャッシュでミスした場合、前記複数のバッファの状態に応じて、前記キャッシュが前記ネットワークを介してデータ通信することを特徴とするキャッシュシステム。 A plurality of processing devices;
A plurality of caches connected one-to-one to the plurality of processing devices;
A network connected to the plurality of caches and performing data communication between the plurality of caches;
A plurality of buffers provided for each cache, the cache having data communication with the network;
When the data requested by the processing device misses in one cache, the cache performs data communication via the network according to the states of the plurality of buffers.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007232606A JP5104139B2 (en) | 2007-09-07 | 2007-09-07 | Cash system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007232606A JP5104139B2 (en) | 2007-09-07 | 2007-09-07 | Cash system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009064308A true JP2009064308A (en) | 2009-03-26 |
JP5104139B2 JP5104139B2 (en) | 2012-12-19 |
Family
ID=40558828
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007232606A Expired - Fee Related JP5104139B2 (en) | 2007-09-07 | 2007-09-07 | Cash system |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5104139B2 (en) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04293137A (en) * | 1991-03-20 | 1992-10-16 | Hitachi Ltd | Storage coincidence control method and multi-processor system using the same |
JPH04319746A (en) * | 1991-04-18 | 1992-11-10 | Nec Corp | Information processor |
JPH07306810A (en) * | 1994-02-24 | 1995-11-21 | Hewlett Packard Co <Hp> | Queue-based estimation-type flow control mechanism |
JP2003050742A (en) * | 2001-08-07 | 2003-02-21 | Sony Corp | Device and method for processing information, program storage medium and program |
-
2007
- 2007-09-07 JP JP2007232606A patent/JP5104139B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04293137A (en) * | 1991-03-20 | 1992-10-16 | Hitachi Ltd | Storage coincidence control method and multi-processor system using the same |
JPH04319746A (en) * | 1991-04-18 | 1992-11-10 | Nec Corp | Information processor |
JPH07306810A (en) * | 1994-02-24 | 1995-11-21 | Hewlett Packard Co <Hp> | Queue-based estimation-type flow control mechanism |
JP2003050742A (en) * | 2001-08-07 | 2003-02-21 | Sony Corp | Device and method for processing information, program storage medium and program |
Also Published As
Publication number | Publication date |
---|---|
JP5104139B2 (en) | 2012-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7711902B2 (en) | Area effective cache with pseudo associative memory | |
US10073776B2 (en) | Shadow tag memory to monitor state of cachelines at different cache level | |
US7669009B2 (en) | Method and apparatus for run-ahead victim selection to reduce undesirable replacement behavior in inclusive caches | |
JP5445581B2 (en) | Computer system, control method, recording medium, and control program | |
US20070136535A1 (en) | System and Method for Reducing Unnecessary Cache Operations | |
US20080046651A1 (en) | Victim Cache Using Direct Intervention | |
US7305523B2 (en) | Cache memory direct intervention | |
US20130185522A1 (en) | Allocation and write policy for a glueless area-efficient directory cache for hotly contested cache lines | |
US7277992B2 (en) | Cache eviction technique for reducing cache eviction traffic | |
KR101509628B1 (en) | Second chance replacement mechanism for a highly associative cache memory of a processor | |
CN109154912B (en) | Replacing a cache entry based on availability of an entry in another cache | |
CN101236527A (en) | Line swapping scheme to reduce back invalidations in a snoop filter | |
US7281092B2 (en) | System and method of managing cache hierarchies with adaptive mechanisms | |
US20090259813A1 (en) | Multi-processor system and method of controlling the multi-processor system | |
US11599483B2 (en) | Dedicated cache-related block transfer in a memory system | |
US20190042439A1 (en) | Victim cache line selection | |
US6643741B1 (en) | Method and apparatus for efficient cache management and avoiding unnecessary cache traffic | |
US9983994B2 (en) | Arithmetic processing device and method for controlling arithmetic processing device | |
JPH10307752A (en) | Secondary level cache memory system | |
JP3732397B2 (en) | Cash system | |
US9442856B2 (en) | Data processing apparatus and method for handling performance of a cache maintenance operation | |
JP5104139B2 (en) | Cash system | |
JP5045334B2 (en) | Cash system | |
CN116615721A (en) | Method and apparatus for transferring data within a hierarchical cache circuit | |
JP2000267935A (en) | Cache memory device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100517 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120615 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120619 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120816 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20120904 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120917 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151012 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |