CN109690484A - 在虚拟机进入时转换 - Google Patents
在虚拟机进入时转换 Download PDFInfo
- Publication number
- CN109690484A CN109690484A CN201780055264.9A CN201780055264A CN109690484A CN 109690484 A CN109690484 A CN 109690484A CN 201780055264 A CN201780055264 A CN 201780055264A CN 109690484 A CN109690484 A CN 109690484A
- Authority
- CN
- China
- Prior art keywords
- address
- failure
- vmm
- customer
- vmcs
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0712—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a virtual computing platform, e.g. logically partitioned systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0766—Error or fault reporting or storing
- G06F11/0787—Storage of error reports, e.g. persistent data storage, storage using memory protection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/145—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
-
- 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
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/651—Multi-level translation tables
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种处理器包括核,所述核具有虚拟化支持电路,用以响应于访问指令的请求而从与虚拟机关联的虚拟机控制结构(VMCS)检索逻辑地址。所述逻辑地址对应于将要被访问的指令。所述虚拟化支持电路还可:将逻辑地址转换成顾客虚拟地址;调用转换电路以将顾客虚拟地址转换成顾客物理地址,并且将顾客物理地址转换成主机物理地址;以及将顾客物理地址或主机物理地址中的至少一个存储在VMCS中。
Description
本公开涉及用于虚拟机的指令的仿真的领域,并且具体地讲,涉及在虚拟机进入时的地址的转换。
背景技术
处理器的虚拟机管理器(VMM)(或管理程序)对在它的控制下由顾客虚拟机执行的指令进行仿真以便例如对虚拟机连接到的硬件装置进行仿真。另一示例可包括VMM拦截对某些存储器范围的访问并且对指令进行仿真以便执行安全检查。这种VMM可实现防病毒/防恶意软件策略,通过拦截指令并且对指令进行仿真,VMM可确定指令是否具有任何恶意副作用。
附图说明
图1A是根据本公开的实施例的可执行虚拟机监视器和一个或多个虚拟机的计算装置的框图。
图1B是图1A的计算装置的处理器和存储器的更详细视图的框图。
图2是根据本公开的实施例的虚拟机控制结构(VMCS)的框图。
图3A是图示根据本公开的实施例的顾客虚拟地址到顾客物理地址的转换和顾客物理地址到主机物理地址的转换的框图。
图3B是图示根据本公开的实施例的使用扩展页表(EPT)将顾客物理地址转换成主机物理地址的框图。
图4A是图示根据本公开的实施例的用于逻辑到线性地址的转换的偏移量的确定的框图。
图4B是图示根据本公开的实施例的在保护模式下的逻辑地址到线性地址的转换的框图。
图4C是图示根据本公开的实施例的在实模式下的逻辑地址到线性地址的转换的框图。
图4D是描绘根据本公开的实施例的段选择器的框图。
图4E是描绘根据本公开的实施例的段寄存器的框图。
图5A和5B是根据本公开的实施例的在虚拟机进入时转换逻辑地址的方法的流程图。
图6A和6B是根据本公开的另一实施例的在虚拟机进入时转换逻辑地址的方法的流程图。
图7A是图示根据一个实施例的按顺序流水线和寄存器重新命名级、无序发出/执行流水线的框图。
图7B是图示在进入虚拟机时执行转换的处理器的微架构的框图。
图8图示包括用于在进入虚拟机时执行转换的逻辑电路的处理器的微架构的框图。
图9是根据一个实现方式的计算机系统的框图。
图10是根据另一实现方式的计算机系统的框图。
图11是根据一个实现方式的片上系统的框图。
图12图示用于计算系统的框图的另一实现方式。
图13图示用于计算系统的框图的另一实现方式。
具体实施方式
作为指令仿真的一部分,虚拟机监视器(VMM)将由指令使用的线性地址(例如,顾客虚拟地址GVA)转换成物理地址,以使得VMM能够代表顾客虚拟机(VM)执行对那些物理地址的访问。因此,为了对指令进行仿真(或由于其它原因而执行访问),VMM代表VM执行一系列操作。在处理资源方面,所述一系列操作引起相当大的开销。例如,VMM确定分段(包括检查VM的分段状态),并且在指令调用时确定VM的分页模式(包括检查由VM设置的页表以及检查由VM编程的控制寄存器和模型专用寄存器)。在分页和分段模式的发现之后,VMM可首先将逻辑地址转换成GVA(GVA将会被进一步转换),并且检测任何分段故障。这个逻辑地址可包括段选择器(用于存储器的线性地址空间中的段)和该段内的偏移量。
VMM可随后将GVA转换成顾客物理地址(GPA),并且将GPA转换成主机物理地址(HPA),包括在软件中执行页表查询(page walk)。页表查询可包括加载许多分页结构条目和扩展页表(EPT)结构条目。VMM还可针对终端故障评估这些条目,并且执行许可故障检查以确定读、写和执行许可。为了执行这些转换,VMM软件对页未命中处理器(PMH)电路进行仿真,以在软件中执行这些转换。为了执行相关故障检查,VMM软件也模仿PMH和转换后备缓冲器(TLB)故障检查电路,该电路包括检查页故障、分段故障和扩展页表(EPT)违反、断点检测等的电路。然而,模仿这些转换和故障检查导致相当大的处理资源开销,并且使VMM的操作变慢。
除了执行转换和故障检查的开销之外,VMM指令仿真可能允许利用VMM的安全弱点。由于顾客中的存储器的VMM访问,顾客能够设置异常页表或结构(例如,通过改变寄存器值等),所述异常页表或结构可允许顾客在VMM访问顾客中的存储器时利用VMM的安全弱点。
另外,随着处理器架构演进,新的分页特征(例如,影子堆栈、保护密钥等)被添加到处理器的硬件。为了如刚刚所讨论继续执行指令仿真,利用对PMH和相关故障检查电路的功能进行仿真,VMM的地址转换相关软件被一再地更新以保持最新。这抬高了实现成本,并且可能在不执行这些更新时留下另外的安全弱点。
为了解决上述在仿真期间伴随着对顾客存储器的VMM访问的处理资源开销和安全弱点,本公开描述VMM可如何在完成指令仿真之前将上述转换和故障检查移交给虚拟化支持电路。在一个实施例中,VMM执行进入时转换(TOE)虚拟机进入,其中VMM可采用转换电路(比如,PMH和故障检查电路)以执行地址转换和故障检查,并且产生将要被用于对由VM执行的指令进行仿真的GPA和HPA。为了实现这一点,VMM可触发处理器的虚拟化支持电路,从而替代于VMM执行转换和故障检查,虚拟化支持电路执行这些转换和故障检查。如将要详细地解释的,作为与VMM交换转换相关数据的方式,虚拟化支持电路还可从称为虚拟机控制结构(VMCS)的数据结构检索数据以及将数据存储到称为虚拟机控制结构(VMCS)的数据结构。虚拟化支持电路可在地址的成功转换之后或在检测到故障时最终执行至VMM的退出,并且将识别的退出的原因存储在VMCS中。
更具体地讲,VMM可设置与虚拟机关联的VMCS的进入时转换控制字段的位标志以执行TOE VM进入。VMM还可将逻辑地址存储在VMCS中,其中逻辑地址对应于用于VM机器的将要被仿真的指令。替代地,VMM可将线性地址(诸如,顾客虚拟地址)存储在VMCS中,其中线性地址对应于将要被仿真的指令。
虚拟化支持电路可从VMCS中的对应顾客状态字段在处理器硬件中加载段寄存器、控制寄存器、MSR以及其它顾客寄存器支持的和非寄存器支持的状态。虚拟化支持电路还可响应于检测到设置了VMCS的进入时转换控制字段的位标志而将从VMCS检索的逻辑地址转换成GVA。在一个实施例中,虚拟化支持电路可通过调用处理器的地址产生电路来执行这种转换。虚拟化支持电路还可调用转换电路(比如,PMH)以将GVA转换成顾客物理地址(GPA),并且将GPA转换成主机物理地址(HPA)。虚拟化支持电路可随后将GPA或HPA(或二者)与逻辑地址相关地存储在VMCS中。在存储转换信息之后,虚拟化支持电路可随后退出到VMM,而非继续在VM中执行指令。如果故障发生在转换过程中(诸如,页故障、分段故障或扩展页表(EPT)违反等),则虚拟化支持电路可将故障的记录与逻辑地址相关地存储在VMCS中,并且执行至VMM的退出。如果没有故障发生在转换期间,则VMM可随后从VMCS检索GPA或HPA以用于对用于虚拟机的指令进行仿真。如果检测到故障,则VMM可从VMCS检索故障信息,并且适当地处理故障作为指令仿真的一部分。
在替代实施例中,在TOE VM进入之后,VMM可触发虚拟支持电路以执行一系列转换,多个逻辑地址中的每个逻辑地址有一次转换。在这个实施例中,VMM也可设置VMCS的进入时转换控制字段的位标志。VMM还可利用与用于虚拟机的将要被仿真的指令对应的所述多个逻辑地址填充存储在存储器中的表。VMM还可在VMCS中存储虚拟化支持电路可访问的多个逻辑地址的表的地址以及指定需要转换的表中的逻辑地址的数量的计数。VMM还可在存储器设置这个表,并且保持该表的控制。当VMM需要转换一组逻辑地址时,VMM可将所述一组逻辑地址写到这个表中。针对至少一些逻辑地址中的每个逻辑地址,并且响应于检测到设置了进入时转换控制字段的位标志,虚拟化支持电路可随后将逻辑地址(从表检索的下一个逻辑地址)转换成顾客虚拟地址(GVA)。虚拟化支持电路可随后将GVA转换成GPA,将GPA转换成HPA,并且将GPA或HPA(或二者)与逻辑地址相关地存储在该表中。只要未检测到故障,虚拟化电路就可针对每个逻辑地址重复这个过程。在虚拟化支持电路退回到VMM之后,VMM可另外从表检索多个顾客物理地址或多个主机物理地址之一以用于对用于虚拟机的指令进行仿真。
在替代实施例中,虚拟化支持电路还可在表中将成功地转换的每个逻辑地址指示为有效。然而,如果任何转换导致故障,则虚拟化支持电路可将故障的记录与逻辑地址相关地存储在VMCS中,从VMCS加载VMM状态,并且退出到VMM。VMM可随后知道哪些逻辑地址可被用于指令仿真以及哪些逻辑地址导致故障,并且因此,将故障信息或转换的GPA和/或HPA用于指令仿真。这个替代实施例中的表的使用允许进入和退出虚拟化支持电路的开销被摊销在多次转换上,并且例如通过避免执行多次进入和退出的需要(每个逻辑地址都有一次进入和退出)来甚至进一步减少开销。
在另一实施例中,VMM可不对指令进行仿真,而是可为了另一目的而访问指令。在一个示例中,当访问掉电的硬件装置时,掉电的硬件装置可产生至VMM的故障退出。(VMM还可使某些硬件装置掉电。)当VM由于失败访问而被通知掉电故障时,VMM可使用存储器访问的GVA,并且将GVA转换成HPA以确定对其尝试过访问的硬件装置。随后,VMM可将该硬件装置加电,并且重新进入虚拟机,以使得重试该指令。现在,因为该装置被通电,所以可代表虚拟机成功地对该指令进行仿真。
图1A是根据本公开的实施例的可执行虚拟机监视器(VMM)130(VMM130可包括VM退出处理器132)和一个或多个虚拟机140、140A的计算装置100的框图。计算装置例如还可包括或连接到硬件装置150,诸如集成硬件装置、I/O装置或其它外围装置。
在各种实施例中,作为非限制性示例,“计算装置”可以是下面的装置或包括下面的装置:计算机、工作站、服务器、大型计算机、虚拟机(无论是被仿真还是在“裸机(bare-metal)”管理程序上)、嵌入式计算机、嵌入式控制器、嵌入式传感器、个人数字助手、膝上型计算机、蜂窝电话、IP电话、智能电话、平板计算机、可转换平板计算机、计算器具、网络器具、接收器、可穿戴计算机、手持式计算器或用于处理和传送数据的任何其它电子、微电子或微机电装置。
在一个实施例中,计算装置100可包括系统硬件102。系统硬件102可包括例如处理器106,处理器106包括一个或多个核108和高速缓存110。系统硬件102还可包括存储器120以存储操作系统122(其可包括故障处理器123)的映像和虚拟机控制结构(VMCS) 125,VMM130使用VMCS 125以创建、控制和管理虚拟机140和140A。故障处理器123可处理由于在处理器106上运行的操作系统的映像而导致的任何数量的故障。例如,仅举几个例子,这些故障可包括段不存在(#NP)、堆栈-段故障(#SS)、一般保护故障(#GP)或页故障(#PF)。系统硬件102还可包括处理器106和存储器120之间的系统总线115(系统总线115也可以是存储器总线)。
每个虚拟机140和142A可包括由基础系统硬件102仿真的虚拟处理器142、操作系统144和操作系统144执行的一个或多个应用145。如上所述,虚拟机140可连接到硬件装置150以发送用于指示硬件装置150的命令。为了实现这一点,VMM 130可对一个或多个指令(诸如,装置驱动器指令)进行仿真以向硬件装置150提供虚拟机140访问。
另外参照图1B,图1A的计算装置100的处理器106和存储器120的系统硬件被更详细地示出。如以上所讨论,存储器120可存储VMCS 125,在图2中描绘VMCS 125的详细布局。存储器120还可存储用于将顾客虚拟地址转换成顾客物理地址的顾客页表127、用于将顾客物理地址转换成主机物理地址的扩展页表129、段描述符131和逻辑地址表133,它们在以下详细地讨论。
在一个实施例中,除了核108和高速缓存100之外,处理器106还可包括虚拟化支持电路152、VM进入微码154、地址产生电路158、转换电路160(诸如,页未命中处理器(PMH)、故障检测和产生电路等)、段寄存器168、页表指针172、扩展页表指针176、控制寄存器178、一个或多个转换后备缓冲器(TLB) 182、页属性表(PAT) 186和存储器类型范围寄存器(MTRR)190。硬件、寄存器和指针的这个列表不是穷尽的;未来处理器可包括更多或更少的这种寄存器和指针。
VMM 130是负责创建、控制和管理虚拟机的软件层。可在支持虚拟机扩展(VMX)或类似的架构的系统硬件102上执行VMM。VMM具有系统硬件102的处理器和其它平台硬件的完全控制。VMM利用虚拟处理器142的抽象提供顾客软件(例如,虚拟机),并且允许虚拟处理器142在处理器106上执行。VMM 130能够保留处理器资源、物理存储器、中断管理和I/O的选择性控制。
每个虚拟机是支持包括操作系统144和应用软件的堆栈的顾客软件环境。每个VM可独立于其它虚拟机操作,并且使用与由物理平台提供的处理器、存储器、存储装置、图形和I/O的相同接口。软件堆栈操作,就好像软件堆栈正在没有VMM的平台上运行。在虚拟机中执行的软件以降低的特权或它的原始特权级操作,以使得例如VMM能够按照VMM的设计或控制VMM的策略保留平台资源的控制。
当处理器106执行VMXON指令时,VMM 130可开始操作的VMX根模式。VMM通过调用VM进入指令来开始顾客执行。VMM调用VMLAUNCH(VM启动)指令以用于虚拟机的首次VM进入的执行。VMM调用VMRESUME(VM重新开始)以用于该虚拟机的全部随后VM进入的执行。VMLAUNCH或VMRESUME指令执行与当前VMCS 125关联的虚拟机的VM进入。
在虚拟机的执行期间,各种操作或事件(例如,硬件中断、软件中断、异常、任务切换和某些VMX指令)可引起至VMM 130的VM退出,其后VMM重新获得控制。VM退出将控制转移给由VMM指定的入口点,例如主机指令指针。VMM可采取适合VM退出的原因的行动,并且可随后使用VM进入返回到虚拟机。通过执行VMXOFF操作,VMM也能够离开操作的VMX根模式。
VM进入和VM退出的这些转变由存储在存储器120中的VMCS 125数据结构控制。处理器106通过由VMM使用VMPTRLD指令设置的称为VMCS指针(每个虚拟处理器一个VMCS指针)的处理器状态的部件控制对VMCS 125的访问。VMM可使用VMREAD(VM读)、VMWRITE(VM写)和VMCLEAR(VM清除)指令配置VMCS。VMM可针对它支持的每个虚拟处理器使用不同VMCS。对于具有多个虚拟处理器142的虚拟机,VMM 130能够针对每个虚拟处理器使用不同VMCS 125。
另外参照图2,VMCS 125可包括六个逻辑组的字段:VM执行控制字段210、VM退出控制字段220、VM进入控制字段230(VM进入控制字段230可包括进入时转换(TOE)控制字段233)、TOE地址字段235、用于逻辑地址表133的存储器地址字段237)、顾客状态区域240、主机状态区域250和VM退出信息字段260(VM退出信息字段260可包括TOE转换结果字段265)。这六个逻辑组的字段仅是示例性的,并且未来处理器可具有更多或更少组的字段。
在一个实施例中,VM执行控制字段210可定义处理器106应该如何响应于VM 140中发生的不同事件而做出反应。在一个实施例中,VM退出控制字段120可定义当处理器106从虚拟机140退出时处理器106应该做什么,例如,将VM的顾客状态存储在VMCS中并且从VMCS125加载VMM(或主机)状态。VMM状态可以是主机状态,主机状态包括与处理器寄存器对应的字段,包括VMCS指针、用于段寄存器的选择器字段、用于一些相同段寄存器的基地址字段以及用于调试、程序执行追踪、计算机性能监测和切换某些处理器特征的模型专用寄存器(MSR)的列表的值。
在一个实施例中,VM进入控制字段230可定义处理器106应该在进入虚拟机230时做什么,例如,在进入期间有条件地从VMCS 125加载虚拟机140的顾客状态(包括调试控制)并且根据需要将中断或异常插入到虚拟机中。
在一个实施例中,顾客状态区域340可以是在从虚拟机140退出以及进入虚拟机140时处理器106存储VM处理器状态的位置。
在一个实施例中,主机状态区域250可以是在从虚拟机140退出时处理器106存储VMM处理器(或主机)状态的位置。
在一个实施例中,VM退出信息字段260可以是处理器106存储描述从虚拟机退出的原因的信息的位置。
因此,当发生VM退出时,处理器106的硬件可将虚拟机的顾客状态保存到VMCS 125的顾客状态区域240。该硬件还可将退出原因和退出条件保存到VMCS 125的VM退出信息字段260。处理器106还可从VMCS加载主机状态,所述主机状态包括主机指令指针(HOST_RIP)。处理器106可随后从主机指令指针开始执行VMM 130,VMM 130也调用VM退出处理器132,VM退出处理器132是可执行各种VM退出相关操作的VMM的软件功能。如果VM退出跟在TOE进入之后,则处理器106已完成转换并且提供用于VMM处理的转换信息或故障信息作为它的指令仿真操作的一部分。
在一个实施例中,为了代表虚拟机对指令进行仿真,VMM 130可能需要将由该指令使用的线性地址(例如,GVA)转换成物理地址,以使得VMM 130能够访问在该物理地址处的数据。为了执行该转换,VMM 130可能需要首先确定分页和分段,包括检查虚拟机(VM) 140的分段状态。VMM还可在指令调用时确定VM的分页模式,包括检查由VM设置的页表以及检查由VM 140编程的控制寄存器178和模型专用寄存器。在分页和分段模式的发现之后,VM 130可产生用于逻辑地址的顾客虚拟地址(GVA),并且检测任何分段故障。
假设未检测到分段故障,VMM130可将GVA转换成顾客物理地址(GPA),并且将GPA转换成主机物理地址(HPA),包括在软件中执行页表查询。为了在软件中执行这些转换,VMM130可将由虚拟机140最初设置的许多分页结构条目和扩展页表(EPT)结构条目加载到通用寄存器中。一旦这些分页和EPT结构条目被加载,VMM 130可通过模仿转换电路(诸如,页未命中处理器(PMH))来执行转换。
更具体地讲,参照图3A,VMM 130可从顾客页表127加载多个页表条目127A,并且从由虚拟机140建立的扩展页表(EPT) 129加载多个扩展页表条目129A。VMM 130可随后通过查询(例如,顺序地搜索)通过顾客页表条目127A来执行转换以从GVA产生GPA。VMM 130可随后使用GPA查询(例如,顺序地搜索)扩展页表(EPT) 129以产生与GPA关联的HPA。
EPT 129的使用是能够被用于支持物理存储器的虚拟化的特征。当使用EPT时,将会正常地被视为物理地址(并且用于访问存储器)的某些地址替代地被视为顾客-物理地址。通过遍历一组EPT分页结构来转换顾客-物理地址以产生被用于访问物理存储器的物理地址。
图3B是根据本公开的一个实施例的图示VMM 130可如何查询扩展页表条目129A以将顾客物理地址转换成主机物理地址的框图350。例如,顾客物理地址(GPA)可被分成一系列偏移量,每个偏移量用于在EPT条目129A的分级体系的表结构内搜索。在这个示例中,从其得出EPT条目的EPT包括条目的四级分级表,包括页映射级4表、页目录指针表、页目录条目表和页表条目表。(在其它实施例中,不同数量的级的分级体系可存在于EPT内,并且因此,公开的实施例不受EPT的特定实现方式限制。)在EPT分级体系的一个级的每次搜索的结果可被添加到用于下一个表的偏移量以定位EPT分级体系中的下一级表的下一个结果。第四(页表条目)表的结果可被与页偏移量组合以定位物理存储器中的4 Kb页(例如),其是主机物理地址。
另外参照图1B,在一个实施例中,TLB 182被用于帮助地址转换。因此,处理器106可能需要在将GVA转换成物理地址(无论是GPA还是HPA)时为了一致性而更新TLB 182。TLB182是存储器管理硬件用来提高虚拟地址转换速度的高速缓存。TLB 182可存在于使用分页的或分段的虚拟存储器的任何硬件中。
在各种实施例中,TLB 182具有包含页表条目和段表条目的固定数量的槽(slot),其中页表条目将虚拟地址映射到物理地址和中间表地址,而段表条目将虚拟地址映射到段地址、中间表地址和页表地址。虚拟存储器是从进程看见的存储器空间,其中虚拟存储器地址空间可被划分成固定大小的页(在分页存储器中)或划分成可变大小的段(在分段存储器中),但分段存储器的个体段也可被视为分页存储器。可被存储在主存储器中的页表跟踪虚拟页在物理存储器中存储的位置。TLB是页表的高速缓存,并且可仅代表页表内容的子集。这些内容可被存储在与为虚拟机140设置的地址空间的对应地址空间标识符(ASID)关联的TLB 182的一部分中。
参照物理存储器地址(诸如,GPA和HPA),TLB 182可位于处理器106和高速缓存110之间,位于高速缓存110和主存储器之间,或位于多级高速缓存的各级之间。所述放置确定高速缓存110是使用物理寻址还是使用虚拟寻址。如果高速缓存110被以虚拟方式寻址,则请求可被直接从处理器106发送给高速缓存110,并且仅在高速缓存未命中时访问TLB 182。如果高速缓存110被以物理方式寻址,则处理器106对每个存储器操作执行TLB查找,并且所获得的物理地址被发送给高速缓存110。
TLB 182可被实现为内容可寻址存储器(CAM)。CAM搜索键是虚拟地址,并且搜索结果是物理地址,诸如GPA或HPA(取决于搜索键需要哪一个)。如果请求的地址存在于TLB中,则CAM搜索快速地产生匹配,并且检索到的物理地址能够被用于访问存储器。这被称为TLB命中。如果请求的地址不在TLB中,则它是未命中,并且转换如前面参照图3A和3B所讨论的那样继续进行。当与处理器速度相比时,至HPA的转换所需的EPT页查询和顾客页表查询可能需要大量时间,因为它涉及读取多个存储器位置的内容并且使用所述内容计算主机物理地址。在通过页查询来确定主机物理地址之后,虚拟地址至物理地址的映射被输入到TLB182中作为用于当前ASID的TLB条目。
在一个实施例中,TLB可能不与页表和扩展页表结构一致。因此,在TLB的一些实现方式中,在TLB中高速缓存的信息可能不与页表中的信息匹配。例如,通过查询页表,TLB可能已高速缓存了虚拟地址X到物理地址Y的转换。然而,随后,操作系统可能修改了页表,以使得另一查询将会导致虚拟地址X被映射到物理地址Z。这种TLB条目被称为陈旧的TLB条目,因为它不与页表的当前状态一致。
在一个实施例中,VMM 130也可针对终端故障评估页表结构条目,积累读、写和执行许可,并且执行许可故障检查。为了执行相关故障检查,VMM130也可模仿PMH和转换后备缓冲器(TLB)故障检查电路,该电路包括检查页故障、分段故障和扩展页表(EPT)违反等。然而,模仿这些转换和故障检查导致相当大的处理资源开销,并且使VMM的操作变慢。
另外参照图2,公开的虚拟化支持电路152可替代地以更快的速度执行这些转换和故障检查操作,而不需要被更新。为了以这种方式采用虚拟化支持电路152,响应于需要执行地址转换,VMM 130可将当前VMCS 125的进入时转换(TOE)控制字段233(图2)的位标志设置为虚拟化支持电路152在下一VM进入时执行转换的信号。VMM 130可随后调用VMRESUME指令,当执行VMRESUME指令时,VMRESUME指令从VMCS 125的顾客状态区域240建立顾客分页和分段状态。
在一个实施例中,VMM 130还可将逻辑地址存储在VMCS 125的TOE地址字段235中(图2)中。(替代地,VMM 130可将顾客虚拟地址存储在VMCS 125的地址字段235中。)需要记起的是,逻辑地址包括段选择器(用于存储器的线性地址空间中的段)和该段内的偏移量。因此,在一个示例中,逻辑地址可被利用基址寄存器索引、段寄存器索引、变址寄存器索引、比例、操作数大小和地址大小编程到TOE地址字段235中。如图4A中所示,所述偏移量被计算为基址寄存器的内容加上变址寄存器的内容乘以比例加上位移。因此,如果指令将要被利用地址[EBX+EAX*8+32]编码并且EBX的内容是5并且EAX的内容是1,则所述偏移量是5 +(1*8) + 32 = 45。VMM 130还可在TOE地址字段235中存储访问存储在对应物理地址处的数据所需的访问权限(诸如,读(R)、写(W)和执行(X)许可)。如将更详细地解释的,可从段描述符131部分地获得TOE地址字段中的信息。
在一个实施例中,虚拟化支持电路152包括用于执行逻辑地址到顾客虚拟地址(GVA)的转换(在必要的情况下)、GVA到顾客物理地址(GPA)的转换和GPA到主机物理地址(HPA)的转换以及故障检查GPA和HPA和对应许可的处理器106的任何硬件(无论是在核108上还是不在核上)。虚拟化支持电路152可响应于检测到设置了进入时转换(TOE)控制字段233的位标志而执行这种转换和故障检查。因此,TOE控制字段233用作虚拟化支持电路152执行公开的进入时转换的、由VMM 130编码的信号。在一个实施例中,在设置了TOE控制字段233的情况下的VM进入能够被处理器106用作从VMCS 125中的顾客状态区域240加载顾客状态信息的子集的提示。所述子集可以是执行在TOE地址字段235中指定的地址的转换所需的顾客状态的子集,并且因此,加快TOE VM进入。为了避免从陈旧的TLB条目报告转换,虚拟化支持电路可在调用转换电路160以将GVA转换成GPA和/或HPA之前首先使来自TLB的用于这个GVA的任何高速缓存的转换信息无效。
为了执行进入时转换,虚拟化支持电路152可执行VM进入微码154,并且还可调用地址产生电路158和转换电路160(例如,PMH)。虚拟化支持电路152还可从TOE地址字段235检索用于存储在VMCS 125中的逻辑地址的信息。如将解释的,虚拟化支持电路可调用地址产生电路158以使用这些TOE地址字段235中的信息将逻辑地址转换成顾客虚拟地址(GVA)。TOE地址字段235中的信息可涉及分段存储器中的寻址。
参照图4A至4D,在一个实施例中,分段提供用于将处理器106可访问的可寻址存储空间(称为线性地址空间)划分成较小的称为段的受保护地址空间的机制。段能够被用于保存用于应用145的代码、数据和堆栈或用于保存系统数据结构(诸如,任务状态段(TSS)或局部描述符表(LDT))。如果超过一个应用(或任务)在处理器106上运行,则每个应用能够被分派它自己的一组段。处理器106随后在这些段之间实施边界,并确保一个应用不通过写到另一应用的段中而干扰另一应用的执行。分段机制也允许段的分型,从而可对特定类型的段执行的操作能够受到限制。
计算系统中的段被包含在处理器的线性地址空间中。为了定位特定段中的字节,提供逻辑地址(也被称为远指针)。逻辑地址包括段选择器和偏移量。如图4A中所示,所述偏移量由基址值、变址乘以比例和位移之和构成。段选择器(诸如,图4D中示出)是用于段的唯一标识符。段选择器可包括例如两位请求的特权级(RPL)、1位表指示器(TI)和13位索引。段选择器特别将偏移量提供给描述符表(诸如,全局描述符表(GDT)或局部描述符表(LDT))中的称为段描述符131的数据结构,如图4B中所示。每个段具有段描述符,段描述符指定段的大小、段的访问权限和特权级、段类型和线性地址空间中的段的第一字节的位置(称为段的基地址)。逻辑地址的偏移量部分被添加到段的基地址以定位段内的字节,如图4B中所示。基地址加上偏移量因此形成处理器的线性地址空间中的线性地址。在一个实施例中,图4B中示出的转换用于保护模式寻址(在64位之外),并且图4C中示出的转换(其中偏移量包括有效地址)用于实模式,其特征在于20位分段地址空间。
因此,虚拟化支持电路152在一个实施例中可调用地址产生电路158以执行逻辑地址到线性地址(也在这里被称为顾客虚拟地址(GVA))的转换,如刚刚所解释的。为了实现这一点,地址产生电路158可使用段选择器中的偏移量来定位GDT或LDT中的段的段描述符,并且将段选择器读入到处理器中。(当新的段选择器被加载到段寄存器中时,也可执行这个步骤。)地址产生电路158可随后检查段描述符以检查段的访问权限和范围以确保段是可访问的并且偏移量在段的界限内。地址产生电路158可随后将来自段描述符的段的基地址与偏移量相加以形成GVA。
更具体地讲,为了检查访问权限,地址产生电路158可执行特权检查,max(CPL,RPL) ≤ DPL,其中CPL是当前特权级(在代码段(CS)寄存器的较低2位中找到),RPL是来自段选择器的请求的特权级,并且DPL是段的描述符特权级(在描述符中找到)。所有特权级可以是范围0-3中的整数,其中例如最低数字对应于最高特权。
如果所述不等式为假,则地址产生电路158可产生一般保护(GP)故障。否则,地址转换继续。地址产生电路158可随后采用例如32位或16位的偏移量,并且将所述偏移量与在段描述符中指定的段界限进行比较。如果所述偏移量较大,则产生GP故障。否则,地址产生电路158将24位的段基址(或在段描述符中指定的另一大小基址)与偏移量相加,创建GVA。可仅当加载段寄存器时执行特权检查,因为段描述符131可被高速缓存在段寄存器168的隐藏部分中(图4E)。
图4E是描绘根据本公开的实施例的段寄存器168的框图。为了减少地址转换时间和编码复杂性,处理器106可提供用于保存多达6个段选择器的段寄存器168。每个段寄存器支持特定种类的存储器参考(代码、堆栈或数据)。为了使几乎任何种类的程序执行发生,将有效段选择器加载到至少代码段(CS)、数据段(DS)和堆栈段(SS)寄存器中。处理器106还可提供三个另外的数据段寄存器(ES、FS和GS),所述三个另外的数据段寄存器(ES、FS和GS)能够被用于使另外的数据段可用于当前执行的应用(或任务)。
为了使应用访问段,处理器106必须首先在一个段寄存器138中加载段的段选择器。因此,虽然计算系统能够定义数以千计的段,但仅六(“6”)个可用于立即使用。通过在程序执行期间将其它段的段选择器加载到这些寄存器中,能够使其它段变为可用。
每个段寄存器具有“可见”部分和“隐藏”部分。(隐藏部分有时被称为“描述符高速缓存”或“影子寄存器”。)当段选择器被加载到段寄存器的可见部分中时,处理器也从由段选择器指向的段描述符将基地址、段界限和访问控制信息加载到段寄存器的隐藏部分中。高速缓存在段寄存器(可见和隐藏)中的信息允许处理器转换地址,而不使用额外的总线周期从段描述符读取基地址和界限。在多个处理器可访问相同描述符表的系统中,当描述符表被修改时重新加载段寄存器是软件的责任。如果未实现这一点,则在段描述符的存储器驻留版本已被修改之后,就有可能使用高速缓存在段寄存器中的旧的(例如,陈旧的)段描述符。
一旦虚拟化支持电路152具有与逻辑地址对应的顾客虚拟地址(GVA),虚拟化支持电路152可随后调用转换电路160(诸如,PMH)以将GVA转换成顾客物理地址(GPA)并且将GPA转换成主机物理地址(HPA)。在一个实施例中,通过VM进入微码154响应于检测到在VMCS125的TOE控制字段233中设置的位标志而调用硬件操作序列,可实现这个调用。例如,转换电路160可使用指向页表127的基址的页表指针(PTP) 172将GVA转换成顾客物理地址(GPA),如参照图3A所讨论的。PTP 172可以是页表127中的页表的基址的顾客物理地址。在GVA到GPA的转换之后,转换电路160可使用指向扩展页表(EPT)129内的位置的扩展页表指针(EPTP) 176将GPA转换成主机物理地址HPA,如参照图3A和3B所讨论的。EPTP 176包含EPT页映射级4条目(PML4E)表的基址的地址以及其它EPT配置信息。PML4E表是开始页查询的第一个扩展页表129条目,导致将会被添加到用于下一个表的偏移量的指针,如参照图3B所讨论的。一旦通过EPT 129完成页查询,产生与物理存储器中的页对应的HPA。虚拟化支持电路152可将GPA和HPA存储在VMCS的TOE转换结果区域265中,并且退出以将控制返还给VMM130。通过虚拟化支持电路152从VMCS 125加载VMM状态并且执行至已被加载的VMM的退出,可执行所述退出。
如将参照图5更详细所讨论的,如果检测到故障,则虚拟化支持电路152可在未完成转换的情况下将故障的原因存储在VMCS 125中并且退出到VMM 130。假设在地址转换过程期间不存在故障,VMM 130可检索用于指令仿真的GPA和/或HPA或确定转换过程导致了故障。
存储器类型范围寄存器(MTRR) 190可在一个实施例中是模型专用寄存器(MSR),并且可被用于将存储器类型分派给存储器的区域。例如,通过使用MTRR将用于存储器映射的I/O的地址空间映射为不可高速缓存,能够避免I/O访问的高速缓存。页属性表(PAT) 186可扩展页表格式以基于线性地址(GVA)映射允许存储器类型被分派给物理存储器的区域。PAT 186是MTRR的伴随特征;也就是说,MTRR 190可允许将存储器类型映射到物理地址空间的区域,其中PAT 186允许将存储器类型映射到线性地址空间内的页。MTRR可被用于静态地描述用于物理范围的存储器类型,并且MTRR通常由系统BIOS设置。PAT可扩展页表中的页级高速缓存禁用(PCD)和页级写通(PWT)位的功能以允许能够被利用MTRR分派的多个存储器类型也被动态地分派给线性地址空间的页。
如所讨论的,转换电路160可访问由虚拟机140建立的页表和EPT结构以用于执行至GPA和/或HPA的转换。在一个实施例中,转换电路还可在存储器类型的计算中访问PAT186和MTRR 190,作为转换的结果,处理器106应该使用存储器类型来访问HPA。虚拟化支持电路可随后将该存储器类型存储在VMCS 125的一个TOE转换结果字段265中,因此当VMM130读出用于指令仿真的GPA或HPA时,VMM 130能够访问该存储器类型。
在一个实施例中,存储器类型的计算基于用于响应于使用GPA的存储器访问而访问EPT的有效存储器类型。这个有效存储器类型基于控制寄存器178(寄存器CR0)中的位30(高速缓存禁用—CD)的值、用于转换GPA的最后一个EPT分页结构条目(例如,位7设置为1的EPT PDE或EPT PTE);和PAT存储器类型。
在一个实施例中,PAT存储器类型取决于控制寄存器178的值CR0.PG。如果CR0.PG= 0,则PAT存储器类型是WB(写回)。如果CR0.PG = 1,则PAT存储器类型是从IA32_PAT MSR选择的存储器类型。
另外,在一个实施例中,可在最后一个EPT分页结构条目的位5:3中指定EPT存储器类型:0 = UC;1 = WC;4 = WT;5 = WP;并且6 = WB,其中WB、WT和WC全部是可高速缓存的。如果CR0.CD = 0,则有效存储器类型取决于最后一个EPT分页结构条目的位6的值。如果该值是0,则有效存储器类型是EPT存储器类型和PAT存储器类型的组合,替代于MTRR存储器类型而使用EPT存储器类型。如果该值是1,则用于访问的存储器类型是EPT存储器类型。PAT存储器类型被忽略。如果CR0.CD = 1,则有效存储器类型不可高速缓存(UC)。
在另一实施例中,替代于一次将一个逻辑地址存储在VMCS 125中,VMM 130可将多个逻辑地址存储在逻辑地址表133中。VMM 130可随后在VMCS 125的存储器地址字段237中存储存储器120中的逻辑地址表133的地址。在这个示例中,虚拟化支持电路152可随后访问逻辑地址表133(在存储在VMCS中的存储器地址)以顺序地检索用于转换的逻辑地址。虚拟化支持电路152可在调用转换电路158之前将下一个检索的逻辑地址(来自该表)转换成GVA以从GVA产生对应GPA和HPA。对应GPA/HPA可被与该逻辑地址相关地存储回至逻辑地址表133,并且该逻辑地址可在该表中被标记为有效。如果故障发生在转换期间,则故障的记录可被保存到VMCS 125,如前面所讨论的。逻辑地址(所述逻辑地址的地址数据被存储在逻辑地址表133中)的这个列表的转换可继续,而不退回至VMM 130(除了也许检测到故障的情况之外)。这个替代实施例可因此允许硬件中的多个逻辑地址的批量转换,而不执行顾客虚拟指令,并且进一步加速TOE过程。将在以下参照图6A和6B更详细地讨论这个替代实施例。
图5A和5B是根据本公开的实施例的在虚拟机进入时转换逻辑地址的方法500的流程图。方法500可由系统执行,所述系统可包括硬件(例如,电路、专用逻辑和/或可编程逻辑)、软件(例如,可在计算机系统上执行以执行硬件仿真的指令)或者其组合。在说明性示例中,方法500可由图1-2的计算装置100的系统硬件102执行或由图1-2的处理器106执行。在一个实施例中,系统硬件102执行虚拟机监视器(VMM) 130以执行方法500的方面,而处理器106的虚拟化支持电路152(和其它被调用的电路)可执行方法500的其它方面。
更具体地讲,参照图5A,方法500可开始于VMM设置与虚拟机关联的虚拟机控制结构(VMCS) 125的TOE控制字段的位标志(502)。方法500可前进至VMM也将逻辑地址(对应于将要被仿真的指令)存储在VMCS的一组VM进入控制字段中,其中逻辑地址可包括段选择器和偏移量(504)。方法500可前进至VMM调用或者VMRESUME或者VMLAUNCH指令以触发进入到虚拟机中(506)。
作为响应,方法500可前进至处理器接收VM进入指令(508)。方法500可前进至处理器从VMCS 125加载处理器状态以建立顾客寄存器状态(510)。方法500可前进至处理器确定VMM是否已接收到进入时转换(TOE)请求(512)。如果VMM未接收到TOE请求,则VMM可获取并且执行虚拟机的指令(516)。如果VMM已接收到TOE请求,则这是针对处理器的指示器:VMM正在请求进入时转换并且因此已将逻辑地址存储在VMCS的一组VM进入控制字段中以便仿真。
进一步参照图5A,方法500可前进至虚拟化支持电路152例如通过调用地址产生电路158来将逻辑地址转换成顾客虚拟地址(GVA)(528)。方法500可前进至虚拟化支持电路确定是否已检测到地址产生或分段故障(532)。如果已检测到地址产生或分段故障,则方法500可前进至虚拟化支持电路将故障信息存储在VMCS中(560),从VMCS加载VMM状态(564),并且退出到VMM(568)。如果未检测到地址产生或分段故障,则方法500可前进至虚拟化支持电路在TLB 182中使利用这个虚拟机的地址空间标识符(ASID)标记的该GVA的TLB条目无效(536)。
方法500可前进至例如通过调用地址转换电路160来将GVA转换成顾客物理地址(GPA)并且将GPA转换成主机物理地址(HPA)(540)。方法500可前进至虚拟化支持电路确定是否在转换期间检测到页故障(544)。如果检测到页故障,则方法500可前进至虚拟化支持电路将故障信息存储在VMCS中(560),从VMCS加载VMM状态(564),并且退出到VMM(568)。如果未检测到页故障,则该方法可前进至虚拟化支持电路相对于与GPA和HPA对应的存储器中的页测试访问权限(548)。方法500可前进至确定是否基于访问权限测试检测到许可故障(552)。如果检测到许可故障,则该方法可前进至虚拟化支持电路将故障信息存储在VMCS中(560),从VMCS加载VMM状态(564),并且退出到VMM(568)。如果未检测到许可故障,则方法500可前进至虚拟化支持电路将转换结果(GPA和HPA)存储在VMCS 125中(556)。方法500可前进至虚拟化支持电路从VMCS加载VMM状态(564),并且退出到VMM(568)。
在一个实施例中,例如通过存储错误代码(诸如,#PF(页故障)错误代码),可存储以上在块532、544和552中讨论的各种故障的记录。在转换期间检测到的任何EPT违反或错误配置的EPT条目可导致EPT违反或EPT错误配置VM退出。在退出时,虚拟化支持电路还可在VMCS 125的VM退出信息区域260中存储退出的原因作为检测到的特定故障。
进一步参照图5B,方法500可前进至VMM针对与逻辑地址相关地存储的故障的记录检查VMCS 125(572)。如果未发现故障,则VMM可从VMCS的TOE转换结果区域265检索GPA和/或HPA和存储器类型以用于指令仿真(580)。如果发现故障,则VMM可处理该故障或向虚拟机140通知该故障以用于由故障处理器处理(584)。
图6A和6B是根据本公开的另一实施例的在虚拟机进入时转换逻辑地址的方法600的流程图。方法600可由系统执行,所述系统可包括硬件(例如,电路、专用逻辑和/或可编程逻辑)、软件(例如,可在计算机系统上执行以执行硬件仿真的指令)或者其组合。在说明性示例中,方法600可由图1-2的计算装置100的系统硬件102执行或由图1-2的处理器106执行。在一个实施例中,系统硬件102执行虚拟机监视器(VMM) 130以执行方法600的方面,而处理器106的虚拟化支持电路152(和其它被调用的电路)可执行方法600的其它方面。
更具体地讲,参照图6A,方法600可开始于VMM设置与虚拟机关联的虚拟机控制结构VMCS) 125的TOE控制字段的位标志(602)。方法600可前进至VMM利用将要被转换的多个逻辑地址的地址数据填充表(604)。方法600可前进至将所述表的存储器位置的地址存储在VMCS中,从而虚拟化支持电路152知道在存储器中去哪里访问所述表以检索逻辑地址(605)。方法600可前进至VMM调用或者VMRESUME或者VMLAUNCH 指令以触发进入到虚拟机中(506)。
方法600可前进至处理器接收VM进入指令(608)。方法600可前进至处理器从VMCS125加载处理器状态以建立顾客寄存器状态(610)。方法600可前进至处理器确定VMM是否已请求进入时转换(TOE)请求(612)。如果VMM未请求TOE请求,则处理器可获取并且执行虚拟机的指令(616)。
进一步参照图6A,如果VMM已请求TOE请求,则方法600可前进至确定是否另一逻辑地址被留在该表中以便转换(634)。如果不存在另一逻辑地址,则方法600可前进至虚拟化支持电路从VMCS加载VMM状态(670),并且退出到VMM(674)。如果存在另一逻辑地址,则方法600可前进至虚拟化支持电路例如通过调用地址产生电路158来将逻辑地址转换成顾客虚拟地址(GVA)(638)。方法600可前进至虚拟化支持电路确定是否检测到地址产生或分段故障(642)。如果检测到地址产生或分段故障,则虚拟化支持电路可将故障信息与逻辑地址相关地存储在VMCS中(666),从VMCS加载VMM状态(670),并且退出到VMM(674)。如果未检测到地址产生或分段故障,则方法600可前进至虚拟化支持电路在TLB 182中使利用虚拟机的地址空间标识符(ASID)标记的该GVA的TLB条目无效(646)。
方法600可前进至例如通过调用转换电路160来将GVA转换成顾客物理地址(GPA)并且将GPA转换成主机物理地址(HPA)(650)。方法600可前进至虚拟化支持电路确定是否检测到页故障(654)。如果检测到页故障,则虚拟化支持电路可将故障信息与逻辑地址相关地存储在VMCS中(666),从VMCS加载VMM状态(670),并且退出到VMM(674)。如果未检测到页故障,则方法600可前进至虚拟化支持电路针对与GPA和HPA对应的存储器中的页测试访问权限(658)。方法600可前进至虚拟化支持电路确定是否检测到许可故障(662)。如果检测到许可故障,则虚拟化支持电路可将故障信息与逻辑地址相关地存储在VMCS中(666),从VMCS加载VMM状态(670),并且退出到VMM(674)。如果未检测到许可故障,则方法600可前进至虚拟化支持电路将GPA和HPA的转换结果(和存储器类型)与对应逻辑地址相关地存储在所述表中(664),并且将该逻辑地址标记为有效(668)。以这种方式,虚拟化支持电路可跟踪哪些逻辑地址已被成功地转换,因为逻辑地址的列表又被转换。因此,方法600可返回至块634以继续转换所述表中的下一个逻辑地址。
在一个实施例中,例如通过存储错误代码(诸如,#PF(页故障)错误代码),可存储以上在块642、654和662中讨论的各种故障。在转换期间检测到的任何EPT违反或错误配置的EPT条目可导致EPT违反或EPT错误配置VM退出。在退出时,虚拟化支持电路还可在VMCS125的VM退出信息区域260中存储退出的原因作为检测到的特定故障。
进一步参照图6B,方法600可前进至VMM例如通过从VMCS 125的VM退出信息区域260读取退出至VMM的原因来确定是否发生基于故障的退出(676)。如果未发生基于故障的退出,则方法600可前进至VMM从所述表检索多个GPA或多个HPA和对应存储器类型以用于执行指令仿真(678)。如果发生基于故障的退出,则方法600可前进至VMM处理该故障或向虚拟机140通知该故障以用于由故障处理器处理145处理(680)。VMM还可从所述表向VMCS移动指示为有效的逻辑地址的子集以及对应GPA和HPA(684)。方法600可前进至VMM从所述表去除导致了故障的逻辑地址(688)。方法600可前进至VMM例如通过循环回至块606以重新开始转换来请求虚拟化支持电路重新开始留在所述表中的剩余逻辑地址的转换(692)。
图7A是图示用于在虚拟机进入时转换逻辑地址的处理器700的微架构的框图。具体地讲,处理器700描绘根据本公开的至少一个实施例的将要被包括在处理器中的按顺序架构核和寄存器重新命名逻辑、无序发出/执行逻辑。在进入虚拟机时转换的实施例能够被实现在处理器700中。
处理器700包括耦合到执行引擎单元750的前端单元730,并且前端单元730和执行引擎单元750二者都被耦合到存储器单元770。处理器700可包括精减指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或者混合或替代核类型。作为另一选项,处理器700可包括专用核,诸如例如网络或通信核、压缩引擎、图形核等。在一个实施例中,处理器700可以是多核处理器,或者可以是多处理器系统的一部分。
前端单元730包括耦合到指令高速缓存单元734的分支预测单元732,指令高速缓存单元734被耦合到指令转换后备缓冲器(TLB) 736,指令转换后备缓冲器(TLB) 736被耦合到指令获取单元738,指令获取单元738被耦合到解码单元740。解码单元740(也被称为解码器)可对指令进行解码,并且作为输出产生一个或多个微操作、微码入口点、微指令、其它指令或其它控制信号,它们被从原始指令解码出或以其它方式反映原始指令或被从原始指令得出。可使用各种不同机构实现解码器740。合适的机构的示例包括但不限于查找表、硬件实现方式、可编程逻辑阵列(PLA)、微码只读存储器(ROM)等。指令高速缓存单元734还被耦合到存储器单元770。解码单元740被耦合到执行引擎单元750中的重新命名/分配器单元752。
执行引擎单元750包括重新命名/分配器单元752,重新命名/分配器单元752被耦合到退出单元754和一组的一个或多个调度器单元756。调度器单元756代表任何数量的不同调度器,包括预约站(RS)、中央指令窗口等。调度器单元756被耦合到物理寄存器堆单元758。每个物理寄存器堆单元758代表一个或多个物理寄存器堆,不同的物理寄存器堆存储一个或多个不同数据类型,诸如标量整数、标量浮点、组装整数、组装浮点、向量整数、向量浮点等、状态(例如,作为将要被执行的下一个指令的地址的指令指针)等。物理寄存器堆单元758与退出单元754交叠以图示可实现寄存器重新命名和无序执行的各种方式(例如,使用重新排序缓冲器和退出寄存器堆;使用未来堆、历史缓冲器和退出寄存器堆;使用寄存器映射和寄存器池等)。
通常,从处理器的外部或从程序员的角度,架构寄存器是可见的。所述寄存器不限于任何已知的特定类型的电路。各种不同类型的寄存器是合适的,只要它们能够如这里所述那样存储数据并且提供数据即可。合适的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重新命名的动态地分配的物理寄存器、专用物理寄存器和动态地分配的物理寄存器的组合等。退出单元754和物理寄存器堆单元758被耦合到执行群集760。执行群集760包括一组的一个或多个执行单元762和一组的一个或多个存储器访问单元764。执行单元762可执行各种操作(例如,移位、加法、减法、乘法),并且操作各种类型的数据(例如,标量浮点、组装整数、组装浮点、向量整数、向量浮点)。
尽管一些实施例可包括专用于特定功能或一组功能的许多执行单元,但其它实施例可包括全都执行所有功能的仅一个执行单元或多个执行单元。调度器单元756、物理寄存器堆单元758和执行群集760被示出为是可能的多个,因为某些实施例创建用于某些类型的数据/操作的分开的流水线(例如,标量整数流水线、标量浮点/组装整数/组装浮点/向量整数/向量浮点流水线和/或存储器访问流水线,每种流水线具有它们自己的调度器单元、物理寄存器堆单元和/或执行群集 - 并且在分开的存储器访问流水线的情况下,实现仅这个流水线的执行群集具有存储器访问单元764的某些实施例)。还应该理解,在使用分开的流水线的情况下,这些流水线中的一个或多个流水线可以是无序发出/执行,并且其余流水线按顺序发出/执行。
所述一组存储器访问单元764被耦合到存储器单元770,举几个例子,存储器单元770可包括数据预取器780、数据TLB单元772、数据高速缓存单元(DCU) 774和级2(L2)高速缓存单元776。在一些实施例中,DCU 774也被称为第一级数据高速缓存(L1高速缓存)。DCU774可处理多个未解决的高速缓存未命中,并且继续为输入的存储和加载服务。它还支持保持高速缓存相干性。数据TLB单元772是用于通过映射虚拟和物理地址空间来提高虚拟地址转换速度的高速缓存。在一个示例性实施例中,存储器访问单元764可包括加载单元、存储地址单元和存储数据单元,其中的每个单元被耦合到存储器单元770中的数据TLB单元772。L2高速缓存单元776可被耦合到一个或多个其它级的高速缓存,并且最终被耦合到主存储器。
在一个实施例中,通过自动地预测程序将要耗用哪些数据,数据预取器780以推测方式将数据加载/预取到DCU 774。预取可以指代在处理器实际上需要数据之前将存储在存储器分级体系的一个存储器位置(例如,地点)(例如,较低级高速缓存或存储器)中的数据转送到更靠近处理器(例如,产生对处理器的较低访问延时)的较高级存储器位置。更具体地讲,预取可指代在处理器发出对返回的特定数据的要求之前从一个较低级高速缓存/存储器到数据高速缓存和/或预取缓冲器的数据的早期检索。
处理器700可支持一种或多种指令集(例如,x86指令集(具有已利用较新的版本添加的一些扩展);英国赫特福德郡国王兰利(Kings Langley, Hertfordshire, UK)的想象技术公司(Imagination Technologies)的MIPS指令集;加利福尼业州森尼维尔(Sunnyvale, CA)的ARM 控股公司(ARM Holdings)的ARM指令集(具有可选的附加扩展(诸如,NEON))。
应该理解,所述核可支持多线程(执行两个或更多个并行组的操作或线程),并且可按照各种方式实现这一点,所述各种方式包括时间切片多线程、同时多线程(其中单个物理核为该物理核同时以多线程方式执行的每个线程提供逻辑核)或者其组合(例如,诸如英特尔®(Intel®)超线程技术中的时间切片获取和解码和其后的同时多线程)。
尽管在无序执行的情境下描述寄存器重新命名,但应该理解,可在按顺序架构中使用寄存器重新命名。尽管示出的处理器的实施例也包括分开的指令和数据高速缓存单元以及共享的L2高速缓存单元,但替代实施例可具有用于指令和数据二者的单个内部高速缓存,诸如例如级1(L1)内部高速缓存或多级的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和位于所述核和/或处理器外部的外部高速缓存的组合。替代地,所有的高速缓存可位于所述核和/或处理器外部。需要注意的是,指令高速缓存单元734、数据高速缓存单元774和L2高速缓存单元776通常不会实现在本公开中描述的过程,因为通常这些高速缓存单元使用不表现出页局部性行为的管芯上存储器。
图7B是根据本公开的一些实施例的图示由图7A的处理器700实现的按顺序流水线和寄存器重新命名级、无序发出/执行流水线的框图。图7B中的实线框图示按顺序流水线,而虚线框图示寄存器重新命名、无序发出/执行流水线。在图7B中,处理器流水线700包括获取级702、长度解码级704、解码级706、分配级708、重新命名级710、调度(也被称为分派或发出)级712、寄存器读取/存储器读取级714、执行级716、回写/存储器写入级718、异常处理级722和提交级724。在一些实施例中,级702-724的排序可不同于示出的排序,并且不限于图7B中示出的所述特定排序。
图8图示根据一个实施例的用于处理器800的微架构的框图,所述处理器800包括可用于在进入虚拟机时执行转换的逻辑电路。在一些实施例中,能够执行根据一个实施例的指令以操作具有字节、字、双字、四倍字等的大小以及诸如单精度和双精度整数和浮点数据类型的数据类型的数据元素。在一个实施例中,按顺序前端801是处理器800的一部分,其获取待执行指令并且准备所述指令以便稍后在处理器流水线中使用。页添加和内容复制的实施例能够被实现在处理器800中。
前端801可包括几个单元。在一个实施例中,指令预取器816从存储器获取指令并且将它们提供给指令解码器818,指令解码器818又对它们进行解码或解释。例如,在一个实施例中,解码器将接收的指令解码成机器能够执行的称为“微指令”或“微操作”(也被称为微op(micro op)或uop)的一个或多个操作。在其它实施例中,解码器将指令解析成操作码和对应数据和控制字段,所述操作码和对应数据和控制字段由微架构使用以执行根据一个实施例的操作。在一个实施例中,踪迹高速缓存830采用解码的uop,并且将它们汇编成uop队列834中的程序排序序列或踪迹以用于执行。当踪迹高速缓存830遇到复杂指令时,微码ROM(或RAM)832提供完成操作所需的uop。
一些指令被转换成单个微操作,而其它指令需要几个微操作以完成完整操作。在一个实施例中,如果需要超过四个微操作来完成指令,则解码器818访问微码ROM 832以执行该指令。对于一个实施例,指令能够在指令解码器818被解码成用于处理的少量的微op。在另一实施例中,如果需要许多微操作来完成操作,则指令能够被存储在微码ROM 832内。踪迹高速缓存830参考入口点可编程逻辑阵列(PLA),用于确定正确的微指令指针,以便从微码ROM 832读取用于完成根据一个实施例的一个或多个指令的微码序列。在微码ROM 832结束对用于指令的微操作排序之后,机器的前端801重新开始从踪迹高速缓存830获取微操作。
无序执行引擎803是准备用于执行的指令的地方。无序执行逻辑具有许多缓冲器以在指令沿着流水线前进并且被调度好执行时对指令流进行平滑和重新排序从而优化性能。分配器逻辑分配每个uop为了执行而需要的机器缓冲器和资源。寄存器重新命名逻辑将逻辑寄存器重新命名为寄存器堆中的条目。分配器还在指令调度器(存储器调度器、快速调度器802、慢速/一般浮点调度器804和简单浮点调度器806)前面为两个uop队列(一个uop队列用于存储器操作并且一个uop队列用于非存储器操作)中的一个uop队列中的每个uop分配入口。uop调度器802、804、806基于它们的相关输入寄存器操作数源的准备状态和uop完成它们的操作所需的执行资源的可用性确定uop何时准备好执行。一个实施例的快速调度器802能够在主时钟周期的每半个时钟周期上进行调度,而其它调度器能够仅在每个主处理器时钟周期进行一次调度。调度器对分派端口进行仲裁以调度uop以供执行。
寄存器堆808、810位于调度器802、804、806和执行块811中的执行单元812、814、816、818、820、822、824之间。存在分别用于整数和浮点操作的分开的寄存器堆808、810。一个实施例的每个寄存器堆808、810还包括旁路网络,所述旁路网络能够绕过还未被写到寄存器堆中的刚刚完成的结果或将还未被写到寄存器堆中的刚刚完成的结果转发给新的相关的uop。整数寄存器堆808和浮点寄存器堆810还能够彼此传送数据。对于一个实施例,整数寄存器堆808被划分成两个分开的寄存器堆,一个寄存器堆用于数据的低阶32位并且第二寄存器堆用于数据的高阶32位。一个实施例的浮点寄存器堆810具有128位宽的条目,因为浮点指令通常具有从64位到128位宽度的操作数。
执行块811包含在其中实际上执行指令的执行单元812、814、816、818、820、822、824。这个部分包括寄存器堆808、810,寄存器堆808、810存储微指令为了执行而需要的整数和浮点数据操作数值。一个实施例的处理器800包括许多执行单元:地址产生单元(AGU)812、AGU 814、快速ALU 816、快速ALU 818、慢速ALU 810、浮点ALU 812、浮点移动单元814。对于一个实施例,浮点执行块812、814执行浮点、MMX、SIMD和SSE或其它操作。一个实施例的浮点ALU 812包括用于执行除法、平方根和余数微操作的64位乘64位的浮点除法器。对于本公开的实施例,可利用浮点硬件处理涉及浮点值的指令。
在一个实施例中,ALU操作前往高速ALU执行单元816、818。一个实施例的快速ALU816、818能够利用半个时钟周期的有效延时执行快速操作。对于一个实施例,大多数复杂的整数操作前往慢速ALU 820,因为慢速ALU 820包括用于长延时类型的操作的整数执行硬件,诸如乘法器、移位器、标记逻辑和分支处理。存储器加载/存储操作由AGU 822、824执行。对于一个实施例,在对64位的数据操作数执行整数操作的情境下描述整数ALU 816、818、820。在替代实施例中,ALU 816、818、820能够被实现以支持各种数据位(包括16位、32位、128位、256位等)。类似地,浮点单元822、824能够被实现以支持具有各种宽度的位的一定范围的操作数。对于一个实施例,浮点单元822、824能够结合SIMD和多媒体指令对128位宽的组装数据操作数进行操作。
在一个实施例中,uop调度器802、804、806在父负载已完成执行之前分派相关操作。因为在处理器800中以推测方式调度和执行uop,所以处理器800还包括用于处理存储器未命中的逻辑。如果数据负载在数据高速缓存中未命中,则能够在流水线中存在为调度器留下暂时错误数据的执行中的相关操作。重放机构跟踪并且重新执行使用错误数据的指令。仅相关操作需要被重放,并且独立操作被允许完成。处理器的一个实施例的调度器和重放机构也被设计为捕捉用于文本串比较操作的指令序列。
术语“寄存器”可指代被用作用于识别操作数的指令的一部分的板载的处理器存储位置。换句话说,(从程序员的角度)寄存器可以是可从处理器的外部使用的那些寄存器。然而,实施例的寄存器不应该局限于表示特定类型的电路。相反地,实施例的寄存器能够存储和提供数据,并且执行这里描述的功能。这里描述的寄存器能够由处理器内的电路使用任何数量的不同技术(诸如,专用物理寄存器、使用寄存器重新命名的动态地分配的物理寄存器、专用物理寄存器和动态地分配的物理寄存器的组合等)实现。在一个实施例中,整数寄存器存储三十二位的整数数据。一个实施例的寄存器堆还包含用于组装数据的八个多媒体SIMD寄存器。
对于这里的讨论,寄存器被理解为被设计为保存组装数据的数据寄存器,诸如能够利用来自加利福尼亚州圣克拉拉(Santa Clara, California)的英特尔公司(IntelCorporation)的MMX技术实现的微处理器中的64位宽的MMX™寄存器(在一些实例中,也被称为“mm”寄存器)。以整数和浮点形式二者可用的这些MMX寄存器能够利用伴随SIMD和SSE指令的组装数据元素而操作。类似地,与SSE2、SSE3、SSE4或以后的技术(通常称为“SSEx”)相关的128位宽的XMM寄存器也能够被用于保存这种组装数据操作数。在一个实施例中,在存储组装数据和整数数据时,寄存器不需要区分这两种数据类型。在一个实施例中,整数和浮点被包含在相同寄存器堆中或被包含在不同寄存器堆中。另外,在一个实施例中,浮点和整数数据可被存储在不同寄存器或相同寄存器中。
实施例可被实现在许多不同系统类型中。现在参照图9,示出根据实现方式的多处理器系统900的框图。如图9中所示,多处理器系统900是点对点互连系统,并且包括经点对点互连950耦合的第一处理器970和第二处理器980。如图9中所示,处理器970和980中的每个处理器可以是多核处理器,包括第一和第二处理器核(即,处理器核974a和974b以及处理器核984a和984b),但许多的更多的核潜在地可存在于处理器中。
尽管示出为具有两个处理器970、980,但应该理解,本公开的范围不限于此。在其它实现方式中,一个或多个另外的处理器可存在于给定处理器中。
处理器970和980分别被示出为包括集成存储器控制器单元972和982。处理器970还包括点对点(P-P)接口976和988作为它的总线控制器单元的一部分;类似地,第二处理器980包括P-P接口986和988。处理器970、980可使用P-P接口电路978、988经点对点(P-P)接口950交换信息。如图9中所示,IMC 972和982将处理器耦合到相应的存储器,即存储器932和存储器934,存储器932和存储器934可以是在本地附接到相应处理器的主存储器的部分。
处理器970、980均可使用点对点接口电路976、994、986、998经各P-P接口952、954与芯片集990交换信息。芯片集990还可经高性能图形接口939与高性能图形电路938交换信息。
共享高速缓存(未示出)可被包括在任一处理器中或被包括在两个处理器外部,但经P-P互连与处理器连接,从而如果处理器被布置在低功率模式,则任一处理器或两个处理器的本地高速缓存信息可被存储在所述共享高速缓存中。当将条目分配给共享高速缓存时,还可在一个或多个高速缓存控制器上在共享高速缓存中创建页局部性。
芯片集990可经接口996被耦合到第一总线916。在一个实施例中,第一总线916可以是外围部件互连(PCI)总线或者诸如PCI 快速(PCI Express)总线或互连总线的总线,但本公开的范围不限于此。
现在参照图10,示出根据本公开的实施例的第三系统1000的框图。图9和10中的相似的元件具有相似的附图标记,并且已从图9省略图10的某些方面以便避免模糊图10的其它方面。
图10图示:处理器1070、1080可分别包括集成存储器和I/O控制逻辑(“CL”) 1072和1092。对于至少一个实施例,CL 1072、1082可包括集成存储器控制器单元(诸如,这里描述的集成存储器控制器单元)。另外,CL 1072、1092还可包括I/O控制逻辑。图10图示:存储器1032、1034被耦合到CL 1072、1092,并且I/O装置1014也被耦合到控制逻辑1072、1092。传统I/O装置1015被耦合到芯片集1090。
图11是可包括一个或多个核1102的示例性片上系统(SoC) 1100。在膝上型计算机、桌上型计算机、手持式PC、个人数字助手、工程工作站、服务器、网络装置、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式装置和各种其它电子装置的领域中已知的其它系统设计和结构也是合适的。总体而言,能够包括如这里所公开的处理器和/或其它执行逻辑的极大范围的各种系统或电子装置通常是合适的。
在图11的示例性SoC 1100内,虚线框是更高级的SoC上的特征。互连单元1102可被耦合到:应用处理器1117,其包括一组的一个或多个核1102A-N和共享高速缓存单元1106;系统代理单元1110;总线控制器单元1116;集成存储器控制器单元1114;一组的一个或多个媒体处理器1120,其可包括集成图形逻辑1108、用于提供静止和/或视频照相机功能的图像处理器1124、用于提供硬件音频加速的音频处理器1126和用于提供视频编码/解码加速的视频处理器1128;静态随机存取存储器(SRAM)单元1130;直接存储器存取(DMA)单元1132;和显示单元1140,用于耦合到一个或多个外部显示器。
接下来转到图12,描绘根据本公开的实施例的片上系统(SoC)设计的实施例。作为说明性示例,SoC 1200被包括在用户装备(UE)中。在一个实施例中,UE指代将要由最终用户用来通信的任何装置,诸如手持电话、智能电话、平板计算机、超薄笔记本、具有宽带适配器的笔记本或任何其它类似的通信装置。UE可连接到基站或节点,所述基站或节点在性质上能够对应于GSM网络中的移动站(MS)。页添加和内容复制的实施例能够被实现在SoC 1200中。
这里,SoC 1200包括2个核 - 1206和1207。类似于以上的讨论,核1206和1207可符合指令集架构,诸如具有英特尔® 架构核™(Intel® Architecture Core™)的处理器、高级微设备有限公司(Advanced Micro Devices, Inc.) (AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计或其客户以及它们的被许可方或采用者。核1206和1207被耦合到高速缓存控制1208,高速缓存控制1208与总线接口单元1209和L2高速缓存1210关联以与系统1200的其它部分通信。互连1211包括片上互连(诸如,IOSF、AMBA或以上讨论的其它互连),其能够实现描述的本公开的一个或多个方面。
在一个实施例中,SDRAM控制器1240可经高速缓存125连接到互连1211。互连1211向其它部件提供通信信道,所述其它部件诸如用于与SIM卡对接的订户身份模块(SIM)1230、用于保存由核1206和1207执行以初始化和引导SoC 1200的引导代码的引导ROM1235、用于与外部存储器(例如,DRAM 1260)对接的SDRAM控制器1240、用于与非易失性存储器(例如,闪存1265)对接的闪存控制器1245、用于与外围设备对接的外围控制1250(例如,串行外设接口)、用于显示和接收输入(例如,触摸启用的输入)的视频编码解码器1220和视频接口1225、用于执行图形相关计算的GPU 1215等。这些接口中的任何接口可包括这里描述的实施例的方面。
另外,该系统图示用于通信的外围设备,诸如蓝牙®(Bluetooth®)模块1270、3G调制解调器1275、GPS 1280和Wi-Fi® 1285。需要注意的是,如上所述,UE包括用于通信的无线电设备。作为结果,可能不包括所有这些外围通信模块。然而,在UE中,应该包括用于外部通信的某种形式的无线电设备。
图13图示具有计算系统1300的示例性形式的机器的图形表示,在该机器内,可执行用于使该机器执行这里讨论的多种方法中的任何一种或多种的指令集。在替代实施例中,该机器可连接(例如,联网)到LAN、内联网、外联网或互联网中的其它机器。该机器在客户机-服务器网络环境中可以以服务器或客户机设备的身份操作,或者在对等(或分布式)网络环境中可以以对等机器的身份操作。该机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助手(PDA)、蜂窝电话、web器具、服务器、网络路由器、交换机或桥或能够执行指定由该机器采取的动作的一组指令(顺序的或其它方式的)的任何机器。另外,尽管仅示出单一机器,但术语“机器”也应该被理解为包括单独地或共同地执行一组(或多组)指令以执行这里讨论的多种方法中的任何一种或多种的机器的任何集合。页添加和内容复制的实施例能够被实现在计算系统1300中。
计算系统1300包括经总线1308彼此通信的处理装置1302、主存储器1304(例如,闪存、动态随机存取存储器(DRAM)(诸如,同步DRAM(SDRAM)或DRAM(RDRAM)等)、静态存储器1306(例如,闪存、静态随机存取存储器(SRAM)等)和数据存储装置1318。在一个实施例中,总线1308可由图1的系统总线170-1和/或存储器总线170-2构成,并且共享总线1308的存储器和外围装置可以是系统代理114或通过系统代理114工作,类似于如参照图1所讨论的。
处理装置1302代表一个或多个通用处理装置,诸如微处理器、中央处理单元等。更具体地讲,处理装置可以是复杂指令集计算(CISC)微处理器、精减指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器或实现其它指令集的处理器或实现指令集的组合的处理器。处理装置1302还可以是一个或多个专用处理装置,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。在一个实施例中,处理装置1302可包括一个或处理器核。处理装置1302被配置为执行用于执行这里讨论的操作的处理逻辑1326。
在一个实施例中,处理装置1302能够是图1的计算系统100的一部分。替代地,计算系统1300能够包括如这里所述的其它部件。应该理解,所述核可支持多线程(执行两个或更多个并行组的操作或线程),并且可按照各种方式实现这一点,所述各种方式包括时间切片多线程、同时多线程(其中单个物理核为该物理核同时以多线程方式执行的每个线程提供逻辑核)或者其组合(例如,诸如英特®超线程技术中的时间切片获取和解码和其后的同时多线程)。
计算系统1300还可包括以可通信方式耦合到网络1319的网络接口装置1318。计算系统1300也可包括视频显示装置1310(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入装置1310(例如,键盘)、光标控制装置1314(例如,鼠标)、信号产生装置1320(例如,扬声器)或其它外围装置。另外,计算系统1300可包括图形处理单元1322、视频处理单元1328和音频处理单元1332。在另一实施例中,计算系统1300可包括芯片集(未示出),所述芯片集指代一组集成电路或芯片,所述一组集成电路或芯片被设计为与处理装置1302一起工作并且控制处理装置1302和外部装置之间的通信。例如,芯片集可以是母板上的一组芯片,所述母板将处理装置1302链接到超高速装置(诸如,主存储器1304和图形控制器)以及将处理装置1302链接到外围设备的低速外围总线(诸如,USB、PCI或ISA总线)。
数据存储装置1318可包括计算机可读存储介质1324,计算机可读存储介质1324上存储软件1326,软件1326实现这里描述的功能的多种方法中的任何一种或多种。软件1326在其由计算系统1300执行期间也可完全或至少部分地驻留在主存储器1304内作为指令1326和/或驻留在处理装置1302内作为处理逻辑;主存储器1304和处理装置1302也构成计算机可读存储介质。
计算机可读存储介质1324还可被用于存储使用处理装置1302的指令1326(诸如,相对于图1和2所述)和/或包含调用以上应用的方法的软件库。尽管计算机可读存储介质1324在示例性实施例中被示出为单一介质,但术语“计算机可读存储介质”应该被理解为包括存储所述一组或多组指令的单一介质或多个介质(例如,集中式或分布式数据库和/或关联的高速缓存和服务器)。术语“计算机可读存储介质”也应该被理解为包括这样的任何介质:该介质能够存储、编码或传送用于由机器执行的一组指令并且使机器执行本实施例的多种方法中的任何一种或多种。术语“计算机可读存储介质”应该相应地被理解为包括但不限于固态存储器以及光学和磁介质。
下面的示例涉及另外的实施例。
示例1是一种处理器,包括核,所述核包括虚拟化支持电路,用以:a) 从与虚拟机关联的虚拟机控制结构(VMCS)检索逻辑地址,所述逻辑地址对应于将要被访问的指令;b)将逻辑地址转换成顾客虚拟地址;c) 调用转换电路以将顾客虚拟地址转换成顾客物理地址,并且将顾客物理地址转换成主机物理地址;以及d) 将顾客物理地址或主机物理地址中的至少一个存储在VMCS中。
在示例2中,如示例1所述的处理器,其中所述虚拟化支持电路还检测在VMCS的进入时转换控制字段内设置了位标志作为用于执行检索、转换、调用和存储的触发;以及其中所述核还a)执行虚拟机监视器(VMM)以响应于需要访问指令的请求而将逻辑地址转换成主机物理地址:b) 将逻辑地址存储在与虚拟机关联的VMCS中;以及c) 从VMCS检索顾客物理地址或主机物理地址中的至少一个以用于对用于虚拟机的指令进行仿真。
在示例3中,如示例2所述的处理器,其中所述虚拟化支持电路还:a) 调用所述核的地址产生电路以将逻辑地址转换成顾客虚拟地址;b) 检测地址产生故障或分段故障之一;c) 在VMCS中与逻辑地址相关地存储地址产生故障或分段故障的记录;以及d) 执行至VMM的基于故障的退出。
在示例4中,如示例2所述的处理器,其中所述虚拟化支持电路还针对与顾客物理地址和主机物理地址对应的存储器页测试访问权限,并且其中所述核还使虚拟化支持电路:a) 作为顾客虚拟地址到主机物理地址的转换的结果检测故障;b) 在VMCS中与逻辑地址相关地存储故障的记录;以及c) 执行至VMM的基于故障的退出。
在示例5中,如示例2所述的处理器,其中所述VMM还:a) 针对与逻辑地址相关地存储的故障的记录检查VMCS;以及b) 响应于发现故障的记录,处理故障或向虚拟机通知故障之一。
在示例6中,如示例2所述的处理器,其中所述虚拟化支持电路还:a) 针对与顾客物理地址和主机物理地址对应的存储器页测试访问权限;b) 从VMCS加载VMM状态;以及c)执行至VMM的退出,所述退出的原因包括进入时转换退出。
在示例7中,如示例2所述的处理器,其中所述VMM代表虚拟机对指令进行仿真以指示硬件装置。
在示例8中,如示例1所述的处理器,其中所述转换电路包括页未命中处理器(PMH)电路。
在示例9中,如示例1所述的处理器,其中所述虚拟化支持电路包括执行微码的核。
在示例10中,如示例1所述的处理器,其中所述核还将顾客虚拟地址存储在与用于虚拟机的当前地址空间标识符关联的转换后备缓冲器条目中。
在示例11中,如示例10所述的处理器,其中所述虚拟化支持电路还响应于逻辑地址到顾客虚拟地址的转换而使该转换后备缓冲器条目无效。
各种实施例可具有上述结构特征的不同组合。例如,还可相对于这里描述的方法或过程实现上述计算系统的所有可选的特征,并且示例中的细节可被用在一个或多个实施例中的任何地方。
示例12是一种系统,包括:1) 存储器,用于存储与虚拟机(VM)关联的虚拟机存储结构(VMCS),并且存储其中填充有与用于虚拟机的将要被仿真的指令对应的多个逻辑地址的表;和2) 处理器,以可操作方式耦合到存储器,其中所述处理器包括虚拟化支持电路以:a) 检测在与虚拟机关联的VMCS的进入时转换控制字段内设置了位标志;以及b) 响应于检测到位标志,针对所述多个逻辑地址中的至少一些逻辑地址中的每个逻辑地址:c) 从所述表检索逻辑地址;d) 将逻辑地址转换成顾客虚拟地址;d) 调用转换电路以将顾客虚拟地址转换成顾客物理地址并且将顾客物理地址转换成主机物理地址;以及e) 将顾客物理地址或主机物理地址中的至少一个与逻辑地址相关地存储在所述表中。
在示例13中,如权利要求12所述的系统,其中所述处理器还a) 执行虚拟机监视器(VMM),以响应于将所述多个逻辑地址转换成多个主机物理地址的要求:b) 利用所述多个逻辑地址填充所述表;以及c) 从所述表检索多个顾客物理地址或多个主机物理地址之一以用于对用于虚拟机的指令进行仿真。
在示例14中,如权利要求13所述的系统,其中所述VMM还在VMCS中存储存储器中所述表的位置的地址,并且其中虚拟化支持电路还访问在存储器中所述位置处的表以检索逻辑地址。
在示例15中,如权利要求13所述的系统,其中所述虚拟化支持电路还:a) 调用处理器的地址产生电路以将逻辑地址转换成顾客物理地址;b) 检测地址产生故障或分段故障之一;c) 在VMCS中与逻辑地址相关地存储地址产生故障或分段故障的记录;以及d) 执行至VMM的基于故障的退出。
在示例16中,如权利要求13所述的系统,其中所述虚拟化支持电路还:a) 针对与顾客物理地址和主机物理地址对应的存储器页测试访问权限;b) 作为测试访问权限的结果检测许可故障;c) 在VMCS中与逻辑地址相关地存储许可故障的记录;以及d) 执行至VMM的基于故障的退出。
在示例17中,如权利要求13所述的系统,其中所述虚拟化支持电路还:a) 在所述表中将该逻辑地址指示为有效;b) 响应于将所述多个逻辑地址中的第二逻辑地址转换成第二顾客虚拟地址,作为将第二顾客虚拟地址转换成第二主机物理地址的结果,检测故障;c) 在VMCS中与第二逻辑地址相关地存储该故障;以及d) 执行至VMM的基于故障的退出。
在示例18中,如权利要求17所述的系统,其中所述VMM还响应于基于故障的退出:a) 从所述表向VMCS移动在所述表中指示为有效的所述多个逻辑地址的子集以及对应顾客物理地址和主机物理地址;b) 从所述表去除导致了故障的第二逻辑地址;以及c) 请求虚拟化支持电路重新开始留在所述表中的所述多个逻辑地址的子集的转换。
各种实施例可具有上述结构特征的不同组合。例如,还可相当于这里描述的系统实现上述处理器和方法的所有可选的特征,并且示例中的细节可被用在一个或多个实施例中的任何地方。
示例19是一种系统,包括:a) 由处理器的虚拟化支持电路从与虚拟机关联的虚拟机控制结构(VMCS)检索逻辑地址,所述逻辑地址对应于将要被访问的指令;b) 由虚拟化支持电路将逻辑地址转换成顾客虚拟地址;c) 由虚拟化支持电路调用转换电路以:将顾客虚拟地址转换成顾客物理地址,并且将顾客物理地址转换成主机物理地址;以及d) 由虚拟化支持电路将顾客物理地址或主机物理地址中的至少一个存储在VMCS中。
在示例20中,如权利要求19所述的方法,还包括:a) 由虚拟化支持电路检测在VMCS的进入时转换控制字段内设置了位标志作为用于执行检索、转换、调用和存储的触发;b) 由虚拟化支持电路从VMCS的多个VM进入控制字段检索所述逻辑地址;以及c) 通过调用处理器的地址产生电路来将逻辑地址转换成顾客虚拟地址。
在示例21中,如权利要求19所述的方法,还包括:a) 通过由处理器执行的虚拟机监视器(VMM)接收用于虚拟机(VM)的虚拟机进入指令;b) 响应于虚拟机进入指令的执行,由VMM将逻辑地址存储在与虚拟机关联的VMCS中;以及c) 由VMM从VMCS检索顾客物理地址或主机物理地址中的至少一个以用于对用于虚拟机的指令进行仿真。
在示例22中,如权利要求21所述的方法,还包括:a) 检测地址产生故障或分段故障之一;b) 在VMCS中与逻辑地址相关地存储地址产生故障或分段故障的记录;以及c) 执行至VMM的基于故障的退出。
在示例23中,如权利要求21所述的方法,还包括:a) 针对与顾客物理地址和主机物理地址对应的存储器页测试访问权限;b) 作为测试访问权限的结果检测许可故障;c)在VMCS中与逻辑地址相关地存储许可故障的记录;以及d) 执行至VMM的基于故障的退出。
在示例24中,如权利要求21所述的方法,还包括:a) 由VMM针对与逻辑地址相关地存储的故障的记录检查VMCS;以及b) 响应于发现故障的记录,处理故障或向虚拟机通知故障之一。
在示例25中,如权利要求21所述的方法,还包括:a) 由虚拟化支持电路从VMCS加载VMM状态;以及b) 执行至VMM的退出,所述退出的原因包括进入时转换退出。
各种实施例可具有上述结构特征的不同组合。例如,还可相对于这里描述的系统实现上述处理器和方法的所有可选的特征,并且示例中的细节可被用在一个或多个实施例中的任何地方。
尽管已相对于有限数量的实施例描述了本公开,但本领域技术人员将会从其理解许多修改和变化。所附权利要求旨在涵盖落在本公开的真正精神和范围内的所有这种修改和变化。
在这里的描述中,阐述了许多特定细节(诸如,特定类型的处理器和系统结构的示例、特定硬件结构、特定架构和微架构细节、特定寄存器结构、特定指令类型、特定系统部件、特定测量结果/高度、特定处理器流水线级和操作等)以便提供对本公开的彻底的理解。然而,对于本领域技术人员而言将会清楚的是,这些特定细节不需要被采用以实施本公开。在其它实例中,公知部件或方法(诸如,特定和替代处理器架构、用于描述的算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定逻辑结构、特定制造技术和材料、特定编译器实现方式、代码中的算法的特定表达、特定掉电和选通技术/逻辑和计算机系统的其它特定操作细节)未被详细地描述以便避免不必要地模糊本公开。
参照确定(诸如计算平台或微处理器中的)特定集成电路中基于扇区的高速缓存的高速缓存行中的数据的有效性,描述实施例。实施例也可适用于其它类型的集成电路和可编程逻辑装置。例如,公开的实施例不限于桌上型计算机系统或便携式计算机,诸如英特尔®超极本™(Intel® Ultrabooks™)计算机。并且还可被用在其它装置中,其它装置诸如手持式装置、平板计算机、其它薄笔记本、片上系统(SoC)装置和嵌入式应用。手持式装置的一些示例包括蜂窝电话、互联网协议装置、数字照相机、个人数字助手(PDA)和手持式PC。嵌入式应用通常包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或能够执行以下教导的功能和操作的任何其它系统。已描述该系统能够是任何种类的计算机或嵌入式系统。公开的实施例可尤其被用于低端装置,比如可穿戴装置(例如,手表)、电子植入物、传感和控制基础设施装置、控制器、监控和数据采集(SCADA)系统等。此外,这里描述的设备、方法和系统不限于物理计算装置,而是还可涉及用于能量节约和效率的软件优化。在以下的描述中将会容易地变得清楚的是,这里描述的方法、设备和系统的实施例(无论是参照硬件、固件、软件还是参照其组合)对于与性能考虑平衡的“绿色技术”未来而言至关重要。
虽然参照处理器描述这里的实施例,但其它实施例适用于其它类型的集成电路和逻辑装置。本公开的实施例的类似技术和教导能够被应用于能够受益于更高的流水线吞吐量和提高的性能的其它类型的电路或半导体装置。本公开的实施例的教导适用于执行数据操纵的任何处理器或机器。然而,本公开不限于执行512位、256位、128位、64位、32位或16位数据操作的处理器或机器,并且能够被应用于在其中执行数据的操纵或管理的任何处理器和机器。另外,这里的描述提供示例,并且附图为了说明的目的而示出各种示例。然而,这些示例不应该在限制性意义上被解释,因为它们仅意图提供本公开的实施例的示例,而非提供本公开的实施例的所有可能的实现方式的穷举列表。
虽然以上的示例描述在执行单元和逻辑电路的情境下的指令处理和分发,但能够通过存储在机器可读有形介质上的数据或指令来完成本公开的其它实施例,当由机器执行所述数据或指令时,所述数据或指令使机器执行根据本公开的至少一个实施例的功能。在一个实施例中,与本公开的实施例关联的功能被实现于机器可执行指令中。所述指令能够被用于使被利用所述指令编程的通用或专用处理器执行本公开的步骤。本公开的实施例可被提供作为计算机程序产品或软件,所述计算机程序产品或软件可包括在其上已存储有指令的机器或计算机可读介质,所述指令可被用于对计算机(或其它电子装置)进行编程以执行根据本公开的实施例的一个或多个操作。替代地,本公开的实施例的操作可由包含用于执行所述操作的固定功能逻辑的特定硬件部件或由已编程计算机部件和固定功能硬件部件的任何组合执行。
用于对逻辑进行编程以执行本公开的实施例的指令能够被存储在系统中的存储器(诸如,DRAM、高速缓存、闪存或其它存储装置)内。另外,能够经网络或通过其它计算机可读介质分发所述指令。因此,机器可读介质可包括用于存储或传送具有可由机器(例如,计算机)读取的形式的信息的任何机构,但不限于软盘、光盘、压缩盘、只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光学卡、闪存或者在经电、光学、听觉或其它形式的传播信号(例如,载波、红外信号、数字信号等)在互联网上的信息的传输中使用的有形机器可读存储装置。因此,计算机可读介质包括适合存储或传送具有可由机器(例如,计算机)读取的形式的电子指令或信息的任何类型的有形机器可读介质。
设计可经过从创建到仿真到加工的各种阶段。代表设计的数据可按照许多方式代表所述设计。首先,可使用硬件描述语言或另一功能描述语言表示硬件,这在仿真中很有用。另外,可在设计过程的一些阶段生产具有逻辑和/或晶体管门的电路级模型。另外,在某个阶段,多数设计达到代表硬件模型中的各种装置的物理放置的数据的水平。在使用传统半导体加工技术的情况下,代表硬件模型的数据可以是指定用于生产集成电路的掩模的不同掩模层上的各种特征的存在或不存在的数据。在所述设计的任何表示中,所述数据可被存储在任何形式的机器可读介质中。存储器或者磁存储装置或光学存储装置(诸如,盘)可以是用于存储经由为了传送这种信息而调制或以其它方式产生的光波或电波传送的信息的机器可读介质。当传送指示或携带代码或设计的电载波时,就执行电信号的复制、缓冲或重新传送而言,制作新的拷贝。因此,通信提供商或网络提供商可在有形机器可读介质上至少暂时地存储实现本公开的实施例的技术的物品,诸如编码到载波中的信息。
如这里所使用的模块指代硬件、软件和/或固件的任何组合。作为示例,模块包括与非暂态介质关联的硬件(诸如,微控制器),所述非暂态介质用于存储适应于由微控制器执行的代码。因此,在一个实施例中,对模块的提及指代硬件,所述硬件被专门配置为识别和/或执行将要被保存在非暂态介质上的代码。另外,在另一实施例中,模块的使用指代包括代码的非暂态介质,所述代码特别适应于由微控制器执行以执行预定操作。并且如能够推断的,在另一实施例中,术语模块(在这个示例中)可指代微控制器和非暂态介质的组合。通常示出为分开的模块边界经常变化,并且潜在地交叠。例如,第一和第二模块可共享硬件、软件、固件或者其组合,同时潜在地保留一些独立硬件、软件或固件。在一个实施例中,术语逻辑的使用包括诸如晶体管、寄存器的硬件或者诸如可编程逻辑装置的其它硬件。
在一个实施例中,短语“被配置为”的使用是指布置、装配、制造、提供销售、进口和/或设计设备、硬件、逻辑或元件以执行指定或确定的任务。在这个示例中,如果未操作的设备或其元件被设计、耦合和/或互连以执行指定的任务,则它仍然“被配置为”执行所述指定的任务。作为纯粹说明性示例,逻辑门可在操作期间提供0或1。但“被配置为”向时钟提供使能信号的逻辑门并不包括可提供1或0的每个可能的逻辑门。替代地,逻辑门是以某种方式耦合的逻辑门:在操作期间,1或0输出将使能时钟。再一次需要注意的是,术语“被配置为”的使用不需要操作,而是替代地关注设备、硬件和/或元件的潜在状态,其中在潜在状态下,当所述设备、硬件和/或元件操作时,所述设备、硬件和/或元件被设计为执行特定任务。
另外,在一个实施例中,短语"用于"“能够/用于”和或“可操作于”的使用指代以这种方式设计的某种设备、逻辑、硬件和/或元件:能够以指定方式启用所述设备、逻辑、硬件和/或元件的使用。如上需要注意的是,在一个实施例中,“用于”,“能够用于”或“可操作用于”的使用指代设备、逻辑、硬件和/或元件的潜在状态,其中所述设备、逻辑、硬件和/或元件未操作,但被以这种方式设计,以能够以指定方式启用设备的使用。
如这里所使用的,值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。逻辑电平或逻辑值的使用也经常被称为1和0,其仅代表二进制逻辑状态。例如,1指代高逻辑电平,并且0指代低逻辑电平。在一个实施例中,存储基元(诸如,晶体管或闪存基元)可以能够保存单个逻辑值或多个逻辑值。然而,计算机系统中的值的其它表示已被使用。例如,十进制数十还可被表示为二进制值1010和十六进制字母A。因此,值包括能够被保存在计算机系统中的信息的任何表示。
此外,状态可由值或值的部分表示。作为示例,第一值(诸如,逻辑一)可代表缺省或初始状态,而第二值(诸如,逻辑零)可代表非缺省状态。另外,在一个实施例中,术语重置和设置分别指代缺省和更新值或状态。例如,缺省值潜在地包括高逻辑值(即,重置),而更新值潜在地包括低逻辑值(即,设置)。需要注意的是,值的任何组合可被用于代表任何数量的状态。
可经可由处理元件执行的存储在机器可访问、机器可读、计算机可访问或计算机可读介质上的指令或代码实现以上阐述的方法、硬件、软件、固件或代码的实施例。非暂态机器可访问/可读介质包括提供(即,存储和/或传送)具有可由机器(诸如,计算机或电子系统)读取的形式的信息的任何机构。例如,非暂态机器可访问介质包括:随机存取存储器(RAM)(诸如,静态RAM (SRAM)或动态RAM (DRAM));ROM;磁或光存储介质;闪存装置;电存储装置;光存储装置;声存储装置;用于保存从暂态(传播)信号(例如,载波、红外信号、数字信号)接收的信息的其它形式的存储装置;等等,所述暂态信号区别于从其接收信息的非暂态介质。
用于对逻辑进行编程以执行本公开的实施例的指令可被存储在系统中的存储器(诸如,DRAM、高速缓存、闪存或其它存储装置)内。另外,能够经网络或通过其它计算机可读介质分发所述指令。因此,机器可读介质可包括用于存储或传送具有可由机器(例如,计算机)读取的形式的信息的任何机构,但不限于软盘、光盘、压缩盘、只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光学卡、闪存或者在经由电、光学、听觉或其它形式的传播信号(例如,载波、红外信号、数字信号等)在互联网上的信息的传输中使用的有形机器可读存储装置。因此,计算机可读介质包括适合存储或传送具有可由机器(例如,计算机)读取的形式的电子指令或信息的任何类型的有形机器可读介质。
贯穿本说明书对“一个实施例”或“实施例”的提及意味着:结合该实施例描述的特定特征、结构或特性被包括在本公开的至少一个实施例中。因此,短语“在一个实施例中”或“在实施例中”在贯穿本说明书的各种地方的出现未必全部都指代相同实施例。另外,所述特定特征、结构或特性可在一个或多个实施例中以任何合适的方式组合。
在前面的说明书中,已参照特定示例性实施例给出详细描述。然而,将会清楚的是,对其的各种修改和改变可在不脱离所附权利要求中所阐述的本公开的更广泛的精神和范围的情况下作出。因此,要在说明性意义而非限制性意义上看待说明书和附图。另外,实施例和其它示例性语言的前述使用未必指代相同实施例或相同示例,而是可指代不同和有区别的实施例以及潜在地可指代相同实施例。
按照对计算机存储器内的数据位的操作的算法和符号表示提供详细描述的一些部分。这些算法描述和表示是由数据处理领域技术人员用于最有效地将他们的工作的实质传达给本领域其他技术人员的方式。算法在这里通常被设想为导致期望结果的前后一致的一系列操作。所述操作是需要物理量的物理操纵的那些操作。通常,但并非必然,这些量采取能够被存储、传送、组合、比较和以其它方式操纵的电或磁信号的形式。有时,主要由于常用的原因,已证明将这些信号称为位、值、元素、码元、字符、项、数字等是很方便的。这里描述的块能够是硬件、软件、固件或者其组合。
然而,应该记住的是,所有的这些和类似术语要与适当的物理量关联并且仅是应用于这些量的方便的标签。除非另外具体地指出,否则从以上的讨论清楚可知,应该理解,贯穿本描述,使用诸如“定义”、“接收”、“确定”、“发出”、“链接”、“关联”、“获得”、“认证”、“禁止”、“执行”、“请求”、“通信”等的术语的讨论指代计算系统或类似电子计算装置的动作和过程,所述动作和过程操纵表示为计算系统的寄存器和存储器内的物理(例如,电子)量的数据并且将所述数据变换成类似地表示为计算系统存储器或寄存器或其它这种信息存储、传送或显示装置内的物理量的其它数据。
词语“示例”或“示例性”在这里被使用来表示用作示例、实例或说明。这里描述为“示例”或“示例性”的任何方面或设计未必被解释为优选或优于其它方面或设计。相反地,词语“示例”或“示例性”的使用旨在以具体方式介绍概念。如本申请中所使用的,术语“或”旨在表示包括性的“或”而非排他性的“或”。也就是说,除非另外指出或从上下文清楚可知,否则“X包括A或B”旨在表示任何自然包括性排列。也就是说,如果X包括A;X包括B;或X包括A和B二者,则在任何前面的实例下满足“X包括A或B”。另外,除非另外指出或从上下文清楚可知指示单数形式,否则如本申请和所附权利要求中所使用的冠词“一”和“一个”应该通常被解释为表示“一个或多个”。此外,术语“实施例”或“一个实施例”或“实现方式”或“一个实现方式”在各处的使用并不意图表示相同实施例或实现方式,除非如此描述了。此外,如这里所使用的术语“第一”、“第二”、“第三”、“第四”等意味着用作用于区分不同元件的标签,并且可能未必具有根据它们的数字指定的序数含义。
Claims (25)
1.一种处理器,包括核,所述核包括虚拟化支持电路,用以:
从与虚拟机关联的虚拟机控制结构(VMCS)检索逻辑地址,所述逻辑地址对应于将要被访问的指令;
将逻辑地址转换成顾客虚拟地址;
调用转换电路以将顾客虚拟地址转换成顾客物理地址,并且将顾客物理地址转换成主机物理地址;以及
将顾客物理地址或主机物理地址中的至少一个存储在VMCS中。
2.如权利要求1所述的处理器,其中所述虚拟化支持电路还检测在VMCS的进入时转换控制字段内设置了位标志作为用于执行检索、转换、调用和存储的触发;以及
其中所述核还执行虚拟机监视器(VMM)以响应于需要访问指令的请求而将逻辑地址转换成主机物理地址:
将逻辑地址存储在与虚拟机关联的VMCS中;以及
从VMCS检索顾客物理地址或主机物理地址中的至少一个以用于对用于虚拟机的指令进行仿真。
3.如权利要求2所述的处理器,其中所述虚拟化支持电路还:
调用所述核的地址产生电路以将逻辑地址转换成顾客虚拟地址;
检测地址产生故障或分段故障之一;
在VMCS中与逻辑地址相关地存储地址产生故障或分段故障的记录;以及
执行至VMM的基于故障的退出。
4.如权利要求2所述的处理器,其中所述虚拟化支持电路还针对与顾客物理地址和主机物理地址对应的存储器页测试访问权限,并且其中所述核还使虚拟化支持电路:
作为顾客虚拟地址到主机物理地址的转换的结果检测故障;
在VMCS中与逻辑地址相关地存储故障的记录;以及
执行至VMM的基于故障的退出。
5.如权利要求2所述的处理器,其中所述VMM还:
针对与逻辑地址相关地存储的故障的记录检查VMCS;以及
响应于发现故障的记录,处理故障或向虚拟机通知故障之一。
6.如权利要求2所述的处理器,其中所述虚拟化支持电路还:
针对与顾客物理地址和主机物理地址对应的存储器页测试访问权限;
从VMCS加载VMM状态;以及
执行至VMM的退出,所述退出的原因包括进入时转换退出。
7.如权利要求2所述的处理器,其中所述VMM代表虚拟机对指令进行仿真以指示硬件装置。
8.如权利要求1所述的处理器,其中所述转换电路包括页未命中处理器(PMH)电路。
9.如权利要求1所述的处理器,其中所述虚拟化支持电路包括执行微码的核。
10.如权利要求1所述的处理器,其中所述核还将顾客虚拟地址存储在与用于虚拟机的当前地址空间标识符关联的转换后备缓冲器条目中。
11.如权利要求10所述的处理器,其中所述虚拟化支持电路还响应于逻辑地址到顾客虚拟地址的转换而使该转换后备缓冲器条目无效。
12.一种系统,包括:
存储器,用于存储与虚拟机(VM)关联的虚拟机存储结构(VMCS),并且存储其中填充有与用于虚拟机的将要被仿真的指令对应的多个逻辑地址的表;和
处理器,以可操作方式耦合到存储器,其中所述处理器包括虚拟化支持电路,用以:
检测在与虚拟机关联的VMCS的进入时转换控制字段内设置了位标志;以及
响应于检测到位标志,针对所述多个逻辑地址中的至少一些逻辑地址中的每个逻辑地址:
从所述表检索逻辑地址;
将逻辑地址转换成顾客虚拟地址;
调用转换电路以将顾客虚拟地址转换成顾客物理地址并且将顾客物理地址转换成主机物理地址;以及
将顾客物理地址或主机物理地址中的至少一个与逻辑地址相关地存储在所述表中。
13.如权利要求12所述的系统,其中所述处理器还执行虚拟机监视器(VMM),以响应于将所述多个逻辑地址转换成多个主机物理地址的要求:
利用所述多个逻辑地址填充所述表;以及
从所述表检索多个顾客物理地址或多个主机物理地址之一以用于对用于虚拟机的指令进行仿真。
14.如权利要求13所述的系统,其中所述VMM还在VMCS中存储存储器中所述表的位置的地址,并且其中虚拟化支持电路还访问在存储器中所述位置处的表以检索逻辑地址。
15.如权利要求13所述的系统,其中所述虚拟化支持电路还:
调用处理器的地址产生电路以将逻辑地址转换成顾客物理地址;
检测地址产生故障或分段故障之一;
在VMCS中与逻辑地址相关地存储地址产生故障或分段故障的记录;以及
执行至VMM的基于故障的退出。
16.如权利要求13所述的系统,其中所述虚拟化支持电路还:
针对与顾客物理地址和主机物理地址对应的存储器页测试访问权限;
作为测试访问权限的结果检测许可故障;
在VMCS中与逻辑地址相关地存储许可故障的记录;以及
执行至VMM的基于故障的退出。
17.如权利要求13所述的系统,其中所述虚拟化支持电路还:
在所述表中将该逻辑地址指示为有效;
响应于将所述多个逻辑地址中的第二逻辑地址转换成第二顾客虚拟地址,作为将第二顾客虚拟地址转换成第二主机物理地址的结果,检测故障;
在VMCS中与第二逻辑地址相关地存储该故障;以及
执行至VMM的基于故障的退出。
18.如权利要求17所述的系统,其中所述VMM还响应于基于故障的退出:
从所述表向VMCS移动在所述表中指示为有效的所述多个逻辑地址的子集以及对应顾客物理地址和主机物理地址;
从所述表去除导致了故障的第二逻辑地址;以及
请求虚拟化支持电路重新开始留在所述表中的所述多个逻辑地址的子集的转换。
19.一种方法,包括:
由处理器的虚拟化支持电路从与虚拟机关联的虚拟机控制结构(VMCS)检索逻辑地址,所述逻辑地址对应于将要被访问的指令;
由虚拟化支持电路将逻辑地址转换成顾客虚拟地址;
由虚拟化支持电路调用转换电路以:将顾客虚拟地址转换成顾客物理地址,并且将顾客物理地址转换成主机物理地址;以及
由虚拟化支持电路将顾客物理地址或主机物理地址中的至少一个存储在VMCS中。
20.如权利要求19所述的方法,还包括:
由虚拟化支持电路检测在VMCS的进入时转换控制字段内设置了位标志作为用于执行检索、转换、调用和存储的触发;
由虚拟化支持电路从VMCS的多个VM进入控制字段检索所述逻辑地址;以及
通过调用处理器的地址产生电路来将逻辑地址转换成顾客虚拟地址。
21.如权利要求19所述的方法,还包括:
通过由处理器执行的虚拟机监视器(VMM)接收用于虚拟机(VM)的虚拟机进入指令;
响应于虚拟机进入指令的执行,由VMM将逻辑地址存储在与虚拟机关联的VMCS中;以及
由VMM从VMCS检索顾客物理地址或主机物理地址中的至少一个以用于对用于虚拟机的指令进行仿真。
22.如权利要求21所述的方法,还包括:
检测地址产生故障或分段故障之一;
在VMCS中与逻辑地址相关地存储地址产生故障或分段故障的记录;以及
执行至VMM的基于故障的退出。
23.如权利要求21所述的方法,还包括:
针对与顾客物理地址和主机物理地址对应的存储器页测试访问权限;
作为测试访问权限的结果检测许可故障;
在VMCS中与逻辑地址相关地存储许可故障的记录;以及
执行至VMM的基于故障的退出。
24.如权利要求21所述的方法,还包括:
由VMM针对与逻辑地址相关地存储的故障的记录检查VMCS;以及
响应于发现故障的记录,处理故障或向虚拟机通知故障之一。
25.如权利要求21所述的方法,还包括:
由虚拟化支持电路从VMCS加载VMM状态;以及
执行至VMM的退出,所述退出的原因包括进入时转换退出。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/259411 | 2016-09-08 | ||
US15/259,411 US20180067866A1 (en) | 2016-09-08 | 2016-09-08 | Translate on virtual machine entry |
PCT/US2017/046158 WO2018048564A1 (en) | 2016-09-08 | 2017-08-09 | Translate on virtual machine entry |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109690484A true CN109690484A (zh) | 2019-04-26 |
Family
ID=61280801
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780055264.9A Pending CN109690484A (zh) | 2016-09-08 | 2017-08-09 | 在虚拟机进入时转换 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20180067866A1 (zh) |
EP (1) | EP3510488A1 (zh) |
CN (1) | CN109690484A (zh) |
WO (1) | WO2018048564A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021104502A1 (zh) * | 2019-11-28 | 2021-06-03 | 华为技术有限公司 | 一种加速硬件页表遍历的方法及装置 |
CN113094153A (zh) * | 2021-06-09 | 2021-07-09 | 北京泽塔云科技股份有限公司 | 一种用于提升虚拟化性能的系统及物理机 |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2557588B (en) * | 2016-12-09 | 2019-11-13 | Advanced Risc Mach Ltd | Memory management |
US10970388B2 (en) | 2017-06-28 | 2021-04-06 | Webroot Inc. | Discrete processor feature behavior collection |
US10901738B2 (en) | 2017-11-14 | 2021-01-26 | International Business Machines Corporation | Bulk store and load operations of configuration state registers |
US10664181B2 (en) | 2017-11-14 | 2020-05-26 | International Business Machines Corporation | Protecting in-memory configuration state registers |
US10592164B2 (en) | 2017-11-14 | 2020-03-17 | International Business Machines Corporation | Portions of configuration state registers in-memory |
US10642757B2 (en) | 2017-11-14 | 2020-05-05 | International Business Machines Corporation | Single call to perform pin and unpin operations |
US10558366B2 (en) | 2017-11-14 | 2020-02-11 | International Business Machines Corporation | Automatic pinning of units of memory |
US10698686B2 (en) * | 2017-11-14 | 2020-06-30 | International Business Machines Corporation | Configurable architectural placement control |
US10552070B2 (en) * | 2017-11-14 | 2020-02-04 | International Business Machines Corporation | Separation of memory-based configuration state registers based on groups |
US10761751B2 (en) | 2017-11-14 | 2020-09-01 | International Business Machines Corporation | Configuration state registers grouped based on functional affinity |
US10761983B2 (en) * | 2017-11-14 | 2020-09-01 | International Business Machines Corporation | Memory based configuration state registers |
US10635602B2 (en) * | 2017-11-14 | 2020-04-28 | International Business Machines Corporation | Address translation prior to receiving a storage reference using the address to be translated |
US10496437B2 (en) | 2017-11-14 | 2019-12-03 | International Business Machines Corporation | Context switch by changing memory pointers |
US10613990B2 (en) * | 2017-12-05 | 2020-04-07 | Red Hat, Inc. | Host address space identifier for non-uniform memory access locality in virtual machines |
US12117940B2 (en) | 2017-12-05 | 2024-10-15 | Red Hat, Inc. | Host address space identifier for non-uniform memory access locality in virtual machines |
US10831679B2 (en) * | 2018-03-23 | 2020-11-10 | Intel Corporation | Systems, methods, and apparatuses for defending against cross-privilege linear probes |
US10997083B2 (en) * | 2018-09-04 | 2021-05-04 | Arm Limited | Parallel page table entry access when performing address translations |
US11954026B1 (en) * | 2018-09-18 | 2024-04-09 | Advanced Micro Devices, Inc. | Paging hierarchies for extended page tables and extended page attributes |
US11243891B2 (en) * | 2018-09-25 | 2022-02-08 | Ati Technologies Ulc | External memory based translation lookaside buffer |
US11010241B2 (en) * | 2019-01-09 | 2021-05-18 | Arm Limited | Translation protection in a data processing apparatus |
US11669335B2 (en) * | 2019-03-28 | 2023-06-06 | Intel Corporation | Secure arbitration mode to build and operate within trust domain extensions |
US11544092B2 (en) * | 2019-08-15 | 2023-01-03 | Raytheon Company | Model specific register (MSR) instrumentation |
US11334341B2 (en) | 2020-04-02 | 2022-05-17 | Vmware, Inc. | Desired state model for managing lifecycle of virtualization software |
US11269609B2 (en) * | 2020-04-02 | 2022-03-08 | Vmware, Inc. | Desired state model for managing lifecycle of virtualization software |
KR20210141156A (ko) * | 2020-05-15 | 2021-11-23 | 삼성전자주식회사 | 페이지 장애에 기초하여 메모리 고장을 예견하고, 예견되는 메모리 고장을 관리하는 시스템의 운영 체계 핸들링 |
US20220100425A1 (en) * | 2020-09-29 | 2022-03-31 | Samsung Electronics Co., Ltd. | Storage device, operating method of storage device, and operating method of computing device including storage device |
US11734044B2 (en) * | 2020-12-31 | 2023-08-22 | Nutanix, Inc. | Configuring virtualization system images for a computing cluster |
US11520525B2 (en) * | 2021-05-07 | 2022-12-06 | Micron Technology, Inc. | Integrated pivot table in a logical-to-physical mapping having entries and subsets associated via a flag |
CN115033339B (zh) * | 2022-05-09 | 2024-08-20 | 阿里巴巴(中国)有限公司 | 地址映射方法、装置、设备和存储介质 |
US12050512B2 (en) * | 2022-08-02 | 2024-07-30 | Nxp B.V. | Dynamic configuration of reaction policies in virtualized fault management system |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050080934A1 (en) * | 2003-09-30 | 2005-04-14 | Cota-Robles Erik C. | Invalidating translation lookaside buffer entries in a virtual machine (VM) system |
US8645665B1 (en) * | 2012-12-14 | 2014-02-04 | Intel Corporation | Virtualizing physical memory in a virtual machine system utilizing multilevel translation table base registers to map guest virtual addresses to guest physical addresses then to host physical addresses |
US8307191B1 (en) * | 2008-05-09 | 2012-11-06 | Vmware, Inc. | Page fault handling in a virtualized computer system |
US20140108701A1 (en) * | 2010-07-16 | 2014-04-17 | Memory Technologies Llc | Memory protection unit in a virtual processing environment |
US9355032B2 (en) * | 2012-10-08 | 2016-05-31 | International Business Machines Corporation | Supporting multiple types of guests by a hypervisor |
-
2016
- 2016-09-08 US US15/259,411 patent/US20180067866A1/en not_active Abandoned
-
2017
- 2017-08-09 EP EP17849279.9A patent/EP3510488A1/en not_active Withdrawn
- 2017-08-09 WO PCT/US2017/046158 patent/WO2018048564A1/en unknown
- 2017-08-09 CN CN201780055264.9A patent/CN109690484A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021104502A1 (zh) * | 2019-11-28 | 2021-06-03 | 华为技术有限公司 | 一种加速硬件页表遍历的方法及装置 |
CN113094153A (zh) * | 2021-06-09 | 2021-07-09 | 北京泽塔云科技股份有限公司 | 一种用于提升虚拟化性能的系统及物理机 |
Also Published As
Publication number | Publication date |
---|---|
US20180067866A1 (en) | 2018-03-08 |
EP3510488A1 (en) | 2019-07-17 |
WO2018048564A1 (en) | 2018-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109690484A (zh) | 在虚拟机进入时转换 | |
US9244854B2 (en) | Transparent code patching including updating of address translation structures | |
CN104954356B (zh) | 保护共享的互连以用于虚拟机 | |
CN105320611B (zh) | 用于细粒存储器保护的方法和设备 | |
US9720662B2 (en) | Selectively controlling use of extended mode features | |
US9489229B2 (en) | Transparent dynamic code optimization | |
US9785352B2 (en) | Transparent code patching | |
US9870210B2 (en) | Partition mobility for partitions with extended code | |
US11055232B2 (en) | Valid bits of a translation lookaside buffer (TLB) for checking multiple page sizes in one probe cycle and reconfigurable sub-TLBS | |
WO2018013267A1 (en) | Restricted address translation to protect against device-tlb vulnerabilities | |
KR20170043635A (ko) | 독립적인 사용자 및 관리자 도메인을 갖는 메모리 보호 키 아키텍처 | |
CN102906694B (zh) | 用于与适配器进行通信的加载指令的方法和系统 | |
US9569212B2 (en) | Instruction and logic for a memory ordering buffer | |
US20200202012A1 (en) | Write-back invalidate by key identifier | |
US11010168B2 (en) | Effectiveness and prioritization of prefetches | |
KR102296619B1 (ko) | 계산 처리를 위한 벡터 포맷용 명령어 및 로직 | |
CN110162380A (zh) | 用来防止软件侧通道的机制 | |
WO2020168536A1 (en) | Dynamical swithcing between ept and shadow page tables for runtime processor verification | |
CN111353156A (zh) | 可缩放多密钥总存储器加密引擎 | |
CN111353157A (zh) | 限制不受信任软件对加密密钥的使用 | |
WO2017058381A1 (en) | Method and apparatus for light-weight virtualization contexts |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190426 |