CN113051192A - 具有能够实现tdx keyid缩放的自包含范围的tdx岛 - Google Patents

具有能够实现tdx keyid缩放的自包含范围的tdx岛 Download PDF

Info

Publication number
CN113051192A
CN113051192A CN202011024801.3A CN202011024801A CN113051192A CN 113051192 A CN113051192 A CN 113051192A CN 202011024801 A CN202011024801 A CN 202011024801A CN 113051192 A CN113051192 A CN 113051192A
Authority
CN
China
Prior art keywords
memory
tdi
island
tdirm
processor
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
CN202011024801.3A
Other languages
English (en)
Inventor
G·格宗
H·M·科斯拉维
V·冯博柯恩
B·E·洪特利
D·卡斯皮
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 CN113051192A publication Critical patent/CN113051192A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • 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
    • 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)

Abstract

具有能够实现TDX KEYID缩放的自包含范围的TDX岛所公开的实施例涉及具有自包含范围的信任域岛。在一个示例中,系统包括多个套接口,每个套接口包括多个核、多个多密钥总存储器加密(MK‑TME)电路、多个存储器控制器和信任域岛资源管理器(TDIRM),用于:初始化与TD岛相关联的信任域岛(TDI)岛控制结构(TDICS)、初始化与TD岛相关联的信任域岛保护存储器(TDIPM)、标识密钥所有权表(KOT)中的主机密钥标识符(HKID)、将HKID指配给密码密钥并且将HKID存储在TDICS中、将多个核中的一个与TD岛相关联、将来自第一核的地址空间的存储器页添加到TDIPM、并且将执行控制转移到第一核以执行TDI,并且其中,随着映射到TD岛的存储器减少,系统中可用的HKID的数量增加。

Description

具有能够实现TDX KEYID缩放的自包含范围的TDX岛
技术领域
本发明的领域一般涉及计算机处理器架构,并且更特别地涉及具有自包含范围(self-contained scope)以能够实现TDIX KeyID缩放(scaling)的信任域岛扩展(TrustDomain Island Extension,TDIX)岛。
背景技术
现代处理装置采用磁盘加密来保护静止数据。然而,存储器中的数据是明文,并且易受攻击。攻击者可以使用各种技术,包括基于软件和硬件的总线扫描、存储器扫描、硬件探测等,以从存储器检索数据。来自存储器的该数据可以包括敏感数据,包括隐私敏感数据、IP敏感数据,以及还有用于文件加密或通信的密钥(key)。随着利用由云服务提供商提供的基于虚拟化的托管服务将数据和企业工作负荷移动到云中的当前趋势,数据的暴露进一步加剧。
附图说明
本发明通过示例的方式说明,并且不限于附图中的图,其中相似附图标记指示类似元素,并且其中:
图1是示出了根据一些实施例用于执行指令的处理组件的框图;
图2A示出了使用映射到套接口的信任域岛(TDI)岛在虚拟化系统中提供隔离的多套接口计算系统的实施例的框图;
图2B示出了使用映射到存储器控制器的信任域岛(TDI)岛在虚拟化系统中提供隔离的多套接口计算系统的实施例的框图;
图3示出了使用信任域岛(TDI)岛在虚拟化系统中提供隔离的计算系统的存储器映射的实施例;
图4示出了根据信任域岛(TDI)架构的实施例用于创建TDI岛的方法的流程图;
图5示出了使用信任域岛(TDI)在虚拟化系统中提供隔离的计算系统的实施例的框图;
图6示出了使用信任域岛(TDI)在虚拟化系统中提供隔离的计算系统的另一实施例的框图;
图7示出了使用TDI在虚拟化系统中提供隔离的计算系统的另一实施例的框图;
图8是TDI架构的实施例的框图;
图9示出了根据本公开的实施例用于创建TDI的方法的流程图;
图10示出了根据本公开的实施例用于初始化信任域岛控制结构(TDICS)和信任域岛保护存储器(TDIPM)的方法的流程图;
图11示出了根据本公开的实施例用于将逻辑处理器与TDI相关联的方法的流程图;
图12示出了根据本公开的实施例用于将来自逻辑处理器的地址空间的存储器页添加到TDIPM的方法的流程图;
图13示出了根据本公开的实施例用于将执行控制转移到逻辑处理器以执行TDI的方法的流程图;
图14示出了根据本公开的实施例用于破坏TDI的方法的流程图;
图15示出了根据本公开的实施例用于防止TDI在逻辑处理器上执行的方法的流程图;
图16示出了根据本公开的实施例用于从与TDI相关联的TDIPM中移除存储器页的方法的流程图;
图17A-17B是示出了根据本发明的一些实施例的通用向量友好指令格式及其指令模板的框图;
图17A是示出了根据本发明的一些实施例的通用向量友好指令格式及其A类指令模板的框图;
图17B是示出了根据本发明的一些实施例的通用向量友好指令格式及其B类指令模板的框图;
图18A是示出了根据本发明的一些实施例的示例性特定向量友好指令格式的框图;
图18B是示出了根据一个实施例、构成全操作码字段的特定向量友好指令格式的字段的框图;
图18C是示出了根据一个实施例、构成寄存器索引字段的特定向量友好指令格式的字段的框图;
图18D是示出了根据一个实施例、构成扩增操作字段的特定向量友好指令格式的字段的框图;
图19是根据一个实施例的寄存器架构的框图;
图20A是示出了根据一些实施例的示例性有序流水线和示例性寄存器重命名、乱序发布/执行流水线两者的框图;
图20B是示出了根据一些实施例、要被包含在处理器中的有序架构核的示例性实施例和示例性寄存器重命名、乱序发布/执行架构核两者的框图;
图21A-B示出了更特定的示例性有序核架构的框图,该核将是芯片中的若干逻辑块(包括相同类型和/或不同类型的其他核)中的一个;
图21A是根据一些实施例、单个处理器核连同其与片上互连网络以及与其2级(L2)高速缓存的本地子集的连接的框图;
图21B是根据一些实施例在图21A中的处理器核的部分的展开图;
图22是根据一些实施例的处理器的框图,所述处理器可以具有多于一个核、可以具有集成存储器控制器并且可以具有集成图形;
图23-26是示例性计算机架构的框图;
图23示出了根据一些实施例的系统的框图;
图24是根据某实施例的第一更特定的示例性系统的框图;
图25是根据一些实施例的第二更特定的示例性系统的框图;
图26是根据一些实施例的片上系统(SoC)的框图;以及
图27是根据一些实施例对比将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用的框图。
具体实施方式
在以下描述中,阐述了许多特定细节。然而,要理解,可以在没有这些特定细节的情况下实践一些实施例。在其他实例中,尚未详细示出公知的电路、结构和技术,以免使对本描述的理解模糊。
说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用指示所描述的实施例包括特征、结构或特性,但是每个实施例不一定需要包括该特征、结构或特性。此外,此类短语不一定是指相同的实施例。此外,当描述关于实施例的特征、结构或特性时,如果明确描述,则认为在本领域技术人员的知识范围内关于其他实施例的这种特征、结构或特性是有效的。
本文公开了在信任域岛扩展(TDIX)架构上构建的本发明的实施例。TDIX架构基于使用和安全性要求,能够实现1)总存储器加密,2)多密钥存储器加密,以及3)信任域岛。
在本公开的实现中,提供了TDI架构和指令集架构(ISA)扩展(在本文中被称为信任域岛扩展(TDIX))架构。本文公开的TDIX架构有时被简单地称为信任域扩展(TDX)架构,其中信任域与信任域岛共享许多相同的特征,但是不将主机密钥标识符的范围限制为“岛”。
信任域岛/信任域
TDX和TDIX两者都表现出某些优点:它们虑及与不同客户端机器(例如,VM)、客户操作系统、主机操作系统、管理程序等对应的多个安全TDI(或TD)。另外,由相同客户端在相同客户OS内运行的不同应用可以使用多个TDI(或TD)来安全地执行。每个TDI(或TD)可以使用对于在信任域外部执行的软件不可用的一个或多个私有密钥。在一些实施例中,在一个TDI(或TD)中执行的软件有权访问该特定信任域岛专用的私有密钥以及可由多个TDI使用的共享密钥。例如,在TDI内部运行的软件程序可以将私有密钥用于它的安全执行(例如,读、写、执行操作),并且相同的软件可以使用共享密钥来访问与其他TDI共享的结构或装置(例如,打印机、键盘、鼠标、监视器、网络适配器、路由器等)。
TDI甚至可以从特权用户得到保护,所述特权用户诸如OS(主机或客户)、VMM、基本输入/输出系统(BIOS)固件、系统管理模式等。因此,即使恶意软件接管特权信任域岛,诸如OS,TDI中的存储器中存储的敏感数据也将保持受保护。
每个TDI可以独立于其他TDI操作,并且使用由信任域岛资源管理器(TDIRM)指配的(一个或多个)逻辑处理器、存储器和I/O。TDIRM可以作为主机OS的一部分、管理程序或作为单独的软件程序来操作,并且具有对核和其他平台硬件的完全控制。TDIRM将逻辑处理器(例如,物理处理器的执行线程)指配给TDI,然而,不能访问TDI在所指配的(一个或多个)逻辑处理器上的执行状态。类似地,TDIRM可向TDI指配物理存储器和I/O资源,但由于单独加密密钥的使用而不能私密访问TDI的存储器状态。在TDI中执行的软件可以以降低的特权来操作(例如,租户软件可能没有对主机系统上可用的所有资源的完全访问),使得TDIRM可以保持对平台资源的控制。然而,TDIRM不能在定义的情况下影响存储器中或CPU结构中的TDI状态的机密性或完整性。
TDI资源管理器/TDI控制结构/TDI保护存储器
因此,基于信任域岛创建信任执行域的所公开的方法包括:通过处理装置执行信任域岛资源管理器(TDIRM)来初始化信任域岛控制结构(TDICS)和与信任域岛(TDI)相关联的信任域岛保护存储器(TDIPM)。该方法还包括生成一次性密码(cryptographic)密钥、将一次性密码密钥指配给多密钥总存储器加密(MK-TME)引擎中的可用主机密钥标识符(HKID)、以及将HKID存储在TDICS中。该方法还包括:将逻辑处理器关联到TDI、将来自逻辑处理器的地址空间的存储器页添加到TDIPM、以及将执行控制转移到逻辑处理器以执行TDI。
在一些实施例中,TDIRM、TDICS、TDIPM等在信任域岛(TDI)上操作并与信任域岛(TDI)相关联。但在其他实施例中,那些元件在信任域岛上操作。信任域岛在概念上类似于信任域,但是涉及“岛”环境,其提供主机密钥标识符的自包含范围。由于范围限于岛的边界,所以多个岛可以具有相同的主机密钥标识符。因此,对于平台可用KeyID的数量与所定义的岛的数量成比例地增加。例如,TD岛可以涵盖套接口(socket),在系统中存在多个套接口。或者,TD岛可以涵盖一个或多个存储器控制器。虽然它们在概念上是类似的,但TDIRM、TDICS、TDIPM等的概念有时被称为TDIRM、TDICS、TDIPM等,其中“I”表示术语与“岛”相关联。
创建和破坏信任域岛
本公开的各方面针对创建和破坏信任域岛(TDI)。TDI指的是可以支持客户(例如,租户)工作负荷的安全软件执行环境。租户工作负荷可以包括操作系统(OS)连同在该OS之上运行的其他应用。租户工作负荷还可以包括在虚拟机监视器(VMM)之上运行的虚拟机(VM)连同其他应用。
常规云服务器计算环境为各种装置提供远程计算资源和远程数据存储资源。当租户正访问由云服务提供商(CSP)提供的远程计算和数据存储时,保护数据免受未授权人和恶意软件的访问是特别重要的。驻留在存储器中的未加密明文数据以及在存储器与处理器之间移动的数据可能易受各种攻击。攻击者可以使用各种技术(例如,总线扫描、存储器扫描等)从存储器中检索数据。在一些实例中,数据包括用于加密敏感数据的密钥或其他信息。
总存储器加密和多密钥总存储器加密
总存储器加密(TME)技术提供了一种保护存储器中的数据的解决方案。TME允许在处理器核上执行的软件的存储器访问使用加密密钥来加密。例如,加密密钥可以是在引导时间生成的128位密钥,并且用于加密发送到外部存储器总线的数据。特别地,当处理器向存储器发出写请求时,数据可以在被发送到存储器之前由存储器加密引擎加密,其中以加密形式存储所述数据。当从存储器读取数据时,数据以加密形式被发送到处理器,并且当处理器接收数据时,由加密密钥解密所述数据。因为数据以明文的形式保持在处理器中,TME技术不要求修改现有软件以及现有软件如何与处理器交互。
多密钥总存储器加密(MK-TME)技术是TME技术的扩展,其提供对多个加密密钥的支持。这虑及分隔的(compartmentalized)存储器加密。例如,处理器架构可以允许在引导过程(即,当系统首次通电时由计算系统执行的操作)期间生成多个加密密钥,其将用于加密不同的存储器页。与加密密钥相关联的密钥标识符(ID)可以由各种硬件和软件组件用作TME和MK-TME技术的一部分。多密钥扩展特别适合于与多信任域岛架构(诸如由CSP使用的架构)一起工作,因为所支持的密钥的数量可以是与实现相关的。
在一些实现中,CSP具有指定使用VM特定密钥来加密的VM页的选择。在其他实例中,CSP选择特定VM页以保持明文或以使用对软件可能不透明的不同短暂(ephemeral)密钥来加密。MK-TME引擎可以用于支持使用不同密钥加密的不同页。MK-TME引擎可以支持每信任域岛至少一个密钥,并且因此实现CSP上存在的不同工作负荷之间的密码隔离。工作负荷可以与租户或所有者(例如,从CSP租赁对主机服务器的使用的实体)相关联。
与虚拟机扩展互操作的TDIX架构
信任域岛扩展(TDIX)架构可以与诸如VMX(虚拟机扩展)之类的其他虚拟化架构扩展同时操作。VMX允许多个操作系统以安全和高效的方式同时共享处理器资源。具有VMX的计算系统可以充当多个虚拟系统或VM。每个VM可以在单独的分区中运行操作系统和应用。VMX还提供被称为虚拟机监视器(VMM)的系统软件层,用于管理虚拟机的操作(参见TDIRM)。
VMX可以提供虚拟机控制结构(VMCS)以管理VM转变(例如,VM进入和VM退出)。VM进入是从VMM到VM操作的转变。VM进入可以由VMM执行的指令触发。VM退出是从VM操作到VMM的转变。VM退出可以由要求从VM退出的硬件事件触发。例如,支持VM的页表中的页错误可导致VM退出。VMCS可以是管理VM转变的6部分数据结构。VMCS可以跟踪:客户状态区域(例如,当VM退出发生时的处理器状态,其被加载到VM进入上);主机状态区域(例如,加载到VM退出上的处理器状态);VM执行控制字段(例如,确定VM退出原因的字段);VM退出控制字段;VM进入控制字段;以及VM退出信息字段(例如,接收关于VM退出的信息并描述VM退出的原因和性质的文件)。
在一些实现中,根据本文描述的实施例,TDIX作为对VMX的替代来操作,TDIX包括VMX的许多特征并添加附加的安全层。在其他实现中,TDIX与VMX同时操作。例如,运行虚拟化架构(例如,VMX)的CSP主机服务器可能需要利用MK-TME技术和TDIX架构两者来高效地执行租户软件。在一些实施例中,MK-TME加密电路使用符合电子和电气工程师协会标准IEEE1619的密文窃取高级加密标准(XTS-AES)。主机服务器可以在TDI内执行高度敏感的应用,使得甚至执行VM的管理程序也无权访问分配给TDI及其信任计算基础(TCB)的存储器页和加密密钥。TCB是指有能力影响对系统的整体操作的信任的硬件、固件和/或软件组件的集合。同时,主机服务器可以使用MK-TME技术运行需要较少安全性和隔离的应用,其中管理程序保持对这些较不敏感应用中使用的加密密钥和存储器页的控制。然后,VMM可以使用不同的MK-TME密钥将不同的应用彼此隔离,但是仍然保持在每个应用的TCB中。
在各种实现中,本公开的各方面解决使MK-TME技术和TDIX架构能够共存的需要。在一些实现中,所公开的计算系统确保分配给TDI的密钥ID不能由MK-TME软件使用,MK-TME软件诸如在TDI的TCB之外运行的管理程序或VM。在相关实现中,所公开的架构确保两个活动的TDI不能同时使用被指定为TDI的受限密钥ID的密钥ID。对于存储在TDI中的数据的附加安全性,还可以期望在转储清除(flush)与消失的TDI相关联的所有高速缓存数据之后,将消失的TDI的密钥ID重新分配给其他TDI。
访问共享数据结构
此外,即使在高度安全的TDI内,客户端可能也需要与共享结构(例如,共享硬件装置)通信。例如,输入-输出(I/O)装置、打印机、网络适配器、路由器或其他处理装置等可以由多个TDI以及由使用MK-TME保护运行VM的管理程序使用。在一些实现中,通过加密与共享结构的操作相关的存储器事务来保护对这样的共享结构(免于其他应用或外部恶意攻击)的访问。因此,TDI可能需要能够使用不同的加密密钥:至少一个受限密钥用于其安全操作和对TDI的私有存储器页的访问,以及至少一个非受限密钥用于TDI与共享结构的通信。在TDI的TCB中操作的软件可以尝试将非受限密钥用于涉及私有存储器页的存储器事务。例如,信任软件可以尝试使用非受限密钥将数据写入私有存储器页。在缺少本说明书中公开的硬件保护的情况下,这种数据可能易受来自TCB外部的程序的软件访问(例如,读取操作)攻击,所述TCB外部的程序可能获得对共享非受限密钥的访问。
用于在虚拟化系统中提供隔离的一些系统没有将CSP软件完全从租户的TCB中移除。此外,这样的系统可以使用本公开的实现避免的单独的芯片集子系统来显著地增加TCB。本公开的TDI架构通过从TCB移除CSP软件来提供客户(租户)工作负荷与CSP软件之间的隔离,从而明确减少TCB。实现通过为CSP客户工作负荷(租户TDI)提供安全隔离提供了对备选系统的技术改进并且虑及从客户的TCB移除CSP软件同时满足CSP的安全性和功能性要求。此外,TDI架构可放缩(scalable)到多个TDI,这可以支持多个租户工作负荷。此外,本文描述的TDI架构可应用于任何动态随机存取存储器(DRAM)或基于存储级存储器(SCM)的存储器,诸如非易失性双列直插式存储器模块(NV-DIMM)。这样,所公开的实施例允许软件利用性能益处,诸如用于SCM的NVDIMM直接存取存储(DAS)模式,而不危及平台安全性要求。
尤其是随着越来越多的企业数据正在移动到云,已经出现了各种技术试图使系统和存储器安全。新兴技术包括上述的总存储器加密(TME),其中从核移动到存储器的数据在硬件中被加密并且在其回到核的途中再次在硬件中被解密。多密钥TME(MK-TME)是对TME的增强,其允许使用多个密钥(所支持的密钥的数量是与实现相关的)和可配置软件以允许使用不同的密钥来加密不同的页。MK-TME引擎支持每信任域岛/租户的密钥(每个信任域岛可以被看作运行独立的工作负荷)并且帮助实现例如在不同的CSP工作负荷之间的密码隔离。
所公开的实施例提供改进的存储器系统。信任域岛扩展(TDIX)架构定义了一种能力,其有时在片上系统(SoC)上下文中使用,该能力提供了客户或租户工作负荷与云服务提供商(CSP)软件之间的隔离。TDIX架构的关键组件包括上述方面中的一些,包括:1)经由总存储器加密(TME)引擎和对TME的多密钥扩展(MK-TME)的存储器加密,2)软件资源管理层(TDI-RM)和3)例如在片上系统(SoC)中的执行状态和存储器隔离能力。TDIX架构向软件提供了以下优点:即,基于使用和安全性要求部署1)总存储器加密;2)多密钥存储器加密;和3)信任域岛的能力。
安全仲裁模式
TDIX建立在安全仲裁模式(SEAM)之上,所述安全仲裁模式是VMX和MK-TME的扩展。在SEAM模式中运行的TDIX-SEAM模块充当主机VMM和客户TDI之间的信任中介。由于TDIX建立在MK-TME之上,所以它依赖于针对可用数量的加密密钥的相同架构,并且可能遭受相同的限制中的一些,即,可用KeyID的数量可能受到限制,这是因为它们使用物理地址位。所公开的实施例通过将KeyID的范围限制到TDIX岛来增加每平台TDIX的KeyID的数量。
创建、部署、使用和破坏信任域岛
因此,本文公开了使用TDIX岛的本发明的实施例,所述TDIX岛是自包含的存储器分区,其中TDI KeyID范围包含在岛内。例如,如果TDIX岛被定义为套接口,则KeyID将进一步按平台上套接口的数量来缩放,因为它们在每套接口的基础上将是唯一的。这允许基于每平台的岛的数量,缩放KeyID超出物理地址位约束。
所公开的实施例的优点包括:1)支持(信任域岛扩展)架构,其提供高保证安全环境,包括例如运行租户软件的CSP工作负荷;2)能够缩放TDIX密钥或KeyID超出物理地址位约束;以及3)对TDIX岛的支持可以被实现为对使用TDIX架构的系统的SEAM/SW升级。
不利用TD岛的备选、次级的一些方法不支持许多TDIX能力,诸如存储器完整性、EPT(扩展页表),并且然后这是对云场景中的部署的主要限制。备选方法也不利用TD岛的密钥概念(key concept)用于密钥缩放。
如上所述,信任域岛扩展(TDIX)架构利用一种被称为信任域岛(TDI)的新类型的虚拟机客户来扩展虚拟机扩展(VMX)。TDI以CPU模式运行,该CPU模式保护其存储器内容的机密性及其CPU状态不受任何其他软件的影响,所述其他软件包括托管的虚拟机监视器(VMM),除非由TDI本身明确共享。TDIX建立在安全仲裁模式(SEAM)之上,所述安全仲裁模式是VMX和MK-TME的扩展。在SEAM模式中运行的Intel TDIX-SEAM模块是一种充当主机VMM和客户TDI之间的中介的并行VMM。由于TDIX建立在MK-TME之上,因此它依赖于针对一定数量的加密密钥的相同架构,并且由于它们使用物理地址位,所以遭受相同的限制中的一些(即,有限数量的KeyID)。本公开的实施例提供通过将KeyID的范围限制到各个TDIX岛来增加每平台的KeyID的数量的方式。例如,如果TDIX岛是套接口,则KeyID将进一步以平台上的多个套接口数量来缩放。
更特别地,所公开的实施例通过执行以下算法中的一个或多个来确保本发明的益处:
1)将可供TDIX使用的分区存储器划分成岛,其中岛是连续的物理存储器范围,并且可跨越一些TDIX可配置存储器范围(CMR)。单个CMR可以支持多个岛。对于将存储器划分为TD岛的示例,参见以下对图3的讨论。
2)确保例如由VMM分配给TDI(由VMM)的所有存储器驻留在(限制于)单个岛。使用SEAM作为存储器和处理器核之间的信任中介来检查和强制要求每个TDI被限制于单个岛。所有TDI的私有页到单个岛的分配由SEAM强制/检查。
3)每个岛被分配单独的存储器加密密钥表(与单独的存储器加密密钥表相关联)(以加密岛存储器)。以岛为目标的存储器事务利用从岛的唯一密钥表中选择的密钥(基于存储器事务KeyID)来加密。
4)在系统引导时间设置并锁定到岛的存储器分区。在一些实施例中,分区由BIOS(内置操作系统)基于对密钥表和相关联的岛的数量的硬件支持来执行。在分区之后,BIOS可以报告在高级配置和电源接口(ACPI)表中的设置,即,与每个岛相关联的存储器范围。在一些实施例中,配置由安全系统软件检查和验证(例如,MCHECK功能可用于检查所分配的分区当中的一致性)。
根据某些实施例,VMM和TDIRM一旦被配置,则可以支持对本发明的优点的继续利用。例如,在TDI创建时间(TDICREATE),VMM和TDIRM可以将TDI指派(限制)到系统中的岛中的一个。作为另外的示例,当将私有页分配和映射到TDI时,VMM和TDIRM仅分配/映射TDI在创建时被指配的在岛中的页。当启动TDI存储器加密、启动仅到与分配给TDI的岛相关联的密钥表的TDI密钥编程(使用TDICONFIGKEYS)时,可以实现进一步的益处。当取消调度TDI时,只转储清除映射到TD岛的高速缓存,即,在将TDI回收的KeyID分配给新调度的TDI之前。
因此,所公开的实施例支持基于每岛的存储器管理和映射。此外,所公开的实施例支持在创建时(例如,在TDICREATE)的TD岛指配,并且确保所有TDI私有页仅被指配给被指配给该岛的TDI。支持配置每岛的存储器加密密钥(TDICONFIGKEYS)。
应当注意,所公开的实施例支持基于每岛的高速缓存转储清除(TBWBINVD),这具有性能益处,因为它不转储清除系统中的所有高速缓存。
如上所述,由于所公开的实施例中的TD岛加密主机密钥ID的自包含范围,增加了可用于平台的KeyID的数量。例如,当每个TD岛被映射到平台中的多个套接口中的一个时,系统中的主机密钥标识符(HKID)的数量等于系统中的套接口的数量乘以密钥所有权表(KOT)中的条目的数量。对于另一示例,当每个TD岛被映射到平台中的多个套接口中的每个套接口中的多个存储器控制器之一时,系统中的HKID的数量等于套接口的数量乘以每个套接口中的存储器控制器的数量再乘以KOT中的条目的数量。
图1是示出了根据一些实施例用于执行指令的处理组件的框图。如图所示,存储设备101存储要执行的(一个或多个)指令103。在操作中,由提取电路105从存储设备101提取(一个或多个)指令103。所提取的指令107由解码电路109解码以生成解码(decoded)指令111。在一些实施例中,该解码包括生成要由执行电路(诸如执行电路117)执行的多个微操作。解码电路109还解码指令后缀和前缀(如果使用的话)。
在一些实施例中,寄存器重命名、寄存器分配和/或调度电路113提供用于以下中的一个或多个的功能性:1)将逻辑操作数值重命名为物理操作数值(例如,在一些实施例中的寄存器别名表),2)将状态位(status bit)和标志分配给解码指令,以及3)从指令池中调度解码指令以用于在执行电路117上执行(例如,在一些实施例中使用保留站)。
寄存器(寄存器堆)和/或存储器115将数据存储为要由执行电路117操作的指令的操作数。在一些实施例中,写回电路119提交所执行的指令的结果。
示例性寄存器类型包括写掩码(writemask)寄存器、打包数据寄存器、通用寄存器和浮点寄存器,如下面至少针对图19进一步描述和说明的。进一步针对图2-16、图20A-B和图21A-B示出和描述执行电路117和系统100。
图2A示出了使用映射到套接口的信任域岛(TDI)岛在虚拟化系统中提供隔离的多套接口计算系统的实施例的框图。如图所示,具有两个套接口的系统具有映射到每个套接口的TD岛。TD岛200被映射到套接口205,其包括一个或多个核210、高速缓存215、两个AESXTS 220加密电路、两个存储器控制器225、以及一个或多个DRAM 230的两个集合。TD岛255被映射到套接口255,其包括一个或多个核260、高速缓存265、两个AES XTS 270加密电路、两个存储器控制器275、以及一个或多个DRAM 280的两个集合。为了简单起见,将套接口205和255中的每个示为包括两个存储器控制器和加密电路,但是在其他实施例中,该数量可以变化而没有限制。有利地,通过使用具有KeyID的自包含范围的TDIX岛,平台中的可用KeyID的数量等于密钥表大小乘以套接口的数量。例如,通过使用IDX岛,可用KeyID的数量已经加倍。
图2B示出了多套接口计算系统的实施例的框图,该多套接口计算系统使用映射到存储器控制器的信任域岛(TDI)岛在虚拟化系统中提供隔离。如图所示,具有两个套接口的系统具有映射到每个存储器控制器225、275的TD岛201、202、251、252。这里,套接口205包括一个或多个核210、高速缓存215、两个AES XTS 220加密电路、两个存储器控制器225、以及一个或多个DRAM 230的两个集合。套接口255包括一个或多个核260、高速缓存265、两个AESXTS 270加密电路、两个存储器控制器275和一个或多个DRAM 280的两个集合。为了简单起见,将套接口205和255中的每个示为包括两个存储器控制器和加密电路,但是在其他实施例中,该数量可以变化而没有限制。有利地,通过使用具有KeyID的自包含范围的TDIX岛,平台中的可用KeyID的数量等于密钥表大小乘以套接口的数量。例如,这里,通过使用被映射到四个存储器控制器275和AES XTS 270组合中的每个的TDIX岛,可用KeyID的数量已经变为四倍。即,可用KeyID的数量等于套接口的数量乘以密钥表大小再乘以每套接口的存储器控制器的数量。
图3示出了使用信任域岛(TDI)在虚拟化系统中提供隔离的计算系统的存储器映射的实施例。如图所示,存储器300具有上存储器305和下存储器310区域。已经将存储器300分区为N个可配置存储器范围(CMR)以供TDIX岛使用:CMR 0 315、CMR 1 320、CMR 2 325、CMR 3 335、CMR 4 340、CMR 5 350、CMR 6 355和CMR N-1 360。存储器300还包含两个非TDIX分区:非TDIX 330和非TDIX 345。如图所示,也将存储器300分区为M个TDIX岛:岛0365、岛1 370、岛2 375、岛3 380和岛M-1 385,其中的每个都包括密钥表。TDIX岛中的每个可以被映射到一个或多个可配置存储器范围。例如,TDIX岛0 365被映射到CMR 0 315和CMR1 320。
图4示出了根据实施例用于创建信任域岛(TDI)岛的方法的流程图。如图所示,诸如TDIRM(信任域岛资源管理器)之类的处理装置用于执行流程400。如上所述,TDIRM可作为主机OS的一部分、管理程序或作为单独的软件程序来操作,并且具有对核和其他平台硬件的完全控制。
在开始之后,在405,TDIRM将初始化与第一TDI相关联的信任域岛控制结构(TDICS)。在410,TDIRM将初始化与第一TDI相关联的信任域岛保护存储器(TDIPM)。
在415,TDIRM将标识密钥所有权表(KOT)中可用的主机密钥标识符(HKID)。KOT是用于管理启用TDIX的系统内的HKID库存(inventory)的数据结构。在一些实施例中,特定数量的HKID可用于供由TDIRM生成的所有TDI使用。除此之外,KOT维护可用于供系统中创建的所有TDI使用的所有HKID的状态等。HKID可以具有分配的、空闲的(或可用的)、回收的或配置的状态。
在420,TDIRM要将HKID指配给密码密钥并且将HKID存储在TDICS中。在一些实施例中,TDIRM将一次性密码密钥指配给多密钥总存储器加密(MK-TME)引擎上的可用HKID(在415处标识)。TDIRM可以执行指令(例如,TDCONFIGKEY)以配置一次性密码密钥和可用HKID以供诸如图5的加密引擎554之类的加密引擎使用,所述加密引擎对TDI操作。TDCONFIGKEY指令对应于用于定义和/或配置受保护域的PCONFIG指令,诸如针对图3示出和描述的存储器300的可配置存储器域。通过执行TDCONFIGKEY指令,TDIRM使MK-TME引擎的存储器保护控制器(例如,图8的存储器保护控制器842)为TDI编程密钥和保护模式。然后,存储器保护控制器可以向TDIRM返回指示密钥已经被配置的状态码(status code)。
在425,TDIRM将第一核与第一TDI相关联。例如,TDIRM可以将逻辑处理器与第一TDI相关联,所述第一TDI可以在相关联的逻辑处理器上操作。在一些实施例中,TDIRM充当完整的主机,并且对逻辑处理器和逻辑处理器正在其上操作的处理核实施控制。将逻辑处理器与TDI相关联所需的动作将针对图11更详细地描述。
在430,TDIRM要将来自第一核的地址空间的存储器页添加到TDIPM。例如,TDIRM将来自逻辑处理器的地址空间的存储器页添加到TDIPM,如针对图12更详细描述的那样。
在一些实施例中,TDIRM在435通过以存储器页的内容项扩展TDI测量来测量存储器页。例如,TDIRM执行特定指令(例如,TDEXTEND)以利用添加的页的内容扩展TDI测量。针对TD扩展测量,以防止用于创建TD的指令被再次使用(例如,TDCREATE、TDADDPAGE等)。可以通过对用于创建TD并且将初始代码和数据加载到其存储器中的指令输入(例如,TDCREATE、TDADD和TDEXTEND)计算安全散列来获得TD的测量。可以使用安全散列算法来计算测量,因此系统软件可以仅通过遵循由TDIRM执行的确切指令序列来构建与期望测量匹配的TD。TDX设计可以使用256位SHA-2安全散列函数来计算测量。在一个实施例中,TD测量可以在添加到TDPM的页的每个256字节区块(chunk)上扩展。重复测量,直到已经测量所添加的TD页的每个256字节区块为止。每个TD测量可以被存储在TDCS的字段中。
在440,TDIRM将执行控制转移到第一核以执行第一TDI(如针对图13进一步描述的那样),其中TDIPM的范围被限制到第一TDI的边界。
图5示出了使用信任域岛(TDI)在虚拟化系统中提供隔离的计算系统的实施例的框图。在操作中,根据本公开的实现,计算系统500可以使用TDI在虚拟化系统中提供隔离。计算系统500可以包括虚拟化服务器501,其包括处理器550、存储器535和网络接口555。处理器550可以实现TDI架构和TDI架构的ISA扩展(例如,TDIX)。
TDI 520A、520N可作为由处理器550实现的TDI架构的一部分来执行。TDI 520A、520N可指支持客户(例如,租户)工作负荷的软件执行环境。如图所示,TDI 520A包括TDICS510A,其包括TCSList 612、TDI标识符614、密钥ID 616、修订版(Revision)ID 618、TDI测量620、MK-TME密钥槽ID 622和其他TDI元数据624,如图6所示。TDI 520A还包括TDITCS 515A,其包括父代TDICS引用630和TDI状态632,如图6所示。TDI 520A还包括TDIRCS 634,其包括TDIRM状态636。TDICS 510A、TDITCS 515A和TDIRCS 634全部正在TDIPM 608中运行。
租户工作负荷可以包括OS连同在该OS之上运行的其他应用。租户工作负荷还可以包括在VMM之上运行的VM。TDI架构可以通过在TDI 520A、520N与处理器550上执行的其他软件(例如,CSP提供的软件)之间提供隔离来提供保护TDI 520A、520N中运行的租户工作负荷的能力。TDI架构不对系统内操作的TDI的数量施加任何架构限制,然而,由于其他约束,软件和硬件限制可能限制系统上同时运行的TDI的数量。
当租户不信任CSP强制实施机密性时,可以在TDI 520A、520N内执行租户工作负荷。为了根据本公开的实现进行操作,要在其上执行TDI的CPU必须支持TDI架构。在一个实施例中,租户工作负荷可以包括在VMM之上运行的VM。这样,虚拟化模式(例如,VMX)也可以由其上要执行TDI的CPU支持。在另一实施例中,TDI 520A、520N可以不使用虚拟化模式来操作,而是改为可在TDI 520A、520N内运行启发的(enlightened)操作系统(OS)。
TDI架构可以通过包括存储器加密、TDI资源管理以及执行状态和管理隔离能力的功能来提供TDI 520A、520N与在处理器550上执行的其他软件之间的隔离。处理器550的加密电路554可以加密被写入存储器535的数据。在本公开的实施例中,加密引擎554可以是多密钥总存储器加密(MK-TME)引擎。总存储器加密(TME)技术允许由处理器核上执行的软件的存储器访问使用加密密钥来加密。多密钥TME技术可以是TME的扩展,其提供对多个加密密钥的支持,从而虑及分隔的加密。存储器加密还可以由处理器550所维护的若干密钥表(例如,密钥所有权表(KOT)562和密钥加密表(KET)574)来支持。密钥表可以存储在片上存储器中,其中片上存储器不可由处理装置执行的软件直接访问。片上存储器可以在物理上位于与处理核相同的芯片上。资源管理能力可以由TDIRM 525提供。执行状态和管理能力可以由存储器所有权表(MOT)572和访问受控(access-controlled)TDI控制结构提供,访问受控TDI控制结构诸如信任域岛控制结构(TDICS)510A、510N和信任域岛线程控制结构(TDITCS)515A、515N。下面参考图6描述关于这些组件的功能的更多细节。
TDIRM 525表示TDI架构的资源管理层。在一些实施例中,TDIRM 525可以实现为CSP/根VMM的一部分(例如,管理VMM和VM的机器级操作的主要VMM)。TDIRM 525可以是作为TDI架构的一部分而包括的软件模块,该TDI架构管理TDI 520A、520N的操作。TDIRM 525可以充当主机,并且具有对处理器和其他平台硬件的控制。TDIRM 525可以为TDI中的软件指配(一个或多个)逻辑处理器,并且还可以将物理存储器和I/O资源指配给TDI。虽然TDIRM525可以指派和管理资源,诸如CPU时间、存储器和对TDI 520A、520N的I/O访问,但是TDIRM525可在TDI 520A、520N的TCB之外操作。例如,TDIRM不可(may not)访问(一个或多个)所指配的逻辑处理器上的TDI的执行状态,并且不可私密访问/欺骗TDI的存储器状态。这可以通过使用单独的加密密钥和存储器上的其他完整性/重放(replay)控制来强制实施。
虚拟化服务器501可以支持多个客户端装置570A、570B至570N。TDI可以由客户端装置570A、570B至570N经由网络接口555可访问。客户端装置570A、570B至570N可以经由处理器550上执行的软件(例如,CSP提供的软件)彼此通信,并且与其他装置通信。TDI 520A、520N可以指客户端装置570A、570B至570N经由处理器550执行的租户工作负荷。如前所述,租户工作负荷可以包括OS以及在OS之上运行的环3应用。根据本文所述的实施例,租户工作负荷还可以包括在VMM(例如,管理程序)之上运行的VM连同其他环3应用。每个客户端装置570A、570B至570N可以包括但不限于台式计算机、平板计算机、膝上型计算机、上网本、上网本计算机、个人数字助理(PDA)、服务器、工作站、蜂窝电话、移动计算装置、智能电话、因特网设备或任何其他类型的计算装置。
处理器550可以包括一个或多个处理核560、范围寄存器580、存储器控制器552(例如,存储器管理单元(MMU))和I/O端口556。处理器550可以用于计算系统500,其包括但不限于台式计算机、平板计算机、膝上型计算机、上网本、笔记本计算机、PDA、服务器、工作站、蜂窝电话、移动计算装置、智能电话、因特网设备或任何其他类型的计算装置。在另一实施例中,处理器550可以用于片上系统(SoC)系统中。
一个或多个逻辑处理器(例如,执行线程)可以在(一个或多个)处理核560上操作。TDI 520A、520N可以对这些执行线程操作。TDIRM 525可充当完全主机,并且对(一个或多个)处理核560和在(一个或多个)处理核560上操作的所有逻辑处理器具有完全控制。TDIRM525可以指配TDI 520A、520N内的软件在与TDI 520A、520N相关联的逻辑处理器上执行。然而,在本公开的实施例中,TDIRM 525不可通过使用单独的加密密钥来访问TDI 520A、520N在所指配的(一个或多个)逻辑处理器上的执行状态。TDIRM 525可以被阻止访问TDI 520A、520N的执行状态,因为它在TDI 520A、520N的TCB之外。因此,TDIRM 525可能不被信任访问执行状态,这可潜在地向不信任的TDIRM 525提供关于租户工作负荷的信息。防止TDIRM525访问TDI 520A、520N的执行状态加强了在TDI 520A、520N上执行的租户工作负荷的完整性。
虚拟化服务器501还可以包括存储器535,以存储程序二进制和其他数据。存储器535可以指主存储器,或者可以指主存储器和辅存储器,其可以包括只读存储器(ROM)、硬盘驱动器(HDD)等。TDIRM 525可以分配存储器535的特定部分以供TDI 520A、520N使用,作为TD岛保护存储器TDIPM 505A、505N。TDIPM 505A、505N可以在创建TDI 520A、520N时由TDIRM525生成的一次性密码密钥加密。TDIRM 525可生成一次性密码密钥以加密TDIPM 505A、505N,但可以不使用一次性密码密钥来访问存储在TDIRM 505A、505N内的内容。
TDI 520A、520N可以使用被映射到客户物理存储器地址的虚拟存储器地址,以及由存储器控制器552映射到主机/系统物理存储器地址的客户物理存储器地址。当TDI520A、520N试图访问与加载到存储器535中的页的物理存储器地址对应的虚拟存储器地址时,存储器控制器552可以通过使用扩展页表(EPT)540和客户页表(GPT)545来返回所请求的数据。存储器控制器552可以包括EPT遍历逻辑(walk logic)和GPT遍历逻辑,以将客户物理地址转译成主存储器的主机物理地址,并且提供允许(一个或多个)处理核560读取、遍历和解释这些映射的协议的参数。
在一个实施例中,在TDI 520A、520N内执行的任务可不直接使用存储器535的物理地址来访问存储器535。取而代之,这些任务通过虚拟地址访问TDI 520A、520N的虚拟存储器。虚拟存储器内的虚拟存储器页的虚拟地址可以被映射到存储器535的物理地址。TDI520A、520N的虚拟存储器可被划分成被称为虚拟存储器页的固定大小单元,其各自具有对应的虚拟地址。存储器535可以根据各自具有固定大小的物理存储器页(例如,存储器帧(frame))来组织。每个存储器帧可以与唯一地标识该存储器帧的标识符相关联。虚拟地址的虚拟存储器页可以对应于存储器535的物理地址空间中的固定大小单元(例如,存储器帧、物理存储器页)而映射。在TDI 520A、520N内执行客户应用(例如,VM)期间,响应于访问存储器535的请求,处理器550可以使用映射(例如,页表中虚拟存储器页到物理存储器页的映射,页表诸如客户应用的GPT 545和TDIRM 525的EPT 540)来访问存储器535的物理存储器页。
在一个实施例中,TDI 520A、520N可以由TDIRM 525创建和启动。TDIRM 525可以例如通过执行特定指令(例如,TDICREATE)来创建TDI 520A。TDIRM 525可以选择物理存储器535的4 KB对准区域(对应于一个存储器页)并且将存储器页的地址作为参数提供给指令以创建TDI 520A。由TDIRM 525执行的指令还可以使处理器550生成一次性密码密钥(也称为短暂密钥)。一次性密码密钥可以被指配给存储在KOT 562中的可用HKID。KOT 562可以是对在处理器550上操作的软件不可见的数据结构,以用于管理TDI架构内的HKID的库存。可用HKID也可以存储在TDICS 510A中。KOT 562和HKID的使用针对图6来进一步详细描述,处理器550可以请示(consult)也针对图6进一步详细描述的MOT 572,以将存储器页指配给TDI520A。MOT 572可以是对处理器550上操作的软件不可见的数据结构,其由处理器550用于强制实施物理存储器页的指配以执行TDI。MOT 572可以允许TDIRM 525具有管理作为用于所创建的每个TDI(例如,TDI 520A、520N)的资源的存储器的能力,而对存储在所指配的TDIPM中的数据没有任何可见性。
处理器550可以利用存储器加密引擎554(例如,MK-TME引擎)来加密(和解密)在TDI 520A、520N内的客户过程(例如,应用或VM)的执行期间访问的存储器。如上所述,TME允许通过处理核(例如,(一个或多个)处理核560)上执行的软件的存储器访问使用加密密钥来加密。MK-TME是对TME的增强,其允许使用多个加密密钥,从而虑及分隔的加密。在一些实施例中,处理器550可以利用加密引擎554使得不同的页使用不同的加密密钥(例如,一次性加密密钥)进行加密。在各种实施例中,加密引擎554可以在本文描述的TDI架构中被利用以支持为每个TDI 520A、520N生成的一个或多个加密密钥(例如,短暂密钥),从而帮助实现不同租户工作负荷之间的密码隔离。例如,当加密引擎554用于TDI架构中时,CPU可以默认强制要求与每个TDI 520A、520N相关联的所有页将使用对该TDI特定的密钥来加密。
每个TDI 520A、520N可进一步选择特定TDI页为明文或使用对处理器550上执行的软件(例如,CSP提供的软件)不透明的不同加密密钥来加密。例如,TDIPM 505A、505N内的存储器页可以使用对TDIRM 525而言是未知的加密密钥的组合和绑定操作(例如,将TDI的虚拟地址映射到对应的物理地址的操作)来加密。由TDIRM 525执行的绑定操作可以通过如下方式将TDIPM 505A、505N内的存储器页绑定到特定TDI:使用页的主机物理地址(HPA)作为用于加密算法的参数,利用所述加密算法来加密存储器页。因此,如果任何存储器页被移动到存储器535的另一位置,则即使使用TDI特定的加密密钥,也不能正确地解密存储器页。
在一个实施例中,TDI 520A、520N可以被TDIRM 525破坏。TDIRM 525可以例如通过执行特定指令(例如,TDITOP)使TDI 520A停止在与TDI 520A相关联的逻辑处理器上执行。TDIRM 525可以转储清除高速缓存570的所有高速缓存条目,其中高速缓存570与执行TDI520A的逻辑处理器相关联。一旦高速缓存570的所有高速缓存条目都已经被转储清除,则TDIRM 525可以将指配给一次性密码密钥的HKID标记为可用于指配给与其他TDI(例如,TDI520N)相关联的其他一次性密码密钥。然后,TDIRM 525可以从与TDI 520A相关联的TDIPM(例如,TDIPM 505A)中移除所有页。
计算系统500表示基于可从Intel公司(加利福尼亚州,圣克拉拉)获得的PENTIUMIIITM、PENTIUM 4TM、XeonTM、Itanium、XSCALETM或CORETM的处理系统、来自超微公司(Advanced Micro Devices)的处理器、ARM处理器,诸如ARM Cortex®系列的处理器、StrongARMTM装置和/或其他装置。在其他实施例中,也可以使用其他系统(例如,具有其他微处理装置的PC、工程工作站、机顶盒等)。在一个实现中,计算系统500执行可从微软公司(华盛顿州,雷蒙德市)获得的WINDOWSTM操作系统的版本,但是也可以使用其他操作系统(例如,UNIX、Linux等)、嵌入式软件和/或图形用户界面。因此,本公开的实现不限于硬件电路和软件的任何特定组合。
在说明性示例中,(一个或多个)处理核560可以包括处理器逻辑和电路(例如,微架构)。具有不同微架构的(一个或多个)处理核560可以共享共用指令集的至少一部分。例如,类似的寄存器架构可以使用各种技术在不同的微架构中以不同的方式实现,包括专用物理寄存器、使用寄存器重命名机制(例如,使用寄存器别名表(RAT)、重排序缓冲器(ROB)、引退寄存器堆等)的一个或多个动态分配的物理寄存器。一个或多个处理核560可以执行计算系统500的指令。指令可以包括但不限于用于提取指令的预提取逻辑、用于解码指令的解码逻辑、用于执行指令的执行逻辑等。(一个或多个)处理器核560可以包括高速缓存570以存储指令和/或数据。高速缓存570可以包括但不限于一级(L1)高速缓存、二级(L2)高速缓存和末级高速缓存(LLC)。高速缓存570还可以包括处理器550内的高速缓冲存储器的任何其他配置。
本公开的实现不限于台式计算系统。备选实现可用于其他装置,诸如手持式装置和嵌入式应用。手持式装置的一些示例包括蜂窝电话、因特网协议装置、数码相机、个人数字助理(PDA)、手持式PC等。嵌入式应用可以包括微控制器、数字信号处理装置(DSP)、SoC、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或者可以根据至少一个规范执行一个或多个指令的任何其他系统。
一个实现可以在单个处理装置台式计算机或服务器系统的上下文中描述,并且通过备选实现可以被包括在多处理装置系统中。计算系统500可以是“集线器(hub)”系统架构的示例。计算系统500可以包括处理数据信号的处理器550。作为一个说明性示例,处理器550可以包括复杂指令集架构(CISC)微处理装置、精简指令集架构(RISC)微处理装置、超长指令字(VLIW)微处理装置、实现指令集的组合的处理装置、或任何其他处理装置,诸如例如数字信号处理装置。处理器550可以耦合到处理装置总线,该处理装置总线在处理器550和计算系统500中的其他组件之间传送数据信号,所述其他组件诸如包括在存储器535中的主存储器和/或辅存储设备、存储指令数据的存储器、或其任何组合。计算系统500的其他组件可以包括图形加速器、存储器控制器集线器、I/O控制器集线器、无线收发器、闪速BIOS、网络控制器、音频控制器、串行扩展端口、输入/输出(I/O)控制器等。这些元件执行它们的常规功能,这些功能对于本领域技术人员是公知的。
在一个实现中,处理器550可以包括L1内部高速缓存存储器作为高速缓存570的一部分。取决于架构,处理器550可以具有单个内部高速缓存或高速缓存570内的多级内部高速缓存。其他实现取决于特定实现和需要,包括内部和外部高速缓存两者的组合。寄存器堆可用于将不同类型的数据存储在各种寄存器中,各种寄存器包括整数寄存器、浮点寄存器、向量寄存器、分组(banked)寄存器、影子寄存器、检查点寄存器、状态寄存器(statusregister)、配置寄存器和指令指针寄存器。
应当注意,执行单元可以或可以不具有浮点单元。在一个实现中,处理器550包括用于存储微代码的微代码(ucode)ROM,所述微代码在被执行时,用于执行某些宏指令的算法以处置复杂场景。这里,微代码可能是可更新的,以处置处理器550的逻辑漏洞/修复。
执行单元的备选实现还可用于微控制器、嵌入式处理装置、图形装置、DSP和其他类型的逻辑电路中。系统500可以包括存储器535。存储器535可以包括DRAM装置、静态随机存取存储器(SRAM)装置、闪速存储器装置或其他存储器装置。主存储器存储将由处理器550执行的数据信号表示的指令和/或数据。处理器550经由处理装置总线耦合到主存储器。诸如存储器控制器集线器(MCH)之类的系统逻辑芯片可以耦合到处理装置总线和存储器535。MCH可以提供到存储器535的高带宽存储器路径,以用于图形命令、数据和构造的指令和数据存储。MCH可以用于在处理器550、存储器535和系统500中的其他组件之间引导数据信号,并且用于例如在处理装置总线、存储器535和系统I/O之间桥接数据信号。MCH可以通过存储器接口耦合到存储器535。在一些实现中,系统逻辑芯片可以提供用于通过加速图形端口(AGP)互连耦合到图形控制器的图形端口。
计算系统500还可以包括I/O控制器集线器(ICH)。ICH可经由本地I/O总线提供与一些I/O装置的直接连接。本地I/O总线可以是用于将外围设备连接到存储器535、芯片集和处理器550的高速I/O总线。一些示例是音频控制器、固件集线器(闪速BIOS)、无线收发器、数据存储设备、包含用户输入和键盘接口的传统I/O控制器、诸如通用串行总线(USB)的串行扩展端口、以及网络控制器。数据存储装置可以包括硬盘驱动器、软盘驱动器、CD-ROM装置、闪速存储器装置或其他大容量存储装置。
对于系统的另一实现,由上述(一个或多个)处理核560执行的指令可与片上系统(SoC)一起使用。SoC的一个实现包括处理装置和存储器。用于一个这样的系统的存储器是闪速存储器。闪速存储器可以与处理装置和其他系统组件位于相同的管芯上。另外,诸如存储器控制器或图形控制器之类的其他逻辑块也可以位于SoC上。
图6示出了使用信任域岛(TDI)在虚拟化系统中提供隔离的计算系统的另一实施例的框图。处理器638可以对应于图5中所示的处理器550。在一个实现中,处理器638包括高速缓存670,并且经由一个或多个处理核560执行应用堆栈672。如前所述,处理器638可以提供TDI架构和TDIX,以便为在不信任的CSP基础设施中的TDI(例如,TDI 520A、520N)中运行的客户软件提供机密性和完整性。
在一个实施例中,TDI架构可以提供ISA扩展(称为TDIX),其支持OS和OS管理的应用(虚拟化和非虚拟化)的机密操作。具有TDIX能力的计算系统(诸如包括处理器638的计算系统)可以充当被称为TDI的多个加密上下文。为了便于解释,图6中描绘了单个TDI 520A。每个TDI 520A可以运行VMM、VM、OS和/或其他应用。在图6中,TDI 520A被描绘为托管VM640。
在一些实现中,TDIRM 525可与VMM 526兼容。VMM 526可以指用于创建、运行和管理客户应用(诸如,VM 640)的软件、固件和/或硬件。VMM 526可以创建并运行VM 640,并且将一个或多个虚拟处理器(例如,vCPU)分配给VM 640。VMM 526可以允许VM 640访问诸如图5的计算系统500之类的底层计算系统的硬件。VM 640可以执行客户端OS,并且VMM 526可以管理客户OS的执行。客户OS可用于控制VM 640的虚拟处理器对计算系统500的底层硬件和软件资源的访问。应当注意,当存在处理器638上操作的多个VM时,VMM 526可以管理多个客户上执行的客户OS中的每个。在一些实现中,VMM可以利用TDI 520A来实现以管理VM 640。VMM 526可以被称为租户VMM和/或非根VMM。
在一个实施例中,TDIRM可以初始化信任域岛虚拟机控制结构(TDIVMCS)并且根据虚拟化架构和ISA扩展(例如,VMX)将其激活为工作虚拟机控制结构(VMCS)。类似于TDICS510A,VMCS可以是保存在存储器中的由VMM管理的数据结构。VMCS可以存储针对虚拟化VM的逻辑处理器所需的主机和客户状态信息,而TDICS可以存储对TDIX特定的控制信息,如下面参考表1更详细地讨论的那样。TDIVMCS可以存储针对执行TDI(诸如,TDI 520A)所需的主机和客户状态信息。TDIVMCS可以用作VM 640的VMCS和在TDI 520A内操作的VMM。
MOT 572可以是对如下所述的任何软件不可见的结构:所述软件由处理器638管理以强制指配物理存储器页来执行诸如TDI 520A之类的TDI。处理器638可以使用MOT 572来强制要求作为租户TDI 520A或TDIRM 525操作的软件不能访问与物理地址相关联的存储器,除非明确地指配给它。为了实现这一点,MOT 572可以强制要求TDI 520A之外的软件,包括TDIRM 525,不能访问属于不同TDI(例如,图5的TDI 520N)的任何存储器。MOT 572还可以强制要求由MOT 572指配给特定TDI(诸如,TDI 520A)的存储器页应当可从系统中的任何处理器可访问(其中处理器正在执行存储器被指配到的TDI)。在一个实现中,MOT 572可以在针对由软件进行的存储器访问的页遍历期间强制实施存储器访问控制。未指配给TDI 520A或TDIRM 525的处理器638所执行的物理存储器访问可能失败。
MOT 572可用于为存储器的每个4 KB页保持元数据属性(例如,安全属性)。例如,MOT 572可以保持包括以下各项的属性:页身份(page status)(例如,页在存储器中是否有效);页类别(例如,DRAM、NVRAM、I/O、保留);页状态(例如,指示页是否被指派给另一TDI(例如,图5的TDI 520N)或TDIRM 525、空闲指派、阻止指派或挂起(pending));以及TDID(例如,将页指配给特定唯一TDI的标识符)。可针对附加页大小(例如,2 MB、1 GB等)定义附加结构。在其他实现中,分层页结构(例如,页表)可以支持其他页大小。MOT 572中的4 KB页引用可以属于TDI 520A的一个运行实例。4 KB页引用也可以是有效存储器或被标记为无效。在一个实现中,每个TDI 520A实例可以包括保持该TDI 520A的TDICS 510A的一个页。
KOT 562可以是用于管理TDI架构内的HKID的库存的数据结构,例如表。类似于MOT572,KOT 562对于在处理器638上操作的软件可能不是可见的。KOT 562可以用于将HKID指配给为TDI 520A生成的一次性密码密钥。在一个实施例中,可以为TDI 520A生成多个一次性密码密钥。在另外的实施例中,可以将不同的HKID指配给为TDI 520A生成的每个一次性密码密钥。根据本文描述的实施例,KOT 562还可以由TDIRM 525用来撤销(revoke)指配给一次性密码密钥的HKID,并且在TDI破坏时控制转储清除高速缓存570。
KOT 562可跟踪可供在根据TDIX架构的计算系统上执行的所有TDI使用的所有HKID。HKID可以具有指配的、空闲的(或可用的)、回收的或配置的状态。具有空闲状态的HKID可用于指配给密码密钥(例如,为TDI 520A生成的一次性密码密钥)。具有指配状态的HKID被指配给与TDI相关联的密码密钥,并且因此不可用于指配到随后的密码密钥。具有配置的状态的HKID已与其指配的密码密钥一起在加密引擎(例如,图5的加密引擎554)中被配置。在破坏TDI 520A的过程期间给予HKID回收的状态。HKID可以具有回收的状态,直到高速缓存570的所有高速缓存条目都已经被转储清除。当所有高速缓存条目都已被转储清除时,HKID的状态可从回收变为可用。
KET 574可以是用于配置加密引擎(例如,图5的加密引擎554)的数据结构,其对于在处理器638上执行的软件是不可见的。KET 574可以通过HKID编索引,并且可以指示每个HKID是否已经在加密引擎中被配置。KET在图6中也被示为KET 660,其包括HKID 662和密钥664。
TDICS 510A可以被指配给TDI 520A并被存储在TDIPM 505A中。TDICS 510A可以是作为TDI架构的一部分的访问控制结构,并且由TDIRM 525管理。TDICS 510A可管理进入和离开TDIX操作的转变(例如,TDI进入和TDI退出)。从TDIRM 525到TDIX租户操作的转变被称为TDI进入。TDI进入可以由TDIRM 525执行的指令触发。从TDIX租户操作到TDIRM 525的转变被称为TDI退出。TDI退出可以由要求从TDI 520A退出的硬件事件触发。例如,支持TDI(例如,图5的EPT 540)的页表中的页错误可能导致TDI退出。
TDICS 510A可占据存储器535的4 KB自然对准区域(例如,存储器的页)。TDICS510A可以包括但不限于以下在表1中描绘的字段。TDIX控制信息存储在TDICS中:
字段 大小(字节) 描述
REVISION 4 修订版标识符
TDID 8 (40 位有效,其余保留) TDI标识符
COUNT-TCS 4 (16 位有效,其余保留) 与该TDICS相关联的TDITCS的数量
COUNT_BUSY_TCS 4 (16 位有效,其余保留) 与该TDICS相关联的忙碌TDITCS的数量
KID_ENTRY_0 8 (8 位有效,其余保留) 在TDICREATE期间指配给TDI的一次性密码密钥的短暂密钥ID
ATTRIBUTES 16 TDI的属性
MRTDI 48 TDI的初始内容的SHA-384测量
RESERVED 16 (必须是0) 为MREG成长到SHA512而保留
MRSWID 48 针对初始构建之后加载的附加逻辑的软件定义标识符
MRCONFIGID 48 针对附加的TDI SW配置的软件定义标识符
MROWNER 48 针对VM的所有者的软件定义标识符
MROWNERCONFIG 48 针对来自所有者的附加图像配置的软件定义标识符
XCR0 8 XCR0的初始值
OWNERID 8 所有者ID
MRTDIBLOCKS 4 更新成MRTDI的块的数量(仅由预TDINIT需要)
COUNT_TCS_MAX 最大值指定可被指配给该TDI的逻辑处理器的最大数量 (最大可能是4095)
RESERVED 保留 (其他 TDI 元数据)
表1
在一个实施例中,多个逻辑处理器可以被指配给TDI 520A。对于指配给TDI 520A的每个逻辑处理器,信任域岛线程控制结构(TDITCS)515A页可以被添加到TDIPM 505A。在一个实施例中,可以将多个TDITCS 515A页添加到TDIPM 505A。根据下面讨论的实施例,TDITCS515 A可用于进入TDI 520A或离开TDI 520A。TDITCS 515A可以包括状态保存区(SSA),用于存储指配给TDI 520A的一个逻辑处理器的执行状态。如果当处理器638正在执行与TDIPM505A的存储器页相关联的指令(即,处理器在租户模式中操作)时发生TDI退出条件,则TDIEXIT指令可以由TDIRM 525执行。TDI 520A的状态可保存在TDITCS 515A中。在另一实施例中,如果当处理器638正在TDI 520A内部的非根VMM的上下文中操作时发生TDI退出条件,则TDIRM 525可以执行对TDI VMM的VMEXIT指令。租户VMM状态可以被保存在TDITCS 515A中,并且TDIRM 525可以随后执行TDI退出。
如上所述,TDITCS 515A可以在SSA中保持TDI 520A的执行状态。TDI 520A的执行状态可以包括执行TDI 520A的逻辑处理器的执行状态、回到父代TDICS(例如,TDICS 510A)的链路、多个TDITCS执行标志、对应于管理者模式的TDI状态、以及对应于用户的TDI状态。
在一个实施例中,TDICS 510A和TDITCS 515A可以由MOT 572控制访问(例如,存储在MOT 572中的加密密钥ID可用于强制实施存储器访问控制)。在另一个实现中,TDICS510A和TDITCS可以经由处理器550的(一个或多个)受限范围寄存器(诸如,图5中所示的范围寄存器580)中的存储设备而访问受控,该存储设备对于软件访问是不可访问的。
TDIRM 525状态区可以被存储在TDIRM控制结构(TDIRCS)634中。TDIRCS 634也可以被实现为仅包含主机状态、控制和TDI退出信息的新型VM控制结构。
图7示出了使用TDI在虚拟化系统中提供隔离的计算系统的另一个实施例的框图。图7示出示例TDI生命周期700和TDI 702与TDIRM 708之间的交互的框图。在一个实现中,TDI 702和TDIRM 708可以与它们针对图5-6描述的对应物相同。TDI架构可以与由图5的计算装置500提供的TDI架构相同。TDI架构700可以提供管理系统上活动的TDI的生命周期的层。对TDI的处理器支持可以由被称为TDIX操作的处理器操作来提供。存在两种类型的TDIX操作:资源管理器操作和租户操作。通常,TDIRM 708在TDIX资源管理器操作中运行,并且诸如TDI 702之类的TDI在TDIX租户操作中运行。资源管理器操作和租户操作之间的转变被称为TDIX转变。
存在两种类型的TDIX转变:TDI进入716和TDI退出714。从TDIX资源管理器操作到TDIX租户操作的转变被称为TDI进入716。TDI进入可以由TDIRM 708执行的指令触发。从TDIX租户操作到TDIX资源管理器操作的转变被称为TDI退出714。TDI退出714可以由要求从TDI退出的硬件事件触发。例如,支持TDI(例如,图5的EPT 540)的页表中的页错误可以导致TDI退出714。
如上所述,TDIX资源管理器操作中的处理器的行为与TDIX操作之外的处理器的行为类似。主要的区别在于TDIX操作(TDIX指令)的集合是可用的,并且可以被加载到某些控制寄存器中的值被限制为限制TDIRM 708的模式和能力。
TDIX租户操作中的处理器行为被限制为制造隔离。例如,代替普通操作,由于TDI退出714到TDIRM 708,所以存在某些事件(例如,页错误、对存储器页的未授权访问、任务切换、租户工作负荷终止等)。这些TDI退出714不允许TDIRM 708修改TDI 702的行为或状态。TDIRM 708可以使用平台能力来保持对平台资源的控制。在TDI 702中运行的软件(例如,具有VM退出710和VM进入712的租户VM 704A、租户VM 704B等)可以使用软件可见信息来确定它正在TDI 702中运行,并且可以对加载到TDI 702中的附加软件强制本地测量策略。然而,验证TDI 702的安全状态是由远程认证(attestation)执行以确保机密性的过程。
TDI架构700可以被设计成最小化当在TDI 702中运行时依赖于虚拟化的软件的兼容性问题。TDI架构700使得在租户操作中运行的VM 704A、704B与在租户操作中运行的租户VMM 706之间的大多数交互不变。如果在TDI 702中不存在VMM 706,则可修改VM OS(未示出)以与TDIRM 708一起作为根VMM工作。
在一个实现中,TDIRM 708可以明确地决定引起TDI退出714,例如,决定终止TDI702或决定管理存储器资源(例如,产出指配的存储器资源、请求空闲存储器资源等)。TDI架构700还可以为TDIRM 708提供强制TDI退出714以便抢占的能力。在TDI退出714时,TDI架构强制要求TDI 702的执行状态可保存在分配给TDI 702的CPU访问受控的存储器结构(例如,TDITCS 515A)中,并且使用对TDIRM 708或其他TDI不可见的与TDI 702相关联的唯一加密密钥(例如,一次性加密密钥)来加密,以保护TDI状态对TDIRM 708或其他TDI的保密性。TDI执行状态可类似地被保护防止欺骗(例如,通过伪造数据成功地伪装成另一个的人或程序)、重新映射(例如,将受保护虚拟地址的物理存储器重新映射到恶意模块的上下文内的新虚拟地址)、和/或经由存储器上的完整性控制(例如,恶意或欺诈性地重复或延迟有效数据传输)重放。
TDI进入716是TDI退出714的补充事件。例如,TDI进入716可以在TDIRM 708调度TDI 702以在逻辑处理器上运行并且将执行转移到TDI 702中运行的软件时发生。在TDI进入716期间,TDI架构700可强制要求TDIRM 708的执行状态被保存在TDIRM(即,图5的TDIPM505A和505N)所拥有的存储器中,该TDIRM使用被指配供TDIRM 708单独使用的唯一加密密钥(例如,一次性加密密钥)来加密。
诸如TDI 702之类的TDI可以由TDIRM 708使用特定指令(例如,TDICREATE,TDIADDPAGE等)来设置,以使得存储器空间被分配给TDI并且使用对TDIRM 708或其他软件不可见的唯一加密密钥来加密。在逻辑处理器上执行属于TDI 702的任何指令之前,存储在TDIPM(例如,图5的TDIPM 505A和505N)中的所有TDI存储器可以使用与TDI 702相关联的唯一密钥(例如,一次性密码密钥)来加密。虽然本文引用了特定指令名称,但是在本公开的实现中可以利用指令的其他名称,并且不限于本文提供的特定名称。
在一个实现中,TDIRM 708可以在签名验证之后利用小软件图像(类似于IBB或初始引导块)启动每个TDI 702,并且使用平台信任根来记录IBB测量(用于随后的认证)。可以获得针对小软件图像的测量,以防止用于启动TDI 702的指令被再次使用。可以使用安全散列算法来计算测量,因此系统软件仅可以通过遵循由TDIRM 708执行的确切指令序列来实现与期望测量匹配的TDI。TDIX设计可以使用256位SHA-2安全散列函数来计算测量。在TDI702中执行的IBB软件可以负责完成TDI 702的所测量的启动,并且从TDIRM 708请求附加资源。在一个实施例中,TDI 702可以使用单个加密密钥来保护整个TDIPM。在另一实施例中,TDI 702可以使用多个加密密钥来保护TDIPM,其中每个加密密钥可以与不同的租户VM704A、704B和/或容器或诸如NVRAM之类的不同存储器资源相关联。因此,当TDI 702第一次被创建时,TDI 702可以使用独有的CPU生成的MK-TME密钥。此后,TDI 702可以可选地为TDI702内部操作的每个租户软件管理的上下文设置附加的MK-TME加密密钥,如上所述的那样。
为了最小化软件兼容性对CSP的VMM(例如,TDIRM 708和租户VMM 706)的影响,虚拟化操作(例如,VMX)可在TDI架构700中的TDI 702内部保持不被修改。类似地,VMM软件的操作,诸如EPT和GPT管理,可保持在租户VMM 706的控制下(如果一个在TDI 702中是活动的并且不由TDIRM 708管理的话)。当TDIRM 708为每个TDI 702指配物理存储器时,TDI架构700包括针对图5描述的MOT 572。参考图5,处理器550可请示TDIRM管理的MOT 572以将存储器535的部分分配给TDI(例如,TDI 702)。这可以允许TDIRM 708具有将存储器作为资源进行管理的全部能力,而无需对驻留在指配的TDI存储器中的数据具有任何可见性。在一些实现中,如上所述,平台(例如,根)VMM和TDIRM 708可在相同加密密钥信任域岛中,从而共享存储器管理和调度器功能(但仍保持在租户的TCB之外)。
图8是TDI架构的实施例的框图。图8示出了多密钥总存储器加密(MK-TME)引擎的示例实施例。根据本公开的实施例,MK-TME引擎可以用作加密引擎。在所示的实施例中,存储器保护系统800包括处理器802、系统代理803和存储器810。存储器保护系统800可以提供对存储在存储器810上的数据的密码保护。处理器802可以对应于图5中所示的处理器550和图6中所示的处理器638。存储器810可以对应于也在图5中所示的存储器535。系统代理803虽然未在图5中示出,但可以是虚拟化服务器501的组件。特别地,系统代理803可以是处理器550的组件,并且存储器控制器808可以对应于与图5的存储器控制器552。
系统代理803可用于为处理器802提供各种功能,诸如管理对系统800的存储器810和/或其他资源的访问。在所示实施例中,例如,系统代理803可以包括存储器控制器808,以控制和/或管理对系统800的存储器810的访问。此外,如以下进一步描述的,系统代理803还可以包括存储器保护控制器804以保护存储在存储器810上的数据。在一些实施例中,系统代理803还可以提供处理器802和系统800的其他组件之间的接口(例如,使用直接媒体接口(DMI)和/或PCI-Express桥)。在各种实施例中,系统代理803可以包括被配置成执行本文描述的系统代理803的功能性的逻辑元件的任何组合,无论是从存储器或其他非暂时性计算机可读介质加载,还是直接在硬件中实现,通过非限制性示例的方式包括:微处理器、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、图形处理单元(GPU)、可编程逻辑阵列(PLA)、专用集成电路(ASIC)和/或VM处理器。系统代理803可与处理器802集成,或者备选地,系统代理803可以实现在通信地耦合或连接到处理器802的单独芯片上。
存储器控制器808可以用于控制和/或管理对系统800的存储器810的访问。在各种实施例中,存储器控制器808可以使用硬件和/或软件逻辑的任何组合来实现,包括使用微处理器、ASIC、FPGA、PLA、VM和/或任何其他类型的电路或逻辑来实现。
在所示的实施例中,系统800为存储器810提供密码存储器保护。在一些实施例中,例如,可以通过扩展和/或修改特定计算机架构来实现密码存储器保护。例如,可以通过扩展处理器802的功能性和/或引入存储器保护控制器804来实现密码存储器保护。在所示实施例中,例如,处理器802被扩展以支持控制寄存器801和可用于启用和/或配置密码存储器保护的(一个或多个)处理器指令,并且存储器保护控制器804被实现以提供密码存储器保护。控制寄存器803可以对应于图5中所示的范围寄存器580。虽然所示的示例使用单独的逻辑块来描绘存储器保护控制器804和处理器802,但是在实际实施例中,存储器保护控制器804和处理器802可以集成在一起,或者备选地可以作为单独的组件来实现。在各种实施例中,例如,存储器保护控制器804可以使用硬件和/或软件逻辑的任何组合来实现,包括使用微处理器、ASIC、FPGA、PLA、VM和/或任何其他类型的电路或逻辑来实现。
存储器保护控制器804可以使用存储器加密来保护存储在存储器810上的数据。在一些实施例中,例如,存储器保护控制器804可以在存储器路径或存储器总线上实现,以允许对传送到存储器810和从存储器810传送的和/或存储在存储器810上的数据进行加密。此外,在一些实施例中,存储器保护控制器804可以是可配置的或可编程的,并且可以包括对多个加密密钥的支持。因此,存储器保护控制器804可以被配置或编程(例如,通过软件)以使用不同的加密密钥和/或算法来加密存储器810的不同区域或页。以此方式,可以针对不同的用户、租户、客户、应用和/或工作负荷单独地提供和配置存储器加密。
例如,在一些实施例中,存储器保护控制器804可用于定义可以使用存储器加密单独配置和保护的各种安全或受保护信任域岛。在一些实施例中,例如,“信任域岛”可以被视为与特定工作负荷(例如,TDI)相关联的资源的集合,并且可以包括含有与工作负荷相关联的数据的存储器的任何区域。例如,CSP的客户工作负荷的TDI可以包括与OS、VM(例如,运行在由TDIRM执行的VMM上的VM)和/或运行在OS或VM上的任何环3应用相关联的资源(例如,存储器)。存储器保护控制器804可以允许单独地配置和保护受保护信任域岛,从而允许通过以唯一加密密钥加密每个受保护信任域岛的相关联的代码和/或数据,在存储器中密码隔离所述每个受保护信任域岛。以此方式,可以通过为各种工作负荷定义不同的保护信任域岛来密码隔离不同用户、客户和/或租户的工作负荷。
在一些实施例中,可以使用处理器指令和/或硬件寄存器来发现和配置系统800的密码存储器保护。例如,在一些实施例中,处理器指令可以用于确定系统800是否支持加密存储器保护,诸如由软件用来标识特定处理器的能力的CPU标识(CPUID)指令。
在确定系统800支持加密存储器保护时,然后可以使用硬件寄存器,诸如处理器802的控制寄存器803,启用和/或配置密码存储器保护。例如,控制寄存器803可以包括各种模型特定寄存器(MSR),其允许软件发现、启用和/或配置系统800的密码存储器保护能力。在一些实施例中,例如,控制寄存器803可以包括存储器加密能力寄存器、存储器加密激活寄存器和/或一个或多个存储器加密排除寄存器。
在所示出的实施例中,存储器保护控制器804维持内部信任域岛密钥表806以标识已经在系统800中配置的受保护信任域岛(例如,TDI)。密钥表806可以使用任何形式的存储器或存储设备(例如,RAM)来实现,并且还可以直接在存储器保护控制器804上、在存储器810中和/或使用另一存储器组件来实现。
信任域岛密钥表806的条目812A、812B、812C和812D各自对应于不同的受保护信任域岛(例如,TDI)。例如,每个条目812A-D可包括密钥或信任域岛ID、保护模式和相关联的加密密钥(例如,一次性密码密钥)。在一些实施例中,例如,密钥ID(例如,HKID)可表示相关联的受保护信任域岛内的存储器地址的较高阶位。在所示出的示例中,信任域岛密钥表806中的每个密钥ID是使用5个位来表示。因此,与给定密钥ID相关联的受保护信任域岛覆盖其最高5位与密钥ID匹配的所有存储器地址。在所示的实施例中,密钥ID可以被存储为密钥表806中的字段,但是在备选实施例中,密钥ID可以被用作到密钥表806中的索引,而不是被直接存储在密钥表806中。
此外,在一些实施例中,可以支持多个保护模式,并且可以使用特定保护模式来保护每个受保护信任域岛。例如,在一些实施例中,标准保护模式可以包括明文模式(例如,未加密)、标准或默认加密模式(例如,使用标准或默认加密密钥加密)和/或定制加密模式(例如,使用唯一加密密钥加密)。因此,密钥表806可以标识与每个受保护信任域岛或密钥ID相关联的保护模式。
在所示出的示例中,信任域岛密钥表806包括四个条目。第一条目标识对应于密钥ID 00000(因此覆盖以最高阶5位中含有00000的所有存储器地址)的受保护信任域岛,其在默认加密模式中使用密钥“ABC”来保护。第二条目标识对应于密钥ID 00001(这涵盖在最高阶5位中含有00001的所有存储器地址)的受保护信任域岛,其在明文模式中受保护并且这不具有相关联的加密密钥。第三条目标识对应于密钥ID 00010的受保护信任域岛(因此覆盖在最高阶5位中含有00010的所有存储器地址),其在定制执行模式中使用密钥“XYZ”来保护。第四条目标识对应于密钥ID 00011(因此覆盖在最高阶5位中含有00011的所有存储器地址)的受保护信任域岛,其在默认加密模式中使用密钥“ABC”来保护。如这些示例所示,使用定制加密模式保护的信任域岛具有唯一密钥(“XYZ”),使用默认加密模式保护的信任域岛共享加密密钥(“ABC”),并且在明文模式中受保护的信任域岛是未加密的,并且因此没有相关联的密钥。在本公开的实施例中,TDI可以在定制加密模式下受保护,并且具有唯一密钥(例如,一次性密码密钥)。
在一些实施例中,可以使用由处理器802实现的处理器指令(例如,PCONFIG)来定义和/或配置受保护信任域岛。此处理器指令可用于通过在存储器保护控制器804的密钥表806中编程新条目——或修改现有条目——来定义和/或配置受保护信任域岛。以此方式,可以使用处理器指令以编程方式(例如,通过管理软件)定义和配置受保护信任域岛(例如,TDI)。
图9-13是根据本文所述的某些实施例通过TDIRM创建TDI的方法900、1000、1100、1200和1300。图14-16是根据本文所述的某些实施例用于通过TDIRM破坏TDI的方法1400、1500和1600。方法900-1100可以由是硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)的处理逻辑来执行。在一个实施例中,方法900-1600将部分地由执行TDIRM 525的图5的处理器550或执行TDIRM 674的图6的处理器638来执行。例如,方法900-1600可以由处理器550的逻辑电路执行,该逻辑电路包括(一个或多个)处理核560、高速缓存570、MOT 572、KOT 562、KET 574、WBT 564、KMT 576、范围寄存器580、存储器控制器552、加密引擎554和I/O端口556中的一个或多个。
为了简化解释,方法900-1600被描绘和描述为动作。然而,根据本公开的动作可以按照各种顺序和/或与这里未呈现和描述的其他动作同时发生。此外,根据所公开的主题,并非所有示出的动作都可以被执行来实现方法900-1600。此外,本领域技术人员将理解和明白,方法900、1000、1100、1200、1300、1400、1500和1600可备选地经由状态图或事件被表示为互相关的状态。
图9示出了用于创建TDI的方法900的流程图。如前所述,TDI可以由TDIRM创建和启动。TDIRM可以充当主机并且具有对处理器和平台硬件的控制。TDIRM可以通过执行特定指令(例如,TDICREATE)来创建TDI,所述特定指令可发起TDI创建过程。
在框910,TDIRM可初始化TDICS。如上所述,TDICS是作为TDIX ISA的一部分的访问控制结构并由TDIRM管理。然而,TDICS不能被TDIRM直接访问。TDICS可占据存储器的4 KB自然对准区域(例如,存储器的页)。在成功执行TDICREATE指令之后,可以阻止在MOT(例如,图5中所示的MOT 572和图6中所示的MOT 644,后者包括HPA 646、页身份648、页状态650、TDID652、密钥ID 654、GPA 656和客户准许658)中由TDICS占据的页进行软件读/写。TDIRM可以根据以下针对图10描述的实施例来初始化TDICS。
在框912,TDIRM可以初始化TDI保护存储器(TDIPM)。TDIPM可以是与TDI相关联的物理存储器的一部分。根据下面针对图10描述的实施例,TDIRM可以选择可用于与TDI相关联的物理存储器的一部分,并且然后将该物理存储器的该部分初始化为TDIPM。
在一个实施例中,TDIRM可以在TDIPM中为TDICS分配目标页。TDIRM可以选择物理存储器的区域(例如,对准的4 KB区域)并且将其作为参数提供给指令以创建TDI(例如,TDICREATE)。存储器的该区域可以被分配给TDICS。在一些实施例中,分配给TDICS的存储器的区域可以被阻止读和写操作,并且因此在TDIX架构内被保护。例如,TDICS可以保持TDI标识符、分配给TDI的加密密钥、以及与加密密钥相关联的HKID。
在框914,TDIRM可使得生成一次性密码密钥以用于加密包括在TDIPM中的存储器页。一次性密码密钥可以是短暂密钥(即,针对由TDIRM创建的每个TDI生成的密码密钥)。TDIRM可以选择密钥编程模式,以用于对TDI的一次性密码密钥进行编程。例如,TDIRM可以直接指定用于信任域岛的密钥。根据本文描述的TDI架构,在其他示例中,TDIRM可请求由CPU生成随机密钥。
在框916,TDIRM可以标识存储在密钥所有权表(KOT)中可用的主机密钥标识符(HKID)。如上所述,KOT可以是用于管理TDIX内的HKID库存的数据结构,该数据结构对于在处理器上执行的软件是不可见的。在一些实施例中,TDIX可以具有可供由TDIRM生成的所有TDI使用的特定数量的HKID。KOT可以维护可供处理器上创建的所有TDI使用的所有HKID。KOT在图6中也被示为KOT 666,其包括HKID 662和HKID状态668。如上所述,HKID可以具有指配、空闲的(或可用的)、回收的或配置的状态。
在框918,TDIRM可以将HKID存储在TDICS中。在被执行的TDI中的租户工作负荷的执行期间,存储在TDICS中的HKID可以被用作保护机制(例如,TME、MK-TME)的一部分,以防止恶意或不信任的软件(包括TDIRM)访问TDIPM的存储器页。
在框920,TDIRM可以将一次性密码密钥指配给多密钥总存储器加密(MK-TME)引擎上的可用HKID。TDIRM可以执行特定指令(例如,TDICONFIGKEY)以在TDI可以对其操作的所有包上配置MK-TME引擎上的一次性密码密钥和可用HKID。TDICONFIGKEY指令可以对应于用于定义和/或配置针对图8描述的系统800的受保护信任域岛的PCONFIG指令。通过执行TDICONFIGKEY指令,TDIRM可以使MK-TME引擎的存储器保护控制器(例如,图8的存储器保护控制器804)对用于TDI的密钥和保护模式进行编程。存储器保护控制器然后可以向TDIRM返回指示密钥已经被配置的状态码。
在框922,TDIRM可以将逻辑处理器与TDI相关联。TDI可在相关联的逻辑处理器上操作。TDIRM可充当完整的主机,并且对逻辑处理器和逻辑处理器正在其上操作的处理核具有完整的控制。将逻辑处理器与TDI相关联所需的动作针对图11进一步详细描述。
在框924,TDIRM可以将来自逻辑处理器的地址空间的存储器页添加到TDIPM,这针对图12更详细地描述。
在框926,TDIRM可以通过以存储器页的内容项扩展TDI测量来测量存储器页。TDIRM可以执行特定指令(例如,TDIEXTEND)以利用添加的页的内容来扩展TDI测量。针对TDI扩展测量以防止用于创建TDI的指令被再次使用(例如,TDICREATE、TDIADDPAGE等)。TDI的测量可以通过计算用于创建TDI的指令的输入上的安全散列并且将初始代码和数据加载到其存储器(例如,TDICREATE、TDIADD和TDIEXTEND)中来获得。可以使用安全散列算法来计算测量,因此系统软件可以仅通过遵循由TDIRM执行的精确指令序列来构建与预期测量匹配的TDI。TDIX设计可以使用256位SHA-2安全散列函数来计算测量。在一个实施例中,TDI测量可以在添加到TDIPM的页的每个256字节区块上扩展。重复测量,直到已经测量了所添加的TDI页的每个256字节区块。每个TDI测量可以被存储在TDICS的字段中。
在框928,TDIRM可以将执行控制转移到与TDI相关联的逻辑处理器以执行TDI,这将针对图13更详细地描述。
图10示出了初始化与TDI相关联的TDIPM和TDICS的方法1000的流程图。方法1000可以对应于图9中所示的方法900的在910(即,初始化与TDI相关联的TDICS)和912(即,初始化与TDI相关联的TDIPM)处执行的操作。
在框1010,可由TDIRM将TDICS图像页加载到主机存储器。
在框1012,TDI可以使用的HKID的数量可以由TDIRM设置。在一个实施例中,TDI可以被分配一个HKID,并且因此将仅具有可用于加密TDIPM的一个一次性密码密钥。在另一个实施例中,TDI可以被分配多个HKID,并且因此将具有可用于加密TDIPM的多个一次性密码密钥。HKID的数量可以被保存到TDICS图像页。
在框1014,主机存储器的一部分可以被指定为TDIPM。如上所述,TDIPM可以占据主机存储器的4 KB自然发生区域(例如,存储器的页)。
在框1016,将TDIPM的页可被分配作为TDICS的目标页。
在框1018,可以初始化来自加载到TDIPM的TDICS图像页的目标TDICS页。
图11示出了将逻辑处理器与TDI相关联的方法1100的流程图。方法1100可以对应于图9中所示的方法900的在框922处执行的操作(即,将逻辑处理器与TDI相关联)。
在框1110,TDIRM可以分配用于TDIPM中的信任域岛虚拟处理空间(TDIVPS)的目标页。TDIVPS可以包括模拟与TDI相关联的虚拟处理器的一个或多个处理线程。
在框1112,TDIRM可以将TDIVPS绑定到与TDI相关联的TDICS。
在框1114,TDIRM可以将逻辑处理器与TDIVPS相关联。逻辑处理器可以是处理核上的可以执行线程,用于执行TDI的租户工作负荷。
在框1116,TDIRM可以分配用于与TDIPM中的逻辑处理器相关联的TDI状态保存区(SSA)帧的目标页。TDI SSA可以被包括作为先前参考图5和图6讨论的TDITCS的一部分。TDISSA可以是存储在TDI内执行的租户过程的状态的安全存储器页。
在框1118,TDIRM可以将来自逻辑处理器的地址空间的TDI SSA页添加到分配给TDIVPS的目标页。TDIRM可以执行特定指令(例如,TDIADDSSA),从而提供目标页的地址作为输入,以添加TDSSA页。该指令的执行可以将TDI SSA页绑定到TDIVPS。
可以针对由TDIRM创建的每个TDIVPS执行方法1100的前述操作。应当注意,由TDIRM创建的第一TDIVPS可以是虚拟引导处理器(BSP)。虚拟BSP可以被分配给TDI创建过程期间所需的任何自举(bootstrap)操作。由TDIRM创建的任何随后TDIVPS可以是虚拟应用处理器(AP)。虚拟AP可以被分配给当TDI正在执行时所需的任何租户操作。
图12示出了用于将来自逻辑处理器的地址空间的存储器页添加到TDIPM的方法1200的流程图。方法1200可以对应于图9中所示的方法900的在框924处执行的操作(即,将来自逻辑处理器的地址空间的存储器页添加到TDIPM)。
在框1210,TDIRM可以将主机存储器的物理页分配给TDI引导图像页。在一个实施例中,TDIRM可以将主机存储器的多个物理页分配给TDI引导图像页。
在框1212,TDIRM可以将TDI引导图像页加载到主机存储器中分配的物理页。TDI引导图像页可以包含当TDI首先由与TDI相关联的逻辑处理器执行时使用的代码和数据页。
在框1214,TDIRM可以选择主机存储器中的存储器页以复制到与TDI相关联的TDIPM。
在框1216,TDIRM可为所复制的存储器页分配TDIPM的目标页。
在框1218,TDIRM可以使用与TDI相关联的一次性密码密钥来加密所选择的存储器页的内容。一次性密码密钥可以是由TDIRM在图9中所示的方法900的框914(即,生成一次性密码密钥)中生成的相同密钥。
在框1220,TDIRM可以将所选择的存储器页复制到TDIPM的目标页。
在框1222,TDIRM可以在存储器页的每个256字节区块上利用所复制的页的内容来扩展TDI测量。
图13示出了将执行控制转移到逻辑处理器以执行TDI的方法1300的流程图。方法1300可以对应于图9所示的方法900的在框928处执行的操作(即,将执行控制转移到逻辑处理器以执行TDI)。可以在TDIRM希望在其上启动TDI的每个逻辑处理器上执行以下操作。
在框1310,TDIRM可以标识被指定为虚拟自举处理空间的未使用的TDIVPS页。
在框1312,TDIRM可以分配主机存储器的物理页以用于TDI EPT。
在框1314,TDIRM可以将来自主机存储器的TDI引导图像页映射到为TDI EPT分配的页。TDI引导图像页可以是图12所示的方法1200的加载到框1212(即,将TDI引导图像页加载到主机存储器中分配的物理页)的主机存储器中分配的物理页的相同TDI引导图像页。
在框1316,TDIRM可以分配主机存储器的物理页并且将它初始化以用于信任域岛虚拟机控制结构(TDIVMCS)。
在框1318,TDIRM可以激活TDIVMCS作为工作虚拟机控制结构(VMCS)。TDIRM可以执行特定指令(例如,VMPTRLD),其激活TDIVMCS作为工作VMCS。
在框1320,TDIRM可以初始化TDIVMCS。TDIRM可以执行特定指令(例如,VMWRITE),其初始化TDIVMCS。所执行的指令可以设置TDIVMCS的主机状态。所执行的指令还可以设置指向TDI EPT的指针,并且设置指向所选择的TDIVPS页的链路。
在框1322,TDIRM可以将执行控制转移到逻辑处理器以执行TDI。
图14示出了用于破坏TDI的方法1400的流程图。在本公开的实施例中,TDI可以被TDIRM破坏。TDIRM可以通过执行特定指令(例如,TDISTOP)来破坏TDI,所述特定指令可以发起TDI破坏处理。
在框1410,TDIRM可以防止TDI在逻辑处理器上执行,这将针对图15更详细地描述。
在框1412,TDIRM可以转储清除与逻辑处理器相关联的高速缓存的高速缓存条目,其中该高速缓存条目包含与TDI相关联的存储器页的内容。
在框1414,TDIRM可以将指配给与TDI相关联的一次性密码密钥的HKID标记为回收的。如上所述,如果HKID被标记为回收的,则HKID不再被指配给与被破坏的TDI相关联的一次性密码密钥,但是TDIRM没有准备好指配给与其他TDI相关联的其他一次性密码密钥。TDIRM可以不将HKID标记为可用,直到与逻辑处理器相关联的高速缓存的所有高速缓存条目已被转储清除。
在框1416,TDIRM可以决定与逻辑处理器相关联的高速缓存的所有高速缓存条目是否已被转储清除。如果TDIRM已经确定与逻辑处理器相关联的高速缓存的所有高速缓存条目尚未被转储清除,则TDIRM可以将KOT中的HKID的身份维持为回收的。在一个实施例中,TDIRM可以转储清除与逻辑处理器相关联的转换后备缓冲器(TLB)的所有条目。
在框1418,TDIRM可以将HKID标记为可用于指配给与其他TDI相关联的其他一次性密码密钥。通过将HKID的状态改为可用,该HKID可以被指配给其他一次性密码密钥,而没有可以访问由先前指配的密钥保护的内容的风险。
在框1420,TDIRM可以从与TDI相关联的TDIPM中移除存储器页,这将针对图16更详细地描述。
图15示出了用于防止TDI在逻辑处理器上执行的方法1500的流程图。方法1500可以对应于图14中所示的方法1400的在框1410(即,防止TDI在逻辑处理器上执行)和1412(即,转储清除与逻辑处理器相关联的高速缓存的高速缓存条目,其中高速缓存条目包含与TDI相关联的存储器页的内容)处执行的操作。
在框1510,TDIRM可以选择在主机上操作的TDI来破坏。TDI可能被破坏,因为在TDI内操作的租户过程已经终止。TDI也可以被破坏,以便将不可用HKID重新分配给TDIRM将稍后创建的其他TDI。
在框1512,TDIRM可以防止存储在与TDI相关联的TDIPM的存储器页中的指令在主机上执行。
在框1514,TDIRM可以将处理器间中断广播到执行存储在TDIRM的存储器页中的指令的逻辑处理器,从而使得在逻辑处理器上退出。
在框1516,TDIRM可以转储清除与逻辑处理器相关联的高速缓存的高速缓存条目,其中该高速缓存条目包含与TDI相关联的存储器页的内容。
图16示出了用于从与TDI相关联的TDIPM中移除存储器页的方法1600的流程图。方法1600可以对应于图14中所示的方法1400的在框1420处执行的操作(即,从与TDI相关联的TDIPM中移除存储器页)。
在框1610,TDIRM可以从TDIPM中移除与在TDI上操作的租户工作负荷相关联的存储器页。TDIRM可以执行特定指令(例如,TDIREMOVEPAGE)并且提供与租户工作负荷相关联的存储器页的地址以便移除该存储器页。
在1612,TDIRM可以从与执行TDI的逻辑处理器相关联的主机存储器移除分配给TDI EPT的存储器页。TDIRM可以执行特定指令(例如,TDIREMOVEPAGE)并且提供分配给TDIEPT的存储器页的地址,以便从主机存储器移除存储器页。
在框1614,TDIRM可以从TDIPM中移除分配给TDI状态保存区(SSA)帧的存储器页。TDIRM可以执行特定指令(例如,TDIREMOVEPAGE)并且提供分配给TDI SSA帧的存储器页的地址,以便从TDIPM中移除存储器页。
在框1616,TDIRM可以从TDIPM中移除分配给TDI VPS的存储器页。TDIRM可以执行特定指令(例如,TDIREMOVEPAGE)并且提供分配给TDI VPS的存储器页的地址,以便从TDIPM中移除存储器页。
在框1618,TDIRM可以从TDIPM中移除分配给TDICS的存储器页。TDIRM可以执行特定指令(例如,TDIREMOVEPAGE)并且提供分配给TDICS的存储器页的地址,以便从TDIPM中移除存储器页。
在框1620,TDIRM可以从主机存储器移除分配给TDI VMCS的页。TDIRM可以执行特定指令(例如,VMCLEAR)并且提供分配给TDI VMCS的存储器页的地址,以便从主机存储器移除存储器页。
指令集
指令集可以包括一个或多个指令格式。给定的指令格式可以定义各种字段(例如,位的数量、位的位置),尤其是以指定要执行的操作(例如,操作码)和要对其执行该操作的(一个或多个)操作数和/或(一个或多个)其他数据字段(例如,掩码)。一些指令格式通过指令模板(或子格式)的定义被进一步分解。例如,给定指令格式的指令模板可以被定义为具有指令格式的字段的不同子集(所包括的字段通常采用相同的顺序,但是至少一些字段具有不同的位位置,因为包括较少的字段)和/或被定义为具有以不同方式解释的给定字段。因此,ISA的每个指令使用给定的指令格式(并且如果定义的话,在该指令格式的指令模板中的给定的一个中)表达,并且包括用于指定操作和操作数的字段。例如,示例性ADD指令具有特定的操作码和指令格式,该指令格式包括指定该操作码的操作码字段和选择操作数的操作数字段(源1/目的地和源2);并且在指令流中的这个ADD指令的出现将在选择特定操作数的操作数字段中具有特定内容。被称为高级向量扩展(AVX)(AVX1和AVX2)并使用向量扩展(VEX)编码方案的SIMD扩展集已经被发布和/或公布(例如,参见2014年九月的Intel®64和IA-32架构软件开发者手册;并参见2014年十月的Intel®高级向量扩展编程参考)。
示例性指令格式
本文描述的(一个或多个)指令的实施例可按照不同的格式体现。此外,在下面详细描述了示例性系统、架构和流水线。(一个或多个)指令的实施例可在此类系统、架构和流水线上执行,但不限于详细描述的那些。
通用向量友好指令格式
向量友好指令格式是适合于向量指令的指令格式(例如,存在向量操作特定的某些字段)。虽然描述向量和标量操作均通过向量友好指令格式来支持的实施例,但是备选实施例仅使用向量友好指令格式的向量操作。
图17A-17B是示出了根据本发明的一些实施例的通用向量友好指令格式及其指令模板的框图。图17A是示出了根据本发明的一些实施例的通用向量友好指令格式及其A类指令模板的框图;而图17B是示出了根据本发明的一些实施例的通用向量友好指令格式及其B类指令模板的框图。特别地,为通用向量友好指令格式1700而定义了A类和B类指令模板,这两者包括无存储器存取1705指令模板和存储器存取1720指令模板。向量友好指令格式的上下文中的术语“通用”表示指令格式没有被绑定到任何特定指令集。
虽然将描述向量友好指令格式支持如下方面的本发明的实施例:具有32位(4字节)或64位(8字节)数据元素宽度(或大小)的64字节向量操作数长度(或大小)(并且因此64字节向量由16个双字大小元素或者备选地8个四字大小元素组成);具有16位(2字节)或8位(1字节)数据元素宽度(或大小)的64字节向量操作数长度(或大小);具有32位(4字节)、64位(8字节)、16位(2字节)或8位(1字节)数据元素宽度(或大小)的32字节向量操作数长度(或大小);以及具有32位(4字节)、64位(8字节)、16位(2字节)或8位(1字节)数据元素宽度(或大小)的16字节向量操作数长度(或大小);但是备选实施例可以支持更多、更少和/或具有更多、更少或不同数据元素宽度(例如,128位(16字节)数据元素宽度)的不同向量操作数大小(例如,256字节向量操作数)。
图17A中的A类指令模板包括:1)在无存储器存取1705指令模板内,示出无存储器存取、全舍入(full round)控制类型操作1710指令模板和无存储器存取、数据变换类型操作1715指令模板;以及2)在存储器存取1720指令模板内,示出存储器存取、时间1725指令模板和存储器存取、非时间1730指令模板。图17B中的B类指令模板包括:1)在无存储器存取1705指令模板内,示出无存储器存取、写掩码控制、部分舍入控制类型操作1712指令模板和无存储器存取、写掩码控制、VSIZE类型操作1717指令模板;以及2)在存储器存取1720指令模板内,示出存储器存取、写掩码控制1727指令模板。
通用向量友好指令格式1700包括以下按照图17A-17B所示顺序列出的下列字段。
格式字段1740——这个字段中的特定值(指令格式标识符值)唯一地标识向量友好指令格式,并且因而标识指令流中按照向量友好指令格式的指令的出现。因此,在不是仅具有通用向量友好指令格式的指令集所需的意义上,这个字段是可选的。
基本操作字段1742——其内容区分不同的基本操作。
寄存器索引字段1744——其内容直接地或者通过地址生成来指定源和目的地操作数的位置(如果它们在寄存器中或者在存储器中的话)。这些包括充分位数,以便从P×Q(例如,32×512、16×128、32×1024、64×1024)寄存器堆中选择N个寄存器。虽然在一个实施例中,N可多达三个源和一个目的地寄存器,但是备选实施例可以支持更多或更少的源和目的地寄存器(例如,可以支持多达两个源(其中这些源之一还充当目的地),可以支持多达三个源(其中这些源之一还充当目的地),可以支持多达两个源和一个目的地)。
修改符(modifier)字段1746——针对无存储器存取格式指令被标记为1746A,并且针对存储器存取格式指令被标记为1746B——区分按照通用向量指令格式的指令的出现,其指定来自不是存储器存取的指令模板的存储器存取;即,在无存储器存取1705指令模板与存储器存取1720指令模板之间区分。存储器存取操作对存储器分级结构进行读和/或写(在一些情况下,使用寄存器中的值来指定源和/或目的地地址),而非存储器存取操作则不是这样(例如,源和目的地是寄存器)。虽然在一个实施例中,这个字段也在执行存储器地址计算的三种不同方式之间选择,但是备选实施例可以支持执行存储器地址计算的更多、更少或不同的方式。
扩增(augmentation)操作字段1750——其内容区分除了基本操作之外各种不同操作中的哪一个还要被执行。这个字段是上下文特定的。在一些实施例中,这个字段分为类字段1768、α字段1752和β字段1754。扩增操作字段1750允许操作的共同群组在单个指令中而不是2、3或4个指令中执行。
定标(scale)字段1760——其内容虑及用于存储器地址生成(例如,用于使用2定标* 索引 + 基的地址生成)的索引字段的内容的定标。
位移字段1762A——其内容用作存储器地址生成的一部分(例如,用于使用2定标 *索引 + 基 + 位移的地址生成)。
位移因数字段1762B(注意,直接在位移因数字段1762B之上的位移字段1762A的并置指示使用一个或另一个)——其内容用作地址生成的一部分;它指定要通过存储器存取的大小(N)来定标的位移因数——其中N是存储器存取中的字节数(例如,用于使用2定标 *索引 + 基 + 定标的位移的地址生成)。忽略冗余低阶位,并且因此位移因数字段的内容与存储器操作数总大小(N)相乘,以便生成计算有效地址中使用的最终位移。N的值由处理器硬件在运行时基于全操作码字段1774(本文稍后所述)和数据操纵字段1754C来确定。在位移字段1762A和位移因数字段1762B不用于无存储器存取1705指令模板和/或不同实施例可以仅实现这两个字段中的一个或不实现这两个字段的意义上,位移字段1762A和位移因数字段1762B是可选的。
数据元素宽度字段1764——其内容区分要使用多个数据元素宽度中的哪一个(在一些实施例中用于全部指令;在其他实施例中仅用于指令中的一些)。在仅支持一个数据元素宽度和/或数据元素宽度使用操作码的某个方面来支持的情况下不需要这个字段的意义上,这个字段是可选的。
写掩码字段1770——其内容在每数据元素位置基础上控制目的地向量操作数中的那个数据元素位置是否反映基本操作和扩增操作的结果。A类指令模板支持合并-写掩码,而B类指令模板支持合并-和归零-写掩码。当合并时,向量掩码允许目的地中的元素的任何集合在任何操作的执行期间被保护以免更新(这通过基本操作和扩增操作来指定);在另一个实施例中,保存目的地的每个元素的旧值,其中对应掩码位具有0。相比之下,当归零时,向量掩码允许目的地中的元素的任何集合在任何操作的执行期间被归零(这通过基本操作和扩增操作来指定);在一个实施例中,当对应掩码位具有0值时,目的地的元素设置为0。这个功能性的子集是控制被执行的操作的向量长度的能力(也就是说,元素的跨度(span)从第一个修改成最后一个);但是,被修改的元素连续不是必需的。因此,写掩码字段1770虑及部分向量操作,包括加载、存储、算术、逻辑等。虽然描述了写掩码字段1770的内容选择多个写掩码寄存器其中之一(其包含待使用的写掩码)(并且因而写掩码字段1770的内容间接地标识待执行的掩码)的本发明的实施例,但是作为替代或补充,备选实施例允许掩码写字段1770的内容直接指定待执行的掩码。
立即数字段1772——其内容虑及立即数的指定。这个字段在如下所述的意义上是可选的:它不存在于不支持立即数的通用向量友好格式的实现中并且它不存在于不使用立即数的指令中。
类字段1768——其内容区分不同类的指令。参照图17A-B,这个字段的内容在A类与B类指令之间进行选择。图17A-B中,圆角正方形用来指示特定值存在于字段中(例如,分别在图17A-B中针对类字段1768的A类1768A和B类1768B)。
A类的指令模板
在A类的非存储器存取1705指令模板的情况下,α字段1752被解释为RS字段1752A,其内容区分不同扩增操作类型中的哪一个要被执行(例如,对无存储器存取、舍入类型操作1710和无存储器存取、数据变换类型操作1715指令模板分别指定舍入1752A.1和数据变换1752A.2),而β字段1754区分要执行所指定类型的操作中的哪一个。在无存储器存取1705指令模板中,定标字段1760、位移字段1762A和位移因数字段1762B不存在。
无存储器存取指令模板——全舍入控制类型操作
在无存储器存取全舍入控制类型操作1710指令模板中,β字段1754被解释为舍入控制字段1754A,其(一个或多个)内容提供静态舍入。虽然在本发明的所述实施例中,舍入控制字段1754A包括抑制所有浮点异常(SAE)字段1756和舍入操作控制字段1758,但是备选实施例可以支持将这些概念均编码到相同字段中,或者仅具有这些概念/字段中的一个或另一个(例如,可以仅具有舍入操作控制字段1758)。
SAE字段1756——其内容区分是否禁用异常事件报告;当SAE字段1756的内容指示启用抑制时,给定指令不报告任何种类的浮点异常标志,并且不引起任何浮点异常处理程序。
舍入操作控制字段1758——其内容区分要执行一组舍入操作中的哪一个(例如,上舍入、下舍入、向零舍入和舍入到最近(Round-to-nearest))。因此,舍入操作控制字段1758虑及在每指令基础上改变舍入模式。在处理器包括用于指定舍入模式的控制寄存器的一些实施例中,舍入操作控制字段1750的内容覆写(override)那个寄存器值。
无存储器存取指令模板——数据变换类型操作
在无存储器存取数据变换类型操作1715指令模板中,β字段1754被解释为数据变换字段1754B,其内容区分要执行多个数据变换中的哪一个(例如,无数据变换、打乱、广播)。
在A类的存储器存取1720指令模板的情况下,α字段1752被解释为驱逐(eviction)提示字段1752B,其内容区分要使用驱逐提示中的哪一个(图17A中,对存储器存取、时间1725指令模板和存储器存取、非时间1730指令模板分别指定时间1752B.1和非时间1752B.2),而β字段1754被解释为数据操纵字段1754C,其内容区分要执行多个数据操纵操作(又称作原语)中的哪一个(例如,无操纵、广播、源的上变换和目的地的下变换)。存储器存取1720指令模板包括定标字段1760以及可选的位移字段1762A或位移定标字段1762B。
向量存储器指令通过转换支持来执行自存储器的向量加载以及往存储器的向量存储。如同常规(regular)向量指令那样,向量存储器指令逐个数据元素地从/向存储器传递数据,其中实际传递的元素通过选择作为写掩码的向量掩码的内容来规定。
存储器存取指令模板——时间
时间数据是可能被足够快地再使用以获益于高速缓存的数据。但是,这是提示,并且不同处理器可按照不同方式(包括完全忽略提示)来实现它。
存储器存取指令模板——非时间
非时间数据是不可能被足够快再使用以获益于1级高速缓存中的高速缓存的数据,并且应当被给予针对驱逐的优先级。但是,这是提示,并且不同处理器可按照不同方式(包括完全忽略提示)来实现它。
B类的指令模板
在B类的指令模板的情况下,α字段1752被解释为写掩码控制(Z)字段1752C,其内容区分写掩码字段1770所控制的写掩码应当是合并或归零。
在B类的非存储器存取1705指令模板的情况下,β字段1754的一部分被解释为RL字段1757A,其内容区分不同扩增操作类型中的哪一个要被执行(例如,对无存储器存取、写掩码控制、部分舍入控制操作1712指令模板和无存储器存取、写掩码控制、VSIZE类型操作1717指令模板分别指定舍入1757A.1和向量长度(VSIZE)1757A.2),而β字段1754的其余部分区分要执行所指定类型的操作中的哪个。在无存储器存取1705指令模板中,定标字段1760、位移字段1762A和位移因数字段1762B不存在。
在无存储器存取、写掩码控制、部分舍入控制类型操作1710指令模板中,β字段1754的其余部分被解释为舍入操作字段1759A,并且禁用异常事件报告(给定指令不报告任何种类的浮点异常标志,并且不发起任何浮点异常处理程序)。
舍入操作控制字段1759A——正如舍入操作控制字段1758,其内容区分要执行一组舍入操作中的哪个(例如,上舍入、下舍入、向零舍入和舍入到最近)。因此,舍入操作控制字段1759A虑及在每指令基础上改变舍入模式。在处理器包括用于指定舍入模式的控制寄存器的一些实施例中,舍入操作控制字段1750的内容覆写那个寄存器值。
在无存储器存取、写掩码控制、VSIZE类型操作1717指令模板中,β字段1754的其余部分被解释为向量长度字段1759B,其内容区分多个数据向量长度中的哪一个要被执行(例如,128、256或512字节)。
在B类的存储器存取1720指令模板的情况下,β字段1754的一部分被解释为广播字段1757B,其内容区分广播类型数据操纵操作是否要被执行,而β字段1754的其余部分被解释为向量长度字段1759B。存储器存取1720指令模板包括定标字段1760以及可选的位移字段1762A或位移因数字段1762B。
关于通用向量友好指令格式1700,示出全操作码字段1774,其包括格式字段1740、基本操作字段1742、和数据元素宽度字段1764。虽然示出全操作码字段1774包括这些字段中的全部字段的一个实施例,但是在不支持这些字段中的全部字段的实施例中,全操作码字段1774包括少于全部这些字段。全操作码字段1774提供操作代码(操作码)。
扩增操作字段1750、数据元素宽度字段1764和写掩码字段1770允许这些特征在通用向量友好指令格式中在每指令的基础上指定。
写掩码字段和数据元素宽度字段的组合创建有类型的(typed)指令,因为它们允许掩码基于不同数据元素宽度来应用。
存在于A类和B类内的各种指令模板在不同状况中是有益的。在本发明的一些实施例中,不同处理器或者处理器内的不同核可以支持仅A类、仅B类或者两类。例如,预计用于通用计算的高性能通用乱序(out of order)核可以仅支持B类,预计主要用于图形和/或科学(吞吐量)计算的核可以仅支持A类,以及预计用于两者的核可以支持两者(当然,具有来自两类的模板和指令的某种混合但是没有来自两类的所有模板和指令的核在本发明的范围内)。另外,单个处理器可以包括多个核,其全部支持相同类,或者其中不同核支持不同类。例如,在具有独立图形和通用核的处理器中,预计主要用于图形和/或科学计算的图形核之一可以仅支持A类,而通用核中的一个或多个可以是预计用于通用计算的具有乱序执行和寄存器重命名的高性能通用核,其仅支持B类。没有独立图形核的另一个处理器可以多包括一个通用有序或乱序核,其支持A类和B类两者。当然,在本发明的不同实施例中,来自一类的特征也可在另一类中实现。采用高级语言编写的程序将被转化(例如,准时编译或静态编译)成各种不同的可执行形式,包括:1)仅具有目标处理器所支持的(一个或多个)类的指令以便执行的形式;或者2)具有使用所有类的指令的不同组合所编写的备选例程并且具有控制流代码的形式,其中所述控制流代码基于当前正在执行代码的处理器所支持的指令来选择要执行的例程。
示例性特定向量友好指令格式
图18A是示出了根据本发明的一些实施例的示例性特定向量友好指令格式的框图。图18A示出特定向量友好指令格式1800,其在指定字段的位置、大小、解释和顺序以及那些字段中的一些字段的值的意义上是特定的。特定向量友好指令格式1800可用于扩展x86指令集,并且因而字段中的一些与现有x86指令集及其扩展(例如,AVX)中使用的字段相似或相同。这个格式保持为与具有扩展的现有x86指令集的前缀编码字段、真(real)操作码字节字段、MOD R/M字段、SIB字段、位移字段和立即数字段一致。示出来自图17A或17B的字段,来自图18A的字段映射成来自图17A或17B的字段。
应当理解,虽然为了便于说明而在通用向量友好指令格式1700的上下文中参照特定向量友好指令格式1800来描述本发明的实施例,但是本发明不限于特定向量友好指令格式1800,除了要求保护的情况之外。例如,通用向量友好指令格式1700考虑各种字段的各种可能大小,而特定向量友好指令格式1800示为具有特定大小的字段。通过特定示例,虽然数据元素宽度字段1764示为特定向量友好指令格式1800中的一位字段,但是本发明不限于此(也就是说,通用向量友好指令格式1700考虑数据元素宽度字段1764的其他大小)。
特定向量友好指令格式1800包括以下按照图18A所示顺序列出的下列字段。
EVEX前缀(字节0-3)1802——按照四字节形式来编码。
格式字段1740(EVEX字节0、位[7:0])-第一字节(EVEX字节0)是格式字段1740,并且它包含0x62(在一些实施例中用于区分向量友好指令格式的唯一值)。
第二-第四字节(EVEX字节1-3)包括提供特定能力的多个位字段。
REX字段1805(EVEX字节1,位[7-5])——由EVEX.R位字段(EVEX字节1,位[7]–R)、EVEX.X位字段(EVEX字节1,位[6]–X)和EVEX.B位字段(EVEX 字节1、位[5]–B)组成。EVEX.R、EVEX.X和EVEX.B位字段提供与对应VEX位字段相同的功能性,并且使用1补码形式来编码,即,ZMM0编码为1111B,ZMM15编码为0000B。指令的其他字段如本领域已知对寄存器索引的较低的三位进行编码(rrr、xxx和bbb),使得Rrrr、Xxxx和Bbbb可以通过将EVEX.R、EVEX.X和EVEX.B相加来形成。
REX’字段1810A——这是REX’字段1810的第一部分,并且是EVEX.R’位字段(EVEX字节1,位[4]–R’),其用于对扩展32寄存器集的较高16个或较低16个进行编码。在一些实施例中,这个位连同如以下所指示的其他位按照位反转格式来存储,以(在众所周知的x86 32位模式中)与BOUND指令进行区分,BOUND指令的真操作码字节为62,但是在MOD R/M字段(以下所述)中不接受MOD字段中的值11;本发明的备选实施例不按照反转格式来存储这个和下面的其他指示的位。值1用于对较低的16个寄存器进行编码。换言之,R’Rrrr通过组合EVEX.R’、EVEX.R和来自其他字段的其他RRR来形成。
操作码映射字段1815(EVEX字节1,位[3:0]–mmmm)——其内容对暗示引导(implied leading)操作码字节(0F、0F 38或0F 3)进行编码。
数据元素宽度字段1764(EVEX字节2,位[7]–W)——通过记号EVEX.W来表示。EVEX.W用于定义数据类型的粒度(大小)(32位数据元素或者64位数据元素)。
EVEX.vvvv 1820(EVEX字节2,位[6:3]-vvvv)——EVEX.vvvv的作用可以包括以下项:1)EVEX.vvvv对于采取反转(1补码)形式所指定的第一源寄存器操作数进行编码,并且对具有2个或更多源操作数的指令是有效的;2)EVEX.vvvv对于某些向量移位对于采取1补码形式所指定的目的地寄存器操作数进行编码;或者3)EVEX.vvvv没有对任何操作数进行编码,该字段被保留并且应当包含1111b。因此,EVEX.vvvv字段1820对于采取反转(1补码)形式所存储的第一源寄存器指定符的4个低阶位进行编码。取决于指令,额外的不同EVEX位字段用于将指定符大小扩展到32个寄存器。
EVEX.U 1768类字段(EVEX字节2,位[2]-U)——如果EVEX.U = 0,则它指示A类或EVEX.U0;如果EVEX.U = 1,则它指示B类或EVEX.U1。
前缀编码字段1825(EVEX字节2,位[1:0]-pp)——提供针对基本操作字段的附加位。除了提供对EVEX前缀格式中的传统SSE指令的支持之外,这还具有压缩SIMD前缀(而不是要求来表达SIMD前缀的字节,EVEX前缀仅要求2位)的益处。在一个实施例中,为了支持使用按照传统格式和按照EVEX前缀格式的SIMD前缀(66H、F2H、F3H)的传统SSE指令,这些传统SIMD前缀编码成SIMD前缀编码字段;以及在被提供给解码器的PLA之前在运行时扩大为传统SIMD前缀(因此PLA能够在不修改的情况下执行这些传统指令的传统和EVEX格式两者)。虽然较新指令可以将EVEX前缀编码字段的内容直接用作操作码扩展,但是某些实施例按照类似方式扩大以获得一致性,但是虑及不同含意由这些传统SIMD前缀来指定。备选实施例可重新设计PLA以支持2位SIMD前缀编码,并且因而不要求扩大。
α字段1752(EVEX字节3,位[7]–EH;又称作EVEX.EH、EVEX.rs、EVEX.RL、EVEX.写掩码控制和EVEX.N;也采用α示出)——如先前所述,这个字段是上下文特定的。
β字段1754(EVEX字节3,位[6:4]-SSS,又称作EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;也用βββ示出)——如先前所述,这个字段是上下文特定的。
REX’字段1810B——这是REX’字段1810的其余部分,并且是EVEX.V’位字段(EVEX字节3,位[3]–V’),其可用于对扩展32寄存器集的较高16个或较低16个进行编码。这个位按照位反转格式来存储。值1用于对较低16个寄存器进行编码。换言之,V’VVVV通过组合EVEX.V’、EVEX.vvvv来形成。
写掩码字段1770(EVEX字节3,位[2:0]-kkk)——其内容指定写掩码寄存器中的寄存器的索引,如先前所述。在一些实施例中,特定值EVEX.kkk=000具有暗示没有写掩码用于特定指令的特殊行为(这可按照多种方式来实现,包括使用硬连线到全部一的写掩码或者绕过掩码硬件的硬件)。
真操作码字段1830(字节4)又称作操作码字节。操作码的一部分在这个字段中指定。
MOD R/M字段1840(字节5)包括MOD字段1842、Reg字段1844和/或R/M字段1846。如先前所述,MOD字段1842的内容区分存储器存取和非存储器存取操作。Reg字段1844的作用能够概括成两种状况:对目的地寄存器操作数或者源寄存器操作数进行编码,或者被看作是操作码扩展而不用于对任何指令操作数进行编码。R/M字段1846的作用可以包括以下:对于引用存储器地址的指令操作数进行编码,或者对目的地寄存器操作数或源寄存器操作数进行编码。
定标、索引、基本(SIB)字节(字节6)1850——如先前所述,定标字段SIB.ss1852用于存储器地址生成。SIB.xxx 1854和SIB.bbb 1856——先前针对寄存器索引Xxxx和Bbbb已经提到这些字段的内容。
位移字段1762A(字节7-10)——当MOD字段1842包含10时,字节7-10是位移字段1762A,并且它与传统32位位移(disp32)相同地进行工作,并且以字节粒度进行工作。
位移因数字段1762B(字节7)——当MOD字段1842包含01时,字节7是位移因数字段1762B。这个字段的位置与传统x86指令集8位位移(disp8)的位置相同,这个字段以字节粒度进行工作。由于disp8是符号扩展,所以它能够仅在-128与127字节偏移之间进行寻址;根据64字节高速缓存线,disp8使用8位,其能够设置成仅四个实际有用值-128、-64、0和64;由于常常需要较大范围,所以使用disp32;但是disp32要求4个字节。与disp8和disp32形成对照,位移因数字段1762B是disp8的重新解释;当使用位移因数字段1762B时,实际位移通过位移因数字段的内容乘以存储器操作数存取的大小(N)来确定。这种类型的位移称作disp8*N。这减少平均指令长度(用于位移但是具有大得多的范围的单个字节)。这种压缩位移基于如下假设:有效位移是存储器存取的粒度的倍数,并且因此地址偏移的冗余低阶位无需被编码。换言之,位移因数字段1762B代替传统x86指令集8位位移。因此,位移因数字段1762B采用与x86指令集8位位移相同的方式来编码(因此没有ModRM/SIB编码规则的变化),其中唯一的例外是disp8过度加载到disp8*N。换言之,不存在编码规则或编码长度的变化,而是仅存在硬件(其需要将位移缩放存储器操作数的大小,以得到逐字节的地址偏移)对位移值的解释的变化。立即数字段1772如先前所述那样进行操作。
全操作码字段
图18B是示出了根据一些实施例、组成全操作码字段1774的特定向量友好指令格式1800的字段的框图。特定地,全操作码字段1774包括格式字段1740、基本操作字段1742和数据元素宽度(W)字段1764。基本操作字段1742包括前缀编码字段1825、操作码映射字段1815和真操作码字段1830。
寄存器索引字段
图18C是示出了根据一些实施例、组成寄存器索引字段1744的特定向量友好指令格式1800的字段的框图。特别地,寄存器索引字段1744包括REX字段1805、REX’字段1810、MODR/M.reg字段1844、MODR/M.r/m字段1846、VVVV字段1820、xxx字段1854和bbb字段1856。
扩增操作字段
图18D是示出了根据一些实施例、组成扩增操作字段1750的特定向量友好指令格式1800的字段的框图。当类(U)字段1768包含0时,它表示EVEX.U0(A类1768A);当它包含1时,它表示EVEX.U1(B类1768B)。当U=0并且MOD字段1842包含11(表示无存储器存取操作)时,α字段1752(EVEX字节3,位[7]–EH)被解释为rs字段1752A。当rs字段1752A包含1(舍入1752A.1)时,β字段1754(EVEX字节3,位[6:4]–SSS)被解释为舍入控制字段1754A。舍入控制字段1754A包括一位SAE字段1756和二位舍入操作字段1758。当rs字段1752A包含0(数据变换1752A.2)时,β字段1754(EVEX字节3,位[6:4]–SSS)被解释为三位数据变换字段1754B。当U=0并且MOD字段1842包含00、01或10(表示存储器存取操作)时,α字段1752(EVEX字节3,位[7]–EH)被解释为驱逐提示(EH)字段1752B,以及β字段1754(EVEX字节3,位[6:4]–SSS)被解释为具有三个位的数据操纵字段1754C。
当U=1时,α字段1752(EVEX字节3,位[7]–EH)被解释为写掩码控制(Z)字段1752C。当U=1并且MOD字段1842包含11(表示无存储器存取操作)时,部分β字段1754(EVEX字节3,位[4]–S0)被解释为RL字段1757A;当它包含1(舍入1757A.1)时,其余部分的β字段1754(EVEX字节3,位[6-5]–S2-1)被解释为舍入操作字段1759A,而当RL字段1757A包含0(VSIZE1757.A2)时,其余部分的β字段1754(EVEX字节3,位[6-5]–S2-1)被解释为向量长度字段1759B(EVEX字节3,位[6-5] L1-0)。当U=1并且MOD字段1842包含00、01或10(表示存储器存取操作)时,β字段1754(EVEX字节3,位[6:4]–SSS)被解释为向量长度字段1759B(EVEX字节3,位[6-5]–L1-0)和广播字段1757B(EVEX字节3,位[4]–B)。
示例性寄存器架构
图19是根据一些实施例的寄存器架构1900的框图。在所示实施例中,存在512位宽的32个向量寄存器1910;这些寄存器称作zmm0至zmm31。较低16个zmm寄存器的较低256位叠加在寄存器ymm0-16上。较低16个zmm寄存器的较低阶128位(ymm寄存器的较低阶128位)叠加在寄存器xmm0-15上。特定向量友好指令格式1800对这些叠加的寄存器堆进行操作,如下表所示。
Figure DEST_PATH_IMAGE001
换言之,向量长度字段1759B在最大长度与一个或多个其他较短长度之间进行选择,其中每个这种较短长度是前面的长度的一半;以及没有向量长度字段1759B的指令模板对最大向量长度进行操作。此外,在一个实施例中,特定向量友好指令格式1800的B类指令模板对打包或标量单/双精度浮点数据以及打包或标量整数数据进行操作。标量操作是对zmm/ymm/xmm寄存器中的最低阶数据元素位置所执行的操作;较高阶数据元素位置保持为与它们在指令之前的情况相同或者根据实施例归零。
写掩码寄存器1915——在所示实施例中,存在8个写掩码寄存器(k0至k7),每个的大小为64位。在备选实施例中,写掩码寄存器1915的大小为16位。如先前所述,在一些实施例中,向量掩码寄存器k0不能用作写掩码;当将正常指示k0的编码用于写掩码时,它选择0xffff的硬连线写掩码,从而有效地禁用那个指令的写掩码。
通用寄存器1925——在所示实施例中,存在十六个64位通用寄存器,其连同现有x86寻址模式一起用于对存储器操作数进行寻址。这些寄存器由名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP和R8至R15来表示。
标量浮点栈寄存器堆(x87栈)1945(其上混叠了(aliased)MMX打包整数平寄存器堆1950)——在所示实施例中,x87栈是八元素栈,其用于使用x87指令集扩展对32/64/80位浮点数据执行标量浮点运算;而MMX寄存器用于对64位打包整数数据执行操作,以及保持在MMX与XMM寄存器之间执行的一些操作的操作数。
备选实施例可以使用更宽或更窄的寄存器。另外,备选实施例可以使用更多、更少或不同的寄存器堆和寄存器。
示例性核架构、处理器和计算机架构
处理器核可按照不同方式出于不同目的以及在不同的处理器中实现。例如,这类核的实现可以包括:1)预计用于通用计算的通用有序核;2)预计用于通用计算的高性能通用乱序核;3)预计主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可以包括:1)CPU,包括预计用于通用计算的一个或多个通用有序核和/或预计用于通用计算的一个或多个通用乱序核;以及2)协处理器,包括预计主要用于图形和/或科学(吞吐量)的一个或多个专用核。这类不同的处理器得出不同的计算机系统架构,其可以包括:1)与CPU分开的芯片上的协处理器;2)与CPU相同的封装中的独立管芯上的协处理器;3)与CPU相同的管芯上的协处理器(在这种情况下,这种协处理器有时称作专用逻辑,诸如集成图形和/或科学(吞吐量)逻辑,或者称作专用核);以及4)片上系统,其可在相同管芯上包括所述CPU(有时称作(一个或多个)应用核或(一个或多个)应用处理器)、上述协处理器和附加功能性。接下来描述示例性核架构,随后是示例性处理器和计算机架构的描述。
示例性核架构
有序和乱序核框图
图20A是示出了根据本发明的一些实施例、示例性有序流水线和示例性寄存器重命名、乱序发布/执行流水线两者的框图。图20B是示出了根据本发明的一些实施例、包含在处理器中的有序架构核和示例性寄存器重命名、乱序发布/执行架构核的实施例两者的框图。图20A-B中的实线框示出有序流水线和有序核,而虚线框的可选添加示出寄存器重命名、乱序发布/执行流水线和核。鉴于有序方面是乱序方面的子集,将描述乱序方面。
图20A中,处理器流水线2000包括提取级2002、长度解码级2004、解码级2006、分配级2008、重命名级2010、调度(又称作分发或发布)级2012、寄存器读/存储器读级2014、执行级2016、回写/存储器写级2018、异常处置级2022和提交级2024。
图20B示出包括耦合到执行引擎单元2050的前端单元2030(并且它们两者均耦合到存储器单元2070)的处理器核2090。核2090可以是简化指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或者混合或备选核类型。作为又一个选项,核2090可以是专用核(诸如例如网络或通信核)、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等。
前端单元2030包括耦合到指令高速缓存单元2034的分支预测单元2032,指令高速缓存单元2034耦合到指令转换后备缓冲器(TLB)2036,指令转换后备缓冲器(TLB)2036耦合到指令提取单元2038,指令提取单元2038耦合到解码单元2040。解码单元2040(或者解码器)可以对指令进行解码,并且作为输出生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号,其从原始指令被解码或得出或者以其他方式反映原始指令。解码单元2040可以使用各种不同的机制来实现。适当机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微码只读存储器(ROM)等。在一个实施例中,核2090包括微代码ROM或另一介质,其存储针对某些宏指令的微代码(例如,存储在解码单元2040中或者以其他方式存储在前端单元2030内)。解码单元2040耦合到执行引擎单元2050中的重命名/分配器单元2052。
执行引擎单元2050包括重命名/分配器单元2052,其耦合到引退单元2054和一个或多个调度器单元2056的集合。(一个或多个)调度器单元2056表示任何数量的不同调度器,包括保留站、中心指令窗口等。(一个或多个)调度器单元2056耦合到(一个或多个)物理寄存器堆单元2058。(一个或多个)物理寄存器堆单元2058中的每个表示一个或多个物理寄存器堆,其中不同的寄存器堆存储一个或多个不同的数据类型,例如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,作为要执行的下一个指令的地址的指令指针)等。在一个实施例中,(一个或多个)物理寄存器堆单元2058包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通用寄存器。(一个或多个)物理寄存器堆单元2058与引退单元2054重叠,以示出实现寄存器重命名和乱序执行可采用的各种方式(例如,使用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器堆;使用(一个或多个)将来的堆(file)、(一个或多个)历史缓冲器和(一个或多个)引退寄存器堆;使用寄存器映射和寄存器池等)。引退单元2054和(一个或多个)物理寄存器堆单元2058耦合到(一个或多个)执行集群2060。(一个或多个)执行集群2060包括一个或多个执行单元2062的集合和一个或多个存储器存取单元2064的集合。执行单元2062可以执行各种操作(例如,移位、加法、减法、乘法)并且对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)执行。虽然一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可以仅包括一个执行单元或多个执行单元,其全部执行所有功能。(一个或多个)调度器单元2056、(一个或多个)物理寄存器堆单元2058和(一个或多个)执行集群2060示为可能是复数个的,因为某些实施例创建针对某些类型的数据/操作的独立流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线和/或存储器存取流水线,它们各具有其自己的调度器单元、(一个或多个)物理寄存器堆单元和/或执行集群——以及在独立存储器存取流水线的情况下,实现其中只有这个流水线的执行集群具有(一个或多个)存储器存取单元2064的某些实施例)。还应当理解,在使用独立流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,而其余的流水线是有序的。
存储器存取单元2064的集合耦合到存储器单元2070,其包括耦合到数据高速缓存单元2074的数据TLB单元2072,数据高速缓存单元2074耦合到2级(L2)高速缓存单元2076。在一个示例性实施例中,存储器存取单元2064可以包括加载单元、存储地址单元和存储数据单元,它们中的每个耦合到存储器单元2070中的数据TLB单元2072。指令高速缓存单元2034还耦合到存储器单元2070中的2级(L2)高速缓存单元2076。L2高速缓存单元2076耦合到一个或多个其他级的高速缓存,并且最终耦合到主存储器。
通过举例,示例性寄存器重命名、乱序发布/执行核架构可如下所述实现流水线2000:1)指令提取2038执行提取和长度解码级2002和2004;2)解码单元2040执行解码级2006;3)重命名/分配器单元2052执行分配级2008和重命名级2010;4)(一个或多个)调度器单元2056执行调度级2012;5)(一个或多个)物理寄存器堆单元2058和存储器单元2070执行寄存器读/存储器读级2014;执行集群2060执行执行级2016;6)存储器单元2070和(一个或多个)物理寄存器堆单元2058执行回写/存储器写级2018;7)各种单元可涉及异常处置级2022;以及8)引退单元2054和(一个或多个)物理寄存器堆单元2058执行提交级2024。
核2090可以支持一个或多个指令集(例如,x86指令集(其中具有已经随较新版本添加的一些扩展);加利福尼亚州Sunnyvale的MIPS Technologies的MIPS指令集;加利福尼亚州Sunnyvale的ARM Holdings的ARM指令集(其具有可选附加扩展,例如NEON)),包括本文所述的(一个或多个)指令。在一个实施例中,核2090包括支持打包数据指令集扩展的逻辑(例如,AVX1、AVX2),从而允许许多多媒体应用所使用的操作使用打包数据来执行。
应当理解,核可以支持多线程处理(multithreading)(其执行操作或线程的两个或更多并行集合),并且可按照各种方式这样做,包括时间切片多线程处理、同时多线程处理(其中单个物理核为物理核正在同时多线程处理的线程中的每个提供逻辑核)或者其组合(例如,诸如在Intel®超线程处理技术中的时间切片提取和解码以及此后的同时多线程处理)。
虽然在乱序执行的上下文中描述寄存器重命名,但是应当理解,寄存器重命名可用在有序架构中。虽然处理器的所示实施例还包括独立指令和数据高速缓存单元2034/2074和共享L2高速缓存单元2076,但是备选实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如,例如1级(L1)内部高速缓存或者多级内部高速缓存。在一些实施例中,系统可以包括内部高速缓存以及核和/或处理器外部的外部高速缓存的组合。备选地,高速缓存中的全部可以在核和/或处理器外部。
特定示例性有序核架构
图21A-B示出更特定的示例性有序核架构的框图,该核将是芯片中的若干逻辑块其中之一(包括相同类型和/或不同类型的其他核)。取决于应用,逻辑块利用某固定功能逻辑、存储器I/O接口和其他必要I/O逻辑通过高带宽互连网络(例如,环形网络)进行通信。
图21A是根据本发明的一些实施例、单个处理器核连同其与管芯上互连网络2102的连接并且与其2级(L2)高速缓存2104的本地子集的连接的框图。在一个实施例中,指令解码器2100支持具有打包数据指令集扩展的x86指令集。L1高速缓存2106允许对标量和向量单元中的高速缓冲存储器的低时延存取。虽然在一个实施例中(为了简化设计),标量单元2108和向量单元2110使用独立寄存器集(分别为标量寄存器2112和向量寄存器2114),以及在它们之间所传递的数据被写到存储器并且然后从1级(L1)高速缓存2106读回,但是本发明的备选实施例可以使用不同方式(例如,使用单个寄存器集,或者包括允许数据在两个寄存器堆之间传递的通信路径,而无需被写入和读回)。
L2高速缓存2104的本地子集是全局L2高速缓存(其分为独立本地子集,每处理器核一个)的一部分。每个处理器核具有到L2高速缓存2104的其自己的本地子集的直接访问路径。由处理器核所读取的数据存储在其L2高速缓存子集2104中,并且能够与访问它们自己的本地L2高速缓存子集的其他处理器核并行地快速访问。由处理器核所写入的数据存储在其自己的L2高速缓存子集2104中,并且在必要时从其他子集转储清除。环形网络确保共享数据的连贯性(coherency)。环形网络是双向的,以便允许诸如处理器核、L2高速缓存和其他逻辑块之类的代理在芯片内相互通信。每个环形数据路径每方向是1012位宽。
图21B是根据本发明的一些实施例、图21A中的处理器核的部分的展开图。图21B包括L1高速缓存2104的L1数据高速缓存2106A部分以及与向量单元2110和向量寄存器2114有关的更多细节。特定地,向量单元2110是16宽向量处理单元(VPU)(参见16宽ALU 2128),其执行整数、单精度浮点和双精度浮点指令中的一个或多个。VPU支持利用打乱单元2120将寄存器输入打乱、利用数字转换单元2122A和2122B的数字转换以及利用复制单元2124对存储器输入的复制。写掩码寄存器2126允许预测所得的向量写。
图22是根据本发明的一些实施例、可以具有不止一个核、可以具有集成存储器控制器并且可以具有集成图形的处理器2200的框图。图22中的实线框示出具有单个核2202A、系统代理2210、一个或多个总线控制器单元2216集合的处理器2200,而虚线框的可选添加示出具有多个核2202A到2202N、系统代理单元2210中的一个或多个集成存储器控制器单元2214的集合和专用逻辑2208的备选处理器2200。
因此,处理器2200的不同实现可以包括:1)具有作为集成图形和/或科学(吞吐量)逻辑(其可以包括一个或多个核)的专用逻辑2208和作为一个或多个通用核(例如,通用有序核、通用乱序核、两者的组合)的核2202A-N的CPU;2)具有作为预计主要用于图形和/或科学(吞吐量)的大量专用核的核2202A-N的协处理器;以及3)具有作为大量通用有序核的核2202A-N的协处理器。因此,处理器2200可以是通用处理器、协处理器或专用处理器,诸如,例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量多集成核(MIC)协处理器(包括30个或更多核)、嵌入式处理器等。处理器可在一个或多个芯片上实现。处理器2200可以是一个或多个衬底的一部分和/或可以使用多种工艺技术中的任一种(诸如,例如BiCMOS、CMOS或NMOS)在一个或多个衬底上实现。
存储器分级结构包括核内的一级或多级高速缓存、一组或一个或多个共享高速缓存单元2206以及耦合到集成存储器控制器单元2214的集合的外部存储器(未示出)。共享高速缓存单元2206的集合可以包括一个或多个中间级高速缓存,诸如2级(L2)、3级(L3)、4级(L4)或者其他高速缓存级、最后一级高速缓存(LLC)和/或它们的组合。虽然在一个实施例中,基于环(ring)的互连单元2212互连集成图形逻辑2208(集成图形逻辑2208是专用逻辑的示例并且在本文中也指的是专用逻辑)、共享高速缓存单元2206的集合和系统代理单元2210/(一个或多个)集成存储器控制器单元2214,但是备选实施例可以将任何数量的众所周知技术用于互连这类单元。在一个实施例中,在一个或多个高速缓存单元2206与核2202A-N之间保持连贯性。
在一些实施例中,核2202A-N中的一个或多个能够进行多线程处理。系统代理2210包括协调和操作核2202A-N的那些组件。系统代理单元2210可以包括例如功率控制单元(PCU)和显示单元。PCU可以是或者包括用于调节核2202A-N和集成图形逻辑2208的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核2202A-N在架构指令集方面可以是同构或异构的;也就是说,核2202A-N中的两个或更多可以能够执行相同指令集,而其他核可以能够仅执行不同的指令集或者那个指令集的子集。
示例性计算机架构
图23-26是示例性计算机架构的框图。用于膝上型计算机、台式计算机、手持式PC、个人数字助理、工程工作站、服务器、网络装置、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携媒体播放器、手持式装置和各种其他电子装置的、在本领域中已知的其他系统设计和配置也是适合的。一般来说,能够结合本文所公开的处理器和/或其他执行逻辑的大量各种系统或电子装置一般是适合的。
现在参照图23,示出的是根据本发明的一个实施例的系统2300的框图。系统2300可以包括一个或多个处理器2310、2315,其耦合到控制器集线器2320。在一个实施例中,控制器集线器2320包括图形存储器控制器集线器(GMCH)2390和输入/输出集线器(IOH)2350(其可在独立芯片上);GMCH 2390包括存储器和图形控制器,存储器2340和协处理器2345与其耦合;IOH 2350将输入/输出(I/O)装置2360耦合到GMCH 2390。备选地,存储器和图形控制器中的一个或两者集成在处理器内(如本文所述),存储器2340和协处理器2345直接耦合到处理器2310以及具有IOH 2350的单个芯片中的控制器集线器2320。
附加处理器2315的可选性质在图23中采用虚线表示。每个处理器2310、2315可以包括本文所述处理核中的一个或多个,并且可以是处理器2200的某个版本。
存储器2340可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或者两者的组合。对于至少一个实施例,控制器集线器2320经由多点总线(例如,前侧总线(FSB))、点对点接口(例如,QuickPath互连(QPI))或者类似连接2395与(一个或多个)处理器2310、2315进行通信。
在一个实施例中,协处理器2345是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器集线器2320可以包括集成图形加速器。
在包括架构、微架构、热、功耗特性等的品质量度的范围方面,可在物理资源2310、2315之间存在各种差异。
在一个实施例中,处理器2310执行控制通用类型的数据处理操作的指令。嵌入在指令中的可以是协处理器指令。处理器2310将这些协处理器指令识别为具有应当由所附连的协处理器2345来执行的类型。相应地,处理器2310在协处理器总线或其他互连上向协处理器2345发布这些协处理器指令(或者表示协处理器指令的控制信号)。(一个或多个)协处理器2345接受和执行所接收的协处理器指令。
现在参照图24,所示的是根据本发明的实施例的第一更特定的示例性系统2400的框图。如图24所示,多处理器系统2400是点对点互连系统,并且包括经由点对点互连2450耦合的第一处理器2470和第二处理器2480。处理器2470和2480中的每个可以是处理器2200的某个版本。在一些实施例中,处理器2470和2480分别是处理器2310和2315,而协处理器2438是协处理器2345。在另一个实施例中,处理器2470和2480分别是处理器2310、协处理器2345。
示出处理器2470和2480,其分别包括集成存储器控制器(IMC)单元2472和2482。处理器2470还包括作为其总线控制器单元的一部分的点对点(P-P)接口2476和2478;类似地,第二处理器2480包括P-P接口电路2486和2488。处理器2470、2480可以使用点对点(P-P)接口电路2478、2488经由P-P接口2450来交换信息。如图24所示,IMC 2472和2482将处理器耦合到相应存储器,即,存储器2432和存储器2434,其可以是本地附连到相应处理器的主存储器的部分。
处理器2470、2480各自可以使用点对点接口电路2476、2494、2486、2498经由单独P-P接口2452、2454与芯片集2490交换信息。芯片集2490可选地可经由高性能接口2492与协处理器2438交换信息。在一个实施例中,协处理器2438是专用处理器,诸如,例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
共享高速缓存(未示出)可包含在任一处理器中或者两个处理器外部,但是仍然经由P-P互连与处理器连接,使得如果使处理器进入低功率模式,则任一个或两个处理器的本地高速缓存信息可以存储在共享高速缓存中。
芯片集2490可经由接口2496耦合到第一总线2416。在一个实施例中,第一总线2416可以是外设组件互连(PCI)总线或者例如PCI Express总线之类的总线或另一种第三代I/O互连总线,但是本公开的范围并不局限于此。
如图24所示,各种I/O装置2414可连同总线桥2418(其将第一总线2416耦合到第二总线2420)一起耦合到第一总线2416。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或者任何其他处理器之类的一个或多个附加处理器2415耦合到第一总线2416。在一个实施例中,第二总线2420可以是低引脚数(LPC)总线。在一个实施例中,各种装置可耦合到第二总线2420,包括例如键盘和/或鼠标2422、通信装置2427以及可以包括指令/代码和数据2430的诸如磁盘驱动器或其他海量存储装置之类的存储单元2428。此外,音频I/O 2424可耦合到第二总线242420。注意,其他架构是可能的。例如,代替图24的点对点架构,系统可以实现多点总线或其他这种架构。
现在参照图25,示出的是根据本发明的实施例的第二更特定的示例性系统2500的框图。图24和图25中的相似元件具有相似参考标号,并且已经从图25中省略图24的某些方面,以免使图25的其他方面模糊。
图25示出处理器2470、2480可分别包括集成存储器和I/O控制逻辑(“CL”)2572和2582。因此,CL 2572、2582包括集成存储器控制器单元,并且包括I/O控制逻辑。图25不仅示出存储器2432、2434耦合到CL 2572、2582,而且还示出I/O装置2514也耦合到控制逻辑2572、2582。传统I/O装置2515耦合到芯片集2490。
现在参照图26,示出的是根据本发明的实施例的SoC 2600的框图。图22中的相似元件具有相似参考标号。另外,虚线框是更高级SoC上的可选特征。图26中,(一个或多个)互连单元2602耦合到:应用处理器2610,其包括一个或多个核2202A-N的集合,其包括高速缓存单元2204A到2204N和(一个或多个)共享高速缓存单元2206;系统代理单元2210;(一个或多个)总线控制器单元2216;(一个或多个)集成存储器控制器单元2214;一组或一个或多个协处理器2620,其可以包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元2630;直接存储器存取(DMA)单元2632;以及显示单元2640,其用于耦合到一个或多个外部显示器。在一个实施例中,(一个或多个)协处理器2620包括专用处理器,诸如,例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
本文所公开的机制的实施例可采用硬件、软件、固件或者这类实现方式的组合来实现。本发明的实施例可以实现为在可编程系统上执行的计算机程序或程序代码,所述可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置和至少一个输出装置。
诸如图24所示的代码2430之类的程序代码可应用于输入指令以执行本文所述的功能并且生成输出信息。输出信息可按照已知方式应用于一个或多个输出装置。出于本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或者微处理器之类的处理器的任何系统。
程序代码可采用高级过程或面向对象的编程语言来实现以与处理系统通信。根据需要,程序代码也可采用汇编或机器语言来实现。实际上,本文所述的机制在范围上不限于任何特定编程语言。在任何情况下,语言可以是经编译或经解释的语言。
至少一个实施例的一个或多个方面可以通过机器可读介质上存储的、表示处理器内的各种逻辑的表示(representative)指令来实现,所述表示指令在由机器读取时使机器制作执行本文所述技术的逻辑。称作“IP核”的这类表示可以存储在有形机器可读介质上,并且供应给各种客户或制造设施,以加载到实际制作逻辑或处理器的制造机器中。
这种机器可读存储介质可以非限制性地包括通过机器或装置所制造或形成的产品的非暂时有形布置,包括:诸如硬盘等存储介质;任何其他类型的磁盘,包括软盘、光盘、致密盘只读存储器(CD-ROM)、可重写致密盘(CD-RW)和磁光盘;半导体装置,诸如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SARAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM);磁卡或光卡;或者适合于存储电子指令的任何其他类型的介质。
相应地,本发明的实施例还包括非暂时性有形机器可读介质,其包含指令或者包含诸如硬件描述语言(HDL)之类的设计数据,其定义本文所述结构、电路、设备、处理器和/或系统特征。这类实施例又可称作程序产品。
模拟(包括二进制转化、代码变体(morphing)等)
在一些情况下,指令转换器可用于将指令从源指令集转换成目标指令集。例如,指令转换器可以将指令转化(例如,使用静态二进制转化、包括动态编译的动态二进制转化)、变形、模拟或者以其他方式转换成要由核来处理的一个或多个其他指令。指令转换器可采用软件、硬件、固件或其组合来实现。指令转换器可以在处理器上、处理器外或者部分处理器上和部分处理器外。
图27是根据本发明的一些实施例、与将软件指令转换器用于将源指令集中的二进制指令转换成目标指令集中的二进制指令形成对照的框图。在所示实施例中,指令转换器是软件指令转换器,但是备选地,指令转换器可采用软件、固件、硬件或者它们的各种组合来实现。图27示出高级语言2702中的程序可以使用x86编译器2704来编译,以生成x86二进制代码2706,其可以由具有至少一个x86指令集核的处理器2716原生执行。具有至少一个x86指令集核的处理器2716表示如下所述的任何处理器:该处理器能够通过兼容地执行或者以其他方式处理下列方面来执行与具有至少一个x86指令集核的Intel处理器基本上相同的功能:(1)Intel x86指令集核的指令集的实质部分;或者(2)目标是在具有至少一个x86指令集核的Intel处理器上运行的应用或其他软件的对象代码版本,以便取得与具有至少一个x86指令集核的Intel处理器基本上相同的结果。x86编译器2704表示可操作以生成x86二进制代码2706(例如,对象代码)的编译器,x86二进制代码2706能够在具有或没有附加链接处理的情况下在具有至少一个x86指令集核的处理器2716上执行。类似地,图27示出高级语言2702中的程序可以使用备选指令集编译器2708来编译,以生成备选指令集二进制代码2710,其可以由不具有至少一个x86指令集核的处理器2714(例如,具有下述核的处理器:所述核执行加利福尼亚州Sunnyvale的MIPS Technologies的MIPS指令集和/或执行加利福尼亚州Sunnyvale的ARM Holdings的ARM指令集)原生执行。指令转换器2712用于将x86二进制代码2706转换成可以由不具有x86指令集核的处理器2714原生执行的代码。这个转换代码不可能与备选指令集二进制代码2710相同的,因为能够进行这个操作的指令转换器难以制作;但是,转换后的代码将实现一般操作,并且由来自备选指令集的指令组成。因此,指令转换器2712表示软件、固件、硬件或者其组合,其通过模拟、仿真或者任何其他过程允许处理器或者没有x86指令集处理器或核的其他电子装置执行x86二进制代码2706。
另外的示例
示例1提供一种示例性系统,包括:多个核;至少一个多密钥总存储器加密电路(MK-TME)电路;至少一个p存储器控制器;以及信任域岛资源管理器(TDIRM),用于:初始化与TD岛相关联的信任域岛控制结构(TDICS),初始化与所述TD岛相关联的TD岛保护存储器(TDIPM),标识密钥所有权表(KOT)中的主机密钥标识符(HKID),将所述HKID指配给MK-TME电路中的密码密钥并且将所述HKID存储在所述TDICS中,将所述多个核中的第一核与所述TD岛相关联,将来自所述第一核的地址空间的存储器页添加到所述TDIPM,以及将执行控制转移到所述第一核以执行所述TD岛,并且其中所述TDIPM的范围被限制到所述TD岛的边界。
示例2包括示例1的示例性系统的实质,其中每个TD岛将被映射到所述多个套接口中的一个,并且其中所述系统中的HKID的数量等于所述系统中的套接口的数量乘以KOT条目的数量。
示例3包括示例1的示例性系统的实质,其中每个TD岛将被映射到所述多个套接口中的每个套接口中的所述多个存储器控制器中的一个,并且其中所述系统中的HKID的数量等于套接口的数量乘以每个套接口中的存储器控制器的数量再乘以所述KOT中的条目的数量。
示例4包括示例1的示例性系统的实质,其中每个TD岛将被映射到所述多个套接口中的每个套接口中的所述多个核中的一个,并且其中所述系统中的HKID的数量等于套接口的数量乘以每个套接口中的核的数量再乘以所述KOT中的条目的数量。
示例5包括示例1的示例性系统的实质,其中所述多个套接口中的每个套接口还包括管理程序,并且其中所述多个核中的每个核是虚拟机。
示例6包括示例1的示例性系统的实质,还包括存储设备,用于硬件配置数据结构标识所述系统中的所述套接口、所述多个MK-TME电路和所述存储器控制器,所述TDIRM在初始化所述TD岛时访问所述硬件配置。
示例7包括示例1的示例性系统的实质,其中所述多个MK-TME电路在执行加密和解密时将使用符合电子和电气工程师协会(IEEE)1619的密文窃取高级加密标准(XTS-AES)。
示例8提供一种由系统中的信任域岛(TDI)资源管理器(TDIRM)执行的示例性方法,所述系统包括多个套接口,每个套接口包括多个核和多个多密钥总存储器加密(MK-TME)电路,所述方法包括:初始化与第一TDI相关联的TDI控制结构(TDICS);初始化与所述第一TDI相关联的TDI保护存储器(TDIPM);标识密钥所有权表(KOT)中的主机密钥标识符(HKID);将所述HKID指配给密码密钥并且将所述HKID存储在所述TDICS中;以及将第一核与所述第一TDI相关联,将来自所述第一核的地址空间的存储器页添加到所述TDIPM,以及将执行控制转移到所述第一核以执行所述第一TDI,其中所述TDIPM的范围被限制于所述第一TDI的边界。
示例9包括示例8的示例性方法的实质,其中每个TD岛被映射到所述多个套接口中的一个,并且其中所述系统中的HKID的数量等于所述系统中的套接口的数量乘以KOT条目的数量。
示例10包括示例8的示例性方法的实质,其中每个TD岛被映射到所述多个套接口中的每个套接口中的所述多个存储器控制器中的一个,并且其中所述系统中的HKID的数量等于套接口的数量乘以每个套接口中的存储器控制器的数量再乘以所述KOT中的条目的数量。
示例11包括示例8的示例性方法的实质,其中每个TD岛被映射到所述多个套接口中的每个套接口中的所述多个核中的一个,并且其中所述系统中的HKID的数量等于套接口的数量乘以每个套接口中的核的数量再乘以所述KOT中的条目的数量。
示例12包括示例8的示例性方法的实质,其中所述多个套接口中的每个套接口还包括管理程序,并且其中所述多个核中的每个核是虚拟机。
示例13包括示例8的示例性方法的实质,还包括所述TDIRM在初始化所述TD岛时引用标识所述系统中的所述套接口、所述多个MK-TME电路和所述存储器控制器的硬件配置结构。
示例14包括示例8的示例性方法的实质,其中所述多个MK-TME电路使用符合电子和电气工程协会标准IEEE 1619的密文窃取高级加密标准(XTS-AES)。
示例15提供一种示例性设备,包括:至少一个多密钥总存储器加密电路(MK-TME)电路;以及信任域岛资源管理器(TDIRM),用于:初始化与TD岛相关联的信任域岛控制结构(TDICS),初始化与所述TD岛相关联的TD岛保护存储器(TDIPM),标识密钥所有权表(KOT)中的主机密钥标识符(HKID),将所述HKID指配给MK-TME电路中的密码密钥并且将所述HKID存储在所述TDICS中,将所述多个核中的第一核与所述TD岛相关联,将来自所述第一核的地址空间的存储器页添加到所述TDIPM,以及将执行控制转移到所述第一核以执行所述TD岛,并且其中所述TDIPM的范围被限制到所述TD岛的边界。
示例16包括示例15的示例性设备的实质,其中每个TD岛将被映射到多个套接口中的一个,并且其中所述系统中的HKID的数量等于所述设备中的套接口的数量乘以KOT条目的数量。
示例17包括示例15的示例性设备的实质,其中每个TD岛要被映射到至少一个存储器控制器,并且其中所述系统中的HKID的数量等于套接口的数量乘以每个套接口中的存储器控制器的数量再乘以所述KOT中的条目的数量。
示例18包括示例15的示例性设备的实质,其中每个TD岛将被映射到多个套接口中的每个套接口中的至少一个核,并且其中所述系统中的HKID的数量等于套接口的数量乘以每个套接口中的核的数量再乘以所述KOT中的条目的数量。
示例19包括示例15的示例性设备的实质,还包括存储设备,用于硬件配置数据结构标识套接口、所述至少一个MK-TME电路和存储器控制器,所述TDIRM在初始化所述TD岛时访问所述硬件配置。
示例20包括示例15的示例性设备的实质,其中所述至少一个MK-TME电路在执行加密和解密时将使用符合电子和电气工程师协会(IEEE)1619的密文窃取高级加密标准(XTS-AES)。

Claims (20)

1.一种系统,包括:
多个核;
至少一个多密钥总存储器加密电路(MK-TME)电路;
至少一个p存储器控制器;以及
信任域岛资源管理器(TDIRM),用于:
初始化与TD岛相关联的信任域岛控制结构(TDICS),
初始化与所述TD岛相关联的TD岛保护存储器(TDIPM),
标识密钥所有权表(KOT)中的主机密钥标识符(HKID),
将所述HKID指配给MK-TME电路中的密码密钥并且将所述HKID存储在所述TDICS中,
将所述多个核中的第一核与所述TD岛相关联,
将来自所述第一核的地址空间的存储器页添加到所述TDIPM,以及
将执行控制转移到所述第一核以执行所述TD岛,并且其中,所述TDIPM的范围被限制到所述TD岛的边界。
2.根据权利要求1所述的系统,其中,每个TD岛将被映射到所述多个套接口中的一个,并且其中,所述系统中的HKID的数量等于所述系统中的套接口的数量乘以KOT条目的数量。
3.根据权利要求1所述的系统,其中,每个TD岛将被映射到所述多个套接口中的每个套接口中的所述多个存储器控制器中的一个,并且其中,所述系统中的HKID的数量等于套接口的数量乘以每个套接口中的存储器控制器的数量再乘以所述KOT中的条目的数量。
4.根据权利要求1所述的系统,其中,每个TD岛将被映射到所述多个套接口中的每个套接口中的所述多个核中的一个,并且其中,所述系统中的HKID的数量等于套接口的数量乘以每个套接口中的核的数量再乘以所述KOT中的条目的数量。
5.根据权利要求1-4中的任一项所述的系统,其中,所述多个套接口中的每个套接口还包括管理程序,并且其中,所述多个核中的每个核是虚拟机。
6.根据权利要求1-4中的任一项所述的系统,还包括存储设备,用于硬件配置数据结构标识所述系统中的所述套接口、所述多个MK-TME电路和所述存储器控制器,所述TDIRM在初始化所述TD岛时访问所述硬件配置。
7.根据权利要求1-4中的任一项所述的系统,其中,所述多个MK-TME电路在执行加密和解密时将使用符合电子和电气工程师协会(IEEE)1619的密文窃取高级加密标准(XTS-AES)。
8.一种由系统中的信任域岛(TDI)资源管理器(TDIRM)执行的方法,所述系统包括多个套接口,每个套接口包括多个核和多个多密钥总存储器加密(MK-TME)电路,所述方法包括:
初始化与第一TDI相关联的TDI控制结构(TDICS);
初始化与所述第一TDI相关联的TDI保护存储器(TDIPM);
标识密钥所有权表(KOT)中的主机密钥标识符(HKID);
将所述HKID指配给密码密钥并且将所述HKID存储在所述TDICS中;以及
将第一核与所述第一TDI相关联,将来自所述第一核的地址空间的存储器页添加到所述TDIPM,以及将执行控制转移到所述第一核以执行所述第一TDI,其中,所述TDIPM的范围被限制于所述第一TDI的边界。
9.根据权利要求8所述的方法,其中,每个TD岛被映射到所述多个套接口中的一个,并且其中,所述系统中的HKID的数量等于所述系统中的套接口的数量乘以KOT条目的数量。
10.根据权利要求8所述的方法,其中,每个TD岛被映射到所述多个套接口中的每个套接口中的所述多个存储器控制器中的一个,并且其中,所述系统中的HKID的数量等于套接口的数量乘以每个套接口中的存储器控制器的数量再乘以所述KOT中的条目的数量。
11.根据权利要求8所述的方法,其中,每个TD岛被映射到所述多个套接口中的每个套接口中的所述多个核中的一个,并且其中,所述系统中的HKID的数量等于套接口的数量乘以每个套接口中的核的数量再乘以所述KOT中的条目的数量。
12.根据权利要求8-11中的任一项所述的方法,其中,所述多个套接口中的每个套接口还包括管理程序,并且其中,所述多个核中的每个核是虚拟机。
13.根据权利要求8-12中的任一项所述的方法,还包括所述TDIRM在初始化所述TD岛时参考标识所述系统中的所述套接口、所述多个MK-TME电路和所述存储器控制器的硬件配置结构。
14.根据权利要求8-13中的任一项所述的方法,其中,所述多个MK-TME电路使用符合电子和电气工程协会标准IEEE 1619的密文窃取高级加密标准(XTS-AES)。
15.一种设备,包括:
至少一个多密钥总存储器加密电路(MK-TME)电路;以及
信任域岛资源管理器(TDIRM),用于:
初始化与TD岛相关联的信任域岛控制结构(TDICS),
初始化与所述TD岛相关联的TD岛保护存储器(TDIPM),
标识密钥所有权表(KOT)中的主机密钥标识符(HKID),
将所述HKID指配给MK-TME电路中的密码密钥并且将所述HKID存储在所述TDICS中,
将所述多个核中的第一核与所述TD岛相关联,
将来自所述第一核的地址空间的存储器页添加到所述TDIPM,以及
将执行控制转移到所述第一核以执行所述TD岛,并且其中,所述TDIPM的范围被限制到所述TD岛的边界。
16.根据权利要求15所述的设备,其中,每个TD岛将被映射到多个套接口中的一个,并且其中,所述系统中的HKID的数量等于所述设备中的套接口的数量乘以KOT条目的数量。
17.根据权利要求15所述的设备,其中,每个TD岛要被映射到至少一个存储器控制器,并且其中,所述系统中的HKID的数量等于套接口的数量乘以每个套接口中的存储器控制器的数量再乘以所述KOT中的条目的数量。
18.根据权利要求15所述的设备,其中,每个TD岛将被映射到多个套接口中的每个套接口中的至少一个核,并且其中,所述系统中的HKID的数量等于套接口的数量乘以每个套接口中的核的数量再乘以所述KOT中的条目的数量。
19.根据权利要求15-18中的任一项所述的设备,还包括存储设备,用于硬件配置数据结构标识套接口、所述至少一个MK-TME电路和存储器控制器,所述TDIRM在初始化所述TD岛时访问所述硬件配置。
20.根据权利要求15-19中的任一项所述的设备,其中,所述至少一个MK-TME电路在执行加密和解密时使用符合电子和电气工程师协会(IEEE)1619的密文窃取高级加密标准(XTS-AES)。
CN202011024801.3A 2019-12-26 2020-09-25 具有能够实现tdx keyid缩放的自包含范围的tdx岛 Pending CN113051192A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/727608 2019-12-26
US16/727,608 US11436342B2 (en) 2019-12-26 2019-12-26 TDX islands with self-contained scope enabling TDX KeyID scaling

Publications (1)

Publication Number Publication Date
CN113051192A true CN113051192A (zh) 2021-06-29

Family

ID=76310532

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011024801.3A Pending CN113051192A (zh) 2019-12-26 2020-09-25 具有能够实现tdx keyid缩放的自包含范围的tdx岛

Country Status (3)

Country Link
US (1) US11436342B2 (zh)
CN (1) CN113051192A (zh)
DE (1) DE102020128050A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10803087B2 (en) * 2018-10-19 2020-10-13 Oracle International Corporation Language interoperable runtime adaptable data collections
US11595192B2 (en) * 2020-04-24 2023-02-28 Dell Products L.P. System and method of migrating one or more storage class memories from a first information handling system to a second information handling system
US11327908B2 (en) * 2020-07-14 2022-05-10 Nxp Usa, Inc. Method and system for facilitating communication between interconnect and system memory on system-on-chip

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6959384B1 (en) 1999-12-14 2005-10-25 Intertrust Technologies Corporation Systems and methods for authenticating and protecting the integrity of data streams and other data
US6950517B2 (en) 2002-07-24 2005-09-27 Qualcomm, Inc. Efficient encryption and authentication for data processing systems
US7305084B2 (en) 2002-07-24 2007-12-04 Qualcomm Incorporated Fast encryption and authentication for data processing systems
US7836387B1 (en) * 2005-04-29 2010-11-16 Oracle America, Inc. System and method for protecting data across protection domain boundaries
US20080044012A1 (en) 2006-08-15 2008-02-21 Nokia Corporation Reducing Security Protocol Overhead In Low Data Rate Applications Over A Wireless Link
GB2443244A (en) 2006-10-05 2008-04-30 Hewlett Packard Development Co Authenticated Encryption Method and Apparatus
RU2528078C2 (ru) 2008-09-19 2014-09-10 Конинклейке Филипс Электроникс Н.В. Способ защищенной связи в сети, устройство связи, сеть и компьютерная программа для этого
KR101723001B1 (ko) 2009-06-26 2017-04-04 트러스티드 로직 데이터 검증 방법
US8639945B2 (en) 2010-05-25 2014-01-28 Via Technologies, Inc. Branch and switch key instruction in a microprocessor that fetches and decrypts encrypted instructions
US20110314303A1 (en) 2010-06-21 2011-12-22 Shevchenko Oleksiy Yu Computing device configured for operating with instructions in unique code
US20120047580A1 (en) 2010-08-18 2012-02-23 Smith Ned M Method and apparatus for enforcing a mandatory security policy on an operating system (os) independent anti-virus (av) scanner
JP6402034B2 (ja) 2011-09-13 2018-10-10 フェイスブック,インク. コンピュータ内の情報を安全に保つシステム及び方法
FR2980285B1 (fr) 2011-09-15 2013-11-15 Maxim Integrated Products Systemes et procedes de gestion de cles cryptographiques dans un microcontroleur securise
JP5573829B2 (ja) 2011-12-20 2014-08-20 富士通株式会社 情報処理装置およびメモリアクセス方法
US9213653B2 (en) 2013-12-05 2015-12-15 Intel Corporation Memory integrity
US9882720B1 (en) 2014-06-27 2018-01-30 Amazon Technologies, Inc. Data loss prevention with key usage limit enforcement
JP6484519B2 (ja) 2015-07-15 2019-03-13 日立オートモティブシステムズ株式会社 ゲートウェイ装置およびその制御方法
US10521618B1 (en) 2015-10-20 2019-12-31 Marvell International Ltd. Methods and apparatus for secure root key provisioning
US10102151B2 (en) 2015-11-06 2018-10-16 International Business Machines Corporation Protecting a memory from unauthorized access
US10382410B2 (en) 2016-01-12 2019-08-13 Advanced Micro Devices, Inc. Memory operation encryption
US11989332B2 (en) * 2016-08-11 2024-05-21 Intel Corporation Secure public cloud with protected guest-verified host control
US10255202B2 (en) 2016-09-30 2019-04-09 Intel Corporation Multi-tenant encryption for storage class memory
US20180165224A1 (en) 2016-12-12 2018-06-14 Ati Technologies Ulc Secure encrypted virtualization
GB2563879B (en) 2017-06-28 2019-07-17 Advanced Risc Mach Ltd Realm identifier comparison for translation cache lookup
US10949546B2 (en) 2017-08-02 2021-03-16 Samsung Electronics Co., Ltd. Security devices, electronic devices and methods of operating electronic devices
US10733313B2 (en) 2018-02-09 2020-08-04 Arm Limited Counter integrity tree for memory security
US10657071B2 (en) 2017-09-25 2020-05-19 Intel Corporation System, apparatus and method for page granular, software controlled multiple key memory encryption
FR3076151B1 (fr) 2017-12-22 2020-11-06 Oberthur Technologies Procede de determination d’une somme d’integrite, programme d’ordinateur et entite electronique associes
US11520913B2 (en) 2018-05-11 2022-12-06 International Business Machines Corporation Secure execution support for A.I. systems (and other heterogeneous systems)
US11121856B2 (en) 2018-06-15 2021-09-14 Intel Corporation Unified AES-SMS4—Camellia symmetric key block cipher acceleration
US10846437B2 (en) 2018-06-28 2020-11-24 Intel Corporation Compressed integrity check counters in memory
US11075753B2 (en) 2018-07-11 2021-07-27 Akeyless Security LTD. System and method for cryptographic key fragments management
US10725849B2 (en) * 2018-07-27 2020-07-28 Intel Corporation Server RAS leveraging multi-key encryption
US11520611B2 (en) 2018-08-20 2022-12-06 Intel Corporation Secure public cloud using extended paging and memory integrity
US11144631B2 (en) 2018-09-11 2021-10-12 Apple Inc. Dynamic switching between pointer authentication regimes
US11017092B2 (en) * 2018-09-27 2021-05-25 Intel Corporation Technologies for fast launch of trusted containers
US10761996B2 (en) * 2018-09-28 2020-09-01 Intel Corporation Apparatus and method for secure memory access using trust domains
US11829517B2 (en) * 2018-12-20 2023-11-28 Intel Corporation Method and apparatus for trust domain creation and destruction
US20200201787A1 (en) 2018-12-20 2020-06-25 Intel Corporation Scalable multi-key total memory encryption engine
US11138320B2 (en) * 2018-12-20 2021-10-05 Intel Corporation Secure encryption key management in trust domains
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
US11669335B2 (en) * 2019-03-28 2023-06-06 Intel Corporation Secure arbitration mode to build and operate within trust domain extensions
US11030120B2 (en) * 2019-06-27 2021-06-08 Intel Corporation Host-convertible secure enclaves in memory that leverage multi-key total memory encryption with integrity
US11343090B2 (en) 2019-06-27 2022-05-24 Intel Corporation Device ID for memory protection
US11593529B2 (en) * 2019-07-29 2023-02-28 Intel Corporation Device interface security management for computer buses
US11575672B2 (en) * 2019-12-20 2023-02-07 Intel Corporation Secure accelerator device pairing for trusted accelerator-to-accelerator communication

Also Published As

Publication number Publication date
US11436342B2 (en) 2022-09-06
DE102020128050A1 (de) 2021-07-01
US20210200879A1 (en) 2021-07-01

Similar Documents

Publication Publication Date Title
EP3958160B1 (en) Encoded inline capabilities
EP3671515B1 (en) Method and apparatus for trust domain creation and destruction
BR102020019667A2 (pt) método e aparelho para criptografia de memória total multichave baseada em derivação de chave dinâmica
US11917067B2 (en) Apparatuses, methods, and systems for instructions for usage restrictions cryptographically tied with data
US20220209933A1 (en) Integrity protected access control mechanisms
CN113051192A (zh) 具有能够实现tdx keyid缩放的自包含范围的tdx岛
US20220197995A1 (en) Device, system and method to efficiently update a secure arbitration mode module
EP4109312A1 (en) Circuitry and methods for supporting encrypted remote direct memory access (erdma) for live migration of a virtual machine
CN114691289A (zh) 用于保存和恢复密钥信息的指令支持
EP4202698A1 (en) Circuitry and methods for implementing input/output extensions for trust domains
NL2031072B1 (en) Apparatus and method to implement shared virtual memory in a trusted zone
US11700135B2 (en) ISA accessible physical unclonable function
US11706039B2 (en) ISA accessible physical unclonable function
CN114692231A (zh) 用于针对硬件重放攻击和存储器访问模式泄漏的提高的恢复力的存储器地址总线保护
TW202226780A (zh) 創建、使用、及管理受保護的密碼金鑰
US11570010B2 (en) ISA accessible physical unclonable function
US20220209967A1 (en) Isa accessible physical unclonable function
US20230102178A1 (en) Isa accessible physical unclonable function
WO2024000565A1 (en) Methods and apparatuses to debug confidential virtual machine for processor in production mode
TW202326427A (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