CN105320612B - 验证虚拟地址转换 - Google Patents

验证虚拟地址转换 Download PDF

Info

Publication number
CN105320612B
CN105320612B CN201510278960.9A CN201510278960A CN105320612B CN 105320612 B CN105320612 B CN 105320612B CN 201510278960 A CN201510278960 A CN 201510278960A CN 105320612 B CN105320612 B CN 105320612B
Authority
CN
China
Prior art keywords
address
guest
physical
virtual machine
physical addresses
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.)
Active
Application number
CN201510278960.9A
Other languages
English (en)
Other versions
CN105320612A (zh
Inventor
R·L·萨希塔
G·尼格
D·M·杜汉姆
V·尚伯格
M·勒梅
I·欧兹尔
S·什沃茨曼
B·亨特利
A·V·安德森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN105320612A publication Critical patent/CN105320612A/zh
Application granted granted Critical
Publication of CN105320612B publication Critical patent/CN105320612B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection 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/145Protection 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

用于验证虚拟地址转换的系统和方法。示例处理系统包括:执行与第一特权级别相关联的第一应用以及与第二特权级别相关联的第二应用的处理核,其中与所述第一特权级别相关联的第一组特权包括与所述第二特权级别相关联的第二组特权;以及,地址验证组件,所述地址验证组件,考虑到由所述第一应用维护的地址转换数据结构,验证在所述第二应用的第一地址空间中定义的第一地址到所述第二应用的第二地址空间中的定义的第二地址的映射。

Description

验证虚拟地址转换
技术领域
本发明一般涉及计算机系统,具体而言,涉及用于验证计算机系统中的虚拟地址转换的系统和方法。
背景技术
处理系统可以通过利用用于将由正在被处理系统执行的应用引用的虚拟地址转换为在处理系统的地址空间中定义的物理地址的页面表,来虚拟化存储器。在处理系统可以被配置成执行由虚拟机管理器管理的一个或多个虚拟机的虚拟化环境中,类似的地址转换过程可以在虚拟机内执行。
附图说明
本发明是通过示例而不是作为限制来说明的,当与附图一起考虑时并参考下列详细描述时,可以更完全地理解本发明,在附图中:
图1描绘了根据本公开的一个或多个方面的示例处理系统的高级组件图示;
图2示意地示出了根据本公开的一个或多个方面的验证虚拟地址转换的示例实现;
图3示意地示出了根据公开的一个或多个方面的示例RLC表结构。
图4描绘根据本公开的一个或多个方面的用于验证虚拟地址转换的示例方法的流程图;
图5描绘了根据本公开的一个或多个方面的示例计算机系统的高级组件图;
图6描绘了根据本公开的一个或多个方面的处理器的框图;
图7A-7B示意地示出了根据本公开的一个或多个方面的处理器微架构的要素;
图8描绘了根据本公开的一个或多个方面的示例计算机系统的框图;
图9描绘了根据本公开的一个或多个方面的示例片上系统(SoC)的框图;
图10描绘了根据本公开的一个或多个方面的示例计算机系统的框图;以及
图11描绘了根据本公开的一个或多个方面的示例片上系统(SoC)的框图。
具体实施方式
此处描述了用于验证虚拟地址转换的处理系统和相关的方法。
处理系统可以执行虚拟机管理器(VMM),该虚拟机管理器被配置成创建和管理执行由相应的客户操作系统控制的各种软件应用的一个或多个虚拟机。正在由虚拟机执行的软件应用可以使用客户虚拟地址(例如,由客户线性地址所表示的)来引用存储器位置。响应于接收到存储器访问请求,处理器使用客户页面表(OS PT),将引用的客户虚拟地址转换为客户物理地址。然后,处理系统可以使用扩展的页面表(EPT),将客户物理地址转换为对应的主机物理地址。
使用可被客户操作系统修改的OS PT,执行客户虚拟地址到客户物理地址的转换在某些情况下可能被视为漏洞。潜在攻击者可以利用修改OS PT的能力来执行数据映射替换或编码重新映射攻击。本公开通过提供受限制的线性检查(RLC)表,来解决各种常见的实现的此缺陷及其他缺陷,VMM可以使用该表来验证客户虚拟地址到客户物理地址的转换。
在说明性示例中,客户操作系统可以,使用OS PT,确定对应于由客户应用引用的客户虚拟地址的客户物理地址。然后,处理系统可以通过将试探性客户物理地址与由RLC表查询产生的预期的客户物理地址进行比较,验证客户虚拟地址到试探性客户物理地址的映射。如果由OS PT表遍历(walk)所产生的试探性客户物理地址匹配由RLC表查询所产生的预期的客户物理地址,则可以根据EPT确定客户物理地址到主机物理地址的映射;否则,可以向VMM发送VM退出信号,如下文比较详细地描述的。
下面作为示例而并非作为限制地比较详细地描述了上面引用的方法和系统的各方面。
在以下描述中,阐明了众多具体细节,如具体类型的处理器和系统配置的示例、具体硬件结构、具体架构和微架构细节、具体寄存器配置、具体指令类型、具体系统组件、具体测量/高度、具体处理器流水线阶段和操作等,以提供对本公开的透彻理解。然而,对本领域普通技术人员显而易见的是,不一定要采用这些具体细节来实施本文所公开的实施例。在其它实例中,未详细描述公知的组件或方法,诸如具体或替代的处理器架构、用于所描述算法的具体逻辑电路/代码、具体固件代码、具体互连操作、具体逻辑配置、具体制造技术和材料、具体编译器实现、代码中算法的具体表达、具体掉电和功率限制技术/逻辑、以及计算机系统的其它具体操作细节,以避免不必要地模糊本发明。
虽然参照处理器来描述下列多个示例,但是其他实现也适用于其他类型的集成电路和逻辑设备。可以将此处所描述的示例的类似的技术和原理应用于可以得益于较高流水线吞吐量和改善的性能的其他类型的电路或半导体器件。此处所描述的示例的原理适用于执行数据操纵的任何处理器或机器。然而,本发明不仅限于执行512位、256位、128位、64位、32位或16位数据操作的处理器或机器,并可以应用于其中执行对数据的操纵或管理的任何处理器和机器。
然而,示出了本发明和附图的示例不应该以限制的方式来解释,因为它们只是提供此处所描述的各实施例的示例,而并非提供此处所描述的各实施例的所有可能的实现的详细清单。虽然下面的示例在执行单元以及逻辑电路的上下文中描述了指令处理和分布,但是此处所描述的系统和方法的其他实现可以通过存储在机器可读的、有形的介质上的数据或指令来完成,这些数据或指令当由机器执行时,使机器执行根据此处所描述的至少一个实施例的功能。在某些实现中,与此处所描述的各实施例相关联的功能是以机器可执行指令来实现的。指令可以用来使利用指令编程的通用或专用的处理器来执行此处所描述的方法。此处所描述的实现可以作为计算机程序产品或软件来提供,该计算机程序产品或软件可以包括在其上存储了机器或计算机可读介质,指令可以被用来编程计算机(或其他电子器件)以执行根据此处所描述的各实施例的一个或多个操作。可另选地,可以由包含用于执行操作的固定功能逻辑的特定硬件组件,或由编程的计算机组件和固定功能硬件组件的任何组合,来执行此处所描述的系统和方法的操作。
用于编程逻辑以执行此处所描述的方法的指令可以存储在系统中的存储器内,诸如DRAM、缓存、闪存,或其他存储器。此外,指令可经由网络或通过其他计算机可读介质来分配。因此,计算机可读介质可包括用于以机器(诸如,计算机)可读的形式存储或发送信息的任何机制,但不限于:软盘、光盘、紧致盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或在经由互联网通过电、光、声、或其他形式的传播信号(诸如,载波、红外信号、数字信号等)发送信息中所用的有形机器可读存储器。因此,计算机可读介质包括适用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
此处“处理器”应该是指能够执行指令编码算术、逻辑或I/O操作的设备。在一个说明性示例中,处理器可以遵循冯诺依曼架构模型,并可以包括算术逻辑单元(ALU)、控制单元以及多个寄存器。另一方面,处理器可以包括一个或多个处理核,因此可以是通常能够处理单指令流水线的单核处理器,或可以同时处理多个指令流水线的多核处理器。在另一方面,处理器可以实现为单个集成电路,两个或更多个集成电路,或可以是多芯片模块(例如,其中,单个微处理器晶片被包括在单个集成电路封装中,因此共享单个插槽)的组件。
现在参考图1,所示是根据本公开的一个或多个方面的示例处理系统100的框图。如图1所示,处理系统100可以包括通过共享互连115耦合到存储器120的一个或多个处理核111。处理系统100可以实现硬件辅助的虚拟化机制,允许在最有特权的执行模式(也被称为VMX根执行模式)下运行的虚拟机管理器(VMM)117的控制之下,在有较少特权的执行模式(也被称为VMX非根执行模式)下执行一个或多个虚拟机,如下文比较详细地描述的。在说明性示例中,VMM可以被配置成创建和管理执行由相应的客户操作系统控制的各种软件应用的一个或多个虚拟机131。在某些实现中,处理系统100还可以包括图1中未示出的各种其他组件。
正在由虚拟机131执行的软件应用可以使用客户虚拟地址(例如,由相应的虚拟机的线性地址空间中的客户线性地址所表示的)来引用存储器位置。响应于接收到存储器访问请求,处理器可以使用客户OS页面表(OS PT)133,将被引用的客户虚拟地址转换为客户物理地址。然后,处理系统100可以使用扩展的页面表(EPT)139,进一步将客户物理地址转换为对应的主机物理地址。
在某些实现中,处理系统100可以使用转换后援缓冲器(TLB)135,用于缓存客户虚拟地址到对应的主机物理地址的多个最近的映射。响应于未能使用TLB来解析客户虚拟地址,可以调用页未命中处理程序(PMH)137,以使用用于将客户虚拟地址转换为对应的客户物理地址的OS PT 133,然后,使用用于将客户物理地址转换为对应的主机物理地址的EPT139,执行页面表遍历。
通过可以由客户操作系统修改的OS PT 133,执行客户虚拟地址到客户物理地址转换,在某些情况下,可能被视为安全漏洞。潜在攻击者可利用修改OS PT的能力来执行数据映射替换或编码重新映射攻击。本公开通过提供受限制的线性检查(RLC)表,来解决各种常见的实现的此缺陷及其他缺陷,VMM可以使用该表来验证客户虚拟地址到客户物理地址转换,如下文比较详细地描述的。
图2示意地示出了根据本公开的一个或多个方面的验证虚拟地址转换的示例实现。参考图2,由VMM创建和/或管理的RLC表210可以包括多个RLC条目。每一个RLC条目都可以将客户虚拟地址映射到预期的客户物理地址。在说明性示例中,响应于检测到TLB未命中,处理器可以使用OS PT 133,确定对应于触发TLB未命中的客户虚拟地址的试探性客户物理地址。然后,处理系统可以通过将试探性客户物理地址与由RLC表查询产生的预期的客户物理地址进行比较,验证客户虚拟地址到预期的客户物理地址的映射。如果由OS PT表遍历所产生的试探性客户物理地址匹配由RLC表查询所产生的预期的客户物理地址,则可以使用EPT 139确定客户物理地址到主机物理地址的映射,然后,将其添加到TLB;否则,可以向VMM发送VM退出信号。
在上文所描述的地址转换过程中,如果PMH未能标识对应于触发TLB未命中的客户虚拟地址的OS PT条目,则可以触发OS级别的页面错误。如果PMH未能标识对应于由OS PT查询所产生的试探性客户物理地址的EPT条目,可以向VMM发送VM退出信号。
在某些实现中,可以在完成OS PT/EPT遍历之后,执行RLC表查询。可另选地,可以与OS PT/EPT遍历并行地执行RLC表查询。
RLC表可以被实现为由VMM管理的存储器数据结构。在某些实现中,RLC表210的基本地址可以存储在处理系统100的专用寄存器(被称为RLC基址寄存器)中。可以响应于某些硬件事件或响应于执行某一指令(例如,VMFUNC),修改RLC基址寄存器的值。
在某些实现中,可以由VMM基于由客户OS依赖的存储器分配策略所定义的某些存储器映射,作为虚拟机初始化序列的一部分,初始化RLC表。用于一种或多种类型的客户OS的存储器分配策略可以由VMM存储和/或可在VMM级别在运行时配置。
可另选地,RLC表可以由虚拟机在VM引导序列内执行的委托代理初始化,以基于OS依赖的存储器分配策略,向VMM传输某些存储器映射。用于客户OS的存储器分配策略可以由VM存储。在不受信任的软件可以由虚拟机加载之前,在VM引导序列内执行委托代理,可以提供存储器分配策略没有被恶意第三方篡改的某一级别的保证。
可另选地,RLC表可以由虚拟机在VM生命周期内的任何时间执行的委托代理初始化,以基于在VM实例内存在的实际存储器分配,向VMM传输某些存储器映射。在VM生命周期内的任何时间执行委托代理在配置RLC表时提供某一级别的灵活性,而可以通过由委托代理在VM内执行存储器分配测量实现的某些机制(例如,将实际存储器映射与可以由客户OS安全地存储的存储器分配策略进行比较),解决此方案的安全方面。
在某些实现中,RLC表可以被填充得很少,即,它可以只包括客户虚拟地址的子集的条目,而并非所有可能的客户虚拟地址的条目。可配置参数(例如,VM控制结构元素)可以定义在PMH未能标识对应于触发TLB未命中的客户虚拟地址的RLC表条目的情况下的PMH行为。在说明性示例中,如果PMH未能标识对应于触发TLB未命中的客户虚拟地址的RLC表条目,则PMH可以向VMM发出VM退出信号。可另选地,响应于未能标识对应于触发TLB未命中的客户虚拟地址的RCL表条目,PMH可以将RLC表条目的不存在解释为客户虚拟地址到试探性客户物理地址的OS PT映射的假设的有效性的指示。
在某些实现中,每一个RLC表条目还可以进一步包括指出对于由对应的客户虚拟地址引用的存储器位置允许的访问类型的一个或多个准许字段。在各说明性示例中,访问类型可以包括读取、写入、执行/执行禁用,和/或监督访问。可配置参数(例如,VM控制结构元素)可以定义当通过执行RLC表查询来验证试探性客户物理地址时,PMH是否应该检查访问类型。在说明性示例中,如果请求的访问类型不匹配由对应于触发TLB未命中的客户虚拟地址的RLC表条目所指定的访问类型,则PMH可以向VMM发出VM退出信号。可另选地,PMH可以忽略RLC表的访问类型字段。
在某些实现中,可配置参数(例如,VM控制结构元素)可以定义在由RLC表查询所产生的预期的客户物理地址不匹配由OS PT表遍历所产生的试探性客户物理地址的情况下的PMH行为。在说明性示例中,响应于判断由RLC表查询所产生的预期的客户物理地址不匹配由OS PT表遍历所产生的试探性客户物理地址,PMH可以向VMM发出VM退出信号。可另选地,PMH可以忽略OS PT遍历结果,并使用用于更新TLB的RLC表映射。
图3示意地示出了根据本发明的一个或多个方面的示例RLC表结构。在TLB未命中时,PMH可以完成OS PT/EPT遍历,以生成对应于触发TLB未命中的客户虚拟地址的试探性客户物理地址。PMH还可以进一步查询RLC表,以获取对应于客户虚拟地址的预期的客户物理地址。
如图3示意地示出的,RCL表可以包括通过客户虚拟地址的对应的部分索引的两个或更多表。可以使用包括一定数量的最高有效位(例如,比特47:39)的客户虚拟地址310的最高有效部分来索引L4表,其基本地址可以存储在RLC基址寄存器(RLCBR)中。可以使用与L4表查询的结果相结合的客户虚拟地址的包括一定数量的比特(例如,比特38:30)的第二部分来索引L3表。可以使用与L3表查询的结果相结合的客户虚拟地址的包括一定数量的比特(例如,比特29:12)的第三部分来索引L2表。可以使用与L2表查询的结果相结合的客户虚拟地址的包括一定数量的比特(例如,比特11:0)的最低有效部分来索引L1表。
L1表查询的结果可以包括预期的客户物理地址和存储器访问准许。然后,PMH可以将由RLC表查询所产生的预期的客户物理地址与由OS PT遍历所产生的试探性客户物理地址进行比较,并将企图的存储器访问的类型与由RLC表条目存储的准许进行比较。如果地址或存储器访问准许不匹配,可以向虚拟机管理器发送VM退出信号。
尽管根据本公开的一个或多个方面操作的处理系统100的上面的描述包括对由虚拟机管理器管理的虚拟机的引用,但是,在某些实现中,此处所描述的系统和方法可以用于验证由正在由处理系统执行的第一应用(诸如操作系统)执行的地址转换的完整性。根据本公开的一个或多个方面,处理系统的地址验证组件可以基于由正在由处理系统执行的第二应用(诸如虚拟机管理器)创建和/或维护的地址转换结构,执行地址验证,以便第二应用比第一应用更有特权(例如,与第一应用相关联的一组特权包括与第二应用相关联的一组特权)。
图4描绘根据本公开的一个或多个方面的用于验证虚拟地址转换的示例方法的流程图。方法400可以由计算机系统来执行,计算机系统可以包括硬件(例如,电路、专用逻辑和/或可编程逻辑)、软件(例如,可在计算机系统上执行以执行硬件模拟的指令)或其组合。方法400和/或其函数、例程、子例程或操作中的每一个都可以由执行方法的计算机系统的一个或多个物理处理器来执行。方法400的两个或更多函数、例程、子例程,或操作可以并行地或按照可以不同于上文所描述的顺序的顺序来执行。在某些实现中,方法400可以由单一处理线程执行。可另选地,方法400可以由两个或更多处理线程执行,每一个线程都执行方法的一个或多个单个函数、例程、子例程、或操作。在说明性示例中,实现方法400的处理线程可以被同步(例如,使用信号量(semaphore)、关键部分和/或其他线程同步机制)。可另选地,实现方法400的处理线程可以相对于彼此异步地执行。在一个示例中,如图4所示出的,方法400可以由下文所描述的并由图5-11所示出的处理系统执行。
参考图4,在框410,处理系统的页漏失处理程序可以通过虚拟机接收与存储器访问操作相关联的客户虚拟地址,以及对应于客户虚拟地址的试探性客户物理地址,如上文比较详细地描述的。
响应于在框415判断在地址转换数据结构中没有发现与客户虚拟地址相关联的条目(例如,由如上文比较详细地描述的RLC表所表示的),处理系统可以,在框420,确定定义在PMH未能标识对应于客户虚拟地址的地址转换数据结构条目的情况下的PMH行为的可配置参数(例如,VM控制结构元素)的值。在说明性示例中,如果参数的值是零,则处理系统可以,在框425,向VMM发出VM退出信号;否则,处理系统可以将地址转换数据结构条目的不存在解释为客户虚拟地址到试探性客户物理地址的OS PT映射的假设的有效性的指示,以及,在框430,将等于试探性客户物理地址的客户物理地址指定为要在框455执行的随后的EPT查询的客户物理地址。
响应于在框415成功地标识与客户虚拟地址相关联的地址转换数据结构条目,处理系统可以在框435确定预期的客户物理地址以及与对应于客户虚拟地址的地址转换数据结构条目相关联的存储器访问准许。
响应于在框440确定由RLC表查询所产生的预期的客户物理地址匹配试探性客户物理地址,企图的存储器访问的类型匹配由地址转换结构条目存储的准许,处理系统可以在框445,将预期的客户物理地址指定为客户物理地址。
否则,如果地址或存储器访问准许不匹配,则处理系统可以在框450确定可配置参数(例如,VM控制结构元素)的值,该可配置参数定义在预期的客户物理地址不匹配试探性客户物理地址的情况下的PMH行为。在说明性示例中,如果参数的值是零,则处理系统可以,在框425,向VMM发出VM退出信号;否则,处理系统可以忽略OS PT遍历结果,并在框455继续处理。
在框455,处理系统可以确定对应于客户物理地址的主机物理地址。
在框460,处理系统可以判断对应的GPA的HPA查询是否指出对于试探性GPA,需要RLC表条目。这将捕捉恶意第三方选择没有对应的RLC表条目的GVA以绕过在框435验证存储器访问准许的情况。
判断对于试探性GPA是否需要RLC表条目可以通过分析被添加到扩展的页面表(EPT)叶条目的指出对于给定GPA需要RLC表条目的比特字段来执行。如此,每一个单个GPA/HPA可以有选择地要求RLC检查就位。可另选地,相对于要求RLC表对于每一个试探性GPA而存在的所需的PMH行为可以由全局可配置参数(例如,VM控制结构元素)进行定义。
响应于在框460判断对于试探性GPA,需要RLC表条目,并且没有发现对应于试探性GPA的RLC表条目,处理系统可以在框465向VMM发出VM退出信号;否则,处理可以在框470继续。
在框470,处理系统可以利用客户虚拟地址到主机物理地址的映射来更新TLB。响应于完成参考框470所描述的操作,方法可以结束。
此处所描述的系统和方法对虚拟地址转换执行验证。尽管此处的描述引用显示控制器,但是,此处所描述的系统和方法也可以与其他功能图形单元一起使用。尽管此处的描述引用单一保护的显示会话,但是,此处所描述的系统和方法也可以被用来基于由显示引擎支持的并行重叠的数量,支持多个并行保护的会话。
虽然此处参考特定集成电路(诸如处理器)描述了各种系统和方法,但其他实现也可以适用于其他类型的集成电路和逻辑设备。可以将此处所描述的系统和方法的技术和原理应用于也可以得益于更好的能效和节能的其他类型的电路或半导体器件。例如,所公开的实现不仅限于任何特定类型的计算机系统,也可以用于诸如手持式设备、芯片上系统(SOC)设备以及嵌入式应用之类的其他设备中。手持设备的一些例子包括蜂窝电话、互联网协议设备、数字相机、个人数字助理(PDA)和手持PC。嵌入式应用一般包括微控制器、数字信号处理器(DSP)、网络计算机(上网本)、机顶盒、网络集线器、广域网(WAN)交换机或能执行下面教示的功能和操作的任何其它系统。此外,此处所描述的系统和方法不仅限于物理计算设备,也可以涉及软件实现的方法。由此处所描述的系统和方法实现的电能节省可以独立于基于操作系统(OS)的机制(诸如高级配置和平台接口(ACPI)标准)并与其互补。
此处所描述的方法和系统可以通过对于膝上型计算机、台式机、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式设备,以及各种其他电子设备的各种架构、设计和配置的计算机系统来实现,也适用于实现此处所描述的方法。一般而言,如此处所公开的能够包括处理器和/或其他执行逻辑的各种系统或电子设备一般适用于实现此处所描述的系统和方法。
图5描绘了根据本公开一个或多个方面的计算机系统的一个示例的高级的组件图示。根据本发明,诸如在此所描述的实施例中,处理系统100可包括处理器110,该处理器110用于使用包括逻辑的执行单元以执行算法来处理数据。系统100代表基于可从美国加利福尼亚州圣克拉拉市的英特尔公司获得的PENTIUM IIITM、PENTIUMTM4、XeonTM、Itanium、XScaleTM和/或StrongARMTM微处理器的处理系统,不过也可使用其它系统(包括具有其它微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,样本系统100可执行可从美国华盛顿州雷蒙德市的微软公司买到的WINDOWSTM操作系统的一个版本,不过也可使用其它操作系统(例如UNIX和Linux)、嵌入式软件、和/或图形用户界面。因此,本发明的各实施例不限于硬件电路和软件的任何具体组合。
在说明性示例中,处理器102包括实现将执行至少一个指令的算法的一个或多个执行单元108。可以在单处理器台式机或服务器系统的上下文中来描述一个实施例,但是,替换实施例可以被包括在多处理器系统中。处理器102耦合到在处理器110及系统100中的其他组件之间传输数据信号的处理器总线102。系统100的元件(例如,图形加速器112、存储器控制器中枢116、存储器120、I/O控制器中枢124、无线收发器126、闪存BIOS128、网络控制器134、音频控制器136、串行扩展端口138、I/O控制器140、等等)执行本领域普通技术人员所共知的它们的常规功能。
在某些实现中,处理器102包括第一级(L1)内部高速缓存存储器104。取决于架构,处理器102可以具有单个内部高速缓存或多级内部高速缓存。取决于特定实现以及需求,其他实施例包括内部和外部缓存两者的组合。寄存器组106将不同类型的数据存储在各种寄存器中,包括整数寄存器、浮点寄存器、向量寄存器、分组寄存器、影子寄存器(shadowregister)、检查点寄存器、状态寄存器以及指令指针寄存器。
执行单元108(包括用于执行整数和浮点操作的逻辑)也驻留在处理器102中。在某些实现中,处理器102包括存储微代码的微代码ROM,该微代码在被执行时将执行某些宏指令的算法或处理复杂情况。这里,微代码是潜在地可更新的,以为处理器102处理逻辑缺陷/修补。对于一个实施例,执行单元108包括用于处理紧缩指令集109的逻辑。通过将紧缩指令集109包括在通用处理器102的指令集内并包括用于执行这些指令的相关的电路,可使用通用处理器102中的紧缩数据来执行由许多多媒体应用使用的操作。如此,通过使用全宽的处理器的数据总线来对紧缩的数据执行操作,许多多媒体应用被加速并且更有效率地被执行。这能潜在地消除横跨处理器数据总线传输更小数据单元以便一次对一个数据元素执行一个或多个操作的需求。
执行单元108的替代实现也可被用于微控制器、嵌入式处理器、图形设备、DSP以及其他类型的逻辑电路。系统100包括存储器120。存储器120可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或其他存储器设备。存储器120可存储由可由处理器102执行的数据信号来表示的指令和/或数据。
系统逻辑芯片116耦合至处理器总线110和存储器120。在所示出的实施例中的系统逻辑芯片116是存储器控制器中枢(MCH)。处理器102可经由处理器总线110与MCH 116通信。MCH 116提供至存储器120的高带宽存储器路径118,用于指令和数据存储,以及用于存储图形命令、数据和纹理。MCH 116用于引导处理器102、存储器120以及系统100内的其他组件之间的数据信号,并在处理器总线110、存储器120和系统I/O 122之间桥接该数据信号。在一些实施例中,系统逻辑芯片116可提供耦合至图形控制器112的图形端口。MCH 116经由存储器接口118耦合至存储器120。图形卡112通过加速图形端口(AGP)互连114耦合至MCH116。
系统100使用专用中枢接口总线122以将MCH 116耦合至I/O控制器中枢(ICH)130。ICH 130经由局部I/O总线提供至一些I/O设备的直接连接。局部I/O总线是高速I/O总线,用于将外围设备连接至存储器120、芯片组以及处理器102。一些示例是音频控制器、固件中枢(闪存BIOS)128、无线收发机126、数据存储设备124、包括用户输入和键盘接口的传统I/O控制器、串行扩展端口(诸如通用串行总线(USB))以及网络控制器134。数据存储设备124可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备、或其他大容量存储设备。
图6是包括逻辑电路以执行根据本发明的一个或多个方面的指令的处理器200的微架构的框图。在一些实施例中,可将根据一个实施例的指令实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸多数据类型(例如,单精度和双精度整数和浮点数据类型)的数据元素进行操作。在一个实施例中,有序前端201是处理器200的部分,该部分取出要被执行的指令,并准备这些指令以便稍后在处理器流水线中使用。前端201可包括若干单元。在一个实施例中,指令预取器226从存储器取出指令,并将指令馈送至指令解码器228,指令解码器228随后解码或解释这些指令。例如,在某些实现中,该解码器将接收到的指令解码为机器可执行的、被称为“微指令”或“微操作”(也称为微op或μop)的一个或多个操作。在其他实施例中,该解码器将指令解析为可由微架构用于执行根据一个实施例的多个操作的操作码以及对应的数据和控制字段。在一个实施例中,追踪高速缓存230接受经解码的微操作,并将它们组合为程序有序序列或uop队列234中的踪迹,以用于执行。当追踪高速缓存230遇到复杂指令时,微代码ROM 232提供完成操作所需的微操作。
一些指令被转换为单个微op,而其他指令需要若干个微op以完成完整的操作。在一个实施例中,如果需要多于四个微op来完成指令,则解码器228访问微代码ROM 232以执行该指令。对于一个实施例,可将指令解码为少量的微op,以便在指令解码器228处进行处理。在另一实施例中,如果需要多个微op来完成操作,则可将指令存储在微代码ROM 232中。追踪高速缓存230参考进入点可编程逻辑阵列(PLA)来确定正确的微指令指针,以从微代码ROM 232中读取微代码序列来完成根据一个实施例的一条或多条指令。在微代码ROM 232完成对指令的微op进行的序列化操作之后,该机器的前端201恢复从追踪高速缓存230中取出微op。
无序执行引擎203是准备指令以进行执行的地方。无序执行逻辑具有多个缓冲器,这些缓冲器用于使指令流平滑并且重排序该指令流,以优化指令流往下进入流水线并且被调度以供执行时的性能。分配器逻辑分配每个微op需要的机器缓冲器和资源以用于执行。寄存器重叠逻辑将多个逻辑寄存器重命名为寄存器组中的多个条目。在指令调度器(存储器调度器、快速调度器202、慢速/通用浮点调度器204、简单浮点调度器206)之前,分配器也将每个微操作的条目分配入两个微操作队列中的一个,一个队列用于存储器操作,另一个队列用于非存储器操作。微操作调度器202、204、206基于对它们的从属输入寄存器操作数源的准备状态以及微操作完成其操作所需的执行资源的可用性来确定微操作何时就绪用于执行。一个实施例中的快速调度器202可在主时钟周期的每半个上进行调度,而其他调度器可在每个主处理器时钟周期上仅调度一次。调度器对分配端口进行仲裁以调度μop以便执行。
在执行块211中,物理寄存器组208和210位于调度器202、204和206以及执行单元212、214、216、218、220、222和224之间。也存在单独的寄存器组208、210,分别用于整数和浮点操作。一个实施例中的每个寄存器组208、210也包括旁路网络,该旁路网络可绕开还未被写入到寄存器组中的、刚完成的结果或将这些结果转发到新的从属uop中。整数寄存器组208和浮点寄存器组210也能够彼此传递数据。对于一个实施例,将整数寄存器组208划分为两个单独的寄存器组,一个寄存器组用于低阶的32位数据,第二个寄存器组用于高阶的32位数据。一个实施例中的浮点寄存器组210具有128位宽的条目,因为浮点指令通常具有从64至128位宽度的操作数。
执行块211包括执行单元212、214、216、218、220、222和224,实际在这些执行单元中执行指令。该区块包括存储微指令执行所需要的整数和浮点数据操作数值的寄存器组208和210。一个实施例的处理器200由若干个执行单元所组成:地址生成单元(AGU)212、AGU214、快速ALU 216、快速ALU 218、慢速ALU 220、浮点ALU 222、浮点移动单元224。对于一个实施例,浮点执行块222和224执行浮点、MMX、SIMD、SSE以及其他操作。一个实施例中的浮点ALU 222包括用于执行除法、平方根和余数微op的64位/64位的浮点除法器。对于此处所描述系统和方法,可以利用浮点硬件来处理涉及浮点值的指令。在一个实施例中,ALU操作去往高速ALU执行单元216和218。一个实施例中的快速ALU 216和218可执行有效等待时间为半个时钟周期的快速操作。对于一个实施例,大多数复杂整数操作去往慢速ALU 220,因为慢速ALU 220包括用于长等待时间类型操作的整数执行硬件,例如,乘法器、移位器、标记逻辑和分支处理设备。存储器加载/存储操作由AGU 212和214来执行。对于一个实施例,在对64位的数据操作数执行整数操作的情境中描述整数ALU 216、218和220。在替换实施例中,ALU 216、218、220可被实现为支持多种数据位,包括16、32、128、256等等。类似地,浮点单元222、224可被实现为支持具有多种宽度的位的一系列操作数。对于一个实施例,浮点单元222和224可结合SIMD和多媒体指令,对128位宽度紧缩数据操作数进行操作。
在一个实施例中,在父加载完成执行之前,uop调度器202、204和206就分派从属操作。由于在处理器200中推测性地调度并执行uop,因此处理器200也包括用于处理存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中会存在带着临时不正确的数据离开调度器的运行中的从属操作。重放机制跟踪并重新执行使用不正确数据的指令。依赖的操作应该被重播,而独立的操作被允许完成。也可将处理器的一个实施例的调度器和重放机制设计成用于捕捉指令序列,以用于文本串比较操作。
术语“寄存器”指代被用作指令的一部分以标识操作数的板上处理器存储位置。换句话说,寄存器可以是那些从处理器外部(从编程者的角度来看)可用的那些。然而,实施例中的寄存器不限于表示特定类型的电路。相反,实施例中的寄存器能够存储并提供数据,并且执行本文中所述的功能。在此所述的寄存器可由处理器中的电路使用任何数量不同技术来实现,诸如,专用物理寄存器、使用寄存器重叠的动态分配物理寄存器、专用和动态分配物理寄存器的组合,等等。在一个实施例中,整数寄存器存储三十二位整数数据。一个实施例中的寄存器组也包含八个用于紧缩数据的多媒体SIMD寄存器。对于以下讨论,应当将寄存器理解为设计成用于保持紧缩数据的数据寄存器,诸如来自美国加利福尼亚州圣克拉拉市的英特尔公司的启用了MMXTM技术的微处理器中的64位宽的MMX寄存器(在一些实例中也称为“mm”寄存器)。这些MMX寄存器(可用在整数和浮点格式中)可与伴随SIMD和SSE指令的紧缩数据元素一起操作。类似地,涉及SSE2、SSE3、SSE4或更新的技术(统称为“SSEx”)的128位宽XMM寄存器也可被用于保持这样紧缩数据操作数。在一个实施例中,在存储紧缩数据和整数数据时,寄存器不需要区分这两类数据类型。在一个实施例中,整数和浮点数据可被包括在相同的寄存器组中,或被包括在不同的寄存器组中。此外,在一个实施例中,浮点和整数数据可被存储在不同的寄存器中,或被存储在相同的寄存器中。
图7A-7B示意地示出了根据本公开的一个或多个方面的处理器微架构的要素。在图7A中,处理器流水线400包括取出级402、长度解码级404、解码级406、分配级408、重命名级410、调度(也称为分派或发布)级412、寄存器读取/存储器读取级414、执行级416、回写/存储器写入级418、异常处理级422、以及提交级424。
在图7B中,箭头表示两个或更多单元之间的耦合,箭头的方向指出那些单元之间的数据流动的方向。图7B示出了处理器核111,包括耦合到执行引擎单元450的前端单元430,执行引擎单元450和前端单元430两者都耦合到存储器单元470。
核111可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为又一选项,核111可以是专用核,例如,网络或通信核、压缩引擎、图形核等。
前端单元430包括耦合到指令高速缓存单元434的分支预测单元432,该指令高速缓存单元耦合到指令转换后备缓冲器(TLB)436,该指令转换后备缓冲器耦合到指令取出单元438,指令取出单元耦合到解码单元440。解码单元或解码器可解码指令,并生成从原始指令中解码出的、或以其他方式反映原始指令的、或从原始指令中推导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。可使用各种不同的机制来实现解码器。合适的机制的示例包括但不限于:查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等等。指令缓存单元434进一步耦合至存储器单元470中的第二级(L2)缓存单元476。解码单元440耦合至执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450包括耦合到引退单元452和一个或多个调度器单元的集合454的重命名/分配器单元456。调度器单元456表示任何数目的不同调度器,包括预留站、中央指令窗等。调度器单元456耦合到物理寄存器组单元458。物理寄存器组单元458中的每一个表示一个或多个物理寄存器组,其中不同的物理寄存器组存储一个或多个不同的数据类型(诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、等等)、状态(诸如,指令指针是将要被执行的下一个指令的地址)等等。物理寄存器组单元458被引退单元454所覆盖,以示出可实现寄存器重叠和无序执行的多种方式(诸如,使用重排序缓冲器和引退寄存器组、使用未来文件(future fi le)、历史缓冲器、引退寄存器组、使用寄存器映射和寄存器池等等)。通常,架构寄存器从处理器外部或从编程者的视角来看是可见的。这些寄存器不限于任何已知的特定电路类型。各种不同类型的寄存器是合适的,只要它们能够存储并提供本文所述的数据。合适的寄存器的示例包括但不限于:专用物理寄存器、使用寄存器重叠的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等等。引退单元454和物理寄存器组单元458耦合至执行群集460。执行群集460包括一个或多个执行单元的集合162以及一个或多个存储器访问单元的集合464。执行单元462可执行多种操作(例如,移位、加法、减法、乘法),并且可对多种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行操作。尽管一些实施例可以包括专用于特定功能或功能集的多个执行单元,但其他实施例可包括全部执行所有功能的仅一个执行单元或多个执行单元。调度器单元456、物理寄存器组单元458和执行群集460被示出为可能是复数个,因为某些实施例为某些数据/操作类型创建了多个单独流水线(例如,均具有各自调度器单元、物理寄存器组单元和/或执行群集的标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线和/或存储器访问流水线;以及在单独的存储器访问流水线的情况下,某些实施例被实现为仅仅该流水线的执行群集具有存储器访问单元464)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是无序发布/执行的,并且其余流水线可以是有序发布/执行的。
存储器访问单元的集合464耦合到存储器单元470,该存储器单元包括耦合到数据高速缓存单元472的数据TLB单元474,其中,数据高速缓存单元耦合到第二级(L2)高速缓存单元476。在一个示例性实施例中,存储器访问单元464可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元470中的数据TLB单元472。L2高速缓存单元476耦合到一个或多个其他级的高速缓存,并最终耦合到主存储器。
作为示例,示例性的寄存器重叠的、无序发布/执行核架构可按如下方式实现流水线400:指令取出438执行取出和长度解码阶段402和404;解码单元440执行解码阶段406;重命名/分配器单元452执行分配阶段408和重命名阶段410;调度器单元456执行调度阶段;物理寄存器组单元458和存储器单元470执行寄存器读/存储器读阶段412;执行群集460执行执行阶段414;存储器单元470和物理寄存器组单元458执行写回/存储器写阶段416;各单元可牵涉到异常处理阶段418;以及,退出单元454和物理寄存器组单元458执行提交阶段422。
核111可支持一个或多个指令集(例如,x86指令集(具有增加了更新版本的一些扩展)、加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集、加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集(具有可选的附加扩展,诸如NEON))。
在某些实现中,核可支持多线程操作(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程操作,各种方式包括时分多线程操作、同步多线程操作(其中,单个物理核为物理核正在同步进行多线程操作的多个线程中的每一个线程提供逻辑核)或其组合(例如,时分取出和解码以及此后诸如利用超线程技术的同步多线程操作)。
尽管在无序执行的上下文中描述了寄存器重叠,但应当理解,可在有序架构中使用寄存器重命名。虽然处理器的所示出的实施例也包括单独的指令和数据高速缓存单元434/474以及共享的L2高速缓存单元476,但替代的实施例可具有用于指令和数据两者的单个内部高速缓存,诸如例如第一级(L1)内部高速缓存、或多个层级的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部的高速缓存的组合。或者,所有高速缓存都可在核和/或处理器的外部。
在某些实现中,处理器核111可以被设计为无序(OOO)核,以便通过一旦其操作数可用,就执行指令,而并非按程序顺序,来改善性能。然而,性能优点可能会被相当大的功率消耗增大抵消。当有多个执行线程可以供操作系统调度时,使用多个有序核而并非大的无序核可以改善处理器的能源消耗概况,而不会损害总体性能。如此,为改善处理器的性能和能源消耗可缩放性,后者可以被设计为支持可变数量的核,这取决于性能需求和可以用来供操作系统调度的线程的数量。
图8描绘了根据本公开的一个或多个方面的示例计算机系统700的框图。如图8所示,多处理器系统700是点对点互连系统,并包括通过点对点互连770而耦合的第一处理器780和第二处理器2080。处理器770和780中的每一个都可以通过能够实现基于虚拟机的保护的视频路径的处理系统100的某个版本来提供,如上文比较详细地描述的。虽然仅以两个处理器770和780示出,但是应当理解,本发明的范围不限于此。在其他实施例中,一个或多个额外的处理器可以存在于示例计算机系统中。
处理器770和780被示出为分别包括集成存储器控制器单元772和782。处理器770也包括作为其总线控制器单元的部分的点对点(P-P)接口776和778;类似地,第二处理器780包括P-P接口786和788。处理器770、780可以经由使用点对点(P-P)接口电路778、788的P-P接口750来交换信息。如图8所示,IMC 772和782将处理器耦合到相应的存储器,即存储器732和存储器734,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器770、780可各自经由使用点对点接口电路776、794、786、798的各个P-P接口752、754与芯片组790交换信息。芯片组790还可经由高性能图形接口739与高性能图形电路738交换信息。
可将共享高速缓存(未示出)包括在任一处理器中,或包括在两个处理器的外部但经由P-P互连与这些处理器连接,使得如果将处理器置于低功率模式,则可将这两个处理器中的任意一个或两个的本地高速缓存信息存储在该共享的高速缓存中。
芯片组790可以经由接口796耦合至第一总线716。在一个实施例中,第一总线716可以是外围组件互连(PCI)总线或诸如PCI高速总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图8所示,各种I/O设备714可连同总线桥718一起耦合到第一总线716,总线桥718将第一总线716耦合到第二总线720。在一个实施例中,第二总线720可以是低引脚计数(LPC)总线。各种设备可以被耦合至第二总线720,在一个实施例中,这些设备包括例如键盘和/或鼠标722、通信设备727以及诸如可包括指令/代码和数据730的盘驱动器或其他大容量存储设备之类的存储单元728。进一步地,音频I/O 724可以耦合到第二总线720。
图9是根据本公开的一个或多个方面的示例片上系统(SoC)900的框图。应用处理器910可以通过能够实现基于虚拟机的保护的视频路径的处理系统100的某个版本来提供,如上文比较详细地描述的。如由图9所示意地示出的,互连单元902可以耦合到:应用处理器910,包括一个或多个核902A-N的集合和共享高速缓存单元(多个)906;系统代理单元910;总线控制器单元(多个)916;集成存储器控制器单元(多个)914;一个或多个媒体处理器920的集合,可包括集成图形逻辑908、用于提供静态和/或视频照相机功能的图像处理器924、用于提供硬件音频加速的音频处理器926、以及用于提供视频编码/解码加速的视频处理器928;静态随机存取存储器(SRAM)单元930;直接存储器存取(DMA)单元932;以及显示单元940,用于耦合至一个或多个外部显示器。
图10描绘了根据本公开的一个或多个方面的示例计算机系统的框图。处理器1610可以通过能够实现基于虚拟机的保护的视频路径的处理系统100的某个版本来提供,如上文比较详细地描述的。
由图10所示意地示出的系统1600可以包括实现为IC,其一些部分,单独的电子设备,或其他模块、逻辑、硬件、软件、固件的组件的任何组合,或,适用于计算机系统中的其组合,或作为以别的方式包括在计算机系统的机架内的组件。图10的框图旨在示出计算机系统的许多组件的高级别视图。然而,可以理解,可以省略所示出的某些组件,可以存在额外的组件,并且在其他实现中可以有所示出的组件的不同的布局。
处理器1610可以通过微处理器、多核处理器、多线程处理器、超低电压处理器、嵌入式处理器,或其他已知处理元件来提供。在所示出的实现中,处理器1610充当主处理单元,以及用于与系统1600的许多各种组件进行通信的中心枢纽。作为一个示例,处理器1600可以实现为芯片上系统(SoC)。作为特定的说明性示例,处理器1610包括基于架构CoreTM的处理器,诸如i3、i5、i7或位于美国加利福尼亚州圣克拉拉市的英特尔公司所提供的另一这样的处理器。
处理器1610可以与系统存储器1615进行通信。在各实现中,单个存储器设备可以是不同的封装类型,诸如单管芯封装(SDP),双管芯封装(DDP)或四管芯封装(1P)。在某些实现中,这些设备可以直接焊接到主板中,以提供较低剖面的解决方案,而在其他实现中,设备可以被配置为一个或多个存储器模块,这些存储器模块又可以通过给定连接器耦合到主板。其他存储器实现也是可以的,诸如其他类型的存储器模块,例如,不同的双列直插存储器模块(DIMM),包括但不限于microDIMM、MiniDIMM。在一个说明性示例中,存储器的大小在2GB和16GB之间,并可被配置成DDR3LM封装或LPDDR2或LPDDR3存储器,其通过球栅阵列(BGA)焊接到主板中。
为提供诸如数据、应用、一个或多个操作系统等信息的持久性存储,大容量存储器1620还可以耦合到处理器1610。在某些实现中,为实现较薄的和较轻的系统设计以及改善系统响应性,大容量存储器1620可以通过SSD来实现。在其他实现中,大容量存储器可以主要通过带有较小量的SSD存储器的硬盘驱动器(HDD)来实现,以充当SSD缓存,以在断电情况下实现上下文状态及其他这样的信息的非易失性存储,以便在系统活动的重新启动时可以进行快速的通电。
也如图10所示出的,闪存设备1622可以例如通过串行外围接口(SPI)耦合到处理器1610。闪存设备1622可以提供系统软件的非易失性存储器,包括基本输入/输出软件(BIOS)以及系统的其他固件。
在各实现中,系统的大容量存储器可以通过SSD单独地提供或作为带有SSD缓存的磁盘、光学或其他驱动器来提供。在某些实现中,大容量存储器可以通过SSD来提供或作为与恢复(RST)缓存模块一起的HDD来提供。SSD缓存可被配置成单级缓存(SLC)或多级缓存(MLC)选项,以提供响应性的合适的级别。
各种输入/输出(IO)设备可以存在于系统1600内,包括例如可以通过在机架的盖子部分内配置的高清晰度LCD或LED面板提供的显示器1624。此显示器面板还可以提供触摸屏1625,其在显示器面板上方从外部适应,以便通过用户与此触摸屏的交互,用户输入可以被提供到系统,以实现所需操作,例如,关于信息显示,访问信息等等。在某些实现中,显示器1624可以通过显示器互连耦合到处理器1610,该显示器互连可被实现为高性能图形互连。触摸屏1625可以通过另一互连(在一个实施例中,可以是I2C互连)耦合到处理器1610。除触摸屏1625之外,经由触摸的用户输入也可以通过触摸板1630进行,触摸板1630可以在机架内配置,还可以与触摸屏1625耦合到相同I2C互连。
各种传感器可以存在于系统内,并可以以不同的方式耦合到处理器1610。某些惯性和环境传感器可以通过传感器中枢1640,例如通过I2C互连耦合到处理器1610。这些传感器可以包括加速度计1641、环境光传感器(ALS)1642、罗盘1643以及陀螺仪1644。其他环境传感器可以包括一个或多个热传感器1646,在某些实施例中,这些热传感器1646可以通过系统管理总线(SMBus)总线耦合到处理器1610。在某些实现中,也可以存在一个或多个红外线或其他热量感应元件,或用于感应用户的存在或移动的任何其他元件。
各种外围设备可以通过低管脚数(LPC)互连耦合到处理器1610。在某些实现中,各种组件可以通过嵌入式控制器1635耦合。这样的组件可包括键盘1636(例如,通过PS2接口耦合)、风扇1637以及热传感器1639。在某些实施例中,触摸板1630还可以通过PS2接口耦合到EC 1635。另外,符合可信计算组(TCG)TPM规范版本1.2(2003年10月2日)的安全性处理器,诸如可信平台模块(TPM)1638,也可以通过此LPC互连,耦合到处理器1610。
在某些实现中,外围端口可以包括高清晰度媒体接口(HDMI)连接器(可以是不同的形状因子,诸如全尺寸、小型或微型);一个或多个USB端口,诸如符合通用串行总线修订版3.0规范(2008年11月)的全尺寸外部端口,当系统处于"连接待机"状态并插入到AC墙上电源时,至少一个通电,用于对USB设备(诸如智能电话)充电。另外,可提供一个或多个ThunderboltTM端口。其他端口可以包括可被从外部访问的读卡器,诸如全尺寸SD-XC读卡器和/或用于WWAN的SIM读卡器(例如,8针脚读卡器)。对于音频,可以存在带有立体声音和话筒功能(例如,组合功能)的3.5mm插孔,带有对于插孔检测的支持(例如,只支持使用盖子中的话筒的耳机或在电缆中带有话筒的耳机)。在某些实施例中,此插孔可以在立体声耳机和立体声话筒输入之间重新定任务。此外,还可以提供用于耦合到AC块(brick)的电源插孔。
系统1600可以以各种方式,包括以无线方式,与外部设备进行通信。在图16所示出的实施例中,存在各种无线模块,每一个无线模块都可以对应于为特定无线通信协议配置的无线电。用于在近距离(诸如近场)内进行无线通信的一种方式可以通过近场通信(NFC)单元1645,在一个实施例中,该单元1645可以通过SMBus与处理器1610进行通信。
额外的无线单元可包括其他近距离无线引擎,包括WLAN单元1650和蓝牙单元1652。通过使用WLAN单元1650,可以实现符合给定电气与电子工程师学会(IEEE)802.11标准的Wi-FiTM通信,而通过蓝牙单元1652,可以进行通过蓝牙协议的近距离通信。这些单元可以通过例如USB链路或通用异步收发器(UART)链路,与处理器1610进行通信。或者,这些单元可以通过符合外围组件互连ExpressTM(PCIeTM)协议的互连,例如,符合PCI ExpressTM规范Base规范版本3.0(2007年1月17日),或另一这样的协议,诸如串行数据输入/输出(SDIO)标准,耦合到处理器1610。当然,可以在一个或多个插入式卡上配置的这些外围设备之间的实际物理连接,可以通过适用于主板的NGFF连接器。
另外,无线广域通信(例如,符合蜂窝式或其他无线广域协议)可以通过WWAN单元1656进行,该WWAN单元1656又可以耦合到用户身份模块(SIM)1657。另外,为允许接收并使用位置信息,还可以存在GPS模块1655。
为提供音频输入和输出,可以通过数字信号处理器(DSP)1660来实现音频处理器,DSP 1660可以通过高清晰度音频(HDA)链路来耦合到处理器1610。类似地,DSP 1660可以与集成的编码器/解码器(CODEC)和放大器1662进行通信,放大器1662又可以耦合到可以在机架内实现的输出扬声器1663。类似地,放大器和编解码器1662可以耦合,以从话筒1665接收音频输入。
图11描绘了根据本公开的一个或多个方面的示例芯片上系统(SoC)的框图。作为特定说明性示例,SOC 1700可以被包括在用户设备(UE)中。在一个实施例中,UE是指被最终用户用来进行通信的任何设备,诸如手持式电话、智能电话、平板电脑、超薄型的笔记本、带有宽带适配器的笔记本或任何其他类似的通信设备。UE常常连接到基站或节点,该基站或节点潜在地本质上对应于GSM网络中的移动站(MS)。
如由图11所示意地示出的,SOC 1700可以包括两个核。核1706和1707可以耦合到与总线接口单元1709和L2缓存1710相关联的缓存控件1708,以与系统1700的其他部分进行通信。互连1710可以包括芯片内互连,诸如IOSF、AMBA或其他互连。
接口1710可以提供到其他组件的通信信道,其他组件诸如与SIM卡连接的用户标识模块(SIM)1730、保存供核1706和1707执行以初始化和引导SOC 1700的引导代码的引导ROM 1735、与外部存储器(例如,DRAM 1760)连接的SDRAM控制器1740、与非易失性存储器(例如,闪存1765)连接的闪存控制器1745、与外围设备连接的外围控制器1550(例如,串行外围接口)、显示和接收输入(允许触摸的输入)的视频编解码器1720和视频接口1725、用于执行图形相关的计算的GPU 1715等等。另外,系统还可以包括用于通信的外围设备,诸如蓝牙模块1770、3G调制解调器1775、GPS 1785以及Wi-Fi 1785。
其他计算机系统设计和配置也可以适于实现此处所描述的系统和方法。下列示例示出了符合本公开的一个或多个方面的各种实现。
示例1是处理系统,包括:执行与第一特权级别相关联的第一应用以及与第二特权级别相关联的第二应用的处理核,其特征在于,与所述第一特权级别相关联的第一组特权包括与所述第二特权级别相关联的第二组特权;以及,地址验证组件,所述地址验证组件,考虑到由所述第一应用维护的地址转换数据结构,验证在所述第二应用的第一地址空间中定义的第一地址与所述第二应用的第二地址空间中的定义的第二地址的映射。
示例2示例1的处理系统,其特征在于,所述地址转换数据结构的条目包括对于由所述条目引用的存储器位置的存储器访问准许。
示例3是示例1-2中的任一示例的处理系统,进一步包括存储地址转换数据结构的基本地址的寄存器。
示例4是示例1-3中的任一示例的处理系统,其特征在于,第一应用是由虚拟机管理器所提供的,第二应用是由虚拟机所提供的。
示例5是示例4的处理系统,其特征在于,第一地址是由客户虚拟地址所提供的,第二地址是由在虚拟机的地址空间中定义的客户物理地址所提供的。
示例6是示例4-5中的任一示例的处理系统,进一步包括:第二级别地址转换(SLAT)表,所述SLAT表包括在所述虚拟机的地址空间中定义的客户物理地址与在所述处理系统的物理地址空间中定义的主机物理地址的多个映射。
示例7是示例4-6中的任一示例的处理系统,进一步包括:转换后援缓冲器(TLB),用于缓存在所述虚拟机的地址空间中定义的客户虚拟地址与在所述处理系统的物理地址空间中定义的主机物理地址的多个映射。
示例8是示例7的处理系统,其特征在于,地址验证组件将响应于检测到相对于所述客户虚拟地址的TLB漏失,由页漏失处理程序(PMH)调用。
示例9是示例7-8中的任一示例的处理系统,其特征在于,页漏失处理程序进一步:响应于判断由所述虚拟机确定的临时客户物理地址匹配由所述第二地址所表示的预期的客户物理地址,确定对应于所述试探性客户物理地址的主机物理地址;以及,利用所述客户虚拟地址与所述主机物理地址的映射,更新所述TLB。
示例10是示例8-9中的任一示例的处理系统,其特征在于,页漏失处理程序进一步:响应于判断由所述虚拟机确定的试探性客户物理地址不同于由所述第二地址所表示的所述预期的客户物理地址,发出虚拟机退出信号。
示例11是示例8-10中的任一示例的处理系统,其特征在于,页漏失处理程序进一步:响应于判断在所述地址转换数据结构中没有发现与所述客户虚拟地址相关联的条目,确定对应于由所述虚拟机确定的试探性客户物理地址的主机物理地址;以及,利用所述客户虚拟地址与所述主机物理地址的映射,更新所述TLB。
示例12是示例4-11的处理系统,其特征在于,所述地址转换数据结构利用下列各项之一填充:所述虚拟机管理器或由所述虚拟机执行的委托代理。
示例13是一种方法,包括:由计算机系统的页漏失处理程序,接收与由所述虚拟机管理器管理的虚拟机作出的存储器访问操作相关联的客户虚拟地址;接收对应于所述客户虚拟地址的试探性客户物理地址;以及,考虑到地址转换数据结构,确定对应于所述客户虚拟地址的预期的客户物理地址。
示例14是示例13的方法,进一步包括:响应于判断所述试探性客户物理地址匹配所述预期的客户物理地址,确定对应于所述试探性客户物理地址的主机物理地址;以及,利用所述客户虚拟地址与所述主机物理地址的映射,更新转换后援缓冲器(TLB)。
示例15是示例13-14中的任一示例的方法,进一步包括:响应于判断所述试探性客户物理地址不同于所述预期的客户物理地址,发出虚拟机退出信号。
示例16是示例13-15中的任一示例的方法,进一步包括:响应于判断在所述地址转换数据结构中没有发现与所述客户虚拟地址相关联的条目,确定对应于由所述虚拟机确定的试探性客户物理地址的主机物理地址;以及,利用所述客户虚拟地址与所述主机物理地址的映射,更新转换后援缓冲器(TLB)。
示例17是示例13-16中的任一示例的方法,进一步包括:考虑到下列各项之一,更新所述地址转换数据结构:由虚拟机管理器维护的存储器映射策略或从所述虚拟机接收到的消息。
示例18是示例13-17中的任一示例的方法,进一步包括:考虑到所述地址转换数据结构的存储器访问准许字段,验证所述存储器访问操作。
示例19是一种设备,包括:存储器;以及,耦合到所述存储器的处理系统,所述处理系统用于执行如示例13-18中的任一示例所述的方法。
示例20是一种片上系统(SoC),包括:存储器;耦合到所述存储器的处理核,所述处理核执行与第一特权级别相关联的第一应用和与第二特权级别相关联的第二应用,其特征在于,与所述第一特权级别相关联的第一组特权包括与所述第二特权级别相关联的第二组特权;以及,地址验证组件,所述地址验证组件,考虑到由所述第一应用维护的地址转换数据结构,验证在所述第二应用的第一地址空间中定义的第一地址与所述第二应用的第二地址空间中的定义的第二地址的映射。
示例21是示例20的SoC,其特征在于,第一应用是由虚拟机管理器所提供的,第二应用是由虚拟机所提供的。
示例22是示例21的SoC,其特征在于,第一地址是由客户虚拟地址所提供的,第二地址是由在虚拟机的地址空间中定义的客户物理地址所提供的。
示例23是示例21-22中的任一示例的SoC,进一步包括:第二级别地址转换(SLAT)表,所述SLAT表包括在所述虚拟机的地址空间中定义的客户物理地址与在所述处理系统的物理地址空间中定义的主机物理地址的多个映射。
示例24是示例21-23中的任一示例的SoC,进一步包括:转换后援缓冲器(TLB),用于缓存在所述虚拟机的地址空间中定义的客户虚拟地址与在所述处理系统的物理地址空间中定义的主机物理地址的多个映射。
示例25是示例24的SoC,其特征在于,地址验证组件将响应于检测到相对于所述客户虚拟地址的TLB漏失,由页漏失处理程序(PMH)调用。
示例26是示例24-25中的任一示例的SoC,其特征在于,页漏失处理程序进一步:响应于判断由所述虚拟机确定的试探性客户物理地址匹配由所述第二地址所表示的预期的客户物理地址,确定对应于所述试探性客户物理地址的主机物理地址;以及,利用所述客户虚拟地址与所述主机物理地址的映射,更新所述TLB。
示例27是示例25-26中的任一示例的SoC,其特征在于,页漏失处理程序进一步:响应于判断由所述虚拟机确定的试探性客户物理地址不同于由所述第二地址所表示的所述预期的客户物理地址,发出虚拟机退出信号。
示例28是示例25-27中的任一示例的SoC,其特征在于,页漏失处理程序进一步:响应于判断在所述地址转换数据结构中没有发现与所述客户虚拟地址相关联的条目,确定对应于由所述虚拟机确定的试探性客户物理地址的主机物理地址;以及,利用所述客户虚拟地址与所述主机物理地址的映射,更新所述TLB。
示例29是示例21-28中的任一示例的SoC,其特征在于,所述地址转换数据结构利用下列各项之一填充:所述虚拟机管理器或由所述虚拟机执行的委托代理。
示例30是包括可执行指令的计算机可读取的非瞬时的存储介质,可执行指令当由处理系统执行时使处理系统执行下列操作,包括:由计算机系统的页漏失处理程序,接收与由所述虚拟机管理器管理的虚拟机作出的存储器访问操作相关联的客户虚拟地址;接收对应于所述客户虚拟地址的试探性客户物理地址;以及,考虑到地址转换数据结构,确定对应于所述客户虚拟地址的预期的客户物理地址。
示例31是示例30的计算机可读存储介质,进一步包括可执行指令,所述指令在由处理系统执行时使所述处理系统执行操作,包括:响应于判断所述试探性客户物理地址匹配所述预期的客户物理地址,确定对应于所述试探性客户物理地址的主机物理地址;以及,利用所述客户虚拟地址与所述主机物理地址的映射,更新转换后援缓冲器(TLB)。
示例32是示例30-31中的任一示例的计算机可读存储介质,进一步包括可执行指令,所述指令在由处理系统执行时使所述处理系统执行操作,包括:响应于判断所述试探性客户物理地址不同于所述预期的客户物理地址,发出虚拟机退出信号。
示例33是示例30-32中的任一示例的计算机可读存储介质,进一步包括可执行指令,所述指令在由处理系统执行时使所述处理系统执行操作,包括:响应于判断在所述地址转换数据结构中没有发现与所述客户虚拟地址相关联的条目,确定对应于由所述虚拟机确定的试探性客户物理地址的主机物理地址;以及,利用所述客户虚拟地址与所述主机物理地址的映射,更新转换后援缓冲器(TLB)。
示例34是示例30-33中的任一示例的计算机可读存储介质,进一步包括可执行指令,所述指令在由处理系统执行时使所述处理系统执行操作,包括:考虑到下列各项之一,更新所述地址转换数据结构:由虚拟机管理器维护的存储器映射策略或从所述虚拟机接收到的消息。
示例35是示例30-34中的任一示例的计算机可读存储介质,进一步包括可执行指令,所述指令在由处理系统执行时使所述处理系统执行操作,包括:考虑到所述地址转换数据结构的存储器访问准许字段,验证所述存储器访问操作。
详细描述的某些内容部分以算法、和对计算机存储器内的数据位的操作的符号表示法的形式存在。这些算法描述和表示是数据处理领域内技术人员使用的手法,它最有效地将其工作本质传达给本领域内其它技术人员。算法在本文中被一般地构思成达到所要求结果的自洽步骤序列。这些操作是需要对物理量进行物理操控的操作。通常但非必须,这些量采用能被存储、传输、组合、比较、以及以其他方式操控的电信号或磁信号的形式。主要出于常见用途的考虑,将这些信号称为位、值、要素、符号、字符、项、数字等被证明是方便的。
然而,应当记住,所有这些和/或类似的术语用于与适当的物理量关联,并且仅仅是应用于这些量的方便的标记。除非具体说明否则,如从以下讨论所显而易见的,应意识到,贯穿说明书使用诸如“加密”、“解密”、“存储”、“提供”、“推导”、“获得”、“接收”、“认证”、“删除”、“执行”、“请求”、“通信”等术语的讨论指的是计算机系统或类似的电子计算设备的动作和进程,它们将计算机系统寄存器和存储器内表示为物理(例如,电子)量的数据处理和/或变换成计算机系统存储器、寄存器或其他这种信息存储、传输或显示设备内类似地表示为物理量的其他数据。
在此可使用词语“示例”或“示例性”意指用作示例、实例或说明。在此被描述为“示例”或“示例性”的任何方面或设计并不一定要被解释为相比其它方面或设计更优选或有利。相反,使用词语“示例”或“示例性”旨在以具体的方式呈现各个概念。如在该申请中使用的,术语“或”旨在表示包含的“或”,而不是排它的“或”。也就是说,除非根据上下文另有指定或显而易见,否则“X包括A或B”旨在表示任何自然包含性置换。即,如果X包括用A;X包括B;或X包括A和B两者;则在任何前述实例下满足“X包括A或B。”此外,该申请和所附权利要求中使用的冠词“一”和“一个”一般应当被解释为表示一个或多个摂,除非根据上下文另有规定或明确指示为单数形式。此外,术语“实施例”或“一个实施例”或“实现”或“一个实现”不旨在意指同一个实施例或实现,除非这样描述。此外,如此处所使用的术语“第一”、“第二”、“第三”、“第四”等等旨在用作区别不同的元件的标记,可以不一定具有根据它们的数字表示的序数含义。
此处所描述的各实施例还可以涉及用于执行此处的操作的设备。此装置可专门构造来用于所需目的,或其可包括通用计算机,该通用计算机由存储在该计算机内的计算机程序有选择地激活或重新配置。这样的计算机程序可以存储在非瞬时的计算机可读取的存储介质上,诸如,但不仅限于,任何类型的磁(光)盘,包括软盘、光盘、CD-ROM,以及磁性光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,闪存,或适于存储电子指令的任何类型的介质。术语“计算机可读取的存储介质”应该被视为包括存储一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的缓存和服务器)。术语“计算机可读介质”还应该被视为包括能够存储、编码或携带由机器执行的一组指令并且使机器执行各实施例的方法中的任何一个或多个的任何介质。术语“计算机可读取的存储介质”相应地应该被视为包括,但不局限于,固态存储器、光学介质、磁性介质,能够存储由机器执行的一组指令并且使机器执行各实施例的方法中的任何一个或多个的任何介质。
本文呈现的算法及显示并非固有地与任何特定计算机或其它装置相关。可以将各种通用系统与根据本文教导的程序一起使用,或可以证明构造更专门的装置来实现所要求的方法步骤是方便的。各种这些系统的所需结构将从本申请中的描述中呈现。另外,不参考任何特定编程语言来描述实施例。将会理解,可使用多种编程语言来实现本文描述的实施例的教导。
上面的描述阐述了诸如特定系统、组件、方法等等的示例之类的很多具体细节,以便提供对多个实施例的更全面的理解。然而,对本领域技术人员将显而易见的是,没有这些具体细节也可实施至少某些实施例。在其他情况下,没有详细示出或以简单框图格式来呈现已知的组件或方法,以便避免对各实施例造成不必要的模糊。如此,上文阐述的具体细节只是示例性的。特定实现可能不同于这些示例性细节,仍在各实施例的范围内。
应当理解,以上描述旨在是说明性的而非限制性的。在阅读并理解以上描述之后,许多其它实施方式对本领域内技术人员而言将是显而易见的。因此,实施例的范围应参考所附权利要求书以及使这些权利要求享有权利的等效方案的完全范围来确定。

Claims (30)

1.一种处理系统,包括:
处理核,用于执行与第一特权级别相关联的第一应用以及与第二特权级别相关联的第二应用,其中与所述第一特权级别相关联的第一组特权包括与所述第二特权级别相关联的第二组特权,其中,所述第一应用是由虚拟机管理器所提供的,所述第二应用是由虚拟机所提供的;以及
地址验证组件,所述地址验证组件用于:
考虑到由所述第一应用维护的地址转换数据结构,验证在所述第二应用的第一地址空间中定义的第一地址到所述第二应用的第二地址空间中的定义的第二地址的映射;以及
响应于基于页表条目所包含的标志的值判断需要地址验证数据结构的条目,发出退出所述第二应用的信号。
2.如权利要求1所述的处理系统,其特征在于,所述地址转换数据结构的条目包括对于由所述条目引用的存储器位置的存储器访问准许。
3.如权利要求1所述的处理系统,进一步包括存储所述地址转换数据结构的基本地址的寄存器。
4.如权利要求1所述的处理系统,其特征在于,所述第一地址是由客户虚拟地址所提供的,所述第二地址是由在所述虚拟机的地址空间中定义的客户物理地址所提供的。
5.如权利要求4所述的处理系统,其特征在于,进一步包括:
第二级别地址转换SLAT表,所述SLAT表包括在所述虚拟机的地址空间中定义的客户物理地址到在所述处理系统的物理地址空间中定义的主机物理地址的多个映射。
6.如权利要求4所述的处理系统,其特征在于,进一步包括:
转换后援缓冲器TLB,用于缓存在所述虚拟机的地址空间中定义的客户虚拟地址到在所述处理系统的物理地址空间中定义的主机物理地址的多个映射。
7.如权利要求6所述的处理系统,其特征在于,所述地址验证组件将响应于检测到相对于所述客户虚拟地址的TLB未命中,由页未命中处理程序PMH调用。
8.如权利要求7所述的处理系统,其特征在于,所述页未命中处理程序进一步用于:
响应于判断由所述虚拟机确定的试探性客户物理地址匹配由所述第二地址所表示的预期的客户物理地址,确定对应于所述试探性客户物理地址的主机物理地址;以及
利用所述客户虚拟地址到所述主机物理地址的映射,更新所述TLB。
9.如权利要求7所述的处理系统,其特征在于,所述页未命中处理程序进一步用于:
响应于判断由所述虚拟机确定的试探性客户物理地址不同于由所述第二地址所表示的预期的客户物理地址,发出虚拟机退出信号。
10.如权利要求7所述的处理系统,其特征在于,所述页未命中处理程序进一步用于:
响应于判断在所述地址转换数据结构中没有发现与所述客户虚拟地址相关联的条目,确定对应于由所述虚拟机确定的试探性客户物理地址的主机物理地址;以及
利用所述客户虚拟地址到所述主机物理地址的映射,更新所述TLB。
11.如权利要求1所述的处理系统,其特征在于,所述地址转换数据结构利用下列各项之一填充:所述虚拟机管理器或由所述虚拟机执行的委托代理。
12.一种处理方法,包括:
由计算机系统的页未命中处理程序,接收与由虚拟机管理器管理的虚拟机作出的存储器访问操作相关联的客户虚拟地址;
接收对应于所述客户虚拟地址的试探性客户物理地址;
考虑到地址转换数据结构,确定对应于所述客户虚拟地址的预期的客户物理地址;以及
响应于基于页表条目所包含的标志的值判断需要地址验证数据结构的条目,发出退出所述虚拟机的信号。
13.如权利要求12所述的处理方法,其特征在于,进一步包括:
响应于判断所述试探性客户物理地址匹配所述预期的客户物理地址,确定对应于所述试探性客户物理地址的主机物理地址;以及
利用所述客户虚拟地址到所述主机物理地址的映射,更新转换后援缓冲器TLB。
14.如权利要求12所述的处理方法,其特征在于,进一步包括:
响应于判断所述试探性客户物理地址不同于所述预期的客户物理地址,发出虚拟机退出信号。
15.如权利要求12所述的处理方法,其特征在于,进一步包括:
响应于判断在所述地址转换数据结构中没有发现与所述客户虚拟地址相关联的条目,确定对应于由所述虚拟机确定的试探性客户物理地址的主机物理地址;以及
利用所述客户虚拟地址与所述主机物理地址的映射,更新转换后援缓冲器TLB。
16.如权利要求12所述的处理方法,其特征在于,进一步包括:
考虑到下列各项之一,更新所述地址转换数据结构:由虚拟机管理器维护的存储器映射策略或从所述虚拟机接收到的消息。
17.如权利要求12所述的处理方法,其特征在于,进一步包括:考虑到所述地址转换数据结构的存储器访问准许字段,验证所述存储器访问操作。
18.一种处理装置,包括:
存储器;以及
处理系统,耦合到所述存储器,所述处理系统用于执行如权利要求12-17中的任何一项所述的处理方法。
19.一种片上系统SoC,包括:
存储器;
处理核,耦合到所述存储器,所述处理核用于执行与第一特权级别相关联的第一应用和与第二特权级别相关联的第二应用,其中,与所述第一特权级别相关联的第一组特权包括与所述第二特权级别相关联的第二组特权,所述第一应用是由虚拟机管理器所提供的,所述第二应用是由虚拟机所提供的;以及
地址验证组件,所述地址验证组件用于:
考虑到由所述第一应用维护的地址转换数据结构,验证在所述第二应用的第一地址空间中定义的第一地址到所述第二应用的第二地址空间中的定义的第二地址的映射;以及
响应于基于页表条目所包含的标志的值判断需要地址验证数据结构的条目,发出退出所述第二应用的信号。
20.如权利要求19所述的SoC,其特征在于,所述第一地址是由客户虚拟地址所提供的,所述第二地址是由在所述虚拟机的地址空间中定义的客户物理地址所提供的。
21.如权利要求20所述的SoC,其特征在于,还包括:
第二级别地址转换SLAT表,所述SLAT表包括在所述虚拟机的地址空间中定义的客户物理地址到在所述SoC的物理地址空间中定义的主机物理地址的多个映射。
22.如权利要求20所述的SoC,其特征在于,还包括:
转换后援缓冲器TLB,用于缓存在所述虚拟机的地址空间中定义的客户虚拟地址到在所述SoC的物理地址空间中定义的主机物理地址的多个映射。
23.如权利要求22所述的SoC,其特征在于,响应于检测到相对于所述客户虚拟地址的TLB漏失,由页未命中处理程序PMH调用所述地址验证组件。
24.一种计算机可读介质,包括存储于其上的多条指令,所述多条指令当被执行时使计算设备执行如权利要求12-17中的任一项所述的处理方法。
25.一种处理设备,包括:
用于由计算机系统的页未命中处理程序接收与由虚拟机管理器管理的虚拟机作出的存储器访问操作相关联的客户虚拟地址的装置;
用于接收对应于所述客户虚拟地址的试探性客户物理地址的装置;
用于考虑到地址转换数据结构而确定对应于所述客户虚拟地址的预期的客户物理地址的装置;以及
用于响应于基于页表条目所包含的标志的值判断需要地址验证数据结构的条目而发出退出所述虚拟机的信号的装置。
26.如权利要求25所述的处理设备,其特征在于,进一步包括:
用于响应于判断所述试探性客户物理地址匹配所述预期的客户物理地址而确定对应于所述试探性客户物理地址的主机物理地址的装置;以及
用于利用所述客户虚拟地址到所述主机物理地址的映射来更新转换后援缓冲器TLB的装置。
27.如权利要求25所述的处理设备,其特征在于,进一步包括:
用于响应于判断所述试探性客户物理地址不同于所述预期的客户物理地址而发出虚拟机退出信号的装置。
28.如权利要求25所述的处理设备,其特征在于,进一步包括:
用于响应于判断在所述地址转换数据结构中没有发现与所述客户虚拟地址相关联的条目而确定对应于由所述虚拟机确定的试探性客户物理地址的主机物理地址的装置;以及
用于利用所述客户虚拟地址与所述主机物理地址的映射来更新转换后援缓冲器TLB的装置。
29.如权利要求25所述的处理设备,其特征在于,进一步包括:
用于考虑到下列各项之一而更新所述地址转换数据结构的装置:由虚拟机管理器维护的存储器映射策略或从所述虚拟机接收到的消息。
30.如权利要求25所述的处理设备,其特征在于,进一步包括:用于考虑到所述地址转换数据结构的存储器访问准许字段而验证所述存储器访问操作的装置。
CN201510278960.9A 2014-06-27 2015-05-27 验证虚拟地址转换 Active CN105320612B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/317,571 US9792222B2 (en) 2014-06-27 2014-06-27 Validating virtual address translation by virtual machine monitor utilizing address validation structure to validate tentative guest physical address and aborting based on flag in extended page table requiring an expected guest physical address in the address validation structure
US14/317,571 2014-06-27

Publications (2)

Publication Number Publication Date
CN105320612A CN105320612A (zh) 2016-02-10
CN105320612B true CN105320612B (zh) 2019-04-30

Family

ID=53540950

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510278960.9A Active CN105320612B (zh) 2014-06-27 2015-05-27 验证虚拟地址转换

Country Status (4)

Country Link
US (1) US9792222B2 (zh)
CN (1) CN105320612B (zh)
GB (2) GB2545563B (zh)
TW (1) TWI578221B (zh)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10152612B2 (en) 2015-09-25 2018-12-11 Intel Corporation Cryptographic operations for secure page mapping in a virtual machine environment
US10003554B1 (en) 2015-12-22 2018-06-19 Amazon Technologies, Inc. Assisted sideband traffic management
US10572687B2 (en) * 2016-04-18 2020-02-25 America as represented by the Secretary of the Army Computer security framework and hardware level computer security in an operating system friendly microprocessor architecture
US10579522B2 (en) * 2016-09-13 2020-03-03 Andes Technology Corporation Method and device for accessing a cache memory
US9971702B1 (en) * 2016-10-24 2018-05-15 Intel Corporation Nested exception handling
US10339065B2 (en) * 2016-12-01 2019-07-02 Ampere Computing Llc Optimizing memory mapping(s) associated with network nodes
US10169185B1 (en) 2017-08-12 2019-01-01 International Business Machines Corporation Efficient testing of direct memory address translation
US10671737B2 (en) * 2017-11-10 2020-06-02 Intel Corporation Cryptographic memory ownership table for secure public cloud
US10719452B2 (en) * 2018-06-22 2020-07-21 Xilinx, Inc. Hardware-based virtual-to-physical address translation for programmable logic masters in a system on chip
US10901911B2 (en) 2018-11-21 2021-01-26 Microsoft Technology Licensing, Llc Faster computer memory access by reducing SLAT fragmentation
US10761876B2 (en) * 2018-11-21 2020-09-01 Microsoft Technology Licensing, Llc Faster access of virtual machine memory backed by a host computing device's virtual memory
US10922185B2 (en) * 2019-02-19 2021-02-16 Google Llc I/O to unpinned memory supporting memory overcommit and live migration of virtual machines
US11455398B2 (en) 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment
US11283800B2 (en) 2019-03-08 2022-03-22 International Business Machines Corporation Secure interface control secure storage hardware tagging
US11176054B2 (en) * 2019-03-08 2021-11-16 International Business Machines Corporation Host virtual address space for secure interface control storage
US11068310B2 (en) 2019-03-08 2021-07-20 International Business Machines Corporation Secure storage query and donation
US11531627B2 (en) 2019-03-08 2022-12-20 International Business Machines Corporation Secure storage isolation
US11640361B2 (en) * 2019-03-08 2023-05-02 International Business Machines Corporation Sharing secure memory across multiple security domains
US11487906B2 (en) 2019-03-08 2022-11-01 International Business Machines Corporation Storage sharing between a secure domain and a non-secure entity
US11182192B2 (en) 2019-03-08 2021-11-23 International Business Machines Corporation Controlling access to secure storage of a virtual machine
CN112540938A (zh) * 2019-09-20 2021-03-23 阿里巴巴集团控股有限公司 处理器核、处理器、装置和方法
US11531770B2 (en) * 2019-12-23 2022-12-20 Intel Corporation Trusted local memory management in a virtualized GPU
TWI804703B (zh) * 2019-12-31 2023-06-11 新唐科技股份有限公司 電腦裝置及基於信任鏈的權限管理方法
CN112073530B (zh) * 2020-09-15 2021-10-15 常熟理工学院 一种基于物联网的智能医疗监测和报警系统的实现方法
US11644980B2 (en) * 2021-06-22 2023-05-09 Intel Corporation Trusted memory sharing mechanism
US11899593B2 (en) * 2021-12-21 2024-02-13 Intel Corporation Method and apparatus for detecting ATS-based DMA attack
CN117077589B (zh) * 2023-10-17 2023-12-15 中电科申泰信息科技有限公司 基于uvm架构的虚拟和物理地址转换的验证方法和系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6785886B1 (en) * 1998-05-15 2004-08-31 Vmware, Inc. Deferred shadowing of segment descriptors in a virtual machine monitor for a segmented computer architecture
US8015388B1 (en) * 2006-08-04 2011-09-06 Vmware, Inc. Bypassing guest page table walk for shadow page table entries not present in guest page table

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5396614A (en) * 1992-06-25 1995-03-07 Sun Microsystems, Inc. Method and apparatus for a secure protocol for virtual memory managers that use memory objects
US5455834A (en) * 1993-06-14 1995-10-03 Hal Computer Systems, Inc. Fault tolerant address translation method and system
US7757231B2 (en) * 2004-12-10 2010-07-13 Intel Corporation System and method to deprivilege components of a virtual machine monitor
US9058292B2 (en) 2004-12-29 2015-06-16 Intel Corporation System and method for one step address translation of graphics addresses in virtualization
US7428626B2 (en) 2005-03-08 2008-09-23 Microsoft Corporation Method and system for a second level address translation in a virtual machine environment
US7467285B2 (en) * 2005-07-27 2008-12-16 Intel Corporation Maintaining shadow page tables in a sequestered memory region
US7739466B2 (en) * 2006-08-11 2010-06-15 Intel Corporation Method and apparatus for supporting immutable memory
US7490191B2 (en) 2006-09-22 2009-02-10 Intel Corporation Sharing information between guests in a virtual machine environment
US8276201B2 (en) * 2007-03-22 2012-09-25 International Business Machines Corporation Integrity protection in data processing systems
EP1978447B1 (en) * 2007-04-05 2011-02-16 STMicroelectronics (Research & Development) Limited Integrated circuit with restricted data access
WO2009001153A1 (en) 2007-06-28 2008-12-31 Nokia Corporation Memory protection unit in a virtual processing environment
US8078827B2 (en) 2007-07-05 2011-12-13 International Business Machines Corporation Method and apparatus for caching of page translations for virtual machines
US8560806B2 (en) 2007-12-31 2013-10-15 Intel Corporation Using a multiple stage memory address translation structure to manage protected micro-contexts
US8099541B2 (en) * 2008-01-22 2012-01-17 Globalfoundries Inc. Minivisor entry point in virtual machine monitor address space
US20140108701A1 (en) 2010-07-16 2014-04-17 Memory Technologies Llc Memory protection unit in a virtual processing environment
WO2012025793A1 (en) 2010-08-26 2012-03-01 Freescale Semiconductor, Inc. Memory management unit for a microprocessor system, microprocessor system and method for managing memory
US8694738B2 (en) * 2011-10-11 2014-04-08 Mcafee, Inc. System and method for critical address space protection in a hypervisor environment
TWI444824B (zh) 2011-10-18 2014-07-11 Ind Tech Res Inst 虛擬機器記憶體的鑑識方法與電腦系統
US8893125B2 (en) 2011-11-18 2014-11-18 Broadcom Corporation Network port profile deployment in a pre-provisioned or dynamically provisioned network infrastructure
US9317441B2 (en) 2011-12-22 2016-04-19 Intel Cororation Indexed page address translation to reduce memory footprint in virtualized environments
WO2013101208A1 (en) 2011-12-30 2013-07-04 Intel Corporation Hardware enforced memory access permissions
US9128843B2 (en) 2012-10-11 2015-09-08 Industrial Technology Research Institute Method and computer system for memory management on virtual machine system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6785886B1 (en) * 1998-05-15 2004-08-31 Vmware, Inc. Deferred shadowing of segment descriptors in a virtual machine monitor for a segmented computer architecture
US8015388B1 (en) * 2006-08-04 2011-09-06 Vmware, Inc. Bypassing guest page table walk for shadow page table entries not present in guest page table

Also Published As

Publication number Publication date
TWI578221B (zh) 2017-04-11
US9792222B2 (en) 2017-10-17
GB2528756A (en) 2016-02-03
CN105320612A (zh) 2016-02-10
TW201610682A (zh) 2016-03-16
GB2528756B (en) 2017-01-11
US20150378930A1 (en) 2015-12-31
GB2545563A (en) 2017-06-21
GB201509051D0 (en) 2015-07-08
GB2545563B (en) 2018-03-14
GB201620433D0 (en) 2017-01-18

Similar Documents

Publication Publication Date Title
CN105320612B (zh) 验证虚拟地址转换
CN104850777B (zh) 使用认证的清单来实现对多处理器平台的外部确认
CN105184113B (zh) 用于实现安全视频输出路径的硬件辅助虚拟化
CN105264513B (zh) 用于过程返回地址验证的系统和方法
CN104954356B (zh) 保护共享的互连以用于虚拟机
CN105474227B (zh) 安全存储器重新分区
CN108351779B (zh) 用于安全指令执行流水线的指令和逻辑
US9501668B2 (en) Secure video ouput path
CN108388528A (zh) 基于硬件的虚拟机通信
CN109960665A (zh) 用于在分页期间逆转页阻止的解除阻止指令
CN106575261A (zh) 受保护的区域中的存储器初始化
CN107683480A (zh) 用于支持对受保护容器的实时迁移的处理器、方法、系统和指令
CN105745630B (zh) 用于在集群宽执行机器中的存储器访问的指令和逻辑
CN107003965A (zh) 向用户级应用传递中断
CN108292215A (zh) 用于加载-索引和预取-聚集操作的指令和逻辑
US9705892B2 (en) Trusted time service for offline mode
CN108139905A (zh) 用于从持久存储器预取信息的指令和逻辑
CN109564552A (zh) 增强基于每页当前特权等级的存储器访问许可
CN107209723A (zh) 用于虚拟化的细粒度地址重新映射
CN108351784A (zh) 用于在乱序处理器中进行有序处理的指令和逻辑
CN108027864A (zh) 经双仿射映射的s-盒硬件加速器
CN108701101A (zh) 处理器系统管理中断事件的基于仲裁器的串行化
CN108351785A (zh) 用于部分减少操作的指令和逻辑
CN108369517A (zh) 聚合分散指令
CN107077421A (zh) 用于页表游走改变位的指令和逻辑

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant