(57)【要約】  相互接続ネットワーク・ルータ内のパケットを合体する方法及び装置。一実施例では、方法は、コヒーレンス・プロトコル・メッセージを含み、同じ宛先に向けられているが、別々のソースからのものである少なくとも２つのネットワーク・パケットを識別するための、少なくとも１つの入力バッファの走査を含む。一実施例では、ネットワーク・パケット内のコヒーレンス・プロトコル・メッセージが合体ネットワーク・パケットに合成される。合成されると、合体ネットワーク・パケットは、同じ又は一致する宛先に送信される。一実施例では、複数のネットワーク・パケット（それぞれが単一の論理コヒーレンス・メッセージを含む）を、より大きな、合体ネットワーク・パケットに合成する工程によって、帯域幅利用を向上させるよう、より大きな合体ネットワーク・パケットと比較して、単一のコヒーレンス・メッセージを含むネットワーク・パケットを送出するうえでの固定オーバヘッドがならされる。他の実施例を本明細書及び特許請求の範囲で記載する。
2008504609.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
少なくとも１つの入力バッファを走査して、別々のソース及び一致する宛先を有する少なくとも２つのネットワーク・パケットを識別する工程であって、各ネットワーク・パケットが単一のコヒ―レンス・プロトコル・メッセージを含む工程と、
前記識別されたネットワーク・パケット内の前記コヒーレンス・プロトコル・メッセージを合体ネットワーク・パケットに合成する工程と、
前記合体ネットワーク・パケットを前記一致する宛先に送信する工程とを備えることを特徴とする方法。
【請求項２】
請求項１記載の方法であって、前記ネットワーク・パケットは、安定した生成側・消費側共有パターンに応じて生成側から消費側へのバーストにおいて生起することを特徴とする方法。
【請求項３】
請求項１記載の方法であって、前記識別されたネットワーク・パケットは同じプロセッサ宛てであることを特徴とする方法。
【請求項４】
請求項１記載の方法であって、合成する工程は、
前記識別ネットワーク・パケットそれぞれへのポインタを設定する工程と、
前記識別された少なくとも２つのネットワーク・パケットを前記合体ネットワーク・パケットが指し示すポインタ・テーブルを更新する工程と、
前記合体ネットワーク・パケットの出力ポートへの転送前に前記ポインタ・テーブルに応じて前記合体ネットワーク・パケット内に前記コヒーレンス・プロトコル・メッセージを記憶する工程とを備えることを特徴とする方法。
【請求項５】
請求項１記載の方法であって、
前記識別されたネットワーク・パケットを廃棄する工程を更に備えることを特徴とする方法。
【請求項６】
請求項１記載の方法であって、走査する工程は、
同じ宛先に向かう、別々のソースからのネットワーク・パケットを検出するよう中央バッファをサーチする工程と、
単一のコヒーレンス・プロトコル・メッセージを含む検出ネットワーク・パケットを識別する工程とを更に備えることを特徴とする方法。
【請求項７】
請求項１記載の方法であって、合成する工程は、
マージ・バッファ内に前記識別ネットワーク・パケットを記憶する工程と、
前記合体ネットワーク・パケットの出力ポートへの割り当ての前に、前記識別ネットワーク・パケット内の前記コヒーレンス・プロトコル・メッセージから前記合体ネットワーク・パケットを形成する工程と、
前記識別ネットワーク・パケットを廃棄する工程とを更に備えることを特徴とする方法。
【請求項８】
請求項１記載の方法であって、走査する工程は、
単一のコヒーレンス・プロトコル・メッセージを含む検出ネットワーク・パケットをマージ・バッファ内に記憶する工程と、
前記マージ・バッファを走査して、同じ宛先を有する前記少なくとも２つのネットワーク・パケットを識別する工程とを更に備えることを特徴とする方法。
【請求項９】
請求項１記載の方法であって、前記識別されたネットワーク・パケット内の前記コヒーレンス・プロトコル・メッセージを前記合体ネットワーク・パケットに合成する工程は、マージ・パイプライン段階中に行われることを特徴とする方法。
【請求項１０】
請求項１記載の方法であって、ネットワーク・パケット内コヒーレンス・プロトコル・メッセージは、キャッシュ・ミス要求及びキャッシュ・ミス応答の一方を備えることを特徴とする方法。
【請求項１１】
方法であって、
コヒーレンス・プロトコル・メッセージを含む検出ネットワーク・パケットをマージ・バッファ内に記憶する工程と、
前記マージ・バッファを走査して、別々のソース及び一致する宛先を有する少なくとも２つのネットワーク・パケットを識別する工程と、
前記識別されたネットワーク・パケット内のコヒーレンス・プロトコル・メッセージから合体ネットワーク・パケットを形成する工程とを備えることを特徴とする方法。
【請求項１２】
請求項１１記載の方法であって、前記合体ネットワーク・パケットは、前記合体ネットワーク・パケットの出力ポートへの割り当ての前に形成されることを特徴とする方法。
【請求項１３】
請求項１１記載の方法であって、前記合体ネットワーク・パケットを形成する工程は、
前記識別ネットワーク・パケットそれぞれへのポインタを設定する工程と、
前記識別された少なくとも２つのネットワーク・パケットを前記合体ネットワーク・パケットが指し示すポインタ・テーブルを更新する工程と、
前記合体ネットワーク・パケットの出力ポートへの転送前に前記ポインタ・テーブルに応じて前記合体ネットワーク・パケット内に前記コヒーレンス・プロトコル・メッセージを記憶する工程とを備えることを特徴とする方法。
【請求項１４】
請求項１１記載の方法であって、
前記識別されたネットワーク・パケットを廃棄する工程を更に備えることを特徴とする方法。
【請求項１５】
請求項１１記載の方法であって、記憶する工程は、
単一のコヒーレンス・プロトコル・メッセージを含むネットワーク・パケットを検出するよう中央バッファをサーチする工程を更に備えることを特徴とする方法。
【請求項１６】
装置であって、
複数の読み取りポートを含む少なくとも１つの入力バッファと、
読み取りポートを介して前記少なくとも１つの入力バッファを走査して、別々のソース及び一致する宛先を有し、各ネットワーク・パケットがコヒーレンス・プロトコル・メッセージを含む少なくとも２つのネットワーク・パケットを識別し、前記識別されたネットワーク・パケットを合体ネットワーク・パケットに合成するためのコントローラとを備えることを特徴とする装置。
【請求項１７】
請求項１６記載の装置であって、前記少なくとも１つの入力バッファは、
中央バッファを備え、前記コントローラは、読み取りポートを介して前記中央バッファをサーチして、同じ宛先に向かう、別々のソースからのネットワーク・パケットを検出し、コヒーレンス・プロトコル・メッセージを含む検出ネットワーク・パケットを識別するものとすることを特徴とする装置。
【請求項１８】
請求項１７記載の装置であって、
マージ・バッファを更に備え、前記コントローラは、コヒーレンス・プロトコル・メッセージを含む検出ネットワーク・パケットを前記マージ・バッファ内に記憶し、前記別々のソース及び前記一致する宛先を有する前記少なくとも２つのネットワーク・パケットを識別するよう前記マージ・バッファを走査することを特徴とする装置。
【請求項１９】
請求項１７記載の装置であって、前記コントローラは、前記合体ネットワーク・パケットの出力ポートへの割り当ての前に前記合体ネットワーク・パケットを形成するものとすることを特徴とする装置。
【請求項２０】
請求項１７記載の装置であって、チップ・マルチプロセッサの相互接続ルータを備えることを特徴とする装置。
【請求項２１】
請求項１７記載の装置であって、
前記少なくとも１つの入力バッファに結合されたクロスバーを更に備え、該クロスバーは、前記合体ネットワーク・パケットを出力ポートに転送するものとすることを特徴とする装置。
【請求項２２】
請求項２１記載の装置であって、
出力ポート調停のために前記入力バッファ内の少なくとも１つのネットワーク・パケットを指定するための入力ポート調停ロジックと、
該入力ポート調停ロジックからのパケット指定を受け入れ、配布のためにネットワーク・パケットを選択するための出力ポート調停ロジックとを更に備えることを特徴とする装置。
【請求項２３】
請求項１６記載の装置であって、前記コントローラは、前記識別されたネットワーク・パケット内の前記コヒーレンス・プロトコル・メッセージを前記合体ネットワーク・パケットにマージ・パイプライン段階中に合成するものとすることを特徴とする装置。
【請求項２４】
請求項２１記載の装置であって、４つの２Ｄトーラス入力ポートと、４つの２Ｄト―ラス出力ポートとを更に備えることを特徴とする装置。
【請求項２５】
請求項１６記載の装置であって、
前記コントローラに結合されたプロセッサ・コアを更に備えることを特徴とする装置。
【請求項２６】
システムであって、
複数のプロセッサ・ノードを含むネットワークを備え、各プロセッサ・ノードは、相互接続ルータを含み、該相互接続ルータは、
複数の読み取りポートを含む少なくとも１つの入力バッファと、
読み取りポートを介して前記少なくとも１つの入力バッファを走査して、別々のソース及び一致する宛先を有し、それぞれの識別ネットワーク・パケットがコヒーレンス・プロトコル・メッセージを含む少なくとも２つのネットワーク・パケットを識別し、前記識別されたネットワーク・パケット内のコヒーレンス・プロトコル・メッセージを合体ネットワーク・パケットに合成するためのコントローラとを備えることを特徴とするシステム。
【請求項２７】
請求項２６記載のシステムであって、キャッシュ・コヒーレント共有メモリ型マルチプロセッサ・システムであることを特徴とするシステム。
【請求項２８】
請求項２６記載のシステムであって、前記ネットワークが２次元メッシュ型ネットワークであることを特徴とするシステム。
【請求項２９】
請求項２６記載のシステムであって、前記少なくとも１つの入力バッファは、
中央バッファを備え、前記コントローラは、前記中央バッファをサーチして、同じ宛先に向かう、別々のソースからのネットワーク・パケットを検出し、コヒーレンス・プロトコル・メッセージを含む検出ネットワーク・パケットを識別するものとすることを特徴とするシステム。
【請求項３０】
請求項２６記載のシステムであって、
マージ・バッファを更に備え、前記コントローラは、コヒーレンス・プロトコル・メッセージを含む検出ネットワーク・パケットを前記マージ・バッファ内に記憶し、前記一致する宛先を有する前記少なくとも２つのネットワーク・パケットを識別するよう前記マージ・バッファを走査するものとすることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の１つ又は複数の実施例は一般に、集積回路及びコンピュータ・システム設計の分野に関する。特に、本発明の実施例のうちの１つ又は複数は、相互接続ネットワーク・ルータ内のパケットを合体する方法及び装置に関する。
【背景技術】
【０００２】
１６個以上のプロセッサを備えたキャッシュ・コヒーレント共有メモリ型マルチプロセッサは、一般的なサーバ・マシンになってきている。前述のマシンの販売から発生する収益が世界中のサーバ収益に占める割合は増加している。この市場セグメントの収益は近年、劇的に増加しており、サーバ市場全体で最も成長の速いセグメントになっていることが考えられる。よって、主要ベンダーは前述の共有メモリ型マルチプロセッサを提供している。こうした共有メモリ型マルチプロセッサは、最大で、２４個のプロセッサ以上、５１２個以下のプロセッサの間でスケーリングする。
【０００３】
高性能相互接続ネットワークは、大規模の共有メモリ型マルチプロセッサの成功に不可欠である。前述のネットワークは、多数のプロセッサ及びメモリ・モジュールが、キャッシュ・コヒーレンス・プロトコルを用いてお互いに通信することを可能にする。前述のシステムでは、遠隔メモリ・モジュール（又は別のプロセッサのキャッシュ）への、プロセッサのキャッシュ・ミス（「ミス要求」）、及びその後のミス応答は、ネットワーク・パケット内にカプセル化され、適切なプロセッサ又はメモリに配信される。本明細書及び特許請求の範囲では、ミス要求及びミス応答は、コヒーレンシー・プロトコル・メッセージを表す。
【０００４】
データベース・サーバなどの多くの並列アプリケーションの性能は、コヒーレンシー・プロトコル・メッセージをどれだけすばやく、かつどれだけ多くシステムによって処理することが可能であるかによって変わってくる。よって、ネットワークが、コヒーレンシー・プロトコル・メッセージを含むパケットを、低いレーテンシ及び大きい帯域幅によって配信することが重要である。しかし、ネットワーク帯域幅は多くの場合、貴重な資源であり、コヒーレンス・プロトコルは常に帯域幅を効率的に用いている訳でないことがあり得る。更に、ネットワークは通常、ネットワークにわたってパケットを移動させるうえで特定量のオーバヘッドを有する。
【０００５】
ネットワークにわたってパケットを移動させるのに必要なオーバヘッドは、ルーティング情報及び誤り訂正情報を含み得る。例えば、一部の共有メモリ型マルチプロセッサは、６４ビットのペイロードを移動させるうえで最大１６％のオーバヘッドを有する。しかし、パケット・ペイロードの容量が増えるにつれ、ネットワークにわたってパケットを移動させることに関連するオーバヘッドは減る。よって、６４バイトのペイロードを移動させるうえで１６％のオーバヘッドを必要とする共有メモリ型マルチプロセッサの場合、前述のオーバヘッドは、１２８バイトのペイロードを備えるネットワーク・パケットの約９％に減ることになる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
残念ながら、コヒーレンス・プロトコル・メッセージを担持するネットワーク・パケットは、通常、容量が小さいが、それは、単純なコヒーレンス情報（例えば、肯定応答若しくは要求のメッセージ）又は小容量キャッシュ・ブロック（例えば、６４バイト）を担持するからである。よって、コヒーレンス・プロトコルを含むネットワーク・パケットは通常、ネットワーク帯域幅の利用が非効率的である一方、より斬新な、高性能コヒーレンシー・プロトコルは、ずっと悪い帯域幅利用度を有し得る。
【課題を解決するための手段】
【０００７】
相互接続ネットワーク・ルータ内のパケットを合体する方法及び装置。一実施例では、方法は、コヒーレンス・プロトコルを含み、同じ宛先に向けられているが、別々のソースからのものである少なくとも２つのネットワーク・パケットを識別するための、少なくとも１つの入力バッファの走査を含む。一実施例では、ネットワーク・パケット内のコヒーレンス・プロトコル・メッセージが合体ネットワーク・パケットに合成される。合成されると、合体ネットワーク・パケットは同じ、又は一致する宛先に送信される。一実施例では、（それぞれが単一の論理的コヒーレンス・メッセージを備えている）複数のネットワーク・パケットを、より大きな合体ネットワーク・パケットに合成することによって、より大きな合体ネットワーク・パケットと比較して、単一のコヒーレンス・メッセージを含むネットワーク・パケットを送出するうえでの固定オーバヘッドをならして帯域幅利用を向上させる。
【０００８】
以下の説明では、本発明の特徴を表すうえで特定の用語を用いる。例えば、「ロジック」の語は、１つ又は複数の機能を行うよう構成されたハードウェア及び／又はソフトウェアを表す。例えば、「ハードウェア」の例は、集積回路、有限状態マシン、又は組み合わせロジックに限定又は制限されないが、それらを含む。集積回路は、プロセッサ（マイクロプロセッサ、特定用途向集積回路、ディジタル信号プロセッサ、マイクロコントローラや同様なものなど）の形態をとり得る。
【０００９】
「ソフトウェア」の例は、アプリケーション、アプレット、ルーチン又は一連の命令の形式における実行可能コードを含む。一実施例では、製造物品は、１つの実施例によって処理を行うようコンピュータ（又は他の電子装置）をプログラムするのに用いることができる、上に記憶させたソフトウェアを有する、マシン又はコンピュータが読み取り可能な媒体を含み得る。コンピュータ又はマシンが読み取り可能な媒体は、プログラム可能な電子回路、揮発性メモリ（例えばランダム・アクセス・メモリ等）及び／又は不揮発性メモリ（例えば、何れかのタイプの読み取り専用メモリ「ＲＯＭ」、フラッシュ・メモリ）を含む半導体メモリ装置、フロッピー（登録商標）・ディスク、光ディスク（例えば、コンパクト・ディスクやディジタル・ビデオ・ディスク「ＤＶＤ」）、ハード・ドライブ・ディスク、テープ又は同様なものに限定されないが、それらを含む。
【発明を実施するための最良の形態】
【００１０】
本発明の種々の実施例は、添付図面の図において、限定としてではなく、例として示す。
【実施例】
【００１１】
システム
図１は、一実施例による、プロセッサ１００を示す構成図である。典型的には、プロセッサ１００は、プロセッサ・コア１１０と、キャッシュ・コヒーレント・ハードウェア（図示せず）と、第１のメモリ・コントローラ（ＭＣ）（ＭＣ１）１３０と、第２のＭＣ（ＭＣ２）１４０と、レベル２（Ｌ２）キャッシュ・タグ１５０を含むレベル２（Ｌ２）キャッシュ・データと、相互接続ルータ２００とを単一のダイ上に集積させている。一実施例では、プロセッサ１００を複数のプロセッサ１００と組み合わせ、互いに結合して、一実施例による共有メモリ型マルチプロセッサ・ネットワークを形成することができる。一実施例では、マルチプロセッサ・ネットワークは、例えば、２次元トーラス・ネットワークにおいて最大１２８個のプロセッサ１００を接続する。
【００１２】
図２は、一実施例による、１２個のプロセッサの構成のキャッシュ・コヒーレント共有メモリ型マルチプロセッサ・システムを示す。図２は、１２個のマルチプロセッサ１００を含む共有メモリ型マルチプロセッサ・システムを示しているが、本明細書及び特許請求の範囲記載の実施例が、共有メモリ型マルチプロセッサ・ネットワーク内の、あらゆる数のプロセッサにあてはまることが当業者には分かるであろう。一実施例では、図３及び図４を参照して示した相互接続ルータ２００は、複数のコヒーレンス・プロトコル・メッセージを合体ネットワーク・パケットに合成してマルチプロセッサ・ネットワーク３００内のパケットを移動させるオーバヘッドをならすコントローラを含み得る。
【００１３】
本明細書及び特許請求の範囲記載の通り、ネットワーク・パケット及びフリットは、マルチプロセッサ３００におけるデータ転送の基本単位である。パケットは、１つのルータから別のルータにネットワークにわたって伝送されるメッセージである。本明細書及び特許請求の範囲記載の通り、フリットは、単一のクロック・エッジ上で並列に伝送されるパケット部分である。一実施例では、フリットは３９ビットである（ペイロード（３２ビット）、フリット誤り訂正コード（ＥＣＣ）毎７ビット）である。典型的には、図２に示すプロセッサ間入力ポート及びプロセッサ間出力ポートのそれぞれは、幅が３９ビットであり得る。しかし、他のプロセッサ間ポート幅が、本明細書及び特許請求の範囲記載の実施例内に留まりながら、可能である。
【００１４】
マルチプロセッサ・ネットワーク３００などのマルチプロセッサ・ネットワークは一般に、サポートされる最大パケット・サイズを有するパケットの伝送に最適化されている。キャッシュコヒーレント・プロトコルをサポートするネットワークでは、最大のパケット・サイズが、６４バイト又は１２８バイトのキャッシュ・ブロックを担持するのに用いられる。しかし、要求、転送や肯定応答などの短い数多くのコヒーレンス・プロトコル・メッセージがネットワーク内で伝送され、それによって、ネットワーク帯域幅の利用が非効率になっている。一実施例では、前述の短い複数のメッセージは、更に大きな１つのネットワーク・パケットに合体され、送出され、それによって、ネットワークが最適化される最大のパケット・サイズを利用する。
【００１５】
図３は、それぞれが別々の論理的コヒーレンス・メッセージを担持する複数のネットワーク・パケットを、マルチプロセッサ・ネットワーク３００内の、より大きな単一のネットワーク・パケットに合成するためのマージ・ロジック２６０を含む。一実施例では、これによって、利用可能なネットワーク帯域幅を更に効果的に用いるために、ネットワーク３００にわたってコヒーレンス・メッセージを移動させるうえでのオーバヘッドをならすことが可能になる。一実施例では、大きな１つのネットワーク・パケットに合成することが可能なパケットの数は実現形態に応じて変わってくるものであり、キャッシュ・ブロックのサイズ、ネットワーク・パケット・サイズ、コヒーレンス読み取り要求サイズ、コヒーレンス書き込み要求サイズ、及び同様なものによって判定される。別々の論理的なコヒーレンス・メッセージをそれぞれが含む複数のネットワーク・パケットを、更に大きな単一のネットワーク・パケットに合成することは、本明細書及び特許請求の範囲では、「コヒーレンス・メッセージの合体」として表す。
【００１６】
もう一度図２を参照すれば、通常、パケット・フロースルー・マルチプロセッサ・ネットワーク３００は、プロセッサがキャッシュ・ミスに直面することによって始まる。キャッシュ・ミスの検出によって通常、ミス・アドレス・ファイル（ＭＡＦ）におけるミス要求のキューイングが生じる。その後、コントローラはキャッシュ・ミス要求をネットワーク・パケットに変換し、ネットワーク・パケットをネットワーク３００に注入する。ネットワーク３００はパケットを宛先プロセッサに配信する。宛先プロセッサのメモリは通常、要求を処理し、ネットワーク・パケットにカプセル化されたキャッシュ・ミス応答を戻す。ネットワークは応答パケットを元の要求プロセッサに配信する。本明細書及び特許請求の範囲記載の通り、キャッシュ・ミス要求及びキャッシュ・ミス応答は、コヒーレンス・プロトコル・メッセージの例である。
【００１７】
図３に示すように、相互接続ルータ２００は、クロスバー２２０及びアービタ２１０によって判定されるように、出力ポート２５０にネットワーク・パケットをルーティングするための入力ポート２３０及び入力バッファ２４０を含む。典型的には、ノース、サウス、イースト及びウエストのプロセッサ間入力ポート（２３１乃至２３４）及びプロセッサ間出力ポート（２５１乃至２５４）（「２次元トーラス・ポート」）は、マルチプロセッサ・ネットワーク３００へのチップ外接続に相当する。ＭＣ１入力ポート（２３６）及びＭＣ２入力ポート（２３７）、並びに出力ポート（２５５及び２５６）は、２つのオンチップ・メモリ・コントローラＭＣ１１３０及びＭＣ２１４０である（図１）。キャッシュ入力ポート２３６はＬ２キャッシュ１２０に対応する。Ｌ１出力ポート２５５は、Ｌ１キャッシュ及びＭＣ２  １３０、Ｌ２出力ポート２５６、並びにＬ１キャッシュ及びＭＣ２  １４０に接続する。更に、Ｉ／Ｏポート２３８及び２５７は、マルチプロセッサ１００の外にあるＩ／Ｏチップ３２０に接続する。
【００１８】
図４は、一実施例による、マージ・ロジック２６０を含む相互接続ルータ２００を更に示す。典型的には、入力ポート２３０は、関連した入力バッファ２４１乃至２４８を含む。ルータ２００は通常、パケットをバッファ２４１乃至２４８内のキューに入れる。これらのバッファは、入力ポート２３０に関連付け得るか、又はバッファは共有中央リソースを備え得る。何れの場合にも、アービタ２１０は、これらのバッファ２４１乃至２４８からのパケットを選び、適切な出力ポート２５０にそれを転送する。パケットは、入力バッファ２４１乃至２４８に待機しているので、「合体ネットワーク・パケット」として本明細書及び特許請求の範囲で表すネットワーク・パケットに合体するうえでの独自の機会を提供する。別の実施例では、出力バッファ（例えば、出力ポートに結合されている）を用いて合体ネットワーク・パケットを形成する。
【００１９】
通常、前述の合体には２つのソースが利用可能なものとして存在している。まず、２つのプロセッサ１００は多くの場合、安定した共有パターン（生成側／消費側共有パターン）を有する。よって、生成側は多くの場合、バーストでパケットを消費側に送出する。前述のパケット・バーストは同じルータに到着し、同じ宛先に進む。しかし、特許請求の範囲記載の技術的内容は前述の、バーストの例に限定されるものでない。一実施例では、別々のソース・プロセッサからのものであるが、同じプロセッサ宛のパケット内のコヒーレンス・プロトコル・メッセージを、合体ネットワーク・パケットに合成し、マージ・ロジック２６０によって宛先に送出することが可能である。
【００２０】
一実施例では、マージ・ロジック２６０は、単一のコヒーレンス・プロトコル・メッセージを含む、同じ宛先を有するネットワーク・パケットを検出するよう相互接続ルータ３００の入力バッファ２４０を走査するためのコントローラ２６２を含む。一実施例では、本明細書及び特許請求の範囲記載のコヒーレンス・メッセージ合体の実現は、コントローラ２６２によってマージ・バッファ２６４を用いて行われる。一実施例では、「マージ・パイプライン段階」として本明細書及び特許請求の範囲に記載する追加パイプライン段階を、図５Ａ及び図５Ｂに示すようにルータ・パイプラインに追加してコヒーレンス・メッセージ合体を備える。
【００２１】
一実施例では、マージ・バッファ２６４を、相互接続ルータ３００の対応する入力バッファ毎に備える。別の実施例では、別個のポインタ・テーブルを用いて、合体ネットワーク・パケットへの合体に識別されたネットワーク・パケットをトラッキングする。この実施例によれば、ポインタ連鎖をたどって、ネットワーク・ルータ３００のパイプラインを通って横切る識別パケットを拾うよう読み取りロジックを備える。一実施例では、マージ・バッファ２６４内のバッファ・エントリは、最大パケット・サイズを保持するよう予め割り当てられる。前述の実施例によれば、パケットが受信されるにつれ、合体ネットワーク・パケットに形成するよう合成する対象のネットワーク・パケットを含む、マージ・バッファ２６４の予め割り当てられたエントリに直接、パケットを投入することによって、併せてマージされる。
【００２２】
【表１】
2008504609.tif 000003
【００２３】
図５Ａ及び図５Ｂに示すように、ルータ・パイプラインは、クロスバー及びＥＣＣの計算を介してルータ・テーブル・ルックアップ、復号化、調停、転送を行ういくつかの段階からなり得る。局所ポートからのパケットは、ルータ・テーブルからのそのルーティング情報のルックアップを行い、そのヘッダに結果を積む。復号化段階はパケットのヘッダ情報を復号化し、適切な情報をエントリ・テーブルに書き込む。これは、パケットの調停ステータスを含み、後の調停パイプライン段階において用いられる。表１は図５Ａ及び図５Ｂに示すパイプライン段階を説明するのに用いる種々の略語を表す。
【００２４】
図５Ａは、局所入力ポート（キャッシュ又はメモリ・コントローラ）からプロセッサ間出力ポートへのルータ・パイプライン２７０を示す。逆に、図５Ｂは、プロセッサ間（ノース、サウス、イースト又はウエスト）入力ポートからプロセッサ間出力ポートへのルータ・パイプライン２８０を示す。典型的には、第１のフリット（２７２／２８２）は２つのパイプライン（２７０‐１及び２８０‐１）（１つ（上方パイプライン（２７０‐３／２８０‐３））はスケジューリング用であり、もう１つ（下方パイプライン（２７０‐４／２８０‐４））はデータ用である）を通る。第２のフリット（２７４／２８４）及び後続フリットはデータ・パイプライン（２７０‐２／２８０‐２）をたどる。一実施例では、コヒーレンス・プロトコル・メッセージを含むパケットをコントローラ２６２が走査し、合成するためにキュー段階の後にマージ段階が追加される。
【００２５】
図示するように、マージ・パイプライン段階（Ｍ）を、書き込み入力キュー（ＷｒＱ）パイプライン段階の前に追加する。よって、一実施例では、復号化段階（ＤＷ）の後、コントローラ２６２は、ネットワーク・パケットの宛先を検出することが可能である。後に、マージ段階（Ｍ）で、コントローラ２６２は、検出パッケージを既存のパケットとマージすることが可能であるかを判定することが可能である。一実施例では、別のネットワーク・パケットと合成して合体ネットワーク・パケットを形成することが可能な、コヒーレンス・プロトコル・メッセージを備えたネットワーク・パケットのトラッキングは、検出パケットを指し示すためのポインタを、例えば、ポインタのテーブル内に追加することによって行われる。後に、合体ネットワーク・パケットを出力ポートに送信する前に、合体ネットワーク・パケットを形成し得る。
【００２６】
図４に更に示すように、アービタ２１０は、局所調停ロジック（Ｌ）並びに大局調停ロジック（Ｇ）を含み得る。一実施例では、調停パイプラインは、３つの段階（ＬＡ（入力ポート調停）、ＲＥ（エントリ・テーブルの読み取り、及び伝送）、並びにＧＡ（出力ポート調停）（表１を参照のこと））から成る。入力ポート調停段階は、入力バッファ２４１乃至２４８からのパケットを見出し、出力ポート調停Ｇのためにそのうちの１つを指定する。一実施例では、各入力バッファ２４０は２つの読み取りポートを有し、各読み取りポートは、それに関連付けられる入力ポート・アービタＬを有する。
【００２７】
一実施例では、入力ポート・アービタＬは、エントリ・テーブルにおける情報を用いていくつかのレディネス・テスト（目標出力ポートが空いているか否かを判定するなど）を行う。一実施例では、出力ポート・アービタＧは、入力ポート・アービタからのパケット指定を受け入れ、配布する対象のパケットを定める。各出力ポート２５０は１つのアービタを有する。出力ポート・アービタＧは、配布するためのパケットを選択すると、その判定を入力ポート・アービタＬに通知するので、入力ポート・アービタＬは、後のサイクルにおいて、選択されていないパケットを再指定することが可能である。
【００２８】
一実施例では、コントローラ２６２は、更なる読み取りポートを介して入力バッファをアクセスすることによって、同じ宛先に向かっているパケットを走査する。図示した実施例では、コントローラ２６２は、同じ宛先に向かっている、別々のソースからのパケットを見出すよう複数の入力バッファ２４０を検査する。一実施例では、コントローラ２６２は、マージ・バッファ２６４を含む。マージ・バッファを用いて、例えばネットワーク３００内のマルチプロセッサなどの同じ宛先に向けられたコヒーレンス・プロトコル・メッセージを含む検出ネットワーク・パケットを記憶することができる。
【００２９】
一実施例では、合体ネットワーク・パケットの形成は、クロスバー２２０による、出力ポート２５０への合体ネットワーク・パケットの転送の前に行われる。一実施例では、ネットワーク・ルータ２００は、共有資源入力バッファを含み得る。前述の実施例によれば、コントローラ２６２は、同じ宛先に向けられた、別々のソースからのネットワーク・パケットを検出するよう中央バッファをサーチする。検出されると、コントローラ２６２は、単一のコヒーレンス・プロトコル・メッセージを含むネットワーク・パケットを識別して、コヒーレンス・プロトコル・メッセージの合体を行うことができる。１つ又は複数の実施例を実現する、手順上の方法を次に説明する。
【００３０】
動作
図７は、一実施例による（例えば、図１乃至図６を参照して示すように）、相互接続ルータ内のパケットを合体する方法５００を示す流れ図である。処理ブロック５０２では、少なくとも１つの入力バッファを走査して、一致する宛先を有し、コヒーレンス・プロトコル・メッセージを含む少なくとも２つのネットワーク・パケットを識別する。検出されると、処理ブロック５１０で、識別されたネットワーク・パケット内のコヒーレンス・プロトコル・メッセージを合成して、合体ネットワーク・パケットを形成するよう合成される。形成されると、合体ネットワーク・パケットは、一致する宛先に送信される。例えば、図６を参照して示したように、ソース１及びソース２からの２つのパケットがプロセッサ５宛である場合、２つのパケットをプロセッサ／ルータ３に合成することが可能である。２つのパケットは次いで、より大きな合成ネットワークとして３から４、４から５に進むことが可能である。
【００３１】
図８は、一実施例による、図７の処理ブロック５１０の識別ネットワーク・パケット内のコヒーレンス・プロトコル・メッセージを合成する方法５２０を示す流れ図である。処理ブロック５２２では、ポインタが、例えば、図４に示すようにコントローラ２６２によって、識別されたネットワーク・パケットのそれぞれに設定される。処理ブロック５２４では、合体ネットワーク・パケットが少なくとも２つの識別ネットワーク・パケットを指し示すようにポインタ・テーブルが更新される。処理ブロック５２６では、コヒーレンス・プロトコル・メッセージは、ポインタのテーブルによって、合体ネットワーク・パケット内に記憶される。
【００３２】
図９は、一実施例による、コヒーレンス・プロトコル・メッセージを合成して、図７の処理ブロック５１０の合体ネットワーク・パケットを形成する方法５３０を示す流れ図である。処理ブロック５３２では、処理ブロック５０２の識別ネットワーク・パケットが、例えば、図４を参照して示すようなマージ・バッファ内に記憶される。処理ブロック５３４では、合体ネットワーク・パケットの出力ポートへの割り当ての前に識別ネットワーク・パケット内のコヒーレンス・プロトコルから、合体ネットワーク・パケットが形成される。処理ブロック５３６では、識別ネットワーク・パケットは廃棄される。
【００３３】
図１０は、本願開示の手法を用いた設計のシミュレーション、エミュレーション及び製造のための種々の表現又はフォーマットを示す構成図である。設計を表すデータは、いくつかのやり方において設計を表すことができる。まず、シミュレーションにおいて有用であるように、ハードウェアは、ハードウェア記述言語又は別の機能的記述言語（基本的に、設計されたハードウェアの実行がどのようにして期待されるかというコンピュータ化モデル）を基本的に備える。ハードウェア・モデル６１０は、記憶媒体６００（コンピュータ・メモリなど）に記憶することができる。よって、特定のテスト・スイート６３０をハードウェア・モデルに施して、意図されたように実際に機能するかを判定するためのシミュレーション・ソフトウェア６２０を用いてモデルをシミューレートすることができる。一部の実施例では、シミュレーション・ソフトウェアは、媒体内に記録されず、捕捉されず、又は含まれない。
【００３４】
設計の何れの表現においても、データは、マシン読み取り可能媒体の何れかの形式に記憶することができる。前述の情報を伝送するよう変調又は他の方法で生成される光波又は電波６００、ディスクなどのメモリ６５０、又は磁気記憶装置若しくは光記憶装置６４０は、マシン読み取り可能媒体であり得る。前述の媒体は何れも、設計情報を担持し得る。「担持」の語（例えば、情報を担持するマシン読み取り可能媒体）はよって、記憶装置上に記憶された情報、又は、搬送波内又は搬送波上に符号化又は変調される情報を包含する。設計、又は設計の詳細を表すビット組は、（搬送波や記憶媒体などのマシン読み取り可能媒体において実施される場合、）それ自身において封入され、それ自身から密封され得るか、又は、更なる設計及び製造のために他のものによって用いられ得る物品である。
【００３５】
他の実施例
他の実施例の場合、別のシステム構成を用いることができる。例えば、システム１００は共有メモリ型マルチプロセッサ・システムを含むが、他のシステム構成は、パケットが種々の実施例の相互接続ネットワーク・ルータ内で合体することからの恩恵を受け得る。更に別のタイプのシステム又は別のタイプのコンピュータ・システム（例えば、サーバ、ワークステーション、デスクトップ型コンピュータ・システム、ゲーム・システム、組み込みコンピュータ・システム、ブレード・サーバ等など）を、他の実施例に用いることができる。
【００３６】
実施例及び最良の形態を開示したが、本発明の実施例の範囲内に収まった状態に留まる一方で、開示された実施例に修正及び変形を行うことができる。
【図面の簡単な説明】
【００３７】
【図１】一実施例による、プロセッサを示す構成図である。
【図２】一実施例による、キャッシュ・コヒーレンス共有メモリ型マルチプロセッサ・ネットワークを示す構成図である。
【図３】一実施例による、図１の相互接続ルータを更に示す構成図である。
【図４】一実施例による、図３の相互接続ルータを更に示す構成図である。
【図５】図３及び図４に示すネットワーク・ルータの１つ又は複数のパイプライン段階を示す構成図である。
【図６】一実施例による、相互接続ルータ内のパケットを合体するための２次元メッシュ型ネットワークを示す構成図である。
【図７】一実施例による、相互接続ルータ内のパケットを合体する方法を示す流れ図である。
【図８】一実施例による、コヒーレンス・プロトコル・メッセージを合体ネットワーク・パケットに合成する方法を示す流れ図である。
【図９】一実施例による、合体ネットワーク・パケット内の識別ネットワーク・パケットのコヒーレンス・プロトコル・メッセージを合成する方法を示す流れ図である。
【図１０】本願開示の手法を用いた設計のシミュレーション、エミュレーション及び製造のための種々の設計表現又はフォーマットを示す構成図である。
【図１】
2008504609.tif 000004
【図２】
2008504609.tif 000005
【図３】
2008504609.tif 000006
【図４】
2008504609.tif 000007
【図５】
2008504609.tif 000008
【図６】
2008504609.tif 000009
【図７】
2008504609.tif 000010
【図８】
2008504609.tif 000011
【図９】
2008504609.tif 000012
【図１０】
2008504609.tif 000013
【国際調査報告】
2008504609.tif 000014
2008504609.tif 000015
2008504609.tif 000016