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