(57)【特許請求の範囲】
【請求項１】
それぞれ演算器を有する複数のコアと、前記複数のコアに共有されるラストレベルキャッシュとをそれぞれ備える複数のクラスタと、
前記複数のクラスタがそれぞれ備えるラストレベルキャッシュに接続されたホームエージェントと、
前記ホームエージェントに接続されメモリとのアクセスを制御するメモリコントローラとを有し、
前記ホームエージェントは、前記複数のクラスタのいずれかの第１のクラスタ内の第１のラストレベルキャッシュから供給されるメモリ要求に応答して、
前記第１のラストレベルキャッシュに第１のリプレース要求を発行して、前記第１のラストレベルキャッシュに前記第１のラストレベルキャッシュ内の第１のヴィクティムラインをエヴィクションさせ、
前記第１のクラスタ以外のアイドル状態の第２のクラスタ内の第２のラストレベルキャッシュに第２のリプレース要求を発行して、前記第２のラストレベルキャッシュに前記第２のラストレベルキャッシュ内の第２のヴィクティムラインをエヴィクションさせ、
前記第２のラストレベルキャッシュは、前記第１のヴィクティムラインのデータを前記第２のヴィクティムラインにキャッシュフィルする、演算処理装置。
【請求項２】
前記第１のラストレベルキャッシュは、前記第１のリプレース要求に応答して、前記第２のラストレベルキャッシュに前記第１のヴィクティムラインのデータを転送する、請求項１に記載の演算処理装置。
【請求項３】
前記ホームエージェントは、さらに、
前記第２のラストレベルキャッシュにライン割当要求を発行して、前記第２のラストレベルキャッシュにラインフィルバッファを割当させる、請求項２に記載の演算処理装置。
【請求項４】
前記ラストレベルキャッシュは、他のラストレベルキャッシュから転送されるヴィクティムラインのデータを格納するヴィクティムライン用バッファを有し、
前記第２のラストレベルキャッシュは、前記第１のラストレベルキャッシュが転送する前記第１のヴィクティムラインのデータを前記ヴィクティムライン用バッファに格納し、前記第１のヴィクティムラインのデータをキャッシュフィルする、請求項２に記載の演算処理装置。
【請求項５】
前記ホームエージェントは、第１のリプレース要求に応答して前記第１のラストレベルキャッシュからエヴィクションされた前記第１のヴィクティムラインのデータをリプレースバッファに格納し、
前記ホームエージェントは、前記リプレースバッファに格納した前記第１のヴィクティムラインのデータを、前記第２のラストレベルキャッシュに転送する、請求項１に記載の演算処理装置。
【請求項６】
前記ホームエージェントは、さらに、
前記第２のラストレベルキャッシュに前記第１のヴィクティムラインのデータをフェッチするフェッチ要求の発行要求を発行して、前記第２のラストレベルキャッシュに前記フェッチ要求を前記ホームエージェントに発行させ、
前記ホームエージェントは、前記第２のラストレベルキャッシュから送信される前記フェッチ要求に応答して、前記メモリコントローラに前記第１のヴィクティムラインのデータのフェッチ要求を発行し、
前記メモリコントローラは、前記第２のラストレベルキャッシュに、前記フェッチ要求に対応するデータ応答を送信し、
前記第２のラストレベルキャッシュは、前記データ応答により、前記第１のヴィクティムラインのデータを受信する、請求項１に記載の演算処理装置。
【請求項７】
前記ホームエージェントは、前記複数のクラスタがアイドル状態か否かを識別するアイドル状態識別回路を有する、請求項１に記載の演算処理装置。
【請求項８】
前記アイドル状態識別回路は、前記複数のクラスタそれぞれの全コアがオフラインまたはサスペンド状態に所定の頻度以上になった場合に、当該クラスタがアイドル状態であると判定するアイドル状態判定回路と、前記アイドル状態が所定時間以上継続した場合に、当該クラスタのラストレベルキャッシュが開放状態と判定するアイドル状態持続監視回路とを有する、請求項７に記載の演算処理装置。
【請求項９】
それぞれ演算器を有する複数のコア及び前記複数のコアに共有されるラストレベルキャッシュとをそれぞれ有する複数のクラスタと、前記複数のクラスタのラストレベルキャッシュに接続されたホームエージェントと、前記ホームエージェントに接続されメモリとのアクセスを制御するメモリコントローラとを有する演算処理装置の制御方法であって、
前記ホームエージェントは、前記複数のクラスタのいずれかの第１のクラスタ内の第１のラストレベルキャッシュから供給されるメモリ要求に応答して、
前記第１のラストレベルキャッシュに第１のリプレース要求を発行して、前記第１のラストレベルキャッシュに前記第１のラストレベルキャッシュ内の第１のヴィクティムラインをエヴィクションさせ、
前記第１のクラスタ以外のアイドル状態の第２のクラスタ内の第２のラストレベルキャッシュに第２のリプレース要求を発行して、前記第２のラストレベルキャッシュに前記第２のラストレベルキャッシュ内の第２のヴィクティムラインをエヴィクションさせ、
前記第２のラストレベルキャッシュは、前記第１のヴィクティムラインのデータを前記第２のヴィクティムラインにキャッシュフィルする、演算処理装置の制御方法。
【請求項１０】
前記第１のラストレベルキャッシュは、前記第１のリプレース要求に応答して、前記第２のラストレベルキャッシュに前記第１のヴィクティムラインのデータを転送する、請求項９に記載の演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，演算処理装置及び演算処理装置の制御方法に関する。
【背景技術】
【０００２】
演算処理装置（CPU: Central Processing Unit、またはプロセッサ）は、複数のコア（Core）と複数のコアが共有するラストレベルキャッシュ（Last Level Cache: LLC、以下LLC）と、メモリコントローラとを有する。キャッシュメモリの階層は、例えば、コア内に設けられたレベル１キャッシュ（L1キャッシュ）と、コアの外に設けられ複数のコアが共有するレベル２キャッシュ（L2キャッシュ）を有する。この場合、L2キャッシュはLLCに該当する。または、キャッシュメモリの階層が、コア内にL1キャッシュとL2キャッシュを有し、コアの外に複数のコアが共有するレベル３キャッシュ（L3キャッシュ）を有する場合、L3キャッシュはLLCに該当する。
【０００３】
いずれの階層構造であっても、LLCでキャッシュミスが発生すると、LLCは、メモリコントローラにフェッチ要求を発行し、メモリコントローラはメインメモリにアクセスしデータを読み出し、LLCにデータ応答する。LLCは読み出されたデータをキャッシュ登録（キャッシュフィル：cache fill）すると共に、コアにデータ応答する。
【０００４】
キャッシュ容量は増加する傾向にある。すなわち、プロセスの微細化によりチップ内に集積されるコア数が増加する。また、コア数（スレッド数）の増加によりセットアソシアティブキャッシュにおける連想度（ウエイ（Wey）数）が増加する。それとともに、複数のコアが共有するLLCの容量も増大する。したがって、ハイエンドのプロセッサチップは、微細化による面積の削減にかかわらず、性能向上によりチップサイズが増大傾向にある。
【０００５】
このような背景から、メニーコア（多くのコア）を有するプロセッサが全コアから平等にアクセス可能なLLC構成を適用すると、大きなチップサイズと大容量のLLCにより、LLCへのデータアクセス経路が長くなり、LLCのヒットレイテンシが増大する。
【０００６】
そこで、全てのコアが共有する単一のLLC構成よりも、LLCを複数に分割し、複数のコアグループそれぞれが分割されたLLCを共有する構成が提案されている。このような構成の場合、各コアグループが共有するLLCは小容量になり、コアグループ内のコアから各LLCへの物理距離は小さく制御も簡単になり、高速アクセスが可能になる。すなわち、全コアから平等にアクセス可能な大容量の単一のLLC構成よりも、限られたコアが小容量のLLCを共有するクラスタを複数有する構成のほうが、LLCのヒットレイテンシが高速になる。この構成においては、クラスタ間でキャッシュメモリのデータを共有することが少ない場合、LLCは最大のパフォーマンスを発揮する。
【０００７】
以下の特許文献には、マルチプロセッサ間でそれぞれに割り当てられるキャッシュ容量を動的に変更することが記載されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平０８−１３７７４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、LLCを分割するといくつかの問題が生じる。例えば、各コアによって実行されるアプリケーションプログラムが利用できるキャッシュは、分割されたLLCの容量を超えることが困難になる。一般に、あるコアから自分のクラスタ以外のクラスタ内のLLCにキャッシュラインを新規に登録することはできない。そのため、あるスレッドからみたLLCの容量は、分割されたLLCの容量に限定される。
【００１０】
さらに、LLCを分割した構成の場合、クラスタ内の全てのコアがサスペンドまたは非アクティブ状態になると、クラスタ内のLLCは有効に利用されない。一方、全コアが単一のLLCを共有する構成の場合、一部のコアがサスペンドまたは非アクティブであっても、残りのアクティブなコアが全LLCを利用可能であり、一部のLLCが有効に利用されないことはない。
【００１１】
また、コア単位でソフトウエアの起動権利を購入して、アクティブ状態にするコア数を増減することができるプロセッサの場合、クラスタ内の全コアが非アクティブ状態になるとそのクラスタ内のLLCは全く利用されない。
【００１２】
そこで，実施の形態の第１の側面の目的は，分割されたLLCを有効に利用する情報処理装置及び演算処理装置の制御方法を提供することにある。
【課題を解決するための手段】
【００１３】
実施の形態の第１の側面は，それぞれ演算器を有する複数のコアと、前記複数のコアに共有されるラストレベルキャッシュとをそれぞれ備える複数のクラスタと、
前記複数のクラスタがそれぞれ備えるラストレベルキャッシュに接続されたホームエージェントと、
前記ホームエージェントに接続されメモリとのアクセスを制御するメモリコントローラとを有し、
前記ホームエージェントは、前記複数のクラスタのいずれかの第１のクラスタ内の第１のラストレベルキャッシュから供給されるメモリ要求に応答して、
前記第１のラストレベルキャッシュに第１のリプレース要求を発行して、前記第１のラストレベルキャッシュに前記第１のラストレベルキャッシュ内の第１のヴィクティムラインをエヴィクションさせ、
前記第１のクラスタ以外のアイドル状態の第２のクラスタ内の第２のラストレベルキャッシュに第２のリプレース要求を発行して、前記第２のラストレベルキャッシュに前記第２のラストレベルキャッシュ内の第２のヴィクティムラインをエヴィクションさせ、
前記第２のラストレベルキャッシュは、前記第１のヴィクティムラインのデータを前記第２のヴィクティムラインにキャッシュフィルする、演算処理装置である。
【発明の効果】
【００１４】
第１の側面によれば，分割されたLLCを有効に利用できる。
【図面の簡単な説明】
【００１５】
【図１】全コアが単一のLLCを共有する演算処理装置（CPU、プロセッサ）の構成を示す図である。
【図２】本実施の形態における演算処理装置の構成を示す図である。
【図３】複数の演算処理装置（プロセッサチップ）間の構成を示す図である。
【図４】ホームエージェントによるキャッシュコピーバック動作の一例を示す図である。
【図５】LLCでキャッシュミスした後のメモリ要求の動作の一例を示す図である。
【図６】本実施の形態におけるプロセッサCPUの構成例を示す図である。
【図７】LLCとHAの具体的な構成例を示す図である。
【図８】主な要求とオーダの図表である。
【図９】サスペンド検出回路の構成を示す図である。
【図１０】アイドル状態識別回路２４の概略構成を示す図である。
【図１１】あるクラスタNのアイドル状態を検出するアイドル状態識別回路の構成を示す図である。
【図１２】本実施の形態におけるメモリ要求に対するホームエージェントの動作の概略を示す図である。
【図１３】第１の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。
【図１４】第１の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。
【図１５】ホームエージェントが所有するLLCタグコピーを示す図である。
【図１６】第１の実施の形態におけるLLC0とLLC1のキャッシュタグメモリとキャッシュデータメモリの例を示す図である。
【図１７】第１の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。
【図１８】メモリ要求を受け付けたHAパイプラインが、ライン割当オーダLN-ALC-ODを発行する条件を示すフローチャート図である。
【図１９】第２の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。
【図２０】第３の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。
【図２１】第４の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。
【発明を実施するための形態】
【００１６】
図１は、全コアが単一のLLCを共有する演算処理装置（CPU、プロセッサ）の構成を示す図である。図１のプロセッサCPUは、２４個のコアCoreが単一のLLCを共有する。そして、LLCには４つのメモリコントローラMC0-MC3が接続され、それぞれのメモリコントローラMC0-MC3は対応するメモリMEM0-MEM3へのメモリアクセスを制御する。
【００１７】
コアは、たとえば、命令デコーダ（図示せず）と、デコードした命令に基づいて演算を行う演算器（図示せず）と、第１レベルのキャッシュ（L1命令キャッシュとL1データキャッシュ）とを有する。コアは、メモリ内のデータを読み出す命令に応答してL1データキャッシュにメモリ要求を発行し、L1データキャッシュでキャッシュミスした場合、LLCにメモリ要求を発行する。
【００１８】
LLCは、コアからのメモリ要求に応答して、キャッシュタグを検索してキャッシュヒットすれば、コアにデータを応答するデータ応答を返信し、キャッシュミスすれば、メモリコントローラMC0-MC3のいずれかにフェッチ要求を出力し、外部のメインメモリ（図示せず）にメモリアクセスさせデータを読み出させる。そして、メモリコントローラは、読み出したデータをLLCに返信するデータ応答を返信するとともに、コアにもデータ応答する。
【００１９】
プロセッサCPUのチップサイズが大きくなりLLCが大容量になると、たとえば、左端のコアCoreがメモリ要求を出力し、LLCでキャッシュヒットしてLLC内の右端のキャッシュメモリから読み出しデータが応答される場合、ヒットレイテンシは長くなる。
【００２０】
［実施の形態における演算処理装置］
図２は、本実施の形態における演算処理装置の構成を示す図である。図２のプロセッサCPUは、３２個のコアCoreを８個ずつの４つのグループに分割し、８個のコアグループがそれぞれ単一のLLCを共有する。すなわち、図２のプロセッサは、８個のコアCoreと単一のLLCをそれぞれ有する４つのクラスタCL0-CL3を有する。
【００２１】
さらに、プロセッサは、４つのクラスタ間のデータなどの転送を行うローカルルータLRTと、ホームエージェントHAを有する。ホームエージェントHAは、例えば４つのクラスタ間のメモリデータの整合性をとるメモリコヒーレンシ制御などを行う。ホームエージェントの構成と動作については後で詳述する。そして、ホームエージェントHAには、メモリコントローラMC0-MC3が接続され、プロセッサチップに接続された外部のメインメモリMEM0-MEM3にアクセスすることができる。メモリコントローラの数は１つでもよいが、複数にすることでメインメモリへのアクセスのスループットを上げることができる。
【００２２】
図２に示すとおり、本実施の形態におけるプロセッサは、LLCを複数に（例えば４個に）分割し、複数のコアも同様に複数に（例えば４グループに）分割し、分割されたコアグループそれぞれが単一のLLCを共有する。したがって、コアからのメモリ要求がLLCでヒットしたときのレイテンシが短くなる。
【００２３】
図３は、複数の演算処理装置（プロセッサチップ）間の構成を示す図である。図３には、４つのプロセッサチップCPU0-CPU3が、CPU間バスでそれぞれ接続される。具体的には、各プロセッサチップ内のホームエージェントHAに内蔵されたまたは付属されたインターコネクト回路（図示せず）を介して、CPU間バスが接続される。これにより、４つのプロセッサチップCPU0-CPU3それぞれのホームエージェントHAは、他のプロセッサチップのホームエージェントとデータの転送などを行う。
【００２４】
コアからのメモリ要求は、アドレスによって、メモリ要求を発行したコアのプロセッサが管理するローカルメモリの場合や、他のプロセッサCPUが管理するリモートメモリの場合がある。ホームエージェントHAは、このような様々なアドレスのメモリ要求について、システム全体のコヒーレンシを制御し、LLCのタグのコピーを有することでLLCに対するスヌープを不要とするためプロセッサチップ内のバスのトラフィックを削減する。特に、ホームエージェントHAは、メニーコアプロセッサによる大規模システムで有効な構成の一つである。
【００２５】
以下、説明を分かりやすくする目的で、LLCからホームエージェントHAへの要求を要求（またはリクエスト）と称し、ホームエージェントからLLCへの要求をオーダと称する。要求もオーダも、相手にある処理を求める要求であり、要求（またはリクエスト）とオーダは単に方向が逆になっているだけである。請求項では、要求（またはリクエスト）とオーダを区別せず、いずれも要求と称する。
【００２６】
［キャッシュコピーバック］
図４は、ホームエージェントによるキャッシュコピーバック動作の一例を示す図である。ホームエージェントHAは、キャッシュメモリ階層外に設けられるパイプライン制御回路であり、前述したとおり分割された複数のLLC間のコヒーレンシ制御が主な動作である。したがって、ホームエージェントHAは、全てのLLCのキャッシュタグのコピーを有し、LLCでミスしたメモリ要求を受信し、チップ内の他のLLCがデータ（または命令コード）を所持しているか否かをLLCタグコピーを参照して調べる。ホームエージェントは、データを所持しているLLCが存在する場合LLC間転送を行い、存在しない場合メモリに対してメモリ要求（フェッチ要求）を発行する。
【００２７】
具体的には、図４に示されるとおりである。図４の例では、前提としてプロセッサチップが２つのクラスタCL0、CL1を有し、クラスタCL0内のコア（図示せず）がLLC0にメモリ要求を発行し、クラスタCL0のLLC0がキャッシュミスするものとする。これに応答して、クラスタCL0のLLC0がホームエージェントHAにメモリ要求を発行する（S1）。このときLLC0はラインフィルバッファを割当ておく。ラインフィルバッファとは、やがて受信する要求データを一時的に格納するバッファであり、このバッファに格納されたデータがLLC0内のキャッシュライン（またはヴィクティムライン）にフィルされる。
【００２８】
ホームエージェントは、メモリ要求S1に応答して、所有する全クラスタCL0, CL1のキャッシュタグのコピーを検索し、クラスタCL1のLLC1のタグでヒットする（S2）。
【００２９】
そこで、ホームエージェントは、クラスタLC0のLLC0にリプレースオーダを発行し（S3）、LLC0にヴィクティムラインをエヴィクション（立ち退き）させる。すなわち、ホームエージェントは、LLCタグコピーからLLC0内のエヴィクション対象のキャッシュラインを特定し、LLC0に対してそのキャッシュラインのデータをメモリにライトバックするようリプレースオーダS3を発行する。これに応答して、LLC0は、リプレースオーダS3に対するリプレース応答を、エヴィクション対象のヴィクティムラインのデータと共にホームエージェントに送信し（S3_1）、ホームエージェントはメモリコントローラMCにエヴィクションしたデータのライトバック要求を発行し（S6）、メモリコントローラMCにデータをメモリにライトバックさせる。その後、メモリコントローラMCからライトバック完了通知を受信する（S6-1）。
【００３０】
一方、ホームエージェントは、リプレースオーダの発行S3とともに、クラスタCL1のLLC1に転送オーダを発行する（S4）。すなわち、ホームエージェントは、ヒットしたLLC1のキャッシュラインのデータをLLC0に転送するよう指示する転送オーダをLLC1に発行する。これに応答して、LLC1は、ヒットしたデータをLLC0に転送し（S4_1）、LLC0は転送されたデータをフィルする(S5)。この結果、両クラスタのLLC0, LLC1は、同じデータを共有する。
【００３１】
［LLCの利用効率の低下例］
図５は、LLCでキャッシュミスした後のメモリ要求の動作の一例を示す図である。前提として、クラスタCL0内のコア（図示せず）がLLC0にメモリ要求を発行し、クラスタCL0のLLC0がキャッシュミスし、メインメモリにフェッチ要求し、それに対するデータ応答のデータをキャッシュフィルするものとする。また、クラスタCL1内の全てのコアが非活性状態またはサスペンド状態で、クラスタCL1がアイドル状態であるとする。
【００３２】
図４と同様に、クラスタCL0のLLC0は、ホームエージェントHAに対してメモリ要求を発行する（S1）。それに応答して、ホームエージェントHAは、LLCタグコピーを検索しキャッシュミスする（S2）。その結果、ホームエージェントHAは、LLC0にリプレースオーダを発行するとともに（S3）、メモリコントローラにフェッチ要求を発行する（S7）。
【００３３】
LLC0は、リプレースオーダS3に応答して指定されたヴィクティムラインのデータをエヴィクションするリプレース応答をホームエージェントに返信する（S3_1）。そして、ホームエージェントHAは、メモリコントローラMCにライトバック要求を発行する（S6）。
【００３４】
やがて、メモリコントローラMCがフェッチ要求S7に対するデータ応答をホームエージェントとLLC0に返信する（S7_1, S7_2）。それに応答して、LLC0はデータ応答のデータを、キャッシュメモリにフィルする（S5）。
【００３５】
図５の一般的なメモリ要求において、クラスタCL1がアイドル状態でクラスタCL1内のLLC1が使用されていないにもかかわらず、メモリ要求を発行したLLC0内のヴィクティムラインのデータは、外部メモリにライトバックされる。そのため、クラスタCL0のLLC0がその後、リプレースされたヴィクティムラインのデータをメモリ要求した場合、その要求されたデータはメモリへのフェッチ要求により取得されなければならない。
【００３６】
このような状況が、LLCを複数に分割した場合にLLCの全容量が有効に利用されない状況の例である。本実施の形態では、このようなLLCの利用効率の低下を抑制するために、ホームエージェントHAは、LLC0のリプレース対象のヴィクティムラインのデータがアイドル状態のクラスタCL1内のLLC1にキャッシュフィルされるよう制御する。
【００３７】
［LLCとHAの構成］
図６は、本実施の形態におけるプロセッサCPUの構成例を示す図である。図６の例では、プロセッサCPUは、説明を容易にするために、仮に２つのクラスタCL0, CL1を有するものとする。クラスタCL0は、複数のコアCORE0−COREnと、それらのコアが共有する単一のLLC0を有する。クラスタCL1も同様の構成である。
【００３８】
LLC0は、主にコアからの要求を受け付けるムーブインポートMIPと、主にホームエージェントからのオーダを受け付けるオーダポートODPとを有する。さらに、LLC0は、LLCパイプライン１２と、LLCデータ部１４と、LLCタグ部１６と、ラインフィルバッファLFBとを有する。
【００３９】
LLCパイプライン１２は、コアからのメモリ要求のアドレスについてキャッシュタグを検索しヒット判定し、ヒットの場合コアにデータ応答し、ミスの場合ホームエージェントにメモリ要求を発行する。LLCデータ部１４はLLCのキャッシュデータメモリであり、LLCタグ部１６はキャッシュタグメモリである。
【００４０】
ラインフィルバッファLFBは、LLC0がメモリ要求を発行した場合、その後メインメモリ、他のLLC1、他のCPUのHAから供給されるデータを、キャッシュメモリに書き込む前に一時的に格納するフィルデータ保持用のデータバッファである。このデータバッファに格納されたデータは、その後キャッシュラインにフィルされる。ラインフィルバッファLFBは、ムーブインバッファと呼ばれることもある。LLC1も同様の構成である。
【００４１】
ローカルルータLRTは、クラスタCL0, CL1とホームエージェントHA間を接続するオンチップネットワークである。
【００４２】
一方、ホームエージェントHAは、主にLLCからの要求を受け付けるムーブインポートMIPと、主にLLCからのオーダ応答を受け付けるムーブアウトポートMOPとを有する。さらに、ホームエージェントHAは、HAパイプライン２２と、全てのクラスタのタグコピー２６、２８を有する。
【００４３】
HAパイプライン２２は、たとえば、クラスタCL0のLLC0から発行されたメモリ要求のアドレスに基づいて、LLCタグコピーを検索し、他のクラスタCL1のLLC1が要求されているキャッシュラインを持っているか否かをチェックする。また、タグの状態に応じてクラスタ間のキャッシュライン転送制御や、外部のメモリに対するライトバックやメモリに対するフェッチ要求またはストア要求や、他のプロセッサに対する要求の発行などを行う。また、HAパイプライン２２は、プロセッサチップ内または複数プロセッサチップを有するシステム全体のキャッシュコヒーレンシを制御するために、LLCタグコピーに適切な状態遷移を記録する。状態遷移は、例えば、ＭＥＳＩ制御の状態（Modified, Exclusive, Share, Invalid）などである。LLCタグコピー２６，２８は、全てのクラスタのLLCのキャッシュラインのアドレス、バリッドビット、状態を保持する。
【００４４】
ホームエージェントHAは、２つのロック回路を有する。第１に、ロックレジスタLKRは、LLCから発行されたメモリ要求に対し、要求されているアドレスのデータがいずれのLLCにも存在しない場合、メモリにフェッチ要求などを発行する。さらに、ロックレジスタは、要求対象のアドレス毎にロックを取り、その後同じアドレスに対する要求が発行されないようにする。
【００４５】
第２に、HAオーダロック回路HAOLKは、ホームエージェントHAがLLCに対してオーダを発行する際に、オーダのアドレスに基づいてロックを取得し、同じアドレスで重複してオーダが発行されないように制御する。
【００４６】
リプレースバッファRPBは、LLCがメモリ要求についてキャッシュミスして新規にデータを登録する際に、新規のデータがフィルされるキャッシュラインの代わりに、LLCから追い出される（エヴィクションされる）ヴィクティムラインのデータをメモリに書き戻す時にデータが一時的に格納されるバッファである。具体的には、ホームエージェントHAがLLCに発行したリプレースオーダに対するリプレース応答のデータが、リプレースバッファRPBに一時的に格納される。そして、メモリコントローラMCを介してメモリにライトバックされる。
【００４７】
CPUインターコネクト回路CPU-ICは、プロセッサチップCPU間を接続するCPU間バスを介して、他のプロセッサチップCPUと接続するための回路である。さらに、ホームエージェントは、各クラスタCL0, CL1がアイドル状態か否かを識別するアイドル状態識別回路２４を有する。
【００４８】
図７は、LLCとHAの具体的な構成例を示す図である。前述のとおり、LLCはホームエージェントHAに要求を発行し、ホームエージェントHAはLLCにその要求に対する応答を返信する。逆に、ホームエージェントHAはLLCにオーダを発行し、LLCはホームエージェントHAにオーダの応答を返信する。これらの関係を明らかにするために、図７は、LLCとホームエージェントHAの構成を並べて示す。図７において、LLCとHAとを接続するローカルルータLRTは省略されている。
【００４９】
LLCは、ムーブインポートMIPとオーダポートODPに受け付けられた要求またはオーダのうち、所定の優先度に応じて選択しLLCパイプライン１２に投入（入力）する選択回路１０を有する。選択回路１０は、ラインフィルバッファLFBに入力されたデータ応答も選択してLLCパイプライン１２に投入する。
【００５０】
たとえば、LLCパイプライン１２は、投入されたコアからのメモリ要求に応答して、メモリ要求のアドレスに基づいてLLCタグ部１４を検索しキャッシュヒットをチェックする。キャッシュヒットすれば、LLCデータ部１６内のデータを抽出し、コアにデータ応答する。また、LLCパイプライン１２は、キャッシュミスすれば、ラインフィルバッファLFB内のバッファをメモリ要求のアドレスに対して割り当てて、ホームエージェントHAに対してメモリ要求MEM-REQを発行する。
【００５１】
メモリ要求に対するデータ応答は、他のクラスタのLLCや、メモリ（メモリコントローラMC）や、他のプロセッサCPUのメモリ若しくはキャッシュから返信され、それらのデータ応答がホームエージェントHA経由でラインフィルバッファLFBに応答される。ラインフィルバッファLFBは、データ応答を受信すると、メモリ要求のアドレスに対応して割当済みのラインフィルバッファにデータを一時的に格納し、データをキャッシュフィル（登録）する要求をLLCパイプライン１２に投入し、LLCパイプライン１２は、LLCのタグ部１４とデータ部１６にデータをキャッシュフィルしながら、データ要求したコアにデータ応答を返す。
【００５２】
ホームエージェントHAが発行したオーダをオーダポートODPが受付し、選択回路１０が受け付けたオーダをLLCパイプライン１２に入力（投入）する。そして、LLCパイプライン１２は、オーダを処理し、オーダ応答をホームエージェントHAに返信する。
【００５３】
ホームエージェントHAから発行されるオーダには、例えば、リプレースオーダRPL-ODある。リプレースオーダは、メモリ要求に伴いLLC内のヴィクティムラインの吐き出し（エヴィクション）を要求するオーダである。また、本実施の形態では、ホームエージェントHAが発行するオーダとして、転送付きリプレースオーダRPL-TR-ODを有する。転送付きリプレースオーダは、本実施の形態で追加されたオーダであり、LLC内のヴィクティムラインの吐き出しと同時に、ヴィクティムラインを他のアイドル状態にクラスタのLLCに転送することを要求するオーダである。
【００５４】
さらに、本実施の形態で追加したオーダには、アイドル状態のクラスタ内のLLCに対して、ヴィクティムライン転送用のラインフィルバッファLFBのラインフィルバッファの割当を要求するライン割当オーダLN-ACL-ODがある。さらに、追加したオーダには、アイドル状態のクラスタ内のLLCに対して、メモリに対するフェッチ要求の発行を要求するフェッチ要求の発行オーダFET-RQ-ODがある。
【００５５】
以上のとおり、LLCパイプライン１２は、要求やオーダの信号群を処理して新たな要求を発行したりオーダに対する応答を返信したりする制御回路である。LLCタグ部１４は、LLCのキャッシュタグメモリであり、LLCデータ部１６は、LLCのキャッシュデータメモリである。また、ラインフィルバッファLFBは、データ応答されたフィルデータをキャッシュメモリに書き込む前に一時的に格納するフィルデータ保持用のバッファであり、複数のキャッシュライン分のバッファ数を有する。
【００５６】
一方、ホームエージェントHAは、ムーブインポートMIPに受け付けられた要求またはムーブアウトポートMOPに受け付けられたオーダ応答のうち、所定の優先度に基づいて選択し、HAパイプライン２２に投入（入力）する選択回路２０を有する。
【００５７】
LLCでのキャッシュミスによるメモリ要求は、ホームエージェントHA内のムーブインポートMIPに受け付けられる。ムーブインポートMIPは、クラスタの数だけ有し、選択回路２０がそれぞれに受け付けられたメモリ要求を、HAパイプライン２２に入力（投入）する。
【００５８】
HAパイプライン２２は、投入されたメモリ要求についてLLCタグコピーを検索し、他のクラスタのLLCタグコピーでヒットした場合、図４のように、ヒットしたLLCにデータを転送する転送オーダを発行する。さらに、HAパイプライン２２は、キャッシュミスしたLLCにリプレースオーダを発行して、そのヴィクティムラインを吐き出（エヴィクション）させる。また、ヴィクティムラインがダーティデータの可能性がある場合、HAパイプライン２２は、メモリへライトバックを行うためにリプレースバッファを獲得する。キャッシュミスしたLLCからのリプレース応答がムーブアウトポートMOPからHAパイプライン２２に流れて、ダーティデータはリプレースバッファRPBに転送され、メモリコントローラMCを介してメモリにライトバックされる。
【００５９】
HAパイプライン２２は、他のクラスタのLLCタグコピーでミスした場合、メモリ要求のアドレスに応じて、自分のプロセッサのメモリまたは他のCPUのメモリに対してフェッチ要求を発行する。アドレスが自分のプロセッサのメモリの場合、ロックレジスタLKRのロックを獲得し、ロックレジスタLKR経由でメモリコントローラにフェッチ要求を発行する。アドレスが他のCPUの場合、CPU間インターコネクトCPU-ICに対してフェッチ要求を発行する。自分のメモリやリモートCPUの応答データは、ホームエージェント経由で要求元のクラスタのラインフィルバッファLFBに転送される。他のクラスタのLLCタグコピーでミスした場合も、HAパイプライン２２は、キャッシュミスしたLLCにリプレースオーダを発行して、そのヴィクティムラインを吐き出（エヴィクション）させる。
【００６０】
ホームエージェントHA内のアイドル状態識別回路２４は、全てのクラスタのアイドル状態を監視し、どのクラスタがアイドル状態かの情報を取得する。そして、LLCでキャッシュミスして発行されたメモリ要求に応答して、HAパイプライン２２は、キャッシュミスしたLLCに対してリプレースオーダを発行してヴィクティムラインを吐き出させ、さらに、アイドル状態のクラスタのLLCに対してもリプレースオーダを発行して前述のヴィクティムラインがフィルされるキャッシュラインを吐き出させる。さらに、HAパイプライン２２は、アイドル状態のクラスタのLLCにライン割当オーダを発行してラインフィルバッファを割り当てさせ、ヴィクティムラインのデータをアイドル状態のクラスタのLLCに転送するよう種々のオーダを発行する。その結果、アイドル状態のクラスタのLLCは転送されてきたヴィクティムラインのデータを吐き出したキャッシュラインにフィルする。
【００６１】
これにより、アイドル状態のクラスタのLLCが有効に活用され、その後、ヴィクティムラインのデータに対して再度メモリ要求が発行された場合、HAパイプライン２２は、アイドル状態のクラスタのLLCに退避させたデータをメモリ要求元のLLCに転送することを要求する転送オーダを、アイドル状態のクラスタのLLCに発行し、図４のように、データ転送させる。
【００６２】
HAパイプライン２２は、LLCから発行される要求を処理して、必要なオーダをLLCに発行する。発行されたオーダは、LLCのオーダポートODPに受け付けられ、選択回路１０によりLLCパイプライン１２に投入（入力）される。そして、LLCのLLCパイプライン１２から返信されるオーダ応答は、HA内のムーブアウトポートMOPに受け付けられ、HAパイプライン２２に投入される。
【００６３】
［主な要求とオーダ］
図８は、主な要求とオーダの図表である。以下概略を説明する。
【００６４】
メモリ要求MEM-RQは、LLCがキャッシュミスした際にホームエージェントHAに発行し、メモリのデータを要求する。データ応答MEM-CPLTは、ホームエージェントHAがLLCに返信するメモリ要求に対するデータ応答である。
【００６５】
リプレースオーダRPL-ODは、ホームエージェントHAがLLCに発行し、LLCに特定のキャッシュラインを吐き出（エヴィクション）させることを要求するオーダである。リプレース応答RPL-CPLTは、リプレースオーダに対する応答であり、リプレース応答のデータがダーティの場合は、ホームエージェントHAがメモリに対してライトバックする。
【００６６】
転送付きリプレースオーダRPL-TR-ODは、ホームエージェントHAがLLCに発行し、LLCに特定のキャッシュラインを吐き出し、特定のLLCに転送することを要求するオーダである。転送付きリプレース応答RPL-TR-CPLTは、転送付きリプレースオーダに対する応答で、吐き出され転送されるキャッシュラインのデータを伴う。
【００６７】
ライン割当オーダLN-ALC-ODは、ホームエージェントHAがLLCに発行し、ラインフィルバッファのバッファを割り当てることを要求するオーダである。ライン割当応答LN-ALC-CPLTは、ライン割当オーダに対する応答であり、ACK/NACKと、割り当てたwayとクラスタ番号、LFB番号（ラインフィルバッファ番号）を通知する。
【００６８】
フェッチ要求の発行オーダFET-RQ-ODは、ホームエージェントHAがLLCにフェッチ要求の発行を要求するオーダである。フェッチ要求発行オーダの応答FET-RQ-ODは、フェッチ要求の発行オーダの応答である。
【００６９】
図８には示されていないが、図４で説明した転送オーダもホームエージェントHAがLLCに発行するオーダの一つである。
【００７０】
［アイドル状態識別回路］
本実施の形態では、ホームエージェントHAは、LLC0のリプレース対象のヴィクティムラインのデータがアイドル状態のクラスタCL1内のLLC1にキャッシュフィルされるよう制御する。そのために、ホームエージェントHAは、どのクラスタがアイドル状態か否かを識別するアイドル状態識別回路２４を有する。以下、アイドル状態識別回路２４について説明する。
【００７１】
図９は、サスペンド検出回路の構成を示す図である。サスペンド検出回路１８は、例えば、各クラスタ内に設けられる。または、サスペンド検出回路１８は、ホームエージェントHA内に各クラスタ毎に設けられても良い。
【００７２】
サスペンド検出回路１８は、クラスタ内に属する全てのスレッドがオフラインまたはサスペンドの場合に、クラスタ内の全てのコアがサスペンド状態であることを示す全コアサスペンド信号ALL_CORE_SUSPENDを出力する。サスペンド検出回路１８は、クラスタ内の各スレッドのオフライン信号とサスペンド信号の論理ORをとるORゲート１８１と、全スレッドのORゲート１８１の出力の論理ANDをとるANDゲート１８２とを有する。
【００７３】
サスペンドSUSPENDとは、OSが実行待ちのタスクがなくなった際に実行させるサスペンド命令により遷移するCPUのステータスである。オフラインOFFLINEとは、コアライセンスで非アクティベーション状態などにより起動しない（非アクティブな）コアや、ハードウエア構成として無効となっている状態のコアなどのステータスである。いずれのステータスもLLCを利用しない状態であり、クラスタ内の全てのスレッド（つまりコア）がサスペンド状態またはオフライン状態のANDが取れる状態は、クラスタ内のLLCを利用するコアがいなくなることを示す。
【００７４】
図１０は、アイドル状態識別回路２４の概略構成を示す図である。アイドル状態識別回路２４は、各クラスタの全コアサスペンド信号ALL_CORE_SUSPENDを入力し、各クラスタ毎に、サスペンド状態の比率とアイドル状態の継続時間をチェックし、LLC開放信号を出力する。
【００７５】
図１１は、あるクラスタNのアイドル状態を検出するアイドル状態識別回路の構成を示す図である。図１０のアイドル状態識別回路２４は、図１１の回路を全クラスタについて有する。図１１のアイドル状態識別回路は、アイドル状態判定回路２４１と、アイドル状態持続監視回路２４２と、LLC開放状態保持回路２４３とを有する。
【００７６】
アイドル状態判定回路２４１は、全コアサスペンド信号ALL_CORE_SUSPENDの状態「１」と「０」の比率が所定の比率以上である場合に、クラスタ内に属する全コアがアイドル状態であると判定する。全コアサスペンド信号ALL_CORE_SUSPENDの「１」「０」は、単にその瞬間クラスタ内の全てのコアがSUSPENDもしくはOFFLINEであるという意味である。そこで、アイドル状態判定回路２４１は、基準パルスCLK1を分周比DIVで分周したサンプリングタイミングにおいて、全コアサスペンド信号ALL_CORE_SUSPENDが「１」になる回数から「０」になる回数を減じた回数が基準値TH1を越えた場合に、アイドル状態通知信号S241を「１」にする。
【００７７】
例えば、サンプリングタイミングにおいて全コアサスペンド信号ALL_CORE_SUSPENDが状態「1」のときカウントアップし,「0」のときカウントダウンするアップダウンカウンタを有し、このカウント値が基準値TH1を超えたとき、アイドル状態通知信号S241を「１」にし、開放モードリセット信号RESET信号を「０」にする。逆に、カウント値が基準値TH1以下になると、アイドル状態通知信号S241を「０」にし、開放モードリセットRESET信号を「１」にする。つまり、アイドル状態検知信号S241と開放モードリセット信号RESETは逆相信号である。これにより、アイドル状態通知信号S241は、全コアサスペンド信号の状態「１」の発生頻度が状態「０」の発生頻度より、基準値TH1を越えて多くなったときに、状態「１」になるので、より蓋然性の高いアイドル状態を通知する信号になる。
【００７８】
次に、アイドル状態持続監視回路２４２は、アイドル状態通知信号S241の状態「１」が所定時間を超えて継続したことを検出して、開放モードセット信号SETの「１」を出力する。但し、アイドル状態通知信号S241が状態「０」になると、即、開放モードセット信号SETを「０」にする。
【００７９】
例えば、アイドル状態持続監視回路２４２は、アイドル状態通知信号S241の状態「１」を、基準パルスCLK2を分周比DIV2で分周下サンプリングタイミングでカウントするカウンタを有し、このカウント値が基準値TH2を越えると、開放モードセット信号SETを「１」にする。逆に、このカウンタは、アイドル状態通知信号S241が瞬間的にでも状態「０」になると、カウント値を０にリセットし、開放モードセット信号SETを「０」にする。
【００８０】
アイドル状態持続監視回路を設けることで、クラスタN内のコアが確実にキャッシュを使用していないことを確認し、あるクラスタが短時間のスリープから復帰する際に、他のクラスタにより短時間スリープしたLLCが使用されてしまうことなどを防ぐ。
【００８１】
LLC開放状態保持回路２４３は、開放モードセット信号SETが「１」でセットされ、開放モードリセット信号RESETが「１」でリセットされ、その出力がANDゲート２４４を介してLLC開放信号S244となるRSフリップフロップである。アイドル状態持続監視回路２４２が、開放モードセット信号SETを「１」にしたとき、LLC開放状態保持回路２４３は出力を「１」にセットする。一方、開放モードリセット信号RESETはアイドル状態通知信号S241の逆相信号であり、全コアサスペンド信号ALL_CORE_SUSPENDが「１」になる回数から「０」になる回数を減じた値が瞬間的にでも基準値TH1以下になった場合でも、開放モードリセット信号RESETが「１」になり、LLC開放状態保持回路２４３の出力は「０」にリセットされる。
【００８２】
さらに、LLC開放状態保持回路２４３の出力は、ANDゲート２４４により、全コアサスペンド信号ALL_CORE_SUSPENDが状態「１」である場合は、そのままLLC開放信号S244として出力されるが、全コアサスペンド信号ALL_CORE_SUSPENDが一瞬でも状態「０」になると、それに追従して直ちにLLC開放信号S244は状態「０」になる。そして、そのまま全コアサスペンド信号ALL_CORE_SUSPENDが「0」を継続すると、アイドル状態判定回路２４１のカウンタが次第に減算されて基準値TH1を下回るため、LLC開放状態保持回路２４３の出力はいずれリセットされ、LLC開放信号S244の状態「０」は維持される。反対に、すぐに全コアサスペンド信号ALL_CORE_SUSPENDが「1」に戻る場合は、LLC開放状態保持回路２４３はセットされた状態のままであるため、全コアサスペンド信号ALL_CORE_SUSPENDが「1」になった時点で、直ちにLLC開放信号S244は状態「１」に復帰する。この仕組みにより、クラスタ内のコアがサスペンド状態から本格的に復帰した場合は、その時点で即LLC開放信号S244を「０」に復帰させ、OSなどシステムソフトウェアによるタイマ処理などの短い時間だけのSUSPEND解除では、LLC開放信号S244を一時的にしか「０」にせず、短時間のSUSPEND解除がLLC開放動作に与える影響を最小限に抑える。図１１の各回路の具体例は省略する。
【００８３】
［４つの実施の形態］
次に、本実施の形態の４つの例についてホームエージェントHAがヴィクティムラインをアイドルクラスタ内のLLCにキャッシュフィルする制御について説明する。
【００８４】
図１２は、本実施の形態におけるメモリ要求に対するホームエージェントの動作の概略を示す図である。前提として、プロセッサは、２つのクラスタCL0, CL1と、ホームエージェントHAと、メモリコントローラMCを有し、クラスタCL0はアクティブ状態であり、クラスタCL1はアイドル状態であるとする。実施の形態の４つの例で共通する動作は以下のとおりである。
【００８５】
最初に、ホームエージェントHAは、内蔵するアイドル状態識別回路からクラスタCL1がアイドル状態であることを示すLLC開放信号S244を受信している（S11）。その状態で、クラスタCL0のLLC0からメモリ要求を受信する（S12）。
【００８６】
ホームエージェントHAは、メモリ要求のアドレスに基づいて全てのLLCタグコピーを検索し、LLC0内のヴィクティムラインを決定し、ヴィクティムラインをアイドル状態のクラスタCL1のLLC1に転送するよう以下の制御を実行する。第１に、ホームエージェントHAは、LLC0にリプレースオーダを発行し、ヴィクティムラインの吐き出し（エヴィクション）を依頼する（S14）。第２に、ホームエージェントHAは、開放状態のLLC1にリプレースオーダを発行し、LLC0のヴィクティムラインをフィル（登録）するためのLLC1内のキャッシュラインの吐き出し（エヴィクション）を依頼する（S15）。そして、ホームエージェントHAは、LLC0のヴィクティムラインをLLC1に転送するよう種々の方法で制御する（S14_1）。最後に、LLC1は、LLC0のヴィクティムラインを、LLC1内の吐き出したキャッシュラインにフィル（登録）する（S14_3）。
【００８７】
LLC0のヴィクティムラインをLLC1に転送する制御は、例えば、LLC0に発行したリプレースオーダを転送付きリプレースオーダにし、LLC0にヴィクティムラインの吐き出しと、そのヴィクティムラインのLLC1への転送を依頼する。例えば、LLC1にLLC0のヴィクティムラインのアドレスのデータをメモリからフェッチスルメモリ要求を発行させ、LLC1にLLC0から吐き出されてメモリにライトバックされたデータを取得させ、LLC1から吐き出したキャッシュラインにフィルさせる。それ以外の方法も考えられる。
【００８８】
上記のように、本実施の形態では、LLC0からのメモリ要求に対して、ホームエージェントHAが主体的にLLC0とLLC1にオーダを発行して、LLC0のヴィクティムラインをLLC1に転送するよう制御する。
【００８９】
［第１の実施の形態］
図１３、図１４は、第１の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。第１の実施の形態では、ホームエージェントHAは、LLC0に対するリプレースオーダを転送付きリプレースオーダで発行する。さらに、ホームエージェントHAは、LLC1に対してラインフィルバッファの割当を要求するライン割当オーダを発行する。
【００９０】
図１３において、図示されていないが、事前にホームエージェントHAは、アイドル状態識別回路からどのクラスタがアイドル状態か（LLC開放状態）を通知されている。
【００９１】
次に、クラスタCL0内のあるコアがLLC0にメモリ要求を発行し、LLC0がキャッシュミスし、ホームエージェントのHAパイプラインに対してメモリ要求を発行する（S12）。このメモリ要求に応答して、HAパイプラインは、メモリ要求のアドレスに基づきLLCタグコピーを検索してキャッシュミスし、LLC1がそのアドレスのデータを所有していないことを検出する（S12_1）。そのため、HAパイプラインは、メモリコントローラMCにメモリ要求のアドレスでフェッチ要求を発行し（S12_2）、メモリからデータを読み出すよう制御する。この時、HAパイプラインは、LLCタグコピーからLLC0のヴィクティムラインのインデックス番号（またはアドレス）を検出する。
【００９２】
次に、HAパイプラインは、クラスタCL1がアイドル状態でLLC1が開放状態であることを通知されているため、通常行うメモリ要求の要求元であるLLC0へのリプレースオーダの発行を行う前に、LLC1に対してライン割当オーダを発行し（S13）、LLC1にラインフィルバッファLFB内のバッファの割当を要求する。これに応答して、LLC1のLLCパイプラインは、ラインフィルバッファの割当に成功すると、割当完了を示すACKを有するライン割当応答をHAパイプラインに返信する（S13_1）。LLC1のLLCパイプラインは、ラインバッファを割り当てる際、LLC0のヴィクティムラインをフィルする予定のLLC1内のキャッシュラインのウエイ番号を検出し、そのアドレスに対応させてラインフィルバッファを割り当てる。
【００９３】
HAパイプラインは、この返信を待って、LLC0に転送付きリプレースオーダを発行し（S14）、LLC0のLLCパイプラインにヴィクティムラインを吐き出させ、クラスタCL1のLLC1に転送するよう制御する。
【００９４】
同時に、HAパイプラインは、LLC1にリプレースオーダを発行し（S15）、LLC1に、LLC0のヴィクティムラインをフィルする予定のキャッシュライン（第２のヴィクティムライン）を吐き出すよう制御する。これに応答して、LLC1のLLCパイプラインは、上記第２のヴィクティムラインを吐き出すリプレース応答を返信する（S15_1）。そして、HAパイプラインは、吐き出されたデータがダーティであれば、メモリコントローラにライトバック要求を発行し（S15_2）、メモリへのライトバックを行わせる。
【００９５】
一方、転送付きリプレースオーダS14に応答して、LLC0はLLC0のヴィクティムラインを吐き出し、LLC1にLLC0のヴィクティムラインのデータを転送する（S14_1）。このヴィクティムラインのインデックスまたはアドレスは、転送付きリプレースオーダに含まれている。そして、LLC1のラインフィルバッファLFBは、転送されてきたヴィクティムラインのデータを一旦割り当てられたラインフィルバッファに格納し、LLC1のLLCパイプラインがLLC0のヴィクティムラインのデータをLLC1の第２のヴィクティムラインにフィル（登録）する（S14_3）。また、LLC0は、転送付きリプレースオーダに対する転送完了通知（転送付きリプレース応答）をホームエージェントに返信する（S14_2）。
【００９６】
その後、メモリコントローラがHAパイプラインとLLC0のLLCパイプラインにフェッチ要求S12_2に対するデータ応答を返信する（S12_3，S12_4）。クラスタCL0のLLC0は、ラインフィルバッファLFBのラインフィルバッファにデータ応答のデータを一旦格納し、LLCパイプラインがLLC0のヴィクティムラインにデータをフィル（登録）する（S12_5）。このラインフィルバッファは、最初にLLC0のLLCパイプラインがメモリ要求を発行するとき、既に割当済みである。
【００９７】
図１４において、クラスタCL1のLLC1のLLCパイプラインは、ライン割当オーダS13に応答してラインフィルバッファの割当を試みるが、ラインフィルバッファLFB内のバッファ数は有限個であるため、割当できない場合がある。その場合、LLC1のLLCパイプラインは、割当失敗を意味するNACKを有するライン割当応答をホームエージェントに返信する（S13_1）。
【００９８】
HAパイプラインは、ライン割当応答がNACKだったことから、LLC0のヴィクティムラインをLLC1に転送することはできないと判断し、LLC0にリプレースオーダを発行し（S16）、LLC0にヴィクティムラインを吐き出すよう制御する。それに応答して、LLC0は、ヴィクティムラインのデータを有するリプレース応答をHAパイプラインに返信する（S16_1）。そして、HAパイプラインは、そのデータがダーティであれば、メモリコントローラにライトバック要求を発行する（S16_2）。
【００９９】
その後、メモリコントローラがフェッチ要求S12_2に対するデータ応答をHAパイプラインとLLC0とに返信し（S12_3, S12_4）、LLC0が読み出されたデータをヴィクティムラインにフィル（登録）する。この動作は、図１３と同じである。
【０１００】
以上のとおり、第１の実施の形態では、ホームエージェントが、メモリ要求した要求元のLLC0に対して転送付きリプレースオーダを発行することで、LLC0にヴィクティムラインを吐き出させ、アイドル状態のクラスタLC1のLLC1にヴィクティムラインのデータを転送させる。さらに、ホームエージェントは、転送付きリプレースオーダに先立って、LLC1にライン割当オーダを発行し、ラインフィルバッファの割当を行わせる。これにより、LLC1は、転送されてきたヴィクティムラインのデータを割り当てられたラインフィルバッファに格納し、キャッシュフィル（登録）する。
【０１０１】
［第１の実施の形態の詳細］
図１５は、ホームエージェントが所有するLLCタグコピーを示す図である。図１５には、一例としてクラスタCL0のLLC0のタグコピーが示されている。LLCタグコピーは、複数のウエイWayについて、インデックスに対応して、タグアドレスと、状態コードとを格納する。タグアドレスは、対応するキャッシュデータメモリ内のデータのアドレスに対応する。状態コードは前述したＭＥＳＩコードである。
【０１０２】
LLCタグコピーは、ヴィクティムビットを格納してもよい。ヴィクティムビットは、前述の転送付きリプレースオーダに応答してLLC0のヴィクティムラインのデータがキャッシュフィルされたLLC1のキャッシュラインであることを示す状態ビットである。例えば、ヴィクティムビットが「１」のキャッシュラインがその後ヴィクティムラインになった場合には、再度、アイドル中の他のクラスタのLLCにデータ転送することを禁止する。
【０１０３】
図１６は、第１の実施の形態におけるLLC0とLLC1のキャッシュタグメモリとキャッシュデータメモリの例を示す図である。図１６に示した例では、メモリ要求を発行したLLC0のヴィクティムラインCLN0が（way n、アドレス（V）、データDATA(V)）、LLC0のヴィクティムラインのデータがフィルされるLLC1のキャッシュラインCLN1が（way m、アドレス（W）、データDATA(W)）である。以下、第１のヴィクティムラインCLN0、第２のヴィクティムラインCLN1と区別して称する。
【０１０４】
前述のとおり、LLC1の第２のヴィクティムラインCLN1はリプレースオーダにより吐き出されメモリにライトバックされ、LLC0の第１のヴィクティムラインCLN0はデータ転送されてLLC1のキャッシュラインCLN1にフィルされ、そして、LLC0の第１のヴィクティムラインCLN0にはメモリコントローラからのデータ応答のデータ（アドレス（A）、データDATA(A)）がフィルされる。２つのヴィクティムラインCLN0，CLN1は、ウエイ番号は異なるが、キャッシュインデックスは一致する。つまり、メモリ要求のアドレス（A）と、第１のヴィクティムラインCLN0のアドレス（V）と、第１のヴィクティムラインが登録される第２のヴィクティムラインCLN1のアドレス（W）の下位ビットは同じであり、よって、同じキャッシュインデックスのキャッシュラインに格納される。
【０１０５】
図１７は、第１の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。図１７では、クラスタCL0のLLC0がLLCタグTAG1-LLC0を、クラスタCL1のLLC1がLLCタグTAG1-LLC1を所有する。そして、HAパイプラインが、それらのLLCタグコピーTAG2-LLC0, TAG2-LLC1を所有する。LLC1のタグTAG1-LLC1のみ状態コードがM（Modify）になっている。図１７では、図１６の例に基づいて、各要求やオーダのアドレスやウエイ番号を示し、また、タグの状態コードやホームエージェントHAのHAパイプラインの回路資源についても説明しながら、図１３の動作を説明する。
【０１０６】
クラスタCL0のコアが発行したアドレス（A）のデータ要求に応答して、LLC0のLLCパイプラインがキャッシュミスし、HAパイプラインにメモリ要求MEM-RQを発行する（S12）。このメモリ要求MEM-RQは、LLC0内のキャッシュ登録先のウエイ（n）と、メモリのアドレス（A）を有する。
【０１０７】
HAパイプラインは、ムーブインポートMIP経由で入力されたメモリ要求に応答して、LLCタグコピーTAG2-LLC0、TAG2-LLC1を検索し、アドレス（A）に対しては他のどのクラスタも所持していないこと、LLC0内の第１のヴィクティムラインにはアドレス（V）がE状態で登録されていることを検出する（S12_1）。
【０１０８】
そこで、HAパイプラインは、アドレス（A）が自CPUのメモリの場合、ロックレジスタLKRでロックを獲得し、メモリコントローラMCにフェッチ要求を発行する（図１３のS12_2）。HAパイプラインは、通常このフローでクラスタCL0のLLC0に対してリプレースオーダRPL-ODを発行する。しかし、本実施の形態では、HAパイプラインは、クラスタCL1がアイドル状態である場合、そのクラスタCL1に対してライン割当オーダLN-ALC-OD（第１のヴィクティムラインのアドレス（V）付き）を発行する（S13）。このライン割当オーダLN-ALC-ODは、アイドル状態のLLC1に対して第１のヴィクティムラインを送りつけるラインフィルバッファの確保をラインフィルバッファLFBに要求するオーダである。HAパイプラインは、このフローでロックレジスタLKRにアドレス（A）の要求を登録し、後で使用する可能性があるリプレースバッファRPB,ホームエージェントのオーダロック回路 HAOLK-LLC0を予約しておく。クラスタCL1に対してオーダを発行するのでロック回路HAOLK-LLC1にアドレス（V）を登録する。
【０１０９】
ライン割当オーダLN-ALC-ODは、クラスタCL1のオーダポートODP経由でクラスタCL1のLCC1のLLCパイプラインを流れる（S13_2）。LLC1のLLCパイプラインは、LLCタグを検索し、アドレス（A）はキャッシュミスとなりLLC1はデータを所有しておらず、且つラインフィルバッファを割当できる場合、ライン割当応答LN-ALC-CPLT（ACKフラグ付き）を、HAパイプラインに発行する。ライン割当オーダLN-AC-ODはオーダ資源（HAOLK-LLC1）をつかんだ状態であるので、バッファを割り当て可能な場合は、LLC1はACKで応答する。バッファを割当不能の場合やキャッシュにヒットしLLC0から第１のヴィクティムラインを転送する必要性がない場合、LLC1はNACKで応答する。
【０１１０】
バッファが割り当てられた場合、LLC1は、LLC1内のどのキャッシュwayをリプレースするかをこのフローS13_2で確定する。このとき確定したLLC1内のwayをway=mとする（図１６参照）。LLC1内のway=mのキャッシュラインCLN1には別のデータが登録されている可能性があり、ここでもリプレースが必要になる。つまり、クラスタCL0のLLC0の第１のヴィクティムライン（V）CLN0の転送により追い出されるクラスタCL1のLLC1の第２のヴィクティムライン（W）CLN1が存在する。
【０１１１】
ライン割当応答LN-ALC-CPLT（ACKケース）は、アドレス（V）とウエイ（ｍ）と有する。このライン割当応答は、ムーブアウトポートMOP経由でHAパイプラインに入力（投入）される。これに応答して、HAパイプラインは、クラスタCL1のLLC1でラインフィルバッファが割り当てられたか否かを知る（S17）。また、LLC1のウエイ（ｍ）内の第２のヴィクティムラインCLN1にはアドレス（V）が格納されていることも知る。
【０１１２】
そこで、HAパイプラインは、クラスタCL0のLLC0に対し転送付きリプレースオーダRPL-TR-ODを発行し（S14）、ウエイ（ｎ）内のアドレス（V）の第１のヴィクティムラインCLN0をクラスタCL1のLLC1に転送するよう要求する。同時に、HAパイプラインは、クラスタCL1のLLC1に対しリプレースオーダRPL-ODを発行し（S15）,LLC1のウエイ（ｍ）のアドレス（W）の第２のヴィクティムラインCLN1を吐き出して、LLC0内の第１のヴィクティムライン（V）CLN0の転送用のスペースを空けるよう要求する。
【０１１３】
これらのオーダで、HAパイプラインは、予約済みのオーダ資源HAOLK-LLC0、HAOLK-LLC1、RPBを使用する。HAOLK-LLC1に関しては開放と同時に別のアドレス（W）でロックを取る。すなわち、HAOLK-LLC0はアドレス（V）でRPL-TR-ODをロックし、HAOLK-LLC1はアドレス（W）のRPL-ODをロックする。図示されるとおり、アドレス（W）のステータスが（M）、つまりダーティの場合、メモリへのライトバックが必要となる。そこで予約済みのリプレースバッファRPBをここで使用する。
【０１１４】
リプレースオーダRPL-ODに応答して、クラスタCL1のLLC1は、第２のヴィクティムラインCLN1のリプレース処理を行い（S15_3）、そのダーティなデータをホームエージェントHAのリプレースバッファRPBにリプレース応答RPL-CPLTで転送する（S15_1）。
【０１１５】
一方、転送付きリプレースオーダRPL-TR-ODを受け付けたクラスタCL0のLLC1のパイプラインは、アドレス（V）の第１のヴィクティムラインCLN0を、クラスタCL1のLLC1のラインフィルバッファLFBに転送する（S14_1）。同時に、リプレース応答RPL-CPLTをホームエージェントHAに返信する。MOP経由でリプレース応答を受け付けたHAパイプラインは、HAOLK-LLC0の解除とともに、LLCタグコピー部にアドレス（V）をVictim bit付きで登録する（S15_4）。Victim bitとは、次にこのキャッシュラインがリプレース対象となったとき他のアイドル状態のクラスタに再び転送されるのを防ぐフラグ情報である。
【０１１６】
図１７には示されていないが、その後、ロックレジスタLKRは、メモリに発行したフェッチ要求に対するデータ応答が戻り次第開放され、メモリ要求の要求元のクラスタCL0のラインフィルバッファLFBにデータ応答が転送される。
【０１１７】
図１８は、メモリ要求を受け付けたHAパイプラインが、ライン割当オーダLN-ALC-ODを発行する条件を示すフローチャート図である。HAパイプラインは、LLCタグコピーを参照してメモリ要求のヴィクティムラインのヴィクティムビットが「０」であることと（S20のYES）、LLC開放信号「１」が１つ以上あることと（S21のYES）、リプレースバッファRPBが１個、オーダロック回路HAOLKが２個のハードウエア資源が確保可能であること（S22のYES）が満たされた場合に、ライン割当要求LN-ALC-ODを発行する。その場合、HAパイプラインは、ヴィクティムラインを転送する対象のLLCを、LLC開放信号が「１」のLLCの中から、所定のアルゴリズムで選択する（S23）。アルゴリズムは、例えば、ランダムに選択、ラウンドロビンで選択、LRU（Least Recent Used）で選択などである。上記の条件が１つでも満たされなければ、ヴィクティムラインの転送を行わず、通常のリプレースオーダRPL-ODをメモリ要求を発行したLLC0に発行する。
【０１１８】
[第２の実施の形態]
図１９は、第２の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。第２の実施の形態では、ホームエージェントHAが、転送されるヴィクティムラインを受け入れる専用のラインフィルバッファ（ヴィクティムライン用バッファ）を有する。それに伴い、HAパイプラインは、第１の実施の形態のように、LLC1に対してラインフィルバッファの割当を要求するライン割当オーダを発行することは行わない。そして、HAパイプラインは、第１の実施の形態と同様に、LLC0に対するリプレースオーダを転送付きリプレースオーダRPL-TR-ODで発行する（S14）。このオーダに応答して、LLC0が第１のヴィクティムラインをLLC1に転送し（S14_1）、LLC1は転送される第１のヴィクティムラインのデータを専用のバッファで受け入れて、第２のヴィクティムラインにキャッシュフィルする（S14_3）。それ以外は、第１の実施の形態と同じである。
【０１１９】
［第３の実施の形態］
図２０は、第３の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。第３の実施の形態では、HAパイプラインがLLC0に対し第１のヴィクティムラインについて通常のリプレースオーダを発行する（S32）。これに応答して、LLC0はリプレース応答をHAパイプラインに返信する（S32_1）。ホームエージェントHAは、リプレース応答で返信された第１のヴィクティムラインのデータをリプレースバッファRPBに格納する。
【０１２０】
その後、HAパイプラインは、LLC1に対しライン割当オーダを発行し（S34）、LLC1に第１のヴィクティムラインのデータを受け入れるラインフィルバッファの割当を要求する。LLC1は、それに応答してラインフィルバッファを割り当てて、ライン割当応答をホームエージェントHAに返信する（S34_1）。
【０１２１】
その後、HAパイプラインは、第１の実施の形態と同様に、LLC1に対してリプレースオーダを発行し（S15）、LLC1内の第２のヴィクティムラインCLN1に対するリプレース処理を要求する。そして、HAパイプラインは、リプレース応答を受信する(S15_1)。
【０１２２】
その後、HAパイプラインは、LLC1に対して、リプレースバッファのデータを添付したデータ転送オーダを発行し（S35）、LLC1にデータをキャッシュフィルさせる（S35_1）。
【０１２３】
その後の動作は、第１の実施の形態と同様である。
【０１２４】
［第４の実施の形態］
図２１は、第４の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。第４の実施の形態の動作を概略すると、まず、HAパイプラインがLLC0に対し第１のヴィクティムラインについて通常のリプレースオーダを発行する（S32）。これに応答して、LLC0はリプレース応答をHAパイプラインに返信する（S32_1）。そして、HAパイプラインは、メモリコントローラMCにライトバック要求を発行し（S32_2）、LLC0の第１のヴィクティムラインのデータをメモリにライトバックさせる。
【０１２５】
さらに、HAパイプラインが、アイドル状態のクラスタCL1のLLC1にフェッチ要求の発行オーダを発行し（S31）、LLC1にLLC0の第１のヴィクティムラインのアドレス（V）のメモリ要求を発行するよう要求する。それに応答して、LLC1がホームエージェントHAにアドレス（V）のメモリ要求を発行する(S31_2)。この時、LLC1はラインフィルバッファを割り当てる。これに応答して、ホームエージェントHAは、メモリコントローラにアドレス（V）のフェッチ要求を発行する（S31_3）。
【０１２６】
そして、HAパイプラインが、LLC1に対して、第２のヴィクティムラインCLN1のリプレースオーダを発行し（S33）、LLC1に第２のヴィクティムラインCLN1をリプレースするよう要求する。
【０１２７】
その後、メモリコントローラが、フェッチ要求S31_3に対するデータ応答を返信し（S31_4, S31_5）、LLC1がデータ応答された第１のヴィクティムラインのアドレス（V）のデータをフィルする（S31_6）。
【０１２８】
第４の実施の形態では、上記のように、LLC0の第１のヴィクティムラインをLLC1に転送する手段として、LLC0に対する通常のリプレースオーダと、LLC1に対するメモリ要求の発行オーダを利用する。そして、LLC1は、第１のヴィクティムラインのアドレス（V）についてメモリ要求を発行し、そのデータをデータ応答で受信し、第２のヴィクティムラインにキャッシュフィルする。以下、具体的な動作を説明する。
【０１２９】
クラスタCL0がキャッシュミスし、新規のメモリ要求１をホームエージェントHAに発行する（S12）。ホームエージェントHAは、LLCタグコピーを参照し、いずれのLLCも所持しない場合、メモリコントローラにフェッチ要求1を発行する（S12-2）。
【０１３０】
ここでアイドル状態のクラスタが存在する場合、ホームエージェントHAは、そのクラスタに向けてフェッチ要求の発行オーダFET-RE−ODを発行する（S31）。図２１ではクラスタCL1がアイドル状態である。フェッチ要求の発行オーダは、単なるラインフィルバッファの割当オーダではなく、フェッチ要求をホームエージェントHAに対して発行することを要求するオーダである。フェッチ要求の発行オーダに応答して、クラスタCL1のLLCパイプラインは、LLC0のヴィクティムラインのアドレス（V）に対する新規のメモリ要求を生成し、入力ポート（LLC-MIPまたはLLC-ODP）にセットする。
【０１３１】
LLC1は、フェッチ要求発行オーダの応答FET-RQ-CPLTをホームエージェントHAに返信する（S31_1）。但し、これは制御上必須ではなく省略可能である。例えばフェッチ要求の発行オーダS31で渡されたアドレス（V）を既にLLC1が保有していた場合は、この応答はNACKになるが、このとき後続のメモリリ要求2（S31_2）が発行されなくなるだけである。但し、フェッチ要求発行オーダの応答FET-RQ-CPLTを、ホームエージェントHAがフェッチ要求の発行オーダS31の発行数を制御するのに使用することができる。
【０１３２】
LLC1のポートにセットされたメモリ要求が、LLC1のLLCパイプラインを流れ、新規メモリ要求としてラインフィルバッファをラインフィルバッファLFBで獲得し、メモリ要求2を発行する（S31_2）。その後の動作は、前述したとおりである。
【０１３３】
上記のとおり、第４の実施の形態では、ホームエージェントHAが発行するフェッチ要求の発行オーダS31を除くと、通常の新規メモリ要求がクラスタCL0とクラスタCl1からそれぞれ発行され、通常のリプレースオーダがホームエージェントHAからクラスタCL0とクラスタCL1のLLC0,LLC1に発行されるだけである。
【０１３４】
第４の実施の形態によれば、既存の要求やオーダを利用して実現できる。
【０１３５】
以上の実施の形態をまとめると，次の付記のとおりである。
【０１３６】
（付記１）
それぞれ演算器を有する複数のコアと、前記複数のコアに共有されるラストレベルキャッシュとをそれぞれ備える複数のクラスタと、
前記複数のクラスタがそれぞれ備えるラストレベルキャッシュに接続されたホームエージェントと、
前記ホームエージェントに接続されメモリとのアクセスを制御するメモリコントローラとを有し、
前記ホームエージェントは、前記複数のクラスタのいずれかの第１のクラスタ内の第１のラストレベルキャッシュから供給されるメモリ要求に応答して、
前記第１のラストレベルキャッシュに第１のリプレース要求を発行して、前記第１のラストレベルキャッシュに前記第１のラストレベルキャッシュ内の第１のヴィクティムラインをエヴィクションさせ、
前記第１のクラスタ以外のアイドル状態の第２のクラスタ内の第２のラストレベルキャッシュに第２のリプレース要求を発行して、前記第２のラストレベルキャッシュに前記第２のラストレベルキャッシュ内の第２のヴィクティムラインをエヴィクションさせ、
前記第２のラストレベルキャッシュは、前記第１のヴィクティムラインのデータを前記第２のヴィクティムラインにキャッシュフィルする、演算処理装置。
【０１３７】
（付記２）
前記第１のラストレベルキャッシュは、前記第１のリプレース要求に応答して、前記第２のラストレベルキャッシュに前記第１のヴィクティムラインのデータを転送する、付記１に記載の演算処理装置。
【０１３８】
（付記３）
前記ホームエージェントは、さらに、
前記第２のラストレベルキャッシュにライン割当要求を発行して、前記第２のラストレベルキャッシュにラインフィルバッファを割当させる、付記２に記載の演算処理装置。
【０１３９】
（付記４）
前記ラストレベルキャッシュは、他のラストレベルキャッシュから転送されるヴィクティムラインのデータを格納するヴィクティムライン用バッファを有し、
前記第２のラストレベルキャッシュは、前記第１のラストレベルキャッシュが転送する前記第１のヴィクティムラインのデータを前記ヴィクティムライン用バッファに格納し、前記第１のヴィクティムラインのデータをキャッシュフィルする、付記２に記載の演算処理装置。
【０１４０】
（付記５）
前記ホームエージェントは、第１のリプレース要求に応答して前記第１のラストレベルキャッシュからエヴィクションされた前記第１のヴィクティムラインのデータをリプレースバッファに格納し、
前記ホームエージェントは、前記リプレースバッファに格納した前記第１のヴィクティムラインのデータを、前記第２のラストレベルキャッシュに転送する、付記１に記載の演算処理装置。
【０１４１】
（付記６）
前記ホームエージェントは、さらに、
前記第２のラストレベルキャッシュに前記第１のヴィクティムラインのデータをフェッチするフェッチ要求の発行要求を発行して、前記第２のラストレベルキャッシュに前記フェッチ要求を前記ホームエージェントに発行させ、
前記ホームエージェントは、前記第２のラストレベルキャッシュから送信される前記フェッチ要求に応答して、前記メモリコントローラに前記第１のエヴィクションラインのデータのフェッチ要求を発行し、
前記メモリコントローラは、前記第２のラストレベルキャッシュに、前記フェッチ要求に対応するデータ応答を送信し、
前記第２のラストレベルキャッシュは、前記データ応答により、前記第１のヴィクティムラインのデータを受信する、付記１に記載の演算処理装置。
【０１４２】
（付記７）
前記ホームエージェントは、前記複数のクラスタがアイドル状態か否かを識別するアイドル状態識別回路を有する、付記１に記載の演算処理装置。
【０１４３】
（付記８）
前記アイドル状態識別回路は、前記複数のクラスタそれぞれの全コアがオフラインまたはサスペンド状態に所定の頻度以上なった場合に、当該クラスタがアイドル状態であると判定するアイドル状態判定回路と、前記アイドル状態が所定時間以上継続した場合に、当該クラスタのラストレベルキャッシュが開放状態と判定するアイドル状態持続監視回路とを有する、付記７に記載の演算処理装置。
【０１４４】
（付記９）
それぞれ演算器を有する複数のコアと前記複数のコアに共有されるラストレベルキャッシュとをそれぞれ有する複数のクラスタと、前記複数のクラスタのラストレベルキャッシュに接続されたホームエージェントと、前記ホームエージェントに接続されメモリとのアクセスを制御するメモリコントローラとを有する演算処理装置の制御方法であって、
前記ホームエージェントは、前記複数のクラスタのいずれかの第１のクラスタ内の第１のラストレベルキャッシュから供給されるメモリ要求に応答して、
前記第１のラストレベルキャッシュに第１のリプレース要求を発行して、前記第１のラストレベルキャッシュに前記第１のラストレベルキャッシュ内の第１のヴィクティムラインをエヴィクションさせ、
前記第１のクラスタ以外のアイドル状態の第２のクラスタ内の第２のラストレベルキャッシュに第２のリプレース要求を発行して、前記第２のラストレベルキャッシュに前記第２のラストレベルキャッシュ内の第２のヴィクティムラインをエヴィクションさせ、
前記第２のラストレベルキャッシュは、前記第１のヴィクティムラインのデータを前記第２のヴィクティムラインにキャッシュフィルする、演算処理装置の制御方法。
【０１４５】
（付記１０）
前記第１のラストレベルキャッシュは、前記第１のリプレース要求に応答して、前記第２のラストレベルキャッシュに前記第１のヴィクティムラインのデータを転送する、付記９に記載の演算処理装置の制御方法。
【０１４６】
（付記１１）
前記ホームエージェントは、さらに、
前記第２のラストレベルキャッシュに前記第１のヴィクティムラインのデータをフェッチするフェッチ要求の発行要求を発行して、前記第２のラストレベルキャッシュに前記フェッチ要求を前記ホームエージェントに発行させ、
前記ホームエージェントは、前記第２のラストレベルキャッシュから送信される前記フェッチ要求に応答して、前記メモリコントローラに前記第１のエヴィクションラインのデータのフェッチ要求を発行し、
前記メモリコントローラは、前記第２のラストレベルキャッシュに、前記フェッチ要求に対応するデータ応答を送信し、
前記第２のラストレベルキャッシュは、前記データ応答により、前記第１のヴィクティムラインのデータを受信する、付記１０に記載の演算処理装置の制御方法。
【符号の説明】
【０１４７】
CPU: 演算処理装置、プロセッサ
CL: Cluster、クラスタ
LLC: Last level Cache、ラストレベルキャッシュ
HA: Home Agent、ホームエージェント
MC: Memory Controller、メモリコントローラ
MEM: Memory、メモリ、メインメモリ
LRT: Local Router、ローカルルータ
MIP: ムーブインポート
ODP: オーダポート
１０：要求入力部（回路）
１２：HAパイプライン処理部（回路）
１４：LLCタグ部（キャッシュ）
１６：LLCデータ部（キャッシュ）
LFB:ラインフィルバッファ
MOP:ムーブアウトポート
２０：要求入力部（回路）
２２：HAパイプライン処理部（回路）
２４：アイドル状態識別回路
２６、２８：LLCタグコピー
CPU_IC: CPUインターコネクト回路
MEM-RQ: メモリ要求
MEM-CPLT: データ応答
LN-ALC-OD: ライン割当オーダ
LN-ALC-CPLT: ライン割当応答
FET-RQ-OD: フェッチ要求の発行オーダ
FET-RQ-CPLT: フェッチ発行オーダの応答
RPL-OD: リプレースオーダ
RPL-CPLT: リプレース応答
RPL-TR-OD: 転送付きリプレースオーダ
RPL-TR-CPLT: 転送付きリプレースオーダ応答
【図１】
0006451538.tif 000002
【図２】
0006451538.tif 000003
【図３】
0006451538.tif 000004
【図４】
0006451538.tif 000005
【図５】
0006451538.tif 000006
【図６】
0006451538.tif 000007
【図７】
0006451538.tif 000008
【図８】
0006451538.tif 000009
【図９】
0006451538.tif 000010
【図１０】
0006451538.tif 000011
【図１１】
0006451538.tif 000012
【図１２】
0006451538.tif 000013
【図１３】
0006451538.tif 000014
【図１４】
0006451538.tif 000015
【図１５】
0006451538.tif 000016
【図１６】
0006451538.tif 000017
【図１７】
0006451538.tif 000018
【図１８】
0006451538.tif 000019
【図１９】
0006451538.tif 000020
【図２０】
0006451538.tif 000021
【図２１】
0006451538.tif 000022