用于运行时处理器验证的ept和影子页表之间的动态切换

文档序号:90929 发布日期:2021-10-08 浏览:50次 >En<

阅读说明:本技术 用于运行时处理器验证的ept和影子页表之间的动态切换 (Dynamic switching between EPT and shadow page tables for runtime processor validation ) 是由 董传霄 董耀祖 Z·王 Z·吕 于 2019-02-22 设计创作,主要内容包括:公开的实现描述了一种系统和方法,所述系统和方法用于在处理装置上执行虚拟机,接收访问由虚拟机的地址空间中的客户虚拟存储器地址(GVA)标识的存储器页的请求,使用包括将GVA映射到客户物理存储器地址(GPA)的客户页表(GPT)条目的GPT将GVA转换为GPA,将GPA转换为存储器页的主机物理地址(HPA),在翻译后备缓冲器(TLB)中存储将GVA映射到HPA的TLB条目,修改GPT条目以指定该存储器页为被访问,检测应用修改GPT条目的尝试,响应于修改GPT条目的尝试生成页错误,并且响应于页错误转储清除TLB条目。(The disclosed implementations describe a system and method for executing a virtual machine on a processing device, receiving a request to access a memory page identified by a guest virtual memory address (GVA) in an address space of the virtual machine, translating the GVA to a GPA using a GPT that includes Guest Page Table (GPT) entries that map the GVA to guest physical memory addresses (GPA), translating the GPA to a Host Physical Address (HPA) of the memory page, storing TLB entries that map the GVA to HPAs in a Translation Lookaside Buffer (TLB), modifying the GPT entries to specify the memory page as accessed, detecting an attempt by an application to modify the GPT entries, generating a page fault in response to the attempt to modify the GPT entries, and flushing the TLB entries in response to the page fault.)

具体实施方式

本公开的方面涉及通过重放协处理器(RCP)能够实现主处理器及其执行状态的周期性验证。处理器检查模块(PCM)可对由主处理器用于执行指令(诸如虚拟机(VM)的软件堆栈和/或客户操作系统(GOS))的存储器和主处理器(例如,它的寄存器)的架构上可见的状态执行周期性采样,并在RCP上重放这些指令,以便将主处理器的所得执行状态与RCP的执行状态进行比较。为了加速和优化重放过程,主处理器可在主存储器访问模式(它使用客户页表和扩展页表)与重放存储器访问模式(它使用影子页表)之间来回切换,如本文中下面更详细地解释。

虚拟计算环境为各种装置提供计算资源和数据存储资源。远程计算和数据存储使保护数据不被未经授权的人员和恶意软件访问变得尤为重要。在一些情况下,未经授权的访问可通过硬件木马(诸如对处理器电路的物理修改)或传送由处理器执行的数据和指令(例如,通过无线电发射或经由网络)的硬件扫描装置获得。硬件木马的存在可通过物理检查、校验和测试、对电路的电磁活动进行分析等来检测。在涉及大量处理装置的情况下,此类测试可能难以执行。

本公开中描述的各种实现致力于解决对保护计算系统(例如,虚拟化服务器)的处理器免受硬件木马攻击的需要。公开的实现还可用于确立:计算系统的处理器表现得像所记载地那样,并且在处理器设计、制造或运行时执行期间没有出现无意的错误。在一些实现中,协处理器可用于验证主处理器的执行状态。受硬件木马影响的主处理器可能不能够以与未受木马干扰的处理器相同的方式来执行指令。例如,硬件木马可能有意地试图修改主处理器的执行状态:在一些情况下,木马可能会阻止主处理器执行一些指令,而在其它情况下,木马可能会试图引导主处理器执行额外指令。在这两种情况下,与健康的(无木马和/或无错误的)处理器相比,主处理器(已经经过一段时间后)可能会以寄存器、高速缓存和翻译后备缓冲器(TLB)的不同内容结束。同样地,受木马影响的主处理器可能会导致出现与健康处理器所导致的不同的存储器状态。此外,即使目的只是“窥探”主处理器而不主动修改其操作的木马,也可能不能够在所有情况下都做到这一点。例如,到主处理器的小但仍然始终存在的物理(例如,电)耦合(观察其操作所必需的)可能会偶尔中断指令执行(例如,门运算),并且导致主处理器的不同执行状态和/或存储器状态。

在一些实现中,可将(与主处理器)相同的RCP用于逐个指令地比较主处理器的执行状态。但是,如果主处理器是最先进的(state-of-the art)装置,那么这可能会导致高昂的验证成本。但是,即使在成本不是问题的情况下,如果两个处理器是在相同生产线上由相同制造工艺生产的,那么相同的协处理器也可能会遭受相同的木马干扰。如果将较便宜的RCP用于只验证由主处理器执行的指令序列的某个子集,那么可实现避免此类问题。RCP可以是“可信的”处理器,其生产可能被仔细监测以确保其安全性。RCP可以是非-X86架构处理器。在一些实现中,可能会公布RCP的详细架构,以证明它是“可信的”处理器。作为示例,对于由主处理器执行的虚拟化服务器所支持的某个虚拟机,RCP可只重放与由主物理处理器启用的虚拟处理器相关联的指令。RCP(即使比主处理器慢)可在有限的时间内但是重复地对虚拟处理器的执行状态和存储器进行采样。作为说明,可每1秒在一秒的0.1秒内进行采样。即,在0.1秒的验证时间间隔开始时,可复制虚拟处理器的处理器状态(例如,它的执行上下文),以便在RCP上随后执行复制的处理器状态。处理器状态可包括存储器、处理器(例如,它的寄存器)的架构上可见的状态以及与虚拟处理器相关联的虚拟机的输入-输出(I/O)状态。在0.1秒的验证时间间隔结束时,可复制并存储虚拟处理器的新的处理器状态,以便在RCP完成重放执行时相对于RCP的处理器状态进行最终验证。随后,可开始RCP的重放执行。在一些实现中,在RCP具有与主处理器不同的架构(例如,主处理器可以是X86处理器,而RCP可以是非-X86处理器)的情况下,可能会有在指令模拟器上运行的额外的固件,以确保RCP可执行从主处理器捕获的指令。固件可监测验证时间间隔是否已经完成。一旦它完成,固件便可获取初始处理器状态、存储器状态和输入-输出(I/O)状态,这些状态是在验证时间间隔开始时捕获的,并且它们创建了虚拟处理器(例如,虚拟X86处理器),该虚拟处理器可包括虚拟MMU、虚拟TLB、以及供在重放处理中使用的虚拟高速缓存。在重放处理期间,在验证时间期间捕获的指令可在这个RCP虚拟处理器上一个接一个地执行。在一些情况下,RCP可能会花费比0.1秒显著更长的时间来重放主处理器(或它的虚拟处理器之一)的处理器状态,例如,它可能会花费将近一整秒的时间。在一些实现中,在验证时间间隔结束之前,RCP的执行可能开始与虚拟处理器的执行并发地运行。一旦RCP已经完成重放执行,便可将重放执行结束时的RCP的处理器状态与在验证时间间隔结束时的主处理器的经修改的存储器和处理器状态进行比较。如果硬件木马已经干扰了主处理器的执行,那么这样的比较可检测到木马的存在。即使在0.1秒的验证时间间隔期间木马已经静默,还可在新的1秒时间周期开始时重复重放验证。因此,在多次这样的重放验证之后,RCP可最终检测到木马的可能存在,并标记主处理器以用于更仔细的检查(例如,通过上文所引用的常规方法之一)。

此类周期性验证的一个重要障碍可能是,并非主处理器的完整状态都可用于复制。在一些实现中,主处理器TLB的内容可能按制造商的策略和/或设计是架构上不可见的。因为TLB优化了存储器地址转换,所以不能够复制TLB可能会导致主处理器执行和RCP重放的不同的存储器状态,如由图1所示。

图1示意性地示出主处理器(左)和重放协处理器(右)的执行状态的差异,该差异是由于它们的翻译后备缓冲器的内容差异造成的。为了启用虚拟存储器实现,存储器可存储客户页表(GPT)130和扩展页表(EPT)132,以将虚拟存储器地址转换为物理存储器地址。例如,当执行存储器访问事务时,应用(例如,GOS或在其中执行的软件程序)可引用客户虚拟地址(GVA)。作为响应,主处理器的地址转换电路110可在客户页表130(1)中执行页行走(page walk)(由左面中的虚线描绘),以标识与引用的GVA相关联的客户物理地址(GPA)。为了标识确定的GPA的主机物理存储器地址(HPA),地址转换电路110可在EPT 132(1)中执行另一次页行走。

在一些实现中,客户物理地址(GPA)可能被分解成一系列偏移,每个偏移在GPT条目的层级的表结构内进行搜索。在该示例中,GPT 130(1)包括四级条目层级表,包括页映射4级条目(PML4E)、页目录指针表条目(PDPE)、页目录条目(PDE)和页表条目(PTE)。(在其它实现中,在GPT内可存在不同数量的层级等级,并且因此,公开的实现不受GPT的特定实现的限制。)在GPT层级的某个等级上的每次搜索的结果都可添加到下一个表的偏移,以定位GPT层级中的下一级表的下一个结果。类似的层级结构(未在图1中明确示出)可在EPT 132(1)中实现。在GPT 130和EPT 132中的页行走的结果可能是用于在物理存储器中定位4 Kb页(例如)的页偏移,它是HPA。当处理器执行页行走以获得此类GVA→HPA转换时,它可在GPT条目中为GVA设置“被访问”位A=1,以指定由GVA标识的物理存储器地址为被访问。GOS可监测它的各种地址的A-位的状态以记录(keep track of)在虚拟机中操作的软件有多频繁地访问不同的存储器页。GOS可周期性地转储清除A-位(例如,给它指派值A=0),并观察将多快速地再次设置A位。

主处理器的TLB 120可存储多个最近的GVA→HPA存储器转换,以在虚拟机上执行的软件的GOS再次引用同一个GVA的情况下加速随后的存储器事务。例如,如左面上的实线所示,如果对与GVA相关联的存储器页做出新的请求,那么地址转换电路110将首先在TLB120中查找最近的GVA→HPA转换。如果该转换没有存储在TLB 120中(“TLB未命中(miss)”),那么处理器将行走GPT 130(1)和ETP 132(1)以获得HPA。但是,如果在TLB 120中找到了该转换(“TLB命中”),那么处理器将直接从TLB 120中重新获得(recover)GVA→HPA转换,并避免再次行走页表。

因此,可能会出现以下情况,其中:

(1)对GVA做出第一次请求;

(2)处理器对GPT和EPT进行行走,以获得GVA→HPA转换;

(3)处理器在GPT中设置A-位:A=1;

(4)处理器将GVA→HPA转换存储在TLB中;

(5)GOS重置(清除)GPT中的A-位:A=0;

(6)对GVA做出第二次请求;

(7)处理器从TLB中重新获得对应的HPA,而不行走页表,使得A-位保持清除:A=0。

此类情况可能会潜在地导致主处理器和RCP的执行状态之间的不一致,并且甚至对于完全健康的主处理器也导致木马干扰的错误肯定指示。例如,如果验证时间间隔的开始落在步骤(5)之后,使得从GPT 130(1)中清除A-位,而有效的转换则存储在TLB 120中,那么可能会发生这种情况。当PCM产生GPT 130(1)的GPT副本130(2)(以及EPT副本132(2))并使GPT副本130(2)对RCP可用时,对应GPT条目中的A位被清除,A=0。由于处理器的制造商可能不会公开地公开TLB 120行为模拟,所以TLB 120的内容在架构上可能是不可见的。因此,在验证时间周期开始时可能没有复制TLB 120的内容,并且RCP TLB 122可能没有严格模仿TLB 120的准确行为。在此类情况下,RCP处理器可能不得不用空的RCP TLB 122或者至少用内容与TLB 120的内容不同的RCP TLB 122开始验证。因此,当主处理器和RCP处理器要执行访问与相同GVA相关联的存储器页的指令时,主处理器的地址转换电路110可从它的TLB120中重新获得GVA→HPA转换。另一方面,RCP的地址转换电路112可能在RCP TLB 122中没有找到该转换,并且因此,将不得不执行页行走,如由图1的右面中的实线所示。因此,(主处理器和RCP的)两个执行上下文的存储器状态将不同,因为A位将在GPT 130(2)的RCP副本中被设置,而在被主处理器使用的GPT 130(1)中保持清除。如果软件在验证时间间隔结束之前没有再次清除A位,那么A位的这种差异可能会导致主处理器可能正在经历外部干扰的错误肯定确定。

这个问题的一种简单解决方案可以是,确保每当GOS对于它的GPT条目之一清除A位时,GOS转储清除TLB 120。但是在虚拟化环境中,GOS可能通常位于虚拟化服务器的可信计算基础之外,并且缺乏发出指令以清除或使TLB 120失效的内核级授权。此外,由于GOS可能属于在商业市场上可用的多个操作系统中的任何操作系统,所以很难或几乎不可能修改所有此类操作系统以确保适当的TLB失效。此外,从安全性角度来看,以准予不可信的商业软件访问处理器为代价来确保针对硬件木马的安全可能不是一种可行的解决方案。

一种不同的方法可能是利用影子页表(SPT)。与图1中所示的转换不同,影子页表可存储直接转换GVA→HPA,其中GVA→GPA转换存储在GPT 130中,并且GPA→HPA转换存储在EPT 132中。管理程序/虚拟机监测器(VMM)可用直接GVA→HPA转换填充SPT。SPT可用于对GPT进行写保护。在一些实现中,GPT存储器页可存储GPT或GPT的某个部分。GPT存储器页可以是物理页。GPT存储器页可被指定为受写保护。例如,可在GVA→HPA存储器转换中设置标识GPT存储器页的受保护位。当GOS或在VM内运行的应用试图修改存储在GPT存储器页中的GPT条目时,VM可执行访问和修改GPT存储器页的指令。因为在一些实现中,VM可能只能通过它的GVA地址来引用GPT存储器页,所以处理器(或它的MMU)可能必须行走SPT以确定GPT存储器页的HPA。MMU可检测到GPT存储器页受写保护(例如,通过检测到设置了写保护位),并生成页错误。页错误可触发VM-退出。VM-退出可以是硬件事件(例如,异常、中断或错误),它由无效或被禁止的操作触发,并且导致执行控制从活动VM转移到VMM。一旦VM-退出,VMM便接管主处理器(或指派给VM的虚拟处理器),并且可使用由GOS对GPT所做(或试图做)的改变来重新映射SPT,使得GPT中的GVA与SPT中的GVA一致。可信的VMM还可转储清除TLB 120,使得GPT条目的A=0状态始终与TLB 120中对应转换的缺乏相关。但是,与图1的启用EPT的存储器访问模式相比,此类启用SPT的存储器访问模式可能具有显著的缺点。因为对于每个VM,VMM将必须将GVA直接映射到HPA并维持像每个VM中的进程那样多的SPT(与维持支持一个VM中的多个进程的一个EPT相反),所以SPT-模式明显比EPT-模式更繁琐且效率更低。由于需要更新SPT以反映对GPT改变所做的改变,所以SPT-模式的效率甚至会进一步降低。

如下所述,在一些实现中,在存储器访问的EPT-模式和SPT-模式之间动态切换可在EPT模式的快速执行特性与在SPT模式中启用的A-位/TLB同步之间提供合适的折衷。本公开的方面描述了在一个实现中PCM或VMM可如何在验证时间间隔开始并对主处理器的执行状态进行采样之前使主处理器(或由主处理器启用的虚拟处理器)从EPT-模式过渡到SPT-模式。在验证时间间隔完成之后,PCM或VMM可使主处理器(或虚拟处理器)过渡回到EPT-模式,以用于更快速的后续执行。因此,在一些实现中,主处理器可能只在它的运行时的一小部分期间(例如,每1秒的0.1秒内)明显变慢。

图2A描绘了根据本公开的一个或多个方面的能够实现扩展页表和影子页表之间的动态运行时过渡的示例处理系统200的高级组件图。虚拟化服务器210可支持多个客户端装置202(为了说明,示出两个装置202(1)和202(2))。处理系统200可进一步包括用于将客户端装置202连接到虚拟化服务器210的网络接口204。网络接口可以是局域网接口、无线局域网接口、因特网接口等。虚拟化服务器210可包括但不限于处理器220、存储器装置230和I/O控制器240。虚拟化服务器210可执行管理程序/VMM 250,以支持一个或多个虚拟机(VM)251。(一个或多个)VM 251可具有支持由客户端装置202的用户可访问的一个或多个软件程序254(例如,软件应用)的(一个或多个)GOS 252。在各种实现中,处理器220可包括一个或多个处理器核222、一个或多个寄存器224(例如,硬件寄存器)、TLB 120、高速缓存226、存储器管理单元(MMU)228。处理器220的每个处理器核222可支持与逻辑处理器对应的一个或多个硬件线程。逻辑处理器中的一些可支持指派给各种VM 251的虚拟处理器。存储器装置230可包括动态随机存取存储器(DRAM)、同步DRAM(SDRAM)、静态存储器(诸如静态随机存取存储器(SRAM))、闪速存储器、数据存储装置、或其它类型的存储器装置。为了简短起见,此后存储器装置230将被称为存储器230。

每个GOS可支持客户端装置202,它可以是远程桌上型计算机、平板、智能电话、另一个服务器、瘦/精简客户端等。VMM 250可利用虚拟化服务器210的硬件能力。(一个或多个)GOS 252可正在与VMM 250通信以访问存储器230和处理器220。存储器230可包含虚拟机控制结构(VMCS)238,以促进处理器220上的多个VM 251的执行状态。在一些实现中,可能有多个VMCS 238,例如每个VM 251(1)和VM 251(2)一个VMCS 238。随着不同虚拟机之间的处理器220的执行上下文的改变,当前VM的VMCS可保存并在稍后复原(restore)VM的虚拟处理器的执行状态。存储器230可进一步存储GPT 130、EPT 132和SPT 236。可为每个VM 251存储单独的GPT和单独的SPT。在一些实现中,GPT 130可由对应的GOS 152管理,而EPT 132和SPT236可由VMM 250管理。虚拟化服务器210可实现存储器访问的EPT-模式和SPT-模式之间的动态切换。例如,在第一时间实例,VMM 250可发出指令来重新配置MMU 228以通过在SPT236中执行页行走来执行来自VM 251的存储器请求。在第二时间实例,VMM 250可发出指令以使MMU迁移回到EPT-模式并经由GPT和SPT中的页行走管理存储器事务。

图2B描绘了根据本公开的一个或多个方面的具有主处理器220和重放协处理器RCP 260的能够实现扩展页表和影子页表之间的动态运行时过渡的示例处理系统201的高级组件图。处理系统201可包括支持客户端装置(未明确示出)的虚拟化服务器212。虚拟化服务器212可具有图2A中所示的虚拟化服务器210的组件中的一些或所有组件。另外,虚拟化服务器212可包括RCP 260、处理器检查模块270和硬件RCP共存接口280。RCP 260可包括一个或多个处理器核(RCP核)262、一个或多个RCP寄存器264(例如,硬件寄存器)、RCP TLB122、RCP高速缓存266和RCP存储器管理单元(RCP MMU)268。在一些实现中,RCP 260可利用专用装置(RCP存储器)275。在其它实现中,RCP 260可使用与(主)处理器220共享的存储器230。硬件RCP共存接口280可促进对处理器、存储器和主处理器的I/O状态的周期性采样,并且可包括额外的存储器和I/O跟踪硬件(未示出)。

PCM 270可通过RCP 260实现处理器220的周期性验证。在一些实现中,PCM 270可发出验证指令以使处理器220从EPT-模式过渡到SPT-模式,复制处理器220(或处理器220所支持的虚拟处理器之一)的处理器状态(例如,它的执行上下文),转储清除TLB 120,创建SPT 236,从SPT-模式过渡回到EPT-模式,使SPT表无效,将验证时间间隔结束时的处理器220的处理器状态与重放之后的RCP 260的所得处理器状态进行比较,和/或发出任何其它指令以促进对处理器220的周期性验证,这取决于特定实现。在一些实现中,由PCM 270发出的验证指令可由处理器220执行,而在其它实现中,验证指令可由RCP 260执行。在其它实现中,验证指令中的一些(例如,创建SPT 236)可由处理器220执行,而一些其它指令(例如,比较两个处理器的执行状态)可由RCP 260实行。

