図面 (/)

技術 データ処理システムの複数のルート複合体間の通信のために共用メモリを初期設定するための方法、プログラム、およびシステム(複数のルート複合体全域でエンドポイントを共用するために共用メモリを初期設定するためのシステムおよび方法)

出願人 インターナショナル・ビジネス・マシーンズ・コーポレーション
発明者 レナト・ジェイ・レシオスティーヴン・マーク・サーバーダグラス・エム・フライマスクローディア・アンドレア・サルツバーグハコボ・エイ・ヴァルガス
出願日 2007年12月17日 (13年8ヶ月経過) 出願番号 2007-324246
公開日 2008年7月17日 (13年1ヶ月経過) 公開番号 2008-165776
状態 特許登録済
技術分野 マルチプロセッサ
主要キーワード 使用コンポーネント 管理者インターフェース 初期設定済み PD情報 仮想階層 ターゲット物 回路ロジック 認識通信
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2008年7月17日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (20)

課題

複数のルート複合体全域エンドポイント共用するために共用メモリ初期設定するためのシステムおよび方法を提供する。

解決手段

マルチルートPCI構成マネージャMR−PCIM)は、PCIeスイッチファブリック相互接続スイッチによりアクセス可能なすべてのリンクトラバースすることによってPCIeスイッチ・ファブリックを発見し、ルート複合体とエンドポイントとの間の共用メモリを初期設定する。リンクをトラバースするにつれて、MR−PCIMは、ルート複合体およびエンドポイントのそれぞれについて入手した情報を比較して、どのエンドポイントおよびルート複合体が同じブレード上に存在するかを判断し、PCIeスイッチ・ファブリック上で使用可能なエンドポイントを各ルート複合体に結合する仮想PCIeツリーデータ構造を生成する。

概要

背景

多くの近代的なコンピューティングデバイスは、そもそも1990年代インテル社によって作成された周辺装置相互接続規格のあるバージョンまたは実装例を使用する入出力(I/O:input/output)アダプタおよびバスを利用する。周辺装置相互接続(PCI:Peripheral ComponentInterconnect)規格は、コンピュータマザーボード周辺装置を接続するためのコンピュータ・バスを規定するものである。PCI ExpressまたはPCIeは、既存のPCIプログラミング概念を使用するPCIコンピュータ・バスの実装例の1つであるが、大きく異なり、より高速シリアル物理層通信プロトコルをそのコンピュータ・バスの基礎とする。この物理層は、複数のデバイス間で共用できる双方向バスから構成されるのではなく、正確に2つのデバイスに接続される1つの単一方向リンクから構成される。

図1は、PCIe規格によるPCI Express(PCIe)のファブリックトポロジネットワーク接続形態の構造)を例示する図である。図1に図示されている通り、PCIeファブリック・トポロジ100は、ルート複合体130に結合されたホスト・プロセッサ(CPU)110およびメモリ120から構成され、次に、そのルート複合体130は、PCIeエンドポイント140(「エンドポイント」という用語は、PCIe対応入出力アダプタについて言及するためにPCIe規格で使用されるものである)、PCI Express/PCIブリッジ150、および1つまたは複数の相互接続スイッチ160のうちの1つまたは複数に結合されている。ルート複合体130は、CPU/メモリを入出力アダプタに接続する入出力階層のルートを意味する。ルート複合体130は、ホスト・ブリッジと、ゼロまたは1つ以上のルート複合体統合エンドポイントと、ゼロまたは1つ以上のルート複合体イベントコレクタと、1つまたは複数のルート・ポートとを含む。各ルート・ポートは個別の入出力階層をサポートする。入出力階層は、ルート複合体130と、ゼロまたは1つ以上の相互接続スイッチ160またはブリッジ150あるいはその両方(スイッチまたはPCIeファブリックを含むもの)と、エンドポイント170および182〜188などの1つまたは複数のエンドポイントから構成することができる。PCIおよびPCIeに関する追加情報については、www.pcisig.comの周辺装置相互接続分科会(PCI−SiG:peripheral component interconnect special interest group)Webサイトから入手可能なPCIおよびPCIe規格を参照する。

現在、PCIおよびPCIe入出力アダプタ、バスなどは、ブレードサーバのブレードを含む、ほとんどすべてのコンピューティング・デバイスのマザーボードに統合されている。ブレード・サーバは、本質的に、いくつかの個別最小パッケージ・コンピュータ・マザーボード「ブレード」用のハウジングであり、そのそれぞれは、1つまたは複数のプロセッサと、コンピュータ・メモリと、コンピュータ記憶域と、コンピュータ・ネットワーク接続とを含むが、シャーシ共通電源および空冷リソースを共用する。ブレード・サーバは、Webホスティングおよびクラスタ・コンピューティングなどの特殊用途には理想的なものである。

前述の通り、PCIおよびPCIe入出力アダプタは、典型的には、ブレード自体に統合される。その結果として、入出力アダプタは、同じブレード・サーバ内のブレード全域で共用することができない。その上、入出力アダプタの統合により、リンクレートのスケーラビリティが制限される。すなわち、リンク・レートは、時間の経過につれてプロセッサ・パフォーマンススケーリングすることができない。現時点では、複数のブレード全域の複数のシステムイメージによってPCIおよびPCIe入出力アダプタを共用できるようにするメカニズムは、まったく考案されていない。その上、1つのブレード・サーバ内の複数のブレードによって使用するためにPCIおよびPCIe入出力アダプタを非統合方式で提供できるようにするメカニズムは、まったく考案されていない。

概要

複数のルート複合体全域のエンドポイントを共用するために共用メモリ初期設定するためのシステムおよび方法を提供する。マルチルートPCIe構成マネージャMR−PCIM)は、PCIeスイッチ・ファブリックの相互接続スイッチによりアクセス可能なすべてのリンクをトラバースすることによってPCIeスイッチ・ファブリックを発見し、ルート複合体とエンドポイントとの間の共用メモリを初期設定する。リンクをトラバースするにつれて、MR−PCIMは、ルート複合体およびエンドポイントのそれぞれについて入手した情報を比較して、どのエンドポイントおよびルート複合体が同じブレード上に存在するかを判断し、PCIeスイッチ・ファブリック上で使用可能なエンドポイントを各ルート複合体に結合する仮想PCIeツリーデータ構造を生成する。

目的

現行のPCIおよびPCIe入出力アダプタの統合による制限に対処するために、例示的な諸実施形態は、1つのPCIeアダプタを2つまたはそれ以上のシステム・イメージ(SI:system image)によって固有に共用できるようにするメカニズムを提供する。たとえば、エンドポイント、たとえば、PCIe入出力アダプタを同じルート複合体内の複数のSIによって、または共通PCIスイッチ・ファブリックを共用する、すなわち、共通PCIスイッチ・ファブリックに結合される複数のルート複合体(RC:rootcomplex)全域で同時に共用できるようにするためのメカニズムが提供される。このメカニズムにより、各ルート複合体ならびにそれに関連する物理エンドポイントまたは仮想エンドポイントVEP:virtualendpoint)あるいはその両方は、それぞれ専用の固有のPCIメモリ・アドレス空間を有することができる。

効果

実績

技術文献被引用数
1件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

共用メモリと複数のルート複合体通信ファブリックとを備えるデータ処理システムにおいて、前記複数のルート複合体間の通信のために前記共用メモリを初期設定するための方法であって、前記データ処理システム内の前記通信ファブリックのコンポーネントの第1の仮想階層を生成するステップであって、前記第1の仮想階層が前記データ処理システムの第1のルート複合体に関連付けられるステップと、前記データ処理システム内の前記通信ファブリックのコンポーネントの第2の仮想階層を生成するステップであって、前記第2の仮想階層が前記データ処理システムの第2のルート複合体に関連付けられるステップと、前記第1の仮想階層内の各エンドポイントごとに、前記第1のルート複合体に関連する第1の共用メモリ内のアドレス範囲割り当てるステップと、前記第2の仮想階層内の各エンドポイントごとに、前記第2のルート複合体に関連する第2の共用メモリ内のアドレス範囲を割り当てるステップと、前記第1および第2の共用メモリ内の前記割り当て済みアドレス範囲を使用して、前記第1のルート複合体に関連する第1のホスト・システムと、前記第2のルート複合体に関連する第2のホスト・システムとの間で通信を実行するステップと、を含む方法。

請求項2

前記第1の仮想階層を生成する前記ステップと、前記第2の仮想階層を生成する前記ステップが、前記通信ファブリックの前記コンポーネントを発見するために前記通信ファブリック内のリンクトラバースするステップと、前記通信ファブリックの前記コンポーネントに関する識別データ保管するステップと、保管された前記識別データに基づいて前記第1および第2の仮想階層を生成するステップと、を含む、請求項1に記載の方法。

請求項3

保管された前記識別データに基づいて前記第1および第2の仮想階層を生成する前記ステップが、各エンドポイント・コンポーネントに関する前記識別データを、前記通信ファブリック内の前記リンクのトラバース中に発見された各ルート複合体コンポーネントに関する識別データと比較するステップと、前記エンドポイント・コンポーネントに関する前記識別データがルート複合体コンポーネントに関する識別データに一致する場合に、前記エンドポイント・コンポーネントに関連する共存フィールド値を設定するステップと、前記通信ファブリックのエンドポイント・コンポーネントに関連する共存フィールド値に基づいて、前記第1および第2の仮想階層を生成するステップと、を含む、請求項2に記載の方法。

請求項4

前記通信ファブリックが周辺装置相互接続高速PCIe)ファブリックであり、前記エンドポイントがPCIeアダプタである、請求項1乃至3のいずれかに記載の方法。

請求項5

前記第1の仮想階層を生成する前記ステップと、前記第2の仮想階層を生成する前記ステップと、前記第1の共用メモリ内のアドレス範囲を割り当てるステップと、前記第2の共用メモリ内のアドレス範囲を割り当てるステップとが、それぞれの前記第1および第2のルート複合体に関連する単一ルート周辺装置相互接続マネージャ(SR−PCIM)によって実行される、請求項1乃至4のいずれかに記載の方法。

請求項6

前記SR−PCIMが、対応する仮想階層の各エンドポイントごとに、前記エンドポイントが属すPCIメモリアドレス空間内の基底アドレスおよび限界を割り当て、前記SR−PCIMが、前記エンドポイントの基底アドレス・レジスタ(BAR)に前記基底アドレスおよび限界を書き込む、請求項5に記載の方法。

請求項7

前記SR−PCIMが、それぞれのルート複合体に関連する前記仮想階層のみに基づいて、それぞれのルート複合体に関連する共用メモリを個別に構成し、前記SR−PCIMが、前記通信ファブリックのリンクのすべてをトラバースし、前記通信ファブリック内に存在するエンドポイントとルート複合体との間の関連付けを識別する複数ルート周辺装置相互接続マネージャ(MR−PCIM)によって収集された情報に基づいて、前記仮想階層を生成する、請求項5又は6に記載の方法。

請求項8

前記データ処理システムがブレードサーバであり、前記ホスト・システムが前記ブレード・サーバのブレードである、請求項1乃至7のいずれかに記載の方法。

請求項9

前記通信ファブリックが、1つまたは複数の複数ルート認識(MRA)スイッチを含む複数ルート認識通信ファブリックである、請求項1乃至8のいずれかに記載の方法。

請求項10

少なくとも1つのエンドポイントが前記第1のルート複合体と前記第2のルート複合体との間で共用されるように、前記少なくとも1つのエンドポイントが前記第1の共用メモリと前記第2の共用メモリの両方に関連のアドレス範囲を有する、請求項1乃至9のいずれかに記載の方法。

請求項11

前記第1および第2の共用メモリ内の前記割り当て済みアドレス範囲を使用して、前記第1のルート複合体と前記第2のルート複合体との間で通信を実行する前記ステップが、アドレス変換および保護テーブル・データ構造を使用して、前記第1または第2の共用メモリのうちの一方に関連するアドレスを前記第1または第2の共用メモリのうちの他方に関連するアドレスにマッピングするステップを含む、請求項1乃至10のいずれかに記載の方法。

請求項12

前記第1の仮想階層内の各ルート複合体ごとに、前記第1のルート複合体に関連する前記第1の共用メモリ内のアドレス範囲を割り当てるステップと、前記第2の仮想階層内の各ルート複合体ごとに、前記第2のルート複合体に関連する前記第2の共用メモリ内のアドレス範囲を割り当てるステップであって、前記第1のホスト・システムと前記第2のホスト・システムとの間の通信が前記第1のルート複合体と前記第2のルート複合体との間で直接実行されるステップと、をさらに含む、請求項1乃至11のいずれかに記載の方法。

請求項13

前記第1のホスト・システムと前記第2のホスト・システムとの間の通信が、前記第1のホスト・システムと前記第2のホスト・システムのうちの一方のホスト・システムのルート複合体と、前記第1のホスト・システムと前記第2のホスト・システムのうちの他方のホスト・システムのエンドポイントとの間で実行される、請求項1乃至11のいずれかに記載の方法。

請求項14

データ処理システム内で実行されることで、前記データ処理システムに請求項1乃至13のいずれかに記載の方法を実行させるコンピュータプログラム

請求項15

第1のルート複合体を含む第1のホスト・システムと、第2のルート複合体を含む第2のホスト・システムと、前記第1のホスト・システムを前記第2のホスト・システムに結合する通信ファブリックとを含み、前記第1のホスト・システムが前記通信ファブリックのコンポーネントの第1の仮想階層を生成し、前記第1の仮想階層が前記第1のルート複合体に関連付けられ、前記第2のホスト・システムが前記通信ファブリックのコンポーネントの第2の仮想階層を生成し、前記第2の仮想階層が前記第2のルート複合体に関連付けられ、前記第1のホスト・システムが、前記第1の仮想階層内の各エンドポイントごとに、前記第1のルート複合体に関連する第1の共用メモリ内のアドレス範囲を割り当て、前記第2のホスト・システムが、前記第2の仮想階層内の各エンドポイントごとに、前記第2のルート複合体に関連する第2の共用メモリ内のアドレス範囲を割り当て、前記第1および第2の共用メモリ内の前記割り当て済みアドレス範囲を使用して、前記第1のホスト・システムと前記第2のホスト・システムとの間で通信が実行される、データ処理システム。

請求項16

前記通信ファブリックの前記コンポーネントを発見するために前記通信ファブリック内のリンクをトラバースし、前記通信ファブリックの前記コンポーネントに関する識別データを保管するステップと、保管された前記識別データに基づいて前記第1および第2の仮想階層を生成すること、により、前記第1のホスト・システムが前記第1の仮想階層を生成し、前記第2のホスト・システムが前記第2の仮想階層を生成する、請求項15に記載のデータ処理システム。

請求項17

各エンドポイント・コンポーネントに関する前記識別データを、前記通信ファブリック内の前記リンクのトラバース中に発見された各ルート複合体コンポーネントに関する識別データと比較し、前記エンドポイント・コンポーネントに関する前記識別データがルート複合体コンポーネントに関する識別データに一致する場合に、前記エンドポイント・コンポーネントに関連する共存フィールド値を設定し、前記通信ファブリックのエンドポイント・コンポーネントに関連する共存フィールド値に基づいて、前記第1および第2の仮想階層を生成すること、により、保管された前記識別データに基づいて、前記第1のホスト・システムが前記第1の仮想階層を生成し、前記第2のホスト・システムが前記第2の仮想階層を生成する、請求項16に記載のデータ処理システム。

請求項18

前記通信ファブリックが周辺装置相互接続高速(PCIe)ファブリックであり、前記エンドポイントがPCIeアダプタである、請求項15乃至17のいずれかに記載のデータ処理システム。

請求項19

前記第1のホスト・システムおよび前記第2のホスト・システムが、それぞれの前記第1および第2のルート複合体に関連する単一ルート周辺装置相互接続マネージャ(SR−PCIM)を使用して前記生成動作および割り当て動作を実行する、請求項15乃至18のいずれかに記載のデータ処理システム。

請求項20

前記SR−PCIMが、対応する仮想階層の各エンドポイントごとに、前記エンドポイントが属すPCIメモリ・アドレス空間内の基底アドレスおよび限界を割り当て、前記SR−PCIMが、前記エンドポイントの基底アドレス・レジスタ(BAR)に前記基底アドレスおよび限界を書き込む、請求項19に記載のデータ処理システム。

請求項21

前記SR−PCIMが、それぞれのルート複合体に関連する前記仮想階層のみに基づいて、それぞれのルート複合体に関連する共用メモリを個別に構成し、前記SR−PCIMが、前記通信ファブリックのリンクのすべてをトラバースし、前記通信ファブリック内に存在するエンドポイントとルート複合体との間の関連付けを識別する複数ルート周辺装置相互接続マネージャ(MR−PCIM)によって収集された情報に基づいて、前記仮想階層を生成する、請求項19又は20に記載のデータ処理システム。

