(57)【要約】      （修正有）【課題】演算処理装置間でキャッシュ分割情報の設定をすることができる演算処理装置及び演算処理装置の制御方法を提供する。【解決手段】複数のコアと，第１のキャッシュ制御部と第１のキャッシュメモリとを含む第１のキャッシュとを有する。第１のキャッシュ制御部が，第１のキャッシュ分割情報に基づいて，メモリアクセス要求元に対応して第１のキャッシュメモリを分割するキャッシュ分割制御を行う第１のコアグループと，第１のコアグループと同様の構成を有する第２のコアグループと，メモリアクセス要求が送信されるコアグループ間バスとを有する。第１のコアグループのメモリアクセス要求元が，第２のコアグループが管理するメインメモリへのメモリアクセス要求を第２のキャッシュ分割情報を付加して発行した場合，第２のコアグループの第２のキャッシュ制御部が，メモリアクセス要求に応答して、付加された第２のキャッシュ分割情報を登録する。【選択図】図２
2015228060.tif 000002
【特許請求の範囲】
【請求項１】
複数のコアと，第１のキャッシュ制御部と第１のキャッシュメモリとを含む第１のキャッシュとを有し，前記第１のキャッシュ制御部が，第１のキャッシュ分割情報に基づいて，メモリアクセス要求元に対応して前記第１のキャッシュメモリを分割するキャッシュ分割制御を行う第１のコアグループと，
複数のコアと，第２のキャッシュ制御部と第２のキャッシュメモリとを含む第２のキャッシュとを有し，前記第２のキャッシュ制御部が，第２のキャッシュ分割情報に基づいて，メモリアクセス要求元に対応して前記第２のキャッシュメモリを分割するキャッシュ分割制御を行う第２のコアグループと，
前記第１，第２のコアグループ間に設けられメモリアクセス要求が送信されるコアグループ間バスとを有し，
前記第１のコアグループのメモリアクセス要求元が，前記第２のコアグループが管理するメインメモリへのメモリアクセス要求を前記第２のキャッシュ分割情報を付加して発行した場合，前記第２のコアグループの第２のキャッシュ制御部が，前記発行されたメモリアクセス要求に応答して，前記付加された第２のキャッシュ分割情報を登録する演算処理装置。
【請求項２】
前記第２のコアグループの第２のキャッシュ制御部が，前記第２のキャッシュ分割情報を登録した後，当該登録した第２のキャッシュ分割情報に基づいて前記第２のキャッシュメモリに対し前記キャッシュ分割制御を行う請求項１に記載の演算処理装置。
【請求項３】
前記第２のコアグループの第２のキャッシュ制御部が，前記第２のキャッシュ分割情報を登録した後，外部から入力されるデータを前記第２のキャッシュメモリに登録するキャッシュインジェクション要求に応答して，前記登録した第２のキャッシュ分割情報に基づいて前記第２のキャッシュメモリに対し前記キャッシュ分割制御を行い，前記キャッシュ分割制御で選択されたキャッシュブロック内に前記入力されるデータを登録する請求項１に記載の演算処理装置。
【請求項４】
前記第２のコアグループの第２のキャッシュ制御部が，前記第１のコアグループのメモリアクセス要求元が発行したメモリアクセス要求に応答して，前記第２のキャッシュメモリにデータを登録せずに，前記第１のコアグループ内の前記メモリアクセス要求元にデータ応答する請求項１に記載の演算処理装置。
【請求項５】
前記第２のコアグループの第２のキャッシュ制御部が，前記第１のコアグループのメモリアクセス要求元が発行したメモリアクセス要求に応答して，前記第２のコアグループが管理するメインメモリへのアクセス制御を行い，前記第２のキャッシュメモリにアクセスしたデータを登録せずに，前記第１のコアグループ内の前記メモリアクセス要求元にデータ応答する請求項１に記載の演算処理装置。
【請求項６】
前記キャッシュ分割情報は，前記メモリアクセス要求元と，前記メモリアクセス要求元に割り当てられる最大キャッシュブロック数とを有し，
前記キャッシュ分割制御は，キャッシュメモリにデータを登録するときに，前記メモリアクセス要求元に割り当てられている現キャッシュブロック数が前記最大キャッシュブロック数に達するまで，他のメモリアクセス要求元に割り当てられているキャッシュブロックを前記メモリアクセス要求元に割り当てて前記データを登録する請求項１に記載の演算処理装置。
【請求項７】
複数のコアとキャッシュメモリとを有する第２の演算処理装置とバスを介して接続される第１の演算処理装置であって，
複数のコアと，
第１のキャッシュ制御部と第１のキャッシュメモリとを含む第１のキャッシュとを有し，
前記第１のキャッシュ制御部が，第１のキャッシュ分割情報に基づいて，メモリアクセス要求元に対応して前記第１のキャッシュメモリを分割するキャッシュ分割制御を行い，
前記第２の演算処理装置のメモリアクセス要求元が，前記第１の演算処理装置が管理するメインメモリへのメモリアクセス要求を前記第１のキャッシュ分割情報を付加して発行した場合，前記第１のキャッシュ制御部が，前記発行されたメモリアクセス要求に応答して，前記付加された第１のキャッシュ分割情報を登録する演算処理装置。
【請求項８】
複数のコアと，第１のキャッシュ制御部と第１のキャッシュメモリとを含む第１のキャッシュとを有し，前記第１のキャッシュ制御部が，第１のキャッシュ分割情報に基づいて，メモリアクセス要求元に対応して前記第１のキャッシュメモリを分割するキャッシュ分割制御を行う第１のコアグループと，
複数のコアと，第２のキャッシュ制御部と第２のキャッシュメモリとを含む第２のキャッシュとを有し，前記第２のキャッシュ制御部が，第２のキャッシュ分割情報に基づいて，メモリアクセス要求元に対応して前記第２のキャッシュメモリを分割するキャッシュ分割制御を行う第２のコアグループと，
前記第１，第２のコアグループ間に設けられメモリアクセス要求が送信されるコアグループ間バスとを有する演算処理装置の制御方法であって，
前記第１のコアグループのメモリアクセス要求元が，前記第２のコアグループが管理するメインメモリへのメモリアクセス要求を前記第２のキャッシュ分割情報を付加して発行した場合，前記第２のコアグループの第２のキャッシュ制御部が，前記発行されたメモリアクセス要求に応答して，前記付加された第２のキャッシュ分割情報を登録する工程を有する演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，演算処理装置及び演算処理装置の制御方法に関する。
【背景技術】
【０００２】
演算処理装置（またはＣＰＵ（CPU: Central Processing Unitと称する）は，単数または複数のＣＰＵコアと，それらのＣＰＵコアが利用するキャッシュメモリとを有する。ＣＰＵコアは内部に一次キャッシュメモリを有し，上記のキャッシュメモリは，ＣＰＵコアが利用する二次キャッシュメモリ（以下Ｌ２キャッシュメモリと称する）である。
【０００３】
大規模な演算処理装置は，仮想化技術により，ＣＰＵコアに複数の仮想マシン（以下ＶＭ（Virtual Machine）と称する）を生成し，複数の仮想マシンがそれぞれキャッシュメモリを共有する。また，ＣＰＵコアは，複数のプロセスを処理する場合，複数のプロセスがそれぞれキャッシュメモリを共有する。あるいは，複数のＣＰＵコアがそれぞれキャッシュメモリを共有する。このようにキャッシュメモリの共有の単位には，複数のＣＰＵコア，複数のプロセス，複数のＶＭなどのメモリアクセス要求元がある。
【０００４】
一方，キャッシュメモリは，複数のウェイ構造を有し，共通のインデックスに対して複数のキャッシュブロックを登録可能にし，キャッシュメモリの容量を増大させる。ウェイ数が大きくなれば，同じインデックスに対して利用できるキャッシュブロック数が増大し，キャッシュメモリの利用効率が向上する。
【０００５】
近年の演算処理装置において，メモリアクセス要求を発行する複数の要求元（例えば，複数のＣＰＵコア，複数のプロセス，複数のＶＭ）に対応して，キャッシュメモリの最大ウェイ数を設定可能にすることで，キャッシュメモリを異なるサイズで分割して複数の要求元別に割り当てるキャッシュ分割制御が提案されている。例えば，以下の特許文献などである。
【０００６】
このキャッシュ分割制御によれば，各要求元が利用できる最大ウェイ数を設定可能にし，メモリアクセス要求，例えばロード要求に応答してデータをキャッシュメモリに登録する際にキャッシュミスした場合，現時点で要求元に割り当てられているウェイ数と予め設定している最大ウェイ数とを比較し，現在の割当済みウェイ数が最大ウェイ数に達していなければ，他の要求元に割当済みのキャッシュブロックをリプレースして現要求元のデータを格納し，達していれば，現要求元に割当済みのキャッシュブロックをリプレースしてデータを格納する。
【０００７】
そして，各要求元が利用できる最大ウェイ数の設定は，例えば，ＣＰＵコアからの最大ウェイ数を設定する特殊命令により行われ，もしくはメモリアクセス要求に最大ウェイ数を付加して行われる。最大ウェイ数が設定された後に，キャッシュメモリへのデータの登録処理が発生したときに，上記のリプレース処理によりリプレースされたキャッシュブロックにデータが格納され，各要求元に割り当てるキャッシュメモリのサイズを最大ウェイ数未満に維持するよう制御される。このように，キャッシュ分割制御による分割されたキャッシュサイズを動的に変更して，複数の要求元に対して限られた容量のキャッシュメモリを効率的に利用する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００９−１６３４５０号公報
【特許文献２】特開２０１１−１８１９６号公報
【特許文献３】特開２０１２−２０３７２９号公報
【特許文献４】特開２００２−１４０２３４号公報
【特許文献５】特開２００７−２９９４２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
大規模な情報処理装置では，複数の演算処理装置で構成した演算処理装置システムを搭載する。各演算処理装置は複数のＣＰＵコアとそれらで共有されるキャッシュメモリとを有し，各演算処理装置がそれぞれが管理するメインメモリにアクセスし，それぞれが有するキャッシュメモリにデータを登録する。したがって，各演算処理装置が，それぞれの複数のメモリアクセス要求元（例えば複数のＶＭなど）に対して，それぞれのキャッシュメモリの最大ウェイ数を設定してキャッシュ分割制御を行う。
【００１０】
しかしながら，第１の演算処理装置は，第２の演算処理装置内のキャッシュ分割制御に必要な要求元とその最大ウェイ数を含むキャッシュ分割情報を設定することができない。これを可能にするためには，キャッシュ分割情報を設定するための特殊な命令を新たに導入して，第１の演算処理装置がその特殊な命令を実行する必要がある。その結果，特殊な命令を処理できるように演算処理装置の構成を大幅に変更する必要がある。さらに，特殊な命令を処理することにより演算処理装置間に新たなバストランザクションが発生するので，通常のメモリアクセス要求によるレイテンシが悪化する。
【００１１】
そこで，１つの実施の形態の目的は，演算処理装置間でキャッシュ分割情報の設定をすることができる演算処理装置及び演算処理装置の制御方法を提供することにある。
【課題を解決するための手段】
【００１２】
実施の形態の第１の側面は，複数のコアと，第１のキャッシュ制御部と第１のキャッシュメモリとを含む第１のキャッシュとを有し，前記第１のキャッシュ制御部が，第１のキャッシュ分割情報に基づいて，メモリアクセス要求元に対応して前記第１のキャッシュメモリを分割するキャッシュ分割制御を行う第１のコアグループと，
複数のコアと，第２のキャッシュ制御部と第２のキャッシュメモリとを含む第２のキャッシュとを有し，前記第２のキャッシュ制御部が，第２のキャッシュ分割情報に基づいて，メモリアクセス要求元に対応して前記第２のキャッシュメモリを分割するキャッシュ分割制御を行う第２のコアグループと，
前記第１，第２のコアグループ間に設けられメモリアクセス要求が送信されるコアグループ間バスとを有し，
前記第１のコアグループのメモリアクセス要求元が，前記第２のコアグループが管理するメインメモリへのメモリアクセス要求を前記第２のキャッシュ分割情報を付加して発行した場合，前記第２のコアグループの第２のキャッシュ制御部が，前記発行されたメモリアクセス要求に応答して，前記付加された第２のキャッシュ分割情報を登録する演算処理装置である。
【発明の効果】
【００１３】
第１の側面によれば，演算処理装置間でキャッシュ分割情報の設定をすることができる。
【図面の簡単な説明】
【００１４】
【図１】本実施の形態における演算処理装置の構成を示す図である。
【図２】本実施の形態における演算処理装置の構成を示す図である。
【図３】本実施の形態におけるキャッシュL2_CACHEのより詳細な構成を示す図である。
【図４】データをキャッシュ登録する場合のリプレース制御部によるリプレース処理のフローチャート図である。
【図５】本実施の形態における最大ウェイ数を設定可能なメモリアクセス要求のフォーマットの一例を示す図である。
【図６】本実施の形態における最大ウェイ数付きメモリアクセス要求の処理を示すシーケンス図である。
【図７】キャッシュ登録指示付きIOストア要求のフォーマットを示す図である。
【図８】本実施の形態によるキャッシュ分割情報付きメモリアクセス要求により他のコアグループ内に最大ウェイ数を設定する例と，専用の最大ウェイ数設定要求により他のコアグループ内に最大ウェイ数を設定する比較例との比較を示す図である。
【発明を実施するための形態】
【００１５】
図１は，本実施の形態における演算処理装置の構成を示す図である。図１において，第１のコアグループLOCAL_CPU_0は，第１のメインメモリM_MEM_0を管理するCPUである。また，第２のコアグループHOME_CPU_1は，第２のメインメモリM_MEM_1を管理するCPUである。第１，第２のコアグループは，それぞれ異なるCPUチップの場合もあれば，単一のCPUチップ内に設けられた異なるCPUユニットの場合もある。本実施の形態では，異なるCPUチップで構成される演算処理装置の場合と，単一のCPUチップで構成される演算処理装置の場合のいずれにも適用できる。以下，異なるCPUチップの実施例と単一のCPUチップの実施例を区別することなく，２つのCPUをそれぞれを第１，第２のコアグループと称する。
【００１６】
第１のコアグループLOCAL_CPU_0は，複数，例えば４つのCPUコアCORE-00〜CORE-03と，それらのCPUコアに共通に設けられたキャッシュL2_CACHEと，IOバスIO_BUSを介して接続される外部のハードディスクHDDなどとの入出力を制御するIOデバイスIO_DEVICEと，リモートバッファR_BUFとを有する。そして，第１のコアグループLOCAL_CPU_0は，メインメモリM_MEM_0を管理し，そのメモリアクセスを制御する。CPUコアCORE-00〜CORE-03は，それぞれコアグループ内バスBUS_1を介してキャッシュL2_CACHEにメモリアクセス要求を発行し，キャッシュL2_CACHEがメモリアクセス要求を処理し，キャッシュミスした場合にメインメモリM_MEM_0へのメモリアクセスを制御する。
【００１７】
第２のコアグループLOCAL_CPU_1も，第１のコアグループLOCAL_CPU_0と同様の構成を有し，複数，例えば４つのCPUコアCORE-10〜CORE-13と，それらのCPUコアに共通に設けられたキャッシュL2_CACHEと，外部のハードディスクHDDなどとの入出力を制御するIOデバイスIO_DEVICEと，リモートバッファR_BUFとを有する。そして，第２のコアグループLOCAL_CPU_1は，メインメモリM_MEM_1を管理し，そのメモリアクセスを制御する。CPUコアCORE-10〜CORE-13は，それぞれコアグループ内バスBUS_1を介してキャッシュL2_CACHEにメモリアクセス要求を発行し，キャッシュL2_CACHEがメモリアクセス要求を処理し，キャッシュミスした場合にメインメモリM_MEM_1へのメモリアクセスを制御する。
【００１８】
第１のコアグループLOCAL_CPU_0と第２のコアグループHOME_CPU_1との間は，コアグループ間バスBUS_0で接続され，コアグループが互いに発行した相手のコアグループが管理するメインメモリへのメモリアクセス要求が，コアグループ間バスBUS_0を経由してバストランザクションにより送信される。
【００１９】
上記の第１のコアグループLOCAL_CPU_0はメインメモリM_MEM_0を管理しそのメモリアクセスを制御するとは，具体的には次のような管理，制御である。メインメモリM_MEM_0内のデータに対するメモリアクセス要求（ロード要求またはストア要求）は，第１のコアグループLOCAL_CPU_0内のメモリアクセスコントローラ（図示せず）が実行する。また，第１のコアグループLOCAL_CPU_0は，メインメモリM_MEM_0へのロード要求が発生し，メインメモリM_MEM_0のデータが第２のコアグループHOME_CPU_1により持ち出された場合には，その事実をメインメモリ内またはキャッシュ制御部内のディレクトリに記憶する。そして，その後メインメモリM_MEM_0内のデータに対して書き込みが発生した場合，ディレクトリをチェックし，そのデータを持ち出している第２のコアグループHOME_CPU_1のキャッシュメモリ内のデータを無効化した上で，書き込みを実行する。これにより，データのコヒーレンシを保つことができる。
【００２０】
図１では，第１のコアグループをメモリアクセス要求発行元のＣＰＵとしてローカルＣＰＵと称し，第２のコアグループをメモリアクセス要求発行元からアクセスされるＣＰＵとしてホームＣＰＵと称する。第１のコアグループと第２のコアグループが逆の関係になる場合もある。
【００２１】
図２は，本実施の形態における演算処理装置の構成を示す図である。図２には，第１，第２のコアグループ内のキャッシュL2_CACHE_0, L2_CACHE_1の構成が示され，さらに，各コアに生成されている仮想マシンVMが示されている。但し，コアグループ内バスBUS_1やIOデバイスは省略されている。
【００２２】
第１のコアグループLOCAL_CPU_0内のキャッシュL2_CACHE_0は，コアなどが発行したメモリアクセス要求などの各種要求を格納する要求ポート群R_PORTを有する。要求ポート群R_PORTは，メモリのデータを読み出すロード要求を格納するムーブインポートMIPと，キャッシュメモリ内のデータをメインメモリM_MEM_0に書き出す要求を格納するムーブアウトポートMOPと，メインメモリ内のデータをキャッシュメモリに予め格納するプリフェッチ要求を格納するプリフェッチポートPFPと，第２のコアグループHOME_CPU1からの要求を格納するリモート要求ポートR_RPとを有する。
【００２３】
キャッシュL2_CAHCE_0は，要求ポート群R_PORT内の要求を所定の優先度アルゴリズムで選択してキャッシュ制御部CC0に入力または投入する要求制御部RC0と，入力または投入された要求を処理するキャッシュ制御部CC0と，キャッシュメモリを構成するデータメモリD_RAMとタグメモリTAGとを有する。キャッシュ制御部CC0は，パイプライン構成でありキャッシュパイプラインとも称される。さらに，キャッシュL2_CACHE_0は，キャッシュミスした場合の処理を行うムーブインバッファMIBと，メインメモリM_MEM_0の読み出し及び書き込みを含むメモリアクセスを制御するメモリアクセスコントローラMACと，第２のコアグループHOME_CPU1と接続されるコアグループ間バスB_00への要求などを一時的に格納するリモートバッファR_BUFを有する。
【００２４】
図２の例では，４つのコアCORE_00〜CORE_03内にそれぞれ仮想マシンVMが生成されている。メモリアクセスの要求元として，コア，プロセス，仮想マシンの例があり，キャッシュ分割制御によりメモリアクセス要求元に対応してキャッシュメモリの分割を制御することを説明した。本実施の形態では，そのメモリアクセスの要求元の一例として，仮想マシンVMを例にして以下説明する。但し，キャッシュ分割制御によるキャッシュメモリの分割領域は，一般にセクタIDによって区別して管理される。その場合，メモリアクセス要求元にセクタIDが対応付けられる。
【００２５】
図２によれば，コアCORE_00内には仮想マシンVM_00が，コアCORE_01内には仮想マシンVM_01が，コアCORE_02内には仮想マシンVM_02が，コアCORE_03内には仮想マシンVM_03がそれぞれ生成されている。そして，各仮想マシンVM_00〜VM_03に対して，最大キャッシュブロック数を示す最大ウェイ数MAX_Wが，一例として２，０，４，２と設定されていることが示されている。この最大ウェイ数MAX_Wの設定は，例えばソフトウェイアにより行われる。
【００２６】
キャッシュL2_CACHE_0は，キャッシュ制御部CC0の一部として，キャッシュ分割制御におけるキャッシュブロックのリプレース制御を行うリプレース制御部RPC0を有する。そして，リプレース制御部RPCOは，各仮想マシンVMに対して設定された最大ウェイ数MAX_Wを有する最大ウェイ数テーブル（最大キャッシュブロック数）を有する。図２の例では，仮想マシンVM00，VM03に対しては，最大ウェイ数MAX_Wが「２」，「２」と設定され，仮想マシンVM01，VM02に対しては，最大ウェイ数MAX_Wが初期値の「０」のままになっている。初期値「０」の場合は，最大ウェイ数は無限大としてキャッシュ分割制御が行われるものとする。
【００２７】
図２において，第２のコアグループHOME_CPU1内の構成は，第１のコアグループLOCAL_CPU_0内の構成と同等である。但し，異なる構成は，第２のコアグループHOME_CPU1内の各コアCORE_10〜CORE_13には，それぞれ仮想マシンVM_10〜VM_13が生成され，最大ウェイ数MAX_Wはそれぞれ「０」のままになっている。また，それに対応して，リプレース制御部RPC1内の最大ウェイ数テーブル内も各仮想マシンに設定された最大ウェイ数MAX_Wもそれぞれ「０」のままになっている。
【００２８】
そして，コアグループ間バスBUS_0は，前述のとおり，リモートバッファR_BUFとリモート要求ポートR_RPとの間に設けられるとともに，ムーブインバッファMIB間にも設けられる。
【００２９】
図３は，本実施の形態におけるキャッシュL2_CACHEのより詳細な構成を示す図である。第１，第２のコアグループのキャッシュL2_CACHEは，前述のとおり同等の構成であるので，図３では，第１のコアグループLOCAL_CPU_0内のキャッシュL2_CACHE_0を示した。
【００３０】
図３において，キャッシュメモリを構成するタグメモリTAG_RAMとデータメモリD_RAMは，セットアソシエイティブ方式の構成であり，共通のインデックスに対して複数のキャッシュブロックのタグ値とデータを登録できる複数ウェイ構成である。具体的には，例えば３２ウェイで構成されている。そして，図３のデータメモリD_RAMに示されるように，キャッシュメモリが，４つの仮想マシンVM00〜VM03に対応して４つのセクタ00〜03に分割して割り当てられている。図示されていないが，タグメモリTAG_RAMもそれに対応して４つのセクタに分割されている。したがって，この例では，キャッシュメモリの４つのセクタ00〜03が，それぞれ４つの仮想マシンVM00〜VM03に割り当てられている。
【００３１】
図３の例では，例えば，仮想マシンVM00に対しては２つのウェイ（ウェイ番号0,1）が割り当てられ，VM01には７つのウェイ（ウェイ番号２〜８）が，VM02には２つのウェイ（ウェイ番号９，１０）が，そして，VM03には２１のウェイ（ウェイ番号１１〜３１）が割り当てられている。
【００３２】
一方，キャッシュ制御部CC0のキャッシュ分割制御を行うリプレース制御部RPC0は，仮想マシンVMのID00〜03に対応して設定された最大ウェイ数MAX_Wを登録する最大ウェイ数テーブルMW_TBLと，リプレースすべきウェイを選択するリプレースウェイ選択部RP_Wとを有する。リプレース制御部RPCOによるリプレース制御については，後述する。
【００３３】
キャッシュL2_CACHE_0の他に，図３には，４つのコアCORE_00〜CORE_03と要求ポート群R_PORTとを接続するコアグループ内バスBUS_1が示されている。このように，４つのコアCORE_00〜CORE_03内の仮想マシンVMは，それぞれ，メモリアクセス要求やムーブアウト要求やプリフェッチ要求を，コアグループ内バスBUS_1を介して対応する要求ポートMIP,MOP,PFPに発行する。
【００３４】
次に，キャッシュ制御部によるキャッシュ分割制御について説明する。前提として，第１のコアグループLOCAL_CPU_0内のコアCOREに生成されている仮想マシンVMは，キャッシュ分割情報を付加したメモリアクセス要求を発行して，キャッシュ制御部CC0のリプレース制御部RPC0内の最大ウェイ数テーブルMW_TLBに最大ウェイ数を設定する。例えば，コアCORE_02に生成されている仮想マシンVM_02が，メモリアクセス要求としてメインメモリM_MEM_0のアドレスに対するロード要求を発行する。このロード要求には，メインメモリM_MEM_0内のロード先のアドレスと要求元の仮想マシンVMのIDが含まれるとともに，最大ウェイ数の情報も含まれる。
【００３５】
コアCORE_02が発行したロード要求は，コアグループ内バスBUS_1を介してムーブインポートMIPに格納され，要求制御部RCOがムーブインポートMIP内のロード要求のエントリを選択して，キャッシュ制御部CC0に入力する。キャッシュ制御部CC0は，このロード要求のエントリに応答して，キャッシュヒット判定や，キャッシュヒットの場合のコアCORE_02へのデータ応答や，キャッシュミスヒットの場合のメインメモリM＿MEM_0へのリード要求などに加えて，ロード要求に付加されている仮想マシンのIDと最大ウェイ数とを含むキャッシュ分割情報に基づいて，リプレース制御部RPC0内の最大ウェイ数テーブルMW_TBLに，その仮想マシンのIDに対応して最大ウェイ数を設定する。
【００３６】
事前に仮想マシンのIDに対応して最大ウェイ数が設定されている状態で，次に，同じ仮想マシンVM_02が例えばロード要求を発行する。そのロード要求に応答して，キャッシュ制御部CC0がキャッシュミス判定をした場合，キャッシュミス制御部CC0は，ムーブインバッファMIBにそのエントリを登録し，メモリアクセスコントローラMACを介してメインメモリM_MEM_0に読み出し要求を行い，データ応答を受信する。それに応答して，ムーブインバッファMIBに登録した前述のエントリが読み出したデータと共に，再度キャッシュ制御部CC0に入力される。
【００３７】
この場合，キャッシュ制御部CC0は，メインメモリから読み出したデータとそのタグ情報を，データメモリD_RAMとキャッシュメモリを構成するタグメモリTAG_RAMに登録する。このキャッシュメモリへのデータ登録の際に，リプレース制御部RP0がどのウェイにデータとタグ情報を登録するかのリプレースウェイの選択を行う。
【００３８】
図４は，データをキャッシュ登録する場合のリプレース制御部によるリプレース処理のフローチャート図である。キャッシュ制御部CC0は，前述のようにムーブインバッファMIBに登録したキャッシュ登録のエントリに応答して（S30），リプレース制御部RPC0にキャッシュ登録すべきウェイの選択処理を要求する。リプレース制御部RPC0内のリプレースウェイ選択部RP_Wは，仮想マシンVM_02に割り当てられている現在のウェイ数が最大ウェイ数テーブルMW_TBLに設定されている最大ウェイ数MAX_WAYと等しいか否か，つまり最大ウェイ数MAX_WAYに達しているか否かをチェックする（S32）。現在のウェイ数が最大ウェイ数MAX_WAYと等しい場合は（S34のYES），仮想マシンVM_02に割り当てられているウェイのうち，例えばLRUアルゴリズムにより，最も最近使われなかった，つまり使われてから最も長い時間が経過したデータとタグを格納しているウェイを選択する（S36）。一方，現在のウェイ数が最大ウェイ数MAX_WAYと等しくない場合は（S34のNO），仮想マシンVM_02以外の仮想マシンに割り当てられているウェイのうち，例えばLRUアルゴリズムにより，最も最近使われなかった，つまり使われてから最も長い時間が経過したデータとタグを格納しているウェイを選択する（S38）。
【００３９】
そして，リプレース制御部RP0は，選択したウェイをキャッシュ制御部CC0に回答する。そして，キャッシュ制御部CC0は，選択されたウェイのデータをメインメモリM_MEM_0に書き戻すとともに，選択されたウェイにキャッシュ登録対象のデータとタグ情報を登録する。
【００４０】
第２のコアグループHOME_CPU_1内のコアCOREに生成されている仮想マシンVMが，キャッシュ分割情報を付加したメモリアクセス要求を発行して，キャッシュ制御部CC1のリプレース制御部RPC1内の最大ウェイ数テーブルMW_TLBに最大ウェイ数を設定する処理も，上記と同様である。さらに，その設定した最大ウェイ数に基づいて，キャッシュ登録の際にリプレース制御部RPC1が登録すべきウェイを選択する処理も，上記と同様である。
【００４１】
以上のように，第１のコアグループLOCAL_CPU_0内のコアCOREに生成されている仮想マシンVMは，メインメモリM_MEM_0へのメモリアクセス要求にキャッシュ分割情報（仮想マシンIDと最大ウェイ数）を付加して発行することで，第１のコアグループLOCAL_CPU_0内のキャッシュL2_CACHE_0のリプレース制御部RPC0に最大ウェイ数を設定することができる。それにより，設定した最大ウェイ数に基づいて，キャッシュL2_CACHE_0内のキャッシュ制御部CC0のリプレース制御部RPC0がキャッシュ登録すべきウェイを選択する。これにより，第１のコアグループLOCAL_CPU_0内のキャッシュ制御部CC0が，第１のコアグループLOCAL_CPU_0内の仮想マシンVMにキャッシュメモリの分割領域を割り当てるキャッシュ分割制御を行う。
【００４２】
同様に，第２のコアグループHOME_CPU_1内のコアCOREに生成されている仮想マシンVMは，メインメモリM_MEM_1へのメモリアクセス要求にキャッシュ分割情報（仮想マシンIDと最大ウェイ数）を付加して発行することで，第２のコアグループHOME_CPU_1内のキャッシュL2_CACHE_1内のキャッシュ制御部CC1のリプレース制御部RPC1に最大ウェイ数を設定することができる。それにより，設定した最大ウェイ数に基づいて，キャッシュL2_CACHE_1のリプレース制御部RPC1がキャッシュ登録すべきウェイを選択する。これにより，第２のコアグループHOME_CPU_1内のキャッシュ制御部CC0が，第２のコアグループHOME_CPU_1内の仮想マシンVMにキャッシュメモリの分割領域を割り当てるキャッシュ分割制御を行う。
【００４３】
上記のように，第１，第２のコアグループ内の仮想マシンは，キャッシュ分割情報を付加したメモリアクセス要求を発行することで，同じコアグループ内のキャッシュのリプレース制御部RPC0，RPC1に最大ウェイ数を設定し，その後，キャッシュ制御部はキャッシュ登録の際にキャッシュ分割制御を行う。上記と同様に，メモリアクセス要求であるストア要求に最大ウェイ数を含むキャッシュ分割情報を付加して最大ウェイ数を設定することもできる。
【００４４】
一方，第１のコアグループLOCAL_CPU_0であるローカルCPU内の仮想マシンが，第２のコアグループHOME_CPU_１であるホームCPUが管理するメインメモリM_MEM_1にメモリアクセス要求を行うことがある。例えば，メモリアクセス要求がロード要求の場合で説明すると，第１のコアグループLOCAL_CPU_0内の仮想マシンがメインメモリM_MEM_1へのロード要求を発行すると，ロード要求を入力した第１のコアグループ内のキャッシュ制御部CC0が，キャッシュミス判定して，そのロード要求をリモートバッファR_BUFとコアグループ間バスBUS_0を介して，第２のコアグループHOME_CPU_1のリモート要求ポートR_RPに格納する。このロード要求に応答して，第２のコアグループHOME_CPU_1のキャッシュ制御部CC1は，キャッシュミス判定した場合に，メモリアクセスコントローラMACによりメインメモリM_MEM_1へのリード要求を実行させてデータを取得し，ムーブインバッファMIBとコアグループ間バスBUS_0を介して，第１のコアグループLOCAL_CPU_0内のムーブインバッファMIBにデータ応答する。このデータ応答されたデータは，ムーブインバッファMIBからキャッシュ制御部CC0に再投入され，キャッシュ制御部CC0がデータとタグ情報をキャッシュ登録する。
【００４５】
上記のロード要求において，第１のコアグループ内の仮想マシンが第２のコアグループが管理するメインメモリにロード要求する場合，第２のコアグループ内のキャッシュメモリにロード要求のデータを登録することはない。したがって，第１のコアグループ内の仮想マシンが，第２のコアグループ内のキャッシュ制御部CC1のリプレース制御部RPC1に最大ウェイ数を設定する必要性はない。
【００４６】
一方，メモリアクセス要求がストア命令の場合は，第１のコアグループ内のキャッシュメモリにストアデータを書き込み，その後キャッシュ制御によりそのデータのキャッシュブロックが追い出されるときに，第２のコアグループが管理するメインメモリにデータの書き戻しが行われる。この場合も，第１のコアグループ内の仮想マシンが，第２のコアグループ内のキャッシュ制御部CC1のリプレース制御部RPC1に最大ウェイ数を設定する必要性はない。
【００４７】
しかしながら，近年，仮想マシンからの要求ではなく，IOデバイスIO_DEVICEからのIOストア要求に応答して，メモリアクセスコントローラMACが外部のストレージ装置HDDなどから転送されたデータを，DMA（Direct Memory Access）処理によりメインメモリに書き込む際に，キャッシュメモリにもデータを登録することが行われるようになった。いわゆる，キャッシュインジェクション処理である。キャッシュインジェクションのメリットは，IOストア要求に後発行されるロード要求に応答して，キャッシュ制御部がキャッシュメモリ内のデータをデータ応答することができ，ロード要求のレイテンシを短くすることができることにある。
【００４８】
そして，第１のコアグループLOCAL_CPU_0内の仮想マシンが要求するDMA要求に応答して，第２のコアグループHOME_CPU_1のIOデバイスIO_DEVICEがIOストア要求を発行し，それに応答して，キャッシュ制御部CC1がメモリアクセスコントローラMACにIOストア要求を処理させる場合にも，上記のキャッシュインジェクション処理が行われる。つまり，キャッシュインジェクション処理により，第２のコアグループHOME_CPU_1内のキャッシュ制御部CC1がそのキャッシュメモリ内に，第１のコアグループLOCAL_CPU_0内の仮想マシンが起点となったIOストア要求のデータを登録する。
【００４９】
この場合，第１コアグループ内の仮想マシンが要求したIOストア要求のデータが第２のコアグループ内のキャッシュメモリに登録される。そのため，そのキャッシュ制御部CC1は，第１のコアグループ内の仮想マシンに対する最大ウェイ数を予め設定しておく必要がある。その理由は，最大ウェイ数の初期値は無限大であるため，最大ウェイ数が設定されてない状態で，キャッシュ制御部CC1がキャッシュインジェクションにより外部からダウンロードしたデータをそのキャッシュメモリに登録すると，キャッシュメモリ内の多くのキャッシュブロックにデータが登録され，第２コアグループ内の仮想マシンのデータが追い出されるからである。その結果，本来のキャッシュ分割制御ができなくなる。
【００５０】
そこで，本実施の形態では，以下に説明するとおり，第１のコアグループ内の仮想マシンが，第２のコアグループ内のキャッシュ制御部CC1のリプレース制御部RPC1に最大ウェイ数を設定できるように改良されている。本実施の形態によれば，第１のコアグループLOCAL_CPU_0内の仮想マシンVMが，第２のコアグループHOME_CPU_1が管理するメインメモリM_MEM_1へのメモリアクセス要求をキャッシュ分割情報を付加して発行すると，そのメモリアクセス要求に応答して，第２のコアグループHOME_CPU_1内のキャッシュ制御部CC1がリプレース制御部RPC1内の最大ウェイ数テーブルに最大ウェイ数を設定する。メモリアクセス要求に付加するキャッシュ分割情報は，前述のとおり，最大ウェイ数とキャッシュメモリの分割領域のセクタ番号とを有する。このセクタ番号は，前述の例では，キャッシュメモリの割当を要求している仮想マシンVMのID番号である。但し，仮想マシンVMのID番号以外に，例えばキャッシュメモリの割当を要求するプロセスIDや，コアIDでもよい。キャッシュ分割制御がどのように行われるかに依存する。
【００５１】
ローカルCPUである第１のコアグループ内の仮想マシンが，リモートCPUである第２のコアグループが管理するメインメモリM_MEM_1へのメモリアクセス要求にキャッシュ分割情報を付加して発行することで，最大ウェイ数を設定可能にする。このようにメモリアクセス要求により他のコアグループ内の最大ウェイ数を設定可能にすることで，他のコアグループ内の最大ウェイ数設定のための特別の要求を定義する必要がない。また，通常のメモリアクセス要求以外に最大ウェイ数設定のための要求を利用する場合は，コアグループ間バスBUS_0のトラフィック量が増大し，通常のメモリアクセス要求のレイテンシが悪化する。したがって，本実施の形態によれば，コアグループ間バスBUS_0のトラフィック量を増やすことなく，異なるコアグループ内のキャッシュ制御部に最大ウェイ数を設定することができる。
【００５２】
図５は，本実施の形態における最大ウェイ数を設定可能なメモリアクセス要求のフォーマットの一例を示す図である。最大ウェイ数を設定可能なメモリアクセス要求は，メインメモリのデータを読み出すロード要求と，メインメモリにデータを書き込むストア要求とが含まれる。この最大ウェイ数設定可能なメモリアクセス要求は，プリフェッチ要求やムーブアウト要求が含まれても良い。
【００５３】
図５のメモリアクセス要求は，６４ビットのヘッダHEADERと，１６組のデータブロックDATA#0-15とを有する。ロード要求やプリフェッチ要求の場合は，ヘッダHEADERだけあればよく，データブロックDATA#0-16が含まれていなくても良い。図５に示した６４ビットのヘッダHEADERの例は，ビット０−６は未使用であり，ビット７−４６にアドレスADDRESSを，ビット４７−５３にオペランドコードOP_CODEを，ビット５４−５７に仮想マシンのID(VM_ID)を，ビット５８−６３に最大ウェイ数MAX_WAYをそれぞれ含む。
【００５４】
未使用の７ビットは，キャッシュブロックのサイズ１２８ビット＝２７に対応する。また，アドレスADDRESS内のビット７−１５の情報がキャッシュメモリの検索用インデックスに利用される。また，アドレスADDRESS内のビット１６の情報がメモリインタリーブビットとして利用される。つまり，このメモリインタリーブビットが「０」のデータは，第１のコアグループLOCAL_CPU_0が管理するメインメモリM_MEM_0に記憶され，メモリインタリーブビットが「１」のデータは，第２のコアグループHOME_CPU_1が管理するメインメモリM_MEM_1に記憶される。したがって，アドレスADDRESS内のビット７−１５のビット数９はOS（Operation System）が管理するページ領域のサイズ２９に対応する。さらに，アドレスADDRESS内のビット１７−４６の上位アドレスが，キャッシュメモリのタグメモリTAGに登録されるタグ情報に利用される。
【００５５】
オペレーションコードOP_CODEにより，ロード要求とストア要求が区別される。仮想マシンのID情報は全ての要求に含まれるが，最大ウェイ数MAX_WAYは，最大ウェイ数を設定したい場合に含まれるようにすればよく，必ずしも全ての要求に含まれる必要はない。
【００５６】
図６は，本実施の形態における最大ウェイ数付きメモリアクセス要求の処理を示すシーケンス図である。一例として，ローカルCPU（メモリアクセス要求発行元CPU）である第１のコアグループLOCAL_CPU_0内のコアCORE_2の仮想マシンVM_02が，第２のコアグループHOME_CPU_1がホームCPUとして管理するメインメモリM_MEM_1へのロード要求を発行し，ムーブインポートMIPに発行する（S1）。このロード要求には，前述のとおり，仮想マシンIDと最大ウェイ数MAX_WAYが付加されている。
【００５７】
そして，要求制御部RO0は，そのロード要求をキャッシュ制御部CC0に入力する。キャッシュ制御部CC0は，そのロード要求に応答して，キャッシュタグを検索しキャッシュミス判定し（S3），ムーブインバッファMIBにロード要求のエントリを登録し，リモートバッファR_BUFにロード要求を格納する（S5）。また，キャッシュ制御部CC0は，メモリインタリーブビットが「１」であるため，リプレース制御部RPC0内の最大ウェイ数テーブルMW_TABLEにロード要求の最大ウェイ数を設定しない（S4）。但し，キャッシュ制御部CC0は，メモリインタリーブビットにかかわらず最大ウェイ数を設定するようにしてもよい。
【００５８】
リモートバッファR_BUFに格納された最大ウェイ数付きロード要求は，コアグループ間バスBUS_0を経由するバストランザクションとして，第２のコアグループHOME_CPU_1内のリモート要求ポートR_RPに伝播する（S11）。
【００５９】
第２コアグループ内の要求制御部RC1がリモート要求ポートR_RP内のロード要求をキャッシュ制御部CC1に出力する（S12）。それに応答して，キャッシュ制御部CC1は，ロード要求のメモリインタリーブビットが「１」であるため，リプレース制御部RPC1内の最大ウェイ数テーブルMW_TABLEにロード要求の最大ウェイ数を設定する（S14）。また，キャッシュ制御部CC1は，ロード要求に応答して，キャッシュメモリのタグを検索しキャッシュミス判定し（S13），ムーブインバッファMIBにエントリを登録し，メモリアクセスコントローラMACにメインメモリM_MEM_1へのリード処理を行わせ，ロード要求のデータを読み出す（S16）。
【００６０】
メモリアクセスコントローラMACは，読み出したデータを，ムーブインバッファMIBに応答し，ムーブインバッファMIBは，その読み出しデータを登録したエントリと共に，コアグループ間バスBUS_0を経由して，第１のコアグループHOME_CPU_1内のムーブインバッファMIBのエントリにデータ応答する（S17）。このとき，第１のコアグループの仮想マシンVM_02からのロード要求であるため，前述のように，第２のコアグループHOME_CPU_1内のキャッシュ制御部CC1は，読み出しデータをキャッシュ登録することはせず，したがって，設定した最大ウェイ数に基づくキャッシュ分割制御を行うこともない。
【００６１】
第１のコアグループLOCAL_CPU_1内のムーブインバッファMIBは，データ応答に応答して，登録したエントリをキャッシュ制御部CC0に入力し（S22），キャッシュ制御部CC0はキャッシュメモリのタグメモリTAG_RAMにタグ情報を登録し，データメモリD_RAMにリードデータを登録する（S23,S25）。そして，キャッシュ制御部CC0はリードデータが要求元の仮想マシンVM_02にデータ応答する（S26）。
【００６２】
上記の通り，第１のコアグループLOCAL_CPU_0内の仮想マシンVM_02がメインメモリM_MEM_1に対するロード要求にキャッシュ分割情報を付加して発行することで，第２のコアグループHOME_CPU_1内のキャッシュ制御部CC1のリプレース制御部RPC1に仮想マシンVM_02の最大ウェイ数を設定することができる。このロード要求に応答して，第２のコアグループ内のキャッシュ制御部CC1は，キャッシュメモリにキャッシュ登録を行わず，さらに，設定した最大ウェイ数に基づくキャッシュ分割制御によるキャッシュブロックのリプレース制御も行わない。
【００６３】
上記の例では，他のコアグループが管理するメインメモリ宛のロード要求に最大ウェイ数を付加して発行することで，他のコアグループに最大ウェイ数の設定を行っている。しかし，ロード要求に限定されず，他のコアグループが管理するメインメモリ宛のストア要求に最大ウェイ数を付加して発行することで，他のコアグループに最大ウェイ数の設定を行うようにしてもよい。
【００６４】
図１，２の演算処理装置または演算処理装置システムでは，コアCOREではないIOでバイスが，コアCOREとは非同期に，そのコアCOREの仮想マシンVMが近い将来使用すると予想されるデータを外部からダウンロードしメインメモリにストアすると共にキャッシュメモリに登録するキャッシュ登録付きIOストア要求を発行する。キャッシュ登録指示付きIOストア要求は，メインメモリにストアせずにキャッシュメモリにだけ入力データを登録する要求でもよい。
【００６５】
図７は，キャッシュ登録指示付きIOストア要求のフォーマットを示す図である。図５のロード，ストア要求のヘッダHEADERと同様に，IOストア要求のフォーマットは，ビット０−６は不使用，ビット７−２６にアドレスADDRESSが,ビット４７−５３にオペレーションコードが，ビット５４−５７にIOストア要求元の仮想マシンVMのID(VM_ID)が割り当てられる。ビット５８−６３は未使用である。
【００６６】
図６で説明した第１のコアグループ内の仮想マシンVM_02がロード要求により第２のコアグループ内のキャッシュ制御部CC1のリプレース制御部RPC1に最大ウェイ数を設定した後に，同じ仮想マシンVM_02によるDMA要求に応答して，IOデバイスが仮想マシンVM_02と非同期でキャッシュ登録指示付きIOストア要求を発行する場合の処理を説明する。このIOストア要求には，図７のとおり，IOストア先のメインメモリのアドレスが含まれる。以下の例は，第２のコアグループHOME_CPU_1が管理するメインメモリM_MEM_1が，IOストア先のメインメモリとして指定される。
【００６７】
第１のコアグループ内の仮想マシンVM_02が発行するDMA要求に応答して，第２コアグループ内のIOデバイスが，キャッシュ登録指示付きIOストア要求を発行する。このIOストア要求は，第２のコアグループ内のムーブインポートMIBからキャッシュ制御部CC1に入力され，それに応答して，キャッシュ制御部CC1はメモリアクセスコントローラMACにIOデバイスが入力するデータをメインメモリM_MEM_1に書き込む処理を行わせる。そして，メモリアクセスコントローラMACは，それと共に，キャッシュ制御部CC1にそのデータをキャッシュ登録させ，実質的に入力データがキャッシュメモリにプリフェッチ済みにされた状態にする。メモリアクセスコントローラMACは，メインメモリM_MEM_1にデータを書き込むことなく，キャッシュ制御部CC1にキャッシュ登録させるようにしてもよい。
【００６８】
このキャッシュ制御部CC1によるIOデバイスが入力するデータのキャッシュ登録において，キャッシュ制御部CC1は，先に設定済みの仮想マシンVM_02の最大ウェイ数に基づいて，キャッシュメモリのキャッシュブロック，つまりウェイのリプレース制御を行う。リプレース制御は，図４で説明したとおりである。キャッシュ制御部CC1のリプレース制御部RPC1には仮想マシンVM_02の最大ウェイ数が設定済みであるので，キャッシュ登録指示付きIOストア要求によるキャッシュ登録処理でのリプレース制御は適切に行われ，大容量の入力データにより既にキャッシュ登録されている第２コアグループ内の仮想マシンのデータの大部分がキャッシュメモリから追い出されることはない。
【００６９】
そして，キャッシュ登録指示付きIOストア要求が処理された後に，第１コアグループ内の仮想マシンVM_02がそのIOストアされたデータについてロード要求を発行すると，前述と同様にロード要求は第１コアグループ内のキャッシュ制御部CC0から第２コアグループ内のキャッシュ制御部CC1に転送され，キャッシュ制御部CC1はキャッシュヒットを検出し，キャッシュメモリ内にプリフェッチされているデータを第１コアグループ内のムーブインバッファMIBに応答する。したがって，仮想マシンVM_02が発行したロード要求のレイテンシは短くなる。
【００７０】
本実施の形態では，第１のコアグループ内の仮想マシンVMが，第２のコアグループが管理するメインメモリ宛のメモリアクセス要求により，第２のコアグループ内のキャッシュ制御部CC1のリプレース制御部RPC1に最大ウェイ数を設定する。したがって，最大ウェイ数設定のための特別の要求が発行されないので，コアグループ間バスBUS_0のトラフィック量の増大を抑制することができる。また，特別の要求を処理することによるキャッシュ制御部CC1のビジー率の悪化を抑制することができる。
【００７１】
図８は，本実施の形態によるキャッシュ分割情報付きメモリアクセス要求により他のコアグループ内に最大ウェイ数を設定する例と，専用の最大ウェイ数設定要求により他のコアグループ内に最大ウェイ数を設定する比較例との比較を示す図である。本実施の形態ではキャッシュ分割情報付きロード要求によりキャッシュ分割情報が更新され，比較例では専用の最大ウェイ数設定要求によりキャッシュ分割情報が更新される。
【００７２】
例えば，１０回に１回の割合でキャッシュ分割情報を更新するトランザクションが発生したと仮定して，性能比較を行う。更に，図８に示されるように，ロード要求の割合が２０％，キャッシュミス率が４％（キャッシュヒット率が９６％），キャッシュヒットレイテンシが２０サイクル，キャッシュミスレイテンシが２００サイクルと仮定する。また，プログラムの命令数が１００であり，ロード要求が発行されるロード命令以外の命令は１サイクルで実行が完了すると仮定する。そして，専用の最大ウェイ数設定要求を採用した場合は，コアグループ間バスBUS_0を競合する要求が増えるので，キャッシュミスレイテンシが例えば１０％悪化して，２２０サイクルになると仮定する。本実施の形態のように専用の最大ウェイ数設定要求を採用しない場合は，図８に示されるとおり，キャッシュミスレイテンシは２００サイクルと仮定する。
【００７３】
上記の仮定に基づいて計算すると，本実施の形態のように通常のロード要求により最大ウェイ数を設定する例と，専用の最大ウェイ数設定要求を採用する比較例において，１００のプログラム命令の実行に要するサイクル数は，図８に示されるとおりである。
【００７４】
まず，本実施の形態の例の場合の１００のプログラム命令の実行に要するサイクル数は，ロード命令以外の数（100-20）が１サイクル，ロード命令の数２０のうちキャッシュミス率４％200サイクル，キャッシュヒット率96％が20サイクルを要するので，それらを加算すると，次のとおりである。
(100-20) ×1[cycle]+20×4%×200[cycle]+20×96%×20[cycle]=624[cycle]
一方，専用の最大ウェイ数設定要求を採用する比較例の場合の１００のプログラム命令の実行に要するサイクル数は，キャッシュミスの場合に220サイクルを要するので，同じように加算すると，次の通りである。
(100-20) ×1[cycle]+20×4%×220[cycle]+20×96%×20[cycle]=640[cycle]
実際には，比較例の場合，ホームCPUである第２のコアグループ内のパイプライン制御部のビジー率もコアグループ間バスと同様に１０％悪化するので，ホームCPU上で動作する仮想マシンの性能は，上記の数式以上に悪化することが予想される。
【００７５】
上記の通り，比較例に対して，本実施の形態は他のコアグループが管理するメインメモリへのロード要求やストア要求にキャッシュ分割情報を付加して，他のコアグループ内のキャッシュ制御部に最大ウェイ数を設定するので，全体の動作効率を高くすることができる。
【００７６】
以上の実施の形態をまとめると，次の付記のとおりである。
【００７７】
（付記１）
複数のコアと，第１のキャッシュ制御部と第１のキャッシュメモリとを含む第１のキャッシュとを有し，前記第１のキャッシュ制御部が，第１のキャッシュ分割情報に基づいて，メモリアクセス要求元に対応して前記第１のキャッシュメモリを分割するキャッシュ分割制御を行う第１のコアグループと，
複数のコアと，第２のキャッシュ制御部と第２のキャッシュメモリとを含む第２のキャッシュとを有し，前記第２のキャッシュ制御部が，第２のキャッシュ分割情報に基づいて，メモリアクセス要求元に対応して前記第２のキャッシュメモリを分割するキャッシュ分割制御を行う第２のコアグループと，
前記第１，第２のコアグループ間に設けられメモリアクセス要求が送信されるコアグループ間バスとを有し，
前記第１のコアグループのメモリアクセス要求元が，前記第２のコアグループが管理するメインメモリへのメモリアクセス要求を前記第２のキャッシュ分割情報を付加して発行した場合，前記第２のコアグループの第２のキャッシュ制御部が，前記発行されたメモリアクセス要求に応答して，前記付加された第２のキャッシュ分割情報を登録する演算処理装置。
【００７８】
（付記２）
前記第２のコアグループの第２のキャッシュ制御部が，前記第２のキャッシュ分割情報を登録した後，当該登録した第２のキャッシュ分割情報に基づいて前記第２のキャッシュメモリに対し前記キャッシュ分割制御を行う付記１に記載の演算処理装置。
【００７９】
（付記３）
前記第２のコアグループの第２のキャッシュ制御部が，前記第２のキャッシュ分割情報を登録した後，外部から入力されるデータを前記第２のキャッシュメモリに登録するキャッシュインジェクション要求に応答して，前記登録した第２のキャッシュ分割情報に基づいて前記第２のキャッシュメモリに対し前記キャッシュ分割制御を行い，前記キャッシュ分割制御で選択されたキャッシュブロック内に前記入力されるデータを登録する付記１に記載の演算処理装置。
【００８０】
（付記４）
前記第２のコアグループの第２のキャッシュ制御部が，前記第１のコアグループのメモリアクセス要求元が発行したメモリアクセス要求に応答して，前記第２のキャッシュメモリにデータを登録せずに，前記第１のコアグループ内の前記メモリアクセス要求元にデータ応答する付記１に記載の演算処理装置。
【００８１】
（付記５）
前記第２のコアグループの第２のキャッシュ制御部が，前記第１のコアグループのメモリアクセス要求元が発行したメモリアクセス要求に応答して，前記第２のコアグループが管理するメインメモリへのアクセス制御を行い，前記第２のキャッシュメモリにアクセスしたデータを登録せずに，前記第１のコアグループ内の前記メモリアクセス要求元にデータ応答する付記１に記載の演算処理装置。
【００８２】
（付記６）
前記データ応答に応答して，前記第１のキャッシュ制御部は前記第１のキャッシュメモリに前記データ応答のデータを登録する付記４または５に記載の演算処理装置。
【００８３】
（付記７）
前記キャッシュ分割情報は，前記メモリアクセス要求元と，前記メモリアクセス要求元に割り当てられる最大キャッシュブロック数とを有し，
前記キャッシュ分割制御は，キャッシュメモリにデータを登録するときに，前記メモリアクセス要求元に割り当てられている現キャッシュブロック数が前記最大キャッシュブロック数に達するまで，他のメモリアクセス要求元に割り当てられているキャッシュブロックを前記メモリアクセス要求元に割り当てて前記データを登録する付記１に記載の演算処理装置。
【００８４】
（付記８）
複数のコアとキャッシュメモリとを有する第２の演算処理装置とバスを介して接続される第１の演算処理装置であって，
複数のコアと，
第１のキャッシュ制御部と第１のキャッシュメモリとを含む第１のキャッシュとを有し，
前記第１のキャッシュ制御部が，第１のキャッシュ分割情報に基づいて，メモリアクセス要求元に対応して前記第１のキャッシュメモリを分割するキャッシュ分割制御を行い，
前記第２の演算処理装置のメモリアクセス要求元が，前記第１の演算処理装置が管理するメインメモリへのメモリアクセス要求を前記第１のキャッシュ分割情報を付加して発行した場合，前記第１のキャッシュ制御部が，前記発行されたメモリアクセス要求に応答して，前記付加された第１のキャッシュ分割情報を登録する演算処理装置。
【００８５】
（付記９）
複数のコアと，第１のキャッシュ制御部と第１のキャッシュメモリとを含む第１のキャッシュとを有し，前記第１のキャッシュ制御部が，第１のキャッシュ分割情報に基づいて，メモリアクセス要求元に対応して前記第１のキャッシュメモリを分割するキャッシュ分割制御を行う第１のコアグループと，
複数のコアと，第２のキャッシュ制御部と第２のキャッシュメモリとを含む第２のキャッシュとを有し，前記第２のキャッシュ制御部が，第２のキャッシュ分割情報に基づいて，メモリアクセス要求元に対応して前記第２のキャッシュメモリを分割するキャッシュ分割制御を行う第２のコアグループと，
前記第１，第２のコアグループ間に設けられメモリアクセス要求が送信されるコアグループ間バスとを有する演算処理装置の制御方法であって，
前記第１のコアグループのメモリアクセス要求元が，前記第２のコアグループが管理するメインメモリへのメモリアクセス要求を前記第２のキャッシュ分割情報を付加して発行した場合，前記第２のコアグループの第２のキャッシュ制御部が，前記発行されたメモリアクセス要求に応答して，前記付加された第２のキャッシュ分割情報を登録する工程を有する演算処理装置の制御方法。
【００８６】
（付記１０）
前記第２のコアグループの第２のキャッシュ制御部が，前記第２のキャッシュ分割情報を登録した後，外部から入力されるデータを前記第２のキャッシュメモリに登録するキャッシュインジェクション要求に応答して，前記登録した第２のキャッシュ分割情報に基づいて前記第２のキャッシュメモリに対し前記キャッシュ分割制御を行い，前記キャッシュ分割制御で選択されたキャッシュブロック内に前記入力されるデータを登録する工程を有する付記９に記載の演算処理装置の制御方法。
【００８７】
（付記１１）
前記キャッシュ分割情報は，前記メモリアクセス要求元と，前記メモリアクセス要求元に割り当てられる最大キャッシュブロック数とを有し，
前記キャッシュ分割制御は，キャッシュメモリにデータを登録するときに，前記メモリアクセス要求元に割り当てられている現キャッシュブロック数が前記最大キャッシュブロック数に達するまで，他のメモリアクセス要求元に割り当てられているキャッシュブロックを前記メモリアクセス要求元に割り当てて前記データを登録する付記９に記載の演算処理装置の制御方法。
【符号の説明】
【００８８】
ＬＯＣＡＬ＿ＣＰＵ＿０：第１のコアグループ，他の演算処理装置
ＨＯＭＥ＿ＣＰＵ＿１：第２のコアグループ，演算処理装置
ＣＯＲＥ：コア
Ｌ２＿ＣＡＣＨＥ：Ｌ２キャッシュ，キャッシュ
ＲＣ０，ＲＣ１：要求制御部
ＣＣ０，ＣＣ１：キャッシュ制御部
ＲＰＣ０，ＲＰＣ１：リプレース制御部
ＭＷ＿ＴＢＬ：最大キャッシュブロック数テーブル，最大ウェイ数テーブル
ＲＰ＿Ｗ：リプレースウェイ選択部
Ｄ＿ＲＡＭ：データメモリ（キャッシュメモリ）
ＴＡＧ＿ＲＡＭ：タグメモリ（キャッシュメモリ）
ＢＵＳ＿０：コアグループ間バス
ＢＵＳ＿１：コアグループ内バス
ＢＵＳ＿２：メモリアクセスバス
Ｍ＿ＭＥＭ＿０，Ｍ＿ＭＥＭ＿２：メインメモリ
ＭＩＢ：キャッシュミス制御部，ムーブインバッファ
ＭＡＣ：メモリアクセス制御部
Ｒ＿ＢＵＦ：リモートバッファ
Ｒ＿ＰＯＲＴ：要求ポート（メモリアクセス要求格納部）
ＭＩＰ：ムーブインポート（メモリアクセス要求格納部）
ＭＯＰ：ムーブアウトポート
ＰＦＰ：プリフェッチポート
Ｒ＿ＲＰ：リモートリクエストポート
【図１】
2015228060.tif 000003
【図２】
2015228060.tif 000004
【図３】
2015228060.tif 000005
【図４】
2015228060.tif 000006
【図５】
2015228060.tif 000007
【図６】
2015228060.tif 000008
【図７】
2015228060.tif 000009
【図８】
2015228060.tif 000010