JP2006024207A - ゲストソフトウェアの特権レベルに基づく1つの仮想マシンモニタへの移行の支援 - Google Patents

ゲストソフトウェアの特権レベルに基づく1つの仮想マシンモニタへの移行の支援 Download PDF

Info

Publication number
JP2006024207A
JP2006024207A JP2005181228A JP2005181228A JP2006024207A JP 2006024207 A JP2006024207 A JP 2006024207A JP 2005181228 A JP2005181228 A JP 2005181228A JP 2005181228 A JP2005181228 A JP 2005181228A JP 2006024207 A JP2006024207 A JP 2006024207A
Authority
JP
Japan
Prior art keywords
privilege level
control
virtual machine
machine monitor
available
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2005181228A
Other languages
English (en)
Other versions
JP4291301B2 (ja
Inventor
Volkmar Uhlig
ウーリヒ フォルクマー
Steven Bennett
ベネット スティーブン
Erik Cota-Robles
コタ−ロブルズ エリック
Sebastian Schoenberg
ショーンバーグ セバスチャン
Andy Anderson
アンダーソン アンディ
Richard Uhlig
ウーリヒ リチャード
Gilbert Neiger
ネイガー ギルバート
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 JP2006024207A publication Critical patent/JP2006024207A/ja
Application granted granted Critical
Publication of JP4291301B2 publication Critical patent/JP4291301B2/ja
Active 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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】ゲストソフトウェアの現在の特権レベルが1つの特権レベル終了基準に合うと、1つのシステムの制御を1つの仮想マシンモニタに負担させる1つのシステム及び方法を提供する。
【解決手段】プロセッサは、現在の特権レベルが基準に合うことを検出し、次に、制御をゲストソフトウェアから仮想マシンモニタへ移す。仮想マシンモニタは、複数のある特権レベル変化または値に対する制御の負担を拒否できる。仮想マシンモニタへの移行はVMにおいて幾つかの命令を実行する前または、後に生じうる。
【選択図】図1

Description

本発明の複数の実施形態は、複数の仮想マシンに関する。特に、本発明の複数の実施形態は、1つの仮想マシン(VM)で実行されているゲストソフトウェアの特権レベルが1つの特権レベル終了基準に合うと、1つのプロセッサの制御を1つの仮想マシンモニタ(VMM)に回復させることに関する。
1つの従来のVMMは1つのコンピュータ上で実行でき、1つ以上の仮想マシンの要約をその他のソフトウェアへ与える。各VMは、1つの「ゲストオペレーティングシステム」のようなVM自体のオペレーティングシステム(OS)と、「ゲストソフトウェア」として一括して知られている複数のアプリケーションとを実行する1つの内蔵プラットフォームとして機能できる。このゲストソフトウェアは、1つのVM内で、またはその上で実行するものと言われている。ゲストソフトウェアは、1つのVM上よりはむしろ1つの専用のコンピュータ上であたかも実行しているかのように動作するようになっている。すなわち、ゲストソフトウェアは、様々なコンピュータ動作を制御し、それらの動作中、複数のハードウェアリソースへアクセスするようになっている。複数のハードウェアリソースは、複数の制御レジスタのような複数のプロセッサ常駐リソースと、複数の記述子テーブルのようにメモリ内に存在する複数のリソースとを含むことができる。しかし、1つの仮想マシン環境では、VMMは、複数のVMの適切な動作を行うと共に、複数のVMから保護を、かつ複数のVM間で保護を行うためにこれらリソースを根本的に制御できなければならない。このことを達成するため、VMMは、ゲストソフトウェアにより行われた複数のハードウェアリソースへのすべてのアクセスを典型的に傍受し、仲裁する。
ほとんどの命令セットアーキテクチャ(ISA)は、あまり特権を持たない複数のアプリケーションを、より多くの特権を持つオペレーティングシステム機能から分離するように複数の特権レベルを規定する。例えば、1つの従来技術の32ビットアーキテクチャは、リング0〜リング3と称する4つの特権レベルを有し、リング0は最も多くの特権を持ち、リング3は最も少ない特権を持つ。プロセッサは、複数の異なる特権レベル間で切り換える複数の制御手段を具える。複数の切り換えを、1つの特定の命令を呼び出すことにより明示でき、あるいは、1つの例外またはフォールトを増やすことにより、または、1つの割り込みのような1つの外部事象により暗に示すことができる。例えば、1つの特権レベル変化は、1つのコール(CALL)、1つのソフトウェア割り込み(INT)または1つの割り込み復帰(IRET)のような1つの命令の実行中に生じうる。1つの特権レベル変化は、例えば、複数の例外、複数の外部割り込み、複数のフォールト、複数のタスク切り換え、複数のトラップ並びにその他の複数の類似事象のようなその他の複数の同期的または非同期的な事象の結果としても生じうる。
複数の多重プロセッサまたは複数のマルチスレッドシステム用の複数のオペレーティングシステムは、相互排除を確実にするソフトウェア実装された複数のロックを用いて、2つ以上のスレッドまたはプロセッサから同時にアクセスされる可能性があるデータを保護する。複数のロックが通常、短期間保持される場合には、いわゆる複数のスピンロックを用いる場合がある。1つのプロセッサまたはスレッド上で動作しているソフトウェアが、別のプロセッサまたはスレッド上で動作しているソフトウェアにより既に獲得されている1つのロックを獲得しようと試みる場合、ソフトウェアは、1つのきついコードループ内のロックを再獲得しようと試みる。このきついループ内で実行している間、ソフトウェアは、いかなる有益な作業も行えず、ハードウェアプロセッサスレッドは、何の利益も得られない。複数のマルチスレッドプロセッサまたは複数の多重プロセッサシステム上では、1つのスレッドまたはプロセッサの実行は、消費帯域幅、複数の実行ユニットまたは電力のようなその他の複数のスレッドまたはプロセッサの複数のリソースを減らすおそれがある。従って、スピン期間は、可能な限り短くなければならない。
複数の多重プロセッサまたはマルチスレッドシステムを仮想化する複数のVMMは、ゲストソフトウェアの各インスタンス上で実行しているソフトウェアを1つの別個のVMまたは仮想プロセッサ(VP)内で実行できる。1つの非VMシステム上では、ゲストソフトウェアのこれらインスタンスは、1つの異なったプロセッサまたはスレッド上で実行する。複数のVP及び、ゲストソフトウェアのすべてのインスタンスを1つの仮想システムと総称する。このような1つのVMMは、このゲストロック動作を考慮しない場合、著しい劣化を経験するおそれがある。このため、VMMが仮想システムのすべてのVPを割り込ませなければ、1つのVPが1つのロックを保持する間、VMMはこのVPを割り込ませるべきでない。複数のロックプリミティブをハードウェアにより直接に検出できないので、複数のロックがソフトウェアにより実施されている場合、複数の経験則または複数の間接的観測技術を用いる場合がある。
1つのこのような経験則は、共通のOS動作に基づいている。1つのOSが特権モードで実行していない間、または、このOSが1つの低電力状態にある間、OSは、いかなるロックも保持しない可能性がある。1つのVMMは、1つの非特権モードで実行しているか、または、1つの低電力状態にある1つの仮想プロセッサのみを割り込ませることにより前述の知識を活用できる。特権モードで実行しているゲストソフトウェアの複数の割り込みは、ゲストソフトウェアが非特権モードへ切り換わるまで保留される。
1つの仮想マシン(VM)で実行しているゲストソフトウェアの特権レベルが、ある特権レベル終了基準に合うと、1つのシステムの制御を1つの仮想マシンモニタ(VMM)に負担させる1つのシステム及び方法を提供する。プロセッサは、ゲストソフトウェアの特権レベルが基準に合う事を検出し、その後、制御をVMMへ移行する。特権レベル終了基準は、1つの特権レベル増大、1つの特権レベル減少、任意の特権レベル変化、1つの所定レベルと整合する1つの特権レベル、1つの所定レベルよりも大きい1つの特権レベル、1つの所定レベルよりも小さい1つの特権レベル、または、1つの特定の特権レベル移行を含むことができる。VMMは、複数のある特権レベル値の制御を、または、複数の値変化の制御を負担するのを拒否することができる。VMMへの移行は、VMにおいて幾つかの命令を実行する前または、実行した後に生じうる。
本発明の複数の実施形態は、複数の動作を実行する複数の装置にも関する。この装置を、複数の必要な目的のために特別に構築でき、あるいは、この装置は1つの汎用コンピュータを具えることができ、この汎用コンピュータは、その中に記憶された1つのコンピュータプログラムにより再構成されるか、あるいは選択的に作動される。以下のものに限定はしないが、例えば、複数のフロッピーディスク、複数の光ディスク、複数のCD‐ROM及び複数の光磁気ディスクを含むいかなる種類のディスク、複数の読み取り専用メモリ(ROM)、複数のランダムアクセスメモリ(RAM)、複数の消去可能プログラマブル読み取り専用メモリ(EPROM)、複数の電気的に消去可能なプログラマブル読み取り専用メモリ(EEPROM)、複数の磁気または光カードのような1つのコンピュータ可読記憶媒体、あるいは、複数の電子命令を記憶するのに適し、各々が1つのコンピュータシステムバスに結合されたいかなる種類の媒体内には、前述の1つのコンピュータプログラムを記憶できる。1つ以上の処理装置(例えば、複数の中央処理ユニットなど)を用いて複数の命令を実行できる。その他の複数の実施形態では、本発明の複数の工程を実行する再構成可能またはハードワイヤードロジックを含む複数の特定のハードウェア部品により、あるいは、複数のプログラムコンピュータ部品及び複数のカスタムハードウェア部品の任意の組み合わせにより本発明の複数の工程を実行できる。
更に、1つの設計は、作成から製作シミュレーションまで様々な段階を経ることができる。1つの設計を表すデータは、この設計を多くの方法で表すことができる。まず、複数のシミュレーションで有益であるように、1つのハードウェア記述言語または別の機能記述言語を用いてハードウェアを表すことができる。その上、複数のロジック及び/またはトランジスタゲートを持つ1つの回路レベルモデルを設計処理の幾つかの工程で生成できる。更に、ほとんどの設計は、幾つかの工程において、ハードウェアモデル内の様々な装置の物理的な配置を表すデータの1つのレベルに達する。従来の複数の半導体製造技術を用いる場合では、1つのハードウェアモデルを表すデータを、集積回路を製造するのに用いる複数のマスクの複数の異なるマスク層上に様々な機能の存在または不在を指定するデータとすることができる。設計の幾つかの表現では、データを1つの機械可読媒体のいかなる形態でも記憶できる。このような情報を伝送するために変調または別の方法で発生された1つの光波または電波、1つのメモリ、あるいは、1つのディスクのような1つの磁気または光ストレージを機械可読媒体とすることができる。これら媒体の幾つかは、設計またはソフトウェア情報を「伝達する」または「指示する」ことができる。コードまたは設計を指示するか、伝達する1つの電気搬送波が伝送されると、電気信号のコピー、バッファリングまたは再送信が実行される範囲で、1つの新たなコピーが形成される。従って、1つの通信プロバイダまたは1つのネットワークプロバイダは、本発明の複数の技術を具現する1つの物品(1つの搬送波)の複数のコピーを形成できる。
図1には、本発明を動作できる1つの仮想マシン環境100の一実施形態を示す。図1のVM環境により、並びに、ハードウェア、ソフトウェア、またはこれら双方の1つの組み合わせを有することができる処理ロジックにより、本発明の異なる複数の実施形態を実行できる。この実施形態では、むき出しのプラットフォームハードウェア116が、例えば、1つの標準のオペレーティングシステム(OS)または1つのVMM112を実行できる1つの演算プラットフォームを有する。
1つのVMM112は、典型的にソフトウェア内に実装されているが、1つのベアマシンインターフェースを高レベルソフトウェアへエクスポートできる。このような高レベルソフトウェアは、1つの標準または実時間OSを有することができるが、この点で、本発明の範囲は限定されない。加えて、例えば、1つVMMを、別のVMM内で、またはその上部で実行できる。複数のVMM及びそれらの複数の典型的な特徴及び機能は当業者により周知であり、これらを、例えば、ソフトウェアやファームウェア内に、または、様々な技術の1つの組み合わせにより実現できる。
プラットフォームハードウェア116を1つのパーソナルコンピュータ(PC)、メインフレーム、手持ち式装置、携帯用コンピュータ、セットトップボックス、または、その他のいかなる演算システムとすることができる。プラットフォームハードウェア116は、1つのプロセッサ118、メモリ120及び特権レベル監視ロジック124を含む。プロセッサ118を、1つのマイクロプロセッサ、デジタル信号プロセッサ、マイクロコントローラなどのようなソフトウェアを実行できるいかなる種類のプロセッサとすることができる。プロセッサ118は、本発明の方法の複数の実施形態を実行するため、マイクロコード、再構成可能ロジック、プログラマブルロジックまたはハードコードロジックを含むことができる。図1には、単に1つのこのようなプロセッサ118を示すが、システム内には、1つ以上のプロセッサを存在させることができる。
メモリ120を、1つのハードディスク、1つのフロッピーディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、フラッシュメモリ、上述の複数の装置の任意の組み合わせ、または、プロセッサ118により読み取り可能なその他のいかなる種類の機械媒体とすることができる。メモリ120は、本発明の方法の複数の実施形態の実行を行う複数の命令及び/またはデータを記憶できる。
VMM112は、同じ、または異なる複数の要約を様々なゲストへ供給できる1つ以上の仮想マシン(VM)の要約をその他のソフトウェア(例えば、「ゲスト」ソフトウェア)へ与える。1つ以上のVMが、システム内に存在できる。例えば、図1には、2つのVM102,114を示す。各VM上で実行しているゲストソフトウェアは、1つのゲストOS104または106のような1つのゲストOSと、様々なゲストソフトウェアアプリケーション108,110とを含むことができる。複数のVM102,114内で実行しているゲストソフトウェアは、ゲストソフトウェアが実行している複数のVM102,114内の複数の物理的リソース(例えば、複数のプロセッサレジスタ、メモリ及び複数のI/O装置)へアクセスするようになっており、また、複数のシステム装置により発生された複数の割り込みや、複数の例外などを含む様々な事象を処理するようになっている。1つの仮想マシン環境では、VMM112は、複数のVM102,114の適切な動作を行うと共に、複数のVM102,114から保護を、かつ複数のVM102,114間で保護を行うために複数の物理的リソースを根本的に制御できなければならない。VMM112は、コンピュータの複数の物理的リソースへのゲストソフトウェアの複数のアクセスを必要に応じて傍受することによりこの目標を達成する。
ゲストソフトウェアがアクセスできる複数のリソースを、「特権を持つ」または「特権を持たない」と分類できる。特権を持つ複数のリソースに対して、VMM112は、特権を持つこれら複数のリソースの根本的な制御を維持する間、ゲストソフトウェアにより所望された機能を容易にする。特権を持たない複数のリソースは、VMM112により制御される必要がなく、これらリソースには、ゲストソフトウェアがアクセスできる。
更に、各ゲストOS104,106は、複数の例外(例えば、複数のページフォールト、複数の一般保護違反、複数のトラップ、複数の異常終了など)、複数の割り込み(例えば、複数のハードウェア割り込み、複数のソフトウェア割り込み)及び複数のプラットフォームイベント(例えば、初期化(INIT)及び複数のシステム管理割り込み(SMI))のような様々なフォールトイベントを処理するようになっている。これら複数のフォールトイベントの幾つかは、「特権を持つ」。その理由は、これらフォールトイベントが、複数のVM102,114の適切な動作と、複数のVM102,114からの保護並びに、複数のVM102,114間の保護とを確実にするためにVMM112により処理されなければならないからである。特権を持つ1つのフォールトイベントが生じると、あるいは、ゲストソフトウェアが、特権を持つ1つのリソースにアクセスしようと試みる場合、制御をVMM112へ移動できる。ゲストソフトウェアからVMM112への制御の移動を、ここでは、1つのVM終了と称する。VM終了に続いて制御を受信した後、VMM112は様々な処理を実行でき、その後、制御をゲストソフトウェアへ戻すことができる。VMMからゲストソフトウェアへの制御の移動を、ここでは、1つのVMエントリーと称する。
特権を持つOS機能を呼び出すため、複数のアプリケーションが、INTまたはSYSTENTERのような特定の複数の命令を用いる。システムコール識別子及び複数のパラメータは、動作を呼び出す前に、通常、プロセッサの複数のレジスタ内にロードされている。複数のシステムコールを傍受することにより、複数の利用シナリオを可能にする。例えば、複数のシステムコールを追跡することにより、1つの侵入検知システムは、1つのセキュリティ違反の原因を引き出すことができる。別の利用シナリオは、複数のシステムコール呼び出しの時間的パターンに基づいて複数の実行期間を検出することにより複数のスケジューリングパターンを複数の周期的なリアルタイムタスク期間に引き出すようになっている。一実施形態では、プロセッサ118は、1つのVM制御構造体(VMCS)122内に記憶されたデータに従って複数のVM102,114の動作を制御する。一実施形態では、VMCS122は、メモリ120内に記憶されている。別の実施形態では、VMCS122は、プロセッサ118内に記憶されている。幾つかの実施形態では、複数のVMCS構造体が、複数のVMを支援するのに用いられる。
VMCS122は、ゲストソフトウェアの状態と、VMM112の状態と、VMM112がいかにしてゲストソフトウェアの動作を制限したいか、あるいは別の方法で制御したいかを示す実行制御情報と、その他の情報とを含むことができる1つの構造体である。ゲストソフトウェアへの、及び、ゲストソフトウェアからの複数の移行と、VM内のゲストソフトウェアの動作とは、VMCS内に記憶された一群のVM制御を用いて制御される。複数の実行制御は複数の環境を指定し、これら環境下で、制御をゲストソフトウェアからVMMへ移動しなければならない。複数の終了制御は、1つのゲスト状態の保存と、VM終了でのVMM状態のロードとを制御する。最近のVM終了を表す情報は、一群のVM終了情報データフィールド内に構成されている。1つのVM終了が生じると、ゲストソフトウェアにより用いられるプロセッサ状態の複数の成分がVMCS122へ保存され、VMM112により必要とされるプロセッサ状態の複数の成分はVMCS122からロードされる。複数のエントリー制御は、VMM状態の保存と、VMエントリーでのゲスト状態のロードとを制御する。1つのVMエントリーが生じると、ゲスト状態が、VMCS122内に記憶されたデータを用いて回復され、制御がゲストソフトウェアへ戻される。
一実施形態では、プロセッサ118は、VMM112により指定された特権レベル終了基準に基づいて1つのVM終了を生じさせるべきかを決定するためにゲストの現在の特権レベルを評価しなければならない特権レベル監視ロジック(PLML)124を含む。一実施形態では、この特権レベル終了基準は、VMCS122内に記憶されている。前記特権レベル終了基準の複数の具体的な実施形態を以下に説明する。現在のゲスト特権レベルが特権レベル終了基準に合うことをPLML124が決定すれば、処理ロジックは、ゲストソフトウェアからVMM112への1つのVM終了を容易にする。様々なISAでは、複数の特権レベルを1つの数値に割り当てることができ、1つの高数値は、増大した特権を示し、一方、1つの低数値は、減少した特権を示す。その他の複数の実施形態では、1つの高数値は、複数の減少した特権を示すことができる。ここでの複数の説明において、複数の特権レベルを、「増大する」と称する場合、このことは、関連する複数の数値にかかわらず、ゲストソフトウェアが、より多くの特権を持つようになることを意味し、「減少する」とは、より少ない特権を持つようになることを意味する。同様に、別の特権レベル「よりも少ない」1つの特権レベルは、関連する複数の数値にかかわらず、複数の減少した特権レベルを有するものである。
特権レベル終了基準を表すために複数の制御を複数のVM制御へ加えることができる。一実施形態では、1つの特権レベル増大終了制御は、1つの使用可能値に設定された場合、ゲストソフトウェアの動作中に1つの特権レベル増大が生じたら、複数のVM終了を生じさせるべきであることを指示する。この制御は、特権レベルを増大させる1つの事象の配信または1つの命令の実行が1つのVM終了を生じさせるべきかを決定する。一実施形態では、特権レベル変化を生じさせる命令の実行の完了に続いて(すなわち、廃棄後)、このような1つの特権レベル増大によるVM終了が生じる。一実施形態では、VM終了情報の一部としてVMMに報告できるゲスト命令ポインタ値は、新たな特権レベルで実行されるべき最初の命令を指すことができる。一実施形態では、特権レベル変化を生じさせた命令のアドレスを報告するいかなる明示的な規定も行わない。別の実施形態では、1つの特権レベル減少終了制御は、1つの使用可能値に設定された場合、ゲストソフトウェアの動作中に1つの特権レベル減少が生じたら、複数のVM終了を生じさせるべきであることを指示する。この制御は、特権レベルを減少させる複数の事象または複数の命令が1つのVM終了を生じさせるべきかを決定する。一実施形態では、特権レベル変化を生じさせる命令の実行の完了に続いて(すなわち、廃棄後)、このような1つの特権レベル減少によるVM終了が生じる。VM終了情報の一部としてVMMに報告できるゲスト命令ポインタ値は、新たな特権レベルで実行されるべき最初の命令を指すことができる。一実施形態では、特権レベル変化を生じさせた命令のアドレスを報告するいかなる明示的な規定も行わない。
複数の特権レベル増大及び特権レベル減少制御を支援する1つの方法の一実施形態を図2のフローチャートに示す。図2は、ゲスト特権レベルの1つの変化に基づく複数の特権レベル増大及び特権レベル減少終了制御の検査を表す。図2では、1つの特権レベル変化により生じる複数のVM終了を上述のその他の複数のVM終了源よりも優先させる。このことを、図を単純化して行う。すなわち、実際には、幾つかのその他のVM終了源の優先順位を高くでき、幾つかを低くできる。図2に示す実施形態では、特権レベル増大制御及び特権レベル減少制御の双方を示すが、これら複数の制御を、本明細書中の複数の異なる実施形態で述べるその他の複数の特権レベル終了制御に独立して、または、これら特権レベル終了制御と組み合わせて支援できる。
図2では、1つのVMエントリ要求をVMM112から受信するときに(ブロック210)、処理を開始する(ブロック205)。例えば、システムなどの状態をロードするといった、複数のVMエントリ検査を実行する(ブロック215)。1つのゲスト命令を実行する(ブロック220)。この命令の実行が1つのVM終了を生じさせると(ブロック225)、VM終了は、制御をVMM112へ移行させ、VM終了の理由をVMM112に報告し(ブロック230)、処理を終了する(ブロック235)。命令の実行中、VM終了が生じなければ(ブロック225)、ゲスト命令を廃棄する(ブロック240)。ゲストソフトウェアの現在の特権レベルを評価した後、ゲストソフトウェアの特権レベルが増大したことを決定しており(ブロック245)、1つの特権レベル増大(PLI)制御が利用可能であれば(ブロック250)、VM終了は制御をVMM112へ移行させ、VM終了がPLIによりもたらされたということをVMM112へ報告する(ブロック230)。ゲストソフトウェアの特権レベルが増大したことを決定しており(ブロック245)、1つの特権レベル増大(PLI)制御が利用可能でなければ(ブロック250)、処理ロジックが次のゲスト命令を実行する(ブロック220)。
ゲストソフトウェアの特権レベルが増大したことを決定しなければ(ブロック245)、処理ロジックが1つの特権レベル減少(PLD)について検査する。ゲストソフトウェアの現在の特権レベルを評価した後、ゲストソフトウェアの特権レベルが減少したことを決定しており(ブロック245)、1つのPLD制御が利用可能であれば(ブロック250)、VM終了は制御をVMM112へ移行させ、VM終了がPLDによりもたらされたということをVMM112へ報告する(ブロック230)。ゲストソフトウェアの特権レベルが減少したことを決定せず(ブロック255)、あるいは、1つのPLD制御が利用可能でなければ(ブロック260)、次のゲスト命令を実行する(ブロック220)。
選択終了を可能にするように特権レベル終了基準を利用可能にでき、また利用不可能にできる。この選択終了は、多重プロセッサスケジューリングに特に有益である。その理由は、複数の特権レベル変化による複数のVM終了が通常、ごくまれに必要とされるからである。加えて、例えば、VMMは、VM内でOSカーネルからユーザーレベルコードへの複数の移行にのみ反応できる。
1つの他の実施形態では、上述した複数の特権レベル増大及び特権レベル減少の実行制御により得た機能を1つの単一特権レベル変化終了制御に組み合わせることができ、この単一特権レベル変化終了制御は、図3に示すように、任意の特権レベル変化が1つのVM終了を生じさせることを特定する。図3では、1つのVMエントリ要求をVMM112から受信するときに(ブロック310)、処理を開始する(ブロック305)。例えば、システムなどの状態をロードするといった、複数のVMエントリ検査を実行する(ブロック315)。1つのゲスト命令を実行する(ブロック320)。この命令の実行が1つのVM終了を生じさせると(ブロック325)、VM終了は、制御をVMM112へ移行させ、VM終了の理由をVMM112に報告し(ブロック330)、処理を終了する(ブロック335)。命令の実行中、いかなるVM終了も生じなければ(ブロック325)、ゲスト命令を廃棄する(ブロック340)。ゲストソフトウェアの現在の特権レベルを評価した後、ゲストソフトウェアの特権レベルが変化したことを決定しており(ブロック345)、1つの特権レベル変化(PLC)終了制御が利用可能であれば(ブロック350)、VM終了は制御をVMM112へ移行させ、VM終了がPLCによりもたらされたということをVMM112へ報告する(ブロック330)。1つのPLC条件を満足しなければ(ブロック345)、または、PLC終了制御が利用可能でなければ(ブロック350)、次のゲスト命令を実行する(ブロック320)。
図4は、本発明の一実施形態に従って複数の特権レベル変化を決定する一方法を1つのフローチャートに示す。この図では、前の特権レベル(OPL)を表す1つの変数を現在の特権レベル(CPL)に設定することにより変数を初期化すること(ブロック410)から処理を開始する(ブロック405)。1つの単一命令を、または、1つの割り込みのような1つの単一非同期的な事象を処理または実行する(ブロック415)。命令の実行、または、事象の処理(ブロック415)後、特権レベルが、命令または事象処理前のものと異なると(ブロック420)、特権レベルが変化し、図2及び図3に示すように1つの行動を取る(ブロック425)。異ならなければ、次の命令または処理事象を実行する(ブロック415)。
ここで留意すべきは、図2及び図3では、命令の実行後であって、命令の廃棄前に、1つのVM終了を生じさせるべきかを決定するための1つの評価が生じるということである。実際には、この評価は、1つの命令の試みられる実行の一部として生じうる。例えば、1つの制御レジスタ(例えば、CR0)へのアクセスは、フォールト発生セマンティクスを持つ1つのVM終了を生じさせることができる。言い換えれば、任意のアーキテクチャの状態が命令により変更される前にVM終了が生じる。その他の複数のVM終了は、あるアーキテクチャの状態の変更に続いて生じるが、複数のタスクを切り換えさせ、その後、複数のVM終了を生じさせる複数の命令のような命令の廃棄の前に生じることができる。幾つかのVM終了は、1つの命令の廃棄に続いて生じることができる。特権レベルの評価を、廃棄後に評価されるような1つの条件とすることができる。その他の複数のVM終了は、その他の複数の理由により、また、その他の複数の環境の下で生じることができる。
図5は、1つの特権レベル変化命令のような複数の同期的な事象と、ゲストソフトウェアの実行中の1つの割り込みの到着のような複数の非同期的な事象との双方を認識する1つの方法を1つのフローチャートに示す。図5では、1つのVMエントリ要求をVMM112から受信するときに(ブロック510)、処理を開始する(ブロック505)。例えば、システムなどの状態をロードするといった、複数のVMエントリ検査を実行する(ブロック515)。1つの非同期的な事象が保留中でなければ(ブロック520)、1つのゲスト命令を実行する(ブロック525)。命令の実行(ブロック525)が1つのVM終了を生じさせると(ブロック530)、VM終了は制御をVMM112へ移行させ、VM終了の原因をVMM112に報告し(ブロック535)、処理を終了する(ブロック540)。命令の実行が1つのVM終了を生じさせなければ(ブロック530)、ゲスト命令を廃棄する(ブロック545)。1つの特権レベル増大(PLI)条件を満足し(ブロック550)、1つのPLI制御が利用可能であれば(ブロック555)、VM終了は制御をVMM112へ移行させ、VM終了がPLIにより生じたことをVMM112に報告する(ブロック535)。1つのPLI条件を満足しなければ(ブロック550)、または、1つのPLI制御が利用可能でなければ(ブロック555)、処理ロジックが1つの特権レベル減少(PLD)について検査する。1つのPLD条件を満足し(ブロック560)、1つのPLD制御が利用可能であれば(ブロック565)、VM終了は制御をVMM112へ移行させ、VM終了がPLDにより生じたことをVMM112に報告する(ブロック535)。1つのPLD条件を満足しなければ(ブロック560)、または、1つのPLD制御が利用可能でなければ(ブロック565)、この時点で1つの非同期的な事象が保留中であるかどうかを確かめるために処理ロジックが検査する(ブロック520)。1つの非同期的な事象が保留中であり(ブロック520)、この事象が1つのVM終了を生じさせると(ブロック570)、VM終了は制御をVMM112へ移行させ、VM終了が事象により生じたことをVMM112に報告する(ブロック535)。1つの非同期的な事象が保留中であり(ブロック520)、この事象が1つのVM終了を生じさせなければ(ブロック570)、この事象をゲストソフトウェアへ導入し(ブロック575)、上述した複数の特権レベル検査を行う。
別の実施形態では、1つの実行制御は1つの特権レベル目標値を示す。この特権レベル目標値を、VMMの制御下でVMCS内に記憶できる。VMMは、特権レベル目標値を任意の有効特権レベルに設定できる。別の実施形態では、特権レベル目標値は1つの一定値を持つことができる。幾つかの実施形態は、2つ以上のこのような特権レベル目標値を用いることができる。例えば、一実施形態は、2つの異なる特権レベル目標値を持つことができ、各々は、1つの特定値に固定されている。一実施形態では、特権レベル目標値は、利用可能になるまで、いかなる効果も持たない。VMCS内の1つの整合特権レベル目標利用可能制御を1のような1つの利用可能値に設定することにより1つの特権レベル目標値制御を利用可能にできる。この制御は、ゲストソフトウェアの実行中にゲストソフトウェアの特権レベルがこの特権レベル目標値に整合すれば、1つのVM終了を生じさせるべきであるということを指示する。実行制御は、複数の特権レベル目標値と、各々が複数の特権レベル目標値制御の1つに対応する複数の整合目標特権利用可能制御とを有することができる。
一実施形態では、整合する特権レベルで実行されるべき最初の命令の実行前に、特権レベル目標値と現在の特権レベルとのこのような1つの整合によるVM終了を生じさせることができる。一実施形態では、VM終了情報の一部としてVMMに報告できるゲスト命令ポインタ値は、整合する特権レベルで実行されるべき最初の命令を指す。一実施形態では、整合する値へ特権レベルを変化させた命令のアドレスを報告するいかなる明示的な規定も行わない。
図6は、1つの仮想マシン環境内でゲストソフトウェアの特権レベルに基づいてゲストソフトウェアから1つのVMMへ移行する1つの処理の一実施形態を示す1つの流れ図である。図示の実施形態では、1つのVM終了が、ゲストソフトウェアの特権レベルと1つの特権レベル目標値制御(PLTVC)の値とに基づいて生じる。図6では、1つのVMエントリ要求をVMM112から受信するときに(ブロック620)、処理を開始する(ブロック610)。例えば、システムなどの状態をロードするといった、複数のVMエントリ検査を実行する(ブロック630)。1つのPLTVCが利用可能でなければ(ブロック640)、1つのゲスト命令を実行する(ブロック650)。ゲストソフトウェアの現在の特権レベル(CPL)を評価した後、PLTVCが利用可能であり(ブロック640)、CPLが特権レベル目標値(PLTV)に等しければ(ブロック660)、VM終了が制御をVMM112へ移行させ(ブロック670)、処理を終了する(ブロック680)。CPLがPLTVに等しくなければ(ブロック660)、1つのゲスト命令を実行する(ブロック650)。
別の実施形態では、特権レベル目標値制御を1つの特権レベル上限値制御で強化する。この制御が1つの利用可能値に(例えば、1に)設定されている場合、ゲストソフトウェアの実行中にゲストソフトウェアの特権レベルが特権レベル目標値よりも大きければ、1つのVM終了を生じさせるべきであることを示す。一実施形態では、実行制御は、複数の特権レベル目標値及び対応の複数の特権レベル上限値制御を有することができる。その他の一実施形態では、特権レベル目標値が、最も高い特権レベルに設定されている場合、より多くの特権を持つ1つの状態への移行を生じさせないことができ、これにより、1つの権限付与制御を用いることなく、制御を効果的に利用不可能にする。
更なる別の実施形態では、特権レベル目標実行制御を1つの特権レベル下限値制御で強化し、この制御は、ゲストソフトウェアの実行中にゲストソフトウェアの特権レベルが特権レベル目標値よりも小さければ、1つのVM終了を生じさせるべきであることを指示する。一実施形態では、実行制御は、複数の特権レベル目標値及び対応の複数の特権レベル下限値制御を有することができる。その他の一実施形態では、特権レベル目標値が、最も低い特権レベルに設定されていれば、より少ない特権を持つ1つの状態への移行を生じさせないことができ、これにより、1つの権限付与制御を用いることなく、制御を効果的に利用不可能にする。
図7は、1つの仮想マシン環境内でゲストソフトウェアの特権レベルに基づいてゲストソフトウェアから1つのVMMへ移行する1つの処理の一実施形態を示す1つの流れ図である。図示の実施形態では、現在の特権レベルがPLTVよりも大きければ、1つのVM終了が、ゲストソフトウェアの特権レベルと1つの特権レベル上限値制御(PLCVC)の値とに基づいて生じる。図7では、1つのVMエントリ要求をVMM112から受信するときに(ブロック720)、処理を開始する(ブロック710)。例えば、システムなどの状態をロードするといった、複数のVMエントリ検査を実行する(ブロック730)。1つのPLCVCが利用可能でなければ(ブロック740)、1つのゲスト命令を実行する(ブロック750)。ゲストソフトウェアのCPLを評価した後、PLCVCが利用可能であり(ブロック740)、CPLがPLTVを超えていれば(ブロック760)、VM終了が制御をVMM112へ移行させ(ブロック770)、処理を終了する(ブロック780)。CPLがPLTVを超えていなければ(ブロック760)、1つのゲスト命令を実行する(ブロック750)。
実際には、1つのウォッチドッグタイマの使用を必要とする場合がある。その理由は、時々、複数のオペレーティングシステムが、複数のドライバスレッドを実行する複数の長期間、カーネルモードで居続けるためである。図8は、1つの仮想マシン環境内で割り込みスケジューリングを実行する1つの処理の一実施形態を示す1つの流れ図である。図8では、現在のVM(CVM)を割り込ませる必要があるかを処理ロジックが決定するときに(ブロック810)、処理を開始する(ブロック805)。処理ロジックは、CVMが1つの仮想システムの一部であるかを決定する(ブロック815)。CVMが1つの特権モード(PM)でなければ(ブロック820)、CVMを割り込ませ(ブロック825)、処理を終了する(ブロック830)。CVMが1つのPMであれば(ブロック820)、1つのウォッチドッグタイマ(WDT)をセットアップする(ブロック835)。次に、CVMが特権モードでないときに複数のVM終了を生じさせるように特権レベル終了制御(PLEC)を適切に設定する(ブロック840)。次に、処理ロジックは制御をCVMへ移行する(ブロック845)。1つのVM終了に続いてVMM112が制御をCVMから受信する。(ブロック850)
VM終了が1つのWDTによるものであったら(ブロック855)、CVMを割り込ませ(ブロック825)、処理を終了する(ブロック830)。VM終了が1つのWDTによるものでなかったら(ブロック855)、VM終了を処理し(ブロック860)、CVMが1つのPMでないかを処理ロジックが決定する(ブロック865)。CVMが1つのPMでなければ(ブロック865)、CVMを割り込ませ(ブロック825)、処理を終了する(ブロック830)。CVMが1つのPMであれば(ブロック865)、PLECを設定し(ブロック840)、制御をCVMへ移行し(ブロック845)し、WDT及びPLECが引き続き有効である。
その他の一実施形態では、1つの第1レベルから1つの第4レベルへ、また、1つの第3レベルから1つの第2レベルへのような複数の特権レベル間における複数の特定の移行の際に複数のVM終了を生じさせるために複数の制御が用いられる。例えば、4つの特権レベルを有する1つのISAでは、複数のVM終了を生じさせるため、複数のソース及びデスティネーション特権レベルの12個の実現可能な組み合わせのいずれかをVMMに選択させるのに12個の制御を用いることができる。一実施形態では、複数の特権レベルの組み合わせの外積全部に満たない制御を用いることができる。複数の制御を、ここでは、複数の特権レベルソースデスティネーション終了制御(PLSDEC)と称する。
一実施形態では、特権レベルの複数の移行を生じさせることができるすべての事象及び命令に対して複数の実行制御を用いて、特権レベルのこのようなすべての変化の制御を1つのVMM112に回復させる。この代案は、1つの特定の命令実行が実際に1つの特権レベル変化を生じさせたかを決定する追加の支援をVMM112で必要とする場合がある。例えば、1つのISAでは、1つの割り込み復帰命令(IRET)は1つの特権レベル変化を生じさせることができるが、あらゆる場合ではない。1つのIRET命令の実行が特権レベルを変化させたかどうかに関係なく、この命令の実行が1つのVM終了を無条件に生じさせる場合、命令が1つの特権レベル変化を生じさせたかを決定するためにVMMが命令をエミュレートし、または別の方法でシングルステップする必要がある場合がある。IRETをエミュレートするといった追加の複数の命令をVMMソフトウェア上に配置して、フォールトを起こす命令が待望の特権レベル変化を生じさせたかを決定できる。
複数の特権レベル変化を生じさせる幾つかの動作または事象は、その他の複数の理由により複数のVM終了を生じさせる場合がある。これらのその他の複数のVM終了理由の優先順位を高くでき、あるいは、このような1つの命令の実行に続いて特権レベル終了基準を評価する前にVM終了理由を評価できる。この場合、VMMは、VM終了を生じさせる事象または命令が1つの特権レベル変化をも生じさせるかということを決定できる。例えば、1つの仮想化アーキテクチャは、複数のソフトウェア(SW)割り込み命令の実行で複数のVM終了を生じさせるように1つの実行制御を1つのVMMに設定させることができる。ユーザーレベルコードにおいて1つのSW割り込み命令の実行は、1つの特権レベル変化を生じさせることができる。複数のVM終了を生じさせるように複数の特権レベル変化を設定すると同時に複数のSW割り込み命令を実行する場合、複数のVM終了を生じさせるように複数の実行制御を構成できる。このことが生じると、SW割り込みにより生じたVM終了を、SW割り込み命令の実行中、最初に評価でき、これにより、特権レベルの変化前に1つのVM終了を生じさせることができる。この場合、SW割り込み終了条件は、事実上フォールトを起こし、命令の実行の完了前に評価され、一方、特権レベル変化は、事実上トラップし、命令の完了に続いて評価される。一実施形態では、事実上、複数のVM終了源をトラップでき、事実上、複数のVM終了源にフォールトを起こすことができる。特権レベル終了基準の評価の優先順位を、その他のいずれかの、またはその他のすべてのVM終了源よりも高く、あるいは低くすることができる。
上記の明細書中、説明のため、多数の具体的な詳細を、本発明の充分な理解を得るように示した。しかし、当業者にとって、これらの具体的な詳細を用いず、本発明を実施できること明らかである。
本発明の一実施形態を実現できる1つの処理システムの一実施形態を1つのブロック図に示す。 本発明の一実施形態に従って特権レベルの増大及び減少に別々の制御を用いる特権レベル終了制御に対する1つの処理を1つのフローチャートに示す。 本発明の一実施形態に従って特権レベルの増大及び減少に複数の組み合わせ制御を用いる特権レベル終了制御に対する1つの処理を1つのフローチャートに示す。 本発明の一実施形態に従って特権レベル変化を検出する1つの処理を1つのフローチャートに示す。 本発明の一実施形態に従って非同期的な事象を処理する1つの方法を1つのフローチャートに示す。 1つの仮想マシン環境内でゲストソフトウェアの特権レベルに基づいてゲストソフトウェアから1つの仮想マシンモニタへ移行する1つの処理の一実施形態を1つのフローチャートに示す。 1つの仮想マシン環境内でゲストソフトウェアの特権レベルに基づいてゲストソフトウェアから1つの仮想マシンモニタへ移行する1つの処理の一実施形態を1つのフローチャートに示す。 1つの仮想マシン環境内で割り込みスケジューリングを実行する1つの処理の一実施形態を1つのフローチャートに示す。
符号の説明
100 仮想マシン環境
116 プラットフォームハードウェア
112 VMM
118 プロセッサ
120 メモリ
124 特権レベル監視ロジック

Claims (58)

  1. 1つの仮想マシン内で実行している1つのゲストソフトウェアの1つの現在の特権レベルを評価する工程と、
    前記現在の特権レベルが1つの特権レベル終了基準に合えば、制御を1つの仮想マシンモニタへ移行する工程と
    を具える方法。
  2. 請求項1の前記方法であって、前記特権レベル終了基準を1つの仮想マシン制御構造体内に記憶する工程を更に具える方法。
  3. 請求項1の前記方法であって、
    1つの初期特権レベルを決定する工程と、
    1つの特権レベル変化終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルと異なっていれば、制御を前記仮想マシンモニタへ移行する工程と
    を更に具える方法。
  4. 請求項1の前記方法であって、
    1つの初期特権レベルを決定する工程と、
    1つの特権レベル増大終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルよりも多くの特権を持つならば、制御を前記仮想マシンモニタへ移行する工程と
    を更に具える方法。
  5. 請求項1の前記方法であって、
    1つの初期特権レベルを決定する工程と、
    1つの特権レベル減少終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルよりも少ない特権を持つならば、制御を前記仮想マシンモニタへ移行する工程と
    を更に具える方法。
  6. 請求項1の前記方法であって、
    1つの初期特権レベルを決定する工程と、
    前記初期特権レベルから前記現在の特権レベルへの1つの移行と関連付けられた1つの特権レベルソースデスティネーション終了制御が利用可能であれば、制御を前記仮想マシンモニタへ移行する工程と
    を更に具える方法。
  7. 請求項1の前記方法であって、1つの目標特権レベルを記憶する工程を更に具える方法。
  8. 請求項7の前記方法であって、
    1つの特権レベル整合終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルと同じであれば、制御を前記仮想マシンモニタへ移行する工程を更に具える方法。
  9. 請求項7の前記方法であって、
    1つの特権レベル上限終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルよりも多くの特権を持つならば、制御を前記仮想マシンモニタへ移行する工程を更に具える方法。
  10. 請求項7の前記方法であって、
    1つの特権レベル下限終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルよりも少ない特権を持つならば、制御を前記仮想マシンモニタへ移行する工程を更に具える方法。
  11. 請求項7の前記方法において、前記目標特権レベルが可変である方法。
  12. 請求項7の前記方法において、前記目標特権レベルが一定である方法。
  13. 請求項1の前記方法であって、前記ゲストソフトウェアにおける1つの命令の実行前に制御を前記仮想マシンモニタへ移行する工程を更に具える方法。
  14. 請求項1の前記方法であって、前記ゲストソフトウェアにおける1つの命令の実行後に制御を前記仮想マシンモニタへ移行する工程を更に具える方法。
  15. 1つの記憶媒体内に存在する1つの命令セットであって、データを処理する1つの方法を実施するために1つのプロセッサにより実行できる前記命令セットにおいて、前記方法が、
    1つの仮想マシン内で実行している1つのゲストソフトウェアの1つの現在の特権レベルを評価する工程と、
    前記現在の特権レベルが1つの特権レベル終了基準に合えば、制御を1つの仮想マシンモニタへ移行する工程と
    を具える命令セット。
  16. 請求項15の前記命令セットであって、前記特権レベル終了基準を1つの仮想マシン制御構造体内に記憶する工程を更に具える命令セット。
  17. 請求項15の前記命令セットであって、
    1つの初期特権レベルを決定する工程と、
    1つの特権レベル変化終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルと異なっていれば、制御を前記仮想マシンモニタへ移行する工程と
    を更に具える命令セット。
  18. 請求項15の前記命令セットであって、
    1つの初期特権レベルを決定する工程と、
    1つの特権レベル増大終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルよりも多くの特権を持つならば、制御を前記仮想マシンモニタへ移行する工程と
    を更に具える命令セット。
  19. 請求項15の前記命令セットであって、
    1つの初期特権レベルを決定する工程と、
    1つの特権レベル減少終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルよりも少ない特権を持つならば、制御を前記仮想マシンモニタへ移行する工程と
    を更に具える命令セット。
  20. 請求項15の前記命令セットであって、
    1つの初期特権レベルを決定する工程と、
    前記初期特権レベルから前記現在の特権レベルへの1つの移行と関連付けられた1つの特権レベルソースデスティネーション終了制御が利用可能であれば、制御を前記仮想マシンモニタへ移行する工程と
    を更に具える命令セット。
  21. 請求項15の前記命令セットであって、1つの目標特権レベルを記憶する工程を更に具える命令セット。
  22. 請求項21の前記命令セットであって、
    1つの特権レベル整合終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルと同じであれば、制御を前記仮想マシンモニタへ移行する工程を更に具える命令セット。
  23. 請求項21の前記命令セットであって、
    1つの特権レベル上限終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルよりも多くの特権を持つならば、制御を前記仮想マシンモニタへ移行する工程を更に具える命令セット。
  24. 請求項21の前記命令セットであって、
    1つの特権レベル下限終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルよりも少ない特権を持つならば、制御を前記仮想マシンモニタへ移行する工程を更に具える命令セット。
  25. 請求項21の前記命令セットにおいて、前記目標特権レベルが可変である命令セット。
  26. 請求項21の前記命令セットにおいて、前記目標特権レベルが一定である命令セット。
  27. 請求項15の前記命令セットであって、前記ゲストソフトウェアにおける1つの命令の実行前に制御を前記仮想マシンモニタへ移行する工程を更に具える命令セット。
  28. 請求項15の前記命令セットであって、前記ゲストソフトウェアにおける1つの命令の実行後に制御を前記仮想マシンモニタへ移行する工程を更に具える命令セット。
  29. 1つの仮想マシン内で実行している1つのゲストソフトウェアの1つの現在の特権レベルを評価するための1つの第1ロジックであって、前記現在の特権レベルが1つの特権レベル終了基準に合えば、制御を1つの仮想マシンモニタへ移行するための前記第1ロジックを具える1つのプロセッサ。
  30. 請求項29の前記プロセッサにおいて、前記第1ロジックが1つの初期特権レベルを決定し、1つの特権レベル変化終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルと異なっていれば、前記第1ロジックが制御を前記仮想マシンモニタへ移行するようになっているプロセッサ。
  31. 請求項29の前記プロセッサにおいて、前記第1ロジックが1つの初期特権レベルを決定し、1つの特権レベル増大終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルよりも多くの特権を持つならば、前記第1ロジックが制御を前記仮想マシンモニタへ移行するようになっているプロセッサ。
  32. 請求項29の前記プロセッサにおいて、前記第1ロジックが1つの初期特権レベルを決定し、1つの特権レベル減少終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルよりも少ない特権を持つならば、前記第1ロジックが制御を前記仮想マシンモニタへ移行するようになっているプロセッサ。
  33. 請求項29の前記プロセッサにおいて、前記第1ロジックが1つの初期特権レベルを決定し、前記初期特権レベルから前記現在の特権レベルへの1つの移行と関連付けられた1つの特権レベルソースデスティネーション終了制御が利用可能であれば、前記第1ロジックが制御を前記仮想マシンモニタへ移行するようになっているプロセッサ。
  34. 請求項29の前記プロセッサにおいて、前記第1ロジックが1つの目標特権レベルを記憶し、1つの特権レベル整合終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルと同じであれば、前記第1ロジックが制御を前記仮想マシンモニタへ移行するようになっているプロセッサ。
  35. 請求項29の前記プロセッサにおいて、前記第1ロジックが1つの目標特権レベルを記憶し、1つの特権レベル上限終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルよりも多くの特権を持つならば、前記第1ロジックが制御を前記仮想マシンモニタへ移行するようになっているプロセッサ。
  36. 請求項29の前記プロセッサにおいて、前記第1ロジックが1つの目標特権レベルを記憶し、1つの特権レベル下限終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルよりも少ない特権を持つならば、前記第1ロジックが制御を前記仮想マシンモニタへ移行するようになっているプロセッサ。
  37. 1つのゲストソフトウェアを実行するために1つの仮想マシンを実施する1つのプロセッサと、
    前記ゲストソフトウェアの1つの第1命令を記憶するために前記プロセッサに結合された1つのメモリとを具える1つのシステムであって、
    前記プロセッサが、1つの仮想マシン内で実行している1つのゲストソフトウェアの1つの現在の特権レベルを評価し、前記現在の特権レベルが1つの特権レベル終了基準に合えば、前記プロセッサが制御を1つの仮想マシンモニタへ移行するようになっているシステム。
  38. 請求項37の前記システムにおいて、前記メモリが前記特権レベル終了基準を1つの仮想マシン制御構造体内に記憶するようになっているシステム。
  39. 請求項37の前記システムにおいて、前記プロセッサが1つの初期特権レベルを決定し、1つの特権レベル変化終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルと異なっていれば、前記プロセッサが制御を前記仮想マシンモニタへ移行するようになっているシステム。
  40. 請求項37の前記システムにおいて、前記プロセッサが1つの初期特権レベルを決定し、1つの特権レベル増大終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルよりも多くの特権を持つならば、前記プロセッサが制御を前記仮想マシンモニタへ移行することになっているシステム。
  41. 請求項37の前記システムにおいて、前記プロセッサが1つの初期特権レベルを決定し、1つの特権レベル減少終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルよりも少ない特権を持つならば、前記プロセッサが制御を前記仮想マシンモニタへ移行することになっているシステム。
  42. 請求項37の前記システムにおいて、前記プロセッサが1つの初期特権レベルを決定し、前記初期特権レベルから前記現在の特権レベルへの1つの移行と関連付けられた1つの特権レベルソースデスティネーション終了制御が利用可能であれば、前記プロセッサが制御を前記仮想マシンモニタへ移行することになっているシステム。
  43. 請求項37の前記システムにおいて、前記メモリが1つの目標特権レベルを記憶するようになっているシステム。
  44. 請求項43の前記システムにおいて、1つの特権レベル整合終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルと同じであれば、前記プロセッサが制御を前記仮想マシンモニタへ移行するようになっているシステム。
  45. 請求項43の前記システムにおいて、1つの特権レベル上限終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルよりも多くの特権を持つならば、前記プロセッサが制御を前記仮想マシンモニタへ移行するようになっているシステム。
  46. 請求項43の前記システムにおいて、1つの特権レベル下限終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルよりも少ない特権を持つならば、前記プロセッサが制御を前記仮想マシンモニタへ移行するようになっているシステム。
  47. 請求項43の前記システムにおいて、前記目標特権レベルが可変であるシステム。
  48. 請求項43の前記システムにおいて、前記目標特権レベルが一定であるシステム。
  49. 請求項37の前記システムにおいて、前記ゲストソフトウェアにおける1つの命令の実行前に制御が前記仮想マシンモニタへ移行するようになっているシステム。
  50. 請求項37の前記システムにおいて、前記ゲストソフトウェアにおける1つの命令の実行後に制御が前記仮想マシンモニタへ移行するようになっているシステム。
  51. 1つの仮想マシン内で実行している1つのゲストソフトウェアの1つの現在の特権レベルを評価する1つの第1手段と、
    前記現在の特権レベルが1つの特権レベル終了基準に合えば、制御を1つの仮想マシンモニタへ移行する1つの第2手段と
    を具える1つの装置。
  52. 請求項51の前記装置であって、
    1つの初期特権レベルを決定する1つの第3手段と、
    1つの特権レベル変化終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルと異なっていれば、制御を前記仮想マシンモニタへ移行する1つの第4手段と
    を更に具える装置。
  53. 請求項51の前記装置であって、
    1つの初期特権レベルを決定する1つの第3手段と、
    1つの特権レベル増大終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルよりも多くの特権を持つならば、制御を前記仮想マシンモニタへ移行する1つの第4手段と
    を更に具える装置。
  54. 請求項51の前記装置であって、
    1つの初期特権レベルを決定する1つの第3手段と、
    1つの特権レベル減少終了制御が利用可能であり、前記現在の特権レベルが前記初期特権レベルよりも少ない特権を持つならば、制御を前記仮想マシンモニタへ移行する1つの第4手段と
    を更に具える装置。
  55. 請求項51の前記装置であって、
    1つの初期特権レベルを決定する1つの第3手段と、
    前記初期特権レベルから前記現在の特権レベルへの1つの移行と関連付けられた1つの特権レベルソースデスティネーション終了制御が利用可能であれば、制御を前記仮想マシンモニタへ移行する1つの第4手段と
    を更に具える装置。
  56. 請求項51の前記装置であって、
    1つの目標特権レベルを記憶する1つの第3手段と、
    1つの特権レベル整合終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルと同じであれば、制御を前記仮想マシンモニタへ移行する1つの第4手段と
    を更に具える装置。
  57. 請求項51の前記装置であって、
    1つの目標特権レベルを記憶する1つの第3手段と、
    1つの特権レベル上限終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルよりも多くの特権を持つならば、制御を前記仮想マシンモニタへ移行する1つの第4手段と
    を更に具える装置。
  58. 請求項51の前記装置であって、
    1つの目標特権レベルを記憶する1つの第3手段と、
    1つの特権レベル下限終了制御が利用可能であり、前記現在の特権レベルが前記目標特権レベルよりも少ない特権を持つならば、制御を前記仮想マシンモニタへ移行する1つの第4手段と
    を更に具える装置。
JP2005181228A 2004-06-28 2005-06-21 ゲストソフトウェアの特権レベルに基づく1つの仮想マシンモニタへの移行の支援 Active JP4291301B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/880,057 US7802250B2 (en) 2004-06-28 2004-06-28 Support for transitioning to a virtual machine monitor based upon the privilege level of guest software

Publications (2)

Publication Number Publication Date
JP2006024207A true JP2006024207A (ja) 2006-01-26
JP4291301B2 JP4291301B2 (ja) 2009-07-08

Family

ID=35115791

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005181228A Active JP4291301B2 (ja) 2004-06-28 2005-06-21 ゲストソフトウェアの特権レベルに基づく1つの仮想マシンモニタへの移行の支援

Country Status (5)

Country Link
US (1) US7802250B2 (ja)
EP (1) EP1612669A3 (ja)
JP (1) JP4291301B2 (ja)
KR (1) KR100726317B1 (ja)
CN (2) CN100481009C (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010503115A (ja) * 2006-09-22 2010-01-28 インテル コーポレイション 仮想マシン環境におけるゲスト間での情報の共有
JP2010118044A (ja) * 2008-09-30 2010-05-27 Intel Corp 低減された電力消費状態においてコンピュータタスクを行う方法およびシステム

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352400B2 (en) 1991-12-23 2013-01-08 Hoffberg Steven M Adaptive pattern recognition based controller apparatus and method and human-factored interface therefore
US7966078B2 (en) 1999-02-01 2011-06-21 Steven Hoffberg Network media appliance system and method
DE602004027516D1 (de) * 2004-12-03 2010-07-15 St Microelectronics Srl Ein Verfahren zum Verwalten von virtuellen Maschinen in einer körperlichen Verarbeitungsmaschine, ein entsprechendes Prozessorsystem und Computerprogrammprodukt dafür
US8214830B2 (en) * 2005-01-19 2012-07-03 Intel Corporation Performance in a virtualization architecture with a processor abstraction layer
US7761674B2 (en) * 2005-12-30 2010-07-20 Intel Corporation Identifier associated with memory locations for managing memory accesses
US8839450B2 (en) * 2007-08-02 2014-09-16 Intel Corporation Secure vault service for software components within an execution environment
US7953980B2 (en) * 2005-06-30 2011-05-31 Intel Corporation Signed manifest for run-time verification of software program identity and integrity
GB2447154B (en) * 2005-10-04 2009-05-27 Nec Corp Information processing device, information processing method, and program
US8042109B2 (en) * 2006-03-21 2011-10-18 Intel Corporation Framework for domain-specific run-time environment acceleration using virtualization technology
DE102006029756A1 (de) 2006-06-27 2008-01-03 Deutsche Telekom Ag Verfahren zum Delegieren von Privilegien an eine niedriger-priviligierte Instanz durch eine höher-priviligierte Instanz
US8234641B2 (en) 2006-10-17 2012-07-31 Managelq, Inc. Compliance-based adaptations in managed virtual systems
US8234640B1 (en) 2006-10-17 2012-07-31 Manageiq, Inc. Compliance-based adaptations in managed virtual systems
US8458695B2 (en) * 2006-10-17 2013-06-04 Manageiq, Inc. Automatic optimization for virtual systems
US8612971B1 (en) 2006-10-17 2013-12-17 Manageiq, Inc. Automatic optimization for virtual systems
US9015703B2 (en) * 2006-10-17 2015-04-21 Manageiq, Inc. Enforcement of compliance policies in managed virtual systems
US9086917B1 (en) 2006-10-17 2015-07-21 Manageiq, Inc. Registering and accessing virtual systems for use in a managed system
US9697019B1 (en) 2006-10-17 2017-07-04 Manageiq, Inc. Adapt a virtual machine to comply with system enforced policies and derive an optimized variant of the adapted virtual machine
US9038062B2 (en) 2006-10-17 2015-05-19 Manageiq, Inc. Registering and accessing virtual systems for use in a managed system
US8949825B1 (en) 2006-10-17 2015-02-03 Manageiq, Inc. Enforcement of compliance policies in managed virtual systems
US8752045B2 (en) 2006-10-17 2014-06-10 Manageiq, Inc. Methods and apparatus for using tags to control and manage assets
US8949826B2 (en) * 2006-10-17 2015-02-03 Managelq, Inc. Control and management of virtual systems
CN101206582B (zh) * 2006-12-22 2010-10-06 联想(北京)有限公司 一种虚拟机系统及其处理方法
US7996836B1 (en) * 2006-12-29 2011-08-09 Symantec Corporation Using a hypervisor to provide computer security
US8380987B2 (en) * 2007-01-25 2013-02-19 Microsoft Corporation Protection agents and privilege modes
US7765374B2 (en) 2007-01-25 2010-07-27 Microsoft Corporation Protecting operating-system resources
JP4987555B2 (ja) * 2007-04-27 2012-07-25 株式会社東芝 情報処理装置、および情報処理システム
US20090007100A1 (en) * 2007-06-28 2009-01-01 Microsoft Corporation Suspending a Running Operating System to Enable Security Scanning
US8078827B2 (en) * 2007-07-05 2011-12-13 International Business Machines Corporation Method and apparatus for caching of page translations for virtual machines
US8739156B2 (en) * 2007-07-24 2014-05-27 Red Hat Israel, Ltd. Method for securing the execution of virtual machines
US8146098B2 (en) * 2007-09-07 2012-03-27 Manageiq, Inc. Method and apparatus for interfacing with a computer user via virtual thumbnails
US8099718B2 (en) 2007-11-13 2012-01-17 Intel Corporation Method and system for whitelisting software components
US8418173B2 (en) 2007-11-27 2013-04-09 Manageiq, Inc. Locating an unauthorized virtual machine and bypassing locator code by adjusting a boot pointer of a managed virtual machine in authorized environment
US8407688B2 (en) 2007-11-27 2013-03-26 Managelq, Inc. Methods and apparatus for storing and transmitting historical configuration data associated with information technology assets
WO2009097610A1 (en) * 2008-02-01 2009-08-06 Northeastern University A vmm-based intrusion detection system
US8364601B2 (en) * 2008-12-31 2013-01-29 Intel Corporation Methods and systems to directly render an image and correlate corresponding user input in a secure memory domain
US7970963B2 (en) * 2009-06-29 2011-06-28 Oracle America, Inc. Efficient buffer management in a multi-threaded network interface
CN101710301B (zh) * 2009-10-20 2011-08-31 中国电信股份有限公司 评估crm系统物理服务器虚拟化能力的方法及系统
US10521231B2 (en) * 2010-06-24 2019-12-31 International Business Machines Corporation Function virtualization facility for blocking instruction function of a multi-function instruction of a virtual processor
US9851969B2 (en) 2010-06-24 2017-12-26 International Business Machines Corporation Function virtualization facility for function query of a processor
US8819677B2 (en) 2010-11-23 2014-08-26 International Business Machines Corporation Virtual machine data structures corresponding to nested virtualization levels
JP5813554B2 (ja) * 2012-03-30 2015-11-17 ルネサスエレクトロニクス株式会社 半導体装置
US9223602B2 (en) * 2012-12-28 2015-12-29 Intel Corporation Processors, methods, and systems to enforce blacklisted paging structure indication values
US9396011B2 (en) 2013-03-12 2016-07-19 Qualcomm Incorporated Algorithm and apparatus to deploy virtual machine monitor on demand
US9330035B2 (en) * 2013-05-23 2016-05-03 Arm Limited Method and apparatus for interrupt handling
US9652631B2 (en) * 2014-05-05 2017-05-16 Microsoft Technology Licensing, Llc Secure transport of encrypted virtual machines with continuous owner access
US9772868B2 (en) * 2014-09-16 2017-09-26 Industrial Technology Research Institute Method and system for handling interrupts in a virtualized environment
US9519787B2 (en) 2014-11-14 2016-12-13 Microsoft Technology Licensing, Llc Secure creation of encrypted virtual machines from encrypted templates
US9921984B2 (en) * 2014-12-23 2018-03-20 Intel Corporation Delivering interrupts to user-level applications
US9934061B2 (en) * 2015-12-28 2018-04-03 International Business Machines Corporation Black box techniques for detecting performance and availability issues in virtual machines
US10740134B2 (en) 2018-08-20 2020-08-11 Interwise Ltd. Agentless personal network firewall in virtualized datacenters
US20220283813A1 (en) * 2021-03-02 2022-09-08 Intel Corporation Flexible return and event delivery
US11726811B2 (en) * 2021-06-18 2023-08-15 Vmware, Inc. Parallel context switching for interrupt handling
US11652800B1 (en) 2022-10-03 2023-05-16 Uab 360 It Secure connections between servers in a virtual private network

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4787031A (en) * 1985-01-04 1988-11-22 Digital Equipment Corporation Computer with virtual machine mode and multiple protection rings
AU2002231073A1 (en) 2000-12-21 2002-07-01 Connectix Corporation Logical substitution of processor control in an emulated computing environment
US7818808B1 (en) * 2000-12-27 2010-10-19 Intel Corporation Processor mode for limiting the operation of guest software running on a virtual machine supported by a virtual machine monitor
US6907600B2 (en) * 2000-12-27 2005-06-14 Intel Corporation Virtual translation lookaside buffer
US7035963B2 (en) * 2000-12-27 2006-04-25 Intel Corporation Method for resolving address space conflicts between a virtual machine monitor and a guest operating system
US7210144B2 (en) 2002-08-02 2007-04-24 Microsoft Corporation Method for monitoring and emulating privileged instructions of programs in a virtual machine
US20040117532A1 (en) 2002-12-11 2004-06-17 Bennett Steven M. Mechanism for controlling external interrupts in a virtual machine system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010503115A (ja) * 2006-09-22 2010-01-28 インテル コーポレイション 仮想マシン環境におけるゲスト間での情報の共有
JP2010118044A (ja) * 2008-09-30 2010-05-27 Intel Corp 低減された電力消費状態においてコンピュータタスクを行う方法およびシステム
US8910169B2 (en) 2008-09-30 2014-12-09 Intel Corporation Methods and systems to perform a computer task in a reduced power consumption state

Also Published As

Publication number Publication date
KR100726317B1 (ko) 2007-06-11
US20050289542A1 (en) 2005-12-29
CN100481009C (zh) 2009-04-22
JP4291301B2 (ja) 2009-07-08
EP1612669A2 (en) 2006-01-04
CN1716206A (zh) 2006-01-04
US7802250B2 (en) 2010-09-21
CN101493785A (zh) 2009-07-29
CN101493785B (zh) 2014-06-18
KR20060048597A (ko) 2006-05-18
EP1612669A3 (en) 2007-11-07

Similar Documents

Publication Publication Date Title
JP4291301B2 (ja) ゲストソフトウェアの特権レベルに基づく1つの仮想マシンモニタへの移行の支援
US11847206B2 (en) Technologies for untrusted code execution with processor sandbox support
JP4564536B2 (ja) 仮想マシンモニタに関連するタイマへのサポートを提供する方法及び装置
EP1524596B1 (en) Systems and methods for using synthetic instructions in a virtual machine
US9244712B2 (en) Virtualizing performance counters
US8230203B2 (en) Detecting spin loops in a virtual machine environment
US10140448B2 (en) Systems and methods of asynchronous analysis of event notifications for computer security applications
US8151264B2 (en) Injecting virtualization events in a layered virtualization architecture
US8291410B2 (en) Controlling virtual machines based on activity state
US10409633B2 (en) Hypervisor-visible guest thread management
KR20080020639A (ko) 가상화 플랫폼, 콘텍스트 스위칭의 최적화 방법 및 머신판독 가능한 매체
Nakajima et al. Temporal and spatial isolation in a virtualization layer for multi-core processor based information appliances
Li et al. A light-weighted virtualization layer for multicore processor-based rich functional embedded systems
Ferstay Fast secure virtualization for the arm platform
Mitake et al. Towards co-existing of Linux and real-time OSes
Poon et al. Bounding the running time of interrupt and exception forwarding in recursive virtualization for the x86 architecture
US12086456B2 (en) Switching memory consistency models in accordance with execution privilege level
Mitake et al. Light-weighted virtualization layer for multicore processor-based embedded systems
WO2024050447A1 (en) Process credential protection
CN113268726A (zh) 程序代码执行行为的监控方法、计算机设备
Zhu An Operating System Machine

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071002

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071225

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080826

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081125

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081218

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090126

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090402

R150 Certificate of patent or registration of utility model

Ref document number: 4291301

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120410

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120410

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130410

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130410

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140410

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250