【実施例】
【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に記載の情報処理装置の制御方法。