(57)【特許請求の範囲】
【請求項１】
複数のメモリと複数のルート複合体と通信ファブリックとを備えるデータ処理システムにおいて、前記複数のルート複合体間の通信のために前記メモリを初期設定するための方法であって、
前記データ処理システム内の前記通信ファブリックのコンポーネントの第１の仮想階層を生成するステップであって、前記第１の仮想階層が前記データ処理システムの第１のルート複合体に関連付けられるステップと、
前記データ処理システム内の前記通信ファブリックのコンポーネントの第２の仮想階層を生成するステップであって、前記第２の仮想階層が前記データ処理システムの第２のルート複合体に関連付けられるステップと、
前記第２の仮想階層内のＰＣＩｅｘｐｒｅｓｓ仕様における所定のエンドポイントについて、前記第１のルート複合体に関連する第１のメモリ内のアドレス範囲を割り当てるステップであって、前記第１のルート複合体に関連する第１のメモリ内のアドレス範囲は前記第１のルート複合体に関連する第１のホスト・システムによってメモリ・マップ入出力によりアクセス可能である、ステップと、
前記第２の仮想階層内の前記エンドポイントについて、前記第２のルート複合体に関連する第２のメモリ内のアドレス範囲を割り当てるステップであって、前記第２のルート複合体に関連する第２のメモリ内のアドレス範囲は、前記第２のルート複合体に関連する第２のホスト・システムにより、前記第２のホスト・システムの実アドレスを通じて、アクセス可能である、ステップと、
前記第１のルート複合体に関連する第１のホスト・システムから前記第２のルート複合体に関連する第２のホスト・システムへの通信を実行するステップであって、前記通信の実行は、前記第１のホスト・システムによって、前記第１のメモリの前記第１のルート複合体に関連する第１のメモリ内のアドレス範囲に書き込みを行い、前記エンドポイントによって、少なくとも１つのダイレクト・メモリ・アクセス動作によるものであり、前記少なくとも１つのダイレクト・メモリ・アクセス動作の各々は、前記第１のメモリの前記第１のルート複合体に関連する第１のメモリ内のアドレス範囲にアクセスし、その結果を前記第２のメモリの前記第２のルート複合体に関連する第２のメモリ内のアドレス範囲にマッピングし、
前記第１の仮想階層を生成する前記ステップと、前記第２の仮想階層を生成する前記ステップが、
前記通信ファブリックの前記コンポーネントを発見するために前記通信ファブリック内のリンクをトラバースするステップと、
前記通信ファブリックの前記コンポーネントに関する識別データを保管するステップと、
保管された前記識別データに基づいて前記第１および第２の仮想階層を生成するステップと、
を含み、  
保管された前記識別データに基づいて前記第１および第２の仮想階層を生成する前記ステップが、
前記エンドポイントのコンポーネントに関する前記識別データを、前記通信ファブリック内の前記リンクのトラバース中に発見された各ルート複合体のコンポーネントに関する識別データと比較するステップと、
前記エンドポイントのコンポーネントに関する前記識別データがルート複合体のコンポーネントに関する識別データに一致する場合に、前記エンドポイントのコンポーネントに関連する共存フィールド値を設定するステップと、
前記通信ファブリックのエンドポイントのコンポーネントに関連する共存フィールド値に基づいて、前記第１および第２の仮想階層を生成するステップと、
を含む、方法。
【請求項２】
前記第１の仮想階層を生成する前記ステップと、前記第２の仮想階層を生成する前記ステップと、
前記第１のルート複合体に関連する第１のメモリ内のアドレス範囲を割り当てるステップと、
前記第２のルート複合体に関連する第２のメモリ内のアドレス範囲を割り当てるステップとが、それぞれの前記第１および第２のルート複合体に関連する単一ルート周辺装置相互接続マネージャ（ＳＲ−ＰＣＩＭ）によって実行される、請求項１に記載の方法。
【請求項３】
前記ＳＲ−ＰＣＩＭが、対応する仮想階層の前記エンドポイントについて、前記エンドポイントが属すＰＣＩメモリ・アドレス空間内の基底アドレスおよび限界を割り当て、前記ＳＲ−ＰＣＩＭが、前記エンドポイントの基底アドレス・レジスタ（ＢＡＲ）に前記基底アドレスおよび限界を書き込む、請求項２に記載の方法。
【請求項４】
前記ＳＲ−ＰＣＩＭが、それぞれのルート複合体に関連する前記仮想階層のみに基づいて、それぞれのルート複合体に関連するメモリを個別に構成し、前記ＳＲ−ＰＣＩＭが、前記通信ファブリックのリンクのすべてをトラバースし、前記通信ファブリック内に存在するエンドポイントとルート複合体との間の関連付けを識別する複数ルート周辺装置相互接続マネージャ（ＭＲ−ＰＣＩＭ）によって収集された情報に基づいて、前記仮想階層を生成する、請求項２又は３に記載の方法。
【請求項５】
前記データ処理システムがブレード・サーバであり、前記ホスト・システムが前記ブレード・サーバのブレードである、請求項１乃至４のいずれかに記載の方法。
【請求項６】
前記通信ファブリックが、１つまたは複数の複数ルート認識（ＭＲＡ）スイッチを含む複数ルート認識通信ファブリックである、請求項１乃至５のいずれかに記載の方法。
【請求項７】
前記第１および第２のメモリ内の前記割り当て済みアドレス範囲を使用して、前記第１のルート複合体と前記第２のルート複合体との間で通信を実行する前記ステップが、アドレス変換および保護テーブル・データ構造を使用して、前記第１または第２のメモリのうちの一方に関連するアドレスを前記第１または第２のメモリのうちの他方に関連するアドレスにマッピングするステップを含む、請求項１乃至６のいずれかに記載の方法。
【請求項８】
前記第１の仮想階層内の各ルート複合体ごとに、前記第１のルート複合体に関連する前記第１のルート複合体に関連する第１のメモリ内のアドレス範囲を割り当てるステップと、
前記第２の仮想階層内の各ルート複合体ごとに、前記第２のルート複合体に関連する前記第２のルート複合体に関連する第２のメモリ内のアドレス範囲を割り当てるステップであって、前記第１のホスト・システムと前記第２のホスト・システムとの間の通信が前記第１のルート複合体と前記第２のルート複合体との間で実行されるステップと、
をさらに含む、請求項1乃至７のいずれかに記載の方法。
【請求項９】
前記第１のホスト・システムから前記第２のホスト・システムへの通信が、前記第１のホスト・システムと前記第２のホスト・システムのルート複合体と、前記第２のホスト・システムのエンドポイントとの間で実行される、請求項1乃至８のいずれかに記載の方法。
【請求項１０】
データ処理システム内で実行されることで、前記データ処理システムに請求項１乃至９のいずれかに記載の方法を実行させるコンピュータ・プログラム。
【請求項１１】
第１のルート複合体を含む第１のホスト・システムと、
第２のルート複合体を含む第２のホスト・システムと、
前記第１のホスト・システムを前記第２のホスト・システムに結合する通信ファブリックとを含み、
前記第１のホスト・システムが前記通信ファブリックのコンポーネントの第１の仮想階層を生成し、前記第１の仮想階層が前記第１のルート複合体に関連付けられ、
前記第２のホスト・システムが前記通信ファブリックのコンポーネントの第２の仮想階層を生成し、前記第２の仮想階層が前記第２のルート複合体に関連付けられ、
前記第１のホスト・システムが、前記第２の仮想階層内のＰＣＩｅｘｐｒｅｓｓ仕様における所定のエンドポイントについて、前記第１のルート複合体に関連する第１のメモリ内の第１のアドレス範囲を割り当て、前記第１のアドレス範囲は前記第１のホスト・システムによってメモリ・マップ入出力によりアクセス可能であり、
前記第２のホスト・システムが、前記第２の仮想階層内の前記エンドポイントについて、前記第２のルート複合体に関連する第２のメモリ内の第２のアドレス範囲を割り当て、前記第２のアドレス範囲は、前記第２のホスト・システムの実アドレスを通じて、第２のホスト・システムによりアクセス可能であり、
前記第１および第２のメモリ内の前記割り当て済みアドレス範囲を使用して、前記第１のホスト・システムから前記第２のホスト・システムへの通信が実行され、前記通信は、前記第１のホスト・システムによる前記第１のアドレス範囲への書込み、および、前記エンドポイントによる少なくとも１つのダイレクト・メモリ・アクセス動作により、実行され、前記少なくとも１つのダイレクト・メモリ・アクセス動作の各々が前記第１のメモリ内の前記第１のアドレス範囲にアクセスし、その結果を前記第２のメモリの前記第２のアドレス範囲にマッピングし、
前記通信ファブリックの前記コンポーネントを発見するために前記通信ファブリック内のリンクをトラバースし、前記通信ファブリックの前記コンポーネントに関する識別データを保管することと、保管された前記識別データに基づいて前記第１および第２の仮想階層を生成すること、により、前記第１のホスト・システムが前記第１の仮想階層を生成し、前記第２のホスト・システムが前記第２の仮想階層を生成し、
前記エンドポイントのコンポーネントに関する前記識別データを、前記通信ファブリック内の前記リンクのトラバース中に発見された各ルート複合体コンポーネントに関する識別データと比較し、
前記エンドポイントのコンポーネントに関する前記識別データがルート複合体コンポーネントに関する識別データに一致する場合に、前記エンドポイント・コンポーネントに関連する共存フィールド値を設定し、
前記通信ファブリックのエンドポイント・コンポーネントに関連する共存フィールド値に基づいて、前記第１および第２の仮想階層を生成すること、
により、保管された前記識別データに基づいて、前記第１のホスト・システムが前記第１の仮想階層を生成し、前記第２のホスト・システムが前記第２の仮想階層を生成する、データ処理システム。
【請求項１２】
前記第１のホスト・システムおよび前記第２のホスト・システムが、それぞれの前記第１および第２のルート複合体に関連する単一ルート周辺装置相互接続マネージャ（ＳＲ−ＰＣＩＭ）を使用して前記生成動作および割り当て動作を実行する、請求項１１に記載のデータ処理システム。
【請求項１３】
前記ＳＲ−ＰＣＩＭが、対応する仮想階層の前記エンドポイントについて、前記エンドポイントが属すＰＣＩメモリ・アドレス空間内の基底アドレスおよび限界を割り当て、前記ＳＲ−ＰＣＩＭが、前記エンドポイントの基底アドレス・レジスタ（ＢＡＲ）に前記基底アドレスおよび限界を書き込む、請求項１２に記載のデータ処理システム。
【請求項１４】
前記ＳＲ−ＰＣＩＭが、それぞれのルート複合体に関連する前記仮想階層のみに基づいて、それぞれのルート複合体に関連するメモリを個別に構成し、前記ＳＲ−ＰＣＩＭが、前記通信ファブリックのリンクのすべてをトラバースし、前記通信ファブリック内に存在するエンドポイントとルート複合体との間の関連付けを識別する複数ルート周辺装置相互接続マネージャ（ＭＲ−ＰＣＩＭ）によって収集された情報に基づいて、前記仮想階層を生成する、請求項１２又は１３に記載のデータ処理システム。
【請求項１５】
前記データ処理システムがブレード・サーバであり、前記ホスト・システムが前記ブレード・サーバのブレードである、請求項１１乃至１４のいずれかに記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、一般に、改良されたデータ処理システムおよび方法に関する。より具体的には、本出願は、複数のルート複合体全体でエンドポイントを共用するために共用メモリを初期設定するためのメカニズムを対象とする。
【背景技術】
【０００２】
多くの近代的なコンピューティング・デバイスは、そもそも１９９０年代にインテル社によって作成された周辺装置相互接続規格のあるバージョンまたは実装例を使用する入出力（Ｉ／Ｏ：input/output）アダプタおよびバスを利用する。周辺装置相互接続（ＰＣＩ：Peripheral ComponentInterconnect）規格は、コンピュータ・マザーボードに周辺装置を接続するためのコンピュータ・バスを規定するものである。ＰＣＩ  ＥｘｐｒｅｓｓまたはＰＣＩｅは、既存のＰＣＩプログラミング概念を使用するＰＣＩコンピュータ・バスの実装例の１つであるが、大きく異なり、より高速のシリアル物理層通信プロトコルをそのコンピュータ・バスの基礎とする。この物理層は、複数のデバイス間で共用できる双方向バスから構成されるのではなく、正確に２つのデバイスに接続される１つの単一方向リンクから構成される。
【０００３】
図１は、ＰＣＩｅ規格によるＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）のファブリック・トポロジ（ネットワークの接続形態の構造）を例示する図である。図１に図示されている通り、ＰＣＩｅファブリック・トポロジ１００は、ルート複合体１３０に結合されたホスト・プロセッサ（ＣＰＵ）１１０およびメモリ１２０から構成され、次に、そのルート複合体１３０は、ＰＣＩｅエンドポイント１４０（「エンドポイント」という用語は、ＰＣＩｅ対応入出力アダプタについて言及するためにＰＣＩｅ規格で使用されるものである）、ＰＣＩ  Ｅｘｐｒｅｓｓ／ＰＣＩブリッジ１５０、および１つまたは複数の相互接続スイッチ１６０のうちの１つまたは複数に結合されている。ルート複合体１３０は、ＣＰＵ／メモリを入出力アダプタに接続する入出力階層のルートを意味する。ルート複合体１３０は、ホスト・ブリッジと、ゼロまたは１つ以上のルート複合体統合エンドポイントと、ゼロまたは１つ以上のルート複合体イベント・コレクタと、１つまたは複数のルート・ポートとを含む。各ルート・ポートは個別の入出力階層をサポートする。入出力階層は、ルート複合体１３０と、ゼロまたは１つ以上の相互接続スイッチ１６０またはブリッジ１５０あるいはその両方（スイッチまたはＰＣＩｅファブリックを含むもの）と、エンドポイント１７０および１８２〜１８８などの１つまたは複数のエンドポイントから構成することができる。ＰＣＩおよびＰＣＩｅに関する追加情報については、ｗｗｗ．ｐｃｉｓｉｇ．ｃｏｍの周辺装置相互接続分科会（ＰＣＩ−ＳｉＧ：peripheral component interconnect special interest group）Ｗｅｂサイトから入手可能なＰＣＩおよびＰＣＩｅ規格を参照する。
【０００４】
現在、ＰＣＩおよびＰＣＩｅ入出力アダプタ、バスなどは、ブレード・サーバのブレードを含む、ほとんどすべてのコンピューティング・デバイスのマザーボードに統合されている。ブレード・サーバは、本質的に、いくつかの個別最小パッケージ・コンピュータ・マザーボード「ブレード」用のハウジングであり、そのそれぞれは、１つまたは複数のプロセッサと、コンピュータ・メモリと、コンピュータ記憶域と、コンピュータ・ネットワーク接続とを含むが、シャーシの共通電源および空冷リソースを共用する。ブレード・サーバは、Ｗｅｂホスティングおよびクラスタ・コンピューティングなどの特殊用途には理想的なものである。
【０００５】
前述の通り、ＰＣＩおよびＰＣＩｅ入出力アダプタは、典型的には、ブレード自体に統合される。その結果として、入出力アダプタは、同じブレード・サーバ内のブレード全域で共用することができない。その上、入出力アダプタの統合により、リンク・レートのスケーラビリティが制限される。すなわち、リンク・レートは、時間の経過につれてプロセッサ・パフォーマンスでスケーリングすることができない。現時点では、複数のブレード全域の複数のシステム・イメージによってＰＣＩおよびＰＣＩｅ入出力アダプタを共用できるようにするメカニズムは、まったく考案されていない。その上、１つのブレード・サーバ内の複数のブレードによって使用するためにＰＣＩおよびＰＣＩｅ入出力アダプタを非統合方式で提供できるようにするメカニズムは、まったく考案されていない。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
現行のＰＣＩおよびＰＣＩｅ入出力アダプタの統合による制限に対処するために、例示的な諸実施形態は、１つのＰＣＩｅアダプタを２つまたはそれ以上のシステム・イメージ（ＳＩ：system image）によって固有に共用できるようにするメカニズムを提供する。たとえば、エンドポイント、たとえば、ＰＣＩｅ入出力アダプタを同じルート複合体内の複数のＳＩによって、または共通ＰＣＩスイッチ・ファブリックを共用する、すなわち、共通ＰＣＩスイッチ・ファブリックに結合される複数のルート複合体（ＲＣ：rootcomplex）全域で同時に共用できるようにするためのメカニズムが提供される。このメカニズムにより、各ルート複合体ならびにそれに関連する物理エンドポイントまたは仮想エンドポイント（ＶＥＰ：virtualendpoint）あるいはその両方は、それぞれ専用の固有のＰＣＩメモリ・アドレス空間を有することができる。
【０００７】
加えて、基本ＰＣＩ規格から欠落しているが、エンドポイントの共用の結果として得られる複合体構成を管理するために必要なことは、エンドポイント内のＰＣＩ機能の組み合わせとして可能なものを決定し、それを管理する必要性である。したがって、本明細書の例示的な諸実施形態は、ブレード・サーバ内の第１のブレードの１つのルート複合体が同じかまたは異なるブレード・サーバ内の第２のブレードの第２のルート複合体と通信するためのメカニズムを提供する。例示的な諸実施形態では、このような通信を容易にするために使用されるマルチルート・ブレード・クラスタ内のルート複合体とエンドポイントとの間の共用メモリを初期設定するためのメカニズムを提供することにより、このような通信をサポートする。
【課題を解決するための手段】
【０００８】
例示的な一実施形態では、マルチルートＰＣＩｅ構成マネージャ（ＭＲ−ＰＣＩＭ：multi-root PCIe configuration manager）は、ＰＣＩｅスイッチ・ファブリックの相互接続スイッチによりアクセス可能なすべてのリンクをトラバースすることによってＰＣＩｅスイッチ・ファブリック、すなわち、ＰＣＩｅ階層を発見することにより、ルート複合体とエンドポイントとの間の共用メモリを初期設定する。リンクをトラバースするにつれて、ＭＲ−ＰＣＩＭは、ルート複合体およびエンドポイントのそれぞれについて入手した情報を比較して、どのエンドポイントおよびルート複合体が同じブレード上に存在するかを判断する。次に、ＰＣＩｅスイッチ・ファブリック上で使用可能なエンドポイントを各ルート複合体に結合する仮想ＰＣＩｅツリー・データ構造が生成される。同じＰＣＩｅツリーの一部であるエンドポイント、すなわち、同じルート複合体に関連するエンドポイントは、この仮想ＰＣＩｅツリー・データ構造で関連付けられる。
【０００９】
次に、ＭＲ−ＰＣＩＭは、各エンドポイントが属すＰＣＩｅメモリ・アドレス空間内の基底および限界をそのエンドポイントに与えることができる。同様に、次に、ＭＲ−ＰＣＩＭは、各ルート複合体が属すＰＣＩｅメモリ・アドレス空間内の基底および限界をそのルート複合体に与えることができる。様々なエンドポイントおよびルート複合体のＰＣＩｅメモリ・アドレス空間同士をマッピングするために、メモリ変換および保護テーブル・データ構造を生成することができる。
【００１０】
たとえば、特定のエンドポイントまたはルート複合体の場合、そのエンドポイントまたはルート複合体は、第１のホストの実メモリ・アドレス空間に関連付けることができる。同じエンドポイントまたはルート複合体は、第１のホストのＰＣＩバス・メモリ・アドレスにより直接メモリ・アクセス入出力としてアクセス可能な第２のホスト・メモリ上のＰＣＩｅアパーチャを介して第２のホストによりアクセス可能なものになりうる。第１のホストは、第２のホストによって認識されるＰＣＩｅメモリ・アドレスを第１のホストの実メモリ・アドレスにマッピングするために、メモリ変換および保護テーブル・データ構造を使用することができる。
【００１１】
さらに他の例示的な実施形態では、エンドポイントがホスト・システム全域のルート複合体によりアクセス可能なものになりうるようにホスト・システムのメモリ・アドレス空間を初期設定すると、その後、これらのメモリ・アドレス空間を使用して、これらのルート複合体に関連するシステム・イメージとそれに対応するアプリケーションがエンドポイントと通信できるようにすることができる。
【００１２】
このような通信を容易にする方法の１つは、様々なホスト・システム内のこれらの初期設定済みメモリ・アドレス空間を使用するキューイング・システムを介するものである。このようなキューイング・システムは、作業キュー構造と完了キュー構造とを含むことができる。作業キュー構造と完了キュー構造はいずれも、いくつかのキュー・エレメント（そのキュー構造が作業キュー構造であるか完了キュー構造であるかに応じて、作業キュー・エレメント（ＷＱＥ：work queue element）または完了キュー・エレメント（ＣＱＥ：completion queue element）のいずれか一方）を識別するためのドアベル構造と、キューの始まりに関する基底アドレスと、キューの終わりに関する限界アドレスと、キュー内で次に処理すべきＷＱＥまたはＣＱＥを示すオフセットとを含むことができる。作業キュー構造と完了キュー構造はいずれも、データの送信とデータの受信の両方に使用することができる。
【００１３】
キュー構造およびドアベル構造は、実行すべき通信の対象であるルート複合体およびエンドポイントに対応するホスト・システム・メモリの一部分に設けることができる。キュー・エレメントを生成してキュー構造に追加することができ、それによりキュー・エレメントが処理のために使用可能であることをエンドポイントまたはルート複合体に通知するために、ドアベル構造を書き込むことができる。キュー・エレメントおよびキュー・エレメントに対応するデータを検索するために、ＰＣＩｅ  ＤＭＡ動作を実行することができる。その上、キュー・エレメントの処理の完了を示すための完了キュー・エレメント（ＣＱＥ）を返すために、ＰＣＩｅ  ＤＭＡ動作を実行することができる。
【００１４】
例示的な一実施形態によれば、例示的な諸実施形態の共用メモリを使用して同じかまたは異なるホスト・システムのルート複合体とエンドポイントとの間で通信するために、トランザクション指向プロトコルを確立することができる。このトランザクション指向プロトコルは、データをプッシュまたはプルするために、様々なエレメント、たとえば、ルート複合体またはエンドポイントによって実行すべき一連のトランザクションを指定する。本発明の精神および範囲を逸脱せずに、プッシュ・トランザクションとプル・トランザクションの様々な組み合わせを使用することができる。この様々な組み合わせについては、以下の詳細な説明でより詳細に説明する。
【００１５】
加えて、例示的な諸実施形態のメカニズムをさらに使用して、上述の共用メモリを介して同じかまたは異なるホスト・システムのルート複合体とエンドポイントとの間のソケット・プロトコル・ベースの通信をサポートすることができる。このようなソケット・ベースの通信では、ホスト・システム内の作業キューを使用して、着信ソケット初期設定要求を聴取（listen）することができる。すなわち、第２のホスト・システムとのソケット通信接続を確立することを希望する第１のホスト・システムは、その作業キュー内にソケット初期設定要求ＷＱＥを生成することができ、そのソケット初期設定要求ＷＱＥが処理のために使用可能であることを第２のホスト・システムに通知することができる。
【００１６】
その後、第２のホスト・システムは、その要求を受諾または拒否することができる。第２のホスト・システムがその要求を受諾する場合、そのホスト・システムは、第１および第２のホスト・システム間でソケット・ベースの通信を実行する際に第１のホスト・システムによって使用するためのソケットのパラメータのうちの後半部分を返す。これらのパラメータは、ソケットに関連付けるべきキュー構造の一部分と、キュー・エレメントがソケットを介して処理のための使用可能であるときにホスト・システムに通知するために使用されるドアベル構造とを指定することができる。実際のソケット通信は、たとえば、ホスト・システム間のプル・トランザクションまたはプッシュ・トランザクションあるいはその両方を伴う可能性がある。
【００１７】
ルート複合体間のリソースの固有の共用により、システム・イメージ間またはエンドポイント間あるいはその両方で機能およびそれに関連するアプリケーションの移行のためのメカニズムを提供するために活用可能なＰＣＩｅファブリック内のホスト・システムとエンティティとの関係が作り出される。この移行機能は、システム管理の領域においてワークロード・バランシング機能の需要の増大を満足するために必要である。このようなメカニズムは、現在、ＰＣＩｅ規格から欠落している。
【００１８】
例示的な一実施形態では、単一ルートＰＣＩ構成マネージャ（ＳＲ−ＰＣＩＭ：Single-Root PCI Configuration Manager）は、エンドポイント（ＥＰ）によってサポートされる仮想機能（ＶＦ：virtualfunction）移行シナリオとして可能なものを備えたシステム・イメージ（ＳＩ）を提供する。システム管理者または管理用タスクを実行するソフトウェア・アプリケーション、たとえば、ワークロード・バランシング・アプリケーションは、あるＳＩから他のＳＩへのＶＦおよびそれに関連するアプリケーション（複数も可）のステートレス移行が必要であることを単一ルートＰＣＩマネージャ（ＳＲ−ＰＣＩＭ）に示すコマンドを実行することができる。ＶＦおよびそれに関連するアプリケーション（複数も可）（動作すべきＶＦに依存するアプリケーションである）を移行することにより、より効率的な環境で動作を続行するために種々のリソースをリクルートすることができる。たとえば、ワークロード・バランシングでは、例示的な諸実施形態のメカニズムを使用してイーサネット（登録商標）ＶＦおよびそれに関連する従属アプリケーションを移動し、異なるＳＩまたは同等ＥＰと完全に関連付けることができる異なる物理機能（ＰＦ：physicalfunction）上で使用可能なより高速の（あまり輻輳していない）接続を利用することができる。
【００１９】
ホスト・システム上で実行されるソフトウェア仲介（ＳＷＩ：Software Intermediary）または仮想化仲介（virtualization intermediary）は、ＶＦに対する未解決の要求を完了し、次にそれを停止するために必要な任意のプロセスを開始するようＳＩに指示する。ＶＦに対するすべての要求が完了したことがＳＩによってＳＷＩに通知されると、ＳＷＩは、ＶＦに関連する任意のアプリケーションをＳＩから除去することができ、ＶＦを関連の物理機能（ＰＦ）から切り離すことができる。
【００２０】
その後、ＳＷＩは、同じかまたは異なるＥＰ内に存在する可能性のあるターゲットＰＦにＶＦを接続することができる。その上、ターゲットＰＦは、異なるＳＩに関連付けることができる。ＳＷＩは、ＶＦをそのＶＦが現在関連付けられているＳＩにとって使用可能なものにし、ＶＦを構成するようＳＩに指示する。ＳＩはＶＦを構成し、それにより、それを関連アプリケーションによる使用のために使用可能なものにする。次に、ＳＷＩは、新たに移行されたＶＦ上のリソースを使用できるように、関連アプリケーションを開始するようＳＩに指示することができる。
【００２１】
上記のメカニズムに加えて、例示的な諸実施形態は、実行中のマルチルートＰＣＩｅファブリックへの新しいコンポーネントのホット・プラグ／除去を実行するための機能をさらに提供する。これらのメカニズムにより、たとえば、ルート複合体を実行中のＰＣＩｅファブリックにホット・プラグするかまたはそこから除去することができる。たとえば、ブレードはブレード・シャーシにホット・プラグすることができ、それに関連するルート複合体は既存のシステム内のＰＣＩｅファブリックにリアルタイムで組み込むことができる。
【００２２】
このようなホット・プラグ／除去機能により、ＰＣＩｅファブリックが増大することができ、新たに組み込まれたルート複合体全域で仮想機能を固有に共用することができる。したがって、ＰＣＩｅファブリックは、それを実行するためにシステムを停止せずに拡張することができる。ＰＣＩ−ＳｉＧ入出力仮想化規格は、ＰＣＩｅファブリックのこのような動的拡張に関するこのような機能または標準をまったく提供していない。
【００２３】
例示的な一実施形態では、データ処理システムの複数のルート複合体間の通信のために共用メモリを初期設定するための方法が提供される。この方法は、データ処理システム内の通信ファブリックのコンポーネントの第１の仮想階層を生成するステップであって、第１の仮想階層がデータ処理システムの第１のルート複合体に関連付けられるステップを含むことができる。この方法は、データ処理システム内の通信ファブリックのコンポーネントの第２の仮想階層を生成するステップであって、第２の仮想階層がデータ処理システムの第２のルート複合体に関連付けられるステップをさらに含むことができる。第１の仮想階層内の各エンドポイントごとに、第１のルート複合体に関連する第１の共用メモリ内のアドレス範囲を割り当てることができる。第２の仮想階層内の各エンドポイントごとに、第２のルート複合体に関連する第２の共用メモリ内のアドレス範囲を割り当てることができる。この方法は、第１および第２の共用メモリ内の割り当て済みアドレス範囲を使用して、第１のルート複合体に関連する第１のホスト・システムと、第２のルート複合体に関連する第２のホスト・システムとの間で通信を実行するステップをさらに含むことができる。
【００２４】
第１の仮想階層を生成するステップと、第２の仮想階層を生成するステップは、通信ファブリックのコンポーネントを発見するために通信ファブリック内のリンクをトラバースするステップと、通信ファブリックのコンポーネントに関する識別データを保管するステップと、保管された識別データに基づいて第１および第２の仮想階層を生成するステップとを含むことができる。
【００２５】
保管された識別データに基づいて第１および第２の仮想階層を生成するステップは、各エンドポイント・コンポーネントに関する識別データを、通信ファブリック内のリンクのトラバース中に発見された各ルート複合体コンポーネントに関する識別データと比較するステップを含むことができる。エンドポイント・コンポーネントに関連する共存フィールド値は、エンドポイント・コンポーネントに関する識別データがルート複合体コンポーネントに関する識別データに一致する場合に設定することができる。第１および第２の仮想階層は、通信ファブリックのエンドポイント・コンポーネントに関連する共存フィールド値に基づいて生成することができる。
【００２６】
生成動作および割り当て動作は、それぞれの第１および第２のルート複合体に関連する単一ルート周辺装置相互接続マネージャ（ＳＲ−ＰＣＩＭ：single root peripheral component interconnect manager）によって実行することができる。ＳＲ−ＰＣＩＭは、対応する仮想階層の各エンドポイントごとに、そのエンドポイントが属すＰＣＩメモリ・アドレス空間内の基底アドレスおよび限界を割り当てることができる。ＳＲ−ＰＣＩＭは、エンドポイントの基底アドレス・レジスタ（ＢＡＲ：BaseAddress Register）に基底アドレスおよび限界を書き込むことができる。ＳＲ−ＰＣＩＭは、それぞれのルート複合体に関連する仮想階層のみに基づいて、それぞれのルート複合体に関連する共用メモリを個別に構成することができる。ＳＲ−ＰＣＩＭは、通信ファブリックのリンクのすべてをトラバースし、通信ファブリック内に存在するエンドポイントとルート複合体との間の関連付けを識別する複数ルート周辺装置相互接続マネージャ（ＭＲ−ＰＣＩＭ：multipleroot peripheral component interconnect manager）によって収集された情報に基づいて、仮想階層を生成することができる。
【００２７】
通信ファブリックは周辺装置相互接続高速（ＰＣＩｅ）ファブリックにすることができ、エンドポイントはＰＣＩｅアダプタである。通信ファブリックは、１つまたは複数の複数ルート認識（ＭＲＡ：multiple root aware）スイッチを含む複数ルート認識通信ファブリックにすることができる。データ処理システムはブレード・サーバにすることができ、ホスト・システムはブレード・サーバのブレードにすることができる。
【００２８】
少なくとも１つのエンドポイントは、その少なくとも１つのエンドポイントが第１のルート複合体と第２のルート複合体との間で共用されるように、第１の共用メモリと第２の共用メモリの両方に関連のアドレス範囲を有することができる。第１および第２の共用メモリ内の割り当て済みアドレス範囲を使用して、第１のルート複合体と第２のルート複合体との間で通信を実行するステップは、アドレス変換および保護テーブル・データ構造を使用して、第１または第２の共用メモリのうちの一方に関連するアドレスを第１または第２の共用メモリのうちのもう一方に関連するアドレスにマッピングするステップを含むことができる。
【００２９】
この方法は、第１の仮想階層内の各ルート複合体ごとに、第１のルート複合体に関連する第１の共用メモリ内のアドレス範囲を割り当てるステップをさらに含むことができる。また、この方法は、第２の仮想階層内の各ルート複合体ごとに、第２のルート複合体に関連する第２の共用メモリ内のアドレス範囲を割り当てるステップも含むことができる。第１のホスト・システムと第２のホスト・システムとの間の通信は、第１のルート複合体と第２のルート複合体との間で直接実行することができる。第１のホスト・システムと第２のホスト・システムとの間の通信は、第１のホスト・システムと第２のホスト・システムのうちの一方のホスト・システムのルート複合体と、第１のホスト・システムと第２のホスト・システムのうちのもう一方のホスト・システムのエンドポイントとの間で実行することができる。
【００３０】
他の例示的な諸実施形態では、コンピュータ可読プログラムを有するコンピュータで使用可能な媒体を含むコンピュータ・プログラム（computer program product）が提供される。このコンピュータ可読プログラムは、コンピューティング・デバイス上で実行されると、方法の例示的な実施形態に関して上記で概要を示した動作のうちの様々な動作ならびにそれらの組み合わせをコンピューティング・デバイスに実行させる。
【００３１】
さらに他の例示的な実施形態では、データ処理システムが提供される。このデータ処理システムは、第１のホスト・システムと、第２のホスト・システムと、第１のホスト・システムを第２のホスト・システムに結合する通信ファブリックとを含むことができる。第１のホスト・システムおよび第２のホスト・システムは、方法の例示的な実施形態に関して上記で概要を示した動作のうちの様々な動作ならびにそれらの組み合わせを実行することができる。
【００３２】
本発明の上記その他の特徴および利点は、本発明の模範的な諸実施形態に関する以下の詳細な説明に記載され、その詳細な説明を考慮すると、当業者には自明なものになるであろう。
【００３３】
本発明に特有と思われる新規の特徴は特許請求の範囲に規定されている。しかし、本発明そのもの、ならびにその好ましい使用態様、他の目的および利点は、添付図面に併せて読んだときに、例示的な一実施形態に関する以下の詳細な説明を参照することによって最もよく理解されるであろう。
【発明を実施するための最良の形態】
【００３４】
例示的な諸実施形態は、同じかまたは異なるルート・ノード、たとえば、ブレード・サーバのブレード上にある可能性のある、同じかまたは異なるルート複合体の２つまたはそれ以上のシステム・イメージ（ＳＩ）によって１つのＰＣＩｅアダプタまたは「エンドポイント」を固有に共用できるようにするメカニズムを提供する。さらに、例示的な諸実施形態は、それによりシステム・イメージと固有に共用されるエンドポイントとの間の通信を容易にするメカニズムを提供する。加えて、例示的な諸実施形態は、ＰＣＩｅファブリックの管理を容易にするために、仮想プレーン、ルート複合体、およびシステム・イメージ間で仮想機能を移行するためのメカニズムを提供する。その上、例示的な諸実施形態は、それによりエンドポイントを設計するときにエンドポイント・インプリメンタが許可した機能の有効な組み合わせをルート複合体の単一ルートＰＣＩマネージャ（ＳＲ−ＰＣＩＭ）がエンドポイントから読み取ることができるメカニズムを提供する。その場合、ＳＲ−ＰＣＩＭは、エンドポイントが使用されている現行構成で使用されることになる機能の組み合わせを設定することができる。
【００３５】
図２は、一般に当技術分野で知られているシステム仮想化を例示する模範的な図である。システム仮想化とは、各セットのリソースがそれ専用のシステム・イメージ・インスタンスおよびアプリケーションにより独立して動作するように物理システムのプロセッサ、メモリ、入出力アダプタ、記憶域、およびその他のリソースを分割することである。このようなシステム仮想化では、仮想リソースは、物理リソースから構成され、たとえば、同じ外部インターフェースおよび機能を有し、設計されたインターフェース／機能を備えたメモリ、ディスク・ドライブ、およびその他のハードウェア・コンポーネントなどの物理リソース用のプロキシとして動作する。システム仮想化は、典型的には、仮想リソースを作成し、それを物理リソースにマッピングし、それにより仮想リソース間の分離を可能にする仮想化仲介を使用する。仮想化仲介は、典型的には、ソフトウェア、ファームウェア、およびハードウェア・メカニズムのうちの１つまたはこれらの組み合わせとして提供される。
【００３６】
図２に図示されている通り、仮想化システムにおいて典型的には、アプリケーション２１０は、それにより特定の仮想リソースおよび物理リソースが割り当てられる汎用または特殊目的オペレーティング・システムなどのソフトウェア・コンポーネントであるシステム・イメージ（ＳＩ）２２０と通信する。システム・イメージ２２０は、単一ＳＩインスタンスを実行するために必要な物理リソースまたは仮想化リソース、たとえば、仮想化プロセッサ、メモリ、入出力アダプタ、記憶域などから構成される仮想システム２３０に関連付けられている。
【００３７】
システム・イメージ２２０は、仮想システム２３０の使用により、仮想化仲介２４０を介して物理システム・リソース２５０にアクセスする。仮想化仲介２４０は、ＳＩへのリソースの割り振りを管理し、ＳＩに割り当てられたリソースを他のＳＩによるアクセスから分離する。この割り振りおよび分離は、仮想化仲介２４０によって実行されるリソース・マッピングならびに仮想化仲介２４０によって維持される１つまたは複数のリソース・マッピング・データ構造に基づいて実行される場合が多い。
【００３８】
このような仮想化を使用して、入出力動作および入出力リソースの仮想化を可能にすることができる。すなわち、入出力仮想化（ＩＯＶ：I/O virtualization）に関しては、仮想化仲介２４０などの入出力仮想化仲介（ＩＯＶＩ：I/O virtualizationintermediary）を使用して、２つ以上のＳＩによって単一の物理入出力装置を共用することができる。ＩＯＶＩは、たとえば、ＳＩからの構成、入出力、およびメモリ動作、ならびにＳＩへの直接メモリ・アクセス（ＤＭＡ）、完了、および割り込み動作のうちの１つまたは複数に介入することによりＩＯＶをサポートするために使用されるソフトウェア、ファームウェアなどにすることができる。
【００３９】
図３は、入出力仮想化仲介を使用してＰＣＩルート複合体の入出力を仮想化するための第１の手法を例示する模範的な図である。図３に図示されている通り、ホスト・プロセッサ・セット３１０は、チップ、マザーボード、ブレードなどの１つまたは複数のプロセッサにすることができ、それによりアプリケーション（図示せず）がＰＣＩｅエンドポイント３７０〜３９０などのシステム・リソースにアクセスできる複数のシステム・イメージ３２０〜３３０をサポートすることができる。システム・イメージは、入出力仮想化仲介３４０、ＰＣＩｅルート複合体３５０、１つまたは複数のＰＣＩｅスイッチ３６０、およびその他のＰＣＩｅファブリック・エレメント、あるいはこれらの組み合わせを介して仮想化リソースと通信する。
【００４０】
図３に例示されている手法では、入出力仮想化仲介３４０は、すべての入出力トランザクションに関わり、すべての入出力仮想化機能を実行する。たとえば、入出力仮想化仲介３４０は、様々なＳＩの入出力キューからの入出力要求をＰＣＩｅエンドポイント３７０〜３９０内の単一キューに多重化する。したがって、入出力仮想化仲介は、ＳＩ３２０〜３３０と物理ＰＣＩｅエンドポイント３７０〜３９０との間のプロキシとして働く。
【００４１】
入出力仮想化仲介３４０によるこのような関わりは、入出力動作に追加の遅延をもたらす可能性があり、それにより単位時間あたりの入出力動作の数が制限され、その結果、入出力パフォーマンスが制限される。加えて、入出力仲介の関わりによって余分なＣＰＵサイクルが必要になり、その結果、他のシステム動作に使用可能なＣＰＵパフォーマンスが低減される。また、この手法が必要とする余分なコンテキスト・スイッチおよび割り込みリダイレクション・メカニズムも、全体的なシステム・パフォーマンスに影響を及ぼす可能性がある。さらに、エンドポイント３７０〜３９０が複数のルート複合体間で共用される場合、ＩＯＶＩ３４０は実現可能なものではない。
【００４２】
図４は、固有に共用されるＰＣＩ入出力アダプタを使用してＰＣＩルート複合体の入出力を仮想化するための第２の手法を例示する模範的な図である。図４に図示されている通り、ホスト・プロセッサ・セット４１０は、チップ、マザーボード、ブレードなどの１つまたは複数のプロセッサにすることができ、それによりアプリケーション（図示せず）がＰＣＩｅ入出力仮想化（ＩＯＶ）エンドポイント４７０〜４９０などのシステム・リソースにアクセスできる複数のシステム・イメージ４２０〜４３０をサポートすることができる。システム・イメージ４２０〜４３０は、ＰＣＩｅルート複合体４４０、１つまたは複数のＰＣＩｅスイッチ４６０、およびその他のＰＣＩｅファブリック・エレメント、あるいはこれらの組み合わせを介して仮想化リソースと通信する。
【００４３】
ＰＣＩｅルート複合体４４０は、１つまたは複数のアドレス変換および保護テーブル・データ構造、割り込みテーブル・データ構造などを含むことができ、ＩＯＶ対応エンドポイント４７０〜４９０との入出力動作の仮想化を容易にするルート複合体仮想化イネーブラ（ＲＣＶＥ：root complex virtualization enabler）４４２を含む。アドレス変換および保護テーブル・データ構造は、たとえば、仮想化リソースに関する仮想アドレスと実アドレスとのアドレス変換を実行し、ＳＩへの仮想リソースのマッピングに基づいて仮想リソースへのアクセスを制御し、その他の仮想化動作を実行するために、ＰＣＩｅルート複合体４４０によって使用することができる。これらのルート複合体割り込みテーブル・データ構造は、ＰＣＩｅメモリ・アドレス空間によりアクセス可能であり、たとえば、ＳＩに関連する適切な割り込みハンドラに割り込みをマッピングするために使用される。
【００４４】
図３に図示されている配置構成のように、入出力仮想化インターフェース４５０も図４の仮想化構造内に設けられている。入出力仮想化インターフェース４５０は、ＰＣＩｅスイッチ４６０に結合可能な非ＩＯＶ対応ＰＣＩｅエンドポイントとともに使用される。すなわち、入出力仮想化インターフェース（ＩＯＶＩ）４５０は、入出力仮想化（ＩＯＶ）のための固有のサポート、すなわち、エンドポイント内部のサポートを備えていないＰＣＩｅエンドポイントについて図３に関して前述したものと同様にＰＣＩｅエンドポイントともに使用される。
【００４５】
ＩＯＶ対応ＰＣＩｅエンドポイント４７０〜４９０の場合、ＩＯＶＩ４５０は、主に構成トランザクション目的に使用され、ＳＩから開始されるメモリ・マップ入出力（ＭＭＩＯ：memory mapped input/output）動作またはＰＣＩｅエンドポイント４７０〜４９０から開始される直接メモリ・アクセス（ＤＭＡ）動作などのメモリ・アドレス空間動作には関わらない。それとは反対に、ＳＩ４２０〜４３０とエンドポイント４７０〜４９０との間のデータ転送は、ＩＯＶＩ４５０による介入なしに直接実行される。ＳＩ４２０〜４３０とエンドポイント４７０〜４９０との間の直接入出力動作は、以下により詳細に記載するように、ＲＣＶＥ４４２ならびにＩＯＶ対応ＰＣＩｅエンドポイント４７０〜４９０の組み込み入出力仮想化ロジック、たとえば、物理機能および仮想機能を介して可能になる。直接入出力動作を実行する能力は、入出力動作を実行可能な速度を大幅に増加するが、ＰＣＩｅエンドポイント４７０〜４９０が入出力仮想化をサポートすることを必要とする。
【００４６】
図５は、ＰＣＩｅ入出力仮想化（ＩＯＶ）対応エンドポイントの模範的な図である。図５に図示されている通り、ＰＣＩｅ  ＩＯＶエンドポイント５００は、それによりＰＣＩｅファブリックのＰＣＩｅスイッチなどとの通信を実行可能なＰＣＩｅポート５１０を含む。内部ルーティング５２０は、構成管理機能５２０および複数の仮想機能（ＶＦ）５４０〜５６０への通信パスを提供する。構成管理機能５３０は、仮想機能５４０〜５６０とは対照的に物理機能にすることができる。物理「機能」とは、ＰＣＩ規格で使用される用語であり、単一の構成空間（configuration space）によって表される１組のロジックである。換言すれば、物理「機能」とは、たとえば、非分離型リソース５７０内に設けることができるものなど、メモリ内のその機能に関連する構成空間内に保管されたデータに基づいて構成可能な回路ロジックである。
【００４７】
構成管理機能５３０を使用して、仮想機能５４０〜５６０を構成することができる。仮想機能とは、入出力仮想化対応エンドポイント内で、１つまたは複数の物理エンドポイント・リソース、たとえば、リンクを共用する機能であり、たとえば、他の機能とともに、ＰＣＩｅ  ＩＯＶエンドポイント５００の共用可能リソース・プール５８０内に設けることができる機能である。仮想機能は、入出力仮想化仲介によるランタイム介入なしに、直接、システム・イメージからの入出力およびメモリ動作用のシンクにすることができ、システム・イメージ（ＳＩ）への直接メモリ・アクセス（ＤＭＡ）、完了、および割り込み動作のソースにすることができる。
【００４８】
ＰＣＩｅエンドポイントは、ＰＣＩｅエンドポイントによってサポートされる「機能」に関して多種多様なタイプの構成を有することができる。たとえば、エンドポイントは、単一の物理機能（ＰＦ）、複数の独立ＰＦ、または複数の従属ＰＦさえサポートすることができる。固有の入出力仮想化をサポートするエンドポイントでは、エンドポイントによってサポートされる各ＰＦは、１つまたは複数の仮想機能（ＶＦ）に関連付けることができ、その仮想機能自体は、他のＰＦに関連するＶＦに従属している可能性がある。物理機能と仮想機能との模範的な関係については以下の図６および図７に例示されている。
【００４９】
図６は、固有の仮想化なしの単一ルート・エンドポイントの物理機能および仮想機能を例示する模範的な図である。「単一ルート・エンドポイント」という用語は、単一ルート・ノードの単一ルート複合体、すなわち、単一ホスト・システムに関連するエンドポイントを指す。単一ルート・エンドポイントでは、エンドポイントは、単一ルート複合体に関連する複数のシステム・イメージ（ＳＩ）によって共用することができるが、同じかまたは異なるルート・ノード上の複数のルート複合体間で共用することはできない。
【００５０】
図６に図示されている通り、ルート・ノード６００は、ＰＣＩｅエンドポイント６７０〜６９０と通信する複数のシステム・イメージ６１０、６１２、入出力仮想化仲介６３０（前述したように使用されるもの）、ＰＣＩｅルート複合体６４０、１つまたは複数のＰＣＩｅスイッチ６５０、およびその他のＰＣＩｅファブリック・エレメント、あるいはこれらの組み合わせを含む。ルート・ノード６００は、単一ルートＰＣＩｅ構成管理（ＳＲ−ＰＣＩＭ）ユニット６２０をさらに含む。ＳＲ−ＰＣＩＭユニット６２０は、ルート複合体６４０、１つまたは複数のＰＣＩｅスイッチ６５０などを含むＰＣＩｅファブリック、ならびにエンドポイント６７０〜６９０を管理する役割を担う。ＳＲ−ＰＣＩＭ６２０の管理責任としては、どの機能をどのＳＩ６１０、６１２に割り当てるべきかを判断することと、エンドポイント６７０〜６９０の構成空間をセットアップすることを含む。ＳＲ−ＰＣＩＭ６２０は、ＳＩの機能およびシステム管理者などのユーザからの入力に基づいて、あるいはどのリソースをどのＳＩ６１０、６１２に割り当てるべきかについてはロード・バランシング・ソフトウェアに基づいて、様々なエンドポイント６７０〜６９０の機能を構成することができる。ＳＩの機能としては、エンドポイント６７０〜６９０に割り振るためにどの程度の大きさのアドレス空間が使用可能であるか、エンドポイント６７０〜６９０に割り当てるためにどの程度の数の割り込みが使用可能であるかなどを含む様々な要因を含むことができる。
【００５１】
ＰＣＩｅエンドポイント６７０〜６９０のそれぞれは、１つまたは複数の物理機能（ＰＦ）をサポートすることができる。１つまたは複数のＰＦは、相互に独立している場合もあれば、何らかの方式で相互に従属している場合もある。たとえば、適切に動作するために、あるＰＦが他のＰＦの動作または他のＰＦによって生成された結果を必要とするというようなベンダ定義の機能依存関係に基づいて、ＰＦは他のＰＦに従属している可能性がある。描かれている例では、ＰＣＩｅエンドポイント６７０は単一ＰＦをサポートし、ＰＣＩｅエンドポイント６８０は異なるタイプ１〜Ｍの複数の独立ＰＦ、すなわち、ＰＦ0〜ＰＦNをサポートする。タイプはＰＦまたはＶＦの機能に関し、たとえば、イーサネット（登録商標）機能およびファイバ・チャネル機能は２つの異なるタイプの機能である。エンドポイント６９０は異なるタイプの複数のＰＦをサポートし、全ＰＦのうちの２つまたはそれ以上のＰＦは従属している。描かれている例では、ＰＦ0はＰＦ1に従属しているか、またはその逆になる。
【００５２】
図６に図示されている例では、エンドポイント６７０〜６９０は、入出力仮想化仲介（ＩＯＶＩ）６３０によって使用可能なものになっている仮想化メカニズムによりシステム・イメージ（ＳＩ）６１０および６１２によって共用される。前述の通り、このような配置構成では、ＩＯＶＩ６３０は、ＳＩ６１０、６１２とＰＣＩｅエンドポイント６７０〜６９０との間のすべてのＰＣＩｅトランザクションに関わる。仮想化を処理する義務は完全にＩＯＶＩ６３０にあるので、個々のＰＣＩｅエンドポイント６７０〜６９０は本質的に仮想化をサポートする必要はない。その結果として、このような配置構成で仮想化のための既知のメカニズムを使用することができるが、入出力動作を実行可能なレートは、ＩＯＶＩ６３０があらゆる入出力動作に関わらない場合に入出力レート用の潜在能力に比べて比較的遅くなる。
【００５３】
図７は、固有の入出力仮想化に使用可能になっている単一ルート・エンドポイントの物理機能および仮想機能を例示する模範的な図である。図７に図示されている配置構成は図６の配置構成と同様であるが、ＰＣＩｅエンドポイント７７０〜７９０が入出力仮想化（ＩＯＶ）を固有に、すなわち、エンドポイントそのものの内部でサポートすることによるいくつかの重要な相違点がある。その結果として、ＩＯＶ対応ＰＣＩｅエンドポイント７７０〜７９０に関しては、当然のことながら構成動作を除いて、図６の入出力仮想化仲介６３０を事実上省略することができる。しかし、この配置構成で非ＩＯＶ対応ＰＣＩｅエンドポイント（図示せず）、たとえば、レガシー・エンドポイントも使用する場合、システム・イメージ７１０および７１２間でこのような非ＩＯＶ対応ＰＣＩｅエンドポイントの共用を処理するために、図７に図示されているエレメントに併せて入出力仮想化仲介を使用することができる。
【００５４】
図７に図示されている通り、ＩＯＶ対応ＰＣＩｅエンドポイント７７０〜７９０は、１つまたは複数の独立または従属物理機能（ＰＦ）をサポートすることができ、次にその物理機能は１つまたは複数の独立または従属仮想機能（ＶＦ）に関連付けることができる。これに関連して、ＰＦは、１組のＶＦを管理するためにＳＲ−ＰＣＩＭ７２０によって使用され、物理エラーおよびイベントなどのエンドポイント機能を管理するためにも使用される。ＰＦに関連する構成空間は、ＰＦに関連する最大数のＶＦ、ＰＦおよびＶＦと他のＰＦおよびＶＦとの組み合わせなどを含む、ＶＦの機能を定義する。
【００５５】
ＶＦは、ＩＯＶ対応ＰＣＩｅエンドポイント７７０〜７９０上のリソース、たとえば、メモリ空間、キュー、割り込みなどにアクセスするためにＳＩによって使用される。したがって、固有のＰＦを共用する各ＳＩ７１０、７１２ごとに異なるＶＦが生成される。ＶＦは、対応するＰＦの構成空間内のＳＲ−ＰＣＩＭ７２０によるＶＦの数の設定に基づいて、エンドポイント７７０〜７９０によって生成される。このようにして、ＰＦは、複数のＳＩ７１０、７１２によって共用できるように仮想化される。
【００５６】
図７に図示されている通り、ＶＦおよびＰＦは他のＶＦおよびＰＦに従属している可能性がある。典型的には、あるＰＦが従属ＰＦである場合、そのＰＦに関連するすべてのＶＦも従属することになる。したがって、たとえば、ＰＦ0のＶＦはＰＦ1の対応するＶＦに従属している可能性がある。
【００５７】
図７に図示されている配置構成では、ＳＩ７１０、７１２は、入出力仮想化仲介による関わりの必要なしに、ＰＣＩルート複合体７３０およびＰＣＩｅスイッチ７４０を介して、ＩＯＶ対応ＰＣＩｅエンドポイント７７０〜７９０と直接通信することができ、その逆も同様である。このような直接通信は、エンドポイント７７０〜７９０内ならびにエンドポイント７７０〜７９０のＰＦおよびＶＦを構成するＳＲ−ＰＣＩＭ７２０内に設けられたＩＯＶサポートによって可能なものになる。
【００５８】
ＳＩとエンドポイントとの間の直接通信は、複数のＳＩ７１０、７１２と共用されたＩＯＶ対応ＰＣＩｅエンドポイント７７０〜７９０との間で入出力動作を実行できる速度を大幅に増加する。しかし、このようなパフォーマンス強化を可能なものにするために、ＰＣＩｅエンドポイント７７０〜７９０は、仮想機能（ＶＦ）を生成し管理するためにＳＲ−ＰＣＩＭ７２０内のメカニズムならびにエンドポイント７７０〜７９０の物理機能（ＰＦ）を提供することにより、入出力仮想化をサポートしなければならない。
【００５９】
ＰＣＩｅ階層の上記の例示は単一ルート階層に制限されている。換言すれば、ＰＣＩｅエンドポイントは、単一ＰＣＩルート複合体７３０に関連する単一ルート・ノード７００上のＳＩ７１０、７１２のみによって共用される。上述のメカニズムは、ＰＣＩｅエンドポイントを共用する複数ルート複合体のためのサポートを提供しない。したがって、複数ルート・ノードにＰＣＩｅエンドポイントのリソースへの共用アクセスを提供することはできない。これにより、各ルート・ノードごとに個別のエンドポイント・セットが必要になるので、このような配置構成を使用するシステムのスケーラビリティが制限される。
【００６０】
本明細書の例示的な諸実施形態は、複数のＰＣＩルート複合体が同じセットのＩＯＶ対応ＰＣＩｅエンドポイントへのアクセスを共用できる、マルチルート入出力仮想化を利用する。その結果として、これらのＰＣＩルート複合体のそれぞれに関連するシステム・イメージはそれぞれ、同じセットのＩＯＶ対応ＰＣＩｅエンドポイントへのアクセスを共用することができるが、仮想化の保護は各ルート・ノード上の各ＳＩごとに所定の位置にある。したがって、同じ既存のセットのＩＯＶ対応ＰＣＩｅエンドポイントを共用できるルート・ノードおよび対応するＰＣＩルート複合体の追加を可能にするためのメカニズムを提供することにより、スケーラビリティが最大になる。
【００６１】
図８は、例示的な一実施形態によるマルチルート仮想化入出力トポロジを例示する模範的な図である。図８に図示されている通り、複数のルート・ノード８１０および８２０が設けられ、それぞれのルート・ノードは、単一ルートＰＣＩ構成マネージャ（ＳＲ−ＰＣＩＭ）８１２、８２２と、１つまたは複数のシステム・イメージ（ＳＩ）８１４、８１６、８２４、８２６と、ＰＣＩルート複合体８１８、８２８とを有する。これらのルート・ノード８１０および８２０は、たとえば、ブレード・サーバ内のブレードにすることができ、ＰＣＩｅスイッチ・ファブリックの１つまたは複数のマルチルート認識（ＭＲＡ）ＰＣＩｅスイッチ８４０に結合されており、そのＰＣＩｅスイッチ・ファブリックは、１つまたは複数のこのようなＭＲＡ  ＰＣＩｅスイッチ８４０およびその他のＰＣＩｅファブリック・エレメントあるいはその両方を含むことができる。ＭＲＡスイッチ８４０は追加のルート・ノード用の接続を有し、これらの異なるルート・ノードのアドレス空間を個別かつ独特なものとして保持するために必要なメカニズムを収容しているという点で、ＭＲＡスイッチ８４０は図７の非ＭＲＡスイッチ７４０とは異なるタイプのものである。
【００６２】
これらのルート・ノード８１０および８２０に加えて、マルチルートＰＣＩ構成マネージャ（ＭＲ−ＰＣＩＭ）８３２および対応するＰＣＩルート複合体８３４を含む第３のルート・ノード８３０が設けられている。ＭＲ−ＰＣＩＭ８３２は、以下により詳細に論じるように、図８に図示されているマルチルート（ＭＲ）トポロジ内の仮想階層を発見し構成する役割を担う。したがって、ＭＲ−ＰＣＩＭ８３２は、複数ルート・ノードの複数ルート複合体に関してエンドポイントの物理機能および仮想機能を構成する。ＳＲ−ＰＣＩＭ８１２および８２２は、それぞれに関連する単一ルート複合体の物理機能および仮想機能を構成する。換言すれば、以下により詳細に記載するように、ＭＲ−ＰＣＩＭはＭＲトポロジを全体として認識するが、ＳＲ−ＰＣＩＭはＭＲトポロジ内のそれ専用の仮想階層のみを認識する。
【００６３】
図８に図示されている通り、ＩＯＶ対応ＰＣＩｅエンドポイント８５０および８６０は、１つまたは複数の仮想エンドポイント（ＶＥ）８５２、８５４、８６２、および８６４をサポートする。ＶＥは、ルート複合体に割り当てられた１組の物理機能および仮想機能である。したがって、たとえば、ルート・ノード８１０のＰＣＩルート複合体８１８のためにＩＯＶ対応ＰＣＩｅエンドポイント８５０および８６０上に個別のＶＥ８５２および８６２が設けられている。同様に、ルート・ノード８２０のＰＣＩルート複合体８２８のためにＩＯＶ対応ＰＣＩｅエンドポイント８５０および８６０上に個別のＶＥ８５４および８６４が設けられている。
【００６４】
各ＶＥは、仮想階層（ＶＨ）のルートとして単一ルート複合体を有し、階層内の終端ノードとしてＶＥを有する仮想階層（ＶＨ）に割り当てられている。ＶＨは、ルート複合体またはＳＲ−ＰＣＩＭに割り当てられた完全に機能しうるＰＣＩｅ階層である。ＶＥ内のすべての物理機能（ＰＦ）および仮想機能（ＶＦ）が同じＶＨに割り当てられることに留意されたい。
【００６５】
各ＩＯＶ対応ＰＣＩｅエンドポイント８５０および８６０は、基本機能（ＢＦ：base function）８５９および８６９をサポートする。ＢＦ８５９、８６９は、対応するエンドポイント８５０、８６０のＶＥを管理するためにＭＲ−ＰＣＩＭ８３２によって使用される物理機能である。たとえば、ＢＦ８５９、８６９は、対応するエンドポイント８５０、８６０のＶＥに機能を割り当てる役割を担う。ＭＲ−ＰＣＩＭ８３２は、エンドポイント８５０、８６０内のＰＦのそれぞれに対するＶＨ番号の割り当てを可能にするＢＦの構成空間内のフィールドを使用することによって、ＶＥに機能を割り当てる。例示的な諸実施形態では、エンドポイントあたり１つのＢＦのみ存在することができるが、本発明はこのような構成に制限されない。
【００６６】
図８に図示されている通り、各ＶＥ８５２、８５４、８６２、および８６４は、それ専用の１組の物理機能および仮想機能をサポートすることができる。前述の通り、このような機能セットは、独立物理機能、従属物理機能、およびそれに関連する独立／従属仮想機能を含むことができる。図８に図示されている通り、ＶＥ８５２は、それに関連する仮想機能（ＶＦ）とともに単一物理機能（ＰＦ0）をサポートする。同様にＶＥ８５４は、それに関連する仮想機能（ＶＦ）とともに単一物理機能（ＰＦ0）をサポートする。ＶＥ８６２は、複数の独立物理機能（ＰＦ0〜ＰＦN）およびそれに関連する仮想機能（ＶＦ）をサポートする。しかし、ＶＥ８６４は、複数の従属物理機能（ＰＦ0〜ＰＦN）をサポートする。
【００６７】
ＶＥ８５２、８５４、８６２、または８６４は、ＳＩがアクセスできるＶＨにＶＥが割り当てられている場合およびその逆の場合にのみ、ルート・ノード８１０および８２０のＳＩ８１４、８１６、８２４、および８２６と直接通信することができる。エンドポイント８５０および８６０そのものは、上記で前述したものなどの単一ルート入出力仮想化ならびにこの例示的な諸実施形態に関して記載したマルチルート入出力仮想化をサポートしなければならない。この要件は、そのトポロジが複数ルート複合体をサポートすることに基づくものであるが、それぞれの個別ルート・ノードはそれに関連する単一ルート・ベースの仮想階層のみを認識する。
【００６８】
図９は、例示的な一実施形態によるルート・ノードのルート複合体の観点から見たマルチルート仮想化入出力トポロジの仮想階層表示を例示する模範的な図である。図９に図示されている通り、マルチルート（ＭＲ）トポロジは図８に図示されている通りにすることができるが、それぞれの個別ルート・ノードの各ルート複合体は、ＭＲトポロジのうち、それが占める部分のみを表示する。したがって、たとえば、ルート・ノード８１０に関連するＰＣＩルート複合体８１８は、そのホスト・プロセッサ・セット、それ専用のシステム・イメージ（ＳＩ）８１４、８１６、ＭＲＡスイッチ８４０、およびそれ専用の仮想エンドポイント（ＶＥ）８５２、８６２を認識する。この仮想階層内には完全なＰＣＩｅ機能が存在するが、ＰＣＩルート複合体８１８は、それ専用の仮想階層の一部ではないＶＥ、ルート複合体、システム・イメージなどを認識しない。
【００６９】
この配置構成のために、ＭＲトポロジ内のルート・ノードのルート複合体間の通信に制限が課せられる。すなわち、ＰＣＩｅ機能はルート複合体に関連する仮想階層に制限されるので、ルート複合体は相互に通信することができない。その上、様々なルート複合体に関連するシステム・イメージは他のルート複合体のシステム・イメージと通信することができない。このような制限に対処するために、本明細書の例示的な諸実施形態は、仮想階層間、具体的には、種々のルート・ノードのルート複合体間の通信に関するサポートを提供するための様々なメカニズムを提供する。
【００７０】
例示的な諸実施形態のホスト・システムがそのルート複合体を介して複数のエンドポイントと通信するために、ホスト・システムは、ホスト・システムが関連付けられる様々なエンドポイントおよびルート複合体によって共用される共用メモリを使用する。ホスト・システムとともにエンドポイントの適切な動作を保証するために、ホスト・システムに関連する各エンドポイントに対し、共用メモリのうち、それにより様々な通信を実行することができる専用の部分が提供されるように、この共用メモリを初期設定しなければならない。例示的な諸実施形態は、ＰＣＩｅファブリックが発見され、ＰＣＩｅファブリックのエンドポイントがホスト・システムのルート複合体に実質的に結合されるようなホスト・システムの共用メモリを初期設定するためのメカニズムを使用する。その場合、各エンドポイントおよびルート複合体には、それが実質的に結合される各ホスト・システムの共用メモリ・アドレス空間のうち、専用の部分が与えられる。ホスト・システムの共用メモリのこれらの部分により、１つのホスト・システムのルート複合体に関連するエンドポイントは、他のホスト・システムの１つまたは複数の他のルート複合体と通信することができる。
【００７１】
図１０は、例示的な一実施形態による共用メモリＰＣＩｅベース・システムを例示する模範的な図である。図１０に図示されている通り、システム１０００は、第１のルート複合体（ＲＣ１）１０１２と第１のエンドポイント（ＥＰ１）１０１４とを含むホスト・システム１０１０を有し、同じくホスト・システム１０１０の一部として設けることもできる第１の複数ルート認識（ＭＲＡ）スイッチ１０１６に関連付けられている。システム１０００は、第２のルート複合体（ＲＣ２）１０２２と第２のエンドポイント（ＥＰ２）１０２４とを含む第２のホスト・システム１０２０を有し、同じくホスト・システム１０２０の一部として設けることもできる第２の複数ルート認識（ＭＲＡ）スイッチ１０２６に関連付けられている。これらのホスト・システム１０１０および１０２０のそれぞれは、たとえば、同じマルチルート・ブレード・クラスタ・システム１０００内の個別ブレードを表すことができる。代わって、ホスト・システム１０１０および１０２０は、完全に別々のコンピューティング・デバイス上に設けることもできる。各ホスト・システム１０１０および１０２０はそれ専用の仮想階層（ＶＨ）内にある。ホスト・システム１０１０および１０２０は、相互に接続され、ＰＣＩｅファブリック１０３０の１つまたは複数のＭＲＡスイッチ１０１６、１０２６、および１０３２との通信リンクを介して、他の共用エンドポイントＥＰ３〜ＥＰ６  １０４２〜１０４４および１０５２〜１０５４に接続される。ホスト・システム１０１０および１０２０ならびにエンドポイント１０４２〜１０４４および１０５２〜１０５４に関連する通信リンクは、１つまたは複数の仮想プレーン（ＶＰ）に関連付けることができる。
【００７２】
どのホスト・システム１０１０および１０２０が所与のＰＣＩｅトランザクションに関連付けられるかを区別するために、ＰＣＩｅファブリックではいかなる仮想階層（ＶＨ）ＩＤも使用されていない。その代わりに、リンク・ローカル仮想プレーン（ＶＰ）ＩＤが使用される。ＶＰ  ＩＤはリンク・ローカルであるので、ＲＣ１のＶＨは、たとえば、１０３２と１０１６との間のリンク上でＶＰ＝４を有し、１０３２と１０４２との間のリンク上でＶＰ＝４を有することができる。換言すれば、ＶＨは、１組のＰＣＩｅコンポーネントと、これらのコンポーネントを接続するリンクから構成され、これらのリンクのそれぞれは、所与のトランザクションがどのＶＨを参照しているかを指定するために使用されるリンク・ローカルＶＰ  ＩＤを有する。
【００７３】
描かれている例では、目標は、ルート複合体１０１２、したがって、ルート複合体１０１２に関連する１つまたは複数のシステム・イメージに関連して実行されるアプリケーションが他のルート複合体に関連するエンドポイント、たとえば、ルート複合体ＲＣ２  １０２２に関連するエンドポイントＥＰ２  １０２４と通信することを許可することである。したがって、たとえば、ＥＰ２  １０２４は、ルート複合体ＲＣ２  １０１２上で実行されるシステム・イメージによりエンドポイントとして使用することができる。このようにして、ルート複合体と共存しているエンドポイントは、様々な仮想プレーンまたはホスト・システムあるいはその両方のシステム・イメージ全域で共用することができる。その結果として、ノード間で通信するときにＩｎｆｉｎｉＢａｎｄまたはイーサネット（登録商標）・スイッチなどの外部ネットワーキング・アダプタおよびスイッチを通過する必要性を省略することにより、高性能のノード間通信、すなわち、ホスト・システム間の通信およびロード・バランシングをシステム・コストの削減と同様に容易にすることができる。
【００７４】
ホスト・システム全域でシステム・イメージによってエンドポイントを共用できるようにするために、ホスト・システム１０１０または１０２０の一方あるいは個別のホスト・システム１０６０に設けられたマルチルートＰＣＩ構成マネージャ（ＭＲ−ＰＣＩＭ）１０６２は、ルート複合体およびエンドポイントに関する基底および限界アパーチャを確立するようにホスト・システムのメモリ空間１０７０および１０８０を初期設定する。ＭＲ−ＰＣＩＭ１０６２は、ＭＲＡスイッチ１０６４ならびにＰＣＩｅファブリック１０３０内の１つまたは複数のＭＲＡスイッチ１０３２を介してＰＣＩｅファブリック１０３０にアクセスする。
【００７５】
ＭＲ−ＰＣＩＭ１０６２は、ＰＣＩｅファブリック１０３０に関連するルート複合体およびエンドポイントを識別するために、当技術分野で一般に知られている方法で様々な相互接続スイッチによりＰＣＩｅファブリック１０３０のリンクをトラバースする。しかし、例示的な諸実施形態によって実行されるトラバースでは、ルート複合体（ＲＣ）が発見ファブリック・トラバース動作（discovery fabric traversal operation）を実行することを除いて、発見ファブリック・トラバース中にすべてのルート複合体（ＲＣ）がエンドポイントとして扱われる。
【００７６】
ＭＲ−ＰＣＩＭ１０６２がＰＣＩｅファブリックをトラバースするにつれて、ＭＲ−ＰＣＩＭ１０６２はルート複合体とエンドポイントとの間でいくつかのチェックを実行し、所与のルート複合体が所与のエンドポイントに関連付けられているかどうかを判断する。ＭＲ−ＰＣＩＭ１０６２は、結果として得られる情報から、ＰＣＩｅファブリック１０３０で使用可能なエンドポイントをそれぞれのルート複合体に結合する１つまたは複数の仮想ＰＣＩツリー・データ構造を生成する。同じルート複合体に関連するエンドポイントは、仮想ＰＣＩツリー・データ構造内で相互に関連付けられる。
【００７７】
ＭＲ−ＰＣＩＭ１０６２がファブリックを発見し構成した後、それぞれのＲＣにより、それに関連するＳＲ−ＰＣＩＭ１０１８および１０２８がＶＨを発見し構成できるようになる。各ＳＲ−ＰＣＩＭ１０１８、１０２８は、所与のエンドポイントごとに、それが属すＰＣＩｅメモリ・アドレス空間（複数も可）、たとえば、ホスト・システム１のメモリ１０７０およびホスト・システム２のメモリ１０８０に関連するＰＣＩｅメモリ・アドレス空間（複数も可）内の基底アドレスおよび限界を割り当てる。ＳＲ−ＰＣＩＭ１０１８、１０２８は、この基底アドレスおよび限界をＥＰの基底アドレス・レジスタ（ＢＡＲ）に書き込む。以下により詳細に記載するように、その後、ホスト・システム１０１０および１０２０の全域で様々なルート複合体とエンドポイントとの通信を容易にするために、ＰＣＩメモリ・アドレス空間（複数も可）のこれらの部分に作業要求および完了メッセージを書き込むことができる。
【００７８】
前述の通り、例示的な諸実施形態では、ＭＲ−ＰＣＩＭ１０６２は、ＰＣＩｅファブリック１０３０をトラバースするときに、ルート複合体とエンドポイントとの間でいくつかのチェックを実行する。たとえば、ＭＲ−ＰＣＩＭ１０６２は、ＥＰの各機能、物理機能、および仮想機能のＰＣＩｅ構成空間にアクセスし、ＰＣＩ規格によって定義されている通り、そのＰＣＩｅ構成空間はＥＰ内に位置する。また、ＭＲ−ＰＣＩＭは、各エンドポイントに関する重要プロダクト・データ（ＶＰＤ：Vital Product Data）にアクセスし、たとえば、ＭＲ−ＰＣＩＭ１０６２に結合された不揮発性記憶域（図示せず）内などに、その後の比較のためにＶＰＤ情報を保管する。
【００７９】
ＶＰＤは、システムのハードウェア、ソフトウェア、およびマイクロコード・エレメントなどの項目を明確に定義する情報である。ＶＰＤは、管理、資産管理、ならびにＰＣＩデバイスの明確な識別を必要とするいなかるものにも有用な、ベンダ名、部品番号、シリアル番号、その他の詳細な情報を含む、様々な現場交換可能ユニット（ＦＲＵ：field replaceable unit）に関する情報をシステムに提供する。ＶＰＤ情報は、典型的には、エンドポイント１０１４、１０２４などのＰＣＩデバイス内の記憶装置、たとえば、シリアルＥＥＰＲＯＭに常駐する。ＶＰＤに関する追加情報は、ｗｗｗ．ｐｃｉｓｉｇ．ｃｏｍで入手可能なＰＣＩローカル・バス規格、改訂版３．０から入手することができる。
【００８０】
ＭＲ−ＰＣＩＭ１０６２は、エンドポイント１０１４、１０２４、１０４２、１０４４、１０５２、および１０５４のそれぞれについてＶＰＤ情報を検索し保管した後、どのＥＰおよびＲＣが同じハードウェア装置、たとえば、ブレード上に存在するかを識別する。たとえば、ＭＲ−ＰＣＩＭ１０６２は、それがＲＣおよびＥＰを保持するハードウェア装置に関連付けられていることを示す共存フィールドを収容している、ＭＲＡスイッチ１０１６、１０２６、１０３２のＶＰＤ情報にアクセスする。ＭＲＡスイッチ１０１６、１０２６、１０３２は、どのＥＰおよびＲＣが同じハードウェア装置上に存在するかを判断するために使用できる、ＲＣに割り当てられたＶＨを保管する。
【００８１】
ＥＰが同じホスト上のＲＣと共存していると判断した後、ＭＲ−ＰＣＩＭ１０６２は、図１１および図１２に例示されているような１つまたは複数の仮想ＰＣＩツリー・データ構造を作成する。図１１および図１２に図示されている通り、仮想ＰＣＩツリー・データ構造は、ＰＣＩｅファブリック上で使用可能なエンドポイントを各ルート複合体に結合する。
【００８２】
図１１に図示されている仮想ＰＣＩツリー・データ構造では、ユーザによってＭＲ−ＰＣＩＭ１０６２に対して示された割り当てを介して、エンドポイントＥＰ２  １０２４、ＥＰ４  １０４４、およびＥＰ５  １０５２がルート複合体ＲＣ１  １０１２に関連付けられているものと想定されている。上述のＶＰＤマッチングは、ＥＰがＲＣのホスト上に物理的に存在していることをＲＣが判断できるようにするためにのみ実行される。これは、ＲＣのアドレス空間における標準的なＰＣＩメモリ・マップ・アドレス指定によりＥＰがＲＣにとってアクセス可能であることをＲＣに知らせるものである。これは、物理的関連付けである。仮想ＰＣＩツリー・データ構造では、ユーザが論理的関連付けを作成するためにＭＲ−ＰＣＩＭ１０６２を必要としていることを示すことにより、このような論理的関連付けが指定される。
【００８３】
同様に、図１２では、論理的関連付けを指定するユーザ入力ならびにそれぞれのＶＰＤ情報およびＭＲ−ＰＣＩＭ１０６２によって行われた比較を介して、エンドポイントＥＰ１  １０１４、ＥＰ３  １０４２、およびＥＰ６  １０５４がルート複合体ＲＣ１  １０１２に関連付けられているものと想定されている。したがって、図１１に図示され描かれている例では、エンドポイントＥＰ２  １０２４は、スイッチ２  １０２６およびスイッチ１  １０１６を介して、ルート複合体ＲＣ１  １０１２に関連付けられているかまたは結合されている。エンドポイントＥＰ４  １０４４およびＥＰ５  １０５２は、スイッチ３  １０３２およびスイッチ１  １０１６を介して、ルート複合体ＲＣ１  １０１２に関連付けられている。図１２では、エンドポイントＥＰ１  １０１４は、スイッチ１  １０１６およびスイッチ２  １０２６を介して、ルート複合体ＲＣ２  １０２２に関連付けられているかまたは結合されている。エンドポイントＥＰ３  １０４２およびＥＰ６  １０５４は、スイッチ３  １０３２を介して、ルート複合体ＲＣ２  １０２２に関連付けられている。
【００８４】
これらの仮想ＰＣＩツリー・データ構造に基づいて、ＭＲ−ＰＣＩＭ１０６２は、それが属すＰＣＩｅメモリ・アドレス空間（複数も可）内の基底アドレスおよび限界を各エンドポイントに割り当てる。基底アドレスは、エンドポイントの基底アドレス・レジスタ（ＢＡＲ）に保管することができる。たとえば、ＥＰ１  １０１４は、２つのＰＣＩｅメモリ・アドレス空間１０７０および１０８０によりアクセス可能である。ホスト・システム１  １０１０では、ＥＰ１  １０１４は、ホスト・システムのメモリ１０７０のアドレス空間によりホスト・システムのプロセッサ（図示せず）からアクセス可能である。ホスト・システム２  １０２０では、ＥＰ１  １０１４は、ＰＣＩバス・メモリ・アドレスによりメモリ・マップ入出力を介してアクセス可能なホスト・システム２のメモリ１０８０のアドレス空間において、ＥＰ１の基底アドレスおよび限界によって定義されたＰＣＩｅアパーチャを有する。ホスト・システム１  １０１０のプロセッサは、たとえば、ホスト・システム２  １０２０のプロセッサによって認識されたＰＣＩｅメモリ・アドレスをホスト・システム１のメモリ・アドレスにマッピングするために、ハイパーバイザ、ルート複合体１０１２などの仮想化仲介内に設けることができるものなどのメモリ・アドレス変換および保護テーブル（図示せず）を使用することができる。
【００８５】
同様に、エンドポイントＥＰ２  １０２４は、ホスト・システム・メモリ１０７０および１０８０のための２つのＰＣＩｅメモリ・アドレス空間によりアクセス可能である。ホスト・システム２  １０２０では、ＥＰ２  １０２４は、そのメモリ１０８０のためのホスト・システム２の実メモリ・アドレスによりホスト・システム２のプロセッサからアクセス可能である。ホスト・システム１  １０１０では、ＥＰ２  １０２４は、ＰＣＩバス・メモリ・アドレスによりメモリ・マップ入出力としてアクセス可能なホスト・システム１のメモリ１０７０において、ＥＰ２  １０２４の基底アドレスおよび限界によって定義されたＰＣＩｅアパーチャを有する。ホスト・システム２  １０２０は、ホスト・システム１  １０１０によって認識されたＰＣＩｅメモリ・アドレスをホスト・システム２の実メモリ・アドレスにマッピングするために、メモリ・アドレス変換および保護テーブル（図示せず）を使用することができる。
【００８６】
ルート複合体ＲＣ１  １０１２およびＲＣ２  １０２２のために、ホスト・システム・メモリ１０７０および１０８０の同様の部分を初期設定することができる。たとえば、ホスト・システム１  １０１０では、ＲＣ１  １０１２は、ホスト・システム１のメモリ１０７０のためのホスト・システム１の実メモリ・アドレスによりホスト・システム１のプロセッサからアクセス可能である。ＲＣ１  １０１２は、ホスト・システム１のＰＣＩバス・メモリ・アドレスにより直接メモリ・アクセス（ＤＭＡ）入出力を介してアクセス可能なホスト・システム２のメモリ空間においてＰＣＩｅアパーチャを有する。ホスト・システム１  １０１０は、ホスト・システム２  １０２０によって認識されたＰＣＩｅメモリ・アドレスをホスト・システム１の実メモリ・アドレスにマッピングするために、メモリ・アドレス変換および保護テーブル（図示せず）を使用することができる。
【００８７】
同様に、ホスト・システム２  １０２０では、ＲＣ２  １０２２は、メモリ１０８０のためのホスト・システム２の実メモリ・アドレスによりホスト・システム２のプロセッサからアクセス可能である。ＲＣ２  １０２２は、ホスト・システム２のＰＣＩバス・メモリ・アドレスによりＤＭＡ入出力としてアクセス可能なホスト・システム１のメモリ１０７０においてＰＣＩｅアパーチャを有する。ホスト・システム２  １０２０は、ホスト・システム１  １０１０によって認識されたＰＣＩｅメモリ・アドレスをホスト・システム２の実メモリ・アドレスにマッピングするために、メモリ・アドレス変換および保護テーブル（図示せず）を使用することができる。
【００８８】
したがって、例示的な諸実施形態のメカニズムは、１つのエンドポイントが複数のホスト・システム内の２つ以上のルート複合体によってアクセス可能なものになるように、ホスト・システム内のメモリ空間の初期設定を可能にするものである。その場合、様々なエンドポイントに割り当てられたメモリ空間の部分は、そのエンドポイントとの間で要求および完了メッセージを送信するためにルート複合体によって使用することができる。
【００８９】
図１３は、例示的な一実施形態によりエンドポイントの共用のためのホスト・システムのメモリ・アドレス空間を初期設定するための模範的な動作の概要を示す流れ図である。図１３の流れ図の各ブロック、その後に記載されている流れ図、ならびに流れ図内のブロックの組み合わせがコンピュータ・プログラム命令によって実現できることは理解されるであろう。これらのコンピュータ・プログラム命令は、プロセッサまたはその他のプログラマブル・データ処理装置上で実行される命令によって流れ図の１つまたは複数のブロックに指定された機能を実現するための手段が作成されるようにマシンを生産するために、プロセッサまたはその他のプログラマブル・データ処理装置に提供することができる。また、これらのコンピュータ・プログラム命令は、コンピュータ可読メモリまたは記憶媒体に保管された命令によって流れ図の１つまたは複数のブロックに指定された機能を実現する命令手段を含む製品（article of manufacture）が生産されるように特定の方法で機能するようプロセッサまたはその他のプログラマブル・データ処理装置に指示できるコンピュータ可読メモリまたは記憶媒体に保管することもできる。
【００９０】
したがって、流れ図のブロックは、指定の機能を実行するための手段の組み合わせ、指定の機能を実行するためのステップの組み合わせ、ならびに指定の機能を実行するためのプログラム命令手段をサポートする。また、これらの流れ図の各ブロックならびに流れ図内のブロックの組み合わせが、指定の機能またはステップを実行する特殊目的ハードウェアベースのコンピュータ・システムによって、または特殊目的ハードウェアとコンピュータ命令の組み合わせによって実現できることは理解されるであろう。
【００９１】
図１３に図示されている通り、動作は、ＰＣＩｅファブリックの相互接続スイッチを介してアクセス可能なすべてのリンクをトラバースすることにより、ＭＲ−ＰＣＩＭがＰＣＩｅファブリックを発見することから始まる（ステップ１２１０）。ＰＣＩｅファブリックの発見中に発見されたエンドポイントおよびルート複合体のそれぞれに関するＶＰＤ情報が保管される（ステップ１２２０）。
【００９２】
ＭＲ−ＰＣＩＭは、各エンドポイントに関するＶＰＤ情報を各ルート複合体に関するＶＰＤ情報と比較して、所与のエンドポイントが所与のルート複合体に関連付けられているかどうかを判断する（ステップ１２３０）。各比較ごとに、ＶＰＤ情報がエンドポイントおよびルート複合体に関して一致する場合に、ＭＲ−ＰＣＩＭは対応する共存フィールドを設定する（ステップ１２４０）。発見されたエンドポイントおよびルート複合体の情報ならびにそれぞれの比較に関する共存フィールドの設定に基づいて、ＭＲ−ＰＣＩＭは１つまたは複数の仮想ＰＣＩツリー・データ構造を生成する（ステップ１２５０）。
【００９３】
生成された仮想ＰＣＩツリー・データ構造（複数も可）に基づいて、ＭＲ−ＰＣＩＭは、エンドポイントが属す各ＰＣＩｅメモリ・アドレス空間内の基底アドレスおよび限界を各エンドポイントに割り当てる（ステップ１２６０）。生成された仮想ＰＣＩツリー・データ構造（複数も可）に基づいて、ＭＲ−ＰＣＩＭは、ルート複合体が属す各ＰＣＩｅメモリ・アドレス空間内の基底アドレスおよび限界を各ルート複合体に割り当てる（ステップ１２７０）。その後、動作は終了する。
【００９４】
エンドポイントがホスト・システム全域のルート複合体によりアクセス可能なものになりうるようにホスト・システムのメモリ・アドレス空間を初期設定すると、その後、これらのメモリ・アドレス空間を使用して、これらのルート複合体に関連するシステム・イメージとそれに対応するアプリケーションがエンドポイントと通信できるようにすることができる。このような通信を容易にする方法の１つは、様々なホスト・システム内のこれらの初期設定済みメモリ・アドレス空間を使用するキューイング・システムを介するものである。このようなキューイング・システムは、作業キュー構造と完了キュー構造とを含むことができる。作業キュー構造と完了キュー構造はいずれも、いくつかのキュー・エレメント（そのキュー構造が作業キュー構造であるか完了キュー構造であるかに応じて、作業キュー・エレメント（ＷＱＥ）または完了キュー・エレメント（ＣＱＥ）のいずれか一方）を識別するためのドアベル構造と、キューの始まりに関する基底アドレスと、キューの終わりに関する限界アドレスと、キュー内で次に処理すべきＷＱＥまたはＣＱＥを示すオフセットとを含むことができる。作業キュー構造と完了キュー構造はいずれも、データの送信とデータの受信の両方に使用することができる。
【００９５】
図１４は、例示的な一実施形態により第１のホスト・システムから第２のホスト・システムに作業キュー・エレメント（ＷＱＥ）を送信するためのプロセスを例示する模範的なブロック図である。この説明のために、システムは、ＭＲＡスイッチ１３１６および１３２６も含むことができるＰＣＩｅファブリック１３３０によって接続された複数の共用ＰＣＩルート複合体、たとえば、ＲＣ１  １３１２およびＲＣ２  １３２２とともに、ホスト・システム、たとえば、第１のホスト・システム１３１０と第２のホスト・システム１３２０とを備えて確立されるものと想定されている。さらに、ルート複合体ＲＣ２  １３２２とともに第２のホスト・システム１３２０内に存在するエンドポイント、たとえば、ＥＰ２  １３２４は、ＰＣＩｅファブリック１３３０全域で第１のホスト・システム１３１０のルート複合体ＲＣ１  １３１２とともに共用される予定であり、第２のホスト・システム１３２０の内部メモリ１３８０のアドレス空間および第１のホスト・システムのＰＣＩバス・メモリ・アドレス空間にほぼマッピングされるものと想定されている。このシステム構成は、たとえば、図１０〜図１３に関して前述した初期設定メカニズムを使用することにより、達成することができる。
【００９６】
図１４に図示されている通り、エンドポイントＥＰ１  １３１４は、２つのホスト・システム・メモリ１３７０および１３８０に関連するメモリ空間を介してアクセス可能である。第１のホスト・システム１３１０上では、エンドポイントＥＰ１  １３１４は、第１のホスト・システムのメモリ１３７０に関する第１のホスト・システムの実メモリ・アドレスを介して第１のホスト・システムのプロセッサによってアクセス可能である。第２のホスト・システム１３２０上では、エンドポイントＥＰ１  １３１４は、ＰＣＩバス・メモリ・アドレスを介してメモリ・マップ入出力としてアクセス可能な第２のホスト・システムのメモリ１３８０上のＰＣＩｅアパーチャ１３８２を有する。第１のホスト・システム１３１０は、メモリ・アドレス変換および保護テーブル（ＡＴＰＴ）１３１８を使用して、第２のホスト・システム１３２０によって認識されたＰＣＩｅメモリ・アドレスを第１のホスト・システムのメモリ空間１３７０に関する実メモリ・アドレスにマッピングすることができる。
【００９７】
同様に、エンドポイントＥＰ２  １３２４は、２つのホスト・システム・メモリ空間１３７０および１３８０を介してアクセス可能である。第２のホスト・システム１３２０上では、エンドポイントＥＰ２  １３２４は、第２のホスト・システムの実メモリ・アドレスおよびメモリ・アドレス空間１３８０を介して第２のホスト・システムのプロセッサによってアクセス可能である。第１のホスト・システム１３１０上では、エンドポイントＥＰ２  １３２４は、ＰＣＩバス・メモリ・アドレスを介してメモリ・マップ入出力としてアクセス可能な第１のホスト・システムのメモリ１３７０上のＰＣＩｅアパーチャ１３７２を有する。第２のホスト・システム１３２０は、メモリ・アドレス変換および保護テーブル（ＡＴＰＴ）１３２８を使用して、第１のホスト・システム１３１０によって認識されたＰＣＩｅメモリ・アドレスを第２のホスト・システムのメモリ空間１３８０のメモリ・アドレスにマッピングすることができる。
【００９８】
作業キュー構造１３７４は、いくつかのＷＱＥを渡すために使用されるドアベル構造１３７５と、キューの始まりに関する基底アドレスと、キューの終わりに関する限界アドレスと、作業キュー内で次に処理すべきＷＱＥを示すオフセットとを含むことができる。同様に、完了キュー構造１３７６は、いくつかのＣＱＥを渡すために使用されるドアベル構造１３７７と、キューの始まりに関する基底アドレスと、キューの終わりに関する限界アドレスと、完了キュー内で次に処理すべきＣＱＥを示すオフセットとを含むことができる。
【００９９】
第１のホスト・システム１３１０から第２のホスト・システム１３２０にＷＱＥを送信するために、第１のホスト・システム１３１０は、１つまたは複数のＷＱＥをその送信作業キュー１３７４に挿入することによってプロセスを開始する。各ＷＱＥはデータ・セグメントのリストを収容しており、各データ・セグメントは、いずれも第２のホスト・システムのＰＣＩｅメモリ・バス・アドレス空間内にあって、同じくアドレス変換および保護テーブル（ＡＴＰＴ）を介して第１のホスト・システムのメモリ空間１３７０内の実メモリ・アドレスにマッピングされる、基底アドレスと限界アドレスとを含む。
【０１００】
次に、第１のホスト・システム１３１０は、送信中のいくつかのＷＱＥをドアベル構造１３７５に関するエンドポイントＥＰ２のＰＣＩｅアドレスに書き込む。このドアベル構造に関するアドレスは、ＡＴＰＴを介して第１のホスト・システムのＰＣＩｅメモリ・バス・アドレス空間にマッピングされ、第２のホスト・システムのメモリ空間１３８０内の実メモリ・アドレスにもマッピングされる。ドアベル書き込み動作が完了すると、第２のホスト・システム１３２０のＲＣは、ポーリングするか、または割り込みを取得してからポーリングして、第１のホスト・システムの実メモリ・アドレス空間１３８０を介してドアベル構造１３７５を検索する。すなわち、第２のホスト・システム１３２０のＲＣは、ドアベル構造１３７５に関するアドレスを定期的にポーリングして、新しいＷＱＥを処理すべきかどうかを判断するように構成することができる。代わって、第１のホスト・システム１３１０によるドアベル構造１３７５の設定により、第２のホスト・システム１３２０への割り込みを生成して、処理のために使用可能な新しいＷＱＥを第２のホスト・システム１３２０のＲＣに通知することができる。次に、第２のホスト・システム１３２０のＲＣは、新しいＷＱＥの情報についてドアベル構造１３７５をポーリングし、それに応じて新しいＷＱＥを処理することができる。
【０１０１】
次に、エンドポイントＥＰ２  １３２４は、ルート複合体ＲＣ１  １３１２に対するＰＣＩｅ  ＤＭＡ動作を実行して、ＷＱＥを検索する。各ＤＭＡ動作は、第１のホスト・システムのＰＣＩｅメモリ・バス・アドレス空間を使用し、その実メモり・アドレス空間を介して第２のホスト・システム１３２０上でアクセス可能な第２のホスト・システムのメモリ１３８０内にＤＭＡ動作の結果を入れる。したがって、ホスト・システム１３１０および１３２０の初期設定済み共用メモリを使用すると、異なるホスト・システム１３１０および１３２０内のルート複合体とエンドポイントとの間の作業キュー・エレメントの通信が容易になる。
【０１０２】
図１５は、例示的な一実施形態により第２のホスト・システム１３２０から第１のホスト・システム１３１０に完了キュー・エレメント（ＣＱＥ）を送信するためのプロセスを例示する模範的なブロック図である。図１５に図示されている通り、１つのＷＱＥまたはＷＱＥグループに関連する作業が完了すると、エンドポイントＥＰ２  １３２４は、ルート複合体ＲＣ１  １３１２に対する１つまたは複数のＰＣＩｅ  ＤＭＡ動作を実行して、１つまたは複数のＣＱＥをルート複合体ＲＣ１  １３１２に送信する。ＲＣ１  １３１２がポーリングするかまたはＣＱＥが使用可能であることを示す割り込みを待つことができると言う意味で、ドアベルを使用することができる。
【０１０３】
各ＤＭＡ動作は、第１のホスト・システムのＰＣＩｅメモリ・バス・アドレス空間を使用し、その実メモり・アドレス空間を介して第１のホスト・システム１３１０上でアクセス可能な第１のホスト・システムのメモリ１３７０内に結果を入れる。その結果は、好ましくは、メモリ１３７０のＤＭＡアドレス可能部分に保管され、そのＤＭＡアドレス可能部分は、使用される特定のＯＳ次第でメモり１３７０内の異なる位置にある。
【０１０４】
図１６は、例示的な一実施形態により第１のホスト・システムのルート複合体と第２のホスト・システムに関連するエンドポイントとの間でＷＱＥを伝送するための模範的な動作の概要を示す模範的な流れ図である。図１６に図示されている通り、動作は、第１のホスト・システムが１つまたは複数のＷＱＥをその送信作業キューに挿入することから始まる（ステップ１５１０）。次に、第１のホスト・システムは、送信中のいくつかのＷＱＥをドアベル構造に関するターゲット・エンドポイントのＰＣＩｅアドレスに書き込む（ステップ１５２０）。ドアベル書き込み動作が完了すると、第２のホスト・システムは、ポーリングするか、または割り込みを取得してからポーリングして、第１のホスト・システムの実メモリ・アドレス空間を介してドアベル構造を検索する（１５３０）。
【０１０５】
次に、ターゲット・エンドポイントは、第１のホスト・システムのルート複合体に対するＰＣＩｅ  ＤＭＡ動作を実行して、ＷＱＥを検索する（ステップ１５４０）。次に、ターゲット・エンドポイントは、第２のホスト・システムのメモリ内にＤＭＡ動作の結果を入れる（ステップ１５５０）。その後、動作は終了する。
【０１０６】
図１７は、例示的な一実施形態により第２のホスト・システムのエンドポイントから第１のホスト・システムのルート複合体にＣＱＥを伝送するための模範的な動作の概要を示す模範的な流れ図である。動作は、エンドポイントがそのエンドポイントにサブミットされた１つまたは複数のＷＱＥに関連する処理作業を完了することから始まる（ステップ１６１０）。次に、エンドポイントは、１つまたは複数のＷＱＥが受信されたホスト・システムに関連するルート複合体に対する１つまたは複数のＰＣＩｅ  ＤＭＡ動作を実行して、１つまたは複数のＣＱＥをルート複合体に送信する（ステップ１６２０）。ＤＭＡ動作の結果は、第１のホスト・システムのメモリ内に置かれる（ステップ１６３０）。その後、動作は終了する。
【０１０７】
したがって、例示的な諸実施形態の共用メモリを使用して、それにより異なるホスト・システム上のルート複合体とエンドポイントとの間で作業要求および完了メッセージを交換できるキューイング構造を提供することができる。したがって、ルート複合体は、そのルート複合体が設けられているホスト・システムとは異なるホスト・システム上のエンドポイントと通信することができ、その逆も同様である。
【０１０８】
本明細書の例示的な諸実施形態によれば、例示的な諸実施形態の共用メモリを使用して同じかまたは異なるホスト・システムのルート複合体とエンドポイントとの間で通信するために、トランザクション指向プロトコルを確立することができる。このトランザクション指向プロトコルは、以下に記載するように、データをプッシュまたはプルするために、様々なエレメント、たとえば、ルート複合体またはエンドポイントによって実行すべき一連のトランザクションを指定する。
【０１０９】
図１４に戻ると、ＷＱＥがエンドポイントに提供され、ＣＱＥがルート複合体に返される方法に関する上記の説明は、プルプルプッシュ（pull-pull-push）プロトコルの一例である。すなわち、第２のホスト・システム１３２０のエンドポイントＥＰ２  １３２４は、第１のホスト・システム１３１０によるドアベル構造１３７５の書き込みに応答して、ＰＣＩｅ  ＤＭＡ動作を使用して、第１のホスト・システムの共用メモリ１３７０からＷＱＥをプルする。これらのＷＱＥは、実行すべき動作に関する「コマンド」を提供する。ＷＱＥに保管されたセグメント情報に基づいて、第２のホスト・システム１３２０のエンドポイントＥＰ２  １３２４は、第１のホスト・システムの共用メモリ１３７０内の作業キュー構造１３７４から対応するデータをプルする。ＷＱＥに対応する作業が完了すると、第２のホスト・システム１３２０のエンドポイントＥＰ２  １３２４は、１つまたは複数のＰＣＩｅ  ＤＭＡ動作を使用して、第１のホスト・システム１３１０のルート複合体ＲＣ１  １３１２にＣＱＥをプッシュする。したがって、上述の図１４の例では、プルプルプッシュ・トランザクション・プロトコルが使用される。
【０１１０】
異なるトランザクション・プロトコルを確立するために、その他のプル・トランザクションとプッシュ・トランザクションの組み合わせが可能である。図１８は、同じかまたは異なるホスト・システムのルート複合体とエンドポイントとの間で通信を実行するために使用可能なトランザクションの組み合わせとして可能な様々なものを例示する模範的な表である。図１８に図示されている通り、例示的な諸実施形態のメカニズムとともにプル・トランザクションとプッシュ・トランザクションの任意の組み合わせを使用して、例示的な諸実施形態の共用メモリを使用するためのトランザクション・プロトコルを確立することができる。
【０１１１】
ルート複合体とエンドポイントは、選択されたプロトコルを施行する役割を担う。たとえば、ＯＳシステム・スタックおよびエンドポイントは、前述のような選択されたトランザクション・プロトコルの一部として、データをプルしプッシュするための動作を実行する。使用すべきプロトコルの選択は、エンドポイントによって使用される特定のＰＣＩｅファブリック、たとえば、ＩｎｆｉｎｉＢａｎｄまたはイーサネット（登録商標）・ファブリックに依存する。プロトコルの特殊性は、プログラミング上の選択、たとえば、ポーリングを使用するか、割り込み処理を使用するか、ポーリングと割り込み処理の組み合わせを使用するかに応じて決定することができる。
【０１１２】
例示的な諸実施形態のメカニズムをさらに使用して、上述の共用メモリを介して同じかまたは異なるホスト・システムのルート複合体とエンドポイントとの間のソケット・プロトコル・ベースの通信をサポートすることができる。このようなソケット・プロトコルは、常時接続（constant connection）が存在する予定であるときに使用することができる。ソケット・プロトコルを使用すべきか、または上述のプッシュプル・トランザクションなどのトランザクションベースのプロトコルを使用すべきかに関する判断は、所望の効率および信頼性に基づいて行うことができる。
【０１１３】
ソケット・プロトコルでは、ホスト・システム内の作業キューを使用して、着信ソケット初期設定要求を聴取することができる。すなわち、第２のホスト・システムとのソケット通信接続を確立することを希望する第１のホスト・システムは、その作業キュー内にソケット初期設定要求ＷＱＥを生成することができ、そのソケット初期設定要求ＷＱＥが処理のために使用可能であることを第２のホスト・システムに通知する。その後、第２のホスト・システムは、その要求を受諾または拒否することができる。第２のホスト・システムがその要求を受諾する場合、そのホスト・システムは、第１および第２のホスト・システム間でソケット・ベースの通信を実行する際に第１のホスト・システムによって使用するためのソケットのパラメータのうちの後半部分を返す。このような通信は、たとえば、ホスト・システム間のプル・トランザクションまたはプッシュ・トランザクションあるいはその両方を伴う可能性がある。
【０１１４】
図１９は、例示的な一実施形態によりソケットを確立し、第１のホスト・システムと第２のホスト・システムとの間でソケット・ベースの通信を実行するためのプロセスを例示する模範的なブロック図である。例示的な諸実施形態のソケット・ベースの実現例では、ホスト・システム、たとえば、ホスト・システム１８１０上のＥＰ２  １８２４などのエンドポイントは、受信バッファ１８７６と、バッファ・フル・フラグ（buffer full flag）１８７７と、ドアベル構造１８７８とを収容している。バッファ・フル・フラグ１８７７およびドアベル構造１８７８は、イベントが発生したことを示すように働くメモリ内のアドレスを含むことができる。送信側ホスト・システム、たとえば、ホスト・システム１８１０は、接続エンドポイント、たとえば、エンドポイントＥＰ２  １８２４に対応する、送信側ホスト・システムのルート複合体ＲＣ１  １８１２によってアクセス可能な受信側ホスト・システム１８２０のメモリ１８７０内のＰＣＩｅアパーチャ１８７２を介してドアベル構造１８７８に書き込む。
【０１１５】
前述の通り、同じかまたは異なるホスト・システム上の複数のルート複合体全域のエンドポイントの共用を容易にするためのホスト・システムの共用メモリの初期設定中に、仮想ＰＣＩツリー・データ構造を生成するために、発見されたルート複合体およびエンドポイントのそれぞれについて重要プロダクト・データ（ＶＰＤ）情報が読み取られる。このＶＰＤ情報は、特定のルート複合体またはエンドポイントがＰＣＩｅによりソケットをサポートするかどうかを示すフィールドを含むことができる。この情報を使用して、例示的な一実施形態によるソケット・ベースの通信のためにどのエンドポイントとのソケットを確立できるかを識別することができる。
【０１１６】
したがって、初期設定中に、第１のホスト・システム１８１０は、たとえば、エンドポイントＥＰ２  １８２４に関するＶＰＤ内のベンダ固有フィールドにより、エンドポイントＥＰ２  １８２４がＰＣＩｅによりソケットをサポートすると判断することができ、ＥＰ内のＶＰＤ情報は上記で前述したＭＲ−ＰＣＩＭならびにホスト・システムそのものによりアクセス可能である。同様に、第２のホスト・システム１８２０は、エンドポイントＥＰ１  １８１４に関するＶＰＤ情報内のそのベンダ固有フィールドにより、エンドポイントＥＰ１  １８１４がＰＣＩｅによりソケットをサポートすると判断することができる。
【０１１７】
各ホスト・システム１８１０および１８２０は、着信ソケット初期設定要求を聴取するために使用する作業キュー（ＷＱ）１８５０および１８６０を有する。たとえば、第２のホスト・システム１８２０、すなわち、受信側ホスト・システムは、ブロックしてソケット初期設定要求がその作業キュー１８６０上に表面化するのを待つか、エンドポイントＥＰ２  １８２４のドアベル構造１８７８をポーリングして、ソケット初期設定要求が到着したかどうかを判断する。ソケット初期設定要求は、そのソケットのうち第１のホスト・システム分の半分に使用するための作業キュー１８５０への基底、限界、および開始オフセットを収容している。
【０１１８】
第１のホスト・システム１８１０、すなわち、送信側ホスト・システムは、その作業キュー１８５０内にソケット初期設定要求を生成することができ、ソケット初期設定要求ＷＱＥが使用可能であることを示すドアベル構造１８７８をエンドポイントＥＰ２  １８２４に書き込むことができる。ドアベル構造１８７８内のデータを検索すると、第２のホスト・システムのエンドポイントＥＰ２  １８２４は、ＰＣＩｅ  ＤＭＡ動作を実行し、エンドポイントＥＰ２  １８２４によってアクセス可能なルート複合体ＲＣ１のＰＣＩｅバス・メモリ・アドレスを使用して第１のホスト・システムの作業キュー１８５０からソケット初期設定要求を検索することができる。
【０１１９】
次に、第２のホスト・システム１８２０は、ソケット初期設定要求を解析し、アプリケーションまたはオペレーティング・システム固有の方法でソケット初期設定要求を受諾するか拒否するかを決定することができる。第２のホスト・システム１８２０がソケット初期設定要求を拒否する場合、第２のホスト・システム１８２０は、第１のホスト・システムのルート複合体ＲＣ１  １８１２に非接続応答ＰＣＩｅ  ＤＭＡを送信し、所望であれば、第１のホスト・システムのルート複合体ＲＣ１  １８１２に割り込む。
【０１２０】
第２のホスト・システム１８２０がソケット初期設定要求を受諾する場合、エンドポイントＥＰ２  １８２４は、第１のホスト・システムのルート複合体ＲＣ１  １８１２に対するＰＣＩｅ  ＤＭＡ動作を実行し、ソケットのパラメータの後半部分、すなわち、そのソケットのうち第２のホスト・システム分の半分に使用するための作業キュー１８６０への基底、限界、および開始オフセットを示す。
【０１２１】
ソケットが上述のように初期設定されると、プル・トランザクションまたはプッシュ・トランザクションという２通りの方法の一方で、確立されたソケットを使用して送信／受信動作を実行することができる。プル・トランザクションでは、第１のホスト・システム１８１０のルート複合体ＲＣ１  １８１２は、その作業キュー１８５０にＷＱＥを書き込み、次にルート複合体ＲＣ１  １８１２のＰＣＩｅバス・メモリ・アドレス空間によりアクセス可能なエンドポイントＥＰ２  １８２３に関連するドアベル構造１８７８に書き込むことにより、送信動作を実行する。ドアベル書き込み動作が完了すると、第２のホスト・システム１８２０は、ポーリングするか、または割り込みを取得してからポーリングして、第２のホスト・システムの実メモリ・アドレス空間を介してドアベル構造１８７８を検索する。次に、エンドポイントＥＰ２  １８２４は、ルート複合体ＲＣ１  １８１２に対するＰＣＩｅ  ＤＭＡ動作を実行して、送信動作に関連するＷＱＥを検索する。このＰＣＩｅ  ＤＭＡ動作は、第１のホスト・システムのＰＣＩｅメモリ・バス・アドレス空間を使用し、第２のホスト・システムの実メモり・アドレス空間を介してアクセス可能な第２のホスト・システム上のメモリ１８８０内に結果を入れる。次に、第２のホスト・システム１８２０は、ＷＱＥに指定され、送信動作に関連するデータ・セグメントを検索する。
【０１２２】
第２のホスト・システムがＷＱＥで要求された作業を完了すると、エンドポイントＥＰ２  １８２４は、ルート複合体ＲＣ１  １８１２に対するＰＣＩｅ  ＤＭＡ動作を実行して、送信動作が完了したことを通知するＣＱＥをプッシュする。このＤＭＡ動作は、第１のホスト・システムのＰＣＩｅメモリ・バス・アドレス空間を使用し、第１のホスト・システムの実メモり・アドレス空間を介してアクセス可能な第１のホスト・システム１８１０上のメモリ１８７０内に結果を入れる。
【０１２３】
プッシュ・トランザクションの場合、ルート複合体ＲＣ２  １８２２は、エンドポイントＥＰ１  １８１４に関するドアベル構造１８８８に書き込み、それが使用可能な状態で有する受信ＷＱＥの数を示す。エンドポイントＥＰ１  １８１４が送信すべきデータを有する場合、エンドポイントＥＰ１  １８１４はチェックを行って、エンドポイントＥＰ１  １８１４がルート複合体ＲＣ２  １８２２の作業キュー１８６０上で使用可能な任意の受信ＷＱＥを有するかどうかを判断する。使用可能な受信ＷＱＥがまったくない場合、ルート複合体ＲＣ１  １８１２はエンドポイントＥＰ２のバッファ・フル・フラグ１８８７に書き込んで、第１のホスト・システム１８１０がソケット上で送信すべきデータを有し、第２のホスト・システム１８２０がそのソケットのために受信ＷＱＥを介していくつかのバッファを通知する必要があることを示す。
【０１２４】
使用可能な受信ＷＱＥがある場合、第２のエンドポイントＥＰ２  １８２４は、ルート複合体ＲＣ１  １８１２に対するＰＣＩｅ  ＤＭＡ動作を実行して、ルート複合体ＲＣ１の作業キュー１８５０上で次に使用可能なＷＱＥを検索する。このＤＭＡ動作は、第１のホスト・システムのＰＣＩｅメモリ・バス・アドレス空間を使用し、第２のホスト・システムの実メモり・アドレス空間を介してアクセス可能な第２のホスト・システム１８２０上のメモリ１８８０内に結果を入れる。次に、第２のホスト・システム１８２０は、受信ＷＱＥで渡されたデータ・セグメントにそのデータを送信する。
【０１２５】
第２のホスト・システム１８２０が要求された作業を完了すると、エンドポイントＥＰ２  １８２４は、ルート複合体ＲＣ１  １８１２に対するＰＣＩｅ  ＤＭＡ動作を実行して、送信動作が完了したことを通知するＣＱＥをプッシュする。このＤＭＡ動作は、第１のホスト・システムのＰＣＩｅメモリ・バス・アドレス空間を使用し、第１のホスト・システムの実メモり・アドレス空間を介してアクセス可能な第１のホスト・システム１８１０上のメモリ内に結果を入れる。
【０１２６】
図２０は、例示的な一実施形態によりソケット・ベースの通信接続を使用してプル・トランザクションを実行するための模範的な動作の概要を示す流れ図である。動作は、第１のホスト・システムのルート複合体がその作業キューにＷＱＥを書き込み（ステップ１９１０）、次にターゲット・エンドポイントに関連するドアベル構造に書き込むことから始まる（ステップ１９２０）。ドアベル書き込み動作が完了すると、第２のホスト・システムは、ポーリングするか、または割り込みを取得してからポーリングして、第２のホスト・システムの実メモリ・アドレス空間を介してドアベルを検索する（ステップ１９３０）。
【０１２７】
次に、ターゲット・エンドポイントは、第１のホスト・システムのルート複合体に対するＰＣＩｅ  ＤＭＡ動作を実行して、送信動作に関連するＷＱＥを検索する（ステップ１９４０）。ターゲット・エンドポイントは、第２のホスト・システム上のメモリ内にＰＣＩｅ  ＤＭＡ動作の結果を入れる（ステップ１９５０）。次に、第２のホスト・システムは、ＷＱＥに指定され、送信動作に関連するデータ・セグメントを検索する（ステップ１９６０）。
【０１２８】
第２のホスト・システムがＷＱＥで要求された作業を完了したことに応答して、ターゲット・エンドポイントは、第１のホスト・システムのルート複合体に対するＰＣＩｅ  ＤＭＡ動作を実行して、送信動作が完了したことを通知するＣＱＥをプッシュする（ステップ１９８０）。第１のホスト・システムのルート複合体は、第１のホスト・システムのメモリ内にＰＣＩｅ  ＤＭＡ動作の結果を入れる（ステップ１９９０）。その後、動作は終了する。
【０１２９】
図２１は、例示的な一実施形態によりソケット・ベースの通信接続を使用してプッシュ・トランザクションを実行するための模範的な動作の概要を示す流れ図である。第２のホスト・システムのルート複合体は、第１のホスト・システムのエンドポイントに関するドアベル構造に書き込み、そのルート複合体が使用可能な状態で有する受信ＷＱＥの数を示す（ステップ２０１０）。第１のホスト・システムのエンドポイントが送信すべきデータを有することに応答して（ステップ２０２０）、第１のホスト・システムのエンドポイントはチェックを行って、エンドポイントが第２のホスト・システムのルート複合体の作業キュー上で使用可能な任意の受信ＷＱＥを有するかどうかを判断する（ステップ２０３０）。使用可能な受信ＷＱＥがまったくない場合、第１のホスト・システムのルート複合体は第２のホスト・システムの第２のエンドポイントのバッファ・フル・フラグに書き込んで、第１のホスト・システムがソケット上で送信すべきデータを有し、第２のホスト・システムがそのソケットのために受信ＷＱＥを介していくつかのバッファを通知する必要があることを示す（ステップ２０４０）。次に、動作はステップ２０３０に戻る。
【０１３０】
使用可能な受信ＷＱＥがある場合、第２のエンドポイントは、第１のホスト・システムのルート複合体に対するＰＣＩｅ  ＤＭＡ動作を実行して、第１のホスト・システムのルート複合体の作業キュー上で次に使用可能なＷＱＥを検索する（ステップ２０５０）。第２のエンドポイントは、第２のホスト・システムのメモリ内にＰＣＩｅ  ＤＭＡ動作の結果を入れる（ステップ２０６０）。次に、第２のホスト・システムは、受信ＷＱＥで渡されたデータ・セグメントにそのデータを送信する（ステップ２０７０）。
【０１３１】
第２のホスト・システムが要求された作業を完了すると、第２のエンドポイントは、第１のホスト・システムのルート複合体に対するＰＣＩｅ  ＤＭＡ動作を実行して、送信動作が完了したことを通知するＣＱＥをプッシュする（ステップ２０８０）。第２のエンドポイントは、第１のホスト・システム上のメモリ内にＰＣＩｅ  ＤＭＡ動作の結果を入れる（ステップ２０９０）。その後、動作は終了する。
【０１３２】
上記で論じた通り、マルチルート・システムのエンドポイントは、１つまたは複数の関連仮想機能を有する１つまたは複数の物理機能をサポートすることができる。例示的な諸実施形態のメカニズムは、同じかまたは異なるホスト・システムのルート複合体とエンドポイントとの間の通信を可能にすることに加えて、エンドポイントの物理機能および仮想機能を管理するためのメカニズムも提供する。例示的な諸実施形態のメカニズムによって提供される機能の１つは、同じエンドポイント上の１つの物理機能から他の物理機能に単一ルート・ステートレス仮想機能およびそれに関連するアプリケーションを移行する能力を提供する。この移行機能は、システム管理の領域でワークロード・バランシング機能に関する需要の拡大を満足するために重要なものである。
【０１３３】
ＶＦおよびそれに関連するアプリケーション（複数も可）（動作すべきＶＦに依存するアプリケーションである）を移行することにより、より効率的な環境で動作を続行するために種々のリソースをリクルートすることができる。たとえば、ワークロード・バランシングでは、例示的な諸実施形態のメカニズムを使用してイーサネット（登録商標）ＶＦおよびそれに関連する従属アプリケーションを移動し、異なるＳＩまたは同等ＥＰと完全に関連付けることができる異なるＰＦ上で使用可能なより高速の（たとえば、あまり輻輳していない）接続を利用することができる。
【０１３４】
図２２および図２３は、例示的な一実施形態により同じエンドポイント、たとえば、ＰＣＩｅアダプタ上の１つの物理機能から他の物理機能への仮想機能およびそれに関連するアプリケーションの単一ルート・ステートレス移行を例示する模範的な図である。図２２に図示されている通り、システム・イメージ（ＳＩ）２１０５に関連するアプリケーション２１１０は、エレメント２１１０を２１２０と接続する点線によって表されている通り、仮想機能（ＶＦ）２１２０に関連付けられている。ソフトウェア仲介２１１５は、ＳＲ−ＰＣＩＭ２１００からの情報に基づいて、システム管理者または同等の管理権限に対して移行シナリオを描くことができる。これは、システム管理インターフェース（描写せず）を介して移行のためのターゲットになりうるＰＣＩｅファブリック内で使用可能な同等のＶＦを示すことを含むことができるが、これに限定されない。
【０１３５】
ＳＲ−ＰＣＩＭ２１００によって描くことができる特定の移行シナリオは、たとえば、特定のＶＦを移行可能であるかどうかを判断するためにＳＲ−ＰＣＩＭがアクセスするＶＦ移行機能ビットに基づいて、決定することができる。ＳＲ−ＰＣＩＭ２１００からのこの情報に基づいて、ＳＷＩ２１１５は、このデータを解釈し、管理コンソールまたはエンティティを介してユーザにとって使用可能なＶＦ移行シナリオに変換することができる。これらの移行シナリオは、問題のコンポーネントの設計に非常に依存したものになる。たとえば、イーサネット（登録商標）・アダプタを移行するために、ＯＳは、それを構成解除する（de-configure）ことができなければならない可能性がある。この機能がＯＳによって提供されない場合、管理ユーティリティはこのようなシナリオを描くことができないであろう。換言すれば、管理ユーティリティは、移行シナリオを描くためにそれが後で使用するコンポーネント（システム・イメージ・タイプ、ハードウェアなど）の知識を維持する。この情報は、ＶＦ移行機能ビットに保管された移行可能性（migratability）情報に加えて、移行に関するどのシナリオが選択のために使用可能であるかを識別する。
【０１３６】
システム管理者は、所望のＶＦ２１２０および関連アプリケーション２１１０を移行するためのプロセスを開始する。たとえば、管理ソフトウェア（描写せず）は、ホスト・システムおよびＰＣＩｅファブリック上の使用可能なリソース間で移行可能なＶＦおよびそれに関連するアプリケーションをグラフィカル・ユーザ・インターフェース・ディスプレイなどにエンティティとして描くことができる。管理ソフトウェアは、インターナショナル・ビジネス・マシーンズ社から入手可能なＨＭＣなどのハードウェア管理コンソール上に、あるいはファームウェア（たとえば、ソフトウェア仲介またはハイパーバイザ）と対話するように設計されたシステム実行ソフトウェアの一部または任意のその他のコンソール内に、ならびにハードウェア・リソースの制御機能に存在することができる。
【０１３７】
ホスト・システム上で実行されるソフトウェア仲介（ＳＷＩ）２１１５は、追加の機能を可能にする抽象化層（layer of abstraction）を作成するために管理アプリケーションとハードウェアとの間で使用される任意のタイプのファームウェアまたはソフトウェア・コードにすることができ、移行すべきＶＦ２１２０または柔軟性のためにすべての未解決の要求を完了しなければならないという要求をＳＩ−Ａ２１０５に送信することができる。たとえば、ＳＩ−Ａ２１０５およびＳＷＩ２１１５は、それにより両者が通信するアプリケーション・プログラム・インターフェース（ＡＰＩ：applicationprogram interface）を有することができる。ＳＩ−Ａ２１０５は、ＶＦ２１２０を使用して任意のアプリケーション２１１０を休止または停止することにより、要求に応答することができる。ＳＩ−Ａ２１０５は、ＶＦ２１２０に対するすべての未解決の要求が完了されることを保証することができる。本質的に、ＳＩ−Ａ２１０５はチェックを行って、いかなる要求も保留中ではないことと、すべてのトランザクションが完了していることを表す状態にすべてのキューが入っていることを確認する。たとえば、これを実行するための方法の１つは、すべてのＷＱＥが対応するＣＱＥを有することをチェックすることである。
【０１３８】
次に、ＳＩ−Ａ２１０５は、ＳＩ−ＡによるＶＦ２１２０の使用を事実上停止して、ＶＦ２１２０のその論理表現を構成解除することができる。これは、たとえば、ＳＩ−Ａ２１０５上のＶＦ２１２０用のデバイス・ドライバ（図示せず）によって実行可能な動作である。次に、ＳＩ−Ａ２１０５は、すべての要求が完了していることと、ＶＦ２１２０を除去できることをＳＷＩ２１１５に通知することができる。次に、ＳＷＩ２１１５は、ＳＩ−Ａ２１０５からＶＦ２１２０を除去することができる。これにより、ＶＦ２１２０がＳＩ−Ａ２１０５によって検出不能かつ構成不能なものになる。次に、ＳＷＩ２１１５は、エンドポイントの構成空間内のＶＦの表現をクリアすることにより、ターゲット物理機能（ＰＦ）２１３５からＶＦ２１２０を切り離すことができる。
【０１３９】
次に、図２３を参照すると、ＳＷＩ２１１５は、ターゲットＶＦ２１４５をそのＰＦ２１４０に接続することができる。次に、ＳＷＩ２１１５は、構成のためにＶＦ２１４５をＳＩ−Ａ２１０５にとって使用可能なものにすることができ、ＶＦ２１４５を構成するようＳＩ−Ａ２１０５に指示する。たとえば、ＳＷＩ２１１５は、新しいデバイス、たとえば、新しいエンドポイントであるように見える可能性のあるＶＦ２１４５を含むよう、ファームウェア内のＳＩ−Ａのデバイス・ツリーを更新する。この新しいエンドポイントまたはＶＦ２１４５は、ＯＳ内のその論理表現がファームウェア・コードによってＯＳに提示されたＳＩ−Ａのデバイス・ツリー内でそれを検出するデバイス・ドライバに依存する任意のタイプのエンドポイント・デバイスにすることができる。新しいデバイス、たとえば、ＶＦ２１４５に関するＳＩ−Ａのデバイス・ツリー内に１つの項目が存在すると、そのデバイス用のデバイス・ドライバは、新しいデバイスを検出し構成することになる。
【０１４０】
たとえば、デバイス・ドライバを使用して、ＳＩ−Ａ２１０５がＶＦ２１４５を構成すると、関連アプリケーション２１１０は、ＶＦ２１４５を使用することができる可能性がある。次に、ＳＷＩ２１１５は、移行を完了する関連アプリケーション２１１０を開始するよう、ＳＩ−Ａ２１０５に指示することができる。その結果として、アプリケーション２１１０とＶＦ２１２０は、点線によって表される通り、依然として関連付けられているが、ＶＦ２１２０は、その時点でＰＦ２１４０に関連付けられるように、ＰＦ２１３５との関連付けからすでに移行されている。
【０１４１】
図２４および図２５は、例示的な一実施形態により１つのエンドポイント、たとえば、ＰＣＩｅアダプタから他のエンドポイントへの仮想機能（ＶＦ）およびそれに関連するアプリケーションの単一ルート・ステートレス移行を例示する模範的な図である。１つのエンドポイントから他のエンドポイントへのＶＦのステートレス移行に関する動作は、図２２および図２３に関して上述したものと同様である。図２２および図２３の動作と図２４〜図２５の動作との主な違いは、ＶＦが同じエンドポイント内の異なる物理機能にのみ関連付けられるのではなく、ＶＦがまったく異なるエンドポイント内に置かれることである。
【０１４２】
図２４に図示されている通り、システム・イメージ（ＳＩ）２２０５に関連するアプリケーション２２１０は、エレメント２２１０を２２２０と接続する点線によって表されている通り、仮想機能（ＶＦ）２２２０に関連付けられている。ＳＲ−ＰＣＩＭ２２００は、システム管理者または同等の管理権限に対して移行シナリオを描く。これは、システム管理インターフェース（描写せず）による移行のためのターゲットになりうるＰＣＩｅファブリック内で使用可能な同等のＶＦを示すことを含むことができるが、これに限定されない。
【０１４３】
システム管理者は、所望のＶＦ２２２０および関連アプリケーション２２１０を移行するためのプロセスを開始する。たとえば、管理ソフトウェア（描写せず）は、管理コンソールまたはエンティティのグラフィカル・ユーザ・インターフェース・ディスプレイ内などに、ホスト・システムおよびＰＣＩｅファブリック上の使用可能なリソース間で移行可能なエンティティとしてＶＦおよびそれに関連するアプリケーションを例示することができる。ホスト・システム上で実行されるソフトウェア仲介（ＳＷＩ）２２１５は、移行すべきＶＦ２２２０のためにすべての未解決の要求を完了しなければならないという要求をＳＩ−Ａ２２０５に送信することができる。たとえば、ＳＩ−Ａ２２０５およびＳＷＩ２２１５は、それにより両者が通信するアプリケーション・プログラム・インターフェース（ＡＰＩ）を有することができる。ＳＩ−Ａ２２０５は、ＶＦ２２２０を使用して任意のアプリケーション２２１０を休止または停止することにより、要求に応答することができる。ＳＩ−Ａ２２０５は、ＶＦ２２２０に対するすべての未解決の要求が完了されることを保証することができる。
【０１４４】
次に、ＳＩ−Ａ２２０５は、ＳＩ−ＡによるＶＦ２２２０の使用を事実上停止して、ＶＦ２２２０のその論理表現を構成解除することができる。これは、たとえば、ＳＩ−Ａ２２０５上のＶＦ２２２０用のデバイス・ドライバ（図示せず）によって実行可能な動作である。次に、ＳＩ−Ａ２２０５は、すべての要求が完了していることと、ＶＦ２２２０を除去できることをＳＷＩ２２１５に通知することができる。次に、ＳＷＩ２２１５は、ＳＩ−Ａ２２０５からＶＦ２２２０を除去することができる。これにより、ＶＦ２２２０がＳＩ−Ａ２２０５によって検出不能かつ構成不能なものになる。次に、ＳＷＩ２２１５は、エンドポイントの構成空間内のＶＦの表現をクリアすることにより、ターゲット物理機能（ＰＦ）２２３５からＶＦ２２２０を切り離すことができる。
【０１４５】
次に、図２５を参照すると、ＳＷＩ２２１５は、ＶＦ２２２０（その時点でＶＦ２２４５）が元々関連付けられていたＰＦ２２３５とはまったく異なるエンドポイント内にあるそのＰＦ２２４０にターゲットＶＦ２２４５を接続することができる。次に、ＳＷＩ２２１５は、構成のためにＶＦ２２４５をＳＩ−Ａ２２０５にとって使用可能なものにすることができ、ＶＦ２２４５を構成するようＳＩ−Ａ２２０５に指示する。たとえば、ＳＷＩ２２１５は、新しいデバイスを含むよう、ファームウェア内のＳＩ−Ａのデバイス・ツリーを更新する。ＳＩ−Ａ２２０５は、たとえば、そのタイプが問題のデバイスまたは機能の特定の特性に依存することになるデバイス・ドライバを使用して、ＶＦ２２４５を構成することができる。次に、関連アプリケーション２２１０は、ＶＦ２２４５を使用することができる可能性がある。次に、ＳＷＩ２２１５は、移行を完了する関連アプリケーション２２１０を開始するよう、ＳＩ−Ａ２２０５に指示することができる。その結果として、アプリケーション２２１０とＶＦ２２２０は、点線によって表される通り、依然として関連付けられているが、ＶＦ２２２０は、ＰＦ２２３５との関連付けから異なるエンドポイント内のＰＦ２２４０に関連付けられるように移行されている。
【０１４６】
１つのシステム・イメージから他のシステム・イメージに仮想機能を移行するために同様の動作を実行することができる。図２６および図２７は、例示的な一実施形態により１つのシステム・イメージから他のシステム・イメージへの仮想機能およびそれに関連するアプリケーションの単一ルート・ステートレス移行を例示する模範的な図である。図２６に図示されている通り、移行すべきＶＦ２３２０をターゲットとする動作を停止するための動作は、本質的に、図２２および図２４に関して前述したものと同じである。ＶＦ２３２０に関連するアプリケーション２３１０が停止され、ＶＦ２３２０をターゲットとする動作が完了すると、ＳＩ−Ａ２３０５は、ＶＦ２３２０のその論理表現を構成解除し、すべての要求が完了しており、ＶＦ２３２０を除去できることをＳＷＩ２３１５に通知する。
【０１４７】
ＶＦ２３２０に関してＳＩの変更を実行する予定である場合、ＳＷＩ２３１５は、関連のＰＦ２３３５からＶＦ２３２０を切り離し、ターゲットＰＦ２３４０にＶＦ２３４５を接続する。ターゲットＰＦ２３４０は、同じかまたは異なるエンドポイント上に位置することができる。ＳＷＩ２３１５は、構成のためにＶＦ２３４５をターゲットＳＩ、たとえば、ＳＩ−Ｂ２３５０にとって使用可能なものにし、ＶＦ２３４５を構成するようターゲットＳＩ２３５０に指示する。ターゲットＳＩ２３５０は、その時点でＳＩ−Ｂ２３５０に関連する関連アプリケーション２３１０による使用のために事実上使用可能なものにして、ＶＦ２３４５を構成する。ＳＷＩ２３１５は、新しいＶＦ２３４５上のリソースを使用するために関連アプリケーションを開始するよう、ターゲットＳＩ２３５０に通知する。
【０１４８】
図２８は、例示的な一実施形態により仮想機能を移行するための模範的な動作の概要を示す流れ図である。図２８に図示されている通り、動作は、ユーザが移行すべきＶＦとＶＦに関するターゲット宛先を指定することから始まる（ステップ２４１０）。ホスト・システム上で実行されるＳＷＩは、ＶＦを移行するためにＶＦに対するすべての未解決の要求を完了しなければならないという要求をＳＩに送信する（ステップ２４２０）。ＳＩは、ＶＦを使用する任意のアプリケーションを休止または停止し（ステップ２４３０）、ＶＦに対するすべての未解決の要求が完了していることを保証する（ステップ２４４０）。次に、ＳＩは、ＶＦのその論理表現を構成解除する（ステップ２４５０）。ＳＩは、すべての要求が完了していることと、ＶＦを除去できることをＳＷＩに通知する（ステップ２４６０）。
【０１４９】
次に、ＳＷＩは、ＳＩからＶＦを除去し、関連のＰＦからＶＦを切り離す（ステップ２４７０）。次に、ＳＷＩは、同じかまたは異なるエンドポイント内にある可能性のあるターゲットＰＦにＶＦを接続し、同じかまたは異なるシステム・イメージに関連付けることができる（ステップ２４８０）。次に、ＳＷＩは、ＶＦを構成するよう、ＶＦがその時点で関連付けられているＳＩに指示し、それにより、それを関連アプリケーションによる使用のために使用可能なものにする（ステップ２４９０）。ＳＷＩは、新しいＶＦ上のリソースを使用するために関連アプリケーションを開始するようＳＩに指示する（ステップ２４９５）。その後、動作は終了する。
【０１５０】
したがって、例示的な諸実施形態のメカニズムでは、同じエンドポイント内で、異なるエンドポイント間で、ならびに同じかまたは異なるエンドポイント上の異なるシステム・イメージ間で、仮想機能を移行することができる。このような移行により、様々なロード・バランシング動作を実行することが可能になる。その上、このような移行により、仮想機能の効率的な動作に対してより役立つ動作環境に仮想機能を移動することができる。
【０１５１】
したがって、概略が示されている例示的な諸実施形態は、同じルート複合体内または複数のルート複合体（ＲＣ）全域の複数のシステム・イメージ（ＳＩ）間でエンドポイント、たとえば、ＰＣＩｅ入出力アダプタを同時に共用するためのメカニズムを提供する。その上、例示的な諸実施形態のメカニズムは、キュー・ベースの通信、プッシュプル・ベースのプロトコル通信、およびソケット・ベースの通信を使用する能力をサポートする。さらに、例示的な諸実施形態は、仮想機能およびそれに関連するアプリケーション・インスタンスを同じかまたは異なるエンドポイント内の１つの物理機能から他の物理機能にならびに１つのシステム・イメージから他のシステム・イメージに移行するためのメカニズムを提供する。
【０１５２】
これらのメカニズムに加えて、例示的な諸実施形態は、実行中のマルチルートＰＣＩｅファブリック内への新しいコンポーネントのホット・プラグ／除去を実行するための機能をさらに提供する。これらのメカニズムにより、たとえば、ルート複合体を実行中のＰＣＩｅファブリックにホット・プラグするかまたはそこから除去することができる。たとえば、ブレードはブレード・シャーシにホット・プラグすることができ、それに関連するルート複合体は既存のシステム内のＰＣＩｅファブリックにリアルタイムで組み込むことができる。
【０１５３】
このようなホット・プラグ／除去機能により、ＰＣＩｅファブリックが増大することができ、新たに組み込まれたルート複合体全域で仮想機能を固有に共用することができる。したがって、ＰＣＩｅファブリックは、それを実行するためにシステムを停止せずに拡張することができる。ＰＣＩ−ＳｉＧ入出力仮想化規格は、ＰＣＩｅファブリックのこのような動的拡張に関するこのような機能または標準をまったく提供していない。
【０１５４】
例示的な諸実施形態のメカニズムでは、１つまたは複数のＰＣＩルート複合体および複数ルート認識（ＭＲＡ）対応スイッチを備えた既存のホスト・システムが存在するものと想定されている。たとえば、ホスト・システムは、１つまたは複数のＭＲＡスイッチを有するＰＣＩファブリックによって接続された２つのルート複合体ＲＣ２およびＲＣ２を有することができる。その上、既存のルート複合体ならびに新たに組み込まれたルート複合体と通信するように構成可能な１つまたは複数のエンドポイントがＰＣＩｅファブリックに結合されているものと想定されている。その上、複数ルート（ＭＲ）ＰＣＩ構成マネージャ（ＭＲ−ＰＣＩＭ）は、１つのホスト・システム上の帯域内にまたは帯域外に存在することができ、ＰＣＩｅファブリックの相互接続スイッチを介してアクセス可能なすべてのリンクをトラバースすることができ、それをトラバースすることによってＰＣＩファブリックを発見したものと想定されている。これらの想定はいずれも、本明細書に示されている例示的な諸実施形態に関して上記で前述した様々なメカニズムによって満足される。
【０１５５】
上記で想定されている構成では、システム管理者などが既存のＰＣＩｅファブリックに新しいルート複合体を追加する（たとえば、ブレード・シャーシに新しいブレードを挿入する）と、ホット・プラグ・コントローラなどの自動化メカニズムまたはシステム管理者のうちの少なくとも一方が、管理者インターフェースなどを介するなどにより、ルート複合体の追加をＭＲ−ＰＣＩＭに通知する。このような通知は、たとえば、新しいエンティティをファブリックに追加する動作が行われたことを示すイベントをＭＲ−ＰＣＩＭに通知することにより行うことができる。このようなイベントは、新しいルート複合体がその時点でＰＣＩｅファブリックに接続されている場合、すなわち、ルート複合体がプラグインされている場合に、スイッチおよびスイッチ・ポートを識別することができる。
【０１５６】
次に、ＭＲ−ＰＣＩＭは、既存のＰＣＩｅファブリック内の新しいルート複合体を初期設定するためにいくつかの動作を実行することにより、通知されたイベントを処理することができる。たごえば、ＭＲ−ＰＣＩＭは、新たに追加されたコンポーネントに関する情報でそのＰＣＩｅファブリック構成データ構造を更新することができる。ＰＣＩｅファブリック構成データ構造は、ＰＣＩｅファブリックの構成を表現するためにＭＲ−ＰＣＩＭによって使用される。ＰＣＩｅファブリック構成データ構造内に保管された情報は、たとえば、ＭＲ−ＰＣＩＭとの管理ユーザ・インターフェースを介して、ＰＣＩｅファブリック構成レジスタから、ならびに、システム管理者による入力から、ＭＲ−ＰＣＩＭによって収集される。ＰＣＩｅファブリック構成データ構造の内容およびこの内容の使用法については、以下により詳細に説明する。
【０１５７】
ＰＣＩｅファブリック構成データ構造を更新した後、ＭＲ−ＰＣＩＭは、ＰＣＩ規格によって定義される通り、ＰＣＩ構成空間動作を実行して、ＰＣＩ規格通り、新たに追加されたコンポーネントの特性、たとえば、それがエンドポイント、ルート複合体、スイッチなどであるか、それがどのタイプのエンドポイント、ルート複合体、スイッチなどであるかなどを判断する。新たに追加されたコンポーネントがスイッチであると判断された場合、スイッチの各ポートに関してＰＣＩ構成空間動作を実行して、そのスイッチに結合された追加コンポーネントの存在を判断する。次に、新たに追加されたコンポーネントに関する特性情報、たとえば、コンポーネント・タイプ、ベンダ名、部品番号、シリアル番号などは、ＭＲ−ＰＣＩＭによる使用のために仮想ＰＣＩｅファブリック構成データ構造に保管される。
【０１５８】
コンポーネントが新しいルート複合体または新しいエンドポイントである場合、ＭＲ−ＰＣＩＭは、新しいルート複合体またはエンドポイントを仮想プレーンに関連付ける。このようにして、新しいルート複合体またはエンドポイントは、システムによる使用のために使用可能なものになる。コンポーネントがＭＲＡスイッチである場合、ＭＲ−ＰＣＩＭは、ＰＣＩ入出力仮想化規格通り、スイッチの仮想プレーン・テーブルを構成する。コンポーネントがスイッチである場合、スイッチ・ポートをチェックして、コンポーネントがあれば、どのコンポーネントがそれに接続されているかを確認し、ＭＲ−ＰＣＩＭは、同様にこれらのコンポーネントに関する情報に基づいて、そのＰＣＩｅファブリック構成データ構造も構成する。このようにして、新しいコンポーネント（複数も可）は、ＰＣＩｅファブリックに動的に追加することができる。
【０１５９】
新しいルート複合体に関して、新しいルート複合体に関する特性情報を含むようＭＲ−ＰＣＩＭを構成し、その新しいルート複合体を仮想プレーンに関連付けると、ＰＣＩｅファブリック内で新しいルート複合体を使用することができる。したがって、例示的な諸実施形態のメカニズムにより、ルート複合体およびそれに関連するコンポーネントを既存の実行中のＰＣＩｅファブリックに追加することができる。その結果として、追加のコンポーネントを含めるためにシステムを拡張するときにシステムに関するダウン時間はまったく発生しない。
【０１６０】
図２９は、例示的な一実施形態によりルート複合体に関するホット・プラグイン動作を例示する模範的なブロック図である。図２９はルート複合体に関するホット・プラグイン動作を図示しているが、例示的な諸実施形態はこれに限定されないことを理解されたい。むしろ、上記で論じた通り、ホット・プラグ動作は、本発明の精神および範囲を逸脱せずに、エンドポイント、スイッチ、およびその他のタイプのコンポーネントに関して実行することができる。
【０１６１】
図２９に図示されている通り、ホスト・システム２５１０は、それぞれ仮想プレーン２５１１および２５１３に関連する既存のルート複合体ＲＣ１  ２５１２およびＲＣ２  ２５１４を有する。既存のルート複合体ＲＣ１  ２５１２およびＲＣ２  ２５１４は、仮想プレーン２５４０および２５５０内のエンドポイント２５４２、２５４４、２５５２，および２５５４と通信するようにＭＲ−ＰＣＩＭ２５６２によって構成される。ＭＲ−ＰＣＩＭ２５６２は、ホスト・システム２５１０のコンポーネントを含む、ＰＣＩｅファブリック２５３０のコンポーネントおよびＰＣＩｅファブリック２５３０に接続されたコンポーネントのすべてに関する特性情報を保管するファブリック構成データ構造２５６６を維持する。
【０１６２】
描かれている例では、新しいルート複合体ＲＣ  Ｎ  ２５１６がホスト・システム２５１０に追加されているものと想定されている。たとえば、ルート複合体ＲＣ  Ｎ  ２５１６はブレードに関連付けることができ、ホスト・システム２５１０は、ＲＣ  Ｎ  ２５１６に関連するブレードを挿入可能なシャーシを有するブレード・サーバにすることができる。ＲＣ  Ｎ  ２５１６をサポートできるその他のタイプのデバイスは、例示的な諸実施形態の精神および範囲を逸脱せずに使用することができる。
【０１６３】
例示的な諸実施形態では、コンポーネントのホット・プラグ／除去を可能にする予定の各スイッチ・ポートに関連する２通りのタイプの標準的なＰＣＩホット・プラグ・コントローラが存在する。これらのホット・プラグ・コントローラの一方は、ホット・プラグ／除去動作の物理的側面のためにＭＲ−ＰＣＩＭ２５６２によって使用され、「物理ホット・プラグ」コントローラと呼ばれる。ホット・プラグ可能なポートごとに、このような物理ホット・プラグ・コントローラが１つずつ存在する。
【０１６４】
加えて、スイッチ・ポートの下にある共用コンポーネントへの論理接続を制御するために仮想ホット・プラグ・コントローラを使用するルート複合体のために、「仮想ホット・プラグ」コントローラが提供される。スイッチ・ポートによってサポートされる仮想プレーンごとに１つの仮想ホット・プラグ・コントローラが存在する。
【０１６５】
例示的な諸実施形態では、新しいＲＣ  Ｎ  ２５１６の追加に応答して、ＲＣ  Ｎ  ２５１６に関連するスイッチ２５３２のポートにある物理ホット・プラグ・コントローラが「プレゼンス検出変更（Presence Detect Change）」割り込みメッセージをＭＲ−ＰＣＩＭ２５６２に送信して、新しいコンポーネントがＰＣＩｅファブリックに追加されていることをＭＲ−ＰＣＩＭ２５６２に通知する。この割り込みメッセージはＰＣＩ規格によって定義されているが、ここでの使用法は、ＭＲ−ＰＣＩＭ２５６２を実行しないルート複合体ではなく、ＭＲ−ＰＣＩＭ２５６２に対して割り込みを指示することである。代わって、システム管理者は、新しいコンポーネントの追加に関する他の形式の通知として、挿入の前に、ＭＲ−ＰＣＩＭ２５６２への管理インターフェース（図示せず）を介してＭＲ−ＰＣＩＭ２５６２にも通知している可能性がある。
【０１６６】
次に、ＭＲ−ＰＣＩＭ２５６２は、既存のＰＣＩｅファブリック２５３０内の新しいコンポーネント、たとえば、ルート複合体ＲＣ  Ｎ  ２５１６を初期設定するためにいくつかの動作を実行することにより、「プレゼンス検出変更」割り込みを処理することができる。たとえば、ＭＲ−ＰＣＩＭ２５６２は、新たに追加されたコンポーネントに関する情報でそのファブリック構成データ構造２５６６を更新する。ファブリック構成データ構造２５６６を更新する際に、ＭＲ−ＰＣＩＭ２５６２はＰＣＩ構成空間動作を実行して、新たに追加されたコンポーネントの特性、たとえば、それがエンドポイント、ルート複合体、スイッチなどであるか、それがどのタイプのエンドポイント、ルート複合体、スイッチなどであるか、ベンダ名、部品番号、シリアル番号などを照会し判断する。
【０１６７】
この自動化照会に加えて、追加コンポーネントがルート複合体である場合、システム管理者は、ＭＲ−ＰＣＩＭ２５６２への管理インターフェース（図示せず）などにより、新たに追加されたルート複合体に対してどのコンポーネントを構成すべきかをＭＲ−ＰＣＩＭ２５６２に指示することができる。たとえば、ＭＲ−ＰＣＩＭ２５６２は、新しいＲＣ  Ｎ  ２５１６がアクセスできるようにするためにそのエンドポイントを正しい仮想プレーンに追加できるように、システム管理者がどのエンドポイントを新しいＲＣ  Ｎ  ２５１６に割り当てたいと希望しているかを把握する必要がある。仮想プレーンに対するエンドポイントのこのような割り当ては、ＭＲ−ＰＣＩＭ２５６２がＭＲＡスイッチ２５３２のＰＣＩ構成空間内のＰＣＩマルチルート構成構造にアクセスし、エンドポイントがＭＲＡエンドポイントである場合は、ＭＲＡスイッチ２５３２に加えて、エンドポイント内のＰＣＩマルチルート構成構造にアクセスすることによって実行される。
【０１６８】
描かれている例では、追加された新しいコンポーネントは、ルート複合体ＲＣ  Ｎ  ２５１６、たとえば、ＲＣ  Ｎ  ２５１６を提供するブレードである。しかし、このコンポーネントは、いくつかの異なるタイプのコンポーネントのいずれでもよく、したがって、ＭＲ−ＰＣＩＭ２５６２は、追加コンポーネントから収集された特性情報に基づいて、追加されるコンポーネントのタイプを判断することができる。追加されるコンポーネントについて判断されたタイプに基づいて、ＭＲ−ＰＣＩＭ２５６２により様々な動作を実行してＰＣＩｅファブリック２５３０にそのコンポーネントを動的に追加し、ＰＣＩｅファブリック２５３０の通信および動作においてそれを使用できるようにすることができる。
【０１６９】
描かれている例では、追加コンポーネントは新しいルート複合体ＲＣ  Ｎ  ２５１６であるので、ＭＲ−ＰＣＩＭ２５６２は、新しいルート複合体ＲＣ  Ｎ  ２５１６を仮想プレーン２５１５に関連付け、次に、前に詳述した通り、システム管理者が新しいルート複合体ＲＣ  Ｎ２５１６に対して指定したエンドポイントを関連付ける。このようにして、新しいコンポーネントをＰＣＩｅファブリックに動的に追加することができる。
【０１７０】
ＭＲ−ＰＣＩＭ２５６２によりＰＣＩｅファブリック２５３０に新しいルート複合体ＲＣ  Ｎ  ２５１６が追加された場合、新しいルート複合体ＲＣ  Ｎ  ２５１６に関する特性情報をファブリック構成データ構造２５６６に含め、新しいルート複合体に関連付けるコンポーネントのＰＣＩ構成空間をセットアップし、新しいルート複合体を仮想プレーン２５１５に関連付けることにより、新しいルート複合体ＲＣ  Ｎ  ２５１６をＰＣＩｅファブリック２５３０で使用することができる。上記の動作は、ＰＣＩｅファブリック２５３０が機能し続けている間に動的に実行される。したがって、例示的な諸実施形態は、実行中のＰＣＩｅファブリック２５３０にコンポーネントをホット・プラグするためのメカニズムを提供する。
【０１７１】
ファブリック構成データ構造は、ＭＲ−ＰＣＩＭ２５６２によりシステム構成とともに現行状態に保持され、いくつかの目的に使用できることに留意されたい。たとえば、それは、ＭＲ−ＰＣＩＭの管理インターフェースを介して、ＰＣＩｅファブリック２５３０の入出力構成をシステム管理者に対して表示するために使用することができる。すなわち、どのエンドポイントがどのルート複合体に割り当てられるか、どのエンドポイントがどのルート複合体にも割り当てられておらず、したがって、割り当てるために使用可能であるかなどの表現は、ＭＲ−ＰＣＩＭ２５６２によって提供される管理インターフェースを介してシステム管理者に提供することができる。また、ファブリック構成データ構造２５６６は、フラッシュ・メモリまたはハード・ディスクなどの不揮発性記憶装置内のシステム電源サイクル全体で持続することもでき、その結果、システムの電源を投入したときに、システム管理者によって前に割り当てられたルート複合体に対するエンドポイントの事前割り当てをＭＲ−ＰＣＩＭ２５６２によって自動的に復元することができる。
【０１７２】
ファブリック構成データ構造２５６６は、入出力通信ファブリック２５３０、エンドポイントＰＣＩ構成レジスタ、およびＭＲ−ＰＣＩＭ２５６２の管理インターフェースを介してシステム管理者によって入力された情報から入手したすべての既知の情報で維持される。ファブリック構成データ構造２５６６は、入出力構造のツリー構造を識別し、このため、後述する通り、除去動作が実行されたときにどのコンポーネントが除去されるかを把握するために使用することができる。
【０１７３】
上記の例では、ルート複合体が追加されている。これが行われると、ルート複合体のファームウェアおよびソフトウェアは、通常の電源投入動作の一部として、通常のＰＣＩ構成アクセスを使用して、ファブリック構成データ構造２５６６内の入出力構成情報を調べることになる。実行中の入出力通信ファブリック２５３０に追加されるコンポーネントがエンドポイントである場合、システム管理者がＭＲ−ＰＣＩＭの管理インターフェースを介して所望のルート複合体にコンポーネントを追加すると、ＭＲ−ＰＣＩＭ２５６２は、上述の通り、所望の仮想プレーンに対してエンドポイントを構成した後、前述の仮想ホット・プラグ・コントローラを介してエンドポイントが追加されたことをルート複合体に通知する。その結果として、ルート複合体は、仮想ホット・プラグ・コントローラから割り込みを受信し、新しいエンドポイントを構成し、その使用を開始するソフトウェアを開始する。このため、現行のシステム動作を停止せずに、エンドポイントを追加することができる。
【０１７４】
加えて、例示的な諸実施形態のメカニズムは、ＰＣＩｅファブリック２５３０からコンポーネントを動的に除去するための機能も提供する。「追加（Add）」イベントと同様に、ＭＲ−ＰＣＩＭ２５６２には、インターフェース、自動検出メカニズムなどを介して、システム管理者から「除去（Remove）」イベントを通知することができる。「除去」イベントの場合、このイベントは、ＭＲ−ＰＣＩＭ２５６２によって管理される仮想階層のうちのどの仮想ツリー・ブランチで除去動作（すなわち、コンポーネントのホット・プラグ除去）が行われたかまたは行われるかをＭＲ−ＰＣＩＭ２５６２に対して識別する。
【０１７５】
除去動作では、除去すべきコンポーネントがファブリック構成データ構造２５６６によって識別される。前述の通り、このファブリック構成データ構造２５６６は、入出力コンポーネントのツリー構造を識別する。除去動作はツリー構造内の除去すべきコンポーネントを指し、そのコンポーネントの下にあるものもすべて除去されることになる。たとえば、除去すべきコンポーネントは、ＭＲ−ＰＣＩＭ２５６２管理インターフェースを介してシステム管理者に対して表示されるグラフィック管理インターフェースによって指し示される可能性がある。その場合、ＭＲ−ＰＣＩＭ２５６２は、ファブリック構成データ構造２５６６を介してその選択されたコンポーネントがどのように他のコンポーネントに関連するかを把握する。
【０１７６】
代わって、コンポーネントの関係は、そのコンポーネントに関連する仮想ホット・プラグ・コントローラ内の状況ビットによって識別することができる。この後者の場合、仮想ホット・プラグ・コントローラは、どのコンポーネントを除去すべきであったかを確認するために、仮想ホット・プラグ・コントローラのレジスタから状況を読み取ることができるＭＲ−ＰＣＩＭ２５６２に対して割り込みメッセージを発行することができる。このような場合、ＭＲ−ＰＣＩＭ２５６２は、どのコンポーネントを除去する必要があるかを発見するために、ファブリック構成データ構造２５６６を走査してそのコンポーネントを見つけることができる。
【０１７７】
除去動作の例としては、エンドポイントＥＰ５  ２５５２を除去するための動作を含み、その場合、ファブリック構成データ構造２５６６内のツリー構造に基づいて、そのエンドポイントのみが除去のために識別されるであろう。他の例として、ＭＲＡスイッチ３  ２５３２の除去は、ファブリック構成データ構造２５６６のツリー構造に基づいて、ＭＲＡスイッチ３  ２５３２およびエンドポイントＥＰ３  ２５４２〜ＥＰ６  ２５５４の除去を伴うことになるであろう。
【０１７８】
ＭＲ−ＰＣＩＭ２５６２は、「除去」イベントに関連するコンポーネントを除去するようにその仮想ＰＣＩｅファブリック構成データ構造２５６６を更新し、それらが前に占めていた仮想プレーンからそれらを除去するように関連する１つまたは複数のツリー・ブランチ内のコンポーネントのＰＣＩ構成空間を更新することにより、「除去」イベントを処理する。除去後、エンドポイントを未使用コンポーネント・プールに返すことができ、システム管理者によって後で他のルート複合体に割り当てることができる。具体的には、ファブリック構成データ構造２５６６に内のＰＣＩ構成情報によって識別された通り、コンポーネントがエンドポイントである場合、ＭＲ−ＰＣＩＭ２５６２は、それが入っていた仮想ツリー階層内の仮想プレーンからそのエンドポイントを除去する。コンポーネントがルート複合体であるかまたはルート複合体を提供する場合、そのコンポーネントに関連する仮想プレーンは、その仮想プレーンの一部であったすべてのコンポーネントから除去される。したがって、ＰＣＩｅファブリックにコンポーネントを動的に追加できることに加えて、例示的な諸実施形態のメカニズムは、ＰＣＩｅファブリックが動作中または実行中である間にＰＣＩｅファブリックからコンポーネントを動的に除去する能力をさらに提供する。
【０１７９】
図３０は、例示的な一実施形態によりＰＣＩｅファブリックにコンポーネントを追加するための模範的な動作の概要を示す流れ図である。図３０に図示されている通り、動作は、ＰＣＩｅファブリックへのコンポーネントの追加を示す「追加」イベントをＭＲ−ＰＣＩＭで受信することから始まる（ステップ２６１０）。前に論じた通り、このイベントは、コンポーネントが追加されるスイッチおよびスイッチ・ポートを識別することができ、たとえば、コンポーネントの追加の自動検出に応答してまたはシステム管理者のコマンド入力に応答して生成することができる。「追加」イベントは、たとえば、新しいコンポーネントの追加の検出に応答して、ＰＣＩｅスイッチの物理ホット・プラグ・コントローラによって送信された「プレゼンス検出変更」割り込みの一部として受信することができる。
【０１８０】
ＭＲ−ＰＣＩＭは、追加コンポーネントに関する特性情報を収集する（ステップ２６２０）。この収集は、コンポーネントなどに関連するＶＰＤ記憶装置などから特性情報を検索するためにコンポーネントと通信することを含むことができる。その上、この収集は、ＭＲ−ＰＣＩＭがＰＣＩ構成空間動作を実行して、新たに追加されたコンポーネントのこのような特性を決定することを含むことができる。ＭＲ−ＰＣＩＭは、収集された特性情報に基づいて、コンポーネントがスイッチであるかどうかを判断する（ステップ２６３０）。コンポーネントがスイッチである場合、ＭＲ−ＰＣＩＭは、スイッチのポートに接続された任意のコンポーネントに関する特性情報を収集する（ステップ２６４０）。ＭＲ−ＰＣＩＭは、そのコンポーネントに関する特性情報に基づいて、スイッチがＭＲＡスイッチであるかベース・スイッチ（base switch）であるかを判断する（ステップ２６５０）。スイッチがＭＲＡスイッチである場合、ＭＲ−ＰＣＩＭはＭＲＡスイッチ仮想プレーン・テーブルを構成する（ステップ２６６０）。スイッチがベース・スイッチである場合、ＭＲ−ＰＣＩＭはスイッチ上のすべてのポートを１つの仮想プレーンに割り当てる（ステップ２６７０）。
【０１８１】
コンポーネントがスイッチではない場合、ＭＲ−ＰＣＩＭは、コンポーネントが新しいルート複合体またはエンドポイントを提供するものと判断する。ＭＲ−ＰＣＩＭはルート複合体またはエンドポイントを仮想プレーンに関連付ける（ステップ２６８０）。次に、コンポーネントに関する特性情報を使用して、関連の仮想プレーン（複数も可）に基づいてＭＲ−ＰＣＩＭに関連するＰＣＩｅファブリック構成データ構造を更新する（ステップ２６９０）。この更新は、たとえば、ファブリック構成データ構造内に維持される１つまたは複数の仮想階層を更新することを含むことができる。最後に、ＭＲ−ＰＣＩＭはＰＣＩ構成空間ＶＰ  ＩＤを更新する（ステップ２６９５）。その後、動作は終了する。
【０１８２】
図３１は、例示的な一実施形態によりＰＣＩｅファブリックからコンポーネントを動的に除去するための模範的な動作の概要を示す流れ図である。図３１に図示されている通り、動作は、ＭＲ−ＰＣＩＭが「除去」イベントを受信することから始まる（ステップ２７１０）。上記で論じた通り、このイベントは、たとえば、コンポーネントの除去の自動検出に応答してまたはシステム管理者のコマンド入力に応答して生成することができる。
【０１８３】
ＭＲ−ＰＣＩＭは、除去されるコンポーネントがエンドポイントであるかどうかを判断する（ステップ２７２０）。コンポーネントがエンドポイントである場合、コンポーネントは、それがＭＲ−ＰＣＩＭに関連するＰＣＩｅファブリック構成データ構造で割り当てられていた仮想プレーンから除去される（ステップ２７３０）。コンポーネントがエンドポイントではない場合、コンポーネントはルート複合体である。コンポーネントがルート複合体である場合、ＭＲ−ＰＣＩＭは、ＰＣＩｅファブリック構成データ構造内でその仮想プレーンの一部であったすべてのコンポーネントからルート複合体に関連する仮想プレーンを除去する（ステップ２７４０）。コンポーネントがＭＲ−ＰＣＩＭのファブリック構成データ構造から除去されることに加えて、ＭＲ−ＰＣＩＭは、コンポーネント内のＶＰ番号を更新するために、影響を受けるコンポーネントに対してＰＣＩ構成動作も発行する（ステップ２７５０）。その後、動作は終了する。
【０１８４】
したがって、例示的な諸実施形態のメカニズムは、複数のシステム・イメージおよびルート複合体全域でエンドポイントを共用するための様々な機能を提供する。これらの機能としては、ルート複合体とエンドポイントとの間で通信する際に使用するための共用メモリ空間を構成すること、ルート複合体およびその他のコンポーネントを動的に追加または除去することなどを含む。これらの様々なメカニズムはいずれも、時間の経過とともに要件が変化するにつれてシステムの拡張能力を増すものである。その上、これらの様々なメカニズムは、ワークロード・バランシング、並行保守、および大量なその他の所望のシステム機能を強化するものである。
【０１８５】
本発明は完全に機能するデータ処理システムに関して記載されているが、本発明のプロセスを複数命令からなるコンピュータ可読媒体の形式および様々な形式で分散することができ、その分散を実行するために実際に使用される信号伝送媒体の特定のタイプにかかわらず、本発明が等しく適用されることを当業者が理解することは留意すべき重要なことである。コンピュータ可読媒体の例としては、フレキシブル・ディスク、ハード・ディスク、ＲＡＭ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭなどの書き込み可能タイプの媒体と、デジタルおよびアナログ通信リンク、たとえば、無線周波数および光波伝送などの伝送形式を使用する有線または無線通信リンクなどの伝送タイプの媒体とを含む。コンピュータ可読媒体は、特定のデータ処理システムで実際に使用するためにデコードされたコード化フォーマットの形を取ることができる。
【０１８６】
本発明の説明は、例示および説明のために提示されたものであり、網羅するためあるいは開示された形の本発明に限定するためのものではない。多くの変更例および変形例は当業者にとって自明なものになるであろう。実施形態は、実際の適用例である本発明の原理を最もよく説明し、他の当業者が企図された特定の用途に適した様々な変更例を含む様々な実施形態について本発明を理解できるようにするために、選択され記載されたものである。
【図面の簡単な説明】
【０１８７】
【図１】一般に当技術分野で知られているＰＣＩｅファブリック・トポロジを例示する模範的な図である。
【図２】一般に当技術分野で知られているシステム仮想化を例示する模範的な図である。
【図３】入出力仮想化仲介を使用してＰＣＩルート複合体の入出力を仮想化するための第１の手法を例示する模範的な図である。
【図４】固有に共用されるＰＣＩ入出力アダプタを使用してＰＣＩルート複合体の入出力を仮想化するための第２の手法を例示する模範的な図である。
【図５】ＰＣＩｅ入出力仮想化対応エンドポイントの模範的な図である。
【図６】固有の仮想化なしの単一ルート・エンドポイントの物理機能および仮想機能を例示する模範的な図である。
【図７】固有の入出力仮想化に使用可能になっている単一ルート・エンドポイントの物理機能および仮想機能を例示する模範的な図である。
【図８】例示的な一実施形態によるマルチルート仮想化入出力トポロジを例示する模範的な図である。
【図９】例示的な一実施形態によるルート・ノードのＳＲ−ＰＣＩＭの観点から見たマルチルート仮想化入出力トポロジの仮想階層表示を例示する模範的な図である。
【図１０】例示的な一実施形態による共用メモリＰＣＩｅベース・システムを例示する模範的な図である。
【図１１】例示的な一実施形態による模範的な仮想ＰＣＩツリー・データ構造を表す図である。
【図１２】例示的な一実施形態による模範的な仮想ＰＣＩツリー・データ構造を表す図である。
【図１３】例示的な一実施形態によりエンドポイントの共用のためのホスト・システムのメモリ・アドレス空間を初期設定するための模範的な動作の概要を示す流れ図である。
【図１４】例示的な一実施形態により第１のホスト・システムから第２のホスト・システムに作業キュー・エレメント（ＷＱＥ）を送信するためのプロセスを例示する模範的なブロック図である。
【図１５】例示的な一実施形態により第２のホスト・システムから第１のホスト・システムに完了キュー・エレメント（ＣＱＥ）を送信するためのプロセスを例示する模範的なブロック図である。
【図１６】例示的な一実施形態により第１のホスト・システムのルート複合体と第２のホスト・システムに関連するエンドポイントとの間でＷＱＥを伝送するための模範的な動作の概要を示す模範的な流れ図である。
【図１７】例示的な一実施形態により第２のホスト・システムのエンドポイントから第１のホスト・システムのルート複合体にＣＱＥを伝送するための模範的な動作の概要を示す模範的な流れ図である。
【図１８】同じかまたは異なるホスト・システムのルート複合体とエンドポイントとの間で通信を実行するために使用可能なトランザクションの組み合わせとして可能な様々なものを例示する模範的な表である。
【図１９】例示的な一実施形態によりソケットを確立し、第１のホスト・システムと第２のホスト・システムとの間でソケット・ベースの通信を実行するためのプロセスを例示する模範的なブロック図である。
【図２０】例示的な一実施形態によりソケット・ベースの通信接続を使用してプル・トランザクションを実行するための模範的な動作の概要を示す流れ図である。
【図２１】例示的な一実施形態によりソケット・ベースの通信接続を使用してプッシュ・トランザクションを実行するための模範的な動作の概要を示す流れ図である。
【図２２】例示的な一実施形態により同じＰＣＩｅアダプタ上の１つの物理機能から他の物理機能への仮想機能およびそれに関連するアプリケーションの単一ルート・ステートレス移行を例示する模範的な図である。
【図２３】例示的な一実施形態により同じＰＣＩｅアダプタ上の１つの物理機能から他の物理機能への仮想機能およびそれに関連するアプリケーションの単一ルート・ステートレス移行を例示する模範的な図である。
【図２４】例示的な一実施形態により１つのＰＣＩｅアダプタから他のＰＣＩｅアダプタへの仮想機能およびそれに関連するアプリケーションの単一ルート・ステートレス移行を例示する模範的な図である。
【図２５】例示的な一実施形態により１つのＰＣＩｅアダプタから他のＰＣＩｅアダプタへの仮想機能およびそれに関連するアプリケーションの単一ルート・ステートレス移行を例示する模範的な図である。
【図２６】例示的な一実施形態により１つのシステム・イメージから他のシステム・イメージへの仮想機能およびそれに関連するアプリケーションの単一ルート・ステートレス移行を例示する模範的な図である。
【図２７】例示的な一実施形態により１つのシステム・イメージから他のシステム・イメージへの仮想機能およびそれに関連するアプリケーションの単一ルート・ステートレス移行を例示する模範的な図である。
【図２８】例示的な一実施形態により仮想機能を移行するための模範的な動作の概要を示す流れ図である。
【図２９】例示的な一実施形態によりルート複合体に関するホット・プラグイン動作を例示する模範的なブロック図である。
【図３０】例示的な一実施形態によりＰＣＩｅファブリックにコンポーネントを追加するための模範的な動作の概要を示す流れ図である。
【図３１】例示的な一実施形態によりＰＣＩｅファブリックからコンポーネントを動的に除去するための模範的な動作の概要を示す流れ図である。
【符号の説明】
【０１８８】
３１０：ホストＣＰＵセット
３２０：システム・イメージ（ＳＩ）１
３３０：システム・イメージ（ＳＩ）２
３４０：入出力仮想化仲介
３５０：ＰＣＩルート複合体
３６０：ＰＣＩｅスイッチ
３７０：ＰＣＩｅエンドポイント
３８０：ＰＣＩｅエンドポイント
３９０：ＰＣＩｅエンドポイント
【図１】
0005763873.tif 000002
【図２】
0005763873.tif 000003
【図３】
0005763873.tif 000004
【図４】
0005763873.tif 000005
【図５】
0005763873.tif 000006
【図６】
0005763873.tif 000007
【図７】
0005763873.tif 000008
【図８】
0005763873.tif 000009
【図９】
0005763873.tif 000010
【図１０】
0005763873.tif 000011
【図１１】
0005763873.tif 000012
【図１２】
0005763873.tif 000013
【図１３】
0005763873.tif 000014
【図１４】
0005763873.tif 000015
【図１５】
0005763873.tif 000016
【図１６】
0005763873.tif 000017
【図１７】
0005763873.tif 000018
【図１８】
0005763873.tif 000019
【図１９】
0005763873.tif 000020
【図２０】
0005763873.tif 000021
【図２１】
0005763873.tif 000022
【図２２】
0005763873.tif 000023
【図２３】
0005763873.tif 000024
【図２４】
0005763873.tif 000025
【図２５】
0005763873.tif 000026
【図２６】
0005763873.tif 000027
【図２７】
0005763873.tif 000028
【図２８】
0005763873.tif 000029
【図２９】
0005763873.tif 000030
【図３０】
0005763873.tif 000031
【図３１】
0005763873.tif 000032