CN115879176A - 存储器辅助的内联加密/解密 - Google Patents
存储器辅助的内联加密/解密 Download PDFInfo
- Publication number
- CN115879176A CN115879176A CN202211129711.XA CN202211129711A CN115879176A CN 115879176 A CN115879176 A CN 115879176A CN 202211129711 A CN202211129711 A CN 202211129711A CN 115879176 A CN115879176 A CN 115879176A
- Authority
- CN
- China
- Prior art keywords
- data structure
- address
- encryption
- lba
- gppa
- 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
Links
- 230000015654 memory Effects 0.000 title abstract description 142
- 238000000034 method Methods 0.000 claims abstract description 30
- 238000006073 displacement reaction Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 11
- 238000007667 floating Methods 0.000 description 11
- 230000004044 response Effects 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000007792 addition Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 238000012005 ligant binding assay Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000000873 masking effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000001066 destructive effect Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- VOXZDWNPVJITMN-ZBRFXRBCSA-N 17β-estradiol Chemical compound OC1=CC=C2[C@H]3CC[C@](C)([C@H](CC4)O)[C@@H]4[C@@H]3CCC2=C1 VOXZDWNPVJITMN-ZBRFXRBCSA-N 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000009966 trimming Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection 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/1425—Protection 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 physical, e.g. cell, word, block
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection 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/145—Protection 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
描述了用于存储器辅助的内联加密/解密的技术。示例包括:加密数据结构引擎,用于向加密/解密引擎提供密钥、数据和微调,其中,该加密数据结构引擎用于:使用地址从密钥数据结构查找数据结构条目读取索引值,该条目包括该索引值和宾客页物理地址(GPPA);基于索引值从密钥数据结构取回条目,该条目包括逻辑块地址(LBA)基址、密钥标识符、以及GPPA序列中的至少一个GPPA;使用GPPA序列中的来自加密数据结构查找数据结构条目的GPPA的位置来生成LBA;以及基于密钥标识符取回密钥,其中,加密引擎用于使用所取回的密钥和所生成的LBA对数据进行加密。
Description
背景技术
非易失性存储器快速(Non-Volatile Memory express,NVMe)设备静态地(即,持久性地)存储数据,并且出于安全性,该数据必须被加密。为了在片上系统(System onChip,“SOC”)中执行加密,在SOC中负责加密的密码学(在本文中也可互换地称为“密码”)控制器需要与NVMe设备有关的多个信息片,包括数据正被存储在的、NVMe设备的LBA(逻辑块地址)。尽管本文中的一些实施例参照NVMe来进行讨论,但实施例不限于NVMe,并且可使用其他类型的非易失性存储器。
附图说明
将参考附图来描述根据本公开的各实施例,其中:
图1示意性地图示用于实现所公开的实施例的计算设备的示例性实施例。
图2示意性地图示根据本公开的示例的示例性系统拓扑。
图3A和图3B图示根据本公开的实施例的、用于以行速度进行的的存储器访问的一个或多个系统体系结构。
图4A示出用于将数据写入到NVMe SSD上的示例性内联(inline)加密。
图4B示出用于将数据写入到NVMe外部的存储器模块上的示例性内联解密过程。
图5图示根据本公开的一个或多个示例的密钥查找表,其中单个密钥ID被使用。
图6图示对加密数据结构查找数据结构和加密数据结构的使用的实施例。
图7图示由密码控制器或加密数据结构引擎执行以执行DRAM辅助的内联加密或解密的方法的实施例。
图8图示示例性系统的实施例。
图9图示可具有多于一个的核心、可具有集成存储器控制器、并且可具有集成图形器件的处理器的实施例的框图。
图10(A)是图示根据本发明的实施例的示例性有序管线和示例性的寄存器重命名、乱序发出/执行管线两者的框图。
图10(B)是图示根据本发明的实施例的要包括在处理器中的有序体系结构核心的示例性实施例和示例性的寄存器重命名、乱序发出/执行体系结构核心两者的框图。
图11图示(一个或多个)执行单元电路的实施例,诸如图10(B)的(一个或多个)执行单元电路。
图12是根据一些实施例的寄存器体系结构的框图。
图13图示指令格式的实施例。
图14图示寻址字段的实施例。
图15图示第一前缀的实施例。
图16(A)-图16(D)图示如何使用第一前缀1301(A)的R、X和B字段的实施例。
图17(A)-图17(B)图示第二前缀的实施例。
图18图示第三前缀的实施例。
图19图示根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
本公开涉及用于存储器辅助的加密/解密的方法、装置、系统和非暂态计算机可读存储介质。
在下列描述中,阐述了众多特定细节以便提供对各实施例的透彻理解。然而,在没有这些特定细节的情况下,也可实施各实施例。在其他实例中,未详细描述公知的方法、过程、组件和电路,以免使特定实施例变得模糊。此外,实施例的各方面可使用各种手段来执行,诸如集成半导体电路(“硬件”)、组织成一个或多个程序的计算机可读指令(“软件”)、或硬件与软件的某种组合。出于本公开的目的,对“逻辑”的引用将意指硬件(诸如,逻辑电路系统或更一般地说,电路系统或电路)、软件、固件或它们的某种组合。
在各实现方式中,与NVMe设备有关的信息可能无法在DMA(直接存储器访问)路径中被传输至主机(或者在本文中可互换地称为“主机驱动器”)或密码控制器。换言之,当驱动器执行DMA操作时,它可能无法向主机发送该信息。用于个人计算机的大多数NVMe驱动器必须使用PCIe(外围组件互连快速(Peripheral Component Interface express)(例如,如由PCI-SIG(PCI特别兴趣小组(PCI Special Interest Group)协议来维护和开发),并且PCIe协议头部不为驱动器发送附加信息提供任何容易的机制。这使得使用NVMe驱动器进行的内联加密的问题非常棘手。如本文中所讨论,内联加密暗示了加密和解密在数据正从驱动器被读取/写入到DRAM或反之亦然时发生。这与后备加密形成对照,在后备加密中,NVMe控制器向存储器写入数据,并且随后某个其他代理从存储器读取明文数据,对其进行加密并将其写回到存储器,或者从存储器读取密文、对其进行解密并向存储器写入明文。结果是,驱动器可能无法提供用于加密的信息。
在一些先前实现方式中,软件必须维护事务和逻辑块地址(logical blockaddress,LBA)表,以实时地生成用于传入事务的微调(tweak)。为了降低存储器等待时间,微调输入被存储在本地SRAM(在硅内部、处理引擎的本地)中。虽然这对于少量的未决DMA事务起作用,但随着未决DMA事务的数量增加,这很快变得富有挑战性。SRAM的使用不是可缩放的,并且随着所需要的SRAM的量增加,解决方案的成本增加。
图1示意性地图示用于实现所公开的实施例的计算设备的示例性实施例。在图1中,计算设备100包括主控集成电路(integrated circuit,“IC”)的计算机平台,诸如SOC,该计算机平台将计算设备100的各个硬件和/或软件组件集成在单个芯片上。如图所示,在一个或多个示例中,计算设备100可以包括任何数量和类型的硬件和/或软件组件,诸如(但不限于)图形处理单元114(“graphics processing unit,GPU”或简称为“图形处理器”)、图形驱动器116(也称为“GPU驱动器”、“图形驱动器逻辑”、“驱动器逻辑”、用户模式驱动器(user-mode driver,UMD)、UMD、用户模式驱动器框架(user-mode driver framework,UMDF)、UMDF或简称为“驱动器”)、中央处理单元112(“central processing unit,CPU”或简称为“应用处理器”)、存储器108、网络设备、驱动器等,以及诸如触摸屏、触摸面板、触摸板、虚拟或常规键盘、虚拟或常规鼠标、端口、连接器等之类的输入/输出(input/output,I/O)源104。计算设备100可以包括用作计算设备100的硬件和/或物理资源与用户之间的接口的操作系统(operating system,OS)106。SOC 100可以可选地与NVM 150通信。可以使用非易失性存储器快速来访问非易失性存储器150,非易失性存储器快速是用于访问高速存储介质的协议。在本文中使用NVMe既引用非易失性存储器(例如,SSD)又引用其通信协议。
应当注意的是,图1图示示例性实施例,并且附加的组件可被包括而不被背离所公开的原理。例如,实施例可以被实现为下列各项中的任何一项或其组合:使用主板互连的一个或多个微芯片或集成电路、硬连线逻辑、由存储器设备存储并由微处理器执行的软件、固件、专用集成电路(application specific integrated circuit,ASIC)和/或现场可编程门阵列(field programmable gate array,FPGA)。作为示例,术语“逻辑”、“模块”、“组件”、“引擎”、和“机制”可包括软件、硬件和/或其组合,诸如固件。附加实施例可使用以下各项来实现:一个或多个存储器芯片、控制器、CPU(中央处理单元)、使用主板互连的微芯片或集成电路、专用集成电路(application specific integrated circuit,ASIC)和/或现场可编程门阵列(field programmable gate array,FPGA)。作为示例,术语“逻辑”可包括软件或硬件和/或软件和硬件的组合。
图2示意性地图示根据本公开的示例的示例性系统拓扑。在一些示例中,图2的CPU210包括PCIe控制器212。在一些示例中,PCIe控制器212包括加密引擎214,但这并非对所有实施例都成立。常规地,PCIe控制器212定义用于连接诸如NVMe之类的高速组件的接口标准。如所示,PCIe控制器212包括用于对入站和出站通信进行加密/解密的加密引擎214。CPU210通过PCIe控制器212来与外围组件(即,NVMe驱动器250)通信。NVMe控制器252充当至NVMe驱动器的门户,并且可包括用于对入站/出站通信进行加密/解密的附加组件(未示出)。CPU 210与NVMe 250之间的通信被认为是内联通信。
用于NVMe驱动器的内联加密引发对于NVMe驱动器独特的挑战。在图2的示例性实施例中,该挑战为NVMe驱动器250在驱动器自身中包括NVMe控制器252。结果是,SOC 202中的内联加密引擎214缺少决定分组中的哪些分组必须被加密/解密所要求的元数据、以及这些分组加密所要求的密钥/微调素材。
常规的存储设备加密方法包括使用微调的AES-XTS标准。在此类方法中,使用逻辑块地址(Logical Block Address,LBA)来生成微调,并且挑战是主机不在直接存储器访问(direct memory access,DMA)路径中从驱动器接收块地址。LBA由驱动器在内部管理。第二个挑战在于,去往驱动器的命令无法被加密,因为这些命令必须被驱动器解析和执行。结果是,SOC中的内联加密(即,加密引擎214)需要对分组进行解析并指出哪些分组是数据分组以及哪些分组是命令包的机制。
如稍后将详细讨论的,存储器201用于存储加密数据结构232,该加密数据结构232通过加密数据结构查找数据结构230而被索引。加密数据结构232用于存储LBA的生成中所使用的信息,该LBA用于被用作AES-XTS的微调。
数据的加密和解密在SOC内部实现。图3A和图3B图示根据本公开的实施例的、用于以行速度的进行的存储器访问的系统体系结构。
具体而言,图3A图示用于如被用于从存储器360读取和向设备302写入的、以行速度的进行的存储器读取过程的系统体系结构。参考图3A,NVMe驱动器302可以与图1和图2中的NVMe驱动器150或250相对应。在一个示例中,NVMe驱动器302包括固态驱动器(solidstate drive,SSD),其正在如由存储器读取操作393表示的那样进行写入操作301。存储器360可以与图1和图2中的存储器108或201相对应。例如,存储器360可包括动态随机存取存储器(Dynamic Random Access Memory,DRAM)。
常规SSD对经互连的闪存芯片的衬底读取和写入数据,这些经互连的闪存芯片被制造在硅中。NVMe SSD已经由于其速度而日益流行。NVMe SSD使用NVMe主机控制器接口规范(NVMe Host Controller Interface Specification,NVMHCIS)(未示出)来访问经由PCIe总线网络(未示出)附接的非易失性存储介质。
再次参考图3A,NVMe驱动器302可要求对存储器360的直接存储器访问(directmemory access,DMA),以便获得数据。为此,NVMe驱动器302向SOC 320发出DMA读取请求310。SOC 320可与图1和图2中的计算设备/SOC 100或SOC 202相对应。DMA读取请求310不需要被加密。
SOC 320被插入在NVMe驱动器302与存储器360之间。存储器360可包括动态随机存取存储器(Dynamic Random Access Memory,DRAM)。SOC 320被示出为具有密码学控制器(密码控制器)322、硬件密钥引擎324、以及输入/输出存储器管理单元(Input/OutputMemory Management Unit,IOMMU)327。硬件密钥引擎从CPU ISA 340(如由软件所编程)或从安全性控制器接收其密钥。
密码控制器322可包括一个或多个处理器电路和组件。在一个或多个示例中,将密码控制器322实现在SOC 320的PCIe控制器212中。例如,密码控制器322可以实现图2中示出的加密引擎214,或者可以是图2中示出的加密引擎214的部分。在一个或多个示例中,密码控制器322包括加密/解密引擎325,该加密/解密引擎325被配置成用于根据密码存储器电路和/或查找表处所存储的指令对数据进行加密或解密。密码控制器322可以可选地包括密钥查找表(Key Lookup Table,KLT)326。KLT 326是如下文进一步所描述的用于存储各种查找表的存储器电路。
密码控制器322可以可选地包括与密码控制器322的处理器电路通信的存储器,该存储器可包括一个或多个静态随机存取存储器(Static Random Access Memory,SRAM)。存储器电路327可存储用于使得密码控制器322中的一个或多个处理器电路(未示出)执行多个期望的任务的一个或多个指令。这些任务可包括例如,接收和存储对数据进行加密或解密所要求的密码学信息,形成数据和/或密钥表,以及与SOC 320外部的组件就经加密或经解密的数据进行通信。一旦被形成,此类表就可被存储在密钥查找表(Key Lookup Table,KLT)326、加密数据结构232、和/或加密数据结构查找数据结构230处。
为简洁起见,在可适用的情况下,以下示例性实施例概括地引用密码控制器322来包括加密/解密引擎325和存储器327。
密码控制器322还包括输入/输出存储器管理单元(Input/Output MemoryManagement Unit,IOMMU)327,该输出/输出存储器管理单元327将支持DMA的I/O总线连接至外部存储器360。在一个或多个示例中,IOMMU将处于SOC 320内部而不在密码控制器322内部。密码控制器将处于IOMMU与存储器360之间。
软件340经由CPU指令集体系结构(Instruction Set Architecture,ISA)342对SOC 320提供接口。ISA 342充当软件340与SOC 320之间的接口。在一个或多个示例中,软件340支持多个加密密钥。软件340可对密钥编程。可能存在四种类型的密钥:(1)硬件生成的,(2)硬件包裹的,(3)明文密钥,以及(4)无加密“密钥”。安全性控制器341被示出为软件340的部分,以包括一个或多个处理器(电路或逻辑处理器)来实现归于软件340的功能。
在另一实施例中,软件340可利用密钥包裹构造344。密钥包裹构造是被设计成用于对密码学素材进行封装(加密)的一类对称加密算法。密钥包裹算法旨在当密钥被存储在不受信任的存储装置中时或当密钥通过不受信任的通信网络被传送时保护密钥。此处,密钥包裹/句柄构造可以可选地被用作SOC 320外部的通信。
在示例性实现方式期间,NVMe驱动器(例如,SSD)302向SOC 320传送读取请求310。读取请求310可以不被加密。在可选实施例中,读取请求310的部分可以被加密。读取请求310包含加密数据结构查找数据结构230索引,其允许密码控制器322(诸如,加密引擎214)标识使用加密数据结构232对所请求的数据的一个或多个加密。当使用NVMe驱动器302与SOC 320之间的PCIe链路时,读取请求310可遵循针对读取请求的PCIe事务层分组(transaction layer packet,TLP)格式,其中,TLP头部可用于使用230和232对LBA微调的生成,以便促进由密码控制器322对所请求的数据的加密。如果读取请求未被加密,则密码控制器322不参与,并且SOC 320经由IOMMU 327将读取请求330中继至存储器360。响应于该请求,存储器360经由IOMMU 327向SOC 320传送读取响应332。
密码控制器322接收读取响应332中的所请求的数据,并根据所公开的实施例对所请求的数据加密。在某些实施例中,响应包括一个或多个数据分组。数据分组一般可包括头部部分和有效载荷部分。分组的有效载荷部分包括可被加密的数据。使用加密密钥对所请求的数据加密。可由软件340提供加密密钥。如所述,SOC与端点的通信可由PCIe协议管理,例如,如根据本文中的示例所描述,PCIe协议允许PCIe端点将高达四个32比特头部附接至TLP分组。PCIe端点具有发送这些头部中的任何附加数据的选择。头部可由NVMe控制器304添加。
在另一实施例中,读取请求310(以及本文中以下所描述的写入请求370)的头部中的地址比特中的一些可用于指示索引。在PCIe上下文中,地址比特可被包括在TLP头部中。读取请求310和写入请求370可以是DMA请求,其可以具有64比特的地址信息。地址信息可以是以下三种信息中的一种:物理地址、宾客物理地址、或IO虚拟地址。数个可用地址比特可用于对具有4K个条目的表进行索引,该表的每一条目具有8字节(即,32K字节表)。
密码控制器322解析并移除该头部信息,并且使用索引查找加密数据结构查找结构230中的条目,并使用来自该查找的信息通过使用加密数据结构232从基址LBA计算实际LBA。
在一个或多个示例中,密码控制器322选择从存储器360读取的所请求的数据以供加密。在示例实现方式中,此种选择基于总线设备功能(BUS DEVICE FUNCTION,BDF),其用于标识一个或多个NVMe驱动器。软件340(其可包括操作系统(operating system,OS)、软件应用、主机驱动器等中的一者或多者)可使用至密码控制器322的软件接口(未示出)来提供NVMe驱动器302的BDF。从存储器360读取的、以用于存储在NMVe驱动器302上数据在密码控制器322将该读取数据传递至NVMe驱动器之前被该密码控制器322加密。从NVMe驱动器302发出的经加密的数据在密码控制器322将其传递至另一设备(例如,传递至存储器360)之前被该密码控制器322解密。在一些实施例中,从其他设备发出的数据可以不被密码控制器加密/解密。
所请求的读取数据是指由主机(例如,软件340)使用命令流请求的数据。命令流被软件340构成并被发送至NVMe驱动器302,并且随后NVMe驱动器302在读取响应332中所提供的TLP前缀中往回发送该命令流(在DMA会话期间)。SOC 320从存储器读取数据,密码控制器对该数据加密,并且经加密的数据312被传输至NVMe驱动器302。NVMe控制器304接收经加密的数据并将其存储在SSD闪存303中。如由SSD写入操作301所指示,经加密的数据312随后被写入到NVMe驱动器302。由于加密在SOC 320完成,因此整个加密操作按内联DMA速度完成,并且没有延迟由于SOC 320外部的组件而被引入。
图3B图示用于以行速度进行的存储器写入过程的系统体系结构。在图3B中,NVMe驱动器302正意图将数据写入到存储器360中。过程开始于NVMe驱动器302发出写入请求370。如由箭头370的划线所图示,写入请求370可包括经加密的数据。由此,在其中NVMe 302中所存储的数据已经要被加密的一个或多个示例中,NVMe控制器304可对要在写入请求370中被传送的有效载荷数据进行加密。
SOC 320从NVMe控制器304接收经加密的写入请求370。写入请求370包括来自NVMe驱动器302的SSD闪存303的经加密的数据。为了促进数据在密码控制器322处的解密,写入请求370包括密钥表索引,并且可选地进一步包括至LBA的偏移。如之前结合读取请求310所描述,当使用NVMe驱动器302与SOC 320之间的PCIe链路时,写入请求370可遵循针对写入请求的PCIe TLP格式,其中TLP头部可用于指示密钥表索引和至LBA的偏移。密码控制器322使用以下各项中的一项或多项对来自写入请求370的经加密的数据进行解密:来自软件340的密钥信息、来自KLT 326的密钥查找表、加密数据结构232、加密数据结构查找数据结构230、以及来自硬件密钥引擎324的硬编码的密码密钥。如由箭头372所图示,写入请求370的经解密的数据随后被传送至存储器360。存储器360随后将数据写入到所分配的存储器槽。在一个或多个示例中,指示存储器360中的、用于写入数据的存储器位置的地址可以在写入请求370的头部中指示。在该示例中,在图3A和图3B中将密钥引擎324指示为SOC 320的部分。密钥引擎324可被实现在密码控制器322内。
图4A示出用于将数据写入到NVMe SSD上的示例性内联加密。如关于图3A所描述,NVMe(SSD)发出读取请求310。这在图4A中被示出为操作401。读取请求310是从NVMe驱动器302(例如,控制器304)被传送至SOC 320的DMA请求。在操作402处,SOC 320接收读取请求310并将向外部存储器360传送读取请求330以请求数据从该存储器360被读取。在操作406处,外部存储器360用包含所请求的数据的读取响应332对读取请求330作出响应。在操作408处,在SOC 320处接收包括(未经加密的)数据的读取响应332。在操作410处,在向NVMe驱动器302传送经加密的数据312之前,SOC的密码控制器322(未示出)使用硬件密钥、密钥索引和其他密码学密钥信息对数据进行加密。读取请求310可包括加密信息,包括密钥表索引并且可选地包括LBA的偏移,以便使得SOC的密码控制器322能够选择(一个或多个)加密密钥并可选地选择加密参数以供进行对来自存储器360的所请求的数据的加密。应当注意,SOC 320和NVMe驱动器302两者可能都无法对要被存储在NVMe驱动器302的闪存中的数据进行解密;相反,数据被存储为经加密的数据。
图4B示出用于将数据写入到NVMe外部的存储器模块上的示例性内联解密过程。如关于图3B所描述,在操作422处,NVMe(SSD)向SOC发出写入请求370。在一个或多个示例中,由NVMe控制器(304,图3B)对写入请求370(其可包含经加密的数据)进行加密。将写入请求370传送至SOC 320。在操作426处,SOC 320在该SOC 320的密码控制器322处对写入请求370中的经加密的数据进行解密。如在操作428中所指示,在写入请求372中将来自写入请求370的经解密的数据传送至存储器。在操作430处,存储器360接收经解密的数据并将其写入到适当的存储器槽。
图5图示根据本公开的一个或多个示例的密钥查找表,其中单个密钥ID被使用。在图5中,NVMe驱动器510被示出为具有NVMe控制器512。如参考图3A和图3B所讨论,密码控制器530可与对事务数据进行加密/解密的密码控制器322相对应。PCIe接口520表示密码控制器530与NVMe驱动器510之间的接口。图5中的密码控制器530可例如使用加密标准AES-XTS-256来进行数据的加密和解密。如由箭头515所图示,指示用于对存储器360的DMA(64比特)读取或写入访问的物理地址的地址数据540由NVMe驱动器515开启。在一个或多个示例中,地址数据540包括密钥查找索引542、LBA偏移544、以及要被读取或写入的数据的物理地址546。地址数据540被包括在读取请求或写入请求中,该读取请求或写入请求经由PCIe接口520被提供至包括密码控制器530的SOC。地址数据540由密码控制器530(也为322,图3A、3B)用来取回用于对数据进行加密/解密的附加信息。KLT 550可被存储在SOC 320处(参见,图3A、图3B中的KLT 326)。数据540中的密钥查找索引542可由密码控制器530(也为322,图3A、图3B)用来从KLT 550取回(用于对数据进行加密的)密钥ID、LBA和文件信息数据。KLT 550的密钥ID可提供用于数据的加密/解密的(一个或多个)密钥(参见密钥表560)。文件信息数据可提供用于生成微调以供进行加密/解密的附加信息。
如所讨论,示例性内联密码引擎对NVMe驱动器的DMA路径上的数据进行加密和解密。此种加密和解密在SOC内部被实现。在一些实施例中,加密使用AES-XTS256标准。AES-XTS256的独特属性在于,它使用两个256比特密钥,其中,第一密钥用于使用AES轮次的加密或解密,并且第二密钥用于微调的生成。
微调可以防范其中使用同一密钥加密的两段明文将得到相同的密文的已知明文攻击。为了防范此类攻击,常规地使用微调,该微调通过用第二密钥对现时数(nonce)加密来生成。随后使用所生成的微调对明文和加密的密文进行异或(XOR),以使得即使用同一密钥加密的两个明文也将由于不同的微调而得到不同的密文。
如上文所讨论,内联加密暗示了加密和解密在数据从驱动器被读取/写入到DRAM或反之亦然时发生。这与后备加密形成对照,在后备加密中,NVMe控制器向存储器写入数据,并且随后某个其他代理从存储器读取明文数据、对其进行加密并将其写回到存储器,或者从存储器读取密文、对其进行解密并向存储器写入明文。结果是,驱动器可能无法提供用于加密的信息。
为了处置该问题,可以使用基于表的方式,并且该基于表的方式允许主机软件对表进行设置,密码控制器随后可以对该表进行查找。此种选项是可行的,然而,由于快速查找的需要,对于密码控制器而言,对表格进行搜索或解析通过分层表格是不切实际的。需要对表的索引,并且该索引需要与事务进行映射。这导致在事务中发送索引的问题。该问题可以使用未使用的地址比特来解决。然而,对于需要其全部地址比特的平台而言,尤其在需要使用所有的地址比特来对大量数据进行寻址的云服务提供商的数据中心中,也需要在不使用地址比特的情况下解决该问题。
在一些实施例中,如上文例如结合图3A、图3B所讨论,PCIe端点具有在这些头部中发送附加数据的选择。如下文所详述,可以使用(一个或多个)PCIe头部来发送索引。密码控制器解析并移除该头部信息,并且使用索引来查找用于从基址LBA计算实际LBA的记录/条目。在一个或多个示例中,这允许各实施例支持针对64K个未决条目的索引(使用16比特)以及未决输入/输出(input/output,I/O或IO)事务的20比特(即,1M*4K)或4千兆字节的偏移。取决于实现方式,相比于该示例,表/索引大小可以更大。
此外,由于不需要重新使用地址比特,因此此类实施例可以提供可缩放性。而且,不需要在系统中提供附加的线/引脚来增加地址比特,这会缩减实现方式成本和速需要的占用空间。因此,一些实施例通过允许修改以取决于实现方式而发送更多的比特来提供更多的灵活性。
为此,一些实施例涉及使用一个或多个PCIe扩展在NVMe驱动器上实施内联加密的技术。在示例中,从主机(例如,主机软件340)向NVMe驱动器提供对密钥表的索引,并且NVMe驱动器随后在DMA(或如PCIe之类的其他存储器访问)请求中将要被用来进行加密/解密的密钥的密钥表索引连同例如PCIe TLP(事务层分组)前缀中的偏移值一起传输。
一般而言,NVMe命令包含命令代码和参数。图5示出针对与读取操作或写入操作相关联的NVMe命令的样本信息,其可用于一个或多个示例。操作码或操作代码502指示命令是读取命令还是写入命令,而PRP(物理区域页)条目(或页)504提供实际数据的宾客物理地址。如所示,在NVMe命令中可以保留32比特以用于32比特的标签(在示例中,最大值),该标签连同命令一起被软件发送。软件340填充标签506中的32比特索引(以及任何其他信息(如果需要)),并且命令的其余部分保持不变。尽管本文中的一些实施例参考32比特标签来讨论,但取决于系统能力,也可使用其他大小的标签。在一些实施例中,NVMe命令是PCIe事务层分组(Transaction Layer Packet,TLP)(其作为TLP的数据)的部分。
图6图示对加密数据结构查找数据结构和加密数据结构的使用的实施例。具体而言,这图示出一些实施例中的加密数据结构查找数据结构232和加密数据结构230。
加密数据结构查找数据结构232包括一个或多个条目。每个条目包括行索引607(示出为比特63:52)、宾客页物理地址(Guest Page Physical Address,GPPA)609(示出为比特51:12),并在一些实例中包括未使用的比特(示出为比特11:0)。行索引607提供指向加密数据结构230中的特定条目的指针的至少部分。
加密数据结构230存储针对每一条目的基址LBA、密钥ID、以及一个或多个GPPA。密钥ID指向密钥存储装置601中的密钥603。密钥存储装置601可以处于管芯上、处于被隔绝的存储器中,等等。典型地,加密数据结构230处于存储器201中的隔绝存储器中,如仅可由密码控制器322读取并可由软件写入一样。它可以使用范围寄存器或IOMMU以这种方式被配置。该存储器由BIOS分配并由OS向其写入。
在加密数据结构引擎610上、在编排器601(例如,固件例程、有限状态机等)的引导之下,接收具有GPA 605的TLP和/或NVMe命令使得TLP处理程序611通过使用来自GPA 605的索引比特来访问加密数据结构查找数据结构232。例如,GPA由图5的PRP条目1提供。条目通过由GPA 605提供的较高阶比特来索引。这些GPA 605比特被称为索引比特(INDEX_BITS(索引_比特)),这是因为其提供对加密数据结构查找数据结构232的行(或条目)索引。注意,在该图示中,GPA 605的比特63:52是INDEX_BITS。
行索引607被用于使用访问电路614来访问加密数据结构230中的特定条目(行)。在该示例中,基于行索引值来访问第二条目。注意,加密数据结构查找数据结构232中的行包括GPPA1的GPPA值。该行被返回,并且包括基址LBA、密钥ID和GPPA。
密钥ID用于访问密钥存储装置601中的密钥603。加密数据结构230的行中的GPPA1的位置以及基址LBA可用于LBA的生成,该LBA用于被加密/解密引擎325用作微调615以使用所访问的密钥对来自TLP 600的数据616进行加密。随后将经加密的数据发送至存储装置620。
在该图示中,在索引空间中存在12个比特,从而得到加密数据结构查找数据结构232中的4K个条目。这可以扩展至24个比特(0-11),从而得到16M个条目。取决于硬件的读取粒度,加密数据结构230中的条目的大小(LINE_SIZE(行_大小))可以增加或减小。而且,可以通过在TLP头部中添加附加的索引比特(作为地址中的索引的附加或者代替于地址中的索引)来增加加密数据结构230的大小。结果是,加密数据结构230的大小在体系结构上是不受限的,并且仅受系统中可用的存储器的量限制。例如,如果体系结构支持128B存储器读取,则LINE_SIZE可以增加至128字节。取8字节用于头部,该头部包含用于标识与行相关联的密钥的KEY_ID(密钥_ID)、以及指向BASE_LBA(基址_LBA)的其余部分。
在一些实施例中,LINE_SIZE、索引比特的数量、BLOCK_SIZE(块_大小)、以及加密数据结构查找数据结构232的大小中的一者或多者是可配置的。例如,在一些实施例中,由软件调用PCONFIG指令来配置平台特征。PCONFIG支持多个叶,并且叶函数通过在一个或多个寄存器中设置适当的叶值来调用。叶将允许主机软件配置这些参数。另外,该页将仅可从环0访问,并且将具有VMEXIT(VM退出)控制。这将允许VMM针对所有VM进行配置(如果需要)。
此种方式的优势在于,它不依赖于昂贵的SRAM,由此允许解决方案是可缩放的并降低实现方式的成本。另外,此种实现方式可以缩放至具有高未决DMA传输要求的服务器以及具有较低此类要求的IOT设备。
图7图示由密码控制器322或加密数据结构引擎610执行以执行DRAM辅助的内联加密或解密的方法的实施例。在701处,接收TLP。TLP包括要加密的数据、PRP GPA等。
在703处,使用TLP的GPA从加密数据结构查找数据结构条目读取索引值。参照图6,加密数据结构查找数据结构232被访问,以得到针对加密数据结构230的索引值。
在一些实施例中,在705处,作出是否要使用加密或解密的确定。例如,编排器616可作出该决策。在一些实施例中,当索引比特为全零时,则加密/解密不被使用。当加密/解密不被使用时,则来自TLP的数据不被加密/解密并且被派遣到存储装置、设备(诸如,CPU核心等),等等。
当加密/解密被使用时,在707处,使用索引值取回加密数据结构(例如,加密数据结构230)的特定条目。条目被返回,并且包括基址LBA、密钥ID、以及一个或多个GPPA。
在709处,使用加密数据结构的所访问的特定条目中的GPPA位置来计算LBA值。要使用的GPPA位置是在被索引的加密数据结构查找数据结构条目中标识的GPPA值。
在一些实施例中,当块大小为4KB时,将GPPA位置乘以块大小以生成中间结果,并且LBA值是将该中间结果与基址LBA相加。注意,4KB是说明性的,并且在一些示例中,块大小是可配置的。在一些实施例中,当块大小为512b时,将GPPA位置乘以块大小*8以生成中间结果。通过取TLP的GPA并与0XFFFF进行“与”(AND)运算随后将该结果移位7(例如,GPA&0xFFFF)>>7)来计算偏移。LBA是偏移乘以512再与中间结果相加(例如,(中间结果)+(偏移*512))。
在713处,使用密钥ID来获取密钥,并且在715处,使用密钥并将所计算的LBA之用作微调输入来对TLP的数据执行AES_XTS加密或解密。
在716处,转发经加密或经解密的数据。
示例性计算机体系结构
下面详细描述示例性计算机体系结构。本领域中已知的用于膝上型电脑、桌面型电脑、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(digital signal processor,DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备、以及大量各种其他电子设备的其他系统设计和配置也是适当的。总之,能够包含本文公开的处理器和/或其他执行逻辑的各种系统或电子设备一般都是适当的。
图8图示了示例性系统的实施例。多处理器系统800是一种点对点互连系统,并包括多个处理器,其中包括经由点到点互连850耦合的第一处理器870和第二处理器880。在一些实施例中,第一处理器870和第二处理器880是同构的。在一些实施例中,第一处理器870和第二处理器880是异构的。
处理器870和880被示为分别包括集成存储器控制器(integrated memorycontroller,IMC)单元电路872和882。处理器870还包括作为其互连控制器单元的部分的点到点(point-to-point,P-P)接口876和878;类似地,第二处理器880包括P-P接口886和888。处理器870、880可以利用点到点(P-P)接口电路878、888经由P-P互连850交换信息。IMC 872和882将处理器870、880耦合到各自的存储器,即存储器832和存储器834,这些存储器可以是在本地附接到各个处理器的主存储器的一部分。
处理器870、880可以各自利用点到点接口电路876、894、886、898,经由各个P-P互连852、854来与芯片组890交换信息。芯片组890可以可选地经由高性能接口892与协处理器838交换信息。在一些实施例中,协处理器838是专用处理器,例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享缓存(未示出)可以被包括在任一处理器870、880中,或者在两个处理器之外但经由P-P互连与这些处理器相连接,从而使得:如果一处理器被置于低功率模式,任一个或两个处理器的本地缓存信息也可以被存储在该共享缓存中。
芯片组890可以经由接口896耦合到第一互连816。在一些实施例中,第一互连816可以是外围组件互连(Peripheral Component Interconnect,PCI)互连,或者是诸如PCI快速(PCI Express)互连或者另一I/O互连之类的互连。在一些实施例中,这些互连中的一个耦合到功率控制单元(power control unit,PCU)817,PCU 817可以包括电路、软件和/或固件来执行关于处理器870、880和/或协处理器838的功率管理操作。PCU 817向电压调节器提供控制信息,以使得电压调节器生成适当的调节电压。PCU 817还提供控制信息以控制所生成的操作电压。在各实施例中,PCU 817可以包括各种功率管理逻辑单元(电路)来执行基于硬件的功率管理。这种功率管理可以是完全由处理器控制的(例如,由各种处理器硬件控制,并且可以由工作负载和/或功率约束、热约束或其他处理器约束所触发),和/或功率管理可以响应于外部源而被执行(例如平台或功率管理源或系统软件)。
PCU 817被图示为作为与处理器870和/或处理器880分开的逻辑而存在。在其他情况下,PCU 817可以在处理器870或880的核心(未示出)中给定的一个或多个核心上执行。在一些情况下,PCU 817可以被实现为微控制器(专用的或通用的)或者其他控制逻辑,其被配置为执行其自己的专用功率管理代码(有时称为P代码)。在另外的其他实施例中,PCU 817要执行的功率管理操作可以被实现在处理器外部,例如借由单独的功率管理集成电路(power management integrated circuit,PMIC)或者在处理器外部的另一组件来实现。在另外的其他实施例中,PCU 817要执行的功率管理操作可被实现在BIOS或其他系统软件内。
各种I/O设备814以及互连(总线)桥818可以耦合到第一互连816,互连(总线)桥818将第一互连816耦合到第二互连820。在一些实施例中,一个或多个额外的处理器815被耦合到第一互连816,例如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如图形加速器或数字信号处理(digital signal processing,DSP)单元)、现场可编程门阵列(fieldprogrammable gate array,FPGA)、或者任何其他处理器。在一些实施例中,第二互连820可以是低引脚数(low pin count,LPC)互连。各种设备可以耦合到第二互连820,这些设备例如包括键盘和/或鼠标822、通信设备827、以及存储单元电路828。存储单元电路828可以是盘驱动器或者其他大容量存储设备,其在一些实施例中可包括指令/代码和数据830。另外,音频I/O 824可以耦合到第二互连820。注意,除了上述的点到点体系结构以外其他体系结构也是可能的。例如,诸如多处理器系统800之类的系统可以实现多点分支(multi-drop)互连或者其他这种体系结构,而不是点到点体系结构。
示例性核心体系结构、处理器和计算机体系结构
处理器核心可以按不同的方式、为了不同的目的、在不同的处理器中实现。例如,这些核心的实现方式可以包括:1)通用有序核心,针对通用计算目的;2)高性能通用乱序核心,针对通用计算目的;3)专用核心,主要针对图形和/或科学(吞吐量)计算目的。不同处理器的实现方式可以包括:1)CPU,包括针对通用计算目的的一个或多个通用有序核心和/或针对通用计算目的的一个或多个通用乱序核心;以及2)协处理器,包括主要针对图形和/或科学(吞吐量)目的的一个或多个专用核心。这些不同处理器导致不同的计算机系统体系结构,这些体系结构可以包括:1)协处理器与CPU在分开的芯片上;2)协处理器与CPU在同一封装中分开的管芯上;3)协处理器与CPU在同一管芯上(在此情况下,这种协处理器有时被称为专用逻辑,例如集成图形和/或科学(吞吐量)逻辑,或者被称为专用核心);以及4)片上系统,其可以在与所描述的CPU(有时称为(一个或多个)应用核心或者(一个或多个)应用处理器)同一管芯上包括上述的协处理器以及另外的功能。接下来描述示例性核心体系结构,然后是对示例性处理器和计算机体系结构的描述。
图9图示了示例处理器900的实施例的框图,该处理器900可以具有多于一个的核心,可以具有集成存储器控制器,并且可以具有集成图形器件。实线框图示的处理器900具有单个核心902(A)、系统代理910和一组一个或多个互连控制器单元电路916,而可选地添加的虚线框将替代性处理器900图示为具有多个核心902(A)-(N)、系统代理单元电路910中的一组一个或多个集成存储器控制单元电路914、专用逻辑908以及一组一个或多个互连控制器单元电路916。注意,处理器900可以是图8的处理器870或880或者协处理器838或815之一。
从而,处理器900的不同实现方式可以包括:1)CPU,其中专用逻辑908是集成图形和/或科学(吞吐量)逻辑(可以包括一个或多个核心,未示出),核心902(A)-(N)是一个或多个通用核心(例如,通用有序核心、通用乱序核心、或这两者的组合);2)协处理器,其中核心902(A)-(N)是主要针对图形和/或科学(吞吐量)目的的大量专用核心;以及3)协处理器,其中核心902(A)-(N)是大量的通用有序核心。从而,处理器900可以是通用处理器、协处理器或者专用处理器,例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元电路)、高吞吐量集成众核(many integrated core,MIC)协处理器(包括30个或更多个核心)、嵌入式处理器,等等。该处理器可被实现在一个或多个芯片上。处理器900可以是一个或多个衬底的一部分和/或可以使用多种工艺技术中的任何技术来实现在一个或多个衬底上,这些工艺技术例如BiCMOS、CMOS、或者NMOS。
存储器层次体系包括核心902(A)-(N)内的一级或多级缓存单元电路904(A)-(N)、一组一个或多个共享缓存单元电路906、以及耦合到该组集成存储器控制器单元电路914的外部存储器(未示出)。该组一个或多个共享缓存单元电路906可以包括一个或多个中间级别缓存,例如第2级(L2)、第3级(L3)、第4级(4)或者其他级别的缓存,例如最后一级缓存(last level cache,LLC),和/或这些的组合。虽然在一些实施例中基于环的互连网络电路912对专用逻辑908(例如,集成图形逻辑)、该组共享缓存单元电路906和系统代理单元电路910进行互连,但替代性实施例使用任何数目的公知技术来对这些单元进行互连。在一些实施例中,在共享缓存单元电路906中的一个或多个电路与核心902(A)-(N)之间维持一致性。
在一些实施例中,核心902(A)-(N)中的一个或多个具有多线程能力。系统代理单元电路910包括对核心902(A)-(N)进行协调和操作的那些组件。系统代理单元电路910可以包括例如功率控制单元(power control unit,PCU)电路和/或显示单元电路(未示出)。PCU可以是(或者可以包括)对核心902(A)-(N)和/或专用逻辑908(例如,集成图形逻辑)的功率状态进行调节所需的逻辑和组件。显示单元电路用于驱动一个或多个在外部连接的显示器。
核心902(A)-(N)就体系结构指令集而言可以是同构的或者异构的;也就是说,核心902(A)-(N)中的两个或更多个核心可能能够执行同一指令集,而其他核心可能能够只执行该指令集的子集或者能够执行一不同的ISA。
示例性核心体系结构
有序和乱序核心框图
图10(A)的框图图示了根据本发明的实施例的示例性有序管线和示例性寄存器重命名、乱序发出/执行管线两者。图10(B)的框图图示了根据本发明的实施例,要被包括在处理器中的有序体系结构核心的示例性实施例和示例性寄存器重命名、乱序发出/执行体系结构核心两者。图10(A)-(B)中的实线框图示了有序管线和有序核心,而可选地添加的虚线框图示了寄存器重命名、乱序发出/执行管线和核心。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图10(A)中,处理器管线1000包括取得阶段1002、可选的长度解码阶段1004、解码阶段1006、可选的分配阶段1008、可选的重命名阶段1010、调度(也称为调遣或发出)阶段1012、可选的寄存器读取/存储器读取阶段1014、执行阶段1016、写回/存储器写入阶段1018、可选的异常处置阶段1022、以及可选的提交阶段1024。在这些处理器管线阶段的每一者中可以执行一个或多个操作。例如,在取得阶段1002期间,从指令存储器取得一个或多个指令,在解码阶段1006期间,可以对取得的一个或多个指令进行解码,可以生成使用转发寄存器端口的地址(例如,加载存储单元(load store unit,LSU)地址),并且可以执行分支转发(例如,立即数偏移或者链接寄存器(link register,LR))。在一个或多个示例中,解码阶段1006和寄存器读取/存储器读取阶段1014可以被组合到一个管线阶段中。在一个或多个示例中,在执行阶段1016期间,可以执行经解码的指令,可以执行到高级微控制器总线(Advanced Microcontroller Bus,AMB)接口的LSU地址/数据管线化,可以执行乘法和加法操作,可以执行具有分支结果的算术操作,等等。
作为示例,示例性寄存器重命名、乱序发出/执行核心体系结构可以通过以下方式实现管线1000:1)指令取得1038执行取得和长度解码阶段1002和1004;2)解码单元电路1040执行解码阶段1006;3)重命名/分配器单元电路1052执行分配阶段1008和重命名阶段1010;4)(一个或多个)调度器单元电路1056执行调度阶段1012;5)(一个或多个)物理寄存器堆单元电路1058和存储器单元电路1070执行寄存器读取/存储器读取阶段1014;执行集群1060执行执行阶段1016;6)存储器单元电路1070和(一个或多个)物理寄存器堆单元电路1058执行写回/存储器写入阶段1018;7)在异常处置阶段1022中可能涉及各种单元(单元电路);并且8)引退单元电路1054和(一个或多个)物理寄存器堆单元电路1058执行提交阶段1024。
图10(B)示出了处理器核心1090包括耦合到执行引擎单元电路1050的前端单元电路1030,并且两者都耦合到存储器单元电路1070。核心1090可以是精简指令集计算(reduced instruction set computing,RISC)核心、复杂指令集计算(complexinstruction set computing,CISC)核心、超长指令字(very long instruction word,VLIW)核心、或者混合或替代性核心类型。作为另外一个选项,核心1090可以是专用核心,例如网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(general purposecomputing graphics processing unit,GPGPU)核心、图形核心,等等。
前端单元电路1030可以包括分支预测单元电路1032,该分支预测单元电路耦合到指令缓存单元电路1034,该指令缓存单元电路耦合到指令转译后备缓冲器(translationlookaside buffer,TLB)1036,该指令TLB耦合到指令取得单元电路1038,该指令取得单元电路耦合到解码单元电路1040。在一个或多个示例中,指令缓存单元电路1034被包括在存储器单元电路1070中,而不是前端单元电路1030中。解码单元电路1040(或解码器)可以对指令解码,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出,这些微操作、微代码入口点、微指令、其他指令或其他控制信号是从原始指令解码来的,或者以其他方式反映原始指令,或者是从原始指令得出的。解码单元电路1040还可以包括地址生成单元电路(address generation unit,AGU,未示出)。在一个或多个示例中,AGU使用经转发的寄存器端口来生成LSU地址,并且可以进一步执行分支转发(例如,立即数偏移分支转发,LR寄存器分支转发,等等)。可以利用各种不同的机制来实现解码单元电路1040。适当机制的示例包括但不限于查找表、硬件实现方式、可编程逻辑阵列(programmable logic array,PLA)、微代码只读存储器(read only memory,ROM),等等。在一个或多个示例中,核心1090包括微代码ROM(未示出)或其他介质,其存储用于某些宏指令的微代码(例如,在解码单元电路1040中或者以其他方式在前端单元电路1030内)。在一个或多个示例中,解码单元电路1040包括微操作(micro-op)或操作缓存(未示出),以保存/缓存在处理器管线1000的解码或其他阶段期间生成的经解码的操作、微标记或微操作。解码单元电路1040可以耦合到执行引擎单元电路1050中的重命名/分配器单元电路1052。
执行引擎电路1050包括重命名/分配器单元电路1052,其耦合到引退单元电路1054和一组一个或多个调度器电路1056。调度器电路1056代表任意数目个不同调度器,包括预留站、中央指令窗口,等等。在一些实施例中,(一个或多个)调度器电路1056可以包括算术逻辑单元(arithmetic logic unit,ALU)调度器/调度电路、ALU队列、地址生成单元(address generation unit,AGU)调度器/调度电路、AGU队列,等等。(一个或多个)调度器电路1056耦合到(一个或多个)物理寄存器堆电路1058。(一个或多个)物理寄存器堆电路1058的每一者代表一个或多个物理寄存器堆,这些物理寄存器堆中的不同物理寄存器堆存储一个或多个不同的数据类型,例如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,指令指针,即要执行的下一指令的地址),等等。在一个或多个示例中,(一个或多个)物理寄存器堆单元电路1058包括向量寄存器单元电路、写入掩码寄存器单元电路、以及标量寄存器单元电路。这些寄存器单元可以提供体系结构式向量寄存器、向量掩码寄存器、通用寄存器,等等。(一个或多个)物理寄存器单元堆电路1058被引退单元电路1054(也称为引退队列)重叠,以展示可以用来实现寄存器重命名和乱序执行的各种方式(例如,利用(一个或多个)重排序缓冲器(reorder buffer,ROB)和(一个或多个)引退寄存器堆;利用(一个或多个)未来的堆、(一个或多个)历史缓冲器、以及(一个或多个)引退寄存器堆;利用寄存器图谱和寄存器的池;等等)。引退单元电路1054和(一个或多个)物理寄存器堆电路1058耦合到(一个或多个)执行集群1060。(一个或多个)执行集群1060包括一组一个或多个执行单元电路1062和一组一个或多个存储器访问电路1064。执行单元电路1062可以对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行各种算术、逻辑、浮点或其他类型的操作(例如,移位、加法、减法、乘法)。虽然一些实施例可以包括专用于特定功能或功能集合的若干个执行单元或执行单元电路,但其他实施例可以只包括一个执行单元电路或者全部执行所有功能的多个执行单元/执行单元电路。(一个或多个)调度器电路1056、(一个或多个)物理寄存器堆单元电路1058以及(一个或多个)执行集群1060被示为可能是多个,因为某些实施例为某些类型的数据/操作创建单独的管线(例如,标量整数管线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点管线和/或存储器访问管线,它们各自具有其自己的调度器电路、(一个或多个)物理寄存器堆单元电路和/或执行集群——并且在单独的存储器访问管线的情况下,所实现的某些实施例中只有该管线的执行集群具有(一个或多个)存储器访问单元电路1064)。还应当理解,在使用分开的管线的情况下,这些管线中的一个或多个可以是乱序发出/执行,而其余是有序的。
在一些实施例中,执行引擎单元电路1050可以执行到高级微控制器总线(AMB)接口(未示出)的加载存储单元(LSU)地址/数据管线化,以及地址阶段和写回、数据阶段加载、存储、以及分支。
一组存储器访问电路1064耦合到存储器单元电路1070,该存储器单元电路包括数据TLB单元电路1072,该数据TLB电路耦合到数据缓存电路1074,该数据缓存电路耦合到第2级(L2)缓存电路1076。在一个示例性实施例中,存储器访问单元电路1064可以包括加载单元电路、存储地址单元电路、以及存储数据单元电路,它们中的每一者耦合到存储器单元电路1070中的数据TLB电路1072。指令缓存电路1034进一步耦合到存储器单元电路1070中的第2级(L2)缓存单元电路1076。在一个或多个示例中,指令缓存1034和数据缓存1074被组合成L2缓存单元电路1076、第3级(L3)缓存单元电路(未示出)和/或主存储器中的单个指令和数据缓存(未示出)。L2缓存单元电路1076耦合到一个或多个其他级别的缓存并且最终耦合到主存储器。
核心1090可以支持一个或多个指令集(例如,x86指令集(带有已随着更新版本添加的一些扩展);MIPS指令集;ARM指令集(带有可选的额外扩展,例如NEON)),该指令集包括本文描述的(一个或多个)指令。在一个或多个示例中,核心1090包括支持紧缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,从而允许利用紧缩数据来执行被许多多媒体应用使用的操作。
(一个或多个)示例性执行单元电路
图11图示了(一个或多个)执行单元电路的实施例,例如图10(B)的(一个或多个)执行单元电路1062。如图所示,(一个或多个)执行单元电路1062可以包括一个或多个ALU电路1101、向量/SIMD单元电路1103、加载/存储单元电路1105、和/或分支/跳转单元电路1107。ALU电路1101执行整数算术和/或布尔操作。向量/SIMD单元电路1103对紧缩数据(例如SIMD/向量寄存器)执行向量/SIMD操作。加载/存储单元电路1105执行加载和存储指令,以将数据从存储器加载到寄存器中,或者从寄存器存储到存储器。加载/存储单元电路1105也可以生成地址。分支/跳转单元电路1107取决于指令而引起到某个存储器地址的分支或跳转。浮点单元(floating-point unit,FPU)电路1109执行浮点算术。(一个或多个)执行单元电路1062的宽度取决于实施例而有所不同,并且可以在从16比特到1024比特的范围中。在一些实施例中,两个或更多个更小的执行单元被逻辑地组合以形成更大的执行单元(例如,两个128比特执行单元被逻辑组合以形成256比特执行单元)。
示例性寄存器体系结构
图12是根据一些实施例的寄存器体系结构1200的框图。如图所示,存在向量/SIMD寄存器1210,其宽度从128比特到1024比特不等。在一些实施例中,向量/SIMD寄存器1210在物理上是512比特的,并且取决于映射,只有一些低位比特被使用。例如,在一些实施例中,向量/SIMD寄存器1210是512比特的ZMM寄存器:低位256比特被用于YMM寄存器,并且低位128比特被用于XMM寄存器。因此,存在寄存器的覆盖。在一些实施例中,向量长度字段在最大长度和一个或多个其他更短的长度之间作出选择,其中每个这种更短长度是前一长度的一半长度。标量操作是对ZMM/YMM/XMM寄存器中的最低阶数据元素位置执行的操作;更高阶数据元素位置或者被保持为与其在该指令之前相同,或者被归零,这取决于实施例。
在一些实施例中,寄存器体系结构1200包括写入掩码/谓词(predicate)寄存器1215。例如,在一些实施例中,有8个写入掩码/谓词寄存器(有时称为k0至k7),它们各自的大小是16比特、32比特、64比特或128比特。写入掩码/谓词寄存器1215可以允许合并(例如,允许目的地中的任何元素集合在任何操作的执行期间被保护免于更新)和/或归零(例如,归零向量掩码允许目的地中的任何元素集合在任何操作的执行期间被归零)。在一些实施例中,给定的写入掩码/谓词寄存器1215中的每个数据元素位置对应于目的地的数据元素位置。在其他实施例中,写入掩码/谓词寄存器1215是可缩放的,并且由针对给定向量元素的设定数目个使能比特组成(例如,给每个64比特向量元素8个使能比特)。
寄存器体系结构1200包括多个通用寄存器1225。这些寄存器可以是16比特、32比特、64比特等等,并能够被用于标量操作。在一些实施例中,这些寄存器用名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8至R15来称呼。
在一些实施例中,寄存器体系结构1200包括标量浮点寄存器1245,它被用于使用x87指令集扩展对32/64/80比特浮点数据进行标量浮点操作,或者作为MMX寄存器,来对64比特紧缩整数数据执行操作,以及针对在MMX和XMM寄存器之间执行的一些操作保存操作对象。
一个或多个标志寄存器1240(例如,EFLAGS,RFLAGS,等等)存储状态和控制信息,用于算术、比较和系统操作。例如,一个或多个标志寄存器1240可以存储条件代码信息,例如进位、奇偶性、辅助进位、零、符号、以及溢出。在一些实施例中,一个或多个标志寄存器1240被称为程序状态和控制寄存器。
段寄存器1220包含用于访问存储器的段点。在一些实施例中,这些寄存器由名称CS、DS、SS、ES、FS和GS来称呼。
机器特定寄存器(machine-specific register,MSR)1235对处理器性能进行控制和报告。大多数MSR 1235处置与系统有关的功能,并且是应用程序不可访问的。机器检查寄存器1260由用于对硬件错误进行检测和报告的控制、状态和错误报告MSR组成。
一个或多个指令指针寄存器1230存储指令指针值。(一个或多个)控制寄存器1255(例如,CR0-CR4)确定处理器(例如,处理器870、880、838、818和/或900)的操作模式和当前在执行的任务的特性。调试寄存器1250控制并允许监视处理器或核心的调试操作。
存储器管理寄存器1265指定用于保护模式存储器管理中的数据结构的位置。这些寄存器可以包括GDTR、IDTR、任务寄存器、以及LDTR寄存器。
本发明的替代性实施例可以使用更宽或更窄的寄存器。此外,本发明的替代性实施例可以使用更多、更少或不同的寄存器堆和寄存器。
指令集
指令集体系结构(instruction set architecture,ISA)可以包括一个或多个指令格式。给定的指令格式可以定义各种字段(例如,比特的数目、比特的位置)来指定要执行的操作(例如,操作码)和要被执行该操作的(一个或多个)操作对象和/或其他(一个或多个)数据字段(例如,掩码),等等。一些指令格式通过指令模板(或子格式)的定义被进一步分解。例如,给定的指令格式的指令模板可以被定义为具有该指令格式的字段的不同子集(所包括的字段通常是按相同顺序的,但至少一些具有不同的比特位置,因为所包括的字段更少)和/或被定义为具有以不同方式解读的给定字段。从而,ISA的每个指令是利用给定的指令格式来表达的(并且如果定义了的话,则以该指令格式的指令模板中的一个给定指令模板来表达),并且包括用于指定操作和操作对象的字段。例如,示例性ADD指令具有特定的操作码和指令格式,该指令格式包括操作码字段来指定该操作码,并且包括操作对象字段来选择操作对象(源1/目的地和源2);并且这个ADD指令在指令流中的出现将在选择特定操作对象的操作对象字段中具有特定内容。
示例性指令格式
可以按不同的格式来实现本文描述的(一个或多个)指令的实施例。此外,下文详述了示例性系统、体系结构和管线。(一个或多个)指令的实施例可以在这些系统、体系结构和管线上被执行,但不限于详述的那些。
图13图示了指令格式的实施例。如图所示,指令可以包括多个成分,这些成分包括但不限于用于以下项的一个或多个字段:一个或多个前缀1301、操作码1303、寻址信息1305(例如,寄存器标识符、存储器寻址信息,等等)、位移值1307、和/或立即数1309。注意,一些指令利用了该格式的一些或所有字段,而其他指令可能只使用操作码1303的字段。在一些实施例中,图示的顺序是这些字段要被编码的顺序,然而应当明白,在其他实施例中,这些字段可以被按另外的顺序来编码、被组合,等等。
(一个或多个)前缀字段1301在被使用时对指令进行修改。在一些实施例中,一个或多个前缀被用于重复字符串指令(例如,0xF0、0xF2、0xF3,等等)、提供节超控(sectionoverride)(例如,0x2E、0x36、0x3E、0x26、0x64、0x65、0x2E、0x3E,等等)、执行总线锁定操作、和/或改变操作对象(例如,0x66)和地址大小(例如,0x67)。某些指令要求强制性的前缀(例如,0x66、0xF2、0xF3,等等)。这些前缀中的某些可以被认为是“传统”前缀。其他前缀(本文详述了其一个或多个示例)指示出和/或提供了进一步的能力,例如指定特定的寄存器等等。这些其他前缀通常跟随在“传统”前缀之后。
操作码字段1303被用于至少部分地定义在指令的解码时要执行的操作。在一些实施例中,在操作码字段1303中编码的主操作码的长度为1个、2个或3个字节。在其他实施例中,主操作码可以是其他的长度。额外的3比特操作码字段有时被编码在另一个字段中。
寻址字段1305被用于对指令的一个或多个操作对象进行寻址,例如存储器中的位置或者一个或多个寄存器。图14图示了寻址字段1305的实施例。在这个图示中,示出了可选的MOD R/M字节1402和可选的缩放、索引、基址(Scale,Index,Base,SIB)字节1404。MOD R/M字节1402和SIB字节1404被用来编码指令的最多两个操作对象,每个操作对象是直接寄存器或有效存储器地址。注意,这些字段中的每一者是可选的,即,不是所有的指令都包括这些字段中的一个或多个。MOD R/M字节1402包括MOD字段1442、寄存器字段1444、以及R/M字段1446。
MOD字段1442的内容区分存储器访问和非存储器访问模式。在一些实施例中,当MOD字段1442具有值b11时,利用寄存器直接寻址模式,否则使用寄存器间接寻址。
寄存器字段1444可以编码目的地寄存器操作对象或者源寄存器操作对象,或者也可以编码操作码扩展而不被用于编码任何指令操作对象。寄存器索引字段1444的内容直接指定或者通过地址生成来指定源或目的地操作对象的位置(在寄存器中或者在存储器中)。在一些实施例中,寄存器字段1444得到来自前缀(例如,前缀1301)的额外比特的补充,以允许更大的寻址。
R/M字段1446可以用来编码引用了存储器地址的指令操作对象,或者可以用来编码目的地寄存器操作对象或源寄存器操作对象。注意,在一些实施例中,R/M字段1446可以被与MOD字段1442相组合以规定寻址模式。
SIB字节1404包括缩放字段1452、索引字段1454、以及基址字段1456,以用于地址的生成。缩放字段1452指示缩放因子。索引字段1454指定要使用的索引寄存器。在一些实施例中,索引字段1454得到来自前缀(例如,前缀1301)的额外比特的补充,以允许更大的寻址。基址字段1456指定了要使用的基址寄存器。在一些实施例中,基址字段1456得到来自前缀(例如,前缀1301)的额外比特的补充,以允许更大的寻址。在实践中,缩放字段1452的内容允许缩放索引字段1454的内容以进行存储器地址生成(例如,对于使用2缩放*索引+基址的地址生成)。
一些寻址形式利用位移值来生成存储器地址。例如,可以根据2缩放*索引+基址+位移、索引*缩放+位移、r/m+位移、指令指针(RIP/EIP)+位移、寄存器+位移等等来生成存储器地址。该位移可以是1字节、2字节、4字节等等的值。在一些实施例中,位移字段1307提供这个值。此外,在一些实施例中,位移因子的使用被编码在寻址字段1305的MOD字段中,它指示出压缩位移方案,对于该方案,位移值通过disp8与基于向量长度确定的缩放因数N、b比特的值、以及指令的输入元素大小相结合地相乘来计算。位移值被存储在位移字段1307中。
在一些实施例中,立即数字段1309为指令指定立即数。立即数可以被编码为1字节值、2字节值、4字节值等等。
图15图示了第一前缀1301(A)的实施例。在一些实施例中,第一前缀1301(A)是REX前缀的示例。使用这个前缀的指令可以指定通用寄存器、64比特紧缩数据寄存器(例如,单指令多数据(SIMD)寄存器或向量寄存器)、和/或控制寄存器和调试寄存器(例如,CR8-CR15和DR8-DR15)。
使用第一前缀1301(A)的指令可以使用3比特字段指定最多三个寄存器,这取决于格式:1)使用MOD R/M字节1402的reg字段1444和R/M字段1446;2)使用MOD R/M字节1402与SIB字节1404,包括使用reg字段1444以及基址字段1456和索引字段1454;或者3)使用操作码的寄存器字段。
在第一前缀1301(A)中,比特位置7:4被设置为0100。比特位置3(W)可以被用于确定操作对象大小,但不能单独确定操作对象宽度。因此,当W=0时,操作对象大小由代码段描述符(code segment descriptor,CS.D)决定,而当W=1时,操作对象大小为64比特。
注意,添加另一个比特允许对16(24)个寄存器进行寻址,而单独的MOD R/M reg字段1444和MOD R/M的R/M字段1446各自只能寻址8个寄存器。
在第一前缀1301(A)中,比特位置2(R)可以是MOD R/M的reg字段1444的扩展,并且当该字段编码了通用寄存器、64比特紧缩数据寄存器(例如,SSE寄存器)或者控制或调试寄存器时,可被用来修改MOD R/M的reg字段1444。当MOD R/M字节1402指定其他寄存器或定义扩展操作码时,R被忽略。
比特位置1(X)X比特可以修改SIB字节索引字段1454。
比特位置B(B)B可以修改MOD R/M的R/M字段1446或SIB字节基址字段1456中的基址;或者它可以修改用于访问通用寄存器(例如,通用寄存器1225)的操作码寄存器字段。
图16(A)-(D)图示了如何使用第一前缀1301(A)的R、X和B字段的实施例。图16(A)图示了当SIB字节1404不被用于存储器寻址时,来自第一前缀1301(A)的R和B被用来扩展MOD R/M字节1402的reg字段1444和R/M字段1446。图16(B)图示了当不使用SIB字节14 04时,来自第一前缀1301(A)的R和B被用来扩展MOD R/M字节1402的reg字段1444和R/M字段1446(寄存器-寄存器寻址)。图16(C)图示了当SIB字节14 04被用于存储器寻址时,来自第一前缀1301(A)的R、X和B被用于扩展MOD R/M字节1402的reg字段1444以及索引字段1454和基址字段1456。图16(D)图示了当寄存器被编码在操作码1303中时,来自第一前缀1301(A)的B被用来扩展MOD R/M字节1402的reg字段1444。
图17(A)-(B)图示了第二前缀1301(B)的实施例。在一些实施例中,第二前缀1301(B)是VEX前缀的示例。第二前缀1301(B)编码允许指令具有多于两个操作对象,并且允许SIMD向量寄存器(例如,向量/SIMD寄存器1210)长于64比特(例如,128比特和256比特)。第二前缀1301(B)的使用提供了三操作对象(或更多)的语法。例如,先前的两操作对象指令执行诸如A=A+B之类的操作,这覆写了源操作对象。对第二前缀1301(B)的使用使得操作对象能够执行非破坏性操作,比如A=B+C。
在一些实施例中,第二前缀1301(B)有两种形式——两字节形式和三字节形式。两字节的第二前缀1301(B)主要被用于128比特、标量和一些256比特指令;而三字节的第二前缀1301(B)提供了3字节操作码指令和第一前缀1301(A)的紧凑替换。
图17(A)图示了第二前缀1301(B)的两字节形式的实施例。在一个示例中,格式字段1701(字节0 1703)包含值C5H。在一个示例中,字节1 1705在比特[7]中包括“R”值。这个值是第一前缀1301(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字段1446,以编码引用存储器地址的指令操作对象,或者编码目的地寄存器操作对象或源寄存器操作对象。
使用这个前缀的指令可以使用MOD R/M的reg字段1444,以编码目的地寄存器操作对象或者源寄存器操作对象,被作为操作码扩展来对待而不被用于编码任何指令操作对象。
对于支持四个操作对象的指令语法,vvvv、MOD R/M的R/M字段1446和MOD R/M的reg字段1444编码了四个操作对象中的三个。然后立即数1309的比特[7:4]被用来编码第三源寄存器操作对象。
图17(B)图示了第二前缀1301(B)的三字节形式的实施例。在一种示例中,格式字段1711(字节0 1713)包含值C4H。字节1 1715在比特[7:5]中包括“R”、“X”和“B”,它们是第一前缀1301(A)的这些值的补码。字节1 1715的比特[4:0](示为mmmmm)包括根据需要来对一个或多个隐含的前导操作码字节进行编码的内容。例如,00001意味着0FH前导操作码,00010意味着0F38H前导操作码,00011意味着0F3AH前导操作码,等等。
字节2 1717的比特[7]的使用与第一前缀1301(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字段1446,以编码引用存储器地址的指令操作对象,或者编码目的地寄存器操作对象或源寄存器操作对象。
使用这个前缀的指令可以使用MOD R/M的reg字段1444,以编码目的地寄存器操作对象或者源寄存器操作对象,或者被作为操作码扩展来对待而不被用于编码任何指令操作对象。
对于支持四个操作对象的指令语法,vvvv、MOD R/M的R/M字段1446和MOD R/M的reg字段1444编码了四个操作对象中的三个。然后立即数1309的比特[7:4]被用来编码第三源寄存器操作对象。
图18图示了第三前缀1301(C)的实施例。在一些实施例中,第三前缀1301(C)是EVEX前缀的示例。第三前缀1301(C)是四字节前缀。
第三前缀1301(C)能够在64比特模式中编码32个向量寄存器(例如,128比特、256比特和512比特寄存器)。在一些实施例中,利用写入掩码/操作掩码(参见对于先前图中的寄存器的论述,例如图12)或谓词的指令利用这个前缀。操作掩码寄存器允许条件处理或选择控制。操作掩码指令——其源/目的地操作对象是操作掩码寄存器并且将操作掩码寄存器的内容视为单个值——是使用第二前缀1301(B)而被编码的。
第三前缀1301(C)可以编码特定于指令类别的功能(例如,具有“加载+操作”语义的紧缩指令可以支持嵌入式广播功能,具有舍入语义的浮点指令可以支持静态舍入功能,具有非舍入算术语义的浮点指令可以支持“抑制所有异常”功能,等等)。
第三前缀1301(C)的第一字节是格式字段1811,它在一种示例中具有62H的值。随后的字节被称为有效载荷字节1815-1819,并且共同形成P[23:0]的24比特值,以(本文中详述的)一个或多个字段的形式提供特定的能力。
在一些实施例中,有效载荷字节1819的P[1:0]与低位的两个mm比特相同。在一些实施例中,P[3:2]被保留。比特P[4](R')在与P[7]和MOD R/M的reg字段1444相组合时允许访问高16向量寄存器集合。当不需要SIB类型寻址时,P[6]也可以提供对高16向量寄存器的访问。P[7:5]由R、X和B构成,它们是针对向量寄存器、通用寄存器、存储器寻址的操作对象指定符修饰符比特,并且当与MOD R/M寄存器字段1444和MOD R/M的R/M字段1446相组合时,允许访问超出低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]类似于第一前缀1301(A)和第二前缀1311(B)的W,并且可以作为操作码扩展比特或操作对象大小提升。
P[18:16]指定操作掩码(写入掩码)寄存器(例如,写入掩码/谓词寄存器1215)中的寄存器的索引。在本发明的一个或多个示例中,特定值aaa=000具有特殊行为,暗示着没有操作掩码被用于这个特定的指令(这可以通过多种方式实现,包括使用硬连线到全一的操作掩码或者绕过掩蔽硬件的硬件)。当合并时,向量掩码允许目的地中的任何元素集合在(由基本操作和增强操作指定的)任何操作的执行期间被保护免于更新;在其他的一个或多个示例中,保留目的地的每个元素的旧值(如果相应的掩码比特具有0值)。与之不同,当归零时,向量掩码允许目的地中的任何元素集合在(由基本操作和增强操作指定的)任何操作的执行期间被归零;在一个或多个示例中,目的地的元素在相应掩码比特具有0值时被设置到0。这个功能的子集是对于正被执行的操作的向量长度(即,被修改的元素的跨度,从第一个到最后一个)进行控制的能力;然而,被修改的元素不一定要连续。从而,操作掩码字段允许了部分向量操作,包括加载、存储、算术、逻辑,等等。虽然在描述的本发明的实施例中,操作掩码字段的内容选择若干个操作掩码寄存器中包含要使用的操作掩码的那一个(从而操作掩码字段的内容间接标识了要执行的掩蔽),但替代地或附加地,替代性实施例允许掩码写入字段的内容直接指定要执行的掩蔽。
P[19]可以与P[14:11]相组合,来以非破坏性源语法编码第二源向量寄存器,该语法可以利用P[19]来访问高16个向量寄存器。P[20]编码多种功能,这些功能在不同类别的指令中有所不同,并且可以影响向量长度/舍入控制指定符字段(P[22:21])的含义。P[23]指示出对合并-写入掩蔽的支持(例如,当被设置为0时)或者对归零和合并-写入掩蔽的支持(例如,当被设置为1时)。
下面的表格详述了在使用第三前缀1301(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)。这种实施例也可以被称为程序产品。
仿真(包括二进制转译、代码变形,等等)
在一些情况下,指令转换器可以被用于将指令从源指令集转换到目标指令集。例如,指令转换器可以将指令转译(例如,利用静态二进制转译、包括动态编译的动态二进制转译)、变形、仿真或者以其他方式转换到要被核心处理的一个或多个其他指令。可以用软件、硬件、固件或者其组合来实现指令转换器。指令转换器可以在处理器上、在处理器外、或者一部分在处理器上而一部分在处理器外。
图19图示根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在图示的实施例中,指令转换器是软件指令转换器,但可替代地,可以用软件、固件、硬件或者其各种组合来实现指令转换器。图19示出了高级语言1902的程序可以被利用第一ISA编译器1904编译以生成第一ISA二进制代码1906,该代码可以由具有至少一个第一ISA指令集核心的处理器1916原生执行。具有至少一个第一ISA指令集核心的处理器1916代表任何这样的处理器:这种处理器能够通过兼容地执行或以其他方式处理(1)第一ISA指令集核心的指令集的实质部分或者(2)以在具有至少一个第一ISA指令集核心的处理器上运行为目标的应用或其他软件的目标代码版本,来执行与具有至少一个第一ISA指令集核心的Intel处理器基本上相同的功能,以便实现与具有至少一个第一ISA指令集核心的处理器基本上相同的结果。第一ISA编译器1904代表可操作来生成第一ISA二进制代码1906(例如,目标代码)的编译器,该第一ISA二进制代码在进行或不进行额外的链接处理的情况下能够在具有至少一个第一ISA指令集核心的处理器1916上被执行。类似地,图19示出了高级语言1902的程序可以被利用替代性指令集编译器1908来编译以生成替代性指令集二进制代码1910,该代码可以由没有第一ISA核心的处理器1914原生执行。指令转换器1912被用来将第一ISA二进制代码1906转换成可以由没有第一ISA指令集核心的处理器1914原生执行的代码。这种转换后的代码可能不会与替代性指令集二进制代码1910相同,这是因为能够进行这一点的指令转换器难以制作;然而,转换后的代码将实现总的操作,并由来自该替代性指令集的指令构成。从而,指令转换器1912代表软件、固件、硬件或它们的组合,其通过仿真、模拟或任何其他过程,允许不具有第一ISA指令集处理器或核心的处理器或其他电子设备执行第一ISA二进制代码1906。
对“一个或多个示例”、“示例”、“示例实施例”等的引用指示所描述的实施例可包括特定的特征、结构或特性,但是每个实施例可以不一定包括该特定的特征、结构或特性。而且,此类短语不一定是指同一实施例。此外,当结合示例描述特定的特征、结构或特性时,认为结合无论是否被明确描述的其他实施例而影响此类特征、结构或特性是在本领域技术人员的知识范围之内的。
示例包括但不限于:
1.一种装置,包括:
加密/解密引擎,用于对数据进行加密或解密;以及
加密数据结构引擎,用于向加密/解密引擎提供密钥、数据和微调,其中,该加密数据结构引擎用于:
使用地址从加密数据结构查找数据结构条目读取索引值,该加密数据结构查找数据结构条目包括该索引值和宾客页物理地址(GPPA),
基于索引值从加密数据结构取回条目,该条目包括逻辑块地址(LBA)基址、密钥标识符、以及GPPA序列中的至少一个GPPA,
使用GPPA序列中的来自加密数据结构查找数据结构条目的GPPA的位置来生成LBA,以及
基于密钥标识符来取回密钥,其中,加密/解密引擎用于使用所取回的密钥和所生成的LBA来对数据进行加密或解密。
2.如示例1所述的装置,其中,地址是宾客物理地址。
3.如示例2所述的装置,其中,宾客物理地址是传输层分组的部分。
4.如示例1-3中任一项所述的装置,其中,GPPA位置乘以块大小以生成中间结果,并且LBA值是该中间结果与LBA基址相加。
5.如示例1-3中任一项所述的装置,当块大小为512b时,将GPPA位置乘以块大小*8以生成中间结果,通过取地址并与0XFFFF进行“与”运算并随后移位7来计算偏移,并且LBA是该偏移乘以512再与中间结果相加。
6.如示例1-5中任一项所述的装置,其中,加密是AES_XTS。
7.如示例1-5中任一项所述的装置,其中,解密是AES_XTS。
8.一种系统,包括:
动态随机存取存储器,用于存储加密数据结构;
加密引擎,用于对数据进行加密;以及
加密数据结构引擎,用于向加密引擎提供密钥、数据和微调,其中,该加密数据结构引擎用于:
使用地址从加密数据结构查找数据结构条目读取索引值,该加密数据结构查找数据结构条目包括该索引值和宾客页物理地址(GPPA),
基于索引值从加密数据结构取回条目,所述条目包括逻辑块地址LBA基址、密钥标识符、以及GPPA序列中的至少一个GPPA,
使用GPPA序列中的来自加密数据结构查找数据结构条目的GPPA的位置来生成LBA,以及
基于密钥标识符取回密钥,其中,加密引擎用于使用所取回的密钥和所生成的LBA来对数据进行加密。
9.如示例8所述的系统,其中,地址是宾客物理地址。
10.如示例9所述的系统,其中,宾客物理地址是传输层分组的部分。
11.如示例8-10中任一项所述的系统,其中,当块大小为4KB时,GPPA位置乘以块大小以生成中间结果,并且LBA值是该中间结果与LBA基址相加。
12.如示例8-10中任一项所述的系统,其中,当块大小为512b时,GPPA位置乘以块大小*8以生成中间结果,通过取地址并与0XFFFF进行“与”运算并随后移位7来计算偏移,并且LBA是将该偏移乘以512再与中间结果相加。
13.如示例8-12中任一项所述的系统,其中,加密是AES_XTS。
14.一种方法,包括:
使用地址从加密数据结构查找数据结构条目读取索引值,该加密数据结构查找数据结构条目包括该索引值和宾客页物理地址(GPPA);
基于索引值从加密数据结构取回条目,该条目包括逻辑块地址(LBA)基址、密钥标识符、以及GPPA序列中的至少一个GPPA;
使用GPPA序列中的来自加密数据结构查找数据结构条目的GPPA的位置来生成LBA;
基于密钥标识符取回密钥,其中,加密/解密引擎用于使用所取回的密钥和所生成的LBA来对数据进行加密或解密;以及
对数据进行加密或解密。
15.如示例14所述的方法,其中,地址是宾客物理地址。
16.如示例15所述的方法,其中,宾客物理地址是传输层分组的部分。
17.如示例14-16中任一项所述的方法,其中,GPPA位置乘以块大小以生成中间结果,并且LBA值是该中间结果与LBA基址相加。
18.如示例14-16中任一项所述的方法,其中,当块大小为512b时,GPPA位置乘以块大小*8以生成中间结果,通过取地址并与0XFFFF进行“与”运算并随后移位7来计算偏移,并且LBA是将该偏移乘以512再与中间结果相加。
19.如示例14-18中任一项所述的方法,其中,加密是AES_XTS。
20.如示例14-18中任一项所述的方法,其中,解密是AES_XTS。
此外,在上文描述的各实施例中,除非另外专门指出,否则,诸如短语“A、B或C中的至少一个”之类的分隔语言旨在被理解为意味着A、B、或C、或其任何组合(例如,A、B、和/或C)。由此,分隔语言不旨在也不应当被理解为暗示给定的实施例要求A中的至少一个、B中的至少一个或C中的至少一个各自都存在。
因此,说明书和附图应被认为是说明性而非限制性意义的。然而,将显而易见的是,可对这些实现方式作出各种修改和改变,而不背离如权利要求中所述的本公开的更宽泛的精神和范围。
Claims (20)
1.一种装置,包括:
加密/解密引擎,用于对数据进行加密或解密;以及
加密数据结构引擎,用于向所述加密/解密引擎提供密钥、数据和微调,其中,所述加密数据结构引擎用于:
使用地址从加密数据结构查找数据结构条目读取索引值,所述加密数据结构查找数据结构条目包括所述索引值和宾客页物理地址GPPA,
基于所述索引值从加密数据结构取回条目,所述条目包括逻辑块地址LBA基址、密钥标识符、以及GPPA序列中的至少一个GPPA,
使用所述GPPA序列中的来自所述加密数据结构查找数据结构条目的GPPA的位置来生成LBA,以及
基于所述密钥标识符取回密钥,其中,所述加密/解密引擎用于使用所取回的密钥和所生成的LBA来对数据进行加密或解密。
2.如权利要求1所述的装置,其中,所述地址是宾客物理地址。
3.如权利要求2所述的装置,其中,所述宾客物理地址是传输层分组的部分。
4.如权利要求1-2中任一项所述的装置,其中,所述GPPA位置乘以块大小以生成中间结果,并且所述LBA值是所述中间结果与所述LBA基址相加。
5.如权利要求1-4中任一项所述的装置,其中,当块大小为512b时,所述GPPA位置乘以所述块大小*8以生成中间结果,通过取所述地址并与0XFFFF进行“与”运算并随后移位7来计算偏移,并且所述LBA是所述偏移乘以512再与所述中间结果相加。
6.如权利要求1-5中任一项所述的装置,其中,所述加密是AES_XTS。
7.如权利要求1-6中任一项所述的装置,其中,所述解密是AES_XTS。
8.一种系统,包括:
动态随机存取存储器,用于存储加密数据结构;
加密引擎,用于对数据进行加密;以及
加密数据结构引擎,用于向所述加密引擎提供密钥、数据和微调,其中,所述加密数据结构引擎用于:
使用地址从加密数据结构查找数据结构条目读取索引值,所述加密数据结构查找数据结构条目包括所述索引值和宾客页物理地址GPPA,
基于所述索引值从加密数据结构取回条目,所述条目包括逻辑块地址LBA基址、密钥标识符、以及GPPA序列中的至少一个GPPA,
使用所述GPPA序列中的来自所述加密数据结构查找数据结构条目的GPPA的位置来生成LBA,以及
基于所述密钥标识符取回密钥,其中,所述加密引擎用于使用所取回的密钥和所生成的LBA来对数据进行加密。
9.如权利要求8所述的系统,其中,所述地址是宾客物理地址。
10.如权利要求9所述的系统,其中,所述宾客物理地址是传输层分组的部分。
11.如权利要求8-10中任一项所述的系统,其中,当块大小为4KB时,所述GPPA位置乘以所述块大小以生成中间结果,并且所述LBA值是所述中间结果与所述LBA基址相加。
12.如权利要求8-11中任一项所述的系统,其中,当块大小为512b时,所述GPPA位置乘以所述块大小*8以生成中间结果,通过取所述地址并与0XFFFF进行“与”运算并随后移位7来计算偏移,并且所述LBA是将所述偏移乘以512再与所述中间结果相加。
13.如权利要求8-12中任一项所述的系统,其中,所述加密是AES_XTS。
14.一种方法,包括:
使用地址从加密数据结构查找数据结构条目读取索引值,所述加密数据结构查找数据结构条目包括所述索引值和宾客页物理地址GPPA;
基于所述索引值从加密数据结构取回条目,所述条目包括逻辑块地址LBA基址、密钥标识符、以及GPPA序列中的至少一个GPPA;
使用所述GPPA序列中的来自所述加密数据结构查找数据结构条目的GPPA的位置来生成LBA;
基于所述密钥标识符取回密钥,其中,加密/解密引擎用于使用所取回的密钥和所生成的LBA来对数据进行加密或解密;以及
对所述数据进行加密或解密。
15.如权利要求14所述的方法,其中,所述地址是宾客物理地址。
16.如权利要求15所述的方法,其中,所述宾客物理地址是传输层分组的部分。
17.如权利要求14-16中任一项所述的方法,其中,所述GPPA位置乘以块大小以生成中间结果,并且所述LBA值是所述中间结果与所述LBA基址相加。
18.如权利要求14-17中任一项所述的方法,其中,当块大小为512b时,所述GPPA位置乘以所述块大小*8以生成中间结果,通过取所述地址并与0XFFFF进行“与”运算并随后移位7来计算偏移,并且所述LBA是将所述偏移乘以512再与所述中间结果相加。
19.如权利要求14-18中任一项所述的方法,其中,所述加密是AES_XTS。
20.如权利要求14-19中任一项所述的方法,其中,所述解密是AES_XTS。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/485,370 | 2021-09-25 | ||
US17/485,370 US20230094171A1 (en) | 2021-09-25 | 2021-09-25 | Memory assisted incline encryption/decryption |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115879176A true CN115879176A (zh) | 2023-03-31 |
Family
ID=82608676
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211129711.XA Pending CN115879176A (zh) | 2021-09-25 | 2022-09-16 | 存储器辅助的内联加密/解密 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230094171A1 (zh) |
EP (1) | EP4156594A1 (zh) |
JP (1) | JP2023048101A (zh) |
CN (1) | CN115879176A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118378288A (zh) * | 2024-06-24 | 2024-07-23 | 山东省计算中心(国家超级计算济南中心) | 一种基于Pin工具的加密算法动态检测方法及系统 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240361925A1 (en) * | 2023-04-26 | 2024-10-31 | Western Digital Technologies, Inc. | Data Storage Device and Method for Hiding Tweak Generation Latency |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9405919B2 (en) * | 2014-03-11 | 2016-08-02 | Qualcomm Incorporated | Dynamic encryption keys for use with XTS encryption systems employing reduced-round ciphers |
US10657071B2 (en) * | 2017-09-25 | 2020-05-19 | Intel Corporation | System, apparatus and method for page granular, software controlled multiple key memory encryption |
US10684945B2 (en) * | 2018-03-29 | 2020-06-16 | Intel Corporation | System, apparatus and method for providing key identifier information in a non-canonical address space |
-
2021
- 2021-09-25 US US17/485,370 patent/US20230094171A1/en active Pending
-
2022
- 2022-07-04 JP JP2022108033A patent/JP2023048101A/ja active Pending
- 2022-07-15 EP EP22185086.0A patent/EP4156594A1/en active Pending
- 2022-09-16 CN CN202211129711.XA patent/CN115879176A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118378288A (zh) * | 2024-06-24 | 2024-07-23 | 山东省计算中心(国家超级计算济南中心) | 一种基于Pin工具的加密算法动态检测方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
JP2023048101A (ja) | 2023-04-06 |
US20230094171A1 (en) | 2023-03-30 |
EP4156594A1 (en) | 2023-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11755500B2 (en) | Cryptographic computing with disaggregated memory | |
CN107209661B (zh) | 用于提供simd sm4加密块密码功能性的指令和逻辑 | |
EP3843322A1 (en) | Method and apparatus for multi-key total memory encryption based on dynamic key derivation | |
KR20170120096A (ko) | 보안 인클레이브들의 프로세스들을 포크하고 보안 인클레이브 페이지 캐시에서 자식 인클레이브들을 확립하기 위한 명령어들 및 로직 | |
EP4156594A1 (en) | Memory assisted incline encryption/decryption | |
EP4020181A1 (en) | Instruction support for saving and restoring key information | |
EP4020239A1 (en) | Integrity protected access control mechanisms | |
US11847067B2 (en) | Cryptographic protection of memory attached over interconnects | |
EP4109312A1 (en) | Circuitry and methods for supporting encrypted remote direct memory access (erdma) for live migration of a virtual machine | |
EP4020299A1 (en) | Memory address bus protection for increased resilience against hardware replay attacks and memory access pattern leakage | |
US11954047B2 (en) | Circuitry and methods for spatially unique and location independent persistent memory encryption | |
EP4202698A1 (en) | Circuitry and methods for implementing input/output extensions for trust domains | |
US11436342B2 (en) | TDX islands with self-contained scope enabling TDX KeyID scaling | |
EP4020288A1 (en) | Low overhead memory integrity with error correction capabilities | |
NL2031072B1 (en) | Apparatus and method to implement shared virtual memory in a trusted zone | |
EP4020882A1 (en) | Isa support for programming hardware over untrusted links | |
US9330020B2 (en) | System, apparatus, and method for transparent page level instruction translation | |
US20240054080A1 (en) | Speculating object-granular key identifiers for memory safety | |
EP4016348B1 (en) | Apparatus and method for secure, efficient microcode patching | |
US20240193284A1 (en) | Allocation of access to a chiplet across an interconnect switch | |
US20240104013A1 (en) | Deterministic adjacent overflow detection for slotted memory pointers | |
EP4156006A1 (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 |