図面 (/)

技術 演算処理装置及び演算処理装置の制御方法

出願人 富士通株式会社
発明者 石井寛之
出願日 2015年7月22日 (5年4ヶ月経過) 出願番号 2015-144509
公開日 2017年2月2日 (3年9ヶ月経過) 公開番号 2017-027324
状態 特許登録済
技術分野 階層構造のメモリシステム
主要キーワード CPU間 ラインフィル 物理距離 サスペンド信号 コアグループ 開放モード 回路資源 リプレース処理
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2017年2月2日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (20)

課題

分割されたLLC(ラストレベルキャッシュ)を有効に利用する情報処理装置を提供する。

解決手段

それぞれ演算器を有する複数のコアと複数のコアに共有されるLLCとをそれぞれ有する複数のクラスタと、複数のクラスタのLLCに接続されたホームエージェントと、ホームエージェントに接続されメモリとのアクセスを制御するメモリコントローラとを有する。ホームエージェントは、第1のクラスタ内の第1のLLCから供給されるメモリ要求応答して、第1のLLCに第1のリプレース要求発行して、第1のLLC内の第1のヴィクテムラインをエヴィクションさせ、第1のクラスタ以外のアイドル状態の第2のクラスタ内の第2のLLCに第2のリプレース要求を発行して、第2のLLC内の第2のヴィクティムラインをエヴィクションさせる。第2のLLCは、第1のヴィクティムラインのデータを第2のヴィクティムラインにキャッシュフィルする。

概要

背景

演算処理装置(CPU: Central Processing Unit、またはプロセッサ)は、複数のコア(Core)と複数のコアが共有するラストレベルキャッシュ(Last Level Cache:LLC、以下LLC)と、メモリコントローラとを有する。キャッシュメモリの階層は、例えば、コア内に設けられたレベル1キャッシュ(L1キャッシュ)と、コアの外に設けられ複数のコアが共有するレベル2キャッシュ(L2キャッシュ)を有する。この場合、L2キャッシュはLLCに該当する。または、キャッシュメモリの階層が、コア内にL1キャッシュとL2キャッシュを有し、コアの外に複数のコアが共有するレベル3キャッシュ(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に接続されたホームエージェントと、ホームエージェントに接続されメモリとのアクセスを制御するメモリコントローラとを有する。ホームエージェントは、第1のクラスタ内の第1のLLCから供給されるメモリ要求応答して、第1のLLCに第1のリプレース要求を発行して、第1のLLC内の第1のヴィクテムラインをエヴィクションさせ、第1のクラスタ以外のアイドル状態の第2のクラスタ内の第2のLLCに第2のリプレース要求を発行して、第2のLLC内の第2のヴィクティムラインをエヴィクションさせる。第2のLLCは、第1のヴィクティムラインのデータを第2のヴィクティムラインにキャッシュフィルする。

目的

そこで,実施の形態の第1の側面の目的は,分割されたLLCを有効に利用する情報処理装置及び演算処理装置の制御方法を提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

それぞれ演算器を有する複数のコアと、前記複数のコアに共有されるラストレベルキャッシュとをそれぞれ備える複数のクラスタと、前記複数のクラスタがそれぞれ備えるラストレベルキャッシュに接続されたホームエージェントと、前記ホームエージェントに接続されメモリとのアクセスを制御するメモリコントローラとを有し、前記ホームエージェントは、前記複数のクラスタのいずれかの第1のクラスタ内の第1のラストレベルキャッシュから供給されるメモリ要求応答して、前記第1のラストレベルキャッシュに第1のリプレース要求発行して、前記第1のラストレベルキャッシュに前記第1のラストレベルキャッシュ内の第1のヴィクテムラインをエヴィクションさせ、前記第1のクラスタ以外のアイドル状態の第2のクラスタ内の第2のラストレベルキャッシュに第2のリプレース要求を発行して、前記第2のラストレベルキャッシュに前記第2のラストレベルキャッシュ内の第2のヴィクティムラインをエヴィクションさせ、前記第2のラストレベルキャッシュは、前記第1のヴィクティムラインのデータを前記第2のヴィクティムラインにキャッシュフィルする、演算処理装置

請求項2

前記第1のラストレベルキャッシュは、前記第1のリプレース要求に応答して、前記第2のラストレベルキャッシュに前記第1のヴィクティムラインのデータを転送する、請求項1に記載の演算処理装置。

請求項3

前記ホームエージェントは、さらに、前記第2のラストレベルキャッシュにライン割当要求を発行して、前記第2のラストレベルキャッシュにラインフィルバッファ割当させる、請求項2に記載の演算処理装置。

請求項4

前記ラストレベルキャッシュは、他のラストレベルキャッシュから転送されるヴィクティムラインのデータを格納するヴィクティムライン用バッファを有し、前記第2のラストレベルキャッシュは、前記第1のラストレベルキャッシュが転送する前記第1のヴィクティムラインのデータを前記ヴィクティムライン用バッファに格納し、前記第1のヴィクティムラインのデータをキャッシュフィルする、請求項2に記載の演算処理装置。

請求項5

前記ホームエージェントは、第1のリプレース要求に応答して前記第1のラストレベルキャッシュからエヴィクションされた前記第1のヴィクティムラインのデータをリプレースバッファに格納し、前記ホームエージェントは、前記リプレースバッファに格納した前記第1のヴィクティムラインのデータを、前記第2のラストレベルキャッシュに転送する、請求項1に記載の演算処理装置。

請求項6

前記ホームエージェントは、さらに、前記第2のラストレベルキャッシュに前記第1のヴィクティムラインのデータをフェッチするフェッチ要求発行要求を発行して、前記第2のラストレベルキャッシュに前記フェッチ要求を前記ホームエージェントに発行させ、前記ホームエージェントは、前記第2のラストレベルキャッシュから送信される前記フェッチ要求に応答して、前記メモリコントローラに前記第1のエヴィクションラインのデータのフェッチ要求を発行し、前記メモリコントローラは、前記第2のラストレベルキャッシュに、前記フェッチ要求に対応するデータ応答を送信し、前記第2のラストレベルキャッシュは、前記データ応答により、前記第1のヴィクティムラインのデータを受信する、請求項1に記載の演算処理装置。

請求項7

前記ホームエージェントは、前記複数のクラスタがアイドル状態か否かを識別するアイドル状態識別回路を有する、請求項1に記載の演算処理装置。

請求項8

前記アイドル状態識別回路は、前記複数のクラスタそれぞれの全コアがオフラインまたはサスペンド状態に所定の頻度以上なった場合に、当該クラスタがアイドル状態であると判定するアイドル状態判定回路と、前記アイドル状態が所定時間以上継続した場合に、当該クラスタのラストレベルキャッシュが開放状態と判定するアイドル状態持続監視回路とを有する、請求項7に記載の演算処理装置。

請求項9

それぞれ演算器を有する複数のコア及び前記複数のコアに共有されるラストレベルキャッシュとをそれぞれ有する複数のクラスタと、前記複数のクラスタのラストレベルキャッシュに接続されたホームエージェントと、前記ホームエージェントに接続されメモリとのアクセスを制御するメモリコントローラとを有する演算処理装置の制御方法であって、前記ホームエージェントは、前記複数のクラスタのいずれかの第1のクラスタ内の第1のラストレベルキャッシュから供給されるメモリ要求に応答して、前記第1のラストレベルキャッシュに第1のリプレース要求を発行して、前記第1のラストレベルキャッシュに前記第1のラストレベルキャッシュ内の第1のヴィクティムラインをエヴィクションさせ、前記第1のクラスタ以外のアイドル状態の第2のクラスタ内の第2のラストレベルキャッシュに第2のリプレース要求を発行して、前記第2のラストレベルキャッシュに前記第2のラストレベルキャッシュ内の第2のヴィクティムラインをエヴィクションさせ、前記第2のラストレベルキャッシュは、前記第1のヴィクティムラインのデータを前記第2のヴィクティムラインにキャッシュフィルする、演算処理装置の制御方法。

請求項10

前記第1のラストレベルキャッシュは、前記第1のリプレース要求に応答して、前記第2のラストレベルキャッシュに前記第1のヴィクティムラインのデータを転送する、請求項9に記載の演算処理装置の制御方法。

技術分野

0001

本発明は,演算処理装置及び演算処理装置の制御方法に関する。

背景技術

0002

演算処理装置(CPU: Central Processing Unit、またはプロセッサ)は、複数のコア(Core)と複数のコアが共有するラストレベルキャッシュ(Last Level Cache:LLC、以下LLC)と、メモリコントローラとを有する。キャッシュメモリの階層は、例えば、コア内に設けられたレベル1キャッシュ(L1キャッシュ)と、コアの外に設けられ複数のコアが共有するレベル2キャッシュ(L2キャッシュ)を有する。この場合、L2キャッシュはLLCに該当する。または、キャッシュメモリの階層が、コア内にL1キャッシュとL2キャッシュを有し、コアの外に複数のコアが共有するレベル3キャッシュ(L3キャッシュ)を有する場合、L3キャッシュはLLCに該当する。

0003

いずれの階層構造であっても、LLCでキャッシュミスが発生すると、LLCは、メモリコントローラにフェッチ要求発行し、メモリコントローラはメインメモリアクセスしデータを読み出し、LLCにデータ応答する。LLCは読み出されたデータをキャッシュ登録キャッシュフィル:cache fill)すると共に、コアにデータ応答する。

0004

