CN112148425A - 信任域架构内的信任域内部的可缩放虚拟机操作 - Google Patents

信任域架构内的信任域内部的可缩放虚拟机操作 Download PDF

Info

Publication number
CN112148425A
CN112148425A CN202010228924.2A CN202010228924A CN112148425A CN 112148425 A CN112148425 A CN 112148425A CN 202010228924 A CN202010228924 A CN 202010228924A CN 112148425 A CN112148425 A CN 112148425A
Authority
CN
China
Prior art keywords
memory
seam
vmm
processor
page
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
Application number
CN202010228924.2A
Other languages
English (en)
Inventor
R·L·萨希塔
T-C·昆古
V·尚伯格
B·E·亨特利
A·艾哈容
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 CN112148425A publication Critical patent/CN112148425A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • 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/45566Nested virtual machines
    • 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/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/45575Starting, stopping, suspending or resuming virtual machine instances
    • 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/45579I/O management, e.g. providing access to device drivers or storage
    • 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
    • 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/45591Monitoring or debugging support
    • 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/45595Network integration; Enabling network access in virtual machine instances

Abstract

本申请公开了信任域架构内的信任域内部的可缩放虚拟机操作。实现方式描述了实现经由处理器的安全仲裁模式(SEAM)而启用的信任域(TD)内部的多个虚拟机的计算系统。处理器包括一个或多个寄存器,用于存储存储器的SEAM范围、TD私有加密密钥的TD密钥标识符。处理器能够初始化用于管理TD的信任域资源管理器(TDRM)、以及用于管理其中的多个虚拟机的TD内的虚拟机监视器。处理器进一步能够将多个存储器页与TD独占地相关联,其中与TD相关联的多个存储器页利用TDRM不可访问的TD私有加密密钥被加密。处理器进一步能够使用TDRM不可访问的存储器的SEAM范围来提供TDRM与多个虚拟机之间的隔离。

Description

信任域架构内的信任域内部的可缩放虚拟机操作
技术领域
本公开涉及计算机系统,并且更具体地涉及使用信任域架构内的计算设备的安全仲裁模式来执行虚拟机。
背景技术
现代处理设备采用盘加密来保护静态的数据。然而,存储器中的数据是明文的且易受攻击。攻击方可使用各种技术,包括基于软件和硬件的总线扫描、存储器扫描、硬件探测等来从存储器检取数据。来自存储器的该数据可包括敏感数据,该敏感数据例如隐私敏感数据、IP敏感数据、用于文件加密或通信的密钥等等。数据的暴露随着将数据和企业工作负载移动到利用由云服务提供方提供的基于虚拟化的托管服务的云中的当前趋势而进一步加剧。
附图说明
图1A是图示示例计算系统的框图,该示例计算系统在启用SEAM的VMX架构中实现信任域内部的虚拟机。
图1B是图示根据一个实现方式的图1A的计算系统的处理器的示例处理器核的框图。
图2A图示处理器模式的示例实现方式,该处理器模式提供对经由安全仲裁模式管理的信任域内部的虚拟机执行的支持。
图2B是描绘对虚拟机控制结构的管理的示例实现方式的框图,该虚拟机控制结构用于在启用SEAM的VMX架构中执行信任域内部的虚拟机。
图3A是描绘对存储器地址空间的管理的示例实现方式的框图,该存储器地址空间可用于启用SEAM的VMX架构中的信任域。
图3B是图示根据一个实现方式的具有对共享或私有存储器页的访问权的信任域内部的存储器事务的框图。
图4A是图示根据一个实现方式的将客户机虚拟地址变换为客户机物理地址以及将客户机物理地址GPA变换为主机物理地址的框图。
图4B是图示根据一个实现方式的使用扩展页表(EPT)将客户机物理地址变换为主机物理地址的框图。
图4C是根据一个实现方式的由SEAM模块针对在信任域内部操作的虚拟机监视器建立的主虚拟机控制结构的框图。
图4D是根据一个实现方式的由SEAM模块针对信任域内部的虚拟机建立的次虚拟机控制结构的框图。
图5A图示在启用SEAM的TD-VMX架构中实现信任域内部的虚拟机的示例方法。
图5B图示在启用SEAM的TD-VMX架构中实现将存储器分派给在信任域内部操作的虚拟机的示例方法。
图6A图示一个示例性实现方式中的用于指令的执行的流程,该指令用于在启用SEAM的TD-VMX架构中创建次虚拟机控制结构。
图6B图示一个示例性实现方式中的用于指令的执行的流程,该指令用于在启用SEAM的TD-VMX架构中授予虚拟机访问存储器页的许可,该存储器页已经被映射以供在信任域内部操作的另一个虚拟机或虚拟机监视器使用。
图6C图示一个示例性实现方式中的用于指令的执行的示例流程,该指令用于在启用SEAM的TD-VMX架构中修改访问由客户机物理地址标识的存储器页的许可,该指令可以由在信任域内部操作的虚拟机监视器唤起。
图6D图示一个示例性实现方式中的用于指令的执行的示例流程,该指令用于在启用SEAM的TD-VMX架构中增强访问由客户机物理地址标识的存储器页的许可,该指令可以由在信任域内部操作的虚拟机监视器唤起。
图6E图示一个示例性实现方式中的用于指令的执行的流程,该指令用于在启用SEAM的TD-VMX架构中从虚拟机移除访问存储器页的许可,该存储器页先前可能已经被映射以供在信任域内部操作的另一个虚拟机或虚拟机监视器使用。
图6F图示一个示例性实现方式中的用于指令的执行的流程,该指令用于在启用SEAM的TD-VMX架构中释放与信任域相关联的存储器页。
图7A是图示用于处理器的微架构的框图,在该微架构中可使用本公开的一个实现方式。
图7B是图示根据本公开的至少一个实现方式而实现的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。
图8图示根据本公开的一个实现方式的用于处理设备的微架构的框图,该处理设备包括用于在启用SEAM的TD-VMX架构中执行信任域内部的虚拟机的逻辑电路。
图9是根据一个实现方式的计算机系统的框图。
图10是根据另一实现方式的计算机系统的框图。
图11是根据一个实现方式的芯片上系统的框图。
图12图示计算系统的框图的另一实现方式。
图13图示计算系统的框图的另一实现方式。
具体实施方式
本公开的各方面涉及作为硬件和软件功能的组合而启用对信任域架构(TDX)内部的虚拟机架构(VMX)的执行。TDX是指令集架构(ISA)的扩展,其允许信任域(TD)内部的安全执行,TD的存储器和逻辑处理器执行状态不可由主机服务器的管理程序/虚拟机监视器(VMM)访问。为了实现对TDX内部的VMX的执行,本公开描述对信任域内部的虚拟机监视器(TD-VMM)的执行以支持其中的虚拟机(TD-VM)。受信任的TD-VMM和不受信任的主机VMM两者的安全操作通过处理器的安全仲裁模式(SEAM)而被促进。SEAM可以利用专用SEAM存储器范围,其与主机VMM的隔离可以由硬件实现。SEAM存储器范围可以托管用于分派给信任域(TD)的存储器的管理的安全扩展页表。
常规云服务器计算和虚拟计算环境为各种设备提供远程计算资源和远程数据存储资源。远程计算和数据存储使保护数据免受未经授权的人员和恶意软件的访问尤为重要。驻留在存储器中的未加密的明文数据以及在存储器与处理器之间移动的数据可能易受扫描攻击。攻击者可以使用各种技术(包括总线扫描、存储器扫描等)从存储器中检取数据。此类数据甚至可以包括用于加密的密钥。相应地,如果存在攻击者或未经授权的软件有可拥有加密密钥的可能性,则即使利用此类密钥加密的数据也不安全。
保护存储器中的数据的一种方式是使用总存储器加密(TME)技术,其中可以使用加密密钥对在处理器核上执行的软件的存储器访问进行加密。例如,加密密钥可以是在启动时由处理器生成的且用于对在外部存储器总线上发送的数据进行加密的128位密钥。具体而言,当处理器进行对存储器的写入请求时,在数据被发送到存储器之前可由存储器加密引擎对该数据加密,数据以加密形式被存储在该存储器处。类似地,当从存储器中读取数据时,数据将以加密形式发送到处理器。一旦数据已经到达处理器,使用加密密钥对它进行解密。由于数据以明文形式保留在处理器中,因此TME技术不需要对现有软件以及现有软件与处理器交互的方式进行修改。
多密钥TME(MK-TME)技术是TME技术的扩展,其提供了对多个加密密钥的支持,从而允许进行分区的存储器加密。例如,处理器架构可以允许在启动时生成多个加密密钥以用于利用不同的MK-TME密钥对不同的存储器页进行加密。多密钥扩展尤其适用于诸如由CSP使用的架构之类的多租户架构,因为所支持密钥的数量可以是依赖于实现方式的。处理器可以利用MK-TME引擎以使不同页(例如,属于不同租户)使用不同的MK-TME密钥被加密。
在TDX架构中,存在支持信任域资源管理器的主机操作系统,该信任域资源管理器管理与不同的客户端机器(例如,虚拟机)对应的多个TD,这些客户端机器各自具有其自己的支持在其中运行的多个应用的客户机操作系统。此外,甚至由同一客户机操作系统内的同一客户端运行的不同应用可以被安全地执行。为了在存在多个TD时确保安全计算的可缩放性,每个TD都可以使用一个或多个私钥,这些私有密钥对于在TD外部操作的软件而言是不可用的。在一些实例中,在一个安全信任域中执行的软件可具有对专用于那个特定信任域(由SEAM管理)的私钥的访问权以及对可由(由VMM管理的)多个域使用的共享密钥的访问权。例如,在TD内运行的软件可以将私钥用于其安全执行,诸如读取、写入或执行操作。另一方面,相同的软件可以使用共享密钥来访问与其他域共享的结构或设备(准虚拟化的或直接分派的),诸如打印机、键盘、鼠标、监视器、网络适配器、路由器等。
TD甚至可被保护免受有特权用户影响,有特权用户诸如,主机服务器的操作系统OS、管理程序/VMM、基本输入/输出系统(BIOS)固件、系统管理模式,等等。相应地,即使恶意软件接管诸如主机操作系统/VMM之类的有特权主机域,由TD存储在存储器中的敏感数据仍受保护。此类数据可以包括医学记录、生物计量因子、个人ID信息、知识产权、密码、加密密钥或其他敏感数据。
每个TD可以独立于其他TD操作,并且使用由信任域资源管理器(TDRM)分派的(多个)逻辑处理器、存储器、和I/O,TDRM作为主机OS的一部分、管理程序、或者作为单独的软件程序操作。每个TD可以使用MK-TME引擎的至少一个专用(私有)加密密钥在存储器中被加密隔离,该加密密钥用于对与TD相关联的(保持代码和/或数据的)存储器进行加密。即使在TD内,客户端可能需要与共享结构通信,共享结构例如共享硬件设备,诸如输入输出(I/O)设备、打印机、网络适配器、路由器等。在实现方式中,对此类共享结构的访问可能仍需要利用用于TD自己的安全操作的至少一个受限密钥以及可以与VMM和其他TD共享的至少一个密钥来被保护。此类设置允许在TD内执行高度敏感的应用,使得主机VMM不具有对存储器页、分配给TD的加密密钥以及该TD的受信任计算基础(TCB)的访问权。
云服务提供方(CSP)可能需要在单个TD内运行多个VM。例如,单个TD可以向具有多个用户的组织提供VM支持。存在保护组织的计算基础免受CSP的其他客户端影响的强烈需求。另一方面,允许同一组织内的各种用户访问彼此的信息可能是重要的。在这些情况下,为每个用户提供单独的安全TD可能需要附加计算资源,这些计算资源可能不能被调整,尤其是如果用户需要共享大量数据。
在一些实现方式中,与主机VMM分开的虚拟机监视器(在以下描述中简单地称为“VMM”)可以在TD内执行(在以下描述中称为“TD-VMM”)。TD-VMM可以实例化多个虚拟机(在以下描述中,TD-VM)。TD-VM中的每一个或一些可以支持客户机操作系统(OS)以促进客户端软件的执行。一旦VMM已经独占地将多个存储器页与TD相关联,TD-VMM就可以拥有对那些存储器页中的一些存储器页到各种TD-VM的分派,以隔离TD-VM并且也保护TD-VMM本身。例如,TD-VMM可以控制将客户机物理地址(GPA)分派到不同TD-VM。由于对物理存储器页(由它们的主机物理地址(HPA)标识)的分派由VMM执行,因此GPA到HPA的映射的安全性——在由VMM在扩展页表(EPT)中维护的标准设置中——成为关键问题。一方面,TD-VMM可能不具有对HPA空间的直接访问权,以确保主机的安全性。另一方面,VMM可能在TD的受信任计算基础外部,意味着TD-VMM不能依赖于VMM来强制对TD的逻辑处理器状态的隔离和对其存储器的管理。
将安全TD-VMM与不受信任VMM对接的问题可以利用处理器的安全仲裁模式(SEAM)来解决。在SEAM中,逻辑处理器状态可以被保护免受VMM影响,并且逻辑处理器因此可以安全地管理TD。处理器的SEAM可以由SEAM模块实现,SEAM模块用作VMM与TD-VMM之间的信任仲裁器。SEAM模块可以包括一个或多个软件、固件和/或硬件模块。SEAM模块可以包括用于托管代码的SEAM库以用于将处理器转变为SEAM并且用于在处理器上执行安全操作。SEAM模块可以管理来自TD的创建、删除、进入/退出、以及对分派给TD的资源(诸如存储器或输入/输出(I/O)设备)的安全使用。
在一个实现方式中,处理器可以部署SEAM模块以便进入SEAM,可以从SEAM发起或管理TD。在一些实现方式中,SEAM模块可以使用SEAM库来支持对TD的资源管理,并且将SEAM库用作VMM与TD-VMM之间的受信任仲裁器。处理器可以包括硬件寄存器,诸如SEAM范围寄存器,用于存储标识SEAM存储器的预留范围的信息。在本公开中,“SEAM模块”可以指代用于实现SEAM功能的代码,而“SEAM库”可以指代被存储(在存储器的预留范围中)的易失性的和非易失性的资源,这些资源可以由SEAM模块用来支持其操作。在下文中,术语“SEAM模块”在单独使用时也应被理解为涵盖对应的代码和存储在SEAM库中的资源两者。
处理器可以执行取得安全(GETSEC)叶函数,被称为GETSEC[ENTERACCS]指令,以通过发起在本文中被称为SEAM加载程序(SEAMLDR)的经认证代码模块(ACM)引导SEAM VMX根模式软件(SEAM模块)进入操作。在实现方式中,SEAMLDR用于将SEAM模块和SEAM库安装在存储器的预留范围中。一旦SEAM已经被部署,SEAM模块就可以唤起SEAM库以执行某些有特权指令以用于管理TD虚拟机。一旦SEAM被启用,由VMM(或TDRM)执行的SEAMCALL指令就可以将对处理器的控制传递给SEAM模块。换言之,在VMX根模式中对处理器的控制可以被传递给SEAM。在SEAM中,SEAM模块可以管理对TD-VM的创建以及用于被分派给TD的存储器的存储器操作。
图1A是图示示例计算系统100的框图,该示例计算系统100在启用SEAM的信任域(TD)-VMX架构中实现TD内部的虚拟机(VM)。系统100包括处理器112,处理器112支持安全仲裁模式(SEAM)和信任域扩展(TDX)架构。计算系统100可以提供软件和硬件以支持处理器的SEAM。SEAM可以提供用于促进支持多个客户端设备102A、102B、102C和102D的虚拟化服务器110上的TDX操作的功能。每个客户端设备可以是远程台式计算机、平板计算机、智能电话、另一个服务器、薄/瘦客户端等。计算系统100可以进一步包括网络接口104以及共享硬件设备106A和106B。虚拟化服务器110可以包括但不限于处理器112和存储器设备130(后文简称为存储器)。存储器设备130可以包括动态随机存取存储器(DRAM)、同步DRAM(SDRAM)、诸如静态随机存取存储器(SRAM)之类的静态存储器、闪存、数据存储设备、持久性存储器设备、或任何其他类型的存储器设备。
处理器112可以执行虚拟机监视器(VMM)140,其可以利用TD资源管理器(TDRM)142来扩展。VMM 140可以控制一个或多个传统虚拟机,诸如VM1 145A和VM2 145B。传统VM可以在TDX外部执行(例如,没有来自SEAM的支持),如图1示意性示出。
此外,TDRM 142可以支持一个或多个TD,诸如TD1 150A和TD2 150B。TDRM 142(在一些实现方式中,与VMM 140组合)可以充当TD 150A-B的主机并且控制TD对处理器112和其他系统硬件的访问。TDRM可以拥有进入和退出TDX模式的能力。TDRM 142可以向TD(例如,TD1 150A)中的软件分派(多个)逻辑处理器,但是可能不能访问所分派的(多个)逻辑处理器上的TD的执行状态。类似地,TDRM 142可以将物理存储器和I/O资源分派给TD,但是由于多个单独的加密密钥以及对存储器的其他完整性/重放控制而不参与访问/冒充TD的存储器状态。
TD 150A-B可以是不具有嵌套的虚拟化的信任域,即,每个TD 150可以支持一个客户端设备102。虚拟化服务器110可以支持不同类型的能够支持多个虚拟机的TD,TD诸如TD3150C,多个虚拟机例如TD-VM1 155A和TD-VM2 155B。TD3 150C可以包括受信任管理程序TD-VMM 146以用于对TD-VM的管理。用于支持处理器112的SEAM的SEAM模块可以将TD1 150A、TD2 150B和TD3 150C与TDRM 142对接以用于对提供给TD 150的资源的安全管理。SEAM模块144可以在TDRM 142与在TD3 150C内执行的虚拟机TD-VM 155之间对接。SEAM模块144可以实现处理器的安全仲裁模式(SEAM)。SEAM模块可以被实现为存储在SEAM库131中的软件或固件代码。在一些实现方式中,SEAM库131可以驻留在存储器130中的、为处理器112的一个或多个寄存器116中的SEAM预留的范围中,这些寄存器可以包括专用SEAM范围寄存器(图1A中未明确示出)。在一些实现方式中,SEAM可以被实现为驻留在存储器130中(例如,在SEAM库131中)或在处理器112的(高速度)高速缓存118中的硬件指令的微代码。为在SEAM中使用并且由SEAM库131使用而预留的存储器的范围可以在SEAM寄存器中利用基址和掩码或者利用预留范围的开始地址和结束地址来指示。
在各种实现方式中,处理器112包括一个或多个处理器核114和微架构物理地址元数据表(PAMT)120。PAMT可以由处理器112用来存储物理存储器页的属性,诸如将物理存储器页分配给TD1、TD2和TD3。在一些实现方式中,PAMT 120可以保持主机物理存储器的由其主机物理地址(HPA)标识的每个4KB的页的下列属性:预期映射到HPA的客户机物理地址(GPA),页状况(指示页是否为有效存储器页),页状态(指示页是已分派的、还是未决的、还是在被分派/释放/重新分派给另一个TD的过程中,等等),TD标识符(指示页被分派给哪个特定TD),以及用于对主机物理存储器页进行加密/解密的加密密钥的密钥标识符(ID)。PMAT 120可以进一步保持关于存储器页的所有者的信息(例如,SEAM、VMM、TD中的一个TD、等等)。可以存储在PAMT 120中的其他数据包括关于页分派是否未决(即,页是否被重新分派给不同所有者)或者页是否被阻止(即,是否被预留以用于某些特定的现在或未来的使用)的信息。当TDX在处理器112中被启用时,PAMT 120可以被启用(例如,经由CR4启用位,在基于CPUID的枚举之后)。PAMT 120还可以存储与物理存储器页相关联的时期(诸如当页最后被修改的时期、当页被分派给当前所有者的时期、等等)。一旦PAMT 120被启用,PAMT 120可以由处理器112用来强制对由软件发起的物理存储器访问的存储器访问控制,软件包括TDRM 142和SEAM模块144。
处理器112可以进一步包括存储器控制器或存储器管理单元(MMU)124。MMU可以包括MK-TME引擎126(或其他存储器加密引擎)和用于存储最近存储器事务的转换后备缓冲器(TLB)128。TLB条目可以包括到主机物理存储器页的HPA的客户机虚拟地址(GVA)变换。TLB条目还可以包括SEAM位和/或TD位,用于将SEAM缓冲的变换页和TD缓冲的变换页与其他较不安全的变换进行区分。
在实现方式中,MK-TME引擎126使用适当的加密密钥对存储在存储器130中的数据进行加密并且对从存储器130检取的数据进行解密,适当的加密密钥例如分派给将数据存储在存储器设备130中的VMM、SEAM或TD中的一个TD的唯一密钥。MK-TME引擎126可以维护一组内部表122,内部表122用于保持密钥ID以及加密密钥与密钥ID的关联。密钥/密钥ID表122可以进一步存储系统100的各种组件对密钥ID的所有权。例如,由密钥ID 0指定的加密密钥可以标识被分派以供VMM 140/TDRM 142使用的全局总存储器加密(TME)密钥。作为示例,密钥ID 1可以被分派给VM1 145A,密钥ID 2可以被分派给TD1 150A,而密钥ID 3可以被分派给TD3 150C。VMM 140/TDRM 142可以具有对具有密钥ID 1的加密密钥(以及利用该密钥执行的存储器事务)的访问权,但是可能被拒绝对与密钥ID 2和密钥ID 3相关联的加密密钥的访问。单独的密钥(例如,与密钥ID 4相关联)可以被分派给SEAM(例如,用于由SEAM模块144用来加密/解密分派给SEAM库131的存储器页)。该密钥可以是由处理器112控制访问的,以确保密钥不能被VMM 140/TDRM 142(或处理器的任何其他不受信任模式)使用或被包括TD3 150C的信任域使用。在一些实现方式中,SEAM和TD3 150C可以共享同一加密密钥。密钥/密钥ID表122的属性可以使用处理器配置(PCONFIG)指令来编程。
在实现方式中,MK-TME引擎126可以进一步提供完整性和重放保护。在一个实现方式中,用于对存储器130的物理页进行加密的加密密钥的密钥ID可以被加到(例如,附加为最高有效位)存储器的物理页的物理存储器地址(诸如HPA)。在将密钥ID附加到物理存储器地址的情况下,除非存储器事务请求(例如,读取或写入存储器的请求)既包括页的物理存储器地址又包括用于对存储器的物理页进行加密/解密的加密密钥的正确密钥ID,否则由软件请求的存储器事务可能会失败。
图1B是图示根据一个实现方式的图1A的计算系统100的处理器112的示例处理器核114的框图。在图1B所图示的实现方式中,每个处理器核114包括高速缓存118(例如,一个或多个级别的高速缓存)、硬件虚拟化支持电路117和硬件寄存器116。硬件寄存器116可以包括例如多个型号专属寄存器(MSR)116A、控制寄存器116B(例如,CR0、CR4等)和SEAM范围寄存器116C。
在各种实现方式中,高速缓存118经由GETSEC[INTERACCS]指令的执行加载有经认证代码模块(ACM)170。该ACM 170可以是SEAMLDR,其可以引导将SEAM模块144和相关联的数据加载到存储器130的预留范围中。在其他实现方式中,可以具有SEAMLDR功能并且可以被实现为处理器核114的安全逻辑(诸如嵌入硬件的逻辑)的ACM 170是由SEAM模块144唤起的微代码或逻辑或者嵌入处理器112的安全微控制器。此外,或者替代地,SEAM模块144可以唤起安全微控制器中的经认证固件以发起ACM 170。
在实现方式中,处理器核114执行指令以运行多个硬件线程,也称为逻辑处理器,包括第一逻辑处理器119A、第二逻辑处理器119B等等,直到第N逻辑处理器119N。在一个实现方式中,第一逻辑处理器119A被分派给TD-VMM 146。第二逻辑处理器119B可以被分派给由TD-VMM 146执行和控制的TD-VM 155中的一个。
在一些实现方式中,TDRM 142可以调度TD以用于在处理器核114中的一个处理器核的逻辑处理器上执行。除了客户端虚拟机的基于TDX的实现方式之外,虚拟化服务器110可以执行TD外部的一个或多个传统VM 145以用于一个或多个客户端设备102A-D。尽管TD的信任计算基础外部的软件——诸如TDRM 142/VMM 140——可能不具有对分配给TD的物理存储器页和/或TD的执行状态的访问权,但是在TD外部操作的VM 145可能不能被保护而免于VMM 140的访问。
在一些实现方式中,MK-TME引擎126通过利用一个或多个共享加密密钥使用MK-TME引擎126对在处理器112与存储器130之间移动的数据进行加密来防止未经授权的访问。术语“共享”意指密钥可由VMM 140/TDRM 142访问,并且不同于与由SEAM模块144配置的用于分派给TD的密钥相关联的私钥ID。在实现方式中,MMU 124可以强制对VMM 140/TDRM 142或VM 145在处理器核114中使用私钥ID的限制。例如,MMU 124可以强制仅当逻辑处理器在SEAM(根或非根模式)中执行时私有的密钥ID才可以与被发送至MK-TME引擎126的读取和写入请求相关联。如果此类受限密钥ID在SEAM外部被使用,则它们引起错误并且读取或写入事务被中止。
另外,在至少一些实现方式中,非受限密钥中的一个或多个是共享的。共享密钥可由两个或更多个实体(诸如在TDX环境外部运行的TD 150和VM 145)访问。共享密钥可以用于访问一个或多个共享结构,诸如共享硬件设备106A和106B,其可以是打印机、键盘、鼠标、监视器、网络适配器、路由器等。在一个实现方式中,共享硬件设备可以经由网络接口104连接到虚拟化服务器110。在另一实现方式中,共享硬件设备可以在虚拟化服务器110本地。在实现方式中,MK-TME引擎126使用与共享密钥ID相关联的共享密钥对存储在存储器中的数据进行加密。共享密钥ID可以由包括在SEAM中操作的软件的系统软件使用,并且可以由使用对存储器的直接存储器访问(DMA)的设备使用。因此,TD可以使用共享密钥ID来与VMM140、VM 145或其他设备通信。在一些情况下,TD可能希望保护传送给设备的数据的机密性,例如,存储在硬盘驱动器上的数据。由于存储到共享存储器的数据可以由所有软件访问,因此TD软件可以在使用共享密钥ID将数据存储到存储器中之前首先使用特定设备密钥对此类数据加密,诸如盘加密密钥。以此方式,当VMM 140读取该数据时,该数据利用共享密钥被解密;然而,被解密的是由盘加密密钥加密的内容,因此VMM 140不能访问实际数据。TD还可以将完整性校验值与此类经加密数据相关联,使得用于篡改该数据的后续尝试可以被检测。
硬件虚拟化支持电路117可以支持由计算系统100对操作系统、应用和其他软件的虚拟化执行。硬件虚拟化支持电路117可以通过提供下列两种执行模式而包括虚拟机扩展(VMX)支持:VMX根模式和VMX非根模式。VMX根模式允许执行软件具有对计算系统100和其硬件资源的广泛控制。因此,VMM 140/TDRM 142或主机操作系统(OS)可以在VMX根模式中执行。
进一步参考图1A,存储器130可以存储其他数据和信息之中的用于由在TD-VM内部操作的软件使用的客户机虚拟地址(GVA)到由TD-VMM 146分派给TD-VM的客户机物理地址(GPA)的GVA→GPA变换的客户机页表(GPT)132。存储器130可以进一步存储用于GPA→HPA存储器空间变换的扩展页表(EPT)。GPT 132可以包括由传统VM 145、TD 150A-B和在TD3 150C内部操作的TD-VM 155使用的单独的GPT。在一些实现方式中,由TD 150使用的GPT可以利用用于对应TD的加密密钥来加密。
此外,可能存在用于存储分派给TD3 150C的存储器的映射的一个或多个安全EPT(SEPT)。在安全EPT中添加或更新映射可以由处理器112在其SEAM操作期间执行。SEPT可以用于存储(由TDRM 142/VMM 140分派给TD3 150C的物理主机存储器页的)安全主机物理地址(SPA)空间138到TD-VMM 146可见的GPA空间136的映射。GPA空间可以被进一步细分为主机GPA(hGPA)空间160和客户机GPA(gGPA)空间162。hGPA空间160可以包括由TD-VMM 146分派以供其自己使用的那些存储器页的地址。TD-VMM 146可以使用此类页,以用于运行管理代码以管理TD-VM 155,或者在可能出现需要时用于分派给各种TD-VM 155例如以用于TD-VM 155内部的软件执行。gGPA空间162可以包括由TD-VMM 146分派给不同TD-VM 155的存储器页的地址。在TD-VM 155和TD-VMM 146的操作期间,一些地址可(由TD-VMM)从hGPA空间160被改变到gGPA空间162,或者从gGPA空间162被改变到hGPA空间160,如可能需要的。
在一些实现方式中,GPA空间136到SPA(安全HPA)空间138上的映射可以经由用于hGPA空间160和gGPA空间162映射的单独的SEPT来实现。例如,主机SEPT(hSEPT)164可以存储hGPA→SPA映射,而客户机SEPT(gSEPT)166可以存储gGPA→SPA映射。在一些实现方式中,一些或全部TD-VM 155可以共享同一gSEPT 166。在其他实现方式中,每个TD-VM 155可以使用其自己的gSEPT 166,并且TD-VMM 146可以禁止其他TD-VM访问该gSEPT。因此,TD-VMM146可以有效地提供不同TD-VM之间的隔离。在一些实现方式中,可以建立访问的层级结构。例如,TD-VM1 155A可以具有对TD-VM2 155B的gSEPT 166(以及对gGPA空间162)的访问权,但是TD-VM2 155B可能被禁止访问TD-VM1 155A的gSEPT 166(和gGPA空间162)。
在一些实现方式中,分派给TD3 150C的SPA空间138可以对应于主机存储器的完全在存储器的SEAM范围外部的区域。在一些实现方式中,SPA空间138可以指代完全在存储器的SEAM范围内部的区域。在另一些实现方式中,SPA空间138中的一些可以在存储器的SEAM范围内部,而该空间中的一些可以在存储器的SEAM范围外部。在一些实现方式中,hGPA空间160可以在存储器的SEAM范围内部,而gGPA空间162可以在存储器的SEAM范围外部。在一些实现方式中,TD3 150还可以访问EPT 134以用于涉及对一些物理存储器页的共享(与其他TD和/或VMM共享)访问的存储器事务。
TD3 150C内部的虚拟机环境可以经由一个或多个主虚拟机控制数据结构(VMCS)168以及与实例化的TD-VM 155一样多的次VMCS 169的创建被初始化和支持。在一个实现方式中,所创建的主VMCS 168的数量可以基于(例如,等于)由TDRM 142给予TD-VMM 146的虚拟(逻辑)处理器的数量。要实例化的次VMCS 169的数量可以由TD-VMM 146例如基于虚拟处理器的数量和/或要支持的客户机的数量来确定。当处理器处于TD-VMM 146或TD-VM 155中的一个TD-VM的控制之下时,逻辑处理器可以使用这些VMCS。VMCS结构还管理逻辑处理器到TD-VMM或TD-VM操作中(VM进入)和离开TD-VMM或TD-VM操作(VM退出)的转变。VMM 140(和/或TDRM 142)可以首先创建主VMCS 168以维护TD-VMM 146的执行状态。例如,当逻辑处理器执行VM进入指令时,逻辑处理器可以检取TD-VMM 146的先前存储的执行状态。VM进入从SEAM根模式发生,如图2A示意性地示出,其图示提供对经由安全仲裁模式管理的信任域内部的虚拟机执行的支持的处理器模式的一个示例实现方式200。
为了实例化主VMCS 168,SEAM模块144可以选择物理存储器的页边界对齐区域,并且将其HPA作为参数提供给创建主VMCS 168的指令,例如,TDCREATE。存储器的该区域用于存储用于TD-VMM 146的VMCS 168。190A。当被执行时,TDCREATE指令使处理器112(使用PAMT120)验证目的地4KB(或存储器的其他单位)页被分派给TD。TDCREATE指令可以进一步使处理器112生成用于TD3 150C的短时存储器加密密钥和密钥ID并且将密钥ID存储在主VMCS168中。处理器112然后可以使用分派给TD3 150C的加密密钥初始化目的地页上的页内容。主VMCS 168用于存储VM退出指令的执行之前直到下一个VM进入指令的逻辑处理器状态。主VMCS 168还可以包括管理VM进入/退出操作的信息和控制字段。主VMCS 168可以进一步包括指向由TD-VMM 146使用以用于存储器变换的安全EPT的指针,该安全EPT可以是hSEPT164。
在一个实现方式中,主VMCS 168占用存储器的4KB自然对齐区域。在TDCREATE指令被成功执行之后,在PAMT 120中被标识为主VMCS 168的页阻止软件读取/写入。在一个实现方式中,VMCS 168经由PAMT 120被控制访问(例如,存储在PAMT 120中的用于VMCS 168的所分派的密钥ID在处理器112的页走查期间用于防止未经授权的软件读取/写入)。在另一实现方式中,VMCS 168经由其在处理器112的对于软件访问而言不可访问的(多个)受限范围寄存器中的存储被控制访问。受限范围寄存器可以是SEAM范围寄存器。
在主VMCS 168已经被创建之后,TD-VMM 146可以在TD3 150C内部被实例化。TD-VMM 146可以初始化次VMCS 169以在TD3 150C内部实例化客户机虚拟机,诸如TD-VM 155。多个次VMCS 169可以以与上文所述的主VMCS 168的创建类似的方式被创建。在一个实现方式中,次VMCS 169经由PAMT 120被控制访问,并且利用具有与主VMCS 168的密钥ID不同的密钥ID的加密密钥而被保护。在一些实现方式中,每个次VMCS具有其自己的单独的密钥ID。次VMCS 169还可以包括指向由TD-VMM 146使用以用于存储器变换的一个或多个安全EPT的指针,安全EPT可以是gSEPT 166。在次VMCS 169已经被创建之后,TD-VMM 146可以将实例化的TD-VM 155提供给客户机(租户)以供客户机软件在其中执行。
继续参考图2A,在一些实现方式中,一旦主VMCS 168和次VMCS 169被创建并且TD-VM155被实例化,处理器112可以以三种不同模式操作。(1)在VMX根(非SEAM)模式中,TDRM142/VMM 140具有对主机资源的完整控制,例外是为SEAM以及为TD预留的存储器的范围。(2)在SEAM根模式(其也作为VMX根操作)中,处理器可以在SEAMCALL(SEAM进入)指令的执行时进入,SEAM模块可以通过创建主VMCS 168来初始化TD。在SEAM根中,针对来自TD-VMM的指令,处理器还可以为一个或多个TD-VM 155创建一个或多个次VMCS 169以在TD3 150C内部操作。此外,在SEAM根中,处理器可以管理分派给TD的安全GPA→SPA映射。在SEAMRET指令的执行或者经由VM进入指令的执行转变为SEAM非根操作后,处理器可以从SEAM根退出回到VMX根模式中。在SEAM非根操作中,TD-VMM(即,安全管理程序)或TD-VM中的一个TD-VM可以控制处理器,但是可能不具有对所有主机资源的控制。当处理器处于TD-VM中的一个TD-VM的控制之下时,其可以维护包含分派给TD-VM的GVA到GPA的映射的客户机页表。处理器还可以在TD-VM内部执行软件(例如,客户机OS和软件栈)。在VM退出指令后,处理器可以转变回到SEAM根操作中。例如,当处于第一TD-VM的控制之下时,处理器可以接收来自TD-VM的程序调用并且确定程序调用的执行要求来自TD-VMM的支持。为了处理该程序调用,处理器可以执行VM退出以进入SEAM,接着是从SEAM回来的VM进入,但是这次是将对处理器的控制传递给TD-VMM。接着,TD-VMM可以将命令发布给处理器以执行程序调用。在程序调用执行之后,对处理器的控制可以从TD-VMM返回(经由VM退出/VM进入)至TD-VM。
可以利用由TD-VMM 146唤起的VMCS维护指令来控制主VMCS和次VMCS。VMCS维护指令可以是用于传统VMX架构的传统指令标准。在一个示例性实现方式中,以下描述概括一组示例VMCS维护指令(也称为VMX指令)。可以在其他实现方式中使用提供类似功能和在VMX根模式和VMX非根模式中对处理器(例如,逻辑处理器)的状态的控制的一组不同指令。
VMXON指令。在VMX架构中,VMXON指令使逻辑处理器进入VMX根模式。VMXON指令具有单个操作数,其是用于支持VMX操作的存储器页的地址(例如,GPA)。在启用SEAM的TD-VMX架构中,VMXON指令可以由TD-VMM 146唤起以将处理器置于TD-VMX根模式中。VMXON指令的操作数可以是用于支持TD-VMX操作的存储器页的hGPA。当TD-VMM 146唤起VMXON操作时,处理器经由VM退出来退出TD-VMM并且处理器进入SEAM操作,并且SEAM模块144仿真状态变化以记录TD虚拟处理器现在在TD-VMX架构模式中。
VMPTRLD指令。在VMX架构中,VMPTRLD指令使操作数中引用的VMCS是活跃的和当前的。操作数还包含指向存储器页的地址(例如,hGPA)的指针,在该地址中存储所引用的VMCS。逻辑处理器可以仅具有一个当前VMCS,但是具有多个活跃的VMCS。引用不同VMCS的多个VMPTRLD指令的序列使所有VMCS活跃,但是仅受制于VMPTRLD指令的最后一个VMCS保持为当前的。在启用SEAM的TD-VMX架构中,VMPTRLD指令可以由TD-VMM 146唤起以首先使用于TD-VMM 146的主VMCS 168活跃。VMPTRLD指令的操作数包含指向存储器页的hGPA的指针,在该hGPA中存储主VMCS 168。当TD-VMM 146唤起VMPTRLD操作时,处理器退出TD并且进入SEAM操作(例如,经由图2A所示的VM退出)。SEAM模块144然后可以验证所引用的hGPA对应于分派给TD(例如,TD3 150C)的有效存储器页。逻辑处理器可以进行该验证,例如通过在hSEPT164中执行走查以确定存储器页的对应HPA并且在PAMT 120中查找该存储器页的属性。如果存储器页未被分派给TD,则处理器可以退出SEAM(经由SEAMRET,如图2A所示),使得TDRM142(或者VMM 140)可以在将对处理器的控制返回给SEAM(经由SEAMCALL(SEAM进入),如图2A所示)之前将存储器页分派给TD(将作为PAMT中的VMCS页类型被使用)。如果存储器页被分派给TD(或者一旦其由TDRM这样分派),则SEAM模块114使主VMCS 168是活跃的(且当前的)。
TD-VMM 146可以类似地唤起附加的VMPTRLD指令以激活用于多个TD-VM 155的次VMCS 169。此类附加VMPTRLD指令的操作数可以包括指向存储次VMCS 169的存储器页的hGPA的指针。到SEAM的VM退出之后,SEAM模块144(以及TDRM 142,如果需要的话)可以如上文关于主VMCS 168描述地使主VMCS 168活跃。此外,SEAM模块144可以将指向hGPA的指针添加到主VMCS 168,在hGPA中存储次VMCS 169。SEAM对次VMCS中设置的控制强制与它针对主VMCS强制的相同的标准。
VMCLEAR指令。在VMX架构中,VMCLEAR指令使逻辑处理器致使在指令的操作数中引用的VMCS不活跃(并且不是当前的)。在启用SEAM的TD-VMX架构中,VMCLEAR指令可以类似地由TD-VMM 146唤起以致使次VMCS 169中的一个(或主VMCS 168)不活跃。VMCLEAR指令使处理器执行到SEAM中的VM退出。SEAM模块144然后可以验证指令中引用的hGPA操作数对应于分派给TD的有效存储器页(例如,经由hSEPT 164中的走查)并且致使所引用的VMCS不活跃(并且不是当前的)。VMCLEAR指令可以用于允许其他逻辑处理器(不同于执行VMPRTLD指令的逻辑处理器)加载并执行同一虚拟机(例如,TD-VM 155)。
VMLAUNCH指令。在VMX架构中,VMLAUNCH指令使逻辑处理器进入VMX非根模式。VMLAUNCH指令将对逻辑处理器的控制从VMM传递给其VMCS在指令的操作数中被引用的VM。VMLAUNCH指令作用于当前的VMCS,并且如果所引用的VMCS是不活跃的或者是活跃的但不是当前的,则没有作用。在启用SEAM的TD-VMX架构中,VMLAUNCH指令可以类似地由TD-VMM 146唤起以发起所引用的活跃的次VMCS 169并且将对逻辑处理器的控制从TD-VMM 146传递给其状态由所引用的VMCS 169控制的对应的TD-VM 155。VMLAUNCH指令使逻辑处理器执行到SEAM中的VM退出。SEAM模块144然后可以验证指令的操作数中(经由hGPA)引用的VMCS是分派给TD-VMM的有效VMCS PAMT页以及用于TD-VMM的活跃的当前VMCS。SEAM模块144可以通过执行VMLAUNCH指令并且因此执行到SEAM非根中的VM进入以及将控制传递给与由TD-VMM发布的VMLAUNCH指令的操作数中引用的次VMCS对应的TD-VM 155来发起该VMCS。
VMRESUME指令。在VMX架构中,VMRESUME指令可以用于在VMLAUNCH指令的成功执行之后并且在VMCLEAR指令的接下来的执行之前的VM进入(对应于指令的操作数中引用的VMCS)。在启用SEAM的TD-VMX架构中,VMRESUME指令可以类似地由TD-VMM 146唤起以重新开始对先前发起的当前的且活跃的TD-VM 155的执行。VMLAUNCH指令使逻辑处理器执行到SEAM中的VM退出。SEAM模块144然后可以验证指令的操作数中引用的VMCS是活跃的当前的并且先前发起的VMCS。SEAM模块144可以使用到SEAM非根模式中的VM进入(如图2A所示)来重新开始对该VMCS的执行并且将控制传递给对应于VMRESUME指令的操作数中引用的次VMCS的TD-VM 155。VMRESUME指令可以仅使同一逻辑处理器重新开始对TD-VM 155的执行。将已经发起的TD-VM 155的执行迁移至新的逻辑处理器需要在旧的逻辑处理器上执行VMCLEAR指令并且在新的逻辑处理器上后续执行VMPRTLD指令。
VMPTRST指令。在VMX架构中,VMPTRST指令可以具有包括VMCS和存储器页的操作数。VMPTRST指令可以用于将VMCS的当前状态存储在所引用的存储器页中。在启用SEAM的TD-VMX架构中,VMRESUME指令可以类似地由TD-VMM 146唤起以存储活跃的且当前的VMCS的状态。VMPTRST指令可以具有引用主VMCS 168、或次VMCS 169、以及用于存储所引用的VMCS的当前状态的存储器页的hGPA的操作数。VMPTRST指令使逻辑处理器执行到SEAM中的VM退出。SEAM模块144然后可以验证指令的操作数中引用的VMCS是活跃的当前的VMCS。SEAM模块144还可以验证所引用的hGPA对应于分派给TD(例如,TD3 150C)的有效存储器页。逻辑处理器可以进行该验证,例如通过在hSEPT 164中执行走查以确定存储器页的对应HPA并且在PAMT 120中查找该存储器页的属性。如果存储器页未被分派给TD,则处理器可以退出SEAM(经由SEAM退出,如图2A所示),使得TDRM 142(或者VMM 140)可以在如图2A所示的经由SEAMCALL(SEAM进入)将对处理器的控制返回给SEAM之前将存储器页分派给TD。如果存储器页被分派给TD(或者一旦其由TDRM这样分派),则SEAM模块可以将所引用的VMCS存储到由hGPA标识的存储器页中。替代地,SEAM模块可以将对逻辑处理器的控制传递给TD-VMM 146(经由VM进入,如图2A所示),并且TD-VMM 146可以将所引用的VMCS存储到具有hGPA的存储器页中。
当VM执行中发生错误时,VMPTRST指令可以被使用。在VMPTRST指令存储当前VMCS的状态之后,后续指令VMCLEAR、VMPRTLD和VMLAUNCH可以相应地清除、加载和重新发起当前TD-VM。
VMREAD和VMWRITE指令。在VMX架构中,VMREAD指令使逻辑处理器读取指令的寄存器操作数中引用的VMCS分量,并且将其存储在指令的目的地操作数中。VMWRITE指令使逻辑处理器将来自指令的所引用的源操作数的VMCS分量写入指令的寄存器操作数中。像VMLAUNCH指令一样,VMREAD和VMWRITE指令作用于当前的VMCS,并且如果所引用的VMCS是不活跃的或者是活跃的但不是当前的则没有作用。在VMX架构中,VMREAD和VMWRITE指令可能不总是触发VM退出。在启用SEAM的TD-VMX架构中,VMREAD和VMWRITE指令可以类似地由TD-VMM 146唤起以分别从寄存器操作数读取和写入寄存器操作数。在一些实现方式中,SEAM模块144可以可选地允许和提供对VMCS遮蔽的支持以允许TD-VMM 146从其VMCS结构读取或者写入其VMCS结构,诸如主VMCS 168和/或次VMCS 169。如果VMCS遮蔽未被启用,则这些指令可以使逻辑处理器执行到SEAM中的VM退出。在启用SEAM的TD-VMX架构的其他实现方式中,其中VMCS遮蔽未被启用,VMREAD和VMWRITE指令可以通过SEAM验证用于所引用的VMCS的hGPA是有效的以及使用在hSEPT中hGPA所映射到的HPA来仿真VMREAD和VMWRITE指令而被支持。SEAM对次VMCS中设置的控制强制与它针对主VMCS强制的相同的标准。
INVEPT和INVVPID指令。在VMX架构中,INVEPT指令使被高速缓存在转换后备缓冲器(TLB)128中且在指令的GPA操作数中被引用的EPT映射(GPA→HPA)无效。INVEPT指令引起逻辑处理器到VMX根模式中的VM退出。VMM控制处理器并且使EPT条目无效。INVVPID指令类似地基于虚拟(逻辑)处理器ID使TLB所高速缓存的EPT条目无效。在启用SEAM的TD-VMX架构中,INVEPT指令可以类似地由TD-VMM 146唤起以使被高速缓存在转换后备缓冲器(TLB)128中且在INVEPT指令的操作数(hGPA或gGPA)中被引用的EPT映射(hGPA→HPA或gGPA→HPA)无效。当TD-VMM对gSEPT 166进行改变时,INVEPT指令可以由TD-VMM 146唤起。该唤起可以经由一组TDCALL来实现,如下文更详细描述的。INVEPT指令使逻辑处理器执行到SEAM中的VM退出。SEAM模块144可以在安全EPT(hSEPT 164或gSEPT 166)中执行走查以验证指令的操作数中所引用的GPA映射到被分派给TD(例如,TD3150C)的有效存储器页的HPA上。响应于成功验证,在SEAM中操作的逻辑处理器可以使所引用的GPA无效。INVVPID指令可以类似地基于虚拟(逻辑)处理器ID使TLB所高速缓存的hSEPT或gSEPT条目无效。
VMCALL指令。当逻辑处理器处于VMX非根模式中时,VMCALL指令可以由VM唤起。VM可以使用VMCALL来调用VMM以用于服务。到VMX根模式中的VM退出发生,从而将控制传递给VMM,其中VMM接收VMCALL的原因的通知。在启用SEAM的TD-VMX架构中,VMCALL指令可以类似地由TD-VM 155唤起。TD-VM 155可以使用VMCALL来调用SEAM模块144以用于服务。到SEAM中的VM退出可以发生。SEAM模块144然后可以识别VMCALL源自TD-VM 155(基于活跃的次VMCS),并且可以通过激活该逻辑处理器上的主VMCS而将用于服务的TD-VM请求重定向至TD-VMM 146。例如,SEAM模块144可以更新TD-VMM 146的主VMCS 168以反映VMCALL的性质,并且通过发起TD-VMM 146以用于对由TD-VM 155发布的VMCALL的后续处理来执行VM进入。在TD-VMM进行后续VMRESUME时,将由SEAM模块对原始请求TD-VM 155进行上下文切换。
VMFUNC指令。VMFUNC指令可以由在VMX非根模式下执行的软件(诸如客户机OS)使用以唤起VM函数,其是由VMM启用和配置的处理器功能。在VMFUNC指令之后没有VM退出发生,除非发生错误。在启用SEAM的TD-VMX架构中,VMFUNC指令可以类似地由TD-VMM 146允许和配置。如果VMFUNC关于特定处理器功能是这样配置的,则TD-VM 155可能能够使用VMFUNC指令来唤起对应于由TD-VMM 146启用的VMFUNC叶的处理器服务。如果VMFUNC指令不是由TD-VMM 146配置的,则SEAM模块144可以在TD-VM 155执行VMFUNC时接收到VM退出,并且替代地将VMFUNC指令重定向至TD-VMM 146以用于处理,包括确定VMFUNC指令是否是正当的(并且不由TD-VM 155恶意地或者错误地唤起)。TD-VMM 146可以关于一些处理器功能使用VMFUNC_CONTROLS MSR来配置VMFUNC以用于其客户机TD-VM 155,但是关于其他处理器功能不配置VMFUNC。例如,对于VMFUNC叶0,替代EPTP列表将被配置有gSEPT条目以允许TD-VM使用EPT切换而没有VM退出。
图2B是描绘对虚拟机控制结构(VMCS)的管理的示例实现方式250的框图,该VMCS用于在启用SEAM的VMX架构中执行信任域(TD)内部的虚拟机。所示为促进上文在图2A中所图示的处理器状态的系统组件。具有TDRM 142扩展的VMM 140具有对VMX根模式中的处理器112或逻辑处理器的控制。当处理器处于安全仲裁模式(SEAM)中时,SEAM模块144具有对处理器的控制。如所示,进入和离开SEAM根的转变可以响应于诸如SEAMCALL(SEAM进入)和SEAM退出之类的SEAMCALL指令而发生。对处理器的控制可以经由VM进入指令被给予TD,诸如TD3 150C。在该指令的执行之后,受信任管理程序TD-VMM 146接管TD-VMX根模式中的按照SEAM非根和VMX非根模式操作的处理器。主机的VMM 140/TDRM 142可以将存储器页分派给TD3 150C,但是可能不具有对TD3 150C的处理器状态或分派给TD3 150C的存储器的访问权。这通过利用TD3 150C的加密密钥来加密分派给TD3 150C的存储器页以及通过存储分派给TD3 150C的存储器页的属性的硬件保护的PAMT 120而被强制。TD-VMM 146可以安全地执行一个或多个虚拟机TD-VM 155。
SEAM模块144可以在不受信任主机VMM 140/TDRM 142与TD-VMM 146之间仲裁。更具体地,SEAM模块144可以包括安全存储器(SEAM库),其范围可以在处理器112的硬件寄存器116中的一个硬件寄存器中受硬件保护。SEAM库可以包括用于启用TD-VMM 146的操作的TD-VMM库260。SEAM库可以进一步包括用于启用TD-VMM 146对TD-VM 155的管理的TD-VM库270。TD-VMM库260可以包括主VMCS 168,当逻辑处理器在TD-VMM 146的控制之下操作时,主VMCS 168控制逻辑处理器的状态。主VMCS 168可以使用如之前解释的VMPTRLD指令来被实例化。TD-VM库270可以包括多个次VMCS 169,当逻辑处理器在TD-VM 155中的一个的控制之下操作时,多个次VMCS 169控制逻辑处理器的状态。更具体地,逻辑处理器可以执行来自其次VMCS是当前的、活跃的、并且由VMLAUNCH指令发起的TD-VM的指令。次VMCS 169需要使用如之前解释的VMPTRLD指令来被预先实例化。
次VMCS 169可以包括指向安全EPT(即,gSEPT 166)的指针(以实线箭头示意性示出),安全EPT包含由TD-VMM 146分派给TD-VM 155的gGPA的映射。在一些实现方式中,不同的TD-VM 155可以共享同一gSEPT 166。在一些实现方式中,不同的TD-VM可以使用不同的gSEPT 166。SEAM通过防止TD-VM 155对由其他TD-VM 155使用的gSEPT 166的访问来强制gSEPT的安全性。类似地,SEAM强制hSEPT的安全性。在一些实现方式中,TD-VM 155中的一些可以被允许对由其他TD-VM 155中的全部(或一些)使用的gSEPT的访问。主VMCS 168可以类似地包括指向安全EPT(即hSEPT 164)的指针,安全EPT包含预留以供TD-VMM 146使用的hGPA的映射。此外,主VMCS 168可以包括指向存储次VMCS 169的存储器中的位置的指针。在一些实现方式中,指针(例如,指向gSEPT 166、hSEPT 164和次VMCS 169的指针中的全部或一些)可以包括相应结构位于其中的hGPA。
图3A是描绘对存储器地址空间的管理的示例实现方式300的框图,该存储器地址空间可用于启用SEAM的VMX架构中的信任域。在信任域(例如,TD3 150C)内部可以是用于支持多个TD-VM 155(为了简洁仅描绘一个TD-VM 155)的TD-VMM 146。在TD-VM 155内部实例化的客户机操作系统(OS)可以支持各种客户机软件157。TD-VMM 146可以分派由gGPA 162引用的多个存储器页以供TD-VM 155使用。客户机OS可以提供这些页中的一些以供客户机软件157使用。客户机软件157可以通过客户机虚拟地址(GVA)引用被提供给它的存储器页。TD-VM 155可以维护存储GVA到GPA的映射的客户机页表。例如,客户机页表132可以存储引用对于TD3 150C是私有的存储器页的私有GVA的映射,诸如GVA→gGPA映射。分派给TD3150C的存储器页中的一些,诸如由hGPA 160引用的那些存储器页,可以被预留以供TD-VMM146使用。
SEAM模块144可以存储(例如,在使用VMM存储器的SEAM库中)具有分派给TD3 150C的私有存储器页的GPA→HPA映射的安全扩展页表。例如,gSEPT 166可以存储映射gGPA→SPA,而hSEPT 164可以存储映射hGPA→SPA,其中SPA 138是指向存储器130的与安全TD相关联的物理存储器130A的安全物理地址。如虚线箭头示意性指示的,TDRM 142/VMM 140可以控制对在gSEPT 166和hSEPT 164中被映射的物理存储器页的分派以供TD3 150C使用,但是在一些实现方式中,TDRM 142(和VMM 140)可能不具有对gSEPT 166和hSEPT 164的访问权。
此外,存储器130可以包括对于TD3 150C不是私有的并且可以由不同TD(诸如TD1150A和/或TD2 150B)、由传统VM 145、VMM 140等等访问的存储器页。客户机软件157对此类存储器页的访问可以以客户机软件157请求对由共享GVA 165引用的存储器页的访问开始。在一些实现方式中,共享GVA 165可以由TD-VM 155的客户机OS分派并且在由TD-VM 155的OS维护的客户机页表133中被映射到共享GPA 167。VMM 140(和/或TDRM 142)可以维护具有共享GPA 167到共享HPA 171的GPA→HPA映射的EPT 134。共享HPA 171指向存储器130的共享的VMM管理的物理存储器130B中的存储器页。与可以利用SEAM加密密钥(或TD3 150C加密密钥)来加密并且存储在SEAM库中(或者在被分配以供TD3 155C的私有使用的一个或多个存储器页中)的安全EPT 164和166不同,不安全EPT 134可能是未加密的或者利用多个TD(诸如TD1 150A和/或TD2 150B)、传统VM 145、VMM 140等等可访问的共享加密密钥被加密。
图3B是图示根据一个实现方式的具有对共享或私有存储器页的访问权的信任域内部的存储器事务的框图350。所示的是可以访问GPA并且将该GPA发送至存储器管理单元(MMU)124的TD3 150C。在一些实现方式中,作为TD-VMM 146或TD-VM 155中的一个TD-VM的发起(VMLAUNCH指令)或重新开始(VMRESUME指令)的部分,TD加密密钥ID 352和EPT指针(共享EPT指针354和安全EPT指针354两者)都被从VMCS(诸如主VMCS 168或次VMCS 169中的一个次VMCS)配置到处理器核114的控制寄存器116B中(参考图1B)。MMU 124可以访问这些控制寄存器116B中的TD密钥ID 352和EPT指针。
在一些实现方式中,MMU 124可以进一步确定GPA内的指示符位(例如,共享或“S”位)是否被置位。如果共享位被置位,则MMU 124可以从控制寄存器116B检取共享EPT指针354、链接到共享EPT 134、并且走查扩展页表条目以确定主机物理地址(HPA)。在一些实现方式中,MMU 124然后可以将共享密钥ID附加到HPA。在一些实现方式中,从VMCS中的字段或者共享EPT 134中的字段接收共享密钥ID。MMU 124然后可以检取共享存储器页358并且使用共享加密密钥对该共享存储器页进行解密。对存储器页的访问可以生成TLB条目,使得当接收到访问(通过HPA+密钥ID引用的)同一页的后续请求时,MMU 124可能不需要再次走查EPT 134并且可以基于TLB所高速缓存的变换来访问存储器页。
在一些实现方式中,如果GPA中的指示符位未被置位,则MMU 124可以从控制寄存器116B检取SEPT指针356、链接到SEPT(例如,hSEPT 164或gSEPT 166)、并且走查SEPT以确定HPA(其可以是SPA 138)。MMU 124然后可以将TD密钥ID 352(其是与TD3 150C相关联的私钥ID)附加到HPA。MMU 124然后可以检取私有TD-VMM页360(在GPA是hGPA的情况下)或私有TD-VM页362(在GPA是gGPA的情况下)并且使用与TD密钥ID 352相关联的加密密钥来对该私有存储器页进行解密。对存储器页的访问可以生成TLB条目,使得当接收到访问同一页的后续请求时,MMU 124可能不需要再次走查SEPT(例如,hSEPT 164或gSEPT 166)并且基于TLB所高速缓存的变换来访问该存储器页。
图4A是图示根据实现方式的客户机虚拟地址(GVA)到客户机物理地址(GPA)的变换以及GPA到主机物理地址(HPA)的变换的框图400。在一个实现方式中,为了代表TD-VMM146或TD-VM 155仿真指令,在SEAM中操作的逻辑处理器需要将由指令使用的线性地址(例如,GVA)变换为物理存储器地址,使得逻辑处理器可以访问该物理地址处的数据。
为了执行该变换,逻辑处理器可能需要首先确定分页和分段,包括检查虚拟机的分段状态,诸如例如TD-VM 155的分段状态。逻辑处理器还可以在指令唤起时确定TD-VM155的分页模式,包括检查页表、MSR 116A和控制寄存器116B。在对分页和分段模式的发现之后,在SEAM中的逻辑处理器可以为逻辑地址生成GVA并且检测任何分段错误。
假设未检测到分段错误,逻辑处理器可以将GVA变换为GPA并且将GPA变换为HPA,包括在软件中执行页表走查。为了在软件中执行这些变换,逻辑处理器可以将多个分页结构条目和EPT结构条目加载到通用寄存器或存储器中。一旦这些分页和EPT结构条目被加载,MMU 124可以按如下方式执行存储器变换。
更具体地,参考图4A,当VMLAUNCH或VMRESUME指令被执行时,MMU 124可以被编程有客户机页表指针和来自VMCS的EPT指针。MMU 124可以加载由VM建立的来自客户机页表132的多个客户机页表条目132A和来自EPT 134的多个扩展页表条目134A。MMU 124然后可以通过走查(例如,顺序地搜索)通过客户机页表条目132A来执行变换以从GVA生成GPA。MMU124然后可以使用GPA来走查(例如,分层地)EPT 134以生成与GPA相关联的HPA。EPT 134的使用是可以用于支持物理存储器的虚拟化的特征。当EPT在使用中时,通常将被视为物理地址(并且用于访问存储器)的某些地址被替代地视为客户机物理地址。客户机物理地址通过遍历一组EPT分页结构而被变换以产生用于访问物理存储器的物理地址。
图4B是图示根据一个实现方式的使用扩展页表(EPT)将客户机物理地址(GPA)变换为主机物理地址(HPA)的框图420。例如,根据一个实现方式,逻辑处理器可以走查扩展页表条目134A以将GPA变换为HPA。例如,客户机物理地址(GPA)可以被分解为一系列偏移,每个偏移用于在EPT条目134A的层级结构的表结构内索引。在该示例中,从其中导出EPT条目的EPT包括条目的四级分层表,包括页映射第4级表、页目录指针表、页目录条目表、和页表条目表。(在其他实施例中,具有不同数量的级别的层级结构可以在EPT内存在,并且因此所公开的实施例不受EPT的特定实现方式限制。)EPT层级结构的级别处的每个索引的结果可以被加到下一个表的偏移以定位EPT层级结构中的下一级表的下一个结果。第四个表(页表条目表)的结果可以与页偏移组合以定位物理存储器中的(例如)4Kb的页,该4Kb的页是主机物理地址。尽管图4A和图4B描绘针对(共享)EPT 134的变换,但是当诸如hSEPT 164或gSEPT 166之类的安全EPT用于确定与TD独占地相关联的私有存储器页的安全物理地址(SPA 138)时可以实现类似的变换。
图4C是根据一个实现方式的由SEAM模块144为TD-VMM 146建立的主VMCS 168的框图。在各种实现方式中,在SEAM模块144被加载并且可操作以支持TD-VMX之后,SEAM模块144为TD-VMM 146建立主VMCS 168,其在图4C中示出。在一些实现方式中,主VMCS 168包括共享EPT指针354、安全EPT指针356和TD私钥ID 352。共享EPT指针354用于指向共享EPT 134,其用于映射共享存储器并且由VMM 140建立和管理。安全EPT指针356由SEAM模块144建立和管理并且指向hSEPT 164。SEAM模块144可以配置安全EPT指针356和TD-VMM私钥ID,其在一些实现方式中可以与TD私钥ID 352相同。
在一些实现方式中,hSEPT 164映射存储器,该存储器对于TD是私有的并且被预留以供TD-VMM 146(例如,TD-VMM 146的代码和数据)使用,并且使用对应于TD-VMM私钥ID368的私有存储器加密密钥被加密。该私钥可以由SEAM模块144访问。MMU 124可以强制当不在SEAM和/或TD-VMX根模式中时该私钥ID不用于进行存储器访问(加载/存储/代码取出)。SEAM模块144为TD建立和管理hSEPT 164。通过建立hSEPT 164和使相关联的加密密钥是私有的,SEAM模块144确保免受(例如,由VMM 140、TDRM 142或其他非SEAM代理)对通过hSEPT164执行的存储器映射的篡改。SEAM模块144使用以下安全EPT指针356和TD-VMM私钥ID 368将这些作为到TD的VM进入的一部分指定给硬件。
在一个实现方式中,安全EPT指针356是用于指定hSEPT 164的新的64位控制字段。在实现方式中,安全EPT指针356的第一位(例如,位7)被定义为“S位置”位,其中“S”代表在SEAM模块144、TD与VMM 140/TDRM 142之间“共享”。当该S位置位为零(“0”)时,指示符位(例如,“S”位)处于GPA的第一位置(例如,位置47)中,并且当S位置位为一(“1”)时,指示符位位于GPA的第二位置(例如,位置51)处。在另一实现方式中,S位位置由主VMCS 168的另一字段指定。TD-VMM 146可以将GPA中的S位位置设置为向MMU 124指示GPA内的指示符(或“S”)位的位置,其中指示符位指示TD-VMM 146进行私有的还是共享的存储器访问。当S位被设置为指示TD-VMM 146想要进行共享存储器访问时,MMU 124然后会使用共享EPT 134将GPA变换为物理地址,否则当S位被设置为指示TD-VMM 146想要进行私有存储器访问时,MMU 124然后会使用安全hSEPT 164将GPA变换为物理地址。
在实现方式中,TD-VMM私钥ID 368是用于指定TD的短时密钥ID的新的32位控制字段,该短时密钥ID对应于TD-VMM 146的私有加密密钥。一系列多个TD分派的密钥ID可以被指定以允许TD-VMM 146使用多于一个密钥ID,例如,使得给定TD的不同私有存储器区域可以使用TD分派的密钥ID中的一个被加密并且完整性被保护。TD分派的密钥ID可以与读取或写入事务中与物理地址一起被携带到MK-TME引擎126并且由MK-TME引擎126使用以选择利用其来执行存储器加密的对应密钥。例如,安全hSEPT 164可以是4级或5级EPT(与VMM为共享EPT配置的相同)。处理器112可以强制两个EPT中的级别的数量相同。
图4D是根据一个实现方式的由SEAM模块144代表TD-VMM 146为TD-VM 155建立的次VMCS 169的框图。次VMCS 169的结构可以类似于上文公开的主VMCS 168的结构,但是其中安全EPT指针356指向安全gSEPT 166。在一些实现方式中,TD-VM私钥ID 369可以与TD-VMM私钥ID 368相同(并且与图3B中的TD私钥ID 352相同)。在其他实现方式中,TD-VMM密钥ID 368可以与TD-VM私钥ID 369不同。在一些实现方式中,TD-VM 155中的每一个可以被分派与TD-VM私钥ID 369不同的单独的密钥ID。在一些实现方式中,TD-VMM 146可以具有对分派给TD的所有加密密钥的访问权,但是TD-VM 155中的每一个可以仅具有对分派给该TD-VM的特定加密密钥的访问权。
图5A图示在启用SEAM的TD-VMX架构中实现信任域(TD)内部的虚拟机的示例方法500。方法500可由可包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如,由TDRM或VMM执行的操作)、固件或其组合的处理逻辑来执行。在一个示例性实现方式中,方法500可以由图1A的虚拟化服务器110执行。方法500可以涉及由处理逻辑初始化信任域(TD)(诸如TD3 150C)以在其中运行多个虚拟机(TD-VM)(505)。处理逻辑还可以初始化信任域资源管理器(TDRM)以管理TD,包括将诸如物理存储器之类的资源分配给TD。TDRM可以管理附加TD。这些附加TD中的一些可能不支持虚拟化,而其他TD也可以支持多个TD-VM。为了确保TD内部的应用的安全执行,TDRM可以不被包括在TD的受信任计算基础中。
方法500还可以包括处理逻辑在诸如TD3 150C之类的TD内部初始化受信任管理程序/虚拟机监视器(TD-VMM)(510)。与主机管理程序(诸如TDRM)相比,TD-VMM可以是轻量型管理程序。TD-VMM可以被配置为执行足以管理TD-VM的有限数量的指令。在一些实现方式中,TD-VMM可以被配置为仅执行对TD-VM的安全管理所必须的那些指令并且依赖于TDRM以用于执行较不敏感的任务。TD-VMM还可以确保不同TD-VM彼此之间的隔离。TD-VMM可以在TD-VM的受信任计算基础(TCB)内部。相比之下,为了确保在TD内部(例如,由TD-VM)对应用的安全执行,TDRM可以不被包括在TD的TCB中。例如,TDRM可能不具有对正在执行由TD软件(例如,客户机操作系统或在其中运行的应用)发布的命令的处理器(例如,虚拟处理器)的状态的访问权。TDRM可以将多个存储器页与TD独占地相关联(515)。然而,TDRM可能不具有对与TD相关联的物理存储器的访问权。TD相关联的物理存储器可以利用TDRM可能不可访问的TD私有加密密钥被加密。例如,TD私有加密密钥的密钥ID可以被分派以用于TD操作的独占使用,并且此类独占使用可以是由硬件强制的。
由于TDRM可能不具有对TD的存储器以及处理器的状态的访问权,而作为客户机软件的TD-VMM可能不被允许对主机(例如,虚拟化服务器110)资源的不受限的访问,因此处理逻辑可以启用处理器的安全仲裁模式(SEAM)以提供TDRM与在TD内部运行的多个TD-VM之间的隔离(520)。SEAM中的处理器的操作可以由SEAM模块(例如,SEAM模块144)控制,其可以被实现在软件、固件或硬件中。SEAM模块可以在虚拟机架构的根模式(VMX根模式)中操作,即,主机服务器的VMM在其中操作的相同模式,但是与VMM不同,SEAM模块可以具有对TD-VMM和TD-VM的控制结构的访问权。例如,TDRM可以分配一个或多个主机存储器页以存储主(或次)虚拟机控制结构(VMCS)以存储TD-VMM(或TD-VM中的一个)的虚拟处理器的状态,但是可能不具有对主(或次)虚拟机控制结构(VMCS)的访问权。当处于SEAM模式中时,响应于来自SEAM模块的命令,处理器可以发起VMCS、重新开始VMCS、从VMCS读取或者写入VMCS。为了促进处理器的SEAM中的操作,可以存在分派给SEAM的受保护存储器的范围,的受保护存储器的该范围可能不可由TDRM访问(525)。在一些实现方式中,在虚拟化服务器的启动时,例如,由基本输入/输出系统固件,用于存储SEAM库的存储器的SEAM范围可以被加载到处理器的寄存器中的一个寄存器中。在一些实现方式中,存储器的SEAM范围中的存储器页可以利用可以是硬件保护而免受TDRM访问的SEAM私有加密密钥被加密。当处理器在SEAM中操作时,SEAM库可以用于支持SEAM模块的功能。例如,SEAM库可以存储TD-VMM和TD-VM的VMCS以及用于存储客户机物理地址(对TD可见)到主机存储器页的主机物理地址的映射的(多个)安全扩展页表(SEPT)。
实现方法500的各部分的顺序不限于图5A所描绘的顺序,图5A仅图示示例实现方式。方法500的一些框可以按照不同顺序执行。例如,启用SEAM(框520)可以在安全SEAM存储器的分派(框525)之后执行,并且框520和框525都可以在TD的初始化(框505)、TD-VMM的初始化(框510)、或者将存储器与TD相关联(框515)之前执行。类似地,框515可以在框505和/或510之前执行。
图5B图示在启用SEAM的TD-VMX架构中实现将存储器分派给在信任域内部操作的虚拟机的示例方法530。方法530可由可包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如,由TDRM/VMM、或TD-VMM执行的操作)、固件或其组合的处理逻辑来执行。在一个示例性实现方式中,方法530可以由图1A的虚拟化服务器110执行。方法530可以涉及图5A的方法500的框中的一些或全部。例如,在一些实现方式中,方法500的框中的一些或全部可以在方法530的框中的任一个的执行之前执行。方法530可以涉及将具有用于被分派给TD的那些存储器页的GPA→HPA映射的SEPT存储在存储器的SEAM范围中(535)。方法530可以以接收来自TD-VMM的命令以将存储器页(例如,页P)分派给多个TD-VM中的一个来继续(540)。在一些实例中,TD-VMM可能需要创建新的SEPT以存储页P的GPA→HPA映射,并且可以进一步将指向新的SEPT的指针添加在TD-VM的次VMCS中。在一些实例中,TD-VMM可能需要通过添加页P对于TD-VM是私有的指示来更新现有SEPT,使得其他TD-VM可能不具有对页P的访问权。由于TD-VMM可能需要创建或修改存储在安全SEAM库中的SEPT,因此TD-VMM可能必须对处理器(例如,逻辑处理器)执行VM退出指令以使处理器进入SEAM(545)。在VMX根模式和SEAM根模式中操作的SEAM模块可以访问物理元数据表(PAMT)以确定页P的属性(550)。例如,处理逻辑可以响应于来自SEAM模块的命令而确定页P是否实际上与其TD-VMM已经请求将页P分派给TD-VM的TD相关联。例如,响应于接收页P的GPA(例如,页P的gGPA),处理逻辑可以首先执行页走查以确定页P的HPA。处理逻辑然后可以使用HPA来访问PAMT,PAMT可以存储页P的安全属性,诸如页的状态。在一些实现方式中,页P的PAMT条目可以是指示页P的状态的N位的位映射,诸如00–空闲,01–已分派,10–未决(在被释放或重新分派的过程中)。PAMT还可以检查页的状况位,其指示页P是有效的还是无效的。PAMT可以进一步包括TD标识符字段,其可以是多位的字段,用于存储状态P与其相关联的TD的标识符。
如果处理逻辑确定页P的状态是“已分派”并且TD标识符字段的内容匹配TD的标识符,则处理逻辑可以利用GPA→HPA映射更新SEPT,包括页的状态现在是“已分派”以及分派是到TD-VM的指示(560)。SEAM模块然后可以执行VM退出并且将对处理器的控制让与回到TD-VMM。注意,关于存储器的页的术语“状态”在本描述中以两种意义使用。存储在PAMT中的页的状态指示页是否与TD相关联(例如,独占地相关联)。SEPT中的页的状态指示与TD相关联的页是否被(该TD的TD-VMM)分派给TD-VM中的一个或多个(或者被预留以供TD-VMM自己使用)。
如果处理逻辑确定页P不与TD相关联,但是其在PAMT中的状态为“空闲”,则页P可以在SEPT被更新之前与TD相关联。具体而言,SEAM模块可以使处理器执行SEAMRET(565)并且将对处理器的控制传递给TDRM。处理逻辑然后可以响应于来自TDRM的命令将页P与TD相关联(570)并且执行SEAM调用(SEAMCALL(SEAM进入))以使处理器进入SEAM并且将对处理器的控制返回给SEAM模块(575)。处理逻辑然后可以以与上文公开的相同的方式更新SEPT中的GPA→HPA映射(560)。然而,如果在框555处确定页P不与TD相关联并且其在PAMT中的状态是“阻止的”或者“已分派”给不同TD(或者已分派给VMM本身),则错误可能发生,并且SEAM模块可以执行VM进入,向TD-VMM通知页P是不可用的并且TD-VMM应当将不同页分派给其TD-VM。
图6A-图6F图示一个示例性实现方式中的用于各种TDCALL指令的执行的示例流程,各种TDCALL指令可以由TD-VMM 146唤起以用于在启用SEAM的TD-VMX架构中管理安全EPT(诸如hSEPT 164和/或gSEPT 166)。图6A-图6F所示的各种框可以由TD-VM 155、TD-VMM146、SEAM模块144和VMM 140执行。在一些实现方式中,示出为由VMM 140执行的框中的一些或全部可以由TDRM 142执行,即使当这没有明确陈述时。
图6A图示一个示例性实现方式中的用于指令的执行的流程600,该指令用于在启用SEAM的TD-VMX架构中创建次虚拟机控制结构(VMCS)。流程600可以以TD-VMM 146通过其hGPA标识要用于存储次VMCS(诸如次VMCS 169中的一个)的存储器页开始。TD-VMM 146可以唤起诸如TDCHMODT 601(例如,信任域子修改许可TDCALL)之类的TDCALL,TDCALL将其类型要被修改的hGPA和存储器页的新类型指定为参数。例如,分派给TD的存储器页可以具有不同类型:用于TD内部的各种操作的“常规”类型页、用作用于存储hSEPT 164或gSEPT 166的页的“SETP”类型页、用于存储TD VMCS中的一个(例如,次VMCS 169中的一个)的“VMCS”类型页,等等。因此,在一些实现方式中,用于为新的TD-VM 155存储次VMCS的所选择的存储器页可能需要改变其类型,例如,在PAMT 120中,从“常规”改变为“VMCS”。这可能被需要,因为当TD正在执行时这些特殊页类型可能不能由TDRM 142换出,因为处理器可能正在使用这些页来保存和恢复TD-VM逻辑处理器的状态。
TDCHMODT指令可以触发到SEAM中的处理器退出,其中SEAM模块144可以验证(例如,通过在对应的hSEPT 164中的走查)hGPA被映射(hGPA→HPA0)到被分派给TD(例如TD3150C)的(具有物理地址HPA0的)存储器页,该TD的TD-VMM 146已经发布TDCHMODT调用(602)。此类验证可以例如通过访问PAMT 120和确定由HPA0标识的存储器页的所有权来执行。如果存储器页确实被分派给TD,则SEAM模块144可以在PAMT 120中将存储器页的状态设置为“未决”。SEAM模块144然后可以执行SEAMRET并且将执行传递给引用主VMCS 168、存储器页的hGPA和HPA0的VMM 140。VMM 140然后可以执行TDADDVPS(例如,信任域添加虚拟处理器结构)指令以创建次VMCS并且将其存储在HPA0中(604)。TDADDVPS指令可以具有主VMCS168、hGPA和HPA0作为操作数。此外,TDADDVPS指令可以引用主VMCS 168被存储在其中的HPA1。然而,如果在框602处由SEAM模块144确定存储器页HPA0未被分派给TD,则VMM 140可以首先通过在TDADDVPS指令的执行之前分派HPA0来解决该问题。
流程600然后可以以SEAM模块144清除hSEPT 164中的针对(如在hSEPT 164中由hGPA标识的)HPA0存储器页的许可来继续,例如,通过执行指令设置SETPE RWXuXs==0,其中读取(R)、写入(W)、执行(Xu)、和访问(Xs)标注对应的许可位(603)。SEAM模块144还可以将HPA0存储器页的类型改变为“VMCS”。SEAM模块144还可以验证HPA1的状态为“空闲”,并且在PAMT 120中将该状态改变为“映射的”,并且将指向存储器页HPA0的链接指针存储在主VMCS 168被存储在其中的存储器页HPA1中。TD-VMM 146然后可以发起关于对hGPA的许可已经被清除以及hGPA的类型已经被改变的验证。此类验证可能被需要以确保TD的完整性并且排除不受信任的VMM 140可能(恶意地或错误地)未能进行这些任务中的任一个的可能性。TD-VMM 146可以通过唤起列出VMCS、hGPA和类型的TDCHACCEPT调用(605)来进行该验证。TD-VMM 146还可以标识TDCHACCEPT调用的参数之中要为存储器页设置的许可(“rPerm”)。在到SEAM中的VM退出后,SEAM模块144可以验证页的类型现在为“VMCS”(PAMT.type=VMCS)、许可已经被清除(SEPT.PERM=0)并且将许可设置为所请求的值(设置SETPE RWXuXs=rPerms)(606)。在一些实现方式中,PAMT 120中的HPA0存储器页的状态还可以从“未决”被改变为“已分派”。TD-VMM 146然后可以如之前所解释的(经由VMPTRLD指令)加载新的次VMCS(图6A中未明确示出)。在一些实现方式中,如果TD-VMM 146需要实例化影子VMCS(用于主VMCS 168或次VMCS 169中的一个次VMCS)而不是次VMCS,则同一流程600可以被使用。在EPT条目中填充的除了RWXuXS之外的其他许可集合可以使用该过程被类似地验证和/或设置。
图6B图示一个示例性实现方式中的用于指令的执行的流程610,该指令用于在启用SEAM的TD-VMX架构中授予TD-VM访问存储器页的许可,该存储器页已经被映射以供另一个TD-VM或TD-VMM 146使用。流程610可以以TD-VMM 146唤起诸如TDCHALIASPAGE(例如,信任域子别名页TDCALL)之类的TDCALL并且利用其hGPA标识存储器页(611)开始。TD-VMM 146还可以标识要接收访问存储器页的许可的TD-VM 155的次VMCS并且进一步标识被授权的范围或许可(诸如读取、写入、执行等)。TD-VMM 146还可以在次VMCS的gSEPT 166中指定要被映射到存储器页的HPA0上的gGPA。
TDCHALIASPAGE指令可以触发到SEAM中的处理器退出,其中SEAM模块144可以验证(例如,通过在对应的hSEPT 164中的走查)hGPA当前被映射(hGPA→HPA0)到被分派给TD(例如TD3 150C)的存储器页,该TD的TD-VMM 146已经发布TDCHALIASPAGE调用(612)。此类验证可以例如通过访问PAMT 120和确定由HPA0标识的存储器页的所有权来执行。如果存储器页确实被分派给TD,则SEAM模块144可以在PAMT 120中将HPA0存储器页的状态设置为“允许别名”。SEAM模块144还可以验证当前不存在映射gGPA→HPA0。SEAM模块144然后可以执行SEAMRET并且将执行传递给引用主VMCS 168、次VMCS 169、以及存储器页的gGPA和HPA0的VMM 140。在一些实例中,VMM 140可以确定在现有gSEPT 166中没有用于次VMCS 169的足够的空间。VMM 140然后可以执行ADDSEPT指令以分配新的存储器页来用作gSEPT 166(613)。VMM 140然后可以执行SEAMCALL(SEAM进入)并且将对处理器的控制传递给SEAM模块144以用于将所分配的新的存储器页初始化为gSEPT 166并且将该页链接到次VMCS 169(例如,通过添加从VMCS指向新的存储器页的指针)(614)。SEAM模块144然后可以将对处理器的控制返回给VMM 140,使得VMM 140可以执行TDMAPPAGE以创建映射gGPA→HPA0(615)。
流程610然后可以以SEAM模块144验证gGPA→HPA0映射确实由TD-VMM 146请求(616)来继续。SEAM模块144还可以验证PAMT 120的状态被设置以允许别名并且HPA0存储器页已经处于被映射的状态中以供TD使用。SEAM模块144然后可以创建gGPA→HPA0映射状态并且清除对应的gSEPT 166中的针对(如gSEPT 166中利用gGPA标识的)HPA0存储器页的许可,例如,通过执行指令设置SETPE RWXuXs==0。TD-VMM 146然后可以发起关于所请求的映射已经被创建并且对gGPA的许可已经被清除的验证。TD-VMM 146可以通过唤起列出次VMCS、gGPA、以及次VMCS将具有的关于由gSEPT 166中的gGPA标识的存储器页HPA0的所请求的许可(“rPerm”)的TDCHACCEPT调用来进行该验证(617)。在到SEAM中的VM退出后,SEAM模块144可以将许可设置为所请求的值(设置SETPE RWXuXs==rPerms)(618)。在一些实现方式中,在TD-VMM 146可能需要允许由不同次VMCS 169控制的多个TD-VM 155对存储器页的访问的情况下,TD-VMM 146可以执行流程610多次,针对每个次VMCS 169执行一次。
图6C图示一个示例性实现方式中的用于指令的执行的示例流程620,该指令用于修改访问由gGPA标识的存储器页的许可,该指令可以在启用SEAM的TD-VMX架构中由TD-VMM146唤起。流程可以以TD-VMM 146唤起诸如TDCHMODPR(例如,信任域子修改许可TDCALL)之类的TDCALL开始,TDCALL将其许可需要被修改的gGPA和用于TD-VM 155(由gGPA标识的存储器页被分派给该TD-VM 155)的VMCS(例如,次VMCS 169)指定为参数(621)。TDCHMODPR指令可以触发到SEAM中的处理器退出,其中SEAM模块144可以验证(例如,通过在对应的gSEPT166中的走查)gGPA确实被映射到被分派给诸如TD3 150C之类的正确的TD的存储器页,已经发布TDCHMODPR调用的TD-VMM 146属于TD3 150C(622)。此类验证可以通过访问PAMT 120和确定存储器页的所有权来执行。如果存储器页确实被分派给TD,则SEAM模块144可以清除SEPT中的许可位,诸如读取(R)、写入(W)、执行(Xu)、和访问(Xs)许可位(622)。SEAM模块144还可以在PAMT 120中将存储器页的状态标记为“未决”。然而,如果存储器页未被分派给TD,则SEAM模块144可以执行到VMX根模式中的SEAMRET(如图2A所示),使得VMM 140可以解决该问题(例如,如果存储器页可用于此类分派,则通过将存储器页分派给TD)。
在清除许可位之后,流程620可以以SEAM模块144将对逻辑处理器的控制(经由VM进入)传递给TD-VMM 146来继续。TD-VMM 146可以停止一些或全部TD-VM 155的执行,并且执行INVEPT TDCALL以使具有gGPA的映射的SEPT无效(623)。在INVEPT调用之后,TD-VMM146可以触发到SEAM中的VM退出,使得SEAM模块144可以验证所有TD-VM已经停止在所有逻辑处理器上的执行(624)。在一些实现方式中,这可以通过执行VMCLEAR指令来完成。如果SEAM模块144不能验证所有TD-VM不活跃,则SEAM模块144可以执行到VMM根模式中的SEAMRET,并且请求VMM 140发送处理器间中断(IPI)以中断当前的和活跃的TD-VM的执行。一旦所有TD-VM被停止,处理器可以对存储涉及由gGPA标识的存储器页的所高速缓存的变换的TLB条目进行转储清除,以确保不会仍然存在旧的变换。这可以由唤起交叉CPU IPI处理程序的SEAM模块144和/或由唤起交叉CPU IPI处理程序的VMM 140执行(625-626)。
TD-VMM 146然后可以发起关于对所引用的gGPA的许可已经被清除的验证。此类验证可能被需要以确保TD的完整性并且排除不受信任的VMM 140可能(恶意地或错误地)未能清除许可的可能性。TD-VMM 146可以通过唤起将VMCS、gGPA、和针对存储器页的所请求的许可(“rPerm”)列出为调用的参数的TDCHACCEPT调用(627)进行该验证。在到SEAM中的VM退出后,SEAM模块144可以验证许可已经被清除(SEPT.PERM==0)并且将许可设置为所请求的值(设置SETPE RWXuXs==rPerms)(628)。但是,如果许可还未被清除,则SEAM可以退出并且将对逻辑处理器的控制传递给VMM 140。如果许可被正确地清除并且然后根据rPerms指令被重新设置,则对逻辑处理器的控制经由VM进入被传递给TD-VMM 146,并且TD-VMM 146可以通过使用将TD-VM 155的次VMCS列出为参数的VMRESUME调用来重新开始TD-VM 155的执行(629)。在一些实现方式中,如果由gGPA标识的存储器页已经被分派给TD,则TDCHMODPR流程的执行可以不要求对PAMT 120的改变。在一些实现方式中,在gGPA标识先前还未被分派给TD的存储器页并且VMM 140将该页分派给TD的情况下,SEAM模块144可以在PAMT 120中添加或修改该页的属性。
图6D图示一个示例性实现方式中的用于指令的执行的示例流程630,该指令用于增强访问由gGPA标识的存储器页的许可,该指令可以在启用SEAM的TD-VMX架构中由TD-VMM146唤起。例如,在TD-VM仅具有从由gGPA标识的存储器页读取的许可的情况下,TD-VMM 146可能需要授予TD-VM写入该页的许可。流程可以以TD-VMM 146唤起诸如TDCHMODPE(例如,信任域子修改许可增强TDCALL)之类的TDCALL开始,TDCALL将其许可需要被增强的gGPA和用于TD-VM 155(由gGPA标识的存储器页被分派给该TD-VM 155)的VMCS(例如,次VMCS 169)指定为参数(631)。TDCHMODPE指令可以触发到SEAM中的处理器退出,其中SEAM模块144可以验证(例如,通过在对应的gSEPT 166中的走查)gGPA确实被映射到被分派给诸如TD3 150C之类的正确的TD的存储器页,已经发布TDCHMODPE调用的TD-VMM 146属于TD3 150C(632)。此类验证可以通过访问PAMT 120和确定存储器页的所有权来执行。如果存储器页确实被分派给TD,则SEAM模块144可以清除SEPT中的许可位(632)。然而,如果存储器页未被分派给TD并且TD-VMM 146试图增强未映射的页的许可,则SEAM模块144可以执行到VMX根模式中的SEAMRET,使得VMM 140可以解决该问题(例如,如果存储器页可用于此类分派,则通过将存储器页分派给TD)。
与流程620不同,流程630可能不需要对TLB所高速缓存的变换gGPA→HPA进行转储清除,并且可以直接继续关于对于所引用的gGPA的许可已经被清除的验证。TD-VMM 146可以通过唤起将VMCS、gGPA、和所请求的增强许可(“ePerm”)列出为调用的参数的TDCHACCEPT调用进行该验证(633)。在到SEAM中的VM退出后,SEAM模块144可以验证许可已经被清除(SEPT.PERM==0)并且将许可设置为所请求的增强值(设置SETPE RWXuXs==ePerms)(634)。如果许可还未被清除,则SEAM可以退出并且将对逻辑处理器的控制传递给VMM 140。如果许可被正确地清除并且然后根据ePerms指令被重新设置,则对逻辑处理器的控制经由VM进入被传递给TD-VMM 146,并且TD-VMM 146可以通过使用将TD-VM 155的次VMCS列出为参数的VMRESUME调用来重新开始TD-VM 155的执行(635)。在一些实现方式中,如果由gGPA标识的存储器页已经被分派给TD,则TDCHMODPE流程的执行可以不要求对PAMT 120的改变。在一些实现方式中,TD-VMM 146执行TDCHACCEPT指令可能是至关重要的。例如,如果TD-VMM146试图使用其映射gGPA→HPA还未被TD-VMM 146接受的gGPA来访问存储器页,则到SEAM中的VM退出可以发生,并且SEAM模块可以验证映射gGPA→HPA存在于gSEPT 166中(636)。
图6E图示一个示例性实现方式中的用于指令的执行的流程640,该指令用于在启用SEAM的TD-VMX架构中从TD-VM移除访问存储器页的许可,该存储器页可能先前已经被映射以供另一个TD-VM或TD-VMM 146使用。流程640可以以TD-VMM 146唤起诸如TDCHREMOVEALIAS(例如,信任域子移除别名TDCALL)之类的TDCALL并且利用其hGPA和gGPA标识存储器页(641)开始。hGPA和gGPA两者利用由TD-VMM 146使用的hSEPT 164中的hGPA→HPA0映射和由TD-VM 155使用的gGPA→HPA0映射指代同一存储器页。TD-VMM 146还可以标识其访问存储器页的许可要被移除的TD-VM 155的次VMCS。
TDCHREMOVEALIAS指令可以触发到SEAM中的处理器退出,其中SEAM模块144可以验证(例如,通过在对应的gSEPT 166中的走查)gGPA当前被映射到被分派给TD(例如TD3150C)的存储器页(HPA0),该TD的TD-VMM 146已经发布TDCHREMOVEALIAS调用(642)。此类验证可以例如通过访问PAMT 120和确定由HPA标识的存储器页的所有权来执行。如果存储器页确实被分派给TD,则SEAM模块144可以清除所有许可(例如,R、W、Xu、Xs)和/或在gSEPT166中将页标记为“非存在”。SEAM模块144然后可以执行SEAMRET并且将执行传递给引用主VMCS 168、次VMCS 169、以及存储器页的gGPA和HPA0的VMM 140。VMM 140然后可以经由SEAMCALL指令执行TDBLOCKPAGE指令以阻止存储器页(643)。VMM 140然后可以执行SEAMCALL(SEAM进入)并且将对处理器的控制传递给SEAM模块144以用于将存储器页从次VMCS 169解除链接(例如,通过将指向存储器页的指针从VMCS移除)(644)。SEAM模块144然后可以将对处理器的控制返回给VMM 140,使得VMM 140可以执行TDREMOVEGPA以将所阻止的GPA从TD解除映射(645)。流程610然后可以以SEAM模块144验证gGPA→HPA0映射不再存在于gSEPT 166中并且被阻止由次VMCS 169使用来继续(646)。
图6F图示一个示例性实现方式中的用于指令的执行的流程650,该指令用于在启用SEAM的TD-VMX架构中释放与TD相关联的存储器页。流程650可以以TD-VMM 146唤起TDCALL以释放由其hGPA标识的存储器页(651)开始。TDCALL指令可以触发到SEAM中的处理器退出,其中SEAM模块144可以验证(例如,通过在对应的hSEPT 164中的走查)hGPA当前被映射到被分派给TD(例如TD3 150C)的存储器页(HPA0),该TD的TD-VMM 146已经发布TDCALL(652)。此类验证可以例如通过访问PAMT 120和确定由HPA标识的存储器页的所有权来执行。SEAM模块144然后可以执行SEAMRET并且将执行传递给引用主VMCS 168、存储器页的hGPA和HPA0的VMM 140。VMM 140然后可以针对每个gGPA别名执行TDBLOCKPAGE,gGPA别名可能已经用于使用<次VMCS,gGPA>对来映射HPA0存储器页(653)。VMM 140然后可以执行SEAMCALL(SEAM进入)并且将对处理器的控制传递给SEAM模块144。SEAM模块可以在hSEPT页的PAMT条目中记录TD时期,以确保陈旧的TLB条目不会由不受信任的VMM安装(654)。VMM还可能需要执行正常的TDTRACK、IPI和TDREMOVEGPA流程以跟踪和转储清除TLB条目,TLB条目对与HPA0存储器页对应的gGPA→HPA映射进行高速缓存,HPA0存储器页被释放以用于具有各种TD-VM的活跃的次VMCS的逻辑处理器(655)。TDTRACK可以为TD增加TDCS中的BEPOCH编号,并且SEAM可以将TD EPOCH(时期)的采样值作为新的EPOCH值存储在执行TD的逻辑处理器的元数据中。SEAM模块144然后可以验证TLB已经完成针对PAMT.BEPOCH的跟踪和转储清除并且将PAMT中的页的状态设置为空闲(656)。
在一些实现方式中,用于存储器管理的两个附加TDCALL可用于TD-VMM,这两个附加TDCALL诸如TDCHDEMOTEPAGE和TDCHPROMOTEPAGE。TD-VMM 146可以减小或增大分派给特定TD-VM的存储器页的尺寸。在TD-VMM 146将减小存储器页的尺寸(例如,减小4KB或任何其他尺寸)的情况下,TD-VMM可以唤起TDCHDEMOTEPAGE指令,其可以包括诸如次VMCS(用于标识其页被调整尺寸的TD-VM)、该页的gGPA地址、旧的页尺寸、和新的页尺寸之类的参数。TDCHDEMOTEPAGE TDCALL操作可以由TD-VMM 146唤起以移除原始(大的页)SEPT条目并且将其替换为用于减小的页的新的SEPT条目和用于已经与原始页分离的存储器页(例如,4KB的页)的SEPT条目。该TDCALL可以产生SEAM对来自TDRM 142的对应支持的请求。SEAMRET可能被需要以用于SEAM跟踪和TDRM(和/或服务VM,VMM可以将长时间运行的任务卸载到该服务VM)以维护gGPA到SPA映射以支持SEPT管理。在操作由SEAM(在TDRM的支持下)完成之后,TD-VMM可以唤起TDACCEPT以确认SEP的变化,因为在TDACCEPT被TD-VMM唤起之前试图访问对应的页条目的TD-VM将引起EPT破坏。
类似地,TDCHPROMOTEPAGE TDCALL可以由TD-VMM 146使用以增大分派给TD-VM的存储器页的尺寸,并且可以具有诸如次VMCS、gGPA、旧的页尺寸和新的页尺寸之类的参数。对应的TB TDCALL操作可以由TD-VMM唤起以移除用于TD-VM的页条目(例如,4KB的条目)并且将原始页条目提升(合并)为大的页SEPT条目。该TDCALL可以类似地通过SEAM(如上所述)请求来自TDRM的对应支持并且类似地唤起TDACCEPT以确认变化。
图7A是图示根据本公开的至少一个实现方式的处理器的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图,该处理器监视处理设备在启用SEAM的TD-VMX架构中在信任域内部执行虚拟机的性能。图7B是图示根据本公开的至少一个实现方式的要被包括在处理器中的有序架构核以及寄存器重命名逻辑、乱序发布/执行逻辑的框图。图7A中的实线框图示出有序流水线,而虚线框图示出寄存器重命名的、乱序发布/执行流水线。类似地,图7B中的实线框图示出有序架构逻辑,而虚线框图示出寄存器重命名逻辑以及乱序发布/执行逻辑。
在图7A中,处理器流水线700包括取出级702、长度解码级704、解码级706、分配级708、重命名级710、调度(也被称为分派或发布)级712、寄存器读取/存储器读取级714、执行级716、写回/存储器写入级718、异常处置级722和提交级724。在一些实现方式中,按照不同顺序提供这些级,并且可以有序地和乱序地考虑不同级。
在图7B中,箭头指示两个或更多个单元之间的耦合,并且箭头的方向指示那些单元之间的数据流的方向。图7B示出处理器核(核)790,该核790包括耦合至执行引擎单元750的前端单元730,并且两者耦合至存储器单元770。
核790可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代的核类型。作为又一选项,核790可以是专用核,诸如例如,网络或通信核、压缩引擎、图形核,等等。
前端单元730包括分支预测单元732,该分支预测单元732耦合至指令高速缓存单元734,该指令高速缓存单元734耦合至指令转换后备缓冲器(TLB)736,该指令转换后备缓冲器736耦合至指令取出单元738,该指令取出单元738耦合至解码单元740。解码单元或解码器可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码器可使用各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元734还耦合至存储器单元770中的第2级(L2)高速缓存单元776。解码单元740耦合至执行引擎单元750中的重命名/分配器单元752。
执行引擎单元750包括重命名/分配器单元752,该重命名/分配器单元752耦合至引退单元754和一个或多个调度器单元的集合756。(多个)调度器单元756表示任何数量的不同调度器,包括预留站、中央指令窗等。(多个)调度器单元756耦合至(多个)物理寄存器堆单元758。(多个)物理寄存器堆单元758中的每一个表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型(诸如:标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点等)、状态(诸如,指令指针是将要执行的下一个指令的地址)等。(多个)物理寄存器堆单元758由引退单元754重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器、和(多个)引退寄存器堆;使用寄存器映射和寄存器池,等等)。
一般而言,架构寄存器从处理器外部或从编程者的视角来看是可见的。寄存器不限于任何已知的特定类型的电路。各种不同类型的寄存器只要能够存储并提供如本文中所描述的数据,那么它们就是合适的。合适的寄存器的示例包括但不限于:专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等等。引退单元754和(多个)物理寄存器堆单元758耦合至(多个)执行集群760。(多个)执行集群760包括一个或多个执行单元的集合762和一个或多个存储器访问单元的集合764。执行单元762可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。
尽管一些实现方式可以包括专用于特定功能或功能集合的多个执行单元,但是其他实现方式可包括一个执行单元或全都执行所有功能的多个执行单元。(多个)调度器单元756、(多个)物理寄存器堆单元758以及(多个)执行群集760示出为可能是复数个,因为某些实现方式为某些类型的数据/操作创建单独的流水线(例如,各自都具有其自身的调度器单元、(多个)物理寄存器堆单元和/或执行集群的标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线和/或存储器访问流水线——并且在单独的存储器访问流水线的情况下,实现了其中此流水线的执行集群具有(多个)存储器访问单元764的某些实现方式)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序的。
存储器访问单元的集合764耦合到存储器单元770,该存储器单元770包括数据TLB单元772,该数据TLB单元772耦合到数据高速缓存单元774,该数据高速缓存单元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指令集;位于美国加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集(带有诸如NEON之类的附加扩展)。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如
Figure BDA0002428608540000441
超线程化技术中的同时多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。虽然处理器的所示出的实现方式也包括单独的指令和数据高速缓存单元734/774以及共享的L2高速缓存单元776,但替代实现方式可具有用于指令和数据两者的单个的内部高速缓存,诸如例如,第1级(L1)内部高速缓存或多个层级的内部高速缓存。在一些实现方式中,系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
图8图示根据本公开的至少一个实现方式的用于处理设备800的微架构的框图,该处理设备800包括用于在启用SEAM的TD-VMX架构中执行信任域内部的虚拟机的逻辑电路。在一些实现方式中,指令可被实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸多数据类型(诸如,单精度和双精度整数和浮点数据类型)的数据元素执行操作。在一个实现方式中,有序前端801是处理设备800的部分,该部分取出要被执行的指令,并准备这些指令以在稍后供处理设备流水线使用。可以在处理设备800中实现用于在启用SEAM的TD-VMX架构中执行信任域内部的虚拟机的实现方式。
前端801可包括若干单元。在一个实现方式中,指令预取器826从存储器取出指令,并将指令馈送至指令解码器828,指令解码器828进而对指令进行解码或解释。例如,在一个实现方式中,解码器将接收到的指令解码为机器可以执行的被称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。在其他实现方式中,解码器将指令解析为操作码和对应的数据及控制字段,它们被微架构用于执行根据一个实现方式的操作。在一个实现方式中,跟踪高速缓存830取得经解码的微操作,并将它们组装为微操作队列834中的按程序排序的序列或踪迹以供执行。当跟踪高速缓存830遇到复杂指令时,微代码ROM 832提供完成操作所需的微操作。
一些指令被转换为单个微操作,而其他指令需要若干个微操作以完成整个操作。在一个实现方式中,如果需要多于四个微操作来完成指令,则解码器828访问微代码ROM832以进行该指令。对于一个实现方式,指令可被解码为少量的微操作以用于在指令解码器828处进行处理。在另一实现方式中,如果需要数个微操作来完成操作,则可将指令存储在微代码ROM 832中。跟踪高速缓存830参考进入点可编程逻辑阵列(PLA)来确定正确的微指令指针,以从微代码ROM 832读取微代码序列以完成根据一个实现方式的一条或多条指令。在微代码ROM 832完成对于指令的微操作序列化之后,机器的前端801恢复从跟踪高速缓存830取出微操作。
乱序执行引擎803是将指令准备好用于执行的地方。乱序执行逻辑具有数个缓冲器,用于将指令流平滑并且重排序,以在指令流沿流水线向下行进并被调度以供执行时优化性能。分配器逻辑分配每一个微操作需要的机器缓冲器和资源,以用于执行。分配器/寄存器重命名逻辑840将逻辑寄存器重命名为寄存器堆中的条目。在指令调度器(存储器调度器846、快速调度器802、慢速/通用浮点调度器804、以及简单浮点调度器806)之前,分配器840也将每一个微操作的条目分配在两个微操作队列中的一个微操作队列中,一个微操作队列842用于存储器操作,另一个微操作队列844用于非存储器操作。微操作调度器802、804、806基于对它们的依赖性输入寄存器操作数源的准备就绪以及微操作完成它们的操作所需的执行资源的可用性来确定微操作何时准备好用于执行。一个实现方式的快速调度器802可在主时钟周期的每半个周期上进行调度,而其他调度器可仅仅在每一个主处理设备时钟周期上调度一次。调度器对分派端口进行仲裁以调度用于执行的微操作。
寄存器堆808、810位于调度器802、804、806以及执行块811中的执行单元812、814、816、818、820、822、824之间。存在分别用于整数和浮点操作的分开的寄存器堆808、810。一个实现方式的每个寄存器堆808、810也包括旁路网络,旁路网络可将还没有被写入到寄存器堆中的刚完成的结果旁路或转发给新的依赖性微操作。整数寄存器堆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 820、浮点ALU 822、浮点移动单元824。对于一个实现方式,浮点执行块812、814执行浮点、MMX、SIMD、以及SSE或其他操作。一个实现方式的浮点ALU 812包括64位除以64位浮点除法器,用于执行除法、平方根、以及余数微操作。对于本公开的实现方式,涉及浮点值的指令可利用浮点硬件来处置。
在一个实现方式中,ALU操作去往高速ALU执行单元816、818。一个实现方式的快速ALU 816、818能以半个时钟周期的有效等待时间来执行快速操作。对于一个实现方式,大多数复杂整数操作去往慢速ALU 820,因为慢速ALU 820包括用于长等待时间类型的操作的整数执行硬件,诸如,乘法器、移位器、标志逻辑和分支处理。存储器加载/存储操作由AGU812、814执行。对于一个实现方式,整数ALU 816、818、820在对64位数据操作数执行整数操作的上下文中进行描述。在替代实现方式中,ALU 816、818、820可被实现为支持多种数据位,包括16位、32位、128位、256位等等。类似地,浮点单元822、824可被实现为支持具有多种宽度的位的一系列操作数。对于一个实现方式,浮点单元822、824可以结合SIMD和多媒体指令对128位宽的紧缩数据操作数进行操作。
在一个实现方式中,在父加载完成执行之前,微操作调度器802、804、806分派依赖性操作。由于在处理设备800中推测地调度和执行微操作,因此处理设备800也包括用于处置存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中会存在已带着临时错误的数据离开调度器的运行中的依赖性操作。重放机制跟踪使用错误数据的指令并重新执行这些指令。仅依赖性操作需要被重放,并且允许独立的操作完成。处理设备的一个实现方式的调度器和重放机制也设计成用于捕捉用于文本串比较操作的指令序列。
处理设备800还包括用于在启用SEAM的TD-VMX架构中启用信任域内部的虚拟机的逻辑。在一个实现方式中,处理设备800的执行块811可以包括TDRM 142和SEAM模块144以在启用SEAM的TD-VMX架构中启用信任域内部的虚拟机。
术语“寄存器”可以指被用作指令的一部分以标识操作数的板上处理设备存储位置。换言之,寄存器可以是从处理设备外部(从编程者的角度来看)可用的那些处理设备存储位置。然而,实现方式的寄存器在含义上不应当限于特定类型的电路。相反,实现方式的寄存器能够存储并提供数据,并且能够执行本文中所描述的功能。本文中所描述的寄存器可以由处理设备中的电路使用任何数量的不同技术来实现,这些不同技术诸如专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用物理寄存器和动态分配的物理寄存器的组合等。在一个实现方式中,整数寄存器存储32位整数数据。一个实现方式的寄存器堆还包含用于紧缩数据的八个多媒体SIMD寄存器。
对于本文中的讨论,寄存器应被理解为被设计成用于保存紧缩数据的数据寄存器,诸如,来自美国加利福尼亚州圣克拉拉市的英特尔公司的启用有MMX技术的微处理设备中的64位宽的MMXTM寄存器(在一些实例中,也被称为‘mm’寄存器)。这些MMX寄存器(在整数和浮点形式两者中是可用的)可与伴随SIMD和SSE指令的紧缩数据元素一起操作。类似地,也可以使用涉及SSE2、SSE3、SSE4或以外的(统称为“SSEx”)技术的128位宽的XMM寄存器来保存此类紧缩数据操作数。在一个实现方式中,在存储紧缩数据和整数数据时,寄存器不需要在这两种数据类型之间进行区分。在一个实现方式中,整数和浮点可被包含在同一寄存器堆中,或被包含在不同的寄存器堆中。此外,在一个实现方式中,浮点和整数数据可被存储在不同的寄存器中,或被存储在相同的寄存器中。
可以在许多不同系统类型中实现用于在启用SEAM的TD-VMX架构中执行信任域内部的虚拟机的实现方式。现在参照图9,示出的是根据实现方式的多处理设备系统900的框图。如图9中所示,多处理设备系统900是点对点互连系统,并且包括经由点对点互连950耦合的第一处理设备970和第二处理设备980。如图9中所示,处理设备970和处理设备980中的每一个都可以是多核处理设备,包括第一处理设备核和第二处理设备核(未示出),但是潜在地多得多的核可以存在于处理设备中。这些处理设备各自可包括根据本公开的实现方式的混合型写入模式逻辑。可以在处理设备970、处理设备980或两者中实现用于在启用SEAM的TD-VMX架构中执行信任域内部的虚拟机的实现方式。
尽管以两个处理设备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以及可包括指令/代码和数据930的存储单元928(诸如,盘驱动器或其他大容量存储设备)。此外,音频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。另外,CL1072、1082还可包括I/O控制逻辑。图10图示存储器932、934耦合至CL 1072、1082,并且I/O设备1014也耦合至CL 1072、1082。传统I/O设备1015经由接口996耦合至芯片组990。可以在处理设备970、处理设备980或两者中实现用于在启用SEAM的TD-VMX架构中执行信任域内部的虚拟机的实现方式。
图11是示例芯片上系统(SoC)1100,该示例SoC 1100可包括应用处理器1110的核1112A…1112N中的一个或多个。本领域中已知的用于膝上型设备、台式机、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理设备、数字信号处理设备(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般而言,能够包含如本文中所公开的处理设备和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
现在参考图11,示出的是根据本公开的实现方式的SoC 1100的框图。同样,虚线框是更先进的SoC上的特征。在图11中,(多个)互连单元1102耦合至:应用处理器1110,包括一个或多个核的集合1112A-N以及(多个)共享高速缓存单元1106,一个或多个核的集合1112A-N分别包含一个或多个高速缓存单元1104A……1104N;系统代理单元1113;(多个)总线控制器单元1116;(多个)集成存储器控制器单元1114;一个或多个媒体处理设备的集合1120,可包括集成图形逻辑1108、用于提供静止和/或视频相机功能的图像处理设备1124、用于提供硬件音频加速的音频处理设备1126、以及用于提供视频编码/解码加速的视频处理设备1128;静态随机存取存储器(SRAM)单元1130;直接存储器存取(DMA)单元1132;以及用于耦合至一个或多个外部显示器的显示单元1140。可以在SoC 1100中实现用于在启用SEAM的TD-VMX架构中执行信任域内部的虚拟机的实现方式。
接下来参考图12,描绘了根据本公开的实现方式的SoC设计的实现方式。作为说明性示例,SoC 1200被包括在用户装备(UE)中。在一个实现方式中,UE是指可由终端用户用于通信的任何设备,诸如,手持电话、智能电话、平板、超薄笔记本、具有宽带适配器的笔记本、或任何其他类似的通信设备。UE可连接至基站或节点,该基站或节点本质上可对应于GSM网络中的移动站(MS)。可以在SoC 1200中实现用于在启用SEAM的TD-VMX架构中执行信任域内部的虚拟机的实现方式。
此处,SoC 1220包括2个核——1206和1207。类似于上文的讨论,核1206和核1207可符合指令集架构,诸如,具有
Figure BDA0002428608540000511
架构核TM的处理设备、超微半导体公司(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可以包括如本文中所描述的其他组件。应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如
Figure BDA0002428608540000531
超线程化技术中的同时多线程化)。
计算系统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,在其上存储了具体化本文中所描述的功能的方法中的任何一个或多个的指令1326。指令1326也可完全或至少部分地作为指令1326驻留在主存储器1304内和/或在由计算系统1300对指令1326的执行期间作为处理逻辑驻留在处理设备1302内;主存储器1304和处理设备1302也构成计算机可读存储介质。
计算机可读存储介质1324也可以用于利用诸如参考图1所描述的处理设备1302来存储指令1326,和/或用于存储包含调用上面的应用的方法的软件库。尽管计算机可读存储介质1324在示例实现方式中被示出为单个介质,但术语“计算机可读存储介质”应当被视为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。还应当认为术语“计算机可读存储介质”包括能够存储、编码或承载由机器执行并且使该机器执行实现方式的方法中的任何一种或多种的一组指令的任何介质。术语“计算机可读存储介质”应当相应地被视为包括但不限于固态存储器以及光和磁介质。
以下示例涉及进一步的实现方式。
示例1是一种处理器,包括:处理器核,用于:1)初始化信任域(TD)以及用于管理TD的信任域资源管理器(TDRM),2)初始化用于管理多个TD-VM的TD内的虚拟机监视器(TD-VMM),3)响应于接收来自TDRM的指令,将多个存储器页与TD独占地相关联,其中多个存储器页利用TDRM不可访问的TD私有加密密钥被加密,以及4)启用处理器的安全仲裁模式(SEAM),SEAM被分派TDRM不可访问的存储器的SEAM范围,其中存储器的SEAM范围用于提供TDRM与多个TD-VM之间的隔离;以及一个或多个寄存器,用于存储:存储器的SEAM范围的标识符,以及TD密钥标识符(密钥ID),标识TD私有加密密钥。
在示例2中,示例1的处理器,其中,处理器核进一步用于响应于来自TD-VMM的命令而进行以下操作:1)向多个TD-VM中的第一TD-VM分派与TD相关联的多个存储器页中的第一存储器页;2)向多个TD-VM中的第二TD-VM分派与TD相关联的多个存储器页中的第二存储器页;以及3)向TD-VMM分派与TD相关联的多个存储器页中的第三存储器页。
在示例3中,示例1的处理器,进一步包括物理地址元数据表(PAMT),PAMT用于存储与TD相关联的多个存储器页的属性,其中存储器页的属性包括存储器页的状态、类型、所有者标识符、或状况中的至少一个。
在示例4中,示例1的处理器,其中,存储器的SEAM范围包括利用TDRM不可访问的SEAM私有加密密钥被加密的一个或多个存储器页。
在示例5中,示例1的处理器,其中,存储器的SEAM范围包括用于存储安全扩展页表(SEPT)的一个或多个存储器页,其中SEPT包括与TD相关联的多个存储器页的客户机物理存储器地址(GPA)到主机物理存储器地址(HPA)的映射。
在示例6中,示例5的处理器,其中,SEPT包括:1)客户机SEPT,用于存储与TD相关联的多个存储器页中的第一存储器页的第一GPA到HPA映射,其中第一存储器页由TD-VMM分派给多个TD-VM中的一个或多个;以及2)主机SEPT,用于存储与TD相关联的多个存储器页中的第二存储器页的第二GPA到HPA映射,其中第二存储器页由TD-VMM分派给TD-VMM。
在示例7中,示例5的处理器,其中,处理器核进一步用于:1)响应于来自TDRM的指令,初始化主虚拟机控制结构(VMCS)并且将主VMCS存储在存储器的SEAM范围中以维护TD-VMM的执行状态,其中主VMCS包括指向SEPT的指针;以及2)响应于来自TD-VMM的命令,初始化多个次VMCS并且将多个次VMCS存储在存储器的SEAM范围中以用于维护多个TD-VM的执行状态。
在示例8中,示例5的处理器,其中,处理器核进一步用于:1)接收来自TD-VMM的命令以向多个TD-VM中的第一TD-VM分派与TD相关联的多个存储器页中的第一存储器页;2)进入处理器的SEAM;以及3)更新SEPT中的第一存储器页的GPA到HPA映射。
在示例9中,示例5的处理器,其中,处理器核进一步用于:1)接收来自TD-VMM的命令以向多个TD-VM中的第一TD-VM分派第一存储器页;2)进入处理器的SEAM;3)通过访问存储与TD相关联的多个存储器页的属性的物理地址元数据表(PAMT)来验证第一存储器页属于与TD相关联的多个存储器页;以及4)更新SEPT中的第一存储器页的GPA到HPA映射。
在示例10中,示例5的处理器,其中,处理器核进一步用于:1)接收来自TD-VMM的命令以向多个TD-VM中的第一TD-VM分派第一存储器页;2)进入处理器的SEAM;3)通过访问存储与TD相关联的多个存储器页的属性的物理地址元数据表(PAMT)来验证第一存储器页不属于与TD相关联的多个存储器页;4)响应于验证第一存储器页不属于与TD相关联的多个存储器页,退出处理器的SEAM;5)响应于接收来自TDRM的命令,将第一存储器页与TD相关联;6)进入处理器的SEAM;以及7)利用第一存储器页的GPA到HPA映射来更新SEPT。
在示例11中,示例5的处理器,其中,处理器核进一步用于:1)当处于第一TD-VM的控制之下时,接收来自第一TD-VM的程序调用;2)确定程序调用的执行需要来自TD-VMM的支持;3)执行VM退出以进入处理器的SEAM;4)从处理器的SEAM执行VM进入以将对处理器的控制传递给TD-VMM;以及5)接收来自TD-VMM的命令以执行程序调用。
示例12是一种系统,包括:1)存储器设备;2)处理器,用于:A)初始化信任域(TD)以及用于管理TD的信任域资源管理器(TDRM);B)初始化用于管理多个TD-VM的TD内的虚拟机监视器(TD-VMM);C)响应于接收来自TDRM的指令,将存储器设备的多个页与TD独占地相关联,其中存储器设备的多个页利用TDRM不可访问的TD私有加密密钥被加密;以及D)启用处理器的安全仲裁模式(SEAM),SEAM被分派TDRM不可访问的存储器设备的SEAM范围,其中SEAM范围用于提供TDRM与多个TD-VM之间的隔离;以及3)一个或多个硬件寄存器,用于存储:存储器的SEAM范围的标识符;以及TD密钥标识符(密钥ID),标识TD私有加密密钥。
在示例13中,示例12的系统,其中,SEAM范围包括用于存储安全扩展页表(SEPT)的存储器设备的一个或多个页,其中SEPT包括与TD相关联的存储器设备的多个页的客户机物理存储器地址(GPA)到主机物理存储器地址(HPA)的映射。
示例14是一种方法,包括:1)由处理设备初始化信任域(TD)以及用于管理TD的信任域资源管理器(TDRM);2)初始化用于管理多个TD-VM的TD内的虚拟机监视器(TD-VMM);3)响应于接收来自TDRM的指令,将多个存储器页与TD独占地相关联,其中多个存储器页利用TDRM不可访问的TD私有加密密钥被加密;以及4)启用处理设备的安全仲裁模式(SEAM),SEAM被分派TDRM不可访问的存储器的SEAM范围,其中存储器的SEAM范围用于提供TDRM与多个TD-VM之间的隔离;以及5)在处理设备的一个或多个寄存器中存储:存储器的SEAM范围的标识符;以及TD密钥标识符(密钥ID),标识TD私有加密密钥。
在示例15中,示例14的方法,进一步包括响应于来自TD-VMM的命令而进行以下操作:1)向多个TD-VM中的第一TD-VM分派与TD相关联的多个存储器页中的第一存储器页;2)向多个TD-VM中的第二TD-VM分派与TD相关联的多个存储器页中的第二存储器页;以及3)向TD-VMM分派与TD相关联的多个存储器页中的第三存储器页。
在示例16中,示例14的方法,进一步包括存储物理地址元数据表(PAMT),其中PAMT用于存储与TD-VMM相关联的多个存储器页的属性,其中存储器页的属性包括存储器页的状态、类型、所有者标识符、或状况中的至少一个。
在示例17中,示例14的方法,进一步包括利用TDRM不可访问的SEAM私有加密密钥来加密存储器的SEAM范围中的一个或多个存储器页。
在示例18中,示例14的方法,进一步包括在存储器的SEAM范围的一个或多个存储器页中存储安全扩展页表(SEPT),其中SEPT包括与TD相关联的多个存储器页的客户机物理存储器地址(GPA)到主机物理存储器地址(HPA)的映射。
在示例19中,示例18的方法,其中,SEPT包括:1)客户机SEPT,用于存储与TD相关联的多个存储器页中的第一存储器页的第一GPA到HPA映射,其中第一存储器页由TD-VMM分派给多个TD-VM中的一个或多个;以及2)主机SEPT,用于存储与TD相关联的多个存储器页中的第二存储器页的第二GPA到HPA映射,其中第二存储器页由TD-VMM分派给TD-VMM。
在示例20中,示例18的方法,进一步包括:1)响应于来自TDRM的指令,初始化主虚拟机控制结构(VMCS)并且将主VMCS存储在存储器的SEAM范围中以维护TD-VMM的执行状态,其中主VMCS包括指向SEPT的指针;以及2)响应于来自TD-VMM的命令,初始化多个次VMCS并且将多个次VMCS存储在存储器的SEAM范围中以用于维护多个TD-VM的执行状态。
在示例21中,示例18的方法,进一步包括:1)接收来自TD-VMM的命令以向多个TD-VM中的第一TD-VM分派与TD相关联的多个存储器页中的第一存储器页;2)使处理设备进入SEAM;以及3)利用第一存储器页的GPA到HPA映射更新SEPT。
在示例22中,示例18的方法,进一步包括:1)接收来自TD-VMM的命令以向多个TD-VM中的第一TD-VM分派第一存储器页;2)使处理设备进入SEAM;3)通过处理设备访问存储与TD相关联的多个存储器页的属性的物理地址元数据表(PAMT)来验证第一存储器页属于与TD相关联的多个存储器页;以及4)更新SEPT中的第一存储器页的GPA到HPA映射。
在示例23中,示例18的方法,进一步包括:1)接收来自TD-VMM的命令以向多个TD-VM中的第一TD-VM分派第一存储器页;2)使处理设备进入SEAM;3)通过处理设备访问存储与TD-VMM相关联的多个存储器页的属性的物理地址元数据表(PAMT)来验证第一存储器页不属于与TD相关联的多个存储器页;4)响应于验证第一存储器页不属于与TD相关联的多个存储器页,使处理设备退出SEAM;5)响应于接收来自TDRM的命令,将第一存储器页与TD相关联;6)使处理设备进入SEAM;以及7)更新SEPT中的第一存储器页的GPA到HPA映射。
各实现方式可以具有上文所描述的结构特征的不同的组合。例如,也可参照本文中描述的系统来实现上文中描述的处理器和方法的所有任选特征,并且可在一个或多个实现方式中的任何地方使用示例中的细节。
示例24是一种非瞬态计算机可读介质,存储有指令,指令当由具有耦合至系统存储器的核的处理器执行时,使处理器执行多个逻辑操作,包括:1)由处理设备初始化信任域(TD)以及用于管理TD的信任域资源管理器(TDRM);2)初始化用于管理多个TD-VM的TD内的虚拟机监视器(TD-VMM);3)响应于接收来自TDRM的指令,将多个存储器页与TD独占地相关联,其中多个存储器页利用TDRM不可访问的TD私有加密密钥被加密;以及4)启用处理设备的安全仲裁模式(SEAM),SEAM被分派TDRM不可访问的存储器的SEAM范围,其中存储器的SEAM范围用于提供TDRM与多个TD-VM之间的隔离;以及5)在处理设备的一个或多个寄存器中存储:存储器的SEAM范围的标识符;以及TD密钥标识符(密钥ID),标识TD私有加密密钥。
在示例25中,示例24的非瞬态计算机可读介质,其中,操作进一步包括响应于来自TD-VMM的命令而进行以下操作:1)向多个TD-VM中的第一TD-VM分派与TD相关联的多个存储器页中的第一存储器页;2)向多个TD-VM中的第二TD-VM分派与TD相关联的多个存储器页中的第二存储器页;以及3)向TD-VMM分派与TD相关联的多个存储器页中的第三存储器页。
在示例26中,示例24的非瞬态计算机可读介质,其中,操作进一步包括存储物理地址元数据表(PAMT),其中PAMT用于存储与TD-VMM相关联的多个存储器页的属性,其中存储器页的属性包括存储器页的状态、类型、所有者标识符、或状况中的至少一个。
在示例27中,示例24的非瞬态计算机可读介质,其中,操作进一步包括利用TDRM不可访问的SEAM私有加密密钥来加密存储器的SEAM范围中的一个或多个存储器页。
在示例28中,示例24的非瞬态计算机可读介质,其中,操作进一步包括在存储器的SEAM范围的一个或多个存储器页中存储安全扩展页表(SEPT),其中SEPT包括与TD相关联的多个存储器页的客户机物理存储器地址(GPA)到主机物理存储器地址(HPA)的映射。
在示例29中,示例28的非瞬态计算机可读介质,其中,SEPT包括:1)客户机SEPT,用于存储与TD相关联的多个存储器页中的第一存储器页的第一GPA到HPA映射,其中第一存储器页由TD-VMM分派给多个TD-VM中的一个或多个;以及2)主机SEPT,用于存储与TD相关联的多个存储器页中的第二存储器页的第二GPA到HPA映射,其中第二存储器页由TD-VMM分派给TD-VMM。
在示例30中,示例28的非瞬态计算机可读介质,其中,操作进一步包括:1)响应于来自TDRM的指令,初始化主虚拟机控制结构(VMCS)并且将主VMCS存储在存储器的SEAM范围中以维护TD-VMM的执行状态,其中主VMCS包括指向SEPT的指针;以及2)响应于来自TD-VMM的命令,初始化多个次VMCS并且将多个次VMCS存储在存储器的SEAM范围中以用于维护多个TD-VM的执行状态。
在示例31中,示例28的非瞬态计算机可读介质,其中,操作进一步包括:1)接收来自TD-VMM的命令以向多个TD-VM中的第一TD-VM分派与TD相关联的多个存储器页中的第一存储器页;2)使处理设备进入SEAM;以及3)利用第一存储器页的GPA到HPA映射更新SEPT。
在示例32中,示例28的非瞬态计算机可读介质,其中,操作进一步包括:1)接收来自TD-VMM的命令以向多个TD-VM中的第一TD-VM分派第一存储器页;2)使处理设备进入SEAM;3)通过处理设备访问存储与TD相关联的多个存储器页的属性的物理地址元数据表(PAMT)来验证第一存储器页属于与TD相关联的多个存储器页;以及4)更新SEPT中的第一存储器页的GPA到HPA映射。
在示例33中,示例28的非瞬态计算机可读介质,其中,操作进一步包括:1)接收来自TD-VMM的命令以向多个TD-VM中的第一TD-VM分派第一存储器页;2)使处理设备进入SEAM;3)通过处理设备访问存储与TD-VMM相关联的多个存储器页的属性的物理地址元数据表(PAMT)来验证第一存储器页不属于与TD相关联的多个存储器页;4)响应于验证第一存储器页不属于与TD相关联的多个存储器页,使处理设备退出SEAM;5)响应于接收来自TDRM的命令,将第一存储器页与TD相关联;6)使处理设备进入SEAM;以及7)更新SEPT中的第一存储器页的GPA到HPA映射。
各实现方式可以具有上文所描述的结构特征的不同的组合。例如,也可参照本文中描述的系统来实现上文中描述的处理器和方法的所有任选特征,并且可在一个或多个实现方式中的任何地方使用示例中的细节。
示例34是一种系统,包括:1)用于由处理设备初始化信任域(TD)以及用于管理TD的信任域资源管理器(TDRM)的装置;2)用于初始化用于管理多个TD-VM的TD内的虚拟机监视器(TD-VMM)的装置;3)用于响应于接收来自TDRM的指令将多个存储器页与TD独占地相关联的装置,其中多个存储器页利用TDRM不可访问的TD私有加密密钥被加密;以及4)用于启用处理设备的安全仲裁模式(SEAM)的装置,SEAM被分派TDRM不可访问的存储器的SEAM范围,其中存储器的SEAM范围用于提供TDRM与多个TD-VM之间的隔离;以及5)用于在处理设备的一个或多个寄存器中存储以下各项的装置:存储器的SEAM范围的标识符;以及TD密钥标识符(密钥ID),标识TD私有加密密钥。
在示例35中,示例34的系统,进一步包括用于响应于来自TD-VMM的命令而进行以下操作的装置:1)向多个TD-VM中的第一TD-VM分派与TD相关联的多个存储器页中的第一存储器页;2)向多个TD-VM中的第二TD-VM分派与TD相关联的多个存储器页中的第二存储器页;以及3)向TD-VMM分派与TD相关联的多个存储器页中的第三存储器页。
在示例36中,示例34的系统,进一步包括用于存储物理地址元数据表(PAMT)的装置,其中PAMT用于存储与TD-VMM相关联的多个存储器页的属性,其中存储器页的属性包括存储器页的状态、类型、所有者标识符、或状况中的至少一个。
在示例37中,示例34的系统,进一步包括用于利用TDRM不可访问的SEAM私有加密密钥来加密存储器的SEAM范围中的一个或多个存储器页的装置。
在示例38中,示例34的系统,进一步包括用于在存储器的SEAM范围的一个或多个存储器页中存储安全扩展页表(SEPT)的装置,其中SEPT包括与TD相关联的多个存储器页的客户机物理存储器地址(GPA)到主机物理存储器地址(HPA)的映射。
在示例39中,示例38的系统,其中,SEPT包括:1)客户机SEPT,用于存储与TD相关联的多个存储器页中的第一存储器页的第一GPA到HPA映射,其中第一存储器页由TD-VMM分派给多个TD-VM中的一个或多个;以及2)主机SEPT,用于存储与TD相关联的多个存储器页中的第二存储器页的第二GPA到HPA映射,其中第二存储器页由TD-VMM分派给TD-VMM。
在示例40中,示例38的系统,进一步包括:1)用于响应于来自TDRM的指令而初始化主虚拟机控制结构(VMCS)并且将主VMCS存储在存储器的SEAM范围中以维护TD-VMM的执行状态的装置,其中主VMCS包括指向SEPT的指针;以及2)用于响应于来自TD-VMM的命令而初始化多个次VMCS并且将多个次VMCS存储在存储器的SEAM范围中以用于维护多个TD-VM的执行状态的装置。
在示例41中,示例38的系统,进一步包括:1)用于接收来自TD-VMM的命令以向多个TD-VM中的第一TD-VM分派与TD相关联的多个存储器页中的第一存储器页的装置;2)用于使处理设备进入SEAM的装置;以及3)用于利用第一存储器页的GPA到HPA映射更新SEPT的装置。
在示例42中,示例38的系统,进一步包括:1)用于接收来自TD-VMM的命令以向多个TD-VM中的第一TD-VM分派第一存储器页的装置;2)用于使处理设备进入SEAM的装置;3)用于通过处理设备访问存储与TD相关联的多个存储器页的属性的物理地址元数据表(PAMT)来验证第一存储器页属于与TD相关联的多个存储器页的装置;以及4)用于更新SEPT中的第一存储器页的GPA到HPA映射的装置。
在示例43中,示例38的系统,进一步包括:1)用于接收来自TD-VMM的命令以向多个TD-VM中的第一TD-VM分派第一存储器页的装置;2)用于使处理设备进入SEAM的装置;3)用于通过处理设备访问存储与TD-VMM相关联的多个存储器页的属性的物理地址元数据表(PAMT)来验证第一存储器页不属于与TD相关联的多个存储器页的装置;4)用于响应于验证第一存储器页不属于与TD相关联的多个存储器页而使处理设备退出SEAM的装置;5)用于响应于接收来自TDRM的命令而将第一存储器页与TD相关联的装置;6)用于使处理设备进入SEAM的装置;以及7)用于更新SEPT中的第一存储器页的GPA到HPA映射的装置。
尽管已参考有限数量的实现方式描述了本公开,但是,本领域技术人员将从其中理解很多修改和变型。所附权利要求书旨在将所有此类修改和变型涵盖为落入本公开的真实精神和范围内。
在本文中的描述中,阐述了众多特定细节(诸如,特定类型的处理设备和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量/高度、特定处理设备流水线级和操作等的示例)以提供对本公开的透彻理解。然而,对本领域技术人员将显而易见的是,不必采用这些特定细节来实施本公开。在其他实例中,未详细描述公知的组件或方法(诸如,特定的和替代的处理设备架构、用于所描述算法的特定的逻辑电路/代码、特定的固件代码、特定的互连操作、特定的逻辑配置、特定的制造技术和材料、特定的编译器实现方式、以代码对算法的特定表达、特定的掉电和功率选通技术/逻辑、以及计算机系统的其他特定的操作细节)以避免不必要地使本公开模糊。
参考在特定的集成电路中(诸如在计算平台或微处理设备中)在启用SEAM的TD-VMX架构中执行信任域内部的虚拟机来描述实现方式。实现方式也可适用于其他类型的集成电路和可编程逻辑器件。例如,所公开的实现方式不限于台式计算机系统或便携式计算机,诸如,
Figure BDA0002428608540000631
超级本TM计算机。并且也可用在其他设备中,其他设备诸如,手持式设备、平板、其他薄笔记本、芯片上系统(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指的是低逻辑电平。在一个实现方式中,诸如晶体管或闪存单元之类的存储单元能够保存单个逻辑值或多个逻辑值。然而,已经使用了计算机系统中的值的其他表示。例如,十进制数10还可以被表示为二进制值1010和十六进制字母A。因此,值包括能够被保存在计算机系统中的信息的任何表示。
而且,状态可由值或值的部分来表示。作为示例,诸如逻辑1之类的第一值可表示默认或初始状态,而诸如逻辑0之类的第二值可表示非默认状态。另外,在一个实现方式中,术语重置和置位分别是指默认和经更新的值或状态。例如,默认值潜在地包括高逻辑值(即,被重置),而经更新的值潜在地包括低逻辑值(即,被置位)。注意,可利用值的任何组合来表示任何数量的状态。
上述方法、硬件、软件、固件或代码的实现方式可以经由存储在机器可访问、机器可读、计算机可访问、或计算机可读介质上的可由处理元件执行的指令或代码来实现。非瞬态机器可访问/可读介质包括提供(即,存储和/或传输)由诸如计算机或电子系统之类的机器可读的形式的信息的任何机制。例如,非瞬态机器可访问介质包括:随机存取存储器(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)”一般应解释为意指“一个或多个”,除非另外指定或从上下文清楚是指单数形式。此外,通篇对术语“实现方式”或“一个实现方式”或“一实现方式”或“一种实现方式”的使用不旨在意指同一个实现方式,除非被描述为如此。此外,如本文中所使用的术语“第一”、“第二”、“第三”、“第四”等旨在用作用于在不同要素之间进行区分的标记,并且可以不一定具有根据它们的数值指定的顺序含义。

Claims (25)

1.一种处理器,包括:
处理器核,用于:
初始化信任域TD以及用于管理所述TD的信任域资源管理器TDRM;
初始化用于管理多个TD-VM的所述TD内的虚拟机监视器TD-VMM;
响应于接收来自所述TDRM的指令,将多个存储器页与所述TD独占地相关联,其中所述多个存储器页利用所述TDRM不能访问的TD私有加密密钥被加密;以及
启用所述处理器的安全仲裁模式SEAM,所述SEAM被分派所述TDRM不能访问的存储器的SEAM范围,其中所述存储器的SEAM范围用于提供所述TDRM与所述多个TD-VM之间的隔离;以及
一个或多个寄存器,用于存储:
所述存储器的SEAM范围的标识符;以及
TD密钥标识符密钥ID,标识所述TD私有加密密钥。
2.如权利要求1所述的处理器,其中,所述处理器核进一步用于响应于来自所述TD-VMM的命令而进行以下操作:
向所述多个TD-VM中的第一TD-VM分派与所述TD相关联的所述多个存储器页中的第一存储器页;
向所述多个TD-VM中的第二TD-VM分派与所述TD相关联的所述多个存储器页中的第二存储器页;以及
向所述TD-VMM分派与所述TD相关联的所述多个存储器页中的第三存储器页。
3.如权利要求1所述的处理器,进一步包括物理地址元数据表PAMT,所述PAMT用于存储与所述TD相关联的所述多个存储器页的属性,其中存储器页的属性包括所述存储器页的状态、类型、所有者标识符、或状况中的至少一个。
4.如权利要求1所述的处理器,其中,所述存储器的SEAM范围包括利用所述TDRM不能访问的SEAM私有加密密钥被加密的一个或多个存储器页。
5.如权利要求1-4中的任一项所述的处理器,其中,所述存储器的SEAM范围包括用于存储安全扩展页表SEPT的一个或多个存储器页,其中所述SEPT包括与所述TD相关联的所述多个存储器页的客户机物理存储器地址GPA到主机物理存储器地址HPA的映射。
6.如权利要求5所述的处理器,其中,所述SEPT包括:
客户机SEPT,用于存储与所述TD相关联的所述多个存储器页中的第一存储器页的第一GPA到HPA映射,其中所述第一存储器页由所述TD-VMM分派给所述多个TD-VM中的一个或多个;以及
主机SEPT,用于存储与所述TD相关联的所述多个存储器页中的第二存储器页的第二GPA到HPA映射,其中所述第二存储器页由所述TD-VMM分派给所述TD-VMM。
7.如权利要求5所述的处理器,其中,所述处理器核进一步用于:
响应于来自所述TDRM的指令,初始化主虚拟机控制结构VMCS并且将所述主VMCS存储在所述存储器的SEAM范围中以维护所述TD-VMM的执行状态,其中所述主VMCS包括指向所述SEPT的指针;以及
响应于来自所述TD-VMM的命令,初始化多个次VMCS并且将所述多个次VMCS存储在所述存储器的SEAM范围中以用于维护所述多个TD-VM的执行状态。
8.如权利要求5所述的处理器,其中,所述处理器核进一步用于:
接收来自所述TD-VMM的命令以向所述多个TD-VM中的第一TD-VM分派与所述TD相关联的所述多个存储器页中的第一存储器页;
进入所述处理器的所述SEAM;以及
更新所述SEPT中的所述第一存储器页的GPA到HPA映射。
9.如权利要求5所述的处理器,其中,所述处理器核进一步用于:
接收来自所述TD-VMM的命令以向所述多个TD-VM中的第一TD-VM分派第一存储器页;
进入所述处理器的所述SEAM;
通过访问存储与所述TD相关联的所述多个存储器页的属性的物理地址元数据表PAMT来验证所述第一存储器页属于与所述TD相关联的所述多个存储器页;以及
更新所述SEPT中的所述第一存储器页的GPA到HPA映射。
10.如权利要求5所述的处理器,其中,所述处理器核进一步用于:
接收来自所述TD-VMM的命令以向所述多个TD-VM中的第一TD-VM分派第一存储器页;
进入所述处理器的所述SEAM;
通过访问存储与所述TD相关联的所述多个存储器页的属性的物理地址元数据表PAMT来验证所述第一存储器页不属于与所述TD相关联的所述多个存储器页;
响应于验证所述第一存储器页不属于与所述TD相关联的所述多个存储器页,退出所述处理器的所述SEAM;
响应于接收来自所述TDRM的命令,将所述第一存储器页与所述TD相关联;
进入所述处理器的所述SEAM;以及
利用所述第一存储器页的GPA到HPA映射来更新所述SEPT。
11.如权利要求5所述的处理器,其中,所述处理器核进一步用于:
当处于第一TD-VM的控制之下时,接收来自所述第一TD-VM的程序调用;
确定所述程序调用的执行需要来自所述TD-VMM的支持;
执行VM退出以进入所述处理器的所述SEAM;
从所述处理器的所述SEAM执行VM进入以将对所述处理器的控制传递给所述TD-VMM;以及
接收来自所述TD-VMM的命令以执行所述程序调用。
12.一种系统,包括:
存储器设备;
处理器,用于:
初始化信任域TD以及用于管理所述TD的信任域资源管理器TDRM;
初始化用于管理多个TD-VM的所述TD内的虚拟机监视器TD-VMM;
响应于接收来自所述TDRM的指令,将所述存储器设备的多个页与所述TD独占地相关联,其中所述存储器设备的所述多个页利用所述TDRM不能访问的TD私有加密密钥被加密;以及
启用所述处理器的安全仲裁模式SEAM,所述SEAM被分派所述TDRM不能访问的所述存储器设备的SEAM范围,其中所述SEAM范围用于提供所述TDRM与所述多个TD-VM之间的隔离;以及
一个或多个硬件寄存器,用于存储:
存储器的所述SEAM范围的标识符;以及
TD密钥标识符密钥ID,标识所述TD私有加密密钥。
13.如权利要求12所述的系统,其中,所述SEAM范围包括用于存储安全扩展页表SEPT的所述存储器设备的一个或多个页,其中所述SEPT包括与所述TD相关联的所述存储器设备的所述多个页的客户机物理存储器地址GPA到主机物理存储器地址HPA的映射。
14.一种方法,包括:
由处理设备初始化信任域TD以及用于管理所述TD的信任域资源管理器TDRM;
初始化用于管理多个TD-VM的所述TD内的虚拟机监视器TD-VMM;
响应于接收来自所述TDRM的指令,将多个存储器页与所述TD独占地相关联,其中所述多个存储器页利用所述TDRM不能访问的TD私有加密密钥被加密;以及
启用所述处理设备的安全仲裁模式SEAM,所述SEAM被分派所述TDRM不能访问的存储器的SEAM范围,其中所述存储器的SEAM范围用于提供所述TDRM与所述多个TD-VM之间的隔离;以及
在所述处理设备的一个或多个寄存器中存储:
所述存储器的SEAM范围的标识符;以及
TD密钥标识符密钥ID,标识所述TD私有加密密钥。
15.如权利要求14所述的方法,进一步包括响应于来自所述TD-VMM的命令而进行以下操作:
向所述多个TD-VM中的第一TD-VM分派与所述TD相关联的所述多个存储器页中的第一存储器页;
向所述多个TD-VM中的第二TD-VM分派与所述TD相关联的所述多个存储器页中的第二存储器页;以及
向所述TD-VMM分派与所述TD相关联的所述多个存储器页中的第三存储器页。
16.如权利要求14所述的方法,进一步包括存储物理地址元数据表PAMT,其中所述PAMT用于存储与所述TD-VMM相关联的多个存储器页的属性,其中存储器页的属性包括所述存储器页的状态、类型、所有者标识符、或状况中的至少一个。
17.如权利要求14所述的方法,进一步包括利用所述TDRM不能访问的SEAM私有加密密钥来加密所述存储器的SEAM范围中的一个或多个存储器页。
18.如权利要求14-17中的任一项所述的方法,进一步包括在所述存储器的SEAM范围的一个或多个存储器页中存储安全扩展页表SEPT,其中所述SEPT包括与所述TD相关联的所述多个存储器页的客户机物理存储器地址GPA到主机物理存储器地址HPA的映射。
19.如权利要求18所述的方法,其中,所述SEPT包括:
客户机SEPT,用于存储与所述TD相关联的所述多个存储器页中的第一存储器页的第一GPA到HPA映射,其中所述第一存储器页由所述TD-VMM分派给所述多个TD-VM中的一个或多个;以及
主机SEPT,用于存储与所述TD相关联的所述多个存储器页中的第二存储器页的第二GPA到HPA映射,其中所述第二存储器页由所述TD-VMM分派给所述TD-VMM。
20.如权利要求18所述的方法,进一步包括:
响应于来自所述TDRM的指令,初始化主虚拟机控制结构VMCS并且将所述主VMCS存储在所述存储器的SEAM范围中以维护所述TD-VMM的执行状态,其中所述主VMCS包括指向所述SEPT的指针;以及
响应于来自所述TD-VMM的命令,初始化多个次VMCS并且将所述多个次VMCS存储在所述存储器的SEAM范围中以用于维护所述多个TD-VM的执行状态。
21.如权利要求18所述的方法,进一步包括:
接收来自所述TD-VMM的命令以向所述多个TD-VM中的第一TD-VM分派与所述TD相关联的所述多个存储器页中的第一存储器页;
使所述处理设备进入所述SEAM;以及
利用所述第一存储器页的GPA到HPA映射来更新所述SEPT。
22.如权利要求18所述的方法,进一步包括:
接收来自所述TD-VMM的命令以向所述多个TD-VM中的第一TD-VM分派第一存储器页;
使所述处理设备进入所述SEAM;
通过所述处理设备访问存储与所述TD相关联的所述多个存储器页的属性的物理地址元数据表PAMT来验证所述第一存储器页属于与所述TD相关联的所述多个存储器页;以及
更新所述SEPT中的所述第一存储器页的GPA到HPA映射。
23.如权利要求18所述的方法,进一步包括:
接收来自所述TD-VMM的命令以向所述多个TD-VM中的第一TD-VM分派第一存储器页;
使所述处理设备进入所述SEAM;
通过所述处理设备访问存储与所述TD-VMM相关联的多个存储器页的属性的物理地址元数据表PAMT来验证所述第一存储器页不属于与所述TD相关联的所述多个存储器页;
响应于验证所述第一存储器页不属于与所述TD相关联的所述多个存储器页,使所述处理设备退出所述SEAM;
响应于接收来自所述TDRM的命令,将所述第一存储器页与所述TD相关联;
使所述处理设备进入所述SEAM;以及
更新所述SEPT中的所述第一存储器页的GPA到HPA映射。
24.一种设备,包括:用于执行如权利要求14-17中的任一项所述的方法的装置。
25.一种机器可读非瞬态介质,具有指令,所述指令当由处理器执行时使所述处理器执行如权利要求14-17中的任一项所述的方法。
CN202010228924.2A 2019-06-28 2020-03-27 信任域架构内的信任域内部的可缩放虚拟机操作 Pending CN112148425A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/456,628 US11099878B2 (en) 2019-06-28 2019-06-28 Scalable virtual machine operation inside trust domains within the trust domain architecture
US16/456,628 2019-06-28

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202410125852.7A Division CN117931376A (zh) 2019-06-28 2020-03-27 信任域架构内的信任域内部的可缩放虚拟机操作

Publications (1)

Publication Number Publication Date
CN112148425A true CN112148425A (zh) 2020-12-29

Family

ID=69953798

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010228924.2A Pending CN112148425A (zh) 2019-06-28 2020-03-27 信任域架构内的信任域内部的可缩放虚拟机操作

Country Status (3)

Country Link
US (3) US11099878B2 (zh)
EP (3) EP4328747A2 (zh)
CN (1) CN112148425A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024000565A1 (en) * 2022-07-01 2024-01-04 Intel Corporation Methods and apparatuses to debug confidential virtual machine for processor in production mode

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11461244B2 (en) * 2018-12-20 2022-10-04 Intel Corporation Co-existence of trust domain architecture with multi-key total memory encryption technology in servers
US11842227B2 (en) * 2019-10-10 2023-12-12 Advanced Micro Devices, Inc. Hypervisor secure event handling at a processor
US11677754B2 (en) * 2019-12-09 2023-06-13 Daniel Chien Access control systems and methods
US11875168B2 (en) 2020-03-19 2024-01-16 Oracle International Corporation Optimizing execution of foreign method handles on a virtual machine
US11513779B2 (en) 2020-03-19 2022-11-29 Oracle International Corporation Modeling foreign functions using executable references
GB2593736B (en) * 2020-03-31 2022-11-16 Advanced Risc Mach Ltd Verifying address translation integrity
US11543976B2 (en) * 2020-04-01 2023-01-03 Oracle International Corporation Methods for reducing unsafe memory access when interacting with native libraries
CN117063162A (zh) * 2021-03-26 2023-11-14 英特尔公司 用于在可信区中实现共享虚拟存储器的装置和方法
WO2023230836A1 (en) * 2022-05-31 2023-12-07 Intel Corporation Virtual microcontroller for device authentication in a confidential computing environment

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7069442B2 (en) * 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US9870324B2 (en) * 2015-04-09 2018-01-16 Vmware, Inc. Isolating guest code and data using multiple nested page tables
US9842065B2 (en) * 2015-06-15 2017-12-12 Intel Corporation Virtualization-based platform protection technology
US20180260251A1 (en) 2016-08-28 2018-09-13 Vmware, Inc. Use of nested hypervisors by a resource-exchange system to enhance data and operational security and to facilitate component installation
US10621340B2 (en) * 2016-09-01 2020-04-14 Intel Corporation Hybrid hypervisor-assisted security model
US11687654B2 (en) 2017-09-15 2023-06-27 Intel Corporation Providing isolation in virtualized systems using trust domains

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024000565A1 (en) * 2022-07-01 2024-01-04 Intel Corporation Methods and apparatuses to debug confidential virtual machine for processor in production mode

Also Published As

Publication number Publication date
EP4152194A1 (en) 2023-03-22
US20200409734A1 (en) 2020-12-31
US20210373933A1 (en) 2021-12-02
US11748146B2 (en) 2023-09-05
EP3757839A1 (en) 2020-12-30
US20240045709A1 (en) 2024-02-08
EP3757839B1 (en) 2022-11-23
EP4328747A2 (en) 2024-02-28
US11099878B2 (en) 2021-08-24

Similar Documents

Publication Publication Date Title
US11461244B2 (en) Co-existence of trust domain architecture with multi-key total memory encryption technology in servers
JP7118767B2 (ja) 信頼ドメインを用いた、仮想化されたシステムにおける分離の提供
US11934843B2 (en) Secure arbitration mode to build and operate within trust domain extensions
EP3671515B1 (en) Method and apparatus for trust domain creation and destruction
US11748146B2 (en) Scalable virtual machine operation inside trust domains within the trust domain architecture
EP3198453B1 (en) Memory initialization in a protected region
EP3757859B1 (en) Host-convertible secure enclaves in memory that leverage multi-key total memory encryption with integrity
EP3671522B1 (en) Secure encryption key management in trust domains
CN112149125A (zh) 使用与高速缓存行有关的存储器所有权位防止信任域访问
US11139967B2 (en) Restricting usage of encryption keys by untrusted software
CN117931376A (zh) 信任域架构内的信任域内部的可缩放虚拟机操作

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination