(57)【要約】【課題】本発明の課題は、仮想化環境における効果的なインタラプト処理を実現する装置、方法及びシステムを提供することである。【解決手段】上記課題を解決するため、本発明は、ゲストが仮想プロセッサ上で実行されている間に、インタラプトリクエストを受け付けるインタフェースと、前記インタラプトリクエストの属性に基づき、前記インタラプトリクエストが前記仮想プロセッサに送信されるべきか判断する送信ロジックと、前記インタラプトリクエストが前記仮想プロセッサに送信されるべきでないと前記送信ロジックが判断した場合、前記ゲストからホストに当該装置の制御を移行するイグジットロジックとから構成されることを特徴とする装置を提供する。【選択図】図１
2010176693.tif 000002
【特許請求の範囲】
【請求項１】
ゲストが仮想プロセッサ上で実行されている間に、物理インタラプトベクトルを含むインタラプトリクエストを受け付けるインタフェースと、
前記物理インタラプトベクトルに基づき、前記インタラプトリクエストが前記仮想プロセッサに送信されるべきか判断する送信ロジックと、
前記インタラプトリクエストが前記仮想プロセッサに送信されるべきでないと前記送信ロジックが判断した場合、前記ゲストからホストに当該装置の制御を移行するイグジットロジックと、
から構成されることを特徴とする装置。
【請求項２】
請求項１記載の装置であって、
前記送信ロジックはさらに、前記インタラプトリクエストが前記仮想プロセッサに送信されるべきであると前記送信ロジックが判断した場合、前記インタラプトリクエストを前記仮想プロセッサに送信することを特徴とする装置。
【請求項３】
請求項１記載の装置であって、
前記送信ロジックは、インタラプト送信データ構造における前記物理インタラプトベクトルに対するエントリに基づき、前記インタラプトリクエストが前記仮想プロセッサに送信されるべきか判断することを特徴とする装置。
【請求項４】
請求項３記載の装置であって、さらに、
前記物理インタラプトベクトルの送信を実行させるため、前記インタラプトリクエストをアクノリッジするアクノリッジロジックを有することを特徴とする装置。
【請求項５】
請求項３記載の装置であって、さらに、
前記物理インタラプトベクトルを仮想インタラプトベクトルに変換するリダイレクトロジックを有することを特徴とする装置。
【請求項６】
請求項５記載の装置であって、
前記リダイレクトロジックは、インタラプトリダイレクトデータ構造へのエントリに基づき、前記物理インタラプトベクトルを仮想インタラプトベクトルに変換することを特徴とする装置。
【請求項７】
ゲストが仮想プロセッサ上で実行されている間に、インタフェースが物理インタラプトベクトルを含むインタラプトリクエストを受け付けるステップと、
前記物理インタラプトベクトルに基づき、送信ロジックが前記インタラプトリクエストが前記仮想プロセッサに送信されるべきか判断するステップと、
前記インタラプトリクエストが前記仮想プロセッサに送信されるべきでない場合、イグジットロジックが前記ゲストからホストに制御を移行するステップと、
から構成されることを特徴とする方法。
【請求項８】
請求項７記載の方法であって、
前記送信ロジックが判断するステップは、インタラプト送信データ構造における前記物理インタラプトベクトルに対するエントリに基づくことを特徴とする方法。
【請求項９】
請求項７記載の方法であって、さらに、
前記物理インタラプトベクトルの送信を実行させるため、アクノリッジロジックが前記インタラプトリクエストをアクノリッジするステップを有することを特徴とする方法。
【請求項１０】
請求項７記載の方法であって、さらに、
リダイレクトロジックが前記物理インタラプトベクトルを仮想インタラプトベクトルに変換するステップを有することを特徴とする方法。
【請求項１１】
請求項１０記載の方法であって、
前記リダイレクトロジックが変換するステップは、インタラプトリダイレクトデータ構造へのエントリに基づくことを特徴とする方法。
【請求項１２】
仮想プロセッサを有するバーチャルマシーンを制御するデータ構造を格納するメモリと、
物理インタラプトベクトルを含むインタラプトリクエストを受け付けるインタフェースと、前記物理インタラプトベクトルに基づき、前記インタラプトリクエストが前記仮想プロセッサに送信されるべきか判断する送信ロジックと、前記インタラプトリクエストが前記仮想プロセッサに送信されるべきでないと前記送信ロジックが判断した場合、ゲストからホストに当該プロセッサの制御を移行するイグジットロジックとを有する物理プロセッサと、
から構成されることを特徴とするシステム。
【請求項１３】
請求項１２記載のシステムであって、
前記送信ロジックは、前記データ構造における前記物理インタラプトベクトルに対するエントリに基づき、前記インタラプトリクエストが前記仮想プロセッサに送信されるべきか判断することを特徴とするシステム。
【請求項１４】
請求項１２記載のシステムであって、さらに、
前記物理プロセッサはさらに、前記物理インタラプトベクトルを仮想インタラプトベクトルに変換するリダイレクトロジックを有することを特徴とするシステム。
【請求項１５】
請求項１４記載のシステムであって、
前記リダイレクトロジックは、前記データ構造におけるインタラプトリダイレクトマップに基づき、前記物理インタラプトベクトルを仮想インタラプトベクトルに変換することを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理の技術分野に関し、より詳細には、仮想化環境におけるインタラプト（ｉｎｔｅｒｒｕｐｔ）の処理に関する。
【背景技術】
【０００２】
一般に、情報処理システムにおける仮想化（ｖｉｒｔｕａｌｉｚａｔｉｏｎ）のコンセプトは、１以上のオペレーティングシステム（ＯＳ）の複数のインスタンスが、各ＯＳがシステムとそれのリソースに対して完全かつ直接的な制御を有するよう設計されていても、１つの情報処理システム上で実行することを可能にする。仮想化は、典型的には、ソフトウェア（バーチャルマシーンモニタ、すなわち、ＶＭＭなど）を利用して、ＯＳが完全かつ直接的に制御可能な１以上の仮想プロセッサを含む仮想リソースを有する「バーチャルマシーン（ＶＭ）」を各ＯＳに提供することにより実現されるが、ＶＭＭは、仮想化環境（ＶＭ）における物理リソースの共有化及び／又は割当てなど、仮想化ポリシーを実現するためシステム環境を維持する。ＶＭ上で実行される各ＯＳ及び他の何れかのソフトウェアは、「ゲスト」又は「ゲストソフトウェア」と呼ばれ、「ホスト」又は「ホストソフトウェア」は、仮想化環境の外部で実行され、仮想化環境を認識した又は認識していないＶＭＭなどのソフトウェアである。
【０００３】
情報処理システムにおける物理プロセッサは、例えば、ＶＭの仮想プロセッサ（すなわち、ＶＭＭによって課される制約を受ける物理プロセッサ）上でゲストを実行するため、仮想化環境に入る命令をサポートすることによって、仮想化をサポートするかもしれない。仮想化環境では、優先されるレジスタ又はリソースにアクセスするための外部のインタラプト又は試みなど、特定のイベント、処理及び状況は、インターセプト（ｉｎｔｅｒｃｅｐｔ）され、すなわち、ＶＭＭが例えば、仮想化ポリシーを実現するため動作可能となるように、プロセッサに仮想化環境から離脱させるかもしれない。物理プロセッサはまた、仮想化環境を維持するための他の命令をサポートするようにしてもよく、物理プロセッサの仮想化機能を表示又は制御するメモリ又はレジスタビットを有するかもしれない。
【０００４】
仮想化環境をサポートする物理プロセッサは、ゲストが仮想化環境内部の仮想プロセッサ上で実行されている間にインタラプトリクエストを受信するかもしれない。典型的には、このインタラプトリクエストはインターセプトとされ、制御は、当該インタラプトの処理方法を決定するため、ＶＭＭに転送される。例えば、インタラプトサービスルーチンは、ＶＭＭにより呼び出されてもよく、あるいは、ＶＭＭによりは、仮想インタラプトを生成し、ゲストがインタラプトサービスルーチンを呼び出すことを可能にするため、それをＶＭに投入するかもしれない。多くのケースでは、インタラプトサービスリクエストを呼び出すため入力されるＶＭは、ＶＭＭがインタラプトリクエストをインターセプトすることを可能にするよう離脱されたものと同一のＶＭであってもよい。例えば、インタラプトリクエストは、離脱したものと同一のＶＭＭに割り当てられた入出力（Ｉ／Ｏ）デバイスによって生成されたものであってもよいし、又はインタラプトリクエストは、同じＶＭにおける２つの仮想プロセッサ間のプロセッサ間インタラプトであってもよい。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の課題は、上記問題点に鑑み、仮想化環境における効果的なインタラプト処理を実現する装置、方法及びシステムを提供することである。
【課題を解決するための手段】
【０００６】
上記課題を解決するため、本発明は、ゲストが仮想プロセッサ上で実行されている間に、インタラプトリクエストを受け付けるインタフェースと、前記インタラプトリクエストの属性に基づき、前記インタラプトリクエストが前記仮想プロセッサに送信されるべきか判断する送信ロジックと、前記インタラプトリクエストが前記仮想プロセッサに送信されるべきでないと前記送信ロジックが判断した場合、前記ゲストからホストに当該装置の制御を移行するイグジットロジックとから構成されることを特徴とする装置を提供する。
【０００７】
さらに、本発明は、ゲストが仮想プロセッサ上で実行されている間に、インタラプトリクエストを受け付けるステップと、前記インタラプトリクエストの属性に基づき、前記インタラプトリクエストが前記仮想プロセッサに送信されるべきか判断するステップと、前記インタラプトリクエストが前記仮想プロセッサに送信されるべきでない場合、前記ゲストからホストに制御を移行するステップとから構成されることを特徴とする方法を提供する。
【０００８】
さらに、本発明は、仮想プロセッサを有するバーチャルマシーンを制御するデータ構造を格納するメモリと、インタラプトリクエストを受け付けるインタフェースと、前記インタラプトリクエストの属性に基づき、前記インタラプトリクエストが前記仮想プロセッサに送信されるべきか判断する送信ロジックと、前記インタラプトリクエストが前記仮想プロセッサに送信されるべきでないと前記送信ロジックが判断した場合、前記ゲストからホストに当該プロセッサの制御を移行するイグジットロジックとを有する物理プロセッサとから構成されることを特徴とするシステムを提供する。
【発明の効果】
【０００９】
本発明によると、仮想化環境における効果的なインタラプト処理を実現する装置、方法及びシステムを提供することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】図１は、本発明の実施例が動作可能な仮想化環境を示す。
【図２】図２は、インタラプトを直接仮想プロセッサに送信するため、ＶＭＭがサポートを初期化する方法の実施例を示す。
【図３】図３は、インタラプトを直接仮想プロセッサに送信するための方法の実施例を示す。
【発明を実施するための形態】
【００１１】
以下において、仮想プロセッサにインタラプトを直接送信する装置、方法及びシステムの実施例が説明される。本記載では、本発明のより完全なる理解を提供するため、コンポーネント、システムコンフィギュレーションなどの多数の具体的詳細が与えられる。しかしながら、本発明がこのような具体的詳細なしに実現可能であることは、当業者により理解されるであろう。さらに、いくつかの周知の構成、回路などは、本発明を不要に不明りょうにすることを回避するため、詳細には説明されない。
【００１２】
仮想化環境のパフォーマンスは、インターセプトされるイベントの頻度が最小化される場合、向上するかもしれない。本発明の実施例は、ＶＭＭによるインターセプトを必要とすることなく、仮想プロセッサへのインタラプトリクエストの送信をサポートするのに利用可能である（ダイレクト送信）。従って、すべてのインタラプトリクエストがＶＭＭによりインターセプトされる仮想化環境に対するパフォーマンスが向上するかもしれない。
【００１３】
図１は、本発明の実施例が動作可能な仮想化アーキテクチャ１００を示す。図１において、ベアプラットフォーム（ｂａｒｅ  ｐｌａｔｆｏｒｍ）ハードウェア１１０は、任意のＯＳ又はＶＭＭソフトウェアを実行可能な任意のデータ処理装置であってもよい。例えば、ベアプラットフォームハードウェアは、パーソナルコンピュータ、メインフレームコンピュータ、ポータブルコンピュータ携帯装置、セットトップボックス、サーバ又は他の何れかの計算システムのものであるかもしれない。ベアプラットフォームハードウェア１１０は、プロセッサ１２０、メモリ１３０、入出力（Ｉ／Ｏ）デバイス１１５及びチップセット１１１を有する。
【００１４】
プロセッサ１２０は、Ｐｅｎｔｉｕｍ（登録商標）系プロセッサ、Ｉｔａｎｉｕｍ（登録商標）系プロセッサ、インテルコーポレイションからの他のプロセッサ、若しくは他の企業からのプロセッサなどの汎用マイクロプロセッサ、又はデジタル信号プロセッサ若しくはマイクロコントローラを含む任意のタイプのプロセッサであってもよい。図１は、１つのプロセッサ１２０しか示していないが、ベアプラットフォームハードウェア１１０は、各々が任意数の実行コアを備えた任意数のマルチコアプロセッサと、各々が任意数のスレッドを備えた任意数のマルチスレッドプロセッサとを含む任意数のプロセッサを含むかもしれない。
【００１５】
メモリ１３０は、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）、半導体ベースＲＯＭ、フラッシュメモリ、磁気ディスクメモリ、光ディスクメモリ、プロセッサ１２０により可読な他の任意のタイプの媒体又はこのような媒体の何れかの組み合わせであってもよい。Ｉ／Ｏデバイス１１５は、モニタ、キーボード、マウス、プリンタ、ネットワークインタフェース、情報ストレージ装置などの任意数の周辺又はＩ／Ｏデバイスを表すかもしれない。チップセット１１１は、システムロジック、バスコントロール、バスインタフェース、バスブリッジ、メモリコントロール、周辺デバイスコントロール、周辺デバイス機能、システムコンフィギュレーションなど任意数のタスクを実行する任意数のコンポーネントを含むかもしれない。
【００１６】
プロセッサ１２０、メモリ１３０、Ｉ／Ｏデバイス１１５及びチップセット１１１は、例えば、１以上のバス、ポイント・ツー・ポイント又は他の有線又は無線接続を直接的又は間接的に介するなど、何れか既知のアプローチに従って互いに接続又は通信するようにしてもよい。ベアプラットフォームハードウェア１１０はまた、任意数のさらなるデバイス又は接続を有するようにしてもよい。
【００１７】
ベアプラットフォームハードウェア１００に加えて、図１は、ＶＭＭ１４０、ＶＭ１５０と１６０、及びゲスト１５２、１５４、１５５、１６２、１６４と１６５を示す。
【００１８】
ＶＭＭ１４０は、ＶＭ、すなわち、ベアプラットフォームハードウェア１１０のアブストラクションをゲストに提供し、あるいは、ＶＭを生成及び管理し、仮想化環境１００の内部で仮想化ポリシーを実現するため、ベアプラットフォームハードウェア１１０にインストール又はアクセス可能な任意のソフトウェア、ファームウェア又はハードウェアホストであってもよい。他の実施例では、ホストは、ベアプラットフォームハードウェア１１０を制御可能な任意のＶＭＭ、ハイパーバイザ（ｈｙｐｅｒｖｉｓｏｒ）、ＯＳ、他のソフトウェア、ファームウェア又はハードウェアであってもよい。ゲストは、任意のＯＳ、ＶＭＭ１４０のインスタンスを含む任意のＶＭＭ、ハイパーバイザ、アプリケーション又は他のソフトウェアであってもよい。
【００１９】
各ゲストは、ＶＭに提供されるプラットフォーム及びプロセッサのアーキテクチャに従って、ベアプラットフォームハードウェア１１０のプロセッサ、プラットフォームレジスタ、メモリ及び入出力デバイスなどの物理リソースにアクセスすることを期待する。図１は、２つのＶＭ１５０と１６０を示し、ＶＭ１５０にはゲストＯＳ１５２及びゲストアプリケーション１５４と１５５がインストールされ、ＶＭ１６０にはゲストＯＳ１６２及びゲストアプリケーション１６４と１６５がインストールされている。図１は、２つのＶＭと各ＶＭに２つのアプリケーションしか示していないが、本発明の範囲内において、任意数のＶＭが生成可能であり、任意数のアプリケーションが各ＶＭ上で実行可能である。
【００２０】
ゲストによってアクセス可能なリソースは、「優先（ｐｒｉｖｉｌｅｇｅｄ）」又は「非優先（ｎｏｎ−ｐｒｉｖｉｌｅｇｅｄ）」リソースとして分類されるかもしれない。優先リソースについて、ＶＭＭ１４０は、リソースに対する最終的な制御を維持しながら、ゲストによって所望される機能を実現する。非優先リソースは、ＶＭＭ１４０によって制御される必要はなく、ゲストによって直接的にアクセスされるかもしれない。
【００２１】
さらに、各ゲストＯＳは、例外処理（ページフォルト、一般的なプロテクションフォルトなど）、インタラプト（ハードウェアインタラプト、ソフトウェアインタラプトなど）、プラットフォームイベント（初期化、システム管理インタラプトなど）などの各種イベントを処理することを期待する。これら例外処理、インタラプト及びプラットフォームイベントは、ここではまとめて「イベント」と呼ばれる。これらのイベントの一部は「優先」される。なぜなら、ＶＭ１５０と１６０の適切な処理、ゲストからのＶＭＭ１４０のプロテクション及び互いからのゲストのプロテクションを保証するため、ＶＭＭ１４０により処理される必要があるためである。
【００２２】
何れか所与の時点において、プロセッサ１２０は、ＶＭＭ１４０又は何れかのゲストからの命令を実行しているかもしれず、これにより、ＶＭＭ１４０又はゲストは、プロセッサ１２０上で実行又は制御されるかもしれない。優先イベントが実行されるとき、又はゲストが優先リソースにアクセスしようとするとき、コントロールは、ゲストからＶＭＭ１４０に移行するかもしれない。ゲストからＶＭＭ１４０へのコントロールの移行は、ここでは「ＶＭイグジット（ｅｘｉｔ）」と呼ばれる。イベント処理後、又はリソースへのアクセスを適切に実現した後、ＶＭＭ１４０は、ゲストにコントロールを返すかもしれない。ＶＭＭ１４０からゲストへのコントロールの移行は、「ＶＭエントリ（ｅｎｔｒｙ）」とここでは呼ばれる。
【００２３】
図１の実施例では、プロセッサ１２０は、バーチャルマシーンコントロール構成（ＶＭＣＳ）１３２に格納されているデータに従って、ＶＭ１５０と１６０の動作を制御する。ＶＭＣＳ１３２は、ゲストの状態、ＶＭＭ１４０の状態、ＶＭＭ１４０がゲストの動作をどのように制御するか示す実行制御情報、ＶＭイグジット及びＶＭエントリに関する上記又は他の任意のそのような情報を含むかもしれない構成である。プロセッサ１２０は、ＶＭの実行環境を決定し、それの動作を制限するための情報をＶＭＣＳ１３２から読み出す。本実施例では、ＶＭＣＳ１３２は、メモリ１３０に格納されている。いくつかの実施例では、複数のＶＭＣＳが複数のＶＭをサポートするのに利用される。図１は、メモリ１３０に格納されているＶＭＣＳ１３２を示すが、ＶＭＣＳをメモリに格納することは、本発明によって要求されるものではない。
【００２４】
プロセッサ１２０は、インタラプトリクエストを受付、生成、優先順位付け、送信、保留、制御又は管理するためのインタラプトコントローラ１２２を有するかもしれない。例えば、インタラプトコントローラ１２２は、Ｐｅｎｔｉｕｍ（登録商標）系プロセッサのアーキテクチャに従って、ローカルなＡＰＩＣ（Ａｄｖａｎｃｅｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｉｎｔｅｒｒｕｐｔ  Ｃｏｎｔｒｏｌｌｅｒ）であるかもしれない。チップセット１１１はまた、インタラプトコントローラ１１２に加えて、それと共に、又はその代わりに、インタラプトリクエストを受付、生成、優先順位付け、送信、保留、制御又は管理するためのインタラプトコントローラ１１２を有するかもしれない。例えば、インタラプトコントローラ１１２は、Ｉ／Ｏ  ＡＰＩＣであってもよい。プロセッサ１２０及び／又はチップセット１１１は、他の何れかのインタラプトコントローラを有するようにしてもよく、また、図１に図示されない他の何れかのプロセッサ、チップセット又はコンポーネントは、インタラプトコントローラを有するようにしてもよく、また、インタラプトリクエストは、他の何れかのアプローチに従って制御又は管理されるようにしてもよい。
【００２５】
プロセッサ１２０はまた、プロセッサ１２０がチップセット１１１などの他の何れかのコンポーネントを介し又は直接的に、何れかのタイプのバス、ポイント・ツー・ポイント又は他の接続を介しインタラプトリクエスト及びインタラプトベクトルを受け付けることを可能にするため、バスユニット又は他の何れかのユニット、ポート又はインタフェースであるかもしれないインタフェース１２１を有する。インタフェース１２１は、例えば、ローカルＡＰＩＣからインタラプトリクエストを受信するための内部インタフェース、及び／又は外部ソースからインタラプトリクエストを受信するための外部インタフェースであってもよい。
【００２６】
さらに、プロセッサ１２０は、インタラプトの仮想プロセッサへの送信を含む仮想化をサポートするコントロールロジック１２５を含む。コントロールロジック１２５は、プロセッサ１２０内部のマイクロコード、プログラマブルロジック、ハードコードロジック又は他の何れかの形式のコントロールロジックであってもよい。他の実施例では、コントロールロジック１２５は、プロセッサ内部、又はメモリ１３０などのプロセッサにより可読又はアクセス可能な任意のコンポーネント内部のプロセッサアブストラクションレイヤなどの任意の形式によるハードウェア、ソフトウェア又はファームウェアにより実現可能である。
【００２７】
コントロールロジック１２５は、例えば、プロセッサ１２０にホストからゲストへの仮想化命令又は他の命令に応答して仮想化をサポートするため、プロセッサ１２０に１以上のマイクロオペレーションを実行させることによって、図２及び３に示される方法などの本発明の実施例による方法を実行させる。
【００２８】
コントロールロジック１２５は、インタラプトアクノリッジロジック１２６、インタラプト送信ロジック１２７、インタラプトリダイレクトロジック１２８及びイグジットロジック１２９を含む。インタラプトアクノリッジロジック１２６は、インタラプトリクエストをアクノリッジし、いくつかの実施例では、インタラプトベクトルをプロセッサ１２０に送信する。インタラプト送信ロジック１２７は、インタラプトリクエストが仮想プロセッサに送信されるべきか決定する。インタラプトリダイレクトロジック１２８は、例えば、物理インタラプトベクトルを仮想インタラプトベクトルに変換することによって、物理プロセッサ１２０の代わりに仮想プロセッサに送信するため、インタラプトをリダイレクトする。イグジットロジック１２９は、インタラプトリクエストが仮想プロセッサに送信されるべきでない場合、ＶＭイグジットを準備及び発生させる。上記ロジックのそれぞれはまた、ロジックユニットの他のものにより実行されるとして示されるものを含むさらなる機能を実行してもよく、上記ロジックユニットの何れか又はすべては、１つのロジックユニットに一体化されてもよい。
【００２９】
ＶＭＣＳ１３２は、仮想プロセッサへのインタラプトの送信を含む仮想化をサポートするため、フィールド、コントロールビット又は他のデータ構造を含むかもしれない。これらのデータ構造は、ＶＭ環境の管理方法を決定するため、コントロールロジック１２５によりチェック又は参照されるかもしれない。例えば、インタラプト割当てコントロールビット１３３は、後述されるように、仮想プロセッサへのインタラプトリクエストの直接的な送信を可能にするよう設定されてもよい。本実施例の説明では、コントロールビットは、所望の効果を可能又は発生させるよう設定される。ここでは、設定とは、論理「１」を当該ビットに書き込むことを意味するが、何れかの論理的用語が、本発明の範囲内で利用可能である。
【００３０】
またＶＭＣＳ１３２において、アドレスフィールド１３４は、インタラプトが仮想プロセッサに送信されるべきか示すデータ構造が格納可能であるメモリ位置のアドレスを格納するのに利用可能である。例えば、当該アドレスは、２５６個までの物理インタラプトベクトルのそれぞれに対して、１つのコンフィギュレーションビットを含む２５６ビットアレイの６４ビットアドレスであってもよい。同様に、アドレスフィールド１３６は、仮想インタラプトベクトルを提供するデータ構造が格納可能なメモリ位置のアドレスを格納するのに利用可能である。例えば、当該アドレスは、２５６個までの物理インタラプトベクトルのそれぞれに対して、１バイト仮想インタラプトベクトルを含む２５６バイトアレイの６４ビットアドレスであってもよい。他の実施例では、ＶＭＣＳ１３２は、このような標識又は仮想インタラプトベクトルを直接格納するデータ構造を有するかもしれない。
【００３１】
図２及び３は、本発明の実施例による方法を示す。各実施例はこれに限定されるものではないが、図２及び３の実施例を説明するため、図１の仮想化環境１００が参照される。
【００３２】
図２は、インタラプトを仮想プロセッサに直接送信するためＶＭＭがサポートを初期化する方法の実施例を示す。
【００３３】
図２のボックス２１０では、図１のＶＭＭ１４０は、ＶＭに対するＶＭＣＳ（ＶＭＣＳ１３２など）を生成する。ボックス２１２から２１７において、ＶＭＭ１４０は、インタラプトを仮想プロセッサに送信するためサポートを実現するようＶＭＣＳ１３２を構成する。ボックス２１２において、インタラプト割当てコントロールビット１３３は、後述されるように、仮想プロセッサへのインタラプトの直接的な送信を可能にするよう設定される。
【００３４】
ボックス２１４において、インタラプトが仮想プロセッサに送信されるべきか示すデータ構造を格納するためのメモリ位置のアドレスが、アドレスフィールド１３４に書き込まれる。ある数（２５６など）の潜在的なインタラプトのそれぞれは、物理インタラプトベクトルによって特定されるかもしれない。データ構造（インタラプトビットマップ１３５など）は、物理インタラプトベクトルのそれぞれに対するエントリを含むかもしれない。各エントリは、各物理インタラプトベクトルに対応する物理インタラプトが、仮想プロセッサに送信されるべきか示すためのコンフィギュレーションビットを含むかもしれない。ボックス２１５において、データ構造は、例えば、物理インタラプトベクトルと、それぞれに対する所望のコンフィギュレーションビットを格納することによって初期化される。
【００３５】
ボックス２１６において、物理インタラプトベクトルを仮想インタラプトベクトルに変換するため、データ構造を格納するためのメモリ位置のアドレスが、アドレスフィールド１３６に書き込まれる。データ構造（ベクトルリダイレクトマップ１３７など）は、各物理インタラプトベクトルのエントリを含むかもしれない。各エントリは、仮想プロセッサに送信されるべき各インタラプトに対する物理インタラプトベクトルに対応する仮想インタラプトベクトルを含むかもしれない。このような再変換は、例えば、システムメモリ１３０又はシステムメモリ１３０の一部の仮想プロセッサを含むＶＭに割り当てられるメモリへの再変換を説明するのに利用されるかもしれない。ボックス２１７において、データ構造は、例えば、物理インタラプトベクトルとそれぞれに対する所望の仮想インタラプトベクトルを格納することによって、初期化される。
【００３６】
図３は、インタラプトを仮想プロセッサに直接送信する方法の実施例を示す。
【００３７】
図３のボックス３１０において、ＶＭエントリが実行され、コントロールがゲストに移行される。ボックス３２０において、ゲストは、ＶＭの仮想プロセッサ上の実行を開始又は継続する。ボックス３３０において、インタフェース１２１は、インタラプトリクエストを受け付ける。インタラプトリクエストは、インタラプトコントローラ１２２又は１１２などのインタラプトコントローラ又は他の何れかの装置からのものであってもよい。いくつかの実施例では、インタラプトは、他の物理プロセッサによって生成され、又は自らの仮想プロセッサに対してゲストによって生成されるプロセッサ間インタラプトであってもよい。
【００３８】
ボックス３４０において、コントロールロジック１２５は、仮想プロセッサへのインタラプトの直接的な送信が可能であるか判断するため、インタラプト割当てコントロールビット１３３をチェックする。仮想プロセッサへのインタラプトの直接的な送信が可能でない場合、ボックス３９０において、イグジットロジック１２９は、ＶＭＭがインタラプトを処理することを可能にするため、ＶＭイグジットを実行させる。いくつかの実施例では、イグジットロジックは、インタラプトイグジットコントロールビットなど、ＶＭＣＳの１以上のコントロールビットを照会することによって、ＶＭイグジットがこの状況で必要とされるか判断する。いくつかの実施例では、イグジットロジック１２９は、インタラプトリクエストをアクノリッジし、インタラプトベクトルをフェッチする。いくつかの実施例では、ハードウェアインタラプトによるＶＭイグジットの一部としての当該インタラプトアクノリッジメントは、イグジットコントロールビットのアクノリッジインタラプトなど、ＶＭＣＳの１以上のコントロールビットにより制御されるかもしれない。
【００３９】
しかしながら、仮想プロセッサへのインタラプトの直接的な送信が可能である場合、ボックス３５０において、インタラプトアクノリッジロジック１２６は、例えば、インタラプトアクノリッジメッセージを送信することによって、インタラプトリクエストをアクノリッジする。プロセッサがローカルなＡＰＩＣを有する実施例では、インタラプトリクエストは、ローカルＡＰＩＣにおいてアクノリッジされる。ボックス３５２において、プロセッサ１２０は、物理インタラプトベクトルを受信する。プロセッサがローカルＡＰＩＣを有する実施例では、インタラプトリクエストのアクノリッジメントはまた、インタラプトリクエストレジスタ（ＩＲＲ）、インサービスレジスタ（ＵＳＲ）及びプロセッサプライオリティレジスタ（ＰＰＲ）を更新するかもしれない。
【００４０】
ボックス３６０において、インタラプト送信ロジック１２７は、当該インタラプトが、例えば、インタラプトビットマップ１３５をチェックすることによって、仮想プロセッサに送信されるべきか判断する。この判定は、送信モード（固定又はユーザに規定されたＳＭＩ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｉｎｔｅｒｒｕｐｔ）など）、ＮＭＩ（Ｎｏ−Ｍａｓｋａｂｌｅ  Ｉｎｔｅｒｒｕｐｔ）、ＩＮＩＴ（Ｓｏｆｔ  Ｒｅｓｅｔ）など）やトリガーモード（エッジ又はレベルなど）インタラプトリクエストの他の属性に基づくものであってもよい。このインタラプトが仮想プロセッサに送信されるべきでない場合、ボックス３９０において、イグジットロジック１２９は、ＶＭＭがインタラプトを処理することを可能にするようＶＭイグジットを実行させる。物理インタラプトベクトルは、それをＶＭＣＳのＶＭイグジットフィールドに格納することによって、ＶＭＭに提供されてもよい。
【００４１】
しかしながら、インタラプトが仮想プロセッサに送信されるべきである場合、ボックス３６２において、インタラプトリダイレクトロジック１２８は、例えば、物理インタラプトベクトルを仮想インタラプトベクトルに変換することによって、物理プロセッサの代わりに仮想プロセッサへの送信のためインタラプトをリダイレクトする。本実施例では、この変換は、対応する仮想インタラプトベクトルを検出するため、インタラプトリダイレクトマップ１３７の物理インタラプトベクトルを検索することによって実行される。
【００４２】
ローカルＡＰＩＣを含む実施例では、ボックス３６２はまた、インタラプトリクエストを適切に管理するため、他のアクションを含むかもしれない。例えば、コントロールロジック１２５は、ＩＳＲ及びＰＰＲが更新されるように、ローカルＡＰＩＣのエンド・オブ・インタラプト（ＥＯＩ）レジスタをクリアする。
【００４３】
ボックス３６４において、リダイレクトされたインタラプトは、例えば、仮想プロセッサに係るインタラプト記述子テーブル（ＩＤＴ）のインデックスとして仮想インタラプトベクトルを用いて、インタラプトハンドラのエントリポイントを検出することによって、仮想プロセッサに送信される。いくつかの実施例では、リダイレクトされたインタラプトは、インタラプトの優先順位に応じて、仮想プロセッサへの送信前に保留されるかもしれない。この優先順位付けは、仮想プロセッサに送信されるべきインタラプト間のものであってもよいし、あるいは、ＶＭＭに送信されるインタラプトを含むものであってもよい。
【００４４】
共有可能なインタラプトリクエストラインによる実施例では、各種技術の何れかが仮想プロセッサを対象とする第１インタラプトリクエストに係る第１インタラプトハンドラが、仮想プロセッサを対象としない第２インタラプトリクエストに係る第２インタラプトハンドラに自動的にリンクすることを回避するのに利用可能である。一実施例では、ローカルＡＰＩＣのＥＯＩレジスタは、Ｉ／Ｏ  ＡＰＩＣに配信されない特別なメッセージによりクリアされるかもしれない。他の実施例では、インタラプトリクエストが仮想プロセッサに送信されるべきか否かの判断は、トリガーモード（エッジ又はレベルなど）又は共有可能性を示す他の属性に基づくものであってもよい。
【００４５】
さらに、いくつかの実施例では、直接送信されたインタラプトの結果として呼び出されるインタラプトハンドラからのＥＯＩメッセージがインターセプトされ、他の実施例では、プロセッサは、ＶＭイグジットなしにそれを処理するコントロールロジックを有するかもしれない。
【００４６】
本発明の範囲内において、図２及び３に示される方法は、異なる順序、図示されたボックスの省略、さらなるボックスの追加又は再順序付け、省略又は追加的なボックスの組み合わせにより実行されてもよい。例えば、ＶＭＣＳは任意の順序によりＶＭＣＳを構成してもよく、例えば、ボックス２１２〜２１７は任意の順序により再構成されてもよい。
【００４７】
プロセッサ１２０又は本発明の実施例による他の何れかのコンポーネント又はコンポーネントの一部は、生成からシミュレーション、製造までの各段階において設計されるかもしれない。構成を表すデータは、いくつかの方法によりそれを表すかもしれない。まず、シミュレーションにおいて有用なように、ハードウェアは、ハードウェア記述言語又は他の機能記述言語を用いて表されるかもしれない。さらに、又はあるいは、ロジック及び／又はトランジスタゲートを備える回路レベルモデルが、設計処理のいくつかの段階で生成されるかもしれない。さらに、大部分の構成は、いくつかの段階において各種デバイスの物理的配置を表すデータによりモデリングされるレベルに到達する。従来の半導体製造技術が利用される場合、デバイス配置モデルを表すデータは、集積回路を生成するのに利用されるマスクに対する異なるマスクレイや上の各種特徴の有無を指定するデータであるかもしれない。
【００４８】
当該構成の何れかの表現において、データは、マシーン可読媒体の何れかの形式により格納されるかもしれない。このような情報を送信するのに変調又は生成される光学的又は電気的な波動、又はメモリ、ディスクなどの磁気若しくは光記憶媒体は、マシーン可読媒体であってもよい。これらの媒体の何れも、エラーリカバリルーチンにおける命令など、本発明の実施例において利用される構成又は他の情報を搬送又は表示するかもしれない。情報を表示又は搬送する電気的な搬送波が送信されるとき、電気信号の複製、バッファリング又は再送が実行される程度まで、新たな複製が行われる。従って、通信プロバイダ又はネットワークプロバイダのアクションは、本発明の技術を実現する搬送波などの物品の複製を生成することから構成されるかもしれない。
【００４９】
以上より、仮想プロセッサにインタラプトを直接送信する装置、方法及びシステムが開示された。特定の実施例が添付した図面により説明及び図示されたが、このような実施例が単なる例示であり、本発明を限定するものではないということは理解されるであろう。本発明は、他の様々な変更が本開示を研究することにより当業者に想起されると予想されるため、ここで説明及び図示された具体的構成に限定されるものではない。成長が速く、さらなる進歩が予見不可能な当該技術分野では、開示された実施例は、添付した請求項の範囲又は本開示の原理から逸脱することなく、技術的進歩を可能にすることによって実現されるよう構成及び詳細において容易に変更可能である。
【符号の説明】
【００５０】
１００  仮想化アーキテクチャ
１１０  ベアプラットフォームハードウェア
１２０  プロセッサ
１３０  メモリ
１６０  ＶＭＭ（バーチャルマシーンモニタ）
１５０  ＶＭ（バーチャルマシーン）
【図１】
2010176693.tif 000003
【図２】
2010176693.tif 000004
【図３】
2010176693.tif 000005