(57)【要約】【課題】メインメモリとキャッシュメモリを有するプロセッサとをそなえた複数のノードで構成される情報処理装置において、メモリアクセスのレイテンシを短縮するとともに、スヌープ処理のスループットを改善することを目的とする。【解決手段】複数のノードＳＢ０，ＳＢ１のうち少なくとも１つのシステムコントローラ５０−１が、自ノードＳＢ０のメインメモリ３０，３１に存在する主データであって当該主データに対応するキャッシュデータが自ノードＳＢ０以外の複数のノードＳＢ１のキャッシュメモリ１４ａ〜１７ａ，１４ｂ〜１７ｂ内に存在しない主データに関する特定情報を保持する保持部５７−１をそなえている。【選択図】図３
2009223759.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードをそなえ、
該複数のノードが、それぞれ、メインメモリと、キャッシュメモリを有するプロセッサと、該複数のノード間のキャッシュコヒーレンシを保証する制御を行なうシステムコントローラとをそなえた情報処理装置であって、
該複数のノードのうち少なくとも１つの該システムコントローラが、
自ノードの該メインメモリに存在する主データであって当該主データに対応するキャッシュデータが自ノード以外の該複数のノードのキャッシュメモリ内に存在しない該主データに関する特定情報を保持する保持部をそなえることを特徴とする、情報処理装置。
【請求項２】
該保持部をそなえた該システムコントローラが、
自ノードにおいてメモリアクセス要求が発生し、当該メモリアクセス要求の対象データが該保持部に保持された該特定情報に対応する場合に、自ノードにおけるキャッシュコヒーレンシを保証するローカルスヌープ制御を行なうローカルスヌープ制御部をそなえることを特徴とする、請求項１に記載の情報処理装置。
【請求項３】
該保持部をそなえた該システムコントローラが、
該複数のノード間のキャッシュコヒーレンシを保証するグローバルスヌープ制御を行なうグローバルスヌープ制御部と、
自ノードにおいて発生したメモリアクセス要求を受信した場合に、当該メモリアクセス要求を該ローカルスヌープ制御部に送信し、該グローバルスヌープ制御の実行を要求するグローバルスヌープ要求を該ローカルスヌープ制御部から受信した場合に、当該グローバルスヌープ要求を、該グローバルスヌープ制御部に送信するリクエスト送受信部とをそなえることを特徴とする、請求項２に記載の情報処理装置。
【請求項４】
該ローカルスヌープ制御部は、該メモリアクセス要求の対象データが該保持部に保持された該特定情報に対応しない場合に、該グローバルスヌープ要求を該リクエスト送受信部に送信することを特徴とする、請求項３に記載の情報処理装置。
【請求項５】
該グローバルスヌープ制御部は、該グローバルスヌープ制御を行なった結果、自ノードの該メインメモリ内に存在する主データに対応するキャッシュデータが自ノード以外の該複数のノードのキャッシュメモリに存在しないと判定した場合に、当該主データに関する特定情報を該保持部に保持させることを特徴とする、請求項３または請求項４に記載の情報処理装置。
【請求項６】
該グローバルスヌープ制御部は、自ノード以外の該複数のノードのいずれかにおいてメモリアクセス要求が発生し、当該メモリアクセス要求の対象データが、自ノードのメインメモリに存在する主データであって該保持部に保持された該特定情報に対応する該主データである場合に、該メモリアクセス要求に対する応答処理が確定すると、当該主データに対応する該保持部に保持された該特定情報を無効状態にすることを特徴とする、請求項３〜５のいずれか１項に記載の情報処理装置。
【請求項７】
該保持部は、該プロセッサが１回の処理で読み出し可能なデータサイズのアドレス情報を該特定情報として保持することを特徴とする、請求項１〜６のいずれか１項に記載の情報処理装置。
【請求項８】
該保持部をそなえた該システムコントローラが、
該保持部に保持された該特定情報とは異なる特定情報である拡張特定情報を生成する拡張特定情報生成部をそなえ、
該グローバルスヌープ制御部は、該拡張特定情報生成部で生成された該拡張特定情報について該グローバルスヌープ制御を行なった結果、該拡張特定情報に対応する主データが自ノードの該メインメモリ内に存在し、且つ、該拡張特定情報に対応するキャッシュデータが自ノード以外の該複数のノードのキャッシュメモリに存在しないと判定した場合に、該拡張特定情報を該保持部に保持させることを特徴とする、請求項５に記載の情報処理装置。
【請求項９】
複数のノードが、それぞれ、メインメモリと、キャッシュメモリを有するプロセッサと、該複数のノード間のキャッシュコヒーレンシを保証する制御を行なうシステムコントローラとをそなえた情報処理装置のメモリ制御方法であって、
該複数のノードのうちのいずれかにおいて、
自ノードにおいて発生したメモリアクセス要求を受信するメモリアクセス要求受信ステップと、
該メモリアクセス要求受信ステップにおいて該メモリアクセス要求を受信すると、自ノードの該メインメモリ内に存在する主データであって当該主データに対応するキャッシュデータが自ノード以外の該複数のノードのキャッシュメモリ内に存在しない該主データに関する特定情報を保持する保持部にアクセスするアクセスステップと、
該受信ステップにおいて受信した該メモリアクセス要求の対象データが該保持部に保持された該特定情報に対応する場合に、自ノードにおけるキャッシュコヒーレンシを保証するローカルスヌープ制御を行なうローカルスヌープ制御ステップとをそなえることを特徴とする、メモリ制御方法。
【請求項１０】
メインメモリと、キャッシュメモリを有するプロセッサとをそなえたメモリ制御装置であって、
当該メモリ制御装置と他のメモリ制御装置との間のキャッシュコヒーレンシを保証する制御を行なうシステムコントローラをそなえ、
該システムコントローラが、
当該メモリ制御装置の該メインメモリに存在する主データであって当該主データに対応するキャッシュデータが該他のメモリ制御装置のキャッシュメモリ内に存在しない該主データに関する特定情報を保持する保持部をそなえることを特徴とする、メモリ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリを有する複数のCentral Processing Unit（ＣＰＵ）で構成される情報処理装置において、ＣＰＵから発行されたメモリアクセス要求を実行するための技術に関する。
【背景技術】
【０００２】
一般に、複数のＣＰＵ及びInput/Output（Ｉ／Ｏ）装置（入出力装置）等を装備した大規模な情報処理装置（例えば、大規模ＳＭＰ（Symmetric Multiple Processor）情報処理装置）では、処理性能の向上のため、キャッシュメモリを有するＣＰＵとシステムコントローラとＩ／Ｏ装置とを搭載したシステムボードが複数そなえられている。
このような大規模な情報処理装置においては、各システムボード間のキャッシュコヒーレンシを保証する制御（コヒーレンス制御）が行なわれる。そのため、システムボードを跨いだシステムコントローラ間でリクエストのブロードキャストやスヌープ結果の通信が行なわれる（例えば、下記特許文献１，２参照）。
【０００３】
しかしながら、大規模な情報処理装置では、装置の構成が大きくなるにつれて各システムコントローラ間の物理的な距離が伸びることになる。そして、装置の構成を拡張した場合には、メモリアクセスのレイテンシが増加し、情報処理装置全体としての性能を向上させるという効果が得られ難いことになる。又、ＣＰＵやＩ／Ｏ装置の搭載数を拡張することによりスヌープ要求が増加し、これに伴って、ブロードキャストバスやスヌープ制御部のスループットを十分に確保することも困難となる。
【０００４】
そこで、従来では、例えば、同一システムボード内に搭載される複数のＣＰＵのうち、任意のＣＰＵ内のキャッシュメモリに対象アドレスのデータが存在した場合、システムボードを跨ぐスヌープ処理を省略してローカルシステムボード内でのＣＰＵ間データ通信を起動することにより、アクセスレイテンシを短縮する技術が知られている。
図１２は従来の大規模な情報処理装置１００の構成を示すブロック図である。この図１２に示すように、従来の大規模な情報処理装置１００は、複数（ここでは、２つ）のシステムボード（ノード）Ａ，Ｂをそなえている。そして、システムボードＡは、ＣＰＵ１０，１１、Ｉ／Ｏ装置２０，２１、及びメインメモリ３０，３１をそなえて構成されている。又、システムボードＢは、ＣＰＵ１２，１３、Ｉ／Ｏ装置２２，２３、及びメインメモリ３２，３３をそなえて構成されている。
【０００５】
なお、例えば、各ＣＰＵ１０〜１３は、それぞれ、複数階層（ここでは２階層）のキャッシュメモリをそなえて構成されている。具体的には、ＣＰＵ１０が１次キャッシュメモリ１０ａ及び２次キャッシュメモリ１０ｂを、ＣＰＵ１１が１次キャッシュメモリ１１ａ及び２次キャッシュメモリ１１ｂをそれぞれそなえている。又、ＣＰＵ１２が１次キャッシュメモリ１２ａ及び２次キャッシュメモリ１２ｂを、ＣＰＵ１３が１次キャッシュメモリ１３ａ及び２次キャッシュメモリ１３ｂをそれぞれそなえている。
【０００６】
また、システムボードＡには、システムボードＡに装備された記憶部（ここでは、１次キャッシュメモリ１０ａ，１１ａ、２次キャッシュメモリ１０ｂ，１１ｂ、及びメインメモリ３０，３１）に対する通信制御を行なうシステムコントローラ４０−１がそなえられている。一方、システムボードＢには、システムボードＢに装備された記憶部（ここでは、１次キャッシュメモリ１２ａ，１３ａ、２次キャッシュメモリ１２ｂ，１３ｂ、及びメインメモリ３２，３３）との通信制御を行なうシステムコントローラ４０−２がそなえられている。
【０００７】
このように、システムコントローラ４０−１，４０−２は、情報処理装置１００にそなえられた複数の記憶部（ここでは、１次キャッシュメモリ１０ａ〜１３ａ、２次キャッシュメモリ１０ｂ〜１３ｂ、メインメモリ３０〜３３）に対する通信制御を分担している。又、システムコントローラ４０−１とシステムコントローラ４０−２とでは、通信制御を行なう対象の記憶部が異なるだけで、その構成は同様となっている。なお、これらシステムコントローラ４０−１とシステムコントローラ４０−２とは互いに通信可能に接続されている。
【０００８】
システムコントローラ４０−１は、キャッシュＴＡＧ４６−１、リクエスト送受信部４１−１、ローカルスヌープ制御部４２−１、ブロードキャスト制御部４３−１、グローバルスヌープ制御部４４−１、及びメモリアクセス発行部４５−１をそなえて構成されている。
キャッシュＴＡＧ４６−１は、自ノード（ここでは、システムボードＡ；以下同じ）の配下のキャッシュメモリ（ここでは、１次キャッシュメモリ１０ａ，１１ａ、及び２次キャッシュメモリ１０ｂ，１１ｂ；以下同じ）に存在するキャッシュデータを特定するための特定アドレス情報を登録して保持するものである。
【０００９】
リクエスト送受信部４１−１は、メインメモリ（ローカルメモリという場合もある）に対するメモリアクセス要求を受信するものである。
具体的には、例えば、リクエスト送受信部４１−１は、ＣＰＵ１０においてメモリアクセス要求が発生し、当該メモリアクセス要求に対して応答すべきデータに対するキャッシュミスが１次キャッシュメモリ１０ａ及び２次キャッシュメモリ１０ｂにおいて発生した場合に、ＣＰＵ１０から発行されるメモリアクセス要求（リード要求）を受信する。次に、リクエスト送受信部４１−１は、受信したメモリアクセス要求を後述するローカルスヌープ制御部４２−１に送信する。その後、リクエスト送受信部４１−１は、後述するローカルスヌープ制御部４２−１からグローバルスヌープ要求を受信すると、この受信したグローバルスヌープ要求を後述するブロードキャスト制御部４３−１に送信する。ここで、グローバルスヌープ要求は、メモリアクセス要求のアクセス対象データ（以下、単に対象データという）を情報処理装置１００にそなえられた全てのキャッシュメモリ（ここでは、１次キャッシュメモリ１０ａ〜１３ａ、及び２次キャッシュメモリ１０ｂ〜１３ｂ；以下同じ）から検索させるための指示である。
【００１０】
ローカルスヌープ制御部４２−１は、メモリアクセス要求の対象データを自ノード配下のキャッシュメモリから検索し、自身の検索結果に基づいてメモリアクセス要求に対する動作を確定するものである。
具体的には、ローカルスヌープ制御部４２−１は、メモリアクセス要求をリクエスト送受信部４１−１から受信した場合に、メモリアクセス要求を発行したＣＰＵ１０〜１３に対する応答処理として、メモリアクセス要求の対象データを指定するアクセス対象アドレス情報（以下、単に対象アドレス情報という）を自ノード配下のキャッシュＴＡＧ４６−１から検索（スヌープ）するようになっている。
【００１１】
そして、例えば、ローカルスヌープ制御部４２−１は、検索の結果、メモリアクセス要求が自ノード配下のキャッシュＴＡＧ４６−１においてヒットした場合には、この検索結果に基づいて、メモリアクセス要求に対する動作を確定する。なお、メモリアクセス要求に対する動作とは、メインメモリ内データへのリード要求やＣＰＵへのキャッシュメモリ内データに対するパージ要求等をいう。又、例えば、ローカルスヌープ制御部４２−１は、検索の結果、メモリアクセス要求が自ノード配下のキャッシュＴＡＧ４６−１においてミスヒットであった場合には、ローカルスヌープ制御をキャンセルするとともに、グローバルスヌープ要求をリクエスト送受信部４１−１に送信する。
【００１２】
ブロードキャスト制御部４３−１は、自ノードのリクエスト送受信部４１−１との間でグローバルスヌープ要求を送受信するとともに、他ノード（ここでは、システムボードＢ；以下同じ）のシステムコントローラ４０−２との間でグローバルスヌープ要求を送受信するものである。
具体的には、ブロードキャスト制御部４３−１は、リクエスト送受信部４１−１からグローバルスヌープ要求を受信した場合には、このグローバルスヌープ要求を後述するグローバルスヌープ制御部４４−１に送信するとともに、他ノードのシステムコントローラ４０−２に対してかかるグローバルスヌープ要求を放送出力（ブロードキャスト）する。又、ブロードキャスト制御部４３−１は、他ノードのシステムコントローラ４０−２からグローバルスヌープ要求を受信した場合には、このグローバルスヌープ要求を後述するグローバルスヌープ制御部４４−１に送信する。
【００１３】
グローバルスヌープ制御部４４−１は、対象データを自ノード配下のキャッシュメモリから検索し、検索の結果を他ノード配下のシステムコントローラ４０−２との間で通信し合うことにより、他ノード配下のシステムコントローラにおける検索結果と自身の検索結果とに基づいてメモリアクセス要求に対する動作を確定するものである。
具体的には、グローバルスヌープ制御部４４−１は、グローバルスヌープ要求をブロードキャスト制御部４３−１から受信した場合に、メモリアクセス要求を発行したＣＰＵに対する応答処理として、グローバルスヌープ要求の対象データに対応する対象アドレス情報を自ノード配下のキャッシュＴＡＧ４６−１から検索する。
【００１４】
一方、他ノードのグローバルスヌープ制御部４４−２は、グローバルスヌープ要求を自ノードのブロードキャスト制御部４３−１から他ノードのブロードキャスト制御部４３−２を介して受信した場合に、グローバルスヌープ要求の対象データに対応する対象アドレス情報を他ノード配下のキャッシュＴＡＧ４６−２から検索する。その後、各ノードにおけるグローバルスヌープ制御部４４−１，４４−２が、互いにキャッシュＴＡＧの検索結果（ここでは、グローバルスヌープ制御部４４−１がキャッシュＴＡＧ４６−１の検索結果、グローバルスヌープ制御部４４−２がキャッシュＴＡＧ４６−２の検索結果）を送受信して集約することにより、キャッシュステータスのマージを実行する。自ノードのグローバルスヌープ制御部４４−１は、キャッシュステータスのマージの結果に基づいて、メモリアクセス要求に対する動作を確定する。
【００１５】
例えば、グローバルスヌープ制御部４４−１は、キャッシュステータスのマージの結果、ＣＰＵ１０ａから発行されたメモリアクセス要求の対象データが自ノード配下のメインメモリ３０に存在することが判明した場合には、自ノード配下の後述するメモリアクセス発行部４５−１に対してメモリアクセス要求の発行を行なう。又、例えば、グローバルスヌープ制御部４４−１は、キャッシュステータスのマージの結果、ＣＰＵ１０ａから発行されたメモリアクセス要求の対象データが他ノード配下のＣＰＵ１２に内蔵されたキャッシュメモリ１２ａに存在することが判明した場合には、他ノード配下のＣＰＵ１２ａに対してメモリアクセス要求の発行を行なう。
【００１６】
メモリアクセス発行部４５−１は、ローカルスヌープ制御部４２−１またはグローバルスヌープ制御部４４−１により確定されたメモリアクセス要求に対する動作に基づいて、メモリアクセス要求を実行するものである。
なお、システムコントローラ４０−２にそなえられたキャッシュＴＡＧ４６−２、リクエスト送受信部４１−２、ローカルスヌープ制御部４２−２、ブロードキャスト制御部４３−２、グローバルスヌープ制御部４４−２、及びメモリアクセス発行部４５−２は、通信制御の対象が１次キャッシュメモリ１２ａ，１３ａ、２次キャッシュメモリ１２ｂ，１３ｂ、及びメインメモリ３２，３３である点を除いては、システムコントローラ４０−１のキャッシュＴＡＧ４６−１、リクエスト送受信部４１−１、ローカルスヌープ部４２−１、ブロードキャスト制御部４３−１、グローバルスヌープ制御部４４−１、及びメモリアクセス発行部４５−１のそれぞれと同様のものである。
【００１７】
図１３および図１４は従来の大規模な情報処理装置１００の動作を説明するためのタイムチャートである。
以下、従来の大規模な情報処理装置１００において、情報処理装置１００にそなえられた全てのキャッシュメモリにも存在しないローカルメモリ上のデータにアクセスする場合の動作フローを説明する。
【００１８】
この図１３に示すように、先ず、ＣＰＵ１０からメモリアクセス要求（ここではデータフェッチ要求（図中、“ＦＣＨ−ＲＥＱ”と示す）；以下、フェッチ要求という）が発生し（ｔ１参照）、リクエスト送受信部４１−１が、フェッチ要求をＣＰＵ１０から受信する（ｔ２参照）。次に、ローカルスヌープ制御部４２−１が、かかるフェッチ要求の対象アドレス情報を、自ノード配下のキャッシュＴＡＧ４６−１から検索する（ｔ３参照）。
【００１９】
ローカルスヌープ制御部４２−１は、検索の結果、メモリアクセス要求が自ノード配下のキャッシュＴＡＧ４６−１においてミスヒットであった場合（図中、“結果＝ＭＩＳＳ”と示す）には、ローカルスヌープ制御をキャンセルするとともに、グローバルスヌープ要求をリクエスト送受信部４１−１に送信する。ブロードキャスト制御部４３−１は、グローバルスヌープ要求をローカルスヌープ制御部４２−１からリクエスト送受信部４１−１を介して受信した場合には、このグローバルスヌープ要求をグローバルスヌープ制御部４４−１に送信するとともに（ｔ４参照）、他ノードのシステムコントローラ４０−２に対してかかるグローバルスヌープ要求をブロードキャストする（ｔ５参照）。
【００２０】
自ノードのグローバルスヌープ制御部４４−１は、グローバルスヌープ要求をブロードキャスト制御部４３−１から受信すると、グローバルスヌープ要求の対象データに対応する対象アドレス情報を自ノード配下のキャッシュＴＡＧ４６−１から検索する（ｔ６参照）。一方、他ノードのグローバルスヌープ制御部４４−２は、グローバルスヌープ要求をブロードキャスト制御部４３−１から受信すると、グローバルスヌープ要求の対象データに対応する対象アドレス情報を他ノード配下のキャッシュＴＡＧ４６−２から検索する（ｔ７参照）。その後、各ノードにおけるグローバルスヌープ制御部４４−１，４４−２が、互いにキャッシュＴＡＧ４６−１，４６−２の検索結果を送受信して集約することにより、キャッシュステータスのマージを実行する。グローバルスヌープ制御部４４−１は、キャッシュステータスのマージの結果に基づいて、フェッチ要求に対する最終的な動作を判定して確定する（ｔ８参照）。
【００２１】
ここで、フェッチ要求の対象データがいずれのキャッシュメモリからも検索されずに、グローバルスヌープ制御部４４−１がかかるフェッチ要求に対して対象データに対応する主データを自ノード配下のメインメモリ３０から読み出すことが確定した場合には、メモリアクセス発行部４５−１が、自ノード配下のメインメモリ３０に対して、フェッチ要求に対する読み出し（リード）要求（図中、“ＭＳ−ＲＤ−ＲＥＱ”と示す）を発行する（ｔ９参照）。次に、自ノード配下のメインメモリ３０からシステムコントローラ４０−１へフェッチ要求に対応する主データが読み出される（図中、“ＲＤ”および“ＭＩＤＱ”と示す；ｔ１０参照）。その後、メモリアクセス発行部４５−１が、自ノード配下のメインメモリ３０から読み出した主データをフェッチデータ応答（図中、“ＦＣＨ−ＤＡＴＡ”と示す）としてＣＰＵ１０に対して送信し（ｔ１１参照）、かかるフェッチ要求の実行が完了する（ｔ１２参照）。
【００２２】
次に、従来の大規模な情報処理装置１００において、自ノードのキャッシュメモリに存在するキャッシュデータにアクセスした場合の動作フローを説明する。
この図１４に示すように、先ず、ＣＰＵ１０からフェッチ要求が発生し（ｔ１参照）、リクエスト送受信部４１−１が、フェッチ要求をＣＰＵ１０から受信する（ｔ２参照）。次に、ローカルスヌープ制御部４２−１が、かかるフェッチ要求の対象アドレス情報を、自ノードのキャッシュＴＡＧ４６−１から検索する（ｔ３参照）。
【００２３】
ローカルスヌープ制御部４２−１は、メモリアクセス要求が自ノード配下のキャッシュＴＡＧ４６−１においてヒットした場合（図中、“結果＝ＨＩＴ”と示す）には、この検索結果に基づいて、フェッチ要求に対する最終的な動作を判定して確定する（ｔ４参照）。即ち、ローカルスヌープ制御部４２−１は、グローバルスヌープ制御を省略するのである。
【００２４】
ここで、フェッチ要求の対象データが他ノード配下のＣＰＵ１１に内蔵された１次キャッシュメモリ１１ａに存在することが判明し、ローカルスヌープ制御部４２−１がかかるフェッチ要求に対して対象データに対応するキャッシュデータを１次キャッシュメモリ１１ａから読み出すことが確定した場合には、ローカルスヌープ制御部４２−１が、１次キャッシュメモリ１１ａをそなえたＣＰＵ１１に対して、フェッチ要求に対する読み出し要求（図中、“ＣＰＢＫ−ＲＥＱ”と示す）を発行する（ｔ５参照）。次に、１次キャッシュメモリ１１ａ（ＣＰＵ１１）からシステムコントローラ４０−１へフェッチ要求に対応するキャッシュデータが読み出される（図中、“ＲＤ”および“ＭＩＤＱ”と示す；ｔ６参照）。その後、ローカルスヌープ制御部４２−１が、１次キャッシュメモリ１１ａから読み出したキャッシュデータをフェッチデータ応答（図中、“ＦＣＨ−ＤＡＴＡ”と示す）としてＣＰＵ１０に対して送信し（ｔ７参照）、かかるフェッチ要求の実行が完了する（ｔ８参照）。
【００２５】
このように、従来の大規模な情報処理装置１００では、下記（１）〜（６）の場合にのみ、グローバルスヌープ制御を省略して自ノード配下のメインメモリへのアクセスを起動することができる。
（１）発行されたメモリアクセス要求が命令フェッチ要求であり、この命令フェッチ要求の対象データが、自ノード配下のキャッシュＴＡＧ４６−１において共有型（情報処理装置１００にそなえられた全てのキャッシュメモリのいずれかから対象データを単にフェッチするだけの共有型のフェッチ要求をいう）でヒットした場合。
【００２６】
（２）発行されたメモリアクセス要求が命令フェッチ要求であり、この命令フェッチ要求の対象データが、自ノード配下のキャッシュＴＡＧ４６−１において排他型（情報処理装置１００にそなえられた全てのキャッシュメモリのうち一のキャッシュメモリにのみ対象データが保持されるようにする排他型のフェッチ命令）でヒットした場合。
（３）発行されたメモリアクセス要求が共有型（ｌｏａｄ）フェッチ要求であり、この共有型フェッチ要求の対象データが、自ノード配下のキャッシュＴＡＧ４６−１において共有型でヒットした場合。
【００２７】
（４）発行されたメモリアクセス要求が共有型フェッチ要求であり、この共有型フェッチ要求の対象データが、自ノード配下のキャッシュＴＡＧ４６−１において排他型でヒットした場合。
（５）発行されたメモリアクセス要求が排他型（ｓｔｏｒｅ）フェッチ要求であり、この排他型フェッチ要求の対象データが、自ノード配下のキャッシュＴＡＧ４６−１において排他型でヒットした場合。
【００２８】
（６）発行されたメモリアクセス要求がブロックストア要求であり、このブロックストア要求の対象データが、自ノード配下のキャッシュＴＡＧ４６−１において排他型でヒットした場合。
【特許文献１】特開２００６−７２５０９号公報
【特許文献２】特開２００６−２０２２１５号公報
【発明の開示】
【発明が解決しようとする課題】
【００２９】
上述の如く、従来の手法では、メモリアクセス要求の対象データがローカルキャッシュメモリにヒットした場合にのみ、情報処理装置１００にそなえられた各システムボード間を跨ぐグローバルスヌープ制御を省略して、自ノード配下のＣＰＵ間でのデータ転送を起動させることができる。
しかしながら、上述した従来の手法では、自ノードに搭載されたキャッシュメモリの総容量の範囲しかカバーできない。
【００３０】
また、自ノード配下の全てのキャッシュメモリにミスヒットした場合には、対象データに対応する最新のデータの在処を判定することができない。そのため、この場合においては、複数のシステムボード間を跨ぐグローバルスヌープ制御を行なう必要がある。
従って、グローバルスヌープ処理を省略したアクセスの起動の成功率は十分ではなく、装置の性能向上に大きな効果は得られない場合がある。
【００３１】
本発明は、このような課題に鑑み創案されたもので、メインメモリとキャッシュメモリを有するプロセッサとをそなえた複数のノードで構成される情報処理装置において、メモリアクセスのレイテンシを短縮するとともに、スヌープ処理のスループットを改善することを目的とする。
【課題を解決するための手段】
【００３２】
上記目的を達成するために、開示の情報処理装置は、複数のノードをそなえ、該複数のノードが、それぞれ、メインメモリと、キャッシュメモリを有するプロセッサと、該複数のノード間のキャッシュコヒーレンシを保証する制御を行なうシステムコントローラとをそなえた情報処理装置であって、該複数のノードのうち少なくとも１つの該システムコントローラが、自ノードの該メインメモリに存在する主データであって当該主データに対応するキャッシュデータが自ノード以外の該複数のノードのキャッシュメモリ内に存在しない該主データに関する特定情報を保持する保持部をそなえている。
【００３３】
また、開示のメモリ制御方法は、複数のノードが、それぞれ、メインメモリと、キャッシュメモリを有するプロセッサと、該複数のノード間のキャッシュコヒーレンシを保証する制御を行なうシステムコントローラとをそなえた情報処理装置のメモリ制御方法であって、該複数のノードのうちのいずれかにおいて、自ノードにおいて発生したメモリアクセス要求を受信するメモリアクセス要求受信ステップと、該メモリアクセス要求受信ステップにおいて該メモリアクセス要求を受信すると、自ノードの該メインメモリ内に存在する主データであって当該主データに対応するキャッシュデータが自ノード以外の該複数のノードのキャッシュメモリ内に存在しない該主データに関する特定情報を保持する保持部にアクセスするアクセスステップと、該受信ステップにおいて受信した該メモリアクセス要求の対象データが該保持部に保持された該特定情報に対応する場合に、自ノードにおけるキャッシュコヒーレンシを保証するローカルスヌープ制御を行なうローカルスヌープ制御ステップとをそなえている。
【００３４】
さらに、開示のメモリ制御装置は、メインメモリと、キャッシュメモリを有するプロセッサとをそなえたメモリ制御装置であって、当該メモリ装置と他のメモリ装置との間のキャッシュコヒーレンシを保証する制御を行なうシステムコントローラをそなえ、該システムコントローラが、当該メモリ装置の該メインメモリに存在する主データであって当該主データに対応するキャッシュデータが該他のメモリ装置のキャッシュメモリ内に存在しない該主データに関する特定情報を保持する保持部をそなえている。
【発明の効果】
【００３５】
開示の技術によれば、以下の少なくともいずれか１つの効果ないし利点がある。
（１）グローバルスヌープ制御を省略して複数のノード間のキャッシュコヒーレンシを保証することができる。
（２）グローバルスヌープ制御を省略可能な条件を従来よりも拡大することができる。
（３）情報処理装置においてのメモリアクセスのレイテンシを短縮し、スヌープ処理のスループットを改善することができる。
【００３６】
（４）情報処理装置においてのブロードキャストバスとグローバルスヌープ処理のビジー率を改善することができる。
（５）情報処理装置の性能を向上させることができる。
（６）既存の情報処理装置に保持部を容易に実装することができる。
【発明を実施するための最良の形態】
【００３７】
以下、図面を参照しながら本発明の実施の形態について説明する。
〔１〕本発明の一実施形態について
図１は本発明の一実施形態としての情報処理装置の全体構成を示すブロック図である。
本発明の一実施形態としての情報処理装置１は、大規模ＳＭＰ情報処理装置である。この情報処理装置１は、図１に示すように、複数個（図１に示す例では４個）のクロスバ・スイッチＸＢ０〜ＸＢ３と複数個（図１に示す例では１６個）のシステムボード（ノード；メモリ制御装置）ＳＢ０〜ＳＢ１５をそなえている。これらのクロスバ・スイッチＸＢ０〜ＸＢ３は、各システムボードＳＢ０〜ＳＢ１５に接続されることにより、システム全体の接続を制御するようになっている。
【００３８】
システムボードＳＢ０〜ＳＢ１５は、それぞれ、筐体、ボード、チップ等の物理境界（物理空間）によって隔てられた複数の区画（ノード）で区切られている。従って、１つのシステムボードが、情報処理装置１における処理能力の増設単位である１ノードとなる。
ここで、本発明の一実施形態としての情報処理装置及びローカルスヌープ制御方法の詳細について、システムボードＳＢ０，ＳＢ１を例に説明する。
【００３９】
図２は本発明の一実施形態としての情報処理装置におけるシステムボードの構成を示すブロック図、図３はそのシステムボードの詳細な構成を示すブロック図、図４はそのシステムシステムコントローラの構成を示すブロック図である。
例えば、システムボードＳＢ０は、図２および図３に示すように、複数（ここでは４つ）のＣＰＵ（プロセッサ）１０〜１３、複数（ここでは２つ）のＩ／Ｏ装置（入出力装置）２０，２１、複数（ここでは２つ）のメインメモリ３０，３１、及びシステムコントローラ５０−１をそなえて構成されている。又、システムボードＳＢ１は、図３に示すように、複数（ここでは４つ）のＣＰＵ１４〜１７、複数（ここでは２つ）のＩ／Ｏ装置２２，２３、複数（ここでは２つ）のメインメモリ３２，３３、及びシステムコントローラ５０−２をそなえて構成されている。
【００４０】
なお、例えば、各ＣＰＵ１０〜１７は、それぞれ、複数階層（ここでは２階層）のキャッシュメモリをそなえて構成されている。具体的には、ＣＰＵ１０が１次キャッシュメモリ（キャッシュメモリ）１０ａ及び２次キャッシュメモリ（キャッシュメモリ）１０ｂを、ＣＰＵ１１が１次キャッシュメモリ１１ａ及び２次キャッシュメモリ１１ｂを、ＣＰＵ１２が１次キャッシュメモリ１２ａ及び２次キャッシュメモリ１２ｂを、ＣＰＵ１３が１次キャッシュメモリ１３ａ及び２次キャッシュメモリ１３ｂをそれぞれそなえている。又、ＣＰＵ１４が１次キャッシュメモリ１４ａ及び２次キャッシュメモリ１４ｂを、ＣＰＵ１５が１次キャッシュメモリ１５ａ及び２次キャッシュメモリ１５ｂを、ＣＰＵ１６が１次キャッシュメモリ１６ａ及び２次キャッシュメモリ１６ｂを、ＣＰＵ１７が１次キャッシュメモリ１７ａ及び２次キャッシュメモリ１７ｂをそれぞれそなえている。
【００４１】
なお、以下の説明においては、キャッシュメモリに格納された（存在する）データのことをキャッシュデータという。ここで、キャッシュデータとは、メインメモリに格納された（存在する）主データの写し（メモリの写し）を意味する。
システムコントローラ５０−１，５０−２は、情報処理装置１にそなえられた全てのシステムボードＳＢ０〜ＳＢ１５間のキャッシュコヒーレンシを保証する制御を行なうものである。
【００４２】
なお、情報処理装置１にそなえられた全てのシステムボードには、複数のシステムボードＳＢ０〜ＳＢ１５（図１参照）が含まれるが、以下においては、便宜上、図３に示すシステムボードＳＢ０，ＳＢ１を用いて説明する。
これらのシステムコントローラ５０−１，５０−２は、例えば、バスを介して互いに通信可能に接続され、情報処理装置１にそなえられた複数の記憶部（ここでは、１次キャッシュメモリ１０ａ〜１７ａ、２次キャッシュメモリ１０ｂ〜１７ｂ、メインメモリ３０〜３３）に対する通信制御を分担している。又、システムコントローラ５０−１とシステムコントローラ５０−２とでは、通信制御を行なう対象の記憶部が異なるだけで、その構成は同様となっている。つまり、システムコントローラ５０−１は、ＣＰＵ１０〜１３、Ｉ／Ｏ装置２０，２１、及びメインメモリ３０，３１に対する通信制御を担当する。一方、システムコントローラ５０−２は、ＣＰＵ１４〜１７、Ｉ／Ｏ装置２２，２３、及びメインメモリ３２，３３に対する通信制御を担当する。
【００４３】
また、システムコントローラ５０−１，５０−２は、それぞれ、情報処理装置１にそなえられた各システムボードＳＢ０〜ＳＢ１５間の境界を越えてキャッシュコヒーレンシを保証する制御（コヒーレンス制御）を行なう機構を備えている。ここで、キャッシュコヒーレンシとは、同一の主データに対応する複数のキャッシュメモリに存在する複数のキャッシュデータについて、個別にキャッシュデータのデータ更新を行なった場合でも最新の正しいキャッシュデータにアクセスできるよう保つべきデータの一貫性のことをいう。
【００４４】
システムコントローラ５０−１は、キャッシュＴＡＧ（第１保持部）５２−１、Virtual TAG Expansion（ＶＴＡＧＸ；保持部；第２保持部）５７−１、リクエスト送受信部５１−１、ブロードキャスト制御部５３−１、グローバルスヌープ制御部５４−１、ローカルスヌープ制御部５５−１、及びメモリアクセス発行部５６−１をそなえて構成されている。
【００４５】
キャッシュＴＡＧ５２−１は、自ノード（ローカルシステムボード；ここでは、システムボードＳＢ０；以下同じ）配下のキャッシュメモリ（ここでは、１次キャッシュメモリ１０ａ〜１３ａ、及び２次キャッシュメモリ１０ｂ〜１３ｂ；以下同じ）に存在するキャッシュデータを指定するアドレス情報（特定情報）を登録して保持（記憶）するものである。なお、キャッシュＴＡＧ５２−１は、既知の技術であるので、その詳細な説明を省略する。
【００４６】
ＶＴＡＧＸ５７−１は、自ノード配下のメインメモリ（ローカルメモリ）３０，３１に存在する主データであって当該主データに対応するキャッシュデータが情報処理装置１にそなえられた自ノード以外の全てのノード（図１に示すシステムボードＳＢ１〜ＳＢ１５のことをいう；ここでは、図３に示す他ノードのシステムボードＳＢ１を用いて説明する；以下同じ）のキャッシュメモリ（図１についての図示省略；図３に示す例では、１次キャッシュメモリ１４ａ〜１７ａ、及び２次キャッシュメモリ１４ｂ〜１７ｂ；以下同じ）内に存在しない主データを指定するアドレス情報（特定情報）を登録して保持するものである。即ち、ＶＴＡＧＸ５７−１は、仮想的にローカルキャッシュメモリ空間を拡張しているといえる。
【００４７】
このＶＴＡＧＸ５７−１には、ＣＰＵが１回の処理で読み出し可能なデータサイズのアドレス情報が登録されており、キャッシュメモリのラインサイズ毎に管理されるようになっている。又、ＶＴＡＧＸ５７−１には、アドレス情報の有効状態もしくは無効状態を示すバリッドビット（状態情報）がアドレス情報に対応して登録されている。ここで、バリッドビットが有効状態を示す状態とは、ＶＴＡＧＸ５７−１に登録されたアドレス情報が後述するローカルスヌープ制御部５５−１およびグローバルスヌープ制御部５４−１における検索にヒットしうる状態をいう。一方、バリッドビットが無効状態を示す状態とは、ＶＴＡＧＸ５７−１に登録されたアドレス情報が後述するローカルスヌープ制御部５５−１およびグローバルスヌープ制御部５４−１における検索にヒットしない状態をいう。
【００４８】
また、ＶＴＡＧＸ５７−１は、アドレス境界内で連続する複数のアドレス情報を構成するアドレス情報群をひとまとめにして保持してもよい。これにより、連続する複数ラインのアドレスをＶＴＡＧＸ５７−１において同時に管理することで、Random Access Memory（ＲＡＭ）の使用効率を向上させることができるのである。なお、この場合においては、ＶＴＡＧＸ５７−１には、バリッドビットがアドレス情報群における複数のアドレス情報のそれぞれに対応して個別に登録されている。
【００４９】
リクエスト送受信部５１−１は、ＣＰＵ１０〜１７もしくはＩ／Ｏ装置２０〜２３において発生したメモリアクセス要求やグローバルスヌープ制御の実行を要求するグローバルスヌープ要求を受信するものである。ここで、グローバルスヌープ制御とは、情報処理装置１にそなえられた全てのノード（図１に示すシステムボードＳＢ０〜ＳＢ１５のことをいう；ここでは、図３に示すシステムボードＳＢ０，ＳＢ１を用いて説明する；以下同じ）間のキャッシュコヒーレンシを、各ノードを跨いで保証する制御を行なうことにより、メモリアクセス要求に対する動作を確定することをいう。又、グローバルスヌープ要求は、メモリアクセス要求のアクセス対象データ（以下、単に対象データという）を情報処理装置１にそなえられた全てのノードのキャッシュメモリ（図１についての図示省略；図３に示す例では、１次キャッシュメモリ１０ａ〜１７ａ、及び２次キャッシュメモリ１０ｂ〜１７ｂ；以下同じ）から検索させるための指示である。
【００５０】
このリクエスト送受信部５１−１は、メモリアクセス要求を受信した場合に、当該メモリアクセス要求を後述するローカルスヌープ制御部５５−１に送信する。又、リクエスト送受信部５１−１は、グローバルスヌープ制御の実行を要求するグローバルスヌープ要求を後述するローカルスヌープ制御部５５−１から受信した場合に、当該グローバルスヌープ要求を、後述するグローバルスヌープ制御部５４−１に送信する。
【００５１】
具体的には、例えば、リクエスト送受信部５１−１は、ＣＰＵ１０においてメモリアクセス要求が発生し、当該メモリアクセス要求に対して応答すべきデータに対するキャッシュミスが１次キャッシュメモリ１０ａ及び２次キャッシュメモリ１０ｂにおいて発生した場合に、ＣＰＵ１０から発行されるメモリアクセス要求（リード要求）を受信する。次に、リクエスト送受信部５１−１は、受信したメモリアクセス要求を後述するローカルスヌープ制御部５５−１に送信する。その後、リクエスト送受信部５１−１は、後述するローカルスヌープ制御部５５−１からグローバルスヌープ要求を受信すると、この受信したグローバルスヌープ要求を後述するブロードキャスト制御部５３−１に送信する。
【００５２】
ローカルスヌープ制御部５５−１は、自ノードにおいてメモリアクセス要求が発生し、当該メモリアクセス要求の対象データが自ノード配下のキャッシュＴＡＧ５２−１またはＶＴＡＧＸ５７−１に保持されたアドレス情報に対応する場合に、ローカルスヌープ制御（ローカルスヌープ処理）を行なうものである。ここで、ローカルスヌープ制御とは、自ノードにおけるキャッシュコヒーレンシを保証する制御を行なうことにより、メモリアクセス要求に対する動作を確定することをいう。即ち、ローカルスヌープ制御部５５−１は、上記の場合においては、自ノードであるローカルシステムボード内の閉じた範囲でのみキャッシュコヒーレンシを保証する制御を行なうことで、情報処理装置１にそなえられた全てのノード間のキャッシュコヒーレンシを保証するのである。
【００５３】
また、ローカルスヌープ制御部５５−１は、メモリアクセス要求の対象データが自ノード配下のキャッシュＴＡＧ５２−１に保持されたアドレス情報および自ノード配下のＶＴＡＧＸ５７−１に保持されたアドレス情報のいずれにも対応しない場合に、グローバルスヌープ要求をリクエスト送受信部５１−１に送信するようになっている。
このローカルスヌープ制御部５５−１は、例えば、図４に示すように、リクエストポート部６６−１、リクエスト選択部６７−１、及びパイプライン部６８−１をそなえて構成されている。
【００５４】
リクエストポート部６６−１は、リクエスト送受信部５１−１から受信したリクエスト要求を順次蓄積（保持）するものである。
リクエスト選択部６７−１は、リクエストポート部６６−１に蓄積されたリクエスト要求を選択するものである。
パイプライン部（ローカルスヌープ制御部）６８−１は、リクエスト選択部６７−１で選択されたリクエスト要求の対象データについてローカルスヌープ制御を行なうものである。
【００５５】
具体的には、パイプライン部６８−１は、メモリアクセス要求をリクエスト送受信部５１−１から受信した場合に、メモリアクセス要求を発行したＣＰＵに対する応答処理として、メモリアクセス要求の対象データを特定するためのアクセス対象アドレス情報（以下、単に対象アドレス情報という）を自ノード配下のキャッシュＴＡＧ５２−１およびＶＴＡＧＸ５７−１の双方から検索（スヌープ）するようになっている。
【００５６】
そして、例えば、パイプライン部６８−１は、検索の結果、メモリアクセス要求が自ノード配下のキャッシュＴＡＧ５２−１または自ノード配下のＶＴＡＧＸ５７−１のいずれかにヒットした場合には、この検索結果に基づいて、メモリアクセス要求に対する動作を確定する。即ち、この場合においては、パイプライン部６８−１は、対象データに対応する最新のキャッシュデータが自ノード配下のキャッシュメモリまたはメインメモリに存在することを示す。これにより、パイプライン部６８−１は、自ノード配下のキャッシュメモリ上でキャッシュデータが更新されていないことを保証するのである。なお、メモリアクセス要求に対する動作とは、メインメモリ内データへのリード要求やＣＰＵへのキャッシュメモリ内データに対するパージ要求等をいう。
【００５７】
一方、例えば、パイプライン部６８−１は、検索の結果、メモリアクセス要求が自ノード配下のキャッシュＴＡＧ５２−１および自ノード配下のＶＴＡＧＸ５７−１のいずれにおいてもミスが発生した場合には、ローカルスヌープ制御をキャンセルするとともに、グローバルスヌープ要求をリクエスト送受信部５１−１に送信する。
ブロードキャスト制御部５３−１は、自ノードのリクエスト送受信部５１−１との間でグローバルスヌープ要求を送受信するとともに、情報処理装置１にそなえられた自ノード以外の全てのノードのシステムコントローラ（ここでは、他ノードのシステムコントローラ５０−２を用いて説明する；以下同じ）との間でグローバルスヌープ要求を送受信するものである。
【００５８】
具体的には、ブロードキャスト制御部５３−１は、リクエスト送受信部５１−１からグローバルスヌープ要求を受信した場合には、このグローバルスヌープ要求を後述するグローバルスヌープ制御部５４−１に送信するとともに、他ノードのシステムコントローラ５０−２に対してかかるグローバルスヌープ要求を放送出力（ブロードキャスト）する。従って、ブロードキャスト制御部５３−１は、ローカルスヌープ制御部５５−１で処理不可能と判定されたメモリアクセス要求のみをブロードキャストするのである。
【００５９】
一方、ブロードキャスト制御部５３−１は、他ノードのシステムコントローラ５０−２からグローバルスヌープ要求を受信した場合には、このグローバルスヌープ要求を後述するグローバルスヌープ制御部５４−１に送信する。
グローバルスヌープ制御部５４−１は、グローバルスヌープ制御を行なうものである。このグローバルスヌープ制御部５４−１は、例えば、図４に示すように、リクエストポート部６１−１、リクエスト選択部６２−１、パイプライン部６３−１、通信部６４−１、及び先行登録要求部６５−１をそなえて構成されている。
【００６０】
リクエストポート部６１−１は、ブロードキャスト制御部５３−１から受信したグローバルスヌープ要求を順次蓄積（保持）するものである。
リクエスト選択部６２−１は、リクエストポート部６１−１に蓄積されたグローバルスヌープ要求を選択するものである。
パイプライン部（グローバルスヌープ制御部）６３−１は、リクエスト選択部６２−１で選択されたグローバルスヌープ要求の対象データについてグローバルスヌープ制御を行なうものである。
【００６１】
このパイプライン部６３−１は、グローバルスヌープ要求の対象データを自ノード配下のキャッシュメモリから検索し、検索の結果を他ノードのシステムコントローラ５０−２との間で通信し合うことにより、他ノードのシステムコントローラにおける検索結果と自身の検索結果との総合的な結果に基づいてメモリアクセス要求に対する動作を確定するようになっている。
【００６２】
具体的には、パイプライン部６３−１は、メモリアクセス要求を発行したＣＰＵに対する応答処理として、リクエスト選択部６２−１で選択されたグローバルスヌープ要求の対象データに対応する対象アドレス情報を自ノード配下のキャッシュＴＡＧ５２−１から検索する。
一方、他ノードのグローバルスヌープ制御部（又は、パイプライン部；図示省略）５４−２は、グローバルスヌープ要求を自ノードのブロードキャスト制御部５３−１から他ノードのブロードキャスト制御部５３−２を介して受信した場合に、グローバルスヌープ要求の対象データに対応する対象アドレス情報を他ノード配下のキャッシュＴＡＧ５２−２から検索する。その後、各ノードにおけるパイプライン部６３−１およびグローバルスヌープ制御部５４−２が、互いにキャッシュＴＡＧの検索結果（ここでは、パイプライン部６３−１がキャッシュＴＡＧ５２−１の検索結果、グローバルスヌープ制御部５４−２がキャッシュＴＡＧ５２−２の検索結果）を後述する通信部６４−１を介して送受信して集約することにより、キャッシュステータスのマージを実行する。パイプライン部６３−１は、キャッシュステータスのマージの結果に基づいて、メモリアクセス要求に対する動作を確定する。
【００６３】
例えば、パイプライン部６３−１は、キャッシュステータスのマージの結果、ＣＰＵ１０ａから発行されたメモリアクセス要求の対象データが情報処理装置１にそなえられたいずれのキャッシュメモリにも存在せず、自ノード配下のメインメモリ３０にアクセスすることが判明した場合には、自ノード配下の後述するメモリアクセス発行部５６−１に対してメモリアクセス要求の発行を行なう。又、例えば、パイプライン部６３−１は、キャッシュステータスのマージの結果、ＣＰＵ１０ａから発行されたメモリアクセス要求の対象データが他ノード配下のＣＰＵ１４に内蔵するキャッシュメモリ１４ａに存在することが判明した場合には、その他ノード配下のＣＰＵ１４ａに対してメモリアクセス要求の発行を行なう。
【００６４】
従って、パイプライン部６３−１は、グローバルスヌープ要求をブロードキャスト制御部５３−１から受信した場合に、グローバルスヌープ要求の対象データに対応する対象アドレス情報を自ノード配下のキャッシュＴＡＧ５２−１及び他ノード配下のキャッシュＴＡＧＴＡＧ５２−２から検索するのである。そして、パイプライン部６３−１は、ＣＰＵが自ノード配下のメインメモリ３０，３１にアクセスすることを情報処理装置１の全体に通知して、その応答を受け取ることによって、情報処理装置１全体の範囲でキャッシュコヒーレンシを保証する制御を行なうのである。
【００６５】
また、パイプライン部６３−１は、上述した機能の他、登録部および無効化部として機能するようになっている。
登録部として機能するパイプライン部（以下、登録部という）６３−１は、グローバルスヌープ制御を行なった結果、自ノードのメインメモリ３０，３１内に存在する主データに対応するキャッシュデータが情報処理装置１にそなえられたいずれのノードのキャッシュメモリにも存在しないと判定した場合に、当該主データを指定するアドレス情報をＶＴＡＧＸ５７−１に登録して保持させるようになっている。従って、登録部６３−１は、ＣＰＵがメモリにアクセスすることを情報処理装置１の全体に通知して、その応答を受け取った結果、対象データに対応するキャッシュデータが情報処理装置１にそなえられたいずれのキャッシュメモリにも登録されていないことが判明した場合に、当該対象データに対応する主データを指定するアドレス情報を自ノード配下のＶＴＡＧＸ５７−１に登録するようになっている。即ち、登録部６３−１は、自ノード配下のＣＰＵ（ローカルＣＰＵ）１０〜１３から発行されたメモリアクセス要求が自ノード配下のメインメモリ３０，３１に対応しており、且つ、グローバルスヌープ結果がミスヒットであって自ノード配下のメインメモリ３０，３１へのアクセス起動が確定したときに、当該アドレス情報を自ノード配下のＶＴＡＧＸ５７−１に登録するのである。
【００６６】
なお、本実施形態においては、登録部６３−１は、セットアソシエイティブ方式により、新規登録時に空きエントリが存在しない場合にＷＡＹ間のLeast Recently Used（ＬＲＵ）に従って新規登録エントリを選択してアドレス情報を登録するようになっている。又、登録部６３−１は、登録対象のアドレス情報と同一の有効なエントリが存在する場合であっても、そのエントリに存在するアドレス情報に対する処理を一切行なわず、登録対象のアドレス情報を上書きするようになっている。
【００６７】
無効化部として機能するパイプライン部（以下、無効化部という）６３−１は、情報処理装置１にそなえられた自ノード以外のいずれかのノード（ここでは、システムボードＳＢ１）においてメモリアクセス要求が発生し、当該メモリアクセス要求の対象データが、自ノードのメインメモリ３０，３１に存在する主データであって自ノード配下のＶＴＡＧＸ５７−１に保持されたアドレス情報に対応する主データである場合に、メモリアクセス要求に対する応答処理が確定すると、当該主データに対応する自ノード配下のＶＴＡＧＸ５７−１に保持されたアドレス情報を無効状態にするようになっている。
【００６８】
具体的には、無効化部６３−１は、他ノード配下のＣＰＵ１４〜１７が自ノード配下のメインメモリ３０，３１にアクセスする旨のアクセス要求が情報処理装置１全体に通知されると、このアクセス要求に対応する対象アドレス情報を自ノード配下のＶＴＡＧＸ５７−１に保持されたアドレス情報と照合する。そして、無効化部６３−１は、対象アドレス情報と一致するアドレス情報が自ノード配下のＶＴＡＧＸ５７−１に保持されている場合には、報処理装置１全体の範囲でキャッシュコヒーレンシを保証すべく、当該アドレス情報に対応するバリッドビットを有効状態から無効状態に設定変更する。即ち、無効化部６３−１は、他ノード配下のＣＰＵ（リモートＣＰＵ）１４〜１７からのメモリアクセス要求のアクセス先が自ノード配下のＶＴＡＧＸ５７−１に登録済アドレスのデータである場合に、そのアクセスの実行が確定すると、自ノード配下のＶＴＡＧＸ５７−１の該当エントリを無効化するのである。
【００６９】
通信部６４−１は、パイプライン部６３−１と情報処理装置１にそなえられた自ノード以外の全てのノードのグローバルスヌープ制御部（ここでは、他ノードのグローバルスヌープ制御部５４−２を用いて説明する）との通信を行なうものである。
先行登録要求部（拡張特定情報生成部）６５−１は、ＶＴＡＧＸ５７−１に保持されたアドレス情報とは異なるアドレス情報である先行アドレス情報（拡張特定情報）を生成するものである。
【００７０】
先ず、先行登録要求部６５−１をそなえる理由について説明する。
上述した登録部６３−１により自ノード配下のＣＰＵ（ローカルＣＰＵ）からのフェッチ要求を実行したときのみに当該アドレス情報をＶＴＡＧＸ５７−１に登録した場合、当該アドレス情報に対応する対象データが登録後に一度キャッシュメモリから追い出される。そして、自ノード配下のＣＰＵにより当該アドレス情報に対応する対象データが再アクセスされたときにはじめてＶＴＡＧＸ５７−１にヒットする。そのため、２回目以降のアクセス時にのみ、ＶＴＡＧＸ５７−１にヒットした場合にグローバルスヌープを省略し、レイテンシを短縮することができる。即ち、再利用性のあるデータへの２回目以降のアクセスでは効果的であるが、それ以外のアクセス、例えば、１回目のアクセスについては効果的ではない。
【００７１】
そこで、本実施形態における情報処理装置１は、先行登録要求部６５−１をそなえ、この先行登録要求部６５−１が、登録対象のアドレス情報がＶＴＡＧＸ５７−１に登録された場合に、プログラムにおけるメモリアクセスの連続性を利用して、登録されたアドレス情報の数Ｋｂｙｔｅ先のアドレス情報についてもＶＴＡＧＸ５７−１への先行登録を行なうのである。
【００７２】
次に、先行登録要求部６５−１を用いた先行登録の処理について詳述する。
先ず、先行登録要求部６５−１は、グローバルスヌープ制御の結果、任意のＣＰＵからのアクセス要求が情報処理装置にそなえられた全てのキャッシュメモリでミスヒットであり、当該ＣＰＵへの応答処理として自ノードのローカルメモリへのアクセス起動が確定した場合に、情報処理装置１にそなえられた全てのシステムコントローラにおいて、アクセス要求に対応する対象アドレス情報に所定量（例えば、数Ｋｂｙｔｅ）加算した先行アドレス情報を生成する。なお、ここでは、情報処理装置１にそなえられた全てのシステムコントローラは、システムボードＳＢ０〜ＳＢ１５のそれぞれにそなえられたシステムコントローラ（図示省略）を示している。ここでは、便宜上、情報処理装置１にそなえられた全てのシステムコントローラとして、システムボードＳＢ０にそなえられたシステムコントローラ５０−１を用いて説明するものとする。即ち、先行登録要求部６５−１は、アクセス要求に対応する対象アドレス情報のＶＴＡＧＸ５７−１への登録が成功した場合に、当該対象アドレス情報の後にアクセスされることが推測される先のアドレス情報を先行アドレス情報として生成するのである。又、先行登録要求部６５−１は、生成した先行アドレス情報を順次蓄積（格納）するリクエストポート（先行登録要求ポート；図示省略）をそなえている。
【００７３】
次に、先行登録要求部６５−１は、リクエストポートが使用可能な状態であるときに、生成した先行アドレス情報をリクエストポートにセットする。そして、先行登録要求部６５−１は、リクエストポートに蓄積された先行アドレス情報のうち有効な先行アドレス情報（先行登録用リクエスト）が存在する場合には、この有効な先行アドレス情報をリクエストポート部６１−１へ順次投入する。ここで、有効な先行アドレス情報とは、先行アドレス情報に対応する主データが自ノードのメインメモリ３０，３１内に存在することをいう。即ち、先行登録要求部６５−１は、先行アドレス情報に対応する主データが自ノードのメインメモリ３０，３１内に存在する場合に、この先行アドレス情報を、他ノードからブロードキャストされてきたメモリアクセス要求と共にグローバルスヌープ制御のためのリクエスト選択処理に参加させるのである。
【００７４】
その後、パイプライン部６３−１は、リクエスト選択部６２−１で選択された先行アドレス情報についてグローバルスヌープ制御を実行する。即ち、パイプライン部６３−１は、先行アドレス情報に対応するキャッシュデータが情報処理装置１にそなえられた自ノード以外のいずれかのノードのキャッシュメモリに存在するか否かを検査する。そして、パイプライン部６３−１は、先行アドレス情報についてのグローバルスヌープ制御を実行した結果、情報処理装置１にそなえられた全てのノードのキャッシュＴＡＧにおいてミスヒット（キャッシュミス）であった場合に、その先行アドレス情報を自ノード配下のＶＴＡＧＸ５７−１に登録する。一方、パイプライン部６３−１は、先行アドレス情報についてのグローバルスヌープ制御を実行した結果、情報処理装置１にそなえられたいずれかのノードのキャッシュＴＡＧにおいてヒットした場合には、その先行アドレス情報をＶＴＡＧＸ５７−１に登録せずに、処理を終了する。
【００７５】
従って、パイプライン部６３−１は、先行登録要求部６５−１で生成された先行アドレス情報についてグローバルスヌープ制御を実行した結果、先行アドレス情報に対応する主データが自ノードのメインメモリ３０，３１内に存在し、且つ、先行アドレス情報に対応するキャッシュデータが情報処理装置１にそなえられた自ノード以外の全てのノードのキャッシュメモリに存在しないと判定した場合に、先行アドレス情報を自ノード配下のＶＴＡＧＸ５７−１に登録して保持させるのである。
【００７６】
メモリアクセス発行部５６−１は、ローカルスヌープ制御部５５−１またはグローバルスヌープ制御部５４−１により確定されたメモリアクセス要求に対する動作に基づいて、自ノード配下のメインメモリ３０，３１に対してメモリアクセス要求を実行するものである。
なお、システムコントローラ５０−２にそなえられたキャッシュＴＡＧ５２−２、ＶＴＡＧＸ５７−２、リクエスト送受信部５１−２、ローカルスヌープ制御部５５−２、ブロードキャスト制御部５３−２、グローバルスヌープ制御部５４−２、及びメモリアクセス発行部５６−２は、通信制御の対象が１次キャッシュメモリ１４ａ〜１７ａ、２次キャッシュメモリ１４ｂ〜１７ｂ、及びメインメモリ３２，３３である点を除いては、システムコントローラ５０−１のキャッシュＴＡＧ５２−１、ＶＴＡＧＸ５７−１、リクエスト送受信部５１−１、ローカルスヌープ部５５−１、ブロードキャスト制御部５３−１、グローバルスヌープ制御部５４−１、及びメモリアクセス発行部５６−１のそれぞれと同様のものである。
【００７７】
図５は本発明の一実施形態としての情報処理装置における第１の動作例を説明するためのタイムチャートである。
以下、本発明の一実施形態としての情報処理装置１において、自ノード配下のメインメモリに存在する主データにアクセスする場合であって、当該主データに対応するキャッシュデータが情報処理装置１にそなえられたいずれのキャッシュメモリにも存在せず、且つ、当該主データに対応するアドレス情報がＶＴＡＧＸ５７−１に登録されてない場合の動作フロー（第１の動作例）を説明する。
【００７８】
この図５に示すように、先ず、ＣＰＵ１０からメモリアクセス要求（ここではデータフェッチ要求（図中、“ＦＣＨ−ＲＥＱ”と示す）；以下、フェッチ要求という）が発生し（ｔ１参照）、リクエスト送受信部５１−１が、フェッチ要求をＣＰＵ１０から受信する（ｔ２参照；メモリアクセス要求受信ステップ）。次に、ローカルスヌープ制御部５５−１が、かかるフェッチ要求の対象アドレス情報を、自ノード配下のキャッシュＴＡＧ５２−１及び自ノード配下のＶＴＡＧＸ５７−１から検索する（ｔ３参照；アクセスステップ）。
【００７９】
ローカルスヌープ制御部５５−１は、検索の結果、メモリアクセス要求が自ノード配下のキャッシュＴＡＧ５２−１及び自ノード配下のＶＴＡＧＸ５７−１の双方においてミスヒットであった場合（図中、“結果＝ＭＩＳＳ”と示す）には、ローカルスヌープ制御をキャンセルするとともに、グローバルスヌープ要求をリクエスト送受信部５１−１に送信する。ブロードキャスト制御部５３−１は、グローバルスヌープ要求をローカルスヌープ制御部５５−１からリクエスト送受信部５１−１を介して受信した場合には（グローバルスヌープ要求受信ステップ）、このグローバルスヌープ要求をグローバルスヌープ制御部５５−１に送信するとともに（ｔ４参照）、情報処理装置１にそなえられた自ノード以外の全てのノードのシステムコントローラに対してかかるグローバルスヌープ要求をブロードキャストする（ｔ５参照）。
【００８０】
自ノードのグローバルスヌープ制御部５４−１は、グローバルスヌープ要求をブロードキャスト制御部５３−１から受信すると、グローバルスヌープ要求の対象データに対応する対象アドレス情報を自ノード配下のキャッシュＴＡＧ５２−１から検索する（ｔ６参照）。一方、他ノードのグローバルスヌープ制御部５４−２は、グローバルスヌープ要求をブロードキャスト制御部５３−１から受信すると、グローバルスヌープ要求の対象データに対応する対象アドレス情報を他ノード配下のキャッシュＴＡＧ５２−２から検索する（ｔ７参照）。その後、各ノードにおけるグローバルスヌープ制御部５４−１，５４−２が、互いにキャッシュＴＡＧの検索結果を送受信して集約することにより、キャッシュステータスのマージを実行する。グローバルスヌープ制御部５４−１は、キャッシュステータスのマージの結果に基づいて、フェッチ要求に対する最終的な動作を判定して確定する（ｔ８参照；グローバルスヌープ制御ステップ）。
【００８１】
ここで、フェッチ要求の対象データがいずれのキャッシュメモリからも検索されずに、グローバルスヌープ制御部５４−１がかかるフェッチ要求に対して対象データに対応する主データをメインメモリ３０から読み出すことが確定した場合には、グローバルスヌープ制御部５４−１は、ＶＴＡＧＸ５７−１への登録も確定し、当該主データに対応するアドレス情報をＶＴＡＧＸ５７−１に登録する（ｔ９参照；特定情報登録ステップ）。又、メモリアクセス発行部５６−１が、メインメモリ３０に対して、フェッチ要求に対する読み出し（リード）要求（図中、“ＭＳ−ＲＤ−ＲＥＱ”と示す）を発行する（ｔ１０参照）。次に、メインメモリ３０からシステムコントローラ５０−１へフェッチ要求に対応する主データが読み出される（図中、“ＲＤ→ＭＩＤＱ”と示す；ｔ１１参照）。その後、メモリアクセス発行部５６−１が、メインメモリ３０から読み出した主データをフェッチデータ応答（図中、“ＦＣＨ−ＤＡＴＡ”と示す）としてＣＰＵ１０に対して送信し（ｔ１２参照）、かかるフェッチ要求の実行が完了する（ｔ１３参照）。
【００８２】
図６は本発明の一実施形態としての情報処理装置における第２の動作例を説明するためのタイムチャートである。
以下、本発明の一実施形態としての情報処理装置１において、自ノード配下のメインメモリに存在する主データにアクセスする場合であって、当該主データに対応するアドレス情報がＶＴＡＧＸ５７−１に登録されている場合の動作フロー（第２の動作例）を説明する。
【００８３】
この図６に示すように、先ず、ＣＰＵ１０からフェッチ要求が発生し（ｔ１参照）、リクエスト送受信部５１−１が、フェッチ要求をＣＰＵ１０から受信する（ｔ２参照；メモリアクセス要求受信ステップ）。次に、ローカルスヌープ制御部５５−１が、かかるフェッチ要求の対象アドレス情報を、自ノードのキャッシュＴＡＧ５２−１及び自ノード配下のＶＴＡＧＸ５７−１から検索する（ｔ３参照；アクセスステップ）。
【００８４】
ローカルスヌープ制御部５５−１は、検索の結果、メモリアクセス要求が自ノード配下のキャッシュＴＡＧ５２−１においてミスヒットであり、自ノード配下のＶＴＡＧＸ５７−１においてヒットした場合（図中、“ＶＴＡＧＸ＝ＨＩＴ”及び“結果＝ＨＩＴ”と示す）には、この検索結果に基づいて、フェッチ要求に対する最終的な動作を判定して確定する（ｔ４参照；ローカルスヌープ制御ステップ）。即ち、グローバルスヌープ制御が省略されるのである。
【００８５】
ここで、フェッチ要求の対象データが自ノード配下のいずれのキャッシュメモリにも存在しないことが判明し、ローカルスヌープ制御部５５−１がかかるフェッチ要求に対して対象データに対応する主データをメインメモリ３０から読み出すことが確定した場合には、メモリアクセス発行部５６−１が、メインメモリ３０に対して、フェッチ要求に対する読み出し要求を発行する（ｔ５参照）。次に、メインメモリ３０からシステムコントローラ５０−１へフェッチ要求に対応する主データが読み出される（図中、“ＲＤ→ＤＡＴＡ”と示す；ｔ６参照）。その後、メモリアクセス発行部５６−１が、メインメモリ３０から読み出した主データをフェッチデータ応答（図中、“ＦＣＨ−ＤＡＴＡ”と示す）としてＣＰＵ１０に対して送信し（ｔ７参照）、かかるフェッチ要求の実行が完了する（ｔ８参照）。
【００８６】
図７は本発明の一実施形態としての情報処理装置における第３の動作例を説明するためのタイムチャートである。
以下、本発明の一実施形態としての情報処理装置１において、自ノード配下のメインメモリに存在する主データにアクセスする場合であって、当該主データに対応するアドレス情報がＶＴＡＧＸ５７−１に登録されていないが、当該主データに対応するキャッシュデータが情報処理装置１にそなえられた自ノード以外のいずれかのノードのキャッシュメモリに存在する場合の動作フロー（第３の動作例）を説明する。
【００８７】
この図７に示すように、先ず、ＣＰＵ１０からフェッチ要求が発生し（ｔ１参照）、リクエスト送受信部５１−１が、フェッチ要求をＣＰＵ１０から受信する（ｔ２参照；メモリアクセス要求受信ステップ）。次に、ローカルスヌープ制御部５５−１が、かかるフェッチ要求の対象アドレス情報を、自ノード配下のキャッシュＴＡＧ５２−１及び自ノード配下のＶＴＡＧＸ５７−１から検索する（ｔ３参照；アクセスステップ）。
【００８８】
ローカルスヌープ制御部５５−１は、検索の結果、メモリアクセス要求が自ノード配下のキャッシュＴＡＧ５２−１及び自ノード配下のＶＴＡＧＸ５７−１の双方においてミスヒットであった場合（図中、“ＶＴＧＡＸ＝ＭＩＳＳ”及び“結果＝ＭＩＳＳ”と示す）には、ローカルスヌープ制御をキャンセルするとともに、グローバルスヌープ要求をリクエスト送受信部５１−１に送信する。ブロードキャスト制御部５３−１は、グローバルスヌープ要求をローカルスヌープ制御部５５−１からリクエスト送受信部５１−１を介して受信した場合には（グローバルスヌープ要求受信ステップ）、このグローバルスヌープ要求をグローバルスヌープ制御部５５−１に送信するとともに（ｔ４参照）、他ノードのシステムコントローラに対してかかるグローバルスヌープ要求をブロードキャストする（ｔ５参照）。
【００８９】
自ノードのグローバルスヌープ制御部５４−１は、グローバルスヌープ要求をブロードキャスト制御部５３−１から受信すると、当該グローバルスヌープ要求の対象データに対応する対象アドレス情報を自ノード配下のキャッシュＴＡＧ５２−１から検索する（ｔ６参照）。一方、他ノードのグローバルスヌープ制御部５４−２は、グローバルスヌープ要求をブロードキャスト制御部５３−１から受信すると、当該グローバルスヌープ要求の対象データに対応する対象アドレス情報を他ノード配下のキャッシュＴＡＧ５２−２から検索する（ｔ７参照）。その後、各ノードにおけるグローバルスヌープ制御部５４−１，５４−２が、互いにキャッシュＴＡＧの検索結果を送受信して集約することにより、キャッシュステータスのマージを実行する。グローバルスヌープ制御部５４−１は、キャッシュステータスのマージの結果に基づいて、フェッチ要求に対する最終的な動作を判定して確定する（ｔ８参照；グローバルスヌープ制御ステップ）。
【００９０】
ここで、フェッチ要求の対象データが他ノード（ここでは、システムボードＳＢ１）配下のＣＰＵ１４に内蔵された１次キャッシュメモリ１４ａに存在することが判明し、グローバルスヌープ制御部５４−１がかかるフェッチ要求に対して対象データに対応するキャッシュデータを１次キャッシュメモリ１４ａから読み出すことが確定した場合には、グローバルスヌープ制御部５４−２が、１次キャッシュメモリ１４ａをそなえたＣＰＵ１４に対して、フェッチ要求に対する読み出し要求を発行する（ｔ９参照）。次に、１次キャッシュメモリ１４ａ（ＣＰＵ１４）からシステムコントローラ５０−２へフェッチ要求に対応するキャッシュデータが読み出される（図中、“ＭＯＤＱ”と示す；ｔ１０参照）。そして、システムコントローラ５０−２からシステムコントローラ５０−１へフェッチ要求に対応するキャッシュデータが読み出される（図中、“ＭＩＤＱ”と示す；ｔ１１参照）。その後、グローバルスヌープ制御部５４−２が、１次キャッシュメモリ１４ａから読み出したキャッシュデータをフェッチデータ応答（図中、“ＦＣＨ−ＤＡＴＡ”と示す）としてＣＰＵ１０に対して送信し（ｔ１２参照）、かかるフェッチ要求の実行が完了する（ｔ１３参照）。
【００９１】
図８は本発明の一実施形態としての情報処理装置における第４の動作例を説明するためのタイムチャートである。
以下、本発明の一実施形態としての情報処理装置１において、ＶＴＡＧＸ５７−１への先行登録が成功した場合の動作フロー（第４の動作例）を説明する。
なお、ｔ１〜ｔ１３の動作については、図５を参照しながら前述した第１の動作例と同様であるので、その説明を省略する。
【００９２】
この図８に示すように、グローバルスヌープ制御部５４−１がＶＴＡＧＸ５７−１への登録を確定した場合には（特定情報登録ステップ）、先行登録要求部６５−１は、先行登録要求を開始する（ｔ９参照）。先行登録要求部６５−１は、アクセス要求に対応する対象アドレス情報に数Ｋｂｙｔｅ加算した先行アドレス情報を生成する（ｔ１４参照；拡張特定情報生成ステップ）。又、情報処理装置１にそなえられた全ての先行登録要求部（ここでは、システムボードＳＢ１にそなえられたシステムコントローラ５０−１を例に説明する；図示省略）についても、上記先行登録要求部６５−１と同様に、アクセス要求に対応する対象アドレス情報に数Ｋｂｙｔｅ加算した先行アドレス情報を生成する（ｔ１５参照；拡張特定情報生成ステップ）。
【００９３】
次に、各グローバルスヌープ制御部は、先行登録要求部６５−１で生成された先行アドレス情報についてグローバルスヌープ制御を実行する（ｔ１６，ｔ１７参照）。即ち、自ノードのグローバルスヌープ制御部５４−１は、先行登録要求部６５−１で生成された先行アドレス情報を自ノード配下のキャッシュＴＡＧ５２−１から検索する（ｔ１６参照）。一方、他ノードのグローバルスヌープ制御部５４−２は、自ノードと同一の先行アドレス情報を他ノード配下のキャッシュＴＡＧ５２−２から検索する（ｔ１７参照）。そして、各ノードにおけるグローバルスヌープ制御部５４−１，５４−２が、互いにキャッシュＴＡＧの検索結果を送受信して集約することにより、キャッシュステータスのマージを実行する。グローバルスヌープ制御部５４−１は、キャッシュステータスのマージの結果に基づいて、先行アドレス情報を自ノード配下のＶＴＡＧＸ５７−１に登録するか否かを確定する（ｔ１８参照；拡張特定情報登録ステップ）。
【００９４】
ここで、グローバルスヌープ制御部５４−１は、先行アドレス情報についてのグローバルスヌープ制御を実行した結果が全てのキャッシュＴＡＧにおいてミスヒットであった場合に、その先行アドレス情報を自ノード配下のＶＴＡＧＸ５７−１に登録し、かかる先行登録要求の実行が完了する。
図９は本発明の一実施形態としての情報処理装置における第５の動作例を説明するためのタイムチャートである。
【００９５】
以下、本発明の一実施形態としての情報処理装置１において、ＶＴＡＧＸ５７−１への先行登録が失敗した場合の動作フロー（第５の動作例）を説明する。
なお、ｔ１〜ｔ１７の動作については、図５を参照しながら前述した第１の動作例と同様であるので、その説明を省略する。
この図９に示すように、グローバルスヌープ制御部５４−１は、キャッシュステータスのマージの結果に基づいて、先行アドレス情報を自ノード配下のＶＴＡＧＸ５７−１に登録するか否かを確定する（ｔ１８参照）。
【００９６】
ここで、グローバルスヌープ制御部５４−１は、先行アドレス情報についてのグローバルスヌープ制御を実行した結果がいずれかのキャッシュＴＡＧにおいてヒットした場合に、その先行アドレス情報を自ノード配下のＶＴＡＧＸ５７−１に登録せずに、かかる先行登録要求の実行が完了する。
図１０は本発明の一実施形態としての情報処理装置における第６の動作例を説明するためのタイムチャートである。
【００９７】
以下、本発明の一実施形態としての情報処理装置１において、ＶＴＡＧＸ５７−１に登録されているアドレス情報を無効状態にする場合の動作フロー（第６の動作例）を説明する。
この図１０に示すように、先ず、他ノード（ここでは、システムボードＳＢ１）配下のＣＰＵ１４からフェッチ要求が発生し（ｔ１参照）、他ノード配下のリクエスト送受信部５１−２が、フェッチ要求を他ノード配下のＣＰＵ１４から受信する（ｔ２参照）。次に、他ノード配下のローカルスヌープ制御部５５−２が、かかるフェッチ要求の対象アドレス情報を、他ノード配下のキャッシュＴＡＧ５２−２及び他ノード配下のＶＴＡＧＸ５７−２から検索する（ｔ３参照）。
【００９８】
他ノード配下のローカルスヌープ制御部５５−１は、検索の結果、メモリアクセス要求が他ノード配下のキャッシュＴＡＧ５２−２及び他ノード配下のＶＴＡＧＸ５７−２の双方においてミスヒットであった場合（図中、“結果＝ＭＩＳＳ”と示す）には、ローカルスヌープ制御をキャンセルするとともに、グローバルスヌープ要求を他ノード配下のリクエスト送受信部５１−２に送信する。他ノード配下のブロードキャスト制御部５３−２は、グローバルスヌープ要求を他ノード配下のローカルスヌープ制御部５５−２から他ノード配下のリクエスト送受信部５１−２を介して受信した場合には、このグローバルスヌープ要求を他ノード配下のグローバルスヌープ制御部５５−２に送信する（ｔ４参照）。これと共に、他ノード配下のブロードキャスト制御部５３−２は、情報処理装置１にそなえられたシステムコントローラ５０−２以外の全てのシステムコントローラに対してかかるグローバルスヌープ要求をブロードキャストする（ｔ５参照）。なお、ここでは、情報処理装置１にそなえられたシステムコントローラ５０−２以外の全てのシステムコントローラとして、自ノード配下のシステムコントローラ５０−１を用いて説明するものとする。
【００９９】
他ノード配下のグローバルスヌープ制御部５４−２は、グローバルスヌープ要求をブロードキャスト制御部５３−２から受信すると、グローバルスヌープ要求の対象データに対応する対象アドレス情報を他ノード配下のキャッシュＴＡＧ５２−２から検索する（ｔ６参照）。一方、自ノード配下のグローバルスヌープ制御部５４−１は、グローバルスヌープ要求を他ノード配下のブロードキャスト制御部５３−２から受信すると、グローバルスヌープ要求の対象データに対応する対象アドレス情報を自ノード配下のキャッシュＴＡＧ５２−１から検索する（ｔ７参照）。その後、各ノードにおけるグローバルスヌープ制御部５４−１，５４−２が、互いにキャッシュＴＡＧの検索結果を送受信して集約することにより、キャッシュステータスのマージを実行する。グローバルスヌープ制御部５４−１は、キャッシュステータスのマージの結果に基づいて、フェッチ要求に対する最終的な動作を判定して確定する（ｔ８参照）。
【０１００】
ここで、フェッチ要求の対象データがいずれのキャッシュメモリからも検索されずに、グローバルスヌープ制御部５４−２がかかるフェッチ要求に対して対象データに対応する主データを自ノード配下のメインメモリ３０から読み出すことが確定した場合には、自ノード配下のグローバルスヌープ制御部５４−１は、ＶＴＡＧＸ５７−１で保持された当該アドレス情報に対応するバリッドビットを有効状態から無効状態に設定変更する。これにより、自ノード配下のグローバルスヌープ制御部５４−１は、ＶＴＡＧＸ５７−１における当該アドレス情報の無効化が確定する（ｔ９参照；無効化ステップ）。又、自ノードのメモリアクセス発行部５６−１が、メインメモリ３０に対して、フェッチ要求に対する読み出し（リード）要求（図中、“ＭＳ−ＲＤ−ＲＥＱ”と示す）を発行する（ｔ１０参照）。次に、自ノード配下のメインメモリ３０から自ノード配下のシステムコントローラ５０−１へフェッチ要求に対応する主データが読み出される（ｔ１１参照）。そして、自ノード配下のシステムコントローラ５０−１から他ノード配下のシステムコントローラ５０−２へフェッチ要求に対応する主データが読み出される（図中、“ＭＩＤＱ”と示す；ｔ１２参照）。その後、他ノード配下のメモリアクセス発行部５６−２が、自ノード配下のメインメモリ３０から読み出した主データをフェッチデータ応答（図中、“ＦＣＨ−ＤＡＴＡ”と示す）としてＣＰＵ１４に対して送信し（ｔ１３参照）、かかるフェッチ要求の実行が完了する（ｔ１４参照）。
【０１０１】
図１１は本発明の一実施形態としての情報処理装置においてグローバルスヌープ制御がキャンセルされる条件を説明するための対応テーブルである。
このように、上述の如く、本発明の一実施形態としての情報処理装置１においては、ローカルスヌープ制御部５５−１は、下記（１）〜（６）の場合に、グローバルスヌープ制御を省略して自ノード配下のメインメモリへのアクセスを起動することができる（図１１の○（白抜き丸）参照）。
【０１０２】
（１）発行されたメモリアクセス要求（リクエスト）が命令フェッチ要求であり、この命令フェッチ要求の対象データが、自ノード配下のキャッシュＴＡＧ５２−１において共有型（情報処理装置１にそなえられた全てのキャッシュメモリのいずれかから対象データを単にフェッチするだけの共有型のフェッチ要求をいう）でヒットした場合（図１１の項“１．３”参照）。
【０１０３】
（２）発行されたメモリアクセス要求が命令フェッチ要求であり、この命令フェッチ要求の対象データが、自ノード配下のキャッシュＴＡＧ５２−１において排他型（情報処理装置１にそなえられた全てのキャッシュメモリのうち一のキャッシュメモリにのみ対象データが保持されるようにする排他型のフェッチ命令）でヒットした場合（図１１の項“１．４”参照）。
【０１０４】
（３）発行されたメモリアクセス要求が共有型（ｌｏａｄ）フェッチ要求であり、この共有型フェッチ要求の対象データが、自ノード配下のキャッシュＴＡＧ５２−１において共有型でヒットした場合（図１１の項“２．３”参照）。
（４）発行されたメモリアクセス要求が共有型フェッチ要求であり、この共有型フェッチ要求の対象データが、自ノード配下のキャッシュＴＡＧ５２−１において排他型でヒットした場合（図１１の項“２．４”参照）。
【０１０５】
（５）発行されたメモリアクセス要求が排他型（ｓｔｏｒｅ）フェッチ要求であり、この排他型フェッチ要求の対象データが、自ノード配下のキャッシュＴＡＧ５２−１において排他型でヒットした場合（図１１の項“３．５”参照）。
（６）発行されたメモリアクセス要求がブロックストア要求であり、このブロックストア要求の対象データが、自ノード配下のキャッシュＴＡＧ５２−１において排他型でヒットした場合（図１１の項“４．５”参照）。
【０１０６】
また、本発明の一実施形態としての情報処理装置１においては、ローカルスヌープ制御部５５−１は、上記（１）〜（６）の場合に加えて、更に、下記（７）〜（１２）の場合に、グローバルスヌープ制御を省略して自ノード配下のメインメモリへのアクセスを起動することができる（図１１の◎（二重丸）参照）。
（７）発行されたメモリアクセス要求が命令フェッチ要求であり、この命令フェッチ要求の対象データが、自ノード配下のキャッシュＴＡＧ５２−１においてミスヒットであるが、自ノード配下のＶＴＡＧＸ５７−１においてヒットした場合（図１１の項“１．２”参照）。
【０１０７】
（８）発行されたメモリアクセス要求が共有型（ｌｏａｄ）フェッチ要求であり、この共有型フェッチ要求の対象データが、自ノード配下のキャッシュＴＡＧ５２−１においてミスヒットであり、自ノード配下のＶＴＡＧＸ５７−１においてヒットした場合（図１１の項“２．２”参照）。
（９）発行されたメモリアクセス要求が排他型（ｓｔｏｒｅ）フェッチ要求であり、この排他型フェッチ要求の対象データが、自ノード配下のキャッシュＴＡＧ５２−１においてミスヒットであり、自ノード配下のＶＴＡＧＸ５７−１においてヒットした場合（図１１の項“３．２”参照）。
【０１０８】
（１０）発行されたメモリアクセス要求が排他型フェッチ要求であり、この排他型フェッチ要求の対象データが、自ノード配下のキャッシュＴＡＧ５２−１において共有型でヒットし、自ノード配下のＶＴＡＧＸ５７−１においてヒットした場合（図１１の項“３．４”参照）。この場合においては、当該対象データに対応するＶＴＡＧＸ５７−１に登録されたアドレス情報が無効状態に設定変更される。
【０１０９】
（１１）発行されたメモリアクセス要求がブロックストア要求であり、このブロックストア要求の対象データが、自ノード配下のキャッシュＴＡＧ５２−１においてミスヒットであり、自ノード配下のＶＴＡＧＸ５７−１においてヒットした場合（図１１の項“４．２”参照）。
（１２）発行されたメモリアクセス要求がブロックストア要求であり、このブロックストア要求の対象データが、自ノード配下のキャッシュＴＡＧ５２−１において共有型でヒットし、自ノード配下のＶＴＡＧＸ５７−１においてヒットした場合（図１１の項“４．４”参照）。この場合においては、当該対象データに対応するＶＴＡＧＸ５７−１に登録されたアドレス情報が無効状態に設定変更される。
【０１１０】
なお、前記（１）〜（１２）以外の場合には、グローバルスヌープ制御部５４−１がグローバルスヌープ制御を実行することになる（図１１参照）。
以上、本発明の一実施形態としてのローカルスヌープ制御方法（情報処理装置１の動作）について、システムコントローラ５０−１における動作を中心に説明したが、システムボードＳＢ０以外の複数のシステムボードＳＢ１〜ＳＢ１５配下のＣＰＵもしくはＩ／Ｏ装置からメモリアクセス要求が発行された場合の各システムボードＳＢ１〜ＳＢ１５配下のシステムコントローラにおける動作も、上述したシステムコントローラ５０−１の動作と同様である。
【０１１１】
このように、本発明の一実施形態としての情報処理装置１及びローカルスヌープ制御方法によれば、情報処理装置１にそなえられた各ノードに、自ノード配下のキャッシュメモリの容量を超えるＶＴＡＧＸ５７−１を追加し、ローカルスヌープ制御部５５−１にＶＴＡＧＸ５７−１の検索処理を追加することにより、仮想的に自ノード配下のキャッシュメモリ空間を拡張することができる。そのため、自ノード配下のキャッシュＴＡＧ５２−１においてミスヒットであった場合でも、ＶＴＡＧＸ５７−１にヒットすれば、低レイテンシのデータ通信であるローカルスヌープ制御を実行するだけで、自ノード配下のメインメモリ３０，３１に対して対象データへのアクセスの起動が可能となる。即ち、情報処理装置１にそなえられた各ノード間を跨ぐグローバルスヌープ制御を省略して、情報処理装置１にそなえられた全てのノード間のキャッシュコヒーレンシを保証することができる。これにより、グローバルスヌープ制御を省略可能な条件を従来よりも拡大することができる。従って、大規模構成の情報処理装置１においてのメモリアクセスのレイテンシを短縮し、スヌープ処理のスループットを改善することができる。更に、大規模構成の情報処理装置１においてのブロードキャストバスとグローバルスヌープ処理のビジー率を改善することもでき、結果的に情報処理装置１の性能を向上させることができる。
【０１１２】
また、自ノード配下のＣＰＵ１０〜１３からキャッシュデータの無効化を伴う排他型のメモリアクセス要求であり、当該メモリアクセス要求の対象データがキャッシュＴＡＧ５２−１において共有型でヒットしたりミスヒットであったりする場合であっても、ＶＴＡＧＸ５７−１にヒットすれば、他ノード配下のキャッシュメモリに存在するキャッシュデータに対する無効化処理が不要であることが判明する。従って、この場合においては、情報処理装置１にそなえられた各ノード間を跨ぐグローバルスヌープ制御を省略して、自ノード配下のメインメモリにアクセスするとともに、自ノード配下のキャッシュメモリに存在するキャッシュデータの無効化処理の起動が可能となる。
【０１１３】
さらに、ＶＴＡＧＸ５７−１をシステムコントローラ５０−１に実装する際に、既存の大規模ＳＭＰ型情報処理装置のシステムコントローラ５０−１に対して大幅な制御変更を行なう必要がない。従って、既存の大規模ＳＭＰ型情報処理装置にＶＴＡＧＸ５７−１を容易に実装することができる。
また、メモリアクセス要求の対象データに対応する対象アドレス情報がＶＴＡＧＸ５７−１に登録された場合に、プログラムのメモリアクセスの連続性を利用して当該アドレス情報の数Ｋｂｙｔｅ先の先行アドレス情報についても、所定条件下でＶＴＡＧＸ５７−１への先行登録を行なうことにより、自ノード配下のＣＰＵ１０〜１３からのアクセスが１回目のアクセスであっても、ＶＴＡＧＸ５７−１の検索対象とすることができる。そのため、自ノード配下のＣＰＵ１０〜１３からのアクセスが１回目のアクセスであっても、ＶＴＡＧＸ５７−１にヒットすれば、グローバルスヌープ制御を省略して情報処理装置１にそなえられた全てのノード間のキャッシュコヒーレンシを保証することができる。従って、大規模構成の情報処理装置１においてのメモリアクセスのレイテンシをより短縮し、スヌープ処理のスループットをより改善することができる。
〔２〕その他
なお、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
【０１１４】
例えば、上述した実施形態では、情報処理装置１にそなえられた全てのノードにＶＴＡＧＸを実装する場合を例に説明したが、それに限定されるものではなく、情報処理装置１にそなえられた任意のノードにＶＴＡＧＸを実装してもよい。
また、上述した実施形態では、アドレス情報を特定情報として用いた例について説明したが、それに限定されるものではなく、主データやキャッシュデータを特定可能な情報を特定情報として用いてもよい。
【０１１５】
さらに、上述した実施形態では、バリッドビットを状態情報として用いた例について説明したが、それに限定されるものではなく、特定情報の無効状態もしくは有効状態を示す情報を状態情報として用いてもよい。
〔３〕付記
（付記１）  複数のノードをそなえ、
該複数のノードが、それぞれ、メインメモリと、キャッシュメモリを有するプロセッサと、該複数のノード間のキャッシュコヒーレンシを保証する制御を行なうシステムコントローラとをそなえた情報処理装置であって、
該複数のノードのうち少なくとも１つの該システムコントローラが、
自ノードの該メインメモリに存在する主データであって当該主データに対応するキャッシュデータが自ノード以外の該複数のノードのキャッシュメモリ内に存在しない該主データに関する特定情報を保持する保持部をそなえることを特徴とする、情報処理装置。
【０１１６】
（付記２）  該保持部をそなえた該システムコントローラが、
自ノードにおいてメモリアクセス要求が発生し、当該メモリアクセス要求の対象データが該保持部に保持された該特定情報に対応する場合に、自ノードにおけるキャッシュコヒーレンシを保証するローカルスヌープ制御を行なうローカルスヌープ制御部をそなえることを特徴とする、付記１に記載の情報処理装置。
【０１１７】
（付記３）  該保持部をそなえた該システムコントローラが、
該複数のノード間のキャッシュコヒーレンシを保証するグローバルスヌープ制御を行なうグローバルスヌープ制御部と、
自ノードにおいて発生したメモリアクセス要求を受信した場合に、当該メモリアクセス要求を該ローカルスヌープ制御部に送信し、該グローバルスヌープ制御の実行を要求するグローバルスヌープ要求を該ローカルスヌープ制御部から受信した場合に、当該グローバルスヌープ要求を、該グローバルスヌープ制御部に送信するリクエスト送受信部とをそなえることを特徴とする、付記２に記載の情報処理装置。
【０１１８】
（付記４）  該ローカルスヌープ制御部は、該メモリアクセス要求の対象データが該保持部に保持された該特定情報に対応しない場合に、該グローバルスヌープ要求を該リクエスト送受信部に送信することを特徴とする、付記３に記載の情報処理装置。
（付記５）  該グローバルスヌープ制御部は、該グローバルスヌープ制御を行なった結果、自ノードの該メインメモリ内に存在する主データに対応するキャッシュデータが自ノード以外の該複数のノードのキャッシュメモリに存在しないと判定した場合に、当該主データに関する特定情報を該保持部に保持させることを特徴とする、付記３または付記４に記載の情報処理装置。
【０１１９】
（付記６）  該グローバルスヌープ制御部は、自ノード以外の該複数のノードのいずれかにおいてメモリアクセス要求が発生し、当該メモリアクセス要求の対象データが、自ノードのメインメモリに存在する主データであって該保持部に保持された該特定情報に対応する該主データである場合に、該メモリアクセス要求に対する応答処理が確定すると、当該主データに対応する該保持部に保持された該特定情報を無効状態にすることを特徴とする、付記３〜５のいずれか１項に記載の情報処理装置。
【０１２０】
（付記７）  該保持部は、該プロセッサが１回の処理で読み出し可能なデータサイズのアドレス情報を該特定情報として保持することを特徴とする、付記１〜６のいずれか１項に記載の情報処理装置。
（付記８）  該保持部は、連続する複数の該アドレス情報を構成するアドレス情報群を該特定情報として保持することを特徴とする、付記７に記載の情報処理装置。
【０１２１】
（付記９）  該保持部は、該アドレス情報の有効状態もしくは無効状態を示す状態情報を、該アドレス情報群における該複数のアドレス情報のそれぞれに対応して個別に保持することを特徴とする、付記８に記載の情報処理装置。
（付記１０）  該保持部をそなえた該システムコントローラが、
該保持部に保持された該特定情報とは異なる特定情報である拡張特定情報を生成する拡張特定情報生成部をそなえ、
該グローバルスヌープ制御部は、該拡張特定情報生成部で生成された該拡張特定情報について該グローバルスヌープ制御を行なった結果、該拡張特定情報に対応する主データが自ノードの該メインメモリ内に存在し、且つ、該拡張特定情報に対応するキャッシュデータが自ノード以外の該複数のノードのキャッシュメモリに存在しないと判定した場合に、該拡張特定情報を該保持部に保持させることを特徴とする、付記５に記載の情報処理装置。
【０１２２】
（付記１１）  複数のノードが、それぞれ、メインメモリと、キャッシュメモリを有するプロセッサと、該複数のノード間のキャッシュコヒーレンシを保証する制御を行なうシステムコントローラとをそなえた情報処理装置のメモリ制御方法であって、
該複数のノードのうちのいずれかにおいて、
自ノードにおいて発生したメモリアクセス要求を受信するメモリアクセス要求受信ステップと、
該メモリアクセス要求受信ステップにおいて該メモリアクセス要求を受信すると、自ノードの該メインメモリ内に存在する主データであって当該主データに対応するキャッシュデータが自ノード以外の該複数のノードのキャッシュメモリ内に存在しない該主データに関する特定情報を保持する保持部にアクセスするアクセスステップと、
該受信ステップにおいて受信した該メモリアクセス要求の対象データが該保持部に保持された該特定情報に対応する場合に、自ノードにおけるキャッシュコヒーレンシを保証するローカルスヌープ制御を行なうローカルスヌープ制御ステップとをそなえることを特徴とする、メモリ制御方法。
【０１２３】
（付記１２）  該ローカルスヌープ制御ステップにおいて該メモリアクセス要求の対象データが該保持部に保持された該特定情報に対応しない場合に、該複数のノード間のキャッシュコヒーレンシを保証するグローバルスヌープ制御の実行を要求するグローバルスヌープ要求を受信するグローバルスヌープ要求受信ステップと、
該グローバルスヌープ要求受信ステップにおいて該グローバルスヌープ要求を受信すると、該グローバルスヌープ制御を行なうグローバルスヌープ制御ステップとをそなえることを特徴とする、付記１１に記載のメモリ制御方法。
【０１２４】
（付記１３）  該グローバルスヌープ制御を行なった結果、自ノードの該メインメモリ内に存在する主データに対応するキャッシュデータが自ノード以外の該複数のノードのキャッシュメモリに存在しないと判定した場合に、当該主データに関する特定情報を該保持部に保持させる特定情報登録ステップをそなえることを特徴とする、付記１２に記載のメモリ制御方法。
【０１２５】
（付記１４）  自ノード以外の該複数のノードのいずれかにおいてメモリアクセス要求が発生し、当該メモリアクセス要求の対象データが、自ノードのメインメモリに存在する主データであって該保持部に保持された該特定情報に対応する該主データである場合に、該メモリアクセス要求に対する応答処理が確定すると、当該主データに対応する該保持部に保持された該特定情報を無効状態にする無効化ステップをそなえることを特徴とする、付記１２または付記１３に記載のメモリ制御方法。
【０１２６】
（付記１５）  該保持部に保持された該特定情報とは異なる特定情報である拡張特定情報を生成する拡張特定情報生成ステップと、
該拡張特定情報生成ステップにおいて生成された該拡張特定情報について該グローバルスヌープ制御を行なった結果、該拡張特定情報に対応する主データが自ノードの該メインメモリ内に存在し、且つ、該拡張特定情報に対応するキャッシュデータが自ノード以外の該複数のノードのキャッシュメモリに存在しないと判定した場合に、該拡張特定情報を該保持部に保持させる拡張特定情報登録ステップとをそなえることを特徴とする、付記１３に記載のメモリ制御方法。
【０１２７】
（付記１６）  メインメモリと、キャッシュメモリを有するプロセッサとをそなえたメモリ制御装置であって、
当該メモリ制御装置と他のメモリ制御装置との間のキャッシュコヒーレンシを保証する制御を行なうシステムコントローラをそなえ、
該システムコントローラが、
当該メモリ制御装置の該メインメモリに存在する主データであって当該主データに対応するキャッシュデータが該他のメモリ制御装置のキャッシュメモリ内に存在しない該主データに関する特定情報を保持する保持部をそなえることを特徴とする、メモリ制御装置。
【０１２８】
（付記１７）  該システムコントローラが、
当該メモリ制御装置においてメモリアクセス要求が発生し、当該メモリアクセス要求の対象データが該保持部に保持された該特定情報に対応する場合に、当該メモリ制御装置におけるキャッシュコヒーレンシを保証するローカルスヌープ制御を行なうローカルスヌープ制御部をそなえることを特徴とする、付記１６に記載のメモリ制御装置。
【０１２９】
（付記１８）  該システムコントローラが、
当該メモリ制御装置と他のメモリ制御装置との間のキャッシュコヒーレンシを保証するグローバルスヌープ制御を行なうグローバルスヌープ制御部と、
当該メモリ制御装置において発生したメモリアクセス要求を受信した場合に、当該メモリアクセス要求を該ローカルスヌープ制御部に送信し、該グローバルスヌープ制御の実行を要求するグローバルスヌープ要求を該ローカルスヌープ制御部から受信した場合に、当該グローバルスヌープ要求を、該グローバルスヌープ制御部に送信するリクエスト送受信部とをそなえることを特徴とする、付記１７に記載のメモリ制御装置。
【０１３０】
（付記１９）  該グローバルスヌープ制御部は、該グローバルスヌープ制御を行なった結果、当該メモリ制御装置の該メインメモリ内に存在する主データに対応するキャッシュデータが該他のメモリ制御装置のキャッシュメモリに存在しないと判定した場合に、当該主データに関する特定情報を該保持部に保持させることを特徴とする、付記１８に記載のメモリ制御装置。
【０１３１】
（付記２０）  該システムコントローラが、
該保持部に保持された該特定情報とは異なる特定情報である拡張特定情報を生成する拡張特定情報生成部をそなえ、
該グローバルスヌープ制御部は、該拡張特定情報生成部で生成された該拡張特定情報について該グローバルスヌープ制御を行なった結果、該拡張特定情報に対応する主データが当該メモリ制御装置の該メインメモリ内に存在し、且つ、該拡張特定情報に対応するキャッシュデータが該他のメモリ制御装置のキャッシュメモリに存在しないと判定した場合に、該拡張特定情報を該保持部に保持させることを特徴とする、付記１９に記載のメモリ制御装置。
【図面の簡単な説明】
【０１３２】
【図１】本発明の一実施形態としての情報処理装置の全体構成を示すブロック図である。
【図２】本発明の一実施形態としての情報処理装置におけるシステムボードの構成を示すブロック図である。
【図３】本発明の一実施形態としての情報処理装置におけるシステムボードの詳細な構成を示すブロック図である。
【図４】本発明の一実施形態としての情報処理装置におけるシステムシステムコントローラの構成を示すブロック図である。
【図５】本発明の一実施形態としての情報処理装置における第１の動作例を説明するためのタイムチャートである。
【図６】本発明の一実施形態としての情報処理装置における第２の動作例を説明するためのタイムチャートである。
【図７】本発明の一実施形態としての情報処理装置における第３の動作例を説明するためのタイムチャートである。
【図８】本発明の一実施形態としての情報処理装置における第４の動作例を説明するためのタイムチャートである。
【図９】本発明の一実施形態としての情報処理装置における第５の動作例を説明するためのタイムチャートである。
【図１０】本発明の一実施形態としての情報処理装置における第６の動作例を説明するためのタイムチャートである。
【図１１】本発明の一実施形態としての情報処理装置においてグローバルスヌープ制御がキャンセルされる条件を説明するための対応テーブルである。
【図１２】従来の大規模な情報処理装置の構成を示すブロック図である。
【図１３】従来の大規模な情報処理装置の動作を説明するためのタイムチャートである。
【図１４】従来の大規模な情報処理装置の動作を説明するためのタイムチャートである。
【符号の説明】
【０１３３】
１，１００ 情報処理装置
１０〜１７ ＣＰＵ（プロセッサ）
１０ａ〜１７ａ １次キャッシュメモリ（キャッシュメモリ）
１０ｂ〜１７ｂ ２次キャッシュメモリ（キャッシュメモリ）
２０〜２３ Ｉ／Ｏ装置（入出力装置）
３０〜３３ メインメモリ
４０−１，４０−２，５０−１，５０−２ システムコントローラ
４１−１，４１−２，５１−１，５１−２ リクエスト送受信部
４２−１，４２−２，５５−１，５５−２ ローカルスヌープ制御部
４３−１，４３−２，５３−１，５３−２ ブロードキャスト制御部
４４−１，４４−２，５４−１，５４−２ グローバルスヌープ制御部
４５−１，４５−２，５６−１，５６−２ メモリアクセス発行部
４６−１，４６−２，５２−１，５２−２  キャッシュＴＡＧ（第１保持部）
５７−１，５７−２ ＶＴＡＧＸ（保持部；第２保持部）
６１−１，６６−１  リクエストポート部
６２−１，６７−１  リクエスト選択部
６３−１  パイプライン部（グローバルスヌープ制御部、登録部、無効化部）
６８−１  パイプライン部（ローカルスヌープ制御部）
６４−１  通信部
６５−１  先行登録要求部（拡張特定情報生成部）
ＳＢ１〜ＳＢ１５，Ａ，Ｂ  システムボード（ノード）
ＸＢ０〜ＸＢ３  クロスバ・スイッチ
【図１】
2009223759.tif 000003
【図２】
2009223759.tif 000004
【図３】
2009223759.tif 000005
【図４】
2009223759.tif 000006
【図５】
2009223759.tif 000007
【図６】
2009223759.tif 000008
【図７】
2009223759.tif 000009
【図８】
2009223759.tif 000010
【図９】
2009223759.tif 000011
【図１０】
2009223759.tif 000012
【図１１】
2009223759.tif 000013
【図１２】
2009223759.tif 000014
【図１３】
2009223759.tif 000015
【図１４】
2009223759.tif 000016