(57)【要約】【課題】【解決手段】  各プロセッサクラスタにおいて、トランザクションの処理が複数のプロトコルエンジン間で分散される、マルチプロセッサシステムが開示される。各クラスタは、ローカルなポイントツーポイント（ｐｏｉｎｔ−ｔｏ−ｐｏｉｎｔ）アーキテクチャによって相互に接続された相互接続コントローラおよび複数のローカルノードを含む。各クラスタ内の相互接続コントローラは、トランザクションを処理するための複数のプロトコルエンジンを有する。トランザクションは、それら自身に関連付けられた宛先情報の使用によって、プロトコルエンジン間で分散される。
2006518885.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムであって、
複数のプロセッサクラスタを備え、
各クラスタは、ローカルなポイントツーポイントアーキテクチャによって相互に接続された、相互接続コントローラおよび複数のローカルノードを含み、
各クラスタ内の前記相互接続コントローラは、複数のトランザクションを処理するための複数のプロトコルエンジンを含み、
各クラスタ内の前記相互接続コントローラおよび前記ローカルノードの少なくとも１つは、前記複数のトランザクションに関連付けられた宛先情報にしたがって、前記複数のトランザクションを前記複数のプロトコルエンジンにマッピングするように動作することができる、コンピュータシステム。
【請求項２】
請求項１に記載のコンピュータシステムであって、
各相互接続コントローラ内の前記複数のプロトコルエンジンは、リモートメモリを宛先とするトランザクションを処理するための少なくとも１つのリモートプロトコルエンジンと、ローカルメモリを宛先とするトランザクションを処理するための少なくとも１つのローカルプロトコルエンジンと、を含む、コンピュータシステム。
【請求項３】
請求項２に記載のコンピュータシステムであって、
第２のクラスタに向かう第１のトランザクションについて、第１のクラスタ内の第１の相互接続コントローラおよび第１のノードの１つによって用いられる前記宛先情報は、前記第１のトランザクションに関連付けられたパケットに対応する宛先アドレスを含む、コンピュータシステム。
【請求項４】
請求項３に記載のコンピュータシステムであって、
各相互接続コントローラ内の前記少なくとも１つのリモートプロトコルエンジンおよび前記少なくとも１つのローカルプロトコルエンジンは、複数のリモートプロトコルエンジンおよび複数のローカルプロトコルエンジンを含み、
前記第１の相互接続コントローラおよび前記第１のノードの１つは、前記宛先アドレス内の少なくとも１つのビットを参照することによって、前記第１のトランザクションを前記プロトコルエンジンの１つにマッピングするように動作することができる、コンピュータシステム。
【請求項５】
請求項４に記載のコンピュータシステムであって、
前記少なくとも１つのビットは、メモリライン境界またはメモリページ境界のいずれかに対応する、コンピュータシステム。
【請求項６】
請求項３に記載のコンピュータシステムであって、
前記第１の相互接続コントローラは、更に、前記パケット内のローカルノード識別子を、前記第２のクラスタに対応する宛先ノード識別子にマッピングするように動作することができる、コンピュータシステム。
【請求項７】
請求項６に記載のコンピュータシステムであって、
前記第２のクラスタに関連付けられた第２の相互接続コントローラは、前記宛先ノード識別子を使用して、前記第１のトランザクションを、前記第２の相互接続コントローラに関連付けられたプロトコルエンジンの１つにマッピングするように動作することができる、コンピュータシステム。
【請求項８】
請求項３に記載のコンピュータシステムであって、
前記宛先アドレスは、前記パケット内にある、コンピュータシステム。
【請求項９】
請求項３に記載のコンピュータシステムであって、
前記宛先アドレスは、前記第１の相互接続コントローラに関連付けられたメモリ内にあり、
前記第１の相互接続コントローラは、前記パケット内のトランザクション識別子を参照することによって、前記宛先アドレスを読み出すように動作することができる、コンピュータシステム。
【請求項１０】
請求項２に記載のコンピュータシステムであって、
第１のクラスタに向かう第１のトランザクションについて、前記第１のクラスタ内の第１の相互接続コントローラによって用いられる前記宛先情報は、前記第１のトランザクションに関連付けられたパケット内に、前記第１のトランザクションの向かう先である前記第１のクラスタ内のローカルノードに対応する宛先ノード識別子を含む、コンピュータシステム。
【請求項１１】
請求項１０に記載のコンピュータシステムであって、
各相互接続コントローラ内の前記少なくとも１つのリモートプロトコルエンジンおよび前記少なくとも１つのローカルプロトコルエンジンは、前記関連付けられたローカルノードの１つにそれぞれに対応する複数のリモートプロトコルエンジンおよび複数のローカルプロトコルエンジンを含み、
前記第１の相互接続コントローラは、前記宛先ノード識別子を参照することによって、前記第１のトランザクションを前記プロトコルエンジンの１つにマッピングするように動作することができる、コンピュータシステム。
【請求項１２】
請求項１１に記載のコンピュータシステムであって、
前記パケットは、関連する第２の相互接続コントローラを有する第２のクラスタを発信元とし、
前記第２の相互接続コントローラは、前記第２のクラスタに対応する前記パケット内のローカルノード識別子を前記宛先ノード識別子にマッピングするように動作することができる、コンピュータシステム。
【請求項１３】
請求項１に記載のコンピュータシステムであって、
各相互接続コントローラ内の前記複数のプロトコルエンジンは、リモートメモリを宛先とする複数のトランザクションを処理するための複数のリモートプロトコルエンジンと、ローカルメモリを宛先とする複数のトランザクションを処理するための複数のローカルプロトコルエンジンと、を含む、コンピュータシステム。
【請求項１４】
請求項１３に記載のコンピュータシステムであって、
第２のクラスタに向かう第１のトランザクションを、前記関連付けられたプロトコルエンジンの１つにマッピングするために、第１のクラスタ内の第１の相互接続コントローラおよび第１のノードの１つによって用いられる前記宛先情報は、前記第１のトランザクションに関連付けられた第１のパケットに対応する宛先アドレスを含み、
前記第１のクラスタに向かう第２のトランザクションをマッピングするために、前記第１の相互接続コントローラによって用いられる前記宛先情報は、前記第２のトランザクションに関連付けられた第２のパケット内に、前記第２のトランザクションの向かう先である前記第１のクラスタ内のローカルノードに対応する宛先ノード識別子を含む、コンピュータシステム。
【請求項１５】
請求項１に記載のコンピュータシステムであって、
前記宛先情報は、前記複数のトランザクションに関連付けられた複数の宛先アドレスを含み、
前記複数のトランザクションは、前記複数の宛先アドレスのインターリーブによって、前記関連付けられた複数のプロトコルエンジンの間で分散される、コンピュータシステム。
【請求項１６】
請求項１に記載のコンピュータシステムであって、
前記相互接続コントローラは、更に、前記コンピュータシステムにおけるキャッシュコヒーレンシを促進するように動作することができる、コンピュータシステム。
【請求項１７】
請求項１に記載のコンピュータシステムであって、
各クラスタは、ローカル生成された複数のトランザクションを当該クラスタ内において固有に識別するための関連するローカルトランザクション空間を有し、
各クラスタ内の前記相互接続コントローラは、前記クラスタ以外の他のクラスタに向かうローカル生成された複数のトランザクションのうちの選択されたトランザクションをグローバルトランザクション空間に、そして、前記関連付けられたローカルノードに向かうリモート生成された複数のトランザクションのうちの選択されたトランザクションを前記ローカルトランザクション空間に、それぞれ固有にマッピングするように動作することができる、コンピュータシステム。
【請求項１８】
請求項１に記載のコンピュータシステムであって、
各クラスタ内の前記相互接続コントローラは、更に、ローカル生成されたアドレス情報を前記クラスタ以外の他のクラスタに、そして、リモート生成されたアドレス情報を前記関連付けられたローカルノードに、それぞれマッピングするように動作することができる、コンピュータシステム。
【請求項１９】
請求項１に記載のコンピュータシステムであって、
前記ポイントツーポイントアーキテクチャは、複数のポイントツーポイントリンクを含み、
前記複数のクラスタは、複数のグローバルリンクによって相互に接続され、
各クラスタ内の前記相互接続コントローラは、更に、グローバルルーティング情報を使用して、前記クラスタ以外の他のクラスタに向かうローカル生成されたデータを前記グローバルリンクに、そして、ローカルルーティング情報を使用して、前記ローカルノードに向かうリモート生成されたデータを前記ローカルリンクに、それぞれマッピングするように動作することができる、コンピュータシステム。
【請求項２０】
請求項１に記載のコンピュータシステムであって、
第１のトランザクションは、第１のクラスタ内の第１のローカルノードによって生成されるパケットに対応し、
前記パケットは、前記第１のクラスタ内の前記相互接続コントローラに関連付けられた前記複数のプロトコルエンジンの第１のプロトコルエンジンに対応するノード識別子を含み、
前記第１のトランザクションは、前記ノード識別子を生成する前記第１のローカルノードが、前記第１のトランザクションに関連付けられた宛先アドレスを参照することによって、前記第１のプロトコルエンジンにマッピングされる、コンピュータシステム。
【請求項２１】
請求項１に記載のコンピュータシステムであって、
第１のトランザクションは、第１のクラスタ内の第１のローカルノードによって生成されるパケットに対応し、
前記パケットは、宛先アドレスを含み、
前記第１のトランザクションは、前記第１のクラスタ内の前記相互接続コントローラが、前記宛先アドレスを参照することによって、前記関連付けられたプロトコルエンジンの１つにマッピングされる、コンピュータシステム。
【請求項２２】
複数のプロセッサクラスタを有するコンピュータシステムにおいて使用するための相互接続コントローラであって、
各クラスタは、ローカルなポイントツーポイントアーキテクチャによって相互に接続された、複数のローカルノードおよび前記相互接続コントローラのインスタンスを含み、
前記相互接続コントローラは、
複数のトランザクションを処理するための複数のプロトコルエンジンと、
前記トランザクションに関連付けられた宛先情報を使用して、前記トランザクションを前記プロトコルエンジンにマッピングするように動作することができる回路構成と、を備える、相互接続コントローラ。
【請求項２３】
請求項２２に記載の相互接続コントローラを備える集積回路。
【請求項２４】
請求項２３に記載の集積回路であって、
特定用途向けの集積回路を含む集積回路。
【請求項２５】
請求項２２に記載の相互接続コントローラを表すデータ構造を格納された、少なくとも１つのコンピュータ読み取り可能媒体。
【請求項２６】
請求項２５に記載の少なくとも１つのコンピュータ読み取り可能媒体であって、
前記データ構造は、前記相互接続コントローラのシミュレート可能な表現を含む、コンピュータ読み取り可能媒体。
【請求項２７】
請求項２６に記載の少なくとも１つのコンピュータ読み取り可能媒体であって、
前記シミュレート可能な表現は、ネットリストを含む、コンピュータ読み取り可能媒体。
【請求項２８】
請求項２５に記載の少なくとも１つのコンピュータ読み取り可能媒体であって、
前記データ構造は、前記相互接続コントローラのコード記述を含む、コンピュータ読み取り可能媒体。
【請求項２９】
請求項２８に記載の少なくとも１つのコンピュータ読み取り可能媒体であって、
前記コード記述は、ハードウェア記述言語に相当する、コンピュータ読み取り可能媒体。
【請求項３０】
請求項２２に記載の相互接続コントローラの少なくとも一部を表す一組の半導体処理用マスク。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、マルチプロセッサコンピュータシステムに関するものである。より具体的には、本発明は、複数のマルチプロセッサクラスタを有するコンピュータシステムを構築するための技術を提供するものである。
【背景技術】
【０００２】
マルチプロセッサシステムの設計における比較的新しいアプローチは、プロセッサ間のブロードキャスト通信をポイントツーポイントの（point-to-point）データ転送メカニズムに置き換えるものである。このメカニズムにおいて、プロセッサは、密結合コンピューティングシステム内のネットワークノードと同様の方式で互いに通信し合う。すなわち、プロセッサは、複数の通信リンクを介して相互に接続され、要求は、各プロセッサに関連付けられたルーティングテーブルにしたがって、これらのリンクを通じてプロセッサ間を転送される。これは、マルチプロセッサプラットフォームにおける単位時間当たりの情報伝送量の増大を意図したものである。
【０００３】
このようなアーキテクチャの限界は、１つには、ポイントツーポイントインフラストラクチャに関連付けられたノードＩＤのアドレス空間が一定であるので、相互に接続できるノードの数に限りがある、という点である。また、このインフラストラクチャは、フラットでもあるので、アドレス空間のマッピングおよびルーティングの機能を単一レベルで許容することしかできない。また、このようなポイントツーポイントのデータ転送メカニズムを用いるコンピュータシステムでは、トランザクションの処理能力が、それらのトランザクション処理を担当するプロトコルエンジンの容量によって制限される。
【０００４】
したがって、このようなインフラストラクチャを基本構築ブロックとして用いるコンピュータシステムについて、このような限界を排除するための技術を提供することが望まれている。
【発明の開示】
【０００５】
ポイントツーポイント通信インフラストラクチャをそれぞれ用いる複数のマルチプロセッサクラスタを相互に接続されたマルチプロセッサシステムが、本発明にしたがって提供される。本発明は、各クラスタにおいて、複数のプロトコルエンジンを用いてトランザクションを処理することによって、トランザクション処理能力の向上を図る。具体的な一実施形態にしたがうと、トランザクションパケットは、その宛先アドレスにしたがって、クラスタに関連付けられた様々なプロトコルエンジンにマッピングされる。より具体的な一実施形態にしたがうと、宛先アドレスを指定しないトランザクションパケットは、そのパケットの目指す先のクラスタおよびクラスタリソースを特定するために用いられるパケット内情報に基づいて、１つのプロトコルエンジンにマッピングされる。
【０００６】
したがって、本発明は、複数のプロセッサクラスタを含むコンピュータシステムを提供する。各クラスタは、ローカルなポイントツーポイントアーキテクチャによって相互に接続された相互接続コントローラおよび複数のローカルノードを含む。各クラスタ内の相互接続コントローラは、トランザクションを処理するための複数のプロトコルエンジンを有する。各クラスタ内の相互接続コントローラおよび複数のローカルノードの少なくとも１つは、トランザクションを、それに関連付けられた宛先情報にしたがって、プロトコルエンジンにマッピングするように動作することができる。一実施形態にしたがうと、マッピングは、相互接続コントローラが、トランザクションに関連付けられた宛先アドレスを参照することによって実現される。別の一実施形態にしたがうと、マッピングは、ローカルノードが、ローカル相互接続コントローラに関連付けられ且つ少なくとも１つのプロトコルエンジンにそれぞれ対応している複数のノードの１つに宛先アドレスをマッピングすることによって実現される。
【０００７】
本発明の特性および利点は、明細書の以下の記述および図面を参照することによって、より良く理解することができる。
【発明を実施するための最良の形態】
【０００８】
以下では、発明者によって本発明を実施する最良の態様だと考えられている形態を含む、いくつかの具体的な実施形態が、詳しく説明される。これらの具体的な実施形態の例が、添付の図面に示されている。以下では、これらの具体的な実施形態に基づいて、本発明の説明が行われるが、これは、説明される実施形態に発明の範囲を限定することを意図しておらず、反対に、添付の特許請求の範囲に定められた本発明の趣旨および範囲に含まれるものとして、各種の代替形態、変更形態、および等価形態を含む。本発明の具体的な実施形態の実装には、プロセッサ間でポイントツーポイント通信を行うマルチプロセッサアーキテクチャが適している。以下の説明では、本発明の完全な理解を可能にするために、多数の詳細が特定されている。しかしながら、本発明は、これらの一部または全部の詳細を特定しなくても、実施することができる。また、本発明が不必要に不明瞭になるのを避けるため、周知の工程動作の詳細な説明は省略されている。更に、本出願中では、特定の一事業体のみが言及されているが、これは、文中に特にそのように明記されない限り、本発明の方法および装置が２つ以上の事業体によって実現される可能性も含むものである。
【０００９】
図１Ａは、本発明の技術を用いることができるマルチクラスタ＆マルチプロセッサシステムの一例を図式化したものである。各処理クラスタ１０１，１０３，１０５，１０７は、複数のプロセッサを含む。各処理クラスタ１０１，１０３，１０５，１０７は、ポイントツーポイントリンク１１１ａ〜１１１ｆを通じて互いに接続されている。図１Ａに示されたマルチクラスタアーキテクチャに含まれる複数のプロセッサは、グローバルメモリ空間を共有する。この例において、ポイントツーポイントリンク１１１ａ〜１１１ｆは、従来のフロントサイドバスに代わり、複数のクラスタ１０１，１０３，１０５，１０７に含まれる複数のプロセッサを接続するために用いられる内部システム接続である。ポイントツーポイントリンクは、任意のポイントツーポイントのコヒーレンスプロトコルをサポートすることができる。
【００１０】
図１Ｂは、本発明の技術を用いることができるマルチクラスタ＆マルチプロセッサシステムの別の一例を図式化したものである。各処理クラスタ１２１，１２３，１２５，１２７は、ポイントツーポイントリンク１４１ａ〜１４１ｄを通じてスイッチ１３１に結合される。スイッチおよびポイントツーポイントリンクの使用は、システム内において複数のクラスタを接続するために実装されるポイントツーポイントリンクの数を減らすことができる。スイッチ１３１は、コヒーレンスプロトコルインターフェースを伴う汎用プロセッサを含むことができる。様々な実装形態にしたがうと、図１Ａに示されたマルチクラスタシステムは、図１Ｂに示されるように、スイッチ１３１を用いて拡張することができる。
【００１１】
図２は、例えば図１Ａに示されたクラスタ１０１などのマルチプロセッサクラスタを図式化したものである。クラスタ２００は、プロセッサ２０２ａ〜２０２ｄと、１つまたはそれ以上の基本Ｉ／Ｏシステム（ＢＩＯＳ）２０４と、メモリバンク２０６ａ〜２０６ｄを含むメモリサブシステムと、ポイントツーポイント通信リンク２０８ａ〜２０８ｅと、サービスプロセッサ２１２と、を含む。ポイントツーポイント通信リンクは、プロセッサ２０２ａ〜２０２ｄと、Ｉ／Ｏスイッチ２１０と、相互接続コントローラ２３０と、の間の相互接続を可能にするように構成される。サービスプロセッサ２１２は、図２においてリンク２１４ａ〜２１４ｆによって表されるＪＴＡＧインターフェースを介し、プロセッサ２０２ａ〜２０２ｄと、Ｉ／Ｏスイッチ２１０と、相互接続コントローラ２３０と、の間の通信を可能にするように構成される。注目すべきは、他のインターフェースをサポートすることも可能である点である。Ｉ／Ｏスイッチ２１０は、起動を目的として、システムのその他の部分を、Ｉ／Ｏアダプタ２１６，２２０およびＢＩＯＳ２０４に接続する。
【００１２】
具体的な一実施形態にしたがうと、本発明のサービスプロセッサは、事前に指定された分割スキーマにしたがってシステムリソースを分割する能力を有する。分割は、システムプロセッサに関連付けられたルーティングテーブルをサービスプロセッサによって直接操作することを通じて実現することができる。これは、ポイントツーポイント通信インフラストラクチャによって可能になる。ルーティングテーブルは、また、１つまたはそれ以上のプロセッサにおいてＢＩＯＳコードを実行することによっても変更することができる。ルーティングテーブルは、各種のシステムリソースを制御および分離するために使用されるものであり、これらの各種のシステムリソース間の接続を定めている。
【００１３】
プロセッサ２０２ａ〜２０２ｄは、また、ポイントツーポイントリンク２３２ａ〜２３２ｄを通じて相互接続コントローラ２３０にも結合される。様々な実施形態にしたがうと、相互接続コントローラ２３０は、後ほど詳述されるように、様々な機能を実施することによって、システムにおいて相互に接続されるプロセッサの数を、複数のプロセッサクラスタの各自に関連付けられたノードＩＤ空間およびマッピングテーブルの限界を上回らせることができる。いくつかの実施形態にしたがうと、相互接続コントローラ２３０は、例えばクラスタ間でキャッシュの一貫性（キャッシュコヒーレンシ）を維持するなどの、他の様々な機能も実施する。相互接続コントローラ２３０は、他のマルチプロセッサクラスタに関連付けられた類似のコントローラにも結合することができる。ここで注目すべきは、このような相互接続コントローラが、１つのクラスタ内に２つ以上設けることができる点である。相互接続コントローラ２３０は、ポイントツーポイントプロトコルを使用して、プロセッサ２０２ａ〜２０２ｄおよびリモートクラスタの双方と通信する。
【００１４】
更に一般的に言うと、図２に示された特定のアーキテクチャは、単に例示的なものであり、本発明の実施形態は、構成およびリソース相互接続、並びに図示された各システムリソースに代わるものを、様々に異なる形態で有するものと考えられる。ただし、クラスタ２００は、例示を目的として各種の詳細を想定されている。例えば、図２に示されたリソースの大部分は、単一の電子アセンブリ上にあるものと想定される。また、メモリバンク２０６ａ〜２０６ｄは、デュアルインラインメモリモジュール（ＤＩＭＭ）の形態で物理的に提供されるダブルデータレート（ＤＤＲ）メモリを含むことが可能である。Ｉ／Ｏアダプタ２１６は、例えば永続ストレージデバイスへのアクセスを可能にするウルトラディレクトメモリアクセス（ＵＤＭＡ）コントローラまたはスモールコンピュータシステムインターフェース（ＳＣＳＩ）コントローラであることが可能である。Ｉ／Ｏアダプタ２２０は、例えばローカルエリアネットワーク（ＬＡＮ）またはインターネットなどのネットワークとの通信を可能にするように構成されたイーサネット（登録商標）カードであることが可能である。ＢＩＯＳ２０４は、フラッシュメモリなどの任意の永続メモリであることが可能である。
【００１５】
一実施形態にしたがうと、サービスプロセッサ２１２は、集積チップセット機能を含むモトローラのＭＰＣ８５５Ｔマイクロプロセッサであり、相互接続コントローラ２３０は、ローカルなポイントツーポイントコヒーレンスプロトコルをサポートする特定用途向け集積回路（ＡＳＩＣ）である。相互接続コントローラ２３０は、また、非コヒーレンスプロトコルを扱うことによってＩ／Ｏデバイスとの通信を可能にするように構成することもできる。一実施形態において、相互接続コントローラ２３０は、例えばプログラマブル論理素子またはフィールドプログラマブルゲートアレイなどの、特別に構成されたプログラマブルチップである。別の一実施形態において、相互接続コントローラ２３０は、特定用途向け集積回路（ＡＳＩＣ）である。更に別の一実施形態において、相互接続コントローラ２３０は、相互接続パケットトラフィックに対するアクセスおよび処理の能力を増補された汎用プロセッサである。
【００１６】
図３は、本発明の様々な態様を容易にするために、相互接続コントローラ２３０の一例を図式化して示したものである。様々な実施形態にしたがうと、相互接続コントローラ２３０は、マルチプロセッサシステムの各クラスタのプロセッサから受信されたプローブおよび要求などのパケットを扱うように構成されたプロトコルエンジン３０５を含む。プロトコルエンジン３０５の機能は、性能の向上を目的として、いくつかのエンジンに区分化することができる。一実施形態において、区分化は、パケットの種類（要求、プローブ、および応答）、方向（入力および出力）、またはトランザクションフロー（要求フロー、プローブフローなど）に基づいて行われる。
【００１７】
プロトコルエンジン３０５は、保留バッファ３０９にアクセスすることができる。保留バッファ３０９によって、相互接続コントローラは、最新の要求およびプローブなどのトランザクションを追跡し、尚かつそれらのトランザクションを特定のプロセッサに関連付けることが可能になる。保留バッファ３０９に保持されるトランザクション情報は、トランザクションの宛先ノード、続くコリジョン検出およびプロトコル最適化のための要求のアドレス、応答情報、タグ、並びに状態情報を含むことができる。後ほど明らかになるように、この機能は、本発明の特定の態様を可能にするために活用される。
【００１８】
相互接続コントローラは、コヒーレントプロトコルインターフェース３０７を有する。コヒーレントプロトコルインターフェース３０７によって、相互接続コントローラは、そのクラスタの内部および外部の他のプロセッサと通信することが可能になる。相互接続コントローラは、また、（例えば図２においてリンク２０８ｃおよび２０８ｄで示されるような）Ｉ／Ｏデバイスとの通信を目的として、非コヒーレントプロトコルインターフェース３１１などの他のインターフェースを含むこともできる。様々な実施形態にしたがうと、各インターフェース３０７，３１１は、マルチプレクサおよびバッファなどの構成要素を使用することによって、クロスバーの完全体または個別の受信装置および送信装置の形で実装される。相互接続コントローラ２３０は、必ずしもコヒーレントインターフェースおよび非コヒーレントインターフェースの双方を有する必要はない。また、ここで注目すべきは、一クラスタ内の相互接続コントローラ２３０が、別のクラスタ内の相互接続コントローラ２３０と通信することができる点である。
【００１９】
本発明の様々な実施形態にしたがうと、プロセッサ２０２ａ〜２０２ｄは、ほぼ同一である。図４は、複数のポート４０４ａ〜４０４ｃおよびそれらに関連付けられた複数のルーティングテーブル４０６ａ〜４０６ｃを有するインターフェース４０２を含む、このようなプロセッサ２０２の概略ブロック図である。各ポート４０４は、コンピュータシステムにおいて、プロセッサまたはＩ／Ｏデバイスなどの他のリソースとの間で図２のリンク２０８ａ〜２０８ｅなどの関連のリンクを介した通信を可能にする。
【００２０】
図４に示されたインフラストラクチャは、例えばリングおよびメッシュなどの様々なトポロジの任意の１つにしたがってシステムのプロセッサを相互に接続する複数のセグメントを有する、ポイントツーポイントの分散ルーティングメカニズムとして、一般化することができる。各セグメントの各端点は、その接続先であるプロセッサに関連付けられ、接続されたそのプロセッサは、固有のノードＩＤを有し、複数のリソースを関連付けられて「所有」している。関連付けられたリソースとは、例えばその接続先であるメモリおよびＩ／Ｏデバイスなどである。
【００２１】
分散ルーティングメカニズムにおいて、各ノードに関連付けられたルーティングテーブルは、コンピュータシステムのリソース間の相互接続の現在の状態を集合的に表すものである。任意の所定のノード（例えばプロセッサ）に所有される各リソース（例えば特定のメモリ範囲またはＩ／Ｏデバイス）は、そのノードに関連付けられたルーティングテーブルの中で、アドレスの形で表される。あるノードに要求が到達すると、要求されたアドレスは、ノードのルーティングテーブルの中の２レベルエントリと比較される。２レベルエントリは、適切なノードおよびリンクを特定する。すなわち、２レベルエントリは、アドレス範囲内の特定のアドレスに対してノードｘを指定し、そのノードｘに対してリンクｙを使用することを指定する。
【００２２】
図４に示されるように、プロセッサ２０２は、関連のルーティングテーブルの中の情報にしたがって、他の３つのプロセッサとの間でポイントツーポイント通信を行うことができる。具体的な一実施形態にしたがうと、ルーティングテーブル４０６ａ〜４０６ｃは、２レベルのテーブルを含む。すなわち、システムリソース（例えばメモリバンク）の固有アドレスを、対応するノード（例えばプロセッサの１つ）に関連付ける第１のレベルと、各ノードを、現行のノードから対応のノードに至るために使用されるリンク（例えば２０８ａ〜２０８ｅ）に関連付ける第２のレベルとの２レベルである。
【００２３】
プロセッサ２０２は、他の機能のなかでもとりわけサービスプロセッサ（例えば図２のサービスプロセッサ２１２）とプロセッサ２０２との間の通信を促進する一組のＪＴＡＧハンドシェークレジスタ４０８も有する。すなわち、サービスプロセッサは、ハンドシェークレジスタ４０８にルーティングテーブルエントリを書き込むことによって、それをルーティングテーブル４０６ａ〜４０６ｃに最終的に格納させることができる。なお、図４に示されたプロセッサアーキテクチャは、本発明の具体的な一実施形態の説明を目的とした例示的なものに過ぎない。例えばポートおよびルーティングテーブルの少なくとも一方の数を増減させて、本発明の他の実施形態を実現することも可能である。
【００２４】
前述のように、本発明の具体的な実施形態において、クラスタの基礎となる基本プロトコルは、ノードＩＤ空間に限りがあり、例えば特定の一実装形態にしたがうと３ビットであるので、わずか８ノードの固有識別を許容することしかできない。すなわち、もしこの基本プロトコルを、本発明による改革を取り入れることなく用いた場合は、ポイントツーポイントインフラストラクチャを介して一クラスタに相互に接続できるのは、わずか８ノードのみである。本発明は、この制約を回避する目的で、階層メカニズムを導入している。この階層メカニズムは、特定のクラスタ内において単一層の識別スキームを維持する一方で、類似の状況にある他のクラスタおよび他の処理ノードとの間の相互接続および通信を可能にするものである。
【００２５】
具体的な一実施形態にしたがうと、各マルチプロセッサクラスタ内のノードの１つは、例えば図２の相互接続コントローラ２３０などの相互接続コントローラである。この相互接続コントローラは、情報の階層マッピングを管理することによって、複数のクラスタによる単一のメモリアドレス空間の共用を可能にする一方で、それと同時に、そのクラスタ内の任意のプロセッサが、自身のクラスタ外に関する「知識」を持つことなく任意のクラスタ内の任意のプロセッサとの間で動作および相互作用することを可能にする。関連のプロセッサにとって、相互接続コントローラは、あたかもそのクラスタ内の単なる別のプロセッサまたはノードのように見える。
【００２６】
基本プロトコルにおいて、クラスタ内の特定のプロセッサが要求を生成した場合は、その要求を同じクラスタ内の他のノードの１つにマッピングするために、アドレスマッピングテーブルセットが用いられる。すなわち、クラスタ内の各ノードは、共用メモリ空間の一部をそれぞれに関連付けられている。メインメモリのためのアドレスマッピングデーブルは、例えばメモリマップＩ／Ｏや各種のＩ／Ｏ空間など様々である。これらのアドレスマッピングテーブルは、要求の中で特定されたアドレスを、クラスタ内の特定のノードにマッピングする。
【００２７】
次いで、要求元のノードからアドレスマッピングテーブルによって特定されたノードにどのように到るかを決定するために、一組のルーティングテーブルが用いられる。すなわち、前述のように、各プロセッサ（すなわちクラスタノード）は、ルーティングテーブルを関連付けられており、関連付けられたこれらのルーティングテーブルは、ポイントツーポイントインフラストラクチャ内において、現行のノードからアドレスマッピングテーブルによって特定されたノードに要求を伝送するために使用される特定のリンクを特定する。ノードは、一般に、１つまたは複数のリソース（例えばプロセッサを含む）に対応するが、本明細書において、ノードおよびプロセッサという用語は、多くの場合に同義的に用いられるものとする。特定の一実装形態にしたがうと、１つのノードは、例えばＣＰＵ、メモリコントローラ、Ｉ／Ｏブリッジなど、それぞれにユニットＩＤを有する複数のサブユニットを含む。
【００２８】
また、個々のトランザクションは、非連続的な複数のパケットに区分することができるので、各パケットは、そのパケットを関連付けられたトランザクションを、そのトランザクションを開始したノードを参照することによって特定するための、固有のトランザクションタグを含む。具体的な一実装形態にしたがうと、トランザクションタグは、ソースノード（３ビットフィールド）、ソースノードユニット（２ビットフィールド）、およびトランザクションＩＤ（５ビットフィールド）を特定する。
【００２９】
したがって、あるノードでトランザクションが開始されたとき、アドレスマッピングテーブルは、宛先ノード（およびユニット）を特定するために用いられる。これらの宛先ノード（およびユニット）は、次いで、そのパケットに付加され、更に、ルーティングテーブルによって、そのパケットを伝送するための適切なリンクを特定する目的で用いられる。ソース情報は、宛先ノードおよび要求による調査を受けた他の任意のノードによって、その要求に適切に応答する目的で用いられる。
【００３０】
具体的な一実施形態にしたがうと、各クラスタ内の相互接続コントローラは、前述のように、そのクラスタ内の他のプロセッサにとって、あたかもそのクラスタ内の単なる別のプロセッサのように見える。しかしながら、各相互接続コントローラに関連付けられた共用メモリ空間の各部分は、実際は、グローバルに共有されるメモリ空間の残りの部分も、すなわちシステム内の他の全てのクラスタに関連付けられたメモリも網羅している。要するに、特定の一クラスタ内のローカルプロセッサの観点から見ると、システム内の他の全てのマルチプロセッサクラスタに関連付けられたメモリ空間が、自身のクラスタ内の相互接続コントローラによって表されている。
【００３１】
図５を参照にして説明される更に具体的な一実施形態にしたがうと、各クラスタは、（例えば図２に示されるように）４つのプロセッサ２０２ａ〜２０２ｄおよび相互接続コントローラ２３０を含む５つのノードを有し、各ノードは、そのクラスタ内において固有の３ビットのノードＩＤによって表される。前述のように、各プロセッサ（すなわちクラスタノード）は、例えばＣＰＵおよびメモリコントローラなどを含む複数のサブユニットを表すことができる。
【００３２】
本発明にしたがってこのようなクラスタ構成の想定のもとで設計された代表的なアドレスマッピング方式が、図５に例示されている。図の例において、グローバルメモリ空間は、このような４つのクラスタによって共有されているものと想定される。ここで、これらのクラスタは、（それぞれ４つのローカルプロセッサを含むという意味で）カッドとも称される。クラスタの数および各クラスタに含まれるノードの数は、当然ながら、様々な実施形態のそれぞれに応じて変更することが可能である。
【００３３】
アドレスマッピング機能を単一クラスタを超えて拡張するため、各クラスタは、そのローカルメモリ空間を、すなわち、グローバルメモリ空間のうち当該クラスタのプロセッサに関連付けられた部分を、連続した一領域にマッピングする一方で、当該領域の上下に位置するグローバルメモリ空間の残りの部分を、（１つまたはそれ以上の）ローカル相互接続コントローラにマッピングする。各クラスタ内の相互接続コントローラは、グローバルマップおよびローカルマップの２種類のマッピングテーブルを維持している。グローバルマップは、出力される要求をリモートクラスタにマッピングする。ローカルマップは、リモートクラスタからの入力される要求をローカルクラスタ内の特定のノードにマッピングする。
【００３４】
次に、図５を参照する。各ローカルクラスタは、ローカルメモリマップ（５０１〜５０４）を有する。各ローカルメモリマップは、ローカルメモリ空間（すなわちグローバルメモリ空間のうちローカルプロセッサに関連付けられた連続した一部分）を、それぞれのノードにマッピングすると共に、全てのリモートメモリ空間（すなわちグローバルメモリ空間の残りの部分）を、例えばカッド３のノード４など、ローカル相互接続コントローラに関連付けられた１つまたは２つのマップエントリにマッピングする。ローカルクラスタ内の各ノードは、ローカルマップのコピーを有する。各クラスタ内の相互接続コントローラは、また、これらのリモートメモリ空間をシステム内の他の各クラスタに関係付けるグローバルマップ（５０５〜５０８）も維持している。各相互接続コントローラは、そのローカルマップのコピー（５０９〜５１１）を使用することによって、リモートクラスタから受信された要求をクラスタ内の個々のノードにマッピングする。
【００３５】
図５を参照にして説明される代表的なトランザクションは、具体的な例である。この例では、カッド３のノード２が、ローカル相互接続コントローラ（すなわちノード４）に（マップ５０１を介して）マッピングする要求を生成する。この要求を受信した相互接続コントローラは、そのグローバルマップ５０５を使用して、アドレスをカッド２にマッピングする。相互接続コントローラは、次いで、要求をカッド２に転送する。カッド２の相互接続コントローラは、そのローカルメモリマップを使用して、要求の宛先とするのに適したノード（この例ではノード１）を決定する。
【００３６】
特定の一実装形態において、各プロセッサすなわち各クラスタノードは、８メモリマップレジスタに制限される。図５を参照にして上述された方式は、ローカルメモリ空間のために４エントリを、そしてリモート空間のために最大で２レジスタを必要とする。したがって、より具体的な実施形態にしたがうと、残りの２エントリを、領域を更に分割するために使用することができる。マッピングレジスタが８に制限されるので、あるカッドに対してローカルであるメモリは、全て、連続した一ブロックに割り振られる必要がある。このような実施形態では、相互接続コントローラのローカルメモリマップも、やはり、８エントリである。ただし、相互接続コントローラのグローバルマップの大きさは、システム内のクラスタの数によって決定される。様々な実施形態にしたがうと、メモリマップＩ／Ｏ空間は、同じ一組のマッピングレジスタによってマッピングされる。
【００３７】
前述のように、ローカルクラスタレベルにおいて、アドレスマッピングテーブルからの情報は、そのクラスタ内の宛先ノードに情報を伝送するための適切なリンクを特定するために使用される。類似のメカニズムは、前述のグローバルマッピングを使用したクラスタ間の伝送を実現する際にも必要とされる。したがって、様々な実施形態にしたがうと、相互接続コントローラは、クラスタ内の各ノードに関連付けられたローカルルーティングテーブルに加えて、システム内の他のクラスタを、それらを相互に接続する様々なポイントツーポイントの伝送リンクにマッピングするグローバルルーティング情報も維持している（例えば図１Ａのリンク１１１）。
【００３８】
本発明の具体的な一実施形態にしたがうと、ダイレクテッドパケット用およびブロードキャストパケット用の２種類のローカルルーティングテーブルが用いられる。各テーブル（例えば図４のテーブル４０６）は、宛先ノードとリンクとの間のマッピングを維持する。ダイレクテッドパケットに関しては、要求および応答用に別個のテーブルが使用される。これは、応答を要求と同じ経路で要求元に戻すことを可能にする。このような同じ経路の維持は、デバッギングを簡略化するうえ、正確性を必要としない。ブロードキャストパケットに関しては、対応するテーブルにおいて、そのブロードキャストパケットを転送するためのリンクが指定される。したがって、ブロードキャストパケットは、複数のリンクにルーティングすることができる。
【００３９】
本発明による相互接続コントローラの特定の一実装形態において、そのローカルテーブルは、ローカル宛先ノードを、ダイレクテッドパケットに関しては４リンクの１つに、ブロードキャストパケットに関しては任意の数のリンクにマッピングする。相互接続コントローラは、また、リモート宛先クラスタを特定のリモートリンクにマッピングするグローバルルーティングテーブルも維持している。特定の一実施形態にしたがうと、相互接続コントローラは、また、グローバルルーティングレベルにおいて、パケットのマルチキャストもサポートしている。
【００４０】
次に、本発明にしたがって設計されたルーティングメカニズムの具体的な一実施形態が、図６Ａおよび図６Ｂを参照にして説明される。図６Ａのシステム６００は、ノードＮ0，Ｎ1を含む複数のローカルノードをそれぞれに有する４つのクラスタを含む。図６Ｂのテーブルは、説明を目的として、システムの全てのローカルルーティングテーブルおよびグローバルルーティングテーブルを合体させて示したものである。
【００４１】
代表的なトランザクションの一環として、クラスタ０内のノードＮ0にあるＣＰＵ６０２が、クラスタ３内のノードＮ0にあるＣＰＵ６０４に向かうパケットを生成する。このパケットは、例えば、そのノードにあるメモリコントローラにマッピングするメモリ要求であって良い。ＣＰＵ６０２は、自身のクラスタの外部に関する知識を何も有さないので、クラスタ０内のノードＮ1（すなわちローカル相互接続コントローラ６０６）を宛先とするパケットを生成する。前述のように、これは、ノードＮ0によって所有されるローカルメモリマップ（図６Ｂのテーブルの該当箇所参照）が、リモートクラスタによって所有される全てのメモリに対応するものとしてノードＮ1を特定する、という事実に基づくものである。相互接続コントローラ６０６は、パケットを受信し、（例えば前述のように）そのグローバルアドレスマップを使用して、パケットの最終的な宛先がクラスタ３であるものと判断し、クラスタ３を宛先とするリモートパケットを生成する。相互接続コントローラ６０６は、次いで、そのグローバルルーティングテーブル（すなわち図６Ｂの該当箇所）を使用して、パケットの送信がリンクＬ1を使用しなければならないものと判断する。前述されたローカルルーティングメカニズムと同様に、パケットは、ソースおよび宛先クラスタを特定する情報を付加される。
【００４２】
クラスタ１にある相互接続コントローラ６０８は、パケットを受信し、やはり、パケットがクラスタ３に向かうものであると判断し、そのグローバルルーティングテーブル（図６Ｂ）に基づいて、パケットの送信がリンクＬ2を使用しなければならないものと判断する。クラスタ３にある相互接続コントローラ６１０は、パケットを受信し、そのパケットがローカルクラスタを宛先とするものであると判断し、そのローカルルーティングテーブル（図６Ｂ）を使用して、パケットを宛先に送信するためにはリンクＬ0を使用しなければならないものと判断する。次いで、ノードＮ0にあるＣＰＵ６０４が、リンクＬ0を介してパケットを受信する。ノードのＩＤ空間が３ビットのＩＤ空間である具体的な実施形態にしたがうと、このマルチレベルのルーティングメカニズムは、クラスタの数に一切の特定の制限を設けることなく、８ローカルノードに拡張することができる。
【００４３】
本発明の実施形態は、また、複数のマルチプロセッサクラスタを有するシステムにおけるトランザクション識別の問題にも対処している。マルチプロセッサ環境では、一般に、トランザクションを固有識別することの重要性が認識されている。そして、トランザクション識別またはタグ空間に限界がある場合は、それを拡張するメカニズムを用いることによって、限られたタグ空間によってサポートされるプロセッサの最大数を上回る数の相互接続を可能にする必要がある。すなわち、同一のローカルトランザクションタグ空間を用いて動作する複数のクラスタを有する環境では、複数の異なるクラスタにおいて、同一のタグを使用した２つ以上のトランザクションが同時に生成される可能性がある。複数の異なるクラスタ内の複数のノード間におけるこれらのトランザクションの発生は、明らかに競合の可能性を引き起こす。したがって、本発明の実施形態は、ローカルタグ空間を拡張するメカニズムを提供することによって、マルチクラスタシステム内における各トランザクションの固有識別を可能にする。
【００４４】
より具体的に言うと、これらの実施形態は、トランザクションを、ローカルトランザクションタグ空間からより大きなグローバルトランザクションタグ空間にマッピングする。前述のように、ローカルタグ空間は、ノードＩＤ、ユニットＩＤ、およびトランザクションＩＤを使用して指定される。それに加えて、グローバルタグ空間が、グローバルクラスタＩＤおよびグローバルトランザクションＩＤを使用して指定される。一実施形態にしたがうと、システム内の相互接続コントローラは、自身の保留バッファを使用して、マッピング処理および再マッピング処理の割り振り並びに管理を簡略化する。後ほど詳述されるように、更に具体的な一実施形態にしたがうと、グローバルトランザクションタグの固有性を維持するために、更なるプロトコル管理が使用される。
【００４５】
具体的な一実施形態にしたがうと、クラスタ内のトランザクションは、全て、要求元ノードによって生成された固有のＩＤをタグ付けされる。各クラスタ内の相互接続コントローラ以外のプロセッサは、３ビットのノードＩＤ、２ビットのユニットＩＤ、および５ビットのトランザクションＩＤをサポートする。これらのフィールドの組み合わせは、クラスタ内において固有の１０ビットのタグを形成する。ユニットＩＤは、ノードの中のサブユニットを表す。特定のノードは、サブユニットの１つとしてプロセッサを含むことも含まないことも可能であり、例えば、メモリのみを含むことも可能である。
【００４６】
一実施形態にしたがうと、トランザクションのタグ空間をローカルクラスタを超えて拡張するために、各クラスタの相互接続コントローラは、ＱビットのクラスタＩＤおよびＴビットのトランザクションＩＤを使用して、そのクラスタの各ローカルタグ空間をグローバルタグ空間にマッピングする。各クラスタが５ビットのトランザクションＩＤを有する代表的な４クラスタシステムにおいて、Ｔは７、Ｑは２であることが可能である。
【００４７】
図７に示された一実施形態にしたがうと、ローカルからグローバルへのマッピング処理は、次のように実現される。先ず、新しく出力されるトランザクションが、すなわちリモートクラスタを必要とするローカル生成されたトランザクションが、クラスタの相互接続コントローラによって受信され（７０２）、例えば図３の保留バッファ３０９など、プロトコルエンジンのグローバル保留バッファ内のエントリを割り振られる（７０４）。このバッファエントリ識別子は、このような各トランザクションに固有であるので、様々な実施形態にしたがって、固有のグローバルトランザクションタグとして使用される。具体的な一実施形態にしたがうと、このメカニズムに関しては、保留バッファの中のエントリの数が、グローバルトランザクションタグ空間の大きさを超えることはできない。保留バッファエントリには、ローカルトランザクションタグも含まれる。したがって、保留バッファには、トランザクションをローカルタグ空間からグローバルタグ空間にマッピングする情報が、暗黙に含まれている。出力トランザクションは、次いで、初期のシステム構成の際に関連付けられたクラスタＩＤと共に、グローバルトランザクションタグをタグ付けされる（７０６）。トランザクションに関連して入力されるデータが受信されると（７０８）、グローバルトランザクションタグを使用して、グローバル保留バッファへのインデックス付けが行われる（７１０）。もしローカルトランザクションタグが必要である場合は（７１２）、インデックス付けされた保留バッファエントリからのローカルタグが、トランザクションのタグ付けに使用される（７１４）。
【００４８】
図８に示された具体的な一実施形態にしたがうと、グローバルからローカルへのマッピング処理は、次の通りである。先ず、新しく入力されるトランザクション、すなわちローカルクラスタを必要とするリモート生成されたトランザクションが、ローカルクラスタの相互接続コントローラ７０２によって受信され（８０２）、前述のものに類似したメカニズムによって、ローカルトランザクションタグを割り当てられる（８０４）。この場合は、プロトコルエンジンのローカル保留バッファ内において、保留バッファエントリが割り振られ（８０６）、その新しく割り振られた保留バッファエントリに、グローバルタグを含むエントリが挿入される（８０８）。トランザクションに関連して出力されるデータが受信されると（８１０）、ローカルトランザクションタグは、ローカル保留バッファへのインデックス付けを行うために使用され、それによって、適正なグローバルタグが取得される（８１２）。適正なグローバルタグは、後続の出力データが必要とされる場合に使用される（８１４）。
【００４９】
次に、本発明の具体的な一実施形態のタグマッピング機能の一例が、図９を参照にして説明される。図９は、相互接続コントローラを使用して非ローカルクラスタへと送信される、ローカルクラスタからのデータ要求のトランザクションを図式化したものである。図示されたトランザクションは、言うまでもなく単なる例示的なものであり、これによって本発明の範囲を限定することは、望ましくない。マルチクラスタシステムは、要求クラスタ９００、ホームクラスタ９２０、およびリモートクラスタ９４０を含む。ホームクラスタ９２０およびリモートクラスタ９４０は、本明細書において、非ローカルクラスタと称される。同様に、ローカルクラスタ並びに非ローカルクラスタに関連付けられたプロセッサおよび相互接続コントローラも、本明細書において、それぞれローカルプロセッサおよびローカル相互接続コントローラ、並びに非ローカルプロセッサおよび非ローカル相互接続コントローラと称される。
【００５０】
様々な実施形態にしたがうと、ローカルクラスタ９００内のプロセッサ９０１−１は、読み出し要求などのデータアクセス要求を、相互接続コントローラ９０３−１に送信する。この要求元のノード９０１−１は、そのクラスタのローカルタグ空間内のローカルタグ（例えばタグ９０２）を使用して要求を生成する。相互接続コントローラ９０３−１は、出力される要求を（例えばグローバルタグ９０４を使用して）グローバルタグ空間にマッピングする。このマッピング処理は、上述のように、相互接続コントローラ９０３−１の保留バッファ（例えば図３のバッファ３０９）に保存される（例えばテーブル挿入：ローカルタグ９０２／グローバルタグ９０４）。相互接続コントローラ９０３−１は、次いで、要求を、ホームクラスタ９２０内の相互接続コントローラ９２１−１に転送する。トランザクションに関連して入力される応答（例えば９０８および９１０）は、相互接続コントローラ９０３の保留バッファ内におけるテーブルルックアップによって、グローバルタグ空間からローカルタグ空間にマッピングバックされる。
【００５１】
ホームクラスタ９２０において、入力される要求（例えば９１２）は、相互接続コントローラ９２１−１によって、（例えばタグ９１４を使用して）ローカルタグ空間にマッピングされる。このマッピング処理は、相互接続コントローラ９２１−１の保留バッファに保存される（例えばテーブル挿入：グローバルタグ９０４／ローカルタグ９１４）。ホームクラスタ９２０から出力される応答（例えば９０８および９１０）は、相互接続コントローラ９２１の保留バッファ内におけるテーブルルックアップによって、ローカルタグ空間からグローバルタグ空間にマッピングバックされる。ホームクラスタに入力される応答は、相互接続コントローラ９２１の保留バッファ内におけるテーブルルックアップによって、グローバルタグ空間からローカルタグ空間にマッピングバックされる。
【００５２】
この代表的なトランザクションにおいて、相互接続コントローラ９２１−１は、アクセス要求を、やはりホームクラスタ９２０に関連付けられたメモリコントローラ９２３−１に転送する。この時点で、メモリコントローラ９２３−１は、要求に関連付けられたメモリラインをロックする。一例では、メモリラインは、要求クラスタ９００、ホームクラスタ９２０、およびリモートクラスタ９４０の複数のプロセッサによって共有されるメモリ空間内において固有のアドレスである。メモリコントローラ９２３−１は、データアクセス要求に関連付けられたプローブを生成し、それを、キャッシュブロック９２５，９２７に関連付けられたローカルノードおよび相互接続コントローラ９２１−２に転送する。
【００５３】
リモートクラスタ９４０にある相互接続コントローラ９４１−１は、ローカルタグ（例えばタグ９２４）を使用して、グローバルタグ（例えばタグ９２２）をローカルタグ空間にマッピングする。応答（例えば９２６）は、相互接続コントローラ９４１の保留バッファ内におけるテーブルルックアップによって、ローカルタグ空間からグローバルタグ空間にマッピングバックされる。ホームクラスタ９２０からのプローブに応じ、相互接続コントローラ９４１−１は、キャッシュブロック９４５，９４７，９４９に関連付けられたローカルノードを厳密に調べる。同様に、要求クラスタ９００に関連付けられた相互接続コントローラ９０３−２も、プローブを受信し、それを、キャッシュブロック９０５，９０７，９０９に関連付けられたローカルノードに転送する。プロセッサ９０１−２は、キャッシュブロック９０５，９０７，９０９に関連付けられたローカルノードからのプローブ応答を受信する。
【００５４】
様々な実施形態にしたがうと、相互接続コントローラ９２１−３は、プローブ応答を蓄積し、それらを相互接続コントローラ９０３−３に送信し、相互接続コントローラ９０３−３は、それらを更にプロセッサ９０１−３に送信する。相互接続コントローラ９２１−４も、やはり、メモリコントローラ読み出し応答９１０を相互接続コントローラ９０３−４に送信し、相互接続コントローラ９０３−４は、それを更にプロセッサ９０１−４に転送する。プロセッサ９０１−４は、全ての応答および取り出されたデータを受信した後、ソース完了応答を相互接続コントローラ９０３−５に送信する。相互接続コントローラ９０３−５は、ソース完了メッセージを相互接続コントローラ９２１−５に転送する。相互接続コントローラ９２１−５は、更に、ソース完了メッセージをメモリコントローラ９２３−２に送信する。
【００５５】
具体的な一実施形態にしたがうと、相互接続コントローラ９２１−５は、要求元クラスタにあるコントローラ９０３−６にタグ解放トランザクション（９２８）を送ることによって、ソース完了トランザクション（９１８）に対して肯定応答する。タグ解放トランザクションは、要求元クラスタによるタグの再使用を可能にする。後述されるように、この肯定応答は、システム内におけるグローバルタグの使用が終了するまでの間、要求元クラスタによるそのグローバルタグの使用を阻止する。
【００５６】
ここで注目すべきは、上述されたタグマッピングメカニズムが、ソース完了トランザクション以外のあらゆるタイプのトランザクションに対して有効である点である。ソース完了トランザクションに関し、要求元クラスタにある相互接続コントローラによって受信された出力されたソース完了トランザクションは、ローカルノードの識別子をタグ付けされる。したがって、要求元クラスタにある相互接続コントローラは、一致するローカルタグを有するエントリを求めて保留バッファを検索し、次いで、そのインデックスをグローバルタグとして使用しなければならない。同様のメカニズムは、ソース完了トランザクションがホームクラスタに達した際も必要とされる。この場合は、一致するグローバルタグを求めてホームカッドにある保留バッファが検索され、そのインデックスがローカルタグとして使用される。
【００５７】
具体的な一実施形態にしたがうと、最終的なタグ解放トランザクション（例えば９２８）は、所定のタグがいつ再使用可能になるかを要求元クラスタに通知する。このタグ解放メカニズムは、ホームクラスタにおけるソース完了（ＳＤ）トランザクションの曖昧性を回避するためのものである。例えば、もしこのようなメカニズムがない場合は、要求元クラスタがトランザクションを完了し、ＳＤトランザクションがホームクラスタに送信された（例えば９１８）時点で、要求元クラスタは、同じグローバルタグを使用して、新しいトランザクションを生成することが可能になる。これらのトランザクションに関連付けられた伝送は、互いに異なる仮想チャネルを通って運ばれるので、新しいトランザクションに関連付けられたデータは、最初のＳＤトランザクションよりも前にホームクラスタに受信され、保留バッファに挿入される可能性がある。このような状況では、ホームクラスタにある保留バッファは、同じグローバルタグを有する複数のエントリを有することになる。タグ解放トランザクションが必要とされるのは、このような可能性を排除するためである。
【００５８】
前述のように、本明細書において開示される相互接続コントローラは、独立したキャッシュコヒーレントクラスタを、より大規模なキャッシュコヒーレントシステムへと円滑に合流させるものである。特定の一実施形態にしたがうと、これらの相互接続コントローラは、ＡＳＩＣチップの形で組み込まれ、以下の説明は、この前提のもとで進められる。ただし、相互接続エンジンおよびそれらに備わる機能性がこれらに限定されないことは、言うまでもない。
【００５９】
本発明の様々な実施形態にしたがうと、プロトコルエンジンは、相互接続コントローラＡＳＩＣチップ上にあるハードウェアのブロックである。これらのエンジンの機能性は、関連のマイクロコードによって管理され、一般に、管理トランザクションフローに関わる。一般的に言うと、プロトコルエンジンは、相互接続コントローラによって受信された各パケットを観察し、そのパケットの適正な取り扱いおよび必要とされる任意の処理または応答に関する決定を行う。トランザクションを管理するプロトコルエンジンが（例えば図３に示されるように）１つしかない場合は、それがトランザクション処理の障害になる可能性がある。
【００６０】
したがって、具体的な一実施形態にしたがうと、各相互接続コントローラは、前述のように、複数のプロトコルエンジンを備えることによって、システムのトランザクション処理能力の向上を図っている。説明される実施形態にしたがうと、各プロトコルエンジンは、ほぼ同一のハードウェアブロックを有し、各ハードウェアブロックは、それに関連付けられたマイクロコードによって、特定のトランザクション処理を実施するようにプログラムされている。より具体的に言うと、説明される実施形態において、各相互接続コントローラは、本明細書においてそれぞれリモートメモリプロトコルエンジン、ローカルメモリプロトコルエンジン、および特殊プロトコルエンジンと称される３種類の異なるプロトコルエンジンを備える。図１０は、このような実施形態にしたがって設計された代表的な相互接続コントローラ１０００の概略ブロック図である。この相互接続コントローラは、当然ながら、図２のプロセッサクラスタにおいて相互接続コントローラ２３０の代わりに使用することが可能である。
【００６１】
リモートメモリプロトコルエンジン（ＲＭＰＥ）１００２は、リモートメモリを宛先とする、すなわち別のクラスタに関連付けられたメモリを宛先とするトランザクションと、その特定のトランザクションフローに含まれる全ての後続のトランザクションとを処理する責任を負う。ローカルメモリプロトコルエンジン（ＬＭＰＥ）１００４は、ローカルメモリを宛先とする、すなわち当該相互接続コントローラを関連付けられたローカルクラスタに関連付けられたメモリを宛先とするトランザクションと、そのフローに含まれる全ての後続のトランザクションとを処理する責任を負う。特殊プロトコルエンジン１００６は、割り込み、Ｉ／Ｏアクセス、および構成アクセスなどを処理する責任を負う。図１０に示された実施形態にしたがうと、各相互接続コントローラは、２つのリモートエンジン、４つのローカルエンジン、および１つの特殊エンジンを含む。しかしながら、これらの数は、言うまでもなく単なる例示的なものであり、各種のエンジンの最適数は、エンジン間においてトランザクションがどのように分散されるかに応じて可変である。
【００６２】
相互接続コントローラは、クラスタ内の他のプロセッサとの間の通信および外部のクラスタのプロセッサとの間の通信を可能にするコヒーレントプロトコルインターフェース１００７を有する。保留バッファ１００９および非コヒーレントインターフェース１０１１は、図３を参照にして上述された類似のプロセッサブロックに類似する機能性を有することが可能である。様々な実施形態にしたがうと、インターフェース１００７は、マルチプレクサおよびバッファなどの構成要素を使用して、クロスバーの完全体または個別の受信装置および送信装置の形で実装される。具体的な実施形態にしたがうと、インターフェース１００７は、後述される実施形態にしたがって、トランザクションパケットを特定のプロトコルエンジンにルーティングするように構成することができる。
【００６３】
相互接続コントローラにおいて、トランザクション処理の作業負荷は、様々な方法で各種のプロトコルエンジンに分散させることができる。具体的な一実施形態にしたがうと、本発明のメモリマッピングテーブルは、各プロトコルエンジンを、グローバルメモリ空間すなわち全てのプロセッサクラスタによって共有されるメモリ空間の中の特定の１つまたは一組のアドレス範囲に割り当てるために用いられる。すなわち、トランザクションフローの中の初期要求パケットまたは初期プローブパケットは、各エンジンに関連付けられたアドレス範囲にしたがってそのトランザクションを特定のプロトコルエンジンにマッピングするために使用される、アドレス情報を含む。一実施形態において、複数のクラスタに関連付けられた各種のプロトコルエンジンに対するアドレス範囲の割り当ては、システムが最初に初期設定された際に行われる。他の実施形態にしたがうと、割り当てまたは再割り当ては、システムの初期設定の後に行われることが可能である。
【００６４】
一実施形態にしたがうと、複数のノードＩＤが、各クラスタ内の相互接続コントローラ用に使用される。これは、各クラスタに関連付けられるノードＩＤの容量が、一クラスタ内のノードの数を上回るという事実に基づいて、特定の一実装形態において実現することができる。例えば、図５を参照にして上述された一実施形態は、各クラスタ内に５つのノードを想定し、そのうちの１つを相互接続コントローラに関連付けている。しかしながら、もし複数のノードが相互接続コントローラに関連付けられている場合は、各ノードをリモートエンジンの１つに関連付け、クラスタ内のローカルノードに関連付けられたメモリマッピングテーブルを、相互接続コントローラに関連付けられたノードのためのメモリ領域をリモートエンジンにマッピングするために使用することができる。同様に、これらのマッピングテーブルは、クラスタ内の他のノードすなわちローカルノードに関連付けられたメモリ領域をローカルエンジンにマッピングするために使用することができる。
【００６５】
具体的な一実施形態にしたがうと、相互接続コントローラ内の個々のプロトコルエンジンは、ノードＩＤおよびユニットＩＤの対によって参照される。したがって、７つのプロトコルエンジンは、僅か４つのノードＩＤを使用して参照される。本実施形態にしたがうと、ＲＭＰＥ１００２は、２つのノードＩＤおよび１つのユニットＩＤを使用して参照され、ＬＭＰＥ１００４は、同じく２つのノードＩＤおよび２つのユニットＩＤを使用して参照され、特殊プロトコルエンジン１００６は、１つのノードＩＤを使用して参照される。例えば、ＲＭＰＥ０は、ノードＩＤとユニットＩＤとの組み合わせ｛４，２｝によって表され、ＲＭＰＥ１は、｛５，２｝によって表され、ＬＭＰＥ０は、｛４，０｝によって表され、ＬＭＰＥ１は、｛４，１｝によって表され、ＬＭＰＥ２は、｛５，０｝によって表され、ＬＭＰＥ３は、｛５，１｝によって表され、特殊エンジンは、｛６，ｘ｝によって表される。この実施形態において、他のローカルノード内のユニットＩＤ０，１，２，３は、それぞれＣＰＵ、ＣＰＵ、メモリコントローラ、およびＩ／Ｏブリッジに対応している。
【００６６】
前述のように、特定の一クラスタにおいて、グローバルメモリ空間のうちリモートクラスタに関連付けられた連続箇所すなわちリモートメモリ空間は、ローカル相互接続コントローラに対応する１つもしくは一組のノードに関連付けられる、またはマッピングされる。各相互接続コントローラ内のＲＭＰＥは、グローバルメモリ空間内の同じ箇所にマッピングされる。一実施形態にしたがって更に具体的に言うと、これらのエンジンをリモートメモリ空間にマッピングするために、一組のマッピングテーブルが維持される。様々な実施形態にしたがうと、トランザクション処理の作業負荷をエンジン間で分散させるために、様々なマッピング方式のうちの任意の一方式を使用することが可能である。具体的な実施形態にしたがうと、複数のＲＭＰＥは、リモートメモリ空間内の隣接する複数の交互の箇所を交互に割り当てられる。
【００６７】
また、ローカルクラスタに関連付けられたノードおよびユニットをローカル接続コントローラの複数のＬＭＰＥにマッピングするために、一組のマッピングテーブルが維持される。ＲＭＰＥのマッピングと同様に、ＬＭＰＥのマッピングも、様々な方式によって実現することが可能である。このようなマッピングの一例が、図１１に示されている。
【００６８】
この例において、クラスタ２すなわちローカルクラスタの中のプロトコルエンジンは、４クラスタシステムに関連付けられた物理メモリ空間１１００にマッピングされる。各クラスタは、４つのローカルノードと、別の２つのローカルノードに対応する相互接続コントローラとを含むものと想定される。前述のように、４つのローカルノードは、メモリコントローラおよびホストブリッジを含む複数のユニットをそれぞれに備えることができる。各クラスタは、メモリ空間１１００内の連続箇所にそれぞれ対応する。クラスタ２に関連付けられた２つのＤＲＡＭマッピングテーブルは、メモリ空間１１００のうちクラスタ０，１に対応する箇所を、クラスタ２のリモートエンジン、すなわちＲＭＰＥ１およびＲＭＰＥ０にマッピングする。別の２つのＤＲＡＭマッピングテーブルは、メモリ空間１１００のうちクラスタ３に対応する箇所を、やはりＲＭＰＥ１およびＲＭＰＥ０にマッピングする。別の４つのＤＲＡＭマッピングテーブルは、メモリ空間のうちクラスタ２に対応する箇所を、クラスタ２内の４つのローカルノード（相互接続コントローラに関連付けられたノード以外のノード）にマッピングする。
【００６９】
様々な実施形態にしたがうと、これらのマッピングは、様々な方式のうちの任意の一方式にしたがうことが可能である。例えば、前述のように、メモリ空間のうち特定のクラスタに関連付けられた隣接する交互の箇所は、ＲＭＰＥ１およびＲＭＰＥ０に割り当てることができる。これらの交互の箇所は、メモリライン、メモリページ、および複数のページなどであって良く、この場合のマッピングは、例えばライン境界またはページ境界などの境界を跨いで行われる。
【００７０】
例えば図９のソース完了トランザクション９１８に関連付けられたパケットなど、特定の種類のトランザクションパケットは、アドレス情報を関連付けられていないので、直接的にアドレス範囲を割り当てる方式に適さない。前述のように、これは、このようなパケットを、その特定のトランザクションを担当する可能性があるシステム内の全てのプロトコルエンジンにブロードキャストすることによって対処される。しかしながら、これは、非効率的に過ぎる可能性があるうえ、実のところ、作業負荷を複数のエンジン間で分散させるという目的を部分的に損なう可能性もある。
【００７１】
したがって、本発明の具体的な一実施形態にしたがうと、リモートメモリ空間を宛先とするトランザクションパケット内の宛先ノードフィールドおよび宛先ユニットフィールドは、それらのパケットが、それの向かうリモートクラスタ内の正しいローカルプロトコルエンジンに確実にマッピングされるように、担当のリモートプロトコルエンジンによって設定される。同様に、ローカルメモリ空間を宛先とするトランザクションパケット内の宛先ノードフィールドおよび宛先ユニットフィールドも、やはり、それらのパケットが、それの向かうリモートクラスタ内の正しいリモートプロトコルエンジンに確実にマッピングされるように、担当のローカルプロトコルエンジンによって設定される。これらのフィールドは、あるいは、例えばソース完了パケットなど、アドレスを指定されていないパケット内でのみ設定されても良い。
【００７２】
具体的な一実施形態にしたがうと、パケットの発信元のクラスタにある担当のプロトコルエンジンは、ローカルノードによって生成された宛先ノード値および宛先ユニット値を、そのパケットの向かうクラスタ内のノードおよびユニット（そしてプロトコルエンジン）に対応する宛先ノード値および宛先ユニット値にマッピングする。アドレス値を指定されているパケットに関しては、このマッピングは、相互接続コントローラで使用することが可能であるアドレス対ノードのグローバルマッピング情報を参照することによって達成することが可能である。アドレス値を指定されていないパケットに関しては、このマッピングは、パケット内で指定されたノードＩＤ、ユニットＩＤ、およびトランザクションＩＤに対応する相互接続コントローラの保留バッファ内のエントリを参照することによって達成することが可能である。
【００７３】
具体的な一実施形態にしたがうと、一クラスタ（例えば要求クラスタ）内のプロトコルエンジンからパケットの向かう先である一クラスタ（例えばホームクラスタ）内のプロトコルエンジンへのインターリーブマッピングは、宛先アドレスの中の特定のビットを参照することによって達成される。すなわち、例えば、リモートメモリを宛先とする要求クラスタ内の要求パケットは、そのパケットの向かう先であるアドレスの中の特定のビットの状態に応じ、ＲＭＰＥ０またはＲＭＰＥ１のいずれかにマッピングされる。パケットのマッピング先であるリモートエンジンは、前述のように、パケットの宛先ノードＩＤおよび宛先ユニットＩＤを再マッピングする。ホームクラスタ内の相互接続コントローラによって受信されたパケットは、その宛先ノードＩＤおよび宛先ユニットＩＤにしたがって、４つのローカルプロトコルエンジンの１つにマッピングされる。
【００７４】
代表的なマッピングは、下記のように、アドレス値を用いて表されると考えられる。
【数１】
2006518885.tif 000003
この表現は、もしパケット内で特定された宛先ノードに対応するアドレスのアドレスビット１２が「０」である場合は、トランザクションが、要求クラスタ内ではＲＭＰＥ０によって管理され、ホームクラスタ内では（アドレスビット１３の状態に応じて）ＬＭＰＥ０またはＬＭＰＥ２のいずれかによって管理されることを示している。同様に、もしアドレスビット１２が「１」である場合は、トランザクションは、ＲＭＰＥ１および（アドレスビット１３の状態に応じて）ＬＭＰＥ１またはＬＭＰＥ３のいずれかによって管理される。ビット１２は、４０ビットアドレスの中のページ境界に対応する。４０ビットアドレスを使用する別の一実施形態にしたがうと、インターリーブはビット６，７を使用して決定され、そのうちのビット６がライン境界に対応する。
【００７５】
次に、図１２のフローチャートを参照にして、本発明の具体的な一実施形態が説明される。前述のように、ローカルクラスタ内で生成されたパケットがその宛先アドレスにしたがってプロトコルエンジンにマッピングされる、一実装形態が想定される。この宛先アドレスは、パケットそのものから直接的に抽出されるか、あるいは（例えばアドレスを指定していないパケットなどの場合は）保留バッファエントリを参照することによって得られるかのいずれかである。
【００７６】
ダイレクテッドパケットの場合、すなわち特定のノードＩＤ／ユニットＩＤ対を指定しているパケットの場合は、特定のプロトコルエンジンへのマッピングは、ローカルノードＣＰＵがマッピングテーブルにしたがってパケットを生成することによって、自動的に行われる。すなわち、これらのパケットは、要求元ノードによって生成されたノードＩＤおよびユニットＩＤに基づいて、正しいプロトコルエンジンに自動的に送信される。ブロードキャストパケットの場合、すなわち特定のノードＩＤ／ユニットＩＤ対を指定していないパケットの場合は、プロトコルエンジンの１つへのマッピングは、相互接続コントローラによって、パケット内のアドレス情報に基づいて行われる。前述のように、ローカルＣＰＵによって指定されたノードＩＤ／ユニットＩＤ対に基づいてローカルノードにおいてマッピングが達成されるか、あるいはパケット内のアドレス情報に基づいて相互接続コントローラにおいてマッピングが達成されるかのいずれであるかによって、様々に異なるマッピング方式を用いることが可能である。
【００７７】
リモートクラスタから受信されたパケットは、パケットの向かう先であるローカルノードおよびローカルユニットにしたがって、受信先クラスタ内の一プロトコルエンジンにマッピングされる。前述のように、ノード値およびユニット値は、パケットを発信するクラスタすなわち要求元クラスタ内のプロトコルエンジンによって設定される。とはいえ、マッピングメカニズムとしては、当然ながら、本発明の範囲から逸脱しない範囲内で様々なヴァリエーションが可能である。例えば、リモートクラスタから受信されたパケットは、宛先ノードおよび宛先ユニットではなく宛先アドレスに基づいて、受信先クラスタ内のプロトコルエンジンにマッピングすることができる。したがって、以下の説明は、例示的なものとして捉えることが望ましく、発明の範囲を限定するものとして用いることは望ましくない。
【００７８】
図１２は、複数のマルチプロセッサクラスタを有するコンピュータシステムにおいて、各クラスタ内の複数のプロトコルエンジン間でトランザクション処理を分散させる、代表的な一実施形態を示したフローチャートである。例示のため、以下の説明は、図１〜１１を参照にして上述された各種のシステム設定を前提にして行われるが、ここに説明される技術は、当然ながら、様々なマルチプロセッサシステムに用いることが可能である。
【００７９】
特定のプロセッサクラスタ内のローカルノードによって、トランザクションパケット（例えばメモリ要求またはプローブ）が生成されると（１２０２）、そのパケットは、上述されたアドレス＆リンクマッピング技術の使用によって、適切なローカルなノードおよびユニットにルーティングされる。リモートクラスタに関連付けられたメモリアドレスを宛先としている場合は、パケットは、ローカル相互接続コントローラに関連付けられたリモートプロトコルエンジンの１つに向かう。ローカルクラスタに関連付けられたメモリアドレスを宛先としている場合は、パケットは、（例えばプローブなどのブロードキャストパケットの場合は）ローカル相互接続コントローラに関連付けられたローカルプロトコルエンジンの１つに向かう。ダイレクテッドパケットである場合（１２０３）は、すなわち具体的なノードおよびユニットを特定しているパケット（例えばメモリ要求など）である場合は、そのパケット（および関連のトランザクションに対応する後続のパケット）は、それぞれ相互接続コントローラに関連付けられると共にプロトコルエンジンに対応している複数のローカルノードおよびローカルユニットのうちの特定された１つに伝送される（１２０４）。これは、各ローカルノードに関連付けられたローカルメモリマップを使用して実現することができる。前述のように、プロトコルエンジン間におけるアドレスのインターリーブは、様々な方式で達成することができる。やはり前述のように、アドレスを指定していないパケット（例えばソース完了パケットなど）の場合は、パケット内で特定されたトランザクションＩＤフィールドに対応する任意の保留バッファエントリを参照することによって、アドレスを決定することができる。
【００８０】
他方、パケットがブロードキャストパケットである場合（１２０３）は、すなわち特定のノードＩＤまたはユニットＩＤを指定していないパケット（例えばプローブなど）である場合は、ローカル相互接続コントローラは、パケットを受信し、そのパケット（およびトランザクションフローに含まれる任意の後続のパケット）を、マッピングテーブルにしたがってプロトコルエンジンにマッピングする。マッピングテーブルは、様々なマッピング方式のうちの任意の一方式にしたがって、アドレス範囲をプロトコルエンジンにマッピングするものである。前述のように、もし宛先アドレスがローカルメモリに対応する場合は、パケットは、ローカルプロトコルエンジンのうちの対応する１つにマッピングされる。他方、もし宛先アドレスがリモートメモリに対応する場合は、パケットは、リモートプロトコルエンジンのうちの対応する１つにマッピングされる。
【００８１】
マッピングがどのように達成されるかに拘わらず、パケットを割り当てられたプロトコルエンジンは、そのパケットをどのように処理するかを判断し（１２０６）、パケット内の宛先ノードＩＤフィールドおよび宛先ユニットＩＤフィールドを、アドレスの対応先であるリモートクラスタ内のノードＩＤおよびユニットＩＤにマッピングし（１２０８）、パケットをリモートクラスタに伝送する（１２１０）。リモートクラスタ内の相互接続コントローラは、パケットを受信し（１２１２）、要求クラスタ内の相互接続コントローラによって設定された宛先ノードＩＤフィールドおよび宛先ユニットＩＤフィールドにしたがって、パケットの処理をプロトコルエンジンの１つにマッピングする（１２１４）。具体的な一実施形態にしたがうと、ノードＩＤとユニットＩＤとからなる各対は、リモートクラスタ内のプロトコルエンジンの１つに対応する。リモートクラスタ内のプロトコルエンジンは、次いで、パケットをどのように処理するかを判断し（１２１６）、パケットを適切なローカルノードに伝送する（１２１８）。
【００８２】
以上の考察から明らかなように、図１２のフローチャートは、ローカルクラスタ内のリモートプロトコルエンジンおよびリモートクラスタ内のローカルプロトコルエンジンへのトランザクションのマッピングを説明しているのみならず、ローカルクラスタ内のローカルプロトコルエンジンおよびリモートクラスタ内のリモートプロトコルエンジンへのトランザクションのマッピングも説明している。すなわち、図１２は、例えば、ローカルクラスタ内のローカルノードが、リモートクラスタ内のメモリを宛先とするメモリ要求を生成し、そのメモリ要求が、ローカル相互接続コントローラ内のリモートプロトコルエンジンの１つにマッピングされ、ローカル相互接続コントローラによって、リモートクラスタ内の適切なノードＩＤ／ユニットＩＤにマッピングされ、リモートクラスタ内の相互接続コントローラによって、対応するローカルプロトコルエンジンにマッピングされる処理を説明している。
【００８３】
図１２は、また、ローカルクラスタ内のローカルノードが、ローカルクラスタ内のメモリを宛先とするプローブを生成し、そのプローブが、ローカル相互接続コントローラ内のローカルプロトコルエンジンの１つにマッピングされ、ローカル相互接続コントローラによって、少なくとも１つのリモートクラスタ内の適切なノードＩＤ／ユニットＩＤにマッピングされ、そのリモートクラスタ内の相互接続コントローラによって、対応するローカルプロトコルエンジンにマッピングされる処理を説明している。
【００８４】
以上では、具体的な実施形態を参照にしながら発明の図示および説明が行われてきたが、当業者ならば明らかなように、開示された実施形態の形態および詳細は、発明の趣旨または範囲から逸脱することなく変更することが可能である。例えば、本明細書は、有限のノードＩＤ空間およびフラットな要求マッピング機能を有する特定のマルチプロセッサアアーキテクチャに言及することによって、具体的な実施形態の説明を行った。しかしながら、本発明は、ポイントツーポイントインフラストラクチャによってシステム内における各種のノード間の通信を促進する様々なマルチプロセッサアーキテクチャに対しても、より一般的に適用することが可能である。また、本明細書において説明された、例えばアドレスのマッピング、ルーティングのメカニズム、トランザクションの特定、およびプロトコルエンジンのマッピングなどに関する各種の実施形態は、それぞれ、発明の範囲から逸脱することなく、他の形態の代替の形態と組み合わせて使用することが可能である。
【００８５】
本発明の各種の実施形態は、発明の範囲から逸脱することなく、様々な方式で実装する、あるいは表現することが可能である。すなわち、例えば、本明細書において開示された相互接続コントローラは、ソフトウェア（オブジェクトコードまたはマシンコード）、コンパイルの各段階、１つまたはそれ以上のネットリスト、シミュレーション言語、ハードウェア記述言語、一組の半導体処理マスク、および部分的にまたは完全に実現された半導体デバイスとして表すことが可能であり、これらに限定されない。当業者にとって明らかである前述の各形態の様々な代替形態も、やはり発明の範囲内である。例えば、本発明は、本明細書において開示される処理および回路の設計並びに製造に適した、各種のコンピュータ読み取り可能媒体、ソフトウェア言語（例えばＶｅｒｉｌｏｇおよびＶＨＤＬなど）、シミュレーション可能表現（例えばＳＰＩＣＥネットリストなど）、半導体処理（例えばＣＭＯＳなど）、ならびにデバイスタイプ（例えばＡＳＩＣなど）を、その範囲に含む。
【００８６】
本明細書において、本発明の様々な利点、態様、および目的は、各種の実施形態を基準にして考察された。しかしながら、本発明の範囲は、このような利点、態様、および目的を基準として限定されるのではなく、添付の特許請求の範囲を基準にして決定されることが望ましい。
【図面の簡単な説明】
【００８７】
【図１Ａ】複数のクラスタを有するシステムの図表示である。
【図１Ｂ】複数のクラスタを有するシステムの図表示である。
【図２】本発明の特定の実施形態に使用される、複数のプロセッサを有する代表的なクラスタの図表示である。
【図３】本発明の様々な実施形態を促進するための、代表的な相互接続コントローラの図表示である。
【図４】本発明の様々な実施形態で使用するためのローカルプロセッサの図表示である。
【図５】本発明の様々な実施形態で使用するためのメモリマッピング方式の図表示である。
【図６Ａ】本発明の様々な実施形態で使用するための４クラスタシステムの概略ブロック図である。
【図６Ｂ】図６Ａの４クラスタシステムのための、ルーティング情報を含む合体ルーティングテーブルである。
【図７】本発明の様々な実施形態にしたがった、マルチクラスタシステムにおけるトランザクション管理を示したフローチャートである。
【図８】本発明の様々な実施形態にしたがった、マルチクラスタシステムにおけるトランザクション管理を示したフローチャートである。
【図９】マルチクラスタシステムにおける代表的なトランザクションに関する通信の図表示である。
【図１０】本発明の様々な実施形態を促進するための、もう１つの代表的な相互接続コントローラの図表示である。
【図１１】マルチクラスタシステムにおいて、プロセッサクラスタ内のプロトコルエンジンをグローバルメモリ空間にマッピングする代表的な方式を示した図表示である。
【図１２】本発明の具体的な一実施形態にしたがった、プロトコルエンジンへのトランザクションのマッピングを示したフローチャートである。
【図１Ａ】
2006518885.tif 000004
【図１Ｂ】
2006518885.tif 000005
【図２】
2006518885.tif 000006
【図３】
2006518885.tif 000007
【図４】
2006518885.tif 000008
【図５】
2006518885.tif 000009
【図６Ａ】
2006518885.tif 000010
【図６Ｂ】
2006518885.tif 000011
【図７】
2006518885.tif 000012
【図８】
2006518885.tif 000013
【図９】
2006518885.tif 000014
【図１０】
2006518885.tif 000015
【図１１】
2006518885.tif 000016
【図１２】
2006518885.tif 000017