請求項22

前記データ処理システムがブレード・サーバであり、前記ホスト・システムが前記ブレード・サーバのブレードである、請求項15乃至21のいずれかに記載のデータ処理システム。

請求項23

少なくとも1つのエンドポイントが前記第1のルート複合体と前記第2のルート複合体との間で共用されるように、前記少なくとも1つのエンドポイントが前記第1の共用メモリと前記第2の共用メモリの両方に関連のアドレス範囲を有する、請求項15乃至12のいずれかに記載のデータ処理システム。

技術分野

0001

本出願は、一般に、改良されたデータ処理システムおよび方法に関する。より具体的には、本出願は、複数のルート複合体全体でエンドポイント共用するために共用メモリ初期設定するためのメカニズムを対象とする。

背景技術

0002

多くの近代的なコンピューティングデバイスは、そもそも1990年代インテル社によって作成された周辺装置相互接続規格のあるバージョンまたは実装例を使用する入出力(I/O:input/output)アダプタおよびバスを利用する。周辺装置相互接続(PCI:Peripheral ComponentInterconnect)規格は、コンピュータマザーボード周辺装置を接続するためのコンピュータ・バスを規定するものである。PCI ExpressまたはPCIeは、既存のPCIプログラミング概念を使用するPCIコンピュータ・バスの実装例の1つであるが、大きく異なり、より高速シリアル物理層通信プロトコルをそのコンピュータ・バスの基礎とする。この物理層は、複数のデバイス間で共用できる双方向バスから構成されるのではなく、正確に2つのデバイスに接続される1つの単一方向リンクから構成される。

0003

図1は、PCIe規格によるPCI Express(PCIe)のファブリックトポロジネットワーク接続形態の構造)を例示する図である。図1に図示されている通り、PCIeファブリック・トポロジ100は、ルート複合体130に結合されたホスト・プロセッサ(CPU)110およびメモリ120から構成され、次に、そのルート複合体130は、PCIeエンドポイント140(「エンドポイント」という用語は、PCIe対応入出力アダプタについて言及するためにPCIe規格で使用されるものである)、PCI Express/PCIブリッジ150、および1つまたは複数の相互接続スイッチ160のうちの1つまたは複数に結合されている。ルート複合体130は、CPU/メモリを入出力アダプタに接続する入出力階層のルートを意味する。ルート複合体130は、ホスト・ブリッジと、ゼロまたは1つ以上のルート複合体統合エンドポイントと、ゼロまたは1つ以上のルート複合体イベントコレクタと、1つまたは複数のルート・ポートとを含む。各ルート・ポートは個別の入出力階層をサポートする。入出力階層は、ルート複合体130と、ゼロまたは1つ以上の相互接続スイッチ160またはブリッジ150あるいはその両方(スイッチまたはPCIeファブリックを含むもの)と、エンドポイント170および182〜188などの1つまたは複数のエンドポイントから構成することができる。PCIおよびPCIeに関する追加情報については、www.pcisig.comの周辺装置相互接続分科会(PCI−SiG:peripheral component interconnect special interest group)Webサイトから入手可能なPCIおよびPCIe規格を参照する。

0004

現在、PCIおよびPCIe入出力アダプタ、バスなどは、ブレードサーバのブレードを含む、ほとんどすべてのコンピューティング・デバイスのマザーボードに統合されている。ブレード・サーバは、本質的に、いくつかの個別最小パッケージ・コンピュータ・マザーボード「ブレード」用のハウジングであり、そのそれぞれは、1つまたは複数のプロセッサと、コンピュータ・メモリと、コンピュータ記憶域と、コンピュータ・ネットワーク接続とを含むが、シャーシ共通電源および空冷リソースを共用する。ブレード・サーバは、Webホスティングおよびクラスタ・コンピューティングなどの特殊用途には理想的なものである。

0005

前述の通り、PCIおよびPCIe入出力アダプタは、典型的には、ブレード自体に統合される。その結果として、入出力アダプタは、同じブレード・サーバ内のブレード全域で共用することができない。その上、入出力アダプタの統合により、リンクレートのスケーラビリティが制限される。すなわち、リンク・レートは、時間の経過につれてプロセッサ・パフォーマンススケーリングすることができない。現時点では、複数のブレード全域の複数のシステムイメージによってPCIおよびPCIe入出力アダプタを共用できるようにするメカニズムは、まったく考案されていない。その上、1つのブレード・サーバ内の複数のブレードによって使用するためにPCIおよびPCIe入出力アダプタを非統合方式で提供できるようにするメカニズムは、まったく考案されていない。

発明が解決しようとする課題

0006

現行のPCIおよびPCIe入出力アダプタの統合による制限に対処するために、例示的な諸実施形態は、1つのPCIeアダプタを2つまたはそれ以上のシステム・イメージ(SI:system image)によって固有に共用できるようにするメカニズムを提供する。たとえば、エンドポイント、たとえば、PCIe入出力アダプタを同じルート複合体内の複数のSIによって、または共通PCIスイッチ・ファブリックを共用する、すなわち、共通PCIスイッチ・ファブリックに結合される複数のルート複合体(RC:rootcomplex)全域で同時に共用できるようにするためのメカニズムが提供される。このメカニズムにより、各ルート複合体ならびにそれに関連する物理エンドポイントまたは仮想エンドポイントVEP:virtualendpoint)あるいはその両方は、それぞれ専用の固有のPCIメモリ・アドレス空間を有することができる。

0007

加えて、基本PCI規格から欠落しているが、エンドポイントの共用の結果として得られる複合体構成を管理するために必要なことは、エンドポイント内のPCI機能の組み合わせとして可能なものを決定し、それを管理する必要性である。したがって、本明細書の例示的な諸実施形態は、ブレード・サーバ内の第1のブレードの1つのルート複合体が同じかまたは異なるブレード・サーバ内の第2のブレードの第2のルート複合体と通信するためのメカニズムを提供する。例示的な諸実施形態では、このような通信を容易にするために使用されるマルチルート・ブレード・クラスタ内のルート複合体とエンドポイントとの間の共用メモリを初期設定するためのメカニズムを提供することにより、このような通信をサポートする。

課題を解決するための手段

0008

例示的な一実施形態では、マルチルートPCIe構成マネージャMR−PCIM:multi-root PCIe configuration manager)は、PCIeスイッチ・ファブリックの相互接続スイッチによりアクセス可能なすべてのリンクをトラバースすることによってPCIeスイッチ・ファブリック、すなわち、PCIe階層を発見することにより、ルート複合体とエンドポイントとの間の共用メモリを初期設定する。リンクをトラバースするにつれて、MR−PCIMは、ルート複合体およびエンドポイントのそれぞれについて入手した情報を比較して、どのエンドポイントおよびルート複合体が同じブレード上に存在するかを判断する。次に、PCIeスイッチ・ファブリック上で使用可能なエンドポイントを各ルート複合体に結合する仮想PCIeツリーデータ構造が生成される。同じPCIeツリーの一部であるエンドポイント、すなわち、同じルート複合体に関連するエンドポイントは、この仮想PCIeツリー・データ構造で関連付けられる。

0009

次に、MR−PCIMは、各エンドポイントが属すPCIeメモリ・アドレス空間内の基底および限界をそのエンドポイントに与えることができる。同様に、次に、MR−PCIMは、各ルート複合体が属すPCIeメモリ・アドレス空間内の基底および限界をそのルート複合体に与えることができる。様々なエンドポイントおよびルート複合体のPCIeメモリ・アドレス空間同士をマッピングするために、メモリ変換および保護テーブル・データ構造を生成することができる。

0010

たとえば、特定のエンドポイントまたはルート複合体の場合、そのエンドポイントまたはルート複合体は、第1のホストの実メモリ・アドレス空間に関連付けることができる。同じエンドポイントまたはルート複合体は、第1のホストのPCIバス・メモリ・アドレスにより直接メモリ・アクセス入出力としてアクセス可能な第2のホスト・メモリ上のPCIeアパーチャを介して第2のホストによりアクセス可能なものになりうる。第1のホストは、第2のホストによって認識されるPCIeメモリ・アドレスを第1のホストの実メモリ・アドレスにマッピングするために、メモリ変換および保護テーブル・データ構造を使用することができる。

0011

さらに他の例示的な実施形態では、エンドポイントがホスト・システム全域のルート複合体によりアクセス可能なものになりうるようにホスト・システムのメモリ・アドレス空間を初期設定すると、その後、これらのメモリ・アドレス空間を使用して、これらのルート複合体に関連するシステム・イメージとそれに対応するアプリケーションがエンドポイントと通信できるようにすることができる。

0012

このような通信を容易にする方法の1つは、様々なホスト・システム内のこれらの初期設定済みメモリ・アドレス空間を使用するキューイング・システムを介するものである。このようなキューイング・システムは、作業キュー構造と完了キュー構造とを含むことができる。作業キュー構造と完了キュー構造はいずれも、いくつかのキューエレメント(そのキュー構造が作業キュー構造であるか完了キュー構造であるかに応じて、作業キュー・エレメント(WQE:work queue element)または完了キュー・エレメント(CQE:completion queue element)のいずれか一方)を識別するためのドアベル構造と、キューの始まりに関する基底アドレスと、キューの終わりに関する限界アドレスと、キュー内で次に処理すべきWQEまたはCQEを示すオフセットとを含むことができる。作業キュー構造と完了キュー構造はいずれも、データの送信とデータの受信の両方に使用することができる。

0013

キュー構造およびドアベル構造は、実行すべき通信の対象であるルート複合体およびエンドポイントに対応するホスト・システム・メモリの一部分に設けることができる。キュー・エレメントを生成してキュー構造に追加することができ、それによりキュー・エレメントが処理のために使用可能であることをエンドポイントまたはルート複合体に通知するために、ドアベル構造を書き込むことができる。キュー・エレメントおよびキュー・エレメントに対応するデータを検索するために、PCIeDMA動作を実行することができる。その上、キュー・エレメントの処理の完了を示すための完了キュー・エレメント(CQE)を返すために、PCIe DMA動作を実行することができる。

0014

例示的な一実施形態によれば、例示的な諸実施形態の共用メモリを使用して同じかまたは異なるホスト・システムのルート複合体とエンドポイントとの間で通信するために、トランザクション指向プロトコル確立することができる。このトランザクション指向プロトコルは、データをプッシュまたはプルするために、様々なエレメント、たとえば、ルート複合体またはエンドポイントによって実行すべき一連トランザクションを指定する。本発明の精神および範囲を逸脱せずに、プッシュ・トランザクションとプル・トランザクションの様々な組み合わせを使用することができる。この様々な組み合わせについては、以下の詳細な説明でより詳細に説明する。

0015

加えて、例示的な諸実施形態のメカニズムをさらに使用して、上述の共用メモリを介して同じかまたは異なるホスト・システムのルート複合体とエンドポイントとの間のソケット・プロトコル・ベースの通信をサポートすることができる。このようなソケット・ベースの通信では、ホスト・システム内の作業キューを使用して、着信ソケット初期設定要求聴取(listen)することができる。すなわち、第2のホスト・システムとのソケット通信接続を確立することを希望する第1のホスト・システムは、その作業キュー内にソケット初期設定要求WQEを生成することができ、そのソケット初期設定要求WQEが処理のために使用可能であることを第2のホスト・システムに通知することができる。

0016

その後、第2のホスト・システムは、その要求を受諾または拒否することができる。第2のホスト・システムがその要求を受諾する場合、そのホスト・システムは、第1および第2のホスト・システム間でソケット・ベースの通信を実行する際に第1のホスト・システムによって使用するためのソケットのパラメータのうちの後半部分を返す。これらのパラメータは、ソケットに関連付けるべきキュー構造の一部分と、キュー・エレメントがソケットを介して処理のための使用可能であるときにホスト・システムに通知するために使用されるドアベル構造とを指定することができる。実際のソケット通信は、たとえば、ホスト・システム間のプル・トランザクションまたはプッシュ・トランザクションあるいはその両方を伴う可能性がある。

0017

ルート複合体間のリソースの固有の共用により、システム・イメージ間またはエンドポイント間あるいはその両方で機能およびそれに関連するアプリケーションの移行のためのメカニズムを提供するために活用可能なPCIeファブリック内のホスト・システムとエンティティとの関係が作り出される。この移行機能は、システム管理の領域においてワークロードバランシング機能の需要の増大を満足するために必要である。このようなメカニズムは、現在、PCIe規格から欠落している。

0018

例示的な一実施形態では、単一ルートPCI構成マネージャ(SR−PCIM:Single-Root PCI Configuration Manager)は、エンドポイント(EP)によってサポートされる仮想機能(VF:virtualfunction)移行シナリオとして可能なものを備えたシステム・イメージ(SI)を提供する。システム管理者または管理用タスクを実行するソフトウェア・アプリケーション、たとえば、ワークロード・バランシング・アプリケーションは、あるSIから他のSIへのVFおよびそれに関連するアプリケーション(複数も可)のステートレス移行が必要であることを単一ルートPCIマネージャ(SR−PCIM)に示すコマンドを実行することができる。VFおよびそれに関連するアプリケーション(複数も可)(動作すべきVFに依存するアプリケーションである)を移行することにより、より効率的な環境で動作を続行するために種々のリソースをリクルートすることができる。たとえば、ワークロード・バランシングでは、例示的な諸実施形態のメカニズムを使用してイーサネット登録商標)VFおよびそれに関連する従属アプリケーションを移動し、異なるSIまたは同等EPと完全に関連付けることができる異なる物理機能(PF:physicalfunction)上で使用可能なより高速の(あまり輻輳していない)接続を利用することができる。

0019

ホスト・システム上で実行されるソフトウェア仲介(SWI:Software Intermediary)または仮想化仲介(virtualization intermediary)は、VFに対する未解決の要求を完了し、次にそれを停止するために必要な任意のプロセスを開始するようSIに指示する。VFに対するすべての要求が完了したことがSIによってSWIに通知されると、SWIは、VFに関連する任意のアプリケーションをSIから除去することができ、VFを関連の物理機能(PF)から切り離すことができる。

0020

その後、SWIは、同じかまたは異なるEP内に存在する可能性のあるターゲットPFにVFを接続することができる。その上、ターゲットPFは、異なるSIに関連付けることができる。SWIは、VFをそのVFが現在関連付けられているSIにとって使用可能なものにし、VFを構成するようSIに指示する。SIはVFを構成し、それにより、それを関連アプリケーションによる使用のために使用可能なものにする。次に、SWIは、新たに移行されたVF上のリソースを使用できるように、関連アプリケーションを開始するようSIに指示することができる。

0021

上記のメカニズムに加えて、例示的な諸実施形態は、実行中のマルチルートPCIeファブリックへの新しいコンポーネントホットプラグ/除去を実行するための機能をさらに提供する。これらのメカニズムにより、たとえば、ルート複合体を実行中のPCIeファブリックにホット・プラグするかまたはそこから除去することができる。たとえば、ブレードはブレード・シャーシにホット・プラグすることができ、それに関連するルート複合体は既存のシステム内のPCIeファブリックにリアルタイムで組み込むことができる。

0022

このようなホット・プラグ/除去機能により、PCIeファブリックが増大することができ、新たに組み込まれたルート複合体全域で仮想機能を固有に共用することができる。したがって、PCIeファブリックは、それを実行するためにシステムを停止せずに拡張することができる。PCI−SiG入出力仮想化規格は、PCIeファブリックのこのような動的拡張に関するこのような機能または標準をまったく提供していない。

0023

例示的な一実施形態では、データ処理システムの複数のルート複合体間の通信のために共用メモリを初期設定するための方法が提供される。この方法は、データ処理システム内通信ファブリックのコンポーネントの第1の仮想階層を生成するステップであって、第1の仮想階層がデータ処理システムの第1のルート複合体に関連付けられるステップを含むことができる。この方法は、データ処理システム内の通信ファブリックのコンポーネントの第2の仮想階層を生成するステップであって、第2の仮想階層がデータ処理システムの第2のルート複合体に関連付けられるステップをさらに含むことができる。第1の仮想階層内の各エンドポイントごとに、第1のルート複合体に関連する第1の共用メモリ内のアドレス範囲割り当てることができる。第2の仮想階層内の各エンドポイントごとに、第2のルート複合体に関連する第2の共用メモリ内のアドレス範囲を割り当てることができる。この方法は、第1および第2の共用メモリ内の割り当て済みアドレス範囲を使用して、第1のルート複合体に関連する第1のホスト・システムと、第2のルート複合体に関連する第2のホスト・システムとの間で通信を実行するステップをさらに含むことができる。

