(57)【特許請求の範囲】
【請求項１】
コンピュータ・システム内のハードウェアの入力／出力アダプタ（Ｉ／Ｏアダプタ）における仮想化のためのコヒーレント・アクセラレータ機能分離を実施するための方法であって、前記コンピュータ・システムはプロセッサ、および前記Ｉ／Ｏアダプタに関連付けられた機能を管理するハイパーバイザを含み、前記方法は、
コヒーレント・アクセラレータＰＥ（ただし、ＰＥは、分割可能エンドポイント）サポートを行うための、ハイパーバイザ・アダプタ・ドライバ、前記Ｉ／Ｏアダプタ内のＰＣＩサービス・レイヤ（ＰＳＬ）に結合されたアダプタＰＥと、複数のホストＯＳのうちの対応するホストＯＳ、前記Ｉ／Ｏアダプタ内の複数のアクセラレータ機能ユニット（ＡＦＵ）のうちの対応するＡＦＵに結合された複数のＡＦＵ ＰＥを有する分離機能部とを含むＰＣＩホスト・ブリッジ（ＰＨＢ）を設けるステップと、
前記ＰＨＢの前記分離機能部が有する前記ＡＦＵ ＰＥを凍結することによって、ＡＦＵエラーの分離を行うステップと、
を含む、方法。
【請求項２】
前記ＡＦＵエラーがＭＭＩＯエラーもしくはＤＭＡエラーである、請求項１記載の方法。
【請求項３】
前記複数のアクセラレータ機能ユニット（ＡＦＵ）のそれぞれを、それぞれのＰＣＩ−ＥｘｐｒｅｓｓリクエスタＩＤ（ＲＩＤ）に関連付けるステップを含む、請求項1に記載の方法。
【請求項４】
前記プロセッサと、ＰＣＩ−Ｅｘｐｒｅｓｓメモリ・リード／ライト動作時に前記それぞれのＡＦＵを識別する前記それぞれのＰＣＩ−ＥｘｐｒｅｓｓリクエスタＩＤ（ＲＩＤ）を有する各前記ＡＦＵとの間で、前記ＰＣＩ−Ｅｘｐｒｅｓｓメモリ・リード／ライト動作を用いるステップを含む、請求項３に記載の方法。
【請求項５】
システム・メモリおよび前記ＡＦＵの１つの内、または前記システム・メモリおよび前記ＡＦＵの両方内でコマンド／応答キューを用いて、オペレーティング・システム（ＯＳ）内で実行しているアプリケーションと前記ＡＦＵの間で、タスクを行う要求およびそのタスクを完了した結果を交換するステップを含む、請求項１に記載の方法。
【請求項６】
ハードウェアＩ／Ｏアダプタに関連付けられた機能を管理するためのハイパーバイザをもたらすステップを含み、前記ハイパーバイザは、ＰＣＩ−Ｅｘｐｒｅｓｓインターフェースをサポートして、ＡＦＵをＰＣＩホスト・ブリッジ（ＰＨＢ）分離機能部に関連付ける、請求項１に記載の方法。
【請求項７】
前記ハイパーバイザは、前記ＰＣＩサービス・レイヤまたは前記ＡＦＵエラーを、それぞれのＡＦＵの動作を復元するためにいずれのオペレーティング・システム（ＯＳ）も終了することを必要とせずに、検出し回復する、請求項６に記載の方法。
【請求項８】
前記ＡＦＵが、前記ＰＣＩサービス・レイヤの共通のＰＣＩＥサービス・レイヤ（ＰＳＬ）エンドポイント機能を共有するステップを含む、請求項７に記載の方法。
【請求項９】
前記ＡＦＵの個々の１つがＰＣＩ−Ｅｘｐｒｅｓｓエンドポイント機能として動作するステップと、ＰＣＩ−Ｅｘｐｒｅｓｓルート・ポートを用いて、メモリ・マップＩＯ（ＭＭＩＯ）、ダイレクト・メモリ・アクセス（ＤＭＡ）、メッセージ・シグナル割り込み（ＭＳＩ）アドレス範囲をＰＣＩ−Ｅｘｐｒｅｓｓ  ＲＩＤ（相対識別子）に関連付けて、アドレス範囲を個々の前記アクセラレータ機能ユニット（ＡＦＵ）に関連付けるステップとを含む、請求項１に記載の方法。
【請求項１０】
請求項１〜９の何れか１項に記載の方法の各ステップを、コンピュータ・ハードウェアによる手段として構成した、システム。
【請求項１１】
請求項１〜９の何れか１項に記載の方法の各ステップを、コンピュータに実行させる、コンピュータ・プログラム。
【請求項１２】
請求項１１に記載の前記コンピュータ・プログラムを、コンピュータ可読記録媒体に記憶した、コンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にデータ処理の分野に関し、より詳細にはコンピュータ・システム内の入力／出力（ＩＯ）アダプタにおける仮想化のためのコヒーレント・アクセラレータ機能分離を実施するための方法、システム、およびコンピュータ・プログラム製品に関する。
【背景技術】
【０００２】
コヒーレント・アクセラレータは、単一のオペレーティング・システム・イメージの範囲内において、そのオペレーティング・システム（ＯＳ）が論理的に分割されたサーバ上の複数のうちの１つであるか、分割されていないシステムの唯一のオペレーティング・システムであるかに拘わらず利用され得る。しかしコヒーレント・アクセラレータは、論理的に分割されたシステム上の複数のオペレーティング・システム・イメージにわたって、共有または仮想化されることを可能にすることが望ましい。共有を可能にするための基本的な要件は、例えばダイレクト・メモリ・アクセス（ＤＭＡ）、メッセージ・シグナル割り込み、メモリ・マップ入力／出力（ＩＯ）、およびエラー・イベントを含む周辺コンポーネント相互接続エクスプレス（ＰＣＩＥまたはＰＣＩ−Ｅｘｐｒｅｓｓ）トランザクションが、ＯＳイメージおよびアクセラレータ機能の間で分離されることである。
【０００３】
ＰＣＩ−Ｅｘｐｒｅｓｓ（ＰＣＩＥ）は、単一ルートＩＯ仮想化（ＳＲＩＯＶ）を用いた、ＰＣＩＥデバイスのサブ機能の仮想化を可能にする。単一ルート入力／出力（ＩＯ）仮想化（ＳＲＩＯＶ）はＰＣＩ標準であり、ＰＣＩ−Ｅｘｐｒｅｓｓ（ＰＣＩｅ）業界におけるＩ／Ｏ仮想化のアダプタ技術ビルディング・ブロックをもたらす。ＳＲＩＯＶアーキテクチャは、多くの点で従来型のＰＣＩ−Ｅｘｐｒｅｓｓデバイスとして動作する、仮想機能（ＶＦ）の後にＰＣＩ−Ｅｘｐｒｅｓｓ  ＩＯアダプタ内にリソースをカプセル化する。ＶＦの互いからの、およびＶＦが個々に割り当てられたもの以外のオペレーティング・システム・イメージからの分離は、プロセッサ命令アドレスをＰＣＩ−Ｅｘｐｒｅｓｓメモリ・アドレスに変換するハードウェア・ページ・テーブル、またはメモリ・マップＩ／Ｏ（ＭＭＩＯ）、およびＰＣＩ−Ｅｘｐｒｅｓｓデバイス・メモリ・リード／ライト・アドレスをシステム・メモリ・アドレスに変換するＤＭＡ変換テーブルなどの変換テーブルの使用によって達成される。
【０００４】
従来型のＰＣＩまたはＳＲＩＯＶデバイスを利用して、ＭＭＩＯおよびＤＭＡドメインは、バス／デバイス／機能（リクエスタＩＤ、またはＲＩＤ）関連付けを有するＰＣＩ機能に関連付けられる。さらにＤＭＡ変換は、ＭＳＩベクトルの特定のセットを特定のＭＳＩまたはＤＭＡアドレスに承認するＯＳまたはハイパーバイザによって、メッセージ・シグナル割り込み（ＭＳＩ）、（ＤＭＡ書き込み）分離を含むことができる。例えばＰＣＩ−ＥｘｐｒｅｓｓのためのＩＢＭ  ＰＯＷＥＲシステムＩＯデバイス・アーキテクチャ（ＩＯＤＡ）、ならびにインテルＶＴ−Ｄアーキテクチャは、これらの技法の実例となる。
【０００５】
ＩＢＭ  ＰＯＷＥＲシステムＩＯＤＡは、ＲＩＤ、およびＰＯＷＥＲ  ＰＣＩ−Ｅｘｐｒｅｓｓルート・コンプレックスまたはＰＣＩ−Ｅｘｐｒｅｓｓホスト・ブリッジ（ＰＨＢ）内のテーブルを利用して、ＰＣＩ−Ｅｘｐｒｅｓｓバス上のＭＭＩＯ、ＤＭＡ、またはＭＳＩトランザクションに関わるエラーを、特定のＰＣＩ−Ｅｘｐｒｅｓｓ機能に分離することを容易にするために、ＭＭＩＯ、ＤＭＡ、およびＭＳＩアドレスをＲＩＤに関連付けるための手段をもたらす。当技術分野ではＰＣＩホスト・ブリッジ（ＰＨＢ）は、ＰＣＩルート・コンプレックス内の要素であり、特定の設計では全体としてルート・コンプレックスのインスタンスとすることができることが理解される。
【０００６】
しかしＳＲＩＯＶの態様は、コヒーレント・アクセラレータ機能の設計を複雑にし、またはアクセラレータ動作と適合し得ない。例えばプロセッサ内のユニットは、アクセラレータと通信して、アクセラレータ自体内で共通に保持され得るメモリ・キャッシュ・ラインの状態を同期させる。この通信は、ＰＣＩ−Ｅｘｐｒｅｓｓメモリ・リード／ライト・トランザクションを用いて、キャッシュ・ライン更新を通信する、または変化したキャッシュ・ラインをアクセラレータから取り出すことができるが、ＰＣＩ−Ｅｘｐｒｅｓｓメモリ・リード／ライト・トランザクションを用いたキャッシュ・ラインへの参照は、システム・メモリの観点から構成され、これらをＳＲＩＯＶタイプの仮想機能（ＶＦ）に直接関係付ける能力を有しない。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ＳＲＩＯＶなどの他のＰＣＩ−Ｅｘｐｒｅｓｓ仮想化機構の使用を必要とせずに、ＰＣＩ−Ｅｘｐｒｅｓｓトランザクション・レベルでのＭＭＩＯ、ＤＭＡ、ＭＳＩ、およびエラーの分離を達成するなどの、仮想化のためのコヒーレント・アクセラレータ機能分離を達成するための効果的な方法および装置の必要性がある。追加となる不必要なＳＲＩＯＶの概念を導入せずに、プロセッサおよびアクセラレータの設計における複雑さを低減して、それらのいずれかによる簡単なＰＣＩ−Ｅｘｐｒｅｓｓメモリ・リード／ライト・トランザクションの使用を可能にする必要性がある。
【課題を解決するための手段】
【０００８】
本発明の主要な態様は、仮想化のためのコヒーレント・アクセラレータ機能分離を実施するための方法、システム、およびコンピュータ・プログラム製品を提供することである。他の重要な態様は、実質的に悪影響がなく従来技術の構成の欠点の多くを克服するような方法、システム、およびコンピュータ・プログラム製品を提供することである。
【０００９】
簡潔に言えば、コンピュータ・システム内の入力／出力（ＩＯ）アダプタにおける仮想化のためのコヒーレント・アクセラレータ機能分離を実施するための方法、システム、およびコンピュータ・プログラム製品が提供される。コヒーレント・アクセラレータは、アクセラレータ機能ユニット（ＡＦＵ）をもたらし、各ＡＦＵは、プロセッサ上のアプリケーション・ソフトウェア内で実施され得るコンピューティング・タスクを行うために、他のＡＦＵとは独立に動作するように適合される。ＡＦＵは、アプリケーション・ソフトウェアに結び付けられたシステム・メモリへのアクセスを有し、そのメモリのコピーを、ＡＦＵ内のＡＦＵメモリ・キャッシュ内に作成するように適合される。このメモリ・コヒーレンシー・ドメインの一部として、ＡＦＵメモリ・キャッシュおよびプロセッサ・メモリ・キャッシュのそれぞれは、ＡＦＵメモリ・キャッシュまたはプロセッサ・メモリ・キャッシュのいずれにおいても共通なデータへの変化、ならびにそれぞれのキャッシュがコピーを含む、メモリ内で変化したデータを認識するように適合される。
【００１０】
本発明の特徴によれば、ＡＦＵメモリ・キャッシュとプロセッサ・メモリ・キャッシュの間の同期を維持するために、プロセッサおよびアクセラレータは、例えばキャッシュ・ラインとして表される、個々のメモリ領域に変化を通信する。
【００１１】
本発明の特徴によれば、プロセッサおよびアクセラレータによる簡単なＰＣＩ−Ｅｘｐｒｅｓｓメモリ・リード／ライト・トランザクションの使用は、追加となるおよび不必要なＳＲＩＯＶの概念を必要とせずに、有利にはプロセッサおよびアクセラレータの設計上の複雑さが低減された、ＰＣＩ−Ｅｘｐｒｅｓｓ相互接続を用いたときに可能となる。コヒーレント・アクセラレータは、ＡＦＵに関連付けられたＰＣＩトランザクションを達成するために、アダプタ内のＰＣＩサービス・レイヤ（ＰＳＬ）エンドポイント機能を利用する。
【００１２】
本発明の特徴によれば、ハイパーバイザ・アダプタ・ドライバは、ＰＣＩ−Ｅｘｐｒｅｓｓインターフェースをサポートして、各ＡＦＵをＰＣＩホスト・ブリッジ（ＰＨＢ）分離機能部に関連付ける。
【００１３】
本発明の特徴によれば、各ＡＦＵおよびプロセッサおよびメモリの間にＰＣＩ−Ｅｘｐｒｅｓｓ相互接続を用いるときは、プロセッサおよびＡＦＵは、ＰＣＩ−Ｅｘｐｒｅｓｓメモリ・リード／ライト動作を利用する。ＡＦＵは、システム・メモリへのまたはそれからのＡＦＵ  ＤＭＡを達成するＰＣＩ−Ｅｘｐｒｅｓｓメモリ・リード／ライト動作時にそのＡＦＵを識別するための、ＰＣＩ−ＥｘｐｒｅｓｓリクエスタＩＤ（ＲＩＤ）に関連付けられる。ＡＦＵは、ＰＨＢがプロセッサＭＭＩＯアドレスをＡＦＵに関連付けることを目的として、ＲＩＤに関連付けられる。
【００１４】
本発明の特徴によれば、タスクを行う要求およびそのタスクを完了した結果は、オペレーティング・システム（ＯＳ）内で実行しているアプリケーションと、ＡＦＵとの間で、システム・メモリ、ＡＦＵ、または両方の組み合わせ内でコマンド／応答キューを用いて交換される。個々のＡＦＵは、ＰＣＩ−Ｅｘｐｒｅｓｓメモリ・サイクルに応答しまたはそれを生じさせ、アクセラレータ・アダプタＰＳＬは、それらのメモリ・リード／ライト動作に対応するＰＣＩ−Ｅｘｐｒｅｓｓトランザクションを行う。
【００１５】
本発明の特徴によれば、ＡＦＵは、特定のタイプのメモリ・マップＡＦＵデバイスとして、および任意選択でそれらがオペレーティング・システム内で、ＰＣＩ−Ｅｘｐｒｅｓｓバスまたは機能に全く関連付けられないやり方で、オペレーティング・システム（ＯＳ）によって認識され動作する。
【００１６】
本発明の特徴によれば、任意選択で、ＰＣＩ−Ｅｘｐｒｅｓｓ  ＰＨＢは、メモリ・マップＩＯ（ＭＭＩＯ）、ダイレクト・メモリ・アクセス（ＤＭＡ）、メッセージ・シグナル割り込み（ＭＳＩ）アドレス範囲をＰＣＩ−Ｅｘｐｒｅｓｓ  ＲＩＤ（相対識別子）に関連付けて、これらのアドレス範囲を、そうでなければエンドポイント機能としてＰＣＩ−Ｅｘｐｒｅｓｓバス上で構成されず動作しない個々のアクセラレータ機能ユニット（ＡＦＵ）に関連付けるために用いられる。
【００１７】
本発明の特徴によれば、ＰＣＩ−Ｅｘｐｒｅｓｓバスをサポートし、コヒーレント・アクセラレータを全体として管理するハイパーバイザまたは他のシステム構成および管理ソフトウェアまたはファームウェアは、そのそれぞれのＡＦＵの動作を復元するためにいずれか１つのＯＳも終了することを必要とせずに、ＡＦＵが共通のＰＣＩ−Ｅｘｐｒｅｓｓバス上のエンドポイント機能を共有した状態で、ＰＳＬまたはＡＦＵに関わるエラーを検出し回復する。
【００１８】
本発明の特徴によれば、ハイパーバイザまたは他のシステム構成および管理ソフトウェアまたはファームウェアは、ＰＣＩ−Ｅｘｐｒｅｓｓバスをサポートして、ＡＦＵをＰＨＢ分離機能部に関連付ける。
【００１９】
本発明は、上記その他の目的および利点と共に、図面に示される本発明の好ましい実施形態についての以下の詳細な説明から最も良く理解され得る。
【図面の簡単な説明】
【００２０】
【図１】好ましい実施形態による、単一のＢＤＦ（バス／デバイス／機能）を有する入力／出力（ＩＯ）アダプタにおける仮想化のためのコヒーレント・アクセラレータ機能分離を実施するための例示のシステムを示す図である。
【図２】好ましい実施形態による、複数のＢＤＦを有する入力／出力（ＩＯ）アダプタにおける仮想化のための強化型コヒーレント・アクセラレータ機能分離を実施するための他の例示のシステムを示す図である。
【図３】好ましい実施形態による、図１および図２の入力／出力（ＩＯ）アダプタにおける仮想化のためのコヒーレント・アクセラレータ機能分離を実施するための例示の動作的特徴を、既存技術との比較と共に示す図である。
【図４】好ましい実施形態による、図１の入力／出力（ＩＯ）アダプタにおける仮想化のためのコヒーレント・アクセラレータ機能分離を実施するための例示の動作的特徴を示す図である。
【図５】好ましい実施形態による、図２の入力／出力（ＩＯ）アダプタにおける仮想化のためのコヒーレント・アクセラレータ機能分離を実施するための例示の動作的特徴を示す図である。
【図６】好ましい実施形態によるコヒーレント・アクセラレータ機能分離を実施するための、図１および２のシステムの例示のシステム動作を示すフローチャートである。
【図７】好ましい実施形態によるコヒーレント・アクセラレータ機能分離を実施するための、図１および２のシステムの例示のシステム動作を示すフローチャートである。
【図８】好ましい実施形態によるコヒーレント・アクセラレータ機能分離を実施するための、図１および２のシステムの例示のシステム動作を示すフローチャートである。
【図９】好ましい実施形態によるコンピュータ・プログラム製品を示すブロック図である。
【発明を実施するための形態】
【００２１】
以下の本発明の実施形態の詳細な説明では、それによって本発明が実施され得る例示の実施形態を示す、添付の図面が参照される。本発明の範囲から逸脱せずに、他の実施形態が利用され、構造的変更がなされ得ることが理解されるべきである。
【００２２】
本明細書で用いられる用語は、特定の実施形態を説明するためのみのものであり、本発明を限定するものではない。本明細書で用いられる単数形「ａ」、「ａｎ」および「ｔｈｅ」は、文脈が異なる解釈を明らかに示す場合を除き、複数形も含むものである。さらに本明細書で用いられるときは、用語「備える（ｃｏｍｐｒｉｓｅｓ）」または「備える（ｃｏｍｐｒｉｓｉｎｇ）」あるいはその両方は、記載された特徴、整数値、ステップ、動作、要素、または構成要素あるいはそれらの組み合わせの存在を指定するものであるが、１つまたは複数の他の特徴、整数値、ステップ、動作、要素、構成要素、またはそれらのグループあるいはそれらの組み合わせの存在または追加を排除するものではないことが理解されるであろう。
【００２３】
本発明の特徴によれば、入力／出力（ＩＯ）アダプタにおける仮想化のためのコヒーレント・アクセラレータ機能分離を実施するための方法、システム、およびコンピュータ・プログラム製品が提供される。
【００２４】
次に図面を参照すると図１には、好ましい実施形態による、入力／出力（ＩＯ）アダプタにおける仮想化のためのコヒーレント・アクセラレータ機能分離を実施するための、参照文字１００によって全体的に示される例示のコンピュータ・システムが示される。コンピュータ・システム１００は、システム・バス１０６によってメモリ１０８、それぞれのホスト・オペレーティング・システム（ＯＳ）１１０、１１２、およびハイパーバイザ・アダプタ・ドライバ１１４に結合されたプロセッサ＃１、１０２からプロセッサ＃Ｎ、１０４、または中央処理装置（ＣＰＵ）１０２、１０４などの１つまたは複数のプロセッサを含む。ハイパーバイザ・アダプタ・ドライバ１１４は、システム・ファームウェアの一部であり、各オペレーティング・システム１１０、１１２へのリソースの割り振りを管理する。
【００２５】
コンピュータ・システム１００は、単一のオペレーティング・システム・イメージの範囲内において、そのオペレーティング・システム（ＯＳ）が論理的に分割されたサーバ上の複数のうちの１つであるか、分割されていないシステムの唯一のオペレーティング・システムであるかに拘わらず、利用され得る。コンピュータ・システム１００は、コヒーレント・アクセラレータが、論理的に分割されたシステム上の複数のオペレーティング・システム（ＯＳ）イメージにわたって、共有されるまたは仮想化されることを可能にする。
【００２６】
コンピュータ・システム１００は、好ましい実施形態による、コヒーレント・アクセラレータＰＥ（分割可能エンドポイント）サポートをもたらすＩ／Ｏハブ、プロセッサ・ホスト・ブリッジまたはＰＣＩＥホスト・ブリッジ（ＰＨＢ）１２０を含む。ＰＨＢ１２０は、ハイパーバイザ・アダプタ・ドライバ１１４に結合されたアダプタＰＥ１２２、および各それぞれのホスト・オペレーティング・システム（ＯＳ）１１０、１１２に結合されたＡＦＵ  ＰＥ１２４を含む。ＰＨＢ１２０は、ＡＦＵ  ＰＥ１２４によりもたらされる分離機能部１２６を含む。
【００２７】
コンピュータ・システム１００は、トランザクション・レイヤ機能を有するコヒーレント・アクセラレータをもたらす入力／出力（Ｉ／Ｏ）アダプタ１３０を含み、これは例えばＰＣＩサービス・レイヤ（ＰＳＬ）１３２、およびＰＳＬ１３２と共にＡＦＵ１〜３、１３４、１３６、１３８を含み、各ＡＦＵ１〜３、１３４、１３６、１３８は、アダプタＰＥ１２２に結合される。ＡＦＵ１〜３、１３４、１３６、１３８は、特定のアプリケーション・タスクを行うアクセラレータ内の論理ユニットである。
【００２８】
本発明の特徴によれば、ＰＣＩ−Ｅｘｐｒｅｓｓ  ＰＨＢ１２０内の分離機能部１２６は特に、ＰＣＩ−Ｅｘｐｒｅｓｓエンドポイント機能の使用を必要とせずにエラー分離を含んで用いられる。本発明の方法は、個々のＡＦＵ、集合体としてのＡＦＵ、およびＰＳＬに関わる、ＰＣＩ−Ｅｘｐｒｅｓｓエラー条件を検出し、それから回復する。オペレーティング・システムおよびアプリケーションは、エラー回復方法との相互作用を通して機能し続けることが可能になり、それによりオペレーティング・システムの再起動は必要なくなり、およびそれにより個々のオペレーティング・システムは、アクセラレータ・デバイスが単一のＰＣＩ−Ｅｘｐｒｅｓｓエンドポイント機能において共有されていても、それらのそれぞれのＡＦＵの動作を個々に回復することができる。
【００２９】
特定の実施形態では、タスクを行う要求およびそのタスクを完了した結果は、ＯＳ１１０またはＯＳ１１２内で実行しているアプリケーションと、それぞれのＡＦＵ１〜３、１３４、１３６、１３８との間で、システム・メモリ１０８、ＡＦＵ、または両方の組み合わせ内でコマンド／応答キューを用いて交換される。個々のＡＦＵ１〜３、１３４、１３６、１３８のそれぞれは、ＰＣＩ−Ｅｘｐｒｅｓｓメモリ・サイクルに応答しまたはそれを生じさせ、ＰＳＬ１３２は、それらのメモリ・リード／ライト動作に対応するＰＣＩ−Ｅｘｐｒｅｓｓトランザクションを行う。しかしＡＦＵ１〜３、１３４、１３６、１３８は、それら自体がＰＣＩ−Ｅｘｐｒｅｓｓエンドポイントデバイスまたは機能ではなく、オペレーティング・システムによってＰＣＩ−Ｅｘｐｒｅｓｓデバイスとして認識され得ない。代わりにＡＦＵは、特定のタイプのメモリ・マップＡＦＵデバイスとして、および場合によってはそれらがそれぞれのオペレーティング・システム内で、ＰＣＩ−Ｅｘｐｒｅｓｓバスまたは機能に全く関連付けられないやり方で、ＯＳ１１０またはＯＳ１１２によって認識され動作する。
【００３０】
コンピュータ・システム１００は、集合的にすべてのＡＦＵ１〜３、１３４、１３６、１３８に関連付けられた追加のＡＦＵ  ＰＥ１２４により、コヒーレント・アクセラレータ・アダプタ機能を可能にする。ホストＯＳ  ＭＭＩＯ活動は、ＡＦＵ  ＰＥ１２４によって統率される。ＡＦＵ  ＰＥ１２４は、ホストＯＳ１１０、１１２がアダプタ１３０にアクセスすることを阻止されるように凍結され得る。ＡＦＵ  ＰＥ１２４は、ホストＯＳユーザがアダプタ１３０に影響する可能性なしに、ハイパーバイザ１１４が回復またはメンテナンス処置を完了することを可能にする。アダプタ１３０のトランザクションは、ＰＳＬ１３２に関連付けられたもの、およびＡＦＵ１〜３、１３４、１３６、１３８に関連付けられたものの両方とも、アダプタＰＥ１２２を利用する。アダプタＰＥ１２２からの障害は、コヒーレント・アクセラレータ・アダプタ１３０を用いるすべてのＯＳ分割に依然として影響する。
【００３１】
コンピュータ・システム１００は、本発明を理解するのに十分な簡略化された形で示される。示されるコンピュータ・システム１００は、アーキテクチャ上のまたは機能的な制限を示唆するものではない。本発明は、様々なハードウェア実装形態およびシステム、ならびに様々な他の内部ハードウェア・デバイスにより用いられ得る。
【００３２】
図２を参照すると、好ましい実施形態による、複数のＢＤＦを有する入力／出力（ＩＯ）アダプタ２３０における仮想化のためのコヒーレント・アクセラレータ機能分離を実施するための、参照文字２００によって全体的に示される、他の例示のシステムが示される。コンピュータ・システム２００は同様に、システム・バス１０６によってメモリ１０８、それぞれのホスト・オペレーティング・システム（ＯＳ）１１０、１１２、およびハイパーバイザ・アダプタ・ドライバ１１４に結合されたプロセッサ＃１、１０２からプロセッサ＃Ｎ、１０４、または中央処理装置（ＣＰＵ）１０２、１０４などの１つまたは複数のプロセッサを含む。
【００３３】
コンピュータ・システム２００は、好ましい実施形態による、コヒーレント・アクセラレータＰＥ（分割可能エンドポイント）サポートをもたらすＩ／Ｏハブ、プロセッサ・ホスト・ブリッジまたはＰＣＩＥホスト・ブリッジ（ＰＨＢ）２２０を含む。示されるようにＰＨＢ２２０は、ハイパーバイザ・アダプタ・ドライバ１１４に結合されたアダプタＰＥ２２２、および複数のＡＦＵ  ＰＥ１〜３、２２４、２２６、２２８を含み、ＡＦＵ  ＰＥ１〜２、２２４、２２６はホストＯＳ１１０に結合され、ＡＦＵ  ＰＥ３、２２８はホストＯＳ１１２に結合される。ＰＨＢ２２０は、ＡＦＵ  ＰＥ１〜３、２２４、２２６、２２８によりもたらされる分離機能部２２６を含む。
【００３４】
コンピュータ・システム２００は、ＰＣＩＥエンドポイント機能と一貫性のあるすべての機能および機能部をもたらす、例えばＰＣＩサービス・レイヤ（ＰＳＬ）２３２を含むトランザクション・レイヤ機能を有するコヒーレント・アクセラレータをもたらす入力／出力（Ｉ／Ｏ）アダプタ２３０、および複数のＡＦＵ１〜３、２３４、２３６、２３８を含み、ＰＳＬ２３２はアダプタＰＥ２２２に結合され、各ＡＦＵ１〜３、２３４、２３６、２３８はそれぞれのＡＦＵ  ＰＥ１〜３、２２４、２２６、２２８に結合される。
【００３５】
コンピュータ・システム２００は、それぞれがそれぞれのＡＦＵ１〜３、２３４、２３６、２３８に関連付けられた追加のＡＦＵ  ＰＥ１〜３、２２４、２２６、２２８により、コヒーレント・アクセラレータ・アダプタの強化型機能を可能にする。アダプタ２３０がＤＭＡトランザクションを行うときは、それは例えばオルターナティブ・ルーティングＩＤインタープリテーション（ＡＲＩ）技法を用いて、トランザクションを行うＡＦＵ１〜３、２３４、２３６、２３８のそれぞれ１つをＤＭＡパケットに符号化する。これは、依然として単一のコンフィギュレーション空間を有する単一のＰＣＩ機能を実施するだけで、ＡＦＵ１〜３、２３４、２３６、２３８のうちの単一のものに至るまでの故障分離を可能にする。これはアダプタ２３０上のＡＦＵの数が増加するのに従って、ますます重要で有益な特徴となる。
【００３６】
ホストＯＳ  ＭＭＩＯ活動は、それぞれのＡＦＵ  ＰＥ１〜３、２２４、２２６、２２８によって統率される。各それぞれのＡＦＵ  ＰＥ１〜３、２２４、２２６、２２８は、ホストＯＳ１１０、１１２がアダプタ２３０にアクセスすることを阻止されるように、凍結され得るので有利である。それぞれのＡＦＵ  ＰＥ１〜３、２２４、２２６、２２８のそれぞれは、ホストＯＳユーザがアダプタ２３０に影響する可能性なしに、ハイパーバイザ１１４が回復またはメンテナンス処置を完了することを可能にする。アダプタ２３０のＰＳＬ１３２に関連付けられたトランザクションは、アダプタＰＥ２２２を利用する。アダプタＰＥ２２２からの障害は、コヒーレント・アクセラレータ・アダプタ２３０を用いるすべてのＯＳ分割に依然として影響する。
【００３７】
本発明の特徴によれば、ＰＣＩ−Ｅｘｐｒｅｓｓ  ＰＨＢ１２０装置は、メモリ・マップＩＯ（ＭＭＩＯ）、ダイレクト・メモリ・アクセス（ＤＭＡ）、メッセージ・シグナル割り込み（ＭＳＩ）アドレス範囲をＰＣＩ−Ｅｘｐｒｅｓｓ  ＲＩＤ（相対識別子）に関連付けて、これらのアドレス範囲を、そうでなければエンドポイント機能としてＰＣＩ−Ｅｘｐｒｅｓｓバス上で構成されず動作しない個々のアクセラレータ機能ユニットＡＦＵ１〜３、２３４、２３６、２３８のそれぞれに関連付けるために用いられる。
【００３８】
本発明の特徴によれば、ハイパーバイザ・アダプタ・ドライバ１１４は、ＰＣＩ−Ｅｘｐｒｅｓｓインターフェースをサポートして、ＡＦＵ１〜３、２３４、２３６、２３８のそれぞれを、ＰＨＢ分離機能部２２６に関連付ける。ハイパーバイザ・アダプタ・ドライバ１１４は、コヒーレント・アクセラレータを全体として管理し、そのそれぞれのＡＦＵの動作を復元するためにいずれか１つのＯＳ１１０、１１２を終了する必要なしに、ＰＳＬ２３２またはＡＦＵ１〜３、２３４、２３６、２３８に関わるエラーを検出し回復し、ＡＦＵはＰＣＩ−Ｅｘｐｒｅｓｓバス上の共通のＰＣＩサービス・レイヤ（ＰＳＬ）エンドポイント機能を共有する。ハイパーバイザ・アダプタ・ドライバ１１４は、ＰＣＩ−Ｅｘｐｒｅｓｓバスをサポートして、ＡＦＵをＰＨＢ分離機能部２２６に関係付ける。
【００３９】
本発明の特徴によれば、コヒーレント・アクセラレータＲＩＤのＰＳＬ２３２は、ＭＭＩＯ、ＤＭＡ、ＭＳＩ、およびＰＣＩ−Ｅｘｐｒｅｓｓ  ＰＨＢ２２０のエラー状態機能部２２６に関連付けられ、ＰＣＩ−Ｅｘｐｒｅｓｓ  ＲＩＤは、ＡＦＵの集合ＡＦＵ１〜３、２３４、２３６、２３８に関連付けられ、さらにそれぞれのＰＳＬ２３２の後に位置するＡＦＵ１〜３、２３４、２３６、２３８を、ＡＦＵ  ＲＩＤ自体が個々のＰＣＩ−ＥｘｐｒｅｓｓエンドポイントまたはＳＲＩＯＶ仮想機能となりこのような機能のすべての機能部および挙動を有することなく、ＰＣＩ−Ｅｘｐｒｅｓｓ  ＰＨＢ２２０に関連付ける。
【００４０】
本発明の特徴によれば、ＡＦＵ１〜３、２３４、２３６、２３８の各ＡＦＵおよびプロセッサ１０２、１０４およびメモリ１０８の間のＰＣＩ−Ｅｘｐｒｅｓｓ相互接続を用いるときは、プロセッサおよびＡＦＵは、ＰＣＩ−Ｅｘｐｒｅｓｓメモリ・リード／ライト動作を利用する。ＡＦＵ１〜３、２３４、２３６、２３８のＡＦＵは、ＰＣＩ−Ｅｘｐｒｅｓｓメモリ・リード／ライト動作時にそのＡＦＵを識別するために、ＰＣＩ−ＥｘｐｒｅｓｓリクエスタＩＤ（ＲＩＤ）に関連付けられる。
【００４１】
図３を参照すると、ＰＣＩＥ  ＳＲＩＯＶの機能部または動作に依存しない、好ましい実施形態による、図１のシステム１００での入力／出力（ＩＯ）アダプタ１３０、および図２のシステム２００での入力／出力（ＩＯ）アダプタ２３０における、仮想化のためのコヒーレント・アクセラレータ機能分離を実施するための例示の動作的特徴が、既存技術との比較と共に参照文字３００によって全体的に示される。
【００４２】
図１のシステム１００でのＩＯアダプタ１３０、および図２のシステム２００でのＩＯアダプタ２３０と共に、知られている既存技術の比較のために、複数の機能３０２が示される。１つのエンドポイント機能３０４は、知られている既存技術、システム１００でのＩＯアダプタ１３０、およびシステム２００でのＩＯアダプタ２３０に含まれる。単一のコンフィギュレーション空間領域３０６は、知られている既存技術、システム１００でのＩＯアダプタ１３０、およびシステム２００でのＩＯアダプタ２３０に含まれる。追加のＰＣＩＥ  ＲＩＤ３０８は、システム２００でのＩＯアダプタ２３０に含まれ、知られている既存技術およびシステム１００でのＩＯアダプタ１３０には含まれない。単一のアダプタＰＥ３１０は、知られている既存技術、システム１００でのＩＯアダプタ１３０、およびシステム２００でのＩＯアダプタ２３０に含まれる。１つのＡＦＵ  ＰＥ３１２がシステム１００でのＩＯアダプタ１３０に含まれ、ＡＦＵごとに１つのＡＦＵ  ＰＥ３１２がシステム２００でのＩＯアダプタ２３０に含まれ、知られている既存技術に含まれるＡＦＵ  ＰＥ３１２はない。エラー回復３１４は、知られている既存技術では不可能であり、ホストＯＳ再起動が必要である。エラー回復３１４は、システム１００でのＩＯアダプタ１３０では可能であり、すべてのホストＯＳインスタンスが影響される。改善されたエラー回復３１４は、システム２００でのＩＯアダプタ２３０では可能であり、よりきめが細かく、単一のホストＯＳインスタンスが影響される。
【００４３】
図４を参照すると、ＰＣＩＥ  ＳＲＩＯＶの機能部または動作に依存しない、好ましい実施形態による図１のシステム１００での入力／出力（ＩＯ）アダプタ１３０における仮想化のためのコヒーレント・アクセラレータ機能分離を実施するための、参照文字４００によって全体的に示される例示の動作的特徴が示される。複数のトラフィック・タイプ４０２が、それぞれの用いられるＰＥ４０４、エラー処置４０６、およびエラーの影響４０８と共に示される。ハイパーバイザ・アダプタ・ドライバによって起動されたＭＭＩＯのトラフィック・タイプ４０２では、用いられるＰＥ４０４はアダプタＰＥであり、エラー処置４０６はＰＨＢ分離機能部１２６に、アダプタＰＥに加えてＡＦＵ  ＰＥを凍結させ、エラーの影響４０８はハイパーバイザ・アダプタ・ドライバおよびすべてのホストＯＳインスタンスを含む。特定のＡＦＵｎに対してホストＯＳによって起動されたＭＭＩＯのトラフィック・タイプ４０２では、用いられるＰＥ４０４はＡＦＵ  ＰＥであり、エラー処置４０６はＰＨＢ分離機能部１２６にＡＦＵ  ＰＥを凍結させ、エラーの影響４０８はすべてのホストＯＳインスタンスを含む。アダプタＰＳＬによって起動されたＤＭＡのトラフィック・タイプ４０２では、用いられるＰＥ４０４はアダプタＰＥであり、エラー処置４０６はＰＨＢ分離機能部１２６にアダプタＰＥおよびＡＦＵ  ＰＥを凍結させ、エラーの影響４０８はハイパーバイザ・アダプタ・ドライバおよびすべてのホストＯＳインスタンスを含む。特定のＡＦＵｎによって起動されたＤＭＡのトラフィック・タイプ４０２では、用いられるＰＥ４０４はアダプタＰＥであり、エラー４０６はアダプタＰＥおよびＡＦＵ  ＰＥを凍結し、エラーの影響４０８はハイパーバイザ・アダプタ・ドライバおよびすべてのホストＯＳインスタンスを含む。
【００４４】
図５を参照すると、好ましい実施形態による図２のシステム２００での入力／出力（ＩＯ）アダプタ２３０における仮想化のためのコヒーレント・アクセラレータ機能分離を実施するための、参照文字５００によって全体的に示される例示の動作的特徴が示される。複数のトラフィック・タイプ５０２が、それぞれの用いられるＰＥ５０４、エラー処置５０６、およびエラーの影響５０８と共に示される。ハイパーバイザ・アダプタ・ドライバによって起動されたＭＭＩＯのトラフィック・タイプ５０２では、用いられるＰＥ５０４はアダプタＰＥであり、エラー処置５０６はＰＨＢ分離機能部２２６に、アダプタＰＥに加えてＡＦＵ  ＰＥを凍結させ、エラーの影響５０８はハイパーバイザ・アダプタ・ドライバおよびすべてのホストＯＳインスタンスを含む。特定のＡＦＵｎに対してホストＯＳによって起動されたＭＭＩＯのトラフィック・タイプ５０２では、用いられるＰＥ５０４は特定のＡＦＵ  ＰＥｎであり、エラー処置５０６はＰＨＢ分離機能部２２６にＡＦＵ  ＰＥｎを凍結させ、エラーの影響５０８は単一のホストＯＳインスタンスを含む。アダプタＰＳＬによって起動されたＤＭＡのトラフィック・タイプ５０２では、用いられるＰＥ５０４はアダプタＰＥであり、エラー処置５０６はＰＨＢ分離機能部２２６にアダプタＰＥおよびＡＦＵ  ＰＥを凍結させ、エラーの影響５０８はハイパーバイザ・アダプタ・ドライバおよびすべてのホストＯＳインスタンスを含む。特定のＡＦＵｎによって起動されたＤＭＡのトラフィック・タイプ５０２では、用いられるＰＥ５０４はＡＦＵ  ＰＥｎであり、エラー処置５０６はＰＨＢ分離機能部２２６にＡＦＵ  ＰＥｎを凍結させ、エラーの影響５０８は単一のホストＯＳインスタンスを含む。
【００４５】
図６、７、および８は、好ましい実施形態によるコヒーレント・アクセラレータ機能分離を実施するための、図１および２のシステムの例示のシステム動作を示すフローチャートである。
【００４６】
図６を参照すると、図１および２のシステムの例示の高レベルシステム動作が示され、ブロック６００に示されるように、ＰＨＢまたはルート・コンプレックス・ハードウェアまたはハイパーバイザ・アダプタ・ドライバが障害を検出し、アダプタＰＥを凍結することにより開始される。ブロック６０２に示されるように、アダプタＰＥに関連付けられた他のＰＥは、すべてのＡＦＵ  ＰＥを含み凍結される。ＰＨＢハードウェアが障害を検出した場合は、ブロック６０４に示されるようにハードウェアは、凍結されたＰＥについてハイパーバイザに知らせる。ハイパーバイザはブロック６０６に示されるように、各ＡＦＵに対するアダプタ・ドライバおよびホストＯＳの両方を含み、凍結されたＰＥについてＰＥ所有者に知らせる。アダプタ・ドライバおよび各ホストＯＳは、ブロック６０８に示されるように非同期的に回復を開始する。
【００４７】
図７を参照すると、図１および２のシステムの例示のハイパーバイザ・ドライバ動作が示され、ブロック７００に示されるようにアダプタ・ドライバがエラーの通知を受け取ったときに開始される。アダプタ・ドライバは、ブロック７０２に示されるようにＰＥ回復を開始する。アダプタ・ドライバは、ブロック７０４に示されるように、他のＰＥは凍結されたままで、アダプタＰＥを凍結解除し、エラー・データを収集し、回復を開始する。アダプタ・ドライバは、ブロック７０６に示されるようにアダプタを回復し、アダプタをデフォルト状態に復元する。アダプタ・ドライバは、ブロック７０８に示されるようにアダプタにＡＦＵ構成を行う。アダプタ・ドライバは、ブロック７１０に示されるようにエラーをロギングし、アダプタ・ドライバによってロギングされたエラーに対するＰＣＩエラー・ログ識別子（ＰＬＩＤ）をハイパーバイザに通信する。アダプタ・ドライバは、ブロック７１２に示されるようにＡＦＵ  ＰＥを凍結解除する許可をハイパーバイザに与え、正常な動作を再開する。
【００４８】
図８を参照すると、図１および２のシステムの例示のホストＯＳ動作が示され、ブロック８００に示されるように、ホストＯＳがＡＦＵエラーの通知を受け取ることにより開始される。ホストＯＳは、ブロック８０２に示されるように回復を開始する。ホストＯＳは、ブロック８０４に示されるようにＡＦＵ  ＰＥを凍結解除するように試みてループし、凍結解除はアダプタ・ドライバが回復を完了するまで成功しない。ブロック８０６に示されるようにアダプタ・ドライバは、回復を完了する。次いでホストＯＳは、ブロック８０８に示されるようにＡＦＵ  ＰＥを凍結解除し、エラー・データを取り出し、回復を開始する。ホストＯＳは、ブロック８１０に示されるように回復を完了し、エラー・データをロギングする。ブロック８１２に示されるように、正常なＡＦＵ動作が再開される。
【００４９】
次に図９を参照すると、本発明の製品またはコンピュータ・プログラム製品９００が示される。コンピュータ・プログラム製品９００は、フロッピー（Ｒ）・ディスク、光学的読み出しコンパクト・ディスクまたはＣＤ−ＲＯＭの形での大容量読み出し専用メモリ、テープなどの記録媒体９０２を含む、非一時的コンピュータ可読記憶媒体上に有形に具体化され、または他の同様なコンピュータ・プログラム製品である。記録媒体９０２は、図１のシステム１００または図２のシステム２００での好ましい実施形態の、入力／出力（ＩＯ）アダプタ１３０、２３０における仮想化のためのコヒーレント・アクセラレータ機能分離を実施するための方法を実行するために、プログラム手段９０４、９０６、９０８、および９１０を媒体９０２上に記憶する。
【００５０】
記録されたプログラム手段９０４、９０６、９０８、および９１０によって定義される一連のプログラム命令、または１つまたは複数の相互に関係のあるモジュールの論理アセンブリは、好ましい実施形態の入力／出力（ＩＯ）アダプタ１３０、２３０における仮想化のためのコヒーレント・アクセラレータ機能分離を実施するためのコンピュータ・システム９００に指示する。
【００５１】
本発明は図面に示された本発明の実施形態の詳細を参照して述べられたが、これらの詳細は、添付の特許請求の範囲で特許請求される本発明の範囲を限定するものではない。
【図１】
0006706209.tif 000002
【図２】
0006706209.tif 000003
【図３】
0006706209.tif 000004
【図４】
0006706209.tif 000005
【図５】
0006706209.tif 000006
【図６】
0006706209.tif 000007
【図７】
0006706209.tif 000008
【図８】
0006706209.tif 000009
【図９】
0006706209.tif 000010