JP5493125B2 - 仮想化方法及び計算機 - Google Patents

仮想化方法及び計算機 Download PDF

Info

Publication number
JP5493125B2
JP5493125B2 JP2010023872A JP2010023872A JP5493125B2 JP 5493125 B2 JP5493125 B2 JP 5493125B2 JP 2010023872 A JP2010023872 A JP 2010023872A JP 2010023872 A JP2010023872 A JP 2010023872A JP 5493125 B2 JP5493125 B2 JP 5493125B2
Authority
JP
Japan
Prior art keywords
virtual machine
machine manager
shadowing
read
register
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.)
Expired - Fee Related
Application number
JP2010023872A
Other languages
English (en)
Other versions
JP2011164732A (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2010023872A priority Critical patent/JP5493125B2/ja
Priority to EP10015782A priority patent/EP2363805A1/en
Priority to US12/980,549 priority patent/US9207939B2/en
Publication of JP2011164732A publication Critical patent/JP2011164732A/ja
Application granted granted Critical
Publication of JP5493125B2 publication Critical patent/JP5493125B2/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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

Description

仮想化計算機システムに関し、特に、仮想化支援機能を備えたプロセッサを用いた仮想計算機に関する。
近年、Intel(登録商標、以下同じ)社のXeon(登録商標、以下同じ) CPUを筆頭にサーバ向けCPUのメニイコア化が進展しており、2010年頃には一つのCPUに8コアが集積される見込みである。メニイコア化によってサーバ性能の余剰感が強まっており、余剰性能を活用する方法として仮想化ソフトウェアが注目され急速に普及している。
仮想化ソフトウェアは、物理的には1台のサーバ上で複数の仮想的なサーバ環境(仮想サーバ)を生成する。仮想サーバの種類として、物理的なサーバ資源(CPUコア、メモリ、I/Oデバイス)を空間的に分割して利用する論理区画(LPAR:Logical Partition)と、サーバ資源を時分割共有する仮想計算機(VM:Virtual Machine)との2つが知られている。
LPARを生成・制御する仮想化ソフトウェアを特にハイパバイザと呼ぶ。ハイパバイザはLPAR間でサーバ資源を共有しない性質を利用し、物理サーバでの障害発生時に影響範囲を1LPAR内に限定可能であり、障害耐性に優れている。
一方、VMを生成・制御する仮想化ソフトウェアを特に仮想計算機モニタ(VMM:VM Monitor)と呼ぶ。VMMはサーバ資源をVM間で共有でき、例えば物理的に搭載されたメモリ量以上のVMを稼働させる機能を有している。そのため、サーバ資源の利用効率に優れている。
更にLPARとVMの両方式の利点を生かす運用形態として、2段VMが知られている。2段VMでは、物理サーバ上でハイパバイザを稼働させてLPARを生成し、各LPAR上で更にVMMを稼働させる。LPAR上で稼動するVMMを特にLv1ゲスト、VM上で稼動するOSを特にLv2ゲストと呼ぶ。
ハイパバイザがLPAR間での故障耐性を維持しつつ、LPAR上ではVMMがサーバ資源を効率よく利用可能とする。
Xeon CPUでは仮想化ソフトウェアの実行を支援するVT−x(Virtual Techonlogy for IA−32 Processors)と呼ばれるハードウェア機構が搭載されている。
VT−xではハイパバイザ若しくはVMMのいずれか一方のみを稼働させることを前提としていたため、2段VMを実現しようとするとVT−x機構へのアクセスの競合が発生し、正常な処理が行えなかった。以下、Xeon CPUを前提に2段VMを実現する方式について述べる。
一つは、ハイパバイザの機能拡張を行い、LPAR上で稼動するVMMに対してVT−x機構を仮想的に提供すると共に、物理CPU内部のVT−x機構に対するアクセスを調停する機能を設けることによって、2段VMを実現する方法がある(例えば、特許文献1参照)。
他の方法としては、VMware社の仮想化ソフトウェア、VMware Server及びVMware ESX Serverを組み合わせる方法がある(例えば、非特許文献1参照)。この方法では、ハイパバイザに相当するソフトウェアのみがVT−xを利用して稼働する。VMMは、BT(Binary Translation)技術を用いて稼働する。ただし、BT技術を利用可能なOSが制限されている。
また、メインフレームにおける2段VMを実現する方式として、単一の物理計算機を複数の論理区画(LPAR)に分割し、LPAR上で仮想的なSIE(Start Interpretive Execution)命令の実行/インタセプトを契機に、VMMが使用するSIEパラメータとハイパバイザが使用するSIEパラメータ間との間でデータの授受を行うものがある(例えば、特許文献2参照)。
また、ハードウェアが備える仮想化支援機能をVMMに提供する方式としては、Redhat社のKVM(Kernel−based Virtual Machine)を用いて、VT−xに相当する機能であるSVMを搭載したAMD製のCPUを用いて仮想環境上で仮想的なSVMを提供する方法も知られている(例えば、非特許文献2参照)。
特開2009−3749号公報 米国特許第4792895号明細書
How to Install VMware ESX 4.0 on Workstation 6.5.2 as a VM, [平成22年1月7日検索],インターネット<http://xtravirt.com/xd10089> Avi Kivity、"Avi Kivity's blog"、[online]、平成20年9月2日、[平成21年12月24日検索]、インターネット<http://avikivity.blogspot.com/2008/09/nested−svm−virtualization−for−kvm.html>
2段VMではOSの他に2種類のソフトウェア(ハイパバイザ及びVMM)が動作するため、OSのみを動作させる場合と比べて性能低下が発生する。前述した2種類のソフトウェアが動作する契機は幾つか存在する。Xeon CPUを用いた仮想環境下では、VMM上で稼働するOSによる特権レジスタ操作を調停(エミュレーション)するケースが高い頻度で発生する。
したがって、VMMの種類に依存することなく、かつ、OSが特権レジスタを操作する場合に性能低下が生じない2段VMをXeon CPUにおいて実現することを目的とする。
本発明の代表的な一例を示せば以下の通りである。すなわち、プロセッサと、前記プロセッサに接続されるメモリとを備え、前記プロセッサによって実行され、計算機の物理資源を仮想的に分割して生成される複数の仮想計算機を管理する第1の仮想マシンマネージャと、前記各仮想計算機上で実行され、アプリケーションを実行するオペレーティングシステムを管理する第2の仮想マシンマネージャと、前記第1の仮想マシンマネージャによって前記メモリに格納され、前記第1の仮想マシンマネージャと前記第2の仮想マシンマネージャとの状態を管理する第1の管理情報と、前記第2の仮想マシンマネージャによって前記メモリに格納され、前記第2の仮想マシンマネージャと前記オペレーティングシステム又は前記アプリケーションとの状態を管理する第2の管理情報とを有し、前記プロセッサが、当該プロセッサを制御するための制御情報を格納するレジスタと、前記レジスタに対する読み出し操作に応じて、前記第1の管理情報又は前記第2の管理情報から値を読み出すシャドウイング機能とを備えた計算機における仮想化方法であって、前記第1の仮想マシンマネージャが、前記第2の仮想マシンマネージャからの呼び出しを検出する第1のステップと、前記第1の仮想マシンマネージャが、前記第2の仮想マシンマネージャからの呼び出し要因が前記シャドウイング機能を有効化するための指示であるか否かを判定する第2のステップと、前記第2の仮想マシンマネージャからの呼び出し要因が前記シャドウイング機能を有効化するための指示であると判定された場合に、前記第1の仮想マシンマネージャが、前記シャドウイング機能を有効化する第3のステップと、を含むことを特徴とする。
第2の仮想マシンマネージャの種類に依存することなく、Xeon CPUを用いた、オペレーティングシステムからのレジスタへのアクセスによる性能低下を生じない仮想化を実現できる。
本発明の第1の実施形態の仮想計算機システムの構成例を示すブロック図である。 本発明の第1の実施形態の仮想計算機システムのソフトウェアとハードウェアとの要部を示すスタック図である。 本発明の第1の実施形態のメモリの記憶領域内部の一例を説明する図である。 本発明の第1の実施形態のレジスタ調停方針表の一例を示す説明図である。 本発明の第1の実施形態のLv0 VMCSのゲスト状態エリアの一例を示す説明図である。 本発明の第1の実施形態のLv1 VMCSのゲスト状態エリアの一例を示す説明図である。 本発明の第1の実施形態のLv0 VMCSのシャドウイング設定の一例を示す説明図である。 本発明の第1の実施形態のLv1 VMCSのシャドウイング設定の一例を示す説明図である。 本発明の第1の実施形態のLv0 VMCSのインタセプト設定の一例を示す説明図である。 本発明の第1の実施形態のLv1 VMCSのインタセプト設定の一例を示す説明図である。 本発明の第1の実施形態のハイパバイザが実行する処理を説明するフローチャートである。 本発明の第1の実施形態における論理VM exit処理の詳細を説明するフローチャートである。 本発明の第1の実施形態における論理VM entry処理の詳細を説明するフローチャートである。 本発明の第1の実施形態のハイパバイザが実行するCR0又はCR4に対する更新処理を説明するフローチャートである。 本発明の第1の実施形態のハイパバイザが実行するTPRに対する更新処理を説明するフローチャートである。 本発明の第1の実施形態の仮想計算機におけるCR0又はCR4の更新処理を説明するフローチャートである。 本発明の第1の実施形態における、ゲスト命令実行時にCPUが実行する処理を説明するフローチャートである。 本発明の第1の実施形態のS1620におけるTPR参照処理の詳細を説明するフローチャートである。 本発明の第1の実施形態のS1630におけるTPR更新処理の詳細を説明するフローチャートである。 本発明の第1の実施形態のS1640におけるCR0又はCR4参照処理の詳細を説明するフローチャートである。 本発明の第1の実施形態のS1650におけるCR0又はCR4更新処理の詳細を説明するフローチャートである。 本発明の第2の実施形態におけるハイパバイザが実行するTPRに対する更新処理を説明するフローチャートである。
以下、本発明の一実施形態を図面に基づいて説明する。
[第1の実施形態]
図1は、本発明の第1の実施形態の仮想計算機システムの構成例を示すブロック図である。
物理計算機10は、仮想化支援機能であるVT−xに対応したx86(又はIA−32)互換のCPU70−1〜70−nを2つ以上(又は2ソケット以上)備え、これらのCPU70−1〜70−nはQPI(QUICK Path InterConnect)820を介してIOH(I/O Hub)800及び主記憶装置90に接続される。なお、以下の説明ではCPU70−1〜70−nを区別しない場合、CPU70と記載する。
IOH800には、バス840を介してI/Oインタフェース(I/O I/F)850が接続される。I/Oインタフェース850は、LAN860に接続されるネットワークアダプタ、ディスク装置870等に接続されるSCSIアダプタ、SAN890(Storage Area Network)に接続されるファイバーチャネルアダプタなどから構成される。
CPU70は、QPI820を介して主記憶装置90にアクセスし、IOH800を介してI/Oインタフェース850にアクセスして所定の処理を実行する。
なお、図1に示す例では、物理計算機10は、一つのI/Oインタフェース850のみを備えているが、複数備えていてもよい。
なお、I/Oインタフェース850は、グラフィックコントローラを含んでオペレータとの間で入出力を行うコンソール80にも接続され、画像の表示を行うことができる。
主記憶装置90は、CPU70によって実行されるプログラム及び当該プログラムを実行するときに必要となる情報を格納し、例えば、メモリ等が考えられる。以下では、主記憶装置90をメモリ90とも記載する。
メモリ90には、ハイパバイザ20が読み出され、当該ハイパバイザ20によって実現される各仮想計算機30−1〜30−n上に、Lv2 ゲストOS50−1〜50−nがそれぞれ実行される。さらに、各Lv2 ゲストOS50−1〜50−nは仮想計算機30−1〜30−n上で、任意のAP(Application)60−1〜60−nをそれぞれ実行する。なお、メモリ90上の領域の割り当てについては、図3を用いて後述する。
仮想計算機30−1〜30−nの設定方法については、ハイパバイザ20が、物理計算機10が備える物理的な計算機資源を仮想的な計算機資源に変換し、複数の仮想計算機30−1〜30−nに仮想的な計算機資源を割り当てる。なお、仮想計算機30−1〜30−nに、物理計算機10が備える計算機資源を割り当てる方法については、周知又は公知の技術を適宜用いればよいので、ここでは詳述しない。
仮想計算機30−1〜30−nは、それぞれ、独立した一つの計算機として稼働する。
仮想計算機30−1〜30−n上には、ゲストOS及びアプリケーションを管理する仮想化ソフトウェアとしてLv1 VMM40−1〜40−nがそれぞれ稼働する。図1に示す例では、Lv1 VMM40−1はLv2 ゲストOS50−1を管理し、Lv1 VMM40−nはLv2 ゲストOS50−nを管理する。また、Lv2 ゲストOS50−1〜50−nは、それぞれ、AP60−1〜60−nを実行する。
すなわち、本実施形態の物理計算機10上には、複数の仮想計算機30が稼働し、各仮想計算機30−1〜30−n上では複数のLv2 ゲストOS50−1〜50−nが稼働している。さらに、各Lv2 ゲストOS50−1〜50−n上では複数のAP60−1〜60−nが実行される。
なお、ハイパバイザ20を実現するためのプログラムは、記憶媒体としてのディスク装置870又はストレージ装置に格納され、物理計算機10の起動時にメモリ90へ読み出されてCPU70が実行する。
なお、以下の説明では、個々の仮想計算機を30−1〜30−nを区別しない場合、仮想計算機30と記載する。また、個々のLv1 VMM40−1〜40−nを区別しない場合、Lv1 VMM40と記載する。また、個々のLv2 ゲストOS50−1〜50−nを区別しない場合、Lv2 ゲストOS50と記載する。
図2は、本発明の第1の実施形態の仮想計算機システムのソフトウェアとハードウェアとの要部を示すスタック図である。
物理計算機10上には、複数の仮想計算機30を管理するハイパバイザ20が稼動している。各仮想計算機30上では、ハイパバイザ20によって提供される仮想的な計算機資源を用いてLv1 VMM40が稼動する。また、Lv1 VMM40上では、一以上のLv2 ゲストOS50が稼動する。
VT−x機能を備えるCPUは、通常の動作モードとは別に、仮想化支援機能を提供するVMXモードを備える。VMXモードには、VMX non−rootモードとVMX rootモードの二つの動作モードが含まれる。
VMX non−rootモードは、Lv1 VMM40、又は、Lv2 ゲストOS50若しくはAP60が実行される動作モードである。VMX rootモードは、ハイパバイザ20が実行される動作モードである。
前述した2つの動作モード間の移行については、VMX rootモードからVMX non−rootモードへの移行である「VM entry」と、VMX non−rootモードからVMX rootモードへの移行である「VM exit」との2つの状態移行がある。
VT−x機能を利用するハイパバイザ20は、各仮想計算機30の状態及びCPU70を制御するための情報(VMX non−rootモードにおけるCPU70の制御及び各VMXモード間の移行に関する情報)として、VMCS(Virtual Machine Control Structure)と呼ばれるデータを格納する。
図2に示す例では、CPU仮想化データ310−1〜310−nはハイパバイザ20が格納するVMCSである。詳細については後述する。また、Lv1 VMM40も同様にLv2 ゲストOS50及びハイパバイザ20によって割り当てられた仮想的なCPU(すなわち、仮想計算機30)を制御するための情報としてLv1 VMCS500−1〜500−nを格納する。
VMX rootモードからVMX non−rootモードへの移行(VM entry)方法の一例については、以下の通りである。
通常の動作モードからVMXモードへ移行する際には、ハイパバイザ20がVMXON命令を発効し、CPU70の動作モードをVMXモードへ移行させる。
VMXモードに移行したハイパバイザ20は、Lv0 VMCS400にLv2 ゲストOS50又はAP60を実行させるための情報を書き込んだ後にVM entry命令(VMLAUNCH命令又はVMRESUME命令)を発行し、VMX rootモードからVMX non−rootモードへ移行する(VM entry)。
VMX non−rootモードからVMX rootモードへの移行(VM exit)方法の一例については、以下の通りである。
Lv2 ゲストOS50が特権命令を発効したときなど所定の要因が発生した場合にCPU70がハイパバイザ20にVM exitを通知する。
ハイパバイザ20は、VM exitを検知すると所定のエミュレーションを実行してLv2 ゲストOS50の処理等を完了した後、Lv1 VMCS500を必要に応じて書き換えた後にVM entry命令を発行してVMX non−rootモードからVMX rootモードへ移行する。
本実施形態では、Lv1 VMM40とLv2 ゲストOS50又はAP60との間の動作モードの移行も発生する。以下では、Lv1 VMM40からLv2 ゲストOS50又はAP60への動作モードの移行を論理VM entryと呼び、Lv2 ゲストOS50又はAP60からLv1 VMM40への動作モードの移行を論理VM exitと呼ぶ。
なお、本実施形態では、論理VM entryが発生した場合に、ハイパバイザ20がLv1 VMCS500の内容(ゲスト状態エリア510及びホスト状態エリア520)を読み出し、Lv0 VMCS400のゲスト状態エリア410に設定することによって、仮想計算機30がLv2 ゲストOS50にVT−x機能の提供を実現している。
以下、VT−x機能を備えるCPU70におけるハードウェア及びソフトウェアの構成について詳述する。
VT−x機能を備えるCPU70は、VMEXIT判定部100、VMXモードフラグ110、VMCSポインタ120、シャドウイング機能130、及び特権レジスタ140を含む。
VMEXIT判定部100は、仮想計算機30の動作中に、Lv2 ゲストOS50の動作を確認してハイパバイザ20が呼び出される処理等に該当するか否かを判定する。すなわち、VM exitが発生するか否かが判定される。
VMXモードフラグ110は、実行中の命令がハイパバイザ20又は仮想計算機30のいずれの命令であるかを区別するためのフラグである。具体的には、実行中の命令がハイパバイザ20である場合は「VMX root」を示す値を、実行中の命令が仮想計算機30である場合は「VMX non−root」を示す値が格納される。
VMCSポインタ120は、ハイパバイザ20によって格納されるCPU仮想化データ310のメモリアドレスを格納する。
シャドウイング機能130は、仮想計算機30上で特権レジスタ参照命令等が実行される場合に、特権レジスタ140に格納される値の代わりに、CPU70がメモリ90(例えば、メモリ)上に格納されたデータを読み出して応答するための機能である。当該シャドウイング機能130によって、ハイパバイザ20を起動することなく特権レジスタ140を操作することが可能となるため、性能の低下を防止することが可能となる。
シャドウイング機能130は、ハイパバイザ20に提供される機能であるが、本実施形態では、後述する方法によって仮想計算機30についてもシャドウイング機能を提供することが可能となる。したがって、Lv2 ゲストOS50又はAP60が特権レジスタ140の操作をする場合に、シャドウイング機能が用いられることによってLv1 VMM40及びハイパバイザ20の実行を必要としないため、性能低下を防止することが可能となる。
特権レジスタ140は、CPU70が保持する特権レジスタであって、コントロールレジスタ0(CR0)、コントロールレジスタ4(CR4)、及びタスクプライオリティレジスタ(TPR)等が含まれる。なお、図示していないが、CPU70はこれ以外のレジスタを保持する。
CR0及びCR4は、CPU70の制御情報を格納する1ビットレジスタ(フラグ)の集合体である。制御情報には、PG、NE、PE、VMXE及びSMXE等が含まれる。
TPRは、命令実行の優先度を格納するレジスタであり、外部からの割り込み処理と現在処理中の命令とのどちらを優先的に実行すべきかを判定する場合に使用される。
本実施形態では、CR0、CR4及びTPRに対する操作時にシャドウイング機能130が用いられる。詳細については後述する。
ハイパバイザ20は、エミュレータ200、レジスタ調停方針表220、及び仮想化データ300を含む。
エミュレータ200は、各仮想計算機30間の調停を行う。エミュレータ200は、Lv0 VMCS400の設定を仮想計算機30の状態に応じて変更するためのVMCS制御部210を含む。VMCS制御部210によって、Lv0 VMCS400とLv1 VMCS500との対応関係が管理される。
レジスタ調停方針表220は、特権レジスタ又は特権レジスタの各フラグ毎にどのようなエミュレーションを実行するかを示す調停方針を格納する。詳細については、図4を用いて後述する。
仮想化データ300は、仮想計算機30の状態を格納する。仮想化データ300は、CPU70の状態を保持するCPU仮想化データ310を含む。
CPU仮想化データ310は、CPU70が備えるVT−x機能を制御するためのVMCSを含む。各仮想計算機30毎に一つのCPU仮想化データ310が格納される。CPU仮想化データ310は、Lv1 VMCSポインタ320、論理VMXモードフラグ330、論理TPR340及びLv0 VMCS400を含む。
Lv1 VMCSポインタ320は、仮想計算機30のLv1 VMCS500が配置されたメモリ90上のアドレスを格納する。メモリ90のアドレスとは、メモリ90を一意に識別するアドレス体系(物理計算機のアドレス空間)におけるアドレス値である。
論理VMXモードフラグ330は、仮想計算機30におけるVMXモードフラグであり、VMXモードフラグ110と同一のものである。論理VMXモードフラグ330によって、仮想計算機30に割り当てられた仮想的なCPUの動作モードが「VMX rootモード」又は「VMX non−rootモード」のいずれであるかを示す値を格納する。
論理TPR340は、仮想計算機30のTPRである。
Lv0 VMCS400は、各仮想計算機30の状態、ハイパバイザ20の状態及びCPU70を制御するための情報を格納する。Lv0 VMCS400は、ゲスト状態エリア410、ホスト状態エリア420、シャドウイング設定430、インタセプト設定440及びExit情報エリア450を含む。
ゲスト状態エリア410は、仮想計算機30に割り当てられた仮想的なCPU(図示省略)の状態を格納する。すなわち、仮想計算機30に割り当てられた仮想的なCPUが保持する特権レジスタCR0及びCR4等のレジスタ状態などのステータスが格納される。
例えば、VM entry時にCPU70がゲスト状態エリア410の内容を特権レジスタ140に書き込むことによって、仮想計算機30等の実行が可能となる。また、VM VM exit時には、CPU70が保持する特権レジスタ140の値をゲスト状態エリア410に格納することによって、仮想計算機30を再度実行する時に必要となる情報を保持することが可能となる。
なお、ゲスト状態エリア410の詳細については、図5Aを用いて後述する。
ホスト状態エリア420は、ハイパバイザ20が動作するためのCPU70のレジスタ状態などのステータスを格納する。例えば、VM exit時にCPU70がホスト状態エリア420の内容を特権レジスタ140等に書き込むことによって、ハイパバイザ20の実行が可能となる。また、VM entry時には、CPU70が保持する特権レジスタ140等の値をホスト状態エリア420に格納することによって、ハイパバイザ20を再度実行する時に必要となる情報を保持することが可能となる。
シャドウイング設定430は、シャドウイング機能を制御するための情報を格納する。具体的には、特権レジスタ140の操作時にシャドウイング機能を有効化するか否かを示す情報と、シャドウイング機能が有効化された場合に読み出されるシャドウデータに関する情報とが格納される。シャドウイング設定430の詳細については、図6Aを用いて後述する。
インタセプト設定440は、VM exitが発生する条件を格納する。例えば、特定の特権レジスタを操作する場合等にVM exitが発生するか否かを示す情報が格納される。インタセプト設定440の詳細については、図7Aを用いて後述する。
Exit情報エリア450は、VM exitの原因に関する詳細情報を格納する。
仮想計算機30は、Lv1 VMM40、Lv2 ゲストOS50及びAP60を含む。
Lv1 VMM40は、複数のLv2 ゲストOS50を制御する。Lv1 VMM40は、仮想計算機30上でVT−xを実現するためのLv1 VMCS500を含む。Lv1 VMCS500は、Lv0 VMCS400と同一のデータ構造であり、ゲスト状態エリア510、ホスト状態エリア520、シャドウイング設定530、インタセプト設定540及びExit情報エリア550を含む。
ゲスト状態エリア510はゲスト状態エリア410と、ホスト状態エリア520はホスト状態エリア420と、シャドウイング設定530はシャドウイング設定430と、インタセプト設定540はインタセプト設定440と、Exit情報エリア550はExit情報エリア450と対応するため説明を省略する。
Lv2 ゲストOS50は、Lv1 VMM40上で稼働するOS(Operating System)である。また、AP60は、Lv2 ゲストOS50上で稼働するアプリケーションである。Lv2 ゲストOS50及びAP60は、複数あってもよい。
図3は、本発明の第1の実施形態のメモリ90の記憶領域内部の一例を説明する図である。
ハイパバイザ20は、メモリ90の割り当てを管理しており、メモリ90上に当該ハイパバイザ20自身を配置する領域と仮想計算機30が使用する領域とを割り当てる。例えば、図3に示すように、ハイパバイザ20は、ハイパバイザ20自身にアドレスAD0〜AD1を、仮想計算機30−1にアドレスAD1〜AD2を、仮想計算機30−nにアドレスAD3〜AD4を割り当てる。
ハイパバイザ20自身に割り当てられたアドレス領域には、エミュレータ200、仮想化データ300、及びレジスタ調停方針表220が割り当てられる。
仮想計算機30に割り当てられたアドレス領域には、Lv1 VMM40及びLv2 ゲストOS50が割り当てられる。なお、仮想計算機30は、ハイパバイザ20によって割り当てられたアドレス領域を仮想計算機30が備えるメモリのアドレス領域として認識する。
図4は、本発明の第1の実施形態のレジスタ調停方針表220の一例を示す説明図である。
レジスタ調停方針表220は、仮想計算機30が特権レジスタ140を操作する場合の対処方法が定義されており、レジスタ名605、調停方針610及びハイパバイザ固有値615を含む。
レジスタ名605は、特権レジスタ140又は特権レジスタ140のフラグの名称を格納する。
調停方針610は、レジスタ名605に対応するレジスタに対する対処方法を格納する。格納される対処方法としては、「スルー」、「インタセプト」及び「シャドウイング」の3つがある。
「スルー」は、仮想計算機30に特権レジスタ140を直接操作させる。「インタセプト」は、仮想計算機30が特権レジスタ140を操作する場合に、ハイパバイザ20によってエミュレーションが行われる。「シャドウイング」は、仮想計算機30が特権レジスタ140を操作する場合に、CPU70が備えるシャドウイング機能130が用いられる。これによって、ハイパバイザ20が実行されることなく、メモリ90上のデータを応答及び更新できる。
ハイパバイザ固有値615には、調停方針610が「インタセプト」又は「シャドウイング」であるレジスタ(フラグ)に対して、ハイパバイザ20が保持すべき値が格納される。なお、ハイパバイザ固有値615は、Lv0 VMCS400のゲスト状態エリア410に設定される値である。
ここで、VMXモード時における特権レジスタ140の設定について説明する。
VMXモードでは、CPU70の動作を制限するため、特権レジスタCR0及びCR4の特定のフラグは特定の値に固定されている。具体的には、CR0.PE、CR0.NE、CR0.PG及びCR4.VMXEは「1」に固定される。なお、これらの特定のフラグに未対応の値が設定された場合には、VMXON命令は失敗する。
なお、TPRについては、特定の値に固定される必要はないが、ハイパバイザ20(又はLv1 VMM40)が割り込みを検知できない可能性があるため、「0」を固定していることが望ましい。
なお、レジスタ調停方針表220は、図4に示すようなテーブルとして格納されていなくともよく、特権レジスタ140、調停方針610及びハイパバイザ固有値615の対応関係がわかるならばどのような形で格納されていてもよい。
図5Aは、本発明の第1の実施形態のLv0 VMCS400のゲスト状態エリア410の一例を示す説明図である。図5Bは、本発明の第1の実施形態のLv1 VMCS500のゲスト状態エリア510の一例を示す説明図である。
ゲスト状態エリア410は、仮想計算機30の命令を実行する時に必要となる特権レジスタ140の値を格納する。ゲスト状態エリア410は、フラグ名620及びゲスト動作時のレジスタの保持値625を含む。
フラグ名620は、特権レジスタ140の各フラグに対応するレジスタの名称を格納する。ゲスト動作時のレジスタの保持値625は、仮想計算機30が動作する場合にCPU70に設定される値を格納する。
ゲスト状態エリア510は、Lv2 ゲストOS50の命令を実行する時に必要となる特権レジスタ140の値を格納する。ゲスト状態エリア510は、フラグ名630及びゲスト動作時のレジスタの保持値635を含む。フラグ名630はフラグ名620と同一のものであり、ゲスト動作時のレジスタの保持値635はゲスト動作時のレジスタの保持値625と同一のものである。
なお、ゲスト状態エリア410とゲスト状態エリア510とに格納される値は、同一である必要はない。
図6Aは、本発明の第1の実施形態のLv0 VMCS400のシャドウイング設定430の一例を示す説明図である。図6Bは、本発明の第1の実施形態のLv1 VMCS500のシャドウイング設定530の一例を示す説明図である。
シャドウイング設定430は、仮想計算機30が特権レジスタ140を操作する場合におけるシャドウイング機能の設定を格納する。シャドウイング設定430は、シャドウイング機能設定テーブル4301と、シャドウデータ設定テーブル4302、4303とを含む。
シャドウイング機能設定テーブル4301は、シャドウイング機能を有効化するか否かを設定するためのテーブルであり、シャドウイング対象名640及びシャドウイング有効化フラグ645を含む。
シャドウイング対象名640は、特権レジスタ140又は特権レジスタ140の各フラグに対応するレジスタの名称を格納する。具体的には、CR0及びCR4については、各フラグごとのレジスタの名称が格納され、TPRについては、TPR自身の名称が格納される。
シャドウイング有効化フラグ645は、シャドウイング対象名640に対応するレジスタに対して、シャドウイング機能を有効化するか否かを示す情報を格納する。具体的には、シャドウイング有効化フラグ645に「1」が格納されている場合、シャドウイング機能が有効化され、シャドウイング有効化フラグ645に「0」が格納されている場合、シャドウイング機能が無効化される。
シャドウデータ設定テーブル4302は、特権レジスタ140のうち、CR0及びCR4に対してシャドウイング機能が有効化された場合に読み出されるシャドウデータを格納する。
ここで、シャドウデータとは、仮想計算機30が特権レジスタ140を操作する場合に、特権レジスタ140に格納される値の代わりに、読み出し又は書き込みがされるデータである。なお、シャドウデータはメモリ90に格納される。
シャドウデータ設定テーブル4302は、シャドウデータ名650と、シャドウデータ655とを含む。
シャドウデータ名650は、シャドウイング機能が利用されるCR0及びCR4の各フラグに対応するシャドウデータの名称である。
シャドウデータ655は、シャドウイング有効化フラグ645が有効である場合に読み出されるシャドウデータを格納する。
例えば、CR0が読み出される場合には、まず、シャドウイング有効化フラグ645が確認され、シャドウイング機能が有効化されているフラグについては、当該フラグに対応するシャドウデータ655が読み出され、シャドウイング機能が無効化されているフラグについては、CR0から当該フラグに対応する値がそのまま読み出され、これらの読み出された値がマージされて一つのCR0として読み出される。
シャドウデータ設定テーブル4303は、特権レジスタ140のうち、TPRに対してシャドウイング機能が有効化された場合に読み出されるシャドウデータを格納する。シャドウデータ設定テーブル4303は、シャドウデータ名660及びシャドウデータアドレス665を含む。
シャドウデータ名660は、シャドウイング機能が有効化されたTPRに対応するシャドウデータの名称である。
シャドウデータアドレス665は、シャドウイング有効化フラグ645が有効である場合に読み出されるデータが格納されるポインタ(メモリ90のアドレス)を格納する。
例えば、TPRに対してシャドウイング機能が有効化されている場合には、シャドウデータアドレス665に格納されるメモリ90のアドレスにアクセスすることによって、当該アドレスに格納されたシャドウデータが読み出される。
以下、特権レジスタ140に対するゲストの処理について説明する。ここで、ゲストとは、例えば、ハイパバイザ20からみたLv1 VMM40、又は、Lv1 VMM40からみたLv2 ゲストOS50若しくはAP60等のことを示す。
シャドウイング有効化フラグ645が「0」の場合における読み出し処理については、ゲストは特権レジスタ140そのものを読み出す。また、シャドウイング有効化フラグ645が「0」の場合における書き込み処理については、ゲストは特権レジスタ140に対して直接書き込みを実行する。
シャドウイング有効化フラグ645が「1」の場合における読み出し処理については、対応するフラグのシャドウデータ655が読み出される。また、シャドウイング有効化フラグ645が「1」の場合における書き込み処理については、ゲストがシャドウデータ655と異なる値を書き込む命令を発効した場合には、VM exitが発生する。
シャドウイング設定530は、Lv2 ゲストOS50又はAP60が特権レジスタ140を操作する場合におけるシャドウイング機能の設定を格納する。シャドウイング設定530は、シャドウイング機能設定テーブル5301と、シャドウイング機能が有効化された場合に読み出されるシャドウデータ設定テーブル5302、5303とを含む。
シャドウイング機能設定テーブル5301と、シャドウデータ設定テーブル5302、5303とは、それぞれ、シャドウイング機能設定テーブル4301と、シャドウデータ設定テーブル4302、4303とに対応する。なお、シャドウデータアドレス665には、仮想計算機30のメモリアドレスが格納される。仮想計算機30のメモリアドレスは、当該仮想計算機30に割り当てられたメモリ(図3参照)を一意に識別するアドレス体系(仮想計算機のアドレス空間)におけるアドレス値である。
なお、シャドウイング設定430とシャドウイング設定530とに格納されるデータは同一でなくてもよい。
図7Aは、本発明の第1の実施形態のLv0 VMCS400のインタセプト設定440の一例を示す説明図である。図7Bは、本発明の第1の実施形態のLv1 VMCS500のインタセプト設定540の一例を示す説明図である。
インタセプト設定440は、仮想計算機30の各動作に対してハイパバイザ20が呼び出されるVM exitの発生要因を規定する。インタセプト設定440は、インタセプト対象名700及びインタセプト有効化フラグ705を含む。
インタセプト対象名700は、VM exitが発生する要因となる命令の名称を格納する。
インタセプト有効化フラグ705は、VM exitが発生するか否かを示す値を格納する。具体的には、インタセプト有効化フラグ705に格納される値が「0」である場合にはVM exitは発生せず、「1」である場合にはVM exitが発生する。
なお、CR8は、TPRのエイリアスである。TPRの参照時(読み出し時)にVM exitが発生するか否かは、インタセプト対象名700が「CR8−store exiting」のエントリに対して設定され、TPRの更新時(書き込み)にVM exitが発生するか否かは、インタセプト対象名700が「CR8−load exiting」のエントリに対して設定される。
インタセプト設定540は、Lv2 ゲストOS50又はAP60の各動作に対してLv1 VMM40が呼び出される論理VM exitの発生要因を規定する。インタセプト設定540は、インタセプト対象名710及びインタセプト有効化フラグ715を含む。
インタセプト対象名710は、インタセプト対象名700と同一のものである。また、インタセプト有効化フラグ715は、インタセプト有効化フラグ705と同一のものである。
なお、インタセプト設定440とインタセプト設定540とに格納されるデータは同一でなくてもよい。
ここで、VMX non−rootモード時における特権レジスタ140の操作について説明する。なお、以下の説明では、仮想計算機30が特権レジスタ140を操作する場合について説明する。
CR0又はCR4に対する読み出し操作については、シャドウイング有効化フラグ645が「1」のフラグは、当該フラグに対応するシャドウデータが読み出される。シャドウイング有効化フラグ645が「0」のフラグについては、CR0又はCR4の当該フラグがそのまま読み出される。CR0又はCR4の全てのフラグについて、シャドウイング有効化フラグ645が「0」である場合には、CR0又はCR4がそのまま読み出されることになる。
TPRに対する読み出し操作については、インタセプト設定440の「CR8−store exiting」が「0」で、シャドウイング機能設定テーブル4301の「UseTprShadow」が「0」である場合、TPRがそのまま読み出される。
また、インタセプト設定440の「CR8−store exiting」が「0」で、シャドウイング機能設定テーブル4301の「UseTprShadow」が「1」である場合、シャドウデータ設定テーブル4303の「Virtual Apic Page」のシャドウデータアドレス665に格納されるアドレスが読み出される。
また、インタセプト設定440の「CR8−store exiting」が「1」である場合には、シャドウイング機能設定テーブル4301の「UseTprShadow」の値にかかわらず、VM exitが発生する。
CR0に対する書き込み操作については、VM exitが発生しない場合、シャドウイング有効化フラグ645が「1」、すなわち、シャドウイング機能が有効化されたCR0のフラグに対する書き込みは実行されない。
その他のフラグに対する書き込みについては、Lv0 VMCS400のVM executionエリア(図示省略)の「unrestricted guest」の設定に依存する。具体的には、以下の通りである。
「unrestricted guest」が「0」である場合、VMXモードにおいて対応していない値をCR0内のいずれかのフラグに設定しようとしたならば、「genaral−protection exception」が発生する。
「unrestricted guest」が「1」である場合、CR0の0ビット目(PE)又は31ビット目(PG)以外のCR0内のいずれかのフラグにVMXモードにおいて対応していない値を設定しようとしたならば、「genaral−protection exception」が発生する。しかし、CR0.PE=0及びCR0.PG=1、又は、CR0.PG=1、CR4.PAE=0及びIA32_EFER.LME=0となるならば、書き込みの実行に対しては、「genaral−protection exception」が発生した状態を保ち続ける。
CR4に対する書き込み操作については、VM exitが発生しない場合、シャドウイング有効化フラグ645が「1」、すなわち、シャドウイング機能が有効化されたCR4のフラグに対する書き込みは実行されない。VMXモードにおいて対応していない値をCR4内のいずれかのフラグにセットしようとしたならば、「genaral−protection exception」が発生する。
TPRに対する書き込み操作については、インタセプト設定440の「CR8−load exiting」が「0」で、シャドウイング機能設定テーブル4301の「UseTprShadow」が「0」である場合、TPRに対して通常の書き込みが実行される。インタセプト設定440の「CR8−load exiting」が「0」で、シャドウイング機能設定テーブル4301の「UseTprShadow」が「1」である場合、シャドウデータアドレス665に対して書き込みが実行される。インタセプト設定440の「CR8−load exiting」が「1」である場合には、シャドウイング機能設定テーブル4301の「UseTprShadow」の値にかかわらず、VM exitが発生する。
以下、レジスタの操作に伴うCPU70が実行する処理の一例について説明する。
図8は、本発明の第1の実施形態のハイパバイザ20が実行する処理を説明するフローチャートである。
ハイパバイザ20は、初期化処理を実行する(S1200)。例えば、ハイパバイザ20は、作成される仮想計算機30の仕様にあわせて仮想化データ300を設定し、仮想計算機30の初期状態を生成する。
ハイパバイザ20は、CPU70の動作モードをVMX non−rootモードに移行させるためのVM entry命令(VMLAUNCH命令)を発行し、ゲスト(仮想計算機30、Lv2 ゲストOS50又はAP60)の命令を実行する(S1280)。
CPU70は、VM exitが発生するまで、すなわち、インタセプト設定440、540に設定したイベント(命令)が発生するまで、ゲスト命令を実行する(S1290)。ここで、ゲスト命令は、Lv2ゲストOS50又はAP60が実行する命令を示す。S1290における処理の詳細については、図14を用いて後述する。
VM exitの発生によって、処理を再開したハイパバイザ20は、VM exitが発生した理由を解析し、以下の判定を実行する。
ハイパバイザ20は、VM exit発生理由がLv1 VMM40へのVM exit(論理VM exit)命令の実行によるものであるか否かを判定する(S1210)。すなわち、Lv1 VMM40が処理を実行しているか否かを判定する。
当該判定は、ハイパバイザ20が、Lv0 VMCS400のExit情報エリア450に格納されたexit理由と、Lv1 VMCS500のインタセプト設定540とを参照し、Lv1 VMM40が規定したVM exitの条件を満たしているか否かを判定することによって行う。Lv1 VMM40が規定したVM exitの条件を満たしていると判定された場合、VM exit発生理由がLv1 VMM40へのVM exit(論理VM exit)命令の実行によるものであると判定される。
VM exit発生理由がLv1 VMM40へのVM exit(論理VM exit)命令の実行によるものであると判定された場合、ハイパバイザ20は、Lv1 VMM40の実行を準備するための論理VM exit処理を実行する(S1220)。論理VM exit処理の詳細については、図9を用いて後述する。
VM exit発生理由がLv1 VMM40へのVM exit(論理VM exit)命令の実行によるものでないと判定された場合、ハイパバイザ20は、VM exit発生理由がCR0又はCR4の更新によるものであるか否かを判定する(S1230)。判定方法は、S1210と同様の方法が用いられる。
VM exit発生理由がCR0又はCR4の更新によるものであると判定された場合、ハイパバイザ20は、仮想計算機30におけるCR0又はCR4の更新処理を実行する(S1240)。仮想計算機30におけるCR0又はCR4の更新処理の詳細については、図13を用いて後述する。
VM exit発生理由がCR0又はCR4の更新によるものでないと判定された場合、ハイパバイザ20は、VM exit発生理由がLv1 VMM40のVM entry(論理VM entry)命令の実行によるものであるか否かを判定する(S1250)。当該判定では、Lv1 VMM40が動作中で、かつ、VM exit発生理由がVM entryであるか否かが判定される。いずれの条件とも満たす場合、VM exit発生理由がLv1 VMM40のVM entry(論理VM entry)命令の実行によるものであると判定される。
VM exit発生理由がLv1 VMM40のVM entry(論理VM entry)命令の実行によるものであると判定された場合、ハイパバイザ20は、Lv2 ゲストOS50の実行を準備するため論理VM entry処理を実行する(S1260)。論理VM entry処理の詳細については、図10を用いて後述する。
VM exit発生理由がLv1 VMM40のVM entry(論理VM entry)命令の実行によるものでないと判定された場合、ハイパバイザ20は、当該VM exit発生理由に応じたエミュレーションを実行する(S1270)。
その後、ハイパバイザ20は、S1280に戻り、同様の処理を実行する。
図9は、本発明の第1の実施形態における論理VM exit処理の詳細を説明するフローチャートである。なお、図9はS1220における処理の詳細を説明するものである。
論理VM exit処理は、仮想計算機30において、Lv2 ゲストOS50が動作する「VMX non−rootモード」からLv1 VMM40が動作する「VMX rootモード」への動作モードの移行である論理VM exitを実現するための処理である。
ハイパバイザ20は、Lv0 VMCS400のゲスト状態エリア410をGuestCr以外について読み出し、読み出されたLv0 VMCS400のゲスト状態エリア410を、Lv1 VMCS500のゲスト状態エリア510に反映させる(S1300)。
具体的には、Lv0 VMCS400のゲスト状態エリア410をLv1 VMCS500のゲスト状態エリア510にコピーする。
次に、S1310〜S1355において、Lv1 VMCS500のゲスト状態エリア510のCR0及びCR4を更新する処理が実行される。この処理は以下のような理由によって実行される。
Lv1 VMCS500のゲスト状態エリア510には、仮想計算機30が保持する特権レジスタの値が格納される必要がある。Lv1 VMM40におけるシャドウイング機能が無効の場合、仮想計算機30のCR0及びCR4が、Lv2ゲストOS50の動作によって変化する可能性がある。そのため、仮想計算機30が本来保持すべき特権レジスタの値を特定し、特定された特権レジスタの値をLv1 VMCS500のゲスト状態エリア510に反映する必要がある。したがって、以下で説明する処理(S1310〜S1355)が実行される。
ハイパバイザ20は、Lv1 VMCS500のシャドウイング設定530のシャドウイング機能設定テーブル5301を参照して、CR0又はCR4の各フラグから処理対象となるフラグを選択して、選択されたフラグに対して処理を繰り返し実行する(S1310)。
ハイパバイザ20は、選択されたフラグのシャドウイング有効化フラグ675が「1」であるか否かを判定する(S1320)。すなわち、選択されたフラグに対してシャドウイング機能が有効化されているか否かが判定される。
CR0又はCR4に対してLv1 VMM40においてシャドウイング機能が有効となっている場合、Lv2 ゲストOS50がゲスト状態エリア510の特権レジスタCR0又はCR4を更新(書き込み)しようとすると論理VM exitが発生する。したがって、Lv2 ゲストOS50が実行されているときにゲスト状態エリア510の特権レジスタCR0又はCR4が更新されない。
選択されたエントリのシャドウイング有効化フラグが「1」であると判定された場合、ハイパバイザ20は、シャドウイング機能設定テーブル5301を参照して、次の処理対象を選択し、S1320の処理を実行する。シャドウイング機能設定テーブル5301の全てのフラグについて処理が終了した場合(S1355)、ハイパバイザ20はS1360に進む。
選択されたフラグのシャドウイング有効化フラグが「0」であると判定された場合、ハイパバイザ20は、レジスタ調停方針表220を参照し、選択されたフラグの調停方針610が「シャドウイング」であるか否かを判定する(S1330)。
選択されたフラグの調停方針610が「シャドウイング」でないと判定された場合、ハイパバイザ20は、Lv0 VMCS400のゲスト状態エリア410を参照して、選択されたフラグのゲスト動作時のレジスタの保持値625を読み出し、読み出されたゲスト動作時のレジスタの保持値625に基づいて、Lv1 VMCS500のゲスト状態エリア510の当該フラグの値を更新する(S1340)。
これは、Lv2 ゲストOS50が動作時に、CR0又はCR4に対する更新が、特権レジスタ140が格納されるゲスト状態エリア410に直接反映されるためである。
選択されたフラグの調停方針610が「シャドウイング」であると判定された場合、ハイパバイザ20は、シャドウイング設定430を参照して、選択されたフラグのシャドウデータ655を読み出し、読み出されたシャドウデータ655に基づいて、Lv1 VMCS500のゲスト状態エリア510の当該フラグの値を更新する(S1350)。
これは、Lv2 ゲストOS50が動作時に、CR0又はCR4に対する更新が、シャドウデータが格納されるLv0 VMCS400のシャドウイング設定430に反映されるためである。
S1340又はS1350の後、ハイパバイザ20は、シャドウイング機能設定テーブル5301を参照して、次の処理対象を選択し、S1320の処理を実行する。シャドウイング機能設定テーブル5301の全てのフラグについて処理が終了した場合(S1355)、ハイパバイザ20はS1360に進む。
次に、ハイパバイザ20は、Lv0 VMCS400のExit情報エリア450を読み出し、読み出されたExit情報エリアに基づいて、Lv1 VMCS500のExit情報エリア550を更新する(S1360)。当該処理によって、CPU70が受け取ったVM exitの発生要因がLv1 VMCS500に反映される。
ハイパバイザ20は、Lv1 VMCS500のホスト状態エリア520を読み出し、読み出されたホスト状態エリア520に基づいて、Lv0 VMCS400のゲスト状態エリア410を更新する(S1370)。当該処理によって、Lv1 VMM40が動作するための設定を、CPU70が読み出すことが可能となる。
ハイパバイザ20は、論理VMXモードフラグ330をVMX rootに変更し(S1380)、処理を終了する。以上の処理によって、Lv1 VMM40の動作に必要な準備が完了する。
図10は、本発明の第1の実施形態における論理VM entry処理の詳細を説明するフローチャートである。なお、図10は、図8のS1260における処理の詳細を説明するものである。
ハイパバイザ20は、Lv1 VMCS500のインタセプト設定540を読み出し、読み出されたLv1 VMCS500のインタセプト設定540に基づいて、Lv0 VMCS400のインタセプト設定440を更新する(S1400)。
具体的には、Lv1 VMCS500のインタセプト設定540に設定されたインタセプト条件が含まれるようにLv0 VMCS400のインタセプト設定440が更新される。すなわち、インタセプト設定540に設定されたインタセプト条件が満たされた場合には、Lv2 ゲストOS50の実行を中断してハイパバイザ20が読み出されるように、Lv0 VMCS400のインタセプト設定440が更新される。
ハイパバイザ20は、Lv1 VMCS500のゲスト状態エリア510を読み出し、読み出されたゲスト状態エリア510に基づいて、Lv0 VMCS400のゲスト状態エリア410を更新する(S1410)。すなわち、ハイパバイザ20は、Lv2 ゲストOS50の設定をCPU70に読み出させるために、Lv1 VMCS500のゲスト状態エリア510の設定をLv0 VMCS400のゲスト状態エリア410に反映させる。
ハイパバイザ20は、Lv1 VMCS500のシャドウイング設定530を読み出し、読み出されたシャドウイング設定530に基づいて、Lv0 VMCS400のシャドウイング設定430を更新する(S1420、S1430)。
シャドウイング設定430のCR0及びCR4に対する更新処理(S1420)については、図11を用いて後述する。また、シャドウイング設定430のTPRに対する更新処理(S1430)については、図12を用いて後述する。
ハイパバイザ20は、論理VMXモードフラグ330をVMX non−rootに変更し(S1440)、処理を終了する。以上の処理によって、Lv2 ゲストOS50の動作に必要な準備が完了する。
図11は、本発明の第1の実施形態のハイパバイザ20が実行するにおけるCR0又はCR4に対する更新処理を説明するフローチャートである。
ハイパバイザ20は、Lv1 VMCS500のゲスト状態エリア510におけるCR0又はCR4の各フラグから処理対象となるフラグを選択し、選択されたフラグに対して以下で説明する処理を実行する(S1000)。
ハイパバイザ20は、Lv1 VMCS500のシャドウイング設定530を参照し、選択されたフラグのシャドウイング機能が有効であるか否かを判定する(S1005)。すなわち、Lv1 VMM40が選択されたフラグに対してシャドウイング機能を利用するか否かが判定される。
具体的には、ハイパバイザ20は、シャドウイング機能設定テーブル5301を参照して、選択されたフラグのシャドウイング有効化フラグ675が「1」であるか否かを判定する。
選択されたフラグのシャドウイング機能が有効でないと判定された場合、ハイパバイザ20は、レジスタ調停方針表220を参照して、選択されたフラグの調停方針610が「シャドウイング」であるか否かを判定する(S1010)。すなわち、ハイパバイザ20が、選択されたフラグに対してシャドウイング機能を有効化しているか否かが判定される。
選択されたフラグの調停方針610が「シャドウイング」でないと判定された場合、ハイパバイザ20は、Lv0 VMCS400のシャドウイング設定430を参照し、選択されたフラグのシャドウイング機能を無効にする(S1015)。
具体的には、ハイパバイザ20は、シャドウイング機能設定テーブル5301を参照し、選択されたフラグのシャドウイング有効化フラグ645を「0」に設定する。
次に、ハイパバイザ20は、Lv1 VMCS500のゲスト状態エリア510から選択されたフラグの値を読み出し、読み出された値に基づいて、Lv0 VMCS400のゲスト状態エリア410を更新し(S1020)、S1080に進む。
S1010において、選択されたフラグの調停方針610が「シャドウイング」であると判定された場合、ハイパバイザ20は、Lv1 VMCS500のゲスト状態エリア510を読み出し、読み出されたゲスト状態エリア510に基づいて、Lv0 VMCS400のシャドウイング設定430を更新する(S1025)。
具体的には、ハイパバイザ20は、Lv1 VMCS500のゲスト状態エリア510から、選択されたフラグのゲスト動作時のレジスタの保持値635を読み出し、読み出された値をシャドウデータ設定テーブル4302のシャドウデータ655に設定する。
次に、ハイパバイザ20は、Lv0 VMCS400のシャドウイング設定430に対して、選択されたエントリに対応する制御ビットのシャドウイング機能を有効にする(S1030)。
具体的には、ハイパバイザ20は、シャドウイング機能設定テーブル4301を参照して、選択されたエントリに対応する制御ビットのシャドウイング有効化フラグ645を「1」に設定する。
さらに、ハイパバイザ20は、レジスタ調停方針表220から、選択されたフラグのハイパバイザ固有値615を読み出し、読み出されたハイパバイザ固有値615に基づいて、Lv0 VMCS400のゲスト状態エリアを更新し(S1035)、S1080に進む。
具体的には、ハイパバイザ20は、選択されたフラグのゲスト動作時のレジスタの保持値625に、読み出されたハイパバイザ固有値615を設定する。
S1005において、選択されたフラグのシャドウイング機能が有効であると判定された場合、ハイパバイザ20は、Lv1 VMCS500のシャドウイング設定530から、選択されたフラグに対応するシャドウデータ685を読み出す(S1040)。
次に、ハイパバイザ20は、読み出されシャドウデータ685に基づいて、Lv0 VMCS400のシャドウイング設定430を更新する(S1045)。具体的には、ハイパバイザ20は、選択されたフラグのシャドウデータ655に、読み出されたシャドウデータを設定する。
次に、ハイパバイザ20は、Lv0 VMCS400のシャドウイング設定430に対して、選択されたフラグのシャドウイング機能を有効にする(S1050)。
具体的には、ハイパバイザ20は、シャドウイング機能設定テーブル4301を参照して、選択されたフラグのシャドウイング有効化フラグ645を「1」に設定する。
次に、ハイパバイザ20は、レジスタ調停方針表220を参照して、S1050においてシャドウイング機能が有効化されたフラグの調停方針610が「シャドウイング」であるか否かを判定する(S1060)。すなわち、ハイパバイザ20がシャドウイング機能を利用して、ハイパバイザ固有値620を物理計算機10のCR0及びCR4に反映させる。
選択されたフラグの調停方針610が「シャドウイング」でないと判定された場合、ハイパバイザ20は、Lv1 VMCS500のゲスト状態エリア510から、選択されたフラグのゲスト動作時のレジスタの保持値635を読み出し、読み出されたゲスト動作時のレジスタの保持値635に基づいて、Lv0 VMCS400のゲスト状態エリア410を更新し(S1065)、S1080に進む。
具体的には、ハイパバイザ20は、選択されたフラグのゲスト動作時のレジスタの保持値625に、読み出されたゲスト動作時のレジスタの保持値635を設定する。
S1065の処理によって、Lv2 ゲストOS50の動作時のLv1 VMCS500のゲスト状態エリア510の設定をLv0 VMCS400のゲスト状態エリア410に反映することができる。
選択されたフラグの調停方針610が「シャドウイング」であると判定された場合、ハイパバイザ20は、レジスタ調停方針表220から、選択されたフラグのハイパバイザ固有値615を読み出し、読み出されたハイパバイザ固有値615に基づいて、Lv0 VMCS400のゲスト状態エリア410を更新し(S1070)、S1080に進む。
具体的には、ハイパバイザ20は、選択されたフラグのゲスト動作時のレジスタの保持値625に、読み出されたハイパバイザ固有値615を設定する。
S1080では、ハイパバイザ20は、全てのフラグについて処理が終了したか否かを判定し、全てのフラグについて処理が完了していない場合には、次のフラグが選択され、S1005〜S1070の処理が実行される。全てのフラグについて処理が完了したと判定された場合には、処理を終了する。
図12は、本発明の第1の実施形態のハイパバイザ20が実行するTPRに対する更新処理を説明するフローチャートである。以下では、レジスタ調停方針表220においてTPRに対する調停方針610が「シャドウイング」である場合について説明する。すなわち、TPRの操作時には、必ずシャドウイング機能が利用される。
ハイパバイザ20は、Lv1 VMCS500のインタセプト設定540からインタセプト対象名710が「CR8−load exiting」であるエントリのインタセプト有効化フラグ715を読み出し、読み出されたインタセプト有効化フラグ715に基づいて、Lv0 VMCS400のインタセプト設定440を更新する(S1100)。
具体的には、ハイパバイザ20は、インタセプト対象名700が「CR8−load exiting」であるエントリのインタセプト有効化フラグ705に、読み出されたインタセプト有効化フラグ715を設定する。
ハイパバイザ20は、Lv1 VMCS500のインタセプト設定540からインタセプト対象名710が「CR8−store exiting」であるエントリのインタセプト有効化フラグ715を読み出し、読み出されたインタセプト有効化フラグ715に基づいて、Lv0 VMCS400のインタセプト設定440を更新する(S1110)。
具体的には、ハイパバイザ20は、インタセプト対象名700が「CR8−store exiting」であるエントリのインタセプト有効化フラグ705に、読み出されたインタセプト有効化フラグ715を設定する。
ハイパバイザ20は、Lv1 VMCS500のシャドウイング設定530を参照し、Lv1 VMM40がTPRの操作時にシャドウイング機能が有効であるか否かを判定する(S1120)。
具体的には、ハイパバイザ20は、シャドウイング機能設定テーブル5301のシャドウイング対象名670が「UseTprShadow」であるエントリのシャドウイング有効化フラグ675が「1」であるか否かを判定する。シャドウイング有効化フラグ675が「1」である場合、Lv1 VMM40においてシャドウイング機能が有効であると判定される。
Lv1 VMM40がTPRの操作時にシャドウイング機能が有効でないと判定された場合、ハイパバイザ20は、Lv0 VMCS400のシャドウイング設定430のTPR操作に対するシャドウイング機能を有効化する(S1130)。
具体的には、ハイパバイザ20は、シャドウイング機能設定テーブル4301のシャドウイング対象名640が「UseTprShadow」であるエントリのシャドウイング有効化フラグ645の値を「1」に設定する。
次に、ハイパバイザ20は、論理TPR340を読み出し、読み出された論理TPR340に基づいて、Lv0 VMCS400のシャドウイング設定430を更新し(S1140)、処理を終了する。
具体的には、ハイパバイザ20は、シャドウデータ設定テーブル4303のシャドウデータ名660が「Virtual Apic Page」であるエントリのシャドウデータアドレス665に論理TPR340に格納されるメモリアドレスを設定する。
S1120において、Lv1 VMM40がTPRの操作時にシャドウイング機能が有効であると判定された場合、ハイパバイザ20は、Lv0 VMCS400のシャドウイング設定430のTPR操作に対するシャドウイング機能を有効化する(S1150)。なお、S1130と同一の処理が実行される。
次に、ハイパバイザ20は、Lv1 VMCS500のシャドウイング設定530のシャドウデータ設定テーブル5303からシャドウデータを読み出す(S1160)。
具体的には、ハイパバイザ20は、シャドウデータ設定テーブル5303のシャドウイング対象名690が「Virtual Apic Page」であるエントリのシャドウデータアドレス695に格納されるメモリアドレスを読み出す。
ハイパバイザ20は、読み出されたシャドウデータアドレス695をメモリ90におけるアドレスに変換する(S1170)。シャドウデータアドレス695に格納されるアドレスは、仮想計算機30が管理するメモリアドレスであるため、実際のメモリ90のアドレスと一致しないため、S1170における処理が実行される。
ハイパバイザ20は、Lv0 VMCS400のシャドウイング設定430のシャドウデータ設定テーブル4303に変換されたメモリアドレスを格納し(S1180)、処理を終了する。
具体的には、ハイパバイザ20は、シャドウデータ設定テーブル4303のシャドウデータ名660が「Virtual Apic Page」であるエントリのシャドウデータアドレス665にS1170において変換されたメモリアドレスを設定する。
以上の処理によって、Lv2 ゲストOS50がTPRを読み出そうとした場合に、シャドウデータアドレス665に設定されたメモリ90のアドレスに対応する値が読み出される。
なお、前述した図8〜図12までの処理は処理結果が同一になるならば、処理の手順を入れ替え又は置き換えることが可能である。
図13は、本発明の第1の実施形態の仮想計算機30におけるCR0又はCR4の更新処理を説明するフローチャートである。図13は、S1240における処理の詳細を説明するものである。
S1240の処理は、Lv2 ゲストOS50の動作時にCR0又はCR4が更新される場合にハイパバイザ20が実行する処理である。
ハイパバイザ20は、Lv1 VMCS500のゲスト状態エリア510におけるCR0又はCR4の各フラグから処理対象となるフラグを選択し、選択されたフラグに対して以下で説明する処理を実行する(S1500)。
ハイパバイザ20は、Lv0 VMCS400のシャドウイング設定430を参照し、選択されたフラグのシャドウイング機能が有効であるか否かを判定する(S1510)。
具体的には、ハイパバイザ20は、シャドウイング機能設定テーブル4301を参照し、選択されたエントリのシャドウイング有効化フラグ645が「1」であるか否かを判定する。
選択されたフラグのシャドウイング機能が有効でないと判定された場合、ハイパバイザ20は、Lv0 VMCS400のゲスト状態エリア410のCR0又はCR4を更新し(S1520)、S1540に進む。
具体的には、ハイパバイザ20は、Lv0 VMCS400のゲスト状態エリア410のCR0又はCR4のうち、選択されたフラグに対応する制御ビットにLv2 ゲストOS50が書き込みをした値を設定する。
当該処理は、シャドウイング機能が無効であるため、Lv2 ゲストOS50がCR0又はCR4を読み出す場合に、ゲスト状態エリア410のCR0又はCR4が直接読み出されるようにするためである。
選択されたエントリのシャドウイング機能が有効であると判定された場合、ハイパバイザ20は、Lv0 VMCS400のシャドウイング設定430を更新し(S1530)、S1540に進む。
具体的には、ハイパバイザ20は、シャドウデータ設定テーブル4302のシャドウデータ655のうち、選択されたフラグのシャドウデータ655にLv2 ゲストOS50が書き込みをした値を設定する。
当該処理は、シャドウイング機能が有効であるため、Lv2 ゲストOS50がCR0又はCR4を読み出す場合に、シャドウデータ655に格納される値が直接読み出されるようにするためである。
S1540では、ハイパバイザ20は、全てのフラグについて処理が終了したか否かを判定し、全てのフラグについて処理が完了していない場合には、次のフラグが選択され、S1510〜S1540の処理が実行される。全てのフラグについて処理が完了したと判定された場合には、処理を終了する。
図14は、本発明の第1の実施形態における、ゲスト命令実行時にCPU70が実行する処理を説明するフローチャートである。図14は、S1290における処理の詳細を説明するものである。
CPU70は、ゲスト命令を実行する(S1600)。実行されるゲスト命令の処理内容に応じて以下で説明する処理を実行する。
まず、CPU70は、実行されるゲスト命令の処理内容がTPRを参照する処理であるか否かを判定する(S1615)。
実行されるゲスト命令の処理内容がTPRを参照する処理であると判定された場合、CPU70は、TPRを参照する処理を実行し(S1620)、S1610に進む。
実行されるゲスト命令の処理内容がTPRを参照する処理でないと判定された場合、CPU70は、実行されるゲスト命令の処理内容がTPRを更新する処理であるか否かを判定する(S1625)。
実行されるゲスト命令の処理内容がTPRを更新する処理であると判定された場合、CPU70は、TPRを更新する処理を実行し(S1630)、S1610に進む。
実行されるゲスト命令の処理内容がTPRを更新する処理でないと判定された場合、CPU70は、実行されるゲスト命令の処理内容がCR0又はCR4を参照する処理であるか否かを判定する(S1635)。
実行されるゲスト命令の処理内容がCR0又はCR4を参照する処理であると判定された場合、CPU70は、CR0又はCR4を参照する処理を実行し(S1640)、S1610に進む。
実行されるゲスト命令の処理内容がCR0又はCR4を参照する処理でないと判定された場合、CPU70は、実行されるゲスト命令の処理内容がCR0又はCR4を更新する処理であるか否かを判定する(S1645)。
実行されるゲスト命令の処理内容がCR0又はCR4を更新する処理であると判定された場合、CPU70は、CR0又はCR4を更新する処理を実行し(S1650)、S1610に進む。
実行されるゲスト命令の処理内容がCR0又はCR4を更新する処理でないと判定された場合、CPU70は、実行されるゲスト命令の処理内容がVM entry命令であるか否かを判定する(S1655)。
実行されるゲスト命令の処理内容がVM entry命令であると判定された場合、CPU70は、ハイパバイザ20に対処を求めるために、ハイパバイザ20を呼び出すためのVMexitを発生させるべきと判定し(S1660)、S1610に進む。これは、VM entry命令の実行はハイパバイザ20にしか許されていないためである。
実行されるゲスト命令の処理内容がVM entryでないと判定された場合、CPU70は、VM exit判定処理を実行し(S1665)、S1610に進む。具体定期には、CPU70は、Lv0 VMCS400のインタセプト設定440を参照して、実行されるゲスト命令によってVM exitが発生するか否かを判定する。
次に、以上の処理の結果、CPU70は、VM exitが発生するイベントが実行されるか否かを判定する(S1610)。
VM exitが発生するイベントが実行されないと判定された場合、CPU70は、S1600に戻り、次にゲスト命令に対して同様の処理を実行する。
VM exitが発生するイベントが実行されたと判定された場合、CPU70は、VM exit命令を発行し(S1670)、処理を終了する。具体的には、VMXモードフラグ110をVMXrootに変更する。また、CPU70は、CPU70の状態をLv0 VMCS400のゲスト状態エリア410に保存し、Lv0 VMCS400のExit情報エリア450を更新し、Lv1 VMCS500のホスト状態エリア520を読み出して、ハイパバイザ20の実行を開始する。
図15は、本発明の第1の実施形態のS1620におけるTPR参照処理の詳細を説明するフローチャートである。
CPU70は、VMXモードフラグ110を参照して、Lv1 VMM40又はLv2 ゲストOS50が動作中であるか否かを判定する(S1700)。具体的には、VMXモードフラグ110が「VMX rootモード」である場合にはLv1 VMM40又はLv2 ゲストOS50が動作中でないと判定され、VMXモードフラグ110が「VMX non−rootモード」である場合にはLv1 VMM40又はLv2 ゲストOS50が動作中であると判定される。
Lv1 VMM40又はLv2 ゲストOS50が動作中でないと判定された場合、CPU70は、S1730に進む。
Lv1 VMM40又はLv2 ゲストOS50が動作中であると判定された場合、CPU70は、Lv0 VMCS400のインタセプト設定440を参照し、TPR参照処理に対してインタセプトが発生するか否かを判定する(S1710)。具体的には、CPU70は、インタセプト対象名700が「CR8−store Exiting」のインタセプト有効化フラグ705が「1」であるか否かを判定する。
TPR参照処理に対してインタセプトが発生すると判定された場合、CPU70は、VM exitが発生すると判定し(S1750)、処理を終了する。
TPR参照処理に対してインタセプトが発生しないと判定された場合、CPU70は、Lv0 VMCS400のシャドウイング設定430を参照して、TPR参照処理に対してシャドウイング機能が有効であるか否かを判定する(S1720)。具体的には、CPU70は、シャドウイング対象名640が「UseTprShadow」のシャドウイング有効化フラグ645が「1」であるか否かを判定する。
TPR参照処理に対してシャドウイング機能が有効であると判定された場合、CPU70は、Lv0 VMCS400のシャドウイング設定430を参照して、結果をLv1 VMM40又はLv2 ゲストOS50に応答し(S1740)、処理を終了する。
具体的には、CPU70は、シャドウデータ名660が「Virtual Apic Page」のシャドウデータアドレス665に格納されたアドレスを読み出し、読み出されたアドレスに対応するデータをメモリ90から読み出し、当該読み出されたデータをLv1 VMM40又はLv2 ゲストOS50に応答する。
Lv1 VMM40又はLv2 ゲストOS50が動作中でない、又は、TPR参照処理に対してシャドウイング機能が有効でないと判定された場合、CPU70は、特権レジスタ140に含まれるTPRに格納される値を読み出し、当該読み出された値をLv1 VMM40又はLv2 ゲストOS50に応答し(S1730)、処理を終了する。
図16は、本発明の第1の実施形態のS1630におけるTPR更新処理の詳細を説明するフローチャートである。
CPU70は、VMXモードフラグ110を参照して、Lv1 VMM40又はLv2 ゲストOS50が動作中であるか否かを判定する(S1800)。具体的には、VMXモードフラグ110が「VMX rootモード」である場合にはLv1 VMM40又はLv2 ゲストOS50が動作中でないと判定され、VMXモードフラグ110が「VMX non−rootモード」である場合にはLv1 VMM40又はLv2 ゲストOS50が動作中であると判定される。
Lv1 VMM40又はLv2 ゲストOS50が動作中でないと判定された場合、CPU70は、S1730に進む。
Lv1 VMM40又はLv2 ゲストOS50が動作中であると判定された場合、CPU70は、Lv0 VMCS400のインタセプト設定440を参照し、TPR更新処理に対してインタセプトが発生するか否かを判定する(S1810)。具体的には、CPU70は、インタセプト対象名700が「CR8−load Exiting」のインタセプト有効化フラグ705が「1」であるか否かを判定する。
TPR更新処理に対してインタセプトが発生すると判定された場合、CPU70は、VM exitが発生すると判定し(S1850)、処理を終了する。
TPR更新処理に対してインタセプトが発生しないと判定された場合、CPU70は、Lv0 VMCS400のシャドウイング設定430を参照して、TPR更新処理に対してシャドウイング機能が有効であるか否かを判定する(S1820)。具体的には、CPU70は、シャドウイング対象名640が「UseTprShadow」のシャドウイング有効化フラグ645が「1」であるか否かを判定する。
TPR更新処理に対してシャドウイング機能が有効であると判定された場合、CPU70は、Lv0 VMCS400のシャドウイング設定430を参照して、シャドウデータを更新し(S1840)、処理を終了する。
具体的には、CPU70は、シャドウデータ名660が「Virtual Apic Page」のシャドウデータアドレス665に格納されたアドレスを読み出し、読み出されたアドレスに対応するデータを更新する。
Lv1 VMM40又はLv2 ゲストOS50が動作中でない、又は、TPR更新処理に対してシャドウイング機能が有効でないと判定された場合、CPU70は、特権レジスタ140に含まれるTPRに格納される値を更新し(S1830)、処理を終了する。
図17は、本発明の第1の実施形態のS1640におけるCR0又はCR4参照処理の詳細を説明するフローチャートである。
CPU70は、Lv0 VMCS400のゲスト状態エリア410のCR0又はCR4の各フラグから処理対象を選択し、選択されたフラグに対して以下で説明する処理を実行する(S1900)。
CPU70は、VMXモードフラグ110を参照して、Lv1 VMM40又はLv2 ゲストOS50が動作中であるか否かを判定する(S1910)。具体的には、VMXモードフラグ110が「VMX rootモード」である場合にはLv1 VMM40又はLv2 ゲストOS50が動作中でないと判定され、VMXモードフラグ110が「VMX non−rootモード」である場合にはLv1 VMM40又はLv2 ゲストOS50が動作中であると判定される。
Lv1 VMM40又はLv2 ゲストOS50が動作中でないと判定された場合、CPU70は、S1930に進む。
Lv1 VMM40又はLv2 ゲストOS50が動作中であると判定された場合、CPU70は、Lv0 VMCS400のシャドウイング設定430を参照して、選択されたフラグに対してシャドウイング機能が有効であるか否かを判定する(S1920)。具体的には、CPU70は、選択されたフラグのシャドウイング有効化フラグ645が「1」であるか否かを判定する。
選択されたフラグに対してシャドウイング機能が有効であると判定された場合、CPU70は、選択されたフラグに対応する制御ビットのシャドウデータ655に格納される値を読み出し、当該読み出された値を一時領域に格納し(S1940)、S1950に進む。なお、一時領域は、例えば、パイプラインの中が考えられる。
Lv1 VMM40又はLv2 ゲストOS50が動作中でないと判定された場合、又は、選択されたフラグに対してシャドウイング機能が有効でないと判定された場合、CPU70は、特権レジスタ140に含まれるCR0又はCR4に格納された値を読み出し、当該読み出された結果を一時領域に格納し(S1930)、S1950に進む。
S1950では、CPU70は、全てのフラグについて処理が終了したか否かを判定し、全てのフラグについて処理が完了していない場合には、次のフラグを選択し、S1900〜S1950の処理が実行される。
全てのフラグについて処理が完了したと判定された場合、CPU70は、一時領域に格納された結果を各制御ビット毎にマージして、Lv1 VMM40又はLv2 ゲストOS50に応答し(S1960)、処理を終了する。
図18は、本発明の第1の実施形態のS1650におけるCR0又はCR4更新処理の詳細を説明するフローチャートである。
CPU70は、Lv0 VMCS400のゲスト状態エリア410のCR0又はCR4の各フラグから処理対象となるフラグを選択し、選択されたフラグに対して以下で説明する処理を実行する(S2000)。
CPU70は、VMXモードフラグ110を参照して、Lv1 VMM40又はLv2 ゲストOS50が動作中であるか否かを判定する(S2010)。具体的には、VMXモードフラグ110が「VMX rootモード」である場合にはLv1 VMM40又はLv2 ゲストOS50が動作中でないと判定され、VMXモードフラグ110が「VMX non−rootモード」である場合にはLv1 VMM40又はLv2 ゲストOS50が動作中であると判定される。
Lv1 VMM40又はLv2 ゲストOS50が動作中でないと判定された場合、CPU70は、S2040に進む。
Lv1 VMM40又はLv2 ゲストOS50が動作中であると判定された場合、CPU70は、Lv0 VMCS400のシャドウイング設定430を参照して、選択されたフラグに対してシャドウイング機能が有効であるか否かを判定する(S2020)。具体的には、CPU70は、選択されたフラグのシャドウイング有効化フラグ645が「1」であるか否かを判定する。
選択されたフラグに対してシャドウイング機能が有効でないと判定された場合、又は、Lv1 VMM40又はLv2 ゲストOS50が動作中でないと判定された場合、CPU70は、特権レジスタ140に書き込む値を一時領域に格納し(S2040)、S2070に進む。
選択されたフラグに対してシャドウイング機能が有効であると判定された場合、CPU70は、Lv0 VMCS400のゲスト状態エリア410を参照して、更新される値、すなわち、書き込まれる値とシャドウデータとが一致するか否かを判定する(S2030)。具体的には、CPU70は、選択されたビットに対応するエントリのシャドウデータ655に格納される値と、書き込まれる値とが一致するか否かを判定する。
書き込まれる値とシャドウデータとが一致しないと判定された場合、CPU70は、VM exitが発生すると判定し(S2060)、処理を終了する。
書き込まれる値とシャドウデータとが一致すると判定された場合、CPU70は、特権レジスタ140に含まれるCR0又はCR4のうち、選択されたフラグの値を読み出し、読み出された値を一時領域に格納し(S2050)、S2070に進む。これは、シャドウイング機能が有効である場合にCR0又はCR4の更新が禁止されているためである。
S2070では、CPU70は、全てのフラグについて処理が終了したか否かを判定し、全てのフラグについて処理が完了していない場合には、次のフラグを選択し、S2000〜S2070の処理が実行される。
全てのフラグについて処理が完了したと判定された場合、CPU70は、一時領域に格納された結果を各制御ビット毎にマージして、当該マージされた結果をLv0 VMCS400のゲスト状態エリア410に書き込み(S2080)、処理を終了する。すなわち、シャドウイング機能が有効であるビットについては、シャドウデータが書き込まれる。
[第2の実施形態]
以下、第2の実施形態について説明する。
第2の実施形態における仮想計算機システムの構成、並びに、ソフトウェア及びハードウェアの構成については、第1の実施形態と同一であるため説明を省略する。
第2の実施形態では、TPRに対するシャドウイング設定に関する処理が第1の実施形態とは異なる。なお、他の処理については、第1の実施形態と同一であるため、説明を省略する。以下、第1の実施形態との差異を中心に第2の実施形態について説明する。
図19は、本発明の第2の実施形態におけるハイパバイザ20が実行するTPRに対する更新処理を説明するフローチャートである。なお、以下では、レジスタ調停方針表220においてTPRに対する調停方針610が「インタセプト」である場合について説明する。すなわち、TPRの操作時には、シャドウイングされない。
ハイパバイザ20は、Lv1 VMCS500のシャドウイング設定530を参照し、Lv1 VMM40がTPRの操作に対してシャドウイング機能が有効であるか否かを判定する(S2100)。具体的には、ハイパバイザ20は、シャドウイング機能設定テーブル5301のシャドウイング対象名670が「UseTprShadow」であるエントリのシャドウイング有効化フラグ675が「1」であるか否かを判定する。
Lv1 VMM40がTPRの操作に対してシャドウイング機能が有効でないと判定された場合、ハイパバイザ20は、Lv0 VMCS400のシャドウイング設定430のTPR操作に対するシャドウイング機能を無効化する(S2105)。
具体的には、ハイパバイザ20は、シャドウイング機能設定テーブル4301のシャドウイング対象名640が「UseTprShadow」であるエントリのシャドウイング有効化フラグ645の値を「0」に設定する。
次に、ハイパバイザ20は、Lv1 VMCS500のシャドウイング設定530から、シャドウイング対象名690が「Virtual Apic Page」であるエントリのシャドウデータアドレス695に格納されるアドレスを読み出す(S2110)。
ハイパバイザ20は、読み出されたアドレスをメモリ90のアドレスに変換し(S2115)、変換されたアドレスをLv0 VMCS400のシャドウイング設定430に設定する(S2120)。具体的には、シャドウデータ設定テーブル5303のシャドウイング対象名690が「Virtual Apic Page」であるエントリのシャドウデータアドレス695に、変換されたアドレスが設定される。
ハイパバイザ20は、インタセプト設定540のインタセプト対象名710が「CR8−load exiting」及び「CR8−store exiting」であるエントリのそれぞれに「1」を設定し(S2125、S2130)、処理を終了する。
S2100において、Lv1 VMM40がTPRの操作に対してシャドウイング機能が有効であると判定された場合、ハイパバイザ20は、Lv0 VMCS400のシャドウイング設定430のTPR操作に対するシャドウイング機能を有効化する(S2135)。
具体的には、ハイパバイザ20は、シャドウイング機能設定テーブル4301のシャドウイング対象名640が「UseTprShadow」であるエントリのシャドウイング有効化フラグ645の値を「1」に設定する。
次に、ハイパバイザ20は、Lv1 VMCS500のシャドウイング設定530から、シャドウイング対象名690が「Virtual Apic Page」であるエントリのシャドウデータアドレス695に格納されるアドレスを読み出す(S2140)。
ハイパバイザ20は、読み出されたアドレスをメモリ90のアドレスに変換し(S2145)、変換されたアドレスをLv0 VMCS400のシャドウイング設定430に設定する(S2150)。具体的には、シャドウデータ設定テーブル5303のシャドウイング対象名690が「Virtual Apic Page」であるエントリのシャドウデータアドレス695に、変換されたアドレスが設定される。
ハイパバイザ20は、Lv1 VMCS500のインタセプト設定540から、インタセプト対象名710が「CR8−load exiting」であるエントリのインタセプト有効化フラグ715に設定された値を読み出し、読み出された値に基づいて、Lv0 VMCS400のインタセプト設定440を更新する(S2155)。
具体的には、ハイパバイザ20は、インタセプト対象名700が「CR8−load exiting」であるエントリのインタセプト有効化フラグ705にLv1 VMCS500のインタセプト設定540から読み出された値を設定する。
ハイパバイザ20は、Lv1 VMCS500のインタセプト設定540から、インタセプト対象名710が「CR8−store exiting」であるエントリのインタセプト有効化フラグ715に設定された値を読み出し、読み出された値に基づいて、Lv0 VMCS400のインタセプト設定440を更新し(S2160)、処理を終了する。
具体的には、ハイパバイザ20は、インタセプト対象名700が「CR8−store exiting」であるエントリのインタセプト有効化フラグ705に、Lv1 VMCS500のインタセプト設定540から読みされた値を設定する。
すなわち、S2155及びS2160では、Lv1 VMCS500のインタセプト設定540の設定がLv0 VMCS400のインタセプト設定440に反映される。
本実施形態では、Lv1 VMCS500におけるシャドウイング対象名690が「Virtual Apic Page」であるエントリのシャドウデータアドレス695が変換され、当該変換されたアドレスがLv0 VMCS400のシャドウデータ名660が「Virtual Apic Page」であるエントリのシャドウデータアドレス665に設定される。
なお、S2105〜S2130の処理は、ハイパバイザ20が実行する処理の一例であり、ハイパバイザ20の仕様によって様々なバリエーションの処理が考えられる。
10 物理計算機
20 ハイパバイザ
22 レジスタ調停方針表
30 仮想計算機
32 IA
40 Lv1 VMM
50 Lv2 ゲストOS
60 AP
70 CPU
80 コンソール
90 主記憶装置(メモリ)
100 VMEXIT判定部
110 VMXモードフラグ
120 VMCSポインタ
130 シャドウイング機能
140 特権レジスタ
200 エミュレータ
210 VMCS制御部
220 レジスタ調停方針表
300 仮想化データ
310 CPU仮想化データ
320 Lv1 VMCSポインタ
330 論理VMXモードフラグ
340 論理TPR
400 Lv0 VMCS
410 ゲスト状態エリア
420 ホスト状態エリア
430 シャドウイング設定
440 インタセプト設定
450 Exit情報エリア
500 Lv1 VMCS
510 ゲスト状態エリア
520 ホスト状態エリア
530 シャドウイング設定
540 インタセプト設定
550 Exit情報エリア
605 レジスタ名
610 調停方針
615 ハイパバイザ固有値
620 ビット名
625 保持値
630 ビット名
635 保持値
640 シャドウイング対象名
645 シャドウイング有効化フラグ
650 シャドウデータ名
655 シャドウデータ
660 シャドウデータ名
665 シャドウデータアドレス
670 シャドウイング対象名
675 シャドウイング有効化フラグ
685 シャドウデータ
690 シャドウイング対象名
695 シャドウデータアドレス
700 インタセプト対象名
705 インタセプト有効化フラグ
710 インタセプト対象名
715 インタセプト有効化フラグ
800 IOH
820 QPI
840 バス
850 I/Oインタフェース
860 LAN
870 ディスク装置
890 SAN

Claims (14)

  1. プロセッサと、前記プロセッサに接続されるメモリとを備え、前記プロセッサによって実行され、計算機の物理資源を仮想的に分割して生成される複数の仮想計算機を管理する第1の仮想マシンマネージャと、前記各仮想計算機上で実行され、アプリケーションを実行するオペレーティングシステムを管理する第2の仮想マシンマネージャと、前記第1の仮想マシンマネージャによって前記メモリに格納され、前記第1の仮想マシンマネージャと前記第2の仮想マシンマネージャとの状態を管理する第1の管理情報と、前記第2の仮想マシンマネージャによって前記メモリに格納され、前記第2の仮想マシンマネージャと前記オペレーティングシステム又は前記アプリケーションとの状態を管理する第2の管理情報とを有し、前記プロセッサが、当該プロセッサを制御するための制御情報を格納するレジスタと、前記レジスタに対する読み出し操作に応じて、前記第1の管理情報又は前記第2の管理情報から値を読み出すシャドウイング機能とを備えた計算機における仮想化方法であって、
    前記第1の仮想マシンマネージャが、前記第2の仮想マシンマネージャからの呼び出しを検出する第1のステップと、
    前記第1の仮想マシンマネージャが、前記第2の仮想マシンマネージャからの呼び出し要因が前記シャドウイング機能を有効化するための指示であるか否かを判定する第2のステップと、
    前記第2の仮想マシンマネージャからの呼び出し要因が前記シャドウイング機能を有効化するための指示であると判定された場合に、前記第1の仮想マシンマネージャが、前記シャドウイング機能を有効化する第3のステップと、
    を含むことを特徴とする仮想化方法。
  2. 前記シャドウイング機能は、さらに、前記プロセッサが前記レジスタに対する書き込み操作を検出した場合に、前記第1の管理情報に対して所定の値を書き込む機能を有し、
    前記仮想化方法は、
    前記プロセッサが、前記オペレーティングシステム又は前記アプリケーションから発行された前記レジスタへの書き込み要求を検出する第4のステップと、
    前記プロセッサが、前記シャドウイング機能を用いて、前記オペレーティングシステム又は前記アプリケーションから発行されたレジスタへの書き込み要求によって書き込まれる値に対応する前記所定の値を、前記第1の管理情報に書き込む第5のステップと、
    をさらに含むことを特徴とする請求項1に記載の仮想化方法。
  3. 前記第1の管理情報は、前記シャドウイング機能によって読み出される第1のシャドウデータを含み、
    前記第2の管理情報は、前記シャドウイング機能によって読み出される第2のシャドウデータを含み、
    前記仮想化方法は、
    前記第1の仮想マシンマネージャが、前記第2の管理情報から前記第2のシャドウデータを読み出す第6のステップと、
    前記第1の仮想マシンマネージャが、前記読み出された第2のシャドウデータに基づいて、前記第1の管理情報に含まれる前記第1のシャドウデータを更新する第7のステップと、
    前記プロセッサが、前記オペレーティングシステム又は前記アプリケーションから発行された前記レジスタの読み出し要求を検出する第8のステップと、
    前記プロセッサが、前記シャドウイング機能を用いて前記第1の管理情報の前記第1のシャドウデータから、前記オペレーティングシステム又は前記アプリケーションから発行された前記レジスタの読み出し要求の読み出し対象となる値を読み出し、前記読み出された読み出し対象となる値をオペレーティングシステム又は前記アプリケーションに応答する第9のステップと、
    をさらに含むことを特徴とする請求項1に記載の仮想化方法。
  4. 前記計算機は、前記第2の仮想マシンマネージャによって操作される前記レジスタに対する処理方針と、前記第2の仮想マシンマネージャによって操作される前記レジスタに対する応答として送信される応答値とが定義され、前記第1の仮想マシンマネージャによって前記メモリに格納された処理方針表を有し、
    前記仮想化方法は、
    前記第3のステップは、前記第2の仮想マシンマネージャからの呼び出し要因が前記シャドウイング機能を有効化するための指示でないと判定された場合に、前記第1の仮想マシンマネージャが、前記処理方針表を参照する第10のステップと、
    前記第1の仮想マシンマネージャが、前記第2の仮想マシンマネージャからの呼び出しに対する処理方針が前記シャドウイング機能を用いる処理であるか否かを判定する第11のステップと、
    前記第2の仮想マシンマネージャからの呼び出しに対する処理方針がシャドウイング機能を用いる処理であると判定された場合に、前記第1の仮想マシンマネージャが、前記第1の管理情報を読み出すために、前記シャドウイング機能を有効化する第12のステップと、
    前記第1の管理情報に含まれる前記第1のシャドウデータに前記応答値を設定する第13のステップと、
    をさらに含むことを特徴とする請求項3に記載の仮想化方法。
  5. 前記レジスタは、複数の制御情報から構成される第2の制御情報を含み、
    前記シャドウイング機能は、前記各第2の制御情報毎に有効化することが可能であって、
    前記仮想化方法は、
    前記第8のステップは、前記プロセッサが、前記各第2の制御情報毎に前記シャドウイング機能を有効化するか否かを判定する第14のステップと、
    前記第1の仮想マシンマネージャが、前記シャドウイング機能が有効化されないと判定された前記第2の制御情報については、前記シャドウイング機能が有効化されていないと判定された第2の制御情報に対応する情報を、前記レジスタから読み出す第15のステップと、
    前記第1の仮想マシンマネージャが、前記シャドウイング機能が有効化されると判定された前記第2の制御情報については、前記シャドウイング機能が有効化されると判定された第2の制御情報に対応する情報を、前記シャドウイング機能を用いて、前記第1の管理情報から読み出す第16のステップと、
    をさらに含むことを特徴とする請求項4に記載の仮想化方法。
  6. 前記レジスタは、前記プロセッサが前記メモリ上に格納されたソフトウェアの実行優先度を保持する第1の制御情報を含み、
    前記メモリは、前記メモリ上の位置を一意に識別する第1のアドレス空間を有し、
    前記仮想計算機には、前記メモリ上に仮想的なメモリが割り当てられ、前記仮想的なメモリ上の位置を一意に識別する第2のアドレス空間を有し、
    前記第1のシャドウデータには、前記第1の制御情報に対する値として前記第1のアドレス空間に含まれる第1のアドレスが格納され、
    前記第2のシャドウデータには、前記第1の制御情報に対する値として前記第2のアドレス空間に含まれる第2のアドレスが格納され、
    前記仮想化方法は、
    前記第1の仮想マシンマネージャが、前記第2の仮想マシンマネージャから前記第1の制御情報に対する更新要求を受信する第17のステップと、
    前記第1の仮想マシンマネージャが、前記更新要求を受信したときには、前記第1の仮想マシンマネージャに対して前記シャドウイング機能を有効化する第18のステップと、
    前記第1の仮想マシンマネージャが、前記シャドウイング機能を用いて前記第1のシャドウデータから前記第1のアドレスを読み出す第19のステップと、
    前記第1の仮想マシンマネージャが、前記読み出された第1のアドレスを、前記第2のアドレス空間含まれ、前記読み出された第1のアドレスと対応する前記第2のアドレスに変換する第20のステップと、
    前記第1の仮想マシンマネージャが、前記第1の制御情報に前記読み出された第1のアドレスに対応する第2のアドレスを格納する第21のステップと、
    をさらに含むことを特徴とする請求項3に記載の仮想化方法。
  7. 前記レジスタは、前記プロセッサの状態を制御するための複数の特権レジスタであることを特徴とする請求項1に記載の仮想化方法。
  8. プロセッサと、前記プロセッサに接続されるメモリとを備えた計算機であって、
    前記プロセッサは、前記メモリ上に展開された、前記計算機の物理資源を仮想的に分割して生成される複数の仮想計算機を管理する第1の仮想マシンマネージャを実行し、
    前記各仮想計算機上では、アプリケーションを実行するオペレーティングシステムを管理する第2の仮想マシンマネージャが実行され、
    前記第1の仮想マシンマネージャは、前記第1の仮想マシンマネージャと前記第2の仮想マシンマネージャとの状態を管理する第1の管理情報を前記メモリに格納し、
    前記第2の仮想マシンマネージャは、前記第2の仮想マシンマネージャと前記オペレーティングシステム又は前記アプリケーションとの状態を管理する第2の管理情報を前記メモリに格納し、
    前記プロセッサは、当該プロセッサを制御するための制御情報を格納するレジスタと、前記レジスタに対する読み出し操作を検出した場合に、前記第1の管理情報又は前記第2の管理情報から値を読み出すシャドウイング機能とを備え、
    前記第1の仮想マシンマネージャは、
    前記第2の仮想マシンマネージャからの呼び出しを検出し、
    前記第2の仮想マシンマネージャからの呼び出し要因が前記読み出しシャドウイング機能を有効化するための指示であるか否かを判定し、
    前記第2の仮想マシンマネージャからの呼び出し要因が前記読み出しシャドウイング機能を有効化するための指示であると判定された場合に、前記第1の仮想マシンマネージャが、前記読み出しシャドウイング機能を有効化することを特徴とする計算機。
  9. 前記シャドウイング機能は、さらに、前記プロセッサが、前記レジスタに対する書き込み操作を検出した場合に、前記第1の管理情報に対して所定の値を書き込む処理を実行し、
    前記プロセッサは、
    前記オペレーティングシステム又は前記アプリケーションから発行された前記レジスタへの書き込み要求を検出し、
    前記シャドウイング機能を用いて、前記オペレーティングシステム又は前記アプリケーションから発行されたレジスタへの書き込み要求によって書き込まれる値に対応する前記所定の値を、前記第1の管理情報に書き込むことを特徴とする請求項8に記載の計算機。
  10. 前記第1の管理情報は、前記シャドウイング機能によって読み出される第1のシャドウデータを含み、
    前記第2の管理情報は、前記シャドウイング機能によって読み出される第2のシャドウデータを含み、
    前記第1の仮想マシンマネージャは、前記第2の管理情報から前記第2のシャドウデータを読み出し、
    前記読み出された第2のシャドウデータに基づいて、前記第1の管理情報に含まれる前記第1のシャドウデータを更新し、
    前記プロセッサは、
    前記オペレーティングシステム又は前記アプリケーションから発行された前記レジスタの読み出し要求を検出し、
    前記シャドウイング機能を用いて前記第1の管理情報の前記第1のシャドウデータから、前記オペレーティングシステム又は前記アプリケーションから発行された前記レジスタの読み出し要求の読み出し対象となる値を読み出し、前記読み出された読み出し対象となる値をオペレーティングシステム又は前記アプリケーションに応答することを特徴とする請求項8に記載の計算機。
  11. 前記第1の仮想マシンマネージャは、
    前記第2の仮想マシンマネージャによって操作される前記レジスタに対する処理方針と、前記第2の仮想マシンマネージャによって操作される前記レジスタに対する応答として送信される応答値とが定義された処理方針表を前記メモリに格納し、
    前記第2の仮想マシンマネージャからの呼び出し要因が前記読み出しシャドウイング機能を有効化するための指示でないと判定された場合、前記処理方針表を参照し、
    前記第2の仮想マシンマネージャからの呼び出しに対する処理方針が前記シャドウイング機能を用いる処理であるか否かを判定し、
    前記第2の仮想マシンマネージャからの呼び出しに対する処理方針がシャドウイング機能を用いる処理であると判定された場合に、前記シャドウイング機能を有効化し、
    前記第1の管理情報に含まれる前記第1のシャドウデータに前記応答値を設定することを特徴とする請求項10に記載の計算機。
  12. 前記レジスタは、複数の制御情報から構成される第2の制御情報を含み、
    前記シャドウイング機能は、前記各第2の制御情報毎に有効化することが可能であって、
    前記プロセッサは、
    前記第2の仮想マシンマネージャからの呼び出しに対する処理方針がシャドウイング機能を用いる処理であると判定する場合に、前記各第2の制御情報毎に前記シャドウイング機能を有効化するか否かを判定し、
    前記シャドウイング機能が有効化されないと判定された前記第2の制御情報については、前記シャドウイング機能が有効化されていないと判定された第2の制御情報に対応する情報を、前記レジスタから読み出し、
    前記シャドウイング機能が有効化されると判定された前記第2の制御情報については、前記シャドウイング機能が有効化されていると判定された第2の制御情報に対応する情報を、前記シャドウイング機能を用いて、前記第1の管理情報から読み出すことを特徴とする請求項11に記載の計算機。
  13. 前記レジスタは、前記プロセッサが前記メモリ上に格納されたソフトウェアの実行優先度を保持する第1の制御情報を含み、
    前記計算機に含まれるメモリは、メモリ上の位置を一意に識別する第1のアドレス空間を有し、
    前記仮想計算機には、前記メモリ上に仮想的なメモリが割り当てられ、前記仮想的なメモリ上の位置を一意に識別する第2のアドレス空間を有し、
    前記第1のシャドウデータには、前記第1の制御情報に対する値として前記第1のアドレス空間に含まれる第1のアドレスが格納され、
    前記第2のシャドウデータには、前記第1の制御情報に対する値として前記第2のアドレス空間に含まれる第2のアドレスが格納され、
    前記第1の仮想マシンマネージャは、
    前記第2の仮想マシンマネージャから前記第1の制御情報に対する更新要求を受信し、
    前記更新要求を受信したときには、前記第1の仮想マシンマネージャに対して前記シャドウイング機能を有効化し、
    前記シャドウイング機能を用いて前記第1のシャドウデータから前記第1のアドレスを読み出し、
    前記読み出された第1のアドレスを、前記第2のアドレス空間に含まれ、前記読み出された第1のアドレスに対応する第2のアドレスに変換し、
    前記第1の制御情報に前記読み出された第1のアドレスに対応する第2のアドレスを格納することを特徴とする請求項10に記載の計算機。
  14. 前記レジスタは、前記プロセッサの状態を制御するための複数の特権レジスタであることを特徴とする請求項8に記載の計算機。
JP2010023872A 2010-02-05 2010-02-05 仮想化方法及び計算機 Expired - Fee Related JP5493125B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2010023872A JP5493125B2 (ja) 2010-02-05 2010-02-05 仮想化方法及び計算機
EP10015782A EP2363805A1 (en) 2010-02-05 2010-12-17 Virtualization method and virtual machine
US12/980,549 US9207939B2 (en) 2010-02-05 2010-12-29 Performing shadowing function by virtual machine manager in two-level virtual machine environment

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010023872A JP5493125B2 (ja) 2010-02-05 2010-02-05 仮想化方法及び計算機

Publications (2)

Publication Number Publication Date
JP2011164732A JP2011164732A (ja) 2011-08-25
JP5493125B2 true JP5493125B2 (ja) 2014-05-14

Family

ID=44170228

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010023872A Expired - Fee Related JP5493125B2 (ja) 2010-02-05 2010-02-05 仮想化方法及び計算機

Country Status (3)

Country Link
US (1) US9207939B2 (ja)
EP (1) EP2363805A1 (ja)
JP (1) JP5493125B2 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012148841A1 (en) * 2011-04-29 2012-11-01 Google Inc. Method and apparatus for detecting memory access faults
US9171139B2 (en) 2011-08-05 2015-10-27 Vmware, Inc. Lock screens to access work environments on a personal mobile device
US9465633B2 (en) 2011-08-05 2016-10-11 Vmware, Inc. Displaying applications of a virtual mobile device in a user interface of a mobile device
US8910158B2 (en) * 2011-12-14 2014-12-09 Intel Corporation Virtualizing interrupt priority and delivery
WO2013101191A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Virtual machine control structure shadowing
JP5813554B2 (ja) 2012-03-30 2015-11-17 ルネサスエレクトロニクス株式会社 半導体装置
US9342326B2 (en) 2012-06-19 2016-05-17 Microsoft Technology Licensing, Llc Allocating identified intermediary tasks for requesting virtual machines within a trust sphere on a processing goal
US9213564B1 (en) * 2012-06-28 2015-12-15 Amazon Technologies, Inc. Network policy implementation with multiple interfaces
US9223602B2 (en) * 2012-12-28 2015-12-29 Intel Corporation Processors, methods, and systems to enforce blacklisted paging structure indication values
US9785527B2 (en) * 2013-03-27 2017-10-10 Ixia Methods, systems, and computer readable media for emulating virtualization resources
JP6198858B2 (ja) * 2014-02-17 2017-09-20 株式会社日立製作所 計算機、及び、ハイパバイザによる資源スケジューリング方法
US9274823B1 (en) * 2014-12-24 2016-03-01 Parallels IP Holdings GmbH Thin hypervisor for native execution of unsafe code
US9747123B2 (en) 2015-09-25 2017-08-29 Intel Corporation Technologies for multi-level virtualization
US10341215B2 (en) 2016-04-06 2019-07-02 Keysight Technologies Singapore (Sales) Pte. Ltd. Methods, systems, and computer readable media for emulating network traffic patterns on a virtual machine
US10296338B2 (en) * 2016-12-09 2019-05-21 Intel Corporation System, apparatus and method for low overhead control transfer to alternate address space in a processor
US10942757B2 (en) 2017-02-27 2021-03-09 Red Hat, Inc. Virtual machine security through guest-side emulation
US11409551B2 (en) 2017-02-27 2022-08-09 Red Hat, Inc. Emulating VPID correctly for a nested hypervisor
US11323354B1 (en) 2020-10-09 2022-05-03 Keysight Technologies, Inc. Methods, systems, and computer readable media for network testing using switch emulation
US11483227B2 (en) 2020-10-13 2022-10-25 Keysight Technologies, Inc. Methods, systems and computer readable media for active queue management

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4792895A (en) 1984-07-30 1988-12-20 International Business Machines Corp. Instruction processing in higher level virtual machines by a real machine
US7127548B2 (en) * 2002-04-16 2006-10-24 Intel Corporation Control register access virtualization performance improvement in the virtual-machine architecture
US8423747B2 (en) * 2008-06-30 2013-04-16 Intel Corporation Copy equivalent protection using secure page flipping for software components within an execution environment
JP4864817B2 (ja) * 2007-06-22 2012-02-01 株式会社日立製作所 仮想化プログラム及び仮想計算機システム
US8151264B2 (en) * 2007-06-29 2012-04-03 Intel Corporation Injecting virtualization events in a layered virtualization architecture
JP5405799B2 (ja) 2008-10-30 2014-02-05 株式会社日立製作所 仮想計算機の制御方法、仮想化プログラム及び仮想計算機システム

Also Published As

Publication number Publication date
US9207939B2 (en) 2015-12-08
US20110197190A1 (en) 2011-08-11
JP2011164732A (ja) 2011-08-25
EP2363805A1 (en) 2011-09-07

Similar Documents

Publication Publication Date Title
JP5493125B2 (ja) 仮想化方法及び計算機
JP5352848B2 (ja) 仮想計算機の制御方法及び計算機装置
Huang et al. A case for high performance computing with virtual machines
US7376949B2 (en) Resource allocation and protection in a multi-virtual environment
JP5936640B2 (ja) 協調設計されたプロセッサへの、隔離された実行環境の作成
US20110153909A1 (en) Efficient Nested Virtualization
WO2015145620A1 (ja) 計算機及びアドレス変換方法
US20050091365A1 (en) Interposing a virtual machine monitor and devirtualizing computer hardware
JP4897578B2 (ja) 仮想計算機の制御プログラムおよび仮想計算機システム
JP4961459B2 (ja) 仮想計算機システムおよび仮想計算機システムにおける制御方法
Kloster et al. Efficient memory sharing in the xen virtual machine monitor
NO340567B1 (no) Hierarkisk virtualisering med en flernivå virtualiseringsmekanisme
KR20070100367A (ko) 하나의 가상 머신에서 다른 가상 머신으로 메모리를동적으로 재할당하기 위한 방법, 장치 및 시스템
Soriga et al. A comparison of the performance and scalability of Xen and KVM hypervisors
JP2013196138A (ja) 仮想計算機の制御方法及び仮想計算機
Omote et al. Improving agility and elasticity in bare-metal clouds
WO2016101282A1 (zh) 一种i/o任务处理的方法、设备和系统
Dong et al. HYVI: a hybrid virtualization solution balancing performance and manageability
US10990436B2 (en) System and method to handle I/O page faults in an I/O memory management unit
Fukai et al. OS-independent live migration scheme for bare-metal clouds
Grinberg et al. Architectural virtualization extensions: A systems perspective
Schopp et al. Hotplug memory redux
Yao et al. SWVM: a light-weighted virtualization platform based on Sunway CPU architecture
US20230027307A1 (en) Hypervisor-assisted transient cache for virtual machines
US11543988B1 (en) Preserving large pages of memory across live migrations of workloads

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120309

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120709

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130917

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130924

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131113

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: 20140204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140206

R150 Certificate of patent or registration of utility model

Ref document number: 5493125

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees