(57)【要約】  仮想マシン・モニタ（「ＶＭＭ」）と、高度構成及び電力インタフェース（「ＡＣＰＩ」）準拠ゲスト・オペレーティング・システムとの間の双方向通信を方法、装置及びシステムが可能にする。一実施例では、仮想マシン（「ＶＭ」）はホスト・プラットフォーム（「ポリシーＶＭ」）のオーナとして指定することができる。ポリシーＶＭは、プラットフォーム上の構成及び電力管理の決定全てを制御するようＶＭＭと通信することができる。【特許請求の範囲】
【請求項１】
方法であって、
ポリシー仮想マシン（「ＶＭ」）をＶＭホスト上で識別する工程と、
メモリ領域を前記ポリシーＶＭに割り当てる工程と、
前記メモリ領域の一部分をメールボックスとして指定する工程と、
前記ポリシーＶＭが、実行された手法からの情報を前記メールボックスに入れ、仮想マシン・マネージャ（「ＶＭＭ」）によって検出可能なイベントを生成することを可能にする工程とを備える方法。
【請求項２】
請求項１記載の方法であって、前記ポリシーＶＭが前記実行された手法からの前記情報を前記メールボックスに入れることを可能にする工程は、
サブシステムが前記手法を実行し、情報を生成する工程と、
前記ポリシーＶＭが前記情報を受け取り、前記情報を前記メールボックスに入れる工程とを備える方法。
【請求項３】
請求項２記載の方法であって、前記サブシステムは、高度構成及び電力インタフェース（「ＡＣＰＩ」）サブシステムである方法。
【請求項４】
請求項３記載の方法であって、前記ＶＭＭを拡張してＡＣＰＩ汎用イベント（「ＧＰＥ」）レジスタ・ブロックを仮想化する工程を更に備える方法。
【請求項５】
請求項4記載の方法であって、
前記ＶＭＭが、前記ポリシーＶＭにおけるゲスト・オペレーティング・システム（ＯＳ）にＳＣＩを投入する工程と、
前記ゲストＯＳが、前記ＳＣＩを前記ＡＣＰＩサブシステムに転送して、ＧＰＥレジスタ・ブロックを検査することによって前記GPEの原因を判定する工程と、
前記ＶＭＭが、アクティブ・ステータスを有するステータス・レジスタを備えた仮想GPEレジスタ・ブロックを生成する工程と、
前記ＡＣＰＩサブシステムが、前記アクティブなステータスを有する前記ステータス・レジスタを備えた前記仮想ＧＰＥレジスタ・ブロックを検査する工程と、
前記ＡＣＰＩサブシステムが、前記アクティブ・ステータスを有する前記ステータス・レジスタを備えたＧＰＥレジスタ・ブロックに基づいて前記ＳＣＩを処理するためのＡＣＰＩ制御手法を呼び出す工程とを更に備える方法。
【請求項６】
マシンによって実行されると、命令を記憶させたマシンアクセス可能な媒体を備えた物品であって、マシンによって実行されると、
ポリシー仮想マシン（「ＶＭ」）をＶＭホスト上で識別する機能と、
メモリ領域を前記ポリシーＶＭに割り当てる機能と、
前記メモリ領域の一部分をメールボックスとして指定する機能と、
前記ポリシーＶＭが、実行された手法からの情報を前記メールボックスに入れ、仮想マシン・マネージャ（「ＶＭＭ」）によって検出可能なイベントを生成することを可能にする機能とを前記マシンに行わせる物品。
【請求項７】
請求項６記載の物品であって、前記命令は前記マシンによって実行されると、前記実行された手法からの前記情報を前記ポリシーVMが前記メールボックス内に入れることを、
前記手法をサブシステムによって実行し、情報を生成し、
前記ポリシーＶＭによって前記情報を受け取り、前記情報を前記メールボックスに入れることによって更に可能にする物品。
【請求項８】
請求項７記載の物品であって、前記サブシステムが、高度構成及び電力インタフェース（「ＡＣＰＩ」）サブシステムであり、前記命令は、前記マシンによって実行されると、前記ＶＭＭを更に拡張して、ＡＣＰＩ汎用イベント（「GPE」）を認識する物品。
【請求項９】
請求項８記載の物品であって、前記命令は、前記マシンによって実行されると、更に、
前記ＶＭＭに、前記ポリシーＶＭにおけるゲスト・オペレーティング・システム（ＯＳ）にＳＣＩを投入させ、
前記ゲストＯＳに、前記ＳＣＩを前記ＡＣＰＩサブシステムに転送して、ＧＰＥレジスタ・ブロックを検査することによって前記GPEの原因を判定させ、
前記ＶＭＭに、アクティブ・ステータスを有するステータス・レジスタを備えた仮想GPEレジスタ・ブロックを生成させ、
前記ＡＣＰＩサブシステムに、前記アクティブなステータスを有する前記ステータス・レジスタを備えた前記仮想ＧＰＥレジスタ・ブロックを検査させ、前記ＡＣＰＩサブシステムに、前記アクティブ・ステータスを有する前記ステータス・レジスタを備えた前記ＧＰＥレジスタ・ブロックに基づいて前記ＳＣＩを処理するためのＡＣＰＩ制御方法を呼び出させる物品。
【請求項１０】
仮想マシン（「ＶＭ」）ホストであって、
仮想マシン・マネージャ（「ＶＭＭ」）と、
前記ＶＭＭに結合されたメモリと、
前記ＶＭＭ及び前記メモリに結合されたポリシーＶＭであって、前記メモリの一部分が前記ポリシー仮想マシンに割り当てられるポリシーＶＭと、
前記ＶＭＭ、前記メモリ及び前記ポリシーＶＭに結合され、情報を生成するための手法を実行することができるサブシステムと、前記ポリシー仮想マシンにおいて割り当てられた前記メモリの前記部分内で指定されるメールボックスであって、前記ポリシーVMは、前記実行された手法によって生成される情報を前記メールボックスに入れ、前記VMMによって検出可能なイベントを検出するVMホスト。
【請求項１１】
請求項１０記載のVMホストであって、前記VMMは、前記メールボックスにおける前記情報を処理し、前記VMホスト上の他のVMに配付するVMホスト。
【請求項１２】
請求項11記載のVMホストであって、前記サブシステムは、高度構成及び電力インタフェース（「ＡＣＰＩ」）サブシステムであるVMホスト。
【請求項１３】
請求項12記載のVMホストであって、前記ＶＭＭは更に、ＡＣＰＩ汎用イベント（「ＧＰＥ」）レジスタ・ブロックを仮想化することが更にできるVMホスト。
【請求項１４】
請求項12記載のVMホストであって、
前記ポリシーVM内のゲスト・オペレーティング・システム（OS）であって、前記VMMはSCIを前記ゲストOSに投入することができ、前記ゲストOSは、前記SCIを前記ACPIサブシステムに転送して、GPEレジスタ・ブロックを検査することによって前記ＧＰＥの原因を判定し、前記VMMは、アクティブ・ステータスを有するステータス・レジスタを備えた仮想GPEレジスタ・ブロックを生成するゲストOSと、前記アクティブ・スタータスを有する前記ステータス・レジスタを備えた前記仮想GPEレジスタ・ブロックを検査し、前記アクティブ・ステータスを有する前記スタータス・レジスタを備えた前記ＧＰＥレジスタ・ブロックに基づいて前記SCIを処理するためのACPI制御手法を呼び出すACPIサブシステムとを更に備えるVMホスト。
【発明の詳細な説明】
【技術分野】
【０００１】
高度構成及び電力インタフェース（「ACPI」、例えば、Revision  2.0b,  October  11,  2002）は、プラットフォーム構成及び電力管理手法の開放型業界標準仕様である。
【背景技術】
【０００２】
ACPI準拠オペレーティング・システム（「OS」）は通常、プラットフォーム・ハードウェアと２つのやり方で相互作用する。まず、ハードウェアにおける基本入力／出力システム（「BIOS」）は、OS及びそのACPIドライバによって解析されるメモリ常駐テーブル組を生成することができる。前述のテーブルは、さもなければ表されないプラットフォーム・ハードウェア全てのソフトウェア列挙のルートを提供する。特に、ACPIは、親バス標準（例えば、PC相互接続、「PCI」）に準拠するプラットフォーム・ハードウェアを表さない。このタイプのハードウェアは、上記標準を用いて列挙し、電力管理することができるからである。よって、ACPIテーブルに通常、宣言されるハードウェアは、バス標準を用いて列挙及び／又は管理することが可能でないプラットフォーム・ハードウェアである。すなわち、ACPIテーブルは、プラットフォームにおけるプラットフォーム特有の（すなわち、バス標準でない）ハードウェア全ての列挙及び電力管理の抽象化を含む。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
プラットフォーム・ハードウェアは相互に依存している。よって、存在する、これを管理する「ポリシー・オーナ」は１つのみであり得る。通常の計算環境では、OSがプラットフォーム資源を管理する。しかし、仮想化環境では、複数のオペレーティング・システムが、プラットフォーム上の資源に対するアクセスを有し得る。仮想化手法は、仮想マシン・モニタ（「VMM」）を実行する単一のホスト・コンピュータが、ホストの下にあるハードウェアが、独立して動作している仮想マシン（「VM」）にみえるようにホストの複数の抽象化及び／又は表示を提示することを可能にする。各VMは、それ自身のOS及び／又はソフトウェア・アプリケーションを実行して、自己完結的なプラットフォームとして機能することができる。VMMは通常、ホスト上の資源の配分を管理し、ラウンドロビンやその他の所定の手法によって種々のVM間で巡回するよう必要に応じてコンテキスト・スイッチングを行う。VMMはしたがって、ACPIと相互作用し、資源競合を回避する役割を果たす。
【課題を解決するための手段】
【０００４】
本発明の実施例は、VMMと、ACPI準拠ゲスト・オペレーティング・システム（OS）との間の双方向通信のための方法、装置及びシステムを提供する。本明細書において本発明の「one  embodiment」又は「an  embodiment」に言及していることは、その実施例に関して説明する特定の特徴、構造又は特性が本発明の少なくとも１つの実施例に含まれていることを意味している。よって、本明細書を通した種々の箇所に存在している句「in  one  embodiment」、「according  to  one  embodiment」等は必ずしもその全てが同じ実施例を表している訳でない。
【０００５】
本発明は、限定としてではなく例として、添付図面の図に示し、同様な参照符号は同様な構成要素を示す。
【発明を実施するための最良の形態】
【０００６】
ホスト上の種々のVMからの種々のACPIイベント（例えば、種々のAPCIイネーブル／ディセーブル動作、S状態遷移、C状態遷移、P状態遷移、T状態遷移、及び割り込みルーティング変更）を上記最終のシナリオ（すなわち、ホストOS（ハイパバイザなど）を含まないシステム）において解決することができる現行の手法は存在しない。よって、例えば、第１のACPIイベントが第１のVMによって生成され、別のACPIイベントが、同じホスト上の第２のVMによって生成される場合に、前述のイベント間で競合が生じた場合（例えば、それぞれが、ホスト上の別の動作を必要とする場合）、前述のイベントを解決することができる現行の方法論は存在しない。
【実施例】
【０００７】
本発明の実施例は、VMMと、ACPI準拠ゲストOSとの間の双方向通信のための方法、装置及びシステムを含む。ACPIとは別の手法が実現された場合、ゲストOSはよって、別の手法に準拠することになる。したがって、本明細書の目的で、本明細書及び特許請求の範囲記載の「OS」に対する言及は、プラットフォーム上で実現される電力構成及び管理手法に準拠したオペレーティング・システムを意味している。同様に、本明細書及び特許請求の範囲記載のACPI及び／又はACPIサブシステムは、限定されないが、ACPIを含む何れかの電力構成及び管理手法を備える。
【０００８】
本発明の実施例の理解を容易にするために、図１は、通常の仮想マシン・ホスト・プラットフォーム（「ホスト１００」）を示す。前述の通り、仮想マシン・モニタ（「VMM１３０」）は通常、ホスト・プラットフォーム上で実行し、（「仮想マシン」又は「VM」としても表す）プラットフォームの抽象化及び／又は表示を他のソフトウェアに提示する。２つのVM区画のみ（「VM１１０」及び「VM１２０」（以降、併せて「VM」として表す））を示しているが、前述のVMは、例証に過ぎず、更なる仮想マシンをホストに加えることができる。VM１３０は、ソフトウェア（例えば、スタンドアロン・プログラム及び／又は構成部分（ホスト・オペレーティング・システムの））、ハードウェア、ファームウェア及び／又はそれらの何れかの組み合わせで実現することができる。
【０００９】
VM１１０及びVM１２０は、それら自身の「ゲスト・オペレーティング・システム」（すなわち、「ゲストOS１１１」及び「ゲストOS１２１」（以下併せて「ゲストOS」として表す）として示す、VMM１３０によってホスティングされるオペレーティング・システム）を実行して、それぞれ、自己完結的なプラットフォームとして機能することができる。各ゲストOS及び／又はゲスト・ソフトウェアは、仮想マシンではなく専用コンピュータ上で実行しているかのように動作する。すなわち、各ゲストOS及び／又はゲスト・ソフトウェアは、種々のイベントを制御することを期待し得るものであり、ホスト１００上のハードウェア資源へのアクセスを有し得る。しかし、前述の通り、現実には、VMM１３０は、イベント及びハードウェア資源に対する最終的なコントロールを有し、それ自身のポリシーによってVMに資源を割り当てる。
【００１０】
図１における各VMは通常、プラットフォーム管理を行うためにゲスト・ソフトウェア内に仮想ACPIドライバ（「ACPI  OSドライバ１１３」及び「ACPI  OSドライバ１２３」）も含む。ACPIドライバは当該技術分野において周知であり、その更なる説明は本明細書及び特許請求の範囲では割愛する。前述のＡＣＰＩドライバは、仮想ＢＩＯＳ１１６及び１２６それぞれにおいて仮想ＡＣＰＩテーブル１１７及び１２７（通常、VMM１３０によって生成される）と相互作用して、ＶＭ毎の構成及び電力管理を行うことができる。しかし、前述の通り、ホスト上の種々のＶＭからの種々のＡＣＰＩイベントが、ホスト・オペレーティング・システムがない状態で解決することができる手法は現在、存在していない。以下の説明はACPIプロトコルの使用を前提としているが、他の構成プロトコルも、本発明の実施例の趣旨から逸脱しない限り、利用することができる。種々のメモリ資源もホスト１００に利用可能であり得る（図１に併せて、（ハードウェア１５０内に含まれる）メモリ資源１４０として示している）。メモリ資源１４０の一部分は、ホスト１００上の各VMに割り当てることができる（VM１１０及びVM１２０それぞれ内にメモリ１１４及びメモリ１２４として示す）。種々のVMに対するメモリ資源のこの割り当ては、通常、VMM１３０によって管理される。
【００１１】
前述の通り、仮想化ホストにおけるＶＭＭは通常、ホスト上の資源の割り当てを管理する役割を果たす。VMMはしたがって、ホスト・プラットフォーム及びホストACPIテーブルを、仮想化ホスト上の各OSがみることが可能であった場合に生じることになる、資源の何れかの競合を回避する役割を果たす。VMMが、「ホスティングされた」VMM（すなわち、ホスト・オペレーティング・システムによって起動され、ホスト・オペレーティング・システムの制御下のVMM）の場合、プラットフォーム・ハードウェア及びポリシー・オーナシップは通常、ホストOSによって維持される。VMMは次いで、ホストOS上に位置し、種々のソフトウェア手法を用いてVMを作成し、仮想化OSを実行させることが可能な完全に仮想のプラットフォームを作成する。これは、VMMが、仮想プラットフォーム・ハードウェア及び仮想ACPIテーブル（実際のプラットフォームとの何らかの関係があり得るか、又はないことがあり得る）全てを作成することを意味する。
【００１２】
VMMは、ホスティングされていない場合（例えば、「ハイパバイザ」）、２つのやり方のうちの１つで資源競合を処理することができる。まず、VMM自体は、プラットフォーム・ポリシー及びACPIのオーナシップを有し、ゲスト全てに対するほぼ完全に仮想のプラットフォームを提供することができる。この手法は、ホスティングされたモデルと非常に類似しているが、ホストOSなしである。その代わりに、ハイパバイザは、ACPI及び電力管理のニュアンスを処理するというかなりの負担を負う。
【００１３】
あるいは、本発明の実施例によれば、VMMは、ホスト１００上のVMの１つをプラットフォームの「ポリシー・オーナ」（以降、「ポリシーVM」として表す）と表すことができる。ポリシーVMは、ホスト１００のプラットフォーム電力ポリシーを支配し、プラットフォーム・ハードウェア及び「実際の」ACPIテーブルの大半を「みる」ことができる。その後のゲストは、プラットフォーム制御に対する必要性なしの特定用途のゲストであり得るものであり、かつ／又は、ハイパバイザによって提示される単純化された仮想プラットフォーム・ハードウェアを有し得る。前述のゲストは「従属ゲスト」と認めることができる。更に、VMMは、前述のゲストにおけるゲスト・ソフトウェアがACPIアウェアである場合に、前述の従属ゲストの仮想化ACPIテーブルを生成することができる。
【００１４】
本発明の実施例は、VMMとACPIテーブルとの間の双方向通信を可能にする。特に、本発明の実施例は、システム・ファームウェアの一部として提供されるACPIテーブル及びACPI手法を強化することによってポリシーVMにおけるACPIサブシステムがVMMと通信することを可能にする。強化された前述のＡＣＰＩ手法は、指定されたメモリ動作領域及び仮想化ハードウェア装置と相互作用して、ＡＣＰＩ関連情報及びイベントをＶＭＭに通知する。指定されたメモリ動作領域は「メールボックス」として用いられ、仮想ハードウェア装置を用いて、メモリ動作領域のメールボックスが、新たな情報を含んでいる旨をVMMに通知する。一実施例では、仮想ハードウェア装置は、未使用の単一の8ビット入力／出力（I／O)ポ―トである。種々の実施例では、仮想化ハードウェア装置に用いられるI／Oポートは、チップセットによってデコードされないI／Oポートであり得るものであり、装置には一切割り当てられないことがあり得るものであり、プラットフォーム上の副作用を有しないことが保証される。これは、同じACPIテーブル及び手法を、VMMがある状態及びVMMがない状態で用いることを可能にする。本発明の実施例の趣旨から逸脱しない限り、別の仮想ハードウェア装置も利用することができる。
【００１５】
逆に、ポリシーVMに通知し、かつ／又は、ポリシーVMと通信して、プラットフォーム管理決定に影響を及ぼすために「メールボックス」をVMMによって用いることもできる。この手法を容易にするために、ポリシーVMにおけるACPIドライバは、システム制御割り込み（「SCI」）及び汎用イベント（「GPE」）を用いることによって「エンライトンされ（enlightened)）」得る。GPEは、当該技術分野における当業者に周知であり、本発明の実施例を不必要にわかりにくくすることのないように本明細書及び特許請求の範囲において更に詳細に説明しないこととする。GPEを用いてSCIの原因を判定することができる。SCIは、ポリシーVMのOSにおけるACPIサブシステムと通信するためにACPIハードウェア（例えば、ホスト１００のチップセット上のACPIハードウェア）によって生成されるACPI定義割り込みである。
【００１６】
よって、本発明の実施例によれば、VMMは、ACPI手法情報をメールボックスに追加し、SCIをポリシーVMに投入することができる。SCIを受け取ると、ポリシーVMのOSにおけるACPIドライバは、割り込みサービス・ルーチン（「ISR」）及び／又はデファード手続コール（「DPC」）をポリシーVMのACPIサブシステムにおいて実行させることができる。ポリシーVMは次いで、GPEステータス・レジスタにクエリすることができ、クエリはVMMによって傍受することができる。VMMはGPEレジスタ・ブロックを仮想化して仮想GPEステータス・レジスタを生成し、その後、ポリシーVMのOSにおけるACPIドライバから前述のISR及び／又はDPCクエリをトラップすることができる。VMMは次いで、クエリの結果を編集し、仮想GPEステータスを「アクティブ」として戻すことができる。その後、ポリシーVMのACPIドライバは、アクティブであったGPEに基づいてSCIを処理するためのドライバをディスパッチすることができる。
【００１７】
図２A乃至２Bは、本発明の種々の実施例を更に詳細に示す図である。本発明の実施例を不必要にわかりにくくすることのないように、特定の構成要素（例えば、仮想BIOS及び仮想ACPIテーブル）は本明細書及び特許請求の範囲に示していない。しかし、本発明の実施例の趣旨から逸脱しない限り、種々の他の構成部分がホスト２００上に存在し、かつ／又はホスト２００に結合され得ることを当業者は容易に認識するであろう。更に、３つのVMを含んでいるとしてホスト２００を示しているが、本発明の実施例の趣旨から逸脱しない限り、より多く又はより少ないVMを実現することができることを当業者は認識するであろう。VMの１つはポリシーVM（「ポリシーVM205」として示し、他のVMは「VM210」及び「VM220」として表す）として表すことができる。
【００１８】
図２Aは、本発明の実施例を示す。ここで、ポリシーVM２０５は、VM２１０及び／又はVM２２０からの入力なしで、プラットフォーム電力ポリシー（ホスト２００）を支配する。この実施例によれば、ホスト上のファームウェア（BIOS２２５として示す）は、ポリシーVM２０５に割り当てられるメモリ資源２４０（「メモリ２０８」として示す）の一部分内のメモリ動作領域（「メールボックス２５０」）を表し得る。一実施例では、メールボックス２５０は、４KB境界上にあり、長さが４KBの倍数であり得る。別の実施例では、本発明の実施例の趣旨から逸脱しない限り、他の境界を利用することができる。
【００１９】
ポリシーVM２０５のゲストOSにおけるAPCIサブシステム（「ゲストOS２０６」及び「ゲスト・ソフトウェア２０７」のうちの「ACPI  OSドライバ２１５」として示している）が方法を実行すると、その方法は情報をメールボックス２５０に投入し、拡張VMM２３０が仮想ACPIハードウェア装置（「IOポート２７５」として示す）にアクセスすることを可能にする。本明細書及び特許請求の範囲使用の「ACPI  OS  ドライバ」の語が、何れかのタイプのACPI（又は同等の）サブシステムを包含し得ることを当業者は容易に分かるであろう。よって、例えば、個々のドライバの概念が存在しないことがあり得るオペレーティング・システムでは、ACPI（又は同等の）サブシステムは、別個の構成部分になることなく、オペレーティング・システムの一部を備え得るに過ぎない。よって、本明細書及び特許請求の範囲における「ACPI  OSドライバ」への参照は何れも、前述のACPI（又は同等の）サブシステムを全て含むものとする。拡張VMM230が、既存VMM、及び／又は既存VMMとともに機能し得るその他の構成要素に対して行われる拡張を備え得ることも当業者に明らかである。拡張VM230は、よって、ソフトウェア（例えば、スタンドアロン・プログラム及び／又は構成部分（ホスト・オペレーティング・システムの））、ハードウェア、ファームウェア及び／又はそれらの何れかの組み合わせで実現することができる。
【００２０】
IOポート２７５をアクセスすると、拡張VMM２３０は、メールボックス２５０における情報を解析することができる。本発明の実施例はよって、ポリシーVM２００がACPI準拠ゲストOS（例えば、ゲストOS２０６）を含む場合、ポリシーVM２０５と拡張VMM２３０が情報を交換することを可能にする。拡張VMM２３０は、その後、この情報をホスト１００上の他のVMに伝播して、適切な措置を（必要な場合、ポリシーVM２０５によって実現されるポリシー決定に基づいて）その他のVMが講じることを可能にすることができる。このようにして、本発明の一実施例によれば、ポリシーVM２０５は、ホスト１００上のプラットフォーム構成及び電力管理の詳細を支配し、よって、種々のVMからの競合イベントを回避することができる。
【００２１】
他の実施例では、図２Bに示すように、拡張VMM２３０は、ホスト１００上のその他のVMの必要性をポリシーVM２０５に通信することができる。ポリシーVM２０５はよって、プラットフォームのポリシー決定を行う前に、ホスト１００上の他のVMの必要性を考慮に入れることができる。すなわち、ポリシーVM205がプラットフォームの決定を一方的に行う代わりに、この実施例では、ホスト２００上の他のVMは、（拡張VMM２３０を介して）決定に影響を及ぼす機会を有し得る。ポリシーVM２０５は、ホスト１００上のその他のVMの要件を評価し、プラットフォームの決定を行う際に前述の要件を考慮に入れることができる。よって、ポリシーVM２０５は、プラットフォームの意思決定のコントロールを持ち続けるが、ホスト２００上のVM全てによりうまく合い得る、より多くの情報を知ったうえでのポリシー作成を行うことを可能にする。
【００２２】
この実施例によれば、BIOS２２５は、メモリ資源２４０内のメモリ・メールボックス２５０をなお指定することができる。ACPI  OSドライバ２１５が方法を実行すると、その方法はメールボックス２５０に情報を投入し、拡張VMM２３０がIOポート２７５にアクセスすることを可能にする。しかし、この実施例では、ACPI  OS  ドライバ２１５は更に、拡張VMM２３０がSCI及びGPEを利用してホスト２００上の電力管理及び構成を連係することができるように「エンライトン」され得る。前述の通り、拡張VMM２３０は、SCIをゲストOS２０６に投入することができる（図２Bに「パスA」として示す）。ポリシーVM２００は、SCIを受け取り、ISR及び／又はDPCをVM１１０のACPIサブシステム（すなわち、ACPI  OSドライバ２１５）において実行させることができる。ISR及び／又はDPCはGPEステータス・レジスタにクエリすることができ、クエリは拡張VMM２３０によって傍受することができる。拡張VMM230は、仮想GPEステータス・レジスタを生成し、その後、ACPI  OSドライバ２１５から前述のISR及び／又はDPCクエリをトラップすることができる。拡張VMM２３０は次いで、クエリの結果を編集し、仮想GPEステータスを「アクティブ」として戻すことができる（図２Bに「パスB」として示す）。その後、ACPI  OSドライバ２１５は、アクティブであったGPEに基づいてSCIを処理するためのエンライトンされたドライバをディスパッチすることができる。一実施例では、ACPI  OSドライバ215は仮想GPEをフックすることができるので、デバイス・ドライバはSCIが投入されると実行することができる。
【００２３】
一実施例では、拡張VMM２３０は、ホスト２００上のハードウェア装置の大半がポリシーVM２０５上のゲストOS２１１に直接マッピングされることを可能にし得る。この実施例では、拡張ＶＭＭ２３０は、ＡＣＰＩプラットフォーム構成及び電力管理動作全てをゲストＯＳ２１１が行うことを可能にすることによって単純にすることができる。しかし、拡張ＶＭＭ２３０は、適切なプラットフォーム管理を行うためにいくつかのタイプのＡＣＰＩイベントについて通知されなければならない。前述には、Ｓ状態、Ｃ状態、Ｐ状態及びＴ状態の遷移が含まれる。この情報の一部はスタティックＡＣＰＩテーブルによって入手可能であるが、他の情報は、ゲストＯＳ２１１におけるＡＭＬインタプリタによってＡＣＰＩ手法の実行によってのみ利用可能であり得る。このシナリオでは、ゲストＯＳ２１１は、構成及び電力管理のためにプラットフォーム・ポリシーを保有し得る。拡張ＶＭＭ２３０並びにゲストＯＳ２１１及びゲストＯＳ２２１は、前述のポリシー決定を順守する必要があり得る。
【００２４】
一実施例では、拡張VMM２３０は、仮想ファームウェア及び仮想化プラットフォーム構成部分を生成するよう企図することもできる。この実施例では、ゲストOS２０６がACPI準拠であるとすれば、拡張VMM２３０は、仮想化されたACPIテーブル及び手法も生成することができる。拡張VMM２３０は、前述の種々の実施例による前述のACPIテーブル及び手法を強化することができる。この実施例によれば、拡張VMM230は、プラットフォーム構成及び電力管理イベントへの可視性を有し得るものであり、上記情報を用いて、各ゲストVMに供給されるハードウェア資源及びCPUサイクルを最適化することができる。よって、例えば、拡張VMM230が、VM210からのS3、S4又はS5遷移を検出した場合、拡張VMM２３０のスケジューリング機構は、VM２１０へのCPUサイクルの割り当てを停止することができ、代わりに、ホスト２００上の他のVM（例えば、ポリシーVM２０５及びVM２２０）にCPUメモリやその他のハードウェア資源を割り当てることができる。拡張VMM２３０は、各VMにおけるCx、Px及びTx状態遷移の知識を用いて、VMに割り当てられるCPU及びCPUサイクルの数を調節することもできる。このようにして、拡張VMM230は、ホスト200上のVM内のゲストＯＳ全ての状態に対する大局的な表示を維持し、それによって、最適なプラットフォーム構成及び電力管理の決定を拡張VMM２３０が行うことを可能にすることができる。
【００２５】
図３は、本発明の実施例を示すフロー図である。以下の動作は、順次プロセスとして表すことができるが、動作の多くは実際には、並列及び／又は同時に行うことができる。更に、動作の順序は、本発明の実施例の趣旨から逸脱しない限り、再配列することができる。301では、ホスト200が起動すると、BIOS225が、ポリシーVM205のメモリ内のメモリ動作領域（「メールボックス２５０」）を指定することができる。その後、302で、拡張VMM230は、ポリシーVM205を含む、ホスト２００上の種々のVMをインスタンス化することができる。ポリシーVM205は、ゲストOS２０６内のACPI  OSドライバ２１５を含み得る。303では、ACPI  OSドライバ215は手法を実行することができ、304では、この手法からの情報をメールボックス250に入れることができる。305では、イベントを（IOポートや前述のその他の機構を介して）生成することができる。その後、306では、拡張ＶＭＭ２３０は、メールボックス２５０から情報を取り出し、307で適切な措置を講じることができる。
【００２６】
図4は、本発明の実施例を示すフロー図である。やはり、以下の動作は、順次プロセスとして表すことができるが、動作の多くは実際に並列及び／又は同時に行うことができる。更に、本発明の趣旨から逸脱しない限り、動作の順序を再配列することができる。前述の通り、４０１では、ホスト２００が起動すると、BIOS２２５は、ポリシーVM２０５のメモリ内のメモリ動作領域（「メールボックス２５０」）を指定することができる。その後、４０２で、拡張VMM２３０は、ホスト２００上の種々のVM（ポリシーVM２０５を含む）をインスタンス化することができる。ポリシーVM２０５は、ゲストOS２０６内にACPI  OSドライバ２１５を含み得る。４０３では、拡張VMM２３０は、メールボックス２５０をデータで埋めることができ、４０４では、拡張VMM２３０はSCIをゲストOS２０６に投入することができる。４０５では、ゲストOS２０６はSCIをACPI  OSドライバ２１５に転送することができ、４０６では、ACPI  OSドライバ２１５は、ACPIハードウェアにおけるGPEにクエリしてSCIの原因を判定することができる。拡張VMM２３０は、４０７で、仮想GPEの仮想GPEステータス・レジスタを生成し、仮想GPEステータスを「アクティブ」として戻すことによって前述のクエリに応答することができる。４０８では、ACPI  OSドライバ２１５は、アクティブであったGPEに基づいてSCIを処理するためのドライバをディスパッチすることができる。
【００２７】
本発明の実施例によるホストは、種々の計算装置上で実現することができる。本発明の実施例によれば、計算装置は、本発明の実施例を実現する旨の命令を実行することができる種々の構成部分を含み得る。例えば、計算装置は、マシンアクセス可能な少なくとも１つの媒体を含み得るものであり、かつ／又は、マシンアクセス可能な少なくとも１つの媒体に結合し得る。本明細書及び特許請求の範囲記載の「マシン」は、限定しないが、１つ又は複数のプロセッサを備えた何れかの計算装置を含む。
本明細書及び特許請求の範囲記載の、マシンアクセス可能な媒体は、計算装置によってアクセス可能な何れかの形態における情報を記憶し、かつ／又は伝送する何れかの機構を含み、マシンアクセス可能な媒体は、限定しないが、記録可能な／記録可能でない媒体（リードオンリー・メモリ（ROM）、ランダム・アクセス・メモリ（RAM）、磁気ディスク記憶媒体、光記憶媒体や、フラッシュ・メモリ装置など）、並びに、伝搬信号（搬送波、赤外信号やディジタル信号など）の電気的、光学的、音響的、又はその他の形式を含む。
【００２８】
一実施例によれば、計算装置は、１つ又は複数のプロセッサなどの種々の他の周知の構成部分を含み得る。プロセッサ及びマシンアクセス可能な媒体は、通信するようブリッジ／メモリ・コントローラを用いて結合することができ、プロセッサは、マシンアクセス可能な媒体に記憶された命令を実行することができ得る。ブリッジ／メモリ・コントローラはグラフィクス・コントローラに結合することができ、グラフィックス・コントローラは、表示装置上の表示データの出力を制御することができる。ブリッジ／メモリ・コントローラは１つ又は複数のバスに結合することができる。前述の構成要素の１つ又は複数は、単一のパッケージ上に、又は複数のパッケージ若しくはダイを用いて、プロセッサとともに一体化することができる。ユニバーサル・シリアル・バス（「ＵＳＢ」）ホスト・コントローラなどのホスト・バス・コントローラはバスに結合することができ、複数の装置をＵＳＢに結合することができる。例えば、キーボードやマウスなどのユーザ入力装置を、入力データを供給するために計算装置に含めることができる。別の実施例では、ホスト・バス・コントローラは、種々の他の相互接続標準（ＰＣＩ、ＰＣＩエクスプレス、ファイヤワイヤやその他のそうした既存及び将来の基準を含む）と互換であり得る。
【００２９】
上記明細書では、その特定の例示的な実施例を参照して本発明を説明している。しかし、特許請求の範囲記載の本発明のより広範囲にわたる趣旨及び範囲から逸脱しない限り、種々の修正及び変更を行うことができることが認識されよう。本明細書及び添付図面はよって、限定的な意味合いでなく例証的な意味合いで解するものとする。
【図面の簡単な説明】
【００３０】
【図１】通常の仮想マシン・ホストの例を示す図である。
【図２Ａ】本発明の種々の実施例を更に詳細に示す図である。
【図２Ｂ】本発明の種々の実施例を更に詳細に示す図である。
【図３】本発明の実施例を示すフロー図である。
【図４】本発明の実施例を示すフロー図である。
【図１】
2009508183.tif 000002
【図２Ａ】
2009508183.tif 000003
【図２Ｂ】
2009508183.tif 000004
【図３】
2009508183.tif 000005
【図４】
2009508183.tif 000006
【国際調査報告】
2009508183.tif 000007
2009508183.tif 000008
2009508183.tif 000009