(57)【要約】【課題】メモリへのアクセス頻度を低減することが可能な演算処理装置、情報処理装置及び情報処理装置の制御方法を提供する。【解決手段】演算処理装置を、他の演算処理装置に接続される演算処理装置において、自身が管理する第１のデータと他の演算処理装置から取得した第２のデータとを用いて演算処理を行う演算処理部と、演算処理部を動作状態又は非動作状態に設定する設定部と、第１のデータと第２のデータとを保持するキャッシュメモリ部とを有し、該設定部が該演算処理部を動作状態に設定した場合、他の演算処理装置が管理するデータが該キャッシュメモリ部から追い出されたときに、該追い出されたデータと該追い出されたデータを該他の演算処理装置のキャッシュメモリ部に記憶する契機となる要求とを、該他の演算処理装置に送信する制御部とを有する構成とする。【選択図】図１４
2014186676.tif 000002
【特許請求の範囲】
【請求項１】
他の演算処理装置に接続される演算処理装置において、
自身が管理する第１のデータと他の演算処理装置から取得した第２のデータとを用いて演算処理を行う演算処理部と、
前記演算処理部を動作状態又は非動作状態に設定する設定部と、前記第１のデータと前記第２のデータとを保持するキャッシュメモリ部とを有し、前記設定部が前記演算処理部を動作状態に設定した場合、前記第２のデータが前記キャッシュメモリ部から追い出されたときに、前記追い出されたデータと前記追い出されたデータを前記他の演算処理装置のキャッシュメモリ部に記憶する契機となる要求とを、前記他の演算処理装置に送信する制御部と、
を有することを特徴とする演算処理装置。
【請求項２】
前記制御部は、前記設定部が前記演算処理部を動作状態に設定している場合、前記他の演算処理装置に対して、データを前記制御部を有する演算処理装置に送信するよう要求するとともに前記他の演算処理装置のキャッシュメモリ部から前記データを破棄するよう要求することを特徴とする請求項１に記載の演算処理装置。
【請求項３】
他の演算処理装置に接続される演算処理装置において、
自身が管理する第３のデータと他の演算処理装置から取得した第４のデータとを用いて演算処理を行う演算処理部と、
前記演算処理部を動作状態又は非動作状態に設定する設定部と、前記第３のデータと前記第４のデータとを保持するキャッシュメモリ部とを有し、前記設定部が前記演算処理部を非動作状態に設定した場合、前記他の演算処理装置から前記第３のデータと前記第３のデータのライトバック通知又はフラッシュバック通知とを受信したときに、前記第３のデータを前記キャッシュメモリ部に記憶する制御部と、
を有することを特徴とする演算処理装置。
【請求項４】
前記制御部は、前記設定部が前記演算処理部を非動作状態に設定している場合、前記他の演算処理装置から前記キャッシュメモリ部に記憶されたデータのデータ取得要求を受信したときに、前記要求されたデータを前記他の演算処理装置に送信するとともに前記キャッシュメモリ部から前記データを破棄することを特徴とする請求項３に記載の演算処理装置。
【請求項５】
他の演算処理装置と、前記他の演算処理装置に接続される演算処理装置とを有する情報処理装置において、
前記演算処理装置は、
自身が管理する第１のデータと他の演算処理装置から取得した第２のデータとを用いて演算処理を行う演算処理部と、
前記演算処理部を動作状態又は非動作状態に設定する設定部と、前記第１のデータと前記第２のデータとを保持するキャッシュメモリ部とを有し、前記設定部が前記演算処理部を動作状態に設定した場合、前記第２のデータが前記キャッシュメモリ部から追い出されたときに、前記追い出されたデータと前記追い出されたデータを前記他の演算処理装置のキャッシュメモリ部に記憶する契機となる要求とを、前記他の演算処理装置に送信する制御部と、
を有する
ことを特徴とする情報処理装置。
【請求項６】
他の演算処理装置と、前記他の演算処理装置に接続される演算処理装置とを有する情報処理装置において、
前記演算処理装置は、
自身が管理する第３のデータと他の演算処理装置から取得した第４のデータとを用いて演算処理を行う演算処理部と、
前記演算処理部を動作状態又は非動作状態に設定する設定部と、前記第３のデータと前記第４のデータとを保持するキャッシュメモリ部とを有し、前記設定部が前記演算処理部を非動作状態に設定した場合、前記他の演算処理装置から前記第３のデータと前記第３のデータのライトバック通知又はフラッシュバック通知とを受信したときに、前記第３のデータを前記キャッシュメモリ部に記憶する制御部と、
を有する
ことを特徴とする情報処理装置。
【請求項７】
設定部により演算処理部が動作状態に設定されている演算処理装置と設定部により演算処理部が非動作状態に設定されている演算処理装置とを含むグループが形成され、
前記グループ外の演算処理装置は、前記グループ内の演算処理装置にアクセスする際に、前記演算処理部が動作状態に設定されている演算処理装置にアクセスし、前記演算処理部が非動作状態に設定されている演算処理装置にアクセスしない
ことを特徴とする請求項５又は請求項６に記載の情報処理装置。
【請求項８】
他の演算処理装置と、前記他の演算処理装置に接続されるとともに、自身が管理する第１のデータと他の演算処理装置から取得した取得した第２のデータとを用いて演算処理を行う演算処理部と、前記第１のデータと前記第２のデータとを保持するキャッシュメモリ部とを含む演算処理装置と、を有する情報処理装置の制御方法において、
前記演算処理装置が有する設定部が、前記演算処理部を動作状態に設定し、
前記演算処理装置が有する制御部が、前記第２のデータが前記キャッシュメモリ部から追い出されたときに、前記追い出されたデータと前記追い出されたデータを前記他の演算処理装置のキャッシュメモリ部に記憶する契機となる要求とを、前記他の演算処理装置に送信する
ことを特徴とする情報処理装置の制御方法。
【請求項９】
他の演算処理装置と、前記他の演算処理装置に接続されるとともに、自身が管理する第３データと他の演算処理装置から取得した取得した第４データとを用いて演算処理を行う演算処理部と、前記第３データと前記第４データとを保持するキャッシュメモリ部とを含む演算処理装置と、を有する情報処理装置の制御方法において、
前記演算処理装置が有する設定部が、前記演算処理部を非動作状態に設定し、
前記演算処理装置が有する制御部が、前記他の演算処理装置から前記第３のデータと前記第３のデータのライトバック通知又はフラッシュバック通知とを受信したときに、前記第３のデータを前記キャッシュメモリ部に記憶する
ことを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、情報処理装置及び情報処理装置の制御方法に関する。
【背景技術】
【０００２】
情報処理装置においては、複数の演算コア間でメモリのデータを共有する演算処理装置が実用に供されている。当該演算処理装置においては、演算コアとＬ１キャッシュの組が複数組集約された演算コア群が形成される。演算コア群に対しては、Ｌ２キャッシュ、Ｌ２キャッシュ制御部、メモリが接続されている。これら演算コア群、Ｌ２キャッシュ、Ｌ２キャッシュ制御部、メモリのセットをクラスタと呼ぶ。
【０００３】
キャッシュとは、大容量のメモリに記憶されたデータのうち、頻繁に使用するデータを格納する小容量の記憶部である。メモリ内のデータをキャッシュに一時的に格納することにより、時間のかかるメモリへのアクセス頻度を低減する。キャッシュは階層構造を採り、高位層ほど高速であり、低位層ほど大容量である。
【０００４】
ディレクトリベースのキャッシュコヒーレンス制御方式では、上記のＬ２キャッシュには、当該Ｌ２キャッシュが属するクラスタの演算コア群が要求したデータが格納される。各演算コア群は、演算コア群に近いＬ２キャッシュをより頻繁に使用してデータを取得するように構成されている。また、データの整合性を保つため、１つのメモリに格納されているデータは当該メモリが属するクラスタによって管理される。また、この方式では、クラスタが、管理対象のメモリ内のデータが現在どのような状態でどのキャッシュに格納されているかを管理する。また、クラスタは、当該メモリに対するデータの要求を受けた場合に、データの状態に基づいてデータ取得要求に対して適切な処理を行う。そして、クラスタは、データ取得要求の処理後、当該データの状態に関する情報を更新する。
【０００５】
ここで、特許文献１に示されるように、上記のクラスタ構成及び処理体系を有する演算処理装置において、メモリに対するアクセスで生じるレイテンシを改善することが提案されている。特許文献１では、キャッシュにおいてキャッシュミスが発生したときに当該キャッシュに空きがない場合、当該キャッシュが属するクラスタ内のメモリに存在するデータを優先的にキャッシュから掃き出して空きを作成する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−６６９５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記の技術では、キャッシュに空きがない場合にはメモリへのアクセスを行ってデータを書き戻す処理が発生する。メモリは大容量であり、演算コア群やキャッシュとは別のチップに搭載されることもある。このため、レイテンシの改善にあっては、依然としてメモリへのアクセスがボトルネックとなる可能性がある。
【０００８】
本件開示の技術は、上記の事情に鑑みてなされたものであり、その目的とするところは、メモリへのアクセス頻度を低減することが可能な演算処理装置、情報処理装置及び情報処理装置の制御方法を提供することである。
【課題を解決するための手段】
【０００９】
一実施形態による演算処理装置は、他の演算処理装置に接続される演算処理装置において、自身が管理する第１のデータと他の演算処理装置から取得した第２のデータとを用いて演算処理を行う演算処理部と、演算処理部を動作状態又は非動作状態に設定する設定部と、第１のデータと第２のデータとを保持するキャッシュメモリ部とを有し、該設定部が該演算処理部を動作状態に設定した場合、第２のデータが該キャッシュメモリ部から追い出されたときに、該追い出されたデータと該追い出されたデータを該他の演算処理装置のキャッシュメモリ部に記憶する契機となる要求とを、該他の演算処理装置に送信する制御部とを有する。
【発明の効果】
【００１０】
一実施形態によれば、メモリへのアクセス頻度を低減することが可能な演算処理装置、情報処理装置及び情報処理装置の制御方法を実現できる。
【図面の簡単な説明】
【００１１】
【図１】図１は、比較例に係る情報処理装置における一部のクラスタ構成を示す図である。
【図２】図２は、比較例に係るＬ２キャッシュ制御部の概略の構成を示す図である。
【図３】図３は、比較例に係るクラスタにおいてデータ取得要求が発生した場合の動作を示す図である。
【図４】図４は、図３に示す動作例におけるＬ２キャッシュ制御部の動作を示す図である。
【図５】図５は、比較例に係るクラスタにおいてデータ取得要求が発生した場合の動作を示す図である。
【図６】図６は、図５に示す動作例におけるＬ２キャッシュ制御部の動作を示す図である。
【図７】図７は、比較例においてデータのフラッシュバック処理とライトバック処理を行う際のクラスタの動作を示す図である。
【図８】図８は、図７に示す動作例におけるＬ２キャッシュ制御部の動作の一例を示す図である。
【図９】図９は、比較例に係る情報処理装置内において、データを排他的に取得する動作を示す図である。
【図１０】図１０は、図９に示す動作例におけるＬ２キャッシュ制御部の動作を示す図である。
【図１１】図１１は、本実施形態に係る情報処理装置における一部のクラスタ構成の概略を示す図である。
【図１２】図１２は、本実施形態に係るクラスタ内のＬ２キャッシュ制御部を示す図である。
【図１３】図１３は、本実施形態に係る情報処理装置内において、モードオン時のクラスタの演算コア群の動作状況を示す図である。
【図１４】図１４は、本実施形態において、ローカルのクラスタに属するＬ２キャッシュからデータを追い出す場合の動作を示す図である。
【図１５】図１５は、図１４に示す動作例におけるＬ２キャッシュ制御部の動作を示す図である。
【図１６】図１６は、図１４に示す動作例におけるコントローラを構成する回路を示す図である。
【図１７】図１７は、図１４に示す動作例におけるコントローラを構成する回路を示す図である。
【図１８】図１８は、図１４〜１７に示す動作例におけるＬ２キャッシュ制御部のタイミングチャートである。
【図１９】図１９は、本実施形態において、ローカルのクラスタがホームのクラスタのメモリに格納されているデータを取得する動作を示す図である。
【図２０】図２０は、図１９に示す動作例におけるＬ２キャッシュ制御部の動作を示す図である。
【図２１】図２１は、本実施形態に係るコントローラを構成する回路を示す図である。
【図２２】図２２は、本実施形態において情報処理装置内のクラスタが複数のグループを構成する場合の一例を示す図である。
【図２３】図２３は、図１９〜２２に示す動作例におけるＬ２キャッシュ制御部のタイミングチャートである。
【図２４】図２４は、本実施形態に係るコントローラを構成する回路の変形例を示す図である。
【図２５】図２５は、本実施形態に係るＬ２キャッシュ制御部の構成の一例を示す図である。
【発明を実施するための形態】
【００１２】
最初に、一実施形態に係る情報処理装置の比較例について、図面を参照しながら説明する。
【００１３】
（比較例）
図１は、比較例に係る情報処理装置１における一部のクラスタ構成を示す。図１に示すように、クラスタ１０は、演算コアとＬ１キャッシュの組をｎ組（ｎは自然数）有する演算コア群１００、Ｌ２キャッシュ制御部１０１、メモリ１０２を有する。Ｌ２キャッシュ制御部１０１はＬ２キャッシュ１０３を有する。クラスタ２０、３０も、クラスタ１０と同様、演算コア群２００、３００、Ｌ２キャッシュ制御部２０１、３０１、メモリ２０２、３０２、Ｌ２キャッシュ２０３、３０３をそれぞれ有する。
【００１４】
以降の説明において、メモリに格納されるデータを要求している演算コアが属するクラスタをローカル（Local）と呼ぶ。また、要求されたデータが格納されているメモリが属
するクラスタをホーム（Home）と呼ぶ。さらに、ローカルはないクラスタをリモート（Remote）と呼ぶ。各クラスタは、データの要求元及び要求先に応じて、ローカルにもホームにもリモートにもなる。また、あるデータ取得要求の処理において、ローカルのクラスタは、ホームのクラスタを兼ねる場合がある。また、リモートのクラスタが、ホームのクラスタを兼ねる場合もある。さらに、ホームのクラスタが管理するホームのメモリに格納されているデータの状態情報をディレクトリ情報と呼ぶ。これらの詳細については後述する。
【００１５】
図１に示すように、各クラスタはＬ２キャッシュ制御部が互いにバスあるいはインターコネクトによって接続されている。情報処理装置１内では、メモリ空間はいわゆるフラットであり、物理アドレスによってどのクラスタに属するメモリにどのデータが格納されているかが一意に決まる。
【００１６】
例えば、クラスタ１０が、クラスタ１０内のメモリ１０２以外のメモリ２０２に格納されているデータを取得する場合、そのデータを保持するメモリ２０２が属するクラスタ２０に対してデータの要求を行う。クラスタ２０は、該当データの状態をチェックする。ここで、データの状態とは、データがどのクラスタにあるか、データが排他的に使用されているか否か、情報処理装置内におけるデータの同期状況等のデータの使用状況を意味する。また、取得対象のデータが、クラスタ２０に属するＬ２キャッシュ２０３に格納されており、かつ、当該データの同期が情報処理装置１内で取れている場合、そのデータを要求元のクラスタ１０に送信する。そして、クラスタ２０は、当該データの状態情報に、要求元のクラスタ１０に情報処理装置１内で同期されたデータが渡されたことを記録する。
【００１７】
図２は、Ｌ２キャッシュ制御部１０１の概略の構成を示す。Ｌ２キャッシュ制御部１０１は、コントローラ１０１ａとＬ２キャッシュ１０３とディレクトリＲＡＭ１０４を備える。また、Ｌ２キャッシュ１０３は、タグＲＡＭ１０３ａとデータＲＡＭ１０３ｂを備える。タグＲＡＭ１０３ａは、データＲＡＭ１０３ｂが保持しているブロックのタグ情報を保持する。タグ情報とは、コヒーレンスプロトコル制御における各データの使用状況に関する情報やメモリ内のアドレス等を意味する。ここで、複数のプロセッサを使用するマルチプロセッサ環境においては、プロセッサ間で同一のデータを共有してアクセスする可能性が高い。そこで、マルチプロセッサ環境では、各キャッシュ内に存在するデータの一貫性を維持している。プロセッサ間の一貫性を維持するプロトコルをコヒーレンスプロトコルと呼ぶ。このようなプロトコルの一例として、ＭＥＳＩプロトコルが挙げられる。以下の説明では、データの使用状況をModified、Exclusive、Shared、Invalidの４状態で管理するＭＥＳＩプロトコルを使用する。ただし、使用可能なプロトコルはこれに限られない。
【００１８】
コントローラ１０１ａは、タグＲＡＭ１０３ａを使用して、メモリのブロックがデータＲＡＭ１０３ｂにどのような状態で存在しているかやデータの有無をチェックする。データＲＡＭ１０３ｂは、例えばメモリ１０２内のデータのコピーを保持するＲＡＭである。ディレクトリＲＡＭ１０４は、ホームのクラスタに属するメモリのディレクトリ情報を扱うＲＡＭである。ディレクトリ情報は巨大になるため、メモリに格納され、そのキャッシュがＲＡＭに置かれることが多い。しかし、ここでは、ディレクトリＲＡＭ１０４にホームのクラスタに属するメモリのディレクトリ情報が格納されている。
【００１９】
コントローラ１０１ａは、演算コア、もしくは、別のクラスタのＬ２キャッシュ制御部のコントローラからの要求を受け付ける。コントローラ１０１ａは、受け付けた要求内容に応じて、タグＲＡＭ１０３ａ、データＲＡＭ１０３ｂ、ディレクトリＲＡＭ１０４、メモリ１０２、他のクラスタに対してそれぞれ動作要求を行う。そして、コントローラ１０１ａは、要求された動作が完了すると、要求元にその結果を返す。
【００２０】
図３は、クラスタ１０においてデータ取得要求が発生した場合の動作の一例を示す図である。図３では、クラスタ１０がローカル及びホームのクラスタである。図３では、クラスタ１０に属するメモリ１０２に対してデータ取得要求を行い、Ｌ２キャッシュ１０３においてキャッシュミスが発生したときの動作を説明する。なお、ここでは、Ｌ２キャッシュ制御部にデータ取得要求が届いた時点でＬ１キャッシュにおいてキャッシュミスが発生していることを前提として説明する。
【００２１】
ローカルであるクラスタ１０の演算コアから、データの要求がＬ２キャッシュ制御部１０１に届く。ホームでもあるクラスタ１０のＬ２キャッシュ制御部１０１は、Ｌ２キャッシュ１０３が該当データを保持していない（miss）ことを確認すると、ディレクトリＲＡＭ１０４内のディレクトリ情報を参照する。そして、Ｌ２キャッシュ制御部１０１は、ディレクトリ情報に基づいて当該データをリモートのクラスタのＬ２キャッシュが持ち出しているか否かをチェックする。Ｌ２キャッシュ制御部１０１は、リモートのクラスタのＬ２キャッシュが当該データを保持していない（miss）ことを確認すると、ローカルであるクラスタ１０のメモリ１０２にデータ取得要求を行う。メモリ１０２からデータが返ってくると、Ｌ２キャッシュ制御部１０１は、Ｌ２キャッシュ１０３のデータＲＡＭ１０３ｂにデータを格納する。さらに、Ｌ２キャッシュ制御部１０１は、演算コア群１００内の要求元の演算コアにデータを送る。そして、Ｌ２キャッシュ１０３のタグＲＡＭ１０３ａには、情報処理装置１内で同期された状態でデータを取得したという情報が記憶される。また、ディレクトリＲＡＭ１０４には、当該データがローカルであるクラスタ１０が持っていることを示す情報が記憶される。
【００２２】
このとき、Ｌ２キャッシュ制御部１０１は、タグＲＡＭ１０３ａを参照してＬ２キャッシュ１０３のデータＲＡＭ１０３ｂにデータの空きがないことを確認した場合、ランダムアルゴリズムやＬＲＵ（Least Recently Used）アルゴリズム等の所定のアルゴリズムに
従って、Ｌ２キャッシュ１０３内のデータを追い出す。Ｌ２キャッシュ制御部１０１は、タグＲＡＭ１０３ａを参照し、追い出すデータがメモリ１０２内のデータと同じ状態を保っている場合は当該データを破棄する。一方、Ｌ２キャッシュ制御部１０１は、タグＲＡＭ１０３ａを参照し、追い出すデータが更新されていた場合はメモリ１０２にデータを書き戻す。
【００２３】
これにより、演算コア群１００の演算コアにより要求されたデータが、Ｌ２キャッシュ１０３のデータＲＡＭ１０３ｂの空き領域に格納される。そして、再度演算コア群１００の演算コアから当該データに対するデータ取得要求が発生した場合は、Ｌ２キャッシュ制御部１０１は、データＲＡＭ１０３ｂに格納されたデータを取り出して演算コアに送る（hit）。したがって、当該データがデータＲＡＭ１０３ｂから追い出されない限り、Ｌ２
キャッシュ制御部１０１は、メモリ１０２に対してアクセスを行わない。
【００２４】
図４は、図３に示す動作例におけるＬ２キャッシュ制御部１０１の動作を示す図である。コントローラ１０１ａは、演算コア群１００の演算コアからデータ取得要求を受け付ける。当該データ取得要求には、演算コアからの要求であることを示す情報と要求の種類とメモリのアドレスが含まれる。コントローラ１０１ａは要求内容に適切な処理を開始する。
【００２５】
まず、コントローラ１０１ａは、タグＲＡＭ１０３ａに対して、データ取得要求の対象となるデータを含むメモリのブロックのコピーがデータＲＡＭ１０３ｂにあるか否かをチェックする。タグＲＡＭ１０３ａから当該コピーが「ない（miss）」という結果を受け取ると、ディレクトリＲＡＭ１０４に対して、データ取得要求の対象となるデータをリモートのクラスタが持ち出しているか否かをチェックする。コントローラ１０１ａは、ディレクトリＲＡＭ１０４から「どのクラスタも持ち出していない（miss）」という結果を受け取ると、メモリ１０２に対して当該データのデータ取得要求を行う。コントローラ１０１ａは、メモリ１０２から当該データが返ってくると、ディレクトリＲＡＭ１０４に、当該データについて「ホームが持っている」ことを示す情報を登録する。また、コントローラ１０１ａは、データの使用状況（Sharedなど）を示す情報をタグＲＡＭ１０３ａに格納する。また、コントローラ１０１ａは、当該データをデータＲＡＭ１０３ｂに格納する。そして、コントローラ１０１ａは、演算コア群１００内の要求元の演算コアに当該データを送る。
【００２６】
次に、図５は、クラスタ１０においてデータ取得要求が発生した場合の動作例を示す図である。図５に示す例では、クラスタ１０がローカルのクラスタであり、クラスタ２０がホームのクラスタである。ローカルであるクラスタ１０の演算コア群１００の演算コアからクラスタ１０のＬ２キャッシュ１０３に対してデータ取得要求が行われる。そして、Ｌ２キャッシュ１０３には当該データがないためキャッシュミスが発生する（miss）。そこで、クラスタ１０は、ホームのクラスタであるクラスタ２０に対して当該データのデータ取得要求を行う。クラスタ２０のＬ２キャッシュ制御部２０１が、Ｌ２キャッシュ２０３のディレクトリ情報をチェックする。Ｌ２キャッシュ制御部２０１のコントローラ２０１ａは、Ｌ２キャッシュ２０３にも、リモートのクラスタ内のＬ２キャッシュにもデータがないことを確認すると（miss）、メモリ２０２に対して当該データのデータ取得要求を行う。
【００２７】
メモリ２０２から当該データが返ってくると、Ｌ２キャッシュ制御部２０１は、ディレ
クトリＲＡＭ２０４のディレクトリ情報を更新する。そして、Ｌ２キャッシュ制御部２０１は、データを要求元のローカルのクラスタ１０に送る。クラスタ１０のＬ２キャッシュ制御部１０１は、クラスタ２０のＬ２キャッシュ制御部２０１から受け取ったデータをＬ２キャッシュ１０３に格納する。そして、Ｌ２キャッシュ制御部１０１は、当該データを演算コア群１００の要求元の演算コアに送る。
【００２８】
このとき、ホームのクラスタ２０のＬ２キャッシュ２０３には当該データは格納されない。理由は次の通りである。まず、データを要求しているのはローカルのクラスタ１０の演算コアであり、ホームのクラスタ２０の演算コアではないからである。そして、ホームのクラスタ２０のＬ２キャッシュ２０３にデータを格納すると、ホームのクラスタ２０の演算コア群２００にとっては不要なデータがＬ２キャッシュ２０３に格納されることになるからである。また、このような不要なデータがＬ２キャッシュ２０３に格納されると、演算コア群２００が使用するデータまでＬ２キャッシュ２０３から追い出される可能性があるからである。
【００２９】
図６は、図５に示す動作例におけるＬ２キャッシュ制御部１０１、２０１の動作を示す図である。ローカルのクラスタ１０内のＬ２キャッシュ制御部１０１のコントローラ１０１ａは、演算コア群１００の演算コアからデータ取得要求を受け付ける。当該データ取得要求には、演算コアからの要求であることを示す情報とデータ取得要求の種類とメモリのアドレスが含まれる。コントローラ１０１ａは、要求内容に適切な処理を開始する。
【００３０】
コントローラ１０１ａは、タグＲＡＭ１０３ａに対して、データ取得要求の対象となるデータを含むメモリのブロックのコピーがデータＲＡＭ１０３ｂにあるか否かをチェックする。コントローラ１０１ａは、タグＲＡＭ１０３ａから当該コピーが「ない（miss）」という結果を受け取ると、ホームのクラスタ２０に属するＬ２キャッシュ制御部２０１のコントローラ２０１ａに対して、当該データのデータ取得要求を行う。
【００３１】
コントローラ２０１ａは、当該データ取得要求を受け付けると、ディレクトリＲＡＭ２０４に対して、データ取得要求の対象となるデータがいずれかのクラスタのＬ２キャッシュに格納されているか否かチェックする。コントローラ２０１ａは、ディレクトリＲＡＭ２０４から「どのクラスタも持っていない（miss）」という結果を受け取ると、メモリ２０２に対して当該データのデータ取得要求を行う。コントローラ２０１ａは、メモリ２０２から当該データが返ってくると、ディレクトリＲＡＭ２０４に、当該データの使用状況について「要求元のクラスタ１０が持っている」ことを示す情報を登録する。そして、コントローラ２０１ａは、当該データを要求元のクラスタ１０のコントローラ１０１ａに送る。データを受け取ったクラスタ１０のコントローラ１０１ａは、当該データの使用状況（Sharedなど）をタグＲＡＭ１０３ａに格納する。また、コントローラ１０１ａは、当該データをデータＲＡＭ１０３ｂに格納する。そして、コントローラ１０１ａは、演算コア群１００内の要求元の演算コアに当該データを送る。
【００３２】
図７は、比較例においてリモートのクラスタへのデータのフラッシュバック（Flush Back）処理とライトバック（Write Back）処理を行う際のクラスタの動作を示す図である。ここで、リモートのクラスタへのフラッシュバック処理とは、あるクラスタが、他のクラスタから取得したデータをキャッシュから追い出す際の処理である。このフラッシュバック処理は、追い出されたデータが更新されておらず情報処理装置１内で同期が取れている（cleanである）場合に、ホームのクラスタにローカル（ホームから見るとリモート）の
クラスタからデータが追い出されたことを通知する処理である。この処理は、ホームのクラスタにディレクトリ情報を更新させるための処理である。
【００３３】
また、リモートのクラスタへのライトバック処理とは、あるクラスタが、他のクラスタ
から取得したデータをキャッシュから追い出す際の処理である。このライトバック処理は、追い出されたデータが更新されており情報処理装置１内で同期が取れていない（dirty
である）場合に当該他のクラスタに、データがdirtyであることを通知する処理である。
以下に説明するように、比較例においては、クラスタは、リモートのクラスタへのフラッシュバック処理を行う場合は、データの取得元であるクラスタに対して、フラッシュバック通知を行い、データは送らない。一方、クラスタは、リモートのクラスタへのライトバック処理を行う場合は、データの取得元であるクラスタに対してライトバック通知を行うとともに、メモリへの格納のためにデータも送る。
【００３４】
上述した通り、Ｌ２キャッシュに新たなデータを格納するときに、Ｌ２キャッシュが満杯で空き領域がない場合、所定のアルゴリズムに従ってデータを追い出す。図７では、クラスタ１０がローカルのクラスタであり、クラスタ２０がホームのクラスタである。なお、この場合、クラスタ２０はリモートのクラスタでもある。さらに、情報処理装置１内の図示しないクラスタがリモートとなる。また、図７では、クラスタ１０は、ローカルのクラスタ１０に属するＬ２キャッシュ１０３のデータＲＡＭ１０３ｂに空きがなく、データＲＡＭ１０３ｂに格納されているデータのうち、リモートのクラスタ２０のメモリ２０２に格納されるデータを追い出す。
【００３５】
この場合、図７に示すように、クラスタ１０のＬ２キャッシュ制御部１０１は、クラスタ２０のＬ２キャッシュ制御部２０１に対して、Ｌ２キャッシュ１０３から当該データを追い出す通知を行う。ここで、この通知は、フラッシュバック要求とライトバック要求のいずれかである。なお、フラッシュバック要求とライトバック要求が、所定の要求の一例である。そして、追い出し対象のデータがcleanなデータである場合、フラッシュバック
要求がホームのクラスタ２０のＬ２キャッシュ制御部２０１に送られる。Ｌ２キャッシュ制御部２０１は、データの要求元であるクラスタ１０から該当データが追い出された、ということをＬ２キャッシュ制御部２０１内のディレクトリ情報に記録する。
【００３６】
一方、該当データがdirtyなデータである場合、ライトバック要求とともに該当データ
がホームのクラスタ２０のＬ２キャッシュ制御部２０１に送られる。ここで、データがdirtyになる場合の一例としては、ローカルのクラスタ１０の演算コア群１００によって更
新される場合等が挙げられる。そして、Ｌ２キャッシュ制御部２０１は、データの要求元であるクラスタ１０から該当データが追い出されたことを、ディレクトリＲＡＭ２０４に格納されているディレクトリ情報に記録する。さらに、Ｌ２キャッシュ制御部２０１は、該当データをホームのクラスタ２０に属するメモリ２０２へ書き戻す。なお、該当データは、ホームのクラスタ２０に対してリモートとなるクラスタの演算コアが要求しているデータである。すなわち、当該データはホームのクラスタ２０内の演算コア群２００が要求しているデータではない。仮にホームのクラスタ２０内のＬ２キャッシュ２０３に当該データを格納する場合、演算コア群２００が要求している他のデータが追い出される可能性がある。このため、ホームのクラスタ２０内のＬ２キャッシュ２０３には当該データは格納されない。
【００３７】
図８は、図７に示す動作例におけるＬ２キャッシュ制御部１０１、２０１の動作を示す図である。なお、ここでは、データがＬ２キャッシュ制御部１０１のＬ２キャッシュ１０３から追い出されるデータが決定した後の処理について説明する。Ｌ２キャッシュ制御部１０１のコントローラ１０１ａは、タグＲＡＭ１０３ａに対して、当該データを有するブロックの無効化を要求する。ここで、コントローラ１０１ａは、当該データがdirtyであ
り、ホームのクラスタ２０側のコントローラ２０１ａに対してライトバック要求の通知を行う場合は、データＲＡＭ１０３ｂから該当ブロックのデータを読み出す。そして、コントローラ１０１ａは、コントローラ２０１ａに対して、フラッシュバック要求の通知を行うか、あるいはライトバック要求の通知を行うとともに該当データを送る。要求を受け取
ったホームのクラスタ２０側のコントローラ２０１ａは、ディレクトリＲＡＭ２０４に対して「データの要求元であるクラスタ１０がデータを持っている」ことを示す情報を無効化する。そして、コントローラ２０１ａは、ライトバック要求の場合は、該当データをメモリ２０２へ書き戻す。
【００３８】
次に、図９は、情報処理装置１内において、ローカルのクラスタ１０がホームのクラスタ２０のメモリ２０２に格納されているデータを排他的に取得する動作を示す。例えば、演算コアによってデータが更新される場合に、排他的データ取得要求が使用される。排他的データ取得要求とは、ある時点において、ある１つのクラスタ（のキャッシュ）が当該要求に係るデータを保持し、他のクラスタは当該データを保持しないことを保障するための要求である。データ更新時に他のクラスタ内のＬ２キャッシュも当該データを保持していると、情報処理装置１内で当該データの同期が取れなくなってしまう。排他的データ取得要求は、これを防止するための要求である。
【００３９】
まず、ローカルのクラスタ１０の演算コア群１００内の演算コアが、データを要求する。Ｌ２キャッシュ制御部１０１は、当該データ取得要求を受けると、Ｌ２キャッシュ１０３に当該データが格納されているか否かをチェックする。Ｌ２キャッシュ１０３に当該データが格納されていない場合（miss）、Ｌ２キャッシュ制御部１０１は、ホームのクラスタ２０のＬ２キャッシュ制御部２０１に対して当該データの排他的データ取得要求を送る。Ｌ２キャッシュ制御部２０１は、排他的データ取得要求を受けると、Ｌ２キャッシュ制御部２０１内のディレクトリ情報を参照する。当該ディレクトリ情報により、ホームを含むクラスタのうちどのクラスタが当該データを保持しているかがわかる。そして、Ｌ２キャッシュ制御部２０１は、ディレクトリ情報が示す該当データを持っているクラスタに対して、当該データの破棄要求を送る。
【００４０】
図９に示す例では、Ｌ２キャッシュ２０３に当該データが格納されている。そこで、Ｌ２キャッシュ制御部２０１は、Ｌ２キャッシュ２０３から当該データを破棄する。Ｌ２キャッシュ制御部２０１は、破棄したデータをＬ２キャッシュ制御部１０１に送る。また、Ｌ２キャッシュ制御部２０１は、ディレクトリ情報に、当該データの要求元であるクラスタ１０が該当データを保持している唯一のクラスタであること示す情報を記録する。これにより、当該データの要求元であるクラスタ１０が該当データをＬ２キャッシュ１０３に格納する。
【００４１】
図１０は、図９に示す動作例におけるＬ２キャッシュ制御部１０１、２０１の動作を示す図である。ローカルのクラスタ１０内のＬ２キャッシュ制御部１０１のコントローラ１０１ａは、演算コア群１００の演算コアから排他的データ取得要求を受け付ける。当該データ取得要求には、演算コアからの要求であることを示す情報と排他的データ取得要求であることを示す情報とメモリのアドレスが含まれる。コントローラ１０１ａは、要求内容に適切な処理を開始する。
【００４２】
コントローラ１０１ａは、タグＲＡＭ１０３ａに対して、データ取得要求の対象となるデータを含むメモリのブロックのコピーがデータＲＡＭ１０３ｂにあるか否かをチェックする。コントローラ１０１ａは、タグＲＡＭ１０３ａから当該コピーが「ない（miss）」という結果を受け取ると、ホームのクラスタ２０に属するＬ２キャッシュ制御部２０１のコントローラ２０１ａに対して、当該データのデータ取得要求を行う。
【００４３】
コントローラ２０１ａは、当該データ取得要求を受け付けると、ディレクトリＲＡＭ２０４に対して、要求しているデータがいずれかのクラスタのＬ２キャッシュに格納されているか否かチェックする。コントローラ２０１ａは、ディレクトリＲＡＭ２０４から「ホームのクラスタ２０が持っている（hit）」という結果を受け取ると、タグＲＡＭ２０３
ａに対して当該データの無効化要求を行う。また、コントローラ２０１ａは、データＲＡＭ２０３ｂから当該データを読み出す。そして、コントローラ２０１ａは、ディレクトリＲＡＭ２０４に対して、「ホームのクラスタが持っている」ことを示す情報を無効化する。さらに、コントローラ２０１ａは、ディレクトリＲＡＭ２０４に対して、「当該データの要求元であるクラスタ１０がデータを持っている」ことを示す情報を追加する。そして、コントローラ２０１ａは、当該データを要求元のクラスタ１０のコントローラ１０１ａに送る。当該データを受け取ったクラスタ１０のコントローラ１０１ａは、データの使用状況をタグＲＡＭ１０３ａに登録する。また、コントローラ１０１ａは、当該データをデータＲＡＭ１０３ｂに格納する。そして、コントローラ１０１ａは、演算コア群１００内の要求元の演算コアに当該データを送る。
【００４４】
以上のように、比較例においては、リモートのクラスタに属するメモリに格納されるデータを要求する場合、ローカル、ホーム、リモートの各Ｌ２キャッシュにおいてキャッシュミスが発生する可能性がある。このとき、クラスタ間の通信に加え、メモリとの通信が実行される。メモリは、Ｌ２キャッシュに比べて大容量である。このため、メモリへのアクセス時に生じるレイテンシは、Ｌ２キャッシュへのアクセス時に生じるレイテンシよりも長い。また、メモリは、演算コアやＬ２キャッシュとは別個のチップ上に配置されることもある。このため、チップ越し（オフチップ）の通信は、チップ内（オンチップ）の通信に比べて処理時間が長くなる可能性もある。
【００４５】
そこで、以上の比較例に関する説明を踏まえ、一実施形態に係る情報処理装置の例について、図面を参照しながら以下に説明する。以下の例においては、各クラスタの演算コア群の動作状態及び非動作状態が制御されている。また、非動作状態にされた演算コア群が属するクラスタのＬ２キャッシュを、動作状態にされた演算コア群用のキャッシュ、いわゆるビクティムキャッシュ（Victim Cache）として使用する。これにより、あるアプリケーションが１つのクラスタに属するメモリの容量を超えるメモリ空間を使用する際に、メモリへのアクセスをできるだけ抑える。そして、メモリへのアクセスに伴って発生するレイテンシを低減する。以下にその詳細について説明する。
【実施例】
【００４６】
図１１は、本実施例としての情報処理装置２における一部のクラスタ構成の概略を示す。図１１に示すように、情報処理装置２は、比較例と同様、クラスタ５０、６０、７０を有する。なお、クラスタ５０、６０、７０が演算処理装置の一例に相当する。また、ローカル、ホーム、リモートの違いも比較例において説明した通りであり、ここでは説明を省略する。クラスタ５０は、演算コア群５００、Ｌ２キャッシュ制御部５０１、メモリ５０２を有する。Ｌ２キャッシュ制御部５０１はＬ２キャッシュ５０３を有する。クラスタ６０、７０も、クラスタ５０と同様、演算コア群６００、７００、Ｌ２キャッシュ制御部６０１、７０１、メモリ６０２、７０２、Ｌ２キャッシュ６０３、７０３をそれぞれ有する。なお、演算コア群５００、６００、７００が演算処理部の一例に相当する。また、Ｌ２キャッシュ５０３、６０３、７０３がキャッシュメモリ部の一例に相当する。さらに、Ｌ２キャッシュ制御部５０１、６０１、７０１が制御部の一例に相当する。そして、本実施形態においては、クラスタ５０、６０、７０が１つのグループを構成する。ここで、グループは、１つのアプリケーションの実行処理を担当するクラスタの集まりである。ただし、グループを形成する基準はこれに限られず、適宜クラスタをグループ分けすることができる。
【００４７】
図１１に示すように、各クラスタはＬ２キャッシュ制御部が互いにバスあるいはインターコネクトによって接続されている。情報処理装置２内では、メモリ空間はいわゆるフラットであり、物理アドレスによってどのクラスタに属するメモリにどのデータが格納されているかが一意に決まる。
【００４８】
図１２は、クラスタ５０内のＬ２キャッシュ制御部５０１を示す図である。Ｌ２キャッシュ制御部５０１は、コントローラ５０１ａとレジスタ５０１ｂとＬ２キャッシュ５０３とディレクトリＲＡＭ５０４を備える。また、Ｌ２キャッシュ５０３は、タグＲＡＭ５０３ａとデータＲＡＭ５０３ｂを有する。また、レジスタ５０１ｂが設定部の一例に相当する。なお、タグＲＡＭ５０３ａ、データＲＡＭ５０３ｂ、ディレクトリＲＡＭ５０４は、それぞれ比較例と同様の機能を有するため、ここでは詳細な説明を省略する。
【００４９】
レジスタ５０１ｂは、本実施例に係る情報処理装置２内でのクラスタ５０の動作モードを制御する。本実施例では、一例として、動作モードは「モードオフ」、「モードオン及び演算コア動作」、「モードオン及び演算コア非動作」の３つのモードを有する。ここで「モードオフ」とは、各クラスタが上記の比較例に示した動作を行う動作モードである。「モードオン及び演算コア動作」は、クラスタが演算コア群を動作状態とした上で本実施例の動作を行う（モードオン）動作モードである。また、「モードオン及び演算コア非動作」は、クラスタが演算コア群を非動作状態とした上で本実施例の動作を行う動作モードである。なお、これらの動作モードにおける処理の詳細については後述する。
【００５０】
コントローラ５０１ａがレジスタ５０１ｂの設定値を読み込み、設定値に従って動作モードを切り換える。また、本実施例では、情報処理装置２においてアプリケーションの実行前に動作モードの切り換えを行う。さらに、本実施例では、情報処理装置２のＯＳ（Operating System）が各クラスタのレジスタの動作モードの切り換えを制御する。なお、動作モードの切り換えは、情報処理装置２のユーザが明示的にＯＳに指示をして行ってもよいし、実行するアプリケーションのメモリ使用量等の情報に基づいてＯＳが自律的に行ってもよい。
【００５１】
図１３は、情報処理装置２内において、モードオン時のクラスタ５０、６０、７０の演算コア群の動作状況を示す図である。一例として、モードオン時、１グループ内のクラスタ５０、６０、７０は、グループ内で１つのクラスタに属する演算コア群が動作するように制御される。図１３では、クラスタ５０の動作モードが「モードオン及び演算コア動作」であり、クラスタ６０、７０の動作モードが「モードオン及び演算コア非動作」である。したがって、クラスタ５０の演算コア群５００が動作状態となり、クラスタ６０、７０の演算コア群６００、７００はそれぞれ非動作状態となる。なお、一例として、情報処理装置２では、クラスタ５０、６０、７０を有するグループが複数構成されている。そして、各グループが、情報処理装置２において実行される１つのプロセスの処理にそれぞれ対応している。
【００５２】
図１４は、本実施例において、クラスタ５０に属するＬ２キャッシュ５０３からクラスタ６０に属するメモリ６０２に格納されるデータを追い出す場合の動作を示す図である。比較例と同様、Ｌ２キャッシュ制御部５０１は、Ｌ２キャッシュ５０３に新たなデータを格納するときに、Ｌ２キャッシュ５０３に空き領域がない場合、所定のアルゴリズムに従ってデータを追い出す。Ｌ２キャッシュ制御部５０１は、タグＲＡＭ５０３ａを参照して、追い出すデータがcleanかdirtyかを判定する。そして、Ｌ２キャッシュ制御部５０１は、データがcleanの場合はＬ２キャッシュ制御部６０１にフラッシュバック要求を通知す
るとともにデータを送る。また、Ｌ２キャッシュ制御部５０１は、データがdirtyの場合
はＬ２キャッシュ制御部６０１にライトバック要求を通知するとともにデータを送る。
【００５３】
図１５は、図１４に示す動作例におけるＬ２キャッシュ制御部５０１、６０１の動作を示す図である。上記の通り、Ｌ２キャッシュ制御部５０１、６０１は、コントローラ５０１ａ、６０１ａとレジスタ５０１ｂ、６０１ｂとＬ２キャッシュ５０３、６０３とディレクトリＲＡＭ５０４、６０４をそれぞれ備える。また、Ｌ２キャッシュ５０３、６０３は
、タグＲＡＭ５０３ａ、６０３ａとデータＲＡＭ５０３ｂ、６０３ｂをそれぞれ備える。
【００５４】
また、図１６、１７は、図１４に示す動作例におけるコントローラ５０１ａ、６０１ａが有する回路の一部をそれぞれ示す図である。図１６に示すコントローラ５０１ａ内の回路は、クラスタ５０がローカルとなり、動作モードが「モードオン及び演算コア動作」である場合の制御回路である。図１６に示すコントローラ５０１ａ内の回路により、ローカルのクラスタ５０のＬ２キャッシュ５０３からリモートのクラスタ６０のメモリ６０２に格納されるデータを追い出す場合に、当該データがホームのクラスタ６０に送られる。すなわち、コントローラ５０１ａがタグＲＡＭ５０３ａを参照して当該データがcleanであ
ることを確認したときに、図１６に示す制御回路においてRequestIsFlushBackがアサートされる。そして、RequestIsFlushBackがアサートされると、追い出されるデータがホームのクラスタ６０に送られる。なお、図１６において、DataRead（データＲＡＭのデータを読み出す）とDataSend（ホームのクラスタにデータを送る）が動作を指示する信号であり、その他はフラグ信号である。
【００５５】
図１６に示すように、ＡＮＤゲート５０１ｃは、クラスタ５０の動作モードが「モードオン及び演算コア動作」である場合に「１」を出力する。それ以外の場合、ＡＮＤゲート５０１ｃは「０」を出力する。また、ＡＮＤゲート５０１ｄは、ＡＮＤゲート５０１ｃの出力が「１」であり、フラッシュバック処理を行う場合に「１」を出力する。それ以外の場合、ＡＮＤゲート５０１ｃは「０」を出力する。
【００５６】
ＯＲゲート５０１ｅは、ＡＮＤゲート５０１ｄの出力が「１」あるいは比較例の動作に従ってデータＲＡＭ５０３ｂを参照する場合に、データＲＡＭ５０３ｂのデータの読み出し指示信号（DataRead2）を出力する。ＯＲゲート５０１ｆは、ＡＮＤゲート５０１ｄの
出力が「１」あるいは比較例の動作に従ってホームのクラスタにデータを送る場合に、ホームのクラスタにデータを送る指示信号（DataSend2）を出力する。なお、ＯＲゲート５
０１ｅ、５０１ｆの後段の回路は従来と同様の回路であるため、ここでは図示及び説明を省略する。
【００５７】
ＡＮＤゲート５０１ｃ、５０１ｄにより、クラスタ５０の動作モードが「モードオン及び演算コア動作」の場合に、クラスタ５０（ローカル）でフラッシュバック要求が発生すると、Ｌ２キャッシュ５０３のデータＲＡＭ５０３ｂからのデータ読み出しが指示される（DataRead2）。さらに、読み出されたデータのホームに転送する指示信号が出力される
（DataSend2）。一方、クラスタ５０の動作モードが「モードオフ」又は「演算コア非動
作」の場合は、ＡＮＤゲートｃが「０」を出力する。そして、ＡＮＤゲート５０１ｄによってクラスタ５０（ローカル）でのフラッシュバック要求の信号（RequestIsFlushBack）が遮断される。フラッシュバック要求の信号が遮断された場合でも、比較例で説明したタグＲＡＭ５０３ａ及びデータＲＡＭ５０３ｂからの読み出しや、他のクラスタ等へのデータ転送が発生すると、ＯＲゲート５０１ｅ、５０１ｆによって、それぞれの指示信号による制御が実行される（図１６における、比較例のDataRead、比較例のDataSend）。
【００５８】
図１７に示すコントローラ６０１ａ内の回路は、クラスタ６０がホームとなり、動作モードが「モードオン及び演算コア非動作」である場合の制御回路である。図１７に示すコントローラ６０１ａ内の回路により、ローカルのクラスタ５０から追い出されたデータがＬ２キャッシュ６０３に格納される。図１７において、TAGSave（タグＲＡＭにデータを
格納する）、DataSave（データＲＡＭにデータを格納する）、DirectoryUpdate(SaveLocal)（ディレクトリＲＡＭのディレクトリ情報を更新する）、MemorySave（メモリにデータを格納する）が動作を指示する信号である。また、図１７において、その他はフラグ信号である。
【００５９】
ＡＮＤゲート６０１ｃは、クラスタ６０の動作モードが「モードオン及び演算コア非動作」である場合に「１」を出力する。それ以外の場合、ＡＮＤゲート６０１ｃは「０」を出力する。ＯＲゲート６０１ｄは、クラスタ５０（ローカル）からフラッシュバック要求又はライトバック要求を受けた場合に「１」を出力する。
【００６０】
ＯＲゲート６０１ｆは、ＡＮＤゲート６０１ｅの出力が「１」あるいは比較例の動作に従ってタグＲＡＭ６０３ａにデータの使用状況に関するデータを登録する場合に、タグＲＡＭ６０３ａに当該データを登録する指示信号（TagSave2）を出力する。ＯＲゲート６０１ｇは、ＡＮＤゲート６０１ｅの出力が「１」あるいは比較例の動作に従ってデータＲＡＭ６０３ｂに追い出されたデータを格納する場合に、データＲＡＭ６０３ｂにデータを格納する指示信号（DataSave2）を出力する。ＯＲゲート６０１ｈは、ＡＮＤゲート６０１
ｅの出力が「１」あるいは比較例の動作に従ってディレクトリＲＡＭ６０４のディレクトリ情報を更新する場合に、ディレクトリＲＡＭ６０４のディレクトリ情報を更新する指示信号（DirectoryUpdate(SaveLocal)2）を出力する。
【００６１】
ＡＮＤゲート６０１ｊは、クラスタ６０の動作モードが「モードオン及び演算コア非動作」であり、かつクラスタ５０からのフラッシュバック要求の信号がアサートされると、メモリ６０２へのデータ格納を禁止する。あるいは、ＡＮＤゲート６０１ｊは、クラスタ６０の動作モードが「モードオン及び演算コア非動作」であり、ライトバック要求の信号がアサートされると、メモリ６０２へのデータ格納を禁止する。一方、ＡＮＤゲート６０１ｊは、クラスタ６０の動作モードが「モードオフ」か「演算コア動作」である場合に、比較例の動作に従ってデータをメモリ６０２に格納するときに、データのメモリ６０２への格納を行う指示信号（MemorySave2）を出力する。または、クラスタ５０からフラッシ
ュバック要求もライトバック要求も通知されていない場合に、比較例の動作に従ってデータをメモリ６０２に格納するときに、当該指示信号（MemorySave2）を出力する。なお、
ＯＲゲート６０１ｆ〜６０１ｈ、ＡＮＤゲート６０１ｊの後段の回路は従来と同様の回路であるため、ここでは図示及び説明を省略する。
【００６２】
したがって、例えばクラスタ６０の演算コア群６００が動作状態にある場合は、ＡＮＤゲート６０１ｅの出力は「０」となる。したがって、例えばローカルのクラスタ５０からのフラッシュバック要求（RequestIsFlushBack）によっては、TAGSave2、DataSave2、DirectoryUpdate(SaveLocal)2、MemorySave2はアサートされない。その代わり、比較例の動
作により、TAGSave、DataSave、DirectoryUpdate(SaveLocal)、MemorySaveの指示信号に
従った処理が実行される。
【００６３】
一方、クラスタ６０の動作モードが「モードオン及び演算コア非動作」である場合、コントローラ６０１ａは、フラッシュバック通知又はライトバック通知を受け付けると、ＡＮＤゲート６０１ｅの出力が「１」となる。この場合、ＯＲゲート６０１ｆの出力が「１」となり、タグＲＡＭ６０３ａに対して追い出されたデータに関する情報の更新が要求される。また、ＯＲゲート６０１ｇの出力が「１」となるため、追い出されたデータはＬ２キャッシュ６０３のデータＲＡＭ６０３ｂに格納される。さらに、ＯＲゲート６０１ｈの出力が「１」となるため、ディレクトリＲＡＭ６０４に対して追い出されたデータに関するディレクトリ情報の更新が要求される。そして、インバータ６０１ｉの出力は「０」となるため、ＡＮＤゲート６０１ｊの出力も「０」となり、メモリ６０２にはデータは格納されない。すなわち、メモリ６０２へのアクセスが発生せず、レイテンシ発生の懸念もない。
【００６４】
ここで、図１５に示すように、コントローラ５０１ａは、タグＲＡＭ５０３ａに対して、追い出し対象のデータがデータＲＡＭ５０３ｂから追い出されたこと（Invalid）を登
録するよう要求する。次に、コントローラ５０１ａは、データＲＡＭ５０３ｂから追い出
すデータを取り出す。コントローラ５０１ａは、取り出したデータが情報処理装置２内で同期が取れている（データがcleanである）場合は、ホームのクラスタ６０のコントロー
ラ６０１ａに、フラッシュバック要求を通知するとともに追い出されるデータを送る。また、コントローラ５０１ａは、追い出されるデータが情報処理装置２内で同期が取れていない（データがdirtyである）場合は、コントローラ６０１ａに、ライトバック要求を通
知するとともに追い出されるデータを送る。
【００６５】
ホームのクラスタ６０のコントローラ６０１ａは、ローカルのクラスタ５０のコントローラ５０１ａから上記のフラッシュバック要求又はライトバック要求を受け取る。そして、コントローラ６０１ａは、データＲＡＭ６０３ｂに当該要求とともに受け取ったデータ、すなわちデータＲＡＭ５０３ｂから追い出されたデータを格納する。このため、コントローラ６０１ａは、タグＲＡＭ６０３ａに対して、データＲＡＭ６０３ｂに当該データが格納されていることを示すように情報を更新する。次に、コントローラ６０１ａは、データＲＡＭ６０３ｂに当該データを格納する。そして、コントローラ６０１ａは、ディレクトリＲＡＭ６０４に対して、当該データがホームのクラスタ６０に追加されたことを示すようディレクトリ情報の更新を要求する。さらに、コントローラ６０１ａは、ディレクトリＲＡＭ６０４に対して、ローカルのクラスタ５０から破棄されたことを示すようディレクトリ情報の更新を要求する。
【００６６】
図１８は、図１５〜１７に示す動作例におけるＬ２キャッシュ制御部５０１、６０１のタイミングチャートである。以下の説明において、チャート内のステップをＳと略記する。図１８は、コントローラ５０１ａがコントローラ６０１ａに対してライトバック要求を送る場合を示す。Ｓ１０１において、コントローラ５０１ａは、タグＲＡＭ５０３ａに対して、追い出し対象のデータがデータＲＡＭ５０３ｂから追い出されたこと（Invalid）
を登録するよう要求する。なお、どのデータが追い出しの対象となるかは、別途ＬＲＵアルゴリズム等によりあらかじめ決められている。Ｓ１０２において、タグＲＡＭ５０３ａは、当該要求に対する応答において、データの使用状況を示す情報（Modified；Value=M
）をコントローラ５０１ａに送る。Ｓ１０３では、コントローラ５０１ａは、タグＲＡＭ５０３ａから取得したアドレスを用いてデータＲＡＭ５０３ｂからデータの読み出しを行う。Ｓ１０４において、データＲＡＭ５０３ｂは、コントローラ５０１ａからの要求に含まれるアドレスに一致するアドレスを有するデータを読み出し、コントローラ５０１ａに送る。
【００６７】
コントローラ５０１ａは、データＲＡＭ５０３ｂから追い出されたデータを取得すると、Ｓ１０５において、コントローラ６０１ａにフラッシュバック要求又はライトバック要求を送るとともに当該データを送る。コントローラ５０１ａは、Ｓ１０２においてタグＲＡＭ５０３ａから取得したデータの使用状況（cleanかdirtyか）に基づいてフラッシュバック要求かライトバック要求かを決定する。図１８では、コントローラ５０１ａはライトバック要求をコントローラ６０１ａに送る。また、コントローラ５０１ａは、当該データがどのクラスタのメモリに格納されているかを示すアドレスもコントローラ６０１ａに送る。
【００６８】
Ｓ１０６において、コントローラ６０１ａは、タグＲＡＭ６０３ａに対して、コントローラ５０１ａが送ったデータがデータＲＡＭ６０３ｂに格納されることを示す情報を記憶するよう要求する。さらに、コントローラ６０１ａは、タグＲＡＭ６０３ａに対して、当該データがどのクラスタのメモリに格納されているかを示すアドレスを記憶するよう要求する。Ｓ１０７において、タグＲＡＭ６０３ａは、コントローラ６０１ａの当該要求に従って記憶処理を行い、処理が完了したら、完了したことをコントローラ６０１ａに通知する。Ｓ１０８において、コントローラ６０１ａは、当該データをデータＲＡＭ６０３ｂに格納する。Ｓ１０９において、データＲＡＭ６０３ｂは当該データを格納した後、格納処
理が完了したことをコントローラ６０１ａに通知する。
【００６９】
Ｓ１１０において、コントローラ６０１ａは、ディレクトリＲＡＭ６０４に対して、当該データがホームのクラスタ６０が持っていることを示すようディレクトリ情報の更新を要求する。さらに、コントローラ６０１ａは、ディレクトリＲＡＭ６０４に対して、当該データがリモートでもあるローカルのクラスタ５０から破棄されたことを示すようディレクトリ情報の更新を要求する。Ｓ１１１では、ディレクトリＲＡＭ６０４は当該ディレクトリ情報を更新した後、更新処理が完了したことをコントローラ６０１ａに通知する。Ｓ１１２では、コントローラ６０１ａは以上の処理が完了したことをコントローラ５０１ａに通知する。
【００７０】
ところで、本実施形態においてディレクトリＲＡＭは、ディレクトリ情報において、データＲＡＭ内に格納されている各データがどのクラスタに持ち出されているかを、各クラスタに対応するビットによって管理する。例えば、データを持ち出しているクラスタに対応するビットを「１」とし、データを持ち出していないクラスタに対応するビットを「０」とする。したがって、例えば上記のＳ１１０において、ディレクトリＲＡＭ６０４は、クラスタ６０に対応するビットを「１」とし、クラスタ５０に対応するビットを「０」とする。以下の説明においても、ディレクトリＲＡＭは、ディレクトリ情報における当該ビットを変更することによって、各データの使用状況を記憶する。ただし、ディレクトリＲＡＭにおけるクラスタのデータの持ち出し状況を管理する構成は、上記に限られない。
【００７１】
なお、コントローラ５０１ａがコントローラ６０１ａに対してフラッシュバック要求を送る場合も、コントローラ６０１ａにおける処理は上記と同様であるため、ここではその説明を省略する。また、上記の例では、コントローラ５０１ａがフラッシュバック要求かライトバック要求をコントローラ６０１ａに送る構成を用いた。ただし、コントローラ５０１ａがフラッシュバック要求の代わりにライトバック要求を送る構成を用いてもよい。このような構成とした場合、ホームのクラスタ６０側では、フラッシュバック要求とライトバック要求の場合分けを行わない。さらに、レジスタ６０１ｂの設定に従って演算コア群６００を非動作にし、リモートのクラスタ５０から受け取ったデータをＬ２キャッシュ６０３に格納する構成とすればよい。このため、ホームのクラスタ６０の構成を変更する手間が省ける。
【００７２】
図１９は、本実施形態において、ローカルのクラスタ５０がホームのクラスタ６０のメモリ６０２に格納されるデータを取得する動作を示す図である。比較例と同様、Ｌ２キャッシュ制御部５０１は、演算コア群５００から要求されたデータがＬ２キャッシュ５０３にない（キャッシュミスが発生）場合に、クラスタ６０のＬ２キャッシュ制御部６０１に対して当該データを要求する。本実施形態においては、Ｌ２キャッシュ６０３に当該データが格納されている場合について説明する。Ｌ２キャッシュ制御部６０１はＬ２キャッシュ６０３から当該データを取り除き、取り除いたデータをＬ２キャッシュ制御部５０１に送る。なお、Ｌ２キャッシュ６０３に当該データが格納されていない場合は、Ｌ２キャッシュ制御部６０１は、メモリ６０２から当該データを取得して、Ｌ２キャッシュ制御部５０１に当該データを送る。
【００７３】
図２０は、図１９に示す動作例におけるＬ２キャッシュ制御部５０１、６０１の動作を示す図である。上記の通り、Ｌ２キャッシュ制御部５０１、６０１は、コントローラ５０１ａ、６０１ａとレジスタ５０１ｂ、６０１ｂとＬ２キャッシュ５０３、６０３とディレクトリＲＡＭ５０４、６０４をそれぞれ備える。また、Ｌ２キャッシュ５０３、６０３は、タグＲＡＭ５０３ａ、６０３ａとデータＲＡＭ５０３ｂ、６０３ｂをそれぞれ備える。
【００７４】
図２１は、コントローラ６０１ａが有する回路を示す図である。図２１に示すコントロ
ーラ６０１ａ内の回路は、クラスタ６０の動作モードが「モードオン及び演算コア非動作」である場合の制御回路である。また、図２１に示すコントローラ６０１ａは、コントローラ５０１ａから排他的データ取得要求に限らず、他のクラスタとデータを共有可能なデータ取得要求等のデータ取得要求が行われた場合にも動作する制御回路である。そして、図２１に示すコントローラ６０１ａにより、コントローラ５０１ａから要求されているデータがＬ２キャッシュ６０３に存在する（キャッシュヒットが発生）場合に、当該データがコントローラ５０１ａに送られる。さらに、コントローラ６０１ａにより、当該データがＬ２キャッシュ６０３から破棄される。図２１において、DataWillBeInvalidated（デ
ータＲＡＭ内の対象データを破棄する）が動作を決定する信号であり、その他はフラグ信号である。
【００７５】
図２１に示すように、ＡＮＤゲート６０１ｋは、クラスタ６０の動作モードが「モードオン及び演算コア非動作」であり、かつ要求されているデータがデータＲＡＭ６０３ｂに存在する（キャッシュヒットが発生）場合に「１」を出力する。それ以外の場合、ＡＮＤゲート６０１ｋは「０」を出力する。ＯＲゲート６０１ｌは、ＡＮＤゲート６０１ｋの出力が「１」あるいは比較例の動作に従って取得したデータをデータＲＡＭ６０３ｂから破棄する場合に、取得したデータをデータＲＡＭ６０３ｂから破棄する指示信号（DataWillBeInvalidated2）を出力する。なお、ＯＲゲート６０１ｌの後段の回路は従来と同様の回路であるため、ここでは図示及び説明を省略する。
【００７６】
図２１に示す制御回路により、コントローラ５０１ａからコントローラ６０１ａにデータ取得要求が通知される場合を考える。コントローラ６０１ａは、要求されたデータがデータＲＡＭ６０３ｂに格納されている場合に、データＲＡＭ６０３ｂから当該データを取得する。そして、コントローラ６０１ａは、取得したデータをコントローラ５０１ａに送る。また、コントローラ６０１ａは、データＲＡＭ６０３ｂから当該データを破棄する。
【００７７】
ここで、コントローラ６０１ａが図２１に示す制御回路に従って動作したときに得られる効果の一例を、図２２を参照しながら説明する。図２２には、情報処理装置３内のクラスタが複数のグループを構成する場合の一例を示す。ここでは、各クラスタの動作モードは、Ｌ２キャッシュ制御部のレジスタの設定値によって設定される。具体的には、動作モードは、設定値が０の場合は「モードオフ」、設定値が１の場合は「モードオン及び演算コア動作」、設定値が２の場合は「モードオン及び演算コア非動作」に設定される。図２２では、クラスタ８００ａ〜クラスタ８００ｄが１つのグループ８００を構成する。また、グループ９００は１つのクラスタ９００ａで構成される。グループ９００は、使用するメモリ空間がクラスタ９００ａ内のメモリのメモリ容量以下であるアプリケーションの実行を担当する。なお、クラスタ８００ａ〜８００ｄ、９００ａは、上記のクラスタ５０、６０と同様の構成を有するため、各構成要素の図示や説明は省略する。さらに、クラスタ８００ａ〜８００ｄ、９００ａは、図２１に示す回路を備えるため、以下の説明では、符号及び動作の説明を流用する。
【００７８】
図２２では、クラスタ８００ｂ〜８００ｄの動作モードが「モードオン及び演算コア非動作」である。また、クラスタ９００ａの動作モードは「モードオフ」である。このように、例えば、情報処理装置３内の一部のグループに対して本実施例の動作を行うよう制御し、他のグループは比較例に従った動作を行うよう制御することができる。ここで、クラスタ８００ａがクラスタ８００ｂのＬ２キャッシュからデータを取得する場合と、クラスタ８００ａがクラスタ９００ａのＬ２キャッシュからデータを取得する場合を考える。
【００７９】
まず、クラスタ８００ａがクラスタ８００ｂからデータを取得する場合を考える。この場合、クラスタ８００ａがローカル、クラスタ８００ｂがホームとなる。そして、クラスタ８００ａからクラスタ８００ｂに対してデータ取得要求が通知される。そして、クラス
タ８００ｂは、クラスタ８００ａからデータ取得要求を受けると、クラスタ８００ｂのコントローラ内の図２１に示す回路において、ＡＮＤゲート６０１ｋからの出力が「１」となる。さらに、ＯＲゲート６０１ｌからの出力が「１」となる。したがって、クラスタ８００ｂは、クラスタ８００ａからのデータ取得要求に従って、Ｌ２キャッシュから当該データを取得してクラスタ８００ａに送るとともに、当該データをＬ２キャッシュから破棄する。
【００８０】
次に、クラスタ８００ａがクラスタ９００ａのＬ２キャッシュからデータを取得する場合を考える。この場合、クラスタ８００ａがローカル、クラスタ９００ａがホームとなる。そして、クラスタ８００ａからクラスタ９００ａに対してデータ取得要求が通知される。ここで、クラスタ９００ａの動作モードは「モードオフ」である。したがって、クラスタ９００ａが上記指示を受けると、クラスタ９００ａのコントローラ内の図２１に示す回路において、ＡＮＤゲート６０１ｋから「０」が出力される。したがって、ＯＲゲート６０１ｌからは、取得したデータをＬ２キャッシュから破棄する指示は出力されない。そして、クラスタ９００ａは、Ｌ２キャッシュからデータを取得してクラスタ８００ａに送る。また、クラスタ９００ａ内のＬ２キャッシュには、当該データが格納されたままとなる。
【００８１】
すなわち、図２２に示す例では、グループ内のクラスタ間におけるデータ取得においては、Ｌ２キャッシュからデータが取得されるとそのＬ２キャッシュから当該データが破棄される。これにより、情報処理装置３内においてＬ２キャッシュの容量を有効に利用することができる。また、情報処理装置３内においてデータの同期性を確保することもできる。また、グループ外のクラスタからデータを取得する場合は、そのクラスタの演算コア群が動作状態にある。したがって、当該データは当該演算コア群も使用するデータである可能性がある。そこで、このような場合は、グループ外のクラスタのＬ２キャッシュからデータが取得されたときに、そのＬ２キャッシュから当該データが破棄されないようにすることができる。
【００８２】
さらに、図２２に示す例において、例えばグループ８００外のクラスタ９００ａが、グループ８００内のクラスタのメモリに格納されているデータを要求する場合を考える。このとき、クラスタ９００ａは、動作モードが「モードオン及び演算コア動作」であるクラスタ８００ａに対してデータの取得要求を行う。すなわち、クラスタ９００ａは、動作モードが「モードオン及び演算コア非動作」であるクラスタ８００ｂ〜８００ｄにはアクセスしない。なお、図２２に示す例では、ＯＳ等のソフトウェア側の調整によって、グループ外のクラスタからグループ内のクラスタに属するメモリのデータを要求する際の動作を制御する。すなわち、グループ外のクラスタは、動作モードが「モードオン及び演算コア動作」であるクラスタにアクセスするように制御される。これにより、グループ外のクラスタは、グループ内の動作モードが「モードオン及び演算コア動作」であるクラスタの演算結果を、比較例に比べてより円滑かつより高速に取得することができる。
【００８３】
また、例えばクラスタ９００ａがクラスタ８００ｃにアクセスすることを許可した場合を考える。そして、クラスタ９００ａがクラスタ８００ｃのＬ２キャッシュに格納されているデータについて排他的データ取得要求を行ったとする。このとき、当該データは、クラスタ９００ａに移動するとともに、クラスタ８００ｃのＬ２キャッシュからは破棄される。また、クラスタ８００ｃでは、ディレクトリ情報により、当該データがグループ外のクラスタ９００ａに持ち出されたことを管理する。そこで、図２２に示す例では、グループ外のクラスタからのアクセスを、グループ内の動作モードが「モードオン及び演算コア動作」であるクラスタに制限する。これにより、「モードオン及び演算コア非動作」のクラスタのＬ２キャッシュに格納されたデータがグループ外のクラスタによって持ち出されることがない。このため、「モードオン及び演算コア動作」であるクラスタが「モードオ
ン及び演算コア非動作」のクラスタのデータを取得する際に、当該データをグループ外のクラスタが持ち出しているために、グループ外のクラスタからデータを取得するといった処理が発生する懸念がない。よって、グループ内において各クラスタがデータを効率よく取得することができる。
【００８４】
次に、図２３は、図１９〜図２１に示す動作例におけるＬ２キャッシュ制御部５０１、６０１のタイミングチャートである。まず、Ｓ２０１において、Ｌ２キャッシュ制御部５０１のコントローラ５０１ａは、演算コア群５００の演算コアからデータ取得要求を受け付ける。当該データ取得要求には、当該データがどのクラスタのメモリに格納されているかを示すアドレスに関する情報が含まれる。Ｓ２０２において、コントローラ５０１ａは、タグＲＡＭ５０３ａに対して、当該アドレスに対応付けられているデータがデータＲＡＭ５０３ｂに格納されているか否かを確認する。本実施形態では、Ｓ２０３において、タグＲＡＭ５０３ａは、当該データがデータＲＡＭ５０３ｂにない（キャッシュミスが発生）ことを示す情報をコントローラ５０１ａに返す。
【００８５】
Ｓ２０４において、コントローラ５０１ａは、演算コア群５００からのデータ取得要求に含まれるデータのアドレスを用いて、当該データはメモリ６０２に格納されるデータであることを特定する。そこで、コントローラ５０１ａは、コントローラ６０１ａに対して当該データの取得要求を行う。
【００８６】
Ｓ２０５では、コントローラ６０１ａは、ディレクトリＲＡＭ６０４に対して、ディレクトリ情報を確認し、クラスタ６０が属するグループ内におけるデータの使用状況を確認する。データの使用状況には、当該データを他のクラスタが持ち出しているか否か等の情報が含まれる。本実施形態では、Ｓ２０６において、ディレクトリＲＡＭ６０４は、ディレクトリ情報にて当該データがデータＲＡＭ６０３ｂに格納されていることを把握する。そして、ディレクトリＲＡＭ６０４は、そのことを示す情報をコントローラ６０１ａに送る。
【００８７】
コントローラ６０１ａでは、コントローラ５０１ａからデータ取得要求を受けると、図２１に示す制御回路によって、要求されたデータをデータＲＡＭ６０３ｂから破棄する指示が出力される。したがって、Ｓ２０７において、コントローラ６０１ａは、タグＲＡＭ６０３ａに対して、データＲＡＭ６０３ｂの当該データを無効化する（Invalidにする）
よう要求する。当該データを無効化することにより、データがクラスタ５０に持ち出されている間に他のクラスタが当該データを取得しないようにすることができる。これにより、情報処理装置２内においてクラスタのＬ２キャッシュの要領を有効に利用することができる。また、情報処理装置２内においてデータの同期が取りやすくなる。Ｓ２０８において、タグＲＡＭ６０３ａは、当該データが無効であることを示す情報を記憶する。そして、タグＲＡＭ６０３ａは、その記憶処理が完了したことをコントローラ６０１ａに通知する。Ｓ２０９において、コントローラ６０１ａは、データＲＡＭ６０３ｂに対して、当該データの読み出し要求を行う。Ｓ２１０において、データＲＡＭ６０３ｂは、要求されたデータを読み出してコントローラ６０１ａに送る。
【００８８】
コントローラ６０１ａは、Ｓ２１１において、ディレクトリＲＡＭ６０４に対して、当該データはリモートでもあるクラスタ５０が持っており、ホームのクラスタ６０からは破棄されていることを示すようディレクトリ情報の更新を要求する。Ｓ２１２において、ディレクトリＲＡＭ６０４は、当該要求に従ってディレクトリ情報を更新し、更新処理が完了したことをコントローラ６０１ａに通知する。Ｓ２１３において、コントローラ６０１ａは、当該データをコントローラ５０１ａに送る。
【００８９】
Ｓ２１４では、コントローラ５０１ａは、タグＲＡＭ５０３ａに対して、当該データが
データＲＡＭ５０３ｂに格納されていることを示すよう情報の更新を要求する。また、コントローラ５０１ａは、タグＲＡＭ５０３ａに対して、データの使用状況としてSharedを記憶することも要求する。Ｓ２１５において、タグＲＡＭ５０３ａは、当該更新処理を行った後、その処理が完了したことをコントローラ５０１ａに通知する。Ｓ２１６において、コントローラ５０１ａは、データＲＡＭ５０３ｂに対して、当該データを格納するよう要求する。Ｓ２１７において、データＲＡＭ５０３ｂは当該データを格納した後、格納処理が完了したことをコントローラ５０１ａに通知する。Ｓ２１８において、コントローラ５０１ａは、当該データの要求元である演算コア群５００の演算コアに当該データを送る。
【００９０】
本実施例においては、Ｌ２キャッシュ５０３から追い出されたデータは、ホームのクラスタ６０のＬ２キャッシュ６０３に格納される。よって、再度ローカルのクラスタ５０の演算コア群５００から当該データを要求した場合、Ｌ２キャッシュ５０３ではキャッシュミスが発生する。しかし、Ｌ２キャッシュ６０３にてキャッシュヒットが発生する。したがって、上記の比較例とは異なりメモリ６０２にアクセスして当該データを取得する処理が発生しない。このため、ローカルのクラスタ５０の演算コア群５００は、より迅速に要求したデータを取得することができる。すなわち、情報処理装置２においては、リモートデータ取得時のレイテンシが好適に低減される。
【００９１】
さらに、クラスタ６０、７０の演算コア群６００、７００は非動作の状態であるため、クラスタ６０、７０のＬ２キャッシュ６０３、７０３を、クラスタ５０のＬ２キャッシュ５０３のビクティムキャッシュ（Victim Cache）として使用できる。このことは、Ｌ２キャッシュ５０３のメモリ容量が、ホームのクラスタのＬ２キャッシュ６０３、７０３の分だけ増えたともいえる。したがって、例えば、メモリ５０２のメモリ容量を超えるメモリ空間を使用するアプリケーションを実行する際に、リモートデータ取得時のレイテンシをより好適に低減することができる。
【００９２】
上記の比較例では、ローカルの他にリモートやホームのクラスタの演算コア群も動作状態にある。このため、ローカルのクラスタのＬ２キャッシュは、他の複数のクラスタともデータのやり取りを行う。したがって、比較例においてリモートのクラスタが要求するデータをローカルのクラスタのＬ２キャッシュに格納すると、ローカルのクラスタにとっては、当該Ｌ２キャッシュの容量が実質的に減ってしまう。さらに、Ｌ２キャッシュ内のデータの管理においては、どのクラスタが要求するデータを優先的に取得してかつＬ２キャッシュに残すか等、判断基準や制御が複雑になる。このため、比較例の構成は、本実施形態の構成に比べてコスト面や情報処理の性能面でオーバーヘッドが大きくなる可能性がある。また、比較例の構成では、各データに対し、どのクラスタから追い出されたか等の追加情報も記憶してデータ管理を行う。一方、本実施形態の構成ではそのような追加情報の管理は発生しない。
【００９３】
また、比較例では、ローカルのクラスタは、追い出すデータがcleanである場合に、フ
ラッシュバック要求をホームのクラスタに通知し、当該データをホームのクラスタには送らない。一方、本実施例では、フラッシュバック要求とともにデータを送る。そして、図１６、１７に示す制御回路を用いることで、ローカルのクラスタは、dirtyなデータに加
えてcleanなデータをＬ２キャッシュから追い出す場合もホームのクラスタのＬ２キャッ
シュにデータを格納しておくことができる。これにより、ローカルのクラスタは、一度追い出したデータを取得する際は、メモリへのアクセスを発生させることなく効率よくデータを取得することができる。
【００９４】
さらに、キャッシュコヒーレンス制御のプロトコルについて、演算コア群の動作モードのオン時とオフ時とで共通の規約を使用することも可能である。例えば、上記と同様にMo
dified、Exclusive、Shared、Invalidの４状態を使用するＭＥＳＩプロトコルを、演算コア群の動作モードのオン時に使用するとする。このとき、演算コア群の動作モードのオフ時にも、新しい状態を追加で規定することなく、オン時と同じＭＥＳＩプロトコルを使用することができる。そして、動作モードのオン時とオフ時とで制御内容を適宜調整すればよい。このため、比較例の構成に本実施形態の構成を適用する際に発生するオーバーヘッドを抑えることができる。
【００９５】
以上が本実施形態に関する説明であるが、上記の情報処理装置の構成や処理は、上記の実施形態に限定されるものではなく、本発明の技術的思想と同一性を失わない範囲内において種々の変更が可能である。例えば、上記の実施形態において、動作モードの「モードオン」と「モードオフ」の切り換えにあたって、メモリのメモリ容量を超える大量のメモリ空間を使用するアプリケーションを実行する場合にオンする構成としてもよい。使用するメモリ空間がメモリのメモリ容量を超えないアプリケーションを実行する場合はオフとする。これにより、各アプリケーションにとって適切なメモリ及びＬ２キャッシュの構成を柔軟に採用することができる。また、アプリケーションごとに別個のメモリ及びＬ２キャッシュの構成を構築する手間も省くことができる。
【００９６】
また、各クラスタの演算コア群に対する電源供給を個別に制御することで、モードオン時に非動作とする演算コア群に対して電源を切ることが可能になる。これにより、情報処理装置において不要な電力消費を抑えることができる。なお、いわゆるパワーゲーティングと呼ばれる手法を用いて各演算コア群に対する電源供給を制御する構成としてもよい。
【００９７】
上記の説明では、図２１に示すようにコントローラ６０１ａ内の制御回路の構成を変更する例を示した。しかし、一変形例として、コントローラ６０１ａ内の制御回路の構成を変更せずに、コントローラ５０１ａ内の制御回路の構成を変更してもよい。図２４にその変形例を示す。
【００９８】
図２４に示すコントローラ５０１ａ内の回路は、クラスタ５０の動作モードが「モードオン及び演算コア動作」である場合の制御回路である。図２４において、RequestIsSharedDataRequest（排他的データ取得要求ではなく他のクラスタとデータを共有可能なデータ取得要求を行う）及びRequestIsExclusiveDataRequest（排他的データ取得要求を行う）
が動作を決定する信号である。また、図２４において、その他はフラグ信号である。なお、他のクラスタとデータを共有可能なデータ取得要求と排他的データ取得要求が、データ取得要求の一例である。
【００９９】
図２４に示すように、ＡＮＤゲート５０１ｈは、クラスタ５０の動作モードが「モードオン及び演算コア動作」であり、かつ他のクラスタに対してデータの取得を要求する場合に「１」を出力する。それ以外の場合、ＡＮＤゲート５０１ｈは「０」を出力する。ＯＲゲート５０１ｉは、ＡＮＤゲート５０１ｈの出力が「１」あるいは比較例の動作に従って排他的データ取得要求を行う場合に、排他的データ取得要求を行う指示信号（RequestIsExclusiveDataRequest2）を出力する。また、ＡＮＤゲート５０１ｋには、ＡＮＤゲート５０１ｈの出力がインバータ５０１ｊによって反転されて入力される。
【０１００】
ＡＮＤゲート５０１ｋは、クラスタ５０の動作モードが「モードオン及び演算コア動作」であり、かつ他のクラスタに対してデータの取得を要求する場合に、ローカルであるクラスタ５０からの、他のクラスタとデータを共有可能なデータ取得要求（RequestIsSharedDataRequest2）を遮断する。一方、クラスタ５０の動作モードが「モードオフ」又は「
演算コア非動作」である場合、又は他のクラスタに対してデータの取得を要求しない場合は、上記の比較例の動作に従った動作が実行される（図２２における「比較例のRequestIsSharedDataRequest」、「比較例のRequestIsExclusiveDataRequest」）。なお、ＯＲゲ
ート５０１ｉ及びＡＮＤゲート５０１ｋの後段の回路及びコントローラ６０１ａの回路は従来と同様の回路であるため、ここでは図示及び説明を省略する。
【０１０１】
図２４に示す制御回路により、クラスタ５０のコントローラ５０１ａからクラスタ６０のコントローラ６０１ａに排他的データ取得要求が通知されると、コントローラ６０１ａは、データＲＡＭ６０３ｂから要求されたデータを取得する。そして、コントローラ６０１ａは、取得したデータをコントローラ５０１ａに送る。また、コントローラ５０１ａのデータ取得要求が排他的データ取得要求であるため、コントローラ６０１ａは、データＲＡＭ６０３ｂから当該データを破棄する。
【０１０２】
したがって、図２１に示す制御回路を採用すると、クラスタがローカルとなる場合に、動作は従来通りであるため動作変更を行う手間が省ける。また、図２４に示す制御回路を採用すると、クラスタがホームとなる場合に、動作は従来通りであるため動作変更を行う手間が省ける。いずれの制御回路の構成を採用するかは、適宜決定することができる。
【０１０３】
また、上記の説明ではレジスタを用いて演算コア群の動作又は非動作を設定する構成としている。上記の実施形態の示すＬ２キャッシュ制御部の構成の他、図２５に示す構成を採用して演算コア群の動作又は非動作の設定を行ってもよい。図２５に示すように、Ｌ２キャッシュ制御部１００１は、コントローラ１００１ａとレジスタ１００１ｂとセレクタ１００１ｃとＬ２キャッシュ１００３を備える。また、Ｌ２キャッシュ１００３は、タグＲＡＭ１００３ａとデータＲＡＭ１００３ｂとディレクトリＲＡＭ１００４を備える。Ｌ２キャッシュ制御部１００１では、セレクタ１００１ｃがレジスタ１００１ｂの設定値を参照して、図示しない演算コア群からの要求を遮断するか否かを決定する。例えばレジスタ１００１ｂの設定値がオンの場合に、セレクタ１００１ｃが図示しない演算コア群からの要求を遮断する。すなわち、演算コア群を実質的に非動作状態にすることができる。また、レジスタ１００１ｂの設定値がオフの場合は、セレクタ１００１ｃは、演算コア群からの要求をコントローラ１００１ａに送る。すなわち、演算コア群を実質的に動作状態にすることができる。なお、クラスタによって構成されるグループの外部から実行アプリケーション等を用いて、各クラスタにおける動作モードを制御するように調整してもよい。
【０１０４】
《コンピュータが読み取り可能な記録媒体》
コンピュータその他の機械、装置（以下、コンピュータ等）に上記情報処理装置の設定を行うための管理ツール、ＯＳその他を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。ここで、設定とは、例えばレジスタの設定等を意味する。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。ここで、コンピュータは、例えば、クラスタやコントローラ等である。
【０１０５】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ブルーレイディスク、ＤＡＴ、８ｍｍテープ、フラッシュメモリ等のメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスクやＲＯＭ等がある。
【０１０６】
以上の実施形態に関し、さらに以下の付記を開示する。
【０１０７】
（付記１）
他の演算処理装置に接続される演算処理装置において、
自身が管理する第１のデータと他の演算処理装置から取得した第２のデータとを用いて演算処理を行う演算処理部と、
前記演算処理部を動作状態又は非動作状態に設定する設定部と、前記第１のデータと前記第２のデータとを保持するキャッシュメモリ部とを有し、前記設定部が前記演算処理部を動作状態に設定した場合、前記第２のデータが前記キャッシュメモリ部から追い出されたときに、前記追い出されたデータと前記追い出されたデータを前記他の演算処理装置のキャッシュメモリ部に記憶する契機となる要求とを、前記他の演算処理装置に送信する制御部と、
を有することを特徴とする演算処理装置。
【０１０８】
（付記２）
前記制御部は、前記設定部が前記演算処理部を動作状態に設定している場合、前記他の演算処理装置に対して、データを前記制御部を有する演算処理装置に送信するよう要求するとともに前記他の演算処理装置のキャッシュメモリ部から前記データを破棄するよう要求することを特徴とする付記１に記載の演算処理装置。
【０１０９】
（付記３）
他の演算処理装置に接続される演算処理装置において、
自身が管理する第３のデータと他の演算処理装置から取得した第４のデータとを用いて演算処理を行う演算処理部と、
前記演算処理部を動作状態又は非動作状態に設定する設定部と、前記第３のデータと前記第４のデータとを保持するキャッシュメモリ部とを有し、前記設定部が前記演算処理部を非動作状態に設定した場合、前記他の演算処理装置から前記第３のデータと前記第３のデータのライトバック通知又はフラッシュバック通知とを受信したときに、前記第３のデータを前記キャッシュメモリ部に記憶する制御部と、
を有することを特徴とする演算処理装置。
【０１１０】
（付記４）
前記制御部は、前記設定部が前記演算処理部を非動作状態に設定している場合、前記他の演算処理装置から前記キャッシュメモリ部に記憶されたデータのデータ取得要求を受信したときに、前記要求されたデータを前記他の演算処理装置に送信するとともに前記キャッシュメモリ部から前記データを破棄することを特徴とする付記３に記載の演算処理装置。
【０１１１】
（付記５）
他の演算処理装置と、前記他の演算処理装置に接続される演算処理装置とを有する情報処理装置において、
前記演算処理装置は、
自身が管理する第１のデータと他の演算処理装置から取得した第２のデータとを用いて演算処理を行う演算処理部と、
前記演算処理部を動作状態又は非動作状態に設定する設定部と、前記第１のデータと前記第２のデータとを保持するキャッシュメモリ部とを有し、前記設定部が前記演算処理部を動作状態に設定した場合、前記第２のデータが前記キャッシュメモリ部から追い出されたときに、前記追い出されたデータと前記追い出されたデータを前記他の演算処理装置のキャッシュメモリ部に記憶する契機となる要求とを、前記他の演算処理装置に送信する制御部と、
を有する
ことを特徴とする情報処理装置。
【０１１２】
（付記６）
前記制御部は、前記設定部が前記演算処理部を動作状態に設定している場合、前記他の演算処理装置に対して、データを前記制御部を有する演算処理装置に送信するよう要求するとともに前記他の演算処理装置のキャッシュメモリ部から前記データを破棄するよう要求することを特徴とする付記５に記載の情報処理装置。
【０１１３】
（付記７）
他の演算処理装置と、前記他の演算処理装置に接続される演算処理装置とを有する情報処理装置において、
前記演算処理装置は、
自身が管理する第３のデータと他の演算処理装置から取得した第４のデータとを用いて演算処理を行う演算処理部と、
前記演算処理部を動作状態又は非動作状態に設定する設定部と、前記第３のデータと前記第４のデータとを保持するキャッシュメモリ部とを有し、前記設定部が前記演算処理部を非動作状態に設定した場合、前記他の演算処理装置から前記第３のデータと前記第３のデータのライトバック通知又はフラッシュバック通知とを受信したときに、前記第３のデータを前記キャッシュメモリ部に記憶する制御部と、
を有する
ことを特徴とする情報処理装置。
【０１１４】
（付記８）
前記制御部は、前記設定部が前記演算処理部を非動作状態に設定している場合、前記他の演算処理装置から前記キャッシュメモリ部に記憶されたデータのデータ取得要求を受信したときに、前記要求されたデータを前記他の演算処理装置に送信するとともに前記キャッシュメモリ部から前記データを破棄することを特徴とする付記７に記載の情報処理装置。
【０１１５】
（付記９）
設定部により演算処理部が動作状態に設定されている演算処理装置と設定部により演算処理部が非動作状態に設定されている演算処理装置とを含むグループが形成され、
前記グループ外の演算処理装置は、前記グループ内の演算処理装置にアクセスする際に、前記演算処理部が動作状態に設定されている演算処理装置にアクセスし、前記演算処理部が非動作状態に設定されている演算処理装置にアクセスしない
ことを特徴とする付記５から付記８のいずれかに記載の情報処理装置。
【０１１６】
（付記１０）
他の演算処理装置と、前記他の演算処理装置に接続されるとともに、自身が管理する第１のデータと他の演算処理装置から取得した取得した第２のデータとを用いて演算処理を行う演算処理部と、前記第１のデータと前記第２のデータとを保持するキャッシュメモリ部とを含む演算処理装置と、を有する情報処理装置の制御方法において、
前記演算処理装置が有する設定部が、前記演算処理部を動作状態に設定し、
前記演算処理装置が有する制御部が、前記第２のデータが前記キャッシュメモリ部から追い出されたときに、前記追い出されたデータと前記追い出されたデータを前記他の演算処理装置のキャッシュメモリ部に記憶する契機となる要求とを、前記他の演算処理装置に送信する
ことを特徴とする情報処理装置の制御方法。
【０１１７】
（付記１１）
前記制御部は、前記他の演算処理装置に対して、データを前記制御部を有する演算処理装置に送信するよう要求するとともに前記他の演算処理装置のキャッシュメモリ部から前記データを破棄するよう要求することを特徴とする付記１０に記載の情報処理装置の制御
方法。
【０１１８】
（付記１２）
他の演算処理装置と、前記他の演算処理装置に接続されるとともに、自身が管理する第３データと他の演算処理装置から取得した取得した第４データとを用いて演算処理を行う演算処理部と、前記第３データと前記第４データとを保持するキャッシュメモリ部とを含む演算処理装置と、を有する情報処理装置の制御方法において、
前記演算処理装置が有する設定部が、前記演算処理部を非動作状態に設定し、
前記演算処理装置が有する制御部が、前記他の演算処理装置から前記第３のデータと前記第３のデータのライトバック通知又はフラッシュバック通知とを受信したときに、前記第３のデータを前記キャッシュメモリ部に記憶する
ことを特徴とする情報処理装置の制御方法。
【０１１９】
（付記１３）
前記制御部は、前記他の演算処理装置から前記キャッシュメモリ部に記憶されたデータのデータ取得要求を受信したときに、前記要求されたデータを前記他の演算処理装置に送信するとともに前記キャッシュメモリ部から前記データを破棄することを特徴とする付記１２に記載の情報処理装置の制御方法。
【符号の説明】
【０１２０】
１、２、３    情報処理装置
１０、２０、３０、５０、６０、７０、８００ａ、８００ｂ、８００ｃ、８００ｄ、９００ａ    クラスタ
１００、２００、３００、５００、６００、７００    演算コア群
１０１、２０１、３０１、５０１、６０１、７０１、１００１    Ｌ２キャッシュ制御部１０２、２０２、３０２、５０２、６０２、７０２    メモリ
１０３、２０３、３０３、５０３、６０３、７０３、１００３    Ｌ２キャッシュ
１０１ａ、２０１ａ、５０１ａ、６０１ａ、１００１ａ    コントローラ
１０３ａ、２０３ａ、５０３ａ、６０３ａ、１００３ａ    タグＲＡＭ
１０３ｂ、２０３ｂ、５０３ｂ、６０３ｂ、１００３ｂ    データＲＡＭ
１０４、２０４、５０４、６０４、１００４    ディレクトリＲＡＭ
５０１ｂ、６０１ｂ、１００１ｂ    レジスタ
８００、９００    グループ
１００１ｃ    セレクタ
【図１】
2014186676.tif 000003
【図２】
2014186676.tif 000004
【図３】
2014186676.tif 000005
【図４】
2014186676.tif 000006
【図５】
2014186676.tif 000007
【図６】
2014186676.tif 000008
【図７】
2014186676.tif 000009
【図８】
2014186676.tif 000010
【図９】
2014186676.tif 000011
【図１０】
2014186676.tif 000012
【図１１】
2014186676.tif 000013
【図１２】
2014186676.tif 000014
【図１３】
2014186676.tif 000015
【図１４】
2014186676.tif 000016
【図１５】
2014186676.tif 000017
【図１６】
2014186676.tif 000018
【図１７】
2014186676.tif 000019
【図１８】
2014186676.tif 000020
【図１９】
2014186676.tif 000021
【図２０】
2014186676.tif 000022
【図２１】
2014186676.tif 000023
【図２２】
2014186676.tif 000024
【図２３】
2014186676.tif 000025
【図２４】
2014186676.tif 000026
【図２５】
2014186676.tif 000027