キャッシュ容量は増加する傾向にある。すなわち、プロセスの微細化によりチップ内集積されるコア数が増加する。また、コア数(スレッド数)の増加によりセットアソシアティブキャッシュにおける連想度ウエイ(Wey)数)が増加する。それとともに、複数のコアが共有するLLCの容量も増大する。したがって、ハイエンドプロセッサチップは、微細化による面積の削減にかかわらず、性能向上によりチップサイズが増大傾向にある。

0005

このような背景から、メニーコア(多くのコア)を有するプロセッサが全コアから平等アクセス可能なLLC構成を適用すると、大きなチップサイズと大容量のLLCにより、LLCへのデータアクセス経路が長くなり、LLCのヒットレイテンシが増大する。

0006

そこで、全てのコアが共有する単一のLLC構成よりも、LLCを複数に分割し、複数のコアグループそれぞれが分割されたLLCを共有する構成が提案されている。このような構成の場合、各コアグループが共有するLLCは小容量になり、コアグループ内のコアから各LLCへの物理距離は小さく制御も簡単になり、高速アクセスが可能になる。すなわち、全コアから平等にアクセス可能な大容量の単一のLLC構成よりも、限られたコアが小容量のLLCを共有するクラスタを複数有する構成のほうが、LLCのヒットレイテンシが高速になる。この構成においては、クラスタ間でキャッシュメモリのデータを共有することが少ない場合、LLCは最大のパフォーマンスを発揮する。

0007

以下の特許文献には、マルチプロセッサ間でそれぞれに割り当てられるキャッシュ容量を動的に変更することが記載されている。

先行技術

0008

特開平08−137749号公報

発明が解決しようとする課題

0009

しかしながら、LLCを分割するといくつかの問題が生じる。例えば、各コアによって実行されるアプリケーションプログラムが利用できるキャッシュは、分割されたLLCの容量を超えることが困難になる。一般に、あるコアから自分のクラスタ以外のクラスタ内のLLCにキャッシュライン新規に登録することはできない。そのため、あるスレッドからみたLLCの容量は、分割されたLLCの容量に限定される。

0010

さらに、LLCを分割した構成の場合、クラスタ内の全てのコアがサスペンドまたは非アクティブ状態になると、クラスタ内のLLCは有効に利用されない。一方、全コアが単一のLLCを共有する構成の場合、一部のコアがサスペンドまたは非アクティブであっても、残りのアクティブなコアが全LLCを利用可能であり、一部のLLCが有効に利用されないことはない。

0011

また、コア単位ソフトウエア起動権利購入して、アクティブ状態にするコア数を増減することができるプロセッサの場合、クラスタ内の全コアが非アクティブ状態になるとそのクラスタ内のLLCは全く利用されない。

0012

そこで,実施の形態の第1の側面の目的は,分割されたLLCを有効に利用する情報処理装置及び演算処理装置の制御方法を提供することにある。

課題を解決するための手段

0013

実施の形態の第1の側面は,それぞれ演算器を有する複数のコアと、前記複数のコアに共有されるラストレベルキャッシュとをそれぞれ備える複数のクラスタと、
前記複数のクラスタがそれぞれ備えるラストレベルキャッシュに接続されたホームエージェントと、
前記ホームエージェントに接続されメモリとのアクセスを制御するメモリコントローラとを有し、
前記ホームエージェントは、前記複数のクラスタのいずれかの第1のクラスタ内の第1のラストレベルキャッシュから供給されるメモリ要求応答して、
前記第1のラストレベルキャッシュに第1のリプレース要求を発行して、前記第1のラストレベルキャッシュに前記第1のラストレベルキャッシュ内の第1のヴィクテムラインをエヴィクションさせ、
前記第1のクラスタ以外のアイドル状態の第2のクラスタ内の第2のラストレベルキャッシュに第2のリプレース要求を発行して、前記第2のラストレベルキャッシュに前記第2のラストレベルキャッシュ内の第2のヴィクティムラインをエヴィクションさせ、
前記第2のラストレベルキャッシュは、前記第1のヴィクティムラインのデータを前記第2のヴィクティムラインにキャッシュフィルする、演算処理装置である。

発明の効果

0014

第1の側面によれば,分割されたLLCを有効に利用できる。

図面の簡単な説明

0015

全コアが単一のLLCを共有する演算処理装置(CPU、プロセッサ)の構成を示す図である。
本実施の形態における演算処理装置の構成を示す図である。
複数の演算処理装置(プロセッサチップ)間の構成を示す図である。
ホームエージェントによるキャッシュコピーバック動作の一例を示す図である。
LLCでキャッシュミスした後のメモリ要求の動作の一例を示す図である。
本実施の形態におけるプロセッサCPUの構成例を示す図である。
LLCとHAの具体的な構成例を示す図である。
主な要求とオーダ図表である。
サスペンド検出回路の構成を示す図である。
アイドル状態識別回路24の概略構成を示す図である。
あるクラスタNのアイドル状態を検出するアイドル状態識別回路の構成を示す図である。
本実施の形態におけるメモリ要求に対するホームエージェントの動作の概略を示す図である。
第1の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。
第1の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。
ホームエージェントが所有するLLCタグコピーを示す図である。
第1の実施の形態におけるLLC0とLLC1のキャッシュタグメモリキャッシュデータメモリの例を示す図である。
第1の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。
メモリ要求を受け付けたHAパイプラインが、ライン割当オーダLN-ALC-ODを発行する条件を示すフローチャート図である。
第2の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。
第3の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。
第4の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。

実施例

0016

図1は、全コアが単一のLLCを共有する演算処理装置(CPU、プロセッサ)の構成を示す図である。図1のプロセッサCPUは、24個のコアCoreが単一のLLCを共有する。そして、LLCには4つのメモリコントローラMC0-MC3が接続され、それぞれのメモリコントローラMC0-MC3は対応するメモリMEM0-MEM3へのメモリアクセスを制御する。

0017

コアは、たとえば、命令デコーダ(図示せず)と、デコードした命令に基づいて演算を行う演算器(図示せず)と、第1レベルのキャッシュ(L1命令キャッシュとL1データキャッシュ)とを有する。コアは、メモリ内のデータを読み出す命令に応答してL1データキャッシュにメモリ要求を発行し、L1データキャッシュでキャッシュミスした場合、LLCにメモリ要求を発行する。

0018

LLCは、コアからのメモリ要求に応答して、キャッシュタグ検索してキャッシュヒットすれば、コアにデータを応答するデータ応答を返信し、キャッシュミスすれば、メモリコントローラMC0-MC3のいずれかにフェッチ要求を出力し、外部のメインメモリ(図示せず)にメモリアクセスさせデータを読み出させる。そして、メモリコントローラは、読み出したデータをLLCに返信するデータ応答を返信するとともに、コアにもデータ応答する。

0019

プロセッサCPUのチップサイズが大きくなりLLCが大容量になると、たとえば、左端のコアCoreがメモリ要求を出力し、LLCでキャッシュヒットしてLLC内の右端のキャッシュメモリから読み出しデータが応答される場合、ヒットレイテンシは長くなる。

0020

[実施の形態における演算処理装置]
図2は、本実施の形態における演算処理装置の構成を示す図である。図2のプロセッサCPUは、32個のコアCoreを8個ずつの4つのグループに分割し、8個のコアグループがそれぞれ単一のLLCを共有する。すなわち、図2のプロセッサは、8個のコアCoreと単一のLLCをそれぞれ有する4つのクラスタCL0-CL3を有する。

0021

さらに、プロセッサは、4つのクラスタ間のデータなどの転送を行うローカルルータLRTと、ホームエージェントHAを有する。ホームエージェントHAは、例えば4つのクラスタ間のメモリデータ整合性をとるメモリコヒーレンシ制御などを行う。ホームエージェントの構成と動作については後で詳述する。そして、ホームエージェントHAには、メモリコントローラMC0-MC3が接続され、プロセッサチップに接続された外部のメインメモリMEM0-MEM3にアクセスすることができる。メモリコントローラの数は1つでもよいが、複数にすることでメインメモリへのアクセスのスループットを上げることができる。

0022

図2に示すとおり、本実施の形態におけるプロセッサは、LLCを複数に(例えば4個に)分割し、複数のコアも同様に複数に(例えば4グループに)分割し、分割されたコアグループそれぞれが単一のLLCを共有する。したがって、コアからのメモリ要求がLLCでヒットしたときのレイテンシが短くなる。

0023

図3は、複数の演算処理装置(プロセッサチップ)間の構成を示す図である。図3には、4つのプロセッサチップCPU0-CPU3が、CPU間バスでそれぞれ接続される。具体的には、各プロセッサチップ内のホームエージェントHAに内蔵されたまたは付属されたインターコネクト回路(図示せず)を介して、CPU間バスが接続される。これにより、4つのプロセッサチップCPU0-CPU3それぞれのホームエージェントHAは、他のプロセッサチップのホームエージェントとデータの転送などを行う。

0024

コアからのメモリ要求は、アドレスによって、メモリ要求を発行したコアのプロセッサが管理するローカルメモリの場合や、他のプロセッサCPUが管理するリモートメモリの場合がある。ホームエージェントHAは、このような様々なアドレスのメモリ要求について、システム全体のコヒーレンシを制御し、LLCのタグのコピーを有することでLLCに対するスヌープを不要とするためプロセッサチップ内のバスのトラフィックを削減する。特に、ホームエージェントHAは、メニーコアプロセッサによる大規模システムで有効な構成の一つである。

0025

以下、説明を分かりやすくする目的で、LLCからホームエージェントHAへの要求を要求(またはリクエスト)と称し、ホームエージェントからLLCへの要求をオーダと称する。要求もオーダも、相手にある処理を求める要求であり、要求(またはリクエスト)とオーダは単に方向が逆になっているだけである。請求項では、要求(またはリクエスト)とオーダを区別せず、いずれも要求と称する。