0024

第1の仮想階層を生成するステップと、第2の仮想階層を生成するステップは、通信ファブリックのコンポーネントを発見するために通信ファブリック内のリンクをトラバースするステップと、通信ファブリックのコンポーネントに関する識別データ保管するステップと、保管された識別データに基づいて第1および第2の仮想階層を生成するステップとを含むことができる。

0025

保管された識別データに基づいて第1および第2の仮想階層を生成するステップは、各エンドポイント・コンポーネントに関する識別データを、通信ファブリック内のリンクのトラバース中に発見された各ルート複合体コンポーネントに関する識別データと比較するステップを含むことができる。エンドポイント・コンポーネントに関連する共存フィールド値は、エンドポイント・コンポーネントに関する識別データがルート複合体コンポーネントに関する識別データに一致する場合に設定することができる。第1および第2の仮想階層は、通信ファブリックのエンドポイント・コンポーネントに関連する共存フィールド値に基づいて生成することができる。

0026

生成動作および割り当て動作は、それぞれの第1および第2のルート複合体に関連する単一ルート周辺装置相互接続マネージャ(SR−PCIM:single root peripheral component interconnect manager)によって実行することができる。SR−PCIMは、対応する仮想階層の各エンドポイントごとに、そのエンドポイントが属すPCIメモリ・アドレス空間内の基底アドレスおよび限界を割り当てることができる。SR−PCIMは、エンドポイントの基底アドレス・レジスタ(BAR:BaseAddress Register)に基底アドレスおよび限界を書き込むことができる。SR−PCIMは、それぞれのルート複合体に関連する仮想階層のみに基づいて、それぞれのルート複合体に関連する共用メモリを個別に構成することができる。SR−PCIMは、通信ファブリックのリンクのすべてをトラバースし、通信ファブリック内に存在するエンドポイントとルート複合体との間の関連付けを識別する複数ルート周辺装置相互接続マネージャ(MR−PCIM:multipleroot peripheral component interconnect manager)によって収集された情報に基づいて、仮想階層を生成することができる。

0027

通信ファブリックは周辺装置相互接続高速(PCIe)ファブリックにすることができ、エンドポイントはPCIeアダプタである。通信ファブリックは、1つまたは複数の複数ルート認識(MRA:multiple root aware)スイッチを含む複数ルート認識通信ファブリックにすることができる。データ処理システムはブレード・サーバにすることができ、ホスト・システムはブレード・サーバのブレードにすることができる。

0028

少なくとも1つのエンドポイントは、その少なくとも1つのエンドポイントが第1のルート複合体と第2のルート複合体との間で共用されるように、第1の共用メモリと第2の共用メモリの両方に関連のアドレス範囲を有することができる。第1および第2の共用メモリ内の割り当て済みアドレス範囲を使用して、第1のルート複合体と第2のルート複合体との間で通信を実行するステップは、アドレス変換および保護テーブル・データ構造を使用して、第1または第2の共用メモリのうちの一方に関連するアドレスを第1または第2の共用メモリのうちのもう一方に関連するアドレスにマッピングするステップを含むことができる。

0029

この方法は、第1の仮想階層内の各ルート複合体ごとに、第1のルート複合体に関連する第1の共用メモリ内のアドレス範囲を割り当てるステップをさらに含むことができる。また、この方法は、第2の仮想階層内の各ルート複合体ごとに、第2のルート複合体に関連する第2の共用メモリ内のアドレス範囲を割り当てるステップも含むことができる。第1のホスト・システムと第2のホスト・システムとの間の通信は、第1のルート複合体と第2のルート複合体との間で直接実行することができる。第1のホスト・システムと第2のホスト・システムとの間の通信は、第1のホスト・システムと第2のホスト・システムのうちの一方のホスト・システムのルート複合体と、第1のホスト・システムと第2のホスト・システムのうちのもう一方のホスト・システムのエンドポイントとの間で実行することができる。

0030

他の例示的な諸実施形態では、コンピュータ可読プログラムを有するコンピュータで使用可能な媒体を含むコンピュータ・プログラム(computer program product)が提供される。このコンピュータ可読プログラムは、コンピューティング・デバイス上で実行されると、方法の例示的な実施形態に関して上記で概要を示した動作のうちの様々な動作ならびにそれらの組み合わせをコンピューティング・デバイスに実行させる。

0031

さらに他の例示的な実施形態では、データ処理システムが提供される。このデータ処理システムは、第1のホスト・システムと、第2のホスト・システムと、第1のホスト・システムを第2のホスト・システムに結合する通信ファブリックとを含むことができる。第1のホスト・システムおよび第2のホスト・システムは、方法の例示的な実施形態に関して上記で概要を示した動作のうちの様々な動作ならびにそれらの組み合わせを実行することができる。

0032

本発明の上記その他の特徴および利点は、本発明の模範的な諸実施形態に関する以下の詳細な説明に記載され、その詳細な説明を考慮すると、当業者には自明なものになるであろう。

0033

本発明に特有と思われる新規の特徴は特許請求の範囲に規定されている。しかし、本発明そのもの、ならびにその好ましい使用態様、他の目的および利点は、添付図面に併せて読んだときに、例示的な一実施形態に関する以下の詳細な説明を参照することによって最もよく理解されるであろう。

発明を実施するための最良の形態

0034

例示的な諸実施形態は、同じかまたは異なるルート・ノード、たとえば、ブレード・サーバのブレード上にある可能性のある、同じかまたは異なるルート複合体の2つまたはそれ以上のシステム・イメージ(SI)によって1つのPCIeアダプタまたは「エンドポイント」を固有に共用できるようにするメカニズムを提供する。さらに、例示的な諸実施形態は、それによりシステム・イメージと固有に共用されるエンドポイントとの間の通信を容易にするメカニズムを提供する。加えて、例示的な諸実施形態は、PCIeファブリックの管理を容易にするために、仮想プレーン、ルート複合体、およびシステム・イメージ間で仮想機能を移行するためのメカニズムを提供する。その上、例示的な諸実施形態は、それによりエンドポイントを設計するときにエンドポイント・インプリメンタ許可した機能の有効な組み合わせをルート複合体の単一ルートPCIマネージャ(SR−PCIM)がエンドポイントから読み取ることができるメカニズムを提供する。その場合、SR−PCIMは、エンドポイントが使用されている現行構成で使用されることになる機能の組み合わせを設定することができる。

0035

図2は、一般に当技術分野で知られているシステム仮想化を例示する模範的な図である。システム仮想化とは、各セットのリソースがそれ専用のシステム・イメージ・インスタンスおよびアプリケーションにより独立して動作するように物理システムのプロセッサ、メモリ、入出力アダプタ、記憶域、およびその他のリソースを分割することである。このようなシステム仮想化では、仮想リソースは、物理リソースから構成され、たとえば、同じ外部インターフェースおよび機能を有し、設計されたインターフェース/機能を備えたメモリ、ディスクドライブ、およびその他のハードウェア・コンポーネントなどの物理リソース用のプロキシとして動作する。システム仮想化は、典型的には、仮想リソースを作成し、それを物理リソースにマッピングし、それにより仮想リソース間の分離を可能にする仮想化仲介を使用する。仮想化仲介は、典型的には、ソフトウェア、ファームウェア、およびハードウェア・メカニズムのうちの1つまたはこれらの組み合わせとして提供される。

0036

図2に図示されている通り、仮想化システムにおいて典型的には、アプリケーション210は、それにより特定の仮想リソースおよび物理リソースが割り当てられる汎用または特殊目的オペレーティング・システムなどのソフトウェア・コンポーネントであるシステム・イメージ(SI)220と通信する。システム・イメージ220は、単一SIインスタンスを実行するために必要な物理リソースまたは仮想化リソース、たとえば、仮想化プロセッサ、メモリ、入出力アダプタ、記憶域などから構成される仮想システム230に関連付けられている。

0037

システム・イメージ220は、仮想システム230の使用により、仮想化仲介240を介して物理システム・リソース250にアクセスする。仮想化仲介240は、SIへのリソースの割り振りを管理し、SIに割り当てられたリソースを他のSIによるアクセスから分離する。この割り振りおよび分離は、仮想化仲介240によって実行されるリソース・マッピングならびに仮想化仲介240によって維持される1つまたは複数のリソース・マッピング・データ構造に基づいて実行される場合が多い。

0038

このような仮想化を使用して、入出力動作および入出力リソースの仮想化を可能にすることができる。すなわち、入出力仮想化(IOV:I/O virtualization)に関しては、仮想化仲介240などの入出力仮想化仲介(IOVI:I/O virtualizationintermediary)を使用して、2つ以上のSIによって単一の物理入出力装置を共用することができる。IOVIは、たとえば、SIからの構成、入出力、およびメモリ動作、ならびにSIへの直接メモリ・アクセス(DMA)、完了、および割り込み動作のうちの1つまたは複数に介入することによりIOVをサポートするために使用されるソフトウェア、ファームウェアなどにすることができる。

0039

図3は、入出力仮想化仲介を使用してPCIルート複合体の入出力を仮想化するための第1の手法を例示する模範的な図である。図3に図示されている通り、ホスト・プロセッサ・セット310は、チップ、マザーボード、ブレードなどの1つまたは複数のプロセッサにすることができ、それによりアプリケーション(図示せず)がPCIeエンドポイント370〜390などのシステム・リソースにアクセスできる複数のシステム・イメージ320〜330をサポートすることができる。システム・イメージは、入出力仮想化仲介340、PCIeルート複合体350、1つまたは複数のPCIeスイッチ360、およびその他のPCIeファブリック・エレメント、あるいはこれらの組み合わせを介して仮想化リソースと通信する。

0040

図3に例示されている手法では、入出力仮想化仲介340は、すべての入出力トランザクションに関わり、すべての入出力仮想化機能を実行する。たとえば、入出力仮想化仲介340は、様々なSIの入出力キューからの入出力要求をPCIeエンドポイント370〜390内の単一キューに多重化する。したがって、入出力仮想化仲介は、SI320〜330と物理PCIeエンドポイント370〜390との間のプロキシとして働く。

0041

入出力仮想化仲介340によるこのような関わりは、入出力動作に追加の遅延をもたらす可能性があり、それにより単位時間あたりの入出力動作の数が制限され、その結果、入出力パフォーマンスが制限される。加えて、入出力仲介の関わりによって余分なCPUサイクルが必要になり、その結果、他のシステム動作に使用可能なCPUパフォーマンスが低減される。また、この手法が必要とする余分なコンテキスト・スイッチおよび割り込みリダイレクション・メカニズムも、全体的なシステム・パフォーマンスに影響を及ぼす可能性がある。さらに、エンドポイント370〜390が複数のルート複合体間で共用される場合、IOVI340は実現可能なものではない。

0042

図4は、固有に共用されるPCI入出力アダプタを使用してPCIルート複合体の入出力を仮想化するための第2の手法を例示する模範的な図である。図4に図示されている通り、ホスト・プロセッサ・セット410は、チップ、マザーボード、ブレードなどの1つまたは複数のプロセッサにすることができ、それによりアプリケーション(図示せず)がPCIe入出力仮想化(IOV)エンドポイント470〜490などのシステム・リソースにアクセスできる複数のシステム・イメージ420〜430をサポートすることができる。システム・イメージ420〜430は、PCIeルート複合体440、1つまたは複数のPCIeスイッチ460、およびその他のPCIeファブリック・エレメント、あるいはこれらの組み合わせを介して仮想化リソースと通信する。

0043

PCIeルート複合体440は、1つまたは複数のアドレス変換および保護テーブル・データ構造、割り込みテーブル・データ構造などを含むことができ、IOV対応エンドポイント470〜490との入出力動作の仮想化を容易にするルート複合体仮想化イネーブラ(RCVE:root complex virtualization enabler)442を含む。アドレス変換および保護テーブル・データ構造は、たとえば、仮想化リソースに関する仮想アドレス実アドレスとのアドレス変換を実行し、SIへの仮想リソースのマッピングに基づいて仮想リソースへのアクセスを制御し、その他の仮想化動作を実行するために、PCIeルート複合体440によって使用することができる。これらのルート複合体割り込みテーブル・データ構造は、PCIeメモリ・アドレス空間によりアクセス可能であり、たとえば、SIに関連する適切な割り込みハンドラに割り込みをマッピングするために使用される。

0044

図3に図示されている配置構成のように、入出力仮想化インターフェース450も図4の仮想化構造内に設けられている。入出力仮想化インターフェース450は、PCIeスイッチ460に結合可能な非IOV対応PCIeエンドポイントとともに使用される。すなわち、入出力仮想化インターフェース(IOVI)450は、入出力仮想化(IOV)のための固有のサポート、すなわち、エンドポイント内部のサポートを備えていないPCIeエンドポイントについて図3に関して前述したものと同様にPCIeエンドポイントともに使用される。

0045

IOV対応PCIeエンドポイント470〜490の場合、IOVI450は、主に構成トランザクション目的に使用され、SIから開始されるメモリ・マップ入出力(MMIO:memory mapped input/output)動作またはPCIeエンドポイント470〜490から開始される直接メモリ・アクセス(DMA)動作などのメモリ・アドレス空間動作には関わらない。それとは反対に、SI420〜430とエンドポイント470〜490との間のデータ転送は、IOVI450による介入なしに直接実行される。SI420〜430とエンドポイント470〜490との間の直接入出力動作は、以下により詳細に記載するように、RCVE442ならびにIOV対応PCIeエンドポイント470〜490の組み込み入出力仮想化ロジック、たとえば、物理機能および仮想機能を介して可能になる。直接入出力動作を実行する能力は、入出力動作を実行可能な速度を大幅に増加するが、PCIeエンドポイント470〜490が入出力仮想化をサポートすることを必要とする。

0046

図5は、PCIe入出力仮想化(IOV)対応エンドポイントの模範的な図である。図5に図示されている通り、PCIe IOVエンドポイント500は、それによりPCIeファブリックのPCIeスイッチなどとの通信を実行可能なPCIeポート510を含む。内部ルーティング520は、構成管理機能520および複数の仮想機能(VF)540〜560への通信パスを提供する。構成管理機能530は、仮想機能540〜560とは対照的に物理機能にすることができる。物理「機能」とは、PCI規格で使用される用語であり、単一の構成空間(configuration space)によって表される1組のロジックである。換言すれば、物理「機能」とは、たとえば、非分離型リソース570内に設けることができるものなど、メモリ内のその機能に関連する構成空間内に保管されたデータに基づいて構成可能な回路ロジックである。

0047

構成管理機能530を使用して、仮想機能540〜560を構成することができる。仮想機能とは、入出力仮想化対応エンドポイント内で、1つまたは複数の物理エンドポイント・リソース、たとえば、リンクを共用する機能であり、たとえば、他の機能とともに、PCIe IOVエンドポイント500の共用可能リソース・プール580内に設けることができる機能である。仮想機能は、入出力仮想化仲介によるランタイム介入なしに、直接、システム・イメージからの入出力およびメモリ動作用のシンクにすることができ、システム・イメージ(SI)への直接メモリ・アクセス(DMA)、完了、および割り込み動作のソースにすることができる。

0048

PCIeエンドポイントは、PCIeエンドポイントによってサポートされる「機能」に関して多種多様なタイプの構成を有することができる。たとえば、エンドポイントは、単一の物理機能(PF)、複数の独立PF、または複数の従属PFさえサポートすることができる。固有の入出力仮想化をサポートするエンドポイントでは、エンドポイントによってサポートされる各PFは、1つまたは複数の仮想機能(VF)に関連付けることができ、その仮想機能自体は、他のPFに関連するVFに従属している可能性がある。物理機能と仮想機能との模範的な関係については以下の図6および図7に例示されている。

0049

図6は、固有の仮想化なしの単一ルート・エンドポイントの物理機能および仮想機能を例示する模範的な図である。「単一ルート・エンドポイント」という用語は、単一ルート・ノードの単一ルート複合体、すなわち、単一ホスト・システムに関連するエンドポイントを指す。単一ルート・エンドポイントでは、エンドポイントは、単一ルート複合体に関連する複数のシステム・イメージ(SI)によって共用することができるが、同じかまたは異なるルート・ノード上の複数のルート複合体間で共用することはできない。

0050

