(57)【要約】【課題】リモートメモリに対するアクセスで生じるレイテンシを改善することができるキャッシュ制御装置を提供する。【解決手段】リモートメモリから読み出してＬ２キャッシュ３０４に記憶されているデータがリプレース処理によって追い出された場合、その追い出されたデータを、Ｌ２キャッシュ３０４の下位に仮想的に設けた３次キャッシュに記憶する。【選択図】図３
2010198490.tif 000002
【特許請求の範囲】
【請求項１】
第１のノードに含まれる第１のメモリを共有する第２のノードが有するキャッシュ制御装置において、
前記第１のメモリ内の情報を記憶する第１のキャッシュに記憶されている第１のキャッシュ情報を前記第１のキャッシュから出力して、新たな情報を記憶する領域を前記第１のキャッシュに確保する第１のキャッシュ制御部と、
前記第１のキャッシュ情報を、第２のメモリに記憶するとともに、前記第１のキャッシュ情報の管理情報を、前記第２のメモリの所定の領域と対応付けられた管理情報であって該対対応付けられた領域に記憶されている情報を管理する管理情報を記憶する第２のキャッシュに記憶し、前記第１のキャッシュ制御部の要求に応じて、該要求された情報の管理情報と対応付けられた前記第２のメモリの領域から情報を読み出して前記第１のキャッシュ制御部に出力する第２のキャッシュ制御部と、
を備えるキャッシュ制御装置。
【請求項２】
前記第２のキャッシュ制御部は、前記第２のキャッシュに記憶されている管理情報を取り出して新たな管理情報を記憶する領域を確保し、該取り出した管理情報と対応付けられた前記第２のメモリの領域から情報を読み出し、該読み出した情報を前記第１のキャッシュに記憶するように前記第１のノードに要求する、
ことを特徴とする請求項１に記載のキャッシュ制御装置。
【請求項３】
前記第２のキャッシュ制御部は、所望の情報について要求を受けると、前記第２のキャッシュに記憶されている管理情報から、前記所望の情報の管理情報を検索し、前記第２のキャッシュに前記所望の情報の管理情報を検出すると、該検出した管理情報と対応付けられた前記第２のメモリの領域から情報を読み出し、該読み出した情報を前記要求元に出力する、
ことを特徴とする請求項１に記載のキャッシュ制御装置。
【請求項４】
前記第２のキャッシュ制御部は、前記第２のキャッシュに前記所望の情報の管理情報が検出されない場合、前記所望の情報を前記第１のノードが属する第１のＣＰＵに要求し、該第１のＣＰＵから受信した情報を前記要求元に出力する、
ことを特徴とする請求項１に記載のキャッシュ制御装置。
【請求項５】
前記第２のキャッシュ制御部は、前記第１のノードから前記第２のメモリに記憶されている情報を無効にする無効化要求を受けると、該無効化要求の対象情報の管理情報を無効に設定する、
ことを特徴とする請求項１に記載のキャッシュ制御装置。
【請求項６】
前記第２のキャッシュ制御部は、前記第１のノードから前記第２のメモリに他のノードと排他的に記憶されている情報を移動させるリプレース要求を受けると、該リプレース要求の対象情報の管理情報を、前記第２のキャッシュに記憶されている管理情報から検索し、前記第２のキャッシュに前記リプレース要求の対象情報の管理情報を検出すると、該検出した管理情報と対応付けられた前記第２のメモリの領域から情報を読み出し、該読み出した情報を前記第１のノードに通知する、
ことを特徴とする請求項１に記載のキャッシュ制御装置。
【請求項７】
第１のノードに含まれる第１のメモリを共有する第２のノードが有するキャッシュ装置において、
前記第１のメモリ内の情報を記憶する第１のキャッシュと、
前記第１のキャッシュに記憶されていた情報を記憶する第２のメモリと、
該第２のメモリの所定の領域と対応付けられた管理情報であって、該対対応付けられた領域に記憶されている情報を管理する管理情報を記憶する第２のキャッシュと、
前記第１のキャッシュ内の第１のキャッシュ情報を前記第１のキャッシュから出力して、新たな情報を記憶する領域を前記第１のキャッシュに確保する第１のキャッシュ制御部と、
前記第１のキャッシュ情報を前記第２のメモリに記憶するとともに、前記第１のキャッシュ情報の管理情報を前記第２のキャッシュに記憶し、
前記第１のキャッシュ制御部の要求に応じて、該要求された情報の管理情報と対応付けられた前記第２のメモリの領域から情報を読み出して前記第１のキャッシュ制御部に出力する第２のキャッシュ制御部と、
を備えるキャッシュ装置。
【請求項８】
第１のノードに含まれる第１のメモリを共有する第２のノードが有するキャッシュを制御するキャッシュ制御方法において、
前記第１のメモリ内の情報を記憶する第１のキャッシュに記憶されている第１のキャッシュ情報を前記第１のキャッシュから出力して、新たな情報を記憶する領域を前記第１のキャッシュに確保する第１のキャッシュ制御処理を実行し、
前記第１のキャッシュ情報を、第２のメモリに記憶し、
前記第１のキャッシュ情報の管理情報を、前記第２のメモリの所定の領域と対応付けられた管理情報であって該対対応付けられた領域に記憶されている情報を管理する管理情報を記憶する第２のキャッシュに記憶し、
前記第１のキャッシュ制御部の要求に応じて、該要求された情報の管理情報と対応付けられた前記第２のメモリの領域から情報を読み出して前記第１のキャッシュ制御部に出力する第２のキャッシュ制御処理を実行する、
ことを特徴とするキャッシュ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置において使用されるキャッシュ制御装置に関する。
【背景技術】
【０００２】
近年、共有メモリ型の情報処理装置が使用されている。
図１５は、共有メモリ型の情報処理装置に使用されるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）内のキャッシュを説明する図である。
【０００３】
共有メモリ型の情報処理装置に使用するＣＰＵ１５００は、命令実行部１５０１、Ｌ１キャッシュ１５０２、Ｌ１制御部１５０３、Ｌ２キャッシュ１５０４、Ｌ２制御部１５０５、メモリ制御部１５０６およびＬＳＩ間通信制御部１５０７を備える。
【０００４】
Ｌ１キャッシュ１５０２およびＬ２キャッシュ１５０４は、命令実行部１５０１が使用する頻度の高いデータを記憶する。
命令実行部１５０１からのリード要求を受けると、Ｌ１制御部１５０３はＬ１キャッシュ１５０２からデータを読み出して命令実行部１５０１に出力する。また、命令実行部１５０１が要求するデータがＬ１キャッシュ１５０２にない場合、Ｌ１制御部１５０３は、Ｌ２制御部１５０５にデータのリード要求を発行する。すると、Ｌ２制御部１５０５はＬ２キャッシュ１５０４からデータを読み出して命令実行部１５０１に出力する。
【０００５】
Ｌ１キャッシュ１５０２に記憶されるデータは、「Ｌ１タグ」といわれる管理情報によって管理されている。このＬ１タグには、Ｌ１キャッシュ１５０２に記憶されているデータのアドレス情報や登録状態が登録される。Ｌ１キャッシュ１５０２に記憶されるデータを「Ｌ１データ」という。
【０００６】
同様に、Ｌ２キャッシュ１５０４に記憶されるデータは、「Ｌ２タグ」と言われる管理情報によって管理される。Ｌ２キャッシュ１５０３に記憶されるデータを「Ｌ２データ」という。
【０００７】
メモリ制御部１５０６は、Ｌ２制御部３０５からの要求に応じて、ローカルメモリＭＥＭ０にアクセスする。
ＬＳＩ間通信制御部１５０７は、Ｌ２制御部１５０５からリード要求を受けると、他ノードに対してリード要求を発行する。また、ＬＳＩ間通信制御部１５０７は、Ｌ２制御部１５０５からストア要求を受けると、他ノードに対してストア命令を発行する。
【０００８】
図１６は、他ノードに備わるリモートメモリへのアクセス処理を示す図である。なお、以下に示す（１）〜（５）は、図１６中に示す（１）〜（５）と対応する。
（１）要求元ノードにおいて、命令実行部１５０１から要求されたデータがＬ１キャッシュ１５０２にない場合、Ｌ１制御部１５０３は、Ｌ２制御部１５０５に対してリード要求を発行する。
【０００９】
（２）Ｌ２制御部１５０５は、Ｌ１制御部１５０３からのリード要求に応じて、Ｌ２キャッシュ１５０４を検索する。Ｌ１制御部１５０３が要求するデータがＬ２キャッシュ１５０４にない場合、Ｌ２制御部１５０５は、メモリ制御部１５０６を介してＨｏｍｅノードにリード要求を発行する。
【００１０】
（３）Ｈｏｍｅノードにおいて、メモリ制御部１５０６は、要求元ノードからのリード要求に応じて、Ｈｏｍｅノードに備わるローカルメモリに対してリード要求を発行する。
（４）ローカルメモリは、メモリ制御部１５０６からの要求に応じてデータを読み出すリード処理を行なう。そして、ローカルメモリは、メモリ制御部１５０６に対してリード応答を発行する。同時に、ローカルメモリは、読み出したデータをメモリ制御部１５０６に送信する。
【００１１】
（５）メモリ制御部１５０６は、ローカルメモリからリード応答を受信すると、要求元ノードに対してリード応答を発行する。同時に、メモリ制御部１５０６は、ローカルメモリから読み出したデータを要求元ノードに送信する。
【００１２】
図１７は、リプレース処理を示す図である。なお、以下に示す（１）〜（４）は、図１７中に示す（１）〜（４）と対応する。
（１）要求元ノードにおいて、Ｌ２制御部１５０５は、リプレース処理を実行すると、Ｌ２キャッシュ１５０４から追い出したデータをメモリに記憶する旨のストア要求をＨｏｍｅノードに発行する。
【００１３】
（２）Ｈｏｍｅノードにおいて、メモリ制御部１５０６は、要求元ノードからのストア要求に応じて、ローカルメモリに対してストア要求を発行する。すると、ローカルメモリは、メモリ制御部１５０６の要求にしたがってストア処理を行なう。すなわち、ローカルメモリは、要求元ノードから受信したデータを所定のアドレスに記憶する。
【００１４】
（３）ローカルメモリは、ストア処理が完了すると、ストア要求に対するストア応答をメモリ制御部１５０６に発行する。
（４）メモリ制御部１５０６は、ローカルメモリからストア応答を受信すると、要求元ノードに対してストア要求に対するストア応答を発行する。
【００１５】
上記技術に関連して、大容量化が可能で、連想度の低い仮想インデックス／実タグのキャッシュであり、エイリアシングを許容できるキャッシュメモリシステムが知られている。
【００１６】
また、専用・共用領域の特定を動的に行うことにより、常に最適なキャッシュ一致制御を行うキャッシュ・アクセス制御方式が知られている。
また、共有メモリ型のプロセッサにおけるスヌープ・プロトコルを用いたキャッシュコヒーレンス制御方式が知られている。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特開平１０−１０５４５８号公報
【特許文献２】特開２００２−０３２２６５号公報
【非特許文献】
【００１８】
【非特許文献１】”Ｒｅａｌ  Ｗｏｒｌｄ  Ｔｅｃｈｎｏｌｏｇｉｅｓ，ｘ８６  Ｓｅｒｖｅｒｓ  Ｂｒａｃｅ  ｆｏｒ  ａ  Ｈｕｒｒｉｃａｎｅ，ＨＴＴＰ：／／ｗｗｗ．ｒｅａｌｗｏｒｌｄｔｅｃｈ．ｃｏｍ／ｉｎｃｌｕｄｅｓ／ｔｅｍｐｌａｔｅｓ／ａｒｔｉｃｌｅｓ．ｃｆｍ？ＡｒｔｉｃｌｅＩＤ＝ＲＷＴ０４２４０５２１３５５３＆ｍｏｄｅ＝ｐｒｉｎｔ”
【発明の概要】
【発明が解決しようとする課題】
【００１９】
上述したように、共有メモリ型の情報処理装置では、自ノードに接続されているローカルメモリへのアクセスに比べて、他ノードに接続されているリモートメモリへのアクセスは、通信距離が長くなってしまう。そのため、リード要求などのリクエストを発行してからリクエストの結果が返ってくるまでにかかる遅延時間、すなわち、レイテンシが大幅に増大する。
【００２０】
さらに、近年では、スループットを重視した高速シリアル転送バスを用いてＬＳＩ間を接続する。そのため、ＬＳＩ間の伝送にかかるレイテンシは非常に大きくなる。そして、複数のＬＳＩを介して遠くのメモリにアクセスする場合、さらにレイテンシが大きくなる。
【００２１】
例えば、リモートメモリから取得して自ノード内のＬ２キャッシュ１５０４に記憶したデータに対してリプレース処理が実行された場合、リプレース処理により追い出すデータの無効化や必要に応じてＨｏｍｅノードのメモリへの書き戻し処理が行われる。
【００２２】
そのため、リモートメモリから取得したデータがリプレース処理によりＬ２キャッシュ１５０４から追い出された後に、その追い出されたデータへの再アクセスが発生すると、物理的に遠いリモートメモリからのデータを取得するリード処理を再実行しなければならない。そのため、システム内に物理的に遠いメモリが存在するとレイテンシが大幅に増大する。
【００２３】
本発明は、上述した問題に鑑みてなされたものであり、その解決しようとする課題は、リモートメモリに対するアクセスで生じるレイテンシを改善できるキャッシュ制御装置を提供することである。
【課題を解決するための手段】
【００２４】
キャッシュ制御装置は、第１のキャッシュ制御部と第２のキャッシュ制御部とを備える。
キャッシュ制御装置は、第１のノードに含まれる第１のメモリを共有する第２のノードが有するキャッシュを制御する。
【００２５】
第１のキャッシュ制御部は、第１のメモリ内の情報を記憶する第１のキャッシュに記憶されている第１のキャッシュ情報を第１のキャッシュから出力して、新たな情報を記憶する領域を第１のキャッシュに確保する。
【００２６】
第２のキャッシュ制御部は、第１のキャッシュ制御部が出力した第１のキャッシュ情報を、第２のメモリに記憶する。
このとき、第２のキャッシュ制御部は、第１のキャッシュ情報の管理情報を、第２のメモリの所定の領域と対応付けられた管理情報であって対応付けられた領域に記憶されている情報を管理する管理情報を記憶する第２のキャッシュに記憶する。
【００２７】
また、第２のキャッシュ制御部は、第１のキャッシュ制御部の要求に応じて、要求された情報の管理情報と対応付けられた第２のメモリの領域から情報を読み出して第１のキャッシュ制御部に出力する。
【発明の効果】
【００２８】
以上に説明したように、本キャッシュ制御装置によると、リモートメモリに対するアクセスで生じるレイテンシを改善することができる。
【図面の簡単な説明】
【００２９】
【図１】本実施例に係るキャッシュ制御装置を備えるＣＰＵを使用したシステムの構成例を示す図である。
【図２】図１に示したシステムボードＳＢ０の構成例を示す図である。
【図３】本実施例に係るキャッシュ制御装置をＣＰＵ０に使用した場合の構成例を示す図である。
【図４】図３に示したＶＬ３タグの構成例を説明する図である。
【図５】登録データの「登録状態」を説明する図である。
【図６】ＶＬ３タグに登録するタグのビットアサインを示す図である。
【図７】メモリＭＥＭ０とＶＬ３タグとの関係を示す図である。
【図８】Ｌ２キャッシュでリプレース処理が行なわれた場合の処理の流れを示す図である。
【図９】リプレース処理によりＬ２キャッシュから追い出されたＬ２リプレース対象データを読み出す処理の流れを示す図である。
【図１０】Ｌ１キャッシュ、Ｌ２キャッシュおよびＶＬ３キャッシュにないデータを読み出す処理の流れを示す図である。
【図１１】Ｌ２キャッシュでリプレース処理が行なわれた場合のキャッシュ制御を説明するフローチャートである。
【図１２】命令実行部からリード要求があった場合のキャッシュ制御を説明するフローチャートである。
【図１３】Ｈｏｍｅノードから無効化要求を受けた場合のキャッシュ制御を説明するフローチャートである。
【図１４】Ｈｏｍｅノードからムーブアウト要求を受けた場合のキャッシュ制御を説明するフローチャートである。
【図１５】共有メモリ型の情報処理装置に使用されるＣＰＵ内のキャッシュを説明する図である。
【図１６】リモートメモリへのアクセス処理を示す図である。
【図１７】リプレース処理を示す図である。
【発明を実施するための形態】
【００３０】
以下、本発明の実施形態について、図１〜図１４に基づいて説明する。
（本実施例に係る構成）
図１は、本実施例に係るキャッシュ制御装置を備えるＣＰＵを使用した情報処理装置を示す図である。
【００３１】
図１に示す情報処理装置１００は、ＣＰＵが実装される複数のシステムボードＳＢ０〜ＳＢ７と、クロスバＸＢ０およびＢ１とを備える。図１に示す情報処理装置１００は、各ＣＰＵに接続されるメモリを全ＣＰＵが共有する共有メモリ型の情報処理装置である。
【００３２】
以下、説明を簡単にするために、１つのノードには１つのＣＰＵが属するものとするが、これに本発明を限定する趣旨ではない。なお、「ノード」とは、所定のメモリを共有する独立した演算処理単位をいう。
【００３３】
各システムボードＳＢ０〜ＳＢ７は、それぞれ１または複数のＣＰＵを備える。システムボードＳＢ０〜ＳＢ３は、クロスバＸＢ０と相互に通信可能に接続されている。同様に、システムボードＳＢ４〜ＳＢ７は、クロスバＸＢ１と相互に通信可能に接続されている。
【００３４】
クロスバＸＢ０とクロスバＸＢ１は、互いに通信可能に接続されている。
以上の構成によって、システムボードＳＢ０に実装されるＣＰＵは、クロスバＸＢ０を介してシステムボードＳＢ１等の他のシステムボードに実装されるＣＰＵに接続されるメモリにアクセス可能となる。同様に、システムボードＳＢ０に実装されるＣＰＵは、クロスバＸＢ０およびＸＢ１を介して、システムボードＳＢ４に実装されるＣＰＵに接続されるメモリにアクセス可能となる。
【００３５】
なお、図１は、情報処理装置１００の１つの実施形態を示すものである。したがって、情報処理装置１００の構成を図１に示す構成に限定する趣旨ではない。例えば、システムボードの数やクロスバの数、各要素相互の接続形態、１つのノードに属するＣＰＵの数等を限定する趣旨ではない。
【００３６】
図２は、図１に示したシステムボードの構成例を示す図である。なお、本実施例では、システムボードＳＢ０についてのみ説明するが、システムボードＳＢ１〜ＳＢ７についても同様の構成とする。
【００３７】
図２に示すシステムボードＳＢ０は、ＣＰＵ０〜ＣＰＵ３と、各ＣＰＵに接続されるメモリＭＥＭ０〜３とを備える。なお、各ＣＰＵに接続されるメモリＭＥＭ０〜３は、ＣＰＵ外に実装されデータやプログラムを記憶する揮発性のメモリ、いわゆる「メインメモリ」である。
【００３８】
以下、「メインメモリ」を単に「メモリ」といい、ＣＰＵ内に実装されるキャッシュと区別する。
各ＣＰＵ０〜３は、互いに通信可能に接続されている。例えば、ＣＰＵ０は、ＣＰＵ１に接続されるメモリＭＥＭ１にアクセスが可能である。また、各ＣＰＵ０〜３は、クロスバＸＢ０と通信可能に接続している。したがって、例えば、ＣＰＵ０は、クロスバＸＢ０を介してシステムボードＳＢ１に実装されるＣＰＵに接続されるメモリにアクセスが可能である。
【００３９】
以下の説明では、所定のデータが記憶されているメモリが接続しているＣＰＵが属するノードを「Ｈｏｍｅノード」という。これに対して、Ｈｏｍｅノードからデータを取得してキャッシュに保持するＣＰＵが属するノードを「要求元ノード」という。
【００４０】
また、あるＣＰＵから見て、そのＣＰＵに接続されるメモリを「ローカルメモリ」という。これに対して、あるＣＰＵから見て、そのＣＰＵが属するノード内の他のＣＰＵに接続されるメモリ、あるいはそのＣＰＵが属するノードと異なるノードに属するＣＰＵに接続されるメモリを「リモートメモリ」という。
【００４１】
例えば、ＣＰＵ０から見て、メモリＭＥＭ０はローカルメモリである。また、ＣＰＵ０から見て、メモリＭＥＭ１〜ＭＥＭ３や、システムボードＳＢ１〜ＳＢ７に実装されているＣＰＵに接続されているメモリは、リモートメモリである。
【００４２】
図２は、システムボードＳＢ０の１つの実施形態を示すものである。したがって、システムボードＳＢ０の構成を図２に示す構成に限定する趣旨ではない。例えば、システムボードＳＢ０に実装されるＣＰＵの数やメモリの数等を限定する趣旨ではない。
【００４３】
図３は、本実施例に係るキャッシュ制御装置をＣＰＵに使用した場合の構成例を示す図である。なお、本実施例では、ＣＰＵ０について例示するが、システムボードＳＢ０に実装される他のＣＰＵ１〜３およびシステムボードＳＢ１〜ＳＢ７に実装されるＣＰＵについても同様の構成とする。
【００４４】
ＣＰＵ０は、命令実行部３０１と、Ｌ１キャッシュ３０２と、Ｌ１制御部３０３と、Ｌ２キャッシュ３０４と、Ｌ２制御部３０５と、ＶＬ３キャッシュ３０６と、ＶＬ３制御部３０７と、メモリ制御部３０８と、ＬＳＩ間通信制御部３０９とを備える。
【００４５】
本実施例に係るキャッシュ制御装置３１０は、Ｌ１制御部３０３と、Ｌ２制御部３０５と、ＶＬ３制御部３０７との機能を含むものとする。
本実施例に係るキャッシュ装置３２０は、Ｌ１キャッシュ３０２と、Ｌ１制御部３０３と、Ｌ２キャッシュ３０４と、Ｌ２制御部３０５と、ＶＬ３キャッシュ３０６と、ＶＬ３制御部３０７とを含むものとする。
【００４６】
キャッシュ装置３２０は、命令実行部３０１で使用するデータ等を記憶する。キャッシュ制御装置３１０は、必要に応じてキャッシュ装置３２０にデータを記憶し、または読み出す等の制御を行なう。
【００４７】
命令実行部３０１は、ローカルメモリＭＥＭ０上に展開されたプログラム命令を実行する。また、命令実行部３０１は、必要に応じて、Ｌ１制御部３０３に対してリード要求、ストア要求等を行う。
【００４８】
Ｌ１キャッシュ３０２は、ＣＰＵ０内部に設けられた１次キャッシュである。Ｌ１キャッシュ３０２には、Ｌ１タグとＬ１データとが記憶される。Ｌ１データは、Ｌ１キャッシュ３０２に記憶されるデータ群である。Ｌ１タグは、Ｌ１キャッシュ３０２に記憶されるデータを管理する管理情報群である。
【００４９】
なお、タグとは、キャッシュに記憶するデータを管理する管理情報である。管理情報には、例えば、データが記憶されているローカルメモリの物理アドレスやそのデータの登録状態などが含まれる。データの登録状態については、後述する図５で説明する。
【００５０】
Ｌ１制御部３０３は、Ｌ１キャッシュ３０２を制御する。例えば、Ｌ１制御部３０３は、ローカルメモリから取得したデータをＬ１キャッシュ３０２に記憶する。また、Ｌ１制御部３０３は、Ｌ１データを記憶するローカルメモリの物理アドレスと、そのＬ１データの登録状態を示すデータと、からなるデータにＥＣＣ検査ビットを付したタグを、Ｌ１タグに登録する。
【００５１】
Ｌ２キャッシュ３０４は、ＣＰＵ０内部に設けられた２次キャッシュである。Ｌ２キャッシュ３０４には、Ｌ２タグとＬ２データとが記憶される。Ｌ２データは、Ｌ２キャッシュ３０４に記憶されるデータ群である。Ｌ２タグは、Ｌ２キャッシュ３０４に記憶されるデータを管理する管理情報群である。
【００５２】
Ｌ２制御部１５０５は、Ｌ２キャッシュ３０４を制御する。例えば、Ｌ２制御部３０５は、ローカルメモリから取得したデータをＬ２キャッシュ３０４に記憶する。また、Ｌ２制御部３０５は、Ｌ２データを記憶するローカルメモリの物理アドレスと、そのＬ２データの登録状態を示すデータと、からなるデータにＥＣＣ検査ビットを付したタグを、Ｌ２タグに登録する。
【００５３】
ＶＬ３キャッシュ３０６は、仮想的に３次キャッシュを実現するためのキャッシュである。ＶＬ３キャッシュ３０６には、ＶＬ３タグが記憶される。ＶＬ３タグは、ＣＰＵ０内部に仮想的に設けられる３次キャッシュに記憶されるデータを管理する管理情報群である。
【００５４】
ＶＬ３制御部３０７は、ＶＬ３キャッシュ３０６とローカルメモリＭＥＭ０を用いて仮想的に３次キャッシュを実現する。
例えば、リモートメモリから読み出したデータがリプレース処理によってＬ２キャッシュ３０４から追い出される場合を考える。
【００５５】
この場合、ＶＬ３制御部３０７は、リプレース処理によってＬ２キャッシュ３０４から追い出されたデータを、仮想キャッシュ空間に割り当てられたローカルメモリＭＥＭ０の所定のアドレスに記憶する。また、ＶＬ３制御部３０７は、そのローカルメモリＭＥＭ０に記憶されたデータが記憶されているリモートメモリのアドレスと、そのローカルメモリＭＥＭ０に記憶されたデータのキャッシュ上の登録状態を示すデータと、ＥＣＣ検査ビットと、を含むタグをＶＬ３タグに登録する。
【００５６】
「リプレース処理」とは、新しいデータを記憶するために、古いデータをキャッシュから追い出す処理をいう。古いデータには、タグのみのデータも含まれるものとする。また、Ｌ２キャッシュにおいて行われるリプレース処理を「Ｌ２リプレース処理」という。また、Ｌ２リプレース処理でＬ２キャッシュから追い出される対象のデータを「Ｌ２リプレース対象データ」という。
【００５７】
ＶＬ３タグへのタグの登録は、Ｌ２キャッシュ３０４に対してリプレース処理が実行され、かつリプレース対象データがリモートメモリから取得したデータである場合に行われる。
【００５８】
メモリ制御部３０８は、ＶＬ３制御部３０７等からの要求に応じて、ローカルメモリＭＥＭ０にアクセスする。
例えば、ＶＬ３制御部３０７からリード要求を受けると、メモリ制御部３０８はローカルメモリＭＥＭ０の所定のアドレスからデータを読み出してＶＬ３制御部３０７に出力する。また、メモリ制御部３０８は、ＶＬ３制御部３０７からストア要求を受けると、ストア対象のデータをローカルメモリＭＥＭ０に記憶する。
【００５９】
ＬＳＩ間通信制御部３０９は、ＶＬ３制御部３０７等からの要求に応じて、リモートメモリにアクセスする。
例えば、ＣＰＵ０のＬＳＩ間通信制御部３０９は、ＣＰＵ１に接続しているメモリにアクセスする。また、例えば、ＬＳＩ間通信制御部３０９は、クロスバＸＢ０を介してシステムボードＳＢ１に実装されているＣＰＵに接続されているメモリにアクセスする。
【００６０】
なお、本実施例では、各ノードに含まれるキャッシュ、図３の例ではＬ１キャッシュ３０２、Ｌ２キャッシュ３０４およびＶＬ３キャッシュ３０６の一貫性を保持するために、ｃｃＮＵＭＡ（ｃａｃｈｅ−ｃｏｈｅｒｅｎｔ  ＮｏｎＵｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）方式によるキャッシュコヒーレンス制御を行うものとする。
【００６１】
図４は、図３に示したＶＬ３タグの構成例を説明する図である。
図４に示すＶＬ３タグ４０１は、以下に示す３２Ｍｂｙｔｅ（＝１２８Ｂｙｔｅ×４ｖａｌ（ｖａｌｕｅ）×２Ｋライン×３２ｗａｙ）の記憶容量の３次キャッシュを仮想的に実現するためのものである。
（１）ラインサイズ  ：１２８Ｂｙｔｅ
（２）ページ数      ：４
（３）ライン数      ：２Ｋ（＝２×１０２４）
（４）データ格納構造：３２ｗａｙセットアソシアティブ方式
【００６２】
そこで、本実施例に係るＶＬ３タグ４０１は、４０ビット×２Ｋライン×３２ｗａｙ、すなわち、１ライン４０ビットのラインを２Ｋ（＝２×１０２４）有する３２ｗａｙセットアソシアティブ方式のデータ格納構造を有する。各ラインにタグが登録される。以下、ＶＬ３タグ４０１にタグを登録したデータまたはタグを登録するデータを「登録データ」という。
【００６３】
図４に示すビットアサイン４０２は、仮想的に設けられる３次キャッシュへのアクセス時に指定されるアドレスデータＰＡの主要部を示している。
図４に示すビットアサイン４０２は、１ノードあたりの実メモリ空間を２５６Ｇｂｙｔｅとし、最大ノード数を６４ノードとした場合の物理アドレス空間のビットアサインについて示している。
【００６４】
ビット［４３：３８］は、ノードを識別するノード識別ＩＤである。このノード識別ＩＤは、登録データを記憶しているメモリの属するノードを示している。また、ビット［３７：２０］は、登録データを記憶するメモリの物理アドレスである。
【００６５】
ビット［１９：０９］は、タグの登録先のラインアドレスである。また、ビット［０８：０７］は、タグの登録先のページを示す値（Ｓｖａｌ：Ｓｅｌｅｃｔ  ｖａｌｕｅ）である。例えば、ビット［０８：０７］が「００（２進数）」の場合、ＶＬ３制御部３０７は、図４に示すように、アドレスデータＰＡのビット［１９：０９］が示すページ０のラインアドレスのいずれかのｗａｙを登録先ｗａｙとして選択する。そして、ＶＬ３制御部３０７は、選択した登録先ｗａｙにタグを登録する。
【００６６】
なお、登録先ｗａｙは、例えば、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）方式を用いて決定すればよい。
ＶＬ３タグ４０１に登録するタグは、アドレスデータＰＡのビット［４３：２０］と、登録データの登録状態を示すデータＳＶＡＬ［７：０］と、ＥＣＣ検査ビットＥＣＣ［６：０］とを備えるデータである。
なお、ＳＶＡＬ［７：０］およびＥＣＣ［６：０］については、図６で説明する。
【００６７】
本実施例では、アドレスデータＰＡのビット［４３：２０］が示すアドレスに記憶された登録データのキャッシュ上の状態を「登録状態」という。また、ＥＣＣ検査ビットは、アドレスデータＰＡのビット［４３：２０］のデータと登録状態を示すデータＳＶＡＬ［７：０］を保護するためのＥＣＣ検査ビットである。
なお、図４は、ＶＬ３タグ４０１の１つの実施形態を示すものである。したがって、ラインサイズ、ライン数またはｗａｙ数等を限定する趣旨ではない。
【００６８】
図５は、登録データの「登録状態」を説明する図である。
登録データの「登録状態」は、ＭＥＳＩ（Ｍｏｄｉｆｉｅｄ／Ｅｘｃｌｕｓｉｖｅ／Ｓｈａｒｅｄ／Ｉｎｖａｌｉｄ）プロトコルにしたがって決定される。ＭＥＳＩプロトコルで定義される各状態は、２ビットのデータＳＴＳ［１：０］で表される。
【００６９】
ＳＴＳ［１：０］が「００（２進数）」である場合、登録データの状態がＩであることを示す。状態Ｉは、登録データが無効の状態である。
ＳＴＳ［１：０］が「０１（２進数）」である場合、登録データの状態がＳであることを示す。状態Ｓは、リモートメモリ上から共有型で持ち出されたキャッシュ上のデータがクリーンな状態である。
【００７０】
データが「クリーン」な状態とは、リモートメモリに記憶されているデータと、そのリモートメモリから読み出されてキャッシュ上に記憶されたデータとが一致している状態をいう。
【００７１】
ＳＴＳ［１：０］が「１０（２進数）」である場合、登録データの状態がＥであることを示す。状態Ｅは、リモートメモリ上から排他型で持ち出された登録データがクリーンな状態である。
【００７２】
ＳＴＳ［１：０］が「１１（２進数）」である場合、登録データの状態がＭであることを示す。状態Ｍは、リモートメモリ上から排他型で持ち出された登録データがダーティな状態である。
【００７３】
データが「ダーティ」な状態とは、リモートメモリまたはキャッシュに記憶されているデータが更新されたことにより、リモートメモリに記憶されているデータと、そのリモートメモリから読み出されてキャッシュ上に記憶されたデータとが一致しない状態をいう。
【００７４】
図６は、ＶＬ３タグに記憶するタグのビットアサインを示す図である。
タグ６０１は、４０ビット幅のデータである。タグ６０１のビット［３９：１６］には、アドレスデータＰＡのビット［４３：２０］のデータが格納される。
【００７５】
タグ６０１のビット［１４：０７］には、登録状態ＭＥＳＩを示すＳＴＳ［１：０］のデータが格納される。例えば、タグ６０１のビット［１４：１３］、［１２：１１］、［１０：０９］および［０８：０７］は、それぞれ状態Ｉ、状態Ｓ、状態Ｅおよび状態Ｍを設定する領域である。
【００７６】
ＳＴＳ［１：０］の値が状態Ｉを示す場合、タグ６０１のビット［１４：１３］にＳＴＳ［１：０］の値が設定される。ＳＴＳ［１：０］の値が状態Ｓを示す場合、タグ６０１のビット［１２：１１］にＳＴＳ［１：０］の値が設定される。ＳＴＳ［１：０］の値が状態Ｅを示す場合、タグ６０１のビット［１０：０９］にＳＴＳ［１：０］の値が設定される。ＳＴＳ［１：０］の値が状態Ｍを示す場合、タグ６０１のビット［０８：０７］にＳＴＳ［１：０］の値が設定される。
【００７７】
なお、タグ６０１のビット［１４：１３］、［１２：１１］、［１０：０９］および［０８：０７］は、ＳＴＳ［１：０］の値が設定されたことが明確となるように初期化する必要がある。
【００７８】
タグ６０１のビット［０６：００］には、タグ６０１のビット［３９：０７］のＥＣＣ検査ビットが格納される。なお、タグ６０１のビット［１５］は、リザーブ領域となっている。
本実施例では、Ｌ１タグに登録するタグおよびＬ２タグに登録するタグも、図６に示したタグと同様のビットアサインのものを使用する。
【００７９】
図７は、ローカルメモリＭＥＭ０とＶＬ３タグとの関係を示す図である。なお、他ノードにおいてもローカルメモリとＶＬ３タグは同様の関係を有する。
実メモリ空間７０１は、ローカルメモリＭＥＭ０のメモリ空間である。実メモリ空間７０１は、１２８Ｂｙｔｅのブロック毎に管理されている。そして、実メモリ空間７０１のうち下位３２ＭＢｙｔｅの領域が仮想キャッシュ空間に割り当てられている。その他の領域は、ユーザが使用可能な領域となっている。
【００８０】
仮想キャッシュ空間７０２は、ＶＬ３タグのメモリ空間である。仮想キャッシュ空間７０２は、４０ｂｉｔのブロック毎に管理されている。各ブロックには、図４に示したＷＡＹ０−ライン＃００００〜ＷＡＹ３１−ライン＃２０４７に登録されるタグが記憶される。
【００８１】
仮想キャッシュ空間７０２の各ブロックは、仮想キャッシュ空間に割り当てられている実メモリ空間７０１内のブロックと対応付けられている。例えば、仮想キャッシュ空間７０２に記憶されたタグのビット［３３：１６］が示す実メモリ空間７０１の物理アドレスに、登録データが記憶される。
【００８２】
（本実施例に係るキャッシュ制御の概要）
本実施例に係るキャッシュ制御では、リモートメモリから読み出してＬ２キャッシュ３０４に記憶されているデータがリプレース処理によって追い出された場合、追い出されたデータを、Ｌ２キャッシュ３０４の下位に仮想的に設けた３次キャッシュに記憶する。
【００８３】
以下に本実施例に係るキャッシュ制御の概要を説明する。
図８は、Ｌ２キャッシュ３０４でリプレース処理が行なわれた場合の処理の流れを示す図である。なお、以下に示す（１）〜（５）は、図８中に示される（１）〜（５）と対応する。
【００８４】
（１）要求元ノードにおいて、Ｌ２制御部３０５は、リプレース処理を実行すると、リプレース処理により追い出されたＬ２リプレース対象データを、ＶＬ３制御部３０７に出力する。
【００８５】
（２）ＶＬ３制御部３０７は、Ｌ２制御部３０５からのＬ２リプレース対象データを受信すると、Ｌ２リプレース対象データのタグをＶＬ３タグに登録する。また、ＶＬ３制御部３０７は、メモリ制御部３０８に対して、仮想キャッシュ空間に割り当てられているローカルメモリの所定のアドレスにＬ２リプレース対象データを記憶する旨のストア要求を発行する。
【００８６】
（３）メモリ制御部３０８は、ローカルメモリ（図示「メモリ」）に対して、Ｌ２リプレース対象データを所定のアドレスに記憶する旨のストア要求を発行する。同時に、メモリ制御部３０８は、Ｌ２リプレース対象データをローカルメモリに送信する。
【００８７】
ローカルメモリは、Ｌ２リプレース対象データのストア処理を行なう。すなわち、ローカルメモリは、メモリ制御部３０８からの要求に応じて、メモリ制御部３０８からストア要求とともに受信したＬ２リプレース対象データを所定のアドレスに記憶する。
【００８８】
（４）ローカルメモリは、ストア処理が完了すると、メモリ制御部３０８に対してストア処理が完了した旨のストア応答を発行する。
（５）メモリ制御部３０８は、ローカルメモリからストア応答を受信すると、ＶＬ３制御部３０７に対してストア応答を発行する。
【００８９】
以上の処理により、リプレース処理によって追い出されたＬ２リプレース対象データは、仮想的に設けられた３次キャッシュに記憶される。
なお、Ｈｏｍｅノードにおいて、ストア系アクセスの実行により、ＶＬ３タグにタグを登録したＬ２リプレース対象データが変更された場合、Ｈｏｍｅノードから要求元ノードにデータの無効化要求が送られてくる。この場合、要求元ノードは、後述する図１３に示す処理により、ＶＬ３タグに登録したＬ２リプレース対象データのタグを無効化する。
【００９０】
また、Ｌ２リプレース対象データが排他型で持ち出されたデータの場合、Ｈｏｍｅノードにおいて、任意の装置からＬ２リプレース対象データへのアクセスがあると、Ｈｏｍｅノードから要求元ノードにデータのムーブアウト要求が送られてくる。その場合、要求元ノードは、図１４に示す処理により、Ｌ２リプレース対象データをＨｏｍｅノードに送信する。同時に、要求元ノードは、ＶＬ３タグに登録されているＬ２リプレース対象データのタグを無効化する。
【００９１】
図９は、リプレース処理によりＬ２キャッシュ３０４から追い出されたＬ２リプレース対象データを読み出す処理の流れを示す図である。なお、以下に示す（１）〜（６）は、図９中に示される（１）〜（６）と対応する。
【００９２】
（１）Ｌ１制御部３０３は、命令実行部３０１から要求されたデータがＬ１キャッシュ３０２にない場合、Ｌ２制御部３０５に対してリード要求を発行する。以下、リード要求の対象となるデータを「リード対象データ」という。
【００９３】
（２）Ｌ２制御部３０５は、Ｌ１制御部３０３からリード要求を受信すると、Ｌ２タグを検索する。そして、Ｌ２制御部３０５は、リード対象データのタグがＬ２タグに登録されているか否かを判別する。キャッシュミスを検出すると、Ｌ２制御部３０５は、ＶＬ３制御部３０７に対してリード要求を発行する。
【００９４】
（３）ＶＬ３制御部３０７は、Ｌ２制御部３０５からリード要求を受信すると、ＶＬ３タグを検索する。そして、ＶＬ３制御部３０７は、リード対象データのタグがＶＬ３タグに登録されているか否かを判別する。キャッシュヒットを検出すると、ＶＬ３制御部３０７は、メモリ制御部３０８に対してリード要求を発行する。
【００９５】
（４）メモリ制御部３０８は、ＶＬ３制御部３０７からリード要求を受信すると、ローカルメモリに対してリード要求を発行する。
（５）ローカルメモリは、メモリ制御部３０８からのリード要求に応じて、所定のアドレスからリード対象データを読み出すリード処理を行なう。そして、ローカルメモリは、メモリ制御部３０８対してリード処理が完了した旨のリード応答を発行する。同時に、ローカルメモリは、読み出したリード対象データをメモリ制御部３０８に送信する。
【００９６】
（６）メモリ制御部３０８は、ＶＬ３制御部３０７に対してリード応答を発行する。同時に、メモリ制御部３０８は、ローカルメモリから受信したリード対象データをＶＬ３制御部３０７に送信する。
【００９７】
ＶＬ３制御部３０７に送信されたリード対象データは、Ｌ２制御部３０５およびＬ１制御部３０３を介して、命令実行部３０１に通知される。
このとき、Ｌ１制御部３０３は、ＶＬ３制御部３０７から通知されたリード対象データのタグをＬ１タグに登録し、リード対象データをＬ１データに記憶する。同様に、Ｌ２制御部３０５は、ＶＬ３制御部３０７から通知されたリード対象データのタグＬ２タグに登録し、リード対象データをＬ２データに記憶する。
【００９８】
なお、本実施例では、Ｌ１キャッシュ３０２およびＬ２キャッシュ３０４に記憶するデータと、ＶＬ３キャッシュ３０６に記憶するデータとが排他的に制御される。したがって、ＶＬ３キャッシュ３０６に登録されているデータをＬ１キャッシュ３０２およびＬ２キャッシュ３０４に登録する場合、ＶＬ３制御部３０７は、キャッシュの一貫性を保持するためにＶＬ３キャッシュ３０６に登録されているデータを無効化する。
【００９９】
図１０は、Ｌ１キャッシュ３０２、Ｌ２キャッシュ３０４およびＶＬ３キャッシュ３０６にないデータを読み出す処理の流れを示す図である。なお、以下に示す（１）〜（６）は、図１０中に示される（１）〜（６）と対応する。
【０１００】
（１）要求元ノードにおいて、Ｌ１制御部３０３は、命令実行部３０１から要求されたデータがＬ１キャッシュ３０２にない場合、Ｌ２制御部３０５に対してリード要求を行う。
【０１０１】
（２）Ｌ２制御部３０５は、Ｌ１制御部３０３からリード要求を受信すると、Ｌ２タグを検索する。そして、Ｌ２制御部３０５は、リード対象データのタグがＬ２タグに登録されているか否かを判別する。キャッシュミスを検出すると、Ｌ２制御部３０５は、ＶＬ３制御部３０７に対してリード要求を発行する。
【０１０２】
（３）ＶＬ３制御部３０７は、Ｌ２制御部３０５からリード要求を受信すると、ＶＬ３タグを検索する。そして、ＶＬ３制御部３０７は、リード対象データのタグがＶＬ３タグに登録されているか否かを判別する。キャッシュミスを検出すると、ＶＬ３制御部３０７は、リード要求で指定されるアドレスデータＰＡからＨｏｍｅノードを特定する。
【０１０３】
なお、Ｈｏｍｅノードは、図４に示したビットアサイン４０２のビット［４３：３８］、つまりノード識別ＩＤから特定することができる。
Ｈｏｍｅノードを特定すると、ＶＬ３制御部３０７は、特定したＨｏｍｅノードに対してリード要求を発行する。
【０１０４】
（４）Ｈｏｍｅノードのメモリ制御部は、要求元ノードのＶＬ３制御部３０７からリード要求を受信すると、ローカルメモリに対してリード要求を発行する。
（５）ローカルメモリは、Ｈｏｍｅノードのメモリ制御部からのリード要求に応じて、リード対象アドレスに記憶されているリード対象データを読み出すリード処理を行なう。そして、ローカルメモリは、Ｈｏｍｅノードのメモリ制御部に対してリード応答を発行する。同時に、ローカルメモリは、読み出したリード対象データをＨｏｍｅノードのメモリ制御部に送信する。
【０１０５】
（６）Ｈｏｍｅノードのメモリ制御部は、ローカルメモリからリード応答を受信すると、要求元ノードに対してリード応答を発行する。同時に、Ｈｏｍｅノードのメモリ制御部は、ローカルメモリから受信したリード対象データを要求元ノードに送信する。
【０１０６】
要求元ノードにおいて、Ｈｏｍｅノードのメモリ制御部から送信されたリード対象データは、ＶＬ３制御部３０７が受信する。ＶＬ３制御部３０７が受信したリード対象データは、Ｌ２制御部３０５およびＬ１制御部３０３を介して、命令実行部３０１に通知される。
【０１０７】
このとき、Ｌ１制御部３０３は、ＶＬ３制御部３０７から通知されたリード対象データのタグをＬ１タグに登録し、リード対象データをＬ１データに記憶する。同様に、Ｌ２制御部３０５は、リード対象データのタグＬ２タグに登録し、リード対象データをＬ２データに記憶する。
【０１０８】
（本実施例に係るキャッシュ制御の具体的処理）
図１１は、Ｌ２キャッシュ３０４でリプレース処理が行なわれる場合のキャッシュ制御を説明するフローチャートである。
【０１０９】
例えば、Ｌ１制御部３０３がＬ２制御部３０５に対して、命令実行部３０１からストア要求があったデータのストア要求を発行することにより、図１１の処理が開始する（ステップＳ１１００）。
【０１１０】
ステップＳ１１０１において、Ｌ２制御部３０５は、Ｌ２タグに新たなタグを登録する領域があるか否かにより、Ｌ１制御部３０３から指示された新規データを記憶する領域がＬ２キャッシュ３０４にあるか否かを判別する。
【０１１１】
そして、Ｌ１制御部３０３から指示された新規データを記憶する領域がＬ２キャッシュ３０４にない場合、Ｌ２制御部３０５は、Ｌ２リプレース処理を実行する。Ｌ２リプレース処理によりＬ２キャッシュ３０４に所定の領域を確保すると、Ｌ２制御部３０５は、Ｌ１制御部３０３から指示された新規データのタグをＬ２タグに登録する。また、Ｌ２制御部３０５は、Ｌ１制御部３０３から指示された新規データをＬ２リプレース処理により確保したＬ２キャッシュ３０４の領域に格納する。
【０１１２】
一方、Ｌ１制御部３０３から指示された新規データを記憶する領域がＬ２キャッシュ３０４にある場合、Ｌ２制御部３０５は、Ｌ２リプレース処理を実行することなく、Ｌ１制御部３０３から指示された新規データのタグをＬ２タグに登録する。また、Ｌ２制御部３０５は、Ｌ１制御部３０３から指示された新規データをＬ２キャッシュ３０４に格納する。
【０１１３】
ステップＳ１１０２において、Ｌ２制御部３０５は、ステップＳ１１０１におけるＬ２リプレース処理の実行の有無を判別する。
ステップＳ１１０１でＬ２リプレース処理が実行された場合、Ｌ２制御部３０５は、処理をステップＳ１１０３に移行する（Ｓ１１０２  ＹＥＳ）。また、ステップＳ１１０１でＬ２リプレース処理が実行されていない場合、Ｌ２制御部３０５は、処理をステップＳ１１１１に移行し、図１１の処理を終了する（Ｓ１１０２  ＮＯ）。
【０１１４】
ステップＳ１１０３において、Ｌ２制御部３０５は、Ｌ２リプレース処理によってＬ２キャッシュ３０４から追い出されたＬ２リプレース対象データのタグから、Ｌ２リプレース対象データを格納する格納先を特定する。
【０１１５】
例えば、Ｌ２制御部３０５は、Ｌ２リプレース対象データのタグから、Ｌ２リプレース対象データのＨｏｍｅノードを特定する。Ｈｏｍｅノードは、図６に示したビットアサイン６０１のビット［３９：３４］、すなわち、図４に示したビットアサイン４０２のビット［４３：３８］から特定することが可能である。
【０１１６】
ステップＳ１１０４において、Ｈｏｍｅノードが自ノードと一致しない場合、Ｌ２制御部３０５は、Ｌ２リプレース対象データがリモートメモリ上に格納されていると判断する（Ｓ１１０４  ＹＥＳ）。この場合、Ｌ２制御部３０５は処理をステップＳ１１０５に移行する。
【０１１７】
また、Ｈｏｍｅノードが自ノードと一致する場合、Ｌ２制御部３０５は、Ｌ２リプレース対象データがローカルメモリ上に格納されていると判断する（Ｓ１１０４  ＮＯ）。この場合、Ｌ２制御部３０５は処理をステップＳ１１１０に移行する。
【０１１８】
ステップＳ１１０５において、ＶＬ３制御部３０７は、以下の処理により、Ｌ２リプレース対象データのタグをＶＬ３タグに登録する。なお、Ｌ２キャッシュ３０４でのＬ２リプレース対象データの登録状態（Ｍ／Ｅ／Ｓ）はそのまま引き継がれる。
【０１１９】
まず、ＶＬ３制御部３０７は、Ｌ２リプレース対象データのタグを記憶する領域がＶＬ３タグにあるか否かを判別する。
そして、Ｌ２リプレース対象データのタグを登録する領域がＶＬ３タグにない場合、ＶＬ３制御部３０７は、ＶＬ３タグに登録されている古いタグをＶＬ３キャッシュ３０６から追い出すリプレース処理を実行する。
【０１２０】
以下、ＶＬ３キャッシュにおいて行われるリプレース処理を「ＶＬ３リプレース処理」という。また、ＶＬ３リプレース処理でＶＬ３キャッシュから追い出される対象のデータを「ＶＬ３リプレース対象データ」という。
【０１２１】
ＶＬ３リプレース処理によりＶＬ３キャッシュ３０６上のＶＬ３タグに所定の領域を確保すると、ＶＬ３制御部３０７は、その確保した領域にＬ２リプレース対象データのタグを登録する。
【０１２２】
また、Ｌ２リプレース対象データのタグを記憶する領域がＶＬ３タグにある場合、ＶＬ３制御部３０７は、ＶＬ３リプレース処理を実行することなく、ＶＬ３タグにＬ２リプレース対象データのタグを登録する。
【０１２３】
ステップＳ１１０６において、ＶＬ３制御部３０７は、ステップＳ１１０５におけるＶＬ３リプレース処理の実行の有無を判別する。
ステップＳ１１０５でＶＬ３リプレース処理が実行された場合、ＶＬ３制御部３０７は処理をステップＳ１１０７に移行する（Ｓ１１０６  ＹＥＳ）。また、ステップＳ１１０５でＶＬ３リプレース処理が実行されていない場合、ＶＬ３制御部３０７は、処理をステップＳ１１０９に移行する（Ｓ１１０６  ＮＯ）。
【０１２４】
ステップＳ１１０７において、ＶＬ３制御部３０７は、仮想キャッシュ空間に割り当てられたローカルメモリの所定のアドレスからＶＬ３リプレース対象データを追い出す。
例えば、ＶＬ３制御部３０７は、ＶＬ３タグに登録されていたＶＬ３リプレース対象データのタグを参照する。そして、ＶＬ３制御部３０７は、タグのビット［３３：１６］から、ＶＬ３リプレース対象データが記憶されているローカルメモリの物理アドレスを取得する。そして、ＶＬ３制御部３０７は、メモリ制御部３０８を介して、ＶＬ３リプレース対象データをローカルメモリから読み出す。
【０１２５】
ステップＳ１１０８において、ＶＬ３制御部３０７は、ＶＬ３リプレース対象データのタグから特定されるＨｏｍｅノードに対して、ステップＳ１１０７で読み出したＶＬ３リプレース対象データを記憶するようにストア要求を発行する。同時に、ＶＬ３制御部３０７は、ＶＬ３リプレース対象データを特定されたＨｏｍｅノードに送信する。
【０１２６】
Ｈｏｍｅノードでは、ＬＳＩ間通信制御部を介してＶＬ３リプレース対象データを受信すると、ＨｏｍｅノードのＶＬ３制御部が、ＶＬ３リプレース対象データをＨｏｍｅノードのローカルメモリの所定のアドレスに記憶する。
【０１２７】
以上のステップＳ１１０７およびＳ１１０８の処理によって、ＶＬ３制御部３０７は、ＶＬ３リプレース対象データを、仮想的に設けた３次キャッシュ、すなわち、仮想キャッシュ空間に割り当てられたローカルメモリから追い出して領域を確保する。
【０１２８】
ステップＳ１１０９において、ＶＬ３制御部３０７は、ステップＳ１１０１のＬ２リプレース処理によってＬ２キャッシュ３０４から追い出されたＬ２リプレース対象データを、仮想キャッシュ空間として割り当てられているローカルメモリの所定のアドレスに記憶する。
【０１２９】
なお、ステップＳ１１０５でＶＬ３リプレース処理が実行されている場合、ＶＬ３制御部３０７は、Ｌ２リプレース対象データを、ステップＳ１１０７およびＳ１１０８の処理により確保した領域に記憶する。
【０１３０】
一方、ステップＳ１１１０において、ＶＬ３制御部３０７は、Ｌ２リプレース対象データをローカルメモリの所定のアドレスに記憶する。
ステップＳ１１０９またはＳ１１１０の処理が完了すると、ＶＬ３制御部３０７は、Ｌ２リプレース対象データのタグのビット［１５：０７］を参照する。そして、ＶＬ３制御部３０７は、Ｌ２リプレース対象データの登録状態を判別する。
【０１３１】
Ｌ２リプレース対象データの登録状態がＭである場合、ＶＬ３制御部３０７は、Ｌ２リプレース対象データを、仮想キャッシュ空間として割り当てられているローカルメモリの所定のアドレスから読み出す。そして、ＶＬ３制御部３０７は、読み出したＬ２リプレース対象データのストア要求をＨｏｍｅノードに発行する。
【０１３２】
また、Ｌ２リプレース対象データの登録状態がＥまたはＭの場合、ＶＬ３制御部３０７は、Ｈｏｍｅノードに対して、リプレース処理の完了を通知する。キャッシュの一貫性を保持するためである。
【０１３３】
ＶＬ３制御部３０７は、ステップＳ１１１１に移行して処理を終了する（ステップＳ１１１１）。
なお、ステップＳ１１０５において、ＶＬ３タグに登録するデータをクリーンなデータ、すなわち、登録状態がＥまたはＳのデータのみをＶＬ３タグに登録してもよい。これにより、ＶＬ３リプレース処理の簡単化を図ることができる。ただし、リプレース対象データがダーティな場合、必ずステップＳ１１０７およびＳ１１０８の処理を実行する必要がある。
【０１３４】
図１２は、命令実行部３０１からリード要求があった場合のキャッシュ制御を説明するフローチャートである。
例えば、Ｌ１制御部３０３が、Ｌ２制御部３０５に対して、命令実行部３０１からリード要求があったデータのリード要求を発行すると、以下の処理が開始する（ステップＳ１２００）。
【０１３５】
ステップＳ１２０１において、Ｌ２制御部３０５は、Ｌ２キャッシュ３０４に記憶されているデータの中から、Ｌ１制御部３０３が要求するリード対象データを検索する。
例えば、Ｌ２制御部３０５は、Ｌ２キャッシュ３０４内のＬ２タグに登録されているタグの中から、リード対象データのタグと一致するタグを検索する。
【０１３６】
リード対象データのタグと一致するタグが検出された場合、Ｌ２制御部３０５は、「キャッシュヒット」と判断する（Ｓ１２０２  ＮＯ）。この場合、Ｌ２制御部３０５は処理をステップＳ１２０７に移行する。また、リード対象データのタグと一致するタグが検出されない場合、Ｌ２制御部３０５は、「キャッシュミス」と判断する（Ｓ１２０２  ＹＥＳ）。この場合、Ｌ２制御部３０５は処理をステップＳ１２０３に移行する。
【０１３７】
以下、Ｌ２キャッシュ３０４においてキャッシュミスが検出されることを、「Ｌ２キャッシュミス」という。また、Ｌ２キャッシュ３０４においてキャッシュヒットが検出されることを、「Ｌ２キャッシュヒット」という。
【０１３８】
ステップＳ１２０３において、ＶＬ３制御部３０７は、ＶＬ３タグに登録されているタグの中から、リード対象データのタグと一致するタグを検索する。
リード対象データのタグと一致するタグが検出された場合、ＶＬ３制御部３０７は、「キャッシュヒット」と判断する（Ｓ１２０４  ＹＥＳ）。この場合、ＶＬ３制御部３０７は処理をステップＳ１２０５に移行する。また、リード対象データのタグと一致するタグが検出されない場合、ＶＬ３制御部３０７は、「キャッシュミス」と判断する（Ｓ１２０４  ＮＯ）。この場合、ＶＬ３制御部３０７は処理をステップＳ１２０６に移行する。
【０１３９】
以下、ＶＬ３キャッシュにおいてキャッシュミスが検出されることを、「ＶＬ３キャッシュミス」という。また、ＶＬ３キャッシュにおいてキャッシュヒットが検出されることを、「ＶＬ３キャッシュヒット」という。
【０１４０】
ステップＳ１２０５において、ＶＬ３制御部３０７は、リード対象データを、仮想キャッシュ空間として割り当てられているローカルメモリの所定のアドレスから読み出す。具体的な処理は、ステップＳ１１０７の処理と同様である。
【０１４１】
また、ステップＳ１２０６において、ＶＬ３制御部３０７は、Ｈｏｍｅノードにリード要求を発行する。
例えば、ＶＬ３制御部３０７は、リード対象データのタグからＨｏｍｅノードを特定する。また、ＶＬ３制御部３０７は、リード対象データのタグからリード対象データが記憶されている物理アドレスを取得する。そして、ＶＬ３制御部３０７は、取得した物理アドレスに記憶されているリード対象データを特定したＨｏｍｅノードに要求する。
【０１４２】
Ｈｏｍｅノードは、要求元ノードからリード要求を受けると、リード対象データをＨｏｍｅノードのローカルメモリの指定されたアドレスから読み出す。そして、Ｈｏｍｅノードは、読み出したデータを要求元ノードに通知する。
【０１４３】
一方、ステップＳ１２０７において、Ｌ２制御部３０５は、リード対象データをＬ２キャッシュ３０４から読み出す。
ステップＳ１２０８において、ステップＳ１２０５またはＳ１２０６の処理によってリード対象データを取得した場合、ＶＬ３制御部３０７が取得したデータを要求元に送信する。
【０１４４】
要求元が命令実行部３０１の場合、ＶＬ３制御部３０７は、Ｌ２制御部３０５にリード対象データを送信する。同時に、ＶＬ３制御部３０７は、ＶＬ３タグに登録されているリード対象データのタグを無効に設定する。Ｌ２キャッシュ３０４と排他関係を維持するためである。Ｌ２制御部３０５は、リード対象データを命令実行部３０１に送信する。
【０１４５】
また、要求元が他ノードの場合、ＶＬ３制御部３０７は、要求元の他ノードにリード対象データを送信する。
以上の処理が完了すると、ＶＬ３制御部３０７は、ステップＳ１２０９に移行して図１２の処理を終了する。
【０１４６】
ステップＳ１２０８において、ステップＳ１２０７の処理によってリード対象データを取得した場合、Ｌ２制御部３０５がリード対象データを要求元に送信する。
要求元が命令実行部３０１の場合、Ｌ２制御部３０５は、リード対象データを命令実行部３０１に送信する。また、要求元が他ノードの場合、Ｌ２制御部３０５は、要求元の他ノードにリード対象データを送信する。
そして、ＶＬ３制御部３０７は、ステップＳ１２０９に移行して処理を終了する。
【０１４７】
図１３は、Ｈｏｍｅノードから無効化要求を受けた場合のキャッシュ制御を説明するフローチャートである。
例えば、Ｈｏｍｅノードにおいて、ローカルメモリに記憶されているデータ対して、ストア系アクセスが行われてデータが更新された場合を考える。
この場合、Ｈｏｍｅノードは、Ｈｏｍｅノード以外のノードであってストア系アクセスによって更新される前のデータを保持するノードに対して、データの無効化を要求する（ステップＳ１３００）。このデータ無効化要求により、図１３の処理が開始する。
【０１４８】
以下、Ｈｏｍｅノードからデータの無効化要求を受けたノードの処理について説明する。なお、無効化要求の対象となるデータを「無効化対象データ」という。
ステップＳ１３０１において、無効化要求を受けたノードは、Ｈｏｍｅノードからデータの無効化要求を受信する。
【０１４９】
ステップＳ１３０２において、Ｌ２制御部３０５は、Ｌ２キャッシュ３０４に記憶されているデータの中から、無効化対象データを検索する。例えば、Ｌ２制御部３０５は、Ｌ２キャッシュ３０４内のＬ２タグに登録されているタグの中から、無効化対象データのタグと一致するタグを検索する。
【０１５０】
タグ検索の結果、ステップＳ１３０３において、Ｌ２制御部３０５は、Ｌ２キャッシュミスを検出すると、処理をステップＳ１３０４に移行する（ステップＳ１３０３  ＹＥＳ）。また、Ｌ２制御部３０５は、タグ検索の結果からＬ２キャッシュヒットを検出すると、処理をステップＳ１３０７に移行する（ステップＳ１３０３  ＮＯ）。
【０１５１】
ステップＳ１３０４において、ＶＬ３制御部３０７は、ＶＬ３タグに登録されているタグの中から、無効化対象データのタグと一致するタグを検索する。
タグ検索の結果、ステップＳ１３０５において、ＶＬ３制御部３０７は、ＶＬ３キャッシュヒットを検出すると、処理をステップＳ１３０６に移行する（ステップＳ１３０５  ＹＥＳ）。また、ＶＬ３制御部３０７は、タグ検索の結果からＶＬ３キャッシュミスを検出すると、処理をステップＳ１３０８に移行する（ステップＳ１３０５  ＮＯ）。
【０１５２】
ステップＳ１３０６において、ＶＬ３制御部３０７は、ＶＬ３タグに登録されているタグのうち、無効化対象アドレスと一致するタグを無効に設定する。
タグを無効に設定する場合、例えば、図６に示したＳＶＳＬ［７：０］の状態Ｉを設定する領域にデータＳＴＳ［１：０］＝００（２進数）を設定すればよい。
【０１５３】
一方、ステップＳ１３０７において、Ｌ２制御部３０５は、Ｌ２タグに登録されているタグのうち、無効化対象アドレスと一致するタグを無効に設定する。無効化の設定処理は、ステップＳ１３０６と同様である。
【０１５４】
ステップＳ１３０８において、ステップＳ１３０６またはＳ１３０７の処理により、無効化対象データの無効化の設定が完了すると、Ｌ２制御部３０５またはＶＬ３制御部３０７は、Ｈｏｍｅノードにデータの無効化が完了した旨を通知する完了応答を発行する。そして、Ｌ２制御部３０５またはＶＬ３制御部３０７は、ステップＳ１３０９に移行して処理を終了する。
【０１５５】
図１４は、任意のノードがＨｏｍｅノードからムーブアウト要求を受けた場合のキャッシュ制御を説明するフローチャートである。
例えば、ムーブアウト要求を受けたノードが、リモートメモリ上のデータを排他型で取得する。その後、Ｈｏｍｅノードにおいて、任意の装置から本ノードが排他型で取得したデータについてリード要求等のアクセスがあると、Ｈｏｍｅノードは、本ノードに対してムーブアウト要求を送信する（ステップＳ１４００）。キャッシュの一貫性を保持するためである。
【０１５６】
なお、データが排他型とは、データが図５に示した状態Ｅまたは状態Ｍに保持されるデータのことをいう。
ステップＳ１４０１において、本ノードは、Ｈｏｍｅノードからムーブアウト要求を受信する。
【０１５７】
以下、ムーブアウト処理が要求されたデータを「ムーブアウト対象データ」という。
ステップＳ１４０２において、Ｌ２制御部３０５は、Ｌ２キャッシュ３０４に記憶されているデータの中から、ムーブアウト対象データを検索する。例えば、Ｌ２制御部３０５は、Ｌ２タグに登録されているタグの中から、ムーブアウト対象データのタグと一致するタグを検索する。
【０１５８】
ステップＳ１４０３において、Ｌ２制御部３０５は、Ｌ２キャッシュミスを検出すると、処理をステップＳ１４０４に移行する（ステップＳ１４０３  ＹＥＳ）。また、Ｌ２制御部３０５は、Ｌ２キャッシュヒットを検出すると、処理をステップＳ１４０７に移行する（ステップＳ１４０３  ＮＯ）。
【０１５９】
ステップＳ１４０４において、ＶＬ３制御部３０７は、ＶＬ３タグに登録されているタグの中から、ムーブアウト対象データのタグと一致するタグを検索する。
ステップＳ１４０５において、ＶＬ３制御部３０７は、ＶＬ３キャッシュヒットを検出すると、処理をステップＳ１４０６に移行する（ステップＳ１４０５  ＹＥＳ）。また、ＶＬ３制御部３０７は、ＶＬ３キャッシュミスを検出すると、処理をステップＳ１４０９に移行する（ステップＳ１４０５  ＮＯ）。
【０１６０】
ステップＳ１４０６において、ＶＬ３制御部３０７は、ムーブアウト対象データを、仮想キャッシュ空間として割り当てられているローカルメモリの所定のアドレスから読み出す。具体的な処理は、ステップＳ１１０７の処理と同様である。
【０１６１】
一方、ステップＳ１４０７において、Ｌ２制御部３０５は、ムーブアウト対象データを、Ｌ２キャッシュ３０４から読み出す。
ステップＳ１４０８において、ステップＳ１４０６またはＳ１４０７の処理によってムーブアウト対象データを取得すると、Ｌ２制御部３０５またはＶＬ３制御部３０７は、Ｈｏｍｅノードに対してデータ応答を発行する。
【０１６２】
同時に、Ｌ２制御部３０５またはＶＬ３制御部３０７は、ムーブアウト対象データをＨｏｍｅノードに送信する。そして、Ｌ２制御部３０５またはＶＬ３制御部３０７は、ステップＳ１４１０に移行して処理を終了する。
【０１６３】
一方、ステップＳ１４０９において、ＶＬ３制御部３０７は、エラーが発生したと判断する。そして、ＶＬ３制御部３０７は、Ｈｏｍｅノードに対してエラーが発生した旨のエラー報告を通知する。
【０１６４】
Ｈｏｍｅノードへのエラー報告が完了すると、ＶＬ３制御部３０７は、処理をステップＳ１４１０に移行する。そして、ＶＬ３制御部３０７は、処理を終了する。
以上に説明したように、ＶＬ３制御部３０７は、ＶＬ３キャッシュ３０６に設けたＶＬ３タグと同一ノード内に備わるローカルメモリＭＥＭ０とを用いて、仮想的に３次キャッシュを実現する。
【０１６５】
そして、ＶＬ３制御部３０７は、リモートメモリから取得したデータがリプレース処理によりＬ２キャッシュ３０４から追い出されると、その追い出されたデータを仮想的に実現した３次キャッシュに一時的に保持する。
【０１６６】
したがって、Ｌ２キャッシュ３０４から追い出したデータが再度必要となった場合、Ｌ２制御部３０５は、同一ノード内に仮想的に設けられた３次キャッシュから取得することが可能となる。
【０１６７】
その結果、Ｌ２制御部３０５は、改めてリモートメモリからデータを取得することを要しないので、リモートメモリに対するアクセスで生じるレイテンシを削減することが可能となる。すなわち、リモートメモリに対するアクセスで生じるレイテンシを改善することが可能となる。
【０１６８】
また、本実施例では、仮想的に３次キャッシュを実現するためには、ＶＬ３タグを記憶するＶＬ３キャッシュ３０６のみを実装すればよい。実際のデータは、仮想キャッシュ空間に割り当てられたローカルメモリに記憶されるからである。このため、従来のキャッシュに比べて巨大な容量を確保することが可能となる。
【０１６９】
また、本実施例では、Ｈｏｍｅノードからデータの無効化要求を受けると、ＶＬ３制御部３０７は、ＶＬ３タグに登録されている無効化対象データのタグを無効に設定する。これにより、他ノードのキャッシュとのキャッシュの一貫性を保持することが可能となる。
【０１７０】
同様に、本実施例では、Ｈｏｍｅノードからムーブアウト要求を受けると、ＶＬ３制御部３０７は、ＶＬ３タグを登録されているムーブアウト対象データのタグを無効に設定する。そして、ＶＬ３制御部３０７は、ムーブアウト対象データを仮想キャッシュ空間に割り当てられたローカルメモリから読み出してＨｏｍｅノードに出力する。これにより、他ノードのキャッシュとのキャッシュの一貫性を保持することが可能となる。
【０１７１】
以上から、本実施例に係るキャッシュ制御装装置を、ｃｃＮＵＭＡ方式によりキャッシュコヒーレンス制御を行う情報処理装置１００に備えることにより、ローカルメモリへのアクセスと、リモートメモリへのアクセスと、のいずれについても低レイテンシを実現することが可能となる。
【０１７２】
上述したキャッシュ制御装置によると、第１のキャッシュ制御部は、新たな情報を記憶する領域を確保するために第１のキャッシュ情報を出力して第１のキャッシュから追い出しても、同一ノードである第２のノードに含まれる第２のメモリから第１のキャッシュ情報を取得できる。
【０１７３】
すなわち、第１のキャッシュ制御部は、第１のキャッシュ情報を第１のキャッシュから追い出してしまっても、他ノードである第１のノードに含まれる第１のメモリから改めて取得することを要しない。
【０１７４】
したがって、本キャッシュ制御装置は、他ノードに含まれる第１のメモリから改めて第１のキャッシュ情報を取得することが原因で生じるレイテンシを削減することが可能となる。
【０１７５】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
第１のノードに含まれる第１のメモリを共有する第２のノードが有するキャッシュ制御装置において、
前記第１のメモリ内の情報を記憶する第１のキャッシュに記憶されている第１のキャッシュ情報を前記第１のキャッシュから出力して、新たな情報を記憶する領域を前記第１のキャッシュに確保する第１のキャッシュ制御部と、
前記第１のキャッシュ情報を、第２のメモリに記憶するとともに、前記第１のキャッシュ情報の管理情報を、前記第２のメモリの所定の領域と対応付けられた管理情報であって該対応付けられた領域に記憶されている情報を管理する管理情報を記憶する第２のキャッシュに記憶し、前記第１のキャッシュ制御部の要求に応じて、該要求された情報の管理情報と対応付けられた前記第２のメモリの領域から情報を読み出して前記第１のキャッシュ制御部に出力する第２のキャッシュ制御部と、
を備えるキャッシュ制御装置。
（付記２）
前記管理情報は、前記第１のキャッシュ情報が記憶されている前記第１のメモリの領域を表すアドレス情報と、該第１のキャッシュ情報の登録状態に関する情報と、の少なくとも一方を含む情報である、
ことを特徴とする付記１に記載のキャッシュ制御装置。
（付記３）
前記第２のキャッシュ制御部は、前記第２のキャッシュに記憶されている管理情報を取り出して新たな管理情報を記憶する領域を確保し、該取り出した管理情報と対応付けられた前記第２のメモリの領域から情報を読み出し、該読み出した情報を前記第１のキャッシュに記憶するように前記第１のノードに要求する、
ことを特徴とする付記１に記載のキャッシュ制御装置。
（付記４）
前記第２のキャッシュ制御部は、所望の情報について要求を受けると、前記第２のキャッシュに記憶されている管理情報から、前記所望の情報の管理情報を検索し、前記第２のキャッシュに前記所望の情報の管理情報を検出すると、該検出した管理情報と対応付けられた前記第２のメモリの領域から情報を読み出し、該読み出した情報を前記要求元に出力することを特徴とする付記１に記載のキャッシュ制御装置。
（付記５）
前記第２のキャッシュ制御部は、前記第２のキャッシュに前記所望の情報の管理情報が検出されない場合、前記所望の情報を前記第１のノードに属する第１のＣＰＵに要求し、該第１のＣＰＵから受信した情報を前記要求元に出力することを特徴とする付記１に記載のキャッシュ制御装置。
（付記６）
前記第２のキャッシュ制御部は、前記第１のノードから前記第２のメモリに記憶されている情報を無効にする無効化要求を受けると、該無効化要求の対象情報の管理情報を無効に設定することを特徴とする付記１に記載のキャッシュ制御装置。
（付記７）
前記第２のキャッシュ制御部は、前記第１のノードから前記第２のメモリに他のノードと排他的に記憶されている情報を移動させるリプレース要求を受けると、該リプレース要求の対象情報の管理情報を、前記第２のキャッシュに記憶されている管理情報から検索し、前記第２のキャッシュに前記リプレース要求の対象情報の管理情報を検出すると、該検出した管理情報と対応付けられた前記第２のメモリの領域から情報を読み出し、該読み出した情報を前記第１のノードに通知することを特徴とする付記１に記載のキャッシュ制御装置。
（付記８）
第１のノードに含まれる第１のメモリを共有する第２のノードが有するキャッシュ装置において、
前記第１のメモリ内の情報を記憶する第１のキャッシュと、
前記第１のキャッシュに記憶されていた情報を記憶する第２のメモリと、
該第２のメモリの所定の領域と対応付けられた管理情報であって、該対対応付けられた領域に記憶されている情報を管理する管理情報を記憶する第２のキャッシュと、
前記第１のキャッシュ内の第１のキャッシュ情報を前記第１のキャッシュから出力して、新たな情報を記憶する領域を前記第１のキャッシュに確保する第１のキャッシュ制御部と、
前記第１のキャッシュ情報を前記第２のメモリに記憶するとともに、前記第１のキャッシュ情報の管理情報を前記第２のキャッシュに記憶し、
前記第１のキャッシュ制御部の要求に応じて、該要求された情報の管理情報と対応付けられた前記第２のメモリの領域から情報を読み出して前記第１のキャッシュ制御部に出力する第２のキャッシュ制御部と、
を備えるキャッシュ装置。
（付記９）
前記管理情報は、前記第１のキャッシュ情報が記憶されている前記第１のメモリの領域を表すアドレス情報と、該第１のキャッシュ情報の登録状態に関する情報と、の少なくとも一方を含む情報である、
ことを特徴とする付記８に記載のキャッシュ装置。
（付記１０）
前記第２のキャッシュ制御部は、前記第２のキャッシュに記憶されている管理情報を取り出して新たな管理情報を記憶する領域を確保し、該取り出した管理情報と対応付けられた前記第２のメモリの領域から情報を読み出し、該読み出した情報を前記第１のキャッシュに記憶するように前記第１のノードに要求する、
ことを特徴とする付記８に記載のキャッシュ装置。
（付記１１）
前記第２のキャッシュ制御部は、所望の情報について要求を受けると、前記第２のキャッシュに記憶されている管理情報から、前記所望の情報の管理情報を検索し、前記第２のキャッシュに前記所望の情報の管理情報を検出すると、該検出した管理情報と対応付けられた前記第２のメモリの領域から情報を読み出し、該読み出した情報を前記要求元に出力する、
ことを特徴とする付記８に記載のキャッシュ装置。
（付記１２）
前記第２のキャッシュ制御部は、前記第２のキャッシュに前記所望の情報の管理情報が検出されない場合、前記所望の情報を前記第１のノードに属する第１のＣＰＵに要求し、該第１のＣＰＵから受信した情報を前記要求元に出力する、
ことを特徴とする付記８に記載のキャッシュ装置。
（付記１３）
前記第２のキャッシュ制御部は、前記第１のノードから前記第２のメモリに記憶されている情報を無効にする無効化要求を受けると、該無効化要求の対象情報の管理情報を無効に設定する、
ことを特徴とする付記８に記載のキャッシュ装置。
（付記１４）
前記第２のキャッシュ制御部は、前記第１のノードから前記第２のメモリに他のノードと排他的に記憶されている情報を移動させるリプレース要求を受けると、該リプレース要求の対象情報の管理情報を、前記第２のキャッシュに記憶されている管理情報から検索し、前記第２のキャッシュに前記リプレース要求の対象情報の管理情報を検出すると、該検出した管理情報と対応付けられた前記第２のメモリの領域から情報を読み出し、該読み出した情報を前記第１のノードに通知する、
ことを特徴とする付記８に記載のキャッシュ装置。
（付記１５）
第１のノードに含まれる第１のメモリを共有する第２のノードが有するキャッシュを制御するキャッシュ制御方法において、
前記第１のメモリ内の情報を記憶する第１のキャッシュに記憶されている第１のキャッシュ情報を前記第１のキャッシュから出力して、新たな情報を記憶する領域を前記第１のキャッシュに確保する第１のキャッシュ制御処理を実行し、
前記第１のキャッシュ情報を、第２のメモリに記憶し、
前記第１のキャッシュ情報の管理情報を、前記第２のメモリの所定の領域と対応付けられた管理情報であって該対対応付けられた領域に記憶されている情報を管理する管理情報を記憶する第２のキャッシュに記憶し、
前記第１のキャッシュ制御部の要求に応じて、該要求された情報の管理情報と対応付けられた前記第２のメモリの領域から情報を読み出して前記第１のキャッシュ制御部に出力する第２のキャッシュ制御処理を実行する、
ことを特徴とするキャッシュ制御方法。
（付記１６）
各々がプロセッサと、前記プロセッサに対応するメモリとを搭載する複数の処理部と、前記複数の処理部を通信可能に接続する接続部とを備え、
前記プロセッサは、
前記メモリから読み出した情報を記憶するキャッシュと、
前記キャッシュを制御するとともに、前記メモリ内に仮想キャッシュを設定し、前記仮想キャッシュを制御する制御部と、
前記仮想キャッシュのタグを記憶する記憶部と、
を備えることを特徴とする情報処理装置。
（付記１７）
前記情報処理装置において、
前記制御部は、前記キャッシュに登録されているデータに対するリプレース処理が行われる場合、前記リプレース処理の対象となるデータのタグを前記記憶部に登録し、前記リプレース処理の対象となるデータを前記メモリ内に設定された仮想キャッシュに登録することを特徴とする情報処理装置。
（付記１８）
前記情報処理装置において、
前記制御部は、前記リプレース処理の対象となるデータが、他プロセッサに対応するメモリ上のデータである場合に、前記リプレース処理の対象となるデータを前記仮想キャッシュに登録することを特徴とする付記１７に記載の情報処理装置。
（付記１９）
前記情報処理装置において、
前記制御部は、
前記キャッシュを制御するキャッシュ制御部と、
前記仮想キャッシュを制御する仮想キャッシュ制御部とを含むことを特徴とする、付記１６に記載の情報処理装置。
【符号の説明】
【０１７６】
１００      情報処理装置
３０１      命令実行部
３０２      Ｌ１キャッシュ
３０３      Ｌ１制御部
３０４      Ｌ２キャッシュ
３０５      Ｌ２制御部
３０６      ＶＬ３キャッシュ
３０７      ＶＬ３制御部３０７
【図１】
2010198490.tif 000003
【図２】
2010198490.tif 000004
【図３】
2010198490.tif 000005
【図９】
2010198490.tif 000006
【図１５】
2010198490.tif 000007
【図１６】
2010198490.tif 000008
【図１７】
2010198490.tif 000009
【図４】
2010198490.tif 000010
【図５】
2010198490.tif 000011
【図６】
2010198490.tif 000012
【図７】
2010198490.tif 000013
【図８】
2010198490.tif 000014
【図１０】
2010198490.tif 000015
【図１１】
2010198490.tif 000016
【図１２】
2010198490.tif 000017
【図１３】
2010198490.tif 000018
【図１４】
2010198490.tif 000019