JP4688862B2 - Providing support for single step functionality of virtual machines in virtual machine environments - Google Patents

Providing support for single step functionality of virtual machines in virtual machine environments Download PDF

Info

Publication number
JP4688862B2
JP4688862B2 JP2007502123A JP2007502123A JP4688862B2 JP 4688862 B2 JP4688862 B2 JP 4688862B2 JP 2007502123 A JP2007502123 A JP 2007502123A JP 2007502123 A JP2007502123 A JP 2007502123A JP 4688862 B2 JP4688862 B2 JP 4688862B2
Authority
JP
Japan
Prior art keywords
vmm
control
fault
single step
transfer
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
JP2007502123A
Other languages
Japanese (ja)
Other versions
JP2007525776A (en
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.)
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 JP2007525776A publication Critical patent/JP2007525776A/en
Application granted granted Critical
Publication of JP4688862B2 publication Critical patent/JP4688862B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • 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/45579I/O management, e.g. providing access to device drivers or storage
    • 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/45591Monitoring or debugging support

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Stored Programmes (AREA)

Description

本発明の実施形態は、概して、仮想マシンに関する。本発明の実施形態は、特に、仮想マシン環境における仮想マシンのシングルステップ機能のサポートを提供することに関する。   Embodiments of the present invention generally relate to virtual machines. Embodiments of the present invention are particularly concerned with providing support for a single step function of a virtual machine in a virtual machine environment.

シングルステップ技術は、従来のオペレーティングシステム(OS)環境において、デバッガによって広く使用されている。特に、シングルステップ技術は、アプリケーションを一度に1命令ずつ進めることを目的として使用され、これによって、デバッガがアプリケーションをソースコード内の特定のポイントに置くことを可能にしている。シングルステップを可能にすることを目的として、種々の技法が使用されてきた。例えば、Intel(登録商標) Pentium(登録商標)4の命令セット・アーキテクチャ(ISA)(本明細書ではIA−32 ISAと呼ぶ)では、EFLAGSレジスタ内のトラップフラッグ(TF)は、デバッガがアプリケーションをシングルステップすることを可能にすることを目的として指定されている。TFビットが1に設定された場合、次の命令の完了後に、デバッグ例外が生成される。デバッガは、デバッグ例外の所有権を得た後に、(例:例外用のハンドラを作成し、デバッグ例外のイベントの際にハンドラが呼び出されるようにすることによって)TFビットを設定する。しかし、デバッグ例外は、次の命令が正常終了した場合にのみ生成される。次の命令の実行がフォルト(例:ページフォルト)を引き起こした場合は、デバッグ例外は生成されない。むしろ、例外は、ベクタ化され、EFLAGSレジスタビットの値を格納し、TFビットをクリアする。ハンドラが完了すると、TFビットの格納された値がリストアされ、命令が再実行される。再実行時にフォルトが生じない場合、デバッグ例外が生成される。
米国特許第5522075号明細書 米国特許第6397242号明細書 米国特許第6961806号明細書 米国特許第7111200号明細書 米国特許出願公開第2005/0081199号明細書 米国特許出願公開第2005/0076186号明細書 米国特許出願公開第2005/0091652号明細書 米国特許出願公開第2005/0223221号明細書
Single-step technology is widely used by debuggers in conventional operating system (OS) environments. In particular, single-step technology is used to advance an application one instruction at a time, thereby allowing the debugger to place the application at a specific point in the source code. Various techniques have been used to allow single step. For example, in the Intel® Pentium® 4 instruction set architecture (ISA) (referred to herein as the IA-32 ISA), the trap flag (TF) in the EFLAGS register allows the debugger to Specified to allow single-stepping. If the TF bit is set to 1, a debug exception is generated after completion of the next instruction. After the debugger gains ownership of the debug exception, the debugger sets the TF bit (eg, by creating a handler for the exception and causing the handler to be called in the event of a debug exception). However, a debug exception is generated only when the next instruction ends normally. If execution of the next instruction causes a fault (eg page fault), no debug exception is generated. Rather, the exception is vectorized, storing the value of the EFLAGS register bit and clearing the TF bit. When the handler is complete, the stored value of the TF bit is restored and the instruction is re-executed. If no fault occurs on re-execution, a debug exception is generated.
US Pat. No. 5,522,075 US Pat. No. 6,397,242 US Pat. No. 6,968,806 U.S. Pat. No. 7,111,200 US Patent Application Publication No. 2005/0081199 US Patent Application Publication No. 2005/0076186 US Patent Application Publication No. 2005/0091652 US Patent Application Publication No. 2005/0223221

本発明は、参照番号が同様の要素を指す添付図面を本発明の実施例として使用することにより説明され、添付図面は、本発明を限定するものではない。   The present invention is illustrated by the use of the accompanying drawings, in which reference numerals refer to similar elements, as examples of the invention, which are not intended to limit the invention.

本発明が動作しうる仮想マシン環境の一実施形態を示す図である。1 is a diagram illustrating an embodiment of a virtual machine environment in which the present invention can operate.

仮想マシン環境における仮想マシンのシングルステップ機能のサポートを提供する処理の一実施形態を示すフロー図である。FIG. 6 is a flow diagram illustrating one embodiment of a process for providing support for a virtual machine single step function in a virtual machine environment.

シングルステップ・インジケータがシングルステップ値に設定されたVM entry要求に応答する処理の一実施形態を示すフロー図である。FIG. 6 is a flow diagram illustrating one embodiment of a process for responding to a VM entry request with a single step indicator set to a single step value.

シングルステップより高い優先度を有するイベントを処理する処理の一実施形態を示すフロー図である。FIG. 6 is a flow diagram illustrating one embodiment of a process for processing an event having a higher priority than a single step.

一実施形態による、デバイスの仮想化を促進することを目的としてVMのシングルステップを使用する典型的な処理を示すフロー図である。FIG. 6 is a flow diagram illustrating an exemplary process using a single step of a VM to facilitate device virtualization, according to one embodiment.

仮想マシン環境において仮想マシンのシングルステップ機能のサポートを提供する方法および装置が説明される。以下の説明において、本発明を説明することを目的に、本発明の理解を提供するために多くの特定の詳細が提示される。しかし、当業者にとっては、これらの詳細を必要とすることなく本発明が実施可能であることは明白である。   A method and apparatus for providing support for single step functionality of a virtual machine in a virtual machine environment is described. In the following description, for the purposes of illustrating the present invention, numerous specific details are set forth in order to provide an understanding of the present invention. However, it will be apparent to one skilled in the art that the present invention may be practiced without these details.

以下の詳細な説明のいくつかの部分は、コンピュータシステムのレジスタまたはメモリ内のデータビットの操作に関するアルゴリズムおよび記号表現の形で説明される。これらのアルゴリズムの説明および表現は、データ処理分野の当業者によって、技術の内容の本質を他の当業者に最も効率的に伝えるために使用される方法である。アルゴリズムは、本明細書では、また一般的に、期待される結果に至る動作の自己矛盾無き順序であると考えられる。操作は、物理的な数量に対する物理的な操作を必要とするものである。通常、必ずしも必要ではないが、これらの数量は、格納、転送、結合、比較、および他の操作がされうる電気または磁気の信号の形態をとる。これらの信号を、ビット、値、要素、記号、文字、言葉、数字、またはそのような形で参照することは、主に広く使われていることを理由として、便利であることがたびたび証明されている。   Some portions of the detailed descriptions that follow are presented in terms of algorithms and symbolic representations of operations on data bits within a computer system register or memory. These algorithmic descriptions and representations are the methods used by those skilled in the data processing arts to most effectively convey the substance of their technology to others skilled in the art. Algorithms are also considered herein to be a self-consistent sequence of actions that lead to expected results. The operations are those requiring physical operations on physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. Referencing these signals in bits, values, elements, symbols, letters, words, numbers, or any such form has often proved useful, mainly because of their widespread use. ing.

しかし、上述および同様の用語は、適切な物理的な数量に関連付けられたものであって、これらの数量に適用される単に便利なラベルであると理解されるべきである。特に記述が無い限り、下記の説明から明白であるように、本発明に関する説明で使用される「処理」、「コンピューティング」、「計算」、「判定」、またはこれらに類似の言葉は、コンピュータシステムのレジスタおよびメモリ内の物理的な(電子的な)数量として表現されるデータを操作して、コンピュータシステムメモリまたはレジスタ、または、その他の情報を格納、転送、または表示するデバイス内の物理的な数量として同様に表現されるその他のデータに変換する、コンピュータシステムまたは同様の電子コンピューティングデバイスの動作および処理を指す。   However, it should be understood that the above and similar terms are associated with appropriate physical quantities and are merely convenient labels applied to these quantities. Unless otherwise stated, as will be apparent from the description below, the terms “processing”, “computing”, “calculation”, “determining”, or similar terms used in the description relating to the present invention are Physical in a device that manipulates data expressed as physical (electronic) quantities in system registers and memory to store, transfer, or display computer system memory or registers, or other information Refers to the operation and processing of a computer system or similar electronic computing device that translates into other data that is also expressed as a small quantity.

実施形態に関する以下の詳細な説明では、本発明を説明する手段として、本発明が実施されうる特定の実施形態を示す添付図面への参照がなされる。添付図面では、数字などは、いくつかの図において一貫して実質的に同様のコンポーネントを説明する。これらの実施形態は、当業者による本発明の実施を可能にするために十分な詳細まで説明される。本発明の範囲から逸脱することなく、他の実施形態が使用されてもよく、また、構造的、論理的、および電気的な変更が加えられてもよい。更に、本発明の種々の実施形態は、それぞれ異なっているが、必ずしも相互排他的ではないと理解されるべきである。例えば、一実施形態において説明される特定の機能、構造、または性質は、他の実施形態に含まれうる。このため、下記の詳細な説明は、本発明を限定するものとして理解されるものではなく、本発明の範囲は、添付の特許請求の範囲および特許請求の範囲の均等物の全ての範囲のみによって定義される。   In the following detailed description of the embodiments, reference is made to the accompanying drawings that show specific embodiments in which the invention can be practiced, as a means of describing the invention. In the accompanying drawings, numerals and the like describe components that are substantially similar throughout in several figures. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention. Other embodiments may be used and structural, logical, and electrical changes may be made without departing from the scope of the invention. Further, it should be understood that the various embodiments of the present invention are different but not necessarily mutually exclusive. For example, a particular function, structure, or property described in one embodiment can be included in other embodiments. The following detailed description is, therefore, not to be taken as limiting the invention, and the scope of the invention is limited only by the appended claims and the equivalents of the claims. Defined.

下記の例は、実行ユニットおよび論理回路と関連して、仮想マシンのシングルステップを説明するが、本発明の他の実施形態は、ソフトウェアによって実施されることができる。例えば、いくつかの実施形態では、本発明は、本発明による処理を実行することを目的としてコンピュータ(またはその他の電子デバイス)をプログラムするために使用されうる命令群が格納された、マシンまたはコンピュータ読み取り可能な媒体を含むコンピュータプログラム製品またはソフトウェアとして提供されてもよい。他の実施形態では、本発明の方法は、本発明の方法を実行することを目的とした、ハードウェアに制御された論理を含む特定のハードウェアコンポーネントによって、または、プログラムされたコンピュータコンポーネントおよびカスタム・ハードウェアコンポーネントの組み合わせによって実行されてもよい。   The following example describes a single step of a virtual machine in connection with execution units and logic circuits, but other embodiments of the invention can be implemented by software. For example, in some embodiments, the present invention provides a machine or computer that stores instructions that may be used to program a computer (or other electronic device) for the purpose of performing the processing according to the present invention. It may be provided as a computer program product or software that includes a readable medium. In other embodiments, the methods of the present invention may be implemented by specific hardware components that include hardware controlled logic or programmed computer components and customs intended to perform the methods of the present invention. -It may be executed by a combination of hardware components.

このように、マシン読み取り可能な媒体は、マシン(例:コンピュータ)によって読み取り可能な形態で情報を格納または送信する全ての機構を含んでもよい。これらの機構は、フロッピーディスク、光ディスク、コンパクト・ディスク・リード・オンリー・メモリ(CD−ROM)、および、磁気光ディスク、リード・オンリー・メモリ(ROM)、ランダム・アクセス・メモリ(RAM)、消去可能プログラマブル・リード・オンリー・メモリ(EPROM)、電気的消去可能リード・オンリー・メモリ(EEPROM)、磁気または光カード、フラッシュメモリ、インターネットによる転送、電気、光、音波、またはその他の形態の伝播信号(例:搬送波、赤外線信号、デジタル信号、など)などを含み、しかし、これらに限定されない。   Thus, machine-readable media may include any mechanism for storing or transmitting information in a form readable by a machine (eg, a computer). These mechanisms are floppy disk, optical disk, compact disk read only memory (CD-ROM), magnetic optical disk, read only memory (ROM), random access memory (RAM), erasable Programmable read-only memory (EPROM), electrically erasable read-only memory (EEPROM), magnetic or optical card, flash memory, Internet transfer, electrical, optical, acoustic, or other forms of propagation signals ( Example: carrier wave, infrared signal, digital signal, etc.), but not limited to.

更に、デザインは、創造からシミュレーション、そして製造に至る種々の段階を経てもよい。デザインを表すデータは、多くの方法によってデザインを表しうる。最初に、シミュレーションにおいて便利であるように、ハードウェアは、ハードウェア記述言語または他の機能記述言語を使用して表現されてもよい。更に、ロジックおよび/またはトランジスタゲートを有する回路レベルモデルは、デザインプロセスのいくつかの段階において作成されてもよい。また、多くのデザインは、いくつかの段階において、ハードウェアモデル内の種々のデバイスの物理的な配置を表すデータのレベルに到達する。従来の半導体製造技術が使用される場合、ハードウェアモデルをあらわすデータは、集積回路の製造に使用されるマスクの異なるマスクレイヤにおける種々の特徴の存在または不在を指定するデータであってもよい。全てのデザインの表現において、データは、いかなる形式のマシン読み取り可能な媒体に格納されてもよい。これらの情報を送信するために調節または生成される光波または電波、メモリ、または、ディスクのような磁気または光ストレージは、マシン読み取り可能な媒体であってもよい。これらの媒体の全ては、デザインまたはソフトウェア情報を「伝送」または「表現」してもよい。コードまたはデザインを表現または伝送する電気搬送波が送信されると、電気信号のコピー、バッファリング、または再送信が実行される形で、新規のコピーが作成される。このように、通信プロバイダまたはネットワークプロバイダは、本発明の技法を具体化する物(搬送波)のコピーを生成してもよい。   Furthermore, the design may go through various stages from creation to simulation and manufacturing. Data representing a design can represent the design in many ways. Initially, the hardware may be expressed using a hardware description language or other functional description language, as is convenient in simulation. In addition, circuit level models with logic and / or transistor gates may be created at several stages of the design process. Many designs also reach a level of data that represents the physical placement of various devices in the hardware model at some stage. When conventional semiconductor manufacturing techniques are used, the data representing the hardware model may be data specifying the presence or absence of various features in different mask layers of the mask used to manufacture the integrated circuit. In all design representations, the data may be stored on any form of machine-readable media. Light waves or radio waves that are adjusted or generated to transmit these information, magnetic or optical storage such as memory, or disks may be machine-readable media. All of these media may “transmit” or “represent” design or software information. When an electrical carrier that represents or transmits a code or design is transmitted, a new copy is created in such a way that copying, buffering, or retransmission of the electrical signal is performed. Thus, a communications provider or network provider may generate a copy of an object (carrier) that embodies the techniques of the present invention.

図1は、本発明が動作しうる仮想マシン環境100の一実施形態を示す図である。本実施形態では、最小限のプラットフォーム・ハードウェア116は、例えば、標準的なオペレーティングシステム(OS)またはVMM112のような仮想マシンモニタ(VMM)を実行することができるコンピュータプラットフォームを備える。   FIG. 1 is a diagram illustrating one embodiment of a virtual machine environment 100 in which the present invention can operate. In this embodiment, the minimal platform hardware 116 comprises a computer platform capable of running a standard operating system (OS) or a virtual machine monitor (VMM) such as the VMM 112, for example.

VMM112は、概してソフトウェアによって実装されるが、上位ソフトウェアに対して最小限のマシンインタフェースをエミュレートおよびエクスポートしてもよい。そのような上位ソフトウェアは、通常のまたはリアルタイムOSを含んでもよく、限定されたオペレーティングシステムの機能を有する大きく機能を取り除かれたオペレーティングシステムであってもよく、また、従来のOSの機能を有しなくてもよい。あるいは、例えば、VMM112は、他のVMMの中または上において実行されてもよい。VMMは、例えば、ハードウェア、ソフトウェア、ファームウェア、または種々の技法の組み合わせによって実装されてもよい。   The VMM 112 is generally implemented in software, but may emulate and export a minimal machine interface to the upper software. Such higher-level software may include a normal or real-time OS, may be a largely removed operating system having limited operating system functions, and may have conventional OS functions. It does not have to be. Alternatively, for example, the VMM 112 may be executed in or on another VMM. A VMM may be implemented, for example, by hardware, software, firmware, or a combination of various techniques.

プラットフォーム・ハードウェア116は、パーソナル・コンピュータ(PC)、メインフレーム、ハンドヘルド・デバイス、ポータブル・コンピュータ、セットアップ・ボックス、または他のいかなるコンピュータシステムであってもよい。プラットフォーム・ハードウェア116は、プロセッサ118およびメモリ120を有する。   Platform hardware 116 may be a personal computer (PC), mainframe, handheld device, portable computer, setup box, or any other computer system. Platform hardware 116 includes a processor 118 and memory 120.

プロセッサ118は、マイクロプロセッサ、デジタル信号プロセッサ、マイクロコントローラなどのような、ソフトウェアを実行することができるいかなるタイプのプロセッサであってもよい。プロセッサ118は、本発明の実施形態の方法を実行することを目的として、マイクロコード、プログラマブル・ロジック、またはハードウェアによって制御されたロジックを含んでもよい。図1は、プロセッサ118を1つだけ示しているが、システム内には1つ以上のプロセッサが存在してもよい。   The processor 118 may be any type of processor capable of executing software, such as a microprocessor, digital signal processor, microcontroller, and the like. The processor 118 may include microcode, programmable logic, or hardware controlled logic for the purpose of performing the methods of the embodiments of the present invention. Although FIG. 1 shows only one processor 118, there may be more than one processor in the system.

メモリ120は、ハードディスク、フロッピーディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、フラッシュメモリ、上記のデバイスの組み合わせ、またはプロセッサ118によって読み取り可能ないかなる他のタイプのマシン媒体であってもよい。メモリ120は、本発明の実施形態の方法を実行する命令群および/またはデータを格納してもよい。   Memory 120 may be a hard disk, floppy disk, random access memory (RAM), read only memory (ROM), flash memory, a combination of the above devices, or any other type of machine medium readable by processor 118. It may be. The memory 120 may store instructions and / or data that perform the methods of the embodiments of the invention.

VMM112は、1つ以上の仮想マシン(VM)のアブストラクションを他のソフトウェア(すなわち、「ゲスト」ソフトウェア)に対して提供する。1つ以上のVMは、種々のゲストに対して同一または異なるアブストラクションを提供しうる。図1は、2つのVM102および114を示す。各VMで実行されるゲストソフトウェアは、ゲストOS104または106のようなゲストOS、および、種々のゲストソフトウェア・アプリケーション108および110を含んでもよい。ゲストOS104および106のそれぞれは、ゲストOS104または106が実行される、VM102および114内の物理リソース(例:プロセッサ・レジスタ、メモリ、およびI/Oデバイス)にアクセスすること、および、他の機能を実行することを想定する。例えば、ゲストOSは、プロセッサのアーキテクチャおよびVMにおいて提供されるプラットフォームによって、全てのレジスタ、キャッシュ、ストラクチャ、I/Oデバイス、メモリなどへのアクセスを有すると想定する。ゲストソフトウェアによってアクセスされるこれらのリソースは、「特権的」または「非特権的」として分類されうる。特権的リソースついては、VMM112は、これらの特権的リソースの完全な制御を保持しつつ、ゲストソフトウェアによって要求される機能を容易にする。非特権的リソースは、VMM112によって制御される必要はなく、ゲストソフトウェアによってアクセスされることができる。   The VMM 112 provides one or more virtual machine (VM) abstractions to other software (ie, “guest” software). One or more VMs may provide the same or different abstractions for different guests. FIG. 1 shows two VMs 102 and 114. Guest software executed on each VM may include a guest OS, such as guest OS 104 or 106, and various guest software applications 108 and 110. Each of the guest OSs 104 and 106 has access to physical resources (eg, processor registers, memory, and I / O devices) in the VMs 102 and 114 on which the guest OS 104 or 106 is running, and other functions. Assume to execute. For example, assume that the guest OS has access to all registers, caches, structures, I / O devices, memory, etc., depending on the processor architecture and platform provided in the VM. These resources accessed by the guest software can be classified as “privileged” or “non-privileged”. For privileged resources, the VMM 112 facilitates the functions required by the guest software while maintaining full control of these privileged resources. Non-privileged resources do not need to be controlled by VMM 112 and can be accessed by guest software.

更に、各ゲストOSは、例外(例:ページフォルト、一般保護違反、など)、割り込み(例:ハードウェア割り込み、ソフトウェア割り込み)、およびプラットフォームイベント(例:初期化(INIT)およびシステムマネージメント割り込み(SMI))のような種々のイベントを処理することを想定する。これらのフォルトイベントのうちのいくつかは、VM102および114の正常な動作を保証すること、および、ゲストソフトウェアから保護することを目的として、VMM112によって処理される必要があるので、「特権的」である。   In addition, each guest OS has exceptions (eg, page faults, general protection violations, etc.), interrupts (eg, hardware interrupts, software interrupts), and platform events (eg, initialization (INIT) and system management interrupts (SMI)). Assume that various events such as)) are processed. Some of these fault events are “privileged” because they need to be handled by the VMM 112 for the purpose of ensuring the normal operation of the VMs 102 and 114 and protecting them from the guest software. is there.

特権的フォルトイベントが発生したとき、または、ゲストソフトウェアが特権的リソースにアクセスしたとき、制御は、VMM112に移行されうる。ゲストソフトウェアからVMM122への制御の移行は、本明細書ではVM exitと呼ぶ。リソースアクセスを容易にした後、または、イベントを適切に処理した後、VMM112は、制御をゲストソフトウェアに戻してもよい。VMM112からゲストソフトウェアへの制御の移行は、本明細書ではVM entryと呼ぶ。   When a privileged fault event occurs or when guest software accesses a privileged resource, control can be transferred to the VMM 112. The transfer of control from the guest software to the VMM 122 is referred to as VM exit in this specification. After facilitating resource access or processing the event appropriately, the VMM 112 may return control to the guest software. The transfer of control from the VMM 112 to the guest software is referred to as VM entry in this specification.

一実施形態では、プロセッサ118は、仮想マシン制御構造(VMCS)124に格納されたデータに従って、VM102および114の動作を制御する。VMCS124は、ゲストソフトウェアの状態、VMM112の状態、VMM112がゲストソフトウェアの動作をどのように制御したいのかを示す実行制御情報、VMM112とVMの間の移行を制御する情報などを含んでもよい。プロセッサ118は、VMの実行環境を判定すること、および、その動作を抑制することを目的として、VMCS124から情報を読み取る。一実施形態では、VMCSは、メモリ120に格納される。いくつかの実施形態では、複数のVMをサポートすることを目的として、複数のVMCS構造が使用される。   In one embodiment, processor 118 controls the operation of VMs 102 and 114 according to data stored in virtual machine control structure (VMCS) 124. The VMCS 124 may include the status of the guest software, the status of the VMM 112, execution control information indicating how the VMM 112 wants to control the operation of the guest software, information for controlling the transition between the VMM 112 and the VM, and the like. The processor 118 reads information from the VMCS 124 for the purpose of determining the execution environment of the VM and suppressing its operation. In one embodiment, the VMCS is stored in the memory 120. In some embodiments, multiple VMCS structures are used to support multiple VMs.

一実施形態では、プロセッサ118は、制御をVM102または114に移行(VM entryの要求)させるVMM112の要求を受信し、VMM122が関連するVMのシングルステップを要求したかどうかを判定する、シングルステップ・ロジック122を有する。シングルステップ機能は、仮想マシン環境100において種々の用途を有してもよい。例えば、VMM112は、VM102または114で実行されるシステム(すなわち、特権的)またはアプリケーションコードをデバッグすることを目的として、シングルステップ機能を要求してもよい。他の例では、VMM112は、VM102または114の動作中に特定のデバイスまたはプラットフォームの仮想化を実現することを目的として、シングルステップ機能を要求してもよい(例:VMM112がVMに読み取り処理を許可し書き込み処理を許可したくないメモリ・マップドI/Oデバイス)。更に他の例では、VMM112は、VM102または114の実行をトレースすることを目的として、シングルステップ機能を要求してもよい(新規システムの設計をテストする場合に、VMの動作の経過を維持するため)。   In one embodiment, the processor 118 receives a request for the VMM 112 to transfer control to the VM 102 or 114 (request for VM entry) and determines whether the VMM 122 has requested a single step for the associated VM. It has logic 122. The single step function may have various uses in the virtual machine environment 100. For example, the VMM 112 may require single-step functionality for the purpose of debugging system (ie, privileged) or application code running on the VM 102 or 114. In other examples, the VMM 112 may require single-step functionality for the purpose of achieving virtualization of a particular device or platform during operation of the VM 102 or 114 (eg, the VMM 112 may read processing from the VM). Memory-mapped I / O devices that do not want to allow write processing). In yet another example, the VMM 112 may require a single-step function for the purpose of tracing the execution of the VM 102 or 114 (maintaining the course of VM operation when testing new system designs). For).

シングルステップ・ロジック122は、シングルステップ・インジケータの現在値に基づいて、VMM122がシングルステップ機能を要求したかどうかを判定する。一実施形態では、シングルステップ・インジケータは、VMCS124に格納される。あるいは、シングルステップ・インジケータは、プロセッサ118、メモリ120およびプロセッサ118の組み合わせ、またはいかなる他のストレージ・ロケーションに存在してもよい。   The single step logic 122 determines whether the VMM 122 has requested a single step function based on the current value of the single step indicator. In one embodiment, the single step indicator is stored in VMCS 124. Alternatively, the single step indicator may be present in processor 118, memory 120 and processor 118 combination, or any other storage location.

一実施形態では、VMM112は、VM102または114に制御を移行させる要求をする前に、シングルステップ・インジケータの値を設定する。あるいは、VM102および114のそれぞれは、定義済みの値に設定された、または、VMの動作中に変更された、異なるシングルステップ・インジケータに関連付けられる。   In one embodiment, the VMM 112 sets the value of the single step indicator before requesting the VM 102 or 114 to transfer control. Alternatively, each of VMs 102 and 114 is associated with a different single step indicator that is set to a predefined value or changed during operation of the VM.

VMM112によるVM entryの要求を受信した際に、シングルステップ・ロジック122がシングルステップ・インジケータはシングルステップ値(例:1)に設定されていることを判定した場合、シングルステップ・ロジック122は、制御をVMに移行し、最初のVM命令を実行し、最初のVM命令の実行が正常終了した場合、制御をVMM112に移行する(すなわち、VM exitが生成される)。一実施形態では、シングルステップ・ロジック122は、シングルステップ・インジケータの現在値によってVM exitが引き起こされたことを、(例:指定されたリーズン・コードを使用して)VMM112に通知する。   When the single step logic 122 determines that the single step indicator is set to a single step value (eg, 1) upon receipt of the VM entry request by the VMM 112, the single step logic 122 When the first VM instruction is executed and the execution of the first VM instruction is normally completed, the control is transferred to the VMM 112 (that is, the VM exit is generated). In one embodiment, the single step logic 122 notifies the VMM 112 that the VM exit was triggered by the current value of the single step indicator (eg, using a specified reason code).

