JP2014515146A - 複合仮想グラフィクスデバイス - Google Patents

複合仮想グラフィクスデバイス Download PDF

Info

Publication number
JP2014515146A
JP2014515146A JP2014506398A JP2014506398A JP2014515146A JP 2014515146 A JP2014515146 A JP 2014515146A JP 2014506398 A JP2014506398 A JP 2014506398A JP 2014506398 A JP2014506398 A JP 2014506398A JP 2014515146 A JP2014515146 A JP 2014515146A
Authority
JP
Japan
Prior art keywords
virtual
guest
graphics
graphics device
emulated
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014506398A
Other languages
English (en)
Other versions
JP5706036B2 (ja
Inventor
チェン、シャンウェイ
スリニヴァサン、ラマン
ジェイ. カウパースウェイト、デイビット
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2014515146A publication Critical patent/JP2014515146A/ja
Application granted granted Critical
Publication of JP5706036B2 publication Critical patent/JP5706036B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45541Bare-metal, i.e. hypervisor runs directly on hardware

Abstract

【解決手段】 システムは、基礎となるエミュレートされている仮想グラフィクスデバイスおよび物理グラフィクスデバイスの仮想機能を組み合わせて仮想マシン移行をサポートする複合仮想グラフィクスデバイスを有するゲストグラフィクスサブシステムを備える。システム内のVMMは、ゲストに対して、仮想グラフィクスデバイスおよび仮想機能へのアクセスを統合する単一の複合仮想PCIeグラフィクスデバイスを公開するとしてよく、ゲストOSにおいてPnPイベントをトリガすることなく、グラフィクスアクセラレーションのために、仮想グラフィクスデバイスと仮想機能との間で切り替えを行う。切り替えに応じて、ゲストグラフィクススタックおよびアプリケーションは、ウィンドウを再描画して、ユーザが中断を感じないようにするとしてよい。
【選択図】 図1

Description

仮想化によって、仮想化がハードウェアおよびソフトウェアによってサポートされている単一のホストマシンは、当該ホストを抽象化したものを提示することができ、ホストマシンの基礎となるハードウェアは1以上の独立して動作する仮想マシンとして存在するようになる。このため、各仮想マシンは、自己完結型のプラットフォームとして機能するとしてよい。仮想化技術は、複数のゲストオペレーティングシステムおよび/または他のゲストソフトウェアを、実際には物理的に同じハードウェアプラットフォームで実行されているものの、見掛け上同時に、そして、見掛け上独立して、複数の仮想マシンで共存および実行させるべく利用されるとしてよい。仮想マシンは、ホストマシンのハードウェアを模倣するとしてもよいし、これに代えて、別のハードウェア抽象化を共に提示するとしてもよい。
仮想化システムは、ホストマシンへのアクセスを制御する仮想マシンモニタ(VMM)を含むとしてよい。一部の実施形態によると、任意のその他のVM制御ロジックを利用するとしてもよい。VMMは、仮想マシンで動作するゲストソフトウェアに、一連のリソース(例えば、プロセッサ、メモリ、IOデバイス)を提供するとしてよい。VMMは、物理ホストマシンのコンポーネントの一部またはすべてを仮想マシンにマッピングするとしてよく、仮想マシン(例えば、仮想I/Oデバイス)が利用可能な仮想コンポーネントを、VMM内のソフトウェアにおいてエミュレートするとしてよい。VMMは、ハードウェア仮想化アーキテクチャの特徴を利用して、仮想マシンにサービスを提供し、ホストマシンで実行されている複数の仮想マシンをそれぞれ保護するとしてよい。
仮想化コンピューティング環境において、「ライブマイグレーション」を利用して、または、VMの状態を保存して復元させる方法を利用して、一の物理プラットフォームから別の物理プラットフォームへと仮想マシンを移行させるとしてよい。VMに提示されている全てのプラットフォームリソースが仮想リソースである場合、VMMはこれらのリソースの全ての状態を移行させるとしてよい。物理グラフィクスデバイス機能(例えば、SR−IOV(single−root I/O virtualization)対応デバイス、または、IOMMU(入出力メモリ管理モジュール)のサポートがマッピングされている専用デバイスの仮想機能)に対するインターフェースがVMに提供されている場合、移行プロセスは禁止されているとしてよい。一例を挙げると、移行の対象プラットフォームが、ゲストOSが利用可能なハードウェアグラフィクスデバイスを持っていない場合がある。別の場合には、対象プラットフォームのグラフィクスハードウェアは、ソースプラットフォームのものとは異なっている場合がある。準拠したハードウェアが対象プラットフォームで利用可能である場合には、VMMは、関連するデバイス状態情報の全ては移行しないとしてよい。グラフィクス仮想化およびVM移行の場合、ゲストOSは、ハードウェアベースのグラフィクスデバイスが利用可能になって仮想マシンモニタ(VMM)からVMへと割り当てられると、ハードウェアベースのグラフィクスデバイスへの動的な変更をサポートする必要があるとしてよい。一部のオペレーティングシステムでは、グラフィクスデバイスの動的なプラグ・アンド・プレイ機能をサポートしていない場合がある。
本明細書で説明する発明は、添付図面において、一例として図示するものであって、図示内容で限定されるものではない。簡潔に分かり易く図示することを目的としており、図示している構成要素は必ずしも実寸に即したものではない。例えば、分かり易いように、一部の構成要素の寸法は他の構成要素に比べて強調している場合がある。さらに、適切と考えられる場合には、対応する構成要素または同様の構成要素を示すべく、複数の図面にわたって同じ参照符号を繰り返す。
本発明の実施形態に係る、仮想マシン環境の上位構造の一例を示す概略図である。 装置の実施形態を示す概略図である。 本発明の一部の実施形態に応じたフローチャートである。 本発明の一部の実施形態に応じた概略フローチャートである。 本発明の一部の実施形態に応じた概略フローチャートである。
以下に記載する説明では、複合仮想グラフィクス装置を可能とする利用モデルを提供する技術について述べる。一実施形態によると、複合仮想グラフィクス装置は、仮想マシン環境において実現され得る。別の実施形態によると、複合仮想グラフィクス機能は、プロセッサベースのコンピューティングシステムにおいて実現され得る。本発明に係る技術を実現するのはコンピューティングシステムに限定されるものではなく、同様の目的を持つ実行環境、例えば、任意のその他のデジタル/電子装置またはシステムで用いられるとしてよい。以下の説明では、数多くの具体的且つ詳細な内容、例えば、ロジック実装、オペコード、オペランド特定手段、リソースのパーティション化/共有/複製の実施例、システムコンポーネントの種類および相関関係、および、ロジックのパーティション化/統合化の選択肢について、本発明をより深く理解していただくべく、記載している。しかし、本発明はこのような具体的且つ詳細な内容を採用することなく実施するとしてもよい。また、制御構造および完全ソフトウェア命令シーケンスは、本発明をあいまいにしないように、詳細な説明を省略している。
本明細書において「一実施形態」、「ある実施形態」、「実施形態例」等の記載がある場合、説明している実施形態が、特定の特徴、構造または特性を含むことを意味するが、全ての実施形態が必ずしもこの特定の特徴、構造または特性を含むとは限らない。さらに、このような記載は必ずしも同じ実施形態を指すものではない。さらに、特定の特徴、構造または特性をある実施形態に関連付けて説明している場合、このような特徴、構造または特性を他の実施形態に関連付けて実現することは、明示的に記載されているか否かにかかわらず、当業者の想到し得る範囲内であると考えられる。
本発明の実施形態は、ハードウェア、ファームウェア、ソフトウェアまたはこれらの任意の組み合わせで実現されるとしてよい。本発明の実施形態はさらに、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は、仮想マシンモニタ(VMM)220およびプラットフォーム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に、複合仮想グラフィクスデバイス(CVGD)222を公開するとしてよい。一実施形態によると、複合仮想グラフィクスデバイス222は、基礎となるエミュレートされたビデオグラフィクスアレイ(VGA)デバイス224、エミュレートされた仮想グラフィクス処理ユニット(VGPU)226等の仮想グラフィクスデバイス、物理グラフィクスデバイス212の仮想機能(VF)214を統合して、ソフトウェアでエミュレートされた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)、デバイスID(DID)等のデータフィールドを含むとしてよい。別の実施形態によると、仮想グラフィクスPCIeコンフィグレーションスペースは、コンフィグレーションスペース内の制御レジスタセットの一部であるBAR0およびBAR1からBAR5等のベースアドレスレジスタ(BAR)を含むとしてよい。例えば、BARは、メモリマッピングI/O(MMIO)レジスタまたはI/Oレジスタまたはメモリ領域を含むとしてよい。別の実施形態によると、仮想デバイスの場合、VMMは、仮想ベンダIDおよび/またはデバイスID等の情報をPCI−eコンフィグレーションレジスタに格納するとしてよく、および/または、BARのうち1つに含まれるMMIOレジスタに、現在の状況について設定するべくドライバによって利用され得る任意の情報を格納するとしてよい。一実施形態によると、VID/DIDは、コンフィグレーションスペースにあるとしてよいが、BAR0または任意のその他のBARにはないとしてよく、一部の実施形態によると、VIDおよび/またはDIDは任意のその他のレジスタにあるとしてよい。
一実施形態によると、VIDは、基礎となるハードウェアから独立しているベンダIDであってよく、VF214(またはグラフィクスデバイス212)等のハードウェアの挿入/取消が行われても変化しないとしてよい。DIDは、基礎となるハードウェアから独立しているID値を持つ仮想デバイスID(DID)であってよく、VF214等のハードウェアの挿入/取消が行われてもそのままであるとしてよい。別の実施形態では、BAR0は、基礎となるグラフィクスデバイスを特定するために用いられる1以上のVMMでエミュレートされたメモリマッピングI/O(MMIO)レジスタへとマッピングされるとしてよい。一実施形態によると、BAR0は、2つのレジスタHW VIDおよびHW DIDを含むとしてよい。一部の実施形態によると、BAR0は1以上のレジスタを含むとしてよい。HW VIDレジスタは、基礎となるグラフィクスデバイスのベンダIDを格納するとしてよい。基礎となるグラフィクスデバイスは、エミュレートされたグラフィクスデバイス226またはVF214であってよい。HW DIDレジスタは、基礎となるグラフィクスデバイスのデバイスIDを格納するとしてよい。基礎となるグラフィクスデバイスは、エミュレートされたグラフィクスデバイス226またはVF214であってよい。一部の実施形態によると、ベンダID、デバイスIDおよびBAR0は、物理機能(PF)および/または仮想機能(VF)等のSR−IOV(single−root I/O virtualization)グラフィクスハードウェアにマッピングしないとしてよい。別の実施形態によると、仮想グラフィクス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等の仮想VF PCIeデバイスへのその後のアクセスを無視するとしてよい。一実施形態によると、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グラフィクスデバイスの挙動の変化が検出され、適切なプラグインに切り替わるとしてよい。
本発明の特定の特徴について実施形態を参照しつつ説明したが、説明は本発明を限定するものと解釈されるべきではない。実施形態のさまざまな変形例および本発明の他の実施形態は、本発明の関連技術分野の当業者には明らかであり、本発明の意図および範囲に含まれるものとする。

Claims (20)

  1. プラットフォームハードウェアと、
    ゲスト仮想マシンと、
    仮想マシンモニタと
    を備え、
    前記仮想マシンモニタは、前記仮想マシンモニタでエミュレートされている仮想デバイス、および、前記プラットフォームハードウェア内の物理デバイスの仮想機能のうち一方を、前記ゲスト仮想マシンに割り当てて、前記割り当てられた方のデバイスを介して、複合仮想デバイスを前記ゲスト仮想マシンに公開するシステム。
  2. 前記エミュレートされている仮想デバイスおよび前記仮想機能のうちどちらのデバイスが前記複合仮想デバイスについてアクティブ状態であるかを検出して、前記アクティブ状態のデバイスに一致するプラグインを選択するゲストドライバをさらに備える請求項1に記載のシステム。
  3. 仮想マシン移行を前記ゲストドライバに通知する仮想マシンツールモジュールをさらに備える請求項2に記載のシステム。
  4. 前記仮想マシンモニタはさらに、前記割り当てられた方のデバイスインターフェースから独立している、前記複合仮想デバイスについてのコンフィグレーションスペースを、前記ゲスト仮想マシンに公開する請求項2または3に記載のシステム。
  5. 前記仮想マシンモニタはさらに、前記コンフィグレーションスペースから前記アクティブ状態のデバイスへのマッピングを維持する請求項4に記載のシステム。
  6. 前記仮想マシンモニタはさらに、前記エミュレートされている仮想デバイスおよび前記仮想機能をカバーするべく前記コンフィグレーションスペース内の1以上のフィールドを提供する請求項4または5に記載のシステム。
  7. 前記エミュレートされている仮想デバイスは、エミュレートされているグラフィクス処理機能を実施するべく、エミュレートされている仮想グラフィクスデバイスを含む請求項1から6のいずれか一項に記載のシステム。
  8. 前記ゲストドライバは、ラッパ−プラグイン構造を持ち、前記ラッパは、前記アクティブ状態のデバイスに対応するプラグインを決定する請求項2から6のいずれか一項に記載のシステム。
  9. 前記仮想マシンモニタはさらに、前記ゲスト仮想マシンのゲストオペレーティングシステムにおいてプラグ・アンド・プレイイベントをトリガすることなく、前記複合仮想デバイスにおいて、前記エミュレートされている仮想デバイスと前記物理デバイスの前記仮想機能との間で切り替えを行う請求項1から8のいずれか一項に記載のシステム。
  10. エミュレートされている仮想グラフィクスデバイス、および、ホスト内の物理グラフィクスデバイスの仮想機能のうち一方を介して、複合仮想グラフィクスデバイスを提供する段階と、
    前記複合仮想グラフィクスデバイスをゲストに公開する段階と
    を備える方法。
  11. 前記ゲストのゲストオペレーティングシステムからホットプラグ/アンプラグを行うことなく、仮想機能デバイスと前記エミュレートされている仮想グラフィクスデバイスとの間で切り替えを行う段階をさらに備える請求項10に記載の方法。
  12. 前記複合仮想グラフィクスデバイスについて前記エミュレートされている仮想グラフィクスデバイスおよび前記仮想機能のうちどちらがアクティブ状態であるかからは独立している、前記複合仮想グラフィクスデバイスについてのPCIeコンフィグレーションスペースを公開する段階をさらに備える請求項10または11に記載の方法。
  13. 前記PCIeコンフィグレーションスペースは、前記エミュレートされている仮想グラフィクスデバイスおよび前記仮想機能のうちアクティブ状態である方へマッピングされている1以上のフィールドを含む請求項12に記載の方法。
  14. 前記エミュレートされている仮想グラフィクスデバイスと前記仮想機能との間で切り替えが発生することに応じて、切り替え先のデバイスに対応するプラグインドライバを決定する段階と、
    前記エミュレートされている仮想グラフィクスデバイスおよび前記仮想機能のうち前記切り替え先である一方を初期化する段階と
    をさらに備える請求項10から13のいずれか一項に記載の方法。
  15. 前記ゲストのゲストオペレーティングシステムにおいてプラグ・アンド・プレイイベントをトリガすることなく、前記複合仮想グラフィクスデバイスにおいて前記エミュレートされている仮想グラフィクスデバイスと前記仮想機能との間での切り替えを行う段階をさらに備える請求項10から14のいずれか一項に記載の方法。
  16. コンピュータに、
    ホスト内の物理グラフィクスデバイスの仮想機能、および、エミュレートされている仮想グラフィクスデバイスのうち一方をゲストに割り当てる手順と、
    PCIeグラフィクスデバイスの仮想モデルを前記ゲストに公開する手順と
    を実行させるためのプログラムであって、
    前記PCIeグラフィクスデバイスは、前記割り当てられた方のデバイスを介してグラフィクス機能を持つ
    プログラム。
  17. 前記コンピュータにさらに、
    前記PCIeグラフィクスデバイスの前記仮想モデルについて、前記仮想機能および前記エミュレートされている仮想グラフィクスデバイスのうちどちらのデバイスがアクティブ状態であるかを検出する手順と、
    検出されたアクティブ状態である前記デバイスに一致するプラグインを選択する手順と
    を実行させるための請求項16に記載のプログラム。
  18. 前記コンピュータにさらに、前記ゲストに対して、前記PCIeグラフィクスデバイスの前記仮想モデルのPCIeコンフィグレーションスペースを公開する手順を実行させるためのプログラムであって、
    前記PCIeコンフィグレーションスペースは、前記割り当てられた方のデバイスから独立しており、前記仮想機能および前記エミュレートされている仮想グラフィクスデバイスのコンフィグレーションをカバーする請求項16または17に記載のプログラム。
  19. 前記コンピュータにさらに、前記ゲストにおいて仮想マシン移行が発生することに応じて、前記PCIeグラフィクスデバイスの前記仮想モデルにおいてPCIe機能レベルリセットを実行して、前記仮想機能および前記エミュレートされている仮想グラフィクスデバイスへのアクセスを無視する手順を実行させるための請求項16から18のいずれか一項に記載のプログラム。
  20. 前記コンピュータにさらに、前記仮想マシン移行に基づき、前記PCIeグラフィクスデバイスの前記仮想モデルの基礎となる前記物理グラフィクスデバイスと前記仮想機能との間において切り替えを行う手順を実行させるための請求項19に記載のプログラム。
