JP2015503784A - グラフィックス処理部における仮想マシン間の移行 - Google Patents
グラフィックス処理部における仮想マシン間の移行 Download PDFInfo
- Publication number
- JP2015503784A JP2015503784A JP2014549281A JP2014549281A JP2015503784A JP 2015503784 A JP2015503784 A JP 2015503784A JP 2014549281 A JP2014549281 A JP 2014549281A JP 2014549281 A JP2014549281 A JP 2014549281A JP 2015503784 A JP2015503784 A JP 2015503784A
- Authority
- JP
- Japan
- Prior art keywords
- gpu
- switch
- global context
- memory
- hypervisor
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Stored Programmes (AREA)
Abstract
第1のグローバルコンテキストを有する第1の仮想マシン(VM)から第2のグローバルコンテキストを有する第2のVMへの切替えを要求することと、第1のVMにおいて新たなコマンドの受け入れを停止することと、第1のグローバルコンテキストを保存することと、第1のVMから切り替えることとを含む、グラフィックス処理部(GPU)において仮想マシン間を移行するための方法。【選択図】図3
Description
本発明は、ハードウェアベースの仮想装置及びプロセッサに関する。
本願は、本明細書において完全に説明されたように、参照することによって内容が本願に組み込まれた、2011年12月28日出願の米国特許出願第13/338,915号の利益を主張する。
図1は、グラフィックス処理部(GPU)における、1つ又は複数の開示された実施形態が実現されうる例示的装置100のブロック図である。装置100は、例えば、コンピュータ、ゲーム機、携帯用装置、セットトップボックス、テレビ、携帯電話又はタブレットコンピュータを含んでよい。装置100は、プロセッサ102と、メモリ104と、記憶装置106と、1つ又は複数の入力装置108と、1つ又は複数の出力装置110とを含む。装置100は、入力ドライバ112及び出力ドライバ114を任意的に含んでもよい。装置100は、図1に示されない追加の構成要素を含んでもよいことが理解される。
プロセッサ102は、中央処理部(CPU)、GPU、加速処理部(APU)と称されることがある、同一ダイ上に存在するCPU及びGPUを含んでもよいし、各々のプロセッサコアがCPU又はGPUであってよい1つ又は複数のプロセッサコアを含んでもよい。メモリ104は、プロセッサ102と同一ダイ上に存在してもよいし、プロセッサ102と離れて存在してもよい。メモリ104は、例えばランダムアクセスメモリ(RAM)、ダイナミックRAM又はキャッシュといった、揮発性メモリ又は不揮発性メモリを含んでよい。
記憶装置106は、例えばハードディスクドライブ、ソリッドステートドライブ、光ディスク又はフラッシュドライブといった、固定記憶装置又はリムーバブル記憶装置を含んでよい。入力装置108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロホン、加速度計、ジャイロスコープ、バイオメトリックスキャナ又はネットワーク接続(例えば、無線IEEE802信号を送信及び/又は受信するための無線ローカルエリアネットワークカード)を含んでよい。出力装置110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバック装置、1つ若しくは複数の発光体、アンテナ又はネットワーク接続(例えば、無線IEEE802信号を送信及び/又は受信するための無線ローカルエリアネットワークカード)を含んでよい。
入力ドライバ112は、プロセッサ102及び入力装置108と通信し、入力装置108からの入力をプロセッサ102に受信させる。出力ドライバ114は、プロセッサ102及び出力装置110と通信し、出力装置110への出力をプロセッサ102に送信させる。なお、入力ドライバ112及び出力ドライバ114は、任意選択の構成要素であり、入力ドライバ112及び出力ドライバ114が存在しない場合であっても、装置100は同様に動作するであろう。
ネイティブ(仮想でない)環境におけるGPUコンテキスト切替え及び階層を示す図1Aを参照すると、システムブート120は、予備グローバルコンテキスト127を、基本的な入力出力システム(ビデオBIOS)125に確立させる。その後、又は、ビデオBIOS起動と同時に、オペレーティングシステム(OS)ブート130は、自身のベースドライバ140をロードし、グローバルコンテキスト150を確立する。
アプリケーションランチ160においてシステム及びOSがブートされると、GPUユーザモードドライバ170が起動し、それらのドライバが、処理毎にコンテキスト180を動作させる。1つ以上の処理毎のコンテキスト180がアクティブである場合、複数のコンテキストの間で切り替わることがある。
図1Aは、ネイティブ/非仮想化の環境におけるGPUコンテキスト管理スキームである。この環境において、処理毎コンテキスト180の各々は、同一の静的なグローバルコンテキスト及び予備グローバルコンテキストを共有し、それら3つのコンテキストの各々は、自身の下位レベルのコンテキストの上に(予備の上にグローバル、グローバルの上に処理毎、のように)漸次積み上げられる。グローバルコンテキストの例は、環状バッファ設定、メモリアパーチャ設定、ページテーブルマッピング、ファームウェア、及び、マイクロコードバージョン及び設定といったGPUを含んでよい。グローバルコンテキストは、OS及びドライバ実装の個性及び特性に依存して異なっていてよい。
仮想マシン(VM)は、仮想化環境における、ホスト内で隔離されたゲストオペレーティングシステム装置である。仮想化環境は、同一のシステム内で同時に又はタイムスライス形式で実行されるVMのうち1つ又は複数を実行する。仮想化環境において、例えば、グローバルコンテキストにおいて異なる設定を用いる異なるVM間での切替えを生じさせる複数のVM間での切替えのような、ある課題が存在することがある。そのようなグローバルコンテキスト切替えメカニズムは、既存のGPUコンテキスト切替え実装によってサポートされていない。別の課題として、VMが非同時に起動し、各VMに関するベースドライバが、他の実行中のVMに気づかず自身のグローバルコンテキストを初期化しようと試みた結果、ベースドライバの初期化が他のVMのグローバルコンテキストを破損するということが生じる(例えば、新たなコードアップロードが、別のVMからの既存の実行中のマイクロコードよりも優先する)。中央処理部(CPU又はグラフィックス処理部(GPU))物理特性が全てのVM間で共有される必要がある場合、ハードウェアベースの仮想装置において、また別の課題が生じることがある。例えばディスプレイリンク及びタイミング、DRAMインタフェース、クロック設定、熱保護、PCIEインタフェース、ハング検出、ならびに、ハードウェアリセットのようなGPUの物理特徴及び機能性を共有すると、それらのタイプの物理機能性が複数のVM間で共有可能であるように設計されていないため、別の課題が生じることがある。
例えばGPUのような仮想装置のソフトウェア専用実装は、限られた性能、特徴のセット及び安全性しか提供しない。更に、多数の異なる仮想化システム実装及びOSオペレーティングシステムは全て、経済的に計り知れない専用ソフトウェア開発を必要とする。
第1のグローバルコンテキストを有する第1の仮想マシン(VM)から第2のグローバルコンテキストを有する第2のVMへの切替えを要求することと、第1のVMにおいて新たなコマンドの受け入れを停止することと、第1のグローバルコンテキストを保存することと、第1のVMから切り替えることとを含む、グラフィックス処理部(GPU)において仮想マシン間を移行するための方法が提供される。
添付図面に関連付けて一例として示される以下の詳細な説明から、より具体的な理解が得られるだろう。
ハードウェアベースの仮想化は、ゲストOS及びVMドライバが、自身のVM状態を認知しなくてよいか、あるいは最小限しか認知しなくてよいので、ゲストVMが、ネイティブ環境にあるかのように機能することを可能にする。また、ハードウェア仮想化は、OS及びドライバに対する最小限の修正を必要とする場合がある。従って、ハードウェア仮想化は、既存のソフトウェアエコシステムの維持を可能にする。
図2は、図1Aと同様であるが、2つのVM210,220を含むハードウェアベースのVMシステムを示す。システムブート120及びBIOS125の予備コンテキスト127の確立は、仮想化システムにおいてVM210,220を管理するソフトウェアベースのエンティティである、CPUのハイパーバイザによって行われる。ハイパーバイザは、ホストプロセッサ及びリソースを制御し、必要なリソースを各VM210,220へ順に割り当て、各VMが互いに妨害し合わないことを保証することができる。
各VM210,220は、自身のOSブート230a,230bを有し、各ベースドライバ240a,240bが、それぞれのグローバルコンテキスト250a,250bを確立する。アプリケーションランチ160a,160b、ユーザモードドライバ170a,170b、及び、コンテキスト180a,180bは、図1と同一であり、VMの各々に含まれる。
VM1 210からVM2 220への切替えは、ワールドスイッチ(world switch)と呼ばれるが、各VMにおいて、ステップ120において確立された特定のグローバル予備コンテキストは共通である。一方、250a,250bで確立された他のグローバルコンテキストは異なる。このシステムにおいて、各VM210,220は、自身のグローバルコンテキスト250a,250bを有し、各グローバルコンテキストはアプリケーション毎ベースで共通であることがわかる。VM1 210からVM2 220へのワールドスイッチの間、グローバルコンテキスト250bは、GPUメモリから復元されることができ、一方、グローバルコンテキスト250aは、同一の(又は異なった)ハードウェアベースのGPUメモリ内に保存される。
GPUにおいて、各GPU IPブロックは、VM初期化時にそれぞれのVMのベースドライバによって作成された設定を用いて、自身のグローバルコンテキストを定義することができる。これらの設定は、VM内の全てのアプリケーションによって共有されてよい。例えば複数のVMによって共有されるDRAMインタフェースのような物理リソース及び物理特性は、VMの外側で初期化され、グローバルコンテキスト切替え中に保存及び復元されるグローバルコンテキストの一部ではない。GPU IPブロックの例は、グラフィックスエンジン、GPU計算部、DMAエンジン、ビデオエンコーダ及びビデオデコーダを含む。
このハードウェアベースのVMの実施形態において、以下のように定義される物理関数(PF)及び仮想関数(VF)が存在することがある。物理関数(PF)は、設定リソース(例えば、PCI−Express関数)を含む完全な機能を持ったエクスプレス関数であってよく、仮想関数(VF)は、設定リソースを含まない「軽量」関数である。ハードウェアベースのVMシステムにおいて、GPUは、PCIエクスプレス基準毎に1PFを陳列することができる。ネイティブ環境において、PFは、ドライバによって通常通りに用いられてよく、仮想環境において、PFは、ハイパーバイザ又はホストVMによって用いられてよい。更に、全てのGPUレジスタが、PFにマッピングされてもよい。
GPUは、N個のVFを提供することができる。ネイティブ環境において、VFは無効にされる。仮想環境において、VM毎に1つのVFが存在してよく、VFは、ハイパーバイザによってVMに割り当てられることができる。GPUレジスタのサブセットは、物理記憶装置フロップの1つのセットを共有している各VFへマッピングされることができる。
グローバルコンテキスト切替えは、切替えがVMへであるか、VMからであるかに依存して、複数のステップを含むことがある。図3は、典型的な実施形態においてVMから切り替えるためのステップを示す。1つのVF又はPFマッピングにつき1つのVMがあると仮定すると、1つのVMから別のVMへ切り替える動作は、1つのVF又はPFから別のVF又はPFへ切り替えるハードウェア実装に等しい。グローバルコンテキスト切替えの間、ハイパーバイザは、GPUを1つのVFから別のVFへ切り替えるためにPF構成空間レジスタを用い、切替え信号が、1つのバスインタフェース(BIF)から伝搬されるか、あるいは全てのIPブロックへ委託する。切替えの前に、ハイパーバイザは、(既にマッピングされている場合、MMIOレジスタ空間をアンマッピングすることによって)VFからVMを切り離し、システムファブリック内の保留中の動作全てがGPUへフラッシュされていることを保証しなければならない。
このBIF400からのグローバルコンテキストスイッチアウト(switch−out)信号420を受信すると、関連するIPブロック410の全ては、下記を行うことができる。必ずしもこの順序、又は、いかなる順序でもある必要はなく、いくつかのタスクは同時に行われてもよい。最初に、IPブロック410は、ソフトウェアからのコマンドを受け取ることを停止する(430)ことができる(この場合、「受け取る」とは、更なるコマンドをブロック410へ送信することをやめること、あるいは、ブロック410によってコマンドを取得又は受信することを停止することであるということができる)。その後、IPブロック410は、自身の内部パイプラインを空にする(440)。これは、パイプライン内のコマンドに処理を終了させ、その結果としてデータがメモリへフラッシュされるようにするが、アイドル状態に到達するまで新たなコマンドを受け取らない(ステップ420参照)ようにすることを含む。これは、GPUが既存のコマンドを新たなVF/PFへ搬送せず、次のVF/PF(図4参照)へ切り替える場合、新たなグローバルコンテキストを受け取ることができるようにするために行われる。相互依存性を有するIPは、状態保存を調整する必要があるだろう(例えば、3Dエンジン及びメモリコントローラ)。
アイドル状態になると、グローバルコンテキストは、メモリへ保存される(450)ことができる。メモリ位置は、BIFからPFレジスタを介してハイパーバイザから通信することができる。最後に、各IPブロックは、スイッチアウト完了を示す指標(indication)460を用いてBIFに応答する。
BIFは、全てのスイッチアウト完了応答を集めると、グローバルコンテキスト切替え準備完了470をハイパーバイザ405へ信号伝達する。ハイパーバイザ405がある期間475内に準備完了信号470を受け取らなかった場合、ハイパーバイザは、PFレジスタを介してGPUをリセットする(480)。そうでない場合、信号を受信すると、ハイパーバイザは、495においてスイッチアウトシーケンスを終了する。
図4は、VF/PFへ切り替えるためのステップを示す。最初に、PFレジスタは、グローバルコンテキスト切替え準備完了510を示す。その後、ハイパーバイザ405は、VMに割り当てられた別のVF/PFへ切り替えるためにBIF内にPFレジスタを設定し(520)、BIFから全てのIPブロックへ切替え信号が伝搬されてよい(530)。
IPブロック410が切替え信号530を受信すると、各IPブロックは、以前保存されたコンテキストをメモリから復元し(540)、新たなVMの実行を開始する(550)ことができる。その後、IPブロック410は、切替え完了信号560を用いてBIF400に応答する。BIF400は、グローバルコンテキストスイッチイン(switch in)の完了をハイパーバイザ405へ信号伝達する(565)。
その間ハイパーバイザ405は、切替え完了信号が受信されたか(570)を調べるために検査し、受信されていない場合、GPUをリセットし(580)、受信されている場合、スイッチインシーケンスが完了する(590)。
この構成によって、ある実行結果が生じることがある。グローバルコンテキストスイッチアウト中、全てのIPブロックを空にし、アイドル状態にするまでの待機時間が生じることがある。グローバルコンテキストスイッチイン中、全てのIPブロックが実行可能になる前にIPブロックのサブセットの実行を開始することが可能だが、これは、IPブロック同士の相互依存によって実行が困難であることがある。
空にし、停止するタイミングを理解することで、性能、有用性、オーバヘッド利用及び応答性についての概要がわかる。以下の式は、人間とコンピュータとの相互作用(HCI)及びGPU効率要因の例を示す。
(1)HCI応答性要因:
(N−1)×(T+V)<=100ms (式1)
(2)GPU効率要因:
(T−R)/(T+V)=(80%→90%) (式2)
(N−1)×(T+V)<=100ms (式1)
(2)GPU効率要因:
(T−R)/(T+V)=(80%→90%) (式2)
式中、NはVMの数であり、TはVM活動時間であり、Vは切替えオーバヘッドであり、Rはコンテキスト回復オーバヘッドである。これらの変数のうちいくつかは、図5を参照して最も詳しく説明される。
図5は、同期グローバルコンテキスト切替えのリソースコストをグラフで示す図である。アクティブ状態にあるVMa610と、アイドル状態で開始するVMb620との間での切替えが、スイッチアウト命令630によって開始する。この時点で、(この図内でエンジンと呼ばれる)IPブロック640,650,660は、それらのシャットダウンを開始する。各IPブロックは、アイドル状態に到達するまでに異なる時間がかかる。上述したように、各々がアイドル状態に到達する(670)と、スイッチイン命令680は、VMb620の空間内のエンジンを開始し、エンジンが全てアクティブになる(690)と、VMb620は動作可能になる。605と付されたスイッチアウト命令と、スイッチイン命令670との間の時間が、VM切替えオーバヘッド「V」である。一方、スイッチイン命令680から、690においてVMb620が完全に動作可能になるまでの時間が、コンテキスト回復オーバヘッドRである。
ハードウェアベース(例えばGPUベース)のシステムの1つの実施形態は、IPブロックの非同期実行を可能にすることになる。この場合、複数のIPブロックがいくつかのVF又はPFにわたり非同期に実行することができる。この実施形態において、グローバルコンテキストは、N個の実行中VF又はPFにつき、N個のコンテキストを用いて、内部でインスタンス化されることができる。そのような実施形態は、ハイパーバイザのアクティブかつ規則正しい切替え命令がなくても、自主的なグローバルコンテキスト切替えを可能にすることができる。この場合、二次スケジューリング(グローバルコンテキスト)及び実行リストコントローラ(RLC)が、例えば優先順位及び優先権のようなハイパーバイザからのポリシ制御順位を引き継ぎ、GPU内のコンテキスト切替えに関する責任を負うことができる。RLCは、IPブロック/エンジンを制御し、個々のエンジンを開始又は停止することができる。この実施形態において、各VMに関するグローバルコンテキストは、オンチップで又はメモリ内で格納及び復元されることができる。そのような実施形態の別の特徴は、あるサービスIPブロックが、同時に存在する複数のグローバルコンテキストを保持することができる点である。例えば、メモリコントローラは、異なるVF又はPFを非同期に実行している複数のクライアントに同時にサービス提供することができる。そのような実施形態は、後半に停止するIPブロックに関する同期グローバルコンテキスト切替えオーバヘッドを削減することができる、ということが理解されるべきである。メモリコントローラのクライアントは、内部インタフェース内でメモリコントローラへVF/PFインデクスを示すことになり、メモリコントローラに、上記クライアントにサービス提供している場合に適切なグローバルコンテキストを適用させることができる。
非同期メモリアクセスは、ハイパーバイザによって管理されうるスケジューリングを困難にすることがある。CPUがGPUメモリへ非同期アクセスするという状況において、ハイパーバイザのスケジューリング機能は、以下の要因によって制限されることがある。(1)GPUメモリは、各VMが1のN空間を割り当てられるため、ハードパーテションされている(2)GPUホストデータ経路は、全てのVMについて常に利用可能な物理特性である、かつ、撹拌された(swizzle)アパーチャは、VFの間でハードパーテションされている。しかし、(1)の代わりに、別の実施形態は、ハイパーバイザによって管理される二次レベルメモリトランスレーションテーブルを用いて、メモリの緩い分割を生成することになる。一次レベルページテーブルはVMによって既に用いられていることがある。ハイパーバイザは、この二次レベルにおいて、ページフォールトを処理することができ、要求に応じて物理ページをマッピングすることもできる。これによって、いくらかの余分なトランスレーションオーバヘッドを伴い、メモリ制限を最小化することができる。
CPUは、GPUがVMを実行している間、非同期に別のVMを実行していることがある。この、CPUとGPUとの間の非同期モデルは、同じVMに同時に切り替えるためにCPU及びGPUが互いを待機する必要のない優れた性能をもたらすことができる。しかし、このモデルは、CPUがGPUレジスタに非同期にアクセスしていることがある場合、それは仮想化されておらず、VF/PF毎のGPUレジスタの複数のインスタンスが存在しない可能性があり、その結果、(チップ上に占める空間がほとんどなく)GPUでのエリア節約を生じさせることがある、という問題を露呈する。この非同期メモリアクセスは、ハイパーバイザによって管理されうるスケジューリングを困難にすることがある。性能を改善し得る別の実施形態は、MMIOレジスタのメモリ内への移動を含むことがある。
そのような実施形態において、GPUは、環状バッファポインタレジスタをメモリ位置(又は、それらがVF/PF毎にインスタンス作成された場合、ドアベル)へ移動することによって、頻繁なMMIOレジスタアクセスをメモリアクセスに変えることができる。更に、この実施形態は、レベルベースの割込をパルスベースの割込に変換すること、及び、IH環状ポインタをメモリ位置へ移動することによって、割込関連のレジスタアクセスを削減することができる。これにより、CPUのMMIOレジスタアクセスが低減し、CPUページフォールトが低減し得る。
別の実施形態において、CPUは、GPUがVMを実行している間、非同期に別のVMを実行していることがある。このCPUとGPUとの間の非同期モデルは、同じVMに同時に切り替えるためにCPU及びGPUが互いを待機する必要のない優れた性能をもたらすことができる。しかし、このモデルは、CPUがGPUレジスタに非同期にアクセスしていることがある場合、それは仮想化されておらず、VF/PF毎のGPUレジスタの複数のインスタンスが存在しない可能性があり、その結果、(チップ上に占める空間がほとんどなく)GPUでのエリア節約を生じさせることがある、という問題を露呈する。
CPUがGPUレジスタへ非同期アクセスするという状況において、ハイパーバイザのスケジューリング機能は、以下の要因によって管理されることがある。(1)GPUレジスタは、高いリソース・コスト(チップ上に占められた空間)によってインスタンス化されない(2)CPUのメモリマップドレジスタアクセスはハイパーバイザによって停止され、CPUの仮想メモリページを無効とマークされる(3)GPUレジスタアクセスにおいて現在実行中でないVMが、CPUページフォールトの原因になることがある(GPUにおいて実行中でないVMにCPUがアクセスしないことを確実にする)(4)ハイパーバイザは、フォールトの原因であるVMがGPUにおいて実行するようにスケジュールされるまで、CPUコア上のフォールトの原因であるドライバスレッドを一時停止する(5)ハイパーバイザは、フォールトにおけるCPUの待機を低減するために、GPUをフォールトの原因であるVMに切り替えることがある(6)ハイパーバイザは、無効なVF内の全ての仮想レジスタBARを最初にマークし、CPUのレジスタアクセスが許可された場合、MMIOメモリしかマッピングしないことがあり、CPU仮想メモリページを定期的にマッピング及びアンマッピングするオーバヘッドが低減する。
GPUレジスタは、物理関数と仮想関数(PFとVF)との間で分割されることがあり、レジスタ要求は、システムレジスタバスマネージャ(SRBM、チップ内の別のIPブロック)へ転送されることがある。SRBMは、要求がPFレジスタをターゲットにしているかVFレジスタをターゲットにしているかに関する指標とともにCPUからの要求を受信する。SRBMは、(必要に応じて)メモリコントローラのように共有リソースへのVMアクセスをブロックするために、例えばメモリコントローラのように、物理関数へのVFアクセスの経路をフィルタする働きをすることができる。これにより、1つのVMの活動が別のVMから切り離される。
GPU PFレジスタベースアクセスレジスタ(BAR)に関して、全てのMMIOレジスタがアクセスされることがある。仮想化されていない環境においてはPFのみがイネーブルされるが、仮想化環境モードにおいては、専らPFのMMIOレジスタBARがホストVMのGPUドライバによってアクセスされることになる。同様に、仮想化されていない環境におけるPCI構成空間に関して、レジスタはOSによって設定されることになるが、仮想モードでは、ハイパーバイザがこの空間へのアクセスを制御し、レジスタをVMにエミュレートする可能性がある。
GPU VFレジスタBARにおいて、MMIOレジスタのサブセットがアクセスされることがある。例えばVFは、例えばディスプレイタイミング制御、PCIE、DDRメモリのようなPHYレジスタを陳列せず、その他のサブセットへのアクセスは、ゲストVMドライバによって独占的にアクセスされる。PCI構成空間に関して、仮想レジスタBARが陳列され、VM OSによって設定される。
別の実施形態において、割込が同様に仮想モデルにおいて考慮される必要があり、これは、グラフィックスコントローラ、マルチメディアブロック、ディスプレイコントローラ等のようなクライアントからの割込要求を収集する割込ハンドラ(IH)IPブロックによって処理されることになる。特定のVF又はPFの下で実行中のクライアントから収集された場合、IHブロックは、所与のVF又はPFからソフトウェアへ割込が利用可能であることを伝える。IHは、VF又はPFのインデクスを用いて割込要求をタグ付けするために、自身の複数のクライアントが、内部インタフェースを用いて異なるVF又はPFからの割込を要求することを可能にするように設計される。上述したように、VMモードにおいて、IHは、システムファブリックへ割込を発送し、割込の発送元に基づいて、PFタグ又はVFタグを用いて割込をタグ付けする。プラットフォーム(ハイパーバイザ又はIOMMU)は、適切なVMへ割込を転送する。1つの実施形態において、GPUは、例えばモニタのようなローカルディスプレイ装置のセットを動作させている。この場合、GPUのディスプレイコントローラは、PFにおいて常に実行中である。ディスプレイコントローラは、例えば垂直同期信号のようなソフトウェアへの割込を定期的に生成することになる。PFからの例えばディスプレイ割込のようなこれらのタイプの割込は、グラフィックス機能性が他のタイプの割込の生成をもたらす場合、別のVFからの割込と同時に生成されることになる。
別の実施形態において、ハイパーバイザは、VMの数がVFの数よりも多い場合、先回りページングシステムを実現することができる。この場合、ハイパーバイザは、(1)グローバルコンテキストスイッチアウトシーケンスを用いて、そのタイムスライスの後、現在のVMを自身のVFから外へ切り替える(2)VFのグローバル切替えシーケンスが完了した後、現在のVMのメモリを立ち退かせる(3)自身のVFから現在のVMを切断し、自身のタイムスライスの前に、システムメモリから到来するVMのメモリをページ付けし、空になったVFに到来するVMを接続し、空になったVFにおいて新たなVMを実行する、ことができる。これにより、VF毎にVMを共有することによって、少ないVFで多数のVMを実行することが可能になる。
ソフトウェア内で、ハイパーバイザは、ハードウェア固有のドライバを有さないことがある。そのような実施形態において、ハイパーバイザは、PFを介してPCI構成レジスタへの独占的なアクセスを有することができ、ハイパーバイザにおけるハードウェア固有のコードを最小化する。ハイパーバイザの責務は、GPU初期化、物理リソース割当て、仮想関数をイネーブルし、VMに割り当てること、コンテキスト保存エリア割当て、グローバルコンテキスト切替え及びCPU同期化のスケジューリング、GPUタイムアウト/リセット管理、ならびに、メモリ管理/ページングを含んでよい。
同様にソフトウェアにおいて、ホストVMの役割は、任意選択のハードウェア固有ドライバを有することがあり、例えばディスプレイコントローラ又はDRAMインタフェースのようなPFを介して特権的かつ物理的ハードウェア機能への独占的なアクセスを有することがある。ホストVMの責務は、ローカルに取り付けられたディスプレイの管理、デスクトップ構成、VMの数がVFの数よりも大きい場合のメモリページングを含んでよい。また、ホストVMは、ハイパーバイザのGPU管理責務の一部を委任されることもある。例えば、デスクトップ構成及びメモリページングのようなPFにおけるいくつかの特徴を実現する場合、ホストVMは、例えばグラフィックスエンジン又はDMAエンジンのような加速用GPUを用いることがある。この場合、PFは、実行中のVFに対応するグローバルコンテキストと同時に存在するグローバルコンテキストのうちの1つを生成することになる。この実施形態において、PFは、タイムスライス形式でVFに伴って切り替わるグローバルコンテキストを共有することになる。
本明細書における開示に基づいて多数の変形例が可能であることが理解されるべきである。特徴及び要素が特定の組み合わせで上述されたが、各特徴又は要素は、その他の特徴及び要素がなくても単独で用いられてよく、あるいは、他の特徴及び要素を伴う又は伴わない様々な組み合わせで用いられてもよい。
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実現されてよい。適切なプロセッサは、一例として、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに接続された1つ又は複数のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、他のあらゆるタイプの集積回路(IC)、及び/又は、ステートマシンを含む。そのようなプロセッサは、処理されたハードウェア記述言語(HDL)命令の結果及びネットリストを含む他の中間データ(例えば、コンピュータ可読媒体に格納されることができるそのような命令)を用いて製造工程を設定することによって製造されてよい。そのような処理の結果は、本発明の態様を実現するプロセッサを製造するために、半導体製造過程において後に用いられるマスクワークであってよい。
本明細書において提供された方法又はフローチャートは、汎用コンピュータ又は汎用プロセッサによって実行するために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアにおいて実現されてよい。コンピュータ可読記憶媒体の例は、読取専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリ装置、例えば内臓ハードディスク及びリムーバブルディスクのような磁気媒体、光磁気媒体、例えばCD−ROMディスクのような光媒体、及び、デジタルバーサタイルディスク(DVD)を含む。
Claims (20)
- グラフィックス処理部(GPU)において仮想マシン間を移行するための方法であって、
第1のグローバルコンテキストを有する第1の仮想マシン(VM)から第2のグローバルコンテキストを有する第2のVMへ切り替えることを要求することと、
前記第1のVMにおいて新たなコマンドの受け取りを停止することと、
前記第1のグローバルコンテキストを保存することと、
前記第1のVMから切り替えることと、
を備える方法。 - 前記第1のVMにおいて以前要求されたコマンドが処理を終了することを許可することを更に備える、請求項1に記載の方法。
- 前記コマンドは、前記第1のグローバルコンテキストを保存する前に処理を終了する、請求項2に記載の方法。
- 前記第1のグローバルコンテキストは、レジスタを介してバスインタフェース(BIF)から通信されたメモリ位置に保存される、請求項1に記載の方法。
- 前記第1のVMから切り替える準備ができたことを示す指標を信号伝達することを更に備える、請求項1に記載の方法。
- スイッチアウトシーケンスを終了することを更に備える、請求項5に記載の方法。
- 前記第2のVMに関する前記第2のグローバルコンテキストをメモリから復元することを更に備える、請求項1に記載の方法。
- 前記第2のVMの実行を開始することを更に備える、請求項7に記載の方法。
- 前記第1のVMから前記第2のVMへの切替えが完了したことを信号伝達することを更に備える、請求項8に記載の方法。
- 前記第1のVMから前記第2のVMへの切替えが完了したことを信号伝達することを更に備える、請求項1に記載の方法。
- 前記第1のVMから前記第2のVMへの切替えが完了したことを示す信号が時間制限内に受信されなかった場合、仮想マシン間を切り替えるためにGPUをリセットする、請求項1に記載の方法。
- 仮想マシン間を切り替えることができるGPUであって、
第1のグローバルコンテキスト及び第2のグローバルコンテキストを有する第1の仮想マシン(VM)及び第2の仮想マシン(VM)に関するリソースを管理するハイパーバイザと、
前記第1のVMから前記第2のVMへ切り替える要求を示すグローバルコンテキスト切替え信号を送信するバスインタフェース(BIF)と、
前記グローバルコンテキスト切替え信号を受信し、前記要求に応答して更なるコマンドの受け取りを停止し、前記第1のグローバルコンテキストをメモリに保存するIPブロックであって、前記VM信号からの切替え準備完了信号を前記BIFへ送信するIPブロックと、を備え、
前記ハイパーバイザは、前記VM信号からの切替え準備完了信号を前記BIFから受信すると、前記第1のVMから切り替える、
GPU。 - 前記IPブロックは、前記第1のVMにおいて以前要求されたコマンドが処理を終了することを許可する、請求項12に記載のGPU。
- 前記コマンドは、前記第1のグローバルコンテキストを保存する前に、処理を終了させる、請求項13に記載のGPU。
- 前記第1のグローバルコンテキストは、レジスタを介して前記BIFから通信されたメモリ位置に保存される、請求項12に記載のGPU。
- 前記ハイパーバイザは、スイッチアウトシーケンスを終了する、請求項12に記載のGPU。
- 前記IPブロックは、前記第2のVMに関する前記第2のグローバルコンテキストをメモリから復元する、請求項12に記載のGPU。
- 前記GPUは第2のVMの実行を開始する、請求項17に記載のGPU。
- 前記IPブロックは、前記第1のVMから前記第2のVMへの切替えが完了したことを信号伝達する、請求項18に記載のGPU。
- 前記GPUは、前記第1のVMから前記第2のVMへの切替えが完了したことを示す信号が制限時間内に受信されなかった場合に、仮想マシン間を移行するためにリセットする、請求項12に記載のGPU。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/338,915 | 2011-12-28 | ||
US13/338,915 US20130174144A1 (en) | 2011-12-28 | 2011-12-28 | Hardware based virtualization system |
PCT/CA2012/001199 WO2013097035A1 (en) | 2011-12-28 | 2012-12-28 | Changing between virtual machines on a graphics processing unit |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015503784A true JP2015503784A (ja) | 2015-02-02 |
Family
ID=48696037
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014549281A Pending JP2015503784A (ja) | 2011-12-28 | 2012-12-28 | グラフィックス処理部における仮想マシン間の移行 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20130174144A1 (ja) |
EP (1) | EP2798490A4 (ja) |
JP (1) | JP2015503784A (ja) |
KR (1) | KR20140107408A (ja) |
CN (1) | CN104025050A (ja) |
WO (1) | WO2013097035A1 (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020525913A (ja) * | 2017-06-29 | 2020-08-27 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated | 仮想化アクセラレーテッド処理デバイスの早期仮想化コンテキストスイッチ |
JP2021503126A (ja) * | 2017-11-14 | 2021-02-04 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | メモリ・ポインタを変更することによるコンテキスト切り替えを提供するコンピュータ・プログラム、コンピュータ・システム、およびコンピュータ実装方法 |
JP2022507961A (ja) * | 2019-02-13 | 2022-01-18 | エヌイーシー ラボラトリーズ アメリカ インク | トラステッド実行環境を加速されたグラフィック処理ユニット |
US11579806B2 (en) | 2017-11-14 | 2023-02-14 | International Business Machines Corporation | Portions of configuration state registers in-memory |
JP7490652B2 (ja) | 2018-12-20 | 2024-05-27 | エーティーアイ・テクノロジーズ・ユーエルシー | 信頼されたメモリ領域における仮想機能についてのマイクロコードの記憶 |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013112151A1 (en) * | 2012-01-26 | 2013-08-01 | Empire Technology Development Llc | Data center with continuous world switch security |
US9081618B2 (en) * | 2012-03-19 | 2015-07-14 | Ati Technologies Ulc | Method and apparatus for the scheduling of computing tasks |
US8826305B2 (en) * | 2012-04-18 | 2014-09-02 | International Business Machines Corporation | Shared versioned workload partitions |
US9436493B1 (en) * | 2012-06-28 | 2016-09-06 | Amazon Technologies, Inc. | Distributed computing environment software configuration |
US9569223B2 (en) * | 2013-02-13 | 2017-02-14 | Red Hat Israel, Ltd. | Mixed shared/non-shared memory transport for virtual machines |
US9501137B2 (en) * | 2013-09-17 | 2016-11-22 | Empire Technology Development Llc | Virtual machine switching based on processor power states |
EP3074866A4 (en) * | 2013-11-27 | 2017-12-27 | Intel Corporation | Apparatus and method for scheduling graphics processing unit workloads from virtual machines |
US9898795B2 (en) | 2014-06-19 | 2018-02-20 | Vmware, Inc. | Host-based heterogeneous multi-GPU assignment |
US9898794B2 (en) | 2014-06-19 | 2018-02-20 | Vmware, Inc. | Host-based GPU resource scheduling |
US9672354B2 (en) | 2014-08-18 | 2017-06-06 | Bitdefender IPR Management Ltd. | Systems and methods for exposing a result of a current processor instruction upon exiting a virtual machine |
DE112014002477T5 (de) * | 2014-11-21 | 2016-09-29 | Intel Corporation | Vorrichtung und Verfahren für eine effiziente Grafikverarbeitung in einer virtuellen Ausführungsumgebung |
US9928094B2 (en) * | 2014-11-25 | 2018-03-27 | Microsoft Technology Licensing, Llc | Hardware accelerated virtual context switching |
CN104598294B (zh) * | 2015-01-07 | 2021-11-26 | 乾云数创(山东)信息技术研究院有限公司 | 用于移动设备的高效安全的虚拟化方法及其设备 |
US9766918B2 (en) * | 2015-02-23 | 2017-09-19 | Red Hat Israel, Ltd. | Virtual system device identification using GPU to host bridge mapping |
US10114675B2 (en) * | 2015-03-31 | 2018-10-30 | Toshiba Memory Corporation | Apparatus and method of managing shared resources in achieving IO virtualization in a storage device |
US9639395B2 (en) | 2015-04-16 | 2017-05-02 | Google Inc. | Byte application migration |
US9747122B2 (en) | 2015-04-16 | 2017-08-29 | Google Inc. | Virtual machine systems |
US9971708B2 (en) * | 2015-12-02 | 2018-05-15 | Advanced Micro Devices, Inc. | System and method for application migration between docking station and dockable device |
CN107977251B (zh) * | 2016-10-21 | 2023-10-27 | 超威半导体(上海)有限公司 | 对在虚拟化系统中的共享寄存器的排他访问 |
CN111052081B (zh) * | 2016-12-29 | 2023-07-14 | 深圳前海达闼云端智能科技有限公司 | 多虚拟机切换过程中的上下文处理方法、装置及电子设备 |
CN107168667B (zh) * | 2017-04-28 | 2020-09-18 | 明基智能科技(上海)有限公司 | 具有显示子母画面能力的显示系统 |
CN107133051B (zh) * | 2017-05-27 | 2021-03-23 | 苏州浪潮智能科技有限公司 | 一种页面布局管理方法及管理器 |
US10459751B2 (en) * | 2017-06-30 | 2019-10-29 | ATI Technologies ULC. | Varying firmware for virtualized device |
US11144329B2 (en) * | 2019-05-31 | 2021-10-12 | Advanced Micro Devices, Inc. | Processor microcode with embedded jump table |
GB2593730B (en) | 2020-03-31 | 2022-03-30 | Imagination Tech Ltd | Hypervisor removal |
US12210891B2 (en) * | 2020-12-18 | 2025-01-28 | Advanced Micro Devices (Shanghai) Co., Ltd. | Modifying device status in single virtual function mode |
CN114265775B (zh) * | 2021-12-21 | 2024-05-24 | 中国科学院信息工程研究所 | 一种硬件辅助虚拟化环境核心检测方法及系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7415708B2 (en) * | 2003-06-26 | 2008-08-19 | Intel Corporation | Virtual machine management using processor state information |
US20050132363A1 (en) * | 2003-12-16 | 2005-06-16 | Vijay Tewari | Method, apparatus and system for optimizing context switching between virtual machines |
US20050132364A1 (en) * | 2003-12-16 | 2005-06-16 | Vijay Tewari | Method, apparatus and system for optimizing context switching between virtual machines |
US8024730B2 (en) * | 2004-03-31 | 2011-09-20 | Intel Corporation | Switching between protected mode environments utilizing virtual machine functionality |
US20100141664A1 (en) * | 2008-12-08 | 2010-06-10 | Rawson Andrew R | Efficient GPU Context Save And Restore For Hosted Graphics |
US8405666B2 (en) * | 2009-10-08 | 2013-03-26 | Advanced Micro Devices, Inc. | Saving, transferring and recreating GPU context information across heterogeneous GPUs during hot migration of a virtual machine |
-
2011
- 2011-12-28 US US13/338,915 patent/US20130174144A1/en not_active Abandoned
-
2012
- 2012-12-28 EP EP12862934.2A patent/EP2798490A4/en not_active Withdrawn
- 2012-12-28 JP JP2014549281A patent/JP2015503784A/ja active Pending
- 2012-12-28 CN CN201280065008.5A patent/CN104025050A/zh active Pending
- 2012-12-28 KR KR1020147018955A patent/KR20140107408A/ko not_active Application Discontinuation
- 2012-12-28 WO PCT/CA2012/001199 patent/WO2013097035A1/en active Application Filing
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020525913A (ja) * | 2017-06-29 | 2020-08-27 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated | 仮想化アクセラレーテッド処理デバイスの早期仮想化コンテキストスイッチ |
JP7253507B2 (ja) | 2017-06-29 | 2023-04-06 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | 仮想化アクセラレーテッド処理デバイスの早期仮想化コンテキストスイッチ |
JP2021503126A (ja) * | 2017-11-14 | 2021-02-04 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | メモリ・ポインタを変更することによるコンテキスト切り替えを提供するコンピュータ・プログラム、コンピュータ・システム、およびコンピュータ実装方法 |
US11579806B2 (en) | 2017-11-14 | 2023-02-14 | International Business Machines Corporation | Portions of configuration state registers in-memory |
JP7249717B2 (ja) | 2017-11-14 | 2023-03-31 | インターナショナル・ビジネス・マシーンズ・コーポレーション | メモリ・ポインタを変更することによるコンテキスト切り替えを提供するコンピュータ・プログラム、コンピュータ・システム、およびコンピュータ実装方法 |
JP7490652B2 (ja) | 2018-12-20 | 2024-05-27 | エーティーアイ・テクノロジーズ・ユーエルシー | 信頼されたメモリ領域における仮想機能についてのマイクロコードの記憶 |
JP2022507961A (ja) * | 2019-02-13 | 2022-01-18 | エヌイーシー ラボラトリーズ アメリカ インク | トラステッド実行環境を加速されたグラフィック処理ユニット |
JP7072123B2 (ja) | 2019-02-13 | 2022-05-19 | エヌイーシー ラボラトリーズ アメリカ インク | トラステッド実行環境を加速されたグラフィック処理ユニット |
Also Published As
Publication number | Publication date |
---|---|
CN104025050A (zh) | 2014-09-03 |
US20130174144A1 (en) | 2013-07-04 |
EP2798490A4 (en) | 2015-08-19 |
WO2013097035A1 (en) | 2013-07-04 |
EP2798490A1 (en) | 2014-11-05 |
KR20140107408A (ko) | 2014-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2015503784A (ja) | グラフィックス処理部における仮想マシン間の移行 | |
US11995462B2 (en) | Techniques for virtual machine transfer and resource management | |
JP5608243B2 (ja) | 仮想化環境においてi/o処理を行う方法および装置 | |
US7945436B2 (en) | Pass-through and emulation in a virtual machine environment | |
JP6029550B2 (ja) | 計算機の制御方法及び計算機 | |
US9798565B2 (en) | Data processing system and method having an operating system that communicates with an accelerator independently of a hypervisor | |
CN104714846B (zh) | 资源处理方法、操作系统及设备 | |
JP5737050B2 (ja) | 情報処理装置、割込み制御方法および割込み制御プログラム | |
WO2017024783A1 (zh) | 一种虚拟化方法、装置和系统 | |
JP7538950B2 (ja) | コンピュータデバイス、例外処理方法および割り込み処理方法 | |
US20240330199A1 (en) | Secure memory access in a virtualized computing environment | |
JP2011100431A (ja) | 仮想マシン制御装置及び仮想マシン制御方法 | |
JP2013516021A (ja) | プロセッサコアのハイパーバイザ離隔 | |
CN104503825B (zh) | 一种基于kvm混合式设备虚拟化方法 | |
EP3951591B1 (en) | Data processing method, apparatus, and device | |
JP7123235B2 (ja) | 仮想化用のgpuタスクコンテナとしてのvmid | |
WO2017112126A1 (en) | Starting application processors of a virtual machine | |
US9690619B2 (en) | Thread processing method and thread processing system for setting for each thread priority level of access right to access shared memory | |
US8402191B2 (en) | Computing element virtualization | |
US20230033583A1 (en) | Primary input-output queue serving host and guest operating systems concurrently | |
JP2017162165A (ja) | 情報処理装置、情報処理方法及びプログラム |