図6に図示されている通り、ルート・ノード600は、PCIeエンドポイント670〜690と通信する複数のシステム・イメージ610、612、入出力仮想化仲介630(前述したように使用されるもの)、PCIeルート複合体640、1つまたは複数のPCIeスイッチ650、およびその他のPCIeファブリック・エレメント、あるいはこれらの組み合わせを含む。ルート・ノード600は、単一ルートPCIe構成管理(SR−PCIM)ユニット620をさらに含む。SR−PCIMユニット620は、ルート複合体640、1つまたは複数のPCIeスイッチ650などを含むPCIeファブリック、ならびにエンドポイント670〜690を管理する役割を担う。SR−PCIM620の管理責任としては、どの機能をどのSI610、612に割り当てるべきかを判断することと、エンドポイント670〜690の構成空間をセットアップすることを含む。SR−PCIM620は、SIの機能およびシステム管理者などのユーザからの入力に基づいて、あるいはどのリソースをどのSI610、612に割り当てるべきかについてはロード・バランシング・ソフトウェアに基づいて、様々なエンドポイント670〜690の機能を構成することができる。SIの機能としては、エンドポイント670〜690に割り振るためにどの程度の大きさのアドレス空間が使用可能であるか、エンドポイント670〜690に割り当てるためにどの程度の数の割り込みが使用可能であるかなどを含む様々な要因を含むことができる。

0051

PCIeエンドポイント670〜690のそれぞれは、1つまたは複数の物理機能(PF)をサポートすることができる。1つまたは複数のPFは、相互に独立している場合もあれば、何らかの方式で相互に従属している場合もある。たとえば、適切に動作するために、あるPFが他のPFの動作または他のPFによって生成された結果を必要とするというようなベンダ定義の機能依存関係に基づいて、PFは他のPFに従属している可能性がある。描かれている例では、PCIeエンドポイント670は単一PFをサポートし、PCIeエンドポイント680は異なるタイプ1〜Mの複数の独立PF、すなわち、PF0〜PFNをサポートする。タイプはPFまたはVFの機能に関し、たとえば、イーサネット(登録商標)機能およびファイバチャネル機能は2つの異なるタイプの機能である。エンドポイント690は異なるタイプの複数のPFをサポートし、全PFのうちの2つまたはそれ以上のPFは従属している。描かれている例では、PF0はPF1に従属しているか、またはその逆になる。

0052

図6に図示されている例では、エンドポイント670〜690は、入出力仮想化仲介(IOVI)630によって使用可能なものになっている仮想化メカニズムによりシステム・イメージ(SI)610および612によって共用される。前述の通り、このような配置構成では、IOVI630は、SI610、612とPCIeエンドポイント670〜690との間のすべてのPCIeトランザクションに関わる。仮想化を処理する義務は完全にIOVI630にあるので、個々のPCIeエンドポイント670〜690は本質的に仮想化をサポートする必要はない。その結果として、このような配置構成で仮想化のための既知のメカニズムを使用することができるが、入出力動作を実行可能なレートは、IOVI630があらゆる入出力動作に関わらない場合に入出力レート用の潜在能力に比べて比較的遅くなる。

0053

図7は、固有の入出力仮想化に使用可能になっている単一ルート・エンドポイントの物理機能および仮想機能を例示する模範的な図である。図7に図示されている配置構成は図6の配置構成と同様であるが、PCIeエンドポイント770〜790が入出力仮想化(IOV)を固有に、すなわち、エンドポイントそのものの内部でサポートすることによるいくつかの重要な相違点がある。その結果として、IOV対応PCIeエンドポイント770〜790に関しては、当然のことながら構成動作を除いて、図6の入出力仮想化仲介630を事実上省略することができる。しかし、この配置構成で非IOV対応PCIeエンドポイント(図示せず)、たとえば、レガシー・エンドポイントも使用する場合、システム・イメージ710および712間でこのような非IOV対応PCIeエンドポイントの共用を処理するために、図7に図示されているエレメントに併せて入出力仮想化仲介を使用することができる。

0054

図7に図示されている通り、IOV対応PCIeエンドポイント770〜790は、1つまたは複数の独立または従属物理機能(PF)をサポートすることができ、次にその物理機能は1つまたは複数の独立または従属仮想機能(VF)に関連付けることができる。これに関連して、PFは、1組のVFを管理するためにSR−PCIM720によって使用され、物理エラーおよびイベントなどのエンドポイント機能を管理するためにも使用される。PFに関連する構成空間は、PFに関連する最大数のVF、PFおよびVFと他のPFおよびVFとの組み合わせなどを含む、VFの機能を定義する。

0055

VFは、IOV対応PCIeエンドポイント770〜790上のリソース、たとえば、メモリ空間、キュー、割り込みなどにアクセスするためにSIによって使用される。したがって、固有のPFを共用する各SI710、712ごとに異なるVFが生成される。VFは、対応するPFの構成空間内のSR−PCIM720によるVFの数の設定に基づいて、エンドポイント770〜790によって生成される。このようにして、PFは、複数のSI710、712によって共用できるように仮想化される。

0056

図7に図示されている通り、VFおよびPFは他のVFおよびPFに従属している可能性がある。典型的には、あるPFが従属PFである場合、そのPFに関連するすべてのVFも従属することになる。したがって、たとえば、PF0のVFはPF1の対応するVFに従属している可能性がある。

0057

図7に図示されている配置構成では、SI710、712は、入出力仮想化仲介による関わりの必要なしに、PCIルート複合体730およびPCIeスイッチ740を介して、IOV対応PCIeエンドポイント770〜790と直接通信することができ、その逆も同様である。このような直接通信は、エンドポイント770〜790内ならびにエンドポイント770〜790のPFおよびVFを構成するSR−PCIM720内に設けられたIOVサポートによって可能なものになる。

0058

SIとエンドポイントとの間の直接通信は、複数のSI710、712と共用されたIOV対応PCIeエンドポイント770〜790との間で入出力動作を実行できる速度を大幅に増加する。しかし、このようなパフォーマンス強化を可能なものにするために、PCIeエンドポイント770〜790は、仮想機能(VF)を生成し管理するためにSR−PCIM720内のメカニズムならびにエンドポイント770〜790の物理機能(PF)を提供することにより、入出力仮想化をサポートしなければならない。

0059

PCIe階層の上記の例示は単一ルート階層に制限されている。換言すれば、PCIeエンドポイントは、単一PCIルート複合体730に関連する単一ルート・ノード700上のSI710、712のみによって共用される。上述のメカニズムは、PCIeエンドポイントを共用する複数ルート複合体のためのサポートを提供しない。したがって、複数ルート・ノードにPCIeエンドポイントのリソースへの共用アクセスを提供することはできない。これにより、各ルート・ノードごとに個別のエンドポイント・セットが必要になるので、このような配置構成を使用するシステムのスケーラビリティが制限される。

0060

本明細書の例示的な諸実施形態は、複数のPCIルート複合体が同じセットのIOV対応PCIeエンドポイントへのアクセスを共用できる、マルチルート入出力仮想化を利用する。その結果として、これらのPCIルート複合体のそれぞれに関連するシステム・イメージはそれぞれ、同じセットのIOV対応PCIeエンドポイントへのアクセスを共用することができるが、仮想化の保護は各ルート・ノード上の各SIごとに所定の位置にある。したがって、同じ既存のセットのIOV対応PCIeエンドポイントを共用できるルート・ノードおよび対応するPCIルート複合体の追加を可能にするためのメカニズムを提供することにより、スケーラビリティが最大になる。

0061

図8は、例示的な一実施形態によるマルチルート仮想化入出力トポロジを例示する模範的な図である。図8に図示されている通り、複数のルート・ノード810および820が設けられ、それぞれのルート・ノードは、単一ルートPCI構成マネージャ(SR−PCIM)812、822と、1つまたは複数のシステム・イメージ(SI)814、816、824、826と、PCIルート複合体818、828とを有する。これらのルート・ノード810および820は、たとえば、ブレード・サーバ内のブレードにすることができ、PCIeスイッチ・ファブリックの1つまたは複数のマルチルート認識(MRA)PCIeスイッチ840に結合されており、そのPCIeスイッチ・ファブリックは、1つまたは複数のこのようなMRA PCIeスイッチ840およびその他のPCIeファブリック・エレメントあるいはその両方を含むことができる。MRAスイッチ840は追加のルート・ノード用の接続を有し、これらの異なるルート・ノードのアドレス空間を個別かつ独特なものとして保持するために必要なメカニズムを収容しているという点で、MRAスイッチ840は図7の非MRAスイッチ740とは異なるタイプのものである。

0062

これらのルート・ノード810および820に加えて、マルチルートPCI構成マネージャ(MR−PCIM)832および対応するPCIルート複合体834を含む第3のルート・ノード830が設けられている。MR−PCIM832は、以下により詳細に論じるように、図8に図示されているマルチルート(MR)トポロジ内の仮想階層を発見し構成する役割を担う。したがって、MR−PCIM832は、複数ルート・ノードの複数ルート複合体に関してエンドポイントの物理機能および仮想機能を構成する。SR−PCIM812および822は、それぞれに関連する単一ルート複合体の物理機能および仮想機能を構成する。換言すれば、以下により詳細に記載するように、MR−PCIMはMRトポロジを全体として認識するが、SR−PCIMはMRトポロジ内のそれ専用の仮想階層のみを認識する。

0063

図8に図示されている通り、IOV対応PCIeエンドポイント850および860は、1つまたは複数の仮想エンドポイント(VE)852、854、862、および864をサポートする。VEは、ルート複合体に割り当てられた1組の物理機能および仮想機能である。したがって、たとえば、ルート・ノード810のPCIルート複合体818のためにIOV対応PCIeエンドポイント850および860上に個別のVE852および862が設けられている。同様に、ルート・ノード820のPCIルート複合体828のためにIOV対応PCIeエンドポイント850および860上に個別のVE854および864が設けられている。

0064

各VEは、仮想階層(VH)のルートとして単一ルート複合体を有し、階層内終端ノードとしてVEを有する仮想階層(VH)に割り当てられている。VHは、ルート複合体またはSR−PCIMに割り当てられた完全に機能しうるPCIe階層である。VE内のすべての物理機能(PF)および仮想機能(VF)が同じVHに割り当てられることに留意されたい。

0065

各IOV対応PCIeエンドポイント850および860は、基本機能(BF:base function)859および869をサポートする。BF859、869は、対応するエンドポイント850、860のVEを管理するためにMR−PCIM832によって使用される物理機能である。たとえば、BF859、869は、対応するエンドポイント850、860のVEに機能を割り当てる役割を担う。MR−PCIM832は、エンドポイント850、860内のPFのそれぞれに対するVH番号の割り当てを可能にするBFの構成空間内のフィールドを使用することによって、VEに機能を割り当てる。例示的な諸実施形態では、エンドポイントあたり1つのBFのみ存在することができるが、本発明はこのような構成に制限されない。

0066

図8に図示されている通り、各VE852、854、862、および864は、それ専用の1組の物理機能および仮想機能をサポートすることができる。前述の通り、このような機能セットは、独立物理機能、従属物理機能、およびそれに関連する独立/従属仮想機能を含むことができる。図8に図示されている通り、VE852は、それに関連する仮想機能(VF)とともに単一物理機能(PF0)をサポートする。同様にVE854は、それに関連する仮想機能(VF)とともに単一物理機能(PF0)をサポートする。VE862は、複数の独立物理機能(PF0〜PFN)およびそれに関連する仮想機能(VF)をサポートする。しかし、VE864は、複数の従属物理機能(PF0〜PFN)をサポートする。

0067

VE852、854、862、または864は、SIがアクセスできるVHにVEが割り当てられている場合およびその逆の場合にのみ、ルート・ノード810および820のSI814、816、824、および826と直接通信することができる。エンドポイント850および860そのものは、上記で前述したものなどの単一ルート入出力仮想化ならびにこの例示的な諸実施形態に関して記載したマルチルート入出力仮想化をサポートしなければならない。この要件は、そのトポロジが複数ルート複合体をサポートすることに基づくものであるが、それぞれの個別ルート・ノードはそれに関連する単一ルート・ベースの仮想階層のみを認識する。

0068

図9は、例示的な一実施形態によるルート・ノードのルート複合体の観点から見たマルチルート仮想化入出力トポロジの仮想階層表示を例示する模範的な図である。図9に図示されている通り、マルチルート(MR)トポロジは図8に図示されている通りにすることができるが、それぞれの個別ルート・ノードの各ルート複合体は、MRトポロジのうち、それが占める部分のみを表示する。したがって、たとえば、ルート・ノード810に関連するPCIルート複合体818は、そのホスト・プロセッサ・セット、それ専用のシステム・イメージ(SI)814、816、MRAスイッチ840、およびそれ専用の仮想エンドポイント(VE)852、862を認識する。この仮想階層内には完全なPCIe機能が存在するが、PCIルート複合体818は、それ専用の仮想階層の一部ではないVE、ルート複合体、システム・イメージなどを認識しない。

0069

この配置構成のために、MRトポロジ内のルート・ノードのルート複合体間の通信に制限が課せられる。すなわち、PCIe機能はルート複合体に関連する仮想階層に制限されるので、ルート複合体は相互に通信することができない。その上、様々なルート複合体に関連するシステム・イメージは他のルート複合体のシステム・イメージと通信することができない。このような制限に対処するために、本明細書の例示的な諸実施形態は、仮想階層間、具体的には、種々のルート・ノードのルート複合体間の通信に関するサポートを提供するための様々なメカニズムを提供する。

0070

例示的な諸実施形態のホスト・システムがそのルート複合体を介して複数のエンドポイントと通信するために、ホスト・システムは、ホスト・システムが関連付けられる様々なエンドポイントおよびルート複合体によって共用される共用メモリを使用する。ホスト・システムとともにエンドポイントの適切な動作を保証するために、ホスト・システムに関連する各エンドポイントに対し、共用メモリのうち、それにより様々な通信を実行することができる専用の部分が提供されるように、この共用メモリを初期設定しなければならない。例示的な諸実施形態は、PCIeファブリックが発見され、PCIeファブリックのエンドポイントがホスト・システムのルート複合体に実質的に結合されるようなホスト・システムの共用メモリを初期設定するためのメカニズムを使用する。その場合、各エンドポイントおよびルート複合体には、それが実質的に結合される各ホスト・システムの共用メモリ・アドレス空間のうち、専用の部分が与えられる。ホスト・システムの共用メモリのこれらの部分により、1つのホスト・システムのルート複合体に関連するエンドポイントは、他のホスト・システムの1つまたは複数の他のルート複合体と通信することができる。

0071

図10は、例示的な一実施形態による共用メモリPCIeベース・システムを例示する模範的な図である。図10に図示されている通り、システム1000は、第1のルート複合体(RC1)1012と第1のエンドポイント(EP1)1014とを含むホスト・システム1010を有し、同じくホスト・システム1010の一部として設けることもできる第1の複数ルート認識(MRA)スイッチ1016に関連付けられている。システム1000は、第2のルート複合体(RC2)1022と第2のエンドポイント(EP2)1024とを含む第2のホスト・システム1020を有し、同じくホスト・システム1020の一部として設けることもできる第2の複数ルート認識(MRA)スイッチ1026に関連付けられている。これらのホスト・システム1010および1020のそれぞれは、たとえば、同じマルチルート・ブレード・クラスタ・システム1000内の個別ブレードを表すことができる。代わって、ホスト・システム1010および1020は、完全に別々のコンピューティング・デバイス上に設けることもできる。各ホスト・システム1010および1020はそれ専用の仮想階層(VH)内にある。ホスト・システム1010および1020は、相互に接続され、PCIeファブリック1030の1つまたは複数のMRAスイッチ1016、1026、および1032との通信リンクを介して、他の共用エンドポイントEP3〜EP6 1042〜1044および1052〜1054に接続される。ホスト・システム1010および1020ならびにエンドポイント1042〜1044および1052〜1054に関連する通信リンクは、1つまたは複数の仮想プレーン(VP)に関連付けることができる。

0072

どのホスト・システム1010および1020が所与のPCIeトランザクションに関連付けられるかを区別するために、PCIeファブリックではいかなる仮想階層(VH)IDも使用されていない。その代わりに、リンク・ローカル仮想プレーン(VP)IDが使用される。VP IDはリンク・ローカルであるので、RC1のVHは、たとえば、1032と1016との間のリンク上でVP=4を有し、1032と1042との間のリンク上でVP=4を有することができる。換言すれば、VHは、1組のPCIeコンポーネントと、これらのコンポーネントを接続するリンクから構成され、これらのリンクのそれぞれは、所与のトランザクションがどのVHを参照しているかを指定するために使用されるリンク・ローカルVP IDを有する。

0073