JP2014506398A 2011-04-18 2011-11-23 複合仮想グラフィクスデバイス Expired - Fee Related JP5706036B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/089,066 2011-04-18
US13/089,066 US8966477B2 (en) 2011-04-18 2011-04-18 Combined virtual graphics device
PCT/US2011/062022 WO2012145024A1 (en) 2011-04-18 2011-11-23 Combined virtual graphics device

Publications (2)

Publication Number Publication Date
JP2014515146A true JP2014515146A (ja) 2014-06-26
JP5706036B2 JP5706036B2 (ja) 2015-04-22

Family

ID=47007376

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014506398A Expired - Fee Related JP5706036B2 (ja) 2011-04-18 2011-11-23 複合仮想グラフィクスデバイス

Country Status (7)

Country Link
US (1) US8966477B2 (ja)
EP (1) EP2700006A4 (ja)
JP (1) JP5706036B2 (ja)
KR (1) KR101574403B1 (ja)
CN (1) CN103608769B (ja)
TW (1) TWI475488B (ja)
WO (1) WO2012145024A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021028820A (ja) * 2019-08-12 2021-02-25 ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド リソース管理のための方法、装置、電子機器及び記憶媒体

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9021475B2 (en) * 2011-05-04 2015-04-28 Citrix Systems, Inc. Systems and methods for SR-IOV pass-thru via an intermediary device
US8850130B1 (en) 2011-08-10 2014-09-30 Nutanix, Inc. Metadata for managing I/O and storage for a virtualization
US9652265B1 (en) * 2011-08-10 2017-05-16 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment with multiple hypervisor types
US9009106B1 (en) 2011-08-10 2015-04-14 Nutanix, Inc. Method and system for implementing writable snapshots in a virtualized storage environment
US9747287B1 (en) 2011-08-10 2017-08-29 Nutanix, Inc. Method and system for managing metadata for a virtualization environment
US8863124B1 (en) 2011-08-10 2014-10-14 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
US8601473B1 (en) 2011-08-10 2013-12-03 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
US8549518B1 (en) 2011-08-10 2013-10-01 Nutanix, Inc. Method and system for implementing a maintenanece service for managing I/O and storage for virtualization environment
US9099051B2 (en) * 2012-03-02 2015-08-04 Ati Technologies Ulc GPU display abstraction and emulation in a virtualization system
US9772866B1 (en) 2012-07-17 2017-09-26 Nutanix, Inc. Architecture for implementing a virtualization environment and appliance
JP5955148B2 (ja) * 2012-07-27 2016-07-20 キヤノン株式会社 画像形成装置及び仮想マシンプログラム
US9836316B2 (en) * 2012-09-28 2017-12-05 Intel Corporation Flexible acceleration of code execution
US9384024B2 (en) 2012-12-18 2016-07-05 Dynavisor, Inc. Dynamic device virtualization
US9019284B2 (en) 2012-12-20 2015-04-28 Nvidia Corporation Input output connector for accessing graphics fixed function units in a software-defined pipeline and a method of operating a pipeline
US9123128B2 (en) * 2012-12-21 2015-09-01 Nvidia Corporation Graphics processing unit employing a standard processing unit and a method of constructing a graphics processing unit
US9734096B2 (en) 2013-05-06 2017-08-15 Industrial Technology Research Institute Method and system for single root input/output virtualization virtual functions sharing on multi-hosts
WO2015081308A2 (en) 2013-11-26 2015-06-04 Dynavisor, Inc. Dynamic i/o virtualization
US9817670B2 (en) 2013-12-13 2017-11-14 International Business Machines Corporation Framework to provide time bound execution of co-processor commands
WO2015130837A1 (en) * 2014-02-25 2015-09-03 Dynavisor, Inc. Dynamic information virtualization
US10089129B2 (en) * 2014-06-30 2018-10-02 International Business Machines Corporation Supporting flexible deployment and migration of virtual servers via unique function identifiers
US9811366B2 (en) * 2014-09-12 2017-11-07 Vmware, Inc. Dynamically using system memory as video memory for virtual graphics processing units
CN111258930B (zh) * 2014-10-05 2024-04-12 亚马逊技术股份有限公司 仿真端点配置
CN105988826B (zh) * 2015-01-29 2020-06-09 阿里云计算有限公司 一种操控方法及装置
US9766918B2 (en) 2015-02-23 2017-09-19 Red Hat Israel, Ltd. Virtual system device identification using GPU to host bridge mapping
US10467103B1 (en) 2016-03-25 2019-11-05 Nutanix, Inc. Efficient change block training
JP6812141B2 (ja) * 2016-05-31 2021-01-13 キヤノン株式会社 情報処理装置、情報処理方法およびプログラム
US10515006B2 (en) 2016-07-29 2019-12-24 Samsung Electronics Co., Ltd. Pseudo main memory system
US10372606B2 (en) * 2016-07-29 2019-08-06 Samsung Electronics Co., Ltd. System and method for integrating overprovisioned memory devices
TWI619013B (zh) * 2016-08-24 2018-03-21 康齊科技股份有限公司 記憶體管理系統及其方法
WO2018040112A1 (en) * 2016-09-05 2018-03-08 Huawei Technologies Co., Ltd. Allocation of graphics processing units for virtual machines
TWI710903B (zh) * 2016-09-30 2020-11-21 南韓商三星電子股份有限公司 偽主記憶體系統及操作該系統的方法
EP3355188B1 (en) 2017-01-31 2021-08-25 OpenSynergy GmbH Instrument display on a car dashboard by checking frames of a gui by a realtime os
WO2018176393A1 (en) * 2017-03-31 2018-10-04 Intel Corporation Techniques for virtual machine transfer and resource management
CN112292665A (zh) * 2018-09-27 2021-01-29 英特尔公司 具有后期同步的图形虚拟化的装置和方法
WO2020107405A1 (en) * 2018-11-30 2020-06-04 Intel Corporation Apparatus and method for efficient local display sharing for a virtualized graphics processor
US10984062B2 (en) * 2019-01-07 2021-04-20 Citrix Systems, Inc. Device augmentation of real time communications
CN111506385A (zh) * 2019-01-31 2020-08-07 Ati科技无限责任公司 引擎抢占和复原
CN110727504B (zh) * 2019-10-21 2022-04-22 百度在线网络技术(北京)有限公司 代码执行方法、装置和渲染设备
CN110941408B (zh) * 2019-10-22 2023-03-14 西安雷风电子科技有限公司 一种kvm虚拟机图形界面输出方法及装置
CN111104348B (zh) * 2019-12-24 2021-10-26 江苏芯盛智能科技有限公司 PCIe初始化流程的仿真方法、装置及相关设备

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006190281A (ja) * 2004-12-30 2006-07-20 Microsoft Corp グラフィックサブシステムを仮想化するシステムおよび方法
JP2006196005A (ja) * 2005-01-14 2006-07-27 Intel Corp バーチャルマシーンシステムの物理的メモリのバーチャル化
JP2007200247A (ja) * 2006-01-30 2007-08-09 Ricoh Co Ltd デバイスドライバのインストール方法、情報処理装置および画像処理システム
JP2008305034A (ja) * 2007-06-06 2008-12-18 Hitachi Ltd デバイス割り当て変更方法
JP2009223793A (ja) * 2008-03-18 2009-10-01 Fujitsu Ltd 情報処理装置、情報処理装置の制御方法及びコンピュータプログラム
JP2009259108A (ja) * 2008-04-18 2009-11-05 Toshiba Corp 情報処理装置および情報処理装置の制御方法
JP2009301162A (ja) * 2008-06-11 2009-12-24 Hitachi Ltd 計算機システム、デバイス共有方法及びそのプログラム
JP2010016819A (ja) * 2008-06-30 2010-01-21 Intel Corp 多機能装置内の機能的な依存性の順序付け
JP2010514028A (ja) * 2006-12-22 2010-04-30 バーチャルロジックス エスエイ 単一データ処理を共有するために複数の実行環境を有効化するシステム
JP2011014023A (ja) * 2009-07-03 2011-01-20 Nec Corp 中継手段、中継システム、中継方法およびプログラム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6553223B1 (en) * 1999-12-30 2003-04-22 Qualcomm Incorporated Virtual device architecture for mobile telephones
US7370324B2 (en) 2003-09-30 2008-05-06 Intel Corporation Switching between a service virtual machine and a guest virtual machine in a virtual machine monitor environment
CN100428164C (zh) * 2006-01-23 2008-10-22 联想(北京)有限公司 一种虚拟机系统及其设备访问方法
CN100472451C (zh) * 2006-04-20 2009-03-25 联想(北京)有限公司 一种虚拟机系统及其硬件设备访问方法
US8527673B2 (en) * 2007-05-23 2013-09-03 Vmware, Inc. Direct access to a hardware device for virtual machines of a virtualized computer system
US7853744B2 (en) * 2007-05-23 2010-12-14 Vmware, Inc. Handling interrupts when virtual machines have direct access to a hardware device
US20090113111A1 (en) 2007-10-30 2009-04-30 Vmware, Inc. Secure identification of execution contexts
US7945436B2 (en) * 2007-11-06 2011-05-17 Vmware, Inc. Pass-through and emulation in a virtual machine environment
US7743389B2 (en) * 2007-11-06 2010-06-22 Vmware, Inc. Selecting between pass-through and emulation in a virtual machine environment
US8266618B2 (en) * 2008-11-21 2012-09-11 International Business Machines Corporation Graphics hardware resource usage in a fully virtualized computing environment
EP2202639B1 (en) 2008-12-24 2012-09-12 VirtualLogix SA Virtual machine monitor

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006190281A (ja) * 2004-12-30 2006-07-20 Microsoft Corp グラフィックサブシステムを仮想化するシステムおよび方法
JP2006196005A (ja) * 2005-01-14 2006-07-27 Intel Corp バーチャルマシーンシステムの物理的メモリのバーチャル化
JP2007200247A (ja) * 2006-01-30 2007-08-09 Ricoh Co Ltd デバイスドライバのインストール方法、情報処理装置および画像処理システム
JP2010514028A (ja) * 2006-12-22 2010-04-30 バーチャルロジックス エスエイ 単一データ処理を共有するために複数の実行環境を有効化するシステム
JP2008305034A (ja) * 2007-06-06 2008-12-18 Hitachi Ltd デバイス割り当て変更方法
JP2009223793A (ja) * 2008-03-18 2009-10-01 Fujitsu Ltd 情報処理装置、情報処理装置の制御方法及びコンピュータプログラム
JP2009259108A (ja) * 2008-04-18 2009-11-05 Toshiba Corp 情報処理装置および情報処理装置の制御方法
JP2009301162A (ja) * 2008-06-11 2009-12-24 Hitachi Ltd 計算機システム、デバイス共有方法及びそのプログラム
JP2010016819A (ja) * 2008-06-30 2010-01-21 Intel Corp 多機能装置内の機能的な依存性の順序付け
JP2011014023A (ja) * 2009-07-03 2011-01-20 Nec Corp 中継手段、中継システム、中継方法およびプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021028820A (ja) * 2019-08-12 2021-02-25 ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド リソース管理のための方法、装置、電子機器及び記憶媒体
JP7141804B2 (ja) 2019-08-12 2022-09-26 ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド リソース管理のための方法、装置、電子機器及び記憶媒体

Also Published As

Publication number Publication date
EP2700006A1 (en) 2014-02-26
US20120266165A1 (en) 2012-10-18
JP5706036B2 (ja) 2015-04-22
TW201243724A (en) 2012-11-01
KR20140002048A (ko) 2014-01-07
WO2012145024A1 (en) 2012-10-26
US8966477B2 (en) 2015-02-24
TWI475488B (zh) 2015-03-01
EP2700006A4 (en) 2015-01-07
CN103608769A (zh) 2014-02-26
CN103608769B (zh) 2017-02-08
KR101574403B1 (ko) 2015-12-03

Similar Documents

Publication Publication Date Title
JP5706036B2 (ja) 複合仮想グラフィクスデバイス
US10162655B2 (en) Hypervisor context switching using TLB tags in processors having more than two hierarchical privilege levels
US10255090B2 (en) Hypervisor context switching using a redirection exception vector in processors having more than two hierarchical privilege levels
KR102269452B1 (ko) 컨텐츠 변환 없는 컴퓨팅 디바이스에서의 다중 운영 체제 환경들의 지원
US20090265708A1 (en) Information Processing Apparatus and Method of Controlling Information Processing Apparatus
US9495723B2 (en) Scale-up techniques for multi-GPU passthrough
US20120054740A1 (en) Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments
US20130091500A1 (en) Paravirtualized virtual gpu
JP2011100431A (ja) 仮想マシン制御装置及び仮想マシン制御方法
US9529615B2 (en) Virtual device emulation via hypervisor shared memory
US10540294B2 (en) Secure zero-copy packet forwarding
JP6458959B2 (ja) 協調設計されたプロセッサ用動的言語アクセラレータ
US10019275B2 (en) Hypervisor context switching using a trampoline scheme in processors having more than two hierarchical privilege levels
JP2015503784A (ja) グラフィックス処理部における仮想マシン間の移行
US20140229647A1 (en) Direct mapping of msi-x registers using paravirtualized memory monitoring
US10620963B2 (en) Providing fallback drivers for IO devices in a computing system
US11954520B2 (en) Micro kernel scheduling method and apparatus
JP2023538093A (ja) コンピュータデバイス、例外処理方法および割り込み処理方法
US20130117549A1 (en) Method for executing multiple operating systems and electronic apparatus
EP2466459A1 (en) Seamless application integration apparatus and method
US9164788B2 (en) Apparatus and method for automatic para-virtualization of OS kernel
KR20140117594A (ko) 멀티-환경 컴퓨팅 시스템 내의 자원 사용의 최적화
US9851992B2 (en) Paravirtulized capability for device assignment
Ming Analysis and a case study of transparent computing implementation with UEFI
CN113391864A (zh) 云桌面切换方法及系统

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140911

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140924

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141224

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150127

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150225

R150 Certificate of patent or registration of utility model

Ref document number: 5706036

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees