(57)【特許請求の範囲】
【請求項１】
コンピュータシステムのコンフィグレーションを行う方法であって、
コンピュータシステムの演算ノードが、複数の演算ノードを有するコンピュータシステムの物理的結合を表すトポロジマップパラメータに基づいてＢＩＯＳ（basic input/output system）を実行する工程を有し、前記トポロジマップパラメータはプラットフォームに従属し、前記トポロジマップパラメータの演算はプラットフォームとは独立しているものであってＢＩＯＳビルドタイム期間中に実行され、
前記ＢＩＯＳには、前記ＢＩＯＳビルドタイム期間中に決定される前記複数の演算ノード間におけるトラフィックのルーティングパスが含まれ、
前記ＢＩＯＳを実行する工程では、前記コンピュータシステム内の演算ノードが、前記コンピュータシステムを相互に結合する通信リンクを用いて前記複数の演算ノードが有効であるか否かを判定する工程を有し、
前記演算ノードが、前記複数の演算ノードが有効であるか否かに基づいて、前記コンピュータシステムの少なくとも１つの有効な演算ノードのノードテーブルに前記ルーティングパスをロードしておく、
コンピュータシステムのコンフィグレーションを行う方法。
【請求項２】
前記ＢＩＯＳを実行する工程には、
前記演算ノードが、前記複数の演算ノードの各々の中のノードテーブルに前記ルーティングパスをロードする工程と、
有効ではない演算ノードに最初に遭遇すると、前記演算ノードが、前記ロードする工程を中止する工程とがさらに含まれる、請求項１記載のコンピュータシステムのコンフィグレーションを行う方法。
【請求項３】
前記ＢＩＯＳビルドタイム期間中に、コンピュータが、前記複数の演算ノードの間における要求パケット、応答パケット及び同報通信パケットのルーティングを決定する工程を有する、請求項１記載のコンピュータシステムのコンフィグレーションを行う方法。
【請求項４】
前記ＢＩＯＳビルドタイム期間中に、コンピュータが、最短のルーティングパスを検索する距離アルゴリズムに基づいてルーティングパスを決定する、請求項１記載のコンピュータシステムのコンフィグレーションを行う方法。
【請求項５】
前記演算ノードが前記複数の演算ノードが有効であるか否かを判定する工程は、それぞれ前記演算ノードで実行される、有効であるか否かを連続的にチェックする工程と、有効でないと判定された最初の演算ノードを見つけると調査を中止する工程と、を備える請求項１記載のコンピュータシステムのコンフィグレーションを行う方法。
【請求項６】
ＢＩＯＳ命令セットを含みコンピュータシステムの演算ノードで実行可能なコンピュータプログラムであって、
前記ＢＩＯＳ命令セットは、前記演算ノードに、前記複数の演算ノードが有効であるか否かの判定する処理と、前記複数の演算ノードが有効であるか否かに基づいて、前記コンピュータシステムの少なくとも１つの有効な演算ノードのノードテーブルにルーティングパスをロードしておく処理とを実行させ、
前記ＢＩＯＳ命令セットは、複数の演算ノードを有するコンピュータシステムの物理的結合を表すトポロジマップパラメータに基づくものであって、前記トポロジマップパラメータはプラットフォームに従属し、前記トポロジマップパラメータの演算はプラットフォームとは独立しているものであってＢＩＯＳビルドタイム期間中に実行され、
前記ＢＩＯＳ命令セットは、前記ＢＩＯＳビルドタイム期間中に決定される前記複数の演算ノード間におけるトラフィックのルーティングパスに基づくものである、コンピュータプログラム。
【請求項７】
前記ＢＩＯＳ命令セットは、さらに、複数の演算ノードのうちの一つが有効でない場合に、前記演算ノードが前記複数の演算ノードの番号を振り直すようにコンフィグレーションがなされる、請求項６記載のシステムのコンフィグレーションを行うためのコンピュータプログラム。
【請求項８】
コンピュータシステムの演算ノードのＢＩＯＳを有し、前記ＢＩＯＳは、複数の演算ノードを有する前記コンピュータシステムの物理的結合を表すトポロジマップパラメータに基づくものであり、前記トポロジマップパラメータはプラットフォームに従属し、前記トポロジマップパラメータの演算はプラットフォームとは独立しており、
前記ＢＩＯＳには、前記複数の演算ノード間におけるトラフィックのルーティングパスが含まれ、このルーティングパスはＢＩＯＳビルドタイム期間中に決定され、
前記ＢＩＯＳは、前記複数の演算ノードが有効であるか否かを判定するよう動作可能であり、かつ、前記複数の演算ノードが有効であるか否かに基づいて、前記コンピュータシステムの少なくとも１つの有効な演算ノードのノードテーブルに前記ルーティングパスをロードしておくよう動作可能である、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムの初期化に関し、より詳細には、コンピュータシステム構成及びルーティングを記述する方法及びコンフィグレーションを行うする方法に関する。
【背景技術】
【０００２】
コンピュータシステムは、単一あるいは複数のユーザに独立したコンピューティング権限を与えるように設計された情報操作システムである。コンピュータシステムには、例えば、メインフレーム、ミニコンピュータ、ワークステーション、サーバ、パーソナルコンピュータ、インターネット端末、ノートブックコンピュータ、及び、埋め込みシステム等の様々な形態のものがある。パーソナルコンピュータ（ＰＣ）には、デスクトップ型、床上設置型、ないし、携帯型が含まれる。典型的なＰＣシステムは、マイクロコンピュータであり、このマイクロコンピュータは、マイクロプロセッサ、これに関連するメモリ及び制御論理回路（典型的にはシステムボード上に配設される）、及び、システムに入力及び／または出力（Ｉ／Ｏ）を供給する数々の周辺装置を備える。ＰＣシステムのボードには、電子計算機システムの能力を増強させるため、及び、拡張バスを介して周辺装置に接続するために、多くの場合拡張ＰＣＢが接続される。例えば、一般的に、様々なマルチメディア装置が、アドインカード(add-in cards)としてデスクトップコンピュータ及び携帯型コンピュータに供される、あるいは、集積回路としてシステムボード上にインストールされる。
【０００３】
コンピュータシステムは、典型的に、ベーシック入出力システム（ＢＩＯＳ;basic input/output system）と呼ばれる一連の内蔵型ソフトウェアルーチンを備える。ＢＩＯＳは、システムハードウェアとオペレーティングシステムソフトウェアの間のソフトウェアインターフェイスである。ＢＩＯＳは、プログラマ及びユーザとシステムハードウェアとの相互関係を支援する。ＢＩＯＳはソフトウェア及びハードウェアの性質を有するので、しばしばファームウェアと称される。ＢＩＯＳは、コンピュータのマイクロプロセッサに対する一連の指令である。一般的に、ＢＩＯＳは、例えばアッセンブリ言語を用いてコード化され、ＲＯＭ(Read Only Memory：リードオンリメモリ)のような不揮発性メモリ、あるいは、ＥＰＲＯＭ(Erasable PROM：消去可能なＰＲＯＭ)、ＥＥＰＲＯＭ(Electrically Erasable PROM：電子的に消去可能なＰＲＯＭ)、フラッシュＲＡＭ(Random Access Momory：フラッシュランダムアクセスメモリ)またはＢＩＯＳを格納するのに適当な他のいずれの形式のメモリで構成され得るＰＲＯＭ(Programmable ROM：プログラマブルＲＯＭ)に格納される。
【０００４】
ＢＩＯＳは、パーソナル電子計算機システムの様々な重要な機能を制御する。例えば、ＢＩＯＳは、起動時に、メモリのテスト及び初期化、システムのイベントリ作成及び初期化、及び、システムのテストの実行、等を含む様々な機能を実行する。起動時のこれらの機能は“システムブート(system boot)”あるいは“ブーティング・ザ・システム(booting the system)”と称され、システムが起動される度に、または、リセットされる度に出現する。ＢＩＯＳは、キータッチの判断、キャラクタの表示、及び、ＰＣポートを介した通信の制御も行う。電子計算機システムのオペレーティングシステム及びアプリケーションプログラムは、Ｉ／Оポート、レジスタ及び特定のシステムハードウェアの制御言語を直接的に操作するよりも、むしろＢＩＯＳにアクセスする。ＢＩＯＳにはソフトウェアの割り込みのインターフェイスを介してアクセスすることが可能であり、ＢＩＯＳは、異なる割り込みにそれぞれ対応した複数のエントリーポイントを備える。
【０００５】
プログラマによって記述されるＢＩＯＳコードは、電子計算機システムの不揮発性メモリに格納される前に、ＢＩＯＳビルドタイムと称される期間にコンパイルされる。ＢＩＯＳビルドタイムは、電子計算機システムをブートすることができる実行可能なプログラムを生成する。従って、ＢＩＯＳは、その電子計算機システムの構成やコンフィグレーションに合わせて調整されることが多い。ＢＩＯＳが実行されている時間は、ＢＩＯＳランタイムと称され、ＢＩＯＳは、ハードウェアの初期化、通信リンクその他のように必要なシステムのコンフィグレーションを行うという役割を担う。
【０００６】
図１Ａと図１Ｂは、公知のコンピュータシステムのコンフィグレーションを例示的に示す図である。図１Ａは、公知の単一のプロセッサを用いたコンピュータシステムのコンフィグレーション１００を例示的に示す図である。ＢＩＯＳは、ブートストラッププロセッサと呼ばれるプロセッサ１０２を実行する。プロセッサ１０２は、いかなるコンフィグレーションのいかなる形式のプロセッサであってもよく、例えば、シングルスカラ、スーパスカラ、あるいは、ＶＬＩＷプロセッサであってもよい。図示するように、プロセッサ１０２は、ノースブリッジ１０４を介してメモリアレイ１０６と通信を行う。ノースブリッジ１０４は、メモリ制御部と、他の装置への一つあるいは複数のブリッジを有する。ノースブリッジ１０４は、標準規格バス上の一つあるいは複数のサウスブリッジ１０８と通信を行う。この規格バスとしては、例えば、周辺素子内部結合（ＰＣＩ）バスを用いることができる。サウスブリッジ１０８は、例えばＩＳＡバスのような他の規格バス１１１上の一つあるいは複数の入出力（Ｉ／О）装置１１０と通信を行う。規格バス１０９及び１１１には、他の付加的な装置（図示せず）を付け加えることもできる。
【０００７】
図１Ｂは、公知のマルチプロセッサコンピュータシステムのアーキテクチャ１５０を例示的に示す図である。アーキテクチャ１５０は、複数のプロセッサ１５２がノースブリッジ１５４を介して通信を行うこと以外は、アーキテクチャ１００と同様である。複数のプロセッサ１５２は、ノースブリッジ１５４まで共通バス（図示せず）を共有してもよく、また、図示するように個別の通信パスを有してもよい。複数のプロセッサ１５２は、ノースブリッジ１５４内のメモリ制御部を介してメモリ１０６にアクセスする。マルチプロセッサ１５２のうちの一つのプロセッサは、ブートストラッププロセッサとして指定され、ＢＩＯＳを実行してコンピュータシステムをブートさせる。ブートプロセスの間、マルチプロセッサ１５２のうちの他のプロセッサは動作しておらず、例えば停止している。
【０００８】
アーキテクチャ１００及び１５０のような公知のシステムにおけるＢＩＯＳコンフィグレーションは、メモリのテスト及び初期化、システムのインベントリの作成及び初期化、及び、システムのテストを実行することを含む。このようなアーキテクチャは、プロセッサ、メモリ、ブリッジ、周辺装置、及びシステムバスの間に予め定められた通信パスを備える。ＢＩＯＳは、ＢＩＯＳビルドタイムの間にそれぞれのシステムコンフィグレーションに調整される。従って、ＢＩＯＳは、ＢＩＯＳランタイムの間にコンフィグレーションレジスタに必要とされるコンフィグレーション情報を簡単に記述する。システムアーキテクチャ１００のためのＢＩＯＳは、典型的には、システムアーキテクチャ１５０に用いるためには、再記述あるいは設計変更しなければならない。従って、個々のアーキテクチャ、システムボード及び有効性に関するオプション(population option)のそれぞれについて、各々異なるＢＩＯＳプログラムを記述し、整備しなければならない。しかしながら、ここでは、ＢＩＯＳは、マザーボード上のハードウェア素子を初期化するために用いられ、また、ハードウェアの複雑性が低いことから、最小の開発資源しか要求しない。プラットフォームとシリコン基板における要件は、ＢＩＯＳの開発者に知らされる。そして、ＢＩＯＳの開発者は、ＢＩＯＳをマザーボード及びシリコン基板に合わせてカスタマイズしている。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
技術が進歩しハードウェアの煩雑さが増大していることから、それぞれ異なるプラットフォームでの実装毎に異なるＢＩＯＳを提供することは望ましくない。異なるプラットフォームでの実装毎にＢＩＯＳのを実装するには、多大な開発時間及び開発資源を要し、誤りを犯す可能性も増加する。これに加えて、コンピュータシステムプラットフォームは、完全にプログラム可能で、かつ、ＢＩＯＳによって完全にコンフィグレーションがなされることが必要とされる多数の装置を備えている。例えば、装置は、様々な方式で多数の装置に物理的に接続された多数のインターフェイスポートを備えていてもよい。ＢＩＯＳは、効率的なトラフィックフローのためのルーティングパターンを決定するのと同様に、隣接する装置と通信するように、装置のコンフィグレーションを行わなければならない。ＢＩＯＳは、単一のＢＩＯＳで多数のコンピュータシステムプラットフォームの実現を可能にするように柔軟でありつつ、今日のコンピュータシステムの煩雑さを取り扱えるように、よりインテリジェントになることが必要である。
【課題を解決するための手段】
【００１０】
本発明によれば、ソフトウェアモジュールは、単一のＢＩＯＳで多数のコンピュータシステム及び有効であるか否かの判断を支援することができるような柔軟性を残しつつ、今日のコンピュータシステムの煩雑さを取り扱うことができる。ソフトウェアモジュールは、コンピュータシステムのアーキテクチャを決定すること、コンピュータシステムにおいてデバイスが有効であるか否か、例えばデバイスが実装されているか否か、を判定するための調査、及び、システム装置のコンフィグレーションを行うことをそれぞれ行うことができる。この結果、それぞれのコンピュータシステムプラットフォームに対して異なるＢＩＯＳを用いる必要性をなくしている。
さらに、ソフトウェアモジュールは、電子計算機システムのトラフィックのための最適のルーティングを決定することができ、プラットフォームにおける有効であるか否かの判断において、さらなる柔軟性を提供することができる。プラットフォームの物理的コンフィグレーションを表すシステムのトポロジマップパラメータを用いているので、ソフトウェアモジュールプログラム装置のコンフィグレーションは、装置間でお互いに効率的に通信することを可能にする。一つの実現例によれば、コンピュータシステムのコンフィグレーションとルーティングパスはＢＩＯＳビルドタイムにおいて完全に決定されるので、コンピュータシステムの構造(fabric)を初期化するために必要な全コードサイズとブートタイムを低減することができる。他の実現例によれば、コンフィグレーション及びルーティングパスは、ランタイムにおいて、構造内でどの演算ノードがアクティブであるかによって決定される。これにより、ノードを有効とする際に多大な柔軟性がもたらされる。
【００１１】
従って、一形態においては、マルチプルコンピュータシステム及びデバイスが有効であるかの判定の支援を単一のＢＩＯＳにより実現するコンピュータシステムのコンフィグレーションを行うための技術が示される。この形態の技術は、複数の演算ノードを有するコンピュータシステムの物理的結合を表すトポロジマップパラメータを演算する工程と、複数の演算ノードの間におけるトラフィックのルーティングパスを決定する工程と、複数の演算ノードが有効であるか（例えば演算ノードが有効であるか、あるいは実装されているか、あるいは活性化されているか等）を判定する工程とを備える。
【００１２】
他の形態では、ルーティングパスを決定する工程はＢＩＯＳビルドタイムの間に実行される。他の形態では、複数の演算ノードの各々において、ルーティングパスがノードテーブルにロードされる。
他の形態では、有効でないと判定された最初の演算ノードにおいて、ロードする工程を終了する。他の形態では、有効であるかを判定した後に、ノードテーブルが有効でないノードを参照する演算ノードのそれぞれにおいてノードテーブルを修正する。
他の形態では、ルーティングパスを決定する工程は、ＢＩＯＳランタイムの間に実行される。
【００１３】
他の形態では、ルーティングパスを決定する工程は、ルーティングパスが決定されると、各演算ノードのノードテーブル内にルーティングパスをロードする工程を有する。
他の形態では、ルーティングパスを決定する工程は、複数の演算ノード間における要求パケット、応答パケット及び同報通信パケットのルーティングを決定する工程を有する。
他の形態では、ルーティングパスを決定する工程は、最短ルーティングパスを見出す距離アルゴリズムを実行する工程を有する。
他の形態では、有効であるか否かを判定する工程を、ルーティングパスを決定する工程の後に行う。
他の形態では、有効であるか否かを判定する工程を、ルーティングパスを決定する工程の前に行う。
【００１４】
他の形態では、複数の演算ノードのうちの一つが有効でない演算ノードになると、複数の演算ノードに番号を振り直す工程を有する。
他の形態では、複数の演算ノードの各々においてパケットの同報通信を一度しか受信しない。
他の形態では、複数の演算ノードが有効であるか否かを判定する工程は、各演算ノードが有効であるか否かを決定する工程を有する。
他の形態では、複数の演算ノードが有効であるか否かを判定する工程は、有効であるか否かを連続的にチェックする工程と、有効ではない最初の演算ノードを見つけると調査を中止する工程とを有する。
【００１５】
前記の記載は要約であり、従って、必然的に、簡易化、一般化及び詳細の省略が行われている。従って、この技術分野における通常と知識を有する者であれば、要約は例示的な説明に過ぎず、いかなる限定も意図されていないことを理解できるであろう。また、この技術分野における通常の知識を有する者にとっては、ここに開示する処理は、様々な方法で実行可能であり、そのような変更あるいは修正は、本発明及びより広い局面から逸脱するものではないことが明らかであろう。本発明のその他の局面、進歩的な特徴及び有利な効果は、特許請求の範囲によって定義されるものであり、以下に示す非限定的な詳細な説明によって明らかになろう。
【発明を実施するための最良の形態】
【００１６】
本発明は、添付の図面を参照することにより、この発明の属する技術分野における通常の知識を有する者にとって、よりよく理解されるであろうし、数多くの目的、特徴及び有利な効果も明らかになるであろう。
なお、各図において、同じ要素には同じ番号を付して説明した。
【００１７】
図２は、本発明による例示的なシステム２００を示す。システム２００は、リンク２０３を介してお互いに通信を行う多数の演算ノード２０２[０：３]を備えるマルチプロセッサシステムである。演算ノード２０２[０]は、ＢＩＯＳコードを格納するＲＯＭ２１４に最も直接的にアクセスするので、演算ノード２０３[０]は、典型的には、ブートストラッププロセッサとして設計される。ブートストラッププロセッサは、システムが初期化されるとＢＩＯＳコードを実行する。いずれの演算ノード２０２も、典型的には、プロセッサ、メモリ制御部及びリンクインターフェイス回路を備える。リンク２０３は、例えば、HyperTransport(ＨＴ)(登録商標)のような分割トランザクションバスプロトコルによって、ポイントリンクに対してデュアルポイントに構成されてもよい。リンク信号は、典型的には、装置間でトラフィックの流れを順序付け、かつ、同調させるクロック情報、制御情報、コマンド情報、アドレス情報及びデータ情報と、リンク側波帯信号とで構成されるようなリンクトラフィックを備える。演算ノード２０２の各メモリ制御部は、メモリアレイ２０６と通信する。すべてのメモリにおけるトランザクションがコヒーレントであり、演算ノード２０２及びメモリアレイ２０６は、システムのコヒーレント部に存在する。
【００１８】
ビデオ装置２０８は、他のＨＴリンク経由で演算ノード２０２のうちの一つに結合されていてもよい。一つあるいは複数のＩ／Ｏ装置２１２は、サウスブリッジ２１０に結合されていてもよい。ビデオ装置２０８、サウスブリッジ２１０及びＩ／Ｏ装置２１２は、システムの非コヒーレント部に存在する。ＲＯＭ２１４は、ＢＩＯＳコードを含むサウスブリッジ２１０に結合されている。
【００１９】
システム２００は、例えば、付加的な演算ノード２０２がシステムのコヒーレント部を編成するように、図示するものよりも更に複雑であってもよい。演算ノード２０２は、ＨＴリンクをいくつ備えていてもよい。さらに、図中にはラダー構造の演算ノード２０２を図示しているが、演算ノード２０２は、様々な形態で相互結合されていてよく、更に複雑な結合を有していてもよい。例えば、演算ノード２０２[２]は、付加的なＨＴリンクを介して、演算ノード２０２[１]に直接的に接続されていてもよい。
【００２０】
各演算ノード２０２は、他の装置と通信を行うための多数のＨＴリンクを備える。例えば、演算ユニット２０２［０］は、ＨＴリンク２によるビデオ装置２０８との通信、ＨＴリンク０に夜演算ノード２０２［２］との通信、及び、ＨＴリンク１による演算ノード２０２［１］との通信を実現する。
【００２１】
ＢＩＯＳによるシステムの初期化及びマルチ演算システム(multiprocessing unit)２００の構成（コンフィグレーション）は、非常に複雑である。各演算ノード２０２は、他の演算ノード２０２と互いに通信するようにコンフィグレーションがなされなければならない。例えば、要求メッセージ、応答メッセージあるいは同報通信メッセージを送信又は受信するときは、演算ノード２０２［１］は、正確な演算ノードにリンク（接続）するために、どのパス、すなわち、複数あるＨＴリンクのうちのいずれか一つあるいは自己に、情報を送信するのかを把握しなければならない。各演算ノード２０２には、トラフィックを特定のノードへ送信するため、または、特定のノードから受信するためのルーティング情報がプログラムされている。この特定ノードの演算ノード２０２は、特定のメモリアドレスやその類するデバイスへのアクセスを有する。
【００２２】
これに加えて、演算ノードが異なる形式で相互結合されているという異なるプラットフォーム、あるいは、同じプラットフォームであってもバージョンが異なると演算ノードが異なる形式で有効である(populated)という場合には、システムトポロジが異なる可能性があるので、コンピュータシステムのＢＩＯＳのコンフィグレーションは複雑になる。
例えば、システム製造者は、演算ノード２０２［０］及び２０２［１］のみをシステム２００において有効とする（populate）、即ち、その他の演算ノードは有効とせず、実装されないようにする場合もある。例えば、全ての演算ノード２０２［０：３］が有効となっているという、他のバージョンのプラットフォームを製造するためには、システムの製造者は、異なるＢＩＯＳを製造してメンテナンスし、二つの異なるプラットフォームを製造しなければならないか、あるいは、好適には、両方の版のプラットフォームをサポートできる単一のＢＩＯＳを実現しなければならない。さらに、好適には、単一のＢＩＯＳが多数のプラットフォームを支援できることが望ましい。
【００２３】
図３は、本発明の一実施形態による演算ノード２０２を例示的に示す図である。図示するように、演算ノード２０２は、プロセッサ３０２、多数のＨＴリンクインターフェイス３０４及びメモリ制御部３０６を備える。クロスバー３０８は、要求メッセージ、応答メッセージ及び同報通信メッセージをプロセッサ３０２及び／または、適切なＨＴインターフェイス３０４に伝送する。各演算ノード２０２内にノードテーブルを有する多数のノードレジスタは、要求メッセージ、応答メッセージ及び同報通信メッセージの伝送を指示する。図４Ａは、演算ノードレジスタを例示的に示す図である。演算ノード２０２上の他のコンフィグレーションレジスタ（図示せず）は、特定のメモリアドレスに到達する方法（すなわち、どの演算ノードがこの位置へのメモリアクセスを有するか）を表す。
【００２４】
例えば、演算ノード２０２［０］がメモリアクセスを実行しようとすると、トランザクションは、演算ノード２０２［０］のプロセッサからクロスバー回路に送信される。演算ノード２０２［０］のクロスバー回路は、例えば、どのアドレスレンジがどの演算ノード２０２に属するのかを識別するコンフィグレーションレジスタを用いる。演算ノード２０２［０］のクロスバー回路は、例えば、演算ノード２０２［３］を識別し、ノードルーティングテーブル内のノードレジスタ３を用いて、演算ノード２０２［３］にアクセスするにために用いるパスを決定する。ノードレジスタを含む全てのコンフィグレーションレジスタは、複数の演算ノード２０２の間で適切な通信を行うためにＢＩＯＳによってプログラムされる。
【００２５】
図４Ａは、本発明の一実施形態によるノードレジスタ４００を例示的に示す図である。演算ノード２０２は、ノードテーブル内に多数のノードレジスタ４００を備え、システム内では、一つのノードレジスタが各演算ノード２０２に対応している。各ノードレジスタテーブル４００は、要求ルーティング情報４０２、応答ルーティング情報４０４及び同報通信ルーティング情報４０６の３つのエントリを備える。３つのＨＴリンクを有する演算ノードのために、各ルーティング情報４０２、４０４及び４０６は、それぞれのＨＴリンク用に一つずつと、自分自身へと、の計４ビットを有する。８つの演算ノード容量を有するプラットフォームに対して、各演算ノードは、８つのノードレジスタ４０４を備える。テーブルエントリは、アクセス及び上書き可能であり、書き換え不能なものではない。起動時及び停止時には、各ルーティング情報４０２、４０４及び４０６は、値０１ｈに初期化される。この値０１ｈは、パケットが自分自身、すなわち、演算ノード２０２のプロセッサ３０２に受け入れられることを示す。
【００２６】
要求ルーティング情報４０２は、要求パケットが送信されるパスであって、指示された要求に用いられるパスを規定する。所与のビット位置の要求ルーティング情報は、その要求が対応するパスを通じて送信されること（送信経路が決められたこと）を示す。要求ルーティング情報４０２の最も重要度の低いビットであるビット(bit)［０］は、要求ルーティング情報に設定されると、その要求は自己に、すなわち、この演算ノードのプロセッサに送信されることを示す。ビット［１］は、要求ルーティング情報に設定されると、トラフィックをＨＴリンク０への経路に選定する。ビット(bit)［２］は、セットされると、トラフィックをＨＴリンク１への経路に選定する。ビット(bit)［３］は、セットされると、トラフィックをＨＴリンク２への経路に選定する。要求パケットは、典型的には、一つの目的位置のみへ経路が選定される。要求パケット内の目的位置ノード識別子は、ノードテーブル内のどのノードレジスタを用いるかを識別する。
【００２７】
図４Ｂは、要求４１０を受信した場合に行われる演算内容を示す図である。演算ノード内のクロスバー回路は、要求４１０を受信する。要求４１０内の目的位置ノード識別子を用いて、ノードテーブル４１４内の適切なノードレジスタ４１２が識別される。要求ルーティング情報４１６を用いて、要求４１８が送信される適切なパスが複数のＨＴリンクのうちのいずれか一つあるいは自分自身であると識別される。
【００２８】
応答ルーティング情報４０４は、応答パケットが送信されるノードまたはリンクであって、応答とともに用いられるノードまたはリンクを規定する。与えられたビット位置内の応答ルーティング情報は、その応答が対応するパスを通じて送信されること（送信経路が決められたこと）を示す。応答ルーティング情報４０４の最も重要度の低いビットであるビット［０］は、応答ルーティング情報にセットされると、その応答は自分自身に、すなわち、この演算ノードのプロセッサに送信されることを示す。ビット［１］は、セットされると、トラフィックをＨＴリンク０への経路に選定する。ビット(bit)［２］は、セットされると、トラフィックをＨＴリンク１への経路に選定する。ビット(bit)［３］は、セットされると、トラフィックをＨＴリンク２への経路に選定する。応答パケットは、典型的には、一つの目的位置のみへ経路が選定される。応答パケット内の目的位置ノード識別子は、ノードテーブル内のどのノードレジスタを用いるかを識別する。
【００２９】
図４Ｃは、応答４２０が受信された場合に行われる演算内容を示す図である。
演算ノード内のクロスバー回路は、応答４２０を受信する。要求４２０内の目的位置ノード識別子を用いて、ノードテーブル４２４内の適切なノードレジスタ４２２が識別される。応答ルーティング情報４２６を用いて、応答４２８が送信される適切なパスが複数のＨＴリンクのうちのいずれか一つあるいは自分自身であるとして識別される。
【００３０】
同報通信ルーティング情報４０６は、同報通信パケットが送信されるパスであって、同報通信要求及び試験要求(broadcast and probe requests)に用いられるパスを規定する。同報通信パケットは、同報通信ルーティング情報にセットされる対応するビットとともに、全てのパスに送信される。最も重要度の低い同報通信ルーティング情報４０６であるビット［０］は、同報通信ルーティング情報にセットされると、同報通信が自分自身に、すなわち、この演算ノードのプロセッサに送信されることを示す。ビット［１］は、セットされると、トラフィックをＨＴリンク０への経路に選定する。ビット［２］は、セットされると、トラフィックをＨＴリンク１への経路に選定する。ビット［３］は、セットされると、トラフィックをＨＴリンク２への経路に選定する。同報通信は、複数の目的位置へ経路を選定することができる。同報通信パケット内のソースノード識別子は、ノードテーブル内のどのノードレジスタを用いるかを識別する。
【００３１】
図４Ｄは、同報通信４３０が受信された場合に行われる演算内容を示す図である。演算ノード内のクロスバー回路は、同報通信４３０を受信する。同報通信４３０内のソースノード識別子を用いて、ノードテーブル４３４内の適切なノードレジスタ４３２が識別される。同報通信ルーティング情報４３６を利用して、同報通信４３８が送信される一つあるいは複数の適切なパスが複数のＨＴリンクのうちのいずれか一つあるいは自分自身であるとして識別される。
【００３２】
図示の通り、ノードレジスタ４００は、３つのＨＴリンク及び１つの自身へのパスの計４つのパスを支援する。例えば、予約されたビット(reserved bits)を用いるか、または、他のレジスタに拡張することにより、支援対象の数を幾つにでも設定することができる。
【００３３】
ここで、同報通信のソース識別子を除く要求及び応答の目的位置識別子を用いることにより、ノードテーブル内の特定のノードレジスタが特定されることに留意されたい。例えば、８つの演算ノード［０：７］を有するコンピュータシステムは、８つのノードレジスタを備える。送信演算ノードのノードレジスタ［０］は、要求や応答を演算ノード［０］に届けるために、どのパスに要求や応答を送信するかを決定する。しかしながら、送信演算ノードのノードレジスタ［０］は、演算ノード［０］から同報通信を受信したときにも同報通信を送信するパスを決定する。
【００３４】
図５Ａ及び図５Ｂは、本発明の複数の形態によるコンピュータシステム構造及びルーティングコンフィグレーションの処理手順図を例示的に示す図である。図５Ａは、コンピュータシステム構造及びルーティングコンフィグレーションの主要部がＢＩＯＳビルドタイムに決定される構成を示す。図５Ｂは、コンピュータシステム構造及びルーティングコンフィグレーションがＢＩＯＳランタイムに決定される構成（コンフィグレーション）を示す。
【００３５】
図５Ａにおいて、ＢＩＯＳビルドタイムの間に、ステップ５０２においてトポロジマップパラメータが演算される。トポロジマップパラメータは、システム構造、すなわち、複数の演算ノードの間の物理的リンクを表す。演算ノードには物理的なリンクが存在するが、ノードは装置の中にあっても外にあってもよい。これに加えて、トポロジマップパラメータは、システムの非コヒーレントリンクを表す。例えば、演算ノード２０２［０］のＨＴリンク２は、ビデオ装置２０８と物理的にリンクされている。
【００３６】
図６は、トポロジマップパラメータの例示的な形式を示す図である。トポロジマップパラメータ自体は、プラットフォームに従属し、ＢＩＯＳに供される。トポロジマップパラメータの演算は、プラットフォームとは独立しており、また、構造トポロジからも独立している。従って、プラットフォームを修正する場合は、システムの製造者はパラメータを更新するだけでよい。従って、多数のプラットフォーム及びシステムコンフィグレーションを支援するためにＢＩＯＳを修正する必要はない。さらに、例えば、有効ではないノード、を有効化することによりシステムの品質を向上させる場合も、ＢＩＯＳを修正する必要はない。
【００３７】
図５Ａのステップ５０２において、トポロジマップパラメータの処理では、全ての演算ノードに対して予めノードテーブルの構築がなされる。これらのノードテーブルは、ＢＩＯＳランタイムの間に利用するためにＢＩＯＳ内に格納されている。トポロジマップパラメータから収集されたシステムコンフィグレーション情報は、ＢＩＯＳランタイムの間にロードされる各演算ノードのためのノードテーブルを規定するために用いられ、この結果、コンピュータシステム構造が初期化される。例えば、演算ノード２０２［０］が演算ノード２０２［１］と通信するときのように、ノードテーブルを構築する際は、要求、応答及び同報通信のために用いられるパスが決定される。例えば、最小ホップ数、あるいは、バランス化されたトラフィックパターンによって、距離を最適化することにより、ルーティングパスが決定される。これに加え、ルーティングパスは、演算ノードのすべてが有効である（full population)と仮定するか、あるいは他の形態では、演算ノードが連続的に（つながった状態で）有効であると仮定することによって決定される。従って、ノードテーブルは、有効となり得る全てのノードのために構築され、有効となり得るノードの総数よりも少ない数のノード数が有効である限り、経路の再設定を行う必要はない。ノードテーブル自体は、ランタイムに自動的にロードするか、あるいは、ノードテーブル自体をＢＩＯＳ内に格納してもよい。あるいは、必要な格納スペースを最小化、または、ロードする間に必要な演算時間を最短化を行うために、他の形態を採用することもできる。
【００３８】
ステップ５０２で予め構築されたノードテーブルは、ブートストラッププロセッサとして表されるステップ５０４において、演算ノード０から始まる演算ノード内にランタイム期間中においてロードされる。ステップ５０６において、ノードレジスタのロードは、有効ではない（populateがなされていない）最初の演算ノードに遭遇すると中止される。ステップ５０２では演算ノードのすべてが有効であると仮定しているので、有効である演算ノードとして既にロード済みとなっているノードテーブル内のノードレジスタに関しては、有効ではないていない演算ノードに対するすべての参照に関してデフォルト状態が設定される。
例えば、４つの演算ノードシステムにおいて、二つの演算ノードのみが有効である場合に、有効であるノードにおける三番目及び四番目のノードレジスタは、例えば、自分自身に経路設定するとったようなデフォルト値に設定される。これは、有効ではないノードに関しては、いかなる要求パケットも応答パケットも送信されるべきではなく、かつ、いかなる同報通信パケットもこの有効ではないノードから受信すべきではないからである。これに加えて、リンク上でパケットに経路設定をするいかなるノードレジスタもクリアされるべきである。必要に応じてノードレジスタがクリアされた後、コンフィグレーションの最終仕上げが完了される（ステップ５１０）。これは、例えば、有効な演算ノードの数とシステムリンクの特徴を記録すること、ルーティングテーブルを作動させること、あるいはこれに準ずるその他の方式を含む。
【００３９】
図５Ａに示される形態によれば、演算ノードの有効化は、指定された方式において行われなければならない。ここで、他の全ての演算ノードは有効であっても有効でなくても構わないが、少なくともブートストラッププロセッサは、有効でなければならないことに留意されたい。例えば、演算ノード［０］及び［２］が有効化されているとすると、演算ノード［０］のみのコンフィグレーションが行われる。従って、有効であるか否かが判定されて、ステップ５０２においてノードテーブルを規定する際に考慮される演算ノードが順番付けられた後に、経路の再設定を生じさせる必要がないように、演算を最適化してもよい。
【００４０】
図５Ｂは、本発明の他の形態によるシステム構造及びルーティングコンフィグレーションを示す図である。この形態においては、コンピュータシステム構造及びルーティングコンフィグレーションは、ＢＩＯＳランタイムにおいて決定される。ビルドタイム（ビルドタイム）の間は、ＢＩＯＳランタイムの間に用いるために、トポロジマップパラメータはＢＩＯＳ内に格納される（ステップ５５２）。
【００４１】
ランタイムの間に、各有効であるプロセッサのノードテーブルのノードレジスタが構成される。まず、他の全ての有効である演算ノードに対するブートストラッププロセッサ（演算ノード［０］）への／からの要求及び応答のルーティングが決定され、各演算ノードのノードレジスタ内における適切な位置が構成されることでコンフィグレーションがなされる（ステップ５５４）。ＢＩＯＳは、まず、ノードが有効であるかを判定する。有効であれば、ブートストラッププロセッサへの／からの要求及び応答のルーティングが決定され、コンフィグレーションが行われる。有効でなければ、演算処理は次のノードにスキップし、ノードが有効であるか否か(node's population)を判定する。有効であるか否かの判定は、ブートストラッププロセッサの各リンクを連続的に調査し、最初の演算ノードの各リンクが見付かれば、リンクを辿って演算ノードを順番に調査することによって達成される。隣接するプロセッサ（演算ノード）がある限り、見付かった全ての演算ノードのコンフィグレーションがなされる。
ここで、例えば、コンピュータシステム２００において、演算ノード［０］及び［３］のみが有効である場合に、演算ノード［０］及び［３］の間で通信パスを提供する隣接する演算ノードが存在しないため、演算ノード［３］は有効ではない。有効ではないノードが見付かると、演算ノードの番号は振り直され、演算ノードに割り当てられる番号は連続的になる。例えば、演算ノード［０］及び［２］が有効である場合に、演算ノード［２］は番号が振り直されて演算ノード［１］となる。ステップ５５４が完了すると、演算ノード［０］から他のいかなる演算ノードへと要求又は応答を送信することが可能になり、かつ、他のいかなる演算ノードからでも演算ノード［０］へと要求又は応答を送信することが可能になる。
【００４２】
次に、全ての演算ノードの間における要求及び応答のルーティングが決定され、各演算ノードのノードレジスタ内における最適な位置の構成を決定することでコンフィグレーションがなされる（ステップ５５６）。ステップ５５６が完了すると、どの演算ノードからでも他のいかなる演算ノードへと要求または応答を送信することができるようになる。
【００４３】
さらに、各演算ノードのためのソース同報通信のルーティングが決定され、ノードレジスタ内における最適な位置の構成が決定されることでコンフィグレーションがなされる（ステップ５５８）。特に、同報通信メッセージ元である演算ノードが、そのメッセージを自己及び隣接する全ての演算ノードに送信する。コンピュータシステム２００内では、ステップ５５８において、それぞれ、演算ノード［０］から自己、演算ノード［１］及び演算ノード「２」へと、演算ノード「１」から自己、演算ノード「０」及び演算ノード「３」へと、演算ノード「２」から自己、演算ノード［０］及び演算ノード「３」へと、及び、演算ノード［３］から自己、演算ノード［１］及び演算ノード「２」へと演算ノード同報通信が送信される。
【００４４】
同報通信メッセージは、システムのコンフィグレーションによっては、全ての演算ノードに行き届かないかも知れない。従って、各演算ノードは、受信した同報通信メッセージを、まだ同報通信メッセージを受信するようにはされていない隣接する演算ノードに送信するように構成が決定されることでコンフィグレーションが行われるいる（ステップ５６０）。受信した同報通信メッセージを送信することは、全ての演算ノードが同報通信の受信を完了するまで行われる。コンピュータシステム２００には、２リンク以上離れた二つの演算ノードは存在しないため、一回の反復処理を行えば足りる。コンピュータシステム２００において、ステップ５６０では、受信した同報通信を下記のように送信する。
・演算ノード［０］から始まり、既に自己（演算ノード［０］）、演算ノード「１」及び演算ノード［２］へと送信し、受信した同報通信を演算ノード「１」から演算ノード「３」に送信する。
・演算ノード［１］から始まり、既に自己（演算ノード［１］）、演算ノード「０」及び演算ノード［３］へと送信し、受信した同報通信を演算ノード「０」から演算ノード「２」に送信する。
・演算ノード［２］から始まり、既に自己（演算ノード［２］）、演算ノード「０」及び演算ノード［３］へと送信し、受信した同報通信を演算ノード「０」から演算ノード「１」に送信する。
・演算ノード［３］から始まり、既に自己（演算ノード［３］）、演算ノード「１」及び演算ノード［２］へと送信し、受信した同報通信を演算ノード「１」から演算ノード「０」に送信する。
ここで、例えば、演算ノード［０］から始まり、受信した同報通信は、演算ノード［１］から演算ノード「３」だけに送信されており、演算ノード［２］から演算ノード「３」には送信されていないことに留意されたい。従って、いかなる演算ノードから始まった同報通信メッセージでも、他のいかなる演算ノードに行き届いており、どの演算ノードにおいても、同報通信を二重には受信しない。
【００４５】
こうしてコンフィグレーションの最終仕上げが完了する（ステップ５６２）。これは、例えば、有効である演算ノードの数とシステムリンクの特徴を記録すること、ルーティングテーブルを作動させること、あるいはこれに準ずるその他の方式を含む。
【００４６】
本発明の一形態では、最初に、各演算ノードのためのノードルーティングテーブルのルーティングビットの要求及び応答が決定されてプログラムされ、次に、各演算ノードのための同報通信ルーティングビットが決定されてプログラムされる。あるいは、ＢＩＯＳが各演算ノードに対して一度に完全に行うようにしてもよい。
【００４７】
図５Ｂに示す形態によれば、演算ノードを様々なパターンで有効なものとすることができ、ここに示す形態以外の多くの異なるシステムを実現することができる。
【００４８】
処理手順５００及び５５０では、複数の演算ノード間における最短パスをトラフィックルーティングのために選択してもよい。トラフィックを配信するため、及び、トラフィックのボトルネックを低減するために、様々な代替トラフィックのパターンを用いてもよい。
【００４９】
処理手順５００及び５５０は、本発明の幾つかの形態によるシステム構造及びルーティングコンフィグレーションのために実現されたものである。従って、ここに記載した処理は、電子計算機システムのユーザによって直接的に入力される指令を含むことがある。しかしながら、好適な形態によるステップは、ソフトウェアモジュールによって実行される工程を備える。ここに示すステップの機能は、モジュール全体あるいはモジュールの一部の機能に対応してもよい。ソフトウェアモジュールに加えて、上述した処理手順の全体あるいはその一部は、アプリケーション指令またはメニュー項目として実現することができる。
【００５０】
ここに記す処理は、モジュール全体あるいはその一部（すなわち、ソフトウェア、ファームウェアまたはハードウェアモジュール）に関するものであってもよい。例えば、ここに記すソフトウェアモジュールは、スクリプト、バッチまたはその他の実行可能なファイル、あるいは、これらの結合及び／またはこれらのファイルの一部を含んでもよい。ソフトウェアモジュールは、コンピュータが読み取り可能な媒体上に符号化されたコンピュータプログラム、または、そのサブルーチンを含んでもよい。
【００５１】
さらに、この技術分野における通常の知識を有する者であれば、複数のモジュールの間の境界は、単なる例示であって、代替的な形態でこれらのモジュールを合併したり、モジュールの機能の代替的な分解を施してもよいことを理解できるであろう。例えば、ここで記したモジュールは、複数のコンピュータ処理として実行されるサブモジュールに分解されてもよい。さらに、代替的な形態では、特定のモジュールやサブモジュールの多数の実例を組み合わせてもよい。さらに、この技術分野における通常の知識を有する者であれば、例示的な形態において記載された処理は、一例に過ぎないことを理解できるであろう。本発明によれば、様々な処理を組み合わせてもよいし、処理機能に付加的な処理を加えてもよい。
【００５２】
従って、ここに記した処理手順、その処理及びモジュールは、これらの処理を実行するようにコンフィグレーションがなされた電子計算機システム上で実行してもよいし、及び／または、コンピュータが読み取り可能な媒体から実行してもよい。これらの処理手順は、これらの処理手順を実行する電子計算機システムのコンフィグレーションを行うために、機械読み取り可能、及び／または、コンピュータ読み取り可能な媒体に具現化されてもよい。従って、ソフトウェアモジュールは、モジュールの機能を実現するための電子計算機システムのコンフィグレーションを行うために、電子計算機システムメモリ内に格納されても、及び／または、送信されてもよい。
【００５３】
いずれの処理手順も、システムのコンフィグレーションを簡単に規定できる標準的なトポロジマップパラメータフォーマットを実現する。トポロジマップパラメータは、例えば、システムボードサプライヤーによって供給され、ＢＩＯＳ内のソフトウェアルーチンによって実現され、システム構造及びルーティングのコンフィグレーションを最適化する。図６は、システムのための例示的なトポロジマップパラメータフォーマットを示す図である。まず最初に、演算ノードを列挙すること、及び、各演算ノードのポート結合を列挙することにより、システムのコヒーレント部を示す(start_cHT_fabric_map)。ここで、演算ノードは有効であってもなくても良いことに留意されたい。有効であるかの判定はランタイムにおいて実行されるため、異なるＢＩＯＳを必要としない多数の演算ノードの有効であるかの判断とともに単一プラットフォームボードを用いることができる。多数の非コヒーレントな装置チェーンは、チェーンが始まった演算ノード、バスの特徴及び装置を列挙することにより、(start_cHT_CHAIN)と記すことができる。この形式を用いることにより、いかなるシステムコンフィグレーションであっても、簡潔かつ正確に規定することができ、ＢＩＯＳの実装を変更することなく、多数の形態を支援することができる。ＢＩＯＳの単一の形態を有することにより、設計期間を短縮することができ、コンピュータシステムの効率及び信頼性を改良することができる。
【００５４】
以上、本発明の実施形態を特定の形態の文脈に記載した。これらの形態は、例示的に過ぎず、限定的なものではない。多くのバリエーション、修正例、付加例及び改良例を実現することができる。従って、単一の事例としてここに記した構成要素に、複数の事例を提供してもよい。様々な構成要素、処理及びデータ記録は任意に切り分けることができ、ここでは具体的な例示構成の文脈の中に特定の例を示した。機能の割り当てとして他の形態も想像され、これらは特許請求の範囲が規定する技術的範囲に含まれるであろう。最後に、例示的な構成内の分離した構成要素として示された構成及び機能は、結合した構成あるいは構成要素として実現されてもよい。これら及びこの他のバリエーション、修正例、付加例、及び改良例は、以下の特許請求の範囲によって規定される本発明の技術的範囲に含まれる。
【図面の簡単な説明】
【００５５】
【図１Ａ】公知のコンピュータシステムの構成を例示的に示す図である。
【図１Ｂ】公知のコンピュータシステムの構成を例示的に示す図である。
【図２】本発明の一実施形態によって実現されるコンピュータシステムの構成を例示的に示す図である。
【図３】本発明の一実施形態における演算ノードを例示的に示す図である。
【図４Ａ】本発明の複数の実施形態におけるノードレジスタを例示的に示す図である。
【図４Ｂ】本発明の複数の実施形態におけるノードレジスタを例示的に示す図である。
【図４Ｃ】本発明の複数の実施形態におけるノードレジスタを例示的に示す図である。
【図４Ｄ】本発明の複数の実施形態におけるノードレジスタを例示的に示す図である。
【図５Ａ】本発明の複数の実施形態におけるコンピュータシステムの構造及びルーティングの構成を表す処理手順図の一例である。
【図５Ｂ】本発明の複数の実施形態におけるコンピュータシステムの構造及びルーティングの構成を表す処理手順図の一例である。
【図６】本発明の一実施形態におけるトポロジマップパラメータの形式を例示的に示す図である。
【図１Ａ】
0004722491.tif 000002
【図１Ｂ】
0004722491.tif 000003
【図２】
0004722491.tif 000004
【図３】
0004722491.tif 000005
【図４Ａ】
0004722491.tif 000006
【図４Ｂ】
0004722491.tif 000007
【図４Ｃ】
0004722491.tif 000008
【図４Ｄ】
0004722491.tif 000009
【図５Ａ】
0004722491.tif 000010
【図５Ｂ】
0004722491.tif 000011
【図６】
0004722491.tif 000012