最初のVM命令の実行が失敗した場合(すなわち、フォルトを引き起こした場合)、シングルステップ・ロジック122は、(例:VMCS124内の関連する実行制御情報を調査して、その情報が、フォルトはVM exitを必要とすることを示しているかどうかを判定することによって)結果として生じたフォルトがVM exitに関連するものであるかどうかを判定する。フォルトがVM exitに関連する場合は、シングルステップ・ロジック122は、VMM112に制御を移行し、一実施形態では、フォルトによってVM exitが引き起こされたことを、VMM112に通知する。フォルトがVM exitを必要としない場合、シングルステップ・ロジック122は、VMにフォルトを送付する。一実施形態では、フォルトの送付は、送付されるフォルトに関連するエントリのリダイレクト構造を検索することと、フォルトを処理するように指定されたルーチンの場所の記述子をこのエントリから抽出することと、記述子を使用してルーチンの先頭に移動することを含む。対応する割り込み、例外、またはその他のフォルトを処理するように指定されたルーチンは、本明細書では、フォルト・ハンドラと呼ばれる。   If execution of the first VM instruction fails (ie, caused a fault), the single step logic 122 examines the associated execution control information in the VMCS 124 (eg, the fault is VM Determine whether the resulting fault is related to a VM exit (by determining whether it indicates that exit is required). If the fault is associated with a VM exit, the single step logic 122 transfers control to the VMM 112 and, in one embodiment, notifies the VMM 112 that the VM exit was caused by the fault. If the fault does not require a VM exit, the single step logic 122 sends the fault to the VM. In one embodiment, sending a fault retrieves the redirect structure of the entry associated with the sent fault, and extracts from this entry the descriptor of the routine location designated to handle the fault; Using descriptors to move to the beginning of the routine. Routines designated to handle corresponding interrupts, exceptions, or other faults are referred to herein as fault handlers.

フォルトの送付中、プロセッサ118は、仮想アドレスから物理アドレスにアドレスを変換するアドレス変換を1回以上行ってもよい。例えば、割り込みテーブルのアドレスまたは関連するハンドラのアドレスは、仮想アドレスであってもよい。プロセッサは、フォルトの送付中に、種々の確認を実行する必要があってもよい。例えば、プロセッサは、(制限違反フォルト、不在セグメントフォルト、スタックフォルト、などを結果として生じる)セグメンテーション・レジスタおよびアクセス・アドレスの確認、結果として保護違反(例:一般保護違反)を生じうるパーミッション・レベル確認などのような、整合性確認を実行してもよい。   During sending of the fault, the processor 118 may perform address conversion for converting an address from a virtual address to a physical address one or more times. For example, the interrupt table address or the associated handler address may be a virtual address. The processor may need to perform various checks during fault delivery. For example, the processor can check segmentation registers and access addresses (resulting in restriction violation faults, absent segment faults, stack faults, etc.) and permission levels that can result in protection violations (eg, general protection violations) Consistency confirmation, such as confirmation, may be performed.

フォルトのベクタ化処理中の、アドレス変換および確認は、ページフォルト、一般保護違反などのような種々のフォルトを結果として生じうる。現在のフォルトの送付中に引き起こされるいくつかのフォルトは、VM exitを引き起こしてもよい。例えば、物理メモリを保護および仮想化することを目的として、VMM112がページフォルトの際にVM exitを必要とする場合、現在のフォルトのVMへの送付中に生じるページフォルトは、結果としてVM exitを生じる。   Address translation and verification during the fault vectorization process can result in various faults such as page faults, general protection faults, and the like. Some faults that are triggered during the sending of the current fault may cause a VM exit. For example, if the VMM 112 requires a VM exit in the event of a page fault, for the purpose of protecting and virtualizing physical memory, a page fault that occurs while sending the current fault to the VM will result in the VM exit being Arise.

一実施形態では、シングルステップ・ロジック122は、現在のフォルトの送付が正常終了したかどうかを確認することによって、上述の追加のフォルトが発生する可能性に対応する。現在のフォルトの送付が正常終了した場合、シングルステップ・ロジック122は、フォルト・ハンドラの命令を実行する前にVM exitを生成し、シングルステップ・インジケータの現在値によりVM exitが生成されたことを、VMM112に通知する。シングルステップ・ロジック122が送付は失敗したことを判定した場合、シングルステップ・ロジック122は、新規のフォルトに対して上述の処理を繰り返す。   In one embodiment, the single step logic 122 addresses the possibility of the additional faults described above by checking whether the current fault delivery was successful. If the delivery of the current fault is successful, the single step logic 122 generates a VM exit before executing the fault handler instruction and indicates that the VM exit was generated by the current value of the single step indicator. , Notify the VMM 112. If the single step logic 122 determines that the delivery has failed, the single step logic 122 repeats the above process for the new fault.

一定の命令に対しては、命令の正常終了は、フォルト、例外、または割り込みのベクタ化を含む。例えば、IA−32 ISAでは、ソフトウェア割り込み命令(すなわち、INTn、INTO、INT3)は、割り込みまたは例外ハンドラへの呼び出しを生成することによって、ソフトウェア割り込みをベクタ化する。このような割り込みが発生した場合、VMにおける割り込みまたは例外ハンドラの最初の命令が実行される前に、シングルステップ機構によりVM exitが発生する(ソフトウェア割り込みの送付中にネストされた例外が発生せず、また、フォルトまたは例外によってVM exitが生じないと仮定する)。   For certain instructions, successful completion of the instruction includes fault, exception, or interrupt vectorization. For example, in the IA-32 ISA, software interrupt instructions (ie, INTn, INTO, INT3) vectorize software interrupts by generating calls to interrupts or exception handlers. When such an interrupt occurs, the VM exit is generated by the single step mechanism before the first instruction of the interrupt or exception handler in the VM is executed (no nested exception occurs while sending the software interrupt). Also assume that a VM exit does not occur due to a fault or exception).

VMは、本明細書で説明されるシングルステップ機構に依存しない、デバッグまたはシングルステップ機構を使用してもよいことを留意すべきである。例えば、IA−32 ISAでは、VMは、シングルステップ・トラップを生成することを目的としてEFLAGSレジスタ内のTFビットを1に設定してもよく、または、デバッグ・ブレークポイントを生成することを目的としてデバッグ・レジスタを使用してもよい。最初のVM命令がこのようなブレークポイントまたはトラップを引き起こした場合、ブレークポイントまたはトラップのベクタ化を行う前に、シングルステップ機構によりVM exitが発生する。待機ブレークポイントまたはトラップに関する情報は、一実施形態では、VMが使用する機構を正しくエミュレートすることを目的としてVMMによって使用されるように、VMCSに格納される。   It should be noted that the VM may use a debug or single step mechanism that does not rely on the single step mechanism described herein. For example, in an IA-32 ISA, the VM may set the TF bit in the EFLAGS register to 1 for the purpose of generating a single-step trap, or for the purpose of generating a debug breakpoint Debug registers may be used. If the first VM instruction causes such a breakpoint or trap, a VM exit is generated by a single step mechanism before vectorizing the breakpoint or trap. Information about wait breakpoints or traps is stored in the VMCS, in one embodiment, for use by the VMM to properly emulate the mechanism used by the VM.

図2は、VM環境においてVMのシングルステップ機能のサポートを提供する処理200の一実施形態を示すフロー図である。この処理は、ハードウェア(例:回路、専用ロジック、プログラマブル・ロジック、マイクロコード、など)、ソフトウェア(汎用コンピュータシステムまたは専用マシン上で実行するソフトウェア)、またはハードウェアおよびソフトウェアの組み合わせを有する処理ロジックによって実行されてもよい。一実施形態では、処理200は、図1のシングルステップ・ロジック122によって実行される。   FIG. 2 is a flow diagram illustrating one embodiment of a process 200 that provides support for single step functionality of a VM in a VM environment. This processing can be hardware (eg, circuitry, dedicated logic, programmable logic, microcode, etc.), software (software running on a general purpose computer system or a dedicated machine), or processing logic having a combination of hardware and software May be executed by In one embodiment, process 200 is performed by single step logic 122 of FIG.

図2を参照すると、処理200は、処理ロジックがVMに制御を移行させる要求をVMMから受信する、処理ブロック202から開始する。一実施形態では、制御を移行させる要求は、VMMによって実行されるVM entry命令によって受信される。   Referring to FIG. 2, process 200 begins at process block 202 where processing logic receives a request from a VMM to transfer control to a VM. In one embodiment, the request to transfer control is received by a VM entry instruction executed by the VMM.

判定ボックス204において、処理ロジックは、VMMが呼び出されるVMのシングルステップを要求したかどうかを判定する。一実施形態では、処理ロジックは、VMMによって維持されるシングルステップ・インジケータの現在値を読み取ることによって、VMMがVMのシングルステップを要求したかどうかを判定する。シングルステップ・インジケータは、VMCS内またはVMMおよび処理ロジック200によってアクセス可能なその他のいかなるデータ構造内に存在してもよい。一実施形態では、VMMがVMのシングルステップを行いたい場合は、VMMは、シングルステップ・インジケータをシングルステップ値(例:1)に設定し、制御をこのVMに移行させる要求を生成する。一実施形態では、VMMがシングルステップ・インジケータをシングルステップ値に設定した場合、VMMは、VMの実行中に発生しうる各フォルトの際にVM exitが発生するように、実行制御インジケータも設定する。あるいは、シングルステップ・インジケータの設定は、いくつかのまたは全ての実行制御インジケータに依存しない。   In decision box 204, processing logic determines whether the VMM requested a single step of the VM being invoked. In one embodiment, processing logic determines whether the VMM has requested a single step of the VM by reading the current value of the single step indicator maintained by the VMM. The single step indicator may be present in the VMCS or in any other data structure accessible by the VMM and processing logic 200. In one embodiment, if the VMM wants to perform a single step of the VM, the VMM sets the single step indicator to a single step value (eg, 1) and generates a request to transfer control to this VM. In one embodiment, if the VMM sets the single step indicator to a single step value, the VMM also sets an execution control indicator so that a VM exit occurs for each fault that can occur during execution of the VM. . Alternatively, the setting of the single step indicator does not depend on some or all execution control indicators.

一実施形態では、シングルステップ・インジケータは、各VM exitにおいて、非シングルステップ値(例:0)に再設定される。他の実施形態では、VMMは、VMのシングルステップが必要とされない場合は、制御をVMに移行させる要求をする前に、シングルステップ・インジケータを非シングルステップ値に再設定する。   In one embodiment, the single step indicator is reset to a non-single step value (eg, 0) at each VM exit. In other embodiments, if the VM single step is not required, the VMM resets the single step indicator to a non-single step value before making a request to transfer control to the VM.

上述のように、例えば、VMで実行されるシステムまたはアプリケーションコードをデバッグする場合、VMの動作中にデバイスまたはプラットフォームを仮想化する場合、VMの実行をトレースする場合などに、VMMは、VMのシングルステップを要求してもよい。   As described above, for example, when debugging system or application code running on a VM, virtualizing a device or platform while the VM is running, tracing VM execution, etc. A single step may be requested.

処理ロジックが、VMのシングルステップが必要とされていると判定した場合、処理ロジックは、処理ブロック208において、VMの最初の命令を実行し、判定ボックス210において、最初のVM命令の実行が正常終了したかどうかを判定する。最初のVM命令の実行が正常終了した場合、処理ロジックは、処理ブロック212において、VM exitを生成し、処理ブロック214において、VM exitの原因がシングルステップであることをVMMに通知する。一実施形態では、処理ロジックは、指定されたリーズン・コードを生成することによって、VM exitの原因をVMMに通知する。一実施形態では、リーズン・コードはVMCSに格納される。   If the processing logic determines that a single step of the VM is required, the processing logic executes the first instruction of the VM at processing block 208 and the execution of the first VM instruction is normal in decision box 210. Determine if finished. If execution of the first VM instruction is successful, processing logic generates a VM exit at processing block 212 and notifies the VMM that the cause of the VM exit is a single step at processing block 214. In one embodiment, processing logic notifies the VMM of the cause of the VM exit by generating a specified reason code. In one embodiment, the reason code is stored in the VMCS.

最初のVM命令の実行が失敗した場合、処理ロジックは、判定ボックス216において、結果として生じたフォルトがVM exitを引き起こすどうかを判定する。この判定は、(例:VMCS124内に格納された)関連する実行制御情報を調査することによって下される。結果として生じたフォルトがVM exitを発生させる場合、処理ロジックは、処理ブロック222において、VM exitを生成し、処理ブロック224において、VM exitの原因がフォルトであることをVMMに通知する。結果として生じたフォルトがVM exitを引き起こさない場合、処理ロジックは、処理ブロック218において、VMにフォルトを送付し、判定ボックス220において、フォルトの送付が正常終了したかどうかを判定する。フォルトの送付が正常終了した場合、処理ロジックは、処理ブロック212において、対応するフォルト・ハンドラの命令を実行する前にVM exitを生成し、処理ブロック214において、VM exitの原因がシングルステップであることをVMMに通知する。   If execution of the first VM instruction fails, processing logic determines in decision box 216 whether the resulting fault causes a VM exit. This determination is made by examining associated execution control information (eg, stored in VMCS 124). If the resulting fault generates a VM exit, processing logic generates a VM exit at processing block 222 and notifies the VMM at processing block 224 that the cause of the VM exit is a fault. If the resulting fault does not cause a VM exit, processing logic sends the fault to the VM at process block 218 and a determination box 220 determines whether the sending of the fault is successful. If the delivery of the fault is successful, processing logic generates a VM exit before executing the corresponding fault handler instruction in processing block 212, and in processing block 214 the cause of the VM exit is a single step. This is notified to the VMM.

フォルトの送付が失敗した場合、処理ロジックは、結果として生じた新規フォルトを処理することを目的として、判定ボックス216に戻る。   If the fault delivery fails, processing logic returns to decision box 216 for the purpose of processing the resulting new fault.

判定ボックス204において、処理ロジックが、VMのシングルステップが要求されていないと判定した場合、処理ロジックは、処理ブロック226において、VMの最初の命令を実行し、判定ボックス228において、最初のVM命令の実行が正常終了したかどうかを判定する。最初のVM命令の実行が正常終了した場合、処理ロジックは、処理ブロック230において、VMの次の命令を実行し、判定ボックス228に戻る。そうではなく、最初のVM命令の実行が失敗した場合、処理ロジックは、判定ボックス232において、結果として生じたフォルトがVM exitを引き起こすかどうかを判定する。フォルトがVM exitを引き起こす場合は、処理ロジックは、処理ブロック222において、VM exitを生成し、処理ブロック224において、VM exitの原因がフォルトであることをVMMに通知する。フォルトがVM exitを引き起こさない場合は、処理ロジックは、処理ブロック234において、VMにフォルトを送付し、判定ボックス236において、フォルトの送付が正常終了したかどうかを判定する。フォルトの送付が正常終了した場合、処理ロジックは、フォルト・ハンドラの最初の命令を実行し、判定ボックス228に戻る。フォルトの送付が失敗した場合、処理ロジックは、結果として生じた新規フォルトを処理することを目的として、処理ブロック234に戻る。   If the processing logic determines at decision box 204 that a single step of the VM is not required, processing logic executes the first instruction of the VM at processing block 226 and the first VM instruction at decision box 228. Whether or not the execution of has been completed normally. If execution of the first VM instruction is successful, processing logic executes the next instruction of the VM at process block 230 and returns to decision box 228. Otherwise, if execution of the first VM instruction fails, processing logic determines in decision box 232 whether the resulting fault causes a VM exit. If the fault causes a VM exit, processing logic generates a VM exit at processing block 222 and notifies the VMM at processing block 224 that the cause of the VM exit is a fault. If the fault does not cause a VM exit, processing logic sends the fault to the VM at processing block 234 and a decision box 236 determines whether the sending of the fault is successful. If the fault delivery is successful, processing logic executes the first instruction of the fault handler and returns to decision box 228. If the fault delivery fails, processing logic returns to processing block 234 for the purpose of processing the resulting new fault.

