(57)【特許請求の範囲】
【請求項１】
メモリがそれぞれ接続された複数のプロセサと当該複数のプロセサが接続されたノードコントローラとによってローカルドメインであるノードが形成され、複数の当該ノードに含まれる各ノードコントローラがドメイン間相互接続ネットワークによって相互に接続された多階層キャッシュコヒーレンシドメインシステムであって、
いずれかの前記メモリに記憶されているデータのコピーであるデータコピーが複数の前記プロセサのキャッシュに記憶されているときに、
１つの前記ノードに含まれる１個のプロセサのキャッシュに記憶されている前記データコピーの状態がノード間で当該データコピーを転送できるノード間Ｆ状態にセットされるとともにノード内で他のプロセサに当該データコピーを転送できるノード内Ｆ状態にセットされ、
前記１つのノードを除く各前記ノードに含まれるプロセサのキャッシュに前記データコピーが記憶されている場合に、当該各前記ノードに含まれる１個のプロセサのキャッシュに記憶されている前記データコピーの状態が、ノード間では当該データコピーを転送できないノード間Ｓ状態であり、ノード内では他のプロセサに当該データコピーを転送できるノード内Ｆ状態であるＳｈａｒｅ−Ｆ状態にセットされ、
各前記ノードに含まれる１個のプロセサのキャッシュにノード内で他のプロセサに転送できるノード内Ｆ状態の前記データコピーが記憶されているときに、各前記ノードに含まれる他のプロセサが前記メモリに記憶されているデータへのアクセスを要求した場合に、各前記ノード内において、ノード内Ｆ状態の前記データコピーをキャッシュに記憶している前記１個のプロセサが当該データコピーを前記他のプロセサに転送する、
ことを特徴とする多階層キャッシュコヒーレンシドメインシステム。
【請求項２】
１）リモートノード内のルートメモリのアドレスのデータにアクセスすることが要求されたとき、リモートデータディレクトリＲＤＩＲを調べることによって、ノード内のプロセサが当該アドレスのデータのコピーであるデータコピーを所有しており、当該データコピーのコヒーレンス状態がノード間Ｓ状態であって、かつノード内Ｆ状態であるか否かを判別するステップと、
２）ステップ１）でノード内のプロセサが前記アドレスのデータのコピーであるデータコピーを所有しており、前記データコピーのコヒーレンス状態がノード間Ｓ状態であって、かつノード内Ｆ状態であると判別された場合に、前記データコピーを要求元に直接転送し、当該要求元のデータコピーのコヒーレンス状態をノード内Ｉ状態からノード内Ｆ状態に変更することによってＳｈａｒｅ−Ｆ状態とし、一方要求された当該データコピーのコヒーレンス状態をノード内Ｆ状態からノード内Ｓ状態に変更するステップと、
３）リモートノード内のルートメモリのアドレスのデータにアクセスすることが要求されたとき、リモートデータディレクトリＲＤＩＲを調べることによって、ノード内のプロセサが当該アドレスのデータのコピーであるデータコピーを未所有であるか否か、および当該データコピーを所有するが当該データコピーのコヒーレンス状態がノード内Ｓ状態であるか否かを判別するステップと、
４）ステップ３）でノード内のプロセサが前記アドレスのデータのコピーであるデータコピーを未所有であるか、または当該データコピーを所有するが当該データコピーのコヒーレンス状態がノード内Ｓ状態であると判別された場合に、前記アクセスすることが要求されたデータをＣＰＵのルートメモリに所有するリモートノードのローカルメモリディレクトリＬＤＩＲを調べることによって、コヒーレンス状態がノード間Ｆ状態である当該データコピーを所有するリモートノードを発見するステップと、
５）ステップ４）で発見されたリモートノードにおいて、リモートデータディレクトリＲＤＩＲを調べることによって、コヒーレンス状態がノード内Ｆ状態である前記データコピーを所有する当該リモートノード内のプロセサを発見するステップと、
６）ステップ５）で発見された前記リモートノード内のプロセサから前記データコピーを要求元に直接転送し、当該要求元のデータコピーのコヒーレンス状態をノード内Ｉ状態およびノード間Ｉ状態からノード内Ｆ状態およびノード間Ｆ状態に変更し、要求された前記リモートノード内のプロセサのデータコピーのコヒーレンス状態をノード間Ｆ状態からノード間Ｓ状態に変更することによってＳｈａｒｅ−Ｆ状態とするステップと、
を備えることを特徴とする多階層キャッシュコヒーレンシドメインシステムのローカルドメインにおけるＳｈａｒｅ−Ｆ状態の構成方法。
【請求項３】
コヒーレンス情報が３段階のディレクトリによって記録され、第１段階のデイレクトリはノードコントローラのリモートデータプロクシユニットＲＰに位置するリモートデータディレクトリＲＤＩＲであり、第２段階のデイレクトリはノードコントローラのローカルデータプロクシユニットＬＰに位置するローカルデータプロクシディレクトリＬＤＩＲであり、第３段階はルートプロセサのメモリデータプロクシユニットに位置するルートディレクトリであることを特徴とする請求項２に記載の多階層キャッシュコヒーレンシドメインシステムのローカルドメインにおけるＳｈａｒｅ−Ｆ状態の構成方法。
【請求項４】
リモートデータディレクトリＲＤＩＲにおけるＳ状態が、それぞれノード内フラグシグナルとノード間フラグシグナルを使うことによって、２重ベクトル表現法で表され、当該２つのフラグシグナルは食い違った情報を持つことができ、ノード内キャッシュコヒーレンシドメインにおける状態がＦ状態として設定され、かつノード間キャッシュコヒーレンシドメインにおける状態がＳ状態として設定されるＳｈａｒｅ−Ｆ状態に設定されることができることを特徴とする請求項３に記載の多階層キャッシュコヒーレンシドメインシステムのローカルドメインにおけるＳｈａｒｅ−Ｆ状態の構成方法。
【請求項５】
同一のアドレスを持つＳ状態のデータコピーが各キャッシュコヒーレンシドメイン内でＳｈａｒｅ−Ｆ状態を構成することが許され、従って、システム全体では多数のＦ状態が存在するが、各キャッシュコヒーレンシドメインは１つのＦ状態のみを持つことを特徴とする請求項４に記載の多階層キャッシュコヒーレンシドメインシステムのローカルドメインにおけるＳｈａｒｅ−Ｆ状態の構成方法。
【請求項６】
ノードコントローラはリモートデータキャッシュＲＤＣを接続することができ、キャッシュされたＳ状態のリモートデータコピーはノード間キャッシュコヒーレンシドメインＳ状態かつノード内キャッシュコヒーレンシドメインＦ状態として記録されることを特徴とする請求項５に記載の多階層キャッシュコヒーレンシドメインシステムのローカルドメインにおけるＳｈａｒｅ−Ｆ状態の構成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムアーキテクチャ分野に関し、特に、多階層キャッシュコヒーレンシドメインシステムのローカルドメインにおけるＳｈａｒｅ−Ｆ状態の構成方法に関する。
【背景技術】
【０００２】
マルチキャッシュコピーシステムの全体のキャッシュコヒーレンスを維持するために、分散型共有メモリコンピュータシステムでＭＥＳＩＦプロトコルが広く適用される。ここで、１）Ｍ（Ｍｏｄｉｆｉｅｄ）状態は変更された状態であり、あるＣＰＵにおいてキャッシュデータが変更された状態であることを示す。そのデータはルートメモリの対応するデータと異なる。そのデータは全体のシステムにおけるユニークな最新のコピーである。ＣＰＵがキャッシュのデータを置き換えるか、または他のＣＰＵがそのデータにアクセスするとき、ルートメモリにデータを書き戻し、ルートメモリ内の対応するデータを最新の状態にするように、全体のコヒーレンス操作が生じなければならない。２）Ｅ（Ｅｘｃｌｕｓｉｖｅ）状態はデータがただ一つだけ存在する状態であり、キャッシュデータがあるＣＰＵにおいて共有されない状態であり、他のＣＰＵのキャッシュがそのデータコピーを持たないことを示す。そのデータは変更されておらず、ルートメモリにおける対応するデータと一致している。動作している間、そのデータコピーを所有しているＣＰＵは、自動的にそのデータをＥ状態からＳ状態に下げるか、またはルートメモリに通知することなしに直接そのデータのキャッシュラインをカバーして置き換えることができる（すなわち、Ｉ状態に変更することができる。）。その操作は全体のキャッシュコヒーレンスに影響を及ぼさない。３）Ｓ（Ｓｈａｒｅｄ）状態は共有された状態であり、そのデータは１つ以上のＣＰＵにコピーを持ち、コピーデータは変更されておらず、ルートメモリ内の対応するデータと一致していることを示す。動作している間、そのデータコピーを所有しているＣＰＵは、ルートメモリに通知することなしに、自動的にそのデータをＳ状態からＩ状態に下げることができる。その操作は全体のキャッシュコヒーレンスに影響を及ぼさない。４）Ｉ（Ｉｎｖａｌｉｄ）状態は無効状態であり、ＣＰＵにおけるキャッシュのデータが無効であることを示す。キャッシュコヒーレンス操作を実行する必要なしに、そのキャッシュラインは直接カバーされ、置き換えられる。５）Ｆ（Ｆｏｒｗａｒｄｉｎｇ）状態は転送状態であり、キャッシュのデータはあるＣＰＵにおいて転送機能を持って共有された状態にあり、そのシステムにおいてデータの状態はユニークであり、そのコピーは変更されておらず、ルートメモリの対応するデータと一致していることを示す。更に、他のＣＰＵは１つ以上の状態の機能を有しない同一のＳ状態のデータコピーを持つことができる。
【０００３】
Ｆ状態とＳ状態の間の唯一の違いは、Ｆ状態が転送能力を持つＳ状態であり、Ｓ状態が転送能力を持たないということである。ＣＰＵがＳ状態タイプのデータリード要求を送信するとき、Ｆ状態の唯一のキャッシュデータがデータの要求元にデータコピーを転送することができ、Ｓ状態である状態ビットを持つキャッシュデータはデータコピーを転送することができない。Ｆ状態のデータコピーがあるＣＰＵから他のＣＰＵに転送されるならば、Ｆ状態のビットはデータコピーとともに移動する。そして、このとき要求元ＣＰＵの新しく生成されたキャッシュのデータコピーの状態がＦ状態に変更され、オリジナルＣＰＵのデータコピーの状態がＳ状態に変更される。
【０００４】
バススヌープ方式に基づいて全体のキャッシュコヒーレンスを維持するＳＭＰシステムに対して、システムの規模が小さく、コヒーレンスを維持するためのオーバヘッドが明白ではないので、ＭＥＳＩ状態プロトコルは条件を満たし、Ｆ状態はサポートされない。けれども、ディレクトリ方式に基づいて全体のキャッシュコヒーレンスを維持する分散共有メモリシステムに対して、Ｆ状態をサポートするＭＥＳＩＦプロトコルはルートメモリからデータを読む必要なしにＳｈａｒｅｄ状態のデータをＣＰＵのキャッシュの間で転送することを可能とし、各要求に対して要求元のＣＰＵにデータを送信し、従って、システムのコヒーレンスプロセスのオーバヘッドを削減する。従って、Ｆ状態をサポートすることが特に必要である。
【０００５】
ＣＣ−ＮＵＭＡシステムはディレクトリ方式に基づく代表的な分散共有メモリ・マルチプロセサシステムである。ＣＣ−ＮＵＭＡコンピュータシステムでは、ノードコントローラが極めて重要な役割を果たす。ノードコントローラはまず各サーバのプロセサと接続され、ノードとノード内キャッシュコヒーレンシドメインを形成する。次に、ノードコントローラは直接接続されるか、またはノードルータを介して接続され、ノード間相互接続システムとノード間キャッシュコヒーレンシドメインを形成する。２階層のドメインを使うことによって、プロセサの相互接続ポートの数とキャッシュコヒーレンスの維持される規模のような物理的な制限を克服することができる。従って、大規模ＣＣ−ＮＵＭＡコンピュータシステムを形成することができる。
【０００６】
ポイントツーポイント相互接続方式に基づくＣＣ−ＮＵＭＡシステムに対して、各プロセサのＣＰＵはメモリコントローラと統合され、外部にメモリが接続され、全システム空間におけるキャッシュコヒーレンスメモリ空間の部分を管理してメモリ空間のこの部分のホームプロクシになる。このとき、全体のキャッシュコヒーレンスがバススヌープ方式で維持されるならば、処理されるべきコヒーレンスパケットの数がノードとＣＰＵの数の増加に伴って指数関数的に増加するであろう。それで、システムのコヒーレンスの維持と処理は全く非効率的となる。従って、ＣＣ−ＮＵＭＡシステムは一般に多階層コヒーレンスディレクトリ方式を採用して全体のキャッシュコヒーレンスを維持する。メモリ空間のある部分に対するデータアクセスまたはコヒーレンス許可要求は、（その部分がキャッシュコヒーレンス空間のこの部分を管理するルートプロセサと同じノードおよび同じキャッシュコヒーレンシドメインに位置する場合には、）直接接続方式で要求元のプロセサによってアクセスされることが必要であり、またはノードコントローラを使うことによってノード間相互接続ネットワークを介してルートノードのルートプロセサのホームプロキシに転送され（このとき、ノード間およびキャシュコヒーレンシドメインのアクセスが必要とされる。）、ホームプロクシのディレクトリ情報を最新の状態にする。ノード間のキャッシュコヒーレンスの維持のために、ノードコントローラは主に２つの機能を有する。一つの機能はリモートノードへのローカルノードプロセサのアクセスのためにリモートプロクシとしての役目を果たすことである（２階層のキャッシュコヒーレンスドメインの変換ロジックが実装されることが必要である。）。このとき、ローカルプロセサによるリモートキャッシュラインのデータへのアクセス情報とコヒーレンス状態を記録するために、ノードコントローラがリモートディレクトリを管理することが必要である。他の機能はローカルノード内のプロセサへのリモートノードのデータアクセスに対してローカルプロクシとしての役割を果たすことである（２階層のキャッシュコヒーレンスドメインの変換ロジックが実装されることが必要である。）。このとき、リモートノードによるローカルキャッシュラインのデータへのアクセス情報とコヒーレンス状態を記録するために、ノードコントローラがローカルディレクトリを管理することが必要である。明らかにこの方法は多段階のホップアクセスを生じ、２階層のキャッシュコヒーレンシドメインのロジック変換が必要になる。それはアクセスの遅延を大きく増加させる。特に、リモートキャッシュラインのデータへのアクセスは実装のために多数のコヒーレンス操作を必要とし、ノード間アクセスの効率を低下させる。従って、２階層または多階層のキャッシュコヒーレンスドメインによって形成されるＣＣ−ＮＵＭＡアーキテクチャのコンピュータシステムのために、ノード内ドメインの相互接続バンド幅と効率はノード間の相互接続バンド幅と効率よりもずっと高く、メモリアクセスのバランスの悪さはより明らかである。
【０００７】
Ｆ状態をサポートするＭＥＳＩＦプロトコルは、ＣＣ−ＮＵＭＡシステムのノード間キャッシュコヒーレンシドメインにおける共有データのノード間相互接続の転送問題を効果的に軽減することができ、ルートノードのルートプロセサのメモリからデータコピーを読むオーバヘッドを毎回除去し、システムのコヒーレンス処理の効率を改善する。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
けれども、ＭＥＳＩＦプロトコルはノード内のプロセサ間でＳ状態のデータ（ノード内のあるキャッシュデータがＳ状態にあるとみなされる。）を相互に転送する問題を解決することができないことに注意すべきである。すなわち、ノード内の他のプロセサはそのノードのＳ状態のプロセサからＳ状態のキャッシュのデータコピーを直接得ることができず、ノード間の方法でそのデータのルートノードに要求を送ってＦ状態のデータを持つ他のノードからそのデータを得なければならない。そして、それはプロセサのノード間アクセスの頻度と処理オーバヘッドを増加させる。
【０００９】
従って、ローカルのＳｈａｒｅ−Ｆ状態をノードコントローラとプロセサによって形成されるノード内キャッシュコヒーレンシドメインで構成することができ、ルートノードにアクセスせずに同じアドレスを持つＳ状態のキャッシュのデータをドメイン内で直接転送することが許されるならば、プロセサのノード間アクセスの頻度とオーバヘッドを大きく低下させることができる。システム全体の観点からすれば、２階層ドメインまたは多階層ドメインのキャッシュコヒーレンスシステム内に多数のＦ状態が存在するけれども、各キャッシュコヒーレンスドメインは１つのＦ状態を持つだけであり、それで全体のキャッシュコヒーレンスプロトコルのルールに反することなしにプロセサのノード間アクセスの頻度とオーバヘッドが低下する。
【００１０】
上述した問題を解決するために、本発明の目的は多階層キャッシュコヒーレンシドメインシステムのローカルドメインにおけるＳｈａｒｅ−Ｆ状態の構成方法を提供することであって、その構成方法は主に先行技術におけるノード間アクセスの高い頻度と高いオーバヘッドの問題に狙いを定めた新しい解決策を提供し、従って２階層または多階層のキャシュコヒーレンシドメインＣＣ−ＮＵＭＡシステムの性能を改善する。
【課題を解決するための手段】
【００１１】
上述した目的を達成するために、本発明の多階層キャッシュコヒーレンシドメインシステムのローカルドメインにおけるＳｈａｒｅ−Ｆ状態の構成方法は、
１）リモートノード内のルートメモリのアドレスのデータにアクセスすることが要求されたとき、リモートデータディレクトリＲＤＩＲを調べることによって、ノード内のプロセサが当該アドレスのデータのコピーであるデータコピーを所有しており、当該データコピーのコヒーレンス状態がノード間Ｓ状態であって、かつノード内Ｆ状態であるか否かを判別するステップと、
２）ステップ１）でノード内のプロセサが前記アドレスのデータのコピーであるデータコピーを所有しており、前記データコピーのコヒーレンス状態がノード間Ｓ状態であって、かつノード内Ｆ状態であると判別された場合に、前記データコピーを要求元に直接転送し、当該要求元のデータコピーのコヒーレンス状態をノード内Ｉ状態からノード内Ｆ状態に変更することによってＳｈａｒｅ−Ｆ状態とし、一方要求された当該データコピーのコヒーレンス状態をノード内Ｆ状態からノード内Ｓ状態に変更するステップと、
３）リモートノード内のルートメモリのアドレスのデータにアクセスすることが要求されたとき、リモートデータディレクトリＲＤＩＲを調べることによって、ノード内のプロセサが当該アドレスのデータのコピーであるデータコピーを未所有であるか否か、および当該データコピーを所有するが当該データコピーのコヒーレンス状態がノード内Ｓ状態であるか否かを判別するステップと、
４）ステップ３）でノード内のプロセサが前記アドレスのデータのコピーであるデータコピーを未所有であるか、または当該データコピーを所有するが当該データコピーのコヒーレンス状態がノード内Ｓ状態であると判別された場合に、前記アクセスすることが要求されたデータをＣＰＵのルートメモリに所有するリモートノードのローカルメモリディレクトリＬＤＩＲを調べることによって、コヒーレンス状態がノード間Ｆ状態である当該データコピーを所有するリモートノードを発見するステップと、
５）ステップ４）で発見されたリモートノードにおいて、リモートデータディレクトリＲＤＩＲを調べることによって、コヒーレンス状態がノード内Ｆ状態である前記データコピーを所有する当該リモートノード内のプロセサを発見するステップと、
６）ステップ５）で発見された前記リモートノード内のプロセサから前記データコピーを要求元に直接転送し、当該要求元のデータコピーのコヒーレンス状態をノード内Ｉ状態およびノード間Ｉ状態からノード内Ｆ状態およびノード間Ｆ状態に変更し、要求された前記リモートノード内のプロセサのデータコピーのコヒーレンス状態をノード間Ｆ状態からノード間Ｓ状態に変更することによってＳｈａｒｅ−Ｆ状態とするステップと、
を備えることを特徴とする。

【００１２】
好ましくは、
コヒーレンス情報が３段階のディレクトリによって記録され、第１段階のデイレクトリはノードコントローラのリモートデータプロクシユニットＲＰに位置するリモートデータディレクトリＲＤＩＲであり、第２段階のデイレクトリはノードコントローラのローカルデータプロクシユニットＬＰに位置するローカルデータプロクシディレクトリＬＤＩＲであり、第３段階はルートプロセサのメモリデータプロクシユニットに位置するルートディレクトリであることを特徴とする。
【００１３】
好ましくは、
リモートデータディレクトリＲＤＩＲにおけるＳ状態が、それぞれノード内フラグシグナルとノード間フラグシグナルを使うことによって、２重ベクトル表現法で表され、当該２つのフラグシグナルは食い違った情報を持つことができ、ノード内キャッシュコヒーレンシドメインにおける状態がＦ状態として設定され、かつノード間キャッシュコヒーレンシドメインにおける状態がＳ状態として設定されるＳｈａｒｅ−Ｆ状態に設定されることができることを特徴とする。
【００１４】
好ましくは、
同一のアドレスを持つＳ状態のデータコピーが各キャッシュコヒーレンシドメイン内でＳｈａｒｅ−Ｆ状態を構成することが許され、従って、システム全体では多数のＦ状態が存在するが、各キャッシュコヒーレンシドメインは１つのＦ状態のみを持つことを特徴とする。
【００１５】
好ましくは、
ノードコントローラはリモートデータキャッシュＲＤＣを接続することができ、キャッシュされたＳ状態のリモートデータコピーはノード間キャッシュコヒーレンシドメインＳ状態かつノード内キャッシュコヒーレンシドメインＦ状態として記録されることを特徴とする。
【発明の効果】
【００１６】
本発明の多階層キャッシュコヒーレンシドメインシステムのローカルドメインにおけるＳｈａｒｅ−Ｆ状態の構成方法は、ノード内の複数のプロセサによって使用されるノードのリモートキャッシュデータを効果的にサポートすることができ、ノード間アクセスの頻度とオーバヘッドを低下させ、従って２階層または多階層のキャッシュコヒーレンシドメインＣＣ−ＮＵＭＡシステムのシステム性能を大きく改善する。
【図面の簡単な説明】
【００１７】
【図１】マルチノード・マルチプロセサシステムの構成の概略図である。
【図２】ここに開示されている第１の実施形態に係るローカルノードにおけるメモリアクセスの概略図である。第１の実施形態では、ローカルのＳｈａｒｅ−Ｆ状態は存在しない。
【図３】ここに開示されている第２の実施形態に係るリモートノードにおけるメモリアクセスの概略図である。第２の実施形態では、ローカルのＳｈａｒｅ−Ｆ状態は存在しない。
【図４】ここに開示されている第３の実施形態に係るローカルノードにおけるメモリアクセスの概略図である。第３の実施形態では、ローカルのＳｈａｒｅ−Ｆ状態が存在する。
【図５】ここに開示されている第４の実施形態に係るリモートノードにおけるメモリアクセスの概略図である。第４の実施形態では、ローカルのＳｈａｒｅ−Ｆ状態が存在する。
【発明を実施するための形態】
【００１８】
ここに本発明の目的、技術的解決策および長所をもっと分かりやすくするために、添付図面と実施形態を組み合わせて本発明について更に詳細に説明する。ここに記載される特定の実施形態は本発明を説明するために使われるのみであり、本発明を制限することを意図しないことが理解されるべきである。
【００１９】
図１に示すように、各ノードは２個のプロセサＣＰＵと１個のノードＮＣのコントローラで形成される。ローカルノード内の数個のプロセサと１個のノードコントローラがノード内キャッシュコヒーレンシドメイン内に位置し、数個のノードコントローラがシステムの相互配線ネットワークによって接続され、ノード間キャッシュコヒーレンシドメインを形成する。そこで、プロセサはノード内のプロセサ間データ転送を実現し、ノードコントローラのプロクシを使うことによってノード間メモリアクセスとデータ転送のような操作を実現する。
【００２０】
図２に示すように、システムは４つのノードＮＣとノード間相互接続ネットワーク（１７６）によって形成される。各ノードは２個のＣＰＵを含む。ノード内のノードＮＣとＣＰＵはそれぞれノード内キャッシュコヒーレンシドメインを形成する。ノード内キャッシュコヒーレンシドメインは、ノードＮＣ１内のキャッシュコヒーレンシドメイン（１０９）、ノードＮＣ２内のキャッシュコヒーレンシドメイン（１２９）、ノードＮＣ３内のキャッシュコヒーレンシドメイン（１４９）、およびノードＮＣ４内のキャッシュコヒーレンシドメイン（１６９）を含む。同時に、ドメイン間相互接続ネットワークを使うことによって４つのノードＮＣはノード間キャッシュコヒーレンシドメイン（１８９）を構成する。
【００２１】
本実施形態では、ノードＮＣ１（１０４）内のＣＰＵ１（１０３）が、リモートノードＮＣ２（１２４）内のＣＰＵ２（１３４）で、あるルートメモリへのアクセスを実行する。そのメモリアドレスはａｄｄｒ１である。そして、アクセスの前にノードＮＣ１（１０４）でＣＰＵ２（１１４）はａｄｄｒ１のデータコピーを所有し、コヒーレンス状態はＳである。アクセスの過程は次の通り記述される。
【００２２】
１）プロセサＣＰＵ１（１０３）はアクセス要求を送信する。そして、その操作はローカルキャッシュでヒットしない。それで、プロセサは、ノードＮＣ１（１０４）のコントローラのリモートデータプロクシＲＰ（１０５）ユニットのホームプロクシＨＰ（１０６）にリモートルートノードＮＣ２でメモリのデータにアクセスするための要求を送信する。ノードＮＣ１（１０４）のコントローラのリモートデータホームプロクシＨＰ（１０６）はそのリモートデータディレクトリＲＤＩＲに問い合わせ、ローカルプロセサＣＰＵ２（１１４）がアドレスａｄｄｒ１に対応するデータコピーを持ち、そのコヒーレンス状態がＳであることを発見する。従って、リモートデータホームプロクシＨＰ（１０６）は要求タイプ、アクセスアドレスなどを含むアクセス要求情報を記憶し、それからノードＮＣ１（１０４）のリモートデータキャッシュプロクシＣＰ（１０８）にその要求を転送する。
【００２３】
２）ノードＮＣ１（１０４）のリモートデータキャッシュプロクシＣＰ（１０８）は、ドメイン間相互接続ネットワーク（１７６）を使うことによってリモートノードＮＣ２（１２４）のローカルデータプロクシユニット（１３０）のローカルデータホームプロクシＨＰ（１３１）にアクセス要求メッセージを送信する。
【００２４】
３）ノードＮＣ２のローカルデータプロクシユニットＬＰ（１３０）のホームプロクシＨＰ（１３１）は、（要求タイプ、アクセスアドレスなどを含む）アクセス要求情報を記憶し、ローカルデータディレクトリＬＤＩＲを調べた後で、ノード間キャッシュコヒーレンシドメイン（１８９）内の他のノードがデータコピーを所有しないか、またはＳ状態のコヒーレンス状態を持つデータコピーを所有するのみであることを発見する。そしてそれから、ローカルキャッシュプロクシＣＰ（１３３）にその情報を転送する。ローカルキャッシュプロクシＣＰ（１３３）はプロセサＣＰＵ２（１３４）にそのアクセス要求情報を送信する。
【００２５】
４）アクセス要求情報を受信した後で、プロセサＣＰＵ２（１３４）は、アドレスａｄｄｒ１でメモリＭｅｍ２（１３５）からデータを抜き出し、ノードＮＣ２（１２４）のコントローラのローカルデータプロクシユニットＬＰ（１３０）のローカルキャッシュプロクシＣＰ（１３３）にデータの情報を返す。そして、ローカルキャッシュプロクシＣＰはローカルデータホームプロクシＨＰ（１３１）にその情報を転送する。ローカルデータホームプロクシＨＰ（１３１）はローカルデータディレクトリＬＤＩＲを最新の状態にし、ノード間キャッシュコヒーレンシドメイン（１８９）内のアドレスａｄｄｒ１に対応するノードＮＣ１（１０４）のデータコピーのコヒーレンス状態情報をＩ状態からＳ状態に変更する。そして、ホームプロクシＨＰ（１３１）はドメイン間相互接続ネットワーク（１７６）を介してノードＮＣ１（１０４）のコントローラのリモートデータプロクシユニットＲＰ（１０５）のリモートキャッシュプロクシＣＰ（１０８）に返信情報を送信する。
【００２６】
５）ノードＮＣ１（１０４）のリモートデータプロクシユニットＲＰ（１０５）のリモートキャッシュプロクシＣＰ（１０８）は、返信情報を受信し、それからリモートデータホームプロクシＨＰ（１０６）にその返信情報を転送する。リモートデータホームプロクシＨＰ（１０６）は、リモートデータディレクトリＲＤＩＲを最新の状態にし、ノードＮＣ１内のキャッシュコヒーレンシドメイン（１０９）におけるアドレスａｄｄｒ１に対応するＣＰＵ１（１０３）プロセサのデータコピーのコヒーレンス状態情報をＩ状態からＳ状態に変更し、ＣＰＵ１（１０３）に返信データ情報を送信する。
【００２７】
図３に示すように、システムは４つのノードＮＣとノード間相互接続ネットワーク（２７６）によって形成される。各ノードＮＣは２個のＣＰＵを含む。ノード内のノードＮＣとＣＰＵはそれぞれノード内キャッシュコヒーレンシドメインを形成する。キャッシュコヒーレンシドメインは、ノードＮＣ１内のキャッシュコヒーレンシドメイン（２０９）、ノードＮＣ２内のキャッシュコヒーレンシドメイン（２２９）、ノードＮＣ３内のキャッシュコヒーレンシドメイン（２４９）、およびノードＮＣ４内のキャッシュコヒーレンシドメイン（２６９）を含む。同時に、ドメイン間相互接続ネットワークを使うことによって４つのノードＮＣはノード間キャッシュコヒーレンシドメイン（２８９）を構成する。
【００２８】
本実施形態では、ノードＮＣ３（２４４）内のＣＰＵ１（２４３）が、リモートノードＮＣ２（２２４）内のＣＰＵ２（２３４）で、あるルートメモリへのアクセスを実行する。そのメモリアドレスはａｄｄｒ２である。アクセスの前に、ノードＮＣ１（２０４）でＣＰＵ１（２０３）プロセサはメモリアドレスａｄｄｒ２に対応するデータコピーを所有し、コヒーレンス状態はＦ状態である。アクセスの過程は次の通り記述される。
【００２９】
１）プロセサＣＰＵ１（２４３）はアクセス要求を送信する。そして、その操作はローカルキャッシュでヒットしない。それで、プロセサは、ノードＮＣ３（２４４）のコントローラのリモートデータプロクシユニットＲＰ（２４５）のリモートデータホームプロクシＨＰ（２４６）にリモートルートノードＮＣ２（２２４）でメモリのデータにアクセスするための要求を送信する。ノードＮＣ３（２４４）のコントローラのリモートデータホームプロクシＨＰ（２４６）は、アクセス要求情報（要求タイプ、アクセスアドレスなど）を記憶した後で、リモートデータディレクトリＲＤＩＲ（２４７）に問い合わせ、他のローカルＣＰＵがそのデータコピーを所有しないか、またはそのデータコピーを所有するがそのコヒーレンス状態がＳ状態であることを発見する。それで、リモートデータホームプロクシＨＰはリモートデータキャッシュプロクシＣＰ（２４８）にその要求を転送する。そして、リモートデータキャッシュプロクシＣＰ（２４８）はドメイン間相互接続ネットワークを介してリモートノードＮＣ２（２２４）のローカルデータプロクシユニットＬＰ（２３０）にアクセス要求情報を送信する。
【００３０】
２）ノードＮＣ２（２２４）のコントローラのローカルデータプロクシユニットＬＰ（２３０）のホームプロクシＨＰ（２３１）は、アクセス要求情報（アクセスタイプ、アクセスアドレスなど）を記憶し、ローカルデータディレクトリＬＤＩＲ（２３２）を調べ、アドレスａｄｄｒ２に対応するデータコピーがノードＮＣ１に位置し、Ｆ状態にあることを発見した後で、ノードＮＣ１（２０４）のリモートデータプロクシユニットＲＰ（２０５）にスヌープａｄｄｒ２パケットを送信する。
【００３１】
３）ノードＮＣ１（２０４）のコントローラのリモートデータプロクシユニットＲＰ（２０５）のリモートデータキャッシュプロクシＣＰ（２０８）は、ルートノードＮＣ２（２２４）によって送信されたスヌープ要求を受信し、それからリモートデータホームプロクシＨＰ（２０６）にその要求を転送する。リモートデータホームプロクシＨＰ（２０６）はリモートデータディレクトリＲＤＩＲ（２０７）を調べ、そのノード内のＣＰＵ１がａｄｄｒ２メモリのデータコピーを所有し、そのデータコピーはＦ状態にあることを発見し、それからＣＰＵ１（２０３）にスヌープパケットを転送する。
【００３２】
４）ＣＰＵ１（２０３）はスヌープパケットを受信し、アドレスａｄｄｒ２に対応するキャッシュデータの状態をＦ状態からＳ状態に変更し、ノードＮＣ１（２０４）のリモートデータプロクシユニットＲＰ（２０５）のリモートデータホームプロクシＨＰ（２０６）にＦ状態を持ったデータ情報を返す。そして、リモートデータホームプロクシＨＰ（２０６）はリモートデータキャッシュプロクシＣＰ（２０８）に返されたデータ情報を転送し、リモートデータディレクトリＲＤＩＲ（２０７）を最新の状態とし、アドレスａｄｄｒ２に対応するＣＰＵ１（２０３）のデータコピーの状態をＦ状態からＳ状態に変更する。
【００３３】
５）ノードＮＣ１（２０４）のコントローラのリモートデータプロクシユニットＲＰ（２０５）のリモートデータキャッシュプロクシＣＰ（２０８）は、ドメイン間相互接続ネットワークを介してノードＮＣ２（２２４）のローカルデータプロクシユニットＬＰ（２３０）のホームプロクシＨＰ（２３１）にスヌープ情報を返し、ノードＮＣ３（２４４）のリモートデータプロクシユニットＲＰ（２４５）のリモートデータキャッシュプロクシＣＰ（２４８）にアドレスａｄｄｒ２に対応するデータ情報を直接転送する。
【００３４】
６）ノードＮＣ３（２４４）のリモートデータプロクシユニットＲＰ（２４５）のリモートデータキャッシュプロクシＣＰ（２４８）は、ノードＮＣ１（２０４）によって転送されたアドレスａｄｄｒ２に対応するデータ情報を受信し、それからリモートデータホームプロクシＨＰ（２４６）にそのデータ情報を転送する。ホームプロクシＨＰ（２４６）はプロセサＣＰＵ１（２４３）にそのデータ情報を送信し、そのノードのリモートデータディレクトリＲＤＩＲ（２４７）を最新の状態とし、アドレスａｄｄｒ２に対応するＣＰＵ１（２４３）のデータコピーの状態をＩ状態からＦ状態に変更する。
【００３５】
７）返されたデータ情報を受信した後で、プロセサＣＰＵ１（２４３）は対応するデータ情報を記憶し、アドレスａｄｄｒ２に対応するデータコピーのコヒーレンス状態をキャッシュディレクトリにＦ状態として記録する。
【００３６】
図４に示すように、システムは４つのノードＮＣとノード間相互接続ネットワーク（３７６）によって形成される。各ノードＮＣは２個のＣＰＵを含む。ノード内のノードＮＣとＣＰＵはそれぞれノード内キャッシュコヒーレンシドメインを形成する。キャッシュコヒーレンシドメインは、ノードＮＣ１内のキャッシュコヒーレンシドメイン（３０９）、ノードＮＣ２内のキャッシュコヒーレンシドメイン（３２９）、ノードＮＣ３内のキャッシュコヒーレンシドメイン（３４９）、およびノードＮＣ４内のキャッシュコヒーレンシドメイン（３６９）を含む。同時に、ドメイン間相互接続ネットワークを使うことによって４つのノードＮＣはノード間キャッシュコヒーレンシドメイン（３８９）を構成する。
【００３７】
本実施形態では、ノードＮＣ３（３４４）内のＣＰＵ１（３４３）が、リモートノードＮＣ２（３２４）内のＣＰＵ２（３３４）で、あるルートメモリへのアクセスを実行する。そのメモリアドレスはａｄｄｒ３である。アクセスの前に、ノードＮＣ１（３０４）のＣＰＵ１（３０３）プロセサはアドレスａｄｄｒ３でメモリのデータコピーを所有し、コヒーレンス状態はＦ状態である。アクセスパスは第２の実施形態のそれと同様であるが、２階層キャッシュコヒーレンスドメインにおけるＦ状態の転送と移動の過程は異なる。特有の過程が次の通り記述される。
【００３８】
１）プロセサＣＰＵ１（３４３）はアクセス要求を送信する。そして、その操作はローカルキャッシュでヒットしない。それで、プロセサは、ＮＣ３（３４４）のノードコントローラにおけるリモートデータプロクシユニットＲＰ（３４５）のホームプロクシＨＰ（３４６）にリモートノードＮＣ２（３２４）でメモリのデータにアクセスするための要求を送信する。ノードＮＣ３（３４４）のコントローラのリモートデータホームプロクシＨＰ（３４６）は、アクセス要求情報（アクセスタイプ、アクセスアドレスなど）を記憶し、それから、リモートデータディレクトリＲＤＩＲ（３４７）に問い合わせ、他のローカルＣＰＵがそのデータコピーを所有しないか、またはそのデータコピーを所有するがそのコヒーレンス状態がＳ状態であることを発見する。それで、リモートデータホームプロクシＨＰはリモートデータキャッシュプロクシＣＰ（３４８）にその要求を転送する。そして、リモートデータキャッシュプロクシＣＰ（３４８）はドメイン間相互接続ネットワークを介してノードＮＣ２（３２４）のローカルデータプロクシユニットＬＰ（３３０）にアクセス要求情報を送信する。
【００３９】
２）ノードＮＣ２（３２４）のコントローラのローカルデータプロクシユニットＬＰ（３３０）のローカルデータホームプロクシＨＰ（３３１）は、アクセス要求情報（アクセスタイプ、アクセスアドレスなど）を記憶し、アドレスａｄｄｒ３に対応するメモリのデータコピーの状態のためにローカルメモリディレクトリＬＤＩＲ（３３２）を調べ、ノード間キャッシュコヒーレンシドメイン領域（３８９）内のノードＮＣ１がデータコピーを持ち、コヒーレンス状態がＦであることを発見し、それからドメイン間相互接続ネットワークを介してノードＮＣ１（３０４）のリモートデータプロクシユニットＲＰ（３０５）にスヌープａｄｄｒ３パケットを送信する。
【００４０】
３）ノードＮＣ１（３０４）のコントローラのリモートデータプロクシユニットＲＰ（３０５）のリモートキャッシュプロクシＣＰ（３０８）は、ＮＣ２（３２４）ルートノードによって送信されたスヌープパケットを受信し、それからリモートデータホームプロクシＨＰ（３０６）にその要求を転送する。ホームプロクシＨＰ（３０６）はリモートデータディレクトリＲＤＩＲ（３０７）を調べ、それからそのノード内のＣＰＵ１（３０３）がアドレスａｄｄｒ３に対応するデータコピーを所有し、コヒーレンス状態はＦであることを発見し、それからホームプロクシＨＰ（３０６）はＣＰＵ１（３０３）にスヌープパケットを転送する。
【００４１】
４）ＣＰＵ１（３０３）はスヌープパケットを受信し、そのスヌープパケットがノードＮＣ１（３０４）によって転送されたドメイン間スヌープパケットであることを発見し、それからアドレスａｄｄｒ２に対応するデータコピーの状態をＦ状態として保ち、ノードＮＣ１（３０４）のリモートデータプロクシユニットＲＰ（３０５）のリモートデータホームプロクシＨＰ（３０６）にＦ状態のデータ情報を返す。リモートデータホームプロクシＨＰ（３０６）はリモートデータキャッシュプロクシＣＰ（３０８）に返されたデータ情報を転送し、リモートデータディレクトリＲＤＩＲ（３０７）を最新の状態とし、ＣＰＵ１（３０３）プロセサにおけるアドレスａｄｄｒ２に対応するデータコピーの状態をノードＮＣ１（３０４）のキャッシュコヒーレンシドメイン（３０９）におけるＦ状態として記録し、ノード間キャッシュコヒーレンシドメイン領域（３８９）のＮＣ１（３０４）ノードにおけるアドレスａｄｄｒ３に対応するデータコピーの状態をＦ状態からＳ状態に変更する。
【００４２】
５）ノードＮＣ１（３０４）のリモートデータプロクシユニットＲＰ（３０５）のリモートキャッシュプロクシＣＰ（３０８）は、ドメイン間相互接続ネットワークを介してノードＮＣ２（３２４）のローカルデータプロクシユニットＬＰ（３３０）のホームプロクシＨＰ（３３１）にスヌープ情報を送信し、ノードＮＣ３（３４４）のリモートデータプロクシユニットＲＰ（３４５）のリモートデータキャッシュプロクシＣＰ（３４８）にアドレスａｄｄｒ３に対応するデータ情報を直接転送する。
【００４３】
６）ＮＣ２（３２４）ノードのローカルデータプロクシユニットＬＰ（３３０）のホームプロクシＨＰ（３３１）は、返されたスヌープ情報を受信し、ローカルメモリプロクシディレクトリＬＤＩＲ（３３２）におけるアドレスａｄｄｒ３に対応するデータコピーの状態を最新の状態にし、ノード間キャッシュコヒーレンシドメイン領域（３８９）のノードＮＣ１（３０４）におけるアドレスａｄｄｒ３に対応するデータコピーの状態をＦ状態からＳ状態に変更し、ノードＮＣ３（３４４）のアドレスａｄｄｒ３に対応するデータコピーの状態をＩ状態からＦ状態に変更する。
【００４４】
７）ノードＮＣ３（３４４）のリモートデータプロクシユニットＲＰ（３４５）のリモートデータキャッシュプロクシＣＰ（３４８）は、ノードＮＣ１（３０４）によって転送されたアドレスａｄｄｒ３に対応するデータ情報を受信し、それからリモートデータホームプロクシＨＰ（３４６）にそのデータ情報を転送する。ホームプロクシＨＰ（３４６）はプロセサＣＰＵ１（３４３）にそのデータ情報を送信し、そのノードのリモートデータディレクトリＲＤＩＲ（３４７）を最新の状態とし、ノードＮＣ３内のキャッシュコヒーレンシドメイン（３４９）のＣＰＵ１（３４３）プロセサにおけるアドレスａｄｄｒ３に対応するキャッシュの状態をＩ状態からＦ状態に変更し、ノード間キャッシュコヒーレンシドメイン領域（３８９）のノードＮＣ３（３４４）におけるアドレスａｄｄｒ３に対応するデータコピーの状態をＩ状態からＦ状態に変更する。
【００４５】
図５に示すように、システムは４つのノードＮＣとノード間相互接続ネットワーク（４７６）によって形成される。各ノードＮＣは２個のＣＰＵを含む。ノード内のノードＮＣとＣＰＵはそれぞれノード内キャッシュコヒーレンシドメインを形成する。キャッシュコヒーレンシドメインは、ノードＮＣ１内のキャッシュコヒーレンシドメイン（４０９）、ノードＮＣ２内のキャッシュコヒーレンシドメイン（４２９）、ノードＮＣ３内のキャッシュコヒーレンシドメイン（４４９）、およびノードＮＣ４内のキャッシュコヒーレンシドメイン（４６９）を含む。同時に、ドメイン間相互接続ネットワークを使うことによって４つのノードＮＣはノード間キャッシュコヒーレンシドメイン（４８９）を構成する。
【００４６】
本実施形態では、ノードＮＣ１（４０４）内のプロセサＣＰＵ２（４１４）が、リモートノードＮＣ２（４２４）内のＣＰＵ２（４３４）プロセサで、あるルートメモリへのアクセスを実行する。そのメモリアドレスはａｄｄｒ４である。アクセスの前に、ノードＮＣ１（４０４）のＣＰＵ１（４０３）プロセサはアドレスａｄｄｒ４に対応するメモリのデータコピーを所有し、そのデータコピーのコヒーレンス状態はＦ状態である。アクセスの過程は次の通り記述される。
【００４７】
１）ノードＮＣ１（４０４）内のプロセサＣＰＵ２（４１４）はアクセス要求を送信する。そして、その操作はローカルキャッシュでヒットしない。それで、プロセサは、ノードＮＣ１（４０４）のコントローラ内のリモートデータプロクシユニットＲＰ（４０５）のリモートデータホームプロクシＨＰ（４０６）にリモートルートノードＮＣ２（４２４）でメモリのデータにアクセスするための要求を送信する。
【００４８】
２）ノードＮＣ１（４０４）のコントローラのリモートデータプロクシユニットＲＰ（４０５）のリモートデータホームプロクシＨＰ（４０６）は、アクセス要求情報（アクセスタイプ、アクセスアドレスなど）を記憶し、それからリモートデータディレクトリＲＤＩＲ（４０７）を調べ、ローカルＣＰＵ１（４０３）がそのデータコピーを所有し、アドレスａｄｄｒ４に対応するそのデータコピーの状態がノードＮＣ１（４０４）のキャッシュコヒーレンシドメイン（４０９）内でＦ状態として記録されており、ノード間キャッシュコヒーレンシドメイン（４８９）内でＳ状態として記録されていることを発見する。それで、アドレスａｄｄｒ４のデータがノードＮＣ１（４０４）内でＳｈａｒｅ−Ｆ状態にあうことが決定される。
【００４９】
３）ノードＮＣ１（４０４）のコントローラのリモートデータプロクシユニットＲＰ（４０５）でリモートデータホームプロクシＨＰ（４０６）はＣＰＵ１（４０３）にスヌープパケットを送信する。ＣＰＵ１（４０３）はスヌープパケットを受信してそのパケットを解析し、そのパケットがノードＮＣ１（４０４）におけるプロセサＣＰＵ２（４１４）の要求であることを発見する。それでプロセサＣＰＵ１はノードＮＣ１（４０４）のコントローラのリモートデータプロクシユニットＲＰ（４０５）にスヌープ情報を送信し、アドレスａｄｄｒ４に対応するデータ情報とコヒーレンス状態をプロセサＣＰＵ２（４１４）に転送し、ＣＰＵ１（４０３）におけるキャッシュディレクトリのアドレスａｄｄｒ４に対応するデータコピーのコヒーレンス状態情報を最新の状態とし、コヒーレンス状態情報をＦ状態からＳ状態に変更する。
【００５０】
４）ノードＮＣ１（４０４）のコントローラのリモートデータプロクシユニットＲＰ（４０５）のリモートデータホームプロクシＨＰ（４０６）は、スヌープ情報を受信し、それからリモートデータディレクトリＲＤＩＲ（４０７）を最新の状態にし、ノードＮＣ１におけるキャッシュコヒーレンシドメイン（４０９）内のプロセサＣＰＵ１（４０３）のアドレスａｄｄｒ４に対応するデータコピーの状態をＦ状態からＳ状態に変更し、ＣＰＵ２（４１４）のアドレスａｄｄｒ４に対応するデータコピーの状態をＩ状態からＦ状態に変更する。
【００５１】
５）プロセサＣＰＵ２（４１４）は、プロセサＣＰＵ１（４０３）によって転送されたアドレスａｄｄｒ４に対応するデータ情報とコヒーレンス状態を受信し、そのキャッシュディレクトリにおけるアドレスａｄｄｒ４に対応するデータコピーのコヒーレンス状態をＩ状態からＦ状態に変更する。
【００５２】
上述した記載は本発明の好ましい実施形態のみであり、本発明を制限することを意図しない。本発明の精神と原理から逸脱することなしになされたいかなる変更、等価な置き換えおよび改善も本発明の保護範囲に含まれるであろう。
【図１】
0005833282.tif 000002
【図２】
0005833282.tif 000003
【図３】
0005833282.tif 000004
【図４】
0005833282.tif 000005
【図５】
0005833282.tif 000006