(57)【要約】      （修正有）【課題】インターコネクトアーキテクチャにおいて休止することなくルーティング情報を動的に修正する方法および装置を提供する。【解決手段】各エージェント／ノードは、インターコネクトアーキテクチャにおいてターゲットエージェント／ノードに関するルーティング情報を保持している。ルーティング情報には、ルーティング優先度が含まれるとしてよい。ノードがホットリムーバルされる場合、当該ノードは隣接するノードに対してポートディセーブルメッセージを生成する。隣接するノードは、ディセーブルメッセージが受信されたポートをディセーブルして、完了メッセージを生成する。リムーバルされるべきノードは、完了を受け取るまでメッセージのルーティングを継続する。完了を受け取ると、対応するノードがディセーブルされる。【選択図】図４
2010079880.tif 000002
【特許請求の範囲】
【請求項１】
複数のエージェントにポイントツーポイントリンクを介して結合可能な複数のポートと、
ターゲットエントリを含むルーティングテーブルを保持する第１のロジックと
を備え、
前記ターゲットエントリは、優先順位に応じて前記複数のポートをターゲットエージェントに対応付けるインターコネクトエージェント。
【請求項２】
前記優先順位に応じて前記複数のポートをターゲットエージェントに対応付ける前記ターゲットエントリは、優先順位に応じて前記複数のポートを複数のターゲットエージェントに対応付ける複数のターゲットエントリのうちの１つである請求項１に記載のインターコネクトエージェント。
【請求項３】
前記第１のロジックは、ルーティングファクターに基づく別の優先順位に応じて前記複数のポートを対応付けるように前記ターゲットエントリを動的に構成可能であり、
前記ルーティングファクターは、前記複数のポートのうちの最近ディセーブルされたポート、前記複数のポートのうち一のポートに対応付けられている前記ターゲットエントリまでのホップの数、および前記複数のポートのうちの一のポートを介した前記ターゲットエージェントまでのルーティング時間の少なくとも１つである請求項１に記載のインターコネクトエージェント。
【請求項４】
前記優先順位に応じて前記複数のポートをターゲットエージェントに対応付ける前記ターゲットエントリを含む前記ルーティングテーブルを保持する前記第１のロジックは、優先度リストにおいて優先度で列挙されている前記複数のポートに対応する複数のポート識別子を含むエントリを有し、
前記複数のポート識別子はそれぞれ、イネーブルフィールドと対応付けられており、
前記複数のポートのうち第１のポートに対応付けられているイネーブルフィールドは、前記第１のポートでリターンサイクルメッセージを受信すると、ディセーブル値に更新される請求項１に記載のインターコネクトエージェント。
【請求項５】
第１のノードに設けられ、ポイントツーポイントリンクを介して受信ノードと通信する手段と、
前記第１のノードがホットリムーバルされることが決定されると、ポイントツーポイントリンクを介して前記受信ノードと通信する前記手段を介して第２のノードに送信されるディセーブルメッセージを生成する手段と、
ポイントツーポイントリンクを介して前記受信ノードと通信する前記手段のためのイネーブルフィールドとターゲットノードとを対応付けるテーブルを保持する手段と
を備え、
ポイントツーポイントリンクを介して前記受信ノードと通信する前記手段のための前記イネーブルフィールドは、ポイントツーポイントリンクを介して前記受信ノードと通信する前記手段において前記ディセーブルメッセージに対応づけられた完了メッセージを受信すると、ディセーブル値に更新されるインターコネクトエージェント。
【請求項６】
ポイントツーポイントリンクを介して前記受信ノードと通信を実行する前記手段に対応付けられたホットリムーバルイベントを検出する手段と、
前記ホットリムーバルイベントの検出に基づいて前記第１のノードがホットリムーバルされると決定する手段と
をさらに備える請求項５に記載のインターコネクトエージェント。
【請求項７】
第１のエージェント
を備え、
前記第１のエージェントは、
複数のポートと、
複数のターゲットエージェントに対応付けられている複数のエントリを含むテーブルを保持する第１のロジックと
を有し、
前記複数のポートのうち第１のポートは、ポートディセーブルメッセージを受信し、
前記複数のエントリはそれぞれが、前記複数のポートに対応する複数のイネーブルフィールドを保持し、前記第１のロジックは、前記第１のポートが前記ポートディセーブルメッセージを受信すると、前記複数のエントリのそれぞれに保持されている前記第１のポートに対応するイネーブルフィールドを、ディセーブル値に更新する装置。
【請求項８】
前記第１のロジックに結合されている第２のロジック
をさらに備え、
前記第２のロジックは、前記第１のロジックが前記第１のポートの前記イネーブルフィールドを前記ディセーブル値に更新すると、前記ポートディセーブルメッセージに対応付けられているソースノードに対して、前記ポートディセーブルメッセージと対応付けられている完了メッセージを生成する請求項７に記載の装置。
【請求項９】
前記第１のロジックは、前記複数のエントリのうち、前記複数のターゲットエージェントのうち一のターゲットエージェントに対応付けられているエントリを、前記エントリにおいて前記複数のポートに対応する前記複数のイネーブルフィールドの全てについてディセーブル値が保持されていれば、前記テーブルからリムーバルする請求項７に記載の装置。
【請求項１０】
前記第１のロジックに結合されている第２のロジック
をさらに備え、
前記第２のロジックは、前記第１のロジックが前記テーブルから前記エントリをリムーバルした後で、前記複数のターゲットエージェントのうち前記一のターゲットエージェントを参照するメッセージをソースエージェントから受信すると、前記ソースエージェントに対してリターンサイクルを生成する請求項９に記載の装置。
【請求項１１】
前記第１のロジックに結合されている第２のロジック
をさらに備え、
前記第２のロジックは、前記第１のポートが前記ポートディセーブルメッセージを受信すると、前記第１のポートに対応付けられている、複数の待機サイクルのフラッシュを開始する請求項７に記載の装置。
【請求項１２】
前記第１のロジックはさらに、前記複数のエントリのうちそれぞれに保持されている第２のポートに対応する第２のイネーブルフィールドを、前記第２のポートがリターンサイクルメッセージを受信すると、前記ディセーブル値に更新する請求項７に記載の装置。
【請求項１３】
第２のエージェントに対応付けられているホットアッドイベントに応じて、前記第２のエージェントに対してイネーブルポートメッセージを生成するロジックを有する第１のエージェントと、
第１のポート、第２のポート、および第１のロジックを有する第２のエージェントと
を備え、
前記第１のロジックは、前記第１のエージェントのターゲット識別子と、前記第１のポートの第１のイネーブルフィールドおよび前記第２のポートの第２のイネーブルフィールドとを対応付け、
前記第１のロジックは、前記第２のポートにおいて前記第１のエージェントから前記イネーブルポートメッセージを受信すると、前記第２のイネーブルフィールドをイネーブル値に更新するシステム。
【請求項１４】
前記第１のポートの前記第１のイネーブルフィールドもまた、前記第２のポートにおいて前記第１のエージェントから前記イネーブルポートメッセージを受信すると、前記イネーブル値に更新され、
前記第２のエージェントはさらに、前記第１のロジックに結合されている第２のロジックを有し、
前記第２のロジックは、前記第２のポートが前記イネーブル値に更新されると、前記第１のエージェントに対して前記イネーブルポートメッセージに対応付けられている完了メッセージを生成する請求項１３に記載のシステム。
【請求項１５】
第１のノードに対応付けられているホットリムーバルイベントに応じて、前記第１のノードにおいてディセーブルポートメッセージを生成する段階と、
前記第１のノード内で保持されている複数のルーティングエントリにおいて前記第１のノードの第１のポートを、前記第１のポートにおいて前記ディセーブルポートメッセージに対応付けられている完了メッセージを受信すると、ディセーブルする段階と、
前記第１のノードのポートが全て、前記第１のポートも含め、ディセーブルされると、前記第１のノードをリムーバルする段階と
を備える方法。
【請求項１６】
前記ディセーブルポートメッセージを生成した後、且つ、前記完了メッセージを受信する前に、前記第１のポートを介して受信する前記第１のポートに対応付けられているメッセージはいずれも、前記第１のノードで、転送する段階
をさらに備える請求項１５に記載の方法。
【請求項１７】
第２のノードの第２のポートにおいて前記ディセーブルポートメッセージを受信する段階と、
前記ディセーブルポートメッセージを受信すると、
前記第２のポートに対応付けられているインフライトサイクルをいずれもフラッシュする段階と、
前記第２のノード内に保持されている第２の複数のルーティングエントリにおいて前記第２のポートをディセーブルする段階と、
前記第１のノードに対して完了メッセージを生成する段階と
をさらに備える請求項１５に記載の方法。
【請求項１８】
送信ノードから送信された、前記第１のノードのデスティネーション識別子を含むメッセージを前記第２のノードで受信する段階と、
前記第２の複数のルーティングエントリのうち、前記第１のノードの前記デスティネーション識別子と対応付けられているルーティングエントリにおいて、全てのポートがディセーブルされていると判断する段階と、
前記第１のノードの前記デスティネーション識別子と対応付けられている前記ルーティングエントリにおいて全てのポートがディセーブルされていると判断されると、前記送信ノードに対してリターンサイクルメッセージを生成する段階と
をさらに備える請求項１７に記載の方法。
【請求項１９】
前記送信ノードの第３のポートにおいて前記リターンサイクルメッセージを受信する段階と、
前記第３のポートにおいて前記リターンサイクルメッセージを受信すると、前記送信ノード内で保持されている第３の複数のルーティングエントリにおいて前記第３のポートをディセーブルする段階と
をさらに備える請求項１８に記載の方法。
【請求項２０】
前記第１のノードに対応付けられているホットアッドイベントに応じて、前記第１のノードにおいてイネーブルポートメッセージを生成する段階と、
前記第１のポートにおいて前記イネーブルポートメッセージに対応付けられている第２の完了メッセージを受信すると、前記第１のノード内で保持されている前記複数のルーティングエントリにおいて前記第１のノードの前記第１のポートをイネーブルする段階と
をさらに備える請求項１７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高速ポイントツーポイントインターコネクトリンクに関する。特に、ポイントツーポイントインターコネクトアーキテクチャにおけるルーティングに関する。
【背景技術】
【０００２】
コンピュータは、進化するにつれて、単なる算術計算の領域にとどまることなく、多数のメディアアプリケーションおよび非メディアアプリケーションに対するメディアセンターにまでその機能が進んでいる。このため、コンピュータシステムには通常、多数の周辺デバイスまたは入出力デバイスが含まれている。また、半導体プロセスおよびコンピュータ設計の技術が高度化したことによって、コンピュータシステムを構成するトランジスタの数を増やすことができるようになり、各物理プロセッサの処理能力も大きくすることができるようになった。また同時に、複数の物理プロセッサが１つのシステム内に共存することができるようになった。従来であれば、このようなプロセッサおよびその他のデバイスは、コンピュータが新しい構成要素の初期化および処理を正しく実行できるように、電力をオフ状態にしてコンピュータシステムに追加されていた。
【０００３】
しかし、より近年になって、マシンのランタイム中に構成要素／デバイスをユーザが追加または削除できるような設計が登場した。このタイプの削除は、デバイス／構成要素の「ホットアッド（Ｈｏｔ  Ａｄｄ）」または「ホットリムーバル（Ｈｏｔ  Ｒｅｍｏｖａｌ）」と呼ばれることが多い。しかし、構成要素のホットアッドおよびホットリムーバルは、システムに対する物理的な追加または削除に限定されない。実際には、オペレーティングシステム（ＯＳ）設計者といったソフトウェア設計者は、ソフトウェアの観点から見たホットアッドまたはホットリムーバルをもサポートしている。つまり、ホットリムーバルされたデバイスは、物理的にはまだ存在しているとしてもよいし、電力がオフにされた状態としてもよいし、ソフトウェアには認識されない状態としてもよいし、仮想的に削除されたとしてもよいし、または、これらの状態のうち任意の状態を組み合わせるとしてもよい。
【０００４】
集積回路が進化し、処理能力が高くなった結果、デバイス間のインターコネクトもまた進化して、高性能構成要素に適切な帯域幅を実現している。インターコネクトアーキテクチャのタイプの１つに、コヒーレンシリンクベースアーキテクチャがある。具体例を挙げると、アーキテクチャに含まれる構成要素はポイントツーポイントリンクを用いて結合され得るが、デバイス／エージェントは、互いにメッセージをルーティングするノードとみなされる。
【０００５】
現時点では、このようなタイプのインターコネクトアーキテクチャにおいて、構成要素、エージェント、および／または、ノードが、「ホットアッド」または「ホットリムーバル」されると、システム全体を停止して、ホットアッドまたはホットリムーバルされたデバイスを包含または解放するべく、ルーティング情報を更新する。このように停止または休止すると通常、現在のメッセージはすべてフラッシュされてしまう。これは、新しいルーティング情報が、メッセージ、システムの停止または休止、ベーシックインプットアウトプットソフトウェア（ＢＩＯＳ）といった外部のソフトウェアまたはファームウェアによるルーティングテーブルの更新について、ルーティングエラーを引き起こしてしまう場合があるためである。想定し得ることであるが、このようにエージェントを追加または削除するために休止させると、コストが高くなってしまう可能性があり、結果としてエンドユーザにおいてスピードが遅くなってしまう恐れがある。
【図面の簡単な説明】
【０００６】
例示を目的として本発明を図示するが、本発明は添付図面に示すものに限定されるわけではない。
【図１】プロトコルアーキテクチャの実施形態を示す図である。
【図２】ポイントツーポイントインターコネクトを用いてチップセットに結合されている複数のプロセッサを備えるシステムの実施形態を示す図である。
【図３】層状入出力（Ｉ／Ｏ）スタックを用いた双方向インターコネクトアーキテクチャの実施形態を示すブロック図である。
【図４】複数のポートに対応付けられているターゲットエントリを有するテーブルを保持するためのロジックを備える複数のエージェントの実施形態を示す図である。
【図５】エージェントのホットリムーバルの実施形態を示すプロトコル図／フローチャートである。
【図６】ターゲットエージェント用のポートをディセーブルするべくリターンサイクルを実施する実施形態を示すプロトコル図／フローチャートである。
【図７】エージェントのホットアッドの実施形態を示すプロトコル／フローチャートである。
【発明を実施するための形態】
【０００７】
以下に記載する説明では、本発明を十分に理解していただくことを目的として、特定のインターコネクトアーキテクチャの例、特定のメッセージ、特定のルーティングテーブル実装例、特定のインターコネクトアーキテクチャ層といった具体的且つ詳細な内容を数多く説明する。しかし、本発明を実施する上でこのような具体的且つ詳細な内容を利用する必要は必ずしもないことは当業者には明らかであろう。また、本発明を不必要にあいまいにすることを避けるべく、特定のインターコネクト層アーキテクチャの詳細な内容／ロジック、特定の関連のないメッセージおよびプロトコル、プロセッサおよびキャッシュの特定の動作の詳細な内容等、公知の構成要素または方法は詳細な記述を省略している。
【０００８】
本明細書に記載する方法および装置は、休止なしでルーティング情報を動的に修正することを目的とする。具体的には、ルーティング情報の動的な修正は主に、説明用のキャッシュ・コヒーレント・リンク・ベース・インターコネクト・アーキテクチャを参照しつつ説明する。キャッシュ・コヒーレント・リンク・ベース・インターコネクト・アーキテクチャは、以下でより詳細に説明する。しかし、インターコネクトアーキテクチャにおいてコヒーレンシを維持することなくルーティング情報を修正するための方法および装置は、これに限定されず、任意の公知のインターコネクトアーキテクチャにおいて実装されるとしてよい。
【０００９】
＜説明用インターコネクトアーキテクチャの実施形態＞
図１は、プロトコルアーキテクチャの実施形態を示す上位の簡略図である。一実施形態によると、プロトコルアーキテクチャは、通常のトランザクションが実行されている場合と同様に要求が競合する場合に、アーキテクチャ内でキャッシュ間のデータ整合性を維持するためのものである。また、一実施形態によると、プロトコルアーキテクチャは、各要求を前進（Ｆｏｒｗａｒｄ  Ｐｒｏｇｒｅｓｓ）させるので、各要求は満足させられて、回収／完了させられる。
【００１０】
プロトコルアーキテクチャは、任意の数のノードまたはエージェントを含んでよい。一実施形態によると、ノードは、内部キャッシュメモリ、外部キャッシュメモリ、および／または、外部メモリに対応付けられているプロセッサを含む。しかし、ノードまたはエージェントは、プロセッサ、メモリコントローラハブ、Ｉ／Ｏハブ、汎用コントローラハブ、Ｉ／Ｏデバイス、Ｉ／Ｏデバイスの集合、または、メモリにアクセス可能なその他の任意のデバイス／構成要素等、インターコネクトアーキテクチャにおける任意のデバイスまたは任意のデバイスの集合を意味するとしてよい。別の実施形態によると、他の電子システム（例えば、コンピュータシステム、携帯可能デバイス）と相互接続されている電子システムをノードとする。上記以外の種類のノードの構成を利用するとしてもよい。
【００１１】
図示されているように、アーキテクチャ１００は、キャッシングノード／エージェント１０５および１０６と、ホームエージェント１１０−１１２とを備える。一実施形態によると、ホームエージェント１１０−１１２は、コヒーレントなメモリ空間の最終的なレポジトリであるメモリ位置を保護することを目的とする。つまり、エージェント１１０は、コヒーレントなメモリ空間のデータに関して、複数のオリジナル物理メモリ位置について責任を持つホームエージェントである。ホームエージェント１１０および１１２は、以下に挙げるタスクのうち任意の組み合わせを実行してよい。そのようなタスクには、キャッシングエージェント１０５および１０６についてキャッシュ状態の遷移をトラッキングすること、キャッシングエージェント１０５および１０６間でのコンフリクトを調整すること、メモリに対するインターフェースを提供すること、データおよび／または所有権を提供すること、および、このほかの任意の公知のホームエージェント関連のタスクがある。
【００１２】
一実施形態によると、キャッシングエージェント１０５および１０６は、キャッシュメモリに対応付けられているエージェントを含む。一例として、キャッシュメモリおよびキャッシングＩ／Ｏプロキシエンティティを有するプロセッサが挙げられる。キャッシングエージェント１０５および１０６は、以下に挙げるタスクおよびその他の任意のタスクのうち任意の組み合わせを実行してよい。そのようなタスクには、コヒーレントなメモリ空間に対して読み書き要求を実行すること、コヒーレントなメモリ空間からのデータのキャッシュされたコピーを保持すること、他のピアキャッシングエージェントにキャッシュされたコピーを供給すること、がある。キャッシングエージェントまたはキャッシングノードはまた、他のキャッシングエージェントに関連して、ピアエージェント／ノードとも呼ばれ得る。図１には具体的に図示されていないが、プロトコルアーキテクチャはさらに、キャッシング以外の機能を持つエージェントを備えるとしてよい。例えば、入出力（Ｉ／Ｏ）デバイスに代わってトランザクションに参加または目撃するＩ／Ｏハブをさらに備えるとしてよい。
【００１３】
一実施形態によると、キャッシングエージェント１０５および１０６、ならびにホームエージェント１１０−１１２は、データ整合性を維持すると共に、ネットワークファブリック１０１を介してメッセージを交換することによって、前進を実現する。一実施形態によると、ファブリック１０１は、ポイントツーポイントインターコネクトネットワークを介して、あるエージェント／ノードから別のエージェント／ノードへメッセージをトランスポートすることを支援する。図１は、基礎となるネットワークについてのキャッシュコヒーレントプロトコルを抽象的に示す図である。
【００１４】
一実施形態によると、インターコネクトアーキテクチャ１００は、以下に挙げる同時係属中の出願に記載されているように、新規の特徴の任意の組み合わせを組み込むものとしてよい。例えば、米国特許第６，９２２，７５６号（発明の名称：「マルチノードシステムにおけるキャッシュコヒーレンシで利用されるフォワード状態」）では、フォワードキャッシュコヒーレンシ状態（Ｆ状態）を利用することを記載している。さらに、さまざまな状況におけるコヒーレンシプロトコルの例は、特許出願第１０／８３３，９６３号（代理人整理番号Ｐ１５９２５）（出願日：２００４年４月２７日、発明の名称：「２ホップのキャッシュコヒーレンシプロトコル」）、特許出願第１０／８３３，９６５号（代理人整理番号Ｐ１８８９０）（出願日：２００４年４月２７日、発明の名称：「メッセージングプロトコル」）、特許出願第１０／８３３，９７７号（代理人整理番号Ｐ１８８９１）（出願日：２００４年４月２７日、発明の名称：「キャッシュコヒーレンシプロトコル」）、特許出願第１１／３３０，９７７号（代理人整理番号Ｐ２２３７６）（出願日：２００６年１月１１日、発明の名称：「２ホップのソーススヌープベースのキャッシュコヒーレンシプロトコル」）、特許出願第１１／３３１，３０１号（代理人整理番号Ｐ２３１０６）（出願日：２００６年１月１１日、発明の名称：「２ホップのソーススヌープベースのメッセージングプロトコル」）において記載されている。
【００１５】
他の例を挙げると、特許出願第１０／３２５，４２７号（代理人整理番号Ｐ１３９２３）（出願日：２００２年１２月１９日、発明の名称：「キャッシュコヒーレンシプロトコルに関する投機的分散型のコンフリクト解決方法」）、特許出願第１０／３２６，２３４号（代理人整理番号Ｐ１３９８４）（出願日：２００２年１２月１９日、発明の名称：「マルチプロセッサシステムにおけるキャッシュコヒーレンシ用の階層ディレクトリ」）、特許出願第１０／３２４，７１１号（代理人整理番号Ｐ１３９８５）（出願日：２００２年１２月１９日、発明の名称：「マルチプロセッサシステムにおけるキャッシュ階層の仮想階層モデル」）、特許出願第１０／３２６，２３２号（代理人整理番号Ｐ１３９８６）（出願日：２００２年１２月１９日、発明の名称：「キャッシュコヒーレンシプロトコルについての非投機的分散型のコンフリクト解決方法」）がある。
【００１６】
上述した同時係属出願に記載された特徴は、本明細書に記載する実施形態に組み込まれるとしてよいことに注意されたい。しかし、本明細書に記載する実施形態は、それに限定されるものではなく、さらなる特徴を備えるとしてもよいと共に上述した特徴のうちいずれも備えない可能性もあるとしてよい。
【００１７】
図２は、ポイントツーポイントインターコネクトアーキテクチャを用いてチップセットに結合されている複数のプロセッサを備えるシステムの実施形態を示す図である。図２に示すシステムは複数のプロセッサを備えるとしてよいが、図示の便宜上、そのうち２つのみ、つまりプロセッサ２０５および２１０が図示されている。図示されているように、プロセッサ２０５および２１０はそれぞれ、２つの処理素子２０６および２０７、ならびに、２１１および２１２を有するが、プロセッサ２０５および２１０が有する処理素子の数は任意としてよい。
【００１８】
処理素子とは、実行状態またはアーキテクチャ状態等のプロセッサの状態を保持することが可能な、スレッドユニット、プロセスユニット、コンテキスト、論理プロセッサ、ハードウェアスレッド、コア、および／または、その他の任意の素子を意味する。つまり、一実施形態によると、処理素子は、ソフトウェアスレッド、オペレーティングシステム、アプリケーション等のコードに独立して対応付けられることが可能な任意のハードウェアを意味する。一例として、物理プロセッサは通常、コアまたはハードウェアスレッド等の処理素子を任意の数だけ備え得る集積回路を意味する。
【００１９】
コアとは通常、独立したアーキテクチャ状態を維持することが可能な集積回路に設けられているロジックを意味する。ここで、独立して維持されるアーキテクチャ状態はそれぞれ、少なくとも数個の専用実行リソースと対応付けられる。ハードウェアスレッドは、コアとは対照的に、これも物理スレッドと呼ばれることがあるが、独立したアーキテクチャ状態を維持することができる集積回路に設けられている任意のロジックを意味することが多く、この場合は、独立して維持される複数のアーキテクチャ状態は実行リソースに対するアクセスを共有している。このため、明らかなことであるが、複数のソフトウェアスレッド、例えば１つのシングルスレッドアプリケーションの複数の複製を、一実施形態によると、コアまたはハードウェアスレッド等の上述した処理素子のうち任意のものの組み合わせを含み得る複数の処理素子において並行して実行することができる。
【００２０】
さらに同図から分かるように、プロセッサ２０５および２１０は、リソース２０８および２１３を有する。リソース２０８および２１３は通常、レジスタ、ユニット、ロジック、ファームウェア、メモリ、および、コードを実行するためのリソース、または他のデバイスとのインターフェースとして機能するリソースを含む。上述したように、リソースの一部は、部分的または完全に処理素子専用として構成されるとしてよく、ほかは処理素子間で共有される。例えば、比較的小型のリソース、例えば、命令ポインタおよびリネームロジックは、物理スレッドについて複製するとしてよい。一部のリソース、例えば、リオーダ／リタイアメントユニットのリオーダバッファ、命令変換索引バッファ（ＩＬＴＢ）、ロード／格納バッファ、および、待ち行列は、パーティションに基づいて共有するとしてよい。その他のリソース、例えば、汎用内部レジスタ、ページ−テーブルベースレジスタ、低レベルのデータキャッシュ、データＴＬＢ、実行ユニット、および、アウト・オブ・オーダー・ユニットは、スレッド間で完全に共有され得る。これとは対照的に、コアは専用実行リソースを有するとしてよいが、第２レベルキャッシュ（Ｌ２）等のより高レベルのキャッシュの少なくとも一部を共有する。
【００２１】
一実施形態によると、リソース２０８および２１３は、任意の数のパイプラインステージを含むプロセッサパイプラインを有する。パイプラインステージの一般的な例を挙げると、命令ポインタステージ、フェッチステージ、デコードステージ、ドライブステージ、割り当てステージ、リネームステージ、待ち行列ステージ、リオーダステージ、スケジューリングステージ、ディスパッチステージ、実行ステージ、メモリアクセスステージ、および、レジスタアクセスステージがある。ここに列挙するステージは、プロセッサパイプラインステージの一例であって全てを網羅したものではないことに留意されたく、プロセッサ１００は任意の公知のパイプラインステージを含むとしてよい。
【００２２】
プロセッサ２０５および２１０はそれぞれさらに、メモリ２０９および２１４に対するインターフェースとして機能するメモリコントローラまたはローカルメモリコントローラハブ（ＭＣＨ）を有してよい。メモリ２０９および２１４は、ランダムアクセスメモリ（ＲＡＭ）、キャッシュメモリ、フラッシュメモリ、または、その他のメモリデバイス等、任意のメモリデバイスを含む。一実施形態によると、メモリ２１４がより高いレベルのキャッシュメモリを有して、リソース２１３が低いレベルのキャッシュメモリを有する。別の実施形態によると、メモリ２０９はプロセッサ２０５に対応付けられたダイナミックランダムアクセスメモリ（ＤＲＡＭ）を有し、プロセッサ２０５はＤＲＡＭ２０９からのデータをキャッシュするキャッシュメモリを有する。これは実施形態例であることに留意されたく、メモリ２０９および２１４は任意のタイプのメモリデバイスを含み得る。
【００２３】
メモリ２０９および２１４が、プロセッサ２０５および２１０内に設けられているキャッシュメモリ、または、図示されている例のように、プロセッサ２０５および２１０に対して外部に設けられているキャッシュメモリを含む一実施形態によると、プロセッサ２０５および２１０は、ピアキャッシングノードと同様にホームノードにもなり得る。例えば、トランザクションがメモリ２０９内のメモリ位置を参照している場合、メモリ２０９の担当であるエージェント、つまりプロセッサ２０５が、当該トランザクションおよび当該メモリ位置に対してホームエージェントと決定される。同様に、あるトランザクションが別のメモリ位置、例えばメモリ２１４内の位置を参照している場合、プロセッサ２０５はピアキャッシングエージェントと決定される。
【００２４】
図から分かるように、ポイントツーポイントリンク２２０−２２４は、ポイントツーポイント形式で構成要素同士を結合させる。一実施形態によると、物理リンク２２０−２２４はそれぞれ、双方向差動信号方式用インターコネクト、例えば図３を参照しつつ後述する物理層に対応付けられている物理リンクを含む。この結果、プロセッサ２０５および２１０ならびにチップセット２３０は、互いに直接通信することができる。
【００２５】
チップセット２３０は通常、例えば入出力（Ｉ／Ｏ）ハブに接合されているメモリコントローラハブ等、複数の集積回路に与えられる一般的な総称である。しかし、各エージェントがメモリに対するインターフェースとして機能するメモリコントローラハブのバージョンを１つ有している一実施形態では、チップセット２３０とはＩ／Ｏハブまたはその他のコントローラハブを意味する。一実施形態によると、チップセット２３０は、上述したように、トランザクションに参加または目撃するキャッシングを行わないエージェントである。しかし、チップセット２３０はこれに限定されず、他の実施形態と同様に、チップセット２３０は、キャッシュメモリを有するキャッシングエージェント、および／または、データ用のオリジナルメモリ位置レポジトリを有するメモリを含むホームエージェントである。
【００２６】
図示されているように、チップセット２３０はさらに、複数のインターコネクトデバイスおよびＩ／Ｏデバイスに対してインターフェースとして機能する。インターコネクトデバイスおよびＩ／Ｏデバイスの例を挙げると、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）またはＰＣＩエクスプレス（ＰＣＩ−Ｅ）デバイス２６１、インテグレーテッドデバイスエレクトロニクス（ＩＤＥ）またはアドバンスドトランスファーアタッチメント（ＡＴＡ）デバイス２６２、ユニバーサルシリアルバス（ＵＳＢ）デバイス２６３、ローカルエリアネットワーク（ＬＡＮ）またはワイヤレスＬＡＮ（ＷＬＡＮ）デバイス２６４、オーディオデバイス２６５、および、本明細書に記載するＩ／Ｏデバイスを接合するための別のインターコネクトアーキテクチャをさらに有するその他のＩ／Ｏデバイス２６６等がある。
【００２７】
図３は、積層型インターコネクトスタックを用いている双方向インターコネクトアーキテクチャの実施形態を示すブロック図である。物理層３０２等の図３の層は、物理層３０２ａおよび物理層３０２ｂのように、複数の異なるエージェントによって実装され得る一の一般的な層を含む。図示されているように、インターコネクトスタックは５つの層に分割されており、そのうち１以上の層は設計実装に応じて任意で設けるとしてよい。例えば、一実施形態によると、ルーティング層３０４はリンク層３０３の機能に埋め込まれるので、一実施形態によると、ルーティング層は独立した識別可能な層ではない。
【００２８】
一実施形態によると、物理層３０２は、物理媒体における情報の電気的な転送を担当する。例えば、リンク層エンティティ３０３ａと３０３ｂとの間で、物理ポイントツーポイントリンクを用いる。説明用の例を挙げると、物理リンクは、双方向差動信号対３５１および３５２を含む差動信号方式を含む。ここで、物理層は、電気サブブロックと論理サブブロックとに論理的に分割される可能性があり、このようにして物理層は、スタックの残りの部分を情報の電気的転送から切り離し、リンク層３０３と通信する。
【００２９】
一実施形態によると、リンク層３０３は、スタックの上方の層から物理層３０２を抽象化して、接続されたエージェント／エンティティ間での信頼性の高いデータ転送およびフロー制御、ならびに、物理チャネル／インターフェースを仮想化して複数の仮想チャネルおよびメッセージクラスを取得すること等、リンク関連のサービスを提供する。ここで、仮想チャネルは、スタックの上方の層によって用いられる複数の仮想ネットワークと見なされてもよい。例えば、プロトコル層３０６は、リンク層３０３が提供する抽象化に基づいて、プロトコルメッセージをメッセージクラス、および１以上の仮想チャネルにマッピングし得る。
【００３０】
一実施形態によると、ルーティング層３０４は、ソースからデスティネーションまでパケットをルーティングするための柔軟性の高い方法を提供する。上述したように、非常に単純なトポロジーでは、ルーティング層３０４は、明示的ではなく、リンク層３０３の機能に組み込まれるとしてよい。例えば、ルーティング層３０４は、リンク層３０３の抽象化に基づいて、パケットをルーティングするための＜ポート、仮想ネットワーク＞対を特定してよい。
【００３１】
一実施形態によると、ルーティング層３０４、またはルーティング層３０４の機能を介してルーティング層３０４に対応付けられているロジックは、ルーティングテーブル等のルーティング情報を保持する。具体例を挙げると、ルーティングテーブルは、インターコネクトアーキテクチャの各ターゲットのエントリを含むとしてよい。ここで、エントリは、ターゲットエージェントに対応付けられているパケットをルーティングするための１または複数のポート等、任意の種類の情報を保持するとしてよい。ルーティングテーブルと対応する情報はより詳細に後述する。
【００３２】
一実施形態によると、トランスポート層３０５は、エンドツーエンドの信頼性の高い送信サービスを提供する。ルーティング層３０４と同様に、トランスポート層３０５も、設計実装によっては任意で設けられる。一例を挙げると、トランスポート層３０５は、ルーティング層３０４のサービスに基づいて、プロトコル層３０６に対して信頼性の高い送信サポートを提供する。一実施形態によると、インターコネクトアーキテクチャ内において、構成要素のサブ群はトランスポート層３０５を含む。このため、この構成要素のサブ群は、トランスポート層３０５に関するパケットのサブフィールドを定義し、その他の構成要素はこれらのサブフィールドを定義しない可能性がある。
【００３３】
一実施形態によると、プロトコル層３０６は、キャッシュコヒーレンス、オーダリング、ピアツーピア通信、割り込みドライバ等、ノード／エージェント間でのより高いレベルの通信プロトコルを実装する。つまり、プロトコル層３０６は、ホームノード、ピアノード、キャッシングノード、およびキャッシングを行わないノード等のノードまたはエージェントに対して、許可されるメッセージ、要求、応答、位相、コヒーレンス状態等を定義する。メッセージの例、例えばホームノードメッセージ、スヌープメッセージ、応答メッセージ等を以下に説明する。
【００３４】
層および対応付けられているロジックはどのように結合させるとしてもよいことに留意されたい。例えば、プロトコルロジックは物理層、つまり送信ロジックまたは受信ロジックに結合されるとも言える。ここで、図３から分かるように、一実施形態によると、プロトコルロジックは物理層ロジックに直接結合されなくてもよく、他の層のロジックを介して結合されるとしてもよい。また、一実施形態によると、インターコネクトスタックは、適切なキャッシュコヒーレンス動作を開始するべく、キャッシュ制御ロジックまたはキャッシュメモリロジックのような内部構成要素ロジックに結合される。
【００３５】
＜ＭＥＳＩＦプロトコルの実施形態の概要＞
一実施形態によると、基本的な、修正、排他、共有、無効、フォワード（Ｍｏｄｉｆｉｅｄ  Ｅｘｃｌｕｓｉｖｅ  Ｓｈａｒｅｄ  Ｉｎｖａｌｉｄ  Ｆｏｒｗａｒｄ：ＭＥＳＩＦ）プロトコルは、単一の直列化バスの制約を受けることなく、スヌーププロトコルと同様のプロトコルを提供する。スヌープキャッシュプロトコルと同様に、ＭＥＳＩＦは、キャッシュされたデータのコピーを持つノードに基づいてコヒーレンスを維持する。同期が取られた集中型ブロードキャストではなくポイントツーポイントリンクを用いることによって、タイムワープの問題、つまり、イベントが、複数の異なるノードの観点とは異なる順序で発生するように見えるという問題が生じる。一例を挙げると、ＭＥＳＩＦプロトコルは、タイムワープによって生じ得るエラーを認識することによってタイムワープの問題に対処して、この問題に対してプロトコルまたはソフトウェアによるソリューションを提供する。
【００３６】
ホームノードは通常、データのキャッシュされていないコピーと対応付けられる。このため、ホームノードは、当該ホームノードに対応付けられたデータに関連するトランザクションに参加するとしてよい。しかし、ホームノードは、トランザクションに対応付けられた「クリティカルパス」に含まれる必要はなく、むしろホームノードは、コンフリクトまたはタイムワープの問題を解決するべくトランザクションに介入するとしてよい。一実施形態によると、ＭＥＳＩＦは、本質的に同時にブロードキャストが発生するので、スヌーププロトコルに対応付けられている低レイテンシを実現しつつ、ある場合には、可能な限り小さいレイテンシで、つまり、要求−応答の往復が一回行われ、データのキャッシュ可能なコピーを取得する。
【００３７】
一実施形態によると、ＭＥＳＩＦプロトコルに関連する基本的なトランザクションは、ホームノードおよび全てのピアノードに最初の要求をブロードキャストすることを含む。コピーが、Ｅ、ＦまたはＭコヒーレンシ状態でキャッシュされていれば、応答に含まれる。そして第２のメッセージがホームノードに送られて、要求が満足させられたことを知らせる。要求されたラインがキャッシュされていない場合、または、Ｓ状態のコピーのみが存在する場合、ホームノードに送られる第２の要求は、先行する要求を確認するために用いる。先行する要求は、この時点までに、ホームノードが対応するメモリからフェッチしてきているとしてよい。どちらの場合でも、ホームノードは、同期およびコンフリクト解決を目的として、第２の要求（および、第１の要求にも応答し得る。しかし、組み合わせる場合もある）に応答する。ホームノードは１以上のキャッシュを有するとしてよく、このため、その他の任意のノードとまったく同様に最初の要求に応答するとしてよいことに留意されたい。
【００３８】
一実施形態によると、コンフリクトは分散させることによって処理される。タイムワープの問題によって、個々の要求は任意に決められる長期間にわたって遅延されるので、コンフリクトを検出することが難しくなる。しかし、要求を行った後で各ノードがコンフリクトについて監視していれば、コンフリクトが検出される。複数のノードがコンフリクトを検出し得るが、一例を挙げると、複数のノードのうち少なくとも１つがコンフリクトを検出する。このため、一実施形態によると、ノードからの応答はコンフリクト情報を含んでいる場合がある。
【００３９】
一実施形態によると、応答からデータのコピーを受信するノードは、受信直後からデータを内部で利用することができるが、確認を受信するまでは、データの利用をシステムのほかの構成要素に対して可視状態、つまり、グローバルに可視状態にはしない。確認はさらに、要求元のノードはコピーを別のノードに転送しなければならない、という命令を含むとしてよく、当該ノードを自身のキャッシュから離脱させるとしてよい。
【００４０】
最終的に、あるノードは、キャッシュされたデータを供給することによって別のノードからの要求に応答すると、一実施形態では、ホームノードから、当該ノードがデータを転送したという事実を認める応答を受信するまで、同じキャッシュラインについて受信するほかの要求を保留する。このため、確実に全てのノードが（おそらく書き込み可能な）キャッシュラインの同じ転送順序を観察することになる。
【００４１】
上述したように、ホームノードは、キャッシュされていないデータのレポジトリであるが、プロセッサおよびキャッシュを備えるとしてよい。ここで、ホームノードのプロセッサでキャッシュミスが発生すると、ホームノードは、他の全ての（ピア）ノードに対して要求をブロードキャストして、ホームノードに到達する任意のその他の要求と同様に、内部で要求を処理する。尚、これは特別な場合であって、ホームノードは自身に（ホームノード）メッセージを明示的に送信しない。さらに、ローカルにキャッシュされているデータに対して外部から要求が届くと、ホームノードは適切に応答する。
【００４２】
開示されているメッセージプロトコルでは、コヒーレンス（キャッシュおよびホーム）エージェント、非キャッシングエージェント、およびその他のエージェント（メモリコントローラ、プロセッサ等）の間で許可されるメッセージの一群を定義する。コヒーレンスプロトコルは、アルゴリズムにおいて単語および文法としてメッセージを利用して、コヒーレンスの思想を表現する。このアルゴリズムは、キャッシングエージェント間の相互作用について、理に適った方法で要求を指示し、コンフリクトを解決し、さらに記載している。しかし、ＭＥＳＩＦプロトコルを先に説明したが、ＭＥＳＩＦキャッシュコヒーレンスプロトコルは利用が求められない。例えば、フォワード状態は利用されないとしてもよく、この結果、公知のＭＥＳＩプロトコルが利用されることになる。さらに、上述の説明はＭＥＳＩＦプロトコルについての実施形態例の概要を含むものであることに留意されたい。このため、上述したさまざまな構成要素は、別の実施形態では異なる構成としてもよい。メッセージングおよび・またはコヒーレンスプロトコルで利用されるメッセージの一例のリストを以下で説明するが、以下の記載内容は全てを網羅しているわけではない。
【００４３】
図４は、複数のポートに対応付けられているターゲットエントリを持つテーブルを保持するロジックを備える複数のエージェントの実施形態を示す図である。上述したように、エージェント４１０、４２０、４３０、４４０、４５０および４６０（４１０−４６０）は、ノードとも呼ばれるが、プロセッサ、コントローラハブ、Ｉ／Ｏデバイス、またはその他の任意の公知のエージェント／ノード等、どのようなスタイルのエージェントまたはノードであってもよい。
【００４４】
一実施形態によると、エージェント４１０−４６０は、リンクベースのコヒーレンスインターコネクトアーキテクチャに含まれている。図示されているように、エージェント４１０−４６０は、ポイントツーポイント形式で互いに結合されており、エージェント４１０は、エージェント４５０宛てのメッセージをポート４１１からエージェント４２０に送信し、エージェント４２０は当該メッセージをポート４２１で受信して、ポート４２２を介してエージェント４５０に当該メッセージをルーティングする。以下で説明するが、エージェント４５０までの経路は、エージェント４６０、４４０を介して、４２０から４５０へと向かう経路等、他にも複数存在してよい。ルーティング情報を動的に修正する方法は主に、ポイントツーポイントリンクアーキテクチャを参照しつつ説明するが、本明細書に記載する方法および装置はこれに限定されない。
【００４５】
さらに、一実施形態によると、エージェント４１０−４６０の少なくとも一部は、上述したインターコネクトスタックと同様のインターコネクトスタックを実装する。尚、インターコネクトスタックの層がロジックで実装されている一部の実施形態によると、層の境界は明確に定義されておらず、部分的に重複している可能性がある。例えば、上述したように、ルーティング層ロジックは、リンク層ロジック内またはリンク層ロジックと部分的に重複して実装され得る。
【００４６】
一実施形態によると、エージェント４１０−４６０のそれぞれは、ロジック４１５、４２５、４３５、４４５および４４５といった、ルーティング情報を保持するロジックを備える。例えば、ロジック４１５は、エージェント４１０のルーティングテーブル４１６を保持する。メッセージは、パケットの形式であってよいが、送信される場合、通常なんらかのターゲット、デスティネーション、またはその他の識別子（ＩＤ）を参照している。このため、一の実施形態によると、ルーティングテーブル４１６は、エントリ４１６ａ−４１６ｅのような複数のエントリを含み、これらのエントリは複数のデスティネーションエージェント／ノードまたはターゲットエージェント／ノード、つまりエージェント４２０−４６０と対応付けられている。ここで、複数のエントリ４１６ａ−４１６ｅは、ターゲットＩＤまたはデスティネーションＩＤを参照しているパケット／メッセージについてルーティング情報を提供する。
【００４７】
例えば、エージェント４１０が、エージェント４５０に対応付けられているターゲットＩＤを参照しているパケットを、エージェント４３０から受信すると仮定する。一実施形態によると、テーブル４１６は、ターゲットエージェントのターゲットＩＤ、または、ターゲットＩＤを何らかの形式で表現したものを用いて、索引が付されている。こうして、エージェント４５０のエントリが決定されて、当該パケットをルーティングするポートを、対応付けられたポートのリストから決定する。ここで、パケットをポート４１１にルーティングされると決定する。同様に、エージェント４２０が当該メッセージを受信すると、ルーティングロジック４２５に基づいてパケットを、エージェント４５０に対するポート４２２にルーティングする。以前であれば、各ターゲットエージェントは、エージェント４４０に対するポート４１１のように、ルーティング用にただ１つのポートに対応付けられていた。しかし、エージェント４２０がシステムからリムーバルされると、休止状態を利用して、エージェント４４０用のポートを４１１から４１３または４１２に更新していた。このため、ＢＩＯＳまたはその他のソフトウェアによる更新プロセスには長時間かかると共にコストが高くなってしまう可能性がある。
【００４８】
このため、一実施形態によると、ターゲットエントリは複数のポートに対応付けられており、優先順位が定められている。つまり、ターゲットエージェントに対するルーティングエントリは、ターゲットエージェントに対するルーティングに関して、ある１つのエージェントが有する複数の利用可能なポート内での優先度を指定するとしてよい。尚、優先度は任意の複数の要素に基づいて決まるとしてよく、例えば、ポートがイネーブル（Ｅ）／ディセーブル（Ｄ）されているか否か、ポートに対応付けられているターゲットエージェントまでの送信時間、ポートからターゲットエージェントまでのホップまたは中間エージェント／ノードの数、ポートでルーティングされて失われたパケットの数、またはその他の任意の公知のルーティング優先度の要素に基づいて決まるとしてよい。さらに、優先度はどのような方法で示されるとしてもよく、例えば、どのポートが優先されるかを表現するビット符号化であってもよいし、または、実装例に応じて、先に挙げられたポートほど優先順位が高いまたは低くなっている単純に順番が付されたリストであってもよい。
【００４９】
一例を挙げると、エージェント４２０は、エントリ４１６ａにおいて、エージェント４１０の３つのポート４１１−４１３全てと対応付けられている。ここで、優先度リストを用いてこれらのポートに順位を付ける。つまり、ポート４１１は、ポート４１２よりもリスト内で先に挙げられていることから分かるように、ポート４１２よりも優先度が高い。さらに、ポート４１２は、エントリ４１６ａについて、ポート４１３よりも優先度が高い。しかし、エントリが異なると、重要度／優先度が異なる場合がある。例えば、エントリ４１６ｅでは、ポート４１３の優先度が最も高くなっている。このため、一実施形態によると、エージェント４１０が受信したメッセージがエージェント４２０にルーティングされるべき場合、メッセージは、エントリ４１６ａにおけるポートの優先順位に基づいて、「優先度の高い」ポート、つまり優先度が最も高いポート４１１にルーティングされる。
【００５０】
さらに、一実施形態によると、複数のポートはさらに、イネーブルフィールドに対応付けられている。例えば、エージェント４３０のロジック４３５はルートテーブル４３６を保持する。ルートテーブル４３６はエントリ４３６ａ−４３６ｅを含む。各エントリ、例えばエントリ４３６ａは、エージェント４３０の複数のポートの複数のイネーブル／ディセーブルフィールドと対応付けられている、ターゲット識別子、つまりエージェント４１０またはエージェント４１０の表現を保持する。ここで、エントリ４３６ａによると、ポート４３１がターゲットエージェント４１０に対して優先度が最も高く、ポート４３３はイネーブルされており、ポート４３２がディセーブルされている。尚、ポート４３２は、他のエージェント／ノードには接続されていないので、ディセーブルされている。
【００５１】
一実施形態によると、イネーブル／ディセーブルフィールドは、エージェント４３０の複数のポートに対応付けられているビットベクトルを含む。ビットが設定されていれば、対応するポートがイネーブルされていることを表し、ビットがクリアされていれば対応するポートはディセーブルされていることを表す。図示されているように、ビットベクトルは、各エントリにおいてイネーブルフィールドと個々のポートとを対応付けるように、ポートＩＤと並べられているとしてもよい。このため、イネーブルフィールドをイネーブル値またはディセーブル値に更新することはそれぞれ、ビットを設定すること、または、ビットをクリアすることを含む。しかし、「更新」という用語を用いるからといって必ずしも状態または値を変更することを含むわけではない。例えば、ポートが既にエントリにおいてディセーブルされている場合、当該エントリの当該ポートをディセーブル値に更新することは、ビットは既にクリアされているので、何も実行しないことを含むとしてよい。また、イネーブルフィールドは、ビットを設定またはクリアする構成に限定されない。一実施形態によると、ポートまたはその他のロジックをイネーブルまたはディセーブルするための任意の公知のハードウェアまたはロジック実装を利用するとしてよい。
【００５２】
ポートのディセーブルは、多くの理由に起因して発生するとしてよい。例えば、図４に示すように、ポート４３２は、物理的に接続されていないので、つまりポート４３２にエージェントまたはデバイスが結合されていないので、ディセーブルされる。しかし、一実施形態によると、ポートはさらに、ポートディセーブルメッセージを受信することに応じて、ディセーブルされる。別の実施形態によると、ポートは、リターンサイクルメッセージを受信することに応じてディセーブルされる。ポートディセーブルメッセージングおよびリターンサイクルメッセージングについては、それぞれ図５および図７を参照しつつより詳細に後述する。このため、具体的には図示していないが、ポートはあるターゲットエージェントのルーティングエントリにおいてイネーブルされて、別のターゲットエージェントの別のルーティングエントリではディセーブルされることもある。
【００５３】
図５は、エージェントのホットリムーバルの実施形態を説明するためのプロトコル図／ブロック図である。尚、図５から図７は、図４のインターコネクトアーキテクチャに含まれるエージェントサブ群のエージェント間のプロトコルを示すことに注意されたい。さらに、図５から図７は、プロトコルフローの具体的な実施形態を、略連続的に、具体的なメッセージ例を用いて示す。しかし、メッセージは異なる順序で生成／送信されるとしてもよく、上述したように、インターコネクトアーキテクチャではタイムワープが生じる場合があるので、メッセージはまったく異なる順序で受信されるとしてもよい。さらに、説明されるメッセージ、フロー、およびブロックは、連続して実行されるとしてもよいし、並行して実行されるとしてもよい。
【００５４】
ブロック４０５において、エージェント４３０に関するホットリムーバルイベントが検出される。一実施形態によると、ホットリムーバルイベントは、システムからエージェントまたはデバイスを物理的にリムーバルすることを含む。例えば、エージェント４３０がＵＳＢストレージキーを含む場合、ストレージキーをシステムから抜き取る（アンプラグする）としてよい。このようなホットアンプラグは通常、２つの方法のうちいずれかの方法で発生する。オペレーティングシステムでは通常、これら２つの方法を、安全な取り出しおよび危険な取り出しと呼ぶ。安全な取り出しの場合、ソフトウェアは取り出しについて通知される。つまり、ユーザはデバイスの取り出しを選択して、ソフトウェアが当該デバイスの抽象化をリムーバルすると、当該デバイスは安全にリムーバルされる。その他の場合では、物理的にリムーバルされて、ソフトウェアによる当該デバイスの除去は後に回される。このため、ホットリムーバルイベントは、ソフトウェア関連イベントまたは物理リムーバルイベントを含むとしてよい。インターコネクトスタックを用いたコヒーレントアーキテクチャにおけるソフトウェア関連イベントの一例を挙げると、アプリケーション層のような高レベル層は、スタックを通して、ソフトウェア関連イベントを下方に送信して、ホットリムーバルイベントを指し示すとしてよい。
【００５５】
しかし、エージェントの物理的なリムーバルは、デバイスのホットリムーバルの唯一の方法ではないとしてよい。実際、一実施形態によると、エージェントのホットリムーバルは、ハードウェア、ソフトウェア、ファームウェアまたはこれらの組み合わせを利用することによって、デバイスのリムーバル、デバイスのディセーブル、デバイスの電源オフ、またはシステムのその他の構成要素からデバイスを単に隠すことを含む。このため、第１の例として、エージェントが低電力状態に入りたい場合にホットリムーバルが発生する場合を考える。尚、設計実装によって、エージェントのホットリムーバルはどのように定義されるとしてもよく、上述した例のように定義してもよいし、または、システムまたはＯＳの観点から見てデバイスを除去するその他の公知の方法に従って定義されるとしてよい。
【００５６】
ホットリムーバルイベント５０５を検出することに応じて、エージェント４３０はディセーブルポートメッセージ（Ｄｉｓ）４５１を生成する。ディセーブルポートメッセージは、受信するエージェントに対して、あるポートをディセーブルすべきことを示す任意のメッセージを含む。一実施形態によると、当該メッセージは、どのポートをディセーブルすべきか指し示すポート識別子を含む。これに代えて、当該メッセージは単に、ポートをディセーブルすべきことを示して、受信エージェントが当該メッセージを受信したポートがディセーブルすべきポートである。
【００５７】
一実施形態によると、当該メッセージは、プロトコル層に対応付けられているプロトコルロジック等のロジックを用いて生成される。ここで、ルールは、定義されたリムーバルイベントの検出に応じてメッセージ４５１を生成するように、特定する。一実施形態によると、ディセーブルポートメッセージ４５１は、隣接するエージェント４１０および４４０に送信される。一例を挙げると、インターコネクトスタックにおいて、生成後、メッセージ送信のために、メッセージは物理層ロジック等のロジックを用いて送信される。
【００５８】
図４を参照すると、エージェント４３０のロジック４３５に保持されているテーブル４３６のエントリ４３６ａは、ターゲットエージェント４１０にルーティングされるべきメッセージは、ターゲットエージェント４１０について優先度が最も高いポート、つまりポート４３１に転送されるのが好ましいことを指し示している。同様に、エントリ４３６ｃは、エージェント４４０に送信すべきメッセージはポート４３３に転送すべきであることを指し示している。ここで、エージェント４１０および４４０はそれぞれ、ポート４１２および４４２でディセーブルポートメッセージ４５１を受信する。
【００５９】
一実施形態によると、エージェント４３０は、ディセーブルポートメッセージ４５１の転送元のポート、つまりポート４３１および４３３を即座にディセーブルする。これに代えて、図示されている例では、エージェント４３０は、ディセーブルポートメッセージに対応付けられている完了メッセージを待って、対応するポートをディセーブルする。このように、本実施形態では、エージェント４３０は、ディセーブルポートメッセージの送信後且つ完了メッセージの受信前にメッセージを受信すると、イネーブルされたポートでメッセージのルーティングを継続する。例えば、エージェント４１０は、エージェント４３０にエージェント４４０宛てのメッセージ（ＭＳＧ）を転送する。エージェント４３０は、ポート４３３をディセーブルするための完了４５３を受信していないので、エージェント４４０宛ての当該メッセージをポート４３３から転送する。
【００６０】
さらに、一実施形態によると、ディセーブルポートメッセージの受信、完了の送信、または、これらの組み合わせを実行することによって、エージェントはポートを介して待機サイクルをフラッシュする。例えば、エージェント４１０は、エージェント４３０に転送するべく、Ｍｓｇ１、Ｍｓｇ２、およびＭｓｇ３を待ち行列に入れている。ここで、エージェント４１０は、ディセーブルポートメッセージ４５１を受信すると、待ち行列からこれらのメッセージをエージェント４３０に対してフラッシュする。尚、ポート４１２を介したサイクルのフラッシュは、図示されているように、ポート４１２のディセーブルおよび完了の送信の前に実行されるが、サイクルのフラッシュはどのような順序で行われるとしてもよい。
【００６１】
エージェント４１０および４４０はそれぞれ、ポート４１２および４４２においてディセーブルポートメッセージを受信することに応じて、ポート４１２および４４２をディセーブルする。つまり、エージェント４１０は、ポート４１２でディセーブルポートメッセージを受信するので、ポート４１２をディセーブルする。一実施形態によると、ポート４１２をディセーブルすることは、ルーティングテーブル４１６の各エントリにおいてポート４１２をディセーブルすることを含む。例えば、図４に戻って説明すると、ポート４１２はエントリ４１６ａ−４１６ｅ全てにおいてディセーブルされている。別の実施形態によると、ポート４１２は、ディセーブルポートメッセージを生成したソースエージェントに対応するエントリでのみディセーブルされる。ポート４４２は、エージェント４４０のルーティングロジック４４５において同様にディセーブルされる。別の実施形態によると、エージェント４３０は、ディセーブルポートメッセージの受信に応じて、テーブル４１６の参加者リストから除外される。
【００６２】
エージェント４１０および４４０はそれぞれ、完了メッセージ（Ｃｍｐ）４５２および４５３を生成してエージェント４３０に送信する。エージェント４３０は、ポート４３３においてエージェント４４０から完了メッセージ４５３を受信することに応じて、ポート４３３をディセーブルする。一実施形態によると、図４に図示するように、エージェント４４０からの完了４５３のような完了メッセージに応じて、テーブル４３６の各エントリにおいてポート４３３をディセーブルする。つまり、エントリ４３６ａ−４３６ｅにおいてポート４３３をディセーブルする。ポート４３１を、テーブル４３６において同様にディセーブルする。つまり、図示されているように、ポート４３１をルーティングテーブル４３６のエントリ４３６ａ−４３６ｅそれぞれにおいてディセーブルする。
【００６３】
一実施形態によると、全てのポートをディセーブルすること、つまり、全ての完了を受信することに応じて、デバイスはリムーバルされる。上述したように、リムーバルはさまざまな処理、例えば、ソフトウェアからのリムーバル、ハードウェアからのリムーバル、電源オフ、またはその他のリムーバル処理を含むことに留意されたい。
【００６４】
図６は、リターンサイクルの実施形態を示すプロトコル図／ブロック図である。一実施形態によると、ディセーブルポートメッセージが隣接するノードに送信され、他のノードは通常の実行サイクルによって、エージェントおよび／またはエージェントにルーティングするためのポートをディセーブルすることを知る。つまり、ディセーブルポートメッセージは、ホットリムーバルされたデバイスの隣接ノードのポートをディセーブルする。以下で説明するように、このメッセージを受信したポートは、隣接するノードのルーティングロジックにおいてディセーブルされる。通常のトラフィックはリターンサイクルとなる。リターンサイクルは、後述するが、ホットリムーバルされたデバイスに対応付けられているほかの構成要素におけるポートを最終的にディセーブルする。このため、通常のトラフィックおよびリターンサイクルのやり取りに加えて、ディセーブルポートメッセージに基づいて、インターコネクトアーキテクチャは、ホットリムーバルの後、ルーティング情報を安定化させる。
【００６５】
一例を挙げると、エージェント４５０がエージェント４３０宛てのメッセージを生成して送信する。ノード４５０のルーティングロジック４５５に基づいて、当該メッセージはポート４５１を介してエージェント４２０にルーティングされる。エージェント４２０のルーティングテーブル４２５に基づいて、当該メッセージはさらにポート４２１を介してエージェント４１０にルーティングされる。ここで、一実施形態によると、ポートディセーブルメッセージに応じて、エージェント４１０はポート４１２をディセーブルした。しかし、現在の優先度リストによると、ノード４１３および４１１はエージェント４３０についてイネーブルされている。このため、エージェント４１０はこれらのポートを介してエージェント４３０へルーティングしようと試みるとしてよい。しかし、以下に詳述するように、リターンサイクルフローは最終的に、エージェント４１０のルーティングロジック４１５内の、エージェント４３０用のポートを全てディセーブルにすべきである。上述したほかの実施形態によると、エージェント４３０は即座にテーブル４１６の参加者リストから除外される。
【００６６】
どちらにしても、エージェント４３０がルーティングロジック４１５においてディセーブルされている場合に、つまり、エージェント４３０のエントリにおいてどのポートもイネーブルされていない、または、エージェント４３０のエントリが存在しない場合に、メッセージは最終的にエージェント４１０に到達する。ここで、一実施形態によると、エージェント４１０は、ルーティングロジック４１５においてエージェント４３０がディセーブルされているためにメッセージを転送できないと、リターンサイクルを生成して実行する。一実施形態によると、リターンサイクルメッセージは、元々のメッセージを含み、あるフィールドまたはその他のフラグがリターンサイクルであることを特定するべく設定されている。しかし、他の実施形態によると、メッセージが転送できなかったことを指し示す方法であればどのような方法を用いてリターンサイクルを生成するとしてもよい。第１の例を挙げると、リターンサイクルはメッセージの元々のソース、例えばエージェント４５０に戻される。別の例を挙げると、リターンサイクルは、送信経路における現在のノードの前の送信ノードに戻される。
【００６７】
ここでは、リターンサイクルメッセージはエージェント４２０に戻される。一実施形態によると、リターンサイクルメッセージがポート４２１で受信されると、ポート４２１はエージェント４２０のロジック４２５においてエージェント４３０についてディセーブルされる。一例を挙げると、ポート４２１をディセーブルすることに加えて、エージェント４２０は当該メッセージを、エージェント４３０に対する別のイネーブルされたポート、例えば、エージェント４４０、エージェント４６０（ポート４４２はエージェント４４０においてディセーブルされているので）を介してエージェント４１０に再びルーティングするポート４２３から、ルーティングし直すことを試みるとしてよい。エージェント４１０は同様のリターンサイクルメッセージを与えて、当該リターンサイクルメッセージは、エージェント４６０、エージェント４４０およびエージェント４２０に戻る経路を戻って、エージェント４３０用のポートをディセーブルする。メッセージがエージェント４２０に戻ると、エージェント４３０宛てのメッセージに対するリターンサイクルはポート４２３で受信されたので、ポート４２３はルーティングロジック４２５においてエージェント４３０についてリムーバルされる。ここで、一実施形態によると、ロジック４２５においてエージェント４３０に対するポートが全てディセーブルされると、エージェント４３０はテーブル４１６の参加者リストから除外されたと言える。ルーティングテーブルからエージェントを除外することは、エントリを削除することを含むとしてよい。しかし、別の実施形態によると、エントリを除外することは、エントリに対応付けられたポートを全てディセーブルにすることを含む。
【００６８】
図から分かるように、エージェント４２０は、エージェント４３０がシステムからリムーバルされたことを即座には認識しない場合もあるが、メッセージのルーティングを試みることによって、エージェント４３０がリムーバルされたことを知る。つまり、エージェント４２０のルーティングテーブル４２５は、通常のトラフィックのルーティングによって、エージェント４３０がリムーバルされたことを知る。ここで、サイクルがあるところから先に進まなくなると、ルーティングロジック４２５は、通常サイクルから戻されたメッセージを受信することによって、エージェント４３０に到達不可能であることを認識できる。同様に、上述した一実施形態によると、エージェント４１０がディセーブルするポートはディセーブルメッセージが受信されたポートのみとしてよく、後に、リターンサイクルプロトコルによってエージェント４３０についてイネーブルされたその他のポートをディセーブルして、参加者リストからエージェント４３０を実質的にリムーバルするとしてよい。
【００６９】
また、リターンサイクルメッセージは、エージェント４２０でそれ以上先に進まなくなると、つまりロジック４２５でエージェント４３０について全てのポートがディセーブルされていると、エージェント４５０に戻される。ここで、エージェント４５０は、ロジック４５５においてエージェント４３０に対するポート４５１をディセーブルする。このため、時間が経過すると、インターコネクトアーキテクチャは、ポートのディセーブルを参照して、あるエージェントがリムーバルされたこと、または、少なくとも、あるエージェントに到達できないことを知る。
【００７０】
図６を参照しつつ隣接するエージェントに送信されるディセーブルポートメッセージを利用するホットリムーバルを説明しているが、ディセーブルメッセージまたはディセーブルポートメッセージはこれに限定されない。一例を挙げると、一実施形態では、ディセーブルメッセージはシステム全体またはインターコネクトアーキテクチャ全体にブロードキャストされる。この場合、各構成要素は、このディセーブルメッセージをブロードキャスト／転送して、ホットリムーバルされるデバイスに対応付けられているルーティングロジックを更新する。尚、ルーティングロジックの更新は上述した方法と同様の方法、例えば、ルーティングロジックの参加者リストからホットリムーバルされたエージェントを除外する方法、および／または、ルーティングロジックにおいてホットリムーバルされたエージェントに対応付けられているポートを全てディセーブルする方法に従って行うとしてよい。
【００７１】
図７は、エージェントのホットアッドの実施形態を示すプロトコル図／ブロック図である。図５のブロック５０５ではホットリムーバルが検出されたがこれに代えて、ブロック７０５において、エージェント４３０のホットアッドが検出される。ホットアッドでは実質的に、上述したホットリムーバルの実施形態のうちいずれかの逆が実行される。このため、ホットリムーバルがシステムからのエージェントの物理的なリムーバルを含む場合、ホットアッドはシステムに対するエージェントの物理的な追加を含み、同様に、電源オフ／オンおよびソフトウェアリムーバル／アッドとなる。
【００７２】
エージェント４３０に対応付けられたホットアッドが検出されると、イネーブルポートメッセージがエージェント４３０によって生成される。一実施形態によると、イネーブルポートメッセージはインターコネクトネットワーク内のすべてのノードに送信される。ここで、ディセーブルポートメッセージが隣接するノードにのみ送信される実施形態であっても、イネーブルポートメッセージは全てのノードにブロードキャストされるとしてよい。これに代えて、別の実施形態によると、イネーブルポートメッセージは隣接するノード、つまりエージェント４３０に直接接続されているノードにのみ送信される。
【００７３】
図示されているように、エージェント４１０はポート４１２においてイネーブルメッセージを受信する。エージェント４３０は、現時点においてエージェント４３０のエントリがなければ、参加者リストに追加されるとしてよい。一実施形態によると、イネーブルメッセージが受信されたポートは１つのみであっても、イネーブルポートメッセージを受信することに応じて、全てのポート、例えばポート４１１−４１３がイネーブルされる。ここで、エージェント４３０にルーティングされていないポートがイネーブルされ得るが、上述したように、時間が経過すれば、リターンサイクルによってこれらのポートはディセーブルされるべきであることをエージェント４１０は知る。さらに、その後ルーティングされるサイクルに基づいて、ロジック４１５におけるエージェント４３０に対する優先度リストを決定して、動的に変更するとしてよい。
【００７４】
別の実施形態によると、イネーブルポートメッセージを受信することによってポート４１２のみがイネーブルされる。ここで、複数のイネーブルポートメッセージが複数の異なるポートで受信されて、エージェント４１０のポートのうちエージェント４３０にルーティングされるポートを正確にイネーブルするとしてよい。同様に、エージェント４４０はイネーブルポートメッセージを受信して、これに応じてエージェント４３０のルーティングテーブルを設定する。一実施形態によると、イネーブルポート完了メッセージがエージェント４１０、４４０から送信されて、ポート４３１および４３３がこれに従ってイネーブルされる。
【００７５】
このため、上述の記載から明らかであるが、エージェントの設定が変更されると、インターコネクトアーキテクチャにおけるルーティングテーブルは、休止状態を利用することなく動的に修正されるとしてよい。この結果、システムを停止させて外部のソフトウェア／ファームウェアにルーティング情報を再設定させると高コストになってしまうが、このような問題を回避し得る。さらに、隣接するノードに送信されるディセーブルメッセージおよびリターンサイクルを利用することによって、システムは、リムーバルをシステム全体にブロードキャストしなくても、リムーバルされたデバイスを知り得る。この結果、不必要なトラフィックが低減される。さらに、ターゲットエージェント用のポートは、システム動作において最も好都合なパケットのルーティングを保証するべく動的に変更可能な優先度リストにおいて示されているとしてよい。
【００７６】
本明細書では、モジュールとは、任意のハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせを意味する。別個のモジュールを定義するべく図示されているモジュール境界は、一般的には異なり重複するとしてよい。例えば、第１のモジュールおよび第２のモジュールはハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせを共有し得るが、独立したハードウェア、ソフトウェアまたはファームウェアを保有する可能性もある。一実施形態によると、「ロジック」という用語を使用する場合は、トランジスタ、レジスタ等のハードウェアまたはプログラム可能なロジックデバイス等のハードウェアを含む。しかし、別の実施形態によると、「ロジック」はさらに、ハードウェアに組み込まれたソフトウェアまたはコード、例えばファームウェアまたはマイクロコードを含む。
【００７７】
本明細書で使用する場合、「値」とは、数字、状態、論理状態、またはバイナリ論理状態を任意の公知の方法で表現したものを含む。ロジックレベル、ロジック値または論理値の利用は通常、１および０を用いることを意味し、この表現方法は単にバイナリロジック状態を表す。例えば、「１」はＨＩＧＨロジックレベルを意味し、「０」はＬＯＷロジックレベルを意味する。一実施形態によると、トランジスタまたはフラッシュセルのようなストレージセルは、１つの論理値または複数の論理値を保持することができるとしてよい。しかし、コンピュータシステムではこれら以外の値の表現方法も用いられている。例えば、１０進法の「１０」という数は、バイナリ値では「１０１０」として表現され得るし、１６進法では「Ａ」となる。このため、「値」は、コンピュータシステムにおいて保持され得る表現方法であれば、どのような方法で情報を表現するものであってもよい。
【００７８】
さらに、値または値の一部によって状態を表現し得る。一例によると、第１の値、例えば論理値「１」はデフォルト状態または初期状態を表現し、第２の値、例えば論理値「０」は非デフォルト状態を表現するとしてよい。さらに、「リセット」および「設定」という用語はそれぞれ、一実施形態によると、デフォルトの値または状態および更新後の値または状態を意味する。例えば、デフォルト値は、ＨＩＧＨ論理値、つまり「リセット」を含み、更新値はＬＯＷ論理値、つまり「設定」を含むとしてよい。尚、複数の値を任意に組み合わせてあらゆる状態を表現するとしてよい。
【００７９】
上述した方法、ハードウェア、ソフトウェア、ファームウェアまたはコードの実施形態は、機械アクセス可能媒体または機械読み出し可能媒体に格納されている、処理素子によって実行可能な命令またはコードによって実装されるとしてよい。機械アクセス可能／読み出し可能媒体は、コンピュータまたは電子システムのような機械が読み出し可能な形式で情報を提供（つまり、格納および／または送信）する任意の機構を含む。例えば、機械アクセス可能媒体は、ランダムアクセスメモリ（ＲＡＭ）、例えばスタティックＲＡＭ（ＳＲＡＭ）またはダイナミックＲＡＭ（ＤＲＡＭ）；ＲＯＭ；磁気格納媒体または光学格納媒体、フラッシュメモリデバイス、電気ストレージデバイス、光学ストレージデバイス、音響ストレージデバイス、または伝播信号（例えば、搬送波、赤外線信号、デジタル信号）のストレージデバイスのその他の形態等を含む。例えば、機械は、伝播信号で送信される情報を保持することができる媒体から、搬送波のような伝播信号を受信することによってストレージデバイスにアクセスするとしてよい。
【００８０】
本明細書で「一実施形態」または「実施形態」と言及する場合、当該実施形態に関連して説明されている特定の特徴、構造、または特性が、本発明の少なくとも１つの実施形態に含まれていることを意味する。このため、「一実施形態」または「実施形態」という表現は本明細書で何度も言及されるが、必ずしもすべてが同じ実施形態に言及しているわけではない。さらに、特定の特徴、構造、または特性を、１以上の実施形態において、任意の適切な方法で組み合わせるとしてよい。
【００８１】
上述した明細書では、具体的な実施形態例を参照しつつ詳細に説明した。しかし、本願の請求項に記載されている本発明の精神および範囲を逸脱することなく、上述した実施形態例をさまざまに変更および修正できることは明らかである。したがって、本明細書および添付図面は、本発明を例示するものと解釈されるべきであって、本発明を制限するものと見なされるべきではない。さらに、「実施形態」およびその他の例示に関する単語を明細書中で使用しているが、必ずしも同じ実施形態または同じ例を意味するのではなく、同じ実施形態を意味し得ると共に、相違する別個の実施形態を意味するとしてよい。
【図１】
2010079880.tif 000003
【図２】
2010079880.tif 000004
【図３】
2010079880.tif 000005
【図４】
2010079880.tif 000006
【図５】
2010079880.tif 000007
【図６】
2010079880.tif 000008
【図７】
2010079880.tif 000009
【外国語明細書】
2010079880.tif 000010
2010079880.tif 000011
2010079880.tif 000012
2010079880.tif 000013
2010079880.tif 000014
2010079880.tif 000015
2010079880.tif 000016
2010079880.tif 000017
2010079880.tif 000018
2010079880.tif 000019
2010079880.tif 000020
2010079880.tif 000021
2010079880.tif 000022
2010079880.tif 000023
2010079880.tif 000024
2010079880.tif 000025
2010079880.tif 000026
2010079880.tif 000027
2010079880.tif 000028
2010079880.tif 000029
2010079880.tif 000030
2010079880.tif 000031
2010079880.tif 000032
2010079880.tif 000033
2010079880.tif 000034
2010079880.tif 000035
2010079880.tif 000036
2010079880.tif 000037
2010079880.tif 000038
2010079880.tif 000039
2010079880.tif 000040
2010079880.tif 000041