在一些实现中,PCM 270可作为VMM 250(诸如Linux KVM)内的软件模块来实现。在其它实现中,PCM 270可在VMM 250之外是软件实现的。在一些实现中,PCM的一些功能可以是硬件实现的。虚拟化服务器212可进一步包含硬件RCP共存接口280,以促进对寄存器224、存储器230的状态和/或I/O控制器240的状态的采样。

图3-6描绘了可在周期性处理器验证的不同实现中使用的示例方法300-600的流程图。方法300-600的各种实现和修改可用于处理器220的完整性的周期性验证。方法300-600可由可包括硬件(例如,电路、专用逻辑和/或可编程逻辑)、软件(例如,在计算机系统上可执行以执行硬件模拟的指令)或其组合的计算机系统来执行。方法300-600和/或它的功能、例程、子例程或操作中的每个可由执行该方法的计算机系统的一个或多个物理处理器执行。方法300-600中的每个方法的两个或更多个功能、例程、子例程或操作可并行执行或按可与上文描述的顺序不同的顺序执行。在某些实现中,方法300-600可由单个处理线程执行。备选地,方法300-600可由两个或更多个处理线程执行,每个线程执行该方法的一个或多个单独的功能、例程、子例程或操作。在一说明性示例中,实现方法300-600的处理线程可同步(例如,使用信号量(semaphore)、临界区(critical section)和/或其它线程同步机制)。备选地,实现方法300-600的处理线程可相对于彼此异步地执行。在一个示例中,如由图3所示,方法300-600可由本文中在下文描述并且由图7-13示出的处理系统来执行。

图3描绘了示例方法300的流程图,该方法在修改与客户虚拟存储器地址对应的客户页表条目时转储清除与客户虚拟存储器地址的转换对应的TLB条目。方法300可由运行VM的处理系统执行。处理系统(例如,系统200或系统201)可在例如存储器230中存储包括将GVA映射到GPA的GPT条目的GPT 130。处理系统可能正在执行可启动GOS 252的VMM 250。GPT130可由GOS 252维持,以促进在GOS 252上运行的用户软件254的存储器事务。GOS 252可以是Windows操作系统、Red Hat Linux操作系统、CentOS或任何其它操作系统。GOS 252或软件254有时可能会通过例如清除GPT条目中的A位来修改GPT 130以记录软件254的存储器使用情况。在一些实现中,处理系统可将GPT 130指定为受写保护。在一些实现中,出于处理器验证的目的,可由VMM 250或由PCM 270执行该指定。

在框310,处理装置(诸如处理器220)可接收访问由GVA标识的存储器页的请求。响应于此类请求,在框320,处理装置可使用获得从GVA到GPA的转换的GPT将GVA转换为HPA。在一些实现中,这可通过执行页行走来完成。在一些实现中,页行走可包括GPT 130中的第一次行走以获得GVA→GPA转换以及EPT 132中的第二次行走以获得GPA→HPA转换。一确定HPA,处理器220(或处理器220所支持的虚拟处理器)便可从存储器230加载对应的存储器页。

在框330,在一些实现中,处理装置可将GPA→HPA转换条目存储在TLB 120中。在框340,处理装置可将与GVA对应的GPT条目指定为被访问。在一些实现中,为了将A位指定为被访问,处理装置可在GPT条目中设置A位(A=1)。在各种实现中,框320、330和340可按各种顺序执行。在框350,方法300可继续处理装置检测与GVA对应的GPT条目的修改。在一些实现中,GPT条目的修改可能由GOS 252(或在GOS 252上运行的软件254)完成。在一些实现中,GPT条目的修改可包括清除A-位(A=0)。

在框360,可响应于GPT条目的修改而生成页错误。例如,当GOS 252改变GPT 130(例如,通过改变与GVA对应的GPT条目)时,VMM 250可检测到设置了指示GPT 130受写保护的位。在框370,响应于页错误,处理装置可转储清除转换条目GVA→HPA。在一些实现中,可通过利用SPT 236来促进检测GPT条目的修改、生成页错误和转储清除转换条目,如上文所解释。SPT 236可由VMM 250(和/或PCM 270)创建(或填充),以包含多个直接GVA→HPA转换。在一些实现中,SPT 236可由在GPT 130和EPT 132中所包含的数据来填充。

在一些实现中,当生成页错误时,可能会发生VM-退出,并且VMM 250可接管处理器220(或虚拟处理器)。然后,VMM 250可在框370利用由GOS 252对GPT 130所做的(或试图做的)改变来重新映射SPT 236(和GPT 130),使得GPT中的GVA与SPT中的GVA一致。例如,VMM250可清除GPT条目和对应的SPT条目两者中的被访问位。MMU 228也可从TLB 120中转储清除存储器转换。在一些实现中,可只转储清除与修改后的(一个或多个)GPT条目对应的(一个或多个)事务。在其它实现中,可转储清除TLB 120的完整内容。

因此,在根据描述的实施例之一转储清除TLB 120之后,GPT条目的A=0状态可能与TLB 120中对应转换的缺乏相关。因此,TLB 120可不具有将阻止处理器220行走页表并且可能导致在重放处理期间与RCP 260的执行状态不一致的转换条目。

图4描绘了根据本公开的一个或多个方面的从启用扩展页表的存储器访问模式过渡到启用影子页表的存储器访问模式的示例方法400的流程图。当VMM 250(和/或PCM 270)在时间实例中选择使处理器220(或处理器220所支持的虚拟处理器)从EPT-模式过渡到SPT-模式时,在框405,VMM 250可暂时停止由指派给VM(例如,VM 251(1))的虚拟处理器正在执行的进程。在框410,可转储清除TLB 225(例如,通过MMU 228)。在一些实现中,可只转储清除TLB 225中与虚拟处理器相关联的内容。在一些实现中,在从EPT-模式过渡到SPT-模式期间,可不执行TLB转储清除。而是,响应于GPT的修改,可在SPT-模式中的处理器执行期间执行TLB转储清除,如上文所解释。在框415,可存储处理器220的寄存器224中的一些寄存器224的内容。在一些实现中,要存储其内容的寄存器可包括CR0/CR3/CR4寄存器中的一些或所有寄存器。在一些实现中,要存储其内容的寄存器可以是虚拟处理器的寄存器。寄存器的内容可存储在存储器230或RCP存储器275上。

方法400可在框420继续,其中VMM 250(和/或PCM 270)可清除虚拟处理器的缓存的EPT相关的硬件寄存器。在框425,VMM 250可配置虚拟处理器的VMCS 238以禁用EPT 132。例如,VMM 250可使VMCS 238清除对虚拟处理器的CR3寄存器中存储存储器230上的EPT 132的位置的存储器地址的引用。在框430,VMM 250(和/或PCM 270)可配置虚拟处理器的VMCS238以启用SPT 236。例如,VMCS 238可在虚拟处理器的CR3寄存器中存储存储器230上的SPT236的位置。在框435,方法400可配置SPT位掩码。在框440,可更新异常位图。异常位图可包含其状态(例如,1或0)要指示应当如何处置异常(诸如错误、陷阱和中止)的位。特别地,异常位图可指示特定的页错误是否要导致VM-退出。

在框445,方法400可复原处理器220的CR0/CR4寄存器的(或虚拟处理器的对应虚拟寄存器的)内容。在一些实现中,从之前在框415存储的存储器230(或RCP存储器275)中加载寄存器的内容。在框450,VMM 250(和/或PCM 270)可重置MMU 228的上下文。在框455,VMM250可创建SPT 236。在一些实现中,可用GPT 130的完整内容以及与它们对应的EPT 132的条目来填充SPT 236。在其它实现中,可只将GPT 130的一部分和与它们对应的EPT 132的条目存储在SPT 236中。在一些实现中,SPT 236可通过下文公开的方法500来创建。在框460,可加载创建的SPT 236。例如,可将存储器230(或RCP存储器275)上的SPT 236的位置写到CR3寄存器(或虚拟CR3寄存器)中。方法400可在框465在SPT-模式中以恢复虚拟处理器上停止的进程的执行而结束。方法400中的各个框可按与图4中所指示的顺序不同的顺序执行。方法400的各个框可彼此并发地执行。

图5描绘了根据本公开的一个或多个方面的预先填充影子页表以优化从启用扩展页表的存储器访问模式到启用影子页表的存储器访问模式的过渡的示例方法500的流程图。在一些实现中,方法500可作为框455的一部分执行。方法500可在创建太大的SPT 236(这可能效率低下且花费很多时间)和对SPT填充不足(这可能会在随后的虚拟处理器执行期间导致太多的页错误,并且同样地,效率低下)之间寻求平衡。通过用在后续执行中最有可能使用的GVA来预先填充SPT 236,方法500可减少在由页错误触发的VM-退出期间失去的时间量,同时还使创建SPT 236所使用的时间量保持最少。

在框510,VMM 250(和/或PCM 270)可为虚拟处理器的当前上下文选择基本GVA。例如,经由MMU 228,VMM 250可从指令指针(例如,虚拟处理器的RIP/RSP/RDI/RSI/RBP/GS_BASE/GDTR_BASE/IDTR_BASE/LDTR_BASE/TR_BASE)检索有可能不久要被访问的GVA。选择的基本GVA及其转换GVA→HPA可作为SPT 236的“种子”被存储。在框520,方法500可选择与在框510所选择的基本GVA相邻的GVA。“相邻”可表示与基本GVA邻近的GVA地址或是与基本GVA最接近的有效GVA的GVA。很可能将在不久访问此类相邻GVA。这是因为,如果执行是按顺序的,那么虚拟处理器执行很可能到达后续的GVA,或者如果执行分支,那么虚拟处理器执行很可能做出短的跳转。也有可能,之前的地址属于相同的执行上下文。在一些实现中,预先提取(pre-fetch)相等数量的后续和先前的GVA。在其它实现中,这些数量可显著不同,例如,要预先提取的后续GVA的数量可能大于要预先提取的先前GVA的数量。在一些实现中,可选择与相邻GVA对应的特定量的存储器页(例如,16 MB),并将它们的转换存储在SPT 236中。如果在指令指针中有多个基本GVA,则可对每个基本GVA应用相同的过程。

