CN117063162A - 用于在可信区中实现共享虚拟存储器的装置和方法 - Google Patents

用于在可信区中实现共享虚拟存储器的装置和方法 Download PDF

Info

Publication number
CN117063162A
CN117063162A CN202180096350.0A CN202180096350A CN117063162A CN 117063162 A CN117063162 A CN 117063162A CN 202180096350 A CN202180096350 A CN 202180096350A CN 117063162 A CN117063162 A CN 117063162A
Authority
CN
China
Prior art keywords
memory
address
iommu
trust domain
guest
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
CN202180096350.0A
Other languages
English (en)
Inventor
郭凯杰
王俊元
M·卢科什科夫
李微刚
曾欣
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 CN117063162A publication Critical patent/CN117063162A/zh
Pending legal-status Critical Current

Links

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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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
    • 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/54Monitoring 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 adding security routines or objects to programs
    • 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
    • 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • 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/45591Monitoring or debugging support

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Abstract

在信任区中实现共享虚拟存储器的装置和方法。例如,处理器的一个实施例包括:多个核心;存储器控制器,耦合到多个核心,用于使用与第一宾客机的第一信任域相关联的第一密钥在系统存储器中建立第一私有存储器区域;输入/输出存储器管理单元(IOMMU),耦合到存储器控制器,IOMMU用于接收由输入/输出(IO)设备发出的包括第一地址空间标识符和宾客机虚拟地址(GVA)的存储器访问请求,IOMMU用于使用至少第一地址空间标识符来访问第一转译表中的条目以确定存储器访问请求针对IOMMU不能直接访问的第一私有存储器区域,IOMMU用于生成与存储器访问请求相关联的地址转译请求,其中基于地址转译请求,在多个核心中的一个或多个核心上运行的虚拟机监视器(VMM)要通过利用信任域管理器引起到第一信任域中的安全进入来发起安全事务序列,以基于地址空间标识符将GVA转译为物理地址,IOMMU从VMM接收物理地址并且代表IO设备来使用该物理地址执行所请求的存储器访问。

Description

