(57)【要約】第１のグローバルコンテキストを有する第１の仮想マシン（ＶＭ）から第２のグローバルコンテキストを有する第２のＶＭへの切替えを要求することと、第１のＶＭにおいて新たなコマンドの受け入れを停止することと、第１のグローバルコンテキストを保存することと、第１のＶＭから切り替えることとを含む、グラフィックス処理部（ＧＰＵ）において仮想マシン間を移行するための方法。【選択図】図３
2015503784.tif 000002
【特許請求の範囲】
【請求項１】
グラフィックス処理部（ＧＰＵ）において仮想マシン間を移行するための方法であって、
第１のグローバルコンテキストを有する第１の仮想マシン（ＶＭ）から第２のグローバルコンテキストを有する第２のＶＭへ切り替えることを要求することと、
前記第１のＶＭにおいて新たなコマンドの受け取りを停止することと、
前記第１のグローバルコンテキストを保存することと、
前記第１のＶＭから切り替えることと、
を備える方法。
【請求項２】
前記第１のＶＭにおいて以前要求されたコマンドが処理を終了することを許可することを更に備える、請求項１に記載の方法。
【請求項３】
前記コマンドは、前記第１のグローバルコンテキストを保存する前に処理を終了する、請求項２に記載の方法。
【請求項４】
前記第１のグローバルコンテキストは、レジスタを介してバスインタフェース（ＢＩＦ）から通信されたメモリ位置に保存される、請求項１に記載の方法。
【請求項５】
前記第１のＶＭから切り替える準備ができたことを示す指標を信号伝達することを更に備える、請求項１に記載の方法。
【請求項６】
スイッチアウトシーケンスを終了することを更に備える、請求項５に記載の方法。
【請求項７】
前記第２のＶＭに関する前記第２のグローバルコンテキストをメモリから復元することを更に備える、請求項１に記載の方法。
【請求項８】
前記第２のＶＭの実行を開始することを更に備える、請求項７に記載の方法。
【請求項９】
前記第１のＶＭから前記第２のＶＭへの切替えが完了したことを信号伝達することを更に備える、請求項８に記載の方法。
【請求項１０】
前記第１のＶＭから前記第２のＶＭへの切替えが完了したことを信号伝達することを更に備える、請求項１に記載の方法。
【請求項１１】
前記第１のＶＭから前記第２のＶＭへの切替えが完了したことを示す信号が時間制限内に受信されなかった場合、仮想マシン間を切り替えるためにＧＰＵをリセットする、請求項１に記載の方法。
【請求項１２】
仮想マシン間を切り替えることができるＧＰＵであって、
第１のグローバルコンテキスト及び第２のグローバルコンテキストを有する第１の仮想マシン（ＶＭ）及び第２の仮想マシン（ＶＭ）に関するリソースを管理するハイパーバイザと、
前記第１のＶＭから前記第２のＶＭへ切り替える要求を示すグローバルコンテキスト切替え信号を送信するバスインタフェース（ＢＩＦ）と、
前記グローバルコンテキスト切替え信号を受信し、前記要求に応答して更なるコマンドの受け取りを停止し、前記第１のグローバルコンテキストをメモリに保存するＩＰブロックであって、前記ＶＭ信号からの切替え準備完了信号を前記ＢＩＦへ送信するＩＰブロックと、を備え、
前記ハイパーバイザは、前記ＶＭ信号からの切替え準備完了信号を前記ＢＩＦから受信すると、前記第１のＶＭから切り替える、
ＧＰＵ。
【請求項１３】
前記ＩＰブロックは、前記第１のＶＭにおいて以前要求されたコマンドが処理を終了することを許可する、請求項１２に記載のＧＰＵ。
【請求項１４】
前記コマンドは、前記第１のグローバルコンテキストを保存する前に、処理を終了させる、請求項１３に記載のＧＰＵ。
【請求項１５】
前記第１のグローバルコンテキストは、レジスタを介して前記ＢＩＦから通信されたメモリ位置に保存される、請求項１２に記載のＧＰＵ。
【請求項１６】
前記ハイパーバイザは、スイッチアウトシーケンスを終了する、請求項１２に記載のＧＰＵ。
【請求項１７】
前記ＩＰブロックは、前記第２のＶＭに関する前記第２のグローバルコンテキストをメモリから復元する、請求項１２に記載のＧＰＵ。
【請求項１８】
前記ＧＰＵは第２のＶＭの実行を開始する、請求項１７に記載のＧＰＵ。
【請求項１９】
前記ＩＰブロックは、前記第１のＶＭから前記第２のＶＭへの切替えが完了したことを信号伝達する、請求項１８に記載のＧＰＵ。
【請求項２０】
前記ＧＰＵは、前記第１のＶＭから前記第２のＶＭへの切替えが完了したことを示す信号が制限時間内に受信されなかった場合に、仮想マシン間を移行するためにリセットする、請求項１２に記載のＧＰＵ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェアベースの仮想装置及びプロセッサに関する。
【背景技術】
【０００２】
本願は、本明細書において完全に説明されたように、参照することによって内容が本願に組み込まれた、２０１１年１２月２８日出願の米国特許出願第１３／３３８，９１５号の利益を主張する。
【０００３】
図１は、グラフィックス処理部（ＧＰＵ）における、１つ又は複数の開示された実施形態が実現されうる例示的装置１００のブロック図である。装置１００は、例えば、コンピュータ、ゲーム機、携帯用装置、セットトップボックス、テレビ、携帯電話又はタブレットコンピュータを含んでよい。装置１００は、プロセッサ１０２と、メモリ１０４と、記憶装置１０６と、１つ又は複数の入力装置１０８と、１つ又は複数の出力装置１１０とを含む。装置１００は、入力ドライバ１１２及び出力ドライバ１１４を任意的に含んでもよい。装置１００は、図１に示されない追加の構成要素を含んでもよいことが理解される。
【０００４】
プロセッサ１０２は、中央処理部（ＣＰＵ）、ＧＰＵ、加速処理部（ＡＰＵ）と称されることがある、同一ダイ上に存在するＣＰＵ及びＧＰＵを含んでもよいし、各々のプロセッサコアがＣＰＵ又はＧＰＵであってよい１つ又は複数のプロセッサコアを含んでもよい。メモリ１０４は、プロセッサ１０２と同一ダイ上に存在してもよいし、プロセッサ１０２と離れて存在してもよい。メモリ１０４は、例えばランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ又はキャッシュといった、揮発性メモリ又は不揮発性メモリを含んでよい。
【０００５】
記憶装置１０６は、例えばハードディスクドライブ、ソリッドステートドライブ、光ディスク又はフラッシュドライブといった、固定記憶装置又はリムーバブル記憶装置を含んでよい。入力装置１０８は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロホン、加速度計、ジャイロスコープ、バイオメトリックスキャナ又はネットワーク接続（例えば、無線ＩＥＥＥ８０２信号を送信及び／又は受信するための無線ローカルエリアネットワークカード）を含んでよい。出力装置１１０は、ディスプレイ、スピーカ、プリンタ、触覚フィードバック装置、１つ若しくは複数の発光体、アンテナ又はネットワーク接続（例えば、無線ＩＥＥＥ８０２信号を送信及び／又は受信するための無線ローカルエリアネットワークカード）を含んでよい。
【０００６】
入力ドライバ１１２は、プロセッサ１０２及び入力装置１０８と通信し、入力装置１０８からの入力をプロセッサ１０２に受信させる。出力ドライバ１１４は、プロセッサ１０２及び出力装置１１０と通信し、出力装置１１０への出力をプロセッサ１０２に送信させる。なお、入力ドライバ１１２及び出力ドライバ１１４は、任意選択の構成要素であり、入力ドライバ１１２及び出力ドライバ１１４が存在しない場合であっても、装置１００は同様に動作するであろう。
【０００７】
ネイティブ（仮想でない）環境におけるＧＰＵコンテキスト切替え及び階層を示す図１Ａを参照すると、システムブート１２０は、予備グローバルコンテキスト１２７を、基本的な入力出力システム（ビデオＢＩＯＳ）１２５に確立させる。その後、又は、ビデオＢＩＯＳ起動と同時に、オペレーティングシステム（ＯＳ）ブート１３０は、自身のベースドライバ１４０をロードし、グローバルコンテキスト１５０を確立する。
【０００８】
アプリケーションランチ１６０においてシステム及びＯＳがブートされると、ＧＰＵユーザモードドライバ１７０が起動し、それらのドライバが、処理毎にコンテキスト１８０を動作させる。１つ以上の処理毎のコンテキスト１８０がアクティブである場合、複数のコンテキストの間で切り替わることがある。
【０００９】
図１Ａは、ネイティブ／非仮想化の環境におけるＧＰＵコンテキスト管理スキームである。この環境において、処理毎コンテキスト１８０の各々は、同一の静的なグローバルコンテキスト及び予備グローバルコンテキストを共有し、それら３つのコンテキストの各々は、自身の下位レベルのコンテキストの上に（予備の上にグローバル、グローバルの上に処理毎、のように）漸次積み上げられる。グローバルコンテキストの例は、環状バッファ設定、メモリアパーチャ設定、ページテーブルマッピング、ファームウェア、及び、マイクロコードバージョン及び設定といったＧＰＵを含んでよい。グローバルコンテキストは、ＯＳ及びドライバ実装の個性及び特性に依存して異なっていてよい。
【００１０】
仮想マシン（ＶＭ）は、仮想化環境における、ホスト内で隔離されたゲストオペレーティングシステム装置である。仮想化環境は、同一のシステム内で同時に又はタイムスライス形式で実行されるＶＭのうち１つ又は複数を実行する。仮想化環境において、例えば、グローバルコンテキストにおいて異なる設定を用いる異なるＶＭ間での切替えを生じさせる複数のＶＭ間での切替えのような、ある課題が存在することがある。そのようなグローバルコンテキスト切替えメカニズムは、既存のＧＰＵコンテキスト切替え実装によってサポートされていない。別の課題として、ＶＭが非同時に起動し、各ＶＭに関するベースドライバが、他の実行中のＶＭに気づかず自身のグローバルコンテキストを初期化しようと試みた結果、ベースドライバの初期化が他のＶＭのグローバルコンテキストを破損するということが生じる（例えば、新たなコードアップロードが、別のＶＭからの既存の実行中のマイクロコードよりも優先する）。中央処理部（ＣＰＵ又はグラフィックス処理部（ＧＰＵ））物理特性が全てのＶＭ間で共有される必要がある場合、ハードウェアベースの仮想装置において、また別の課題が生じることがある。例えばディスプレイリンク及びタイミング、ＤＲＡＭインタフェース、クロック設定、熱保護、ＰＣＩＥインタフェース、ハング検出、ならびに、ハードウェアリセットのようなＧＰＵの物理特徴及び機能性を共有すると、それらのタイプの物理機能性が複数のＶＭ間で共有可能であるように設計されていないため、別の課題が生じることがある。
【００１１】
例えばＧＰＵのような仮想装置のソフトウェア専用実装は、限られた性能、特徴のセット及び安全性しか提供しない。更に、多数の異なる仮想化システム実装及びＯＳオペレーティングシステムは全て、経済的に計り知れない専用ソフトウェア開発を必要とする。
【発明の概要】
【課題を解決するための手段】
【００１２】
第１のグローバルコンテキストを有する第１の仮想マシン（ＶＭ）から第２のグローバルコンテキストを有する第２のＶＭへの切替えを要求することと、第１のＶＭにおいて新たなコマンドの受け入れを停止することと、第１のグローバルコンテキストを保存することと、第１のＶＭから切り替えることとを含む、グラフィックス処理部（ＧＰＵ）において仮想マシン間を移行するための方法が提供される。
【００１３】
添付図面に関連付けて一例として示される以下の詳細な説明から、より具体的な理解が得られるだろう。
【図面の簡単な説明】
【００１４】
【図１】１つ又は複数の開示された実施形態を実現することができる典型的な装置のブロック図である。
【図１Ａ】ネイティブ環境におけるコンテキスト切替え及び階層を示す図である。
【図２】図１と同様のハードウェアベースのＶＭシステムを示す図である。
【図３】ＶＭからの切替えのためのステップを示す図である。
【図４】ＶＭへの切替えのためのステップを示す図である。
【図５】同期グローバルコンテキスト切替えのリソースコストをグラフで示す図である。
【発明を実施するための形態】
【００１５】
ハードウェアベースの仮想化は、ゲストＯＳ及びＶＭドライバが、自身のＶＭ状態を認知しなくてよいか、あるいは最小限しか認知しなくてよいので、ゲストＶＭが、ネイティブ環境にあるかのように機能することを可能にする。また、ハードウェア仮想化は、ＯＳ及びドライバに対する最小限の修正を必要とする場合がある。従って、ハードウェア仮想化は、既存のソフトウェアエコシステムの維持を可能にする。
【００１６】
図２は、図１Ａと同様であるが、２つのＶＭ２１０，２２０を含むハードウェアベースのＶＭシステムを示す。システムブート１２０及びＢＩＯＳ１２５の予備コンテキスト１２７の確立は、仮想化システムにおいてＶＭ２１０，２２０を管理するソフトウェアベースのエンティティである、ＣＰＵのハイパーバイザによって行われる。ハイパーバイザは、ホストプロセッサ及びリソースを制御し、必要なリソースを各ＶＭ２１０，２２０へ順に割り当て、各ＶＭが互いに妨害し合わないことを保証することができる。
【００１７】
各ＶＭ２１０，２２０は、自身のＯＳブート２３０ａ，２３０ｂを有し、各ベースドライバ２４０ａ，２４０ｂが、それぞれのグローバルコンテキスト２５０ａ，２５０ｂを確立する。アプリケーションランチ１６０ａ，１６０ｂ、ユーザモードドライバ１７０ａ，１７０ｂ、及び、コンテキスト１８０ａ，１８０ｂは、図１と同一であり、ＶＭの各々に含まれる。
【００１８】
ＶＭ１  ２１０からＶＭ２  ２２０への切替えは、ワールドスイッチ（ｗｏｒｌｄ  ｓｗｉｔｃｈ）と呼ばれるが、各ＶＭにおいて、ステップ１２０において確立された特定のグローバル予備コンテキストは共通である。一方、２５０ａ，２５０ｂで確立された他のグローバルコンテキストは異なる。このシステムにおいて、各ＶＭ２１０，２２０は、自身のグローバルコンテキスト２５０ａ，２５０ｂを有し、各グローバルコンテキストはアプリケーション毎ベースで共通であることがわかる。ＶＭ１  ２１０からＶＭ２  ２２０へのワールドスイッチの間、グローバルコンテキスト２５０ｂは、ＧＰＵメモリから復元されることができ、一方、グローバルコンテキスト２５０ａは、同一の（又は異なった）ハードウェアベースのＧＰＵメモリ内に保存される。
【００１９】
ＧＰＵにおいて、各ＧＰＵ  ＩＰブロックは、ＶＭ初期化時にそれぞれのＶＭのベースドライバによって作成された設定を用いて、自身のグローバルコンテキストを定義することができる。これらの設定は、ＶＭ内の全てのアプリケーションによって共有されてよい。例えば複数のＶＭによって共有されるＤＲＡＭインタフェースのような物理リソース及び物理特性は、ＶＭの外側で初期化され、グローバルコンテキスト切替え中に保存及び復元されるグローバルコンテキストの一部ではない。ＧＰＵ  ＩＰブロックの例は、グラフィックスエンジン、ＧＰＵ計算部、ＤＭＡエンジン、ビデオエンコーダ及びビデオデコーダを含む。
【００２０】
このハードウェアベースのＶＭの実施形態において、以下のように定義される物理関数（ＰＦ）及び仮想関数（ＶＦ）が存在することがある。物理関数（ＰＦ）は、設定リソース（例えば、ＰＣＩ−Ｅｘｐｒｅｓｓ関数）を含む完全な機能を持ったエクスプレス関数であってよく、仮想関数（ＶＦ）は、設定リソースを含まない「軽量」関数である。ハードウェアベースのＶＭシステムにおいて、ＧＰＵは、ＰＣＩエクスプレス基準毎に１ＰＦを陳列することができる。ネイティブ環境において、ＰＦは、ドライバによって通常通りに用いられてよく、仮想環境において、ＰＦは、ハイパーバイザ又はホストＶＭによって用いられてよい。更に、全てのＧＰＵレジスタが、ＰＦにマッピングされてもよい。
【００２１】
ＧＰＵは、Ｎ個のＶＦを提供することができる。ネイティブ環境において、ＶＦは無効にされる。仮想環境において、ＶＭ毎に１つのＶＦが存在してよく、ＶＦは、ハイパーバイザによってＶＭに割り当てられることができる。ＧＰＵレジスタのサブセットは、物理記憶装置フロップの１つのセットを共有している各ＶＦへマッピングされることができる。
【００２２】
グローバルコンテキスト切替えは、切替えがＶＭへであるか、ＶＭからであるかに依存して、複数のステップを含むことがある。図３は、典型的な実施形態においてＶＭから切り替えるためのステップを示す。１つのＶＦ又はＰＦマッピングにつき１つのＶＭがあると仮定すると、１つのＶＭから別のＶＭへ切り替える動作は、１つのＶＦ又はＰＦから別のＶＦ又はＰＦへ切り替えるハードウェア実装に等しい。グローバルコンテキスト切替えの間、ハイパーバイザは、ＧＰＵを１つのＶＦから別のＶＦへ切り替えるためにＰＦ構成空間レジスタを用い、切替え信号が、１つのバスインタフェース（ＢＩＦ）から伝搬されるか、あるいは全てのＩＰブロックへ委託する。切替えの前に、ハイパーバイザは、（既にマッピングされている場合、ＭＭＩＯレジスタ空間をアンマッピングすることによって）ＶＦからＶＭを切り離し、システムファブリック内の保留中の動作全てがＧＰＵへフラッシュされていることを保証しなければならない。
【００２３】
このＢＩＦ４００からのグローバルコンテキストスイッチアウト（ｓｗｉｔｃｈ−ｏｕｔ）信号４２０を受信すると、関連するＩＰブロック４１０の全ては、下記を行うことができる。必ずしもこの順序、又は、いかなる順序でもある必要はなく、いくつかのタスクは同時に行われてもよい。最初に、ＩＰブロック４１０は、ソフトウェアからのコマンドを受け取ることを停止する（４３０）ことができる（この場合、「受け取る」とは、更なるコマンドをブロック４１０へ送信することをやめること、あるいは、ブロック４１０によってコマンドを取得又は受信することを停止することであるということができる）。その後、ＩＰブロック４１０は、自身の内部パイプラインを空にする（４４０）。これは、パイプライン内のコマンドに処理を終了させ、その結果としてデータがメモリへフラッシュされるようにするが、アイドル状態に到達するまで新たなコマンドを受け取らない（ステップ４２０参照）ようにすることを含む。これは、ＧＰＵが既存のコマンドを新たなＶＦ／ＰＦへ搬送せず、次のＶＦ／ＰＦ（図４参照）へ切り替える場合、新たなグローバルコンテキストを受け取ることができるようにするために行われる。相互依存性を有するＩＰは、状態保存を調整する必要があるだろう（例えば、３Ｄエンジン及びメモリコントローラ）。
【００２４】
アイドル状態になると、グローバルコンテキストは、メモリへ保存される（４５０）ことができる。メモリ位置は、ＢＩＦからＰＦレジスタを介してハイパーバイザから通信することができる。最後に、各ＩＰブロックは、スイッチアウト完了を示す指標（ｉｎｄｉｃａｔｉｏｎ）４６０を用いてＢＩＦに応答する。
【００２５】
ＢＩＦは、全てのスイッチアウト完了応答を集めると、グローバルコンテキスト切替え準備完了４７０をハイパーバイザ４０５へ信号伝達する。ハイパーバイザ４０５がある期間４７５内に準備完了信号４７０を受け取らなかった場合、ハイパーバイザは、ＰＦレジスタを介してＧＰＵをリセットする（４８０）。そうでない場合、信号を受信すると、ハイパーバイザは、４９５においてスイッチアウトシーケンスを終了する。
【００２６】
図４は、ＶＦ／ＰＦへ切り替えるためのステップを示す。最初に、ＰＦレジスタは、グローバルコンテキスト切替え準備完了５１０を示す。その後、ハイパーバイザ４０５は、ＶＭに割り当てられた別のＶＦ／ＰＦへ切り替えるためにＢＩＦ内にＰＦレジスタを設定し（５２０）、ＢＩＦから全てのＩＰブロックへ切替え信号が伝搬されてよい（５３０）。
【００２７】
ＩＰブロック４１０が切替え信号５３０を受信すると、各ＩＰブロックは、以前保存されたコンテキストをメモリから復元し（５４０）、新たなＶＭの実行を開始する（５５０）ことができる。その後、ＩＰブロック４１０は、切替え完了信号５６０を用いてＢＩＦ４００に応答する。ＢＩＦ４００は、グローバルコンテキストスイッチイン（ｓｗｉｔｃｈ  ｉｎ）の完了をハイパーバイザ４０５へ信号伝達する（５６５）。
【００２８】
その間ハイパーバイザ４０５は、切替え完了信号が受信されたか（５７０）を調べるために検査し、受信されていない場合、ＧＰＵをリセットし（５８０）、受信されている場合、スイッチインシーケンスが完了する（５９０）。
【００２９】
この構成によって、ある実行結果が生じることがある。グローバルコンテキストスイッチアウト中、全てのＩＰブロックを空にし、アイドル状態にするまでの待機時間が生じることがある。グローバルコンテキストスイッチイン中、全てのＩＰブロックが実行可能になる前にＩＰブロックのサブセットの実行を開始することが可能だが、これは、ＩＰブロック同士の相互依存によって実行が困難であることがある。
【００３０】
空にし、停止するタイミングを理解することで、性能、有用性、オーバヘッド利用及び応答性についての概要がわかる。以下の式は、人間とコンピュータとの相互作用（ＨＣＩ）及びＧＰＵ効率要因の例を示す。
【００３１】
（１）ＨＣＩ応答性要因：
（Ｎ−１）×（Ｔ＋Ｖ）＜＝１００ｍｓ  （式１）
（２）ＧＰＵ効率要因：
（Ｔ−Ｒ）／（Ｔ＋Ｖ）＝（８０％→９０％）  （式２）
【００３２】
式中、ＮはＶＭの数であり、ＴはＶＭ活動時間であり、Ｖは切替えオーバヘッドであり、Ｒはコンテキスト回復オーバヘッドである。これらの変数のうちいくつかは、図５を参照して最も詳しく説明される。
【００３３】
図５は、同期グローバルコンテキスト切替えのリソースコストをグラフで示す図である。アクティブ状態にあるＶＭａ６１０と、アイドル状態で開始するＶＭｂ６２０との間での切替えが、スイッチアウト命令６３０によって開始する。この時点で、（この図内でエンジンと呼ばれる）ＩＰブロック６４０，６５０，６６０は、それらのシャットダウンを開始する。各ＩＰブロックは、アイドル状態に到達するまでに異なる時間がかかる。上述したように、各々がアイドル状態に到達する（６７０）と、スイッチイン命令６８０は、ＶＭｂ６２０の空間内のエンジンを開始し、エンジンが全てアクティブになる（６９０）と、ＶＭｂ６２０は動作可能になる。６０５と付されたスイッチアウト命令と、スイッチイン命令６７０との間の時間が、ＶＭ切替えオーバヘッド「Ｖ」である。一方、スイッチイン命令６８０から、６９０においてＶＭｂ６２０が完全に動作可能になるまでの時間が、コンテキスト回復オーバヘッドＲである。
【００３４】
ハードウェアベース（例えばＧＰＵベース）のシステムの１つの実施形態は、ＩＰブロックの非同期実行を可能にすることになる。この場合、複数のＩＰブロックがいくつかのＶＦ又はＰＦにわたり非同期に実行することができる。この実施形態において、グローバルコンテキストは、Ｎ個の実行中ＶＦ又はＰＦにつき、Ｎ個のコンテキストを用いて、内部でインスタンス化されることができる。そのような実施形態は、ハイパーバイザのアクティブかつ規則正しい切替え命令がなくても、自主的なグローバルコンテキスト切替えを可能にすることができる。この場合、二次スケジューリング（グローバルコンテキスト）及び実行リストコントローラ（ＲＬＣ）が、例えば優先順位及び優先権のようなハイパーバイザからのポリシ制御順位を引き継ぎ、ＧＰＵ内のコンテキスト切替えに関する責任を負うことができる。ＲＬＣは、ＩＰブロック／エンジンを制御し、個々のエンジンを開始又は停止することができる。この実施形態において、各ＶＭに関するグローバルコンテキストは、オンチップで又はメモリ内で格納及び復元されることができる。そのような実施形態の別の特徴は、あるサービスＩＰブロックが、同時に存在する複数のグローバルコンテキストを保持することができる点である。例えば、メモリコントローラは、異なるＶＦ又はＰＦを非同期に実行している複数のクライアントに同時にサービス提供することができる。そのような実施形態は、後半に停止するＩＰブロックに関する同期グローバルコンテキスト切替えオーバヘッドを削減することができる、ということが理解されるべきである。メモリコントローラのクライアントは、内部インタフェース内でメモリコントローラへＶＦ／ＰＦインデクスを示すことになり、メモリコントローラに、上記クライアントにサービス提供している場合に適切なグローバルコンテキストを適用させることができる。
【００３５】
非同期メモリアクセスは、ハイパーバイザによって管理されうるスケジューリングを困難にすることがある。ＣＰＵがＧＰＵメモリへ非同期アクセスするという状況において、ハイパーバイザのスケジューリング機能は、以下の要因によって制限されることがある。（１）ＧＰＵメモリは、各ＶＭが１のＮ空間を割り当てられるため、ハードパーテションされている（２）ＧＰＵホストデータ経路は、全てのＶＭについて常に利用可能な物理特性である、かつ、撹拌された（ｓｗｉｚｚｌｅ）アパーチャは、ＶＦの間でハードパーテションされている。しかし、（１）の代わりに、別の実施形態は、ハイパーバイザによって管理される二次レベルメモリトランスレーションテーブルを用いて、メモリの緩い分割を生成することになる。一次レベルページテーブルはＶＭによって既に用いられていることがある。ハイパーバイザは、この二次レベルにおいて、ページフォールトを処理することができ、要求に応じて物理ページをマッピングすることもできる。これによって、いくらかの余分なトランスレーションオーバヘッドを伴い、メモリ制限を最小化することができる。
【００３６】
ＣＰＵは、ＧＰＵがＶＭを実行している間、非同期に別のＶＭを実行していることがある。この、ＣＰＵとＧＰＵとの間の非同期モデルは、同じＶＭに同時に切り替えるためにＣＰＵ及びＧＰＵが互いを待機する必要のない優れた性能をもたらすことができる。しかし、このモデルは、ＣＰＵがＧＰＵレジスタに非同期にアクセスしていることがある場合、それは仮想化されておらず、ＶＦ／ＰＦ毎のＧＰＵレジスタの複数のインスタンスが存在しない可能性があり、その結果、（チップ上に占める空間がほとんどなく）ＧＰＵでのエリア節約を生じさせることがある、という問題を露呈する。この非同期メモリアクセスは、ハイパーバイザによって管理されうるスケジューリングを困難にすることがある。性能を改善し得る別の実施形態は、ＭＭＩＯレジスタのメモリ内への移動を含むことがある。
【００３７】
そのような実施形態において、ＧＰＵは、環状バッファポインタレジスタをメモリ位置（又は、それらがＶＦ／ＰＦ毎にインスタンス作成された場合、ドアベル）へ移動することによって、頻繁なＭＭＩＯレジスタアクセスをメモリアクセスに変えることができる。更に、この実施形態は、レベルベースの割込をパルスベースの割込に変換すること、及び、ＩＨ環状ポインタをメモリ位置へ移動することによって、割込関連のレジスタアクセスを削減することができる。これにより、ＣＰＵのＭＭＩＯレジスタアクセスが低減し、ＣＰＵページフォールトが低減し得る。
【００３８】
別の実施形態において、ＣＰＵは、ＧＰＵがＶＭを実行している間、非同期に別のＶＭを実行していることがある。このＣＰＵとＧＰＵとの間の非同期モデルは、同じＶＭに同時に切り替えるためにＣＰＵ及びＧＰＵが互いを待機する必要のない優れた性能をもたらすことができる。しかし、このモデルは、ＣＰＵがＧＰＵレジスタに非同期にアクセスしていることがある場合、それは仮想化されておらず、ＶＦ／ＰＦ毎のＧＰＵレジスタの複数のインスタンスが存在しない可能性があり、その結果、（チップ上に占める空間がほとんどなく）ＧＰＵでのエリア節約を生じさせることがある、という問題を露呈する。
【００３９】
ＣＰＵがＧＰＵレジスタへ非同期アクセスするという状況において、ハイパーバイザのスケジューリング機能は、以下の要因によって管理されることがある。（１）ＧＰＵレジスタは、高いリソース・コスト（チップ上に占められた空間）によってインスタンス化されない（２）ＣＰＵのメモリマップドレジスタアクセスはハイパーバイザによって停止され、ＣＰＵの仮想メモリページを無効とマークされる（３）ＧＰＵレジスタアクセスにおいて現在実行中でないＶＭが、ＣＰＵページフォールトの原因になることがある（ＧＰＵにおいて実行中でないＶＭにＣＰＵがアクセスしないことを確実にする）（４）ハイパーバイザは、フォールトの原因であるＶＭがＧＰＵにおいて実行するようにスケジュールされるまで、ＣＰＵコア上のフォールトの原因であるドライバスレッドを一時停止する（５）ハイパーバイザは、フォールトにおけるＣＰＵの待機を低減するために、ＧＰＵをフォールトの原因であるＶＭに切り替えることがある（６）ハイパーバイザは、無効なＶＦ内の全ての仮想レジスタＢＡＲを最初にマークし、ＣＰＵのレジスタアクセスが許可された場合、ＭＭＩＯメモリしかマッピングしないことがあり、ＣＰＵ仮想メモリページを定期的にマッピング及びアンマッピングするオーバヘッドが低減する。
【００４０】
ＧＰＵレジスタは、物理関数と仮想関数（ＰＦとＶＦ）との間で分割されることがあり、レジスタ要求は、システムレジスタバスマネージャ（ＳＲＢＭ、チップ内の別のＩＰブロック）へ転送されることがある。ＳＲＢＭは、要求がＰＦレジスタをターゲットにしているかＶＦレジスタをターゲットにしているかに関する指標とともにＣＰＵからの要求を受信する。ＳＲＢＭは、（必要に応じて）メモリコントローラのように共有リソースへのＶＭアクセスをブロックするために、例えばメモリコントローラのように、物理関数へのＶＦアクセスの経路をフィルタする働きをすることができる。これにより、１つのＶＭの活動が別のＶＭから切り離される。
【００４１】
ＧＰＵ  ＰＦレジスタベースアクセスレジスタ（ＢＡＲ）に関して、全てのＭＭＩＯレジスタがアクセスされることがある。仮想化されていない環境においてはＰＦのみがイネーブルされるが、仮想化環境モードにおいては、専らＰＦのＭＭＩＯレジスタＢＡＲがホストＶＭのＧＰＵドライバによってアクセスされることになる。同様に、仮想化されていない環境におけるＰＣＩ構成空間に関して、レジスタはＯＳによって設定されることになるが、仮想モードでは、ハイパーバイザがこの空間へのアクセスを制御し、レジスタをＶＭにエミュレートする可能性がある。
【００４２】
ＧＰＵ  ＶＦレジスタＢＡＲにおいて、ＭＭＩＯレジスタのサブセットがアクセスされることがある。例えばＶＦは、例えばディスプレイタイミング制御、ＰＣＩＥ、ＤＤＲメモリのようなＰＨＹレジスタを陳列せず、その他のサブセットへのアクセスは、ゲストＶＭドライバによって独占的にアクセスされる。ＰＣＩ構成空間に関して、仮想レジスタＢＡＲが陳列され、ＶＭ  ＯＳによって設定される。
【００４３】
別の実施形態において、割込が同様に仮想モデルにおいて考慮される必要があり、これは、グラフィックスコントローラ、マルチメディアブロック、ディスプレイコントローラ等のようなクライアントからの割込要求を収集する割込ハンドラ（ＩＨ）ＩＰブロックによって処理されることになる。特定のＶＦ又はＰＦの下で実行中のクライアントから収集された場合、ＩＨブロックは、所与のＶＦ又はＰＦからソフトウェアへ割込が利用可能であることを伝える。ＩＨは、ＶＦ又はＰＦのインデクスを用いて割込要求をタグ付けするために、自身の複数のクライアントが、内部インタフェースを用いて異なるＶＦ又はＰＦからの割込を要求することを可能にするように設計される。上述したように、ＶＭモードにおいて、ＩＨは、システムファブリックへ割込を発送し、割込の発送元に基づいて、ＰＦタグ又はＶＦタグを用いて割込をタグ付けする。プラットフォーム（ハイパーバイザ又はＩＯＭＭＵ）は、適切なＶＭへ割込を転送する。１つの実施形態において、ＧＰＵは、例えばモニタのようなローカルディスプレイ装置のセットを動作させている。この場合、ＧＰＵのディスプレイコントローラは、ＰＦにおいて常に実行中である。ディスプレイコントローラは、例えば垂直同期信号のようなソフトウェアへの割込を定期的に生成することになる。ＰＦからの例えばディスプレイ割込のようなこれらのタイプの割込は、グラフィックス機能性が他のタイプの割込の生成をもたらす場合、別のＶＦからの割込と同時に生成されることになる。
【００４４】
別の実施形態において、ハイパーバイザは、ＶＭの数がＶＦの数よりも多い場合、先回りページングシステムを実現することができる。この場合、ハイパーバイザは、（１）グローバルコンテキストスイッチアウトシーケンスを用いて、そのタイムスライスの後、現在のＶＭを自身のＶＦから外へ切り替える（２）ＶＦのグローバル切替えシーケンスが完了した後、現在のＶＭのメモリを立ち退かせる（３）自身のＶＦから現在のＶＭを切断し、自身のタイムスライスの前に、システムメモリから到来するＶＭのメモリをページ付けし、空になったＶＦに到来するＶＭを接続し、空になったＶＦにおいて新たなＶＭを実行する、ことができる。これにより、ＶＦ毎にＶＭを共有することによって、少ないＶＦで多数のＶＭを実行することが可能になる。
【００４５】
ソフトウェア内で、ハイパーバイザは、ハードウェア固有のドライバを有さないことがある。そのような実施形態において、ハイパーバイザは、ＰＦを介してＰＣＩ構成レジスタへの独占的なアクセスを有することができ、ハイパーバイザにおけるハードウェア固有のコードを最小化する。ハイパーバイザの責務は、ＧＰＵ初期化、物理リソース割当て、仮想関数をイネーブルし、ＶＭに割り当てること、コンテキスト保存エリア割当て、グローバルコンテキスト切替え及びＣＰＵ同期化のスケジューリング、ＧＰＵタイムアウト／リセット管理、ならびに、メモリ管理／ページングを含んでよい。
【００４６】
同様にソフトウェアにおいて、ホストＶＭの役割は、任意選択のハードウェア固有ドライバを有することがあり、例えばディスプレイコントローラ又はＤＲＡＭインタフェースのようなＰＦを介して特権的かつ物理的ハードウェア機能への独占的なアクセスを有することがある。ホストＶＭの責務は、ローカルに取り付けられたディスプレイの管理、デスクトップ構成、ＶＭの数がＶＦの数よりも大きい場合のメモリページングを含んでよい。また、ホストＶＭは、ハイパーバイザのＧＰＵ管理責務の一部を委任されることもある。例えば、デスクトップ構成及びメモリページングのようなＰＦにおけるいくつかの特徴を実現する場合、ホストＶＭは、例えばグラフィックスエンジン又はＤＭＡエンジンのような加速用ＧＰＵを用いることがある。この場合、ＰＦは、実行中のＶＦに対応するグローバルコンテキストと同時に存在するグローバルコンテキストのうちの１つを生成することになる。この実施形態において、ＰＦは、タイムスライス形式でＶＦに伴って切り替わるグローバルコンテキストを共有することになる。
【００４７】
本明細書における開示に基づいて多数の変形例が可能であることが理解されるべきである。特徴及び要素が特定の組み合わせで上述されたが、各特徴又は要素は、その他の特徴及び要素がなくても単独で用いられてよく、あるいは、他の特徴及び要素を伴う又は伴わない様々な組み合わせで用いられてもよい。
【００４８】
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実現されてよい。適切なプロセッサは、一例として、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、複数のマイクロプロセッサ、ＤＳＰコアに接続された１つ又は複数のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）回路、他のあらゆるタイプの集積回路（ＩＣ）、及び／又は、ステートマシンを含む。そのようなプロセッサは、処理されたハードウェア記述言語（ＨＤＬ）命令の結果及びネットリストを含む他の中間データ（例えば、コンピュータ可読媒体に格納されることができるそのような命令）を用いて製造工程を設定することによって製造されてよい。そのような処理の結果は、本発明の態様を実現するプロセッサを製造するために、半導体製造過程において後に用いられるマスクワークであってよい。
【００４９】
本明細書において提供された方法又はフローチャートは、汎用コンピュータ又は汎用プロセッサによって実行するために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアにおいて実現されてよい。コンピュータ可読記憶媒体の例は、読取専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、レジスタ、キャッシュメモリ、半導体メモリ装置、例えば内臓ハードディスク及びリムーバブルディスクのような磁気媒体、光磁気媒体、例えばＣＤ−ＲＯＭディスクのような光媒体、及び、デジタルバーサタイルディスク（ＤＶＤ）を含む。
【図１】
2015503784.tif 000003
【図１Ａ】
2015503784.tif 000004
【図２】
2015503784.tif 000005
【図３】
2015503784.tif 000006
【図４】
2015503784.tif 000007
【図５】
2015503784.tif 000008
【手続補正書】
【提出日】平成26年9月4日(2014.9.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
グラフィックス処理部（ＧＰＵ）において仮想マシン間を移行するための方法であって、
バスインタフェース（ＢＩＦ）が、第１のグローバルコンテキストを有する第１の仮想マシン（ＶＭ）から第２のグローバルコンテキストを有する第２のＶＭへ切り替えることを要求することであって、中央処理部（ＣＰＵ）のハイパーバイザが前記第１のＶＭおよび前記第２のＶＭに関するリソースを管理することと、
前記第１のＶＭにおいて新たなコマンドの受け取りを停止することであって、前記ＧＰＵの知的財産（ＩＰ）ブロックが、前記要求に応答して、更なるコマンドの受け取りを停止し、前記ＩＰブロックの各々が、前記ＶＭ信号からの切替え準備完了信号を前記ＢＩＦに送信することと、
前記第１のグローバルコンテキストを保存することと、
前記ＩＰブロックの各々が、前記ＶＭ信号からの切替え準備完了信号を前記ＢＩＦに送信することと、
前記ＢＩＦが、前記ＶＭ信号からの切替え準備完了信号を前記ＩＰブロックの各々から受信することに応答して、前記切替え準備完了信号を前記ハイパーバイザに送信することと、
前記ハイパーバイザが、前記ＢＩＦから前記切替え準備完了信号を受信することに応答して、前記第１のＶＭから切り替えることと、
を備える方法。
【請求項２】
前記第１のＶＭにおいて以前要求されたコマンドが処理を終了することを許可することを更に備える、請求項１に記載の方法。
【請求項３】
前記コマンドは、前記第１のグローバルコンテキストを保存する前に処理を終了する、請求項２に記載の方法。
【請求項４】
前記第１のグローバルコンテキストは、レジスタを介して前記ＢＩＦから通信されたメモリ位置に保存される、請求項１の方法。
【請求項５】
スイッチアウトシーケンスを終了することを更に備える、請求項１に記載の方法。
【請求項６】
前記第２のＶＭに関する前記第２のグローバルコンテキストをメモリから復元することを更に備える、請求項１に記載の方法。
【請求項７】
前記第２のＶＭの実行を開始することを更に備える、請求項６に記載の方法。
【請求項８】
前記第１のＶＭから前記第２のＶＭへの切替えが完了したことを信号伝達することを更に備える、請求項７に記載の方法。
【請求項９】
前記第１のＶＭから前記第２のＶＭへの切替えが完了したことを示す信号が時間制限内に受信されなかった場合、仮想マシン間を切り替えるためにＧＰＵをリセットする、請求項１に記載の方法。
【請求項１０】
仮想マシン間を切り替えることができるシステムであって、
第１のグローバルコンテキスト及び第２のグローバルコンテキストを有する第１の仮想マシン（ＶＭ）及び第２の仮想マシン（ＶＭ）に関するリソースを管理する、中央処理部（ＣＰＵ）のハイパーバイザと、
前記第１のＶＭから前記第２のＶＭへ切り替える要求を示すグローバルコンテキスト切替え信号を送信するバスインタフェース（ＢＩＦ）と、
前記グローバルコンテキスト切替え信号を受信し、前記要求に応答して更なるコマンドの受け取りを停止し、前記第１のグローバルコンテキストをメモリに保存する、グラフィックス処理部（ＧＰＵ）の知的財産（ＩＰ）ブロックであって、各々が、前記ＶＭ信号からの切替え準備完了信号を前記ＢＩＦへ送信するＩＰブロックと、を備え、
前記ＢＩＦは、前記ＶＭ信号からの切替え準備完了信号を前記ＩＰブロックの各々から受信することに応答して、前記切替え準備完了信号を前記ハイパーバイザに送信するようにさらに構成されており、
前記ハイパーバイザは、前記ＶＭ信号からの切替え準備完了信号を前記ＢＩＦから受信することに応答して、前記第１のＶＭから切り替えるように構成されている、
システム。
【請求項１１】
前記ＩＰブロックは、前記第１のＶＭにおいて以前要求されたコマンドが処理を終了することを許可し、前記コマンドは、前記第１のグローバルコンテキストを保存する前に処理を終了させ、前記第１のグローバルコンテキストは、レジスタを介して前記ＢＩＦから通信されたメモリ位置に保存され、前記ハイパーバイザは、スイッチアウトシーケンスを終了し、前記ＩＰブロックは、前記第２のＶＭに関する前記第２のグローバルコンテキストをメモリから復元する、請求項１０に記載のシステム。
【請求項１２】
前記ＧＰＵは第２のＶＭの実行を開始する、請求項１０に記載のシステム。
【請求項１３】
前記ＩＰブロックは、前記第１のＶＭから前記第２のＶＭへの切替えが完了したことを信号伝達する、請求項１２に記載のシステム。
【請求項１４】
前記ＧＰＵは、前記第１のＶＭから前記第２のＶＭへの切替えが完了したことを示す信号が制限時間内に受信されなかった場合に、仮想マシン間を移行するためにリセットする、請求項１０に記載のシステム。
【国際調査報告】
2015503784.tif 000009
2015503784.tif 000010