いくつかの実施形態では、シングルステップ値に設定されたシングルステップ・インジケータに関連するVM entryの要求に応じて呼び出されたVMの動作中に、一定のイベントが発生してもよい。例えば、VMMは、VM entryの一部としてVMにフォルトが送付されること、VM entryがプロセッサを非活性活動状態に置くこと、VM entry後の最初の命令がVM exitを引き起こすこと、などを必要としてもよい。Intel Pentium4の命令セット・アーキテクチャ(ISA)(本明細書では、IA−32 ISAと呼ぶ)では、非活性活動状態の例は、Halt、Wait−for−SIPI、シャットダウン、およびMWAIT状態を含む。これらの非活性活動状態の間は、プロセッサは、いかなる命令も完了せず、プロセッサを非活性活動状態から通常活動状態に移行させうる1つ以上のブレークイベントの発生を待つ。例えば、Halt活動状態の間は、プロセッサは、ブロックされないハードウェア割り込み、システム管理割り込み(SMI)、システム初期化メッセージ(INIT)、非マスク可能割り込み(NMI)、デバッグ例外、マシン確認例外、などの発生を待つ。VMのシングルステップ機能をサポートしながらこのようなイベントを処理する典型的な処理は、図3および図4と併せて以下に説明される。   In some embodiments, certain events may occur during the operation of a VM invoked in response to a request for a VM entry associated with a single step indicator set to a single step value. For example, the VMM requires that a fault be sent to the VM as part of the VM entry, that the VM entry put the processor in an inactive state, that the first instruction after the VM entry causes a VM exit, etc. It is good. In the Intel Pentium 4 instruction set architecture (ISA) (referred to herein as the IA-32 ISA), examples of inactive states include Halt, Wait-for-SIPI, shutdown, and MWAIT state. During these inactive states, the processor does not complete any instructions and waits for the occurrence of one or more break events that can cause the processor to transition from the inactive state to the normal state. For example, during a Halt active state, the processor may not block hardware interrupts, system management interrupts (SMI), system initialization messages (INIT), non-maskable interrupts (NMI), debug exceptions, machine confirmation exceptions, etc. Wait for outbreak. A typical process for handling such events while supporting the VM's single-step functionality is described below in conjunction with FIGS.

図3は、シングルステップ・インジケータがシングルステップ値に設定されたVM entryの要求に応答する処理300の一実施形態を示すフロー図である。この処理は、ハードウェア(例:回路、専用ロジック、プログラマブル・ロジック、マイクロコード、など)、ソフトウェア(汎用コンピュータシステムまたは専用マシン上で実行するソフトウェア)、またはハードウェアおよびソフトウェアの組み合わせを有する、処理ロジックによって実行されてもよい。一実施形態では、処理300は、図1のシングルステップ・ロジック122によって実行される。   FIG. 3 is a flow diagram illustrating one embodiment of a process 300 for responding to a request for a VM entry with a single step indicator set to a single step value. This process can be hardware (eg, circuitry, dedicated logic, programmable logic, microcode, etc.), software (software running on a general purpose computer system or a dedicated machine), or a combination of hardware and software It may be performed by logic. In one embodiment, process 300 is performed by single step logic 122 of FIG.

図3を参照すると、処理300は、処理ロジックが、シングルステップ・インジケータがシングルステップ値に設定されたVM entryを検出する、処理ブロック302から開始する。次に、判定ボックス304において、処理ロジックは、VMMがVM entryの一部として待機フォルトのVMへの送付を要求したかどうかを判定する(すなわち、ベクタ化されたフォルトがVMに送付されるかどうか)。そうである場合は、処理ロジックは、処理ブロック306において、待機フォルトをVMに送付する。フォルトの送付は、送付されるフォルトに関連するエントリのリダイレクト構造を検索することと、対応するフォルト・ハンドラの場所の記述子をこのエントリから抽出することと、この記述子を使用してフォルト・ハンドラの先頭に移動することを含んでもよい。フォルトの送付中に、新規フォルト(例:ページフォルト、一般保護違反、など)を結果として生じうるいくつかの処理(例:アドレス変換、セグメンテーション・レジスタおよびアクセス・アドレスの確認、パーミッション・レベル確認、など)が実行される必要があってもよい。判定ボックス308において、処理ロジックは、待機フォルトの送付が正常終了したかどうかを判定する。もしそうであれば(すなわち、新規フォルトが発生しなかったら)、処理ロジックは、処理ブロック310において、対応するハンドラの命令を実行する前に、シングルステップ・インジケータを指定するリーズン・コードと共にVM exitを生成する。   Referring to FIG. 3, process 300 begins at process block 302 where processing logic detects a VM entry with a single step indicator set to a single step value. Next, in decision box 304, processing logic determines whether the VMM has requested delivery to the standby fault VM as part of the VM entry (i.e., whether the vectorized fault is sent to the VM). please). If so, processing logic sends a wait fault to the VM at processing block 306. Fault delivery searches the entry's redirect structure associated with the fault being sent, extracts the corresponding fault handler location descriptor from this entry, and uses this descriptor to It may include moving to the top of the handler. While sending faults, some actions that could result in new faults (eg page faults, general protection violations, etc.) (eg address translation, segmentation register and access address checks, permission level checks, Etc.) may need to be performed. In decision box 308, processing logic determines whether the sending of the standby fault has been completed successfully. If so (ie, if a new fault has not occurred), processing logic, at processing block 310, executes VM exit with a reason code that specifies a single step indicator before executing the instruction of the corresponding handler. Is generated.

待機フォルトの送付が失敗した場合、処理ロジックは、判定ボックス312において、結果として生じた新規フォルトがVM exitを引き起こすかどうかを判定する。もしそうであれば、処理ロジックは、処理ブロック314において、新規フォルトを指定するリーズン・コードと共にVM exitを生成する。そうではなく、新規フォルトがVM exitを生じない場合は、処理ロジックは、新規フォルトを処理することを目的として処理ブロック306に戻る。   If delivery of the wait fault fails, processing logic determines in decision box 312 whether the resulting new fault causes a VM exit. If so, processing logic generates a VM exit at process block 314 with a reason code specifying the new fault. Otherwise, if the new fault does not result in a VM exit, processing logic returns to processing block 306 for the purpose of handling the new fault.

判定ボックス304において、処理ロジックが、VMMがVM entryの一部として待機フォルトの送付を要求していないと判定した場合、処理ロジックは、更に、判定ボックス316において、VM entryがプロセッサを非活性活動状態に移行させるかどうかを判定する。もしそうである場合、処理ロジックは、処理ブロック317において、非活性活動状態(例:Halt状態)に移行し、処理ブロック318において、プロセッサを非活性活動状態から通常(すなわち活性)活動状態に移行させることができるブレークイベントを待ち、判定ボックス320において、(例:VMCS124内の関連する実行制御情報を調査することによって)ブレークイベントがVM exitを引き起こすかどうかを判定する。この判定が正である場合、処理ロジックは、処理ブロック322において、ブレークイベントを指定するリーズン・コードと共にVM exitを生成する。ある実施形態では、VM exitの一部としてVMの動作状態の指示子が保存される必要がある場合(例えばVMCS内の実行制御情報内の保存動作状態インジケータを調査することによって判断される)、ブレークイベントの発生前の動作状態(すなわち、非活性活動状態)の指示子は保存される。そうではなく、ブレークイベントがVM exitを生じない場合、処理ロジックは、処理ブロック306に進み、VMへのブレークイベントの送付を試みる。一実施形態では、VMにブレークイベントを送付する試みは、VMを非活性活動状態から通常(すなわち、活性)活動状態に移行させ、VMの動作状態の指示子が保存された場合、指示子は通常(すなわち、活性)活動状態を示すという効果を有する。   If the processing logic determines in decision box 304 that the VMM has not requested the sending of a standby fault as part of the VM entry, then processing logic further determines that the VM entry inactivates the processor in decision box 316. Determine whether to transition to the state. If so, processing logic transitions to an inactive active state (eg, a Halt state) at processing block 317, and transitions the processor from an inactive active state to a normal (ie active) active state at processing block 318. Wait for a break event that can be made, and in decision box 320, determine whether the break event causes a VM exit (eg, by examining relevant execution control information in VMCS 124). If this determination is positive, processing logic generates a VM exit at process block 322 with a reason code specifying a break event. In some embodiments, if the VM's operating state indicator needs to be stored as part of the VM exit (determined, for example, by examining a stored operating state indicator in execution control information in the VMCS). The indicator of the operating state (that is, the inactive active state) before the occurrence of the break event is saved. Otherwise, if the break event does not result in a VM exit, processing logic proceeds to processing block 306 and attempts to send the break event to the VM. In one embodiment, an attempt to send a break event to the VM causes the VM to transition from an inactive active state to a normal (ie active) active state, and if the VM operational state indicator is saved, the indicator is It has the effect of indicating a normal (ie active) activity state.

判定ボックス316において、処理ロジックが、VM entryはプロセッサを非活性活動状態に移行させないと判定した場合、処理ロジックは、処理ブロック324において、VMの最初の命令を実行し、判定ボックス326において、最初の命令の実行がVM exitを引き起こすかどうかを判定する。もしそうである場合、処理ロジックは、処理ブロック328において、命令を識別するリーズン・コードと共にVM exitを生成する。そうでない場合、処理ロジックは、判定ボックス330において、最初の命令が正常終了したかどうかを判定する。   If the processing logic determines in decision box 316 that the VM entry does not cause the processor to transition to an inactive active state, processing logic executes the first instruction of the VM in processing block 324 and the first in decision box 326. Whether execution of the instruction causes a VM exit. If so, processing logic generates a VM exit at process block 328 with a reason code identifying the instruction. Otherwise, processing logic determines in decision box 330 whether the first instruction was successful.

最初の命令の実行が失敗した場合、処理ロジックは、結果として生じた新規フォルトを処理することを目的として判定ボックス312に進む。最初の命令の実行が正常終了した場合、処理ロジックは、更に、判定ボックス332において、命令がプロセッサを非活性活動状態に移行させるかどうかを判定する。例えば、IA−32 ISAでは、HLT命令は、プロセッサを非活性活動状態であるHalt状態に移行させる。実行された命令が実際に非活性活動状態に移行した場合、処理ロジックは、更に、判定ボックス334において、活動状態の指示子が保存される必要があるかどうかを(例:VMCS内の実行制御情報の保存活動状態インジケータを調査することによって)判定する。活動状態の指示子が保存される必要がある場合、処理ロジックは、処理ブロック336において、活動状態の指示子を(例:VMCS内に)保存し、処理ブロック338において、シングルステップ・インジケータを指定するリーズン・コードと共にVM exitを生成する。命令がプロセッサを非活性活動状態に移行させなかった場合、または、命令がプロセッサを非活性活動状態に移行させたが活動状態の指示子が保存される必要がない場合、処理ロジックは、処理ブロック338に直接進む。   If execution of the first instruction fails, processing logic proceeds to decision box 312 for the purpose of handling the resulting new fault. If execution of the first instruction is successful, processing logic further determines in decision box 332 whether the instruction causes the processor to transition to an inactive active state. For example, in an IA-32 ISA, an HLT instruction causes the processor to transition to a halt state, which is an inactive active state. If the executed instruction actually transitions to the inactive active state, processing logic further determines in decision box 334 whether an active indicator needs to be saved (eg, execution control in VMCS). Determine by examining the information storage activity status indicator. If the activity indicator needs to be saved, processing logic saves the activity indicator (eg, in the VMCS) at process block 336 and specifies a single step indicator at process block 338. A VM exit is generated together with the reason code to be executed. If the instruction does not cause the processor to transition to the inactive active state, or if the instruction causes the processor to transition to the inactive active state but the active indicator does not need to be saved, processing logic may Proceed directly to 338.

いくつかの実施形態では、シングルステップは、いくつかの他のイベント(例えば、INITおよびSMIのような、プラットフォームイベント)の優先度よりも低い優先度を有してもよい。図4は、シングルステップより高い優先度を有するイベントを処理する処理400の一実施形態を示すフロー図である。この処理は、ハードウェア(例:回路、専用ロジック、プログラマブル・ロジック、マイクロコード、など)、ソフトウェア(汎用コンピュータシステムまたは専用マシン上で実行するソフトウェア)、またはハードウェアおよびソフトウェアの組み合わせを有する、処理ロジックによって実行されてもよい。一実施形態では、処理400は、図1のシングルステップ・ロジック122によって実行される。   In some embodiments, a single step may have a priority that is lower than the priority of some other events (eg, platform events such as INIT and SMI). FIG. 4 is a flow diagram illustrating one embodiment of a process 400 for processing events having a higher priority than a single step. This process can be hardware (eg, circuitry, dedicated logic, programmable logic, microcode, etc.), software (software running on a general purpose computer system or a dedicated machine), or a combination of hardware and software It may be performed by logic. In one embodiment, process 400 is performed by single step logic 122 of FIG.

図4を参照すると、処理400は、処理ロジックが、シングルステップ・インジケータがシングルステップ値に設定されたVM entryを検出する、処理ブロック402から開始し、処理ブロック404において、VMの最初の命令を実行する。   Referring to FIG. 4, process 400 begins at process block 402 where processing logic detects a VM entry with a single step indicator set to a single step value, and at process block 404 the first instruction of the VM is Execute.

次に、VMの最初の命令の実行後に、処理ロジックは、処理ブロック406において、シングルステップより高い優先度を有するイベント(例:NMI、SMI、など)を検出し、判定ボックス408において、優先度が高いイベントがVMMまたはいくつかの指定されたソフトウェアによって処理されるかどうかを判定する。一実施形態では、シングルステップ機構を使用するVMMが、関連するVM entryより前に、優先度が高いイベントの実行制御インジケータをVM exitが発生するように設定することができる場合、優先度が高いイベントは、VMMによって処理される。シングルステップ機構を使用するVMMが対応する実行制御インジケータを上述のように設定することができない場合、(例:使用可能なそのような実行制御インジケータが存在しない場合)、優先度が高いイベントは、指定されたソフトウェアによって処理される。例えば、シングルステップ機構を使用するVMMは、関連するVM entryより前に、NMIがVM exitを引き起こすように対応する実行制御ビットを設定してもよい。他の例では、シングルステップ機構を使用するVMMは、関連するVM entryの前に、SMIに関連する実行制御インジケータを更新する機能を有しなくてもよい。そして、SMIは、優先度が高いイベントを管理するように指定されたソフトウェアによって処理されてもよい。   Next, after execution of the first instruction of the VM, processing logic detects an event (eg, NMI, SMI, etc.) having a higher priority than a single step in processing block 406, and in decision box 408, the priority Determine whether a high event is handled by the VMM or some specified software. In one embodiment, if a VMM that uses a single-step mechanism can set the execution control indicator for a high priority event to cause the VM exit to occur before the associated VM entry, the priority is high. Events are processed by the VMM. If a VMM using a single-step mechanism cannot set the corresponding execution control indicator as described above (eg, if no such execution control indicator is available), the high priority event is Processed by the specified software. For example, a VMM that uses a single step mechanism may set the corresponding execution control bit so that the NMI triggers the VM exit prior to the associated VM entry. In another example, a VMM that uses a single step mechanism may not have the capability to update the execution control indicator associated with the SMI before the associated VM entry. The SMI may then be processed by software designated to manage high priority events.

