JP2017027324A - 演算処理装置及び演算処理装置の制御方法 - Google Patents

演算処理装置及び演算処理装置の制御方法 Download PDF

Info

Publication number
JP2017027324A
JP2017027324A JP2015144509A JP2015144509A JP2017027324A JP 2017027324 A JP2017027324 A JP 2017027324A JP 2015144509 A JP2015144509 A JP 2015144509A JP 2015144509 A JP2015144509 A JP 2015144509A JP 2017027324 A JP2017027324 A JP 2017027324A
Authority
JP
Japan
Prior art keywords
last level
level cache
llc
data
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015144509A
Other languages
English (en)
Other versions
JP6451538B2 (ja
Inventor
石井 寛之
Hiroyuki Ishii
寛之 石井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015144509A priority Critical patent/JP6451538B2/ja
Priority to US15/193,164 priority patent/US10545870B2/en
Publication of JP2017027324A publication Critical patent/JP2017027324A/ja
Application granted granted Critical
Publication of JP6451538B2 publication Critical patent/JP6451538B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements

Abstract

【課題】分割されたLLC(ラストレベルキャッシュ)を有効に利用する情報処理装置を提供する。【解決手段】それぞれ演算器を有する複数のコアと複数のコアに共有されるLLCとをそれぞれ有する複数のクラスタと、複数のクラスタのLLCに接続されたホームエージェントと、ホームエージェントに接続されメモリとのアクセスを制御するメモリコントローラとを有する。ホームエージェントは、第1のクラスタ内の第1のLLCから供給されるメモリ要求に応答して、第1のLLCに第1のリプレース要求を発行して、第1のLLC内の第1のヴィクティムラインをエヴィクションさせ、第1のクラスタ以外のアイドル状態の第2のクラスタ内の第2のLLCに第2のリプレース要求を発行して、第2のLLC内の第2のヴィクティムラインをエヴィクションさせる。第2のLLCは、第1のヴィクティムラインのデータを第2のヴィクティムラインにキャッシュフィルする。【選択図】図12

Description

本発明は,演算処理装置及び演算処理装置の制御方法に関する。
演算処理装置(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は最大のパフォーマンスを発揮する。
以下の特許文献には、マルチプロセッサ間でそれぞれに割り当てられるキャッシュ容量を動的に変更することが記載されている。
特開平08−137749号公報
しかしながら、LLCを分割するといくつかの問題が生じる。例えば、各コアによって実行されるアプリケーションプログラムが利用できるキャッシュは、分割されたLLCの容量を超えることが困難になる。一般に、あるコアから自分のクラスタ以外のクラスタ内のLLCにキャッシュラインを新規に登録することはできない。そのため、あるスレッドからみたLLCの容量は、分割されたLLCの容量に限定される。
さらに、LLCを分割した構成の場合、クラスタ内の全てのコアがサスペンドまたは非アクティブ状態になると、クラスタ内のLLCは有効に利用されない。一方、全コアが単一のLLCを共有する構成の場合、一部のコアがサスペンドまたは非アクティブであっても、残りのアクティブなコアが全LLCを利用可能であり、一部のLLCが有効に利用されないことはない。
また、コア単位でソフトウエアの起動権利を購入して、アクティブ状態にするコア数を増減することができるプロセッサの場合、クラスタ内の全コアが非アクティブ状態になるとそのクラスタ内のLLCは全く利用されない。
そこで,実施の形態の第1の側面の目的は,分割されたLLCを有効に利用する情報処理装置及び演算処理装置の制御方法を提供することにある。
実施の形態の第1の側面は,それぞれ演算器を有する複数のコアと、前記複数のコアに共有されるラストレベルキャッシュとをそれぞれ備える複数のクラスタと、
前記複数のクラスタがそれぞれ備えるラストレベルキャッシュに接続されたホームエージェントと、
前記ホームエージェントに接続されメモリとのアクセスを制御するメモリコントローラとを有し、
前記ホームエージェントは、前記複数のクラスタのいずれかの第1のクラスタ内の第1のラストレベルキャッシュから供給されるメモリ要求に応答して、
前記第1のラストレベルキャッシュに第1のリプレース要求を発行して、前記第1のラストレベルキャッシュに前記第1のラストレベルキャッシュ内の第1のヴィクティムラインをエヴィクションさせ、
前記第1のクラスタ以外のアイドル状態の第2のクラスタ内の第2のラストレベルキャッシュに第2のリプレース要求を発行して、前記第2のラストレベルキャッシュに前記第2のラストレベルキャッシュ内の第2のヴィクティムラインをエヴィクションさせ、
前記第2のラストレベルキャッシュは、前記第1のヴィクティムラインのデータを前記第2のヴィクティムラインにキャッシュフィルする、演算処理装置である。
第1の側面によれば,分割されたLLCを有効に利用できる。
全コアが単一のLLCを共有する演算処理装置(CPU、プロセッサ)の構成を示す図である。 本実施の形態における演算処理装置の構成を示す図である。 複数の演算処理装置(プロセッサチップ)間の構成を示す図である。 ホームエージェントによるキャッシュコピーバック動作の一例を示す図である。 LLCでキャッシュミスした後のメモリ要求の動作の一例を示す図である。 本実施の形態におけるプロセッサCPUの構成例を示す図である。 LLCとHAの具体的な構成例を示す図である。 主な要求とオーダの図表である。 サスペンド検出回路の構成を示す図である。 アイドル状態識別回路24の概略構成を示す図である。 あるクラスタNのアイドル状態を検出するアイドル状態識別回路の構成を示す図である。 本実施の形態におけるメモリ要求に対するホームエージェントの動作の概略を示す図である。 第1の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。 第1の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。 ホームエージェントが所有するLLCタグコピーを示す図である。 第1の実施の形態におけるLLC0とLLC1のキャッシュタグメモリとキャッシュデータメモリの例を示す図である。 第1の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。 メモリ要求を受け付けたHAパイプラインが、ライン割当オーダLN-ALC-ODを発行する条件を示すフローチャート図である。 第2の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。 第3の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。 第4の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。
図1は、全コアが単一のLLCを共有する演算処理装置(CPU、プロセッサ)の構成を示す図である。図1のプロセッサCPUは、24個のコアCoreが単一のLLCを共有する。そして、LLCには4つのメモリコントローラMC0-MC3が接続され、それぞれのメモリコントローラMC0-MC3は対応するメモリMEM0-MEM3へのメモリアクセスを制御する。
コアは、たとえば、命令デコーダ(図示せず)と、デコードした命令に基づいて演算を行う演算器(図示せず)と、第1レベルのキャッシュ(L1命令キャッシュとL1データキャッシュ)とを有する。コアは、メモリ内のデータを読み出す命令に応答してL1データキャッシュにメモリ要求を発行し、L1データキャッシュでキャッシュミスした場合、LLCにメモリ要求を発行する。
LLCは、コアからのメモリ要求に応答して、キャッシュタグを検索してキャッシュヒットすれば、コアにデータを応答するデータ応答を返信し、キャッシュミスすれば、メモリコントローラMC0-MC3のいずれかにフェッチ要求を出力し、外部のメインメモリ(図示せず)にメモリアクセスさせデータを読み出させる。そして、メモリコントローラは、読み出したデータをLLCに返信するデータ応答を返信するとともに、コアにもデータ応答する。
プロセッサCPUのチップサイズが大きくなりLLCが大容量になると、たとえば、左端のコアCoreがメモリ要求を出力し、LLCでキャッシュヒットしてLLC内の右端のキャッシュメモリから読み出しデータが応答される場合、ヒットレイテンシは長くなる。
[実施の形態における演算処理装置]
図2は、本実施の形態における演算処理装置の構成を示す図である。図2のプロセッサCPUは、32個のコアCoreを8個ずつの4つのグループに分割し、8個のコアグループがそれぞれ単一のLLCを共有する。すなわち、図2のプロセッサは、8個のコアCoreと単一のLLCをそれぞれ有する4つのクラスタCL0-CL3を有する。
さらに、プロセッサは、4つのクラスタ間のデータなどの転送を行うローカルルータLRTと、ホームエージェントHAを有する。ホームエージェントHAは、例えば4つのクラスタ間のメモリデータの整合性をとるメモリコヒーレンシ制御などを行う。ホームエージェントの構成と動作については後で詳述する。そして、ホームエージェントHAには、メモリコントローラMC0-MC3が接続され、プロセッサチップに接続された外部のメインメモリMEM0-MEM3にアクセスすることができる。メモリコントローラの数は1つでもよいが、複数にすることでメインメモリへのアクセスのスループットを上げることができる。
図2に示すとおり、本実施の形態におけるプロセッサは、LLCを複数に(例えば4個に)分割し、複数のコアも同様に複数に(例えば4グループに)分割し、分割されたコアグループそれぞれが単一のLLCを共有する。したがって、コアからのメモリ要求がLLCでヒットしたときのレイテンシが短くなる。
図3は、複数の演算処理装置(プロセッサチップ)間の構成を示す図である。図3には、4つのプロセッサチップCPU0-CPU3が、CPU間バスでそれぞれ接続される。具体的には、各プロセッサチップ内のホームエージェントHAに内蔵されたまたは付属されたインターコネクト回路(図示せず)を介して、CPU間バスが接続される。これにより、4つのプロセッサチップCPU0-CPU3それぞれのホームエージェントHAは、他のプロセッサチップのホームエージェントとデータの転送などを行う。
コアからのメモリ要求は、アドレスによって、メモリ要求を発行したコアのプロセッサが管理するローカルメモリの場合や、他のプロセッサCPUが管理するリモートメモリの場合がある。ホームエージェントHAは、このような様々なアドレスのメモリ要求について、システム全体のコヒーレンシを制御し、LLCのタグのコピーを有することでLLCに対するスヌープを不要とするためプロセッサチップ内のバスのトラフィックを削減する。特に、ホームエージェントHAは、メニーコアプロセッサによる大規模システムで有効な構成の一つである。
以下、説明を分かりやすくする目的で、LLCからホームエージェントHAへの要求を要求(またはリクエスト)と称し、ホームエージェントからLLCへの要求をオーダと称する。要求もオーダも、相手にある処理を求める要求であり、要求(またはリクエスト)とオーダは単に方向が逆になっているだけである。請求項では、要求(またはリクエスト)とオーダを区別せず、いずれも要求と称する。
[キャッシュコピーバック]
図4は、ホームエージェントによるキャッシュコピーバック動作の一例を示す図である。ホームエージェントHAは、キャッシュメモリ階層外に設けられるパイプライン制御回路であり、前述したとおり分割された複数のLLC間のコヒーレンシ制御が主な動作である。したがって、ホームエージェントHAは、全てのLLCのキャッシュタグのコピーを有し、LLCでミスしたメモリ要求を受信し、チップ内の他のLLCがデータ(または命令コード)を所持しているか否かをLLCタグコピーを参照して調べる。ホームエージェントは、データを所持しているLLCが存在する場合LLC間転送を行い、存在しない場合メモリに対してメモリ要求(フェッチ要求)を発行する。
具体的には、図4に示されるとおりである。図4の例では、前提としてプロセッサチップが2つのクラスタ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の利用効率の低下例]
図5は、LLCでキャッシュミスした後のメモリ要求の動作の一例を示す図である。前提として、クラスタCL0内のコア(図示せず)がLLC0にメモリ要求を発行し、クラスタCL0のLLC0がキャッシュミスし、メインメモリにフェッチ要求し、それに対するデータ応答のデータをキャッシュフィルするものとする。また、クラスタCL1内の全てのコアが非活性状態またはサスペンド状態で、クラスタCL1がアイドル状態であるとする。
図4と同様に、クラスタ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)。
図5の一般的なメモリ要求において、クラスタCL1がアイドル状態でクラスタCL1内のLLC1が使用されていないにもかかわらず、メモリ要求を発行したLLC0内のヴィクティムラインのデータは、外部メモリにライトバックされる。そのため、クラスタCL0のLLC0がその後、リプレースされたヴィクティムラインのデータをメモリ要求した場合、その要求されたデータはメモリへのフェッチ要求により取得されなければならない。
このような状況が、LLCを複数に分割した場合にLLCの全容量が有効に利用されない状況の例である。本実施の形態では、このようなLLCの利用効率の低下を抑制するために、ホームエージェントHAは、LLC0のリプレース対象のヴィクティムラインのデータがアイドル状態のクラスタCL1内のLLC1にキャッシュフィルされるよう制御する。
[LLCとHAの構成]
図6は、本実施の形態におけるプロセッサCPUの構成例を示す図である。図6の例では、プロセッサCPUは、説明を容易にするために、仮に2つのクラスタCL0, CL1を有するものとする。クラスタCL0は、複数のコアCORE0−COREnと、それらのコアが共有する単一のLLC0を有する。クラスタCL1も同様の構成である。
LLC0は、主にコアからの要求を受け付けるムーブインポートMIPと、主にホームエージェントからのオーダを受け付けるオーダポートODPとを有する。さらに、LLC0は、LLCパイプライン12と、LLCデータ部14と、LLCタグ部16と、ラインフィルバッファLFBとを有する。
LLCパイプライン12は、コアからのメモリ要求のアドレスについてキャッシュタグを検索しヒット判定し、ヒットの場合コアにデータ応答し、ミスの場合ホームエージェントにメモリ要求を発行する。LLCデータ部14はLLCのキャッシュデータメモリであり、LLCタグ部16はキャッシュタグメモリである。
ラインフィルバッファLFBは、LLC0がメモリ要求を発行した場合、その後メインメモリ、他のLLC1、他のCPUのHAから供給されるデータを、キャッシュメモリに書き込む前に一時的に格納するフィルデータ保持用のデータバッファである。このデータバッファに格納されたデータは、その後キャッシュラインにフィルされる。ラインフィルバッファLFBは、ムーブインバッファと呼ばれることもある。LLC1も同様の構成である。
ローカルルータLRTは、クラスタCL0, CL1とホームエージェントHA間を接続するオンチップネットワークである。
一方、ホームエージェントHAは、主にLLCからの要求を受け付けるムーブインポートMIPと、主にLLCからのオーダ応答を受け付けるムーブアウトポートMOPとを有する。さらに、ホームエージェントHAは、HAパイプライン22と、全てのクラスタのタグコピー26、28を有する。
HAパイプライン22は、たとえば、クラスタCL0のLLC0から発行されたメモリ要求のアドレスに基づいて、LLCタグコピーを検索し、他のクラスタCL1のLLC1が要求されているキャッシュラインを持っているか否かをチェックする。また、タグの状態に応じてクラスタ間のキャッシュライン転送制御や、外部のメモリに対するライトバックやメモリに対するフェッチ要求またはストア要求や、他のプロセッサに対する要求の発行などを行う。また、HAパイプライン22は、プロセッサチップ内または複数プロセッサチップを有するシステム全体のキャッシュコヒーレンシを制御するために、LLCタグコピーに適切な状態遷移を記録する。状態遷移は、例えば、MESI制御の状態(Modified, Exclusive, Share, Invalid)などである。LLCタグコピー26,28は、全てのクラスタのLLCのキャッシュラインのアドレス、バリッドビット、状態を保持する。
ホームエージェントHAは、2つのロック回路を有する。第1に、ロックレジスタLKRは、LLCから発行されたメモリ要求に対し、要求されているアドレスのデータがいずれのLLCにも存在しない場合、メモリにフェッチ要求などを発行する。さらに、ロックレジスタは、要求対象のアドレス毎にロックを取り、その後同じアドレスに対する要求が発行されないようにする。
第2に、HAオーダロック回路HAOLKは、ホームエージェントHAがLLCに対してオーダを発行する際に、オーダのアドレスに基づいてロックを取得し、同じアドレスで重複してオーダが発行されないように制御する。
リプレースバッファRPBは、LLCがメモリ要求についてキャッシュミスして新規にデータを登録する際に、新規のデータがフィルされるキャッシュラインの代わりに、LLCから追い出される(エヴィクションされる)ヴィクティムラインのデータをメモリに書き戻す時にデータが一時的に格納されるバッファである。具体的には、ホームエージェントHAがLLCに発行したリプレースオーダに対するリプレース応答のデータが、リプレースバッファRPBに一時的に格納される。そして、メモリコントローラMCを介してメモリにライトバックされる。
CPUインターコネクト回路CPU-ICは、プロセッサチップCPU間を接続するCPU間バスを介して、他のプロセッサチップCPUと接続するための回路である。さらに、ホームエージェントは、各クラスタCL0, CL1がアイドル状態か否かを識別するアイドル状態識別回路24を有する。
図7は、LLCとHAの具体的な構成例を示す図である。前述のとおり、LLCはホームエージェントHAに要求を発行し、ホームエージェントHAはLLCにその要求に対する応答を返信する。逆に、ホームエージェントHAはLLCにオーダを発行し、LLCはホームエージェントHAにオーダの応答を返信する。これらの関係を明らかにするために、図7は、LLCとホームエージェントHAの構成を並べて示す。図7において、LLCとHAとを接続するローカルルータLRTは省略されている。
LLCは、ムーブインポートMIPとオーダポートODPに受け付けられた要求またはオーダのうち、所定の優先度に応じて選択しLLCパイプライン12に投入(入力)する選択回路10を有する。選択回路10は、ラインフィルバッファLFBに入力されたデータ応答も選択してLLCパイプライン12に投入する。
たとえば、LLCパイプライン12は、投入されたコアからのメモリ要求に応答して、メモリ要求のアドレスに基づいてLLCタグ部14を検索しキャッシュヒットをチェックする。キャッシュヒットすれば、LLCデータ部16内のデータを抽出し、コアにデータ応答する。また、LLCパイプライン12は、キャッシュミスすれば、ラインフィルバッファLFB内のバッファをメモリ要求のアドレスに対して割り当てて、ホームエージェントHAに対してメモリ要求MEM-REQを発行する。
メモリ要求に対するデータ応答は、他のクラスタのLLCや、メモリ(メモリコントローラMC)や、他のプロセッサCPUのメモリ若しくはキャッシュから返信され、それらのデータ応答がホームエージェントHA経由でラインフィルバッファLFBに応答される。ラインフィルバッファLFBは、データ応答を受信すると、メモリ要求のアドレスに対応して割当済みのラインフィルバッファにデータを一時的に格納し、データをキャッシュフィル(登録)する要求をLLCパイプライン12に投入し、LLCパイプライン12は、LLCのタグ部14とデータ部16にデータをキャッシュフィルしながら、データ要求したコアにデータ応答を返す。
ホームエージェントHAが発行したオーダをオーダポートODPが受付し、選択回路10が受け付けたオーダをLLCパイプライン12に入力(投入)する。そして、LLCパイプライン12は、オーダを処理し、オーダ応答をホームエージェントHAに返信する。
ホームエージェントHAから発行されるオーダには、例えば、リプレースオーダRPL-ODある。リプレースオーダは、メモリ要求に伴いLLC内のヴィクティムラインの吐き出し(エヴィクション)を要求するオーダである。また、本実施の形態では、ホームエージェントHAが発行するオーダとして、転送付きリプレースオーダRPL-TR-ODを有する。転送付きリプレースオーダは、本実施の形態で追加されたオーダであり、LLC内のヴィクティムラインの吐き出しと同時に、ヴィクティムラインを他のアイドル状態にクラスタのLLCに転送することを要求するオーダである。
さらに、本実施の形態で追加したオーダには、アイドル状態のクラスタ内のLLCに対して、ヴィクティムライン転送用のラインフィルバッファLFBのラインフィルバッファの割当を要求するライン割当オーダLN-ACL-ODがある。さらに、追加したオーダには、アイドル状態のクラスタ内のLLCに対して、メモリに対するフェッチ要求の発行を要求するフェッチ要求の発行オーダFET-RQ-ODがある。
以上のとおり、LLCパイプライン12は、要求やオーダの信号群を処理して新たな要求を発行したりオーダに対する応答を返信したりする制御回路である。LLCタグ部14は、LLCのキャッシュタグメモリであり、LLCデータ部16は、LLCのキャッシュデータメモリである。また、ラインフィルバッファLFBは、データ応答されたフィルデータをキャッシュメモリに書き込む前に一時的に格納するフィルデータ保持用のバッファであり、複数のキャッシュライン分のバッファ数を有する。
一方、ホームエージェントHAは、ムーブインポートMIPに受け付けられた要求またはムーブアウトポートMOPに受け付けられたオーダ応答のうち、所定の優先度に基づいて選択し、HAパイプライン22に投入(入力)する選択回路20を有する。
LLCでのキャッシュミスによるメモリ要求は、ホームエージェントHA内のムーブインポートMIPに受け付けられる。ムーブインポートMIPは、クラスタの数だけ有し、選択回路20がそれぞれに受け付けられたメモリ要求を、HAパイプライン22に入力(投入)する。
HAパイプライン22は、投入されたメモリ要求についてLLCタグコピーを検索し、他のクラスタのLLCタグコピーでヒットした場合、図4のように、ヒットしたLLCにデータを転送する転送オーダを発行する。さらに、HAパイプライン22は、キャッシュミスしたLLCにリプレースオーダを発行して、そのヴィクティムラインを吐き出(エヴィクション)させる。また、ヴィクティムラインがダーティデータの可能性がある場合、HAパイプライン22は、メモリへライトバックを行うためにリプレースバッファを獲得する。キャッシュミスしたLLCからのリプレース応答がムーブアウトポートMOPからHAパイプライン22に流れて、ダーティデータはリプレースバッファRPBに転送され、メモリコントローラMCを介してメモリにライトバックされる。
HAパイプライン22は、他のクラスタのLLCタグコピーでミスした場合、メモリ要求のアドレスに応じて、自分のプロセッサのメモリまたは他のCPUのメモリに対してフェッチ要求を発行する。アドレスが自分のプロセッサのメモリの場合、ロックレジスタLKRのロックを獲得し、ロックレジスタLKR経由でメモリコントローラにフェッチ要求を発行する。アドレスが他のCPUの場合、CPU間インターコネクトCPU-ICに対してフェッチ要求を発行する。自分のメモリやリモートCPUの応答データは、ホームエージェント経由で要求元のクラスタのラインフィルバッファLFBに転送される。他のクラスタのLLCタグコピーでミスした場合も、HAパイプライン22は、キャッシュミスしたLLCにリプレースオーダを発行して、そのヴィクティムラインを吐き出(エヴィクション)させる。
ホームエージェントHA内のアイドル状態識別回路24は、全てのクラスタのアイドル状態を監視し、どのクラスタがアイドル状態かの情報を取得する。そして、LLCでキャッシュミスして発行されたメモリ要求に応答して、HAパイプライン22は、キャッシュミスしたLLCに対してリプレースオーダを発行してヴィクティムラインを吐き出させ、さらに、アイドル状態のクラスタのLLCに対してもリプレースオーダを発行して前述のヴィクティムラインがフィルされるキャッシュラインを吐き出させる。さらに、HAパイプライン22は、アイドル状態のクラスタのLLCにライン割当オーダを発行してラインフィルバッファを割り当てさせ、ヴィクティムラインのデータをアイドル状態のクラスタのLLCに転送するよう種々のオーダを発行する。その結果、アイドル状態のクラスタのLLCは転送されてきたヴィクティムラインのデータを吐き出したキャッシュラインにフィルする。
これにより、アイドル状態のクラスタのLLCが有効に活用され、その後、ヴィクティムラインのデータに対して再度メモリ要求が発行された場合、HAパイプライン22は、アイドル状態のクラスタのLLCに退避させたデータをメモリ要求元のLLCに転送することを要求する転送オーダを、アイドル状態のクラスタのLLCに発行し、図4のように、データ転送させる。
HAパイプライン22は、LLCから発行される要求を処理して、必要なオーダをLLCに発行する。発行されたオーダは、LLCのオーダポートODPに受け付けられ、選択回路10によりLLCパイプライン12に投入(入力)される。そして、LLCのLLCパイプライン12から返信されるオーダ応答は、HA内のムーブアウトポートMOPに受け付けられ、HAパイプライン22に投入される。
[主な要求とオーダ]
図8は、主な要求とオーダの図表である。以下概略を説明する。
メモリ要求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は、フェッチ要求の発行オーダの応答である。
図8には示されていないが、図4で説明した転送オーダもホームエージェントHAがLLCに発行するオーダの一つである。
[アイドル状態識別回路]
本実施の形態では、ホームエージェントHAは、LLC0のリプレース対象のヴィクティムラインのデータがアイドル状態のクラスタCL1内のLLC1にキャッシュフィルされるよう制御する。そのために、ホームエージェントHAは、どのクラスタがアイドル状態か否かを識別するアイドル状態識別回路24を有する。以下、アイドル状態識別回路24について説明する。
図9は、サスペンド検出回路の構成を示す図である。サスペンド検出回路18は、例えば、各クラスタ内に設けられる。または、サスペンド検出回路18は、ホームエージェントHA内に各クラスタ毎に設けられても良い。
サスペンド検出回路18は、クラスタ内に属する全てのスレッドがオフラインまたはサスペンドの場合に、クラスタ内の全てのコアがサスペンド状態であることを示す全コアサスペンド信号ALL_CORE_SUSPENDを出力する。サスペンド検出回路18は、クラスタ内の各スレッドのオフライン信号とサスペンド信号の論理ORをとるORゲート181と、全スレッドのORゲート181の出力の論理ANDをとるANDゲート182とを有する。
サスペンドSUSPENDとは、OSが実行待ちのタスクがなくなった際に実行させるサスペンド命令により遷移するCPUのステータスである。オフラインOFFLINEとは、コアライセンスで非アクティベーション状態などにより起動しない(非アクティブな)コアや、ハードウエア構成として無効となっている状態のコアなどのステータスである。いずれのステータスもLLCを利用しない状態であり、クラスタ内の全てのスレッド(つまりコア)がサスペンド状態またはオフライン状態のANDが取れる状態は、クラスタ内のLLCを利用するコアがいなくなることを示す。
図10は、アイドル状態識別回路24の概略構成を示す図である。アイドル状態識別回路24は、各クラスタの全コアサスペンド信号ALL_CORE_SUSPENDを入力し、各クラスタ毎に、サスペンド状態の比率とアイドル状態の継続時間をチェックし、LLC開放信号を出力する。
図11は、あるクラスタNのアイドル状態を検出するアイドル状態識別回路の構成を示す図である。図10のアイドル状態識別回路24は、図11の回路を全クラスタについて有する。図11のアイドル状態識別回路は、アイドル状態判定回路241と、アイドル状態持続監視回路242と、LLC開放状態保持回路243とを有する。
アイドル状態判定回路241は、全コアサスペンド信号ALL_CORE_SUSPENDの状態「1」と「0」の比率が所定の比率以上である場合に、クラスタ内に属する全コアがアイドル状態であると判定する。全コアサスペンド信号ALL_CORE_SUSPENDの「1」「0」は、単にその瞬間クラスタ内の全てのコアがSUSPENDもしくはOFFLINEであるという意味である。そこで、アイドル状態判定回路241は、基準パルスCLK1を分周比DIVで分周したサンプリングタイミングにおいて、全コアサスペンド信号ALL_CORE_SUSPENDが「1」になる回数から「0」になる回数を減じた回数が基準値TH1を越えた場合に、アイドル状態通知信号S241を「1」にする。
例えば、サンプリングタイミングにおいて全コアサスペンド信号ALL_CORE_SUSPENDが状態「1」のときカウントアップし,「0」のときカウントダウンするアップダウンカウンタを有し、このカウント値が基準値TH1を超えたとき、アイドル状態通知信号S241を「1」にし、開放モードリセット信号RESET信号を「0」にする。逆に、カウント値が基準値TH1以下になると、アイドル状態通知信号S241を「0」にし、開放モードリセットRESET信号を「1」にする。つまり、アイドル状態検知信号S241と開放モードリセット信号RESETは逆相信号である。これにより、アイドル状態通知信号S241は、全コアサスペンド信号の状態「1」の発生頻度が状態「0」の発生頻度より、基準値TH1を越えて多くなったときに、状態「1」になるので、より蓋然性の高いアイドル状態を通知する信号になる。
次に、アイドル状態持続監視回路242は、アイドル状態通知信号S241の状態「1」が所定時間を超えて継続したことを検出して、開放モードセット信号SETの「1」を出力する。但し、アイドル状態通知信号S241が状態「0」になると、即、開放モードセット信号SETを「0」にする。
例えば、アイドル状態持続監視回路242は、アイドル状態通知信号S241の状態「1」を、基準パルスCLK2を分周比DIV2で分周下サンプリングタイミングでカウントするカウンタを有し、このカウント値が基準値TH2を越えると、開放モードセット信号SETを「1」にする。逆に、このカウンタは、アイドル状態通知信号S241が瞬間的にでも状態「0」になると、カウント値を0にリセットし、開放モードセット信号SETを「0」にする。
アイドル状態持続監視回路を設けることで、クラスタN内のコアが確実にキャッシュを使用していないことを確認し、あるクラスタが短時間のスリープから復帰する際に、他のクラスタにより短時間スリープしたLLCが使用されてしまうことなどを防ぐ。
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」にリセットされる。
さらに、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の各回路の具体例は省略する。
[4つの実施の形態]
次に、本実施の形態の4つの例についてホームエージェントHAがヴィクティムラインをアイドルクラスタ内のLLCにキャッシュフィルする制御について説明する。
図12は、本実施の形態におけるメモリ要求に対するホームエージェントの動作の概略を示す図である。前提として、プロセッサは、2つのクラスタCL0, CL1と、ホームエージェントHAと、メモリコントローラMCを有し、クラスタCL0はアクティブ状態であり、クラスタCL1はアイドル状態であるとする。実施の形態の4つの例で共通する動作は以下のとおりである。
最初に、ホームエージェントHAは、内蔵するアイドル状態識別回路からクラスタCL1がアイドル状態であることを示すLLC開放信号S244を受信している(S11)。その状態で、クラスタCL0のLLC0からメモリ要求を受信する(S12)。
ホームエージェント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)。
LLC0のヴィクティムラインをLLC1に転送する制御は、例えば、LLC0に発行したリプレースオーダを転送付きリプレースオーダにし、LLC0にヴィクティムラインの吐き出しと、そのヴィクティムラインのLLC1への転送を依頼する。例えば、LLC1にLLC0のヴィクティムラインのアドレスのデータをメモリからフェッチスルメモリ要求を発行させ、LLC1にLLC0から吐き出されてメモリにライトバックされたデータを取得させ、LLC1から吐き出したキャッシュラインにフィルさせる。それ以外の方法も考えられる。
上記のように、本実施の形態では、LLC0からのメモリ要求に対して、ホームエージェントHAが主体的にLLC0とLLC1にオーダを発行して、LLC0のヴィクティムラインをLLC1に転送するよう制御する。
[第1の実施の形態]
図13、図14は、第1の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。第1の実施の形態では、ホームエージェントHAは、LLC0に対するリプレースオーダを転送付きリプレースオーダで発行する。さらに、ホームエージェントHAは、LLC1に対してラインフィルバッファの割当を要求するライン割当オーダを発行する。
図13において、図示されていないが、事前にホームエージェント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のヴィクティムラインをフィルする予定のキャッシュライン(第2のヴィクティムライン)を吐き出すよう制御する。これに応答して、LLC1のLLCパイプラインは、上記第2のヴィクティムラインを吐き出すリプレース応答を返信する(S15_1)。そして、HAパイプラインは、吐き出されたデータがダーティであれば、メモリコントローラにライトバック要求を発行し(S15_2)、メモリへのライトバックを行わせる。
一方、転送付きリプレースオーダS14に応答して、LLC0はLLC0のヴィクティムラインを吐き出し、LLC1にLLC0のヴィクティムラインのデータを転送する(S14_1)。このヴィクティムラインのインデックスまたはアドレスは、転送付きリプレースオーダに含まれている。そして、LLC1のラインフィルバッファLFBは、転送されてきたヴィクティムラインのデータを一旦割り当てられたラインフィルバッファに格納し、LLC1のLLCパイプラインがLLC0のヴィクティムラインのデータをLLC1の第2のヴィクティムラインにフィル(登録)する(S14_3)。また、LLC0は、転送付きリプレースオーダに対する転送完了通知(転送付きリプレース応答)をホームエージェントに返信する(S14_2)。
その後、メモリコントローラがHAパイプラインとLLC0のLLCパイプラインにフェッチ要求S12_2に対するデータ応答を返信する(S12_3,S12_4)。クラスタCL0のLLC0は、ラインフィルバッファLFBのラインフィルバッファにデータ応答のデータを一旦格納し、LLCパイプラインがLLC0のヴィクティムラインにデータをフィル(登録)する(S12_5)。このラインフィルバッファは、最初にLLC0のLLCパイプラインがメモリ要求を発行するとき、既に割当済みである。
図14において、クラスタ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が読み出されたデータをヴィクティムラインにフィル(登録)する。この動作は、図13と同じである。
以上のとおり、第1の実施の形態では、ホームエージェントが、メモリ要求した要求元のLLC0に対して転送付きリプレースオーダを発行することで、LLC0にヴィクティムラインを吐き出させ、アイドル状態のクラスタLC1のLLC1にヴィクティムラインのデータを転送させる。さらに、ホームエージェントは、転送付きリプレースオーダに先立って、LLC1にライン割当オーダを発行し、ラインフィルバッファの割当を行わせる。これにより、LLC1は、転送されてきたヴィクティムラインのデータを割り当てられたラインフィルバッファに格納し、キャッシュフィル(登録)する。
[第1の実施の形態の詳細]
図15は、ホームエージェントが所有するLLCタグコピーを示す図である。図15には、一例としてクラスタCL0のLLC0のタグコピーが示されている。LLCタグコピーは、複数のウエイWayについて、インデックスに対応して、タグアドレスと、状態コードとを格納する。タグアドレスは、対応するキャッシュデータメモリ内のデータのアドレスに対応する。状態コードは前述したMESIコードである。
LLCタグコピーは、ヴィクティムビットを格納してもよい。ヴィクティムビットは、前述の転送付きリプレースオーダに応答してLLC0のヴィクティムラインのデータがキャッシュフィルされたLLC1のキャッシュラインであることを示す状態ビットである。例えば、ヴィクティムビットが「1」のキャッシュラインがその後ヴィクティムラインになった場合には、再度、アイドル中の他のクラスタのLLCにデータ転送することを禁止する。
図16は、第1の実施の形態におけるLLC0とLLC1のキャッシュタグメモリとキャッシュデータメモリの例を示す図である。図16に示した例では、メモリ要求を発行したLLC0のヴィクティムラインCLN0が(way n、アドレス(V)、データDATA(V))、LLC0のヴィクティムラインのデータがフィルされるLLC1のキャッシュラインCLN1が(way m、アドレス(W)、データDATA(W))である。以下、第1のヴィクティムラインCLN0、第2のヴィクティムラインCLN1と区別して称する。
前述のとおり、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)の下位ビットは同じであり、よって、同じキャッシュインデックスのキャッシュラインに格納される。
図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の動作を説明する。
クラスタCL0のコアが発行したアドレス(A)のデータ要求に応答して、LLC0のLLCパイプラインがキャッシュミスし、HAパイプラインにメモリ要求MEM-RQを発行する(S12)。このメモリ要求MEM-RQは、LLC0内のキャッシュ登録先のウエイ(n)と、メモリのアドレス(A)を有する。
HAパイプラインは、ムーブインポートMIP経由で入力されたメモリ要求に応答して、LLCタグコピーTAG2-LLC0、TAG2-LLC1を検索し、アドレス(A)に対しては他のどのクラスタも所持していないこと、LLC0内の第1のヴィクティムラインにはアドレス(V)がE状態で登録されていることを検出する(S12_1)。
そこで、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)を登録する。
ライン割当オーダ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で応答する。
バッファが割り当てられた場合、LLC1は、LLC1内のどのキャッシュwayをリプレースするかをこのフローS13_2で確定する。このとき確定したLLC1内のwayをway=mとする(図16参照)。LLC1内のway=mのキャッシュラインCLN1には別のデータが登録されている可能性があり、ここでもリプレースが必要になる。つまり、クラスタCL0のLLC0の第1のヴィクティムライン(V)CLN0の転送により追い出されるクラスタCL1のLLC1の第2のヴィクティムライン(W)CLN1が存在する。
ライン割当応答LN-ALC-CPLT(ACKケース)は、アドレス(V)とウエイ(m)と有する。このライン割当応答は、ムーブアウトポートMOP経由でHAパイプラインに入力(投入)される。これに応答して、HAパイプラインは、クラスタCL1のLLC1でラインフィルバッファが割り当てられたか否かを知る(S17)。また、LLC1のウエイ(m)内の第2のヴィクティムラインCLN1にはアドレス(V)が格納されていることも知る。
そこで、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の転送用のスペースを空けるよう要求する。
これらのオーダで、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は、第2のヴィクティムラインCLN1のリプレース処理を行い(S15_3)、そのダーティなデータをホームエージェントHAのリプレースバッファRPBにリプレース応答RPL-CPLTで転送する(S15_1)。
一方、転送付きリプレースオーダ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とは、次にこのキャッシュラインがリプレース対象となったとき他のアイドル状態のクラスタに再び転送されるのを防ぐフラグ情報である。
図17には示されていないが、その後、ロックレジスタLKRは、メモリに発行したフェッチ要求に対するデータ応答が戻り次第開放され、メモリ要求の要求元のクラスタCL0のラインフィルバッファLFBにデータ応答が転送される。
図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に発行する。
[第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の実施の形態と同じである。
[第3の実施の形態]
図20は、第3の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。第3の実施の形態では、HAパイプラインがLLC0に対し第1のヴィクティムラインについて通常のリプレースオーダを発行する(S32)。これに応答して、LLC0はリプレース応答をHAパイプラインに返信する(S32_1)。ホームエージェントHAは、リプレース応答で返信された第1のヴィクティムラインのデータをリプレースバッファRPBに格納する。
その後、HAパイプラインは、LLC1に対しライン割当オーダを発行し(S34)、LLC1に第1のヴィクティムラインのデータを受け入れるラインフィルバッファの割当を要求する。LLC1は、それに応答してラインフィルバッファを割り当てて、ライン割当応答をホームエージェントHAに返信する(S34_1)。
その後、HAパイプラインは、第1の実施の形態と同様に、LLC1に対してリプレースオーダを発行し(S15)、LLC1内の第2のヴィクティムラインCLN1に対するリプレース処理を要求する。そして、HAパイプラインは、リプレース応答を受信する(S15_1)。
その後、HAパイプラインは、LLC1に対して、リプレースバッファのデータを添付したデータ転送オーダを発行し(S35)、LLC1にデータをキャッシュフィルさせる(S35_1)。
その後の動作は、第1の実施の形態と同様である。
[第4の実施の形態]
図21は、第4の実施の形態におけるプロセッサ内の動作シーケンスを示す図である。第4の実施の形態の動作を概略すると、まず、HAパイプラインがLLC0に対し第1のヴィクティムラインについて通常のリプレースオーダを発行する(S32)。これに応答して、LLC0はリプレース応答をHAパイプラインに返信する(S32_1)。そして、HAパイプラインは、メモリコントローラMCにライトバック要求を発行し(S32_2)、LLC0の第1のヴィクティムラインのデータをメモリにライトバックさせる。
さらに、HAパイプラインが、アイドル状態のクラスタCL1のLLC1にフェッチ要求の発行オーダを発行し(S31)、LLC1にLLC0の第1のヴィクティムラインのアドレス(V)のメモリ要求を発行するよう要求する。それに応答して、LLC1がホームエージェントHAにアドレス(V)のメモリ要求を発行する(S31_2)。この時、LLC1はラインフィルバッファを割り当てる。これに応答して、ホームエージェントHAは、メモリコントローラにアドレス(V)のフェッチ要求を発行する(S31_3)。
そして、HAパイプラインが、LLC1に対して、第2のヴィクティムラインCLN1のリプレースオーダを発行し(S33)、LLC1に第2のヴィクティムラインCLN1をリプレースするよう要求する。
その後、メモリコントローラが、フェッチ要求S31_3に対するデータ応答を返信し(S31_4, S31_5)、LLC1がデータ応答された第1のヴィクティムラインのアドレス(V)のデータをフィルする(S31_6)。
第4の実施の形態では、上記のように、LLC0の第1のヴィクティムラインをLLC1に転送する手段として、LLC0に対する通常のリプレースオーダと、LLC1に対するメモリ要求の発行オーダを利用する。そして、LLC1は、第1のヴィクティムラインのアドレス(V)についてメモリ要求を発行し、そのデータをデータ応答で受信し、第2のヴィクティムラインにキャッシュフィルする。以下、具体的な動作を説明する。
クラスタCL0がキャッシュミスし、新規のメモリ要求1をホームエージェントHAに発行する(S12)。ホームエージェントHAは、LLCタグコピーを参照し、いずれのLLCも所持しない場合、メモリコントローラにフェッチ要求1を発行する(S12-2)。
ここでアイドル状態のクラスタが存在する場合、ホームエージェントHAは、そのクラスタに向けてフェッチ要求の発行オーダFET-RE−ODを発行する(S31)。図21ではクラスタ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)。その後の動作は、前述したとおりである。
上記のとおり、第4の実施の形態では、ホームエージェントHAが発行するフェッチ要求の発行オーダS31を除くと、通常の新規メモリ要求がクラスタCL0とクラスタCl1からそれぞれ発行され、通常のリプレースオーダがホームエージェントHAからクラスタCL0とクラスタCL1のLLC0,LLC1に発行されるだけである。
第4の実施の形態によれば、既存の要求やオーダを利用して実現できる。
以上の実施の形態をまとめると,次の付記のとおりである。
(付記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に記載の演算処理装置の制御方法。
(付記11)
前記ホームエージェントは、さらに、
前記第2のラストレベルキャッシュに前記第1のヴィクティムラインのデータをフェッチするフェッチ要求の発行要求を発行して、前記第2のラストレベルキャッシュに前記フェッチ要求を前記ホームエージェントに発行させ、
前記ホームエージェントは、前記第2のラストレベルキャッシュから送信される前記フェッチ要求に応答して、前記メモリコントローラに前記第1のエヴィクションラインのデータのフェッチ要求を発行し、
前記メモリコントローラは、前記第2のラストレベルキャッシュに、前記フェッチ要求に対応するデータ応答を送信し、
前記第2のラストレベルキャッシュは、前記データ応答により、前記第1のヴィクティムラインのデータを受信する、付記10に記載の演算処理装置の制御方法。
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: 転送付きリプレースオーダ応答

Claims (10)

  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に記載の演算処理装置の制御方法。
JP2015144509A 2015-07-22 2015-07-22 演算処理装置及び演算処理装置の制御方法 Active JP6451538B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015144509A JP6451538B2 (ja) 2015-07-22 2015-07-22 演算処理装置及び演算処理装置の制御方法
US15/193,164 US10545870B2 (en) 2015-07-22 2016-06-27 Arithmetic processing device and arithmetic processing device control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015144509A JP6451538B2 (ja) 2015-07-22 2015-07-22 演算処理装置及び演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2017027324A true JP2017027324A (ja) 2017-02-02
JP6451538B2 JP6451538B2 (ja) 2019-01-16

Family

ID=57836108

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015144509A Active JP6451538B2 (ja) 2015-07-22 2015-07-22 演算処理装置及び演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US10545870B2 (ja)
JP (1) JP6451538B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101976320B1 (ko) * 2018-04-25 2019-05-07 연세대학교 산학협력단 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6770230B2 (ja) * 2016-09-30 2020-10-14 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法
CN106909515B (zh) * 2017-02-11 2020-09-18 苏州浪潮智能科技有限公司 面向混合主存的多核共享末级缓存管理方法及装置
CN107085725B (zh) * 2017-04-21 2020-08-14 河南科技大学 一种通过基于自适应码本的llc聚类图像区域的方法
US10628313B2 (en) * 2017-05-26 2020-04-21 International Business Machines Corporation Dual clusters of fully connected integrated circuit multiprocessors with shared high-level cache
US10469563B2 (en) 2017-06-15 2019-11-05 Cisco Technology, Inc. Propagating an intelligent walker agent in a network to perform a computation
US10877886B2 (en) * 2018-03-29 2020-12-29 Intel Corporation Storing cache lines in dedicated cache of an idle core
US11556477B2 (en) * 2018-06-15 2023-01-17 Arteris, Inc. System and method for configurable cache IP with flushable address range
CN113760787B (zh) * 2021-09-18 2022-08-26 成都海光微电子技术有限公司 多级高速缓存数据推送系统、方法、设备和计算机介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003050742A (ja) * 2001-08-07 2003-02-21 Sony Corp 情報処理装置及び情報処理方法、プログラム格納媒体並びにプログラム

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08137749A (ja) 1994-11-08 1996-05-31 Fujitsu Ltd キャッシュメモリ装置
US20060155934A1 (en) * 2005-01-11 2006-07-13 Ramakrishnan Rajamony System and method for reducing unnecessary cache operations
US20070094450A1 (en) * 2005-10-26 2007-04-26 International Business Machines Corporation Multi-level cache architecture having a selective victim cache
US7962694B2 (en) * 2006-03-31 2011-06-14 Intel Corporation Partial way hint line replacement algorithm for a snoop filter
US7552288B2 (en) * 2006-08-14 2009-06-23 Intel Corporation Selectively inclusive cache architecture
US8055851B2 (en) * 2006-12-14 2011-11-08 Intel Corporation Line swapping scheme to reduce back invalidations in a snoop filter
US8397029B2 (en) * 2007-12-19 2013-03-12 International Business Machines Corporation System and method for cache coherency in a multiprocessor system
US8296520B2 (en) * 2007-12-19 2012-10-23 International Business Machines Corporation System and method for optimizing neighboring cache usage in a multiprocessor environment
US8296522B2 (en) * 2007-12-20 2012-10-23 Intel Corporation Method, apparatus, and system for shared cache usage to different partitions in a socket with sub-socket partitioning
US8195880B2 (en) * 2009-04-15 2012-06-05 International Business Machines Corporation Information handling system with immediate scheduling of load operations in a dual-bank cache with dual dispatch into write/read data flow
US8713248B2 (en) * 2009-06-02 2014-04-29 Nokia Corporation Memory device and method for dynamic random access memory having serial interface and integral instruction buffer
US8392659B2 (en) * 2009-11-05 2013-03-05 International Business Machines Corporation Extending cache capacity on multiple-core processor systems
US8443148B2 (en) * 2009-12-26 2013-05-14 Intel Corporation System-wide quiescence and per-thread transaction fence in a distributed caching agent
US8656115B2 (en) * 2010-08-20 2014-02-18 Intel Corporation Extending a cache coherency snoop broadcast protocol with directory information
US9021206B2 (en) * 2011-08-25 2015-04-28 International Business Machines Corporation Use of cache statistics to ration cache hierarchy access
US9183144B2 (en) * 2012-12-14 2015-11-10 Intel Corporation Power gating a portion of a cache memory
US9170946B2 (en) * 2012-12-21 2015-10-27 Intel Corporation Directory cache supporting non-atomic input/output operations
US20150026406A1 (en) * 2013-07-19 2015-01-22 Advanced Micro Devices, Inc. Size adjusting caches by way
US9336144B2 (en) * 2013-07-25 2016-05-10 Globalfoundries Inc. Three-dimensional processing system having multiple caches that can be partitioned, conjoined, and managed according to more than one set of rules and/or configurations
US9697124B2 (en) * 2015-01-13 2017-07-04 Qualcomm Incorporated Systems and methods for providing dynamic cache extension in a multi-cluster heterogeneous processor architecture

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003050742A (ja) * 2001-08-07 2003-02-21 Sony Corp 情報処理装置及び情報処理方法、プログラム格納媒体並びにプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101976320B1 (ko) * 2018-04-25 2019-05-07 연세대학교 산학협력단 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법

Also Published As

Publication number Publication date
JP6451538B2 (ja) 2019-01-16
US20170024329A1 (en) 2017-01-26
US10545870B2 (en) 2020-01-28

Similar Documents

Publication Publication Date Title
JP6451538B2 (ja) 演算処理装置及び演算処理装置の制御方法
US7590805B2 (en) Monitor implementation in a multicore processor with inclusive LLC
CN102804152B (zh) 对存储器层次结构中的闪存的高速缓存一致性支持
US7925840B2 (en) Data processing apparatus and method for managing snoop operations
US7305522B2 (en) Victim cache using direct intervention
US7305523B2 (en) Cache memory direct intervention
US8521982B2 (en) Load request scheduling in a cache hierarchy
US8793442B2 (en) Forward progress mechanism for stores in the presence of load contention in a system favoring loads
US20080120441A1 (en) Cache coherence protocol with write-only permission
CN110869914B (zh) 硬件预取器的基于利用率的节流
JP2008535093A (ja) ストリーム・レジスタを用いてスヌープ要求をフィルタする方法、装置及びコンピュータ・プログラム
US8131931B1 (en) Configurable cache occupancy policy
JP2008535093A5 (ja)
JP4803983B2 (ja) 演算処理装置
US11740930B2 (en) Global coherence operations
CN113874845A (zh) 多请求者存储器存取管线和仲裁器
JP6687845B2 (ja) 演算処理装置及び演算処理装置の制御方法
US5987544A (en) System interface protocol with optional module cache
US20010049742A1 (en) Low order channel flow control for an interleaved multiblock resource
US11409656B2 (en) Semiconductor device
EP4035015B1 (en) System probe aware last level cache insertion bypassing
Sharma et al. DESIGN OF A BUS-BASED SHARED-MEMORY MULTIPROCESSOR FOR COMA LATENCY

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180413

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180912

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180925

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181011

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181113

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181126

R150 Certificate of patent or registration of utility model

Ref document number: 6451538

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150