(57)【特許請求の範囲】
【請求項１】
演算処理を行う複数の演算処理部と、
前記演算処理部毎に分割した複数のキャッシュメモリと、
前記複数のキャッシュメモリ間のコヒーレンシ制御を行い、前記キャッシュメモリからのストア要求を受けたとき、前記複数のキャッシュメモリの内に前記ストア要求の対象となるデータブロックを共有しているキャッシュメモリがある場合、前記ストア要求を発行したキャッシュメモリへ前記ストア要求の対象となるデータブロックを転送するように対象データブロックを共有しているキャッシュメモリのいずれか１つのキャッシュメモリを制御するとともに、前記ストア要求の対象となるデータブロックの状態を管理している演算処理装置からの排他権獲得応答を受けて前記ストア要求を発行したキャッシュメモリへ送信する制御部とを有することを特徴とする演算処理装置。
【請求項２】
前記キャッシュメモリは、データ付きの前記排他権獲得応答を受信したときにセットし、前記排他権獲得応答のデータに前記キャッシュメモリを更新したときにリセットするフラグを有することを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記キャッシュメモリは、前記フラグがリセットされているときには受信したデータの書き込みが行われ、前記フラグがセットされているときには受信したデータの書き込みが抑止されるバッファを有することを特徴とする請求項２記載の演算処理装置。
【請求項４】
前記制御部は、前記キャッシュメモリにおけるデータブロックの状態を含むタグ情報をすべての前記キャッシュメモリについて保持し、保持されている前記タグ情報を参照して前記複数のキャッシュメモリ間のコヒーレンシ制御を行うことを特徴とする請求項１〜３の何れか１項に記載の演算処理装置。
【請求項５】
前記制御部は、前記ストア要求を発行したキャッシュメモリへ前記ストア要求の対象となるデータブロックを転送するように制御するキャッシュメモリをＬＲＵ（Least Recently Used）に基づいて選択することを特徴とする請求項１〜４の何れか１項に記載の演算処理装置。
【請求項６】
演算処理を行う複数の演算処理部と、前記演算処理部毎に分割した複数のキャッシュメモリとを有する演算処理装置の制御方法であって、
前記複数のキャッシュメモリ間のコヒーレンシ制御を行う前記演算処理装置の制御部が、前記キャッシュメモリからのストア要求を受けたとき、前記複数のキャッシュメモリの内に前記ストア要求の対象となるデータブロックを共有しているキャッシュメモリがある場合、前記ストア要求を発行したキャッシュメモリへ前記ストア要求の対象となるデータブロックを転送するように対象データブロックを共有しているキャッシュメモリのいずれか１つのキャッシュメモリを制御し、
前記制御部が、前記ストア要求の対象となるデータブロックの状態を管理している演算処理装置からの排他権獲得応答を受けて前記ストア要求を発行したキャッシュメモリへ送信することを特徴とする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置及び演算処理装置の制御方法に関する。
【背景技術】
【０００２】
ＣＰＵ（Central Processing Unit）とメモリとの組を複数有し、複数のＣＰＵで各メモリを共有する共有メモリ型のマルチプロセッサシステムの１つに、ディレクトリベースｃｃＮＵＭＡ（cache coherent Non Uniform Memory Access）型のマルチプロセッサシステムがある。ディレクトリベースｃｃＮＵＭＡ型のマルチプロセッサシステムでは、各ＣＰＵが、ディレクトリを用いて、自身と接続されたメモリに格納されているデータと各ＣＰＵがキャッシュメモリに保持したデータとのコヒーレンシを維持する。ディレクトリは、分散して所持するメモリのデータの所在等を示すものであり、それぞれのＣＰＵが管理して制御を行う。
【０００３】
ディレクトリベースｃｃＮＵＭＡ型のマルチプロセッサシステムにおいて、ある要求を発行したＣＰＵをＬＣＰＵ（Local CPU）、その要求によってアクセスされるアドレスのディレクトリを有するＣＰＵをＨＣＰＵ（Home CPU）、それ以外のＣＰＵをＲＣＰＵ（Remote CPU）と呼ぶ。ディレクトリベースｃｃＮＵＭＡ型のマルチプロセッサシステムの構成例を図１０に示す。図１０に示すマルチプロセッサシステムは、ＣＰＵ１０１（１０１−０、１０１−１、・・・）とメモリ１０５（１０５−０、１０５−１、・・・）との組を複数有する。ＣＰＵ＜＃０＞１０１−０、ＣＰＵ＜＃１＞１０１−１、・・・の複数のＣＰＵは、バス１０６によって相互に接続されている。
【０００４】
ＣＰＵ１０１の各々は、１次（Ｌ１：Ｌｅｖｅｌ−１）キャッシュメモリ１０３をそれぞれ有する複数のプロセッサコア１０２が２次（Ｌ２：Ｌｅｖｅｌ−２）キャッシュメモリ１０４を共有する２階層共有キャッシュ構成のＣＰＵである。図１０には、各ＣＰＵ１０１が、３つのプロセッサコア１０２−０、１０２−１、１０２−２を有する例を示している。プロセッサコア１０２は、Ｌ１キャッシュメモリ１０３が保持するデータを用いた演算処理や、ストア要求等の要求の発行を行う。Ｌ２キャッシュメモリ１０４は、メモリ１０５に格納されているデータブロックを保持する。Ｌ２キャッシュメモリ１０４は、プロセッサコア１０２間の調停及びＣＰＵ１０１間の調停を行う。ここで、各プロセッサコアは演算処理部に該当する。
【０００５】
データブロックの状態は、例えばＭＥＳＩプロトコルを用いて管理される。ＭＥＳＩプロトコルにおいて、Ｍ（モディファイ）ステートは、１つのプロセッサコアがデータブロックを保持し、かつデータ値がクリーンではない（ダーティである）状態を示す。Ｅ（エクスクルーシブ）ステートは、１つのプロセッサコアがデータブロックを保持し、かつデータ値がクリーンな状態を示す。Ｓ（マルチコアシェアード）ステートは、複数のプロセッサコアがデータブロックをクリーンな状態で共有していることを示す。Ｉ（インバリッド）ステートは、データブロックが無効である状態を示す。
【０００６】
図１０に示したようなマルチプロセッサシステムにおいて、ＬＣＰＵが共有権を持っているデータブロックに対するストア要求を発行したとき、そのデータブロックのディレクトリを有するＨＣＰＵからＬＣＰＵが排他権を獲得する、ブロックタイプチェンジと呼ばれる処理がある。図１１及び図１２は、図１０に示したマルチプロセッサシステムでのブロックタイプチェンジの処理例を示す図である。図１１及び図１２において、Ｉ、Ｓ、Ｅは、ＭＥＳＩプロトコルにおけるＩ（インバリッド）ステート、Ｓ（シェアード）ステート、Ｅ（エクスクルーシブ）ステートをそれぞれ示し、Ｄはデータを示す。
【０００７】
図１１に示す例において、ＬＣＰＵのＬ１キャッシュメモリ＜＃０＞がストア要求を発行したとき（Ｐ５０１）、ＬＣＰＵのＬ２キャッシュメモリが、ＨＣＰＵへ排他権獲得要求を発行する（Ｐ５０２）。また、ＬＣＰＵのＬ２キャッシュメモリが、ＬＣＰＵ内でストア要求の対象となるデータブロックを共有しているＬ１キャッシュメモリ＜＃１＞、＜＃２＞へ無効化要求を発行し（Ｐ５０３、Ｐ５０４）、Ｌ１キャッシュメモリ＜＃１＞、＜＃２＞が、データブロックの状態をＩステートにして無効化する。
【０００８】
ＨＣＰＵから排他権獲得応答が返ってくると（Ｐ５０５）、ＬＣＰＵのＬ２キャッシュメモリが、データブロックの状態をＥステートにして、ストア要求の発行元であるＬ１キャッシュメモリ＜＃０＞にデータを転送する（Ｐ５０６）。このようにＬＣＰＵが共有権を持っているため、ＨＣＰＵからはデータなしで排他権獲得応答が返ってくる。
【０００９】
また、図１２に示すように、データ付きで排他権獲得応答が返ってくる場合がある。例えば、ＬＣＰＵのＬ１キャッシュメモリ＜＃０＞がストア要求を発行したとき（Ｐ６０１）、ＬＣＰＵのＬ２キャッシュメモリが、ＨＣＰＵへ排他権獲得要求を発行する（Ｐ６０２）。また、ＬＣＰＵのＬ２キャッシュメモリが、ＬＣＰＵ内でストア要求の対象となるデータブロックを共有しているＬ１キャッシュメモリ＜＃１＞、＜＃２＞へ無効化要求を発行し（Ｐ６０３）、Ｌ１キャッシュメモリ＜＃１＞、＜＃２＞が、データブロックの状態をＩステートにして無効化する。
【００１０】
ＬＣＰＵがＨＣＰＵへ排他権獲得要求を発行した際、ＲＣＰＵがＬＣＰＵより先にＨＣＰＵへ排他権獲得要求を発行していた場合、つまりＬＣＰＵからの排他権獲得要求（Ｐ６０２）よりもＲＣＰＵからの排他権獲得要求（Ｐ６１１）が先にＨＣＰＵに到着した場合、ＬＣＰＵが発行した排他権獲得要求はＨＣＰＵで受理されず止まる。ＲＣＰＵからの排他権獲得要求を受けたＨＣＰＵは、対象のデータブロックを共有しているＬＣＰＵへ無効化要求を発行し（Ｐ６１２）、ＬＣＰＵのＬ２キャッシュメモリが、データブロックの状態をＩステートにして無効化し、ＨＣＰＵへ無効化完了通知を送信する（Ｐ６１３）。ＬＣＰＵからの無効化完了通知を受けたＨＣＰＵは、ＲＣＰＵへデータ付きで排他権獲得応答を送信し、ＲＣＰＵが、データブロックの状態をＥステートにする（Ｐ６１４）。
【００１１】
その後、ＬＣＰＵからの排他権獲得要求がＨＣＰＵで受理されると、ＨＣＰＵがＲＣＰＵへデータ転送要求を発行し（Ｐ６０４）、ＲＣＰＵが、データブロックの状態をＩステートにして、ＬＣＰＵへデータ付きで排他権獲得応答を送信する（Ｐ６０５）。ＲＣＰＵからのデータ付きの排他権獲得応答を受けたＬＣＰＵのＬ２キャッシュメモリは、データブロックの状態をＥステートにして、排他権獲得応答に付いていたデータをストア要求の発行元であるＬ１キャッシュメモリ＜＃０＞に転送する（Ｐ６０６）。
【００１２】
下記特許文献１には、キャッシュ装置のタグのコピーをシステムコントローラが有し、スヌープ処理の完了時に応答パケットにデータブロックの次の状態遷移を確定される技術が開示されている。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】国際公開第２００７／０９９５８３号
【発明の概要】
【発明が解決しようとする課題】
【００１４】
近年、処理速度の向上や低消費電力化のため、１つのＣＰＵが有するコア数が増大している。図１０に示したような共有キャッシュ構成では、コア数が増加するとキャッシュメモリの容量が増加するため、物量が大きくなり、レイテンシが増大してしまう。それに対して、コア毎にキャッシュメモリを分割する分割キャッシュ構成とすることで、キャッシュメモリの容量を増やしつつ、レイテンシの低下を防ぐことができる。
【００１５】
Ｌ２キャッシュメモリをコア毎に分割した分割キャッシュ構成のＣＰＵを採用したディレクトリベースｃｃＮＵＭＡ型のマルチプロセッサシステムにおいて、図１１に示した共有キャッシュ構成と同じようにブロックタイプチェンジの処理を実現しようとすると、Ｌ２キャッシュメモリが共通に接続される回路部がデータを保持していないため、ストア要求の発行元のＬ２キャッシュメモリにデータが転送されず、データブロックの状態をＥステートにすることができず、コヒーレンシが保たれない状態となってしまう。
【００１６】
この問題に対して、ＣＰＵ内の制御に加え、ＣＰＵ間の制御を変更することで解決する方法があるが、ＣＰＵ間の制御を変更すると、物量の増加やＣＰＵ間通信の方式に大規模な変更が起こり得る。また、図１２に示したようなデータ付きの排他権獲得応答を適用することで、ＣＰＵ内の制御の変更のみでブロックタイプチェンジの処理を実現することも可能ではあるが、キャッシュメモリの無効化処理によるレイテンシの低下やＣＰＵ間で通信を行って無効化処理を行うためバスの占有率が増加してしまう。
【００１７】
１つの側面では、本発明は、分割キャッシュ構成のＣＰＵを採用したマルチプロセッサシステムにおいて、ＣＰＵ間の制御を大幅に変更することなく、またＣＰＵ間のバスの占有率を増加させることなく、キャッシュメモリのコヒーレンシ制御を行えるようにすることを目的とする。
【課題を解決するための手段】
【００１８】
演算処理装置の一態様は、演算処理を行う複数の演算処理部と、演算処理部毎に分割した複数のキャッシュメモリと、複数のキャッシュメモリ間のコヒーレンシ制御を行う制御部とを有する。制御部は、キャッシュメモリからのストア要求を受けたとき、ストア要求の対象となるデータブロックを共有しているキャッシュメモリがある場合、対象データブロックをストア要求を発行したキャッシュメモリへ転送するように、対象データブロックを共有しているキャッシュメモリのいずれか１つのキャッシュメモリを制御するとともに、ストア要求の対象となるデータブロックの状態を管理している演算処理装置からの排他権獲得応答を受けてストア要求を発行したキャッシュメモリへ送信する。
【発明の効果】
【００１９】
発明の一態様においては、分割キャッシュ構成の演算処理装置において、演算処理装置間の制御を大幅に変更することなく、またバスの占有率を増加させることなく、キャッシュメモリのコヒーレンシ制御を行うことが可能となる。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施形態におけるマルチプロセッサシステムの構成例を示す図である。
【図２】本実施形態における演算処理装置の構成例を示す図である。
【図３】本実施形態におけるブロックタイプチェンジの処理例を示す図である。
【図４】データ付きの排他権獲得応答を受信したときの動作を説明するための図である。
【図５】本実施形態における演算処理装置のＬ２キャッシュメモリでのデータ更新を説明するための図である。
【図６】本実施形態における演算処理装置のＬ２キャッシュメモリでのデータ更新を説明するための図である。
【図７】本実施形態における演算処理装置のＬ２キャッシュメモリのデータ更新処理の例を示すフローチャートである。
【図８】本実施形態におけるブロックタイプチェンジの処理例を示す図である。
【図９】本実施形態におけるブロックタイプチェンジの処理例を示す図である。
【図１０】ディレクトリベースｃｃＮＵＭＡ型のマルチプロセッサシステムの構成例を示す図である。
【図１１】図１０に示すマルチプロセッサシステムにおけるブロックタイプチェンジの処理例を示す図である。
【図１２】図１０に示すマルチプロセッサシステムにおけるブロックタイプチェンジの処理例を示す図である。
【発明を実施するための形態】
【００２１】
以下、本発明の実施形態を図面に基づいて説明する。
図１は、本発明の一実施形態における演算処理装置としてのＣＰＵ（Central Processing Unit）を有するマルチプロセッサシステムの構成例を示すブロック図である。図１に示すマルチプロセッサシステムは、ＣＰＵ１１（１１−０、１１−１、・・・）とメモリ１６（１６−０、１６−１、・・・）との組を複数有し、ＣＰＵ＜＃０＞１１−０、ＣＰＵ＜＃１＞１１−１、・・・の複数のＣＰＵは、バス１７によって相互に接続されている。
【００２２】
図１に示すマルチプロセッサシステムは、例えば各ＣＰＵ１１が、ディレクトリを用いて、自身と接続されたメモリ１６に格納されているデータと各ＣＰＵがキャッシュメモリに保持したデータとのコヒーレンシを維持するディレクトリベースｃｃＮＵＭＡ型のマルチプロセッサシステムである。ディレクトリは、分散して所持するメモリのデータの所在等を示すものであり、それぞれのＣＰＵが管理して制御を行う。なお、以下の説明では、ある要求を発行したＣＰＵをＬＣＰＵ（Local CPU）、その要求によってアクセスされるアドレスのディレクトリを有するＣＰＵをＨＣＰＵ（Home CPU）、それ以外のＣＰＵをＲＣＰＵ（Remote CPU）と呼ぶ。
【００２３】
本実施形態におけるＣＰＵ１１の各々は、１次（Ｌ１：Ｌｅｖｅｌ−１）キャッシュメモリ１３をそれぞれ有する複数のプロセッサコア１２毎に２次（Ｌ２：Ｌｅｖｅｌ−２）キャッシュメモリ１４を分割した２階層分割キャッシュ構成のＣＰＵである。ＣＰＵ１１の各々は、複数のプロセッサコア１２、複数のＬ２キャッシュメモリ１４、及びコヒーレンシコントローラ１５を有する。図１には、各ＣＰＵ１１が、３つのプロセッサコア１２−０、１２−１、１２−２及び３つのＬ２キャッシュメモリ１４−０、１４−１、１４−２を有する例を示している。また、図１には、キャッシュメモリの階層が、２階層である例を示しているが、１階層、３階層、又はそれ以上の階層を有する構成であっても良い。
【００２４】
プロセッサコア１２の各々は、Ｌ１キャッシュメモリ１３（１３−０、１３−１、１３−２）を有する。プロセッサコア１２は、Ｌ１キャッシュメモリ１３が保持するデータを用いた演算処理や、ストア要求等の要求の発行を行う。ここで、各プロセッサコアは演算処理部に該当する。Ｌ２キャッシュメモリ１４は、プロセッサコア１２毎に設けられ、メモリ１６に格納されているデータブロックを保持する。コヒーレンシコントローラ１５は、ＣＰＵ内及びＣＰＵ間のＬ２キャッシュメモリ１４の調停を行い、Ｌ２キャッシュメモリ１４間のコヒーレンシ制御を行う。本実施形態において、メモリ１６へのアクセスは、コヒーレンシコントローラ１５を介して行われる。
【００２５】
また、本実施形態において、データブロックの状態は、例えばＭＥＳＩプロトコルを用いて管理するものとするが、プロトコルの種類はこの限りではない。ＭＥＳＩプロトコルにおいて、Ｍ（モディファイ）ステートは、１つのプロセッサコアがデータブロックを保持し、かつデータ値がクリーンではない（ダーティである）状態を示す。Ｅ（エクスクルーシブ）ステートは、１つのプロセッサコアがデータブロックを保持し、かつデータ値がクリーンな状態を示す。Ｓ（マルチコアシェアード）ステートは、複数のプロセッサコアがデータブロックをクリーンな状態で共有していることを示す。Ｉ（インバリッド）ステートは、データブロックが無効である状態を示す。
【００２６】
図２（Ａ）は、本実施形態における演算処理装置としてのＣＰＵ１１の構成例を示すブロック図である。図２（Ａ）において、図１に示した構成要素と同一の機能を有する構成要素には同一の符号を付し、重複する説明は省略する。
【００２７】
図２（Ａ）に示すように、Ｌ２キャッシュメモリ１４は、キャッシュメモリ部２１、キャッシュ制御管理部２２、及びデータ管理部２３を有する。キャッシュメモリ部２１は、図２（Ｂ）にフォーマット例を示すように、メモリ１６に格納されているデータをキャッシュデータとして保持するとともに、保持したデータのタグを保持する。タグには、キャッシュメモリ部２１に保持しているデータブロックの状態（ステート）及びそのアドレスを含む。キャッシュ制御管理部２２は、プロセッサコア１２及びコヒーレンシコントローラ１５からの要求等に応じてキャッシュメモリ部２１を制御し、キャッシュメモリ部２１に対するデータの書き込みや読み出しを行ったり、データブロックの状態を切り替えたりする。データ管理部２３は、キャッシュメモリ部２１におけるデータの更新等を管理する。
【００２８】
コヒーレンシコントローラ１５は、コヒーレンシ制御部２６及びタグ保持部２７を有する。コヒーレンシ制御部２６は、Ｌ２キャッシュメモリ１４のコヒーレンシ制御を行う。タグ保持部２７には、図２（Ｃ）にフォーマット例を示すように、コヒーレンシコントローラ１５が管理する、同じＣＰＵ内のすべてのＬ２キャッシュメモリ１４のタグのコピーが保持されている。コヒーレンシ制御部２６は、タグ保持部２７に保持されているＬ２キャッシュメモリ１４のタグのコピーを参照してコヒーレンシ制御を行う。
【００２９】
次に、本実施形態におけるマルチプロセッサシステムでのブロックタイプチェンジの処理例について説明する。以下では、ＨＣＰＵがディレクトリを持つデータブロックの共有権をＬＣＰＵのＬ２キャッシュメモリ＜＃１＞、＜＃２＞が持っており、ＬＣＰＵのＬ２キャッシュメモリ＜＃０＞がストア要求を発行する場合を例に説明する。
【００３０】
図３に示すように、ＬＣＰＵのＬ２キャッシュメモリ＜＃０＞がストア要求を発行したとき（Ｐ１０１）、ＬＣＰＵのコヒーレンシコントローラが、ＨＣＰＵへ排他権獲得要求を発行する（Ｐ１０２）。また、ＬＣＰＵのコヒーレンシコントローラは、ＬＣＰＵ内でストア要求の対象となるデータブロックを共有しているＬ２キャッシュメモリのうちの１つのＬ２キャッシュメモリへデータ転送要求を発行し、残りのＬ２キャッシュメモリへは無効化要求を発行する。なお、データ転送要求の送信先であるＬ２キャッシュメモリは、例えばＬＲＵ（Least Recently Used）等に基づいて選択すれば良い。
【００３１】
図３に示す例においては、ＬＣＰＵのコヒーレンシコントローラが、ＬＣＰＵ内でストア要求の対象となるデータブロックを共有しているＬ２キャッシュメモリ＜＃１＞、＜＃２＞のうち、Ｌ２キャッシュメモリ＜＃２＞へ無効化要求を発行し（Ｐ１０３）、Ｌ２キャッシュメモリ＜＃２＞が、データブロックの状態をＩステートにして無効化する。また、ＬＣＰＵのコヒーレンシコントローラが、Ｌ２キャッシュメモリ＜＃１＞へデータ転送要求を発行し（Ｐ１０４）、Ｌ２キャッシュメモリ＜＃１＞が、データブロックの状態をＩステートにして、Ｌ２キャッシュメモリ＜＃０＞へデータを送信する（Ｐ１０５）。なお、Ｌ２キャッシュメモリ間でデータ転送を行うようにしているが、Ｌ２キャッシュメモリ＜＃１＞からコヒーレンシコントローラへデータを転送した後、コヒーレンシコントローラからＬ２キャッシュメモリ＜＃０＞へデータを転送するようにしても良い。
【００３２】
ＨＣＰＵから排他権獲得応答が返ってくると（Ｐ１０６）、ＬＣＰＵのコヒーレンシコントローラが、ストア要求の対象となるデータブロックの状態をＥステートにするとともにＬ２キャッシュメモリ＜＃０＞へ排他権獲得応答を送信し、Ｌ２キャッシュメモリ＜＃０＞が、ストア要求の対象となるデータブロックの状態をＥステートにする。ストア要求の発行元であるＬＣＰＵのＬ２キャッシュメモリ＜＃０＞は、データ（Ｐ１０５）及び排他権獲得応答（Ｐ１０７）の２種類の通信が完了することでブロックタイプチェンジの処理を完了する。このように、ＣＰＵ内でデータのやり取りを行うことができるため、レイテンシの低下とＣＰＵ間のバスの占有率の増大を抑制でき、分割キャッシュ構成におけるキャッシュ制御を実現することが可能となる。
【００３３】
ここで、データ付きで排他権獲得応答が返ってくる場合には、図４に示すように、ストア要求の発行元であるＬＣＰＵのＬ２キャッシュメモリ＜＃０＞に本来採用すべきデータが到着した後に、ＬＣＰＵのＬ２キャッシュメモリ＜＃１＞からのデータが到着することがあり得る。
【００３４】
例えば、ＬＣＰＵのＬ２キャッシュメモリ＜＃０＞がストア要求を発行したとき（Ｐ２０１）、ＬＣＰＵのコヒーレンシコントローラが、ＨＣＰＵへ排他権獲得要求を発行する（Ｐ２０２）。また、ＬＣＰＵのコヒーレンシコントローラが、ＬＣＰＵ内でストア要求の対象となるデータブロックを共有しているＬ２キャッシュメモリ＜＃１＞へデータ転送要求を発行し（Ｐ２０３）、Ｌ２キャッシュメモリ＜＃１＞が、データブロックの状態をＩステートにして、Ｌ２キャッシュメモリ＜＃０＞へデータＤ１を送信する（Ｐ２０４）。
【００３５】
ＬＣＰＵがＨＣＰＵへ排他権獲得要求を発行した際、ＲＣＰＵがＬＣＰＵより先にＨＣＰＵへ排他権獲得要求を発行していた（Ｐ２１１）場合、ＬＣＰＵが発行した排他権獲得要求はＨＣＰＵで受理されず止まる。ＲＣＰＵからの排他権獲得要求を受けたＨＣＰＵは、対象のデータブロックを共有しているＬＣＰＵへ無効化要求を発行し（Ｐ２１２）、ＬＣＰＵのコヒーレンシコントローラが、データブロックの状態をＩステートにして無効化し、ＨＣＰＵへ無効化完了通知を送信する（Ｐ２１３）。ＬＣＰＵからの無効化完了通知を受けたＨＣＰＵは、ＲＣＰＵへデータ付きで排他権獲得応答を送信し、ＲＣＰＵが、データブロックの状態をＥステートにする（Ｐ２１４）。
【００３６】
その後、ＬＣＰＵからの排他権獲得要求がＨＣＰＵで受理されると、ＨＣＰＵがＲＣＰＵへデータ転送要求を発行し（Ｐ２０５）、ＲＣＰＵが、データブロックの状態をＩステートにして、ＬＣＰＵへデータＤ２付きで排他権獲得応答を送信する（Ｐ２０６）。ＲＣＰＵからのデータ付きの排他権獲得応答を受けたＬＣＰＵのコヒーレンシコントローラは、データブロックの状態をＥステートにして、排他権獲得応答に付いていたデータＤ２をストア要求の発行元であるＬ２キャッシュメモリ＜＃０＞に転送する（Ｐ２０７）。
【００３７】
図４に示したように、ＲＣＰＵから送信された最新のデータＤ２が到着した後に、ＬＣＰＵのＬ２キャッシュメモリ＜＃１＞から送信されたデータＤ１が到着することがある場合、ＲＣＰＵから送信された最新のデータＤ２を採用するように制御を行う必要がある。そこで、本実施形態では、ＲＣＰＵからの排他権獲得応答を受信したときに“１”とし、ストア要求の発行元であるＬ２キャッシュメモリのデータの更新が終了したときに“０”とする排他権獲得応答のフラグをＬ２キャッシュメモリに設ける。このフラグをＬ２キャッシュメモリが内部のバッファに書き込みデータを格納する際に参照して、フラグの値が“０”であればバッファの書き込みデータを更新し、フラグの値が“１”であればバッファの書き込みデータを更新しないように制御する。
【００３８】
例えば、図５（Ａ）に示すように、ストア要求の発行元であるＬＣＰＵのＬ２キャッシュメモリ＜＃０＞５１において、フラグ５２の値が“０”でバッファ５３にデータが書き込まれていない状態で、ＬＣＰＵのＬ２キャッシュメモリからデータＤａｔａ１が転送されてきたとする。このとき、フラグ５２の値が“０”であるので、図５（Ｂ）に示すように、バッファ５３をデータＤａｔａ１に更新する。ただし、Ｌ２キャッシュメモリからのデータ転送であるのでフラグ５２の値は“０”のままで更新しない。
【００３９】
その後、ＲＣＰＵから排他権獲得応答とともにデータＤａｔａ２が転送されてくると、フラグ５２の値が“０”であるので、図５（Ｃ）に示すように、バッファ５３をデータＤａｔａ２に更新し、ＲＣＰＵからの排他権獲得応答であるのでフラグ５２の値を“１”に更新する。そして、バッファ５３にあるデータＤａｔａ２にＬ２キャッシュメモリのキャッシュデータを更新し、フラグ５２の値を“０”にリセットする。
【００４０】
また、例えば、図６（Ａ）に示すように、ストア要求の発行元であるＬＣＰＵのＬ２キャッシュメモリ＜＃０＞５１において、フラグ５２の値が“０”でバッファ５３にデータが書き込まれていない状態で、ＲＣＰＵから排他権獲得応答とともにデータＤａｔａ２が転送されてきたとする。このとき、フラグ５２の値が“０”であるので、図６（Ｂ）に示すように、バッファ５３をデータＤａｔａ２に更新し、ＲＣＰＵからの排他権獲得応答であるのでフラグ５２の値を“１”に更新する。
【００４１】
その後、ＬＣＰＵのＬ２キャッシュメモリからデータＤａｔａ１が転送されてくると、フラグ５２の値が“１”であるので、図６（Ｃ）に示すように、バッファ５３のデータＤａｔａ２を維持し更新しない。そして、バッファ５３にあるデータＤａｔａ２にＬ２キャッシュメモリのキャッシュデータを更新し、フラグ５２の値を“０”にリセットする。
【００４２】
図７は、前述したＬ２キャッシュメモリのデータ更新処理の例を示すフローチャートである。図７には、ＬＣＰＵのＬ２キャッシュメモリからのデータ転送とＲＣＰＵからのデータ転送との２つデータ転送がある場合のデータ更新処理を示しており、２つデータ転送があることはその旨を示すフラグによって認識可能となっている。
【００４３】
ステップＳ１０１にて、ストア要求の発行元であるＬ２キャッシュメモリは、ＬＣＰＵのＬ２キャッシュメモリ又はＲＣＰＵからのデータ転送が到着したか否かを確認する。何れかからのデータ転送が到着したと判断した場合、ステップＳ１０２にて、Ｌ２キャッシュメモリは、排他権獲得応答のフラグの値が“０”であるか否かを判断する。
【００４４】
排他権獲得応答のフラグの値が“０”であると判断した場合、ステップＳ１０３にて、Ｌ２キャッシュメモリは、転送されてきたデータでバッファを更新する。また、ステップＳ１０４にて、Ｌ２キャッシュメモリは、ＲＣＰＵからのデータ転送であるか否かを判断し、ＲＣＰＵからのデータ転送であると判断した場合にはステップＳ１０５にて排他権獲得応答のフラグの値を“１”に更新し、ＲＣＰＵからのデータ転送ではないと判断した場合にはステップＳ１０５をスキップする。なお、ステップＳ１０２において、排他権獲得応答のフラグの値が“０”ではないと判断した場合、ステップＳ１０６へ進む。
【００４５】
続いて、ステップＳ１０６にて、Ｌ２キャッシュメモリは、２種類のデータ転送、すなわちＬＣＰＵのＬ２キャッシュメモリ及びＲＣＰＵからのデータ転送が到着したかを判断し、２種類のデータ転送が到着していると判断した場合にはステップＳ１０７へ進み、そうでない場合にはステップＳ１０１へ戻る。ステップＳ１０７にて、Ｌ２キャッシュメモリは、バッファのデータでキャッシュメモリ部のデータを更新するとともに、排他権獲得応答のフラグの値を“０”にリセットして処理を終了する。
【００４６】
このようにＬ２キャッシュメモリへのデータ書き込みを制御することで、排他権獲得応答で受信したデータをＬ２キャッシュメモリに書き込むことが可能になり、ＬＣＰＵのＬ２キャッシュメモリからのデータ転送とＲＣＰＵからのデータ転送の順序を保証できない場合であっても、適切なキャッシュ制御を実現することができる。
【００４７】
図８は、前述したデータ更新制御を含むブロックタイプチェンジの処理例を示す図である。図８に示すように、ＬＣＰＵのＬ２キャッシュメモリ＜＃０＞がストア要求を発行したとき（Ｐ３０１）、ＬＣＰＵのコヒーレンシコントローラが、ＨＣＰＵへ排他権獲得要求を発行する（Ｐ３０２）。また、ＬＣＰＵのコヒーレンシコントローラが、ＬＣＰＵ内でストア要求の対象となるデータブロックを共有しているＬ２キャッシュメモリ＜＃１＞へデータ転送要求を発行し（Ｐ３０３）、Ｌ２キャッシュメモリ＜＃１＞が、データブロックの状態をＩステートにして、Ｌ２キャッシュメモリ＜＃０＞へデータＤ１を送信する（Ｐ３０４）。
【００４８】
Ｌ２キャッシュメモリ＜＃１＞から転送されたデータＤ１を受信したＬ２キャッシュメモリ＜＃０＞は、排他権獲得応答のフラグの値が“０”であるので、受信したデータＤ１（８１）にバッファを更新する。このとき、ＬＣＰＵのＬ２キャッシュメモリからのデータ転送であるので、排他権獲得応答のフラグの値は“０”のままとする。
【００４９】
ＬＣＰＵがＨＣＰＵへ排他権獲得要求を発行した際、ＲＣＰＵがＬＣＰＵより先にＨＣＰＵへ排他権獲得要求を発行していた（Ｐ３１１）場合、ＬＣＰＵが発行した排他権獲得要求はＨＣＰＵで受理されず止まる。ＲＣＰＵからの排他権獲得要求を受けたＨＣＰＵは、対象のデータブロックを共有しているＬＣＰＵへ無効化要求を発行し（Ｐ３１２）、ＬＣＰＵのコヒーレンシコントローラが、データブロックの状態をＩステートにして無効化し、ＨＣＰＵへ無効化完了通知を送信する（Ｐ３１３）。ＬＣＰＵからの無効化完了通知を受けたＨＣＰＵは、ＲＣＰＵへデータ付きで排他権獲得応答を送信し、ＲＣＰＵが、データブロックの状態をＥステートにする（Ｐ３１４）。
【００５０】
その後、ＬＣＰＵからの排他権獲得要求がＨＣＰＵで受理されると、ＨＣＰＵがＲＣＰＵへデータ転送要求を発行し（Ｐ３０５）、ＲＣＰＵが、データブロックの状態をＩステートにして、ＬＣＰＵへデータＤ２付きで排他権獲得応答を送信する（Ｐ３０６）。ＲＣＰＵからのデータ付きの排他権獲得応答を受けたＬＣＰＵのコヒーレンシコントローラは、データブロックの状態をＥステートにして、排他権獲得応答に付いていたデータＤ２をストア要求の発行元であるＬ２キャッシュメモリ＜＃０＞に転送する（Ｐ３０７）。
【００５１】
ＲＣＰＵからの排他権獲得応答とともに転送されたデータＤ２を受信したＬ２キャッシュメモリ＜＃０＞は、排他権獲得応答のフラグの値が“０”であるので、受信したデータＤ２（８２）にバッファを更新し、ＲＣＰＵからの排他権獲得応答によるデータ転送であるので、排他権獲得応答のフラグの値を“１”に更新する。
【００５２】
図９は、前述したデータ更新制御を含むブロックタイプチェンジの処理の他の例を示す図である。図９に示すように、例えば、ＬＣＰＵのＬ２キャッシュメモリ＜＃０＞がストア要求を発行したとき（Ｐ４０１）、ＬＣＰＵのコヒーレンシコントローラが、ＨＣＰＵへ排他権獲得要求を発行する（Ｐ４０２）。また、ＬＣＰＵのコヒーレンシコントローラが、ＬＣＰＵ内でストア要求の対象となるデータブロックを共有しているＬ２キャッシュメモリ＜＃１＞へデータ転送要求を発行し（Ｐ４０３）、Ｌ２キャッシュメモリ＜＃１＞が、データブロックの状態をＩステートにして、Ｌ２キャッシュメモリ＜＃０＞へデータＤ１を送信する（Ｐ４０４）。
【００５３】
ＬＣＰＵがＨＣＰＵへ排他権獲得要求を発行した際、ＲＣＰＵがＬＣＰＵより先にＨＣＰＵへ排他権獲得要求を発行していた（Ｐ４１１）場合、ＬＣＰＵが発行した排他権獲得要求はＨＣＰＵで受理されず止まる。ＲＣＰＵからの排他権獲得要求を受けたＨＣＰＵは、対象のデータブロックを共有しているＬＣＰＵへ無効化要求を発行し（Ｐ４１２）、ＬＣＰＵのコヒーレンシコントローラが、データブロックの状態をＩステートにして無効化し、ＨＣＰＵへ無効化完了通知を送信する（Ｐ４１３）。ＬＣＰＵからの無効化完了通知を受けたＨＣＰＵは、ＲＣＰＵへデータ付きで排他権獲得応答を送信し、ＲＣＰＵが、データブロックの状態をＥステートにする（Ｐ４１４）。
【００５４】
その後、ＬＣＰＵからの排他権獲得要求がＨＣＰＵで受理されると、ＨＣＰＵがＲＣＰＵへデータ転送要求を発行し（Ｐ４０５）、ＲＣＰＵが、データブロックの状態をＩステートにして、ＬＣＰＵへデータＤ２付きで排他権獲得応答を送信する（Ｐ４０６）。ＲＣＰＵからのデータ付きの排他権獲得応答を受けたＬＣＰＵのコヒーレンシコントローラは、データブロックの状態をＥステートにして、排他権獲得応答に付いていたデータＤ２をストア要求の発行元であるＬ２キャッシュメモリ＜＃０＞に転送する（Ｐ４０７）。
【００５５】
ＲＣＰＵからの排他権獲得応答とともに転送されたデータＤ２を受信したＬ２キャッシュメモリ＜＃０＞は、排他権獲得応答のフラグの値が“０”であるので、受信したデータＤ２（９１）にバッファを更新し、ＲＣＰＵからの排他権獲得応答によるデータ転送であるので、排他権獲得応答のフラグの値を“１”に更新する。その後、Ｌ２キャッシュメモリ＜＃１＞から転送されたデータＤ１をＬ２キャッシュメモリ＜＃０＞が受信すると、排他権獲得応答のフラグの値が“１”であるので、受信したデータＤ１（９２）でのバッファの更新は行わない。
【００５６】
本実施形態によれば、コヒーレンシコントローラ１５にＬ２キャッシュメモリ１４間でのデータ転送を行う機構を設けるとともに、Ｌ２キャッシュメモリに排他権獲得応答のフラグを設ける。これにより、分割キャッシュ構成のＣＰＵを採用したマルチプロセッサシステムにおいて、ＣＰＵ間の制御を大幅に変更することなく、またＣＰＵ間のバスの占有率を増加させることなく、キャッシュメモリのコヒーレンシ制御を行うことが可能となるしたがって、レイテンシの低下やＣＰＵ間のプロトコル方式の変更を行うことなく、分割キャッシュ構成でのキャッシュ制御を実現することができる。
【００５７】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００５８】
１１  ＣＰＵ
１２  プロセッサコア
１３  １次（Ｌ１）キャッシュメモリ
１４  ２次（Ｌ２）キャッシュメモリ
１５  コヒーレンシコントローラ
１６  メモリ
１７  バス
２１  キャッシュメモリ部
２２  キャッシュ制御管理部
２３  データ管理部
２６  コヒーレンシ制御部
２７  タグ保持部
【図１】
0006428521.tif 000002
【図２】
0006428521.tif 000003
【図３】
0006428521.tif 000004
【図４】
0006428521.tif 000005
【図５】
0006428521.tif 000006
【図６】
0006428521.tif 000007
【図７】
0006428521.tif 000008
【図８】
0006428521.tif 000009
【図９】
0006428521.tif 000010
【図１０】
0006428521.tif 000011
【図１１】
0006428521.tif 000012
【図１２】
0006428521.tif 000013