(57)【要約】【課題】各ノードがコンピューティング・デバイスを含む、ｍ個の複数次元で構成された複数のノードを有する大量並列コンピューティング・システムにおいて、下流ノードから導出される情報を含む２ｍ個の複数のコンパクト・ビット・ベクトルの少なくとも１つを生成することを含む、パケットをその宛先ノードに向けて経路指定する方法を提供すること。【解決手段】リンク状況情報および下流バッファの満杯度などの下流情報がコンパクト・ベクトルに保管される複数レベル調停処理を使用して、パケット伝送の好ましい方向および仮想チャネルを判定する。好ましい方向の範囲が、エンコードされ、仮想チャネルが、複数のコンパクト・ビット・ベクトルを検査することによって選択される。この動的指定方法により経路指定テーブルの必要がなくなることによって、スイッチのスケーラビリティが強化される。【選択図】図１
2004527176.tif 000002
【特許請求の範囲】
【請求項１】
ｍ個の複数次元で構成された複数のノードを含み、各ノードがコンピューティング装置を含む大規模並列コンピューティング・システムにおいて、パケットをその宛先ノードに対して経路指定する方法であって、
ａ）２ｍ個の方向の少なくとも１つから対応する数の入力リンクの少なくとも１つを介して複数の仮想チャネルの対応する少なくとも１つに前記パケットを入力するステップと、
ｂ）前記ノードのローカルから複数のプロセッサ注入ＦＩＦＯの少なくとも１つにローカル・パケットを入力するステップと、
ｃ）２ｍ個の複数の出力ステイタス・ビット・ベクトルを生成するステップであって、前記出力ステイタス・ビット・ベクトルのそれぞれが、そのリンクの可用性、下流仮想チャネルの可用性、およびその方向に関連するすべての仮想チャネルの下流バッファ空間表現を記述する、ステップと、
ｄ）一般調停ポリシを確立するステップであって、調停判断が、前記２ｍ個の複数の出力ステイタス・ビット・ベクトルの内容に基づいて行われる、ステップと、
ｅ）前記一般調停ポリシに従って、少なくとも１つの転送パスを介して対応する出力リンクへ前記パケットを出力するステップであって、前記パケットが、前記宛先ノードに対して進められる、ステップと、
ｆ）前記パケットおよび前記ローカル・パケットのいずれかが入力に関して使用可能の間に前のステップを繰り返すステップと、
を含む方法。
【請求項２】
前記パケットのパケット・ヘッダからのヒント・ビットを使用することをさらに含み、前記ヒント・ビットが、前記２ｍ個の方向のうちのどれが前記パケットのそれぞれが移動するのに使用可能であるかを示し、前記ヒント・ビットによって、前記一般調停ポリシを確立するステップが、よりすばやく完了する、請求項１に記載のパケットを経路指定する方法。
【請求項３】
各方向について前記２ｍ個の複数の可能ビット・ベクトルを作成するステップことであって、前記複数の可能ビット・ベクトルのそれぞれが、前記仮想チャネルのそれぞれについて前記各方向での前記パケットのいずれかのさらなる移動がまだ経路指定目標であるかどうかを示すステップをさらに含む、請求項１に記載のパケットを経路指定する方法。
【請求項４】
前記一般調停ポリシを確立するステップの入力フェーズの実行が、
ａ）その宛先にない前記パケットのどれが完全にブロックされるかを決定するステップと、
ｂ）その宛先にない前記パケットのどれがブロックされないかを決定するステップと、
ｃ）その宛先にある前記パケットのどれがブロックされるかを決定するステップと、
ｄ）その宛先にある前記パケットのどれがブロックされないかを決定するステップと、
を含む、請求項３に記載のパケットを経路指定する方法。
【請求項５】
前記２ｍ個の方向に対応する前記２ｍ個の複数の入力ステイタス・ビット・ベクトルを生成するステップを含み、前記入力ステイタス・ビット・ベクトルのそれぞれが、調停の準備ができていることと、前記２ｍ個の方向の１つに関連する前記複数の仮想チャネルおよび前記複数のプロセッサ注入ＦＩＦＯのそれぞれに関するバッファの入力満杯度表現とを記述する、請求項４に記載のパケットを経路指定する方法。
【請求項６】
事前定義の調停サイクル判断基準が満たされる場合に、現在の調停サイクルで前記入力ステイタス・ビット・ベクトルの前記バッファの入力満杯度表現をランダム化するステップと、
前記事前定義の調停サイクル判断基準が満たされない場合に、前記現在の調停サイクルで最長キュー優先順位調停を実行するステップと、
をさらに含む、請求項５に記載のパケットを経路指定する方法。
【請求項７】
ａ）優先順位仮想チャネルのヘッドにある前記パケットのうちのブロックされないもの、
ｂ）前記パケットの前記１つが高優先順位パケットであり、優先順位仮想チャネルに前記パケットがない場合に、バイパス・パス内の前記パケットのうちのブロックされないもの、
ｃ）最高の前記バッファの満杯度表現を有する、非優先順位仮想チャネル内の前記パケットのうちのブロックされないもの、
ｄ）非優先順位パケットである場合に、前記バイパス・パス内の前記パケットのうちのブロックされないもの、
という最高優先順位から最低優先順位への前記パケットの入力調停優先順位を生成するステップをさらに含む、請求項６に記載のパケットを経路指定する方法。
【請求項８】
ａ）前記高優先順位ブロックされないパケットについて、前記可能ビット・ベクトルの優先順位仮想チャネル・ビットが方向がまだ前記高優先順位ブロックされなパケットの経路指定目標であることを示す方向および優先順位仮想チャネルを選択するステップと、
ｂ）動的経路指定可能でない前記非優先順位ブロックされないパケットについて、前記可能ビット・ベクトルのエスケープ仮想チャネル・ビットが方向がまだ動的経路指定可能でない前記非優先順位ブロックされないパケットの経路指定目標であることを示す方向およびエスケープ仮想チャネルを選択するステップと、
ｃ）動的経路指定可能である前記非優先順位ブロックされないパケットについて、前記可能ビット・ベクトルが方向がまだ経路指定目標であることを示し、前記出力ステイタス・ビット・ベクトルが最大の前記バッファ空間表現を示す方向および動的仮想チャネルを選択するステップであって、そのようなチャネルおよび方向の組合せが存在しない場合に、前記可能ビット・ベクトルの前記エスケープ仮想チャネル・ビットが前記方向がまだ経路指定目標であることを示す方向およびエスケープ仮想チャネルを選択する、ステップと
に従って、各前記ブロックされない１つのパケットについて、出力方向および出力仮想チャネルを選択することをさらに含む、請求項７に記載のパケットを経路指定する方法。
【請求項９】
前記一般調停ポリシを確立するステップの出力フェーズの実行が、
事前定義の出力フェーズ調停サイクル判断基準に従って、現在の出力フェーズ調停サイクルをプロセッサ注入ＦＩＦＯについて高優先順位に設定するステップと、
前記事前定義の出力フェーズ調停サイクル判断基準に従って、現在の出力フェーズ調停サイクルをプロセッサ注入ＦＩＦＯについて低優先順位に設定するステップと、
を含む、請求項８に記載のパケットを経路指定する方法。
【請求項１０】
ａ）複数の優先順位仮想チャネルのうちで最高のバッファの入力満杯度表現を有する前記優先順位仮想チャネルのヘッドにある前記パケットのうちのブロックされないもの、
ｂ）複数のプロセッサ注入ＦＩＦＯのうちで最高のバッファの入力満杯度表現を有するプロセッサ注入ＦＩＦＯからの高優先順位パケット、
ｃ）複数の非優先順位仮想チャネルからの最高の前記バッファの入力満杯度を有する非優先順位仮想チャネル内の前記パケットのうちのブロックされないもの、
ｄ）複数のプロセッサ注入ＦＩＦＯのうちで最高のバッファの入力満杯度表現を有するプロセッサ注入ＦＩＦＯからの通常優先順位パケット、
という最高優先順位から最低優先順位への前記パケットの出力調停優先順位を生成するステップであって、現在の出力フェーズ調停サイクルが、プロセッサ注入ＦＩＦＯについて低優先順位であるステップをさらに含む、請求項９に記載のパケットを経路指定する方法。
【請求項１１】
ａ）前記複数のＦＩＦＯのうちで最高のバッファの入力満杯度表現を有するプロセッサ注入ＦＩＦＯからの高優先順位パケット、
ｂ）前記複数の優先順位仮想チャネルからの最高のバッファの入力満杯度表現を有する前記優先順位仮想チャネルのヘッドにある前記パケットのうちの前記ブロックされないもの、
ｃ）前記複数のプロセッサ注入ＦＩＦＯのうちで最高のバッファの入力満杯度表現を有するプロセッサ注入ＦＩＦＯからの通常優先順位パケット、
ｄ）前記複数の非優先順位仮想チャネルからの最高の前記バッファの入力満杯度表現を有する前記非優先順位仮想チャネル内の前記パケットのうちのブロックされないもの、
という最高優先順位から最低優先順位への前記パケットの出力調停優先順位を生成するステップであって、現在の出力フェーズ調停サイクルがプロセッサ注入ＦＩＦＯについて高優先順位であるステップをさらに含む、請求項９に記載のパケットを経路指定する方法。
【請求項１２】
ｍ個の複数次元で構成された複数のノードを含み、各ノードがコンピューティング装置を含む大規模並列コンピューティング・システムにおいて、パケットをその宛先ノードに対して経路指定するシステムであって、
ａ）２ｍ個の方向の少なくとも１つから対応する数の入力リンクの少なくとも１つを介して複数の仮想チャネルの対応する少なくとも１つに前記パケットを入力する手段と、
ｂ）前記ノードのローカルから複数のプロセッサ注入ＦＩＦＯの少なくとも１つにローカル・パケットを入力する手段と、
ｃ）２ｍ個の複数の出力ステイタス・ビット・ベクトルを生成する手段であって、前記出力ステイタス・ビット・ベクトルのそれぞれが、そのリンクの可用性、下流動的仮想チャネルの可用性、およびその方向に関連するすべての仮想チャネルの下流バッファ空間表現を記述する、手段と、
ｄ）一般調停ポリシを確立する手段であって、調停判断が、前記２ｍ個の複数の出力ステイタス・ビット・ベクトルの内容に基づいて行われる、手段と、
ｅ）前記一般調停ポリシに従って、少なくとも１つの転送パスを介して対応する出力リンクへ前記パケットを出力する手段であって、前記パケットが、前記宛先ノードに対して進められる、手段と、
ｆ）前記パケットおよび前記ローカル・パケットのいずれかが入力に関して使用可能の間に前のステップを繰り返す手段と、
を含むシステム。
【請求項１３】
ｍ個の複数次元で構成された複数のノードを含み、各ノードがコンピューティング装置を含む大規模並列コンピューティング・システムにおいて、パケットをその宛先ノードに対して経路指定する方法ステップを実行するために計算機によって実行可能なプログラムであって、前記方法ステップが、
ａ）２ｍ個の方向の少なくとも１つから対応する数の入力リンクの少なくとも１つを介して複数の仮想チャネルの対応する少なくとも１つに前記パケットを入力するステップと、
ｂ）前記ノードのローカルから複数のプロセッサ注入ＦＩＦＯの少なくとも１つにローカル・パケットを入力するステップと、
ｃ）２ｍ個の複数の出力ステイタス・ビット・ベクトルを生成するステップであって、前記出力ステイタス・ビット・ベクトルのそれぞれが、そのリンクの可用性、下流動的仮想チャネルの可用性、およびその方向に関連するすべての仮想チャネルの下流バッファ空間表現を記述する、ステップと、
ｄ）一般調停ポリシを確立するステップであって、調停判断が、前記２ｍ個の複数の出力ステイタス・ビット・ベクトルの内容に基づいて行われる、ステップと、
ｅ）前記一般調停ポリシに従って、少なくとも１つの転送パスを介して対応する出力リンクへ前記パケットを出力するステップであって、前記パケットが、前記宛先ノードに対して進められる、ステップと、
ｆ）前記パケットおよび前記ローカル・パケットのいずれかが入力に関して使用可能の間に前のステップを繰り返すステップと、
を含むプログラム記憶装置。
【請求項１４】
前記方法ステップが、前記パケットのパケット・ヘッダからのヒント・ビットを使用することをさらに含み、前記ヒント・ビットが、前記２ｍ個の方向のうちのどれが前記パケットのそれぞれが移動するのに使用可能であるかを示し、前記ヒント・ビットによって、前記一般調停ポリシを確立するステップが、よりすばやく完了する、請求項１３に記載のプログラム。
【請求項１５】
前記方法ステップが、各方向について前記２ｍ個の複数の可能ビット・ベクトルを生成するステップであって、前記複数の可能ビット・ベクトルのそれぞれが、前記仮想チャネルのそれぞれについて前記各方向での前記パケットのいずれかのさらなる移動がまだ経路指定目標であるかどうかを示す、ステップをさらに含む、請求項１３に記載のプログラム。
【請求項１６】
前記一般調停ポリシを確立するステップの入力フェーズの実行が、
ａ）その宛先にない前記パケットのどれが完全にブロックされるかを決定するステップと、
ｂ）その宛先にない前記パケットのどれがブロックされないかを決定するステップと、
ｃ）その宛先にある前記パケットのどれがブロックされるかを決定するステップと、
ｄ）その宛先にある前記パケットのどれがブロックされないかを決定するステップと、
を含む、請求項１５に記載のプログラム。
【請求項１７】
前記方法ステップが、前記２ｍ個の方向に対応する前記２ｍ個の複数の入力ステイタス・ビット・ベクトルを生成するステップを含み、前記入力ステイタス・ビット・ベクトルのそれぞれが、調停の準備ができていることの表現と、前記２ｍ個の方向の１つに関連する前記複数の仮想チャネルおよび前記複数のプロセッサ注入ＦＩＦＯのそれぞれに関するバッファの入力満杯度表現とを記述する、請求項１６に記載のプログラム。
【請求項１８】
事前定義の調停サイクル判断基準が満たされる場合に、現在の調停サイクルで前記入力ステイタス・ビット・ベクトルの前記バッファの入力満杯度表現をランダム化するステップと、
前記事前定義の調停サイクル判断基準が満たされない場合に、前記現在の調停サイクルで最長キュー優先順位調停を実行するステップと、
をさらに前記方法ステップが含む、請求項１７に記載のプログラム。
【請求項１９】
ａ）優先順位仮想チャネルのヘッドにある前記パケットのうちのブロックされないもの、
ｂ）前記パケットの前記１つが高優先順位パケットであり、優先順位仮想チャネルに前記パケットがない場合に、バイパス・パス内の前記パケットのうちのブロックされないもの、
ｃ）最高の前記バッファの満杯度表現を有する、非優先順位仮想チャネル内の前記パケットのうちのブロックされないもの、
ｄ）非優先順位パケットである場合に、前記バイパス・パス内の前記パケットのうちのブロックされないもの、
という最高優先順位から最低優先順位への前記パケットの入力調停優先順位を生成するステップをさらに前記方法ステップが含む、請求項１８に記載のプログラム。
【請求項２０】
ａ）前記高優先順位ブロックされないパケットについて、前記可能ビット・ベクトルの優先順位仮想チャネル・ビットが方向がまだ前記高優先順位ブロックされなパケットの経路指定目標であることを示す方向および優先順位仮想チャネルを選択するステップと、
ｂ）動的経路指定可能でない前記非優先順位ブロックされないパケットについて、前記可能ビット・ベクトルのエスケープ仮想チャネル・ビットが方向がまだ動的経路指定可能でない前記非優先順位ブロックされないパケットの経路指定目標であることを示す方向およびエスケープ仮想チャネルを選択するステップと、
ｃ）動的経路指定可能である前記非優先順位ブロックされないパケットについて、前記可能ビット・ベクトルが方向がまだ経路指定目標であることを示し、前記出力ステイタス・ビット・ベクトルが最大の前記バッファ空間表現を示す方向および動的仮想チャネルを選択するステップであって、そのようなチャネルおよび方向の組合せが存在しない場合に、前記可能ビット・ベクトルの前記エスケープ仮想チャネル・ビットが前記方向がまだ経路指定目標であることを示す方向およびエスケープ仮想チャネルを選択する、ステップと、
に従って、各前記ブロックされない１つのパケットについて、出力方向および出力仮想チャネルを選択することをさらに含む、請求項１９に記載のプログラム。
【請求項２１】
前記一般調停ポリシを確立するステップの出力フェーズの実行が、
事前定義の出力フェーズ調停サイクル判断基準に従って、現在の出力フェーズ調停サイクルをプロセッサ注入ＦＩＦＯについて高優先順位に設定するステップと、
前記事前定義の出力フェーズ調停サイクル判断基準に従って、現在の出力フェーズ調停サイクルをプロセッサ注入ＦＩＦＯについて低優先順位に設定するステップと、
を含む、請求項２０に記載のプログラム。
【請求項２２】
ａ）複数の優先順位仮想チャネルのうちで最高のバッファの入力満杯度表現を有する前記優先順位仮想チャネルのヘッドにある前記パケットのうちのブロックされないもの、
ｂ）複数のプロセッサ注入ＦＩＦＯのうちで最高のバッファの入力満杯度表現を有するプロセッサ注入ＦＩＦＯからの高優先順位パケット、
ｃ）複数の非優先順位仮想チャネルからの最高の前記バッファの入力満杯度を有する非優先順位仮想チャネル内の前記パケットのうちのブロックされないもの、
ｄ）複数のプロセッサ注入ＦＩＦＯのうちで最高のバッファの入力満杯度表現を有するプロセッサ注入ＦＩＦＯからの通常優先順位パケット、
という最高優先順位から最低優先順位への前記パケットの出力調停優先順位を生成するステップであって、現在の出力フェーズ調停サイクルが、プロセッサ注入ＦＩＦＯについて低優先順位であるステップをさらに前記方法ステップが含む、請求項２１に記載のプログラム。
【請求項２３】
ａ）前記複数のＦＩＦＯのうちで最高のバッファの入力満杯度表現を有するプロセッサ注入ＦＩＦＯからの高優先順位パケット、
ｂ）前記複数の優先順位仮想チャネルからの最高のバッファの入力満杯度表現を有する前記優先順位仮想チャネルのヘッドにある前記パケットのうちの前記ブロックされないもの、
ｃ）前記複数のプロセッサ注入ＦＩＦＯのうちで最高のバッファの入力満杯度表現を有するプロセッサ注入ＦＩＦＯからの通常優先順位パケット、
ｄ）前記複数の非優先順位仮想チャネルからの最高の前記バッファの入力満杯度表現を有する前記非優先順位仮想チャネル内の前記パケットのうちのブロックされないもの、
という最高優先順位から最低優先順位への前記パケットの出力調停優先順位を生成するステップであって、現在の出力フェーズ調停サイクルがプロセッサ注入ＦＩＦＯについて高優先順位であるステップをさらに前記方法ステップが含む、請求項２１に記載のプログラム。
【請求項２４】
ｍ個の複数次元で構成された複数のコンピューティング・プロセッサ・ノードを含み、各ノードがコンピューティング装置を含む大規模並列コンピューティング・システムにおいて、パケットをその宛先ノードに対して経路指定するネットワーク・スイッチであって、
ａ）２ｍ個の方向の少なくとも１つから対応する数の入力リンクの少なくとも１つを介して複数の仮想チャネルの対応する少なくとも１つに前記パケットを入力する少なくとも１つの入力ユニットと、
ｂ）前記ノードのローカルから複数のプロセッサ注入ＦＩＦＯの少なくとも１つにローカル・パケットを入力する少なくとも１つの入力リンクと、
ｃ）２ｍ個の複数の出力ステイタス・ビット・ベクトルを生成する出力ステイタス・ビット・ベクトル・ジェネレータであって、前記出力ステイタス・ビット・ベクトルのそれぞれが、そのリンクの可用性、下流動的仮想チャネルの可用性、およびその方向に関連するすべての仮想チャネルの下流バッファ空間表現を記述する、出力ステイタス・ビット・ベクトル・ジェネレータと、
ｄ）一般調停ポリシを確立する入力調停機構および出力調停機構であって、調停判断が、前記２ｍ個の複数の出力ステイタス・ビット・ベクトルの内容に基づいて行われる、入力調停機構および出力調停機構と、
ｅ）前記一般調停ポリシに従って、少なくとも１つの転送パスを介して対応する出力リンクへ前記パケットを出力する少なくとも１つの出力リンクであって、前記パケットが、前記宛先ノードに対して進められる、少なくとも１つの出力リンクと
を含むネットワーク・スイッチ。
【請求項２５】
前記コンピュータ・プロセッサ・ノードと同一の集積回路に前記ネットワーク・スイッチが集積される、請求項２４に記載のネットワーク・スイッチ。
【請求項２６】
前記少なくとも１つの入力ユニット専用の少なくとも１つのプロセッサ受信ＦＩＦＯを含み、同一の複数の入力ユニットについて複数のプロセッサ受信ＦＩＦＯがあり、これによって、複数の入力ユニットの間でのコンテンションが減らされる、請求項２４に記載のネットワーク・スイッチ。
【請求項２７】
ｍ個の複数次元で構成された複数のコンピューティング・プロセッサ・ノードを含み、各ノードがコンピューティング装置を含む大規模並列コンピューティング・システムにおいて、パケットをその宛先ノード対して経路指定する動的経路指定を有するバーチャル・カット・スルー・ネットワーク・スイッチであって、前記コンピュータ・プロセッサ・ノードと同一の集積回路に前記ネットワーク・スイッチが集積されるバーチャル・カット・スルー・ネットワーク・スイッチ。
【請求項２８】
前記少なくとも１つの入力ユニット専用の少なくとも１つのプロセッサ受信ＦＩＦＯを含み、同一の複数の入力ユニットについて複数のプロセッサ受信ＦＩＦＯがあり、これによって、複数の入力ユニットの間でのコンテンションが減らされる、請求項２７に記載のバーチャル・カット・スルー・ネットワーク・スイッチ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、広義には、分散メモリ・メッセージ・パッシング並列コンピュータでデータ・トラフィックを交換する方法に関する。具体的には、本発明は、大規模並列システム内の相互接続ネットワークを介してエラーフリー（エラーのない）メッセージを効率的に伝送する方法に関する。
【背景技術】
【０００２】
大規模並列コンピュータ・データ・ネットワーキング・システムの周知のトポロジが、３Ｄトーラスである。一般に、３Ｄトーラスは、すべてのレベルでリング・ネットワークを有するコンピュータ・ノードの立方体（ｃｕｂｉｃ）グリッドである。たとえば、米国仮出願番号６０／２７１，１２４に記載のシステムのようなスーパーコンピューティング大規模並列システムは、最小パス経路すなわち数百個または数千個のノードの間での通信の最短パスを提供する３Ｄトーラス・トポロジを使用する。大規模並列システムでのこのトポロジに関する問題の１つが、特に、イーサネット（Ｒ）スイッチまたは非同期転送モード（ＡＴＭ）スイッチが使用された場合の相互接続ネットワークを介するメッセージの効率的な伝送である。
【０００３】
具体的には、たとえば、イーサネット（Ｒ）スイッチまたはＡＴＭスイッチは、一般に、パケットの短待ち時間、高スループット、エラーフリーの伝送を提供するものではない。なぜなら、通常は、これらのスイッチは、パケットを保持するための十分なバッファ空間すなわち入出力処理用の保持領域がない場合に、パケットを失ってしまうからである。さらに、交換網を数万ノードのサイズまでスケーラブルにしなければならない場合に、コンテンションすなわち、複数の要求が、通信リンクなどの共用できないリソースに関して同時に行われるときに生じる衝突の問題を克服しなければならない。
【０００４】
通常、コンテンションの問題は、ネットワーク上のどの伝送装置がパケット衝突検出の後にパケットを送信できるかを調停する、ある種の調停アルゴリズムを使用することによって対処されてきた。残念ながら、関連技術は、ウルトラ・スケーラブルであり、したがって大規模並列システムに適する衝突検出／調停方法の必要に対処はされていない。さらに、現在の経路指定技法は、通常はルータが保守を必要とするテーブルを有するので、大規模並列システムへのスケール・アップに適していない。テーブル保守のオーバーヘッドは、ノードの数が数万個に達する時に過度な重荷になる。
【０００５】
上で述べたように、３次元（３Ｄ）トーラス・トポロジが既知である。たとえば、Ｃｒａｙ  Ｔ３Ｅでは、この３Ｄトーラス・トポロジが使用される。しかし、Ｃｒａｙ社は、各スイッチ要素内に保管される経路指定テーブルを使用し、これは、数万個のノードによくスケーリングされない手法である。他の既知の技術は、「バブル」エスケープ仮想チャネル（ＶＣ）（Puente et al.による「Adaptive Bubble Router: A Design to Balance Latencyand Throughput in Networks for Parallel Computers」、In Proceedings of theInternational Conference on Parallel Processing、ICPP '99、１９９９年９月）であるが、これは、経路指定テーブルを必要としない完全に動的な経路指定を提供する。
【０００６】
もう１つの既知の技法が、ＳＰ２コンピュータおよびＣｒａｙ社のコンピュータで使用されているような、複数の仮想チャネルを使用して、「ヘッドオブライン（ｈｅａｄ−ｏｆ−ｌｉｎｅ）」ブロッキングを減らすものである。２ステージ調停手法の使用が、ＭＩＴ  Ｒｅｌｉａｂｌｅ  Ｒｏｕｔｅｒ（William J. Dally、Larry R. Dennison、David Harris、Kinhong Kan、andThucydides Xanthoppulos、「Architecture and Implementation of the Reliable Router」、InProceedings of HOT Interconnects II、122〜133ページ、１９９４年８月）によって教示されている。
【０００７】
もう１つの関連技術分野の技術では、スループットおよび待ち時間の最適化の試みでバーチャル・カットスルー経路指定が使用される。P. Kermani、L. Kleinrockによる「Virtual Cut-Through: A New ComputerCommunication Switching Technique」（Computer Networks、Vol. 3、267〜286ページ、１９７９年）を参照されたい。
【０００８】
しかし、関連技術分野の文献では、選択されたパケット移動の方向および仮想チャネルに沿った、特にスイッチが数万ノードを処理するようにスケール・アップされる場合のパケット・コンテンションおよびキューイング遅延の問題が適切に解決されていない。
【０００９】
関連する開示、米国仮出願番号６０／２７１，１２４、表題「A Novel Massively Parallel Supercomputer」で、マルチコンピュータの各ノード内の２つの電子プロセッサを有する半導体デバイスが記載されている。スーパーコンピュータ内に、複数の高速内部ネットワークと、イーサネット（Ｒ）を使用する外部ネットワークがある。これらのネットワークは、６４０００個を超えるノードをサービスすることが期待されている。
【００１０】
高速エラーフリー動作に関する、数万個のノードまでネットワーク・スイッチをスケーリングすることを試みる既知の従来技術はなく、エラーフリーの「短待ち時間高帯域幅（スループット）データ通信を使用可能にして、大規模並列システムのメッセージ・パッシング能力を強化する、スケーラブルな調停の方法の必要が残されている。
【特許文献１】
米国仮出願番号６０／２７１，１２４
【特許文献２】
国際出願番号ＰＣＴ／ＵＳ０２／０５５６６
【非特許文献１】
Puente et al.、「Adaptive BubbleRouter: A Design to Balance Latency and Throughput in Networks for ParallelComputers」、In Proceedings of the International Conference on ParallelProcessing、ICPP '99、１９９９年９月
【非特許文献２】
William J. Dally、Larry R. Dennison、DavidHarris、Kinhong Kan、and Thucydides Xanthoppulos、「Architecture and Implementationof the Reliable Router」、In Proceedings of HOT Interconnects II、122〜133ページ、１９９４年８月
【非特許文献３】
P. Kermani、L. Kleinrock、「VirtualCut-Through: A New Computer Communication Switching Technique」、ComputerNetworks、Vol. 3、267〜286ページ、１９７９年
【発明の開示】
【発明が解決しようとする課題】
【００１１】
したがって、本発明の目的は、大規模並列システムでの待ち時間を減らし、スループットを高め、処理能力を高める、パケット伝送装置の間で調停をする方法を提供することである。
【００１２】
本発明のもう１つの目的は、大規模並列システムでパケットの消失（パケット・ロス）を防ぐ方法を提供することである。
【００１３】
本発明のもう１つの目的は、使用される通信チャネルのユーザのデッドロックを避けるデータ通信の方法を提供することである。
【００１４】
本発明のもう１つの目的は、正確なパケット受信の確率を高める方法を提供することである。
【００１５】
本発明のもう１つの目的は、スケーラビリティを促進するために、プロセッサと同一のチップ上のスイッチ技術を提供することである。
【００１６】
本発明のもう１つの目的は、ルータ内の経路指定テーブルを使用しないメッセージ経路指定の方法を提供することである。
【課題を解決するための手段】
【００１７】
上記および他の特徴および長所は、本発明で、大規模並列システムでの待ち時間を減少させ、正確なパケットの受信を増大させる、マルチレベル調停方法を提供することによって得ることができる。
【００１８】
具体的には、パケット経路指定方法であって、２ｍ個の方向（ｍはネットワークの次元数を表す整数）の少なくとも１つから、対応する数の入力リンクの少なくとも１つを介して、複数の仮想チャネルＦＩＦＯバッファの対応する少なくとも１つへパケットを入力することによってパケットをその宛先に経路指定し、下流ノードから導出された情報を含む２ｍ個の複数の出力ビット・ベクトルの少なくとも１つを生成し、調停の判断が出力ステイタス・ベクトルに含まれるリンクおよび下流バッファ満杯度情報に基づく、一般調停ポリシを確立し、一般調停ポリシに従って、複数の転送パスを介して対応する出力リンクにパケットを出力し、パケットがその宛先ノードに対して進められる方法が提供される。
【００１９】
本発明を、これから、本明細書に添付する図面に関連して詳細に説明する。添付図面では、類似する符号が、類似し対応する要素を示すのに使用されることに留意されたい。
【発明を実施するための最良の形態】
【００２０】
本発明は、大規模並列コンピューティング・システムの３次元トーラス・ネットワーク内のノードの間のネットワーク通信、すなわちメッセージ・パッシングに適用される。
【００２１】
最初に、「ＦＩＦＯ」（先入れ先出し）への言及が、本明細書では、用語「ＦＩＦＯバッファ」と交換可能に使用されることに留意されたい。ビット設定およびビット・カウント・シーケンスへの言及は、例示的にすぎず、パラメータまたは測定値の正の増加を示す他のビット設定（たとえば、負論理）と他のカウント・シーケンス（たとえば負カウント・シーケンス）は、本発明の範囲内である。
【００２２】
本発明の好適な実施形態によれば、３次元トーラス・ネットワークなどのプロセッサのネットワーク内の個々のノードを示す図１に示されたスイッチ・アーキテクチャを、ネットワーク内のすべてのそのようなノードについて実施することができる。さらに、図６を参照すると、本発明の好適な実施形態で、スイッチ６１０をプロセッサ６１５と同一のチップ６０５に集積することもできる。このネットワークは、可変サイズのデータのパケットを伝送し、パケットは、好適な実施形態では、１つから８つまでの、「チャンク」と称される３２バイト・サイズの単位とすることができる。各パケットに、図５に示されているように、記述パケット・ヘッダ５１０が含まれる。ローカル・ノード１０５から発する新しいすなわちローカル・パケット１０４は、プロセッサ注入ＦＩＦＯ（ｐｒｏｃｅｓｓｏｒ  ｉｎｊｅｃｔｉｏｎ  ＦＩＦＯ）１３０を介してネットワークに入り、宛先に到達したときに、プロセッサ受信ＦＩＦＯ（ｐｒｏｃｅｓｓｏｒ  ｒｅｃｅｐｔｉｏｎ  ＦＩＦＯ）１４０からそれらを除去することによって、ネットワークから除去される。本発明の好適な実施形態では、１１０、１１７のような各入力ユニット専用の少なくとも１つのプロセッサ受信ＦＩＦＯ１４０がある。さらに、少なくとも１つのプロセッサ受信ＦＩＦＯ１４０を、高優先順位トラフィック専用にすることができる。
【００２３】
各ノードには、トーラスにおける隣接ノードごとに１つの入力リンクが含まれる。図１に、たとえば、ｘ＋入力リンク１０１およびｚ−入力リンク１０２を示す。残りの入力リンク、ｘ−、ｙ＋、ｙ−、およびｚ＋（図示せず）は、グローバル・パケットすなわち、本発明の３Ｄトーラス・システムなどのシステム内で入力リンクの１つから到着するパケットが使用可能な残りの移動方向の例を表している。各入力リンクに対応するのが、ｘ＋入力ユニット１１０に含まれるｘ＋入力調停機構１１６などのローカル入力調停機構である。ｘ＋入力ユニット１１０およびｚ−入力ユニット１１７は、例示的な構造として示されている。
【００２４】
各ノードには、ｘ＋方向へのリンク１６１およびｚ−方向へのリンク１６２などの出力リンクも含まれる。本発明の好適な態様で実施されるように、トーラス内の隣接ノードごとに少なくとも１つの出力リンクが存在する。出力リンクは、ｘ＋出力ユニット１５１およびｚ−出力ユニット１５２などの出力ユニットによって供給される。各出力ユニット内に、ｚ−出力調停機構１５５などの出力調停機構がある。
【００２５】
出力ユニット１５１、１５２には、下記のサブユニットが含まれることが好ましい。
ａ）何個のチャンクすなわちトークンが、下流ノードでの保管に使用可能であるかをカウントするトークン・ユニット・カウンタ１５３。方向（ｄｉｒｅｃｔｉｏｎ）とＶＣのそれぞれについて１つのトークン・ユニット・カウンタがあることが好ましい。パケットが調停に勝った（ｗｉｎ）ときに、トークン・ユニットによって、お互いが調整され、その結果、トークンが、上流ノードの適当なＶＣに返される。これは、特殊な短いトークン・メッセージを送ることによって達成される。
ｂ）図２に示された出力ステイタス・ビットを生成する出力ステイタス・ビット・ベクトル・ジェネレータ１５４。
ｃ）すべての可能な要求元パケットのうちで、どのパケットが対応するリンクの制御を勝ち取るかを選択する出力調停機構１５５。
【００２６】
入力ユニット１１０などの入力ユニットに、カットスルーすなわちバイパス・パス１２０と、ＶＣごとに１つの、ブロックされるパケットすなわちバイパス・パス１２０を介して移動することができないパケットを保管する待機バッファすなわちＦＩＦＯが含まれる。各ＦＩＦＯは、ある最大数のチャンクを保持することができる。動的ＶＣ１１１および１１２などの、１つまたは複数の「動的」ＶＣが実施される。デッドロックを防ぐための「エスケープ」ＶＣ１１３の実施および高優先順位ＶＣ１１４の実施は、Puente et al.による「Adaptive Bubble Router: A Design to Balance Latencyand Throughput in Networks for Parallel Computers」（In Proceedings of theInternational Conference on Parallel Processing、ICPP '99、１９９９年９月）に記載の、既知の技法である。バイパス・パス１２０の実施によって、パケットを、バッファに保管せずにノードを介して経路指定できるようになる。しかし、バイパス・パスのパケットが、なんらかの理由でブロックされる場合に、そのパケットは、適当なＦＩＦＯバッファ（すなわち、パケットに関連するＶＣに対応するバッファ）に転送される。優先順位パケットが互いに追い越し合うのを避けるために、バイパス・パス内の優先順位パケットは、対応する優先順位のＶＣ  ＦＩＦＯが空でない場合に、ブロックされるものとみなされる。同様に、動的に経路指定可能でない通常優先順位のパケットは、対応するエスケープＶＣ  ＦＩＦＯが空でない場合に、ブロックされるとみなされる。調停される準備ができる前に、パケット・ヘッダだけがＦＩＦＯに受け取られることが必要である（パケットがＦＩＦＯのヘッド（ｈｅａｄ）にあると仮定する）。入力調停機構１１６などの入力調停機構に、入力ステイタス・ビット・ベクトル・ジェネレータ１１５が含まれ、入力ステイタス・ビット・ベクトル・ジェネレータ１１５は、図３に示されたステイタス・ビットを生成するが、これは後で説明する。
【００２７】
入力調停機構１１６は、入力調停機構内のどのパケットが優先順位を得るか、どの出力方向およびＶＣを要求するか（または、パケットがその宛先に到着する場合にはどのプロセッサ受信ＦＩＦＯを要求するか）を選択することによって、動的な経路指定を提供する。本発明の好適な態様によれば、パケットが入力および出力の調停に勝つすなわち、出力ユニットまたはプロセッサ受信ＦＩＦＯへの転送の優先順位を得た場合、そのパケットは、出力リンクに転送されるか、複数の転送パス１２１の１つを介して受信ＦＩＦＯに転送される。単一のそのようなパスだけを有するトーラス・ネットワーク内の従来技術のスイッチと異なって、複数の転送パス１２１によって、１つまたは複数のパケットが使用される場合であっても、パケットを転送できるようになる。本発明の一態様によれば、転送パスのいくつかを、受信ＦＩＦＯのために排他的に予約することができる。
【００２８】
さらに、本発明の好適な態様に、バイパス・パス１２０が含まれる。ＦＩＦＯのヘッドのパケット、バイパス・パス１２０内の各パケットに関連するのが、パケットが移動できる可能な宛先ＶＣおよび方向のビット・ベクトルである。そのようなビット・ベクトル４１０から４１５の例を、図４に示す。
【００２９】
出力ステイタス・ビット（Ｏｕｔｐｕｔ  Ｓｔａｔｕｓ  Ｂｉｔｓ）
各出力調停機構は、リンクの可用性およびこの方向に関連する下流バッファ空間（トークン）を記述する出力ステイタス・ビット・ベクトルを生成する責任を負っている。図２に、ｘ＋２１０およびｚ−２１５の、ある時点の例の出力ステイタス・ビット・ベクトルが示される。各出力ステイタス・ビット・ベクトルに下記が含まれることが好ましい。
ａ）リンクが使用可能（１）または使用不能（０）のどちらであるかを示すリンク・ステイタス・ビット２０１。リンクは、トークンの可用性および／または成功裡に受信されたパケットの肯定応答に関連する制御メッセージを交換するのにも使用される可能性があるので、そのような制御メッセージは、データ・パケットに対する絶対的な優先順位を受け取る。したがって、そのような制御メッセージが、リンクの使用を待っているか、実際にリンクを使用している場合に、リンク・ステイタス・ビットに０がセットされ、制御メッセージは、物理リンクが使用可能になるや否や送信される。
ｂ）動的ＶＣごとのステイタス・ビット２０２および２０３。左端のビットは、最大サイズのパケットを保管するのに十分な下流のトークンがあるか否かを示す。他の２ビットは、下記のように決定される。使用可能な下流トークンを、閾値によって定義される４つの範囲に分割する。たとえば、Ｍ≧Ｔ１＞Ｔ２＞Ｔ３＞０、ただし、Ｍは、トークンの最大数である。使用可能なトークンの数がｔである場合に、ビット・ベクトルは、Ｍ≧ｔ＞Ｔ１の場合に００、Ｔ１≧ｔ＞Ｔ２の場合に０１、Ｔ２≧ｔ＞Ｔ３の場合に１０、Ｔ３≧ｔ≧０の場合に１１になる（したがって、ビット・ベクトルは、より多くのトークンが使用可能である場合に小さくなる。２＾ｋ個の範囲を定義するｋ＞２ビットへの一般化が存在することを理解されたい）。
ｃ）エスケープ２０４ＶＣおよび優先順位２０５ＶＣのステイタス・ビット。これらのビットは、「バブル挿入」規則に従う。
【００３０】
エスケープ２０４フィールドおよび優先順位２０５フィールドについて、左のビットは、新しいパケットをそのＶＣに注入できる（少なくとも２つのパケット全体の価値のトークンを必要とする）場合に１であり、右のビットは、既にＶＣにあるパケットを継続できる（少なくとも１つのパケット全体の価値のトークン）場合に１である（デッドロックを避けるために、これらのＶＣに入るかそこにあるすべてのパケットの「サイズ」は、最大パケット・サイズであるとみなされる）。
【００３１】
たとえば、図２からわかるように、ｘ＋方向２１０で、リンクが空いており、トークンがＶＣ１のレベル０１で使用可能であり、ＶＣ２では使用可能なトークンがなく、エスケープＶＣは、新しいパケットを挿入する空間を有しないが、既に「バブル内」であるパケットを転送する空間を有し、高優先順位ＶＣは、パケットの挿入と転送の両方が可能である。
【００３２】
入力ステイタス・ビット（Ｉｎｐｕｔ  Ｓｔａｔｕｓ  Ｂｉｔｓ）
各入力ユニットは、その入力ユニットに関連する方向に関連するＶＣごとにそのバッファの入力満杯度を記述する入力ステイタス・ビットを生成する責任を負っている。図３に、ｘ＋３１０からｚ−３１５までのリンクのある時点の例の入力ステイタス・ビット・ベクトルを示す。各ビット・ベクトルに、各ＶＣ３１０から３０４を記述する３ビットが含まれる。左端のビット３０１は、パケットが調停の準備ができている場合に１、そうでない場合に０である。右側の２ビット３０３および３０４は、トークン満杯度領域を記述する、すなわち、ＦＩＲＯにｂ個のチャンクが含まれる場合に、閾値Ｔ１、Ｔ２、およびＴ３について、０≦ｂ＜Ｔ１の場合に００、Ｔ１≦ｂ＜Ｔ２の場合に０１、Ｔ２≦ｂ＜Ｔ３の場合に１０、Ｔ３≦ｂの場合に１１である。複数の範囲を使用して、チャンクではなくパケットの数を記述することができることを理解されたい。
【００３３】
各注入ＦＩＦＯは、図３に示された類似する形で定義された入力ステイタス・ビット・ベクトル３１６も有し、図３では、入力ステイタス・ビット・ベクトル３１７から３２１が示され、５つの注入ＦＩＦＯがあることが示される。
【００３４】
可能ビット・ベクトル（Ｐｏｓｓｉｂｌｅ  Ｂｉｔ  Ｖｅｃｔｏｒ）
ＦＩＦＯのヘッドまたはバイパス・パスにあるパケットのそれぞれについて、パケットが移動できる方向およびＶＣすなわち、所与のパケットについて、各仮想チャネルについてどの方向がまだ経路指定目標であるかを示すビット・ベクトルが生成される。図４に、ｘ＋方向またはｙ−方向のいずれかで移動できる非優先順位パケットの可能ビット・ベクトルを示す。ビット・ベクトルの部分が、各方向４１０から４１５に対応する。この例では、パケットが、ｘ＋方向およびｙ−方向の両方の動的ＶＣのいずれかを移動することができる。このパケットは、非優先順位なので、優先順位ＶＣの項目は、すべて０である。この例では、エスケープ方向が、標準次元順序すなわち、まずｘ、次にｚ、次にｚに従って選択され、したがって、エスケープＶＣはｘ＋方向である。可能ビット・ベクトルのすべてが０である場合には、そのパケットは、宛先に到達している。
【００３５】
パケット・ヘッダ（Ｐａｃｋｅｔ  Ｈｅａｄｅｒ）
パケット・ヘッダ５１０のフォーマットを、図５に示す。好適な実施形態では、パケット・ヘッダ５１０は、オーバーヘッドを最小にするために比較的短く、たとえば８バイトである。ヘッダ５１０では、最初のフィールド（たとえば８ビット）によって、たとえば通常または優先順位など、パケット・タイプ５１２が示され、このフィールドに、そのパケットを動的に経路指定できるか否か、あるいは固定経路に沿って経路指定されるかを示すビットを含めることができる。国際出願番号ＰＣＴ／ＵＳ０２／０５５６６で、パケット・タイプによって「クラス経路指定」動作をエンコードできる方法が示され、このクラス経路指定は、明白なわずかな修正によって本発明でもサポートすることができる。ＶＣフィールド５１４（たとえば２ビット）によって、パケットがどのＶＣ上にあるかが示され、サイズ・フィールド５１６（たとえば３ビット）によって、パケット内のチャンクの数が示される。そのようなヘッダの使用は標準的であるが、本発明の好適な実施形態には、「ヒント・ビット」５２０、５２２、および５２４が含まれ、これによって、調停機構が他の形で可能であるよりも早く方向を選択できるようにすることによって、待ち時間が減る。本発明の好適な実施形態では、これらのヒント・ビットが、２ビット／次元であり、パケットが移動することができる方向がエンコードされ、たとえば、ｘヒント・ビット５１８が「００」である場合に、ｘ方向のパケット移動がこれ以上は不要であり、ｘヒント・ビット５１８が「０１」である場合に、パケットがｘ＋方向に移動することができ、ｘヒント・ビット５１８が「１０」である場合に、パケットがｘ−方向に移動することができる。ヒント・ビットは、宛先フィールド５２４、５２６、および５２８の前に置かなければならず、その代わりに、ＶＣフィールド５１４およびサイズ・フィールド５１６の前に置くことができる。たとえば６４×３２×３２ノード・トーラスなどの大型並列計算機では、宛先フィールドを、少なくともそれぞれ６ビットにしなければならない。ヒント・ビットがなければ、調停を開始する前に、宛先アドレスの１８ビットを受け取らなければならない。したがって、ヒント・ビットが、宛先ビットの前に置かれるので、有利なことに、ヒント・ビットによって、パケット・ヘッダ全体が読み取られる前すなわち、宛先ビットが読み取られる前に調停処理を開始できるようになり、これによって待ち時間が減る。パケットが、ネットワークを介して経路指定される際に、ヒント・ビットを更新する必要がある。たとえば、最小ホップ動的経路指定では、パケットが宛先のｘ座標に達する時に、ｘヒント・ビットに００をセットすることだけが必要である。本発明の好適な実施形態では、各出力リンクに関連するレジスタを含めることによって、これが達成される。レジスタ内で、関連する、たとえば下流ノードのｘ座標が提供される。パケットが調停に勝つときに、このレジスタを宛先の関連座標と比較することができ、レジスタ内の値と宛先の関連座標の値が等しい場合に、ヒント・ビットに００をセットする。さらに、当技術分野で既知のように、信頼性のあるメッセージングのために、ヘッダに、ヘッダが正しく受信されるこ��を保証するために、たとえばハイパフォーマンス・パラレル・インターフェース（ＨＩＰＰＩ）プロトコルで既知のシーケンス番号、およびＣＲＣを含めることができる。
【００３６】
入出力調停（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ａｒｂｉｔｒａｔｉｏｎ）
本発明の好適な実施形態では、調停処理に２つのフェーズが含まれる。第１に、各入力ユニットが、その移動の準備ができているパケット（ＦＩＦＯのヘッドまたはバイパス・パスにあるパケット）の中で、リンク（または受信ＦＩＦＯ）を得ることを試みるパケットを選択する。これらの選択されたパケットを、「入力勝者（ｉｎｐｕｔ  ｗｉｎｎｅｒ）」と呼ぶことにする。入力勝者すなわち候補（ｃａｎｄｉｄａｔｅ）を選択する他に、各候補の方向および各候補のＶＣが、調停の次のステップのために選択される。システム内のパケットのスループットを高めるために、入力調停と出力調停の両方が、マルチレベルであり、すなわち、別々の調停処理が、各ノード方向から到着するパケットについて提供される。パケット・コンテンションは、本発明の好適な実施形態で使用される規則によって記述される一般調停ポリシ（ｇｅｎｅｒａｌ  ａｒｂｉｔｒａｔｉｏｎ  ｐｏｌｉｃｙ）によって減らされる。
【００３７】
入力調停フェーズ（Ｉｎｐｕｔ  Ａｒｂｉｔｒａｔｉｏｎ  Ｐｈａｓｅ）：
入力勝者を選択するために本発明の好適な実施形態によって提供される方法には、宛先に到達していないパケットのいずれが完全にブロックされるか、すなわち、どのパケットが、そのパケットが移動する必要がある方向で使用可能なリンクおよびＶＣを有しないか、または転送パスが使用可能でないかを判定するステップが含まれる。これらのステップでは、どの候補パケットをブロックしないかも判定される。本発明の一態様では、上記のステップが、可能ビット・ベクトル４１０から４１５と出力ステイタス・ビット・ベクトル２１５の適当な論理ＡＮＤ演算を実行することによって判定される。同様に、宛先に到達したパケットを、その受信ＦＩＦＯまたはブロックされない候補ベクトルに空間がない場合に、ブロックすると決定することができる。各ブロックされない候補は、下記のように入力優先順位を割り当てられる。２種類の調停サイクルすなわち、ランダム・サイクルまたは最長キュー・サイクルが、本発明の好適な実施形態によって提供される。スイッチの事前定義の調停サイクル判断基準によって、調停サイクルのどの部分がランダムになるかが決定される。ランダム・サイクルには、非優先順位ＶＣバッファ内の各候補パケットに、ランダムな（またはラウンド・ロビン・アルゴリズムに基づく）２ビット・ベクトルを割り当てられる。最長キュー・サイクルでは、これらの候補に、右側２つの入力ステイタス・ビットと等しい優先順位が割り当てられる。そのように生成された優先順位は、下記の総合的な優先順位方式（最高から最低への優先順位）で使用される。
ａ）優先順位ＶＣのヘッドにあるブロックされない候補パケット。
ｂ）高優先順位パケットであり、高優先順位ＶＣバッファにパケットがない場合に、バイパス・パス内のブロックされない候補パケット。
ｃ）最高の２ビット優先順位ベクトルを有する非優先順位ＶＣバッファ内のブロックされない候補パケット（同点の場合には、ランダムまたはラウンド・ロビンなど、任意の機構によって決定される）。
ｄ）非優先順位パケットであるものとして、バイパス・パス内のブロックされない候補パケット。
【００３８】
非優先順位パケットについて、このアルゴリズムでは、最も満杯に近いＦＩＦＯ（ｍｏｓｔ  ｆｕｌｌ  ＦＩＦＯ）のヘッドのパケットを選択する傾向がある。勝った候補パケットは、その後、下記のようにその候補の方向およびＶＣを選択する。
ａ）そのパケットが高優先順位である場合に、可能ビット・ベクトルの優先順位ＶＣビットに１がセットされている方向および優先順位ＶＣを選択する。
ｂ）そのパケットが非優先順位であるが動的に経路指定可能でない場合には、可能ビット・ベクトルのエスケープＶＣビットに「１」がセットされている方向およびエスケープＶＣを選択する。
ｃ）そのパケットが非優先順位であり、動的に経路指定可能である場合には、使用可能および可能の両方のリンクおよび動的ＶＣの中から、出力ステイタス・ビット・ベクトルの最小の右２ビットを有する方向および動的ＶＣを選択する。
ｄ）そのようなリンクおよび動的ＶＣが存在しない場合には、可能ビット・ベクトルのエスケープＶＣビットに「１」がセットされている方向およびエスケープＶＣを選択する。
【００３９】
入力勝者は、宛先が現在のノードでない場合には対応する出力調停機構、宛先が現在のノードである場合には受信ＦＩＦＯに、候補の方向およびＶＣを提示する。各出力調停機構／受信ＦＩＦＯは、提示された入力勝者の間から、出力されるパケットを選択する。
【００４０】
出力調停フェーズ（Ｏｕｔｐｕｔ  Ａｒｂｉｔｒａｔｉｏｎ  Ｐｈａｓｅ）：
各出力調停機構に、候補入力勝者の組が提示される。さらに、注入ＦＩＦＯからの候補パケットがある場合がある。出力調停も、２種類のサイクルを有する、すなわち、注入ＦＩＦＯからのパケットが低い優先順位を有するサイクルと、注入ＦＩＦＯからのパケットが高い優先順位を有するサイクルである。事前定義の出力フェーズ調停判断基準、たとえばスイッチのパラメータによって、サイクルのどの部分が各タイプであるかが決定される。注入ＦＩＦＯが、このサイクルで低い優先順位を有する場合には、出力調停機構は、下記のようにすべての候補の中から勝者を選択する（最高から最低への優先順位）。同点は、ランダムに優劣をつけられることが好ましい。
ａ）２ビット・ステイタス・ベクトルによって示される最高の優先順位を有する入力ユニットからの高優先順位勝者パケット。
ｂ）最高の２ビット・ステイタス・ベクトルを有する注入キューからの高優先順位パケット。
ｃ）最高の２ビット・ステイタス・ベクトルを有する入力ユニットからの通常優先順位勝者パケット。
ｄ）最高の２ビット・ステイタス・ベクトルを有する注入ＦＩＦＯからの通常優先順位パケット。
【００４１】
注入パケットが、このサイクルで高い優先順位を有する場合には、出力調停機構は、下記のようにすべての候補の中から勝者を選択することが好ましい（最高から最低への優先順位）。
ａ）最高の２ビット・ステイタス・ベクトルを有する注入キューからの高優先順位パケット。
ｂ）２ビット・ステイタス・ベクトルによって示される最高の優先順位を有する入力ユニットからの高優先順位勝者パケット。
ｃ）最高の２ビット・ステイタス・ベクトルを有する注入ＦＩＦＯからの通常優先順位パケット。
ｄ）最高の２ビット・ステイタス・ベクトルを有する入力ユニットからの通常優先順位勝者パケット。
【００４２】
注入調停（Ｉｎｊｅｃｔｉｏｎ  Ａｒｂｉｔｒａｔｉｏｎ）
注入ＦＩＦＯのヘッドにある候補パケットは、勝った入力候補パケットと同一の形で候補の方向およびＶＣを選択する。これらのパケットは、（ａ）ランダムに生成されるか、または（ｂ）注入ＦＩＦＯの長さを示すのに２ビットを使用するか、のいずれかである２ビットのステイタス・ベクトルも担持（ｃａｒｒｙ）する。
【００４３】
受信ＦＩＦＯ調停（Ｒｅｃｅｐｔｉｏｎ  ＦＩＦＯ  Ａｒｔｂｉｔｒａｔｉｏｎ）
同時にスイッチ・ノードで受け取られる必要がある１つまたは複数のパケットがある場合がある。コンテンションを減らすために、別々の受信ＦＩＦＯが、各着信方向に割り当てられる。さらに、方向ごとに１つまたは複数のＦＩＦＯがある場合がある。各ノードに複数のプロセッサがある場合には、本発明の好適な実施形態を用いて、方向ごとの複数のＦＩＦＯによって、各プロセッサがそれ自体の方向ごとのＦＩＦＯを有することを可能にすることができる。パケット・ヘッダのビットを使用して、所与の方向について、これらのＦＩＦＯのどれが使用されるかを示すことができる。また、高優先順位パケットによる使用だけのためにとっておかれる１つまたは複数のＦＩＦＯがある場合がある。これらのＦＩＦＯに関してコンテンションがある場合には、２ビット・ステイタス・ベクトルを使用して優先順位を判定することができる。
【００４４】
好適な実施形態による本発明の説明によって、当業者は、種々の修正形態および改良を想到することができる。たとえば、本発明の代替実施形態に、単一の次元を含めることもできる。あるいは、ｍ個の複数次元を含めることができる。なお、ｍは、任意の整数であることに留意されたい。したがって、好適な実施形態が、限定としてではなく、例示として提供されたものであることに留意されたい。本発明の範囲は、請求項によって定義される。
【図面の簡単な説明】
【００４５】
【図１】本発明の好適な実施形態によるスイッチ・アーキテクチャを示す図である。
【図２】本発明の好適な実施形態による出力ステイタス・ビット・ベクトルを示す図である。
【図３】本発明の好適な実施形態による、入力ステイタス・ビット・ベクトルの例を示す図である。
【図４】本発明の好適な実施形態による、「可能な宛先」ビット・ベクトルを示す図である。
【図５】本発明の好適な実施形態による、ヒント・ビットを有するパケット・ヘッダを示す図である。
【図６】プロセッサ・ノードと同一のチップに配置される本発明すなわちネットワーク・スイッチの実施形態を示す図である。
【図１】
2004527176.tif 000003
【図２】
2004527176.tif 000004
【図３】
2004527176.tif 000005
【図４】
2004527176.tif 000006
【図５】
2004527176.tif 000007
【図６】
2004527176.tif 000008
【国際公開パンフレット】
2004527176.tif 000009
2004527176.tif 000010
2004527176.tif 000011
2004527176.tif 000012
2004527176.tif 000013
2004527176.tif 000014
2004527176.tif 000015
2004527176.tif 000016
2004527176.tif 000017
2004527176.tif 000018
2004527176.tif 000019
2004527176.tif 000020
2004527176.tif 000021
2004527176.tif 000022
2004527176.tif 000023
2004527176.tif 000024
2004527176.tif 000025
2004527176.tif 000026
2004527176.tif 000027
2004527176.tif 000028
2004527176.tif 000029
2004527176.tif 000030
2004527176.tif 000031
2004527176.tif 000032
2004527176.tif 000033
2004527176.tif 000034
2004527176.tif 000035
2004527176.tif 000036
2004527176.tif 000037
2004527176.tif 000038
2004527176.tif 000039
2004527176.tif 000040
2004527176.tif 000041
2004527176.tif 000042
【国際調査報告】
2004527176.tif 000043