在框530,方法500可继续确定由GOS 252和/或在它上面运行的软件254频繁访问的那些GVA。软件254中的一些可共享相同的GPT 130,并且因此,GPT条目中的一些可能比其它条目被更频繁地访问。例如,可更经常地访问GOS 252的内核模式代码。用此类“热访问(hot-access)”GVA预先填充SPT 236可显著减少在SPT模式中的后续处理器执行期间的页错误的数量。为了选择最频繁访问的GVA,VMM 250(和/或PCM 270)可从分析GVA访问的历史数据开始。在一些实现中,此类数据的收集可持续发生。在其它实现中,此类数据的收集可在从EPT-模式到SPT-模式的预期过渡之前的某个时间开始。在一些实现中,可在包括先前执行时期的一定数量(例如,100个最后执行时期)或任何其它数量的某个采样窗口收集历史数据。在该采样窗口期间,可确定GVA导致页错误时的示例数量。随后,可确定具有最高数量的页错误的GVA。在一些实现中,可选择固定数量N的最频繁访问的GVA。在一些实现中,可确定导致一定数量的页错误的所有GVA,使得在两个连续的EPT到SPT模式过渡之间数量N可不同。

在判定框535,可将数量N与最终选择用于预先填充SPT 236的那些热访问GVA的预确定数量M进行比较。如果数量N超过M,则在框540,方法500可继续另外对这N个GVA加权以确定每个GVA的热度H并选择具有最高热度值HM个GVA。例如,可确定,在第i个样本(例如,执行时期)期间,由GVA r标识的页触发的个页错误。可为第i个样本指派权重W i 。例如,可将最大权重指派给在时间上最接近的样本,而可将较小的权重指派给过去更远的样本。在一种可能的实现中,GVA r的热度可通过根据下式对完整采样窗口上的页错误的数量加权来确定:

其中,对采样窗口内的样本(例如,执行时期)取总和。然后,可选择顶部M个热访问GVA(即,具有最高热度M个GVA)以用于添加到SPT 236。在其中数量N没有超过M的那些实现中,方法500可跳过框540,并选择所有N个GVA以用于添加到SPT 236。

在框550,VMM 250(和/或PCM 270)可用与GVA对应的转换来填充SPT 236,这些GVA可包括但不限于在框510期间选择的基本GVA、在框520期间选择的与基本GVA相邻的GVA以及在框530-540期间选择的热访问GVA。根据方法500的启发式预先提取可确保,使在利用SPT 236的RCP验证阶段期间的页错误的数量最小化,并且不会太显著地减缓处理器220(或虚拟处理器)的执行。

下表示出了根据方法400-500的一些实现的预先提取的有效性。示出在有预先提取的情况下和在没有预先提取的情况下在SPT模式中的0.1秒后续执行期间由SPT 236捕获的指令的近似数。捕获的指令作为分支进行计数,其中分支是在GVA空间中没有跳转的指令的序列。

在GOS中运行的工作负荷 在没有预先提取的情况下 在有预先提取的情况下
空闲 ~10个分支 ~100个分支
Linux内核代码编译 ~20个分支 ~700个分支

示出的数据指示,与未采用方法400-500的预先提取启发时相比,在利用方法400-500的预先提取启发时,显著增加了捕获的指令的数量;这代表了公开的改进的概念的证明。

图6描绘了根据本公开的一个或多个方面的从启用影子页表的存储器访问模式过渡到启用扩展页表的存储器访问模式的示例方法600的流程图。当VMM 250(和/或PCM 270)在时间实例中选择使处理器220(或处理器220所支持的虚拟处理器)从SPT-模式过渡到EPT-模式时,在框605,VMM 250可暂时停止由指派给VM(例如,VM 251(1))的虚拟处理器正在执行的进程。在框610,可转储清除TLB 225(例如,通过MMU 228)。在一些实现中,可只转储清除TLB 225中与虚拟处理器相关联的内容。在框615,可存储处理器220的寄存器224中的一些寄存器224的内容。在一些实现中,要存储其内容的寄存器可包括CR0/CR3/CR4寄存器中的一些或所有寄存器。在一些实现中,要存储其内容的寄存器可以是虚拟处理器的寄存器。寄存器的内容可存储在存储器230或RCP存储器275上。

方法600可在框620继续,其中VMM 250(和/或PCM 270)可清除虚拟处理器的缓存的SPT相关的硬件寄存器。在框625,VMM 250可使SPT内容失效。在一些实现中,这可通过从处理器220的CR3寄存器中清除SPT 236的位置来完成。在框630,可释放为SPT模式分配的存储器页。在框635,方法600可继续配置虚拟处理器的VMCS 238以禁用SPT 236。例如,VMM250可使VMCS 238清除对虚拟处理器的CR3寄存器中存储存储器230上的SPT 236的位置的存储器地址的引用。在框640,VMM 250(和/或PCM 270)可配置虚拟处理器的VMCS 238以启用EPT 132。例如,VMCS 238可在虚拟处理器的CR3寄存器中存储存储器230上的EPT 132的位置。在框645,方法400可配置SPT位掩码。在框650,可更新异常位图。异常位图可包含其状态(例如,1或0)要指示应当如何处置异常(诸如错误、陷阱和中止)的位。特别地,异常位图可指示特定的页错误是否要导致VM-退出。

在框655,方法600可复原处理器220的CR0/CR4寄存器的(或虚拟处理器的对应虚拟寄存器的)内容。在一些实现中,寄存器的内容是从之前在框615存储的存储器230(或RCP存储器275)中加载的。在框660,VMM 250(和/或PCM 270)可重置MMU 228的上下文。在框665,VMM 250可加载EPT 132。在一些实现中,所加载的EPT可能是在EPT-模式中的前一次执行期间所使用的最近的EPT。可将存储器230(或RCP存储器275)上的EPT 132的位置写到CR3寄存器(或虚拟CR3寄存器)中。方法600可在框670在EPT-模式中以恢复在虚拟处理器上停止的进程的执行而结束。方法600中的各个框可按与在图4中所指示的顺序不同的顺序执行。方法600的各个框可彼此并发地执行。

图7A是示出根据本公开的至少一个实现的提供用于运行时处理器验证的扩展页表和影子页表之间的动态切换的处理装置的处理器监测性能的有序流水线和寄存器重命名级、无序发出/执行流水线的框图。图7B是示出根据本公开的至少一个实现的包括在处理器中的有序架构核和寄存器重命名逻辑、无序发出/执行逻辑的框图。图7A中的实线框示出有序流水线,而虚线框示出寄存器重命名、无序发出/执行流水线。类似地,图7B中的实线框示出有序架构逻辑,而虚线框示出寄存器重命名逻辑和无序发出/执行逻辑。

图7A是示出根据本公开的至少一个实现的提供用于运行时处理器验证的扩展页表和影子页表之间的动态切换的处理装置的处理器监测性能的有序流水线和寄存器重命名级、无序发出/执行流水线的框图。图7B是示出根据本公开的至少一个实现的包括在处理器中的有序架构核和寄存器重命名逻辑、无序发出/执行逻辑的框图。图7A中的实线框示出有序流水线,而虚线框示出寄存器重命名、无序发出/执行流水线。类似地,图7B中的实线框示出有序架构逻辑,而虚线框示出寄存器重命名逻辑和无序发出/执行逻辑。

在图7A中,处理器流水线700包括提取级702、长度解码级704、解码级706、分配级708、重命名级710、调度(又称为分派或发出)级712、寄存器读/存储器读级714、执行级716、写回/存储器写级718、异常处置级722和提交级724。在一些实现中,这些级以不同的顺序提供,并且不同的级可视为有序和无序。

在图7B中,箭头表示两个或更多个单元之间的耦合,并且箭头的方向指示那些单元之间的数据流的方向。图7B示出处理器核(核)790,它包括耦合到执行引擎单元750的前端单元730,并且两者都耦合到存储器单元770。

核790可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或备选核类型。作为又一种选项,核790可以是专用核,诸如例如网络或通信核、压缩引擎、图形核等。

前端单元730包括耦合到指令高速缓存单元734的分支预测单元732,指令高速缓存单元734耦合到指令翻译后备缓冲器(TLB)736,TLB 736耦合到指令提取单元738,指令提取单元738耦合到解码单元740。解码单元或解码器可对指令进行解码,并作为输出生成一个或多个微操作、微代码入口点、微指令、其它指令或其它控制信号,它们从原始指令解码,或以其它方式反映原始指令,或从原始指令导出。解码器可使用各种不同的机构来实现。合适机构的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元734进一步耦合到存储器单元770中的2级(L2)高速缓存单元776。解码单元740耦合到执行引擎单元750中的重命名/分配器单元752。

执行引擎单元750包括耦合到引退单元(retirement unit)754和一组一个或多个调度器单元756的重命名/分配器单元752。(一个或多个)调度器单元756代表任何数量的不同调度器,包括保留站、中央指令窗口等。(一个或多个)调度器单元756耦合到(一个或多个)物理寄存器堆单元758。物理寄存器堆单元758中的每个代表一个或多个物理寄存器堆,物理寄存器堆中不同的物理寄存器堆存储:一种或多种不同的数据类型,诸如标量整数、标量浮点、紧缩整数(packed integer)、紧缩浮点、向量整数、向量浮点等;状态(例如,作为要执行的下一个指令的地址的指令指针)等。(一个或多个)物理寄存器堆单元758与引退754重叠,以说明其中可实现寄存器重命名和无序执行的各种方式(例如,使用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器堆;使用(一个或多个)未来堆、(一个或多个)历史缓冲器和(一个或多个)引退寄存器堆;使用寄存器映射和寄存器池;等)。

一般来说,从处理器外部或从程序员的角度来看,架构寄存器是可见的。寄存器不限于任何已知的特定类型的电路。只要它们能存储和提供如本文中所描述的数据,那么各种不同类型的寄存器都是合适的。合适的寄存器包括但不限于专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。引退单元754和(一个或多个)物理寄存器堆单元758耦合到(一个或多个)执行集群760。(一个或多个)执行集群760包括一组一个或多个执行单元762和一组一个或多个存储器访问单元764。执行单元762可执行各种操作(例如,移位、加法、减法、乘法)并且对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行各种操作。

尽管一些实现可包括专门用于特定功能或功能集的多个执行单元,但是其它实现可包括全都执行所有功能的一个执行单元或多个执行单元。图中将(一个或多个)调度器单元756、(一个或多个)物理寄存器堆单元758和(一个或多个)执行集群760示为可能复数个,因为某些实现为某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,每个具有它们自己的调度器单元、(一个或多个)物理寄存器堆单元和/或执行集群-并且在单独的存储器访问流水线的情况下,实现其中该流水线的执行集群具有(一个或多个)存储器访问单元764的某些实现)。还应理解,在使用单独流水线的情况下,这些流水线中的一个或多个流水线可以是无序发出/执行,而其余流水线有序。