用于在可信区中实现共享虚拟存储器的装置和方法
背景
技术领域
本发明的实施例总体上涉及计算机处理器领域。更具体地,实施例涉及用于在可信区中实现共享虚拟存储器(shared virtual memory,SVM)的装置和方法。
背景技术
x86平台上的信任域扩展(Trust Domain Extension,TDX)提供了新的体系结构要素以用于部署被称为信任域(trust domain,TD)的隔离的VM。在TD内,存储器被编组为两个类别:私有存储器和共享存储器。TDX与多密钥全存储器加密(multi-key total memoryencryption,MKTME)引擎一起工作,以使用不同的密钥对私有存储器和共享存储器两者都应用存储器加密。
对于TD私有存储器,MKTME被提供有与用于存储器加密的TD私钥相关联的私钥ID,以确保所有私有存储器仅能从TD内部访问。针对私有存储器的地址转译必须既经过TD页表(处于TD私有存储器中)又经过安全扩展页表(secure extended page table,SEPT)。TD共享存储器被TD用来与外部实体交换数据(例如,用于与PCI设备进行DMA),并且可由实体跨包括PCIe设备的平台访问。
然而,当前IOMMU的共享虚拟存储器(SVM)特征无法在TD内被使用。这是因为,对于SVM功能,IOMMU需要访问TD内的页表以用于宾客机虚拟地址(Guest Virtual Address,GVA)到宾客机物理地址(Guest Physical Address,GPA)转译。然而,这些页表属于不能由IOMMU访问的TD内的私有存储器。因此,即使用于直接存储器访问(direct memory access,DMA)的存储器使用共享存储器,IOMMU也因为其不具有访问TD中的第一级页表的特权而无法执行GVA到GPA转译。
附图说明
结合以下附图,可以从以下具体实施方式获得对本发明更好的理解,在这些附图中:
图1图示示例计算机系统体系结构;
图2图示包括多个核心的处理器;
图3A图示处理管线的多个阶段;
图3B图示核心的一个实施例的细节;
图4图示根据一个实施例的执行电路;
图5图示寄存器体系结构的一个实施例;
图6图示指令格式的一个示例;
图7图示根据一个实施例的寻址技术;
图8图示指令前缀的一个实施例;
图9A-图9D图示如何使用前缀的R、X和B字段的实施例;
图10A-图10B图示第二指令前缀的示例;
图11图示指令前缀的一个实施例的有效载荷字节;
图12图示指令转换和二进制转译实现方式;
图13图示运行信任域的处理器和计算体系结构的一个实施例;
图14图示包括信任域的共享存储器区域和私有存储器区域的一个实施例;
图15图示无法访问私有存储器区域的输入/输出存储器管理单元(input/outputmemory management unit,IOMMU);
图16图示安全地提供由IOMMU对信任域私有存储器的访问的一个实施例;
图17图示具有包括信任域模式的条目的PASID上下文表的一个实施例;以及
图18图示根据本发明的一个实施例的事务图。
具体实施方式
在以下描述中,出于解释的目的,阐述了众多特定细节以提供对下文所描述的本发明的实施例的透彻理解。然而,对本领域技术人员将显而易见的是,可在没有这些特定细节中的一些特定细节的情况下实施本发明的实施例。在其他实例中,以框图形式示出公知的结构和设备,以避免使本发明的实施例的根本性原理变得模糊。
示例性计算机体系结构
下面详细描述示例性计算机体系结构。本领域中已知的用于膝上型电脑、桌面型电脑、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(digital signal processor,DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备、以及大量各种其他电子设备的其他系统设计和配置也是适当的。总之,能够包含本文公开的处理器和/或其他执行逻辑的各种系统或电子设备一般都是适当的。
图1图示了示例性系统的实施例。多处理器系统100是一种点到点互连系统,并包括多个处理器,其中包括经由点到点互连150耦合的第一处理器170和第二处理器180。在一些实施例中,第一处理器170和第二处理器180是同构的。在一些实施例中,第一处理器170和第二处理器180是异构的。
处理器170和180被示为分别包括集成存储器控制器(integrated memorycontroller,IMC)单元电路172和182。处理器170还包括作为其互连控制器单元的部分的点到点(point-to-point,P-P)接口176和178;类似地,第二处理器180包括P-P接口186和188。处理器170、180可以利用点到点(P-P)接口电路178、188经由P-P互连150交换信息。IMC 172和182将处理器170、180耦合到各自的存储器,即存储器132和存储器134,这些存储器可以是在本地附接到各个处理器的主存储器的一部分。
处理器170、180可以各自利用点到点接口电路176、194、186、198,经由各个P-P互连152、154来与芯片组190交换信息。芯片组190可以可选地经由高性能接口192与协处理器138交换信息。在一些实施例中,协处理器138是专用处理器,例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享缓存(未示出)可以被包括在任一处理器170、180中,或者在两个处理器之外但经由P-P互连与这些处理器相连接,从而使得:如果一处理器被置于低功率模式,任一个或两个处理器的本地缓存信息也可以被存储在该共享缓存中。
芯片组190可以经由接口196耦合到第一互连116。在一些实施例中,第一互连116可以是外围组件互连(Peripheral Component Interconnect,PCI)互连,或者是诸如PCI快速(PCI Express)互连或者另一I/O互连之类的互连。在一些实施例中,这些互连中的一个耦合到功率控制单元(power control unit,PCU)117,PCU 117可以包括电路、软件和/或固件来执行关于处理器170、180和/或协处理器138的功率管理操作。PCU 117向电压调节器提供控制信息,以使得电压调节器生成适当的调节电压。PCU 117还提供控制信息以控制所生成的操作电压。在各实施例中,PCU 117可以包括各种功率管理逻辑单元(电路)来执行基于硬件的功率管理。这种功率管理可以是完全由处理器控制的(例如,由各种处理器硬件控制,并且可以由工作负载和/或功率约束、热约束或其他处理器约束所触发),和/或功率管理可以响应于外部源而被执行(例如平台或功率管理源或系统软件)。
PCU 117被图示为作为与处理器170和/或处理器180分开的逻辑而存在。在其他情况下,PCU 117可以在处理器170或180的核心(未示出)中给定的一个或多个核心上执行。在一些情况下,PCU 117可以被实现为微控制器(专用的或通用的)或者其他控制逻辑,其被配置为执行其自己的专用功率管理代码(有时称为P代码)。在另外的其他实施例中,PCU 1117要执行的功率管理操作可以被实现在处理器外部,例如借由单独的功率管理集成电路(power management integrated circuit,PMIC)或者在处理器外部的另一组件来实现。在另外的其他实施例中,PCU 117要执行的功率管理操作可被实现在BIOS或其他系统软件内。
各种I/O设备114连同互连(总线)桥118可以耦合到第一互连116,互连(总线)桥118将第一互连116耦合到第二互连120。在一些实施例中,一个或多个附加的处理器115被耦合到第一互连116,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如图形加速器或数字信号处理(digital signal processing,DSP)单元)、现场可编程门阵列(fieldprogrammable gate array,FPGA)、或者任何其他处理器。在一些实施例中,第二互连120可以是低引脚数(low pin count,LPC)互连。各种设备可以耦合到第二互连120,这些设备例如包括键盘和/或鼠标122、通信设备127、以及存储单元电路128。存储单元电路128可以是盘驱动器或者其他大容量存储设备,其在一些实施例中可包括指令/代码和数据130。进一步地,音频I/O 124可以耦合到第二互连120。注意,除了上述的点到点体系结构以外其他体系结构也是可能的。例如,诸如多处理器系统100之类的系统可以实现多点分支(multi-drop)互连或者其他这种体系结构,而不是点到点体系结构。
示例性核心体系结构、处理器和计算机体系结构
处理器核心可以按不同的方式、为了不同的目的、在不同的处理器中实现。例如,这些核心的实现方式可以包括:1)通用有序核心,针对通用计算目的;2)高性能通用乱序核心,针对通用计算目的;3)专用核心,主要针对图形和/或科学(吞吐量)计算目的。不同处理器的实现方式可以包括:1)CPU,包括针对通用计算目的的一个或多个通用有序核心和/或针对通用计算目的的一个或多个通用乱序核心;以及2)协处理器,包括主要针对图形和/或科学(吞吐量)目的的一个或多个专用核心。这些不同处理器导致不同的计算机系统体系结构,这些体系结构可以包括:1)协处理器与CPU在分开的芯片上;2)协处理器与CPU在同一封装中分开的管芯上;3)协处理器与CPU在同一管芯上(在此情况下,这种协处理器有时被称为专用逻辑,例如集成图形和/或科学(吞吐量)逻辑,或者被称为专用核心);以及4)片上系统,其可以在与所描述的CPU(有时称为(一个或多个)应用核心或者(一个或多个)应用处理器)同一管芯上包括上述的协处理器以及附加的功能。接下来描述示例性核心体系结构,然后是对示例性处理器和计算机体系结构的描述。
图2图示了示例处理器200的实施例的框图,该处理器200可以具有多于一个的核心,可以具有集成存储器控制器,并且可以具有集成图形器件。实线框图示的处理器200具有单个核心202(A)、系统代理210和一组一个或多个互连控制器单元电路216,而可选地添加的虚线框将替代性处理器200图示为具有多个核心202(A)-(N)、系统代理单元电路210中的一组一个或多个集成存储器控制单元电路214、专用逻辑208以及一组一个或多个互连控制器单元电路216。注意,处理器200可以是图1的处理器170或180或者协处理器138或115之一。
从而,处理器200的不同实现方式可以包括:1)CPU,其中专用逻辑208是集成图形和/或科学(吞吐量)逻辑(可以包括一个或多个核心,未示出),核心202(A)-(N)是一个或多个通用核心(例如,通用有序核心、通用乱序核心、或这两者的组合);2)协处理器,其中核心202(A)-(N)是主要针对图形和/或科学(吞吐量)目的的大量专用核心;以及3)协处理器,其中核心202(A)-(N)是大量的通用有序核心。从而,处理器200可以是通用处理器、协处理器或者专用处理器,例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元电路)、高吞吐量集成众核(many integrated core,MIC)协处理器(包括30个或更多个核心)、嵌入式处理器,等等。该处理器可被实现在一个或多个芯片上。处理器200可以是一个或多个衬底的一部分和/或可以使用多种工艺技术中的任何技术来实现在一个或多个衬底上,这些工艺技术例如BiCMOS、CMOS、或者NMOS。
存储器层次体系包括核心202(A)-(N)内的一级或多级缓存单元电路204(A)-(N)、一组一个或多个共享缓存单元电路206、以及耦合到该组集成存储器控制器单元电路214的外部存储器(未示出)。该组一个或多个共享缓存单元电路206可以包括一个或多个中间级别缓存,例如第2级(L2)、第3级(L3)、第4级(4)或者其他级别的缓存,例如最后一级缓存(last level cache,LLC),和/或这些的组合。虽然在一些实施例中基于环的互连网络电路212对专用逻辑208(例如,集成图形逻辑)、该组共享缓存单元电路206和系统代理单元电路210进行互连,但替代性实施例使用任何数目的公知技术来对这些单元进行互连。在一些实施例中,在共享缓存单元电路206中的一个或多个电路与核心202(A)-(N)之间维持一致性。
在一些实施例中,核心202(A)-(N)中的一个或多个具有多线程能力。系统代理单元电路210包括对核心202(A)-(N)进行协调和操作的那些组件。系统代理单元电路210可以包括例如功率控制单元(power control unit,PCU)电路和/或显示单元电路(未示出)。PCU可以是(或者可以包括)对核心202(A)-(N)和/或专用逻辑208(例如,集成图形逻辑)的功率状态进行调节所需的逻辑和组件。显示单元电路用于驱动一个或多个在外部连接的显示器。
核心202(A)-(N)就体系结构指令集而言可以是同构的或者异构的;也就是说,核心202(A)-(N)中的两个或更多个核心可能能够执行同一指令集,而其他核心可能能够只执行该指令集的子集或者能够执行一不同的ISA。
示例性核心体系结构
有序和乱序核心框图
图3A的框图图示了根据本发明的实施例的示例性有序管线和示例性寄存器重命名、乱序发出/执行管线两者。图3B的框图图示了根据本发明的实施例,要被包括在处理器中的有序体系结构核心的示例性实施例和示例性寄存器重命名、乱序发出/执行体系结构核心两者。图3(A)-(B)中的实线框图示了有序管线和有序核心,而可选地添加的虚线框图示了寄存器重命名、乱序发出/执行管线和核心。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图3A中,处理器管线300包括取得阶段302、可选的长度解码阶段304、解码阶段306、可选的分配阶段308、可选的重命名阶段310、调度(也称为调遣或发出)阶段312、可选的寄存器读取/存储器读取阶段314、执行阶段316、写回/存储器写入阶段318、可选的异常处置阶段322、以及可选的提交阶段324。在这些处理器管线阶段的每一者中可以执行一个或多个操作。例如,在取得阶段302期间,从指令存储器取得一个或多个指令,在解码阶段306期间,可以对取得的一个或多个指令进行解码,可以生成使用转发寄存器端口的地址(例如,加载存储单元(load store unit,LSU)地址),并且可以执行分支转发(例如,立即数偏移或者链接寄存器(link register,LR))。在一种实施例中,解码阶段306和寄存器读取/存储器读取阶段314可以被组合到一个管线阶段中。在一种实施例中,在执行阶段316期间,可以执行经解码的指令,可以执行到高级微控制器总线(Advanced Microcontroller Bus,AMB)接口的LSU地址/数据管线化,可以执行乘法和加法操作,可以执行具有分支结果的算术操作,等等。
作为示例,示例性寄存器重命名、乱序发出/执行核心体系结构可以通过以下方式实现管线300:1)指令取得338执行取得和长度解码阶段302和304;2)解码单元电路340执行解码阶段306;3)重命名/分配器单元电路352执行分配阶段308和重命名阶段310;4)(一个或多个)调度器单元电路356执行调度阶段312;5)(一个或多个)物理寄存器堆单元电路358和存储器单元电路370执行寄存器读取/存储器读取阶段314;执行集群360执行执行阶段316;6)存储器单元电路370和(一个或多个)物理寄存器堆单元电路358执行写回/存储器写入阶段318;7)在异常处置阶段322中可能涉及各种单元(单元电路);并且8)引退单元电路354和(一个或多个)物理寄存器堆单元电路358执行提交阶段324。
图3B示出了处理器核心390包括耦合到执行引擎单元电路350的前端单元电路330,并且两者都耦合到存储器单元电路370。核心390可以是精简指令集计算(reducedinstruction set computing,RISC)核心、复杂指令集计算(complex instruction setcomputing,CISC)核心、超长指令字(very long instruction word,VLIW)核心、或者混合或替代性核心类型。作为另外一个选项,核心390可以是专用核心,例如网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(general purpose computing graphicsprocessing unit,GPGPU)核心、图形核心,等等。
前端单元电路330可以包括分支预测单元电路332,该分支预测单元电路耦合到指令缓存单元电路334,该指令缓存单元电路耦合到指令转译后备缓冲器(translationlookaside buffer,TLB)336,该指令TLB耦合到指令取得单元电路338,该指令取得单元电路耦合到解码单元电路340。在一种实施例中,指令缓存单元电路334被包括在存储器单元电路370中,而不是前端单元电路330中。解码单元电路340(或解码器)可以对指令解码,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出,这些微操作、微代码入口点、微指令、其他指令或其他控制信号是从原始指令解码来的,或者以其他方式反映原始指令,或者是从原始指令得出的。解码单元电路340可以进一步包括地址生成单元电路(address generation unit,AGU,未示出)。在一种实施例中,AGU使用经转发的寄存器端口来生成LSU地址,并且可以进一步执行分支转发(例如,立即数偏移分支转发,LR寄存器分支转发,等等)。可以使用各种不同的机制来实现解码单元电路340。适当机制的示例包括但不限于查找表、硬件实现方式、可编程逻辑阵列(programmable logicarray,PLA)、微代码只读存储器(read only memory,ROM),等等。在一种实施例中,核心390包括微代码ROM(未示出)或其他介质,其存储用于某些宏指令的微代码(例如,在解码单元电路340中或者以其他方式在前端单元电路330内)。在一种实施例中,解码单元电路340包括微操作(micro-op)或操作缓存(未示出),以保存/缓存在处理器管线300的解码或其他阶段期间生成的经解码的操作、微标记或微操作。解码单元电路340可以耦合到执行引擎单元电路350中的重命名/分配器单元电路352。
执行引擎电路350包括重命名/分配器单元电路352,其耦合到引退单元电路354和一组一个或多个调度器电路356。调度器电路356表示任意数目个不同调度器,包括预留站、中央指令窗口,等等。在一些实施例中,(一个或多个)调度器电路356可以包括算术逻辑单元(arithmetic logic unit,ALU)调度器/调度电路、ALU队列、地址生成单元(addressgeneration unit,AGU)调度器/调度电路、AGU队列,等等。(一个或多个)调度器电路356耦合到(一个或多个)物理寄存器堆电路358。(一个或多个)物理寄存器堆电路358的每一者代表一个或多个物理寄存器堆,这些物理寄存器堆中的不同物理寄存器堆存储一个或多个不同的数据类型,例如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,指令指针,即要执行的下一指令的地址),等等。在一种实施例中,(一个或多个)物理寄存器堆单元电路358包括向量寄存器单元电路、写入掩码寄存器单元电路、以及标量寄存器单元电路。这些寄存器单元可以提供体系结构式向量寄存器、向量掩码寄存器、通用寄存器,等等。(一个或多个)物理寄存器单元堆电路358被引退单元电路354(也称为引退队列)重叠,以图示出可以用来实现寄存器重命名和乱序执行的各种方式(例如,利用(一个或多个)重排序缓冲器(reorder buffer,ROB)和(一个或多个)引退寄存器堆;利用(一个或多个)未来的堆、(一个或多个)历史缓冲器、以及(一个或多个)引退寄存器堆;利用寄存器图谱和寄存器的池;等等)。引退单元电路354和(一个或多个)物理寄存器堆电路358耦合到(一个或多个)执行集群360。(一个或多个)执行集群360包括一组一个或多个执行单元电路362和一组一个或多个存储器访问电路364。执行单元电路362可以对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行各种算术、逻辑、浮点或其他类型的操作(例如,移位、加法、减法、乘法)。虽然一些实施例可以包括专用于特定功能或功能集合的若干个执行单元或执行单元电路,但其他实施例可以只包括一个执行单元电路或者全部执行所有功能的多个执行单元/执行单元电路。(一个或多个)调度器电路356、(一个或多个)物理寄存器堆单元电路358以及(一个或多个)执行集群360被示为可能是多个,因为某些实施例为某些类型的数据/操作创建单独的管线(例如,标量整数管线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点管线和/或存储器访问管线,它们各自具有其自己的调度器电路、(一个或多个)物理寄存器堆单元电路和/或执行集群——并且在单独的存储器访问管线的情况下,所实现的某些实施例中只有该管线的执行集群具有(一个或多个)存储器访问单元电路364)。还应当理解,在使用分开的管线的情况下,这些管线中的一个或多个可以是乱序发出/执行,而其余是有序的。
在一些实施例中,执行引擎单元电路350可以执行到高级微控制器总线(AMB)接口(未示出)的加载存储单元(LSU)地址/数据管线化,以及地址阶段和写回、数据阶段加载、存储、以及分支。
一组存储器访问电路364耦合到存储器单元电路370,该存储器单元电路包括数据TLB单元电路372,该数据TLB电路耦合到数据缓存电路374,该数据缓存电路耦合到第2级(L2)缓存电路376。在一个示例性实施例中,存储器访问单元电路364可以包括加载单元电路、存储地址单元电路、以及存储数据单元电路,它们中的每一者耦合到存储器单元电路370中的数据TLB电路372。指令缓存电路334进一步耦合到存储器单元电路370中的第2级(L2)缓存单元电路376。在一种实施例中,指令缓存334和数据缓存374被组合成L2缓存单元电路376、第3级(L3)缓存单元电路(未示出)和/或主存储器中的单个指令和数据缓存(未示出)。L2缓存单元电路376耦合到一个或多个其他级别的缓存并且最终耦合到主存储器。
核心390可以支持一个或多个指令集(例如,x86指令集(带有已随着更新版本添加的一些扩展);MIPS指令集;ARM指令集(带有可选的额外扩展,例如NEON)),该指令集包括本文描述的(一个或多个)指令。在一种实施例中,核心390包括支持紧缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,从而允许利用紧缩数据来执行被许多多媒体应用使用的操作。
(一个或多个)示例性执行单元电路
图4图示了(一个或多个)执行单元电路的实施例,例如图3(B)的(一个或多个)执行单元电路362。如图所示,(一个或多个)执行单元电路362可以包括一个或多个ALU电路401、向量/SIMD单元电路403、加载/存储单元电路405、和/或分支/跳转单元电路407。ALU电路401执行整数算术和/或布尔操作。向量/SIMD单元电路403对紧缩数据(例如SIMD/向量寄存器)执行向量/SIMD操作。加载/存储单元电路405执行加载和存储指令,以将数据从存储器加载到寄存器中,或者从寄存器存储到存储器。加载/存储单元电路405也可以生成地址。分支/跳转单元电路407取决于指令而引起到某个存储器地址的分支或跳转。浮点单元(floating-point unit,FPU)电路409执行浮点算术。(一个或多个)执行单元电路362的宽度取决于实施例而有所不同,并且可以在从16比特到1024比特的范围中。在一些实施例中,两个或更多个更小的执行单元被逻辑地组合以形成更大的执行单元(例如,两个128比特执行单元被逻辑组合以形成256比特执行单元)。
示例性寄存器体系结构
图5是根据一些实施例的寄存器体系结构500的框图。如图所示,存在向量/SIMD寄存器510,其宽度从128比特到1024比特不等。在一些实施例中,向量/SIMD寄存器510在物理上是512比特的,并且取决于映射,只有一些低位比特被使用。例如,在一些实施例中,向量/SIMD寄存器510是512比特的ZMM寄存器:低位256比特被用于YMM寄存器,并且低位128比特被用于XMM寄存器。因此,存在寄存器的覆盖。在一些实施例中,向量长度字段在最大长度和一个或多个其他更短的长度之间作出选择,其中每个这种更短长度是前一长度的一半长度。标量操作是对ZMM/YMM/XMM寄存器中的最低阶数据元素位置执行的操作;更高阶数据元素位置或者被保持为与其在该指令之前相同,或者被归零,这取决于实施例。
在一些实施例中,寄存器体系结构500包括写入掩码/谓词(predicate)寄存器515。例如,在一些实施例中,有8个写入掩码/谓词寄存器(有时称为k0至k7),它们各自的大小是16比特、32比特、64比特或128比特。写入掩码/谓词寄存器515可以允许合并(例如,允许目的地中的任何元素集合在任何操作的执行期间被保护免于更新)和/或归零(例如,归零向量掩码允许目的地中的任何元素集合在任何操作的执行期间被归零)。在一些实施例中,给定的写入掩码/谓词寄存器515中的每个数据元素位置对应于目的地的数据元素位置。在其他实施例中,写入掩码/谓词寄存器515是可缩放的,并且由针对给定向量元素的设定数目个使能比特组成(例如,给每个64比特向量元素8个使能比特)。
寄存器体系结构500包括多个通用寄存器525。这些寄存器可以是16比特、32比特、64比特等等,并能够被用于标量操作。在一些实施例中,这些寄存器用名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8至R15来称呼。
在一些实施例中,寄存器体系结构500包括标量浮点寄存器545,它被用于使用x87指令集扩展对32/64/80比特浮点数据进行标量浮点操作,或者作为MMX寄存器,来对64比特紧缩整数数据执行操作,以及针对在MMX和XMM寄存器之间执行的一些操作保存操作对象。
一个或多个标志寄存器540(例如,EFLAGS,RFLAGS,等等)存储状态和控制信息,用于算术、比较和系统操作。例如,一个或多个标志寄存器540可以存储条件代码信息,例如进位、奇偶性、辅助进位、零、符号、以及溢出。在一些实施例中,一个或多个标志寄存器540被称为程序状态和控制寄存器。
段寄存器520包含用于访问存储器的段点。在一些实施例中,这些寄存器由名称CS、DS、SS、ES、FS和GS来称呼。
机器特定寄存器(machine-specific register,MSR)535对处理器性能进行控制和报告。大多数MSR 535处置与系统有关的功能,并且是应用程序不可访问的。机器检查寄存器560由用于对硬件错误进行检测和报告的控制、状态和错误报告MSR组成。
一个或多个指令指针寄存器530存储指令指针值。(一个或多个)控制寄存器555(例如,CR0-CR4)确定处理器(例如,处理器170、180、138、115和/或200)的操作模式和当前在执行的任务的特性。调试寄存器550控制并允许监视处理器或核心的调试操作。
存储器管理寄存器565指定用于保护模式存储器管理中的数据结构的位置。这些寄存器可以包括GDTR、IDTR、任务寄存器、以及LDTR寄存器。
本发明的替代性实施例可以使用更宽或更窄的寄存器。此外,本发明的替代性实施例可以使用更多、更少或不同的寄存器堆和寄存器。
指令集
指令集体系结构(instruction set architecture,ISA)可以包括一个或多个指令格式。给定的指令格式可以定义各种字段(例如,比特的数目、比特的位置)来指定要执行的操作(例如,操作码)和要被执行该操作的(一个或多个)操作对象和/或其他(一个或多个)数据字段(例如,掩码),等等。一些指令格式通过指令模板(或子格式)的定义被进一步分解。例如,给定的指令格式的指令模板可以被定义为具有该指令格式的字段的不同子集(所包括的字段通常是按相同顺序的,但至少一些具有不同的比特位置,因为所包括的字段更少)和/或被定义为具有以不同方式解读的给定字段。从而,ISA的每个指令是利用给定的指令格式来表达的(并且如果定义了的话,则以该指令格式的指令模板中的一个给定指令模板来表达),并且包括用于指定操作和操作对象的字段。例如,示例性ADD指令具有特定的操作码和指令格式,该指令格式包括操作码字段来指定该操作码,并且包括操作对象字段来选择操作对象(源1/目的地和源2);并且这个ADD指令在指令流中的出现将在选择特定操作对象的操作对象字段中具有特定内容。
示例性指令格式
可以按不同的格式来实现本文描述的(一个或多个)指令的实施例。此外,下文详述了示例性系统、体系结构和管线。(一个或多个)指令的实施例可以在这些系统、体系结构和管线上被执行,但不限于详述的那些。
图6图示了指令格式的实施例。如图所示,指令可以包括多个成分,这些成分包括但不限于用于以下项的一个或多个字段:一个或多个前缀601、操作码603、寻址信息605(例如,寄存器标识符、存储器寻址信息,等等)、位移值607、和/或立即数609。注意,一些指令利用了该格式的一些或所有字段,而其他指令可能只使用操作码603的字段。在一些实施例中,图示的顺序是这些字段要被编码的顺序,然而应当明白,在其他实施例中,这些字段可以被按另外的顺序来编码、被组合,等等。
(一个或多个)前缀字段601在被使用时对指令进行修改。在一些实施例中,一个或多个前缀被用于重复字符串指令(例如,0xF0、0xF2、0xF3,等等)、提供节超控(sectionoverride)(例如,0x2E、0x36、0x3E、0x26、0x64、0x65、0x2E、0x3E,等等)、执行总线锁定操作、和/或改变操作对象(例如,0x66)和地址大小(例如,0x67)。某些指令要求强制性的前缀(例如,0x66、0xF2、0xF3,等等)。这些前缀中的某些可以被认为是“传统”前缀。其他前缀(本文详述了其一个或多个示例)指示出和/或提供了进一步的能力,例如指定特定的寄存器等等。这些其他前缀通常跟随在“传统”前缀之后。
操作码字段603被用于至少部分地定义在指令的解码时要执行的操作。在一些实施例中,在操作码字段603中编码的主操作码的长度为1个、2个或3个字节。在其他实施例中,主操作码可以是其他的长度。额外的3比特操作码字段有时被编码在另一个字段中。
寻址字段605被用于对指令的一个或多个操作对象进行寻址,例如存储器中的位置或者一个或多个寄存器。图7图示了寻址字段605的实施例。在这个图示中,示出了可选的MOD R/M字节702和可选的缩放、索引、基址(Scale,Index,Base,SIB)字节704。MOD R/M字节702和SIB字节704被用来编码指令的最多两个操作对象,每个操作对象是直接寄存器或有效存储器地址。注意,这些字段中的每一者是可选的,即,不是所有的指令都包括这些字段中的一个或多个。MOD R/M字节702包括MOD字段742、寄存器字段744、以及R/M字段746。
MOD字段742的内容区分存储器访问和非存储器访问模式。在一些实施例中,当MOD字段742具有值b11时,利用寄存器直接寻址模式,否则使用寄存器间接寻址。
寄存器字段744可以编码目的地寄存器操作对象或者源寄存器操作对象,或者也可以编码操作码扩展而不被用于编码任何指令操作对象。寄存器索引字段744的内容直接指定或者通过地址生成来指定源或目的地操作对象的位置(在寄存器中或者在存储器中)。在一些实施例中,寄存器字段744得到来自前缀(例如,前缀601)的附加比特的补充,以允许更大的寻址。
R/M字段746可以用来编码引用了存储器地址的指令操作对象,或者可以用来编码目的地寄存器操作对象或源寄存器操作对象。注意,在一些实施例中,R/M字段746可以被与MOD字段742相组合以规定寻址模式。
SIB字节704包括缩放字段752、索引字段754、以及基址字段756,以用于地址的生成。缩放字段752指示缩放因子。索引字段754指定要使用的索引寄存器。在一些实施例中,索引字段754得到来自前缀(例如,前缀601)的附加比特的补充,以允许更大的寻址。基址字段756指定了要使用的基址寄存器。在一些实施例中,基址字段756得到来自前缀(例如,前缀601)的额外比特的补充,以允许更大的寻址。在实践中,缩放字段752的内容允许缩放索引字段754的内容以进行存储器地址生成(例如,对于使用2缩放*索引+基址的地址生成)。
一些寻址形式利用位移值来生成存储器地址。例如,可以根据2缩放*索引+基址+位移、索引*缩放+位移、r/m+位移、指令指针(RIP/EIP)+位移、寄存器+位移等等来生成存储器地址。该位移可以是1字节、2字节、4字节等等的值。在一些实施例中,位移字段607提供这个值。此外,在一些实施例中,位移因子的使用被编码在寻址字段605的MOD字段中,它指示出压缩位移方案,对于该方案,位移值通过disp8与基于向量长度确定的缩放因数N、b比特的值、以及指令的输入元素大小相结合地相乘来计算。位移值被存储在位移字段`607中。
在一些实施例中,立即数字段609为指令指定立即数。立即数可以被编码为1字节值、2字节值、4字节值等等。
图8图示了第一前缀601(A)的实施例。在一些实施例中,第一前缀601(A)是REX前缀的实施例。使用这个前缀的指令可以指定通用寄存器、64比特紧缩数据寄存器(例如,单指令多数据(SIMD)寄存器或向量寄存器)、和/或控制寄存器和调试寄存器(例如,CR8-CR15和DR8-DR15)。
使用第一前缀601(A)的指令可以使用3比特字段指定最多三个寄存器,这取决于格式:1)使用MOD R/M字节702的reg字段744和R/M字段746;2)使用MOD R/M字节702与SIB字节704,包括使用reg字段744以及基址字段756和索引字段754;或者3)使用操作码的寄存器字段。
在第一前缀601(A)中,比特位置7:4被设置为0100。比特位置3(W)可以被用于确定操作对象大小,但不能单独确定操作对象宽度。因此,当W=0时,操作对象大小由代码段描述符(code segment descriptor,CS.D)决定,而当W=1时,操作对象大小为64比特。
注意,添加另一个比特允许对16(24)个寄存器进行寻址,而单独的MOD R/M reg字段744和MOD R/M的R/M字段746各自只能寻址8个寄存器。
在第一前缀601(A)中,比特位置2(R)可以是MOD R/M的reg字段744的扩展,并且当该字段编码了通用寄存器、64比特紧缩数据寄存器(例如,SSE寄存器)或者控制或调试寄存器时,可被用来修改MOD R/M的reg字段744。当MOD R/M字节702指定其他寄存器或定义扩展操作码时,R被忽略。
比特位置1(X)X比特可以修改SIB字节索引字段754。
比特位置B(B)B可以修改MOD R/M的R/M字段746或SIB字节基址字段756中的基址;或者它可以修改用于访问通用寄存器(例如,通用寄存器525)的操作码寄存器字段。
图9A-图9D图示了如何使用第一前缀601(A)的R、X和B字段的实施例。图9A图示了当SIB字节704不被用于存储器寻址时,来自第一前缀601(A)的R和B被用来扩展MOD R/M字节702的reg字段744和R/M字段746。图9B图示了当不使用SIB字节704时,来自第一前缀601(A)的R和B被用来扩展MOD R/M字节702的reg字段744和R/M字段746(寄存器-寄存器寻址)。图9C图示了当SIB字节7 04被用于存储器寻址时,来自第一前缀`601(A)的R、X和B被用于扩展MOD R/M字节702的reg字段744以及索引字段754和基址字段756。图9D图示了当寄存器被编码在操作码603中时,来自第一前缀601(A)的B被用来扩展MOD R/M字节702的reg字段744。
图10A-图10B图示了第二前缀601(B)的实施例。在一些实施例中,第二前缀601(B)是VEX前缀的实施例。第二前缀601(B)编码允许指令具有多于两个操作对象,并且允许SIMD向量寄存器(例如,向量/SIMD寄存器510)长于64比特(例如,128比特和256比特)。第二前缀601(B)的使用提供了三操作对象(或更多)的语法。例如,先前的两操作对象指令执行诸如A=A+B之类的操作,这覆写了源操作对象。对第二前缀601(B)的使用使得操作对象能够执行非破坏性操作,比如A=B+C。
在一些实施例中,第二前缀601(B)有两种形式——两字节形式和三字节形式。两字节的第二前缀601(B)主要被用于128比特、标量和一些256比特指令;而三字节的第二前缀601(B)提供了3字节操作码指令和第一前缀601(A)的紧凑替换。
图10A图示了第二前缀601(B)的两字节形式的实施例。在一个示例中,格式字段1001(字节0 1003)包含值C5H。在一个示例中,字节1 1005在比特[7]中包括“R”值。这个值是第一前缀601(A)的同一值的补码。比特[2]被用来规定向量的长度(L)(其中0的值是标量或者128比特向量,而1的值是256比特向量)。比特[1:0]提供等同于一些传统前缀的操作码扩展性(例如,00=无前缀,01=66H,10=F3H,并且11=F2H)。被示为vvvv的比特[6:3]可以被用于:1)编码第一源寄存器操作对象,该操作对象以反转(反码)形式指定,并且对于具有2个或更多个源操作对象的指令有效;2)编码目的地寄存器操作对象,该操作对象以反码形式指定,用于某些向量移位;或者3)不编码任何操作对象,该字段被保留并且应当包含某个值,例如1111b。
使用这个前缀的指令可以使用MOD R/M的R/M字段746,以编码引用存储器地址的指令操作对象,或者编码目的地寄存器操作对象或源寄存器操作对象。
使用这个前缀的指令可以使用MOD R/M的reg字段744,以编码目的地寄存器操作对象或者源寄存器操作对象,被作为操作码扩展来对待而不被用于编码任何指令操作对象。
对于支持四个操作对象的指令语法,vvvv、MOD R/M的R/M字段746和MOD R/M的reg字段744编码了四个操作对象中的三个。然后立即数609的比特[7:4]被用来编码第三源寄存器操作对象。
图10B图示了第二前缀601(B)的三字节形式的实施例。在一种示例中,格式字段1011(字节0 1013)包含值C4H。字节1 1015在比特[7:5]中包括“R”、“X”和“B”,它们是第一前缀601(A)的这些值的补码。字节1 1015的比特[4:0](示为mmmmm)包括根据需要来对一个或多个隐含的前导操作码字节进行编码的内容。例如,00001意味着0FH前导操作码,00010意味着0F38H前导操作码,00011意味着0F3AH前导操作码,等等。
字节2 1017的比特[7]的使用与第一前缀601(A)的W类似,包括帮助确定可提升的操作对象大小。比特[2]被用来规定向量的长度(L)(其中0的值是标量或者128比特向量,而1的值是256比特向量)。比特[1:0]提供等同于一些传统前缀的操作码扩展性(例如,00=无前缀,01=66H,10=F3H,并且11=F2H)。被示为vvvv的比特[6:3]可以被用于:1)编码第一源寄存器操作对象,该操作对象以反转(反码)形式指定,对于具有2个或更多个源操作对象的指令有效;2)编码目的地寄存器操作对象,该操作对象以反码形式指定,用于某些向量移位;或者3)不编码任何操作对象,该字段被保留并且应当包含某个值,例如1111b。
使用这个前缀的指令可以使用MOD R/M的R/M字段746,以编码引用存储器地址的指令操作对象,或者编码目的地寄存器操作对象或源寄存器操作对象。
使用这个前缀的指令可以使用MOD R/M的reg字段744,以编码目的地寄存器操作对象或者源寄存器操作对象,或者被作为操作码扩展来对待而不被用于编码任何指令操作对象。
对于支持四个操作对象的指令语法,vvvv、MOD R/M的R/M字段746和MOD R/M的reg字段744编码了四个操作对象中的三个。然后立即数609的比特[7:4]被用来编码第三源寄存器操作对象。
图11图示了第三前缀601(C)的实施例。在一些实施例中,第三前缀601(C)是EVEX前缀的实施例。第三前缀601(C)是四字节前缀。
第三前缀601(C)能够在64比特模式中编码32个向量寄存器(例如,128比特、256比特和512比特寄存器)。在一些实施例中,利用写入掩码/操作掩码(参见对于先前图中的寄存器的论述,例如图5)或谓词的指令利用这个前缀。操作掩码寄存器允许条件处理或选择控制。操作掩码指令——其源/目的地操作对象是操作掩码寄存器并且将操作掩码寄存器的内容视为单个值——是使用第二前缀601(B)而被编码的。
第三前缀601(C)可以编码特定于指令类别的功能(例如,具有“加载+操作”语义的紧缩指令可以支持嵌入式广播功能,具有舍入语义的浮点指令可以支持静态舍入功能,具有非舍入算术语义的浮点指令可以支持“抑制所有异常”功能,等等)。
第三前缀601(C)的第一字节是格式字段1111,它在一种示例中具有62H的值。随后的字节被称为有效载荷字节1115-1119,并且共同形成P[23:0]的24比特值,以(本文中详述的)一个或多个字段的形式提供特定的能力。
在一些实施例中,有效载荷字节1119的P[1:0]与低位的两个mm比特相同。在一些实施例中,P[3:2]被保留。比特P[4](R')在与P[7]和MOD R/M的reg字段744相组合时允许访问高16向量寄存器集合。当不需要SIB类型寻址时,P[6]也可以提供对高16向量寄存器的访问。P[7:5]由R、X和B构成,它们是针对向量寄存器、通用寄存器、存储器寻址的操作对象指定符修饰符比特,并且当与MOD R/M寄存器字段744和MOD R/M的R/M字段746相组合时,允许访问超出低8个寄存器的下一组8个寄存器。P[9:8]提供等同于一些传统前缀的操作码扩展性(例如,00=无前缀,01=66H,10=F3H,并且11=F2H)。P[10]在一些实施例中是固定值1。被示为vvvv的P[14:11]可以被用于:1)编码第一源寄存器操作对象,该操作对象以反转(反码)形式指定,对于具有2个或更多个源操作对象的指令有效;2)编码目的地寄存器操作对象,该操作对象以反码形式指定,用于某些向量移位;或者3)不编码任何操作对象,该字段被保留并且应当包含某个值,例如1111b。
P[15]类似于第一前缀601(A)和第二前缀611(B)的W,并且可以作为操作码扩展比特或操作对象大小提升。
P[18:16]指定操作掩码(写入掩码)寄存器(例如,写入掩码/谓词寄存器515)中的寄存器的索引。在本发明的一种实施例中,特定值aaa=000具有特殊行为,暗示着没有操作掩码被用于这个特定的指令(这可以通过多种方式实现,包括使用硬连线到全一的操作掩码或者绕过掩蔽硬件的硬件)。当合并时,向量掩码允许目的地中的任何元素集合在(由基本操作和增强操作指定的)任何操作的执行期间被保护免于更新;在另一实施例中,保留目的地的每个元素的旧值(如果相应的掩码比特具有0值)。与之不同,当归零时,向量掩码允许目的地中的任何元素集合在(由基本操作和增强操作指定的)任何操作的执行期间被归零;在一种实施例中,目的地的元素在相应掩码比特具有0值时被设置到0。这个功能的子集是对于正被执行的操作的向量长度(即,被修改的元素的跨度,从第一个到最后一个)进行控制的能力;然而,被修改的元素不一定要连续。从而,操作掩码字段允许了部分向量操作,包括加载、存储、算术、逻辑,等等。虽然在描述的本发明的实施例中,操作掩码字段的内容选择若干个操作掩码寄存器中包含要使用的操作掩码的那一个(从而操作掩码字段的内容间接标识了要执行的掩蔽),但替代地或附加地,替代性实施例允许掩码写入字段的内容直接指定要执行的掩蔽。
P[19]可以与P[14:11]相组合,来以非破坏性源语法编码第二源向量寄存器,该语法可以利用P[19]来访问高16个向量寄存器。P[20]编码多种功能,这些功能在不同类别的指令中有所不同,并且可以影响向量长度/舍入控制指定符字段(P[22:21])的含义。P[23]指示出对合并-写入掩蔽的支持(例如,当被设置为0时)或者对归零和合并-写入掩蔽的支持(例如,当被设置为1时)。
下面的表格详述了在使用第三前缀601(C)的指令中对寄存器的编码的示例性实施例。
表格1:64比特模式中的32寄存器支持
表格2:在32比特模式中编码寄存器指定符
表格3:操作掩码寄存器指定符编码
程序代码可被应用到输入指令以执行本文描述的功能并且生成输出信息。输出信息可以按已知的方式被应用到一个或多个输出设备。对于本申请而言,处理系统包括任何具有处理器的系统,处理器例如是数字信号处理器(digital signal processor,DSP)、微控制器、专用集成电路(application specific integrated circuit,ASIC)、或者微处理器。
可以用面向过程或面向对象的高级编程语言来实现程序代码以与处理系统进行通信。如果希望,也可以用汇编或机器语言来实现程序代码。实际上,本文描述的机制在范围上不限于任何特定的编程语言。在任何情况下,该语言可以是编译语言或者解释语言。
本文公开的机制的实施例可以用硬件、软件、固件或者这些实现途径的组合来实现。本发明的实施例可以被实现为计算机程序或程序代码,在包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备的可编程系统上执行。
至少一个实施例的一个或多个方面可以由被存储在机器可读介质上的代表性指令来实现,这些指令代表处理器内的各种逻辑,这些指令当被机器读取时,使得该机器制作用于执行本文所述技术的逻辑。这些表现形式被称为“IP核”,可以被存储在有形机器可读介质上并被提供给各种客户或制造设施,以加载到实际上制作该逻辑或处理器的制作机器中。
这些机器可读存储介质可包括——但不限于——由机器或设备制造或形成的物品的非暂态有形布置形式,包括存储介质,例如:硬盘,任何其他类型的盘(包括软盘、光盘、致密盘只读存储器(compact disk read-only memory,CD-ROM)、可重写致密盘(compactdisk rewritable,CD-RW)、以及磁光盘),半导体器件(例如,只读存储器(read-onlymemory,ROM),诸如动态随机访问存储器(dynamic random access memory,DRAM)、静态随机访问存储器(static random access memory,SRAM)之类的随机访问存储器(randomaccess memory,RAM),可擦除可编程只读存储器(erasable programmable read-onlymemory,EPROM),闪速存储器,电可擦除可编程只读存储器(electrically erasableprogrammable read-only memory,EEPROM),相变存储器(phase change memory,PCM)),磁卡或光卡,或者适合用于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括非暂态有形机器可读介质,这些介质包含指令或者包含定义本文描述的结构、电路、装置、处理器和/或系统特征的设计数据,例如硬件描述语言(Hardware Description Language,HDL)。这种实施例也可以被称为程序产品。
仿真(包括二进制转译、代码变形,等等)
在一些情况下,指令转换器可以被用于将指令从源指令集转换到目标指令集。例如,指令转换器可以将指令转译(例如,利用静态二进制转译、包括动态编译的动态二进制转译)、变形、仿真或者以其他方式转换到要被核心处理的一个或多个其他指令。可以用软件、硬件、固件或者其组合来实现指令转换器。指令转换器可以在处理器上、在处理器外、或者一部分在处理器上而一部分在处理器外。
图12图示根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在图示的实施例中,指令转换器是软件指令转换器,但可替代地,可以用软件、固件、硬件或者其各种组合来实现指令转换器。图12示出了高级语言1202的程序可以被利用第一ISA编译器1204编译以生成第一ISA二进制代码1206,该代码可以由具有至少一个第一ISA指令集核心的处理器1216原生执行。具有至少一个第一ISA指令集核心的处理器1216表示任何这样的处理器:这种处理器能够通过兼容地执行或以其他方式处理(1)第一ISA指令集核心的指令集的实质部分或者(2)以在具有至少一个第一ISA指令集核心的处理器上运行为目标的应用或其他软件的目标代码版本,来执行与具有至少一个第一ISA指令集核心的Intel处理器基本上相同的功能,以便实现与具有至少一个第一ISA指令集核心的处理器基本上相同的结果。第一ISA编译器1204代表可操作来生成第一ISA二进制代码1206(例如,目标代码)的编译器,该第一ISA二进制代码在进行或不进行额外的链接处理的情况下能够在具有至少一个第一ISA指令集核心的处理器1216上被执行。
类似地,图12示出了高级语言1202的程序可以使用替代性指令集编译器1208来编译以生成替代性指令集二进制代码1210,该代码可以由没有第一ISA核心的处理器1214原生执行。指令转换器1212被用来将第一ISA二进制代码1206转换成可以由没有第一ISA指令集核心的处理器1214原生执行的代码。这种转换后的代码可能不会与替代性指令集二进制代码1210相同,这是因为能够进行这一点的指令转换器难以制作;然而,转换后的代码将实现总的操作,并由来自该替代性指令集的指令构成。从而,指令转换器1212表示软件、固件、硬件或它们的组合,其通过仿真、模拟或任何其他过程,允许不具有第一ISA指令集处理器或核心的处理器或其他电子设备执行第一ISA二进制代码1206。
用于在可信区中实现共享虚拟存储器的装置和方法
A.信任域体系结构概述
本公开的各方面涉及信任域(TD)——用于工作负载的安全软件执行环境,其可以包括操作系统(operating system,OS)和在OS之上运行的应用。工作负载还可以包括在虚拟机监视器(virtual machine monitor,VMM)的控制下运行的一个或多个虚拟机(virtualmachine,VM)连同在VM内部执行的其他OS/应用。
保护TD内的数据不被未经授权的人员和恶意软件访问是尤为重要的。驻留在存储器中的未经加密的明文数据以及在存储器与处理器之间移动的数据可能容易受到由黑客用于从存储器取回数据的各种攻击(例如,总线扫描、存储器扫描等)。在一些实例中,数据可能包括用于对敏感数据加密的密钥或其他信息。
存储器加密(Memory Encryption,ME)技术(诸如全存储器加密(TME))提供了一种用于保护存储器中的数据的解决方案。ME允许由在处理器核心上执行的软件进行的存储器访问使用加密密钥被加密。例如,加密密钥可以是在引导时生成并且用于对通过外部存储器总线发送的数据进行加密的128比特密钥。具体而言,当处理器向存储器作出写入请求时,数据可以在被发送到存储器之前由存储器加密引擎进行加密,该数据在存储器中以加密形式被存储。当数据从存储器被读取时,数据以加密形式被发送到处理器,并且在被处理器接收时通过加密密钥被解密。由于数据以明文的形式保持在处理器中,因此ME技术不要求对现有软件以及现有软件如何与处理器交互进行修改。
多密钥ME(multi-key ME,MK-ME)技术是提供对多个加密密钥的支持的ME技术的扩展。这允许分隔的存储器加密。例如,处理器体系结构可以允许多个加密密钥在引导过程(即,当计算系统首次通电时由该计算系统执行的操作)期间被生成,这些密钥要被用于对不同的存储器页进行加密。作为ME和MK-ME技术的一部分,与加密密钥相关联的密钥标识符(identifier,ID)可以由各种硬件和软件组件使用。多密钥扩展特别适用于与多域体系结构(诸如由CSP使用的体系结构)一起工作,因为支持的密钥数量可能取决于实现方式。
在一些实现方式中,指定VM的页要使用VM特定密钥而被加密。在其他实例中,一些VM页可能保持为明文,或者可使用不同的临时密钥被加密,这些密钥对软件来说可能是不透明的。MK-ME引擎可用于支持不同页使用不同密钥被加密。MK-ME引擎可以支持每个域至少一个密钥,并且因此实现不同工作负载之间的加密隔离。
在本公开的实现方式中,提供了TD体系结构和指令集体系结构(ISA)扩展,该TD体系结构和指令集体系结构扩展在本文中被称为TD扩展或TDX。TDX允许与不同的客户端机器(例如,VM)、宾客机操作系统、主机操作系统、管理程序等相对应的多个安全TD。附加地,由同一宾客机OS内的同一客户端执行的不同应用可以使用多个TD来安全地执行。每个TD可以使用对于在TD外部执行的软件来说不可用的一个或多个私钥。在一些实施例中,在一个TD中执行的软件可以具有对特定于该特定域的私钥的访问权以及对可以由多个TD使用的共享密钥的访问权。例如,在TD内运行的软件可以使用私钥来进行安全执行(例如,读取、写入、执行操作),并且同一软件可以使用共享密钥来访问与其他TD共享的结构或设备(例如,打印机、键盘、鼠标、监视器、网络适配器、路由器等)。
甚至可以保护TD免受特权用户(诸如OS(主机OS或宾客机OS)、VMM、基本输入/输出系统(basic input/output system,BIOS)固件、系统管理模式等)的侵害。如果恶意软件接管特权域(诸如OS),则由TD存储在存储器中的敏感数据将保持受到保护。
每个TD可以独立于其他TD进行操作,并且使用由信任域资源管理器(trustdomain resource manager,TDRM)指派的(一个或多个)逻辑处理器、存储器和I/O。TDRM可以作为主机OS、管理程序的一部分操作,或可以作为单独的软件程序操作,并且具有对核心和其他平台硬件的完全控制。TDRM将逻辑处理器(例如,物理处理器的执行线程)指派给TD;然而,在某些实现方式中,TDRM可能无法访问所指派的(一个或多个)逻辑处理器上TD的执行状态。类似地,TDRM可以将物理存储器和I/O资源指派给TD,但TDRM可能由于对单独的加密密钥的使用而可能未获准访问TD的存储器状态。在TD中执行的软件可以以降低的特权操作(例如,租户软件可能不具有对主机系统上可用的所有资源的完全访问权),这使得TDRM可以保留对平台资源的控制。然而,在所定义的情况下,TDRM不能影响存储器中或CPU结构中的TD状态的机密性或完整性。
TDX可以与其他虚拟化体系结构扩展(诸如VMX)并发地操作,从而允许多个操作系统以安全且高效的方式同时共享处理器资源。具有VMX的计算系统可以充当多个虚拟系统或VM。每个虚拟机可以在单独的分区中运行OS和应用。VMX还提供了被称为虚拟机监视器(virtual machine monitor,VMM)的系统软件层,该系统软件层用于管理虚拟机的操作。
VMX可以提供用于管理VM转变(例如,VM进入和VM退出)的虚拟机控制结构(virtual machine control structure,VMCS)。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退出的原因和性质的文件)。
在一些实现方式中,根据本文中所描述的实施例,TDX可以作为对VMX的替代物来操作,该TDX包括VMX的特征中的许多特征并且添加附加的安全层。在其他实现方式中,TDX可以与VMX并发地操作。例如,运行虚拟化体系结构(例如,VMX)的主机服务器可能需要既利用MK-ME技术又利用TDX体系结构来进行租户软件的高效执行。主机服务器可以在TD内执行高度敏感的应用,使得执行VM的管理程序不具有对被分配给TD及其可信计算基(trustedcomputing base,TCB)的存储器页和加密密钥的访问权。TCB指的是具有影响对系统的整体操作的信任的能力的硬件、固件和/或软件组件的集合。同时,主机服务器可以使用MK-ME技术运行对安全和隔离需求较少的应用,其中管理程序保留对这些不太敏感的应用中使用的存储器页和加密密钥的控制。然后,VMM可以使用不同的MK-ME密钥将不同的应用彼此隔离,但仍然保持在每个应用的TCB中。
图13图示根据本公开的实现方式的、使用TD在虚拟化系统中提供隔离的计算系统1300的示意性框图。计算系统1300可以包括虚拟化服务器1310,该虚拟化服务器1310包括处理器1312、存储器1314和网络接口1316。处理器1312可以实现TD体系结构以及针对该TD体系结构的ISA扩展(例如,TDX)。
TD 1324A、1324N可以作为由处理器1312实现的TD体系结构的部分而被执行。TD1324A、1324N可以指代用于支持客户(例如,租户)工作负载的软件执行环境。租户工作负载可以包括OS连同在OS之上运行的其他应用。租户工作负载还可以包括在VMM之上运行的VM。TD体系结构可以通过在TD 1324A、1324N与在处理器1312上执行的其他软件(例如,CSP提供的软件)之间提供隔离来提供保护在TD 1324A、1324N中运行的租户工作负载的能力。TD体系结构不对在系统内操作的TD的数量施加任何体系结构限制,然而,软件和硬件限制可能由于其他约束而限制在系统上并发地运行的TD的数量。
当租户不信任CSP时,租户工作负载可以在TD 1324A、1324N内被执行,以实施机密性。为了根据本公开的实现方式进行操作,要在其上执行TD的CPU必须支持TD体系结构。在一个实施例中,租户工作负载可以包括在VMM之上运行的VM。由此,虚拟化模式(例如,VMX)也可以受到要在其上执行TD的CPU的支持。在另一实施例中,TD 1324A、1324N可以不使用虚拟化模式进行操作,而是替代地可以在TD 1324A、1324N内运行启发式操作系统(OS)。
TD体系结构可以通过包括存储器加密、TD资源管理以及执行状态和管理隔离能力的功能在TD 1324A、1324N与在处理器1312上执行的其他软件之间提供隔离。存储器加密可以由处理器1312的加密电路(例如,加密引擎1372)提供。在本公开的实施例中,加密引擎1372可以是多密钥全存储器加密(MK-ME)引擎。全存储器加密(ME)技术允许由在处理器核心上执行的软件进行的存储器访问使用加密密钥被加密。多密钥ME技术可以是ME的扩展,它提供对多个加密密钥的支持,由此允许分隔的加密。存储器加密可以进一步通过由处理器1312维护的若干密钥表(例如,密钥所有权表(key ownership table,KOT)1340和密钥加密表(key encryption table,KET)1342)而被支持。密钥表可以被存储在片上存储器中,其中片上存储器不能通过由处理设备执行的软件直接地访问。片上存储器可以在物理上与处理核心位于同一芯片上。资源管理能力可以由TDRM 1322提供。执行状态和管理能力可以由存储器所有权表(MOT)1390和访问受控的TD控制结构提供,这些TD控制结构诸如信任域控制结构(trust domain control structure,TDCS)1330A、1330N和信任域线程控制结构(trust domain thread control structure,TDTCS)1332A、1332N。
TDRM 1322表示TD体系结构的资源管理层。在一些实施例中,TDRM 1322可以被实现为CSP/根VMM(例如,管理VMM和VM的机器级操作的主VMM)的部分。TDRM 1322可以作为TD体系结构的管理TD 1324A、1324N的操作的部分而被包括的软件模块。TDRM 1322可以充当主机并且具有对处理器和其他平台硬件的控制。TDRM 1322可以向TD中的软件指派(一个或多个)逻辑处理器,并且还可以向TD指派物理存储器和I/O资源。尽管TDRM 1322可以指派和管理资源(诸如CPU时间、存储器、以及对TD 1324A、1324N的I/O访问),但是TDRM 1322可以在TD 1324A、1324N的TCB之外操作。例如,TDRM可能无法访问所指派的(一个或多个)逻辑处理器上的TD的执行状态,并且可能未获准访问/伪装(spoof)TD的存储器状态。这可以通过使用单独的加密密钥和存储器上的其他完整性/重放控制来实施。
虚拟化服务器1310可以支持数个客户端设备1301A-1301C。TD可以是可由客户端设备1301A-1301C经由网络接口1316访问的。客户端设备1301A-1301C可以经由在处理器1312上执行的软件(例如,CSP提供的软件)彼此通信并与其他设备通信。TD 1324A、1324N可以指代客户端设备1301A-1301C经由处理器1312执行的租户工作负载。如先前所讨论的,租户工作负载可以包括OS以及在OS之上运行的其他环3(ring-3)应用。根据本文中所描述的实施例,租户工作负载还可以包括在VMM(例如,管理程序)之上运行的VM,连同其他环3应用。每个客户端设备1301A-1301C可包括但不限于:桌面型电脑、平板电脑、膝上型电脑、上网本、上网本电脑、个人数字助理(personal digital assistant,PDA)、服务器、工作站、蜂窝电话、移动计算设备、智能电话、互联网设备或任何其他类型的计算设备。
处理器1312可以包括一个或多个核心1320(在本文中也称为处理核心1320)、范围寄存器1360、存储器控制器1370(存储器管理单元(memory management unit,MMU))、以及I/O端口1350。处理器1312可被用于计算系统1300中,该计算系统1300包括但不限于桌面型电脑、平板电脑、膝上型电脑、上网本、笔记本电脑、PDA、服务器、工作站、蜂窝电话、移动计算设备、智能电话、互联网设备或任何其他类型的计算设备。在另一实施例中,处理器1312可以被用于片上系统(system-on-a-chip,SoC)系统中。
一个或多个逻辑处理器(例如,执行线程)可以在处理核心1320上操作。TD 1324A、1324N可以在这些执行线程上操作。TDRM 1322可以充当完整主机并且具有对处理核心1320和在处理核心1320上操作的所有逻辑处理器的完全控制。TDRM 1322可以指派TD 1324A、1324N内的软件以在与TD 1324A、TD 1324N相关联的逻辑处理器上执行。然而,在本公开的实施例中,通过单独的加密密钥的使用,TDRM 1322可能无法访问所指派的(一个或多个)逻辑处理器上的TD 1324A、1324N的执行状态。因为TDRM 1322处于TD 1324A、1324N的TCB之外,所以可以防止TDRM 1322访问TD 1324A、1324N的执行状态。因此,可能不信任TDRM 1322来访问执行状态,该执行状态可能潜在地将关于租户工作负载的信息提供给不可信的TDRM1322。防止TDRM 1322访问TD 1324A、1324N的执行状态实施了在TD 1324A、1324N上执行的租户工作负载的完整性。
虚拟化服务器1310可以进一步包括用于存储程序二进制文件和其他数据的存储器1314。存储器1314可以指代主存储器,或者可以既指代主存储器又指代辅助存储器,该存储器1314可以包括只读存储器(read-only memory,ROM)、硬盘驱动器(hard disk drive,HDD)等。TDRM 1322可以分配存储器1314的特定部分供TD 1324A、1324N用作TDPM 1386A、1386N。TDPM 1386A、1386N可以通过在TD 1324A、1324N被创建时由TDRM 1322生成的一次性密码密钥来加密。TDRM 1322可以生成一次性密码密钥来加密TDPM 1386A、1386N,但不能使用该一次性密码密钥来访问被存储在TDRM 1386A、1386N内的内容。
TD 1324A、1324N可以使用被映射到宾客机物理存储器地址的虚拟存储器地址以及由存储器控制器1370映射到主机/系统物理存储器地址的宾客机物理存储器地址。当TD1324A、1324N尝试访问与被加载到存储器1314中的页的物理存储器地址相对应的虚拟存储器地址时,存储器控制器1370可以通过使用扩展页表(extended page table,EPT)1382和宾客机页表(guest page table,GPT)1384来返回所请求的数据。存储器控制器1370可以包括EPT走查逻辑和GPT走查逻辑,以将宾客机物理地址转译为主存储器的主机物理地址,并且提供允许(一个或多个)处理核心1320读取、走查和解释这些映射的协议的参数。
在一个实施例中,在TD 1324A、1324N内执行的任务可能无法使用存储器1314的物理地址直接访问存储器1314。相反,这些任务通过虚拟地址访问TD 1324A、1324N的虚拟存储器。虚拟存储器内的虚拟存储器页的虚拟地址可以被映射到存储器1314的物理地址。TD1324A、1324N的虚拟存储器可以被划分成称为虚拟存储器页的固定大小的单元,这些单元各自具有相对应的虚拟地址。存储器1314可以根据各自具有固定的大小的物理存储器页(例如,存储器帧)来组织。每个存储器帧可以与唯一地标识该存储器帧的标识符相关联。虚拟地址的虚拟存储器页可以被映射为与存储器1314的物理地址空间中的固定大小的单元(例如,存储器帧、物理存储器页)相对应。在宾客机应用(例如,VM)在TD 1324A、1324N内的执行期间,响应于访问存储器1314的请求,处理器1312可以使用映射(例如,诸如宾客机应用的GPT 1384和TDRM 1322的EPT 1382之类的页表中的虚拟存储器页到物理存储器页的映射)来访问存储器1314的物理存储器页。
在一个实施例中,TD 1324A、1324N可以由TDRM 1322创建和启动。TDRM 1322可以例如通过执行特定指令(例如,TDCREATE)来创建TD 1324A。TDRM 1322可以选择物理存储器1314的4KB对齐区域(与一个存储器页相对应)并且将该存储器页的地址作为参数提供给指令以创建TD 1324A。由TDRM 1322执行的指令可以进一步使处理器1312生成一次性密码密钥(也称为临时密钥)。一次性密码密钥可以被指派给存储在KOT 1340中的可用HKID。KOT1340可以是这样的数据结构:该数据结构是在处理器1312上操作的软件不可见的,用于管理TD体系结构内的HKID的库存。可用的HKID还可以被存储在TDCS1330A中。处理器1312可以咨询MOT 1390以将存储器页分配给TD 1324A。MOT 1390可以是这样的数据结构:该数据结构是在处理器1312上操作的软件不可见的,由处理器1312用来实施物理存储器页到正在执行的TD的指派。在不具有对所指派的TDPM中存储的数据的任何可视性的情况下,MOT 1390可以允许TDRM 1322有能力将存储器作为针对所创建的每个TD(例如,TD 1324A、1324N)的资源来管理。
处理器1312可以利用存储器加密引擎1372(例如,MK-ME引擎)来对宾客机进程(例如,应用或VM)在TD 1324A、1324N内的的执行期间被访问的存储器进行加密(和解密)。如上文所讨论的,ME允许由在处理核心(例如,(一个或多个)处理核心1320)上执行的软件进行的存储器访问使用加密密钥被加密。MK-ME是ME的增强,它允许使用多个加密密钥,由此允许分隔的加密。在一些实施例中,处理器1312可以利用加密引擎1372来使得不同的页使用不同的加密密钥(例如,一次性加密密钥)被加密。在各实施例中,加密引擎1372可以被用于本文中所描述的TD体系结构中,以支持针对每个TD 1324A、1324N生成的一个或多个加密密钥(例如,临时密钥),从而帮助实现不同的租户工作负载之间的密码隔离。例如,当加密引擎1372在TD体系结构中被使用时,CPU默认实施:与每个TD 1324A、1324N相关联的所有页都要使用特定于该TD的密钥被加密。
每个TD 1324A-1324N可以进一步将特定TD页选择为是明文,或者是使用对在处理器1312上执行的软件(例如,CSP提供的软件)不透明的不同加密密钥被加密的。例如,TDPM1386A、1386N内的存储器页可以使用TDRM 1322未知的加密密钥与绑定操作(例如,用于将TD的虚拟地址映射到相对应的物理地址的操作)的组合来加密。由TDRM 1322执行的绑定操作可以通过使用页的主机物理地址(host physical address,HPA)作为到加密算法的参数来将TDPM 1386A、1386N内的存储器页绑定到特定TD,该加密算法被用来对存储器页进行加密。因此,如果任何存储器页被移动到存储器1314的另一位置,则即使TD特定加密密钥被使用,该存储器页也不能被正确地解密。
在一个实施例中,TD 1324A、1324N可能被TDRM 1322毁坏。例如,TDRM 1322可以通过执行特定指令(例如,TDSTOP)而使TD 1324A停止在与TD 1324A相关联的逻辑处理器上执行。TDRM 1322可以对缓存1334的所有缓存条目进行转储清除,其中缓存1334与执行TD1324A的逻辑处理器相关联。一旦缓存1334的所有缓存条目都已被转储清除,TDRM 1322就可以将指派给一次性密码密钥的HKID标记为可用于到与其他TD(例如,TD 1324N)相关联的其他一次性密码密钥的指派。然后,TDRM 1322可以从与TD 1324A相关联的TDPM(例如,TDPM1386A)移除所有的页。
B.用于在信任域中实现共享虚拟存储器(SVM)的实施例
与信任域(TD)相关联的存储器可被编组为两个类别:私有存储器和共享存储器。在一个实施例中,多密钥全存储器加密(MK-TME)引擎使用不同的密钥对私有存储器和共享存储器两者都应用存储器加密。
图14图示一种这样的实现方式:其中存储器控制器1440的加密和完整性保护引擎1441使用不同的密钥ID(KeyID)对物理存储器1450中的共享区域和私有区域执行加密。例如,与TD 1410相关联的私有存储器空间1412使用(与TD私有密钥相关联的)私有密钥ID1490被加密,并且共享存储器空间1430使用(与TD共享密钥相关联的)共享密钥ID 1491被加密。这种布置确保了私有存储器区域1412仅能从TD 1410内部来访问。
如所图示的,针对私有存储器1410的地址转译要求在TD私有存储器1414中存储的TD页表1414和由VMM 1470的TD管理扩展1472管理的安全扩展页表(SEPT)1422两者中进行查找。针对共享存储器1430的地址转译要求在TD页表1414和共享扩展页表1424中进行查找,共享扩展页表1424也由VMM 1470管理。
共享存储器1430被TD 1410用来与外部实体交换数据,并且可由实体跨平台访问,这些实体包括VMM 1470、输入/输出存储器管理单元(IOMMU)和/或I/O设备(例如,外围组件互连快速(PCIe)设备)。
在一个特定实施例中,TD管理引擎1472实现包括由SEAMCALL(TDH)和TDCALL(TDG)指令触发的功能的信任域扩展(TDX)。SEAMCALL(TDH)指令被主机VMM 1470用来调用主机侧TDX接口功能。主机侧接口功能名称以TDH(信任域主机)开始。TDCALL(TDG)指令被TDX非根模式下的宾客机TD软件用来调用宾客机侧TDX功能。宾客机侧接口功能名称以TDG(信任域宾客机)开始。
图15图示耦合到IOMMU 1511的PCIe端点设备1505,该IOMMU 1511具有用于执行地址重映射功能的DMA重映射引擎1513、用于缓存地址转译的输入/输出转译后备缓冲器(translation lookaside buffer,TLB)、以及用于执行页走查操作以填充IOTLB 1515的页表走查器1517。TD私有存储器区域1412被示出为处于物理存储器1450内,并且与在CPU核心1501上运行的TD宾客机1504相关联。
如由X所指示,即使IOMMU 1511可以支持共享虚拟存储器(SVM),SVM也不能在信任域内被使用。这是因为,对于SVM功能,IOMMU 1511必须具有对TD 1504内的页表1414的访问权,以用于宾客机虚拟地址(GVA)到宾客机物理地址(GPA)的转译。然而,该页表1414的集合属于IOMMU 1511不可访问的私有存储器1412。因此,尽管DMA可以被用于共享存储器区域1430,但IOMMU因为其不具有访问TD 1504中的第一级页表1414的必要特权而无法执行GVA到GPA的转译。
本发明的实施例解除了这些体系结构限制,由此允许SVM在TD内安全地被使用。尽管下文描述的实施例有时聚焦于TDX实现方式,但是本发明的基本原理可以适用于具有相对应的特征的任何信任域体系结构。
图16图示根据本发明的一个实施例的可操作的IOMMU 1611、以及核心1601的TD管理逻辑1670。在一个实现方式中,TD管理逻辑1670包括用于在TDX可信域扩展的上下文内实现本文中所描述的技术的TDX模块。例如,一个实施例的TDX模块在由安全仲裁模式范围寄存器(secure arbitration mode range register,SEAMRR)的集合标识的保留的存储器空间中被主控。处理器仅允许访问从保留的存储器空间内执行的软件。然而,本发明的基本原理可以在其中存储器区域被加密和/或以其他方式被保护而免受不想要的访问的其他实现方式上实现。
在所图示的实施例中,TD_模式(TD_MODE)字段被包括在与TD宾客机1604相关联的PASID上下文表中。图17图示出PASID表1710内的包括TD模式字段1721的512比特PASID表条目1711的一个实施例。还示出了第一级页表指针字段1722、第二级页表指针字段1723和PASID粒度转译类型(PASID granular translation type,PGTT)字段1724。通过较低上下文表1705中的条目(例如,(设备:功能(Device:Function)标识符))指向PASID表条目1711,该较低上下文表由根表1700中的条目(例如,总线标识符)标识。
在一个实施例中,IOMMU 1611使用TD模式字段1721来确定来自PCIe设备1505的、包含虚拟地址的存储器访问请求是否与有效信任域中的应用(例如,诸如TD宾客机1604)相关联。如果TD模式字段1721的值指示PASID与TD 1604中的应用相关联,则IOMMU 1611使用(除了第一级页表走查之外的)新的控制路径来触发GVA->HPA转译过程。
另外,该实施例包括被称为地址转译队列(AT队列)1650的存储器后备的队列对,其包括AT请求队列1650A和AT响应队列1650B,这些队列被用于IOMMU 1611将地址转译请求传输到VMM 1675。在一个实施例中,VMM 1675用AT队列对1650A-B的物理地址对IOMMU 1611中的新的寄存器进行编程。
在一个实施例中,主机安全仲裁模式调用功能(secure arbitration mode CALL,SEAMCALL)的修改版本被使用,该修改版本在本文中被称为TDH.TSLVA。在图16的事务序列中,TDH.TSLVA功能的实例在事务3中被示出,其中相对应的返回功能被示出为VMM 1675与TDX模块1670之间的事务5。该功能可以被VMM 1675用来向TDX模块1670通知每个地址转译请求。TDX模块1670执行验证操作,并且当请求被验证时,TD管理模块1670切换到进入宾客机侧TD 1604的非根TDX模式(事务4)。
还提供了新的TD宾客机1604TDCALL功能,其被称为TDG.TSLVA。该功能被宾客机TDOS1615用来将由PASID标识的地址空间内的虚拟地址转译成物理地址。经转译的物理地址作为TDH.TSLVA功能的结果被返回到VMM 1675。
在一个实施例中,宾客机应用在初始化期间通过调用宾客机1604中的IOMMU API将设备1505绑定到PASID。VMM 1675代表宾客机1604捕捉模拟的IOMMU操作并初始化PASID上下文表1710。VMM 1675看到宾客机是可信域1604,并且因此,主机IOMMU驱动器对PASID上下文表条目1711中的TD_模式字段1721进行编程以指示该PASID在TD模式下工作。在一个实施例中,PASID上下文表条目1711中的PASID粒度转译类型(PGTT)字段1724被设置为嵌套转译模式,但是第一级页表指针(FLPT_PTR)1722因为其对于SVM不是必需的而被归零。IOMMU驱动器将PASID映射到可信域标识符(trusted domain identifier,TDID)。
在图18中图示根据本发明的一个实施例的详细事务序列。该事务过程可以在本文中所描述的处理器和系统体系结构的上下文内被实现,但是也可以在各种其他体系结构中被实现。
在事务序列之前,信任域1604中的宾客机应用为直接存储器访问操作准备存储器,从而相应地在物理存储器的共享存储器区域中创建空间,并且填充用于宾客机虚拟到宾客机物理地址转译(GVA->GPA)的处于信任域中的页表、以及用于宾客机物理到主机物理地址转译(GPA->HPA)的共享扩展页表。
在1801处,隶属于信任域的PCIe设备1505发送包含PASID和宾客机虚拟地址(GVA)的DMA请求。IOMMU 1611确定IOTLB 1615不包括匹配该DMA请求的条目,并且因此必须执行地址转译操作。
在1802处,IOMMU 1611使用PASID来定位相对应的PASID上下文表条目。根据PASID上下文表条目,IOMMU 1611(例如,基于TD模式字段1721)确定该PASID在信任域模式下工作。代替于遍历页表,IOMMU 1611通过AT请求队列1650向VMM 1675中的IOMMU驱动器传送地址转译请求,从而既提供PASID又提供GVA,同时还向主机IOMMU软件发送中断。
VMM 1675中的IOMMU驱动器从AT请求队列1650接收转译请求并且提取PASID和要被转译的GVA。它根据PASID到TDID映射定位相对应的TD,然后经由与TDX模块1670的事务1803调用TDH.TSLVA命令(例如,SEAMCALL+TDH.TSLVA+PASID+GVA)。
TDX模块1670验证命令并且切换到TDX非根模式(宾客机模式),从而执行VM进入1804以向宾客机TD 1604内的OS通知转译请求。宾客机TD 1604中的OS在接收到转译请求后,在1805处证实地址并且执行许可检查以确定是否地址转译是否可被执行。如果地址在有效范围内并且其他许可指示操作可以进行,则宾客机TD 1604的OS在1806处执行TDG.TSLVA功能(例如,TDCALL+TDG.TSLVA+GVA+PGD),使得GVA到HPA的转译经由现有处理器TLB或TD内的嵌套页表走查被执行,并且该宾客机TD 1604的OS使用经转译的HPA直接返回到VMX根模式。在一个实施例中,宾客机TD 1604中的OS负责使用PASID来定位进程/PASID的页全局目录,该页全局目录是第一级页表的条目(mm_struct.pgd(mm_结构.pgd))。在该实施例中,不使得经转译的HPA对于OS可见。
在1806处,TDX模块1670接收经转译的HPA并且在1807处经由TDH.TSLVA功能的返回代码将HPA传递到VMM 1675。宾客机侧的任何转译错误也可以从SEAMCALL指令返回代码被捕获。
在1808处,VMM 1675中的主机IOMMU驱动器通过AT响应队列1650B将转译结果传送回到IOMMU 1611。如果转译是成功的,则IOMMU 1611在1809处将转译缓存推送到IOTLB1615中。在存储器/缓存失效前,同一缓存条目可在瞄准同一缓冲器的后续DMA操作中重复使用。
在1810处,IOMMU使用经转译的HPA执行对共享存储器的存储器访问(例如,发出读取/写入),并且DMA响应在1811处被返回到PCIe设备。
从安全角度来看,VMM 1675和IOMMU 1611仅负责向信任域1604调遣转译请求,而不能直接访问TD私有存储器。最终转译在TD 1604内部被处置,并且在转译之前对虚拟地址进行有效性检查。此外,VMM 1675通过安全SEAMCALL接口和TDX模块1670向TD 1604调遣转译请求。因此,来自设备1505或VMM 1675的恶意攻击可以被阻塞。
本发明的上述实施例提供了针对与信任域环境中的当前IOMMU操作相关联的限制的解决方案。共享虚拟存储器(SVM)是(例如,通过应用中零复制和地址转译迁移)提高IO性能以及易用性的重要的IOMMU特征,并且现在可以与信任域结合使用。
在前述的说明书中,已经参考本发明的特定示例性实施例描述了本发明的实施例。然而,将显而易见的是,可对这些实施例作出各种修改和改变,而不背离如在所附权利要求中阐述的本发明的更宽泛的精神和范围。因此,说明书和附图应被认为是说明性而非限制性意义的。
示例
以下是本发明的不同实施例的示例实现方式。
示例1。一种处理器,包括:多个核心;存储器控制器,该存储器控制器耦合到多个核心,用于使用与第一宾客机的第一信任域相关联的第一密钥在系统存储器中建立第一私有存储器区域;输入/输出存储器管理单元(IOMMU),该IOMMU耦合到存储器控制器,该IOMMU用于接收由输入/输出(IO)设备发出的存储器访问请求,该存储器访问请求包括第一地址空间标识符和宾客机虚拟地址(GVA),该IOMMU用于使用至少第一地址空间标识符来访问第一转译表中的条目以确定存储器访问请求针对IOMMU不能直接访问的第一私有存储器区域,该IOMMU用于生成与存储器访问请求相关联的地址转译请求,其中基于改地址转译请求,在多个核心中的一个或多个核心上运行的虚拟机监视器(VMM)要通过利用信任域管理器引起到第一信任域中的安全进入来发起安全事务序列,以基于地址空间标识符将GVA转译为物理地址,该IOMMU用于从VMM接收该物理地址并且用于代表IO设备来使用该物理地址执行所请求的存储器访问。
示例2。如示例1的处理器,其中,IOMMU进一步包括:IO转译后备缓冲器(IOTLB),该IOTLB用于存储GVA与物理地址之间的映射。
示例3。如示例1的处理器,其中,多个核心中的至少第一核心包括:一个或多个安全范围寄存器,该一个或多个安全范围寄存器用于指示保留的存储器空间;其中,第一核心用于在保留的存储器空间内执行信任域管理器并且用于防止由在保留的存储器空间之外执行的任何软件访问该保留的存储器空间。
示例4。如示例1的处理器,其中,VMM用于通过使多个核心中的至少第一核心执行安全仲裁模式调用指令以调用信任域管理器引起到第一信任域中的安全进入来发起安全事务,安全仲裁模式调用指令用于指示地址空间标识符和GVA。
示例5。如示例4的处理器,其中,信任域管理器用于在引起到第一信任域中的安全进入之前验证安全仲裁模式调用指令,该安全进入包括第一信任域的第一宾客机内的指令的宾客机模式执行。
示例6。如示例5的处理器,其中,第一宾客机用于通过定位第一核心的转译后备缓冲器(TLB)内的条目或者通过第一信任域内的嵌套页表走查的执行、基于GVA来确定物理地址。
示例7。如示例6的处理器,其中,第一宾客机用于经由信任域管理器向VMM提供物理地址。
示例8。如示例7的处理器,其中,IOMMU用于将地址转译请求存储在地址转译队列中,并且其中,VMM中的IOMMU主机驱动器用于从地址转译队列读取地址转译请求并且在要由IOMMU访问的地址转译响应队列中提供包括物理地址的地址转译响应。
示例9。如示例6的处理器,其中,物理地址包括主机物理地址(HPA),并且其中,嵌套页表走查包括用于从宾客机虚拟地址确定宾客机物理地址(GPA)的第一阶段查找和用于从GPA确定HPA的第二阶段查找。
示例10。一种方法,包括:由多个核心执行指令,该多个核心用于经由存储器控制器访问存储器;使用与第一宾客机的第一信任域相关联的第一密钥在系统存储器中建立第一私有存储器区域;在耦合到存储器控制器的输入/输出存储器管理单元(IOMMU)处接收由输入/输出(IO)设备发出的存储器访问请求,该存储器访问请求包括第一地址空间标识符和宾客机虚拟地址(GVA);由IOMMU使用至少第一地址空间标识符来访问第一转译表中的条目,以确定存储器访问请求针对IOMMU不能直接访问的第一私有存储器区域;由IOMMU生成与存储器访问请求相关联的地址转译请求,其中基于该地址转译请求,在多个核心中的一个或多个核心上运行的虚拟机监视器(VMM)要通过利用信任域管理器引起到第一信任域中安全进入来发起安全事务序列,以基于地址空间标识符将GVA转译为物理地址;由IOMMU从VMM接收物理地址并且代表IO设备来使用该物理地址执行所请求的存储器访问。
示例11。如示例10的方法,进一步包括:将GVA与物理地址之间的映射存储在IO转译后备缓冲器(IOTLB)中。
示例12。如示例10的方法,进一步包括:指示多个核心中的至少第一核心的一个或多个安全范围寄存器中的保留的存储器空间;由第一核心在保留的存储器空间内执行信任域管理器并且防止由在保留的存储器空间之外执行的任何软件访问该保留的存储器空间。
示例13。如示例10的方法,安全事务是通过使多个核心中的至少第一核心执行安全仲裁模式调用指令以调用信任域管理器引起到第一信任域中的安全进入来发起的,安全仲裁模式调用指令指示地址空间标识符和GVA。
示例14。如示例13的方法,进一步包括:由信任域管理器在引起到第一信任域中的安全进入之前验证安全仲裁模式调用指令,该安全进入包括第一信任域的第一宾客机内的指令的宾客机模式执行。
示例15。如示例14的方法,其中,第一宾客机用于通过定位第一核心的转译后备缓冲器(TLB)内的条目或者通过第一信任域内的嵌套页表走查的执行、基于GVA来确定物理地址。
示例16。如示例15的方法,其中,第一宾客机用于经由信任域管理器向VMM提供物理地址。
示例17。如示例16的方法,其中,IOMMU用于将地址转译请求存储在地址转译队列中,并且其中VMM中的IOMMU主机驱动器用于从地址转译队列读取地址转译请求并且在要由IOMMU访问的地址转译响应队列中提供包括物理地址的地址转译响应。
示例18。如示例15的方法,其中,物理地址包括主机物理地址(HPA),并且其中嵌套页表走查包括用于从宾客机虚拟地址确定宾客机物理地址(GPA)的第一阶段查找和用于从GPA确定HPA的第二阶段查找。
示例19。一种机器可读介质,该机器可读介质具有在其上执行的程序代码,该程序代码当由机器执行时,使机器执行以下操作:使用与第一宾客机的第一信任域相关联的第一密钥在系统存储器中建立第一私有存储器区域;在耦合到存储器控制器的输入/输出存储器管理单元(IOMMU)处接收由输入/输出(IO)设备发出的存储器访问请求,该存储器访问请求包括第一地址空间标识符和宾客机虚拟地址(GVA);由IOMMU使用至少第一地址空间标识符来访问第一转译表中的条目,以确定存储器访问请求针对IOMMU不能直接访问的第一私有存储器区域;由IOMMU生成与存储器访问请求相关联的地址转译请求,其中基于该地址转译请求,在多个核心中的一个或多个核心上运行的虚拟机监视器(VMM)要通过利用信任域管理器引起到第一信任域中的安全进入来发起安全事务序列,以基于地址空间标识符将GVA转译为物理地址;由IOMMU从VMM接收物理地址并且代表IO设备来使用该物理地址执行所请求的存储器访问。
示例20。如示例19的机器可读介质,进一步包括用于使机器执行以下操作的程序代码:将GVA与物理地址之间的映射存储在IO转译后备缓冲器(IOTLB)中。
示例21。如示例19的机器可读介质,进一步包括用于使机器执行以下操作的程序代码:指示多个核心中的至少第一核心的一个或多个安全范围寄存器中的保留的存储器空间;由第一核心在保留的存储器空间内执行信任域管理器并且防止由在保留的存储器空间之外执行的任何软件访问该保留的存储器空间。
示例22。如示例19的机器可读介质,安全事务是通过使多个核心中的至少第一核心执行安全仲裁模式调用指令以调用信任域管理器引起到第一信任域中的安全进入来发起的,安全仲裁模式调用指令用于指示地址空间标识符和GVA。
示例23。如示例22的机器可读介质,进一步包括用于使机器执行以下操作的程序代码:由信任域管理器在引起到第一信任域中的安全进入之前验证安全仲裁模式调用指令,该安全进入包括第一信任域的第一宾客机内的指令的宾客机模式执行。
示例24。如示例23的机器可读介质,其中,第一宾客机用于通过定位第一核心的转译后备缓冲器(TLB)内的条目或者通过第一信任域内的嵌套页表走查的执行、基于GVA来确定物理地址。
示例25。如示例24的机器可读介质,其中,第一宾客机用于经由信任域管理器向VMM提供物理地址。
示例26。如示例25的机器可读介质,其中,IOMMU用于将地址转译请求存储在地址转译队列中,并且其中VMM中的IOMMU主机驱动器用于从地址转译队列读取地址转译请求并且在要由IOMMU访问的地址转译响应队列中提供包括物理地址的地址转译响应。
示例27。如示例24的机器可读介质,其中,物理地址包括主机物理地址(HPA),并且其中嵌套页表走查包括用于从宾客机虚拟地址确定宾客机物理地址(GPA)的第一阶段查找和用于从GPA确定HPA的第二阶段查找。
本发明的实施例可包括上文已经描述的各步骤。这些步骤可以被具体化为机器可执行指令,这些机器可执行指令可以用于使通用或专用处理器执行这些步骤。替代地,这些步骤可由包含用于执行这些步骤的硬接线逻辑的特定硬件组件来执行,或者由经编程的计算机组件和定制硬件组件的任何组合来执行。
如本文中所描述,指令可以指代诸如专用集成电路(ASIC)之类的硬件的特定配置,该专用集成电路被配置成用于执行某些操作或者具有预定功能或存储在被具体化在非暂态计算机可读介质中的存储器中的软件指令。由此,附图中示出的技术可以使用存储在一个或多个电子设备(例如,终端站、网络元件等)上并在该一个或多个电子设备上执行的代码和数据来实现。此类电子设备使用计算机机器可读介质(在内部和/或通过网络与其他电子设备)存储和传送代码和数据,计算机机器可读介质诸如非暂态计算机机器可读存储介质(例如,磁盘;光盘;随机存取存储器;只读存储器;闪存设备;相变存储器)以及暂态计算机机器可读通信介质(例如,电、光、声或其他形式的传播信号——诸如,载波、红外信号、数字信号等)。此外,此类电子设备典型地包括耦合到一个或多个其他组件(诸如,一个或多个存储设备(非暂态机器可读存储介质)、用户输入/输出设备(例如,键盘、触摸屏和/或显示器)、以及网络连接)的一个或多个处理器的集合。处理器的集合与其他组件的耦合典型地通过一个或多个总线和桥接器(也被称为总线控制器)。承载网络通信量的存储设备和信号分别表示一个或多个机器可读存储介质和机器可读通信介质。由此,给定电子设备的存储设备典型地存储用于在该电子设备的一个或多个处理器的集合上执行的代码和/或数据。当然,可以使用软件、固件、和/或硬件的不同组合来实现本发明的实施例的一个或多个部分。贯穿此具体实施方式,出于解释的目的,阐述了众多特定细节以便提供对本发明的透彻理解。然而,对于本领域的技术人员而言将显而易见的是,可以在没有这些特定细节中的一些细节的情况下实现本发明。在某些实例中,未详细地描述公知结构和功能以避免使本发明的主题模糊。因此,本发明的范围和精神应当根据所附权利要求来判定。

Claims (27)

1.一种处理器,包括:
多个核心;
存储器控制器,所述存储器控制器耦合到所述多个核心,用于使用与第一宾客机的第一信任域相关联的第一密钥在系统存储器中建立第一私有存储器区域;
输入/输出存储器管理单元(IOMMU),所述IOMMU耦合到所述存储器控制器,所述IOMMU用于接收由输入/输出(IO)设备发出的存储器访问请求,所述存储器访问请求包括第一地址空间标识符和宾客机虚拟地址(GVA),所述IOMMU用于使用至少所述第一地址空间标识符来访问第一转译表中的条目,以确定所述存储器访问请求针对所述IOMMU不能直接访问的所述第一私有存储器区域,
所述IOMMU用于生成与所述存储器访问请求相关联的地址转译请求,其中基于所述地址转译请求,在所述多个核心中的一个或多个核心上运行的虚拟机监视器(VMM)要通过利用信任域管理器引起到所述第一信任域中的安全进入来发起安全事务序列,以基于所述地址空间标识符将所述GVA转译为物理地址,
所述IOMMU用于从所述VMM接收所述物理地址并且用于代表所述IO设备来使用所述物理地址执行所请求的存储器访问。
2.如权利要求1所述的处理器,其中,所述IOMMU进一步包括:
IO转译后备缓冲器(IOTLB),所述IOTLB用于存储所述GVA与所述物理地址之间的映射。
3.如权利要求1所述的处理器,其中,所述多个核心中的至少第一核心包括:
一个或多个安全范围寄存器,所述一个或多个安全范围寄存器用于指示保留的存储器空间;
其中,所述第一核心用于在所述保留的存储器空间内执行所述信任域管理器,并且用于防止在所述保留的存储器空间之外执行的任何软件访问所述保留的存储器空间。
4.如权利要求1所述的处理器,其中,所述VMM通过使所述多个核心中的至少第一核心执行安全仲裁模式调用指令以调用所述信任域管理器引起到所述第一安全域中的所述安全进入来发起安全事务,所述安全仲裁模式调用指令用于指示所述地址空间标识符和所述GVA。
5.如权利要求4所述的处理器,其中,所述信任域管理器用于在引起到所述第一信任域中的所述安全进入之前验证所述安全仲裁模式调用指令,所述安全进入包括所述第一信任域的第一宾客机内的指令的宾客机模式执行。
6.如权利要求5所述的处理器,其中,所述第一宾客机用于通过定位所述第一核心的转译后备缓冲器(TLB)内的条目或者通过所述第一信任域内的嵌套页表走查的执行、基于所述GVA来确定所述物理地址。
7.如权利要求6所述的处理器,其中,所述第一宾客机用于经由所述信任域管理器向所述VMM提供所述物理地址。
8.如权利要求7所述的处理器,其中,所述IOMMU用于将所述地址转译请求存储在地址转译队列中,并且其中,所述VMM中的IOMMU主机驱动器用于从所述地址转译队列读取所述地址转译请求并且在要由所述IOMMU访问的地址转译响应队列中提供包括所述物理地址的地址转译响应。
9.如权利要求6所述的处理器,其中,所述物理地址包括主机物理地址(HPA),并且其中,所述嵌套页表走查包括用于从所述宾客机虚拟地址确定宾客机物理地址(GPA)的第一阶段查找和用于从所述GPA确定所述HPA的第二阶段查找。
10.一种方法,包括:
由多个核心执行指令,所述多个核心用于经由存储器控制器来访问存储器;
使用与第一宾客机的第一信任域相关联的第一密钥在系统存储器中建立第一私有存储器区域;
在耦合到所述存储器控制器的输入/输出存储器管理单元(IOMMU)处接收由输入/输出(IO)设备发出的存储器访问请求,所述存储器访问请求包括第一地址空间标识符和宾客机虚拟地址(GVA)
由所述IOMMU使用至少所述第一地址空间标识符来访问第一转译表中的条目,以确定所述存储器访问请求针对所述IOMMU不能直接访问的所述第一私有存储器区域,
由所述IOMMU生成与所述存储器访问请求相关联的地址转译请求,
其中,基于所述地址转译请求,在所述多个核心中的一个或多个核心上运行的虚拟机监视器(VMM)要通过利用信任域管理器引起到所述第一信任域中的安全进入来发起安全事务序列,以基于所述地址空间标识符将所述GVA转译为物理地址,
由所述IOMMU从所述VMM接收所述物理地址并且代表所述IO设备来使用所述物理地址执行所请求的存储器访问。
11.如权利要求10所述的方法,进一步包括:
将所述GVA与所述物理地址之间的映射存储在IO转译后备缓冲器(IOTLB)中。
12.如权利要求10所述的方法,进一步包括:
指示所述多个核心中的至少第一核心的一个或多个安全范围寄存器中的保留的存储器空间;
由所述第一核心在所述保留的存储器空间内执行所述信任域管理器,并且防止在所述保留的存储器空间之外执行的任何软件访问所述保留的存储器空间。
13.如权利要求10所述的方法,安全事务是通过使所述多个核心中的至少第一核心执行安全仲裁模式调用指令以调用所述信任域管理器引起到所述第一信任域中的所述安全进入来发起的,所述安全仲裁模式调用指令用于指示所述地址空间标识符和所述GVA。
14.如权利要求13所述的方法,进一步包括:
由所述信任域管理器在引起到所述第一信任域中的所述安全进入之前验证所述安全仲裁模式调用指令,所述安全进入包括所述第一信任域的第一宾客机内的指令的宾客机模式执行。
15.如权利要求14所述的方法,其中,所述第一宾客机用于通过定位所述第一核心的转译后备缓冲器(TLB)内的条目或者通过所述第一信任域内的嵌套页表走查的执行、基于所述GVA来确定所述物理地址。
16.如权利要求15所述的方法,其中,所述第一宾客机用于经由所述信任域管理器向所述VMM提供所述物理地址。
17.如权利要求16所述的方法,其中,所述IOMMU用于将所述地址转译请求存储在地址转译队列中,并且其中,所述VMM中的IOMMU主机驱动器用于从所述地址转译队列读取所述地址转译请求并且在要由所述IOMMU访问的地址转译响应队列中提供包括所述物理地址的地址转译响应。
18.如权利要求15所述的方法,其中,所述物理地址包括主机物理地址(HPA),并且其中,所述嵌套页表走查包括用于从所述宾客机虚拟地址确定宾客机物理地址(GPA)的第一阶段查找和用于从所述GPA确定所述HPA的第二阶段查找。
19.一种机器可读介质,所述机器可读介质具有在其上执行的程序代码,所述程序代码当由机器执行时,使所述机器执行以下操作:
使用与第一宾客机的第一信任域相关联的第一密钥在系统存储器中建立第一私有存储器区域;
在耦合到存储器控制器的输入/输出存储器管理单元(IOMMU)处接收由输入/输出(IO)设备发出的存储器访问请求,所述存储器访问请求包括第一地址空间标识符和宾客机虚拟地址(GVA)
由所述IOMMU使用至少所述第一地址空间标识符来访问第一转译表中的条目,以确定所述存储器访问请求针对所述IOMMU不能直接访问的所述第一私有存储器区域,
由所述IOMMU生成与所述存储器访问请求相关联的地址转译请求,
其中基于所述地址转译请求,在所述多个核心中的一个或多个核心上运行的虚拟机监视器(VMM)要通过利用信任域管理器引起到所述第一信任域中的安全进入来发起安全事务序列,以基于所述地址空间标识符将所述GVA转译为物理地址,
由所述IOMMU从所述VMM接收所述物理地址并且代表所述IO设备来使用所述物理地址执行所请求的存储器访问。
20.如权利要求19所述的机器可读介质,进一步包括使所述机器执行以下操作的程序代码:
将所述GVA与所述物理地址之间的映射存储在IO转译后备缓冲器(IOTLB)中。
21.如权利要求19所述的机器可读介质,进一步包括使所述机器执行以下操作的程序代码:
指示所述多个核心中的至少第一核心的一个或多个安全范围寄存器中的保留的存储器空间;
由所述第一核心在所述保留的存储器空间内执行所述信任域管理器并且防止在所述保留的存储器空间之外执行的任何软件访问所述保留的存储器空间。
22.如权利要求19所述的机器可读介质,安全事务是通过使所述多个核心中的至少第一核心执行安全仲裁模式调用指令以调用所述信任域管理器引起到所述第一信任域中的所述安全进入来发起的,所述安全仲裁模式调用指令用于指示所述地址空间标识符和所述GVA。
23.如权利要求22所述的机器可读介质,进一步包括使所述机器执行以下操作的程序代码:
由所述信任域管理器在引起到所述第一信任域中的所述安全进入之前验证所述安全仲裁模式调用指令,所述安全进入包括所述第一信任域的第一宾客机内的指令的宾客机模式执行。
24.如权利要求23所述的机器可读介质,其中,所述第一宾客机用于通过定位所述第一核心的转译后备缓冲器(TLB)内的条目或者通过所述第一信任域内的嵌套页表走查的执行、基于所述GVA来确定物理地址。
25.如权利要求24所述的机器可读介质,其中,所述第一宾客机用于经由所述信任域管理器向所述VMM提供所述物理地址。
26.如权利要求25所述的机器可读介质,其中,所述IOMMU用于将所述地址转译请求存储在地址转译队列中,并且其中,所述VMM中的IOMMU主机驱动器用于从所述地址转译队列读取所述地址转译请求并且在要由所述IOMMU访问的地址转译响应队列中提供包括所述物理地址的地址转译响应。
27.如权利要求24所述的机器可读介质,其中,所述物理地址包括主机物理地址(HPA),并且其中所述嵌套页表走查包括用于从所述宾客机虚拟地址确定宾客机物理地址(GPA)的第一阶段查找和用于从所述GPA确定所述HPA的第二阶段查找。
CN202180096350.0A 2021-03-26 2021-03-26 用于在可信区中实现共享虚拟存储器的装置和方法 Pending CN117063162A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2021/083178 WO2022198619A1 (en) 2021-03-26 2021-03-26 Apparatus and method to implement shared virtual memory in a trusted zone

Publications (1)

Publication Number Publication Date
CN117063162A true CN117063162A (zh) 2023-11-14

Family

ID=83396251

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180096350.0A Pending CN117063162A (zh) 2021-03-26 2021-03-26 用于在可信区中实现共享虚拟存储器的装置和方法

Country Status (6)

Country Link
US (1) US20240118913A1 (zh)
EP (1) EP4315075A1 (zh)
CN (1) CN117063162A (zh)
NL (1) NL2031072B1 (zh)
TW (1) TW202242658A (zh)
WO (1) WO2022198619A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117311817A (zh) * 2023-11-30 2023-12-29 上海芯联芯智能科技有限公司 一种协处理器控制方法、装置、设备及存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0823162D0 (en) * 2008-12-18 2009-01-28 Solarflare Communications Inc Virtualised Interface Functions
US10761996B2 (en) * 2018-09-28 2020-09-01 Intel Corporation Apparatus and method for secure memory access using 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
US11599621B2 (en) * 2019-03-30 2023-03-07 Intel Corporation Apparatuses, methods, and systems for verification of input-output memory management unit to device attachment
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
US11099878B2 (en) * 2019-06-28 2021-08-24 Intel Corporation Scalable virtual machine operation inside trust domains within the trust domain architecture

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117311817A (zh) * 2023-11-30 2023-12-29 上海芯联芯智能科技有限公司 一种协处理器控制方法、装置、设备及存储介质
CN117311817B (zh) * 2023-11-30 2024-03-08 上海芯联芯智能科技有限公司 一种协处理器控制方法、装置、设备及存储介质

Also Published As

Publication number Publication date
WO2022198619A1 (en) 2022-09-29
US20240118913A1 (en) 2024-04-11
TW202242658A (zh) 2022-11-01
NL2031072A (en) 2022-10-06
NL2031072B1 (en) 2023-06-16
EP4315075A1 (en) 2024-02-07

Similar Documents

Publication Publication Date Title
CN110659244A (zh) 内联编码能力
CN112148425A (zh) 信任域架构内的信任域内部的可缩放虚拟机操作
US20220197995A1 (en) Device, system and method to efficiently update a secure arbitration mode module
US11436342B2 (en) TDX islands with self-contained scope enabling TDX KeyID scaling
EP4020181A1 (en) Instruction support for saving and restoring key information
EP4242900A1 (en) Bypassing memory encryption for non-confidential virtual machines in a computing system
NL2031072B1 (en) Apparatus and method to implement shared virtual memory in a trusted zone
US11656873B2 (en) Shadow stack ISA extensions to support fast return and event delivery (FRED) architecture
EP4020299A1 (en) Memory address bus protection for increased resilience against hardware replay attacks and memory access pattern leakage
EP4020877A1 (en) Isa accessible physical unclonable function
EP4020180A1 (en) Isa accessible physical unclonable function
CN117178256A (zh) 用于在虚拟化环境中管理不受支持的指令集体系结构(isa)特征的装置和方法
US11570010B2 (en) ISA accessible physical unclonable function
US20220197638A1 (en) Generating encrypted capabilities within bounds
US20230315648A1 (en) Circuitry and methods for implementing micro-context based trust domains
EP4156006A1 (en) Isa accessible physical unclonable function
EP4020182A1 (en) Isa accessible physical unclonable function

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