(57)【特許請求の範囲】
【請求項１】
複数の独立ネットワークによって相互接続された複数の処理ノードを備えた超並列コンピュータ・システムであって、
前記複数の処理ノードのそれぞれが、並列アルゴリズム動作を実行する時に必要になる計算アクティビティまたは通信アクティビティを実行する１つ以上の処理要素を含み、
前記複数の独立ネットワークの第１の独立ネットワークが、ｎ次元トーラス・ネットワークを含み、
当該ｎ次元トーラス・ネットワークが、前記複数の処理ノードの間または前記複数の処理ノードの独立の分割されたサブセットの間でのポイントツーポイント通信およびマルチキャスト通信を提供するために、最適化された形で前記複数の処理ノードを相互接続する通信リンクを含み、
前記複数の独立ネットワークの第２の独立ネットワークが、グローバル・ツリー・ネットワークを含み、
当該グローバル・ツリー・ネットワークが、前記複数の処理ノードの個々の間または前記複数の処理ノードのサブセットの間での同時的なグローバル動作のためのノーダル相互接続を含み、
前記複数の独立ネットワークの第３の独立ネットワークが、非同期グローバル動作をイネーブルするグローバル・シグナル・ネットワークを含み、
当該非同期グローバル動作が、グローバル・バリア動作をイネーブルするグローバル論理ＡＮＤ演算およびグローバル通知動作をイネーブルするグローバル論理ＯＲ演算を含み、
前記複数の独立ネットワークが、実行中のアルゴリズムの帯域幅要件および待ち時間要件に従って、前記複数の処理ノードの個々の間および前記複数の処理ノードの分割されたサブセットの間での同時的かつ独立的な計算アクティビティおよびメッセージ通信アクティビティをイネーブルするために、協同的にまたは独立的に使用される
超並列コンピュータ・システム。
【請求項２】
前記第１の独立ネットワークが、スループットおよび待ち時間を最適化するために、送信元ノードから宛先ノードへの相互接続されたリンクに沿ったパケットのバーチャル・カットスルー（ＶＣＴ）経路指定をイネーブルするＶＣＴ手段を含み、当該ＶＣＴ手段が、ネットワーク・リンクに沿ったパケット経路指定のために、個々のバッファリングされる仮想チャネルを提供する、請求項１に記載の超並列コンピュータ・システム。
【請求項３】
前記ＶＣＴ手段が、ネットワーク・コンテンションを避けるために、適応的経路指定アルゴリズムを使用する、請求項２に記載の超並列コンピュータ・システム。
【請求項４】
前記第１の独立ネットワークが、並列計算の決定的最短パス経路指定をイネーブルする手段を含む、請求項１に記載の超並列コンピュータ・システム。
【請求項５】
前記第１の独立ネットワークが、パケットを自動的にマルチキャストする手段を含み、それによってパケットがノードまたはパケット・クラスに従って複数の宛先に一斉に送信される、請求項１に記載の超並列コンピュータ・システム。
【請求項６】
前記第１の独立ネットワークが、パケットの適応的経路指定およびデッドロック・フリーの決定的最短パス経路指定をイネーブルにする組込み仮想ネットワークを含む、請求項１に記載の超並列コンピュータ・システム。
【請求項７】
前記複数の処理ノードのそれぞれが、経路指定装置を含み、前記第１の独立ネットワークが、ルータの間のパケットの経路指定を制御するトークン・ベースのフロー制御手段を実現する、請求項６に記載の超並列コンピュータ・システム。
【請求項８】
前記同時的なグローバル動作が、前記グローバル・ツリー・ネットワークの葉ノードまたはそのサブツリー・ネットワークの葉ノードへ向かうルート・ノードからの下流ブロードキャストのために前記グローバル・ツリー・ネットワークの任意のノードで開始されるグローバル・ブロードキャスト動作と、上流へ、ノードから各ツリー・ネットワークまたは各サブツリー・ネットワーク内の前記ルート・ノードに向かうグローバル・リダクション動作とを含む、請求項１に記載の超並列コンピュータ・システム。
【請求項９】
ノードのサブセットに対するサービス・ノードの比率が構成可能である、請求項１に記載の超並列コンピュータ・システム。
【請求項１０】
前記複数の独立ネットワークの第４の独立ネットワークが、各入出力ノードを外部のホスト計算機に接続する外部高速ネットワークを含む、請求項９に記載の超並列コンピュータ・システム。
【請求項１１】
前記外部高速ネットワークが、ギガビット・イーサネット（登録商標）である、請求項１０に記載の超並列コンピュータ・システム。
【請求項１２】
前記複数の独立ネットワークの第５の独立ネットワークが、前記超並列コンピュータ・システム内のすべてのノードまたはノードのサブセットに関するデバッグ機能、診断機能、および構成機能を提供するＩＥＥＥ １１４９（ＪＴＡＧ）ネットワークを含む、請求項１に記載の超並列コンピュータ・システム。
【請求項１３】
ノードの内部処理要素の前記デバッグおよび検査を、前記ＩＥＥＥ １１４９（ＪＴＡＧ）ネットワークを介して、当該ノードで実行されるソフトウェアから透過的に行うことができる、請求項１２に記載の超並列コンピュータ・システム。
【請求項１４】
前記複数の独立ネットワークの第６の独立ネットワークが、個々のノードに対する診断機能性および制御機能性を提供する独立の制御ネットワークを含む、請求項９に記載の超並列コンピュータ・システム。
【請求項１５】
各ノードが、複数の処理要素を含み、当該処理要素のそれぞれが、特定のクラスの並列アルゴリズムを実行する時に必要な、計算アクティビティまたは通信アクティビティの任意の組合せを個別的にまたは同時的に実行することができる、請求項１に記載の超並列コンピュータ・システム。
【請求項１６】
前記処理要素のそれぞれの間での計算アクティビティまたは通信アクティビティを切り替える手段をさらに含む、請求項１５に記載の超並列コンピュータ・システム。
【請求項１７】
各処理要素が、中央処理装置（ＣＰＵ）および１つ以上の浮動小数点処理ユニットを含み、前記ノードが、ローカル組込み式複数レベルのキャッシュ・メモリと、上位レベル・キャッシュのためのデータの事前取出しのために下位レベル・キャッシュに組み込まれるプログラマブル事前取出しエンジンとをさらに含む、請求項１６に記載の超並列コンピュータ・システム。
【請求項１８】
各ノードが、システムオンチップ特定用途向け集積回路（ＡＳＩＣ）を含む、請求項１に記載の超並列コンピュータ・システム。
【請求項１９】
前記超並列コンピュータ・システムが、回路カード上でパッケージ化される所定の複数のＡＳＩＣノードを含み、複数の回路カードが、前記超並列コンピュータ・システム内でパッケージ化される個々のミッドプレーン・ユニット上で構成される、請求項１に記載の超並列コンピュータ・システム。
【請求項２０】
回路カードが、サブキューブまたは長方形として論理的に接続されるノードを構成するように編成される、請求項１９に記載の超並列コンピュータ・システム。
【請求項２１】
処理中の並列アルゴリズムの帯域幅要件および待ち時間要件に従って、前記ノードの間の独立の処理をイネーブルするさまざまな論理ネットワーク構成に従って、ノードのサブセットを分割する手段をさらに含む、請求項１９に記載の超並列コンピュータ・システム。
【請求項２２】
前記分割する手段が、異なるミッドプレーンを相互接続する導体上で信号を再駆動し、前記超並列コンピュータ・システムを複数の論理的に分離されたシステムに分割できるようにするために異なるポートの間で信号をリダイレクトする、リンク装置を含む、請求項２１に記載の超並列コンピュータ・システム。
【請求項２３】
残りのシステム動作に干渉せずに故障していると判定されたミッドプレーンをサービスするために、当該ミッドプレーンを避けて通信アクティビティおよび計算アクティビティをマッピングするために前記リンク装置をプログラムする手段をさらに含む、請求項２２に記載の超並列コンピュータ・システム。
【請求項２４】
前記複数の独立ネットワークの１つが、前記分割をプログラムするために前記リンク装置を制御する独立の制御ネットワークを含む、請求項２２に記載の超並列コンピュータ・システム。
【請求項２５】
ミッドプレーン・ユニットのすべての回路カードに最小限のジッタでクロック信号を供給するクロック分配システムをさらに含む、請求項１９に記載の超並列コンピュータ・システム。
【請求項２６】
前記クロック分配システムが、前記超並列コンピュータ・システムおよびそのネットワーク化された区画のすべてのノードへの同相のクロック分配をイネーブルする調整可能な再駆動信号を使用する、請求項２５に記載の超並列コンピュータ・システム。
【請求項２７】
両方向で同時に信号を搬送するために、前記処理ノードを相互接続する高速両方向シリアル・リンクをさらに含む、請求項１に記載の超並列コンピュータ・システム。
【請求項２８】
通信される各パケットが、情報を担持する１つ以上のフィールドを含むヘッダを含み、１つの前記フィールドが、改善されたビットシリアル・ネットワーク通信用のエラー訂正能力を含む、請求項２に記載の超並列コンピュータ・システム。
【請求項２９】
前記パケット・ヘッダの１つの前記フィールドが、前記ネットワーク内のノードでのパケットの経路指定に関する可能な出力方向を表す定義された数のビットを含み、前記ビットが、ネットワーク・コンテンションを減らすために、パケットが、ノード宛先に達するために対応する方向に進む必要があることを示す、請求項２８に記載の超並列コンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的には超並列コンピュータのシステムおよびアーキテクチャの分野に関し、具体的には、新規の超並列コンピュータに関する。
【背景技術】
【０００２】
超並列コンピュータ（以下、「ウルトラスケール・コンピュータ」、「スーパーコンピュータ」、または単に「計算機」若しくは「システム」とも称する）では、一般に、グリッド構成、格子構成、またはトーラス構成などの非常に規則的な構造の形で多数の計算ノードが相互接続される。最も優れたコスト対性能比を有するウルトラスケール・コンピュータの従来の手法は、単一プロセッサ構成または対称マルチプロセッサ（ＳＭＰ）構成で構成された標準プロセッサを使用することであり、ここで、ＳＭＰは、ネットワークを用いて相互接続されて、メッセージ受渡通信をサポートする。現在、これらのスーパーコンピュータは、ギガＯＰＳスケールを達成する計算性能を示す。しかし、ウルトラスケール・コンピュータを構築するためにＳＭＰのクラスタを用いるという現在の手法に関するコンピュータ業界の長年存在する２つの問題は、（１）プロセッサとメモリの間のクロック単位で測定される距離の増加と、（２）主流派の単一プロセッサまたは対称プロセッサ（ＳＭＰ）から構築される並列コンピュータの高い電力密度である。
【０００３】
第１の問題では、メモリへの距離の問題（待ち時間と帯域幅メトリックの両方によって測定される）は、コンピュータ設計者が直面する主要な問題である。というのは、これが、毎年のメモリ速度の増加および通信帯域幅の増加の割合をはるかに超える割合で性能が高まるマイクロプロセッサの問題に対処するからである。メモリ階層（キャッシュ）および待ち時間隠蔽の技法によって、例示的な解決策が提供されるが、これらの方法は、アプリケーション・プログラマが、よい効率を達成する（すなわち、命令パイプライン・バブルを最小にする）ために非常に規則的なプログラムおよびメモリ参照パターンを使用することを必要とする。したがって、この技法は、現代のアプリケーション技法（たとえば、構造化されないメッシュおよびオブジェクト指向プログラミングに関する複雑なデータ構造）に適していない。第２の問題では、より高い電力密度が、そのようなギガＯＰＳスケール・コンピュータの高いコストおよび機器要件（電源、冷却、および床面積）に関連する。
【０００４】
プロセッサ・サイクル単位で測定されるメモリへの待ち時間を、少なくとも１桁減らし、削減されたコスト、電力、およびフットプリントでテラＯＰＳスケールでの超並列計算を最適化する、ウルトラスケール・スーパーコンピュータのアーキテクチャを提供することが、非常に望ましい。
【０００５】
多数のプロセッサを単一の特定用途向け集積回路（ＡＳＩＣ）に集積できる計算モデルを可能にするＶＬＳＩの技術的進歩を活用する、ウルトラスケール・スーパーコンピュータのアーキテクチャを提供することが、非常に望ましい。
【０００６】
さまざまなスケーラビリティのレベルを最適に達成するための処理ノードの独自の相互接続を含む、ウルトラスケール・スーパーコンピュータのアーキテクチャを提供することが、非常に望ましい。
【０００７】
グローバル・リダクションの計算、データの分配、同期化、および限られたリソースの共用を効率的に信頼性のある形で実行するように最適化された処理ノードの独自の相互接続を含む、ウルトラスケール・スーパーコンピュータのアーキテクチャを提供することが、非常に望ましい。
【非特許文献１】P. Kermani、L. Kleinrock、「Virtual Cut-Through: A New Computer Communication Switching Technique」、Computer Networks、Vol. 3, pp. 267-286、1979年
【非特許文献２】William J. Dally、Larry R. Dennison、David Harris、Kinhong Kan、Thucydides Xanthoppulos、「Architecture and Implementation of the Reliable Router」、Proceedings of HOT Interconnects II、pp. 122-133、1994年８月
【非特許文献３】Jose Duato、「A New Theory of Deadlock-Free Adaptive Routing in Wormhole Networks」、IEEE Transactions on Parallel and Distributed Systems、 Vol. 4、No. 12、pp. 1320-1331、1993年１２月
【非特許文献４】Steven L. Scott、Gregory M. Thorson、「The Cray T3E Network: Adaptive Routing in a High Performance 3D Torus」、In Proceedings of HOT Interconnects IV、1996年８月
【非特許文献５】C. Carrin、R. Beivide、J. A. Gregorio、F. Vallejo、「A Flow Control Mechanism to Avoid Message Deadlock in k-ary n-cube Networks」、Proceedings of the Fourth International Conference on High Performance Computing、pp. 322-329、1997年１２月
【非特許文献６】W. J. Dally、C. Seitz、「Deadlock-Free Message Routing in Multiprocessor Interconnection Networks」、IEEE Transactions on Computers、pp. 547-553、1987年５月
【非特許文献７】Kevin Lamb、Larry R. Dennison、William J. Dally、「Simultaneous Bidirectional Signaling for IC Systems」、Proceedings ICCD Conference、pp. 430-433、1990年１０月
【非特許文献８】Matthew Haycock、Randy Mooney、「A 2.5Bb/s Bidirectional Signaling Technology」、Hot Interconnects V Proceedings、pp. 149-156、1997年８月
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、削減されたコスト、電力、およびフットプリントでテラＯＰＳ以上のスケールの計算を達成する、超並列分散メモリ・スケーラブル・コンピュータのアーキテクチャの新しいクラスを提供することである。
【０００９】
本発明の他の目的は、相互接続の観点から処理ノードの最大限のパッキング密度を可能にする、テラＯＰＳのスケールの計算を達成する、超並列分散メモリ・スケーラブル・コンピュータの新しいクラスを提供することである。
【００１０】
本発明の他の目的は、多数のプロセッサを単一のＡＳＩＣに集積できる計算モデルを可能にするＶＬＳＩの技術的進歩を活用する、ウルトラスケール・スーパーコンピュータのアーキテクチャを提供することである。大規模サーバについて期待される信頼性、可用性、および保守性というシステム属性を有しながら、最小限の電力消費のために最適化され、現在のアーキテクチャから達成可能なものより優れたコスト対性能比を達成できる、単純な処理コアを使用することが好ましい。具体的には、各計算ノードに、１つのダイに集積された複数のプロセッサを使用するシステムオンチップＡＳＩＣが含まれ、各プロセッサは、すべてのシステム・リソースに完全にアクセスできる。単一ダイの多数のプロセッサによって、プロセッサの適応的分割（adaptive partitioning）が可能になって、アプリケーションごとに計算プロセッサまたはメッセージング入出力プロセッサなどとして機能し、好ましくは、アプリケーション内のさまざまなアルゴリズム相による機能の適応的分割を可能にするか、入出力プロセッサまたは他のプロセッサがあまり利用されていない場合に、計算または通信に参加することができる。
【００１１】
本発明の他の目的は、複数のネットワーク相互接続パラダイムを組み込んだウルトラスケール・スーパーコンピュータのアーキテクチャを提供することである。このパラダイムに、３次元トーラス・ネットワーク、グローバル・ツリー・ネットワーク、およびグローバル非同期シグナル・ネットワークが含まれることが好ましい。このアーキテクチャを用いると、並列処理メッセージ受渡アルゴリズムが、これらの相互接続を個別にまたは同時に活用できるようになり、相互接続の単一のパラダイムを用いては達成不能な性能レベルがもたらされる。追加の相乗効果が、これらの相互接続のいずれかまたはすべてに同時にアクセスでき、各相互接続をピーク容量で活用する、各ノード内の複数の処理要素の同時使用から派生する。
【００１２】
本発明の他の目的は、任意のノードが高帯域幅且つ短待ち時間で他のすべてのノードにブロードキャストし、グローバル・リダクション動作を実行する能力を含む、短待ち時間のグローバル通信機能性を有する超並列分散メモリ・スケーラブル・コンピュータのアーキテクチャの新しいクラスを提供することである。そのようなグローバル通信機能性は、グローバル加算演算またはグローバル最大値演算、および集合演算などの単純な算術機能のほかに、グローバル「ｏｒ」演算またはグローバル「ａｎｄ」演算を含むアプリケーションのクラスに有益である。
【００１３】
本発明の追加の目的は、ウルトラスケール・スケーラブル・コンピュータのアーキテクチャにおいて、超並列処理技術で新しい新規の技法およびアルゴリズムを実行できるようにする鍵となる相乗効果を提供することである。
【００１４】
本発明の他の目的は、グローバル集合演算およびファイルシステム入出力の両方を行うためにツリー相互接続として配置された単一の物理ネットワークを提供することであり、ここで、両方のタイプの通信が、ネットワークのコストを共用するために行われる。ツリー・ネットワークでは、追加的に入出力動作と集合トラフィックがトーラスから分離され、アプリケーションに任意の数の入出力サービス・ノードを接続する手段が提供されることが好ましい。これらの入出力ノードは、物理的および論理的にトーラスの外にあるので、アプリケーションは、トーラス・ノードの性能のバランスをくずさずに、入出力および外部対話を実行することができる。これは、かなり強化されたスケーラビリティにつながる。というのは、トーラス・ノードのすべてが、予測可能で反復可能な性能を示すが、入出力ノードが、非同期で予測不能な外部対話のすべての重荷を引き受けるからである。
【００１５】
さらに、これらの技法では、それぞれがより大きい計算機の特徴のすべてを保持する、柔軟に構成可能な個数のより小さい独立の並列コンピュータへのスーパーコンピュータの分割も提供される。このスーパーコンピュータの並々ならぬスケールを与えられれば、この分割技法によって、故障したラックまたはラックの部分（本明細書では「ミッドプレーン」と称する）を透過的に除去するか、それを避けてマッピングする能力が提供され、したがって、システムの残りの構成要素に干渉せずに、これらをサービスすることができる。
【００１６】
本発明の他の目的は、物理位置を介するイーサネット（登録商標）・アドレッシングおよびイーサネット（登録商標）へのＪＴＡＧインターフェースなどの保守性を追加することである。
【課題を解決するための手段】
【００１７】
本発明の１態様によれば、複数の独立ネットワークによってｎ次元で相互接続された複数の処理ノードを備えるスケーラブル超並列スーパーコンピュータであって、前記複数の処理ノードのそれぞれが、並列アルゴリズム動作を実行する時に必要な計算アクティビティまたは通信アクティビティを実行する１つ以上の処理要素を含み、前記複数の独立ネットワークが、前記複数の処理ノードの個々の間または前記複数の処理ノードの独立の分割されたサブセットの間での、ポイントツーポイント通信およびグローバル・ツリー通信を可能にする複数のネットワークを含み、前記複数の独立ネットワークの組合せが、並列アルゴリズムの処理性能を最適化するために、当該並列アルゴリズムの帯域幅要件および待ち時間要件に従って協同的にまたは独立的に使用される、スケーラブル超並列スーパーコンピュータが提供される。
【００１８】
好ましい実施形態では、ノード・アーキテクチャが、システムオンチップ（ＳＯＣ）技術に基づき、ここで、基本構成要素は、単一のＡＳＩＣを含む完全な処理「ノード」である。集合化される時に、これらの処理ノードのそれぞれを、「セル」と称し、複数の同一のセルから構成される超並列計算機のこの新しいクラスを、「セルラ」コンピュータとして定義できるようになる。各ノードに、複数（たとえば２つ以上）の処理要素が含まれ、各処理要素に、中央処理装置（ＣＰＵ）、複数の浮動小数点プロセッサ、および複数のネットワーク・インターフェースが含まれる。これらの複数の処理要素の間の高速低オーバーヘッド調整のために、新規の「ロックボックス」が提供されるのが好ましい。
【００１９】
ノードのＳＯＣ ＡＳＩＣ設計によって、計算性能、パッケージ化密度、低コスト、電力、および冷却の要件の最適なバランスが可能になる。さらに、ノードのＳＯＣ ＡＳＩＣ設計によって、新規のパッケージ化技術に関する先例のないレベルまでのスケーラビリティが可能になる。システムオンチップ・レベル集積によって、各ノードに関連するローカル・メイン・ストアを含むすべてのレベルのメモリへの短い待ち時間が可能になり、これによって、従来のスーパーコンピュータ・システムにますます影響する性能ボトルネックが克服される。各ノード内では、複数の処理要素のそれぞれを、個別にまたは同時に使用して、任意の時点で解決されるか実行される特定のアルゴリズムによる必要に応じて、計算または通信の任意の組合せを処理することができる。
【００２０】
動作の例示的モードでは、処理要素の１つが、アルゴリズムが必要とする計算を実行すると同時に、他の処理要素が、通信アクティビティを実行する。これによって、処理要素の１つの計算能力を使用して、複雑なメッセージ・マッチング・プロトコルをオフロードすると同時に、他の処理要素が独立に計算を継続することができる。しばしばメッセージング・プロトコルの複雑な形に関して、しばしば「リダクション機能」と称する特定の算術機能を、メッセージ・データの到着時にそのメッセージ・データに対して呼び出す必要がある。１つのプロセッサである入出力プロセッサを実現して、第２の計算プロセッサを煩わせることなく、これらの機能を実行することができる。さらに、入出力プロセッサの計算能力のゆえに、アプリケーションは、高められた計算能力を通信アクティビティに関連付ける新しいアルゴリズム開発をサポートする、任意の複雑なリダクション機能を定義することができる。並列アルゴリズムの特定のクラスまたは並列計算の部分に関して、このアーキテクチャで、両方の処理要素の能力を適用して、通信アクティビティに対して協同で作業することができる。たとえば、大量のデータの交換が必要な期間中に、処理要素の１つがデータを送信しており、他の処理要素がデータを受信していることがある。並列アルゴリズムの特定のクラスまたは並列計算の部分に関して、このアーキテクチャでは、期待される計算性能の約２倍を実現することができる。このアーキテクチャを用いると、複数のネットワークを同時に、独立に、または協同で使用することができる。システムオンチップ・レベルの集積のゆえに、このアーキテクチャを活用するように設計されたオペレーティング・システムと協同して、そのような動作のモードの間の交換を、最小限のオーバーヘッドで行うことができる。計算がメッセージ到着を待っている場合に、これを自動的に行うことができる。
【００２１】
複数のネットワーク・パラダイムが、個別にまたは同時に使用されるノードを相互接続するために実現され、このネットワーク・パラダイムには、並列アルゴリズム・メッセージ受渡用の３つの高速ネットワークが含まれる。追加のネットワークが、スーパーコンピュータ・ノードの、入出力サービスと、システム管理および構成サービスと、デバッグおよび監視サービスに使用される外部接続性のために設けられる。高速ネットワークに、ｎ次元トーラス構成、グローバル・ツリー構成、およびグローバル・シグナル構成が含まれることが好ましい。これらのネットワークのそれぞれの使用を、アルゴリズムの必要またはアルゴリズムの相に基づいて切り替えることができる。たとえば、計算の諸部分を、トーラスでまたはグローバル・ツリーの一部で実行することができ、これによって、複数のネットワークを新規の形で同時に使用する新しい並列アルゴリズムの開発が容易になる。
【００２２】
トーラス・ネットワークに関しては、これが立方体または長方形の通信および分割をサポートする３次元設計であることが好ましい。３次元設計を用いると、多数の物理的現象の計算シミュレーションのトーラス・ネットワークへの直接マッピングが可能になる。しかし、より高い次元数すなわち、４、５、または６次元トロイドを用いると、より多くのチップ対チップ接続およびかなり高い配線コストと引き換えに、より短くより短待ち時間のパスが可能になる。より低い次元は、より長い待ち時間とより少ないチップ対チップ通信をもたらす。
【００２３】
さらにバーチャル・カットスルー（Virtual Cut-Through、ＶＣＴ）パケットに基づく交換網を使用する最小パス適応ルーティング（Minimal-Path Adaptive-Routing）によって、ネットワーク輻輳のすべての点を避ける自動的な経路指定による持続的な高帯域幅がもたらされる。さらに、それから利益を得る並列計算の決定的最短パス経路または高優先順位メッセージがもたらされる。
【００２４】
さらに、トーラスは、そのネットワークに注入された単一のパケットを複数の宛先に一斉に送信することができる、「クラス経路指定」技法を使用する自動マルチキャストを提供する。ネットワークは、２つの動的バーチャル・サーキットおよび２つのデッドロック回避用のエスケープ「バブル」サーキット（escape "Bubble" circuit)を使用することによってデッドロック・フリーであることが好ましい。トーラス・ネットワークは、新規のアービトレーション・ポリシを使用して、超並列スケーラブル・システムでの短待ち時間および高スループットを達成する。ポイントツーポイント・トークン・ベース・フロー制御によって、ネットワーク・バッファリングが最も有効に使用されると同時に、トラフィックがホット・スポットから分散される。パケットの保証された信頼性のある配信は、さらに、ヘッダに対する別のＣＲＣエラー検出と、破壊されたネットワーク・パケットの自動再送信用の完全なパケットＣＲＣエラー検出を使用することによって、トーラス内で使用可能にされる。
【００２５】
グローバル・ツリー・ネットワークに関しては、その主要な機能性の１つが、グローバル・ブロードキャスト（ダウンツリー）動作およびグローバル・リデュース（global reduce）（アップツリー）動作をサポートすることである。追加の機能性を提供して、入出力、プログラム・ロード、システム管理、並列ジョブ監視、およびデバッグに使用されるプログラマブル・ポイントツーポイント・メッセージングまたはサブツリー・メッセージングをサポートする。この機能性によって、並列計算に干渉しないように、「サービス」ノードまたは入出力ノードをトーラスから分離できるようになる。すなわち、トーラス内のすべてのノードが、最大の計算速度で動作できると同時に、サービス・ノードが、非同期外部対話をオフロードする。これによって、計算動作を実行するすべてのノードが、最大の一貫した速度で動作するので、並列計算のスケーラビリティおよび反復可能度が保証される。グローバル・ツリーが、リダクション・メッセージング動作を実現する数学関数の実行をサポートすることが好ましい。グローバル・ツリー・ネットワークが、さらに、複数の独立の仮想チャネルをサポートし、複数の独立のグローバル動作を同時に進行できることが好ましい。この設計は、構成可能であり、サービス・ノードに対する計算ノードの比率は、並列計算の要件に応じて柔軟である。代替パッケージ化戦略を用いると、極端にデータ集中型の計算に理想的であるように、すべてサービス・ノードまたはすべて入出力ノードから構成される計算機を含むすべての比率が可能になる。
【００２６】
第３のネットワークに、グローバル論理「ＡＮＤ」機能性またはグローバル論理「ＯＲ」機能性を提供するために複数の非同期「シグナル」の通信をサポートするグローバル・シグナル・ネットワークが含まれる。この機能性は、たとえば、区画（partition）内のすべてのノードが、計算の特定の点または並列アルゴリズムの相に到達したことをすべてのノードに示すグローバル・バリア動作（「ＡＮＤ」）と、たとえば区画内の１つ以上のノードが特定の状態または条件に達したことをすべてのノードに示すグローバル通知（「ＯＲ」）機能性を提供するために、特に設けられる。このネットワーク・タイプを使用することによって、新規の並列アルゴリズム、調整、およびシステム管理の技術が可能になる。
【００２７】
さらなる独立ネットワークに、外部サーバおよびホスト計算機へのサービス・ノードまたは入出力ノードの接続を提供する外部入出力ネットワーク（ギガビット・イーサネット（登録商標）など）と、計算機全体のすべてのノードに関する完全な低水準のデバッグ、診断、および構成の機能を提供し、独立のホスト計算機からリモートで実行することができるＩＥＥＥ １１４９．１ Joint Test Access Group（ＪＴＡＧ）ネットワークが含まれる。ＪＴＡＧネットワークの使用が、並列計算機のノードで実行されるソフトウェアの協力と共にまたはそれなしで動作することが好ましい。ネットワークが、計算機内のすべてのノードまたはノードのサブセットを同時にアドレッシングする能力を提供するので、ノードは、それが実行できる任意のソフトウェアに対して透過的にデバッグまたは検査することができる。この診断およびデバッグのレベルは、ハードウェアおよびソフトウェアの両方の膨大なレベルのスケーラビリティに関する実現技術である。
【００２８】
新規のパッケージ化技術が、複数ネットワーク構成および複数プロセッサ構成を可能にする先例のないレベルのスケーラビリティを可能にするスーパーコンピュータ・システムに使用される。一実施形態では、複数の計算ノードおよび外部入出力ネットワークが可能にされる任意選択の入出力ノードを含む複数ノードの「ノード・カード」が提供される。この形で、外部入出力ノードに対する計算ノードの比率を、所望の数の入出力ノードを有するユニットを「ミッドプレーン」ユニットに移植することによって、柔軟に選択することができる。高速シリアル・シグナリングが、新規の適応的低電力データ・キャプチャ技法を使用して行われる。このパッケージ化技術によって、複数のサブネットワークの分割可能性が可能になり、複数の独立の問題に対する同時作業が可能になる。したがって、他の区画に干渉しない、より小さい開発区画、テスト区画、およびデバッグ区画を生成することができる。
【００２９】
ミッドプレーンとラックの間の接続は、分割に基づいて動作可能になるように選択される。セグメント化によって、さらに、分離された区画が作成され、これらの区画のそれぞれが、すべての相互接続のすべての機能を維持し、予測可能で反復可能な性能が提供される。これによって、同一のサイズおよび形状のすべての区画で有効なままである、微細な粒度のアプリケーションの性能チューニングおよびロード・バランシングが可能になる。極度に微妙なエラーまたは問題にであう場合に、この分割アーキテクチャによって、大スケール並列アプリケーションの正確な反復可能度が可能になる。本発明によって可能にされる分割可能性によって、ネットワーク構成を考案して、スーパーコンピュータの機能しないラックまたはミッドプレーンを避けるかそれを避けてマッピングし、その結果、残りの構成要素が動作を継続しながら、これらをサービスできるようにするために、セグメント化する能力が提供される。
【００３０】
有利なことに、本発明の新規のパッケージ化およびシステム管理の方法および装置は、先例のないレベルのスケーラビリティまでの計算ノードの集合をサポートし、並列計算の「グランド・チャレンジ（Grand Challenge）」問題の計算をサポートし、高性能計算カーネルに、有限差分方程式、密または疎の線形方程式の解、またはフーリエ変換が含まれ、多次元グリッドに自然にマッピングすることができる大きいクラスの問題に対処する。本発明が特に適する問題のクラスは、生命科学の分野にある。
【発明を実施するための最良の形態】
【００３１】
本発明のスーパーコンピュータのアーキテクチャは、相互接続された３次元トーラスの形であり、広範囲のアプリケーションに数百テラＯＰＳ（数兆浮動小数点演算毎秒）程度の処理能力を与えるように設計されている。本明細書で説明する例示的実施形態では、スーパーコンピュータのアーキテクチャに、６４×３２×３２個のトーラスとして編成された６４ｋ個の処理ノードが含まれ、各計算ノード１２が、図１の３次元トーラス・サブキューブ部分１０に示されているように、６個の両方向トーラス・リンク１３を介して６個の隣接するノード１２に接続される。しかし、異なるトーラス構成のより多くの処理ノードを含む他のアーキテクチャが企図されていることを理解されたい。
【００３２】
本明細書で詳述するように、各ノード１２に、単一のＡＳＩＣおよび複数のＳＤＲＡＭ−ＤＤＲメモリ・チップが含まれる。ノードは、少なくとも６つのネットワークを介して相互接続され、これらのネットワークの最大集合帯域幅は、ノードを物理的な３次元トーラスにマッピングする最も近い隣接リンクである。説明される実施形態では、相互接続構造に、非対称性を有しないことが好ましいトーラスが含まれる。というのは、ノードが、同一の帯域幅およびほぼ同一の待ち時間で、物理的に隣接するラックに配置された物理的に近いノードと通信するからである。これによって、より単純なプログラミング・モデルが促進される。ノードを動作させるＡＳＩＣは、システムオンチップ（ＳＯＣ）技術に基づき、システムが必要とするすべての機能性が組み込まれる。これには、４Ｍｂ以上の極端に高帯域幅の組込みＤＲＡＭが含まれる。ノード自体は、物理的に小さく、超高密度の処理およびコスト対性能比を最適化することが可能になっている。
【００３３】
説明される実施形態では、システム・パッケージ化に、両面基板または「ミッドプレーン」上の５１２個の処理ノードが含まれる。各ノードに、メッセージ受渡動作を処理する第２プロセッサが含まれる。さらに、所定の複数の処理ノードに関連するのが、専用の入出力ノードである。この入出力ノードは、計算ノードに出入りする入出力通信を処理するための、拡張外部メモリを有する二重プロセッサを含む。各入出力ノードは、基本的な入出力タスクおよび高性能リアル・タイム・コードに必要なすべての機能を処理することができる小さいオペレーティング・システムを有する。コンパイル、診断、および分析には、ホスト計算機が必要である。入出力ノードには、計算ノードの層の上の、ホスト通信を処理するソフトウェア層が含まれる。ホスト計算機の選択は、アプリケーションのクラス、その帯域幅要件、および性能要件に依存する。
【００３４】
ノードの概要
図２は、本発明の原理による単一の計算ノードＡＳＩＣ２０を示すブロック図である。各ノード１２は、コンピュータのすべての機能を単一のＡＳＩＣ２０に集積し、ノード・サイズおよび電力消費の劇的な削減を可能にする、システムオンチップ・プロセスに基づくことが好ましい。スーパーコンピュータでは、これをさらに活用して、ノード密度を高め、これによって、計算機の総合的なコスト対性能比を改善することができる。図２からわかるように、この設計のＡＳＩＣは、システム内で計算ノードおよび入出力ノードの両方として機能することができるが、このＡＳＩＣには、２つの処理コア２２ａおよび２２ｂが含まれ、この処理コアのそれぞれが、「二重」浮動小数点ユニット２４ａおよび２４ｂを有し、この「二重」浮動小数点ユニットのそれぞれに、プロセッサ・サイクルあたり４浮動小数点演算のピーク性能を与える２つの結合された標準浮動小数点ユニットが含まれる。一実施形態では、ノードの組込み処理コアが、IBM microelectronics社から入手可能なＰｏｗｅｒＰＣ４４０であるが、このコアの次世代版を、技術的改善として使用することができる。ＰｏｗｅｒＰＣ４４０コアの機能性の説明は、http://www.ibm.com/chips/products/powerpcにある。「二重」ＦＰＵ２４ａおよび２４ｂでは、データパスを６４ビットから１２８ビットに増やして、４倍長ワード浮動小数点のロードおよびストア（すなわちデータ移動）を可能にすることによって、データ帯域幅が増やされる。さらに、このユニットは、これらの実行ユニットを実数および虚数の複合実行体の対にスプリットすることによって、２つの浮動小数点積和命令を１サイクルでディスパッチし、実行できるように設計されている。新しい設計の（単一命令複数データ）ＳＩＭＤ様の命令によって、この複合実行体の対に、１サイクルあたり２つの浮動小数点積和を実行する能力が与えられると同時に、通常のスカラ命令では、実数部または虚数部だけが使用される。表１に示された例として、３つの複素数Ａ、Ｂ、およびＣに対して演算Ａ×Ｂ＋Ｃを実行するコードを検討されたい。計算の前に、レジスタａｒおよびａｉに、Ａの実数部および虚数部が含まれ、同様に、レジスタ対ｂｒおよびｂｉとレジスタ対ｃｒおよびｃｉに、ＢとＣの値が保持される。コンパイラが、２つの命令だけを必要とし、結果をレジスタ対ｄｒおよびｄｉに置く、下記のコードを自動的に生成することができる。
【００３５】
【表１】
0003980488.tif 000002
【００３６】
ノード１２では、さらに、他の機能がＡＳＩＣ２０に組み込まれる。組込み処理コアおよび浮動小数点コアのほかに、このシステムには、組込みＤＲＡＭ３５、統合外部ＤＤＲメモリ・コントローラ４３、メッセージ・プロセッサ、イーサネット（登録商標）・アダプタ４５および４８、ならびに、任意の２つのノードが短待ち時間で通信できるようにするネットワーク・リンク・カットスルー・バッファおよび経路指定制御ブロック２６が含まれる。計算ノード１２には、特に、ＩＢＭ ＰｏｗｅｒＰＣ４４０など、それぞれをメッセージ処理および計算動作に使用することができる２つの組込みコアが含まれる。このアーキテクチャは、さらに、バーチャル・カットスルー経路指定をサポートする。
【００３７】
さらに、図２からわかるように、バーチャル・カットスルー経路指定は、ネットワーク・アダプタの除去を可能にするためにＡＳＩＣに集積されるハードウェア・ブロック２６でサポートされる。仮想チャネル経路指定ネットワークは、２つの動的チャネルおよび２つの決定的チャネルでサポートされるのが好ましい。
【００３８】
図３は、パケット経路指定用のリンク・バッファおよび仮想経路指定ブロック２６を示す詳細なブロック図である。データ・フローは、左から右に進み、単一の入力１７および出力チャネル１９だけが示されている。アービトレーション論理要素３７ａおよび３７ｂが、２ステージ処理を介してハードウェアで実行される出力チャネル・アービトレーション用に設けられる。第１ステージ３７ａは、入力仮想チャネルにローカルであるが、第２ステージ３７ｂは、出力チャネルにローカルである。図３からわかるように、ブロック２６には、ネットワークへ／からパケットを注入／受信するための複数の出力／入力ＦＩＦＯが含まれ、これによって、全６つの両方向リンク・ポートの完全な同時利用が可能になる。
【００３９】
図２に戻ると、スクラッチＳＲＡＭ３９が、さらに、高性能プロセッサ間通信機構として働くために設けられる。プロセッサ２２ａおよび２２ｂの両方が、ＳＲＡＭへの同等のアクセスを有し、これは、「計算」プロセッサと「メッセージ」プロセッサの間のネットワーク通信記述子の効率的な交換にクリティカルである。スクラッチＳＲＡＭのサイズは、３２Ｋ〜１２８Ｋバイト程度の範囲とすることができる。プロセッサ間通信の一般的なボトルネックは、ソフトウェア・ロックの交換なので、ノード・メモリ・システムに、特にロック交換の処理に合わせて調整された共用リソースが含まれる。すなわち、「ロックボックス」４０が、これらの複数の処理要素の間のすばやい低オーバーヘッド調整を可能にするために設けられる。
【００４０】
図２に戻ると、さらに、低コストの標準的なＤＤＲ外部メモリの使用を可能にするＤＤＲコントローラ４３が設けられる。前述のように、この外部メモリへの待ち時間は、クリティカルな設計パラメータの１つであり、異なるメモリ構成を、内部ＤＤＲコントローラを用いてサポートすることができ、これによって、多数のシステム・メモリ構成が可能になる。１つのターゲット・メモリ・システムは、２５６ＭＢのＤＤＲメモリに基づき、１２８ビット・データ・インターフェースが、プロセッサ周波数の１／２または１／３で稼動する。追加メモリが、ＥＣＣおよび潜在的に事前取出しポインタをサポートするために設けられる。入出力ノードとして機能する時に、ＡＳＩＣは、ＤＤＲコントローラの柔軟性を活用し、たとえば５１２ＭＢなど、より大きい外部ＤＤＲメモリをサポートする。
【００４１】
好ましい実施形態では、同一の計算ノードＡＳＩＣ２０を、ファイルサーバ通信および入出力動作を処理する、計算ノードのサブセット、たとえば６４個のノードに関連する入出力ノードとして使用することができる。すなわち、入出力ノードは、計算ノードに非常に似ているが、外部メモリ構成に関してのみ、および、たとえばギガビット・イーサネット（登録商標）などの外部ネットワーク・インターフェースに加えて、異なるものとすることができる。計算ノードは、統合されたＧｂイーサネット（登録商標）（共通のＡＳＩＣを共用する）を有することができるが、説明において、Ｇｂイーサネット（登録商標）・インターフェース４８は、サービス機能性および入出力機能性を提供するノードに設けられる。すべてのノードが、１００Ｍｂイーサネット（登録商標）・ネットワーク４５への直接接続性を有する。
【００４２】
ノードＡＳＩＣには、さらに、外部ファイル・システムへの接続に必要な入出力と、ブート、デバッグ、およびＲＡＳサポートに必要な入出力が含まれる。図２に示されているように、このために統合することができる２つのネットワークがある。１）論理イーサネット（登録商標）機能を有する１００Ｍｂ／ｓイーサネット（登録商標）４５を、ＡＳＩＣ内に集積することができる。この形で、各ノードＡＳＩＣが、独立にアドレス可能であり、ホスト計算機が、システム内のすべてのノードに直接にアクセスできるようになる。これは、ブートおよび診断に有用な、極度に強力なツールである。他の実施形態では、外部構成要素の数およびコストを減らし、信頼性を高めるために、複数のノードを、メディア独立インターフェース（Media Independent Interface：ＭＩＩ）層で直接に８方向計算カード上で接続することができる。そして、２）ノードＡＳＩＣに集積される、Ｇｂイーサネット（登録商標）論理層を有するＧｂイーサネット（登録商標）４８。このネットワークは、入出力ノードで使用され、Ｇｂイーサネット（登録商標）が、ＡＳＩＣ内のＰＬＢ（プロセッサ・ローカル・バス）上に存在することが好ましい。これによって、入出力ノード内の入出力プロセッサが、ごくわずかなオーバーヘッドで、ＤＭＡ転送をセット・アップし、メッセージの処理に戻れるようになる。さらに、図２からわかるように、高速ファイルおよびホスト計算機の入出力に、InfiniBand（商標）リンク４９によって適応することができる。
【００４３】
前述のように、このコンピュータでは、入出力、デバッグ、およびさまざまなタイプのプロセッサ間通信に６つまでの相互接続ネットワークが使用される。適当な低コストのスイッチおよびＲＡＩＤシステムの使用可能性に応じて、ギガビット・イーサネット（登録商標）またはInfiniBand（商標）が、ローカルに接続されたディスク・ストレージをサポートするのに使用される。高速のまたは１００Ｍｂ／ｓイーサネット（登録商標）が、診断、デバッグ、および初期化のいくつかの態様に使用される。２種類の高帯域幅且つ短待ち時間のネットワークによって、システム「ファブリック」が作られ、ＪＴＡＧが、内部プロセッサ要素へのアクセスに使用される。したがって、ノード内で、イーサネット（登録商標）ＭＩＩ層（ＡＳＩＣピンに直接に）と内部ＪＴＡＧコントローラ（図示せず）の間のインターフェースが、組込みの分野でのデバッグを容易にするために、さらに集積される。
【００４４】
ノード・メモリ
計算ノードのメモリ・システムには、オンチップ・キャッシュ階層、オフチップ・メイン・ストア、および２つのＡＳＩＣプロセッサ２２ａおよび２２ｂの間のロックおよび通信に関する最適化されたオンチップ・サポートが含まれる。メモリ・システムは、後述するように、ターゲット・アプリケーションの範囲にわたってピーク性能を発揮するように設計される。計算機の集合メモリは、複数コンピュータの方式で完全に分散され、ノードの間のハードウェア共用はない。各ノードは、たとえば、２５６メガバイトの物理メモリを所有し、６４Ｋ個のノードを有するシステムでは、合計１６テラバイトがもたらされる。図２からわかるように、ノード１２の物理メモリは、ＡＳＩＣ内の２つのプロセッサによって共用され、ハードウェアによって、任意選択のコヒーレンシ・サポートが提供される。
【００４５】
図４に、単一ノードのメモリ・システム２５の基本構成要素を示す。図２および図４からわかるように、第１レベル（Ｌ１）キャッシュ２９ａおよび２９ｂが、それぞれコア・マクロ２２ａおよび２２ｂ内に設けられる。第２レベルＬ２Ｒキャッシュ３０ａおよび第２レベルＬ２Ｗキャッシュ３０ｂは、相対的により小さく、基本的に、Ｌ１データの事前取出しバッファおよびライトバック・バッファとして働く。第３レベル（Ｌ３）キャッシュ３５は、より大きく、命令とデータによって共用され、ほとんどのアプリケーションの作業セットへの高帯域幅でかつ低電力のアクセスを提供する。最後に、ノーダル・メモリ・システムに、オフチップ・ダブルデータ・レート（ＤＤＲ）ＤＲＡＭからなるメイン・ストア３８が含まれる。具体的には、Ｌ１命令キャッシュ（Ｉキャッシュ２７ａおよび２７ｂ）は、各４４０コア・マクロの一部であり、データ・キャッシュ２９ａおよび２９ｂから分離される。例示的実施形態では、Ｉキャッシュが、３２Ｋバイトのサイズであり、３２バイトのライン・サイズを有する。Ｉキャッシュは、６４ウェイのセットアソシアティブ型であり、１６セットが含まれる。ラインは、仮想アドレスタグを用いて記憶され、ラウンドロビンの順序で置換される。イネーブルされる場合に、Ｉキャッシュは、キャッシュ・ミスに続く次の３ラインを投機的に事前取出しすることができる。図２からわかるように、Ｉキャッシュ・ライン・フィルは、４４０コア２２ａおよび２２ｂのそれぞれから発する専用の１２８ビット・バスを介して実行される。これらのフィルが、Ｌ２キャッシュを迂回し、Ｌ３キャッシュからサービスされ、したがって、Ｌ２キャッシュへのデータ・アクセスに干渉しないことが好ましい。Ｌ１データ・キャッシュ（Ｄキャッシュ２９ａおよび２９ｂ）は、４４０コア・マクロの一部であり、命令キャッシュから分離される。Ｌ１データ・キャッシュは、Ｉキャッシュと同一の基本編成を有するが、物理的にタグ付けされる。一実施形態では、Ｌ１データ・キャッシュが、３２Ｋバイトのサイズであり、３２バイトのライン・サイズを有し、それぞれ６４ウェイの１６セットを有するセットアソシアティブ型である。Ｉキャッシュと同様に、Ｌ１データ・キャッシュでは、ラウンドロビン置換ポリシが使用される。データ・キャッシュでは、２つの別々の１２８ビット・データ・バスが設けられ、一方は読取用、他方は書込用であり、それぞれがプロセッサ周波数で稼動する。図２からわかるように、Ｌ１ Ｄキャッシュ・バスは、超短待ち時間のＬ２ヒット・アクセスのために、Ｌ２キャッシュに直接に接続される。Ｌ１キャッシュとＬ２キャッシュの間のライン転送は、２つの連続する１６バイト転送を必要とし、最適には、クリティカル・ワードが最初に返される。４４０メモリ・システムを用いると、メモリのページをライトバック・キャッシュ可能、ライトスルー・キャッシュ可能、またはキャッシュ禁止としてマッピングできるようになる。Ｄキャッシュは、スヌープまたはスナーフをサポートせず、したがって、ライトバックとしてキャッシングされるページは、外部から無効化または更新することができない。Ｄキャッシュは、単一サイクルのヒット待ち時間を提��し、７００ＭＨｚの公称設計周波数で、たとえば、ピーク・フィル・レートは、約１１．２Ｇバイト／秒である。
【００４６】
図４からわかるように、Ｌ２キャッシュ３０ａおよび３０ｂには、読取専用ライン・ストア（Ｌ２Ｒ）および書込バッファ（Ｌ２Ｗ）が含まれる。４４０コアのそれぞれが、それ自体のＬ２構造を有するが、ハードウェアによって、この２つの間のコヒーレンスを維持することができる。したがって、Ｌ１でライトバックとしてキャッシングされるデータは、２つのコアの間でコヒーレントに共用されるものとすることができる。Ｌ２Ｒは、非常に小さく、基本的に、Ｌ１ライン・フィルの事前取出しバッファとして働く。Ｌ２Ｒは、完全アソシアティブ型であることが好ましく、８つのラインが含まれ、各ラインは、６４バイトのサイズである（すなわち、Ｌ１ラインのサイズの２倍）。Ｌ２Ｒヒットは、３サイクルの待ち時間を有すると期待され、Ｌ１キャッシュのピーク・フィル・レートと一致する。Ｌ２書込バッファ（Ｌ２Ｗ）の存在によって、コアが、ライトバックを非常に速やかに完了できるようになり、より大きいＬ２／Ｌ３ライン・サイズを、実行中のストアのまえに集合化できるようになる。Ｌ２キャッシュ３０ａおよび３０ｂの両方によって、ある形式の事前取出しが実現される。
【００４７】
Ｌ３キャッシュ３５は、IMB CU-11 Embedded DRAM（ＥＤＲＡＭ）から構成され、一実施形態では、４メガバイト以上のサイズである。キャッシュの編成に関する複数の任意選択が可能である。たとえば、一実施形態では、両方のプロセッサによって共用される単純なセットアソシアティブ型のキャッシュが実現される。他の実施形態では、それぞれが共用される２つのキャッシュが実現される。２キャッシュ編成によって、両方のプロセッサが、最良の状況でＬ３に同時にアクセスできるようになる。直接アクセスのためにＬ３キャッシュの１部分を分離する能力が、さらに可能である。
【００４８】
たとえば、７００ＭＨｚの公称設計コア周波数で、Ｌ１キャッシュは、１．４ナノ秒サイクルごとに１６バイトのピーク・フィル・レートを維持することができる。ＥＤＲＡＭマクロによって、ページ・モードで５ナノ秒ごとに３２バイトのデータを供給することができる。したがって、Ｌ１キャッシュのピーク・フィル・レートに一致するために、並列の２つのＥＤＲＡＭマクロが必要であり、その結果、Ｌ３キャッシュの６４バイトの最小ライン・サイズがもたらされる。Ｌ３キャッシュとＬ２キャッシュの間のデータパスは、コア周波数の半分で動作することができ、１サイクルごとに３２バイト（２５６ビット）を返すことができる。やはり、Ｌ３キャッシュを、同時プロセッサ・アクセスのために分割することができ、その結果、４バンクのＥＤＲＡＭマクロを必要とする実施形態がもたらされる。直接マッピング型であるので、４Ｍバイトのキャッシュに、期待される２５６Ｍバイトのメイン・ストアの１／６４を記憶することができ、その結果、６ビットのタグ・サイズがもたらされる。６４バイトのライン・サイズを仮定すると、ディレクトリ３３が、それぞれが６ビットの６４Ｋ個の項目を有し、３８４ＫビットのＳＲＡＭが必要になる。キャッシュが、４ウェイのセットアソシアティブ型である場合には、ラインの数は同一であるが、タグ・サイズが８ビットに増える。ノード・メモリ・システム２５には、さらに、ボトルネックを避けるためのプロセッサ間通信および交換のためのロックを含む、共用リソース４１が含まれる。
【００４９】
メイン・ストアは、ノードＡＳＩＣの外部であり、例示的実施形態では、２５６Ｍバイトのサイズである。メイン・ストアは、標準的なダブルデータ・レート・シンクロナスＤＲＡＭ（ＳＤＲＡＭ−ＤＤＲ）デバイスから構築される。
【００５０】
システム相互接続（タイプおよびトポロジ）
イーサネット（登録商標）およびＩＥＥＥ１１４９．１（ＪＴＡＧ）
一実施形態では、ホスト計算機５０または外部サーバにとって、スーパーコンピュータが、２つの標準ネットワークを介してアクセスされる多数のノード（たとえば６４ｋ個）に見える。一方のネットワークが、「高速」または１００Ｍｂイーサネット（登録商標）９８であり、これは、すべてのノードへの初期プログラム・ロードおよびデバッグ・アクセスに使用され、これによって、ＡＳＩＣノードのホスト制御が、非常に単純で簡単になる。さらに、ＪＴＡＧは、たとえばIBM RiscWatch（商標）ソフトウェア層を介してプロセッサのレジスタにアクセスできるようにするものであるが、ＡＳＩＣ内で１００ＭＨｚイーサネット（登録商標）・ポート４５に接続され、標準イーサネット（登録商標）Ｉ／Ｐを使用してアクセス可能である。
【００５１】
グローバル・コンバイニング・ツリー
図５に、ツリー構造状に計算ノード１２を相互接続し、本発明によるグローバル・シグナルおよび外部ネットワーク接続を含む、グローバル・コンバイニング・ツリー・ネットワーク５９と称する第２のネットワークを示す。このツリーには、グローバル・コンバイニング・ツリーを介して所定の数の計算ノード１２に接続された、関連する入出力ノード１２’が含まれる。図５に示された好ましい実施形態では、１つの入出力ノード１２’が、６４個の計算ノード１２のサービスおよび入出力動作を提供するのに専用化されている。この計算ノードに対する入出力ノードの比率は、スーパーコンピュータの物理的パッケージ化を最適化するために構成可能であることを理解されたい。すなわち、パッケージング設計によって、代替構成を可能にし、サービス・ノードに対する計算ノードの比率を、並列計算の要件に応じて変更することができる。好ましい実施形態では、パッケージ化技術によって、２５６：１から８：１までの比率がサポートされる。代替パッケージ化戦略を用いると、すべてサービス・ノードまたはすべて入出力ノードからなる計算機を含む、極端にデータ集中型の計算に理想的な任意の比率が可能になる。
【００５２】
図５からわかるように、１００Ｍｂ／ｓイーサネット（登録商標）９８によって、計算ノード１２および関連する入出力ノード１２’の両方が、大きいネットワークに、たとえばスイッチ１８を介して接続される。各ノードＡＳＩＣは、一意のＭＡＣアドレスを有し、これによって、ホスト計算機５０がすべてのノードと通信できる。このＭＡＣアドレスに関連するＴＣＰ／ＩＰアドレスに、スーパーコンピュータ内の当該ノードのエンコードされた幾何学的位置が含まれる。したがって、たとえば、故障したノードからの診断レポートを、当該ノードのＴＣＰ／ＩＰアドレスを介してそのラックの行、列、およびスーパーコンピュータのラック内の位置まで直接にトレースすることができる。高速ネットワークと結合されると、計算機内のすべてのノードの状態を同時に凍結する能力がもたらされる。８１９２０個の計算ノードおよび１２８０個の入出力ノードを含むスーパーコンピュータの一実施形態として、これは、先例のないレベルの診断、デバッグ、および検査をもたらす。
【００５３】
入出力ノード１２’として機能する時に、ＡＳＩＣ２０に、当該ノードに対するローカル・ディスクとして働く大きいＲＡＩＤシステム５５にアクセスするのに使用することができる、ギガビット・イーサネット（登録商標）９９またはInfiniBand（商標）などの類似するインターフェースが含まれる。ＲＡＩＤシステム５５は、冗長性のために二重化され、スイッチ（図示せず）を介し、ギガビット・イーサネット（登録商標）９９またはInfiniBand（商標）の１０２４個のチャネルを介してシステムに接続される。かかるスイッチは、ホストにもインターフェースし、これによって、ホストが、単純なイーサネット（登録商標）Ｉ／Ｐトランザクションを介してシステム・ノードまたはＲＡＩＤシステム５５のいずれかにアクセスできるようになる。計算機の内部では、追加の外部メモリを有するＡＳＩＣである専用の入出力プロセッサによって、ギガビット・イーサネット（登録商標）／InfiniBand（商標）接続が終端される。どの入出力ノードも、最大のギガビット速度でＲＡＩＤディスクを読み取るか書き込むことができる。例示的実施形態では、システムの６４ｋ個のノードが、１テラビット毎秒以上の、ディスクまたはホストへのピーク集合的入出力帯域幅を有するように構成される。
【００５４】
この２分木風のグローバル・コンバイニング・ツリー５９は、スーパーコンピュータの全体に延び、データを任意のノード１２から他のすべてのノード１２（ブロードキャスト）またはノード１２のサブセットに短待ち時間で送信できることが好ましい。ツリーが、３つより多いポート（３ポートは、バイナリ（２入、１出）を意味する）を有することができることを理解されたい。トーラスと同様に、高次元のツリーすなわち４Ｄ、５Ｄ、または６Ｄのツリーによって、より多数のチップ対チップ接続およびかなり高い配線コストを犠牲にして、より短くより短待ち時間のパスが可能になる。より低い次元によって、より長い待ち時間とより少ないチップ対チップ通信がもたらされる。メッセージ受渡は、グローバル・コンバイニング・ツリー５９上でサポートされ、各ＡＳＩＣ内の前記プロセッサのいずれかによって制御され、計算ノードと独立に全対全（all-to-all）の通信などの集中型動作が進行できるようになる。このツリーの各分岐は、送信方向と受信方向の両方で、１．４ＧＢ／ｓまたは２バイト毎プロセッサ・サイクルの好ましいターゲット帯域幅を有する。
【００５５】
ツリー５９に組み込まれるハードウェア機能性は、整数の加算、減算、最大値、最小値、ビット単位のＡＮＤ、ＯＲ、ＸＯＲ、およびブロードキャストである。これらの機能は、最短の待ち時間が可能な形で実現される。たとえば、加算機能が行われると、ワードの最下位バイトがグローバル・ネットワークに最初に送信される。この下位バイトは、他のソースからの他のバイトに（ハードウェアで）即座に加算され、その結果が、ツリー５９の次のレベルにシフト・アウトされる。このように、上位バイトがシフト・アウトされる前に、６４ビット・ワードが、ツリー５９の複数の層を既に進んでいる。これは、計算機の全体にわたる非常に短い待ち時間の加算の可能性をもたらす。この短待ち時間の加算は、グローバル内積を必要とする疎な線形方程式の反復解法にクリティカルである。
【００５６】
このツリー５９は、データをリング状に送り出すのではなく、データのグローバル・ブロードキャストに使用することができる。１対多の通信では、これは、ソフトウェアの観点から、最近傍３Ｄリンク・ネットワークに対するかなりの改善である。ブロードキャスト機能性は、３Ｄリンク・ネットワークを介する通信と同時である必要がある１対多の転送がある時にも、非常に有用である。ブロードキャストは、３Ｄリンク・ネットワークを介して処理することもできる。
【００５７】
最後に、計算機の全体にわたるグローバル浮動小数点の和を、２分木を２回使用することによって、数マイクロ秒で実行することができる。１回目には、すべての指数の最大値を入手し、２回目には、シフトされた整数のすべてを、グローバル動作で加算する。
【００５８】
グローバル・コンバイニング・ツリーとバリア・ネットワーク
図６に、本発明の原理によるグローバル・コンバイニング・ツリーおよびバリア・ネットワーク６０を示す。グローバル割込およびバリア・ネットワーク６０（図６）の機能性は、グローバル・コンバイニング・ツリー・ネットワーク５９（図５）の機能性に密接に関連し、それと並列に「サイドバンド」ネットワークとして機能することができる。たとえば、グローバル「ｏｒ」機能が、割込みであり、グローバル「ａｎｄ」機能が、「すべて待機（all wait）」である。これらの機能は、グローバル割込およびバリア・ネットワーク６０で、グローバル非同期シグナルを生成し、通信することによって使用される。かかるグローバル非同期シグナルは、（１）１つの論理区画（たとえばサブツリー・ネットワーク）内の各ノードがセットおよび検出できる信号と、（２）すべての入力信号のグローバルＡＮＤまたはグローバルＯＲを実行するハードウェア論理機能と、（３）結果を収集し、各ノードに分配するグローバル・ネットワークとを含む。複数の異なる信号が、大規模システムで共存でき、この概念を、多数の形で実現することができる。単一ビット単位の差動対が、グローバル・コンバイニング・ツリー５９（図５）と並列に稼動して、短待ち時間のグローバル割込およびバリアが容易になることが好ましい。
【００５９】
図６に戻って、グローバル割込およびバリア・ネットワーク６０の各ルート・ノード６５は、グローバル・コンバイニング・ツリー５９の経路に沿ってスーパーコンピュータの所定の個数の計算ノード１２に接続され、それに関連して動作して、特定の並列アルゴリズムが必要とする、スーパーコンピュータのグローバル非同期動作を開始する。この２分木風のグローバル・コンバイニング・ツリー５９と、グローバル割込みおよびバリア・ネットワーク６０は、スーパーコンピュータの全体に延びて、データを任意のノード１２から他のすべてのノードへ（ブロードキャスト）、またはノード１２のサブセットへ、短待ち時間で送信できることが好ましい。他のツリー実施形態、たとえば３次ツリー、４次ツリーなどを実現することができ、ここで、より短い待ち時間は、より多くの相互接続とのトレードオフである。
【００６０】
図２５に、グローバル割込みおよびバリア・ネットワーク６０で実現される非同期グローバル・シグナル生成に使用される論理を示す。具体的には、図２５の観点から、図５のグローバル・コンバイニング・ツリー・ネットワーク５９に対するサイドバンド・ネットワークとして実現される時に、グローバル割込みおよびバリア・ネットワーク６０に、ノードごとに１つの相互接続されたルータのネットワークが含まれる。各ルータには、複数のポートが含まれ、これらのポートは、別のルータに接続されるか、または接続されない時にはディスエーブルされる、のいずれかとすることができる。しかし、説明の便宜上、図２５に示されているように、ルータは、データパスを提供する４つのポート１２１〜１２４を有するので、３つのツリーを構成することができる。４つのポートのうちの１つ、たとえばポート１２１だけが、親ノードへの接続として指定され、３つまでの残りのポートを、子ノードに接続することができる。ツリーの最下部の葉ノードは、親ノードに接続された１つのポートだけをイネーブルされ、ツリーのルートは、親をイネーブルされるのではなく、少なくとも１つの子をイネーブルされる。
【００６１】
図２５は、図６のグローバル割込みおよびバリア・ネットワーク６０のために各ＡＳＩＣノード１２に含まれるルータ内で実現される非同期論理１２５の概略図である。このネットワーク６０では、サイドバンド信号ごとに、４つの論理両方向ポート、すなわち１つのアップ・ツリー・ポート（図２５の１２１）、および３つのダウン・ツリー・ポート（図２５の１２２〜１２４）がある。これらの４つの論理両方向ポートは、４つの物理両方向ポートにマッピングされる。ソフトウェア構成を用いて、これらの物理ポートの任意の１つを、アップ・ツリー論理ポートとしてマッピングすることができる。これによって、複数のこれらのノードが一緒に配置される基板のレイアウトの柔軟性が可能になる。アップ・ツリー・ポートおよびダウン・ツリー・ポートのほかに、すべてのノードでＡＳＩＣプロセッサ・コアから生成される追加の入力信号１３５と、プロセッサの割込みユニットに入力される結果信号１３６がある。アップ・ツリー・パス１３０では、ダウン・ツリー・ポート１２２〜１２４と中央プロセッサ（ＣＰＵ）からの入力１３５が、アップツリー・パスに送出される前に論理ゲート１２７に入力される。この論理ゲート１２７は、グローバル・バリア動作を実行するために実現される時に論理ＡＮＤ機能を実行し（入力が論理「０」から「１」に推移する）、あるいは、グローバル割込み動作を実行するために実現される時にＯＲ機能ネットワークとして実現することができる（入力が論理「１」から「０」に推移する）。ダウン・ツリー・パス１４０では、アップ・ツリーからの入力信号が、バッファ１２８によってバッファリングされ、その後、すべてのダウン・ツリー・ポート１２２〜１２４とプロセッサに信号１３６としてブロードキャストされる。ツリーの最上部では、アップ・ツリー・ポート（図２５、１２１）の２つの信号が、最上位ノード内またはリンク・チップ内の初期ソフトウェア構成を介して単純に一緒に接続される。本明細書で詳述するように、リンク・チップは、トーラスおよびツリー・サブネットワークの分割をイネーブルする。
【００６２】
３次元トーラス
図１に関して説明したように、物理的計算機のアーキテクチャは、ｎ次元トーラス１０に関連し、このトーラスは、例示的実施形態では、エッジで「ラップ」する、単純な３次元の最近傍相互接続である。ＡＳＩＣの異なるラックの間に存在するものなどの飛行時間の差を除いて、すべての近傍が、等しい距離にあり、コードの作成および最適化が楽になる。最近傍リンクは、例示的実施形態では、プロセッサ速度の４倍（たとえば、各方向で２．８Ｇｂ／ｓ）とすることができる。したがって、各ノードは、たとえば４．２Ｇバイト／ｓの集合帯域幅を有する６つの独立の両方向最近傍リンクをサポートする。以下でさらに詳述するように、システム回路カードは、２×２×２サブキューブで配線され、ラックごとに２つのミッドプレーンは、８×８×８サブキューブとして配線される。６４ｋ個のノードからなる計算機全体は、６４×３２×３２個のトーラスであるが、他の分割が可能である。
【００６３】
メッセージ受渡
トーラス
図１のトーラス・ネットワーク１０は、選択された「クラス」のノードへの汎用のポイントツーポイント・メッセージ受渡動作およびマルチキャスト動作に使用される。このトポロジは、各ＡＳＩＣ内に組み込まれたルータの間の両方向ポイントツーポイント・シリアル・リンクを用いて構成された３次元トーラスである。したがって、各ＡＳＩＣは、６つの最近傍接続を有し、その一部が、比較的長いケーブルをトラバースすることがある。トーラス・ネットワーク１０は、適応的と決定的の両方の最短パス経路指定を提供し、デッドロック・フリーである。スループットおよび待ち時間は、本明細書および参照によって本明細書に組み込まれる、P. Kermani、L. Kleinrock、「Virtual Cut-Through: A New Computer Communication Switching Technique」、Computer Networks、Vol. 3、pp. 267-286、1979年に記載の、バーチャル・カットスルー（ＶＣＴ）経路指定の使用を介して最適化される。メッセージは、複数のパケットから構成でき、パケットは、経路指定のアトミック単位である。したがって、同一メッセージからの適応的に経路指定されるパケットは、順序はずれで到着する場合がある。パケットは、サイズが可変であり、３２バイトの粒度で３２〜２５６バイトの範囲である（すなわち、パケットごとに１〜８個までの３２バイト・チャンク）。
【００６４】
仮想チャネル（ＶＣ）は、デッドロック・フリーの適応的経路指定を提供し、スループットを高めるのに使用され、スーパーコンピュータ内のトーラス・ネットワーク１０は、２つのＶＣが適応的経路指定を使用し、２つのＶＣが決定的経路指定を使用する構成で、４つ以上のＶＣを有することができる。決定的ＶＣの１つが、デッドロック・フリー性を保証するために適応的サブネットワーク用の「エスケープ・チャネル」として使用され、他方が、高優先順位パケット用に予約される。ほとんどのトラフィックが適応的に経路指定されると期待されるので、ヘッドオブライン（head-of-line）ブロッキングを減らし、ルータ内で単純なＦＩＦＯバッファを使用できるようにするために、２つの適応的ＶＣが設けられる。
【００６５】
ルータの間のフロー制御は、トークンの使用を介して提供される。というのは、ケーブルの待ち時間によって、複数のパケットが同時に飛行中になり得るからである。コンテンションがない場合に、最大リンク帯域幅を維持するのに十分なＶＣＴバッファ空間がある。
【００６６】
トーラス・ネットワーク１０は、注入されたすべてのパケットの単一コピーを、信頼性のある形で配信する。ルータは、下流ルータが成功裡の受信を肯定応答するまで、すべてのパケットの良好なコピーを保存することによって、信頼性のある転送を保証する。リンクレベルのパリティまたはＣＲＣ（あるいはその両方）を使用することによって、ルータが、伝送中に破壊されたパケットを検出することができる。これが発生する時には、「エラー」インジケータが、パケットに付加され、受信側がそれを破棄しなければならないことが示される。したがって、各パケットの単一の良好なコピーだけが、ネットワーク１０を離れる。
【００６７】
したがって、参考文献、William J. Dally、Larry R. Dennison、David Harris、Kinhong Kan、Thucydides Xanthoppulos、「Architecture and Implementation of the Reliable Router」、Proceedings of HOT Interconnects II、pp. 122-133、1994年８月に記載の信頼性のあるルータのユニーク・トークン・プロトコル方式に類似する方式（常時、ネットワーク内のすべてのパケットの少なくとも２つのコピーが維持される）を使用することができる。しかし、例示的実施形態によれば、本発明では、パケットがリンク上（パケット破壊のほとんどすべてがここで発生する）で危険な状態である間に、バックアップ・コピーだけが維持される。ルータ・ハードウェアがパケットを破壊するという希な場合には、メッセージ・レベルでのエラー検出によって、再送信要求が送信側に発信される。
【００６８】
図７に、リンク入力回路７２およびリンク出力回路７４を含む単一のトーラス・ルータ７０の基本アーキテクチャを示す。ローカル入力に、７つのネットワーク注入キュー７３が含まれ、そのうちの６つが、任意の方向に宛てられた通常のパケットに使用され、７番目が、任意の方向に宛てられた高優先順位パケットに使用される。ローカル出力には、１２個の受信キュー７６が含まれ、６つのキューが、各方向からの通常のパケット用であり、６つのキューが、各方向からの高優先順位パケット用である。
【００６９】
各リンク入力７２には、ヘッドオブライン・ブロッキングを減らすために、少なくとも４つのＶＣＴキュー（仮想チャネルごとに１つ）と、クロスバ・スイッチ７８への２つの入力パスが含まれる。ＶＣＴ ＦＩＦＯのどれが、またはおそらくは到着するパケットが、クロスバ・スイッチ７８の入力を使用することになるかを決定する関連する入力アービタがある。各リンク出力回路７４には、信頼性のための再送信ＦＩＦＯと、関連するリンクへの入力キューまたは注入キューからのパケットをスケジューリングする出力アービタが含まれる。リンク入力回路７２とリンク出力回路７４の間の通信が、フロー制御トークンの伝送を調整するために各リンク・ポートで提供されることを理解されたい。
【００７０】
ルータ入力
図８は、図７のリンク入力回路７２の例示的実施形態の詳細な図である。各リンク入力回路７２の基本的な責任は、着信パケットを受け入れ、その完全性を検証し、必要な場合にバッファリングし、最終的に出力リンクまたはＣＰＵの受信キューに転送することである。図８からわかるように、２つの適応的ＶＣ８２ａおよび８２ｂ、１つの決定的ＶＣ８２ｃ、および１つの高優先順位ＶＣ８２ｄに対応する４つの仮想チャネル（ＶＣ）ＦＩＦＯ８２がある。実現されるＶＣ ＦＩＦＯの実際の数は、主に、経路指定アルゴリズムによって決定される。
【００７１】
前述のように、フロー制御は、トークンの使用を介して管理され、トークンのそれぞれが、ＶＣ ＦＩＦＯバッファ空間の３２バイトに関連する。したがって、単一のパケットが、複数のトークンを消費する場合がある。ＶＣ ＦＩＦＯのそれぞれのトークンは、個別に管理され、下流ルータによって上流ルータにバッチで許可される。上流ルータは、パケット・サイズ全体をカバーするのに十分な数のトークンを有するのでない限り、パケットを送信しない。言い換えると、パケットは、必要な場合に下流ルータに当該パケットを記憶するのに十分なバッファ空間がない限り、送信されない。これは、デッドロック・フリー性を保証するための重要な特性である。
【００７２】
パケットは、下流で当該パケットをバッファリングするのに十分な空間がない限り、送信できないので、ＶＣ ＦＩＦＯのサイズは、隣接するルータの間のリンク帯域幅および待ち時間によって指示される。このサイズによって、コンテンションがない時のリンク帯域幅の完全な利用が可能になる。計算機が分割される場合の最悪状況下では、２つの隣接するルータを、５ケーブル・ホップだけ離すことができ、各ケーブルホップは、約３０ナノ秒の待ち時間を有する。後述するように、隣接ケーブル・ホップは、リンク・チップをトラバースしなければならず、これは、約１０ナノ秒の待ち時間を有すると期待される。したがって、最悪状況下の、隣接するルータの間のリンク待ち時間は、約２００ナノ秒である。
【００７３】
下記のシナリオを使用して、ＶＣ ＦＩＦＯのサイズを計算することができる。上流ルータが、２５６バイトのパケットを送信する。下流ルータは、そのパケット全体を受信し、その完全性を検証する。このパケットは、転送されたが、記憶されないので、下流ルータは、即座に８つのトークンを返そうとする。しかし、上流リンクは、送信が開始されたばかりの２５６バイト・パケットによってブロックされている。上流リンクが解放されたならば、トークンが返される。ＶＣ ＦＩＦＯのサイズは、このシナリオの待ち時間中に送信できるすべてのデータを記憶するのに十分に大きくしなければならない。２．８Ｇビット／秒のリンク帯域幅を仮定すると、この計算は、下記のように進行する。
【００７４】
【表２】
0003980488.tif 000003
【００７５】
したがって、ＶＣ ＦＩＦＯのサイズは、約６５７バイトで十分である。しかし、より大きいＦＩＦＯを用いると、多少のゆるみが可能になり、その結果、トークンをバッチで返すことができ、ある量のネットワーク輻輳を許容できるようになる。本発明で使用されるＡＳＩＣ技術があれば、２Ｋバイト以上のサイズのＶＣ ＦＩＦＯを実現することが容易である。リンク入力回路７２は、ヘッドオブライン・ブロッキングを減らすために、グローバル・クロスバ７８への２つの接続（パス）８３を有する。したがって、リンク入力回路７２に、５×２の入力クロスバ８７が含まれ、これによって、２つのＶＣ ＦＩＦＯまたは１つのＶＣ ＦＩＦＯおよび到着するパケットが、出力リンクに進めるようになる。ローカル・リンク入力回路７２に、６つの入力方向のそれぞれについて２つの（２つのプロセッサのそれぞれについて１つ）専用の受信ＦＩＦＯと、高優先順位パケット用の２つの受信ＦＩＦＯ（プロセッサごとに１つ）が含まれる。１つのプロセッサが通信専用である時には、そのプロセッサは、ＦＩＦＯの両方のセットにアクセスできる。したがって、ルータで終了するパケットを、グローバル・クロスバ７８を通過せずに、関連する受信ＦＩＦＯに直接に転送することができる。しかし、通常優先順位のパケットは、任意のＶＣで受信されることがあり、したがって、これらは、入力クロスバ８７を介して受信ＦＩＦＯに転送される。
【００７６】
パケットが到着する時に、経路選択機能８６を使用して、そのパケットが使用できる潜在的な出力ＶＣのセットを判定する。一般に、このセットには、有利な（すなわち最小限の）方向の適応的ＶＣおよび決定的ＶＣの両方が含まれる。到着するパケットがＶＣ ＦＩＦＯに記憶される場合に、潜在的な経路が、そのパケットと共に記憶される。
【００７７】
グローバル・クロスバ７８の接続が空いている（または短時間だけ空きになる）時には、必ず、入力アービタ８８が、待機中のパケットまたは到着するパケットの１つを選択して、出力に関して調停する。選択されたパケットは、一時にある回数の試行についてその潜在的な出力の１つについて調停される。有限の回数の試行で出力を達成しない場合には、入力アービタ８８が、その優先順位規則に従って、同一のパケットまたは異なるパケットのいずれかを選択して、その出力の１つについて試行する。したがって、すべてのアービトレーション・サイクルで、各リンク入力回路７２が、成功するまで１つの出力ＶＣだけを要求する。高優先順位パケットは、当然、入力アービタ８８によって優先される。通常優先順位パケットは、最も満杯のＦＩＦＯ内のパケットを優先するが、ランダムにまたはラウンドロビン順序でパケットを周期的にサービスすることによって長時間の停止状態を防ぐ、優先順位規則に従ってサービスされる。
【００７８】
受信パケット・パイプライン８１は、深さが限られており、したがって、到着パケットが、アービトレーションについて選択されていないか、時宜を得た形で出力ＶＣを得ない場合には、そのパケットは、適当なＶＣ ＦＩＦＯに経路指定される。パケットが、そのＦＩＦＯの頭部に達する時に、そのパケットを、もう一度出力について調停することができる。ＦＩＦＯが空の場合には、パケットを、もう一度ほとんど即座に出力について調停を開始することができる。したがって、パケットが、基本的にＦＩＦＯを「通って流れ」、ＦＩＦＯに入るのと同時に出ることが可能であり、これは、重要な最適化である。パケットのヘッダ上の別個のＣＲＣが、ヘッダが正しく受け取られる場合に限って、パケットがアービトレーションに勝つことを保証するのに使用される。
【００７９】
成功率を改善するために、入力アービタ８８は、状況インジケータを出力ＶＣから受け取る。これらの状況インジケータは、使用中のリンク、追加のパケットを受け入れることができないＶＣ、およびＶＣ内で使用可能なバッファ空間のレベルを示す。出力ＶＣは、物理リンクが使用可能であり、そのＶＣがパケットを受け入れることができる時にのみ、調停される。適応的パケットは、好ましい方向およびＶＣを有し、このＶＣは、リンクが空いている方向で最大の使用可能バッファ空間を有するＶＣである。アービトレーション・ハードウェアは、パイプライン化され、その結果、あるパケットの末尾と次に入力リンクを出るパケットの頭部との間にギャップがない。
【００８０】
メッセージ・トラフィックのほかに、リンク入力回路７２は、トークンを許可するか、信頼性のために記憶されるパケットのコピーを解放する下流ルータからフロー制御パケットを受信する。これらのパケットは、フロー制御回路９０によって検出され、同一の物理リンクを共用する出力のフロー制御回路内の下流トークン・ストアの補充をもたらす。逆に、フロー制御回路９０は、正しく到着するパケットを検出し、同一の物理リンクを共用する出力のフロー制御回路に、トークン許可パケットを生成させる。
【００８１】
ルータ出力
図９は、図７のリンク出力回路７４の例示的実施形態を示す詳細な図である。このリンク出力回路７４の基本的な責任は、出力リンク上のパケットをスケジューリングして、高いスループットおよび公平さを得、信頼性のために送信されるすべてのパケットのコピーを保存し、リンクレベルのフロー制御および再送信を管理することである。
【００８２】
図９に関して、出力アービタ回路９８は、６つの入力のそれぞれおよび７つの注入ＦＩＦＯ（図１０に関して説明する）のそれぞれから、アービトレーション・サイクルごとに１３個までの要求を受け取る。出力アービタ回路９８は、１つの許可だけを返し、肯定応答を待つ。肯定応答が、次のアービトレーション・サイクルまでに来ない場合には、出力アービタ回路９８は、もう一度調停する。肯定応答が来る場合には、出力制御によって、グローバル・クロスバ７８がセットされ、その結果、勝った入力が出力に接続される。
【００８３】
物理出力リンクは、パケットに関しては下流接続として、対応する入力リンクを介して下流から来るトラフィックに関連するフロー制御に関しては上流接続として、みなすことができる。フロー制御回路９２は、この両方の責任を処理する。フロー制御回路９２は、下流パケットの代わりに各ＶＣのトークン・ストアを管理し、上流パケットの代わりにトークンを含むフロー制御パケットを生成するか、記憶されたパケットの解放を生成する。下流トークンは、パケットが送信される時に必ず消費され、同一物理リンクを共用する入力のフロー制御回路９２によって補充される。逆に、フロー制御回路９２は、対応する入力のフロー制御回路によって要求された時に、フロー制御パケットを生成する責任も負う。再送信ＦＩＦＯ９５は、ネットワーク信頼性方式の鍵になる構成要素である。動作中に、物理リンクを横切るすべてのパケットが、下流ルータから肯定応答が返されるまで記憶される。非常に時宜を得た形で肯定応答を用いて応答することは、下流ルータの責任である。パケットが、リンクを成功裡に横切る場合に、肯定応答が返され、そのパケットが、再送信ＦＩＦＯ９５から削除される。送信エラーが検出される場合には、パケットの末尾に、エラー・フラグを用いてタグを付け、肯定応答が、上流ルータに返されず、タイムアウトおよび再送信がもたらされる。再送信の場合に、破壊されたパケットは、必ず、再送信ＦＩＦＯ９５の頭部にある。というのは、肯定応答が順番に返されるからである。さらに、パケットは、別の障害の場合に再送信される時に、再送信ＦＩＦＯ９５の末尾に返される。この方式が、ルータの間の送信エラーだけをカバーすることを理解されたい。ルータ内で発生する破壊の防止および検出は行われない。
【００８４】
再送信ＦＩＦＯ９５のサイズは、６５７バイト程度のサイズが提案されるＶＣ ＦＩＦＯのサイズに非常に似た形で計算することができる。しかし、下流ルータに、肯定応答に応答する追加の時間を与えるために、このサイズはより大きい。追加のＶＣ ＦＩＦＯ空間ではなく、出力側で再送信ＦＩＦＯ９５を使用することの利益は、すべてのＶＣについて単一のＦＩＦＯで十分であることである。ＶＣ ＦＩＦＯが、転送されたパケットのコピーの保存に使用される場合には、各ＶＣ ＦＩＦＯを、再送信ＦＩＦＯ９５のサイズと同一の量だけ拡張しなければならない。したがって、メモリの節約量は、ＶＣの数に対し線形である。さらに、再送信は、完全に出力側で処理されるので、単純になる。
【００８５】
ローカル注入回路の詳細
図１０は、図７のローカル注入回路７３の例示的実施形態を示す詳細な図である。ローカル注入回路７３の基本的な責任は、プロセッサ（通常はメッセージ・プロセッサ）が、送信のためにネットワークにパケットを注入できるようにすることである。図１０からわかるように、例示的実施形態では、７つの注入ＦＩＦＯ９４があり、６つは通常優先順位パケット用、１つは高優先順位パケット用である。注入ＦＩＦＯ９４のすべてを、任意の出力ＶＣに経路指定することができ、すべて同時に調停することができる。この配置によって、最近傍通信の性能が最大化される。すなわち、ＣＰＵは、本質的に、６つの通常優先順位ＦＩＦＯのそれぞれを単一方向専用にすることができる。高優先順位ＦＩＦＯは、大量のメッセージ転送の前のスカウト・パケット（scout packet）と、ネットワーク輻輳のソフトウェア解決の両方に有用であると想定されている。図１１に関して説明するように、高優先順位パケットは、高優先順位ＶＣの通常優先順位パケットをバイパスし、高優先順位受信ＦＩＦＯで受信される。
【００８６】
ローカル受信回路の詳細
図１１は、図７のローカル受信回路７６の例示的実施形態を示す詳細な図である。この回路の基本的な責任は、ルータで終了するパケットをバッファリングすることである。図１１からわかるように、６つの方向のそれぞれについて１つの高優先順位ＦＩＦＯおよび１つの低優先順位ＦＩＦＯの、１２個の受信ＦＩＦＯ９６がある。これらのＦＩＦＯを各方向の専用にすることによって、端末パケットがグローバル・クロスバ７８を回避できるようになる。別々の高優先順位ＦＩＦＯによって、システム・ソフトウェアが、高輻輳の条件から回復できるようになり、大きいメッセージ・スカウト・パケットの待ち時間が減る。
【００８７】
トーラス経路指定アルゴリズム
トーラス経路指定アルゴリズムでは、可能な時には必ず個々のパケットを適応的に経路指定することによって、ネットワーク・スループットを最大にすることを試みる。トーラス経路指定アルゴリズムは、おそらくはデッドロック・フリーであり、最小限のパスだけを使用する。パケット待ち時間は、バーチャル・カットスルー（ＶＣＴ）経路指定の使用を介して最小にされ、ＶＣＴ経路指定は、適度な負荷の下で、ワームホール経路指定のように振る舞う。パケットは、サイズが可変であり、ソフトウェアが待ち時間または帯域幅を優先できるようになっている。トーラス経路指定アルゴリズムの基本的な概念は、２つの仮想ネットワーク（すなわち適応的ネットワークおよび決定的ネットワーク）を物理ネットワークに組み込むことである。適応的ネットワークは、デッドロック・フリーではないが、決定的ネットワークは、デッドロック・フリーである。パケットは、常に決定的ネットワークを選択できるので、決定的ネットワークは、適応的ネットワークでのデッドロックのエスケープ経路として働く。この手法に関するさらなる詳細は、参考文献、Jose Duato、「A New Theory of Deadlock-Free Adaptive Routing in Wormhole Networks」、IEEE Transactions on Parallel and Distributed Systems、Vol. 4、No. 12、pp. 1320-1331、1993年１２月、およびSteven L. Scott、Gregory M. Thorson、「The Cray T3E Network: Adaptive Routing in a High Performance 3D Torus」、In Proceedings of HOT Interconnects IV、1996年８月にある。そのようなアルゴリズムは、ネットワークでＶＣＴ経路指定が使用されるので、実現が比較的簡単である。さらに、パケットは、下流ルータにパケット全体を保持するのに十分なバッファ空間がない限り、送信されない。したがって、パケットがリンクを占有する時間は、必ず有限であり、その結果、デッドロックは、バッファ空間依存性としてのみ発生する。決定的ネットワークの経路指定アルゴリズムは、サイクル・バッファ依存性を全く有しないことが保証され、適応的ネットワークの経路指定アルゴリズムには、各ルータで決定的ネットワークに切り替える可能性が含まれる。
【００８８】
一実施形態では、適応的ネットワークで、２つの同等のＶＣが使用される。すなわち、適応的ネットワークを使用するパケットは、各ホップでどちらのＶＣでも使用することができる。２つの適応的ＶＣの長所は、単に、バッファリングされるパケットの間のヘッドオブライン・ブロッキングが減ることである。その結果、２つのパスが、グローバル・クロスバ７８内に必要である。
【００８９】
参考文献、C. Carrin、R. Beivide、J. A. Gregorio、F. Vallejo、「A Flow Control Mechanism to Avoid Message Deadlock in k-ary n-cube Networks」、Proceedings of the Fourth International Conference on High Performance Computing、pp. 322-329、1997年１２月に記載のものなどの形でバブル・フロー制御が使用される場合に、決定的ネットワークに１つのＶＣだけが必要になる。このアルゴリズムでは、すべてのネットワーク・サイクルに少なくとも１つの空きパケット・バッファがあることが保証され、その結果、サイクリック・バッファ依存性に基づくデッドロックが不可能になる。複数のＶＣを使用する、他の周知の決定的デッドロック・フリー経路指定アルゴリズムがある。たとえば、参考文献、W. J. Dally、C. Seitz、「Deadlock-Free Message Routing in Multiprocessor Interconnection Networks」、IEEE Transactions on Computers、pp. 547-553、1987年５月に記載の古典的次元順序付きアルゴリズムは、実現に２つのＶＣだけを必要とする。したがって、決定的ネットワークで、２つを超えないＶＣを使用することが好ましい。
【００９０】
適応的ネットワークと決定的ネットワークの両方で、最小パス経路指定が使用されることが好ましい。すなわち、パケットは、有益な方向にのみ移動することができ、有益な方向は、パケットをその宛先に近づける方向である。さらに、経路指定アルゴリズムは、ノード障害を許容することができず、ノード障害は、本明細書で詳述するように、計算機を再分割することによって処理される。
【００９１】
パケットが、ネットワークに注入される時に、ソフトウェアによって、当該パケットが適応的ネットワークを使用できるか否かが指定される。ほとんどのトラフィックが、適応的ネットワークを使用することが期待される。注入キューの頭部にあるパケットは、ルータによって、着信パケットに似た形で扱われる。
【００９２】
ルータで終了しないすべての着信パケットによって、経路選択機能８６（図８）がトリガされ、経路選択機能８６が、潜在的な出力ＶＣのセットを生成する。そのセットは、出力が許可されるまで、当該パケットと共に残る。負荷が軽いネットワークでは、パケットが、速やかに出力を調停し、勝つことができ、ＶＣ ＦＩＦＯでのバッファリングが回避されると期待される。それでも、パケットは、ＶＣ ＦＩＦＯの頭部に達する時に調停することができる。
【００９３】
デッドロック・フリーであることを保証するために、すべてのパケットが、その潜在的なＶＣのセット内に決定的アルゴリズムに準拠するＶＣを含める必要がある。各ホップで、そのようなＶＣが１つだけある。さらに、適応的ネットワークを使用することを許可されるパケットには、すべての有益な方向の適応的ＶＣの両方が含まれる。したがって、適応的ネットワークでのデッドロックは、１つ（または複数）のデッドロックしたパケットが決定的ＶＣを選択する時に、必ず解決される。最終的に、これが必ず発生する。というのは、決定的ネットワークが、有限の時間で排出処理をする（かつ、使用可能になる）ことが保証されるからである。
【００９４】
適応的経路指定についてイネーブルされたパケットは、適応的であれ決定的であれ、必ず最初の使用可能なＶＣを選択する。したがって、当該パケットは、２つの組み込まれたネットワークの間でジャンプすることができる。ＶＣＴ経路指定のゆえに、これは、おそらくデッドロック・フリーである。簡単に言うと、適応的ネットワークから決定的ネットワークへの移動は、決定的ネットワークの観点からは、注入とみなされる。逆に、決定的ネットワークから適応的ネットワークへの移動は、決定的ネットワークの観点からは、受信とみなされる。したがって、組み合わされたネットワークは、デッドロック・フリーのままになる。
【００９５】
トーラスでのクラス動作
線形ソルバおよびＦＦＴなどのアルゴリズムは、３次元トーラスの１次元または２次元の表面に物理的にマッピングされるノードのグループ内での情報のブロードキャストを必要とする。これらのマルチキャスト要件を効率的にサポートするために、本明細書で「クラス経路指定」と称する、トーラス・ネットワーク内の第２のタイプの経路指定を使用する。クラス経路指定は、すべてのトーラス・リンクの受信端の少数（たとえば４〜１６個）のローカル・レジスタの使用を介して実現されることが好ましい。「クラス」パケットとして区別されるメッセージについて、当該パケットの経路指定は、宛先によるのではなく、このローカル・レジスタによって決定される。このローカル・レジスタは、可能な出力のそれぞれの１ビットを担持するとともに、当該パケットが可能な継続のほかにローカルに記憶されなければならないことを示す１ビットを担持する。このクラス経路指定によって、広範囲の幾何学形状に対する効率的なマルチキャストが可能になる。
【００９６】
パケット・フォーマット
パケット化、再組立、および検証を含めて、メッセージ全体を信頼性のある形で配信するのは、通信サブシステムの責任である。さらに、通信サブシステムには、メッセージ受渡インターフェース（ＭＰＩ）の性能を強化する特徴が含まれる。パケットは、経路指定のアトミック単位であるが、より大きいメッセージの一部であることがしばしばである。適応的経路指定のゆえに、パケットは、順序はずれで到着することがある。したがって、各パケットに、それが属するメッセージおよびそのメッセージ内でそれが属する位置を指定するのに十分な情報を含めなければならない。ネットワーク・ハードウェアに関する限り、その唯一の責任は、各パケットを、送信元ルータの注入ＦＩＦＯ９４（図１０）から宛先ルータの受信ＦＩＦＯ９６（図１１）に信頼性のある形で転送することである。
【００９７】
図１２に、本発明の好ましい実施形態によるトランスポート・パケット１００のフォーマットを示す。図１２からわかるように、第１バイト１０２に、タイプ・フィールドおよびいくつかのフラグ・ビットが含まれる。タイプ・フィールドによって、フロー制御、アプリケーション・メッセージ、およびエラー回復など、ルータによって異なる形で処理される必要がある、少数の基本的なパケット・タイプが区別される。同様に、フラグ・ビットによって、パケットがさらに区別され、デコードの必要なしにハードウェアを直接に活動化することができる。ハードウェア設計によって、どの特徴がタイプ・フィールドにエンコードされ、どれがフラグによって指定されるかが決定される。タイプ・ビットには、本質的に、受信ＦＩＦＯ９６（図１１）のどのセットが当該パケットを保持すべきかを選択するのに使用されるビットが含まれる。
【００９８】
トランスポート・パケットの第２バイト〜第３バイトには、経路指定ヒント・ビット１０４およびＶＣ番号１０６が含まれる。シリアル相互接続のゆえに、ヒント・ビット１０４を使用してできる限り早く出力アービトレーションを開始することが有利であり、ヒント・ビット１０４には、６つの可能な出力方向のそれぞれについて１ビットがある。セットされたヒント・ビット１０４は、当該パケットがその宛先に到達するために、対応する方向に進行する必要があることを示す。ヒント・ビット１０４は、宛先座標に達し、宛先座標がローカル・ルータ座標と比較された後に更新される。ＶＣ番号１０６によって、４つの仮想チャネルのどれを介して当該パケットがルータに入るかが指定され、ＶＣ番号１０６は、使用される出力仮想チャネルに基づいて、各ホップで更新される。第３バイト１１０、第４バイト１１２、および第５バイト１１４は、それぞれ、宛先ノードの絶対座標を表し、これらのノードは、３次元メッシュとして番号を付けられる。すべてのノードが、それ自体の座標を有するように構成され、したがって、これらのフィールドを選択された出力方向と共に使用して、下流ルータに関してヒント・ビット１０４を更新する。これらのフィールドは、パケット宛先に到達した後に、パケット宛先を確認するのにも使用される。
【００９９】
トランスポート・パケットのサイズは、たとえば、３２バイトから２５６バイトまで、３２バイトの増分で可変である。サイズ・フィールド１１５によって、パケットの３２バイト「チャンク」の個数が示される。シーケンス番号フィールド１１８は、リンクレベル・シーケンス番号を維持し、その結果、脱落したパケットを検出できるようにするのに使用される。このフィールド１１５は、エンドツーエンド・プロトコルなどの別の機構が、必要な検出を提供する場合に、不要になることがある。ヘッダＣＲＣバイト１１９も、パケットのヘッダ・エラーを訂正するために設けられる。パケットの終り１２０には、本明細書で詳述するリンクレベルおよびエンドツーエンドのエラー検出および回復方式をサポートするエラー検出および表示ビットが含まれる。短く言うと、エンドツーエンド・エラー検出は、ローカル注入回路７３（図１０）によって生成され、ローカル受信回路７６（図１１）によって検査されるＣＲＣコードによって提供することができる。リンクレベル・エラー検出は、各ルータのリンク出力回路７４（図９）によって生成され、各ルータのリンク入力回路７２（図８）によって検査されるパリティ・ビットによって提供される。破壊されたパケットが検出される場合には、リンクレベル・パリティ・コードが、エラー・インジケータによって上書きされ、その結果、そのパケットは、どこかに到着した時に破棄される。エラーの検出が、ルータのリンク出力回路７４に関して本明細書で説明するリンクレベル再送信をももたらすことを理解されたい。
【０１００】
説明したネットワーク・アーキテクチャでまだ対処されていないが、検討されている複数の問題がある。好ましい実施形態では、不正なリンクまたはルータを検出および回避するための関連する機構と一緒に、欠落しているパケットを処理するタイムアウト機構が実現されることを理解されたい。
【０１０１】
メッセージ受渡
グローバル・コンバイニング・ツリー（Global Combining Tree）
グローバル・コンバイニング・ツリーでのメッセージ受渡は、トーラス・ネットワークのパケット構造に似たパケット構造の使用を介して実行される。ツリー・ネットワークでは、少数のクラス・ブロードキャスト動作に関する追加のサポートがある。ツリー・ネットワークは、システム割込みも使用することができる、トークン・ベースのネットワークである。メッセージは、ＶＣで非ブロッキングである。割込みは、同一のデータ・ストリームで搬送され、特殊な「割込み」帯域外ビットの使用を介して、パケット伝送中を含めていつでも、データにインターリーブすることができる。メッセージは、システム内の任意のノードでツリー・ネットワークに注入され、転送のタイプに応じて、ツリーの頂点または最終的な宛先のいずれかに達するまでツリーを登る。
【０１０２】
ツリーに関連するハードウェアは、計算ノードＡＳＩＣおよび入出力ノードＡＳＩＣに含まれる。計算プロセッサおよび入出力プロセッサへのインターフェースは、メモリ・マップＦＩＦＯである。各ＶＣは、ＶＣでの非ブロッキングを保証する独立のＦＩＦＯを有する。ツリーの算術機能およびブロードキャスト機能も、計算ＡＳＩＣに統合される。このローカル頂点で、ブロードキャスト動作および算術動作が、ハードウェアで実行され、非常に短い待ち時間につながる。ツリー構造は、もちろん、物理的な５１２個のノード・ミッドプレーン境界で「狭くなる」ので、ツリーの帯域幅は、最近傍リンクほどケーブルに関して高コストでない。したがって、各方向で同時に２Ｂ／プロセッサ・クロックをサポートできる高帯域幅ツリー・インターフェースを提供することができる。入力ステージには、ＶＣレベルでセグメント化されるＦＩＦＯインターフェースも含まれる。
【０１０３】
パケットは、当該パケット内の宛先がノードＩＤと一致するかどうかに応じて、ツリーで経路指定されるか、捨てられる。図１〜図５に関して示したように、Ｇｂイーサネット（登録商標）・トラフィックでは、このネットワークを使用して、ファイルおよびホスト・データを入出力ノードに送信する。
【０１０４】
システム・パッケージ化
図１３は、本発明のウルトラスケール・スケーラブル・スーパーコンピュータを示す概念的な平面図である。図１３に示された例示的実施形態では、本発明のスーパーコンピュータ２００に、全部で８１９２０個のプロセッサと８０個のラック２０２が含まれ、そのうちの７２個のラックが、７３７２８個のプロセッサからなる単一のシステム（６５５３６個のプロセッサからなるシステムと共に予備の８つのラックが含まれる）として配線され、８つのラック２０４が、それぞれが別々の４０９６個のプロセッサからなる２つのシステムとして配線される。７３７２８個のプロセッサからなるシステムに、たとえば８つのラック２０２のそれぞれの９つの行２０５として配置された、エレクトロニクスの７２個の計算ラックが含まれる。予備の行を有する、（ｘ−ｙ−ｚ）６４×３２×３２個の計算機に最適化された、ある配線編成が仮定される。計算ラックは、たとえばエンタープライズ・サーバに使用されるものなど、Ｓｐｅｃｔｒａ−ｓｔｒｉｐ社の対より線に基づくケーブルを使用して一緒に接続される。ラック２０２の各対によって、Ｚ次元のトーラスが完成する。したがって、ラックの各対には、（ｘ−ｙ−ｚ）８×８×３２として編成された２０４８個の計算ＡＳＩＣが含まれる。行またはアイルは、４つのそのような対を含み、（ｘ−ｙ−ｚ）８×３２×３２に編成され、「ｙ」方向が完成する。列によって、「ｘ」方向が完成する。７３７２８個のプロセッサ計算機全体が、物理的に（ｘ−ｙ−ｚ）７２×３２×３２として配線されるが、論理的には６４×３２×３２として使用される。９つのアイルの１つを、予備として予約することができ、このアイルは、６４ｋ個の計算ノード・システムの一部ではない。
【０１０５】
各計算ラックが、２つの「ミッドプレーン」からなり、各ミッドプレーンに、５１２個の計算プロセッサが含まれることが好ましい。ミッドプレーンは、互いに垂直に配置され、ラックの前後からアクセスされる。各パッシブ・ミッドプレーンに、ケーブルを受け入れる１２個のリンク・カード、それぞれが８つのプロセッサＡＳＩＣを有する６４個の計算カード、ギガビット・イーサネット（登録商標）および／またはInfiniBand（商標）接続を受け入れる２つまたは４つの入出力カード、システム・クロックを配布するクロック・カード、および計算カードのそれぞれからの１００Ｍｂ／ｓイーサネット（登録商標）・リンクを統合する高速イーサネット（登録商標）・スイッチ・カードが含まれる。ミッドプレーンの左右の端にある電源接続によって、電源からの４８Ｖ ＤＣが給電される。
【０１０６】
後述するように、スーパーコンピュータは、空冷であることが好ましい。各計算ラック内では、熱い気流が、水平に左から右へ流れる。室内空気が、左側からラックに入り、ラックの右上にある垂直出口プレナムから出る。モジュールに配置された冷却ファンのバンクに、計算機の稼動中に個別にアクセスし、サービスすることができる。
【０１０７】
計算カードおよび入出力カードのそれぞれに、一意のアドレスが含まれる。この１８ビット・アドレスは、バックプレーン上のカード位置（９ビット）ならびにバックプレーンのアドレス（９ビット）によって定義される。追加ビットを、カード自体でエンコードし、その結果、各プロセッサが一意のアドレスを有するようにする。このアドレスは、たとえば、カードのイーサネット（登録商標）・アドレスを形成するか、ホスト計算機の診断コードを介する障害の報告に使用される。
【０１０８】
クロック分配
好ましい実施形態では、共通の最高速度のクロックが、システム２００の７２個のラック２０２に供給される。その代わりに、クロックを、プロセッサ速度の２倍で供給して、プロセッサ速度の４倍でのシリアル・データ通信を容易にすることができる。本発明は、特に、長期間位相ジッタを避けるために各プロセッサでのＰＬＬを用いるクロック再生成の必要をなくす。共通クロックの他の動機づけは、各プロセッサのローカル・クロックを共通周波数に保つことによる、長いソフトウェア・コンテキスト切替時間の可能性を除去することである。グローバル・ブロードキャスト機能を介する初期クロック同期化も提供される。
【０１０９】
このクロックを分配する１つの例示的手段を、大型スーパーコンピュータ・アレイ２１０の次元的に正確な上面図に重ねて、図１４に示す。ケーブル２１５として示されたアレイの中央付近の高周波数ソースは、クロック・スプリッタを使用して９つの出力にスプリットされ、ケーブル２２０に供給する２次ファンアウト・ボックス２１８への長さ約４．５ｍの差動ケーブルを介して分配されることが好ましい。これらの２次ボックス２１８は、ケーブル入力がクロック・ソースに置換される以外はクロック・スプリッタと同一であるが、３次クロック・スプリッタ２２３に分配し、３次クロック・スプリッタ２２３は、ケーブル２２４として示された１つのクロックを各ミッドプレーンに送る。ミッドプレーンでは、クロック分配カードが、ミッドプレーン上のすべてのカードのクロックを生成する。計算カードおよびリンク・カードは、同一のクロック・スプリッタを使用して、カード上のすべてのＡＳＩＣのクロックを生成する。クロック・ツリーの深さは、６ステージである。
【０１１０】
好ましい実施形態では、ＡＳＩＣへのすべてのクロックが、ほぼ同一の遅延を有し、同一の数のケーブル、コネクタ、バッファなどを通過する。バイポーラ技術に基づくＬＶＰＥＣＬ（Low Voltage Positive Emitter Coupled Logic）クロック・チップを使用すると、クロック・バッファを介する遅延が、電圧からほぼ独立になり、これによって、差動クロック・チップの温度変動に起因するクロック・ジッタがほぼ除去される。ジッタの主な原因は、温度差であると思われ、これは、低速であり、本明細書に記載の新規のデータ・キャプチャ方式によって追跡されると期待される。２つの他の独立の４０９６個のノード・システムは、それ自体の独立のクロック分配を有する。
【０１１１】
トーラスの配線
前述のように、このシステムの各計算ＡＳＩＣは、６つの高速シリアル・リンクを用いて単一システム・イメージのすべての計算ノードを接続する３次元トーラスの一部である。各リンクは、両方向であり、２つの差動信号対（たとえば、リンクごとに合計４本のワイヤ）を使用し、各方向でプロセッサの周波数の４倍のビット・レートで稼動する。７００ＭＨｚの例示的プロセッサ周波数を用いると、最大データ・レートは２．８Ｇｂ／ｓ／方向であり、３つの基本的な方向Ｘ、Ｙ、およびＺのそれぞれで隣接する近傍への通信が可能になり、ＡＳＩＣごとに１６．８Ｇｂ／ｓ（２．１Ｇバイト／ｓ）の総トーラス帯域幅が得られる。表３に示されているように、計算カードのトーラス接続は、論理的な（ｘ−ｙ−ｚ）２×２×２構成で配置される。各論理次元での接続は、ミッドプレーンからコネクタを介してカードに入り、２つの計算ＡＳＩＣを直列に通過し、同一のコネクタによってカードから出る。同様に、ミッドプレーンの５１２個の計算ＡＳＩＣは、論理的に８×８×８のトーラス配置で接続される。各論理次元での接続は、リンク・カード上のリンクＡＳＩＣからミッドプレーンに入り、４つの計算カードおよび８つの計算ＡＳＩＣを直列に追加し、同一のリンクＡＳＩＣに戻る。これらのリンク・チップは、ミッドプレーンを出る信号のためにシリアル・リンクに電力を供給しなおす。
【０１１２】
【表３】
0003980488.tif 000004
【０１１３】
グローバル・コンバイニング・ツリーの配線
前述のように、各計算ＡＳＩＣは、単一システム・イメージの計算ノード１２のすべてを接続するグローバル・コンバイニング・ツリーの一部である。各ＡＳＩＣ２０は、４つの再構成可能なリンク・ツリー接続を有する。ツリー内の各リンクは、両方向であり、８つの差動信号対（リンクごとに合計１６本のワイヤ）を使用し、各方向でプロセッサの周波数の１６倍のビット・レートまたは各方向でプロセッサ周波数の２倍のバイト・レートで稼動する。７００ＭＨｚのプロセッサ周波数を用いると、ツリーを上下する最大データ・レートが、１１．２Ｇｂ／ｓ／方向または１．４ＧＢ／ｓ／方向になる。これは、どの方向でも、トーラス・リンクのデータ・レートの４倍である。計算カードのツリー・リンク接続２５０は、図１５に示されているように配置される。各カードは、ツリーの最上部に向かってコネクタ２５５を介してカードから出る１つの上流リンク２５２を有する。各カードは、ツリーの最下部に向かってカードから出る２つの下流リンク２５８も有する。各計算カードのローカル・ツリーの頭部にあるノード１２１は、４つのツリー・リンク接続のすべてを使用して、コネクタおよび論理的にツリーの下にある他のカードへの２つの短待ち時間下流リンクを提供する。
【０１１４】
図１６に、入出力カードのツリー・リンク接続を示す。図１６からわかるように、ミッドプレーン上のツリーは、各入出力カード２６０ａおよび２６０ｂが、ローカル・ツリーの頭部にあり、ミッドプレーンのプロセッサの半分が、論理的にその下になるように、論理的に配置される。２つの入出力カード２６０ａおよび２６０ｂカードは、入出力ＡＳＩＣのうちの４つが、ミッドプレーン・ツリーの頭部になるように配線される。４つの入出力ＡＳＩＣのうちのどれが論理的にツリーの頭部になるかは、ソフトウェアによって構成可能である。これらの頂部の４つの入出力ＡＳＩＣは、計算カードの最上部にある計算ＡＳＩＣが、計算カードから出る上流信号および下流信号を送信する形に似た形で、ミッドプレーンから出る上流信号および下流信号を送信する。
【０１１５】
ラック設計
図１７を参照するに、本発明のスーパーコンピュータのパッケージ化システム３１０では、ラック３１２ごとにできる限り多数のプロセッサが空冷される。ＡＳＩＣ、複数のＤＲＡＭモジュール、およびローカルＤＣ−ＤＣコンバータの非効率性を含む、計算カードに必要な目標電力は、たとえば１０Ｗである。完全なラックには、計算カードのほかに、エア・ムーバ、ＡＣ−ＤＣ電源、リンク・チップ、イーサネット（登録商標）・スイッチ、入出力カード、クロックなどが含まれるので、これによって追加の熱負荷が加わる。したがって、説明される例示的実施形態での最適の設計選択では、ラック３１２ごとに１０２４個の計算ノードが配置され、期待される総熱負荷は、ラックごとに１５ＫＷである。後述するように、これらの１０２４個の計算カードは、単一の構成要素の故障が非常に高価な交換をもたらす回路カードごとの多数の構成要素の置換を避けながら、ケーブルおよびコネクタの数を最小にする形で構成される。
【０１１６】
冷却
パッケージ化システム３１０のラック３１２は、強制空気対流によって冷却される。図１７に、ラック３１２内の基本的な気流を示す。空気は、ラックの１側面に取り付けられたファン３１５のアレイによって、ラックの反対側に引き込まれる。冷気は、ミッドプレーンに挿入されたプロセッサ・カード（計算カードおよび入出力カード）を通って流れる。複数の平行の空気流路が、ラックのプレナム３２０によって集められ、カードの均一で効率的な冷却がもたらされる。ファン３１５のアレイは、グループにパッケージ化される。ファンの各グループは、冗長性を組み込まれたホットスワップ可能モジュール内に取り付けられる。ファン・モジュールは、ラックの動作に影響せずに交換することができる。ファンの速度および気温を、動作中に監視し、制御することができる。
【０１１７】
配電
システム・ラックは、分散型電源システムによって電力を与えられる。少なくともより小さい電源モジュールに関して、ＤＣ−ＤＣ変換の高い効率に起因して、４８．０Ｖの配電が、配電方式として使用されることが好ましい。
【０１１８】
この分散型電源システムの中間は、ＡＣ／ＤＣコンバータから派生し、ラック内のミッドプレーンに分散されることが好ましい。コンバータは、２＋１トポロジで接続されて、分散型電力バスに必要な冗長性がもたらされる。コンバータは、ホットスワップ可能であり、ラックをシャット・ダウンせずにいつでも交換することができる。コンバータの状況は、リモート・ホストによってアクセス可能なマイクロコントローラによって監視される。
【０１１９】
分散型電力の一部は、一定であり、もう１つはスイッチされる。スイッチされない電力バスは、ファン・モジュール、クロック、およびリンク・チップに連続的な電力を供給する。後述するように、システム分割に関して、ラックがサービスされている場合であっても、隣接するラックへの信号がメッセージ・ネットワークを通過できることを保証するために、リンク・チップへの電力が維持される。リンク・チップは、クロックとファンを必要とする。スイッチされる電力バスは、プロセッサ・カードへの電力を制御する。電源のＤＣ／ＤＣ変換は、電圧制御が正確であり、フィードバックの帯域幅が広く、大電流が局所化されるので、プロセッサ・カードに配置される。
【０１２０】
ＤＲＡＭシステム用の２．５Ｖと、ＡＳＩＣ用の約１．２Ｖから１．５Ｖの２つの電源電圧が使用されることが好ましい。信頼性に関する懸念は、冗長電源を並列に使用することによって対処される。
【０１２１】
ミッドプレーン
トーラス・ネットワークおよびグローバル・コンバイニング・ツリー・ネットワークの１つの可能な物理的経路指定を、図１８に示す。概念的には、ミッドプレーン３００に、６４個の計算カードのカード接続３０２、１２個のリンク（ケーブル）カード、２つの入出力カード、クロック、イーサネット（登録商標）、および電源ユニット（リンク・カード用）のカード接続が含まれる。ミッドプレーン３００は、クロックと、トーラス・ネットワーク、ツリー・ネットワーク、およびイーサネット（登録商標）・ネットワークの高速差動配線を提供する。
【０１２２】
システム分割
本発明のスーパーコンピュータは、ソフトウェア制御によって論理的に再分割することができ、したがって、１つのシステムとして一緒に物理的に配線されたラックの大きいグループを、複数のシステムに論理的に分割することができる。これらの論理的に分離されたシステムのそれぞれが、異なるコードを同時に実行することができ、あるいは、いくつかの分離されたシステムを、他のシステムが計算している間にサービスすることができる。したがって、論理的再分割によって、コード開発およびシステム保守が容易になる。再分割を制御するシステム・リンク・チップの動作を、図１９に関してこれから説明する。
【０１２３】
リンク・チップ
図１９からわかるように、トーラス・ネットワーク、グローバル・コンバイニング・ツリー・ネットワーク、およびグローバル割込みおよびバリア・ネットワークは、リンク・チップ４００を通過する。このリンク・チップ４００は、２つの機能をサービスする。第１に、リンク・チップ４００は、ミッドプレーンの間でケーブル上の信号を再駆動し、異なるミッドプレーン上の計算ＡＳＩＣの間の長く損失があるトレースケーブルトレース接続の中央での高速信号の形状および振幅を改善する。第２に、リンク・チップ４００は、その異なるポートの間で信号をリダイレクトする。このリダイレクション機能が、このスーパーコンピュータ・システムを複数の論理的に別々のシステムに分割できるようにする機能である。
【０１２４】
正規リダイレクション
リンク・チップ４００は、正規リダイレクションおよびスプリット・リダイレクションと称する、２種類の信号リダイレクションを実行する。正規リダイレクションでは、大きいコンピュータ・システムの１論理方向から１つのミッドプレーンが除去される。正規リダイレクションを、図１９のモード１および２として示す。これには、リンク・チップ４００のポート４０１、４０４、４０５、および４０６が用いられる。ポート４０１および４０４は、特定のトーラス論理方向ｘ、ｙ、またはｚで、現在のミッドプレーンと上位または下位のミッドプレーンとの間で＋方向ケーブルおよび−方向ケーブルに接続される。これらのケーブル接続を、図２０では矢印によって示す。ポート４０５および４０６は、ミッドプレーン内で８つの計算プロセッサを介して直列に循環するトーラス・ループに接続される。これらのミッドプレーン・トーラス・ループの経路指定は、本明細書で図１３に関して説明した。モード１で動作する時に、リンク・チップ４００は、前のミッドプレーンから現在のミッドプレーンを介して次のミッドプレーンへ信号を経路指定する。これによって、現在のミッドプレーンが、より大きいコンピュータ・システムの一部になる。モード２で動作する時に、前のミッドプレーンからのポート４０４を介するケーブル信号が、ポート４０６を介して次のミッドプレーンに直接に渡され、現在のミッドプレーンが、より大きいコンピュータ・システムから除去される。やはりモード２で、現在のミッドプレーンの信号は、ポート４０５および４０６を介してミッドプレーン内でループし、より小さいコンピュータ・システムが構築される。
【０１２５】
スプリット・リダイレクション
スプリット・リダイレクションでは、大きい６４×３２×３２システムを、２つの同等の３２×３２×３２の半分に分割できるようになる。リンク・チップ４００で実現される時に、スプリット・リダイレクションでは、システム分割の多数の変形が可能である。しかし、長いケーブルのコストおよび信号の完全性の懸念に起因して、スプリット・リダイレクションが、論理Ｘ方向でのみ物理的に配線され、大きいシステムを２つの等しい半分に分割できるようにするのに必要な数のラック・アイルでのみ物理的に配線されることが好ましい。スプリット・リダイレクションを、図１９のモード３および４に示す。３から１０までの８つのモードが、スプリット・リダイレクションを達成するのに必要であるが、図１９には、そのうちの２つ、モード３および４だけが示されている。スプリット・リダイレクションでは、リンク・チップ４００によって、隣接するミッドプレーンへの＋ケーブル方向または−ケーブル方向とみなされるケーブル・ポートが再定義される。リンク・チップ４００は、正規ポート４０１からの＋方向ポートを、スプリット・ポート４０２または４０３に再定義し、あるいは、正規ポート４０４からの−方向ポートをスプリット・ポート４０２または４０３に再定義する。正規ケーブルは、図２０で矢印を有する細い線によって示され、スプリット・ケーブルは、たとえば図２０で４２５ｂという符号を付けられたラックの行に示されたものなど、「論理Ｙケーブル」として示される。
【０１２６】
分割
論理的再分割によって、本発明のスーパーコンピュータ・システムをどのように再分割できるかに関するある範囲の任意選択が可能になる。図２０に、正規分割およびスプリット分割の両方を示し、ミッドプレーンをサービスのためにシステムから分離できる例を示す。
【０１２７】
スプリット分割は、大きい７２×３２×３２システムの、ほぼ等しい半分の、４０×３２×３２システムおよび３２×３２×３２システムへの分割をもたらすことができる。これは、ミッドプレーンが誤動作している時に、そのミッドプレーンが物理的にどこに配置されるかに無関係に、３２×３２×３２システムが必ず構築されることを保証するために、２つの形の１つで達成することができる。４０×３２×３２システムが上位５つのアイルであり、３２×３２×３２システムが下位４つのアイルであるか、その逆であるかのいずれかである。たとえば、図２０のラック４１０に示されたラックのミッドプレーンが、サービスを必要とする場合に、スプリット区画を使用して、上位４つのアイルと下位５つのアイルの間でシステムを分割することができる。この場合に、（図２０の下位５つのアイル）を含むラック４１５が、４０×３２×３２システムを形成し、上位４つのアイルのラック４２０が、別々の３２×３２×３２システムを形成する。両方のシステムを、このサイズで動作させることができ、あるいは、これらを、正規分割を使用してさらに再分割することができる。
【０１２８】
正規分割は、１つの８ノード・スライスを任意の論理方向から分離するのに使用される。ラック４１０のミッドプレーンが誤動作している場合に、正規分割を使用して、下側の４０×３２×３２システムの残りについて下から２番目のアイルを論理ｘ方向で分離し、アイル４２５ａ〜４２５ｄで提供されるラックによって示された３２×３２×３２システム（添付の凡例でシステム＃１として示される）およびアイル４３０に示されたラックを含む８×３２×３２システムを構築することができる。この論理ｙ方向での８×３２×３２セクションの正規分割によって、ラック４１０および４１１のラックが、アイル４３０の残りのラックから分離され、８×２４×３２セクション（添付の凡例でシステム＃２として示される）および８×８×３２セクション（ラック４１０および４１１を含む）が与えられる。８×８×３２セクションの論理ｚ方向での２回の正規分割によって、ラック４１０とラック４３２ａ、…、４３２ｆが分離され、８×８×１６セクション（添付の凡例でシステム＃３として示される）と２つの８×８×８セクション（添付の凡例でシステム＃４および５として示される）がもたらされ、他の再分割体のすべてが計算している間に、８×８×８セクションの１つをサービスすることができる。上側４つのアイルの論理ｙ方向に沿った類似する分割によって、３２×１６×３２再分割体４３５（添付の凡例でシステム＃６として示される）、３２×８×３２再分割体４４０（添付の凡例でシステム＃７として示される）、および３２×８×３２再分割体４４５（添付の凡例でシステム＃８として示される）がもたらされる。
【０１２９】
正規分割をさらに使用して、２つの小さい８×１６×３２（４０９６個のプロセッサまたは４ラック）に、図１３の最下部に示されたシステム２０４を再分割することができる。この２つのシステムは、大きい７２×３２×３２システムとは別に物理的に配線されるので、大きいシステムと組み合わせて８０×３２×３２システムにすることはできず、互いに組み合わせることもできない。スプリット分割を、２つの小さい８×１６×３２システムにさらに提供することはできない。
【０１３０】
グローバル・コンバイニング・ツリー信号およびグローバル制御信号は、トーラス信号と同一のリンク・チップおよびケーブルを介して経路指定される。したがって、正規再分割およびスプリット再分割によって、ツリーが、トーラスと正確に同一の副区画に分割される。論理副区画内では、各ミッドプレーンの入出力プロセッサが、ソフトウェアによって再構成されて、図１５に関して前に説明したように、区画内のツリーが接続される。
【０１３１】
シグナリング
本明細書で説明するように、スーパーコンピュータには、２つの別々の高速通信ネットワークすなわち、３次元トーラス・ネットワークおよびグローバル・コンバイニング・ツリー・ネットワークが含まれる。これらのネットワークでのシグナリングの好ましい電気設計および実装の詳細を、図２１に関して説明する。
【０１３２】
単一方向シグナリングおよび同時両方向シグナリング
トーラス・ネットワークの帯域幅は、プロセッサ・クロック・サイクルごとに両方向で４ビットのデータを転送できるようになっていることが好ましい。この高速レートを達成する実施形態の１つが、各方向に１つの、２つの単一ビット単一方向リンクの使用である。したがって、各リンクは、プロセッサ・クロック周波数の４倍と等しいデータ・レートで動作しなければならない。これらの接続が、シリアル・リンクであり、データだけ（別々のクロックなし）が伝送されることが好ましい。代替的な実装では、参考文献、Kevin Lamb、Larry R. Dennison、William J. Dally、「Simultaneous Bidirectional Signaling for IC Systems」、Proceedings ICCD Conference、pp. 430-433、1990年１０月、およびMatthew Haycock、Randy Mooney、「A 2.5 Bb/s Bidirectional Signaling Technology」、Hot Interconnects V Proceedings、pp. 149-156、1997年８月に記載のものなどの同時両方向（ＢｉＤｉ）シグナリングを使用してもよい。すなわち、各ノードの間のリンクは、同時に両方向で信号を搬送する。したがって、リンク上の各方向でのデータ・レートを、同時ＢｉＤｉを使用することによって、プロセッサ・クロック周波数の２倍まで減らすことができる。同時ＢｉＤｉによって可能にされるより低速のデータ・レートによって、必要な相互接続の帯域幅が減り、より複雑なドライバ／レシーバ回路を犠牲にして、データ・キャプチャ回路でのより緩和されたタイミング・バジェット（timing budget）が可能になる。これらの理由から、同時ＢｉＤｉが、より拡張可能にもなることがある。しかし、「逆方向チャネル」クロストークに起因する追加のノイズを、ノイズ・バジェットおよびタイミング・バジェット以内に含めなければならない。図２１に、２つのノードを相互接続するケーブル４５５の両端を駆動する差動同時両方向ドライバ／レシーバ回路４５０の対を示す。
【０１３３】
図２１からわかるように、差動同時両方向ドライバ／レシーバ回路４５０の対は、信号線の各端４６０ａおよび４６０ｂの被駆動信号の複製を、同一のそれぞれの端で差動レシーバ４７０ａおよび４７０ｂの１つの入力に印加することによって動作する。これによって、他端からの信号の検出の閾値が効果的に設定され、したがって受信される波形の近端ドライバの寄与が打ち消される。
【０１３４】
グローバル・ツリー・ネットワークでは、３次元トーラス・ネットワークと同一の回路および相互接続技術が使用されることが好ましい。したがって、接続ごとの生データ・レートは同一である。しかし、グローバル・ツリー・ネットワークには、各方向で４つの個々のデータ・リンクが含まれる。したがって、グローバル・ツリー・ネットワークは、プロセッサ・サイクルごとに１６ビットを転送することができる。これらの相互接続ネットワークで要求される高いデータ・レートに起因して、差動シグナリングが、すべての接続に使用される。既知のように、差動シグナリングは、改善されたノイズ・マージン、コモン・モード除去、および低い電源（同時スイッチング）ノイズ生成を含むさまざまな長所をもたらす。本発明のパッケージ化アーキテクチャでは、これらの高速差動相互接続が、本質的に２種類であることが指示される。最も一般的な接続は、プリント回路カードを介するノードツーノードからまたはカードおよびバックプレーンの配線の組合せである。
【０１３５】
クロック分配
本発明のスーパーコンピュータでのシリアル・データ・キャプチャは、非常に低電力になるように設計されている。この目的に向けて、データが、ローカル・クロックを用いて始められ、ローカル・クロックを用いてキャプチャされ、この２つのローカル・クロックは、同一周波数であるが任意の位相である。これによって、データと共に起動クロックのコピーを送信するという要件がなくなるが、この要件があると、実現されるシリアル・リンクの場合に、ＡＳＩＣを出るワイヤの数および駆動する回路の数が増える。
【０１３６】
この条件を達成する最も簡単な形は、システム内のすべてのプロセッサに、プロセッサ速度のクロック（最高速度のクロック）を分配することである。代替案では、低速クロックを分配し、ＡＳＩＣ内で所望のプロセッサ周波数にシフトすることができるが、これに必要なＰＬＬは、データ・キャプチャに有害であると論じられてきた。代替案は、プロセッサ速度の２倍のクロックを分配することであるが、これは、ＡＳＩＣ内でのプロセッサ・クロックの抽出を必要とする。これは、ＰＬＬなしで達成することができ、望み通りに、プロセッサ速度の２倍または４倍でチップからデータを駆動するための正確なクロック・エッジが可能になる。
【０１３７】
所望の多数のクロック・ファンアウト基板および所望の長さのケーブルを含むクロック分配を一緒に接続して、所望の深さを達成することができる。たとえば、１０のクロック・ファンアウトの場合に、５レベルの再駆動によって、１０００００個のクロックが生成される。たとえば、本明細書で図１４に関して説明したように、スーパーコンピュータに関するカード、基板などへのエレクトロニクスのセグメント化で、６レベルの再駆動が必要である。この形で、１００ｐｓ未満の最大スキューを有し、少なくとも７００ＭＨｚ、望ましくは１．４ＧＨｚの周波数の、安定した分配されるクロックが実現される。
【０１３８】
シリアル・データ・キャプチャ
ＡＳＩＣノードに関して２．８Ｇｂ／ｓ（各方向）のシリアル・リンクの帯域幅および最小限でも各方向で１．４Ｇｂ／ｓのデータ・レートとして、帯域幅は、本明細書で説明するように両方向である。両方向の要件は、本明細書で説明するように、低電力および低コストという動作制約に従って、複数の形で処理される。この手法に関連する特定の課題が、低電力制約である。これが、リンク伝送に関する相対位相情報の欠如と結合されて、標準的なＰＬＬクロックおよびデータ回復の設計が排除される。
【０１３９】
ＰＬＬを使用しない、データと共に移動するソース同期クロックの使用によるデータ伝送の達成という作業は、当技術分野で既知である。本発明では、入出力の数および信号の数が効果的に２倍になることに起因して、このクロックが、データと共には送られないので、位相抽出およびデータ回復が、やはり実行される。位相情報を回復できる複数の可能な形がある。
【０１４０】
この目的に使用されることが好ましいディジタル・データ・キャプチャ方式を、図２２および図２３に関してこれから説明する。図２２および図２３に、それぞれ、信頼性があり低電力で少数のセルを用いて、クロック速度の２倍から４倍のレートでデータをキャプチャし、ローカル・クロック・ドメインに移すという目的を達成する、シリアル・データ・キャプチャ用の受信マクロ・ブロック５００および送信マクロ・ブロック５２０を示す。図２２および図２３からわかるように、内部クロック周波数は、ビット時間の周波数の半分すなわち、ダブル・データ・レート（ＤＤＲ）である。この方法は、望まれるならば、ＳＤＲモードで使用するか、クワッド・データ・レート方式に拡張することもできる。この方法は、たとえば両方向シグナリングの代替策に関して、７００ＭＨｚクロックおよび１．４Ｇｂ／ｓ／対／方向の同時両方向通信と共に働く。
【０１４１】
受信マクロ・ブロック５００での待ち時間は、データのバイト位相に応じて７ビット時間と２ビット時間の間であるが、バイト出力をスキップすることによって、待ち時間を３から４ビット時間まで減らすことができる。これは、データ内容を無視できる時の信号再駆動に関して適度な手法である。
【０１４２】
図２２に示されたデータ・キャプチャ用の受信マクロ・ブロック５００に関して、高速タップ付き遅延線を介してビットを送り、ローカル・クロックを用いてすべてのタップをサンプリングすることによってデータをキャプチャする方法を実現する。各タップをその隣と比較して、同一であるかどうかを調べる。これらの比較の集合体が、クロックド・ストリング（clocked string）を形成し、このクロックド・ストリングが、前のクロックド・ストリングと組み合わされて、最適サンプリング点の判定に使用することができるヒストリが生成される。最適サンプリング点は、データが遅延タップの間で変化しない領域を探すことによって、ヒストリ・ストリングから見つけることができる。ヒストリは、ローカル・クロックごとに更新される。プログラム可能な永続性期間を有し、分離ビット・エラーに対して免疫性であるキャプチャ方式を開発できるようにするために低い頻度で更新される追加の「アイ」パイプライン式レジスタがある。永続性時間は、任意の長さに設定することができるが、信頼性のある形でデータ・エッジをサンプリングするのに必要な最大時間より短くしてはならない。ローカル・クロック期間より高速のビット時間に対応するために、クロックの両方のエッジが、ＤＤＲデータのキャプチャに使用される。クロックの各エッジは、最適のアイを見つけるために、それ自体の関連するキャプチャ・レジスタおよび独立の論理を有する。したがって、この技法は、ローカル・クロックおよび送信側クロックのデューティ・サイクルの非対称性に対して十分に免疫性である。
【０１４３】
システム・ソフトウェア
ソフトウェアは、すべてのコンピュータのクリティカルな構成要素であり、新しいアーキテクチャを有するコンピュータで特に重要なので、最下位レベルで非常に単純かつ効率的でありながら、ほとんどの並列アプリケーションを稼動させるのに十分である、ソフトウェアの堅牢な階層化システムが実現される。例示的実施形態のシステム・ソフトウェアには、７つの統合されたサブシステムが含まれ、これらのサブシステムを一緒にして「オペレーティング環境」と称する。これらのサブシステムのそれぞれは、ホスト複合体（ホスト計算機）、計算ノード、および入出力ノードにまたがる、分散構成要素と、そのインターフェースからなる。これらのサブシステムには、１）計算機管理、構成、および診断と、２）信頼性・可用性・保守性（ＲＡＳ）と、３）区画およびジョブ管理と、４）科学／技術計算カーネルおよびランタイム環境と、５）ファイル・システムおよび入出力と、６）アプリケーション開発およびデバッグ・ツールと、７）性能トレースおよび視覚化ツールが含まれる。
【０１４４】
ホスト複合体
ホスト複合体は、アプリケーション開発およびシステム管理のための計算機へのインターフェースを提供し、ホスト複合体には、メッセージ受渡ソフトウェアを含む、アプリケーション・プログラマに提供されるシステム・カーネル動作およびソフトウェア・インターフェースを含む計算ノード・ソフトウェアと、アプリケーションをホスト複合体にインターフェースする入出力ノード・ソフトウェアが含まれる。ホスト複合体は、後述するように、ソフトウェアを稼動させるための必要に応じて、小さくすることも大きくすることもできる。
【０１４５】
システム・コンソールおよび区画管理
システム・コンソールは、ＲＡＳデータベースと共に、区画へのノードの割振りの責任を負う。本明細書で図１９および図２０に関して説明したハードウェア分割戦略では、独立の電気的に分離された区画を作成する空間分割モデルが使用される。本発明のシステムでは、計算機上で同時に使用可能な区画の数を、１〜１２８の範囲とすることができる。最小の区画は、８×８×８トーラスと８つの入出力ノードからなり、区画を、任意の次元で８ノードの倍数で増やすことができる。ホスト複合体のソフトウェアによって、対話インターフェースを介してまたは不在操作のためにバッチ管理システムを介してこれらの区画にアクセスできるようになる。使用することができるバッチ管理システムに、ＬｏａｄＬｅｖｅｌｅｒ（商標）が含まれる。
【０１４６】
ファイル・システム
ホスト複合体の最も重要なタスクの１つが、システムで稼動する並列アプリケーションのファイル入出力の必要をサービスすることである。一実施形態では、ハードウェアおよびソフトウェアが、計算機によって提供される計算リソースと独立に、１テラビット毎秒を超えるピーク維持可能帯域幅まで、絶対容量および集合帯域幅の両方に関して、ファイル・システムをスケーリングできるようになるように設計される。複数のアプリケーションが、適度なファイル入出力の必要を有し、他のアプリケーションは、飽くことを知らない必要を有する。ファイル・システムのサイズを決定する他の要因が、総合的なアプリケーションの性能に過度に影響せずに、透過的およびアプリケーション・サポートの両方の、チェックポイントおよびリスタート機能のサポートを提供するというオペレーティング環境の望みである。
【０１４７】
図２４に、フェールオーバを備えたツイン接続ＳＣＳＩ ＲＡＩＤの概念的な繰り返し構造を有するファイル・システム５５０を示す。図２４のファイル・システム５５０は、ホットスワップＳＣＳＩディスク・ケージ５５３ａおよび５５３ｂなどから構成され、このディスク・ケージのそれぞれに、標準ラックマウント・フレーム内の複数のディスク・ドライブが含まれる。これらのディスク・ケージに、複数チャネル・ハードウェアＲＡＩＤ（新磁気ディスク制御機構）コントローラ、冗長電源、および２つの外部ＳＣＳＩバス接続が含まれることが好ましい。ハードウェアＲＡＩＤコントローラは、複数のディスク・ドライブをＲＡＩＤ「ストライプ・セット」にグループ化し、ＲＡＩＤ−０（保護なしの単純なストライピング）からＲＡＩＤ−５（パリティ保護付きのブロック回転式ストライピング）までの範囲の複数のストライプセット構成をサポートする。複数のＲＡＩＤストライプセットが、ディスク・ドライブのより大きいアレイにまたがって一緒にストライピングされる、「スパニング」と称するより高水準のＲＡＩＤも、このハードウェア編成によってサポートされる。この例が、ＲＡＩＤ−５０であり、これは、複数のＲＡＩＤ−５ストライプセット自体が、ディスク・ドライブのより大きいクラスタにまたがってストライピングされる。本発明の目的のためには、ＲＡＩＤ−５は、必要な信頼性を提供する。この構成では、複数ディスクＲＡＩＤ−５ストライプセットが、オンライン予備として使用可能なケージごとに少なくとも１つのディスクを有するように構成される。アクティブなディスク・ドライブの１つが故障した場合に、ハードウェアＲＡＩＤコントローラは、故障したドライブからのデータを予備に透過的に再構成し、この問題についてシステム管理ソフトウェアに通知すると同時に、故障したディスク・ドライブのホットスワップ・ベイのＬＥＤを点滅させる。
【０１４８】
ディスク・ケージのほかに、ファイル・システム５５０では、ラックマウントの標準的なＰＣが使用される。これらのＰＣのそれぞれに、２チャネルＳＣＳＩコントローラが含まれる。好ましい構成では、ＳＣＳＩチャネルの一方が、ＲＡＩＤディスク・ケージ、たとえば５５３ａへの「１次」インターフェースと指定され、他方が、ＲＡＩＤディスク・ケージ、たとえば５５３ｂへの、ホット・スタンバイまたは「フェールオーバ」モードにされ、そのＲＡＩＤケージの１次ＰＣが故障した場合にファイル・システム・インターフェースを引き受ける準備ができている。この構造では、ＲＡＩＤディスク・ケージが、「ツイン接続され」、これは、その内部ＳＣＳＩバスが、両端で、サーバ５５５、５５６などとして示された異なるホストにインターフェースすることを意味する。
【０１４９】
サーバＰＣに対する２つの追加構成要素がある。第１の構成要素は、リモートからの構成、ブート、電源オン／オフ、各ＰＣへのイーサネット（登録商標）接続またはシリアル接続を介するＰＣの監視の能力を提供する、「基本管理コントローラ」（ＢＭＣ）などの「リモート管理」インターフェース構成要素である。第２の構成要素は、ギガビット・イーサネット（登録商標）接続である。この接続は、マルチポート・ギガビット・イーサネット（登録商標）・スイッチを介する、入出力ノードへのインターフェースを提供する。
【０１５０】
ＲＡＳデータベース
過渡的（ソフト）または永続的（ハード）のいずれであれ、本発明のスーパーコンピュータで、すべての可能な障害状態を追跡し、分析する能力は、非常に重要である。この目的のために、パッケージ化プランによって、システム・ソフトウェアに、計算機の主要な構成要素のすべての正常性および状況に関する完全な情報を与える。どの場合でも、この情報によって、計算機内の正確な位置が伝えられ、適当な場合に、ラック、ラック内のミッドプレーン、ミッドプレーン上のノードカード、およびノードカード上のノードが識別される。システム全体のイーサネット（登録商標）・アダプタごとに、その一意の「ＭＡＣ」ハードウェア・アドレスが、ラック、ミッドプレーン、およびノードカード位置によって割り当てられ、これによって、かかる装置の正確な位置がイーサネット（登録商標）・アドレスにエンコードされる。ファンおよび電源内などのセンサおよびモニタの一部は、計算ノードおよび入出力ノードと独立に動作するが、ＥＣＣ障害などの他のセンサおよびモニタは、情報を収集しホスト複合体に転送する、ノードで稼動するシステム・ソフトウェアに情報を供給する。
【０１５１】
公称範囲の外に含まれるすべての条件が、「ＲＡＳイベント」（ＲＡＳは信頼性・可用性・保守性を表す）を生成する能力を有する。ホスト複合体で稼動するシステム・ソフトウェアが、イーサネット（登録商標）接続された、センサおよびモニタを管理するマイクロコントローラ、または計算ノードおよび入出力ノードのノード・カーネルのいずれかから、１００Ｍｂイーサネット（登録商標）ＲＡＳネットワークを介してこれらのＲＡＳイベントを集める。この情報は、ホスト複合体で維持される複数索引付きのＲＡＳデータベースにログ記録される。このデータベースで追跡されるＲＡＳイベントには、１）ＥＣＣ訂正された単一ビット・エラーおよび訂正不能な複数ビット・エラーを含む、物理アドレスによって分離されたメモリ障害と、２）トーラスまたはグローバル・ツリーの高速リンクあるいは１００Ｍビットまたは１Ｇビットのイーサネット（登録商標）のいずれかでの、ＣＲＣ不一致に起因するパケット再試行を含むネットワーク障害と、ラック電源とノードカードのＤＣ−ＤＣコンバータの状況とを含む、公称範囲外の電圧および電力の変動と、４）ファン状況およびファンＲＰＭを含む、ラック内でまたは個々のノードによって検出される温度変動が含まれる。
【０１５２】
ＲＡＳデータベースは、次のように使用される。第１に、これは、システム管理者および区画管理ソフトウェアに計算機の正常性のリアルタイムの光景を与えるオンライン・ツールである。第２に、ＲＡＳイベントは、計算機内の地理的位置によって個々の構成要素に分離されるので、ＲＡＳデータベースは、パッケージ化、電力、および冷却の設計を検証するのに使用され、したがって、計算機の保守性が改善される。第３に、計算機の完全な「病歴」を維持することによって、ＲＡＳデータベースは、経時的に計算機のオンライン可用性を予測するようになるデータ・マイニング分析をサポートし、これによって、おそらくは実際の構成要素の故障の前に、システム保守をスケジューリングし、計画できるようになる。うわべは無害なイベントの予測的な性質の例が、メモリ・チップで発生し、この場合に、メモリ・バンクでの、繰り返されるソフト・エラーまたはソフト・エラーのレートの加速によって、切迫したハード障害が強く示される。同様の分析が、データ・ケーブルおよび入出力装置と、ハード・ディスクに成功裡に適用されてきた。
【０１５３】
低水準デバッグ環境
本発明のスーパーコンピュータでは、各ＡＳＩＣが、完全なＩＥＥＥ １１４９．１ ＪＴＡＧインターフェースをサポートする、自己完結型の低水準デバッグ・クライアントを提供する。この低水準デバッグ環境は、ＲＡＳおよび診断環境と密に結合される。この環境は、チップ内のすべての設計された状態およびデバイスに関する、ホスト計算機（ホスト複合体）からのＡＳＩＣへの可視性を提供する。この環境は、各プロセッサを調べる能力も提供し、すべての状態を検査するか修正できるようにし、シングルステップ動作またはブレークポイント設定をサポートする。この環境を用いると、わずかに上位の水準で状態を検査または修正することができる命令を、命令ストリームに挿入することが、透過的に可能になる。このデバッグ環境は、オンチップの完全なＩＥＥＥ １１４９．１ ＪＴＡＧポートにインターフェースする１００Ｍｂ ＲＡＳネットワークを介してサポートされる。ＪＴＡＧデバッグ・ポートへのアクセスは、アプリケーション動作にとって透過的に行われる。いくつかの場合に、ＪＴＡＧデバッグ・ポートへのアクセスは、システム・カーネルとインターフェースする。ホスト複合体のソフトウェアは、ＩＭＤ標準組込みソフトウェア開発ツールであるRiscWatch（商標）に基づくものとすることができる。他の選択肢は、現在はハイエンド・サーバ・オファリングで使用される、拡張BlackWidow（商標）デバッグ環境である。
【０１５４】
高水準並列デバッグ環境
前述の低水準デバッグ環境のほかに、オペレーティング環境は、さらに、並列アプリケーションの高水準デバッグをサポートする。マルチプロセッサ・アプリケーションのデバッグ・インターフェースを提供する人気のあるツールの１つが、Etnus, LLC.社によって開発されたTotalView（商標）であり、これには、２つの主要な構成要素が含まれる。第１の構成要素は、ホスト計算機上で「デバッグ・サーバ」として稼動する、数百個のノードで稼動する並列アプリケーションのデバッグに使用されるグラフィカル・ユーザ・インターフェース（ＧＵＩ）である。TotalViewは、異なるノードで稼動するアプリケーション・ソース・コードの独立のビューと、並列アプリケーションのデータの状態を追跡できる変数ウィンドウを提供する。TotalViewは、並列アプリケーションの分散データ構造の内容の視覚化もサポートする。第２の構成要素は、ptrace()インターフェースをサポートする「デバッグ・クライアント」である。
【０１５５】
TotalViewのそれに非常に似たクライアントサーバ・モデルを既にサポートしている、Gnuデバッガ（ｇｄｂ）などの、追加の分散デバッグ環境を実現できることを理解されたい。
【０１５６】
並列アプリケーションでの、正しさのバグ、競合状態、またはアドレッシング障害のほとんどが、プログラムが数百個のノードを超えてスケーリングされるよりかなり前に除去されるので、ソース・コード・レベル・デバッグは、これらのタイプのエラーを見つけるのに最も適する。数百個のノードを超えるスケーラビリティに関して、並列プログラミングでの作業の多くが、性能チューニングおよびロード・バランシングで行われ、これは、個々のＵＴＥインターバル・ファイルおよびマージされたＵＴＥインターバル・ファイルを視覚化するツールであるUTE Gantt Chartなどのアプリケーション視覚化およびトレース・ツールによって最もよく達成される。
【０１５７】
科学および技術計算カーネル
計算ノードおよび入出力ノードについて提案される科学および技術計算カーネルを、これから説明する。
【０１５８】
アーキテクチャ的に、ノードＡＳＩＣ内で、計算プロセッサおよび入出力プロセッサは、同一であり、ハードウェアの観点から、すべてのオンチップ・デバイスへの対称アクセスを有する。この２つのプロセッサの間の唯一の相違は、一意のインスタンス番号を提供する、チップ上の各コアの「プロセッサ識別レジスタ」（ＰＩＲ）の１ビットのストラッピングである。規約により、低水準ＪＴＡＧデバッグを助けるために、システム・ソフトウェアは、コアに、たとえば計算プロセッサとして０と等しいＰＩＲを用い、たとえば入出力プロセッサとして１と等しいＰＩＲを用いてラベルを付ける。
【０１５９】
簡単に言うと、計算プロセッサの仕事は、気を散らさずにアプリケーション・コードを実行することである。入出力プロセッサの仕事は、メッセージの送信および受信という作業のほとんどを含む、並列オペレーティング・システムに要求されるすべてのアクティビティを計算プロセッサからオフロードすることである。この２つのプロセッサの間の単純で効率的なプログラミング・インターフェースと共に、この機能の分離によって、割込み、タイマ・ティック、コンテキスト・スワップ、保護ドメイン・クロッシング、およびほとんどの監視プログラム呼出しを含む、従来のオペレーティング・システムに固有のオーバーヘッドおよび非同期性なしに、各プロセッサがその使命を実行できるようになる。この構造によって、応答し、アプリケーション・エラー、クラッシュ、またはデッドロック、ならびに非致命的ＲＡＳイベントに耐える、特権を与えられ保護されるカーネル・コンテキストの維持が可能になる。全体として、この構造は、従来の手法よりはるかに微細な粒度で、並列アプリケーションのスケーラビリティの増大につながる、予測可能で反復可能な性能を提供する。
【０１６０】
入出力プロセッサは、ほとんどの時間を監視プログラム状態で過ごし、着信パケットについて高速通信リンク・バッファおよびイーサネット（登録商標）・コントローラを監視する。入出力プロセッサは、さらに、メッセージ送信またはファイル入出力などのサービス要求についてアプリケーションを監視し、ＲＡＳイベントについてノード自体を監視する。入出力プロセッサは、メッセージ受信突合せオーバーヘッドが、ＭＰＩ−２によって提供されるものを含む一方的な通信の場合のように単純かつ効率的に保たれる場合に、最高の帯域幅で通信リンクをサービスしながらこれらのタスクのすべてを実行することができる。
【０１６１】
全体として、この編成は、ほとんどのアプリケーションについて通信に対する計算の最善の比率をもたらすので、「バランスがとれている」。しかし、計算と通信が均等に分配されず、むしろバーストで交番するアプリケーションについて、「高度な計算制約（Highly Compute Bound）と称する代替手法が使用可能である。このモードでは、通信が遊休になる時間ウィンドウ中に入出力プロセッサの計算力を使用する、追加のアプリケーション・スレッドが作成される。しかし、この動作のモードは、コストなしではない。というのは、計算プロセッサ・スレッドと入出力プロセッサ・スレッドの間でのデータの共用が、アプリケーションによって明示的に管理されなければならないからである。ほとんどの場合に、これには、単純に、Ｌ１キャッシュをライトスルー・モードまたはおそらくはキャッシュ禁止モードにしたシステム呼出しが用いられる。さらに、すべての予期されないメッセージによって、割込みが生成される可能性が高く、これによって、予想される利益の一部が盗まれる。このモードでＲＡＳイベントが発生する場合には、やはり割込みが生成される。
【０１６２】
仮想記憶、キャッシュ、および事前取出しの管理
各ノードが単一のアプリケーション・コンテキストをサポートするという事実にもかかわらず、カーネルは、ＰＣ−４４０プロセッサによって複数の重要な形で提供される仮想記憶の管理機能、保護機能、および変換機能を、完全に利用する。第１に、カーネルは、アプリケーションによる誤ったまたは「無法な」ロードおよびストアに対してそれ自体を保護し、その結果、カーネルを破壊できなくする。これによって、カーネルによって提供される高水準のデバッグ機能およびトレース機能が無傷のままになることと、ホスト複合体が、ＲＡＳネットワークだけを介する場合であっても、カーネルと必ず相互作用できることが保証される。第２に、変換をサポートすることによって、カーネルが、アプリケーションを再コンパイルまたは再リンクする必要なしに、またはノードをオフラインと宣言する必要なしに、物理メモリの不良ページを避けてマッピングすることによって、システムの「可用性」を高めることができる。このメモリの仮想ビューによって、静的に割り振られたデータ区域および関数のアドレスが、同一の実行イメージを使用する異なるノードで同一になることを保証することによって、一方的な通信およびアクティブ・メッセージ・プログラミングも単純になる。第３に、本明細書で詳述するように、カーネルが、アプリケーションまたはランタイム・ライブラリ・ディレクティブに基づいて、アプリケーションの性能を最適化するために、キャッシュおよび事前取出しハードウェアの挙動を制御することができる。第４に、アドレス空間を複数の領域に編成することによって、動的に割り振られるデータおよびスタック区域を、過度に複雑なガーベジ・コレクションなしで増やし、減らすことができる。これによって、透過的チェックポイント・サポートの最適化ももたらされる。というのは、カーネルが、どれだけの領域がアプリケーションによる修正の対象であるかを知るからである。
【０１６３】
ＰＰＣ−４４０プロセッサでは、変換索引緩衝機構（ＴＬＢ、または、この場合には「ソフトＴＬＢ」）での変換のソフトウェア管理が使用されるので、カーネルは、大きい変換テーブルのストレージ・オーバーヘッドを受ける必要がない。さらなる最適化が、ＰＰＣ−４４０に、多数のＴＬＢ項目（６４個）が含まれ、そのそれぞれが、アドレス空間の可変量（たとえば１ＫＢ〜２５６ＭＢ）をカバーできるという事実から生じる。これは、最も複雑なアプリケーション以外のすべてについて、これらの変換が、一旦確立されたならば、更新または置換される必要がない可能性が高いことを意味する。これに対する例外は、ランタイム・ヒープ・サイズ、アプリケーション・スタック・サイズ、またはキャッシュ管理ポリシが、そのような変更を必要とする時である。
【０１６４】
カーネルは、さらに、仮想記憶システムを使用して、メモリ階層のキャッシュ機構および事前取出し機構の挙動を制御する。これは、計算プロセッサと入出力プロセッサの間で明示的に共用されるメモリ区域に関して特に重要である。仮想記憶システムを、メモリ階層の挙動および性能の最適化および微調整に使用することもできる。ＰＰＣ−４４０では、各ＴＬＢ項目に、この目的に使用される下記の構成ビットがある。これらの属性は、メモリ・バスに置かれるTransfer Attributes（転送属性）で使用可能にされ、したがって、ＴＬＢ項目ごとの基準でメモリ・サブシステム全体の動作を構成するのに使用することができる。
【０１６５】
Ｕ０：ユーザ定義ストレージ属性０。４４０コアによって無視される。
Ｕ１：ユーザ定義ストレージ属性１。ストレージ・アクセスでＩ／Ｄキャッシュの「通常」部分と「過渡」部分のどちらを使用しなければならないかを選択するのにこのビットを使用するために、ＭＭＵＣＲ［Ｕ１ＴＥ］（Ｕ１過渡イネーブル（U1 Transient Enable））ビットを介して、４４０コアをプログラムすることができる。
Ｕ２：ユーザ定義ストレージ属性２。４４０コアは、ＭＭＵＣＲ［Ｕ２ＳＷＯＡＥ］（割振りイネーブルなしのＵ２ストア（U2 Store With Out Allocate Enable））ビットを使用して、データ・キャッシュをミスしたストアによって、キャッシュ内のラインが割り振られるかどうかを制御する。セットされた場合に、Ｌ３は、このポリシも尊重しなければならない。
Ｕ３：ユーザ定義ストレージ属性３。４４０コアによって無視される。
【０１６６】
これによって、メモリ・バスで明示される２ビットの情報、Ｕ０およびＵ３が提供されて、事前取出しポリシまたは問題の他のものが制御される。これらのビットの可能なエンコードには、下記が含まれる。
０ｂ００：このページのすべてのレベルで事前取出しをディスエーブルする。以下の「Ｇ」を参照されたい。
０ｂ０１：Ｌ３で明示的に事前プログラムされた事前取出し。学習モードをディスエーブルする。
０ｂ１０：事前取出し「学習」モードをイネーブルする。
０ｂ１１：使用可能、おそらくは代替事前取出しポリシをイネーブルする。
【０１６７】
問題のＴＬＢ内の、バスで明示される他のビットには、下記が含まれる。
ライトスルー（Write-Through、Ｗ）：カーネルは、明示的に共用されるデータ領域についてのみ、このビットをセットする。というのは、これによって、性能ペナルティが押し付けられるからである。
キャッシング禁止（Caching-Inhibited、Ｉ）：セットされた時に、Ｌ１およびＬ２でのキャッシングを禁止する。Ｌ３は、弱く順序付けられるが、コヒーレントである。キャッシングは、入出力空間およびＳＲＡＭについて禁止される。
メモリ・コヒーレンス要求（Memory-Coherence-Required、Ｍ）：Ｌ２でのスヌープによってメモリ待ち時間に１サイクルが追加される場合に、カーネルは、明示的に共用される区域だけについてこのビットをセットする。Ｌ１は、Ｍがセットされる時にライトスルーにセットされる。
保護（Guarded、Ｇ）：このビットは、事前取出しおよび投機のディスエーブルとして働き、順序通りのアクセスを強制する。通常は、入出力空間についてセットされるが、ある種の共用されるＳＲＡＭ区域についても必要である。
【０１６８】
カーネルＲＡＳ管理
カーネルは、遭遇するすべてのＲＡＳイベントを、ホスト複合体内のＲＡＳデータベース・サーバに報告する責任を負う。良性のイベントの場合には、後の報告のためにエラーが蓄積される場合がある。発生したイベントのタイプと共に、カーネルは、できる限り多くの関連情報を集めて、エラー状態の分離または理解を助ける。たとえば、メモリ・エラーの場合に、この情報に、エラーが発生した物理アドレスおよび仮想アドレスと、このアドレスによって参照されたセグメントのタイプが含まれる。さらに、このメモリ・エラーが、ＥＣＣ保護されない装置またはアドレスでのものであった場合に、その情報も、キャプチャされ、報告され、おそらくは、アプリケーション稼動の停止または終了がもたらされる。一般に、低水準のデバッグ・ツールおよび診断ツールによってノードを検査する機会が与えられるまで、状態は破棄されない。
【０１６９】
ＲＡＳイベントを報告するデフォルトの方法は、１００Ｍｂイーサネット（登録商標）を介してホスト複合体にメッセージを送ることである。ＲＡＳイベントによって、イーサネット（登録商標）自体の問題が示される場合には、メッセージを、報告のために入出力ノードに転送することができる。
【０１７０】
アプリケーション・チェックポイントおよびリスタートのサポート
カーネルは、ホスト複合体によって提供されるファイル・システム・インターフェースと協同して、アプリケーションによってサポートされるチェックポイントおよびリスタートのサポートを提供する。さらに、アプリケーションの完全な状態をキャプチャし、復元するカーネルの能力を援助し、その性能を改善するハードウェア・アーキテクチャを含む透過的チェックポイント機能が、提供される。
【０１７１】
複数のアプリケーションが、チェックポイント機能に関する特殊なサポートを必要としない。そのようなアプリケーションは、単純なファイル入出力呼出しを介して、その分散状態の記憶および復元を管理することができる。他のアプリケーションは、静止状態を簡単に達成できない場合があるが、グローバル・バリアを介して、システムによって開始される透過的チェックポイント機能によい機会がもたらされる。そのようなチェックポイントは、時刻に基づいて、または次のグローバル・バリアでチェックポイントをとらなければならないことを示すホスト複合体からの通知に基づいて開始することができる。
【０１７２】
チェックポイントおよびリスタート・サポートは、ＲＡＳ管理ソフトウェアとインターフェースする。信頼性および可用性の計画で、診断ソフトウェアまたは検証ソフトウェアを規則的な間隔で実行することが要求される場合に、この保守を実行する自然な点が、チェックポイント境界である。
【０１７３】
メッセージ受渡サポート
カーネルによって提供されるメッセージ受渡ソフトウェア・サポートを、これから説明する。最下位レベルで、カーネルは、システムの内部高速ネットワークを効率的にサポートするように設計されたシステム・プログラミング・インターフェース（ＳＰＩ）をエクスポートする。トーラス・ネットワークとグローバル・ツリー・ネットワークの両方について、ＳＰＩは、ポイントツーポイント通信および集合的通信またはクラス・ベースの通信のサポートを提供する。ＳＰＩは、ＭＰＩなどの高水準アプリケーション・プログラミング・インターフェース（ＡＰＩ）の移植ベースを提供し、ＭＰＩ−１、ＭＰＩ−２、およびＭＰＩ−ＩＯのサブセットを効率的にサポートする。
【０１７４】
一方的なメッセージング
本明細書で説明するように、単純で効率的なメッセージ受渡プロトコルを使用することによって、すべてのリンクの帯域幅全体が、短いメッセージについても持続される。一方的なメッセージングでは、メッセージによって、宛先または「ｇｅｔ」の場合にはソースの、データのメモリ・アドレスが伝えられる。これによって、ハードウェアが、多数の小さいパケットからの行列転置などのデータのブロックを、これらのパケットの処理での過剰なソフトウェア・オーバーヘッドなしで、メモリ内に直接に組み立てられるようになる。サポートされる一方的な通信プロトコルの例が、ＭＰＩ−２に含まれる。このプロトコルでは、「ｐｕｔ」および「ｇｅｔ」モデルを使用して、事前に確立されたまたは「オープンされた」通信ウィンドウとの間でデータを移動する。このモデルは、このシステムについて特に良好に働く。というのは、通信ウィンドウの使用によって、計算プロセッサと入出力プロセッサの間でメモリ・コヒーレンシを管理する機会がもたらされるからである。メモリ・コヒーレンスは、ウィンドウを介して管理されるので、このオーバヘッドを、複数のメッセージにわたって償却することができる。本発明のスーパーコンピュータ・システムで、「ｐｕｔ」は、「ｇｅｔ」より効率的である。というのは、「ｇｅｔ」が、追加されたプロトコル・メッセージを必要とし、これによって、本質的に、「ｇｅｔ」が、リモート・ノードから駆動される「ｐｕｔ」に変換されるからである。
【０１７５】
実現することができる一方的なメッセージングのより強力な形は、「ｐｕｔ」に似るが、宛先ノードで呼び出される関数アドレスが追加される。このメッセージ到着によって動作がトリガされるメッセージングの形態を、「アクティブ」と称する。アクティブ・メッセージは、到着時にデータを変換するか何らかの形で計算しなければならない時に、特に強力である。ＭＰＩ−１では、ユーザが、集合的通信に対して動作するリダクション機能を定義できるようにすることによって、アクティブ・メッセージの単純で制限的な形が持たされる。現在のシステムでは、これを一般化して、計算プロセッサまたは入出力プロセッサのどちらが機能を実行するかを選択する能力を提供する。これらの機能は、アプリケーション・コンテキスト内でユーザモードで実行される。これは、アプリケーションが入出力プロセッサの計算能力を利用できる他の形である。アクティブ・メッセージは、さらに、カーネル対カーネル・メッセージングのためにシステム・オペレーティング環境によって内部的に使用される場合がある。これの例は、入出力ノードがファイル入出力要求をサービスすることを計算ノードが要求する時に発生する。
【０１７６】
集合的通信
集合的通信をシステム・ネットワークにマッピングする時には、まず、特定の通信が、トーラス・ネットワークまたはツリー・ネットワークのどちらに適するかを判断しなければならない。考慮すべき要因には、通信グループのトポロジ、通信の期待される帯域幅要件、通信がツリーによってサポートされる「グローバル機能」を活用できるか否か、およびその時のネットワークの１つでのアクティビティがトラフィックの分配に他のものを使用することを優先する可能性があるかどうかが含まれる。ノードの任意のグループ化を、どちらのネットワークでも作成することができる。最も単純な場合は、通信が真にすべてのノードへのブロードキャストである時であり、この場合には、明らかにグローバル・ツリーが優先される。しかし、ノードの列へのマルチキャストの場合には、本明細書で説明したように、トーラスのクラス経路指定を優先することができる。
【０１７７】
ランタイム・ライブラリ
計算ノードのソフトウェアは、アプリケーション・プログラマに、よく知られたｕｎｉｘ風の開発環境に見えることが好ましい。これを達成するために、たとえばＣ、Ｃ＋＋、およびＦｏｒｔａｎ９５のランタイム・ライブラリの標準セットのサブセットが提供される。可能な範囲で、サポートされる機能では、オープン標準規格のＰＯＳＩＸ互換インターフェースが維持される。しかし、これらのライブラリによって提供される機能性の一部が、システム・アプリケーションによって使用されず、並列計算環境で意味をなさないことは、明らかである。
【０１７８】
ハードウェア・アーキテクチャの機能性を取り込むシステムへの低水準システム・プログラミング・インターフェース（ＳＰＩ）を引き渡す追加のインターフェースが設けられる。したがって、ＳＰＩは、ＭＰＩ（−１、−２、および−ＩＯのサブセット）と、Ｃ、Ｃ＋＋、およびＦｏｒｔａｎ９５のランタイムとを含む高水準アプリケーション・プログラミング・インターフェース（ＡＰＩ）の効率的な移植ベースとして働く。ＳＰＩは、並列アプリケーションのチューニングに必要な、アプリケーション・トレースおよびプロファイリング・サポートを提供するのにも使用される。多くの場合に、このサポートは、ＵＴＥ（Unified Trace Environment）視覚化ツールなどのホスト複合体上の環境とインターフェースする。
【０１７９】
前述のように、システム内のすべてのノードに、ＡＳＩＣに集積されたイーサネット（登録商標）・ポート（または、その代わりにInfiniBand（商標）ポート）が含まれる。そのポートを、ＴＣＰ／ＩＰを介してアプリケーション・プログラムに公開することができる。入出力ノードの場合に、イーサネット（登録商標）・ポートを、アプリケーションから直接に使用可能にするか、その代わりに、カスタム・ランタイム環境から使用可能にすることができる。一般に、１００Ｍｂイーサネット（登録商標）・ポート（図２）を、計算機管理およびエラー報告について、ＲＡＳネットワークとして使用することができる。スイッチングおよび分割を含む、このＲＡＳネットワークの外部ネットワーク・アーキテクチャを、さらに、ホスト複合体によって要求されるトラフィックの期待されるフローおよびタイプについて最適化することができる。入出力ノードのギガビット・イーサネット（登録商標）は、ＩＰによって、またはＭＰＩ「インターコミュニケータ（inter-communicator）」を介するのいずれかで使用可能にされ、このＭＰＩインターコミュニケータは、ネットワーキングの詳細を標準ＭＰＩ呼出しの背後に隠蔽すると同時に、外部通信の柔軟な高帯域幅リンクを提供するという所望の機能を達成する。
【０１８０】
ＢＬＡＳおよびＢＬＡＣＳ数学ライブラリを含む「ＳｃａＬＡＰＡＣＫ」などの標準の並列数学ライブラリが、人気を集めつつあり、本発明のスーパーコンピュータ・システムでサポートされる。これらのライブラリによって実行される通信では、ＭＰＩの非常に小さいサブセットが使用される。これらのＭＰＩ呼出しをサポートすることによって、移植の労力の焦点が、数学ルーチンおよびチューニングの問題に合わされる。ＥＳＳＬなどの単一ノードの数学ライブラリまたはその並列版のＰＥＳＳＬが、広く使用されており、これらのライブラリは、使用可能であり、このシステムに移植することができる。
【０１８１】
入出力ノード・ソフトウェア
カーネルおよびランタイム・オペレーティング環境は、ディスクおよびギガビット・イーサネット（登録商標）を介するホスト複合体へのホスト入出力を処理する。計算ノードのランタイム・ライブラリは、機能によってファイル入出力動作を達成し、この機能は、たとえば、高速グローバル・ツリー・ネットワークを介して入出力ノードに入出力要求を配送することであり、これによって、要求およびデータが、ギガビット・イーサネット（登録商標）を介してホスト複合体のファイル・システム・サーバに転送される。ホスト複合体は、「フェールオーバ」戦略を使用して、信頼性のあるファイル・システム入出力を保証するので、入出力ノードは、アプリケーションに透過的に、故障したホスト・サーバからスタンバイ・サーバに要求をリダイレクトする機会を得る。さらに、ホスト複合体のファイル・システムの実装詳細を入出力ノードに分離することによって、ファイル・システム・サーバに関して異なる実施形態および戦略をサポートするのが単純になり、ファイル・システム・サーバのスケーラビリティでの柔軟性が可能になる。
【０１８２】
入出力ノードは、グローバル・ツリー（図５）に配置されるので、ＭＰＩ−ＩＯで定義されるものなどの集合的入出力動作が、このシステムによって特にサポートされる。集合的入出力の例は、アプリケーションですべてまたは多数のノードが、ファイルの同一の部分の読取を要求する時に発生する。この場合に、ファイル読取は、１回だけ行われ、その結果が、グローバル・ツリーを介して要求元ノードにブロードキャストされる。
【０１８３】
入出力ノードが、ホスト複合体のディスク・ドライブに対して装置レベルの制御を実行しないことが好ましい。さらに、機能レベルで入出力ノード・ソフトウェアにインターフェースし、ファイル・システム・レベルでホストによって管理されるファイル・システムにインターフェースするデーモンを、ホスト複合体で使用することができる。これによって、ホスト複合体のファイル・システムの代替実施形態をサポートする能力が、さらに強化される。というのは、ホスト複合体のオペレーティング・システムが、そのネイティブ・インターフェースを介して低水準ファイル・システムを実行しているからである。最後に、ファイル・システム・ソフトウェアを実現する増分開発パスがもたらされる。
【０１８４】
ブート
電源投入時に開始され、各ノードで稼動するカーネルで終わる４ステップの処理として、ブートアップ・アルゴリズムを説明する。１）第１ステップは、電力がノードに印加される時に自動的に行われる。このステップでは、各ノードが、論理アレイおよびメモリ・アレイを検証し、その後、１００Ｍｂイーサネット（登録商標）を自動的に構成し、イネーブルして、ホスト複合体からのＪＴＡＧコマンドを受け入れる、パワーオン・セルフ・テストを実行する。２）第２ステップは、ホスト複合体によって開始され、並列に実行されるが、これによって、パワーオン・セルフ・テストの結果を検査するＪＴＡＧインターフェースが実現され、各ノードのさらなる診断および構成が実行される。このステップでは、各ラックのすべてのセンサおよびモニタの状況も検証される。このステップは、ブートストラップ・プログラムおよびノードごとのパーソナライゼーション情報が、１００Ｍｂイーサネット（登録商標）ＪＴＡＧインターフェースを介して各ノードにロードされ、実行を開始できるようになった時に完了する。ブートストラップ・プログラムは、チップの計算プロセッサおよび入出力プロセッサを完全に初期化し、組込みメモリおよびＤＤＲメモリを検査し、トーラス・ネットワークおよび／またはグローバル・ツリー・ネットワークと１００Ｍｂおよび／または１Ｇｂイーサネット（登録商標）をテストし、構成し、最後に、状況メッセージを用いてホスト複合体に連絡する。ホスト複合体に必要な作業負荷を大幅に減らし、ブート処理の並列性を高めるのは、このステップ中に必要なブートストラップ・プログラムのロードを含むＪＴＡＧ相互作用のほとんどが、イーサネット（登録商標）・ブロードキャスト・パケットを介して処理される場合である。３）第３ステップは、各ノードがブートストラップ・プログラムのソフトウェア制御の下で完全に機能する状態で開始され、ブートストラップ・プログラムは、ノード・パーソナライゼーション情報を使用して、次にどのように進行するかを判断する。ブートは、ホスト複合体の示されたサーバに連絡して、イーサネット（登録商標）を介してカーネル全体をロードすることによって進行する。概念上、このステップは、よく知られた「ｂｏｏｔｐ」ネットワーク・ブート動作に似ているが、このシステムの計算機およびホスト複合体のアーキテクチャに従って設計されたものである。４）第４ステップは、各計算ノードおよび入出力ノードが、完全なシステム・ノード・カーネルを実行している時に開始される。この時点で、入出力ノードが、ホスト複合体に連絡して、本明細書に記載の、ファイル・システム・インターフェース・サービスおよび他の入出力サービスを提供する入出力ノード固有ソフトウェアをロードする。このソフトウェアは、カーネルからは、特別に構成され特権を与えられた「アプリケーション」プログラムに見える。その一方で、計算ノードは、アプリケーション・プログラムがロードされるまで、ホスト複合体からの連絡を待つ。システムの再分割が、区画内のすべてのノードの完全なリブートを必要としないが、すべてのノードが、内部高速リンクの使用を完全に静止していることを必要とすることを理解されたい。再分割の後に、カーネルは、すべての経路指定およびクラス使用構成をリセットする必要がある。
【０１８５】
電源オン・リセット状態
パワー・アップ時に、各ノードは、そのイーサネット（登録商標）・ポートが生きており、ユニキャスト・パケットまたはブロードキャスト・パケットを受信するよう構成されていることを見つける。イーサネット（登録商標）・ポートは、プロセッサのデバッグに一般に使用されるＪＴＡＧスキャン・ストリングに直接にインターフェースされる。これによって、システムの単一プロセッサ用に設計された非常に成熟したデバッグ環境の使用が可能になる。どのノードでも、この非常に強力な技法を使用して、ホスト複合体からアドレッシングし、完全にデバッグすることができる。このインターフェースは、ノードがまだリセットされている間に動作するようにマッピングすることができ、ＡＳＩＣ内のすべてのスキャン・レジスタのアップロードおよびデバッグが可能になる。
【０１８６】
ノードは、電源を入れられ、初期システム検査のために、すべての使用可能なＬＢＩＳＴおよびすべての使用可能なＡＢＩＳＴを実行する。ハードウェア・シーケンサが、電源投入時のこのテストを自動的に制御し、これらの診断から得られる合否シグネチャを、レジスタ内でブート・コードから使用可能にする。１例が、４４０コアのＭＩＳＲシグネチャ・レジスタである。上のＬＢＩＳＴ／ＡＢＩＳＴによってカバーされる論理の量によって、システムのソフトウェア検査にどれほどの追加診断が必要になるかが決定される。
【０１８７】
パワーオン・リセット状態では、１００Ｍｂイーサネット（登録商標）・バスを介してＪＴＡＧコマンドを受け入れるようにハードウェアが構成され、他の入出力コントローラが、１００Ｍｂイーサネット（登録商標）と衝突しないことが保証される。さらに、ＬＢＩＳＴ／ＡＢＩＳＴが実行された後に、ＡＳＩＣのすべてのクロックが、動作状態にされる。
【０１８８】
１０／１００イーサネット（登録商標）・コントローラのイーサネット（登録商標）ＭＡＣアドレスは、各ノードの一意のアドレス可能度のために、ＡＳＩＣへの入出力終端を介してセット・アップされる。これによって、ノード故障の検出が可能になり、並列ノード・ブートが提供される。
【０１８９】
信頼性・可用性・保守性（ＲＡＳ）
最大のアップタイムについてスーパーコンピュータ・システムを最適化するために、最も頻繁に故障する個々の構成要素の冗長性が提供される。これは、システムを再分割して既知の欠陥のあるセクタを分離する能力に追加されるものである。システムの信頼性は、「ハード」障害および「ソフト」または過渡障害に関する構成要素の固有の故障率、構成要素の個数、およびこれらの障害が発生する時にシステムがこれらの障害に応答する形に依存する。したがって、潜在的な構成要素障害（ＡＳＩＣおよびその構成要素、ＤＤＲ、コネクタ（カード・エッジ接点およびケーブル・コネクタなど）、電源（ＤＣ−ＤＣおよびＡＣ−ＤＣ）、エア・ムービング・デバイス（Ａｉｒ Ｍｏｖｉｎｇ Ｄｅｖｉｃｅ）など）に関する障害保護方法が提供される。
【０１９０】
障害保護方法
ノードＡＳＩＣに、ソフト・エラーおよびハード・エラーに起因する高い故障率を有する構成要素に対するエラー検出および訂正回路が組み込まれる。これらの構成要素には、外部ＤＤＲメモリ、内部ＥＤＲＡＭ Ｌ３、内部Ｌ２、および設計者が制御するすべてのＳＲＡＭアレイが含まれる。外部ＤＤＲメモリおよび内部ＥＤＲＡＭにも、冗長ビット・ステアリングが含まれる。ハードウェアによって制御される消し込みを実施して、外部ＤＤＲメモリおよび内部ＥＤＲＡＭから累積ソフト・エラーを除去することができる。内部レジスタ・アレイおよびクリティカル・データフロー・バスは、エラー検出用のパリティを有する。
【０１９１】
さらに、前述のように、このシステムで使用されるすべての電源が、複製される、すなわち、Ｎ＋１冗長性が実現される。サービス期間内に２つの故障を有する確率は、非常に小さい。さらに、本発明のすべてのエア・ムービング・デバイスが、Ｎ＋１冗長である。たとえば、２つのファンが、カバーされるノード・カードの冷却に使用され、第３のファンが冗長性のために使用される。３つのファンのすべてが動作している時には、ファン速度を下げて、信頼性を高める。１つが故障した時には、故障したファンが交換されるまで、他の２つの速度を上げる。同一のファン・ユニットの２つのファンがサービス期間内に故障する確率は、非常に低い。
【０１９２】
全体として、広範囲のエラー検出および訂正機能が、本発明で実現されるノードＡＳＩＣに組み込まれる。故障の場合に、本明細書で述べたように、計算機の１行（９ラック）を超えないように制限されると仮定して、このシステムを再分割して故障を除去することができる。システム再分割の後に、このシステムを、最後のチェックポイントからリスタートすることができる。
【０１９３】
トーラス・ネットワークの信頼性
トーラス・ネットワークは、それに注入されたすべてのパケットの単一のコピーを信頼性のある形で配信するか、回復不能エラー状態を示す。したがって、送信側のソフトウェアは、注入されたメッセージのコピーを保存する必要がなく、受信側のソフトウェアは、シーケンス番号を維持する必要がない。したがって、ネットワーク信頼性は、エンドツーエンドおよびリンクレベルのエラー検出の組合せによって提供される。ほとんどの場合に、リンクレベル・エラー検出特徴によって、エラーが発見され、しばしば回復される。エンドツーエンド・エラー検出は、主に、ルータ自体によって引き起こされ、リンクレベル・プロトコルによって見逃されたエラーを発見するのに使用される。
【０１９４】
リンクレベル・エラー
リンクレベル・エラー検出方式は、すべてのパケットに付加される複数のパリティ・ビットの使用に基づく。複数ビット・エラーは、シーケンシャル・バーストで発生することがあるので、データ・ビットに、ラウンドロビン順序で検査ビットが割り当てられる。したがって、各検査ビットは、オーバーラップしないセットの４つおきのデータ・ビットをカバーする。この割当を用いると、複数ビット・エラーを検出する確率が、シーケンシャル割当方式の確率よりはるかに高くなる。
【０１９５】
バーチャル・カットスルー経路指定のゆえに、破壊されたものとして検出されるパケットが、複数の下流ルータを介して既に転送されていることがある。したがって、このパケットを単純に捨て、再送信することはできない。そうではなく、エラーを検出したルータは、パケットの最後のバイトを修正して、エラー状態を示し、そのパケットを最終的に受け取るすべてのルータによってそのパケットが捨てられるようにする。破壊されたパケットが、バーチャル・カットスルーＦＩＦＯに完全に記憶されている場合には、そのパケットを即座に捨てることができる。
【０１９６】
破壊されたパケットをマークするほかに、エラーを検出したルータは、本明細書で図７および図８に関して説明した機構を使用して、リンクレベル再送信を引き起こす。この回復機構によって、すべてのパケットの唯一の「良好な」コピーが、所期のレシーバに到着することが保証される。破壊されたものとしてマークされたパケットは、ルータのローカル受信回路７６によって自動的に破棄され、受信ＦＩＦＯ９６（図１１）には挿入されない。
【０１９７】
リンクレベル・エラーの他の源は、「失われた」ビットであり、これは、誤って経路指定される、誤った形式のパケットにつながる。ネットワークは、単純にこの状態を報告し、システム・ソフトウェアが回復できるようにする。
【０１９８】
エンドツーエンド・エラー
エンドツーエンド・エラー検出機構は、パケットが正しく処理され、ルータによって破壊されないことを保証するのに使用される。リンクレベル・エラー検出機構は、そのようなエラーを発見することができない。というのは、修正されたヘッダ・ビットを回復するために、各ルータでパリティ・ビットがはぎ取られ、再生成されるからである。エンドツーエンド・エラー検出の機構は、パケット・タイプ、宛先、およびペイロードなど、移動中に修正されないパケット・フィールドに対する巡回冗長検査（ＣＲＣ）であることが好ましい。エンドツーエンドＣＲＣエラーの検出は、ハードウェアによって報告され、チェックポイント・ロールバックにつながる。
【０１９９】
可用性
本発明のシステム内の可用性は、単一ラックの粒度で定義され、管理される。すなわち、１０２４個のノードを含む「ラック」が、それを基礎として、良好または不良と判定され、管理される。初期プログラム・ロードの際に、この判定が、診断によって処理される。ランタイムには、これが、エラー検出および報告方式を介して処理される。欠陥のあるラックは、機能する区画に含めるために使用可能ではないので、構成マトリックスを作成して、すべてのラックの状況を識別する。
【０２００】
アプリケーション
多数の新しい相乗効果によって、前には困難であったアルゴリズムを生かすことができるので、本発明のスケーラブル・ウルトラコンピュータの独自の特性から利益を得る多数のアプリケーションがある。これらのアプリケーションに鑑みて、このシステムに含まれるアーキテクチャ的改善には、最も重要な事に、４ビット／ｐｃｌｋ／方向まで倍にされたトーラス・リンク帯域幅と、グローバル・ツリー・ネットワークと、２５６ＭＢ／ノードまで増やされたベースライン・メモリ・サイズと、メッセージ受渡をサポートするための各ノードへの第２プロセッサ・コアの追加が含まれる。
【０２０１】
科学アプリケーションの要約
最初から（基本的な原理に基づいて）量子分子動力学（ＭＤ）は、顕微鏡レベルで物質の挙動をシミュレートするように独自に配置され、科学の複数の分野で応用分野を見つけた。これは、ウルトラコンピュータの「キラー・アプリケーション」と呼ばれた。ＪＥＥＰコードは、最初の分子動力学の技術的現状の実施形態である。古典的ＭＤコードで行われたものと異なって、ＪＥＥＰでは、物質の電子構造および原子内相互作用の挙動に関する経験的な前提がない。量子力学の法則および運動方程式だけに基づいて、電子は、自由に結合を形成するか破壊し、原子は、自由に移動し、分子を形成する。
【０２０２】
ＪＥＥＰなどの第一原理ＭＤコードは、問題の広範囲の対象領域での応用例を有する。１つの例が、温度または圧力の極端な条件下での物質の理解である。他の例には、複雑な生物系および材料特性のよりよい理解の形成が含まれる。１０６〜１０７個の体積要素内の１０３〜１０４個の原子を有し、現在の計算のタイム・ステップ後の計算で約１０２〜１０４の係数または増加を有する問題をシミュレートすることが望ましい。さらに、１０３〜１０４長いシミュレーション時間が要求される。
【０２０３】
物質応用例
ＪＥＥＰなどのコードによって、その領域が理論的観点と実験的観点の両方から接近が困難であった、暖かい物体の物理的特性（warm matter physics）すなわち、物性物理学（たとえば固体密度での冷たい物体）およびプラズマ物理学（たとえばイオン化した材料）の間のインターバルへの洞察がもたらされる。ＪＥＥＰは、破壊点まで引張られた時の炭化ケイ素（アモルファス半導体）の顕微鏡的塊の応答をモデル化するのに使用された。このシミュレーションは、硬度が、無秩序合金について第一原理から初めて計算された時である。この研究によって、破壊の始まりを材料の化学的特性に関連付けることが可能になったが、これは、過去には理論的および経験的の両方で、特性を表すことが困難であった。
【０２０４】
衝撃圧縮された液体重水素。異常な条件（圧力および温度）での水素ＥＯＳの計算。これによって、固体とプラズマの間（凝縮物質でも冷濃密物質でもない）の暖かい物体が、１／２ｅＶと１０ｅＶの間で科学的観点から非常に困難になることが調べられた。状態方程式（ＥＯＳ）および不透明度データは、この体制で最も弱い。
【０２０５】
このクラスのウルトラコンピュータでのみ達成可能なＪＥＥＰの材料科学の他の応用例には、圧力下の水（実験プログラムと関連）、高圧下での二酸化炭素の結晶構造、「超硬」高分子二酸化炭素が含まれる。
【０２０６】
生物学の応用例
ＪＥＥＰは、現在、水中のＤＮＡ骨格の小さい分離された断片に何が起こるかを試験している。これらの革新的なシミュレーションは、実際に、現実の生物学的環境（水溶液）での最初のＤＮＡ断片なので、重要である。たとえば、シミュレーションでは、断片からのジメチルリン酸の分子が水分子とどのように相互作用するかが調査される。これらの最初のシミュレーションは、広く使用されている相互作用の経験的モデルと比較されつつある。これらのシミュレーションによって、ＤＮＡ相互作用の標準モデルで設けられる前提が有効または無効とされることが期待される。しかし、現在のシミュレーションは、少数の塩基対と最小限の量の水分子を伴う骨格の小さい断片に制限される。さらに、シミュレーションは、ピコ秒のタイムスケールに制限される。生物学的に興味深いタイムスケールは、数百マイクロ秒である。本発明のシステムを用いると、生物学的に重要なＤＮＡ断片を、生物学的に関連するタイムスケールで、完全な水溶液内でモデル化することができる。本発明の能力を用いると、生物学的に正確な状況でのＤＮＡの重要な理解を、シミュレーションを介して得ることができる。これは、生化学の潜在的に重要な進歩の前兆になる。
【０２０７】
ＪＥＥＰの他の生物学の応用例では、単一のＤＮＡ塩基対を抽出して、相補的な塩基がどのように相互作用するかを調べる。この研究の目標は、ＤＮＡを結合させるものと、どの分子相互作用が結合の鍵であるかを理解することである。希望は、結合機構がＤＮＡの複製にどのように影響するかを発見することである。これは、損傷または突然変異に鑑みて、ＤＮＡ複製の忠実度の理解をサポートする。本発明の並外れた計算能力を用いて、これらの詳細な調査を、初めて達成することができる。これは、生物学的に重要な文脈でのＤＮＡ結合および相互作用のよりよいモデルにつながる。
【０２０８】
ＪＥＥＰアルゴリズム
ＪＥＥＰは、現在はＭＰＩおよびＯｐｅｎＭＰを使用してＣ＋＋で記述される、専有的アルゴリズムである。密度汎関数理論（ＤＦＴ）を使用して、よりゆっくり動く原子核の回りの電子運動（電子−電子相互作用および電子−核相互作用）を説明し、古典動力学を使用して、空間内の原子核の運動を計算する。このシミュレーションの最も重要で時間がかかる部分は、各分子動力学ステップでの電子構造の計算である。これには、Ｋｏｈｎ−Ｓｈａｍ方程式を解くことが含まれ、この方程式は、各電子状態の結合された非線形積分微分方程式である。
【０２０９】
ＪＥＥＰで使用されるアルゴリズムは、解のフーリエ展開に基づく。このアルゴリズムのクリティカルな部分は、３次元複素フーリエ変換、数千個の長い（１０６〜１０７）複素ベクトルの正規化である。この２つの演算の効率的な実装によって、アルゴリズム全体の効率的な性能が保証される可能性が高い。
【０２１０】
本発明のスーパーコンピュータでは、このアプリケーションが必要とするＦＦＴ、線形方程式、および行列転置の演算が効率的に実現される。
【０２１１】
科学応用例の要約
最近のＦｅｒｍｉｏｎ Ｍｏｎｔｅ Ｃａｒｌｏの研究によって、電子および原子構造、凝縮物質、核物理、および生物学で生じるものを含む、量子多体問題を解く能力の大きな進歩が提供される。多体系のシュレージンガ方程式の数値解は、６０年以上にわたる研究対象であったが、これまでは、制御されない近似を伴わない正確な解が可能な方法は現れていない。実際、この問題は、非常に手ごわいので、大多数の研究（および最近のノーベル化学賞）の関心の対象は、密度汎関数理論であり、この理論の前提は、多体方程式の解が本質的に不可能であるということである。主要な問題は、次元数の問題であり、２０個の電子系（２分子の水など）の状態を記述する方程式が、６０次元の偏微分方程式になる。これを正確に３次元に写像する既知の方法はなく、偏微分方程式の数値解に関する従来の方法は、この多次元空間では通用しない。
【０２１２】
モンテ・カルロ法が、多次元の数学的問題の数値処理の実用的な方法を提供することが、一般に既知である。これは、放射線輸送（７次元まで）および統計物理学（数百万次元まで）にいつも使用される。ある種のシュレージンガ方程式（解がいたるところで可能である最低の状態に関する）を解く方法も、数十年にわたって使用可能であった。しかし、物理学的関心の対象であるほとんどの問題への曖昧でない適用は、この分野で周知の「Fermion Sign Problem」と称する問題によって妨げられてきた。その詳細な説明は、この簡単な報告には技術的にすぎるが、本質的に、この問題は、多数電子系が、パウリの原理（波動関数が同一粒子の交換において非対称でなければならない）を満たさなければならないという事実から派生する。標準的なモンテ・カルロ手法は、虚数時間でのシュレージンガ方程式が拡散方程式であり、局所的であるという事実に基づいて構築される。パウリの原理によって、非局所境界方程式が課せられるが、これは、モンテ・カルロ法に対する深い妨害である。
【０２１３】
この深い困難を克服できる新しいクラスの方法が、本発明のシステムで実行されるアプリケーションとして提案された。この新しい方法の中心になる要素は、算術符号を担持するオブジェクトに関する相関酔歩の使用である。ごく最近の進歩によって、プログラムの性能を数桁加速することができるアルゴリズムの変更が実証された。
【０２１４】
これらの量子モンテ・カルロ計算は、物理的、数学的、または数値的な近似なしで、多フェルミ粒子シュレージンガ方程式に対する（初めての）正確な数値解を作る。これは、科学界が関心を持つさまざまな物理系すなわち、原子構造、分子構造、凝縮物質（高圧下の水素など）、および核構造に適用される。
【０２１５】
科学応用例の要約
転位シミュレーションが、ひずみ＞１０％での加工硬化、１００％までの転位パターニング（dislocation patterning）および塑性不安定および塑性流動局在性の展開、多結晶での転位のモデル化、脆性‐延性遷移のモデル化などの「グランド・チャレンジ」問題に対処できるようになると予想される。
【０２１６】
本発明のアーキテクチャは、転位動力学のアルゴリズムを分析することによって、これらの問題の対処において非常に有効である。転位動力学では、原子的領域と巨視的領域の中間のメゾスケール範囲での問題に対処する。実際の材料の挙動の多くが、このスケールでの転位の挙動によって決定される。
【０２１７】
本発明を、その例示的で前もって形成された実施形態に関して具体的に図示し、説明してきたが、当業者は、形態および詳細における前述および他の変更を、本発明の趣旨および範囲から逸脱せずに行うことができることを理解するであろう。本発明の趣旨および範囲は、請求項の範囲のみによって制限される。
【図面の簡単な説明】
【０２１８】
【図１】８つの計算ノードを相互接続する３次元トーラスの小さい部分１０を示す図である。
【図２】本発明の原理による計算ノードＡＳＩＣを示す詳細なブロック図である。
【図３】図２のリンク・バッファおよびバーチャル・カットスルー経路指定制御ブロック２６を示す詳細なブロック図である。
【図４】単一ノードのメモリ・システムを示す詳細なブロック図である。
【図５】本発明によるグローバル・シグナルおよび外部ネットワークの接続を含むグローバル・コンバイニング・ツリー・ネットワークを示す図である。
【図６】本発明の原理によるグローバル・コンバイニング・ツリー・ネットワークおよびバリア・ネットワークを示す図である。
【図７】単一のトーラス・ルータ７０の基本アーキテクチャを示す図である。
【図８】図７のリンク入力回路７２の例示的実施形態の詳細な図である。
【図９】図７のリンク出力回路７４の例示的実施形態の詳細な図である。
【図１０】図７のローカル注入回路７３の例示的実施形態を示す詳細な図である。
【図１１】図７のローカル受信回路７６の例示的実施形態を示す詳細な図である。
【図１２】本発明の好ましい実施形態によるトランスポート・パケット１００のフォーマットを示す図である。
【図１３】本発明のウルトラスケール・スケーラブル・スーパーコンピュータを示す概念的な平面図である。
【図１４】本発明によるグローバル・クロック分配システムを示す図である。
【図１５】計算カードのプロセッサ・ノードおよびツリー接続を示す概略図である。
【図１６】入出力カードのツリー・リンク接続を示す図である。
【図１７】本発明によるラック内の基本的な気流を示す図である。
【図１８】本発明によるトーラスおよびツリーの１つの可能な物理的経路指定を示す図である。
【図１９】本発明による、システム再分割を制御するシステム・リンク・チップおよび動作を示す図である。
【図２０】本発明による正規分割およびスプリット分割の両方の例と、ミッドプレーンを分離できる方法を示す図である。
【図２１】２つのノードを相互接続するケーブルの両端を駆動する差動同時両方向ドライバ／レシーバ回路４５０の対を示すブロック図である。
【図２２】低電力で信頼性があり高速のシリアル・データ・キャプチャのための受信マクロ・ブロックを示す図である。
【図２３】低電力で信頼性があり高速のシリアル・データ・キャプチャのための送信マクロ・ブロックを示す図である。
【図２４】フェールオーバを備えたツイン接続ＳＣＳＩ ＲＡＩＤの概念的な繰り返し構造５５０を示す図である。
【図２５】図６のグローバル割込みおよびバリア・ネットワーク６０で実現される非同期グローバル・シグナル生成に使用される論理を示す図である。
【図１】
0003980488.tif 000005
【図２】
0003980488.tif 000006
【図３】
0003980488.tif 000007
【図４】
0003980488.tif 000008
【図５】
0003980488.tif 000009
【図６】
0003980488.tif 000010
【図７】
0003980488.tif 000011
【図８】
0003980488.tif 000012
【図９】
0003980488.tif 000013
【図１０】
0003980488.tif 000014
【図１１】
0003980488.tif 000015
【図１２】
0003980488.tif 000016
【図１３】
0003980488.tif 000017
【図１４】
0003980488.tif 000018
【図１５】
0003980488.tif 000019
【図１６】
0003980488.tif 000020
【図１７】
0003980488.tif 000021
【図１８】
0003980488.tif 000022
【図１９】
0003980488.tif 000023
【図２０】
0003980488.tif 000024
【図２１】
0003980488.tif 000025
【図２２】
0003980488.tif 000026
【図２３】
0003980488.tif 000027
【図２４】
0003980488.tif 000028
【図２５】
0003980488.tif 000029