描かれている例では、目標は、ルート複合体1012、したがって、ルート複合体1012に関連する1つまたは複数のシステム・イメージに関連して実行されるアプリケーションが他のルート複合体に関連するエンドポイント、たとえば、ルート複合体RC2 1022に関連するエンドポイントEP2 1024と通信することを許可することである。したがって、たとえば、EP2 1024は、ルート複合体RC2 1012上で実行されるシステム・イメージによりエンドポイントとして使用することができる。このようにして、ルート複合体と共存しているエンドポイントは、様々な仮想プレーンまたはホスト・システムあるいはその両方のシステム・イメージ全域で共用することができる。その結果として、ノード間で通信するときにInfiniBandまたはイーサネット(登録商標)・スイッチなどの外部ネットワーキング・アダプタおよびスイッチを通過する必要性を省略することにより、高性能ノード間通信、すなわち、ホスト・システム間の通信およびロード・バランシングをシステム・コストの削減と同様に容易にすることができる。

0074

ホスト・システム全域でシステム・イメージによってエンドポイントを共用できるようにするために、ホスト・システム1010または1020の一方あるいは個別のホスト・システム1060に設けられたマルチルートPCI構成マネージャ(MR−PCIM)1062は、ルート複合体およびエンドポイントに関する基底および限界アパーチャを確立するようにホスト・システムのメモリ空間1070および1080を初期設定する。MR−PCIM1062は、MRAスイッチ1064ならびにPCIeファブリック1030内の1つまたは複数のMRAスイッチ1032を介してPCIeファブリック1030にアクセスする。

0075

MR−PCIM1062は、PCIeファブリック1030に関連するルート複合体およびエンドポイントを識別するために、当技術分野で一般に知られている方法で様々な相互接続スイッチによりPCIeファブリック1030のリンクをトラバースする。しかし、例示的な諸実施形態によって実行されるトラバースでは、ルート複合体(RC)が発見ファブリック・トラバース動作(discovery fabric traversal operation)を実行することを除いて、発見ファブリック・トラバース中にすべてのルート複合体(RC)がエンドポイントとして扱われる。

0076

MR−PCIM1062がPCIeファブリックをトラバースするにつれて、MR−PCIM1062はルート複合体とエンドポイントとの間でいくつかのチェックを実行し、所与のルート複合体が所与のエンドポイントに関連付けられているかどうかを判断する。MR−PCIM1062は、結果として得られる情報から、PCIeファブリック1030で使用可能なエンドポイントをそれぞれのルート複合体に結合する1つまたは複数の仮想PCIツリー・データ構造を生成する。同じルート複合体に関連するエンドポイントは、仮想PCIツリー・データ構造内で相互に関連付けられる。

0077

MR−PCIM1062がファブリックを発見し構成した後、それぞれのRCにより、それに関連するSR−PCIM1018および1028がVHを発見し構成できるようになる。各SR−PCIM1018、1028は、所与のエンドポイントごとに、それが属すPCIeメモリ・アドレス空間(複数も可)、たとえば、ホスト・システム1のメモリ1070およびホスト・システム2のメモリ1080に関連するPCIeメモリ・アドレス空間(複数も可)内の基底アドレスおよび限界を割り当てる。SR−PCIM1018、1028は、この基底アドレスおよび限界をEPの基底アドレス・レジスタ(BAR)に書き込む。以下により詳細に記載するように、その後、ホスト・システム1010および1020の全域で様々なルート複合体とエンドポイントとの通信を容易にするために、PCIメモリ・アドレス空間(複数も可)のこれらの部分に作業要求および完了メッセージを書き込むことができる。

0078

前述の通り、例示的な諸実施形態では、MR−PCIM1062は、PCIeファブリック1030をトラバースするときに、ルート複合体とエンドポイントとの間でいくつかのチェックを実行する。たとえば、MR−PCIM1062は、EPの各機能、物理機能、および仮想機能のPCIe構成空間にアクセスし、PCI規格によって定義されている通り、そのPCIe構成空間はEP内に位置する。また、MR−PCIMは、各エンドポイントに関する重要プロダクト・データ(VPD:Vital Product Data)にアクセスし、たとえば、MR−PCIM1062に結合された不揮発性記憶域(図示せず)内などに、その後の比較のためにVPD情報を保管する。

0079

VPDは、システムのハードウェア、ソフトウェア、およびマイクロコード・エレメントなどの項目を明確に定義する情報である。VPDは、管理、資産管理、ならびにPCIデバイスの明確な識別を必要とするいなかるものにも有用な、ベンダ名、部品番号、シリアル番号、その他の詳細な情報を含む、様々な現場交換可能ユニット(FRU:field replaceable unit)に関する情報をシステムに提供する。VPD情報は、典型的には、エンドポイント1014、1024などのPCIデバイス内の記憶装置、たとえば、シリアルEEPROM常駐する。VPDに関する追加情報は、www.pcisig.comで入手可能なPCIローカル・バス規格、改訂版3.0から入手することができる。

0080

MR−PCIM1062は、エンドポイント1014、1024、1042、1044、1052、および1054のそれぞれについてVPD情報を検索し保管した後、どのEPおよびRCが同じハードウェア装置、たとえば、ブレード上に存在するかを識別する。たとえば、MR−PCIM1062は、それがRCおよびEPを保持するハードウェア装置に関連付けられていることを示す共存フィールドを収容している、MRAスイッチ1016、1026、1032のVPD情報にアクセスする。MRAスイッチ1016、1026、1032は、どのEPおよびRCが同じハードウェア装置上に存在するかを判断するために使用できる、RCに割り当てられたVHを保管する。

0081

EPが同じホスト上のRCと共存していると判断した後、MR−PCIM1062は、図11および図12に例示されているような1つまたは複数の仮想PCIツリー・データ構造を作成する。図11および図12に図示されている通り、仮想PCIツリー・データ構造は、PCIeファブリック上で使用可能なエンドポイントを各ルート複合体に結合する。

0082

図11に図示されている仮想PCIツリー・データ構造では、ユーザによってMR−PCIM1062に対して示された割り当てを介して、エンドポイントEP2 1024、EP4 1044、およびEP5 1052がルート複合体RC1 1012に関連付けられているものと想定されている。上述のVPDマッチングは、EPがRCのホスト上に物理的に存在していることをRCが判断できるようにするためにのみ実行される。これは、RCのアドレス空間における標準的なPCIメモリ・マップ・アドレス指定によりEPがRCにとってアクセス可能であることをRCに知らせるものである。これは、物理的関連付けである。仮想PCIツリー・データ構造では、ユーザが論理的関連付けを作成するためにMR−PCIM1062を必要としていることを示すことにより、このような論理的関連付けが指定される。

0083

同様に、図12では、論理的関連付けを指定するユーザ入力ならびにそれぞれのVPD情報およびMR−PCIM1062によって行われた比較を介して、エンドポイントEP1 1014、EP3 1042、およびEP6 1054がルート複合体RC1 1012に関連付けられているものと想定されている。したがって、図11に図示され描かれている例では、エンドポイントEP2 1024は、スイッチ2 1026およびスイッチ1 1016を介して、ルート複合体RC1 1012に関連付けられているかまたは結合されている。エンドポイントEP4 1044およびEP5 1052は、スイッチ3 1032およびスイッチ1 1016を介して、ルート複合体RC1 1012に関連付けられている。図12では、エンドポイントEP1 1014は、スイッチ1 1016およびスイッチ2 1026を介して、ルート複合体RC2 1022に関連付けられているかまたは結合されている。エンドポイントEP3 1042およびEP6 1054は、スイッチ3 1032を介して、ルート複合体RC2 1022に関連付けられている。

0084

これらの仮想PCIツリー・データ構造に基づいて、MR−PCIM1062は、それが属すPCIeメモリ・アドレス空間(複数も可)内の基底アドレスおよび限界を各エンドポイントに割り当てる。基底アドレスは、エンドポイントの基底アドレス・レジスタ(BAR)に保管することができる。たとえば、EP1 1014は、2つのPCIeメモリ・アドレス空間1070および1080によりアクセス可能である。ホスト・システム1 1010では、EP1 1014は、ホスト・システムのメモリ1070のアドレス空間によりホスト・システムのプロセッサ(図示せず)からアクセス可能である。ホスト・システム2 1020では、EP1 1014は、PCIバス・メモリ・アドレスによりメモリ・マップ入出力を介してアクセス可能なホスト・システム2のメモリ1080のアドレス空間において、EP1の基底アドレスおよび限界によって定義されたPCIeアパーチャを有する。ホスト・システム1 1010のプロセッサは、たとえば、ホスト・システム2 1020のプロセッサによって認識されたPCIeメモリ・アドレスをホスト・システム1のメモリ・アドレスにマッピングするために、ハイパーバイザ、ルート複合体1012などの仮想化仲介内に設けることができるものなどのメモリ・アドレス変換および保護テーブル(図示せず)を使用することができる。

0085

同様に、エンドポイントEP2 1024は、ホスト・システム・メモリ1070および1080のための2つのPCIeメモリ・アドレス空間によりアクセス可能である。ホスト・システム2 1020では、EP2 1024は、そのメモリ1080のためのホスト・システム2の実メモリ・アドレスによりホスト・システム2のプロセッサからアクセス可能である。ホスト・システム1 1010では、EP2 1024は、PCIバス・メモリ・アドレスによりメモリ・マップ入出力としてアクセス可能なホスト・システム1のメモリ1070において、EP2 1024の基底アドレスおよび限界によって定義されたPCIeアパーチャを有する。ホスト・システム2 1020は、ホスト・システム1 1010によって認識されたPCIeメモリ・アドレスをホスト・システム2の実メモリ・アドレスにマッピングするために、メモリ・アドレス変換および保護テーブル(図示せず)を使用することができる。

0086

ルート複合体RC1 1012およびRC2 1022のために、ホスト・システム・メモリ1070および1080の同様の部分を初期設定することができる。たとえば、ホスト・システム1 1010では、RC1 1012は、ホスト・システム1のメモリ1070のためのホスト・システム1の実メモリ・アドレスによりホスト・システム1のプロセッサからアクセス可能である。RC1 1012は、ホスト・システム1のPCIバス・メモリ・アドレスにより直接メモリ・アクセス(DMA)入出力を介してアクセス可能なホスト・システム2のメモリ空間においてPCIeアパーチャを有する。ホスト・システム1 1010は、ホスト・システム2 1020によって認識されたPCIeメモリ・アドレスをホスト・システム1の実メモリ・アドレスにマッピングするために、メモリ・アドレス変換および保護テーブル(図示せず)を使用することができる。

0087

同様に、ホスト・システム2 1020では、RC2 1022は、メモリ1080のためのホスト・システム2の実メモリ・アドレスによりホスト・システム2のプロセッサからアクセス可能である。RC2 1022は、ホスト・システム2のPCIバス・メモリ・アドレスによりDMA入出力としてアクセス可能なホスト・システム1のメモリ1070においてPCIeアパーチャを有する。ホスト・システム2 1020は、ホスト・システム1 1010によって認識されたPCIeメモリ・アドレスをホスト・システム2の実メモリ・アドレスにマッピングするために、メモリ・アドレス変換および保護テーブル(図示せず)を使用することができる。

0088

したがって、例示的な諸実施形態のメカニズムは、1つのエンドポイントが複数のホスト・システム内の2つ以上のルート複合体によってアクセス可能なものになるように、ホスト・システム内のメモリ空間の初期設定を可能にするものである。その場合、様々なエンドポイントに割り当てられたメモリ空間の部分は、そのエンドポイントとの間で要求および完了メッセージを送信するためにルート複合体によって使用することができる。

0089

図13は、例示的な一実施形態によりエンドポイントの共用のためのホスト・システムのメモリ・アドレス空間を初期設定するための模範的な動作の概要を示す流れ図である。図13の流れ図の各ブロック、その後に記載されている流れ図、ならびに流れ図内のブロックの組み合わせがコンピュータ・プログラム命令によって実現できることは理解されるであろう。これらのコンピュータ・プログラム命令は、プロセッサまたはその他のプログラマブルデータ処理装置上で実行される命令によって流れ図の1つまたは複数のブロックに指定された機能を実現するための手段が作成されるようにマシン生産するために、プロセッサまたはその他のプログラマブル・データ処理装置に提供することができる。また、これらのコンピュータ・プログラム命令は、コンピュータ可読メモリまたは記憶媒体に保管された命令によって流れ図の1つまたは複数のブロックに指定された機能を実現する命令手段を含む製品(article of manufacture)が生産されるように特定の方法で機能するようプロセッサまたはその他のプログラマブル・データ処理装置に指示できるコンピュータ可読メモリまたは記憶媒体に保管することもできる。

0090

したがって、流れ図のブロックは、指定の機能を実行するための手段の組み合わせ、指定の機能を実行するためのステップの組み合わせ、ならびに指定の機能を実行するためのプログラム命令手段をサポートする。また、これらの流れ図の各ブロックならびに流れ図内のブロックの組み合わせが、指定の機能またはステップを実行する特殊目的ハードウェアベースのコンピュータ・システムによって、または特殊目的ハードウェアとコンピュータ命令の組み合わせによって実現できることは理解されるであろう。

0091

図13に図示されている通り、動作は、PCIeファブリックの相互接続スイッチを介してアクセス可能なすべてのリンクをトラバースすることにより、MR−PCIMがPCIeファブリックを発見することから始まる(ステップ1210)。PCIeファブリックの発見中に発見されたエンドポイントおよびルート複合体のそれぞれに関するVPD情報が保管される(ステップ1220)。

0092

MR−PCIMは、各エンドポイントに関するVPD情報を各ルート複合体に関するVPD情報と比較して、所与のエンドポイントが所与のルート複合体に関連付けられているかどうかを判断する(ステップ1230)。各比較ごとに、VPD情報がエンドポイントおよびルート複合体に関して一致する場合に、MR−PCIMは対応する共存フィールドを設定する(ステップ1240)。発見されたエンドポイントおよびルート複合体の情報ならびにそれぞれの比較に関する共存フィールドの設定に基づいて、MR−PCIMは1つまたは複数の仮想PCIツリー・データ構造を生成する(ステップ1250)。

0093

生成された仮想PCIツリー・データ構造(複数も可)に基づいて、MR−PCIMは、エンドポイントが属す各PCIeメモリ・アドレス空間内の基底アドレスおよび限界を各エンドポイントに割り当てる(ステップ1260)。生成された仮想PCIツリー・データ構造(複数も可)に基づいて、MR−PCIMは、ルート複合体が属す各PCIeメモリ・アドレス空間内の基底アドレスおよび限界を各ルート複合体に割り当てる(ステップ1270)。その後、動作は終了する。

0094

エンドポイントがホスト・システム全域のルート複合体によりアクセス可能なものになりうるようにホスト・システムのメモリ・アドレス空間を初期設定すると、その後、これらのメモリ・アドレス空間を使用して、これらのルート複合体に関連するシステム・イメージとそれに対応するアプリケーションがエンドポイントと通信できるようにすることができる。このような通信を容易にする方法の1つは、様々なホスト・システム内のこれらの初期設定済みメモリ・アドレス空間を使用するキューイング・システムを介するものである。このようなキューイング・システムは、作業キュー構造と完了キュー構造とを含むことができる。作業キュー構造と完了キュー構造はいずれも、いくつかのキュー・エレメント(そのキュー構造が作業キュー構造であるか完了キュー構造であるかに応じて、作業キュー・エレメント(WQE)または完了キュー・エレメント(CQE)のいずれか一方)を識別するためのドアベル構造と、キューの始まりに関する基底アドレスと、キューの終わりに関する限界アドレスと、キュー内で次に処理すべきWQEまたはCQEを示すオフセットとを含むことができる。作業キュー構造と完了キュー構造はいずれも、データの送信とデータの受信の両方に使用することができる。

0095

図14は、例示的な一実施形態により第1のホスト・システムから第2のホスト・システムに作業キュー・エレメント(WQE)を送信するためのプロセスを例示する模範的なブロック図である。この説明のために、システムは、MRAスイッチ1316および1326も含むことができるPCIeファブリック1330によって接続された複数の共用PCIルート複合体、たとえば、RC1 1312およびRC2 1322とともに、ホスト・システム、たとえば、第1のホスト・システム1310と第2のホスト・システム1320とを備えて確立されるものと想定されている。さらに、ルート複合体RC2 1322とともに第2のホスト・システム1320内に存在するエンドポイント、たとえば、EP2 1324は、PCIeファブリック1330全域で第1のホスト・システム1310のルート複合体RC1 1312とともに共用される予定であり、第2のホスト・システム1320の内部メモリ1380のアドレス空間および第1のホスト・システムのPCIバス・メモリ・アドレス空間にほぼマッピングされるものと想定されている。このシステム構成は、たとえば、図10図13に関して前述した初期設定メカニズムを使用することにより、達成することができる。

