JP2018195183A - 演算処理装置および演算処理装置の制御方法 - Google Patents

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

Info

Publication number
JP2018195183A
JP2018195183A JP2017099969A JP2017099969A JP2018195183A JP 2018195183 A JP2018195183 A JP 2018195183A JP 2017099969 A JP2017099969 A JP 2017099969A JP 2017099969 A JP2017099969 A JP 2017099969A JP 2018195183 A JP2018195183 A JP 2018195183A
Authority
JP
Japan
Prior art keywords
data
unit
node
request
storage device
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.)
Pending
Application number
JP2017099969A
Other languages
English (en)
Inventor
健 三品
Takeshi Mishina
健 三品
坂田 英樹
Hideki Sakata
英樹 坂田
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 JP2017099969A priority Critical patent/JP2018195183A/ja
Priority to US15/972,523 priority patent/US10775870B2/en
Publication of JP2018195183A publication Critical patent/JP2018195183A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • 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/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】 キャッシュコヒーレンシ制御に対応した演算処理装置の回路規模を削減し、消費電力を小さくする。【解決手段】 演算処理装置は、複数の記憶装置の各々がそれぞれ割り当てられる複数の演算部を有する。各演算部は、自演算部の記憶装置が記憶するデータと複数の演算部のうちの他の演算部の記憶装置から持ち出される持ち出しデータとを保持するキャッシュメモリを有する。キャッシュメモリは、持ち出しデータのアクセス要求を持ち出しデータの持ち出し元の演算部から受けた場合、持ち出し元の演算部の記憶装置への持ち出しデータの書き戻しを指示する書き戻し情報を出力した後に持ち出しデータのアクセス要求を受けるすれ違いが発生したかを判定する判定部と、すれ違いが発生した場合、すれ違いが発生したことを示すすれ違い情報を、アクセス要求に対する応答として持ち出し元の演算部に出力する応答情報生成部とを有する。【選択図】 図1

Description

本発明は、演算処理装置および演算処理装置の制御方法に関する。
演算を実行する演算部としてのプロセッサコアとデータを記憶する主記憶装置に比べて高速にアクセス可能なキャッシュメモリとを含む複数の演算ノードを有する演算処理装置が普及している。キャッシュメモリは、プロセッサコアと主記憶装置との間に配置され、主記憶装置に記憶されるデータの一部を保持する。複数の演算ノードの各々は、各キャッシュメモリに保持されたデータの一貫性であるキャッシュコヒーレンシを維持するキャッシュコヒーレンシ制御を実行する。
例えば、キャッシュメモリを内蔵した複数のプロセッサと複数の主記憶装置とを有するマルチプロセッサシステムでは、主記憶装置のタグ情報を参照してキャッシュコヒーレンシ制御を実行する方法が提案されている(例えば、特許文献1参照)。主記憶装置のタグ情報は、例えば、主記憶装置に対応するプロセッサ以外のプロセッサにダーティなキャッシュラインが有るか否かをキャッシュラインに対応するデータ群毎に示す情報であり、主記憶装置毎に設けられたタグメモリに格納される。「ダーティ」とは、キャッシュメモリに保持されたデータを更新して、主記憶装置に記憶されたデータを更新していないキャッシュメモリの状態である。例えば、主記憶装置のタグ情報がダーティを示しているデータに対して読み出しが実行される場合、ダーティなキャッシュラインを主記憶装置に書き戻すライトバックが実行され、ライトバックの完了を待って、正しいデータが要求元のプロセッサに送られる。
また、複数のプロセッサが主記憶装置を共有するマルチプロセッサシステムでは、実行中のライトバックの対象データに対する読み出し要求が発行された場合でも、正しいデータを読み出すキャッシュコヒーレンシ制御が提案されている(例えば、特許文献2参照)。この種のキャッシュコヒーレンシ制御では、例えば、実行中のライトバックの対象データに対する読み出し要求が発行された場合、ライトバックの完了を示す完了通知が主記憶装置から返されたことを契機に、読み出し要求が主記憶装置に改めて発行される。
特開平8−185359号公報 特開平10−161930号公報
演算処理装置の消費電力を小さくするために、演算処理性能に対する影響が小さいプロセッサコア以外の回路の面積を小さくすることが考えられる。例えば、キャッシュコヒーレンシ制御を実現する回路の面積を小さくすることで、演算処理装置の消費電力を小さくすることができる。
1つの側面では、本発明は、キャッシュコヒーレンシ制御に対応した演算処理装置の回路規模を削減し、消費電力を小さくすることを目的とする。
1つの実施態様では、演算処理装置は、複数の記憶装置の各々がそれぞれ割り当てられる複数の演算部を有する。複数の演算部の各々は、演算を実行する演算実行部と、自演算部に割り当てられる記憶装置が記憶するデータと、複数の演算部のうちの他の演算部に割り当てられる記憶装置から持ち出される持ち出しデータと、を保持するキャッシュメモリとを有する。キャッシュメモリは、判定部および応答情報生成部を有する。判定部は、持ち出しデータに対するアクセス要求を持ち出しデータの持ち出し元の演算部から受けた場合、持ち出し元の演算部に割り当てられる記憶装置への持ち出しデータの書き戻しを指示する書き戻し情報を出力した後に持ち出しデータに対するアクセス要求を受けるすれ違いが発生したかを判定する。応答情報生成部は、すれ違いが発生した場合、すれ違いが発生したことを示すすれ違い情報を、アクセス要求に対する応答として持ち出し元の演算部に出力する。
1つの側面では、本発明は、キャッシュコヒーレンシ制御に対応した演算処理装置の回路規模を削減するとともに、消費電力を削減することができる。
演算処理装置および演算処理装置の制御方法の一実施形態を示す図である。 図1に示した演算処理装置の動作の一例を示す図である。 演算処理装置および演算処理装置の制御方法の別の実施形態を示す図である。 図3に示した2次キャッシュの一例を示す図である。 図3に示した演算処理装置の動作の一例を示す図である。 要求のすれ違いが発生した場合の演算処理装置の動作の一例を示す図である。 図4に示した2次キャッシュの比較例を示す図である。 図7に示した2次キャッシュを有する演算処理装置の動作の一例を示す図である。
以下、実施形態について、図面を用いて説明する。
図1は、演算処理装置および演算処理装置の制御方法の一実施形態を示す。図1に示す演算処理装置10は、CPU(Central Processing Unit)等のプロセッサである。演算処理装置10は、複数の記憶装置400(400a、400b、400c)の各々がそれぞれ割り当てられる複数の演算ノード100(100a、100b、100c)と、複数の演算ノード100に接続されるバス120とを有する。以下、演算ノード100に割り当てられる記憶装置400は、演算ノード100の記憶装置400とも称される。複数の演算ノード100は、複数の記憶装置400がそれぞれ割り当てられる複数の演算部の一例である。なお、演算ノード100の数は、3つに限定されない。
図1では、演算処理装置10の説明等において複数の演算ノード100を区別するために、符号の末尾にアルファベットの小文字(a、b、c)を付している。また、演算ノード100が有する各要素についても、演算ノード100に付したアルファベットと同じアルファベットを符号の末尾に付している。
各演算ノード100は、例えば、演算を実行するCPUコア等のプロセッサコア200と、キャッシュメモリ300と、プロセッサコア200が使用するデータ等を記憶する記憶装置400とを有する。プロセッサコア200は、演算を実行する演算実行部の一例である。
キャッシュメモリ300は、記憶装置400に比べて高速にアクセス可能であり、自演算ノード100のプロセッサコア200が使用するデータを保持する。また、複数の演算ノード100の各々がそれぞれ有する複数のキャッシュメモリ300は、バス120に接続され、互いに通信可能である。例えば、各演算ノード100の記憶装置400に記憶されたデータは、キャッシュメモリ300およびバス120を介して、他の演算ノード100に持ち出される。このため、各演算ノード100のキャッシュメモリ300は、自演算ノード100の記憶装置400に記憶されるデータの状態を管理する。記憶装置400に記憶されるデータの状態は、他の演算ノード100の1つのみに持ち出された排他状態、他の演算ノード100の1つ以上に持ち出され、データが更新されていない共有状態、他の演算ノード100に持ち出されていない無効状態等に分類される。なお、排他状態では、データが更新されていない保証はない。
このように、キャッシュメモリ300は、自演算ノード100の記憶装置400に記憶されるデータと複数の演算ノード100のうちの他の演算ノード100の記憶装置400から持ち出される持ち出しデータとを記憶する。すなわち、キャッシュメモリ300は、複数の記憶装置400のいずれかに記憶されるデータを記憶する。
キャッシュメモリ300は、例えば、データを読み出すための読み出し要求をプロセッサコア200から受けた場合、読み出し要求で要求されたデータをプロセッサコア200に転送する。なお、キャッシュメモリ300は、読み出し要求で要求されたデータを保持していない場合(キャッシュメモリ300がキャッシュミスした場合)、記憶装置400等に読み出し要求を出力する。
例えば、キャッシュメモリ300aは、読み出し要求で要求されたデータが他の演算ノード100bの記憶装置400bに記憶されたデータである場合、演算ノード100bのキャッシュメモリ300bにバス120を介して読み出し要求を出力する。そして、演算ノード100bのキャッシュメモリ300bは、演算ノード100aからの読み出し要求で要求されたデータを保持していない場合、演算ノード100bの記憶装置400bに読み出し要求を出力する。このように、演算ノード100aのプロセッサコア200aは、演算ノード100aのキャッシュメモリ300a、バス120および演算ノード100bのキャッシュメモリ300bを介して、演算ノード100bの記憶装置400bにアクセスする。この場合、演算ノード100bの記憶装置400bに記憶されたデータは、演算ノード100bのキャッシュメモリ300b、バス120および演算ノード100aのキャッシュメモリ300aを介して、演算ノード100aのプロセッサコア200aに転送される。
また、例えば、キャッシュメモリ300aは、読み出し要求で要求されたデータが自演算ノード100aの記憶装置400aから他の演算ノード100cのみに持ち出されたデータである場合、データの持ち出し先の演算ノード100cに読み出し要求を出力する。例えば、キャッシュメモリ300aは、演算ノード100cのキャッシュメモリ300cにバス120を介して読み出し要求を出力する。この場合、演算ノード100cのキャッシュメモリ300cに保持されたデータは、バス120および演算ノード100aのキャッシュメモリ300aを介して、演算ノード100aの記憶装置400aに書き戻される。そして、演算ノード100aの記憶装置400aに書き戻されたデータは、演算ノード100aのキャッシュメモリ300aを介して、演算ノード100aのプロセッサコア200aに転送される。
なお、キャッシュメモリ300は、読み出し要求で要求されたデータが自演算ノード100の記憶装置400から他の演算ノード100に持ち出されてない場合、自演算ノード100の記憶装置400に読み出し要求を出力する。
このように、複数の演算ノード100間の通信は、キャッシュメモリ300およびバス120を介して実行される。そして、複数の記憶装置400のいずれかに記憶されるデータは、複数のキャッシュメモリ300のいずれにも記憶可能である。このため、各演算ノード100は、各キャッシュメモリ300に保持されたデータの一貫性(キャッシュコヒーレンシ)を維持するキャッシュコヒーレンシ制御を実行する。
例えば、キャッシュメモリ300は、持ち出しデータに対する要求のすれ違いが発生したか否かを判定する判定部310と、すれ違い情報を判定部310の判定結果に基づいて生成する応答情報生成部320とを有する。要求のすれ違いは、例えば、キャッシュメモリ300が持ち出しデータの持ち出し元の演算ノード100の記憶装置400への持ち出しデータの書き戻しを指示する書き戻し情報を出力した後に持ち出しデータに対するアクセス要求を受けるすれ違いである。アクセス要求は、データを記憶装置400に書き込むための書き込み要求や読み出し要求等である。
例えば、キャッシュメモリ300aの判定部310aは、演算ノード100bの記憶装置400bから持ち出した持ち出しデータに対するアクセス要求を演算ノード100bから受けた場合、要求のすれ違いが発生したか否かを判定する。この場合、判定部310aは、演算ノード100bの記憶装置400bに持ち出しデータを書き戻す指示である書き戻し情報を演算ノード100bに出力した後に持ち出しデータに対するアクセス要求を演算ノード100bから受けたか否かを判定する。例えば、判定部310aは、アクセス要求で要求された持ち出しデータをキャッシュメモリ300aが保持していない場合、要求のすれ違いが発生したと判定する。
このように、判定部310は、持ち出しデータに対するアクセス要求を持ち出しデータの持ち出し元の演算ノード100から受けた場合に、持ち出しデータに対する要求のすれ違いが発生したか否かを判定する。
応答情報生成部320は、持ち出しデータに対する要求のすれ違いが発生した場合に、すれ違いが発生したことを示すすれ違い情報を、アクセス要求に対する応答として持ち出し元の演算ノード100に出力する。
例えば、キャッシュメモリ300bは、演算ノード100aに持ち出された持ち出しデータに対するアクセス要求の応答として、すれ違い情報を演算ノード100aのキャッシュメモリ300aから受けた場合、要求のすれ違いが発生したと認識する。すなわち、演算ノード100bのキャッシュメモリ300bは、アクセス要求で要求した最新のデータが自演算ノード100bの記憶装置400bに書き戻されたことを認識する。例えば、記憶装置400bから演算ノード100aに持ち出された持ち出しデータがプロセッサコア200aにより更新された場合、記憶装置400bが記憶している持ち出しデータは、キャッシュメモリ300aが保持する最新の持ち出しデータと一致しない。この場合、プロセッサコア200aにより更新された最新の持ち出しデータが記憶装置400bに書き戻されることにより、記憶装置400bは、プロセッサコア200aにより更新された最新のデータを記憶する。このため、演算ノード100bのキャッシュメモリ300bは、演算ノード100aから書き戻された最新のデータ(アクセス要求で要求したデータ)を自演算ノード100bの記憶装置400bから読み出す。
このように、すれ違い情報を受けた演算ノード100は、自演算ノード100の記憶装置400に書き戻された持ち出しデータ(アクセス要求で要求したデータ)を読み出す。これにより、要求のすれ違いが発生した場合でも、キャッシュコヒーレンシを維持することができる。
ここで、すれ違い情報を用いずにキャッシュコヒーレンシを維持する演算処理装置として、各キャッシュメモリにリプレースバッファを追加する構成が考えられる。リプレースバッファは、持ち出しデータが持ち出し元の演算ノード100の記憶装置400に書き戻される際に、キャッシュメモリから追い出される書き戻し対象の持ち出しデータを、記憶装置400への書き戻しが終了するまで保持する。そして、キャッシュメモリは、書き戻し対象の持ち出しデータに対する要求のすれ違いが発生した場合、リプレースバッファが保持する持ち出しデータを、アクセス要求の要求元の演算ノード100に転送する。これにより、要求のすれ違いが発生した場合でも、キャッシュコヒーレンシが維持される。なお、各キャッシュメモリにリプレースバッファを追加する構成では、リプレースバッファを用いずにキャッシュコヒーレンシ制御を実現する演算処理装置10に比べて、演算処理装置の回路規模が増加する。換言すれば、すれ違い情報を用いてキャッシュコヒーレンシ制御を実現する演算処理装置10は、キャッシュメモリにリプレースバッファを追加する構成に比べて、回路規模の増加を抑制することができる。このように、演算処理装置10では、回路規模を削減することができる。
なお、演算処理装置10の構成は、図1に示す例に限定されない。例えば、演算ノード100(演算部)は、記憶装置400を除いて定義されてもよい。すなわち、複数の演算ノード100にそれぞれ割り当てられる複数の記憶装置400は、演算ノード100の外部または演算処理装置10の外部に配置されてもよい。また、各演算ノード100において、キャッシュメモリ300とは別のキャッシュメモリがプロセッサコア200とキャッシュメモリ300との間に追加されてもよい。
図2は、図1に示した演算処理装置10の動作の一例を示す。図2に示す動作は、演算処理装置の制御方法の一態様である。なお、図2に示す動作は、他の演算ノード100に持ち出された持ち出しデータにアクセスする際の演算ノード100の動作の一例である。図2では、演算ノード100bから演算ノード100aに持ち出された持ち出しデータに対するアクセス要求を演算ノード100bが演算ノード100aに発行する場合を例にして、演算ノード100a、100bの動作を説明する。この場合、アクセス要求の受信側の演算ノード100は演算ノード100aであり、アクセス要求の発行側の演算ノード100は演算ノード100bである。先ず、アクセス要求の受信側の演算ノード100aの動作を説明する。
ステップS10では、演算ノード100aのキャッシュメモリ300aは、演算ノード100bから持ち出した持ち出しデータに対するアクセス要求を、持ち出しデータの持ち出し元の演算ノード100bのキャッシュメモリ300bから受ける。
次に、ステップS12では、キャッシュメモリ300aの判定部310aは、要求のすれ違いが発生したか否かを判定する。例えば、判定部310aは、持ち出しデータに対するアクセス要求を演算ノード100bから受ける前に、持ち出しデータを記憶装置400bに書き戻すことを指示する書き戻し情報を演算ノード100bに出力した場合、要求のすれ違いが発生したと判定する。
このように、判定部310aは、持ち出しデータに対するアクセス要求を持ち出しデータの持ち出し元の演算ノード100bから受けた場合、要求のすれ違いが発生したか判定する。要求のすれ違いが発生した場合、すなわち、持ち出しデータがキャッシュメモリ300aから既に追い出されている場合、演算ノード100aの動作は、ステップS16に移る。一方、要求のすれ違いが発生していない場合、すなわち、キャッシュメモリ300aが持ち出しデータを保持している場合、演算ノード100aの動作は、ステップS14に移る。
ステップS14では、キャッシュメモリ300aは、保持している持ち出しデータ(アクセス要求で要求された要求データ)を、持ち出しデータのアクセス要求に対する応答として、持ち出し元の演算ノード100bに出力する。そして、キャッシュメモリ300aは、演算ノード100bに転送した持ち出しデータを、自キャッシュメモリ300aから削除する。これにより、持ち出しデータに対するアクセス要求を演算ノード100bから受けた演算ノード100aの動作は終了する。ステップS14では、要求のすれ違いが発生していないため、キャッシュコヒーレンシは維持される。
ステップS16では、キャッシュメモリ300aの応答情報生成部320aは、持ち出しデータのアクセス要求に対する応答として、要求のすれ違いが発生したことを示すすれ違い情報を、持ち出し元の演算ノード100bに出力する。これにより、持ち出しデータに対するアクセス要求を演算ノード100bから受けた演算ノード100aの動作は終了する。次に、アクセス要求の発行側の演算ノード100bの動作を説明する。
ステップS20では、演算ノード100bのキャッシュメモリ300bは、自演算ノード100bから持ち出された持ち出しデータに対するアクセス要求を、持ち出しデータの持ち出し先の演算ノード100aに出力する。
次に、ステップS22では、キャッシュメモリ300bは、持ち出しデータのアクセス要求に対する応答を、アクセス要求の出力先の演算ノード100aから受ける。
次に、ステップS24では、キャッシュメモリ300bは、アクセス要求に対する応答がすれ違い情報か否かを判定する。アクセス要求に対する応答がすれ違い情報である場合、演算ノード100bの動作は、ステップS26に移る。一方、アクセス要求に対する応答がすれ違い情報でない場合、すなわち、アクセス要求に対する応答として演算ノード100bが持ち出しデータ(要求データ)を受信した場合、演算ノード100bによるアクセス要求に対する処理は終了する。
ステップS26では、キャッシュメモリ300bは、演算ノード100aから自演算ノード100bの記憶装置400bに書き戻された持ち出しデータ(最新の要求データ)を、自演算ノード100bの記憶装置400bから読み出す。このように、要求のすれ違いが発生した場合でも、演算ノード100bのキャッシュメモリ300bが正しい要求データにアクセスできるため、キャッシュコヒーレンシを維持することができる。なお、演算処理装置10の動作は、図2に示す例に限定されない。
以上、図1および図2に示す実施形態では、キャッシュメモリ300の判定部310は、持ち出しデータに対する要求のすれ違いが発生したか否かを判定する。また、キャッシュメモリ300の応答情報生成部320は、要求のすれ違いが発生した場合に、要求のすれ違いが発生したことを示すすれ違い情報を、アクセス要求の要求元の演算ノード100(すなわち、持ち出し元の演算ノード100)に出力する。これにより、アクセス要求の要求元の演算ノード100は、アクセス要求で要求したデータに対する要求のすれ違いが発生したことを認識でき、自演算ノード100の記憶装置400から最新のデータ(正しいデータ)を読み出すことができる。この結果、要求のすれ違いが発生した場合でも、キャッシュコヒーレンシを維持することができる。
また、すれ違い情報を用いてキャッシュコヒーレンシ制御を実行することにより、リプレースバッファを用いてキャッシュコヒーレンシ制御を実行する場合に比べて、キャッシュコヒーレンシ制御を実現する回路の規模を削減できる。すなわち、キャッシュコヒーレンシ制御に対応した演算処理装置10の回路規模を削減することができる。また、キャッシュコヒーレンシ制御を実現する回路の規模を削減したことにより、演算処理装置10の消費電力を削減することができる。また、キャッシュコヒーレンシ制御を実現する回路の規模を削減したことにより、演算処理装置10の製造コストを削減することができる。
図3は、演算処理装置および演算処理装置の制御方法の別の実施形態を示す。図1で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図3に示す演算処理装置12は、CPU等のプロセッサである。演算処理装置12は、複数の記憶装置400(400a、400b、400c)の各々がそれぞれ割り当てられる複数の演算ノード102(102a、102b、102c)と、複数の演算ノード102に接続されるバス120と、バス制御部122とを有する。以下、演算ノード102に割り当てられる記憶装置400は、演算ノード102の記憶装置400とも称される。複数の演算ノード102は、複数の記憶装置400がそれぞれ割り当てられる複数の演算部の一例である。なお、演算ノード102の数は、3つに限定されない。
図3においても、図1と同様に、演算処理装置12の説明等において複数の演算ノード102を区別するために、符号の末尾にアルファベットの小文字(a、b、c)を付している。また、演算ノード102が有する各要素についても、演算ノード102に付したアルファベットと同じアルファベットを符号の末尾に付している。
各演算ノード102は、例えば、演算を実行するCPUコア等のプロセッサコア210と1次キャッシュ220とを含むコア201と、2次キャッシュ302と、プロセッサコア210が使用するデータ等を記憶する記憶装置400とを有する。プロセッサコア210は、演算を実行する演算実行部の一例である。2次キャッシュ302は、自演算ノード102の記憶装置400に記憶されるデータと複数の演算ノード102のうちの他の演算ノード102の記憶装置400から持ち出される持ち出しデータとを保持するキャッシュメモリの一例である。
1次キャッシュ220および2次キャッシュ302は、記憶装置400に比べて高速にアクセス可能なキャッシュメモリであり、自演算ノード102のプロセッサコア210が使用するデータを保持する。例えば、1次キャッシュ220は、2次キャッシュ302に比べて高速にアクセス可能なキャッシュメモリであり、プロセッサコア210と2次キャッシュ302との間に配置される。1次キャッシュ220は、2次キャッシュ302に保持されるデータの一部を保持し、プロセッサコア210から受けるアクセス要求で要求されたデータをプロセッサコア210に転送する。なお、1次キャッシュ220は、アクセス要求で要求されたデータを保持していない場合(1次キャッシュ220がキャッシュミスした場合)、2次キャッシュ302にアクセス要求を転送する。
2次キャッシュ302は、例えば、1次キャッシュ220に比べて大容量のキャッシュメモリであり、1次キャッシュ220と記憶装置400との間に配置される。また、複数の演算ノード102の各々がそれぞれ有する複数の2次キャッシュ302は、バス120に接続され、互いに通信可能である。例えば、各演算ノード102の記憶装置400に記憶されたデータは、2次キャッシュ302およびバス120を介して、他の演算ノード102に持ち出される。このため、各演算ノード102の2次キャッシュ302は、自演算ノード102の記憶装置400に記憶されるデータの状態(例えば、排他状態、共有状態、無効状態等)を管理する。
このように、2次キャッシュ302は、複数の記憶装置400のいずれかに記憶されるデータを保持する。なお、2次キャッシュ302の動作は、図1に示したキャッシュメモリ300と同一または同様である。例えば、2次キャッシュ302の動作の概要は、図1のキャッシュメモリ300の説明で、演算ノード100、キャッシュメモリ300、プロセッサコア200をそれぞれ演算ノード102、2次キャッシュ302、コア202に読み替えることにより説明される。なお、2次キャッシュ302の詳細は、図4で説明する。
バス制御部122は、バス120を制御して、各2次キャッシュ302から他の2次キャッシュ302への情報等のバス120を介した転送を制御する。例えば、バス制御部122は、持ち出しデータの持ち出し元の演算ノード102に出力される書き戻し情報およびすれ違い情報を出力順と同じ順番で持ち出し元の演算ノード102に到達させる制御をバス120に対して実行する。書き戻し情報は、図1で説明したように、持ち出しデータの持ち出し元の演算ノード102の記憶装置400への持ち出しデータの書き戻しを指示する情報である。また、すれ違い情報は、2次キャッシュ302が書き戻し情報を出力した後に持ち出しデータに対するアクセス要求を受けるすれ違いが発生したことを示す情報である。
なお、演算処理装置12の構成は、図3に示す例に限定されない。例えば、演算ノード102(演算部)は、記憶装置400を除いて定義されてもよい。すなわち、複数の演算ノード102にそれぞれ割り当てられる複数の記憶装置400は、演算ノード102の外部または演算処理装置12の外部に配置されてもよい。また、各演算ノード102において、1次キャッシュ220および2次キャッシュ302とは別のキャッシュメモリが1次キャッシュ220と2次キャッシュ302との間に追加されてもよい。あるいは、1次キャッシュ220は省かれてもよい。
図4は、図3に示した2次キャッシュ302の一例を示す。また、図4の括弧内に、2次キャッシュ302が送受信するパケットの一例を示す。2次キャッシュ302は、ローカルポート330、リモートポート340、選択部350、パイプライン部360、データ保持部370およびタグ部380、390を有する。
ローカルポート330は、自演算ノード102からのアクセス要求等の要求を受ける。リモートポート340は、他の演算ノード102からのアクセス要求等の要求を受ける。選択部350は、ローカルポート330から受ける要求およびリモートポート340から受ける要求のいずれかを選択し、選択した要求をパイプライン部360に投入する。
パイプライン部360は、パイプライン処理を実行するパイプライン処理部362と、パイプライン処理部362の動作を制御するパイプライン制御部364とを有する。パイプライン処理部362は、選択部350から受ける要求に基づく処理を複数のステージで順次実行する。
パイプライン制御部364は、判定部310および応答情報生成部320を有する。判定部310および応答情報生成部320は、図1に示した判定部310および応答情報生成部320と同一または同様である。例えば、判定部310は、持ち出しデータに対するアクセス要求を持ち出しデータの持ち出し元の演算ノード102から受けた場合に、持ち出しデータに対する要求のすれ違いが発生したか否かを判定する。応答情報生成部320は、アクセス要求等の要求に対する応答を示す情報を要求元の演算ノード102等に出力する。例えば、応答情報生成部320は、持ち出しデータに対する要求のすれ違いが発生した場合に、すれ違いが発生したことを示すすれ違い情報を、アクセス要求に対する応答として持ち出し元の演算ノード102に出力する。図4に示す符号REQIDは、アクセス要求等の要求や要求に対する応答等の情報(すれ違い情報、要求に対する処理の完了を示す完了情報等)を示し、符号APは、要求の対象となる対象アドレス(要求データのアドレス等)を示す。
データ保持部370は、自演算ノード102のプロセッサコア210が使用するデータを保持する。例えば、データ保持部370は、複数の記憶装置400のいずれかに記憶されるデータを保持する。図4に示す符号DATAは、例えば、アクセス要求で要求された要求データ等のデータである。2次キャッシュ302は、図4の括弧内に示すように、情報REQIDと対象アドレスAPとデータDATAとを含むパケットを送受信する。なお、データDATAを転送する必要がない応答等では、データDATAはパケットから省かれてもよい。以下、2次キャッシュ302が送受信するパケットは、情報REQIDで示される情報(アクセス要求、すれ違い情報、完了情報等)と同じ名称で称される場合もある。
タグ部380は、データ保持部370に保持されるデータの状態を示す情報を保持する。MESIプロトコルでは、データの状態は、”変更(Modified)”、”排他(Exclusive)”、”共有(Shared)”、”無効(Invalid)”のいずれかに分類される。例えば、自演算ノード102のプロセッサコア210等により書き換えられたダーティなデータの状態は、”変更”に分類される。また、複数の2次キャッシュ302のうちの該当する1つの2次キャッシュ302のみに保持され、更新されていないクリーンなデータの状態は、”排他”に分類される。そして、複数の2次キャッシュ302に保持されているクリーンなデータの状態は、”共有”に分類される。
タグ部390は、自演算ノード102の記憶装置400に記憶されるデータの状態(例えば、排他状態、共有状態、無効状態等)を示す情報を保持する。記憶装置400に記憶されるデータの状態のうち、排他状態は、図1で説明したように、データが更新されていない保証はない。すなわち、記憶装置400に記憶されるデータの状態では、排他状態は、MESIプロトコルにおける”変更”で保持されている状態を含む。
図5は、図3に示した演算処理装置12の動作の一例を示す。図5に示す動作は、演算処理装置の制御方法の一態様である。なお、図5に示す動作は、自演算ノード102および他の演算ノード102のいずれかからアクセス要求を受けた2次キャッシュ302の動作の一例である。2次キャッシュ302は、アクセス要求を受ける度に、ステップS100の処理を実行する。
ステップS100では、パイプライン部360は、タグ部380を検索して、アクセス要求で要求された要求データをデータ保持部370が保持しているかを検索する。
次に、ステップS200では、パイプライン部360は、2次キャッシュ302がキャッシュヒットしたか否かを判定する。2次キャッシュ302がキャッシュヒットした場合、すなわち、要求データをデータ保持部370が保持している場合、2次キャッシュ302の動作は、ステップS210に移る。一方、2次キャッシュ302がキャッシュミスした場合、すなわち、要求データをデータ保持部370が保持していない場合、2次キャッシュ302の動作は、ステップS300に移る。
ステップS210では、パイプライン部360は、処理対象のアクセス要求がローカルポート330で受信したアクセス要求か否かを判定する。処理対象のアクセス要求がローカルポート330で受信したアクセス要求である場合、すなわち、処理対象のアクセス要求が自演算ノード102からのアクセス要求である場合、2次キャッシュ302の動作は、ステップS220に移る。一方、処理対象のアクセス要求がリモートポート340で受信したアクセス要求である場合、すなわち、処理対象のアクセス要求が他の演算ノード102からのアクセス要求である場合、2次キャッシュ302の動作は、ステップS230に移る。
ステップS220では、2次キャッシュ302は、データ保持部370から読み出した要求データを含む完了情報を、自演算ノード102(アクセス要求の要求元の演算ノード102)に発行する。なお、完了情報は、アクセス要求に対する応答であり、アクセス要求に基づく処理の完了を示す。
このように、2次キャッシュ302は、自演算ノード102からのアクセス要求で要求された要求データをデータ保持部370が保持している場合、データ保持部370に保持されている要求データを自演算ノード102のコア202に出力して、動作を終了する。
ステップS230では、2次キャッシュ302は、データ保持部370から読み出した要求データを含む完了情報を、アクセス要求の要求元の演算ノード102(他の演算ノード102)に発行する。これにより、要求データが要求元の演算ノード102に転送される。なお、アクセス要求が排他的にデータを読み出す読み出し要求等である場合、2次キャッシュ302は、要求元の演算ノード102に転送した要求データを、データ保持部370から削除する。
ステップS230の処理の終了により、他の演算ノード102からのアクセス要求で要求された要求データをデータ保持部370が保持している場合の2次キャッシュ302の動作は終了する。一方、要求データをデータ保持部370が保持していない場合は、上述したように、ステップS300の処理が実行される。
ステップS300では、パイプライン部360は、処理対象のアクセス要求がローカルポート330で受信したアクセス要求か否かを判定する。処理対象のアクセス要求がローカルポート330で受信したアクセス要求である場合、すなわち、処理対象のアクセス要求が自演算ノード102からのアクセス要求である場合、2次キャッシュ302の動作は、ステップS310に移る。一方、処理対象のアクセス要求がリモートポート340で受信したアクセス要求である場合、すなわち、処理対象のアクセス要求が他の演算ノード102からのアクセス要求である場合、2次キャッシュ302の動作は、ステップS400に移る。
ステップS310では、2次キャッシュ302は、アクセス要求で要求された要求データを読み出す読み出し要求を、自演算ノード102の記憶装置400、または、他の演算ノード102に発行する。例えば、2次キャッシュ302は、要求データが自演算ノード102の記憶装置400に記憶されるデータである場合、要求データの読み出し要求を、自演算ノード102の記憶装置400に出力する。なお、2次キャッシュ302は、要求データが自演算ノード102の記憶装置400から他の演算ノード102に持ち出されている場合、要求データの読み出し要求を、要求データの持ち出し先の演算ノード102に出力する。また、2次キャッシュ302は、例えば、要求データが他の演算ノード102の記憶装置400に記憶されるデータである場合、要求データの読み出し要求を、要求データを管理する演算ノード102(他の演算ノード102)に出力する。
2次キャッシュ302は、ステップS310の処理を実行することにより、要求データを取得する。そして、2次キャッシュ302は、取得した要求データを自演算ノード102のコア202に出力して、動作を終了する。
ステップS400では、2次キャッシュ302(より詳細には、判定部310)は、要求のすれ違いが発生したか否かを判定する。例えば、要求データが他の演算ノード102の記憶装置400に記憶されるデータである場合、要求データは、他の演算ノード102の記憶装置400から持ち出された持ち出しデータである。そして、要求データが持ち出しデータであるにも拘わらず、要求データをデータ保持部370が保持していない状態は、アクセス要求を2次キャッシュ302が受ける前に要求データが2次キャッシュ302から追い出された状態である。すなわち、要求データが持ち出しデータであるにも拘わらず、要求データをデータ保持部370が保持していない状態は、要求のすれ違いが発生した状態である。このため、判定部310は、例えば、要求データが他の演算ノード102の記憶装置400に記憶されるデータである場合、要求のすれ違いが発生したと判定する。
要求のすれ違いが発生した場合、演算ノード102の動作は、ステップS420に移る。一方、要求のすれ違いが発生していない場合、演算ノード102の動作は、ステップS410に移る。
ステップS410では、2次キャッシュ302は、アクセス要求で要求された要求データを読み出す読み出し要求を、自演算ノード102の記憶装置400に発行する。すなわち、2次キャッシュ302は、要求データを自演算ノード102の記憶装置400から読み出す。そして、2次キャッシュ302は、自演算ノード102の記憶装置400から読み出した要求データを要求元の演算ノード102に出力して、動作を終了する。
ステップS420では、2次キャッシュ302(より詳細には、応答情報生成部320)は、要求のすれ違いが発生したことを示すすれ違い情報を、要求元の演算ノード102に発行して、動作を終了する。なお、要求のすれ違いが発生する場合、要求データが持ち出しデータであるため、要求元の演算ノード102は、要求データ(持ち出しデータ)の持ち出し元の演算ノード102である。
すれ違い情報を受けた演算ノード102は、図6に示すように、自演算ノード102の記憶装置400に書き戻された持ち出しデータ(アクセス要求で要求したデータ)を読み出す。これにより、要求のすれ違いが発生した場合でも、キャッシュコヒーレンシを維持することができる。なお、演算処理装置12の動作は、図5に示す例に限定されない。
図6は、要求のすれ違いが発生した場合の演算処理装置12の動作の一例を示す。図6に示す例では、アクセス対象である要求データは、演算ノード102aの記憶装置400aのアドレスAに記憶されるデータと演算ノード102aの記憶装置400aのアドレスBに記憶されるデータである。要求データを記憶する記憶装置400を含む演算ノード102aは、要求データのアドレスA、Bのメモリ管理ノードであり、ホームとも称される。なお、アクセス要求等の要求の発行元の2次キャッシュ302を含む演算ノード102は、ローカルとも称される。さらに、ローカルでない演算ノード102は、リモートとも称される。ローカルの演算ノード102は、ホームの演算ノード102を兼ねる場合もある。また、リモートの演算ノード102は、ホームの演算ノード102を兼ねる場合もある。
先ず、演算ノード102b(ローカル)のパイプライン部360は、アドレスBのデータを読み出す読み出し要求READ[B]を、自演算ノード102bから受ける。そして、演算ノード102bのパイプライン部360は、自演算ノード102bのタグ部380にアドレスBのデータの読み出しを要求する(図6(P10))。
演算ノード102bのデータ保持部370がアドレスBのデータを保持していないため、演算ノード102bの2次キャッシュ302bはキャッシュミスする(図6(P11))。このため、演算ノード102b(ローカル)の2次キャッシュ302bは、演算ノード102a(ホーム)に、読み出し要求READ[B]を出力する。
演算ノード102a(ホーム)のパイプライン部360は、演算ノード102b(ローカル)から読み出し要求READ[B]を受ける(図6(P12))。そして、演算ノード102aのパイプライン部360は、アドレスBのデータの読み出しを実行して、アドレスBのデータを含む読み出し完了情報RCPLT[B]を演算ノード102bに出力する。
読み出し完了情報RCPLT[B]を受けた演算ノード102bのパイプライン部360は、読み出し完了情報RCPLT[B]に含まれるアドレスBのデータを、自演算ノード102bのデータ保持部370に格納する(図6(P13))。
なお、演算ノード102bのパイプライン部360は、データを格納する空き領域がデータ保持部370にない場合、空き領域を確保するために、データを記憶装置400に書き戻すライトバックを、読み出し完了情報RCPLT[B]受ける前に実行する。図6に示す例では、演算ノード102bのパイプライン部360は、アドレスAのデータを演算ノード102a(ホーム)の記憶装置400aに書き戻すライトバックを指示する書き戻し情報WRKB[A]を発行する(図6(P20))。
これにより、演算ノード102bのタグ部380は、アドレスAのデータに対して、ライトバックを実行する(図6(P21))。この結果、アドレスAのデータは、演算ノード102b(ローカル)のデータ保持部370から追い出され、演算ノード102a(ホーム)の記憶装置400aに書き戻される(図6(P22))。例えば、アドレスAのデータがダーティの場合、アドレスAのデータを含む書き戻し情報WRKB[A]が演算ノード102bから演算ノード102aに出力される。アドレスAのデータがクリーンの場合、アドレスAのデータを含まない書き戻し情報WRKB[A]が演算ノード102bから演算ノード102aに出力されてもよい。
また、図6に示す例では、演算ノード102aのパイプライン部360は、演算ノード102bから書き戻し情報WRKB[A]を受ける前に、アドレスAのデータを排他的に読み出す読み出し要求READ[A]を自演算ノード102aのコア202aから受ける。アドレスAのデータは、演算ノード102bの2次キャッシュ302bから追い出されているが、書き戻し情報WRKB[A]は、演算ノード102aに到着していない。このため、演算ノード102aは、アドレスAのデータを演算ノード102bの2次キャッシュ302bが保持していると認識する。したがって、演算ノード102aのパイプライン部360は、アドレスAのデータを排他的に読み出す読み出し要求READ[A]を演算ノード102bに出力する(図6(P30))。
演算ノード102a(ホーム)のパイプライン部360は、他の演算ノード102bに持ち出されたアドレスAのデータにアクセスする場合、矛盾の発生を防ぐために、アドレスAのデータの状態の更新を、応答が返ってくるまでロックする(図6(P31))。なお、書き戻し情報WRKB[A]によるデータの状態の更新は、ロック対象から除外される。このため、上述したように、演算ノード102b(ローカル)のデータ保持部370から追い出されたアドレスAのデータは、演算ノード102a(ホーム)の記憶装置400aに書き戻される(図6(P22))。
演算ノード102aからの読み出し要求READ[A]を受けた演算ノード102bのパイプライン部360は、自演算ノード102bのタグ部380にアドレスAのデータの読み出しを要求する(図6(P32))。アドレスAのデータは、アドレスAのデータに対するライトバックにより、演算ノード102bのデータ保持部370から既に追い出されている。このため、演算ノード102bの2次キャッシュ302bは、キャッシュミスする(図6(P32))。
演算ノード102bの2次キャッシュ302bは、読み出し要求READ[A]で要求された要求データが演算ノード102aの記憶装置400aから持ち出した持ち出しデータであるにも拘わらず、キャッシュミスしたため、要求のすれ違いが発生したと判定する。このため、演算ノード102bの2次キャッシュ302bは、要求のすれ違いが発生したことを示すすれ違い情報RCPLTcrs[A]を、読み出し要求READ[A]の応答として、演算ノード102aに出力する。
このように、2次キャッシュ302bは、書き戻し情報WRKB[A]を演算ノード102aに出力した後に読み出し要求READ[A]を演算ノード102aから受けた場合、すれ違い情報RCPLTcrs[A]を演算ノード102aに出力する。演算ノード102a(ホーム)のパイプライン部360は、演算ノード102bからすれ違い情報RCPLTcrs[A]を受ける(図6(P33))。これにより、アドレスAのデータの状態の更新に対するロックは、解除される。
また、すれ違い情報RCPLTcrs[A]を受けた演算ノード102aのパイプライン部360は、読み出し要求READ[A]で要求したアドレスAの最新のデータが自演算ノード100aの記憶装置400aに書き戻されたことを認識する。このため、演算ノード102aのパイプライン部360は、自演算ノード102aの記憶装置400aに書き戻されたアドレスAのデータを読み出す。例えば、演算ノード102aのパイプライン部360は、読み出し要求READ[A]を自演算ノード100aの記憶装置400aに出力する(図6(P34))。そして、演算ノード102aのパイプライン部360は、アドレスAのデータを含む読み出し完了情報RCPLT[A]を受ける(図6(P35))。これにより、アドレスAのデータは、演算ノード102aの2次キャッシュ302aに保持される。そして、演算ノード102aの2次キャッシュ302aは、自演算ノード102aのコア202aにアドレスAのデータを転送して、一連の動作を終了する。
このように、2次キャッシュ302bが書き戻し情報WRKB[A]を演算ノード102aに出力した後に読み出し要求READ[A]を演算ノード102aから受けるすれ違いが発生した場合でも、キャッシュコヒーレンシを維持することができる。すなわち、要求のすれ違いが発生した場合でも、すれ違い情報RCPLTcrsを用いることにより、図7に示すリプレースバッファ372EX等を用いることなく、キャッシュコヒーレンシを維持することができる。
ここで、例えば、書き戻し情報WRKB[A]がすれ違い情報RCPLTcrs[A]に追い越された場合、記憶装置400aから古いデータが読み出された後に、演算ノード102bで更新された最新のデータが記憶装置400aに書き戻される。この場合、キャッシュコヒーレンシが維持されない。このため、バス制御部122は、書き戻し情報WRKB[A]とすれ違い情報RCPLTcrs[A]との転送の制御をバス120に対して実行し、書き戻し情報WRKB[A]がすれ違い情報RCPLTcrs[A]に追い越されることを防止する。これにより、アドレスAのデータが記憶装置400aに書き戻される前に、アドレスAの古いデータが記憶装置400aから読み出されることを防止することができる。すなわち、キャッシュコヒーレンシを維持することができる。
例えば、読み出し完了情報RCPLT、すれ違い情報RCPLTcrs等は、読み出し要求READ等の要求に対する処理の完了を要求元に通知する種類の情報である。書き戻し情報WRKBは、書き戻しを命令する類いの情報であるが、応答情報生成部320は、書き戻し情報WRKBを、すれ違い情報RCPLTcrsと同じ種類の情報として生成する。バス制御部122は、書き戻し情報WRKBとすれ違い情報RCPLTcrsとが互いに同じ種類に属するため、書き戻し情報WRKB[A]とすれ違い情報RCPLTcrs[A]とを出力順と同じ順番で演算ノード102aに到達させる制御を実行する。これにより、書き戻し情報WRKB[A]がすれ違い情報RCPLTcrs[A]に追い越されることを防止でき、キャッシュコヒーレンシを維持することができる。
図7は、図4に示した2次キャッシュ302の比較例を示す。比較例の2次キャッシュ302EXでは、リプレースバッファ372EXが図4に示した2次キャッシュ302に追加される。また、2次キャッシュ302EXは、図4に示したパイプライン部360、データ保持部370およびタグ部380の代わりに、パイプライン部360EX、データ保持部370EXおよびタグ部380EXを有する。2次キャッシュ302EXのその他の構成は、図4に示した2次キャッシュ302と同一または同様である。図4で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。
2次キャッシュ302EXは、ローカルポート330、リモートポート340、選択部350、パイプライン部360EX、データ保持部370EX、リプレースバッファ372EXおよびタグ部380EX、390を有する。ローカルポート330は、自演算ノード102からのアクセス要求等の要求を受ける。リモートポート340は、他の演算ノード102からのアクセス要求等の要求を受ける。選択部350は、ローカルポート330から受ける要求およびリモートポート340から受ける要求のいずれかを選択し、選択した要求をパイプライン部360EXに投入する。
パイプライン部360EXは、パイプライン処理を実行するパイプライン処理部362EXと、パイプライン処理部362EXの動作を制御するパイプライン制御部364EXと、ライトバックをキャンセルするか否かを示すキャンセルフラグFLGとを有する。パイプライン処理部362EXは、選択部350から受ける要求に基づく処理を複数のステージで順次実行する。
パイプライン制御部364EXでは、図4に示した判定部310が2次キャッシュ302から省かれる。そして、パイプライン制御部364EXは、アクセス要求等の要求に対する応答を示す情報(REQID、PA)を要求元の演算ノード102等に出力する応答情報生成部320EXを、図4に示した応答情報生成部320の代わりに有する。
データ保持部370EXは、自演算ノード102のプロセッサコア210が使用するデータを記憶し、アクセス要求等で要求されるデータDATAを出力する。
リプレースバッファ372EXは、持ち出しデータが持ち出し元の演算ノード102の記憶装置400に書き戻される際に、データ保持部370EXから追い出される書き戻し対象の持ち出しデータを、記憶装置400への書き戻しが終了するまで保持する。
タグ部380EXは、データ保持部370EXに保持されるデータの状態を示す情報を保持する。タグ部390は、自演算ノード102の記憶装置400に記憶されるデータの状態を示す情報を保持する。
2次キャッシュ302EXは、持ち出しデータのライトバックと持ち出しデータに対するアクセス要求とのすれ違いが発生した場合、リプレースバッファ372EXが保持する持ち出しデータを、アクセス要求の要求元の演算ノード102に転送する。これにより、要求のすれ違いが発生した場合でも、キャッシュコヒーレンシが維持される。
図8は、図7に示した2次キャッシュ302EXを有する演算処理装置の動作の一例を示す。図8に示す例では、図6と同様に、アクセス対象であるアドレスAのデータおよびアドレスBのデータは、演算ノード102aの記憶装置400aに記憶されるデータである。
アドレスBのデータを読み出す読み出し要求READ[B]に基づく動作は、図6に示した動作と同一または同様である(図8(P10)、(P11)、P(12)、P13))。
演算ノード102bのパイプライン部360EXは、空き領域を確保するために、アドレスAのデータを演算ノード102a(ホーム)の記憶装置400aに書き戻すライトバックを指示する書き戻し情報WRKB[A]を発行する(図8(P40))。これにより、演算ノード102bのタグ部380EXは、アドレスAのデータに対して、ライトバックを実行する(図8(P41))。この結果、アドレスAのデータは、演算ノード102b(ローカル)のデータ保持部370EXから追い出され、演算ノード102bのリプレースバッファ372EXに書き込まれる(図8(P42))。
また、演算ノード102aは、例えば、アドレスAのデータがダーティの場合、アドレスAのデータを含む書き戻し情報WRKB[A]を演算ノード102bから受ける(図8(P43))。アドレスAのデータがクリーンの場合、アドレスAのデータを含まない書き戻し情報WRKB[A]が演算ノード102bから演算ノード102aに出力されてもよい。なお、図8に示す例では、書き戻し情報WRKB[A]は、書き戻しを命令する種類の情報として生成され、要求に対する処理の完了を要求元に通知する読み出し完了情報RCPLT[A]等とは異なる種類に属する。
また、図6と同様に、演算ノード102aのパイプライン部360EXは、演算ノード102bから書き戻し情報WRKB[A]を受ける前に、アドレスAのデータを排他的に読み出す読み出し要求READ[A]を自演算ノード102aのコア202aから受ける。アドレスAのデータは、演算ノード102bの2次キャッシュ302EXから追い出されているが、書き戻し情報WRKB[A]は、演算ノード102aに到着していない。このため、演算ノード102aは、アドレスAのデータを演算ノード102bの2次キャッシュ302EXが保持していると認識する。
したがって、演算ノード102aのパイプライン部360EXは、アドレスAのデータを排他的に読み出す読み出し要求READ[A]を演算ノード102bに出力する(図8(P50))。そして、演算ノード102aのパイプライン部360EXは、図6と同様に、アドレスAのデータの状態の更新を、応答が返ってくるまでロックする(図8(P51))。また、演算ノード102aのパイプライン部360EXは、処理を命令する種類の情報として生成された書き戻し情報WRKB[A]を、アドレスAのデータの状態の更新をロックした状態で受ける(図8(P43))。このため、演算ノード102aのパイプライン部360EXは、アドレスAのデータのライトバックを実行せずに、ロックが解除されるまで待機する。
演算ノード102aからの読み出し要求READ[A]を受けた演算ノード102bのパイプライン部360EXは、自演算ノード102bのタグ部380EXにアドレスAのデータの読み出しを要求する。アドレスAのデータは、アドレスAのデータに対するライトバックにより、演算ノード102bのデータ保持部370EXから既に追い出されている。このため、演算ノード102bの2次キャッシュ302EXは、キャッシュミスする(図8(P52))。
なお、上述したように、アドレスAのデータは、演算ノード102bのリプレースバッファ372EXに書き込まれている(図8(P42))。このため、演算ノード102bの2次キャッシュ302EXは、自演算ノード102bのリプレースバッファ372EXに書き込んだアドレスAのデータを、読み出し完了情報RCPLT[A]として、演算ノード102aに出力する(図8(P53))。
演算ノード102bからの読み出し完了情報RCPLT[A]を受けた演算ノード102aのパイプライン部360EXは、アドレスAのデータの状態の更新に対するロックを解除する(図8(P54))。さらに、演算ノード102aのパイプライン部360EXは、キャンセルフラグFLGを“1”にセットする。(図8(P55))。
演算ノード102aのパイプライン部360EXは、キャンセルフラグFLGが“1”であるため、ロックを解除しても、アドレスAのデータに対するライトバックを実行せずにキャンセルする(図8(P44))。そして、演算ノード102aのパイプライン部360EXは、ライトバックをキャンセルしたため、キャンセルフラグFLGを“0”にセットする(図8(P56))。また、演算ノード102aのパイプライン部360EXは、アドレスAのデータに対するライトバックキャンセルしたことを示す書き戻し完了情報WBCPLT[A]を、書き戻し情報WRKB[A]の応答として、演算ノード102bに出力する。
演算ノード102aからの書き戻し完了情報WBCPLT[A]を受けた演算ノード102bのリプレースバッファ372EXは、アドレスAのデータを削除する。これにより、演算ノード102a、102bは、一連の動作を終了する。
このように、要求のすれ違いが発生した場合でも、リプレースバッファ372EXから要求データを要求元に転送することにより、キャッシュコヒーレンシが維持される。なお、2次キャッシュ302EXからリプレースバッファ372EXが単純に省かれた2次キャッシュでは、読み出し要求READ[A]を受けた演算ノード102bの2次キャッシュがキャッシュミスした場合、演算ノード102aにデータを返す方法がない。このため、読み出し要求READ[A]に対する一連のフローが停止し、キャッシュコヒーレンシを維持することができなくなる。また、2次キャッシュ302EXからキャンセルフラグFLGが省かれた2次キャッシュでは、アドレスAの最新のデータを含む読み出し完了情報RCPLT[A]を受けた後に、アドレスAの古いデータをライトバックする場合がある。
リプレースバッファ372EXおよびキャンセルフラグFLGを有する2次キャッシュ302EXでは、要求のすれ違いが発生した場合でもキャッシュコヒーレンシが維持されるが、図4に示した2次キャッシュ302に比べて、回路規模が増加する。換言すれば、すれ違い情報RCPLTcrsを用いてキャッシュコヒーレンシ制御を実現する演算処理装置12は、リプレースバッファ372EX等を用いる場合に比べて、回路規模の増加を抑制することができる。このように、演算処理装置12では、回路規模を削減することができる。
以上、図3から図6に示す実施形態においても、図1および図2に示した実施形態と同様の効果を得ることができる。例えば、2次キャッシュ302の判定部310は、持ち出しデータに対する要求のすれ違いが発生したか否かを判定する。また、2次キャッシュ302の応答情報生成部320は、要求のすれ違いが発生した場合に、要求のすれ違いが発生したことを示すすれ違い情報RCPLTcrsを、アクセス要求の要求元(すなわち、持ち出しデータの持ち出し元)の演算ノード102に出力する。これにより、アクセス要求の要求元の演算ノード102は、アクセス要求で要求したデータに対する要求のすれ違いが発生したことを認識でき、自演算ノード102の記憶装置400に書き戻された最新のデータ(正しいデータ)を読み出すことができる。この結果、要求のすれ違いが発生した場合でも、キャッシュコヒーレンシを維持することができる。
また、すれ違い情報RCPLTcrsを用いてキャッシュコヒーレンシ制御を実行することにより、リプレースバッファ372EX等を用いてキャッシュコヒーレンシ制御を実行する場合に比べて、キャッシュコヒーレンシ制御を実現する回路の規模を削減できる。すなわち、キャッシュコヒーレンシ制御に対応した演算処理装置12の回路規模を削減することができる。また、キャッシュコヒーレンシ制御を実現する回路の規模を削減したことにより、演算処理装置12の消費電力を削減することができる。また、キャッシュコヒーレンシ制御を実現する回路の規模を削減したことにより、演算処理装置12の製造コストを削減することができる。
また、バス制御部122は、持ち出し元の演算ノード102に出力される書き戻し情報WRKBおよびすれ違い情報RCPLTcrsを出力順と同じ順番で持ち出し元の演算ノード102に到達させる制御をバス120に対して実行する。これにより、更新された持ち出しデータが記憶装置400に書き戻される前に古い持ち出しデータが記憶装置400から読み出されることを防止することができ、キャッシュコヒーレンシを維持することができる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
10、12‥演算処理装置;100、102‥演算ノード;200、210‥プロセッサコア;300‥キャッシュメモリ;302、302EX‥2次キャッシュ;310‥判定部;320、320EX‥応答情報生成部;330‥ローカルポート;340‥リモートポート;350‥選択部;360、360EX‥パイプライン部;370、370EX‥データ保持部;380、380EX、390‥タグ部;362、362EX‥パイプライン処理部;364、364EX‥パイプライン制御部;400‥記憶装置;FLG‥キャンセルフラグ

Claims (5)

  1. 複数の記憶装置の各々がそれぞれ割り当てられる複数の演算部を有する演算処理装置において、
    前記複数の演算部の各々は、
    演算を実行する演算実行部と、
    自演算部に割り当てられる記憶装置が記憶するデータと、前記複数の演算部のうちの他の演算部に割り当てられる記憶装置から持ち出される持ち出しデータと、を保持するキャッシュメモリとを有し、
    前記キャッシュメモリは、
    前記持ち出しデータに対するアクセス要求を前記持ち出しデータの持ち出し元の演算部から受けた場合、前記持ち出し元の演算部に割り当てられる記憶装置への前記持ち出しデータの書き戻しを指示する書き戻し情報を出力した後に前記持ち出しデータに対する前記アクセス要求を受けるすれ違いが発生したかを判定する判定部と、
    前記すれ違いが発生した場合、前記すれ違いが発生したことを示すすれ違い情報を、前記アクセス要求に対する応答として前記持ち出し元の演算部に出力する応答情報生成部とを有する
    ことを特徴とする演算処理装置。
  2. 請求項1に記載の演算処理装置において、
    前記判定部は、前記持ち出し元の演算部からの前記アクセス要求で要求される前記持ち出しデータを自キャッシュメモリが保持していない場合、前記すれ違いが発生したと判定する
    ことを特徴とする演算処理装置。
  3. 請求項1または請求項2に記載の演算処理装置において、
    前記持ち出し元の演算部が有する前記キャッシュメモリは、前記アクセス要求に対する応答として、前記すれ違い情報を受けた場合、自演算部に割り当てられる記憶装置に書き戻された前記持ち出しデータを読み出す
    ことを特徴とする演算処理装置。
  4. 請求項1ないし請求項3のいずれか1項に記載の演算処理装置において、
    前記複数の演算部の各々が有する前記キャッシュメモリに接続されるバスと、
    前記持ち出し元の演算部に出力される前記書き戻し情報および前記すれ違い情報を出力順と同じ順番で前記持ち出し元の演算部に到達させる制御を前記バスに対して実行するバス制御部とをさらに有する
    ことを特徴とする演算処理装置。
  5. 複数の記憶装置の各々がそれぞれ割り当てられる複数の演算部を有する演算処理装置の制御方法において、
    前記複数の演算部の各々が有する演算実行部が、演算を実行し、
    前記複数の演算部の各々が有するキャッシュメモリが、自演算部に割り当てられる記憶装置が記憶するデータと、前記複数の演算部のうちの他の演算部に割り当てられる記憶装置から持ち出される持ち出しデータと、を保持し、
    前記持ち出しデータに対するアクセス要求を前記持ち出しデータの持ち出し元の演算部から受けた場合、前記キャッシュメモリが有する判定部が、前記持ち出し元の演算部に割り当てられる記憶装置への前記持ち出しデータの書き戻しを指示する書き戻し情報を出力した後に前記持ち出しデータに対する前記アクセス要求を受けるすれ違いが発生したかを判定し、
    前記すれ違いが発生した場合、前記キャッシュメモリが有する応答情報生成部が、前記すれ違いが発生したことを示すすれ違い情報を、前記アクセス要求に対する応答として前記持ち出し元の演算部に出力する
    ことを特徴とする演算処理装置の制御方法。
JP2017099969A 2017-05-19 2017-05-19 演算処理装置および演算処理装置の制御方法 Pending JP2018195183A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017099969A JP2018195183A (ja) 2017-05-19 2017-05-19 演算処理装置および演算処理装置の制御方法
US15/972,523 US10775870B2 (en) 2017-05-19 2018-05-07 System and method for maintaining cache coherency

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017099969A JP2018195183A (ja) 2017-05-19 2017-05-19 演算処理装置および演算処理装置の制御方法

Publications (1)

Publication Number Publication Date
JP2018195183A true JP2018195183A (ja) 2018-12-06

Family

ID=64271657

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017099969A Pending JP2018195183A (ja) 2017-05-19 2017-05-19 演算処理装置および演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US10775870B2 (ja)
JP (1) JP2018195183A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10565112B2 (en) * 2017-04-10 2020-02-18 Fungible, Inc. Relay consistent memory management in a multiple processor system
US10540288B2 (en) 2018-02-02 2020-01-21 Fungible, Inc. Efficient work unit processing in a multicore system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10161930A (ja) * 1996-11-29 1998-06-19 Hitachi Ltd マルチプロセッサシステムおよびキャッシュコヒーレンシ制御方法
US20140289474A1 (en) * 2013-03-25 2014-09-25 Fujitsu Limited Operation processing apparatus, information processing apparatus and method of controlling information processing apparatus
JP2017037538A (ja) * 2015-08-12 2017-02-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08185359A (ja) 1994-10-31 1996-07-16 Toshiba Corp メモリサブシステム
US8250311B2 (en) * 2008-07-07 2012-08-21 Intel Corporation Satisfying memory ordering requirements between partial reads and non-snoop accesses
US20140006716A1 (en) * 2011-12-29 2014-01-02 Simon C. Steeley, JR. Data control using last accessor information

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10161930A (ja) * 1996-11-29 1998-06-19 Hitachi Ltd マルチプロセッサシステムおよびキャッシュコヒーレンシ制御方法
US6298418B1 (en) * 1996-11-29 2001-10-02 Hitachi, Ltd. Multiprocessor system and cache coherency control method
US20140289474A1 (en) * 2013-03-25 2014-09-25 Fujitsu Limited Operation processing apparatus, information processing apparatus and method of controlling information processing apparatus
JP2014186676A (ja) * 2013-03-25 2014-10-02 Fujitsu Ltd 演算処理装置、情報処理装置及び情報処理装置の制御方法
JP2017037538A (ja) * 2015-08-12 2017-02-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Also Published As

