JP4964968B2 - 複数の独立なpci express階層をクラスタ化する装置および方法 - Google Patents

複数の独立なpci express階層をクラスタ化する装置および方法 Download PDF

Info

Publication number
JP4964968B2
JP4964968B2 JP2009551984A JP2009551984A JP4964968B2 JP 4964968 B2 JP4964968 B2 JP 4964968B2 JP 2009551984 A JP2009551984 A JP 2009551984A JP 2009551984 A JP2009551984 A JP 2009551984A JP 4964968 B2 JP4964968 B2 JP 4964968B2
Authority
JP
Japan
Prior art keywords
hierarchy
tier
transaction
local
cluster
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009551984A
Other languages
English (en)
Other versions
JP2010520541A5 (ja
JP2010520541A (ja
Inventor
クロープナー,ジョン,アール.
ゲイツ,デニス,イー.
スタッブス,ロバート,イー.
エル−バテル,モハメッド,エッチ.
ヘンリー,ルーセル,ジェー.
ニコルズ,チャールズ,イー.
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
LSI Corp
Original Assignee
LSI Logic Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by LSI Logic Corp filed Critical LSI Logic Corp
Publication of JP2010520541A publication Critical patent/JP2010520541A/ja
Publication of JP2010520541A5 publication Critical patent/JP2010520541A5/ja
Application granted granted Critical
Publication of JP4964968B2 publication Critical patent/JP4964968B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、PCI Expressシステム・アーキテクチャに関し、より具体的には、クラスタ化された階層のいずれかに含まれるエンドポイント・デバイスへのアクセスを共有できる相互接続されたPCI Express階層のクラスタを形成するために複数の独立のPCI Express階層の相互接続を可能にするPCI Expressアーキテクチャの変更に関する。
Peripheral Computer Interconnect標準規格(「PCI」)は、長年にわたってコンピューティング・システムの人気のある相互接続標準規格であった。「PCI Express」(「PCIe」)と呼ばれるPCIアーキテクチャのより最近の変形は、PCI相互接続標準規格のファミリを拡張して、1システム内のマスタ・デバイスとスレーブ・デバイスとの間のバス・トランザクション用の高速直列交換を含める。一般に、PCI相互接続(PCIeを含む)を利用するシステムは、システムのパラメータおよびシステムのコンポーネントの間のPCI相互接続のパラメータを当初に構成する責任を負う指定されたルート・デバイスを有する。類似する形で、PCIe標準規格は、PCIe相互接続パスウェイのさまざまな態様ならびにシステム内のさまざまなエンドポイント・デバイスのコンフィギュレーション・パラメータを構成する、そのようなルート・デバイスを含む。PCIeプロトコルおよび媒体の高速直列の性質は、ネットワーキング分野で一般に知られている高速スイッチング・デバイスの使用を可能にする。したがって、ルート・デバイスを有する階層内のエンドポイント・デバイスを、より広く分散させ、PCIeスイッチ(1つまたは複数)を介して階層内で他のデバイスと接続されたままになることができる(すなわち、PCIeスイッチト・ファブリック接続(switched fabric connection))。PCIe階層内のルート・デバイスは、通常、適用されるトランザクションのさまざまなパラメータに基づくトランザクションのスイッチングを可能にするために、ファブリックのスイッチを構成する。
並列バス構造PCIシステムならびに高速直列PCIeシステムでは、単一のルート・デバイスおよび任意の個数のエンドポイント・デバイスを含むシステムを、単一PCI階層と呼ぶことが一般的である。そのような単一階層のルート・デバイスは、上で注記したように、一般に、相互接続媒体およびプロトコルならびにエンドポイント・デバイスのさまざまなコンフィギュレーション属性を構成する責任を負う。そのように構成されたならば、さまざまなデバイスは、一時的に、同一階層内のスレーブ・デバイスとのトランザクションを開始する際にマスタ・デバイスの役割を引き受けることができる。
より古い並列バス構造PCI階層では、各PCI階層が、一般に、別のルート・デバイスを有する第2のPCI階層のコンポーネントと通信することを阻まれる。そうではなく、各階層は、一般に、分離され、独立であり、単一のルート・デバイスおよびそれに関連するエンドポイント・デバイスの集合を有するようになっている。PCI階層のそのような分離は、複数のルート・デバイスのそれぞれがPCIバス構造のセグメントの初期化を試みることおよび/または異なるコンフィギュレーション情報を用いて同一のエンドポイント・デバイスを初期化することを試みることに伴う問題を回避するのを助ける。しかし、そのような分離は、一般に、各階層が、エンドポイント・デバイスへのアクセスを共有し、これによってその中の処理能力および通信能力の利用を改善できるように、ある階層が別の階層内のコンポーネントに簡単にアクセスすることをも阻む。PCIブリッジ・デバイスは、他の面で分離されたPCIバス・セグメントの結合を可能にすることが知られているが、そのようなデバイスは、実質的なコストおよび管理の複雑さをシステムに追加する。
PCIe媒体およびプロトコルのスイッチ可能な直列化された通信を用いても、ある階層が第2の階層内のエンドポイント・デバイスに簡単にアクセスできなくなるようにPCI階層を分離することが一般的である。実際に、現在のPCIe標準規格および仕様は、1システム内の複数のルート・デバイスを禁止し、その代わりに、単一のルート・デバイスだけを含むものとしてシステムを定義する、すなわち、単一の階層は、単一のルート・デバイスおよびそれに関連するエンドポイント・デバイスを含む。したがって、複数の階層は、それぞれ、すべての他の階層から完全に独立に動作可能であり、それぞれが対応するルート・デバイスを有する異なる階層内のコンポーネントへのアクセスを共有することはできない。
公表され産業界によって採用された仕様で現在標準化されてはいないが、PCISIG(PCI special interest group、PCIアーキテクチャを定義する事実上の産業界標準規格組織)による最近の開発が、PCIeシステム内で複数のルート・デバイスを可能にするアーキテクチャを定義するために開始された。マルチルートI/O構造が、PCISIGで提案され、複数の階層を、単一のシステム内で物理的に統合でき、物理的に相互接続できるようになっている、すなわち、各階層が、単一の指定されたルート・デバイスを有し、関連するエンドポイント・デバイスを有し、すべてのデバイスが、共通の物理的なスイッチングされる接続を共有する。しかし、これらの考案される標準規格であっても、まだ、各エンドポイント・デバイスにシステム内の単一の階層のみによってアクセスできるように、エンドポイント・デバイスの集合を論理的に分離する。言い換えると、各デバイスは、1つの階層およびそれに対応するルート・デバイスのみに関連するデバイスの集合を含むその単一の階層のメンバである。複数のエンドポイント・デバイスが、単一の物理デバイスを共有し、共通の相互接続を共有することができるが、これらのエンドポイント・デバイスは、異なる階層に割り当てられなければならない。したがって、複数の階層を物理的に相互接続することができるが、アクセスの共有は、システムのさまざまな階層の間で許容されない。そうではなく、機能強化されたPCIeデバイスおよびスイッチは、デバイスを論理的に分離する(それぞれをそれ自体の階層に)が、デバイスは、機能強化されたスイッチング・デバイスを介して共通の物理通信パスを共有することができる。さらに、特定の物理デバイスへのアクセスを必要とする階層ごとに、階層ごとに提供される別々の論理エンドポイント・デバイスが存在しなければならない。この要件は、ある物理デバイスにアクセスできる階層の個数を、その物理デバイスによって提供される論理エンドポイント・デバイスの個数に制限する。
さらに、PCISIG内で考案されるマルチルート仮想化および共有に関する考案される標準規格は、PCI Expressに準拠するスイッチおよびデバイスの実質的な変更を伴う。機能強化されたスイッチおよびデバイスが、機能強化され変更されたPCIeパケット化トランザクションの交換に必要である。言い換えると、ルート・デバイスおよびPCIeスイッチは、複数の階層が機能強化されたPCIeスイッチを介して共通物理アタッチメントを共有する1システム内で共存することを可能にするために、マルチルート対応(考案されている提案される標準規格での定義で「MRA」)でなければならない。PCISIGの考案される標準規格は、www.pcisig.comで文書化され、一般に、PCIシステム・アーキテクチャの当業者に既知である。
複数の階層の間でのデバイスの共有を可能にするために、現在の解決策は、一般に、階層の間のデバイスの所望の共有をもたらすために、他の相互接続媒体およびプロトコルを介してシステムの階層を結合することを含む。たとえば、ファイバ・チャネル、イーサネット(登録商標)、および他の周知のネットワーク接続性の媒体およびプロトコルを使用して、さまざまな階層を相互接続し、これによって、クラスタの各階層内のエンドポイント・デバイスへの共有されるアクセスを実現することができる。しかし、上記および他のネットワーキング解決策は、そのような共有されるアクセスに関する処理に実質的なオーバーヘッドを追加する。別の階層内のリモート・デバイスへのアクセスは、まず、PCIeパケット化トランザクションから他の階層へのネットワーク交換用の別のプロトコルに変換されなければならない。そのようなプロトコル変換は、所望の共有されるアクセスにかなりのオーバーヘッド処理を追加する可能性があり、したがって、高性能アプリケーションでは実用的に使用不能である場合がある。
www.pcisig.com
上の議論を考慮して、各階層が関連するルート・デバイスを有する物理クラスタ内の複数のPCIe階層の間でのエンドポイント・デバイスの共有を提供することが、明らかに問題のままである。
本発明は、各階層が物理クラスタ内の他の階層のコンポーネントへのアクセスを共有できるように複数のPCIe階層をクラスタ化する装置、システム、および方法を提供することによって、上記および他の問題を解決し、これによって、有用な技術の状態を前進させる。各階層は、第1 PCIe階層と複数階層システム内の複数のPCIe階層のうちの任意の他のPCIe階層との間で交換されるメモリ・アドレスおよび他のトランザクション情報を変換しまたは再マッピングする、本明細書の特徴および態様によるクラスタ・ポートを含む。標準PCI Express空間(メモリ・アドレス空間とコンフィギュレーション空間との両方)は、各階層内のクラスタ・ポートを利用して再マッピングされ、その空間の予約された第1部分が、各階層内のローカル・トランザクションに排他的に使用され、PCIe空間全体の第2部分が、第1階層から第2階層またはリモート階層内のコンポーネントへ向けられるトランザクションを識別するのに使用されるようになる。標準PCIe空間の再マッピングは、現在のPCIeアーキテクチャ・デバイス(ルート・デバイス、エンドポイント・デバイス、およびPCIeスイッチ)を、PCISIGによって提案された考案されるマルチルート対応標準規格のコストまたは複雑さを必要とせずに利用することを可能にする。そうではなく、本明細書の特徴および態様による、各階層に関連するクラスタ・ポートは、PCIe空間全体をより小さいセグメントまたは部分にパーティショニングすることによって、必須の再マッピングまたは変換を提供する。第1部分は、各PCIe階層内のローカル・アクセスに関連し、残りの部分は、各階層によって、複数PCIe階層の別の階層内のコンポーネントを参照するのに使用される。
各階層が他の階層から独立であり、一般に、別の階層のコンポーネントに効率的にアクセスすることができない、現在実践されている複数PCIe階層のシステムを示すブロック図である。 本明細書の特徴および態様による、各階層が他の階層のコンポーネントにアクセスできる複数PCIe階層を有するシステムを示すブロック図である。 クラスタの第1階層と第2階層との間で交換されるトランザクションのマッピングおよび変換をもたらすための、本明細書の特徴および態様による各階層に関連するクラスタ・ポートの例示的な追加の詳細を与える図である。 クラスタの第1階層と第2階層との間で交換されるトランザクションのマッピングおよび変換をもたらすための、本明細書の特徴および態様による各階層に関連するクラスタ・ポートの例示的な追加の詳細を与える図である。 本明細書の特徴および態様による複数の階層の間でのルーティングを可能にするためのメモリ・アドレスおよびトランザクションIDの異なるマッピングを説明するブロック図である。 本明細書の特徴および態様による複数の階層の間でのルーティングを可能にするためのメモリ・アドレスおよびトランザクションIDの異なるマッピングを説明するブロック図である。 本明細書の特徴および態様によるクラスタの第1階層と第2階層との間で交換できる時のメモリ・アドレスおよびトランザクションIDのマッピングまたは変換の処理を説明する図である。 本明細書の特徴および態様によるクラスタの第1階層と第2階層との間で交換できる時のメモリ・アドレスおよびトランザクションIDのマッピングまたは変換の処理を説明する図である。 本明細書の特徴および態様によるPCIe階層のクラスタ内の第1階層と第2階層との間でトランザクションを交換する方法を説明する流れ図である。 本明細書の特徴および態様によるPCIe階層のクラスタ内の第1階層と第2階層との間でトランザクションを交換する方法を説明する流れ図である。
図1は、それぞれが対応するサーバに結合された複数のストレージ・コントローラ102および122を有する通常のコンピューティング・エンタープライズ100を示すブロック図である。コントローラを、それぞれ、特定のホスト・アタッチメント媒体およびプロトコルをサポートするように適合させることができることが、一般的なコンフィギュレーションである。たとえば、1つのストレージ・コントローラ102を、アタッチされたサーバと共にファイバ・チャネル通信プロトコルについて適合させることができ、第2のストレージ・コントローラ122を、iSCSIまたは任意の他の適切なプロトコルについて適合させることができる。したがって、複数の接続性プロトコルおよび媒体が、ストレージ・システムおよびデバイスをさまざまなサーバに結合するためにエンタープライズ100内の複数のストレージ・コントローラによって使用されることが、一般的である。
当技術分野で一般に知られているように、通常のストレージ・コントローラ102は、アタッチされたサーバに結合するためにホストI/Oインターフェース・デバイス104を含むことができる。さらに、通常のストレージ・コントローラ102は、ストレージ・コントローラ102を関連するドライブ・プール114に結合するドライブ側I/Oインターフェース・デバイス112を含むことができる。ドライブ・プール114は、たとえば、アタッチされたサーバからの要求に応答してデータを格納し、取り出すためのディスク・ドライブまたは他の適切なストレージ媒体を含むことができる。ストレージ・コントローラ102内のルート・デバイス108は、ホストI/Oデバイス104を介しておよび/またはドライブ側I/Oデバイス112を介して情報に選択的にアクセスするのにPCIeスイッチ106を利用することによって、ストレージ・コントローラの全体的動作を制御し、ドライブ・プール114内の情報にアクセスすることができる。メモリ110を、ルート・デバイス108に結合することができ、関連制御データの格納ならびにアタッチされたサーバによって生成されるI/O要求に関連するユーザ・データのキャッシングに使用することができる。例示的なストレージ・コントローラ122は、ストレージ・コントローラ102と本質的に同一とすることができ、ホストI/Oインターフェース・デバイス124、PCIeスイッチ126、ルート・デバイス128、メモリ130、および関連するドライブ・プール134への結合用のドライブ側I/Oインターフェース・デバイス132を含むことができる。
上で注記したように、当技術分野で現在実践されているように、ストレージ・コントローラ102および122は、簡単に情報を共有することができない。たとえば、図1に示されているように、ストレージ・コントローラ102とストレージ・コントローラ122との間に接続性が存在しない場合がある。そうではなく、そのようなエンタープライズが、ストレージ・コントローラ102および122のそれぞれと共有できる関連情報を交換するのに、アタッチされたサーバに頼る場合がある。他の既知の解決策(図示せず)では、別々の通信チャネルが、ストレージ・コントローラ102と122との間で直接に情報を交換するのに使用される場合がある。たとえば、別々のファイバ・チャネル接続を、コントローラ102とコントローラ122との間で確立してもよい。あるいは、たとえば、別々のInfiniBandチャネルを、ストレージ・コントローラ102とコントローラ122との間で確立してもよい。たとえば、標準コンピュータ・ネットワーキング・インターフェース媒体およびプロトコルを含む、多数の他の例が、当業者に周知である。
上で注記したように、複数のストレージ・コントローラの間のそのようなすべての既知の接続が、各ストレージ・コントローラ内のPCIe相互接続構造とは別個の別々の通信チャネルに頼る。したがって、ストレージ・コントローラ102とストレージ・コントローラ122との間の情報の交換は、コントローラ102内で生成されたPCIeトランザクションを対応するネットワーク・プロトコルまたは他のプロトコルのトランザクションに変換し、その後、もう1つのコントローラ122上で実行されるPCIeトランザクションに戻して変換するために、変換処理を必要とする。この変換処理は、ストレージ・コントローラ102および122のそれぞれによって実行される処理にかなりのオーバーヘッドおよび複雑さを課す。
対照的に、図2に、本明細書の特徴および態様による機能強化されたエンタープライズを示すが、図2では、各ストレージ・コントローラが、ローカルPCIe階層を表し、複数のPCIe階層のそれぞれが、PCIeトランザクションから他のネットワークおよび通信のプロトコルおよび媒体への変換を必要とせずにさまざまな階層のコンポーネントの間での情報の制御された交換を可能にするためにクラスタ・ポートを含む。そうではなく、本明細書の特徴および態様によれば、図2に示されたシステムまたはエンタープライズは、各ローカルPCIe階層が、PCIe空間の第1部分を利用してローカル・コンポーネントにアクセスでき、PCIe空間の第2部分で直接にPCIeトランザクションを利用して異なる階層内のリモート・コンポーネントにアクセスできるように、PCIe空間をパーティショニングする。
本明細書で使用される時に、「PCIe空間」は、PCIe階層内のメモリ・アドレッシング可能コンポーネントにアクセスするためのメモリ・アドレスを有するトランザクションを含み、また、たとえばより早期に受け取られた読取り要求トランザクションに応答して情報を返す時に、トランザクション内で頻繁に使用されるトランザクションのトランザクションID内に含まれるコンフィギュレーションIDを含む。したがって、PCIe空間のパーティショニングは、複数PCIe階層のそれぞれによって定義されるローカル階層内のコンポーネントに対応するメモリ・アドレスおよびコンフィギュレーションID値のサブセットを含むためのPCIe空間全体の第1部分を定義する。パーティショニングされたPCIe空間の第2部分は、別のより上位の階層からのデバイスによってアドレッシングされるリモート・コンポーネントに対応する他のメモリ・アドレスおよびコンフィギュレーションID値を含む。
したがって、本明細書の特徴および態様によれば、各階層220、221、222、および223は、それぞれ対応するPCIeクラスタ・ポート230、231、232、および233を含む。各クラスタ・ポートは、それに関連するローカル階層がストレージ・エンタープライズの他の階層内のリモート・コンポーネントに制御可能にアクセスすることを可能にする。複数の階層(220から223まで)は、そのめいめいのクラスタ・ポート(230から233まで)を介してPCIeスイッチ250を介して結合される。各階層のクラスタ・ポートは、PCIe空間の第1部分とPCIe空間の第2部分との間でメモリ・アドレスおよび/またはトランザクションIDを変換するように働く。言い換えると、各PCIe階層に関連するクラスタ・ポートは、それに対応するローカル階層内で生成される特定のメモリ・アドレスまたはトランザクションIDがローカル・コンポーネントまたは別の階層内のリモート・コンポーネントを参照している時を検出する。メモリ・アドレスまたはトランザクションIDが、PCIe空間の第1部分内のコンポーネント(すなわち、同一階層内のローカル・コンポーネント)を参照する時には、クラスタ・ポートは、介入する必要がない。しかし、クラスタ・ポートが、そのローカル階層のコンポーネントがPCIe空間の第2部分内の別の階層のリモート・コンポーネントに関連するメモリ・アドレスまたはトランザクションIDを生成したことを検出する時には、クラスタ・ポートは、そのトランザクションを受け取り、そのトランザクションを適当に変換し、そのトランザクションをPCIeスイッチ250を介して適当な他の階層に転送する。
逆に、クラスタ・ポートが、PCIeスイッチ250からそのクラスタ・ポート自体の対応するローカル階層内のローカル・コンポーネントを参照するメモリ・アドレスまたはトランザクションIDを受け取る時には、クラスタ・ポートは、受け取られたアドレスおよび/またはトランザクションIDをそのローカル階層内のコンポーネントを参照するための対応する適当な値に変換するように動作可能である。したがって、各ローカル階層に関連するクラスタ・ポートによって実行される変換処理は、各階層が標準PCIeバス・トランザクションを利用してそれ自体のローカル・コンポーネントを操作することを可能にし、各ローカル階層がやはり標準PCIeトランザクションを使用して他の階層内のリモート・コンポーネントを参照することを可能にする。各ローカル階層に関連するクラスタ・ポートは、ローカル・トランザクションがPCIe空間の第2部分に関連するアドレスまたはトランザクションID値を参照する時に、トランザクションを適当な他の階層にリダイレクトする。したがって、従来の技法とは対照的に、PCIトランザクション・プロトコルと他のネットワーキング・プロトコルとの間の変換は、不要である。
考案されているがまだ標準化されていないPCISIGの仕様との比較によって、標準PCIeスイッチを図2のエンタープライズ内で利用することができ、標準PCIコンポーネントを各ローカル階層内で利用することができる。ルート・デバイスおよび関連するスイッチは、PCISIGからのマルチ・ルート仮想化の考案されている仕様によって要求されるようにマルチルート対応(「MRA」)である必要はない。
ローカルPCIe階層の展望から、その関連するクラスタ・ポートは、論理的に不可視であり、リモート・クラスタ・ポートによって可視にされた残りのリモート・クラスタ・ポートおよびリソースを、ローカル階層に可視にする。言い換えると、パーティショニングされたPCIe空間の第2部分でリモート・クラスタ・ポートによって可視にされたリソースを単純にアドレッシングすることによって、ローカル階層は、エンタープライズの別の階層内のリモート・コンポーネントにアクセスすることができる。
特定のPCIe階層のクラスタ・ポートを調べるエンタープライズ/クラスタの展望から、クラスタ・ポートは、完全なコンフィギュレーション・レジスタ空間を含む標準PCIeエンドポイント・デバイスに見える。したがって、クラスタ・ポートは、そのレジスタ空間内で適当に構成される時に、その対応するローカルPCIe階層内のさまざまなコンポーネントおよびリソースの制御され制限された可視性を可能にする。クラスタ/エンタープライズ内の他のコントローラ/階層は、これによって、その対応するクラスタ・ポートによって可視にされるローカル階層内のコンポーネントにアクセスすることができる。言い換えると、クラスタ・ポート・コンフィギュレーションは、クラスタ・ポートがクラスタ/エンタープライズ内の他の階層から可視にすることを望むリソースのための、その対応するローカル階層への「ウィンドウ」を提供する。
クラスタ・ポートによって定義される「ウィンドウ」は、クラスタ・ポートのコンフィギュレーション・レジスタ空間内のベース・アドレス・レジスタ(BAR)と呼ばれる標準PCIコンストラクトによって定義される。したがって、各PCIeクラスタ・ポート230から233までは、それぞれコンフィギュレーション・レジスタ空間240から243までを含み、このコンフィギュレーション・レジスタ空間240から243まで内で、ベース・アドレス・レジスタおよび他のコンフィギュレーション関連レジスタをプログラムして、クラスタ/エンタープライズ内の他の階層から使用可能または可視でなければならない対応するローカルPCIe階層内のコンポーネントを定義することができる。そのようなコンフィギュレーション・レジスタ空間利用およびそのような形でのベース・アドレス・レジスタの利用は、当業者に周知である。
エンタープライズのさまざまな複数の階層の間で交換されるメモリ・アドレスの変換(再マッピング)に加えて、本明細書の特徴および態様は、パケットがローカルPCIe階層とエンタープライズの別のPCIe階層との間を通る時の標準パケット・ヘッダに対する変更を含む。ファンクション値ならびにパケット・ヘッダ内のトランザクションIDおよび/またはメモリ・アドレス内の他の値を、パケットがクラスタ・ポートを介してそのローカル階層からクラスタの他の階層に移動する時またはパケットが関連するローカル階層への転送のためにクラスタ・ポートで受け取られる時に、変更することができる。そのような変換の例を、他の図を参照して本明細書で下でさらに述べる。
たとえば、64ビットPCIeメモリ・アドレスのうちのビット0から48までのみを特定の階層内のローカル・コンポーネントを参照するためにそのローカル階層内で使用できるように、PCIe空間をパーティショニングすることができる。したがって、各ローカル階層は、その階層内のローカル・コンポーネントのアクセスに関して256テラバイトのローカル・アドレス空間に制限される。たとえば、ストレージ・コントローラなどの組み込み応用例を含む多数の応用例について、この制限は、深刻な制限ではない。したがって、PCIe空間の第1部分は、トランザクションのメモリ・アドレスの上位16ビットのすべてに0を有するものとして定義され、下位48ビットが、たとえばパーティショニングされたPCIe空間の第1部分など、ローカル階層のローカル・コンポーネントへのアクセスを定義するようになる。メモリ・アドレスの上位16ビットは、たとえばパーティショニングされたPCIe空間の第2部分など、PCIe空間ごとのの別の階層内のリモート・コンポーネントを参照するために非0にすることができる。
類似する形で、PCIe交換内でトランザクションIDによって定義されるPCIe空間を、PCIeコンフィギュレーション空間のパーティショニングに従って再マッピングしまたは変換することもできる。たとえば、トランザクションIDのバス番号フィールド、デバイス番号フィールド、ファンクション番号フィールド、およびタグ・フィールドを、ローカル階層内の開始するデバイスのバス番号を保存するためにビットを解放するために、本明細書の特徴および態様に従って制限することができる。関連するトランザクションが、PCIeスイッチを介して開始する階層に戻る転送のために返される時に、他の階層およびスイッチト・ファブリックから見た開始する階層のバス番号を、トランザクションIDのバス番号フィールド内に挿入して、階層を識別することができる。たとえば、8ビット幅として指定されるトランザクションIDのバス番号フィールドを、5ビットのみに制限することができ、ローカル階層が、そのローカル階層内の番号0から31までのローカル・バス・セグメントだけにアクセスするようにすることができる。類似する形で、トランザクションIDの5ビット・フィールドとして指定されるデバイス番号を、3ビットに制限することができ、ローカル・デバイス番号が、ローカル階層の0から31までの番号を付けられた任意のローカル・バス・セグメント上で0と7との間の範囲のみにまたがるようにすることができる。さらに、同様の形で、通常は8ビット幅として指定されるトランザクションIDのタグ・フィールドを、5ビットに制限し、タグ番号が、ローカル階層内の交換について0と31との間の値に制限されるようにすることができる。次に、トランザクションIDのフィールドを制限することによって使用から解放された未使用ビットを、トランザクションIDのローカル階層バス番号値を保存するのに利用することができる。具体的に言うと、トランザクションを開始したデバイスのローカル階層内のバス番号を示すバス番号フィールドの下位5ビットを、解放された予約済みビットに保存することができる。次に、関連する戻りトランザクションが複数階層のクラスタ・ポートを介して情報を返すのにトランザクションIDフィールドを使用する時に、アクセスされるべき特定の開始する階層を識別するために、階層のバス番号を、バス番号フィールドの8ビットに挿入することができる。
したがって、PCIe空間は、PCIe空間の第1部分がそれぞれ0と31との間の範囲のローカル・バス番号および0と7との間の範囲のデバイス番号へのアクセスを定義するように、トランザクションIDに関してもパーティショニングされる。さらに、0と31との間のトランザクションIDの限られた範囲だけを、PCIe空間のこの第1部分内で利用することができる。バス・フィールド内で生成される他のすべての値は、別の階層がトランザクションIDを利用してアクセスされなければならない(たとえば、PCIe空間の第2部分)ことを指定するのに使用することができる。
それぞれ各クラスタ・ポート230から233までのコンフィギュレーション・レジスタ240から243までは、クラスタ/エンタープライズ内の他の階層のビューからの各クラスタ・ポートに関連するバス番号を定義することもできる。このバス番号は、本明細書で、「クラスタ番号」または「階層番号」とも呼ばれる。言い換えると、31を超えるバス番号(たとえば、32から255まで)を、PCIeスイッチ250の展望から各クラスタ・ポートに割り当てることができる。したがって、PCIeスイッチ250は、PCIeトランザクション内のメモリ・アドレスおよびPCIeトランザクション内のトランザクションIDを、特定の階層の適当なクラスタ・ポートにルーティングすることができる。PCIe交換内のメモリ・アドレスおよびトランザクションIDのすべての変換が、各ローカル階層220から223までのクラスタ・ポート論理内で実行されるので、この目的を達成するために、PCIeスイッチ250内に特殊な論理は必要でない。
例示的なベース・メモリ・アドレスおよびバス/クラスタ/階層番号を、図2のさまざまなPCIeクラスタ・ポート230から233までに割り当てて示す。たとえば、階層220のクラスタ・ポート230のベース・メモリ・アドレスは(16進)0001_0000_0000_0000とすることができ、トランザクションIDを有する交換のスイッチングのためのそのバス番号は、バス32として割り当てることができる。類似する形で、階層221のPCIeクラスタ・ポート231は、0002_0000_0000_0000というベース・メモリ・アドレスおよび34というバス番号を有してよく、階層222のクラスタ・ポート232は、0003_0000_0000_0000というベース・メモリ・アドレスおよび35というバス番号を有してよく、最後に、階層223のクラスタ・ポート233は、0004_0000_0000_0000というベース・メモリ・アドレスおよび36というバス番号をそれに割り当てられてよい。PCIeスイッチは、一般に、ブリッジ・デバイスと統合されるので、スイッチ250自体も、バス番号を割り当てられる(「仮想バス番号」33として図示)。
さらに、図2に示されているように、ローカル階層内のバス・セグメントのローカル・バス番号は、PCIe空間のこの例示的パーティショニングでは、32未満の割り当てられた値である。たとえば、バス番号0、1、2、および3は、各ローカル階層220から223までの中で利用されるものとして図示されている。類似する形で、各ローカル階層内のローカル・アクセスの16テラバイト限度内のアドレス空間を、特定の応用例に適当な任意の適切な形でパーティショニングすることができる。言い換えると、ローカル階層内のキャッシュ・メモリおよび他のコンポーネントのそれぞれに、16テラバイト・パーティション空間(PCIe空間の第1部分)内のそれら自体のめいめいのアドレス範囲を割り当てることができる。
当業者は、多数の他のコンポーネントを、十分に機能するエンタープライズおよび十分に機能するローカル階層(たとえば、ストレージ・コントローラ)内に含めることができることをたやすく認めるであろう。たとえば、ローカル階層としてのストレージ・コントローラの文脈で、そのような追加要素は、RAIDストレージ管理目的のパリティ・アシスト回路、直接メモリ・アクセス・トランザクションの制御のためのDMAコントローラ・コンポーネント、その他を含むことができる。さらに、任意の個数のそのようなローカル階層を、PCIe空間の所望のパーティショニングのみによって制限されて定義することができる。
図3は、通常のクラスタ・ポート300の例示的実施形態の追加の詳細を与えるブロック図である。したがって、クラスタ・ポート300は、図2のクラスタ・ポート230から233までを例示する。クラスタ・ポート300は、上で注記したコンフィギュレーション・レジスタ304を含むことができ、このコンフィギュレーション・レジスタ304内で、ベース・アドレス・レジスタ(BAR)およびさまざまな他のコンフィギュレーション・パラメータを、当業者に周知のようにプログラムすることができる。ベース・アドレス・レジスタ(BAR)および他のコンフィギュレーション・パラメータは、関連するローカル階層のどのローカル・コンポーネントがエンタープライズの他の階層から可視にならなければならないのかを定義する。ローカル階層インターフェース要素302は、クラスタ・ポート300をそのクラスタ・ポートを含むPCIeローカル階層に結合する。類似する形で、リモート階層インターフェース要素306は、標準PCIeスイッチを介してエンタープライズ内の他の階層のいずれかにクラスタ・ポート300を結合する。PCIe空間トランスレータ論理308は、ローカル階層とエンタープライズの他の階層のいずれかとの間で交換されるメモリ・アドレスおよびトランザクションIDを変換するように動作可能である。変換処理は、実質的に上で注記したとおりであり、例示的変換を、後の図面に関して本明細書で下でさらに述べる。
図4は、図3のPCIe空間トランスレータ要素308の構造の例示的な追加の詳細を提供するブロック図である。トランスレータ論理308内の機能要素は、PCIe階層の間で交換されるPCIeトランザクション内で使用されるメモリ・アドレスをマッピングし/変換するメモリ・アドレス再マッピング要素400を含むことができる。上で注記したように、PCIe空間は、クラスタ・ポート論理によって論理的にパーティショニングされ、この空間の第1部分が、0としてコーディングされた上位アドレス・ビットおよびPCIe交換に使用されるメモリ・アドレス内の下位アドレス・ビットだけに対応するようになっている。この第1部分は、階層内のローカル・コンポーネントを参照するためにその階層内で使用され、言い換えると、PCIe空間の第1部分内のメモリ・アドレスは、クラスタ・ポートによって(すなわち、トランスレータ論理によって)変換されるのではなく、特定のローカル階層内でのみ使用される。PCIe空間の第2部分は、上位アドレス・ビット内の非0値を指定する残りのメモリ・アドレスに対応する。そのようなメモリ・アドレスは、第2のリモート階層内のリモート・コンポーネントを参照するために第1階層によって使用される。
第1階層のクラスタ・ポートのトランスレータ論理308は、リモート・コンポーネントを参照するアドレスを受け取り、受け取られたメモリ・アドレス・トランザクションを標準PCIeスイッチを介してリモート/第2階層に転送する。スイッチは、システムの特定のクラスタ・ポートまたは階層を識別するように働くメモリ・アドレスの上位ビットに従って、このトランザクションをルーティングする。第2/リモート階層のクラスタ・ポートは、第1階層からアドレスを受け取り、受け取られたアドレスを、その対応する階層内の対応するローカル・コンポーネントの適当なメモリ・アドレスに変換し/再マッピングする。一般に、この変換は、単に、2つの階層の間でトランザクションをルーティングするのに使用される上位ビットをマスクして除くことを伴う。下位ビットだけが、受け取られ変換されたトランザクションを、受け取る第2階層(受け取るクラスタ・ポートを含む階層)に転送するのに必要である。次に、このトランザクションを、第2階層すなわち受け取る階層内のローカル・アクセスを介して処理することができる。
したがって、メモリ・アドレス再マッピング要素400は、システムの第1/ローカル階層と第2/リモート階層との間で交換されるメモリ・アドレスを再マッピングし、または変換する。第1階層のおよび第2階層のクラスタ・ポート内の再マッピング要素は、それぞれ、第1階層がシステム内の別の階層のリモート・コンポーネントを参照することを可能にするために、交換されるメモリ・アドレスの必須の変換を実行することができる。
トランスレータ論理308は、さらに、第1/ローカル階層と第2/リモート階層との間で交換されるトランザクションIDを再マッピングし/変換するように動作可能なコンフィギュレーション空間トランスレータ要素を含むことができる。当業者に周知のとおり、PCIeトランザクションは、トランザクションID値内のビット・フィールドを使用してデバイスを識別することができる。通常、このフィールドは、要求された情報を後に要求のオリジネータに戻って向けることができるようにするために、読取り要求などのトランザクションを発したデバイスを識別する。一般に、トランザクションIDは、デバイスが結合されるバス・セグメント番号およびその識別されたバス・セグメント上のデバイス番号を識別することによって、デバイスを識別する。さらに、タグ・フィールドは、そのバス・セグメント上のそのデバイスに関連する特定のトランザクションをさらに識別することができる。トランザクションIDのこれらのビット・フィールドは、当業者に周知である。
上で注記したように、本明細書のクラスタ・ポートの特徴および態様は、第2階層内のコンポーネントを参照するためにトランザクションIDを第1階層によって生成できるようにするために、トランザクションID値のパーティショニングを含むPCIe空間のパーティショニングを実施する。たとえば、さまざまなフィールド(バスIDおよびデバイスIDなど)を定義するのに使用されるトランザクションID内のビット数を減らして、後に関連するトランザクションを完了した際に情報をそこに返すことができるクラスタを識別するためにクラスタまたは階層を識別するのに使用されるビットを予約することができる。したがって、クラスタ・ポート300のトランスレータ論理308内のコンフィギュレーション空間トランスレータ要素402は、第1のまたはローカルな階層と第2のまたはリモートの階層との間で交換されるトランザクションID値を変換しまたは再マッピングするように動作可能である。たとえば、ローカル階層内のバス・セグメントを参照する時に、バス番号値を、標準の8ビット・フィールドのうちの5ビットに制限することができる。次に、トランザクションIDのバス番号フィールドの上位3ビットを、クラスタ番号または階層番号のすべてまたは一部を符号化するために本明細書の特徴または態様に従って再定義することができる。類似する形で、トランザクションIDの5つの標準デバイス番号ビットのうちの下位3ビットを、ローカル階層内のデバイスを参照するのに使用することができる。次に、デバイス番号フィールドのうちの上位2ビットを、クラスタ番号または階層番号のすべてまたは一部を符号化するのに使用することができる。類似する形で、タグIDフィールドおよび/またはファンクション番号フィールドの一部を予約することができ、タグ値および/またはファンクション値の限られた範囲だけを、ローカル階層内で使用できるようになり、残りの上位ビットを、クラスタ番号または階層番号のすべてまたは一部を符号化するのに使用できるようになる。クラスタ番号またはバス番号の符号化に使用するために再マッピングされなければならない特定のビット数は、特定の応用例の設計選択の問題として選択することができる。いくつかの応用例は、より大きいローカルPCIe空間を必要とする場合があるが、他の応用例は、リモート・デバイスおよびバスのマッピングにより大きいPCIe空間を必要とする場合がある。
再定義されるトランザクションIDのビットを、その後、戻りトランザクションがローカル階層内でそれに向けられるべきバス番号(たとえば、別の階層内のリモート・デバイスからデータを入手するために読取り要求を発するローカル階層内のデバイスのバス番号)を保存するために、基礎になる初期トランザクションを発する階層のクラスタ・ポートによって使用することができる。そのようなクラスタ番号または階層番号が、トランザクションIDの予約され再定義されたビットに保存され、符号化された状態で、次に、複数階層内のローカル階層のクラスタ・ポートのバス番号またはクラスタ番号を、トランザクションIDのバス番号フィールド・ビットに挿入することができる。その後、そのように挿入されるバス番号またはクラスタ番号を、別のトランザクションが第1階層に戻って向けられる場合/時(たとえば、リモート・デバイスが、第1階層内のオリジナルの要求するデバイスに要求されたデータを返す準備ができた時)に使用することができる。挿入されたバス番号は、基礎になるトランザクションを発した第1階層のクラスタ・ポートに戻って戻りトランザクションをルーティングするのに使用される。次に、クラスタ・ポートは、基礎になるオリジナル・トランザクションのリモート・メモリ・アドレスに基づいて、関連する基礎になるバス・トランザクションを適当な他の階層に転送するように動作可能である。リモート階層は、発するクラスタへ後に戻す(すなわち、要求されたデータが発するクラスタに戻る準備ができた時)のためにトランザクションID値を保存する。オリジナルの基礎になるトランザクションを開始した階層のクラスタ・ポートが、リモート・クラスタから戻る再マッピングされた/変換されたトランザクションIDを受け取る時に、複数階層内で発するクラスタを識別するのに使用されたバス番号は、ローカル階層内での発するデバイスの保存されたバス番号を含む予約済みビットに置換される。オリジナル・バス番号を保存するのに使用されたビットが、その後、除去される(たとえば、0の値に復元される)。次に、そのように変換されたトランザクションIDを伴うバス・トランザクションが、要求された情報を返すトランザクションを受け取ったクラスタ・ポートを含むローカル階層に適用される。
たとえば、読取りトランザクションでは、トランザクションIDを、次のように処理することができる。読取りトランザクションを発する階層のクラスタ・ポートは、ローカル・リクエスタIDバス番号を、トランザクションIDの予約済みビットに保存し、トランザクションIDバス番号をクラスタ・ポート・バス番号(それが接続されているバス)に置換する。このクラスタ・ポート・バス番号は、ローカル・リクエスタIDバス番号(予約済みビットに保存されている)がトランザクションID内でバス番号に復元される第1階層のクラスタ・ポートに戻って、読取り完了を第2階層からルーティングするのに使用される。次に、読取り完了トランザクションが、第1階層内でこのバス番号によってルーティングされる。第2階層クラスタ・ポートは、このトランザクションIDを絶対に変換しない。メモリ要求は、メモリ・アドレスを用いてルーティングされるが、要求のトランザクションIDは、パケットが第1階層のクラスタ・ポートを通過する時に変更される。読取り完了は、トランザクションIDによってルーティングされる。
当業者は、十分に機能するクラスタ・ポート300および/またはトランスレータ論理308内の多数の追加要素および/または同等の要素をたやすく認めるであろう。したがって、図3および4は、単に、クラスタ・ポート実施形態の通常の機能的要素の1つの可能な機能的分解の例として意図されている。さらに、当業者は、クラスタ・ポート300およびトランスレータ論理308の再マッピング機能および変換機能を実施する多数の組合せ論理回路設計をたやすく認めるであろう。
図5および6は、それぞれ、本明細書の特徴および態様による複数の階層の間で交換され得るメモリ・アドレスおよびトランザクションID内のビットの例示的再定義を説明する図である。図5に示されているように、アドレスの下位部分502(たとえば、PCIe空間の第1部分)を使用してクラスタ・ポートを含むローカル/第1階層のローカル・コンポーネントを参照できるように、PCIeパケット・ヘッダ内のメモリ・アドレス500を再マッピングすることができる。たとえば、64ビットPCIeメモリ・アドレスの下位48ビットを使用して、ローカル階層のローカル・コンポーネントにアクセスすることができる。すべての上位ビット(48から63まで)は、ローカル階層内のローカル・コンポーネントにアクセスするために、0として符号化される。クラスタ・ポートのコンフィギュレーション・プログラミングに従って、クラスタ・ポートは、上位ビット(48から63まで)にすべて0を有するメモリ・アドレスに応答しない。
逆に、上位ビット(48から63まで)が非0である場合に、クラスタ・ポート・コンフィギュレーション・レジスタ(たとえば、BAR)は、クラスタ・ポートがトランザクション内のメモリ・アドレスに応答することを許可する。具体的に言うと、64ビットPCIeメモリ・アドレスのビット48から63までは、リモート・コンポーネントがその中でアクセスされなければならないリモート階層を識別するクラスタ・アドレスまたは階層アドレス506を符号化することができる。次に、ローカル階層のクラスタ・ポートは、そのメモリ・アドレスを、ローカル階層のクラスタ・ポートをクラスタの他の階層に結合するPCIeスイッチに転送することができる。
より具体的には、PCIe空間のメモリ・アドレス空間の例示的パーティショニングで、ローカルPCIeメモリ空間(すなわち、空間の第1部分)内で、すべてのメモリが、メモリ空間の下位256テラバイトにマッピングされなければならない(たとえば、アドレス・ビット63から48までが0である)。
好ましくは、メモリ・アドレスによってルーティングされるパケット(メモリ読取りまたはメモリ書込み)が、これらの上位ビット(48から63まで)のいずれかをオンにしてローカルPCIe階層内で生成される時に、そのパケットは、そのクラスタ・ポートおよびクラスタ階層に向けられる。ローカルPCIeバスを、256テラバイト以上のメモリ・アドレス値を有するパケットをそのクラスタ・ポートに向け、そこからクラスタ階層スイッチ(1つまたは複数)を介して別の/リモート階層に向けるように構成することができる。したがって、メモリ・アドレス・ビット47から0までは、ローカルPCIe階層内でメモリ・パケットをルーティングするのに使用され、メモリ・アドレスのビット63から48までは、クラスタ階層におけるルーティング・ビットとして使用される。この特定の例示的マッピングは、クラスタ階層内で定義されるすべてのローカル階層メモリ・ウィンドウ(上で述べた)が異なる256テラバイト境界に整列されることを暗示する。これらのウィンドウは、サイズにおいて256テラバイトである必要はないが、256テラバイト・アラインメントで始まらなければならない。言い換えると、クラスタPCIe階層は、アドレス・ルーティングされるパケットが、適用されるメモリ・アドレスのアドレス・ビット63から48までだけに基づいてルーティングされるようにするために初期化されなければならない。この初期化は、クラスタ内のすべてのPCIeスイッチが256テラバイト粒度に基づいてパケットを転送する(アップストリーム、ダウンストリーム、またはピアツーピア)ようになるように、これらのPCIeスイッチを初期化することを含む。そのような初期化の例示的な追加の詳細を、本明細書で以下に提示する。
図5のメモリ・アドレスによって例示されるメモリ・アドレス空間のパーティショニングに加えて、本明細書の特徴および態様に従って、クラスタ・ポートは、トランザクションID値に関してPCIe空間のパーティショニング(たとえば、コンフィギュレーション空間のパーティショニング)をも実現する。当業者に周知のとおり、読取り要求(たとえば、メモリ・アドレスに基づくPCIeトランザクションとして開始された)の完了は、しばしば、別々のPCIeトランザクションでの要求されたデータの戻りを伴って、後の時刻に完了される。この戻りデータPCIeトランザクションは、返される情報がトランザクションとして適用されるべきデバイスのバス・セグメント(602)およびそのバス・セグメント上のデバイスID(604)を一般に識別する、トランザクションID(600)を含む。タグ・フィールド(608)およびファンクション値(606)は、さらに、それについて情報が返されようとしている特定のトランザクションを識別することができる。
本明細書の特徴および態様によるクラスタ・ポートは、バス番号の変換に使用されるトランザクションID 600フィールドのうちのいくつかのビットを予約することによって、PCIe空間のこのコンフィギュレーション空間のパーティショニングを実現する。コンフィギュレーション空間内のバス番号の第1部分は、ローカル階層内のローカル・バス番号へのローカル・アクセス用に予約することができる。PCIeコンフィギュレーション空間内のバス番号の第2部分は、その後、割り当てられたバス場号に基づくファブリックを介するトランザクションのルーティングを可能にするために、対応するバス番号によって各階層を識別するのに使用される。たとえば、バス番号(602)を参照するのにローカル階層内で使用されるビット数を、標準の8ビットのうちの5つに制限することができる。これらの5ビットは、返されるトランザクションがそれに向けられなければならないデバイスの発する階層内のローカル・バス番号を識別する。これらの5ビット(0と31との間のローカル・バス番号を指定する)は、初期トランザクションがローカル階層からクラスタ・ポートを介してファブリック内の別の階層へ向けられる時に、その階層のクラスタ・ポートの動作によって保存される。保存されたローカル・バス番号の代わりに、コンフィギュレーション空間の第2部分でのバス番号(32から255までの範囲のバス番号)が、戻りトランザクションが別のリモート階層から第1階層内の開始するデバイスに送り返される時にこのローカル階層のクラスタ・ポートを識別するために挿入される。そのような戻りトランザクションが、基礎になるトランザクションを開始した第1階層のクラスタ・ポートに達する時に、トランザクションID内の保存されたバス場号を、トランザクションIDのバス番号フィールド内の通常のビット位置に復元することができ、その後、トランザクションは、ローカル階層内で普通に処理される。
初期ローカル・バス番号をトランザクションID内に保存するために、デバイス番号(604)を参照するのにローカル階層内で使用されるビット数を、標準の5ビットのうちの3つに制限することができ、タグ・フィールド(608)内で定義される標準ビットのうちの限られた個数を、特定のトランザクションをさらに識別するためにローカル階層内で使用することができる。たとえば、タグ・フィールド608の下位5ビットを、ローカル階層内でトランザクションIDに使用することができる。あるいは、たとえば、ファンクション・フィールドの限られたビット数を使用し、残りのビットを、クラスタ情報を符号化するために解放することができる。
ローカル階層交換に使用されない追加ビットは、ローカル階層トランザクション内ですべて0でなければならず、したがって、PCIe空間のコンフィギュレーション空間の第1部分を定義する。PCIeスイッチ(1つまたは複数)ならびに第1階層および第2階層のクラスタ・ポートを介して第1階層と第2階層との間で交換されるトランザクションでは、予約済みビットは、関連するトランザクションが第2階層から第1階層に返される時に第1階層内の発するデバイスのバス番号を保存するのに使用される。当業者は、発するデバイスのバス番号を追加の予約済みビット内で符号化(すなわち、保存)できるようにするトランザクションIDのビットの多数の配分および再位置決めをたやすく認めるであろう。類似する形で、発するデバイスのバス番号の保存および復元を可能にする、実現可能なトランザクションID 600ビットの他のマッピングが、当業者にたやすく明白になるであろう。したがって、図6に提示された例示的な再マッピングまたは変換は、単に、トランザクションIDがシステムの第1階層と第2階層との間で交換される時にトランザクションID 600のビットを再マッピングするか変換することを可能にする1つの可能なそのようなマッピングとして意図されている。
図7に、複数のPCIe階層を含むシステム内で第1階層からその第1階層のクラスタ・ポートを介して第2階層に転送される時の例示的なPCIeメモリアドレスの例示的な変換または再マッピングを示す。図7に示された変換処理700は、メモリ・アドレス702が、それがシステムの別の階層内のコンポーネントを参照していることを示しながら、第1階層内で生成されることから始まる。上で注記したように、そのような表示は、第1階層内のローカル・コンポーネントのアドレッシングに使用されないメモリ・アドレス702の上位ビットのいずれかの非0値(たとえば、PCIe空間の第2部分内のアドレス)として符号化することができる。本明細書で述べるように、アドレス702の1つの例示的マッピングは、下位48ビット(0から47まで)が、すべての他の上位ビット(48から63まで)が0である時に、ローカル階層または第1階層内のコンポーネントのアドレッシングに使用されることをもたらす。したがって、メモリ・アドレス702は、第1階層による、別の階層内のリモート・コンポーネントをアドレッシングする試みを表す。アドレッシングされる特定の他の階層は、メモリ・アドレス702内の上位アドレス・ビットによって識別される。たとえば、ビット48から63までが、アドレス・ビット0から47までによってさらに識別されるコンポーネントがその中でアクセスされなければならない特定のクラスタを識別することができる。
メモリ・アドレス702は、第1階層内のクラスタ・ポートによって受け取られる。この第1階層のクラスタ・ポートのコンフィギュレーション・レジスタは、当業者に周知のようにプログラムされ、クラスタ・ポートが、メモリ・アドレス702のビット48から63までなどの上位アドレス・ビットに非0値を有するすべてのメモリ・アドレスに応答するようになっている。第1階層のクラスタ・ポートは、メモリ・アドレス702を伴うトランザクションを受け取り、メモリ・アドレス702を(本質的に変更なしで)メモリ・アドレス704としてクラスタ化された階層のスイッチト・ファブリック接続に転送する。PCIeスイッチを含むファブリックは、メモリ・アドレス704を受け取り、関連するトランザクションを、たとえばメモリ・アドレス704のビット48から63までで示される識別されたクラスタまたは階層のクラスタ・ポートに転送する。上で注記したように、また、当業者にたやすく明白になるように、システムのさまざまな階層を結合する1つまたは複数のPCIeスイッチのファブリックは、各特定のクラスタまたは階層を識別するメモリ・アドレス704の上位ビット内の値に基づいてトランザクションをスイッチングするようにプログラムされる。やはり上で注記したように、図7の例示的実施形態では、ビット48から63までは、トランザクションが向けられる特定のクラスタまたは階層を識別するために働く。
複数のPCIe階層を結合するスイッチト・ファブリックによってそのようにリダイレクトされたトランザクションは、所期の宛先階層すなわち第1階層が初期トランザクションをそれに向けることを意図した第2階層のクラスタ・ポートによって受け取られる。第2階層のクラスタ・ポートは、上位ビットを除去し、下位ビットだけを残して、第2階層内の変換されたローカル・アドレス706を生成する。言い換えると、上位ビット(たとえば、アドレス706で例示されるようにビット48から63まで)は、0にされ、その結果、下位アドレス・ビット(たとえば、ビット0から47まで)が、第2階層内の所望のコンポーネントをアドレッシングするのに使用される。したがって、第1階層内で生成されたアドレス702は、第1階層および第2階層のクラスタ・ポートならびに中間スイッチト・ファブリックを介して適用され、第2階層のクラスタ・ポートによってアドレス706に変換される。これによって、第1階層は、それ自体の階層内でローカルにアドレッシングされるかのように、別の階層内のリモート・コンポーネントを参照することができる。これによって、そのようなメモリ・アドレッシングされるPCIeトランザクションは、第1階層内で生成されたメモリ・アドレスを変換することと、変換されたメモリ・アドレスPCIeトランザクションをシステムの別のPCIe階層内の別のリモート・コンポーネントに転送することとによって、第1階層と第2階層との間で交換される。
当業者は、別のPCIe階層内のリモート・コンポーネントの対応するアドレスへの第1階層内で生成されたアドレスの変換を可能にするPCIeトランザクション内のメモリ・アドレスのビットの多数の同等のマッピングをたやすく認めるであろう。したがって、図7の例示的変換は、単に、そのような変換処理の、および階層の間でのそのような交換のためのPCIeメモリ・アドレス空間内で予約されたビットの定義の、1つの可能な実施形態として意図されている。
図7に似て、図8は、PCIeトランザクション内で利用されるトランザクションIDの例示的変換を説明する。当業者に一般に知られているように、トランザクションIDは、当初に要求によってアドレッシングされたデバイスがその後に要求されたトランザクションを完了し、オリジナル・リクエスタに情報を返す場合に、以前の読取り要求を完了するのに使用される。トランザクションIDフィールドは、当技術分野で一般に知られているように、特定のバス・セグメント、そのセグメント上のデバイス、ファンクション、および返される情報がそれに関連付けられなければならないタグを識別する、上で述べた複数の定義されたフィールドを含む。一般に、トランザクションIDは、要求する(第1)階層によってオリジナル・トランザクションの一部として生成される。アドレッシングされたデバイスが、要求を完了し、要求された情報を返す時に、トランザクションIDは、データを返すトランザクションと共に返され、クラスタ・ファブリック内で、そのトランザクションを第1階層内の発するデバイスにルーティングするのに使用される。
上で述べたように、トランザクションIDのフィールドを、本明細書の特徴および態様に従って、ローカル階層トランザクションのために短縮することができる。短縮されたフィールドは、トランザクションID内のフィールドのフル仕様に必要なビット数と比較して、符号化により少ないビットを必要とする。次に、未使用ビットを、トランザクションIDが第1PCIe階層と別のPCIe階層との間で交換される時にクラスタ関連情報を保持するために利用することができる。図8は、トランザクションID 802が対応するトランザクションに関連する第1階層内で生成される、変換処理800の例示である。次に、トランザクションID 802は、変換されたトランザクションID 804を生成するためにトランザクションIDのフィールドのさまざまなビットを再定義(再マッピングまたは変換)するために第1階層のクラスタ・ポートによって変換される。その変換されたトランザクションID 804は、トランザクションIDのオリジナル・ソースとして第1階層内の開始するデバイスのバス番号を保存する。上で注記したように、さまざまなフィールド内の未使用ビットを再定義することができ、フィールド自体を、オリジナルのローカル・バス番号を保存するために再マッピングすることができる。保存されたバス番号の代わりに、基礎になるトランザクションのイニシエータとしてこのローカル階層を識別するバス番号フィールドが、挿入される。上で述べ、図2に示したように、各階層の各クラスタ・ポートは、PCIeメモリ・アドレスおよびPCIeバス番号(パーティショニングされたPCIe空間の第2部分の)に関連する。したがって、変換されたトランザクションID 804に挿入されたバス番号(C0..C7)は、スイッチト・ファブリックにアタッチされた他の階層から見た時のローカル階層のバス番号(すなわち、クラスタ番号)である。
このトランザクションIDを受け取る第2階層内のリモート・デバイスは、情報を直接に復号する必要があるのではなく、要求された情報に関する対応する戻りトランザクションで返すためにこのトランザクションIDを格納する。したがって、変換されたトランザクションID 804を、クラスタを介してリモート階層に転送することができる。リモート階層デバイスが、戻りトランザクションを送り返す準備ができた時に、変換されたトランザクションID 804は、変換されたトランザクションID 804に符号化されたクラスタ番号(C0..C7)に従って階層を介してルーティングされる。
図8に示されているように、クラスタ番号またはバス番号を、通常はバス番号に使用される8ビットに符号化することができる。オリジナルのローカル・バス番号(B0..B4)は、デバイス番号フィールドの予約済みビット(ビット3および4)およびタグ番号フィールドの予約済みビット(ビット5、6、および7)に保存される。変換されたトランザクションID 804に符号化されるクラスタ番号(C0..C7)は、第1階層がスイッチト・ファブリックにアタッチされた他の階層に知られる時にオリジナルのトランザクションID 802を生成するのに使用された第1階層のクラスタ番号または階層番号である。第1階層をそのように識別するクラスタ番号または階層番号は、第1階層のクラスタ・ポートがPCIeファブリックに接続し、クラスタ・ポートのコンフィギュレーション・レジスタに含まれる、バス番号に対応する。次に、そのように符号化されたクラスタ番号または階層番号を、複数の階層を結合するスイッチト・ファブリックによって使用して、クラスタ化された階層内のバス番号を識別することができ、その結果、トランザクションに関連する返される情報を、まず、階層を介して、トランザクションIDを生成した第1階層に戻ってルーティングできるようになる。
次に、変換されたトランザクションIDは、スイッチト・ファブリックを介して、識別された宛先階層または提供されるトランザクションIDを含む基礎になるトランザクション内で識別されたクラスタに転送される。したがって、受け取るクラスタ・ポートは、変換されたトランザクションID 806を含むトランザクションを受け取り、基礎になるトランザクション要求に関連する情報の可能な戻しのために、変換されたトランザクションIDを保持する。たとえば、当業者に周知のように、第1階層は、オリジナルのトランザクションID 802を含み、図7に関して上で説明したようにメモリ・アドレスを利用してリモート・コンポーネントにアドレッシングされる、トランザクションを生成することができる。そのようなトランザクションは、いくつかの情報(たとえば、以前に格納されたユーザ・データ、管理状況関連情報など)を返すことを要求することができる。PCIeアーキテクチャで一般に知られているように、他の階層のリモート・コンポーネントは、要求されたトランザクションを完了し、要求された情報を返すのに、ある処理時間を必要とする場合がある。したがって、受け取られたトランザクションに関連するトランザクションIDは、返される情報を情報の戻しを要求したオリジナル・トランザクションに関連させるのに使用される。第2階層内のリモート・コンポーネントが、提供された基礎になるトランザクションを完了する時に、要求された情報が、第2階層によって保持される格納された変換されたトランザクションID 806を使用して第1階層に返される。したがって、上と同様に、変換されたトランザクションID 806に符号化されたクラスタ番号が、PCIeスイッチ(1つまたは複数)によって、返される情報を、発するクラスタまたは階層番号(すなわち、トランザクションIDの符号化で識別されるクラスタ)に戻って向けるのに使用される。発するクラスタ番号に正しく向けられる時に、その発する第1階層のクラスタ・ポートは、符号化された変換されたトランザクションID 804を受け取り、さまざまなビット・フィールドを変換するか再マッピングして、トランザクションID 802内で示されたオリジナルのトランザクションID値を復元する。具体的に言うと、クラスタ番号(変換されたトランザクションID 804のC0..C7)は、もはやトランザクションID内で不要であり、保存されたバス番号(B0..B4)を、その通常の標準化されたビット位置および値に復元することができる。具体的に言うと、図8に例示されているように、ローカル階層内の開始するデバイスのオリジナル・バス番号を、予約済みビット内の保存されたコピーから復元し、開始するローカル階層内での使用のためにトランザクションIDのバス番号フィールドに復元することができる。
当業者は、本明細書の特徴および態様による第1階層と第2階層との間でのPCIeスイッチト・ファブリックを介する交換のためにメモリ・アドレスまたはトランザクションIDを変換する多数の同等のマッピング・ステップをたやすく認めるであろう。したがって、図7および8は、単に、複数の階層の間でのそのようなマッピングおよび変換処理の1つの例示的実施形態として意図されている。
図9は、複数のPCIe階層システムの階層の間でのアクセスを可能にするための本明細書の特徴および態様による方法をおおまかに説明する流れ図である。要素900は、クラスタ化され相互接続された複数のPCIe階層のそのようなコンフィギュレーションを当初に提供する処理を表し、各階層は、その階層をPCIeスイッチト・ファブリックを介してシステムの他の階層のそれぞれに結合するクラスタ・ポートを含む。そのようなコンフィギュレーションを利用して、要素902は、次に、各階層のクラスタ・ポートを構成し、また、PCIeスイッチト・ファブリックを構成するように動作可能である。各階層のクラスタ・ポートは、一般に、各階層のクラスタ・ポートがPCIeスイッチト・ファブリックを介して階層の間で交換されるメモリ・アドレスおよびトランザクションIDに応答するようにするために、コンフィギュレーション・レジスタのそのセット(たとえば、BARレジスタおよび他のコンフィギュレーション・レジスタ)に値をプログラミングすることによって構成される。PCIeスイッチト・ファブリックは、一般に、各階層がPCIeバス番号(たとえば、バス・セグメント番号)およびメモリ・アドレスに関連するようにファブリックを含むスイッチを構成することによって構成される。上で注記したように、トランザクションID内のバス番号の1つの例示的なマッピングでは、バス番号0から31までを、各ローカル階層内の内部アクセス用に予約することができ、31より大きいバス番号(たとえば、32から255まで)を、各階層のクラスタ・ポートによって表されるその階層にバス番号を関連付けるためにPCIeスイッチによって割り当てることができる。類似する形で、PCIeスイッチを、上で述べたように、上位アドレス・ビットだけに基づいてさまざまな階層の間でメモリ・アドレッシングされたトランザクションをスイッチングするように構成することができる。たとえば、あるマッピングで、各階層を、PCIe空間の特定の256テラバイト整列されたセグメントに関連付けることができる。したがって、ファブリックのPCIeスイッチは、アドレスの上位16ビット(63から48まで)に基づいて、メモリ・アドレッシングされたトランザクションをスイッチングすることができる。例示的初期化の詳細を、本明細書で以下にさらに述べる。
次に、要素904は、複数階層の間のアクセスを可能にするためのシステムの進行中の動作を表す。より具体的には、要素904は、各階層がPCIe空間全体の第1部分にすべてが関連する標準PCIeトランザクションを使用してそれ自体のローカル階層内でトランザクションを実行できる、システムの進行中の動作を表す。さらに、要素904は、各階層がシステムの別の階層内のリモート・コンポーネントにアドレッシングされたPCIeトランザクションを実行できる、システムの進行中の動作を表す。各階層に関連するクラスタ・ポートは、第1階層と第2階層との間のトランザクションに関連するメモリ・アドレスおよびトランザクションIDのすべての必須の変換および再マッピングを実行する。
図10は、図9の要素902に関して上で述べた初期化処理の例示的な追加の詳細を提供する。要素1000は、そのめいめいのローカル・コンポーネントへのローカル・アクセスを提供するために各PCIe階層を初期化する処理を表す。この初期化ステップに含まれるのは、すべての非ローカル・アドレスに応答するための各PCIe階層のクラスタ・ポートの初期化である。本明細書で述べるように、PCIe空間は、そのような初期化によって効果的にパーティショニングされ、メモリ・アドレスおよびトランザクションID値の第1部分が、各階層内で厳密にローカルに処理されるようになっている。第1部分内で特に予約されてはいないすべての他のメモリ・アドレスおよび残りのトランザクションID値を表すPCIe空間の第2部分は、第2階層内のリモート・コンポーネントへの第1階層によるアクセスを可能にするのに使用される。各階層内のクラスタ・ポートは、中間PCIeスイッチト・ファブリックを介して第1階層と第2階層との間でトランザクションを交換することによって、PCIe空間のそのようなパーティショニングを実施する。次に、要素1002は、各階層によるそれ自体のローカル・コンポーネントへのローカル・アクセスを表す第1部分を構成するためのPCIe空間のパーティショニングを表す。次に、要素1004は、各ローカル階層がそれを介してシステム内の他の階層のリモート・コンポーネントにアクセスできる第2部分にPCIe空間をさらにパーティショニングするためのすべての追加処理を表す。
より具体的には、PCIe階層のクラスタを、メモリ・アドレス・ルーティングされるパケットが上位アドレス・ビット63から48までに基づいてスイッチト・ファブリックおよびクラスタ・ポートを介してルーティングされるのみになるようにするために初期化しなければならない。したがって、クラスタ化されたシステム内のすべてのPCIeスイッチは、それらが256テラバイト粒度に基づいてパケットを転送する(アップストリーム、ダウンストリーム、またはピアツーピア)ようになるために初期化されなければならない。PCIeクラスタ化のこの方法を確立する際に最初に検討される問題は、PCIe階層をどのように構成しまたは列挙するかである。さまざまな階層をスイッチト・ファブリックに結合して図示されているPCIeバスが、単に、上で注記したルーティング・コンフィギュレーションなしで一緒に接続される場合に、PCI列挙中に、複数のルート・デバイス(複数の階層の)が、それぞれ、そのローカル階層内のデバイスならびにクラスタ階層にまたがる他のローカル階層内のデバイスを構成することを試みるはずである。これを防ぐために、各ローカル階層のPCIeクラスタ・ポートは、前に述べたように、ローカル階層を調べるクラスタ階層の観点からは、PCIeエンドポイントのように見える。これは、あるローカル階層内のルート・デバイスが、別のローカル階層内のデバイスを構成するのを防ぐ。あるローカル階層内のルート・デバイスは、前に説明したコンフィギュレーション制限およびメモリ空間制限を伴ってそのローカル階層内のデバイスを構成することによって、列挙を開始する。そのローカル階層の列挙に加えて、クラスタ階層のルート接続として接続される、あるローカル階層の1つのルート・デバイスは、クラスタ階層をその階層の延長と見なすので、クラスタ階層をも列挙する。他のローカル階層のそれぞれのルート・デバイスが、そのめいめいのPCIeクラスタ・ポートを介してクラスタ階層を列挙することを試みる時に、それらが生成するコンフィギュレーション・パケットは、未サポートのパケットとして扱われる。というのは、それらのパケットが、クラスタ階層内で使用されるPCIeスイッチのダウンストリーム・ポートに送られるからである。これは、これらのすべての他のルート・デバイスに、クラスタ階層へのその境界で(すなわち、そのめいめいのクラスタ・ポートで)列挙を停止させる。この形で、1つのルート・デバイスだけが、クラスタ階層を列挙する。
次に、列挙の第2パスが、各ルート・デバイスによって、256テラバイト以上のアドレスを有するすべてのメモリ・アドレス・ルーティングされるパケットおよび31より大きいバス番号を有するIDルーティングされるパケットをそのルート・デバイスのPCIeクラスタ・ポートにルーティングするようにそのルート・デバイスのローカル・スイッチ(その階層にローカル)をセット・アップするために実行される。さらに、クラスタ階層のルート・デバイスは、クラスタ階層内のすべてのバス番号に31より大きい値をセットするために、クラスタ階層に対して第2列挙を実行しなければならない。追加の列挙が望ましいのは、通常のPCI列挙が、PCIeクラスタ化のこの方法の要件を満足する可能性が低いからである。
当業者は、本明細書の特徴および態様による方法で提供できる多数の同等のまたは追加のステップをたやすく認めるであろう。したがって、図9および10は、単に、クラスタ化されたPCIe環境で第1階層と第2階層との間のトランザクションで変換サービスおよびマッピング・サービスを提供する通常の処理の例示として意図されている。
本発明を、図面および前述の説明で図示し、説明したが、そのような図示および説明は、例示と考えられなければならず、性質において制限的ではない。本発明の一実施形態およびその些細な変形形態を、図示し、説明した。保護は、本発明の趣旨に含まれるすべての変更および修正について望まれる。当業者は、本発明の範囲に含まれる、上で述べた実施形態の変形形態を了解するであろう。具体的に言うと、当業者は、本明細書の特徴および態様を、電子回路内でまたは汎用プロセッサもしくは特殊目的プロセッサの適切にプログラムされた命令として同等に実施できることをたやすく認めるであろう。回路およびプログラミング設計のそのような同等性は、設計選択の問題として当業者に周知である。その結果、本発明は、上で述べた特定の例および図示に限定されるのではなく、添付の特許請求の範囲およびその同等物によってのみ限定される。

Claims (20)

  1. システムであって、
    各々が1つのPCI Express階層を含む複数のPCI Expressコントローラを含み、各階層が1つの関連するルート・コントローラを有し、各階層が1つの関連するクラスタ・ポートを有し、さらに、
    1つの物理PCI Expressバスを介して各階層の該クラスタ・ポートに結合されたPCI Expressスイッチを含み、
    各階層の該クラスタ・ポートが、該スイッチを介した第1階層による該複数の階層の任意の他の階層内のコンポーネントへの制御されたアクセスを可能にし、
    各階層の該クラスタ・ポートが該システムのPCI Express空間をパーティショニングして、該空間の第1部分を該各階層内で使用して該各階層内のローカル・コンポーネントを参照し、該空間の第2部分を該各階層内で使用して該複数の階層の他の階層内のリモート・コンポーネントを参照する、システム。
  2. 請求項1に記載のシステムにおいて、
    各階層の該クラスタ・ポートがさらに、
    該PCI Express空間のメモリ・アドレスをマッピングするメモリ・アドレス・マッピング要素を含み、該マッピング要素が、該クラスタ・ポートを含む該第1階層のローカル・コンポーネントに関連するアドレスと別の階層のリモート・コンポーネントのアドレスとの間でメモリ・アドレスを変換するように動作可能であるシステム。
  3. 請求項2に記載のシステムにおいて、
    該メモリ・アドレス・マッピング要素が、メモリ・アドレス・トランスレータであり、
    該メモリ・アドレス・トランスレータが、メモリ・アドレスの指定された上位アドレス・ビットに非0値を有する該PCI Express空間のセグメントに該第1階層以外の各階層を関連付けるように適合され、
    該メモリ・アドレス・トランスレータが、該指定された上位アドレス・ビットに0値を有する該PCI Express空間のセグメントに該第1階層のローカル・コンポーネントを関連付けるようにさらに適合されるシステム。
  4. 請求項1に記載のシステムにおいて、
    各階層の該クラスタ・ポートがさらに、
    該PCI Express空間内のPCI ExpressトランザクションIDを変換するコンフィギュレーション空間トランスレータを含み、該トランスレータが、該クラスタ・ポートを含む該第1階層と別の階層との間で交換される該トランザクションIDを変換するように動作可能であるシステム。
  5. 請求項4に記載のシステムにおいて、
    該システムが、該トランザクションIDの1つ又は複数のフィールド内の複数のビットを予約するように適合され、
    該コンフィギュレーション空間トランスレータが、該予約されるビット内の該トランザクションIDのオリジナル・バス番号を保存するように適合されるシステム。
  6. 請求項5に記載のシステムにおいて、
    該システムが、該トランザクションIDの該1つ又は複数のフィールドから5ビットを予約するように適合されるシステム。
  7. 請求項6に記載のシステムにおいて、
    該システムが、該トランザクションIDのバス番号フィールド内で3ビットを予約し、該トランザクションIDのデバイス番号フィールド内で2ビットを予約し、及び該トランザクションIDのタグ・フィールド内で3ビットを予約するように適合されるシステム。
  8. PCI Express階層を含むPCI Expressコントローラ内のクラスタ・ポートであって、
    該クラスタ・ポートをローカル階層に結合するPCI Expressスイッチへのローカル・インターフェースと、
    該クラスタ・ポートを、1つの物理PCI Expressバスを介して、1つ又は複数の他のPCI Express階層内のリモート・コンポーネントに結合するリモート・インターフェースと、
    該ローカル階層に関連する及び該他の階層に関連するPCI Expressコンフィギュレーション情報を格納するコンフィギュレーション・ストアと、
    該ローカル階層と該他の階層のいずれかとの間でPCI Expressトランザクションを変換するトランスレータ要素とを含み、
    該クラスタ・ポートが、該ローカル階層のコンポーネントと該1つ又は複数の他の階層内のリモート・コンポーネントとの間の制御されたアクセスを可能にし、
    該クラスタ・ポートが、該システムのPCI Express空間をパーティショニングするよう適合され、該空間の第1部分を該各階層内で使用してローカル階層内のローカル・コンポーネントを参照し、該空間の第2部分を該各階層内で使用して該他の階層のうちのもう1つの中のリモート・コンポーネントを参照する、クラスタ・ポート。
  9. 請求項8に記載のクラスタ・ポートにおいて、
    該トランスレータ要素がさらに、
    該PCI Express空間のメモリ・アドレスをマッピングするメモリ・アドレス・マッピング要素を含み、該マッピング要素が、該ローカル階層のローカル・コンポーネントに関連するアドレスと該他の階層のリモート・コンポーネントのアドレスとの間でメモリ・アドレスを変換するように動作可能であるクラスタ・ポート。
  10. 請求項9に記載のクラスタ・ポートにおいて、
    該メモリ・アドレス・マッピング要素が、メモリ・アドレス・トランスレータであり、
    該メモリ・アドレス・トランスレータが、メモリ・アドレスの指定された上位アドレス・ビットに非0値を有する該PCI Express空間のセグメントに各他の階層を関連付けるように適合され、
    該メモリ・アドレス・トランスレータが、該ローカル階層のローカル・コンポーネントを該指定された上位アドレス・ビットに0値を有する該PCI Express空間のセグメントに関連付けるようにさらに適合されるクラスタ・ポート。
  11. 請求項8に記載のクラスタ・ポートにおいて、
    該トランスレータ要素がさらに、
    該PCI Express空間内のPCI ExpressトランザクションIDを変換するコンフィギュレーション空間トランスレータを含み、該トランスレータが、該ローカル階層と別の階層との間で交換されるトランザクションIDを変換するように動作可能である、請求項8に記載のクラスタ・ポート。
  12. 請求項11に記載のクラスタ・ポートにおいて、
    該クラスタ・ポートが、該トランザクションIDの1つ又は複数のフィールド内の第1の複数のビットを予約するように適合され
    該クラスタ・ポートが、該他の階層のうちの特定の階層によって該ローカル階層を識別するために、該トランザクションIDの1つのフィールド内の第2の複数のビットを使用するように適合されるクラスタ・ポート。
  13. 請求項12に記載のクラスタ・ポートにおいて、
    該クラスタ・ポートが、該トランザクションIDの該1つ又は複数のフィールドから8ビットを予約するように適合されるクラスタ・ポート。
  14. 請求項13に記載のクラスタ・ポートにおいて、
    該クラスタ・ポートが、該トランザクションIDのバス番号フィールド内で3ビットを予約し、該トランザクションIDのデバイス番号フィールド内で2ビットを予約し、及び該トランザクションIDのタグ・フィールド内で3ビットを予約するように適合されるクラスタ・ポート。
  15. 複数のPCI Express階層を提供することを含み、各階層が関連するルート・コントローラを有し、各階層が関連するクラスタ・ポートを有し、さらに、
    各階層の該クラスタ・ポートに結合されるPCI Expressスイッチを提供し、
    他の階層の他のコンポーネントによる該各階層の選択されたコンポーネントへのアクセスを可能にするために各階層の該クラスタ・ポートを構成し、
    第1階層からその対応するクラスタ・ポートを介して別の階層のコンポーネントにアクセスする方法。
  16. 請求項15に記載の方法において、
    該構成することが、
    該複数の階層の各階層のPCI Express空間をパーティショニングして、該空間の第1部分を該各階層内で使用して該各階層内のローカル・コンポーネントを参照し、該空間の第2部分を該各階層内で使用して該複数の階層の他の階層内のリモート・コンポーネントを参照すること、をさらに含む方法。
  17. 請求項16に記載の方法において、
    該アクセスすることが、
    該クラスタ・ポートを含む該第1階層のローカル・コンポーネントに関連するアドレスと別の階層のリモート・コンポーネントのアドレスとの間でメモリ・アドレスを変換することによって、該PCI Express空間のメモリ・アドレスをマッピングするように該クラスタ・ポートを動作させること、をさらに含む、請求項16に記載の方法。
  18. 請求項16に記載の方法において、
    該アクセスすることが、
    該クラスタ・ポートを含む該第1階層と別の階層との間で交換されるPCI ExpressトランザクションIDを変換するように該クラスタ・ポートを動作させること、をさらに含む方法。
  19. 請求項16に記載の方法において、
    該構成することが、
    該複数の階層のそれぞれを、そのローカル階層内のコンポーネントにアクセスするように初期化し、
    該パーティショニングするステップによって定義される該第1部分及び該第2部分に従って該各階層の該クラスタ・ポートを初期化し、
    該パーティショニングするステップによって定義される該第1部分及び該第2部分に従って該PCI Expressスイッチを初期化する、ことをさらに含む方法。
  20. 請求項19に記載の方法において、
    該複数の階層のうちの1つの階層をスーパーバイザリ階層として指定することをさらに含み、
    該PCI Expressスイッチを初期化することが、該スーパーバイザリ階層の動作によって実行される方法。
JP2009551984A 2007-02-28 2007-09-21 複数の独立なpci express階層をクラスタ化する装置および方法 Expired - Fee Related JP4964968B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/680,366 2007-02-28
US11/680,366 US7562176B2 (en) 2007-02-28 2007-02-28 Apparatus and methods for clustering multiple independent PCI express hierarchies
PCT/US2007/079208 WO2008105933A2 (en) 2007-02-28 2007-09-21 Apparatus and methods for clustering multiple independent pci express hierarchies

Publications (3)

Publication Number Publication Date
JP2010520541A JP2010520541A (ja) 2010-06-10
JP2010520541A5 JP2010520541A5 (ja) 2010-07-22
JP4964968B2 true JP4964968B2 (ja) 2012-07-04

Family

ID=39717225

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009551984A Expired - Fee Related JP4964968B2 (ja) 2007-02-28 2007-09-21 複数の独立なpci express階層をクラスタ化する装置および方法

Country Status (6)

Country Link
US (1) US7562176B2 (ja)
EP (1) EP2115551B1 (ja)
JP (1) JP4964968B2 (ja)
KR (1) KR101364820B1 (ja)
CN (1) CN101669082B (ja)
WO (1) WO2008105933A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10289560B2 (en) 2016-03-10 2019-05-14 Toshiba Memory Corporation Switch module and storage system

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8189603B2 (en) 2005-10-04 2012-05-29 Mammen Thomas PCI express to PCI express based low latency interconnect scheme for clustering systems
US20090063894A1 (en) * 2007-08-29 2009-03-05 Billau Ronald L Autonomic PCI Express Hardware Detection and Failover Mechanism
US8976799B1 (en) 2007-10-01 2015-03-10 Apple Inc. Converged computer I/O system and bridging mechanism for peer-to-peer communication
GB2460014B (en) * 2008-04-28 2011-11-23 Virtensys Ltd Method of processing data packets
US20100011146A1 (en) * 2008-07-11 2010-01-14 Lsi Corporation Conveying Information With a PCI Express Tag Field
US9736012B2 (en) * 2008-11-14 2017-08-15 Dell Products, Lp System and method for sharing storage resources
US7895380B2 (en) * 2009-01-21 2011-02-22 Ati Technologies Ulc Communication protocol for sharing memory resources between components of a device
WO2010084529A1 (ja) * 2009-01-23 2010-07-29 株式会社日立製作所 情報処理システム
US9164700B2 (en) * 2009-03-05 2015-10-20 Sandisk Il Ltd System for optimizing the transfer of stored content in response to a triggering event
JP5267943B2 (ja) * 2009-03-30 2013-08-21 日本電気株式会社 PCI−Express通信システム、及びPCI−Express通信方法
US8335884B2 (en) * 2009-07-10 2012-12-18 Brocade Communications Systems, Inc. Multi-processor architecture implementing a serial switch and method of operating same
GB2473675B (en) * 2009-09-22 2011-12-28 Virtensys Ltd Switching method
US8402195B2 (en) * 2009-10-27 2013-03-19 Hitachi, Ltd. Storage system mounted with plurality of processors
US8327536B2 (en) 2010-06-30 2012-12-11 Apple Inc. Method of manufacturing high-speed connector inserts and cables
US9112310B2 (en) 2010-06-30 2015-08-18 Apple Inc. Spark gap for high-speed cable connectors
BR112012030352B1 (pt) 2010-06-30 2020-12-29 Apple Inc Cabo ativo, conjunto de cabo e circuito de conector e de caminho de sinal para um dispositivo eletrônico para permitir que sinais sejam compatíveis com vários padrões e compartilhem um conector comum
US8463977B2 (en) * 2010-09-09 2013-06-11 Stephen Dale Cooper Use of PCI express for CPU-to-CPU communication
KR101733203B1 (ko) * 2010-10-13 2017-05-08 삼성전자주식회사 아이디 컨버터를 포함하는 버스 시스템 및 그것의 변환 방법
US8375156B2 (en) * 2010-11-24 2013-02-12 Dialogic Corporation Intelligent PCI-express transaction tagging
CN102480426B (zh) * 2010-11-25 2014-07-09 迈普通信技术股份有限公司 基于pcie交换总线的通信方法及一种pcie交换系统
US20120226774A1 (en) 2011-02-23 2012-09-06 Apple Inc. Display snooping
US8904105B2 (en) 2011-03-15 2014-12-02 Dell Products L.P. System and method for performing raid I/O operations in PCIE-based storage resources
JP5687959B2 (ja) * 2011-06-20 2015-03-25 株式会社日立製作所 I/oデバイス共有方法、および装置
US8725919B1 (en) * 2011-06-20 2014-05-13 Netlogic Microsystems, Inc. Device configuration for multiprocessor systems
US8650471B2 (en) 2011-06-28 2014-02-11 Dell Products L.P. System and method for look-aside parity based raid
JP5903801B2 (ja) * 2011-08-23 2016-04-13 富士通株式会社 通信装置およびid設定方法
EP2761479A4 (en) * 2011-09-30 2015-04-15 Intel Corp MECHANISM FOR FACILITATING THE CUSTOMIZATION OF MULTIPURPOSE INTERCONNECTING AGENTS ON COMPUTER DEVICES
US8949474B1 (en) * 2011-11-21 2015-02-03 Marvell International Ltd. Method for inter-chip and intra-chip addressing using port identifiers and address mapping
KR20130081526A (ko) 2012-01-09 2013-07-17 삼성전자주식회사 저장 장치, 그것을 포함하는 전자 장치, 및 그것의 데이터 관리 방법들
US8984201B2 (en) * 2012-06-01 2015-03-17 International Business Machines Corporation Providing I2C bus over Ethernet
US8966148B2 (en) * 2012-06-01 2015-02-24 International Business Machines Corporation Providing real-time interrupts over Ethernet
US20140006644A1 (en) * 2012-06-28 2014-01-02 Lsi Corporation Address Remapping Using Interconnect Routing Identification Bits
US20140047156A1 (en) * 2012-08-09 2014-02-13 Emillo BILLI Hybrid computing system
DE102012017339B4 (de) * 2012-08-31 2014-12-24 Airbus Defence and Space GmbH Rechnersystem
KR101934519B1 (ko) 2012-11-26 2019-01-02 삼성전자주식회사 저장 장치 및 그것의 데이터 전송 방법
KR102007368B1 (ko) 2012-12-17 2019-08-05 한국전자통신연구원 Pci 익스프레스 스위치 및 이를 이용한 컴퓨터 시스템
US9489151B2 (en) 2013-05-23 2016-11-08 Netapp, Inc. Systems and methods including an application server in an enclosure with a communication link to an external controller
KR101695012B1 (ko) 2013-06-04 2017-01-10 한국전자통신연구원 동적 노드 서비스 제공 방법 및 그 장치
US9135200B2 (en) * 2013-06-28 2015-09-15 Futurewei Technologies, Inc. System and method for extended peripheral component interconnect express fabrics
US10684973B2 (en) * 2013-08-30 2020-06-16 Intel Corporation NUMA node peripheral switch
ES2761927T3 (es) 2013-12-31 2020-05-21 Huawei Tech Co Ltd Método y aparato para extender el dominio PCIE
KR102219759B1 (ko) 2015-01-09 2021-02-25 삼성전자주식회사 저장 장치, 그것을 포함하는 데이터 저장 시스템 및 그것의 동작 방법
JP6704127B2 (ja) * 2017-04-07 2020-06-03 パナソニックIpマネジメント株式会社 情報処理装置
CN109324899B (zh) * 2018-09-10 2022-05-20 中国电子科技集团公司电子科学研究院 基于PCIe池化硬件资源的编址方法、装置及主控节点
CN113168389B (zh) * 2018-12-28 2023-03-31 华为技术有限公司 用于锁定具有非透明桥接的PCIe网络的装置和方法
CN111367844B (zh) 2019-03-13 2020-12-15 苏州库瀚信息科技有限公司 有多个异构网络接口端口的存储控制器的系统、方法和装置
US20230057698A1 (en) * 2021-08-23 2023-02-23 Nvidia Corporation Physically distributed control plane firewalls with unified software view
CN113886310A (zh) * 2021-11-02 2022-01-04 上海兆芯集成电路有限公司 桥接模块、数据传输系统和数据传输方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7310319B2 (en) * 2001-11-02 2007-12-18 Intel Corporation Multiple-domain processing system using hierarchically orthogonal switching fabric
US7120711B2 (en) * 2002-12-19 2006-10-10 Intel Corporation System and method for communicating over intra-hierarchy and inter-hierarchy links
US7457906B2 (en) * 2003-01-21 2008-11-25 Nextio, Inc. Method and apparatus for shared I/O in a load/store fabric
US7334071B2 (en) * 2005-05-25 2008-02-19 Integrated Device Technology, Inc. Expansion of cross-domain addressing for PCI-express packets passing through non-transparent bridge
US8189603B2 (en) * 2005-10-04 2012-05-29 Mammen Thomas PCI express to PCI express based low latency interconnect scheme for clustering systems
US7516263B2 (en) * 2006-02-27 2009-04-07 Emerson Network Power - Embedded Computing, Inc. Re-configurable PCI-Express switching device
US20070234118A1 (en) * 2006-03-30 2007-10-04 Sardella Steven D Managing communications paths
US7657663B2 (en) * 2006-12-19 2010-02-02 International Business Machines Corporation Migrating stateless virtual functions from one virtual plane to another

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10289560B2 (en) 2016-03-10 2019-05-14 Toshiba Memory Corporation Switch module and storage system
USRE49117E1 (en) 2016-03-10 2022-06-28 Kioxia Corporation Switch module and storage system

Also Published As

Publication number Publication date
EP2115551A2 (en) 2009-11-11
CN101669082B (zh) 2012-07-04
WO2008105933A2 (en) 2008-09-04
US7562176B2 (en) 2009-07-14
WO2008105933A3 (en) 2008-10-16
CN101669082A (zh) 2010-03-10
JP2010520541A (ja) 2010-06-10
EP2115551A4 (en) 2010-08-11
US20080209099A1 (en) 2008-08-28
EP2115551B1 (en) 2013-05-01
KR101364820B1 (ko) 2014-02-19
KR20090117885A (ko) 2009-11-13

Similar Documents

Publication Publication Date Title
JP4964968B2 (ja) 複数の独立なpci express階層をクラスタ化する装置および方法
US9256560B2 (en) Controller integration
US8176204B2 (en) System and method for multi-host sharing of a single-host device
US6067595A (en) Method and apparatus for enabling high-performance intelligent I/O subsystems using multi-port memories
US8223745B2 (en) Adding packet routing information without ECRC recalculation
US7613864B2 (en) Device sharing
US9052829B2 (en) Methods and structure for improved I/O shipping in a clustered storage system
US7565463B2 (en) Scalable routing and addressing
US7574536B2 (en) Routing direct memory access requests using doorbell addresses
US20060242330A1 (en) Proxy-based device sharing
US20090177805A1 (en) Dual port serial advanced technology attachment (sata ) disk drive
US20060242354A1 (en) Flexible routing and addressing
JP5903801B2 (ja) 通信装置およびid設定方法
WO2006115752A2 (en) Virtualization for device sharing
KR102007368B1 (ko) Pci 익스프레스 스위치 및 이를 이용한 컴퓨터 시스템
JP5469081B2 (ja) 制御パス入出力仮想化方法
TW202240415A (zh) PCIe裝置及其操作方法
CN115203095A (zh) PCIe装置及其操作方法
CN115203110A (zh) PCIe功能及其操作方法
Yin et al. A reconfigurable rack-scale interconnect architecture based on PCIe fabric
JP4774099B2 (ja) 演算処理装置、情報処理装置及び演算処理装置の制御方法
KR20220141686A (ko) PCIe 인터페이스 장치 및 그 동작 방법
CN116893988A (zh) 接口设备及其操作方法
CN116955250A (zh) 快速外围组件互连设备及其操作方法

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100604

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100604

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110722

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110803

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111102

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111110

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120203

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120305

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120328

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150406

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees