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

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

Info

Publication number
JP6428521B2
JP6428521B2 JP2015145934A JP2015145934A JP6428521B2 JP 6428521 B2 JP6428521 B2 JP 6428521B2 JP 2015145934 A JP2015145934 A JP 2015145934A JP 2015145934 A JP2015145934 A JP 2015145934A JP 6428521 B2 JP6428521 B2 JP 6428521B2
Authority
JP
Japan
Prior art keywords
cache memory
data
arithmetic processing
data block
cache
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.)
Expired - Fee Related
Application number
JP2015145934A
Other languages
English (en)
Other versions
JP2017027402A (ja
Inventor
洋平 金羽木
洋平 金羽木
小島 広行
広行 小島
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 JP2015145934A priority Critical patent/JP6428521B2/ja
Priority to US15/156,890 priority patent/US9910778B2/en
Publication of JP2017027402A publication Critical patent/JP2017027402A/ja
Application granted granted Critical
Publication of JP6428521B2 publication Critical patent/JP6428521B2/ja
Expired - Fee Related 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • 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/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/0817Cache consistency protocols using directory methods
    • G06F12/0822Copy directories
    • 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、演算処理装置及び演算処理装置の制御方法に関する。
CPU(Central Processing Unit)とメモリとの組を複数有し、複数のCPUで各メモリを共有する共有メモリ型のマルチプロセッサシステムの1つに、ディレクトリベースccNUMA(cache coherent Non Uniform Memory Access)型のマルチプロセッサシステムがある。ディレクトリベースccNUMA型のマルチプロセッサシステムでは、各CPUが、ディレクトリを用いて、自身と接続されたメモリに格納されているデータと各CPUがキャッシュメモリに保持したデータとのコヒーレンシを維持する。ディレクトリは、分散して所持するメモリのデータの所在等を示すものであり、それぞれのCPUが管理して制御を行う。
ディレクトリベースccNUMA型のマルチプロセッサシステムにおいて、ある要求を発行したCPUをLCPU(Local CPU)、その要求によってアクセスされるアドレスのディレクトリを有するCPUをHCPU(Home CPU)、それ以外のCPUをRCPU(Remote CPU)と呼ぶ。ディレクトリベースccNUMA型のマルチプロセッサシステムの構成例を図10に示す。図10に示すマルチプロセッサシステムは、CPU101(101−0、101−1、・・・)とメモリ105(105−0、105−1、・・・)との組を複数有する。CPU<#0>101−0、CPU<#1>101−1、・・・の複数のCPUは、バス106によって相互に接続されている。
CPU101の各々は、1次(L1:Level−1)キャッシュメモリ103をそれぞれ有する複数のプロセッサコア102が2次(L2:Level−2)キャッシュメモリ104を共有する2階層共有キャッシュ構成のCPUである。図10には、各CPU101が、3つのプロセッサコア102−0、102−1、102−2を有する例を示している。プロセッサコア102は、L1キャッシュメモリ103が保持するデータを用いた演算処理や、ストア要求等の要求の発行を行う。L2キャッシュメモリ104は、メモリ105に格納されているデータブロックを保持する。L2キャッシュメモリ104は、プロセッサコア102間の調停及びCPU101間の調停を行う。ここで、各プロセッサコアは演算処理部に該当する。
データブロックの状態は、例えばMESIプロトコルを用いて管理される。MESIプロトコルにおいて、M(モディファイ)ステートは、1つのプロセッサコアがデータブロックを保持し、かつデータ値がクリーンではない(ダーティである)状態を示す。E(エクスクルーシブ)ステートは、1つのプロセッサコアがデータブロックを保持し、かつデータ値がクリーンな状態を示す。S(マルチコアシェアード)ステートは、複数のプロセッサコアがデータブロックをクリーンな状態で共有していることを示す。I(インバリッド)ステートは、データブロックが無効である状態を示す。
図10に示したようなマルチプロセッサシステムにおいて、LCPUが共有権を持っているデータブロックに対するストア要求を発行したとき、そのデータブロックのディレクトリを有するHCPUからLCPUが排他権を獲得する、ブロックタイプチェンジと呼ばれる処理がある。図11及び図12は、図10に示したマルチプロセッサシステムでのブロックタイプチェンジの処理例を示す図である。図11及び図12において、I、S、Eは、MESIプロトコルにおけるI(インバリッド)ステート、S(シェアード)ステート、E(エクスクルーシブ)ステートをそれぞれ示し、Dはデータを示す。
図11に示す例において、LCPUのL1キャッシュメモリ<#0>がストア要求を発行したとき(P501)、LCPUのL2キャッシュメモリが、HCPUへ排他権獲得要求を発行する(P502)。また、LCPUのL2キャッシュメモリが、LCPU内でストア要求の対象となるデータブロックを共有しているL1キャッシュメモリ<#1>、<#2>へ無効化要求を発行し(P503、P504)、L1キャッシュメモリ<#1>、<#2>が、データブロックの状態をIステートにして無効化する。
HCPUから排他権獲得応答が返ってくると(P505)、LCPUのL2キャッシュメモリが、データブロックの状態をEステートにして、ストア要求の発行元であるL1キャッシュメモリ<#0>にデータを転送する(P506)。このようにLCPUが共有権を持っているため、HCPUからはデータなしで排他権獲得応答が返ってくる。
また、図12に示すように、データ付きで排他権獲得応答が返ってくる場合がある。例えば、LCPUのL1キャッシュメモリ<#0>がストア要求を発行したとき(P601)、LCPUのL2キャッシュメモリが、HCPUへ排他権獲得要求を発行する(P602)。また、LCPUのL2キャッシュメモリが、LCPU内でストア要求の対象となるデータブロックを共有しているL1キャッシュメモリ<#1>、<#2>へ無効化要求を発行し(P603)、L1キャッシュメモリ<#1>、<#2>が、データブロックの状態をIステートにして無効化する。
LCPUがHCPUへ排他権獲得要求を発行した際、RCPUがLCPUより先にHCPUへ排他権獲得要求を発行していた場合、つまりLCPUからの排他権獲得要求(P602)よりもRCPUからの排他権獲得要求(P611)が先にHCPUに到着した場合、LCPUが発行した排他権獲得要求はHCPUで受理されず止まる。RCPUからの排他権獲得要求を受けたHCPUは、対象のデータブロックを共有しているLCPUへ無効化要求を発行し(P612)、LCPUのL2キャッシュメモリが、データブロックの状態をIステートにして無効化し、HCPUへ無効化完了通知を送信する(P613)。LCPUからの無効化完了通知を受けたHCPUは、RCPUへデータ付きで排他権獲得応答を送信し、RCPUが、データブロックの状態をEステートにする(P614)。
その後、LCPUからの排他権獲得要求がHCPUで受理されると、HCPUがRCPUへデータ転送要求を発行し(P604)、RCPUが、データブロックの状態をIステートにして、LCPUへデータ付きで排他権獲得応答を送信する(P605)。RCPUからのデータ付きの排他権獲得応答を受けたLCPUのL2キャッシュメモリは、データブロックの状態をEステートにして、排他権獲得応答に付いていたデータをストア要求の発行元であるL1キャッシュメモリ<#0>に転送する(P606)。
下記特許文献1には、キャッシュ装置のタグのコピーをシステムコントローラが有し、スヌープ処理の完了時に応答パケットにデータブロックの次の状態遷移を確定される技術が開示されている。
国際公開第2007/099583号
近年、処理速度の向上や低消費電力化のため、1つのCPUが有するコア数が増大している。図10に示したような共有キャッシュ構成では、コア数が増加するとキャッシュメモリの容量が増加するため、物量が大きくなり、レイテンシが増大してしまう。それに対して、コア毎にキャッシュメモリを分割する分割キャッシュ構成とすることで、キャッシュメモリの容量を増やしつつ、レイテンシの低下を防ぐことができる。
L2キャッシュメモリをコア毎に分割した分割キャッシュ構成のCPUを採用したディレクトリベースccNUMA型のマルチプロセッサシステムにおいて、図11に示した共有キャッシュ構成と同じようにブロックタイプチェンジの処理を実現しようとすると、L2キャッシュメモリが共通に接続される回路部がデータを保持していないため、ストア要求の発行元のL2キャッシュメモリにデータが転送されず、データブロックの状態をEステートにすることができず、コヒーレンシが保たれない状態となってしまう。
この問題に対して、CPU内の制御に加え、CPU間の制御を変更することで解決する方法があるが、CPU間の制御を変更すると、物量の増加やCPU間通信の方式に大規模な変更が起こり得る。また、図12に示したようなデータ付きの排他権獲得応答を適用することで、CPU内の制御の変更のみでブロックタイプチェンジの処理を実現することも可能ではあるが、キャッシュメモリの無効化処理によるレイテンシの低下やCPU間で通信を行って無効化処理を行うためバスの占有率が増加してしまう。
1つの側面では、本発明は、分割キャッシュ構成のCPUを採用したマルチプロセッサシステムにおいて、CPU間の制御を大幅に変更することなく、またCPU間のバスの占有率を増加させることなく、キャッシュメモリのコヒーレンシ制御を行えるようにすることを目的とする。
演算処理装置の一態様は、演算処理を行う複数の演算処理部と、演算処理部毎に分割した複数のキャッシュメモリと、複数のキャッシュメモリ間のコヒーレンシ制御を行う制御部とを有する。制御部は、キャッシュメモリからのストア要求を受けたとき、ストア要求の対象となるデータブロックを共有しているキャッシュメモリがある場合、対象データブロックをストア要求を発行したキャッシュメモリへ転送するように、対象データブロックを共有しているキャッシュメモリのいずれか1つのキャッシュメモリを制御するとともに、ストア要求の対象となるデータブロックの状態を管理している演算処理装置からの排他権獲得応答を受けてストア要求を発行したキャッシュメモリへ送信する。
発明の一態様においては、分割キャッシュ構成の演算処理装置において、演算処理装置間の制御を大幅に変更することなく、またバスの占有率を増加させることなく、キャッシュメモリのコヒーレンシ制御を行うことが可能となる。
本発明の実施形態におけるマルチプロセッサシステムの構成例を示す図である。 本実施形態における演算処理装置の構成例を示す図である。 本実施形態におけるブロックタイプチェンジの処理例を示す図である。 データ付きの排他権獲得応答を受信したときの動作を説明するための図である。 本実施形態における演算処理装置のL2キャッシュメモリでのデータ更新を説明するための図である。 本実施形態における演算処理装置のL2キャッシュメモリでのデータ更新を説明するための図である。 本実施形態における演算処理装置のL2キャッシュメモリのデータ更新処理の例を示すフローチャートである。 本実施形態におけるブロックタイプチェンジの処理例を示す図である。 本実施形態におけるブロックタイプチェンジの処理例を示す図である。 ディレクトリベースccNUMA型のマルチプロセッサシステムの構成例を示す図である。 図10に示すマルチプロセッサシステムにおけるブロックタイプチェンジの処理例を示す図である。 図10に示すマルチプロセッサシステムにおけるブロックタイプチェンジの処理例を示す図である。
以下、本発明の実施形態を図面に基づいて説明する。
図1は、本発明の一実施形態における演算処理装置としてのCPU(Central Processing Unit)を有するマルチプロセッサシステムの構成例を示すブロック図である。図1に示すマルチプロセッサシステムは、CPU11(11−0、11−1、・・・)とメモリ16(16−0、16−1、・・・)との組を複数有し、CPU<#0>11−0、CPU<#1>11−1、・・・の複数のCPUは、バス17によって相互に接続されている。
図1に示すマルチプロセッサシステムは、例えば各CPU11が、ディレクトリを用いて、自身と接続されたメモリ16に格納されているデータと各CPUがキャッシュメモリに保持したデータとのコヒーレンシを維持するディレクトリベースccNUMA型のマルチプロセッサシステムである。ディレクトリは、分散して所持するメモリのデータの所在等を示すものであり、それぞれのCPUが管理して制御を行う。なお、以下の説明では、ある要求を発行したCPUをLCPU(Local CPU)、その要求によってアクセスされるアドレスのディレクトリを有するCPUをHCPU(Home CPU)、それ以外のCPUをRCPU(Remote CPU)と呼ぶ。
本実施形態におけるCPU11の各々は、1次(L1:Level−1)キャッシュメモリ13をそれぞれ有する複数のプロセッサコア12毎に2次(L2:Level−2)キャッシュメモリ14を分割した2階層分割キャッシュ構成のCPUである。CPU11の各々は、複数のプロセッサコア12、複数のL2キャッシュメモリ14、及びコヒーレンシコントローラ15を有する。図1には、各CPU11が、3つのプロセッサコア12−0、12−1、12−2及び3つのL2キャッシュメモリ14−0、14−1、14−2を有する例を示している。また、図1には、キャッシュメモリの階層が、2階層である例を示しているが、1階層、3階層、又はそれ以上の階層を有する構成であっても良い。
プロセッサコア12の各々は、L1キャッシュメモリ13(13−0、13−1、13−2)を有する。プロセッサコア12は、L1キャッシュメモリ13が保持するデータを用いた演算処理や、ストア要求等の要求の発行を行う。ここで、各プロセッサコアは演算処理部に該当する。L2キャッシュメモリ14は、プロセッサコア12毎に設けられ、メモリ16に格納されているデータブロックを保持する。コヒーレンシコントローラ15は、CPU内及びCPU間のL2キャッシュメモリ14の調停を行い、L2キャッシュメモリ14間のコヒーレンシ制御を行う。本実施形態において、メモリ16へのアクセスは、コヒーレンシコントローラ15を介して行われる。
また、本実施形態において、データブロックの状態は、例えばMESIプロトコルを用いて管理するものとするが、プロトコルの種類はこの限りではない。MESIプロトコルにおいて、M(モディファイ)ステートは、1つのプロセッサコアがデータブロックを保持し、かつデータ値がクリーンではない(ダーティである)状態を示す。E(エクスクルーシブ)ステートは、1つのプロセッサコアがデータブロックを保持し、かつデータ値がクリーンな状態を示す。S(マルチコアシェアード)ステートは、複数のプロセッサコアがデータブロックをクリーンな状態で共有していることを示す。I(インバリッド)ステートは、データブロックが無効である状態を示す。
図2(A)は、本実施形態における演算処理装置としてのCPU11の構成例を示すブロック図である。図2(A)において、図1に示した構成要素と同一の機能を有する構成要素には同一の符号を付し、重複する説明は省略する。
図2(A)に示すように、L2キャッシュメモリ14は、キャッシュメモリ部21、キャッシュ制御管理部22、及びデータ管理部23を有する。キャッシュメモリ部21は、図2(B)にフォーマット例を示すように、メモリ16に格納されているデータをキャッシュデータとして保持するとともに、保持したデータのタグを保持する。タグには、キャッシュメモリ部21に保持しているデータブロックの状態(ステート)及びそのアドレスを含む。キャッシュ制御管理部22は、プロセッサコア12及びコヒーレンシコントローラ15からの要求等に応じてキャッシュメモリ部21を制御し、キャッシュメモリ部21に対するデータの書き込みや読み出しを行ったり、データブロックの状態を切り替えたりする。データ管理部23は、キャッシュメモリ部21におけるデータの更新等を管理する。
コヒーレンシコントローラ15は、コヒーレンシ制御部26及びタグ保持部27を有する。コヒーレンシ制御部26は、L2キャッシュメモリ14のコヒーレンシ制御を行う。タグ保持部27には、図2(C)にフォーマット例を示すように、コヒーレンシコントローラ15が管理する、同じCPU内のすべてのL2キャッシュメモリ14のタグのコピーが保持されている。コヒーレンシ制御部26は、タグ保持部27に保持されているL2キャッシュメモリ14のタグのコピーを参照してコヒーレンシ制御を行う。
次に、本実施形態におけるマルチプロセッサシステムでのブロックタイプチェンジの処理例について説明する。以下では、HCPUがディレクトリを持つデータブロックの共有権をLCPUのL2キャッシュメモリ<#1>、<#2>が持っており、LCPUのL2キャッシュメモリ<#0>がストア要求を発行する場合を例に説明する。
図3に示すように、LCPUのL2キャッシュメモリ<#0>がストア要求を発行したとき(P101)、LCPUのコヒーレンシコントローラが、HCPUへ排他権獲得要求を発行する(P102)。また、LCPUのコヒーレンシコントローラは、LCPU内でストア要求の対象となるデータブロックを共有しているL2キャッシュメモリのうちの1つのL2キャッシュメモリへデータ転送要求を発行し、残りのL2キャッシュメモリへは無効化要求を発行する。なお、データ転送要求の送信先であるL2キャッシュメモリは、例えばLRU(Least Recently Used)等に基づいて選択すれば良い。
図3に示す例においては、LCPUのコヒーレンシコントローラが、LCPU内でストア要求の対象となるデータブロックを共有しているL2キャッシュメモリ<#1>、<#2>のうち、L2キャッシュメモリ<#2>へ無効化要求を発行し(P103)、L2キャッシュメモリ<#2>が、データブロックの状態をIステートにして無効化する。また、LCPUのコヒーレンシコントローラが、L2キャッシュメモリ<#1>へデータ転送要求を発行し(P104)、L2キャッシュメモリ<#1>が、データブロックの状態をIステートにして、L2キャッシュメモリ<#0>へデータを送信する(P105)。なお、L2キャッシュメモリ間でデータ転送を行うようにしているが、L2キャッシュメモリ<#1>からコヒーレンシコントローラへデータを転送した後、コヒーレンシコントローラからL2キャッシュメモリ<#0>へデータを転送するようにしても良い。
HCPUから排他権獲得応答が返ってくると(P106)、LCPUのコヒーレンシコントローラが、ストア要求の対象となるデータブロックの状態をEステートにするとともにL2キャッシュメモリ<#0>へ排他権獲得応答を送信し、L2キャッシュメモリ<#0>が、ストア要求の対象となるデータブロックの状態をEステートにする。ストア要求の発行元であるLCPUのL2キャッシュメモリ<#0>は、データ(P105)及び排他権獲得応答(P107)の2種類の通信が完了することでブロックタイプチェンジの処理を完了する。このように、CPU内でデータのやり取りを行うことができるため、レイテンシの低下とCPU間のバスの占有率の増大を抑制でき、分割キャッシュ構成におけるキャッシュ制御を実現することが可能となる。
ここで、データ付きで排他権獲得応答が返ってくる場合には、図4に示すように、ストア要求の発行元であるLCPUのL2キャッシュメモリ<#0>に本来採用すべきデータが到着した後に、LCPUのL2キャッシュメモリ<#1>からのデータが到着することがあり得る。
例えば、LCPUのL2キャッシュメモリ<#0>がストア要求を発行したとき(P201)、LCPUのコヒーレンシコントローラが、HCPUへ排他権獲得要求を発行する(P202)。また、LCPUのコヒーレンシコントローラが、LCPU内でストア要求の対象となるデータブロックを共有しているL2キャッシュメモリ<#1>へデータ転送要求を発行し(P203)、L2キャッシュメモリ<#1>が、データブロックの状態をIステートにして、L2キャッシュメモリ<#0>へデータD1を送信する(P204)。
LCPUがHCPUへ排他権獲得要求を発行した際、RCPUがLCPUより先にHCPUへ排他権獲得要求を発行していた(P211)場合、LCPUが発行した排他権獲得要求はHCPUで受理されず止まる。RCPUからの排他権獲得要求を受けたHCPUは、対象のデータブロックを共有しているLCPUへ無効化要求を発行し(P212)、LCPUのコヒーレンシコントローラが、データブロックの状態をIステートにして無効化し、HCPUへ無効化完了通知を送信する(P213)。LCPUからの無効化完了通知を受けたHCPUは、RCPUへデータ付きで排他権獲得応答を送信し、RCPUが、データブロックの状態をEステートにする(P214)。
その後、LCPUからの排他権獲得要求がHCPUで受理されると、HCPUがRCPUへデータ転送要求を発行し(P205)、RCPUが、データブロックの状態をIステートにして、LCPUへデータD2付きで排他権獲得応答を送信する(P206)。RCPUからのデータ付きの排他権獲得応答を受けたLCPUのコヒーレンシコントローラは、データブロックの状態をEステートにして、排他権獲得応答に付いていたデータD2をストア要求の発行元であるL2キャッシュメモリ<#0>に転送する(P207)。
図4に示したように、RCPUから送信された最新のデータD2が到着した後に、LCPUのL2キャッシュメモリ<#1>から送信されたデータD1が到着することがある場合、RCPUから送信された最新のデータD2を採用するように制御を行う必要がある。そこで、本実施形態では、RCPUからの排他権獲得応答を受信したときに“1”とし、ストア要求の発行元であるL2キャッシュメモリのデータの更新が終了したときに“0”とする排他権獲得応答のフラグをL2キャッシュメモリに設ける。このフラグをL2キャッシュメモリが内部のバッファに書き込みデータを格納する際に参照して、フラグの値が“0”であればバッファの書き込みデータを更新し、フラグの値が“1”であればバッファの書き込みデータを更新しないように制御する。
例えば、図5(A)に示すように、ストア要求の発行元であるLCPUのL2キャッシュメモリ<#0>51において、フラグ52の値が“0”でバッファ53にデータが書き込まれていない状態で、LCPUのL2キャッシュメモリからデータData1が転送されてきたとする。このとき、フラグ52の値が“0”であるので、図5(B)に示すように、バッファ53をデータData1に更新する。ただし、L2キャッシュメモリからのデータ転送であるのでフラグ52の値は“0”のままで更新しない。
その後、RCPUから排他権獲得応答とともにデータData2が転送されてくると、フラグ52の値が“0”であるので、図5(C)に示すように、バッファ53をデータData2に更新し、RCPUからの排他権獲得応答であるのでフラグ52の値を“1”に更新する。そして、バッファ53にあるデータData2にL2キャッシュメモリのキャッシュデータを更新し、フラグ52の値を“0”にリセットする。
また、例えば、図6(A)に示すように、ストア要求の発行元であるLCPUのL2キャッシュメモリ<#0>51において、フラグ52の値が“0”でバッファ53にデータが書き込まれていない状態で、RCPUから排他権獲得応答とともにデータData2が転送されてきたとする。このとき、フラグ52の値が“0”であるので、図6(B)に示すように、バッファ53をデータData2に更新し、RCPUからの排他権獲得応答であるのでフラグ52の値を“1”に更新する。
その後、LCPUのL2キャッシュメモリからデータData1が転送されてくると、フラグ52の値が“1”であるので、図6(C)に示すように、バッファ53のデータData2を維持し更新しない。そして、バッファ53にあるデータData2にL2キャッシュメモリのキャッシュデータを更新し、フラグ52の値を“0”にリセットする。
図7は、前述したL2キャッシュメモリのデータ更新処理の例を示すフローチャートである。図7には、LCPUのL2キャッシュメモリからのデータ転送とRCPUからのデータ転送との2つデータ転送がある場合のデータ更新処理を示しており、2つデータ転送があることはその旨を示すフラグによって認識可能となっている。
ステップS101にて、ストア要求の発行元であるL2キャッシュメモリは、LCPUのL2キャッシュメモリ又はRCPUからのデータ転送が到着したか否かを確認する。何れかからのデータ転送が到着したと判断した場合、ステップS102にて、L2キャッシュメモリは、排他権獲得応答のフラグの値が“0”であるか否かを判断する。
排他権獲得応答のフラグの値が“0”であると判断した場合、ステップS103にて、L2キャッシュメモリは、転送されてきたデータでバッファを更新する。また、ステップS104にて、L2キャッシュメモリは、RCPUからのデータ転送であるか否かを判断し、RCPUからのデータ転送であると判断した場合にはステップS105にて排他権獲得応答のフラグの値を“1”に更新し、RCPUからのデータ転送ではないと判断した場合にはステップS105をスキップする。なお、ステップS102において、排他権獲得応答のフラグの値が“0”ではないと判断した場合、ステップS106へ進む。
続いて、ステップS106にて、L2キャッシュメモリは、2種類のデータ転送、すなわちLCPUのL2キャッシュメモリ及びRCPUからのデータ転送が到着したかを判断し、2種類のデータ転送が到着していると判断した場合にはステップS107へ進み、そうでない場合にはステップS101へ戻る。ステップS107にて、L2キャッシュメモリは、バッファのデータでキャッシュメモリ部のデータを更新するとともに、排他権獲得応答のフラグの値を“0”にリセットして処理を終了する。
このようにL2キャッシュメモリへのデータ書き込みを制御することで、排他権獲得応答で受信したデータをL2キャッシュメモリに書き込むことが可能になり、LCPUのL2キャッシュメモリからのデータ転送とRCPUからのデータ転送の順序を保証できない場合であっても、適切なキャッシュ制御を実現することができる。
図8は、前述したデータ更新制御を含むブロックタイプチェンジの処理例を示す図である。図8に示すように、LCPUのL2キャッシュメモリ<#0>がストア要求を発行したとき(P301)、LCPUのコヒーレンシコントローラが、HCPUへ排他権獲得要求を発行する(P302)。また、LCPUのコヒーレンシコントローラが、LCPU内でストア要求の対象となるデータブロックを共有しているL2キャッシュメモリ<#1>へデータ転送要求を発行し(P303)、L2キャッシュメモリ<#1>が、データブロックの状態をIステートにして、L2キャッシュメモリ<#0>へデータD1を送信する(P304)。
L2キャッシュメモリ<#1>から転送されたデータD1を受信したL2キャッシュメモリ<#0>は、排他権獲得応答のフラグの値が“0”であるので、受信したデータD1(81)にバッファを更新する。このとき、LCPUのL2キャッシュメモリからのデータ転送であるので、排他権獲得応答のフラグの値は“0”のままとする。
LCPUがHCPUへ排他権獲得要求を発行した際、RCPUがLCPUより先にHCPUへ排他権獲得要求を発行していた(P311)場合、LCPUが発行した排他権獲得要求はHCPUで受理されず止まる。RCPUからの排他権獲得要求を受けたHCPUは、対象のデータブロックを共有しているLCPUへ無効化要求を発行し(P312)、LCPUのコヒーレンシコントローラが、データブロックの状態をIステートにして無効化し、HCPUへ無効化完了通知を送信する(P313)。LCPUからの無効化完了通知を受けたHCPUは、RCPUへデータ付きで排他権獲得応答を送信し、RCPUが、データブロックの状態をEステートにする(P314)。
その後、LCPUからの排他権獲得要求がHCPUで受理されると、HCPUがRCPUへデータ転送要求を発行し(P305)、RCPUが、データブロックの状態をIステートにして、LCPUへデータD2付きで排他権獲得応答を送信する(P306)。RCPUからのデータ付きの排他権獲得応答を受けたLCPUのコヒーレンシコントローラは、データブロックの状態をEステートにして、排他権獲得応答に付いていたデータD2をストア要求の発行元であるL2キャッシュメモリ<#0>に転送する(P307)。
RCPUからの排他権獲得応答とともに転送されたデータD2を受信したL2キャッシュメモリ<#0>は、排他権獲得応答のフラグの値が“0”であるので、受信したデータD2(82)にバッファを更新し、RCPUからの排他権獲得応答によるデータ転送であるので、排他権獲得応答のフラグの値を“1”に更新する。
図9は、前述したデータ更新制御を含むブロックタイプチェンジの処理の他の例を示す図である。図9に示すように、例えば、LCPUのL2キャッシュメモリ<#0>がストア要求を発行したとき(P401)、LCPUのコヒーレンシコントローラが、HCPUへ排他権獲得要求を発行する(P402)。また、LCPUのコヒーレンシコントローラが、LCPU内でストア要求の対象となるデータブロックを共有しているL2キャッシュメモリ<#1>へデータ転送要求を発行し(P403)、L2キャッシュメモリ<#1>が、データブロックの状態をIステートにして、L2キャッシュメモリ<#0>へデータD1を送信する(P404)。
LCPUがHCPUへ排他権獲得要求を発行した際、RCPUがLCPUより先にHCPUへ排他権獲得要求を発行していた(P411)場合、LCPUが発行した排他権獲得要求はHCPUで受理されず止まる。RCPUからの排他権獲得要求を受けたHCPUは、対象のデータブロックを共有しているLCPUへ無効化要求を発行し(P412)、LCPUのコヒーレンシコントローラが、データブロックの状態をIステートにして無効化し、HCPUへ無効化完了通知を送信する(P413)。LCPUからの無効化完了通知を受けたHCPUは、RCPUへデータ付きで排他権獲得応答を送信し、RCPUが、データブロックの状態をEステートにする(P414)。
その後、LCPUからの排他権獲得要求がHCPUで受理されると、HCPUがRCPUへデータ転送要求を発行し(P405)、RCPUが、データブロックの状態をIステートにして、LCPUへデータD2付きで排他権獲得応答を送信する(P406)。RCPUからのデータ付きの排他権獲得応答を受けたLCPUのコヒーレンシコントローラは、データブロックの状態をEステートにして、排他権獲得応答に付いていたデータD2をストア要求の発行元であるL2キャッシュメモリ<#0>に転送する(P407)。
RCPUからの排他権獲得応答とともに転送されたデータD2を受信したL2キャッシュメモリ<#0>は、排他権獲得応答のフラグの値が“0”であるので、受信したデータD2(91)にバッファを更新し、RCPUからの排他権獲得応答によるデータ転送であるので、排他権獲得応答のフラグの値を“1”に更新する。その後、L2キャッシュメモリ<#1>から転送されたデータD1をL2キャッシュメモリ<#0>が受信すると、排他権獲得応答のフラグの値が“1”であるので、受信したデータD1(92)でのバッファの更新は行わない。
本実施形態によれば、コヒーレンシコントローラ15にL2キャッシュメモリ14間でのデータ転送を行う機構を設けるとともに、L2キャッシュメモリに排他権獲得応答のフラグを設ける。これにより、分割キャッシュ構成のCPUを採用したマルチプロセッサシステムにおいて、CPU間の制御を大幅に変更することなく、またCPU間のバスの占有率を増加させることなく、キャッシュメモリのコヒーレンシ制御を行うことが可能となるしたがって、レイテンシの低下やCPU間のプロトコル方式の変更を行うことなく、分割キャッシュ構成でのキャッシュ制御を実現することができる。
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
11 CPU
12 プロセッサコア
13 1次(L1)キャッシュメモリ
14 2次(L2)キャッシュメモリ
15 コヒーレンシコントローラ
16 メモリ
17 バス
21 キャッシュメモリ部
22 キャッシュ制御管理部
23 データ管理部
26 コヒーレンシ制御部
27 タグ保持部

Claims (6)

  1. 演算処理を行う複数の演算処理部と、
    前記演算処理部毎に分割した複数のキャッシュメモリと、
    前記複数のキャッシュメモリ間のコヒーレンシ制御を行い、前記キャッシュメモリからのストア要求を受けたとき、前記複数のキャッシュメモリの内に前記ストア要求の対象となるデータブロックを共有しているキャッシュメモリがある場合、前記ストア要求を発行したキャッシュメモリへ前記ストア要求の対象となるデータブロックを転送するように対象データブロックを共有しているキャッシュメモリのいずれか1つのキャッシュメモリを制御するとともに、前記ストア要求の対象となるデータブロックの状態を管理している演算処理装置からの排他権獲得応答を受けて前記ストア要求を発行したキャッシュメモリへ送信する制御部とを有することを特徴とする演算処理装置。
  2. 前記キャッシュメモリは、データ付きの前記排他権獲得応答を受信したときにセットし、前記排他権獲得応答のデータに前記キャッシュメモリを更新したときにリセットするフラグを有することを特徴とする請求項1記載の演算処理装置。
  3. 前記キャッシュメモリは、前記フラグがリセットされているときには受信したデータの書き込みが行われ、前記フラグがセットされているときには受信したデータの書き込みが抑止されるバッファを有することを特徴とする請求項2記載の演算処理装置。
  4. 前記制御部は、前記キャッシュメモリにおけるデータブロックの状態を含むタグ情報をすべての前記キャッシュメモリについて保持し、保持されている前記タグ情報を参照して前記複数のキャッシュメモリ間のコヒーレンシ制御を行うことを特徴とする請求項1〜3の何れか1項に記載の演算処理装置。
  5. 前記制御部は、前記ストア要求を発行したキャッシュメモリへ前記ストア要求の対象となるデータブロックを転送するように制御するキャッシュメモリをLRU(Least Recently Used)に基づいて選択することを特徴とする請求項1〜4の何れか1項に記載の演算処理装置。
  6. 演算処理を行う複数の演算処理部と、前記演算処理部毎に分割した複数のキャッシュメモリとを有する演算処理装置の制御方法であって、
    前記複数のキャッシュメモリ間のコヒーレンシ制御を行う前記演算処理装置の制御部が、前記キャッシュメモリからのストア要求を受けたとき、前記複数のキャッシュメモリの内に前記ストア要求の対象となるデータブロックを共有しているキャッシュメモリがある場合、前記ストア要求を発行したキャッシュメモリへ前記ストア要求の対象となるデータブロックを転送するように対象データブロックを共有しているキャッシュメモリのいずれか1つのキャッシュメモリを制御し、
    前記制御部が、前記ストア要求の対象となるデータブロックの状態を管理している演算処理装置からの排他権獲得応答を受けて前記ストア要求を発行したキャッシュメモリへ送信することを特徴とする演算処理装置の制御方法。
JP2015145934A 2015-07-23 2015-07-23 演算処理装置及び演算処理装置の制御方法 Expired - Fee Related JP6428521B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015145934A JP6428521B2 (ja) 2015-07-23 2015-07-23 演算処理装置及び演算処理装置の制御方法
US15/156,890 US9910778B2 (en) 2015-07-23 2016-05-17 Operation processing apparatus and control method of operation processing apparatus

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2017027402A JP2017027402A (ja) 2017-02-02
JP6428521B2 true JP6428521B2 (ja) 2018-11-28

Family

ID=57837060

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015145934A Expired - Fee Related JP6428521B2 (ja) 2015-07-23 2015-07-23 演算処理装置及び演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US9910778B2 (ja)
JP (1) JP6428521B2 (ja)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2047888A1 (en) * 1990-07-27 1992-01-28 Hirosada Tone Hierarchical memory control system
JP2786124B2 (ja) * 1995-04-26 1998-08-13 甲府日本電気株式会社 共有メモリ型マルチプロセッサシステム
JP3897218B2 (ja) * 1999-10-08 2007-03-22 富士通株式会社 キャッシュ装置及び制御方法
WO2007099583A1 (ja) 2006-02-28 2007-09-07 Fujitsu Limited システムコントローラおよびキャッシュ制御方法
JP4613247B2 (ja) * 2007-06-20 2011-01-12 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法
US8176255B2 (en) * 2007-10-19 2012-05-08 Hewlett-Packard Development Company, L.P. Allocating space in dedicated cache ways
EP2405361A4 (en) * 2009-03-06 2012-12-19 Fujitsu Ltd COMPUTER SYSTEM, CONTROL METHOD, RECORDING MEDIUM, AND CONTROL PROGRAM
US9367461B2 (en) * 2014-01-31 2016-06-14 The Regents Of The University Of Michigan Ordering constraint management within coherent memory systems

Also Published As

Publication number Publication date
US20170024321A1 (en) 2017-01-26
JP2017027402A (ja) 2017-02-02
US9910778B2 (en) 2018-03-06

Similar Documents

Publication Publication Date Title
US10169080B2 (en) Method for work scheduling in a multi-chip system
US9529532B2 (en) Method and apparatus for memory allocation in a multi-node system
US7373466B1 (en) Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer
US20150254182A1 (en) Multi-core network processor interconnect with multi-node connection
US9372800B2 (en) Inter-chip interconnect protocol for a multi-chip system
US20050160132A1 (en) Transaction references for requests in a multi-processor network
US9208092B2 (en) Coherent attached processor proxy having hybrid directory
US10592459B2 (en) Method and system for ordering I/O access in a multi-node environment
JP5505516B2 (ja) 情報処理システムおよび情報送信方法
KR102092660B1 (ko) Cpu 및 다중 cpu 시스템 관리 방법
CN108874687A (zh) 针对拼贴式末级高速缓存的非统一总线(nub)互连协议
US20200341898A1 (en) Using a directory-based cache coherence system to regulate snooping
US11360891B2 (en) Adaptive cache reconfiguration via clustering
US20140297966A1 (en) Operation processing apparatus, information processing apparatus and method of controlling information processing apparatus
JP2006048406A (ja) メモリシステム制御装置およびメモリシステム制御方法
JP5408713B2 (ja) キャッシュメモリ制御システム及びキャッシュメモリの制御方法
JP6428521B2 (ja) 演算処理装置及び演算処理装置の制御方法
US9983994B2 (en) Arithmetic processing device and method for controlling arithmetic processing device
US7725660B2 (en) Directory for multi-node coherent bus
JP3897218B2 (ja) キャッシュ装置及び制御方法
US20210397560A1 (en) Cache stashing system
JP2018195183A (ja) 演算処理装置および演算処理装置の制御方法
US20140189255A1 (en) Method and apparatus to share modified data without write-back in a shared-memory many-core system
Yadav A study on requests serialization in directory-based protocol for MESI cache coherence protocol
US6636948B2 (en) Method and system for a processor to gain assured ownership of an up-to-date copy of data

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: 20180919

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: 20181002

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181015

R150 Certificate of patent or registration of utility model

Ref document number: 6428521

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees