JP2009015848A - 階層化された仮想アーキテクチャに仮想イベントを導入するための装置、方法及びシステム - Google Patents

階層化された仮想アーキテクチャに仮想イベントを導入するための装置、方法及びシステム Download PDF

Info

Publication number
JP2009015848A
JP2009015848A JP2008169354A JP2008169354A JP2009015848A JP 2009015848 A JP2009015848 A JP 2009015848A JP 2008169354 A JP2008169354 A JP 2008169354A JP 2008169354 A JP2008169354 A JP 2008169354A JP 2009015848 A JP2009015848 A JP 2009015848A
Authority
JP
Japan
Prior art keywords
logic
virtual
virtual machine
guest
host
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
Application number
JP2008169354A
Other languages
English (en)
Inventor
Steven M Bennett
エム ベネット スティーヴン
Andrew V Anderson
ヴィ アンダーソン アンドリュー
Gilbert Neiger
ネイガー ギルバート
Dion Rodgers
ロジャーズ ディオン
Barry E Huntley
イー ハントリー バリー
Lawrence O Smith
オー スミス ローレンス
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 JP2009015848A publication Critical patent/JP2009015848A/ja
Pending legal-status Critical Current

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/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/45558Hypervisor-specific management and integration aspects
    • 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/45558Hypervisor-specific management and integration aspects
    • G06F2009/45566Nested virtual machines

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】階層化された仮想アーキテクチャに仮想イベントを導入するための装置、方法及びシステムを提供すること。
【解決手段】一実施例による装置は、仮想マシンエントリロジックと、認識ロジックと、評価ロジックとを有する。仮想マシンエントリロジックは、仮想マシンで動作するゲストへ、当該装置の制御をホストから移すことを開始する。認識ロジックは、仮想イベントを仮想マシンに導入するためのホストからのリクエストを認識する。評価ロジックは、仮想イベントを処理する介在モニタを特定する。
【選択図】図1

Description

本発明は一般に情報処理の技術分野に関連し、特にプラットフォームの仮想化の技術分野に関連する。
概して、データ処理装置におけるリソースの仮想化の概念は、1つ以上のオペレーティングシステム(それぞれ「OS」と言及する)の複数のインスタンスが1つのデータ処理システムで動作するのを可能にすることであり、たとえ装置及び装置のリソースに対して各OSが完全な直接的な制御機能を有するように設計されていた場合でさえ、それを可能にする。一般に仮想化は、ソフトウエア(例えば、仮想マシンモニタ(VMM: Virtual Machine Monitor)を使って、仮想リソースを有する「仮想マシン」(VM: Virtual Monitor)を各OSに与えることで実現され、その仮想リソースをOSは完全に直接的に制御してよい。VMMは、VM内の物理的リソースを共用すること及び/又は割り当てることのような仮想化の指針(virtualization policy)を実現するシステム環境(仮想環境)を維持する。VMで動作する各OS及び他の何らかのソフトウエアは、「ゲスト」又は「ゲストソフトウエア」と言及され、「ホスト」又は「ホストソフトウエア」はVMMのようなソフトウエアであり、仮想環境の外で動作する。
データ処理装置のプロセッサは、例えば2つのモード(ルートモード及び非ルートモード)で動作することで仮想化をサポートする。ルートモード(root mode)ではソフトウエアは、ハードウエア上で、どの仮想環境に対しても外部で、直接的に動作する。非ルートモード(non-root mode)では、ソフトウエアは意図される特権レベルで動作するが、ルートモードで動作しているVMMによるホストの仮想環境内で動作する。仮想環境の場合、あるイベント、処理及び状況(特権のあるレジスタやリソースにアクセスする試みや外部割り込み等)は遮られ、即ちプロセッサがその仮想環境を出るようにし、VMMが例えば仮想ポリシを実現する動作を行うようにする。仮想環境を設定する、そこに入る、そこから出る及び維持する命令をプロセッサはサポートし、プロセッサの仮想化機能を指示又は制御するレジスタビット又は他の構造をプロセッサは含んでもよい。
本発明の課題は、階層化された仮想アーキテクチャに仮想イベントを導入するための装置、方法及びシステムを提供することである。
本発明の一形態によれば、仮想マシンエントリロジックと、認識ロジックと、評価ロジックとを有する装置が使用される。前記仮想マシンエントリロジックは、仮想マシンで実行されるゲストへ、当該装置の制御をホストから移すことを開始する。前記認識ロジックは、仮想イベントを前記仮想マシンに導入するための前記ホストからのリクエストを認識する。前記評価ロジックは、前記仮想イベントを処理する介在モニタを特定する。
本発明は添付図面と共に非限定的な実施例により説明される。
階層化された仮想アーキテクチャに仮想イベントを導入する装置及び方法の実施例が説明される。以下の説明では、構成要素やシステム構成のような多くの具体的詳細が、本発明の更なる理解を促すために説明される。しかしながら、本発明はそのような具体的詳細によらず実施されてもよいことを当業者は理解するであろう。更に、ある周知の構造や回路等は、本発明を不必要に曖昧にすることを避ける観点から詳細には示されていない。
図1は、本発明の実施例が使用される階層化された仮想アーキテクチャ100を示す。図1では、プラットフォームハードウエア110は、何らかのOS又はVMMソフトウエアを実行できる如何なるデータ処理装置でもよい。例えば、プラットフォームハードウエアは、パーソナルコンピュータ、メインフレームコンピュータ、サーバ、携帯用コンピュータ、携帯装置、セットトップボックスその他の如何なるコンピュータシステム等でもよい。ベア(bare)プラットフォームハードウエア110は、プロセッサ120、メモリ130、入力/出力(I/O)装置111及びチップセット121を含む。
プロセッサ120は汎用マイクロプロセッサ、ディジタル信号プロセッサ又はマイクロコントローラ等を含む如何なるタイプのプロセッサでもよく、例えば、インテル(登録商標)ペンティアム(登録商標)プロセッサファミリ、Itanium(登録商標)プロセッサファミリ、若しくはインテル(登録商標)コーポレーションから入手可能な他のファミリに属するプロセッサ、他者からの他のプロセッサ等でもよい。図1はそのようなプロセッサ120を1つしか示していないが、ベアプラットフォームハードウエア110はプラットフォームをいくつでも含んでよい。プロセッサ120は複数のスレッド又は複数のコアを如何なる組み合わせで含んでもよい。
メモリ130は、スタティック又はダイナミックランダムアクセスメモリ、半導体ベースのリードオンリ又はフラッシュメモリ、磁気又は光ディスクメモリでもよいし、プロセッサ120により読取可能な他の如何なるタイプの媒体でもよいし、そのような媒体の如何なる組み合わせでもよい。プロセッサ120及びメモリ130は何らかの既知の方法で互いに結合される又は通信を行い、既知の方法は、1つ以上のバスを介した直接的な又は間接的なものでもよいし、1対1形式でもよいし、他の有線又は無線接続でもよい。ベアプラットフォームハードウエア110は、追加的な装置又は接続をいくつでも含んでよい。
ベアプラットフォームハードウエア110に加えて、図1はVMM140、VM150,160,170,180及び多数のゲストを示している。
VMM140は何らかのソフトウエア、ファームウエア又はハードウエアであり、ベアプラットフォーム110上で動作する又はそこにアクセス可能であるようにインストールされ、VM(即ち、抽象化したベアプラットフォームハードウエア110)をゲストに提示し、或いはそうでなければVMを作成し、VMを管理し、仮想アーキテクチャ100でサポートされている仮想環境内で仮想ポリシを実現する。本実施例では、VMM140は「ルートモードホスト」であり、その理由はプロセッサ120上でルートモードで動作するからである。他の実施例では、ルートモードホストは、モニタ、ハイパーバイザ、OS又は他のソフトウエア、ファームウエア若しくはハードウエア(ベアプラットフォームハードウエアを制御可能なもの)等の如何なるものでもよい。
ゲストは如何なるOSでもよいし、如何なるVMMでもよく(VMM140の他のインスタンスも含む)、如何なるハイパーバイザでもよいし、如何なるアプリケーションその他のソフトウエアでもよい。VMに与えられたプラットフォーム及びプロセッサのアーキテクチャに従って、各ゲストは物理的リソースにアクセスすることを想定し、例えば、ベアプラットフォームハードウエア110の、プロセッサ、プラットフォームレジスタ、メモリ、I/O装置等にアクセスする。VM150で動作するようインストールされたゲストOS152及びゲストアプリケーション154,155と、VM160で動作するようにインストールされたゲストVMM162と、VM170で動作するようインストールされたゲストOS172と、VM180で動作するようインストールされたVMM182と共にVM150,160,170及び180が図1に示されている。本実施例では、総てのゲストが非ルートモードで動作する。図1は4つのVM、3つのゲストOS及び2つのゲストアプリケーションを示しているが、VMはいくつ作成されてもよいし、ゲストOS及びアプリケーションのいくつでもが各VMで動作するようにインストールされてもよい(これらは総て本発明の範囲内である。)。
仮想アーキテクチャ100は「階層的(layered)」又は「再帰的(recursive)」である。なぜなら、VMM140のような或るVMMは、例えばVMM162のような他のVMMをゲストとするようにホストを務めるからである。階層的な仮想アーキテクチャ100では、VMM140はVM150,160を含む仮想環境のホストになるが、どの仮想環境の中でもゲストにならない。なぜなら、VMM及びベアプラットフォームハードウエア110間でモニタを一切「介在」せずにベアプラットフォームハードウエア110上で動作するようにVMMはインストールされているからである。「介在する」モニタ(“intervening” monitor)は、ゲストOS172のようなゲストに対してホストを務めるVMM162のようなモニタであるが、それ自身ゲストである。VMM162は、VM170,180を含む仮想環境のホストであるが、VMM140によるホストの仮想環境内のゲストでもある。介在するモニタ(例えば、VMM162)は、ここではペアレントゲスト(親ゲスト)と言及される。なぜなら、それは他のVM(又はVMの階層)に対するペアレント及び前提のVMMのゲストの双方として機能するからである(例えば、VMM140はVMM162のペアレントであり、VMM162はゲスト172,182二対するペアレントである。)。
VMM140とゲストとの間に介在するモニタが一切無ければ、VMM140のようなモニタは、OS152、ゲストアプリケーション154、ゲストアプリケーション155及びゲストVMM162のようなゲストの「ペアレント」として言及される。ゲストはそのモニタの「チャイルド」(子)として言及される。ゲストはチャイルド及びペアレント双方であってもよい。例えば、ゲストVMM162は、VMM140のチャイルドであり、且つゲストOS172及びゲストOS182のペアレントである。
ゲストによりアクセス可能なリソースは、「特権(privileged)」又は「非特権(non-privileged)」リソースの何れかに分類されてよい。特権リソースの場合、ホストはゲストの望む機能を促す一方、そのリソースに対する最終的な制御を留保する。非特権リソースはホストにより制御される必要が無く、ゲストにより直接的にアクセスされてよい。
更に、各ゲストOSは様々なイベントを処理することを想定しており、例えばそのイベントは、例外(例えば、ページ誤り、プロテクション障害)、割り込み(例えば、ハードウエア割り込み及びソフトウエア割り込み)及びプラットフォームイベント(例えば、初期化やシステム管理割り込み)等である。これらの例外、割り込み及びプラットフォームイベントは、本願では「イベント」として包括的に及び個別的に言及される。これらのイベントのいくつかは「特権」のあるものである。なぜなら、それらはホストにより処理され、VMの適切な処理、ホストをゲストから保護すること及びゲスト同士を互いに保護すること等を保証しなければならないからである。
何らかの所与の時点において、プロセッサ120はVMM140又は何らかのゲストからの命令を実行中であり、そして、VMM又はゲストがアクティブであり且つプロセッサ120上で動作している又は制御を受けているかもしれない。特権のイベントが発生した場合又はゲストが特権リソースにアクセスを試みた場合、コントロール(control)がゲストからVMM140に移されてもよい。ゲストからホストへのコントロールの移行は、本願では「VMエグジット(VM exit)」と言及される。イベントを処理し又はリソースへのアクセスを適切に促した後、VMM140はコントロールをゲストに戻してもよい。ホストからゲストへのコントロールの移行は、本願では「VMエントリ(VM entry)」と言及される。
上述したように、ゲストからルートモードホストへコントロールを移すVMエグジットに加えて、本発明の実施例は、ゲストから非ルートモードホストへ(例えば、介在するモニタへ)コントロールを移すVMエグジットを用意してもよい。本発明の実施例では、仮想イベント(即ち、VMエグジットを引き起こすかもしれないもの)は、「トップダウン」又は「ボトムアップ」仮想イベントとして分類されてよい。
「トップダウン」仮想イベントでは、どのホストがVMエグジットでコントロールを受けたかを判定することは、アクティブゲストのペアレントから出発してルートモードホストに向けて進むことで実行される。トップダウン仮想イベントは、アクティブゲストの処理(アクション)を通じて生じる仮想イベントでもよく、そのアクションは、ペンティアム(登録商標)プロセッサファミリに属するプロセッサの命令セットアーキテクチャにおけるCPUID命令のような仮想命令の実行を含む。一実施例では、1つ以上の仮想イベントについてトップダウン仮想イベント処理を迂回する機能が、ホストに備わっていてもよい。
「ボトムアップ」仮想イベントでは、どのホストがVMエグジットでコントロールを受けたかを判定することは、反対向きに実行され、例えばルートモードホストからアクティブゲストのペアレントに向けて実行される。ボトムアップ仮想イベントは、前提とするプラットフォームのアクションにより生じる仮想イベントでもよく、そのアクションは例えばハードウエア割り込み及びシステム管理割り込みであり、或いは、例えば導入される仮想割り込みのように前提とするプラットフォームのイベントをモデル化する。一実施例では、プロセッサ例外は、ボトムアップ仮想イベントとして処理される。例えば、アクティブゲストの実行中にページ誤り例外処理の生じることは、ボトムアップ形式で処理(評価)されてもよい。このボトムアップ処理は、総てのプロセッサ例外に又はその一部分に適用してもよい。
図1の例では、仮想マシン制御構造(VMCS)132に格納されているデータに従って、プロセッサ120はVMの動作を制御する。VMCS132は或る構造であり、1つ又は複数のゲストの状態、VMM140の状態、VMM140が1つ以上のゲストの動作をどのように制御するかを示す実行制御情報、VMエグジット及びVMエントリに関する情報その他の情報を有する。プロセッサ120はVMCS132からの情報を読み取り、VMの実行環境及びその動作に対する制約を確認する。本実施例では、VMCS132はメモリ130に格納されている。VMCS132は複数の構造に分割され、その複数の構造の各々は1つのホスト又は1つのゲストに対応し、各々は独立のVMCSと考えられてよい。
VMMの「ゲスト階層」は、VMMでサポートされている環境又は仮想環境内で動作するようインストールされたソフトウエア群である。本発明は或る仮想アーキテクチャで実現され、その仮想アーキテクチャではゲスト階層がVMCS(複数)の間で一連のポインタを含んでいる。これらのポインタは、チャイルドのVMCSからペアレントのVMCSを指す場合は「ペアレントポインタ」と言及され、ペアレントのVMCSからチャイルドのVMCSを指す場合は「チャイルドポインタ」と言及される。VMMのゲスト階層の場合、VMM及びアクティブゲストの間に1つ以上の介在モニタがあるかもしれない。ゲスト階層が考察されているVMMに近い介在モニタは、アクティブゲストに相対的に近い介在モニタよりも「下位(lower)」であると言及される。
図2は、VMM220のゲスト階層を示し、それはベアプラットフォームハードウエア210におけるルートモードとしてインストールされている。VMCS221はVMM220の制御構造である(但し、ルートモードホストは制御構造なしに動作してもよい。)。ゲスト230はVMM220のチャイルドであり、VMCS231により制御される。従って、ペアレントポインタ(PP)232はVMCS221を指す。ゲスト240はVMM220のチャイルドであり、VMCS241によって制御される。従ってペアレントポインタ242もVMCS221を指す。
ゲスト240はそれ自身がVMMであり、2つのチャイルド、ゲスト250,260を伴い、それぞれVMCS251,261を伴う。ペアレントポインタ252及びペアレントポインタ262双方がVMCS241を指す。
アクティブである又は動作中であるゲストのVMCSは、ペアレントのVMCSのチャイルドポインタによって示される。従って図2はVMCS251を指すチャイルドポインタ243を示し、ゲスト250がアクティブであることを表す。同様に、ヌルチャイルドポインタとは逆に、アクティブチャイルドポインタを伴うゲストのVMCSは、ペアレントのVMCSのチャイルドポインタによって示される。従って図2はVMCS241を指すチャイルドポインタ233を示す。従って、一連のペアレントポインタは、何らかの介在モニタVMCSを介してアクティブゲストのVMCSをルートモードホストのVMCSに連結し(リンクし)、一連のチャイルドポインタは、何らかの介在モニタのVMCSを介してルートモードホストのVMCSをアクティブゲストのVMCSに連結する。
VMCS221はここでは「ルートVMCS」と言及される。上述したように、一実施例では、VMCSは一切無い。ルートVMCSを含む実施例の場合、処理ハードウエアは、内部レジスタ又は他のデータ構造の中でルートVMCSを指すポインタを維持してよい。アクティブであるゲストのVMCSは、上述したように、現在の制御VMCSと言及される。例えば、ゲスト250がアクティブであった場合、VMCS251が現在の制御VMCSになる。一実施例では、処理ハードウエアは、内部レジスタ又は他のデータ構造における現在の制御VMCSを指すポインタを維持してもよい。
VMCSがペアレントVMCSでなかった場合、チャイルドポインタ233,253,263のようなチャイルドポインタはヌルポインタでもよい。VMCSがペアレントを持っていなかった場合、例えばそれがルートモードVMCSであった場合、ペアレントポインタ222のようなペアレントピン他はヌルポインタになってよい。代替的に、これらのポインタは省略されてもよい。場合によっては、ヌルVMCSポインタの「ヌル」用の値は、ゼロでもよい。他の実施例では、「ヌル」として別の値が使用されてもよい。例えば、32ビットアドレスを伴う実施例の場合、0xffffffffという値がヌルとして解釈されてもよい。
図2の各ゲストのVMCSは、仮想イベントを導入することに関する情報に備えて多数の格納場所を含む。これらの格納場所は、フィールドでもよいし、ビットでもよいし、如何なる他の情報格納空間フォーマットで用意されてもよい。
例えば、VMエグジットコントロールフィールド234,244,254,264が多数のイベントビットを含み、それぞれ可能性のある仮想イベントに対応するイベントビットを含んでもよい。各イベントビットは、関連する仮想イベントが生じた場合、ゲストのペアレントがコントロールを望むか否かを示す。
VMエントリコントロールフィールド235,245,255,265の各々は、仮想イベントの導入を制御するためのインジケータを含む。本実施例では、割り込みの導入を制御することにも使用される32ビットフィールドがある。ビット31は有効ビットであり、割り込み又は他のイベントが導入されることを示すように設定される。ビット10:8は導入される割り込み又は他のイベントのタイプを特定するのに使用され、値“001”はVMエグジットを導入することを意味する。このフィールドに関し、他の実施例は別のフォーマットを使用してもよいし、この情報を複数のフィールドにエンコードしてもよい。
VMエグジット情報フィールド236,246,256,266はエグジット理由フィールドを含み、VMエグジットの理由を説明するのに使用され、制御を受けるVMMがVMエグジットを如何に処理するかを判断することを支援する。この例では、上記のVMエグジットエントリコントロールがVMエグジットの導入に使用される場合、エグジット理由フィールドは、導入されるVMエグジットのタイプを説明することにも使用される。VMエグジットの理由に使用されたのと同じコードが、VMエグジットの導入に使用されてもよい。他の実施例では、VMエグジットの導入に使用されたエンコーディング(エンコード処理)は、VMエグジットの理由に使用されたエンコード処理と異なっていてもよい。他の実施例では、新たなフィールドがVMCSに加えられ、導入されるVMエグジットのタイプを表す。
上記の説明は、一実施例を説明するように特定のビット及びフィールドに関連していた。他の実施例では、各VMCSはそのようなビットや他の格納スペースを所望の制御インジケータに応じていくつでも含んでよい。
図1を参照するに、プロセッサ120は仮想化をサポートする制御ロジック(制御論理装置)121を含み、その仮想化は階層化された仮想アーキテクチャに仮想イベントを導入することを含む。制御ロジック121は、マイクロコード、プログラム可能なロジック、ハードコードロジック等で実現されてもよく、或いはプロセッサ120内の何らかの他の形式の制御ロジックで実現されてもよい。他の実施例では、制御ロジック121はハードウエアで、ソフトウエアで又はファームウエアで(例えば、プロセッサ抽象レイヤで)、プロセッサの中で又はプロセッサによりアクセス可能な何らかの装置内で又はプロセッサで読取可能な媒体(例えばメモリ)の中で実現されてもよい。
制御ロジック121は、VMエントリロジック122、認識ロジック123、評価ロジック124及びエグジットロジック125を含む。VMエントリロジック122は、VMエントリを準備し、VMエントリの原因になる。認識ロジック123は、仮想イベントを導入するリクエストを認識する。評価ロジック124は介在モニタを特定し、仮想イベントを処理する。VMエグジットロジック125は、VMエグジットを準備し、VMエグジットの原因になる。これらのロジックユニットの各々は追加的な機能(他のロジックユニットで実行されるように説明されたものを含む)を実行してもよく、これらのロジックユニットの全部又はどれでもが1つのロジックユニットに統合されてもよい。
制御ロジック121は、本発明の実施例による方法(例えば、図3に示される方法)をプロセッサ120が実行することを引き起こし、例えば、仮想化命令、ホスト若しくはゲストからの他の命令、又は仮想化イベントに応答して、1つ以上のマイクロオペレーションの実行を含めること(例えば、仮想化をサポートすること)をプロセッサ120が引き起こすようにする。
図3は、本発明の一実施例により仮想イベントを導入する方法300を示す。本方法はこの例に限定されないが、図3の方法例を説明する際、図1,2のプラットフォームの参照番号が使用される。
ボックス310では、アクティブなホストVMMが、インアクティブなゲスト(ゲストVMCS)のVMCSに、VMエントリ制御フィールドフィールドの値を格納し、そのゲストが動作することになる仮想マシンにVMエグジットが導入されることを表す。ボックス312では、ホストVMMがエグジット理由フィールドの値をゲストVMCSに格納し、導入されるVMエグジットのタイプを表す。ボックス314では、そのVMへのVMエントリが開始される。ボックス316では、認識ロジック123が、VMエグジットを導入するリクエストを認識し、例えば、ゲストVMCSからVMエントリ制御フィールドを読み取ることでそれを認識する。
ボックス320では、評価ロジック124が、挿入されるイベントはトップダウンイベントであるか或いはボトムアップイベントであるかを、例えばゲストVMCSからエグジット理由を読み取ることで確認する。イベントがトップダウンであった場合、本方法300はボックス330に続く。イベントがボトムアップであった場合、本方法300はボックス340に続く。
ボックス330では、評価ロジック124は、介在モニタがトップダウンイベントを処理するか否かを決定し、処理する場合、その介在モニタを識別する。
ボックス330では、ゲストVMCSがチャイルドVMCSとして特定される。ボックス332では、チャイルドのペアレントがイベントを導入したホストであるか否かの確認がなされる。そうであった場合、本実施例では、ボックス334にてエントリロジック122がVMエントリを完了し、ボックス335にて、エグジットロジック125は中間的なVMエグジットが生じることを引き起こし、コントロールがそのペアレントに移される。他の実施例では、ボックス314で開始されたVMエントリは不成功に終わり又は中断し、即ち、VMエントリは完了せず、コントロール(制御)はイベントを導入しようとしたホストと共にそのまま残る。
ボックス332に戻り、ペアレントはそのイベントを導入したホストでなかったことが確認された場合、ボックス336にて、そのペアレントがコントロール(制御)を望んでいるか否かを、例えば、チャイルドVMCSを検査して、導入されるイベントのイベントビットが設定されているか否かを確認することで確認する。望んでいた場合、ボックス334でエントリロジック122はVMエントリを完了し、ボックス335にてエグジットロジック125はVMエグジットが生じることを引き起こし、コントロール(制御)がそのペアレントに移される。例えば、ボックス336を介する唯1つのパスの後にVMエグジットがあった場合、意図されるゲストの中間的なペアレントはコントロール(制御)を受け取る。或る実施例では、仮想化イベントがVMエグジットを無条件に引き起こしてもよい。
ボックス336にて、ペアレントがコントロール(制御)を望んでいないことが確認された場合、ボックス338にて、チャイルドVMCSのペアレントポインタは、新たなチャイルドVMCSとしてペアレントVMCSを識別することに続き、最新のチャイルドVMCSに置き換わる。そして、ボックス332が反復される。
他の実施例では、ペアレントがコントロールを望むか否かの確認が、ホストによるイベント導入に備えて実行されるように、ボックス332から338は並び替えられてもよい。そうでなかった場合(例えば、VMCSのイベントビットがクリアであった場合)、VMエントリの不成功になる。
ボックス340乃至348の場合、介在モニタがボトムアップイベントを処理するか否かを評価ロジック124が決定し、処理する場合、介在モニタを識別する。ボックス340では、イベントを導入したホストのVMCSがペアレントVMCSとして確認される。ボックス341では、ペアレントVMCSのチャイルドポインタが続き、チャイルドVMCSを特定する。ボックス342では、ペアレントがコントロールを望んでいるか否かについての判定がなされ、例えばその判定は、チャイルドVMCSを検査し、導入されるイベントのイベントビットが設定されているか否かを確認することでなされる。そして、望んでいた場合、ボックス344にてエントリロジック122がVMエントリを完了し、ボックス345にてエグジットロジック125がVMエグジットを生じさせ、コントロールがペアレントに移される。或る実施例では、いくつかの仮想イベントが無条件にVMエグジットを引き起こしてもよい。
ペアレントがコントロールを望んでいないことがボックス342での判定で確認された場合、ボックス346にて、チャイルドは導入されたゲストであるか否かの確認がなされ、例えばその確認は、チャイルドVMCSのチャイルドポインタがヌルポインタであるか否かを判定することでなされる。ゲストであった場合、ボックス350にて、ボックス314で開始されたVMエントリは不成功に終わる又は中断され、即ちVMエントリは完了せず、イベントを導入しようとしたホストと共にコントロールは残る。他の実施例では、意図されるゲストに対するVMエントリが完了し、イベントを導入しようとしているホストに対して中間的なVMエグジットが続く。チャイルドは意図されたゲストでなかったことがボックス346で確認された場合、ボックス348でチャイルドVMCSが新たなペアレントVMCSとして確認され、最新のペアレントVMCSに置き換わる。そして、ボックス342が反復される。
本発明の範囲内においては、図3に示される方法を、異なる順序で実行してもよいし、図示の或るボックスを省略して実行してもよいし、別のボックスを追加して実行してもよいし、順序変更、省略又は追加されたボックスの組み合わせと共に実行してもよい。
上記の説明の一部は、コンピュータシステムのレジスタやメモリ内のデータビットに関する処理のアルゴリズム及び抽象的表現の観点からなされた。これらのアルゴリズム説明及び表現は、データ処理の技術分野の当業者が彼らの業務内容を他の当業者に効果的に伝えるために使用する手段である。アルゴリズムは、ここでは一般に、所望の結果をもたらす首尾一貫した処理シーケンスと考えられる。その処理は物理量の物理的取り扱いを必要とするものである。必須ではないが、通常的には、これらの量は、格納、転送、結合、比較その他の処理を行うことのできる電気的又は磁気的な信号の形式をとる。これらの信号をビット、値、エレメント、シンボル、キャラクタ、期間、数等々として言及することは、通常使用されるものであることに起因して、しばしば便利なことが分かるであろう。
しかしながら、これら及び類義語の総ては、適切な物理量に関連付けられ、それらの量に適用される便宜的なラベルに過ぎないことに留意を要する。特に断りのない限り、本発明を通じて、「処理」、「演算」、「計算」、「決定」等のような用語を使った議論は、コンピュータシステムや同様な電子コンピュータ装置の処理、アクション及びプロセス等に言及しており、そのコンピュータシステム等は、コンピュータシステムのレジスタ及びメモリ内で物理的な(電子的な)量で表現されているデータを操作し、そのデータを同様な他のデータに変換する。同様な他のデータは、コンピュータシステムのメモリ、レジスタ、他のそのような情報ストレージ、伝送媒体、ディスプレイ装置内で物理量として表現されるデータである。
更に、プロセッサ120だけでなく、本発明の一実施例により設計された構成要素又は構成要素の一部分の他の如何なるものも、創作、シミュレーションそして製造という様々な段階を考慮して設計されてよい。デザインを表現するデータは、様々な方法でそのデザインを表現してよい。先ず、シミュレーションに有用であるように、ハードウエアはハードウエア記述言語又は他の機能記述言語で表現されてもよい。追加的に又は代替的に、ロジック及び/又はトランジスタゲートを伴う回路レベルモデルが、デザインプロセスの或る段階で生成されてよい。更に、或る段階でほとんどのデザインが或るレベルに到達し、様々なデバイスの物理的配置を表すデータと共にモデル化される。通常の半導体製造技術が使用される場合、デバイスの配置モデルを表すデータは、様々な特徴の存否を様々なマスクレイヤ上で指定するデータでもよい(そのマスクは集積回路を製造するのに使用される。)。
デザインに関するどの表現の場合でも、データは何らかの形式のマシン読取可能な媒体に格納されてよい。そのような情報を伝送するように変調された又は生成された光学的又は電気的な信号波、メモリ、磁気的又は光学的なストレージ媒体(例えば、ディスク)は、マシン読取可能な媒体である。これらのどの媒体も、デザインの内容、本発明の実施例で使用された他の情報(例えば、エラーリカバリルーチンにおける命令等)を「伝送」又は「表現」する。情報を表現及び伝送する電気的搬送波が送信される場合、電気的な信号の複製、バッファリング又は再送が実行されるように、新たなコピーが作成される。従って通信プロバイダ又はネットワークプロバイダの処理は、例えば搬送波のように、事物のコピーを作成することを含み、本発明の技法を使用する。
以上、階層化された仮想アーキテクチャで仮想イベントを導入する装置及び方法が開示された。ある実施例が添付図面と共に説明及び図示されたが、そのような実施例は単なる例示に過ぎず、広範な発明を限定するものではないこと、本発明は図示及び説明された特定の構成及び配置に限定されないことが理解されるべきである。なぜなら、様々な他の修正例が本開示内容を理解した当業者に明らかだからである。そのような本発明の技術分野では、技術の成長は速く、更なる進展を容易には予測されない。添付の特許請求の範囲又は本開示内容の原理から逸脱せずに、技術革新を可能にすることで促されるように、開示された実施例は配置及び詳細について容易に修正可能になるかもしれない。
本発明の実施例が使用される階層化された仮想アーキテクチャを示す図である。 階層化された仮想アーキテクチャにおけるVMMのゲスト階層を示す図である。 本発明の一実施例により仮想イベントを導入する方法を示す図である。
符号の説明
100 仮想アーキテクチャ
110 プラットフォームハードウエア
120 プロセッサ
121 制御ロジック
122 VMエントリロジック
123 認識ロジック
124 評価ロジック
125 エグジットロジック
130 メモリ
132 VMCS(仮想マシン制御構造)
140 VMM(仮想マシンモニタ)
150,160,170,180 VM(仮想マシン)
152,172,182 ゲストオペレーティングシステム
154,155 ゲストアプリケーション
162 ゲストVMM

Claims (21)

  1. 仮想マシンエントリロジックと、認識ロジックと、評価ロジックとを有する装置であって、
    前記仮想マシンエントリロジックは、仮想マシンで実行されるゲストへ、当該装置の制御をホストから移すことを開始し、
    前記認識ロジックは、仮想イベントを前記仮想マシンに導入するための前記ホストからのリクエストを認識し、
    前記評価ロジックは、前記仮想イベントを処理する介在モニタを特定する
    ようにした装置。
  2. 当該装置の制御を前記介在モニタに移す仮想マシンエグジットロジックを更に有する請求項1記載の装置。
  3. 前記仮想マシンエグジットロジックが当該装置の制御を前記介在モニタに移す前に、前記仮想マシンエントリロジックが当該装置の制御を、前記ホストから前記ゲストに移す請求項2記載の装置。
  4. 前記評価ロジックが前記介在モニタを特定することに失敗した場合、前記仮想マシンエントリロジックは、前記ホストから前記ゲストへ制御を移すことを中断する請求項1記載の装置。
  5. 前記認識ロジックは、前記仮想マシン制御構造に格納されたインジケータに基づいて前記リクエストを認識する請求項1記載の装置。
  6. 前記評価ロジックは、前記仮想イベントのタイプも確認する請求項1記載の装置。
  7. 前記評価ロジックは、前記仮想マシン制御構造内のインジケータに基づいて、前記仮想イベントのタイプを判定する請求項6記載の装置。
  8. 前記仮想イベントの前記タイプに基づいて、トップダウン評価及びボトムダウン評価の何れを実行するかを、前記評価ロジックが判定する請求項6記載の装置。
  9. 仮想マシンで実行されるゲストへ、プロセッサの制御をホストから移行することを開始するステップと、
    前記仮想マシンに仮想イベントを導入するための前記ホストからのリクエストを認識するステップと、
    前記仮想イベントを処理する介在モニタを特定するステップと、
    を有する方法。
  10. 制御を前記介在モニタに移すステップを更に有する請求項9記載の方法。
  11. 評価ロジックが前記介在モニタを特定することに失敗した場合、前記ホストから前記ゲストへ制御を移すことを中断するステップを更に有する請求項9記載の方法。
  12. 前記リクエストを認識するステップが、仮想マシン制御構造に格納されたインジケータを読み取るステップを含む請求項9記載の方法。
  13. 前記仮想イベントのタイプを確認するステップを更に有する請求項9記載の方法。
  14. 前記仮想イベントのタイプを確認するステップは、前記仮想マシン制御構造に格納されたインジケータを読み取るステップを含む請求項13記載の方法。
  15. トップダウン及びボトムダウン評価の何れを実行するかを判定するステップを更に有する請求項9記載の方法。
  16. 仮想マシン用の制御構造を格納するメモリと、プロセッサとを有するシステムであって、前記プロセッサは、仮想マシンエントリロジックと、認識ロジックと、評価ロジックとを有し、
    前記仮想マシンエントリロジックは、仮想マシンで実行されるゲストへ、前記プロセッサの制御をホストから移すことを開始し、
    前記認識ロジックは、仮想イベントを前記仮想マシンに導入するための前記ホストからのリクエストを認識し、
    前記評価ロジックは、前記仮想イベントを処理する介在モニタを特定する
    ようにしたシステム。
  17. 前記プロセッサは、該プロセッサの制御を前記介在モニタに移す仮想マシンエグジットロジックを有する請求項16記載のシステム。
  18. 前記評価ロジックが前記介在モニタを特定することに失敗した場合、前記仮想マシンエントリロジックは、前記ホストから前記ゲストへ制御を移すことを中断する請求項16記載のシステム。
  19. 前記認識ロジックは、前記仮想マシン制御構造に格納されたインジケータに基づいて前記リクエストを認識する請求項16記載のシステム。
  20. 前記評価ロジックは、前記仮想マシン制御構造内のインジケータに基づいて、前記仮想イベントのタイプを判定する請求項16記載のシステム。
  21. 前記仮想イベントの前記タイプに基づいて、トップダウン及びボトムダウン評価の何れを実行するかを、前記評価ロジックが判定する請求項20記載のシステム。
JP2008169354A 2007-06-29 2008-06-27 階層化された仮想アーキテクチャに仮想イベントを導入するための装置、方法及びシステム Pending JP2009015848A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/771,806 US8151264B2 (en) 2007-06-29 2007-06-29 Injecting virtualization events in a layered virtualization architecture

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2012230621A Division JP5602814B2 (ja) 2007-06-29 2012-10-18 仮想アーキテクチャにおいて使用される装置、方法及びシステム

Publications (1)

Publication Number Publication Date
JP2009015848A true JP2009015848A (ja) 2009-01-22

Family

ID=40162362

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2008169354A Pending JP2009015848A (ja) 2007-06-29 2008-06-27 階層化された仮想アーキテクチャに仮想イベントを導入するための装置、方法及びシステム
JP2012230621A Expired - Fee Related JP5602814B2 (ja) 2007-06-29 2012-10-18 仮想アーキテクチャにおいて使用される装置、方法及びシステム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2012230621A Expired - Fee Related JP5602814B2 (ja) 2007-06-29 2012-10-18 仮想アーキテクチャにおいて使用される装置、方法及びシステム

Country Status (3)

Country Link
US (1) US8151264B2 (ja)
JP (2) JP2009015848A (ja)
CN (1) CN101339518B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011134320A (ja) * 2009-12-22 2011-07-07 Intel Corp 効率的なネストした仮想化
JP2012529092A (ja) * 2009-06-04 2012-11-15 インターナショナル・ビジネス・マシーンズ・コーポレーション 柔軟性のあるネットワーク接続性構成を備えたサブパーティションを有する論理分割されたシステム

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8170408B2 (en) * 2009-05-18 2012-05-01 Invensense, Inc. Optical image stabilization in a digital still camera or handset
JP4961459B2 (ja) * 2009-06-26 2012-06-27 株式会社日立製作所 仮想計算機システムおよび仮想計算機システムにおける制御方法
US8479196B2 (en) * 2009-09-22 2013-07-02 International Business Machines Corporation Nested virtualization performance in a computer system
JP5493125B2 (ja) * 2010-02-05 2014-05-14 株式会社日立製作所 仮想化方法及び計算機
US8468542B2 (en) * 2010-03-04 2013-06-18 Microsoft Corporation Virtual environment for server applications, such as web applications
US8910155B1 (en) * 2010-11-02 2014-12-09 Symantec Corporation Methods and systems for injecting endpoint management agents into virtual machines
US8458698B2 (en) * 2010-11-18 2013-06-04 International Business Machines Corporation Improving performance in a nested virtualized environment
WO2013091221A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Enabling efficient nested virtualization
US9122780B2 (en) * 2012-06-20 2015-09-01 Intel Corporation Monitoring resource usage by a virtual machine
US9292331B2 (en) 2013-03-15 2016-03-22 Bracket Computing, Inc. Expansion of services for a virtual data center guest
US9342343B2 (en) * 2013-03-15 2016-05-17 Adventium Enterprises, Llc Wrapped nested virtualization
US9772868B2 (en) 2014-09-16 2017-09-26 Industrial Technology Research Institute Method and system for handling interrupts in a virtualized environment
CN107924321B (zh) 2015-09-25 2022-01-18 英特尔公司 针对虚拟机退出的嵌套虚拟化
US10725807B2 (en) * 2016-10-13 2020-07-28 Red Hat Israel, Ltd. Page table entry caching for virtual device emulation
US10243746B2 (en) 2017-02-27 2019-03-26 Red Hat, Inc. Systems and methods for providing I/O state protections in a virtualized environment
CN109634721B (zh) * 2018-12-17 2023-10-10 广东浪潮大数据研究有限公司 一种虚拟机与主机的启动通信方法及相关装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02146634A (ja) * 1988-11-29 1990-06-05 Fujitsu Ltd 仮想計算機システムにおける割込み制御方式
JP2006510120A (ja) * 2002-12-19 2006-03-23 インテル コーポレイション バーチャルマシン動作においてマシン状態を管理する方法及びシステム
WO2006063274A1 (en) * 2004-12-10 2006-06-15 Intel Corporation System and method to deprivilege components of a virtual machine monitor
JP2007035045A (ja) * 2005-07-27 2007-02-08 Intel Corp 階層化された仮想化アーキテクチャにおける仮想化イベント処理
WO2007027739A1 (en) * 2005-08-30 2007-03-08 Microsoft Corporation Hierarchical virtualization with a multi-level virtualization mechanism
JP2007505402A (ja) * 2003-09-15 2007-03-08 インテル コーポレイション 特権イベントを処理するための複数のバーチャルマシーンモニタの利用

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4253145A (en) * 1978-12-26 1981-02-24 Honeywell Information Systems Inc. Hardware virtualizer for supporting recursive virtual computer systems on a host computer system
US20030229794A1 (en) * 2002-06-07 2003-12-11 Sutton James A. System and method for protection against untrusted system management code by redirecting a system management interrupt and creating a virtual machine container
US7124327B2 (en) * 2002-06-29 2006-10-17 Intel Corporation Control over faults occurring during the operation of guest software in the virtual-machine architecture
US7287197B2 (en) * 2003-09-15 2007-10-23 Intel Corporation Vectoring an interrupt or exception upon resuming operation of a virtual machine
US7237051B2 (en) * 2003-09-30 2007-06-26 Intel Corporation Mechanism to control hardware interrupt acknowledgement in a virtual machine system
US7356735B2 (en) * 2004-03-30 2008-04-08 Intel Corporation Providing support for single stepping a virtual machine in a virtual machine environment
US7305592B2 (en) * 2004-06-30 2007-12-04 Intel Corporation Support for nested fault in a virtual machine environment
US7685635B2 (en) * 2005-03-11 2010-03-23 Microsoft Corporation Systems and methods for multi-level intercept processing in a virtual machine environment

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02146634A (ja) * 1988-11-29 1990-06-05 Fujitsu Ltd 仮想計算機システムにおける割込み制御方式
JP2006510120A (ja) * 2002-12-19 2006-03-23 インテル コーポレイション バーチャルマシン動作においてマシン状態を管理する方法及びシステム
JP2007505402A (ja) * 2003-09-15 2007-03-08 インテル コーポレイション 特権イベントを処理するための複数のバーチャルマシーンモニタの利用
WO2006063274A1 (en) * 2004-12-10 2006-06-15 Intel Corporation System and method to deprivilege components of a virtual machine monitor
JP2007035045A (ja) * 2005-07-27 2007-02-08 Intel Corp 階層化された仮想化アーキテクチャにおける仮想化イベント処理
WO2007027739A1 (en) * 2005-08-30 2007-03-08 Microsoft Corporation Hierarchical virtualization with a multi-level virtualization mechanism

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012529092A (ja) * 2009-06-04 2012-11-15 インターナショナル・ビジネス・マシーンズ・コーポレーション 柔軟性のあるネットワーク接続性構成を備えたサブパーティションを有する論理分割されたシステム
JP2011134320A (ja) * 2009-12-22 2011-07-07 Intel Corp 効率的なネストした仮想化

Also Published As

Publication number Publication date
JP2013012252A (ja) 2013-01-17
JP5602814B2 (ja) 2014-10-08
CN101339518A (zh) 2009-01-07
US20090007103A1 (en) 2009-01-01
US8151264B2 (en) 2012-04-03
CN101339518B (zh) 2013-08-21

Similar Documents

Publication Publication Date Title
JP5602814B2 (ja) 仮想アーキテクチャにおいて使用される装置、方法及びシステム
US10599455B2 (en) Virtualization event processing in a layered virtualization architecture
US7900204B2 (en) Interrupt processing in a layered virtualization architecture
US8291410B2 (en) Controlling virtual machines based on activity state
EP1761850B1 (en) Support for nested faults in a virtual machine environment
JP6017706B2 (ja) ピアモニタにて信頼性・可用性・保守性(ras)フローをサポートする機構
US8370559B2 (en) Executing a protected device model in a virtual machine
US8473945B2 (en) Enabling system management mode in a secure system
US7975267B2 (en) Virtual interrupt processing in a layered virtualization architecture
US7287197B2 (en) Vectoring an interrupt or exception upon resuming operation of a virtual machine
US9747118B2 (en) Guest-specific microcode

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101130

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110223

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110330

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110524

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110819

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110824

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110921

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110927

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111020

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111025

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120214

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120509

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120514

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120611

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120626