(57)【特許請求の範囲】
【請求項１】
複数の処理要素ノード（22）と；
ｎ次元のトポロジイにおいて上記複数の処理要素ノードを相互に接続する物理通信リンク（44,46,48）と；
上記複数の処理要素ノード間で転送されるべき通常のトラヒック情報を含むパケットを格納するために、各物理通信リンクに割当てられた仮想チャネルバッファを有する、少なくとも１つのフロー制御された仮想チャネル（50,52,54,56,58）と；
上記複数の処理要素ノード間で転送されるべきメンテナンス情報のパケットを格納するために、各物理通信リンクに割当てられたメンテナンスチャネルバッファを有するフロー制御されない仮想メンテナンスチャネル（60）と；を備え、
上記フロー制御されない仮想メンテナンスチャネル（60）には、上記物理通信リンクをアクセスするについて、上記少なくとも１つのフロー制御された仮想チャネルより高い優先度が与えられ、
上記フロー制御されない仮想メンテナンスチャネル（60）におけるルーティングに際し、該仮想メンテナンスチャネル（60）内の経路が、所定の処理要素ノードから他の処理要素ノードまでの変位であるデルタ値を用いて規定される、マルチプロセッサコンピュータシステム。
【請求項２】
上記フロー制御されない仮想メンテナンスチャネルは、上記マルチプロセッサコンピュータシステムで稼動するシステムソフトウエアを介して、上記処理要素ノードのいずれか１つからアクセス可能である、請求項１のマルチプロセッサコンピュータシステム。
【請求項３】
更に、ある処理要素ノードが上記フロー制御されない仮想メンテナンスチャネルによりアクセスされることを阻止する手段を含む、請求項１のマルチプロセッサコンピュータシステム。
【請求項４】
更に、上記フロー制御されない仮想メンテナンスチャネルにおいて、レスポンスパケットが、該レスポンスパケットに対応するリクエストパケットによって採用された経路と同じ経路を追従するのを可能とする手段を含む、請求項１のマルチプロセッサコンピュータシステム。
【請求項５】
上記デルタ値が、各次元において一次及び二次のデルタ値を有するように定義される、請求項１のマルチプロセッサコンピュータシステム。
【請求項６】
更に、上記各処理要素ノードにて、幾つかのルートが有効であることを検証するための、上記フロー制御されない仮想メンテナンスチャネルを通して読み書き可能なリード／ライトレジスタを備えた、請求項１のマルチプロセッサコンピュータシステム。
【請求項７】
上記少なくとも一つのフロー制御された仮想チャネルが、
ルーティング情報に基づいて上記複数の処理要素ノード間の決定された仮想経路に沿って、通常のトラヒックパケットを格納するために、各物理通信リンクに対して割当てられた第１と第２の型式の仮想チャネルバッファを有する２つの非サイクリック非適合仮想チャネルと、
上記ルーティング情報に基づいて上記複数の処理要素ノード間の決定されていない仮想経路に沿って、通常のトラヒックパケットを格納するために、各物理通信リンクに割当てられた第３の型式の仮想チャネルバッファを有する適合仮想チャネルとを備えた、請求項１のマルチプロセッサコンピュータシステム。
【発明の詳細な説明】
発明の分野
本発明は、一般的には、高速デジタルデータ処理システムの分野に関し、より詳しくは同じ物理通信リンクを他の仮想ルーティングチャネルと共用する仮想メンテナンスチャネルを有するマルチプロセッサコンピュータシステムに関する。
発明の背景
マルチプロセッサコンピュータシステムは、相互接続ネットワークによって互いに接続された処理要素ノードを有する。相互接続ネットワークは、ノード間において情報のパケットを伝送する。パケットは多重物理転送ユニット（phit以下フィットという）からなる。あるフィットは処理要素ノード間のネットワークの物理通信リンクもしくは物理チャネルの幅である。相互接続ネットワークは、通常、ノーマルトラヒックとメンテナンストラヒックを実行する。通常のトラヒックパケット内に含まれる情報の例は、メッセージ、共有メモリの操作、もしくは種々の形式のデータである。メンテナンストラヒックは、一方、システムの初期化、システム構成、診断、ハードウエアモニタ、エラーモニタ、挙動モニタ及びその種のメンテナンス等の課題のために使用される。従来のマルチプロセッサコンピュータシステムでは、メンテナンストラヒックはそれ自身の物理メンテナンスネットワーク上を移動し、このメンテナンスネットワークは通常の通信トラヒックによって使用されない物理通信リンクを含んでいる。実際、通常のトラヒックによって使用される物理通信リンクは物理メンテナンスネットワークとは完全に分離されている。換言すれば、従来の相互接続ネットワークはメンテナンストラヒックを実行するための一つの配線セットおよび通常のトラヒックを実行するための異なる配線セットを含んでいた。
相互接続ネットワークの通常のトラヒックの部分は典型的にはパケットが単一のユニットとして、ソースから行先までの経路に沿ってノードからノードへと転送されるフロー制御された格納、送達機構である。各ノードは、パケットの最後のフィットが受信されるまでパケットのヘッドを次のノードに通過させるのを待つ。より最近のマルチプロセッサシステムは通常のトラヒックパケットの流れを制御するため、ウォームホール（wormhole）ルーティングの形式を用いた通常トラヒックの相互接続ネットワークを利用する。ウォームホールルーティング相互接続ネットワークは、パケットの尾端がそのノードで受信される以前に、パケットのヘッドをそのノードからルート化する。パケットは、１もしくはそれ以上のフィットであり得るフロー制御ユニット（flit）と呼ばれる、より小さい多数のメッセージパケットに分割される。ヘッダフリットは、ルーティング情報を含む。ヘッダフリットがある処理要素ノードによって受信され、その行先が判断される。ヘッダフリットは、ルーティングアルゴリズムによって指示された次のノードに送られる。残りのフリットはヘッダフリットの後に列車のような方法で追随する。ノード間のフロー制御は、格納及び前進相互接続ネットワークにおけるパケット単位というよりは、フリットベースの単位で実行される。かくして、ウォームホールルーティングではパケットは物理通信リンクを通して部分的に送信され、受信ノードにおけるバッファスペースの不足によってブロックされることがある。
ウォームホールルーティングは、リンク上でパケットを送信するための時間（パケットのフィット数×クロック周期）はホップ当たり１回というよりは、ネットワーク横断につき、１回にのみ抑えられるので軽い負荷のネットワークにおいてパケットの潜伏を大幅に減少することができる。ウォームホールルーティングは、また、ノードがパケットの全体をバッファするよう要求されないので、ネットワークのバッファ要求を大幅に減少することができる。
しかしながら、ウォームホールルーティングの問題は、ヘッダフリットがブロックされると残りのフリットはヘッダの背後で立往生することである。これらの残りのフリットはネットワークの多重リンク及びノードを横断することができるかもしれない。ブロックされたパケットは他のパケットをそれらパケットが上記ヘッダフリットがブロックされたノードを介してルート付けることを望まないにも拘わらず処理されるのを阻止してしまう。このことは、特に均一でない通信パターンが存在する場合には、重大なネットワークの性能低下をもたらす。
通常のトラヒック相互接続ネットワークの第３の形式は仮想カットスルー（cut−through）ネットワークである。仮想カットスルー相互接続ネットワークはあるパケットがバッファをブロックしたときにそのバッファはパケットの全体を常に受け入れなければならないという点を除いて、ウォームホールルーティングネットワークと同様である。このようにして、仮想カットスルールーティングはウォームホールルーティングにおいて、固有に生ずるブロック減少の問題を回避することができるが、ブロックされたパケットの全てをバッファするために必要な付加的なハードウエアのコストがかかる。
全ての関連するバッファが満杯になり、ブロックしてしまうようなサイクリックな依存性がチャネルバッファのセットにおいて生ずる時にデッドロックが発生する。相互接続ネットワーク及び対応するルーティングアルゴリズムの設計に際して、まず最初に考えなければならないことはデッドロックを回避することである。デッドロックの状況は、チャネル依存性グラフを介して各ノードがネットワークチャネルを表わし、そのアークがチャネル間の依存性を表わすような方向付けグラフに定式化される。
あるパケットがチャネルｘからチャネルｙに直接にルート化できる場合には、チャネルｘとチャネルｙとの間にはあるアークが存在する。そのチャネル依存性グラフが非サイクリックであれば、ネットワークはデッドロックフリーであることが証明される。しかしながら、健全なネットワークがデッドロックフリーであると証明された場合にも、ネットワーク内の結果によってデッドロックは依然として生じ得る。
デッドロックを回避する一つの簡単な方法は、サイクリックなバッファの依存性の可能性を除去するため、相互接続ネットワーク上で処理要素ノード間にパケットをルート付けするために使用される相互接続ネットワークのトポロジィ及び／又はルーティング機能を制限することである。
例えば、２次の超立方体（hypercube）トポロジィは、ルーティング機能が各次元がｅ−キューブ（ｅ−cube）もしくは次元順位ルーティングアルゴリズムを用いて順位が増大する方向にトラバースされるように制限されている場合には、デッドロックフリーである。最大一つのホップが次元ごとに作成され、いかなるパケットも下位の次元にはルート付けされないので、いかなるサイクリックなバッファ依存性の可能性はない。ｅ−キューブルーティングアルゴリズムは各次元における対向する流れのトラヒックはバッファの異なるセットを用いるとともに次元は順位が増大する方向にトラバースされるので、デッドロックフリーがｎ次元の網目トポロジィを作成するのに用いることができる。トーラストポロジィは、トーラストポロジィ内のラップアラウンド（wrap−around）リンクが単一のリングを形成するようなサイクリックなバッファ依存性を与えるので、ｅ−キューブルーティングに制限された場合には、デッドロックフリーではない。
更に、網目構造においてもリクエスト及びレスポンスパケット間の依存性によってはデッドロックが発生する。ノードはそのノードが先のリクエストのためのレスポンスパケットを送信するまで、より以上のリクエストパケットを受け入れることができないので、ネットワーク内においてレスポンスパケットがリクエストパケットの後ろで待機するように作成されている場合にはデッドロックが発生し得る。リクエストとレスポンスパケット間のこの依存性の問題に対する高価な解決法はリクエストとレスポンスの物理ネットワークを分離して使用することである。
仮想チャネルがデッドロックを回避するとともに、通常のトラヒックのネットワーク錯綜を減少させるために使用されてきた。各分離チャネルは１もしくはそれ以上の仮想チャネルに分割される。各仮想チャネルは仮想経路に沿ってパケットを格納するための仮想チャネルバッファを含む。仮想チャネルは共通の物理チャネルを横断して多重化されているが、相互に独立に動作する。このように、共通の物理チャネルを横断して、多重化された第１の仮想チャネル上でブロックされたパケットは、共通の物理チャネル上で多重化された第２の仮想チャネルの背後でパケットを記録することはない。
発明の要旨
本発明は、処理要素ノードとそれら処理要素ノードをｎ次元のトポロジィにおいて、相互に接続する物理通信リンクを含むマルチプロセッサコンピュータシステムを提供するものである。少なくとも、一つのフロー制御された仮想チャネルは処理要素ノード間において転送されるべき通常のトラヒック情報を含むパケットを格納するため、各物理通信リンクに対して割当てられた仮想のチャネルバッファを含む。フロー制御されない仮想メンテナンスチャネルは、複数の処理要素ノード間において、転送されるべきメンテナンス情報のパケットを格納するため、各物理通信リンクに割当てられたメンテナンスチャネルバッファを含む。メンテナンスチャネルは物理通信リンクをアクセスするについて、少なくとも一つのフロー制御された仮想チャネルより高い優先度が割当てられる。
フロー制御されない仮想メンテナンスチャネルは、好ましくはマルチプロセッサコンピュータシステム上で稼動するシステムソフトウエアにより処理要素ノードのいずれからもアクセスできることが好ましい。しかしながら、本発明の一つの実施例においては、システムソフトウエアはある処理要素ノードをフロー制御されない仮想メンテナンスチャネルによってアクセスすることを阻止することもできる。
本発明によるマルチプロセッサコンピュータシステムの好ましい実施例において、フロー制御されない仮想メンテナンスチャネル内のルートの経路はデルタ値で規定される。フロー制御されないメンテナンスチャネル内において経路を選択するのに、より大きいフレキシビリティを可能にするためには、デルタ値は好ましくは各次元において１次と２次のデルタ値を有するように定義されることが好ましい。レスポンスパケットは典型的には、フロー制御されない仮想メンテナンスチャネル内において、対応するリクエストパケットによって選ばれたと同じ経路に追随する。
マルチプロセッサコンピュータシステムは好ましくは各処理要素ノードにおいて、リード／ライトレジスタを含み、それらのレジスタはシステム動作に影響を与えない。この方法で、リード／ライトレジスタは、フロー制御されない仮想メンテナンスチャネルを介してあるルートが有効であることを検証するために、書込み及び読出しが行われる。
マルチプロセッサコンピュータシステムの一つの実施例において、少なくとも一つのフロー制御された仮想チャネルは、２つの非サイクリック非適合仮想チャネルと一つの適合仮想チャネルを含む。２つの非サイクリック、非適合仮想チャネルはルーティング情報に基づいて、複数の処理要素ノード間の決定的仮想経路に沿って、通常のトラヒックパケットを格納するため各物理通信リンクに割当てられた第１および第２の形式の仮想チャネルバッファを含む。適合仮想チャネルは、ルーティング情報に基づいた複数の処理要素ノード間の決定的でない仮想経路に沿って通常のトラヒックパケットを格納するため、各通信リンクに割当てられた第３の形式の仮想チャネルバッファを含む。
【図面の簡単な説明】
図１は、大量平行処理（MPP）システムのダイヤグラムである。
図２は、図１のMPPシステムについて処理要素ノードと相互接続ネットワーク要素のダイヤグラムである。
図３は、図１のMPPシステムについての処理要素構成のダイヤグラムである。
図４は、３次元のトーラスネットワークトポロジィを有するMPPシステムのダイヤグラムである。
図５は、図１のMPPシステムの好ましい実施例の各ネットワーク物理通信リンク又はチャネルについて通常のトラヒックとメンテナンストラヒックに利用される仮想チャネルを示すダイヤグラムである。
図６は、仮想チャネルを用いた３−Ｄネットワークにおける切り替え構造のブロックダイヤグラムである。
図７は、仮想メンテナンスネットワーク上の例示的な特別ルートを示すMPPシステムのダイヤグラムである。
好ましい実施例の記述
好ましい実施例の以下の詳細な記述において、記述の一部をなすとともに本発明が実施される特定の実施例を図示する添付の図面が参照される。他の実施例も実用化できること、および構造的又は論理的な変更は本発明の範囲を逸脱することなしになしうることが理解されるべきである。それ故、以下の詳細な記述は限定的に解釈されるべきでなく、本発明の範囲は添付の請求項によって定義されている。
MPPシステム
図１は全体が20で示された大量並列処理（massively parallel processing:MPP）システムの要素の簡略化されたモデルを図示している。MPPシステム20は典型的には数百及至数千の処理要素ノード22の如き処理要素ノードからなる。相互接続ネットワーク24はMPPシステム20内の処理要素ノード間の通信経路を提供する。図１に示されたシステム20のモデルにおいて、相互接続ネットワーク24は矢印26で示すようにx,yおよびｚ次元において処理要素ノードを接続する３次元の経路マトリックスを形成する。相互接続ネットワーク24は処理要素ノードをI/Oゲートウエイ28にも接続する。I/Oゲートウエイ28は、ホストシステム（図示せず）又はI/Oサブシステム（図示せず）とMPPシステム20との間でシステムデータおよび制御情報を転送する。
ホストシステムはMPPシステム20用のソフトウエアコンパイラを稼動させる。MPPシステム20について書かれた全てのソフトウエアプログラムはホストシステム上でコンパイルされるが、MPPシステム20内によって稼動される。単一のキャビネット構成において、ホストシステムはMPPシステム20の如き同一のキャビネット内に存在する。多キャビネット構成では、ホストシステムはMPPシステム20にケーブル接続された分離されたキャビネット内に存在する。
図２は処理要素ノード22と処理要素ノード22の相互接続ネットワーク24への接続より詳細な図示である。処理要素ノード22の如き各処理要素ノードは、典型的には処理要素30、オプションとしてのブロック転送エンジン32およびネットワークインターフェース34を備える。処理要素ノード22は１より多い処理要素30を備えることができる。
図３に示されるように、各処理要素30はマイクロプロセッサ38、ローカルメモリ40および支援回路42を備える。
MPPシステム20は、各処理要素がローカルメモリを含むので、物理的に分散されたメモリを含む。しかしながら、MPPシステムメモリは論理的には共有されてもよい。システムメモリは、ある一つの処理要素内のマイクロプロセッサがいま一つの処理要素のメモリをその処理要素内のマイクロプロセッサを巻込むことなくアクセスすることができる。
ローカルメモリ40は、好ましくはシステムデータを格納するためダイナミックランダムアクセスメモリ（DRAM）からなる。低潜在性の高帯域データ経路が処理要素30内においてマイクロプロセッサをローカルメモリに接続する。
支援回路42は好ましくはマイクロプロセッサ38の制御およびアドレス機能を拡張する。支援回路42はデータ転送をローカルメモリ40に対して行う。
図２に戻って、オプションとしてのブロック転送エンジン（BLT）32はシステムデータを再分配する非同期の直接メモリアクセスコントローラである。BLT32は、ある処理要素30内のローカルメモリと遠隔処理要素内のローカルメモリとの間でシステムデータを再分配する。BLT32は処理要素30及至遠隔処理要素を中断させることなしにデータの再分配を可能とする。MPPシステム20の他の好ましい実施例では、オプションとしてのBLT32を含んでおらず、その代わりに処理要素のローカルメモリ間のデータブロックの移動を制御するシステムソフトウエアに依存する。
ネットワークインターフェース34は相互接続ネットワーク24を介していま一つの処理要素ノード又はI/Oゲートウエイ28に送られるべき情報をフォーマット化する。ネットワークインターフェース34は他の処理要素ノード又はI/Oゲートウエイ28からの入力情報を受信し、その情報を処理要素30に仕向ける。
相互接続ネットワーク24は、データ通信，バリア／ユーレカ（eureka）同期、システム構成およびメンテナンスの目的のため全ての処理要素ノードを互いに接続する。ネットワーク挙動のモニタのための仕様は、相互接続ネットワーク24内に組込むこともできる。データのルーティングは３つの仮想要素に分解されており、非サイクリック仮想ネットワーク、適合仮想ネットワークおよび非ブロック型仮想メンテナンスネットワークを含む。通常のデータトラヒックは非サイクリックおよび適合ネットワーク上で伝送される。以下で詳細に記述するように、非サイクリックネットワークはデッドロックを回避することについて責任をもち、適合ネットワークは適合ルーティングを許容する。非サイクリックネットワーク内の可能なサイクルは以下に述べるように、指向順ルーティングと仮想チャネルの組合せによって壊される。メンテナンストラヒックは仮想メンテナンスネットワーク上を移動する。
相互接続ネットワーク24は図２に示したネットワークルータ36の如き複数のネットワークルータを備える。ブート時において、すべてのルータは保全ワークステーションもしくは他のブート装置に接続された処理要素ノードにおいて開始される成長プロセスを介して構成され、初期化されなければならない。更に、相互接続ネットワーク24は各次元の各方向に物理通信リンクを備える。Ｘ次元通信リンク44はｘ次元のノードを接続する。Ｙ次元通信リンク46は、ｙ次元のノードを接続する。Ｚ次元通信リンク48はｚ次元における処理要素ノードを接続する。各次元における代表的な通信リンクが図１に示されている。図２にも−Ｘ方向の通信リンク44a,＋Ｘ方向の通信リンク44b、−Ｙ方向の通信リンク46a,＋Ｙ方向の通信リンク46b、−Ｚ方向の通信リンク48aおよび＋Ｚ方向の通信リンク48bを示している。
通信リンク44,46および48は相互接続ネットワーク内のネットワークルータ間にデータおよび制御情報を転送する。通信リンクは典型的には２つの単一方向チャネルを備える。リンク内の各チャネルは好ましくはデータ，物理ユニット（phit）型式、仮想チャネル選択および仮想チャネル認識の諸信号を含む。データ信号は好ましくはリクエスト情報もしくはレスポンス情報のいずれか一方を担持する。リクエスト情報は、あるノードにある動作を実行することを要求する情報を含む。例えば、ソースノードは行先ノード内のメモリからデータを読み出すために行先ノードへのリクエストを送る。このリクエストは通信リンク内のあるチャネルを介して送られる。レスポンスはある動作の結果である情報を含む。例えば、データを読むリクエストを受信した後、行先ノードはソースノードに対してレスポンスを返送する。そのレスポンスは読み出されたデータを含む。リクエストとレスポンスは好ましくはデッドロックを避けるため、論理的に分離されている。リクエストとレスポンスの論理的分離は以下に記述される。
相互接続ネットワーク24は好ましくは２方向トーラスに処理要素ノードを接続する。図４はx,yおよびｚ次元における３次元トーラスネットワークを有するMPPシステム20の好ましい実施例を示す。３−Ｄトーラス内の各処理要素ノードはx,yおよびｚ次元の＋および−の両方向に通信リンクを有する。本明細書における他のダイヤグラムのいくつかは３次元ネットワーク接続を示している。明瞭化のため、これらの他のダイヤグラムでは各次元におけるトーラスを完成する通信リンクは図示されていない。
トーラストポロジイにおいて、リングが各次元において形成され、ここで情報は一つのノードから同じ次元の全てのノードを通って最初のノードに転送される。トーラスネットワークは情報の転送のスピードを増加する等のネットワーク通信のための幾つかの利点を提供する。トーラスネットワークのいま一つの利点はネットワーク回りの長い経路に情報を送ることによって悪い通信リンクを回避する能力である。
情報は通信リンク上の処理要素ノード間において、パケットの型式で転送される。各パケットは好ましくはヘッダを有する。このヘッダはネットワークを介してパケットの方向付けを行うルーティング情報、どの処理要素がパケットを受け取るべきかを指示する行先情報およびパケットを受信した処理要素にある動作を実行することを指示する制御情報を含む。ヘッダは、また、どの処理要素がパケットを生成したかを示すソース情報を含むとともに、メモリアドレスの情報を含むことができる。パケットはオプションとしてボディを備える。パケットのボディは典型的には処理要素ノード間で転送されるべきデータ、もしくはホストシステムからあるいはホストシステムへのシステムデータを含む。
各処理要素ノードにおけるネットワークルータ36の如きネットワークルータは、各パケットの各ヘッダに含まれるルーティング情報に基づいて相互接続ネットワーク24内の通信リンクを通して、通常トラヒックのパケットを転送する。ヘッダとボディは可変のリンクを有し、１回に１フィット（phit）を通信リンクを介して転送する。MPPシステム20は本明細書の発明の背景において説明した如きウォームホールルーティングを使用し、そこではルーティング情報はヘッダフリットに含まれており、残りのフリットはノーマルトラヒックの流れを制御するために、列車のようにその後に続く。ノード間の通常トラヒックのフロー制御はパケット対パケットのベースというよりは、フリット対フリットベースで達成され、従って受信処理要素ノード内のバッファスペースの不足により、パケットがリンクを横切って部分的に伝送されるとともにブロックされることが可能となる。上記したように本発明の好ましい実施例は、双方向3Dトーラスネットワークであり、このネットワークはデッドロック状況を更に複雑化する。
ノーマルトラヒックについての適合ルーティング構造
共通の物理通信リンクを横断して多重化された仮想チャネルを利用する非サイクリック適合仮想ネットワーク上に相互接続ネットワーク24を介して、通常データトラヒックのパケットをルーティングする好ましい適合ルーティング構造は、“トーラス相互接続ネットワークのための適合ルーティング構造”と題する1995年４月13日に出願され、現在、継続中でかつ本願と同じく譲渡された米国特許出願番号08/441,566に詳細に記述されている。MMPシステム20は好ましくは仮想チャネルC1の第１のサブセットを用いた通常のトラヒックのための適合ルーティング構造を利用する。C1仮想チャネルは全てのノードの間に非適合デッドロックフリーのルーティングを備える。C1仮想チャネルが相互接続ネットワーク24の非サイクリック仮想ネットワーク要素を形成する。仮想チャネルの第２の型式はNC1仮想チャネルである。NC1チャネルは最小の完全な適合ルーティングを備える。NC1仮想チャネルは相互接続ネットワーク24の適合仮想ネットワーク要素を形成する。NC1仮想チャネルはパケットがNC1チャネル内で自由にルート付けされるので、そのチャネルに依存する図形においてサイクルをもつことができる。NC1仮想チャネル内において、デッドロックであるという決定が任意の時刻になされたならば、パケットはあるC1仮想チャネルへジャンプすることができなければならない。
図５は各ネットワークの物理チャネルもしくは物理通信リンクについて利用される仮想チャネルを示している。２つの仮想チャネル50と52がC1仮想リクエストネットワークとして使用される。仮想チャネル50はvc0型式の仮想チャネルであり、仮想チャネル52はvc1型式の仮想チャネルである。同様に、レスポンスC1仮想ネットワークは２つの仮想チャネル54と56を備える。仮想チャネル54はvc0型式の仮想チャネルであり、仮想チャネル56はvc1型式の仮想チャネルである。第３の仮想チャネルvcは適合NC1仮想チャネル58であり、リクエストおよびレスポンスの両方のネットワークにおける適合ルーティングを提供する。図５に示された好ましい実施例は一つのNC1チャネルを使用しているが、個別のNC1チャネルを両方のリクエストおよびレスポンス仮想ネットワークとして使用することもできる。通常トラヒックとして使用される仮想チャネルに加えて、仮想メンテナンスチャネル60がメンテナンストラヒックを搬送するために使用される。仮想メンテナンスチャネル60は相互接続ネットワーク24の非ブロック型仮想メンテナンスネットワーク部分を形成し、それについては以下に詳細に記述される。
図６を参照して、各ノードはローカルな処理要素（PE）と同様６方向（＋X,−X,＋Y,−Y,＋Z,−Ｚ）の各々について入力と出力を有する。図６のブロックダイヤグラムは仮想チャネルを用いた3DリクエストまたはレスポンスC1ネットワークにおける切り替えを示している。仮想チャネルのバッファは物理通信リンクの受信端における処理ノードの入力に位置する。各物理通信リンク上の通信ノードは反対方向のリンク上に送られるフロー制御情報を用いて受信処理要素ノードにおける各仮想チャネルについての利用可能なバッファスペースのトラックを維持する。
いずれの時にもC1仮想チャネル内のパケットはそのパケットをその目的地により近付けるように（最小限）移動させるパケットの現在のノードにおけるNC1仮想チャネルのいずれに入れてもルート化できる。NC1仮想チャネル内のパケットはその現在ノードにおけるいかなるNC1チャネルへも最小限ルート化することができる。NC1チャネル内のパケットはいつの時にでもC1チャネルへルート化できる。C1仮想チャネルネットワークに再侵入するに際して、現在ノードの仮想チャネルのルックアップテーブルを用いて決定的C1ルーティングアルゴリズムに従ってある物理的かつ仮想のチャネル上にルート化する。リクエストもしくはレスポンスC1仮想チャネルネットワークのいずれか一方において、vc0仮想チャネルもしくはvc1仮想チャネル上でパケットのルートを開始するために選択し、かつパケットのルートの間、仮想チャネルを変えることの決定は正確性と挙動性の両方に影響する。まず、第１に考慮すべきものは正確性である。（すなわち、vc0とvc1の間の仮想チャネルの割当ては、デッドロックを防がなければならない）。
C1仮想チャネル内におけるデッドロックを防ぐために以下の３つのステップが実行される。第１にリクエストおよびレスポンスパケットは仮想チャネルの分離したセット上にルート化される。このことはリクエストおよびレスポンストラヒック間のいかなるサイクルをも分断する。第２に方向順ルーティングが多重方向を含むいかなるサイクルをも分断するために、好ましくは使用される。換言すれば、パケットは所定の方向順位、例えば（＋X,＋Y,＋Z,−X,−Y,−Ｚ）のようにルート化される。例えば、上記のように決められた方向順序を用いると＋X,−Y,＋Ｚの目的地のためのルートは最初に＋Ｘ、次いで＋Ｚ、そして−Ｙのようにルート化される。方向順ルーティングは“マルチプロセッシングシステムにおける方向順ルーティング”と題する米国特許第5,533,198に詳細に記述されている。
デッドロックを防ぐ第３のステップは各リング内におけるサイクルを分断するため、２つの仮想チャネル（vc0とvc1）の使用である。この第３のステップは挙動を最適化するため種々の方法で達成することができる。仮想チャネル割当ての好ましい方法は“平行処理システムにおける最適化仮想チャネル割当て”と題する1995年４月13日に出願され、現在継続中で共通に譲渡された米国特許出願番号08/422,072に詳細に記述されている。vc0もしくはvc1仮想チャネルはリング上のパケットの行先（対応する次元における行先ノードの座標）に基づいて仮想チャネルルックアップテーブル37（図２に示される）に格納されたルーティング情報を返してパケットがあるリング上にルーティングされ始めた時に選択される。各処理要素ノードはその６方向の各々について小さいシステムで形成可能な仮想チャネルルックアップテーブル37を有する。上記した“トーラス相互接続ネットワークのための適合ルーティング構造”と題する上記の現在継続中で共通に譲渡された米国特許出願番号08/441,566に詳細に記述されたC1とNC1との間のルーティングのための好ましいルーティング構造はNC1チャネルについて以下の制限を設けている：
そのチャネルのバッファが全体のパケットを保持する余地をもたない限り、いかなるパケットもNC1チャネルに入ることはできない。この制限はいかなるパケットもNC1チャネル内において異なるチャネルバッファのヘッドをその後部でブロックすることができないため、NC1チャネル内におけるデッドロックの発生を防止する。あるNC1チャネルバッファの全部にそのヘッドが位置するパケットはC1仮想チャネル内にいつでもルート化することができるのでNC1仮想ネットワークのデッドロックは不可能である。更にこの制限はC1チャネル間における間接的な依存性を排除する。NC1に侵入するいかなるパケットもそのチャネルのバッファがパケット全体を保持する余地を持たない限り、いかなるパケットもNC1仮想チャネルに入ることができないため、第１のNC1チャネルバッファによってその全体が受け入れられる。それ故、パケットはC1からNC1およびその逆のルート化はできず、従って第１のC1チャネルバッファにおけるバッファスペースを消費するパケットの後部でブロックすることができない。その結果好ましいルーティング構造は任意の相互接続ネットワークトポロジイを通してパケットをルート化するのに用いることができ、そのトポロジイについてデッドロックフリーの決定的ルーティングアルゴリズムがC1チャネル上に構成される。好ましくは上記したようにデッドロックフリーの決定的ルーティングアルゴリズムはリクエストネットワークとして割当てられた２つの仮想チャネルおよびレスポンスネットワークとして割当てられた２つの仮想チャネルを有する方向順ルーティングスキームである。
MPPシステム20はノーマルトラヒックについてソースから行先ノードへ３次元全てにおける絶対アドレス付けを用いる。あるいは、MPPシステム20はノーマルトラヒックについて差分アドレス付けを使用することができ、その場合、行先アドレスはソースノーマルにおいて計算され、それが行先ノードに到達したときに０にデクリメントあるいはインクリメントされる。
仮想メンテナンスネットワーク
上記したようにMPPシステム20は通常のトラヒックを実行するために使用される非サイクリック適合型仮想ネットワークに加えて、メンテナンストラヒックを実行するため図５に示されたようなフロー制御されない仮想メンテナンスチャネル60を備えた非ブロック型仮想メンテナンスネットワークを利用する。図５に示された実施例において、通常トラヒックを実行するための５つの仮想チャネルと仮想メンテナンスチャネル60が各ネットワークの物理通信リンクに割当てられている。この方法で、仮想メンテナンスチャネル60は通常のトラヒックを遂行する仮想チャネルと同じ物理通信リンク（すなわち、配線）を共有する。
仮想メンテナンスチャネル60はあるネットワークのレジスタを初期化するといったシステムの初期化動作のために利用される。仮想メンテナンスチャネル60はMPPシステム20を構成するために利用される。MPPシステム20の不具合のあるネットワークの故障の同定の如き診断は仮想メンテナンスチャネル60を通じて行われる。更に、ハードウエアモニタリング、エラー監視、及び挙動モニタの如きモニタ機能は仮想メンテナンスチャネル60上で行われる。
通常のデータトラヒックを遂行する仮想チャネルのバッファはRAMセル内に存在する。対照的に仮想メンテナンスチャネル60のバッファは通常のトラヒックの上記適合型ルーティングに使用されるRAMセルから完全に分離されたフリップフロップレジスタ内に典型的に設けられる。このようにして、メンテナンストラヒックは通常のデータトラヒックを破壊することはない。
システムソフトウエアは仮想メンテナンスチャネル60によって形成される仮想メンテナンスネットワークを通してメンテナンストラヒックをルーティングするための特殊なルーティング機構を用いる。第１に仮想メンテナンスチャネル60は通常のトラヒックを遂行する全ての仮想チャネルより高い優先度が与えられる。その結果、メンテナンスデータパケットと通常のデータパケットの間に衝突が存在する時には、メンテナンス操作が物理通信リンクへのアクセスが常に与えられる。第２に特定のルーティングはフロー制御されておらず、従ってメンテナンストラヒックのパケットを送信するのに先立つバッファ問題の可能性について何らのチェックが実行されることはない。もしも、２つのメンテナンストラヒックデータパケットが衝突した場合、メンテナンスデータパケットの一方は他方のメンテナンスデータパケットに上書きされる。このようにして、フロー制御されない仮想メンテナンスチャネル60ではソフトウエアは衝突を生ずるようなトラヒックが送られることはないことを保証しなければならない。メンテナンスパケット間の可能な衝突のソフトウエア制御は上記のメンテナンス操作によって、解決されるべき重要な挙動は一般には存在しないので、深刻な問題をもたらすことはない。
このフロー制御されないトラヒックの利点は、メンテナンストラヒックがフロー制御されないとすると、トラヒックは可能なバッファ問題をチェックすることなく、行先ノードに単に送られるだけであるので依存性における変化は何ら存在しないため、デッドロックは発生し得ないということである。換言すれば、特定のルーティング構造は非ブロック型ネットワークを通してメンテナンスパケットを転送する。非ブロック型ネットワークは可能なデッドロック条件からフリーであるが、もしも２つのメンテナンス情報のパケットが同時に同じネットワークルータ部にアクセスした場合、１つのパケットは他方のパケットに上書きされるであろう。
仮想メンテナンスチャネル60内において使用される特定のルーティングは、相互接続ネットワークを通して情報のパケットをルート付けするために、デルタ値を利用する。デルタ値は、システムソフトウエアが、物理処理要素ノードへ、その処理要素ノードに対して物理ノード数が割当てられるのに先立って、情報を送ることを可能とする。
仮想メンテナンスネットワークの一つの実施例では特殊なルーティングが特殊なゲット（SGET）コマンドを用いることによって実行され、その特殊なルーティングはある特定のルーティングレジスタからプロセッサのレジスタへデータを転送する。MPPシステム20内の特殊ルーティング用レジスタはルーティングルックアップテーブル、リセットスイッチ、レジスタ支援回路、特別なリード／ライトレジスタシステムのステート／制御レジスタ等を含む。本発明の一つの実施例では、図３に示されるマイクロプロセッサ38の如きマイクロプロセッサそれ自身の中に含まれている。いま一つの実施例では、プロセッサレジスタは、マイクロプロセッサの外部であって、図３に示す支援回路42の如き処理要素支援回路内のスタティックRAM（SRAM）のセル内に設けられる。
SGETコマンドに加えて特殊ルーティングは、あるプロセッサレジスタから特殊ルーティング用レジスタの一つにデータを転送するのに使用される特殊プット（SPUT）コマンドを使用する。本発明による仮想メンテナンスネットワークの好ましい実施例においては、６個のデルタ値が特殊ルートの経路を規定する。各デルタ値は正か負である。この６個のデルタ値は以下の通りである：
1.  １次ΔＸ値
2.  １次ΔＹ値
3.  １次ΔＺ値
4.  ２次ΔＸ値
5.  ２次ΔＹ値
6.  ２次ΔＺ値
相互接続ネットワーク24において、ある通信リンクを介する情報の転送はホップ（hop）と呼ばれる。仮想メンテナンスネットワーク内の特殊ルーティング経路を追従する場合、メンテナンス情報はデルタ値と同じ数のホップを作る。例えば、１次デルタＸ値が＋３に設定されている場合、メンテナンス情報は正のＸ方向に３つのホップを生成する。更に、特殊ルーティング経路を追従する場合、メンテナンス情報は上記のリストに示された順序で各次元を移動する。
図７は、36ノードのMPPシステムにおいて、ソースノードから行先ノードに相互接続ネットワーク24を通る複数の可能な特殊ルーティング経路の一つを示している。明瞭化のため図７はMPPシステム内の通信リンクの全てを示すものではない。この図示された例について、デルタ値は以下の如くに設定されている。
１次ΔＸ値＝０
１次ΔＹ値＝＋２
１次ΔＺ値＝＋１
２次ΔＸ値＝＋１
２次ΔＹ値＝−１
２次ΔＺ値＝＋１
図７に図示された特殊ルーティング経路は、ソースノード70から行先ノード80へのものである。第１に、１次ΔＸ値が０であるので、パケットは最初Ｘ次元において移動しない。１次ΔＹ値が＋２であるので、メンテナンスパケットはＹ次元において＋２だけ移動し、ノード72に至る。１次ΔＺ値は＋１であるのでメンテナンスパケットはＺ次元において＋１だけ移動してノード74に至る。２次ΔＸ値は＋１であるので、メンテナンスパケットはＸ方向において＋１だけ移動し、ノード76に至る。２次ΔＹ値は−１であるので、メンテナンスパケットはＹ次元において−１移動し、ノード78に至る。最後に、２次ΔＺ値は＋１であるので、メンテナンスパケットはＺ次元において＋１移動し、行先ノード80に達する。
各次元における２次Δ値はシステムソフトウエアに対してより可能性のある経路を与える。この方法でシステムソフトウエアにはある与えられた特殊ルート経路を選択するに際して十分なフレキシビリティが与えられる。仮想メンテナンスネットワークの好ましい実施例において、リクエストとレスポンスは同じ経路上にある。その結果、あるリクエスト経路が特定され、更に承認されると対応するレスポンス経路も特定され、かつ、承認される。上に述べた如く、特殊ルーティング用レジスタは好ましくはシステムメンテナンス、システムステート又はシステム制御条件を指示するのには使用されないリード／ライトレジスタを含む。これらのリード／ライトレジスタは、MPPシステム内において２つのノード間の選択された接続経路が存在することを検証するために使用される。換言すれば、あるリード／ライトレジスタの状態はMPPシステム20に何ら影響を与えないが、そのリード／ライトレジスタには特殊ルーティング経路が完成されたことを検証するために書き込まれ、次いで読み出される。
仮想メンテナンスネットワークは、システム内のいかなる処理要素ノードからもシステムソフトウエアを介してアクセスすることができる。しかしながら、その処理要素ノードが誤動作した時には、その処理要素ノードを除外することを許容する特殊な仕様が含まれている。
以下には、ソースノードが行先ノードのネットワークルータSGETリターンレジスタにある値を書き込むための特殊ルーティングの一例が示され、行先ノードは上記SGETリターンレジスタ内に格納された値をSGETレスポンスパケットについてのデルタ値として利用する。まず、ソースノード内の処理要素は行先ノードのSGETリターンレジスタについての値をソースプロセッサレジスタに格納する。次に、ソースノード内の処理要素はSPUTコマンドを発する。SPUTコマンドを発行する一方、ソースノードの処理要素はSPUTコマンドパケットのルーティングのためのデルタ値、SGETリターンレジスタのアドレス及びソースプロセッサレジスタ数を生成する。更に、ソースノード内のネットワークルータはSPUTコマンドパケットを生成し、そのSPUTパケットを非ブロック型仮想メンテナンスネットワークを介して行先ノードに送信する。次いで、行先ノードのネットワークルータはSPUTパケットを受信し、SGETリターンレジスタ内にデルタ値を格納する。
特殊ルーティングのいま一つの実施例では、ソースノードが行先ノードのネットワークルータソフトウエアレジスタから値を読み取る。システムソフトウエアは、MPPシステムのノード形状を決定する一方、ソフトウエアレジスタに値を書き込む。システムソフトウエアは、システムハードウエアに影響を与えることなく、ソフトウエアレジスタにいかなる値をも書き込むことができる。
第１の、ソースノード内の処理要素がSGETコマンドを発行する。SGETコマンドを発行する一方、ソースノード内の処理要素はSGETコマンドパケットを行先ノードに対してルーティングするためのデルタ値、ソフトウエアレジスタのアドレス及びソースノード内の行先プロセッサレジスタ番号を生成する。第２に、ソースノード内のネットワークルータはSGETリクエストパケットを生成し、そのSGETリクエストパケットを非ブロック型仮想メンテナンスネットワークを介して、行先ノードに送信する。第３に、行先ノード内のネットワークルータはソフトウエアレジスタから値を読み取って、SGETレスポンスパケットを生成するため、SGETリターンレジスタ内にその値を格納する。第４に、ネットワークルータ及び行先ノードは非ブロック型仮想メンテナンスネットワークを介してSGETレスポンスパケットをソースノードに送信する。第５に、ソースノードはソフトウエアレジスタからの値をソースノード内の行先プロセッサレジスタに格納する。
上記した本発明の仮想メンテナンスネットワークは、仮想メンテナンスネットワークの非ブロック型の性質の故にデッドロックを回避することができる。仮想メンテナンスネットワークはいかなる背圧も作用しないので、非ブロック性である。従って、仮想メンテナンスネットワーク上の衝突は、パケットの喪失をもたらす。しかしながら、このような衝突は仮想メンテナンスネットワーク上で共通なメンテナンスパケットを含む。上に述べたように、仮想メンテナンスネットワークは通常のトラヒックパケットをバッファするためのRAMから分離されたメンテナンスパケットバッファ用のフリップフロップレジスタを用い、かくしてシステムソフトウエアは衝突するトラヒックがメンテナンス仮想ネットワークを介して送られないことを保証することのみが必要である。更に、通常の操作は仮想メンテナンスネットワークが同じ物理通信リンクをフロー制御された仮想ネットワークとして利用する場合にも、通常のトラヒックフロー制御された仮想ネットワーク上で仮想メンテナンスネットワーク上で実行されるメンテナンス操作と同時に実行される。
上に述べたように、１次及び２次のデルタ値がある与えられたソースノードからある与えられた行先ノードへメンテナンスパケットをルーティングするための数多くの可能な経路を提供する。典型的には、システムソフトウエアはフロー制御されない仮想メンテナンスチャネルを介してメンテナンスパケットをソースノードから行先ノードにルーティングする初期経路を選択する。ある選択された時間の後、パケットが初期選択された経路上で成功裡にルート付けされないときには、別の経路がフロー制御されない仮想メンテナンスチャネル60を介してソースノードから行先ノードにそのメンテナンスパケットをルート化するためのシステムソフトウエアによって選択される。この再試構造がメンテナンスパケットを未発見の破断の物理通信リンクを迂回してルート付けするのに利用することができる。
結論
本発明によるMPPシステム20は、システムの初期化、診断及び他のメンテナンス機能を実行するため、非ブロック型、フロー制御されない仮想メンテナンスネットワークを含む。この特殊な非ブロック型仮想メンテナンスネットワークは、通常のトラヒックを遂行するフロー制御された仮想チャネルと同じ物理通信リンクを共有する非ブロック型仮想メンテナンスチャネルはフロー制御された仮想チャネルより高い優先度が与えられている。この方法では、メンテナンス機能のためだけに用いられる特殊な物理通信リンク（すなわち、配線）は、消去することができる。分離されたバッファが仮想メンテナンスチャネルとして使用されるので、メンテナンス操作は通常のトラヒック操作と同時に実行することができる。更に、本発明の好ましい実施例においては、MPPシステムが構成されていない場合にも仮想メンテナンスネットワークを介して、経路を選択する際の優れたフレキシビリティを与えるために仮想メンテナンスネットワーク内において、特殊なルーティング経路を指定するのに、一次及び二次のデルタ値が使用される。更に、レスポンスメンテナンスパケットがその対応するリクエストメンテナンスパケットと同じルートを追随することができるように用意がなされている。
好ましい実施例の記述の目的で、特定の実施例が図示され、かつ、記述されたが、当業者において、同じ目的を達成するべく計算された種々の代替的もしくは等価な装置は本発明の範囲から逸脱することなくここに図示され、かつ、記述された特別の実施例に代えることができる、ということが理解されるべきである。機械的、電気機械的、電気的及びコンピュータ技術に係る当業者は本発明を極めて広い種々の実施例として実行することができるということが理解される。この出願は、ここに議論された好ましい実施例のいかなる好適化、若しくは変更をカバーするものとして意図されている。従って、この発明は請求の範囲及びその均等物によってのみ制限されるものとして意図されている。
【図３】
0003639848.tif 000002
【図５】
0003639848.tif 000003
【図１】
0003639848.tif 000004
【図２】
0003639848.tif 000005
【図４】
0003639848.tif 000006
【図６】
0003639848.tif 000007
【図７】
0003639848.tif 000008