【文献】
吉永努ほか,耐故障・適応デッドロック回復ルーチングのためのネットワーク再構成プロトコル,電子情報通信学会論文誌,日本,社団法人電子情報通信学会,2008年12月,Vol. J91-D No. 12,2881〜2891ページ
(58)【調査した分野】(Int.Cl.,DB名)
前記複数の計算ノードの各々は、前記状態フィールドのセット(608)の遷移に基づいて、スパニングツリー内の1つ以上の接続された計算ノードに対する自身の位置を識別する、請求項2のサーバシステム。
前記複数の計算ノードの各々は、ルーティング情報を、前記ファブリックインターコネクトを介して、前記スパニングツリーに基づいて、接続された計算ノードに通信し、当該通信は、前記状態フィールドのセット(610)の遷移に基づいている、請求項3のサーバシステム。
前記複数の計算ノードの少なくとも1つは、第1タイプのメッセージを受信したことに応じて、前記第1タイプのメッセージを、前記状態フィールドのセット(1001,1002,1003)の遷移に基づいて、前記スパニングツリー内の前記少なくとも1つの計算ノードの位置に対する前記スパニングツリー内の複数の遠位ノードのうち選択された第1遠位ノードに通信する、請求項3のサーバシステム。
前記複数の計算ノードの少なくとも1つは、前記複数の遠位ノードのうち選択された第1遠位ノードから前記第1タイプのメッセージを後に受信したことに応じて、前記状態フィールドのセット(1004,1005)の遷移に基づいて、前記第1タイプのメッセージを前記複数の遠位ノードのうち選択された第2遠位ノードに通信する、請求項5のサーバシステム。
前記複数の計算ノードの少なくとも1つは、前記複数の遠位ノードのうち選択された第2遠位ノードから前記第1タイプのメッセージを後に受信したことに応じて、前記状態フィールドのセット(1007)の遷移に基づいて、前記第1タイプのメッセージを、前記スパニングツリー内の前記少なくとも1つの計算ノードの近位ノードに通信する、請求項6のサーバシステム。
前記複数の計算ノードの少なくとも1つは、前記第1タイプのメッセージのペイロードが前記複数の計算ノードの少なくとも1つをターゲットとしているのを識別したことに応じて、前記状態フィールドのセットの遷移に基づいて、前記メッセージのペイロードを、前記複数の計算ノードの少なくとも1つの構成レジスタに記憶する、請求項5のサーバシステム。
前記複数の計算ノードの少なくとも1つは、第2タイプのメッセージを受信したことに応じて、前記状態フィールドのセット(1101,1102)の遷移に基づいて、前記ルーティング情報を、前記スパニングツリー内の前記少なくとも1つの計算ノードの位置に対する前記スパニングツリー内の前記複数の遠位ノードの各々に同時に通信する、請求項5のサーバシステム。
前記ルーティング情報は、前記ファブリックインターコネクト内の前記複数の計算ノードのうち1つの位置を識別するノードアドレス情報である、請求項2のサーバシステム。
前記複数の計算ノードのうち第1計算ノードは、前記第1計算ノードに接続された計算ノードの状態(501,502)の遷移に基づいて、前記第1計算ノードが接続されていない第2計算ノードの構成を識別可能である、請求項1のサーバシステム。
前記第1計算ノードにおいて、前記状態フィールドのセット(608)の遷移に基づいて、スパニングツリー内の1つ以上の接続された計算ノードに対する前記第1計算ノードの位置を識別することをさらに含む、請求項12の方法。
前記ファブリックインターコネクトを介して、前記スパニングツリーに基づいて、ルーティング情報を、前記第1計算ノードから接続された計算ノードに通信することをさらに備え、前記通信することは、前記状態フィールドのセット(610)の遷移に基づいている、請求項13の方法。
【発明を実施するための形態】
【0005】
図1〜
図14は、システムリセット又は他の構成イベントの後にクラスタ計算サーバのファブリックを構成する方法を示している。ファブリックの各ノードは、構成のために、セルオートマトン内のセルとして用いられ、これにより、中央管理ユニットからの構成情報を通信するための特別な構成ネットワークが不要になる。その代わりに、ノードは、固定トポロジに従ってネットワークルーティング用のファブリックインターコネクトを事前に構成する必要なく、当該ノードでのソフトウェアサービスの正常な実行中にメッセージを通信するのに用いられる同一のファブリックインターコネクトを用いて構成情報を通信する。これにより、サーバの複雑性が軽減され、クラスタ計算サーバのスケーラビリティが向上する。
【0006】
例として、クラスタ計算サーバは、ファブリックインターコネクトを用いて様々なノードを接続する。正常動作中、計算ノードがソフトウェアサービスを実行すると、各ノードがユニキャストメッセージをサーバの他のノードに通信することができ、これにより、ソフトウェアサービスの全体的なサーバ効率と品質とを向上させることができる。したがって、正常動作中、計算サーバのファブリックはメッセージルーティングスキームを実行し、これにより、各ノードが、ファブリック内の固定アドレスを有し、メッセージルーティングスキームのルーティングルールを示すルーティング情報(例えば、ルーティングテーブル)をローカルに記憶する。ファブリックのトポロジは、個々の計算ノードでのエラー又は障害によって経時的に変化する可能性があるので、通常、計算ノードの各々に固定ルーティング情報を永続的に記憶することは現実的ではない。かかるトポロジの変化は、固定ルーティング情報の大部分を無効にし、サーバのパフォーマンスを低下させる。したがって、計算サーバは、各システムリセットの後にファブリックを構成することが有用である。これにより、ファブリックは、構成中に、1)ファブリックの機能ノードによって定義されるファブリックのトポロジを識別し、2)固有のアドレス及びルーティング情報を各機能ノードに配信する。本明細書では、このプロセスを、計算サーバの「構成」(又はファブリックの構成)と称する。
【0007】
構成を実行するために、従来のクラスタ計算サーバは、通常、正常動作中にノード間でメッセージを通信するのに用いられるファブリックインターコネクトとは別の「帯域外(out-of-band)」ネットワークを使用する。しかしながら、計算ノードの数が多いサーバシステムでは、帯域外ネットワークは、ノードアドレス及びルーティング情報を配信し、それ以外の場合ではファブリックノードの各々を構成するために多くの時間を必要とする。さらに、帯域外ネットワーク自体には、全ての構成メッセージを個々のノードにルーティングするためのインフラストラクチャが必要であり、これにより、計算サーバの複雑性及びコストが増大する。
【0008】
従来の計算サーバとは対照的に、本明細書に開示される技術は、レジスタ又は他の記憶構造を計算ノードの各々に組み込み、構成フィールドの所定のセットを記憶することによって、ノードアドレス、ルーティング情報及び他の構成情報を通信するクラスタ計算サーバを提供する。各フィールドは、対応する状態のうち限定されたセットの何れかをとることができる。ここで、構成サイクルと呼ばれる所定の時間間隔では、サーバの各ノードは、構成フィールドの以前の状態、及び、ファブリックインターコネクトを介してノードに接続された他のノード(接続ノード)の各々に対応する構成フィールドの状態に基づいて、当該構成フィールドの各々の状態(前の状態を維持する、又は、新たな状態に変化する)を設定する。ノードは、構成フィールドの状態に基づいて、構成フィールドの状態に関連付けられた所定の記憶された構成命令の1つ以上のセットを実行する。したがって、構成フィールドは、計算ノードで実行される1つ以上のタスクを定義し、当該ノードの接続ノードの構成レジスタで対応するフィールドの状態のみに依存する。したがって、本明細書で開示されるクラスタ計算サーバは、帯域外構成ネットワークを使用する必要がなく、計算サーバの設計を簡素化して、多数の計算ノードのより迅速な構成を可能にする。代わりに、本明細書に開示される技術は、隣接したノードの状態変化に基づいて構成情報を配信することによって、仮想的な帯域外ネットワークを生成する。
【0009】
いくつかの実施形態では、計算ノードにて状態を変化させることは、クラスタ計算サーバに対する少なくとも2つの構成動作、つまり、トポロジ分析と、構成メッセージの通信と、を行う。トポロジ分析では、計算ノードの構成フィールドの状態が、1)機能する計算ノードが検出されて、構成メッセージを通信するために準備されるように変化し、2)計算ノードがスパニングツリー内に自己組織化するように変化する。スパニングツリーが組織化されると、ファブリックノードは、構成メッセージを通信することができる。ここで、ノードは、メッセージタイプによって暗示された配信ルールにしたがって、メッセージを当該ノードの接続ノードに配信する。クラスタ計算サーバの1つ以上の管理ユニットは、スパニングツリーのルート計算ノードで構成メッセージを開始することによって構成情報を投入し、各ノードの配信ルールによってメッセージがスパニングツリー内の各計算ノードに到達する。これにより、管理ユニットは、ルーティングテーブル、ノードアドレス情報等の構成情報を配信し、ノードを正常動作させるための準備を行うことができる。
【0010】
いくつかの場合、クラスタ計算サーバは、例えばスパニングツリー内で障害のある計算ノードを検出する等の所定のエラー条件に応じて、トポロジ分析を再度行うことができる。そして、計算ノードは、対応する構成フィールドを対応するトポロジ分析状態に自動的に戻し、且つ、スパニングツリーを修正することによって、スパニングツリートポロジを調整する。このように、計算ノードは、個々の計算ノードの障害及び他のエラーを自動的に調整することができる。
【0011】
説明を簡単にするために、サーバの構成は、
図1〜
図12を参照して以下に記載されるクラスタ計算サーバの例示的なコンテキストにおいて説明される。かかるサーバの例には、アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドのSeaMicro(商標)事業部から入手可能なSM10000シリーズ又はSM15000シリーズのサーバが含まれる。概要を以下に説明するが、クラスタ計算サーバの実施形態に関するさらなる詳細は、米国特許第7,925,802号及び米国特許第8,140,719号に記載されており、これらの全体は、言及することによって本明細書に組み込まれる。本明細書で説明される技術は、この例示的なコンテキストに限定されず、代わりに、様々なサーバの何れかに実装されてもよい。さらに、これらの技術は、MACアドレスを用いるイーサネット(登録商標)実装に関連して説明されているが、様々なリンク層プロトコル及びアドレッシング方式の何れかで実装されてもよい。
【0012】
図1は、いくつかの実施形態による、クラスタ計算サーバ100を示す図である。本明細書で「サーバ100」と呼ばれるクラスタ計算サーバ100は、ラックユニット(RU)システムにおいて、計算、記憶、スイッチング及びサーバ管理をまとめるデータセンタプラットフォームを備えている。サーバ100は、ファブリックインターコネクト112によって互いに接続された、独立した低電力計算ノード(例えば、計算ノード101〜106)、ストレージノード(例えば、ストレージノード107〜109)、ネットワークノード(例えば、ネットワークノード110,111)及び管理ノード(例えば、管理ユニット113)の並列配列に基づいている。ファブリックインターコネクト112は、高帯域幅で低レイテンシのスーパーコンピュータインターコネクトを備えている。各ノードは、個別の現場交換可能ユニット(FRU)として実装されており、効率的なビルドアップ、スケーリング、保守、修理及びホットスワップ機能を容易にするために、プリント回路基板(PCB)ベースのカード又はブレードに配置された部品を備えている。
【0013】
計算ノードは、オペレーティングシステム(OS)、ハイパーバイザ、仮想化ソフトウェア、計算アプリケーション等を含む様々なソフトウェアプログラムを実行するように動作する。従来のサーバノードと同様に、サーバ100の計算ノードは、1つ以上のプロセッサと、1つ以上のプロセッサによって用いられる命令及びデータを記憶するシステムメモリと、を含む。しかしながら、従来のサーバノードとは異なり、いくつかの実施形態では、計算ノードは、記憶装置、I/O制御、及び、ネットワークインタフェースカード(NIC)等の様々なローカル周辺機器を個別に組み込んでいない。むしろ、サーバ100のリモート周辺リソースは計算ノード間で共有されており、これにより、I/Oコントローラ及びNIC等のようにサーバのマザーボードに通常存在する多くの部品を計算ノードから排除し、1つ以上のプロセッサ、システムメモリ及びファブリックインターフェース装置を主に残しておくことができる。
【0014】
例えば特定用途向け集積回路(ASIC)として実装することができるファブリックインターフェース装置は、システムリセットに応じて構成した後、サーバ100のリモート共有周辺リソースを仮想化するように動作することによって、リモート周辺リソースが、各プロセッサで実行されるOSに対して、対応するプロセッサのローカル周辺バス上に配置されるように現れる。これらの仮想された周辺リソースには、大容量記憶装置、コンソール、イーサネット(登録商標)NIC、ファイバーチャネルNIC、Infiniband(商標)NIC、ストレージホストバスアダプタ(HBA)、基本入出力システム(BIOS)、ユニバーサルシリアルバス(USB)装置、Firewire(商標)装置、PCIe装置、ユーザインターフェース装置(例えば、ビデオ、キーボード及びマウス)等が含まれるが、これらに限定されない。ハードウェアにおけるリモート周辺リソースの仮想化及び共有は、遠隔周辺リソースの仮想化を、計算ノードにおけるOS及び他のローカルソフトウェアに対して透過的にする。さらに、ファブリックインターフェース装置を介したリモート周辺リソースのこの仮想化及び共有により、サーバのマザーボードに通常存在するいくつかの部品の代わりにファブリックインターフェース装置を用いることが可能になる。これにより、各計算ノードに実装される部品の数を削減する。また、計算ノードは、個別及び個々の周辺リソースを実装する従来のサーバブレードよりも少ないエネルギーを消費しながらフォームファクタを小さくすることができる。
【0015】
ストレージノード及びネットワークノード(「入出力(I/O)ノード」と総称する。)は、1つ以上の共有周辺リソースを管理する周辺装置コントローラを実装する。このコントローラは、計算ノードのファブリックインターフェース装置と連携して、リソースマネジャによって管理される周辺リソースを仮想化して共有する。例示すると、ストレージノード107は、ハードディスクドライブ(HDD)116を管理し、ストレージノード108は、ソリッドステートドライブ(SSD)118を管理する。いくつかの実施形態では、任意の内部大容量記憶装置は、任意のプロセッサを搭載することができる。さらに、大容量記憶装置は、スライス又は「仮想ディスク」に論理的に分割されてもよい。また、各スライスは、単一の計算ノードに割り当てられてもよいし、読出専用モードで用いられる場合には、巨大な共有データキャッシュとして複数の計算ノードに共有されてもよい。仮想ディスクの共有によって、ユーザは、オペレーティングシステム、アプリケーションソフトウェア及びキャッシュデータ等の共通データをサーバ100全体に対して一度記憶及び更新することができる。I/Oノードによって管理される共有周辺リソースの他の例として、ストレージノード109は、リモートBIOS120、コンソール/汎用非同期送受信回路(UART)121及びデータセンタ管理ネットワーク123を管理する。ネットワークノード110,111の各々は、データセンタネットワーク114に接続された1つ以上のイーサネット(登録商標)アップリンクを管理する。イーサネット(登録商標)アップリンクは、トップオブラックスイッチのアップリンクポートに類似しており、例えば、データセンタネットワーク114のエンドオブロースイッチ又はコアスイッチに直接接続するよう構成することができる。リモートBIOS120は、サーバの一部又は全てのノードのローカルBIOSとして動作し、大容量記憶装置、NIC及び他の周辺リソースと同じ方法で仮想化することができる。これにより、かかるノードが少なくとも1部のローカルBIOSを実装しないようにすることができる。いくつかの実施形態では、サーバの各ノードは、システムリセットに応じて実行されるローカルBIOSを含む。ローカルBIOSを実行することにより、本明細書でさらに説明される構成プロセスに参加することができる。特に、ローカルBIOSの実行は、ノードの状態にしたがって当該ノードにおけるタスクの実行を提供し、ノードの以前の状態及び当該ノードの接続ノードの状態にしたがって、当該ノードを異なる状態に遷移させる。
【0016】
計算ノードのファブリックインターフェース装置、I/Oノードのファブリックインターフェース及びファブリックインターコネクト112は、計算ノードの計算リソースをI/Oノードの周辺リソースに接続するファブリック122として共に動作する。このため、ファブリック122は、分散交換設備(distributed switching facility)を実装しており、これにより、ファブリックインターフェース及びファブリックインターフェース装置の各々は、ファブリックインターコネクト112の双方向リンクに接続された複数のポートを備え、システムリセットに応じてファブリックインターコネクト112を構成した後、サーバ100のノードに実装された決定論的なルーティング論理にしたがって、パケットトラフィックをポート間でルーティングするリンク層スイッチとして動作する。「リンク層」という用語は、一般的に、データリンク層、すなわち開放型システム間相互接続(OSI)モデルの第2層を指すことに留意されたい。
【0017】
ファブリックインターコネクト112は、例えば、バックプレーン、プリント配線基板、マザーボード、ケーブル若しくは他のフレキシブルな配線、又は、これらの組み合わせ等の固定又はフレキシブルなインターコネクトを含むことができる。さらに、ファブリックインターコネクト112は、電気信号、光信号又はこれらの組み合わせを含むことができる。いくつかの実施形態では、ファブリックインターコネクト112のリンクには、例えば、1つ以上のペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)規格、RapidIO規格、RocketIO規格、HyperTransport規格、ファイバーチャネル規格、ギガビットイーサネット(登録商標)(GbE)アタッチメントユニットインターフェース(XAUI)規格等のようなイーサネット(登録商標)ベースの規格等の1つ以上にしたがって実装された高速な双方向シリアルリンクが含まれる。
【0018】
ノードを実装するFRUは、通常、
図12を参照して以下に説明するように、サーバボックス内の1つ以上の段に物理的に配置されるが、ファブリック122は、構成中に、例えば、トーラス、多次元トーラス(k−ary n−cubeとも呼ばれる)、ツリー、ファットツリー等の様々なメッシュトポロジ又は他のネットワークトポロジの何れかに対してノードを論理的に配置することができる。説明のために、本明細書では、サーバ100を、多次元トーラスネットワークトポロジのコンテキストで説明する。しかしながら、説明した技術は、本明細書で提供されるガイドラインを用いて、他のネットワークトポロジにおいて同様に適用されてもよい。
【0019】
計算ノード101〜106の各々は、対応する計算ノードの構成フィールドの1セットを記憶するための構成状態レジスタ(例えば、計算ノード101の構成状態レジスタ170)を含む。各設定フィールドは、後述するように、対応する計算ノードの構成の特定の態様に関する状態情報を記憶する。例えば、1つの構成フィールドは、サーバ100のノードをマッピングするスパニングツリー内の対応する計算ノードの接続ノードに対する位置を示す構成情報を記憶することができる。動作中、各計算ノードは、接続ノードの構成状態レジスタにおいて定期的に構成フィールドを確認し、これらのフィールドの値に基づいて、自身の構成状態レジスタの設定フィールドの値を更新する。計算ノードは、構成状態レジスタの構成フィールドの値に基づいて、例えば、構成メッセージの内部処理、接続ノードへの構成メッセージの通信、構成メッセージに応答するデータの生成等の所定の構成動作を実行する。さらに、計算ノードは、接続ノードにおいて遷移を起こし、このノードにおける状態変化を観測することによって、接続されていないノード(リモートノード)の状態及び構成を識別することができ、本明細書で説明するファブリックを通じて伝搬する際にリモートノードの状態変化及び構成を引き起こすメッセージを生成することができる。
【0020】
各計算ノードを構成するために、各計算ノードの構成状態レジスタの構成フィールドは、管理ノード113によって注入された構成情報に基づいて経時的に変化する。各構成フィールドの変更によって、各計算ノードが、ファブリックインターコネクト112のトポロジにおける固有のアドレスと、各ノードの固有のアドレスにしたがってノード間でメッセージがルーティング可能なルーティング情報と、を受信するように、各構成フィールドの状態更新が定義される。このようにして、計算ノードは、サーバ100の正常な(構成後の)動作中にユニキャストメッセージをルーティングするために準備される。
【0021】
図2は、いくつかの実施形態による、k−ary n−cube、すなわち多次元トーラスとして配置されたネットワークトポロジ内のサーバ100の例示的な構成を示す図である。図示の例では、サーバ100は、深さが3(つまりk=n=3)の三次元(3D)トーラスネットワークトポロジ(本明細書では「トーラスネットワーク200」と称する)を実装する。したがって、サーバ100は、3つの直交次元(X,Y,Z)で形成されたリングのネットワークに配置された合計27個のノードを実装し、各ノードは、各次元に1つずつの3つの異なるリングのメンバである。各ノードは、ファブリックインターコネクト112(
図1参照)の双方向シリアルシンクを介して最大6つの隣接ノードに接続されている。トーラスネットワーク200内の各ノードの相対的な位置は、位置タプル(x,y,z)によって
図2に示されている。ここで、x、y,zは、X,Y,Z次元における計算ノードの位置を表す。したがって、ノードのタプル(x,y,z)は、トーラスネットワーク200内のそのアドレスとして機能することができ、これにより、パケットを位置タプル(x,y,z)で表される位置にある宛先ノードにルーティングするためのソースルーティング制御として機能する。
【0022】
いくつかの実施形態では、ファブリックインターコネクト112は、システムリセットに応じて、1つ以上のメディアアクセス制御(MAC)アドレスが所定のノードに一時的又は永続的に関連付けられるように、各ノードを構成する。このような関連するMACアドレスの一部又は全ては、位置タプル(x,y,z)を直接表してもよく、トーラスネットワーク200内の宛先ノードの位置を決定し、パケットの宛先MACアドレスに基づいてソースルーティングすることを可能にする。構成中、宛先MACアドレスに基づいて宛先ノードの位置を容易に識別するために、タプル変換を位置付けるための配信されたMACアドレスのルックアップテーブルを、ノードにキャッシュすることができる。
【0023】
図示されたX,Y,Z次元は、ネットワーク内の各ノードの位置を示す論理的次元を表しているが、各ノードの物理的な配置を示す物理的次元を必ずしも表すものではないことを理解されたい。例えば、トーラスネットワーク200の3Dトーラスネットワークトポロジは、バックプレーンの1つ以上の段又はラックに物理的に配置されたネットワーク内のノードとともに、ファブリックインターコネクト112の配線を介して実装することができる。つまり、トーラスネットワーク200内の所定のノードの相対的な位置は、計算ノードの物理的な位置ではなく、当該ノードが接続されているノードによって定義される。いくつかの実施形態において、ファブリック122(
図1参照)は、3Dトーラスネットワークトポロジを実装するために、ファブリックインターコネクト112を介して共に配線された複数のソケットを備える。各ノードは、ファブリックインターコネクト112で用いられるソケットに接続するように構成された現場交換可能ユニット(FRU)を備えており、トーラスネットワーク200内のノードの位置は、FRUが挿入されたソケットによって決まる。
【0024】
サーバ100では、ファブリックインターコネクト112の構成後、ノード間で通信されるメッセージは、ソースノードと宛先ノードとの間のルーティングパスを介してルーティングされる1つ以上のパケットに分割される。ルーティングパスは、0、1つ又は2つ以上の中間ノードを含んでもよい。上述したように、各I/Oノードを含む各ノードは、ファブリックインターコネクト112の対応するリンクに接続されたノードのポート間でパケットをルーティングするリンク層スイッチを実装するファブリックインターコネクト112へのインターフェースを含む。いくつかの実施形態では、これらの分散型スイッチの構成後、分散型スイッチは、ファブリックデッドロックを回避するのに役立つ、ソースルーティング又は厳密に決定論的な次元順ルーティング方式(つまり、トーラスネットワーク200の1つの次元を完全にトラバースした後に別の次元に移動する)等のソースルーティング方式を用いて、ファブリック122を介してパケットをルーティングするように動作する。厳密に決定論的な次元順ルーティングの一例として、位置(0,0,0)のノードから位置(2,2,2)に送信されるパケットは、先ず、X次元でノード(0,0,0)からノード(1,0,0)に送信された場合に、続けてX次元でノード(2,0,0)に送信され、Y平面でノード(2,0,0)からノード(2,1,0)、次いでノード(2,2,0)に移動し、その後、Z平面でノード(2,2,0)からノード(2,2,1)、次いでノード(2,2,2)に移動するであろう。ソースと宛先との間でプレーンが完全にトラバースする順序は、事前に設定されてもよいし、ノード毎に異なっていてもよい。
【0025】
さらに、トーラスネットワーク200内のノード間に複数のルートがあるため、ファブリック122は、構成プロセス中に、プライマリパスが失敗した場合には、パケットトラフィックがセカンダリパスをトラバースするように構成することができる。また、ファブリック122は、パケットクラス及び仮想チャネルを実装して、リンク帯域幅をより効果的に利用し、パケットループを排除するように構成されており、これにより、リンクレベルのループを防止することができ、さらに、スパニングツリープロトコル等の冗長プロトコルが不要になる。
【0026】
従来、特定のタイプのノードは、サーバにおけるソフトウェアサービスの正常な実行中に当該ノードのルーティング機能が制限されるように構成されている。例えば、計算ノードは、パケットのソースノードと、パケットの宛先ノードとの間のパケットのルーティングパスに存在する中間ノードとして動作することが許可される一方で、I/Oノードは、ソースノード又は宛先ノードのみとして構成され、パケットを他のノードにルーティングする中間ノードとして動作しないように構成されている。図示した実施形態では、各I/Oノードは、同様の方法でパケットを計算ノードにルーティングするように構成されており、全てのノードが同様のルーティング機能を提供する。
【0027】
ファブリック122は、様々なパケットルーティング及び技術プロトコルを実装するように構成することができる。例えば、各ノードの切り替えの際に大きなバッファが不要になるように、構成後、ファブリック122は、フロー制御数字(「フリット」)ベースのスイッチングを使用して、各パケットが一連のフリットに分割される。ヘッダーフリットと呼ばれる最初のフリットは、パケットのルート(つまり、宛先アドレス)に関する情報を保持し、パケットに関連付けられた全ての後続のフリットのルーティング動作を設定する。ヘッダーフリットの後には、データの実際のペイロードを含む0以上のボディフリットが続く。テールフリットと呼ばれる最後のフリットは、ルーティングパスの全ての中間ノードだけでなく、ソースノード及び宛先ノードに割り当てられたリソースを開放するために、いくつかのブックキーピング(bookkeeping)を行う。これらのフリットは、パケットレベルでバッファ及びチャネル帯域幅を割り当てるカットスルールーティング、又は、フリットレベルでバッファ及びチャネル帯域幅を割り当てたワームホールルーティングを使用して、トーラスネットワーク200を介してルーティングされてもよい。ワームホールルーティングは、トーラスネットワーク200内の仮想チャネルの使用を可能にする利点を有する。仮想チャネルは、チャネルを介してパケットのフリット処理を調整する必要がある状態を保持する。仮想チャネルは、ルートの次のホップに対するカレントノードの出力チャネル及び仮想チャネルの状態(例えば、アイドル状態、リソース待ち状態、アクティブ状態等)を含む。また、仮想チャネルは、カレントノードでバッファされたパケットのフリットへのポインタと、次のノードで利用可能なフリットバッファの数と、を含むことができる。
【0028】
図3は、ファブリック122のノード301と、当該ノードの接続ノード302,303,304,305,306,307と、を示す図である。ノード301は、対応する通信ポートを介してノード302〜307の各々に接続されている。いくつかの実施形態では、ノード301は、3Dトーラストポロジにおけるそれらの予測される相対的な位置にしたがって、接続ノード302〜307の各々を内部的に識別する。これにより、ノード302は、ノード301の「+X」ノードとしてノード301によって識別される。このことは、ノード302が、ノード301に対して、3DトーラスのX平面に沿う一方向に存在すると予測されることを示す。ノード305は、ノード301の「−X」ノードとしてノード301によって識別される。このことは、ノード305が、ノード301に対して、3DトーラスのX平面に沿ってノード302の反対方向に存在すると予測されることを示す。同様の理由によって、ノード303は、ノード301の「+Y」ノードとしてノード301によって識別され、ノード306は、ノード301の「−Y」ノードとしてノード301によって識別され、ノード304は、ノード301の「+Z」ノードとしてノード301によって識別され、ノード307は、ノード301の「−Z」ノードとしてノード301によって識別される。
【0029】
ノード301は、システムリセットに応じて、トークンを、ファブリックインターコネクト112を介して、接続ノード302〜307に周期的に送信する。トークンは、構成フィールドの各々の現在の状態を示す。また、ノード301は、トークンを、接続ノード302〜307からファブリックインターコネクト112を介して受信する。トークンは、接続ノード302〜307毎の構成フィールドの対応する状態を示す。ノード301は、構成フィールドの現在の状態及び接続ノード302〜307における構成フィールドの状態に基づいて、ノード自体の構成フィールドの状態を調整し、調整された状態に必要となる任意の処理動作を実行する。
【0030】
図4は、いくつかの実施形態による、構成状態レジスタ(CSR)170の一例を示す図である。図示の例では、CSR170は、方向及びアドレス状態フィールド401と、スパニングツリー状態フィールド402と、割り込み転送状態フィールド403と、ウェーブメッセージ状態404と、チェーンメッセージ状態405と、を含む、いくつかの構成フィールドに対する値を記憶する。構成フィールド401〜405の各々は、フィールドの状態を示す値を記憶する。各構成サイクル中、計算ノード102は、各構成フィールドの状態に基づいて、構成動作を行う。さらに、各構成サイクルの終了までに、計算ノード102は、接続ノードの各々に対応する構成フィールドの値に基づいて、構成フィールド401〜405の各々を更新する。
【0031】
例示すると、方向及びアドレス状態フィールド401は、計算ノード102に関連するFRUの方向を示す情報を記憶する。システムリセットの後、計算ノード102は、方向及びアドレス状態フィールド401に対して、FRUの方向が不明であることを示す値を設定する。計算ノード102は、対応するFRUの特定の方向を示す、接続ノードの1つのアドレス及び方向フィールドに応じて、方向及びアドレス状態フィールド401を更新し、計算ノード102に関連するFRUが、接続ノードのFRUと同じ方向を有していることを示す。
【0032】
スパニングツリー状態フィールド402は、計算ノード102がファブリックインターコネクト112のノードのスパニングツリーに参加する準備ができているか否かを示す情報を記憶し、計算ノード102が参加すると、スパニングツリーにおける当該計算ノードの接続ノードに対する位置を記憶する。例えば、システムリセットの後、計算ノード102は、スパニングツリー状態フィールド402の値をアイドル状態に設定することができる。アイドル状態は、計算ノード102がスパニングツリーにまだ参加しなかったことを示す。計算ノード102は、接続ノードのうち1つのノードでスパニングツリー状態フィールドがレディ状態にされたことに応じて、スパニングツリー状態フィールド402をレディ状態に設定する。レディ状態は、計算ノード102がスパニングツリーに参加する準備ができていることを示す。計算ノード102は、接続ノードの各々におけるスパニングツリー状態フィールドの状態のその後の変化に基づいてスパニングツリー状態フィールド402の状態を変化させて、スパニングツリー内の計算ノードの、接続ノードに対する位置を示す。本明細書でさらに説明するように、サーバ100の計算ノードの各々におけるスパニングツリー状態フィールドの変化から生じるスパニングツリーは、各ノードを構成するために構成メッセージを通信するのに用いられる。
【0033】
割り込み転送状態フィールド403は、計算ノード102の接続ノードから受信し又は当該接続ノードに送信した割り込みメッセージの状態を示す情報を記憶する。例えば、いくつかの実施形態では、計算ノード102がファブリックインターコネクト112のノードのスパニングツリーに参加した後、計算ノード102は、接続ノードにおける割り込み転送状態フィールドの状態に基づいて割り込み転送状態フィールド403の状態を設定して、接続ノードから受信した割り込みの状態を反映し、接続ノードのうち1つのノードから割り込みメッセージを受信した場合に、当該接続ノードの別のノードに割り込みメッセージを転送したか否か、又は割り込みメッセージへの応答を受信したか否か等を反映する。さらに、計算ノード102は、転送状態フィールド403の状態に基づいて、受信した割り込みメッセージ及び応答を処理する。この処理は、転送フィールド403の状態に基づいて、受信メッセージを他の接続ノードに転送することを含む。これにより、割り込み転送フィールド403は、個々のノードの直接アドレス指定を用いることなく、ファブリックインターコネクト112を介して割り込みメッセージを転送するための低レイテンシ機構を提供する。
【0034】
ウェーブメッセージ状態フィールド404及びチェーンメッセージ状態フィールド405の各々は、本明細書でさらに説明するように、特定の構成メッセージタイプの処理状態を示す値を記憶する。構成中、計算ノード102は、各タイプの受信メッセージに基づいてフィールド404,405の各々の状態を変化させて、所定のプロトコルにしたがってメッセージを確実に処理する。
【0035】
いくつかの実施形態では、計算ノード102は、BIOSコード又は他の構成情報を記憶する。BIOSコード又は他の構成情報は、計算ノード102によって実行されると、BIOSコード又は他の構成情報によって定義された対応する式にしたがって構成フィールド401〜405の各々を更新する。これにより、各構成フィールドの状態情報が、所定のプロセスにしたがって式が示すように変化して、各ノードが、所定の構成プロセスにしたがって構成されることを確実にする。この式は、構成ノード又は他の制御ノードによる状態情報の直接的な通信を行うことなく構成フィールドの変化を提供するので、特別な帯域外構成ネットワークが不要になる。
【0036】
構成フィールドの変化を提供する数式を以下の式(1)に示す。
【数1】
ここで、S
i,nは、構成サイクルnにおけるノードSの構成フィールドの状態であり、N(i)は、ノードSを対象とする接続されたセルである。特定の関数及びN(i)は、構成フィールド毎に異なることができ、N(i)は、1つ以上の構成フィールドの状態に基づいて変化することができ、これにより、構成フィールドのより複雑な変化を提供する。
【0037】
図5は、いくつかの実施形態による、計算ノード102の構成フィールドに対する状態のセット500の一例を示す図である。セット500は、構成フィールドに記憶された異なる値によって表される状態501,502,503,504を含む。状態501〜504の間の矢印は、計算ノード102の1つ以上の接続ノードに対応する構成フィールドにおける値の変化から生じる状態間の遷移を表す。
【0038】
例示すると、いくつかの実施形態では、セット500は、
図4のスパニングツリー状態402の状態セットである。スパニングツリー状態402は、システムリセットに応じて、アイドル状態を表す状態501に遷移する。アイドル状態では、計算ノード102は、アイドル状態を示すトークンを、接続ノードに定期的に送信する。
【0039】
対応する接続ノードがレディ状態に入った当該接続ノードの少なくとも1つからトークン(説明目的で「TOPO」トークンと称する)を受信したことに応じて、計算ノード102は、スパニングツリー状態402を、レディ状態を表す状態502に遷移させる。計算ノード102は、レディ状態の間、接続ノードのうち1つのノードからスパニングツリー内の相対位置を示すスパニングツリー情報を受信すると、スパニングツリー状態402を状態503に遷移させる。状態503では、計算ノード102は、スパニングツリー内の接続ノードに対する位置を識別する。例えば、いくつかの実施形態では、計算ノードは、TOPOトークンを送信した接続ノードを、スパニングツリーのルートに近い(より隣接する)ノードとして識別する。したがって、TOPOトークンを送信するノードは、スパニングツリーの「近位ノード」として、計算ノード102によって識別される。その後、計算ノード102は、レディ状態502に戻る。
【0040】
さらに、レディ状態502では、計算ノード102は、当該計算ノード102が1つ以上の接続ノードに対する隣接ノードとして構築されたことを示すトークンを、当該接続ノードから受信することができる。これに応じて、計算ノード102は、スパニングツリー状態402を状態504に遷移させる。スパニングツリー状態402が状態504の場合には、計算ノード102は、何れの接続ノードがスパニングツリー内の「遠位ノード」であるかを示す情報を記憶する。近位ノード及び遠位ノードを識別することにより、計算ノード102は、スパニングツリー全体のトポロジを識別することなく、スパニングツリー内の、接続ノードに対する計算ノード自身の位置を識別する。これにより、ファブリック122の各ノードにおける構成が簡素化される。
【0041】
いくつかの場合、計算ノード102は、アイドル状態501の間、複数の接続ノードからTOPOトークンを同時に受信することができる。このTOPOトークンは、複数の接続ノードの各々がアイドル状態501からレディ状態502に遷移したことを示す。これに応じて、計算ノード102は、レディ状態に遷移し、BIOSコードに反映された所定の規則にしたがって、TOPOトークンを送信した接続ノードのうち1つを、スパニングツリー内の近位ノードとして識別する。例えば、いくつかの実施形態では、各ノードがカウンタを含み、カウンタは、システムリセットに応じて、最初に0に設定される。レディ状態502への遷移に応じて、ノードは自身のカウンタを増加させ、増加した値を、自身の接続ノードに送信するTOPOトークンに組み込まれたツリー深さフィールドとして通信する。ノードは、アイドル状態501の間に単一のTOPOトークンを受信したことに応じて、自身のカウンタをツリー深さフールドの値に設定する。したがって、各ノードのカウンタは、スパニングツリーのノードの深さを示す。ノードは、アイドル状態の間に複数のTOPOトークンを受信したことに応じて、ツリー深さフィールドが最小値のTOPOトークンを選択してその値を増加させ、増加した値を自身のカウンタに記憶し、対応する接続ノードがスパニングツリー内の近位ノードであることを示す情報を記憶する。したがって、各ノードは、スパニングツリー内に1つの近位ノードを有するが、複数の遠位ノードを有することができる。
【0042】
計算ノード102は、レディ状態502の間、近位ノードが何らかの障害を経験したことを示すトークンを受信することができ、そうでなければ識別することができる。これに応じて、計算ノード102は、アイドル状態501に戻る。その後、計算ノードは、他の接続ノードのうち1つがレディ状態にあることを示すトークンを受信することによりレディ状態502に戻り、当該他の接続ノードに対するスパニングツリー内の位置を再構築することができる。したがって、ファブリック122のノードは、構成中に個々のノードの障害を調整でき、これにより、構成プロセスの堅牢性を向上させる。
【0043】
セット500は、計算ノード102の構成フィールドのうち1つのみの異なる状態を表し、各構成フィールドは、
図5に例示する状態とは異なる、対応する状態のセットを有し得ることを理解されたい。さらに、計算ノード102は、接続ノードでの対応する構成フィールドの状態に基づいて、各構成サイクル中に当該構成フィールドの2つ以上の状態を調整することができる。例えば、いくつかの場合、計算ノード102は、同じ構成サイクル中に、割り込み転送状態の変化を示すトークンを接続ノードのうち1つから受信することができ、さらに、ウェーブメッセージ状態の変化を示すトークンを接続ノードのうち他の1つから受信することができる。したがって、構成サイクル中に、計算ノード102は、トークンに応じて、割り込み転送状態及びウェーブメッセージ状態の両方を更新することができ、両方のフィールドの更新状態に対応する構成動作を行うことができる。これにより、同じ構成サイクル中に計算ノード102の複数の態様を構成することが可能になり、構成プロセスの効率が向上する。
【0044】
図6は、いくつかの実施形態による、サーバを構成する方法600のフロー図である。記載の目的のために、方法600は、
図1〜5に記載したファブリック122の実装例に関して説明される。ブロック602では、サーバ100は、例えば、サーバ100での電源の切断及び再投入に応じて、ソフトウェアリセット、リセットスイッチの起動等に応じて発生し得るシステムリセットを経験する。システムリセットに応じて、ファブリック122の各ノードがリセットされる。ブロック604では、ファブリック122の各ノードは、本明細書にて構成クロックと称されるローカルクロックを、自身の接続ノードの構成クロックと同期させる。各ノードは、構成クロックに基づいて、構成フィールドの状態間の遷移を管理する。いくつかの実施形態では、接続ノードの構成クロックは、各ノード内の継続的なフィードバックプロセスを介して同期される。フィードバックプロセスでは、ノードの構成クロックが、所定の許容差内で接続ノードと同期される。所定の許容差は、全てのノードの構成クロックが全体の許容差内で同期するように定義される。全体の許容差は、全てのノードが任意の必要な状態遷移を完了すると予想される周期的なインスタンスを確立する。これらの周期的なインスタンスによって定義される時間は、本明細書では「構成サイクル」と称される。特に、構成サイクルは、ファブリック122のノードにおける状態遷移のための全体的なタイミング構造を確立し、これにより、任意の2つの所定のノードの構成クロックが完全に同期されていなくても、各ノードの状態遷移が構成サイクルの開始時又は開始後に始まることが予想され、同じ構成サイクルの終了時又は終了前に完了することが予想される。
【0045】
ブロック606では、ファブリック122のノードは、
図5に関して上述した同様の方法でアイドル状態からレディ状態に遷移する。いくつかの実施形態では、本明細書でさらに説明するように、ファブリック122は、ファブリック122の構成を制御する管理ユニット(MU)と称される少なくとも1つのプロセッサを含む。MUは、ルーティングテーブル、ノードアドレス等の構成情報を含むメモリに接続されており、ファブリック122の各ノードを構成する。MUは、ファブリック122の計算ノードのうち1つに接続されている。MUは、システムリセットに応じて、MU自身のBIOSコードを実行して、計算ノードをアイドル状態からレディ状態に遷移するための命令を、接続された計算ノードに送信する。これにより、ファブリック122の各機能ノードは、最終的にレディ状態に遷移する。
【0046】
ノードがレディ状態に遷移すると、ブロック608では、ノードは、
図5に関して上述したように、スパニングツリーに自己組織化する。ブロック610では、MUは、チェーン及びウェーブメッセージ等のメッセージを用いて、構成情報を各ノードに配信する。構成情報の例には、各ノードがノード間で1つ以上のユニキャストメッセージを介して他のノードと通信することを可能にするために、各ノードのアドレス、各ノードのルーティングテーブル等が含まれる。ブロック612では、ファブリック122のノードは、ソフトウェアサービスを実行する。この実行には、アドレス、ルーティングテーブル及びブロック610で配信された他の構成情報に基づいて、ノード間でメッセージを送信することが含まれる。
【0047】
図7は、いくつかの実施形態による、ファブリックインターコネクトを介して接続された計算ノード702〜713を含むファブリック700を示す図である。ファブリック700は、上述したファブリック122と同様に動作するが、説明のために二次元トポロジに配置される。本明細書でファブリック700について説明した原理及び技法は、3Dトポロジ(例えば、3Dトーラス)を有するファブリックにも適用されることを理解されたい。
図7に示された例では、ファブリック700は、ノード702に接続された単一のMU701を含む。MU701は、ノード702〜713のレディ状態への遷移を開始することによって、ソフトウェアサービスの実行のためにファブリック700の構成を制御する。さらに、ノード702〜713がレディ状態になると、MUは、ファブリック700全体にわたる構成メッセージの伝搬を開始することによって各ノードを構成する。これらの技法は、
図8〜10の例を参照することによって、より良く理解することができる。
【0048】
図8は、いくつかの実施形態による、ノード702〜713がアイドル状態からレディ状態に遷移する例示的なシーケンスを示す図である。これらの遷移により、ノード702〜713は、ファブリック700全体にわたる構成メッセージの伝搬を管理するスパニングツリーに自己組織化する。
図8は、構成サイクル801〜806のシーケンスを図示することによる遷移が示されている。アイドル状態のノードは、クロスハッチングのない円で示されており、レディ状態のノードは、クロスハッチングされた円で示されている。
【0049】
構成サイクル801の前に、ファブリック700はシステムリセットを経験する。これにより、MU701の初期化及びノード702〜713における構成クロックの同期化が行われる。構成サイクル801では、MU701は、スパニングツリー状態フィールドをレディ状態に遷移するための命令を、(例えば、ノード702の指定されたレジスタに書き込むことによって)ノード702に発行する。これに応じて、構成サイクル802では、ノード702は、自身のスパニングツリー状態フィールドをレディ状態に遷移させ、TOPOトークンをノード703,704,706に発行する。構成サイクル803では、ノード703,704,706の各々は、自身のスパニングツリー状態フィールドをアイドル状態からレディ状態に遷移させ、TOPOトークンを自身の接続ノード(ノード705,707,709)に発行する。これに応じて、構成サイクル804では、ノード705,707,709は、アイドル状態からレディ状態に遷移して、TOPOトークンを自身の接続ノード(ノード708,710,712)に発行する。TOPOトークンに応じて、ノード708,710,712は、構成サイクル805により、自身のスパニングツリー状態フィールドをレディ状態に遷移させ、TOPOトークンを自身の接続ノード711,713に発行する。これに応じて、接続ノード711,713は、構成サイクル806でレディ状態に遷移する。したがって、
図8に示された例では、MU701が単一ノード(つまり、ノード702)に命令を発行することに基づいて、ノード702〜713の全てのスパニングツリー状態フィールドをアイドル状態からレディ状態に遷移させる。これにより、MU701が帯域外ネットワークを介して各ノードに個々のメッセージを送信することによって各ノードの構成を個々に準備しなければならなかった従来のシステムと比較して、MU701におけるオーバーヘッドが低減する。
【0050】
図5に関して上述した方法と同様に、ノード702〜713がレディ状態に遷移し、ノード702〜713は、自身の1つ以上の接続ノードに対するスパニングツリー内での自身の位置を識別することによって、スパニングツリーに自己組織化する。例示的なスパニングツリー900が
図9に示されている。スパニングツリー900は、
図8の例示的なシーケンスによって形成されたスパニングツリーを表さない場合があることに留意されたい。
図8に示されていないが、ノード702〜713のうち異なるノードが、形成されたスパニングツリー内に異なる数の遠位ノードを有することを示すために、異なるファブリックトポロジのスパニングツリーが代わりに示される。したがって、スパニングツリー900の図示された例では、ノード702は、ノード702,704の2つの遠位ノードを有し、ノード706は、単一の遠位ノード710を有し、ノード707は、3つの遠位ノード711,712,713を有する。ノード702〜713の各々は、対応する近位ノードを1つだけ有する。
【0051】
構成メッセージは、スパニングツリー900のトポロジに沿って伝搬され、構成情報をMU701から1つ以上のノード702〜713に配信することができる。特に、ノード702〜713の各々は、異なるメッセージタイプの処理を管理するために、メッセージタイプに対応する構成フィールドの状態を管理する。
図10は、チェーンメッセージタイプを用いて構成情報を通信するための例示的な技術を示す図である。チェーンメッセージを受信したことに応じて、ノード702〜713の各々は、自身のチェーンメッセージ状態フィールドを、自身の遠位ノードの1つ(存在する場合)にチェーンメッセージを提供する状態にする。ノードがスパニングツリー700内に2つ以上の遠位ノードを有する場合には、ノードは、各遠位ノードに固定番号を割り当てて、チェーンメッセージ状態を、チェーンメッセージが未だ送信されていない接続ノードであって最下位が割り当てられた接続ノードに対してチェーンメッセージを送信する状態に遷移する。メッセージが全ての遠位ノードに送信されたことをノードが識別した場合には、ノードは、チェーンメッセージ状態を、近位ノードにメッセージを提供する状態に遷移する。そして、チェーンメッセージは、スパニングツリー700の深さトラバースを行い、メッセージがルートノード702に戻るとトラバースが終了する。ここから、チェーンメッセージ又はそのペイロードが、さらなる処理のためにMU701に提供され得る。
【0052】
図10は、いくつかの実施形態による、ファブリック全体にわたるチェーンメッセージの伝搬の一部を示す構成サイクルの1セットを示す図である。構成サイクル1001では、ノード702は、MU701からチェーンメッセージを受信する。これに応じて、ノード702は、ノード703として識別される下位の番号の遠位ノードにメッセージが送信されることを識別し、メッセージを、ノード703に対応する出力ポートに通信する。構成サイクル1002では、チェーンメッセージがノード703に配信されており、ノード703は、自身に接続された遠位ノード705を、チェーンメッセージを未だ受信していない最下位番号の遠位ノードとして識別する。これにより、ノード703は、チェーンメッセージをノード705に提供する。構成サイクル1003では、ノード705は、ノード708を自身の最下位番号の遠位ノードとして識別し、チェーンメッセージをノード708に提供する。構成サイクル1004では、ノード708は、遠位ノードを有していないことを識別し、チェーンメッセージを自身の近位ノード705に通信する。構成サイクル1005では、ノード705は、チェーンメッセージを未だ受信していない最下位番号の遠位ノードがノード709であると識別する。これにより、ノード705は、チェーンメッセージをノード709に提供する。構成サイクル1006では、ノード709は、遠位ノードを有していないことを判断し、チェーンメッセージを自身の近位ノード705に提供する。ノード705は、全ての遠位ノードにチェーンメッセージが提供されたと判断し、メッセージを自身の近位ノード703に提供する。チェーンメッセージは、ルートノード702に到達するまでスパニングツリー900のトポロジにしたがって、ファブリックをトラバースし続ける。ルートノード702は、チェーンメッセージ又はそのペイロードをMU701に提供することができる。
【0053】
チェーンメッセージは、ノード702〜713の1つ以上に構成情報を送受信するために、構成ノードによって使用され得る。例えば、いくつかの実施形態では、チェーンメッセージは、アドレス情報、ルーティングテーブル情報又は他の構成情報等の構成情報のペイロードを含む。また、チェーンメッセージは、ノード702〜713のうち特定のノードをペイロード情報のターゲットとして識別するフィールドを含む。いくつかの実施形態では、MUは、タプル(x,y,z)を有するターゲットノードの相対位置をメッセージに含めることによって、メッセージのターゲットを識別する。各ノードは、自身の接続ノードの何れかにチェーンメッセージを送ると、通信ノードに対する受信ノードの相対位置に基づいてタプルの値を調整する。例えば、受信ノードが通信ノードに対して「+X」ノードである場合には、通信ノードは、タプルのx値から1を引くことができる。したがって、タプルは、宛先に到達すると値(0,0,0)を有する。各ノードは、チェーンメッセージを受信すると、チェーンメッセージのノード識別子を確認し、タプル値が(0,0,0)の場合には、ノードで実行されたBIOSコードにしたがってさらに処理を行うことができる構成レジスタの1つにペイロードを記憶する。いくつかの実施形態では、このさらなる処理は応答ペイロードを生成し、ターゲットノードは、チェーンメッセージがスパニングツリー700内の次のノードに提供される前に、応答ペイロードをチェーンメッセージに記憶することができる。チェーンメッセージが最終的にルートノード702に戻り、そこからMU701に行くため、チェーンメッセージは、MU701からターゲットノードへの情報の通信と、ターゲットノードからMU701へのリターン情報の通信と、の両方の技法を提供する。さらに、構成情報の通信は、MU701が、ターゲットノードへのダイレクトパスを決定することなく行われ、ターゲットノードの位置によって定義された特別なルーティング経路に沿って構成メッセージをルーティングするノード702〜713の何れも用いずに行われる。これにより、後に使用される同じファブリックインターコネクトを介して構成メッセージを通信し、ソフトウェアサービスの実行中に、ノード702〜713間の定義されたルーティング経路に沿ってメッセージを通信することが可能になる。
【0054】
例示すると、MU701が、構成情報をノード708に通信することを望む場合には、MU701は、構成サイクル1001において、構成情報を伴うチェーンメッセージをノード702に提供する。構成サイクル1004により、チェーンメッセージは、ノード708に到達する。これに応じて、ノード708は、ノード708がチェーンメッセージのターゲットノードであることを識別し、自身の構成レジスタの1つ以上にチェーンメッセージのためのペイロード情報を記憶し、任意の応答情報を生成し、応答情報をチェーンメッセージのペイロードに記憶する。ノード708は、構成サイクル1005で遠位ノード705への修正済みチェーンメッセージを提供する。チェーンメッセージは、チェーンメッセージがノード702に戻るまで、後続の構成サイクルを介してスパニングツリーをトラバースし続け、ノード702は、メッセージのペイロード(ノード708からの任意の応答情報を含む)をMU701に提供する。
【0055】
図11は、いくつかの実施形態による、ウェーブメッセージがスパニングツリー900を通って伝搬される方法を示す構成サイクルのシーケンスを示す図である。ウェーブタイプメッセージを受信したことに応じて、各ノードは、自身のウェーブメッセージ状態フィールドを、ウェーブメッセージを自身の遠位ノードに以前に提供したか否か識別する状態にし、提供していない場合には、メッセージを自身の全ての遠位ノードに提供するように当該ウェーブメッセージ状態フィールドを遷移させる。メッセージが遠位ノードに以前に提供されていた場合には、ノードは、ウェーブメッセージ状態フィールドを、ウェーブメッセージに対する応答を自身の全ての遠位ノードから待つ状態に遷移させる。ノードは、ウェーブメッセージに対する全ての遠位ノードからの応答を受信すると、ウェーブメッセージ状態フィールドを、自身の隣接ノードにウェーブメッセージを提供する状態に遷移させる。したがって、
図11に示された例では、構成サイクル1101において、ノード702は、MU701からウェーブメッセージを受信する。これに応じて、ノード702は、自身の遠位ノード703,704の両方にウェーブメッセージを提供する。構成サイクル1102では、ノード703,704の各々は、ウェーブメッセージが自身の遠位ノードに以前に提供されていないと判断する。したがって、ノード703は、ウェーブメッセージを自身の遠位ノード705,706に提供し、ノード704は、ウェーブメッセージを自身の遠位ノード707に提供する。同様に、構成サイクル1103では、ノード705は、ウェーブメッセージを自身の遠位ノード708,709に提供し、ノード706は、ウェーブメッセージを自身の遠位ノード710に提供し、ノード707は、ウェーブメッセージを自身の遠位ノード711,712,713に提供する。
【0056】
構成サイクル1104では、ノード708〜713の各々は、スパニングツリー800に遠位ノードが存在しないことを識別する。したがって、ノード708〜713の各々は、ウェーブメッセージを対応する近位ノードに提供する。例えば、ノード709は、ウェーブメッセージを自身の近位ノード705に提供する。構成サイクル1105,1106では、ウェーブメッセージが、構成サイクル1106においてMU701に戻るまで、スパニングツリー900に沿って先端方向に進み続ける。
【0057】
図12は、いくつかの実施形態による、サーバ100のノードの物理的配置の一例を示す図である。図示された例では、ファブリックインターコネクト112(
図1)は、1つ以上のインターコネクト1202を含み、インターコネクト1202は、プラグインソケット1204の1つ以上の列又は他の集合体を有する。インターコネクト1202は、例えば、バックプレーン、プリント配線基板、マザーボード、ケーブル、他のフレキシブル配線若しくはこれらの組み合わせ等の固定又はフレキシブルなインターコネクトを含むことができる。さらに、インターコネクト1202は、電気信号、光信号又はこれらの組み合わせを実装することができる。各プラグインソケット1204は、例えばFRU1206〜1211等の1つ以上のFRUをインターコネクト1202に接続するように動作するカードエッジソケットを備える。各FRUは、サーバ100の対応するノードを表す。例えば、FRU1206〜1209は、計算ノードを備えてもよく、FRU1210は、ネットワークノードを備えてもよく、FRU1211は、ストレージノードを備えてもよい。FRU1206〜1211の1つ以上は、対応する管理ユニットをさらに含んでもよい。
【0058】
各FRUは、PCB上に配置されたコンポーネントを含む。これらのコンポーネントは、PCBの金属層を介して相互接続され、FRUによって表されるノードの機能を提供する。例えば、本例では計算ノードであるFRU1206は、PCB1212を含む。PCB1212には、1つ以上のプロセッサコア1222を備えるプロセッサ1220と、例えばDRAMデュアルインラインメモリーモジュール(DIMM)等の1つ以上のメモリモジュール1224と、ファブリックインターフェース装置1226と、が実装されている。各FRUは、ソケットインターフェース1240をさらに含み、ソケットインターフェース1240は、プラグインソケット1204を介してFRUをインターコネクト1202に接続するように動作する。
【0059】
インターコネクト1202は、データ通信パスをプラグインソケット1204間に提供する。これにより、インターコネクト1202は、FRUをリング状に接続し、リングを2D又は3Dトーラスネットワークトポロジ(例えば、
図3のトーラスネットワーク300等)に接続するように動作する。FRUは、例えば、FRU1206のファブリックインターフェース装置1226等のように、対応するファブリックインターフェースを通るデータ通信パスを利用する。ソケットインターフェース1230には、プラグインソケット1204の対応する電気接点に電気的に接続する電気接点(例えば、カードエッジピン)が設けられており、X次元リング(例えば、ピン0,1のリングX_INポート1232及びピン2,3のリングX_OUTポート1234)、Y次元リング(例えば、ピン4,5のリングY_INポート1236及びピン6,7のリングY_OUTポート1238)、Z次元リング(例えば、ピン8,9のリングZ_INポート1240及びピン10,11のリングZ_OUTポート1242)のポートインターフェースとして機能する。図示した例において、各ポートは、例えば、PCIEレーンの入力ポート又は出力ポートを備える差動送信器である。当業者であれば、追加のレーン又は追加のポートに適応するために、ポートが追加のTX/RX信号ピンを含むことができることを理解するであろう。
【0060】
図13は、いくつかの実施形態による、
図1のサーバ100に実装された計算ノード1300を示す図である。計算ノード1300は、例えば、
図1の計算ノード101〜106のうち1つに対応する。図示された例では、計算ノード1300は、プロセッサ1302と、システムメモリ1304と、ファブリックインターフェース装置1306と(各々が、
図12のプロセッサ1220と、1つ以上のメモリモジュール1224と、ファブリックインターフェース装置1226と、を表す)を含む。プロセッサ1302は、1つ以上のプロセッサコア1308及びノースブリッジ1310を含む。1つ以上のプロセッサコア1308は、例えば、中央処理装置(CPU)コア、グラフィックス処理装置(GPU)コア、デジタル信号処理装置(DSP)コア等の様々な種類のプロセッサコア又はこれらの組み合わせを含むことが可能であり、例えば、x86命令セットアーキテクチャ又はAdvanced RISC Machine(ARM)アーキテクチャ等の様々な命令セットアーキテクチャの何れを実装してもよい。システムメモリ1304は、例えば、DRAMモジュール、SRAMモジュール、フラッシュメモリ、又はこれらの組み合わせ等の1つ以上のメモリモジュールを含むことができる。ノースブリッジ1310は、1つ以上のコア1308と、システムメモリ1304と、ファブリックインターフェース装置1306と、インターコネクトする。ファブリックインターフェース装置1306は、いくつかの実施形態では、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、マスクプログラマブルゲートアレイ、プログラマブルロジック等に実装される。
【0061】
従来のコンピューティングシステムでは、ノースブリッジ1310がサウスブリッジに接続されており、サウスブリッジが、ノースブリッジ1310(したがって、プロセッサコア1308)と、ローカル周辺リソースを管理する1つ以上のローカルI/Oコントローラと、の間のインターフェースとして機能していた。しかしながら、上述したように、いくつかの実施形態では、計算ノード1300は、ローカル周辺リソース又はこれらのI/Oコントローラを管理せず、その代わりにサーバ100の他のノードで共有されたリモート周辺リソースを使用する。この配置を、プロセッサ1302で実行するソフトウェアに対して透過的にするために、ファブリックインターフェース装置1306は、ファブリックインターフェース装置1306のハードウェアがサウスブリッジをエミュレートし、ノースブリッジ1310に対して、ローカル周辺リソースに接続されたローカルサウスブリッジとして見えるように、計算ノードに割り当てられたリモート周辺リソースを仮想化する。
【0062】
この目的のために、ファブリックインターフェース装置1306は、I/Oバスインターフェース1312と、仮想ネットワークコントローラ1314と、仮想ストレージコントローラ1316と、パケットフォーマッタ1318と、NIC1319と、を含み、NIC1319は、ファブリックスイッチ1320を備える。I/Oバスインターフェース1312は、ローカルI/Oバス1324を介してノースブリッジ1310に接続し、ローカルI/Oバス1324に現れる仮想化された周辺リソースに向けられる要求をインターセプトし、ローカル周辺リソースと同様に当該要求に応答することにより、各ローカルプロセッサコア1308の仮想エンドポイントとして機能する。しかしながら、I/Oバスインターフェース1312によって仮想的に表されている周辺リソースのリモート位置に起因して、潜在的により長い遅延が伴う。
【0063】
I/Oバスインターフェース1312が物理的なインターフェースをノースブリッジ1310に提供し、同時に仮想ネットワークコントローラ1314及び仮想ストレージコントローラ1316によって、より高レベルの応答が生成される。例えば、データセンタネットワーク114(
図1)に接続されるイーサネット(登録商標)NIC等の外部ネットワークに接続されるネットワーク周辺機器のためにI/Oバス1324を介して送信される要求は、I/Oバスインターフェース1312によって仮想ネットワークコントローラ1314にルーティングされ、同時にストレージ要求がI/Oバスインターフェース1312によって仮想ストレージコントローラ1316にルーティングされる。仮想ネットワークコントローラ1314は、例えば、イーサネット(登録商標)プロトコルに基づいて、受信要求及び送信要求の処理を提供する。仮想ストレージコントローラは、例えば、シリアルATA(SATA)プロトコル、シリアルアタッチドSCSI(SAS)プロトコル、ユニバーサルシリアルバス(USB)プロトコル等に基づいて、受信要求及び送信要求の処理を提供する。
【0064】
図1〜11に関して上述した各計算ノードの構成後に、計算ノード1300は、要求を生成するソフトウェアサービスを実行する。要求は、仮想ネットワークコントローラ1314又は仮想ストレージコントローラ1316によって処理された後、パケットフォーマッタ1318に転送され、パケットフォーマッタ1318は、要求を1つ以上のパケットにカプセル化する。そして、パケットフォーマッタ1318は、要求のために、物理的な周辺リソースを管理するI/Oノードのファブリックアドレス又は他の位置識別子を決定する。パケットフォーマッタ1318は、識別したファブリックアドレス(本明細書では「ファブリックID」と称する)を、要求がカプセル化された1つ以上のパケットのヘッダに追加し、送信のために、パケットをNIC1319のファブリックスイッチ1320に提供する。
【0065】
図示したように、ファブリックスイッチ1320は、複数のポートを実装しており、各ポートは、ファブリックインターコネクト112の異なるリンクと相互作用する。
図2の3×3のトーラスネットワーク200を用いて説明するために、計算ノード1300は、(1,1,1)のノードを表すものと仮定する。本例では、ファブリックスイッチ1320は、スイッチを7つの双方向リンクに接続するために、少なくとも7つのポートを有する。すなわち、パケットフォーマッタ1318への内部リンクと、ノード(0,1,1)への外部リンクと、ノード(1,0,1)への外部リンクと、ノード(1,1,0)への外部リンクと、ノード(1,2,1)への外部リンクと、ノード(2,1,1)への外部リンクと、ノード(1,1,2)への外部リンクと、である。計算ノード1300の構成後、ファブリックスイッチ1320のポート間のデータのスイッチング制御は、統合された決定論的なスイッチング論理(integrated deterministic switching logic)に基づいて決定される。スイッチング論理は、パケットにより示された宛先アドレス(つまり、宛先ファブリックID)と、サーバ100に実装された決定論的ルーティングとに基づいて、出口ポートを特定する。各計算ノードの宛先ファブリックIDは、構成中に各ノードに配信することができる。例えば、MUは、上述したように、宛先ファブリックIDを、一連のチェーンメッセージを介して各計算ノードに配信することができる。
【0066】
MUによる構成の後、及び、ソフトウェアサービスの正常な実行中に、計算ノード1300は、受信したパケットを以下のように処理する。別の他のノードから受信したパケットであって、宛先が計算ノード1300であるパケットについては、ファブリックスイッチ1320は、決定論的なルーティング論理に基づいて、受信したパケットを、パケットフォーマッタ1318に接続されているポートにルーティングする。そして、パケットフォーマッタ1318は、パケットからの応答/要求を非カプセル化し、要求に含まれるタイプ識別子に基づいて、仮想ネットワークコントローラ1314又は仮想ストレージコントローラ1316に提供する。要求を受信したコントローラは、次いで応答/要求を処理し、I/Oバスインターフェース1312を制御してノースブリッジ1310に要求を送信する。ここで、応答/要求は、ローカル周辺リソースからの応答又は要求であるかのように処理される。
【0067】
計算ノード1300がパケットのルーティングパスにおける中間ノードである一時的なユニキャストパケットでは、ファブリックスイッチ1320は、一時的なパケットのヘッダから宛先アドレス(例えば、タプル(x,y,z))を決定し、決定論的なルーティング論理によって識別された対応する出力ポートにパケットを提供する。いくつかの実施形態では、ファブリックスイッチ1320は、ローカルに記憶されたルーティングテーブルを用いて宛先アドレスを決定する。構成中、MUは、上述したチェーンメッセージ又はウェーブメッセージを用いて、ルーティングテーブルを各計算ノードに配信することができる。
【0068】
上述したように、計算ノード1300を構成するBIOSの一部は、同様に、仮想化された周辺リソースとすることができる。かかる場合、ファブリックインターフェース装置1306は、ローカルI/Oバス1324を介して、又は、個別のローピンカウント(LPC)バス1328を介して、ノースブリッジ1310に接続されたBIOSコントローラ1326を含むことができる。ストレージリソース及びネットワークリソースと同様に、BIOSコントローラ1326は、BIOS要求を、パケットフォーマッタ1318及びファブリックスイッチ1320を介して、リモートBIOSを管理するI/Oノードに転送し、その後、供給されたBIOSデータをノースブリッジ1310に提供することによって、ノースブリッジ1310からのBIOS要求に応答する。これにより、ローカルBIOSをエミュレートすることができる。
【0069】
図13に示す例では、ファブリックインターフェース装置1306は、構成状態レジスタ170を含む。
図1〜12に関して上述したように、サーバ100の構成中、ファブリックインターフェース装置1306は、計算ノード1300に接続されたノードでの構成状態レジスタの対応するフィールドの更新に応じて、構成状態レジスタ170のフィールドを更新する。構成状態レジスタ170の各フィールドの状態に基づいて、ファブリックインターフェース装置は、接続ノードに対するスパニングツリー内の計算ノード1300の位置を識別し、構成メッセージの受信、処理及び通信を行い、他の構成動作を行う。
【0070】
いくつかの実施形態では、上述した機能の少なくとも一部は、コンピュータ可読媒体に有形的に記憶された1つ以上のソフトウェアプログラムを実行する1つ以上のプロセッサによって実装されてもよい。1つ以上のソフトウェアプログラムは、実行されると、1つ以上のプロセッサを操作して上述した1つ以上の機能を行わせる命令を備える。いくつかの実施形態では、上述した装置及び技術は、例えば、
図1〜13を参照して上述したサーバ100の特定のコンポーネント(例えば、ファブリックインターフェース装置又は計算ノード)等のように、1つ以上の集積回路(IC)装置(集積回路パッケージ又はマイクロチップとも称される)を備えるシステムに実装される。電子設計自動化(EDA)及びコンピュータ支援設計(CAD)ソフトウェアツールは、これらのIC装置の設計及び製造に使用されてもよい。これらの設計ツールは、通常、1つ以上のソフトウェアプログラムとして表される。1つ以上のソフトウェアプログラムは、コンピュータシステムによって実行可能なコードを備え、コンピュータシステムを操作して、回路を製造する製造システムを設計又は適応するプロセスの少なくとも一部を実行するように、1つ以上のIC装置の回路を表すコードを操作する。このコードには、命令、データ、又は、命令及びデータの組み合わせが含まれてもよい。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムがアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、IC装置の設計又は製造の1つ以上のフェーズを表すコードは、同一のコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶され、アクセスされてもよい。
【0071】
コンピュータ可読記憶媒体は、使用中のコンピュータシステムによってアクセス可能な任意の記憶媒体又は記憶媒体の組み合わせを含み、命令及び/又はデータをコンピュータシステムに提供する。かかる記憶媒体は、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、Blu−Ray(登録商標)ディスク)、磁気媒体(例えば、フロッピーディスク(登録商標)、磁気テープ若しくは磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読出専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体を含む。コンピュータ可読記憶媒体は、コンピューティングシステムに組み込まれてもよく(例えば、システムRAMまたはROM)、コンピューティングシステムに固定的に取り付けられてもよく(例えば、磁気ハードドライブ)、コンピューティングシステムに取り外し可能に取り付けられてもよく(例えば、光ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)、コンピュータシステムに有線又は無線ネットワークを介して接続されてもよい(例えば、ネットワークアクセス可能ストレージ(NAS))。
【0072】
図14は、1つ以上の態様を実装するIC装置の設計及び製造のための例示的な方法1400を示すフロー図である。上述したように、以下の各プロセスについて生成されたコードは、対応する設計ツールまたは製造ツールによるアクセス及び使用のために、コンピュータ可読記憶媒体に記憶され、又は別の方法で具体化される。
【0073】
ブロック1402において、IC装置の機能仕様が生成される。機能仕様(よくマイクロアーキテクチャ仕様(MAS)と称される)は、C、C++、SystemC、Simulink(商標)又はMATLAB(商標)を含む様々なプログラミング言語及びモデリング言語の何れかによって表される。
【0074】
ブロック1404では、IC装置のハードウェアを表すハードウェア記述コードを生成するために、機能仕様が用いられる。いくつかの実施形態では、ハードウェア記述コードは、少なくとも1つのハードウェア記述言語(HDL)を用いて表され、ハードウェア記述言語は、IC装置の回路の正式な記述及び設計のための様々なコンピュータ言語、仕様言語又はモデリング言語を含む。生成されたHDLコードは、通常、IC装置の回路の動作、回路の設計及び構成、並びに、シミュレーションによるIC装置の正しい動作を検証するテストを表す。HDLの例としては、アナログHDL(AHDL)、Verilog HDL、SystemVerilog HDL及びVHDLが含まれる。同期デジタル回路を実装するIC装置の場合、ハードウェア記述子コードは、同期デジタル回路の動作の抽象的な表現を提供するためのレジスタ転送レベル(RTL)コードを含むことができる。他の種類の回路については、ハードウェア記述子コードは、回路の動作の抽象的な表現を提供する動作レベルコードを含むことができる。ハードウェア記述コードによって表されるHDLモデルは、通常、設計検証に合格するために、1つ以上のラウンドのシミュレーション及びデバッグを受ける。
【0075】
ハードウェア記述コードによって表される設計を検証した後、ブロック1406では、合成ツールを用いてハードウェア記述コードを合成し、IC装置の回路の初期的な物理実装を表現又は定義するコードを生成する。いくつかの実施形態では、合成ツールは、回路装置インスタンス(例えば、ゲート、トランジスタ、レジスタ、コンデンサ、インダクタ、ダイオード等)と、回路装置インスタンス間のネット(すなわち、接続)と、を備える1つ以上のネットリストを生成する。或いは、ネットリストの全て又は一部を、合成ツールを使用せずに手動で生成することができる。ハードウェア記述コードと同様に、ネットリストは、1つ以上のネットリストの最終セットが生成される前に、1つ以上のテスト及び検証プロセスを受けてもよい。
【0076】
代替的には、IC装置の回路の回路図を記述するために回路図エディタツールを使用することができ、得られた回路図をキャプチャして、回路図のコンポーネント及び接続を表す(コンピュータ可読媒体に記憶された)1つ以上のネットリストを生成するために回路図キャプチャツールを使用することができる。キャプチャされた回路図は、その後、テスト及び検証のために、1つ以上のラウンドのシミュレーションを受けてもよい。
【0077】
ブロック1408では、1つ以上のEDAツールは、ブロック1406で生成されたネットリストを用いて、IC装置の回路の物理レイアウトを表すコードを生成する。このプロセスは、例えば、ネットリストを用いて、IC装置の回路の各要素の位置を決定又は固定する配置ツールを含むことができる。さらに、配線ツールは、ネットリストにしたがって回路要素を接続するのに必要なワイヤを追加して配線するために、配置プロセス上で構築される。結果として得られたコードは、IC装置の三次元モデルを表す。コードは、例えば、グラフィックデータベースシステムII(GDSII)形式等のデータベースファイル形式で表されてもよい。この形式のデータは、通常、幾何学的形状、テキストラベル及び回路レイアウトに関する他の情報を階層形式で表す。
【0078】
ブロック1410では、物理レイアウトコード(例えば、GDSIIコード)が製造施設に提供される。ここでは、物理レイアウトコードを用いて、IC装置を製造する製造設備の製造ツールを(例えば、マスクワークを通じて)構成し、又は適合させる。すなわち、物理レイアウトコードは、製造設備の製造ツールの動作又は当該ツールで実行される製造工程の全体又は一部を制御することができる1つ以上のコンピュータシステムにプログラムすることができる。
【0079】
概略説明において上述した動作又は要素の全てが要求されているわけではなく、特定の動作又は装置の一部が要求されない場合があり、説明されたものに加えて1つ以上のさらなる動作が実行され、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、動作が列挙される順序は、必ずしもそれらが実行される順序ではない。
【0080】
また、これらの概念は、特定の実施形態を参照して説明されている。しかしながら、当業者であれば、以下の特許請求の範囲に記載された本開示の範囲から逸脱することなく、様々な修正及び変更を行うことができると理解する。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、かかる変更の全ては、本開示の範囲内に含まれることが意図される。
【0081】
利点、他の効果、及び、問題を解決する手段を、特定の実施形態に関して上述した。しかしながら、利点、効果、問題を解決する手段、及び、何等かの利点、効果若しくは解決手段を生じさせ又は顕著なものとする特徴は、特許請求の範囲の何れか若しくは全ての、重要な、必須の、不可欠な特徴と解釈されるべきではない。