(57)【特許請求の範囲】
【請求項１】
オペレーションシステムに対応づけられるマルチプロセッサシステムによって実行される方法であって、
前記マルチプロセッサシステムが、前記マルチプロセッサシステムの複数のプロセッサの各々に対応する複数のルーティングテーブル内の１つ以上を改変するステップを含み、前記ルーティングテーブルは、受信データパケットに対して、ルーティング宛先を、前記複数のプロセッサ内の第１プロセッサから、前記複数のプロセッサ内の他の少なくとも１つのプロセッサへと変更するように改変されるものであり、
前記複数のプロセッサ内の前記少なくとも１つの他のプロセッサが入力／出力デバイスとの通信に利用可能なリンクを有している場合に、前記マルチプロセッサシステムが、前記第１プロセッサと前記マルチプロセッサシステムの入力／出力デバイスとの間のリンクを、前記複数のプロセッサ内の前記他の少なくとも１つのプロセッサと前記入力／出力デバイスとの間のリンクに変更するように、前記複数のルーティングテーブル内の１つ以上を改変するステップを含む、方法。
【請求項２】
前記複数のプロセッサ内のその他のプロセッサに対応付けられる少なくとも１つのメモリ回路が利用可能なメモリを有する場合に、前記マルチプロセッサシステムが、前記第１プロセッサに対応するメモリ回路のコンテンツを、前記複数のプロセッサ内のその他のプロセッサに対応づけられる少なくとも１つのメモリ回路にリマップするステップをさらに含む、請求項１記載の方法。
【請求項３】
前記複数のプロセッサ内のその他のプロセッサが、前記入力／出力デバイスとの通信に利用可能なリンクを有していない場合に、前記マルチプロセッサシステムが、エラーを生成するステップをさらに含む、請求項１記載の方法。
【請求項４】
前記複数のプロセッサに対応づけられるメモリ回路は、前記マルチプロセッサシステムによってコヒーレントにキャッシュされる、請求項１記載の方法。
【請求項５】
前記複数のプロセッサは、前記マルチプロセッサシステムに対してローカルな通信リンクを使用して相互に結合される、請求項１記載の方法。
【請求項６】
一連の命令を含むコンピュータプログラムであって、前記一連の命令は、
マルチプロセッサシステムの複数のプロセッサの各々に対応する複数のルーティングテーブルの1つ以上を改変させるようにコンピュータを動作させるよう構成されており、前記複数のプロセッサの個々のプロセッサは対応するメモリを有しており、前記複数のプロセッサの個々のプロセッサは、ローカル通信リンクにより前記複数のプロセッサ内の他の少なくとも１つのプロセッサに結合されており、前記ルーティングテーブルは、受信データパケットに対して、ルーティング宛先を、前記複数のプロセッサのうちの第１プロセッサから、前記複数のプロセッサ内の他の少なくとも１つのプロセッサに変更するように改変されているものであって、
前記一連の命令は、前記複数のプロセッサ内の他の少なくとも１つのプロセッサが前記入力／出力デバイスとの通信に利用可能なリンクを有している場合に、前記第１プロセッサと前記マルチプロセッサシステムの入力／出力デバイスとの間のリンクを、前記複数のプロセッサ内の前記他の少なくとも１つのプロセッサと前記入力／出力デバイスとの間のリンクに変更するように、前記複数のルーティングテーブル内の１つ以上を改変するようにコンピュータを動作させるよう構成されている、コンピュータプログラム。
【請求項７】
前記一連の命令は、前記複数のプロセッサ内のその他のプロセッサが、前記入力／出力デバイスとの通信に利用可能なリンクを有していない場合にエラーを生成するようにコンピュータを動作させるよう構成されている、請求項６記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、マルチプロセッサコンピュータシステムにおけるトポロジー管理に関し、より具体的には、マルチプロセッサコンピュータシステムにおけるハイパートランスポートルーティングテーブルの動的プログラミングに関する。
【背景技術】
【０００２】
米国特許番号ＵＳ−Ａ−２００２／０１０３９９５は、マルチプロセッサコンピュータシステムの構成を初期化するシステム及び方法を開示している。パケットルーティングテーブルがプロセッシングサブシステム構成の初期化中に定義され、パケットルーティングに関する各プロセッシングデバイスに与えられる。全てのルーティングテーブルがデフォルト値に設定された後、システムの初期化がコールドリセットで始まる。 
マルチプロセッサコンピュータシステムにおいて、個々のプロセッサ及び周辺デバイスは、概して、Ｈｙｐｅｒ  Ｔｒａｎｓｐｏｒｔ（ＨＴ：ハイパー搬送）テクノロジー入力／出力リンクを通じて結合される。ＨＴリンクはパケット化されたローカルバスであり、デバイス間の高速データ転送を可能にし、結果として高度なスループットをもたらす。
【０００３】
ＨＴリンクにおいて、アドレス、データ及びコマンドは、情報‘パケット’を利用して同じ配線を通じて送信される。情報パケットは、デバイス情報を含み、ソースとパケットの宛先を識別する。コンピュータシステムにおける各デバイス（例、プロセッサ等）は、ハイパートランスポートテーブルと称され、パケットのルーティングを決める。ＨＴテーブルは、システムトポロジー（例、プロセッサ相互接続アーキテクチャ、又はルーティング情報）のようなシステムコンフィギュレーション情報を保持する。第１デバイス（例、プロセッサ等）が、パケットを受信すると、このパケットは第１デバイス用であるのか、あるいはシステムにおける他の何れかのデバイス用であるかを判断する。このパケットが第１デバイス自体用であれば、第１デバイスがパケットを処理し、パケットが他のデバイス宛に指定されれば、第１デバイスがパケットの宛先ルーティングに関するテーブルを調べて、パケットをその宛先に転送するために何れのＨＴリンクを使用するかを判断し、この宛先に対して適切なＨＴリンクを通じてパケットを転送する。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
これらのＨＴリンクは、システム初期化中にコンフィグレーションがなされる。初期化ソフトウェア（例、ＢＩＯＳ等）が、起動プロセス中コンピュータシステムを構築する。初期化ソフトウェアは、オペレーションシステムに関する必要なデータ構造を生成し、システムハードウェアコンポーネントを初期化し、ハードウェアコンフィギュレーションレジスタを設定し、プラットフォームコンポーネントのコントロールを構成する。ＨＴテーブルは、起動直後初期化ソフトウェアによってプログラムされ、システムが再初期化されるまで全てのデバイスによって利用される。ＨＴテーブルは一度初期化されると、システム整合性を保持するために何れのシステムソフトウェア（例、オペレーションシステム、アプリケーション等）によっても変更されない。
【０００５】
しかし、ＨＴリンクに関連するシステムエラーが生じると（例、リンクにおける高エラー率、リンク故障率、リンクにおけるデバイス故障率等）、システムが、ＨＴテーブルを再構成するために再初期化されなければならない。例えば、ＨＴリンクが故障し、他のルートが使用不可能であるとき、システムは故障する。同様に、デバイス（例、プロセッサ、メモリ等）が故障すれば、システムはデバイスを置換するためにパワーダウンしなければならない。システムのパワーダウンと再初期化は、結果として重要なデータと生産性の損失をもたらし得る。従って、マルチプロセッサシステムにおけるＨＴテーブルを動的にプログラムするためのシステムと方法が求められる。
【課題を解決するための手段】
【０００６】
本発明の実施形態において、マルチプロセッサシステムにおけるＨＴテーブルを動的にプログラムするシステム及び方法が提供される。ある変形例においては、ＨＴテーブルが動的に再プログラムされ、故障調整、診断、パフォーマンス分析、プロセッサホットプラグ等に関するマルチプロセッサシステムのトポロジーを修正する。幾つかの実施形態において、ＨＴリンクはＨＴテーブルを再構築することによって分離され得、分離されたＨＴリンクにおける診断を可能にする。幾つかの様々な形態において、ＨＴリンクがある種のリンクを通じてパケットトラフィックをルートさせるために再構成され得、ＨＴリンクに関するパフォーマンス対策を可能にする。幾つかの実施形態において、プロセッサがシステム全体をダウンさせることなく置換され得るようにＨＴテーブルがプロセッサを分離するために再構成され得る。
【０００７】
本文は、マルチプロセッサシステムに関する方法について記載する。この方法は、少なくとも１あるいはそれ以上のシステムアクティビティの実行を一部停止し、１あるいはそれ以上プロセッサに１あるいはそれ以上のルーティングテーブルを動的に変更する。幾つかの様々な形態において、ルーティングテーブルの各々は、受信データパケットに関するルーティング宛先を表す。幾つかの実施形態において、ルーティング宛先は１あるいはそれ以上のプロセッサである。幾つかの様々な形態において、この方法は変更されたルーティングテーブルを使用し、マイクロプロセッサシステムにおける少なくとも１の所定の送出リンクに受信パケットを転送することを指定する。
【０００８】
幾つかの実施形態において、この方法は全ての継続中のオペレーションが完了した後、システムアクティビティを停止する。幾つかの様々な形態において、この方法では、少なくとも置換メモリを一つ識別し、第１メモリから置換されたメモリにデータを転送し、メモリマッピングを更新する。幾つかの様々な形態において、この方法では、少なくともつの置換入力／出力リンクを識別し、入力／出力データをこの置換入力／出力リンクに転送し、入力／出力マップを更新する。様々な形態において、この方法は第１メモリに結合された第１プロセッサを無効化し、第１プロセッサを置換する。幾つかの様々な形態において、第１プロセッサの無効化では、第１プロセッサを通じて駆動している全てのプロセスをサスペンドし、第１プロセッサへの電力供給を停止するステップの一方あるいは双方を含む。
【０００９】
幾つかの様々な形態において、この方法は１あるいはそれ以上のシステムアクティビティの実行をレジュームする。幾つかの実施形態において、診断、故障調整、メンテナンス及びパフォーマンス対策のうち１あるいはそれ以上に関するテストが実行される。幾つかの様々な形態において、この方法は、１つあるいはそれ以上のプロセッサを通じて１つあるいはそれ以上のルーティングテーブルをレストアし、１つあるいはそれ以上のシステムアクティビティの実行をレジュームするシステムアクティビティのうち１あるいはそれ以上を停止する。幾つかの実施形態において、ルーティングテーブルをレストアするステップは、テストの結果に基づきルーティングテーブルを変更する。
【００１０】
上述された記載は、詳細の概要であり、それ故、当然、簡素化、概略化、及び省略を包含する。結果として当業者にとって、この概要が例示目的のみのためであり、多少なりとも制限されることが意図されていないことが理解されよう。また、この技術分野の熟練者にとって、本明細書に開示されたオペレーションは、多くの方法によって実装され、及びそのような変更及び修正は、本発明の趣旨の範囲を逸脱することなしにより幅広い態様において行われ得ることが明りょうとなろう。本発明の他の態様、進歩性のあるフィーチャ、及び利点は、請求項によってのみ定義され、以下に記載された詳細に制限されないことが明白となるだろう。
【発明を実施するための最良の形態】
【００１１】
本発明の多くの対象物、フィーチャ、及び利点は、当業者にとって添付の図面を参照することによってより理解されよう。
【００１２】
図１Ａは、本発明の一実施形態に従った例示的なシステム１００を表す。システム１００は、多数のプロセッシングノード１１０（１）〜１１０（４）を備えたマルチプロセッサであり、リンク１０５を通じて互いに通信を行う。プロセッシングノードの各々は、プロセッサ１１５（１）〜１１５（４）、ルーティングテーブル１１４、及びノースブリッジ回路１１７（１）〜１１７（４）を含む。この例において例示目的のため、４つのプロセッシングノードが示されるが、しかし、当業者であれば、システム１００はプロセッシングノード数は任意のであることが理解されよう。リンク１０５は全てのリンクであり得る。この例において、リンク１０５は、例えば、ハイパートランスポートＲ（ＨＴ）プロトコルのようなスプリットトランザクションバスプロトコルに従ったデュアルポイントツーポイントのリンクである。リンク１０５はダウンストリームデータフロー及びアップストリームデータフローを含み得る。リンク信号は通常、クロック、コントロール、コマンド、アドレス及びデータ情報及びリンクサイドバンド信号のようなリンクトラフィックを含み、デバイス間を流れるトラフィックを認証し、同期化する。  
【００１３】
ルーティングテーブル１１４は、システムアーキテクチャ（例、システムトポロジー等）のコンフィギュレーションを含む。ルーティングテーブル１１４は、プロセッシングノード１１０によって利用され、データ（例、他のプロセッシングノード用のノードによって生成あるいは他のノードから受信されたデータ）のルーティングを判断する。ノースブリッジの各々は、メモリアレイ１２０（１）〜１２０（４）の対応する１つと通信を行う。この例において、プロセッシングノード１１０（１）〜１１０（４）及び対応するメモリアレイ１２０（１）〜１２０（４）は、システム１００の“コヒーレント”部分である。このコヒーレンシーはメモリのキャッシングに関連し、プロセッサ間におけるＨＴリンクはこのＨＴプロトコルがキャッシュプロトコルを管理するメッセージを含むので、ｃＨＴリンクである。他の（非プロセッサ−プロセッサ間）ＨＴリンクは、メモリキャッシュを有さないのでｎｃＨＴリンクである。ビデオデバイス１３０は、他のＨＴリンクを通じてプロセッシングノード１１０の１つに結合され得る。ビデオデバイス１３０は、他のＨＴリンクを通じてサウスブリッジ１４０に結合され得る。Ｉ／Ｏデバイス１５０の１あるいはそれ以上は、サウスブリッジ１４０に結合され得る。この例において、ビデオデバイス１３０、サウスブリッジ１４０及びＩ／Ｏデバイス１５０は、システムの“非コヒーレント”部分である。当業者であれば、システム１００が図示されるより複合的なシステムで有り得るし、例えば、追加のプロセッシングノード１１０がシステムのコヒーレント部分を形成し得ることが理解されよう。加えて、プロセッシングノード１１０は、“ラダーアーキテクチャ（ladder architecture）”で表されるが、プロセッシングノード１１０は、様々な方法（例えばスター型、メッシュ型等）でインターコネクトされ得るし、より複合的な結合を有し得る。
【００１４】
図１Ｂは、本発明の一実施形態に従ったシステム１００のプロセッシングノード１１０の一例を表す。プロセッシングノード１１０は、プロセッサ１１５、複数のＨＴリンクインターフェース１１２（０）〜１１２（２）及びメモリコントローラ１１１を含む。各ＨＴリンクインターフェースは、ＨＴリンクを通じて結合されるデバイスとの通信を行うために対応するＨＴリンクとの結合を与える。メモリコントローラ１１１は、メモリインターフェース及び対応するメモリアレイ１１０（図示せず）に関する管理を実行する。クロスバー１１３は、他のプロセッシングノード１１０から受信あるいはプロセッサ１１５によって生成されたようなリクエスト、応答、及び同報通信メッセージを、それぞれプロセッサ１１５及び／又は適切なＨＴリンク１１２に転送する。リクエスト、応答及び同報通信メッセージの転送は、各プロセッシングノード１１０に位置する複数のコンフィグレーションルーティングテーブル１１４によって指示される。この例において、ルーティングテーブル１１４はクロスバー１１３に含まれるが、ルーティングテーブル１１４はプロセッシングノード１１０における何れの箇所（例、メモリ、プロセッサの内部ストレージ、外部的にアドレス指定可能なデータベース等内）においても構成され得る。当業者であれば、プロセッシングノード１１０が他のプロセッシングエレメント（例、冗長性ＨＴリンクインターフェース、プロセッサ及びメモリコントローラ用に必要とされる様々な周辺エレメント等）を含み得ることを理解されよう。
【００１５】
図２は、本発明の一実施形態に従ったルーティングテーブル２００のコンフィギュレーションの一例を表す。プロセッシングノードは、複数のコンフィグレーションルーティングテーブル２００を含み得る。例示目的のみのため、この実施例において、３２ビットテーブルが示される。しかし、当業者であれば、ルーティングテーブルが何れのビット数を用いても構成され得るし、ルーティングテーブルのビットの各々は、特定的なアプリケーションによって要請されるように指定され得ることを理解されよう。
【００１６】
この例において、ルーティングテーブル２００が３エントリ、すなわち、同報通信ルーティング情報２０２、応答ルーティング情報２０４、及びリクエストルーティング情報２０６を含む。例示目的のため、情報に関連付けられたルーティングの各セットは、各ＨＴリンク（例、ＨＴリンク１１２（０）〜１１２（２）等）に関して１ビット及びプロセッシングノード自体に対して１ビットを有する。 １ルーティングテーブルが、各プロセッシングノードに割り当てられ、例えば、１つの８プロセッシングノードシステムにおいて、各プロセッシングノードは８コンフィグレーションルーティングテーブルを有する。ルーティングテーブルにおけるエントリは、読み出し及び書き込みされ得るし、通常、持続型ではない。ルーティングテーブルにおけるエントリは何れの仕様を用いてプログラムしてもよく、例えば、０１ｈ値は対応するリンクを通じて受信されたパケットを受信プロセッサが受けいれるべきであることを示し、００ｈ値は、パケットが適切なリンクに転送あるいはその逆が行われなければならないことを示すようにしてもよいく、またその逆としてもよい。
【００１７】
リクエストルーティング情報２０６は指示されたリクエストによって利用される。送出リンクがその特定的な宛先ノードに向けて指示されたリクエストパケットに関して利用される。例えば、あるビットポジションにおける１は、このリクエストが対応するＨＴリンクを通じてルートされたことを示し得る。最も重要でないビットが１に設定されると、そのリクエストは受信プロセッシングノードのプロセッサに送信されることを示し得る。リクエストルーティング情報フィールド２０６は、何れのリンクがリクエストパケットを転送するために利用され得るかを示す。リクエストパケットは通常、１つの宛先のみにルーティングされ、ルーティングテーブルはリクエストパケットのリクエストルーティング情報フィールドにおける宛先ノード識別子を用いて索引（検索される）される。例えば、リクエストパケットのリクエストルーティング情報フィールドにおけるビットが、Ｂｉｔ［０］−受信ノードへのルート、Ｂｉｔ［１］−ＨＴリンク０へのルート、Ｂｉｔ［２］−ＨＴリンク１へのルート及びＢｉｔ［３］−ＨＴリンク２へのルート等として構成され得る。当業者であれば、このルーティングテーブルがマルチプロセッサシステムのトポロジーを反映するため、様々な方法で構成され得ることが理解されよう。例えば、複雑なルーティングスキームがルーティングテーブルマトリックスの組み合わせを用いて実装され得るし、あるいはクロスバー１１３が構成され得、システム等における適切なルーティングに関する受信パケットをさらに処理し、変更する。
【００１８】
応答ルーティング情報２０４は、予め受信したリクエストパケットに対する応答用に利用される。各エントリにおける値は送出ＨＴリンクを表し、その宛先ノードに対する個別の応答パケットを指示するために利用される。応答ルーティング情報フィールド２０４は、応答パケットが転送されるノードあるいはリンクを表す。応答パケットは通常、１つの宛先のみにルーティングされ、ルーティングテーブルは応答パケットにおける宛先ノード識別子を用いて索引が付される。例えば、あるビットポジションにおける「１」という値は、応答が対応する出力リンクを通じてルートされることを示し得るし、「ゼロ」という値は、この応答がプロセッシングノードのプロセッサに送信されることを示し得る。４プロセッシングノードシステムにおいてビットは、Ｂｉｔ［０］−このノードへのルート、Ｂｉｔ［１］−ＨＴリンク０へのルート、Ｂｉｔ［２］−ＨＴリンク１へのルート及びＢｉｔ［３］−ＨＴリンク２へのルート等として構成され得る。
【００１９】
同報通信ルーティング情報２０２は、同報通信及びプローブ形式のデータパケットで使用される。同報通信及びプローブデータパケットは、概して、システムにおける全てのプロセッシングノードに転送される。例えば、プロセッシングノードは、システムにおける全てのノードと情報の通信を行い、各プロセッシングノードの現況（例、メモリ使用可能性、プロセッシング性能、リンク状況等）に関して問い合わせるためにプローブパケットを送信するように同報通信パケットを使用し得る。各エントリはノードに結合されるＨＴリンクの各々に関するシングルビットを包含し得る。例えば、４リンクシステムにおいて、４ビットが各リンクを表すために割り当てられ得る。他の形態として、２ビットがバイナリ形式で各リンクを表すために割り当てられ得る。当業者であれば、全てのスキームは、システムにおけるリンクを表すように構成され得ることが理解されよう。対応するビットがそれに従って設定されれば、パケットが全てのリンクを通じて転送され得る。例えば、Ｂｉｔゼロが「１」の値に設定されると、同報通信が受信プロセッシングノードのプロセッサに送信されることを示し得る。同報通信ルーティング情報フィールドは、同報通信パケットが転送されるノードあるいはリンク先を示す。同報通信は１より多い宛先にルーティングされ得る。受信パケットのソースフィールドにおけるノードＩＤは、ルーティングテーブル内のインデックスとなることができ、ノード識別子を示し得る。例えば、Ｂｉｔ［０］−このノードへのルート、Ｂｉｔ［１］−ＨＴリンク０へのルート、Ｂｉｔ［２］−ＨＴリンク１へのルート及びＢｉｔ［３］−ＨＴリンク２へのルート等である。
【００２０】
リクエストがプロセッシングノードによって受信されると、プロセッシングノードの対応するノースブリッジが宛先識別子を調べ、何れのノードがリクエストの宛先であるかを判断し、それに従ってパケットを転送する。当業者であれば、本文に１つの３２ビットエントリが記載される一方で、ルーティングテーブルが様々なフィールドの組み合わせを用いて構成され得ることが理解されよう。例えば、個々のルーティングテーブルがデータパケットの形式（例、リクエスト、応答、同報通信等）に基づき定義され得るので、データパケットがプロセッシングノードによって受信されると、プロセッシングノードは、データパケットの形式に従って適切なルーティングテーブルを参照し得る。同様に、ビット及びルーティングテーブルの様々な組み合わせは、システムに関して相異なる及び可能性として比較的複合的なルーティングスキームを構成するように使用され得る。
【００２１】
図３は、本発明の一実施形態に従った動的な故障調整のプロセス中実行されるオペレーションの例示的なシーケンスを表す概略図である。オペレーションが特定的な順序で記載される一方、本文に記載されたオペレーションはオペレーション間の依存が可能である限り他のシーケンスの順序（あるいは併存して）で実行され得る。オペレーションの特定的なシーケンスは概して、設計選択の事項であり、当業者であれば、この明細書に基づき様々なシーケンスが可能であることを理解されよう。
【００２２】
最初に、デバイス（例、プロセッサあるいはリンク等）に関する通知が受信される（３０５）。この通知はコンピュータシステムを通じて実行するソフトウェアルーチン（例、ドライバ、システムアプリケーション等）によって受信され得る。当業者であれば、このソフトウェアルーチンは、システムメモリに常駐するソフトウェアとしてプロセッサによって実行され得るし、あるいはコマンドの発行（例、ユーザアプリケーション、システムコール、手動コマンド等）に基づき実行され得ることが理解されよう。この通知は、システムによってレポートされるエラーメッセージ（例、プロセッサ／リンク故障、メモリアレイエラー等）あるいはユーザによって入力された手動コマンドであり得る。この通知は、又、システムにおいて実行するユーザアプリケーションに統合され得る。通知が受信された後、プロセスは欠陥デバイスを識別する（３１０）。このデバイス識別は、通知の一部であり得る。この欠陥デバイスは、システムによって割り当てられた固有なデバイス識別あるいはシステムによって利用される他の手段を用いて識別され得、オペレーション中デバイスをアドレス指定する。例示目的のため、この実施例において、このデバイスは、マルチプロセッサシステムにおける幾つかのプロセッサの１つである。当業者であれば、このプロセスがシステムにおける全ての他のデバイスに関して実行され得ることが理解されよう。
【００２３】
デバイスがプロセッサであるとき、このプロセスは欠陥プロセッサのメモリをリマップするために置換メモリが他のプロセッサで十分に使用可能であるか否かを判断する（３１５）。他のプロセッサが欠陥プロセッサのメモリに置換する十分なスペアメモリを有さなければ、プロセスが適切なエラーを生成する（３２０）。欠陥プロセッサのメモリに置換するためにメモリが十分に使用可能でないとき、システムがパワーダウンすることを要請してもよい。他のプロセッサにおいてメモリが十分であれば、プロセスが入力／出力（Ｉ／Ｏ）ＨＴリンクが欠陥プロセッサ（３２５）に結合されるか否かを判断する。通常、マルチプロセッサにおいてＩ／Ｏデバイスが、例えば、図１に示されるプロセッサ１１５（１）のようなプロセッサの何れかに結合される。Ｉ／Ｏデバイスが、欠陥プロセッサに結合されれば、他のプロセッサは欠陥プロセッサがダウンしたとき、Ｉ／Ｏデバイスと通信することが継続し得るようにＩ／Ｏリンクが再度割り当てられなければならない。欠陥プロセッサに結合された入力/出力ＨＴリンクがなければ、プロセスはトポロジーインパクトを判断するために先へ進む（３５５）。
【００２４】
入力/出力ＨＴリンクが欠陥プロセスに結合されれば、プロセスは、置換ＨＴリンクが置換リンクを通じてＩ／Ｏトラフィックをルートするように使用可能であるか否かを最初に判断する（３３０）。マルチプロセッサにおいて、他の冗長性ＨＴリンクがシステム信頼度を改善するために構築され得る。他のＩ／Ｏリンクが使用可能でなければ、プロセスは、欠陥プロセッサのローカルＤＲＡＭを３１５において識別された他のメモリに転送する（３３５）。ローカルＤＲＡＭの転送がシステムのＤＲＡＭマッピングの更新を要請するので、デバイスが欠陥プロセッサのＤＲＡＭにおけるストレージにアクセスしようと試みれば、このリクエストは適切な他の箇所に転送され得る。
【００２５】
オペレーションシステムが適切な変更について通知される（３４０）。当業者であれば、オペレーションシステムに対するこの通知がオペレーションシステムに依存する仕様であり得ることが理解されよう。例えば、幾つかのアプリケーションにおいて、メモリのリマッピングは、オペレーションシステムにトランスパレントであり得るし、他の事例において、オペレーションシステムは、プロセッサがオフライン状態になるか否かを知ることを要請され得る。冗長性プロセッサの場合、プロセッサの置換はオペレーションシステムに対してトランスパレントであり得る。欠陥プロセッサがＩ／ＯＨリンクに結合された唯一のプロセッサであれば、欠陥プロセッサはオフライン状態になり得ない。プロセスが適切なエラーを生成する（３２０）。このエラーメッセージは、プロセス開始エンティティ（例、ユーザアプリケーション、ユーザによる手動コマンド、オペレーションシステム等）にプロセッサがＩ／Ｏリンクゆえにオフライン状態になり得ないことを知らせる。
【００２６】
他のＨＴリンクが使用可能であれば、プロセスがＩ／Ｏトラフィックを適切な別のＩ／ＯＨＴリンクにルーティングする（３４５）。ＨＴＩ／Ｏリンクの他のリンクへのルーティングは、ルーティングテーブル及び／又はシステムのＩ／Ｏマッピングを更新することを要請し得る。プロセスがＩ／Ｏマッピングを更新する（３５０）。他のルーティングリンクがシステム内に使用可能であれば、概して、他のルートがルーティングテーブルにおける開始ソフトウェア（例、ＢＩＯＳ等）によってプログラムされる。プロセスが欠陥プロセッサをオフライン状態にすることによってシステムのトポロジーが悪い影響を受けるか否かを判断する（３５５）。システムのトポロジーは、プロセッサをオフライン状態にすることによって他のプロセッサを分離し得るときに悪い影響を受け得る。例えば、４方向プロセッサアーキテクチャ（例、図１に示される）において、各プロセッサに２径路あるので、２つの隣接するプロセッサがオフライン状態になれば、他のプロセッサがなお互いに通信し得るが、２つの他のプロセッサ（例、図１に示されるプロセッサ１１５（１）及び１１５（４））がオフライン状態になれば、残りのプロセッサが互いに通信する方法を有さなくなる。当業者であれば、トポロジー衝撃がアーキテクチャ仕様（例、はしご式、メッシュ、スター等）であり得ることが理解されよう。
【００２７】
欠陥プロセッサがオフライン状態になることで、マルチプロセッサシステムのトポロジーが悪い影響を受ける場合、プロセスが適切なエラーメッセージを生成する（３２０）。そのような場合、欠陥プロセスはオフライン状態になり得ない。システムのトポロジーが影響を受けなければ、プロセスは、オペレーションシステムに欠陥プロセッサがもはや役に立たないことを通知する（３６０）。プロセッサがシステムアクティビティをセーフポイントにサスペンド（あるいは停止）する（３６５）。システムアクティビティのサスペンション（停止）はイン-フライト-トランザクションの完了を包含し得る。例えば、メモリの読み出しが開始していれば、プロセスをサスペンドする前に読出しを完了させることが可能でなければならない。このプロセッサキャッシュもフラッシュ消去される。当業者であれば、システムアクティビティが様々な方法を用いてサスペンド（停止）され得ることが理解されよう。例えば、コンピュータシステムのオペレーションシステムが、適切なコマンドで構成されれば、オペレーションシステムが実行され得る。他の形態として、各プロセッサが実行をサスペンドし得るか、あるいはサスペンドモード（例、サスペンドインストラクションを実行する、サスペンド割り込みルーティングを実行する等）になることによって現在のスレッドの実行を遅らせることが挙げられる。同様に、種々の他のデバイス（例、バスマスター、グラフィックスコントローラ等）も、対応するアクティビティをサスペンドするようにコントロールし得る。
【００２８】
このプロセスは、３１５において識別されたメモリに欠陥プロセッサのＤＲＡＭを転送する（３７０）。ローカルＤＲＡＭの転送によってシステムのＤＲＡＭマッピングの更新が要請されるので、デバイスが欠陥プロセッサのＤＲＡＭにおけるストレージにアクセスしようとする場合、このリクエストが適切な他の箇所に転送され得る。プロセスがルーティングテーブルを更新する（３７５）。ルーティングテーブルは、最初に欠陥プロセッサに向けてアドレス指定された全てのトラフィックを他のリンク及びプロセッサに動的にルート変更するように更新される。例えば、図１Ａを参照すると、プロセッサ１１５（１）が欠陥プロセッサであれば、プロセッサ１１５（２）がプロセッサ１１５（４）を通じてプロセッサ１１５（３）と通信し得る。プロセッサ１１５（２）のルーティングテーブルでは、プロセッサ１１５（３）への使用可能なルートとしてのプロセッサ１１５（１）が削除される。同様に、他のプロセッサのルーティングテーブルが適切に改変され、プロセッサネットワークにおける変更を反映する。ルーティングテーブルは、初期化ソフトウェア（例、ＢＩＯＳ等）の固有の適切なルーティングを発呼することによって再構成され得るか、あるいはルーティングテーブル再構成ルーティングが、欠陥プロセッサを分離させるプロセスを実行するソフトウェアドライバ内に統合され得る。当業者であれば、ルーティングテーブルはシステムアーキテクチャに従って様々な手段を用いて再構成され得ることが理解されよう。
【００２９】
ルーティングテーブルが一度更新されると、欠陥プロセッサは、ダウン状態にされ得る（３８０）。プロセッシングノードにおける適切なリンクインターフェースを無効化することによってリンクがダウン状態にされ得る。リンクがルーティングテーブルにおいて更新されると、適切なＩ／Ｏマッピングもリンクにおける変更を反映するように調整され得る。Ｉ／Ｏマッピングはシステム構成仕様であり得る（例、ＰＣＩベースの基準構成等）。プロセスはその後欠陥プロセッサの電力を切る（３８５）。プロセッサへの電力供給が遮断されると、このプロセッサは物理的に置換され得る（３９０）。欠陥プロセッサが新しいプロセッサと置換された後、システムアクティビティがレジュームされ得る（３９５）。システムアクティビティは様々な割込み及びコマンドを用いてレジュームされ得るし、例えば、プロセッサがサスペンド割込みルーティングにあれば、アーキテクチャにおける変更が欠陥プロセッサの置換後に生成された手動干渉によって検出され得る。同様に、プロセッサが手動で開始されれば、手動コマンド入力がシステムアクティビティをレジュームし得る。
【００３０】
システムアクティビティがレジュームされると、欠陥プロセッサを分離させたソフトウェアドライバが、適切なルーティングを発呼することによってルーティングテーブル（例、それ自体でＢＩＯＳルーティングを発呼すること等によってルーティングを実行）を再構成し得る。ルーティングテーブルを再構成することは、システムトポロジーに置換されたプロセッサを構築し得る。当業者であれば、システムアクティビティが欠陥プロセッサを置換することなしにレジュームされ得ることが理解されよう。そのような事例において、システムは、減少した容量（プロセッシング電力、メモリ等）で駆動し得る。さらに、システムが欠陥プロセッサなしに駆動している一方で、診断が欠陥プロセッサの故障の原因を判断するために駆動し得る。
【００３１】
図４は、本発明の一実施形態に従ってＨＴリンクを動的にテストするプロセス中に実行されるオペレーションの例示的なシーケンスを表すフロー図である。オペレーションは特定的な順序で記載されているが、ここに記載されたオペレーションは複数オペレーション間の依存性が許容範囲である限り、他のシーケンス順序（あるいは併存して）で実行され得る。オペレーションの特定的なシーケンスは、概して、設計選択に係わる事項であり、当業者にとって、様々なシーケンスが本明細書に基づき可能であることが理解されよう。
【００３２】
最初に、１あるいはそれ以上のＨＴリンクがテスト用に識別される（４１０）。ＨＴリンクは、様々なデバイス間（例、プロセッサ、メモリ、様々なコントローラ等）で情報を搬送する。これらのリンクは機能（例、診断、パフォーマンス評価等）に関連する様々なシステムについてテストされ得る。例えば、システムが特定的なリンクに関するエラーメッセージを生成していれば、その特定的なリンクに所定の診断を駆動することが求められ得る。同様に、これらリンクは、時折、リンクのパフォーマンス及びこのリンクに結合されるデバイスを判断するためテストされ得る。当業者であれば、ＨＴリンクが様々なアプリケーション仕様目的のために監視及びテストされ得ることが理解されよう。
【００３３】
診断及びテストソフトウェアは、マルチプロセッサにおける何れのプロセッサを通じて駆動し得る。マルチプロセッサシステムにおいて、概して、プロセッサの１つが‘ホスト’プロセッサとして指定される。ホストプロセッサは通常、管理機構関連のシステム（例、診断等）を実行する。診断ソフトウェアは通常、ホストプロセッサ内（例、ローカルストレージ内等）に常駐する。しかし、当業者であれば、システム管理機能が様々なプロセッサ間で配信され得るし、共有され得ることが理解されよう。診断ルーティングがホストプロセッサにおいて実行されると（例、ユーザアプリケーション、ルーティングシステム発呼、ユーザによる手動始動、ソフトウェアドライバルーチン等を通じて）、テストパラメータ（例、データレート、速度、タイミング、スループット等）が予め決められる。例えば、２つより多いプロセッサ間のトラフィックを同時に処理する等に関して、リンクがテストされ得る。
【００３４】
システムアクティビティは、セーフ実行ポイントにサスペンドされる（４２０）。例えば、メモリ読み出しオペレーションが進行していれば、読み出しオペレーションは、メモリ読み出しプロセスがサスペンドされる前に終了することが可能である。システムアクティビティは、テスト中リンクに関して一部サスペンドされ得るし、関連しないアクティビティは継続可能である。例えば、２つのプロセッサ間のリンクがテストされていれば、その特定的なプロセッサのアクティビティのみがサスペンドされ得、ローカルアクティビティ（例、ローカルストレージ等に読み出し／書き込みする）は継続し得る。しかし、幾つかのテストは、リンクのスループットがテストされ得るようにテスト中リンクを通じて長距離ルートを移動するためにローカルトラフィックを求められ得るので、リンクのスループットがテストされ得る。そのような事例において、ローカルアクティビティでさえもサスペンドされ得る。例えば、図１Ａを参照すると、プロセッサ１１５（１）及びプロセッサ１１５（２）間のリンクがテストされていれば、プロセッサ１１５（１）及びプロセッサ１１５（３）間の通信は、プロセッサ１１５（４）及びプロセッサ１１５（２）を通じて強制的にルーティングされ、テスト及びパフォーマンス評価に関するプロセッサ１１５（１）及びプロセッサ１１５（２）間のリンクにおける追加のトラフィックを可能にする。
【００３５】
適切なシステムアクティビティがサスペンドされると、プロセスがルーティングテーブルを再構成する（４３０）。ルーティングテーブルは、テスト中リンクを通じるよう、あるいはリンクを通さないようトラフィックを強制するように再構成される。テーブルの再構成はまた、システムのトポロジーに従ってメモリ及びＩ／Ｏマップの再構成を要請し得る。メモリ及びＩ／Ｏマッピングが要請されれば、メモリ及びＩ／Ｏマップは特定的なリンクのテストを容易にするために変更される。システムアクティビティが通常のオペレーションをレジュームする（４４０）。新しいルーティングコンフィギュレーションにおける通常のオペレーション中、リンク及びデバイスが（例、診断、故障評価、パフォーマンス対策等に関して）テストされる（４５０）。プロセスは、テストが終了したか否か引き続き判断する（４６０）。
【００３６】
テストが終了すると、プロセスはシステムアクティビティをサスペンドする（４７０）。ルーティングテーブルはレストアされる（４８０）。ルーティングテーブルは、テスト前のオリジナルの設定にレストアされ得るか、あるいはテスト結果に基づき更新され得る。例えば、メモリにおけるある種のデータが頻繁にアクセスされ、他のトラフィックに関連するリンクに渋滞が生じる、ということがテストによって判明した場合、メモリマッピングがこの特定的なリンクにおける渋滞を解放するために更新され得る。当業者であれば、ルーティングテーブルがシステムトポロジー及び特定的なアプリケーションに従って更新され得ることが理解されよう。プロセスは、システムアクティビティをレジュームする（４９０）。以上、テストプロセスの一形態を記載したが、当業者であれば、プロセスがパフォーマンス分析目的のためにも利用され得ることが理解されよう。例えば、リンクがデータフローは、特定的なプロセッサあるいはパフォーマンス分析アプリケーションによって監視され得るリンクに向けてルーティングテーブルを動的に変更することによって再構成され得る。パフォーマンス分析アプリケーションは、適切な対策を行うためデータフローを分析し得る。同様に、プロセスがルーティングテーブルの動的な変更を要請する様々なアプリケーションに利用され得る。
【００３７】
上述した明細書は本発明の少なくとも一実施形態を記載目的のために表されている。上述した明細書は、本発明の範囲を制限することが意図さていない。むしろ、本発明の趣旨の範囲は添付の請求項によって定義される。それ故、本発明の他の実施形態は、上述した明細書に対する他の様々な改変、修正、追加、及び／又は改善を含むものである。
【００３８】
例えば、当業者であれば、上述したオペレーションの機能性間の境界は、単に例示目的のためであることが認識されよう。多重のオペレーションの機能性は、シングルのオペレーションに組み込まれ得るし、及び／又はシングルオペレーションの機能性が追加のオペレーションに配布され得る。さらに、他の実施形態が個別のオペレーションの多数の例を含み得るし、オペレーションの順序は、様々な他のオペレーションによって変更され得る。
【００３９】
ここに論じられたオペレーションはシステムユーザ、ハードウェアモジュール及び／又はソフトウェアモジュールによって実行されるステップで構成され得る。他の実施形態において、図１〜図４に示されるオペレーションは、コンピュータ読み出し可能媒体に常駐するか、あるいはコンピュータシステム内に常駐するか、及び／又はコンピュータプログラム製品の一部としてコンピュータシステムに転送されるかの何れかのソフトウェアモジュールを直接的あるいは間接的に表す。
【００４０】
従って、上述した方法、そのオペレーション及びモジュールは、この方法のオペレーションを実行するように構成されたコンピュータシステムにおいて実行され得、及び／又はコンピュータ読み出し可能メディアにより実行され得る。コンピュータシステムは、様々な多くの形式に見出され、単に幾つかの名称を挙げるが、これらに制限されない。メインフレーム、マイクロコンピュータ、サーバ、ワークステーション、パーソナルコンピュータ、ノートパッド、パーソナルデジタルアシスタント、様々なワイヤレスデバイス及び埋め込まれたシステムである。一般的なコンピュータシステムは、少なくとも１プロセッシングユニット、関連するメモリ及び幾つかの入力／出力（Ｉ／Ｏ）デバイスを含む。コンピュータシステムは、プログラムに従った情報を処理し、Ｉ／Ｏデバイスを通じて結果としてもたらされた出力情報を生成する。プログラムは、特定的なアプリケーションプログラム及び／又はオペレーションシステムのような命令のリストである。コンピュータプログラムは通常、コンピュータ読み出し可能ストレージメディアにおいて内部に記録されるか、あるいはコンピュータ読み出し可能転送媒体を通じてコンピュータシステムに転送される。コンピュータプロセスには、通常、プログラムあるいはプログラムの一部の実行、現在のプログラムの値及び状況情報、及びプロセスの実行を管理するためにオペレーションシステムによって利用されるリソースが含まれる。親コンピュータプロセスは、親プロセスの全体の機能性を実行することを支援するように他の子プロセスを生成し得る。親プロセスは個別に子プロセスを生成し、親プロセスの全体の機能性部分を実行するので、子プロセス（及び孫プロセス等）によって実行される機能は、時折、親プロセスによって実行されるものとして記載され得る。
【００４１】
上述した方法はコンピュータシステムを構成することに関してコンピュータ読み出し可能媒体において実施され得、方法を実行する。コンピュータ読み出し可能メディアは永久的に、着脱可能にあるいは遠隔的にシステム１００あるいは他のシステムに結合され得る。コンピュータ読み出し可能メディアは、例えば、制限されることなく、以下のうち幾つでも含み得る。単に幾つかの名称を挙げれば、ディスク及びテープストレージメディアを含む磁気ストレージメディア；コンパクトディスクメディア（例、ＣＤ−ＲＯＭ、ＣＤ−Ｒ等）及びデジタルビデオディスクストレージメディアのような光学ストレージメディア；ホログラフィーメモリ；ＦＬＡＳＨメモリ、ＥＥＰＲＯＭ、ＥＰＲＯＭ、ＲＯＭのような半導体ベースメモリユニットを含む非揮発性メモリストレージ； 強磁性デジタルメモリ；レジスタ、バッファあるいはキャッシュ、メインメモリ、ＲＡＭ等を含む揮発性ストレージメディア；永久的及び断続性コンピュータネットワーク、ポイントツーポイント電話通信設備、キャリア波搬送メディア、インターネットを含むデータ転送メディアである。
【００４２】
ここに記載されたアーキテクチャは、単に例示目的のためであり、実際上、他の多くのアーキテクチャが同様の機能性を実現するように実装され得ることが理解されなければならない。抽象的であるが、なお明りょうな意味で、同様の機能性を満たすコンポーネント全ての配置が、要請された機能性が実現されるように有効的に“関連付けられる”。それ故、ここに記載の特定的な機能性を満たすように組み込まれた何れの２つのコンポーネントも媒体コンポーネントのアーキテクチャに係わりなく、要請された機能性が実現されるように互いに“関連付けられた”として見なされる。同様に、そのように関連付けられた何れの２つのコンポーネントも、要請された機能性を満たすように互いに“操作可能なように接続された”、あるいは“操作可能なように結合された”ものとして見なされ得る。
【００４３】
上述した明細書は、例示的なものであり、“一実施形態”と記載される場合、一つの例示的な実施形態のことである。従って、本文における“一”の用語の使用は、フィーチャを記載した１及び１のみの実施形態を示すことが意図されてない。むしろ、他の多くの実施形態も、頻繁に、例示的な“一実施形態”のフィーチャを説明し得るのものである。それ故、本発明が上記で使用されたように一実施形態の文脈において記載されるとき、この一実施形態は、本発明の多くの可能性のある実施形態の一つである。
【００４４】
本発明の特定的な実施形態が示され、記載される一方で、当業者によって、この教示かに基づき、様々な修正、代替的な構成、及び均等物が請求項で主張された本発明の範囲から逸脱することなく利用可能であることが明白である。次に添付された請求項は、本発明趣旨の範囲における全ての改変、修正等を包含するものである。さらに、本発明は、添付された請求項によってのみ定義されることが理解されよう。上述した明細書は、本発明の実施形態の包括的なリストを表すことが意図されてない。明確に言及されない限り、本文に表された各々の例は、制限される例ではなく、排他的な例でもないことを表し、用語を制限しないか否か、排他的であるか否か、あるいは同様の用語については、各例において一時的に表現されるものである。ここでは幾つかの例示的な実施形態及び例示的な様々な形態を概要する試みがなされたものであるが、他の実施形態及び／様々な実施形態は、添付の請求項において定義された本発明の趣旨の範囲内におけるものである。本発明は、添付の図面を参照することによって、多くの対象物、フィーチャが理解され、及び利点が当業者にとって明りょうとなるであろう。
【図面の簡単な説明】
【００４５】
【図１Ａ】本発明の一実施形態に従った例示的なシステム１００を表す図である。
【図１Ｂ】本発明の一実施形態に従ったシステム１００の例示的なプロセッシングノードを表す図である。
【図２】本発明の一実施形態に従ったルーティングテーブル２００の例示的なコンフィギュレーションを表す。
【図３】本発明の一実施形態に従った動的な故障調整のプロセス中実行されるオペレーションの例示的なシーケンスを表すフロー図である。
【図４】本発明の一実施形態に従ってＨＴリンクを動的にテストするプロセス中実行されるオペレーションの例示的なシーケンスを表す図である。
【図１Ａ】
0004820095.tif 000002
【図１Ｂ】
0004820095.tif 000003
【図２】
0004820095.tif 000004
【図３】
0004820095.tif 000005
【図４】
0004820095.tif 000006