0026

[キャッシュコピーバック
図4は、ホームエージェントによるキャッシュコピーバック動作の一例を示す図である。ホームエージェントHAは、キャッシュメモリ階層外に設けられるパイプライン制御回路であり、前述したとおり分割された複数のLLC間のコヒーレンシ制御が主な動作である。したがって、ホームエージェントHAは、全てのLLCのキャッシュタグのコピーを有し、LLCでミスしたメモリ要求を受信し、チップ内の他のLLCがデータ(または命令コード)を所持しているか否かをLLCタグコピーを参照して調べる。ホームエージェントは、データを所持しているLLCが存在する場合LLC間転送を行い、存在しない場合メモリに対してメモリ要求(フェッチ要求)を発行する。

0027

具体的には、図4に示されるとおりである。図4の例では、前提としてプロセッサチップが2つのクラスタCL0、CL1を有し、クラスタCL0内のコア(図示せず)がLLC0にメモリ要求を発行し、クラスタCL0のLLC0がキャッシュミスするものとする。これに応答して、クラスタCL0のLLC0がホームエージェントHAにメモリ要求を発行する(S1)。このときLLC0はラインフィルバッファを割当ておく。ラインフィルバッファとは、やがて受信する要求データを一時的に格納するバッファであり、このバッファに格納されたデータがLLC0内のキャッシュライン(またはヴィクティムライン)にフィルされる。

0028

ホームエージェントは、メモリ要求S1に応答して、所有する全クラスタCL0, CL1のキャッシュタグのコピーを検索し、クラスタCL1のLLC1のタグでヒットする(S2)。

0029

そこで、ホームエージェントは、クラスタLC0のLLC0にリプレースオーダを発行し(S3)、LLC0にヴィクティムラインをエヴィクション(立ち退き)させる。すなわち、ホームエージェントは、LLCタグコピーからLLC0内のエヴィクション対象のキャッシュラインを特定し、LLC0に対してそのキャッシュラインのデータをメモリにライトバックするようリプレースオーダS3を発行する。これに応答して、LLC0は、リプレースオーダS3に対するリプレース応答を、エヴィクション対象のヴィクティムラインのデータと共にホームエージェントに送信し(S3_1)、ホームエージェントはメモリコントローラMCにエヴィクションしたデータのライトバック要求を発行し(S6)、メモリコントローラMCにデータをメモリにライトバックさせる。その後、メモリコントローラMCからライトバック完了通知を受信する(S6-1)。

0030

一方、ホームエージェントは、リプレースオーダの発行S3とともに、クラスタCL1のLLC1に転送オーダを発行する(S4)。すなわち、ホームエージェントは、ヒットしたLLC1のキャッシュラインのデータをLLC0に転送するよう指示する転送オーダをLLC1に発行する。これに応答して、LLC1は、ヒットしたデータをLLC0に転送し(S4_1)、LLC0は転送されたデータをフィルする(S5)。この結果、両クラスタのLLC0, LLC1は、同じデータを共有する。

0031

[LLCの利用効率の低下例]
図5は、LLCでキャッシュミスした後のメモリ要求の動作の一例を示す図である。前提として、クラスタCL0内のコア(図示せず)がLLC0にメモリ要求を発行し、クラスタCL0のLLC0がキャッシュミスし、メインメモリにフェッチ要求し、それに対するデータ応答のデータをキャッシュフィルするものとする。また、クラスタCL1内の全てのコアが非活性状態またはサスペンド状態で、クラスタCL1がアイドル状態であるとする。

0032

図4と同様に、クラスタCL0のLLC0は、ホームエージェントHAに対してメモリ要求を発行する(S1)。それに応答して、ホームエージェントHAは、LLCタグコピーを検索しキャッシュミスする(S2)。その結果、ホームエージェントHAは、LLC0にリプレースオーダを発行するとともに(S3)、メモリコントローラにフェッチ要求を発行する(S7)。

0033

LLC0は、リプレースオーダS3に応答して指定されたヴィクティムラインのデータをエヴィクションするリプレース応答をホームエージェントに返信する(S3_1)。そして、ホームエージェントHAは、メモリコントローラMCにライトバック要求を発行する(S6)。

0034

やがて、メモリコントローラMCがフェッチ要求S7に対するデータ応答をホームエージェントとLLC0に返信する(S7_1, S7_2)。それに応答して、LLC0はデータ応答のデータを、キャッシュメモリにフィルする(S5)。

0035

図5の一般的なメモリ要求において、クラスタCL1がアイドル状態でクラスタCL1内のLLC1が使用されていないにもかかわらず、メモリ要求を発行したLLC0内のヴィクティムラインのデータは、外部メモリにライトバックされる。そのため、クラスタCL0のLLC0がその後、リプレースされたヴィクティムラインのデータをメモリ要求した場合、その要求されたデータはメモリへのフェッチ要求により取得されなければならない。

0036

このような状況が、LLCを複数に分割した場合にLLCの全容量が有効に利用されない状況の例である。本実施の形態では、このようなLLCの利用効率の低下を抑制するために、ホームエージェントHAは、LLC0のリプレース対象のヴィクティムラインのデータがアイドル状態のクラスタCL1内のLLC1にキャッシュフィルされるよう制御する。

0037

[LLCとHAの構成]
図6は、本実施の形態におけるプロセッサCPUの構成例を示す図である。図6の例では、プロセッサCPUは、説明を容易にするために、仮に2つのクラスタCL0, CL1を有するものとする。クラスタCL0は、複数のコアCORE0−COREnと、それらのコアが共有する単一のLLC0を有する。クラスタCL1も同様の構成である。

0038

LLC0は、主にコアからの要求を受け付けるムーブインポートMIPと、主にホームエージェントからのオーダを受け付けるオーダポートODPとを有する。さらに、LLC0は、LLCパイプライン12と、LLCデータ部14と、LLCタグ部16と、ラインフィルバッファLFBとを有する。

0039

LLCパイプライン12は、コアからのメモリ要求のアドレスについてキャッシュタグを検索しヒット判定し、ヒットの場合コアにデータ応答し、ミスの場合ホームエージェントにメモリ要求を発行する。LLCデータ部14はLLCのキャッシュデータメモリであり、LLCタグ部16はキャッシュタグメモリである。

0040

ラインフィルバッファLFBは、LLC0がメモリ要求を発行した場合、その後メインメモリ、他のLLC1、他のCPUのHAから供給されるデータを、キャッシュメモリに書き込む前に一時的に格納するフィルデータ保持用データバッファである。このデータバッファに格納されたデータは、その後キャッシュラインにフィルされる。ラインフィルバッファLFBは、ムーブインバッファと呼ばれることもある。LLC1も同様の構成である。

0041

ローカルルータLRTは、クラスタCL0, CL1とホームエージェントHA間を接続するオンチップネットワークである。

0042

一方、ホームエージェントHAは、主にLLCからの要求を受け付けるムーブインポートMIPと、主にLLCからのオーダ応答を受け付けるムーブアウトポートMOPとを有する。さらに、ホームエージェントHAは、HAパイプライン22と、全てのクラスタのタグコピー26、28を有する。

0043

HAパイプライン22は、たとえば、クラスタCL0のLLC0から発行されたメモリ要求のアドレスに基づいて、LLCタグコピーを検索し、他のクラスタCL1のLLC1が要求されているキャッシュラインを持っているか否かをチェックする。また、タグの状態に応じてクラスタ間のキャッシュライン転送制御や、外部のメモリに対するライトバックやメモリに対するフェッチ要求またはストア要求や、他のプロセッサに対する要求の発行などを行う。また、HAパイプライン22は、プロセッサチップ内または複数プロセッサチップを有するシステム全体のキャッシュコヒーレンシを制御するために、LLCタグコピーに適切な状態遷移を記録する。状態遷移は、例えば、MESI制御の状態(Modified, Exclusive, Share, Invalid)などである。LLCタグコピー26,28は、全てのクラスタのLLCのキャッシュラインのアドレス、バリッドビット、状態を保持する。

0044

ホームエージェントHAは、2つのロック回路を有する。第1に、ロックレジスタLKRは、LLCから発行されたメモリ要求に対し、要求されているアドレスのデータがいずれのLLCにも存在しない場合、メモリにフェッチ要求などを発行する。さらに、ロックレジスタは、要求対象のアドレス毎にロックを取り、その後同じアドレスに対する要求が発行されないようにする。

0045

第2に、HAオーダロック回路HAOLKは、ホームエージェントHAがLLCに対してオーダを発行する際に、オーダのアドレスに基づいてロックを取得し、同じアドレスで重複してオーダが発行されないように制御する。

0046

リプレースバッファRPBは、LLCがメモリ要求についてキャッシュミスして新規にデータを登録する際に、新規のデータがフィルされるキャッシュラインの代わりに、LLCから追い出される(エヴィクションされる)ヴィクティムラインのデータをメモリに書き戻す時にデータが一時的に格納されるバッファである。具体的には、ホームエージェントHAがLLCに発行したリプレースオーダに対するリプレース応答のデータが、リプレースバッファRPBに一時的に格納される。そして、メモリコントローラMCを介してメモリにライトバックされる。

0047

CPUインターコネクト回路CPU-ICは、プロセッサチップCPU間を接続するCPU間バスを介して、他のプロセッサチップCPUと接続するための回路である。さらに、ホームエージェントは、各クラスタCL0, CL1がアイドル状態か否かを識別するアイドル状態識別回路24を有する。

0048

図7は、LLCとHAの具体的な構成例を示す図である。前述のとおり、LLCはホームエージェントHAに要求を発行し、ホームエージェントHAはLLCにその要求に対する応答を返信する。逆に、ホームエージェントHAはLLCにオーダを発行し、LLCはホームエージェントHAにオーダの応答を返信する。これらの関係を明らかにするために、図7は、LLCとホームエージェントHAの構成を並べて示す。図7において、LLCとHAとを接続するローカルルータLRTは省略されている。

0049

LLCは、ムーブインポートMIPとオーダポートODPに受け付けられた要求またはオーダのうち、所定の優先度に応じて選択しLLCパイプライン12に投入(入力)する選択回路10を有する。選択回路10は、ラインフィルバッファLFBに入力されたデータ応答も選択してLLCパイプライン12に投入する。

0050

たとえば、LLCパイプライン12は、投入されたコアからのメモリ要求に応答して、メモリ要求のアドレスに基づいてLLCタグ部14を検索しキャッシュヒットをチェックする。キャッシュヒットすれば、LLCデータ部16内のデータを抽出し、コアにデータ応答する。また、LLCパイプライン12は、キャッシュミスすれば、ラインフィルバッファLFB内のバッファをメモリ要求のアドレスに対して割り当てて、ホームエージェントHAに対してメモリ要求MEM-REQを発行する。

0051

メモリ要求に対するデータ応答は、他のクラスタのLLCや、メモリ(メモリコントローラMC)や、他のプロセッサCPUのメモリ若しくはキャッシュから返信され、それらのデータ応答がホームエージェントHA経由でラインフィルバッファLFBに応答される。ラインフィルバッファLFBは、データ応答を受信すると、メモリ要求のアドレスに対応して割当済みのラインフィルバッファにデータを一時的に格納し、データをキャッシュフィル(登録)する要求をLLCパイプライン12に投入し、LLCパイプライン12は、LLCのタグ部14とデータ部16にデータをキャッシュフィルしながら、データ要求したコアにデータ応答を返す。

0052

ホームエージェントHAが発行したオーダをオーダポートODPが受付し、選択回路10が受け付けたオーダをLLCパイプライン12に入力(投入)する。そして、LLCパイプライン12は、オーダを処理し、オーダ応答をホームエージェントHAに返信する。

0053

ホームエージェントHAから発行されるオーダには、例えば、リプレースオーダRPL-ODある。リプレースオーダは、メモリ要求に伴いLLC内のヴィクティムラインの吐き出し(エヴィクション)を要求するオーダである。また、本実施の形態では、ホームエージェントHAが発行するオーダとして、転送付きリプレースオーダRPL-TR-ODを有する。転送付きリプレースオーダは、本実施の形態で追加されたオーダであり、LLC内のヴィクティムラインの吐き出しと同時に、ヴィクティムラインを他のアイドル状態にクラスタのLLCに転送することを要求するオーダである。

0054

さらに、本実施の形態で追加したオーダには、アイドル状態のクラスタ内のLLCに対して、ヴィクティムライン転送用のラインフィルバッファLFBのラインフィルバッファの割当を要求するライン割当オーダLN-ACL-ODがある。さらに、追加したオーダには、アイドル状態のクラスタ内のLLCに対して、メモリに対するフェッチ要求の発行を要求するフェッチ要求の発行オーダFET-RQ-ODがある。

0055

以上のとおり、LLCパイプライン12は、要求やオーダの信号群を処理して新たな要求を発行したりオーダに対する応答を返信したりする制御回路である。LLCタグ部14は、LLCのキャッシュタグメモリであり、LLCデータ部16は、LLCのキャッシュデータメモリである。また、ラインフィルバッファLFBは、データ応答されたフィルデータをキャッシュメモリに書き込む前に一時的に格納するフィルデータ保持用のバッファであり、複数のキャッシュライン分のバッファ数を有する。

0056

一方、ホームエージェントHAは、ムーブインポートMIPに受け付けられた要求またはムーブアウトポートMOPに受け付けられたオーダ応答のうち、所定の優先度に基づいて選択し、HAパイプライン22に投入(入力)する選択回路20を有する。

0057

LLCでのキャッシュミスによるメモリ要求は、ホームエージェントHA内のムーブインポートMIPに受け付けられる。ムーブインポートMIPは、クラスタの数だけ有し、選択回路20がそれぞれに受け付けられたメモリ要求を、HAパイプライン22に入力(投入)する。

0058

HAパイプライン22は、投入されたメモリ要求についてLLCタグコピーを検索し、他のクラスタのLLCタグコピーでヒットした場合、図4のように、ヒットしたLLCにデータを転送する転送オーダを発行する。さらに、HAパイプライン22は、キャッシュミスしたLLCにリプレースオーダを発行して、そのヴィクティムラインを吐き出(エヴィクション)させる。また、ヴィクティムラインがダーティデータの可能性がある場合、HAパイプライン22は、メモリへライトバックを行うためにリプレースバッファを獲得する。キャッシュミスしたLLCからのリプレース応答がムーブアウトポートMOPからHAパイプライン22に流れて、ダーティデータはリプレースバッファRPBに転送され、メモリコントローラMCを介してメモリにライトバックされる。

0059

HAパイプライン22は、他のクラスタのLLCタグコピーでミスした場合、メモリ要求のアドレスに応じて、自分のプロセッサのメモリまたは他のCPUのメモリに対してフェッチ要求を発行する。アドレスが自分のプロセッサのメモリの場合、ロックレジスタLKRのロックを獲得し、ロックレジスタLKR経由でメモリコントローラにフェッチ要求を発行する。アドレスが他のCPUの場合、CPU間インターコネクトCPU-ICに対してフェッチ要求を発行する。自分のメモリやリモートCPUの応答データは、ホームエージェント経由で要求元のクラスタのラインフィルバッファLFBに転送される。他のクラスタのLLCタグコピーでミスした場合も、HAパイプライン22は、キャッシュミスしたLLCにリプレースオーダを発行して、そのヴィクティムラインを吐き出(エヴィクション)させる。

0060

ホームエージェントHA内のアイドル状態識別回路24は、全てのクラスタのアイドル状態を監視し、どのクラスタがアイドル状態かの情報を取得する。そして、LLCでキャッシュミスして発行されたメモリ要求に応答して、HAパイプライン22は、キャッシュミスしたLLCに対してリプレースオーダを発行してヴィクティムラインを吐き出させ、さらに、アイドル状態のクラスタのLLCに対してもリプレースオーダを発行して前述のヴィクティムラインがフィルされるキャッシュラインを吐き出させる。さらに、HAパイプライン22は、アイドル状態のクラスタのLLCにライン割当オーダを発行してラインフィルバッファを割り当てさせ、ヴィクティムラインのデータをアイドル状態のクラスタのLLCに転送するよう種々のオーダを発行する。その結果、アイドル状態のクラスタのLLCは転送されてきたヴィクティムラインのデータを吐き出したキャッシュラインにフィルする。

0061

これにより、アイドル状態のクラスタのLLCが有効に活用され、その後、ヴィクティムラインのデータに対して再度メモリ要求が発行された場合、HAパイプライン22は、アイドル状態のクラスタのLLCに退避させたデータをメモリ要求元のLLCに転送することを要求する転送オーダを、アイドル状態のクラスタのLLCに発行し、図4のように、データ転送させる。

0062

HAパイプライン22は、LLCから発行される要求を処理して、必要なオーダをLLCに発行する。発行されたオーダは、LLCのオーダポートODPに受け付けられ、選択回路10によりLLCパイプライン12に投入(入力)される。そして、LLCのLLCパイプライン12から返信されるオーダ応答は、HA内のムーブアウトポートMOPに受け付けられ、HAパイプライン22に投入される。

0063

[主な要求とオーダ]
図8は、主な要求とオーダの図表である。以下概略を説明する。

0064

メモリ要求MEM-RQは、LLCがキャッシュミスした際にホームエージェントHAに発行し、メモリのデータを要求する。データ応答MEM-CPLTは、ホームエージェントHAがLLCに返信するメモリ要求に対するデータ応答である。

0065

リプレースオーダRPL-ODは、ホームエージェントHAがLLCに発行し、LLCに特定のキャッシュラインを吐き出(エヴィクション)させることを要求するオーダである。リプレース応答RPL-CPLTは、リプレースオーダに対する応答であり、リプレース応答のデータがダーティの場合は、ホームエージェントHAがメモリに対してライトバックする。

0066

転送付きリプレースオーダRPL-TR-ODは、ホームエージェントHAがLLCに発行し、LLCに特定のキャッシュラインを吐き出し、特定のLLCに転送することを要求するオーダである。転送付きリプレース応答RPL-TR-CPLTは、転送付きリプレースオーダに対する応答で、吐き出され転送されるキャッシュラインのデータを伴う。

0067

ライン割当オーダLN-ALC-ODは、ホームエージェントHAがLLCに発行し、ラインフィルバッファのバッファを割り当てることを要求するオーダである。ライン割当応答LN-ALC-CPLTは、ライン割当オーダに対する応答であり、ACK/NACKと、割り当てたwayとクラスタ番号、LFB番号(ラインフィルバッファ番号)を通知する。

0068

フェッチ要求の発行オーダFET-RQ-ODは、ホームエージェントHAがLLCにフェッチ要求の発行を要求するオーダである。フェッチ要求発行オーダの応答FET-RQ-ODは、フェッチ要求の発行オーダの応答である。

0069

図8には示されていないが、図4で説明した転送オーダもホームエージェントHAがLLCに発行するオーダの一つである。

0070

[アイドル状態識別回路]
本実施の形態では、ホームエージェントHAは、LLC0のリプレース対象のヴィクティムラインのデータがアイドル状態のクラスタCL1内のLLC1にキャッシュフィルされるよう制御する。そのために、ホームエージェントHAは、どのクラスタがアイドル状態か否かを識別するアイドル状態識別回路24を有する。以下、アイドル状態識別回路24について説明する。

0071

図9は、サスペンド検出回路の構成を示す図である。サスペンド検出回路18は、例えば、各クラスタ内に設けられる。または、サスペンド検出回路18は、ホームエージェントHA内に各クラスタ毎に設けられても良い。

0072

サスペンド検出回路18は、クラスタ内に属する全てのスレッドがオフラインまたはサスペンドの場合に、クラスタ内の全てのコアがサスペンド状態であることを示す全コアサスペンド信号ALL_CORE_SUSPENDを出力する。サスペンド検出回路18は、クラスタ内の各スレッドのオフライン信号とサスペンド信号の論理ORをとるORゲート181と、全スレッドのORゲート181の出力の論理ANDをとるANDゲート182とを有する。

0073

サスペンドSUSPENDとは、OSが実行待ちタスクがなくなった際に実行させるサスペンド命令により遷移するCPUのステータスである。オフラインOFFLINEとは、コアライセンスで非アクティベーション状態などにより起動しない(非アクティブな)コアや、ハードウエア構成として無効となっている状態のコアなどのステータスである。いずれのステータスもLLCを利用しない状態であり、クラスタ内の全てのスレッド(つまりコア)がサスペンド状態またはオフライン状態のANDが取れる状態は、クラスタ内のLLCを利用するコアがいなくなることを示す。

0074

図10は、アイドル状態識別回路24の概略構成を示す図である。アイドル状態識別回路24は、各クラスタの全コアサスペンド信号ALL_CORE_SUSPENDを入力し、各クラスタ毎に、サスペンド状態の比率とアイドル状態の継続時間をチェックし、LLC開放信号を出力する。

0075

図11は、あるクラスタNのアイドル状態を検出するアイドル状態識別回路の構成を示す図である。図10のアイドル状態識別回路24は、図11の回路を全クラスタについて有する。図11のアイドル状態識別回路は、アイドル状態判定回路241と、アイドル状態持続監視回路242と、LLC開放状態保持回路243とを有する。

0076

アイドル状態判定回路241は、全コアサスペンド信号ALL_CORE_SUSPENDの状態「1」と「0」の比率が所定の比率以上である場合に、クラスタ内に属する全コアがアイドル状態であると判定する。全コアサスペンド信号ALL_CORE_SUSPENDの「1」「0」は、単にその瞬間クラスタ内の全てのコアがSUSPENDもしくはOFFLINEであるという意味である。そこで、アイドル状態判定回路241は、基準パルスCLK1を分周比DIVで分周したサンプリングタイミングにおいて、全コアサスペンド信号ALL_CORE_SUSPENDが「1」になる回数から「0」になる回数を減じた回数が基準値TH1を越えた場合に、アイドル状態通知信号S241を「1」にする。

0077

例えば、サンプリングタイミングにおいて全コアサスペンド信号ALL_CORE_SUSPENDが状態「1」のときカウントアップし,「0」のときカウントダウンするアップダウンカウンタを有し、このカウント値が基準値TH1を超えたとき、アイドル状態通知信号S241を「1」にし、開放モードリセット信号RESET信号を「0」にする。逆に、カウント値が基準値TH1以下になると、アイドル状態通知信号S241を「0」にし、開放モードリセットRESET信号を「1」にする。つまり、アイドル状態検知信号S241と開放モードリセット信号RESETは逆相信号である。これにより、アイドル状態通知信号S241は、全コアサスペンド信号の状態「1」の発生頻度が状態「0」の発生頻度より、基準値TH1を越えて多くなったときに、状態「1」になるので、より蓋然性の高いアイドル状態を通知する信号になる。

0078

次に、アイドル状態持続監視回路242は、アイドル状態通知信号S241の状態「1」が所定時間を超えて継続したことを検出して、開放モードセット信号SETの「1」を出力する。但し、アイドル状態通知信号S241が状態「0」になると、即、開放モードセット信号SETを「0」にする。

0079

例えば、アイドル状態持続監視回路242は、アイドル状態通知信号S241の状態「1」を、基準パルスCLK2を分周比DIV2で分周下サンプリングタイミングでカウントするカウンタを有し、このカウント値が基準値TH2を越えると、開放モードセット信号SETを「1」にする。逆に、このカウンタは、アイドル状態通知信号S241が瞬間的にでも状態「0」になると、カウント値を0にリセットし、開放モードセット信号SETを「0」にする。

0080

アイドル状態持続監視回路を設けることで、クラスタN内のコアが確実にキャッシュを使用していないことを確認し、あるクラスタが短時間のスリープから復帰する際に、他のクラスタにより短時間スリープしたLLCが使用されてしまうことなどを防ぐ。

0081

LLC開放状態保持回路243は、開放モードセット信号SETが「1」でセットされ、開放モードリセット信号RESETが「1」でリセットされ、その出力がANDゲート244を介してLLC開放信号S244となるRSフリップフロップである。アイドル状態持続監視回路242が、開放モードセット信号SETを「1」にしたとき、LLC開放状態保持回路243は出力を「1」にセットする。一方、開放モードリセット信号RESETはアイドル状態通知信号S241の逆相信号であり、全コアサスペンド信号ALL_CORE_SUSPENDが「1」になる回数から「0」になる回数を減じた値が瞬間的にでも基準値TH1以下になった場合でも、開放モードリセット信号RESETが「1」になり、LLC開放状態保持回路243の出力は「0」にリセットされる。

0082

さらに、LLC開放状態保持回路243の出力は、ANDゲート244により、全コアサスペンド信号ALL_CORE_SUSPENDが状態「1」である場合は、そのままLLC開放信号S244として出力されるが、全コアサスペンド信号ALL_CORE_SUSPENDが一瞬でも状態「0」になると、それに追従して直ちにLLC開放信号S244は状態「0」になる。そして、そのまま全コアサスペンド信号ALL_CORE_SUSPENDが「0」を継続すると、アイドル状態判定回路241のカウンタが次第に減算されて基準値TH1を下回るため、LLC開放状態保持回路243の出力はいずれリセットされ、LLC開放信号S244の状態「0」は維持される。反対に、すぐに全コアサスペンド信号ALL_CORE_SUSPENDが「1」に戻る場合は、LLC開放状態保持回路243はセットされた状態のままであるため、全コアサスペンド信号ALL_CORE_SUSPENDが「1」になった時点で、直ちにLLC開放信号S244は状態「1」に復帰する。この仕組みにより、クラスタ内のコアがサスペンド状態から本格的に復帰した場合は、その時点で即LLC開放信号S244を「0」に復帰させ、OSなどシステムソフトウェアによるタイマ処理などの短い時間だけのSUSPEND解除では、LLC開放信号S244を一時的にしか「0」にせず、短時間のSUSPEND解除がLLC開放動作に与える影響を最小限に抑える。図11の各回路の具体例は省略する。

0083

[4つの実施の形態]
次に、本実施の形態の4つの例についてホームエージェントHAがヴィクティムラインをアイドルクラスタ内のLLCにキャッシュフィルする制御について説明する。

0084

図12は、本実施の形態におけるメモリ要求に対するホームエージェントの動作の概略を示す図である。前提として、プロセッサは、2つのクラスタCL0, CL1と、ホームエージェントHAと、メモリコントローラMCを有し、クラスタCL0はアクティブ状態であり、クラスタCL1はアイドル状態であるとする。実施の形態の4つの例で共通する動作は以下のとおりである。

0085

最初に、ホームエージェントHAは、内蔵するアイドル状態識別回路からクラスタCL1がアイドル状態であることを示すLLC開放信号S244を受信している(S11)。その状態で、クラスタCL0のLLC0からメモリ要求を受信する(S12)。

0086

ホームエージェントHAは、メモリ要求のアドレスに基づいて全てのLLCタグコピーを検索し、LLC0内のヴィクティムラインを決定し、ヴィクティムラインをアイドル状態のクラスタCL1のLLC1に転送するよう以下の制御を実行する。第1に、ホームエージェントHAは、LLC0にリプレースオーダを発行し、ヴィクティムラインの吐き出し(エヴィクション)を依頼する(S14)。第2に、ホームエージェントHAは、開放状態のLLC1にリプレースオーダを発行し、LLC0のヴィクティムラインをフィル(登録)するためのLLC1内のキャッシュラインの吐き出し(エヴィクション)を依頼する(S15)。そして、ホームエージェントHAは、LLC0のヴィクティムラインをLLC1に転送するよう種々の方法で制御する(S14_1)。最後に、LLC1は、LLC0のヴィクティムラインを、LLC1内の吐き出したキャッシュラインにフィル(登録)する(S14_3)。

0087

LLC0のヴィクティムラインをLLC1に転送する制御は、例えば、LLC0に発行したリプレースオーダを転送付きリプレースオーダにし、LLC0にヴィクティムラインの吐き出しと、そのヴィクティムラインのLLC1への転送を依頼する。例えば、LLC1にLLC0のヴィクティムラインのアドレスのデータをメモリからフェッチスルメモリ要求を発行させ、LLC1にLLC0から吐き出されてメモリにライトバックされたデータを取得させ、LLC1から吐き出したキャッシュラインにフィルさせる。それ以外の方法も考えられる。

0088

上記のように、本実施の形態では、LLC0からのメモリ要求に対して、ホームエージェントHAが主体的にLLC0とLLC1にオーダを発行して、LLC0のヴィクティムラインをLLC1に転送するよう制御する。

0089

[第1の実施の形態]
図13図14は、第1の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。第1の実施の形態では、ホームエージェントHAは、LLC0に対するリプレースオーダを転送付きリプレースオーダで発行する。さらに、ホームエージェントHAは、LLC1に対してラインフィルバッファの割当を要求するライン割当オーダを発行する。

0090

図13において、図示されていないが、事前にホームエージェントHAは、アイドル状態識別回路からどのクラスタがアイドル状態か(LLC開放状態)を通知されている。

0091

次に、クラスタCL0内のあるコアがLLC0にメモリ要求を発行し、LLC0がキャッシュミスし、ホームエージェントのHAパイプラインに対してメモリ要求を発行する(S12)。このメモリ要求に応答して、HAパイプラインは、メモリ要求のアドレスに基づきLLCタグコピーを検索してキャッシュミスし、LLC1がそのアドレスのデータを所有していないことを検出する(S12_1)。そのため、HAパイプラインは、メモリコントローラMCにメモリ要求のアドレスでフェッチ要求を発行し(S12_2)、メモリからデータを読み出すよう制御する。この時、HAパイプラインは、LLCタグコピーからLLC0のヴィクティムラインのインデックス番号(またはアドレス)を検出する。

0092

次に、HAパイプラインは、クラスタCL1がアイドル状態でLLC1が開放状態であることを通知されているため、通常行うメモリ要求の要求元であるLLC0へのリプレースオーダの発行を行う前に、LLC1に対してライン割当オーダを発行し(S13)、LLC1にラインフィルバッファLFB内のバッファの割当を要求する。これに応答して、LLC1のLLCパイプラインは、ラインフィルバッファの割当に成功すると、割当完了を示すACKを有するライン割当応答をHAパイプラインに返信する(S13_1)。LLC1のLLCパイプラインは、ラインバッファを割り当てる際、LLC0のヴィクティムラインをフィルする予定のLLC1内のキャッシュラインのウエイ番号を検出し、そのアドレスに対応させてラインフィルバッファを割り当てる。

0093

HAパイプラインは、この返信を待って、LLC0に転送付きリプレースオーダを発行し(S14)、LLC0のLLCパイプラインにヴィクティムラインを吐き出させ、クラスタCL1のLLC1に転送するよう制御する。

0094

同時に、HAパイプラインは、LLC1にリプレースオーダを発行し(S15)、LLC1に、LLC0のヴィクティムラインをフィルする予定のキャッシュライン(第2のヴィクティムライン)を吐き出すよう制御する。これに応答して、LLC1のLLCパイプラインは、上記第2のヴィクティムラインを吐き出すリプレース応答を返信する(S15_1)。そして、HAパイプラインは、吐き出されたデータがダーティであれば、メモリコントローラにライトバック要求を発行し(S15_2)、メモリへのライトバックを行わせる。

0095

一方、転送付きリプレースオーダS14に応答して、LLC0はLLC0のヴィクティムラインを吐き出し、LLC1にLLC0のヴィクティムラインのデータを転送する(S14_1)。このヴィクティムラインのインデックスまたはアドレスは、転送付きリプレースオーダに含まれている。そして、LLC1のラインフィルバッファLFBは、転送されてきたヴィクティムラインのデータを一旦割り当てられたラインフィルバッファに格納し、LLC1のLLCパイプラインがLLC0のヴィクティムラインのデータをLLC1の第2のヴィクティムラインにフィル(登録)する(S14_3)。また、LLC0は、転送付きリプレースオーダに対する転送完了通知(転送付きリプレース応答)をホームエージェントに返信する(S14_2)。

0096

その後、メモリコントローラがHAパイプラインとLLC0のLLCパイプラインにフェッチ要求S12_2に対するデータ応答を返信する(S12_3,S12_4)。クラスタCL0のLLC0は、ラインフィルバッファLFBのラインフィルバッファにデータ応答のデータを一旦格納し、LLCパイプラインがLLC0のヴィクティムラインにデータをフィル(登録)する(S12_5)。このラインフィルバッファは、最初にLLC0のLLCパイプラインがメモリ要求を発行するとき、既に割当済みである。

0097

図14において、クラスタCL1のLLC1のLLCパイプラインは、ライン割当オーダS13に応答してラインフィルバッファの割当を試みるが、ラインフィルバッファLFB内のバッファ数は有限個であるため、割当できない場合がある。その場合、LLC1のLLCパイプラインは、割当失敗を意味するNACKを有するライン割当応答をホームエージェントに返信する(S13_1)。

0098

HAパイプラインは、ライン割当応答がNACKだったことから、LLC0のヴィクティムラインをLLC1に転送することはできないと判断し、LLC0にリプレースオーダを発行し(S16)、LLC0にヴィクティムラインを吐き出すよう制御する。それに応答して、LLC0は、ヴィクティムラインのデータを有するリプレース応答をHAパイプラインに返信する(S16_1)。そして、HAパイプラインは、そのデータがダーティであれば、メモリコントローラにライトバック要求を発行する(S16_2)。

0099

その後、メモリコントローラがフェッチ要求S12_2に対するデータ応答をHAパイプラインとLLC0とに返信し(S12_3, S12_4)、LLC0が読み出されたデータをヴィクティムラインにフィル(登録)する。この動作は、図13と同じである。

0100

以上のとおり、第1の実施の形態では、ホームエージェントが、メモリ要求した要求元のLLC0に対して転送付きリプレースオーダを発行することで、LLC0にヴィクティムラインを吐き出させ、アイドル状態のクラスタLC1のLLC1にヴィクティムラインのデータを転送させる。さらに、ホームエージェントは、転送付きリプレースオーダに先立って、LLC1にライン割当オーダを発行し、ラインフィルバッファの割当を行わせる。これにより、LLC1は、転送されてきたヴィクティムラインのデータを割り当てられたラインフィルバッファに格納し、キャッシュフィル(登録)する。

0101

[第1の実施の形態の詳細]
図15は、ホームエージェントが所有するLLCタグコピーを示す図である。図15には、一例としてクラスタCL0のLLC0のタグコピーが示されている。LLCタグコピーは、複数のウエイWayについて、インデックスに対応して、タグアドレスと、状態コードとを格納する。タグアドレスは、対応するキャッシュデータメモリ内のデータのアドレスに対応する。状態コードは前述したMESIコードである。

0102

LLCタグコピーは、ヴィクティムビットを格納してもよい。ヴィクティムビットは、前述の転送付きリプレースオーダに応答してLLC0のヴィクティムラインのデータがキャッシュフィルされたLLC1のキャッシュラインであることを示す状態ビットである。例えば、ヴィクティムビットが「1」のキャッシュラインがその後ヴィクティムラインになった場合には、再度、アイドル中の他のクラスタのLLCにデータ転送することを禁止する。

0103

図16は、第1の実施の形態におけるLLC0とLLC1のキャッシュタグメモリとキャッシュデータメモリの例を示す図である。図16に示した例では、メモリ要求を発行したLLC0のヴィクティムラインCLN0が(way n、アドレス(V)、データDATA(V))、LLC0のヴィクティムラインのデータがフィルされるLLC1のキャッシュラインCLN1が(way m、アドレス(W)、データDATA(W))である。以下、第1のヴィクティムラインCLN0、第2のヴィクティムラインCLN1と区別して称する。

0104

前述のとおり、LLC1の第2のヴィクティムラインCLN1はリプレースオーダにより吐き出されメモリにライトバックされ、LLC0の第1のヴィクティムラインCLN0はデータ転送されてLLC1のキャッシュラインCLN1にフィルされ、そして、LLC0の第1のヴィクティムラインCLN0にはメモリコントローラからのデータ応答のデータ(アドレス(A)、データDATA(A))がフィルされる。2つのヴィクティムラインCLN0,CLN1は、ウエイ番号は異なるが、キャッシュインデックスは一致する。つまり、メモリ要求のアドレス(A)と、第1のヴィクティムラインCLN0のアドレス(V)と、第1のヴィクティムラインが登録される第2のヴィクティムラインCLN1のアドレス(W)の下位ビットは同じであり、よって、同じキャッシュインデックスのキャッシュラインに格納される。

0105

図17は、第1の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。図17では、クラスタCL0のLLC0がLLCタグTAG1-LLC0を、クラスタCL1のLLC1がLLCタグTAG1-LLC1を所有する。そして、HAパイプラインが、それらのLLCタグコピーTAG2-LLC0, TAG2-LLC1を所有する。LLC1のタグTAG1-LLC1のみ状態コードがM(Modify)になっている。図17では、図16の例に基づいて、各要求やオーダのアドレスやウエイ番号を示し、また、タグの状態コードやホームエージェントHAのHAパイプラインの回路資源についても説明しながら、図13の動作を説明する。

0106

クラスタCL0のコアが発行したアドレス(A)のデータ要求に応答して、LLC0のLLCパイプラインがキャッシュミスし、HAパイプラインにメモリ要求MEM-RQを発行する(S12)。このメモリ要求MEM-RQは、LLC0内のキャッシュ登録先のウエイ(n)と、メモリのアドレス(A)を有する。

0107

HAパイプラインは、ムーブインポートMIP経由で入力されたメモリ要求に応答して、LLCタグコピーTAG2-LLC0、TAG2-LLC1を検索し、アドレス(A)に対しては他のどのクラスタも所持していないこと、LLC0内の第1のヴィクティムラインにはアドレス(V)がE状態で登録されていることを検出する(S12_1)。

0108

そこで、HAパイプラインは、アドレス(A)が自CPUのメモリの場合、ロックレジスタLKRでロックを獲得し、メモリコントローラMCにフェッチ要求を発行する(図13のS12_2)。HAパイプラインは、通常このフローでクラスタCL0のLLC0に対してリプレースオーダRPL-ODを発行する。しかし、本実施の形態では、HAパイプラインは、クラスタCL1がアイドル状態である場合、そのクラスタCL1に対してライン割当オーダLN-ALC-OD(第1のヴィクティムラインのアドレス(V)付き)を発行する(S13)。このライン割当オーダLN-ALC-ODは、アイドル状態のLLC1に対して第1のヴィクティムラインを送りつけるラインフィルバッファの確保をラインフィルバッファLFBに要求するオーダである。HAパイプラインは、このフローでロックレジスタLKRにアドレス(A)の要求を登録し、後で使用する可能性があるリプレースバッファRPB,ホームエージェントのオーダロック回路HAOLK-LLC0を予約しておく。クラスタCL1に対してオーダを発行するのでロック回路HAOLK-LLC1にアドレス(V)を登録する。

0109

ライン割当オーダ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から第1のヴィクティムラインを転送する必要性がない場合、LLC1はNACKで応答する。

0110

バッファが割り当てられた場合、LLC1は、LLC1内のどのキャッシュwayをリプレースするかをこのフローS13_2で確定する。このとき確定したLLC1内のwayをway=mとする(図16参照)。LLC1内のway=mのキャッシュラインCLN1には別のデータが登録されている可能性があり、ここでもリプレースが必要になる。つまり、クラスタCL0のLLC0の第1のヴィクティムライン(V)CLN0の転送により追い出されるクラスタCL1のLLC1の第2のヴィクティムライン(W)CLN1が存在する。

0111

ライン割当応答LN-ALC-CPLT(ACKケース)は、アドレス(V)とウエイ(m)と有する。このライン割当応答は、ムーブアウトポートMOP経由でHAパイプラインに入力(投入)される。これに応答して、HAパイプラインは、クラスタCL1のLLC1でラインフィルバッファが割り当てられたか否かを知る(S17)。また、LLC1のウエイ(m)内の第2のヴィクティムラインCLN1にはアドレス(V)が格納されていることも知る。

0112

そこで、HAパイプラインは、クラスタCL0のLLC0に対し転送付きリプレースオーダRPL-TR-ODを発行し(S14)、ウエイ(n)内のアドレス(V)の第1のヴィクティムラインCLN0をクラスタCL1のLLC1に転送するよう要求する。同時に、HAパイプラインは、クラスタCL1のLLC1に対しリプレースオーダRPL-ODを発行し(S15),LLC1のウエイ(m)のアドレス(W)の第2のヴィクティムラインCLN1を吐き出して、LLC0内の第1のヴィクティムライン(V)CLN0の転送用スペース空けるよう要求する。

0113

これらのオーダで、HAパイプラインは、予約済みのオーダ資源HAOLK-LLC0、HAOLK-LLC1、RPBを使用する。HAOLK-LLC1に関しては開放と同時に別のアドレス(W)でロックを取る。すなわち、HAOLK-LLC0はアドレス(V)でRPL-TR-ODをロックし、HAOLK-LLC1はアドレス(W)のRPL-ODをロックする。図示されるとおり、アドレス(W)のステータスが(M)、つまりダーティの場合、メモリへのライトバックが必要となる。そこで予約済みのリプレースバッファRPBをここで使用する。

0114

リプレースオーダRPL-ODに応答して、クラスタCL1のLLC1は、第2のヴィクティムラインCLN1のリプレース処理を行い(S15_3)、そのダーティなデータをホームエージェントHAのリプレースバッファRPBにリプレース応答RPL-CPLTで転送する(S15_1)。

0115

一方、転送付きリプレースオーダRPL-TR-ODを受け付けたクラスタCL0のLLC1のパイプラインは、アドレス(V)の第1のヴィクティムラインCLN0を、クラスタCL1のLLC1のラインフィルバッファLFBに転送する(S14_1)。同時に、リプレース応答RPL-CPLTをホームエージェントHAに返信する。MOP経由でリプレース応答を受け付けたHAパイプラインは、HAOLK-LLC0の解除とともに、LLCタグコピー部にアドレス(V)をVictim bit付きで登録する(S15_4)。Victim bitとは、次にこのキャッシュラインがリプレース対象となったとき他のアイドル状態のクラスタに再び転送されるのを防ぐフラグ情報である。

0116

図17には示されていないが、その後、ロックレジスタLKRは、メモリに発行したフェッチ要求に対するデータ応答が戻り次第開放され、メモリ要求の要求元のクラスタCL0のラインフィルバッファLFBにデータ応答が転送される。

0117

図18は、メモリ要求を受け付けたHAパイプラインが、ライン割当オーダLN-ALC-ODを発行する条件を示すフローチャート図である。HAパイプラインは、LLCタグコピーを参照してメモリ要求のヴィクティムラインのヴィクティムビットが「0」であることと(S20のYES)、LLC開放信号「1」が1つ以上あることと(S21のYES)、リプレースバッファRPBが1個、オーダロック回路HAOLKが2個のハードウエア資源が確保可能であること(S22のYES)が満たされた場合に、ライン割当要求LN-ALC-ODを発行する。その場合、HAパイプラインは、ヴィクティムラインを転送する対象のLLCを、LLC開放信号が「1」のLLCの中から、所定のアルゴリズムで選択する(S23)。アルゴリズムは、例えば、ランダムに選択、ラウンドロビンで選択、LRU(Least Recent Used)で選択などである。上記の条件が1つでも満たされなければ、ヴィクティムラインの転送を行わず、通常のリプレースオーダRPL-ODをメモリ要求を発行したLLC0に発行する。

0118

[第2の実施の形態]
図19は、第2の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。第2の実施の形態では、ホームエージェントHAが、転送されるヴィクティムラインを受け入れる専用のラインフィルバッファ(ヴィクティムライン用バッファ)を有する。それに伴い、HAパイプラインは、第1の実施の形態のように、LLC1に対してラインフィルバッファの割当を要求するライン割当オーダを発行することは行わない。そして、HAパイプラインは、第1の実施の形態と同様に、LLC0に対するリプレースオーダを転送付きリプレースオーダRPL-TR-ODで発行する(S14)。このオーダに応答して、LLC0が第1のヴィクティムラインをLLC1に転送し(S14_1)、LLC1は転送される第1のヴィクティムラインのデータを専用のバッファで受け入れて、第2のヴィクティムラインにキャッシュフィルする(S14_3)。それ以外は、第1の実施の形態と同じである。

0119

[第3の実施の形態]
図20は、第3の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。第3の実施の形態では、HAパイプラインがLLC0に対し第1のヴィクティムラインについて通常のリプレースオーダを発行する(S32)。これに応答して、LLC0はリプレース応答をHAパイプラインに返信する(S32_1)。ホームエージェントHAは、リプレース応答で返信された第1のヴィクティムラインのデータをリプレースバッファRPBに格納する。

0120

その後、HAパイプラインは、LLC1に対しライン割当オーダを発行し(S34)、LLC1に第1のヴィクティムラインのデータを受け入れるラインフィルバッファの割当を要求する。LLC1は、それに応答してラインフィルバッファを割り当てて、ライン割当応答をホームエージェントHAに返信する(S34_1)。

0121

その後、HAパイプラインは、第1の実施の形態と同様に、LLC1に対してリプレースオーダを発行し(S15)、LLC1内の第2のヴィクティムラインCLN1に対するリプレース処理を要求する。そして、HAパイプラインは、リプレース応答を受信する(S15_1)。

0122

その後、HAパイプラインは、LLC1に対して、リプレースバッファのデータを添付したデータ転送オーダを発行し(S35)、LLC1にデータをキャッシュフィルさせる(S35_1)。

0123

その後の動作は、第1の実施の形態と同様である。

0124

[第4の実施の形態]
図21は、第4の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。第4の実施の形態の動作を概略すると、まず、HAパイプラインがLLC0に対し第1のヴィクティムラインについて通常のリプレースオーダを発行する(S32)。これに応答して、LLC0はリプレース応答をHAパイプラインに返信する(S32_1)。そして、HAパイプラインは、メモリコントローラMCにライトバック要求を発行し(S32_2)、LLC0の第1のヴィクティムラインのデータをメモリにライトバックさせる。

0125

さらに、HAパイプラインが、アイドル状態のクラスタCL1のLLC1にフェッチ要求の発行オーダを発行し(S31)、LLC1にLLC0の第1のヴィクティムラインのアドレス(V)のメモリ要求を発行するよう要求する。それに応答して、LLC1がホームエージェントHAにアドレス(V)のメモリ要求を発行する(S31_2)。この時、LLC1はラインフィルバッファを割り当てる。これに応答して、ホームエージェントHAは、メモリコントローラにアドレス(V)のフェッチ要求を発行する(S31_3)。

0126

そして、HAパイプラインが、LLC1に対して、第2のヴィクティムラインCLN1のリプレースオーダを発行し(S33)、LLC1に第2のヴィクティムラインCLN1をリプレースするよう要求する。

0127

その後、メモリコントローラが、フェッチ要求S31_3に対するデータ応答を返信し(S31_4, S31_5)、LLC1がデータ応答された第1のヴィクティムラインのアドレス(V)のデータをフィルする(S31_6)。

0128

第4の実施の形態では、上記のように、LLC0の第1のヴィクティムラインをLLC1に転送する手段として、LLC0に対する通常のリプレースオーダと、LLC1に対するメモリ要求の発行オーダを利用する。そして、LLC1は、第1のヴィクティムラインのアドレス(V)についてメモリ要求を発行し、そのデータをデータ応答で受信し、第2のヴィクティムラインにキャッシュフィルする。以下、具体的な動作を説明する。

0129

クラスタCL0がキャッシュミスし、新規のメモリ要求1をホームエージェントHAに発行する(S12)。ホームエージェントHAは、LLCタグコピーを参照し、いずれのLLCも所持しない場合、メモリコントローラにフェッチ要求1を発行する(S12-2)。

0130

ここでアイドル状態のクラスタが存在する場合、ホームエージェントHAは、そのクラスタに向けてフェッチ要求の発行オーダFET-RE−ODを発行する(S31)。図21ではクラスタCL1がアイドル状態である。フェッチ要求の発行オーダは、単なるラインフィルバッファの割当オーダではなく、フェッチ要求をホームエージェントHAに対して発行することを要求するオーダである。フェッチ要求の発行オーダに応答して、クラスタCL1のLLCパイプラインは、LLC0のヴィクティムラインのアドレス(V)に対する新規のメモリ要求を生成し、入力ポート(LLC-MIPまたはLLC-ODP)にセットする。

0131

LLC1は、フェッチ要求発行オーダの応答FET-RQ-CPLTをホームエージェントHAに返信する(S31_1)。但し、これは制御上必須ではなく省略可能である。例えばフェッチ要求の発行オーダS31で渡されたアドレス(V)を既にLLC1が保有していた場合は、この応答はNACKになるが、このとき後続のメモリリ要求2(S31_2)が発行されなくなるだけである。但し、フェッチ要求発行オーダの応答FET-RQ-CPLTを、ホームエージェントHAがフェッチ要求の発行オーダS31の発行数を制御するのに使用することができる。

0132

LLC1のポートにセットされたメモリ要求が、LLC1のLLCパイプラインを流れ、新規メモリ要求としてラインフィルバッファをラインフィルバッファLFBで獲得し、メモリ要求2を発行する(S31_2)。その後の動作は、前述したとおりである。

0133

上記のとおり、第4の実施の形態では、ホームエージェントHAが発行するフェッチ要求の発行オーダS31を除くと、通常の新規メモリ要求がクラスタCL0とクラスタCl1からそれぞれ発行され、通常のリプレースオーダがホームエージェントHAからクラスタCL0とクラスタCL1のLLC0,LLC1に発行されるだけである。

0134

第4の実施の形態によれば、既存の要求やオーダを利用して実現できる。

0135

以上の実施の形態をまとめると,次の付記のとおりである。

0136

(付記1)
それぞれ演算器を有する複数のコアと、前記複数のコアに共有されるラストレベルキャッシュとをそれぞれ備える複数のクラスタと、
前記複数のクラスタがそれぞれ備えるラストレベルキャッシュに接続されたホームエージェントと、
前記ホームエージェントに接続されメモリとのアクセスを制御するメモリコントローラとを有し、
前記ホームエージェントは、前記複数のクラスタのいずれかの第1のクラスタ内の第1のラストレベルキャッシュから供給されるメモリ要求に応答して、
前記第1のラストレベルキャッシュに第1のリプレース要求を発行して、前記第1のラストレベルキャッシュに前記第1のラストレベルキャッシュ内の第1のヴィクティムラインをエヴィクションさせ、
前記第1のクラスタ以外のアイドル状態の第2のクラスタ内の第2のラストレベルキャッシュに第2のリプレース要求を発行して、前記第2のラストレベルキャッシュに前記第2のラストレベルキャッシュ内の第2のヴィクティムラインをエヴィクションさせ、
前記第2のラストレベルキャッシュは、前記第1のヴィクティムラインのデータを前記第2のヴィクティムラインにキャッシュフィルする、演算処理装置。

0137

(付記2)
前記第1のラストレベルキャッシュは、前記第1のリプレース要求に応答して、前記第2のラストレベルキャッシュに前記第1のヴィクティムラインのデータを転送する、付記1に記載の演算処理装置。

0138

(付記3)
前記ホームエージェントは、さらに、
前記第2のラストレベルキャッシュにライン割当要求を発行して、前記第2のラストレベルキャッシュにラインフィルバッファを割当させる、付記2に記載の演算処理装置。

0139

(付記4)
前記ラストレベルキャッシュは、他のラストレベルキャッシュから転送されるヴィクティムラインのデータを格納するヴィクティムライン用バッファを有し、
前記第2のラストレベルキャッシュは、前記第1のラストレベルキャッシュが転送する前記第1のヴィクティムラインのデータを前記ヴィクティムライン用バッファに格納し、前記第1のヴィクティムラインのデータをキャッシュフィルする、付記2に記載の演算処理装置。

0140

(付記5)
前記ホームエージェントは、第1のリプレース要求に応答して前記第1のラストレベルキャッシュからエヴィクションされた前記第1のヴィクティムラインのデータをリプレースバッファに格納し、
前記ホームエージェントは、前記リプレースバッファに格納した前記第1のヴィクティムラインのデータを、前記第2のラストレベルキャッシュに転送する、付記1に記載の演算処理装置。

0141

(付記6)
前記ホームエージェントは、さらに、
前記第2のラストレベルキャッシュに前記第1のヴィクティムラインのデータをフェッチするフェッチ要求の発行要求を発行して、前記第2のラストレベルキャッシュに前記フェッチ要求を前記ホームエージェントに発行させ、
前記ホームエージェントは、前記第2のラストレベルキャッシュから送信される前記フェッチ要求に応答して、前記メモリコントローラに前記第1のエヴィクションラインのデータのフェッチ要求を発行し、
前記メモリコントローラは、前記第2のラストレベルキャッシュに、前記フェッチ要求に対応するデータ応答を送信し、
前記第2のラストレベルキャッシュは、前記データ応答により、前記第1のヴィクティムラインのデータを受信する、付記1に記載の演算処理装置。

0142

(付記7)
前記ホームエージェントは、前記複数のクラスタがアイドル状態か否かを識別するアイドル状態識別回路を有する、付記1に記載の演算処理装置。

0143

(付記8)
前記アイドル状態識別回路は、前記複数のクラスタそれぞれの全コアがオフラインまたはサスペンド状態に所定の頻度以上なった場合に、当該クラスタがアイドル状態であると判定するアイドル状態判定回路と、前記アイドル状態が所定時間以上継続した場合に、当該クラスタのラストレベルキャッシュが開放状態と判定するアイドル状態持続監視回路とを有する、付記7に記載の演算処理装置。

0144

(付記9)
それぞれ演算器を有する複数のコアと前記複数のコアに共有されるラストレベルキャッシュとをそれぞれ有する複数のクラスタと、前記複数のクラスタのラストレベルキャッシュに接続されたホームエージェントと、前記ホームエージェントに接続されメモリとのアクセスを制御するメモリコントローラとを有する演算処理装置の制御方法であって、
前記ホームエージェントは、前記複数のクラスタのいずれかの第1のクラスタ内の第1のラストレベルキャッシュから供給されるメモリ要求に応答して、
前記第1のラストレベルキャッシュに第1のリプレース要求を発行して、前記第1のラストレベルキャッシュに前記第1のラストレベルキャッシュ内の第1のヴィクティムラインをエヴィクションさせ、
前記第1のクラスタ以外のアイドル状態の第2のクラスタ内の第2のラストレベルキャッシュに第2のリプレース要求を発行して、前記第2のラストレベルキャッシュに前記第2のラストレベルキャッシュ内の第2のヴィクティムラインをエヴィクションさせ、
前記第2のラストレベルキャッシュは、前記第1のヴィクティムラインのデータを前記第2のヴィクティムラインにキャッシュフィルする、演算処理装置の制御方法。

0145

(付記10)
前記第1のラストレベルキャッシュは、前記第1のリプレース要求に応答して、前記第2のラストレベルキャッシュに前記第1のヴィクティムラインのデータを転送する、付記9に記載の演算処理装置の制御方法。

0146

(付記11)
前記ホームエージェントは、さらに、
前記第2のラストレベルキャッシュに前記第1のヴィクティムラインのデータをフェッチするフェッチ要求の発行要求を発行して、前記第2のラストレベルキャッシュに前記フェッチ要求を前記ホームエージェントに発行させ、
前記ホームエージェントは、前記第2のラストレベルキャッシュから送信される前記フェッチ要求に応答して、前記メモリコントローラに前記第1のエヴィクションラインのデータのフェッチ要求を発行し、
前記メモリコントローラは、前記第2のラストレベルキャッシュに、前記フェッチ要求に対応するデータ応答を送信し、
前記第2のラストレベルキャッシュは、前記データ応答により、前記第1のヴィクティムラインのデータを受信する、付記10に記載の演算処理装置の制御方法。

0147

CPU:演算処理装置、プロセッサ
CL: Cluster、クラスタ
LLC: Last level Cache、ラストレベルキャッシュ
HA: Home Agent、ホームエージェント
MC: Memory Controller、メモリコントローラ
MEM: Memory、メモリ、メインメモリ
LRT: Local Router、ローカルルータ
MIP:ムーブインポート
ODP:オーダポート
10:要求入力部(回路)
12:HAパイプライン処理部(回路)
14:LLCタグ部(キャッシュ)
16:LLCデータ部(キャッシュ)
LFB:ラインフィルバッファ
MOP:ムーブアウトポート
20:要求入力部(回路)
22:HAパイプライン処理部(回路)
24:アイドル状態識別回路
26、28: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: 転送付きリプレースオーダ応答

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