0096

図14に図示されている通り、エンドポイントEP1 1314は、2つのホスト・システム・メモリ1370および1380に関連するメモリ空間を介してアクセス可能である。第1のホスト・システム1310上では、エンドポイントEP1 1314は、第1のホスト・システムのメモリ1370に関する第1のホスト・システムの実メモリ・アドレスを介して第1のホスト・システムのプロセッサによってアクセス可能である。第2のホスト・システム1320上では、エンドポイントEP1 1314は、PCIバス・メモリ・アドレスを介してメモリ・マップ入出力としてアクセス可能な第2のホスト・システムのメモリ1380上のPCIeアパーチャ1382を有する。第1のホスト・システム1310は、メモリ・アドレス変換および保護テーブル(ATPT)1318を使用して、第2のホスト・システム1320によって認識されたPCIeメモリ・アドレスを第1のホスト・システムのメモリ空間1370に関する実メモリ・アドレスにマッピングすることができる。

0097

同様に、エンドポイントEP2 1324は、2つのホスト・システム・メモリ空間1370および1380を介してアクセス可能である。第2のホスト・システム1320上では、エンドポイントEP2 1324は、第2のホスト・システムの実メモリ・アドレスおよびメモリ・アドレス空間1380を介して第2のホスト・システムのプロセッサによってアクセス可能である。第1のホスト・システム1310上では、エンドポイントEP2 1324は、PCIバス・メモリ・アドレスを介してメモリ・マップ入出力としてアクセス可能な第1のホスト・システムのメモリ1370上のPCIeアパーチャ1372を有する。第2のホスト・システム1320は、メモリ・アドレス変換および保護テーブル(ATPT)1328を使用して、第1のホスト・システム1310によって認識されたPCIeメモリ・アドレスを第2のホスト・システムのメモリ空間1380のメモリ・アドレスにマッピングすることができる。

0098

作業キュー構造1374は、いくつかのWQEを渡すために使用されるドアベル構造1375と、キューの始まりに関する基底アドレスと、キューの終わりに関する限界アドレスと、作業キュー内で次に処理すべきWQEを示すオフセットとを含むことができる。同様に、完了キュー構造1376は、いくつかのCQEを渡すために使用されるドアベル構造1377と、キューの始まりに関する基底アドレスと、キューの終わりに関する限界アドレスと、完了キュー内で次に処理すべきCQEを示すオフセットとを含むことができる。

0099

第1のホスト・システム1310から第2のホスト・システム1320にWQEを送信するために、第1のホスト・システム1310は、1つまたは複数のWQEをその送信作業キュー1374に挿入することによってプロセスを開始する。各WQEはデータ・セグメントリストを収容しており、各データ・セグメントは、いずれも第2のホスト・システムのPCIeメモリ・バス・アドレス空間内にあって、同じくアドレス変換および保護テーブル(ATPT)を介して第1のホスト・システムのメモリ空間1370内の実メモリ・アドレスにマッピングされる、基底アドレスと限界アドレスとを含む。

0100

次に、第1のホスト・システム1310は、送信中のいくつかのWQEをドアベル構造1375に関するエンドポイントEP2のPCIeアドレスに書き込む。このドアベル構造に関するアドレスは、ATPTを介して第1のホスト・システムのPCIeメモリ・バス・アドレス空間にマッピングされ、第2のホスト・システムのメモリ空間1380内の実メモリ・アドレスにもマッピングされる。ドアベル書き込み動作が完了すると、第2のホスト・システム1320のRCは、ポーリングするか、または割り込みを取得してからポーリングして、第1のホスト・システムの実メモリ・アドレス空間1380を介してドアベル構造1375を検索する。すなわち、第2のホスト・システム1320のRCは、ドアベル構造1375に関するアドレスを定期的にポーリングして、新しいWQEを処理すべきかどうかを判断するように構成することができる。代わって、第1のホスト・システム1310によるドアベル構造1375の設定により、第2のホスト・システム1320への割り込みを生成して、処理のために使用可能な新しいWQEを第2のホスト・システム1320のRCに通知することができる。次に、第2のホスト・システム1320のRCは、新しいWQEの情報についてドアベル構造1375をポーリングし、それに応じて新しいWQEを処理することができる。

0101

次に、エンドポイントEP2 1324は、ルート複合体RC1 1312に対するPCIeDMA動作を実行して、WQEを検索する。各DMA動作は、第1のホスト・システムのPCIeメモリ・バス・アドレス空間を使用し、その実メモり・アドレス空間を介して第2のホスト・システム1320上でアクセス可能な第2のホスト・システムのメモリ1380内にDMA動作の結果を入れる。したがって、ホスト・システム1310および1320の初期設定済み共用メモリを使用すると、異なるホスト・システム1310および1320内のルート複合体とエンドポイントとの間の作業キュー・エレメントの通信が容易になる。

0102

図15は、例示的な一実施形態により第2のホスト・システム1320から第1のホスト・システム1310に完了キュー・エレメント(CQE)を送信するためのプロセスを例示する模範的なブロック図である。図15に図示されている通り、1つのWQEまたはWQEグループに関連する作業が完了すると、エンドポイントEP2 1324は、ルート複合体RC1 1312に対する1つまたは複数のPCIeDMA動作を実行して、1つまたは複数のCQEをルート複合体RC1 1312に送信する。RC1 1312がポーリングするかまたはCQEが使用可能であることを示す割り込みを待つことができると言う意味で、ドアベルを使用することができる。

0103

各DMA動作は、第1のホスト・システムのPCIeメモリ・バス・アドレス空間を使用し、その実メモり・アドレス空間を介して第1のホスト・システム1310上でアクセス可能な第1のホスト・システムのメモリ1370内に結果を入れる。その結果は、好ましくは、メモリ1370のDMAアドレス可能部分に保管され、そのDMAアドレス可能部分は、使用される特定のOS次第でメモり1370内の異なる位置にある。

0104

図16は、例示的な一実施形態により第1のホスト・システムのルート複合体と第2のホスト・システムに関連するエンドポイントとの間でWQEを伝送するための模範的な動作の概要を示す模範的な流れ図である。図16に図示されている通り、動作は、第1のホスト・システムが1つまたは複数のWQEをその送信作業キューに挿入することから始まる(ステップ1510)。次に、第1のホスト・システムは、送信中のいくつかのWQEをドアベル構造に関するターゲット・エンドポイントのPCIeアドレスに書き込む(ステップ1520)。ドアベル書き込み動作が完了すると、第2のホスト・システムは、ポーリングするか、または割り込みを取得してからポーリングして、第1のホスト・システムの実メモリ・アドレス空間を介してドアベル構造を検索する(1530)。

0105

次に、ターゲット・エンドポイントは、第1のホスト・システムのルート複合体に対するPCIeDMA動作を実行して、WQEを検索する(ステップ1540)。次に、ターゲット・エンドポイントは、第2のホスト・システムのメモリ内にDMA動作の結果を入れる(ステップ1550)。その後、動作は終了する。

0106

図17は、例示的な一実施形態により第2のホスト・システムのエンドポイントから第1のホスト・システムのルート複合体にCQEを伝送するための模範的な動作の概要を示す模範的な流れ図である。動作は、エンドポイントがそのエンドポイントにサブミットされた1つまたは複数のWQEに関連する処理作業を完了することから始まる(ステップ1610)。次に、エンドポイントは、1つまたは複数のWQEが受信されたホスト・システムに関連するルート複合体に対する1つまたは複数のPCIeDMA動作を実行して、1つまたは複数のCQEをルート複合体に送信する(ステップ1620)。DMA動作の結果は、第1のホスト・システムのメモリ内に置かれる(ステップ1630)。その後、動作は終了する。

0107

したがって、例示的な諸実施形態の共用メモリを使用して、それにより異なるホスト・システム上のルート複合体とエンドポイントとの間で作業要求および完了メッセージを交換できるキューイング構造を提供することができる。したがって、ルート複合体は、そのルート複合体が設けられているホスト・システムとは異なるホスト・システム上のエンドポイントと通信することができ、その逆も同様である。

0108

本明細書の例示的な諸実施形態によれば、例示的な諸実施形態の共用メモリを使用して同じかまたは異なるホスト・システムのルート複合体とエンドポイントとの間で通信するために、トランザクション指向プロトコルを確立することができる。このトランザクション指向プロトコルは、以下に記載するように、データをプッシュまたはプルするために、様々なエレメント、たとえば、ルート複合体またはエンドポイントによって実行すべき一連のトランザクションを指定する。

0109

図14に戻ると、WQEがエンドポイントに提供され、CQEがルート複合体に返される方法に関する上記の説明は、プルプルプッシュ(pull-pull-push)プロトコルの一例である。すなわち、第2のホスト・システム1320のエンドポイントEP2 1324は、第1のホスト・システム1310によるドアベル構造1375の書き込みに応答して、PCIeDMA動作を使用して、第1のホスト・システムの共用メモリ1370からWQEをプルする。これらのWQEは、実行すべき動作に関する「コマンド」を提供する。WQEに保管されたセグメント情報に基づいて、第2のホスト・システム1320のエンドポイントEP2 1324は、第1のホスト・システムの共用メモリ1370内の作業キュー構造1374から対応するデータをプルする。WQEに対応する作業が完了すると、第2のホスト・システム1320のエンドポイントEP2 1324は、1つまたは複数のPCIe DMA動作を使用して、第1のホスト・システム1310のルート複合体RC1 1312にCQEをプッシュする。したがって、上述の図14の例では、プルプルプッシュ・トランザクション・プロトコルが使用される。

0110

異なるトランザクション・プロトコルを確立するために、その他のプル・トランザクションとプッシュ・トランザクションの組み合わせが可能である。図18は、同じかまたは異なるホスト・システムのルート複合体とエンドポイントとの間で通信を実行するために使用可能なトランザクションの組み合わせとして可能な様々なものを例示する模範的な表である。図18に図示されている通り、例示的な諸実施形態のメカニズムとともにプル・トランザクションとプッシュ・トランザクションの任意の組み合わせを使用して、例示的な諸実施形態の共用メモリを使用するためのトランザクション・プロトコルを確立することができる。

0111

ルート複合体とエンドポイントは、選択されたプロトコルを施行する役割を担う。たとえば、OSシステム・スタックおよびエンドポイントは、前述のような選択されたトランザクション・プロトコルの一部として、データをプルしプッシュするための動作を実行する。使用すべきプロトコルの選択は、エンドポイントによって使用される特定のPCIeファブリック、たとえば、InfiniBandまたはイーサネット(登録商標)・ファブリックに依存する。プロトコルの特殊性は、プログラミング上の選択、たとえば、ポーリングを使用するか、割り込み処理を使用するか、ポーリングと割り込み処理の組み合わせを使用するかに応じて決定することができる。

0112

例示的な諸実施形態のメカニズムをさらに使用して、上述の共用メモリを介して同じかまたは異なるホスト・システムのルート複合体とエンドポイントとの間のソケット・プロトコル・ベースの通信をサポートすることができる。このようなソケット・プロトコルは、常時接続(constant connection)が存在する予定であるときに使用することができる。ソケット・プロトコルを使用すべきか、または上述のプッシュプル・トランザクションなどのトランザクションベースのプロトコルを使用すべきかに関する判断は、所望の効率および信頼性に基づいて行うことができる。

0113

ソケット・プロトコルでは、ホスト・システム内の作業キューを使用して、着信ソケット初期設定要求を聴取することができる。すなわち、第2のホスト・システムとのソケット通信接続を確立することを希望する第1のホスト・システムは、その作業キュー内にソケット初期設定要求WQEを生成することができ、そのソケット初期設定要求WQEが処理のために使用可能であることを第2のホスト・システムに通知する。その後、第2のホスト・システムは、その要求を受諾または拒否することができる。第2のホスト・システムがその要求を受諾する場合、そのホスト・システムは、第1および第2のホスト・システム間でソケット・ベースの通信を実行する際に第1のホスト・システムによって使用するためのソケットのパラメータのうちの後半部分を返す。このような通信は、たとえば、ホスト・システム間のプル・トランザクションまたはプッシュ・トランザクションあるいはその両方を伴う可能性がある。

0114

図19は、例示的な一実施形態によりソケットを確立し、第1のホスト・システムと第2のホスト・システムとの間でソケット・ベースの通信を実行するためのプロセスを例示する模範的なブロック図である。例示的な諸実施形態のソケット・ベースの実現例では、ホスト・システム、たとえば、ホスト・システム1810上のEP2 1824などのエンドポイントは、受信バッファ1876と、バッファ・フル・フラグ(buffer full flag)1877と、ドアベル構造1878とを収容している。バッファ・フル・フラグ1877およびドアベル構造1878は、イベントが発生したことを示すように働くメモリ内のアドレスを含むことができる。送信側ホスト・システム、たとえば、ホスト・システム1810は、接続エンドポイント、たとえば、エンドポイントEP2 1824に対応する、送信側ホスト・システムのルート複合体RC1 1812によってアクセス可能な受信側ホスト・システム1820のメモリ1870内のPCIeアパーチャ1872を介してドアベル構造1878に書き込む。

0115

前述の通り、同じかまたは異なるホスト・システム上の複数のルート複合体全域のエンドポイントの共用を容易にするためのホスト・システムの共用メモリの初期設定中に、仮想PCIツリー・データ構造を生成するために、発見されたルート複合体およびエンドポイントのそれぞれについて重要プロダクト・データ(VPD)情報が読み取られる。このVPD情報は、特定のルート複合体またはエンドポイントがPCIeによりソケットをサポートするかどうかを示すフィールドを含むことができる。この情報を使用して、例示的な一実施形態によるソケット・ベースの通信のためにどのエンドポイントとのソケットを確立できるかを識別することができる。

0116

したがって、初期設定中に、第1のホスト・システム1810は、たとえば、エンドポイントEP2 1824に関するVPD内のベンダ固有フィールドにより、エンドポイントEP2 1824がPCIeによりソケットをサポートすると判断することができ、EP内のVPD情報は上記で前述したMR−PCIMならびにホスト・システムそのものによりアクセス可能である。同様に、第2のホスト・システム1820は、エンドポイントEP1 1814に関するVPD情報内のそのベンダ固有フィールドにより、エンドポイントEP1 1814がPCIeによりソケットをサポートすると判断することができる。

0117

各ホスト・システム1810および1820は、着信ソケット初期設定要求を聴取するために使用する作業キュー(WQ)1850および1860を有する。たとえば、第2のホスト・システム1820、すなわち、受信側ホスト・システムは、ブロックしてソケット初期設定要求がその作業キュー1860上に表面化するのを待つか、エンドポイントEP2 1824のドアベル構造1878をポーリングして、ソケット初期設定要求が到着したかどうかを判断する。ソケット初期設定要求は、そのソケットのうち第1のホスト・システム分の半分に使用するための作業キュー1850への基底、限界、および開始オフセットを収容している。

0118

第1のホスト・システム1810、すなわち、送信側ホスト・システムは、その作業キュー1850内にソケット初期設定要求を生成することができ、ソケット初期設定要求WQEが使用可能であることを示すドアベル構造1878をエンドポイントEP2 1824に書き込むことができる。ドアベル構造1878内のデータを検索すると、第2のホスト・システムのエンドポイントEP2 1824は、PCIeDMA動作を実行し、エンドポイントEP2 1824によってアクセス可能なルート複合体RC1のPCIeバス・メモリ・アドレスを使用して第1のホスト・システムの作業キュー1850からソケット初期設定要求を検索することができる。

0119

次に、第2のホスト・システム1820は、ソケット初期設定要求を解析し、アプリケーションまたはオペレーティング・システム固有の方法でソケット初期設定要求を受諾するか拒否するかを決定することができる。第2のホスト・システム1820がソケット初期設定要求を拒否する場合、第2のホスト・システム1820は、第1のホスト・システムのルート複合体RC1 1812に非接続応答PCIeDMAを送信し、所望であれば、第1のホスト・システムのルート複合体RC1 1812に割り込む

0120

第2のホスト・システム1820がソケット初期設定要求を受諾する場合、エンドポイントEP2 1824は、第1のホスト・システムのルート複合体RC1 1812に対するPCIeDMA動作を実行し、ソケットのパラメータの後半部分、すなわち、そのソケットのうち第2のホスト・システム分の半分に使用するための作業キュー1860への基底、限界、および開始オフセットを示す。

0121

