(57)【特許請求の範囲】
【請求項１】
サーバシステム（１００）であって、
ソフトウェアサービスの実行中にメッセージをルーティングするファブリックインターコネクト（１１２）と、
前記ファブリックインターコネクトに接続され、前記サーバシステムのためのソフトウェアサービスを実行する複数の計算ノード（１０１，１０２）と、を備え、
前記複数の計算ノードの各々は、セルオートマトン内のセルとして構成されており、前記複数の計算ノードの各々の少なくとも１つの状態フィールドの状態は、前記複数の計算ノード内の接続ノードの構成レジスタにおける状態変化を表す構成情報（４０１，４０２，４０３，４０４，４０５）であって、前記ファブリックインターコネクトを用いて受信した構成情報に基づいて設定される、
サーバシステム。
【請求項２】
前記複数の計算ノードの各々は、
接続された計算ノードにおける対応する状態フィールドの状態（５０２，５０３）の遷移に応じて、所定の状態のセット間で状態フィールドのセットに遷移を生じさせ、
前記状態フィールドのセットの遷移に基づくルーティング情報（６１０）を受信し、
前記ルーティング情報に基づいて、前記ファブリックインターコネクトを介して、前記複数の計算ノードの他の計算ノードに受信メッセージ（６１２）をルーティングする、請求項１のサーバシステム。
【請求項３】
前記複数の計算ノードの各々は、前記状態フィールドのセット（６０８）の遷移に基づいて、スパニングツリー内の１つ以上の接続された計算ノードに対する自身の位置を識別する、請求項２のサーバシステム。
【請求項４】
前記複数の計算ノードの各々は、ルーティング情報を、前記ファブリックインターコネクトを介して、前記スパニングツリーに基づいて、接続された計算ノードに通信し、当該通信は、前記状態フィールドのセット（６１０）の遷移に基づいている、請求項３のサーバシステム。
【請求項５】
前記複数の計算ノードの少なくとも１つは、第１タイプのメッセージを受信したことに応じて、前記第１タイプのメッセージを、前記状態フィールドのセット（１００１，１００２，１００３）の遷移に基づいて、前記スパニングツリー内の前記少なくとも１つの計算ノードの位置に対する前記スパニングツリー内の複数の遠位ノードのうち選択された第１遠位ノードに通信する、請求項３のサーバシステム。
【請求項６】
前記複数の計算ノードの少なくとも１つは、前記複数の遠位ノードのうち選択された第１遠位ノードから前記第１タイプのメッセージを後に受信したことに応じて、前記状態フィールドのセット（１００４，１００５）の遷移に基づいて、前記第１タイプのメッセージを前記複数の遠位ノードのうち選択された第２遠位ノードに通信する、請求項５のサーバシステム。
【請求項７】
前記複数の計算ノードの少なくとも１つは、前記複数の遠位ノードのうち選択された第２遠位ノードから前記第１タイプのメッセージを後に受信したことに応じて、前記状態フィールドのセット（１００７）の遷移に基づいて、前記第１タイプのメッセージを、前記スパニングツリー内の前記少なくとも１つの計算ノードの近位ノードに通信する、請求項６のサーバシステム。
【請求項８】
前記複数の計算ノードの少なくとも１つは、前記第１タイプのメッセージのペイロードが前記複数の計算ノードの少なくとも１つをターゲットとしているのを識別したことに応じて、前記状態フィールドのセットの遷移に基づいて、前記メッセージのペイロードを、前記複数の計算ノードの少なくとも１つの構成レジスタに記憶する、請求項５のサーバシステム。
【請求項９】
前記複数の計算ノードの少なくとも１つは、第２タイプのメッセージを受信したことに応じて、前記状態フィールドのセット（１１０１，１１０２）の遷移に基づいて、前記ルーティング情報を、前記スパニングツリー内の前記少なくとも１つの計算ノードの位置に対する前記スパニングツリー内の前記複数の遠位ノードの各々に同時に通信する、請求項５のサーバシステム。
【請求項１０】
前記ルーティング情報は、前記ファブリックインターコネクト内の前記複数の計算ノードのうち１つの位置を識別するノードアドレス情報である、請求項２のサーバシステム。
【請求項１１】
前記複数の計算ノードのうち第１計算ノードは、前記第１計算ノードに接続された計算ノードの状態（５０１，５０２）の遷移に基づいて、前記第１計算ノードが接続されていない第２計算ノードの構成を識別可能である、請求項１のサーバシステム。
【請求項１２】
メッセージをルーティングするためにファブリックインターコネクトに接続された複数の計算ノードを備えるサーバでのシステムリセットに応じて、
前記複数の計算ノードのうち第１計算ノード（１０１）において、接続された計算ノードにおける対応する状態フィールドの状態の遷移に応じて、所定の状態のセット（５０１，５０２）間で状態フィールドのセットに遷移を生じさせることと、
前記状態フィールドのセット（６１０）の遷移に基づくルーティング情報（６１０）を受信することと、
前記ルーティング情報（６１２）に基づいて、前記ファブリックインターコネクトを介して、受信メッセージを前記複数の計算ノードのうち他の計算ノードにルーティングすることと、を含む、
方法。
【請求項１３】
前記第１計算ノードにおいて、前記状態フィールドのセット（６０８）の遷移に基づいて、スパニングツリー内の１つ以上の接続された計算ノードに対する前記第１計算ノードの位置を識別することをさらに含む、請求項１２の方法。
【請求項１４】
前記ファブリックインターコネクトを介して、前記スパニングツリーに基づいて、ルーティング情報を、前記第１計算ノードから接続された計算ノードに通信することをさらに備え、前記通信することは、前記状態フィールドのセット（６１０）の遷移に基づいている、請求項１３の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、処理システムに関し、より詳細には、クラスタサーバの構成に関する。
【背景技術】
【０００２】
サーバシステム等の高性能なコンピューティングシステムは、１つ以上のファブリックインターコネクトによって互いに接続された計算ノードを用いて実装されることがある。計算ノードは、例えば、ファイル管理、データベース管理、文書印刷管理、ウェブページの記憶及び提示、コンピュータゲームサービス等、又はこれらの組み合わせ等の指定されたサービスを行うためのソフトウェアプログラムを実行する。複数の計算ノードは、比較的大量のデータの処理を容易にすると同時に、コンピューティングシステムの簡単なビルドアップ及びスケーリングを容易にする。ファブリックインターコネクトは、計算ノード間の通信のバックボーンを提供し、これにより、プロセッサの性能に重大な影響を及ぼす可能性がある。システムリセットの後にファブリックインターコネクトを用いるには、通常、ファブリックインターコネクトの通信方式を実装するアドレステーブル及びルーティングテーブルを計算ノードに設定する必要がある。
【０００３】
本開示は、添付の図面を参照することによって、より良く理解され、その多くの特徴及び利点が当業者において明らかになるであろう。異なる図面で同じ符号が用いられることによって、類似又は同一の項目が示される。
【図面の簡単な説明】
【０００４】
【図１】いくつかの実施形態による、クラスタ計算サーバのブロック図である。
【図２】いくつかの実施形態による、クラスタ計算サーバ用に実装された例示的なネットワークトポロジを示すブロック図である。
【図３】いくつかの実施形態による、図２のネットワークトポロジの例示的な計算ノード及び当該計算ノードに接続された計算ノードの次元的な関係を示すブロック図である。
【図４】いくつかの実施形態による、クラスタ計算サーバの計算ノードの構成状態フィールドを示すブロック図である。
【図５】いくつかの実施形態による、図４の構成状態フィールドの１つの構成状態のセットを示すブロック図である。
【図６】いくつかの実施形態による、クラスタ計算サーバのファブリックを構成する方法のフロー図である。
【図７】いくつかの実施形態による、管理ユニットノードを含むクラスタ計算サーバの例示的なファブリックトポロジを示すブロック図である。
【図８】いくつかの実施形態による、図４のノードの構成中の状態遷移を例示するブロック図である。
【図９】いくつかの実施形態による、クラスタ計算サーバのノードによって自己組織化された例示的なスパニングツリーを示すブロック図である。
【図１０】いくつかの実施形態による、図９のスパニングツリーを介してチェーン型の構成メッセージを通信する例を示すブロック図である。
【図１１】いくつかの実施形態による、図９のスパニングツリーを介してチェーン型の構成メッセージを通信する例を示すブロック図である。
【図１２】いくつかの実施形態による、クラスタ計算サーバのノードの例示的な物理的配置を示すブロック図である。
【図１３】いくつかの実施形態による、クラスタ計算サーバの計算ノードの実装例を示すブロック図である。
【図１４】いくつかの実施形態による、集積回路（ＩＣ）デバイスを設計及び製造するための方法を示すフロー図である。
【発明を実施するための形態】
【０００５】
図１〜図１４は、システムリセット又は他の構成イベントの後にクラスタ計算サーバのファブリックを構成する方法を示している。ファブリックの各ノードは、構成のために、セルオートマトン内のセルとして用いられ、これにより、中央管理ユニットからの構成情報を通信するための特別な構成ネットワークが不要になる。その代わりに、ノードは、固定トポロジに従ってネットワークルーティング用のファブリックインターコネクトを事前に構成する必要なく、当該ノードでのソフトウェアサービスの正常な実行中にメッセージを通信するのに用いられる同一のファブリックインターコネクトを用いて構成情報を通信する。これにより、サーバの複雑性が軽減され、クラスタ計算サーバのスケーラビリティが向上する。
【０００６】
例として、クラスタ計算サーバは、ファブリックインターコネクトを用いて様々なノードを接続する。正常動作中、計算ノードがソフトウェアサービスを実行すると、各ノードがユニキャストメッセージをサーバの他のノードに通信することができ、これにより、ソフトウェアサービスの全体的なサーバ効率と品質とを向上させることができる。したがって、正常動作中、計算サーバのファブリックはメッセージルーティングスキームを実行し、これにより、各ノードが、ファブリック内の固定アドレスを有し、メッセージルーティングスキームのルーティングルールを示すルーティング情報（例えば、ルーティングテーブル）をローカルに記憶する。ファブリックのトポロジは、個々の計算ノードでのエラー又は障害によって経時的に変化する可能性があるので、通常、計算ノードの各々に固定ルーティング情報を永続的に記憶することは現実的ではない。かかるトポロジの変化は、固定ルーティング情報の大部分を無効にし、サーバのパフォーマンスを低下させる。したがって、計算サーバは、各システムリセットの後にファブリックを構成することが有用である。これにより、ファブリックは、構成中に、１）ファブリックの機能ノードによって定義されるファブリックのトポロジを識別し、２）固有のアドレス及びルーティング情報を各機能ノードに配信する。本明細書では、このプロセスを、計算サーバの「構成」（又はファブリックの構成）と称する。
【０００７】
構成を実行するために、従来のクラスタ計算サーバは、通常、正常動作中にノード間でメッセージを通信するのに用いられるファブリックインターコネクトとは別の「帯域外（out-of-band）」ネットワークを使用する。しかしながら、計算ノードの数が多いサーバシステムでは、帯域外ネットワークは、ノードアドレス及びルーティング情報を配信し、それ以外の場合ではファブリックノードの各々を構成するために多くの時間を必要とする。さらに、帯域外ネットワーク自体には、全ての構成メッセージを個々のノードにルーティングするためのインフラストラクチャが必要であり、これにより、計算サーバの複雑性及びコストが増大する。
【０００８】
従来の計算サーバとは対照的に、本明細書に開示される技術は、レジスタ又は他の記憶構造を計算ノードの各々に組み込み、構成フィールドの所定のセットを記憶することによって、ノードアドレス、ルーティング情報及び他の構成情報を通信するクラスタ計算サーバを提供する。各フィールドは、対応する状態のうち限定されたセットの何れかをとることができる。ここで、構成サイクルと呼ばれる所定の時間間隔では、サーバの各ノードは、構成フィールドの以前の状態、及び、ファブリックインターコネクトを介してノードに接続された他のノード（接続ノード）の各々に対応する構成フィールドの状態に基づいて、当該構成フィールドの各々の状態（前の状態を維持する、又は、新たな状態に変化する）を設定する。ノードは、構成フィールドの状態に基づいて、構成フィールドの状態に関連付けられた所定の記憶された構成命令の１つ以上のセットを実行する。したがって、構成フィールドは、計算ノードで実行される１つ以上のタスクを定義し、当該ノードの接続ノードの構成レジスタで対応するフィールドの状態のみに依存する。したがって、本明細書で開示されるクラスタ計算サーバは、帯域外構成ネットワークを使用する必要がなく、計算サーバの設計を簡素化して、多数の計算ノードのより迅速な構成を可能にする。代わりに、本明細書に開示される技術は、隣接したノードの状態変化に基づいて構成情報を配信することによって、仮想的な帯域外ネットワークを生成する。
【０００９】
いくつかの実施形態では、計算ノードにて状態を変化させることは、クラスタ計算サーバに対する少なくとも２つの構成動作、つまり、トポロジ分析と、構成メッセージの通信と、を行う。トポロジ分析では、計算ノードの構成フィールドの状態が、１）機能する計算ノードが検出されて、構成メッセージを通信するために準備されるように変化し、２）計算ノードがスパニングツリー内に自己組織化するように変化する。スパニングツリーが組織化されると、ファブリックノードは、構成メッセージを通信することができる。ここで、ノードは、メッセージタイプによって暗示された配信ルールにしたがって、メッセージを当該ノードの接続ノードに配信する。クラスタ計算サーバの１つ以上の管理ユニットは、スパニングツリーのルート計算ノードで構成メッセージを開始することによって構成情報を投入し、各ノードの配信ルールによってメッセージがスパニングツリー内の各計算ノードに到達する。これにより、管理ユニットは、ルーティングテーブル、ノードアドレス情報等の構成情報を配信し、ノードを正常動作させるための準備を行うことができる。
【００１０】
いくつかの場合、クラスタ計算サーバは、例えばスパニングツリー内で障害のある計算ノードを検出する等の所定のエラー条件に応じて、トポロジ分析を再度行うことができる。そして、計算ノードは、対応する構成フィールドを対応するトポロジ分析状態に自動的に戻し、且つ、スパニングツリーを修正することによって、スパニングツリートポロジを調整する。このように、計算ノードは、個々の計算ノードの障害及び他のエラーを自動的に調整することができる。
【００１１】
説明を簡単にするために、サーバの構成は、図１〜図１２を参照して以下に記載されるクラスタ計算サーバの例示的なコンテキストにおいて説明される。かかるサーバの例には、アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドのＳｅａＭｉｃｒｏ（商標）事業部から入手可能なＳＭ１００００シリーズ又はＳＭ１５０００シリーズのサーバが含まれる。概要を以下に説明するが、クラスタ計算サーバの実施形態に関するさらなる詳細は、米国特許第７，９２５，８０２号及び米国特許第８，１４０，７１９号に記載されており、これらの全体は、言及することによって本明細書に組み込まれる。本明細書で説明される技術は、この例示的なコンテキストに限定されず、代わりに、様々なサーバの何れかに実装されてもよい。さらに、これらの技術は、ＭＡＣアドレスを用いるイーサネット（登録商標）実装に関連して説明されているが、様々なリンク層プロトコル及びアドレッシング方式の何れかで実装されてもよい。
【００１２】
図１は、いくつかの実施形態による、クラスタ計算サーバ１００を示す図である。本明細書で「サーバ１００」と呼ばれるクラスタ計算サーバ１００は、ラックユニット（ＲＵ）システムにおいて、計算、記憶、スイッチング及びサーバ管理をまとめるデータセンタプラットフォームを備えている。サーバ１００は、ファブリックインターコネクト１１２によって互いに接続された、独立した低電力計算ノード（例えば、計算ノード１０１〜１０６）、ストレージノード（例えば、ストレージノード１０７〜１０９）、ネットワークノード（例えば、ネットワークノード１１０，１１１）及び管理ノード（例えば、管理ユニット１１３）の並列配列に基づいている。ファブリックインターコネクト１１２は、高帯域幅で低レイテンシのスーパーコンピュータインターコネクトを備えている。各ノードは、個別の現場交換可能ユニット（ＦＲＵ）として実装されており、効率的なビルドアップ、スケーリング、保守、修理及びホットスワップ機能を容易にするために、プリント回路基板（ＰＣＢ）ベースのカード又はブレードに配置された部品を備えている。
【００１３】
計算ノードは、オペレーティングシステム（ＯＳ）、ハイパーバイザ、仮想化ソフトウェア、計算アプリケーション等を含む様々なソフトウェアプログラムを実行するように動作する。従来のサーバノードと同様に、サーバ１００の計算ノードは、１つ以上のプロセッサと、１つ以上のプロセッサによって用いられる命令及びデータを記憶するシステムメモリと、を含む。しかしながら、従来のサーバノードとは異なり、いくつかの実施形態では、計算ノードは、記憶装置、Ｉ／Ｏ制御、及び、ネットワークインタフェースカード（ＮＩＣ）等の様々なローカル周辺機器を個別に組み込んでいない。むしろ、サーバ１００のリモート周辺リソースは計算ノード間で共有されており、これにより、Ｉ／Ｏコントローラ及びＮＩＣ等のようにサーバのマザーボードに通常存在する多くの部品を計算ノードから排除し、１つ以上のプロセッサ、システムメモリ及びファブリックインターフェース装置を主に残しておくことができる。
【００１４】
例えば特定用途向け集積回路（ＡＳＩＣ）として実装することができるファブリックインターフェース装置は、システムリセットに応じて構成した後、サーバ１００のリモート共有周辺リソースを仮想化するように動作することによって、リモート周辺リソースが、各プロセッサで実行されるＯＳに対して、対応するプロセッサのローカル周辺バス上に配置されるように現れる。これらの仮想された周辺リソースには、大容量記憶装置、コンソール、イーサネット（登録商標）ＮＩＣ、ファイバーチャネルＮＩＣ、Ｉｎｆｉｎｉｂａｎｄ（商標）ＮＩＣ、ストレージホストバスアダプタ（ＨＢＡ）、基本入出力システム（ＢＩＯＳ）、ユニバーサルシリアルバス（ＵＳＢ）装置、Ｆｉｒｅｗｉｒｅ（商標）装置、ＰＣＩｅ装置、ユーザインターフェース装置（例えば、ビデオ、キーボード及びマウス）等が含まれるが、これらに限定されない。ハードウェアにおけるリモート周辺リソースの仮想化及び共有は、遠隔周辺リソースの仮想化を、計算ノードにおけるＯＳ及び他のローカルソフトウェアに対して透過的にする。さらに、ファブリックインターフェース装置を介したリモート周辺リソースのこの仮想化及び共有により、サーバのマザーボードに通常存在するいくつかの部品の代わりにファブリックインターフェース装置を用いることが可能になる。これにより、各計算ノードに実装される部品の数を削減する。また、計算ノードは、個別及び個々の周辺リソースを実装する従来のサーバブレードよりも少ないエネルギーを消費しながらフォームファクタを小さくすることができる。
【００１５】
ストレージノード及びネットワークノード（「入出力（Ｉ／Ｏ）ノード」と総称する。）は、１つ以上の共有周辺リソースを管理する周辺装置コントローラを実装する。このコントローラは、計算ノードのファブリックインターフェース装置と連携して、リソースマネジャによって管理される周辺リソースを仮想化して共有する。例示すると、ストレージノード１０７は、ハードディスクドライブ（ＨＤＤ）１１６を管理し、ストレージノード１０８は、ソリッドステートドライブ（ＳＳＤ）１１８を管理する。いくつかの実施形態では、任意の内部大容量記憶装置は、任意のプロセッサを搭載することができる。さらに、大容量記憶装置は、スライス又は「仮想ディスク」に論理的に分割されてもよい。また、各スライスは、単一の計算ノードに割り当てられてもよいし、読出専用モードで用いられる場合には、巨大な共有データキャッシュとして複数の計算ノードに共有されてもよい。仮想ディスクの共有によって、ユーザは、オペレーティングシステム、アプリケーションソフトウェア及びキャッシュデータ等の共通データをサーバ１００全体に対して一度記憶及び更新することができる。Ｉ／Ｏノードによって管理される共有周辺リソースの他の例として、ストレージノード１０９は、リモートＢＩＯＳ１２０、コンソール／汎用非同期送受信回路（ＵＡＲＴ）１２１及びデータセンタ管理ネットワーク１２３を管理する。ネットワークノード１１０，１１１の各々は、データセンタネットワーク１１４に接続された１つ以上のイーサネット（登録商標）アップリンクを管理する。イーサネット（登録商標）アップリンクは、トップオブラックスイッチのアップリンクポートに類似しており、例えば、データセンタネットワーク１１４のエンドオブロースイッチ又はコアスイッチに直接接続するよう構成することができる。リモートＢＩＯＳ１２０は、サーバの一部又は全てのノードのローカルＢＩＯＳとして動作し、大容量記憶装置、ＮＩＣ及び他の周辺リソースと同じ方法で仮想化することができる。これにより、かかるノードが少なくとも１部のローカルＢＩＯＳを実装しないようにすることができる。いくつかの実施形態では、サーバの各ノードは、システムリセットに応じて実行されるローカルＢＩＯＳを含む。ローカルＢＩＯＳを実行することにより、本明細書でさらに説明される構成プロセスに参加することができる。特に、ローカルＢＩＯＳの実行は、ノードの状態にしたがって当該ノードにおけるタスクの実行を提供し、ノードの以前の状態及び当該ノードの接続ノードの状態にしたがって、当該ノードを異なる状態に遷移させる。
【００１６】
計算ノードのファブリックインターフェース装置、Ｉ／Ｏノードのファブリックインターフェース及びファブリックインターコネクト１１２は、計算ノードの計算リソースをＩ／Ｏノードの周辺リソースに接続するファブリック１２２として共に動作する。このため、ファブリック１２２は、分散交換設備（distributed switching facility）を実装しており、これにより、ファブリックインターフェース及びファブリックインターフェース装置の各々は、ファブリックインターコネクト１１２の双方向リンクに接続された複数のポートを備え、システムリセットに応じてファブリックインターコネクト１１２を構成した後、サーバ１００のノードに実装された決定論的なルーティング論理にしたがって、パケットトラフィックをポート間でルーティングするリンク層スイッチとして動作する。「リンク層」という用語は、一般的に、データリンク層、すなわち開放型システム間相互接続（ＯＳＩ）モデルの第２層を指すことに留意されたい。
【００１７】
ファブリックインターコネクト１１２は、例えば、バックプレーン、プリント配線基板、マザーボード、ケーブル若しくは他のフレキシブルな配線、又は、これらの組み合わせ等の固定又はフレキシブルなインターコネクトを含むことができる。さらに、ファブリックインターコネクト１１２は、電気信号、光信号又はこれらの組み合わせを含むことができる。いくつかの実施形態では、ファブリックインターコネクト１１２のリンクには、例えば、１つ以上のペリフェラルコンポーネントインターコネクトエクスプレス（ＰＣＩｅ）規格、ＲａｐｉｄＩＯ規格、ＲｏｃｋｅｔＩＯ規格、ＨｙｐｅｒＴｒａｎｓｐｏｒｔ規格、ファイバーチャネル規格、ギガビットイーサネット（登録商標）（ＧｂＥ）アタッチメントユニットインターフェース（ＸＡＵＩ）規格等のようなイーサネット（登録商標）ベースの規格等の１つ以上にしたがって実装された高速な双方向シリアルリンクが含まれる。
【００１８】
ノードを実装するＦＲＵは、通常、図１２を参照して以下に説明するように、サーバボックス内の１つ以上の段に物理的に配置されるが、ファブリック１２２は、構成中に、例えば、トーラス、多次元トーラス（ｋ−ａｒｙ  ｎ−ｃｕｂｅとも呼ばれる）、ツリー、ファットツリー等の様々なメッシュトポロジ又は他のネットワークトポロジの何れかに対してノードを論理的に配置することができる。説明のために、本明細書では、サーバ１００を、多次元トーラスネットワークトポロジのコンテキストで説明する。しかしながら、説明した技術は、本明細書で提供されるガイドラインを用いて、他のネットワークトポロジにおいて同様に適用されてもよい。
【００１９】
計算ノード１０１〜１０６の各々は、対応する計算ノードの構成フィールドの１セットを記憶するための構成状態レジスタ（例えば、計算ノード１０１の構成状態レジスタ１７０）を含む。各設定フィールドは、後述するように、対応する計算ノードの構成の特定の態様に関する状態情報を記憶する。例えば、１つの構成フィールドは、サーバ１００のノードをマッピングするスパニングツリー内の対応する計算ノードの接続ノードに対する位置を示す構成情報を記憶することができる。動作中、各計算ノードは、接続ノードの構成状態レジスタにおいて定期的に構成フィールドを確認し、これらのフィールドの値に基づいて、自身の構成状態レジスタの設定フィールドの値を更新する。計算ノードは、構成状態レジスタの構成フィールドの値に基づいて、例えば、構成メッセージの内部処理、接続ノードへの構成メッセージの通信、構成メッセージに応答するデータの生成等の所定の構成動作を実行する。さらに、計算ノードは、接続ノードにおいて遷移を起こし、このノードにおける状態変化を観測することによって、接続されていないノード（リモートノード）の状態及び構成を識別することができ、本明細書で説明するファブリックを通じて伝搬する際にリモートノードの状態変化及び構成を引き起こすメッセージを生成することができる。
【００２０】
各計算ノードを構成するために、各計算ノードの構成状態レジスタの構成フィールドは、管理ノード１１３によって注入された構成情報に基づいて経時的に変化する。各構成フィールドの変更によって、各計算ノードが、ファブリックインターコネクト１１２のトポロジにおける固有のアドレスと、各ノードの固有のアドレスにしたがってノード間でメッセージがルーティング可能なルーティング情報と、を受信するように、各構成フィールドの状態更新が定義される。このようにして、計算ノードは、サーバ１００の正常な（構成後の）動作中にユニキャストメッセージをルーティングするために準備される。
【００２１】
図２は、いくつかの実施形態による、ｋ−ａｒｙ  ｎ−ｃｕｂｅ、すなわち多次元トーラスとして配置されたネットワークトポロジ内のサーバ１００の例示的な構成を示す図である。図示の例では、サーバ１００は、深さが３（つまりｋ＝ｎ＝３）の三次元（３Ｄ）トーラスネットワークトポロジ（本明細書では「トーラスネットワーク２００」と称する）を実装する。したがって、サーバ１００は、３つの直交次元（Ｘ，Ｙ，Ｚ）で形成されたリングのネットワークに配置された合計２７個のノードを実装し、各ノードは、各次元に１つずつの３つの異なるリングのメンバである。各ノードは、ファブリックインターコネクト１１２（図１参照）の双方向シリアルシンクを介して最大６つの隣接ノードに接続されている。トーラスネットワーク２００内の各ノードの相対的な位置は、位置タプル（ｘ，ｙ，ｚ）によって図２に示されている。ここで、ｘ、ｙ，ｚは、Ｘ，Ｙ，Ｚ次元における計算ノードの位置を表す。したがって、ノードのタプル（ｘ，ｙ，ｚ）は、トーラスネットワーク２００内のそのアドレスとして機能することができ、これにより、パケットを位置タプル（ｘ，ｙ，ｚ）で表される位置にある宛先ノードにルーティングするためのソースルーティング制御として機能する。
【００２２】
いくつかの実施形態では、ファブリックインターコネクト１１２は、システムリセットに応じて、１つ以上のメディアアクセス制御（ＭＡＣ）アドレスが所定のノードに一時的又は永続的に関連付けられるように、各ノードを構成する。このような関連するＭＡＣアドレスの一部又は全ては、位置タプル（ｘ，ｙ，ｚ）を直接表してもよく、トーラスネットワーク２００内の宛先ノードの位置を決定し、パケットの宛先ＭＡＣアドレスに基づいてソースルーティングすることを可能にする。構成中、宛先ＭＡＣアドレスに基づいて宛先ノードの位置を容易に識別するために、タプル変換を位置付けるための配信されたＭＡＣアドレスのルックアップテーブルを、ノードにキャッシュすることができる。
【００２３】
図示されたＸ，Ｙ，Ｚ次元は、ネットワーク内の各ノードの位置を示す論理的次元を表しているが、各ノードの物理的な配置を示す物理的次元を必ずしも表すものではないことを理解されたい。例えば、トーラスネットワーク２００の３Ｄトーラスネットワークトポロジは、バックプレーンの１つ以上の段又はラックに物理的に配置されたネットワーク内のノードとともに、ファブリックインターコネクト１１２の配線を介して実装することができる。つまり、トーラスネットワーク２００内の所定のノードの相対的な位置は、計算ノードの物理的な位置ではなく、当該ノードが接続されているノードによって定義される。いくつかの実施形態において、ファブリック１２２（図１参照）は、３Ｄトーラスネットワークトポロジを実装するために、ファブリックインターコネクト１１２を介して共に配線された複数のソケットを備える。各ノードは、ファブリックインターコネクト１１２で用いられるソケットに接続するように構成された現場交換可能ユニット（ＦＲＵ）を備えており、トーラスネットワーク２００内のノードの位置は、ＦＲＵが挿入されたソケットによって決まる。
【００２４】
サーバ１００では、ファブリックインターコネクト１１２の構成後、ノード間で通信されるメッセージは、ソースノードと宛先ノードとの間のルーティングパスを介してルーティングされる１つ以上のパケットに分割される。ルーティングパスは、０、１つ又は２つ以上の中間ノードを含んでもよい。上述したように、各Ｉ／Ｏノードを含む各ノードは、ファブリックインターコネクト１１２の対応するリンクに接続されたノードのポート間でパケットをルーティングするリンク層スイッチを実装するファブリックインターコネクト１１２へのインターフェースを含む。いくつかの実施形態では、これらの分散型スイッチの構成後、分散型スイッチは、ファブリックデッドロックを回避するのに役立つ、ソースルーティング又は厳密に決定論的な次元順ルーティング方式（つまり、トーラスネットワーク２００の１つの次元を完全にトラバースした後に別の次元に移動する）等のソースルーティング方式を用いて、ファブリック１２２を介してパケットをルーティングするように動作する。厳密に決定論的な次元順ルーティングの一例として、位置（０，０，０）のノードから位置（２，２，２）に送信されるパケットは、先ず、Ｘ次元でノード（０，０，０）からノード（１，０，０）に送信された場合に、続けてＸ次元でノード（２，０，０）に送信され、Ｙ平面でノード（２，０，０）からノード（２，１，０）、次いでノード（２，２，０）に移動し、その後、Ｚ平面でノード（２，２，０）からノード（２，２，１）、次いでノード（２，２，２）に移動するであろう。ソースと宛先との間でプレーンが完全にトラバースする順序は、事前に設定されてもよいし、ノード毎に異なっていてもよい。
【００２５】
さらに、トーラスネットワーク２００内のノード間に複数のルートがあるため、ファブリック１２２は、構成プロセス中に、プライマリパスが失敗した場合には、パケットトラフィックがセカンダリパスをトラバースするように構成することができる。また、ファブリック１２２は、パケットクラス及び仮想チャネルを実装して、リンク帯域幅をより効果的に利用し、パケットループを排除するように構成されており、これにより、リンクレベルのループを防止することができ、さらに、スパニングツリープロトコル等の冗長プロトコルが不要になる。
【００２６】
従来、特定のタイプのノードは、サーバにおけるソフトウェアサービスの正常な実行中に当該ノードのルーティング機能が制限されるように構成されている。例えば、計算ノードは、パケットのソースノードと、パケットの宛先ノードとの間のパケットのルーティングパスに存在する中間ノードとして動作することが許可される一方で、Ｉ／Ｏノードは、ソースノード又は宛先ノードのみとして構成され、パケットを他のノードにルーティングする中間ノードとして動作しないように構成されている。図示した実施形態では、各Ｉ／Ｏノードは、同様の方法でパケットを計算ノードにルーティングするように構成されており、全てのノードが同様のルーティング機能を提供する。
【００２７】
ファブリック１２２は、様々なパケットルーティング及び技術プロトコルを実装するように構成することができる。例えば、各ノードの切り替えの際に大きなバッファが不要になるように、構成後、ファブリック１２２は、フロー制御数字（「フリット」）ベースのスイッチングを使用して、各パケットが一連のフリットに分割される。ヘッダーフリットと呼ばれる最初のフリットは、パケットのルート（つまり、宛先アドレス）に関する情報を保持し、パケットに関連付けられた全ての後続のフリットのルーティング動作を設定する。ヘッダーフリットの後には、データの実際のペイロードを含む０以上のボディフリットが続く。テールフリットと呼ばれる最後のフリットは、ルーティングパスの全ての中間ノードだけでなく、ソースノード及び宛先ノードに割り当てられたリソースを開放するために、いくつかのブックキーピング（bookkeeping）を行う。これらのフリットは、パケットレベルでバッファ及びチャネル帯域幅を割り当てるカットスルールーティング、又は、フリットレベルでバッファ及びチャネル帯域幅を割り当てたワームホールルーティングを使用して、トーラスネットワーク２００を介してルーティングされてもよい。ワームホールルーティングは、トーラスネットワーク２００内の仮想チャネルの使用を可能にする利点を有する。仮想チャネルは、チャネルを介してパケットのフリット処理を調整する必要がある状態を保持する。仮想チャネルは、ルートの次のホップに対するカレントノードの出力チャネル及び仮想チャネルの状態（例えば、アイドル状態、リソース待ち状態、アクティブ状態等）を含む。また、仮想チャネルは、カレントノードでバッファされたパケットのフリットへのポインタと、次のノードで利用可能なフリットバッファの数と、を含むことができる。
【００２８】
図３は、ファブリック１２２のノード３０１と、当該ノードの接続ノード３０２，３０３，３０４，３０５，３０６，３０７と、を示す図である。ノード３０１は、対応する通信ポートを介してノード３０２〜３０７の各々に接続されている。いくつかの実施形態では、ノード３０１は、３Ｄトーラストポロジにおけるそれらの予測される相対的な位置にしたがって、接続ノード３０２〜３０７の各々を内部的に識別する。これにより、ノード３０２は、ノード３０１の「＋Ｘ」ノードとしてノード３０１によって識別される。このことは、ノード３０２が、ノード３０１に対して、３ＤトーラスのＸ平面に沿う一方向に存在すると予測されることを示す。ノード３０５は、ノード３０１の「−Ｘ」ノードとしてノード３０１によって識別される。このことは、ノード３０５が、ノード３０１に対して、３ＤトーラスのＸ平面に沿ってノード３０２の反対方向に存在すると予測されることを示す。同様の理由によって、ノード３０３は、ノード３０１の「＋Ｙ」ノードとしてノード３０１によって識別され、ノード３０６は、ノード３０１の「−Ｙ」ノードとしてノード３０１によって識別され、ノード３０４は、ノード３０１の「＋Ｚ」ノードとしてノード３０１によって識別され、ノード３０７は、ノード３０１の「−Ｚ」ノードとしてノード３０１によって識別される。
【００２９】
ノード３０１は、システムリセットに応じて、トークンを、ファブリックインターコネクト１１２を介して、接続ノード３０２〜３０７に周期的に送信する。トークンは、構成フィールドの各々の現在の状態を示す。また、ノード３０１は、トークンを、接続ノード３０２〜３０７からファブリックインターコネクト１１２を介して受信する。トークンは、接続ノード３０２〜３０７毎の構成フィールドの対応する状態を示す。ノード３０１は、構成フィールドの現在の状態及び接続ノード３０２〜３０７における構成フィールドの状態に基づいて、ノード自体の構成フィールドの状態を調整し、調整された状態に必要となる任意の処理動作を実行する。
【００３０】
図４は、いくつかの実施形態による、構成状態レジスタ（ＣＳＲ）１７０の一例を示す図である。図示の例では、ＣＳＲ１７０は、方向及びアドレス状態フィールド４０１と、スパニングツリー状態フィールド４０２と、割り込み転送状態フィールド４０３と、ウェーブメッセージ状態４０４と、チェーンメッセージ状態４０５と、を含む、いくつかの構成フィールドに対する値を記憶する。構成フィールド４０１〜４０５の各々は、フィールドの状態を示す値を記憶する。各構成サイクル中、計算ノード１０２は、各構成フィールドの状態に基づいて、構成動作を行う。さらに、各構成サイクルの終了までに、計算ノード１０２は、接続ノードの各々に対応する構成フィールドの値に基づいて、構成フィールド４０１〜４０５の各々を更新する。
【００３１】
例示すると、方向及びアドレス状態フィールド４０１は、計算ノード１０２に関連するＦＲＵの方向を示す情報を記憶する。システムリセットの後、計算ノード１０２は、方向及びアドレス状態フィールド４０１に対して、ＦＲＵの方向が不明であることを示す値を設定する。計算ノード１０２は、対応するＦＲＵの特定の方向を示す、接続ノードの１つのアドレス及び方向フィールドに応じて、方向及びアドレス状態フィールド４０１を更新し、計算ノード１０２に関連するＦＲＵが、接続ノードのＦＲＵと同じ方向を有していることを示す。
【００３２】
スパニングツリー状態フィールド４０２は、計算ノード１０２がファブリックインターコネクト１１２のノードのスパニングツリーに参加する準備ができているか否かを示す情報を記憶し、計算ノード１０２が参加すると、スパニングツリーにおける当該計算ノードの接続ノードに対する位置を記憶する。例えば、システムリセットの後、計算ノード１０２は、スパニングツリー状態フィールド４０２の値をアイドル状態に設定することができる。アイドル状態は、計算ノード１０２がスパニングツリーにまだ参加しなかったことを示す。計算ノード１０２は、接続ノードのうち１つのノードでスパニングツリー状態フィールドがレディ状態にされたことに応じて、スパニングツリー状態フィールド４０２をレディ状態に設定する。レディ状態は、計算ノード１０２がスパニングツリーに参加する準備ができていることを示す。計算ノード１０２は、接続ノードの各々におけるスパニングツリー状態フィールドの状態のその後の変化に基づいてスパニングツリー状態フィールド４０２の状態を変化させて、スパニングツリー内の計算ノードの、接続ノードに対する位置を示す。本明細書でさらに説明するように、サーバ１００の計算ノードの各々におけるスパニングツリー状態フィールドの変化から生じるスパニングツリーは、各ノードを構成するために構成メッセージを通信するのに用いられる。
【００３３】
割り込み転送状態フィールド４０３は、計算ノード１０２の接続ノードから受信し又は当該接続ノードに送信した割り込みメッセージの状態を示す情報を記憶する。例えば、いくつかの実施形態では、計算ノード１０２がファブリックインターコネクト１１２のノードのスパニングツリーに参加した後、計算ノード１０２は、接続ノードにおける割り込み転送状態フィールドの状態に基づいて割り込み転送状態フィールド４０３の状態を設定して、接続ノードから受信した割り込みの状態を反映し、接続ノードのうち１つのノードから割り込みメッセージを受信した場合に、当該接続ノードの別のノードに割り込みメッセージを転送したか否か、又は割り込みメッセージへの応答を受信したか否か等を反映する。さらに、計算ノード１０２は、転送状態フィールド４０３の状態に基づいて、受信した割り込みメッセージ及び応答を処理する。この処理は、転送フィールド４０３の状態に基づいて、受信メッセージを他の接続ノードに転送することを含む。これにより、割り込み転送フィールド４０３は、個々のノードの直接アドレス指定を用いることなく、ファブリックインターコネクト１１２を介して割り込みメッセージを転送するための低レイテンシ機構を提供する。
【００３４】
ウェーブメッセージ状態フィールド４０４及びチェーンメッセージ状態フィールド４０５の各々は、本明細書でさらに説明するように、特定の構成メッセージタイプの処理状態を示す値を記憶する。構成中、計算ノード１０２は、各タイプの受信メッセージに基づいてフィールド４０４，４０５の各々の状態を変化させて、所定のプロトコルにしたがってメッセージを確実に処理する。
【００３５】
いくつかの実施形態では、計算ノード１０２は、ＢＩＯＳコード又は他の構成情報を記憶する。ＢＩＯＳコード又は他の構成情報は、計算ノード１０２によって実行されると、ＢＩＯＳコード又は他の構成情報によって定義された対応する式にしたがって構成フィールド４０１〜４０５の各々を更新する。これにより、各構成フィールドの状態情報が、所定のプロセスにしたがって式が示すように変化して、各ノードが、所定の構成プロセスにしたがって構成されることを確実にする。この式は、構成ノード又は他の制御ノードによる状態情報の直接的な通信を行うことなく構成フィールドの変化を提供するので、特別な帯域外構成ネットワークが不要になる。
【００３６】
構成フィールドの変化を提供する数式を以下の式（１）に示す。
【数１】
0006491741.tif 000002
ここで、Ｓｉ，ｎは、構成サイクルｎにおけるノードＳの構成フィールドの状態であり、Ｎ（ｉ）は、ノードＳを対象とする接続されたセルである。特定の関数及びＮ（ｉ）は、構成フィールド毎に異なることができ、Ｎ（ｉ）は、１つ以上の構成フィールドの状態に基づいて変化することができ、これにより、構成フィールドのより複雑な変化を提供する。
【００３７】
図５は、いくつかの実施形態による、計算ノード１０２の構成フィールドに対する状態のセット５００の一例を示す図である。セット５００は、構成フィールドに記憶された異なる値によって表される状態５０１，５０２，５０３，５０４を含む。状態５０１〜５０４の間の矢印は、計算ノード１０２の１つ以上の接続ノードに対応する構成フィールドにおける値の変化から生じる状態間の遷移を表す。
【００３８】
例示すると、いくつかの実施形態では、セット５００は、図４のスパニングツリー状態４０２の状態セットである。スパニングツリー状態４０２は、システムリセットに応じて、アイドル状態を表す状態５０１に遷移する。アイドル状態では、計算ノード１０２は、アイドル状態を示すトークンを、接続ノードに定期的に送信する。
【００３９】
対応する接続ノードがレディ状態に入った当該接続ノードの少なくとも１つからトークン（説明目的で「ＴＯＰＯ」トークンと称する）を受信したことに応じて、計算ノード１０２は、スパニングツリー状態４０２を、レディ状態を表す状態５０２に遷移させる。計算ノード１０２は、レディ状態の間、接続ノードのうち１つのノードからスパニングツリー内の相対位置を示すスパニングツリー情報を受信すると、スパニングツリー状態４０２を状態５０３に遷移させる。状態５０３では、計算ノード１０２は、スパニングツリー内の接続ノードに対する位置を識別する。例えば、いくつかの実施形態では、計算ノードは、ＴＯＰＯトークンを送信した接続ノードを、スパニングツリーのルートに近い（より隣接する）ノードとして識別する。したがって、ＴＯＰＯトークンを送信するノードは、スパニングツリーの「近位ノード」として、計算ノード１０２によって識別される。その後、計算ノード１０２は、レディ状態５０２に戻る。
【００４０】
さらに、レディ状態５０２では、計算ノード１０２は、当該計算ノード１０２が１つ以上の接続ノードに対する隣接ノードとして構築されたことを示すトークンを、当該接続ノードから受信することができる。これに応じて、計算ノード１０２は、スパニングツリー状態４０２を状態５０４に遷移させる。スパニングツリー状態４０２が状態５０４の場合には、計算ノード１０２は、何れの接続ノードがスパニングツリー内の「遠位ノード」であるかを示す情報を記憶する。近位ノード及び遠位ノードを識別することにより、計算ノード１０２は、スパニングツリー全体のトポロジを識別することなく、スパニングツリー内の、接続ノードに対する計算ノード自身の位置を識別する。これにより、ファブリック１２２の各ノードにおける構成が簡素化される。
【００４１】
いくつかの場合、計算ノード１０２は、アイドル状態５０１の間、複数の接続ノードからＴＯＰＯトークンを同時に受信することができる。このＴＯＰＯトークンは、複数の接続ノードの各々がアイドル状態５０１からレディ状態５０２に遷移したことを示す。これに応じて、計算ノード１０２は、レディ状態に遷移し、ＢＩＯＳコードに反映された所定の規則にしたがって、ＴＯＰＯトークンを送信した接続ノードのうち１つを、スパニングツリー内の近位ノードとして識別する。例えば、いくつかの実施形態では、各ノードがカウンタを含み、カウンタは、システムリセットに応じて、最初に０に設定される。レディ状態５０２への遷移に応じて、ノードは自身のカウンタを増加させ、増加した値を、自身の接続ノードに送信するＴＯＰＯトークンに組み込まれたツリー深さフィールドとして通信する。ノードは、アイドル状態５０１の間に単一のＴＯＰＯトークンを受信したことに応じて、自身のカウンタをツリー深さフールドの値に設定する。したがって、各ノードのカウンタは、スパニングツリーのノードの深さを示す。ノードは、アイドル状態の間に複数のＴＯＰＯトークンを受信したことに応じて、ツリー深さフィールドが最小値のＴＯＰＯトークンを選択してその値を増加させ、増加した値を自身のカウンタに記憶し、対応する接続ノードがスパニングツリー内の近位ノードであることを示す情報を記憶する。したがって、各ノードは、スパニングツリー内に１つの近位ノードを有するが、複数の遠位ノードを有することができる。
【００４２】
計算ノード１０２は、レディ状態５０２の間、近位ノードが何らかの障害を経験したことを示すトークンを受信することができ、そうでなければ識別することができる。これに応じて、計算ノード１０２は、アイドル状態５０１に戻る。その後、計算ノードは、他の接続ノードのうち１つがレディ状態にあることを示すトークンを受信することによりレディ状態５０２に戻り、当該他の接続ノードに対するスパニングツリー内の位置を再構築することができる。したがって、ファブリック１２２のノードは、構成中に個々のノードの障害を調整でき、これにより、構成プロセスの堅牢性を向上させる。
【００４３】
セット５００は、計算ノード１０２の構成フィールドのうち１つのみの異なる状態を表し、各構成フィールドは、図５に例示する状態とは異なる、対応する状態のセットを有し得ることを理解されたい。さらに、計算ノード１０２は、接続ノードでの対応する構成フィールドの状態に基づいて、各構成サイクル中に当該構成フィールドの２つ以上の状態を調整することができる。例えば、いくつかの場合、計算ノード１０２は、同じ構成サイクル中に、割り込み転送状態の変化を示すトークンを接続ノードのうち１つから受信することができ、さらに、ウェーブメッセージ状態の変化を示すトークンを接続ノードのうち他の１つから受信することができる。したがって、構成サイクル中に、計算ノード１０２は、トークンに応じて、割り込み転送状態及びウェーブメッセージ状態の両方を更新することができ、両方のフィールドの更新状態に対応する構成動作を行うことができる。これにより、同じ構成サイクル中に計算ノード１０２の複数の態様を構成することが可能になり、構成プロセスの効率が向上する。
【００４４】
図６は、いくつかの実施形態による、サーバを構成する方法６００のフロー図である。記載の目的のために、方法６００は、図１〜５に記載したファブリック１２２の実装例に関して説明される。ブロック６０２では、サーバ１００は、例えば、サーバ１００での電源の切断及び再投入に応じて、ソフトウェアリセット、リセットスイッチの起動等に応じて発生し得るシステムリセットを経験する。システムリセットに応じて、ファブリック１２２の各ノードがリセットされる。ブロック６０４では、ファブリック１２２の各ノードは、本明細書にて構成クロックと称されるローカルクロックを、自身の接続ノードの構成クロックと同期させる。各ノードは、構成クロックに基づいて、構成フィールドの状態間の遷移を管理する。いくつかの実施形態では、接続ノードの構成クロックは、各ノード内の継続的なフィードバックプロセスを介して同期される。フィードバックプロセスでは、ノードの構成クロックが、所定の許容差内で接続ノードと同期される。所定の許容差は、全てのノードの構成クロックが全体の許容差内で同期するように定義される。全体の許容差は、全てのノードが任意の必要な状態遷移を完了すると予想される周期的なインスタンスを確立する。これらの周期的なインスタンスによって定義される時間は、本明細書では「構成サイクル」と称される。特に、構成サイクルは、ファブリック１２２のノードにおける状態遷移のための全体的なタイミング構造を確立し、これにより、任意の２つの所定のノードの構成クロックが完全に同期されていなくても、各ノードの状態遷移が構成サイクルの開始時又は開始後に始まることが予想され、同じ構成サイクルの終了時又は終了前に完了することが予想される。
【００４５】
ブロック６０６では、ファブリック１２２のノードは、図５に関して上述した同様の方法でアイドル状態からレディ状態に遷移する。いくつかの実施形態では、本明細書でさらに説明するように、ファブリック１２２は、ファブリック１２２の構成を制御する管理ユニット（ＭＵ）と称される少なくとも１つのプロセッサを含む。ＭＵは、ルーティングテーブル、ノードアドレス等の構成情報を含むメモリに接続されており、ファブリック１２２の各ノードを構成する。ＭＵは、ファブリック１２２の計算ノードのうち１つに接続されている。ＭＵは、システムリセットに応じて、ＭＵ自身のＢＩＯＳコードを実行して、計算ノードをアイドル状態からレディ状態に遷移するための命令を、接続された計算ノードに送信する。これにより、ファブリック１２２の各機能ノードは、最終的にレディ状態に遷移する。
【００４６】
ノードがレディ状態に遷移すると、ブロック６０８では、ノードは、図５に関して上述したように、スパニングツリーに自己組織化する。ブロック６１０では、ＭＵは、チェーン及びウェーブメッセージ等のメッセージを用いて、構成情報を各ノードに配信する。構成情報の例には、各ノードがノード間で１つ以上のユニキャストメッセージを介して他のノードと通信することを可能にするために、各ノードのアドレス、各ノードのルーティングテーブル等が含まれる。ブロック６１２では、ファブリック１２２のノードは、ソフトウェアサービスを実行する。この実行には、アドレス、ルーティングテーブル及びブロック６１０で配信された他の構成情報に基づいて、ノード間でメッセージを送信することが含まれる。
【００４７】
図７は、いくつかの実施形態による、ファブリックインターコネクトを介して接続された計算ノード７０２〜７１３を含むファブリック７００を示す図である。ファブリック７００は、上述したファブリック１２２と同様に動作するが、説明のために二次元トポロジに配置される。本明細書でファブリック７００について説明した原理及び技法は、３Ｄトポロジ（例えば、３Ｄトーラス）を有するファブリックにも適用されることを理解されたい。図７に示された例では、ファブリック７００は、ノード７０２に接続された単一のＭＵ７０１を含む。ＭＵ７０１は、ノード７０２〜７１３のレディ状態への遷移を開始することによって、ソフトウェアサービスの実行のためにファブリック７００の構成を制御する。さらに、ノード７０２〜７１３がレディ状態になると、ＭＵは、ファブリック７００全体にわたる構成メッセージの伝搬を開始することによって各ノードを構成する。これらの技法は、図８〜１０の例を参照することによって、より良く理解することができる。
【００４８】
図８は、いくつかの実施形態による、ノード７０２〜７１３がアイドル状態からレディ状態に遷移する例示的なシーケンスを示す図である。これらの遷移により、ノード７０２〜７１３は、ファブリック７００全体にわたる構成メッセージの伝搬を管理するスパニングツリーに自己組織化する。図８は、構成サイクル８０１〜８０６のシーケンスを図示することによる遷移が示されている。アイドル状態のノードは、クロスハッチングのない円で示されており、レディ状態のノードは、クロスハッチングされた円で示されている。
【００４９】
構成サイクル８０１の前に、ファブリック７００はシステムリセットを経験する。これにより、ＭＵ７０１の初期化及びノード７０２〜７１３における構成クロックの同期化が行われる。構成サイクル８０１では、ＭＵ７０１は、スパニングツリー状態フィールドをレディ状態に遷移するための命令を、（例えば、ノード７０２の指定されたレジスタに書き込むことによって）ノード７０２に発行する。これに応じて、構成サイクル８０２では、ノード７０２は、自身のスパニングツリー状態フィールドをレディ状態に遷移させ、ＴＯＰＯトークンをノード７０３，７０４，７０６に発行する。構成サイクル８０３では、ノード７０３，７０４，７０６の各々は、自身のスパニングツリー状態フィールドをアイドル状態からレディ状態に遷移させ、ＴＯＰＯトークンを自身の接続ノード（ノード７０５，７０７，７０９）に発行する。これに応じて、構成サイクル８０４では、ノード７０５，７０７，７０９は、アイドル状態からレディ状態に遷移して、ＴＯＰＯトークンを自身の接続ノード（ノード７０８，７１０，７１２）に発行する。ＴＯＰＯトークンに応じて、ノード７０８，７１０，７１２は、構成サイクル８０５により、自身のスパニングツリー状態フィールドをレディ状態に遷移させ、ＴＯＰＯトークンを自身の接続ノード７１１，７１３に発行する。これに応じて、接続ノード７１１，７１３は、構成サイクル８０６でレディ状態に遷移する。したがって、図８に示された例では、ＭＵ７０１が単一ノード（つまり、ノード７０２）に命令を発行することに基づいて、ノード７０２〜７１３の全てのスパニングツリー状態フィールドをアイドル状態からレディ状態に遷移させる。これにより、ＭＵ７０１が帯域外ネットワークを介して各ノードに個々のメッセージを送信することによって各ノードの構成を個々に準備しなければならなかった従来のシステムと比較して、ＭＵ７０１におけるオーバーヘッドが低減する。
【００５０】
図５に関して上述した方法と同様に、ノード７０２〜７１３がレディ状態に遷移し、ノード７０２〜７１３は、自身の１つ以上の接続ノードに対するスパニングツリー内での自身の位置を識別することによって、スパニングツリーに自己組織化する。例示的なスパニングツリー９００が図９に示されている。スパニングツリー９００は、図８の例示的なシーケンスによって形成されたスパニングツリーを表さない場合があることに留意されたい。図８に示されていないが、ノード７０２〜７１３のうち異なるノードが、形成されたスパニングツリー内に異なる数の遠位ノードを有することを示すために、異なるファブリックトポロジのスパニングツリーが代わりに示される。したがって、スパニングツリー９００の図示された例では、ノード７０２は、ノード７０２，７０４の２つの遠位ノードを有し、ノード７０６は、単一の遠位ノード７１０を有し、ノード７０７は、３つの遠位ノード７１１，７１２，７１３を有する。ノード７０２〜７１３の各々は、対応する近位ノードを１つだけ有する。
【００５１】
構成メッセージは、スパニングツリー９００のトポロジに沿って伝搬され、構成情報をＭＵ７０１から１つ以上のノード７０２〜７１３に配信することができる。特に、ノード７０２〜７１３の各々は、異なるメッセージタイプの処理を管理するために、メッセージタイプに対応する構成フィールドの状態を管理する。図１０は、チェーンメッセージタイプを用いて構成情報を通信するための例示的な技術を示す図である。チェーンメッセージを受信したことに応じて、ノード７０２〜７１３の各々は、自身のチェーンメッセージ状態フィールドを、自身の遠位ノードの１つ（存在する場合）にチェーンメッセージを提供する状態にする。ノードがスパニングツリー７００内に２つ以上の遠位ノードを有する場合には、ノードは、各遠位ノードに固定番号を割り当てて、チェーンメッセージ状態を、チェーンメッセージが未だ送信されていない接続ノードであって最下位が割り当てられた接続ノードに対してチェーンメッセージを送信する状態に遷移する。メッセージが全ての遠位ノードに送信されたことをノードが識別した場合には、ノードは、チェーンメッセージ状態を、近位ノードにメッセージを提供する状態に遷移する。そして、チェーンメッセージは、スパニングツリー７００の深さトラバースを行い、メッセージがルートノード７０２に戻るとトラバースが終了する。ここから、チェーンメッセージ又はそのペイロードが、さらなる処理のためにＭＵ７０１に提供され得る。
【００５２】
図１０は、いくつかの実施形態による、ファブリック全体にわたるチェーンメッセージの伝搬の一部を示す構成サイクルの１セットを示す図である。構成サイクル１００１では、ノード７０２は、ＭＵ７０１からチェーンメッセージを受信する。これに応じて、ノード７０２は、ノード７０３として識別される下位の番号の遠位ノードにメッセージが送信されることを識別し、メッセージを、ノード７０３に対応する出力ポートに通信する。構成サイクル１００２では、チェーンメッセージがノード７０３に配信されており、ノード７０３は、自身に接続された遠位ノード７０５を、チェーンメッセージを未だ受信していない最下位番号の遠位ノードとして識別する。これにより、ノード７０３は、チェーンメッセージをノード７０５に提供する。構成サイクル１００３では、ノード７０５は、ノード７０８を自身の最下位番号の遠位ノードとして識別し、チェーンメッセージをノード７０８に提供する。構成サイクル１００４では、ノード７０８は、遠位ノードを有していないことを識別し、チェーンメッセージを自身の近位ノード７０５に通信する。構成サイクル１００５では、ノード７０５は、チェーンメッセージを未だ受信していない最下位番号の遠位ノードがノード７０９であると識別する。これにより、ノード７０５は、チェーンメッセージをノード７０９に提供する。構成サイクル１００６では、ノード７０９は、遠位ノードを有していないことを判断し、チェーンメッセージを自身の近位ノード７０５に提供する。ノード７０５は、全ての遠位ノードにチェーンメッセージが提供されたと判断し、メッセージを自身の近位ノード７０３に提供する。チェーンメッセージは、ルートノード７０２に到達するまでスパニングツリー９００のトポロジにしたがって、ファブリックをトラバースし続ける。ルートノード７０２は、チェーンメッセージ又はそのペイロードをＭＵ７０１に提供することができる。
【００５３】
チェーンメッセージは、ノード７０２〜７１３の１つ以上に構成情報を送受信するために、構成ノードによって使用され得る。例えば、いくつかの実施形態では、チェーンメッセージは、アドレス情報、ルーティングテーブル情報又は他の構成情報等の構成情報のペイロードを含む。また、チェーンメッセージは、ノード７０２〜７１３のうち特定のノードをペイロード情報のターゲットとして識別するフィールドを含む。いくつかの実施形態では、ＭＵは、タプル（ｘ，ｙ，ｚ）を有するターゲットノードの相対位置をメッセージに含めることによって、メッセージのターゲットを識別する。各ノードは、自身の接続ノードの何れかにチェーンメッセージを送ると、通信ノードに対する受信ノードの相対位置に基づいてタプルの値を調整する。例えば、受信ノードが通信ノードに対して「＋Ｘ」ノードである場合には、通信ノードは、タプルのｘ値から１を引くことができる。したがって、タプルは、宛先に到達すると値（０，０，０）を有する。各ノードは、チェーンメッセージを受信すると、チェーンメッセージのノード識別子を確認し、タプル値が（０，０，０）の場合には、ノードで実行されたＢＩＯＳコードにしたがってさらに処理を行うことができる構成レジスタの１つにペイロードを記憶する。いくつかの実施形態では、このさらなる処理は応答ペイロードを生成し、ターゲットノードは、チェーンメッセージがスパニングツリー７００内の次のノードに提供される前に、応答ペイロードをチェーンメッセージに記憶することができる。チェーンメッセージが最終的にルートノード７０２に戻り、そこからＭＵ７０１に行くため、チェーンメッセージは、ＭＵ７０１からターゲットノードへの情報の通信と、ターゲットノードからＭＵ７０１へのリターン情報の通信と、の両方の技法を提供する。さらに、構成情報の通信は、ＭＵ７０１が、ターゲットノードへのダイレクトパスを決定することなく行われ、ターゲットノードの位置によって定義された特別なルーティング経路に沿って構成メッセージをルーティングするノード７０２〜７１３の何れも用いずに行われる。これにより、後に使用される同じファブリックインターコネクトを介して構成メッセージを通信し、ソフトウェアサービスの実行中に、ノード７０２〜７１３間の定義されたルーティング経路に沿ってメッセージを通信することが可能になる。
【００５４】
例示すると、ＭＵ７０１が、構成情報をノード７０８に通信することを望む場合には、ＭＵ７０１は、構成サイクル１００１において、構成情報を伴うチェーンメッセージをノード７０２に提供する。構成サイクル１００４により、チェーンメッセージは、ノード７０８に到達する。これに応じて、ノード７０８は、ノード７０８がチェーンメッセージのターゲットノードであることを識別し、自身の構成レジスタの１つ以上にチェーンメッセージのためのペイロード情報を記憶し、任意の応答情報を生成し、応答情報をチェーンメッセージのペイロードに記憶する。ノード７０８は、構成サイクル１００５で遠位ノード７０５への修正済みチェーンメッセージを提供する。チェーンメッセージは、チェーンメッセージがノード７０２に戻るまで、後続の構成サイクルを介してスパニングツリーをトラバースし続け、ノード７０２は、メッセージのペイロード（ノード７０８からの任意の応答情報を含む）をＭＵ７０１に提供する。
【００５５】
図１１は、いくつかの実施形態による、ウェーブメッセージがスパニングツリー９００を通って伝搬される方法を示す構成サイクルのシーケンスを示す図である。ウェーブタイプメッセージを受信したことに応じて、各ノードは、自身のウェーブメッセージ状態フィールドを、ウェーブメッセージを自身の遠位ノードに以前に提供したか否か識別する状態にし、提供していない場合には、メッセージを自身の全ての遠位ノードに提供するように当該ウェーブメッセージ状態フィールドを遷移させる。メッセージが遠位ノードに以前に提供されていた場合には、ノードは、ウェーブメッセージ状態フィールドを、ウェーブメッセージに対する応答を自身の全ての遠位ノードから待つ状態に遷移させる。ノードは、ウェーブメッセージに対する全ての遠位ノードからの応答を受信すると、ウェーブメッセージ状態フィールドを、自身の隣接ノードにウェーブメッセージを提供する状態に遷移させる。したがって、図１１に示された例では、構成サイクル１１０１において、ノード７０２は、ＭＵ７０１からウェーブメッセージを受信する。これに応じて、ノード７０２は、自身の遠位ノード７０３，７０４の両方にウェーブメッセージを提供する。構成サイクル１１０２では、ノード７０３，７０４の各々は、ウェーブメッセージが自身の遠位ノードに以前に提供されていないと判断する。したがって、ノード７０３は、ウェーブメッセージを自身の遠位ノード７０５，７０６に提供し、ノード７０４は、ウェーブメッセージを自身の遠位ノード７０７に提供する。同様に、構成サイクル１１０３では、ノード７０５は、ウェーブメッセージを自身の遠位ノード７０８，７０９に提供し、ノード７０６は、ウェーブメッセージを自身の遠位ノード７１０に提供し、ノード７０７は、ウェーブメッセージを自身の遠位ノード７１１，７１２，７１３に提供する。
【００５６】
構成サイクル１１０４では、ノード７０８〜７１３の各々は、スパニングツリー８００に遠位ノードが存在しないことを識別する。したがって、ノード７０８〜７１３の各々は、ウェーブメッセージを対応する近位ノードに提供する。例えば、ノード７０９は、ウェーブメッセージを自身の近位ノード７０５に提供する。構成サイクル１１０５，１１０６では、ウェーブメッセージが、構成サイクル１１０６においてＭＵ７０１に戻るまで、スパニングツリー９００に沿って先端方向に進み続ける。
【００５７】
図１２は、いくつかの実施形態による、サーバ１００のノードの物理的配置の一例を示す図である。図示された例では、ファブリックインターコネクト１１２（図１）は、１つ以上のインターコネクト１２０２を含み、インターコネクト１２０２は、プラグインソケット１２０４の１つ以上の列又は他の集合体を有する。インターコネクト１２０２は、例えば、バックプレーン、プリント配線基板、マザーボード、ケーブル、他のフレキシブル配線若しくはこれらの組み合わせ等の固定又はフレキシブルなインターコネクトを含むことができる。さらに、インターコネクト１２０２は、電気信号、光信号又はこれらの組み合わせを実装することができる。各プラグインソケット１２０４は、例えばＦＲＵ１２０６〜１２１１等の１つ以上のＦＲＵをインターコネクト１２０２に接続するように動作するカードエッジソケットを備える。各ＦＲＵは、サーバ１００の対応するノードを表す。例えば、ＦＲＵ１２０６〜１２０９は、計算ノードを備えてもよく、ＦＲＵ１２１０は、ネットワークノードを備えてもよく、ＦＲＵ１２１１は、ストレージノードを備えてもよい。ＦＲＵ１２０６〜１２１１の１つ以上は、対応する管理ユニットをさらに含んでもよい。
【００５８】
各ＦＲＵは、ＰＣＢ上に配置されたコンポーネントを含む。これらのコンポーネントは、ＰＣＢの金属層を介して相互接続され、ＦＲＵによって表されるノードの機能を提供する。例えば、本例では計算ノードであるＦＲＵ１２０６は、ＰＣＢ１２１２を含む。ＰＣＢ１２１２には、１つ以上のプロセッサコア１２２２を備えるプロセッサ１２２０と、例えばＤＲＡＭデュアルインラインメモリーモジュール（ＤＩＭＭ）等の１つ以上のメモリモジュール１２２４と、ファブリックインターフェース装置１２２６と、が実装されている。各ＦＲＵは、ソケットインターフェース１２４０をさらに含み、ソケットインターフェース１２４０は、プラグインソケット１２０４を介してＦＲＵをインターコネクト１２０２に接続するように動作する。
【００５９】
インターコネクト１２０２は、データ通信パスをプラグインソケット１２０４間に提供する。これにより、インターコネクト１２０２は、ＦＲＵをリング状に接続し、リングを２Ｄ又は３Ｄトーラスネットワークトポロジ（例えば、図３のトーラスネットワーク３００等）に接続するように動作する。ＦＲＵは、例えば、ＦＲＵ１２０６のファブリックインターフェース装置１２２６等のように、対応するファブリックインターフェースを通るデータ通信パスを利用する。ソケットインターフェース１２３０には、プラグインソケット１２０４の対応する電気接点に電気的に接続する電気接点（例えば、カードエッジピン）が設けられており、Ｘ次元リング（例えば、ピン０，１のリングＸ＿ＩＮポート１２３２及びピン２，３のリングＸ＿ＯＵＴポート１２３４）、Ｙ次元リング（例えば、ピン４，５のリングＹ＿ＩＮポート１２３６及びピン６，７のリングＹ＿ＯＵＴポート１２３８）、Ｚ次元リング（例えば、ピン８，９のリングＺ＿ＩＮポート１２４０及びピン１０，１１のリングＺ＿ＯＵＴポート１２４２）のポートインターフェースとして機能する。図示した例において、各ポートは、例えば、ＰＣＩＥレーンの入力ポート又は出力ポートを備える差動送信器である。当業者であれば、追加のレーン又は追加のポートに適応するために、ポートが追加のＴＸ／ＲＸ信号ピンを含むことができることを理解するであろう。
【００６０】
図１３は、いくつかの実施形態による、図１のサーバ１００に実装された計算ノード１３００を示す図である。計算ノード１３００は、例えば、図１の計算ノード１０１〜１０６のうち１つに対応する。図示された例では、計算ノード１３００は、プロセッサ１３０２と、システムメモリ１３０４と、ファブリックインターフェース装置１３０６と（各々が、図１２のプロセッサ１２２０と、１つ以上のメモリモジュール１２２４と、ファブリックインターフェース装置１２２６と、を表す）を含む。プロセッサ１３０２は、１つ以上のプロセッサコア１３０８及びノースブリッジ１３１０を含む。１つ以上のプロセッサコア１３０８は、例えば、中央処理装置（ＣＰＵ）コア、グラフィックス処理装置（ＧＰＵ）コア、デジタル信号処理装置（ＤＳＰ）コア等の様々な種類のプロセッサコア又はこれらの組み合わせを含むことが可能であり、例えば、ｘ８６命令セットアーキテクチャ又はＡｄｖａｎｃｅｄ  ＲＩＳＣ  Ｍａｃｈｉｎｅ（ＡＲＭ）アーキテクチャ等の様々な命令セットアーキテクチャの何れを実装してもよい。システムメモリ１３０４は、例えば、ＤＲＡＭモジュール、ＳＲＡＭモジュール、フラッシュメモリ、又はこれらの組み合わせ等の１つ以上のメモリモジュールを含むことができる。ノースブリッジ１３１０は、１つ以上のコア１３０８と、システムメモリ１３０４と、ファブリックインターフェース装置１３０６と、インターコネクトする。ファブリックインターフェース装置１３０６は、いくつかの実施形態では、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、マスクプログラマブルゲートアレイ、プログラマブルロジック等に実装される。
【００６１】
従来のコンピューティングシステムでは、ノースブリッジ１３１０がサウスブリッジに接続されており、サウスブリッジが、ノースブリッジ１３１０（したがって、プロセッサコア１３０８）と、ローカル周辺リソースを管理する１つ以上のローカルＩ／Ｏコントローラと、の間のインターフェースとして機能していた。しかしながら、上述したように、いくつかの実施形態では、計算ノード１３００は、ローカル周辺リソース又はこれらのＩ／Ｏコントローラを管理せず、その代わりにサーバ１００の他のノードで共有されたリモート周辺リソースを使用する。この配置を、プロセッサ１３０２で実行するソフトウェアに対して透過的にするために、ファブリックインターフェース装置１３０６は、ファブリックインターフェース装置１３０６のハードウェアがサウスブリッジをエミュレートし、ノースブリッジ１３１０に対して、ローカル周辺リソースに接続されたローカルサウスブリッジとして見えるように、計算ノードに割り当てられたリモート周辺リソースを仮想化する。
【００６２】
この目的のために、ファブリックインターフェース装置１３０６は、Ｉ／Ｏバスインターフェース１３１２と、仮想ネットワークコントローラ１３１４と、仮想ストレージコントローラ１３１６と、パケットフォーマッタ１３１８と、ＮＩＣ１３１９と、を含み、ＮＩＣ１３１９は、ファブリックスイッチ１３２０を備える。Ｉ／Ｏバスインターフェース１３１２は、ローカルＩ／Ｏバス１３２４を介してノースブリッジ１３１０に接続し、ローカルＩ／Ｏバス１３２４に現れる仮想化された周辺リソースに向けられる要求をインターセプトし、ローカル周辺リソースと同様に当該要求に応答することにより、各ローカルプロセッサコア１３０８の仮想エンドポイントとして機能する。しかしながら、Ｉ／Ｏバスインターフェース１３１２によって仮想的に表されている周辺リソースのリモート位置に起因して、潜在的により長い遅延が伴う。
【００６３】
Ｉ／Ｏバスインターフェース１３１２が物理的なインターフェースをノースブリッジ１３１０に提供し、同時に仮想ネットワークコントローラ１３１４及び仮想ストレージコントローラ１３１６によって、より高レベルの応答が生成される。例えば、データセンタネットワーク１１４（図１）に接続されるイーサネット（登録商標）ＮＩＣ等の外部ネットワークに接続されるネットワーク周辺機器のためにＩ／Ｏバス１３２４を介して送信される要求は、Ｉ／Ｏバスインターフェース１３１２によって仮想ネットワークコントローラ１３１４にルーティングされ、同時にストレージ要求がＩ／Ｏバスインターフェース１３１２によって仮想ストレージコントローラ１３１６にルーティングされる。仮想ネットワークコントローラ１３１４は、例えば、イーサネット（登録商標）プロトコルに基づいて、受信要求及び送信要求の処理を提供する。仮想ストレージコントローラは、例えば、シリアルＡＴＡ（ＳＡＴＡ）プロトコル、シリアルアタッチドＳＣＳＩ（ＳＡＳ）プロトコル、ユニバーサルシリアルバス（ＵＳＢ）プロトコル等に基づいて、受信要求及び送信要求の処理を提供する。
【００６４】
図１〜１１に関して上述した各計算ノードの構成後に、計算ノード１３００は、要求を生成するソフトウェアサービスを実行する。要求は、仮想ネットワークコントローラ１３１４又は仮想ストレージコントローラ１３１６によって処理された後、パケットフォーマッタ１３１８に転送され、パケットフォーマッタ１３１８は、要求を１つ以上のパケットにカプセル化する。そして、パケットフォーマッタ１３１８は、要求のために、物理的な周辺リソースを管理するＩ／Ｏノードのファブリックアドレス又は他の位置識別子を決定する。パケットフォーマッタ１３１８は、識別したファブリックアドレス（本明細書では「ファブリックＩＤ」と称する）を、要求がカプセル化された１つ以上のパケットのヘッダに追加し、送信のために、パケットをＮＩＣ１３１９のファブリックスイッチ１３２０に提供する。
【００６５】
図示したように、ファブリックスイッチ１３２０は、複数のポートを実装しており、各ポートは、ファブリックインターコネクト１１２の異なるリンクと相互作用する。図２の３×３のトーラスネットワーク２００を用いて説明するために、計算ノード１３００は、（１，１，１）のノードを表すものと仮定する。本例では、ファブリックスイッチ１３２０は、スイッチを７つの双方向リンクに接続するために、少なくとも７つのポートを有する。すなわち、パケットフォーマッタ１３１８への内部リンクと、ノード（０，１，１）への外部リンクと、ノード（１，０，１）への外部リンクと、ノード（１，１，０）への外部リンクと、ノード（１，２，１）への外部リンクと、ノード（２，１，１）への外部リンクと、ノード（１，１，２）への外部リンクと、である。計算ノード１３００の構成後、ファブリックスイッチ１３２０のポート間のデータのスイッチング制御は、統合された決定論的なスイッチング論理（integrated deterministic switching logic）に基づいて決定される。スイッチング論理は、パケットにより示された宛先アドレス（つまり、宛先ファブリックＩＤ）と、サーバ１００に実装された決定論的ルーティングとに基づいて、出口ポートを特定する。各計算ノードの宛先ファブリックＩＤは、構成中に各ノードに配信することができる。例えば、ＭＵは、上述したように、宛先ファブリックＩＤを、一連のチェーンメッセージを介して各計算ノードに配信することができる。
【００６６】
ＭＵによる構成の後、及び、ソフトウェアサービスの正常な実行中に、計算ノード１３００は、受信したパケットを以下のように処理する。別の他のノードから受信したパケットであって、宛先が計算ノード１３００であるパケットについては、ファブリックスイッチ１３２０は、決定論的なルーティング論理に基づいて、受信したパケットを、パケットフォーマッタ１３１８に接続されているポートにルーティングする。そして、パケットフォーマッタ１３１８は、パケットからの応答／要求を非カプセル化し、要求に含まれるタイプ識別子に基づいて、仮想ネットワークコントローラ１３１４又は仮想ストレージコントローラ１３１６に提供する。要求を受信したコントローラは、次いで応答／要求を処理し、Ｉ／Ｏバスインターフェース１３１２を制御してノースブリッジ１３１０に要求を送信する。ここで、応答／要求は、ローカル周辺リソースからの応答又は要求であるかのように処理される。
【００６７】
計算ノード１３００がパケットのルーティングパスにおける中間ノードである一時的なユニキャストパケットでは、ファブリックスイッチ１３２０は、一時的なパケットのヘッダから宛先アドレス（例えば、タプル（ｘ，ｙ，ｚ））を決定し、決定論的なルーティング論理によって識別された対応する出力ポートにパケットを提供する。いくつかの実施形態では、ファブリックスイッチ１３２０は、ローカルに記憶されたルーティングテーブルを用いて宛先アドレスを決定する。構成中、ＭＵは、上述したチェーンメッセージ又はウェーブメッセージを用いて、ルーティングテーブルを各計算ノードに配信することができる。
【００６８】
上述したように、計算ノード１３００を構成するＢＩＯＳの一部は、同様に、仮想化された周辺リソースとすることができる。かかる場合、ファブリックインターフェース装置１３０６は、ローカルＩ／Ｏバス１３２４を介して、又は、個別のローピンカウント（ＬＰＣ）バス１３２８を介して、ノースブリッジ１３１０に接続されたＢＩＯＳコントローラ１３２６を含むことができる。ストレージリソース及びネットワークリソースと同様に、ＢＩＯＳコントローラ１３２６は、ＢＩＯＳ要求を、パケットフォーマッタ１３１８及びファブリックスイッチ１３２０を介して、リモートＢＩＯＳを管理するＩ／Ｏノードに転送し、その後、供給されたＢＩＯＳデータをノースブリッジ１３１０に提供することによって、ノースブリッジ１３１０からのＢＩＯＳ要求に応答する。これにより、ローカルＢＩＯＳをエミュレートすることができる。
【００６９】
図１３に示す例では、ファブリックインターフェース装置１３０６は、構成状態レジスタ１７０を含む。図１〜１２に関して上述したように、サーバ１００の構成中、ファブリックインターフェース装置１３０６は、計算ノード１３００に接続されたノードでの構成状態レジスタの対応するフィールドの更新に応じて、構成状態レジスタ１７０のフィールドを更新する。構成状態レジスタ１７０の各フィールドの状態に基づいて、ファブリックインターフェース装置は、接続ノードに対するスパニングツリー内の計算ノード１３００の位置を識別し、構成メッセージの受信、処理及び通信を行い、他の構成動作を行う。
【００７０】
いくつかの実施形態では、上述した機能の少なくとも一部は、コンピュータ可読媒体に有形的に記憶された１つ以上のソフトウェアプログラムを実行する１つ以上のプロセッサによって実装されてもよい。１つ以上のソフトウェアプログラムは、実行されると、１つ以上のプロセッサを操作して上述した１つ以上の機能を行わせる命令を備える。いくつかの実施形態では、上述した装置及び技術は、例えば、図１〜１３を参照して上述したサーバ１００の特定のコンポーネント（例えば、ファブリックインターフェース装置又は計算ノード）等のように、１つ以上の集積回路（ＩＣ）装置（集積回路パッケージ又はマイクロチップとも称される）を備えるシステムに実装される。電子設計自動化（ＥＤＡ）及びコンピュータ支援設計（ＣＡＤ）ソフトウェアツールは、これらのＩＣ装置の設計及び製造に使用されてもよい。これらの設計ツールは、通常、１つ以上のソフトウェアプログラムとして表される。１つ以上のソフトウェアプログラムは、コンピュータシステムによって実行可能なコードを備え、コンピュータシステムを操作して、回路を製造する製造システムを設計又は適応するプロセスの少なくとも一部を実行するように、１つ以上のＩＣ装置の回路を表すコードを操作する。このコードには、命令、データ、又は、命令及びデータの組み合わせが含まれてもよい。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムがアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ＩＣ装置の設計又は製造の１つ以上のフェーズを表すコードは、同一のコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶され、アクセスされてもよい。
【００７１】
コンピュータ可読記憶媒体は、使用中のコンピュータシステムによってアクセス可能な任意の記憶媒体又は記憶媒体の組み合わせを含み、命令及び／又はデータをコンピュータシステムに提供する。かかる記憶媒体は、限定されないが、光学媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、Ｂｌｕ−Ｒａｙ（登録商標）ディスク）、磁気媒体（例えば、フロッピーディスク（登録商標）、磁気テープ若しくは磁気ハードドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）若しくはキャッシュ）、不揮発性メモリ（例えば、読出専用メモリ（ＲＯＭ）若しくはフラッシュメモリ）、又は、微小電気機械システム（ＭＥＭＳ）ベースの記憶媒体を含む。コンピュータ可読記憶媒体は、コンピューティングシステムに組み込まれてもよく（例えば、システムＲＡＭまたはＲＯＭ）、コンピューティングシステムに固定的に取り付けられてもよく（例えば、磁気ハードドライブ）、コンピューティングシステムに取り外し可能に取り付けられてもよく（例えば、光ディスク又はユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）、コンピュータシステムに有線又は無線ネットワークを介して接続されてもよい（例えば、ネットワークアクセス可能ストレージ（ＮＡＳ））。
【００７２】
図１４は、１つ以上の態様を実装するＩＣ装置の設計及び製造のための例示的な方法１４００を示すフロー図である。上述したように、以下の各プロセスについて生成されたコードは、対応する設計ツールまたは製造ツールによるアクセス及び使用のために、コンピュータ可読記憶媒体に記憶され、又は別の方法で具体化される。
【００７３】
ブロック１４０２において、ＩＣ装置の機能仕様が生成される。機能仕様（よくマイクロアーキテクチャ仕様（ＭＡＳ）と称される）は、Ｃ、Ｃ＋＋、ＳｙｓｔｅｍＣ、Ｓｉｍｕｌｉｎｋ（商標）又はＭＡＴＬＡＢ（商標）を含む様々なプログラミング言語及びモデリング言語の何れかによって表される。
【００７４】
ブロック１４０４では、ＩＣ装置のハードウェアを表すハードウェア記述コードを生成するために、機能仕様が用いられる。いくつかの実施形態では、ハードウェア記述コードは、少なくとも１つのハードウェア記述言語（ＨＤＬ）を用いて表され、ハードウェア記述言語は、ＩＣ装置の回路の正式な記述及び設計のための様々なコンピュータ言語、仕様言語又はモデリング言語を含む。生成されたＨＤＬコードは、通常、ＩＣ装置の回路の動作、回路の設計及び構成、並びに、シミュレーションによるＩＣ装置の正しい動作を検証するテストを表す。ＨＤＬの例としては、アナログＨＤＬ（ＡＨＤＬ）、Ｖｅｒｉｌｏｇ  ＨＤＬ、ＳｙｓｔｅｍＶｅｒｉｌｏｇ  ＨＤＬ及びＶＨＤＬが含まれる。同期デジタル回路を実装するＩＣ装置の場合、ハードウェア記述子コードは、同期デジタル回路の動作の抽象的な表現を提供するためのレジスタ転送レベル（ＲＴＬ）コードを含むことができる。他の種類の回路については、ハードウェア記述子コードは、回路の動作の抽象的な表現を提供する動作レベルコードを含むことができる。ハードウェア記述コードによって表されるＨＤＬモデルは、通常、設計検証に合格するために、１つ以上のラウンドのシミュレーション及びデバッグを受ける。
【００７５】
ハードウェア記述コードによって表される設計を検証した後、ブロック１４０６では、合成ツールを用いてハードウェア記述コードを合成し、ＩＣ装置の回路の初期的な物理実装を表現又は定義するコードを生成する。いくつかの実施形態では、合成ツールは、回路装置インスタンス（例えば、ゲート、トランジスタ、レジスタ、コンデンサ、インダクタ、ダイオード等）と、回路装置インスタンス間のネット（すなわち、接続）と、を備える１つ以上のネットリストを生成する。或いは、ネットリストの全て又は一部を、合成ツールを使用せずに手動で生成することができる。ハードウェア記述コードと同様に、ネットリストは、１つ以上のネットリストの最終セットが生成される前に、１つ以上のテスト及び検証プロセスを受けてもよい。
【００７６】
代替的には、ＩＣ装置の回路の回路図を記述するために回路図エディタツールを使用することができ、得られた回路図をキャプチャして、回路図のコンポーネント及び接続を表す（コンピュータ可読媒体に記憶された）１つ以上のネットリストを生成するために回路図キャプチャツールを使用することができる。キャプチャされた回路図は、その後、テスト及び検証のために、１つ以上のラウンドのシミュレーションを受けてもよい。
【００７７】
ブロック１４０８では、１つ以上のＥＤＡツールは、ブロック１４０６で生成されたネットリストを用いて、ＩＣ装置の回路の物理レイアウトを表すコードを生成する。このプロセスは、例えば、ネットリストを用いて、ＩＣ装置の回路の各要素の位置を決定又は固定する配置ツールを含むことができる。さらに、配線ツールは、ネットリストにしたがって回路要素を接続するのに必要なワイヤを追加して配線するために、配置プロセス上で構築される。結果として得られたコードは、ＩＣ装置の三次元モデルを表す。コードは、例えば、グラフィックデータベースシステムＩＩ（ＧＤＳＩＩ）形式等のデータベースファイル形式で表されてもよい。この形式のデータは、通常、幾何学的形状、テキストラベル及び回路レイアウトに関する他の情報を階層形式で表す。
【００７８】
ブロック１４１０では、物理レイアウトコード（例えば、ＧＤＳＩＩコード）が製造施設に提供される。ここでは、物理レイアウトコードを用いて、ＩＣ装置を製造する製造設備の製造ツールを（例えば、マスクワークを通じて）構成し、又は適合させる。すなわち、物理レイアウトコードは、製造設備の製造ツールの動作又は当該ツールで実行される製造工程の全体又は一部を制御することができる１つ以上のコンピュータシステムにプログラムすることができる。
【００７９】
概略説明において上述した動作又は要素の全てが要求されているわけではなく、特定の動作又は装置の一部が要求されない場合があり、説明されたものに加えて１つ以上のさらなる動作が実行され、１つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、動作が列挙される順序は、必ずしもそれらが実行される順序ではない。
【００８０】
また、これらの概念は、特定の実施形態を参照して説明されている。しかしながら、当業者であれば、以下の特許請求の範囲に記載された本開示の範囲から逸脱することなく、様々な修正及び変更を行うことができると理解する。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、かかる変更の全ては、本開示の範囲内に含まれることが意図される。
【００８１】
利点、他の効果、及び、問題を解決する手段を、特定の実施形態に関して上述した。しかしながら、利点、効果、問題を解決する手段、及び、何等かの利点、効果若しくは解決手段を生じさせ又は顕著なものとする特徴は、特許請求の範囲の何れか若しくは全ての、重要な、必須の、不可欠な特徴と解釈されるべきではない。
【図１】
0006491741.tif 000003
【図２】
0006491741.tif 000004
【図３】
0006491741.tif 000005
【図４】
0006491741.tif 000006
【図５】
0006491741.tif 000007
【図６】
0006491741.tif 000008
【図７】
0006491741.tif 000009
【図８】
0006491741.tif 000010
【図９】
0006491741.tif 000011
【図１０】
0006491741.tif 000012
【図１１】
0006491741.tif 000013
【図１２】
0006491741.tif 000014
【図１３】
0006491741.tif 000015
【図１４】
0006491741.tif 000016