CN1973264A - 使用虚拟机扩展的cpu模拟方法 - Google Patents

使用虚拟机扩展的cpu模拟方法 Download PDF

Info

Publication number
CN1973264A
CN1973264A CNA2004800082896A CN200480008289A CN1973264A CN 1973264 A CN1973264 A CN 1973264A CN A2004800082896 A CNA2004800082896 A CN A2004800082896A CN 200480008289 A CN200480008289 A CN 200480008289A CN 1973264 A CN1973264 A CN 1973264A
Authority
CN
China
Prior art keywords
dog
watch
virtual machine
computer system
instruction code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2004800082896A
Other languages
English (en)
Other versions
CN1973264B (zh
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 CN1973264A publication Critical patent/CN1973264A/zh
Application granted granted Critical
Publication of CN1973264B publication Critical patent/CN1973264B/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45537Provision of facilities of other operating environments, e.g. WINE

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

根据一个实施方案,公开了一个计算机系统。该计算机系统包括中央处理单元(CPU),用于生成并控制运行模拟指令代码的虚拟机,并创建真实机的抽象,以使该计算机系统的真实操作系统的操作不受妨碍。

Description

使用虚拟机扩展的CPU模拟方法
版权声明:这里所包含的是受版权保护的材料。版权所有人不反对任何人按照专利与商标局的专利文件或记录中所出现的那样对专利公开进行复制,但是除此以外,版权所有人保留对版权的一切权利。
技术领域
本发明涉及中央处理单元(CPU)模拟器,本发明特别涉及在CPU上采用模拟代码的直接执行。
背景技术
用于CPU的软件模拟器(例如Gambit、Archsim等)在涉及集成电路设计、验证和调试的很多领域中具有广泛用途。这些模拟器一般被用在用于体系结构验证(功能和性能)的投产前(pre-silicon)软件开发(例如BIOS、操作系统、编译器、应用程序等)等等。通过在运行模拟器的主机上执行基准程序(benchmark),用户可以评估新CPU的指令集体系结构(ISA)。
根据模拟器产生的结果,用户可以修改或者证实新的CPU设计。而且,模拟器可以被扩展,以模拟整个PC平台的行为,包括总线和I/O设备(例如,SoftSDV平台模拟器)。用于这种模拟器的可能输入可以是被称作“模拟”OS或“宾客”OS的操作系统。
模拟代码(操作系统和应用程序)的规模和复杂性的不断增加要求改善当前的模拟技术并引入新技术,以便取得显著的模拟速度提升。如果被模拟的CPU和主机CPU体系结构接近(或者相同),则被模拟的指令可以被允许本机运行。但是,用于个人计算机的大多数操作系统对机器资源采取完全的控制。因此,如果被模拟的操作系统被允许本机运行,则它将在PC资源(CPU、设备、存储器等)上与主机操作系统发生冲突。
附图说明
在附图中以示例而非限制的方式图示说明了本发明,其中,类似的参考标记指示类似的元件,并且其中:
图1是计算机系统的一个实施方案的框图;
图2示出了模拟环境的一个实施方案的高层体系结构;以及
图3是全平台模拟器的操作的一个实施方案的流程图。
具体实施方式
描述了一种方法,使用对虚拟化的硬件支持来防止主机操作系统(OS)和宾客OS之间的冲突,并获得完全的虚拟化。在下面对本发明的详细描述中,为了提供对本发明的透彻理解,给出了许多具体的细节。但是,本领域的技术人员很清楚,无需这些具体细节也可以实现本发明。此外,为了突出本发明,公知的结构和设备被以框图形式而不是被详细地示出。
在说明书中提及“一个实施方案”或“实施方案”意指结合该实施方案所描述的特定特征、结构或特性被包括在本发明的至少一个实施方案中。短语“在一个实施方案中”在说明书中各处的出现不一定全都指的同一个实施方案。
图1是计算机系统100的一个实施方案的框图。计算机系统100包括耦合到总线105的中央处理单元(CPU)102。在一个实施方案中,CPU102是可以从加州圣克拉拉的英特尔公司获得的奔腾系列处理器中的处理器,包括奔腾II处理器系列、奔腾III处理器和奔腾IV处理器。或者也可以使用其他的处理器。
芯片组107也被耦合到总线105。芯片组107包括存储器控制中心(MCH)110。MCH110可以包括被耦合到主系统存储器115的存储器控制器112。主系统存储器115存储由CPU芯片组102内的处理器或包括在系统100中的任何其他设备执行的指令序列和数据。在一个实施方案中,主系统存储器115包括动态随机访问存储器(DRAM);但是,也可以使用其他的存储器类型来实现主系统存储器115。额外的设备也可以被耦合到总线105,例如多个CPU和/或多个系统存储器。
MCH110还可以包括耦合到图形加速器130的图形接口113。在一个实施方案中,图形接口113被通过加速图形端口(AGP)耦合到图形加速器130,加速图形端口(AGP)根据加州圣克拉拉的英特尔公司开发的AGP规范修订本2.0工作。
此外,中心接口将MCH110耦合到输入/输出控制中心(ICH)140。ICH140向计算机系统100内的输入/输出(I/O)设备提供接口。ICH140可以被耦合到遵循俄勒冈州波特兰的PCI特别兴趣组所开发的规范修订本2.1总线的外围元件互连总线。因此,ICH140包括PCI桥146,其提供到PCI总线142的接口。PCI桥146在CPU102和外围设备之间提供数据通路。
PCI总线142包括音频设备150和盘驱动器155。但是,本领域的普通技术人员将理解,其他设备也可以被耦合到PCI总线142。此外,本领域的普通技术人员将认识到,可以将CPU102和MCH110组合起来形成单个芯片。而且,在其他的实施方案中,图形加速器130可以被包括在MCH110中。
图2示出了用于模拟环境的体系结构200的一个实施方案。体系结构200包括运行模拟环境的硬件205。根据一个实施方案,硬件205支持Lagrande技术。Lagrande技术(LT)是在IA-32处理器上实现对虚拟机的支持的技术。对两种基本类别的软件予以支持:监控器(或者主机)和宾客。监控器软件(或者更简单些,“监控器”)在其运行时,对CPU102应当具有完全的控制。监控器向宾客软件展现处理器抽象,并允许其在CPU102上执行。但是,监控器应该能够保持对处理器资源、物理存储器、中断管理和I/O的控制。
根据一个实施方案,支持虚拟化的CPU102配备有新形式的处理器操作,称作虚拟机扩展(VMX)操作。在VMX操作中实现了新的指令集。此外,实现了被称作VM进入和VM退出的两种控制转移。这些转换由被称作虚拟机控制结构(或VMCS)的新结构来管理。
所有的宾客软件在VMX操作中运行。控制VMX操作执行的VMCS可以引起导致VM退出的某些事件、操作和状况。VM退出导致处理器把控制转移到通过控制VMCS所确定的监控器进入点。从而在VM退出之后,监控器获得对处理器的控制,并能够采取对导致VM退出的事件、操作或状况来说适当的动作。然后,它可以返回到VMCS通过VM进入所管理的上下文。
如果VM监控器恰当地构建了VMCS,则它能够防止宾客软件确定其正在VMX操作中运行。VMCS已经被设计成包括允许VM监控器虚拟化CPU102的机构。
参考图2,模拟环境包括直接执行环境210和主机OS环境220。直接执行环境210包括在虚拟机中运行的宾客代码(OS和/或应用程序)。当启动(或恢复)时,虚拟机硬件205执行从主机OS的上下文到宾客OS的上下文的全上下文切换,并允许宾客代码在CPU102上(以初始优先级并在初始虚拟地址上)本机运行。CPU102执行公共体系结构检查。在虚拟机中运行的同时,CPU102执行额外的检查,以发现虚拟化事件(在下面描述)。
主机OS环境220包括全平台模拟器222和监控器224。在一个实施方案中,全平台模拟器222以用户优先级运行。监控器224具有在系统优先级上运行的部分和以用户优先级运行的部分。监控器224控制宾客代码的执行,并代表直接执行环境210和主机OS环境220之间的桥梁。监控器224通过使用硬件205的支持来创建和恢复虚拟机(VM)。
此外,当在虚拟机中运行的代码试图执行敏感动作时,监控器224从虚拟机取回控制。这些不允许在VM中执行的敏感动作被称作“虚拟化事件”。在一个实施方案中,监控器224配置CPU:当运行在虚拟机中时应当检查哪些虚拟化事件,以及在恢复VM之后哪些状态成份应被加载/还原。
根据一个实施方案,虚拟化事件包括硬件中断、改变虚拟地址空间(页表)的企图、对设备的访问(例如I/O指令)、控制寄存器访问、页故障处理等。监控器224执行所需的状态同步,并处理虚拟化事件。
监控器224分析导致从虚拟机退出的原因,并执行适当的虚拟化操作。在一个实施方案中,监控器224处理虚拟化事件,并恢复直接执行环境。或者,监控器224把控制交给全平台模拟器222,用于模拟出错的指令。
在又一个实施方案中,监控器224以防止宾客OS损害主机OS的完整性的方式执行虚拟化操作。例如,监控器224管理在虚拟机中使用的页表,并把宾客虚拟地址映射到从主机存储器分配的物理地址而非宾客OS所期望的物理地址。
平台模拟器222在主机OS的顶层作为常规进程运行。图3是全平台模拟器222的操作的一个实施例的流程图。在处理块310,开始模拟。在判决块320,平台模拟器222确定是否切换到直接执行。
如果平台模拟器222决定切换到直接执行,则用启动(或恢复)直接执行的请求来调用监控器224,并且宾客状态在处理块330被虚拟化。否则,模拟在平台模拟器222处继续,处理块380。在处理块340,虚拟机被启动(或恢复)。随后,虚拟机开始运行宾客OS代码。
在宾客OS代码运行期间的某个时刻,发生了敏感(或虚拟化)事件。因此,在处理块350,退出虚拟机,并且当前状态被保存/还原。在判决块360,确定敏感事件是否是复杂事件。如果该事件并非复杂事件,则该事件是虚拟化事件,并且该虚拟化事件在处理块365被处理。随后,控制被返回到虚拟化宾客状态的处理块330。
如果该事件是复杂事件,则在处理块370,宾客状态被解除虚拟化。在处理块380,指令再次被模拟。在判决块390,确定模拟是否已经结束。如果没有,则控制被返回到处理块310,模拟在处理块310处继续。否则,模拟被停止。
上面的说明书部分描述了一种虚拟机体系结构,该体系结构实现了对可运行宾客(模拟)代码,同时创建真实机的完全抽象的虚拟机的创建、维护和控制的支持。因此,虚拟机扩展被用于敏感CPU事件的便捷检测,获得了在运行宾客(模拟)代码的虚拟机和虚拟机监控器之间进行切换的能力,其中虚拟机监控器是主机软件的组件。
虽然毫无疑问,在阅读过前面的描述之后,很多改变和修改对本领域普通技术人员将变得清晰,但是需要理解,以图示方式示出和描述的任何特定实施方案决不应该被视作限制性的。因此,对各个实施方案的细节的引用并非打算限制权利要求的范围,权利要求自身仅仅陈述了本发明的必要特征。

Claims (26)

1.一种计算机系统,包括:
中央处理单元(CPU),用于生成和控制运行模拟指令代码的虚拟机,并用于创建真实机的抽象,以使所述计算机系统的真实操作系统的操作不受妨碍。
2.如权利要求1所述的计算机系统,其中,所述CPU运行模拟指令代码和所述真实操作系统。
3.如权利要求1所述的计算机系统,还包括:
直接执行环境,用于存储模拟指令代码和相关数据;以及
主机操作系统环境。
4.如权利要求3所述的计算机系统,其中,所述主机操作系统环境包括:
监控器,用于使用硬件生成所述虚拟机;以及
平台模拟器,用于执行虚拟化事件的模拟。
5.如权利要求4所述的计算机系统,其中,所述监控器执行虚拟化操作。
6.如权利要求5所述的计算机系统,其中,只要所述虚拟机企图执行虚拟化事件,所述监控器就从所述虚拟机夺取控制。
7.如权利要求6所述的计算机系统,其中,所述监控器设置将由所述虚拟机检查的一列虚拟化事件。
8.如权利要求7所述的计算机系统,其中,所述监控器把控制交给所述监控器,用于处理所述虚拟化事件。
9.如权利要求8所述的计算机系统,其中,所述监控器在确定虚拟化事件的类型之后,执行特定的虚拟化操作。
10.如权利要求9所述的计算机系统,其中,所述监控器处理所述虚拟化事件,并把执行返回到监控器。
11.如权利要求9所述的计算机系统,其中,所述监控器把控制交给所述平台模拟器,用于模拟所述虚拟化事件。
12.如权利要求8所述的计算机系统,其中,所述监控器以防止所述模拟指令代码影响所述真实操作系统的方式来虚拟化操作。
13.一种方法,包括:
在实现虚拟机扩展(VMX)的中央处理单元(CPU)处模拟指令代码;
虚拟化模拟指令代码;
在所述CPU处启动虚拟机(VM);以及
在所述VM上执行模拟指令代码。
14.如权利要求13所述的方法,还包括:
检测敏感事件;
退出所述VM;以及
分析所述敏感事件。
15.如权利要求14所述的方法,还包括:
确定所述敏感事件是不是复杂事件;以及
如果所述敏感事件不是复杂事件,则虚拟化所述模拟指令代码。
16.如权利要求15所述的方法,还包括:在所述模拟指令代码被虚拟化之后,恢复所述VM。
17.如权利要求15所述的方法,还包括:如果所述敏感事件是复杂事件,则对所述模拟指令代码解除虚拟化;以及
模拟所述指令代码。
18.一种系统,包括:
硬件,用于生成和控制运行模拟指令代码的虚拟机,并用于创建真实机的抽象,以使计算机系统的真实操作系统的操作不受妨碍;
直接执行环境,用于存储模拟指令代码和相关数据;和
主机操作系统环境。
19.如权利要求18所述的系统,其中,所述主机操作系统环境包括:
监控器,用于使用所述硬件生成所述虚拟机;以及
平台模拟器,用于执行虚拟化事件的模拟。
20.如权利要求19所述的系统,其中,所述监控器执行虚拟化操作。
21.如权利要求20所述的系统,其中,只要所述虚拟机企图执行虚拟化事件,则所述监控器从所述虚拟机夺取控制。
22.如权利要求21所述的系统,其中,所述监控器设置将由所述虚拟机检查的一列虚拟化事件。
23.如权利要求22所述的系统,其中,所述监控器在确定虚拟化事件的类型之后,执行特定的虚拟化操作。
24.如权利要求23所述的系统,其中,所述监控器处理所述虚拟化事件,并恢复直接执行环境。
25.如权利要求24所述的系统,其中,所述监控器把控制交给所述平台模拟器,用于所述虚拟化事件的模拟。
26.如权利要求23所述的系统,其中,所述监控器以防止所述模拟指令代码影响所述真实操作系统的方式来虚拟化操作。
CN2004800082896A 2003-03-24 2004-02-11 使用虚拟机扩展的cpu模拟方法 Expired - Fee Related CN1973264B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/395,557 2003-03-24
US10/395,557 US20040193394A1 (en) 2003-03-24 2003-03-24 Method for CPU simulation using virtual machine extensions
PCT/US2004/004092 WO2004095283A2 (en) 2003-03-24 2004-02-11 A method for cpu simulation using virtual machine extensions

Publications (2)

Publication Number Publication Date
CN1973264A true CN1973264A (zh) 2007-05-30
CN1973264B CN1973264B (zh) 2013-02-13

Family

ID=32988600

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2004800082896A Expired - Fee Related CN1973264B (zh) 2003-03-24 2004-02-11 使用虚拟机扩展的cpu模拟方法

Country Status (5)

Country Link
US (1) US20040193394A1 (zh)
CN (1) CN1973264B (zh)
DE (1) DE112004000498T5 (zh)
GB (1) GB2414579A (zh)
WO (1) WO2004095283A2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8250641B2 (en) 2007-09-17 2012-08-21 Intel Corporation Method and apparatus for dynamic switching and real time security control on virtualized systems
CN104657197A (zh) * 2014-10-24 2015-05-27 中华电信股份有限公司 虚拟机自动扩展系统及方法

Families Citing this family (8)

* 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
US20070052715A1 (en) * 2005-09-07 2007-03-08 Konstantin Levit-Gurevich Device, system and method of graphics processing
US7900204B2 (en) * 2005-12-30 2011-03-01 Bennett Steven M Interrupt processing in a layered virtualization architecture
US8782641B2 (en) * 2006-01-24 2014-07-15 International Business Machines Corporation Tuning of work to meet performance goal
CN100456229C (zh) * 2006-09-30 2009-01-28 北京深思洛克软件技术股份有限公司 虚拟硬件系统及基于虚拟硬件系统的指令执行方法
US8875266B2 (en) * 2007-05-16 2014-10-28 Vmware, Inc. System and methods for enforcing software license compliance with virtual machines
US8719800B2 (en) * 2008-06-20 2014-05-06 Vmware, Inc. Accelerating replayed program execution to support decoupled program analysis
US11362807B2 (en) 2019-08-14 2022-06-14 R3 Llc Sealed distributed ledger system

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6397242B1 (en) * 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8250641B2 (en) 2007-09-17 2012-08-21 Intel Corporation Method and apparatus for dynamic switching and real time security control on virtualized systems
CN101399835B (zh) * 2007-09-17 2013-07-17 英特尔公司 用于虚拟系统上动态切换和实时安全性控制的方法和设备
CN104657197A (zh) * 2014-10-24 2015-05-27 中华电信股份有限公司 虚拟机自动扩展系统及方法
CN104657197B (zh) * 2014-10-24 2017-12-12 中华电信股份有限公司 虚拟机自动扩展系统及方法

Also Published As

Publication number Publication date
CN1973264B (zh) 2013-02-13
WO2004095283A2 (en) 2004-11-04
DE112004000498T5 (de) 2006-03-02
GB0513157D0 (en) 2005-08-03
US20040193394A1 (en) 2004-09-30
GB2414579A (en) 2005-11-30
WO2004095283A3 (en) 2005-11-03

Similar Documents

Publication Publication Date Title
US8504703B2 (en) Systems and methods for instruction sequence compounding in a virtual machine environment
Ben-Yehuda et al. The turtles project: Design and implementation of nested virtualization
KR101019937B1 (ko) 보안 운영 시스템 스위칭
CN101266563B (zh) 故障防护计算机支持助理
CN102207886B (zh) 虚拟机快速仿真辅助
CN112199162B (zh) 基于虚拟化磁盘双活容灾的磁盘快照方法、装置及介质
CN102141928A (zh) 虚拟环境下的数据处理方法、系统以及系统的部署方法
US20110029821A1 (en) Method and system for recording a selected computer process for subsequent replay
US9465617B1 (en) Implementing upcall from secure to non-secure mode by injecting exception into non-secure mode
CN105446834A (zh) 虚拟机快照的生成方法和装置
CN101557420A (zh) 虚拟机监控器高效网络通信的实现方法
CN109714314B (zh) 一种重现漏洞全生命周期的全息漏洞库的构建方法
CN102279769B (zh) 一种面向嵌入式Hypervisor 的中断虚拟化操作方法
TW201203103A (en) Operand size control
CN106020932B (zh) 一种用于kvm虚拟机系统的安全防护方法及系统
US20090013171A1 (en) Computer docking system using hardware abstraction
CN104598294A (zh) 用于移动设备的高效安全的虚拟化方法及其设备
CN1973264B (zh) 使用虚拟机扩展的cpu模拟方法
JPH09146777A (ja) 仮想サブシステムアーキテクチャ
CN101996090B (zh) 一种计算机及虚拟机下重置设备的方法
CN100514298C (zh) 异构硬件体系间软件移植的系统
CN113703924A (zh) 基于可信执行环境的安全虚拟机系统设计方法及系统
CN106909399A (zh) 一种基于服务器计算机的uefi固件实现方法
CN102662726A (zh) 虚拟机的模拟方法和计算机设备
EP2325747A2 (en) Virtual platform for prototyping system-on-chip designs

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130213

Termination date: 20150211

EXPY Termination of patent right or utility model