存储器访问单元764的集合耦合到存储器单元770,存储器单元770包括耦合到数据高速缓存单元774的数据TLB单元772,数据高速缓存单元774耦合到2级(L2)高速缓存单元776。在一个示例性实现中,存储器访问单元764可包括负载单元、存储地址单元和存储数据单元,单元中的每个都耦合到存储器单元770中的数据TLB单元772。L2高速缓存单元776耦合到一个或多个其它级的高速缓存,并且最终耦合到主存储器。

作为示例,示例性寄存器重命名、无序发出/执行核架构可如下实现图7A的流水线700:1)指令提取738分别执行提取级702和长度解码级704;2)解码单元740执行解码级706;3)重命名/分配器单元752执行分配级708和重命名级710;4)(一个或多个)调度器单元756执行调度级712;5)(一个或多个)物理寄存器堆单元758和存储器单元770执行寄存器读/存储器读级714;执行集群760执行执行级716;6)存储器单元770和(一个或多个)物理寄存器堆单元758执行写回/存储器写级718;7)在异常处置级722中可涉及各种单元;)引退单元754和(一个或多个)物理寄存器堆单元758执行提交级724。

核790可支持一个或多个指令集(例如,x86指令集(具有已经用新版本添加的一些扩展);加利福尼亚州桑尼维尔市MIPS技术公司(MIPS Technologies of Sunnyvale, CA)的MIPS指令集;加利福尼亚州桑尼维尔市ARM控股公司(ARM Holdings of Sunnyvale, CA)的ARM指令集(具有诸如NEON的额外扩展)。

应理解,核可支持多线程(执行两个或更多个并行组的操作或线程),并且可按照各种方式来这样做,所述各种方式包括时间切片多线程、同时多线程(其中单个物理核为是同时多线程的物理核的线程中的每个线程提供一个逻辑核)或其组合(例如,诸如英特尔®超线程(Intel® Hyperthreading)技术中的时间切片提取和解码以及此后的同时多线程)。

尽管在无序执行的上下文中描述了寄存器重命名,但是应理解,有序架构可使用寄存器重命名。尽管示出的处理器的实现还包括单独的指令和数据高速缓存单元734/774以及共享的L2高速缓存单元776,但是备选实现可对于指令和数据两者具有单个内部高速缓存,诸如例如1级(L1)内部高速缓存或多级内部高速缓存。在一些实现中,系统可包括内部高速缓存和位于核和/或处理器外部的外部高速缓存的组合。备选地,高速缓存中的所有高速缓存都可位于核和/或处理器的外部。

图8示出了处理装置800的微架构的框图,处理装置800包括提供用于运行时处理器验证的扩展页表和影子页表之间的动态切换的逻辑电路。在一些实现中,可实现指令以操作具有字节、字、双倍字、四倍字等的大小以及诸如单精度和双精度整数和浮点数据类型的数据类型的数据元素。在一个实现中,有序前端801是处理装置800的一部分,它提取要执行的指令,并准备好它们以稍后在处理装置流水线中使用。能够实现用于运行时处理器验证的扩展页表和影子页表之间的动态切换的实现可在处理装置800中实现。

前端801可包括若干个单元。在一个实现中,指令预提取器826从存储器中提取指令,并将它们馈送到指令解码器828,指令解码器828又对它们进行解码或解译。例如,在一个实现中,解码器将接收的指令解码成机器可执行的称为“微指令”或“微操作”(又称为微op或uop)的一个或多个操作。在其它实现中,解码器将指令解析成操作码以及对应的数据和控制字段,所述操作码以及对应的数据和控制字段由微架构使用来执行根据一个实现的操作。在一个实现中,跟踪高速缓存(trace cache)830取解码的uop,并将它们组装(assemble)成uop队列834中的程序有序序列或踪迹以用于执行。当跟踪高速缓存830遇到复杂指令时,微代码ROM 832提供完成操作所需的uop。

一些指令被转化成单个微-op,而其它指令需要若干个微-op来完成完整操作。在一个实现中,如果需要超过四个微-op来完成指令,那么解码器818访问微代码ROM 832以进行该指令。对于一个实现,可在指令解码器828处将指令解码为用于处理的少量微op。在另一个实现中,如果需要多个微-op来完成该操作,则可将指令存储在微代码ROM 832中。跟踪高速缓存830是指用于确定正确的微指令指针以便从微代码ROM 832读取微代码序列以根据一个实现完成一个或多个指令的入口点可编程逻辑阵列(PLA)。在微代码ROM 832完成对指令的微-op定序之后,机器的前端801恢复从跟踪高速缓存830提取微-op。

无序执行引擎803是准备执行指令的地方。无序执行逻辑具有多个缓冲器以对指令流进行平滑化和重新排序,从而在它们沿流水线传下去并获得调度以用于执行时优化性能。分配器逻辑分配每个uop为了执行所需的机器缓冲器和资源。分配器/寄存器重命名逻辑840将逻辑寄存器重命名到寄存器堆中的条目上。分配器840还在以下指令调度器之前为两个uop队列(一个队列用于存储器操作842,并且一个队列用于非存储器操作844)之一中的每个uop分配入口:存储器调度器846、快速调度器802、缓慢/一般浮点调度器804和简单浮点调度器806。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,它们存储微指令需要执行的整数和浮点数据操作数值。一个实现的处理装置800由以下若干个执行单元组成:地址生成单元(AGU)812、AGU 814、快速ALU 816、快速ALU 818、缓慢ALU 820、浮点ALU 822、浮点移动单元824。对于一个实现,浮点执行块812、814执行浮点、MMX、SIMD和SSE或其它操作。一个实现的浮点ALU 812包括执行除法、平方根和余数微操作的64位乘64位浮点除法器。对于本公开的实现,涉及浮点值的指令可用浮点硬件来处置。

在一个实现中,ALU操作转到高速ALU执行单元816、818。一个实现的快速ALU 816、818可以以半个时钟周期的有效时延执行快速操作。对于一个实现,最复杂的整数操作转到缓慢ALU 820,因为缓慢ALU 820包括用于长时延类型的操作的整数执行硬件,诸如乘法器、移位、标志逻辑和分支处理。存储器加载/存储操作由AGU 812、814执行。对于一个实现,在对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还包括用于处置存储器未命中的逻辑。如果数据负载在数据高速缓存中未命中,那么流水线中可能存在运行中(in flight)的相关操作,这些操作给调度器留下了暂时不正确的数据。重放机构跟踪并重新执行使用不正确数据的指令。只需重放相关操作,并且允许完成独立的操作。处理装置的一个实现的调度器和重放机构还被设计成捕获用于文本字符串比较操作的指令序列。根据一个实现,处理装置800还包括能够实现用于运行时处理器验证的扩展页表和影子页表之间的动态切换的逻辑。

术语“寄存器”可指用作标识操作数的指令的一部分的机载(on-board)处理装置存储位置。换句话说,寄存器可以是可从处理装置的外部(从程序员的角度来看)使用的那些寄存器。然而,一个实现的寄存器在含义上不应局限于特定类型的电路。而是,一个实现的寄存器能够存储和提供数据,并执行本文中描述的功能。本文中所描述的寄存器可由处理装置内的电路使用任何数量的不同技术来实现,诸如专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。在一个实现中,整数寄存器存储32位整数数据。一个实现的寄存器堆还包含用于紧缩数据的八个多媒体SIMD寄存器。

对于本文中的讨论,将寄存器理解为被设计成保存紧缩数据的数据寄存器,诸如在利用来自加利福尼亚州圣克拉拉的英特尔公司(Intel Corporation of Santa Clara,California)的MMX技术启用的微处理装置中的64位宽的MMXTM寄存器(在一些实例中也称为‘mm’寄存器)。以整数和浮点形式两者可用的这些MMX寄存器可用伴随SIMD和SSE指令的紧缩数据元素操作。类似地,也可使用与SSE2、SSE3、SSE4或更高(广义地称为“SSEx”)技术有关的128位宽的XMM寄存器来保存此类紧缩数据操作数。在一个实现中,在存储紧缩数据和整数数据时,寄存器不需要区分这两种数据类型。在一个实现中,整数和浮点被包含在相同寄存器堆中或者被包含在不同的寄存器堆中。此外,在一个实现中,浮点和整数数据可存储在不同的寄存器或相同的寄存器中。

能够实现用于运行时处理器验证的扩展页表和影子页表之间的动态切换的实现可在许多不同的系统类型中实现。现在参考图9,示出根据实现的多处理装置系统900的框图。如图9中所示,多处理装置系统900是点对点互连系统,并且包括经由点对点互连950耦合的第一处理装置970和第二处理装置980。如图9中所示,处理装置970和980中的每个处理装置可以是包括第一和第二处理装置核(未示出)的多核处理装置,但潜在地,在处理装置中可存在多得多的核。根据本公开的实现,处理装置各自可包括混合写模式逻辑。能够实现用于运行时处理器验证的扩展页表和影子页表之间的动态切换的实现可在处理装置970、处理装置980或两者中实现。

尽管用两个处理装置970、980示出,但是要理解,本公开的范围不限于此。在其它实现中,在给定的处理装置中可存在一个或多个额外的处理装置。

处理器970和980被示为分别包括集成式存储器控制器单元(IMC)972和982。处理装置970还包括作为它的总线控制器单元的一部分的点对点(P-P)接口976和978;类似地,第二处理装置980包括P-P接口986和988。处理装置970、980可使用P-P接口电路978、988经由点对点(P-P)接口950交换信息。如图9中所示,IMC 972和982将处理装置耦合到相应的存储器,即,存储器932和存储器934,它们可以是本地附连到相应的处理装置的主存储器的部分。

处理器970、980可各自使用点对点接口电路976、994、986、998经由单独的P-P接口952、954与芯片组990交换信息。芯片组990还可经由高性能图形接口992与高性能图形电路938交换信息。

共享高速缓存(未示出)可被包括在任一处理装置中或两个处理装置外部,但经由P-P互连与处理装置连接,使得如果处理装置被置于低功率模式中,则任一个或两个处理装置的本地高速缓存信息可被存储在共享高速缓存中。

芯片组990可经由接口996耦合到第一总线916。在一个实现中,第一总线916可以是外围组件互连(PCI)总线、或诸如PCI Express总线或另一个第三代I/O互连总线的总线,但本公开的范围不限于此。

如图9中所示,各种I/O装置914以及总线桥接器918可耦合到第一总线916,总线桥接器918将第一总线916耦合到第二总线920。在一个实现中,第二总线920可以是低引脚计数(LPC)总线。在一个实现中,各种装置可耦合到第二总线920,包括例如键盘和/或鼠标922、通信装置927和诸如盘驱动器或其它大容量存储装置的存储单元928,存储单元928可包括指令/代码和数据930。此外,音频I/O 924可耦合到第二总线920。注意,其它架构是可能的。例如,代替图9的点对点架构,系统可实现多点总线或其它此类架构。

现在参考图10,示出根据本公开的实现的第三系统1000的框图。图9和图10中的相似元件具有相似的附图标记,并且已经从图10中省略了图9的某些方面,以便避免模糊图10的其它方面。

图10示出处理器970和980。在一个实施例中,处理器970、980可实现混合核。处理器970、980可分别包括集成式存储器和I/O控制逻辑(“CL”)1072和1082,并且分别经由点对点(P-P)接口978和988之间的点对点互连950彼此通信。如图所示,处理器970、980各自通过相应的P-P接口976至994和986至998经由点对点互连952和954与芯片组990通信。对于至少一个实现,CL 1072、1082可包括如本文中所描述的IMC 972、982。另外,CL 1072、1082还可包括I/O控制逻辑。图10示出,存储器932、934耦合到CL 1072、1082,并且I/O装置1014也耦合到CL 1072、1082。传统(legacy)I/O装置1015经由接口996耦合到芯片组990。能够实现用于运行时处理器验证的扩展页表和影子页表之间的动态切换的实现可在处理装置970、处理装置980或两者中实现。

图11是示例片上系统(SoC)1100,它可包括应用处理器1110的核1112A……1112N中的一个或多个核。膝上型计算机、桌上型计算机、手持式PC、个人数字助理、工程工作站、服务器、网络装置、网络集线器、交换机、嵌入式处理装置、数字信号处理装置(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式装置和各种其它电子装置的本领域中已知的其它系统设计和配置也是合适的。一般来说,能够并入本文中所公开的处理装置和/或其它执行逻辑的大量系统或电子装置一般是合适的。

现在参考图11,示出根据本公开的实现的SoC 1100的框图。而且,虚线框是更高级的SoC上的特征。在图11中,(一个或多个)互连单元1102耦合到:包括一组一个或多个核1112A-N以及(一个或多个)共享高速缓存单元1106应用处理器1110,所述一个或多个核1112A-N分别包含一个或多个高速缓存单元1104A……1104N;系统代理单元1113;(一个或多个)总线控制器单元1116;(一个或多个)集成式存储器控制器单元1114;一组或一个或多个媒体处理装置1120,其可包括集成式图形逻辑1108、用于提供静态和/或视频相机功能性的图像处理装置1124、用于提供硬件音频加速的音频处理装置1126、和用于提供视频编码/解码加速的视频处理装置1128;静态随机存取存储器(SRAM)单元1130;直接存储器存取(DMA)单元1132;以及用于耦合到一个或多个外部显示器的显示单元1140。能够实现用于运行时处理器验证的扩展页表和影子页表之间的动态切换的实现可在SoC 1100中实现。

接着转到图12,描绘了根据本公开的实现的SoC设计的实现。作为说明性示例,SoC1200被包括在用户设备(UE)中。在一个实现中,UE是指由最终用户用于通信的任何装置,诸如手持电话、智能电话、平板计算机、超薄笔记本、具有宽带适配器的笔记本或任何其它类似的通信装置。UE可连接基站或节点,基站或节点在本质上可对应于GSM网络中的移动站(MS)。能够实现用于运行时处理器验证的扩展页表和影子页表之间的动态切换的实现可在SoC 1200中实现。

这里,SoC 1220包括2个核-1206和1207。与上文讨论类似,核1206和1207可符合指令集架构,诸如具有英特尔®架构核™(Architecture Core™)的处理装置、超微半导体公司(Advanced Micro Devices, Inc.)(AMD)处理装置、基于MIPS的处理装置、基于ARM的处理装置设计或其客户以及它们的许可方或采用者。核1206和1207耦合到高速缓存控制1208,高速缓存控制1208与总线接口单元1209和L2高速缓存1210相关联,以与系统1200的其它部分通信。互连1211包括片上互连,诸如IOSF、AMBA或上文讨论的其它互连,它们可实现描述的公开的一个或多个方面。

互连1211向其它组件提供通信信道,所述其它组件诸如用于与订户身份模块(SIM)卡通过接口连接的SIM 1230、用于保存引导代码以便由核1206和1207执行从而初始化并引导SoC 1200的引导ROM 1235、用于与外部存储器(例如,DRAM 1260)通过接口连接的SDRAM控制器1240、用于与非易失性存储器(例如,闪存1265)通过接口连接的闪速控制器1245、用于与外围设备通过接口连接的外围控制1250(例如,串行外围接口)、用于显示和接收输入(例如,启用触摸的输入)的视频编解码器1220和视频接口1225、用于执行图形相关的计算的GPU 1215等。这些接口中的任何接口可并入本文中描述的实现的方面。

另外,该系统示出了用于通信的外围设备,诸如蓝牙模块1270、3G调制解调器1275、GPS 1280和Wi-Fi 1285。注意,如上所述,UE包括用于通信的无线电。因此,这些外围通信模块可不全部包括在内。然而,在UE中,应当包括用于外部通信的某种形式的无线电。

图13示出了采用计算系统1300的示例形式的机器的图解表示,在计算系统1300中,可执行一组指令,以便使机器执行本文中所讨论的方法学中的任何一个或多个方法学。在备选实现中,机器可连接(例如,联网)到LAN、内联网、外联网或因特网中的其它机器。机器可在客户端-服务器网络环境中作为服务器或客户端装置操作,或者可在对等(或分布式)网络环境中作为对等机器操作。机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web器具、服务器、网络路由器、交换机或桥接器、或能够执行指定要由该机器采取的动作的一组指令(顺序的或以其它方式的)的任何机器。此外,尽管只示出单个机器,但是术语“机器”还应认为包括单独或共同执行一组(或多组)指令以执行本文中讨论的方法学中的任何一种或多种方法学的机器的任何合集。转化页和节的实现可在计算系统1300中实现。

计算系统1300包括处理装置1302、主存储器1304(例如,只读存储器(ROM)、闪速存储器、动态随机存取存储器(DRAM)(诸如同步DRAM(SDRAM)或DRAM(RDRAM)等)、静态存储器1306(例如,闪速存储器、静态随机存取存储器(SRAM)等)、和数据存储装置1318,它们经由总线1330彼此通信。

处理装置1302表示一个或多个通用处理装置,诸如微处理装置、中央处理单元等。更特别地,处理装置可以是复杂指令集计算(CISC)微处理装置、精简指令集计算机(RISC)微处理装置、超长指令字(VLIW)微处理装置、或实现其它指令集的处理装置、或实现指令集的组合的处理装置。处理装置1302也可以是一个或多个专用处理装置,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理装置(DSP)、网络处理装置等。在一个实现中,处理装置1302可包括一个或多个处理装置核。处理装置1302被配置成执行指令1326以便执行本文中所讨论的操作。在一个实现中,处理装置1302可以是图1的计算系统100的一部分。备选地,计算系统1300可包括如本文中所描述的其它组件。应理解,核可支持多线程(执行两个或更多个并行组的操作或线程),并且可采用各种方式这样做,所述各种方式包括时间切片多线程、同时多线程(其中单个物理核为是同时多线程的该物理核的线程中的每个线程提供逻辑核)或其组合(例如,诸如英特尔®超线程技术中的时间切片提取和解码以及此后的同时多线程)。

计算系统1300可进一步包括通信地耦合到网络1320的网络接口装置1308。计算系统1300还可包括视频显示单元1310(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入装置1312(例如,键盘)、光标控制装置1314(例如,鼠标)、信号生成装置1316(例如,扬声器)、或其它外围装置。此外,计算系统1300可包括图形处理单元1322、视频处理单元1328和音频处理单元1332。在另一个实现中,计算系统1300可包括芯片组(未示出),它是指设计成与处理装置1302一起工作的一组集成电路或芯片,并控制处理装置1302和外部装置之间的通信。例如,芯片组可以是将处理装置1302链接到超高速装置(诸如主存储器1304和图形控制器)以及将处理装置1302链接到外围设备的较低速外围总线(诸如USB、PCI和ISA总线)的主板上的一组芯片。

数据存储装置1318可包括计算机可读存储介质1324,在计算机可读存储介质1324上存储体现本文中描述的功能的方法学中的任何一种或多种方法学的指令1326。在由计算系统1300执行指令1326期间,指令1326也可完全或至少部分地作为指令1326驻留在主存储器1304内和/或作为处理逻辑驻留在处理装置1302内;主存储器1304和处理装置1302也构成计算机可读存储介质。

计算机可读存储介质1324也可用于存储利用处理装置1302的指令1326(诸如关于图1所描述)和/或包含调用以上应用的方法的软件库。尽管在示例实现中将计算机可读存储介质1324示为是单个介质,但是术语“计算机可读存储介质”应被认为包括存储一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。术语“计算机可读存储介质”还应被认为包括能够存储、编码或携带用于由机器执行的指令集并使机器执行实现的方法学中的任何一种或多种方法学的任何介质。术语“计算机可读存储介质”应相应地被认为包括但不限于固态存储器以及光和磁介质。

以下示例涉及进一步的实现。

示例1是一种包括用于执行虚拟机的处理器的系统,其中处理器要:1)接收访问由虚拟机的地址空间中的客户虚拟存储器地址(GVA)标识的存储器页的请求;2)使用包括将GVA映射到客户物理存储器地址(GPA)的客户页表(GPT)条目的GPT将GVA转换为GPA;5)将GPA转换为存储器页的主机物理地址(HPA);4)在翻译后备缓冲器(TLB)中存储将GVA映射到HPA的TLB条目;6)修改GPT条目以指定存储器页为被访问;7)检测应用修改GPT条目的尝试;8)响应于修改GPT条目的尝试,生成页错误;以及9)响应于页错误,转储清除TLB条目。

