プラットフォームハードウェアと、ゲスト仮想マシンと、仮想マシンモニタとを備え、前記仮想マシンモニタは、前記仮想マシンモニタでエミュレートされている仮想デバイス、および、前記プラットフォームハードウェア内の物理デバイスの仮想機能のうち一方を、前記ゲスト仮想マシンに割り当てて、前記割り当てられた方のデバイスを介して、複合仮想デバイスを前記ゲスト仮想マシンに公開するシステム。前記エミュレートされている仮想デバイスおよび前記仮想機能のうちどちらのデバイスが前記複合仮想デバイスについてアクティブ状態であるかを検出して、前記アクティブ状態のデバイスに一致するプラグインを選択するゲストドライバをさらに備える請求項1に記載のシステム。仮想マシン移行を前記ゲストドライバに通知する仮想マシンツールモジュールをさらに備える請求項2に記載のシステム。前記仮想マシンモニタはさらに、前記割り当てられた方のデバイスインターフェースから独立している、前記複合仮想デバイスについてのコンフィグレーションスペースを、前記ゲスト仮想マシンに公開する請求項2または3に記載のシステム。前記仮想マシンモニタはさらに、前記コンフィグレーションスペースから前記アクティブ状態のデバイスへのマッピングを維持する請求項4に記載のシステム。前記仮想マシンモニタはさらに、前記エミュレートされている仮想デバイスおよび前記仮想機能をカバーするべく前記コンフィグレーションスペース内の1以上のフィールドを提供する請求項4または5に記載のシステム。前記エミュレートされている仮想デバイスは、エミュレートされているグラフィクス処理機能を実施するべく、エミュレートされている仮想グラフィクスデバイスを含む請求項1から6のいずれか一項に記載のシステム。前記ゲストドライバは、ラッパ-プラグイン構造を持ち、前記ラッパは、前記アクティブ状態のデバイスに対応するプラグインを決定する請求項2から6のいずれか一項に記載のシステム。前記仮想マシンモニタはさらに、前記ゲスト仮想マシンのゲストオペレーティングシステムにおいてプラグアンドプレイイベントをトリガすることなく、前記複合仮想デバイスにおいて、前記エミュレートされている仮想デバイスと前記物理デバイスの前記仮想機能との間で切り替えを行う請求項1から8のいずれか一項に記載のシステム。エミュレートされている仮想グラフィクスデバイス、および、ホスト内の物理グラフィクスデバイスの仮想機能のうち一方を介して、複合仮想グラフィクスデバイスを提供する段階と、前記複合仮想グラフィクスデバイスをゲストに公開する段階とを備える方法。前記ゲストのゲストオペレーティングシステムからホットプラグ/アンプラグを行うことなく、仮想機能デバイスと前記エミュレートされている仮想グラフィクスデバイスとの間で切り替えを行う段階をさらに備える請求項10に記載の方法。前記複合仮想グラフィクスデバイスについて前記エミュレートされている仮想グラフィクスデバイスおよび前記仮想機能のうちどちらがアクティブ状態であるかからは独立している、前記複合仮想グラフィクスデバイスについてのPCIeコンフィグレーションスペースを公開する段階をさらに備える請求項10または11に記載の方法。前記PCIeコンフィグレーションスペースは、前記エミュレートされている仮想グラフィクスデバイスおよび前記仮想機能のうちアクティブ状態である方へマッピングされている1以上のフィールドを含む請求項12に記載の方法。前記エミュレートされている仮想グラフィクスデバイスと前記仮想機能との間で切り替えが発生することに応じて、切り替え先のデバイスに対応するプラグインドライバを決定する段階と、前記エミュレートされている仮想グラフィクスデバイスおよび前記仮想機能のうち前記切り替え先である一方を初期化する段階とをさらに備える請求項10から13のいずれか一項に記載の方法。前記ゲストのゲストオペレーティングシステムにおいてプラグアンドプレイイベントをトリガすることなく、前記複合仮想グラフィクスデバイスにおいて前記エミュレートされている仮想グラフィクスデバイスと前記仮想機能との間での切り替えを行う段階をさらに備える請求項10から14のいずれか一項に記載の方法。コンピュータに、ホスト内の物理グラフィクスデバイスの仮想機能、および、エミュレートされている仮想グラフィクスデバイスのうち一方をゲストに割り当てる手順と、PCIeグラフィクスデバイスの仮想モデルを前記ゲストに公開する手順とを実行させるためのプログラムであって、前記PCIeグラフィクスデバイスは、前記割り当てられた方のデバイスを介してグラフィクス機能を持つプログラム。前記コンピュータにさらに、前記PCIeグラフィクスデバイスの前記仮想モデルについて、前記仮想機能および前記エミュレートされている仮想グラフィクスデバイスのうちどちらのデバイスがアクティブ状態であるかを検出する手順と、検出されたアクティブ状態である前記デバイスに一致するプラグインを選択する手順とを実行させるための請求項16に記載のプログラム。前記コンピュータにさらに、前記ゲストに対して、前記PCIeグラフィクスデバイスの前記仮想モデルのPCIeコンフィグレーションスペースを公開する手順を実行させるためのプログラムであって、前記PCIeコンフィグレーションスペースは、前記割り当てられた方のデバイスから独立しており、前記仮想機能および前記エミュレートされている仮想グラフィクスデバイスのコンフィグレーションをカバーする請求項16または17に記載のプログラム。前記コンピュータにさらに、前記ゲストにおいて仮想マシン移行が発生することに応じて、前記PCIeグラフィクスデバイスの前記仮想モデルにおいてPCIe機能レベルリセットを実行して、前記仮想機能および前記エミュレートされている仮想グラフィクスデバイスへのアクセスを無視する手順を実行させるための請求項16から18のいずれか一項に記載のプログラム。前記コンピュータにさらに、前記仮想マシン移行に基づき、前記PCIeグラフィクスデバイスの前記仮想モデルの基礎となる前記物理グラフィクスデバイスと前記仮想機能との間において切り替えを行う手順を実行させるための請求項19に記載のプログラム。以下に記載する説明では、複合仮想グラフィクス装置を可能とする利用モデルを提供する技術について述べる。一実施形態によると、複合仮想グラフィクス装置は、仮想マシン環境において実現され得る。別の実施形態によると、複合仮想グラフィクス機能は、プロセッサベースのコンピューティングシステムにおいて実現され得る。本発明に係る技術を実現するのはコンピューティングシステムに限定されるものではなく、同様の目的を持つ実行環境、例えば、任意のその他のデジタル/電子装置またはシステムで用いられるとしてよい。以下の説明では、数多くの具体的且つ詳細な内容、例えば、ロジック実装、オペコード、オペランド特定手段、リソースのパーティション化/共有/複製の実施例、システムコンポーネントの種類および相関関係、および、ロジックのパーティション化/統合化の選択肢について、本発明をより深く理解していただくべく、記載している。しかし、本発明はこのような具体的且つ詳細な内容を採用することなく実施するとしてもよい。また、制御構造および完全ソフトウェア命令シーケンスは、本発明をあいまいにしないように、詳細な説明を省略している。本明細書において一実施形態、ある実施形態、実施形態例等の記載がある場合、説明している実施形態が、特定の特徴、構造または特性を含むことを意味するが、全ての実施形態が必ずしもこの特定の特徴、構造または特性を含むとは限らない。さらに、このような記載は必ずしも同じ実施形態を指すものではない。さらに、特定の特徴、構造または特性をある実施形態に関連付けて説明している場合、このような特徴、構造または特性を他の実施形態に関連付けて実現することは、明示的に記載されているか否かにかかわらず、当業者の想到し得る範囲内であると考えられる。本発明の実施形態は、ハードウェア、ファームウェア、ソフトウェアまたはこれらの任意の組み合わせで実現されるとしてよい。本発明の実施形態はさらに、1以上のプロセッサによって読み込まれて実行される機械可読媒体に格納されている命令として実現されるとしてもよい。機械可読媒体は、機械例えば、コンピューティングデバイスが読み出し可能な形式で情報を送信または格納する任意の機構を含むとしてよい。例えば、機械可読媒体は、リードオンリーメモリROM、ランダムアクセスメモリRAM、磁気ディスク格納媒体、光格納媒体、フラッシュメモリデバイス、電気伝搬信号、光伝搬信号、音響伝搬信号またはその他の形式の伝搬信号例えば、搬送波、赤外信号、デジタル信号等等を含むとしてよい。以下の説明は、第1、第2等の用語を含むが、これは説明を目的としたものに過ぎず、限定的に解釈すべきではない。図1は、仮想マシン環境100の一実施形態を示すブロック図である。本実施形態において、プロセッサベースのプラットフォーム116はVMM114を実行するとしてよい。VMMは、ソフトウェアで実現されるが、仮想マシンインターフェースをエミュレートして、より上位のソフトウェアにエクスポートするとしてよい。このような上位のソフトウェアは、標準的なOS、リアルタイムOSを含むとしてよく、オペレーティングシステム機能が限定されている必要最低限の環境であってもよいし、一部の実施形態では標準的なOSで利用可能なOS機能を含まないとしてもよい。これに代えて、例えば、VMM114は、別のVMMにおいて実行されるとしてもよいし、または、別のVMMのサービスを用いて実行されるとしてもよい。VMMは、例えば、ハードウェア、ソフトウェア、ファームウェアで実現されるとしてもよいし、または、一部の実施形態ではさまざまな技術を組み合わせて実現するとしてもよい。少なくとも一の実施形態では、VMMの1以上のコンポーネントは、1以上の仮想マシンで実行されるとしてよく、VMMの1以上のコンポーネントは、図1に図示するように、プラットフォームハードウェアで実行されるとしてよい。プラットフォームハードウェアで直接実行されるVMMのコンポーネントは、本明細書ではVMMのホストコンポーネントと呼ぶ。別の実施形態では、VMM114の例は、ハイブリッド仮想マシンモニタ、ホスト仮想マシンモニタまたはハイパーバイザ仮想マシンモニタを含むとしてよい。プラットフォームハードウェア116は、パーソナルコンピュータPC、サーバ、メインフレーム、携帯情報端末PDA、タブレット、スマートフォンまたは任意のその他のスマートデバイス等の手持ちデバイス、インターネットプロトコルデバイス、デジタルカメラ、ポータブルコンピュータ、ネットブックまたはノートブック等の手持ちPC、または、マイクロコントローラ等の埋め込みアプリケーション、デジタルシグナルプロセッサDSP、システムオンチップSoC、ネットワークコンピュータNetPC、セットトップボックス、ネットワークハブ、ワイドエリアネットワークWANスイッチ、または、別のプロセッサベースのシステムであってよい。プラットフォームハードウェア116は、少なくともプロセッサ118およびメモリ120を含む。プロセッサ118は、プログラムを実行可能な任意の種類のプロセッサ、例えば、マイクロプロセッサ、デジタルシグナルプロセッサ、マイクロコントローラ等であってよい。プロセッサは、実施形態において実行されるマイクロコード、プログラム可能ロジックまたはハードコードロジックを含むとしてよい。図1が図示するプロセッサ118は1つのみであるが、実施形態に係るシステムでは1以上のプロセッサであってよい。また、プロセッサ118は、複数のコアを含むとしてよく、複数のスレッドをサポートしている等としてよい。プロセッサ118は、本明細書で説明するさまざまな実施形態に対応付けられている処理を実行するマイクロコード、プログラム可能ロジックまたはハードコードロジックを含むとしてよい。メモリ120は、さまざまな実施形態において、ハードディスク、フロッピー登録商標ディスク、ランダムアクセスメモリRAM、リードオンリーメモリROM、フラッシュメモリ、任意のその他の種類の揮発性メモリデバイスまたは不揮発性メモリデバイス、または、上記のデバイスの組み合わせ、または、プロセッサ118から読み出し可能な任意のその他の種類の機械媒体を含むとしてよい。メモリ120は、プログラムの実行および他の方法の実施形態を実行するための命令および/またはデータを格納しているとしてよい。一部の実施形態によると、本発明の一部の構成要素は、他のシステムコンポーネントで、例えば、プラットフォームのチップセットで、または、システムの1以上のメモリコントローラで実現されるとしてよい。VMM114は、ゲストソフトウェアに、1以上の仮想マシンの抽象化を提示するとしてよい。VMM114は、複数のVMに対して、物理プラットフォームの同じ抽象化、または、複数の異なる抽象化を提示するとしてよい。図1の実施形態は、2つの仮想マシン102および112を示している。各仮想マシンで実行されているゲストソフトウェア103および113等のゲストソフトウェアは、ゲストOS104または106等のゲストOS、ならびに、さまざまなゲストソフトウェアアプリケーション108および110を含むとしてよい。ゲストソフトウェア103および113は、他の機能を実行するべく、ゲストソフトウェア103および113が実行されている仮想マシン内の物理リソース例えば、プロセッサレジスタ、メモリおよびI/Oデバイスにアクセスするとしてよい。例えば、ゲストソフトウェア103および113は、仮想マシン102および112で提示されているプロセッサおよびプラットフォームのアーキテクチャに応じて、全てのレジスタ、キャッシュ、構造、I/Oデバイス、メモリ等に対するアクセスを持つとしてよい。一実施形態によると、プロセッサ118は、仮想マシン102および112の動作を制御するとしてよい。一実施形態によると、仮想マシン102が自身の仮想アドレス空間内のメモリ位置を参照することに応じて、ホストマシン116の物理メモリマシン物理メモリ内の実際のアドレスへの参照を、VMM114内のメモリ管理モジュール不図示で生成するとしてよい。これは、ハードウェア場合によっては、プロセッサ118に組み込まれるおよびソフトウェア例えば、ホストマシンのオペレーティングシステムでで実行されるとしてよい。図1の実施形態では、プラットフォームハードウェア116はさらに、1以上のI/Oデバイス122を含むとしてよい。プラットフォームハードウェア116はさらに、1以上のグラフィクス機能を実行するべく用いられる1以上のグラフィクス制御デバイス124を含むとしてよい。一部の実施形態によると、プラットフォームハードウェア116は、任意のその他の物理グラフィクスデバイスを含むとしてよい。図2は、一実施形態に応じた、仮想マシン環境において実現される複合仮想グラフィクス装置の一例を示す図である。図2を参照すると、仮想マシン環境200は、仮想マシンモニタVMM220およびプラットフォーム210を含むとしてよい。プラットフォーム210は、プロセッサ118、メモリ120、入出力デバイス122、グラフィクスデバイス124等のハードウェアを含むとしてよいが、一部の実施形態によると、プラットフォーム210は、任意のその他のプラットフォームハードウェアデバイスを含むとしてよい。一実施形態によると、プラットフォーム210におけるプロセッサは、ソフトウェア命令を実行可能な任意の種類のプロセッサであってよく、例えば、複合命令セットコンピュータCISCマイクロプロセッサ、縮小命令セットコンピュータRISCマイクロプロセッサ、超長命令語VLIWマイクロプロセッサ、複数の命令セットの組み合わせを実行するプロセッサ、または、任意のその他のプロセッサデバイス、例えば、デジタルシグナルプロセッサ、マイクロプロセッサ、デジタルシグナルプロセッサまたはマイクロコントローラ等であってよい。プラットフォーム210内のプロセッサは、本明細書で説明するさまざまな実施形態に対応付けられている処理を実行するマイクロコード、プログラム可能ロジック、または、ハードコードロジックを含むとしてよい。一実施形態によると、1以上のプロセッサがプラットフォーム210内に設けられているとしてよく、1以上のプロセッサは、複数のスレッド、複数のコア等を含むとしてよい。実施形態は、コンピューティングシステムに限定されない。本発明の別の実施形態は、任意のフォームファクタのデバイス、例えば、手持ちデバイスおよび埋め込みアプリケーションで用いることができる。プラットフォーム210は、手持ちデバイス、ポータブルコンピュータ、セットトップボックスまたは任意のその他のプロセッサベースのシステムのハードウェアプラットフォームを含むとしてよい。手持ちデバイスの例を幾つか挙げると、携帯電話、スマートフォン、タブレット、インターネットプロトコルデバイス、デジタルカメラ、携帯情報端末PDA、または、ネットブックまたはノートブック等の手持ちPCがあるとしてよい。埋め込みアプリケーションは、マイクロコントローラ、デジタルシグナルプロセッサDSP、システムオンチップSoC、ネットワークコンピュータNetPC、セットトップボックス、ネットワークハブ、ワイドエリアネットワークWANスイッチ、または、任意のその他のシステムを含むとしてよい。図2を参照すると、ある実施形態において、VMM220は、他のソフトウェアに、1以上のVMまたは仮想システム不図示の抽象化を提示するとしてよい。一実施形態によると、VMM220は、環境200内のハードウェアリソースを、VMまたは仮想システムにおいて実行されている1以上の同時に動作しているオペレーティングシステムセッションに分散させることができるとしてよい。ゲストプラットフォーム250上の各VMは、自己完結型のプラットフォームとして機能するとしてよく、自身のゲストオペレーティングシステムVMMがホストするオペレーティングシステムOSおよび他のソフトウェアを実行する。これらはまとめて、ゲストソフトウェアと呼ぶ。ある実施形態によると、ゲストプラットフォーム250は、さまざまなイベントを制御するとしてよく、さまざまなハードウェアリソースにアクセスすることができるとしてよい。ゲストプラットフォーム250の各仮想マシンで実行されているゲストソフトウェアは、ゲストOSまたはゲストカーネル230、および、ゲストユーザインターフェース240上のさまざまなゲストソフトウェアアプリケーション242を含むとしてよい。VMM220は、ハードウェア、ソフトウェア、ファームウェアまたはこれらの組み合わせで実現されるとしてよい。一実施形態によると、ゲストプラットフォーム250は、ゲストグラフィクスサブシステムとして機能するとしてよい。図2を参照すると、ある実施形態において、プラットフォーム210は物理グラフィクスデバイス212を含むとしてよい。一実施形態によると、物理グラフィクスデバイス212は、SR-IOVまたは任意のその他の規格等のハードウェア仮想化規格をサポートしているとしてよい。VMM220は、物理グラフィクスデバイス212の1以上の仮想機能214をゲストOS230に割り当てるとしてよい。図2の実施形態によると、VMM220は、ゲストOS230に、複合仮想グラフィクスデバイスCVGD222を公開するとしてよい。一実施形態によると、複合仮想グラフィクスデバイス222は、基礎となるエミュレートされたビデオグラフィクスアレイVGAデバイス224、エミュレートされた仮想グラフィクス処理ユニットVGPU226等の仮想グラフィクスデバイス、物理グラフィクスデバイス212の仮想機能VF214を統合して、ソフトウェアでエミュレートされたVGA機能をVGA224を介して、および、グラフィクス機能をVGPU226およびデバイス212のVF214の一方を介して提供するとしてよい。別の実施形態によると、複合仮想グラフィクスデバイス222は、VGPU226およびVF214へのアクセスを統合する単一のペリフェラルコンポーネントインターコネクトエクスプレスPCIeグラフィクスデバイスとして、VMに対して提示されるとしてよい。複合仮想グラフィクスデバイス222は、例えば、VMに提供されるグラフィクスアクセラレーション機能および/または他のグラフィクス機能のために、VGPU226とVF214との間で切り替えを行うとしてよい。VMM220が提供するVGA224は、グラフィクスデバイス212の仮想機能214を増強するとしてよい。一実施形態によると、VGA224は、例えば、ブートプロセスVFドライバがロードされる前および/または診断出力において利用されるとしてよい。一部の実施形態によると、VMM220は、複合仮想グラフィクスデバイス222内のスーパーVGAをゲストOS230に提供して、例えば、グラフィクス機能の改善をサポートするとしてよい。一実施形態によると、VF214が無いプラットフォームの場合、VMM220は、エミュレートされたグラフィクス処理機能、例えば、グラフィクスレンダリング機能および/またはメディアレンダリング機能を、ソフトウェアエミュレーション例えば、VGPU226で、または、ホストグラフィクスハードウェアによるアクセラレーションを利用して、実現するとしてよい。VMM220は、例えば、ゲストOS230におけるプラグアンドプレイPnPイベントをトリガすることなく、同じ複合仮想グラフィクスデバイス222内において、基礎となるエミュレートされたVGPU226とVF214との間で動的に切り替えを行うとしてよい。一実施形態によると、VMM220は、複合仮想グラフィクスデバイス222のPCIeコンフィグレーションスペースを、ゲストOS230に公開するとしてよい。PCIeコンフィグレーションスペースは、基礎となるグラフィクスデバイスのうち利用されているものからは独立しているとしてよい。例えば、VMM220は、例えば、エミュレートされたグラフィクスデバイスVGPU226またはVF214のいずれが用いられるか、または、仮想機能がどのグラフィクスハードウェアからのものかに関係なく、複合仮想グラフィクスデバイス222の同じPCIeコンフィグレーションスペースを維持するとしてよい。VMM220はさらに、複合仮想グラフィクスPCIeコンフィグレーションスペース例えば、ゲストOSに可視からアクティブ状態の基礎となるデバイスへのマッピングを維持するとしてよい。コンフィグレーションスペースは、基礎となるデバイスのうち1以上のコンフィグレーションを含むべく、ベースアドレスレジスタBARのオーバープロビジョニングの数および/またはサイズを持つとしてよい。一実施形態によると、PCIeコンフィグレーションスペースは、1以上のレジスタおよび/またはフィールドを含むとしてよい。例えば、仮想グラフィクスPCIeコンフィグレーションスペースは、ベンダ識別情報VID、デバイスIDDID等のデータフィールドを含むとしてよい。別の実施形態によると、仮想グラフィクスPCIeコンフィグレーションスペースは、コンフィグレーションスペース内の制御レジスタセットの一部であるBAR0およびBAR1からBAR5等のベースアドレスレジスタBARを含むとしてよい。例えば、BARは、メモリマッピングI/OMMIOレジスタまたはI/Oレジスタまたはメモリ領域を含むとしてよい。別の実施形態によると、仮想デバイスの場合、VMMは、仮想ベンダIDおよび/またはデバイスID等の情報をPCI-eコンフィグレーションレジスタに格納するとしてよく、および/または、BARのうち1つに含まれるMMIOレジスタに、現在の状況について設定するべくドライバによって利用され得る任意の情報を格納するとしてよい。一実施形態によると、VID/DIDは、コンフィグレーションスペースにあるとしてよいが、BAR0または任意のその他のBARにはないとしてよく、一部の実施形態によると、VIDおよび/またはDIDは任意のその他のレジスタにあるとしてよい。一実施形態によると、VIDは、基礎となるハードウェアから独立しているベンダIDであってよく、VF214またはグラフィクスデバイス212等のハードウェアの挿入/取消が行われても変化しないとしてよい。DIDは、基礎となるハードウェアから独立しているID値を持つ仮想デバイスIDDIDであってよく、VF214等のハードウェアの挿入/取消が行われてもそのままであるとしてよい。別の実施形態では、BAR0は、基礎となるグラフィクスデバイスを特定するために用いられる1以上のVMMでエミュレートされたメモリマッピングI/OMMIOレジスタへとマッピングされるとしてよい。一実施形態によると、BAR0は、2つのレジスタHWVIDおよびHWDIDを含むとしてよい。一部の実施形態によると、BAR0は1以上のレジスタを含むとしてよい。HWVIDレジスタは、基礎となるグラフィクスデバイスのベンダIDを格納するとしてよい。基礎となるグラフィクスデバイスは、エミュレートされたグラフィクスデバイス226またはVF214であってよい。HWDIDレジスタは、基礎となるグラフィクスデバイスのデバイスIDを格納するとしてよい。基礎となるグラフィクスデバイスは、エミュレートされたグラフィクスデバイス226またはVF214であってよい。一部の実施形態によると、ベンダID、デバイスIDおよびBAR0は、物理機能PFおよび/または仮想機能VF等のSR-IOVsingle-rootI/Ovirtualizationグラフィクスハードウェアにマッピングしないとしてよい。別の実施形態によると、仮想グラフィクスPCIeコンフィグレーションスペースは、1以上のエミュレートされたグラフィクスデバイスおよび/または1以上のサポートされているVF実装をカバーするべく、数および/サイズに関してオーバープロビジョニングされているBAR1からBAR5等の1以上のレジスタを含むとしてよい。一部の実施形態によると、冗長なレジスタの数を変更するとしてもよい。VMM220は、冗長なBAR1からBAR5を、アクティブ状態のエミュレートされたグラフィクスデバイス226またはVF214等の現在のアクティブ状態の基礎となるグラフィクスデバイスのレジスタに動的にマッピングするとしてよい。一実施形態によると、VMM220は、エミュレートされたグラフィクスデバイス226またはVF214のいずれが利用されるかに関わらず、または、どのグラフィクスハードウェアから仮想機能が提供されているかに関わらず、同じPCIeコンフィグレーションスペースを維持するとしてよい。VMM220は、仮想グラフィクスPCIコンフィグレーションスペースゲストOSに可視からアクティブ状態の基礎となるグラフィクスデバイスへのマッピングを維持するとしてよい。図2を参照すると、ゲストOS230は、ゲストグラフィクスドライバ232を含むとしてよい。VMM220は、ゲストグラフィクスドライバ232について、複合仮想PCIeグラフィクスデバイス222によって公開されるアクティブ状態の基礎となるデバイスを検出する手段を提供するとしてよい。ある実施形態によると、ゲストグラフィクスドライバ232は、ラッパ-プラグイン構造を持つとしてよい。基礎となるデバイスであるVGPU226およびVF214はそれぞれ、ゲストグラフィクスドライバ232の対応するプラグインによって管理されるとしてよい。例えば、ゲストグラフィクスドライバ232は、VGPU226についてはドライバプラグイン236を持ち、VF214についてはプラグイン238を持つとしてよい。基礎となるグラフィクスデバイスについての各ドライバプラグインは、基礎となるグラフィクスデバイスのBARマッピングに関して知っているとしてよい。ある実施形態によると、ラッパ234は、複合仮想グラフィクスデバイス222によって公開されるアクティブ状態の基礎となるグラフィクスデバイスを検出して、検出した基礎となるデバイスに一致する適切なプラグインを選択するとしてよい。ラッパ234は、現在アクティブである基礎となるデバイスについてプラグインを決定するとしてよく、および/または、VMM220が基礎となるグラフィクスデバイスを切り替えることに応じて、新しいプラグインを切り替えるとしてよい。ラッパ234はさらに、一連の1以上の標準的なグラフィクスデバイスドライバインターフェースDDIをゲストOS230および/またはグラフィクススタック244に提供するとしてよく、実行のために現在アクティブ状態であるプラグインにインターフェースをマッピングするとしてよい。例えば、OSは、標準的なインターフェースをグラフィクススタックに対して定義するとしてよく、例えばWindows登録商標用のDirectXを定義するとしてよいが、一部の実施形態は任意の標準的なインターフェースを利用するとしてよい。例えば、VMM220による基礎となるグラフィクスデバイスの切り替えに応じて、ラッパ234は通知およびスクリーン再描画を利用してユーザに知らせるとしてよい。一実施形態によると、VM移行に応じて、ラッパ234は、ゲストOS230およびグラフィクススタック244に対して、基礎となるグラフィクスデバイスが切り替わった旨を通知するとしてよい。例えば、ラッパ234は、ゲストOS230およびグラフィクススタック244に対して、例えば、Windows登録商標Vistaにおいて、ドライバ呼び出しのタイムアウトによって切り替えを通知するとしてよい。別の実施形態によると、ラッパ234は、グラフィクスデバイスを再度初期化する修復シーケンスをゲストOS230からプロンプトするとしてよい。別の実施形態によると、ゲストグラフィクスドライバ232は、ラッパ234からの通知に応じて、アクティブ状態の基礎となるデバイスのプラグインを呼び出すとしてよい。別の実施形態では、VM移行に応じた基礎となるグラフィクスデバイスの切り替えの通知に応じて、グラフィクススタック244および/または242等のゲストユーザインターフェースUIアプリケーションが、それぞれのウィンドウを再描画するとしてよい。一実施形態によると、ゲストOS230およびグラフィクススタック244は、グラフィクススタック244および/またはUIアプリケーション242によるグラフィクスハードウェアリセットおよび/または自動再描画をサポートしているとしてよい。図2の実施形態によると、ゲストユーザインターフェース240はさらに、例えば図4Aおよび図4Bを参照しつつ説明するように、VM移行の開始および/または管理に利用されるVMツール246を含むとしてよい。図2はVGPU226およびVF214を図示しているが、一部の実施形態では、VMM220が実現している複合仮想グラフィクスデバイスは、1以上の基礎となるハードウェアベースのデバイスおよび/またはソフトウェアベースのデバイスをカバーしているとしてよく、VMM220は、デバイスが利用可能になること、または、利用不可能になることに応じて、複数の基礎となるデバイス間で切り替えを行うとしてよい。図2は複合仮想グラフィクスデバイスの実施形態を図示したが、一部の実施形態において、VMM220は、基礎となるデバイスが利用可能か否かに基づいてゲストに複合仮想デバイスを提供するべく、任意のその他の基礎となるデバイス間で切り替えを行うとしてよい。図3は、本発明の実施形態に係る方法の実施形態を説明するためのフローチャートである。ある実施形態によると、図3のフローチャートは、ゲストスタートアップに関するとしてよい。ブロック302において、VMMは、VFまたはエミュレートされたグラフィクスデバイス等の基礎となるグラフィクスデバイスをゲストOSに割り当てるとしてよい。ブロック304において、VMMは、ゲストについて仮想PCIeグラフィクスデバイスを設定するとしてよい。例えば、VMMは、割り当てられた基礎となるグラフィクスデバイスを用いてゲストOSについて複合仮想PCIeグラフィクスデバイスを提供するとしてよい。ブロック304において、VMMは、複合仮想PCIeグラフィクスデバイスのBARを、ブロック302で割り当てられた基礎となるグラフィクスデバイスのリソースにマッピングするとしてよい。一実施形態によると、ブロック306において、ゲストOSは、ブート中の表示用に複合仮想PCIeグラフィクスデバイスが公開しているエミュレートされたVGAを利用するとしてよい。ブロック308において、ゲストOSは、複合仮想グラフィクスPCIeデバイスを検出して、検出された仮想グラフィクスデバイスについて、234等のグラフィクスドライバラッパをロードするとしてよい。ブロック310において、ゲストラッパドライバは、基礎となるグラフィクスデバイスのどれがアクティブであるかを、仮想PCIeコンフィグレーションスペースレジスタ、または、BAR0等のエミュレートされたMMIOレジスタにある情報に基づいて検出するとしてよい。ブロック310において、ゲストラッパドライバは、エミュレートされたグラフィクスデバイス226またはVF214等の検出されたアクティブ状態の基礎となるグラフィクスデバイスの対応するドライバプラグインをロードするとしてよく、および/または、ロードされたドライバプラグインによって、アクティブ状態の基礎となるグラフィクスデバイスを初期化するとしてよい。図4Aは、本発明の実施形態に係る方法の実施形態を説明するためのフローチャートである。ある実施形態によると、図4Aに示すフローチャートは、ゲスト上の移行ソースプラットフォームによるVM移行のために準備する処理に関するとしてよい。ブロック402において、ゲストVM内の246等のVMツールモジュールは、ゲストグラフィクスドライバラッパに対して、次回のVM移行について通知するとしてよい。ブロック404において、ゲストグラフィクスドライバラッパは、複合仮想グラフィクスPCIeデバイスに対してPCIe機能レベルリセットFLRを実行するとしてよく、VGPU226等のエミュレートされたグラフィクスデバイスおよびVFデバイス214等の仮想VFPCIeデバイスへのその後のアクセスを無視するとしてよい。一実施形態によると、FLRに応じて、ゲストは、FLRの完了に応じてVM移行の用意が整ったことになるとしてよい。図4Bは、本発明の実施形態に係る方法の実施形態を説明するためのフローチャートである。ある実施形態によると、図4Bに示すフローチャートは、ゲスト上の移行ターゲットプラットフォームによって実行されるVM移行のための処理に関するとしてよい。ブロック406において、例えば、第1のVMから第2のVMへのVM移行に応じて、VMMは、複合仮想PCIeグラフィクスデバイス例えば、ブロック404に関して説明したFLRによってリセット状態であるをゲストに提供するとしてよい。例えば、VMの移行先のターゲットプラットフォームおよび/またはVMM構成に基づいて、複合仮想PCIeデバイスは、基礎となるデバイスとして、VGPU226等のエミュレートされたグラフィクス、または、214等のVFを持つとしてよい。ブロック408において、ゲストグラフィクスドライバラッパは、複合仮想PCIeデバイスへのアクセスを無視し続けるとしてよい。ブロック410において、VMツールモジュールは、ゲストグラフィクスドライバラッパに対して、グラフィクスハードウェアが変更されて利用の準備が再度整った旨を通知するとしてよい。ブロック412において、ゲストグラフィクスドライバラッパは、BAR0等のエミュレートされたMMIOレジスタおよび/またはPCIeコンフィグレーションスペース内の情報に基づいて基礎となるグラフィクスデバイスを検出するとしてよく、検出された基礎となるグラフィクスデバイスの対応するドライバプラグインをロードするとしてよい。ゲストグラフィクスドライバラッパは、新たに検出された基礎となるグラフィクスデバイスを初期化するべく、ロードされたドライバプラグインを利用するとしてよい。ブロック414において、ゲストグラフィクスドライバプラグインは、ゲストVMにおいてグラフィクススタックのリセットを開始するとしてよく、グラフィクススタックおよびゲストUIアプリケーションは、リセットに応じてウィンドウまたは表示を再描画するとしてよい。ブロック416において、ゲストグラフィクスドライバおよびゲストスタックは、通常処理を再開するとしてよい。図3、図4Aおよび/または図4Bのフローチャートは一連のプロセスを構成するものとして図示されているが、一部の実施形態に係るフローは、図示したプロセスを別の順序で実行するとしてよい。別の実施形態によると、図3、図4Aおよび/または図4Bのフローは、ライブマイグレーションおよび/またはVM保存/VMロード型の移行をサポートするとしてよい。別の実施形態によると、図3、図4Aおよび/または図4Bのフローは、ゲストOSおよびグラフィクスデバイスドライバモデルに対してホットプラグ/アンプラグ機能を必要としないとしてよい。図3、図4Aおよび/または図4Bに示すフローは1以上の基礎となるグラフィクスデバイス/機能の間における移行について用いられるが、一部の実施形態によると、これらのフローは、任意のその他のデバイス/機能のプラグアンドプレイをVMMでサポートするべく利用されるとしてもよい。一部の実施形態は、グラフィクスデバイスのプラグアンドプレイをVMMでサポートするべく、基礎となるデバイスにおける変化に伴って挙動が変化する複合仮想グラフィクスデバイスを公開するとしてよい。一実施形態によると、複合仮想グラフィクスデバイスは、全てのVMM実施例において標準となるインターフェースを公開するとしてよく、ゲストOSグラフィクスデバイスドライバは、任意の特定のVMM実施例には依存しないとしてよい。別の実施形態によると、VMMによって実現される複合仮想グラフィクスデバイスは、ハードウェア、ソフトウェア、ファームウェアおよび/またはこれらの組み合わせに基づいている1以上の基礎となるデバイスをカバーしているとしてよく、基礎となるデバイスが利用可能であるか否かに応じて、基礎となるデバイスを切り替えるとしてもよい。別の実施形態によると、複合仮想グラフィクスデバイスは、全てのVMM実施例において標準となるPCIeインターフェースを公開するとしてよい。さらに別の実施形態によると、ゲストOSにおけるラッパ-プラグイングラフィクスデバイスドライバ構造は、基礎となるデバイスの挙動が変化すれば、新しいプラグインモジュールに切り替わるとしてよい。ラッパとプラグインとの間のインターフェースは、ゲストOSの全種類について標準であってよく、任意のVMM実施例に依存しないとしてよい。複合仮想グラフィクスデバイスにおいて、1以上の基礎となるグラフィクスデバイス/機能を組み合わせて、一のPCIeデバイスにまとめるとしてよい。複合仮想グラフィクスデバイスは、VMMによって実現されるとしてよいが、全てのVMM実施例において標準であるゲストOSへのPCIeインターフェースを公開するとしてよい。ゲストOS内のラッパプラグイングラフィクスデバイスドライバにおいて、基礎となるPCIeグラフィクスデバイスの挙動の変化が検出され、適切なプラグインに切り替わるとしてよい。本発明の特定の特徴について実施形態を参照しつつ説明したが、説明は本発明を限定するものと解釈されるべきではない。実施形態のさまざまな変形例および本発明の他の実施形態は、本発明の関連技術分野の当業者には明らかであり、本発明の意図および範囲に含まれるものとする。