(57)【特許請求の範囲】
【請求項１】
１の１）第１レベルのノードコントローラにおいて、第１レベルの統一された論理キャッシュコヒーレンシドメインを構成するステップであって、当該第１レベルの統一された論理キャッシュコヒーレンシドメインは、第１レベルのノードコントローラと複数のプロセサで構成されるものである、前記構成するステップと、
１の２）第１レベルのノードコントローラが、複数の第１レベルの物理キャッシュコヒーレンシドメインを形成するステップであって、当該複数の第１レベルの物理キャッシュコヒーレンシドメインは前記第１レベルの統一された論理キャッシュコヒーレンシドメインに含まれるものであり、当該複数の第１レベルの物理キャッシュコヒーレンシドメインはお互いから分離されたものである、前記形成するステップと、
１の３）第１レベルのノードコントローラを通して直接に、またはノードルータを通して第１レベルのノードを接続し、当該第１レベルのノードの単一キャッシュコヒーレンシドメインを形成するステップと、
１の４）前記第１レベルのノードコントローラに直接接続された第２レベルのノードコントローラにおいて、第２レベルの統一された論理キャッシュコヒーレンシドメインを構成するステップであって、当該第２レベルの統一された論理キャッシュコヒーレンシドメインは、１個の前記第２レベルのノードコントローラと複数の前記第１レベルのノードコントローラで構成されるものである、前記構成するステップと、
１の５）第２レベルのノードコントローラが、複数の第２レベルの物理キャッシュコヒーレンシドメインを形成するステップであって、当該複数の第２レベルの物理キャッシュコヒーレンシドメインは前記第２レベルの統一された論理キャッシュコヒーレンシドメインに含まれるものであり、当該複数の第２レベルの物理キャッシュコヒーレンシドメインはお互いから分離されたものである、前記形成するステップと、
１の６）前記第２レベルのノードコントローラを通して直接に、またはノードルータを通して第２レベルのノードを接続して、当該第２レベルのノードの単一キャッシュコヒーレンシドメインを形成するステップと、
１の７）前記した１の４）〜１の６）のステップを第ｎ（ｎ＞２）レベルのノードに拡張するステップと、
で実現される第ｎ（ｎ＞２）レベルのノードを用いたＣＣ−ＮＵＭＡアーキテクチャのマルチプロセサシステムであって、
統一された論理キャッシュコヒーレンシドメインを物理キャッシュコヒーレンシドメインに分割するために、
２の１）前記第１レベルのノードコントローラのために、前記プロセサに接続された様々なポートの情報を、複数の前記プロセサと前記ノードコントローラによって形成される前記物理キャッシュコヒーレンシドメインのドメイン属性情報源として使い、各ポートのドメイン情報レジスタによって前記ポートの物理サブドメインを識別し、システムの要求に応じて前記ドメイン情報レジスタによって各ポートのドメイン属性情報を設定し、従って、複数の前記プロセサと前記ノードコントローラによって形成される様々な物理キャッシュコヒーレンシドメインの分割を実行し、
２の２）前記第２レベルのノードコントローラのために、前記第１レベルのノードコントローラに接続された様々なポートの情報を、複数の前記第１レベルのノードコントローラと１個の前記第２レベルのノードコントローラによって形成される物理キャッシュコヒーレンシドメインのドメイン属性情報源として使い、システムの要求に応じて各ポートのドメイン属性情報を設定し、従って複数の前記第１レベルのノードコントローラと１個の前記第２レベルのノードコントローラによって形成される様々な物理キャッシュコヒーレンシドメインの分割を実行し、
２の３）前記した項目２の２）に記載された前記第２レベルのノードコントローラのポートドメイン属性の設定方法を使うことによって、第ｎ（ｎ＞２）レベルのノードコントローラの各ポートのドメイン属性情報を設定し、
ディレクトリを構成するために、
３の１）前記第１レベルのノードコントローラがローカルとリモートの２重のディレクトリ構造を使用し、リモートデータディレクトリのために、ディレクトリエントリがローカルノード内での統一されたデータのコピーを持っているプロセサ及び当該プロセサのドメイン属性情報とコヒーレンス状態情報を記録し、ローカルデータディレクトリのために、ディレクトリエントリが前記データのコピーを持っているリモートノード及び当該リモートノードのコヒーレンス状態情報を記録し、データが位置する物理サブドメイン以外の前記ローカルノード内の他の物理サブドメインがデータのコピーを持っているかどうかを示すためにフラグビットがセットされ、
３の２）前記第２レベルのノードコントローラがローカルとリモートの２重のディレクトリ構造を使用し、リモートデータディレクトリのために、ディレクトリエントリがローカルの第２レベルのノード内での統一されたデータのコピーを持っている第１レベルのノード及び当該第１レベルのノードのドメイン属性情報とコヒーレンス状態情報を記録し、ローカルデータディレクトリのために、ディレクトリエントリが統一されたデータのコピーを持っているリモートの第２レベルのノード及び当該リモートの第２レベルのノードのコヒーレンス状態情報を記録し、当該データが位置する物理サブドメイン以外のローカルの第２レベルのノード内の他の物理サブドメインがデータのコピーを持っているかどうかを示すためにフラグビットがセットされ、
３の３）前記した項目３の２）に記載された前記第２レベルのノードコントローラのディレクトリ構成方法を使うことによって、第ｎ（ｎ＞２）レベルのノードコントローラのディレクトリ構造を設定する、
または、
３の４）前記第１レベルのノードコントローラがローカル/リモートの統一されたディレクトリ構造を使用し、データが位置する物理サブドメインのプロセサ以外のシステム内の全てのプロセサのうち、統一されたデータのコピーとコヒーレンス状態情報を持っているプロセサを、ディレクトリエントリが記録し、
３の５）前記第２レベルのノードコントローラがローカル／リモートの統一されたディレクトリ構造を使用し、データが位置する物理サブドメインの第１レベルのノードコントローラ以外のシステム内の全ての第１レベルのノードコントローラのうち、統一されたデータのコピーとコヒーレンス状態情報を持っている第１レベルのノードに対応するノードコントローラを、ディレクトリエントリが記録し、
３の６）前記した項目３の５）に記載された前記第２レベルのノードコントローラのディレクトリ構成方法を使うことによって、第ｎ（ｎ＞２）レベルのノードコントローラのディレクトリ構造を設定する、
ことを特徴とするマルチプロセサシステム。
【請求項２】
マルチプロセサシステムの構成方法であって、
キャッシュコヒーレンシドメイン構成方法と、キャッシュコヒーレンシドメイン分割方法と、ディレクトリ構成方法とを含み、
（１）前記キャッシュコヒーレンシドメイン構成方法は、
１）第１レベルのノードコントローラにおいて、第１レベルの統一された論理キャッシュコヒーレンシドメインを構成するステップであって、当該第１レベルの統一された論理キャッシュコヒーレンシドメインは、第１レベルのノードコントローラと複数のプロセサで構成されるものである、前記構成するステップと、
２）第１レベルのノードコントローラが、複数の第１レベルの物理キャッシュコヒーレンシドメインを形成するステップであって、当該複数の第１レベルの物理キャッシュコヒーレンシドメインは前記第１レベルの統一された論理キャッシュコヒーレンシドメインに含まれるものであり、当該複数の第１レベルの物理キャッシュコヒーレンシドメインはお互いから分離されたものである、前記形成するステップと、
３）第１レベルのノードコントローラを通して直接に、またはノードルータを通して第１レベルのノードを接続し、当該第１レベルのノードの単一キャッシュコヒーレンシドメインを形成するステップと、
４）前記第１レベルのノードコントローラに直接接続された第２レベルのノードコントローラにおいて、第２レベルの統一された論理キャッシュコヒーレンシドメインを構成するステップであって、当該第２レベルの統一された論理キャッシュコヒーレンシドメインは、１個の前記第２レベルのノードコントローラと複数の前記第１レベルのノードコントローラで構成されるものである、前記構成するステップと、
５）第２レベルのノードコントローラが、複数の第２レベルの物理キャッシュコヒーレンシドメインを形成するステップであって、当該複数の第２レベルの物理キャッシュコヒーレンシドメインは前記第２レベルの統一された論理キャッシュコヒーレンシドメインに含まれるものであり、当該複数の第２レベルの物理キャッシュコヒーレンシドメインはお互いから分離されたものである、前記形成するステップと、
６）前記第２レベルのノードコントローラを通して直接に、またはノードルータを通して第２レベルのノードを接続して、当該第２レベルのノードの単一キャッシュコヒーレンシドメインを形成するステップと、
７）前記した４）〜６）のステップを第ｎ（ｎ＞２）レベルのノードに拡張することにより、第ｎ（ｎ＞２）レベルのノードを用いたマルチプロセサシステムを実現するステップとからなり、
（２）前記キャッシュコヒーレンシドメイン分割方法は、
１）前記第１レベルのノードコントローラのために、前記プロセサに接続された様々なポートの情報を、複数の前記プロセサと前記ノードコントローラによって形成される前記物理キャッシュコヒーレンシドメインのドメイン属性情報源として使い、各ポートのドメイン情報レジスタによって前記ポートの物理サブドメインを識別し、システムの要求に応じて前記ドメイン情報レジスタによって各ポートのドメイン属性情報を設定し、従って、複数の前記プロセサと前記ノードコントローラによって形成される様々な物理キャッシュコヒーレンシドメインの分割を実行し、
２）前記第２レベルのノードコントローラのために、前記第１レベルのノードコントローラに接続された様々なポートの情報を、複数の前記第１レベルのノードコントローラと１個の前記第２レベルのノードコントローラによって形成される物理キャッシュコヒーレンシドメインのドメイン属性情報源として使い、システムの要求に応じて各ポートのドメイン属性情報を設定し、従って複数の前記第１レベルのノードコントローラと１個の前記第２レベルのノードコントローラによって形成される様々な物理キャッシュコヒーレンシドメインの分割を実行し、
３）前記分割方法の項目２）に記載された前記第２レベルのノードコントローラのポートドメイン属性の設定方法を使うことによって、第ｎ（ｎ＞２）レベルのノードコントローラの各ポートのドメイン属性情報を設定し、
（３）前記ディレクトリ構成方法は、
１）前記第１レベルのノードコントローラがローカルとリモートの２重のディレクトリ構造を使用し、リモートデータディレクトリのために、ディレクトリエントリがローカルノード内での統一されたデータのコピーを持っているプロセサ及び当該プロセサのドメイン属性情報とコヒーレンス状態情報を記録し、ローカルデータディレクトリのために、ディレクトリエントリが前記データのコピーを持っているリモートノード及び当該リモートノードのコヒーレンス状態情報を記録し、データが位置する物理サブドメイン以外の前記ローカルノード内の他の物理サブドメインがデータのコピーを持っているかどうかを示すためにフラグビットがセットされ、
２）前記第２レベルのノードコントローラがローカルとリモートの２重のディレクトリ構造を使用し、リモートデータディレクトリのために、ディレクトリエントリがローカルの第２レベルのノード内での統一されたデータのコピーを持っている第１レベルのノード及び当該第１レベルのノードのドメイン属性情報とコヒーレンス状態情報を記録し、ローカルデータディレクトリのために、ディレクトリエントリが統一されたデータのコピーを持っているリモートの第２レベルのノード及び当該リモートの第２レベルのノードのコヒーレンス状態情報を記録し、当該データが位置する物理サブドメイン以外のローカルの第２レベルのノード内の他の物理サブドメインがデータのコピーを持っているかどうかを示すためにフラグビットがセットされ、
３）前記ディレクトリ構成方法の項目２）に記載された前記第２レベルのノードコントローラのディレクトリ構成方法を使うことによって、第ｎ（ｎ＞２）レベルのノードコントローラのディレクトリ構造を設定する、
または、
４）前記第１レベルのノードコントローラがローカル/リモートの統一されたディレクトリ構造を使用し、データが位置する物理サブドメインのプロセサ以外のシステム内の全てのプロセサのうち、統一されたデータのコピーとコヒーレンス状態情報を持っているプロセサを、ディレクトリエントリが記録し、
５）前記第２レベルのノードコントローラがローカル／リモートの統一されたディレクトリ構造を使用し、データが位置する物理サブドメインの第１レベルのノードコントローラ以外のシステム内の全ての第１レベルのノードコントローラのうち、統一されたデータのコピーとコヒーレンス状態情報を持っている第１レベルのノードに対応するノードコントローラを、ディレクトリエントリが記録し、
６）前記ディレクトリ構成方法の項目５）に記載された前記第２レベルのノードコントローラのディレクトリ構成方法を使うことによって、第ｎ（ｎ＞２）レベルのノードコントローラのディレクトリ構造を設定する、
ことを特徴とするマルチプロセサシステムの構成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ応用分野に関し、特に、マルチキャッシュコヒーレンシドメインを有するノードを備えたマルチプロセサシステムの構成方法に関する。
【背景技術】
【０００２】
マルチプロセサシステムのために、マルチプロセサはシステム内でメモリ空間を共有する。現在、マルチプロセサの接続方法はバス接続からポイントツーポイント接続に変わっており、また、メモリはプロセサの外部ブリッジチップに接続される代わりに直接プロセサに接続される。メモリ接続方法の変化のために、システム内のメモリ配置がまた変わっている。それはマルチプロセサシステムにおけるメモリアクセスの非均一性を引き起こす。従って、現在のマルチプロセサシステムは大部分不均等メモリアクセス（ＮＵＭＡ：Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）アーキテクチャシステムを採用する。
【０００３】
ＮＵＭＡアーキテクチャマルチプロセサシステムは以下の三つの重要な特徴を持つ。：
１．全てのメモリは一様にアドレスされ、統一されたメモリ空間を形成する。
２．全てのプロセサはメモリ空間内の全てのアドレスにアクセスすることができる。
３．リモートメモリへのアクセスは、ローカルメモリへのアクセスより遅い。
【０００４】
ＮＵＭＡシステムはそのシステム内に分散したマルチキャッシュユニットを持つ。従って、マルチキャッシュの間でコヒーレンスの問題を解決するように、ＮＵＭＡシステムは設計される。キャッシュコヒーレンスを満足するＮＵＭＡシステムは、また、キャッシュコヒーレント不均等メモリアクセス（ＣＣ−ＮＵＭＡ：Ｃａｃｈｅ  Ｃｏｈｅｒｅｎｔ  Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）システムといわれる。キャッシュコヒーレンスの問題を解決する方法は、ＣＣ−ＮＵＭＡシステムの中心的な問題である。
【０００５】
現在、プロセサは直接メモリに接続され、プロセサはキャッシュコヒーレンスプロトコルをサポートする。従って、一つの解決策では、マルチプロセサシステムを形成するためにプロセサは直接相互接続され、プロセサ間のキャッシュコヒーレンスはこれらのプロセサのキャッシュコヒーレンスプロトコルのメンテナンスエンジンによって保証され、単一のキャッシュコヒーレンシドメインを形成する。
【０００６】
単一のキャッシュコヒーレンシドメインでは、各プロセサはプロセサＩＤ番号を使うことによって識別され、認識される。けれども、キャッシュコヒーレンシドメインの中で各プロセサは少なくとも１つのプロセサＩＤ番号を占有し、各プロセサによって識別されることができるプロセサＩＤ番号の数は制限されるので、この方法で構成されるマルチプロセサシステムの規模には制限がある。例えば、あるプロセサは４つのプロセサＩＤ番号を識別することができる、すなわちドメイン内で最大４つのプロセサの直接相互接続をサポートすることができる。更に例えば、あるプロセサは２つのプロセサＩＤ番号を識別することができ、キャッシュコヒーレンシドメイン内で２つのプロセサをサポートできるのみである。更に、物理的制限と価格制限のため、プロセサの相互接続ポートの数にも制限がある。ある場合には、単一キャッシュコヒーレンシドメイン内でプロセサによってサポートされるプロセサＩＤ番号の数は要求を満たすことができるけれども、直接接続は大きなホップ数とプロセサ間メモリアクセスの遅延を引き起こし、従って、高効率のマルチプロセサシステムを形成することができない。
【０００７】
プロセサの構成パラメータ、相互接続ポートの数及びサポートできるプロセサＩＤ番号の数はプロセサの価格と密接に関係する。一般的には、プロセサがサポートする相互接続ポートとプロセサＩＤ番号の数が少なければ少ないほど価格は低い。ドメイン内で２つのプロセサＩＤ番号をサポートするプロセサは４つのプロセサＩＤ番号をサポートするプロセサより安い。
【０００８】
上述した通り、プロセサを直接接続する方法で構成されたマルチプロセサシステムの規模には制限がある。大規模なＣＣ−ＮＵＭＡマルチプロセサシステムを実現するためには、ノードコントローラが必要とされる。ノードコントローラはシステムの規模を広げ、全体のキャッシュコヒーレンスを維持するために機能する。まず、各ノードコントローラは１個から４個のプロセサに接続され、ノードと第１レベルのキャッシュコヒーレンシドメインを形成する。そして、ドメイン内のコヒーレンスはプロセサとノードコントローラによって共同で維持される。また、ノードコントローラはドメイン内で少なくとも一つのプロセサＩＤ番号を占有し、それでドメイン内のプロセサとノードコントローラの数の合計は、そのドメイン内でプロセサによってサポート可能なプロセサＩＤ番号の数を超えることはできない。それから、ノードコントローラは直接に相互接続されるか、またはノードルーターを使って接続され、大規模なＣＣ−ＮＵＭＡシステムを形成する。ノード間の第２レベルのキャッシュコヒーレンスはノードコントローラによって維持される。あるノード内のプロセサがノードとキャッシュコヒーレンシドメインを超えて他のノード内のプロセサのメモリにアクセスするとき、全体のキャッシュコヒーレンスはノードコントローラによって維持される。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ＣＣ−ＮＵＭＡシステムはノードコントローラを使用してシステムの規模を広げ、全体のキャッシュコヒーレンスを維持する。それは、ドメイン間処理とドメイン間通信のオーバヘッドを増やし、リモートメモリへのアクセススピードが著しく低下する。そして、システムの規模が大きいほど、スピードの低下はより著しい。もし６４個のプロセサによってＣＣ−ＮＵＭＡシステムが組み立てられるならば、２つの解決策を採用することができる。解決策１では、各ノードのコヒーレンシドメイン内に４個のプロセサがあり、少なくとも１６個のノードコントローラがシステム全体のために必要である。解決策２では、ドメイン内で２つのプロセサＩＤ番号のみをサポートするプロセサが使用され、１つのノード内ではキャッシュコヒーレンシドメインは１個のプロセサと１個のノードコントローラにより構成されるのみであり、それで少なくとも６４個のノードコントローラが必要である。そのような多くのノードコントローラは、ノードのとても大きな相互接続の規模とずっと複雑なノード間接続形態に帰着する。従って、リモートメモリにアクセスするノード間のスピードは著しく低下し、システム効率の著しい低下と性能の巨大な損失を引き起こす。
【００１０】
マルチノード・マルチプロセサシステムに対してノードの数を削減することは、ノードの相互接続規模を削減し、ノード間の接続形態を簡略化することにおいて、特にドメイン内でとても限られた数の相互接続ポートとプロセサＩＤ番号をサポートできるプロセサに対して直接的で重要な役割を果たすことが分かる。従って、ノードコントローラの数を効果的に削減することができるか否かは、解決されるべき重要かつ緊急の技術的問題である。
【課題を解決するための手段】
【００１１】
マルチキャッシュコヒーレンシドメインを有するノードを備えたマルチプロセサシステムの構成方法の実施形態が提供される。
ここで開示される１つの実施形態は、キャッシュコヒーレンシドメイン構成方法と、キャッシュコヒーレンシドメイン分割方法と、ディレクトリ構成方法とを含み、
（１）前記キャッシュコヒーレンシドメイン構成方法は、
１）第１レベルのノードコントローラにおいて、第１レベルの統一された論理キャッシュコヒーレンシドメインを構成するステップであって、当該第１レベルの統一された論理キャッシュコヒーレンシドメインは、第１レベルのノードコントローラと複数のプロセサで構成されるものである、前記構成するステップと、
２）第１レベルのノードコントローラが、複数の第１レベルの物理キャッシュコヒーレンシドメインを形成するステップであって、当該複数の第１レベルの物理キャッシュコヒーレンシドメインは前記第１レベルの統一された論理キャッシュコヒーレンシドメインに含まれるものであり、当該複数の第１レベルの物理キャッシュコヒーレンシドメインはお互いから分離されたものである、前記形成するステップと、
３）第１レベルのノードコントローラを通して直接に、またはノードルータを通して第１レベルのノードを接続し、当該第１レベルのノードの単一キャッシュコヒーレンシドメインを形成するステップと、
４）前記第１レベルのノードコントローラに直接接続された第２レベルのノードコントローラにおいて、第２レベルの統一された論理キャッシュコヒーレンシドメインを構成するステップであって、当該第２レベルの統一された論理キャッシュコヒーレンシドメインは、１個の前記第２レベルのノードコントローラと複数の前記第１レベルのノードコントローラで構成されるものである、前記構成するステップと、
５）第２レベルのノードコントローラが、複数の第２レベルの物理キャッシュコヒーレンシドメインを形成するステップであって、当該複数の第２レベルの物理キャッシュコヒーレンシドメインは前記第２レベルの統一された論理キャッシュコヒーレンシドメインに含まれるものであり、当該複数の第２レベルの物理キャッシュコヒーレンシドメインはお互いから分離されたものである、前記形成するステップと、
６）前記第２レベルのノードコントローラを通して直接に、またはノードルータを通して第２レベルのノードを接続して、当該第２レベルのノードの単一キャッシュコヒーレンシドメインを形成するステップと、
７）前記した４）〜６）のステップを第ｎ（ｎ＞２）レベルのノードに拡張することにより、第ｎ（ｎ＞２）レベルのノードを用いたマルチプロセサシステムを実現するステップとからなり、
（２）前記キャッシュコヒーレンシドメイン分割方法は、
１）前記第１レベルのノードコントローラのために、前記プロセサに接続された様々なポートの情報を、複数の前記プロセサと前記ノードコントローラによって形成される前記物理キャッシュコヒーレンシドメインのドメイン属性情報源として使い、各ポートのドメイン情報レジスタによって前記ポートの物理サブドメインを識別し、システムの要求に応じて前記ドメイン情報レジスタによって各ポートのドメイン属性情報を設定し、従って、複数の前記プロセサと前記ノードコントローラによって形成される様々な物理キャッシュコヒーレンシドメインの分割を実行し、
２）前記第２レベルのノードコントローラのために、前記第１レベルのノードコントローラに接続された様々なポートの情報を、複数の前記第１レベルのノードコントローラと１個の前記第２レベルのノードコントローラによって形成される物理キャッシュコヒーレンシドメインのドメイン属性情報源として使い、システムの要求に応じて各ポートのドメイン属性情報を設定し、従って複数の前記第１レベルのノードコントローラと１個の前記第２レベルのノードコントローラによって形成される様々な物理キャッシュコヒーレンシドメインの分割を実行し、
３）前記分割方法の項目２）に記載された前記第２レベルのノードコントローラのポートドメイン属性の設定方法を使うことによって、第ｎ（ｎ＞２）レベルのノードコントローラの各ポートのドメイン属性情報を設定し、
（３）前記ディレクトリ構成方法は、
１）前記第１レベルのノードコントローラがローカルとリモートの２重のディレクトリ構造を使用し、リモートデータディレクトリのために、ディレクトリエントリがローカルノード内での統一されたデータのコピーを持っているプロセサ及び当該プロセサのドメイン属性情報とコヒーレンス状態情報を記録し、ローカルデータディレクトリのために、ディレクトリエントリが前記データのコピーを持っているリモートノード及び当該リモートノードのコヒーレンス状態情報を記録し、データが位置する物理サブドメイン以外の前記ローカルノード内の他の物理サブドメインがデータのコピーを持っているかどうかを示すためにフラグビットがセットされ、
２）前記第２レベルのノードコントローラがローカルとリモートの２重のディレクトリ構造を使用し、リモートデータディレクトリのために、ディレクトリエントリがローカルの第２レベルのノード内での統一されたデータのコピーを持っている第１レベルのノード及び当該第１レベルのノードのドメイン属性情報とコヒーレンス状態情報を記録し、ローカルデータディレクトリのために、ディレクトリエントリが統一されたデータのコピーを持っているリモートの第２レベルのノード及び当該リモートの第２レベルのノードのコヒーレンス状態情報を記録し、当該データが位置する物理サブドメイン以外のローカルの第２レベルのノード内の他の物理サブドメインがデータのコピーを持っているかどうかを示すためにフラグビットがセットされ、
３）前記ディレクトリ構成方法の項目２）に記載された前記第２レベルのノードコントローラのディレクトリ構成方法を使うことによって、第ｎ（ｎ＞２）レベルのノードコントローラのディレクトリ構造を設定する、
または、
４）前記第１レベルのノードコントローラがローカル/リモートの統一されたディレクトリ構造を使用し、データが位置する物理サブドメインのプロセサ以外のシステム内の全てのプロセサのうち、統一されたデータのコピーとコヒーレンス状態情報を持っているプロセサを、ディレクトリエントリが記録し、
５）前記第２レベルのノードコントローラがローカル／リモートの統一されたディレクトリ構造を使用し、データが位置する物理サブドメインの第１レベルのノードコントローラ以外のシステム内の全ての第１レベルのノードコントローラのうち、統一されたデータのコピーとコヒーレンス状態情報を持っている第１レベルのノードに対応するノードコントローラを、ディレクトリエントリが記録し、
６）前記ディレクトリ構成方法の項目５）に記載された前記第２レベルのノードコントローラのディレクトリ構成方法を使うことによって、第ｎ（ｎ＞２）レベルのノードコントローラのディレクトリ構造を設定する。
【発明の効果】
【００１２】
ここに開示の実施形態は次の有利な効果を有する。：ここに開示の実施形態は、ドメイン内のプロセサによってサポート可能な制限された数のプロセサＩＤ番号によって生じる制限されたノード規模の問題を解決することを目的とする。その問題は、マルチプロセサシステムによって必要とされる極端に大きい数のノードコントローラに帰着し、ノードの大きな相互配線規模と複雑な接続形態の原因となる。ここに開示の実施形態を適用することによって、中規模または大規模のメモリ共有マルチプロセサシステムによって必要とされるノードコントローラの数を著しく減少させ、従ってシステム性能を効果的に改善し、システムの接続形態の複雑さを削減することができる。
【図面の簡単な説明】
【００１３】
【図１】現存するマルチノード・マルチプロセサシステムのアーキテクチャの概略図である。
【図２】開示の実施形態によるマルチノード・マルチプロセサシステムのアーキテクチャの概略図である。
【図３】プロセサがローカルノード内の異なる物理サブドメインに位置するメモリにアクセスする例を示す図である。
【図４】ローカルノードプロセサがリモートノードのメモリにアクセスする例を示す図である。
【図５】プロセサがローカルノード内の同一の物理サブドメインに位置するメモリにアクセスする例を示す図である。
【図６】ディレクトリフォーマットの設計図である。
【図７】プロセサのポートの物理サブドメイン属性を設定する例を示す図である。
【図８】プロセサがローカルノード内の異なる物理サブドメインに位置するメモリにアクセスする過程のフローチャートである。
【図９】プロセサがリモートノードのメモリにアクセスする過程のフローチャートである。
【発明を実施するための形態】
【００１４】
以下に、添付図面を参照しながら本発明について詳細に説明する。
【００１５】
実施形態
複数のノードを有するマルチプロセサシステムにおいて、各ノードに対して、複数の物理キャッシュコヒーレンシドメインを完全に含むように、統一された論理キャッシュコヒーレンシドメインがそのノードのノードコントローラで構成される。複数の物理キャッシュコヒーレンシドメインは、お互いから分離されており、複数のプロセサとノードコントローラによって形成される。そして、それらのノードの単一のキャッシュコヒーレンシドメインを形成するように、それらのノードは直接にノードコントローラを通して接続されるか、またはノードルータ（ＮＲ）を通して接続される。
【００１６】
更に、上述したシステムの第１レベルのノードコントローラは第２レべルのノードコントローラに接続され、複数の物理キャッシュコヒーレンシドメインを完全に含むように、統一された論理キャッシュコヒーレンシドメインが第２レベルのノードコントローラで構成される。複数の物理キャッシュコヒーレンシドメインは、お互いから分離されており、複数の第１レベルのノードコントローラと第２レベルのノードコントローラによって形成される。第２レベルのノードの単一のキャッシュコヒーレンシドメインを形成するように、第２レベルのノードは直接に第２レベルのノードコントローラを通して接続されるか、またはノードルータ（ＮＲ）を通して接続される。
【００１７】
更に、上述した解決策は、また、もっと多くのレベルのノードを有するマルチプロセサシステムを実現するために、ｎ（ｎ＞２）レベルのノードシステムに拡張することができる。
【００１８】
上述したシステムのノードコントローラのために、プロセサに接続された様々なポートの情報を、複数のプロセサとノードコントローラによって形成される物理キャッシュコヒーレンシドメインのドメイン属性情報源として使うことができる。各ポートのドメイン情報レジスタはそのポートの物理サブドメインを識別する。そして、ポートドメイン情報レジスタはシステムの要求に応じて各ポートのドメイン属性情報を設定する。従って、複数のプロセサとノードコントローラによって形成される様々な物理キャッシュコヒーレンシドメインの区分を変更する。
【００１９】
第２レベルのノードコントローラのために、第１レベルのノードコントローラに接続された様々なポートの情報を、複数の第１レベルのノードコントローラと第２レベルのノードコントローラによって形成される物理キャッシュコヒーレンシドメインのドメイン属性情報源として使うことができる。そして、システムの要求に応じて様々なポートのドメイン情報が設定される。従って、複数の第１レベルのノードコントローラと第２レベルのノードコントローラによって形成される様々な物理キャッシュコヒーレンシドメインの区分を変更する。
【００２０】
同様に、システムの第２レベルのノードコントローラのポートドメイン属性設定方法を使うことによって、第ｎ（ｎ＞２）レベルのノードコントローラのポートドメイン属性を設定することができる。
【００２１】
ノードコントローラのディレクトリ構造のために、ローカルとリモートの２重のディレクトリ構造を使うことができる。そして、リモートデータディレクトリのために、ディレクトリエントリはローカルノード内でのデータのコピーを持っているプロセサ及びそのプロセサのドメイン属性情報とコヒーレンス状態情報を記録する。ローカルデータディレクトリのために、ディレクトリエントリはデータのコピーを持っているリモートノードとそのリモートノードのコヒーレンス状態情報を記録し、データが位置する物理サブドメイン以外のローカルノード内の他のサブドメインがデータのコピーを持っているかどうかを示すためにフラグビットがセットされる。
【００２２】
ノードコントローラのディレクトリ構造のために、ローカル／リモートの統一されたディレクトリ構造を使うことができる。そして、ディレクトリエントリはこの物理サブドメインのプロセサ以外のシステム内の全ての他のプロセサによって所持されているデータコピー情報とコヒーレンス状態情報を記録する。
【００２３】
同様に、第２レベルのノードコントローラはローカルとリモートの２重のディレクトリ構造を使うことができる。リモートデータディレクトリのために、ディレクトリエントリはローカルの第２レベルのノード内でのデータのコピーを持っている第１レベルのノード及びその第１レベルのノードのドメイン属性情報とコヒーレンス状態情報を記録する。ローカルデータディレクトリのために、ディレクトリエントリはデータのコピーを持っているリモートの第２レベルのノード及びそのリモートの第２レベルのノードのコヒーレンス状態情報を記録し、データが位置する物理サブドメイン以外のローカルの第２レベルのノード内の他のサブドメインがデータのコピーを持っているかどうかを示すためにフラグビットがセットされる。
【００２４】
第２レベルのノードコントローラは、また、ローカル／リモートの統一されたディレクトリ構造を使うことができる。そして、ディレクトリエントリはこの物理サブドメインの第１レベルのノードコントローラ以外のシステム内の全ての他の第１レベルのノードコントローラによって所持されているデータコピー情報とコヒーレンス状態情報を記録する。
【００２５】
同様に、システムの第２レベルのノードコントローラのディレクトリ構造の方法を使うことによって、第ｎ（ｎ＞２）レベルのノードコントローラのディレクトリ構造を設定することができる。
【００２６】
図１に示すように、各ノードは複数のプロセサとノードコントローラによって形成される。ローカルノード内の様々なプロセサとノードコントローラは同一の物理キャッシュコヒーレンシドメイン内に位置しており、ノード内のプロセサ間アクセス操作は直接実行されることができる。
【００２７】
図２に示すように、ノードコントローラは複数のノード内物理キャッシュコヒーレンシドメインを形成するようにプロセサに接続されることができる（例えば、図２のノードコントローラは２つのノード内物理キャッシュコヒーレンシドメインをサポートする。）。そして、図１に示すシステムと比べると、図２の方法を使うことによる同一規模のプロセサのＣＣ−ＮＵＭＡシステムを形成するために使用されるノードコントローラ数は半分に削減される。図中では、様々なノードコントローラが同一階層に位置している。ノードコントローラの複数の階層をつなぐことにより、大規模なシステムを組み立てることができる。
【００２８】
図３に示すように、プロセサＰ１（３０１）はノードの物理サブドメインＤｏｍ１（３０７）に属する。そして、プロセサＰ１（３０１）はローカルノードの物理サブドメインＤｏｍ２（３０８）内のプロセサＰ２（３０２）のメモリモジュールＭＥＭ２（３０５）のデータにアクセスする。典型的な処理手順を以下に示す。
【００２９】
プロセサＰ１（３０１）は、アクセス操作を実行するときプロセサ内のキャッシュにヒットしないならば、同一の物理キャッシュコヒーレンシドメイン内のノードコントローラ（３１５）にアクセスする。従って、プロセサＰ１（３０１）は、ノードコントローラ（３１５）のリモートメモリプロキシエンジンＲＰＥ（３１３）のホームプロキシＨＰ（３０９）にアクセス要求を送信する。
【００３０】
ノードコントローラ（３１５）のリモートメモリプロキシエンジンＲＰＥ（３１３）のホームプロキシＨＰ（３０９）は、プロセサＰ１（３０１）の送信したアクセス要求を受信し、ホームプロキシＨＰ（３０９）の内部でアクセス要求の情報を記憶する。アクセス要求の情報は、要求元のプロセサがどの物理サブドメインに位置するか、要求タイプ、アクセスアドレスなどを含む。そして、ホームプロキシＨＰ（３０９）は、処理手順においてリード／ライト要求の状態を維持する。
【００３１】
リモートメモリプロキシエンジンＲＰＥ（３１３）のホームプロキシＨＰ（３０９）は、リモートメモリディレクトリＲＤＩＲ（３１６）を調べて、ローカルノード内の宛先アドレスが位置する物理サブドメインと異なる様々な物理サブドメイン内でスヌープ・オペレーションを実行することが必要であるかどうかを決定する。この例では、物理サブドメインＤｏｍ１（３０７）は処理される必要がないとみなされる。リモートメモリプロキシエンジンＲＰＥ（３１３）のホームプロキシＨＰ（３０９）は、リモートメモリプロキシエンジンＲＰＥ（３１３）のキャッシュプロキシＣＰ（３１０）にアクセス要求を転送する。
【００３２】
ノードコントローラ（３１５）のリモートメモリプロキシエンジンＲＰＥ（３１３）のキャッシュプロキシＣＰ（３１０）は、アクセス要求を受信し、アクセス要求アドレスによりそれはこのノード内の他の物理サブドメインＤｏｍ２（３０８）内のメモリモジュールに属することを知る。そこでキャッシュプロキシＣＰ（３１０）は、ローカルメモリプロキシエンジンＬＰＥ（３１４）のホームプロキシＨＰ（３１２）にアクセス要求を転送する。
【００３３】
ノードコントローラ（３１５）のローカルメモリプロキシエンジンＬＰＥ（３１４）のホームプロキシＨＰ（３１２）は、アクセス要求を受信し、ローカルメモリディレクトリＬＤＩＲ（３１７）を調べて、他のノードが同じアドレスのデータコピーを持っているかどうかを決定する。持っていればノード間のコヒーレンシドメイン内の処理を実行することが必要とされる。この例では、他のノードは同じアドレスのデータコピーを持っていないとみなされる。ローカルメモリプロキシエンジンＬＰＥ（３１４）のホームプロキシＨＰ（３１２）は、ローカルメモリプロキシエンジンＬＰＥ（３１４）のキャッシュプロキシＣＰ（３１１）にアクセス要求を転送する。
【００３４】
ノードコントローラ（３１５）のローカルメモリプロキシエンジンＬＰＥ（３１４）のキャッシュプロキシＣＰ（３１１）は、ローカルメモリプロキシエンジンＬＰＥ（３１４）のホームプロキシＨＰ（３１２）の転送したアクセス要求を受信し、キャッシュプロキシＣＰ（３１１）の内部でそのアクセス要求の情報を保存する。アクセス要求は要求タイプ、アクセスアドレスなどを含む。キャッシュプロキシＣＰ（３１１）は、処理手順の中でリード／ライト要求の状態を維持する。
【００３５】
ローカルメモリプロキシエンジンＬＰＥ（３１４）のキャッシュプロキシＣＰ（３１１）は、アクセスアドレスにより、それがプロセサＰ２（３０２）のメモリモジュールＭＥＭ２（３０５）のデータに属することを決定し、そこでプロセサＰ２（３０２）にその要求を送信する。
【００３６】
プロセサＰ２（３０２）は、アクセス要求を受信して処理し、それからプロセサＰ２（３０２）はノードコントローラ（３１５）のローカルメモリプロキシエンジンＬＰＥ（３１４）にデータとそのコヒーレンス状態をリターンする。
【００３７】
ノードコントローラ（３１５）のローカルメモリプロキシエンジンＬＰＥ（３１４）のキャッシュプロキシＣＰ（３１１）は、リターンされたデータとそのコヒーレンス状態を受信し、それらをローカルメモリプロキシエンジンＬＰＥ（３１４）のホームプロキシＨＰ（３１２）に転送する。
【００３８】
ローカルメモリプロキシエンジンＬＰＥ（３１４）のホームプロキシＨＰ（３１２）は、リターンされたデータとそのコヒーレンス状態を受信し、ローカルデータディレクトリＬＤＩＲ（３１７）の中でリモートプロキシエンジン（３１３）のキャッシュプロキシＣＰ（３１０）がデータコピーとそのコヒーレンス状態を持っていることを記録する。ローカルメモリプロキシエンジン（３１４）のホームプロキシＨＰ（３１２）は、ローカルノード（３１５）のリモートメモリプロキシエンジンＲＰＥ（３１３）のキャッシュプロキシＣＰ（３１０）にデータとそのコヒーレンス状態をリターンする。
【００３９】
ノードコントローラ（３１５）のリモートメモリプロキシエンジンＲＰＥ（３１３）のキャッシュプロキシＣＰ（３１０）は、リターンされたデータとそのコヒーレンス状態を受信し、それらをリモートメモリプロキシエンジンＲＰＥ（３１３）のホームプロキシＨＰ（３０９）に転送する。
【００４０】
ノードコントローラ（３１５）のリモートメモリプロキシエンジンＲＰＥ（３１３）のホームプロキシＨＰ（３０９）は、リターンされたデータとそのコヒーレンス状態を受信し、要求アドレスのために、リモートメモリディレクトリＲＤＩＲ（３１６）内に、物理サブドメインＤｏｍ１（３０７）に属するプロセサＰ１（３０１）がそのアドレスのデータコピーと状態を持つことを記録する。
【００４１】
ノードコントローラ（３１５）のリモートメモリプロキシエンジンＲＰＥ（３１３）のホームプロキシＨＰ（３０９）は、要求元Ｄｏｍ１（３０７）のプロセサＰ１（３０１）にデータとそのコヒーレンス状態をリターンし、その要求の処理を完了する。
【００４２】
図４に示すように、プロセサＰ１（４０１）はノードＮｏｄｅ１（４３３）の物理サブドメインＤｏｍ１（４１３）に属する。そして、プロセサＰ１（４０１）はリモートノードＮｏｄｅ２（４３４）の物理サブドメインＤｏｍ２（４１６）内のプロセサＰ２（４０５）のメモリモジュールＭＥＭ２（４１１）のデータにアクセスする。処理手順を以下に示す。
【００４３】
ノードＮｏｄｅ１（４３３）のプロセサＰ１（４０１）はアクセス操作を実行するときそのプロセサ内のキャッシュにヒットしない。そして、アクセスアドレスにより、プロセサＰ１（４０１）はそれがローカルノードＮｏｄｅ１（４３３）に属するのではなくて、リモートノードＮｏｄｅ２（４３４）に属することを知る。従って、プロセサＰ１（４０１）は、ノードコントローラ（４３５）のリモートメモリプロキシエンジンＲＰＥ（４２７）のホームプロキシＨＰ（４１７）にアクセス要求を送信する。
【００４４】
ノードコントローラ（４３５）のリモートメモリプロキシエンジンＲＰＥ（４２７）のホームプロキシＨＰ（４１７）は、プロセサＰ１（４０１）の送信したアクセス要求を受信し、ホームプロキシＨＰ（４１７）の内部で、そのアクセス要求の情報を保存する。その情報は、要求元のプロセサがローカルノードＮｏｄｅ１のどの物理サブドメイン（Ｄｏｍ１またはＤｏｍ２）に位置するか、要求タイプ、アクセスアドレスなどを含む。そして、ホームプロキシＨＰ（４１７）は、処理手順の中でキャッシュリード／ライト要求の状態を維持する。
【００４５】
ノードＮｏｄｅ１（４３３）のリモートメモリプロキシエンジンＲＰＥ（４２７）のホームプロキシＨＰ（４１７）は、リモートメモリディレクトリＲＤＩＲ（４２５）を調べて、ローカルノードの様々な物理サブドメイン内でスヌープ・オペレーションを実行することが必要であるかどうかを決定する。この例では、物理サブドメインＤｏｍ１（４１３）に対する処理は必要ないとみなされる。リモートメモリプロキシエンジンＲＰＥ（４２７）のホームプロキシＨＰ（４１７）は、アクセス要求のアドレスにより、それがリモートノードＮｏｄｅ２（４３４）のメモリモジュールに属することを知り、従ってリモートメモリプロキシエンジンＲＰＥ（４２７）のキャッシュプロキシＣＰ（４１９）にアクセス要求を転送する。
【００４６】
ノードＮｏｄｅ１（４３３）のリモートメモリプロキシエンジンＲＰＥ（４２７）のキャッシュプロキシＣＰ（４１９）は、アクセス要求を受信し、キャッシュプロキシＣＰ（４１９）内で、そのアクセス要求の情報を保存する。その情報は、要求タイプ、アクセスアドレスなどを含む。そして、キャッシュプロキシＣＰ（４１９）は、処理手順の中でリード／ライト要求の状態を維持する。
【００４７】
リモートメモリプロキシエンジンＲＰＥ（４２７）のキャッシュプロキシＣＰ（４１９）は、アクセス要求のアドレスにより、それがノードＮｏｄｅ２（４３４）によって使用されるメモリモジュールに属することを知り、従ってＮｏｄｅ２（４３４）にその要求を送信する。
【００４８】
ノード間の相互接続ネットワークは、ノードＮｏｄｅ１（４３３）が送信した要求メッセージを宛先ノードＮｏｄｅ２（４３４）に送信する。
【００４９】
ノードＮｏｄｅ２（４３４）のローカルメモリプロキシエンジンＬＰＥ（４３２）のホームプロキシＨＰ（４２４）は、そのアクセス要求を受信し、ホームプロキシＨＰ（４２４）内で、その要求の情報を保存する。その情報は、その要求がどのリモートノードから送信されたか、要求タイプ、アクセスアドレスなどを含む。そして、ホームプロキシＨＰ（４２４）は、その処理手順の中でリード／ライト要求の状態を維持する。
【００５０】
ローカルメモリプロキシエンジンＬＰＥ（４３２）のホームプロキシＨＰ（４２４）は、ローカルメモリディレクトリＬＤＩＲ（４３０）を調べて、他のノードが同じアドレスのデータコピーを持っているかどうか決定する。持っていればノード間のコヒーレンシドメインでの処理を実行することが必要である。この例では、同じアドレスのデータコピーを持っている他のノードはなく、ノード間のコヒーレンシドメインの処理を実行することは必要ではないとみなされる。
【００５１】
ローカルメモリプロキシエンジンＬＰＥ（４３２）のホームプロキシＨＰ（４２４）は、ローカルメモリプロキシエンジンＬＰＥ（４３２）のキャッシュプロキシＣＰ（４２２）にその要求を転送する。
【００５２】
ローカルメモリプロキシエンジンＬＰＥ（４３２）のキャッシュプロキシＣＰ（４２２）は、アクセスアドレスにより、それがノードＮｏｄｅ２（４３４）の物理サブドメインＤｏｍ２（４１６）内のプロセサＰ２（４０５）によって使用されるメモリモジュールＭＥＭ２（４１１）のデータに属することを決定し、プロセサＰ２（４０５）にその要求を送信する。
【００５３】
ノードＮｏｄｅ２（４３４）のプロセサＰ２（４０５）は、アクセス要求を受信して処理する。そしてそれからプロセサＰ２（４０５）は、ノードコントローラ（４３６）のローカルメモリプロキシエンジンＬＰＥ（４３２）にデータとそのコヒーレンス状態をリターンする。
【００５４】
ノードコントローラ（４３６）のローカルメモリプロキシエンジンＬＰＥ（４３２）のキャッシュプロキシＣＰ（４２２）は、リターンされたデータとそのコヒーレンス状態を受信し、ローカルメモリプロキシエンジンＬＰＥ（４３２）のホームプロキシＨＰ（４２４）にそれらを転送する。
【００５５】
ノードコントローラ（４３６）のローカルメモリプロキシエンジンＬＰＥ（４３２）のホームプロキシＨＰ（４２４）は、リターンされたデータとそのコヒーレンス状態を受信し、ローカルメモリディレクトリＬＤＩＲ（４３０）内で、ノード１（４３３）がそのデータコピーとそのコヒーレンス状態を持っていることを記録する。ノードコントローラ（４３６）のローカルメモリプロキシエンジンＬＰＥ（４３２）のホームプロキシＨＰ（４２４）は、ノード１（４３３）のリモートメモリプロキシエンジンＲＰＥ（４２７）にデータとそのコヒーレンス状態をリターンする。
【００５６】
ノードコントローラ（４３５）のリモートメモリプロキシエンジンＲＰＥ（４２７）のキャッシュプロキシＣＰ（４１９）は、リターンされたデータとそのコヒーレンス状態を受信し、リモートメモリプロキシエンジンＲＰＥ（４２７）のホームプロキシＨＰ（４１７）にそれらを転送する。
【００５７】
ノードコントローラ（４３５）のリモートメモリプロキシエンジンＲＰＥ（４２７）のホームプロキシＨＰ（４１７）は、リモートデータディレクトリＲＤＩＲ（４２５）内で、Ｄｏｍ１のプロセサＰ１がデータとそのコヒーレンス状態を持っていることを記録する。そして、それからホームプロキシＨＰ（４１７）は、要求元Ｄｏｍ１のプロセサＰ１（４０１）にデータとそのコヒーレンス状態をリターンし、その要求の処理を完了する。
【００５８】
図５は、データのスヌープ（ｓｎｏｏｐ）メッセージの処理を示す。図５では、ノード１（５３３）のプロセサＰ２（５０２）は、ノードＮｏｄｅ１（５３３）の物理サブドメインＤｏｍ２（５１４）に属する。そして、プロセサＰ２（５０２）は、同じ物理サブドメインＤｏｍ２（５１４）に位置するプロセサＰ３（５０３）のメモリモジュールＭＥＭ３（５０９）のデータにアクセスする。典型的な処理手順を以下に説明する。
【００５９】
ノードＮｏｄｅ１（５３３）のプロセサＰ２（５０２）は、アクセス操作を実行するときそのプロセサ内のキャッシュにヒットしない。そして、アクセスアドレスにより、プロセサＰ２（５０２）は、そのアドレスがローカルノードＮｏｄｅ１（５３３）のプロセサＰ３によって使用されるメモリモジュールＭＥＭ３（５０９）に属することを知る。プロセサＰ３（５０３）とＰ２（５０２）は同じ物理サブドメインＤｏｍ２（５１４）に位置する。そこでプロセサＰ２（５０２）は直接メモリモジュールＭＥＭ３（５０９）にアクセスすることができる。プロセサＰ２（５０２）はプロセサＰ３（５０３）に直接アクセス要求を送信する。
【００６０】
プロセサＰ３（５０３）は、アクセス要求を受信する。そして、プロセサＰ３（５０３）は、この物理サブドメイン以外のプロセサの代わりに、ノードコントローラ１（５３５）がデータコピーを持っていることを見出す。受信したアクセス要求のタイプにより、プロセサＰ３（５０３）はノードコントローラ１（５３５）のローカルメモリプロキシエンジンＬＰＥ（５２８）のキャッシュプロキシＣＰ（５１８）にデータのスヌープ（ｓｎｏｏｐ）メッセージを送信する。
【００６１】
ノードコントローラ１（５３５）のローカルメモリプロキシエンジンＬＰＥ（５２８）のキャッシュプロキシＣＰ（５１８）は、データのスヌープメッセージを受信し、ノードコントローラ１（５３５）のローカルメモリプロキシエンジンＬＰＥ（５２８）のホームプロキシＨＰ（５２０）にそのメッセージを転送する。
【００６２】
ノードコントローラ１（５３５）のローカルメモリプロキシエンジンＬＰＥ（５２８）のホームプロキシＨＰ（５２０）は、データのスヌープメッセージを受信し、ローカルデータディレクトリＬＤＩＲ（５２６）を調べる。この例では、ローカルデータディレクトリＬＤＩＲ（５２６）はノード１（５３５）のその他の物理サブドメイン内のプロセサ（この例では、物理サブドメインＤｏｍ１内のプロセサ）とリモートノード２（５３４）内のプロセッサがそのデータコピーを持っていることを表示するとみなされる。従って、ローカルプロキシエンジンＬＰＥ（５２８）のホームプロキシＨＰ（５２０）は、ローカルノードＮｏｄｅ１（５３３）内のＤｏｍ１（５１３）のデータコピーを処理するために、ノードコントローラ（５３５）のリモートプロキシエンジンＲＰＥ（５２７）のキャッシュプロキシＣＰ（５１９）にデータのスヌープメッセージを転送する。更に、ローカルプロキシエンジンＬＰＥ（５２８）のホームプロキシＨＰ（５２０）は、リモートノードＮｏｄｅ２（５３４）内のデータコピーを処理するために、リモートノードＮｏｄｅ２（５３４）のリモートプロキシエンジンＲＰＥ（５３１）のキャッシュプロキシＣＰ（５２３）にデータのスヌープメッセージを送信する。
【００６３】
ノードコントローラ１（５３５）のリモートメモリプロキシエンジンＲＰＥ（５２７）のキャッシュプロキシＣＰ（５１９）は、送信されたデータのメッセージを受信し、そのメッセージをリモートメモリプロキシエンジンＲＰＥ（５２７）のホームプロキシＨＰ（５１７）に転送する。
【００６４】
ノードコントローラ１（５３５）のリモートメモリプロキシエンジンＲＰＥ（５２７）のホームプロキシＨＰ（５１７）は、そのメッセージを受信し、リモートデータディレクトリＲＤＩＲ（５２５）を調べ、ローカルノード（５３３）の物理サブドメインＤｏｍ１（５１３）内のプロセサがデータコピーを持っているかどうか決定する。この例では、ローカルノード（５３３）の物理サブドメインＤｏｍ１（５１３）内のプロセサＰ１（５０１）がそのデータコピーを持っているとみなされる。そして、ノードコントローラ１（５３５）のリモートメモリプロキシエンジンＲＰＥ（５２７）のホームプロキシＨＰ（５１７）は、物理サブドメインＤｏｍ１（５１３）内のプロセサＰ１（５０１）にデータのスヌープメッセージを送信する。
【００６５】
プロセサＰ１（５０１）は、データのスヌープメッセージを受信し、メッセージのタイプによりデータコピーの状態を最新の状態にする。そして、その後ノードコントローラ１（５３５）内のリモートデータエンジンＲＰＥ（５２７）のホームプロキシＨＰ（５１７）に返答メッセージをリターンする。
【００６６】
ノードコントローラ１（５３５）内のリモートメモリプロキシエンジンＲＰＥ（５２７）のホームプロキシＨＰ（５１７）は、ローカルノード内の全ての返答メッセージを集めて（この例では、物理サブドメインＤｏｍ１（５１３）内のプロセサＰ１（５０１）のみがデータコピーを持つ。）、リモートデータエンジンＲＰＥ（５２７）のキャッシュプロキシＣＰ（５１９）にデータのスヌープメッセージの返答を転送する。
【００６７】
ノードコントローラ１（５３５）内のリモートメモリプロキシエンジンＲＰＥ（５２７）のキャッシュプロキシＣＰ（５１９）は、ノードコントローラ１（５３５）内のローカルメモリプロキシエンジンＬＰＥ（５２８）のホームプロキシＨＰ（５２０）に返答メッセージを送信する。
【００６８】
ノードコントローラ１（５３５）内のローカルメモリプロキシエンジンＬＰＥ（５２８）のホームプロキシＨＰ（５２０）は、リモートメモリプロキシエンジンＲＰＥ（５２７）のキャッシュプロキシＣＰ（５１９）によって送信された返答メッセージを受信して、ローカルノードＮｏｄｅ１（５３３）のスヌーピングを終了する。
【００６９】
ローカルノードＮｏｄｅ１（５３３）をスヌーピングする処理の間に、ノードコントローラ２（５３６）のリモートメモリプロキシエンジンＲＰＥ（５３１）のキャッシュプロキシＣＰ（５２３）は、ノードコントローラ１（５３５）のローカルメモリプロキシエンジンＬＰＥ（５２８）のホームプロキシＨＰ（５２０）によって送信されたデータのスヌープメッセージを受信し、そのメッセージをノードコントローラ２（５３６）のリモートメモリプロキシエンジンＲＰＥ（５３１）のホームプロキシＨＰ（５２１）に転送する。
【００７０】
ノードコントローラ２（５３６）のリモートメモリプロキシエンジンＲＰＥ（５３１）のホームプロキシＨＰ（５２１）は、データのスヌープメッセージを受信し、リモートデータディレクトリＲＤＩＲ（５２９）を調べて、ローカルノード（５３４）内の様々な物理サブドメイン内のプロセサがデータコピーを持っているかどうか決定する。この例では、ノード２（５３４）の物理サブドメインＤｏｍ１（５１５）内のプロセサＰ１（５０４）がそのデータコピーを持ってるとみなされる。そして、ノードコントローラ２（５３６）のリモートメモリプロキシエンジンＲＰＥ（５３１）のホームプロキシＨＰ（５２１）は物理サブドメインＤｏｍ１（５１５）内のプロセサＰ１（５０４）にデータのスヌープメッセージを送信する。
【００７１】
プロセサＰ１（５０４）は、データのスヌープメッセージを受信し、そのメッセージのタイプにより内部のデータコピーの状態を最新の状態にする。そして、その後プロセサＰ１（５０４）は、ノードコントローラ２（５３６）内のリモートデータエンジンＲＰＥ（５３１）のホームプロキシＨＰ（５２１）に返答メッセージをリターンする。
【００７２】
ノードコントローラ２（５３６）内のリモートメモリプロキシエンジンＲＰＥ（５３１）のホームプロキシＨＰ（５２１）は、ローカルノード内の全ての返答メッセージを集めて、リモートデータエンジンＲＰＥ（５３１）のキャッシュプロキシＣＰ（５２３）に返答メッセージを転送する。
【００７３】
ノードコントローラ２（５３６）内のリモートメモリプロキシエンジンＲＰＥ（５３１）のキャッシュプロキシＣＰ（５２３）は、ノードコントローラ１（５３５）内のローカルメモリプロキシエンジンＬＰＥ(５２８)のホームプロキシＨＰ（５２０）に返答メッセージを送信する。
【００７４】
ノードコントローラ１（５３５）のローカルメモリプロキシエンジンＬＰＥ（５２８）のホームプロキシＨＰ（５２０）は、ノードコントローラ２（５３６）のリモートメモリプロキシエンジンＲＰＥ（５３１）のキャッシュプロキシＣＰ（５２３）によって送信された返答メッセージを受信する。
【００７５】
ノードコントローラ１（５３５）のローカルメモリプロキシエンジンＬＰＥ（５２８）のホームプロキシＨＰ（５２０）は、全ての返答メッセージを集めて、その後ローカルデータディレクトリＬＤＩＲ（５２６）を最新の状態にし、ローカルメモリプロキシエンジンＬＰＥ（５２８）のキャッシュプロキシＣＰ（５１８）に返答メッセージを転送する。
【００７６】
ノードコントローラ１（５３５）のローカルメモリプロキシエンジンＬＰＥ（５２８）のキャッシュプロキシＣＰ（５１８）は、物理サブドメインＤｏｍ２（５１４）内のプロセサＰ３（５０３）に返答メッセージを送信する。
プロセサP３（５０３）は、その返答を受信し、その後、内部のディレクトリ情報を最新の状態にし、要求元プロセサＰ２（５０２）にデータを送信する。
【００７７】
ディレクトリフォーマットのデザインを図６に示す。：
リモートメモリプロクシエンジンＲＰＥ内のリモートメモリディレクトリＲＤＩＲによって記録される情報は、アクセスアドレスにより二つに分けられる：
ローカルノードの様々な物理サブドメイン内のリモートアドレスのデータ共有者情報：ローカルノードの様々な物理サブドメイン内の様々なプロセサがデータコピー及びそのコヒーレンス状態を持っているかどうかが記録される；
ローカルノードの様々な物理サブドメイン内のローカルアドレスのデータ共有者情報：ローカルノードはＤｏｍ１〜Ｄｏｍｎを含むｎ個の物理サブドメインにより構成され、物理サブドメインＤｏｍｉ（i＝１、２、・・・ｎ）内のプロセサによって使用されるメモリデータのために、ＲＤＩＲはローカルノード内の物理サブドメインＤｏｍｊ（ｊ＝１、２、・・・ｎ且つｊ！＝i）内のプロセサがそのデータコピー及びそのコヒーレンス状態を持っているかどうかを記録する。
【００７８】
（図６（ｂ）に示すように）ローカルメモリプロキシエンジンＬＰＥ内のローカルメモリディレクトリＬＤＩＲによって記録される情報は、ローカルノード内のある物理サブドメインに属するメモリデータがリモートノードまたはそのローカルノードの他の物理サブドメインによってキャッシュされるかどうかを示す。
【００７９】
図６（ｃ）に示すように、ローカルおよびリモートディレクトリは、また統一されたディレクトリ構造（ＵＤＩＲ）に統合されることができる。ＵＤＩＲのディレクトリエントリは、この物理サブドメインのプロセサ以外のシステム内の全てのプロセサがデータコピー情報とコヒーレンス状態情報を持っていることを記録する。
【００８０】
図７に示すように、ノードコントローラ（７１２）は、多数の物理サブドメインをサポートすることができる。ノードコントローラ（７１２）の各プロセサのインターフェイスはどの物理サブドメインに属するかが設定されることができる。各プロセサのインターフェイスに対して、そのプロセサのインターフェイスが属する物理サブドメインを示すために物理サブドメイン識別レジスタ（７０９、７１０、７１１）が設定される。ノードコントローラのプロセサインターフェイスの物理サブドメイン識別レジスタ（７０９、７１０、７１１）は、システムの起動中に、およびシステムの稼働中に設定されることができる。
【００８１】
本明細書に記載された技術的特徴を除いて、使用された全ての技術は当業者に知られている先行技術である。
【図１】
0005852294.tif 000002
【図２】
0005852294.tif 000003
【図３】
0005852294.tif 000004
【図４】
0005852294.tif 000005
【図５】
0005852294.tif 000006
【図６】
0005852294.tif 000007
【図７】
0005852294.tif 000008
【図８】
0005852294.tif 000009
【図９】
0005852294.tif 000010