CN1659518A - 虚拟计算机结构中控制寄存器访问虚拟化性能的改进 - Google Patents
虚拟计算机结构中控制寄存器访问虚拟化性能的改进 Download PDFInfo
- Publication number
- CN1659518A CN1659518A CN03813694.5A CN03813694A CN1659518A CN 1659518 A CN1659518 A CN 1659518A CN 03813694 A CN03813694 A CN 03813694A CN 1659518 A CN1659518 A CN 1659518A
- Authority
- CN
- China
- Prior art keywords
- register
- parts
- data
- client software
- instruction
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/468—Specific access rights for resources, e.g. using capability register
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在一个实施例中,从客户软件接收属于一寄存器一个或多个部分的指令。此外,根据掩码域中对应所述寄存器所请求部分的指示符,确定是否所述客户软件可以访问该寄存器的所有请求部分。如果该客户软件可以访问所述寄存器所有请求的部分,则在该寄存器所请求的部分上执行从所述客户软件接收的指令。
Description
发明领域
本发明总的来说涉及虚拟计算机,更确切地说,涉及控制客户软件对虚拟计算机结构中的寄存器的访问。
发明背景
传统的虚拟计算机监视器(VMM)通常在计算机上运行,并且向其它软件呈现一个或多个虚拟计算机的抽象。每个虚拟计算机可作为一个自包含的平台,运行它自身的“客户操作系统”(即,由VMM操纵的操作系统)。该客户操作系统预期如同它在专用计算机而非虚拟计算机上运行一样进行操作。也就是说,该客户操作系统预期控制多种计算机操作且在这些操作中可访问硬件资源。该硬件资源可包括含处理器的资源(比如,控制寄存器)和存在于存储器中的资源(比如,描述符表)。
在虚拟计算机的环境中,VMM应能够对这些资源进行最终的控制,以提供对虚拟计算机的适当操作和不受虚拟计算机影响以及虚拟计算机之间的保护。为了实现该目的,VMM通常截取并仲裁所有由客户软件完成的到硬件资源的访问。特别地,当客户软件请求需要访问被保护硬件资源的操作时,对该操作的控制被转移到VMM,并随后保证访问的有效性,仿真客户软件所需要的功能并将控制转移回客户软件,从而保护硬件资源并对客户软件到硬件资源的访问进行虚拟化。因为被保护不受客户软件访问所需要的硬件资源元件的数量很大,而且这种访问是经常的,所以与这种保护和虚拟化相关的性能成本相当大。
被客户软件经常访问的硬件资源的一个例子是控制寄存器。比如,在因特尔奔腾(Intel Pentium)IV的指令集合结构(ISA)(本文中作为IA-32ISA引用)中,有数个用于配置处理器操作模式、控制存储器子系统配置及硬件资源等的控制寄存器。通常,当客户软件试图访问一个控制寄存器中的某个位时,该控制被转移到VMM,后者负责维持由客户软件启动的与该位相关的写操作和读操作之间的连贯性。也就是说,VMM控制允许客户软件向控制寄存器每个位写入的值以及客户软件从每个位读取的值。这种对控制寄存器访问的虚拟化产生了相当大的性能开销。
附图简述
通过举例阐述本发明,但本发明并不局限于此,在附图中,相同的标号表示相同的元件,其中:
图1示出了虚拟计算机环境100的一个实施例,在该环境中可操作本发明;
图2为过滤客户软件对诸如寄存器之类硬件资源访问的过程的一个实施例的流程图;
图3为使用一组准则过滤VM退出的过程的一个实施例的流程图;
图4为向诸如寄存器之类的硬件资源提供客户软件访问的附加过滤的过程的一个实施例的流程图;以及
图5为使用重定向映射在VMX操作中控制访问诸如寄存器之类硬件资源的过程的一个实施例的流程图。
具体实施方式
描述了一种控制客户软件访问虚拟计算机结构中寄存器的方法和装置。在以下的描述中,为了描述方便,阐述了许多特定的细节以提供对本发明的深入了解。但是,对于本领域技术人员来说相当明显的是,本发明可以在无这些特定细节的情况下实施。
下述某些部分的详细描述是以对计算机系统的寄存器或存储器中数据位上操作的算法和符号表示来阐述的。这些算法描述和表示是本领域技术人员在数据处理技术中使用的方式,从而最有效地将它们的工作实质传送给本领域中的其他技术人员。此处的算法通常被设计为导致所需结果的自连贯序列的操作。该操作是这些需要对物理量进行物理操作的一些操作。通常地,虽然不是必须的,但这些量采用能够被存储、转移、组合、比较或者以其它方式操纵的电信号或磁信号形式。主要是通用的原因,有时候将这些信号称作位、值、单元、码元、字符、项、数字等是方便的。
但是应该理解的是,所有这些以及类似的术语都与合适的物理量相关,并且仅仅是应用于这些量的方便的标号。除非是特别的描述,否则从以下的论述中很明显可以理解的是,贯穿本发明,应用诸如“处理”或“运算”或“计算”或“确定”等之类的术语的论述,可参考计算机系统的动作和处理或类似的电子运算设备,该设备操纵并将代表计算机系统寄存器和存储器中物理(电子)量的数据转换为类似的表示计算机系统存储器或寄存器或其它这种信息存储器、传送或显示设备中物理量的其它数据。
在随后对实施例的详细描述中,参考附图,该附图示出了可实现本发明的特定实施例。在附图中,相同的标号描述在几个视图中基本相同的元件。对这些实施例的详细描述足以使本领域技术人员能够实现本发明。可以利用其它的实施例,而且可在不脱离本发明保护范围前提下作出结构的、逻辑的以及电气上的变化。另外,可以理解的是,本发明的不同实施例,虽然不相同,但不一定互相排斥。例如,在一个实施例中描述的特定特征、结构或特性可包括在其它的实施例中。因此,以下的详细描述并不起限制的作用,而且本发明的保护范围是由所附的权利要求书以及这些权利要求所赋予的等效特征的完整保护所限定的。
图1示出了一个虚拟计算机环境的实施例100,本发明可在该环境中进行操作。在该实施例中,裸平台硬件116包含运算平台,该平台能够,比如执行标准操作系统(OS)或诸如VMM112之类虚拟计算机监视器(VMM)。VMM112,虽然通常以软件实现,但可以仿真并将裸机接口导出到更高级别的软件。这种更高级别的软件可包含一个标准或实时OS,可以是带有限操作系统功能的高度剥离的操作系统环境,可以不包括传统的OS工具等。另外,比如,VMM112可以在另一个VMM之内或之上运行。VMM及其通常的特征以及功能是本领域技术人员所熟知的,它们可以以软件、固件或通过结合多种技术来实现。
平台软件116包括处理器118和存储器120。处理器118可以是任何一种能够执行软件的处理器,比如微处理器、数字信号处理器、微控制器等。处理器118可包括用于执行本发明方法实施例的微码或硬编码的逻辑。
平台硬件116可以是个人计算机(PC)、主机、手提设备、便携式计算机、机顶盒或任何其它的运算系统。
存储器120可以是硬盘、软盘、随机存储器(RAM)、只读存储器(ROM)、闪存或任何其它类型可由存储器118读取的计算机媒质。存储器120可存储用于执行本发明方法实施例的指令。
VMM112向其它软件(即,“客户”软件)呈现一个或多个虚拟计算机(VM)的抽象,这可向多个客户提供相同或不同的抽象。图1示出了两个VM,102和114。在每个VM上运行的客户软件可包括诸如客户OS104或106之类的客户OS以及多个客户软件应用程序108-110。客户OS104和106中的每一个都期望控制对客户OS104或106所运行以及完成其它功能的VM102和114中的物理资源(比如,处理器寄存器、存储器和存储器-映射的I/O设备)的访问。
VMM112在保持对平台软件116内特权硬件资源的最终控制的同时,方便了客户软件所需的功能。特别地,一旦客户软件试图访问特权资源,对处理器的控制将被转移到VMM112,后者随即决定是执行所请求的操作(例如,为客户软件仿真、代理直接对平台硬件116的操作等等)还是拒绝对资源的访问以方便安全性、可靠性或其它机制。方便客户软件功能的动作可包括在一部分VMM112上的各种活动。VMM112的活动以及特性不应该限制本发明的保护范围。
在一个实施例中,从客户软件到VMM的控制转移由虚拟计算机控制结构(VMCS)122中的控制位的设置来确定。VMCS122中的设置可防止客户软件完成可导致其对某个特权硬件资源访问的操作。不同的客户软件可在不同的VMCS存储图像中执行不同的控制位设置,虽然在图1中只示出了一个这样的VMCS。VMCS122存在于存储器120中并由处理器118维持。值得注意的是,可在不损失共性的情况下,使用任何其它的数据结构(比如,单片高速缓存器、文件、查找表等)来存储VMCS122或与每个指定硬件资源相关的域。
当客户软件试图执行访问被保护资源的操作时,控制转移到VMM112。VMM112可以访问所有的平台硬件116。当这种转移发生时,VMM112接收对由客户软件启动的操作的控制。VMM112随后可以如上所述地完成这种操作或拒绝访问,并可以通过执行特殊的指令将控制转移回客户软件。通过这种机制对客户软件的控制在本文中被称为VMX操作,控制从客户软件到VMM的转移在本文中被称为VM退出。
在一个实施例中,某种指令的执行、某个例外和中断以及某个平台事件会引起VM退出。这些可能引起VM退出的原因在本文中被称为虚拟化事件。例如,当客户软件试图完成将导致其对某个特权硬件资源(比如,控制寄存器或IO端口)进行访问的操作(比如,指令)时,会产生VM退出。
在一个实施例中,当发生VM退出的时候,客户软件所使用的处理器状态的各分量被保存,并装载VMM112所需要的处理器状态的分量。该对处理器状态的保存和装载,取决于处理器ISA,并可以起到改变当前地址空间的作用(比如,在IA-32ISA中,当前地址空间由控制寄存器中的值决定,该值可被保存并在VM退出时恢复)。在一个实施例中,由客户软件使用的处理器状态的分量被存储在VMCS122的客户-状态区域中,而VMM112所需要的处理器状态的分量被存储在VMCS122的监视器-状态区域中。
在一个实施例中,当从VMM到客户软件的转移发生时,恢复在VM退出时保存的处理器状态,并使控制返回到客户OS104或106或客户应用程序108或110。
在一个实施例中,当发生VM退出的时候,控制被传递到VMM112上在VMCS122中描绘的特定入口点(比如,指令指针值)。在另一个实施例中,在形成通过重定向结构(比如IA-32ISA中的中断描述符表)的向量后,控制被传递到VMM112。另外,本领域所公知的其它机制也可用于将控制从客户软件转移到VMM112。
因为需要被保护不被客户软件访问的硬件资源元件的数量很大,而且这种访问是经常性的,所以与这种保护和虚拟化相关的性能成本相当大。另外,由客户软件启动的操作可包含对特权资源的访问,这不会对VM102和114的安全性及适当操作产生问题。例如,在IA-32ISA中,控制寄存器0(CR0)包括任务切换(TS)位,使用该位通过阻止对浮点状态的保存和恢复直到该状态被访问来优化内容切换。由客户OS通过清任务-切换标志(CLTS)指令对TS位的更新不太可能对VM102和114的系统安全和适当操作产生问题。相反,CR0的分页使能(PG)比特配置处理器操作模式,如此该比特必须由VMM112来控制。在某些情况下,VMM112不能允许客户软件禁用分页,因此VMM112必须控制客户软件试图这样做。
在一个实施例中,提供过滤机制以将由客户软件的访问所引起的VM退出数减少到如寄存器(比如,控制寄存器、通用寄存器、模型特定寄存器等)之类的硬件资源或基于存储器的资源(比如,存储器中的分页控制域等)。应该注意的是,虽然以下是参考一种寄存器来描述本发明典型实施例的,但在不丧失共性的前提下本发明的启示可应用于任何其它的硬件资源。
以下将更加详细地描述使用与每个指定硬件资源相关的一个或多个域的过滤机制功能。在一个实施例中,与每个指定硬件资源相关的域包含在VMCS122中。
图2为用于过滤客户软件到诸如寄存器之类的硬件资源的访问的过程200的一个实施例的流程图。该过程通过可包含硬件(比如,电路、专用逻辑、微码等)、软件(诸如在通用计算机系统或专用机器上运行)或两者组合的处理逻辑来实现。
参考图2,过程200开始于处理逻辑从客户软件接收属于寄存器一个或多个部分的指令(处理框202)。寄存器的部分可以是寄存器的某个特别的单比特,也可以是寄存器的多个比特(相邻的或非相邻的)。属于寄存器部分的指令可以是请求从寄存器部分读取数据的读指令,也可以是请求向寄存器部分写入数据的写指令。寄存器可以代表控制寄存器(比如,IA-32ISA中的CR0或CR4)、整数寄存器、或任何其它的寄存器或基于存储器的资源。
接下来,处理逻辑从掩码域读取相应的指示符(处理框204)。掩码域包括一组对应寄存器部分的指示符。例如,如果寄存器是32比特的控制寄存器(比如,IA-32ISA中的CR0或CR4),则掩码域可包括扩32个指示符,每个指示符对应控制寄存器的一个特殊比特。另外,因为寄存器可具有不使用的比特,所以掩码域可具有比寄存器中的比特数更少的指示符,由于某些其它原因,掩码域中的某些指示符可对应两个或更多的比特。掩码域中的每个指示符提供关于一部分是在客户控制下(即,允许客户软件访问寄存器的对应部分)还是在VMM控制下的信息。在本发明的实施例中,不具有对应掩码比特的寄存器中的比特假定为在客户的控制下。在本发明的另一个实施例中,它们被假定为在VMM的控制下。
在判决框206,处理逻辑根据来自掩码域的对应指示符,判定是否允许客户软件访问所有请求的寄存器部分。如果判定的结果是肯定的,则处理逻辑在所请求的寄存器部分执行指令(处理框208)。也就是说,处理逻辑从所请求的寄存器部分读取数据,或向该部分写入数据。
否则,如果在判决框206的判定结果是否定的,则在一个实施例中,处理逻辑将控制转移到VMM(处理框210)。
在一可替换的实施例中,使用额外的域来进一步减少控制被转移到VMM中的情况次数。该额外的域在本文中被称为影子值域。影子值域的每个部分对应寄存器的特定部分并存储客户软件期望在寄存器这部分看到的值。在本发明的一个实施例中,影子值域的值由VMM维持并存储在VMCS中。在一个实施例中,只有掩码域中的指示符指示客户软件无法访问这些寄存器部分的寄存器部分在影子值域中具有对应的部分。比如,在IA-32ISA中,如果不允许客户软件访问由掩码域中指示符的值所反映的CR0中的位1到位10,则影子值域的大小将被限制为对应CR0位1到位10的10位。在另一个实施例中,在掩码域中带一指示符的每个寄存器部分在影子值域中都有一个对应的部分。
图4为用于向诸如寄存器之类的硬件资源提供对客户软件访问的附加过滤的过程400的一个实施例的流程图。在一个实施例中,过程400代替了图2中的框210。该过程可通过可包含硬件(比如,电路、专用逻辑、微码等)、软件(诸如在通用计算机系统或专用机器上运行)或两者组合的处理逻辑来实现。
参考图4,过程400开始于处理框402,处理逻辑根据掩码域中所对应的一个或多个指示符来确定被访问的一个或多个寄存器部分是在VMM的控制下,如以上结合图2所描述的。
接下来,在判决框403,处理逻辑确定访问是否为向所请求寄存器部分写入数据的指令。如果确定的结果是肯定的,即访问是写指令,则处理逻辑对于所有在VMM控制下的部分确定,是否客户希望写入每个部分的数据等于读取影子域对应部分中存储的数据(判决框404)。如果该确定结果对于所有在VMM控制下的请求部分都是肯定的,则允许客户向在客户控制下的实际寄存器资源的所有部分写入数据(如掩码域中对应位所确定的)(处理框405),且随后过程400结束。如果该确定结果对于任何在VMM控制下的请求部分是否定的,则处理逻辑将控制转移到VMM(处理框406)。VMM随后根据其执行请求的需要更新影子值域和寄存资源的对应部分,并将控制转移回客户软件。
另外,如果由客户软件启动的指令是从所请求寄存器部分读取数据的指令,那么控制不会被转移到VMM。特别地,处理逻辑访问所有在VMM控制下的请求部分的影子值域的对应部分(处理框412),并将与来自客户控制下的资源部分的实际寄存器资源的值相组合的存储在这些影子值域部分中的数据返回给客户软件(处理框414)。
现在将参考图1更详细地描述以上较详细讨论的实施例,其中,控制到VMM的转移由VMX操作来支持。
在一个实施例中,VMM维持一组控制比特以配置哪些虚拟化事件将引起VM退出。该组控制比特在本文中被称为重定向映射。在一个实施例中,该重定向映射包含在图1的VMCS122中。一旦检测到发生了虚拟化事件,就咨询该重定向映射以找到与该虚拟化事件相关的无条件退出比特。该比特指示是否该虚拟化事件将无条件地发生一个VM退出。比如,重定向映射可为每个控制寄存器包括两个位,一个位控制在客户请求从控制寄存器读取数据时的VM退出,另一位控制客户请求向控制寄存器写入数据时的VM退出。
此外,在一个实施例中,对于每个指定的资源(比如,IA-32ISA中的CR0或CR4),重定向映射包括指示是否将为该资源使用掩码域的比特和指示是否将为该资源使用影子值域的比特。
图5为使用重定向映射在VMX操作中控制访问诸如寄存器之类的硬件资源的过程500的一个实施例的流程图。该过程可通过可包含硬件(比如,电路、专用逻辑、微码等)、软件(诸如在通用计算机系统或专用机器上运行)或两者组合的处理逻辑来实现。
参考图5,过程500开始于处理框502,处理逻辑识别出发生了由客户软件请求访问诸如控制寄存器之类的硬件资源的一部分所引起的虚拟化事件。该请求可以是从特定寄存器的一个或多个部分读取数据的指令,或者是向特定寄存器的一个或多个部分写入数据的指令。
在处理框503,处理逻辑咨询重定向映射以确定,是否设置了与该虚拟化事件相关的无条件退出比特(判决框506)。如果设置了该比特,则处理逻辑触发VM退出(处理框522)。比如,在IA-32ISA中,重定向映射可包括无条件引起向CR2写入、从CR0读取、向CR4写入等时的VM退出。
另外,如果未设置无条件退出比特,则处理逻辑进一步确定是否为该寄存器使用掩码域(判决框508)。通过使用在重定向映射中的指定比特来完成该确定。比如,在IA-32ISA中,在重定向映射中可以有指示是否用于CR0的掩码的比特、是否用于CR4的掩码的比特等。如果该掩码域不用于该寄存器,则处理逻辑在所请求的寄存器部分执行请求的读取或写入指令(处理框514)。不然的话,处理逻辑读取对应于所请求寄存器部分的掩码域比特(处理框510)。这些比特在本文中被称为请求的掩码域比特。检查请求的掩码域比特以确定是否设置了它们中的一个或多个(指示一个或多个对应的寄存器部分是在VMM的控制下)(判决框512)。
如果没有请求的掩码域比特被设置,即允许客户软件访问所有请求的寄存器部分,则处理逻辑在寄存器部分执行所请求的读取或写入指令(处理框514)。否则,如果设置了所请求掩码域中的任何比特,则处理逻辑根据重定向映射中的指定比特来确定是否为该寄存器使用影子值域(判决框516)。例如,在IA-32ISA中,在重定向映射中有指示是否有用于CR0访问、用于CR4访问等的影子值的比特。如果影子值域不用于该寄存器,则处理逻辑触发一个VM退出(处理框522)。
如果影子值域要被用于该寄存器,且由客户软件启动的请求是读取指令(判决框517),则处理逻辑读取对应这些设置在所请求的掩码域中并因此在VMM控制下的寄存器部分的影子值域的比特(处理框518)。这些来自影子值域的比特与来自实际寄存器的对应不设置且因此在客户控制下的所请求的掩码域中的比特相组合。这些组合的值随后被返回到客户软件。可从寄存器读取在被保护资源中不在掩码和/或影子值域中表示的比特的值。
如果要为寄存器使用影子值域,但由客户软件启动的请求是写入指令,则处理逻辑将请求要写入到VMM控制下寄存器比特的值与影子值域中对应比特的值作比较(判决框520)。如果这两个值相同,则对在客户控制下的所请求寄存器部分进行写入(处理框519)。换言之,对客户控制下的比特进行写入;而那些在VMM控制下的比特保持不变。在一个实施例中,可对寄存器中不在掩码和/或影子值域中表示的比特进行写入,如果假定它们在客户控制下的话。在另一个实施例中,数据不写到未表示的比特上,因为假定它们在VMM控制下。不然的话,如果在判决框520比较的两个值不同,则处理逻辑触发一个VM退出(处理框522)。
在一个实施例中,由VMM定义一组准则用于过滤VM退出。该准则基于存储在掩码域中和影子值域中的值与客户软件希望写到寄存器上的值的组合。图3为使用一组准则过滤VM退出的过程300的一个实施例的流程图。该过程可通过可包含硬件(比如,电路、专用逻辑、微码等)、软件(诸如在通用计算机系统或专用机器上运行)或两者组合的处理逻辑来实现。
参考图3,过程300开始于处理逻辑确定客户软件的访问是否是向寄存器写入数据的请求(判决框302)。如果该确定是否定的,即该访问是从寄存器读取数据的请求,则使用以下的表达式确定该读取请求的结果值:
DEST=(MF AND SVF)OR(NOT MF AND CRVAL),
其中,AND、NOT和OR是布尔逻辑位运算符,MF是掩码域的值,SVF是影子值域的值,而CRVAL是实际被保护的寄存器的当前值。如果寄存器中的对应位被VMM控制,则设置掩码域中的一位。不然的话,如果寄存器中的位被客户软件控制,则掩码域中的对应比特等于零。影子域中的位具有客户软件期望在寄存器的对应位中看到的值,且该值可以不同于实际寄存器的对应比特的当前值。
根据以上的表达式,如果由客户软件控制请求比特,则从寄存器读取数据,而如果由VMM控制请求比特,则从影子值域读取数据。
如果处理逻辑在判决框302确定客户软件的访问是写请求,则处理逻辑组合掩码域和影子值域的值(处理框304)如下所述:
INT1=MF AND SVF
此外,处理逻辑使用以下的表达式将掩码域的值与客户软件希望写入寄存器的值相组合(处理框306):
INT2=MF AND SRC,
其中,SRC是客户希望写入寄存器的值。
此外,处理逻辑比较在判决框308的两个组合。如果两个组合是相等的,即寄存器中的所有比特或是由客户软件控制,或是由VMM控制,且影子值域中对应比特的值与客户软件希望写入寄存器的值相等,则处理逻辑在处理框312执行以下的表达式:
CR=(MF AND CRVAL)OR(NOT MF AND SRC)。
根据这个表达式,如果寄存器中的比特由客户软件控制,则该比特将用客户软件希望写入的值更新。不然的话,寄存器中该比特的值将保持与原来相同且不会被更新。
另外,如果两个组合不相等,即寄存器中至少一个比特由VMM控制,且影子值域中对应比特的值与客户软件希望写入寄存器的值不相等,则处理逻辑在处理框310触发一个VM退出。
值得注意的是,对过程300的描述通过使用整个寄存器(比如,IA-32ISA中CR0寄存器的32比特)和32比特宽的掩码和影子值与而得到简化。本领域普通技术人员将理解,本发明的实施例可应用于只访问有限子集寄存器比特或访问多寄存器中的比特的读取和写入操作。另外,本领域技术人员将可以想到,本发明可以应用于在所包含的各种元件之间不是比特对比特对应关系的情况(比如,如果掩码中的比特应用于被保护资源中的多个比特)。
从而,以上描述了一种控制客户软件对硬件资源进行访问的方法和装置。可以理解的是,以上的描述旨在示例,而不是限制。本领域技术人员在阅读和理解了以上的描述之后,可以很明显地想到其它许多实施例。因此,本发明的保护范围应该由所附的权利要求以及这些权利要求所赋予的等效特征的全部范围来决定。
Claims (30)
1.一种方法,包含:
从客户软件接收属于寄存器一个或多个部分的指令;
根据对应所述寄存器一个或多个部分的掩码域中的一个或多个指示符来确定所述客户软件是否可以访问该寄存器的一个或多个部分;以及
如果所述客户软件可以访问所述寄存器一个或多个部分中的每一部分,则在该寄存器的一个或多个部分上执行所述指令。
2.如权利要求1所述的方法,其特征在于,所述掩码域包括一组指示符,该组指示符中的每个指示符对应于所述寄存器的一个特定部分并指示是否允许该寄存器的特定部分被客户软件访问。
3.如权利要求1所述的方法,其特征在于,所述寄存器的一个或多个部分的每一部分表示该寄存器的一个特定比特。
4.如权利要求1所述的方法,其特征在于,所述寄存器是控制寄存器。
5.如权利要求1所述的方法,其特征在于,属于所述寄存器一个或多个部分的所述指令是向该寄存器的一个或多个部分写入数据的指令。
6.如权利要求5所述的方法,其特征在于,在所述寄存器的一个或多个部分上执行指令,包括将数据写入到该寄存器的一个或多个部分。
7.如权利要求5所述的方法,其特征在于,还包含:
根据所述掩码域中的对应指示符,确定所述客户软件不可以访问所述寄存器一个或多个部分中的至少一部分;
检测所请求要写入所述寄存器一个或多个部分中至少一部分的数据不同于客户软件所期望的要被存储在所述寄存器一个或多个部分中至少一部分中的值;以及
将控制转移到虚拟计算机监视器(VMM)。
8.如权利要求5所述的方法,其特征在于,还包含:
根据所述掩码域中的对应指示符,确定所述客户软件不可以访问所述寄存器一个或多个部分中的至少一部分;
检测所请求要写入所述寄存器一个或多个部分中至少一部分的数据与客户软件所期望的要被存储在所述寄存器一个或多个部分中至少一部分中的值相同;以及
将数据写入到允许所述客户软件访问的寄存器的一个或多个部分中的任一部分。
9.如权利要求7所述的方法,其特征在于,检测所述数据不同于所期望的要被存储在所述寄存器一个或多个部分中的值包括,将该数据与影子值域的一个或多个对应部分的值作比较。
10.如权利要求9所述的方法,其特征在于,还包含:
VMM用所述的数据更新所述影子值域。
11.如权利要求1所述的方法,其特征在于,属于所述寄存器一部分的所述指令是从所述寄存器一个或多个部分读取数据的指令。
12.如权利要求11所述的方法,其特征在于,在所述寄存器一个或多个部分上执行指令包括,从所述寄存器的一个或多个部分读取数据。
13.如权利要求11所述的方法,其特征在于,还包含:
根据所述掩码域中的一个或多个对应的指示符,确定所述客户软件不可以访问所述寄存器一个或多个部分中的至少一部分;
访问允许所述客户软件访问的所述寄存器一个或多个部分中的任一部分;
访问影子值域中对应于所述寄存器一个或多个部分中至少一部分的一个或多个部分;
将存储在所述影子值域一个或多个对应部分中的数据与存储在允许客户软件访问的寄存器的一个或多个部分中任一部分中的数据进行组合;以及
将所组合的数据返回到所述客户软件。
14.一种系统,包含:
存储器;以及
处理器,耦连到所述存储器,用于从客户软件接收属于寄存器一个或多个部分的指令,根据掩码域中对应所述寄存器一个或多个部分的一个或多个指示符确定所述客户软件是否可以访问所述寄存器的一个或多个部分,并且如果所述客户软件可以访问所述寄存器一个或多个部分的每一部分则在所述寄存器的一个或多个部分上执行所述指令。
15.如权利要求14所述的系统,其特征在于,所述掩码域包括一组指示符,该组指示符中的每个指示符对应所述寄存器的一个特定部分并指示是否允许该寄存器的特定部分被客户软件访问。
16.如权利要求14所述的系统,其特征在于,所述寄存器的一个或多个部分的每一部分表示该寄存器的一个特定位。
17.如权利要求14所述的系统,其特征在于,所述寄存器是控制寄存器。
18.如权利要求14所述的系统,其特征在于,属于所述寄存器一个或多个部分的所述指令是向该寄存器的一个或多个部分写入数据的指令。
19.如权利要求18所述的系统,其特征在于,在所述寄存器的一个或多个部分上执行指令,包括将数据写入到该寄存器的一个或多个部分。
20.如权利要求18所述的系统,其特征在于,所述处理器进一步根据所述掩码域中的对应指示符确定所述客户软件不可以访问所述寄存器一个或多个部分中的至少一部分,检测所请求要写入所述寄存器一个或多个部分中至少一部分的数据不同于客户软件所期望的要被存储在所述寄存器一个或多个部分中至少一部分中的值,以及将控制转移到虚拟计算机监视器(VMM)。
21.如权利要求18所述的系统,其特征在于,所述处理器进一步根据所述掩码域中的对应指示符确定所述客户软件不可以访问所述寄存器一个或多个部分中的至少一部分,检测所请求要写入所述寄存器一个或多个部分中至少一部分的数据与客户软件所期望的要被存储在所述寄存器一个或多个部分中至少一部分中的值相同,以及将数据写入到允许所述客户软件访问的寄存器的一个或多个部分中的任一部分。
22.如权利要求20所述的系统,其特征在于,所述处理器通过将所述数据与影子值域的一个或多个对应部分的值作比较来检测该数据不同于所期望的要被存储在所述寄存器一个或多个部分中的值。
23.如权利要求18所述的系统,其特征在于,所述处理器进一步用所述的数据更新所述影子值域。
24.如权利要求18所述的系统,其特征在于,属于所述寄存器一部分的所述指令是从所述寄存器一个或多个部分读取数据的指令。
25.如权利要求24所述的系统,其特征在于,在所述寄存器一个或多个部分上执行指令包括,从所述寄存器的一个或多个部分读取数据。
26.如权利要求24所述的系统,其特征在于,所述处理器进一步根据所述掩码域中一个或多个对应的指示符确定所述客户软件不可以访问所述寄存器一个或多个部分中的至少一部分,访问允许所述客户软件访问的所述寄存器一个或多个部分中的任一部分,访问影子值域中对应所述寄存器一个或多个部分中至少一部分的一个或多个部分,将存储在所述影子值域一个或多个对应部分中的数据与存储在允许客户软件访问的寄存器的一个或多个部分中任一部分中的数据进行组合,以及将所组合的数据返回到所述客户软件。
27.一种包含指令的计算机可读介质,该指令当由处理系统执行时使该处理系统实现一方法,该方法包括:
从客户软件接收属于寄存器一个或多个部分的指令;
根据对应所述寄存器一个或多个部分的掩码域中的一个或多个指示符来确定所述客户软件是否可以访问该寄存器的一个或多个部分;以及
如果所述客户软件可以访问所述寄存器一个或多个部分中的每一部分,则在该寄存器的部分上执行所述指令。
28.如权利要求27所述的计算机可读介质,其特征在于,所述掩码域包括一组指示符,该组指示符中的每个指示符对应所述寄存器的一个特定部分并指示是否允许该寄存器的特定部分被客户软件访问。
29.如权利要求27所述的计算机可读介质,其特征在于,所述寄存器的一个或多个部分的每一部分表示该寄存器的一个特定比特。
30.如权利要求27所述的计算机可读介质,其特征在于,所述寄存器是控制寄存器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/124,641 | 2002-04-16 | ||
US10/124,641 US7127548B2 (en) | 2002-04-16 | 2002-04-16 | Control register access virtualization performance improvement in the virtual-machine architecture |
PCT/US2003/009482 WO2003090070A2 (en) | 2002-04-16 | 2003-03-27 | Control register access virtualization performance improvement in the virtual-machine architecture |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1659518A true CN1659518A (zh) | 2005-08-24 |
CN1659518B CN1659518B (zh) | 2010-05-05 |
Family
ID=29248379
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN03813694.5A Expired - Fee Related CN1659518B (zh) | 2002-04-16 | 2003-03-27 | 虚拟计算机中控制寄存器访问虚拟化性能的方法及系统 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7127548B2 (zh) |
EP (1) | EP1520227A2 (zh) |
KR (1) | KR100667146B1 (zh) |
CN (1) | CN1659518B (zh) |
AU (1) | AU2003224791A1 (zh) |
TW (1) | TWI252427B (zh) |
WO (1) | WO2003090070A2 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101162443B (zh) * | 2006-10-10 | 2012-06-27 | 瑞萨电子株式会社 | 数据处理器 |
CN101490646B (zh) * | 2006-08-08 | 2013-10-16 | 英特尔公司 | 虚拟化性能计数器 |
CN107977251A (zh) * | 2016-10-21 | 2018-05-01 | 超威半导体(上海)有限公司 | 对在虚拟化系统中的共享寄存器的排他访问 |
CN109240801A (zh) * | 2011-10-28 | 2019-01-18 | 英特尔公司 | 在没有vmm介入的情况下对调用vmm配置的服务的指令集支持 |
Families Citing this family (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7069442B2 (en) | 2002-03-29 | 2006-06-27 | Intel Corporation | System and method for execution of a secured environment initialization instruction |
US7124327B2 (en) * | 2002-06-29 | 2006-10-17 | Intel Corporation | Control over faults occurring during the operation of guest software in the virtual-machine architecture |
US6996748B2 (en) * | 2002-06-29 | 2006-02-07 | Intel Corporation | Handling faults associated with operation of guest software in the virtual-machine architecture |
US7278030B1 (en) * | 2003-03-03 | 2007-10-02 | Vmware, Inc. | Virtualization system for computers having multiple protection mechanisms |
GB0318045D0 (en) * | 2003-08-01 | 2003-09-03 | Mjm Internat Ltd | Foundation garment |
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 |
US7475002B1 (en) * | 2004-02-18 | 2009-01-06 | Vmware, Inc. | Method and apparatus for emulating multiple virtual timers in a virtual computer system when the virtual timers fall behind the real time of a physical computer system |
US7418584B1 (en) * | 2004-05-11 | 2008-08-26 | Advanced Micro Devices, Inc. | Executing system management mode code as virtual machine guest |
US7500244B2 (en) * | 2004-06-30 | 2009-03-03 | Intel Corporation | Adaptive algorithm for selecting a virtualization algorithm in virtual machine environments |
US20060005190A1 (en) * | 2004-06-30 | 2006-01-05 | Microsoft Corporation | Systems and methods for implementing an operating system in a virtual machine environment |
US7562179B2 (en) * | 2004-07-30 | 2009-07-14 | Intel Corporation | Maintaining processor resources during architectural events |
US8843727B2 (en) * | 2004-09-30 | 2014-09-23 | Intel Corporation | Performance enhancement of address translation using translation tables covering large address spaces |
US9753754B2 (en) * | 2004-12-22 | 2017-09-05 | Microsoft Technology Licensing, Llc | Enforcing deterministic execution of threads of guest operating systems running in a virtual machine hosted on a multiprocessor machine |
US8627315B2 (en) * | 2004-12-31 | 2014-01-07 | Intel Corporation | Apparatus and method for cooperative guest firmware |
US20070006178A1 (en) * | 2005-05-12 | 2007-01-04 | Microsoft Corporation | Function-level just-in-time translation engine with multiple pass optimization |
US7496495B2 (en) * | 2005-05-12 | 2009-02-24 | Microsoft Corporation | Virtual operating system device communication relying on memory access violations |
US7363463B2 (en) | 2005-05-13 | 2008-04-22 | Microsoft Corporation | Method and system for caching address translations from multiple address spaces in virtual machines |
US7904903B2 (en) * | 2005-06-30 | 2011-03-08 | Intel Corporation | Selective register save and restore upon context switch using trap |
US7953980B2 (en) | 2005-06-30 | 2011-05-31 | Intel Corporation | Signed manifest for run-time verification of software program identity and integrity |
US8312452B2 (en) * | 2005-06-30 | 2012-11-13 | Intel Corporation | Method and apparatus for a guest to access a privileged register |
US8839450B2 (en) | 2007-08-02 | 2014-09-16 | Intel Corporation | Secure vault service for software components within an execution environment |
US9785485B2 (en) | 2005-07-27 | 2017-10-10 | Intel Corporation | Virtualization event processing in a layered virtualization architecture |
US7752436B2 (en) | 2005-08-09 | 2010-07-06 | Intel Corporation | Exclusive access for secure audio program |
US7555592B1 (en) * | 2005-08-23 | 2009-06-30 | Parallels Software International, Inc. | Kernel acceleration technology for virtual machine optimization |
US7581085B1 (en) | 2005-09-08 | 2009-08-25 | Parallels Software International, Inc. | Fast stub and frame technology for virtual machine optimization |
US7748037B2 (en) * | 2005-09-22 | 2010-06-29 | Intel Corporation | Validating a memory type modification attempt |
US20070067590A1 (en) * | 2005-09-22 | 2007-03-22 | Uday Savagaonkar | Providing protected access to critical memory regions |
US7610431B1 (en) * | 2005-10-14 | 2009-10-27 | Sun Microsystems, Inc. | Configuration space compaction |
US8909946B2 (en) | 2005-11-15 | 2014-12-09 | Microsoft Corporation | Efficient power management of a system with virtual machines |
US7434003B2 (en) | 2005-11-15 | 2008-10-07 | Microsoft Corporation | Efficient operating system operation on a hypervisor |
US7506121B2 (en) * | 2005-12-30 | 2009-03-17 | Intel Corporation | Method and apparatus for a guest to access a memory mapped device |
US8694712B2 (en) | 2006-12-05 | 2014-04-08 | Microsoft Corporation | Reduction of operational costs of virtual TLBs |
US8776041B2 (en) * | 2007-02-05 | 2014-07-08 | Microsoft Corporation | Updating a virtual machine monitor from a guest partition |
US7984483B2 (en) | 2007-04-25 | 2011-07-19 | Acxess, Inc. | System and method for working in a virtualized computing environment through secure access |
US8561060B2 (en) | 2007-04-26 | 2013-10-15 | Advanced Micro Devices, Inc. | Processor and method configured to determine an exit mechanism using an intercept configuration for a virtual machine |
US8032897B2 (en) | 2007-07-31 | 2011-10-04 | Globalfoundries Inc. | Placing virtual machine monitor (VMM) code in guest context to speed memory mapped input/output virtualization |
US8099718B2 (en) | 2007-11-13 | 2012-01-17 | Intel Corporation | Method and system for whitelisting software components |
US8307360B2 (en) * | 2008-01-22 | 2012-11-06 | Advanced Micro Devices, Inc. | Caching binary translations for virtual machine guest |
US20090300307A1 (en) * | 2008-05-30 | 2009-12-03 | International Business Machines Corporation | Protection and security provisioning using on-the-fly virtualization |
US8151099B2 (en) * | 2008-07-01 | 2012-04-03 | Caterpillar Inc. | Virtualized service tool and virtualized control tool |
US8516564B2 (en) * | 2008-07-18 | 2013-08-20 | International Business Machines Corporation | Secure user interaction using virtualization |
US10802990B2 (en) * | 2008-10-06 | 2020-10-13 | International Business Machines Corporation | Hardware based mandatory access control |
US8364601B2 (en) * | 2008-12-31 | 2013-01-29 | Intel Corporation | Methods and systems to directly render an image and correlate corresponding user input in a secure memory domain |
US20100180276A1 (en) * | 2009-01-15 | 2010-07-15 | Jiva Azeem S | Application partitioning across a virtualized environment |
JP4961459B2 (ja) * | 2009-06-26 | 2012-06-27 | 株式会社日立製作所 | 仮想計算機システムおよび仮想計算機システムにおける制御方法 |
US8286164B2 (en) | 2009-08-07 | 2012-10-09 | International Business Machines Corporation | Secure recursive virtualization |
JP5491102B2 (ja) * | 2009-08-27 | 2014-05-14 | ルネサスエレクトロニクス株式会社 | データプロセッサ |
JP5493125B2 (ja) * | 2010-02-05 | 2014-05-14 | 株式会社日立製作所 | 仮想化方法及び計算機 |
US20120060155A1 (en) * | 2010-09-02 | 2012-03-08 | Keys Gregory C | Method, system, and computer readable medium for workflow communication wherein instructions to a workflow application are written by the workflow application |
WO2013101246A1 (en) * | 2011-12-31 | 2013-07-04 | Intel Corporation | Processor that detects when system management mode attempts to reach program code outside of protected space |
US9223602B2 (en) * | 2012-12-28 | 2015-12-29 | Intel Corporation | Processors, methods, and systems to enforce blacklisted paging structure indication values |
TWI497417B (zh) * | 2014-07-22 | 2015-08-21 | Nat Univ Tsing Hua | 虛擬機器之資料存取方法、資料存取系統與主控端模組 |
US10162660B2 (en) * | 2015-12-03 | 2018-12-25 | International Business Machines Corporation | Application-level processor parameter management |
US10963280B2 (en) | 2016-02-03 | 2021-03-30 | Advanced Micro Devices, Inc. | Hypervisor post-write notification of control and debug register updates |
US10042571B2 (en) * | 2016-03-31 | 2018-08-07 | Intel Corporation | Techniques to provide run-time protections using immutable regions of memory |
US10180789B2 (en) | 2017-01-26 | 2019-01-15 | Advanced Micro Devices, Inc. | Software control of state sets |
US10558489B2 (en) | 2017-02-21 | 2020-02-11 | Advanced Micro Devices, Inc. | Suspend and restore processor operations |
US11281495B2 (en) | 2017-10-26 | 2022-03-22 | Advanced Micro Devices, Inc. | Trusted memory zone |
Family Cites Families (149)
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 (ja) * | 1978-11-30 | 1983-05-16 | 国産電機株式会社 | 液面検出装置 |
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 |
US4307214A (en) * | 1979-12-12 | 1981-12-22 | Phillips Petroleum Company | SC2 activation of supported chromium oxide catalysts |
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 (de) * | 1980-09-13 | 1982-04-22 | Robert Bosch Gmbh, 7000 Stuttgart | Auslesesicherung bei einchip-mikroprozessoren |
JPS58140862A (ja) * | 1982-02-16 | 1983-08-20 | Toshiba Corp | 相互排他方式 |
US4521852A (en) * | 1982-06-30 | 1985-06-04 | Texas Instruments Incorporated | Data processing device formed on a single semiconductor substrate having secure memory |
JPS5960652A (ja) * | 1982-09-30 | 1984-04-06 | Fujitsu Ltd | デ−タ処理装置 |
JPS59111561A (ja) * | 1982-12-17 | 1984-06-27 | Hitachi Ltd | 複合プロセツサ・システムのアクセス制御方式 |
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 (ja) * | 1985-03-11 | 1986-09-12 | Hitachi Ltd | アドレス変換装置 |
FR2592510B1 (fr) * | 1985-12-31 | 1988-02-12 | Bull Cp8 | Procede et appareil pour certifier des services obtenus a l'aide d'un support portatif tel qu'une carte a memoire |
FR2601535B1 (fr) * | 1986-07-11 | 1988-10-21 | Bull Cp8 | Procede pour certifier l'authenticite d'une donnee echangee entre deux dispositifs connectes en local ou a distance par une ligne de transmission |
FR2601525B1 (fr) * | 1986-07-11 | 1988-10-21 | Bull Cp8 | Dispositif de securite interdisant le fonctionnement d'un ensemble electronique apres une premiere coupure de son alimentation electrique |
FR2601476B1 (fr) * | 1986-07-11 | 1988-10-21 | Bull Cp8 | Procede pour authentifier une donnee d'habilitation externe par un objet portatif tel qu'une carte a memoire |
FR2618002B1 (fr) * | 1987-07-10 | 1991-07-05 | Schlumberger Ind Sa | Procede et systeme d'authentification de cartes a memoire electronique |
US5007082A (en) * | 1988-08-03 | 1991-04-09 | Kelly Services, Inc. | Computer software encryption apparatus |
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 (fr) | 1988-12-20 | 1993-01-08 | Bull Cp8 | Dispositif de traitement de donnees comportant une memoire non volatile electriquement effacable et reprogrammable |
JPH02171934A (ja) * | 1988-12-26 | 1990-07-03 | Hitachi Ltd | 仮想計算機システム |
JPH02208740A (ja) * | 1989-02-09 | 1990-08-20 | Fujitsu Ltd | 仮想計算機制御方式 |
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 (ja) | 1989-06-30 | 1997-03-12 | 株式会社日立製作所 | 仮想計算機における表示制御方式 |
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 (ja) * | 1989-09-21 | 1998-11-18 | 株式会社日立製作所 | 多重仮想空間アドレス制御方法および計算機システム |
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 |
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 (ja) | 1991-10-21 | 1994-08-23 | Intel Corp | コンピュータシステム処理状態を保存及び復元する方法及びコンピュータシステム |
US5627987A (en) | 1991-11-29 | 1997-05-06 | Kabushiki Kaisha Toshiba | Memory management and protection system for virtual memory in computer system |
AU3424293A (en) * | 1992-01-02 | 1993-07-28 | Amdahl Corporation | Computer system with two levels of guests |
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 (ja) | 1992-11-30 | 1998-06-18 | 株式会社日立製作所 | 仮想計算機方式 |
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 (ja) * | 1992-12-18 | 1994-07-08 | Hitachi Ltd | 仮想計算機システムの入出力割込み制御方法 |
US5483656A (en) * | 1993-01-14 | 1996-01-09 | Apple Computer, Inc. | System for managing power consumption of devices coupled to a common bus |
EP0622509B1 (de) * | 1993-02-08 | 1995-08-30 | MEPLA-WERKE LAUTENSCHLÄGER GmbH & Co. KG | Möbelscharnier |
US5469557A (en) * | 1993-03-05 | 1995-11-21 | Microchip Technology Incorporated | Code protection in microcontroller with EEPROM fuses |
FR2703800B1 (fr) | 1993-04-06 | 1995-05-24 | Bull Cp8 | Procédé de signature d'un fichier informatique, et dispositif pour la mise en Óoeuvre. |
FR2704341B1 (fr) | 1993-04-22 | 1995-06-02 | Bull Cp8 | Dispositif de protection des clés d'une carte à puce. |
JPH06348867A (ja) | 1993-06-04 | 1994-12-22 | Hitachi Ltd | マイクロコンピュータ |
FR2706210B1 (fr) | 1993-06-08 | 1995-07-21 | Bull Cp8 | Procédé d'authentification d'un objet portatif par un terminal hors ligne, objet portatif et terminal correspondants. |
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 (fr) | 1994-03-09 | 1996-04-05 | Bull Cp8 | Procédé et dispositif pour authentifier un support de données destiné à permettre une transaction ou l'accès à un service ou à un lieu, et support correspondant. |
US5684881A (en) | 1994-05-23 | 1997-11-04 | Matsushita Electric Industrial Co., Ltd. | Sound field and sound image control apparatus and method |
US5539828A (en) | 1994-05-31 | 1996-07-23 | Intel Corporation | Apparatus and method for providing secured communications |
US5473692A (en) | 1994-09-07 | 1995-12-05 | Intel Corporation | Roving software license for a hardware agent |
JPH0883211A (ja) * | 1994-09-12 | 1996-03-26 | Mitsubishi Electric Corp | データ処理装置 |
EP0706275B1 (en) * | 1994-09-15 | 2006-01-25 | International Business Machines Corporation | System and method for secure storage and distribution of data using digital signatures |
FR2725537B1 (fr) | 1994-10-11 | 1996-11-22 | Bull Cp8 | Procede de chargement d'une zone memoire protegee d'un dispositif de traitement de l'information et dispositif associe |
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 (fr) | 1995-03-10 | 1997-04-18 | Schlumberger Ind Sa | Procede d'inscription securisee d'informations dans un support portable |
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 (ja) | 1995-06-07 | 2003-09-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ |
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 |
US6093213A (en) * | 1995-10-06 | 2000-07-25 | Advanced Micro Devices, Inc. | Flexible implementation of a system management mode (SMM) in a processor |
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 (ja) | 1995-11-10 | 2005-09-07 | Necエレクトロニクス株式会社 | フラッシュメモリ内蔵マイクロコンピュータ及びそのテスト方法 |
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 |
US6542919B1 (en) * | 1996-03-22 | 2003-04-01 | Koninklijke Philips Electronics N.V. | Operating system for use with protection domains in a single address space |
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 |
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 |
US5944821A (en) * | 1996-07-11 | 1999-08-31 | Compaq Computer Corporation | Secure software registration and integrity assessment in a computer system |
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 |
US5844986A (en) | 1996-09-30 | 1998-12-01 | Intel Corporation | Secure BIOS |
US5937063A (en) | 1996-09-30 | 1999-08-10 | Intel Corporation | Secure boot |
US5935242A (en) * | 1996-10-28 | 1999-08-10 | Sun Microsystems, Inc. | Method and apparatus for initializing a device |
US5852717A (en) | 1996-11-20 | 1998-12-22 | Shiva Corporation | Performance optimizations for computer networks utilizing HTTP |
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 |
US5953502A (en) | 1997-02-13 | 1999-09-14 | Helbig, Sr.; Walter A | Method and apparatus for enhancing computer system security |
JP4000654B2 (ja) * | 1997-02-27 | 2007-10-31 | セイコーエプソン株式会社 | 半導体装置及び電子機器 |
US6044478A (en) * | 1997-05-30 | 2000-03-28 | National Semiconductor Corporation | Cache with finely granular locked-down regions |
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 |
GB9714181D0 (en) * | 1997-07-05 | 1997-09-10 | Bp Chem Int Ltd | Polymerisation catalyst |
US5978475A (en) * | 1997-07-18 | 1999-11-02 | Counterpane Internet Security, Inc. | Event auditing system |
US5919257A (en) * | 1997-08-08 | 1999-07-06 | Novell, Inc. | Networked workstation intrusion detection system |
DE19735948C1 (de) * | 1997-08-19 | 1998-10-01 | Siemens Nixdorf Inf Syst | Verfahren zur Verbesserung der Steuerungsmöglichkeit in Datenverarbeitungsanlagen mit Adreßübersetzung |
US5935247A (en) * | 1997-09-18 | 1999-08-10 | Geneticware Co., Ltd. | Computer system having a genetic code that cannot be directly accessed and a method of maintaining the same |
US6108644A (en) * | 1998-02-19 | 2000-08-22 | At&T Corp. | System and method for electronic transactions |
US6131166A (en) * | 1998-03-13 | 2000-10-10 | Sun Microsystems, Inc. | System and method for cross-platform application level power management |
US7194092B1 (en) * | 1998-10-26 | 2007-03-20 | Microsoft Corporation | Key-based secure storage |
US6327652B1 (en) * | 1998-10-26 | 2001-12-04 | Microsoft Corporation | Loading and identifying a digital rights management operating system |
US6609199B1 (en) * | 1998-10-26 | 2003-08-19 | Microsoft Corporation | Method and apparatus for authenticating an open system application to a portable IC device |
US6282650B1 (en) * | 1999-01-25 | 2001-08-28 | Intel Corporation | Secure public digital watermark |
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 |
US6615278B1 (en) * | 1999-03-29 | 2003-09-02 | International Business Machines Corporation | Cross-platform program, system, and method having a global registry object for mapping registry equivalent functions in an OS/2 operating system environment |
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 |
US6651171B1 (en) * | 1999-04-06 | 2003-11-18 | Microsoft Corporation | Secure execution of program code |
US6275933B1 (en) * | 1999-04-30 | 2001-08-14 | 3Com Corporation | Security system for a computerized apparatus |
US6529909B1 (en) * | 1999-08-31 | 2003-03-04 | Accenture Llp | Method for translating an object attribute converter in an information services patterns environment |
JP3710671B2 (ja) * | 2000-03-14 | 2005-10-26 | シャープ株式会社 | 1チップマイクロコンピュータ及びそれを用いたicカード、並びに1チップマイクロコンピュータのアクセス制御方法 |
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 |
US7631160B2 (en) * | 2001-04-04 | 2009-12-08 | Advanced Micro Devices, Inc. | Method and apparatus for securing portions of memory |
US6976136B2 (en) * | 2001-05-07 | 2005-12-13 | National Semiconductor Corporation | Flash memory protection scheme for secured shared BIOS implementation in personal computers with an embedded controller |
US7676430B2 (en) * | 2001-05-09 | 2010-03-09 | Lenovo (Singapore) Ptd. Ltd. | System and method for installing a remote credit card authorization on a system with a TCPA complaint chipset |
US7191464B2 (en) * | 2001-10-16 | 2007-03-13 | Lenovo Pte. Ltd. | Method and system for tracking a secure boot in a trusted computing environment |
US7103771B2 (en) * | 2001-12-17 | 2006-09-05 | Intel Corporation | Connecting a virtual token to a physical token |
US20030126453A1 (en) * | 2001-12-31 | 2003-07-03 | Glew Andrew F. | Processor supporting execution of an authenticated code instruction |
US7308576B2 (en) * | 2001-12-31 | 2007-12-11 | Intel Corporation | Authenticated code module |
US7107460B2 (en) * | 2002-02-15 | 2006-09-12 | International Business Machines Corporation | Method and system for securing enablement access to a data security device |
US7343493B2 (en) * | 2002-03-28 | 2008-03-11 | Lenovo (Singapore) Pte. Ltd. | Encrypted file system using TCPA |
US7318141B2 (en) * | 2002-12-17 | 2008-01-08 | Intel Corporation | Methods and systems to control virtual machines |
-
2002
- 2002-04-16 US US10/124,641 patent/US7127548B2/en not_active Expired - Lifetime
-
2003
- 2003-03-27 WO PCT/US2003/009482 patent/WO2003090070A2/en active Search and Examination
- 2003-03-27 CN CN03813694.5A patent/CN1659518B/zh not_active Expired - Fee Related
- 2003-03-27 EP EP03721481A patent/EP1520227A2/en not_active Withdrawn
- 2003-03-27 AU AU2003224791A patent/AU2003224791A1/en not_active Abandoned
- 2003-03-27 KR KR1020047016638A patent/KR100667146B1/ko not_active IP Right Cessation
- 2003-04-11 TW TW092108399A patent/TWI252427B/zh not_active IP Right Cessation
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101490646B (zh) * | 2006-08-08 | 2013-10-16 | 英特尔公司 | 虚拟化性能计数器 |
US8607228B2 (en) | 2006-08-08 | 2013-12-10 | Intel Corporation | Virtualizing performance counters |
CN103500137A (zh) * | 2006-08-08 | 2014-01-08 | 英特尔公司 | 虚拟化性能计数器 |
US9244712B2 (en) | 2006-08-08 | 2016-01-26 | Intel Corporation | Virtualizing performance counters |
CN103500137B (zh) * | 2006-08-08 | 2017-01-11 | 英特尔公司 | 虚拟化性能计数器 |
CN101162443B (zh) * | 2006-10-10 | 2012-06-27 | 瑞萨电子株式会社 | 数据处理器 |
CN109240801A (zh) * | 2011-10-28 | 2019-01-18 | 英特尔公司 | 在没有vmm介入的情况下对调用vmm配置的服务的指令集支持 |
CN109240801B (zh) * | 2011-10-28 | 2022-04-01 | 英特尔公司 | 在没有vmm介入的情况下对调用vmm配置的服务的指令集支持 |
CN107977251A (zh) * | 2016-10-21 | 2018-05-01 | 超威半导体(上海)有限公司 | 对在虚拟化系统中的共享寄存器的排他访问 |
CN107977251B (zh) * | 2016-10-21 | 2023-10-27 | 超威半导体(上海)有限公司 | 对在虚拟化系统中的共享寄存器的排他访问 |
Also Published As
Publication number | Publication date |
---|---|
WO2003090070A3 (en) | 2005-01-27 |
TW200403586A (en) | 2004-03-01 |
EP1520227A2 (en) | 2005-04-06 |
US20030217250A1 (en) | 2003-11-20 |
US7127548B2 (en) | 2006-10-24 |
AU2003224791A1 (en) | 2003-11-03 |
AU2003224791A8 (en) | 2003-11-03 |
WO2003090070A2 (en) | 2003-10-30 |
KR100667146B1 (ko) | 2007-01-12 |
TWI252427B (en) | 2006-04-01 |
KR20040101516A (ko) | 2004-12-02 |
CN1659518B (zh) | 2010-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1659518A (zh) | 虚拟计算机结构中控制寄存器访问虚拟化性能的改进 | |
KR102383900B1 (ko) | 타겟 메모리 어드레스에 대응한 메모리 속성 유닛의 영역을 식별하는 영역식별 연산 | |
US7380049B2 (en) | Memory protection within a virtual partition | |
JP6902029B2 (ja) | 有界ポインタを管理するための装置および方法 | |
EP1966706B1 (en) | Identifier associated with memory locations for managing memory accesses | |
US7043616B1 (en) | Method of controlling access to model specific registers of a microprocessor | |
US20080077767A1 (en) | Method and apparatus for secure page swapping in virtual memory systems | |
JP6893216B2 (ja) | 有界ポインタの使用を制御するための装置及び方法 | |
US20130091568A1 (en) | Systems and methods for secure in-vm monitoring | |
US7130977B1 (en) | Controlling access to a control register of a microprocessor | |
KR20130036189A (ko) | 하드웨어 모드와 보안 플래그에 의존하여 판독된 명령어에 대한 메모리 영역의 제한 | |
US8549325B2 (en) | Reducing information leakage between processes sharing a cache | |
JP7128206B2 (ja) | 機能の使用を管理するための装置および方法 | |
US7082507B1 (en) | Method of controlling access to an address translation data structure of a computer system | |
EP3631621B1 (en) | An apparatus and method for interpreting permissions associated with a capability | |
CN110036377B (zh) | 可缓存的但不可通过推测指令访问的内存类型 | |
JP7280196B2 (ja) | 機能ドメインを管理するための装置及び方法 | |
JP2023038361A (ja) | 命令セット内の変更を制御する装置及び方法 | |
KR20210088522A (ko) | 메모리 액세스를 제어하기 위한 장치 및 방법 | |
KR20230017832A (ko) | Tag 체킹 장치 및 방법 | |
KR20220156028A (ko) | 메모리 액세서 무효화 | |
CN112585590A (zh) | 存储器访问控制 | |
JP7369720B2 (ja) | アクションをトリガするための装置及び方法 | |
WO2023067295A1 (en) | Technique for handling sealed capabilities | |
TW202340955A (zh) | 使用能力約束記憶體存取之技術 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100505 Termination date: 20190327 |