特許第6036457号(P6036457)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許6036457演算処理装置、情報処理装置及び情報処理装置の制御方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6036457
(24)【登録日】2016年11月11日
(45)【発行日】2016年11月30日
(54)【発明の名称】演算処理装置、情報処理装置及び情報処理装置の制御方法
(51)【国際特許分類】
   G06F 12/08 20160101AFI20161121BHJP
   G06F 12/0802 20160101ALI20161121BHJP
【FI】
   G06F12/08 513
   G06F12/08 515Z
   G06F12/08 501Z
   G06F12/08 551C
   G06F12/08 579
【請求項の数】5
【全頁数】29
(21)【出願番号】特願2013-62811(P2013-62811)
(22)【出願日】2013年3月25日
(65)【公開番号】特開2014-186675(P2014-186675A)
(43)【公開日】2014年10月2日
【審査請求日】2015年11月6日
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100113608
【弁理士】
【氏名又は名称】平川 明
(74)【代理人】
【識別番号】100105407
【弁理士】
【氏名又は名称】高田 大輔
(72)【発明者】
【氏名】青柳 隆宏
(72)【発明者】
【氏名】池田 吉朗
【審査官】 酒井 恭信
(56)【参考文献】
【文献】 特開2007−035026(JP,A)
【文献】 米国特許出願公開第2007/0022254(US,A1)
【文献】 特開2010−198490(JP,A)
【文献】 特開2011−150653(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/08 − 12/0804
(57)【特許請求の範囲】
【請求項1】
他の演算処理装置に接続される演算処理装置において、
自装置が管理する第1のデータと前記他の演算処理装置が管理する前記他の演算処理装置から取得した第2のデータとを用いて演算処理を行う演算処理部と、
前記第1のデータと第3のデータとを記憶するメインメモリと、
前記演算処理部を動作状態又は非動作状態に設定する設定部と、前記第1のデータと前記第2のデータと前記第3のデータとを保持するキャッシュメモリとを有し、前記設定部が前記演算処理部を動作状態に設定した場合、前記他の演算処理装置から前記第3のデータが要求された結果、前記キャッシュメモリにキャッシュミスが発生したとき、要求された前記第3のデータをメインメモリから読み出し、読み出した前記第3のデータを前記キャッシュメモリに保持することなく前記他の演算処理装置に送信し、前記設定部が前記演算処理部を非動作状態に設定した場合、前記他の演算処理装置から前記第3のデータが要求された結果、前記キャッシュメモリにキャッシュミスが発生したとき、要求された前記第3のデータを前記メインメモリから読み出して前記キャッシュメモリに保持するとともに、読み出した前記第3のデータを前記他の演算処理装置に送信する制御部と、
を有することを特徴とする演算処理装置。
【請求項2】
前記制御部は、
前記設定部が前記演算処理部を非動作状態に設定し、かつ、前記他の演算処理装置から、前記第3のデータを更新したデータである更新データとライトバック通知とを受信した場合、前記更新データを前記キャッシュメモリに記憶する
ことを特徴とする請求項1に記載の演算処理装置。
【請求項3】
前記制御部は、
前記設定部が前記演算処理部を非動作状態に設定し、かつ、前記他の演算処理装置から、前記第3のデータを更新したデータである更新データとライトバック通知とを受信した場合、前記更新データを前記キャッシュメモリに記憶するが、前記更新データを前記メインメモリに登録させない
ことを特徴とする請求項2に記載の演算処理装置。
【請求項4】
他の演算処理装置と、前記他の演算処理装置に接続される演算処理装置とを有する情報処理装置において、
前記演算処理装置は、
自装置が管理する第4のデータと前記他の演算処理装置が管理する前記他の演算処理装置から取得した第5のデータとを用いて演算処理を行う演算処理部と、
前記第4のデータと第6のデータとを記憶するメインメモリと、
前記演算処理部を動作状態又は非動作状態に設定する設定部と、前記第4のデータと前記第5のデータと前記第6のデータとを保持するキャッシュメモリとを有し、前記設定部が前記演算処理部を動作状態に設定した場合、前記他の演算処理装置から前記第6のデータが要求された結果、前記キャッシュメモリにキャッシュミスが発生したとき、要求された前記第6のデータをメインメモリから読み出し、読み出した前記第6のデータを前記キャッシュメモリに保持することなく前記他の演算処理装置に送信し、前記設定部が前記演算処理部を非動作状態に設定した場合、前記他の演算処理装置から前記第6のデータが要求された結果、前記キャッシュメモリにキャッシュミスが発生したとき、要求された前記第6のデータを前記メインメモリから読み出して前記キャッシュメモリに保持するとともに、読み出した前記第6のデータを前記他の演算処理装置に送信する制御部と、
を有する
ことを特徴とする情報処理装置。
【請求項5】
他の演算処理装置と、前記他の演算処理装置に接続されるとともに、自装置が管理する第7のデータと前記他の演算処理装置が管理する前記他の演算処理装置から取得した第8のデータとを用いて演算処理を行う演算処理部と、前記第7のデータと第9のデータとを記憶するメインメモリと、前記第7のデータと前記第8のデータと前記第9のデータとを保持するキャッシュメモリとを含む演算処理装置とを有する情報処理装置の制御方法において、
前記演算処理装置が有する設定部が、前記演算処理部を動作状態に設定した場合に、
前記設定部が前記演算処理部を動作状態に設定した後、前記他の演算処理装置が、前記第9のデータを要求し、
前記第9のデータが要求された結果、前記キャッシュメモリ部にキャッシュミスが発生した場合、前記演算処理装置が有する制御部が、要求された前記第9のデータを前記メインメモリから読み出し、
前記制御部が、読み出した前記第9のデータを前記キャッシュメモリに保持することなく前記他の演算処理装置に送信し、
前記演算処理装置が有する設定部が、前記演算処理部を非動作状態に設定した場合に
前記設定部が前記演算処理部を非動作状態に設定した後、前記他の演算処理装置が、前記第9のデータを要求し、
前記第9のデータが要求された結果、前記キャッシュメモリ部にキャッシュミスが発生した場合、前記演算処理装置が有する制御部が、要求された前記第9のデータを前記メインメモリから読み出して前記キャッシュメモリに保持し、
前記制御部が、読み出した前記第9のデータを前記他の演算処理装置に送信する
ことを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算処理装置、情報処理装置及び情報処理装置の制御方法に関する。
【背景技術】
【0002】
情報処理装置においては、複数の演算コア間でメモリのデータを共有する演算処理装置が実用に供されている。当該演算処理装置においては、演算コアとL1キャッシュの組が複数組集約された演算コア群が形成される。演算コア群に対しては、L2キャッシュ、L2キャッシュ制御部、メモリが接続されている。これら演算コア群、L2キャッシュ、L2キャッシュ制御部、メモリのセットをクラスタと呼ぶ。
【0003】
キャッシュとは、大容量のメモリに記憶されたデータのうち、頻繁に使用するデータを格納する小容量の記憶部である。メモリ内のデータをキャッシュに一時的に格納することにより、時間のかかるメモリへのアクセス頻度を低減する。キャッシュは階層構造を採り、高位層ほど高速であり、低位層ほど大容量である。
【0004】
ディレクトリベースのキャッシュコヒーレンス制御方式では、上記のL2キャッシュには、当該L2キャッシュが属するクラスタの演算コア群が要求したデータが格納される。各演算コア群は、演算コア群に近いL2キャッシュをより頻繁に使用してデータを取得するように構成されている。また、データの整合性を保つため、1つのメモリに格納されているデータは当該メモリが属するクラスタによって管理される。また、この方式では、クラスタが、管理対象のメモリ内のデータが現在どのような状態でどのキャッシュに格納されているかを管理する。また、クラスタは、当該メモリに対するデータの要求を受けた場合に、データの状態に基づいてデータ取得要求に対して適切な処理を行う。そして、クラスタは、データ取得要求の処理後、当該データの状態に関する情報を更新する。
【0005】
ここで、特許文献1に示されるように、上記のクラスタ構成及び処理体系を有する演算処理装置において、メモリに対するアクセスで生じるレイテンシを改善することが提案されている。特許文献1では、キャッシュにおいてキャッシュミスが発生したときに当該キャッシュに空きがない場合、当該キャッシュが属するクラスタ内のメモリに存在するデータを優先的にキャッシュから掃き出して空きを作成する。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2000−66955号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
上記の技術では、キャッシュに空きがない場合にはメモリへのアクセスを行ってデータを書き戻す処理が発生する。メモリは大容量であり、演算コア群やキャッシュとは別のチップに搭載されることもある。このため、レイテンシの改善にあっては、依然としてメモリへのアクセスがボトルネックとなる可能性がある。
【0008】
本件開示の技術は、上記の事情に鑑みてなされたものであり、その目的とするところは、メモリへのアクセス頻度を低減することが可能な演算処理装置、情報処理装置及び情報処理装置の制御方法を提供することである。
【課題を解決するための手段】
【0009】
一実施形態による演算処理装置は、他の演算処理装置に接続される演算処理装置において、自身が管理する第1のデータと他の演算処理装置から取得した第2のデータとを用いて演算処理を行う演算処理部と、第1のデータと前記第2のデータとに加え、第3のデータとを記憶するメモリ部と、演算処理部を動作状態又は非動作状態に設定する設定部と、第1のデータと第2のデータとを保持するキャッシュメモリ部とを有し、設定部が演算処理部を非動作状態に設定した場合、他の演算処理装置から第3のデータが要求された結果、キャッシュメモリ部にキャッシュミスが発生したとき、要求された第3のデータをメモリ部から読み出してキャッシュメモリ部に保持するとともに、読み出した第3のデータを他の演算処理装置に送信する制御部とを有する。
【発明の効果】
【0010】
一実施形態によれば、メモリへのアクセス頻度を低減することが可能な演算処理装置、情報処理装置及び情報処理装置の制御方法を実現できる。
【図面の簡単な説明】
【0011】
図1図1は、比較例に係る情報処理装置における一部のクラスタ構成を示す図である。
図2図2は、比較例に係るL2キャッシュ制御部の概略の構成を示す図である。
図3図3は、比較例に係るクラスタにおいてデータ取得要求が発生した場合の動作を示す図である。
図4図4は、図3に示す動作例におけるL2キャッシュ制御部の動作を示す図である。
図5図5は、比較例に係るクラスタにおいてデータ取得要求が発生した場合の動作を示す図である。
図6図6は、図5に示す動作例におけるL2キャッシュ制御部の動作を示す図である。
図7図7は、比較例においてデータのフラッシュバック処理とライトバック処理を行う際のクラスタの動作を示す図である。
図8図8は、図7に示す動作例におけるL2キャッシュ制御部の動作の一例を示す図である。
図9図9は、比較例に係る情報処理装置内において、データを排他的に取得する動作を示す図である。
図10図10は、図9に示す動作例におけるL2キャッシュ制御部の動作を示す図である。
図11図11は、比較例においてL2キャッシュから追い出したデータを退避する場合の動作を示す図である。
図12図12は、本実施形態に係る情報処理装置における一部のクラスタ構成の概略を示す図である。
図13図13は、本実施形態に係るクラスタ内のL2キャッシュ制御部を示す図である。
図14図14は、本実施形態に係る情報処理装置内において、モードオン時のクラスタの演算コア群の動作状況を示す図である。
図15図15は、本実施形態において、ローカルのクラスタがホームのクラスタのメモリに格納されているデータを取得する動作を示す図である。
図16図16は、図15に示す動作例におけるL2キャッシュ制御部の動作を示す図である。
図17図17は、本実施形態に係るコントローラを構成する回路を示す図である。
図18図18は、図15〜17に示す動作例におけるL2キャッシュ制御部のタイミングチャートである。
図19図19は、本実施形態において、ローカルのクラスタに属するL2キャッシュからデータを追い出す場合の動作を示す図である。
図20図20は、図19に示す動作例におけるL2キャッシュ制御部の動作を示す図である。
図21図21は、図19に示す動作例におけるコントローラを構成する回路を示す図である。
図22図22は、図19〜21に示す動作例におけるL2キャッシュ制御部のタイミングチャートである。
図23図23は、本実施形態において情報処理装置内のクラスタが複数のグループを構成する場合の一例を示す図である。
図24図24は、本実施形態に係るL2キャッシュ制御部の構成の一例を示す図である。
【発明を実施するための形態】
【0012】
最初に、一実施形態に係る情報処理装置の比較例について、図面を参照しながら説明する。
【0013】
(比較例)
図1は、比較例に係る情報処理装置1における一部のクラスタ構成を示す。図1に示すように、クラスタ10は、演算コアとL1キャッシュの組をn組(nは自然数)有する演算コア群100、L2キャッシュ制御部101、メモリ102を有する。L2キャッシュ制御部101はL2キャッシュ103を有する。クラスタ20、30も、クラスタ10と同様、演算コア群200、300、L2キャッシュ制御部201、301、メモリ202、302、L2キャッシュ203、303をそれぞれ有する。
【0014】
以降の説明において、メモリに格納されるデータを要求している演算コアが属するクラスタをローカル(Local)と呼ぶ。また、要求されたデータが格納されているメモリが属
するクラスタをホーム(Home)と呼ぶ。さらに、ローカルでもホームでもないクラスタをリモート(Remote)と呼ぶ。各クラスタは、データの要求元及び要求先に応じて、ローカルにもホームにもリモートにもなる。また、あるデータ取得要求の処理において、ローカルのクラスタは、ホームのクラスタを兼ねる場合がある。また、リモートのクラスタが、ホームのクラスタを兼ねる場合もある。さらに、ホームのクラスタが管理するホームのメモリに格納されているデータの状態情報をディレクトリ情報と呼ぶ。これらの詳細については後述する。
【0015】
図1に示すように、各クラスタはL2キャッシュ制御部が互いにバスあるいはインターコネクトによって接続されている。情報処理装置1内では、メモリ空間はいわゆるフラットであり、物理アドレスによってどのクラスタに属するメモリにどのデータが格納されているかが一意に決まる。
【0016】
例えば、クラスタ10が、クラスタ10内のメモリ102以外のメモリ202に格納されているデータを取得する場合、そのデータを保持するメモリ202が属するクラスタ20に対してデータの要求を行う。クラスタ20は、該当データの状態をチェックする。ここで、データの状態とは、データがどのクラスタにあるか、データが排他的に使用されているか否か、情報処理装置内におけるデータの同期状況等のデータの使用状況を意味する。また、取得対象のデータが、クラスタ20に属するL2キャッシュ203に格納されており、かつ、当該データの同期が情報処理装置1内で取れている場合、そのデータを要求元のクラスタ10に送信する。そして、クラスタ20は、当該データの状態情報に、要求元のクラスタ10に情報処理装置1内で同期されたデータが渡されたことを記録する。
【0017】
図2は、L2キャッシュ制御部101の概略の構成を示す。L2キャッシュ制御部101は、コントローラ101aとL2キャッシュ103とディレクトリRAM104を備える。また、L2キャッシュ103は、タグRAM103aとデータRAM103bを備える。タグRAM103aは、データRAM103bが保持しているブロックのタグ情報を保持する。タグ情報とは、コヒーレンスプロトコル制御における各データの使用状況に関する情報やメモリ内のアドレス等を意味する。ここで、複数のプロセッサを使用するマルチプロセッサ環境においては、プロセッサ間で同一のデータを共有してアクセスする可能性が高い。そこで、マルチプロセッサ環境では、各キャッシュ内に存在するデータの一貫性を維持している。プロセッサ間の一貫性を維持するプロトコルをコヒーレンスプロトコルと呼ぶ。このようなプロトコルの一例として、MESIプロトコルが挙げられる。以下の説明では、データの使用状況をModified、Exclusive、Shared、Invalidの4状態で管理するMESIプロトコルを使用する。ただし、使用可能なプロトコルはこれに限られない。
【0018】
コントローラ101aは、タグRAM103aを使用して、メモリのブロックがデータRAM103bにどのような状態で存在しているかやデータの有無をチェックする。データRAM103bは、例えばメモリ102内のデータのコピーを保持するRAMである。ディレクトリRAM104は、ホームのクラスタに属するメモリのディレクトリ情報を扱うRAMである。ディレクトリ情報は巨大になるため、メモリに格納され、そのキャッシュがRAMに置かれることが多い。しかし、ここでは、ディレクトリRAM104にホームのクラスタに属するメモリのディレクトリ情報が格納されている。
【0019】
コントローラ101aは、演算コア、もしくは、別のクラスタのL2キャッシュ制御部のコントローラからの要求を受け付ける。コントローラ101aは、受け付けた要求内容に応じて、タグRAM103a、データRAM103b、ディレクトリRAM104、メモリ102、他のクラスタに対してそれぞれ動作要求を行う。そして、コントローラ101aは、要求された動作が完了すると、要求元にその結果を返す。
【0020】
図3は、クラスタ10においてデータ取得要求が発生した場合の動作の一例を示す図である。図3では、クラスタ10がローカル及びホームのクラスタである。図3では、クラスタ10に属するメモリ102に対してデータ取得要求を行い、L2キャッシュ103においてキャッシュミスが発生したときの動作を説明する。なお、ここでは、L2キャッシュ制御部にデータ取得要求が届いた時点でL1キャッシュにおいてキャッシュミスが発生していることを前提として説明する。
【0021】
ローカルであるクラスタ10の演算コアから、データの要求がL2キャッシュ制御部101に届く。ホームでもあるクラスタ10のL2キャッシュ制御部101は、L2キャッシュ103が該当データを保持していない(miss)ことを確認すると、ディレクトリRAM104内のディレクトリ情報を参照する。そして、L2キャッシュ制御部101は、ディレクトリ情報に基づいて当該データをリモートのクラスタのL2キャッシュが持ち出していないかをチェックする。L2キャッシュ制御部101は、リモートのクラスタのL2キャッシュが当該データを保持していない(miss)ことを確認すると、ローカルであるクラスタ10のメモリ102にデータ取得要求を行う。メモリ102からデータが返ってくると、L2キャッシュ制御部101は、L2キャッシュ103のデータRAM103bにデータを格納する。さらに、L2キャッシュ制御部101は、演算コア群100内の要求元の演算コアにデータを送る。そして、L2キャッシュ103のタグRAM103aには、情報処理装置1内で同期された状態でデータを取得したという情報が記憶される。また、ディレクトリRAM104には、当該データがローカルであるクラスタ10が持っていることを示す情報が記憶される。
【0022】
このとき、L2キャッシュ制御部101は、L2キャッシュ103のデータRAM103bにデータの空きがない場合、ランダムアルゴリズムやLRU(Least Recently Used
)アルゴリズム等の所定のアルゴリズムに従って、L2キャッシュ103内のデータを追い出す。L2キャッシュ制御部101は、タグRAM103aを参照し、追い出すデータがメモリ102内のデータと同じ状態を保っている場合は当該データを破棄する。一方、L2キャッシュ制御部101は、タグRAM103aを参照し、追い出すデータが更新されていた場合はメモリ102にデータを書き戻す。
【0023】
これにより、演算コア群100の演算コアにより要求されたデータが、L2キャッシュ103のデータRAM103bの空き領域に格納される。そして、再度演算コア群100の演算コアから当該データに対するデータ取得要求が発生した場合は、L2キャッシュ制御部101は、データRAM103bに格納されたデータを取り出して演算コアに送る(hit)。したがって、当該データがデータRAM103bから追い出されない限り、L2
キャッシュ制御部101は、メモリ102に対してアクセスを行わない。
【0024】
図4は、図3に示す動作例におけるL2キャッシュ制御部101の動作を示す図である。コントローラ101aは、演算コア群100の演算コアからデータ取得要求を受け付ける。当該データ取得要求には、演算コアからの要求であることを示す情報と要求の種類とメモリのアドレスが含まれる。コントローラ101aは要求内容に適切な処理を開始する。
【0025】
まず、コントローラ101aは、タグRAM103aに対して、データ取得要求の対象となるデータを含むメモリのブロックのコピーがデータRAM103bにあるか否かをチェックする。タグRAM103aから当該コピーが「ない(miss)」という結果を受け取ると、ディレクトリRAM104に対して、データ取得要求の対象となるデータをリモートのクラスタが持ち出しているか否かをチェックする。コントローラ101aは、ディレクトリRAM104から「どのクラスタも持ち出していない(miss)」という結果を受け取ると、メモリ102に対して当該データのデータ取得要求を行う。コントローラ101aは、メモリ102から当該データが返ってくると、ディレクトリRAM104に、当該データについて「ホームが持っている」ことを示す情報を登録する。また、コントローラ101aは、データの使用状況(Sharedなど)を示す情報をタグRAM103aに格納する。さらに、コントローラ101aは、当該データをデータRAM103bに格納する。また、コントローラ101aは、演算コア群100内の要求元の演算コアに当該データを送る。
【0026】
次に、図5は、クラスタ10においてデータ取得要求が発生した場合の動作例を示す図である。図5に示す例では、クラスタ10がローカルのクラスタであり、クラスタ20がホームのクラスタである。ローカルであるクラスタ10の演算コア群100の演算コアからクラスタ10のL2キャッシュ103に対してデータ取得要求が行われる。そして、L2キャッシュ103には当該データがないためキャッシュミスが発生する(miss)。そこで、クラスタ10は、ホームのクラスタであるクラスタ20に対して当該データのデータ取得要求を行う。クラスタ20のL2キャッシュ制御部201が、L2キャッシュ203のディレクトリ情報をチェックする。L2キャッシュ制御部201のコントローラ201aは、L2キャッシュ203にも、リモートのクラスタ内のL2キャッシュにもデータがないことを確認すると(miss)、メモリ202に対して当該データのデータ取得要求を行う。
【0027】
メモリ202から当該データが返ってくると、L2キャッシュ制御部201は、ディレクトリRAM204のディレクトリ情報を更新する。そして、L2キャッシュ制御部201は、データを要求元のローカルのクラスタ10に送る。クラスタ10のL2キャッシュ
制御部101は、クラスタ20のL2キャッシュ制御部201から受け取ったデータをL2キャッシュ103に格納する。そして、L2キャッシュ制御部101は、当該データを演算コア群100の要求元の演算コアに送る。
【0028】
このとき、ホームのクラスタ20のL2キャッシュ203には当該データは格納されない。理由は次の通りである。まず、データを要求しているのはローカルのクラスタ10の演算コアであり、ホームのクラスタ20の演算コアではないからである。そして、ホームのクラスタ20のL2キャッシュ203にデータを格納すると、ホームのクラスタ20の演算コア群200にとっては不要なデータがL2キャッシュ203に格納されることになるからである。また、このような不要なデータがL2キャッシュ203に格納されると、演算コア群200が使用するデータまでL2キャッシュ203から追い出される可能性があるからである。
【0029】
図6は、図5に示す動作例におけるL2キャッシュ制御部101、201の動作を示す図である。ローカルのクラスタ10内のL2キャッシュ制御部101のコントローラ101aは、演算コア群100の演算コアからデータ取得要求を受け付ける。当該データ取得要求には、演算コアからの要求であることを示す情報とデータ取得要求の種類とメモリのアドレスが含まれる。コントローラ101aは、要求内容に適切な処理を開始する。
【0030】
コントローラ101aは、タグRAM103aに対して、データ取得要求の対象となるデータを含むメモリのブロックのコピーがデータRAM103bにあるか否かをチェックする。コントローラ101aは、タグRAM103aから当該コピーが「ない(miss)」という結果を受け取ると、ホームのクラスタ20に属するL2キャッシュ制御部201のコントローラ201aに対して、当該データのデータ取得要求を行う。
【0031】
コントローラ201aは、当該データ取得要求を受け付けると、ディレクトリRAM204に対して、データ取得要求の対象となるデータがいずれかのクラスタのL2キャッシュに格納されているか否かチェックする。コントローラ201aは、ディレクトリRAM204から「どのクラスタも持っていない(miss)」という結果を受け取ると、メモリ202に対して当該データのデータ取得要求を行う。コントローラ201aは、メモリ202から当該データが返ってくると、ディレクトリRAM204に、当該データの使用状況について「要求元のクラスタ10が持っている」ことを示す情報を登録する。そして、コントローラ201aは、当該データを要求元のクラスタ10のコントローラ101aに送る。データを受け取ったクラスタ10のコントローラ101aは、当該データの使用状況(Sharedなど)をタグRAM103aに格納する。また、コントローラ101aは、当該データをデータRAM103bに格納する。そして、コントローラ101aは、演算コア群100内の要求元の演算コアに当該データを送る。
【0032】
図7は、比較例においてリモートのクラスタへのデータのフラッシュバック(Flush Back)処理とライトバック(Write Back)処理を行う際のクラスタの動作を示す図である。ここで、リモートのクラスタへのフラッシュバック処理とは、あるクラスタが、他のクラスタから取得したデータをキャッシュから追い出す際の処理である。このフラッシュバック処理は、追い出されたデータが更新されておらず情報処理装置1内で同期が取れている(cleanである)場合に、ホームのクラスタにローカル(ホームから見るとリモート)の
クラスタからデータが追い出されたことを通知する処理である。この処理は、ホームのクラスタにディレクトリ情報を更新させるための処理である。
【0033】
また、リモートのクラスタへのライトバック処理とは、あるクラスタが、他のクラスタから取得したデータをキャッシュから追い出す際の処理である。このライトバック処理は、追い出されたデータが更新されており情報処理装置1内で同期が取れていない(dirty
である)場合に当該他のクラスタに、データがdirtyであることを通知する処理である。
以下に説明するように、比較例においては、クラスタは、リモートのクラスタへのフラッシュバック処理を行う場合は、データの取得元であるクラスタに対して、フラッシュバック通知を行い、データは送らない。一方、クラスタは、リモートのクラスタへのライトバック処理を行う場合は、データの取得元であるクラスタに対してライトバック通知を行うとともに、メモリへの格納のためにデータも送る。
【0034】
上述した通り、L2キャッシュに新たなデータを格納するときに、L2キャッシュが満杯で空き領域がない場合、所定のアルゴリズムに従ってデータを追い出す。図7では、クラスタ10がローカルのクラスタであり、クラスタ20がホームのクラスタである。なお、この場合、クラスタ20はリモートのクラスタでもある。さらに、情報処理装置1内の図示しないクラスタがリモートとなる。また、図7では、クラスタ10は、ローカルのクラスタ10に属するL2キャッシュ103のデータRAM103bに空きがなく、データRAM103bに格納されているデータのうち、リモートのクラスタ20のメモリ202に格納されるデータを追い出す。
【0035】
この場合、図7に示すように、クラスタ10のL2キャッシュ制御部101は、クラスタ20のL2キャッシュ制御部201に対して、L2キャッシュ103から当該データを追い出す通知を行う。ここで、この通知は、フラッシュバック要求とライトバック要求のいずれかである。なお、フラッシュバック要求とライトバック要求が、所定の要求の一例である。そして、追い出し対象のデータがcleanなデータである場合、フラッシュバック
要求がホームのクラスタ20のL2キャッシュ制御部201に送られる。L2キャッシュ制御部201は、データの要求元であるクラスタ10から該当データが追い出された、ということをL2キャッシュ制御部201内のディレクトリ情報に記録する。
【0036】
一方、該当データがdirtyなデータである場合、ライトバック要求とともに該当データ
がホームのクラスタ20のL2キャッシュ制御部201に送られる。ここで、データがdirtyになる場合の一例としては、ローカルのクラスタ10の演算コア群100によって更
新される場合等が挙げられる。そして、L2キャッシュ制御部201は、データの要求元であるクラスタ10から該当データが追い出されたことを、L2キャッシュ203のディレクトリRAM204に格納されているディレクトリ情報に記録する。さらに、L2キャッシュ制御部201は、該当データをホームのクラスタ20に属するメモリ202へ書き戻す。なお、該当データは、ホームのクラスタ20に対してリモートとなるクラスタの演算コアが要求しているデータである。すなわち、当該データはホームのクラスタ20内の演算コア群200が要求しているデータではない。仮にホームのクラスタ20内のL2キャッシュ203に当該データを格納する場合、演算コア群200が要求している他のデータが追い出される可能性がある。このため、ホームのクラスタ20内のL2キャッシュ203には当該データは格納されない。
【0037】
図8は、図7に示す動作例におけるL2キャッシュ制御部101、201の動作を示す図である。なお、ここでは、データがL2キャッシュ制御部101のL2キャッシュ103から追い出されるデータが決定した後の処理について説明する。L2キャッシュ制御部101のコントローラ101aは、タグRAM103aに対して、当該データを有するブロックの無効化を要求する。ここで、コントローラ101aは、当該データがdirtyであ
り、ホームのクラスタ20側のコントローラ201aに対してライトバック要求の通知を行う場合は、データRAM103bから該当ブロックのデータを読み出す。そして、コントローラ101aは、コントローラ201aに対して、フラッシュバック要求の通知を行うか、あるいはライトバック要求の通知を行うとともに該当データを送る。要求を受け取ったホームのクラスタ20側のコントローラ201aは、ディレクトリRAM204に対して「データの要求元であるクラスタ10がデータを持っている」ことを示す情報を無効
化する。そして、コントローラ201aは、ライトバック要求の場合は、該当データをメモリ202へ書き戻す。
【0038】
次に、図9は、情報処理装置1内において、ローカルのクラスタ10がホームのクラスタ20のメモリ202に格納されているデータを排他的に取得する動作を示す。例えば、演算コアによってデータが更新される場合に、排他的データ取得要求が使用される。排他的データ取得要求とは、ある時点において、ある1つのクラスタ(のキャッシュ)が当該要求に係るデータを保持し、他のクラスタは当該データを保持しないことを保障するための要求である。データ更新時に他のクラスタ内のL2キャッシュも当該データを保持していると、情報処理装置1内で当該データの同期が取れなくなってしまう。排他的データ取得要求は、これを防止するための要求である。
【0039】
まず、ローカルのクラスタ10の演算コア群100内の演算コアが、データを要求する。L2キャッシュ制御部101は、当該データ取得要求を受けると、L2キャッシュ103に当該データが格納されているか否かをチェックする。L2キャッシュ103に当該データが格納されていない場合(miss)、L2キャッシュ制御部101は、ホームのクラスタ20のL2キャッシュ制御部201に対して当該データの排他的データ取得要求を送る。L2キャッシュ制御部201は、排他的データ取得要求を受けると、L2キャッシュ制御部201内のディレクトリ情報を参照する。当該ディレクトリ情報により、ホームを含むクラスタのうちどのクラスタが当該データを保持しているかがわかる。そして、L2キャッシュ制御部201は、ディレクトリ情報が示す該当データを持っているクラスタに対して、当該データの破棄要求を送る。
【0040】
図9に示す例では、L2キャッシュ203に当該データが格納されている。そこで、L2キャッシュ制御部201は、L2キャッシュ203から当該データを破棄する。L2キャッシュ制御部201は、破棄したデータをL2キャッシュ制御部101に送る。また、L2キャッシュ制御部201は、ディレクトリ情報に、当該データの要求元であるクラスタ10が該当データを保持している唯一のクラスタであること示す情報を記録する。これにより、当該データの要求元であるクラスタ10が該当データをL2キャッシュ103に格納する。
【0041】
図10は、図9に示す動作例におけるL2キャッシュ制御部101、201の動作を示す図である。ローカルのクラスタ10内のL2キャッシュ制御部101のコントローラ101aは、演算コア群100の演算コアから排他的データ取得要求を受け付ける。当該データ取得要求には、演算コアからの要求であることを示す情報と排他的データ取得要求であることを示す情報とメモリのアドレスが含まれる。コントローラ101aは、要求内容に適切な処理を開始する。
【0042】
コントローラ101aは、タグRAM103aに対して、データ取得要求の対象となるデータを含むメモリのブロックのコピーがデータRAM103bにあるか否かをチェックする。コントローラ101aは、タグRAM103aから当該コピーが「ない(miss)」という結果を受け取ると、ホームのクラスタ20に属するL2キャッシュ制御部201のコントローラ201aに対して、当該データのデータ取得要求を行う。
【0043】
コントローラ201aは、当該データ取得要求を受け付けると、ディレクトリRAM204に対して、要求しているデータがいずれかのクラスタのL2キャッシュに格納されているか否かチェックする。コントローラ201aは、ディレクトリRAM204から「ホームのクラスタ20が持っている(hit)」という結果を受け取ると、タグRAM203
aに対して当該データの無効化要求を行う。また、コントローラ201aは、データRAM203bから当該データを読み出す。そして、コントローラ201aは、ディレクトリ
RAM204に対して、「ホームのクラスタが持っている」ことを示す情報を無効化する。さらに、コントローラ201aは、ディレクトリRAM204に対して、「当該データの要求元であるクラスタ10がデータを持っている」ことを示す情報を追加する。そして、コントローラ201aは、当該データを要求元のクラスタ10のコントローラ101aに送る。当該データを受け取ったクラスタ10のコントローラ101aは、データの使用状況をタグRAM103aに登録する。また、コントローラ101aは、当該データをデータRAM103bに格納する。そして、コントローラ101aは、演算コア群100内の要求元の演算コアに当該データを送る。
【0044】
次に、図11は、情報処理装置1内において、ローカルのクラスタ10が、L2キャッシュ103からホームのクラスタ20のメモリ202に格納されるデータを追い出す場合の動作を示す。図11に示すように、クラスタ10は、L2キャッシュ103からクラスタ20のメモリ202に格納されるデータを追い出す場合、追い出したデータをL2キャッシュ制御部201に送る。L2キャッシュ制御部201は、受信したデータをL2キャッシュ203に格納する。このように、比較例では、ローカルのクラスタから追い出されたデータを、データの使用状況によらずにホームのクラスタのL2キャッシュに退避させる。
【0045】
ただし、上記の比較例の情報処理装置1では、ホームのクラスタ20の演算コア群200が動作している。このため、図11に示す例では、クラスタ10の演算コア群100とクラスタ20の演算コア群200が、クラスタ20のL2キャッシュ203を共用する。したがって、演算コア群200にとっては、使用可能なL2キャッシュ203の容量が減少することになる。また、L2キャッシュ203においては、いずれの演算コア群が必要とするデータを優先的にL2キャッシュ203に格納するか等の複雑な制御が伴う。
【0046】
さらに、図11に示す例では、ローカルのクラスタ10から追い出されたデータは、データの使用状況にかかわらず、ホームのクラスタ20に送られる。すなわち、ローカルのクラスタ10でデータが更新されてデータがdirtyとなった場合以外でも、クラスタ10
から追い出されたデータはクラスタ20に送られる。すなわち、追い出されたデータが情報処理装置1内で同期が取れている(データがcleanである)場合であっても、データは
クラスタ20に送られる。したがって、クラスタ間のトランザクションが増加する可能性がある。
【0047】
そこで、以上の比較例に関する説明を踏まえ、一実施形態に係る情報処理装置の例について、図面を参照しながら以下に説明する。以下の例においては、各クラスタの演算コア群の動作状態及び非動作状態が制御されている。これにより、後述するように、クラスタ間の通信量を増加させることなく、L2キャッシュにおけるデータのキャッシュヒットの確率を高めることができる。また、本実施形態では、L2キャッシュに格納する各データについて複雑な管理や制御が伴わない。
【実施例】
【0048】
図12は、本実施例としての情報処理装置2における一部のクラスタ構成の概略を示す。図12に示すように、情報処理装置2は、比較例と同様、クラスタ50、60、70を有する。なお、クラスタ50、60、70が演算処理装置の一例に相当する。また、ローカル、ホーム、リモートの違いも比較例において説明した通りであり、ここでは説明を省略する。クラスタ50は、演算コア群500、L2キャッシュ制御部501、メモリ502を有する。L2キャッシュ制御部501はL2キャッシュ503を有する。クラスタ60、70も、クラスタ50と同様、演算コア群600、700、L2キャッシュ制御部601、701、メモリ602、702、L2キャッシュ603、703をそれぞれ有する。なお、演算コア群500、600、700が演算処理部の一例に相当する。また、メモ
リ502、602、702がメモリ部の一例に相当する。さらに、L2キャッシュ503、603、703がキャッシュメモリ部の一例に相当する。また、L2キャッシュ制御部501、601、701が制御部の一例に相当する。そして、本実施形態においては、クラスタ50、60、70が1つのグループを構成する。ここで、グループは、1つのアプリケーションの実行処理を担当するクラスタの集まりである。ただし、グループを形成する基準はこれに限られず、適宜クラスタをグループ分けすることができる。
【0049】
図12に示すように、各クラスタはL2キャッシュ制御部が互いにバスあるいはインターコネクトによって接続されている。情報処理装置2内では、メモリ空間はいわゆるフラットであり、各クラスタはセグメントによることなくアドレスを利用できる。そして、情報処理装置2内では、物理アドレスによってどのクラスタに属するメモリにどのデータが格納されているかが一意に決まる。
【0050】
図13は、クラスタ50内のL2キャッシュ制御部501を示す図である。L2キャッシュ制御部501は、コントローラ501aとレジスタ501bとL2キャッシュ503とディレクトリRAM504を備える。また、L2キャッシュ503は、タグRAM503aとデータRAM503bを備える。また、レジスタ501bが設定部の一例に相当する。なお、タグRAM503a、データRAM503b、ディレクトリRAM504は、それぞれ比較例と同様の機能を有するため、ここでは詳細な説明を省略する。
【0051】
レジスタ501bは、本実施例に係る情報処理装置2内でのクラスタ50の動作モードを制御する。本実施例では、一例として、動作モードは「モードオフ」、「モードオン及び演算コア動作」、「モードオン及び演算コア非動作」の3つのモードを有する。ここで「モードオフ」とは、各クラスタが上記の比較例に示した動作を行う動作モードである。「モードオン及び演算コア動作」は、クラスタが演算コア群を動作状態とした上で本実施例の動作を行う(モードオン)動作モードである。また、「モードオン及び演算コア非動作」は、クラスタが演算コア群を非動作状態とした上で本実施例の動作を行う動作モードである。なお、これらの動作モードにおける処理の詳細については後述する。
【0052】
コントローラ501aがレジスタ501bの設定値を読み込み、設定値に従って動作モードを切り換える。また、本実施例では、情報処理装置2においてアプリケーションの実行前に動作モードの切り換えを行う。さらに、本実施例では、情報処理装置2のOS(Operating System)が各クラスタのレジスタの動作モードの切り換えを制御する。なお、動作モードの切り換えは、情報処理装置2のユーザが明示的にOSに指示をして行ってもよいし、実行するアプリケーションのメモリ使用量等の情報に基づいてOSが自律的に行ってもよい。
【0053】
図14は、情報処理装置2内において、モードオン時のクラスタ50、60、70の演算コア群の動作状況を示す図である。一例として、モードオン時、1グループ内のクラスタ50、60、70は、グループ内で1つのクラスタに属する演算コア群が動作するように制御される。図14では、クラスタ50の動作モードが「モードオン及び演算コア動作」であり、クラスタ60、70の動作モードが「モードオン及び演算コア非動作」である。したがって、クラスタ50の演算コア群500が動作状態となり、クラスタ60、70の演算コア群600、700はそれぞれ非動作状態となる。なお、一例として、情報処理装置2では、クラスタ50、60、70を有するグループが複数構成されている。そして、各グループが、情報処理装置2において実行される1つのプロセスの処理にそれぞれ対応している。
【0054】
図15は、本実施形態において、ローカルのクラスタ50がホームのクラスタ60のメモリ602に格納されるデータを取得する動作を示す図である。比較例と同様、L2キャ
ッシュ制御部501は、演算コア群500から要求されたデータがL2キャッシュ503にない(キャッシュミスが発生)場合に、クラスタ60のL2キャッシュ制御部601に対して当該データを要求する。本実施形態においては、L2キャッシュ603に当該データが格納されていない場合について説明する。L2キャッシュ制御部601はメモリ602から当該データを取得し、取得したデータをL2キャッシュ603に格納する。また、L2キャッシュ制御部601は、取得したデータをL2キャッシュ制御部501に送る。そして、L2キャッシュ制御部501は、L2キャッシュ制御部601から受信したデータを演算コア群500に送る。
【0055】
図16は、図15に示す動作例におけるL2キャッシュ制御部501、601の動作を示す図である。上記の通り、L2キャッシュ制御部501、601は、コントローラ501a、601aとレジスタ501b、601bとL2キャッシュ503、603とディレクトリRAM504、604をそれぞれ備える。また、L2キャッシュ503、603は、タグRAM503a、603aとデータRAM503b、603bをそれぞれ備える。
【0056】
図17は、コントローラ601aが有する回路を示す図である。図17に示すコントローラ601a内の回路は、クラスタ60の動作モードが「モードオン及び演算コア非動作」である場合の制御回路である。図17に示すコントローラ601aにより、コントローラ501aから要求されているデータがメモリ602から取得された場合に、当該データがデータRAM603bに格納される。また、当該データの使用状況に関する情報がタグRAM603aとディレクトリRAM604にそれぞれ記憶される。図17において、TAGSave(タグRAMにデータを格納する)、DataSave(データRAMにデータを格納する
)、DirectoryUpdate(SaveLocal)(ディレクトリRAMのディレクトリ情報を更新する)が動作を指示する信号である。また、図17において、その他はフラグ信号である。
【0057】
図17に示すように、ANDゲート601dは、クラスタ60の動作モードが「モードオン及び演算コア非動作」である場合に「1」を出力する。それ以外の場合、ANDゲート601dは「0」を出力する。ANDゲート601eは、ANDゲート601dの出力が「1」であり、かつメモリ602からデータを取得した場合に、「1」を出力する。それ以外の場合、ANDゲート601eは「0」を出力する。
【0058】
ORゲート601fは、ANDゲート601eの出力が「1」あるいは比較例の動作に従ってタグRAM603aにデータの使用状況に関するデータを登録する場合に、タグRAM603aに当該データを登録する指示信号(TagSave2)を出力する。ORゲート601gは、ANDゲート601eの出力が「1」あるいは比較例の動作に従ってデータRAM603bにデータを格納する場合に、データRAM603bにデータを格納する指示信号(DataSave2)を出力する。ORゲート601hは、ANDゲート501eの出力が「
1」あるいは比較例の動作に従ってディレクトリRAM604のディレクトリ情報を更新する場合に、ディレクトリRAM604のディレクトリ情報を更新する指示信号(DirectoryUpdate(SaveLocal)2)を出力する。なお、ORゲート601f〜601hの後段の回
路は従来と同様の回路であるため、ここでは図示及び説明を省略する。
【0059】
図17に示す制御回路により、コントローラ601aは、要求されたデータをメモリ602から取得した場合に、データRAM603bに当該データを格納する。また、コントローラ601aは、取得したデータをコントローラ501aに送る。
【0060】
図18は、図15図17に示す動作例におけるL2キャッシュ制御部501、601のタイミングチャートである。まず、S101において、L2キャッシュ制御部501のコントローラ501aは、演算コア群500の演算コアからデータ取得要求を受け付ける。当該データ取得要求には、当該データがどのクラスタのメモリに格納されているかを示
すアドレスに関する情報が含まれる。S102において、コントローラ501aは、タグRAM503aに対して、当該アドレスに対応付けられているデータがデータRAM503bに格納されているか否かを確認する。本実施形態では、S103において、タグRAM503aは、当該データがデータRAM503bにない(キャッシュミスが発生)ことを示す情報をコントローラ501aに返す。
【0061】
S104において、コントローラ501aは、演算コア群500からのデータ取得要求に含まれるデータのアドレスを用いて、当該データはメモリ602に格納されるデータであることを特定する。そこで、コントローラ501aは、コントローラ601aに対して当該データの取得要求を行う。
【0062】
S105では、コントローラ601aは、ディレクトリRAM604に対して、ディレクトリ情報を確認し、クラスタ60が属するグループ内におけるデータの使用状況を確認する。データの使用状況には、当該データを他のクラスタが持ち出しているか否か等の情報が含まれる。本実施形態では、S106において、ディレクトリRAM604は、ディレクトリ情報にて当該データがデータRAM603bを含めいずれのクラスタのデータRAMにも格納されていない(キャッシュミスが発生)ことを確認する。そして、ディレクトリRAM604は、そのことを示す情報をコントローラ601aに送る。
【0063】
S107において、コントローラ601aは、メモリ602に対して、コントローラ501aから要求されているデータの読み取りを要求する。S108において、メモリ602は、要求されたデータをコントローラ601aに送る。コントローラ601aでは、メモリ602からデータを取得すると、図17に示す制御回路によって、取得したデータをデータRAM603bに格納する指示が出力される。また、図17に示す制御回路によって、取得したデータの使用状況がSharedであることをタグRAM603aに記憶する指示も出力される。さらに、図17に示す制御回路によって、ホームのクラスタ20とローカルのクラスタ10が取得したデータを保持していることを示す情報をディレクトリRAM604に記憶する指示も出力される。
【0064】
したがって、まずS109において、コントローラ601aは、タグRAM603aに対して、取得したデータがデータRAM603bにSharedの状態で格納されたことを示すよう情報の更新を要求する。S110において、タグRAM603aは、当該データがデータRAM603bにSharedの状態で格納されたことを示す情報を記憶する。そして、タグRAM603aは、その記憶処理が完了したことをコントローラ601aに通知する。S111において、コントローラ601aは、データRAM603bに対して、当該データの格納要求を行う。S112において、データRAM603bは、当該データを格納した後、その格納処理が完了したことをコントローラ601aに通知する。
【0065】
コントローラ601aは、S113において、ディレクトリRAM604に対して、当該データはリモートでもあるクラスタ50とホームのクラスタ60が持っていることを示すようディレクトリ情報の更新を要求する。S114において、ディレクトリRAM604は、当該要求に従ってディレクトリ情報を更新し、更新処理が完了したことをコントローラ601aに通知する。S115において、コントローラ601aは、当該データをコントローラ501aに送る。
【0066】
S116では、コントローラ501aは、タグRAM503aに対して、コントローラ601aから取得したデータがデータRAM503bに格納されていることを示すよう情報の更新を要求する。また、コントローラ501aは、タグRAM503aに対して、当該データの使用状況としてSharedを記憶することも要求する。S117において、タグRAM503aは、要求された処理を行った後、処理が完了したことをコントローラ501
aに通知する。S118において、コントローラ501aは、データRAM503bに対して、当該データを格納するよう要求する。S119において、データRAM503bは当該データを格納した後、格納処理が完了したことをコントローラ501aに通知する。S120において、コントローラ501aは、当該データの要求元である演算コア群500の演算コアに当該データを送る。
【0067】
本実施例においては、メモリ603から取得したデータが、ホームのクラスタ60のL2キャッシュ603に格納される。また、ホームのクラスタ60の演算コア群600は、レジスタ601bによって非動作状態にされている。このため、演算コア群600によるL2キャッシュ603へのデータ格納が発生しない。したがって、比較例の場合に比べ、演算コア群500にとっては、L2キャッシュ603のメモリ容量を他のクラスタの演算コア群と共用する、いわゆるメモリ容量の食い合いは発生しない。
【0068】
次に、図19は、本実施例において、クラスタ50に属するL2キャッシュ503からクラスタ60に属するメモリ602に格納されるデータを追い出す場合の動作を示す図である。比較例と同様、L2キャッシュ制御部501は、L2キャッシュ503に新たなデータを格納するときに、L2キャッシュ503に空き領域がない場合、所定のアルゴリズムに従ってデータを追い出す。L2キャッシュ制御部501は、タグRAM503aを参照して、追い出すデータがcleanかdirtyかを判定する。L2キャッシュ制御部501は、データがdirtyの場合はL2キャッシュ制御部601にライトバック要求を通知するとと
もにデータを送る。なお、L2キャッシュ制御部501は、データがcleanの場合はL2
キャッシュ制御部601にフラッシュバック要求を通知する。
【0069】
図20は、図19に示す動作例におけるL2キャッシュ制御部501、601の動作を示す図である。上記の通り、L2キャッシュ制御部501、601は、コントローラ501a、601aとレジスタ501b、601bとL2キャッシュ503、603とディレクトリRAM504、604をそれぞれ備える。また、L2キャッシュ503、603は、タグRAM503a、603aとデータRAM503b、603bをそれぞれ備える。
【0070】
また、図21は、図20に示す動作例におけるコントローラ601aが有する回路の一部を示す図である。図21に示すコントローラ601a内の回路は、クラスタ60がホームとなり、動作モードが「モードオン及び演算コア非動作」である場合の制御回路である。図21に示すコントローラ601a内の回路により、ホームのクラスタ60がローカルのクラスタ50からライトバック要求の通知とともにデータを受信したときに、当該データがL2キャッシュ603に格納される。また、図21に示すコントローラ601a内の回路により、当該データはメモリ602には格納されない。図21において、TAGSave(
タグRAMにデータを格納する)、DataSave(データRAMにデータを格納する)、DirectoryUpdate(SaveLocal)(ディレクトリRAMのディレクトリ情報を更新する)、MemorySave(メモリにデータを格納する)が動作を指示する信号である。また、図21において、その他はフラグ信号である。
【0071】
ANDゲート601iは、クラスタ60の動作モードが「モードオン及び演算コア非動作」である場合に「1」を出力する。それ以外の場合、ANDゲート601iは「0」を出力する。ANDゲート601jは、ANDゲート601iの出力が「1」であり、かつクラスタ50(ローカル)からライトバック要求を受けた場合に「1」を出力する。
【0072】
ORゲート601kは、ANDゲート601jの出力が「1」あるいは比較例の動作に従ってタグRAM603aにデータの使用状況に関するデータを記憶する場合に、タグRAM603aに当該データを記憶する指示信号(TagSave2)を出力する。ORゲート601lは、ANDゲート601jの出力が「1」あるいは比較例の動作に従ってデータRA
M603bにデータを格納する場合に、データRAM603bにデータを格納する指示信号(DataSave2)を出力する。ORゲート601mは、ANDゲート601jの出力が「
1」あるいは比較例の動作に従ってディレクトリRAM604のディレクトリ情報を更新する場合に、ディレクトリRAM604のディレクトリ情報を更新する指示信号(DirectoryUpdate(SaveLocal)2)を出力する。
【0073】
インバータ601nは、クラスタ60の動作モードが「モードオン及び演算コア非動作」であり、かつクラスタ50からのライトバック要求の信号がアサートされると、メモリ602へのデータ格納を禁止する。一方、クラスタ60の動作モードが「モードオフ」か「演算コア動作」である場合に、比較例の動作に従ってデータをメモリ602に格納するときに、データのメモリ602への格納を行う指示信号(MemorySave2)を出力する。ま
たは、クラスタ50からライトバック要求が通知されていない場合に、比較例の動作に従ってデータをメモリ602に格納するときに、当該指示信号(MemorySave2)を出力する
。なお、ORゲート601k〜601m、ANDゲート601oの後段の回路は従来と同様の回路であるため、ここでは図示及び説明を省略する。
【0074】
したがって、例えばクラスタ60の演算コア群600が動作状態にある場合は、ANDゲート601jの出力は「0」となる。このため、例えばローカルのクラスタ50からのライトバック要求(RequestIsWriteBack)によっては、TAGSave2、DataSave2、DirectoryUpdate(SaveLocal)2、MemorySave2はアサートされない。その代わり、比較例の動作によ
り、TAGSave、DataSave、DirectoryUpdate(SaveLocal)、MemorySaveの指示信号に従った
処理が実行される。
【0075】
一方、クラスタ60の動作モードが「モードオン及び演算コア非動作」である場合、コントローラ601aは、ライトバック要求の通知を受け付けると、ANDゲート601jの出力が「1」となる。この場合、ORゲート601lの出力が「1」となるため、追い出されたデータはL2キャッシュ603のデータRAM603bに格納される。さらに、インバータ601nの出力は「0」となるため、ANDゲート601oの出力も「0」となり、メモリ602にはデータは格納されない。なお、インバータ601n及びANDゲート601oが、遮断部の一例である。
【0076】
ここで、図20に示すように、コントローラ501aは、タグRAM503aに対して、追い出し対象のデータがデータRAM503bから追い出されたこと(Invalid)を登
録するよう要求する。次に、コントローラ501aは、データRAM503bから追い出すデータを取り出す。コントローラ501aは、追い出されたデータが情報処理装置2内で同期が取れていない(データがdirtyである)場合、コントローラ601aに、ライト
バック要求を通知するとともに追い出されたデータを送る。
【0077】
ホームのクラスタ60のコントローラ601aは、ローカルのクラスタ50のコントローラ501aから上記のライトバック要求を受け取る。そして、コントローラ601aは、データRAM603bに当該要求とともに受け取ったデータ、すなわちデータRAM503bから追い出されたデータを格納する。このため、コントローラ601aは、タグRAM603aに対して、データRAM603bに当該データが格納されていることを示すように情報を更新する。次に、コントローラ601aは、データRAM603bに当該データを格納する。そして、コントローラ601aは、ディレクトリRAM604に対して、当該データがホームのクラスタ60に追加されたことを示すようディレクトリ情報の更新を要求する。さらに、コントローラ601aは、ディレクトリRAM604に対して、ローカルのクラスタ50から破棄されたことを示すようディレクトリ情報の更新を要求する。
【0078】
図22は、図19〜21に示す動作例におけるL2キャッシュ制御部501、601のタイミングチャートである。以下の説明において、チャート内のステップをSと略記する。図22は、データRAM503bから追い出すデータがdirtyであり、コントローラ5
01aがコントローラ601aに対してライトバック要求を送る場合を示す。S201において、コントローラ501aは、タグRAM503aに対して、追い出し対象のデータがデータRAM503bから追い出されたこと(Invalid)を登録するよう要求する。な
お、どのデータが追い出しの対象となるかは、別途LRUアルゴリズム等によりあらかじめ決められている。S202において、タグRAM503aは、当該データの状態がInvalidであることを登録する。さらに、タグRAM503aは、当該要求に対する応答にお
いて、データの使用状況を示す情報(Modified;Value=M)をコントローラ501aに送
る。S203では、コントローラ501aは、タグRAM503aから取得したアドレスを用いてデータRAM503bからデータの読み出しを行う。S204において、データRAM503bは、コントローラ501aからの要求に含まれるアドレスに一致するアドレスを有するデータを読み出し、コントローラ501aに送る。
【0079】
コントローラ501aは、データRAM503bから追い出されたデータを取得すると、S205において、コントローラ601aにライトバック要求を送るとともに当該データを送る。コントローラ501aは、S202においてタグRAM503aから取得したデータがdirtyであるため、ライトバック要求をコントローラ601aに送る。また、コ
ントローラ501aは、当該データがどのクラスタのメモリに格納されているかを示すアドレスもコントローラ601aに送る。
【0080】
S206において、コントローラ601aは、タグRAM603aに対して、コントローラ501aが送ったデータがデータRAM603bに格納されることを示す情報を記憶するよう要求する。さらに、コントローラ601aは、タグRAM603aに対して、当該データがどのクラスタのメモリに格納されているかを示すアドレスを記憶するよう要求する。S207において、タグRAM603aは、コントローラ601aの当該要求に従って記憶処理を行った後、記憶処理が完了したことをコントローラ601aに通知する。S208において、コントローラ601aは、当該データをデータRAM603bに格納する。S209において、データRAM603bは当該データを格納した後、格納処理が完了したことをコントローラ601aに通知する。
【0081】
S210において、コントローラ601aは、ディレクトリRAM604に対して、当該データがホームのクラスタ60が持っていることを示すようディレクトリ情報の更新を要求する。さらに、コントローラ601aは、ディレクトリRAM604に対して、当該データがリモートでもあるクラスタ50から破棄されたことを示すようディレクトリ情報の更新を要求する。S211では、ディレクトリRAM604は当該ディレクトリ情報を更新した後、更新処理が完了したことをコントローラ601aに通知する。S212では、コントローラ601aは以上の処理が完了したことをコントローラ501aに通知する。
【0082】
ところで、本実施形態においてディレクトリRAMは、ディレクトリ情報において、データRAM内に格納されている各データがどのクラスタに持ち出されているかを、各クラスタに対応するビットによって管理する。例えば、データを持ち出しているクラスタに対応するビットを「1」とし、データを持ち出していないクラスタに対応するビットを「0」とする。したがって、例えば上記のS210において、ディレクトリRAM604は、クラスタ60に対応するビットを「1」とし、クラスタ50に対応するビットを「0」とする。以下の説明においても、ディレクトリRAMは、ディレクトリ情報における当該ビットを変更することによって、各データの使用状況を記憶する。ただし、ディレクトリRAMにおけるクラスタのデータの持ち出し状況を管理する構成は、上記に限られない。な
お、コントローラ501aがコントローラ601aに対してフラッシュバック要求を送る場合の処理は、上記の比較例の場合と同様であるため、ここではその説明を省略する。
【0083】
ここで、本実施例のように各クラスタのモード動作を制御した場合の効果の一例を、図23を参照しながら説明する。図23には、情報処理装置3内のクラスタが複数のグループを構成する場合の一例を示す。ここでは、各クラスタの動作モードは、L2キャッシュ制御部のレジスタの設定値によって設定される。具体的には、動作モードは、設定値が0の場合は「モードオフ」、設定値が1の場合は「モードオン及び演算コア動作」、設定値が2の場合は「モードオン及び演算コア非動作」に設定される。図23では、クラスタ800a〜クラスタ800dが1つのグループ800を構成する。また、グループ900は1つのクラスタ900aで構成される。グループ900は、使用するメモリ空間がクラスタ900a内のメモリのメモリ容量以下であるアプリケーションの実行を担当する。なお、クラスタ800a〜800d、900aは、上記のクラスタ50、60と同様の構成を有するため、各構成要素の図示や説明は省略する。
【0084】
例えば、グループ800外のクラスタ900aがグループ800内のクラスタ800cにアクセスすることを許可した場合を考える。そして、クラスタ900aがクラスタ800cのL2キャッシュに格納されているデータについて排他的データ取得要求を行ったとする。このとき、当該データは、クラスタ900aに移動するとともに、クラスタ800cのL2キャッシュからは破棄される。また、クラスタ800cでは、ディレクトリ情報により、当該データがグループ外のクラスタ900aに持ち出されたことを管理する。そこで、図23に示す例では、グループ外のクラスタからのアクセスを、グループ内の動作モードが「モードオン及び演算コア動作」であるクラスタに制限する。これにより、「モードオン及び演算コア非動作」のクラスタのL2キャッシュに格納されたデータがグループ外のクラスタによって持ち出されることがない。このため、「モードオン及び演算コア動作」であるクラスタが「モードオン及び演算コア非動作」のクラスタのデータを取得する際に、当該データをグループ外のクラスタが持ち出しているために、グループ外のクラスタからデータを取得するといった処理が発生する懸念がない。よって、グループ内において各クラスタがデータを効率よく取得することができる。
【0085】
上記の比較例では、ローカルの他にリモートやホームのクラスタの演算コア群も動作状態にある。このため、ローカルのクラスタのL2キャッシュは、他の複数のクラスタともデータのやり取りを行う。したがって、ローカルのクラスタの演算コア群が使用するL2キャッシュの容量が実質的に削減される。さらに、L2キャッシュ内のデータの管理においては、どのクラスタが要求するデータを優先的に取得してかつL2キャッシュに残すか等、判断基準や制御が複雑になる。このため、比較例の構成は、本実施形態の構成に比べてコスト面や情報処理の性能面でオーバーヘッドが大きくなる可能性がある。また、比較例の構成では、各データに対し、どのクラスタから追い出されたか等の追加情報も記憶してデータ管理を行う。一方、本実施形態の構成ではそのような追加情報の管理は発生しない。
【0086】
さらに、キャッシュコヒーレンス制御のプロトコルについて、演算コア群の動作モードのオン時とオフ時とで共通の規約を使用することも可能である。例えば、上記と同様にModified、Exclusive、Shared、Invalidの4状態を使用するMESIプロトコルを、演算コア群の動作モードのオン時に使用するとする。このとき、演算コア群の動作モードのオフ時にも、新しい状態を追加で規定することなく、オン時と同じMESIプロトコルを使用することができる。そして、動作モードのオン時とオフ時とで制御内容を適宜調整すればよい。このため、比較例の構成に本実施形態の構成を適用する際に発生するオーバーヘッドを抑えることができる。
【0087】
以上が本実施形態に関する説明であるが、上記の情報処理装置の構成や処理は、上記の実施形態に限定されるものではなく、本発明の技術的思想と同一性を失わない範囲内において種々の変更が可能である。例えば、上記の実施例では、ローカルのクラスタ50がホームのクラスタ60に対して排他的データ取得要求を行う場合、比較例に従って処理が実行される。すなわち、クラスタ60は、L2キャッシュ603からデータを取得してクラスタ50にデータを送るとともに、当該データをL2キャッシュ603から破棄する。排他的データ取得要求は、主に要求元のクラスタがデータを更新する際に用いるデータ取得要求である。したがって、当該データがクラスタ50から追い出されるときは、当該データがdirtyであるため、当該データがライトバック要求の通知とともにホームのクラスタ
60に送信される。
【0088】
ただし、情報処理装置内で実行するアプリケーションによっては、排他的データ取得要求により取得されたデータが更新されずに、ローカルのクラスタから追い出される可能性もある。すなわち、この場合は、データがcleanの状態でローカルのクラスタから追い出
される。そこで、ローカルのクラスタからホームのクラスタに対して排他的データ取得要求が行われたときに、ホームのクラスタのL2キャッシュから要求されたデータを破棄しない構成としてもよい。ただし、排他的データ取得要求が行われた場合は、ホームのクラスタのタグRAMには、取得対象のデータの使用状況をExclusiveではなくSharedとして
登録する。このようにプロトコルを変更してデータを管理する場合でも、比較例の場合に比べてクラスタ間のトランザクションやクラスタとメモリ間のトランザクションは増加しない。したがって、情報処理装置の設計者は、情報処理装置の仕様や情報処理装置内で実行するアプリケーションの種類等を考慮して上記のいずれの構成を採用するかを適宜決定することができる。
【0089】
また、上記の実施形態において、動作モードの「モードオン」と「モードオフ」の切り換えにあたって、メモリのメモリ容量を超える大量のメモリ空間を使用するアプリケーションを実行する場合にオンする構成としてもよい。使用するメモリ空間がメモリのメモリ容量を超えないアプリケーションを実行する場合はオフとする。これにより、各アプリケーションにとって適切なメモリ及びL2キャッシュの構成を柔軟に採用することができる。また、アプリケーションごとに別個のメモリ及びL2キャッシュの構成を構築する手間も省くことができる。
【0090】
また、各クラスタの演算コア群に対する電源供給を個別に制御することで、モードオン時に非動作とする演算コア群に対して電源を切ることが可能になる。これにより、情報処理装置において不要な電力消費を抑えることができる。なお、いわゆるパワーゲーティングと呼ばれる手法を用いて各演算コア群に対する電源供給を制御する構成としてもよい。
【0091】
また、上記の説明ではレジスタを用いて演算コア群の動作又は非動作を設定する構成としている。上記の実施形態の示すL2キャッシュ制御部の構成の他、図24に示す構成を採用して演算コア群の動作又は非動作の設定を行ってもよい。図24に示すように、L2キャッシュ制御部1001は、コントローラ1001aとレジスタ1001bとセレクタ1001cとL2キャッシュ1003とディレクトリRAM1004を備える。また、L2キャッシュ1003は、タグRAM1003aとデータRAM1003bを備える。L2キャッシュ制御部1001では、セレクタ1001cがレジスタ1001bの設定値を参照して、図示しない演算コア群からの要求を遮断するか否かを決定する。例えばレジスタ1001bの設定値がオンの場合に、セレクタ1001cが図示しない演算コア群からの要求を遮断する。すなわち、演算コア群を実質的に非動作状態にすることができる。また、レジスタ1001bの設定値がオフの場合は、セレクタ1001cは、演算コア群からの要求をコントローラ1001aに送る。すなわち、演算コア群を実質的に動作状態にすることができる。なお、クラスタによって構成されるグループの外部から実行アプリケ
ーション等を用いて、各クラスタにおける動作モードを制御するように調整してもよい。
【0092】
《コンピュータが読み取り可能な記録媒体》
コンピュータその他の機械、装置(以下、コンピュータ等)に上記情報処理装置の設定を行うための管理ツール、OSその他を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。ここで、設定とは、例えばレジスタの設定等を意味する。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。ここで、コンピュータは、例えば、クラスタやコントローラ等である。
【0093】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、CD−ROM、CD−R/W、DVD、ブルーレイディスク、DAT、8mmテープ、フラッシュメモリ等のメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスクやROM等がある。
【0094】
以上の実施形態に関し、さらに以下の付記を開示する。
【0095】
(付記1)
他の演算処理装置に接続される演算処理装置において、
自身が管理する第1のデータと他の演算処理装置から取得した第2のデータとを用いて演算処理を行う演算処理部と、
前記第1のデータと前記第2のデータとに加え、第3のデータとを記憶するメモリ部と、
前記演算処理部を動作状態又は非動作状態に設定する設定部と、前記第1のデータと前記第2のデータとを保持するキャッシュメモリ部とを有し、前記設定部が前記演算処理部を非動作状態に設定した場合、前記他の演算処理装置から前記第3のデータが要求された結果、前記キャッシュメモリ部にキャッシュミスが発生したとき、要求された前記第3のデータを前記メモリ部から読み出して前記キャッシュメモリ部に保持するとともに、読み出した前記第3のデータを前記他の演算処理装置に送信する制御部と、
を有する
演算処理装置。
【0096】
(付記2)
前記制御部は、
前記他の演算処理装置から、前記他の演算処理装置のキャッシュメモリ部に保持する第3のデータを更新した結果である第4のデータと、前記第4のデータをライトバックする旨のライトバック通知とを受信した場合、受信した前記第4のデータを前記キャッシュメモリ部に記憶する
ことを特徴とする付記1に記載の演算処理装置。
【0097】
(付記3)
前記制御部は、
前記他の演算処理装置から、前記他の演算処理装置のキャッシュメモリ部に保持する第3のデータを更新した結果である第4のデータと、前記第4のデータをライトバックする旨のライトバック通知とを受信した場合、受信した前記第4のデータを前記キャッシュメモリ部に記憶するが、受信した前記第4のデータを前記メモリ部に登録させない
ことを特徴とする付記2に記載の演算処理装置。
【0098】
(付記4)
他の演算処理装置と、前記他の演算処理装置に接続される演算処理装置とを有する情報処理装置において、
前記演算処理装置は、
自身が管理する第1のデータと他の演算処理装置から取得した第2のデータとを用いて演算処理を行う演算処理部と、
前記第1のデータと前記第2のデータとに加え、第3のデータとを記憶するメモリ部と、
前記演算処理部を動作状態又は非動作状態に設定する設定部と、前記第1のデータと前記第2のデータとを保持するキャッシュメモリ部とを有し、前記設定部が前記演算処理部を非動作状態に設定した場合、前記他の演算処理装置から前記第3のデータが要求された結果、前記キャッシュメモリ部にキャッシュミスが発生したとき、要求された前記第3のデータを前記メモリ部から読み出して前記キャッシュメモリ部に保持するとともに、読み出した前記第3のデータを前記他の演算処理装置に送信する制御部と、
を有する
ことを特徴とする情報処理装置。
【0099】
(付記5)
前記制御部は、
前記他の演算処理装置から、前記他の演算処理装置のキャッシュメモリ部に保持する第3のデータを更新した結果である第4のデータと、前記第4のデータをライトバックする旨のライトバック通知とを受信した場合、受信した前記第4のデータを前記キャッシュメモリ部に記憶する
ことを特徴とする付記4に記載の情報処理装置。
【0100】
(付記6)
前記制御部は、
前記他の演算処理装置から、前記他の演算処理装置のキャッシュメモリ部に保持する第3のデータを更新した結果である第4のデータと、前記第4のデータをライトバックする旨のライトバック通知とを受信した場合、受信した前記第4のデータを前記キャッシュメモリ部に記憶するが、受信した前記第4のデータを前記メモリ部に登録させない
ことを特徴とする付記5に記載の情報処理装置。
【0101】
(付記7)
他の演算処理装置と、前記他の演算処理装置に接続されるとともに、自身が管理する第1のデータと他の演算処理装置から取得した第2のデータとを用いて演算処理を行う演算処理部と、前記第1のデータと前記第2のデータとに加え、第3のデータとを記憶するメモリ部と、前記第1のデータと前記第2のデータとを保持するキャッシュメモリ部とを含む演算処理装置とを有する情報処理装置の制御方法において、
前記演算処理装置が有する設定部が、前記演算処理部を非動作状態に設定し、
前記設定部が前記演算処理部を非動作状態に設定した後、前記他の演算処理装置が、前記第3のデータを要求し、
前記第3のデータが要求された結果、前記キャッシュメモリ部にキャッシュミスが発生した場合、前記演算処理装置が有する制御部が、要求された前記第3のデータを前記メモリ部から読み出して前記キャッシュメモリ部に保持し、
前記制御部が、読み出した前記第3のデータを前記他の演算処理装置に送信する
ことを特徴とする情報処理装置の制御方法。
【0102】
(付記8)
前記制御部は、
前記他の演算処理装置から、前記他の演算処理装置のキャッシュメモリ部に保持する第3のデータを更新した結果である第4のデータと、前記第4のデータをライトバックする旨のライトバック通知とを受信した場合、受信した前記第4のデータを前記キャッシュメモリ部に記憶する
ことを特徴とする付記7に記載の情報処理装置の制御方法。
【0103】
(付記9)
前記制御部は、
前記他の演算処理装置から、前記他の演算処理装置のキャッシュメモリ部に保持する第3のデータを更新した結果である第4のデータと、前記第4のデータをライトバックする旨のライトバック通知とを受信した場合、受信した前記第4のデータを前記キャッシュメモリ部に記憶するが、受信した前記第4のデータを前記メモリ部に登録させない
ことを特徴とする付記8に記載の情報処理装置の制御方法。
【符号の説明】
【0104】
1、2、3 情報処理装置
10、20、30、50、60、70、800a、800b、800c、800d、900a クラスタ
100、200、300、500、600、700 演算コア群
101、201、301、501、601、701、1001 L2キャッシュ制御部102、202、302、502、602、702 メモリ
103、203、303、503、603、703、1003 L2キャッシュ
101a、201a、301a、501a、601a、1001a コントローラ
103a、203a、303a、503a、603a、1003a タグRAM
103b、203b、303b、503b、603b、1003b データRAM
104、204、304、504、604、1004 ディレクトリRAM
501b、601b、1001b レジスタ
800、900 グループ
1001c セレクタ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24