(57)【特許請求の範囲】
【請求項１】
コンピュータシステムであって、
相互接続と、
バスに接続された少なくとも１つのプロセッサを有し、前記相互接続に接続された複数のプロセッサ・ノードと、を備え、
１または複数のノードが、メモリの物理的アドレス空間を共有するプロセッサ・ノードのグループであるサイトを構成し、
それぞれのプロセッサ・ノードには、システムに渡って特有のノード識別情報が与えられ、
前記プロセッサ・ノードは、
前記バスから前記相互接続へのメッセージとメモリ・アクセス要求との出力を制御する出力制御部と、
前記相互接続から前記バスへのメッセージとメモリ・アクセス要求との入力を制御する入力制御部と、
前記プロセッサ・ノードが属するサイト内の他プロセッサ・ノードに与えられた、前記サイト内で特有のコヒーレンスノード番号とノード識別情報とのマッピングを格納するテーブルと、
同一サイト内のプロセッサ・ノードによるサイト内のメモリ共有を許容する一方、前記相互接続に接続され且つ同一サイト外に位置するプロセッサ・ノードによるサイト内のメモリ共有を禁止するメモリ保護部と、を有し、
プロセッサ・ノードの組みがメモリを共有するように設定された場合、それぞれのプロセッサ・ノードの組みに対してコヒーレンスノード番号を割り当てるとともに、コヒーレンスノード番号とノード識別情報とのマッピングを前記テーブルに格納し、プロセッサ・ノードが前記テーブルを参照して、ノード識別情報が付された入力メッセージが同一サイト内のプロセッサ・ノードからのメモリ・アクセス要求であるか否かを判定させることを特徴とする、コンピュータシステム。
【請求項２】
前記複数のプロセッサ・ノードはマルチプロセッサ・ノード・システムに分けられ、
少なくとも１つのマルチプロセッサ・ノード・システムに属する第１のプロセッサ・ノードのメモリは、前記マルチプロセッサ・ノード・システムに属する第２のプロセッサ・ノードに対してアクセス可能であり、
前記第２のプロセッサ・ノードのメモリは、前記第１のプロセッサ・ノードに対してアクセス可能であり、
前記第１のプロセッサ・ノードの前記入力制御部は、前記相互接続からの前記メモリ・アクセス要求に応じて、前記相互接続からのメモリ・アクセス要求を選択的に拒絶するメモリ・アクセス制御部を有する請求項１に記載のコンピュータシステム。
【請求項３】
前記複数のプロセッサ・ノードはマルチプロセッサ・ノード・システムに分けられ、
少なくとも１つのマルチプロセッサ・ノード・システムは分散共有メモリを有し、
マルチプロセッサ・ノード・システムに属する第１のプロセッサ・ノードのメモリは、前記マルチプロセッサ・ノード・システムに属する第２のプロセッサ・ノードに対してアクセス可能であり、
前記第２のプロセッサ・ノードのメモリは、前記第１のプロセッサ・ノードに対してアクセス可能であり、
前記第１のプロセッサ・ノードの前記入力制御部は、前記相互接続からのメモリ・アクセス要求に応じて、ノード識別番号と、コヒーレンス・ノード番号と、それらの間のマッピングを使用して、前記相互接続からのメモリ・アクセス要求を選択的に拒絶するメモリ・アクセス制御部を有する請求項１に記載のコンピュータシステム。
【請求項４】
前記複数のプロセッサ・ノードはマルチプロセッサ・ノード・システムに分けられ、
少なくとも１つのマルチプロセッサ・ノード・システムは分散共有メモリを有し、
マルチプロセッサ・ノード・システムに属する第１のプロセッサ・ノードのメモリは、前記マルチプロセッサ・ノード・システムに属する第２のプロセッサ・ノードに対してアクセス可能であり、
前記第２のプロセッサ・ノードのメモリは、前記第１のプロセッサ・ノードに対してアクセス可能であり、
前記第１のプロセッサ・ノードの前記入力制御部は、前記相互接続からのメモリ・アクセス要求に応じて、ノード識別番号、コヒーレンス・ノード番号、および前記ノード識別番号と前記コヒーレンス・ノード番号との間のマッピングを使用して、前記相互接続からのメモリ・アクセス要求を選択的に拒絶するメモリ・アクセス制御部を有する請求項１に記載のコンピュータシステム。
【請求項５】
相互接続に接続された複数のプロセッサ・ノードを有し、
前記複数のプロセッサ・ノードのうちの少なくとも１つは、
バスに接続されたメモリと、
キャッシュを有するプロセッサを少なくとも１つ含む、前記バスに接続された複数のプロセッサと、
メッシュコヒーレンスユニットと、を有し、
前記メッシュコヒーレンスユニットは、
前記プロセッサ・ノードが属する、メモリの物理的アドレス空間を共有するプロセッサ・ノードのグループであるサイト内の他プロセッサ・ノードに与えられている、前記サイト内で特有のコヒーレンス・ノード番号と、システムに渡って特有のノード識別情報とのマッピングを格納するテーブルと、
前記バスから前記相互接続へのメッセージとメモリ・アクセス要求との出力を制御する出力制御部と、
前記相互接続から前記バスへのメッセージとメモリ・アクセス要求との入力を制御する入力制御部と、
前記出力制御部と前記入力制御部との接続され、プロセッサ・ノード間のキャッシュ・コヒーレンスを制御するキャッシュ・コヒーレンス制御部と、を備え、
同一サイトに属するプロセッサは前記サイト内のメモリを共有する一方、同一サイト外に属するプロセッサは前記サイト内のメモリを共有せず、
プロセッサ・ノードの組みがサイト内のメモリを共有するように設定された場合、組みを構成するプロセッサ・ノードのそれぞれに対してコヒーレンスノード番号を割り当て、コヒーレンスノード番号とノード識別情報とのマッピングを前記テーブルに格納し、プロセッサ・ノードが前記テーブルの参照して、入力するノード識別情報の付されたメッセージが同一サイトに属するプロセッサ・ノードからのメモリ・アクセス要求であるか否かを判定することを特徴とする、コンピュータシステム。
【発明の詳細な説明】
出願中の他の出願の参照
本発明は、発明者がWofl-Dietrich Weber及びJaspal Kohliで、共通の譲受人であり、「統合されたメッセージ・パッシング・サポートを有する分散共有メモリマルチプロセッサのためのメモリ保護機構」の名称で、１９９８年１月７日に出願された審査中の出願シリアル番号９／００３，７７１に関係する。
発明の背景
１．発明の分野
本発明は、一般的にはコンピュータ通信プロトコルに関し、特に共有メモリ・キャッシュ・コヒーレンス及び保護された共有で無いメッセージ・パッシング（protected shared nothing message passing）の両方をサポートする統合されたプロトコルに関する。
２．背景技術の議論
あるクラスのマルチプロセッサ・データ・コンピュータシステムは、高速相互接続ネットワーク上で通信する複数のプロセッサ・ノードで構成される。各プロセッサ・ノードは、典型的にはプロセッサとローカル・ランダム・アクセス・メモリ（ＲＡＭ）を有する。演算上の問題は、異なるプロセッサ・ノードで利用可能な特定の資源を使用するか、又は結果を生成するのに必要な実時間を低減してそれにより演算を促進するように、プロセッサ・ノードに分割される。それゆえ、１つのプロセッサ・ノードで進行するプロセスはコンピュータシステムの他のプロセッサ・ノードで実行される演算に依存している。各種のプロセスは、情報を交換してプロセスを同期させるように相互接続上で通信する。
プロセッサが相互にどのように通信するかによって異なる２つの主たるマルチプロセッサ・プログラミングの例がある。共有メモリの例は、すべてのプロセッサが装置全体ですべてのメモリにアクセスするのを許す。プロセッサは、１つのプロセッサが所定のメモリ位置に値を書込み、他のプロセッサが同一のメモリ位置からその値を読むことにより、互いに通信する。これに対して、共有で無い（すなわち、メッセージ・パッシング）例では、各プロセッサはその固有メモリにだけアクセスすることができ、明瞭にメッセージを作成し、それらを他のプロセッサに送ることにより他のプロセッサと通信する。両方のプログラミング例は、それぞれ利点があり、両方共に使用されている。共有メモリ例の利点は、より効率的な通信を提供することであり、共有でない例は、１つのプロセスの他のすべてのプロセッサからのより良好な保護を提供することである。
従来技術のシステムは、１つ又は他のプログラミング例が可能である。もし両方が可能であれば、それらは２つの異なる形式の相互接続上でサポートされ、通常は共有メモリ及び関係するキャッシュ・コヒーレンス・プロトコルについては高性能相互接続で、メッセージ・パッシングについてはより低い性能の相互接続でサポートされる。
発明の概要
本発明の目的は、共有メモリ・キャッシュ・コヒーレンス・プロトコルと共有でないメッセージ・パッシング・プロトコルの同一の高性能相互接続上への統合を含み、プロセッサの共有メモリへの完全なアクセスは許すが、プロセッサの共有でないメモリ間には保護障壁を設ける。
本発明は、メッセージ・パッシング・プロトコルをスケーラブル共有メモリ・マルチプロセッシング・コンピュータシステムのキャッシュ・コヒーレンス管理に拡張するシステム及び方法に属する。スケーラブル共有メモリ・マルチプロセッシング・コンピュータシステムは、相互接続に接続された複数のプロセッサを有し、プロセッサは相互接続の上で相互に通信する。相互接続プロセッサは、共有メモリ・コンピュータシステム、共有でないコンピュータシステム、及び一部のプロセッサはメモリを共有するが他は共有しないハイブリッド・コンピュータシステムに適用可能な通信プロトコルを使用して、相互接続上でメッセージの送信と受信を行う。ハイブリッド・コンピュータシステムについては、プロセッサの共有メモリへの完全なアクセスは許すが、プロセッサの共有でないメモリ間には保護障壁を設けることが重要である。プロセッサ・ノードは、やって来るメッセージが（完全には保護されない）同一のコヒーレンス・グループ内から来るか、又は（共有でない保護を適用する）コヒーレンス・グループの外側から来るかを告げることが可能である。これにより、プロセッサ・ノード共有メモリと共有でないプロセッサ・ノードを、同一の相互接続上に一緒に存在させることを可能にする。これは、ノード識別番号（ＮＩＤｓ）、コヒーレンス・ノード番号（ＣＮＮｓ）、及びそれらの間のマッピング（地図）を使用して実現される。システムにおける各プロセッシング・ノードは、ＮＩＤが与えられる。メモリを共有する組内のノードは、それぞれＣＮＮが割り当てられ、ＣＮＮｓからＮＩＤｓまでの一貫したマッピングに一致する。このマッピングで、プロセッサ・ノードは、やって来たメッセージが（完全には保護されない）同一のコヒーレンス・グループ内から来たか、又は（共有でない保護を適用する）そのコヒーレンス・グループの外側から来たかを告けることができる。これにより、プロセッサ・ノード共有メモリと共有でないプロセッサ・ノードを、同一の相互接続上に一緒に存在させることを可能にする。
本発明のこれら及び他の目的は、以下の本発明の詳細な説明及び付属の図面から、当業者には明らかになるであろう。
【図面の簡単な説明】
図１は、本発明の多重プロセッサ・ノードを有するコンピュータシステムの機能ブロック図である。
図２は、メモリ・サブシステム、入力／出力サブシステム、メッシュ・コヒーレンス・ユニット（ＭＣＵ）及びそれぞれのキャッシュを有するプロセッサを含む図１のプロセッサ・ノードの例の機能ブロック図である。
図３は、メッシュ・コヒーレンス・ユニットのブロック図である。
好適な実施例の詳細な説明
本発明は、メッセージ・パッシング・プロトコルと必要な保護障壁をスケーラブル共有メモリ・マルチプロセッシング・コンピュータシステムに統合するシステム及び方法に属する。スケーラブル共有メモリ・マルチプロセッシング・コンピュータシステムは、相互接続に接続された複数のプロセッサを有し、プロセッサは相互接続の上で相互に通信する。メッセージが送られる伝統的な機構は、入力／出力チャンネルと相互接続を介する。これに対して、本発明は、同一の通信チャンネル、相互接続、キャッシュ・コヒーレンスとメッセージ・パッシングの両方を使用し、これがメッセージを交換するレートを著しく増加させる。各プロセッサは、プロセッサ間ノード・キャッシュ・コヒーレンス・プロトコルと密接に統合されたメッセージ・プロトコルを使用してメッセージの送信と受信を行うことにより、他の相互接続プロセッサと通信する。
図１は、本発明によるコンピュータシステム１００の機能ブロック図であり、多重プロセッサ・ノード１０２ａ−ｔと、接続されたノード間の点間通信を提供するプロセッサ・ノード相互接続１０４とを有する。それぞれのプロセッサ・ノード１０２ａ−ｔは、スタンドアロン・コンピュータシステムとして又はメモリを共有するコンピュータシステムを形成するように他のプロセッサ・ノード組み合わされて構成されている。「サイト」という語は、メモリにおける物理的なアドレス空間を共有するプロセッサ・ノードのグループを示すのに使用される。選択されたプロセッサ・ノード１０２ａ−ｄ，１０２ｆ−ｉ，１０２ｌ−ｏ及び１０２ｑ−ｔは、それぞれサイト１０６ａ，１０６ｂ，１０６ｃ及び１０６ｄとして構成されている。他のプロセッサ・ノード１０２ｅ，１０２ｊ，１０２ｋ及び１０２ｐも、相互接続１０４を介して接続されているが、メモリを共有していない。異なるサイトのプロセッサ・ノードは、メッセージ・パッシングを介して通信する。例えば、サイト１０６ａにおけるプロセッサ・ノードは、他のサイトのプロセッサ・ノード、例えばサイト１０６ｃのプロセッサ・ノード１０２ｎと相互接続１０４を介してメッセージを送ることにより通信する。各サイトは、典型的には、対称マルチプロセッサ（ＳＭＰ）上で動作するのに類似したオペレーティングシステムの単一コピーを動作させる。
プロセッサ・ノード１０２ａ−ｔ間の統合されたメッセージ・パッシング及びメモリ保護を有するキャッシュ・コヒーレンスは、例示のシステム１００に適用されることで、本発明が実現される。あるサイトにおけるプロセッサ・ノード、例えばサイト１０６ａのプロセッサ・ノード１０２ａ−ｄは、物理的なアドレスメモリ空間を共有する。更に、それぞれのプロセッサ・ノードは、それぞれのキャッシュメモリ２０４ａ−ｄ（図２）を有する多重プロセッサを有する。このように、キャッシュ・コヒーレンスは、プロセッサのキャッシュ間で、ノード内だけでなく、異なるプロセッサ・ノード内でも維持されなければならない。例えば、ノード１０２ａにおけるキャッシュは、ノード１０２ｂ−ｄにおけるキャッシュとコヒーレントでなければならない。
本発明は、サイト内のプロセッサ・ノードに共有物理アドレス空間へのアクセスを許し、サイト外のプロセッサ・ノードにはアクセスを拒絶するメモリ保護機構を有する。例えば、プロセッサ・ノード１０２ｅは、プロセッサ・ノード１０２ａにメッセージを送ることができる。しかし、プロセッサ・ノード１０２ｅはサイト１０６ａ内にはないので、プロセッサ・ノード１０２ｅはサイト１０６ａの物理アドレス空間でのメモリアクセス動作を実行できない。
メモリ保護機構は、ノード識別子（ＮＩＤｓ）及びコヒーレンス・ノード番号（ＣＮＮｓ）及びそれらの間のマッピングに依存している。システムにおける各プロセッサ・ノードは、システムに渡って特有のＮＩＤが与えられる。更に、サイト内の各プロセッサ・ノードは、サイトに特有のＣＮＮを割り当てられる。サイト内のプロセッサ・ノードは、それぞれそのサイト内の他のすべてのプロセッサ・ノードのＣＮＮｓとＮＩＤｓの間のマッピングを保持するテーブルを保持している。システム１００においては、サイト１０６ｄは、ＮＩＤ＝１５１、ＣＮＮ＝１のノード１０２ｔ、ＮＩＤ＝１５２、ＣＮＮ＝２のノード１０２ｓ、ＮＩＤ＝１５３、ＣＮＮ＝３のノード１０２ｒ、及びＮＩＤ＝１５４、ＣＮＮ＝４のノード１０２ｑを有している。プロセッサ・ノード間で通信されるメッセージは、常にソース・プロセッサ・ノードを識別するＮＩＤを有する。受けたノードは、そのマッピング・テーブルを使用して、やって来たメッセージが同一サイト内のプロセッシング・ノードから来たかそうでないかを決定する。もしソース・ノード・サイトが到着先ノード・サイトと異なれば、メモリ・アクセス保護を適用する。
図２は、プロセッサ・ノード１０２の機能ブロック図である。プロセッサ・ノード１０２は、例えば、図１のプロセッサ・ノード１０２ａ−ｔであり、それぞれキャッシュ２０４ａ−ｄを有するプロセッサ２０２ａ−ｄと、メモリ・サブシステム２０６と、入力／出力サブシステム２０８と、メッシュ・コヒーレンス・ユニット（ＭＣＵ）２１０とを有する。それぞれの機能ユニット２０２ａ−ｄ，２０６，２０８及び２１０は、バス２１２に接続され、ユニット間で制御、アドレス及びデータ信号を送ることができる。メッシュ・コヒーレンス・ユニット２１０は、相互接続１０４に接続されている。メッシュ・コヒーレンス・ユニット２１０は、プロセッサ間ノード・キャッシュ・コヒーレンス、プロセッサ間ノード・メッセージ・パッシング、及びプロセッサ間ノード・メモリ保護を統合する。
プロセッサ２０２ａ−ｄ、メモリ・サブシステム２０６、入力／出力サブシステム２０８、メッシュ・コヒーレンス・ユニット２１０、及びバス２１２は、１つの可能なプロセッサ・ノードの構成例を示し、例えば、異なる個数のプロセッサを使用することもできる。
図３は、メッシュ・コヒーレンス・ユニット２１０のブロック図であり、それはプロセッサ間ノード・キャッシュ・コヒーレンスを維持し、プロセッサ間ノード１０２ａ−ｔの間のメッセージ・パッシングをサポートし、及び許可されていないメモリ・アクセスから保護する。
メッシュ・コヒーレンス・ユニット２１０は、出力制御要素３１０、入力制御要素３１２、キャッシュ・コヒーレンス制御要素３１４、及び相互接続インターフェース３１６を有する。出力制御要素３１０はＣＮＮマップ・レジスタ３３２を有し、及び入力制御要素３１２はメモリ・アクセス制御要素３３４を有する。出力制御要素３１０は、バス２１から、ライン３２２を介して制御信号を、ライン３２４を介しデータ信号を受け、出力メッセージを相互接続インターフェース３１６に送り、指定されたプロセッサ・ノード１０２ａ−ｔに送る（図１を参照）。同様に、入力制御要素３１２は、相互接続インターフェース３１６からメッセージを受け、例えば１０２ａに送られるように、制御信号はライン３２６を介して、データ信号はライン３２８を介してバス２１２に送る（図１を参照）。
キャッシュ・コヒーレンス制御要素３１４は、キャッシュされたメモリ位置の状態情報を保持する。再び図２を参照して、サイト１０２内の各プロセッサ・ノードは、そのノード内のプロセッサに固有のメモリ・サブシステム２０６を有する。キャッシュ・コヒーレンス制御要素３１４（図３）は、メッシュ・コヒーレンス・ユニット２１０に対して相対的に固有のメモリ位置のコヒーレンシィを統合する。
ＣＮＮマップ・レジスタ３３２及びメモリ・アクセス制御要素３３４は、ノード識別番号（ＮＩＤｓ）、コヒーレンス・ノード番号（ＣＮＮｓ）、及びそれらの間のマッピングを使用して、プロセッサ・ノード間のメモリ保護を提供する。システム１００内の各ノード１０２（図１参照）は、ＮＩＤが与えられる。一旦ノードの組がメモリを共有させると、それぞれにＣＮＮが割り当てられ、すべてＣＮＮｓとＮＩＤｓの一貫したマッピングを採用する。このマッピングで、プロセッサ・ノードは、やって来るメッセージが（完全には保護されない）同一のコヒーレンス・グループから来たか、（共有でない保護が適用される）コヒーレンス・グループの外から来たかを告げることができる。これにより、プロセッサ・ノード共有メモリと共有でないプロセッサ・ノードを、同一の相互接続上に一緒に存在させることを可能にする。
これまで説明した例示の実施例は、説明のためであり、限界を意図したものではない。従って、当業者には、以下の請求の範囲の範囲及び趣旨から離れない範囲で、他の実施例が実現できることが認識されるであろう。
【図１】
0004306811.tif 000002
【図２】
0004306811.tif 000003
【図３】
0004306811.tif 000004