優先度が高いイベントがシングルステップ機構を使用するVMMによって処理される場合、処理ロジックは、処理ブロック410において、優先度が高いイベントを指定するリーズン・コードと共にVM exitを生成する。あるいは、優先度が高いイベントが、優先度が高いイベントを管理するように指定されたソフトウェアによって処理される場合、処理ロジックは、処理ブロック412において、(例:VMCS内の)待機VM exitインジケータをシングルステップ値に設定し、処理ブロック414において、指定されたソフトウェアに制御を移行する。そして、指定されたソフトウェアは、ブロック416において、優先度が高いイベントを処理し、シングルステップ機構により待機VM exitのVMMへの送付を容易にする。待機VM exitインジケータは、優先度が高いイベントの処理が完了した際に、指定されたソフトウェアによって、または、プロセッサによってVMMに送付されてもよい。例えば、SMI処理は、VMMから独立した管理ソフトウェアによって処理されてもよい。SMIの処理が完了すると、管理ソフトウェアは、RSM(システム管理モードからの復帰)命令を実行してもよく、その後、この命令の実行時に、プロセッサは、シングルステップ機構により待機VM exitの存在を認識し、それに従って待機VM exitを送付してもよい。   If a high priority event is processed by a VMM using a single step mechanism, processing logic generates a VM exit at process block 410 with a reason code specifying the high priority event. Alternatively, if a high priority event is processed by software designated to manage the high priority event, processing logic sets a waiting VM exit indicator (eg, in VMCS) at processing block 412. The single step value is set, and control passes to designated software at process block 414. The designated software then processes the high priority event at block 416 to facilitate delivery of the standby VM exit to the VMM through a single step mechanism. The standby VM exit indicator may be sent to the VMM by designated software or by the processor when processing of a high priority event is complete. For example, the SMI process may be processed by management software independent of the VMM. When the SMI processing is completed, the management software may execute an RSM (return from system management mode) instruction, and when executing this instruction, the processor recognizes the presence of the standby VM exit by a single step mechanism. The standby VM exit may be sent accordingly.

上述のように、VMMによるVMのシングルステップは、例えば、VMにおいて実行されるシステムまたはアプリケーションコードのデバッグ、VMの動作中におけるデバイスまたはプラットフォームの仮想化、VMの実行のトレース、などを含む種々の用途を有してもよい。デバイスの仮想化を容易にすることを目的としてシングルステップを使用する典型的な処理について、以下において詳細に説明する。   As described above, VM single stepping with VMM can include a variety of, including, for example, debugging of system or application code executed in VM, device or platform virtualization during VM operation, tracing of VM execution, etc. You may have a use. A typical process using single step for the purpose of facilitating device virtualization is described in detail below.

図5は、一実施形態による、デバイスの仮想化を容易にすることを目的としたVMのシングルステップを使用する典型的な処理500を示すフロー図である。デバイスは、メモリ・マップド・プログラミング・モデル(例:高度プログラマブル割り込みコントローラ(APIC))を使用する入力/出力(I/O)デバイスであってもよく、VMMは、VMによるメモリ・マップドI/Oデバイスへのデータ書き込みを防ぎつつ、VMによるメモリ・マップドI/Oデバイスからのデータ読み取りを許可することを要求してもよい。処理500は、ハードウェア(例:回路、専用ロジック、プログラマブル・ロジック、マイクロコード、など)、ソフトウェア(汎用コンピュータシステムまたは専用マシン上で実行するソフトウェア)、またはハードウェアおよびソフトウェアの組み合わせを含む、処理ロジックによって実行されてもよい。   FIG. 5 is a flow diagram illustrating an exemplary process 500 using a single step of a VM aimed at facilitating device virtualization, according to one embodiment. The device may be an input / output (I / O) device that uses a memory mapped programming model (eg, highly programmable interrupt controller (APIC)), and the VMM is a memory mapped I / O by VM. It may be required to allow the VM to read data from the memory mapped I / O device while preventing data writing to the device. Process 500 includes hardware (eg, circuitry, dedicated logic, programmable logic, microcode, etc.), software (software executing on a general purpose computer system or a dedicated machine), or a combination of hardware and software. It may be performed by logic.

図5を参照すると、処理500は、VMM内の処理ロジックがデバイスのメモリ・マップド空間を書き込み禁止にするためにVMのページテーブルを設定し、(例:対応する実行制御情報を使用して)VMの実行中に発生するページフォルトがVM exitを引き起こすようにページフォルトを設定する、処理ブロック502から開始する。一実施形態では、VMページテーブルの設定は、VMMの制御によって各VMに対して独立したアクティブなゲスト・ページテーブルを維持する、仮想トランスレーション・ルックアサイド・バッファ(VTLB)データ構造を使用することによって、有効にされる。   Referring to FIG. 5, process 500 sets the VM's page table for processing logic in the VMM to write-protect the memory mapped space of the device (eg, using the corresponding execution control information). Beginning at process block 502, a page fault is set such that a page fault that occurs during execution of the VM causes a VM exit. In one embodiment, the VM page table configuration uses a virtual translation lookaside buffer (VTLB) data structure that maintains an independent active guest page table for each VM under the control of the VMM. Enabled by.

処理ブロック504において、プロセッサ内の処理ロジックは、VMがデバイスのメモリ・マップド空間にアクセスしたとき、ページフォルトVM exitを生成する。   At processing block 504, processing logic within the processor generates a page fault VM exit when the VM accesses the memory mapped space of the device.

処理ブロック506において、VMM内の処理ロジックは、(例:フォルト・アドレス値がメモリ・マップドI/Oページ内に収まることを調査することによって)VMのアクセスは保護されたメモリ・マップド空間へのものであったことを判定する。   At processing block 506, processing logic within the VMM causes the VM's access to the protected memory mapped space (eg, by investigating that the fault address value fits within the memory mapped I / O page). Judge that it was a thing.

処理ブロック508において、VMM内の処理ロジックは、フォルト・アドレスを通常の物理メモリに存在する異なる物理メモリページ(すなわち、メモリ・マップドI/O空間ではない)にマップすることを目的として、VMページテーブルを変更する。   At processing block 508, processing logic within the VMM is responsible for mapping the fault address to a different physical memory page that exists in normal physical memory (ie, not memory mapped I / O space). Change the table.

処理ブロック510において、VMM内の処理ロジックは、シングルステップ・インジケータを設定して、VM entryを要求する。   At processing block 510, processing logic within the VMM sets a single step indicator and requests a VM entry.

処理ブロック512において、プロセッサ内の処理ロジックは、VMMによって選択された上記ページにアクセスすることを目的として、VMの命令を実行する。   At processing block 512, processing logic within the processor executes the VM's instructions for the purpose of accessing the page selected by the VMM.

処理ブロック514において、プロセッサ内の処理ロジックは、命令の正常終了の後に、シングルステップ・インジケータによりVM exitを発生させる。   At processing block 514, processing logic within the processor generates a VM exit with a single step indicator after successful completion of the instruction.

次に、VMM内の処理ロジックは、処理ブロック516において、処理ブロック508で設定された物理メモリのページに書かれたデータを調査し、判定ボックス518において、データがデバイスに書き込まれるべきかどうかを判定する。この判定は、セキュリティ(例:デバイスへのいくつかのデータの書き込みは許可され、他のデータの書き込みは許可されない)または正確性(例:仮想化によって必要とされる場合は、デバイスに書き込まれるまえにデータが変更される必要がある)に基づいてもよい。   Next, processing logic within the VMM examines the data written to the physical memory page set at processing block 508 at processing block 516 and determines whether the data should be written to the device at decision box 518. judge. This determination is written to the device for security (eg: writing some data to the device but not allowing writing other data) or correctness (eg: if required by virtualization) May need to be changed before).

判定ボックス518において下された判断が正である場合、VMM内の処理ロジックは、処理ブロック520において、データをデバイスに書き込む。あるいは、VMMは、例えばセキュリティ、性能、またはデバイスの仮想化に関する一定の性質が適切であることを保証することを目的として、デバイスに書き込む前に、データを修正してもよい。   If the determination made in decision box 518 is positive, processing logic in the VMM writes data to the device at processing block 520. Alternatively, the VMM may modify the data before writing it to the device, for example to ensure that certain properties regarding security, performance, or device virtualization are appropriate.

このように、仮想マシン環境における仮想マシンのシングルステップ機能のサポートを提供する方法および装置が説明された。上述の説明は、本発明を説明することを意図したものであって、本発明を限定することは意図していない。上記の説明を読解することにより、当業者には多くの他の実施形態が明白となる。このため、本発明の範囲は、添付の特許請求の範囲および特許請求の範囲の均等物の全ての範囲によって決定される。   Thus, a method and apparatus have been described that provides support for virtual machine single-step functionality in a virtual machine environment. The above description is intended to illustrate the present invention and is not intended to limit the present invention. Many other embodiments will be apparent to those of skill in the art upon reading the above description. Thus, the scope of the present invention is determined by the full scope of the appended claims and their equivalents.

Claims (21)

シングルステップ・ロジックによって実行される段階である、
仮想マシン(VM)に制御を移行させる要求を仮想マシンモニタ(VMM)から受信する段階と、
シングルステップ・インジケータがシングルステップ値に設定されていることを判定する段階と、
前記シングルステップ・インジケータがシングルステップ値に設定されていることを判定することに応じて、
前記VMに制御を移行する段階と、
前記VMの最初の命令の実行が正常終了した場合に、前記最初の命令の前記実行の前記正常終了の後に、前記VMMに制御を移行する段階と、
前記VMの前記最初の命令の前記実行が、前記最初の命令の前記実行に依って生じた現在のフォルトにより正常終了しなかった場合に、前記現在のフォルトが前記VMMへの制御の移行に関連するかどうかどうかを判定する段階と、
前記現在のフォルトが前記VMMへの制御の前記移行に関連するならば前記VMMに制御を移行して前記現在のフォルトにより前記VMMに制御が移行されたことを前記VMMに通知する段階と、
前記現在のフォルトが前記VMMへの制御の前記移行に関連しない場合、前記VMに前記現在のフォルトを送付する段階と、前記現在のフォルトの前記送付が正常終了した場合、対応するフォルト・ハンドラの命令が実行される前に、前記VMMに制御を移行し、前記シングルステップ・インジケータの値が、シングルステップ値を指示していることにより制御が前記VMMに移行されたことを前記VMMに通知する段階
を行う段階と、
を備える方法。
A step performed by single-step logic,
Receiving a request to transition control to the virtual machine (VM) from virtual machine monitor (VMM),
A step of determining that the single-step indicator is set to single-step values,
In response to determining that the single step indicator is set to a single step value,
The method comprising transferring control to the VM,
If the execution of the first instruction of the VM is successful, after the successful completion of said execution of the first instruction, the steps of transferring control to the VMM,
If the execution of the first instruction of the VM did not complete successfully due to a current fault caused by the execution of the first instruction , the current fault is related to a transfer of control to the VMM. Do the same steps for determining whether or not to,
A step of notifying that the current fault control in the VMM by the transition to and transfers control to the VMM if relevant the current fault control to the VMM is migrated to the VMM,
When the current fault is not related to the transfer of control to the VMM, and the stage to send the current of the fault to the VM, if the is the sending of the current fault was successful, the corresponding fault handler Before the instruction is executed , control is transferred to the VMM, and the value of the single step indicator indicates a single step value to notify the VMM that control has been transferred to the VMM. Stage and
And the stage of
A method comprising:
前記VMMへの制御の移行は、前記シングルステップ・インジケータの現在値により前記VMMに制御が移行されたことを、前記VMMに通知することを備える請求項1に記載の方法。  The method of claim 1, wherein the transfer of control to the VMM comprises notifying the VMM that control has been transferred to the VMM according to a current value of the single step indicator. 前記現在のフォルトの前記送付が失敗したことを判定する段階と、
新規フォルトが前記VMMへの制御の移行に関連するかどうかを判定する段階と、
前記新規フォルトが前記VMMへの制御の移行に関連する場合、前記VMMに制御を移行し、前記新規フォルトにより前記VMMに制御が移行されたことを前記VMMに通知する段階
を更に備える請求項1に記載の方法。
A step of determining that said sending of the current fault is unsuccessful,
A step determining whether a new fault is associated with transfer of control to the VMM,
Wherein when a new fault is associated with transfer of control to the VMM, the VMM to transfers control, the new fault in the claims, further comprising the steps of: notifying the VMM that control the VMM is migrated The method according to 1.
前記新規フォルトが前記VMMへの制御の前記移行に関連しないことを判定する段階と、
前記VMに前記新規フォルトを送付する段階と、
前記新規フォルトの前記送付が正常終了した場合、対応するフォルト・ハンドラの命令が実行される前に、前記VMMに制御を移行し、前記シングルステップ・インジケータの現在値により前記VMMに制御が移行されたことを前記VMMに通知する段階
を更に備える請求項3に記載の方法。
A step determining that the new fault is not associated with the transition of control to the VMM,
Comprising the steps of: sending the new fault to the VM,
If the delivery of the new fault is successful, control is transferred to the VMM before the corresponding fault handler instruction is executed, and control is transferred to the VMM according to the current value of the single step indicator. the method of claim 3, further comprising the steps of: notifying the VMM that was.
前記VMに制御を移行する前に、前記VMに制御を移行させる前記要求が、前記VMに送付されるベクタ化されたフォルトに関連することを判定する段階と、
前記VMに制御を移行するときに、前記VMに前記ベクタ化されたフォルトを送付する段階と、
前記ベクタ化されたフォルトの前記送付が正常終了した場合、
対応するフォルト・ハンドラの命令を実行するようにベクタ化された前記VMMに制御を移行し、前記シングルステップ・インジケータの現在値により前記VMMに制御が移行されたことを前記VMMに通知する段階
を更に備える請求項1から4のいずれか1項に記載の方法。
Before transfers control to the VM, the step of determining that the request to transfer control to the VM is associated with vectorized fault is sent to the VM,
When transfers control to the VM, the steps of sending the vectorized fault to the VM,
If the sending of the vectorized fault is successful,
Corresponding to migrate vectorized controlled by the VMM to execute instructions fault handler, the method comprising: notifying that control the VMM is migrated by the current value of the single-step indicator to the VMM The method according to any one of claims 1 to 4, further comprising:
前記ベクタ化されたフォルトの前記送付が失敗であったことを判定する段階と、
新規フォルトが前記VMMへの制御の移行に関連するかどうかを判定する段階と、
前記新規フォルトが前記VMMへの制御の前記移行に関連する場合、前記VMMに制御を移行し、前記新規フォルトにより前記VMMに制御が移行されたことを前記VMMに通知する段階と、
前記新規フォルトが前記VMMへの制御の前記移行に関連しない場合、前記VMに前記新規フォルトを送付し、対応するフォルト・ハンドラの命令を実行する前に前記VMMに制御を移行し、前記シングルステップ・インジケータの現在値により前記VMMに制御が移行されたことを前記VMMに通知する段階
を更に備える請求項5に記載の方法。
A step of determining that the sending of the vectorized fault has failed,
A step determining whether a new fault is associated with transfer of control to the VMM,
If the new fault is associated with the transfer of control to the VMM, the steps of notifying that the VMM to transfers control, the control to the VMM by new fault is migrated to the VMM,
If the new fault is not related to the transfer of control to the VMM, send the new fault to the VM and transfer control to the VMM before executing the corresponding fault handler instruction; · the method of claim 5, the current value further comprises the steps of notifying the VMM that control the VMM is migrated indicator.
前記VMに制御を移行する前に、前記VMに制御を移行させる前記要求がプロセッサの非活性活動状態に関連するかどうかを判定する段階と、
前記VMに制御を移行する段階と、
ブレークイベントの発生の後まで前記VMMへの制御の移行を自制する段階
を更に備える請求項1から6のいずれか1項に記載の方法。
Before transfers control to the VM, determining if said request to transition control to the VM is associated with inactive active state of the processor,
The method comprising transferring control to the VM,
The method according to any one of claims 1 to 6, further comprising the step of restraining the transfer of control to the VMM until after the occurrence of a break event.
前記ブレークイベントが前記VMMへの制御の移行に関連する場合、前記VMMに制御を移行し、前記ブレークイベントにより前記VMMに制御が移行されたことを前記VMMに通知することを更に備える請求項7に記載の方法。  8. If the break event is associated with a transfer of control to the VMM, further comprising transferring control to the VMM and notifying the VMM that control has been transferred to the VMM due to the break event. The method described in 1. 前記ブレークイベントが前記VMMへの制御の移行に関連しないことを判定する段階と、
前記VMに前記ブレークイベントを送付する段階と、
前記ブレークイベントの前記送付が正常終了した場合、対応するハンドラの命令を実行する前に、前記VMMに制御を移行し、前記シングルステップ・インジケータの現在値により前記VMMに制御が移行されたことを前記VMMに通知する段階と、
前記ブレークイベントの前記送付が失敗した場合、新規フォルトが前記VMMへの制御の移行に関連するかどうかを判定する段階と、
前記新規フォルトが前記VMMへの制御の前記移行に関連する場合、前記VMMに制御を移行し、前記新規フォルトにより前記VMMに制御が移行されたことを前記VMMに通知する段階と、
前記新規フォルトが前記VMMへの制御の前記移行に関連しない場合、対応するフォルト・ハンドラの命令を実行する前に、前記VMMに制御を移行し、前記シングルステップ・インジケータの現在値により前記VMMに制御が移行されたことを前記VMMに通知する段階
を更に備える請求項7または8に記載の方法。
A step of determining that the break event is not associated with transfer of control to the VMM,
Comprising the steps of: sending the break event in the VM,
If the sending of the break event ends normally, control is transferred to the VMM before executing the instruction of the corresponding handler, and control is transferred to the VMM according to the current value of the single step indicator. comprising the steps of: notifying the VMM,
If the sending of the break event fails, determining if the new fault is associated with transfer of control to the VMM,
If the new fault is associated with the transfer of control to the VMM, the steps of notifying that the VMM to transfers control, the control to the VMM by new fault is migrated to the VMM,
If the new fault is not related to the transfer of control to the VMM, control is transferred to the VMM before executing the corresponding fault handler instruction, and the current value of the single-step indicator returns to the VMM. the method according to claim 7 or 8 comprising that the control has been migrated further comprising: notifying the VMM.
前記シングルステップ・インジケータは、仮想マシン制御構造(VMCS)に含まれる請求項1から9のいずれか1項に記載の方法。The single-step indicators A method according to any one of claims 1 to 9 included in the virtual machine control structure (VMCS). 前記VMMに制御を移行する前に、保存動作状態インジケータにアクセスし、前記保存動作状態インジケータが保存値に設定されている場合、前記VMの動作状態の指示子を保存することを更に備える請求項1から10のいずれか1項に記載の方法。Accessing the save operation status indicator before transferring control to the VMM, and further comprising saving an indicator of the operation status of the VM if the save operation status indicator is set to a save value. The method according to any one of 1 to 10. 最初の命令の前記実行の後にシングルステップより高い優先度を有するイベントを検出する段階と、
前記優先度が高いイベントは前記VMMによって処理されるのかどうかを判定する段階と、
前記優先度が高いイベントが前記VMMによって処理される場合、前記VMMに制御を移行し、前記優先度が高いイベントにより前記VMMに制御が移行されたことを前記VMMに通知する段階と、
前記高い優先度のイベントが前記VMMによって処理されない場合、待機VM exitインジケータをシングルステップ値に設定し、高い優先度のイベントを処理するように指定されたソフトウェアに制御を移行する段階
を更に備える請求項1から11のいずれか1項に記載の方法。
And detecting an event having a higher priority than the single step after the execution of the first instruction,
Said high priority events and determining whether to be processed by the VMM,
If the high priority event is handled by the VMM, the steps of notifying that the VMM to transfers control, control on the VMM by the high priority event is migrated to the VMM,
If the high priority event is not handled by the VMM, further comprising the steps of transferring control of the standby VM exit indicator set to a single step value, the software designated to handle the higher priority event 12. A method according to any one of claims 1 to 11.
前記指定されたソフトウェアは、前記シングルステップ・インジケータの現在値により前記VMMに待機VM exitを送付する請求項12に記載の方法。  The method of claim 12, wherein the designated software sends a standby VM exit to the VMM with a current value of the single step indicator. 前記指定されたソフトウェアは、前記待機VM exitインジケータの現在値によりプロセッサに待機VM exitを前記VMMに送付させる要求をする請求項12または13に記載の方法。  The method according to claim 12 or 13, wherein the designated software requests a processor to send a standby VM exit to the VMM according to a current value of the standby VM exit indicator. 前記指定されたソフトウェアが動作を完了した後、前記シングルステップ・インジケータの現在値によりVM exitが待機中であることを検出する段階と、
前記VMMに制御を移行する段階と、
前記シングルステップ・インジケータの現在値により前記VMMに制御が移行されたことを前記VMMに通知する段階
を更に備える請求項12から14のいずれか1項に記載の方法。
And detecting that after the specified software has completed the operation, the current value of the single-step indicator VM exit is waiting,
The method comprising transfer control to the VMM,
The method according to any one of the single-step indicator that control the VMM is migrated by the current value of claims 12, further comprising the steps of: notifying the VMM 14.
仮想マシンモニタ(VMM)と、
シングルステップ・インジケータを格納する、前記VMMによって制御されるデータ構造と、
制御を仮想マシン(VM)に移行させる要求を前記VMMから受信し、前記シングルステップ・インジケータがシングルステップ値に設定されていることを判定し、前記シングルステップ・インジケータがシングルステップ値に設定されていることを判定することに応じて、前記VMの最初の命令の実行が正常終了した場合、前記最初の命令の前記正常終了の後に制御を前記VMMに移行し、前記VMの前記最初の命令の前記実行が、前記最初の命令の前記実行によって生じた現在のフォルトにより正常終了しなかった場合、前記現在のフォルトが前記VMMへの制御の移行に関連するかどうかどうかを判定し、
前記現在のフォルトが前記VMMへの制御の前記移行に関連するならば前記VMMに制御を移行して前記現在のフォルトにより前記VMMに制御が移行されたことを前記VMMに通知し、
前記現在のフォルトが前記VMMへの制御の前記移行に関連しない場合、前記現在のフォルトを前記VMに送付し、前記現在のフォルトの前記送付が正常終了した場合に、対応するフォルト・ハンドラの命令が実行される前に前記VMMに制御を移行し、前記シングルステップ・インジケータの値が、シングルステップ値を指示していることにより前記VMMに制御が移行されたことを前記VMMに通知する
シングルステップ・ロジックと
を備える装置。
A virtual machine monitor (VMM),
A data structure controlled by the VMM that stores a single step indicator;
A request is received from the VMM to transfer control to a virtual machine (VM), it is determined that the single step indicator is set to a single step value, and the single step indicator is set to a single step value. If the execution of the first instruction of the VM ends normally in response to determining that the first instruction of the VM is transferred, control is transferred to the VMM after the normal end of the first instruction. If the execution was not successful due to a current fault caused by the execution of the first instruction, determine whether the current fault is related to a transfer of control to the VMM;
If the current fault is related to the transfer of control to the VMM, transfer control to the VMM to notify the VMM that control has been transferred to the VMM due to the current fault;
If the current fault is not related to the transfer of control to the VMM, send the current fault to the VM, and if the delivery of the current fault is successful, the corresponding fault handler instruction Control to the VMM before execution is performed, and the value of the single step indicator indicates a single step value, thereby notifying the VMM that control has been transferred Single step・ A device with logic.
前記シングルステップ・ロジックは、前記シングルステップ・インジケータの現在値により前記VMMに制御が移行されたことを前記VMMに通知する請求項16に記載の装置。  The apparatus of claim 16, wherein the single step logic notifies the VMM that control has been transferred to the VMM according to a current value of the single step indicator. 1つ以上のインジケータを格納するメモリと、
仮想マシン(VM)のシングルステップが示されているかどうかを判定することを目的として前記1つ以上のインジケータを使用し、前記1つ以上のインジケータがシングルステップを示していることを判定することに応じて、前記VMの最初の命令を実行し、前記最初の命令の前記実行が正常終了した場合は、前記最初の命令の前記実行の前記正常終了の後に制御を仮想マシンモニタ(VMM)に移行し、前記VMの前記最初の命令の前記実行が、前記最初の命令の前記実行によって生じた現在のフォルトにより正常終了しなかった場合は、前記現在のフォルトが前記VMMへの制御の移行に関連するかどうかどうかを判定し、
前記現在のフォルトが前記VMMへの制御の前記移行に関連するならば前記VMMに制御を移行して前記現在のフォルトにより前記VMMに制御が移行されたことを前記VMMに通知し、
前記現在のフォルトが前記VMMへの制御の前記移行に関連しない場合、前記VMに前記現在のフォルトを送付し、前記現在のフォルトの前記送付が正常終了した場合、対応するフォルト・ハンドラの命令が実行される前に前記VMMに制御を移行し、前記1つ以上のインジケータの値が、シングルステップ値を指示していることにより前記VMMに制御が移行されたことを前記VMMに通知する、前記メモリに接続されたプロセッサと
を備えるシステム。
A memory for storing one or more indicators;
Using the one or more indicators for the purpose of determining whether a single step of a virtual machine (VM) is indicated, and determining that the one or more indicators indicate a single step. In response, if the first instruction of the VM is executed and the execution of the first instruction is normally completed, control is transferred to a virtual machine monitor (VMM) after the normal completion of the execution of the first instruction And if the execution of the first instruction of the VM was not successful due to a current fault caused by the execution of the first instruction , the current fault is related to the transfer of control to the VMM. Determine whether to
If the current fault is related to the transfer of control to the VMM, transfer control to the VMM to notify the VMM that control has been transferred to the VMM due to the current fault;
If the current fault is not related to the transfer of control to the VMM, send the current fault to the VM, and if the delivery of the current fault is successful, the corresponding fault handler instruction is Transferring control to the VMM before it is executed and notifying the VMM that control has been transferred to the VMM by the value of the one or more indicators indicating a single step value ; And a processor connected to memory.
前記プロセッサは、前記1つ以上のインジケータの値が、シングルステップ値を指示していることにより前記VMMに制御が移行されたことを、前記VMMに通知する請求項18に記載のシステム。The system of claim 18, wherein the processor notifies the VMM that control has been transferred to the VMM because the value of the one or more indicators indicates a single step value . 命令群を記録したマシン読み取り可能な媒体であって、
前記命令群が処理システムによって実行されることにより、前記処理システムのプロセッサに
仮想マシン(VM)に制御を移行させる要求を仮想マシンモニタ(VMM)から受信し、
シングルステップ・インジケータがシングルステップ値に設定されていることを判定し、前記シングルステップ・インジケータがシングルステップ値に設定されていることを判定することに応じて、
前記VMに制御を移行し、
前記VMの最初の命令の実行が正常終了した場合、前記最初の命令の前記実行の前記正常終了の後に前記VMMに制御を移行し、前記VMの前記最初の命令の前記実行が、前記最初の命令の前記実行によって生じた現在のフォルトにより正常終了しなかった場合は、前記現在のフォルトが前記VMMへの制御の移行に関連するかどうかどうかを判定し、
前記現在のフォルトが前記VMMへの制御の前記移行に関連するならば前記VMMに制御を移行して前記現在のフォルトにより前記VMMに制御が移行されたことを前記VMMに通知し、前記現在のフォルトが前記VMMへの制御の前記移行に関連しない場合、前記VMに前記現在のフォルトを送付し、前記現在のフォルトの前記送付が正常終了した場合、対応するフォルト・ハンドラの命令が実行される前に前記VMMに制御を移行し、前記シングルステップ・インジケータの値が、シングルステップ値を指示していることにより前記VMMに制御が移行されたことを前記VMMに通知する
媒体。
A machine readable medium recording instructions,
When the instruction group is executed by the processing system , the processor of the processing system
Receives a request from the virtual machine monitor (VMM) to transfer control to the virtual machine (VM),
In response to determining that the single step indicator is set to a single step value and determining that the single step indicator is set to a single step value,
Transfer control to the VM,
If execution of the first instruction of the VM is successful, control is transferred to the VMM after the normal completion of the execution of the first instruction, and the execution of the first instruction of the VM is If the current fault caused by the execution of the instruction did not complete successfully, determine whether the current fault is related to a transfer of control to the VMM;
If the current fault is related to the transfer of control to the VMM, transfer control to the VMM to notify the VMM that control has been transferred to the VMM due to the current fault; If a fault is not associated with the transfer of control to the VMM, send the current fault to the VM, and if the delivery of the current fault is successful, the corresponding fault handler instruction is executed. A medium that has previously transferred control to the VMM and notifies the VMM that control has been transferred because the value of the single step indicator indicates a single step value .
前記VMMへの制御の移行は、前記シングルステップ・インジケータの値が、シングルステップ値を指示していることにより前記VMMに制御が移行されたことを前記VMMに通知することを備える請求項20に記載のマシン読み取り可能な媒体。The control transfer to the VMM comprises notifying the VMM that control has been transferred to the VMM by the value of the single step indicator indicating a single step value. The machine-readable medium described.
JP2007502123A 2004-03-30 2005-03-25 Providing support for single step functionality of virtual machines in virtual machine environments Expired - Fee Related JP4688862B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/814,569 2004-03-30
US10/814,569 US7356735B2 (en) 2004-03-30 2004-03-30 Providing support for single stepping a virtual machine in a virtual machine environment
PCT/US2005/010156 WO2005098616A2 (en) 2004-03-30 2005-03-25 Providing support for single stepping a virtual machine in a virtual machine environment

Publications (2)

Publication Number Publication Date
JP2007525776A JP2007525776A (en) 2007-09-06
JP4688862B2 true JP4688862B2 (en) 2011-05-25

Family

ID=34964164

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007502123A Expired - Fee Related JP4688862B2 (en) 2004-03-30 2005-03-25 Providing support for single step functionality of virtual machines in virtual machine environments

Country Status (5)

Country Link
US (1) US7356735B2 (en)
EP (1) EP1735710A2 (en)
JP (1) JP4688862B2 (en)
CN (1) CN101189582B (en)
WO (1) WO2005098616A2 (en)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7302514B2 (en) * 2004-06-15 2007-11-27 Intel Corporation Device, system, and method of virtual machine memory mapping
US7305592B2 (en) * 2004-06-30 2007-12-04 Intel Corporation Support for nested fault in a virtual machine environment
US7607011B1 (en) * 2004-07-16 2009-10-20 Rockwell Collins, Inc. System and method for multi-level security on a network
US20060064528A1 (en) * 2004-09-17 2006-03-23 Hewlett-Packard Development Company, L.P. Privileged resource access
US8214830B2 (en) * 2005-01-19 2012-07-03 Intel Corporation Performance in a virtualization architecture with a processor abstraction layer
US7647589B1 (en) * 2005-02-07 2010-01-12 Parallels Software International, Inc. Methods and systems for safe execution of guest code in virtual machine context
US8170859B1 (en) * 2006-04-28 2012-05-01 Intel Corporation Methods, apparatuses and computer program products for simulating arbitrary unmodified code
US9280659B2 (en) * 2006-12-29 2016-03-08 Intel Corporation Methods and apparatus for remeasuring a virtual machine monitor
US8151264B2 (en) * 2007-06-29 2012-04-03 Intel Corporation Injecting virtualization events in a layered virtualization architecture
US8261284B2 (en) * 2007-09-13 2012-09-04 Microsoft Corporation Fast context switching using virtual cpus
US8447962B2 (en) * 2009-12-22 2013-05-21 Intel Corporation Gathering and scattering multiple data elements
US8397216B2 (en) * 2008-02-29 2013-03-12 International Business Machines Corporation Compiler for a declarative event-driven programming model
US8365149B2 (en) * 2008-02-29 2013-01-29 International Business Machines Corporation Debugger for a declarative event-driven programming model
US8627299B2 (en) * 2008-02-29 2014-01-07 International Business Machines Corporation Virtual machine and programming language for event processing
US8458232B1 (en) * 2009-03-31 2013-06-04 Symantec Corporation Systems and methods for identifying data files based on community data
US8356285B2 (en) * 2009-03-31 2013-01-15 Oracle America, Inc. Facilitated introspection of virtualized environments
KR101640769B1 (en) * 2009-11-06 2016-07-19 삼성전자주식회사 Virtual system and instruction executing method thereof
KR101651202B1 (en) * 2009-12-21 2016-08-26 삼성전자주식회사 Virtualization apparatus and method of operating thereof
US20120072638A1 (en) * 2010-09-16 2012-03-22 Unisys Corp. Single step processing of memory mapped accesses in a hypervisor
GB2489000B (en) 2011-03-14 2019-09-11 Advanced Risc Mach Ltd Diagnosing code using single step execution
US9912517B1 (en) 2012-08-23 2018-03-06 Amazon Technologies, Inc. Optimized deployment and execution of programs in a distributed computing environment
US9588788B1 (en) * 2012-08-23 2017-03-07 Amazon Technologies, Inc. Optimized communication between program components executing in virtual machines
WO2016088220A1 (en) * 2014-12-03 2016-06-09 株式会社日立製作所 Computer and control method for logical processors
CN104731616A (en) * 2015-03-25 2015-06-24 浪潮集团有限公司 Method for closing energy-saving mode of Intel CPU under Linux OS
US10402218B2 (en) 2016-08-30 2019-09-03 Intel Corporation Detecting bus locking conditions and avoiding bus locks
US10564995B2 (en) 2017-06-07 2020-02-18 Red Hat, Inc. Dynamic control of halt polling based on receiving a monitoring instruction executed by a guest
US11010280B1 (en) * 2019-03-13 2021-05-18 Parallels International Gmbh System and method for virtualization-assisted debugging
US11113094B1 (en) 2019-08-28 2021-09-07 Parallels International Gmbh Physical memory management for virtual machines
KR20210141156A (en) * 2020-05-15 2021-11-23 삼성전자주식회사 Handling operation system (OS) in a system for predicting and managing faulty memories based on page faults

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6376028A (en) * 1986-09-19 1988-04-06 Fujitsu Ltd Method for controlling execution of instruction step in virtual computer system

Family Cites Families (156)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3699532A (en) 1970-04-21 1972-10-17 Singer Co Multiprogramming control for a data handling system
US3996449A (en) 1975-08-25 1976-12-07 International Business Machines Corporation Operating system authenticator
US4162536A (en) 1976-01-02 1979-07-24 Gould Inc., Modicon Div. Digital input/output system and method
US4037214A (en) 1976-04-30 1977-07-19 International Business Machines Corporation Key register controlled accessing system
US4247905A (en) 1977-08-26 1981-01-27 Sharp Kabushiki Kaisha Memory clear system
US4278837A (en) 1977-10-31 1981-07-14 Best Robert M Crypto microprocessor for executing enciphered programs
US4276594A (en) 1978-01-27 1981-06-30 Gould Inc. Modicon Division Digital computer with multi-processor capability utilizing intelligent composite memory and input/output modules and method for performing the same
US4207609A (en) 1978-05-08 1980-06-10 International Business Machines Corporation Method and means for path independent device reservation and reconnection in a multi-CPU and shared device access system
JPS5823570B2 (en) 1978-11-30 1983-05-16 国産電機株式会社 Liquid level detection device
JPS5576447A (en) 1978-12-01 1980-06-09 Fujitsu Ltd Address control system for software simulation
US4307447A (en) 1979-06-19 1981-12-22 Gould Inc. Programmable controller
US4319323A (en) 1980-04-04 1982-03-09 Digital Equipment Corporation Communications device for data processing system
US4419724A (en) 1980-04-14 1983-12-06 Sperry Corporation Main bus interface package
US4366537A (en) 1980-05-23 1982-12-28 International Business Machines Corp. Authorization mechanism for transfer of program control or data between different address spaces having different storage protect keys
US4403283A (en) 1980-07-28 1983-09-06 Ncr Corporation Extended memory system and method
DE3034581A1 (en) 1980-09-13 1982-04-22 Robert Bosch Gmbh, 7000 Stuttgart READ-OUT LOCK FOR ONE-CHIP MICROPROCESSORS
JPS58140862A (en) 1982-02-16 1983-08-20 Toshiba Corp Mutual exclusion system
US4521852A (en) 1982-06-30 1985-06-04 Texas Instruments Incorporated Data processing device formed on a single semiconductor substrate having secure memory
JPS59111561A (en) 1982-12-17 1984-06-27 Hitachi Ltd Access controlling system of composite processor system
US4759064A (en) 1985-10-07 1988-07-19 Chaum David L Blind unanticipated signature systems
US4975836A (en) 1984-12-19 1990-12-04 Hitachi, Ltd. Virtual computer system
JPS61206057A (en) 1985-03-11 1986-09-12 Hitachi Ltd Address converting device
FR2592510B1 (en) 1985-12-31 1988-02-12 Bull Cp8 METHOD AND APPARATUS FOR CERTIFYING SERVICES OBTAINED USING A PORTABLE MEDIUM SUCH AS A MEMORY CARD
FR2601525B1 (en) 1986-07-11 1988-10-21 Bull Cp8 SECURITY DEVICE PROHIBITING THE OPERATION OF AN ELECTRONIC ASSEMBLY AFTER A FIRST SHUTDOWN OF ITS POWER SUPPLY
FR2601535B1 (en) 1986-07-11 1988-10-21 Bull Cp8 METHOD FOR CERTIFYING THE AUTHENTICITY OF DATA EXCHANGED BETWEEN TWO DEVICES CONNECTED LOCALLY OR REMOTELY THROUGH A TRANSMISSION LINE
FR2601476B1 (en) 1986-07-11 1988-10-21 Bull Cp8 METHOD FOR AUTHENTICATING EXTERNAL AUTHORIZATION DATA BY A PORTABLE OBJECT SUCH AS A MEMORY CARD
FR2618002B1 (en) 1987-07-10 1991-07-05 Schlumberger Ind Sa METHOD AND SYSTEM FOR AUTHENTICATING ELECTRONIC MEMORY CARDS
US5007082A (en) 1988-08-03 1991-04-09 Kelly Services, Inc. Computer software encryption apparatus
US4974159A (en) 1988-09-13 1990-11-27 Microsoft Corporation Method of transferring control in a multitasking computer system
US5079737A (en) 1988-10-25 1992-01-07 United Technologies Corporation Memory management unit for the MIL-STD 1750 bus
US5434999A (en) 1988-11-09 1995-07-18 Bull Cp8 Safeguarded remote loading of service programs by authorizing loading in protected memory zones in a terminal
FR2640798B1 (en) 1988-12-20 1993-01-08 Bull Cp8 DATA PROCESSING DEVICE COMPRISING AN ELECTRICALLY ERASABLE AND REPROGRAMMABLE NON-VOLATILE MEMORY
JPH02171934A (en) 1988-12-26 1990-07-03 Hitachi Ltd Virtual machine system
JPH02208740A (en) 1989-02-09 1990-08-20 Fujitsu Ltd Virtual computer control system
US5442645A (en) 1989-06-06 1995-08-15 Bull Cp8 Method for checking the integrity of a program or data, and apparatus for implementing this method
JP2590267B2 (en) 1989-06-30 1997-03-12 株式会社日立製作所 Display control method in virtual machine
US5022077A (en) 1989-08-25 1991-06-04 International Business Machines Corp. Apparatus and method for preventing unauthorized access to BIOS in a personal computer system
JP2825550B2 (en) 1989-09-21 1998-11-18 株式会社日立製作所 Multiple virtual space address control method and computer system
CA2010591C (en) 1989-10-20 1999-01-26 Phillip M. Adams Kernels, description tables and device drivers
CA2027799A1 (en) 1989-11-03 1991-05-04 David A. Miller Method and apparatus for independently resetting processors and cache controllers in multiple processor systems
US5075842A (en) 1989-12-22 1991-12-24 Intel Corporation Disabling tag bit recognition and allowing privileged operations to occur in an object-oriented memory protection mechanism
US5108590A (en) 1990-09-12 1992-04-28 Disanto Dennis Water dispenser
US5230069A (en) 1990-10-02 1993-07-20 International Business Machines Corporation Apparatus and method for providing private and shared access to host address and data spaces by guest programs in a virtual machine computer system
US5317705A (en) 1990-10-24 1994-05-31 International Business Machines Corporation Apparatus and method for TLB purge reduction in a multi-level machine system
US5287363A (en) 1991-07-01 1994-02-15 Disk Technician Corporation System for locating and anticipating data storage media failures
US5437033A (en) 1990-11-16 1995-07-25 Hitachi, Ltd. System for recovery from a virtual machine monitor failure with a continuous guest dispatched to a nonguest mode
US5255379A (en) 1990-12-28 1993-10-19 Sun Microsystems, Inc. Method for automatically transitioning from V86 mode to protected mode in a computer system using an Intel 80386 or 80486 processor
US5453003A (en) 1991-01-09 1995-09-26 Pfefferle; William C. Catalytic method
US5446904A (en) * 1991-05-17 1995-08-29 Zenith Data Systems Corporation Suspend/resume capability for a protected mode microprocessor
US5319760A (en) 1991-06-28 1994-06-07 Digital Equipment Corporation Translation buffer for virtual machines with address space match
US5522075A (en) * 1991-06-28 1996-05-28 Digital Equipment Corporation Protection ring extension for computers having distinct virtual machine monitor and virtual machine address spaces
US5455909A (en) 1991-07-05 1995-10-03 Chips And Technologies Inc. Microprocessor with operation capture facility
JPH06236284A (en) 1991-10-21 1994-08-23 Intel Corp Method for preservation and restoration of computer-system processing state and computer system
US5627987A (en) 1991-11-29 1997-05-06 Kabushiki Kaisha Toshiba Memory management and protection system for virtual memory in computer system
US5574936A (en) 1992-01-02 1996-11-12 Amdahl Corporation Access control mechanism controlling access to and logical purging of access register translation lookaside buffer (ALB) in a computer system
US5486529A (en) 1992-04-16 1996-01-23 Zeneca Limited Certain pyridyl ketones for treating diseases involving leukocyte elastase
US5421006A (en) 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5237616A (en) 1992-09-21 1993-08-17 International Business Machines Corporation Secure computer system having privileged and unprivileged memories
US5293424A (en) 1992-10-14 1994-03-08 Bull Hn Information Systems Inc. Secure memory card
US5796835A (en) 1992-10-27 1998-08-18 Bull Cp8 Method and system for writing information in a data carrier making it possible to later certify the originality of this information
JP2765411B2 (en) 1992-11-30 1998-06-18 株式会社日立製作所 Virtual computer system
US5668971A (en) 1992-12-01 1997-09-16 Compaq Computer Corporation Posted disk read operations performed by signalling a disk read complete to the system prior to completion of data transfer
JPH06187178A (en) 1992-12-18 1994-07-08 Hitachi Ltd Input and output interruption control method for virtual computer system
US5483656A (en) 1993-01-14 1996-01-09 Apple Computer, Inc. System for managing power consumption of devices coupled to a common bus
US5469557A (en) 1993-03-05 1995-11-21 Microchip Technology Incorporated Code protection in microcontroller with EEPROM fuses
FR2703800B1 (en) 1993-04-06 1995-05-24 Bull Cp8 Method for signing a computer file, and device for implementing it.
FR2704341B1 (en) 1993-04-22 1995-06-02 Bull Cp8 Device for protecting the keys of a smart card.
JPH06348867A (en) 1993-06-04 1994-12-22 Hitachi Ltd Microcomputer
FR2706210B1 (en) 1993-06-08 1995-07-21 Bull Cp8 Method for authenticating a portable object by an offline terminal, portable object and corresponding terminal.
US5555385A (en) 1993-10-27 1996-09-10 International Business Machines Corporation Allocation of address spaces within virtual machine compute system
US5825880A (en) 1994-01-13 1998-10-20 Sudia; Frank W. Multi-step digital signature method and system
US5459869A (en) 1994-02-17 1995-10-17 Spilo; Michael L. Method for providing protected mode services for device drivers and other resident software
US5604805A (en) 1994-02-28 1997-02-18 Brands; Stefanus A. Privacy-protected transfer of electronic information
FR2717286B1 (en) 1994-03-09 1996-04-05 Bull Cp8 Method and device for authenticating a data medium intended to allow a transaction or access to a service or a place, and corresponding medium.
US5684881A (en) 1994-05-23 1997-11-04 Matsushita Electric Industrial Co., Ltd. Sound field and sound image control apparatus and method
US5473692A (en) 1994-09-07 1995-12-05 Intel Corporation Roving software license for a hardware agent
US5539828A (en) 1994-05-31 1996-07-23 Intel Corporation Apparatus and method for providing secured communications
JPH0883211A (en) 1994-09-12 1996-03-26 Mitsubishi Electric Corp Data processor
US6058478A (en) * 1994-09-30 2000-05-02 Intel Corporation Apparatus and method for a vetted field upgrade
FR2725537B1 (en) 1994-10-11 1996-11-22 Bull Cp8 METHOD FOR LOADING A PROTECTED MEMORY AREA OF AN INFORMATION PROCESSING DEVICE AND ASSOCIATED DEVICE
US5903752A (en) * 1994-10-13 1999-05-11 Intel Corporation Method and apparatus for embedding a real-time multi-tasking kernel in a non-real-time operating system
US5606617A (en) 1994-10-14 1997-02-25 Brands; Stefanus A. Secret-key certificates
US5564040A (en) 1994-11-08 1996-10-08 International Business Machines Corporation Method and apparatus for providing a server function in a logically partitioned hardware machine
US5560013A (en) 1994-12-06 1996-09-24 International Business Machines Corporation Method of using a target processor to execute programs of a source architecture that uses multiple address spaces
US5555414A (en) 1994-12-14 1996-09-10 International Business Machines Corporation Multiprocessing system including gating of host I/O and external enablement to guest enablement at polling intervals
US5615263A (en) 1995-01-06 1997-03-25 Vlsi Technology, Inc. Dual purpose security architecture with protected internal operating system
US5764969A (en) 1995-02-10 1998-06-09 International Business Machines Corporation Method and system for enhanced management operation utilizing intermixed user level and supervisory level instructions with partial concept synchronization
FR2731536B1 (en) 1995-03-10 1997-04-18 Schlumberger Ind Sa METHOD FOR SECURE INFORMATION RECORDING ON A PORTABLE MEDIUM
US5717903A (en) 1995-05-15 1998-02-10 Compaq Computer Corporation Method and appartus for emulating a peripheral device to allow device driver development before availability of the peripheral device
JP3451595B2 (en) 1995-06-07 2003-09-29 インターナショナル・ビジネス・マシーンズ・コーポレーション Microprocessor with architectural mode control capable of supporting extension to two distinct instruction set architectures
US5684948A (en) 1995-09-01 1997-11-04 National Semiconductor Corporation Memory management circuit which provides simulated privilege levels
US5633929A (en) 1995-09-15 1997-05-27 Rsa Data Security, Inc Cryptographic key escrow system having reduced vulnerability to harvesting attacks
US5737760A (en) 1995-10-06 1998-04-07 Motorola Inc. Microcontroller with security logic circuit which prevents reading of internal memory by external program
JP3693721B2 (en) 1995-11-10 2005-09-07 Necエレクトロニクス株式会社 Microcomputer with built-in flash memory and test method thereof
US5657445A (en) 1996-01-26 1997-08-12 Dell Usa, L.P. Apparatus and method for limiting access to mass storage devices in a computer system
US5835594A (en) * 1996-02-09 1998-11-10 Intel Corporation Methods and apparatus for preventing unauthorized write access to a protected non-volatile storage
US5809546A (en) 1996-05-23 1998-09-15 International Business Machines Corporation Method for managing I/O buffers in shared storage by structuring buffer table having entries including storage keys for controlling accesses to the buffers
US6175925B1 (en) * 1996-06-13 2001-01-16 Intel Corporation Tamper resistant player for scrambled contents
US6205550B1 (en) * 1996-06-13 2001-03-20 Intel Corporation Tamper resistant methods and apparatus
US6178509B1 (en) * 1996-06-13 2001-01-23 Intel Corporation Tamper resistant methods and apparatus
US5729760A (en) 1996-06-21 1998-03-17 Intel Corporation System for providing first type access to register if processor in first mode and second type access to register if processor not in first mode
US6199152B1 (en) * 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
US5740178A (en) 1996-08-29 1998-04-14 Lucent Technologies Inc. Software for controlling a reliable backup memory
US6055637A (en) * 1996-09-27 2000-04-25 Electronic Data Systems Corporation System and method for accessing enterprise-wide resources by presenting to the resource a temporary credential
US5844986A (en) 1996-09-30 1998-12-01 Intel Corporation Secure BIOS
US5852717A (en) 1996-11-20 1998-12-22 Shiva Corporation Performance optimizations for computer networks utilizing HTTP
DE19649292A1 (en) * 1996-11-28 1998-06-04 Deutsche Telekom Ag Access protection method for pay television
US5901225A (en) * 1996-12-05 1999-05-04 Advanced Micro Devices, Inc. System and method for performing software patches in embedded systems
US5757919A (en) 1996-12-12 1998-05-26 Intel Corporation Cryptographically protected paging subsystem
US6412035B1 (en) * 1997-02-03 2002-06-25 Real Time, Inc. Apparatus and method for decreasing the response times of interrupt service routines
US6557104B2 (en) * 1997-05-02 2003-04-29 Phoenix Technologies Ltd. Method and apparatus for secure processing of cryptographic keys
US6044478A (en) * 1997-05-30 2000-03-28 National Semiconductor Corporation Cache with finely granular locked-down regions
US6075938A (en) * 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US6175924B1 (en) * 1997-06-20 2001-01-16 International Business Machines Corp. Method and apparatus for protecting application data in secure storage areas
US6035374A (en) * 1997-06-25 2000-03-07 Sun Microsystems, Inc. Method of executing coded instructions in a multiprocessor having shared execution resources including active, nap, and sleep states in accordance with cache miss latency
US6014745A (en) * 1997-07-17 2000-01-11 Silicon Systems Design Ltd. Protection for customer programs (EPROM)
US6212635B1 (en) * 1997-07-18 2001-04-03 David C. Reardon Network security system allowing access and modification to a security subsystem after initial installation when a master token is in place
DE19735948C1 (en) * 1997-08-19 1998-10-01 Siemens Nixdorf Inf Syst Method for improving controllability in data processing equipment with translation-look-aside-buffer (TLB)
US6182089B1 (en) * 1997-09-23 2001-01-30 Silicon Graphics, Inc. Method, system and computer program product for dynamically allocating large memory pages of different sizes
US6357004B1 (en) * 1997-09-30 2002-03-12 Intel Corporation System and method for ensuring integrity throughout post-processing
US6061794A (en) * 1997-09-30 2000-05-09 Compaq Computer Corp. System and method for performing secure device communications in a peer-to-peer bus architecture
US6378072B1 (en) * 1998-02-03 2002-04-23 Compaq Computer Corporation Cryptographic system
US6192455B1 (en) * 1998-03-30 2001-02-20 Intel Corporation Apparatus and method for preventing access to SMRAM space through AGP addressing
US6374286B1 (en) * 1998-04-06 2002-04-16 Rockwell Collins, Inc. Real time processor capable of concurrently running multiple independent JAVA machines
US6173417B1 (en) * 1998-04-30 2001-01-09 Intel Corporation Initializing and restarting operating systems
US6397242B1 (en) * 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
US6339815B1 (en) * 1998-08-14 2002-01-15 Silicon Storage Technology, Inc. Microcontroller system having allocation circuitry to selectively allocate and/or hide portions of a program memory address space
US6505279B1 (en) * 1998-08-14 2003-01-07 Silicon Storage Technology, Inc. Microcontroller system having security circuitry to selectively lock portions of a program memory address space
US6363485B1 (en) * 1998-09-09 2002-03-26 Entrust Technologies Limited Multi-factor biometric authenticating device and method
US7111290B1 (en) * 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US6560627B1 (en) * 1999-01-28 2003-05-06 Cisco Technology, Inc. Mutual exclusion at the record level with priority inheritance for embedded systems using one semaphore
US6188257B1 (en) * 1999-02-01 2001-02-13 Vlsi Technology, Inc. Power-on-reset logic with secure power down capability
US7225333B2 (en) * 1999-03-27 2007-05-29 Microsoft Corporation Secure processor architecture for use with a digital rights management (DRM) system on a computing device
US6684326B1 (en) * 1999-03-31 2004-01-27 International Business Machines Corporation Method and system for authenticated boot operations in a computer system of a networked computing environment
US6389537B1 (en) * 1999-04-23 2002-05-14 Intel Corporation Platform and method for assuring integrity of trusted agent communications
US6529909B1 (en) * 1999-08-31 2003-03-04 Accenture Llp Method for translating an object attribute converter in an information services patterns environment
JP2001148344A (en) * 1999-09-09 2001-05-29 Nikon Corp Aligner, method for controlling output of energy source, laser using the method and method for manufacturing device
US6535988B1 (en) * 1999-09-29 2003-03-18 Intel Corporation System for detecting over-clocking uses a reference signal thereafter preventing over-clocking by reducing clock rate
US6374317B1 (en) * 1999-10-07 2002-04-16 Intel Corporation Method and apparatus for initializing a computer interface
US6507904B1 (en) * 2000-03-31 2003-01-14 Intel Corporation Executing isolated mode instructions in a secure system running in privilege rings
US6678825B1 (en) * 2000-03-31 2004-01-13 Intel Corporation Controlling access to multiple isolated memories in an isolated execution environment
GB0020416D0 (en) * 2000-08-18 2000-10-04 Hewlett Packard Co Trusted system
JP2002351854A (en) * 2001-05-30 2002-12-06 Omron Corp Program execution device and portable information processing device
US20030018892A1 (en) * 2001-07-19 2003-01-23 Jose Tello Computer with a modified north bridge, security engine and smart card having a secure boot capability and method for secure booting a computer
US7191464B2 (en) * 2001-10-16 2007-03-13 Lenovo Pte. Ltd. Method and system for tracking a secure boot in a trusted computing environment
GB2382419B (en) * 2001-11-22 2005-12-14 Hewlett Packard Co Apparatus and method for creating a trusted environment
US6961806B1 (en) * 2001-12-10 2005-11-01 Vmware, Inc. System and method for detecting access to shared structures and for maintaining coherence of derived structures in virtualized multiprocessor systems
US7103771B2 (en) * 2001-12-17 2006-09-05 Intel Corporation Connecting a virtual token to a physical token
US6996748B2 (en) * 2002-06-29 2006-02-07 Intel Corporation Handling faults associated with operation of guest software in the virtual-machine architecture
US7318141B2 (en) * 2002-12-17 2008-01-08 Intel Corporation Methods and systems to control virtual machines
US7793286B2 (en) * 2002-12-19 2010-09-07 Intel Corporation Methods and systems to manage machine state in virtual machine operations
US7111200B2 (en) * 2003-04-17 2006-09-19 International Business Machines Corporation Apparatus and method for debugging a logical partition
US20050076186A1 (en) * 2003-10-03 2005-04-07 Microsoft Corporation Systems and methods for improving the x86 architecture for processor virtualization, and software systems and methods for utilizing the improvements
US7552426B2 (en) * 2003-10-14 2009-06-23 Microsoft Corporation Systems and methods for using synthetic instructions in a virtual machine
US7421689B2 (en) * 2003-10-28 2008-09-02 Hewlett-Packard Development Company, L.P. Processor-architecture for facilitating a virtual machine monitor
US7370181B2 (en) * 2004-06-22 2008-05-06 Intel Corporation Single stepping a virtual machine guest using a reorder buffer

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6376028A (en) * 1986-09-19 1988-04-06 Fujitsu Ltd Method for controlling execution of instruction step in virtual computer system

Also Published As

Publication number Publication date
WO2005098616A3 (en) 2006-11-02
JP2007525776A (en) 2007-09-06
US7356735B2 (en) 2008-04-08
CN101189582A (en) 2008-05-28
EP1735710A2 (en) 2006-12-27
WO2005098616A2 (en) 2005-10-20
US20050240819A1 (en) 2005-10-27
CN101189582B (en) 2010-09-01

Similar Documents

Publication Publication Date Title
JP4688862B2 (en) Providing support for single step functionality of virtual machines in virtual machine environments
EP1939754B1 (en) Providing protected access to critical memory regions
US9442868B2 (en) Delivering interrupts directly to a virtual processor
TW594493B (en) New processor mode for limiting the operation of guest software running on a virtual machine supported by a virtual machine monitor
US7748037B2 (en) Validating a memory type modification attempt
JP6017706B2 (en) Mechanisms that support reliability, availability, and maintainability (RAS) flows in peer monitors
JP6006248B2 (en) Instruction emulation processor, method and system
TWI556109B (en) Avoiding premature enabling of nonmaskable interrupts when returning from exceptions
JP4579972B2 (en) Method and apparatus for facilitating recognition of open event windows during execution of guest software in a virtual machine environment
US10120738B2 (en) Hypervisor techniques for performing non-faulting reads in virtual machines
JP2007506162A (en) Vector processing of interrupt or execution for return of operation of virtual machine
IL293321A (en) An apparatus and method for handling exceptions
US20120072638A1 (en) Single step processing of memory mapped accesses in a hypervisor
JP6920286B2 (en) Exception handling
JP5452336B2 (en) Peripheral device failure simulation system, peripheral device failure simulation method, and peripheral device failure simulation program
JP2018531462A6 (en) Exception handling
WO2018214482A1 (en) Method and apparatus for monitoring virtual machines
JP2013008188A (en) Computing machine, device management method, program and storage medium

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090908

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091208

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100616

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100616

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100707

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100810

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101109

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101125

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140225

Year of fee payment: 3

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

LAPS Cancellation because of no payment of annual fees