在示例2中,示例1的系统,其中,为了生成页错误,处理器要:1)在影子页表存储器访问模式(SPT-模式)中操作,其中SPT-模式包括维持影子页表(SPT),SPT包括将GVA映射到HPA的SPT条目;2)在SPT中将GPT存储器页指定为受写保护,其中GPT存储器页用于存储GPT条目;3)从应用接收修改GPT条目的指令;4)使用SPT确定GPT存储器页受写保护;以及5)响应于确定GPT存储器页受写保护而生成页错误。

在示例3中,示例2的系统,其中为了在SPT-模式中操作,处理器要从扩展页表存储器访问模式(EPT-模式)过渡到SPT-模式,其中在EPT-模式中,将GVA转换为HPA进一步包括使用包括将GPA映射到HPA的扩展页表(EPT)条目的EPT将GPA转换为HPA。

在示例4中,示例2的系统,其中创建SPT包括:1)为虚拟处理器的处理器状态选择多个基本GVA;2)选择与基本GVA相邻的多个GVA;3)选择预确定数量的热访问GVA;以及4)用虚拟处理器的处理器状态的多个基本GVA、与基本GVA相邻的所述多个GVA以及所选择的热访问GVA填充SPT。

在示例5中,示例1的系统,其中处理器要从扩展页表存储器访问模式(EPT-模式)过渡到影子页表存储器访问模式(SPT-模式),其中在EPT-模式中,将GVA转换为HPA包括使用包括将GPA映射到HPA的扩展页表(EPT)条目的EPT将GPA转换为HPA,并且其中在SPT-模式中,将GVA转换为HPA包括维持影子页表(SPT),SPT包括将GVA映射到HPA的SPT条目;并且其中处理器进一步包括用于执行以下动作的重放协处理器(RCP):1)在验证时间间隔开始时,复制由处理器启用的虚拟处理器的处理器状态,其中虚拟处理器被指派成执行软件程序;2)在RCP上重放虚拟处理器的复制的处理器状态;以及3)将RCP的所得处理器状态与验证时间间隔结束时的虚拟处理器的处理器状态进行比较。

在示例6中,示例5的系统,其中在验证时间间隔开始时的虚拟处理器的处理器状态包括:1)处理器的多个硬件寄存器的内容;以及2)与软件程序相关联的多个存储器页的内容。

在示例7中,示例5的系统,其中,为了从EPT-模式过渡到SPT-模式,处理装置要:1)停止正在由虚拟处理器执行的进程;2)清除缓存的EPT相关的硬件寄存器;3)配置虚拟机控制结构(VMCS)以禁用EPT;4)配置VMCS以启用SPT;5)创建SPT;以及6)恢复在虚拟处理器上停止的进程的执行。

在示例8中,示例5的系统,其中,在验证时间间隔结束之后,处理装置要:1)停止正在由虚拟处理器执行的进程;2)清除缓存的SPT相关的硬件寄存器;3)配置虚拟机控制结构(VMCS)以禁用SPT;4)配置VMCS以启用EPT;5)加载最新的EPT;以及6)恢复在虚拟处理器上停止的进程的执行。

在示例9中,一种系统包括:1)用于初始化虚拟机监测器(VMM)的处理器,其中VMM要初始化客户操作系统(GOS),其中GOS要支持虚拟机;2)存储器装置,所述存储器装置用于存储:a)客户页表(GPT),所述GPT包括用于将客户虚拟存储器地址(GVA)映射到客户物理存储器地址(GPA)的GPT条目,b)扩展页表(EPT),所述EPT包括用于将GPA映射到主机物理存储器地址(HPA)的EPT条目,和c)影子页表(SPT),所述SPT包括用于将GVA映射到HPA的SPT条目;3)重放协处理器(RCP);以及4)处理器检查模块(PCM),所述PCM用于能够实现在RCP上对处理器的运行时验证。

在示例10中,示例9的系统,其中处理器既能进行启用EPT的存储器访问模式(EPT-模式),又能进行启用SPT的存储器访问模式(SPT-模式),其中在EPT-模式中,处理器要:1)接收访问由GVA标识的存储器页的请求;2)在GPT中执行第一次行走,以从GVA获得GPA;以及3)在EPT中执行第二次行走,以从GPA获得存储器页的HPA;并且其中在SPT-模式中,处理器要:1)接收访问由GVA标识的存储器页的请求,2)在SPT中执行第三次页行走,以获得从GVA到存储器页的主机物理地址(HPA)的存储器转换;3)在处理器的翻译后备缓冲器(TLB)中存储与存储器转换对应的转换条目;4)修改GVA,以指定存储器页为被访问;5)检测应用修改GPT条目的尝试;6)响应于修改GPT条目的尝试,生成页错误;以及7)响应于页错误,从TLB转储清除转换条目。

在示例11中,示例10的系统,其中为了修改GVA以指定存储器页为被访问,要在与从GVA到HPA的存储器转换对应的SPT条目中设置A位。

在示例12中,示例10的系统,其中处理器要周期性地:1)从EPT-模式过渡到SPT-模式;以及2)从SPT-模式过渡回到EPT-模式。

各种实现可具有上文描述的结构特征的不同组合。例如,上文描述的处理器和方法的所有可选特征也可关于本文中所描述的系统实现,并且示例中的细节可在一个或多个实现中的任何地方使用。

示例13是一种方法,它包括:1)由处理装置运行虚拟机;2)由处理装置接收访问由虚拟机的地址空间中的客户虚拟存储器地址(GVA)标识的存储器页的请求;3)使用包括将GVA映射到客户物理存储器地址(GPA)的客户页表(GPT)条目的GPT将GVA转换为GPA;3)将GPA转换为存储器页的主机物理地址(HPA);4)由处理装置在翻译后备缓冲器(TLB)中存储将GVA映射到HPA的TLB条目;4)由处理装置修改GPT条目,以指定存储器页为被访问;5)由处理装置检测应用修改GPT条目的尝试;6)响应于修改GPT条目的尝试,由处理装置生成页错误;以及7)响应于页错误,由处理装置转储清除TLB条目。

在示例14中,示例13的方法,其中生成页错误包括:1)在影子页表存储器访问模式(SPT-模式)中操作处理装置,其中SPT-模式包括维持影子页表(SPT),SPT包括将GVA映射到HPA的SPT条目;2)在SPT中将GPT存储器页指定为受写保护,其中GPT存储器页用于存储GPT条目;3)从应用接收修改GPT条目的指令;4)使用SPT确定GPT存储器页受写保护;以及5)响应于确定GPT存储器页受写保护而生成页错误。

在示例15中,示例14的方法,其中为了在SPT-模式中操作处理装置,处理装置要从扩展页表存储器访问模式(EPT-模式)过渡到SPT-模式,其中在EPT-模式中,将GVA转换为HPA进一步包括使用包括将GPA映射到HPA的扩展页表(EPT)条目的EPT将GPA转换为HPA。

在示例16中,示例14的方法,其中创建SPT包括:1)由处理装置为虚拟处理器的处理器状态选择多个基本GVA;2)由处理装置选择与基本GVA相邻的多个GVA;3)由处理装置选择预确定数量的热访问GVA;以及4)由处理装置用虚拟处理器的处理器状态的多个基本GVA、与基本GVA相邻的多个GVA以及选择的热访问GVA来填充SPT。

在示例17中,示例13的方法,进一步包括将处理装置从扩展页表存储器访问模式(EPT-模式)过渡到影子页表存储器访问模式(SPT-模式),其中在EPT-模式中,将GVA转换为HPA包括使用包括将GPA映射到HPA的扩展页表(EPT)条目的EPT将GPA转换为HPA;并且其中在SPT-模式中,将GVA转换为HPA包括使用影子页表(SPT),所述SPT包括将GVA映射到HPA的SPT条目;并且其中方法进一步包括:1)在验证时间间隔开始时,由处理装置复制处理装置的虚拟处理器的处理器状态,其中虚拟处理器被指派成执行软件程序;2)由处理装置在重放协处理器(RCP)上重放虚拟处理器的复制的处理器状态;以及3)由处理装置将RCP的所得处理器状态与验证时间间隔结束时的虚拟处理器的处理器状态进行比较。

在示例18中,示例17的方法,其中在验证时间间隔开始时的虚拟处理器的处理器状态包括:1)处理器的多个硬件寄存器的内容;以及2)与软件程序相关联的多个存储器页的内容。

在示例19中,示例17的方法,其中从EPT-模式过渡到SPT-模式包括:1)由处理装置停止正在由虚拟处理器执行的进程;2)由处理装置清除缓存的EPT相关的硬件寄存器;3)由处理装置配置虚拟机控制结构(VMCS)以禁用EPT;4)由处理装置配置VMCS以启用SPT;5)由处理装置创建SPT;以及6)由处理装置恢复在虚拟处理器上停止的进程的执行。

在示例20中,示例17的方法,进一步包括,在验证时间间隔结束之后:1)由处理装置停止正在由虚拟处理器执行的进程;2)由处理装置清除缓存的SPT相关的硬件寄存器;3)由处理装置配置虚拟机控制结构(VMCS)以禁用SPT;4)由处理装置配置VMCS以启用EPT;5)由处理装置加载最新的EPT;以及6)由处理装置恢复在虚拟处理器上停止的进程的执行。

各种实现可具有上文描述的结构特征的不同组合。例如,上文描述的处理器和方法的所有可选特征也可关于本文中所描述的系统实现,并且示例中的细节可在一个或多个实现中的任何地方使用。

示例21是一种存储指令的非暂时性计算机可读介质,指令在由具有耦合到系统存储器的核的处理器执行时使处理器执行包括以下操作的多个逻辑操作:1)由处理装置运行虚拟机;2)由处理装置接收访问由虚拟机的地址空间中的客户虚拟存储器地址(GVA)标识的存储器页的请求;3)使用包括将GVA映射到客户物理存储器地址(GPA)的客户页表(GPT)条目的GPT将GVA转换为GPA;3)将GPA转换为存储器页的主机物理地址(HPA);4)由处理装置在翻译后备缓冲器(TLB)中存储将GVA映射到HPA的TLB条目;5)由处理装置修改GPT条目,以指定存储器页为被访问;6)由处理装置检测应用修改GPT条目的尝试;7)响应于修改GPT条目的尝试,由处理装置生成页错误;以及8)响应于页错误,由处理装置转储清除TLB条目。

