(57)【要約】異なる階層内のコンポーネントのアクセスを可能にするために複数のＰＣＩ  Ｅｘｐｒｅｓｓ階層をクラスタ化する装置、システム、および方法。各ＰＣＩ  Ｅｘｐｒｅｓｓ階層は、ルート・デバイス、ならびに、ＰＣＩ  Ｅｘｐｒｅｓｓスイッチト・ファブリックを介して物理クラスタの各他の階層に各階層を結合するクラスタ・ポートを含む。メモリ・アドレスおよびトランザクションＩＤは、複数階層のシステムのＰＣＩ  Ｅｘｐｒｅｓｓ空間をパーティショニングするために各階層のクラスタ・ポートによって再マッピングされる。パーティショニングされた空間の第１部分は、階層内のローカル・コンポーネントへのアクセス用に予約される。空間の第２部分は、異なる第１階層内から他の階層のリモート・コンポーネントにアクセスするのに使用される。そのようなリモート・トランザクションで交換されるアドレス値およびトランザクションＩＤ値は、標準ＰＣＩｅルート・デバイス、エンドポイント・デバイス、およびスイッチを使用して、階層の間で交換をルーティングするために、各階層のクラスタ・ポートによって再マッピングされ、使用される。
2010520541.tif 000002
【特許請求の範囲】
【請求項１】
複数のＰＣＩ  Ｅｘｐｒｅｓｓ階層であって、各階層が、関連するルート・コントローラを有し、各階層が、関連するクラスタ・ポートを有する、複数のＰＣＩ  Ｅｘｐｒｅｓｓ階層と、
各階層の前記クラスタ・ポートに結合されたＰＣＩ  Ｅｘｐｒｅｓｓスイッチと
を含むシステムであって、
各階層の前記クラスタ・ポートが、前記スイッチを介する第１階層による前記複数の階層の任意の他の階層内のコンポーネントへの制御されたアクセスを可能にし、
各階層の前記クラスタ・ポートが、前記システムのＰＣＩ  Ｅｘｐｒｅｓｓ空間の第１部分が前記各階層内のローカル・コンポーネントを参照するために前記各階層内で使用され、前記空間の第２部分が前記複数の階層の他の階層内のリモート・コンポーネントを参照するために前記各階層内で使用されるように、前記空間をパーティショニングする
システム。
【請求項２】
各階層の前記クラスタ・ポートが
前記ＰＣＩ  Ｅｘｐｒｅｓｓ空間のメモリ・アドレスをマッピングするメモリ・アドレス・マッピング要素であって、前記マッピング要素が、前記クラスタ・ポートを含む前記第１階層のローカル・コンポーネントに関連するアドレスと別の階層のリモート・コンポーネントのアドレスとの間でメモリ・アドレスを変換するように動作可能である、メモリ・アドレス・マッピング要素
をさらに含む、請求項１に記載のシステム。
【請求項３】
メモリ・アドレス・トランスレータが、メモリ・アドレスの指定された上位アドレス・ビットに非０値を有する前記ＰＣＩ  Ｅｘｐｒｅｓｓ空間のセグメントに各階層を関連付けるように適合され、
前記メモリ・アドレス・トランスレータが、前記指定された上位アドレス・ビットに０値を有する前記ＰＣＩ  Ｅｘｐｒｅｓｓ空間のセグメントに前記第１階層のローカル・コンポーネントを関連付けるようにさらに適合される
請求項２に記載のシステム。
【請求項４】
各階層の前記クラスタ・ポートが、
前記ＰＣＩ  Ｅｘｐｒｅｓｓ空間内のＰＣＩ  ＥｘｐｒｅｓｓトランザクションＩＤを変換するコンフィギュレーション空間トランスレータであって、前記トランスレータが、前記クラスタ・ポートを含む前記第１階層と別の階層との間で交換される前記トランザクションＩＤを変換するように動作可能である、コンフィギュレーション空間トランスレータ
をさらに含む、請求項１に記載のシステム。
【請求項５】
前記システムが、前記トランザクションＩＤの１つまたは複数のフィールド内の複数のビットを予約するように適合され、
前記コンフィギュレーション空間トランスレータが、前記予約されるビット内の前記トランザクションＩＤのオリジナル・バス番号を保存するように適合され、
前記コンフィギュレーション空間トランスレータが、挿入するように適合される
請求項４に記載のシステム。
【請求項６】
前記システムが、前記トランザクションＩＤの前記１つまたは複数のフィールドから５ビットを予約するように適合される
請求項５に記載のシステム。
【請求項７】
前記システムが、前記トランザクションＩＤのバス番号フィールド内で３ビットを、前記トランザクションＩＤのデバイス番号フィールド内で２ビットを、および前記トランザクションＩＤのタグ・フィールド内で３ビットを予約するように適合される
請求項６に記載のシステム。
【請求項８】
ＰＣＩ  Ｅｘｐｒｅｓｓ階層内のクラスタ・ポートであって、
前記クラスタ・ポートをローカル階層に結合するＰＣＩ  Ｅｘｐｒｅｓｓスイッチへのローカル・インターフェースと、
前記クラスタ・ポートを１つまたは複数の他のＰＣＩ  Ｅｘｐｒｅｓｓ階層内のリモート・コンポーネントに結合するリモート・インターフェースと、
前記ローカル階層に関連するおよび前記他の階層に関連するＰＣＩ  Ｅｘｐｒｅｓｓコンフィギュレーション情報を格納するコンフィギュレーション・ストアと、
前記ローカル階層と前記他の階層のいずれかとの間でＰＣＩ  Ｅｘｐｒｅｓｓトランザクションを変換するトランスレータ要素と
を含み、前記クラスタ・ポートが、前記ローカル階層のコンポーネントと前記１つまたは複数の他の階層内のリモート・コンポーネントとの間の制御されたアクセスを可能にし、
前記クラスタ・ポートが、前記システムのＰＣＩ  Ｅｘｐｒｅｓｓ空間の第１部分がローカル階層内のローカル・コンポーネントを参照するために前記ローカル階層内で使用され、前記空間の第２部分が前記他の階層のうちのもう１つの中のリモート・コンポーネントを参照するために使用されるように、前記空間をパーティショニングするように適合される
クラスタ・ポート。
【請求項９】
前記トランスレータ要素が、
前記ＰＣＩ  Ｅｘｐｒｅｓｓ空間のメモリ・アドレスをマッピングするメモリ・アドレス・マッピング要素であって、前記マッピング要素が、前記ローカル階層のローカル・コンポーネントに関連するアドレスと前記他の階層のリモート・コンポーネントのアドレスとの間でメモリ・アドレスを変換するように動作可能である、メモリ・アドレス・マッピング要素
をさらに含む、
請求項８に記載のクラスタ・ポート。
【請求項１０】
前記メモリ・アドレス・トランスレータが、各他の階層を、メモリ・アドレスの指定された上位アドレス・ビットに非０値を有する前記ＰＣＩ  Ｅｘｐｒｅｓｓ空間のセグメントに関連付けるように適合され、
前記メモリ・アドレス・トランスレータが、前記ローカル階層のローカル・コンポーネントを前記指定された上位アドレス・ビットに０値を有する前記ＰＣＩ  Ｅｘｐｒｅｓｓ空間のセグメントに関連付けるようにさらに適合される
請求項９に記載のクラスタ・ポート。
【請求項１１】
前記トランスレータ要素が、
前記ＰＣＩ  Ｅｘｐｒｅｓｓ空間内でＰＣＩ  ＥｘｐｒｅｓｓトランザクションＩＤを変換するコンフィギュレーション空間トランスレータであって、前記トランスレータが、前記ローカル階層と別の階層との間で交換されるトランザクションＩＤを変換するように動作可能である、コンフィギュレーション空間トランスレータ
をさらに含む
請求項８に記載のクラスタ・ポート。
【請求項１２】
前記クラスタ・ポートが、前記他の階層のうちの特定の階層を識別するために前記トランザクションＩＤの１つまたは複数のフィールド内の複数のビットを予約するように適合される
請求項１１に記載のクラスタ・ポート。
【請求項１３】
前記クラスタ・ポートが、前記トランザクションＩＤの前記１つまたは複数のフィールドから８ビットを予約するように適合される
請求項１２に記載のクラスタ・ポート。
【請求項１４】
前記クラスタ・ポートが、前記トランザクションＩＤのバス番号フィールド内で３ビットを、前記トランザクションＩＤのデバイス番号フィールド内で２ビットを、および前記トランザクションＩＤのタグ・フィールド内で３ビットを予約するように適合される
請求項１３に記載のクラスタ・ポート。
【請求項１５】
複数のＰＣＩ  Ｅｘｐｒｅｓｓ階層を提供することであって、各階層が、関連するルート・コントローラを有し、各階層が、関連するクラスタ・ポートを有する、提供することと、
各階層の前記クラスタ・ポートに結合されるＰＣＩ  Ｅｘｐｒｅｓｓスイッチを提供することと、
他の階層の他のコンポーネントによる前記各階層の選択されたコンポーネントへのアクセスを可能にするために各階層の前記クラスタ・ポートを構成することと、
第１階層からその対応するクラスタ・ポートを介して別の階層のコンポーネントにアクセスすることと
を含む方法。
【請求項１６】
構成する前記ステップが、
前記複数の階層の各階層のＰＣＩ  Ｅｘｐｒｅｓｓ空間の第１部分が前記各階層内のローカル・コンポーネントを参照するために前記各階層内で使用され、前記空間の第２部分が前記複数の階層の他の階層内のリモート・コンポーネントを参照するために前記各階層内で使用されるように、前記空間をパーティショニングすること
をさらに含む、請求項１５に記載の方法。
【請求項１７】
前記アクセスするステップが、
前記クラスタ・ポートを含む前記第１階層のローカル・コンポーネントに関連するアドレスと別の階層のリモート・コンポーネントのアドレスとの間でメモリ・アドレスを変換することによって、前記ＰＣＩ  Ｅｘｐｒｅｓｓ空間のメモリ・アドレスをマッピングするように前記クラスタ・ポートを動作させること
をさらに含む、請求項１６に記載の方法。
【請求項１８】
前記アクセスするステップが、
前記クラスタ・ポートを含む前記第１階層と別の階層との間で交換されるＰＣＩ  ＥｘｐｒｅｓｓトランザクションＩＤを変換するように前記クラスタ・ポートを動作させること
をさらに含む、請求項１６に記載の方法。
【請求項１９】
前記構成するステップが、
前記複数の階層のそれぞれを、そのローカル階層内のコンポーネントにアクセスするように初期化することと、
前記パーティショニングするステップによって定義される前記第１部分および前記第２部分に従って前記各階層の前記クラスタ・ポートを初期化することと、
前記パーティショニングするステップによって定義される前記第１部分および前記第２部分に従って前記ＰＣＩ  Ｅｘｐｒｅｓｓスイッチを初期化することと
をさらに含む、請求項１６に記載の方法。
【請求項２０】
前記複数の階層のうちの１つの階層をスーパーバイザリ階層として指定すること
をさらに含み、前記ＰＣＩ  Ｅｘｐｒｅｓｓスイッチを初期化する前記ステップが、前記スーパーバイザリ階層の動作によって実行される
請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＰＣＩ  Ｅｘｐｒｅｓｓシステム・アーキテクチャに関し、より具体的には、クラスタ化された階層のいずれかに含まれるエンドポイント・デバイスへのアクセスを共有できる相互接続されたＰＣＩ  Ｅｘｐｒｅｓｓ階層のクラスタを形成するために複数の独立のＰＣＩ  Ｅｘｐｒｅｓｓ階層の相互接続を可能にするＰＣＩ  Ｅｘｐｒｅｓｓアーキテクチャの変更に関する。
【背景技術】
【０００２】
Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｕｔｅｒ  Ｉｎｔｅｒｃｏｎｎｅｃｔ標準規格（「ＰＣＩ」）は、長年にわたってコンピューティング・システムの人気のある相互接続標準規格であった。「ＰＣＩ  Ｅｘｐｒｅｓｓ」（「ＰＣＩｅ」）と呼ばれるＰＣＩアーキテクチャのより最近の変形は、ＰＣＩ相互接続標準規格のファミリを拡張して、１システム内のマスタ・デバイスとスレーブ・デバイスとの間のバス・トランザクション用の高速直列交換を含める。一般に、ＰＣＩ相互接続（ＰＣＩｅを含む）を利用するシステムは、システムのパラメータおよびシステムのコンポーネントの間のＰＣＩ相互接続のパラメータを当初に構成する責任を負う指定されたルート・デバイスを有する。類似する形で、ＰＣＩｅ標準規格は、ＰＣＩｅ相互接続パスウェイのさまざまな態様ならびにシステム内のさまざまなエンドポイント・デバイスのコンフィギュレーション・パラメータを構成する、そのようなルート・デバイスを含む。ＰＣＩｅプロトコルおよび媒体の高速直列の性質は、ネットワーキング分野で一般に知られている高速スイッチング・デバイスの使用を可能にする。したがって、ルート・デバイスを有する階層内のエンドポイント・デバイスを、より広く分散させ、ＰＣＩｅスイッチ（１つまたは複数）を介して階層内で他のデバイスと接続されたままになることができる（すなわち、ＰＣＩｅスイッチト・ファブリック接続（ｓｗｉｔｃｈｅｄ  ｆａｂｒｉｃ  ｃｏｎｎｅｃｔｉｏｎ））。ＰＣＩｅ階層内のルート・デバイスは、通常、適用されるトランザクションのさまざまなパラメータに基づくトランザクションのスイッチングを可能にするために、ファブリックのスイッチを構成する。
【０００３】
並列バス構造ＰＣＩシステムならびに高速直列ＰＣＩｅシステムでは、単一のルート・デバイスおよび任意の個数のエンドポイント・デバイスを含むシステムを、単一ＰＣＩ階層と呼ぶことが一般的である。そのような単一階層のルート・デバイスは、上で注記したように、一般に、相互接続媒体およびプロトコルならびにエンドポイント・デバイスのさまざまなコンフィギュレーション属性を構成する責任を負う。そのように構成されたならば、さまざまなデバイスは、一時的に、同一階層内のスレーブ・デバイスとのトランザクションを開始する際にマスタ・デバイスの役割を引き受けることができる。
【０００４】
より古い並列バス構造ＰＣＩ階層では、各ＰＣＩ階層が、一般に、別のルート・デバイスを有する第２のＰＣＩ階層のコンポーネントと通信することを阻まれる。そうではなく、各階層は、一般に、分離され、独立であり、単一のルート・デバイスおよびそれに関連するエンドポイント・デバイスの集合を有するようになっている。ＰＣＩ階層のそのような分離は、複数のルート・デバイスのそれぞれがＰＣＩバス構造のセグメントの初期化を試みることおよび／または異なるコンフィギュレーション情報を用いて同一のエンドポイント・デバイスを初期化することを試みることに伴う問題を回避するのを助ける。しかし、そのような分離は、一般に、各階層が、エンドポイント・デバイスへのアクセスを共有し、これによってその中の処理能力および通信能力の利用を改善できるように、ある階層が別の階層内のコンポーネントに簡単にアクセスすることをも阻む。ＰＣＩブリッジ・デバイスは、他の面で分離されたＰＣＩバス・セグメントの結合を可能にすることが知られているが、そのようなデバイスは、実質的なコストおよび管理の複雑さをシステムに追加する。
【０００５】
ＰＣＩｅ媒体およびプロトコルのスイッチ可能な直列化された通信を用いても、ある階層が第２の階層内のエンドポイント・デバイスに簡単にアクセスできなくなるようにＰＣＩ階層を分離することが一般的である。実際に、現在のＰＣＩｅ標準規格および仕様は、１システム内の複数のルート・デバイスを禁止し、その代わりに、単一のルート・デバイスだけを含むものとしてシステムを定義する、すなわち、単一の階層は、単一のルート・デバイスおよびそれに関連するエンドポイント・デバイスを含む。したがって、複数の階層は、それぞれ、すべての他の階層から完全に独立に動作可能であり、それぞれが対応するルート・デバイスを有する異なる階層内のコンポーネントへのアクセスを共有することはできない。
【０００６】
公表され産業界によって採用された仕様で現在標準化されてはいないが、ＰＣＩＳＩＧ（ＰＣＩ  ｓｐｅｃｉａｌ  ｉｎｔｅｒｅｓｔ  ｇｒｏｕｐ、ＰＣＩアーキテクチャを定義する事実上の産業界標準規格組織）による最近の開発が、ＰＣＩｅシステム内で複数のルート・デバイスを可能にするアーキテクチャを定義するために開始された。マルチルートＩ／Ｏ構造が、ＰＣＩＳＩＧで提案され、複数の階層を、単一のシステム内で物理的に統合でき、物理的に相互接続できるようになっている、すなわち、各階層が、単一の指定されたルート・デバイスを有し、関連するエンドポイント・デバイスを有し、すべてのデバイスが、共通の物理的なスイッチングされる接続を共有する。しかし、これらの考案される標準規格であっても、まだ、各エンドポイント・デバイスにシステム内の単一の階層のみによってアクセスできるように、エンドポイント・デバイスの集合を論理的に分離する。言い換えると、各デバイスは、１つの階層およびそれに対応するルート・デバイスのみに関連するデバイスの集合を含むその単一の階層のメンバである。複数のエンドポイント・デバイスが、単一の物理デバイスを共有し、共通の相互接続を共有することができるが、これらのエンドポイント・デバイスは、異なる階層に割り当てられなければならない。したがって、複数の階層を物理的に相互接続することができるが、アクセスの共有は、システムのさまざまな階層の間で許容されない。そうではなく、機能強化されたＰＣＩｅデバイスおよびスイッチは、デバイスを論理的に分離する（それぞれをそれ自体の階層に）が、デバイスは、機能強化されたスイッチング・デバイスを介して共通の物理通信パスを共有することができる。さらに、特定の物理デバイスへのアクセスを必要とする階層ごとに、階層ごとに提供される別々の論理エンドポイント・デバイスが存在しなければならない。この要件は、ある物理デバイスにアクセスできる階層の個数を、その物理デバイスによって提供される論理エンドポイント・デバイスの個数に制限する。
【０００７】
さらに、ＰＣＩＳＩＧ内で考案されるマルチルート仮想化および共有に関する考案される標準規格は、ＰＣＩ  Ｅｘｐｒｅｓｓに準拠するスイッチおよびデバイスの実質的な変更を伴う。機能強化されたスイッチおよびデバイスが、機能強化され変更されたＰＣＩｅパケット化トランザクションの交換に必要である。言い換えると、ルート・デバイスおよびＰＣＩｅスイッチは、複数の階層が機能強化されたＰＣＩｅスイッチを介して共通物理アタッチメントを共有する１システム内で共存することを可能にするために、マルチルート対応（考案されている提案される標準規格での定義で「ＭＲＡ」）でなければならない。ＰＣＩＳＩＧの考案される標準規格は、ｗｗｗ．ｐｃｉｓｉｇ．ｃｏｍで文書化され、一般に、ＰＣＩシステム・アーキテクチャの当業者に既知である。
【０００８】
複数の階層の間でのデバイスの共有を可能にするために、現在の解決策は、一般に、階層の間のデバイスの所望の共有をもたらすために、他の相互接続媒体およびプロトコルを介してシステムの階層を結合することを含む。たとえば、ファイバ・チャネル、イーサネット（登録商標）、および他の周知のネットワーク接続性の媒体およびプロトコルを使用して、さまざまな階層を相互接続し、これによって、クラスタの各階層内のエンドポイント・デバイスへの共有されるアクセスを実現することができる。しかし、上記および他のネットワーキング解決策は、そのような共有されるアクセスに関する処理に実質的なオーバーヘッドを追加する。別の階層内のリモート・デバイスへのアクセスは、まず、ＰＣＩｅパケット化トランザクションから他の階層へのネットワーク交換用の別のプロトコルに変換されなければならない。そのようなプロトコル変換は、所望の共有されるアクセスにかなりのオーバーヘッド処理を追加する可能性があり、したがって、高性能アプリケーションでは実用的に使用不能である場合がある。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】ｗｗｗ．ｐｃｉｓｉｇ．ｃｏｍ
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上の議論を考慮して、各階層が関連するルート・デバイスを有する物理クラスタ内の複数のＰＣＩｅ階層の間でのエンドポイント・デバイスの共有を提供することが、明らかに問題のままである。
【課題を解決するための手段】
【００１１】
本発明は、各階層が物理クラスタ内の他の階層のコンポーネントへのアクセスを共有できるように複数のＰＣＩｅ階層をクラスタ化する装置、システム、および方法を提供することによって、上記および他の問題を解決し、これによって、有用な技術の状態を前進させる。各階層は、第１  ＰＣＩｅ階層と複数階層システム内の複数のＰＣＩｅ階層のうちの任意の他のＰＣＩｅ階層との間で交換されるメモリ・アドレスおよび他のトランザクション情報を変換しまたは再マッピングする、本明細書の特徴および態様によるクラスタ・ポートを含む。標準ＰＣＩ  Ｅｘｐｒｅｓｓ空間（メモリ・アドレス空間とコンフィギュレーション空間との両方）は、各階層内のクラスタ・ポートを利用して再マッピングされ、その空間の予約された第１部分が、各階層内のローカル・トランザクションに排他的に使用され、ＰＣＩｅ空間全体の第２部分が、第１階層から第２階層またはリモート階層内のコンポーネントへ向けられるトランザクションを識別するのに使用されるようになる。標準ＰＣＩｅ空間の再マッピングは、現在のＰＣＩｅアーキテクチャ・デバイス（ルート・デバイス、エンドポイント・デバイス、およびＰＣＩｅスイッチ）を、ＰＣＩＳＩＧによって提案された考案されるマルチルート対応標準規格のコストまたは複雑さを必要とせずに利用することを可能にする。そうではなく、本明細書の特徴および態様による、各階層に関連するクラスタ・ポートは、ＰＣＩｅ空間全体をより小さいセグメントまたは部分にパーティショニングすることによって、必須の再マッピングまたは変換を提供する。第１部分は、各ＰＣＩｅ階層内のローカル・アクセスに関連し、残りの部分は、各階層によって、複数ＰＣＩｅ階層の別の階層内のコンポーネントを参照するのに使用される。
【図面の簡単な説明】
【００１２】
【図１】各階層が他の階層から独立であり、一般に、別の階層のコンポーネントに効率的にアクセスすることができない、現在実践されている複数ＰＣＩｅ階層のシステムを示すブロック図である。
【図２】本明細書の特徴および態様による、各階層が他の階層のコンポーネントにアクセスできる複数ＰＣＩｅ階層を有するシステムを示すブロック図である。
【図３】クラスタの第１階層と第２階層との間で交換されるトランザクションのマッピングおよび変換をもたらすための、本明細書の特徴および態様による各階層に関連するクラスタ・ポートの例示的な追加の詳細を与える図である。
【図４】クラスタの第１階層と第２階層との間で交換されるトランザクションのマッピングおよび変換をもたらすための、本明細書の特徴および態様による各階層に関連するクラスタ・ポートの例示的な追加の詳細を与える図である。
【図５】本明細書の特徴および態様による複数の階層の間でのルーティングを可能にするためのメモリ・アドレスおよびトランザクションＩＤの異なるマッピングを説明するブロック図である。
【図６】本明細書の特徴および態様による複数の階層の間でのルーティングを可能にするためのメモリ・アドレスおよびトランザクションＩＤの異なるマッピングを説明するブロック図である。
【図７】本明細書の特徴および態様によるクラスタの第１階層と第２階層との間で交換できる時のメモリ・アドレスおよびトランザクションＩＤのマッピングまたは変換の処理を説明する図である。
【図８】本明細書の特徴および態様によるクラスタの第１階層と第２階層との間で交換できる時のメモリ・アドレスおよびトランザクションＩＤのマッピングまたは変換の処理を説明する図である。
【図９】本明細書の特徴および態様によるＰＣＩｅ階層のクラスタ内の第１階層と第２階層との間でトランザクションを交換する方法を説明する流れ図である。
【図１０】本明細書の特徴および態様によるＰＣＩｅ階層のクラスタ内の第１階層と第２階層との間でトランザクションを交換する方法を説明する流れ図である。
【発明を実施するための形態】
【００１３】
図１は、それぞれが対応するサーバに結合された複数のストレージ・コントローラ１０２および１２２を有する通常のコンピューティング・エンタープライズ１００を示すブロック図である。コントローラを、それぞれ、特定のホスト・アタッチメント媒体およびプロトコルをサポートするように適合させることができることが、一般的なコンフィギュレーションである。たとえば、１つのストレージ・コントローラ１０２を、アタッチされたサーバと共にファイバ・チャネル通信プロトコルについて適合させることができ、第２のストレージ・コントローラ１２２を、ｉＳＣＳＩまたは任意の他の適切なプロトコルについて適合させることができる。したがって、複数の接続性プロトコルおよび媒体が、ストレージ・システムおよびデバイスをさまざまなサーバに結合するためにエンタープライズ１００内の複数のストレージ・コントローラによって使用されることが、一般的である。
【００１４】
当技術分野で一般に知られているように、通常のストレージ・コントローラ１０２は、アタッチされたサーバに結合するためにホストＩ／Ｏインターフェース・デバイス１０４を含むことができる。さらに、通常のストレージ・コントローラ１０２は、ストレージ・コントローラ１０２を関連するドライブ・プール１１４に結合するドライブ側Ｉ／Ｏインターフェース・デバイス１１２を含むことができる。ドライブ・プール１１４は、たとえば、アタッチされたサーバからの要求に応答してデータを格納し、取り出すためのディスク・ドライブまたは他の適切なストレージ媒体を含むことができる。ストレージ・コントローラ１０２内のルート・デバイス１０８は、ホストＩ／Ｏデバイス１０４を介しておよび／またはドライブ側Ｉ／Ｏデバイス１１２を介して情報に選択的にアクセスするのにＰＣＩｅスイッチ１０６を利用することによって、ストレージ・コントローラの全体的動作を制御し、ドライブ・プール１１４内の情報にアクセスすることができる。メモリ１１０を、ルート・デバイス１０８に結合することができ、関連制御データの格納ならびにアタッチされたサーバによって生成されるＩ／Ｏ要求に関連するユーザ・データのキャッシングに使用することができる。例示的なストレージ・コントローラ１２２は、ストレージ・コントローラ１０２と本質的に同一とすることができ、ホストＩ／Ｏインターフェース・デバイス１２４、ＰＣＩｅスイッチ１２６、ルート・デバイス１２８、メモリ１３０、および関連するドライブ・プール１３４への結合用のドライブ側Ｉ／Ｏインターフェース・デバイス１３２を含むことができる。
【００１５】
上で注記したように、当技術分野で現在実践されているように、ストレージ・コントローラ１０２および１２２は、簡単に情報を共有することができない。たとえば、図１に示されているように、ストレージ・コントローラ１０２とストレージ・コントローラ１２２との間に接続性が存在しない場合がある。そうではなく、そのようなエンタープライズが、ストレージ・コントローラ１０２および１２２のそれぞれと共有できる関連情報を交換するのに、アタッチされたサーバに頼る場合がある。他の既知の解決策（図示せず）では、別々の通信チャネルが、ストレージ・コントローラ１０２と１２２との間で直接に情報を交換するのに使用される場合がある。たとえば、別々のファイバ・チャネル接続を、コントローラ１０２とコントローラ１２２との間で確立してもよい。あるいは、たとえば、別々のＩｎｆｉｎｉＢａｎｄチャネルを、ストレージ・コントローラ１０２とコントローラ１２２との間で確立してもよい。たとえば、標準コンピュータ・ネットワーキング・インターフェース媒体およびプロトコルを含む、多数の他の例が、当業者に周知である。
【００１６】
上で注記したように、複数のストレージ・コントローラの間のそのようなすべての既知の接続が、各ストレージ・コントローラ内のＰＣＩｅ相互接続構造とは別個の別々の通信チャネルに頼る。したがって、ストレージ・コントローラ１０２とストレージ・コントローラ１２２との間の情報の交換は、コントローラ１０２内で生成されたＰＣＩｅトランザクションを対応するネットワーク・プロトコルまたは他のプロトコルのトランザクションに変換し、その後、もう１つのコントローラ１２２上で実行されるＰＣＩｅトランザクションに戻して変換するために、変換処理を必要とする。この変換処理は、ストレージ・コントローラ１０２および１２２のそれぞれによって実行される処理にかなりのオーバーヘッドおよび複雑さを課す。
【００１７】
対照的に、図２に、本明細書の特徴および態様による機能強化されたエンタープライズを示すが、図２では、各ストレージ・コントローラが、ローカルＰＣＩｅ階層を表し、複数のＰＣＩｅ階層のそれぞれが、ＰＣＩｅトランザクションから他のネットワークおよび通信のプロトコルおよび媒体への変換を必要とせずにさまざまな階層のコンポーネントの間での情報の制御された交換を可能にするためにクラスタ・ポートを含む。そうではなく、本明細書の特徴および態様によれば、図２に示されたシステムまたはエンタープライズは、各ローカルＰＣＩｅ階層が、ＰＣＩｅ空間の第１部分を利用してローカル・コンポーネントにアクセスでき、ＰＣＩｅ空間の第２部分で直接にＰＣＩｅトランザクションを利用して異なる階層内のリモート・コンポーネントにアクセスできるように、ＰＣＩｅ空間をパーティショニングする。
【００１８】
本明細書で使用される時に、「ＰＣＩｅ空間」は、ＰＣＩｅ階層内のメモリ・アドレッシング可能コンポーネントにアクセスするためのメモリ・アドレスを有するトランザクションを含み、また、たとえばより早期に受け取られた読取り要求トランザクションに応答して情報を返す時に、トランザクション内で頻繁に使用されるトランザクションのトランザクションＩＤ内に含まれるコンフィギュレーションＩＤを含む。したがって、ＰＣＩｅ空間のパーティショニングは、複数ＰＣＩｅ階層のそれぞれによって定義されるローカル階層内のコンポーネントに対応するメモリ・アドレスおよびコンフィギュレーションＩＤ値のサブセットを含むためのＰＣＩｅ空間全体の第１部分を定義する。パーティショニングされたＰＣＩｅ空間の第２部分は、別のより上位の階層からのデバイスによってアドレッシングされるリモート・コンポーネントに対応する他のメモリ・アドレスおよびコンフィギュレーションＩＤ値を含む。
【００１９】
したがって、本明細書の特徴および態様によれば、各階層２２０、２２１、２２２、および２２３は、それぞれ対応するＰＣＩｅクラスタ・ポート２３０、２３１、２３２、および２３３を含む。各クラスタ・ポートは、それに関連するローカル階層がストレージ・エンタープライズの他の階層内のリモート・コンポーネントに制御可能にアクセスすることを可能にする。複数の階層（２２０から２２３まで）は、そのめいめいのクラスタ・ポート（２３０から２３３まで）を介してＰＣＩｅスイッチ２５０を介して結合される。各階層のクラスタ・ポートは、ＰＣＩｅ空間の第１部分とＰＣＩｅ空間の第２部分との間でメモリ・アドレスおよび／またはトランザクションＩＤを変換するように働く。言い換えると、各ＰＣＩｅ階層に関連するクラスタ・ポートは、それに対応するローカル階層内で生成される特定のメモリ・アドレスまたはトランザクションＩＤがローカル・コンポーネントまたは別の階層内のリモート・コンポーネントを参照している時を検出する。メモリ・アドレスまたはトランザクションＩＤが、ＰＣＩｅ空間の第１部分内のコンポーネント（すなわち、同一階層内のローカル・コンポーネント）を参照する時には、クラスタ・ポートは、介入する必要がない。しかし、クラスタ・ポートが、そのローカル階層のコンポーネントがＰＣＩｅ空間の第２部分内の別の階層のリモート・コンポーネントに関連するメモリ・アドレスまたはトランザクションＩＤを生成したことを検出する時には、クラスタ・ポートは、そのトランザクションを受け取り、そのトランザクションを適当に変換し、そのトランザクションをＰＣＩｅスイッチ２５０を介して適当な他の階層に転送する。
【００２０】
逆に、クラスタ・ポートが、ＰＣＩｅスイッチ２５０からそのクラスタ・ポート自体の対応するローカル階層内のローカル・コンポーネントを参照するメモリ・アドレスまたはトランザクションＩＤを受け取る時には、クラスタ・ポートは、受け取られたアドレスおよび／またはトランザクションＩＤをそのローカル階層内のコンポーネントを参照するための対応する適当な値に変換するように動作可能である。したがって、各ローカル階層に関連するクラスタ・ポートによって実行される変換処理は、各階層が標準ＰＣＩｅバス・トランザクションを利用してそれ自体のローカル・コンポーネントを操作することを可能にし、各ローカル階層がやはり標準ＰＣＩｅトランザクションを使用して他の階層内のリモート・コンポーネントを参照することを可能にする。各ローカル階層に関連するクラスタ・ポートは、ローカル・トランザクションがＰＣＩｅ空間の第２部分に関連するアドレスまたはトランザクションＩＤ値を参照する時に、トランザクションを適当な他の階層にリダイレクトする。したがって、従来の技法とは対照的に、ＰＣＩトランザクション・プロトコルと他のネットワーキング・プロトコルとの間の変換は、不要である。
【００２１】
考案されているがまだ標準化されていないＰＣＩＳＩＧの仕様との比較によって、標準ＰＣＩｅスイッチを図２のエンタープライズ内で利用することができ、標準ＰＣＩコンポーネントを各ローカル階層内で利用することができる。ルート・デバイスおよび関連するスイッチは、ＰＣＩＳＩＧからのマルチ・ルート仮想化の考案されている仕様によって要求されるようにマルチルート対応（「ＭＲＡ」）である必要はない。
【００２２】
ローカルＰＣＩｅ階層の展望から、その関連するクラスタ・ポートは、論理的に不可視であり、リモート・クラスタ・ポートによって可視にされた残りのリモート・クラスタ・ポートおよびリソースを、ローカル階層に可視にする。言い換えると、パーティショニングされたＰＣＩｅ空間の第２部分でリモート・クラスタ・ポートによって可視にされたリソースを単純にアドレッシングすることによって、ローカル階層は、エンタープライズの別の階層内のリモート・コンポーネントにアクセスすることができる。
【００２３】
特定のＰＣＩｅ階層のクラスタ・ポートを調べるエンタープライズ／クラスタの展望から、クラスタ・ポートは、完全なコンフィギュレーション・レジスタ空間を含む標準ＰＣＩｅエンドポイント・デバイスに見える。したがって、クラスタ・ポートは、そのレジスタ空間内で適当に構成される時に、その対応するローカルＰＣＩｅ階層内のさまざまなコンポーネントおよびリソースの制御され制限された可視性を可能にする。クラスタ／エンタープライズ内の他のコントローラ／階層は、これによって、その対応するクラスタ・ポートによって可視にされるローカル階層内のコンポーネントにアクセスすることができる。言い換えると、クラスタ・ポート・コンフィギュレーションは、クラスタ・ポートがクラスタ／エンタープライズ内の他の階層から可視にすることを望むリソースのための、その対応するローカル階層への「ウィンドウ」を提供する。
【００２４】
クラスタ・ポートによって定義される「ウィンドウ」は、クラスタ・ポートのコンフィギュレーション・レジスタ空間内のベース・アドレス・レジスタ（ＢＡＲ）と呼ばれる標準ＰＣＩコンストラクトによって定義される。したがって、各ＰＣＩｅクラスタ・ポート２３０から２３３までは、それぞれコンフィギュレーション・レジスタ空間２４０から２４３までを含み、このコンフィギュレーション・レジスタ空間２４０から２４３まで内で、ベース・アドレス・レジスタおよび他のコンフィギュレーション関連レジスタをプログラムして、クラスタ／エンタープライズ内の他の階層から使用可能または可視でなければならない対応するローカルＰＣＩｅ階層内のコンポーネントを定義することができる。そのようなコンフィギュレーション・レジスタ空間利用およびそのような形でのベース・アドレス・レジスタの利用は、当業者に周知である。
【００２５】
エンタープライズのさまざまな複数の階層の間で交換されるメモリ・アドレスの変換（再マッピング）に加えて、本明細書の特徴および態様は、パケットがローカルＰＣＩｅ階層とエンタープライズの別のＰＣＩｅ階層との間を通る時の標準パケット・ヘッダに対する変更を含む。ファンクション値ならびにパケット・ヘッダ内のトランザクションＩＤおよび／またはメモリ・アドレス内の他の値を、パケットがクラスタ・ポートを介してそのローカル階層からクラスタの他の階層に移動する時またはパケットが関連するローカル階層への転送のためにクラスタ・ポートで受け取られる時に、変更することができる。そのような変換の例を、他の図を参照して本明細書で下でさらに述べる。
【００２６】
たとえば、６４ビットＰＣＩｅメモリ・アドレスのうちのビット０から４８までのみを特定の階層内のローカル・コンポーネントを参照するためにそのローカル階層内で使用できるように、ＰＣＩｅ空間をパーティショニングすることができる。したがって、各ローカル階層は、その階層内のローカル・コンポーネントのアクセスに関して２５６テラバイトのローカル・アドレス空間に制限される。たとえば、ストレージ・コントローラなどの組み込み応用例を含む多数の応用例について、この制限は、深刻な制限ではない。したがって、ＰＣＩｅ空間の第１部分は、トランザクションのメモリ・アドレスの上位１６ビットのすべてに０を有するものとして定義され、下位４８ビットが、たとえばパーティショニングされたＰＣＩｅ空間の第１部分など、ローカル階層のローカル・コンポーネントへのアクセスを定義するようになる。メモリ・アドレスの上位１６ビットは、たとえばパーティショニングされたＰＣＩｅ空間の第２部分など、ＰＣＩｅ空間ごとのの別の階層内のリモート・コンポーネントを参照するために非０にすることができる。
【００２７】
類似する形で、ＰＣＩｅ交換内でトランザクションＩＤによって定義されるＰＣＩｅ空間を、ＰＣＩｅコンフィギュレーション空間のパーティショニングに従って再マッピングしまたは変換することもできる。たとえば、トランザクションＩＤのバス番号フィールド、デバイス番号フィールド、ファンクション番号フィールド、およびタグ・フィールドを、ローカル階層内の開始するデバイスのバス番号を保存するためにビットを解放するために、本明細書の特徴および態様に従って制限することができる。関連するトランザクションが、ＰＣＩｅスイッチを介して開始する階層に戻る転送のために返される時に、他の階層およびスイッチト・ファブリックから見た開始する階層のバス番号を、トランザクションＩＤのバス番号フィールド内に挿入して、階層を識別することができる。たとえば、８ビット幅として指定されるトランザクションＩＤのバス番号フィールドを、５ビットのみに制限することができ、ローカル階層が、そのローカル階層内の番号０から３１までのローカル・バス・セグメントだけにアクセスするようにすることができる。類似する形で、トランザクションＩＤの５ビット・フィールドとして指定されるデバイス番号を、３ビットに制限することができ、ローカル・デバイス番号が、ローカル階層の０から３１までの番号を付けられた任意のローカル・バス・セグメント上で０と７との間の範囲のみにまたがるようにすることができる。さらに、同様の形で、通常は８ビット幅として指定されるトランザクションＩＤのタグ・フィールドを、５ビットに制限し、タグ番号が、ローカル階層内の交換について０と３１との間の値に制限されるようにすることができる。次に、トランザクションＩＤのフィールドを制限することによって使用から解放された未使用ビットを、トランザクションＩＤのローカル階層バス番号値を保存するのに利用することができる。具体的に言うと、トランザクションを開始したデバイスのローカル階層内のバス番号を示すバス番号フィールドの下位５ビットを、解放された予約済みビットに保存することができる。次に、関連する戻りトランザクションが複数階層のクラスタ・ポートを介して情報を返すのにトランザクションＩＤフィールドを使用する時に、アクセスされるべき特定の開始する階層を識別するために、階層のバス番号を、バス番号フィールドの８ビットに挿入することができる。
【００２８】
したがって、ＰＣＩｅ空間は、ＰＣＩｅ空間の第１部分がそれぞれ０と３１との間の範囲のローカル・バス番号および０と７との間の範囲のデバイス番号へのアクセスを定義するように、トランザクションＩＤに関してもパーティショニングされる。さらに、０と３１との間のトランザクションＩＤの限られた範囲だけを、ＰＣＩｅ空間のこの第１部分内で利用することができる。バス・フィールド内で生成される他のすべての値は、別の階層がトランザクションＩＤを利用してアクセスされなければならない（たとえば、ＰＣＩｅ空間の第２部分）ことを指定するのに使用することができる。
【００２９】
それぞれ各クラスタ・ポート２３０から２３３までのコンフィギュレーション・レジスタ２４０から２４３までは、クラスタ／エンタープライズ内の他の階層のビューからの各クラスタ・ポートに関連するバス番号を定義することもできる。このバス番号は、本明細書で、「クラスタ番号」または「階層番号」とも呼ばれる。言い換えると、３１を超えるバス番号（たとえば、３２から２５５まで）を、ＰＣＩｅスイッチ２５０の展望から各クラスタ・ポートに割り当てることができる。したがって、ＰＣＩｅスイッチ２５０は、ＰＣＩｅトランザクション内のメモリ・アドレスおよびＰＣＩｅトランザクション内のトランザクションＩＤを、特定の階層の適当なクラスタ・ポートにルーティングすることができる。ＰＣＩｅ交換内のメモリ・アドレスおよびトランザクションＩＤのすべての変換が、各ローカル階層２２０から２２３までのクラスタ・ポート論理内で実行されるので、この目的を達成するために、ＰＣＩｅスイッチ２５０内に特殊な論理は必要でない。
【００３０】
例示的なベース・メモリ・アドレスおよびバス／クラスタ／階層番号を、図２のさまざまなＰＣＩｅクラスタ・ポート２３０から２３３までに割り当てて示す。たとえば、階層２２０のクラスタ・ポート２３０のベース・メモリ・アドレスは（１６進）０００１＿００００＿００００＿００００とすることができ、トランザクションＩＤを有する交換のスイッチングのためのそのバス番号は、バス３２として割り当てることができる。類似する形で、階層２２１のＰＣＩｅクラスタ・ポート２３１は、０００２＿００００＿００００＿００００というベース・メモリ・アドレスおよび３４というバス番号を有してよく、階層２２２のクラスタ・ポート２３２は、０００３＿００００＿００００＿００００というベース・メモリ・アドレスおよび３５というバス番号を有してよく、最後に、階層２２３のクラスタ・ポート２３３は、０００４＿００００＿００００＿００００というベース・メモリ・アドレスおよび３６というバス番号をそれに割り当てられてよい。ＰＣＩｅスイッチは、一般に、ブリッジ・デバイスと統合されるので、スイッチ２５０自体も、バス番号を割り当てられる（「仮想バス番号」３３として図示）。
【００３１】
さらに、図２に示されているように、ローカル階層内のバス・セグメントのローカル・バス番号は、ＰＣＩｅ空間のこの例示的パーティショニングでは、３２未満の割り当てられた値である。たとえば、バス番号０、１、２、および３は、各ローカル階層２２０から２２３までの中で利用されるものとして図示されている。類似する形で、各ローカル階層内のローカル・アクセスの１６テラバイト限度内のアドレス空間を、特定の応用例に適当な任意の適切な形でパーティショニングすることができる。言い換えると、ローカル階層内のキャッシュ・メモリおよび他のコンポーネントのそれぞれに、１６テラバイト・パーティション空間（ＰＣＩｅ空間の第１部分）内のそれら自体のめいめいのアドレス範囲を割り当てることができる。
【００３２】
当業者は、多数の他のコンポーネントを、十分に機能するエンタープライズおよび十分に機能するローカル階層（たとえば、ストレージ・コントローラ）内に含めることができることをたやすく認めるであろう。たとえば、ローカル階層としてのストレージ・コントローラの文脈で、そのような追加要素は、ＲＡＩＤストレージ管理目的のパリティ・アシスト回路、直接メモリ・アクセス・トランザクションの制御のためのＤＭＡコントローラ・コンポーネント、その他を含むことができる。さらに、任意の個数のそのようなローカル階層を、ＰＣＩｅ空間の所望のパーティショニングのみによって制限されて定義することができる。
【００３３】
図３は、通常のクラスタ・ポート３００の例示的実施形態の追加の詳細を与えるブロック図である。したがって、クラスタ・ポート３００は、図２のクラスタ・ポート２３０から２３３までを例示する。クラスタ・ポート３００は、上で注記したコンフィギュレーション・レジスタ３０４を含むことができ、このコンフィギュレーション・レジスタ３０４内で、ベース・アドレス・レジスタ（ＢＡＲ）およびさまざまな他のコンフィギュレーション・パラメータを、当業者に周知のようにプログラムすることができる。ベース・アドレス・レジスタ（ＢＡＲ）および他のコンフィギュレーション・パラメータは、関連するローカル階層のどのローカル・コンポーネントがエンタープライズの他の階層から可視にならなければならないのかを定義する。ローカル階層インターフェース要素３０２は、クラスタ・ポート３００をそのクラスタ・ポートを含むＰＣＩｅローカル階層に結合する。類似する形で、リモート階層インターフェース要素３０６は、標準ＰＣＩｅスイッチを介してエンタープライズ内の他の階層のいずれかにクラスタ・ポート３００を結合する。ＰＣＩｅ空間トランスレータ論理３０８は、ローカル階層とエンタープライズの他の階層のいずれかとの間で交換されるメモリ・アドレスおよびトランザクションＩＤを変換するように動作可能である。変換処理は、実質的に上で注記したとおりであり、例示的変換を、後の図面に関して本明細書で下でさらに述べる。
【００３４】
図４は、図３のＰＣＩｅ空間トランスレータ要素３０８の構造の例示的な追加の詳細を提供するブロック図である。トランスレータ論理３０８内の機能要素は、ＰＣＩｅ階層の間で交換されるＰＣＩｅトランザクション内で使用されるメモリ・アドレスをマッピングし／変換するメモリ・アドレス再マッピング要素４００を含むことができる。上で注記したように、ＰＣＩｅ空間は、クラスタ・ポート論理によって論理的にパーティショニングされ、この空間の第１部分が、０としてコーディングされた上位アドレス・ビットおよびＰＣＩｅ交換に使用されるメモリ・アドレス内の下位アドレス・ビットだけに対応するようになっている。この第１部分は、階層内のローカル・コンポーネントを参照するためにその階層内で使用され、言い換えると、ＰＣＩｅ空間の第１部分内のメモリ・アドレスは、クラスタ・ポートによって（すなわち、トランスレータ論理によって）変換されるのではなく、特定のローカル階層内でのみ使用される。ＰＣＩｅ空間の第２部分は、上位アドレス・ビット内の非０値を指定する残りのメモリ・アドレスに対応する。そのようなメモリ・アドレスは、第２のリモート階層内のリモート・コンポーネントを参照するために第１階層によって使用される。
【００３５】
第１階層のクラスタ・ポートのトランスレータ論理３０８は、リモート・コンポーネントを参照するアドレスを受け取り、受け取られたメモリ・アドレス・トランザクションを標準ＰＣＩｅスイッチを介してリモート／第２階層に転送する。スイッチは、システムの特定のクラスタ・ポートまたは階層を識別するように働くメモリ・アドレスの上位ビットに従って、このトランザクションをルーティングする。第２／リモート階層のクラスタ・ポートは、第１階層からアドレスを受け取り、受け取られたアドレスを、その対応する階層内の対応するローカル・コンポーネントの適当なメモリ・アドレスに変換し／再マッピングする。一般に、この変換は、単に、２つの階層の間でトランザクションをルーティングするのに使用される上位ビットをマスクして除くことを伴う。下位ビットだけが、受け取られ変換されたトランザクションを、受け取る第２階層（受け取るクラスタ・ポートを含む階層）に転送するのに必要である。次に、このトランザクションを、第２階層すなわち受け取る階層内のローカル・アクセスを介して処理することができる。
【００３６】
したがって、メモリ・アドレス再マッピング要素４００は、システムの第１／ローカル階層と第２／リモート階層との間で交換されるメモリ・アドレスを再マッピングし、または変換する。第１階層のおよび第２階層のクラスタ・ポート内の再マッピング要素は、それぞれ、第１階層がシステム内の別の階層のリモート・コンポーネントを参照することを可能にするために、交換されるメモリ・アドレスの必須の変換を実行することができる。
【００３７】
トランスレータ論理３０８は、さらに、第１／ローカル階層と第２／リモート階層との間で交換されるトランザクションＩＤを再マッピングし／変換するように動作可能なコンフィギュレーション空間トランスレータ要素を含むことができる。当業者に周知のとおり、ＰＣＩｅトランザクションは、トランザクションＩＤ値内のビット・フィールドを使用してデバイスを識別することができる。通常、このフィールドは、要求された情報を後に要求のオリジネータに戻って向けることができるようにするために、読取り要求などのトランザクションを発したデバイスを識別する。一般に、トランザクションＩＤは、デバイスが結合されるバス・セグメント番号およびその識別されたバス・セグメント上のデバイス番号を識別することによって、デバイスを識別する。さらに、タグ・フィールドは、そのバス・セグメント上のそのデバイスに関連する特定のトランザクションをさらに識別することができる。トランザクションＩＤのこれらのビット・フィールドは、当業者に周知である。
【００３８】
上で注記したように、本明細書のクラスタ・ポートの特徴および態様は、第２階層内のコンポーネントを参照するためにトランザクションＩＤを第１階層によって生成できるようにするために、トランザクションＩＤ値のパーティショニングを含むＰＣＩｅ空間のパーティショニングを実施する。たとえば、さまざまなフィールド（バスＩＤおよびデバイスＩＤなど）を定義するのに使用されるトランザクションＩＤ内のビット数を減らして、後に関連するトランザクションを完了した際に情報をそこに返すことができるクラスタを識別するためにクラスタまたは階層を識別するのに使用されるビットを予約することができる。したがって、クラスタ・ポート３００のトランスレータ論理３０８内のコンフィギュレーション空間トランスレータ要素４０２は、第１のまたはローカルな階層と第２のまたはリモートの階層との間で交換されるトランザクションＩＤ値を変換しまたは再マッピングするように動作可能である。たとえば、ローカル階層内のバス・セグメントを参照する時に、バス番号値を、標準の８ビット・フィールドのうちの５ビットに制限することができる。次に、トランザクションＩＤのバス番号フィールドの上位３ビットを、クラスタ番号または階層番号のすべてまたは一部を符号化するために本明細書の特徴または態様に従って再定義することができる。類似する形で、トランザクションＩＤの５つの標準デバイス番号ビットのうちの下位３ビットを、ローカル階層内のデバイスを参照するのに使用することができる。次に、デバイス番号フィールドのうちの上位２ビットを、クラスタ番号または階層番号のすべてまたは一部を符号化するのに使用することができる。類似する形で、タグＩＤフィールドおよび／またはファンクション番号フィールドの一部を予約することができ、タグ値および／またはファンクション値の限られた範囲だけを、ローカル階層内で使用できるようになり、残りの上位ビットを、クラスタ番号または階層番号のすべてまたは一部を符号化するのに使用できるようになる。クラスタ番号またはバス番号の符号化に使用するために再マッピングされなければならない特定のビット数は、特定の応用例の設計選択の問題として選択することができる。いくつかの応用例は、より大きいローカルＰＣＩｅ空間を必要とする場合があるが、他の応用例は、リモート・デバイスおよびバスのマッピングにより大きいＰＣＩｅ空間を必要とする場合がある。
【００３９】
再定義されるトランザクションＩＤのビットを、その後、戻りトランザクションがローカル階層内でそれに向けられるべきバス番号（たとえば、別の階層内のリモート・デバイスからデータを入手するために読取り要求を発するローカル階層内のデバイスのバス番号）を保存するために、基礎になる初期トランザクションを発する階層のクラスタ・ポートによって使用することができる。そのようなクラスタ番号または階層番号が、トランザクションＩＤの予約され再定義されたビットに保存され、符号化された状態で、次に、複数階層内のローカル階層のクラスタ・ポートのバス番号またはクラスタ番号を、トランザクションＩＤのバス番号フィールド・ビットに挿入することができる。その後、そのように挿入されるバス番号またはクラスタ番号を、別のトランザクションが第１階層に戻って向けられる場合／時（たとえば、リモート・デバイスが、第１階層内のオリジナルの要求するデバイスに要求されたデータを返す準備ができた時）に使用することができる。挿入されたバス番号は、基礎になるトランザクションを発した第１階層のクラスタ・ポートに戻って戻りトランザクションをルーティングするのに使用される。次に、クラスタ・ポートは、基礎になるオリジナル・トランザクションのリモート・メモリ・アドレスに基づいて、関連する基礎になるバス・トランザクションを適当な他の階層に転送するように動作可能である。リモート階層は、発するクラスタへ後に戻す（すなわち、要求されたデータが発するクラスタに戻る準備ができた時）のためにトランザクションＩＤ値を保存する。オリジナルの基礎になるトランザクションを開始した階層のクラスタ・ポートが、リモート・クラスタから戻る再マッピングされた／変換されたトランザクションＩＤを受け取る時に、複数階層内で発するクラスタを識別するのに使用されたバス番号は、ローカル階層内での発するデバイスの保存されたバス番号を含む予約済みビットに置換される。オリジナル・バス番号を保存するのに使用されたビットが、その後、除去される（たとえば、０の値に復元される）。次に、そのように変換されたトランザクションＩＤを伴うバス・トランザクションが、要求された情報を返すトランザクションを受け取ったクラスタ・ポートを含むローカル階層に適用される。
【００４０】
たとえば、読取りトランザクションでは、トランザクションＩＤを、次のように処理することができる。読取りトランザクションを発する階層のクラスタ・ポートは、ローカル・リクエスタＩＤバス番号を、トランザクションＩＤの予約済みビットに保存し、トランザクションＩＤバス番号をクラスタ・ポート・バス番号（それが接続されているバス）に置換する。このクラスタ・ポート・バス番号は、ローカル・リクエスタＩＤバス番号（予約済みビットに保存されている）がトランザクションＩＤ内でバス番号に復元される第１階層のクラスタ・ポートに戻って、読取り完了を第２階層からルーティングするのに使用される。次に、読取り完了トランザクションが、第１階層内でこのバス番号によってルーティングされる。第２階層クラスタ・ポートは、このトランザクションＩＤを絶対に変換しない。メモリ要求は、メモリ・アドレスを用いてルーティングされるが、要求のトランザクションＩＤは、パケットが第１階層のクラスタ・ポートを通過する時に変更される。読取り完了は、トランザクションＩＤによってルーティングされる。
【００４１】
当業者は、十分に機能するクラスタ・ポート３００および／またはトランスレータ論理３０８内の多数の追加要素および／または同等の要素をたやすく認めるであろう。したがって、図３および４は、単に、クラスタ・ポート実施形態の通常の機能的要素の１つの可能な機能的分解の例として意図されている。さらに、当業者は、クラスタ・ポート３００およびトランスレータ論理３０８の再マッピング機能および変換機能を実施する多数の組合せ論理回路設計をたやすく認めるであろう。
【００４２】
図５および６は、それぞれ、本明細書の特徴および態様による複数の階層の間で交換され得るメモリ・アドレスおよびトランザクションＩＤ内のビットの例示的再定義を説明する図である。図５に示されているように、アドレスの下位部分５０２（たとえば、ＰＣＩｅ空間の第１部分）を使用してクラスタ・ポートを含むローカル／第１階層のローカル・コンポーネントを参照できるように、ＰＣＩｅパケット・ヘッダ内のメモリ・アドレス５００を再マッピングすることができる。たとえば、６４ビットＰＣＩｅメモリ・アドレスの下位４８ビットを使用して、ローカル階層のローカル・コンポーネントにアクセスすることができる。すべての上位ビット（４８から６３まで）は、ローカル階層内のローカル・コンポーネントにアクセスするために、０として符号化される。クラスタ・ポートのコンフィギュレーション・プログラミングに従って、クラスタ・ポートは、上位ビット（４８から６３まで）にすべて０を有するメモリ・アドレスに応答しない。
【００４３】
逆に、上位ビット（４８から６３まで）が非０である場合に、クラスタ・ポート・コンフィギュレーション・レジスタ（たとえば、ＢＡＲ）は、クラスタ・ポートがトランザクション内のメモリ・アドレスに応答することを許可する。具体的に言うと、６４ビットＰＣＩｅメモリ・アドレスのビット４８から６３までは、リモート・コンポーネントがその中でアクセスされなければならないリモート階層を識別するクラスタ・アドレスまたは階層アドレス５０６を符号化することができる。次に、ローカル階層のクラスタ・ポートは、そのメモリ・アドレスを、ローカル階層のクラスタ・ポートをクラスタの他の階層に結合するＰＣＩｅスイッチに転送することができる。
【００４４】
より具体的には、ＰＣＩｅ空間のメモリ・アドレス空間の例示的パーティショニングで、ローカルＰＣＩｅメモリ空間（すなわち、空間の第１部分）内で、すべてのメモリが、メモリ空間の下位２５６テラバイトにマッピングされなければならない（たとえば、アドレス・ビット６３から４８までが０である）。
【００４５】
好ましくは、メモリ・アドレスによってルーティングされるパケット（メモリ読取りまたはメモリ書込み）が、これらの上位ビット（４８から６３まで）のいずれかをオンにしてローカルＰＣＩｅ階層内で生成される時に、そのパケットは、そのクラスタ・ポートおよびクラスタ階層に向けられる。ローカルＰＣＩｅバスを、２５６テラバイト以上のメモリ・アドレス値を有するパケットをそのクラスタ・ポートに向け、そこからクラスタ階層スイッチ（１つまたは複数）を介して別の／リモート階層に向けるように構成することができる。したがって、メモリ・アドレス・ビット４７から０までは、ローカルＰＣＩｅ階層内でメモリ・パケットをルーティングするのに使用され、メモリ・アドレスのビット６３から４８までは、クラスタ階層におけるルーティング・ビットとして使用される。この特定の例示的マッピングは、クラスタ階層内で定義されるすべてのローカル階層メモリ・ウィンドウ（上で述べた）が異なる２５６テラバイト境界に整列されることを暗示する。これらのウィンドウは、サイズにおいて２５６テラバイトである必要はないが、２５６テラバイト・アラインメントで始まらなければならない。言い換えると、クラスタＰＣＩｅ階層は、アドレス・ルーティングされるパケットが、適用されるメモリ・アドレスのアドレス・ビット６３から４８までだけに基づいてルーティングされるようにするために初期化されなければならない。この初期化は、クラスタ内のすべてのＰＣＩｅスイッチが２５６テラバイト粒度に基づいてパケットを転送する（アップストリーム、ダウンストリーム、またはピアツーピア）ようになるように、これらのＰＣＩｅスイッチを初期化することを含む。そのような初期化の例示的な追加の詳細を、本明細書で以下に提示する。
【００４６】
図５のメモリ・アドレスによって例示されるメモリ・アドレス空間のパーティショニングに加えて、本明細書の特徴および態様に従って、クラスタ・ポートは、トランザクションＩＤ値に関してＰＣＩｅ空間のパーティショニング（たとえば、コンフィギュレーション空間のパーティショニング）をも実現する。当業者に周知のとおり、読取り要求（たとえば、メモリ・アドレスに基づくＰＣＩｅトランザクションとして開始された）の完了は、しばしば、別々のＰＣＩｅトランザクションでの要求されたデータの戻りを伴って、後の時刻に完了される。この戻りデータＰＣＩｅトランザクションは、返される情報がトランザクションとして適用されるべきデバイスのバス・セグメント（６０２）およびそのバス・セグメント上のデバイスＩＤ（６０４）を一般に識別する、トランザクションＩＤ（６００）を含む。タグ・フィールド（６０８）およびファンクション値（６０６）は、さらに、それについて情報が返されようとしている特定のトランザクションを識別することができる。
【００４７】
本明細書の特徴および態様によるクラスタ・ポートは、バス番号の変換に使用されるトランザクションＩＤ  ６００フィールドのうちのいくつかのビットを予約することによって、ＰＣＩｅ空間のこのコンフィギュレーション空間のパーティショニングを実現する。コンフィギュレーション空間内のバス番号の第１部分は、ローカル階層内のローカル・バス番号へのローカル・アクセス用に予約することができる。ＰＣＩｅコンフィギュレーション空間内のバス番号の第２部分は、その後、割り当てられたバス場号に基づくファブリックを介するトランザクションのルーティングを可能にするために、対応するバス番号によって各階層を識別するのに使用される。たとえば、バス番号（６０２）を参照するのにローカル階層内で使用されるビット数を、標準の８ビットのうちの５つに制限することができる。これらの５ビットは、返されるトランザクションがそれに向けられなければならないデバイスの発する階層内のローカル・バス番号を識別する。これらの５ビット（０と３１との間のローカル・バス番号を指定する）は、初期トランザクションがローカル階層からクラスタ・ポートを介してファブリック内の別の階層へ向けられる時に、その階層のクラスタ・ポートの動作によって保存される。保存されたローカル・バス番号の代わりに、コンフィギュレーション空間の第２部分でのバス番号（３２から２５５までの範囲のバス番号）が、戻りトランザクションが別のリモート階層から第１階層内の開始するデバイスに送り返される時にこのローカル階層のクラスタ・ポートを識別するために挿入される。そのような戻りトランザクションが、基礎になるトランザクションを開始した第１階層のクラスタ・ポートに達する時に、トランザクションＩＤ内の保存されたバス場号を、トランザクションＩＤのバス番号フィールド内の通常のビット位置に復元することができ、その後、トランザクションは、ローカル階層内で普通に処理される。
【００４８】
初期ローカル・バス番号をトランザクションＩＤ内に保存するために、デバイス番号（６０４）を参照するのにローカル階層内で使用されるビット数を、標準の５ビットのうちの３つに制限することができ、タグ・フィールド（６０８）内で定義される標準ビットのうちの限られた個数を、特定のトランザクションをさらに識別するためにローカル階層内で使用することができる。たとえば、タグ・フィールド６０８の下位５ビットを、ローカル階層内でトランザクションＩＤに使用することができる。あるいは、たとえば、ファンクション・フィールドの限られたビット数を使用し、残りのビットを、クラスタ情報を符号化するために解放することができる。
【００４９】
ローカル階層交換に使用されない追加ビットは、ローカル階層トランザクション内ですべて０でなければならず、したがって、ＰＣＩｅ空間のコンフィギュレーション空間の第１部分を定義する。ＰＣＩｅスイッチ（１つまたは複数）ならびに第１階層および第２階層のクラスタ・ポートを介して第１階層と第２階層との間で交換されるトランザクションでは、予約済みビットは、関連するトランザクションが第２階層から第１階層に返される時に第１階層内の発するデバイスのバス番号を保存するのに使用される。当業者は、発するデバイスのバス番号を追加の予約済みビット内で符号化（すなわち、保存）できるようにするトランザクションＩＤのビットの多数の配分および再位置決めをたやすく認めるであろう。類似する形で、発するデバイスのバス番号の保存および復元を可能にする、実現可能なトランザクションＩＤ  ６００ビットの他のマッピングが、当業者にたやすく明白になるであろう。したがって、図６に提示された例示的な再マッピングまたは変換は、単に、トランザクションＩＤがシステムの第１階層と第２階層との間で交換される時にトランザクションＩＤ  ６００のビットを再マッピングするか変換することを可能にする１つの可能なそのようなマッピングとして意図されている。
【００５０】
図７に、複数のＰＣＩｅ階層を含むシステム内で第１階層からその第１階層のクラスタ・ポートを介して第２階層に転送される時の例示的なＰＣＩｅメモリアドレスの例示的な変換または再マッピングを示す。図７に示された変換処理７００は、メモリ・アドレス７０２が、それがシステムの別の階層内のコンポーネントを参照していることを示しながら、第１階層内で生成されることから始まる。上で注記したように、そのような表示は、第１階層内のローカル・コンポーネントのアドレッシングに使用されないメモリ・アドレス７０２の上位ビットのいずれかの非０値（たとえば、ＰＣＩｅ空間の第２部分内のアドレス）として符号化することができる。本明細書で述べるように、アドレス７０２の１つの例示的マッピングは、下位４８ビット（０から４７まで）が、すべての他の上位ビット（４８から６３まで）が０である時に、ローカル階層または第１階層内のコンポーネントのアドレッシングに使用されることをもたらす。したがって、メモリ・アドレス７０２は、第１階層による、別の階層内のリモート・コンポーネントをアドレッシングする試みを表す。アドレッシングされる特定の他の階層は、メモリ・アドレス７０２内の上位アドレス・ビットによって識別される。たとえば、ビット４８から６３までが、アドレス・ビット０から４７までによってさらに識別されるコンポーネントがその中でアクセスされなければならない特定のクラスタを識別することができる。
【００５１】
メモリ・アドレス７０２は、第１階層内のクラスタ・ポートによって受け取られる。この第１階層のクラスタ・ポートのコンフィギュレーション・レジスタは、当業者に周知のようにプログラムされ、クラスタ・ポートが、メモリ・アドレス７０２のビット４８から６３までなどの上位アドレス・ビットに非０値を有するすべてのメモリ・アドレスに応答するようになっている。第１階層のクラスタ・ポートは、メモリ・アドレス７０２を伴うトランザクションを受け取り、メモリ・アドレス７０２を（本質的に変更なしで）メモリ・アドレス７０４としてクラスタ化された階層のスイッチト・ファブリック接続に転送する。ＰＣＩｅスイッチを含むファブリックは、メモリ・アドレス７０４を受け取り、関連するトランザクションを、たとえばメモリ・アドレス７０４のビット４８から６３までで示される識別されたクラスタまたは階層のクラスタ・ポートに転送する。上で注記したように、また、当業者にたやすく明白になるように、システムのさまざまな階層を結合する１つまたは複数のＰＣＩｅスイッチのファブリックは、各特定のクラスタまたは階層を識別するメモリ・アドレス７０４の上位ビット内の値に基づいてトランザクションをスイッチングするようにプログラムされる。やはり上で注記したように、図７の例示的実施形態では、ビット４８から６３までは、トランザクションが向けられる特定のクラスタまたは階層を識別するために働く。
【００５２】
複数のＰＣＩｅ階層を結合するスイッチト・ファブリックによってそのようにリダイレクトされたトランザクションは、所期の宛先階層すなわち第１階層が初期トランザクションをそれに向けることを意図した第２階層のクラスタ・ポートによって受け取られる。第２階層のクラスタ・ポートは、上位ビットを除去し、下位ビットだけを残して、第２階層内の変換されたローカル・アドレス７０６を生成する。言い換えると、上位ビット（たとえば、アドレス７０６で例示されるようにビット４８から６３まで）は、０にされ、その結果、下位アドレス・ビット（たとえば、ビット０から４７まで）が、第２階層内の所望のコンポーネントをアドレッシングするのに使用される。したがって、第１階層内で生成されたアドレス７０２は、第１階層および第２階層のクラスタ・ポートならびに中間スイッチト・ファブリックを介して適用され、第２階層のクラスタ・ポートによってアドレス７０６に変換される。これによって、第１階層は、それ自体の階層内でローカルにアドレッシングされるかのように、別の階層内のリモート・コンポーネントを参照することができる。これによって、そのようなメモリ・アドレッシングされるＰＣＩｅトランザクションは、第１階層内で生成されたメモリ・アドレスを変換することと、変換されたメモリ・アドレスＰＣＩｅトランザクションをシステムの別のＰＣＩｅ階層内の別のリモート・コンポーネントに転送することとによって、第１階層と第２階層との間で交換される。
【００５３】
当業者は、別のＰＣＩｅ階層内のリモート・コンポーネントの対応するアドレスへの第１階層内で生成されたアドレスの変換を可能にするＰＣＩｅトランザクション内のメモリ・アドレスのビットの多数の同等のマッピングをたやすく認めるであろう。したがって、図７の例示的変換は、単に、そのような変換処理の、および階層の間でのそのような交換のためのＰＣＩｅメモリ・アドレス空間内で予約されたビットの定義の、１つの可能な実施形態として意図されている。
【００５４】
図７に似て、図８は、ＰＣＩｅトランザクション内で利用されるトランザクションＩＤの例示的変換を説明する。当業者に一般に知られているように、トランザクションＩＤは、当初に要求によってアドレッシングされたデバイスがその後に要求されたトランザクションを完了し、オリジナル・リクエスタに情報を返す場合に、以前の読取り要求を完了するのに使用される。トランザクションＩＤフィールドは、当技術分野で一般に知られているように、特定のバス・セグメント、そのセグメント上のデバイス、ファンクション、および返される情報がそれに関連付けられなければならないタグを識別する、上で述べた複数の定義されたフィールドを含む。一般に、トランザクションＩＤは、要求する（第１）階層によってオリジナル・トランザクションの一部として生成される。アドレッシングされたデバイスが、要求を完了し、要求された情報を返す時に、トランザクションＩＤは、データを返すトランザクションと共に返され、クラスタ・ファブリック内で、そのトランザクションを第１階層内の発するデバイスにルーティングするのに使用される。
【００５５】
上で述べたように、トランザクションＩＤのフィールドを、本明細書の特徴および態様に従って、ローカル階層トランザクションのために短縮することができる。短縮されたフィールドは、トランザクションＩＤ内のフィールドのフル仕様に必要なビット数と比較して、符号化により少ないビットを必要とする。次に、未使用ビットを、トランザクションＩＤが第１ＰＣＩｅ階層と別のＰＣＩｅ階層との間で交換される時にクラスタ関連情報を保持するために利用することができる。図８は、トランザクションＩＤ  ８０２が対応するトランザクションに関連する第１階層内で生成される、変換処理８００の例示である。次に、トランザクションＩＤ  ８０２は、変換されたトランザクションＩＤ  ８０４を生成するためにトランザクションＩＤのフィールドのさまざまなビットを再定義（再マッピングまたは変換）するために第１階層のクラスタ・ポートによって変換される。その変換されたトランザクションＩＤ  ８０４は、トランザクションＩＤのオリジナル・ソースとして第１階層内の開始するデバイスのバス番号を保存する。上で注記したように、さまざまなフィールド内の未使用ビットを再定義することができ、フィールド自体を、オリジナルのローカル・バス番号を保存するために再マッピングすることができる。保存されたバス番号の代わりに、基礎になるトランザクションのイニシエータとしてこのローカル階層を識別するバス番号フィールドが、挿入される。上で述べ、図２に示したように、各階層の各クラスタ・ポートは、ＰＣＩｅメモリ・アドレスおよびＰＣＩｅバス番号（パーティショニングされたＰＣＩｅ空間の第２部分の）に関連する。したがって、変換されたトランザクションＩＤ  ８０４に挿入されたバス番号（Ｃ０．．Ｃ７）は、スイッチト・ファブリックにアタッチされた他の階層から見た時のローカル階層のバス番号（すなわち、クラスタ番号）である。
【００５６】
このトランザクションＩＤを受け取る第２階層内のリモート・デバイスは、情報を直接に復号する必要があるのではなく、要求された情報に関する対応する戻りトランザクションで返すためにこのトランザクションＩＤを格納する。したがって、変換されたトランザクションＩＤ  ８０４を、クラスタを介してリモート階層に転送することができる。リモート階層デバイスが、戻りトランザクションを送り返す準備ができた時に、変換されたトランザクションＩＤ  ８０４は、変換されたトランザクションＩＤ  ８０４に符号化されたクラスタ番号（Ｃ０．．Ｃ７）に従って階層を介してルーティングされる。
【００５７】
図８に示されているように、クラスタ番号またはバス番号を、通常はバス番号に使用される８ビットに符号化することができる。オリジナルのローカル・バス番号（Ｂ０．．Ｂ４）は、デバイス番号フィールドの予約済みビット（ビット３および４）およびタグ番号フィールドの予約済みビット（ビット５、６、および７）に保存される。変換されたトランザクションＩＤ  ８０４に符号化されるクラスタ番号（Ｃ０．．Ｃ７）は、第１階層がスイッチト・ファブリックにアタッチされた他の階層に知られる時にオリジナルのトランザクションＩＤ  ８０２を生成するのに使用された第１階層のクラスタ番号または階層番号である。第１階層をそのように識別するクラスタ番号または階層番号は、第１階層のクラスタ・ポートがＰＣＩｅファブリックに接続し、クラスタ・ポートのコンフィギュレーション・レジスタに含まれる、バス番号に対応する。次に、そのように符号化されたクラスタ番号または階層番号を、複数の階層を結合するスイッチト・ファブリックによって使用して、クラスタ化された階層内のバス番号を識別することができ、その結果、トランザクションに関連する返される情報を、まず、階層を介して、トランザクションＩＤを生成した第１階層に戻ってルーティングできるようになる。
【００５８】
次に、変換されたトランザクションＩＤは、スイッチト・ファブリックを介して、識別された宛先階層または提供されるトランザクションＩＤを含む基礎になるトランザクション内で識別されたクラスタに転送される。したがって、受け取るクラスタ・ポートは、変換されたトランザクションＩＤ  ８０６を含むトランザクションを受け取り、基礎になるトランザクション要求に関連する情報の可能な戻しのために、変換されたトランザクションＩＤを保持する。たとえば、当業者に周知のように、第１階層は、オリジナルのトランザクションＩＤ  ８０２を含み、図７に関して上で説明したようにメモリ・アドレスを利用してリモート・コンポーネントにアドレッシングされる、トランザクションを生成することができる。そのようなトランザクションは、いくつかの情報（たとえば、以前に格納されたユーザ・データ、管理状況関連情報など）を返すことを要求することができる。ＰＣＩｅアーキテクチャで一般に知られているように、他の階層のリモート・コンポーネントは、要求されたトランザクションを完了し、要求された情報を返すのに、ある処理時間を必要とする場合がある。したがって、受け取られたトランザクションに関連するトランザクションＩＤは、返される情報を情報の戻しを要求したオリジナル・トランザクションに関連させるのに使用される。第２階層内のリモート・コンポーネントが、提供された基礎になるトランザクションを完了する時に、要求された情報が、第２階層によって保持される格納された変換されたトランザクションＩＤ  ８０６を使用して第１階層に返される。したがって、上と同様に、変換されたトランザクションＩＤ  ８０６に符号化されたクラスタ番号が、ＰＣＩｅスイッチ（１つまたは複数）によって、返される情報を、発するクラスタまたは階層番号（すなわち、トランザクションＩＤの符号化で識別されるクラスタ）に戻って向けるのに使用される。発するクラスタ番号に正しく向けられる時に、その発する第１階層のクラスタ・ポートは、符号化された変換されたトランザクションＩＤ  ８０４を受け取り、さまざまなビット・フィールドを変換するか再マッピングして、トランザクションＩＤ  ８０２内で示されたオリジナルのトランザクションＩＤ値を復元する。具体的に言うと、クラスタ番号（変換されたトランザクションＩＤ  ８０４のＣ０．．Ｃ７）は、もはやトランザクションＩＤ内で不要であり、保存されたバス番号（Ｂ０．．Ｂ４）を、その通常の標準化されたビット位置および値に復元することができる。具体的に言うと、図８に例示されているように、ローカル階層内の開始するデバイスのオリジナル・バス番号を、予約済みビット内の保存されたコピーから復元し、開始するローカル階層内での使用のためにトランザクションＩＤのバス番号フィールドに復元することができる。
【００５９】
当業者は、本明細書の特徴および態様による第１階層と第２階層との間でのＰＣＩｅスイッチト・ファブリックを介する交換のためにメモリ・アドレスまたはトランザクションＩＤを変換する多数の同等のマッピング・ステップをたやすく認めるであろう。したがって、図７および８は、単に、複数の階層の間でのそのようなマッピングおよび変換処理の１つの例示的実施形態として意図されている。
【００６０】
図９は、複数のＰＣＩｅ階層システムの階層の間でのアクセスを可能にするための本明細書の特徴および態様による方法をおおまかに説明する流れ図である。要素９００は、クラスタ化され相互接続された複数のＰＣＩｅ階層のそのようなコンフィギュレーションを当初に提供する処理を表し、各階層は、その階層をＰＣＩｅスイッチト・ファブリックを介してシステムの他の階層のそれぞれに結合するクラスタ・ポートを含む。そのようなコンフィギュレーションを利用して、要素９０２は、次に、各階層のクラスタ・ポートを構成し、また、ＰＣＩｅスイッチト・ファブリックを構成するように動作可能である。各階層のクラスタ・ポートは、一般に、各階層のクラスタ・ポートがＰＣＩｅスイッチト・ファブリックを介して階層の間で交換されるメモリ・アドレスおよびトランザクションＩＤに応答するようにするために、コンフィギュレーション・レジスタのそのセット（たとえば、ＢＡＲレジスタおよび他のコンフィギュレーション・レジスタ）に値をプログラミングすることによって構成される。ＰＣＩｅスイッチト・ファブリックは、一般に、各階層がＰＣＩｅバス番号（たとえば、バス・セグメント番号）およびメモリ・アドレスに関連するようにファブリックを含むスイッチを構成することによって構成される。上で注記したように、トランザクションＩＤ内のバス番号の１つの例示的なマッピングでは、バス番号０から３１までを、各ローカル階層内の内部アクセス用に予約することができ、３１より大きいバス番号（たとえば、３２から２５５まで）を、各階層のクラスタ・ポートによって表されるその階層にバス番号を関連付けるためにＰＣＩｅスイッチによって割り当てることができる。類似する形で、ＰＣＩｅスイッチを、上で述べたように、上位アドレス・ビットだけに基づいてさまざまな階層の間でメモリ・アドレッシングされたトランザクションをスイッチングするように構成することができる。たとえば、あるマッピングで、各階層を、ＰＣＩｅ空間の特定の２５６テラバイト整列されたセグメントに関連付けることができる。したがって、ファブリックのＰＣＩｅスイッチは、アドレスの上位１６ビット（６３から４８まで）に基づいて、メモリ・アドレッシングされたトランザクションをスイッチングすることができる。例示的初期化の詳細を、本明細書で以下にさらに述べる。
【００６１】
次に、要素９０４は、複数階層の間のアクセスを可能にするためのシステムの進行中の動作を表す。より具体的には、要素９０４は、各階層がＰＣＩｅ空間全体の第１部分にすべてが関連する標準ＰＣＩｅトランザクションを使用してそれ自体のローカル階層内でトランザクションを実行できる、システムの進行中の動作を表す。さらに、要素９０４は、各階層がシステムの別の階層内のリモート・コンポーネントにアドレッシングされたＰＣＩｅトランザクションを実行できる、システムの進行中の動作を表す。各階層に関連するクラスタ・ポートは、第１階層と第２階層との間のトランザクションに関連するメモリ・アドレスおよびトランザクションＩＤのすべての必須の変換および再マッピングを実行する。
【００６２】
図１０は、図９の要素９０２に関して上で述べた初期化処理の例示的な追加の詳細を提供する。要素１０００は、そのめいめいのローカル・コンポーネントへのローカル・アクセスを提供するために各ＰＣＩｅ階層を初期化する処理を表す。この初期化ステップに含まれるのは、すべての非ローカル・アドレスに応答するための各ＰＣＩｅ階層のクラスタ・ポートの初期化である。本明細書で述べるように、ＰＣＩｅ空間は、そのような初期化によって効果的にパーティショニングされ、メモリ・アドレスおよびトランザクションＩＤ値の第１部分が、各階層内で厳密にローカルに処理されるようになっている。第１部分内で特に予約されてはいないすべての他のメモリ・アドレスおよび残りのトランザクションＩＤ値を表すＰＣＩｅ空間の第２部分は、第２階層内のリモート・コンポーネントへの第１階層によるアクセスを可能にするのに使用される。各階層内のクラスタ・ポートは、中間ＰＣＩｅスイッチト・ファブリックを介して第１階層と第２階層との間でトランザクションを交換することによって、ＰＣＩｅ空間のそのようなパーティショニングを実施する。次に、要素１００２は、各階層によるそれ自体のローカル・コンポーネントへのローカル・アクセスを表す第１部分を構成するためのＰＣＩｅ空間のパーティショニングを表す。次に、要素１００４は、各ローカル階層がそれを介してシステム内の他の階層のリモート・コンポーネントにアクセスできる第２部分にＰＣＩｅ空間をさらにパーティショニングするためのすべての追加処理を表す。
【００６３】
より具体的には、ＰＣＩｅ階層のクラスタを、メモリ・アドレス・ルーティングされるパケットが上位アドレス・ビット６３から４８までに基づいてスイッチト・ファブリックおよびクラスタ・ポートを介してルーティングされるのみになるようにするために初期化しなければならない。したがって、クラスタ化されたシステム内のすべてのＰＣＩｅスイッチは、それらが２５６テラバイト粒度に基づいてパケットを転送する（アップストリーム、ダウンストリーム、またはピアツーピア）ようになるために初期化されなければならない。ＰＣＩｅクラスタ化のこの方法を確立する際に最初に検討される問題は、ＰＣＩｅ階層をどのように構成しまたは列挙するかである。さまざまな階層をスイッチト・ファブリックに結合して図示されているＰＣＩｅバスが、単に、上で注記したルーティング・コンフィギュレーションなしで一緒に接続される場合に、ＰＣＩ列挙中に、複数のルート・デバイス（複数の階層の）が、それぞれ、そのローカル階層内のデバイスならびにクラスタ階層にまたがる他のローカル階層内のデバイスを構成することを試みるはずである。これを防ぐために、各ローカル階層のＰＣＩｅクラスタ・ポートは、前に述べたように、ローカル階層を調べるクラスタ階層の観点からは、ＰＣＩｅエンドポイントのように見える。これは、あるローカル階層内のルート・デバイスが、別のローカル階層内のデバイスを構成するのを防ぐ。あるローカル階層内のルート・デバイスは、前に説明したコンフィギュレーション制限およびメモリ空間制限を伴ってそのローカル階層内のデバイスを構成することによって、列挙を開始する。そのローカル階層の列挙に加えて、クラスタ階層のルート接続として接続される、あるローカル階層の１つのルート・デバイスは、クラスタ階層をその階層の延長と見なすので、クラスタ階層をも列挙する。他のローカル階層のそれぞれのルート・デバイスが、そのめいめいのＰＣＩｅクラスタ・ポートを介してクラスタ階層を列挙することを試みる時に、それらが生成するコンフィギュレーション・パケットは、未サポートのパケットとして扱われる。というのは、それらのパケットが、クラスタ階層内で使用されるＰＣＩｅスイッチのダウンストリーム・ポートに送られるからである。これは、これらのすべての他のルート・デバイスに、クラスタ階層へのその境界で（すなわち、そのめいめいのクラスタ・ポートで）列挙を停止させる。この形で、１つのルート・デバイスだけが、クラスタ階層を列挙する。
【００６４】
次に、列挙の第２パスが、各ルート・デバイスによって、２５６テラバイト以上のアドレスを有するすべてのメモリ・アドレス・ルーティングされるパケットおよび３１より大きいバス番号を有するＩＤルーティングされるパケットをそのルート・デバイスのＰＣＩｅクラスタ・ポートにルーティングするようにそのルート・デバイスのローカル・スイッチ（その階層にローカル）をセット・アップするために実行される。さらに、クラスタ階層のルート・デバイスは、クラスタ階層内のすべてのバス番号に３１より大きい値をセットするために、クラスタ階層に対して第２列挙を実行しなければならない。追加の列挙が望ましいのは、通常のＰＣＩ列挙が、ＰＣＩｅクラスタ化のこの方法の要件を満足する可能性が低いからである。
【００６５】
当業者は、本明細書の特徴および態様による方法で提供できる多数の同等のまたは追加のステップをたやすく認めるであろう。したがって、図９および１０は、単に、クラスタ化されたＰＣＩｅ環境で第１階層と第２階層との間のトランザクションで変換サービスおよびマッピング・サービスを提供する通常の処理の例示として意図されている。
【００６６】
本発明を、図面および前述の説明で図示し、説明したが、そのような図示および説明は、例示と考えられなければならず、性質において制限的ではない。本発明の一実施形態およびその些細な変形形態を、図示し、説明した。保護は、本発明の趣旨に含まれるすべての変更および修正について望まれる。当業者は、本発明の範囲に含まれる、上で述べた実施形態の変形形態を了解するであろう。具体的に言うと、当業者は、本明細書の特徴および態様を、電子回路内でまたは汎用プロセッサもしくは特殊目的プロセッサの適切にプログラムされた命令として同等に実施できることをたやすく認めるであろう。回路およびプログラミング設計のそのような同等性は、設計選択の問題として当業者に周知である。その結果、本発明は、上で述べた特定の例および図示に限定されるのではなく、添付の特許請求の範囲およびその同等物によってのみ限定される。
【図１】
2010520541.tif 000003
【図２】
2010520541.tif 000004
【図３】
2010520541.tif 000005
【図４】
2010520541.tif 000006
【図５】
2010520541.tif 000007
【図６】
2010520541.tif 000008
【図７】
2010520541.tif 000009
【図８】
2010520541.tif 000010
【図９】
2010520541.tif 000011
【図１０】
2010520541.tif 000012
【図１１】
2010520541.tif 000013
【国際調査報告】
2010520541.tif 000014
2010520541.tif 000015