ソケットが上述のように初期設定されると、プル・トランザクションまたはプッシュ・トランザクションという2通りの方法の一方で、確立されたソケットを使用して送信/受信動作を実行することができる。プル・トランザクションでは、第1のホスト・システム1810のルート複合体RC1 1812は、その作業キュー1850にWQEを書き込み、次にルート複合体RC1 1812のPCIeバス・メモリ・アドレス空間によりアクセス可能なエンドポイントEP2 1823に関連するドアベル構造1878に書き込むことにより、送信動作を実行する。ドアベル書き込み動作が完了すると、第2のホスト・システム1820は、ポーリングするか、または割り込みを取得してからポーリングして、第2のホスト・システムの実メモリ・アドレス空間を介してドアベル構造1878を検索する。次に、エンドポイントEP2 1824は、ルート複合体RC1 1812に対するPCIeDMA動作を実行して、送信動作に関連するWQEを検索する。このPCIe DMA動作は、第1のホスト・システムのPCIeメモリ・バス・アドレス空間を使用し、第2のホスト・システムの実メモり・アドレス空間を介してアクセス可能な第2のホスト・システム上のメモリ1880内に結果を入れる。次に、第2のホスト・システム1820は、WQEに指定され、送信動作に関連するデータ・セグメントを検索する。

0122

第2のホスト・システムがWQEで要求された作業を完了すると、エンドポイントEP2 1824は、ルート複合体RC1 1812に対するPCIeDMA動作を実行して、送信動作が完了したことを通知するCQEをプッシュする。このDMA動作は、第1のホスト・システムのPCIeメモリ・バス・アドレス空間を使用し、第1のホスト・システムの実メモり・アドレス空間を介してアクセス可能な第1のホスト・システム1810上のメモリ1870内に結果を入れる。

0123

プッシュ・トランザクションの場合、ルート複合体RC2 1822は、エンドポイントEP1 1814に関するドアベル構造1888に書き込み、それが使用可能な状態で有する受信WQEの数を示す。エンドポイントEP1 1814が送信すべきデータを有する場合、エンドポイントEP1 1814はチェックを行って、エンドポイントEP1 1814がルート複合体RC2 1822の作業キュー1860上で使用可能な任意の受信WQEを有するかどうかを判断する。使用可能な受信WQEがまったくない場合、ルート複合体RC1 1812はエンドポイントEP2のバッファ・フル・フラグ1887に書き込んで、第1のホスト・システム1810がソケット上で送信すべきデータを有し、第2のホスト・システム1820がそのソケットのために受信WQEを介していくつかのバッファを通知する必要があることを示す。

0124

使用可能な受信WQEがある場合、第2のエンドポイントEP2 1824は、ルート複合体RC1 1812に対するPCIeDMA動作を実行して、ルート複合体RC1の作業キュー1850上で次に使用可能なWQEを検索する。このDMA動作は、第1のホスト・システムのPCIeメモリ・バス・アドレス空間を使用し、第2のホスト・システムの実メモり・アドレス空間を介してアクセス可能な第2のホスト・システム1820上のメモリ1880内に結果を入れる。次に、第2のホスト・システム1820は、受信WQEで渡されたデータ・セグメントにそのデータを送信する。

0125

第2のホスト・システム1820が要求された作業を完了すると、エンドポイントEP2 1824は、ルート複合体RC1 1812に対するPCIeDMA動作を実行して、送信動作が完了したことを通知するCQEをプッシュする。このDMA動作は、第1のホスト・システムのPCIeメモリ・バス・アドレス空間を使用し、第1のホスト・システムの実メモり・アドレス空間を介してアクセス可能な第1のホスト・システム1810上のメモリ内に結果を入れる。

0126

図20は、例示的な一実施形態によりソケット・ベースの通信接続を使用してプル・トランザクションを実行するための模範的な動作の概要を示す流れ図である。動作は、第1のホスト・システムのルート複合体がその作業キューにWQEを書き込み(ステップ1910)、次にターゲット・エンドポイントに関連するドアベル構造に書き込むことから始まる(ステップ1920)。ドアベル書き込み動作が完了すると、第2のホスト・システムは、ポーリングするか、または割り込みを取得してからポーリングして、第2のホスト・システムの実メモリ・アドレス空間を介してドアベルを検索する(ステップ1930)。

0127

次に、ターゲット・エンドポイントは、第1のホスト・システムのルート複合体に対するPCIeDMA動作を実行して、送信動作に関連するWQEを検索する(ステップ1940)。ターゲット・エンドポイントは、第2のホスト・システム上のメモリ内にPCIe DMA動作の結果を入れる(ステップ1950)。次に、第2のホスト・システムは、WQEに指定され、送信動作に関連するデータ・セグメントを検索する(ステップ1960)。

0128

第2のホスト・システムがWQEで要求された作業を完了したことに応答して、ターゲット・エンドポイントは、第1のホスト・システムのルート複合体に対するPCIeDMA動作を実行して、送信動作が完了したことを通知するCQEをプッシュする(ステップ1980)。第1のホスト・システムのルート複合体は、第1のホスト・システムのメモリ内にPCIe DMA動作の結果を入れる(ステップ1990)。その後、動作は終了する。

0129

図21は、例示的な一実施形態によりソケット・ベースの通信接続を使用してプッシュ・トランザクションを実行するための模範的な動作の概要を示す流れ図である。第2のホスト・システムのルート複合体は、第1のホスト・システムのエンドポイントに関するドアベル構造に書き込み、そのルート複合体が使用可能な状態で有する受信WQEの数を示す(ステップ2010)。第1のホスト・システムのエンドポイントが送信すべきデータを有することに応答して(ステップ2020)、第1のホスト・システムのエンドポイントはチェックを行って、エンドポイントが第2のホスト・システムのルート複合体の作業キュー上で使用可能な任意の受信WQEを有するかどうかを判断する(ステップ2030)。使用可能な受信WQEがまったくない場合、第1のホスト・システムのルート複合体は第2のホスト・システムの第2のエンドポイントのバッファ・フル・フラグに書き込んで、第1のホスト・システムがソケット上で送信すべきデータを有し、第2のホスト・システムがそのソケットのために受信WQEを介していくつかのバッファを通知する必要があることを示す(ステップ2040)。次に、動作はステップ2030に戻る。

0130

使用可能な受信WQEがある場合、第2のエンドポイントは、第1のホスト・システムのルート複合体に対するPCIeDMA動作を実行して、第1のホスト・システムのルート複合体の作業キュー上で次に使用可能なWQEを検索する(ステップ2050)。第2のエンドポイントは、第2のホスト・システムのメモリ内にPCIe DMA動作の結果を入れる(ステップ2060)。次に、第2のホスト・システムは、受信WQEで渡されたデータ・セグメントにそのデータを送信する(ステップ2070)。

0131

第2のホスト・システムが要求された作業を完了すると、第2のエンドポイントは、第1のホスト・システムのルート複合体に対するPCIeDMA動作を実行して、送信動作が完了したことを通知するCQEをプッシュする(ステップ2080)。第2のエンドポイントは、第1のホスト・システム上のメモリ内にPCIe DMA動作の結果を入れる(ステップ2090)。その後、動作は終了する。

0132

上記で論じた通り、マルチルート・システムのエンドポイントは、1つまたは複数の関連仮想機能を有する1つまたは複数の物理機能をサポートすることができる。例示的な諸実施形態のメカニズムは、同じかまたは異なるホスト・システムのルート複合体とエンドポイントとの間の通信を可能にすることに加えて、エンドポイントの物理機能および仮想機能を管理するためのメカニズムも提供する。例示的な諸実施形態のメカニズムによって提供される機能の1つは、同じエンドポイント上の1つの物理機能から他の物理機能に単一ルート・ステートレス仮想機能およびそれに関連するアプリケーションを移行する能力を提供する。この移行機能は、システム管理の領域でワークロード・バランシング機能に関する需要の拡大を満足するために重要なものである。

0133

VFおよびそれに関連するアプリケーション(複数も可)(動作すべきVFに依存するアプリケーションである)を移行することにより、より効率的な環境で動作を続行するために種々のリソースをリクルートすることができる。たとえば、ワークロード・バランシングでは、例示的な諸実施形態のメカニズムを使用してイーサネット(登録商標)VFおよびそれに関連する従属アプリケーションを移動し、異なるSIまたは同等EPと完全に関連付けることができる異なるPF上で使用可能なより高速の(たとえば、あまり輻輳していない)接続を利用することができる。

0134

図22および図23は、例示的な一実施形態により同じエンドポイント、たとえば、PCIeアダプタ上の1つの物理機能から他の物理機能への仮想機能およびそれに関連するアプリケーションの単一ルート・ステートレス移行を例示する模範的な図である。図22に図示されている通り、システム・イメージ(SI)2105に関連するアプリケーション2110は、エレメント2110を2120と接続する点線によって表されている通り、仮想機能(VF)2120に関連付けられている。ソフトウェア仲介2115は、SR−PCIM2100からの情報に基づいて、システム管理者または同等の管理権限に対して移行シナリオを描くことができる。これは、システム管理インターフェース(描写せず)を介して移行のためのターゲットになりうるPCIeファブリック内で使用可能な同等のVFを示すことを含むことができるが、これに限定されない。

0135

SR−PCIM2100によって描くことができる特定の移行シナリオは、たとえば、特定のVFを移行可能であるかどうかを判断するためにSR−PCIMがアクセスするVF移行機能ビットに基づいて、決定することができる。SR−PCIM2100からのこの情報に基づいて、SWI2115は、このデータを解釈し、管理コンソールまたはエンティティを介してユーザにとって使用可能なVF移行シナリオに変換することができる。これらの移行シナリオは、問題のコンポーネントの設計に非常に依存したものになる。たとえば、イーサネット(登録商標)・アダプタを移行するために、OSは、それを構成解除する(de-configure)ことができなければならない可能性がある。この機能がOSによって提供されない場合、管理ユーティリティはこのようなシナリオを描くことができないであろう。換言すれば、管理ユーティリティは、移行シナリオを描くためにそれが後で使用するコンポーネント(システム・イメージ・タイプ、ハードウェアなど)の知識を維持する。この情報は、VF移行機能ビットに保管された移行可能性(migratability)情報に加えて、移行に関するどのシナリオが選択のために使用可能であるかを識別する。

0136

システム管理者は、所望のVF2120および関連アプリケーション2110を移行するためのプロセスを開始する。たとえば、管理ソフトウェア(描写せず)は、ホスト・システムおよびPCIeファブリック上の使用可能なリソース間で移行可能なVFおよびそれに関連するアプリケーションをグラフカル・ユーザ・インターフェース・ディスプレイなどにエンティティとして描くことができる。管理ソフトウェアは、インターナシナルビジネスマシーンズ社から入手可能なHMCなどのハードウェア管理コンソール上に、あるいはファームウェア(たとえば、ソフトウェア仲介またはハイパーバイザ)と対話するように設計されたシステム実行ソフトウェアの一部または任意のその他のコンソール内に、ならびにハードウェア・リソースの制御機能に存在することができる。

0137

ホスト・システム上で実行されるソフトウェア仲介(SWI)2115は、追加の機能を可能にする抽象化層(layer of abstraction)を作成するために管理アプリケーションとハードウェアとの間で使用される任意のタイプのファームウェアまたはソフトウェア・コードにすることができ、移行すべきVF2120または柔軟性のためにすべての未解決の要求を完了しなければならないという要求をSI−A2105に送信することができる。たとえば、SI−A2105およびSWI2115は、それにより両者が通信するアプリケーション・プログラム・インターフェース(API:applicationprogram interface)を有することができる。SI−A2105は、VF2120を使用して任意のアプリケーション2110を休止または停止することにより、要求に応答することができる。SI−A2105は、VF2120に対するすべての未解決の要求が完了されることを保証することができる。本質的に、SI−A2105はチェックを行って、いかなる要求も保留中ではないことと、すべてのトランザクションが完了していることを表す状態にすべてのキューが入っていることを確認する。たとえば、これを実行するための方法の1つは、すべてのWQEが対応するCQEを有することをチェックすることである。

0138

次に、SI−A2105は、SI−AによるVF2120の使用を事実上停止して、VF2120のその論理表現を構成解除することができる。これは、たとえば、SI−A2105上のVF2120用のデバイス・ドライバ(図示せず)によって実行可能な動作である。次に、SI−A2105は、すべての要求が完了していることと、VF2120を除去できることをSWI2115に通知することができる。次に、SWI2115は、SI−A2105からVF2120を除去することができる。これにより、VF2120がSI−A2105によって検出不能かつ構成不能なものになる。次に、SWI2115は、エンドポイントの構成空間内のVFの表現クリアすることにより、ターゲット物理機能(PF)2135からVF2120を切り離すことができる。

0139

次に、図23を参照すると、SWI2115は、ターゲットVF2145をそのPF2140に接続することができる。次に、SWI2115は、構成のためにVF2145をSI−A2105にとって使用可能なものにすることができ、VF2145を構成するようSI−A2105に指示する。たとえば、SWI2115は、新しいデバイス、たとえば、新しいエンドポイントであるように見える可能性のあるVF2145を含むよう、ファームウェア内のSI−Aのデバイス・ツリーを更新する。この新しいエンドポイントまたはVF2145は、OS内のその論理表現がファームウェア・コードによってOSに提示されたSI−Aのデバイス・ツリー内でそれを検出するデバイス・ドライバに依存する任意のタイプのエンドポイント・デバイスにすることができる。新しいデバイス、たとえば、VF2145に関するSI−Aのデバイス・ツリー内に1つの項目が存在すると、そのデバイス用のデバイス・ドライバは、新しいデバイスを検出し構成することになる。

0140

たとえば、デバイス・ドライバを使用して、SI−A2105がVF2145を構成すると、関連アプリケーション2110は、VF2145を使用することができる可能性がある。次に、SWI2115は、移行を完了する関連アプリケーション2110を開始するよう、SI−A2105に指示することができる。その結果として、アプリケーション2110とVF2120は、点線によって表される通り、依然として関連付けられているが、VF2120は、その時点でPF2140に関連付けられるように、PF2135との関連付けからすでに移行されている。

0141

図24および図25は、例示的な一実施形態により1つのエンドポイント、たとえば、PCIeアダプタから他のエンドポイントへの仮想機能(VF)およびそれに関連するアプリケーションの単一ルート・ステートレス移行を例示する模範的な図である。1つのエンドポイントから他のエンドポイントへのVFのステートレス移行に関する動作は、図22および図23に関して上述したものと同様である。図22および図23の動作と図24図25の動作との主な違いは、VFが同じエンドポイント内の異なる物理機能にのみ関連付けられるのではなく、VFがまったく異なるエンドポイント内に置かれることである。

0142

図24に図示されている通り、システム・イメージ(SI)2205に関連するアプリケーション2210は、エレメント2210を2220と接続する点線によって表されている通り、仮想機能(VF)2220に関連付けられている。SR−PCIM2200は、システム管理者または同等の管理権限に対して移行シナリオを描く。これは、システム管理インターフェース(描写せず)による移行のためのターゲットになりうるPCIeファブリック内で使用可能な同等のVFを示すことを含むことができるが、これに限定されない。

0143

システム管理者は、所望のVF2220および関連アプリケーション2210を移行するためのプロセスを開始する。たとえば、管理ソフトウェア(描写せず)は、管理コンソールまたはエンティティのグラフィカル・ユーザ・インターフェース・ディスプレイ内などに、ホスト・システムおよびPCIeファブリック上の使用可能なリソース間で移行可能なエンティティとしてVFおよびそれに関連するアプリケーションを例示することができる。ホスト・システム上で実行されるソフトウェア仲介(SWI)2215は、移行すべきVF2220のためにすべての未解決の要求を完了しなければならないという要求をSI−A2205に送信することができる。たとえば、SI−A2205およびSWI2215は、それにより両者が通信するアプリケーション・プログラム・インターフェース(API)を有することができる。SI−A2205は、VF2220を使用して任意のアプリケーション2210を休止または停止することにより、要求に応答することができる。SI−A2205は、VF2220に対するすべての未解決の要求が完了されることを保証することができる。

0144

次に、SI−A2205は、SI−AによるVF2220の使用を事実上停止して、VF2220のその論理表現を構成解除することができる。これは、たとえば、SI−A2205上のVF2220用のデバイス・ドライバ(図示せず)によって実行可能な動作である。次に、SI−A2205は、すべての要求が完了していることと、VF2220を除去できることをSWI2215に通知することができる。次に、SWI2215は、SI−A2205からVF2220を除去することができる。これにより、VF2220がSI−A2205によって検出不能かつ構成不能なものになる。次に、SWI2215は、エンドポイントの構成空間内のVFの表現をクリアすることにより、ターゲット物理機能(PF)2235からVF2220を切り離すことができる。