在示例22中,示例21的非暂时性计算机可读介质,其中生成页错误包括:1)在影子页表存储器访问模式(SPT-模式)中操作处理装置,其中SPT-模式包括维持影子页表(SPT),SPT包括将GVA映射到HPA的SPT条目;2)在SPT中将GPT存储器页指定为受写保护,其中GPT存储器页用于存储GPT条目;3)从应用接收修改GPT条目的指令;4)使用SPT确定GPT存储器页受写保护;以及5)响应于确定GPT存储器页受写保护而生成页错误。

在示例23中,示例22的非暂时性计算机可读介质,其中为了在SPT-模式中操作处理装置,指令要使处理装置从扩展页表存储器访问模式(EPT-模式)过渡到SPT-模式,其中在EPT-模式中,将GVA转换为HPA进一步包括使用包括将GPA映射到HPA的扩展页表(EPT)条目的EPT将GPA转换为HPA。

在示例24中,示例22的非暂时性计算机可读介质,其中为了创建SPT,操作进一步包括:1)由处理装置为虚拟处理器的处理器状态选择多个基本GVA;2)由处理装置选择与基本GVA相邻的多个GVA;3)由处理装置选择预确定数量的热访问GVA;以及4)由处理装置用虚拟处理器的处理器状态的多个基本GVA、与基本GVA相邻的多个GVA以及选择的热访问GVA来填充SPT。

在示例25中,示例21的非暂时性计算机可读介质,其中操作进一步包括将处理装置从扩展页表存储器访问模式(EPT-模式)过渡到影子页表存储器访问模式(SPT-模式),其中在EPT-模式中,将GVA转换为HPA包括使用包括将GPA映射到HPA的扩展页表(EPT)条目的EPT将GPA转换为HPA;并且其中在SPT-模式中,将GVA转换为HPA包括使用影子页表(SPT),所述SPT包括将GVA映射到HPA的SPT条目;并且其中非暂时性计算机可读介质进一步包括:1)在验证时间间隔开始时,由处理装置复制处理装置的虚拟处理器的处理器状态,其中虚拟处理器被指派成执行软件程序;2)由处理装置在重放协处理器(RCP)上重放虚拟处理器的复制的处理器状态;以及3)由处理装置将RCP的所得处理器状态与验证时间间隔结束时的虚拟处理器的处理器状态进行比较。

在示例26中,示例25的非暂时性计算机可读介质,其中在验证时间间隔开始时的虚拟处理器的处理器状态包括:1)处理器的多个硬件寄存器的内容;以及2)与软件程序相关联的多个存储器页的内容。

在示例27中,示例25的非暂时性计算机可读介质,其中从EPT-模式过渡到SPT-模式包括:1)由处理装置停止正在由虚拟处理器执行的进程;2)由处理装置清除缓存的EPT相关的硬件寄存器;3)由处理装置配置虚拟机控制结构(VMCS)以禁用EPT;4)由处理装置配置VMCS以启用SPT;5)由处理装置创建SPT;以及6)由处理装置恢复在虚拟处理器上停止的进程的执行。

在示例28中,示例25的非暂时性计算机可读介质,其中操作进一步包括在验证时间间隔结束之后:1)由处理装置停止正在由虚拟处理器执行的进程;2)由处理装置清除缓存的SPT相关的硬件寄存器;3)由处理装置配置虚拟机控制结构(VMCS)以禁用SPT;4)由处理装置配置VMCS以启用EPT;5)由处理装置加载最新的EPT;以及6)由处理装置恢复在虚拟处理器上停止的进程的执行。

各种实现可具有上文描述的结构特征的不同组合。例如,上文描述的处理器和方法的所有可选特征也可关于本文中所描述的系统实现,并且示例中的细节可在一个或多个实现中的任何地方使用。

示例29是一种系统,它包括:1)用于由处理装置运行虚拟机的部件,2)用于由处理装置接收访问由虚拟机的地址空间中的客户虚拟存储器地址(GVA)标识的存储器页的请求的部件,3)用于使用包括将GVA映射到客户物理存储器地址(GPA)的客户页表(GPT)条目的GPT将GVA转换为GPA的部件,3)用于将GPA转换为存储器页的主机物理地址(HPA)的部件;4)用于由处理装置在翻译后备缓冲器(TLB)中存储将GVA映射到HPA的TLB条目的部件,4)用于由处理装置修改GPT条目以指定存储器页为被访问的部件;5)用于由处理装置检测应用修改GPT条目的尝试的部件;6)用于响应于修改GPT条目的尝试由处理装置生成页错误的部件;以及7)用于响应于页错误由处理装置转储清除TLB条目的部件。

在示例30中,示例29的系统,其中用于生成页错误的部件包括:1)用于在影子页表存储器访问模式(SPT-模式)中操作处理装置的部件,其中SPT-模式包括维持影子页表(SPT),SPT包括将GVA映射到HPA的SPT条目;2)用于在SPT中将GPT存储器页指定为受写保护的部件,其中GPT存储器页用于存储GPT条目;3)用于从应用接收修改GPT条目的指令的部件;4)用于使用SPT确定GPT存储器页受写保护的部件;以及5)用于响应于确定GPT存储器页受写保护而生成页错误的部件。

在示例31中,示例30的系统,其中为了在SPT-模式中操作处理装置,处理装置要具有从扩展页表存储器访问模式(EPT-模式)过渡到SPT-模式的部件,其中在EPT-模式中,将GVA转换为HPA进一步包括用于使用包括将GPA映射到HPA的扩展页表(EPT)条目的EPT将GPA转换为HPA的部件。

在示例32中,示例30的系统,其中用于创建SPT的部件包括:1)用于由处理装置为虚拟处理器的处理器状态选择多个基本GVA的部件;2)用于由处理装置选择与基本GVA相邻的多个GVA的部件;3)用于由处理装置选择预确定数量的热访问GVA的部件;以及4)用于由处理装置用虚拟处理器的处理器状态的多个基本GVA、与基本GVA相邻的多个GVA以及选择的热访问GVA来填充SPT的部件。

在示例33中,示例29的系统,进一步包括用于将处理装置从扩展页表存储器访问模式(EPT-模式)过渡到影子页表存储器访问模式(SPT-模式)的部件,其中在EPT-模式中,将GVA转换为HPA包括具有使用包括将GPA映射到HPA的扩展页表(EPT)条目的EPT将GPA转换为HPA的部件,并且其中在SPT-模式中,将GVA转换为HPA包括具有使用包括将GVA映射到HPA的影子页表(SPT)条目的SPT的部件;并且其中该系统进一步包括:1)用于在验证时间间隔开始时由处理装置复制处理装置的虚拟处理器的处理器状态的部件,其中虚拟处理器被指派成执行软件程序;2)用于由处理装置在重放协处理器(RCP)上重放虚拟处理器的复制的处理器状态的部件;以及3)用于由处理装置将RCP的所得处理器状态与验证时间间隔结束时的虚拟处理器的处理器状态进行比较的部件。

在示例34中,示例33的系统,其中在验证时间间隔开始时的虚拟处理器的处理器状态包括:1)处理器的多个硬件寄存器的内容;以及2)与软件程序相关联的多个存储器页的内容。

在示例35中,示例33的系统,其中用于从EPT-模式过渡到SPT-模式的部件包括:1)用于由处理装置停止正在由虚拟处理器执行的进程的部件;2)用于由处理装置清除缓存的EPT相关的硬件寄存器的部件;3)用于由处理装置配置虚拟机控制结构(VMCS)以禁用EPT的部件;4)用于由处理装置配置VMCS以启用SPT的部件;5)用于由处理装置创建SPT的部件;以及6)用于由处理装置恢复在虚拟处理器上停止的进程的执行的部件。

在示例36中,示例33的系统,进一步包括在验证时间间隔结束之后使用:1)用于由处理装置停止正在由虚拟处理器执行的进程的部件;2)用于由处理装置清除缓存的SPT相关的硬件寄存器的部件;3)用于由处理装置配置虚拟机控制结构(VMCS)以禁用SPT的部件;4)用于由处理装置配置VMCS以启用EPT的部件;5)用于由处理装置加载最新的EPT的部件;以及6)用于由处理装置恢复在虚拟处理器上停止的进程的执行的部件。

尽管已经关于有限数量的实现描述了本公开,但是本领域技术人员由此将领会到众多修改和变化。旨在的是,随附权利要求覆盖落在本公开的真实精神和范围内的所有此类修改和变化。

在本文中的描述中,阐述了众多特定细节,诸如特定类型的处理装置和系统配置、特定的硬件结构、特定的架构和微架构细节、特定的寄存器配置、特定的指令类型、特定的系统组件、特定的测量/高度、特定处理装置流水线级和操作等的示例,以便提供对本公开的透彻理解。然而,本领域技术人员将领会到,无需采用这些特定细节来实践本公开。在其它实例中,公知的组件或方法,诸如特定的和备选的处理装置架构、用于描述的算法的特定的逻辑电路/代码、特定的固件代码、特定的互连操作、特定的逻辑配置、特定的制造技术和材料、特定的编译器实现、采用代码的算法的特定表示、特定的掉电和门控技术/逻辑以及计算机系统的其它特定操作细节尚未被详细描述,以免不必要地模糊本公开。

诸如在计算平台或微处理装置中,参考能够实现用于运行时处理器验证的扩展页表和影子页表之间的动态切换描述了实现。实现也可适用于其它类型的集成电路和可编程逻辑装置。例如,公开的实现不限于桌上型计算机系统或便携式计算机,诸如英特尔®超极本TM(UltrabooksTM)计算机。并且,也可用于其它装置中,诸如手持式装置、平板计算机、其它薄笔记本、片上系统(SoC)装置和嵌入式应用。手持式装置的一些示例包括蜂窝电话、因特网协议装置、数字相机、个人数字助理(PAD)和手持式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”。另外,除非另外指定或从上下文清楚涉及单数形式,如在本申请和随附权利要求中所使用的冠词“一(a和an)”一般应解释成表示“一个或多个”。此外,术语“实现”或“一个实现”或“实现”或“一个实现”的到处使用不旨在表示相同的实现或实现,除非如此描述。而且,本文中所使用的术语“第一”、“第二”、“第三”、“第四”等被表示为用于在不同元件之间进行区分的标签,并且可能不一定具有根据它们的数字名称的顺序含义。

47页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:存储器中的命令总线

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类