Publication number Publication date
US10775870B2 (en) 2020-09-15
US20180335829A1 (en) 2018-11-22

Similar Documents

Publication Publication Date Title
CN101802796B (zh) 防止多核处理器中的写回竞争
JP4928812B2 (ja) タグ付きキャッシュ状態に基づいて下位レベル・キャッシュへの参照なしに相互接続ファブリック上にリクエストを送出するためのデータ処理システム、キャッシュ・システム、および方法
KR100634932B1 (ko) 멀티프로세서 시스템 내에서의 캐시 일관성에서 사용하기위한 전송 상태
US7814279B2 (en) Low-cost cache coherency for accelerators
US6615319B2 (en) Distributed mechanism for resolving cache coherence conflicts in a multi-node computer architecture
JP4572169B2 (ja) マルチプロセッサシステム及びその動作方法
US8176259B2 (en) System and method for resolving transactions in a cache coherency protocol
US7856534B2 (en) Transaction references for requests in a multi-processor network
JP2020009492A5 (ja)
US20060184742A1 (en) Victim cache using direct intervention
JP5445581B2 (ja) コンピュータシステム、制御方法、記録媒体及び制御プログラム
US20070022253A1 (en) Cache coherence protocol with speculative writestream
JP2008108256A (ja) コンピュータシステムの複数のプロセッサを結合するスイッチングシステムのデータストレージ
US20050198187A1 (en) System and method for providing parallel data requests
US20070011408A1 (en) Adaptive snoop-and-forward mechanisms for multiprocessor systems
JP4673585B2 (ja) メモリシステム制御装置およびメモリシステム制御方法
US20140006716A1 (en) Data control using last accessor information
US20060294319A1 (en) Managing snoop operations in a data processing apparatus
US7159079B2 (en) Multiprocessor system
US8464004B2 (en) Information processing apparatus, memory control method, and memory control device utilizing local and global snoop control units to maintain cache coherency
US8429353B2 (en) Distributed home-node hub
JP2022015514A (ja) 半導体装置
JPWO2010038301A1 (ja) メモリアクセス方法及び情報処理装置
US8145847B2 (en) Cache coherency protocol with ordering points
JP2018195183A (ja) 演算処理装置および演算処理装置の制御方法

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7426

Effective date: 20170803

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20170803

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20170804

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20180214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20180219

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20180219

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200213

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210112

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210302

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20210810