0145

次に、図25を参照すると、SWI2215は、VF2220(その時点でVF2245)が元々関連付けられていたPF2235とはまったく異なるエンドポイント内にあるそのPF2240にターゲットVF2245を接続することができる。次に、SWI2215は、構成のためにVF2245をSI−A2205にとって使用可能なものにすることができ、VF2245を構成するようSI−A2205に指示する。たとえば、SWI2215は、新しいデバイスを含むよう、ファームウェア内のSI−Aのデバイス・ツリーを更新する。SI−A2205は、たとえば、そのタイプが問題のデバイスまたは機能の特定の特性に依存することになるデバイス・ドライバを使用して、VF2245を構成することができる。次に、関連アプリケーション2210は、VF2245を使用することができる可能性がある。次に、SWI2215は、移行を完了する関連アプリケーション2210を開始するよう、SI−A2205に指示することができる。その結果として、アプリケーション2210とVF2220は、点線によって表される通り、依然として関連付けられているが、VF2220は、PF2235との関連付けから異なるエンドポイント内のPF2240に関連付けられるように移行されている。

0146

1つのシステム・イメージから他のシステム・イメージに仮想機能を移行するために同様の動作を実行することができる。図26および図27は、例示的な一実施形態により1つのシステム・イメージから他のシステム・イメージへの仮想機能およびそれに関連するアプリケーションの単一ルート・ステートレス移行を例示する模範的な図である。図26に図示されている通り、移行すべきVF2320をターゲットとする動作を停止するための動作は、本質的に、図22および図24に関して前述したものと同じである。VF2320に関連するアプリケーション2310が停止され、VF2320をターゲットとする動作が完了すると、SI−A2305は、VF2320のその論理表現を構成解除し、すべての要求が完了しており、VF2320を除去できることをSWI2315に通知する。

0147

VF2320に関してSIの変更を実行する予定である場合、SWI2315は、関連のPF2335からVF2320を切り離し、ターゲットPF2340にVF2345を接続する。ターゲットPF2340は、同じかまたは異なるエンドポイント上に位置することができる。SWI2315は、構成のためにVF2345をターゲットSI、たとえば、SI−B2350にとって使用可能なものにし、VF2345を構成するようターゲットSI2350に指示する。ターゲットSI2350は、その時点でSI−B2350に関連する関連アプリケーション2310による使用のために事実上使用可能なものにして、VF2345を構成する。SWI2315は、新しいVF2345上のリソースを使用するために関連アプリケーションを開始するよう、ターゲットSI2350に通知する。

0148

図28は、例示的な一実施形態により仮想機能を移行するための模範的な動作の概要を示す流れ図である。図28に図示されている通り、動作は、ユーザが移行すべきVFとVFに関するターゲット宛先を指定することから始まる(ステップ2410)。ホスト・システム上で実行されるSWIは、VFを移行するためにVFに対するすべての未解決の要求を完了しなければならないという要求をSIに送信する(ステップ2420)。SIは、VFを使用する任意のアプリケーションを休止または停止し(ステップ2430)、VFに対するすべての未解決の要求が完了していることを保証する(ステップ2440)。次に、SIは、VFのその論理表現を構成解除する(ステップ2450)。SIは、すべての要求が完了していることと、VFを除去できることをSWIに通知する(ステップ2460)。

0149

次に、SWIは、SIからVFを除去し、関連のPFからVFを切り離す(ステップ2470)。次に、SWIは、同じかまたは異なるエンドポイント内にある可能性のあるターゲットPFにVFを接続し、同じかまたは異なるシステム・イメージに関連付けることができる(ステップ2480)。次に、SWIは、VFを構成するよう、VFがその時点で関連付けられているSIに指示し、それにより、それを関連アプリケーションによる使用のために使用可能なものにする(ステップ2490)。SWIは、新しいVF上のリソースを使用するために関連アプリケーションを開始するようSIに指示する(ステップ2495)。その後、動作は終了する。

0150

したがって、例示的な諸実施形態のメカニズムでは、同じエンドポイント内で、異なるエンドポイント間で、ならびに同じかまたは異なるエンドポイント上の異なるシステム・イメージ間で、仮想機能を移行することができる。このような移行により、様々なロード・バランシング動作を実行することが可能になる。その上、このような移行により、仮想機能の効率的な動作に対してより役立つ動作環境に仮想機能を移動することができる。

0151

したがって、概略が示されている例示的な諸実施形態は、同じルート複合体内または複数のルート複合体(RC)全域の複数のシステム・イメージ(SI)間でエンドポイント、たとえば、PCIe入出力アダプタを同時に共用するためのメカニズムを提供する。その上、例示的な諸実施形態のメカニズムは、キュー・ベースの通信、プッシュプル・ベースのプロトコル通信、およびソケット・ベースの通信を使用する能力をサポートする。さらに、例示的な諸実施形態は、仮想機能およびそれに関連するアプリケーション・インスタンスを同じかまたは異なるエンドポイント内の1つの物理機能から他の物理機能にならびに1つのシステム・イメージから他のシステム・イメージに移行するためのメカニズムを提供する。

0152

これらのメカニズムに加えて、例示的な諸実施形態は、実行中のマルチルートPCIeファブリック内への新しいコンポーネントのホット・プラグ/除去を実行するための機能をさらに提供する。これらのメカニズムにより、たとえば、ルート複合体を実行中のPCIeファブリックにホット・プラグするかまたはそこから除去することができる。たとえば、ブレードはブレード・シャーシにホット・プラグすることができ、それに関連するルート複合体は既存のシステム内のPCIeファブリックにリアルタイムで組み込むことができる。

0153

このようなホット・プラグ/除去機能により、PCIeファブリックが増大することができ、新たに組み込まれたルート複合体全域で仮想機能を固有に共用することができる。したがって、PCIeファブリックは、それを実行するためにシステムを停止せずに拡張することができる。PCI−SiG入出力仮想化規格は、PCIeファブリックのこのような動的拡張に関するこのような機能または標準をまったく提供していない。

0154

例示的な諸実施形態のメカニズムでは、1つまたは複数のPCIルート複合体および複数ルート認識(MRA)対応スイッチを備えた既存のホスト・システムが存在するものと想定されている。たとえば、ホスト・システムは、1つまたは複数のMRAスイッチを有するPCIファブリックによって接続された2つのルート複合体RC2およびRC2を有することができる。その上、既存のルート複合体ならびに新たに組み込まれたルート複合体と通信するように構成可能な1つまたは複数のエンドポイントがPCIeファブリックに結合されているものと想定されている。その上、複数ルート(MR)PCI構成マネージャ(MR−PCIM)は、1つのホスト・システム上の帯域内にまたは帯域外に存在することができ、PCIeファブリックの相互接続スイッチを介してアクセス可能なすべてのリンクをトラバースすることができ、それをトラバースすることによってPCIファブリックを発見したものと想定されている。これらの想定はいずれも、本明細書に示されている例示的な諸実施形態に関して上記で前述した様々なメカニズムによって満足される。

0155

上記で想定されている構成では、システム管理者などが既存のPCIeファブリックに新しいルート複合体を追加する(たとえば、ブレード・シャーシに新しいブレードを挿入する)と、ホット・プラグ・コントローラなどの自動化メカニズムまたはシステム管理者のうちの少なくとも一方が、管理者インターフェースなどを介するなどにより、ルート複合体の追加をMR−PCIMに通知する。このような通知は、たとえば、新しいエンティティをファブリックに追加する動作が行われたことを示すイベントをMR−PCIMに通知することにより行うことができる。このようなイベントは、新しいルート複合体がその時点でPCIeファブリックに接続されている場合、すなわち、ルート複合体がプラグインされている場合に、スイッチおよびスイッチ・ポートを識別することができる。

0156

次に、MR−PCIMは、既存のPCIeファブリック内の新しいルート複合体を初期設定するためにいくつかの動作を実行することにより、通知されたイベントを処理することができる。たごえば、MR−PCIMは、新たに追加されたコンポーネントに関する情報でそのPCIeファブリック構成データ構造を更新することができる。PCIeファブリック構成データ構造は、PCIeファブリックの構成を表現するためにMR−PCIMによって使用される。PCIeファブリック構成データ構造内に保管された情報は、たとえば、MR−PCIMとの管理ユーザ・インターフェースを介して、PCIeファブリック構成レジスタから、ならびに、システム管理者による入力から、MR−PCIMによって収集される。PCIeファブリック構成データ構造の内容およびこの内容の使用法については、以下により詳細に説明する。

0157

PCIeファブリック構成データ構造を更新した後、MR−PCIMは、PCI規格によって定義される通り、PCI構成空間動作を実行して、PCI規格通り、新たに追加されたコンポーネントの特性、たとえば、それがエンドポイント、ルート複合体、スイッチなどであるか、それがどのタイプのエンドポイント、ルート複合体、スイッチなどであるかなどを判断する。新たに追加されたコンポーネントがスイッチであると判断された場合、スイッチの各ポートに関してPCI構成空間動作を実行して、そのスイッチに結合された追加コンポーネントの存在を判断する。次に、新たに追加されたコンポーネントに関する特性情報、たとえば、コンポーネント・タイプ、ベンダ名、部品番号、シリアル番号などは、MR−PCIMによる使用のために仮想PCIeファブリック構成データ構造に保管される。

0158

コンポーネントが新しいルート複合体または新しいエンドポイントである場合、MR−PCIMは、新しいルート複合体またはエンドポイントを仮想プレーンに関連付ける。このようにして、新しいルート複合体またはエンドポイントは、システムによる使用のために使用可能なものになる。コンポーネントがMRAスイッチである場合、MR−PCIMは、PCI入出力仮想化規格通り、スイッチの仮想プレーン・テーブルを構成する。コンポーネントがスイッチである場合、スイッチ・ポートをチェックして、コンポーネントがあれば、どのコンポーネントがそれに接続されているかを確認し、MR−PCIMは、同様にこれらのコンポーネントに関する情報に基づいて、そのPCIeファブリック構成データ構造も構成する。このようにして、新しいコンポーネント(複数も可)は、PCIeファブリックに動的に追加することができる。

0159

新しいルート複合体に関して、新しいルート複合体に関する特性情報を含むようMR−PCIMを構成し、その新しいルート複合体を仮想プレーンに関連付けると、PCIeファブリック内で新しいルート複合体を使用することができる。したがって、例示的な諸実施形態のメカニズムにより、ルート複合体およびそれに関連するコンポーネントを既存の実行中のPCIeファブリックに追加することができる。その結果として、追加のコンポーネントを含めるためにシステムを拡張するときにシステムに関するダウン時間はまったく発生しない。

0160

図29は、例示的な一実施形態によりルート複合体に関するホット・プラグイン動作を例示する模範的なブロック図である。図29はルート複合体に関するホット・プラグイン動作を図示しているが、例示的な諸実施形態はこれに限定されないことを理解されたい。むしろ、上記で論じた通り、ホット・プラグ動作は、本発明の精神および範囲を逸脱せずに、エンドポイント、スイッチ、およびその他のタイプのコンポーネントに関して実行することができる。

0161

図29に図示されている通り、ホスト・システム2510は、それぞれ仮想プレーン2511および2513に関連する既存のルート複合体RC1 2512およびRC2 2514を有する。既存のルート複合体RC1 2512およびRC2 2514は、仮想プレーン2540および2550内のエンドポイント2542、2544、2552,および2554と通信するようにMR−PCIM2562によって構成される。MR−PCIM2562は、ホスト・システム2510のコンポーネントを含む、PCIeファブリック2530のコンポーネントおよびPCIeファブリック2530に接続されたコンポーネントのすべてに関する特性情報を保管するファブリック構成データ構造2566を維持する。

0162

描かれている例では、新しいルート複合体RC N 2516がホスト・システム2510に追加されているものと想定されている。たとえば、ルート複合体RC N 2516はブレードに関連付けることができ、ホスト・システム2510は、RC N 2516に関連するブレードを挿入可能なシャーシを有するブレード・サーバにすることができる。RC N 2516をサポートできるその他のタイプのデバイスは、例示的な諸実施形態の精神および範囲を逸脱せずに使用することができる。

0163

例示的な諸実施形態では、コンポーネントのホット・プラグ/除去を可能にする予定の各スイッチ・ポートに関連する2通りのタイプの標準的なPCIホット・プラグ・コントローラが存在する。これらのホット・プラグ・コントローラの一方は、ホット・プラグ/除去動作の物理的側面のためにMR−PCIM2562によって使用され、「物理ホット・プラグ」コントローラと呼ばれる。ホット・プラグ可能なポートごとに、このような物理ホット・プラグ・コントローラが1つずつ存在する。

0164

加えて、スイッチ・ポートの下にある共用コンポーネントへの論理接続を制御するために仮想ホット・プラグ・コントローラを使用するルート複合体のために、「仮想ホット・プラグ」コントローラが提供される。スイッチ・ポートによってサポートされる仮想プレーンごとに1つの仮想ホット・プラグ・コントローラが存在する。

0165

例示的な諸実施形態では、新しいRC N 2516の追加に応答して、RC N 2516に関連するスイッチ2532のポートにある物理ホット・プラグ・コントローラが「プレゼンス検出変更(Presence Detect Change)」割り込みメッセージをMR−PCIM2562に送信して、新しいコンポーネントがPCIeファブリックに追加されていることをMR−PCIM2562に通知する。この割り込みメッセージはPCI規格によって定義されているが、ここでの使用法は、MR−PCIM2562を実行しないルート複合体ではなく、MR−PCIM2562に対して割り込みを指示することである。代わって、システム管理者は、新しいコンポーネントの追加に関する他の形式の通知として、挿入の前に、MR−PCIM2562への管理インターフェース(図示せず)を介してMR−PCIM2562にも通知している可能性がある。

0166

次に、MR−PCIM2562は、既存のPCIeファブリック2530内の新しいコンポーネント、たとえば、ルート複合体RC N 2516を初期設定するためにいくつかの動作を実行することにより、「プレゼンス検出変更」割り込みを処理することができる。たとえば、MR−PCIM2562は、新たに追加されたコンポーネントに関する情報でそのファブリック構成データ構造2566を更新する。ファブリック構成データ構造2566を更新する際に、MR−PCIM2562はPCI構成空間動作を実行して、新たに追加されたコンポーネントの特性、たとえば、それがエンドポイント、ルート複合体、スイッチなどであるか、それがどのタイプのエンドポイント、ルート複合体、スイッチなどであるか、ベンダ名、部品番号、シリアル番号などを照会し判断する。

0167

この自動化照会に加えて、追加コンポーネントがルート複合体である場合、システム管理者は、MR−PCIM2562への管理インターフェース(図示せず)などにより、新たに追加されたルート複合体に対してどのコンポーネントを構成すべきかをMR−PCIM2562に指示することができる。たとえば、MR−PCIM2562は、新しいRC N 2516がアクセスできるようにするためにそのエンドポイントを正しい仮想プレーンに追加できるように、システム管理者がどのエンドポイントを新しいRC N 2516に割り当てたいと希望しているかを把握する必要がある。仮想プレーンに対するエンドポイントのこのような割り当ては、MR−PCIM2562がMRAスイッチ2532のPCI構成空間内のPCIマルチルート構成構造にアクセスし、エンドポイントがMRAエンドポイントである場合は、MRAスイッチ2532に加えて、エンドポイント内のPCIマルチルート構成構造にアクセスすることによって実行される。

0168

描かれている例では、追加された新しいコンポーネントは、ルート複合体RC N 2516、たとえば、RC N 2516を提供するブレードである。しかし、このコンポーネントは、いくつかの異なるタイプのコンポーネントのいずれでもよく、したがって、MR−PCIM2562は、追加コンポーネントから収集された特性情報に基づいて、追加されるコンポーネントのタイプを判断することができる。追加されるコンポーネントについて判断されたタイプに基づいて、MR−PCIM2562により様々な動作を実行してPCIeファブリック2530にそのコンポーネントを動的に追加し、PCIeファブリック2530の通信および動作においてそれを使用できるようにすることができる。

0169

描かれている例では、追加コンポーネントは新しいルート複合体RC N 2516であるので、MR−PCIM2562は、新しいルート複合体RC N 2516を仮想プレーン2515に関連付け、次に、前に詳述した通り、システム管理者が新しいルート複合体RC N2516に対して指定したエンドポイントを関連付ける。このようにして、新しいコンポーネントをPCIeファブリックに動的に追加することができる。

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

該当するデータがありません

関連する公募課題

該当するデータがありません

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

該当するデータがありません

この 技術と関連する公募課題

該当するデータがありません

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