(57)【要約】【課題】２つのサーバ仮想化レベルを提供するための方法、システム、プログラム、およびコンピュータ・データ構造を提供する。【解決手段】第１のハイパーバイザが、複数の論理区画がリソースのセットを共有できるようにして、第１の仮想化レベルを提供する。第２のハイパーバイザが、複数の独立した仮想マシンが単一の論理区画に割り当てられるリソースを共有できるようにして、第２の仮想化レベルを提供する。前記単一の論理区画内のすべての仮想マシンについてのすべてのイベントは、当該単一の論理区画についての共有されたリソースからイベント通知を受信するための、区画が所有する単一のイベント・キューにグループ化される。割り込み要求が、区画が所有するイベント・キューからグループ化されたイベントに対して信号伝達されて、グループ化されたイベントは、マシンによって、区画が所有するイベント・キューから、仮想マシン・ベースで割り当てられる個別の仮想化されたイベント・キューへと多重分離される。【選択図】図２
2007310884.tif 000002
【特許請求の範囲】
【請求項１】
２つのサーバ仮想化レベルを提供する方法であって、
複数の論理区画がリソースのセットを共有できるようにする第１のハイパーバイザによって、第１の仮想化レベルを提供するステップと、
複数の独立した仮想マシンが単一の論理区画に割り当てられた前記リソースを共有できるようにする第２のハイパーバイザによって、第２の仮想化レベルを提供するステップと、
前記単一の論理区画内の前記仮想マシンのすべてについてのすべてのイベントを、当該単一の論理区画についての前記共有されたリソースからイベント通知を受信するための単一の区画が有するイベント・キューにグループ化するステップと、
前記区画が有するイベント・キューからグループ化されたイベントを多重分離して、仮想マシン毎に割り当てられる個別の仮想化されたイベント・キューにするために、前記区画が有するイベント・キューから前記グループ化されたイベントについての割り込みに対する要求を信号伝達するステップと、
を含む、方法。
【請求項２】
前記区画が有するイベント・キュー内のイベントを、完了イベントと非完了イベントとにグループ化するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記イベント・キュー内のイベントを、前記論理区画内に記憶されたアダプタ・サマリ・バイトに関連付けるステップをさらに含む、請求項２に記載の方法。
【請求項４】
前記イベント・キュー内のイベントを前記サーバのメイン・メモリのハードウェア・ストレージ領域内に記憶された固有のプライマリ・サマリ・バイトに関連付けるステップをさらに含む、請求項２に記載の方法。
【請求項５】
前記イベント・キュー内のエントリをイベントを有するゲストに対して転送するステップと、
前記ゲストによって構成された前記アダプタ・サマリ・バイトの後続の前記ゲストの前記関連するアダプタ・サマリ・バイトを設定するステップと、
前記ゲストがそのような割り込みを要求した場合に、ゲスト・アダプタ割り込みを保留にするステップと、
をさらに含む、請求項３に記載の方法。
【請求項６】
２つのサーバ仮想化レベルを提供するシステムであって、
複数の論理区画がリソースのセットを共有できるようにする第１の仮想化レベルを提供する第１のハイパーバイザと、
複数の独立した仮想マシンが単一の論理区画に割り当てられた前記リソースを共有できるようにする第２の仮想化レベルを提供する第２のハイパーバイザと、
前記単一の論理区画内の前記仮想マシンのすべてについてのすべてのイベントをグループ化して、当該単一の論理区画についての前記共有されたリソースからイベント通知を受信するための、単一の論理区画内の単一の区画が有するイベント・キューと、
前記区画が有するイベント・キューからグループ化されたイベントを多重分離して、仮想マシン毎に割り当てられる個別の仮想化されたイベント・キューにするために、前記区画が有するイベント・キューから前記グループ化されたイベントについての割り込みに対する要求を生成する割り込み信号生成器と、
を備える、システム。
【請求項７】
イベントを完了イベントと非完了イベントとにグループ化するための、前記区画が有するイベント・キュー内の完了および非完了キューをさらに備える、請求項６に記載のシステム。
【請求項８】
前記イベント・キュー内のイベントに関連した前記論理区画内に記憶されたアダプタ・サマリ・バイトをさらに備える、請求項７に記載のシステム。
【請求項９】
前記イベント・キュー内のイベントに関連した前記サーバのメイン・メモリのハードウェア・ストレージ領域内に記憶された固有のプライマリ・サマリ・バイトをさらに備える、請求項７に記載のシステム。
【請求項１０】
前記イベント・キュー内のエントリをイベントを有するゲストに対して転送するための割り込みの前記要求に応答する転送機能と、
前記ゲストによって構成された前記アダプタ・サマリ・バイトの後続の前記ゲストの前記関連するアダプタ・サマリ・バイトを設定する設定機能と、
前記ゲストがそのような割り込みを要求した場合に、ゲスト・アダプタ割り込みを保留にする割り込み機能と、
をさらに備える、請求項８に記載のシステム。
【請求項１１】
２つのサーバ仮想化レベルを提供するプログラムであって、
複数の論理区画がリソースのセットを共有できるようにする第１のハイパーバイザによって、第１の仮想化レベルを提供するステップと、
複数の独立した仮想マシンが単一の論理区画に割り当てられた前記リソースを共有できるようにする第２のハイパーバイザによって、第２の仮想化レベルを提供するステップと、
前記単一の論理区画内の前記仮想マシンのすべてについてのすべてのイベントを、当該単一の論理区画についての前記共有されたリソースからイベント通知を受信するための単一の区画が有するイベント・キューにグループ化するステップと、
前記区画が有するイベント・キューからグループ化されたイベントを多重分離して、仮想マシン毎に割り当てられる個別の仮想化されたイベント・キューにするために、前記区画が有するイベント・キューから前記グループ化されたイベントについての割り込みに対する要求を信号伝達するステップと、
をコンピュータに実行させる、プログラム
【請求項１２】
前記方法は、前記区画が有するイベント・キュー内のイベントを、完了イベントと非完了イベントとにグループ化するステップをさらに含む、請求項１１に記載のプログラム。
【請求項１３】
前記方法は、前記イベント・キュー内のイベントを、前記論理区画内に記憶されたアダプタ・サマリ・バイトに関連付けるステップをさらに含む、請求項１２に記載のプログラム。
【請求項１４】
前記方法は、前記イベント・キュー内のイベントを前記サーバのメイン・メモリのハードウェア・ストレージ領域内に記憶された固有のプライマリ・サマリ・バイトに関連付けるステップをさらに含む、請求項１２に記載のプログラム。
【請求項１５】
前記方法は、
割り込みの前記要求に応答して、前記イベント・キュー内のエントリをイベントを有するゲストに対して転送するステップと、
前記ゲストによって構成された前記アダプタ・サマリ・バイトの後続の前記ゲストの前記関連するアダプタ・サマリ・バイトを設定するステップと
前記ゲストがそのような割り込みを要求した場合には、ゲスト・アダプタ割り込みを保留にするステップと、
をさらに含む、請求項１３に記載のプログラム。
【請求項１６】
第１の仮想化レベルを提供する第１のハイパーバイザによって確立された、リソースのセットを共有するための複数の論理区画と、
第２の仮想化レベルを提供する第２のハイパーバイザによって単一の論理区画に割り当てられた、前記リソースのセットを共有するための複数の独立した仮想マシンと、
当該単一の論理区画についての前記共有されたリソースからイベント通知を受信することによって、前記単一の論理区画内の前記仮想マシンのすべてについてのすべてのイベントをグループ化するための、単一の区画が有するイベント・キューを備える、コンピュータ読み取り可能なデータ構造を記録するコンピュータ読み取り可能な媒体であって、
前記区画が有するイベント・キューからグループ化されたイベントを多重分離して、仮想マシン毎に割り当てられる個別の仮想化されたイベント・キューにするために、前記区画が有するイベント・キューから前記グループ化されたイベントについての割り込みに対する要求を信号伝達するために使用される、コンピュータ読み取り可能な媒体。
【請求項１７】
前記区画が有するイベント・キューは、完了イベントのための第１のタイプのキューと、非完了イベントのための第２のタイプのキューとに分割される、請求項１６に記載のコンピュータ読み取り可能な媒体。
【請求項１８】
前記データ構造が、前記イベント・キュー内のイベントに関連した、前記論理区画内に記憶されたアダプタ・サマリ・バイトをさらに備える、請求項１７に記載のコンピュータ読み取り可能な媒体。
【請求項１９】
前記データ構造が、前記イベント・キュー内のイベントに関連した、前記サーバのメイン・メモリのハードウェア・ストレージ領域内に記憶された固有のプライマリ・サマリ・バイトをさらに備える、請求項１６に記載のコンピュータ読み取り可能な媒体。
【請求項２０】
前記データ構造が、
前記イベントを有するゲストのイベント・キュー内のエントリであって、割り込みの前記要求に応答して前記ゲストに転送されるエントリと、
前記ゲストによって構成された前記アダプタ・サマリ・バイトの後続の前記ゲストの前記関連するアダプタ・サマリ・バイトと、
をさらに備える、請求項１８に記載のコンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理分割されたデータ処理システムにおいて割り込み要求を信号伝達することに関し、特に、論理分割されたデータ処理システム内の論理区画において実施される仮想マシンに対して割り込み要求を信号伝達するための第２の仮想化されたイベント通知レベルを提供することに関する。
【背景技術】
【０００２】
インフィニバンド規格は、ワーク・キュー対（ＱＰ）および完了キュー（ＣＱ）の概念を包含する。多数の論理区画および仮想マシン・リソースに対するスケーラビリティを拡張するために、キュー対および完了キューのリソースに関連したイベントの総計を記録するための、ホスト・チャンネル・アダプタ（ＨＣＡ）によって使用されるイベント・キュー（ＥＱ）が付与される。図１は、従来技術であるインフィニバンド・システム１０を示し、当該システムでは、複数のプロセッサ・ノード１００が、ファブリック・ネットワーク１０２を介して、例えばストレージ・サブシステム１０４と、ＲＡＩＤサブシステム１０６と、コンソール１０８と、ＳＣＳＩ装置を接続する複数の入出力シャーシ１１０と、イーサネット（登録商標）接続と、ファイバー・チャンネル（ＦＣ）ハブおよびファイバー・チャンネル装置と、グラフィックスおよびビデオ装置とに相互接続されている。ファブリック・ネットワーク１０２は、メッセージおよびデータがインフィニバンド・システム１０上をやり取りするように、複数のスイッチ１１２とルータ１１４とを含む。各プロセッサ・ノード１００は、１つ以上の中央処理装置（ＣＰＵ）１１６と、メモリ１１８と、ホスト・チャンネル・アダプタ（ＨＣＡ）１２０とを含む。インフィニバンド・システム１０およびホスト・チャンネル・アダプタ１２０は周知であり、インフィニバンド・トレード・アソシエーション（ＩｎｆｉｎｉＢａｎｄ  Ｔｒａｄｅ  Ａｓｓｏｃｉａｔｉｏｎ）によるインフィニバンド・アーキテクチャ規格、リリース１．０．ａ（２００１年）において説明されている。
【０００３】
ロジャー（Ｒｏｇｅｒ）他、「ＡＢＣｓ  ＯＦ  ｚ／ＯＳ  ＳＹＳＴＥＭ  ＰＲＯＧＲＡＭＭＩＮＧ  ＶＯＬＵＭＥ  １０」、ＩＢＭ  Ｒｅｄｂｏｏｋ，ＳＧ２４−６９９０−００（２００４年６月）は、論理区画（ＬＰＡＲ）の概念を開示する。
【０００４】
２００５年９月１３日発行の米国特許第６９４４８４７号、デサイ（Ｄｅｓａｉ）他、「ＶＩＲＴＵＡＬＩＺＡＴＩＯＮ  ＯＦ  ＩＮＰＵＴ／ＯＵＴＰＵＴ  ＤＥＶＩＣＥＳ  ＩＮ  Ａ  ＬＯＧＩＣＡＬＬＹ  ＰＡＲＴＩＴＩＯＮＥＤ  ＤＡＴＡ  ＰＲＯＣＥＳＳＩＮＧ  ＳＹＳＴＥＭ」は、論理分割されたデータ処理システムの複数の区画によって定期的に使用されるような仮想化された入出力装置の使用を、それらを任意のシステム区画によってハイパーバイザ層に対して呼び出し可能にすることによって同期させるハイパーバイザ層を開示する。
【０００５】
２００４年６月８日発行の米国特許第６７４８４６０号、ブライス・ジュニア（Ｂｒｉｃｅ，Ｊｒ．）他、「ＩＮＩＴＩＡＴＩＶＥ  ＰＡＳＳＩＮＧ  ＩＮ  ＡＮ  Ｉ／Ｏ  ＯＰＥＲＡＴＩＯＮ  ＷＩＴＨＯＵＴ  ＴＨＥ  ＯＶＥＲＨＥＡＤ  ＯＦ  ＡＮ  ＩＮＴＥＲＲＵＰＴ」は、主ストレージと１つ以上の装置との間でデータを送るために、入出力動作のための入出力要求を処理するためのプロセッサに対してイニシアティブを渡すことを開示する。
【０００６】
２００４年６月２２日発行の米国特許第６７５４７３８号、ブライス・ジュニア（Ｂｒｉｃｅ，Ｊｒ．）他、「ＬＯＷ  ＯＶＥＲＨＥＡＤ  Ｉ／Ｏ  ＩＮＴＥＲＲＵＰＴ」は、データ処理システムにおけるプロセッサによって主ストレージが制御された状態で、入出力動作において１つ以上の入出力装置からデータを送受信することを開示する。
【０００７】
２００５年４月１２日発行の米国特許第６８８９０２１号、イーストン（Ｅａｓｔｏｎ）他、「ＩＮＴＥＬＬＩＧＥＮＴ  ＩＮＴＥＲＲＵＰＴ  ＷＩＴＨ  ＨＹＰＥＲＶＩＳＯ  ＣＯＬＬＡＢＯＲＡＴＩＯＮ」は、入出力動作における入出力要求を処理するプロセッサと、データを記憶するためにプロセッサによって制御される主ストレージと、主ストレージに対してデータを送受信するための１つ以上の入出力装置とを有するデータ処理システムにおいてデータ転送を制御することを開示する。
【０００８】
２００１年１２月６日公開の米国特許出願公開第２００１／００４９７４１号、スキーン（Ｓｋｅｎｅ）他、「ＭＥＴＨＯＤ  ＡＮＤ  ＳＹＳＴＥＭ  ＦＯＲ  ＢＡＬＡＮＣＩＮＧ  ＬＯＡＤ  ＤＩＳＴＲＩＢＵＴＩＯＮ  ＯＮ  Ａ  ＷＩＤＥ  ＡＲＥＡ  ＮＥＴＷＯＲＫ」は、インターネットなどの広域通信網上に地理的に分散された別個のデータ・センターにおいてサーバ・アレイ・コントローラによって管理される仮想サーバ上の負荷のバランスをとるためのシステムおよび方法を開示する。
【０００９】
２００２年１１月２１日公開の米国特許出願公開第２００２／０１７３８６３号、イマダ（Ｉｍａｄａ）他、「ＶＩＲＴＵＡＬ  ＭＡＣＨＩＮＥ  ＳＹＳＴＥＭ  ＡＮＤ  ＶＩＲＴＵＡＬ  ＭＡＣＨＩＮＥ  ＣＯＮＴＲＯＬ  ＭＥＴＨＯＤ」は、サービス・プロセッサなどを使用せずにソフトウェアを適用することによる、サーバまたはＰＣに基づく仮想マシン・システムのためのユーザ・インターフェース機能を開示する。
【００１０】
２００３年７月３日公開の米国特許出願公開第２００３／０１２６２６５号、アジズ（Ａｚｉｚ）他、「ＲＥＱＵＥＳＴ  ＱＵＥＵＥ  ＭＡＮＡＧＥＭＥＮＴ」は、動的にサイズ変更された、高度にスケーラブルかつ利用可能なサーバ・ファームを管理するための方法および装置を開示する。
【００１１】
２００３年７月１７日公開の米国特許出願公開第２００３／０１３３４４９号、フィッツパトリック（Ｆｉｔｚｐａｔｒｉｃｋ）他、「ＦＡＳＴ  ＰＡＴＨ  ＲＯＵＴＩＮＧ  ＩＮ  Ａ  ＬＡＲＧＥ‐ＳＣＡＬＥ  ＶＩＲＴＵＡＬ  ＳＥＲＶＥＲ  ＣＯＭＰＵＴＩＮＧ  ＥＮＶＩＲＯＮＭＥＮＴ」は、複雑なコンピューティング環境におけるデータ転送を改善するための方法、システムおよびコンピュータ・プログラム製品を開示する。これは、仮想サーバのトラフィックをより効率的に処理できるようにする内部ルーティング拡張を規定することによって、データ転送レート全体を向上するものである。
【００１２】
２００３年８月４日公開の米国特許出願公開第２００３／０１５４２３６号、ダー（Ｄａｒ）他、「ＤＡＴＡＢＡＳＥ  ＳＷＩＴＣＨ  ＥＮＡＢＬＩＮＧ  Ａ  ＤＡＴＡＢＡＳＥ  ＡＲＥＡ  ＮＥＴＷＯＲＫ」は、典型的なＤＢＭＳクライアント‐サーバ構成に仕様を改善するための方法およびシステムを開示しており、標準的なデータベース・サーバおよび標準的なプロトコルを使用してアプリケーションをデータベースに対して動的およびトランスペアレントに接続することができる、ネットワークにおけるアプリケーションとデータベース・サーバとの間にあるデータベース・スイッチを含む。
【００１３】
２００４年７月２２日公開の米国特許出願公開第２００４／０１４３６６４号、ユサ（Ｕｓａ）他、「ＭＥＴＨＯＤ  ＦＯＲ  ＡＬＬＯＣＡＴＩＮＧ  ＣＯＭＰＵＴＥＲ  ＲＥＳＯＵＲＣＥ」は、コンピュータ・リソースを複数の仮想マシンＬＰＡＲに対して動的に再割り当てすることを開示しており、仮想マシンＬＰＡＲが近い将来リソース不足になることのないようにリソース割り当ての最適量を決定する。
【００１４】
２００４年８月５日公開の米国特許出願公開第２００４／０１５３６１４号、ビットナー（Ｂｉｔｎｅｒ）他、「ＴＡＰＥ  ＳＴＯＲＡＧＥ  ＥＭＵＬＡＴＩＯＮ  ＦＯＲ  ＯＰＥＮ  ＳＹＳＴＥＭＳ  ＥＮＶＩＲＯＮＭＥＮＴＳ」は、前端に互いに異なるオペレーティング・システムおよび／またはバックアップ・アプリケーションを有する複数の異機種バックアップ・ホストを接続可能で、後端にオープン・システム環境における１つ以上のディスク・ストレージ装置を接続可能なネットワーク上に常駐する仮想テープ・サーバを開示する。
【００１５】
２００４年１２月９日公開の米国特許出願公開第２００４／０２５０２５４号、フランク（Ｆｒａｎｋ）他、「ＶＩＲＴＵＡＬ  ＰＲＯＣＥＳＳＯＲ  ＭＥＴＨＯＤＳ  ＡＮＤ  ＡＰＰＡＲＡＴＵＳ  ＷＩＴＨ  ＵＮＩＦＩＥＤ  ＥＶＥＮ  ＮＯＴＩＦＩＣＡＴＩＯＮ  ＡＮＤ  ＣＯＮＳＵＭＥＲ‐ＰＲＯＤＵＣＥＲ  ＭＥＭＯＲＹ  ＯＰＥＲＡＴＩＯＮＳ」は、１つ以上のプロセッサ上で実行する１つ以上の仮想処理部を含む仮想プロセッサであって、各仮想理部は１つ以上の処理またはスレッドを実行する仮想プロセッサを開示する。
【００１６】
２００５年２月２４日公開の米国特許出願公開第２００５／００４４３０１号、バジレフスキー（Ｖａｓｉｌｅｖｓｋｙ）他、「ＭＥＴＨＯＤ  ＡＮＤ  ＡＰＰＡＲＡＴＵＳ  ＦＯＲ  ＰＲＯＶＩＤＩＮＧ  ＶＩＲＴＵＡＬ  ＣＯＭＰＵＴＩＮＧ  ＳＥＲＶＩＣＥＳ」は物理プロセッサのセットと、仮想マルチプロセッサのセットとの間に作成されて仮想化されたデータ・センターを形成する抽象的なレベルを開示する。
【００１７】
２００４年１１月１８日公開の米国特許出願公開第２００４／０２３０７１２号、ベルマー（Ｂｅｌｍａｒ）他、「ＭＡＮＡＧＩＮＧ  ＩＮＰＵＴ／ＯＵＴＰＵＴ  ＩＮＴＥＲＲＵＰＴＩＯＮＳ  ＩＮ  ＮＯＮ‐ＤＥＤＩＣＡＴＥＤ  ＩＮＴＥＲＲＵＰＴＩＯＮ  ＨＡＲＤＷＡＲＥ  ＥＮＶＩＲＯＮＭＥＮＴＳ」は、割り込みを与えるための専用のゲスト毎の割り込みハードウェアを使用しないコンピューティング環境において管理された入出力割込みを開示する。当該環境における実行可能なゲスト・プログラムは、ハイパーバイザの介入なしに直接入出力割り込みを受信する。
【００１８】
図１に戻ると、ＩＢＭ社によって提供されるインフィニバンド・システムとともに使用されるホスト・チャンネル・アダプタ１２０において、イベント・キューに記録されるイベントは、完了イベントまたは非完了イベントとして分類される。完了イベントには、キュー対においてワーク・キュー・エントリ（ＷＱＥ）として識別されるプログラムによって開始されたワーク要求がホスト・チャンネル・アダプタによって完了される場合を含む。完了イベントは認識されてもよく、完了キュー・エントリ（ＣＱＥ）は、キュー対に関連した完了キューに記録される。完了イベントについての保留中のイベント・キュー・エントリを完了キューに関連したイベント・キューがもはや含んでいない場合には、完了イベントについてのイベント・キュー・エントリが、イベント・キューにおいて保留とされる。非完了イベントには、ホスト・チャンネル・アダプタリソースに関連したエラーが発生する場合、またはホスト・チャンネル・アダプタ・リソースのステータスまたは構成が変更する場合を含む。非完了イベントは認識されてもよく、認識された非完了イベントのタイプについての保留中のイベント・キュー・イベントをリソースに関連したイベント・キューがもはや含んでいない場合には、非完了イベントの当該タイプについてのイベント・キュー・エントリが、イベント・キューにおいて保留とされる。
【００１９】
ホスト・チャンネル・アダプタに対して、プロセッサ・ノード１００のオペレーティング・システムは、１つ以上のキュー対および完了キューを割り当て、単一のイベント・キューを割り当て、キュー対および完了キューを当該イベント・キューに関連付ける。これにより、キュー対および完了キューが底部に、単一のイベント・キュー（およびその関連する入出力割り込み）が最上部にある階層構造を形成する。よって、単一のホスト・チャンネル・アダプタについての完了および非完了イベントは、オペレーティング・システム毎に単一のイベント・キューにマッピングされる。
【００２０】
この階層的な設計により、オペレーティング・システムは、ホスト・チャンネル・アダプタ・イベントを効率的に多重分離して、必要に応じて個別のキュー対および完了キューに戻すことができる。他のＩＢＭ社の特許は、各区画に自身の個別のキュー対、完了キューおよびイベント・キューを並列的に所有および管理させることによって（単一の中央処理複合体（ＰＣ）内の）複数の個別の論理区画を支援するために、所定の物理ホスト・チャンネル・アダプタを仮想化する手法を開示する。この場合、ホスト・チャンネル・アダプタ・ハードウェアは、イベントが認識されるリソース（すなわち、キュー対または完了キュー）を所有する区画のイベント・キューにホスト・チャンネル・アダプタ・イベントをベクトル化することによって、多重化の一形態を実行する。
【００２１】
【特許文献１】米国特許第６９４４８４７号
【特許文献２】米国特許第６７４８４６０号
【特許文献３】米国特許第６７５４７３８号
【特許文献４】米国特許第６８８９０２１号
【特許文献５】米国特許出願公開第２００１／００４９７４１号
【特許文献６】米国特許出願公開第２００２／０１７３８６３号
【特許文献７】米国特許出願公開第２００３／０１２６２６５号
【特許文献８】米国特許出願公開第２００３／０１３３４４９号
【特許文献９】米国特許出願公開第２００３／０１５４２３６号
【特許文献１０】米国特許出願公開第２００４／０１４３６６４号
【特許文献１１】米国特許出願公開第２００４／０１５３６１４号
【特許文献１２】米国特許出願公開第２００４／０２５０２５４号
【特許文献１３】米国特許出願公開第２００５／００４４３０１号
【特許文献１４】米国特許出願公開第２００４／０２３０７１２号
【特許文献１５】米国特許出願公開第２００６／０２３０２０８号
【非特許文献１】インフィニバンド・トレード・アソシエーション（ＩｎｆｉｎｉＢａｎｄ  Ｔｒａｄｅ  Ａｓｓｏｃｉａｔ入出力ｎ）によるインフィニバンド・アーキテクチャ規格、リリース１．０．ａ（２００１年）
【非特許文献２】ロジャー（Ｒｏｇｅｒ）他、「ＡＢＣｓ  ＯＦ  ｚ／ＯＳ  ＳＹＳＴＥＭ  ＰＲＯＧＲＡＭＭＩＮＧ  ＶＯＬＵＭＥ  １０」、ＩＢＭ  Ｒｅｄｂｏｏｋ，ＳＧ２４−６９９０−００（２００４年６月）
【発明の開示】
【発明が解決しようとする課題】
【００２２】
発明が解決しようとする課題は、ＩＢＭ社のｚＳｅｒｉｅｓ（ＩＢＭ社の登録商標）プラットフォームのようなプラットフォームに、２つのサーバ仮想化レベルを提供することである。第１のレベルは、複数の論理区画がホスト・チャンネル・アダプタ・リソースを共有できるようにするＬＰＡＲハイパーバイザによって提供される。第２のレベルは、単一の論理区画に対して割り当てられるホスト・チャンネル・アダプタ・リソースを複数の独立した仮想マシンが共有できるようにするｚ／ＶＭ（ＩＢＭ社の登録商標）ハイパーバイザなどの仮想マシン・ハイパーバイザによって提供される。かかる環境では、複数の各論理区画において並行して実行している数百から数千の仮想マシン間でのホスト・チャンネル・アダプタのリソース共有をサポートする必要があり、高度のスケーラビリティが要求される。
【課題を解決するための手段】
【００２３】
本発明は、そのようなスケーラビリティ要求を解決する。本発明は、ホスト・チャンネル・アダプタのハードウェアおよびファームウェアと、ｚＳｅｒｉｅｓ（ＩＢＭ社の登録商標）プラットフォーム・ファームウェアと、論理区画および仮想マシンにおいて実行している数千の潜在的な各オペレーティング・システムが共有されたホスト・チャンネル・アダプタ・ハードウェアからホスト・チャンネル・アダプタ・イベント通知を受信するために自身の別個の（複数の）イベント・キューを所有しているかの如き外観を提供するｚ／ＶＭ（ＩＢＭ社の登録商標）ハイパーバイザとの協働を通じて実施される。これは、背景技術において説明したイベント・キュー・レベルより上位の第２の仮想化されたイベント・キュー・レベルを追加することによって実施される。
【００２４】
具体的には、ホスト・チャンネル・アダプタ・ハードウェアは、単一の論理区画内のすべての仮想マシンについてのすべてのイベントを、論理区画が有する「単一の」イベント・キューにグループ化し、割り込み要求を信号伝達することによって、ｚＳｅｒｉｅｓ（ＩＢＭ社の登録商標）ファームウェアが制御される。ファームウェアは、ｚ／ＶＭ（ＩＢＭ社の登録商標）ハイパーバイザのサポートによって、グループ化されたイベントを、論理区画が有するイベント・キューから、仮想マシン・ベースに割り当てられた個別の仮想化されたイベント・キューに多重分離して、関連する仮想マシンのイベント・キュー・エントリおよび関連する割り込みを適切に生成する。仮想マシンもホスト・チャンネル・アダプタも、この追加のイベント・キュー仮想化レベルを認識しないことに留意されたい。
【００２５】
本発明の目的は、数千のサーバ・イメージに渡ってホスト・チャンネル・アダプタのリソースを共有するための、費用対効果に優れ、しかもなお非常に効率的な機構をｚＳｅｒｉｅｓ（ＩＢＭ社の登録商標）のようなプラットフォームに提供することにある。
【００２６】
以上、本発明の概要を、方法として説明したが、本発明は、システム、プログラム、またはプログラム製品として把握することもできる。プログラム製品は、例えば、前述のプログラムを格納した記憶媒体を含め、あるいはプログラムを伝送する媒体を含めることができる。
【００２７】
さらなる特徴および利点が、本発明の技法を通じて実現される。本発明の他の実施形態についても、本明細書において詳細に説明されている。本明細書と添付図面とを参照することによって、その特徴および利点とともに、本発明をよりよく理解することができるだろう。
【発明を実施するための最良の形態】
【００２８】
本発明は、特許請求の範囲に明確に記載される。本発明の目的、特徴および利点は、添付の図面とともに以下の詳細な説明を読むことによってより明らかとなるだろう。
【００２９】
本明細書では、一例として、利点および特徴とともに本発明の好ましい実施形態を、図面を参照して説明する。
【００３０】
本明細書において、「ゲスト」という用語は、ページ可能な仮想マシンを指し、「ホスト」という用語は、解釈実行（ｉｎｔｅｒｐｒｅｔｉｖｅ  ｅｘｅｃｕｔｉｏｎ）を使用するゲストを実施するハイパーバイザ・プログラムを指す。そのようなハイパーバイザの一例は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーション（ＩＢＭ社）から入手可能なＩＢＭ  ｚ／ＶＭ（ＩＢＭ社の登録商標）である。解釈実行と同様の機能の他の実施を使用して、ホストおよびゲストを実施してもよいことが理解されるだろう。「仮想マシン」および「ゲスト」という用語は、本明細書において同様の意味に使用される場合があり得る。
【００３１】
本明細書において使用されているように、「ピン付け（ｐｉｎｎｉｎｇ）」という用語は、通常ページ可能なホストページがホストによってページ不可能されることを意味するために使用される。
【００３２】
本明細書では、「マシン」という用語は、プログラムから見たＣＰＵを意味するために使用される。よって、マシンは、ＣＰＵハードウェアと、任意のファームウェアの実装との両方を含む。
【００３３】
本明細書における以下の用語に対して、以下の定義が提供される。
【００３４】
キュー対、完了キューおよびイベント・キューのようなホスト・チャンネル・アダプタ・リソースは、適切な割り当て（ＡＬＬＯＣＡＴＥ）命令を使用して割り当てられる。
【００３５】
割り当て命令は、ゲストによって発行されるとインターセプト（遮断）されて、ホストは、ホスト・チャンネル・アダプタのリソース割り当てを仲介する。
【００３６】
ホスト・チャンネル・アダプタ、キュー対、完了キューおよびイベント・キューリソースに対するコントロールは、アダプタ・ストレージ内に常駐し、適切なロード（ＬＯＡＤ）およびストア（ＳＴＯＲＥ）命令によってアクセス可能である。
【００３７】
ストアおよびロード命令は、ゲストによって発行された場合に、インターセプト（遮断）されホストによって処理されてもよいし、インターセプトされることなくゲストによって解釈実行されてもよいように、仮想化がされる。
【００３８】
また、以下の事項を満足するように、ホスト・チャンネル・アダプタ・リソースを構成することができる。
【００３９】
キュー対は、完了された送信要求および完了された受信要求のためという最大２つの完了キューに関連付けることができる。または、キュー対は、完了された送信および完了された受信要求の両方のための単一の完了キューに関連付けることができる。
【００４０】
１つ以上のキュー対が単一の完了キューに関連付けることができる。
【００４１】
キュー対は、単一のイベント・キューに関連付けることができる。当該キュー対に関連した非完了イベントは、イベント・キューに記録される。
【００４２】
１つ以上のキュー対が単一のイベント・キューに関連付けることができる。
【００４３】
完了キューは、１つのイベント・キューのみに関連付けることができる。当該完了キューに関連付けられた完了イベントおよびその関連する（複数の）キュー対は、イベント・キューに記録される。
【００４４】
１つ以上の完了キューが単一のイベント・キューに関連付けることができる。
【００４５】
アダプタ・サマリ・バイト（ＡＳＢ）がイベント・キューに関連付けることができる。（アダプタ・サマリ・バイトは、プログラムが典型的はゼロに初期化するプログラム・ストレージ内のバイトである。アダプタ・サマリ・バイトに関連するイベント・キューにイベント・キュー・イベントが追加される場合には、アダプタは、アダプタ・サマリ・バイトの値を非ゼロ値に設定する）
【００４６】
プライマリ・サマリ・バイト（ＰＳＢ）がイベント・キューに関連付けられてもよい。（プライマリ・サマリ・バイトは、マシンが典型的にはゼロに初期化するハードウェア・ストレージ領域（ＨＳＡ）内のバイトである。プライマリ・サマリ・バイトに関連するイベント・キューにイベント・キュー・イベントが追加される場合には、アダプタは、プライマリ・サマリ・バイトの値を非ゼロ値に設定する）プライマリ・サマリ・バイトは、マシン・ファームウェアにのみ可視である。
【００４７】
１つ以上のイベント・キューが単一のアダプタ・サマリ・バイトに関連付けることができる。
【００４８】
１つ以上のイベント・キューが単一のプライマリ・サマリ・バイトに関連付けることができる。
【００４９】
アダプタ割り込みは、どのサブチャンネルにも関連していない入出力クラスの割り込みである。アダプタ割り込みは、割り込みゼロ・ゾーン（ＩＺｏｎｅ）と、割り込みサブクラス（ＩＳＣ）に関連付けられている。ＩＺｏｎｅは、どの論理区画が割り込みを受信するかを識別する。割り込みサブクラスは、区画または仮想マシン内での割り込み優先度を規定し、割り込みをマスク可能にする。
【００５０】
図２は、図１のプロセッサ・ノード１００のうちの１つの中央処理複合体（ＣＰＣ）の図である。中央処理複合体２００は、メモリ１１８と、図１のＣＰＵ１１６のうちの少なくとも１つを含む。中央処理複合体２００は、ホスト・チャンネル・アダプタ１２０に接続されている。中央処理複合体２００は、周知のようにメモリを複数の論理区画１９８に分割する論理区画ハイパーバイザ２２０を含む。各論理区画１９８は、メモリ１１８の一部であるメモリ１９９を有する。論理区画１９８の各メモリ１９９は、キュー対（ＱＰ）２０２と、完了キュー（ＣＱ）２０４と、イベント・キュー（ＥＱ）２０６とを含む。完了キュー２０４は完了キュー・エントリ（ＣＱＥ）２０５を含み、イベント・キュー２０６はイベント・キュー・イベント（ＥＱＥ）２０７を含む。各完了キュー・エントリおよびイベント・キュー・イベントは後述のように記録されることが理解されるだろう。イベント・キュー２０６は、タイプ１のイベント・キュー２０６ａと、タイプ２のイベント・キュー２０６ｂからなる。キュー対２０２は、入出力要求を制御し、１つのキューは送信要求用、１つのキューは受信要求用である。完了キュー２０４は、入出力完了ステータスを記録するためのものである。イベント・キュー２０６は、イベントの完了および非完了を含むイベント通知を記録する。また、各論理区画メモリ１９９内には、２次サマリ・バイト（ＳＳＢ）としても知られるアダプタ・サマリ・バイト（ＡＳＢ）２０８があり、イベント・キュー２０６ａに関連付けられてもよい。プライマリ・サマリ・バイト（ＰＳＢ）２１０がメモリ１１８内に含まれており、イベント・キュー２０６ｂに関連付けられてもいてもよい。プライマリ・サマリ・バイト２１０は、メモリ１１８の制限された部分であってプロセッサ上で実行しているアプリケーションは利用不可能だがマシン・ファームウェアには利用可能なハードウェア・ストレージ領域（ＨＳＡ）２１２として知られるメモリの部分に保持されていてもよい。
【００５１】
上述のように、中央処理複合体２００内の１つの層は、基礎をなすファームウェアとともに中央処理複合体２００内のＬＰＡＲ１９８を管理する制御プログラムであるところのＬＰＡＲハイパーバイザと称する論理区画ハイパーバイザ２２０である。例えば、ｚＳｅｒｉｅｓ（ＩＢＭ社の登録商標）ｚ９９０プラットフォーム用のＬＰＡＲハイパーバイザにおいて、中央処理複合体２００は、図２に示すように、それぞれが独自のオペレーティング・システムを有する、１つから３０個まで論理区画を有することができる。これが第１の仮想化レベルである。
【００５２】
図３は、仮想マシン間の物理中央プロセッサ装置すなわちＣＰＵ１１６およびメモリ１１８などの、その論理区画に割り当てられたリソースを仮想マシン・ハイパーバイザ３００が共有する中央処理複合体２００の追加の層の図である。仮想マシン・ハイパーバイザは、単一の区画１９８内のリソースを管理する。図示のＣＰＵ１１６およびメモリ１１８は、仮想マシン・ハイパーバイザ３００が実行中である区画に割り当てられた物のみである。図３は、仮想マシン・ハイパーバイザが実行している論理区画に割り当てられた複数のＣＰＵ１１６を有するプロセッサを示す。本例において、区画のＣＰＵ１１６のうちの２つが、ＭＶＳ１として識別された仮想マシンに対して仮想マシン・ハイパーバイザによって固有に割り当てられ、ＣＰＵ１１６のうちの８つが、ＭＶＳ２からＭＶＳ５として識別された仮想マシン間で共有される。図３において、仮想マシン・ハイパーバイザ３００は、例えば、ｚ／ＶＭ（ＩＢＭ社の登録商標）ハイパーバイザとすることができる。同様に、単一の論理区画に割り当てられたホスト・チャンネル・アダプタ・リソースは、当該論理クライアント各において実行している仮想マシン・ハイパーバイザによって管理される複数の独立したマシン間で共有するようにすることができる。これが第２の仮想化レベルである。
【００５３】
イベント・キュー・ポーリングに関連したオーバヘッドを緩和するために、アダプタ割り込みと称される入出力クラスの割り込み要求をホスト・チャンネル・アダプタ１２０が信号伝達することができる機構が使用される。そのような割り込みは、イベント・キュー２０６が空き状態から非空き状態に移行する場合に要求されてもよい。アダプタ割り込みは、完了キュー２０４の関連する完了キュー・エントリ２０５に記録されたすべての完了イベントおよび／またはイベント・キュー２０６に記録された非完了イベントを処理するためのプログラムに対してイニシアティブを提供する。
【００５４】
プログラムは、記録されたイベントがなくなるまで処理を続け、プログラムは、イベント・キュー２０６を空き状態に戻す。イベント・キュー２０６が非空き状態にある間、プログラムはイニシアティブを有するものとすることに注意されたい。プログラムがイニシアティブを有する間、プログラムは、イベント・キュー２０６内の任意の新規のイベント・キュー・イベント２０７の到着を認識することが期待されている。よって、アダプタは、新規のイベント完了を認識して、新規のアダプタ割り込みの生成を抑制している間に新規のイベント・キュー・イベント２０７を追加してもよい。
【００５５】
サマリ・インジケータであるアダプタ・サマリ・バイト２０８およびプライマリ・サマリ・バイト２１０は、どのイベント・キューが処理される必要があるかを認識するとともにプログラムおよびマシンを改善するために、イベント・キュー２０６またはイベント・キューの群に関連付けられてもよい。サマリ・インジケータであるアダプタ・サマリ・バイト２０８またはプライマリ・サマリ・バイト２１０に関連したイベント・キュー２０６にホスト・チャンネル・アダプタがイベント・キュー・イベント２０７を記録する場合はいつでも、当該インジケータは、非ゼロ値に設定される。プログラムがイニシアティブを握ってイベント・キュー・イベント２０７の消費を開始すると、イニシアティブが失われないように、サマリ・インジケータであるアダプタ・サマリ・バイト２０８をまずゼロ値に設定する。
【００５６】
上述のような追加の仮想化ハードウェア２０６レベルを含むホスト・チャンネル・アダプタ・リソース階層を利用することによって、ゲスト完了イベントについてのイベント・キュー・イベント２０７は、イベントを有するゲストによって所有されるイベント・キュー２０６に直接記録されるので、数多くのゲストに渡るイベント・キュー・イベント２０７の非常に効率的な伝達が提供される。これは、ホスト・チャンネル・アダプタ１２０と、ｚＳｅｒｉｅｓ（ＩＢＭ社の登録商標）ファームウェアと、ｚ／ＶＭ（ＩＢＭ社の登録商標）ハイパーバイザ３００との間の協働を伴うものとなる。
【００５７】
仮想マシン・ハイパーバイザ３００は、実行中の論理区画についてホスト・チャンネル・アダプタ１２０毎に２つのイベント・キュー２０６を割り当てる。第１の（すなわちタイプ１の）イベント・キュー２０６ａは、ゲストについての通常（すなわち、完了）イベントを記録するためのものであり、第２の（すなわちタイプ２の）イベント・キュー２０６ｂは、ゲストについての例外（すなわち、非完了イベント）を記録するためのものである。また、仮想マシン・ハイパーバイザ３００は、固有のアダプタ・サマリ・バイト２０８を各タイプ２のイベント・キュー２０６ｂと関連付ける。ホスト・チャンネル・アダプタ１２０についてのすべてのゲスト・イベント・キュー２０６は、ゲスト・イベント・キュー２０６毎に１つの制御ブロック・セットであるｚ／ＶＭ（ＩＢＭ社の登録商標）によって初期化される制御ブロックのセットを通じて、当該ホスト・チャンネル・アダプタについてのタイプ１のイベント・キュー２０６ａに関連付けられる。
【００５８】
タイプ１のイベント・キュー２０６ａが割り当てられると、ファームウェアは、論理区画について、固有のプライマリ・サマリ・バイト２１０が各タイプ１のイベント・キュー２０６ａに関連付けられていることを確認する。タイプ２のイベント・キュー２０６ｂが割り当てられると、ファームウェアは、論理区画について、単一のプライマリ・サマリ・バイト２１０がすべてのタイプ２のイベント・キュー２０６ｂに関連付けられていることを確認する。
【００５９】
イベント・キュー・イベント２０７がタイプ１のイベント・キュー２０６ａに記録されると、ホスト・チャンネル・アダプタ１２０は、タイプ１のイベント・キュー２０６ａに関連したプライマリ・サマリ・バイト２１０をすべて非ゼロ値に設定し、アダプタ割り込み要求を信号伝達する。アダプタ割り込み要求に対するファームウェアの応答は、イベント・キュー・イベント２０７をイベントを有するゲストのイベント・キュー２０６に転送することであって、ゲストのイベント・キュー・イベント２０７と割り込みコントロールとに基づいて、ゲスト・アダプタ・サマリ・バイト２０８を設定して、ゲストに対してアダプタ割り込みを提示する。ファームウェアは、プライマリ・サマリ・バイト２１０を使用して、どのタイプ１のイベント・キュー２０６ａが転送される必要のあるイベント・キュー・イベント２０７を含んでいるかを識別して、これらのイベント・キュー・イベント２０７の情報を使用して、どのゲスト・イベント・キュー２０６に対して転送が生じるべきかを識別する。また、ファームウェアは、ゲスト・イベント・キュー２０６をタイプ１のイベント・キュー２０６ａに関連付ける仮想マシン・ハイパーバイザ・メモリ内の制御ブロックを使用して、ゲスト・イベント・キュー２０６の位置を判定する。また、ファームウェアは、ｚ／ＶＭ（ＩＢＭ社の登録商標）制御ブロックを使用して、クエリ・アダプタ割り込みを保留にする。
【００６０】
イベント・キュー・イベント２０７がタイプ２のイベント・キュー２０６ｂに記録されると、ホスト・チャンネル・アダプタ１２０は、すべてのタイプ２のイベント・キュー２０６ｂに関連したプライマリ・サマリ・バイト２１０をすべて非ゼロ値に設定し、タイプ２のイベント・キュー２０６ｂに関連する固有のアダプタ・サマリ・バイト２０８を非ゼロ値に設定し、アダプタ割り込み要求を信号伝達する。アダプタ割り込み要求に対するファームウェアの応答は、ｚ／ＶＭ（ＩＢＭ社の登録商標）ハイパーバイザ３００を駆動してイベントを取り扱うようにする区画についてのアダプタ割り込みを生成することである（これには、イベントを有するゲストのイベント・キュー２０６内にイベント・キュー・イベント２０７を生成して、ゲスト・アダプタを設定して、ゲスト・アダプタ割り込みを保留にすることが含まれる）。仮想マシン・ハイパーバイザ３００は、アダプタ・サマリ・バイト２０８を使用して、どのタイプ２のイベント・キュー２０６ｂが転送される必要のあるイベント・キュー・イベント２０７を含んでいるかを識別する。
【００６１】
ホスト・チャンネル・アダプタについてのＱＤ入出力アダプタ割り込みは、ＬＰＡＲおよびページ可能な仮想マシン（ｚ／ＶＭ）環境の両方において非常に効率的にスケーリングを行う。ＩＢＭ社によるＱＤ入出力アダプタは、よく知られているので、これ以上説明しない。論理区画が有するホスト・チャンネル・アダプタリソースに関連するアダプタ割り込みは、直接当該論理区画に経路設定でき、ＬＰＡＲハイパーバイザ２２０の介入を要しない。同様に、ゲストが所有するホスト・チャンネル・アダプタリソースに関連するアダプタ割り込みは、直接当該仮想マシンに経路設定でき、ＬＰＡＲハイパーバイザ２２０および仮想マシン・ハイパーバイザ３００の介入を要しない。キューイングではなく、ゲストに対する割り込みを提示することは、ゲストが実行中かどうかの関数である。
【００６２】
論理区画についてのインフィニバンド・ホスト・チャンネル・アダプタ割り込みが、図４、図５および図６に描かれている。図４、図５および図６はまとめて、ホスト・チャンネル・アダプタイベント通知を備えるイベントのシーケンスの場合の論理区画についてのホスト・チャンネル・アダプタ割り込みについてのフローチャートを記述している。図４で始まって、４０１において、アダプタ‐イベント記述記録機能が開始する。４０２において、完了イベントについてチェックが行われる。完了イベントがホスト・チャンネル・アダプタによって４０２において認識されると、４０４においてチェックが行われて、完了イベントが送信完了キューに関連しているかどうかをチェックし、４０８においてチェックが行われて、完了イベントが受信完了キューに関連しているかどうかを判定する。完了キュー・エントリが、ワーク要求を含むキュー対に関連した完了キューに記録される（４０６は送信完了キューについて、４１０は受信完了キューについて）。４１２においてチェックが行われて、完了キューに関連するイベント・キューが当該完了キューの完了イベントについてのイベント・キュー・イベントを既に含むかどうかを判定する。４１２のチェックが「はい」の場合、アクションは行われない。４１２のチェックが「いいえ」の場合、４１４においてイベント・キュー・イベントがイベント・キューに追加されて、プログラムは図５へ進む。
【００６３】
４１６においてチェックが行われ、非完了イベントがキュー対または完了キューのリソースについて認識されるかどうかを判定する。４１６のチェックが「いいえ」の場合、アクションは行われない。４１６のチェックが「はい」の場合、４１８においてチェックが行われて、リソースに関連したイベント・キューはキュー対または完了キューリソースについての非完了イベントについてのイベント・キュー・イベントを既に含むかどうかを判定する。４１８のチェックが「はい」の場合、アクションは行われない。４１８のチェックが「いいえ」の場合、４２０において、そのようなイベント・キュー・イベントがイベント・キューに追加される。その後、プログラムは図５へ進む。
【００６４】
図５は、アダプタ‐サマリ指示を与えるためのプログラムを示し、５００で始まる。５０２においてチェックが行われて、アダプタ・サマリ・バイトがイベント・キューに関連しているかどうかを判定する。５０２のチェックが「はい」の場合、５０４においてアダプタ・サマリ・バイトは非ゼロ値に設定される。５０６においてチェックが行われて、プライマリ・サマリ・バイトがイベント・キューに関連しているかどうかを判定する。「はい」であれば、５０８においてイベント・キューに関連したプライマリ・サマリ・バイトは非ゼロ値に設定される。その後、プログラムは図６へ進む。
【００６５】
図６は、イベント・キューは、イベント・キュー・イベントが記録された時に完了イベントについてのイベント・キュー・イベントがなかったかどうかを判定する。６０２のチェックが「はい」の場合、６０４においてチェックが行われて、イベント・キュー・コントロールは、即時割り込みを指定するかどうかを判断する。６０４のチェックが「いいえ」の場合、アダプタ割り込みは保留にされず、ホスト・チャンネル・アダプタは６１２において継続する。６０２において、イベント・キュー・イベントが記録された時に完了イベントについてのイベント・キュー・イベントをイベント・キューが有していた場合には、６０８において判定されるような割り込み遅延タイマの状態に基づいて、アダプタ割り込みは、保留にされてもよいし、されなくてもよい。６０８において割り込みタイマが割り込み準備ができていない場合、ホスト・チャンネル・アダプタは６１２で継続する。６１０において、６０８のチェックによって割り込みタイマ時間が割り込み準備ができていることが示される場合には、アダプタ割り込みは保留にされる。６０２においてイベント・キュー・イベントが記録された時に完了イベントについてのイベント・キュー・イベントをイベント・キューが有していない場合であって、６０４においてイベント・キュー・コントロールが即座の割り込みを指定している場合には、６１０において、アダプタ割り込み要求が信号伝達され、イベント・キューに関連するＩｚｏｎｅおよび割り込みサブクラス上で保留にされる。その後、ホスト・チャンネル・アダプタは６１２において継続する。
【００６６】
アダプタ・割り込みが認識される場合またはプログラムがイニシアティブを有している場合には、プログラムは関連するアダプタ・サマリ・バイトを使用して、どのイベント・キューが処理される必要のあるイベント・キュー・イベントを含んでいるかを判定してもよいことが理解されるだろう。
【００６７】
＊
ページ可能な仮想マシンについてのインフィニバンド・ホスト・チャンネル・アダプタ割り込みについて説明する。図２に戻って、ページ可能な仮想マシンについてのアダプタ・割り込みは、タイプ１のイベント・キュー２０６ａとタイプ２のイベント・キュー２０６ｂとを利用する。タイプ１のイベント・キュー２０６ａが、１つ以上のゲストのために、ゲスト完了キュー２０４に関連する完了および非完了イベントをそのようなゲストに通知するために、（ホスト・ストレージ内の）ホスト・プログラムによって割り当てられる。タイプ１のイベント・キュー２０６ａがマシンによって使用されて、ホスト・チャンネル・アダプタ１２０によって記録されたイベント・キュー・イベント２０７を各ゲストのイベント・キュー２０６に対して転送する。ゲストのアダプタ・サマリ・バイト２０８がゲストのイベント・キュー２０６に関連している場合には、マシンは、アダプタ・サマリ・バイト２０８に対して、いつイベント・キュー・イベント２０７がタイプ１のイベント・キュー２０６ａからゲストのイベント・キュー２０６へ転送されるかを設定する。
【００６８】
タイプ２のイベント・キュー２０６ｂが、１つ以上のゲストのために、ゲストの完了キュー２０４に関連しない非完了イベントを通知するために、（ホスト・ストレージ内の）ホスト・プログラムによって割り当てられる。ホスト・チャンネル・アダプタ１２０がイベント・キュー・イベント２０７をタイプ２のイベント・キュー２０６ｂに記録する時はいつでも、アダプタ割り込みが、イベント・キュー２０６に関連したＩｚｏｎｅおよび割り込みサブクラス上ですぐに保留にされる。アダプタ割り込みが認識されると、ホストは、タイプ２のイベント・キュー２０６ｂ内のイベント・キュー・イベント２０７を処理する役割を果たす。この処理には、イベント・キュー・イベント２０７をゲストのイベント・キュー２０６に対して転送することが含まれてもよい。先に説明したように、Ｉｚｏｎｅは、どの論理区画が割り込みを受信するかを識別し、割り込みサブクラスは、割り込み優先度を規定する。
【００６９】
図７および図８は、ゲスト完了キュー２０４コンテキストを、ゲスト・ストレージ内にあるゲスト・イベント・キュー２０６およびゲスト・アダプタ・サマリ・バイト２０８と、ホスト・ストレージ内にあるゲスト割り込み状態領域（ＧＩＳＡ）９００（図９参照）とに関連付けるための２つのホスト構造を示した。図７は、ゲスト・イベント・キュー・アソシエータ（ＧＥＱＡ）７００を示し、図８は、ゲスト・イベント・キュー制御ブロック（ＧＥＱＣＢ）８００を示す。ゲスト・イベント・キュー・アソシエータ７００は、ゲスト・イベント・キュー制御ブロック８００へのポインタ７０２と、元のゲスト完了キュー・トークン７０４とを含む。ゲスト・イベント・キュー制御ブロック８００は、ゲスト割り込み状態領域へのポインタ８０２と、ゲスト割り込みサブクラス８０４と、ゲスト・アダプタ・サマリ・バイトへのポインタ８０６と、次に使用するゲスト・イベント・キュー・イベントへのポインタ８０８とを含む。ゲスト・イベント・キュー・アソシエータ、ゲスト・イベント・キュー制御ブロックならびにゲストおよびホストのホスト・チャンネル・アダプタ・リソースの関係を図９に示す。
【００７０】
図９の関係の割り当ておよび構成の仕方、ならびにリソース割り当ておよび構造初期化について説明する。ゲストが割り当て命令を発行してホスト・チャンネル・アダプタ・リソースを割り当てる場合に、当該命令はホストをインターセプト（遮断）する。これにより、ホストは、ゲスト・リソースをホスト・ストレージ内にピン付けして、アダプタ・リソース・コンテキスト、ホスト構造、タイプ１のイベント・キュー２０６ａおよびタイプ２のイベント・キュー２０６ｂ間の追加の関連付けを以下のように設定することができる。
【００７１】
図１０および図１１は、ホストによって行われる機能のフローチャートをまとめて形成している。イベント・キュー割り当てを指定するゲストの割り当て命令がインターセプト（遮断）される場合には、ホストは、ゲスト割り当てをシミュレートする一部として、１０００で始まる以下のタスクを行う。１０００において、ホストは、ゲスト・イベント・キュー制御ブロック８００を割り当て、１００２において、ゲスト割り込み状態領域ポインタ８０２を初期化して、ゲストのためにゲスト割り込み状態領域９００をポイントするようにして、１００４において、ゲストによって元々指定された値から、特定のゲスト割り込みサブクラス値８０４を初期化する。１００６においてチェックが行われて、ゲストは特定のアダプタのついてのイベント・キューを割り当てる最初のゲストかどうかを判定する。１００６のチェックがはいの場合、ホストは、割り当てを２回発行して、１００８においてタイプ１のイベント・キュー２０６ａを割り当て、１０１０においてアダプタのためにタイプ２のイベント・キュー２０６ｂを割り当てる。図１１の１１０２において、ホストはこれらのイベント・キューのためのホスト割り込みサブクラスを指定し、１１０４において、固有のホストのアダプタ・サマリ・バイト２０８をタイプ２のイベント・キュー２０６ｂに関連付けるためのストア命令を発行する（どのホストのアダプタ・サマリ・バイトもタイプ１のイベント・キュー２０６ａに関連付けられない）。１００８において、ホストが割り当てを発行してタイプ１のイベント・キュー２０６ａを割り当てると、１０１２において、マシンは、固有のプライマリ・サマリ・バイト２１０をタイプ１のイベント・キュー２０６ａに関連付ける。１０１０において、ホストが割り当て命令を発行してタイプ２のイベント・キューを割り当てると、１０１４において、マシンは、すべてのタイプ２のイベント・キュー２０６ｂに共通の単一のプライマリ・サマリ・バイト２１０をタイプ２のイベント・キュー２０６ｂに関連付ける。１１０６において、ホストは、ゲストに対して、ホスト・チャンネル・アダプタ１２０において実施されているどの識別子の値よりも大きいゲストのイベント・キュー２０６についてのリソース識別子の値を割り当てる。これにより、将来ゲストによって実行される、イベント・キュー２０６を指定するストアおよびロード命令がホストをインターセプト（遮断）することが確実になろう。
【００７２】
図１２は、完了キュー割り当てを指定するゲスト割り当て命令がインターセプト（遮断）される場合に、ホストが図１２の機能をゲスト割り当てをシミュレートする一部として行うプログラムのフローチャートを形成する。１２００において、ホストは、ゲスト・イベント・キュー・アソシエータを割り当てる。１２０２において、ホストは、割り当てをゲストのために再発行して、実ストレージ領域のタイプを指定するゲストストアおよびロード命令のインターセプト（遮断）を生じさせる解釈実行コントロールを指定する。１２０４において、ホストはストア命令を発行して、完了キュー・トークンを完了キューについてのゲスト・イベント・キュー・アソシエータのアドレスに設定する。１２０６においてチェックが行われて、ゲストがストア命令を発行して完了キュー・トークン値を設定するときを判定する。はいの場合、１２０８において命令はインターセプト（遮断）されて、ゲスト完了キュー・トークン値７９２はゲスト・イベント・キュー・アソシエータ７００に記憶される。１２１０においてチェックが行われて、ゲストがストア命令を発行してイベント・キューを完了キューに関連付けるときを判定する。はいの場合、１２１２において命令はインターセプト（遮断）されて、イベント・キュー７０２についてのゲスト・イベント・キュー制御ブロックへのポインタがゲスト・イベント・キュー・アソシエータ７００に記憶される。
【００７３】
図１３は、ホストによって行われるリソース割り当ておよび構成初期化のための機能を提供するためのフローチャートである。ゲストがストア命令を発行してアダプタ・サマリ・バイトをそのイベント・キューに関連付ける場合に、当該命令はインターセプト（遮断）されて、１３００において、ホストは、ゲスト・アダプタ・サマリ・バイトを含むページをピン付けし、１３０２において、アダプタ・サマリ・バイト２０８のホスト・アドレスを８０４におけるゲスト・イベント・キュー制御ブロック８００に配置する。
【００７４】
図１４は、ホストによって行われるリソース割り当ておよび構成初期化のための機能を提供するためのフローチャートである。キュー対割り当てを指定するゲスト割り当て命令がインターセプト（遮断）される場合に、１４００において、ホストは、ゲストのために割り当てを再発行して、実ストレージ領域のタイプを指定するゲストのストアおよびロード命令を生じさせる解釈実行コントロールを指定する。
【００７５】
図１５は、ホストによって行われるリソース割り当ておよび構成初期化のための機能を提供するためのフローチャートである。ゲストがストア命令を発行してイベント・キューをキュー対に関連付ける場合に、当該命令はインターセプト（遮断）されて、ホストは、アダプタのためにゲストキュー対２０２へのタイプ２のイベント・キュー２０６ｂの関連付けを指定するゲストのために、ストアを発行する。ページ可能な仮想マシンについてのホスト・チャンネル・アダプタ・イベント通知について説明する。ページ可能な仮想マシンについてのホスト・チャンネル・アダプタ割り込みは、ゲスト・ホスト・チャンネル・アダプタ・イベント通知を備えるイベントのシーケンスの場合に最もよく理解される。
【００７６】
図１６は、論理区画についての仮想マシン（すなわち、ゲスト）ホスト・チャンネル・アダプタ・イベント通知のためのフローチャートである。１６００において、ホスト・チャンネル・アダプタはチェックを行って、完了イベントがホスト・チャンネル・アダプタによって認識されるかどうかを判定する。１６００のチェックが「はい」の場合、１６０２において、完了キュー・エントリ２０５が、ワーク要求を含むゲスト・キュー対２０２に関連したゲスト（送信または受信）完了キュー２０４に記録される。１６０４においてチェックが行われて、完了キュー２０４に関連するタイプ１のイベント・キュー２０６ａが、当該完了キューの完了イベントについてのイベント・キュー・イベント２０７を既に含んでいるかどうかを判定する。１６０４のチェックがはいの場合、ホスト・チャンネル・アダプタによってこれ以上アクションは行われない。１６０４のチェックが「いいえ」の場合、１６０６において、イベント・キュー・イベント２０７がタイプ１のイベント・キュー２０６ａに追加される。１６０８において、関連するプライマリ・サマリ・バイトは非ゼロ値に設定される。１６１０において、アダプタ割り込み要求がホストに対して信号伝達され、１６１２において、割り込みサブクラスがイベント・キュー内に割り当てられる。その後、ホスト・チャンネル・アダプタは図１７へ進む。
【００７７】
１６００のチェックが「いいえ」の場合、１６１６においてチェックが行われて、リソースに関連したタイプ２のイベント・キュー２０６ｂがキュー対２０２または完了キュー２０４の非完了イベントについてのイベント・キュー・イベント２０７を既に含んでいるかどうかを判定する。１６１６のチェックが「はい」の場合、ホスト・チャンネル・アダプタによってこれ以上アクションは行われない。１６１６のチェックが「いいえ」の場合、１６１８において、イベント・キュー・イベント２０７がイベント・キュー２０６ａに追加される。
【００７８】
１６１８において非完了イベントについてのイベント・キュー・イベント２０７がタイプ２のイベント・キュー２０６ｂに追加された場合には、１６２０において、イベント・キュー２０６に関連するアダプタ・サマリ・バイト２０８は非ゼロ値に設定される（タイプ１のイベント・キュー２０６ａは、関連するアダプタ・サマリ・バイトを有しない）。イベント・キュー・イベント２０７がタイプ２のイベント・キュー２０６ｂに追加されると、１６２２において関連するプライマリ・サマリ・バイトは非ゼロ値に設定されて、図１７へ進む。
【００７９】
ホスト・アダプタ割り込みについて説明する。イベント・キュー・イベント２０７がタイプ１のイベント・キュー２０６ａに追加されると、１６１０において、アダプタ割り込み要求がホストに対して信号伝達され、１６１２において割り込みサブクラスがイベント・キュー２０６に割り当てられて、ホスト・チャンネル・アダプタは図１７へ進む。１６１８においてイベント・キュー・イベント２０７がタイプ２のイベント・キュー２０６ｂに追加されると、１６２４において、タイプ２のイベント・キュー２０６ｂに割り当てられたホスト割り込みサブクラス上で割り込み要求が信号伝達および保留され、ホスト・チャンネル・アダプタは継続する。
【００８０】
図１７は、図１６からの完了イベントのための、マシンによって行われる追加のアクションのフローチャートを構成する。ゲスト・アダプタ‐イベント記述記録は、以下の通りである。タイプ１のイベント・キュー２０６ａ内の次のイベント・キュー・イベント２０７を使用して、イベント・キュー２０６をゲスト・イベント・キュー２０６へ転送（記録）する。１７００において、イベント・キュー・イベント２０７に記録された完了キュー・トークンは、ホスト・ストレージ内のゲスト・イベント・キュー・アソシエータ７００のアドレスである。１７０２において、ゲスト・イベント・キュー・アソシエータ７００は、ゲスト・イベント・キュー２０６のためのゲスト・イベント・キュー制御ブロック７０２へのポインタを含む。１７０４において、ゲスト・イベント・キュー制御ブロック８００は、使用する次のゲスト・イベント・キュー・イベントに対するポインタ８０８を含む。このポインタの値は保持されて、他のＣＰＵが同一のイベント・キュー・イベントを同時に使用しないように、当該ポインタを進めて、次のイベント・キュー・イベント２０７をポイントするようにする。１７０８において、タイプ１のイベント・キュー２０６ａは、ゲスト・イベント・キュー・イベント２０７に対してコピーされて、ゲスト・イベント・キュー・アソシエータ７００内の元のゲスト完了キュー・トークン値７０４は、ゲスト・イベント・キュー・イベント２０７内の完了キュー・トークン・フィールド７０４にコピーされる。
【００８１】
ゲスト・アダプタ‐サマリ指示記録について説明する。１７１０においてチェックが行われて、ゲスト・アダプタ・サマリ・バイトがゲスト・イベント・キューに関連しているかどうかが判定される。１７１０のチェックがはいの場合（ゲスト・イベント・キュー制御ブロック８００内のゲスト・アダプタ・サマリ・バイト８０６に対するポインタは、ゼロでない）、１７１２において、ゲスト・アダプタ・サマリ・バイトは非ゼロ値に設定される。
【００８２】
ゲスト・アダプタ割り込みについて説明する。１７１４において、ゲスト・イベント・キュー制御ブロック８００内のゲスト割り込み状態領域ポインタ８０２によって識別されるようなゲストについての図９に示すゲスト割り込み状態領域９００内のゲストについて、アダプタ割り込みが保留される。これは、ゲスト・イベント・キュー２０６に関連したゲスト割り込みサブクラスに対応するゲスト割り込み状態領域９００内のゲスト割り込みサブクラス（ＧＩＳＣ）ビットを設定することによって行われる。割り込みがゲスト割り込み状態領域９００内で保留となった後に、１７１６において、マシンによって、ゲスト入出力および割り込みサブクラス可能毎にゲストに提示される。ゲスト割り込み状態領域内の対応するアラート・マスク・ビットが１である場合には、アラート割り込みがホストに対して行われる。
【００８３】
本発明の機能は、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせで実施することができる。
【００８４】
一例として、本発明の１つ以上の局面は、例えば、コンピュータ使用可能な媒体を有する製品（例えば、１つ以上のコンピュータ・プログラム製品）内に含めることが可能である。媒体は、その内部において、例えば、本発明の機能を提供および促進するためのコンピュータ読み取り可能なコードを実装する。当該製品は、コンピュータ・システムの一部として含めることもでき、または別個に単独で販売することができる。
【００８５】
加えて、機械によって読み取り可能であって、機械によって実行可能な命令の少なくとも１つのプログラムを具体的に実装して本発明の機能を行う、少なくとも１つのプログラム記憶装置を提供することができる。
【００８６】
本明細書に示したフロー図は、一例に過ぎない。本発明の精神から逸脱することなく、本明細書に記載された図またはステップ（または動作）に対する数多くの変形が存在してもよい。例えば、ステップは別の順番に行われてもよく、または、ステップが追加、削除、修正されてもよい。これらの変形のすべてが、請求項に記載された本願の一部とみなされる。
【００８７】
本発明の好ましい実施形態を説明してきたが、現在および将来の両方において、当業者が請求項の範囲内の様々な改良および拡張を行ってもよいことが理解されるだろう。これらの請求項は、当初説明した発明に対する適切な保護を維持するものと解釈されるべきである。
【図面の簡単な説明】
【００８８】
【図１】本発明とともに使用可能であって、ホスト・チャンネル・アダプタ（ＨＣＡ）をそれぞれ有するプロセッサ・ノードを含む、従来技術のインフィニバンド・システムを示す図である。
【図２】図１のプロセッサ・ノードのうちの１つの中央処理複合体（ＣＰＣ）の図であって、第１の仮想化レベルを提供する論理区画（ＬＰＡＲ）ハイパーバイザ層を有するメイン・メモリの表象を含み、論理区画と、当該論理区画のメモリにおけるデータ構造とを含む。
【図３】図２の中央処理複合体のさらなる図であって、図２の単一の区画内のリソースを管理する、第２の仮想化レベルを提供する仮想マシン（ＶＭ）ハイパーバイザ層を含む。
【図４】論理区画に対するホスト・チャンネル・アダプタ割り込みのためのフローチャートを示す。
【図５】論理区画に対するホスト・チャンネル・アダプタ割り込みのためのフローチャートを示す。
【図６】論理区画に対するホスト・チャンネル・アダプタ割り込みのためのフローチャートを示す。
【図７】ゲスト・イベント・キュー・アソシエータ（ＧＥＱＡ）のホスト構成を示す。
【図８】ゲスト・イベント・キュー制御ブロック（ＧＥＱＣＢ）のホスト構成を示す。
【図９】ゲスト・イベント・キュー・アソシエータ、ゲスト・イベント・キュー制御ブロックならびにゲストおよびホストのホスト・チャンネル・アダプタ・リソースの関係を示す。
【図１０】ホストによって行われるリソース割り当ておよび構成初期化のための機能のフローチャートである。
【図１１】ホストによって行われるリソース割り当ておよび構成初期化のための機能のフローチャートである。
【図１２】ホストによって行われるリソース割り当ておよび構成初期化のための機能のフローチャートである。
【図１３】ホストによって行われるリソース割り当ておよび構成初期化のための機能のフローチャートである。
【図１４】ホストによって行われるリソース割り当ておよび構成初期化のための機能のフローチャートである。
【図１５】ホストによって行われるリソース割り当ておよび構成初期化のための機能のフローチャートである。
【図１６】ページ可能な仮想マシンのためのホスト・チャンネル・アダプタ・イベント通知のための機能についてのフローチャートである。
【図１７】ページ可能な仮想マシンのためのホスト・チャンネル・アダプタ・イベント通知のための機能についてのフローチャートである。
【符号の説明】
【００８９】
１２０  ホスト・チャンネル・アダプタ
１９８  論理区画
１９９  メモリ
２００  中央処理複合体（ＣＰＣ）
２０２  キュー対
２０４  完了キュー
２０５  完了キュー・エントリ
２０６  イベント・キュー
２０６ａ  タイプ１のイベント・キュー
２０６ｂ  タイプ２のイベント・キュー
２０７  イベント・キュー・イベント
２０８  アダプタ・サマリ・バイト
２１０  プライマリ・サマリ・バイト
２１２  ハードウェア・ストレージ領域
２２０  論理区画ハイパーバイザ
【図１】
2007310884.tif 000003
【図２】
2007310884.tif 000004
【図３】
2007310884.tif 000005
【図４】
2007310884.tif 000006
【図５】
2007310884.tif 000007
【図６】
2007310884.tif 000008
【図７】
2007310884.tif 000009
【図８】
2007310884.tif 000010
【図９】
2007310884.tif 000011
【図１０】
2007310884.tif 000012
【図１１】
2007310884.tif 000013
【図１２】
2007310884.tif 000014
【図１３】
2007310884.tif 000015
【図１４】
2007310884.tif 000016
【図１５】
2007310884.tif 000017
【図１６】
2007310884.tif 000018
【図１７】
2007310884.tif 000019