以下、実施形態について、図面を用いて説明する。
図1は、演算処理装置、情報処理装置および演算処理装置の制御方法の一実施形態を示す。図1に示す情報処理装置IPEaは、例えば、サーバ等のコンピュータ装置である。例えば、情報処理装置IPEaは、互いに通信可能に接続された複数の演算処理装置PUa(PUa0、PUa1)と、複数の演算処理装置PUaにそれぞれ接続された複数の主記憶装置MEM(MEM0、MEM1)とを有する。なお、演算処理装置PUaの数は、図1に示す例に限定されない。
演算処理装置PUaは、例えば、命令を実行するCPU等のプロセッサである。演算処理装置PUaは、CPUコア等のプロセッサコアPCORと、プロセッサコアPCORが使用するデータを保持する第1キャッシュメモリL1と、第1キャッシュメモリL1に接続された第2キャッシュメモリLLaとを有する。
プロセッサコアPCORは、例えば、第1キャッシュメモリL1に保持されたデータを参照して、命令に基づく演算等を実行する。すなわち、プロセッサコアPCORは、命令を実行する演算処理部の一例である。
第1キャッシュメモリL1は、例えば、セットアソシアティブ方式のキャッシュメモリであり、第2キャッシュメモリLLaに比べて高速にアクセス可能な1次キャッシュメモリである。第1キャッシュメモリL1は、第2キャッシュメモリLLaに保持されたデータの一部を保持する。例えば、第1キャッシュメモリL1は、ロード命令をプロセッサコアPCORから受けた場合、ロード命令で要求されたデータをプロセッサコアPCORに出力する。なお、第1キャッシュメモリL1は、ロード命令で要求されたデータを保持していない場合(第1キャッシュメモリL1がキャッシュミスした場合)、第2キャッシュメモリLLaに読み出し要求を出力する。また、例えば、第1キャッシュメモリL1は、プロセッサコアPCORから受けたストア命令で要求されたデータを保持していない場合(第1キャッシュメモリL1がキャッシュミスした場合)、第2キャッシュメモリLLaに読み出し要求を出力する。
このように、第2キャッシュメモリLLaへの読み出し要求は、プロセッサコアPCORからストアまたはロード命令によって第1キャッシュメモリL1でキャッシュミスしたことを起因に発生する。なお、第1キャッシュメモリL1からのプリフェッチの要求も、第2キャッシュメモリLLaに発行される読み出し要求の一種に含まれる。
第2キャッシュメモリLLaは、例えば、セットアソシアティブ方式のキャッシュメモリであり、第1キャッシュメモリL1に接続される。すなわち、第2キャッシュメモリLLaは、第1キャッシュメモリL1より下位の階層の2次キャッシュメモリである。第2キャッシュメモリLLaは、データ保持部10、第1情報保持部20、状態判定部30および処理部40を有する。
データ保持部10は、第2キャッシュメモリLLaより下位の階層の記憶装置である主記憶装置MEMに記憶されたデータの一部を、第2キャッシュメモリLLaのインデックスアドレス毎に保持する。インデックスアドレスは、データのアクセスに使用するメモリアドレスの一部分のビット群に対応する。例えば、第2キャッシュメモリLLaのインデックスアドレスは、第2キャッシュメモリLLaのキャッシュラインの番号に対応する。
第1情報保持部20は、データ保持部10に保持されたデータの状態を示す第1状態情報を含む第1管理情報を保持する。例えば、第1情報保持部20は、第2キャッシュメモリLLaのタグアドレスおよび第1状態情報等を含む第1管理情報を、第2キャッシュメモリLLaのインデックスアドレス毎に保持する。タグアドレスは、メモリアドレスのうち、インデックスアドレスを除くビット群の一部分に対応する。
また、第1管理情報に含まれる第1状態情報は、第2キャッシュメモリLLaのインデックスアドレスおよびタグアドレスで示されるデータ(キャッシュライン)の状態を示す。MESIプロトコルでは、データの状態は、”変更(Modified)”、”排他(Exclusive)”、”共有(Shared)”、”無効(Invalid)”のいずれかに分類される。例えば、ストア動作等により更新され、書き換えられたダーティなデータの状態は、”変更”に分類される。複数の第2キャッシュメモリLLaのうちの該当する1つの第2キャッシュメモリLLaのみに保持され、更新されていないクリーンなデータの状態は、”排他”に分類される。複数の第2キャッシュメモリLLaに保持されているクリーンなデータの状態は、”共有”に分類される。第2キャッシュメモリLLaの初期化後のデータ、無効にされたデータ等の意味のないデータの状態は、”無効”に分類される。以下、”変更(Modified)”、”排他(Exclusive)”、”共有(Shared)”、”無効(Invalid)”は、”M”、”E”、”S”、”I”とも称される。
状態判定部30は、読み出し要求で要求される要求データがデータ保持部10に保持されているか否かを第1管理情報に基づいて判定する。例えば、状態判定部30は、第1情報保持部20に保持された第1管理情報のうち、要求データのメモリアドレスに含まれるインデックスアドレスで示されるキャッシュラインの第1管理情報を参照する。以下、要求データのメモリアドレスに含まれるインデックスアドレスおよびタグアドレスは、要求データのインデックスアドレスおよびタグアドレスともそれぞれ称される。例えば、状態判定部30は、要求データのタグアドレスが要求データのインデックスアドレスで示されるキャッシュラインの第1管理情報に登録されている場合、要求データがデータ保持部10に保持されていると判定する。
すなわち、状態判定部30は、要求データのタグアドレスが要求データのインデックスアドレスで示されるキャッシュラインの第1管理情報に登録されている場合、第2キャッシュメモリLLaがキャッシュヒットしたと判定する。また、状態判定部30は、要求データのタグアドレスが要求データのインデックスアドレスで示されるキャッシュラインの第1管理情報に登録されていない場合、第2キャッシュメモリLLaがキャッシュミスしたと判定する。
処理部40は、例えば、要求データがデータ保持部10に保持されていると状態判定部30により判定された場合、要求データをデータ保持部10から第1キャッシュメモリL1に転送する。また、処理部40は、要求データがデータ保持部10に保持されていないと状態判定部30により判定された場合、主記憶装置MEMに要求データの転送を要求する。例えば、処理部40は、要求データの読み出し要求を主記憶装置MEMに発行する。これにより、要求データは、主記憶装置MEMから第2キャッシュメモリLLaに転送される。そして、処理部40は、主記憶装置MEMから第2キャッシュメモリLLaに転送された要求データをデータ保持部10に格納する。これにより、要求データは、第2キャッシュメモリLLaに登録される。また、処理部40は、要求データをデータ保持部10から第1キャッシュメモリL1に転送する。
なお、処理部40は、データ保持部10の記憶領域に要求データを格納する空きがない場合、読み出し要求に基づく追い出し要求を発行せずに、データ保持部10の複数の記憶領域のいずれかからデータを追い出す処理を実行する。追い出し要求は、データ保持部10からデータを追い出す処理の要求であり、読み出し要求に後続する処理要求である。
すなわち、処理部40は、データ保持部10からデータを追い出す処理を、追い出し要求を発行せずに、読み出し要求の実行サイクル中に実行する。以下、データ保持部10から追い出されるデータは、追い出し対象データとも称される。
例えば、処理部40は、追い出し対象データの状態が”排他”の場合、読み出し要求の実行サイクル中に、追い出し対象データの第1管理情報に含まれる第1状態情報を”無効”に設定する。そして、第1状態情報が”無効”に設定されたキャッシュラインに、主記憶装置MEMから第2キャッシュメモリLLaに転送された要求データが登録される。このように、処理部40は、データ保持部10から追い出し対象データを追い出す処理として、追い出し対象データの第1管理情報に含まれる第1状態情報を”無効”に設定する処理を読み出し要求の実行サイクル中に実行する。
すなわち、処理部40は、要求データがデータ保持部10に保持されていないと状態判定部30により判定され、かつ、要求データを登録する記憶領域に空きがない場合、追い出し要求を発行せずに、複数の記憶領域のいずれかからデータを追い出す処理を実行する。
なお、読み出し要求に後続する追い出し要求が発行される場合があってもよい。すなわち、第2キャッシュメモリLLaは、追い出し要求を第2キャッシュメモリLLa内で発行して処理部40に投入する場合と、追い出し要求を発行せずにデータ保持部10からデータを追い出す処理を実行する場合とを使い分けてもいい。例えば、追い出し要求を受けた処理部40は、追い出し要求で要求される追い出し対象データをデータ保持部10から追い出す処理を実行する。
ここで、追い出し要求を発行せずにデータ保持部10からデータを追い出す処理が実行される場合、追い出し要求が発行される場合に比べて、処理部40に投入される処理要求の数を少なくすることができる。この結果、第1キャッシュメモリL1からの1回の読み出し要求に対する一連の処理を実行する際の処理部40のスループットを向上させることができる。すなわち、第2キャッシュメモリLLaがキャッシュミスしたときのスループットを向上させることができる。
なお、演算処理装置PUaおよび情報処理装置IPEaの構成は、図1に示す例に限定されない。例えば、演算処理装置PUaは、プロセッサコアPCORと第1キャッシュメモリL1との組を複数有してもよい。この場合、第2キャッシュメモリLLaは、複数のプロセッサコアPCORに共有され、複数の第1キャッシュメモリL1に接続される。
以上、図1に示す実施形態では、第2キャッシュメモリLLaは、データ保持部10、第1情報保持部20、状態判定部30および処理部40を有する。状態判定部30は、第1キャッシュメモリL1からの読み出し要求で要求される要求データがデータ保持部10に保持されているかを第1管理情報に基づいて判定する。また、処理部40は、要求データがデータ保持部10に保持されていないと状態判定部30により判定され、かつ、要求データを格納する記憶領域に空きがない場合、追い出し要求を発行せずに、複数の記憶領域のいずれかからデータを追い出す処理を実行する。
例えば、処理部40は、追い出し要求を発行せずにデータ保持部10からデータを追い出す処理を実行することにより、追い出し要求を発行する場合に比べて、処理部40に投入する処理要求の数を少なくできる。この結果、第1キャッシュメモリL1からの1回の読み出し要求に対する一連の処理を実行する際の処理部40のスループットを向上させることができる。これにより、第2キャッシュメモリLLaのスループットを向上させることができる。
図2は、演算処理装置、情報処理装置および演算処理装置の制御方法の別の実施形態を示す。図1で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図2に示す情報処理装置IPEbは、例えば、サーバ等のコンピュータ装置である。例えば、情報処理装置IPEbは、複数の演算処理装置PUb(PUb0、PUb1、PUb2、PUb3)と複数の主記憶装置MEM(MEM0、MEM1、MEM2、MEM3)と通信部CDと入出力制御部IOCNTLと入出力装置IOUとを有する。なお、演算処理装置PUbおよび主記憶装置MEMの数は、図2に示す例に限定されない。複数の演算処理装置PUb、複数の主記憶装置MEM、通信部CDおよび入出力制御部IOCNTLは、例えば、サーバのシステムボードに搭載される。
演算処理装置PUbは、複数のコアCORE(CORE0、CORE1、・・・、CORE7)と、第2キャッシュメモリLLbと、メモリ制御部MCNTLと、通信インタフェース部CIFとを有する。図2以降では、コアCOREの数を8つとして説明する。なお、コアCOREの数は、8に限定されない。
各コアCOREは、互いに対応するプロセッサコアPCORおよび第1キャッシュメモリL1を有し、第2キャッシュメモリLLbに接続される。
プロセッサコアPCORは、図1に示したプロセッサコアPCORと同一または同様である。例えば、プロセッサコアPCORは、第1キャッシュメモリL1に保持されたデータを参照して、命令に基づく演算等を実行する。
第1キャッシュメモリL1は、例えば、セットアソシアティブ方式のキャッシュメモリであり、図1に示した第1キャッシュメモリL1と同一または同様である。第1キャッシュメモリL1は、第2キャッシュメモリLLbに比べて高速にアクセス可能な1次キャッシュメモリであり、第2キャッシュメモリLLbに保持されたデータの一部を保持する。
第2キャッシュメモリLLbは、セットアソシアティブ方式のキャッシュメモリであり、メモリ制御部MCNTL、通信インタフェース部CIFおよび複数のコアCORE等に接続される。すなわち、第2キャッシュメモリLLbは、第1キャッシュメモリL1より下位の階層の2次キャッシュメモリであり、複数のコアCOREに共有される。第2キャッシュメモリLLbの詳細は、図3で説明する。
メモリ制御部MCNTLには、例えば、第2キャッシュメモリLLbより下位の階層の主記憶装置MEMが接続される。そして、メモリ制御部MCNTLは、第2キャッシュメモリLLbと主記憶装置MEMとの間のデータ転送等を実行する。図2に示す例では、メモリ制御部MCNTLと主記憶装置MEMとの間のデータ転送は、双方向バスを用いて実行され、メモリ制御部MCNTLと第2キャッシュメモリLLbとの間のデータ転送は、単方向の転送により実行される。なお、メモリ制御部MCNTLと他のモジュールとの間のデータ転送方式は、図2に示す例に限定されない。
メモリ制御部MCNTLは、第2キャッシュメモリLLbと連動して動作する。例えば、1つのメモリ制御部MCNTLは、1つの第2キャッシュメモリLLbの配下で動作する。例えば、情報処理装置PUa1がccNUMA(cache coherent NonUniform Memory access)構成である場合、メモリ制御部MCNTLは、ccNUMAを構成する1つのローカルメモリアドレス空間を制御する。ccNUMAを構成する1つのノードに含まれるコアCORE、第2キャッシュメモリLLbおよびメモリ制御部MCNTLを含むグループは、CMG(Core Memory Group)とも称される。例えば、複数のCMGが1つの半導体チップに実装され、システムボード上に1つの半導体チップが実装されてもよいし、1つのCMGが1つの半導体チップに実装され、複数の半導体チップがシステムボード上で接続されてもよい。
主記憶装置MEMは、例えば、第2キャッシュメモリLLbより下位の階層のメモリであり、演算処理装置PUb内のメモリ制御部MCNTLに接続される。
通信インタフェース部CIFには、例えば、通信部CDが接続される。例えば、演算処理装置PUbは、通信部CDを介して、他の演算処理装置PUbとの間のデータ転送等を実行する。
通信部CDは、複数の演算処理装置PUbおよび入出力制御部IOCNTLに接続され、演算処理装置PUbと入出力制御部IOCNTLとの通信、演算処理装置PUb間の通信等を実行する。
入出力制御部IOCNTLには、例えば、入出力装置IOU等が接続される。そして、入出力制御部IOCNTLは、入出力装置IOUと通信部CDとの間のデータ転送等を実行する。入出力装置IOUは、演算処理装置PUbにデータを入力するキーボード等の入力装置、演算処理装置PUbの処理結果を外部に出力するディスプレイ等の出力装置等である。
なお、演算処理装置PUbおよび情報処理装置IPEbの構成は、図2に示す例に限定されない。例えば、第1キャッシュメモリL1および第2キャッシュメモリLLbは、セットアソシアティブ方式以外の方式(例えば、ダイレクトマップ方式)のキャッシュメモリでもよい。また、キャッシュメモリの階層レベルは、3以上でもよい。あるいは、情報処理装置IPEbは、他の情報処理装置IPEbに接続するCPU接続インタフェース装置を有してもよい。この場合、情報処理装置IPEb内のCPU接続インタフェース装置は、他の情報処理装置IPEb内のCPU接続インタフェース装置に接続される。
図3は、図2に示し第2キャッシュメモリLLbの一例を示す。なお、第2キャッシュメモリLLbの構成は、図3に示す例に限定されない。
第2キャッシュメモリLLbは、データ保持部DMEM、データ選択部DSELb、タグ部TAGLLb、TAGL1b、TAGD、使用情報保持部LRULL、投入部INPbおよびパイプライン制御部PLCを有する。さらに、第2キャッシュメモリLLbは、スヌープロック部SNPbおよびキャッシュミス制御部MIBを有する。
データ保持部DMEMは、メモリ制御部MCNTLに接続される主記憶装置MEM等に記憶されたデータの一部を保持する。例えば、データ保持部DMEMは、図4に示すように、インデックスアドレス毎にデータを保持する複数のウェイを有する。データ保持部DMEMの記憶容量は、第1キャッシュメモリL1の記憶容量に比べて大きい。
データ選択部DSELbは、データ保持部DMEMとメモリ制御部MCNTLとの間のデータ転送、データ保持部DMEMと他のCMGとの間のデータ転送等を制御する。データ選択部DSELbの詳細は、図8で説明する。
タグ部TAGLLbは、データ保持部DMEMに保持されたデータの状態を示す第1状態情報を含む第1管理情報を保持する。すなわち、タグ部TAGLLbは、第1情報保持部の一例である。タグ部TAGL1bは、第1キャッシュメモリL1に保持されたデータの状態を示す第2状態情報を含む第2管理情報を保持する。すなわち、タグ部TAGL1bは、第2情報保持部の一例である。タグ部TAGLLb、TAGL1bの詳細は、図5で説明する。
タグ部TAGDは、ccNUMA構成の1つのノードで管理されるべきデータの状態を示すディレクトリ情報を保持する。例えば、タグ部TAGDは、自身を含む第2キャッシュメモリLLbが管理するccNUMAのディレクトリ情報を保持し、他のCMGに持ち出されたデータの状態を管理する。以下、第2キャッシュメモリLLbで処理されるデータのメモリアドレスが自身のCMGが管理する範囲内である場合は、”Local=Host”とも称される。また、第2キャッシュメモリLLbで処理されるデータのメモリアドレスが自身のCMGが管理する範囲外である場合は、”Local≠Host”とも称される。
例えば、”Local=Host”のアドレス空間のデータを他のCMGが保持する場合のデータの状態(ディレクトリ)は、”排他(Exclusive)”、”共有(Shared)”、”無効(Invalid)”のいずれかに分類される。”排他”は、対象のCMGのみがデータを保持している状態を示す。なお、データが更新されていない保証はない。すなわち、”排他”は、MESIプロトコルにおける”M”で保持されている状態を含む。”共有”は、他のCMGの1つ以上の第2キャッシュメモリLLbが対象のデータを保持している状態を示す。”無効”は、他のCMGが対象のデータを保持していない状態を示す。例えば、タグ部TAGDは、”Local=Host”におけるパイプライン処理時に要求アドレスに対するディレクトリ情報を表示する機能を有する。
使用情報保持部LRULLは、データ保持部DMEMの複数のウェイのうち、複数の第1キャッシュメモリL1のいずれにもアクセスされていない待機時間が最も長いウェイを選択するための選択情報を保持する。例えば、第2キャッシュメモリLLbがキャッシュミスし、主記憶装置MEMから第2キャッシュメモリLLbに転送されたデータを登録する領域がない場合、第2キャッシュメモリLLbに保持されたデータのいずれかを追い出すリプレース処理が実行される。この際、主記憶装置MEMからのデータの格納先のウェイ(すなわち、追い出されるデータを保持しているウェイ)は、使用情報保持部LRULLに保持された選択情報を使用してLRU(Least Recently Used)方式で決定される。なお、使用情報保持部LRULLの詳細は、図5で説明する。
投入部INPは、コアCORE、キャッシュミス制御部MIB等から処理要求を受け、受けた処理要求をパイプライン制御部PLCに投入する。例えば、投入部INPは、処理要求READ、BISR等をコアCOREから受け、処理要求MORP、MVIN等をキャッシュミス制御部MIBから受ける。以下、処理要求MORPは、追い出し要求MORPとも称される。
処理要求READ(以下、読み出し要求READとも称する)に基づく処理では、第2キャッシュメモリLLbは、キャッシュヒットした場合に、データを第1キャッシュメモリL1に応答する。また、第2キャッシュメモリLLbは、キャッシュミスした場合に、主記憶装置MEMに読み出し要求を発行する。
処理要求BISRに基づく処理では、例えば、第2キャッシュメモリLLbは、第1キャッシュメモリL1から第2キャッシュメモリLLbへのライトバックを伴わないリプレース完了処理(リプレース処理の完了に関する処理)等を実行する。
処理要求MORPに基づく処理では、第2キャッシュメモリLLbは、データ保持部DMEMからデータを追い出す処理を実行する。なお、処理要求MORPは、処理要求READに後続する処理要求である。すなわち、処理要求MORPは、読み出し要求READに基づく追い出し要求である。
処理要求MVINに基づく処理では、第2キャッシュメモリLLbは、読み出し要求READで要求されたデータを第2キャッシュメモリLLbに登録して第1キャッシュメモリL1に応答する。なお、処理要求MVINは、処理要求READに後続する処理要求である。
パイプライン制御部PLCは、投入部INPbから受ける処理要求(処理要求READ等)に基づく処理を、タグ部TAGLLb、TAGL1b等に保持された情報に基づいて実行する。パイプライン制御部PLCの詳細は、図9以降で説明する。
スヌープロック部SNPbは、第1キャッシュメモリL1からデータを追い出す処理の対象となるデータを第1キャッシュメモリL1毎に管理する第3管理情報を保持する情報保持部を有する。なお、スヌープロック部SNPbの詳細は、図6で説明する。
キャッシュミス制御部MIBは、読み出し要求READで要求されたデータがキャッシュミスした場合、後続の処理を管理する。例えば、キャッシュミス制御部MIBは、キャッシュミスが発生し、データ保持部DMEMからデータを追い出す場合に、処理要求MORPを投入部INPbに発行する。すなわち、キャッシュミス制御部MIBは、追い出し要求MORPをパイプライン制御部PLC等の処理部に発行する追い出し制御部の一例である。なお、キャッシュミス制御部MIBは、処理要求MORPの抑止を示す情報をパイプライン制御部PLCから受けた場合、処理要求MORPを発行しない。
また、キャッシュミス制御部MIBは、メモリ制御部MCNTLに要求したデータに対する応答を受け、読み出し要求READで要求されたデータをデータ保持部DMEMに格納する準備ができている場合、処理要求MVINを投入部INPbに発行する。
また、キャッシュミス制御部MIBは、ブロックタイプチェンジ処理の要求を処理要求MVINの一部として、投入部INPbに発行する。ブロックタイプチェンジ処理は、第2キャッシュメモリLLbのウェイのデータ状態を変更する処理である。例えば、パイプライン制御部PLCは、”共有”で保持されているデータに対して”排他”での読み出し要求READに基づく処理を実行する場合、キャッシュミス制御部MIBに対して、ブロックタイプチェンジ処理を実行するための資源を確保する。キャッシュミス制御部MIBは、第2キャッシュメモリLL、第1キャッシュメモリL1に保持されている対象のデータの状態によって後続の命令を判断し、パイプライン制御部PLCに対して処理要求を発行する。
図4は、図3に示したデータ保持部DMEMの一例を示す。データ保持部DMEMは、インデックスアドレスRAD[18:7]毎にデータを保持する複数のウェイWAY(WAY0、WAY1、・・・、WAY14、WAY15)を有する。なお、インデックスアドレスRAD[18:7]は、データのアクセスに使用するメモリアドレスRAD[47:0]の一部分のビット群で表される第1インデックスの一例である。図4に示す例では、データ保持部DMEMのウェイWAYの数は、16である。すなわち、第2キャッシュメモリLLbは、16ウェイのセットアソシアティブ方式のキャッシュメモリである。なお、データ保持部DMEMのウェイWAYの数は、16に限定されない。
データ保持部DMEMは、アクセス対象のウェイWAYを示す情報LLHTW(LLHTW0−LLHTW15)と、アクセス対象のインデックスアドレスRAD[18:7]とを受ける。例えば、情報LLHTWは、パイプライン制御部PLCからデータ保持部DMEMに転送される。以下、情報LLHTWは、アクセスウェイ情報LLHTWまたはヒットウェイ情報LLHTWとも称される。例えば、第2キャッシュメモリLLbが読み出し要求をコアCOREから受けた場合、データ保持部DMEMは、インデックスアドレスRAD[18:7]とヒットウェイ情報LLHTW0−LLHTW15とで指定されたデータを要求元のコアCOREに出力する。以下、アクセス対象のメモリアドレスRADは、要求アドレスRADとも称される。また、インデックスアドレスRAD[18:7]は、アドレスRAD[18:7]とも称される。
図5は、図3に示したタグ部TAGLLb、TAGL1bおよび使用情報保持部LRULLの一例を示す。なお、図5に示すタグ部TAGLLbは、第2キャッシュメモリLLbのウェイ数が16である場合の一例である。また、図5に示すタグ部TAGL1bは、第1キャッシュメモリL1のウェイ数が8である場合の一例である。例えば、第1キャッシュメモリL1および第2キャッシュメモリLLbのキャッシュラインのサイズは、128バイトである。
第2キャッシュメモリLLbのキャッシュラインの番号は、インデックスアドレスPA[18:7]で表される。そして、インデックスアドレスPA[18:7]は、メモリアドレスRAD[47:0]の一部分(7から18ビット)のビット群で表されるインデックスアドレスRAD[18:7]で指定される。第1キャッシュメモリL1のキャッシュラインの番号は、インデックスアドレスPA[13:7]で表される。そして、インデックスアドレスPA[13:7]は、データのアクセスに使用するメモリアドレスRAD[47:0]の一部分(7から13ビット)のビット群で表されるインデックスアドレスRAD[13:7]で指定される。なお、インデックスアドレスRAD[13:7]は、第1インデックス(インデックスアドレスRAD[18:7])の一部分のビット群で表される第2インデックスの一例である。
タグ部TAGLLbは、1つのインデックスアドレスPA[18:7]に対して、第2キャッシュメモリLLbのウェイ数分(図5に示す例では、16ウェイ分)の第1管理情報INFLLb(INFLLb0、・・・、INFLLb15)を保持する。第1管理情報INFLLbの末尾の数字は、第2キャッシュメモリLLbのウェイWAYの末尾の数字に対応する。このように、タグ部TAGLLbは、各ウェイWAYの第1管理情報INFLLを第2キャッシュメモリLLbのインデックスアドレスPA[18:7]毎に保持する。
各第1管理情報INFLLbは、第2キャッシュメモリLLbのタグアドレスPA[47:19]およびタイプコードTCLL[1:0]、TCL1[1:0]を有する。第2キャッシュメモリLLbのタグアドレスPA[47:19]は、メモリアドレスRAD[47:0]の一部分(19から47ビット)のビット群で表される。また、タイプコードTCLL[1:0]は、第2キャッシュメモリLLbのインデックスアドレスPA[18:7]とタグアドレスPA[47:19]とで指定されるデータ(キャッシュライン)の状態を示す。データの状態は、例えば、MESIプロトコルで管理される。
図5に示す例では、データの状態が”無効”である場合、タイプコードTCLL[1:0]は”00”に設定される。データの状態が”共有”である場合、タイプコードTCLL[1:0]は”01”に設定される。データの状態が”変更”である場合、タイプコードTCLL[1:0]は”10”に設定される。データの状態が”排他”である場合、タイプコードTCLL[1:0]は”11”に設定される。
タイプコードTCL1[1:0]は、第2キャッシュメモリLLbのインデックスアドレスPA[18:7]とタグアドレスPA[47:19]とで指定されるデータ(キャッシュライン)の第1キャッシュメモリL1における状態を示す。データの状態は、例えば、MESIプロトコルで管理される。なお、第2キャッシュメモリLLbは、第1キャッシュメモリL1に保持されたデータが変更されたタイミングを検出しない。このため、タイプコードTCL1[1:0]は、データの状態が”変更”であることを示す”10”以外の値に設定される。
タグ部TAGLLが保持する第1管理情報INFLLは、例えば、パイプライン制御部PLCからのアップデート情報に対応する信号WE、WDに基づいて、更新される。信号WEは、第1管理情報INFLLの更新を示すライトイネーブル信号であり、信号WDは、更新データである。
タグ部TAGL1bは、1つのインデックスアドレスPA[13:7]に対して、第1キャッシュメモリL1のウェイ数と第1キャッシュメモリL1の数との積で表される数の第2管理情報INFL1bを保持する。図5に示す例では、タグ部TAGL1bは、1つのインデックスアドレスPA[13:7]に対して、64個(=8ウェイ×8コア分)の第2管理情報INFL1b(INFL1b0、・・・、INFL1b63)を保持する。
このように、タグ部TAGL1bは、各第1キャッシュメモリL1における各ウェイの第2管理情報INFL1bを、第1キャッシュメモリL1のインデックスアドレスPA[13:7]毎に保持する。図5に示す例では、第2管理情報INFL1bの末尾の数字を8で割った場合の商および余りは、それぞれコアCOREの末尾の数字および第1キャッシュメモリL1のウェイ番号(0から7のいずれか)に対応する。例えば、第2管理情報INFL1b0は、コアCORE0の第1キャッシュメモリL1の0番目のウェイの第2管理情報INFL1bを示す。また、第2管理情報INFL1b63は、コアCORE7の第1キャッシュメモリL1の7番目のウェイの第2管理情報INFL1bを示す。
各第2管理情報INFL1bは、ウェイ情報WAYLL[3:0]と、差分情報PA[18:14]と、バリッドVL1とを有する。ウェイ情報WAYLL[3:0]および差分情報PA[18:14]は、第1キャッシュメモリL1のタグアドレスPA[47:14]の代わりに保持される情報である。例えば、ウェイ情報WAYLL[3:0]は、第2キャッシュメモリLLbの複数のウェイWAYのうち、第1キャッシュメモリL1のインデックスアドレスPA[13:7]とタグアドレスPA[47:14]とで指定されるデータが保持されたウェイWAYを示す。すなわち、ウェイ情報WAYLL[3:0]は、タグアドレスPA[47:14]のうちのアドレスPA[47:19](第2キャッシュメモリLLbのタグアドレスPA[47:19])に対応する。
差分情報PA[18:14]は、第1キャッシュメモリL1のインデックスアドレスPA[13:7]と第2キャッシュメモリLLbのインデックスアドレスPA[18:7]との差分を示す。すなわち、差分情報PA[18:14]は、メモリアドレスRAD[47:0]の一部分(14から18ビット)のビット群で表され、タグアドレスPA[47:14]のうちのアドレスPA[18:14]に対応する。このように、ウェイ情報WAYLL[3:0]および差分情報PA[18:14]は、第1キャッシュメモリL1のタグアドレスPA[47:14]の代わりに使用される。
バリッドVL1は、第1キャッシュメモリL1のインデックスアドレスPA[13:7]、ウェイ情報WAYLL[3:0]および差分情報PA[18:14]で指定されるデータ(キャッシュライン)が有効であるかを示す。例えば、データが有効である場合、バリッドVL1は、”1”に設定される。
タグ部TAGL1bが保持する第2管理情報INFL1bは、例えば、パイプライン制御部PLCからのアップデート情報UPDL1bに基づいて、更新される。
使用情報保持部LRULLは、インデックスアドレスPA[18:7]毎に、選択情報SINF(SINF1[3:0]、SINF2[3:0]、・・・、SINF15[3:0]、SINF16[3:0])を保持する。選択情報SINF1[3:0]に登録されたウェイWAYは、データ保持部DMEMの複数のウェイWAYのうち、複数の第1キャッシュメモリL1のいずれにもアクセスされていない待機時間が最も長いウェイWAYである。選択情報SINFの符号SINFの後の数字が大きくなるほど、待機時間が短いウェイWAYが登録される。使用情報保持部LRULLが保持する選択情報SINFは、例えば、パイプライン制御部PLCからのアップデート情報UPDLRUに基づいて、更新される。
なお、タグ部TAGLLb、TAGL1bおよび使用情報保持部LRULLの構成は、図5に示す例に限定されない。
図6は、図3に示したスヌープロック部SNPbの一例を示す。スヌープロック部SNPbは、情報保持部MSNPと複数の判定部DJSB(DJSB0−DJSBn)と論理和回路ORs2とを有する。
情報保持部MSNPは、第1キャッシュメモリL1からデータを追い出す処理の対象となるデータを第1キャッシュメモリL1毎に管理する第3管理情報INFSNP(INFSNP0、・・・、INFSNPn)を保持する。図6に示す例では、情報保持部MSNPは、”n+1”個(nは0以上の整数)の第3管理情報INFSNPを保持する。各第3管理情報INFSNPは、ウェイ情報WAYLL[3:0]と、インデックスアドレスPA[18:7]と、バリッドVENTとを有する。ウェイ情報WAYLL[3:0]は、データ保持部の複数のウェイWAYのうち、管理対象のデータを保持するウェイWAYを示すウェイ識別子である。インデックスアドレスPA[18:7]は、管理対象のデータのメモリアドレスに含まれる第1インデックスを示す。バリッドVENTは、管理対象のデータが有効であることを示す有効ビットである。すなわち、情報保持部MSNPは、第3情報保持部の一例である。情報保持部MSNPが保持する第3管理情報INFSNPは、例えば、パイプライン制御部PLCからのアップデート情報UPDSNPに基づいて、更新される。
判定部DJSBは、第2キャッシュメモリLLbでキャッシュヒットしたデータが第1キャッシュメモリL1からデータを追い出す処理の仕掛かりのデータであるか否かを判定する。判定部DJSBの末尾の数字および”n”は、第3管理情報INFSNPの末尾の数字および”n”に対応する。複数の判定部DJSBは互いに同一または同様であるため、判定部DJSB0について説明する。
判定部DJSB0は、デコード部DECs1、マッチ検出部MDs1、論理和回路ORs1および論理積回路ANDs1、ANDsw0−ANDsw15を有する。論理積回路ANDswの末尾の数字は、第2キャッシュメモリLLbのウェイWAYの末尾の数字に対応する。
デコード部DECs1は、第3管理情報INFSNP0内のウェイ情報WAYLL[3:0]を情報保持部MSNPから受ける。そして、デコード部DECs1は、ウェイ情報WAYLL[3:0]が示す論理値をデコードし、複数のウェイWAY0−WAY15の各々に対して真であるか否かを示すビットを含むデコード情報LLW0−LLW15を生成する。例えば、ウェイ情報WAYLL[3:0]が十進数で”15”を示す場合、デコード部DECs1は、デコード情報LLW15を真(例えば、論理値”1”)に設定し、デコード情報LLW0−LLW14を偽(例えば、論理値”0”)に設定する。
デコード部DECs1は、ウェイ情報WAYLL[3:0]をデコードしたデコード情報LLW0−LLW15を、論理積回路ANDsw0−ANDsw15にそれぞれ出力する。例えば、デコード部DECs1は、デコード情報LLW0を論理積回路ANDsw0に出力する。
論理積回路ANDsw0は、パイプライン制御部PLCから受けたヒットウェイ情報LLHTW0とデコード部DECs1から受けたデコード情報LLW0との論理積を演算し、演算結果を論理和回路ORs1に出力する。論理積回路ANDsw0以外の論理積回路ANDswは、論理積回路ANDsw0の説明におけるヒットウェイ情報LLHTWおよびデコード情報LLWの末尾の数字を、論理積回路ANDswに対応する数字に読み替えることで説明される。
論理和回路ORs1は、論理積回路ANDsw0−ANDsw15のそれぞれの演算結果の論理和を演算し、演算結果を論理積回路ANDs1に出力する。
マッチ検出部MDs1は、第3管理情報INFSNP0内のインデックスアドレスPA[18:7]を情報保持部MSNPから受ける。そして、マッチ検出部MDs1は、投入部INPbから受けたアドレスRAD[18:7]と、第3管理情報INFSNP0内のインデックスアドレスPA[18:7]とを比較し、比較結果を論理積回路ANDs1に出力する。例えば、アドレスRAD[18:7]とインデックスアドレスPA[18:7]とが一致する場合、マッチ検出部MDs1は、真を示す情報(例えば、論理値”1”)を比較結果として論理積回路ANDs1に出力する。また、アドレスRAD[18:7]とインデックスアドレスPA[18:7]とが一致しない場合、マッチ検出部MDs1は、偽を示す情報(例えば、論理値”0”)を比較結果として論理積回路ANDs1に出力する。
論理積回路ANDs1は、第3管理情報INFSNP0内のバリッドVENTを情報保持部MSNPから受ける。そして、論理積回路ANDs1は、マッチ検出部MDs1による比較結果と論理和回路ORs1の演算結果と情報保持部MSNPから受けたバリッドVENTとの論理積を演算し、演算結果を示す情報ADMEを論理和回路ORs2に出力する。
論理和回路ORs2は、判定部DJSB0−DJSBnから受けた情報ADME0−ADMEnの論理和を演算し、演算結果をアドレスマッチ情報ADMSとしてパイプライン制御部PLCに出力する。なお、スヌープロック部SNPbの構成は、図6に示す例に限定されない。
図7は、図3に示したキャッシュミス制御部MIBの要部の一例を示す。キャッシュミス制御部MIBは、複数の制御バッファ部INCNTL、論理積回路ANDm1、ANDm2および論理和回路ORm1を有する。例えば、キャッシュミス制御部MIBは、複数の制御バッファ部INCNTLのいずれかに空きが有る場合に、パイプライン制御部PLCからの指示を受け付ける。制御バッファ部INCNTLは、パイプライン制御部PLCから受ける情報VALID、BTC、NMORP、MORPCT、WAYIDを保持し、メモリ制御部MCNTL等から受ける情報REQCTを保持する。
例えば、情報VALIDは、第2キャッシュメモリLLbがキャッシュミスした場合に論理値”1”に設定される信号である。情報BTCは、ブロックタイプチェンジ処理を要求する場合に論理値”1”に設定される信号である。情報NMORPは、処理要求MORPの発行を抑止する場合に論理値”1”に設定される信号である。情報MORPCTは、処理要求MORPに基づく処理が終了した場合に論理値”1”に設定される信号である。情報WAYIDは、データ保持部DMEMの複数のウェイWAYのうち、追い出し対象データを保持しているウェイWAYを示すウェイ識別子である。情報WAYIDは、処理要求MORPが投入部INPbに発行される場合に、情報LLWAYとしてパイプライン制御部PLCに投入部INPbを介して転送される。情報REQCTは、要求データがメモリ制御部MCNTL等から転送された場合に論理値”1”に設定される信号である。
論理積回路ANDm1は、信号VALIDと信号BTCの反転信号と信号NMORPの反転信号と信号MORPCTの反転信号との論理積を演算し、演算結果を示す情報MORPを投入部INPbに出力する。例えば、論理値”1”の情報MORPは、処理要求MORPの発行を意味する。
論理和回路ORm1は、信号NMORPと信号MORPCTとの論理和を演算し、演算結果を示す情報を論理積回路ANDm2に出力する。
論理積回路ANDm2は、信号VALIDと論理和回路ORm1の演算結果と信号REQCTとの論理和を演算し、演算結果を示す情報MVINを投入部INPbに出力する。例えば、論理値”1”の情報MVINは、処理要求MVINの発行を意味する。なお、キャッシュミス制御部MIBの構成は、図7に示す例に限定されない。
図8は、図3に示したデータ選択部DSELbの一例を示す。図8に示す一点鎖線は、パイプライン処理の各ステージの境界に対応する。また、図8に示す網掛けの矩形は、パイプラインレジスタを示す。図8に示す例では、データ保持部DMEMから出力されるデータ幅は128バイトである。また、メモリ制御部MCNTL等へのデータ転送は、32バイト×4サイクルで実行される。
データ選択部DSELbは、分割部DIVと複数の単位回路部UC(UC0−UC7、UCm)とを有する。分割部DIVは、データ保持部DMEMから転送された128バイトのデータを32バイトのデータに分割し、32バイトの4つのデータを各単位回路部UCに転送する。
単位回路部UC0−UC7は、コアCORE0−CORE7にそれぞれ対応して設けられる。単位回路部UC0−UC7の末尾の数字は、コアCORE0−CORE7の末尾の数字に対応する。例えば、コアCORE0は、データ保持部DMEMから単位回路部UC0を介してデータを受ける。また、単位回路部UCmは、メモリ制御部MCNTLおよび通信インタフェース部CIFに対応して設けられる。複数の単位回路部UCは互いに同一または同様であるため、単位回路部UCmについて説明する。
単位回路部UCmは、分割部DIVから転送される4つの32バイトのデータをそれぞれ保持する4つのバッファ部BUF(BUF1、BUF2、BUF3、BUF4)と、選択制御部DSCNTLと、選択部SELbufとを有する。選択制御部DSCNTLは、4つのバッファ部BUFを順に選択することにより、32バイトのデータを選択部SELbufを介して順次出力する。これにより、128バイトのデータは、32バイトに分割されてメモリ制御部MCNTL等に転送される。
このように、コアCOREに応答するデータは、メモリ制御部MCNTLおよび通信インタフェース部CIF等に応答するデータとは別に管理される。これにより、例えば、データ選択部DSELbは、メモリ制御部MCNTLとの間のデータバスが先行する処理要求のデータ応答により占有される場合でも、後続の読み出し要求READがヒットする場合にコアCOREへのデータ応答を連続サイクルで実行できる。
なお、データ選択部DSELbの構成は、図8に示す例に限定されない。また、データ保持部DMEMから出力されるデータ幅がメモリ制御部MCNTL等へのデータ転送のデータ幅以下である場合、データ選択部DSELbは、省かれてもよい。
図9は、図2に示したパイプライン制御部PLCの一例を示す。図9に示す一点鎖線および網掛けの矩形の意味は、図8に示した一点鎖線および網掛けの矩形と同じである。図9に示す入力情報SINは、例えば、投入部INPbから投入される処理要求、要求データのメモリアドレス等を含む。
パイプライン制御部PLCは、選択判定部SDJ、ヒット判定部HDJb、エンコード部ENC、コア判定部CDJb、データ制御部DATACL、条件一致検出部CONDb、使用情報更新部INFUPDおよび処理判定部PDJbを有する。さらに、パイプライン制御部PLCは、コマンド制御部CMDCLを有する。
パイプライン処理のステージ0では、選択判定部SDJおよびヒット判定部HDJbが処理を実行する。例えば、選択判定部SDJは、使用情報保持部LRULLに保持された選択情報SINFのうち、情報SINに含まれるインデックスアドレスPA[18:7]により指定される選択情報SINFを参照する。そして、選択判定部SDJは、データ保持部DMEMの複数のウェイWAYのうちのどのウェイWAYからデータを追い出すかを、インデックスアドレスPA[18:7]により指定される選択情報SINF等に基づいて選択する。以下、データ保持部DMEMから追い出すデータを保持しているウェイWAYは、ビクティムウェイWAYとも称される。選択判定部SDJは、ビクティムウェイWAYを示す情報RWAYIDを使用情報更新部INFUPDおよび処理判定部PDJbに出力する。
例えば、選択判定部SDJは、複数のウェイWAYのうち、第1キャッシュメモリL1に保持されたデータを保持しているウェイWAY以外のウェイWAYから優先的に、選択情報SINFに基づいてビクティムウェイWAYを選択する。第1キャッシュメモリL1に保持されたデータを保持しているウェイWAYは、例えば、インデックスアドレスPA[18:7]で示される第1管理情報INFLLb内のタイプコードTCL1[1:0]に基づいて特定される。例えば、選択判定部SDJは、タイプコードTCL1[1:1]とタイプコードTCL1[0:0]との論理和結果が論理値”1”である場合、対応するウェイWAYは第1キャッシュメモリL1に保持されたデータを保持していると判定する。
ヒット判定部HDJbは、第2キャッシュメモリLLbがキャッシュヒットするか否かを判定する。すなわち、ヒット判定部HDJbは、第1キャッシュメモリL1からの読み出し要求READで要求される要求データがデータ保持部DMEMに保持されているかを第1管理情報INFLLbに基づいて判定する状態判定部の一例である。ヒット判定部HDJbの詳細は、図10で説明する。
ステージ1では、コア判定部CDJb、データ制御部DATACL、エンコード部ENCが処理を実行する。
コア判定部CDJbは、複数の第1キャッシュメモリL1のいずれかがキャッシュヒットするか否かを判定する。すなわち、コア判定部CDJbは、第1キャッシュメモリL1からの読み出し要求READで要求される要求データを、複数の第1キャッシュメモリL1のいずれかが保持しているか否かを判定する。コア判定部CDJbの詳細は、図11で説明する。
データ制御部DATACLは、ヒット判定部HDJbの判定結果に基づいて、データ保持部DMEMにアクセスする。エンコード部ENCは、ヒット判定部HDJbから出力されたウェイ数分のヒットウェイ情報LLHTW(16本の信号)をエンコードする。例えば、ウェイWAY15がヒットした場合、エンコード部ENCは、論理値”0”のヒットウェイ情報LLHTW0−LLHITW14と、論理値”1”のヒットウェイ情報LLHTW15とをヒット判定部HDJbから受ける。この場合、エンコード部ENCは、16本の信号LLHTW(LLHTW0−LLHITW15)を、十進数で”15”を示す4ビットのヒットウェイ情報LLHTW[3:0]にエンコードする。そして、エンコード部ENCは、エンコードしたヒットウェイ情報LLHTWを処理判定部PDJbに出力する。
さらに、ステージ1では、スヌープロック部SNPbから処理判定部PDJbにアドレスマッチ情報ADMSが出力され、キャッシュミス制御部MIBから処理判定部PDJbにアドレスマッチ情報ADMMが出力される。アドレスマッチ情報ADMMは、例えば、パイプライン制御部PLCに投入された処理要求で要求されるデータのアドレスが先行する処理要求によってキャッシュミス制御部MIBの処理対象となっている場合に論理値”1”に設定される信号である。
ステージ2では、使用情報更新部INFUPDおよび条件一致検出部CONDbが処理を実行する。使用情報更新部INFUPDは、要求データのアドレスRAD[18:7]、選択判定部SDJにより選択されたビクティムウェイWAYを示す情報RWAYID等に基づいて、アップデート情報UPDLRUを処理判定部PDJbに出力する。
条件一致検出部CONDbは、追い出し要求MORPの発行を抑止する抑止条件が満たされるか判定する際の事前判定を実行する。例えば、以下に示す第1条件または第2条件が満たされる場合、抑止条件が満たされる。
第1条件は、追い出し対象データの状態が”無効”であることである。第2条件は、追い出し対象データがccNUMA構成におけるローカルメモリアドレスに格納されるデータであり、追い出し対象データの状態が”変更”以外の状態であり、かつ、追い出し対象データが第1キャッシュメモリL1に保持されていないことである。
なお、追い出し対象データの状態が”変更”以外の状態(追い出し対象データの状態が”無効”を含む)は、追い出し対象データの状態が第2キャッシュメモリLLbに接続された主記憶装置MEMへの書き戻しを必要としない状態である。
条件一致検出部CONDbは、情報SINに含まれるインデックスアドレスPA[18:7]により指定される各ウェイWAYのデータ(以下、追い出し対象データの候補とも称する)が第1条件または第2条件を満たすか検出する。そして、条件一致検出部CONDbは、各ウェイWAYの検出結果を示す情報MWAYを処理判定部PDJbに出力する。条件一致検出部CONDbの詳細は、図12で説明する。また、ステージ2では、データ保持部DMEMからデータが出力される。
ステージ3では、処理判定部PDJbが処理を実行する。例えば、処理判定部PDJbは、パイプライン制御部PLCに投入された処理要求に基づいて、処理要求の中止判定、タグ部TAGLLbの更新判定、タグ部TAGLLbの更新データの生成、キャッシュミス制御部MIBへのリクエスト生成等を実行する。また、処理判定部PDJbは、処理要求MORPを抑止するか否かに拘わらず、データ保持部DMEMからデータを追い出す処理が必要であるか否かを判定する。また、処理判定部PDJbは、選択判定部SDJにより選択されたビクティムウェイWAYと、条件一致検出部CONDbによる各ウェイWAYの検出結果とに基づいて、追い出し対象データが抑止条件を満たすか判定する。そして、処理判定部PDJbは、追い出し対象データが抑止条件を満たす場合、追い出し要求MORPの発行の抑止をキャッシュミス制御部MIBに情報NMORPを用いて通知する。
すなわち、処理判定部PDJbは、第2キャッシュメモリLLbがキャッシュミスし、かつ、要求データを登録する記憶領域に空きがない場合、追い出し要求MORPを発行せずに、複数の記憶領域のいずれかからデータを追い出す処理部の一例である。なお、処理判定部PDJbの詳細は、図13で説明する。
ステージ4では、コマンド制御部CMDCLが処理を実行する。例えば、コマンド制御部CMDCLは、情報SINF等に基づいてコマンドCMDを、コアCORE、メモリ制御部MCNTL、通信インタフェース部CIF等に発行する。
また、ステージ4では、ライトイネーブル信号WE、更新データWD、アドレスRAD[18:7]等により、タグ部TAGLLbが更新される。情報UPDL1bによりタグ部TAGL1bが更新され、情報UPDLRUにより使用情報保持部LRULLが更新され、情報UPDSNPによりスヌープロック部SNPbが更新される。さらに、情報VALID、BTC、NMORP、MORPCT、WAYID等によりキャッシュミス制御部MIBが制御される。また、リプレースを指示する情報IRPL、スヌープを指示する情報ISNP等がコアCOREに出力される。
図10は、図9に示したヒット判定部HDJbの一例を示す。ヒット判定部HDJbは、デコード部DECh1と、複数の判定部DJW(DJW0−DJW15)と、選択部SELh2、SELh3とを有する。
デコード部DECh1は、処理要求MORPが発行された場合、ビクティムウェイWAYを示す情報LLWAY[3:0]をキャッシュミス制御部MIBから受ける。そして、デコード部DECh1は、情報LLWAY[3:0]が示す論理値をデコードし、複数のウェイWAY0−WAY15の各々に対して真であるか否かを示すビットを含むデコード情報LLWAY0−LLWAY15を生成する。デコード部DECh1は、情報LLWAY[3:0]をデコードしたデコード情報LLWAY0−LLWAY15を、判定部DJW0−DJW15にそれぞれ出力する。例えば、デコード部DECh1は、デコード情報LLWAY0を判定部DJW0に出力する。
判定部DJWの末尾の数字は、第2キャッシュメモリLLbのウェイWAYの末尾の数字に対応する。複数の判定部DJWは互いに同一または同様であるため、判定部DJW0について説明する。
判定部DJW0は、マッチ検出部MDh1、論理和回路ORh1、論理積回路ANDh1および選択部SELh1を有する。マッチ検出部MDh1は、情報SINに含まれるアドレスRAD[18:7]で示されるインデックスアドレスPA[18:7]に対応する第1管理情報INFLLb0内のタグアドレスPA[47:19]を、タグ部TAGLLbから受ける。そして、マッチ検出部MDh1は、投入部INPbから受けたアドレスRAD[47:19]と、第1管理情報INFLLb0内のタグアドレスPA[47:19]とを比較し、比較結果を論理積回路ANDh1に出力する。例えば、アドレスRAD[47:19]とタグアドレスPA[47:19]とが一致する場合、マッチ検出部MDh1は、真を示す情報(例えば、論理値”1”)を比較結果として論理積回路ANDh1に出力する。また、アドレスRAD[47:19]とタグアドレスPA[47:19]とが一致しない場合、マッチ検出部MDh1は、偽を示す情報(例えば、論理値”0”)を比較結果として論理積回路ANDh1に出力する。
論理和回路ORh1は、アドレスRAD[18:7]で示されるインデックスアドレスPA[18:7]に対応する第1管理情報INFLLb0内のタイプコードTCLL[1:0]を、タグ部TAGLLbから受ける。そして、論理和回路ORh1は、タイプコードTCLL[0:0]とタイプコードTCLL[1:1]との論理和を演算し、演算結果(TCLL[0:0]とTCLL[1:1]との論理和結果)を論理積回路ANDh1に出力する。
論理積回路ANDh1は、マッチ検出部MDh1による比較結果と論理和回路ORh1の演算結果との論理積を演算し、演算結果をヒットウェイ情報HTWAY0として選択部SELh1に出力する。例えば、アクセス対象のデータがデータ保持部DMEMのウェイWAY0に保持されている場合、判定部DJW0は、真(例えば、論理値”1”)を示すヒットウェイ情報LLHTWAY0を選択部SELh1に出力する。
選択部SELh1は、ヒットウェイ情報HTWAY0、デコード情報LLWAY0および選択信号ACCWAYVALを受け、情報LLHTW0を選択部SELh2、SELh3、データ制御部DATACL等に出力する。例えば、選択部SELh1は、選択信号ACCWAYVALに基づいて、情報HTWAY0、LLWAY0のいずれかを情報LLHTW0として選択する。
ここで、選択信号ACCWAYVALは、例えば、パイプライン制御部PLCに処理要求MORPが投入された場合、論理値”1”に設定される。選択部SELh1は、選択信号ACCWAYVALが論理値”1”の場合、情報LLWAY0を選択する。すなわち、選択部SELh1は、処理要求MORPがパイプライン制御部PLCに投入された場合、情報LLWAY0を選択する。また、選択部SELh1は、処理要求READがパイプライン制御部PLCに投入された場合、情報HTWAY0を選択する。処理要求MVINがパイプライン制御部PLCに投入された場合、ブロックタイプチェンジ処理の要求では、情報HTWAY0が選択され、ブロックタイプチェンジ処理の要求以外では、情報LLWAY0が選択される。
選択部SELh2は、アドレスRAD[18:7]で示されるインデックスアドレスPA[18:7]に対応する第1管理情報INFLLb0−INFLLb15内のタイプコードTCLL[1:0]を入力信号として、タグ部TAGLLbから受ける。また、選択部SELh2は、ヒットウェイ情報LLHTW0−LLHTW15を選択信号として、判定部DJW0−DJW15から受ける。そして、選択部SELh2は、タグ部TAGLLbから受けた複数のタイプコードTCLL[1:0]のうち、ヒットウェイ情報LLHTW0−LLHTW15で指定されるタイプコードTCLL[1:0]をヒットデータ情報HTCLL[1:0]として選択する。
例えば、選択部SELh2は、真を示すヒットウェイ情報LLHTWに対応する第1管理情報INFLLb内のタイプコードTCLL[1:0]を、ヒットデータ情報HTCLL[1:0]として選択する。そして、選択部SELh2は、ヒットデータ情報HTCLL[1:0]を処理判定部PDJbに出力する。
選択部SELh3は、アドレスRAD[18:7]で示されるインデックスアドレスPA[18:7]に対応する第1管理情報INFLLb0−INFLLb15内のタイプコードTCL1[1:0]を入力信号として、タグ部TAGLLbから受ける。また、選択部SELh3は、ヒットウェイ情報LLHTW0−LLHTW15を選択信号として、判定部DJW0−DJW15から受ける。そして、選択部SELh3は、タグ部TAGLLbから受けた複数のタイプコードTCL1[1:0]のうち、ヒットウェイ情報LLHTW0−LLHTW15で指定されるタイプコードTCL1[1:0]を情報HTCL1b[1:0]として選択する。
例えば、選択部SELh3は、真を示すヒットウェイ情報LLHTWに対応する第1管理情報INFLLb内のタイプコードTCLL[1:0]を、情報HTCL1b[1:0]として選択する。そして、選択部SELh3は、情報HTCL1b[1:0]をコア判定部CDJbに出力する。
図11は、図9に示したコア判定部CDJbの一例を示す。コア判定部CDJbは、複数の判定部DJL1b(DJL1b0−DJL1b63)と、複数の論理和回路ORcw(ORcw0−ORcw15)と、選択部SELc1とを有する。判定部DJL1bの末尾の数字は、第2管理情報INFL1bの末尾の数字に対応する。複数の判定部DJL1bは互いに同一または同様であるため、判定部DJL1b0について説明する。
判定部DJL1b0は、デコード部DECc1、マッチ検出部MDc1、論理和回路ORc1および論理積回路ANDc1、ANDc2、ANDcw0−ANDcw15を有する。論理積回路ANDcwの末尾の数字は、第2キャッシュメモリLLbのウェイWAYの末尾の数字に対応する。
デコード部DECc1は、アドレスRAD[13:7]で示されるインデックスアドレスPA[13:7]に対応する第2管理情報INFL1b0内のウェイ情報WAYLL[3:0]を、タグ部TAGL1bから受ける。そして、デコード部DECc1は、ウェイ情報WAYLL[3:0]が示す論理値をデコードし、複数のウェイWAY0−WAY15の各々に対して真であるか否かを示すビットを含むデコード情報LLW0−LLW15を生成する。例えば、ウェイ情報WAYLL[3:0]が十進数で”15”を示す場合、デコード部DECc1は、デコード情報LLW15を真(例えば、論理値”1”)に設定し、デコード情報LLW0−LLW14を偽(例えば、論理値”0”)に設定する。
デコード部DECc1は、ウェイ情報WAYLL[3:0]をデコードしたデコード情報LLW0−LLW15を、論理積回路ANDcw0−ANDcw15にそれぞれ出力する。例えば、デコード部DECc1は、デコード情報LLW0を論理積回路ANDcw0に出力する。
論理積回路ANDcw0は、ヒット判定部HDJbの判定部DJW0から受けたヒットウェイ情報LLHTW0とデコード部DECc1から受けたデコード情報LLW0との論理積を演算し、演算結果を論理和回路ORc1に出力する。論理積回路ANDcw0以外の論理積回路ANDcwは、論理積回路ANDcw0の説明における判定部DJW、ヒットウェイ情報LLHTWおよびデコード情報LLWの末尾の数字を、論理積回路ANDcwに対応する数字に読み替えることで説明される。
論理和回路ORc1は、論理積回路ANDcw0−ANDcw15のそれぞれの演算結果の論理和を演算し、演算結果を論理積回路ANDc1に出力する。
マッチ検出部MDc1は、アドレスRAD[13:7]で示されるインデックスアドレスPA[13:7]に対応する第2管理情報INFL1b0内の差分情報PA[18:14]を、タグ部TAGL1bから受ける。そして、マッチ検出部MDc1は、投入部INPbから受けたアドレスRAD[18:14]と、第2管理情報INFL1b0内の差分情報PA[18:14]とを比較し、比較結果を論理積回路ANDc1に出力する。例えば、アドレスRAD[18:14]と差分情報PA[18:14]とが一致する場合、マッチ検出部MDc1は、真を示す情報(例えば、論理値”1”)を比較結果として論理積回路ANDc1に出力する。また、アドレスRAD[18:14]と差分情報PA[18:14]とが一致しない場合、マッチ検出部MDc1は、偽を示す情報(例えば、論理値”0”)を比較結果として論理積回路ANDc1に出力する。
すなわち、マッチ検出部MDc1は、アドレスRAD[18:14]と差分情報PA[18:14]とが一致する場合を真とする一致フラグを複数の第1キャッシュメモリL1の各々のウェイ毎に生成する一致フラグ生成部の一例である。
論理積回路ANDc1は、アドレスRAD[13:7]で示されるインデックスアドレスPA[13:7]に対応する第2管理情報INFL1b0内のバリッドVL1を、タグ部TAGL1bから受ける。
そして、論理積回路ANDc1は、マッチ検出部MDc1による比較結果と論理和回路ORc1の演算結果とタグ部TAGL1bから受けたバリッドVL1との論理積を演算し、演算結果を論理積回路ANDc2に出力する。
論理積回路ANDc2は、ヒット判定部HDJbから受けた情報HTCL1bと論理積回路ANDc1の演算結果との論理積を演算し、演算結果をコアデータ情報HTCL100[1:0]として出力する。
論理和回路ORcw0は、アドレスRAD[18:7]で示されるインデックスアドレスPA[18:7]に対応する第1管理情報INFLLb0内のタイプコードTCL1[1:0]をタグ部TAGLLbから受ける。そして、論理和回路ORcw0は、タグ部TAGLLbから受けたタイプコードTCL1[0:0]とタイプコードTCL1[1:1]との論理和を演算し、演算結果を所持情報CWAY0として条件一致検出部CONDbに出力する。なお、論理和回路ORcwおよび所持情報CWAYの末尾の数字は、第2キャッシュメモリLLbのウェイWAYの末尾の数字に対応する。なお、論理和回路ORcw0以外の論理和回路ORcwは、論理和回路ORcw0の説明における第1管理情報INFLLbおよび所持情報CWAYの末尾の数字を、論理和回路ORcwに対応する数字に読み替えることで説明される。例えば、第1キャッシュメモリL1に保持されたデータを保持しているウェイWAYに対応する所持情報CWAYは、論理値”1”に設定される。
選択部SELc1は、アドレスRAD[18:7]で示されるインデックスアドレスPA[18:7]に対応する第1管理情報INFLLb0−INFLLb15内のタイプコードTCL1[1:0]を入力信号として、タグ部TAGLLbから受ける。また、選択部SELc1は、要求ウェイ情報REQCWAYを選択信号として、投入部INPbから受ける。そして、選択部SELc1は、タグ部TAGLLbから受けた複数のタイプコードTCL1[1:0]のうち、要求ウェイ情報REQCWAYで指定されるタイプコードTCL1[1:0]を要求データ情報REQTCL1[1:0]として選択する。選択部SELc1により選択された要求データ情報REQTCL1[1:0]は、処理判定部PDJbに転送される。
図12は、図9に示した条件一致検出部CONDbの一例を示す。条件一致検出部CONDbは、複数の検出部DETb(DETb0−DETb15)を有する。検出部DETbの末尾の数字は、第2キャッシュメモリLLbのウェイWAYの末尾の数字に対応する。複数の検出部DETbは互いに同一または同様であるため、検出部DETb0について説明する。
検出部DETb0は、ウェイWAY0に保持されたデータのうち、インデックスアドレスPA[18:7]で示される追い出し対象データの候補が抑止条件を満たすかを検出する。
例えば、検出部DETb0は、排他的否定論理和回路ENORd1、ENORd2、否定論理積回路NANDd1、論理積回路ANDd1、ANDd2、否定論理和回路NORd1および論理和回路ORd1を有する。図12に示す情報CMGIDは、第2キャッシュメモリLLbが所属するccNUMAを構成するノードに関する固定情報であり、ccNUMAを構成するノード毎に固有の番号が割り当てられる。情報CMGIDは、アドレスRAD[47:0]の上位ビットで判別される。図2に示す情報処理装置IPEbでは、4つのCMGが存在するため、アドレスRAD[47:0]の上位2ビットのアドレスRAD[47:46]が情報CMGIDに割り当てられる。
排他的否定論理和回路ENORd2は、情報SINに含まれるアドレスRAD[47:47]と情報CMGID[1:1]との排他的否定論理和を演算し、演算結果を論理積回路ANDd2に出力する。例えば、排他的否定論理和回路ENORd2は、アドレスRAD[47:47]が情報CMGID[1:1]に一致する場合に、論理値”1”を論理積回路ANDd2に出力する。
排他的否定論理和回路ENORd1は、情報SINに含まれるアドレスRAD[46:46]と情報CMGID[0:0]との排他的否定論理和を演算し、演算結果を論理積回路ANDd2に出力する。例えば、排他的否定論理和回路ENORd1は、アドレスRAD[46:46]が情報CMGID[0:0]に一致する場合に、論理値”1”を論理積回路ANDd2に出力する。
論理積回路ANDd2は、排他的否定論理和回路ENORd1の演算結果と排他的否定論理和回路ENORd2の演算結果との論理積を演算し、演算結果を論理積回路ANDd1に出力する。すなわち、論理積回路ANDd2は、ウェイWAY0に保持されたデータのうちの追い出し対象データの候補がccNUMA構成におけるローカルメモリアドレスに格納されるデータである場合、論理値”1”を論理積回路ANDd1に出力する。
否定論理積回路NANDd1は、アドレスRAD[18:7]で示されるインデックスアドレスPA[18:7]に対応する第1管理情報INFLLb0内のタイプコードTCLL[1:0]をタグ部TAGLLbから受ける。そして、否定論理積回路NANDd1は、タグ部TAGLLbから受けたタイプコードTCLL[0:0]の反転信号とタイプコードTCLL[1:1]との否定論理積を演算し、演算結果を論理積回路ANDd1に出力する。すなわち、否定論理積回路NANDd1は、ウェイWAY0に保持されたデータのうちの追い出し対象データの候補の状態が”変更”以外の場合、論理値”1”を論理積回路ANDd1に出力する。
論理積回路ANDd1は、論理積回路ANDd2の演算結果と所持情報CWAY0の反転信号と否定論理積回路NANDd1の演算結果との論理積を演算し、演算結果を論理和回路ORd1に出力する。すなわち、論理積回路ANDd1は、ウェイWAY0に保持されたデータのうちの追い出し対象データの候補が図11で説明した第2条件を満たす場合、論理値”1”を論理和回路ORd1に出力する。
否定論理和回路NORd1は、アドレスRAD[18:7]で示されるインデックスアドレスPA[18:7]に対応する第1管理情報INFLLb0内のタイプコードTCLL[1:0]をタグ部TAGLLbから受ける。そして、否定論理和回路NORd1は、タグ部TAGLLbから受けたタイプコードTCLL[0:0]とタイプコードTCLL[1:1]との否定論理和を演算し、演算結果を論理和回路ORd1に出力する。すなわち、否定論理和回路NORd1は、ウェイWAY0に保持されたデータのうちの追い出し対象データの候補の状態が”無効”である場合(図11で説明した第1条件を満たす場合)、論理値”1”を論理和回路ORd1に出力する。
論理和回路ORd1は、論理積回路ANDd1の演算結果と否定論理和回路NORd1の演算結果との論理和を演算し、演算結果をマッチウェイ情報MWAY0として処理判定部PDJbに出力する。すなわち、論理和回路ORd1は、ウェイWAY0に保持されたデータのうちの追い出し対象データの候補が図11で説明した第1条件または第2条件を満たす場合、論理値”1”を論理和回路ORd1に出力する。
図13は、図9に示した処理判定部PDJbの一例を示す。図13に示す一点鎖線および網掛けの矩形の意味は、図8に示した一点鎖線および網掛けの矩形と同じである。処理判定部PDJbは、追い出し要求完了判定部CTDJ、追い出し実行判定部EXDJ、指示生成部IGEN、第2キャッシュタグ更新判定部TGDJ、第2キャッシュタグデータ生成部TDGENおよび第1キャッシュ制御部CMCNTLbを有する。さらに、処理判定部PDJbは、アボート判定部ABDJ、インターロック制御部INTCL、論理積回路ANDp1、ANDp2、ANDp3、ANDp4、ANDp5、論理和回路ORp1、選択部SELp1、SELp2、SELp3およびデコード部DECを有する。
選択部SELp1は、各ウェイWAYの追い出し対象データの候補が抑止条件を満たすかを示す各ウェイWAYのマッチウェイ情報MWAY0−MWAY15のうち、情報RWAYIDが示すビクティムウェイWAYに対応するマッチウェイ情報MWAYを選択する。そして、選択部SELp1は、情報RWAYIDに基づいて選択したマッチウェイ情報MWAYを論理積回路ANDp1に出力する。情報RWAYIDに基づいて選択されたマッチウェイ情報MWAYは、ビクティムウェイWAYに保持された追い出し対象データが抑止条件を満たすかを示す。例えば、追い出し対象データが抑止条件を満たす場合、論理値”1”の信号が論理積回路ANDp1に出力される。すなわち、選択部SELp1および図12に示した条件一致検出部CONDbは、抑止条件が満たされるか否かを判定する条件判定部の一例である。
追い出し要求完了判定部CTDJは、追い出し要求MORPがパイプライン制御部PLCに投入された場合、追い出し要求MORPに基づく処理が完了したか否かを、情報SIN、LLHTW、HTCLL等に基づいて判定する。例えば、追い出し要求完了判定部CTDJは、追い出し要求MORPに基づく処理が完了した場合、論理値”1”の信号を論理積回路ANDp5に出力する。
追い出し実行判定部EXDJは、処理要求MORPを抑止するか否かに拘わらず、データ保持部DMEMからデータを追い出す処理が必要であるか否かを、情報SIN、LLHTW、HTCLL等に基づいて判定する。例えば、データ保持部DMEMからデータを追い出す処理が必要である場合、論理値”1”の信号を論理積回路ANDp1に出力する。
論理積回路ANDp1は、選択部SELp1の出力信号と追い出し実行判定部EXDJの出力信号との論理積を演算し、演算結果を情報NMORPとして論理和回路ORp1およびキャッシュミス制御部MIBに出力する。例えば、データ保持部DMEMからデータを追い出す処理が必要で、追い出し対象データが抑止条件を満たす場合、情報NMORPは論理値”1”に設定される。これにより、データ保持部DMEMからデータを追い出す処理が必要である場合でも、追い出し要求MORPの発行が抑止される。この場合、データ保持部DMEMからデータを追い出す処理は、読み出し要求READ内で実行される。また、情報NMORPは、ステージ4において、インターロック制御部INTCLに転送される。
指示生成部IGENは、情報SIN、LLHTW、HTCLL等に基づいて、キャッシュミス制御部MIBへのリクエストを生成する。例えば、指示生成部IGENは、第2キャッシュメモリLLbがキャッシュミスした場合、キャッシュミス制御部MIBの資源(例えば、図7に示した制御バッファ部INCNTL)を獲得する情報VALIDを生成する。情報VALIDは、論理積回路ANDp2を介してキャッシュミス制御部MIBに転送される。また、指示生成部IGENは、キャッシュミス制御部MIBの資源を獲得する場合、ブロックタイプチェンジ処理を要求するか否かを示す情報BTCを生成し、情報BTCを選択部SELp3およびキャッシュミス制御部MIBに出力する。
例えば、情報VALID、BTCが論理値”1”の場合、後続では、ブロックタイプチェンジ処理が実行される。また、情報VALIDが論理値”1”で、情報BTC、NMORPが論理値”0”の場合、後続では、追い出し要求MORPが発行される。なお、情報NMORPが論理値”1”の場合、追い出し要求MORPの発行が抑止され、データ保持部DMEMからデータを追い出す処理が読み出し要求READ内で実行される。
第2キャッシュタグ更新判定部TGDJは、情報SIN、LLHTW、HTCLL等に基づいて、タグ部TAGLLbを更新するか否かを判定する。そして、第2キャッシュタグ更新判定部TGDJは、判定結果を論理和回路ORp1に出力する。例えば、第2キャッシュタグ更新判定部TGDJは、情報SINが示す処理要求が読み出し要求READである場合、タグ部TAGLLbを更新しないと判定する。第2キャッシュタグ更新判定部TGDJの出力信号は、タグ部TAGLLbを更新する従来の制御信号に対応する。
論理和回路ORp1は、第2キャッシュタグ更新判定部TGDJの判定結果と論理積回路ANDp1の出力信号との論理和を演算し、演算結果を論理積回路ANDp3に出力する。したがって、論理和回路ORp1は、タグ部TAGLLbを更新しないと第2キャッシュタグ更新判定部TGDJにより判定された場合でも、追い出し対象データが抑止条件を満たす場合、論理値”1”の信号を論理積回路ANDp3に出力する。論理和回路ORp1から出力される論理値”1”の信号は、タグ部TAGLLbを更新することを意味する。このように、論理和回路ORp1を従来の構成に追加することにより、読み出し要求READ内でタグ部TAGLLbを更新することができる。
第2キャッシュタグデータ生成部TDGENは、情報SIN、LLHTW、HTCLL等に基づいて、タグ部TAGLLbの更新データWDを生成し、更新データWDをタグ部TAGLLbに出力する。
第1キャッシュ制御部CMCNTLbは、情報SIN、LLHTW、HTCLL、HTCL1、REQTCL1、ADMS等に基づいて、第1キャッシュメモリL1を制御する。例えば、第1キャッシュ制御部CMCNTLbは、リプレースを指示する情報IRPL、スヌープを指示する情報ISNP等をコアCOREに出力する。
アボート判定部ABDJは、情報SIN、ADMS、ADMMおよびインターロック制御部INTCLの出力信号等に基づいて、パイプライン制御部PLCに投入された処理要求を中止するか否かを判定する。そして、アボート判定部ABDJは、判定結果を論理積回路ANDp2、ANDp3、ANDp5に出力する。例えば、アボート判定部ABDJは、パイプライン制御部PLCに投入された処理要求を中止する場合、論理値”1”の信号を論理積回路ANDp2、ANDp3、ANDp5に出力する。
インターロック制御部INTCLは、タグ部TAGLLbの内容に更新が発生した際、更新処理が完了するまで以降の処理を無効とするための処理機構である。例えば、読み出し要求READ内でのタグ部TAGLLbの更新処理の後続において同一ブロックを参照する処理要求をロック(アボート)させる。このように、インターロック制御部INTCLは、先行する処理と同一のブロックを更新する処理要求があった場合、処理要求をロックさせる。
論理積回路ANDp5は、アボート判定部ABDJの判定結果の反転信号と追い出し要求完了判定部CTDJの出力信号との論理積を演算し、演算結果を情報MORPCTとしてキャッシュミス制御部MIBに出力する。例えば、論理積回路ANDp5は、処理要求MORPに基づく処理がアボートせずに正常に終了した場合、追い出し要求MORPに基づく処理が完了したことを示す情報MORPCTを、追い出し要求完了判定部CTDJからキャッシュミス制御部MIBに転送する。情報MORPCTを受けたキャッシュミス制御部MIBは、処理要求MVINを投入部INPbを介してパイプライン制御部PLCbに投入する。
論理積回路ANDp2は、アボート判定部ABDJの判定結果の反転信号と指示生成部IGENの出力信号との論理積を演算し、演算結果を情報VALIDとして選択部SELp2およびキャッシュミス制御部MIBに出力する。
論理積回路ANDp3は、アボート判定部ABDJの判定結果の反転信号と論理和回路ORp1の出力信号との論理積を演算し、演算結果を論理積回路ANDp4に出力する。
選択部SELp2は、情報LLHTW、RWAYIDのいずれかを、論理積回路ANDp2の出力信号に基づいて選択してデコード部DECに出力する。情報LLHTWは、タグ部TAGLLbに保持された複数の第1管理情報INFLLbのうち、パイプライン制御部PLCに投入された処理要求がヒットした場合にアクセスされるウェイWAYを示す。情報RWAYIDは、図9で説明したように、データ保持部DMEMから追い出すデータ(追い出し対象データ)を保持しているウェイWAYを示す。
例えば、選択部SELp2は、情報VALIDが論理値”1”の場合、すなわち、第2キャッシュメモリLLbがキャッシュミスした場合、情報RWAYIDをデコード部DECに出力する。また、選択部SELh2は、処理要求MORPがパイプライン制御部PLCに投入された場合、情報LLHTWを選択する。なお、処理要求MVINがパイプライン制御部PLCに投入された場合、ブロックタイプチェンジ処理の要求では、情報RWAYIDが選択され、ブロックタイプチェンジ処理の要求以外では、情報LLHTWが選択される。このように、選択部SELp2を従来の構成に追加することにより、読み出し要求READ内でタグ部TAGLLbを更新することができる。
デコード部DECは、選択部SELp2の出力信号をウェイWAY毎の信号にデコードする。
論理積回路ANDp4は、デコード部DECの出力信号と論理積回路ANDp3の出力信号との論理積を演算し、演算結果を情報WEとしてタグ部TAGLLbに出力する。すなわち、論理積回路ANDp4は、タグ部TAGLLbに保持された複数のウェイWAYの第1管理情報INFLLbのうちの更新対象の第1管理情報INFLLbを示す情報WEを、タグ部TAGLLbに出力する。このように、論理積回路ANDp4は、タグ部TAGLLbを更新する場合、更新対象のウェイWAYを示す情報WEをタグ部TAGLLbに出力する。
タグ部TAGLLbに保持された複数の第1管理情報INFLLbのうちの更新対象の第1管理情報INFLLbは、情報WE(ライトイネーブル)およびアドレスRAD[18:7]に基づいて選択される。そして、情報WEおよびアドレスRAD[18:7]に基づいて選択された第1管理情報INFLLbは、更新データWDに基づいて更新される。これにより、タグ部TAGLLbの内容が更新される。
選択部SELp3は、情報BTC、RWAYIDのいずれかを情報WAYIDとして、情報BTCに基づいて選択する。例えば、選択部SELp3は、情報BTCが論理値”0”の場合、情報RWAYIDを情報WAYIDとして選択する。また、選択部SELp3は、情報BTCが論理値”1”の場合、情報BTCを情報WAYIDとして選択する。
図14は、追い出し対象データが抑止条件を満たす場合の演算処理装置PUbの動作の一例を示す。なお、図14の括弧内に、追い出し要求MORPを抑止する制御がない比較例を示す。図14に示す実線の矢印は、追い出し対象データに関する処理を示し、点線の矢印は、第1キャッシュメモリL1から要求された要求データに関する処理を示す。図14の”LL Victim”は、追い出し対象データを示す。
図14では、第1キャッシュメモリL1および第2キャッシュメモリLLbは、要求データを保持していない。また、要求データは、”Local=Host”であり、他のCMGに持ち出されていない。追い出し対象データは、”Local=Host”であり、第1キャッシュメモリL1での状態が”無効”であり、第2キャッシュメモリLLbでの状態が”排他”であり、要求元のコアCORE0の属するCMGのみに保持されている。
コアCORE0は、要求データが第1キャッシュメモリL1でキャッシュミスしたため、読み出し要求READを第2キャッシュメモリLLbに発行する(図14(a1))。これにより、パイプライン制御部PLCに読み出し要求READが投入される。パイプライン制御部PLCは、第1キャッシュメモリL1からの読み出し要求READで要求された要求データが第2キャッシュメモリLLbに格納されているかを検索する(図14(a2))。パイプライン制御部PLCは、要求データが第2キャッシュメモリLLでキャッシュミスしたが、追い出し対象データが抑止条件を満たすため、キャッシュミス制御部MIBに対して追い出し要求MORPの発行の抑止を指示する(図14(a3))。さらに、パイプライン制御部PLCは、タグ部TAGLLbの追い出し対象データの状態を”無効”に更新する(図14(a4))。
図14に示す例では、追い出し対象データは、第1キャッシュメモリL1に保持されておらず、要求元のコアCORE0の属するCMGの第2キャッシュメモリLLbのみが更新されていないデータを保持している。したがって、追い出し対象データを主記憶装置MEM0に退避する必要がないため、追い出し対象データの第1管理情報INFLLbを解放するのみで追い出し対象データを第2キャッシュメモリLLbから追い出す処理は終了する。このように、パイプライン制御部PLCは、追い出し対象データが抑止条件を満たす場合、追い出し要求MORPに基づく処理相当の処理を読み出し処理READ内で実行できる。
また、パイプライン制御部PLCは、メモリ制御部MCNTLに要求データを要求する(図14(a5))。メモリ制御部MCNTLは、要求データの読み出しを実行し、キャッシュミス制御部MIBに要求データを応答する(図14(a6))。キャッシュミス制御部MIBは、メモリ制御部MCNTLからデータ応答があった場合、処理要求MVINをパイプライン制御部PLCに投入部INPbを介して投入する(図14(a7))。処理要求MVINは、メモリ制御部MCNTLから応答のあったデータを第2キャッシュメモリLLbに格納する要求である。
パイプライン制御部PLCは、処理要求MVINに基づく処理が終了した場合、第1キャッシュメモリL1に要求データを応答するとともに、第1キャッシュメモリL1からデータを追い出すL1リプレース処理の実行を指示する(図14(a8))。また、パイプライン制御部PLCは、キャッシュミス制御部MIBの資源を開放する(図14(a9))。さらに、パイプライン制御部PLCは、第1キャッシュメモリL1にL1リプレース処理を実行させるため、L1リプレース処理の対象アドレスに対してスヌープロックを実行する(図14(a10))。
コアCORE0は、第1キャッシュメモリL1でのL1リプレース処理が完了した場合、第2キャッシュメモリに処理要求BISRを発行する。処理要求BISRを受けたパイプライン制御部PLCは、処理要求BISRに基づく処理を実行する(図14(a11))。処理要求BISRに基づく処理は、例えば、第1キャッシュメモリL1から第2キャッシュメモリLLへのライトバックを伴わないリプレース完了処理である。例えば、処理要求BISRでは、タグ部TAGLLbに保持された第1管理情報INFLLb内のタイプコードTCL1、第2管理情報INFL1b等が更新される。処理要求BISRに基づく処理の終了により、スヌープロックが解除される。
ここで、比較例では、パイプライン制御部PLCは、第2キャッシュメモリLLがキャッシュミスした場合、追い出し対象データを第2キャッシュメモリLLから追い出すために、キャッシュミス制御部MIBの資源を獲得する。そして、キャッシュミス制御部MIBは、資源が獲得された場合、追い出し要求MORPをパイプライン制御部PLCに発行する(図14(b4))。パイプライン制御部PLCは、追い出し要求MORPを受けた場合、タグ部TAGLLbの追い出し対象データの状態を”無効”に更新することにより、追い出し対象データを第2キャッシュメモリLLから追い出す。このように、比較例では、追い出し要求MORPが読み出し要求READに後続して発行される。
これに対し、図3に示した第2キャッシュメモリLLbでは、追い出し要求MORPの発行が抑止されるため、パイプライン制御部PLCに投入される処理要求の数が比較例に比べて減少する。このため、パイプライン制御部PLCのスループットを向上させることができる。
図15は、追い出し対象データが抑止条件を満たさない場合の演算処理装置PUbの動作の一例を示す。図15に示す実線の矢印、点線の矢印および”LL Victim”の意味は、図14と同じである。図15では、第1キャッシュメモリL1および第2キャッシュメモリLLbは、要求データを保持していない。また、要求データは、”Local=Host”であり、他のCMGに持ち出されていない。追い出し対象データは、”Local=Host”であり、第1キャッシュメモリL1での状態が”変更”であり、第2キャッシュメモリLLbでの状態が”排他”であり、要求元のコアCORE0の属するCMGのみに保持されている。
コアCORE0は、要求データが第1キャッシュメモリL1でキャッシュミスしたため、読み出し要求READを第2キャッシュメモリLLbに発行する(図15(c1))。パイプライン制御部PLCは、第1キャッシュメモリL1からの読み出し要求READで要求された要求データが第2キャッシュメモリLLbに格納されているかを検索する(図15(c2))。第2キャッシュメモリLLbがキャッシュミスしたため、パイプライン制御部PLCは、メモリ制御部MCNTLに要求データを要求する(図15(c3))。
パイプライン制御部PLCは、追い出し対象データが抑止条件を満たさないため、キャッシュミス制御部MIBの資源を獲得する。そして、キャッシュミス制御部MIBは、資源が獲得された場合、追い出し要求MORPをパイプライン制御部PLCに発行する(図15(c4))。また、パイプライン制御部PLCは、追い出し対象データが第1キャッシュメモリL1に保持されているため、第1キャッシュメモリL1に対して追い出し対象データの無効化を要求する。第1キャッシュメモリL1は、第2キャッシュメモリからの無効化要求を受けた場合、追い出し対象データの無効化処理を実行する(図15(c6))。例えば、第1キャッシュメモリL1は、追い出し対象データを更新しているため、追い出し対象データの書き戻しを第2キャッシュメモリLLbに発行する。書き戻し要求を受けたパイプライン制御部PLCは、追い出し対象データの主記憶装置MEM0への書き戻しを実行する(図15(c8))。例えば、パイプライン制御部PLCは、書き戻し制御部(図示せず)の資源を獲得し、メモリ制御部MCNTLに追い出し対象データを転送する。
キャッシュミス制御部MIBは、メモリ制御部MCNTLからデータ応答があり(図15(c5))、かつ、追い出し対象データの退避が完了した場合、処理要求MVINをパイプライン制御部PLCに投入部INPbを介して投入する(図15(c9))。処理要求MVINに基づく処理が完了した後の動作は、図14に示した動作と同一または同様である。
ここで、第2キャッシュメモリLLbは、第1キャッシュメモリL1が追い出し対象データを”排他”で保持していると判定するが、第1キャッシュメモリL1が追い出し対象データを更新したか否かは把握していない。このため、パイプライン制御部PLCは、第1キャッシュメモリL1が追い出し対象データを保持している場合、追い出し要求MORPの発行を抑止しない。
なお、パイプライン制御部PLCは、追い出し対象データの第1キャッシュメモリL1での状態を詳細に把握してもよい。例えば、第1キャッシュメモリL1は、データを更新する度に、データの状態を第2キャッシュメモリLLに報告してもよい。
図16は、追い出し対象データが抑止条件を満たさない場合の演算処理装置PUbの動作の別の例を示す。図16に示す実線の矢印、点線の矢印および”LL Victim”の意味は、図14と同じである。図16では、第1キャッシュメモリL1および第2キャッシュメモリLLbは、要求データを保持していない。また、要求データは、”Local≠Host”であり、他のCMGに持ち出されていない。追い出し対象データは、”Local≠Host”であり、第1キャッシュメモリL1での状態が”無効”であり、第2キャッシュメモリLLbでの状態が”変更”であり、要求元のコアCORE0の属するCMGのみに保持されている。要求データおよび追い出し対象データの格納先は、演算処理装置PUb1に接続された主記憶装置MEM1である。
コアCORE0は、要求データが第1キャッシュメモリL1でキャッシュミスしたため、読み出し要求READを第2キャッシュメモリLLbに発行する(図16(d1))。パイプライン制御部PLCは、第1キャッシュメモリL1からの読み出し要求READで要求された要求データが第2キャッシュメモリLLbに格納されているかを検索する(図16(d2))。第2キャッシュメモリLLbがキャッシュミスしたため、パイプライン制御部PLCは、演算処理装置PUb1のメモリ制御部MCNTLに要求データを要求する(図16(d3))。
パイプライン制御部PLCは、追い出し対象データが抑止条件を満たさないため、キャッシュミス制御部MIBの資源を獲得する。そして、キャッシュミス制御部MIBは、資源が獲得された場合、追い出し要求MORPをパイプライン制御部PLCに発行する(図16(d4))。
パイプライン制御部PLCは、追い出し対象データが更新されているため、追い出し対象データの管理元のCMGに属する演算処理装置PUb1に、書き戻しと無効化を要求する(図16(d6))。演算処理装置PUb1のパイプライン制御部PLCは、追い出し対象データの書き戻しと無効化処理とが完了した場合、完了報告を演算処理装置PUb0のキャッシュミス制御部MIBに通知する(図16(d7))。
パイプライン制御部PLCは、追い出し対象データに対する演算処理装置PUb1での書き戻し処理および無効化処理が完了した場合、処理要求MVINをパイプライン制御部PLCに投入部INPbを介して投入する(図16(d8))。すなわち、キャッシュミス制御部MIBは、メモリ制御部MCNTLからデータ応答があり(図16(d5))、かつ、追い出し対象データの退避が完了した場合、処理要求MVINをパイプライン制御部PLCに投入部INPbを介して投入する。処理要求MVINに基づく処理が完了した後の動作は、図15に示した動作と同一または同様である。
図17は、追い出し対象データが抑止条件を満たさない場合の演算処理装置PUbの動作の別の例を示す。図17に示す実線の矢印、点線の矢印の意味は、図14と同じである。また、図17の”L1 Victim”は、第1キャッシュメモリL1から追い出されるデータを示す。図17では、先行の読み出し要求READで要求される要求データは、第2キャッシュメモリLLbに保持されている。そして、後続の読み出し要求で要求される要求データは、第1キャッシュメモリL1および第2キャッシュメモリLLbに保持されていない。また、要求データは、”Local=Host”であり、他のCMGに持ち出されていない。追い出し対象データは、”Local=Host”であり、第1キャッシュメモリL1での状態が”無効”であり、第2キャッシュメモリLLbでの状態が”排他”であり、要求元のコアCORE0の属するCMGのみに保持されている。また、追い出し対象データは、スヌープロック部SNPbに登録されている。
コアCORE0は、要求データが第1キャッシュメモリL1でキャッシュミスしたため、読み出し要求READを第2キャッシュメモリLLbに発行する(図17(e1))。パイプライン制御部PLCは、第1キャッシュメモリL1からの読み出し要求READ(先行の読み出し要求READ)で要求された要求データが第2キャッシュメモリLLbに格納されているかを検索する(図17(e2))。第2キャッシュメモリLLbがキャッシュヒットしたため、パイプライン制御部PLCは、第1キャッシュメモリL1に要求データを応答するとともに、第1キャッシュメモリL1からデータを追い出すL1リプレース処理の実行を指示する(図17(e4))。また、パイプライン制御部PLCは、第1キャッシュメモリL1にL1リプレース処理を実行させるため、L1リプレース処理の対象アドレスに対してスヌープロックを実行する(図17(e3))。そして、パイプライン制御部PLCは、処理要求BISRを受けた場合、処理要求BISRに基づく処理を実行する(図17(e5))。
また、コアCORE0は、後続の要求データが第1キャッシュメモリL1でキャッシュミスしたため、読み出し要求READを第2キャッシュメモリLLbに発行する(図17(f1))。パイプライン制御部PLCは、第1キャッシュメモリL1からの読み出し要求READ(後続の読み出し要求READ)で要求された要求データが第2キャッシュメモリLLbに格納されているかを検索する(図17(f2))。第2キャッシュメモリLLbがキャッシュミスしたため、追い出し対象データが決定される。追い出し対象データは、先行する読み出し要求READに基づく処理(図17(e1)−(e5))により、スヌープロック部SNPbに登録されている。すなわち、追い出し対象データは抑止条件を満たさない。
このため、パイプライン制御部PLCは、キャッシュミス制御部MIBの資源を獲得するとともに(図17(f3))、メモリ制御部MCNTLに要求データを要求する(図17(f4))。そして、キャッシュミス制御部MIBは、メモリ制御部MCNTLから要求データの応答があった場合、追い出し要求MORPをパイプライン制御部PLCに発行する(図17(f5))。図17ではスヌープロックが解除されてから追い出し要求MORPに基づく処理が実行されているように記載しているが、実際にはスヌープロックが解除されるまで以下のフロー1、フロー2およびフロー3を実行する。
フロー1では、キャッシュミス制御部MIBは、スヌープロックに関係なく、追い出し要求MORPの実行環境が整うとパイプライン制御部PLCに対して追い出し要求MORPを発行する。
フロー2では、パイプライン制御部PLCは、追い出し要求MORPの処理を実行した結果、追い出し対象データがスヌープロックにより追い出し不可であった場合、追い出し要求MORPの処理を中断する。そして、パイプライン制御部PLCは、追い出し要求MORPの処理を中止したことキャッシュミス制御部MIBに通知する。
フロー3では、キャッシュミス制御部MIBは、追い出し要求MORPの処理を中止したことが通知された場合、フロー1を再実行する。
キャッシュミス制御部MIBは、追い出し対象データの退避が完了した場合、処理要求MVINをパイプライン制御部PLCに投入部INPbを介して投入する。処理要求MVINに基づく処理が完了した後の動作は、図14に示した動作と同一または同様である。
図18は、図3に示したパイプライン制御部PLCに投入される処理要求の一例を示す。なお、図18の括弧内に、追い出し要求MORPを抑止する制御がない比較例を示す。読み出し要求READにより選択される追い出し対象データが全てクリーンである場合、パイプライン制御部PLCには、3つの処理要求READ、MVIN、BISRが投入される。これに対し、比較例では、4つの処理要求READ、MORP、MVIN、BISRがパイプライン制御部PLCに投入される。以下に、読み出し要求READ内で追い出し要求MORPに基づく処理相当の処理を実行することによって見込める性能改善を示す。
読み出し要求READにより選択される追い出し対象データが全てクリーンである場合、第2キャッシュメモリLLbでは、読み出し処理に基づく一連のフローは、12サイクルで4回実行される。これに対し、比較例では、読み出し処理に基づく一連のフローは、12サイクルで3回実行される。この場合、第2キャッシュメモリLLbでは、比較例に対して約33%の改善が見込めると考えられる。
図19は、図3に示したパイプライン制御部PLCの動作の一例を示す。なお、図19の括弧内に、追い出し要求MORPを抑止する制御がない比較例を示す。図19は、第1キャッシュメモリL1からの読み出し要求READで要求された要求データが第2キャッシュメモリLLbでキャッシュミスした場合のパイプライン制御部PLCの動作の一例である。したがって、図19に示すステップS100の前に、パイプライン制御部PLCは、図14等で説明したように、第1キャッシュメモリL1からの読み出し要求READで要求された要求データが第2キャッシュメモリLLbに格納されているかを検索する。そして、パイプライン制御部PLCは、要求データが第2キャッシュメモリLLでキャッシュミスしたことを検出し、ステップS100の処理を実行する。
ステップS100では、パイプライン制御部PLCは、メモリ制御部MCNTLに要求データを要求する。
次に、ステップS200では、パイプライン制御部PLCは、追い出し要求MORPの発行を抑止するか否かを判定する。追い出し要求MORPの発行を抑止するか否かの判定処理の詳細は、図20で説明する。追い出し要求MORPの発行を抑止する場合、パイプライン制御部PLCの動作は、ステップS220に移る。一方、追い出し要求MORPの発行を抑止しない場合、すなわち、追い出し要求MORPを発行する場合、パイプライン制御部PLCの動作は、ステップS240に移る。
ステップS220では、パイプライン制御部PLCは、追い出し要求MORPの発行を抑止する指示をキャッシュミス制御部MIBに通知する。ステップS220の処理が終了した後、パイプライン制御部PLCの動作は、ステップS300に移る。
ステップS300では、パイプライン制御部PLCは、メモリ制御部MCNTLからのデータ応答を待ち、メモリ制御部MCNTLからデータ応答があった場合、動作をステップS400に移す。
ステップS240では、パイプライン制御部PLCは、追い出し要求MORPを発行する指示をキャッシュミス制御部MIBに通知する。ステップS240の処理が実行された後、パイプライン制御部PLCの動作は、ステップS320およびステップS340に移る。なお、ステップS320およびステップS340は、並列に実行される。
ステップS320では、パイプライン制御部PLCは、メモリ制御部MCNTLからのデータ応答を待つ。
ステップS340では、パイプライン制御部PLCは、追い出し要求MORPに基づく処理を実行する。追い出し要求MORPに基づく処理の詳細は、図21で説明する。メモリ制御部MCNTLからデータ応答があり、追い出し要求MORPに基づく処理が終了した場合、パイプライン制御部PLCの動作は、ステップS400に移る。
ステップS400では、パイプライン制御部PLCは、図14等で説明したように、処理要求MVINに基づく処理、第1キャッシュメモリL1へのデータ応答、L1リプレース処理の指示等を実行する。
次に、ステップS420では、パイプライン制御部PLCは、図14等で説明したように、処理要求BISRに基づく処理を実行する。
なお、比較例では、ステップS200、S220、S300が省かれる。すなわち、比較例では、第2キャッシュメモリがキャッシュミスし、要求データを格納するウェイWAYに空きがない場合、追い出し対象データの状態に拘わらず、追い出し要求MORPが発行される。したがって、比較例では、パイプライン制御部PLCに比べて、パイプライン処理のスループットが低下する。換言すれば、パイプライン制御部PLCでは、パイプライン処理のスループットを比較例に比べて向上させることができる。なお、パイプライン制御部PLCの動作は、図19に示す例に限定されない。
図20は、追い出し要求MORPの発行を抑止するかを判定する処理の一例を示す。すなわち、図20は、図19に示したステップS200の判定処理の一例を示す。図20の”LL Victim”の意味は、図14と同じである。すなわち、図20の”LL Victim”は、追い出し対象データを示す。
ステップS202では、パイプライン制御部PLCは、追い出し対象データ(LL Victim)の第2キャッシュメモリLLbでの状態が”無効”か否かを判定する。追い出し対象データの状態が”無効”の場合、パイプライン制御部PLCの動作は、ステップS210に移る。一方、追い出し対象データの状態が”無効”以外の場合、パイプライン制御部PLCの動作は、ステップS204に移る。
ステップS204では、パイプライン制御部PLCは、追い出し対象データの格納先が自身を含む演算処理装置PUbに接続された主記憶装置MEMか否かを判定する。すなわち、パイプライン制御部PLCは、追い出し対象データが”Local=Host”であるか否かを判定する。パイプライン制御部PLCは、追い出し対象データの格納先が自身を含む演算処理装置PUbに接続された主記憶装置MEMである場合、動作をステップS206に移す。一方、パイプライン制御部PLCは、追い出し対象データの格納先が自身を含む演算処理装置PUb以外の演算処理装置PUbに接続された主記憶装置MEMである場合、動作をステップS212に移す。
ステップS206では、パイプライン制御部PLCは、第1キャッシュメモリL1が追い出し対象データを保持しているか否かを判定する。第1キャッシュメモリL1が追い出し対象データを保持している場合、パイプライン制御部PLCの動作は、ステップS212に移る。一方、第1キャッシュメモリL1が追い出し対象データを保持していない場合、パイプライン制御部PLCの動作は、ステップS208に移る。
ステップS208では、パイプライン制御部PLCは、追い出し対象データの状態が”変更”か否かを判定する。追い出し対象データの状態が”変更”の場合、パイプライン制御部PLCの動作は、ステップS212に移る。一方、追い出し対象データの状態が”変更”以外の場合、パイプライン制御部PLCの動作は、ステップS210に移る。
このように、ステップS202、S204、S206、S208の判定により、追い出し対象データが抑止条件を満たすか否かが判定される。
ステップS210では、パイプライン制御部PLCは、追い出し要求の発行を抑止すると判定し、追い出し対象データの状態を”無効”に更新する。例えば、パイプライン制御部PLCは、タグ部TAGLLbに保持された第1管理情報INFLLbのうち、追い出し対象データに対応する第1管理情報INFLLbのタイプコードTCLLを”無効”に更新する。ステップS210の処理が実行された後、パイプライン制御部PLCの動作は、図19に示したステップS220に移る。
ステップS212では、パイプライン制御部PLCは、追い出し要求を発行すると判定し、動作を図19に示したステップS240に移す。なお、追い出し要求MORPの発行を抑止するか否かを判定する処理は、図20に示す例に限定されない。
図21は、追い出し要求MORPに基づく処理の一例を示す。すなわち、図21は、図19に示したステップS340の処理の一例を示す。図21の”LL Victim”の意味は、図14と同じである。
ステップS342では、パイプライン制御部PLCは、追い出し対象データの第2キャッシュメモリLLbでの状態が”無効”か否かを判定する。追い出し対象データの状態が”無効”の場合、パイプライン制御部PLCの動作は、ステップS364に移る。一方、追い出し対象データの状態が”無効”以外の場合、パイプライン制御部PLCの動作は、ステップS344に移る。
ステップS344では、パイプライン制御部PLCは、追い出し対象データの格納先が自身を含む演算処理装置PUbに接続された主記憶装置MEMか否かを判定する。すなわち、パイプライン制御部PLCは、追い出し対象データが”Local=Host”であるか否かを判定する。パイプライン制御部PLCは、追い出し対象データの格納先が自身を含む演算処理装置PUbに接続された主記憶装置MEMである場合、動作をステップS346に移す。一方、パイプライン制御部PLCは、追い出し対象データの格納先が自身を含む演算処理装置PUb以外の演算処理装置PUbに接続された主記憶装置MEMである場合、動作をステップS354に移す。
ステップS346では、パイプライン制御部PLCは、第1キャッシュメモリL1が追い出し対象データを保持しているか否かを判定する。第1キャッシュメモリL1が追い出し対象データを保持している場合、パイプライン制御部PLCの動作は、ステップS350に移る。一方、第1キャッシュメモリL1が追い出し対象データを保持していない場合、パイプライン制御部PLCの動作は、ステップS348に移る。
ステップS348では、パイプライン制御部PLCは、追い出し対象データの状態が”変更”か否かを判定する。追い出し対象データの状態が”変更”の場合、パイプライン制御部PLCの動作は、ステップS352に移る。一方、追い出し対象データの状態が”変更”以外の場合、パイプライン制御部PLCの動作は、ステップS364に移る。
ステップS350では、パイプライン制御部PLCは、追い出し対象データを第1キャッシュメモリL1から追い出すL1リプレース処理を、第1キャッシュメモリL1に要求する。なお、追い出し対象データがダーティである場合、パイプライン制御部PLCは、追い出し対象データの主記憶装置MEMへの書き戻しを実行する。L1リプレース処理が完了した場合、パイプライン制御部PLCの動作は、ステップS364に移る。
ステップS352では、パイプライン制御部PLCは、追い出し対象データの主記憶装置MEMへの書き戻しを実行する。ステップS352の処理が実行された後、パイプライン制御部PLCの動作は、ステップS364に移る。
ステップS354では、パイプライン制御部PLCは、第1キャッシュメモリL1が追い出し対象データを保持しているか否かを判定する。第1キャッシュメモリL1が追い出し対象データを保持している場合、パイプライン制御部PLCの動作は、ステップS362に移る。一方、第1キャッシュメモリL1が追い出し対象データを保持していない場合、パイプライン制御部PLCの動作は、ステップS356に移る。
ステップS356では、パイプライン制御部PLCは、追い出し対象データの状態が”変更”か否かを判定する。追い出し対象データの状態が”変更”の場合、パイプライン制御部PLCの動作は、ステップS360に移る。一方、追い出し対象データの状態が”変更”以外の場合、パイプライン制御部PLCの動作は、ステップS358に移る。
ステップS358では、パイプライン制御部PLCは、追い出し対象データを管理する演算処理装置PUbに、追い出し対象データの無効化を要求する。ステップS358の処理が実行された後、パイプライン制御部PLCの動作は、ステップS364に移る。
ステップS360では、パイプライン制御部PLCは、追い出し対象データを管理する演算処理装置PUbに、追い出し対象データの書き戻しと無効化を要求する。ステップS360の処理が実行された後、パイプライン制御部PLCの動作は、ステップS364に移る。
ステップS362では、パイプライン制御部PLCは、追い出し対象データを第1キャッシュメモリL1から追い出すL1リプレース処理を、第1キャッシュメモリL1に要求する。さらに、パイプライン制御部PLCは、追い出し対象データを管理する演算処理装置PUbに、追い出し対象データの無効化を要求する。なお、追い出し対象データがダーティである場合、パイプライン制御部PLCは、追い出し対象データを管理する演算処理装置PUbに、追い出し対象データの書き戻しと無効化を要求する。ステップS362の処理が実行された後、パイプライン制御部PLCの動作は、ステップS364に移る。
ステップS364では、パイプライン制御部PLCは、追い出し対象データの状態を”無効”に更新する。これにより、追い出し要求MORPに基づく処理は終了する。なお、追い出し要求MORPに基づく処理は、図21に示す例に限定されない。
以上、図2から図21に示す実施形態においても、図1に示した実施形態と同様の効果を得ることができる。例えば、パイプライン制御部PLCは、追い出し対象データが抑止条件(下記の第1条件または第2条件)を満たす場合、追い出し要求MORPを発行せずに、複数のウェイWAYのいずれかからデータを追い出す処理を実行する。
第1条件は、追い出し対象データの状態が”無効”であることである。第2条件は、追い出し対象データがccNUMA構成におけるローカルメモリアドレスに格納されるデータであり、追い出し対象データの状態が”変更”以外の状態であり、かつ、追い出し対象データが第1キャッシュメモリL1に保持されていないことである。
抑止条件が満たされる場合、追い出し要求MORPを発行せずにデータ保持部DMEMからデータを追い出す処理を実行できるため、追い出し要求MORPを発行する場合に比べて、パイプライン制御部PLCに投入する処理要求の数を少なくすることができる。これにより、第1キャッシュメモリL1からの1回の読み出し要求READに対する一連の処理を実行する際のパイプライン制御部PLCのスループットを向上させることができる。この結果、第2キャッシュメモリLLbのスループットを向上させることができる。
図22は、演算処理装置、情報処理装置および演算処理装置の制御方法の別の実施形態を示す。図1から図21で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図22に示す情報処理装置IPEcは、例えば、サーバ等のコンピュータ装置である。情報処理装置IPEcは、図2に示した演算処理装置PUbの代わりに演算処理装置PUcを有することを除いて、図2に示した情報処理装置IPEbと同一または同様である。例えば、情報処理装置IPEcは、複数の演算処理装置PUc(PUc0、PUc1、PUc2、PUc3)と複数の主記憶装置MEM(MEM0、MEM1、MEM2、MEM3)と通信部CDと入出力制御部IOCNTLと入出力装置IOUとを有する。
演算処理装置PUcは、図2に示した第2キャッシュメモリLLbの代わりに第2キャッシュメモリLLcを有することを除いて、図2に示した演算処理装置PUbと同一または同様である。例えば、演算処理装置PUcは、複数のコアCORE(CORE0、CORE1、・・・、CORE7)と、第2キャッシュメモリLLcと、メモリ制御部MCNTLと、通信インタフェース部CIFとを有する。
なお、演算処理装置PUcおよび情報処理装置IPEcの構成は、図22に示す例に限定されない。また、演算処理装置PUcおよび主記憶装置MEMの数は、図22に示す例に限定されない。
図23は、図22に示し第2キャッシュメモリLLcの一例を示す。なお、第2キャッシュメモリLLcの構成は、図23に示す例に限定されない。第2キャッシュメモリLLcは、図3に示したパイプライン制御部PLCの代わりに、メインパイプライン制御部MPLCcおよびサブパイプライン制御部SPLCを有する。また、第2キャッシュメモリLLcは、図3に示した投入部INPb、タグ部TAGLLb、TAGL1bおよびスヌープロック部SNPbの代わりに、投入部INPc、タグ部TAGLLc、TAGL1cおよびスヌープロック部SNPcを有する。第2キャッシュメモリLLcのその他の構成は、図3に示した第2キャッシュメモリLLbと同一または同様である。
例えば、第2キャッシュメモリLLcは、投入部INPc、メインパイプライン制御部MPLCcおよびサブパイプライン制御部SPLCを有する。さらに、第2キャッシュメモリLLcは、データ保持部DMEM、データ選択部DSELb、タグ部TAGLLc、TAGL1c、TAGD、使用情報保持部LRULL、スヌープロック部SNPcおよびキャッシュミス制御部MIBを有する。
データ保持部DMEM、データ選択部DSELb、タグ部TAGDおよび使用情報保持部LRULLは、図3に示したデータ保持部DMEM、データ選択部DSELb、タグ部TAGDおよび使用情報保持部LRULLと同一または同様である。また、キャッシュミス制御部MIBは、図3に示したキャッシュミス制御部MIBと同一または同様である。
タグ部TAGLLcは、図5に示した第1管理情報INFLLbの代わりに図24に示す第1管理情報INFLLcを保持することを除いて、図3に示したタグ部TAGLLbと同一または同様である。タグ部TAGL1cは、図5に示した第2管理情報INFL1bの代わりに図24に示す第2管理情報INFL1cを保持することを除いて、図3に示したタグ部TAGL1bと同一または同様である。図24に示す例では、タイプコードTCL1は、第1管理情報INFLLcから省かれ、第2管理情報INFL1cに含まれる。
投入部INPcは、複数の処理要求をメインパイプライン制御部MPLCcに投入する処理要求とサブパイプライン制御部SPLCに投入する処理要求とに分類することを除いて、図3に示した投入部INPbと同一または同様である。メインパイプライン制御部MPLCcに投入する処理要求は、第1管理情報INFLLcおよび第2管理情報INFL1cのうちの少なくとも第1管理情報INFLLcを参照して実行される処理の要求である。また、サブパイプライン制御部SPLCに投入する処理要求は、第1管理情報INFLLcを参照せずに第2管理情報INFL1cを参照して実行される処理の要求である。図24に示すタグ部TAGLLc、TAGL1cが用いられる場合、サブパイプライン制御部SPLCに投入する処理要求は、図14等で説明した処理要求BISRである。処理要求BISR以外の処理要求は、メインパイプライン制御部MPLCcに投入される。
また、投入部INPは、処理対象のデータのメモリアドレス等を、メインパイプライン制御部MPLCc、サブパイプライン制御部SPLC等に出力する。
メインパイプライン制御部MPLCcは、投入部INPcから受ける処理要求(例えば、処理要求READ等)に基づく処理を、タグ部TAGLLc、TAGL1c等に保持された情報に基づいて実行する。メインパイプライン制御部MPLCcの詳細は、図26以降で説明する。
サブパイプライン制御部SPLCは、投入部INPから受けた処理要求(例えば、処理要求BISR)に基づく処理を、第1管理情報を参照せずに第2管理情報を参照して実行する。なお、サブパイプライン制御部SPLCは、メインパイプライン制御部MPLCcと並列に動作可能である。
スヌープロック部SNPcは、第1キャッシュメモリL1からデータを追い出す処理の対象となるデータを第1キャッシュメモリL1毎に管理する第3管理情報を保持する情報保持部を有する。なお、スヌープロック部SNPcの詳細は、図25で説明する。
図24は、図23に示したタグ部TAGLLc、TAGL1cおよび使用情報保持部LRULLの一例を示す。なお、図24に示すタグ部TAGLLcは、第2キャッシュメモリLLcのウェイ数が16である場合の一例である。また、図24に示すタグ部TAGL1cは、第1キャッシュメモリL1のウェイ数が8である場合の一例である。例えば、第1キャッシュメモリL1および第2キャッシュメモリLLcのキャッシュラインのサイズは、128バイトである。
タグ部TAGLLcは、図5に示した第1管理情報INFLLbの代わりに第1管理情報INFLLcを保持することを除いて、図3に示したタグ部TAGLLbと同一または同様である。第1管理情報INFLLcは、図5に示した第1管理情報INFLLbからタイプコードTCL1[1:0]が省かれていることを除いて、図5に示した第1管理情報INFLLbと同一または同様である。
タグ部TAGL1cは、図5に示した第2管理情報INFL1bの代わりに第2管理情報INFL1cを保持することを除いて、図3に示したタグ部TAGL1bと同一または同様である。第2管理情報INFL1cは、図3に示したバリッドVL1の代わりにタイプコードTCL1[1:0]を有することを除いて、図5に示した第2管理情報INFL1bと同一または同様である。すなわち、タイプコードTCL1[1:0]は、図3に示した例ではタグ部TAGLLbに格納されるが、図24に示す例ではタグ部TAGL1cに格納される。
使用情報保持部LRULLは、図5に示した使用情報保持部LRULLと同一または同様である。なお、タグ部TAGLLc、TAGL1cおよび使用情報保持部LRULLの構成は、図5に示す例に限定されない。
図25は、図23に示したスヌープロック部SNPcの一例を示す。スヌープロック部SNPcは、図6に示した判定部DJSB(DJSB0−DJSBn)の代わりに判定部DJSC(DJSC0−DJSCn)を有する。また、スヌープロック部SNPcは、論理和回路ORs3が図6に示したスヌープロック部SNPbに追加される。スヌープロック部SNPcのその他の構成は、図6に示したスヌープロック部SNPbと同一または同様である。例えば、スヌープロック部SNPcは、情報保持部MSNPと複数の判定部DJSB(DJSB0−DJSBn)と論理和回路ORs2、ORs3とを有する。
情報保持部MSNPおよび論理和回路ORs2は、図6に示した情報保持部MSNPおよび論理和回路ORs2と同一または同様である。複数の判定部DJSCは互いに同一または同様であるため、判定部DJSC0について説明する。
判定部DJSC0は、論理積回路ANDs2が図6に示した判定部DJSBに追加されることを除いて、図6に示した判定部DJSB0と同一または同様である。例えば、判定部DJSC0は、デコード部DECs1、マッチ検出部MDs1、論理和回路ORs1および論理積回路ANDs1、ANDs2、ANDsw0−ANDsw15を有する。
デコード部DECs1、マッチ検出部MDs1、論理和回路ORs1および論理積回路ANDs1は、図6に示したデコード部DECs1、マッチ検出部MDs1、論理和回路ORs1および論理積回路ANDs1と同一または同様である。また、論理積回路ANDsw0−ANDsw15は、図6に示した論理積回路ANDsw0−ANDsw15と同一または同様である。なお、マッチ検出部MDs1は、アドレスRAD[18:7]とインデックスアドレスPA[18:7]とが一致する場合を真とする一致フラグを第3管理情報INFSNP毎に生成する一致フラグ生成部の一例である。
論理積回路ANDs2は、第3管理情報INFSNP0内のバリッドVENTと、マッチ検出部MDs1による比較結果と、デコード部DECs1によりデコードされたデコード情報LLW0−LLW15とを受ける。そして、論理積回路ANDs2は、デコード情報LLW0−LLW15の各々と、バリッドVENTと、マッチ検出部MDs1による比較結果との論理積を演算し、演算結果を情報SINF0[15:0]として論理和回路ORs3に出力する。例えば、情報SINF0[0:0]は、デコード情報LLW0とバリッドVENTとマッチ検出部MDs1による比較結果との論理積結果を示す。また、例えば、情報SINF0[15:15]は、デコード情報LLW15とバリッドVENTとマッチ検出部MDs1による比較結果との論理積結果を示す。
論理和回路ORs3は、判定部DJSC0−DJSCnから情報SINF0[15:0]−SINFn[15:0]をそれぞれ受け、情報SINF0[15:0]−SINFn[15:0]の論理和を情報SINFのビット毎に演算する。そして、論理和回路ORs3は、情報SINF0[15:0]−SINFn[15:0]のビット毎の論理和結果を、情報SWAY0−SWAY15としてメインパイプライン制御部MPLCcに出力する。例えば、情報SWAY0は、情報SINF0[0:0]−SINFn[0:0]の論理和結果を示す。情報SWAYの末尾の数字は、第2キャッシュメモリLLcのウェイWAYの末尾の数字に対応する。
情報SWAYは、要求データのアドレス[18:7]で指定される各ウェイWAYのデータがスヌープロック部SNPcに登録されているか否かを示す。例えば、要求データのアドレス[18:7]で指定される複数のデータのうち、ウェイWAY0、WAY15のデータがスヌープロック部SNPcに登録されている場合、情報SWAY0、SWAY15が論理値”1”に設定される。なお、スヌープロック部SNPcの構成は、図25に示す例に限定されない。
図26は、図23に示したメインパイプライン制御部MPLCcの一例を示す。図26に示す一点鎖線および網掛けの矩形の意味は、図8に示した一点鎖線および網掛けの矩形と同じである。メインパイプライン制御部MPLCcは、図9に示したヒット判定部HDJb、コア判定部CDJb、条件一致検出部CONDbおよび処理判定部PDJbの代わりに、ヒット判定部HDJc、コア判定部CDJc、条件一致検出部CONDcおよび処理判定部PDJcを有する。また、メインパイプライン制御部MPLCcは、図9に示した選択判定部SDJの代わりに、選択判定部SDJ1、SDJ2、SDJ3を有する。メインパイプライン制御部MPLCcのその他の構成は、図9に示したパイプライン制御部PLCと同一または同様である。
例えば、メインパイプライン制御部MPLCcは、選択判定部SDJ、ヒット判定部HDJc、エンコード部ENC、コア判定部CDJc、データ制御部DATACL、条件一致検出部CONDc、使用情報更新部INFUPDおよび処理判定部PDJcを有する。さらに、メインパイプライン制御部MPLCcは、コマンド制御部CMDCLを有する。図26では、図9に示したパイプライン制御部PLCと相違する点を中心に説明する。
図26に示すメインパイプライン制御部MPLCcでは、第1キャッシュメモリL1に保持されたデータを保持しているウェイWAYは、コア判定部CDJcによりステージ1で特定される。このため、選択判定部SDJ(SDJ1、SDJ2、SDJ3)は、ビクティムウェイWAYを選択する処理を、ステージ0からステージ3までかけて実行する。選択判定部SDJ(SDJ1、SDJ2、SDJ3)は、第1キャッシュメモリL1に保持されたデータを保持しているウェイWAYを示す情報CWAYをコア判定部CDJcから受けることを除いて、図9に示した選択判定部SDJと同一または同様である。
ヒット判定部HDJcは、第2キャッシュメモリLLcがキャッシュヒットするか否かを、タグ部TAGLLcに保持された第1管理情報INFLLcに基づいて判定する。そして、ヒット判定部HDJcは、判定結果として情報HTCLL、LLHTWを出力する。すなわち、ヒット判定部HDJcは、第1キャッシュメモリL1からの読み出し要求READで要求される要求データがデータ保持部DMEMに保持されているかを第1管理情報INFLLcに基づいて判定する状態判定部の一例である。ヒット判定部HDJcの詳細は、図27で説明する。
コア判定部CDJcは、複数の第1キャッシュメモリL1のいずれかがキャッシュヒットするか否かを、タグ部TAGL1cに保持された第2管理情報INFL1cに基づいて判定する。コア判定部CDJcの詳細は、図28で説明する。
条件一致検出部CONDcは、追い出し要求MORPの発行を抑止する抑止条件が満たされるか判定する際の事前判定を実行する。抑止条件は、図9で説明した抑止条件と同じである。なお、第2キャッシュメモリLLcでは、タイプコードTCL1が第2管理情報INFL1cに含まれる。このため、追い出し対象データが第1キャッシュメモリL1に保持されていないことを検出する際に、情報CWAYの他に、スヌープロック部SNPcからの情報SWAYが使用される。条件一致検出部CONDcの詳細は、図29で説明する。
処理判定部PDJcは、サブパイプライン制御部SPLCに投入される処理要求BISR等の処理要求に基づく処理を実行しないことを除いて、図9に示した処理判定部PDJbと同一または同様である。例えば、処理判定部PDJcは、図13に示した追い出し要求完了判定部CTDJ、追い出し実行判定部EXDJ、指示生成部IGEN、第2キャッシュタグ更新判定部TGDJ、第2キャッシュタグデータ生成部TDGENを有する。さらに、処理判定部PDJcは、図13に示した第1キャッシュ制御部CMCNTLb、アボート判定部ABDJ、インターロック制御部INTCL、論理積回路ANDp1、ANDp2、ANDp3、ANDp4、ANDp5を有する。また、処理判定部PDJcは、図13に示した論理和回路ORp1、選択部SELp1、SELp2、SELp3およびデコード部DECを有する。
なお、処理判定部PDJcは、第2キャッシュメモリLLcがキャッシュミスし、かつ、要求データを登録する記憶領域に空きがない場合、追い出し要求MORPを発行せずに、複数の記憶領域のいずれかからデータを追い出す処理部の一例である。
図27は、図26に示したヒット判定部HDJcの一例を示す。ヒット判定部HDJcは、図10に示した選択部SELh3がヒット判定部HDJbから省かれることを除いて、図10に示したヒット判定部HDJbと同一または同様である。例えば、ヒット判定部HDJcは、デコード部DECh1と、複数の判定部DJW(DJW0−DJW15)と、選択部SELh2とを有する。
図28は、図26に示したコア判定部CDJcの一例を示す。コア判定部CDJcは、複数の判定部DJL1c(DJL1c0−DJL1c63)と、論理和回路ORc3と、選択部SELc2とを有する。判定部DJL1cの末尾の数字は、第2管理情報INFL1cの末尾の数字に対応する。複数の判定部DJL1cは互いに同一または同様であるため、判定部DJL1c0について説明する。
判定部DJL1c0は、図11に示した論理積回路ANDc1、ANDc2の代わりに、論理積回路ANDc3を有する。また、判定部DJL1b0では、論理和回路ORc2および論理積回路ANDc4が図11に示した判定部DJL1b0に追加される。判定部DJL1c0のその他の構成は、図11に示した判定部DJL1b0と同一または同様である。
例えば、判定部DJL1b0は、デコード部DECc1、マッチ検出部MDc1、論理和回路ORc1、ORc2および論理積回路ANDc3、ANDc4、ANDcw0−ANDcw15を有する。
デコード部DECc1、マッチ検出部MDc1および論理和回路ORc1は、図11に示したデコード部DECc1、マッチ検出部MDc1および論理和回路ORc1と同一または同様である。また、論理積回路ANDcw0−ANDcw15は、図11に示した論理積回路ANDcw0−ANDcw15と同一または同様である。
論理積回路ANDc3は、アドレスRAD[13:7]で示されるインデックスアドレスPA[13:7]に対応する第2管理情報INFL1c0内のタイプコードTCL1[1:0]を、タグ部TAGL1cから受ける。また、論理積回路ANDc3は、マッチ検出部MDc1による比較結果と論理和回路ORc1の演算結果とを受ける。そして、論理積回路ANDc3は、マッチ検出部MDc1による比較結果と論理和回路ORc1の演算結果とタグ部TAGL1cから受けたタイプコードTCL1[1:0]との論理積を演算し、演算結果をコアデータ情報HTCL100[1:0]として出力する。
論理和回路ORc2は、アドレスRAD[13:7]で示されるインデックスアドレスPA[13:7]に対応する第2管理情報INFL1c0内のタイプコードTCL1[1:0]をタグ部TAGL1cから受ける。そして、論理和回路ORc2は、タグ部TAGL1cから受けたタイプコードTCL1[0:0]とタイプコードTCL1[1:1]との論理和を演算し、演算結果を論理積回路ANDc4に出力する。
論理積回路ANDc4は、デコード部DECc1によりデコードされたデコード情報LLW0−LLW15とマッチ検出部MDc1による比較結果と論理和回路ORc2の演算結果とを受ける。そして、論理積回路ANDc4は、デコード情報LLW0−LLW15の各々とマッチ検出部MDc1による比較結果と論理和回路ORc2の演算結果との論理積を演算し、演算結果を個別所持情報VAL0[15:0]として論理和回路ORc3に出力する。個別所持情報VAL0[15:0]の0番目から15番目までの各ビットは、第2キャッシュメモリLLcのウェイWAY0−WAY15にそれぞれ対応する。
例えば、コアCORE0の第1キャッシュメモリL1における0番目のウェイに保持されているデータが、第2キャッシュメモリLLcのウェイWAY0に保持されている場合、個別所持情報VAL0[0:0]は、真(例えば、論理値”1”)に設定される。また、コアCORE0の第1キャッシュメモリL1における0番目のウェイに保持されているデータが、第2キャッシュメモリLLcのウェイWAY15に保持されている場合、個別所持情報VAL0[15:15]は、真(例えば、論理値”1”)に設定される。
論理和回路ORc3は、判定部DJL1c0−DJL1c63から受けた個別所持情報VAL0[15:0]−VAL63[15:0]の論理和をビット毎に演算し、各ビットの演算結果を16個の所持情報CWAY0−CWAY15として出力する。例えば、所持情報CINF0は、個別所持情報VAL0[0:0]−VAL63[0:0]の論理和結果であり、所持情報CINF15は、個別所持情報VAL0[15:15]−VAL63[15:15]の論理和結果である。所持情報CWAY(CWAY0−CWAY15)は、条件一致検出部CONDcおよび選択判定部SDJ3に転送される。
選択部SELc2は、アドレスRAD[13:7]で示されるインデックスアドレスPA[13:7]に対応する第2管理情報INFL1c0−INFL1c63内のタイプコードTCL1[1:0]を入力信号として、タグ部TAGL1cから受ける。また、選択部SELc2は、要求ウェイ情報REQCWAYを選択信号として、投入部INPcから受ける。そして、選択部SELc2は、タグ部TAGL1cから受けた複数のタイプコードTCL1[1:0]のうち、要求ウェイ情報REQCWAYで指定されるタイプコードTCL1[1:0]を要求データ情報REQTCL1[1:0]として選択する。選択部SELc2により選択された要求データ情報REQTCL1[1:0]は、処理判定部PDJcに転送される。
図29は、図26に示した条件一致検出部CONDcの一例を示す。条件一致検出部CONDcは、図12に示した検出部DETb(DETb0−DETb15)の代わりに検出部DETc(DETc0−DETc15)を有することを除いて、図12に示した条件一致検出部CONDbと同一または同様である。例えば、条件一致検出部CONDcは、複数の検出部DETc(DETc0−DETc15)を有する。検出部DETcの末尾の数字は、第2キャッシュメモリLLcのウェイWAYの末尾の数字に対応する。複数の検出部DETcは互いに同一または同様であるため、検出部DETc0について説明する。
検出部DETc0は、論理和回路ORd2が図12に示した検出部DETb0に追加されることを除いて、図12に示した検出部DETb0と同一または同様である。すなわち、検出部DETc0は、ウェイWAY0に保持されたデータのうち、インデックスアドレスPA[18:7]で示される追い出し対象データの候補が抑止条件を満たすかを検出する。
例えば、検出部DETc0は、排他的否定論理和回路ENORd1、ENORd2、否定論理積回路NANDd1、論理積回路ANDd1、ANDd2、否定論理和回路NORd1および論理和回路ORd1、ORd2を有する。論理和回路ORd2は、所持情報CWAY0と情報SWAY0との論理和を演算し、演算結果を論理積回路ANDd1に出力する。所持情報CWAY0と情報SWAY0との論理和結果が論理値”1”の場合、追い出し対象データの候補が第1キャッシュメモリL1に保持されていることを示す。
排他的否定論理和回路ENORd1、ENORd2、論理積回路ANDd1、ANDd2は、図12に示した排他的否定論理和回路ENORd1、ENORd2、論理積回路ANDd1、ANDd2と同一または同様である。なお、論理積回路ANDd1は、論理積回路ANDd2の演算結果と論理和回路ORd2の演算結果の反転信号と否定論理積回路NANDd1の演算結果との論理積を演算し、演算結果を論理和回路ORd1に出力する。否定論理和回路NORd1、否定論理積回路NANDd1および論理和回路ORd1は、図12に示した否定論理和回路NORd1、否定論理積回路NANDd1および論理和回路ORd1と同一または同様である。例えば、論理和回路ORd1は、論理積回路ANDd1の演算結果と否定論理和回路NORd1の演算結果との論理和を演算し、演算結果をマッチウェイ情報MWAY0として処理判定部PDJcに出力する。
図30は、図23に示したパイプライン制御部MPLCc、SPLCに投入される処理要求の一例を示す。なお、図23の括弧内に、追い出し要求MORPを抑止する制御がない比較例を示す。処理要求BISRは、サブパイプライン制御部SPLCに投入される。また、読み出し要求READにより選択される追い出し対象データが全てクリーンである場合、メインパイプライン制御部MPLCcには、2つの処理要求READ、MVINが投入される。これに対し、比較例では、3つの処理要求READ、MORP、MVINがメインパイプライン制御部MPLCcに投入される。以下に、読み出し要求READ内で追い出し要求MORPに基づく処理相当の処理を実行することによって見込める性能改善を示す。
読み出し要求READにより選択される追い出し対象データが全てクリーンである場合、第2キャッシュメモリLLcでは、読み出し処理に基づく一連のフローは、12サイクルで6回実行される。これに対し、比較例では、読み出し処理に基づく一連のフローは、12サイクルで4回実行される。この場合、第2キャッシュメモリLLbでは、比較例に対して約50%の改善が見込めると考えられる。
追い出し対象データがダーティである確率が10%と仮定した場合、読み出し要求READにより選択される追い出し対象データは、90%がクリーンである。追い出し対象データがダーティである場合、メインパイプライン制御部MPLCcは、4つの処理要求READ、MORP、MVIN、WRBKに基づく処理を実行する。なお、処理要求WRBKは、追い出し対象データを書き戻す処理の要求である。
この場合、10個の読み出し処理に基づく一連のフローは、追い出し対象データがダーティである場合のフローが1回、追い出し対象データがクリーンである場合のフローが9回に分けられる。したがって、第2キャッシュメモリLLcでは、10個の読み出し処理に基づく一連のフローを実行する場合、22回(=4×1+2×9)の処理要求が投入される。これに対し、比較例では、31回(=4×1+3×9)の処理要求が投入される。この場合、第2キャッシュメモリLLcでは、比較例に対して約29%の改善が見込めると考えられる。
図31は、追い出し対象データが抑止条件を満たさない場合の演算処理装置PUcの動作の一例を示す。図31に示す実線の矢印、点線の矢印および”L1 Victim”の意味は、図17と同じである。また、図31では、要求データおよび追い出し対象データの状態(条件)は、図17と同じである。例えば、追い出し対象データは、スヌープロック部SNPcに登録されている。図31では、図17のパイプライン制御部PLCをメインパイプライン制御部MPLCcに読み替えた場合の図17の動作と図31の動作との相違点を中心に説明する。
図31に示す動作では、処理要求BISRは、サブパイプライン制御部SPLCに投入される。また、”L1 Victim”が第1キャッシュメモリL1に保持されていることを示す保持情報は、メインパイプライン制御部MPLCcが第1キャッシュメモリL1に対して”L1 Victim”の無効化を要求するまで、タグ部TAGL1bに保持される。メインパイプライン制御部MPLCcが第1キャッシュメモリL1に対して”L1 Victim”の無効化を要求してからは、保持情報は、サブパイプライン制御部SPLCで処理要求BISRが実行されるまで、スヌープロック部SNPcに保持される。このため、図23に示した第2キャッシュメモリLLcは、スヌープロック部SNPcに保持された情報を用いて、追い出し対象データが第1キャッシュメモリL1に保持されていないことを検出する。
例えば、メインパイプライン制御部MPLCcは、タグ部TAGL1bに保持されている”L1 Victim”の第2管理情報INFL1bを含む第2管理情報INFL1bを、読み出し要求READにより応答する新しいデータの情報に上書きする。そして、メインパイプライン制御部MPLCcは、”L1 Victim”の情報をスヌープロック部SNPcに登録する(図31(g3))。スヌープロックは、第1キャッシュメモリL1によるL1リプレース処理が完了し、サブパイプライン制御部SPLCで処理要求BISRが実行されことにより、解放される(図31(g5))。
これに対し、図17に示した動作では、保持情報は、パイプライン制御部PLCで処理要求BISRが実行されるまで、タグ部TAGL1bとスヌープロック部SNPbとの両方に保持される。すなわち、スヌープロック部SNPbに保持される情報は、タグ部TAGL1bから得られる情報に含まれる。このため、図3に示した第2キャッシュメモリLLbは、スヌープロック部SNPbの情報を参照することなく、追い出し対象データが第1キャッシュメモリL1に保持されていないことを検出できる。
なお、図14、図15および図16に示した動作に対応する演算処理装置PUcの動作は、パイプライン制御部PLCをメインパイプライン制御部MPLCcに読み替え、処理要求BISRの投入先をサブパイプライン制御部SPLCとすることにより説明される。
図32は、図22に示した第2キャッシュメモリLLcのデータアクセスの一例を示す。メインパイプライン制御部MPLCcは、読み出し要求READ1が投入され、第2キャッシュメモリLLcがキャッシュミスした場合、メモリ制御部MCNTL等に対してデータ要求を実行する。この場合、メインパイプライン制御部MPLCcは、読み出し要求READ1が投入されてから固定サイクル後に、要求が有効であることを示す信号を信号線REQVALIDを介してメモリ制御部MCNTL等に送信する。さらに、メインパイプライン制御部MPLCcは、要求内容、要求アドレス等を示す信号を信号線RECCMDを用いてメモリ制御部MCNTL等に送信する。要求内容は、例えば、データの読み出しを要求する要求MEMREAD1等である。
読み出し要求READ2は、読み出し要求READ1に連続してメインパイプライン制御部MPLCcに投入され、メインパイプライン制御部MPLCcからメモリ制御部MCNTL等に対する要求MEMREAD2も連続して送信される。
読み出し要求READ2に続いて追い出し要求MORP3がメインパイプライン制御部MPLCcに投入された場合、メモリ制御部MCNTL等に対して、データWD3の書き込みを要求する要求MEMWRITEが実行される可能性がある。データWD3は、図8で説明したように、4つのデータWD3a、WD3b、WD3c、WD3dに分割されて転送される。この場合、データバスREQDATAは4サイクル占有される。このため、追い出し要求MORP3以降に要求MEMWRITEを実行する可能性のある処理要求は、追い出し要求MORP3をメインパイプライン制御部MPLCcに投入してから少なくとも4サイクル経過後に投入するように制御される。
なお、主記憶装置MEMへの書き込みを実行しない処理要求は、メインパイプライン制御部MPLCcに投入されてもデータバスREQDATAの競合が発生しない。このため、例えば、読み出し要求READ4は、追い出し要求MORP3に連続してメインパイプライン制御部MPLCcに投入され、固定サイクル後に、要求MEMREAD2がメモリ制御部MCNTL等に送信される。
メモリ制御部MCNTLからメインパイプライン制御部MPLCcへの応答は、例えば、信号線REQVALID、REQCMD、REQDATAと異なる信号線RTNVALID、RTNCMD、RTNDATAを用いて実行される。
例えば、メモリ制御部MCNTLは、メインパイプライン制御部MPLCcから要求MEMREAD1を受けてから一定時間後に、応答RTNREAD1およびデータRD1をメインパイプライン制御部MPLCcに応答する。データRD1は、例えば、データWD3と同様に、4つのデータRD1a、RD1b、RD1c、RD1dに分割され、4サイクルで送信される。
要求MEMREAD2に対する応答も、要求MEMREAD1に対する応答と同様に実行される。要求MEMWRITE3に対する応答では、応答するデータがないため、メモリ制御部MCNTLは、信号線RTNCMDを用いて、応答RTNWRITE3をメインパイプライン制御部MPLCcに応答する。
以上、図22から図32に示す実施形態においても、図2から図21に示した実施形態と同様の効果を得ることができる。例えば、メインパイプライン制御部MPLCcは、追い出し対象データが抑止条件を満たす場合、追い出し要求MORPを発行せずに、複数のウェイWAYのいずれかからデータを追い出す処理を実行する。これにより、第1キャッシュメモリL1からの1回の読み出し要求READに対する一連の処理を実行する際のパイプライン制御部PLCのスループットを向上させることができる。この結果、第2キャッシュメモリLLcのスループットを向上させることができる。
さらに、第2キャッシュメモリLLcは、メインパイプライン制御部MPLCcとサブパイプライン制御部SPLとを有する。メインパイプライン制御部MPLCcは、処理要求BISR等を実行するサブパイプライン制御部SPLと並列に動作可能である。これにより、例えば、処理要求BISRと他の処理要求とを並列に実行できないキャッシュメモリに比べて、第2キャッシュメモリLLcのスループットを向上させることができる。
図33は、演算処理装置、情報処理装置および演算処理装置の制御方法の別の実施形態を示す。図1から図31で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図33に示す情報処理装置IPEdは、例えば、サーバ等のコンピュータ装置である。情報処理装置IPEdは、図22に示した演算処理装置PUcの代わりに演算処理装置PUdを有することを除いて、図22に示した情報処理装置IPEcと同一または同様である。例えば、情報処理装置IPEdは、複数の演算処理装置PUd(PUd0、PUd1、PUd2、PUd3)と複数の主記憶装置MEM(MEM0、MEM1、MEM2、MEM3)と通信部CDと入出力制御部IOCNTLと入出力装置IOUとを有する。
演算処理装置PUdは、図22に示した第2キャッシュメモリLLcの代わりに第2キャッシュメモリLLdを有することを除いて、図22に示した演算処理装置PUcと同一または同様である。例えば、演算処理装置PUdは、複数のコアCORE(CORE0、CORE1、・・・、CORE7)と、第2キャッシュメモリLLdと、メモリ制御部MCNTLと、通信インタフェース部CIFとを有する。
なお、演算処理装置PUdおよび情報処理装置IPEdの構成は、図33に示す例に限定されない。また、演算処理装置PUdおよび主記憶装置MEMの数は、図33に示す例に限定されない。
図34は、図33に示した第2キャッシュメモリLLdの一例を示す。第2キャッシュメモリLLdは、図23に示したメインパイプライン制御部MPLCcの代わりに、メインパイプライン制御部MPLCdを有することを除いて、図23に示した第2キャッシュメモリLLcと同一または同様である。
例えば、第2キャッシュメモリLLdは、投入部INPc、メインパイプライン制御部MPLCdおよびサブパイプライン制御部SPLCを有する。さらに、第2キャッシュメモリLLdは、データ保持部DMEM、データ選択部DSELb、タグ部TAGLLc、TAGL1c、TAGD、使用情報保持部LRULL、スヌープロック部SNPcおよびキャッシュミス制御部MIBを有する。
図34に示す第2キャッシュメモリLLdでは、追い出し要求MORPの発行を抑止する抑止条件の第2条件が図23に示した第2キャッシュメモリLLcと異なる。例えば、追い出し対象データが第1キャッシュメモリL1に保持されていないことが図9で説明した第2条件から省かれる。そして、追い出し対象データを複数の第1キャッシュメモリL1のいずれかから追い出す処理が実行中でないことが図9で説明した第2条件に追加される。すなわち、第2条件は、追い出し対象データが”Local=Host”であり、追い出し対象データの状態が”変更”以外の状態であり、かつ、追い出し対象データを複数の第1キャッシュメモリL1のいずれかから追い出す処理が実行中でないことである。第1条件は、図9で説明した第1条件と同じである。
このため、メインパイプライン制御部MPLCdが図23に示したメインパイプライン制御部MPLCcと異なる。メインパイプライン制御部MPLCdの詳細は、図35以降で説明する。なお、メインパイプライン制御部MPLCd以外の投入部INPc等のブロックは、図23に示した第2キャッシュメモリLLc内の対応するブロックと同一または同様である。
なお、第2キャッシュメモリLLdの構成は、図34に示す例に限定されない。例えば、1つのCMGで構成された情報処理装置IPEdでは、第2キャッシュメモリLLdは、追い出し対象データの状態が主記憶装置MEMへの書き戻しを必要としない状態(例えば、”変更”以外の状態)である場合、抑止条件を満たすと判定してもよい。
図35は、図34に示したメインパイプライン制御部MPLCdの一例を示す。図35に示す一点鎖線および網掛けの矩形の意味は、図8に示した一点鎖線および網掛けの矩形と同じである。
メインパイプライン制御部MPLCdは、第1キャッシュメモリL1が追い出し対象データを保持していた場合でも、読み出し要求READ内で追い出し要求MORPに基づく処理相当の処理を実行する。この場合、メインパイプライン制御部MPLCdは、読み出し要求READ内で第1キャッシュメモリL1に対して追い出し対象データを無効化する無効化指示を送信し、無効化指示の応答によりタグ部TAGL1cを更新する機能を有する。さらに、メインパイプライン制御部MPLCdは、追い出し対象データをメモリ制御部MCNTLまたは他のCMGに応答する機能を有する。
例えば、メインパイプライン制御部MPLCdは、図26に示したコア判定部CDJc、条件一致検出部CONDcおよび処理判定部PDJcの代わりに、コア判定部CDJd、条件一致検出部CONDdおよび処理判定部PDJdを有する。メインパイプライン制御部MPLCdのその他の構成は、図26に示したメインパイプライン制御部MPLCcと同一または同様である。
例えば、メインパイプライン制御部MPLCdは、選択判定部SDJ、ヒット判定部HDJc、エンコード部ENC、コア判定部CDJd、データ制御部DATACL、条件一致検出部CONDd、使用情報更新部INFUPDおよび処理判定部PDJdを有する。さらに、メインパイプライン制御部MPLCdは、コマンド制御部CMDCLを有する。メインパイプライン制御部MPLCdでは、コア判定部CDJd、条件一致検出部CONDdおよび処理判定部PDJdが図26に示したコア判定部CDJc、条件一致検出部CONDcおよび処理判定部PDJcと異なる。
コア判定部CDJdは、読み出し要求READ内で第1キャッシュメモリL1に対して無効化指示を送信するために、追い出し対象データを所持しているコアCOREを特定するためのコア所持情報VALCを生成する。コア所持情報VALCは、ステージ3で動作する処理判定部PDJdまで伝搬される。なお、コア判定部CDJdの詳細は、図36で説明する。
条件一致検出部CONDcは、追い出し対象データの候補が第1キャッシュメモリL1に保持されていないことを検出する代わりに、追い出し対象データの候補がスヌープロック部SNPcに登録されていないことを検出する。例えば、追い出し対象データがスヌープロック部SNPcに登録されている場合、メインパイプライン制御部MPLCdは、読み出し要求READを中断し、後続で追い出し要求MORPを実行し、スヌープロックの解除後に読み出し要求READを再実行する。この場合、パイプライン処理のスループットが低下する。このため、追い出し対象データがスヌープロック部SNPcに登録されている場合に追い出し要求MORPの発行を抑止しないように、追い出し対象データがスヌープロック部SNPcに登録されていないことが、抑止条件に含まれる。なお、条件一致検出部CONDdの詳細は、図37で説明する。
処理判定部PDJdは、例えば、追い出し対象データが抑止条件を満たし、第1キャッシュメモリL1が追い出し対象データを保持していた場合、L1リプレース処理の指示を追い出し対象データを保持している第1キャッシュメモリL1に通知する。そして、処理判定部PDJdは、L1リプレース処理の完了を示す応答情報を受けた後、追い出し要求MORPを発行せずにデータ保持部MEMから追い出し対象データを追い出す処理を実行する。なお、処理判定部PDJdの詳細は、図38で説明する。
図36は、図35に示したコア判定部CDJdの一例を示す。図36に示す一点鎖線および網掛けの矩形の意味は、図8に示した一点鎖線および網掛けの矩形と同じである。コア判定部CDJdは、図28に示した論理和回路ORc3の代わりに、論理和回路ORc4(ORc40−ORc47)、ORc5を有する。コア判定部CDJdのその他の構成は、図28に示したコア判定部CDJcと同一または同様である。
例えば、コア判定部CDJdは、複数の判定部DJL1c(DJL1c0−DJL1c63)と、論理和回路ORc40−ORc47、ORc5と、選択部SELc2とを有する。判定部DJL1cおよび選択部SELc2は、図28に示した判定部DJL1cおよび選択部SELc2と同一または同様である。
論理和回路ORc4(ORc40−ORc47)の末尾の1桁目の数字は、コアCOREの末尾の数字に対応する。各論理和回路ORc4(ORc40−ORc47)は、対応するコアCOREの個別所持情報VALを受け、コアCOREの各ウェイの個別所持情報VALの論理和をビット毎に演算し、演算結果をコア情報VALCとして出力する。コア情報VALCは、論理和回路ORc5および処理判定部PDJdに転送される。
コア所持情報VALCの末尾の数字は、コアCOREの末尾の数字に対応し、コア所持情報VALCの0番目から15番目までの各ビットは、第2キャッシュメモリLLdのウェイWAY0−WAY15にそれぞれ対応する。例えば、コアCORE0の第1キャッシュメモリL1に保持されているデータが、第2キャッシュメモリLLdのウェイWAY0に保持されている場合、コア所持情報VALC0[0:0]は、真(例えば、論理値”1”)に設定される。
例えば、論理和回路ORc40は、コアCORE0の各ウェイに対応する個別所持情報VAL0[15:0]−VAL7[15:0]を判定部DJL1c0−DJL1c7からそれぞれ受ける。そして、論理和回路ORc40は、個別所持情報VAL0[15:0]−VAL7[15:0]の論理和をビット毎に演算し、演算結果をコア所持情報VALC0[15:0]として論理和回路ORc5および処理判定部PDJdに出力する。コア所持情報VALC0[0:0]は、個別所持情報VAL0[0:0]−VAL7[0:0]の論理和結果であり、コア所持情報VALC0[15:15]は、個別所持情報VAL0[15:15]−VAL7[15:15]の論理和結果である。
また、例えば、論理和回路ORc47は、コアCORE7の各ウェイに対応する個別所持情報VAL56[15:0]−VAL63[15:0]を判定部DJL1c56−DJL1c63からそれぞれ受ける。そして、論理和回路ORc47は、個別所持情報VAL56[15:0]−VAL63[15:0]の論理和をビット毎に演算し、演算結果をコア所持情報VALC7[15:0]として論理和回路ORc5および処理判定部PDJdに出力する。コア所持情報VALC7[0:0]は、個別所持情報VAL56[0:0]−VAL63[0:0]の論理和結果であり、コア所持情報VALC7[15:15]は、個別所持情報VAL56[15:15]−VAL63[15:15]の論理和結果である。
論理和回路ORc5は、論理和回路ORc40−ORc47から受けたコア所持情報VALC0[15:0]−VALC7[15:0]の論理和をビット毎に演算し、各ビットの演算結果を16個の所持情報CWAY0−CWAY15として出力する。例えば、所持情報CINF0は、コア所持情報VALC0[0:0]−VALC7[0:0]の論理和結果であり、所持情報CINF15は、コア所持情報VALC0[15:15]−VALC7[15:15]の論理和結果である。所持情報CWAY(CWAY0−CWAY15)は、選択判定部SDJ3に転送される。
図36に示す例では、論理和回路ORc4(ORc40−ORc47)は、パイプライン処理のステージ1で処理を実行し、論理和回路ORc5は、ステージ2で処理を実行する。なお、論理和回路ORc5は、ステージ1で処理を実行してもよい。
このように、第2キャッシュメモリLLdでは、図23に示した第2キャッシュメモリLLcに比べて、追い出し対象データを所持しているコアCOREを特定するための論理和回路ORc40−ORc47等が追加されるため、回路規模が増大するおそれがある。換言すれば、図23に示した第2キャッシュメモリLLcでは、回路規模の増加を抑制しつつ、パイプライン処理のスループットを向上させることができる。
図37は、図35に示した条件一致検出部CONDdの一例を示す。条件一致検出部CONDdは、図29に示した検出部DETc(DETc0−DETc15)の代わりに検出部DETd(DETd0−DETd15)を有することを除いて、図29に示した条件一致検出部CONDcと同一または同様である。例えば、条件一致検出部CONDdは、複数の検出部DETd(DETd0−DETd15)を有する。検出部DETdの末尾の数字は、第2キャッシュメモリLLdのウェイWAYの末尾の数字に対応する。複数の検出部DETdは互いに同一または同様であるため、検出部DETd0について説明する。
検出部DETd0は、図29に示した論理和回路ORd2が検出部DETc0から省かれることを除いて、図29に示した検出部DETc0と同一または同様である。すなわち、検出部DETd0は、ウェイWAY0に保持されたデータのうち、インデックスアドレスPA[18:7]で示される追い出し対象データの候補が抑止条件を満たすかを検出する。
例えば、検出部DETd0は、排他的否定論理和回路ENORd1、ENORd2、否定論理積回路NANDd1、論理積回路ANDd1、ANDd2、否定論理和回路NORd1および論理和回路ORd1を有する。
排他的否定論理和回路ENORd1、ENORd2、論理積回路ANDd1、ANDd2は、図29に示した排他的否定論理和回路ENORd1、ENORd1、論理積回路ANDd1、ANDd2と同一または同様である。なお、論理積回路ANDd1は、論理積回路ANDd2の演算結果と情報SWAY0の反転信号と否定論理積回路NANDd1の演算結果との論理積を演算し、演算結果を論理和回路ORd1に出力する。否定論理和回路NORd1、否定論理積回路NANDd1および論理和回路ORd1は、図29に示した否定論理和回路NORd1、否定論理積回路NANDd1および論理和回路ORd1と同一または同様である。
図38は、図35に示した処理判定部PDJdの一例を示す。図33に示す一点鎖線および網掛けの矩形の意味は、図8に示した一点鎖線および網掛けの矩形と同じである。処理判定部PDJdは、図13に示した第1キャッシュ制御部CMCNTLbの代わりに、第1キャッシュ制御部CMCNTLdを有する。処理判定部PDJdのその他の構成は、図13に示した処理判定部PDJbと同一または同様である。
例えば、処理判定部PDJdは、追い出し要求完了判定部CTDJ、追い出し実行判定部EXDJ、指示生成部IGEN、第2キャッシュタグ更新判定部TGDJ、第2キャッシュタグデータ生成部TDGENおよび第1キャッシュ制御部CMCNTLdを有する。さらに、処理判定部PDJcは、アボート判定部ABDJ、インターロック制御部INTCL、論理積回路ANDp1、ANDp2、ANDp3、ANDp4、ANDp5、論理和回路ORp1、選択部SELp1、SELp2、SELp3およびデコード部DECを有する。図38では、図13に示した処理判定部PDJbと異なる第1キャッシュ制御部CMCNTLdについて説明する。
第1キャッシュ制御部CMCNTLdは、第1キャッシュメモリL1に対してスヌープを指示する場合、スヌープ指示INSPの宛先となる第1キャッシュメモリL1をコア所持情報VALCに基づいて決定する。そして、第1キャッシュ制御部CMCNTLdは、追い出し対象データを保持しているコアCOREにスヌープ指示INSPを送信する。
以上、図33から図38に示す実施形態においても、図1に示した実施形態と同様の効果を得ることができる。例えば、メインパイプライン制御部MPLCdは、追い出し対象データが抑止条件(下記の第1条件または第2条件)を満たす場合、追い出し要求MORPを発行せずに、複数のウェイWAYのいずれかからデータを追い出す処理を実行する。
第1条件は、追い出し対象データの状態が”無効”であることである。第2条件は、下記の条件2a、2b、2cを全て満たすことである。条件2aは、追い出し対象データがccNUMA構成におけるローカルメモリアドレスに格納されるデータであることである。条件2bは、追い出し対象データの状態が”変更”以外の状態であることである。条件2cは、追い出し対象データを複数の第1キャッシュメモリL1のいずれかから追い出す処理が実行中でないことである。
抑止条件が満たされる場合、追い出し要求MORPに基づく処理相当の処理を追い出し要求MORPを発行せずに実行できるため、追い出し要求MORPを発行する場合に比べて、パイプライン制御部PLCに投入する処理要求の数を少なくすることができる。これにより、第1キャッシュメモリL1からの1回の読み出し要求READに対する一連の処理を実行する際のパイプライン制御部PLCのスループットを向上させることができる。この結果、第2キャッシュメモリLLdのスループットを向上させることができる。
図39は、演算処理装置、情報処理装置および演算処理装置の制御方法の別の実施形態を示す。図1から図38で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図39に示す情報処理装置IPEeは、例えば、サーバ等のコンピュータ装置である。情報処理装置IPEeは、図22に示した演算処理装置PUcの代わりに演算処理装置PUeを有することを除いて、図22に示した情報処理装置IPEcと同一または同様である。例えば、情報処理装置IPEeは、複数の演算処理装置PUe(PUe0、PUe1、PUe2、PUe3)と複数の主記憶装置MEM(MEM0、MEM1、MEM2、MEM3)と通信部CDと入出力制御部IOCNTLと入出力装置IOUとを有する。
演算処理装置PUeは、図22に示した第2キャッシュメモリLLcの代わりに第2キャッシュメモリLLeを有することを除いて、図22に示した演算処理装置PUcと同一または同様である。例えば、演算処理装置PUeは、複数のコアCORE(CORE0、CORE1、・・・、CORE7)と、第2キャッシュメモリLLeと、メモリ制御部MCNTLと、通信インタフェース部CIFとを有する。
なお、演算処理装置PUeおよび情報処理装置IPEeの構成は、図39に示す例に限定されない。また、演算処理装置PUeおよび主記憶装置MEMの数は、図39に示す例に限定されない。
図40は、図39に示した第2キャッシュメモリLLeの一例を示す。第2キャッシュメモリLLeは、図23に示したメインパイプライン制御部MPLCcおよびデータ選択部DESLbの代わりに、メインパイプライン制御部MPLCeおよびデータ選択部DESLeを有する。また、第2キャッシュメモリLLeでは、排他選択部EXSELが図23に示した第2キャッシュメモリLLcに追加される。第2キャッシュメモリLLeのその他の構成は、図23に示した第2キャッシュメモリLLcと同一または同様である。
例えば、第2キャッシュメモリLLeは、投入部INPc、メインパイプライン制御部MPLCe、サブパイプライン制御部SPLCおよび排他選択部EXSELを有する。さらに、第2キャッシュメモリLLeは、データ保持部DMEM、データ選択部DSELe、タグ部TAGLLc、TAGL1c、TAGD、使用情報保持部LRULL、スヌープロック部SNPcおよびキャッシュミス制御部MIBを有する。
図40に示す第2キャッシュメモリLLeでは、追い出し要求MORPの発行を抑止する抑止条件の第2条件が図23に示した第2キャッシュメモリLLcと異なる。例えば、追い出し対象データの状態が”変更”以外の状態であることが図9で説明した第2条件から省かれる。すなわち、第2条件は、追い出し対象データがccNUMA構成におけるローカルメモリアドレスに格納されるデータであり、かつ、追い出し対象データが第1キャッシュメモリL1に保持されていないことである。第1条件は、図9で説明した第1条件と同じである。このように、第2キャッシュメモリLLeでは、複数のウェイWAYのいずれかから追い出し対象データを追い出す処理(追い出し要求MORPに基づく処理相当の処理)は、追い出し対象データを主記憶装置MEMに書き戻す処理を含む。
なお、追い出し対象データの状態が”変更”の場合に、追い出し要求MORPに基づく処理相当の処理を読み出し要求READ内で実行すると、メモリ制御部MCNTLに対する2つの要求が同時に発生する可能性がある。2つの要求は、例えば、第1キャッシュメモリL1に応答するデータの要求と、追い出し対象データの書き戻しの要求である。このため、2つの要求を排他的に選択する排他選択部EXSELが図23に示した第2キャッシュメモリLLcに追加される。なお、排他選択部EXSELの詳細は、図42で説明する。
また、抑止条件が図23に示した第2キャッシュメモリLLcと異なるため、メインパイプライン制御部MPLCeが図23に示したメインパイプライン制御部MPLCcと異なる。メインパイプライン制御部MPLCeの詳細は、図43以降で説明する。さらに、図40に示す例では、データ選択部DSELeが図23に示したデータ選択部DSELbと異なる。データ選択部DSELeの詳細は、図41で説明する。なお、第2キャッシュメモリLLe内のその他のブロック(例えば、投入部INPc等)は、図23に示した第2キャッシュメモリLLc内の対応するブロックと同一または同様である。
なお、第2キャッシュメモリLLeの構成は、図39に示す例に限定されない。例えば、第2キャッシュメモリLLeは、追い出し対象データがccNUMA構成におけるローカルメモリアドレスに格納されるデータである場合、抑止条件を満たすと判定してもよい。この場合、例えば、図43等で説明するメインパイプライン制御部MPLCeは、図36、図38で説明したコア判定部CDJd、第1キャッシュ制御部CMCNTLdをコア判定部CDJc、第1キャッシュ制御部CMCNTLbの代わりに有する。
図41は、図40に示したデータ選択部DSELeの一例を示す。図41に示す一点鎖線および網掛けの矩形の意味は、図8に示した一点鎖線および網掛けの矩形と同じである。図41に示す例では、図43で説明するように、データ保持部DMEMは、パイプライン処理のステージ4で動作する。また、データ保持部DMEMから出力されるデータ幅は128バイトであり、メモリ制御部MCNTL等へのデータ転送は、32バイト×4サイクルで実行される。
データ選択部DSELeは、分割部DIVと複数の単位回路群UCG(UCG0−UCG7、UCGm)とを有する。分割部DIVは、データ保持部DMEMから転送された128バイトのデータを32バイトのデータに分割し、32バイトの4つのデータを各単位回路群UCGに転送する。
単位回路群UCG0−UCG7は、コアCORE0−CORE7にそれぞれ対応して設けられる。単位回路群UCG0−UCG7の末尾の数字は、コアCORE0−CORE7の末尾の数字に対応する。例えば、コアCORE0は、データ保持部DMEMから単位回路群UCG0を介してデータを受ける。また、単位回路群UCGmは、メモリ制御部MCNTLおよび通信インタフェース部CIFに対応して設けられる。複数の単位回路群UCGは互いに同一または同様であるため、単位回路群UCGmについて説明する。
単位回路群UCGmは、複数の単位回路部UCと選択部SELucと選択制御部USCNTLとを有する。単位回路部UCは、図8に示した単位回路部UCと同一または同様である。例えば、各単位回路部UCは、分割部DIVから転送される4つの32バイトのデータをそれぞれ保持する4つのバッファ部BUF(BUF1、BUF2、BUF3、BUF4)と、選択制御部DSCNTLと、選択部SELbufとを有する。
選択制御部USCNTLは、複数の単位回路部UCのいずれかを選択し、選択した単位回路部UCから出力されるデータを、選択部SELucを介して出力する。すなわち、選択部SELucは、複数の単位回路部UCのうち、選択制御部USCNTLにより選択された単位回路部UCから出力されるデータをメモリ制御部MCNTL等に転送する。
このように、各単位回路群UCGは、複数の単位回路部UCを有する。これにより、メインパイプライン制御部MPLCeは、図46に示すように、要求MEMWRITEが連続した場合でも、適切な制御を実行できる。なお、例えば、メインパイプライン制御部MPLCeは、全ての単位回路部UCが使用中である場合に、要求MEMWRITEを実行する可能性のある処理要求が投入された場合、投入された処理要求をアボートする。
図42は、図40に示した排他選択部EXSELの一例を示す。図42に示す一点鎖線および網掛けの矩形の意味は、図8に示した一点鎖線および網掛けの矩形と同じである。例えば、排他選択部EXSELは、パイプライン処理のステージ4で処理を実行する。
排他選択部EXSELは、メインパイプライン制御部MPLCeから出力されるコマンド等のコマンドCMDを保持する複数のバッファ部CBUFと、選択制御部CSCNTLと、選択部SELe1、SELe2とを有する。
選択制御部CSCNTLは、選択部SELe1の出力先を選択する。選択部SELe1は、選択制御部CSCNTLにより選択されたバッファ部CBUFに、メインパイプライン制御部MPLCeから出力されたコマンドCMDを転送する。また、選択制御部CSCNTLは、複数のバッファ部CBUFのいずれかを選択し、選択したバッファ部CBUFに保持されたコマンドCMDを、選択部SELe2を介して出力する。すなわち、選択部SELe2は、複数のバッファ部CBUFのうち、選択制御部CSCNTLにより選択されたバッファ部CBUFに保持されたコマンドCMDをメモリ制御部MCNTL等に転送する。
図43は、図40に示したメインパイプライン制御部MPLCeの一例を示す。図43に示す一点鎖線および網掛けの矩形の意味は、図8に示した一点鎖線および網掛けの矩形と同じである。
メインパイプライン制御部MPLCeは、追い出し対象データの状態が”変更”の場合でも、読み出し要求READ内で追い出し要求MORPに基づく処理相当の処理を実行する。この場合、データ保持部DMEMは、追い出し対象データが決定したことにより選択されるウェイWAYを用いて、アクセスされる。追い出し対象データは、ステージ3で決定されるため、データ保持部DMEMへのアクセスは、ステージ4で実行される。このため、メインパイプライン制御部MPLCeでは、データ保持部DMEMのアクセスに使用するウェイWAYのアドレスがウェイWAYの数だけステージ3まで伝搬する機能が図26に示したメインパイプライン制御部MPLcに追加される。例えば、追い出し対象データの候補(ウェイWAY0−WAY15に保持されたデータ)のアドレスAvictがタグ部TAGLLcから処理判定部PDJeまで転送される。
メインパイプライン制御部MPLCeでは、データ保持部DMEMへのアクセスがステージ3で実行されるため、図26に示したメインパイプライン制御部MPLcに比べて、データ保持部DMEMへのアクセスタイミングが遅れる。例えば、メインパイプライン制御部MPLCeでは、読み出し要求READで要求されたデータがキャッシュヒットした場合のデータ保持部DMEMへのアクセスタイミングも、図26に示したメインパイプライン制御部MPLcに比べて遅れる。換言すれば、図23に示した第2キャッシュメモリLLcでは、データ保持部DMEMへのアクセスタイミングを遅らせることなく、パイプライン処理のスループットを向上させることができる。なお、アクセスタイミングが遅れることにより、レイテンシが悪化し、性能が悪化する。
図43に示すメインパイプライン制御部MPLCeは、図26に示した条件一致検出部CONDcおよび処理判定部PDJcの代わりに、条件一致検出部CONDeおよび処理判定部PDJeを有する。また、メインパイプライン制御部MPLCeでは、図26に示したデータ制御部DATACLおよびコマンド制御部CMDCLがメインパイプライン制御部MPLCcから省かれる。メインパイプライン制御部MPLCeのその他の構成は、図26に示したメインパイプライン制御部MPLCcと同一または同様である。
メインパイプライン制御部MPLCeは、例えば、選択判定部SDJ、ヒット判定部HDJc、エンコード部ENC、コア判定部CDJc、条件一致検出部CONDe、使用情報更新部INFUPDおよび処理判定部PDJeを有する。メインパイプライン制御部MPLCeでは、条件一致検出部CONDeおよび処理判定部PDJeが図26に示した条件一致検出部CONDcおよび処理判定部PDJcと異なる。
条件一致検出部CONDeは、追い出し対象データの候補がccNUMA構成におけるローカルメモリアドレスに格納されるデータであり、かつ、追い出し対象データの候補が第1キャッシュメモリL1に保持されていないことを検出する。検出結果を示す情報MWAYは、処理判定部PDJeに転送される。
さらに、条件一致検出部CONDeは、追い出し対象データの候補の状態が”変更”であるかを検出し、検出結果を示す情報MDWAYを処理判定部PDJeに転送する。なお、条件一致検出部CONDcの詳細は、図44で説明する。また、処理判定部PDJeの詳細は、図45で説明する。
図44は、図43に示した条件一致検出部CONDeの一例を示す。条件一致検出部CONDeは、図29に示した検出部DETc(DETc0−DETc15)の代わりに検出部DETe(DETe0−DETe15)を有することを除いて、図29に示した条件一致検出部CONDcと同一または同様である。例えば、条件一致検出部CONDeは、複数の検出部DETe(DETe0−DETe15)を有する。検出部DETeの末尾の数字は、第2キャッシュメモリLLeのウェイWAYの末尾の数字に対応する。複数の検出部DETeは互いに同一または同様であるため、検出部DETe0について説明する。
検出部DETe0は、図29に示した論理積回路ANDd1の代わりに論理積回路ANDd3を有する。また、検出部DETe0では、図29に示した否定論理和回路NORd1、否定論理積回路NANDd1および論理和回路ORd1が検出部DETc0から省かれ、論理積回路ANDd4が検出部DETc0に追加される。検出部DETe0のその他の構成は、図29に示した検出部DETc0と同一または同様である。
例えば、検出部DETe0は、排他的否定論理和回路ENORd1、ENORd2、論理和回路ORd2、論理積回路ANDd2、ANDd3、ANDd4を有する。排他的否定論理和回路ENORd1、ENORd2、論理積回路ANDd2および論理和回路ORd2は、図29に示した排他的否定論理和回路ENORd1、ENORd2、論理積回路ANDd2および論理和回路ORd2と同一または同様である。
論理積回路ANDd3は、論理積回路ANDd2の演算結果と論理和回路ORd2の演算結果の反転信号との論理積を演算し、演算結果をマッチウェイ情報MWAY0として処理判定部PDJeに出力する。
論理積回路ANDd4は、アドレスRAD[18:7]で示されるインデックスアドレスPA[18:7]に対応する第1管理情報INFLLc0内のタイプコードTCLL[1:0]をタグ部TAGLLcから受ける。そして、論理積回路ANDd4は、タグ部TAGLLcから受けたタイプコードTCLL[0:0]の反転信号とタイプコードTCLL[1:1]との論理積を演算し、演算結果を情報MDWAY0として処理判定部PDJeに出力する。すなわち、論理積回路ANDd4は、ウェイWAY0に保持されたデータのうちの追い出し対象データの候補の状態が”変更”の場合、論理値”1”を処理判定部PDJeに出力する。
このように、検出部DETe0は、ウェイWAY0に保持されたデータのうち、インデックスアドレスPA[18:7]で示される追い出し対象データの候補が抑止条件を満たすかを検出する。また、検出部DETe0は、追い出し対象データの候補の状態が”変更”であるかを検出する。
図45は、図43に示した処理判定部PDJeの一例を示す。図45に示す一点鎖線および網掛けの矩形の意味は、図8に示した一点鎖線および網掛けの矩形と同じである。処理判定部PDJeでは、選択部SELp4、SELp5およびアクセス制御部ACNTLeが図13に示した処理判定部PDJbに追加される。処理判定部PDJeのその他の構成は、図13に示した処理判定部PDJbと同一または同様である。
例えば、処理判定部PDJeは、選択部SELp1、SELp2、SELp3、SELp4、SELp5、デコード部DEC、アクセス制御部ACNTLe、追い出し要求完了判定部CTDJ、追い出し実行判定部EXDJおよび指示生成部IGENを有する。さらに、処理判定部PDJeは、第2キャッシュタグ更新判定部TGDJ、第2キャッシュタグデータ生成部TDGEN、第1キャッシュ制御部CMCNTLb、アボート判定部ABDJおよびインターロック制御部INTCLを有する。また、処理判定部PDJeは、論理積回路ANDp1、ANDp2、ANDp3、ANDp4、ANDp5、論理和回路ORp1を有する。図45では、図13に示した処理判定部PDJbに追加された選択部SELp4、SELp5およびアクセス制御部ACNTLeについて説明する。
選択部SELp4は、各ウェイWAYの追い出し対象データの候補の状態が”変更”であるかを示す各ウェイWAYの情報MDWAY0−MDWAY15のうち、情報RWAYIDが示すビクティムウェイWAYに対応する情報MDWAYを選択する。そして、選択部SELp4は、情報RWAYIDに基づいて選択した情報MDWAYをアクセス制御部ACNTLeに出力する。情報RWAYIDに基づいて選択された情報MDWAYは、ビクティムウェイWAYに保持された追い出し対象データの状態が”変更”であるかを示す。
選択部SELp5は、各ウェイWAYの追い出し対象データの候補のアドレスAvict0−Avict15のうち、情報RWAYIDが示すビクティムウェイWAYに対応するアドレスAvictを選択する。そして、選択部SELp5は、情報RWAYIDに基づいて選択したアドレスAvictをアクセス制御部ACNTLeに出力する。情報RWAYIDに基づいて選択されたアドレスAvictは、ビクティムウェイWAYに保持された追い出し対象データのアドレスを示す。
アクセス制御部ACNTLeは、選択部SELp1、SELp4、SELp5により選択されたマッチウェイ情報MWAY、情報MDWAYおよびアドレスAvictを受ける。また、アクセス制御部ACNTLeは、情報SIN、LLHTW、HTCLL、RWAYIDを受ける。そして、アクセス制御部ACNTLeは、情報SIN、LLHTW、HTCLL、RWAYID、MWAY、MDWAYおよびアドレスAvict等に基づいて、信号ACCSIG、コマンドCMD等を生成する。信号ACCSIGは、データ保持部DMEMをアクセスするための信号である。コマンドCMDは、図42で説明したように、排他選択部EXSELを介してメモリ制御部MCNTL等に転送される。
例えば、アクセス制御部ACNTLeは、読み出し要求READで要求された要求データがキャッシュヒットした場合、要求データを読み出すために、信号ACCSIGを用いてデータ保持部DMEMにアクセスする。
また、例えば、アクセス制御部ACNTLeは、読み出し要求READで要求された要求データがキャッシュミスし、追い出し対象データの状態が”変更”以外の場合、コマンドCMDを用いて、メモリ制御部MCNTLに対して要求データの転送を要求する。この場合、データ保持部DMEMは、アクセスされない。
また、例えば、アクセス制御部ACNTLeは、読み出し要求READで要求された要求データがキャッシュミスし、追い出し対象データの状態が”変更”の場合、コマンドCMDを用いて、メモリ制御部MCNTLに対して要求データの転送を要求する。さらに、アクセス制御部ACNTLeは、信号ACCSIGを用いて、データ保持部DMEMに対して追い出し対象データの読み出しを指示する。
図46は、図39に示した第2キャッシュメモリLLeのデータアクセスの一例を示す。なお、図46は、読み出し要求READ2、READ3で要求された要求データがキャッシュミスし、追い出し対象データの状態が”変更”の場合のデータアクセスの一例を示す。
メインパイプライン制御部MPLCeは、読み出し要求READ1が投入され、第2キャッシュメモリLLeがキャッシュミスした場合、メモリ制御部MCNTLに対して要求MEMREAD1を送信する。
読み出し要求READ2が、読み出し要求READ1に連続してメインパイプライン制御部MPLCeに投入される。追い出し対象データの状態が”変更”であるため、メモリ制御部MCNTLに対して、2つの要求MEMWRITE2、MEMREAD2が互いに同じサイクルで発生する。要求MEMWRITE2は、追い出し対象データの主記憶装置MEMへの書き戻しの要求であり、要求MEMREAD2は、読み出し要求READ2で要求された要求データを主記憶装置MEMから読み出す要求である。
第2キャッシュメモリLLeは、2つの要求MEMWRITE2、MEMREAD2が互いに同じサイクルで発生するため、どちらかの要求を1サイクル遅らせる制御を実行する。図46に示す例では、第2キャッシュメモリLLeは、要求MEMREAD2を1サイクル遅らせる。
また、読み出し要求READ3が、読み出し要求READ2に連続してメインパイプライン制御部MPLCeに投入される。追い出し対象データの状態が”変更”であるため、メモリ制御部MCNTLに対して、2つの要求MEMWRITE2、MEMREAD2が互いに同じサイクルで発生する。この場合、第2キャッシュメモリLLeは、先行する読み出し要求READ2により発生した要求MEMWRITE2、MEMREAD2が実行されてから、要求MEMREAD3を実行する。また、第2キャッシュメモリLLeは、要求MEMWRITE2により占有されていたデータバスREQDATAが解放されてから、要求MEMWRITE3を実行する。
なお、読み出し要求READがメインパイプライン制御部MPLCeに投入されてから4サイクルの間、後続の読み出し要求READの投入を待機させる制御方法も考えられるが、キャッシュヒットした場合のスループットおよびレイテンシが低下する。この結果、演算処理装置PUの処理性能が低下するため、後続の読み出し要求READの投入を待機させる制御方法は、適切ではない。
ここで、図46に示す制御方法を用いる第2キャッシュメモリLLeは、図32に示した制御方法を用いる第2キャッシュメモリLLcに比べて、演算処理装置PUの性能低下を招き、実装コストが高くなるおそれがある。このため、第2キャッシュメモリLLeは、実装コストの増加よりも性能利点が上回ると判断される場合に採用されることにより、効果を発揮する。例えば、第2キャッシュメモリLLeは、読み出しに比べて書き込みの比率が高く、第2キャッシュメモリLLeのキャッシュヒット時のレイテンシよりもパイプライン処理のスループットを重視する場合等に有効である。
以上、図39から図46に示す実施形態においても、図1に示した実施形態と同様の効果を得ることができる。例えば、メインパイプライン制御部MPLCeは、追い出し対象データが下記の抑止条件を満たす場合、追い出し要求MORPを発行せずに、複数のウェイWAYのいずれかからデータを追い出す処理を実行する。
抑止条件は、追い出し対象データがccNUMA構成におけるローカルメモリアドレスに格納されるデータであり、かつ、追い出し対象データが第1キャッシュメモリL1に保持されていないことである。
抑止条件が満たされる場合、追い出し要求MORPに基づく処理相当の処理を追い出し要求MORPを発行せずに実行できるため、追い出し要求MORPを発行する場合に比べて、パイプライン制御部PLCに投入する処理要求の数を少なくすることができる。これにより、第1キャッシュメモリL1からの1回の読み出し要求READに対する一連の処理を実行する際のパイプライン制御部PLCのスループットを向上させることができる。この結果、第2キャッシュメモリLLeのスループットを向上させることができる。
図47は、演算処理装置、情報処理装置および演算処理装置の制御方法の別の実施形態を示す。図1から図45で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図47に示す情報処理装置IPEfは、例えば、サーバ等のコンピュータ装置である。情報処理装置IPEfは、図39に示した演算処理装置PUeの代わりに演算処理装置PUfを有することを除いて、図39に示した情報処理装置IPEeと同一または同様である。例えば、情報処理装置IPEfは、複数の演算処理装置PUf(PUf0、PUf1、PUf2、PUf3)と複数の主記憶装置MEM(MEM0、MEM1、MEM2、MEM3)と通信部CDと入出力制御部IOCNTLと入出力装置IOUとを有する。
演算処理装置PUfは、図39に示した第2キャッシュメモリLLeの代わりに第2キャッシュメモリLLfを有することを除いて、図39に示した演算処理装置PUeと同一または同様である。例えば、演算処理装置PUfは、複数のコアCORE(CORE0、CORE1、・・・、CORE7)と、第2キャッシュメモリLLfと、メモリ制御部MCNTLと、通信インタフェース部CIFとを有する。
なお、演算処理装置PUfおよび情報処理装置IPEfの構成は、図47に示す例に限定されない。また、演算処理装置PUfおよび主記憶装置MEMの数は、図47に示す例に限定されない。
図48は、図47に示し第2キャッシュメモリLLfの一例を示す。なお、第2キャッシュメモリLLfの構成は、図48に示す例に限定されない。第2キャッシュメモリLLfは、図40に示したメインパイプライン制御部MPLCeの代わりにメインパイプライン制御部MPLCfを有することを除いて、図40に示した第2キャッシュメモリLLeと同一または同様である。
例えば、第2キャッシュメモリLLfは、投入部INPc、メインパイプライン制御部MPLCf、サブパイプライン制御部SPLCおよび排他選択部EXSELを有する。さらに、第2キャッシュメモリLLfは、データ保持部DMEM、データ選択部DSELe、タグ部TAGLLc、TAGL1c、TAGD、使用情報保持部LRULL、スヌープロック部SNPcおよびキャッシュミス制御部MIBを有する。
図48に示す第2キャッシュメモリLLeでは、追い出し要求MORPの発行を抑止する抑止条件の第2条件が図39に示した第2キャッシュメモリLLeと異なる。例えば、追い出し対象データがccNUMA構成におけるローカルメモリアドレスに格納されるデータであることが図40で説明した第2条件から省かれる。
すなわち、追い出し対象データがccNUMA構成におけるローカルメモリアドレスに格納されるデータであることと、追い出し対象データの状態が”変更”以外の状態であることの2つが図9で説明した第2条件から省かれる。したがって、第2条件は、追い出し対象データが第1キャッシュメモリL1に保持されていないことである。このため、追い出し対象データが”Local≠Host”の場合でも、追い出し対象データが第1キャッシュメモリL1に保持されていなければ、追い出し要求MORPに基づく処理相当の処理が読み出し要求READ内で実行される。なお、第1条件は、図9で説明した第1条件と同じである。
メインパイプライン制御部MPLCfは、追い出し対象データが”Local≠Host”で、追い出し要求MORPの発行を抑止した場合、追い出し対象データを管理するCMGに対する指示を読み出し要求READ内で実行する。例えば、メインパイプライン制御部MPLCfは、自身のCMGの持ち出し情報を無効化する指示を、追い出し対象データを管理するCMGに送信する。なお、追い出し対象データの状態が”変更”である場合、メインパイプライン制御部MPLCfは、自身のCMGの持ち出し情報を無効化する指示と、書き戻しデータである追い出し対象データとを、追い出し対象データを管理するCMGに送信する。図43で説明したように、追い出し対象データは、ステージ3で決定されるため、データ保持部DMEMへのアクセスは、ステージ4で実行される。
また、追い出し対象データが”Local≠Host”の場合に、追い出し要求MORPに基づく処理相当の処理を読み出し要求READ内で実行すると、通信インタフェース部CIFに対する2つの要求が同時に発生する可能性がある。2つの要求は、例えば、第1キャッシュメモリL1に応答するデータの要求と、自身のCMGの持ち出し情報の無効化の要求(追い出し対象データがダーティの場合は書き戻しデータの送付も含む)である。
このように、第2キャッシュメモリLLfでは、追い出し要求MORPの発行を抑止した場合、排他選択部EXSELの出力先は、通信インタフェース部CIFである。これに対し、図40に示した第2キャッシュメモリLLeでは、追い出し要求MORPの発行を抑止した場合、排他選択部EXSELの出力先は、メモリ制御部MCNTLである。したがって、追い出し対象データの状態が”変更”の場合でも、排他選択部EXSELの出力先を適切に選択することにより、追い出し要求MORPの発行を抑止することができる。このため、第2キャッシュメモリLLfでは、上述したように、追い出し対象データが”Local=Host”であることと、追い出し対象データの状態が”変更”以外の状態であることの2つが図9で説明した第2条件から省かれる。
例えば、追い出し対象データの状態が”変更”の場合におけるメインパイプライン制御部MPLCfの動作は、図43に示したパイプライン制御部MPLCeと同一または同様である。メインパイプライン制御部MPLCdの詳細は、図49以降で説明する。なお、メインパイプライン制御部MPLCf以外の投入部INPc等のブロックは、図40に示した第2キャッシュメモリLLe内の対応するブロックと同一または同様である。
図49は、図48に示したメインパイプライン制御部MPLCfの一例を示す。図49に示す一点鎖線および網掛けの矩形の意味は、図8に示した一点鎖線および網掛けの矩形と同じである。メインパイプライン制御部MPLCfは、図43に示した条件一致検出部CONDeおよび処理判定部PDJeの代わりに、条件一致検出部CONDfおよび処理判定部PDJfを有する。メインパイプライン制御部MPLCfのその他の構成は、図43に示したメインパイプライン制御部MPLCeと同一または同様である。
例えば、メインパイプライン制御部MPLCfは、選択判定部SDJ、ヒット判定部HDJc、エンコード部ENC、コア判定部CDJc、条件一致検出部CONDf、使用情報更新部INFUPDおよび処理判定部PDJfを有する。メインパイプライン制御部MPLCfでは、条件一致検出部CONDfおよび処理判定部PDJfが図43に示した条件一致検出部CONDeおよび処理判定部PDJeと異なる。
条件一致検出部CONDfは、追い出し対象データの候補が第1キャッシュメモリL1に保持されていないことを検出し、検出結果を示す情報MWAYを処理判定部PDJfに転送する。また、条件一致検出部CONDfは、追い出し対象データの候補の状態が”変更”であるかを検出し、検出結果を示す情報MDWAYを処理判定部PDJfに転送する。さらに、条件一致検出部CONDfは、追い出し対象データの候補がccNUMA構成におけるローカルメモリアドレスに格納されるデータであるかを検出し、検出結果を示す情報LHWAYを処理判定部PDJfに転送する。なお、条件一致検出部CONDfの詳細は、図50で説明する。また、処理判定部PDJfの詳細は、図51で説明する。
図50は、図49に示した条件一致検出部CONDfの一例を示す。条件一致検出部CONDfは、図44に示した検出部DETe(DETe0−DETe15)の代わりに検出部DETf(DETf0−DETf15)を有することを除いて、図44に示した条件一致検出部CONDeと同一または同様である。例えば、条件一致検出部CONDfは、複数の検出部DETf(DETf0−DETf15)を有する。検出部DETfの末尾の数字は、第2キャッシュメモリLLfのウェイWAYの末尾の数字に対応する。複数の検出部DETfは互いに同一または同様であるため、検出部DETf0について説明する。
検出部DETf0では、図44に示した論理積回路ANDd3が検出部DETe0から省かれる。検出部DETf0のその他の構成は、図44に示した検出部DETf0と同一または同様である。例えば、検出部DETf0は、排他的否定論理和回路ENORd1、ENORd2、論理和回路ORd2、論理積回路ANDd2、ANDd4を有する。排他的否定論理和回路ENORd1、ENORd2、論理和回路ORd2、論理積回路ANDd2、ANDd4は、図44に示した排他的否定論理和回路ENORd1、ENORd2、論理和回路ORd2、論理積回路ANDd2、ANDd4と同一または同様である。
例えば、論理積回路ANDd2は、排他的否定論理和回路ENORd1の演算結果と排他的否定論理和回路ENORd2の演算結果との論理積を演算し、演算結果を情報LHWAY0として処理判定部PDJfに出力する。論理和回路ORd2は、所持情報CWAY0と情報SWAY0との論理和を演算し、演算結果をマッチウェイ情報MWAY0として処理判定部PDJfに出力する。論理積回路ANDd4は、タグ部TAGLLcから受けたタイプコードTCLL[0:0]の反転信号とタイプコードTCLL[1:1]との論理積を演算し、演算結果を情報MDWAY0として処理判定部PDJfに出力する。
このように、検出部DETf0は、ウェイWAY0に保持されたデータのうち、インデックスアドレスPA[18:7]で示される追い出し対象データの候補が抑止条件を満たすかを検出する。また、検出部DETf0は、追い出し対象データの候補の状態が”変更”であるかを検出する。さらに、検出部DETf0は、追い出し対象データの候補がccNUMA構成におけるローカルメモリアドレスに格納されるデータであるかを検出する。
図51は、図49に示した処理判定部PDJfの一例を示す。図51に示す一点鎖線および網掛けの矩形の意味は、図8に示した一点鎖線および網掛けの矩形と同じである。処理判定部PDJfは、図45に示したアクセス制御部ACNTLeの代わりにアクセス制御部ACNTLfを有する。また、処理判定部PDJfでは、選択部SELp6が図45に示した処理判定部PDJeに追加される。処理判定部PDJfのその他の構成は、図45に示した処理判定部PDJeと同一または同様である。
例えば、処理判定部PDJfは、選択部SELp1、SELp2、SELp3、SELp4、SELp5、SELp6、デコード部DEC、アクセス制御部ACNTLf、追い出し要求完了判定部CTDJ、追い出し実行判定部EXDJおよび指示生成部IGENを有する。さらに、処理判定部PDJfは、第2キャッシュタグ更新判定部TGDJ、第2キャッシュタグデータ生成部TDGEN、第1キャッシュ制御部CMCNTLb、アボート判定部ABDJおよびインターロック制御部INTCLを有する。また、処理判定部PDJfは、論理積回路ANDp1、ANDp2、ANDp3、ANDp4、ANDp5、論理和回路ORp1を有する。図51では、図45に示した処理判定部PDJeからの変更点である選択部SELp6およびアクセス制御部ACNTLfについて説明する。
選択部SELp6は、各ウェイWAYの追い出し対象データの候補がccNUMA構成におけるローカルメモリアドレスに格納されるデータであるかを示す各ウェイWAYの情報LHWAY0−LHWAY15を受ける。そして、選択部SELp6は、情報LHWAY0−LHWAY15のうち、情報RWAYIDが示すビクティムウェイWAYに対応する情報LHWAYを選択し、選択した情報LHWAYをアクセス制御部ACNTLfに出力する。情報RWAYIDに基づいて選択された情報LHWAYは、ビクティムウェイWAYに保持された追い出し対象データがccNUMA構成におけるローカルメモリアドレスに格納されるデータであるかを示す。
アクセス制御部ACNTLfは、選択部SELp1、SELp4、SELp5、SELp6により選択されたマッチウェイ情報MWAY、情報MDWAY、アドレスAvictおよび情報LHWAYを受ける。また、アクセス制御部ACNTLfは、情報SIN、LLHTW、HTCLL、RWAYIDを受ける。そして、アクセス制御部ACNTLfは、情報SIN、LLHTW、HTCLL、RWAYID、MWAY、MDWAY、LHWAYおよびアドレスAvict等に基づいて、信号ACCSIG、コマンドCMD等を生成する。信号ACCSIGは、データ保持部DMEMをアクセスするための信号である。コマンドCMDは、排他選択部EXSELを介して通信インタフェース部CIF等に転送される。例えば、他のCMGに対してデータ転送等を要求する場合、排他選択部EXSELの出力先として、通信インタフェース部CIFが選択される。
例えば、アクセス制御部ACNTLfは、読み出し要求READで要求された要求データがキャッシュヒットした場合、要求データを読み出すために、信号ACCSIGを用いてデータ保持部DMEMにアクセスする。
また、例えば、アクセス制御部ACNTLfは、要求データがキャッシュミスし、追い出し対象データの状態が”変更”以外の場合、コマンドCMDを用いて、メモリ制御部MCNTLまたは他のCMGに対して要求データの転送を要求する。この場合、データ保持部DMEMは、アクセスされない。
また、例えば、アクセス制御部ACNTLfは、要求データがキャッシュミスし、追い出し対象データの状態が”変更”の場合、コマンドCMDを用いて、メモリ制御部MCNTLまたは他のCMGに対して要求データの転送を要求する。さらに、アクセス制御部ACNTLfは、コマンドCMDを用いて、メモリ制御部MCNTLまたは他のCMGに対して追い出し対象データの書き戻しを要求する。また、アクセス制御部ACNTLfは、信号ACCSIGを用いて、データ保持部DMEMに対して追い出し対象データの読み出しを指示する。さらに、アクセス制御部ACNTLfは、メモリ制御部MCNTLまたは他のCMGに対して追い出し対象データの書き戻しをコマンドCMDを用いて要求し、データ保持部DMEMに対して追い出し対象データの読み出しを信号ACCSIGを用いて指示する。
以上、図47から図51に示す実施形態においても、図1に示した実施形態と同様の効果を得ることができる。例えば、メインパイプライン制御部MPLCfは、追い出し対象データが下記の抑止条件を満たす場合、追い出し要求MORPを発行せずに、複数のウェイWAYのいずれかからデータを追い出す処理を実行する。
抑止条件は、追い出し対象データが第1キャッシュメモリL1に保持されていないことである。抑止条件が満たされる場合、追い出し要求MORPに基づく処理相当の処理を追い出し要求MORPを発行せずに実行できるため、追い出し要求MORPを発行する場合に比べて、パイプライン制御部PLCに投入する処理要求の数を少なくすることができる。これにより、第1キャッシュメモリL1からの1回の読み出し要求READに対する一連の処理を実行する際のパイプライン制御部PLCのスループットを向上させることができる。この結果、第2キャッシュメモリLLfのスループットを向上させることができる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。