CN114647858A - 使用聚合密码引擎的存储加密 - Google Patents
使用聚合密码引擎的存储加密 Download PDFInfo
- Publication number
- CN114647858A CN114647858A CN202111374868.4A CN202111374868A CN114647858A CN 114647858 A CN114647858 A CN 114647858A CN 202111374868 A CN202111374868 A CN 202111374868A CN 114647858 A CN114647858 A CN 114647858A
- Authority
- CN
- China
- Prior art keywords
- memory
- key
- cce
- circuitry
- data
- 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 claims abstract description 187
- 230000004044 response Effects 0.000 claims abstract description 9
- 238000000034 method Methods 0.000 abstract description 19
- 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 75
- 238000010586 diagram Methods 0.000 description 28
- 238000006073 displacement reaction Methods 0.000 description 22
- 238000012545 processing Methods 0.000 description 20
- 238000007667 floating Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 12
- 230000006870 function Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 230000009977 dual effect Effects 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 6
- 238000007726 management method Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 description 5
- 230000000873 masking effect Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 230000002776 aggregation Effects 0.000 description 4
- 238000004220 aggregation Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 230000002829 reductive effect Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000012005 ligant binding assay Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000013403 standard screening design Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 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
- 238000013500 data storage Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- SKEAGJWUKCNICJ-LSDHHAIUSA-N n-[(4-fluoro-3-methoxyphenyl)methyl]-6-[2-[[(2s,5r)-5-(hydroxymethyl)-1,4-dioxan-2-yl]methyl]tetrazol-5-yl]-2-methylpyrimidine-4-carboxamide Chemical compound C1=C(F)C(OC)=CC(CNC(=O)C=2N=C(C)N=C(C=2)C2=NN(C[C@@H]3OC[C@@H](CO)OC3)N=N2)=C1 SKEAGJWUKCNICJ-LSDHHAIUSA-N 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
- 238000012856 packing Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000013519 translation 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
- H04L9/0897—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/82—Protecting input, output or interconnection devices
- G06F21/85—Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0863—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
-
- 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/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
- H04L9/16—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms the keys or algorithms being changed during operation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
本公开涉及使用聚合密码引擎的存储加密。描述了与用于存储加密的聚合密码引擎(CCE)有关的技术和装置。在实施例中,解码电路对指令进行解码以确定是否启用了聚合密码引擎(CCE)电路。执行电路执行指令以响应于CCE电路被启用而编程多个密钥。CCE电路至少部分基于多个密钥中的至少一个密钥,来执行在存储器和存储设备之间传送的数据的所有加密和所有解密。还公开并且要求保护了其他实施例。
Description
技术领域
本公开概括而言涉及电子学的领域。更具体而言,一些实施例涉及用于存储加密的聚合密码引擎(Converged Cryptographic Engine,CCE)。
背景技术
随着安全性需求的增长,存储器密码引擎已经变为不同使用模型的要求,以保护驻留在主存储器中的代码和/或数据。然而,在给定的平台上的不同位置可能有多个密码引擎存在,导致不必要的功率消耗和面积使用以及额外的设计复杂性。
发明内容
根据本公开的一个实施例,提供了一种提供用于存储加密的聚合密码引擎CCE的装置,所述装置包括:解码电路,用于对指令进行解码以确定是否启用了聚合密码引擎CCE电路;以及执行电路,用于执行所述指令以响应于确定所述CCE电路被启用而编程多个密钥,其中,所述CCE电路用于至少部分基于所述多个密钥中的至少一个密钥,来执行要在存储器和存储设备之间传送的数据的所有加密和所有解密。
根据本公开的另一个实施例,提供了一种提供用于存储加密的聚合密码引擎CCE的装置,所述装置包括:聚合密码引擎CCE电路,用于执行要在存储器和存储设备之间传送的数据的所有加密和所有解密,其中,所述存储设备经由片上系统SOC设备耦合到所述存储器,其中,所述CCE电路耦合在片上系统SOC设备的输入输出存储器管理单元和所述存储器之间。
根据本公开的另一个实施例,提供了一种机器可读介质,包括代码,所述代码在被执行时,使得机器执行上述操作。
根据本公开的另一个实施例,提供了一种设备,包括用于执行上述操作的装置。
附图说明
为了使得本文记载的这些实施例的特征可被详细理解,通过参考实施例可进行对实施例的更具体描述,实施例中的一些在附图中图示。然而,要注意,附图只是图示了典型实施例并且因此不应被认为是限制其范围。
图1A根据实施例图示了一种系统的框图,该系统在存储器路径上具有密码引擎,用于从存储器读取和写入到设备请求。
图1B根据实施例图示了一种系统的框图,该系统在存储器路径上具有密码引擎,用于从设备读取和写入到存储器请求。
图2根据实施例图示了物理地址布局。
图3根据实施例示出了物理地址分解和索引到各种表格中。
图4根据实施例图示了用新模式进行请求处理的方法的流程图。
图5根据实施例图示了CCE的新接口信号。
图6根据实施例图示了密钥信息的样本字段。
图7A是根据实施例图示出示范性指令格式的框图。
图7B是根据一个实施例图示出构成完整操作码字段的指令格式的字段的框图。
图7C是根据一个实施例图示出构成寄存器索引字段的指令格式的字段的框图。
图7D是根据一个实施例图示出构成增强操作字段的指令格式的字段的框图。
图8是根据一个实施例的寄存器体系结构的框图。
图9A是根据实施例图示出示范性有序流水线和示范性寄存器重命名、乱序发出/执行流水线两者的框图。
图9B是根据实施例图示出要被包括在处理器中的有序体系结构核心的示范性实施例和示范性寄存器重命名、乱序发出/执行体系结构核心两者的框图。
图10根据实施例图示了SOC(片上系统)封装的框图。
图11是根据实施例的处理系统的框图。
图12是根据一些实施例的具有一个或多个处理器核心的处理器的实施例的框图。
图13是根据实施例的图形处理器的框图。
具体实施方式
在以下描述中,阐述了许多具体细节以提供对各种实施例的透彻理解。然而,没有这些具体细节也可以实现各种实施例。在其他情况下,没有详细描述公知的应都、过程、组件和电路,以免模糊特定实施例。另外,可使用各种手段来执行实施例的各种方面,例如集成半导体电路(“硬件”),被组织成一个或多个程序的计算机可读指令(“软件”),或者硬件和软件的某种组合。对于本公开而言,提及“逻辑”应指硬件、软件、固件或者其某种组合。
如上所述,随着安全性需求的增长,存储器密码引擎已经成为不同使用模型的要求,以保护驻留在主存储器中的代码和/或数据。然而,在给定的平台上的不同位置可能存在多个密码引擎,导致不必要的功率消耗和面积使用以及额外的设计复杂性。
快速非易失性存储器(Non-Volatile Memory express,NVMe)驱动器正迅速在行业中越来越受欢迎。NVMe驱动器利用快速外围组件接口(Peripheral ComponentInterface express,PCIe)协议。在一些实现方式中,在输入/输出(IO或I/O)控制器(Input/Output controller,IOC)中可提供专用于NVMe设备的加密引擎。虽然这提供了一个解决方案,该解决方案最大限度地减少了对片上系统(SoC或SOC)中的其他知识产权(Intellectual Property,IP)块的依赖,但它也可能导致IP的重复。
为此,一些实施例提供了一种用于存储加密的聚合密码引擎(CCE)。在一个实施例中,所有的密码(或简称“crypto”)引擎可被组合成存储器接口上的单个引擎。这单个密码引擎在本文中可互换地被称为多密钥全存储器加密(Multi-Key Total MemoryEncryption,MKTME)引擎或CCE。因此,通过减少密码引擎的数目,可减小整体平台面积使用和/或功率消耗开销。替换实施例利用一种特殊指令,该指令在被执行时对一个或多个密钥进行编程,用于在存储设备(例如NVMe)和主存储器(例如,到主存储器或DRAM,比如图11的存储器1120和/或图10的存储器1060)之间传送的数据的加密/解密。此外,虽然参照一些实施例论述的特殊指令可能不包括前缀,但在至少一个实施例中,可将利用的(一个或多个)指令定义为使用EVEX格式(例如参考图7A-7C论述的)。然而,实施例不限于EVEX格式,任何指令格式都可被用于实现各种实施例,例如,带有或不带有前缀。
相比之下,当前的一些实现方式可利用多个密码引擎,这增大了平台的面积和功率开销。此外,密码引擎可能由不同的设计团队提供,因此,整体设计成本和集成复杂性也会增大。另外,随着时间的推移添加的任何新要求,例如边通道抵抗力、后量子抵抗力,要求多个IP被更新,导致工作的重复和独立的维护,这增大了提供平台的密码需求的整体成本。
图1A根据实施例图示了系统100的框图,该系统在存储器路径上具有密码引擎,用于从存储器读取和写入到设备请求。
具体而言,图1A图示了对于NVMe设备/驱动器102的写入到设备请求101和从存储器160读取数据的从存储器读取103的系统体系结构。NVMe驱动器102可包括固态驱动器(solid state drive,SSD),该SSD按照从存储器160的读取操作103被写入101。存储器160可包括动态随机访问存储器(Dynamic Random Access Memory,DRAM)或主存储器(例如图11的存储器1120和/或图10的存储器1060)。
SSD将数据读取和写入到互连的闪存芯片的衬底,这些芯片是用硅制造的。NVMeSSD由于其速度已经越来越受欢迎。NVMe SSD使用NVMe主机控制器接口规范(NVMe HostController Interface Specification,NVMHCIS)(未示出),用于访问经由快速PCI(PCIExpress,PCIe)总线(未示出)附接的非易失性存储介质。
NVMe驱动器102可能要求对存储器160进行直接存储器访问(direct memoryaccess,DMA),以获得数据。为此,NVMe驱动器102向SOC120发出DMA读取请求110。DMA读取请求110不需要被加密。如图1A所示,SOC 120被插在NVMe驱动器102和存储器160之间。SOC120被示为具有输入/输出存储器管理单元(Input/Output Memory Management Unit,IOMMU)128。
参考图1A,CCE 129被耦合在IOMMU 128和存储器160之间。CCE129可被实现为逻辑,并且可包括一个或多个处理器电路和/或其他组件。在一个实施例中,CCE 129包括加密/解密引擎,该引擎被配置为根据存储在诸如密码存储器电路和/或查找表之类的存储设备中的指令来加密或解密数据。CCE 129还可包括密钥查找表(Key Lookup Table,KLT)126。KLT 126是用于存储各种查找表的存储器电路,如下文进一步描述。如图1A所示,可在系统100中的其他地方提供KLT 126,例如在SOC 120和/或存储器160内。
在一个实施例中,CCE 129支持AES-XTS或者高级加密标准(AES)基于XEX的可调整-码本模式带密文窃取(ciphertext Stealing,XTS)(例如,具有256b密钥),并且可使用新指令来对其进行编程。然而,实施例不限于AES-XTS,而是也可使用其他加密协议,例如AES伽罗瓦/计数器模式(Galois/Counter Mode,GCM)(或AES-GCM)。此外,在至少一个实施例中,PCONFIG指令可被用于用AES-XTS密钥对CCE 129进行编程。
CCE 129可以可选地包括存储器(未示出)。这个存储器可包括与CCE 129的处理器电路进行通信的一个或多个静态随机访问存储器(Static Random Access Memory,SRAM)电路。CCE存储器电路可存储一个或多个指令,以使得CCE 129中的一个或多个处理器电路(未示出)执行多个操作。这些操作可包括例如接收和存储对数据进行加密或解密所需的密码信息,形成数据和/或密钥表,以及与SOC 120外部的组件进行加密或解密数据的通信。一旦被形成,这种表就可被存储在密钥查找表(KLT)126处。在替换实施例中,CCE 129内部的存储器可充当缓存来存储KLT信息。为简单起见,下面的示范性实施例笼统地提及CCE 129以包括加密/解密引擎和/或本地存储器(在适用时)。
软件140经由CPU(中央处理单元)指令集体系结构(Instruction SetArchitecture,ISA)142与SOC 120接口连接。ISA 142充当软件140和SoC 120之间的接口。在一个实施例中,软件140支持多个加密密钥。在示范性实施例中,软件140支持MKTME的密钥管理规范。在一些实施例中,可能有四种使用的密钥,包括:(a)硬件生成的,(b)硬件包装的,(c)明文密钥,和(d)无加密密钥。如本文所论述,硬件生成的密钥是由硬件使用随机数生成器随机生成并且由密钥编程指令编程到硬件的密钥,而包装密钥是使用物理不可克隆功能(Physical Unclonable Function,PUF)派生密钥来包装(或加密)的密钥。然后,密钥编程指令将密钥从包装blob(二进制大对象)中解包/解密,并且将其编程到硬件。
在另一个实施例中,软件140可利用密钥包装构造144。密钥包装构造是一类对称加密算法,被设计为封装(加密)密码密钥材料。密钥包装算法旨在当密钥被存储在不受信任的存储装置中时或者当密钥在不受信任的通信网络/连接上被传输时保护密钥。这里,由于通信是在SOC 120的外部的,所以可以可选地使用密钥包装/句柄结构。
在示范性实现方式期间,NVMe驱动器(SSD)102向SOC 120传输DMA读取请求110。读取请求110没有被加密,因为它不包含数据。在可选的实施例中,读取请求110可被加密。由于读取请求110没有被加密,所以CCE 129没有参与并且SOC 120经由IOMMU 128将读取请求130(对应于读取请求110)传递给存储器160。响应于该请求,存储器160经由IOMMU 128向SOC 120传输读取响应132。CCE 129接收读取响应132中包括的数据封包,并且对从存储器160读取的数据进行解密,然后在传输到IOMMU128之前根据所公开的实施例对数据封包进行加密。
更具体而言,根据软件140提供的加密密钥对数据进行加密。SOC与它的端点(例如,NVMe驱动器102)的通信可受PCIe协议的控制。PCIe端点可选择在头部中发送任何附加数据。一个实施例使用(一个或多个)PCIe TLP前缀(其中TLP指事务层封包)来发送表索引和偏移量值(例如,对于KLT 126)。CCE 129解析并且去除这个前缀信息,并且使用索引字段在表格中查找记录/条目,并使用偏移量字段从基础LBA计算实际LBA(逻辑块地址)。下面联系图1B等等进一步论述示范性加密(或解密)方法。
在一个实施例中,读取数据被CCE 129通过软件接口(未示出)选择,该接口识别CCE 129应当对哪些驱动器加密,哪些不应当被加密。如下所述,密钥查找表(KLT)126存储一个或多个表格。在一个实施例中,KLT 126向CCE 129提供包括KeyID、读取或写入(R/W)比特、LBA和文件信息(每个文件)在内的信息,这将参考图3来进一步论述。
读取请求132中提供的相关数据被解密,然后在CCE 129处被加密,随后被传达给NVMe 102。NVMe控制器104接收加密的数据并且如所指示将其写入到NVMe驱动器102。由于加密/解密是在CCE 129处完成的,所以整个加密操作是以内联DMA速度完成的,没有引入额外的延迟。
图1B根据实施例图示了系统175的框图,该系统在存储器路径上具有密码引擎,用于从设备读取和写入到存储器请求。在图1B中,NVMe驱动器102打算将数据写入到存储器160中。该过程开始于NVMe驱动器控制器104发出写入请求170。写入请求170包括加密的数据。
SOC 120从NVMe控制器104接收加密的写入请求170,并且通过IOMMU 128将其转发给CCE 129。CCE 129使用来自软件140的密钥信息、来自KLT 126的密钥查找表和/或来自CPU ISA 142(和/或安全性控制器143)的密码密钥对来自写入请求170的数据进行解密。解密后的写入请求172然后被传输到CCE 129,以在写入到存储器160之前对数据进行加密。然后,存储器160将加密的数据写入到分配的存储器插槽。因此,参考图1A和图1B,在一个或多个实施例中,数据在存储在NVMe 102和/或存储器160中之前被加密。CCE 129根据需要并且如本文所论述对数据进行加密/解密。一个例外可能是DMA请求,这些DMA请求可能不包含有效载荷数据,并且其内容只是协助寻址,不需要被加密。
因此,一些实施例将用于核心存储器保护和全存储加密(Total Storageencryption,TSE)或存储/NVMe加密的密码引擎折叠到存储器接口上的单个引擎,即CCE。因此,虽然MKTME可能指的是存储器加密引擎,但CCE指的是在同一IP块中补充了TSE能力的存储器加密引擎。在一个实施例中,用于CCE的一种新模式被称为双重Xcrypt(doubleXcrypt,DX)模式,其中为盘读取操作(例如,按照图1B来自NVMe驱动器102)写入到存储器(160)的数据首先被解密,然后被加密,以确保存储加密的功能正确性。类似地,对于盘写入操作(例如,按照图1A去到NVMe驱动器102),数据被从存储器(160)读取,解密,并且在存储在盘上之前被重新加密。另一个实施例引入了ISA扩展,以允许软件将此模式编程到CCE129。
一个或多个实施例通过减小平台上存在的密码引擎的数目来降低平台的整体功率预算。这可转化为在云环境中降低运营成本,以及在移动客户端环境中增大电池寿命。虽然CCE所要求的密码工作可能与多个离散引擎相同,但拥有多个密码IP会带来额外的包装/相关逻辑,这在很多情况下是IP的面积/功率开销的主要来源。
聚合密码引擎(CCE)
在实施例中,CCE使得云软件能够通过用单独的密钥对每个虚拟机(virtualmachine,VM)存储器进行加密,来密码隔离存储器中的客户/用户工作负载(例如,VM)。CCE提供了在每页基础上指派密钥的能力。用于加密/解密特定存储器访问的密钥是从物理地址获得,其中最高有效比特代表密钥标识符(KeyID)。KeyID用于查找CCE引擎用于加密/解密存储器访问的密钥。与KeyID相关联的密钥可由VMM来编程。
图2根据实施例图示了物理地址布局。图2示出了示例地址布局,其中物理地址具有39比特,并且高位的三个比特[38-36]被用作KeyID。最高有效比特被用来识别用于保护数据的密钥。不同的实现方式可具有更多或更少的物理地址比特和KeyID比特,这取决于密钥的数目。作为示例,实施例可支持CCE的64个、128个等等诸如此类数目的密钥。因此,如果密钥的总数是64,则6比特可在PA(物理地址)中被用于密钥索引,并且类似地对于128个密钥,7比特可在PA中被用于密钥索引。
用于NVMe加密的全存储加密(TSE)
TSE的一些实现方式可使用放置在IO控制器(IOC)中的密码引擎来对移动到/移动自NVMe驱动器的数据进行加密/解密。源自驱动器的的物理地址由运行在主机上的驱动程序控制,并且被用来使用逻辑块寻址(Logical block addressing,LBA)和密钥查找表索引(KLT索引)来携带关于要写入到/读取自驱动器的块的位置的信息。在接收到地址时,KLT索引被用来索引到KLT中,该KLT包含到密钥表中的索引,以确定密钥和用于确定传送的LBA的其他元数据字段。
图3根据实施例示出了物理地址分解和索引到各种表格中。密钥表中的密钥被图1A和1B的CCE 129用来解密或加密数据。在实施例中,CCE可从CPU ISA 142和/或从CPU ISA内的安全性控制器143接收其密钥。
此外,从NVMe驱动器102接收的物理地址可被携带在PCIe事务层封包中,并且可以是访客物理地址,该访客物理地址可进一步被转化以接收主机物理地址,该主机物理地址是用于访问存储器160的实际物理地址。
参考图3,表310图示了示范性的物理地址比特表,其字段识别出索引比特、LBA偏移量和物理地址(Physical Address,PA)。使用适当的密钥索引,CCE然后可访问KLT,该KLT可具有34比特的条目。密钥查找表340包括以下示范性字段:密钥索引比特、读取/写入(R/W)和LBA和/或文件信息。R/W字段定义了信息是被读取还是写入。LBA和/或文件信息字段提供了为存储加密(例如,为AES-XTS)生成调整的材料。LBA偏移量取自310。
最后,利用来自表340的信息,可调用来自密钥表360的信息。密钥表360具有两个字段:密钥(256比特)和密钥属性字段,该密钥属性字段识别了CCE使用的加密属性或类型。应当注意,图3中所示的表格是说明性的,在不背离所公开的原则的情况下,还可添加其他的表格和/或字段。
下面说明了根据本公开的一个实施例的实现方式。参考图1A、图1B和图3,当来自NVMe驱动器(302,图1A、图1B)的请求被发出时,CCE 129(图1A、图1B)从地址比特(表310,图3)提取索引。CCE129还从密钥查找表(340,图3)获得LBA和密钥ID,然后查找密钥Id表中的密钥和密钥属性(表360)。
CCE 129将LBA偏移量添加到基础LBA。最终的LBA是这两个值的总和。此信息为CCE129提供了对在由NVMe驱动器102发送(或被发送到NVMe驱动器102)的PCIe TLP数据封包中的数据进行加密/解密的所有输入(例如,根据AES-XTS-256)。基于此信息,CCE 129在前往NVMe驱动器102的路上对数据封包进行加密,并且在前往存储器160的路上对数据封包进行解密。
在一些实施例中,取决于密钥表(表360,图3)中的属性,CCE可以可选地决定不对封包进行加密或解密。例如,软件140可将一些封包标记为非加密(例如,通过指向非加密密钥条目),以确保NVMe驱动器102具有访问命令封包的权限,因为NVMe驱动器102必须处理该封包。
在密钥查找表340(图3)处示出的R/W比特通过确保被标记为“R”的记录只能被用于解密,而被标记为“W”的记录只能被用于加密,从而提高了系统的安全性。在一个实施例中,R/W指示对应于对NVME驱动器102的读取和写入。这与对存储器160的读取和写入是相反的。
上述实施例一般描述了利用基于PCIe的密码术的单个加密。这些实施例适用于例如静止的数据。然而,存在政府和云服务提供商(Cloud Service Provider,CSP)场景,在这些场景中可能需要双重加密。例如,虚拟存储器(Virtual Memory,VM)所有者可能希望保护其数据,使得CSP无法访问它,而CSP可能希望限制VM所有者将此数据移动到另一个CSP。双重加密还保护数据不受CSP场景中的密钥之一的危害或者加密的不正确实现的影响。这使得VM所有者能够提供一密钥,而基础设施可提供一单独的密钥。
在替换实施例中,可能有两个密钥:第一密钥是在配设给VM所有者的服务级别的,并且第二密钥可被配设给基础设施提供商或CSP。双重加密可按线速度运行(例如,PCIe第5代),同时启用两个或更多个(N个)密钥。为简单起见,下面的描述是针对双密钥实现方式提供的。双密钥实现方式可包括基础设施密钥和服务密钥。基础设施密钥可由基础设施提供者拥有,而服务密钥可由容器或VM所有者拥有。服务所有者可能被阻止控制其服务所处的基础设施。相反,基础设施所有者可能被阻止控制或确定他们将运行所有服务中的哪些。
与上述内联加密机制相联系描述的系统实现方式可类似地适用于具有不同所有者的多个加密密钥。也就是说,在单个内联加密的情况下,密码引擎从密钥表和密钥查找表(KLT)接收所有的密钥材料和调整材料。这个概念可被扩展到在密钥表本身中配设第二密钥索引。
根据这个实施例,CCE可被扩展到在表格中寻找两个密钥索引,从密钥表读取密钥,然后进行两个AES密钥扩展,以生成两组回合密钥、两组调整,然后进行28轮加密,每个密钥14轮。两个调整的LBA可能是相同的。然而,改变调整密钥可能会改变调整,并且可能导致两个不同的调整。和以前一样,输入数据可能是PCIe事务层封包(transaction layerpacket,TLP)中的数据或者来自存储器的数据,并且输出将是加密或解密的密文/明文,这取决于它是写入事务还是读取事务。CCE(129,图1A,图1B)可以按内联方式以线速度处理所有密钥,而无需将密钥释放给系统软件(140,图1A,图1B)。在一个实施例中,软件(140,图1A,图1B)可通过适当地填充密钥表来选择哪些密钥应当被加密/解密引擎(CCE)使用以及以何种顺序被使用。
在一个实施例中,数据可首先被用第一密钥进行加密,生成的密文被用第二密钥来进行加密。由于AES-XTS不会增大或减小数据的大小,所以明文、中间密文和最终密文的大小可能基本相同。最后,如果系统软件(例如软件140,图1A、图1B)这样选择,则它可决定通过将第二密钥放在表格中(在第一密钥槽中)并且将第二密钥槽留空,来只使用第二密钥进行解密。这允许了软件将数据与基础设施加密解绑,而服务加密保持不变。软件现在可将此数据移动到另一个基础设施,并且使用第二基础设施的基础设施密钥对其进行加密。
双重XCrypt模式
实施例为CCE引入了一种新模式,即双重Xcrypt模式或DX模式。在这种模式中,去到和来自MKTME引擎的存储器访问——我们现在把它称为CCE——进行两轮的密码术。
更具体而言,图4根据实施例图示了用DX模式进行请求处理的方法400的流程图。在接收到请求时(402),CCE确定该请求是否是存储/NVMe请求(404)。如果不是,则该请求被正常处理,就像MKTME引擎所做的那样(406)。更具体而言,与请求的物理地址一起接收到的KeyID被用来查找密钥并且根据需要对数据进行加密/解密。另一方面,如果在404处该请求是存储请求,则CCE逻辑检查它是否是读取请求(408)。如果该请求是读取请求,本质上代表了对盘的写入,则CCE发出请求,来使用物理地址和关联的KeyID从存储器中读取数据(410)。在接收到响应后,使用与请求的KeyID相关联的存储器加密密钥对请求进行解密(412)。然后,解密的数据被送入另一轮加密,以在将其存储在驱动器上之前用存储密钥对数据进行加密(414)。使用图3中描述的逻辑来查找存储密钥。
如果该请求是写入请求(408),代表从盘中读取,则使用存储加密密钥对随事务接收的数据进行解密(416)。然后利用请求的物理地址中携带的KeyID用存储器加密密钥对解密的数据进行重加密(418)。然后,加密的数据被存储在存储器中(420)。
在一个实施例中,通过聚合引擎支持TSE不能将所需要的加密/解密折叠为一个,因为用于加密/解密的调整在存储装置(例如,NVMe 102)和存储器(例如,存储器160)之间是不同的。存储加密使用LBA作为调整,以确保存储在设备上的所有数据得到空间上的唯一性,这确保了存储在盘中的不同位置处的相同数据的加密方式不同。系统存储器使用物理地址作为其加密的调整,以实现空间唯一性。存储装置不能使用物理地址作为调整,因为来自驱动器的相同数据可在不同的时间点被写入到存储器中的不同位置。因此,它需要一个独立于物理地址的调整,因为此原因,LBA被选择作为调整。
用于聚合的存储器总线上的额外元数据
图5根据实施例图示了CCE的新接口信号。如图5所示,为了支持与CCE的聚合,需要将密钥查找表(KLT)的索引502、LBA偏移量504和物理地址506的索引从IOC 508通过存储器架构携带到CCE 510,以允许CCE查找正确的密钥并且生成正确的调整,用于对来自存储装置(例如,NVMe 102)的数据进行加密/解密。
ISA对TSE聚合的支持
为了使得聚合的密码引擎能够支持TSE,在一些实施例中提供了新的指令和MSR(或者对现有指令和MSR的扩展,其中MSR指的是模型特定寄存器或者更一般而言的寄存器)。
列举和激活
TSE能力是通过CPUID(CPU标识符)中的扩展特征中的比特来列举的。如果CPUID列举了TSE,则有两个新的MSR被支持,IA32_TSE_CAPABILITY和IA32_TSE_ACTIVATE。使用IA32_TSE_CAPABILITY MSR来列举CCE的能力,并且BIOS(基本输入输出系统)使用IA32_TSE_ACTIVATE MSR来激活用于存储加密的CCE能力。表格1和2根据一些实施例示出了这些MSR。
表格1:IA32_TME_CAPABILITY MSR
有两个新的比特被引入来指示出对利用CCE的存储加密的支持。比特1指示出对具有双重Xcrypt模式的XTS-256b密钥加密的支持,并且比特2指示出对没有双重Xcrypt的XTS-256b加密的支持。当为存储器启用MKTME时,软件将使用比特0与密钥进行存储,以实现移动到和移动自存储装置的数据的双重Xcrypt。当MKTME未被启用并且只有盘被加密时,软件将使用比特1。比特31:16列举了对于存储加密支持的总密钥数目。系统可支持不同数目的存储和/或存储器加密密钥,这取决于实现方式。
表格2:IA32_TME_CAPABILITY MSR
TSE_ACTIVATE MSR被BIOS用来激活CCE能力。比特31:16是16比特字段,用于指示出为存储加密激活多少个密钥。比特39:32是8比特字段,被BIOS用来启用算法。一些实施例在能力MSR中概述了两种算法(一种带有DX,一种没有DX,带有256b加密)。也可添加其他算法。
密钥编程
为TSE扩展了用于密钥编程的现有指令,PCONFIG。向PCONFIG指令添加了新的叶,TSE_KEY_PROGRAM。
PCONFIG.CPUID_LEAF列举被扩展,以列举TSE作为支持的目标
·TSE列举(以及TSE_KEY_PROGRAM叶的隐含可用性)与TME_CAPABILITY MSR中的TSE特征列举相联系
也可以有这样实施例,其中TSE的密钥是通过包装blob来编程的,如下:
TSE_KEY_PROGRAM叶
用以下参数执行的PCONFIG:
·EAX:2h
·RBX:TSE_KEY_PROGRAM_STRUCT的有效地址
(在图6中定义)
作为示例,EAX是处理器上的寄存器,但实施例并不局限于使用EAX,其他(一个或多个)寄存器或存储器可被用于将操作对象传递给指令。更具体而言,图6根据实施例图示了密钥信息的样本字段。在一个实施例中,软件构造了图6的结构并且填充了密钥索引、密钥控制(命令:设置密钥、清除密钥、不加密ENC_ALG(加密算法):带DX的AES-256b,不带DX的AES-256b)、以及要与密钥索引相关联的密钥(数据和调整密钥)。如本文所论述的,MBZ代表“必须为零”。
这些命令允许了对密钥进行控制,其中设置密钥对密钥进行设置,清除密钥对于特定的密钥索引将密钥从硬件移除,并且不加密模式将密钥设置在不加密模式中。
在至少一个实施例中,TSE将被分配目标标识符(target identifier,TID)如下:
·0:无效TID
·1:MKTME
·2:TSE
如果在平台上支持TSE(例如,由CPUID指示),则CPUID.PCONFIG_LEAF将列举TSE作为支持的目标,并且当TSE被PCONFIG列举为目标时,TSE_KEY_PROGRAM叶是可用的。
指令集
指令集可包括一个或多个指令格式。给定的指令格式可定义各种字段(例如,比特的数目、比特的位置)来指定要执行的操作(例如,操作码)和要在其上执行该操作的(一个或多个)操作对象和/或其他(一个或多个)数据字段(例如,掩码),等等。一些指令格式通过指令模板(或子格式)的定义被进一步分解。例如,给定的指令格式的指令模板可被定义为具有该指令格式的字段的不同子集(包括的字段通常是按相同顺序的,但至少一些具有不同的比特位置,因为包括的字段更少)和/或被定义为具有以不同方式被解读的给定字段。从而,ISA的每个指令是利用给定的指令格式来表达的(并且如果定义了的话,以该指令格式的指令模板中的给定一个指令模板来表达)并且包括用于指定操作和操作对象的字段。例如,示范性ADD指令具有特定的操作码和指令格式,该指令格式包括操作码字段来指定该操作码并且包括操作对象字段来选择操作对象(源1/目的地和源2);并且此ADD指令在指令流中的出现将在选择特定操作对象的操作对象字段中具有特定内容。被称为高级向量扩展(Advanced Vector Extension,AVX)(AVX1和AVX2)并且使用向量扩展(Vector Extension,VEX)编码方案的SIMD扩展的集合已被发布和/或发表(例如,参见64和IA-32体系结构软件开发者手册,2014年9月;以及参见高级向量扩展编程参考,2014年10月)。
示范性指令格式
可按不同的格式来实现本文描述的(一个或多个)指令的实施例。此外,下文详述了示范性系统、体系结构和流水线。(一个或多个)指令的实施例可在这种系统、体系结构和流水线上被执行,但不限于详述的那些。
虽然将描述其中向量友好指令格式支持以下项目的实施例:64字节向量操作对象长度(或大小),其具有32比特(4字节)或64比特(8字节)的数据元素宽度(或大小)(从而,64字节向量由16个双字大小的元素或者8个四字大小的元素构成);64字节向量操作对象长度(或大小),其具有16比特(2字节)或8比特(1字节)的数据元素宽度(或大小);32字节向量操作对象长度(或大小),其具有32比特(4字节)、64比特(8字节)、16比特(2字节)、或者8比特(1字节)的数据元素宽度(或大小);以及16字节向量操作对象长度(或大小),其具有32比特(4字节)、64比特(8字节)、16比特(2字节)、或者8比特(1字节)的数据元素宽度(或大小);但替换实施例可支持具有更多、更少或不同的数据元素宽度(例如,128比特(16字节)的数据元素宽度)的更多、更少和/或不同的向量操作对象大小(例如,256字节向量操作对象)。
图7A是根据实施例图示出示范性指令格式的框图。图7A示出了在如下意义上特定的指令格式700:其指定字段的位置、大小、解读、以及顺序,以及这些字段中的一些的值。指令格式700可被用于扩展x86指令集,从而字段中的一些与现有的x86指令集及其扩展(例如,AVX)中使用的那些相似或相同。此格式与带有扩展的现有x86指令集的前缀编码字段、真实操作码字节字段、MOD R/M字段、SIB字段、位移字段以及立即数字段保持一致。
EVEX前缀(字节0-3)702—被编码为四字节形式。
格式字段782(EVEX字节0,比特[7:0])—第一字节(EVEX字节0)是格式字段782并且其包含0x62(在一个实施例中用于区分向量友好指令格式的唯一值)。
第二-第四字节(EVEX字节1-3)包括提供特定能力的若干个比特字段。
REX字段705(EVEX字节1,比特[7-5])—由EVEX.R比特字段(EVEX字节1,比特[7]–R)、EVEX.X比特字段(EVEX字节1,比特[6]–X)和757BEX字节1,比特[5]–B)构成。EVEX.R、EVEX.X和EVEX.B比特字段提供与相应的VEX比特字段相同的功能,并且被利用反码(1scomplement)形式来编码,即,ZMM0被编码为1111B,ZMM15被编码为0000B。指令的其他字段如本领域中已知的那样对寄存器索引的较低三个比特进行编码(rrr、xxx和bbb),从而可通过添加EVEX.R、EVEX.X和EVEX.B来形成Rrrr、Xxxx和Bbbb。
REX'字段QAc10—这是用于对扩展32寄存器集合的高16或低16进行编码的EVEX.R'比特字段(EVEX字节1,比特[4]-R')。在一个实施例中,此比特以及如下所示的其他比特被以比特反转格式来存储以与BOUND指令相区分(在公知的x86 32比特模式中),BOUND指令的真实操作码字节是62,但不在MOD R/M字段(下文描述)中接受MOD字段中的11的值;替换实施例不以反转格式存储这个比特和下面指示的其他比特。值1被用于对低16寄存器进行编码。换言之,R'Rrrr是通过组合EVEX.R'、EVEX.R和来自其他字段的其他RRR来形成的。
操作码映射字段715(EVEX字节1,比特[3:0]–mmmm)—其内容编码了所暗示的前导操作码字节(0F、0F 38、或0F 3)。
数据元素宽度字段764(EVEX字节2,比特[7]–W)—由符号EVEX.W表示。EVEX.W被用于定义数据类型的粒度(大小)(32比特数据元素或64比特数据元素)。此字段是可选的,因为在只有一个数据元素宽度受到支持和/或数据元素宽度是利用操作码的某个方面来受到支持的情况下,则不需要该字段。
EVEX.vvvv 720(EVEX字节2,比特[6:3]-vvvv)—EVEX.vvvv的作用可包括以下的:1)EVEX.vvvv编码了以反转(反码)形式指定的第一源寄存器操作对象,并且对于具有2个或更多个源操作对象的指令是有效的;2)EVEX.vvvv编码了对于某些向量移位以反码形式指定的目的地寄存器操作对象;或者3)EVEX.vvvv不编码任何操作对象,该字段被预留并且应当包含1111b。从而,EVEX.vvvv字段720编码了以反转(反码)形式存储的第一源寄存器指定符的4个低阶比特。取决于指令,一额外的不同EVEX比特字段被用于将指定符大小扩展到32个寄存器。
EVEX.U 768类别字段(EVEX字节2,比特[2]-U)—如果EVEX.U=0,则其指示类别A(支持合并-写入掩蔽)或EVEX.U0;如果EVEX.U=1,则其指示类别B(支持归零和合并-写入掩蔽)或者EVEX.U1。
前缀编码字段725(EVEX字节2,比特[1:0]-pp)—为基本操作字段提供额外比特。除了针对采取EVEX前缀格式的传统SSE指令提供支持以外,这还具有使SIMD前缀紧缩的益处(EVEX前缀只要求2个比特,而不是要求一字节来表达SIMD前缀)。在一个实施例中,为了支持使用采取传统格式和采取EVEX前缀格式两者的SIMD前缀(66H、F2H、F3H)的传统SSE指令,这些传统SIMD前缀被编码到SIMD前缀编码字段中;并且在运行时被扩展成传统SIMD前缀,然后才被提供到解码器的PLA(因此PLA可执行这些传统指令的传统和EVEX格式两者,而无需修改)。虽然较新的指令可直接使用EVEX前缀编码字段的内容作为操作码扩展,但某些实施例为了一致性以类似的方式扩展,但允许这些传统SIMD前缀指定不同的含义。替换实施例可重设计PLA来支持2比特SIMD前缀编码,从而不要求扩展。
阿尔法字段753(EVEX字节3,比特[7]–EH;也称为EVEX.EH、EVEX.rs、EVEX.RL、EVEX.写入掩码控制、以及EVEX.N;也图示为α)—其内容区分要执行不同增强操作类型中的哪一个。
贝塔字段755(EVEX字节3,比特[6:4]–SSS;也称为EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;也图示为βββ)—区分要执行哪个指定类型的操作。
REX'字段710—这是REX'字段的剩余部分并且是可用于对扩展32寄存器集合的高16或低16进行编码的EVEX.V'比特字段(EVEX字节3,比特[3]-V')。此比特被以比特反转格式来存储。值1被用于对低16寄存器进行编码。换言之,V'VVVV是通过组合EVEX.V'、EVEX.vvvv来形成的。
写入掩码字段771(EVEX字节3,比特[2:0]-kkk)—其内容指定写入掩码寄存器中的寄存器的索引。在一个实施例中,特定值EVEX.kkk=000具有特殊行为,暗示着没有写入掩码被用于特定指令(这可按多种方式来实现,包括使用硬连线到全一的写入掩码或者绕过掩蔽硬件的硬件)。当合并时,向量掩码允许了目的地中的任何元素集合被保护免于在(由基本操作和增强操作指定的)任何操作的执行期间的更新;在其他的一个实施例中,保留目的地的相应的掩码比特具有0的每个元素的旧值。与之不同,归零向量掩码允许了目的地中的任何元素集合在(由基本操作和增强操作指定的)任何操作的执行期间被归零;在一个实施例中,目的地的元素在相应的掩码比特具有0值时被设置到0。这个功能的子集是控制被执行的操作的向量长度(即,被修改的元素的跨度,从第一个到最后一个)的能力;然而,被修改的元素不是必须要连续。从而,写入掩码字段771允许了部分向量操作,包括加载、存储、算术、逻辑,等等。虽然描述了其中写入掩码字段771的内容选择了若干个写入掩码寄存器中包含要使用的写入掩码的一个写入掩码寄存器(从而写入掩码字段771的内容间接识别了那个要执行的掩蔽)的实施例,但作为替代或附加,替换实施例允许了掩码写入字段771的内容直接指定要执行的掩蔽。
真实操作码字段730(字节4)也被称为操作码字节。在这个字段中指定操作码的一部分。
MOD R/M字段740(字节5)包括MOD字段742、寄存器索引字段744、以及R/M字段746。MOD字段742的内容区分存储器访问和非存储器访问操作。寄存器索引字段744的作用可被总结成两个情形:编码目的地寄存器操作对象或者源寄存器操作对象,或者被作为操作码扩展来对待,而不被用于编码任何指令操作对象。寄存器索引字段744的内容直接指定或者通过地址生成指定源或目的地操作对象的位置,无论它们是在寄存器中还是存储器中。这些包括充分数目的比特来从PxQ(例如,32x512、16x128、32x1024、64x1024)寄存器文件中选择N个寄存器。虽然在一个实施例中N可以是多达三个源和一个目的地寄存器,但替换实施例可支持更多或更少的源和目的地寄存器(例如,可支持多达两个源,其中这些源之一也充当目的地;可支持多达三个源,其中这些源之一也充当目的地;可支持多达两个源和一个目的地)。
R/M字段746的作用可包括以下的:编码引用存储器地址的指令操作对象,或者编码目的地寄存器操作对象或源寄存器操作对象。
缩放比例、索引、基址(Scale,Index,Base,SIB)字节(字节6)—缩放比例字段750的内容允许了缩放索引字段的内容以进行存储器地址生成(例如,对于使用2缩放比例*索引+基址的地址生成)。SIB.xxx 754和SIB.bbb 756—先前已关于寄存器索引Xxxx和Bbbb提及了这些字段的内容。
位移字段763A(字节7-10)—当MOD字段742包含10时,字节7-10是位移字段763A,并且其工作方式与传统32比特位移(disp32)相同并且以字节粒度工作。这可被用作存储器地址生成的一部分(例如,对于使用2缩放比例*索引+基址+位移的地址生成)。
位移因子字段763B(字节7)—当MOD字段742包含01时,字节7是位移因子字段763B。此字段的位置与传统x86指令集8比特位移(disp8)的相同,其以字节粒度工作。由于disp8被符号扩展,所以其只能在-128和127字节偏移量之间寻址;就64字节缓存线而言,disp8使用8个比特,这8个比特可被设置到仅四个真正有用的值-128、-64、0和64;由于经常需要更大的范围,所以使用disp32;然而,disp32要求4个字节。与disp8和disp32不同,位移因子字段763B是对disp8的重解读;当使用位移因子字段763B时,实际位移由位移因子字段的内容乘以存储器操作对象访问的大小(N)来决定。这种类型的位移被称为disp8*N。这减小了平均指令长度(单个字节被用于位移,但具有大得多的范围)。这种压缩的位移是基于如下假设的:有效位移是存储器访问的粒度的倍数,并且因此,地址偏移量的冗余低阶比特不需要被编码。换言之,位移因子字段763B代替了传统x86指令集8比特位移。从而,位移因子字段763B被按与x86指令集8比特位移相同的方式来编码(因此在ModRM/SIB编码规则中没有变化),唯一例外是disp8被超载到disp8*N。换言之,在编码规则或编码长度方面没有变化,而只在硬件对位移值的解读方面有变化(硬件需要按存储器操作对象的大小来缩放位移以获得按字节的地址偏移量)。
立即数字段772允许了对立即数(immediate)的指定。此字段是可选的,因为在不支持立即数的通用向量友好格式的实现方式中该字段不存在并且在不使用立即数的指令中该字段不存在。
完整操作码字段
图7B是根据一个实施例图示出构成完整操作码字段774的指令格式700的字段的框图。具体而言,完整操作码字段774包括格式字段782、基本操作字段743、以及数据元素宽度(W)字段763。基本操作字段743包括前缀编码字段725、操作码映射字段715、以及真实操作码字段730。
寄存器索引字段
图7C是根据一个实施例图示出构成寄存器索引字段745的指令格式700的字段的框图。具体而言,寄存器索引字段745包括REX字段705、REX'字段710、MODR/M.reg字段744、MODR/M.r/m字段746、VVVV字段720、xxx字段754、以及bbb字段756。
增强操作字段
图7D是根据一个实施例图示出构成增强操作字段的指令格式700的字段的框图。当类别(U)字段768包含0时,其表示EVEX.U0(类别A768A);当其包含1时,其表示EVEX.U1(类别B 768B)。当U=0并且MOD字段742包含11时(表示无存储器访问操作),阿尔法字段753(EVEX字节3,比特[7]–EH)被解读为rs字段753A。当rs字段753A包含1时(舍入753A.1),贝塔字段755(EVEX字节3,比特[6:4]-SSS)被解读为舍入控制字段755A。舍入控制字段755A包括一比特SAE字段796和两比特舍入操作字段798。当rs字段753A包含0时(数据变换752A.2),贝塔字段755(EVEX字节3,比特[6:4]-SSS)被解读为三比特数据变换字段755B。当U=0并且MOD字段742包含00、01或10时(表示存储器访问操作),阿尔法字段753(EVEX字节3,比特[7]–EH)被解读为逐出提示(eviction hint,EH)字段753B并且贝塔字段755(EVEX字节3,比特[6:4]-SSS)被解读为三比特数据操纵字段755C。
当U=1时,阿尔法字段753(EVEX字节3,比特[7]–EH)被解读为写入掩码控制(Z)字段753C。当U=1并且MOD字段742包含11时(表示无存储器访问操作),贝塔字段755的一部分(EVEX字节3,比特[4]–S0)被解读为RL字段757A;当其包含1(舍入757A.1)时,贝塔字段755的其余部分(EVEX字节3,比特[6-5]-S2-1)被解读为舍入操作字段759A,而当RL字段757A包含0(VSIZE 757.A2)时,贝塔字段755的其余部分(EVEX字节3,比特[6-5]-S2-1)被解读为向量长度字段759B(EVEX字节3,比特[6-5]-L1-0)。当U=1并且MOD字段742包含00、01或10时(表示存储器访问操作),贝塔字段755(EVEX字节3,比特[6:4]-SSS)被解读为向量长度字段759B(EVEX字节3,比特[6-5]-L1-0)和广播字段757B(EVEX字节3,比特[4]-B)。
示范性寄存器体系结构
图8是根据一个实施例的寄存器体系结构800的框图。在图示的实施例中,存在32个512比特宽的向量寄存器810;这些寄存器被称为ZMM0至ZMM31。低16ZMM寄存器的低阶256比特被覆盖在寄存器YMM0-16上。低16ZMM寄存器的低阶128比特(YMM寄存器的低阶128比特)被覆盖在寄存器XMM0-15上。换言之,向量长度字段759B在最大长度和一个或多个其他更短的长度之间做出选择,其中每个这种更短长度是前一长度的一半长度;并且没有向量长度字段759B的指令模板按最大向量长度进行操作。另外,在一个实施例中,指令格式700的类别B指令模板在紧缩或标量单/双精度浮点数据和紧缩或标量整数数据上进行操作。标量操作是在ZMM/YMM/XMM寄存器中的最低阶数据元素位置上执行的操作;更高阶数据元素位置或者被保持与其在该指令之前相同,或者被归零,这取决于实施例。
写入掩码寄存器815—在图示的实施例中,有8个写入掩码寄存器(k0至k7),每个的大小是64比特。在替换实施例中,写入掩码寄存器815的大小是16比特。在一些实施例中,向量掩码寄存器k0可被用作写入掩码;当通常将会指示k0的编码被用于写入掩码时,其选择硬连线的写入掩码0xFFFF,这实际上针对该指令禁用了写入掩蔽。
通用寄存器825—在图示的实施例中,有十六个64比特通用寄存器,它们与现有的x86寻址模式一起被用于寻址存储器操作对象。这些寄存器被用名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8至R15来引用。
标量浮点堆栈寄存器文件(x87堆栈)845(在其上化名了MMX紧缩整数平坦寄存器文件850)—在图示的实施例中,x87堆栈是用于利用x87指令集扩展在32/64/80比特浮点数据上执行标量浮点操作的八元素堆栈;而MMX寄存器被用于在64比特紧缩整数数据上执行操作,以及针对在MMX和XMM寄存器之间执行的一些操作保持操作对象。
替换实施例可使用更宽或更窄的寄存器。此外,替换实施例可使用更多、更少或不同的寄存器文件和寄存器。
示范性核心体系结构、处理器和计算机体系结构
可以按不同的方式、为了不同的目的、在不同的处理器中实现处理器核心。例如,这种核心的实现方式可包括:1)打算用于通用计算的通用有序核心;2)打算用于通用计算的高性能通用乱序核心;3)主要打算用于图形和/或科学(吞吐量)计算的专用核心。不同处理器的实现方式可包括:1)包括打算用于通用计算的一个或多个通用有序核心和/或打算用于通用计算的一个或多个通用乱序核心的CPU(中央处理单元);以及2)包括主要打算用于图形和/或科学(吞吐量)的一个或多个专用核心的协处理器。这样的不同处理器导致不同的计算机系统体系结构,这些体系结构可包括:1)协处理器在与CPU分开的芯片上;2)协处理器在与CPU相同的封装中、分开的管芯上;3)协处理器与CPU在同一管芯上(在此情况下,这种协处理器有时被称为专用逻辑,例如集成图形和/或科学(吞吐量)逻辑,或者被称为专用核心);以及4)片上系统,其可在同一管芯上包括所描述的CPU(有时称为(一个或多个)应用核心或者(一个或多个)应用处理器)、上述的协处理器以及额外的功能。接下来描述示范性核心体系结构,然后是对示范性处理器和计算机体系结构的描述。
示范性核心体系结构
图9A是根据实施例图示出示范性有序流水线和示范性寄存器重命名、乱序发出/执行流水线两者的框图。图9B是根据实施例图示出要被包括在处理器中的有序体系结构核心的示范性实施例和示范性寄存器重命名、乱序发出/执行体系结构核心两者的框图。图9A-9B中的实线框图示了有序流水线和有序核心,而虚线框的可选添加图示了寄存器重命名、乱序发出/执行流水线和核心。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图9A中,处理器流水线900包括取得级902、长度解码级904、解码级906、分配级908、重命名级910、调度(也称为调遣或发出)级912、寄存器读取/存储器读取级914、执行级916、写回/存储器写入级918、异常处理级922、以及提交级924。
图9B示出了处理器核心990包括耦合到执行引擎单元950的前端单元930,并且两者都耦合到存储器单元970。核心990可以是精简指令集计算(reduced instruction setcomputing,RISC)核心、复杂指令集计算(complex instruction set computing,CISC)核心、超长指令字(very long instruction word,VLIW)核心、或者混合或替换核心类型。作为另外一个选项,核心990可以是专用核心,例如,网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(general purpose computing graphics processing unit,GPGPU)核心、图形核心,等等。
前端单元930包括分支预测单元932,其耦合到指令缓存单元934,指令缓存单元934耦合到指令转化后备缓冲器(translation lookaside buffer,TLB)936,指令TLB 936耦合到指令取得单元938,指令取得单元938耦合到解码单元940。解码单元940(或解码器)可对指令解码,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出,这些微操作、微代码入口点、微指令、其他指令或其他控制信号是从原始指令解码来的,或者以其他方式反映原始指令,或者是从原始指令得出的。可利用各种不同的机制来实现解码单元940。适当机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(programmable logic array,PLA)、微代码只读存储器(read only memory,ROM),等等。在一个实施例中,核心990包括微代码ROM或其他介质,其为某些宏指令存储微代码(例如,在解码单元940中或者以其他方式在前端单元930内)。解码单元940耦合到执行引擎单元950中的重命名/分配器单元952。
执行引擎单元950包括重命名/分配器单元952,其耦合到引退单元954和一组一个或多个调度器单元956。(一个或多个)调度器单元956表示任何数目的不同调度器,包括预留站、中央指令窗口等等。(一个或多个)调度器单元956耦合到(一个或多个)物理寄存器文件单元958。物理寄存器文件单元958中的每一者表示一个或多个物理寄存器文件,这些物理寄存器文件中的不同物理寄存器文件存储一个或多个不同的数据类型,例如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针),等等。在一个实施例中,物理寄存器文件单元958包括向量寄存器单元、写入掩码寄存器单元、和标量寄存器单元。这些寄存器单元可提供体系结构式向量寄存器、向量掩码寄存器、以及通用寄存器。(一个或多个)物理寄存器文件单元958与引退单元954重叠以说明可用来实现寄存器重命名和乱序执行的各种方式(例如,利用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器文件;利用(一个或多个)未来文件、(一个或多个)历史缓冲器、以及(一个或多个)引退寄存器文件;利用寄存器图谱和寄存器的池;等等)。引退单元954和(一个或多个)物理寄存器文件单元958耦合到(一个或多个)执行集群960。(一个或多个)执行集群960包括一组一个或多个执行单元962和一组一个或多个存储器访问单元964。执行单元962可在各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)上执行各种操作(例如,移位、加法、减法、乘法)。虽然一些实施例可包括专用于特定功能或功能集合的若干个执行单元,但其他实施例可只包括一个执行单元或者全部执行所有功能的多个执行单元。(一个或多个)调度器单元956、(一个或多个)物理寄存器文件单元958和(一个或多个)执行集群960被示为可能是多个,因为某些实施例为某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,它们各自具有其自己的调度器单元、物理寄存器文件单元和/或执行集群——并且在单独的存储器访问流水线的情况下,实现了某些实施例,其中只有此流水线的执行集群具有(一个或多个)存储器访问单元964)。还应当理解,在使用分开流水线的情况下,这些流水线中的一个或多个可以是乱序发出/执行,并且其余的是有序的。
存储器访问单元964的集合耦合到存储器单元970,存储器单元970包括数据TLB单元972,数据TLB单元972耦合到数据缓存单元974,数据缓存单元974耦合到第2级(L2)缓存单元976。在一个示范性实施例中,存储器访问单元964可包括加载单元、存储地址单元、以及存储数据单元,它们中的每一者耦合到存储器单元970中的数据TLB单元972。指令缓存单元934进一步耦合到存储器单元970中的第2级(L2)缓存单元976。L2缓存单元976耦合到一个或多个其他级别的缓存并且最终耦合到主存储器。
作为示例,示范性寄存器重命名、乱序发出/执行核心体系结构可实现流水线900如下:1)指令取得938执行取得和长度解码级902和904;2)解码单元940执行解码级906;3)重命名/分配器单元952执行分配级908和重命名级910;4)(一个或多个)调度器单元956执行调度级912;5)(一个或多个)物理寄存器文件单元958和存储器单元970执行寄存器读取/存储器读取级914;执行集群960执行执行级916;6)存储器单元970和(一个或多个)物理寄存器文件单元958执行写回/存储器写入级918;7)在异常处理级922中可涉及各种单元;并且8)引退单元954和(一个或多个)物理寄存器文件单元958执行提交级924。
核心990可支持一个或多个指令集(例如,x86指令集(带有已随着较新版本添加的一些扩展);加州森尼维尔市的MIPS技术公司的MIPS指令集;加州森尼维尔市的ARM控股公司的ARM指令集(带有可选的额外扩展,例如NEON)),包括本文描述的(一个或多个)指令。在一个实施例中,核心990包括逻辑来支持紧缩数据指令集扩展(例如,AVX1、AVX2),从而允许了被许多多媒体应用使用的操作被利用紧缩数据来执行。
图10图示了根据实施例的SOC封装的框图。如图10所示,SOC1002包括一个或多个中央处理单元(CPU)核心1020、一个或多个图形处理器单元(GPU)核心1030、输入/输出(I/O)接口1040、以及存储器控制器1042。SOC封装1002的各种组件可耦合到互连或总线,例如本文参考其他附图所论述的。另外,SOC封装1002可包括更多或更少的组件,例如本文参考其他附图所论述的那些。另外,SOC封装1002的每个组件可包括一个或多个其他组件,例如,如本文参考其他附图所论述的。在一个实施例中,在一个或多个集成电路(IC)管芯上提供SOC封装1002(及其组件),例如,这些管芯被封装成单个半导体器件。
如图10所示,SOC封装1002经由存储器控制器1042耦合到存储器1060。在实施例中,存储器1060(或者它的一部分)可被集成在SOC封装1002上。
I/O接口1040可耦合到一个或多个I/O设备1070,例如,经由互连和/或总线,例如本文参考其他附图所论述的。(一个或多个)I/O设备1070可包括以下各项中的一个或多个:键盘、鼠标、触摸板、显示器、图像/视频捕捉设备(例如相机或者摄像机/录像机)、触摸屏、扬声器,等等。
图11是根据实施例的处理系统1100的框图。在各种实施例中,系统1100包括一个或多个处理器1102和一个或多个图形处理器1108,并且可以是单处理器桌面系统、多处理器工作站系统、或者具有大量处理器1102或处理器核心1107的服务器系统。在一个实施例中,系统1100是包含在片上系统(SoC或SOC)集成电路内的处理平台,用于移动、手持或者嵌入式设备中。
系统1100的实施例可包括或者被包含在以下各项内:基于服务器的游戏平台、包括游戏和媒体控制台的游戏控制台、移动游戏控制台、手持游戏控制台、或者在线游戏控制台。在一些实施例中,系统1100是移动电话、智能电话、平板计算设备、或者移动互联网设备。数据处理系统1100还可包括可穿戴设备、与可穿戴设备耦合或者被集成在可穿戴设备内,例如智能手表可穿戴设备、智能眼镜设备、增强现实设备、或者虚拟现实设备。在一些实施例中,数据处理系统1100是具有一个或多个处理器1102和由一个或多个图形处理器1108生成的图形界面的电视或者机顶盒设备。
在一些实施例中,一个或多个处理器1102各自包括一个或多个处理器核心1107,以处理指令,这些指令在被执行时,执行系统和用户软件的操作。在一些实施例中,一个或多个处理器核心1107中的每一者被配置为处理特定的指令集1109。在一些实施例中,指令集1109可促进复杂指令集计算(CISC),精简指令集计算(RISC),或者经由超长指令字(VLIW)的计算。多个处理器核心1107可各自处理不同的指令集1109,其中可包括促进对其他指令集的仿真的指令。处理器核心1107也可包括其他处理设备,例如数字信号处理器(DSP)。
在一些实施例中,处理器1102包括缓存存储器1104。取决于体系结构,处理器1102可具有单个内部缓存或者多个级别的内部缓存。在一些实施例中,在处理器1102的各种组件之间共享缓存存储器。在一些实施例中,处理器1102还使用外部缓存(例如,第3级(L3)缓存或者最后一级缓存(Last Level Cache,LLC))(未示出),可使用已知的缓存一致性技术在处理器核心1107之间共享这些外部缓存。在处理器1102中还包括寄存器文件1106,它可包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器、以及指令指针寄存器)。一些寄存器可以是通用的寄存器,而其他寄存器可以是特定于处理器1102的设计的。
在一些实施例中,处理器1102耦合到处理器总线1110,以在处理器1102和系统1100中的其他组件之间传输通信信号,例如地址、数据、或者控制信号。在一个实施例中,系统1100使用示范性的“中枢”系统体系结构,包括存储器控制器中枢1116和输入输出(I/O)控制器中枢1130。存储器控制器中枢1116促进了存储器设备和系统1100的其他组件之间的通信,而I/O控制器中枢(ICH)1130经由本地I/O总线提供与I/O设备的连接。在一个实施例中,存储器控制器中枢1116的逻辑被集成在处理器内。
存储器设备1120可以是动态随机访问存储器(dynamic random access memory,DRAM)设备、静态随机访问存储器(static random access memory,SRAM)设备、闪存设备、相变存储器设备、或者具有适当的性能来用作进程存储器的某种其他存储器设备。在一个实施例中,存储器设备1120可充当系统1100的系统存储器,以存储数据1129和指令1121来在一个或多个处理器1102执行应用或进程时使用。存储器控制器中枢1116还与可选的外部图形处理器1112耦合,该外部图形处理器可与处理器1102中的一个或多个图形处理器1108通信以执行图形和媒体操作。
在一些实施例中,ICH 1130使得外设能够经由高速I/O总线连接到存储器设备1120和处理器1102。I/O外设包括但不限于音频控制器1146、固件接口1128、无线收发器1126(例如,Wi-Fi、蓝牙)、数据存储设备1124(例如,硬盘驱动器、闪存,等等)、以及用于将传统(例如,个人系统2(Personal System 2,PS/2))设备耦合到该系统的传统I/O控制器1140。一个或多个通用串行总线(Universal Serial Bus,USB)控制器1142连接输入设备,例如键盘和鼠标1144的组合。网络控制器1134也可耦合到ICH 1130。在一些实施例中,高性能网络控制器(未示出)耦合到处理器总线1110。将会明白,所示出的系统1100是示范性的,而不是限制性的,因为也可使用不同配置的其他类型的数据处理系统。例如,I/O控制器中枢1130可被集成在一个或多个处理器1102内,或者存储器控制器中枢1116和I/O控制器中枢1130可被集成到分立的外部图形处理器中,例如外部图形处理器1112。
图12是具有一个或多个处理器核心1202A至1202N、集成存储器控制器1214和集成图形处理器1208的处理器1200的实施例的框图。图12的具有与本文的任何其他附图中的元素相同的标号(或名称)的那些元素可按与本文别处所描述的相似的任何方式操作或工作,但不限于此。处理器1200可包括额外的核心,直到并包括由虚线框表示的额外核心1202N。处理器核1202A至1202N中的每一者包括一个或多个内部缓存单元1204A至1204N。在一些实施例中,每个处理器核心还能够访问一个或多个共享缓存单元1206。
内部缓存单元1204A至1204N和共享缓存单元1206代表处理器1200内的缓存存储器层次体系。该缓存存储器层次体系可包括每个处理器核心内的至少一级指令和数据缓存以及一个或多个级别的共享中间级缓存,例如第2级(L2)、第3级(L3)、第4级(L4)或者其他级别的缓存,其中外部存储器之前的最高级别缓存被分类为LLC。在一些实施例中,缓存一致性逻辑维持各种缓存单元1206和1204A至1204N之间的一致性。
在一些实施例中,处理器1200还可包括一组一个或多个总线控制器单元1216和一系统代理核心1210。一个或多个总线控制器单元1216管理一组外围总线,例如一个或多个外围组件互连总线(例如,PCI、快速PCI)。系统代理核心1210为各种处理器组件提供管理功能。在一些实施例中,系统代理核心1210包括一个或多个集成存储器控制器1214,以管理对各种外部存储器设备(未示出)的访问。
在一些实施例中,处理器核心1202A至1202N中的一个或多个包括对同时多线程的支持。在这样的实施例中,系统代理核心1210包括用于在多线程处理期间协调和操作核心1202A至1202N的组件。系统代理核心1210可还包括功率控制单元(power control unit,PCU),其包括调节处理器核心1202A至1202N和图形处理器1208的功率状态的逻辑和组件。
在一些实施例中,处理器1200还包括图形处理器1208,以执行图形处理操作。在一些实施例中,图形处理器1208与一组共享缓存单元1206以及系统代理核心1210(包括一个或多个集成存储器控制器1214)相耦合。在一些实施例中,显示控制器1211与图形处理器1208耦合,以驱动图形处理器输出到一个或多个耦合的显示器。在一些实施例中,显示控制器1211可以是经由至少一个互连与图形处理器相耦合的单独模块,或者可被集成在图形处理器1208或者系统代理核心1210内。
在一些实施例中,使用基于环形的互连单元1212来耦合处理器1200的内部组件。然而,也可使用替代的互连单元,例如点对点互连、交换式互连或者其他技术,包括本领域公知的技术。在一些实施例中,图形处理器1208经由I/O链路1213与环形互连1212耦合。
示范性I/O链路1213代表多个品种的I/O互连中的至少一种,包括封装上I/O互连,它促进了各种处理器组件和高性能嵌入式存储器模块1218之间的通信,例如eDRAM(或者嵌入式DRAM)模块。在一些实施例中,处理器核心1202至1202N中的每一者和图形处理器1208使用嵌入式存储器模块1218作为共享的最后一级缓存。
在一些实施例中,处理器核心1202A至1202N是执行相同指令集体系结构的同构核心。在另一实施例中,处理器核心1202A至1202N就指令集体系结构(ISA)而言是异构的,其中处理器核心1202A至1202N中的一个或多个执行第一指令集,而其他核心中的至少一个执行第一指令集的子集或者不同的指令集。在一个实施例中,处理器核心1202A至1202N就微体系结构而言是异构的,其中具有相对更高的功率消耗的一个或多个核心与具有更低功率消耗的一个或多个功率核心相耦合。此外,处理器1200可被实现在一个或多个芯片上,或者被实现为SoC集成电路,该SoC集成电路除了其他组件以外还具有图示的组件。
图13是图形处理器1300的框图,该图形处理器可以是分立的图形处理单元,或者可以是与多个处理核心集成的图形处理器。在一些实施例中,图形处理器经由存储器映射的I/O接口与图形处理器上的寄存器和放入处理器存储器中的命令进行通信。在一些实施例中,图形处理器1300包括存储器接口1314以访问存储器。存储器接口1314可以是与本地存储器、一个或多个内部缓存、一个或多个共享外部缓存和/或系统存储器的接口。
在一些实施例中,图形处理器1300还包括显示控制器1302,以驱动显示输出数据到显示设备1320。显示控制器1302包括用于视频或用户界面元素的多个层的显示和合成的一个或多个覆盖平面的硬件。在一些实施例中,图形处理器1300包括视频编解码器引擎1306,用于将媒体编码到一个或多个媒体编码格式,从一个或多个媒体编码格式解码媒体,或者在一个或多个媒体编码格式之间对媒体进行转码,这些媒体编码格式包括但不限于运动图片专家组(Moving Picture Experts Group,MPEG)格式,例如MPEG-2,高级视频编码(Advanced Video Coding,AVC)格式,例如H.264/MPEG-4AVC,以及美国电影电视工程师协会(Society of Motion Picture&Television Engineers,SMPTE)321M/VC-1,以及联合摄影专家组(Joint Photographic Experts Group,JPEG)格式,例如JPEG和运动JPEG(MJPEG)格式。
在一些实施例中,图形处理器1300包括块图像传送(block image transfer,BLIT)引擎1304,以执行二维(2D)光栅化器操作,包括例如比特边界块传送。然而,在一个实施例中,使用图形处理引擎(graphics processing engine,GPE)1310的一个或多个组件执行3D图形操作。在一些实施例中,图形处理引擎1310是计算引擎,用于执行图形操作,包括三维(3D)图形操作和媒体操作。
在一些实施例中,GPE 1310包括3D流水线1312,用于执行3D操作,例如使用作用于3D基元形状(例如,矩形、三角形,等等)的处理函数来渲染三维图像和场景。3D流水线1312包括可编程的和固定的功能元素,这些功能元素执行元素内的各种任务和/或派生执行线程到3D/媒体子系统1315。虽然3D流水线1312可被用于执行媒体操作,但GPE 1310的实施例还包括媒体流水线1316,该媒体流水线专门用于执行媒体操作,例如视频后期处理和图像增强。
在一些实施例中,媒体流水线1316包括固定功能或者可编程逻辑单元,以执行一个或多个专门的媒体操作,例如视频解码加速、视频解交织以及视频编码加速,以代替或者代表视频编解码器引擎1306。在一些实施例中,媒体流水线1316还包括线程派生单元,用于派生线程来在3D/媒体子系统1315上执行。所派生的线程在3D/媒体子系统1315中包括的一个或多个图形执行单元上执行媒体操作的计算。
在一些实施例中,3D/媒体子系统1315包括用于执行由3D流水线1312和媒体流水线1316派生的线程的逻辑。在一个实施例中,流水线将线程执行请求发送到3D/媒体子系统1315,该3D/媒体子系统包括用于仲裁和调遣各种请求到可用线程执行资源的线程调遣逻辑。执行资源包括处理3D和媒体线程的图形执行单元的阵列。在一些实施例中,3D/媒体子系统1315包括用于线程指令和数据的一个或多个内部缓存。在一些实施例中,该子系统还包括共享存储器,包括寄存器和可寻址存储器,以在线程之间共享数据并且存储输出数据。
在以下描述中,记载了许多具体细节以提供更透彻的理解。然而,本领域技术人员将会清楚,没有这些具体细节中的一个或多个也可实现本文描述的实施例。在其他情况下,没有描述公知的特征以避免模糊这些实施例的细节。
以下示例涉及进一步实施例。示例1包括一种装置,包括:解码电路,对指令进行解码以确定是否启用了聚合密码引擎(CCE)电路;以及执行电路,用于执行所述指令以响应于确定所述CCE电路被启用而编程多个密钥,其中,所述CCE电路至少部分基于所述多个密钥中的至少一个密钥,来执行对在存储器和存储设备之间传送的数据的所有加密和所有解密。示例2包括如示例1所述的装置,其中,所述存储设备经由片上系统(SOC)设备耦合到所述存储器,其中,所述CCE电路耦合在片上系统(SOC)设备的输入输出存储器管理单元和所述存储器之间。示例3包括如示例1所述的装置,其中,所述CCE电路用于至少部分基于与从所述存储器读取的数据的物理地址的密钥标识符相关联的密钥,来执行对从所述存储器读取的数据的解密,其中,所述CCE电路还用于至少部分基于存储密钥来对经解密的从所述存储器读取的数据进行加密,然后才将经加密的数据存储在所述存储设备中。示例4包括如示例3所述的装置,其中,所述密钥标识符包括来自所述物理地址的多个比特。示例5包括如示例3所述的装置,其中,所述存储密钥被存储在密钥表中。示例6包括如示例1所述的装置,其中,所述CCE电路用于至少部分基于存储密钥来执行对从所述存储设备读取的数据的解密,其中,所述CCE电路还用于至少部分基于从所述存储设备读取的数据的物理地址的密钥标识符,来对经解密的从所述存储设备读取的数据进行加密以生成重加密的数据,然后才将所述重加密的数据存储在所述存储器中。示例7包括如示例6所述的装置,其中,所述密钥标识符包括来自所述物理地址的多个比特。示例8包括如示例6所述的装置,其中,所述存储密钥被存储在密钥表中。
示例9包括一种装置,包括:聚合密码引擎(CCE)电路,用于执行对要在存储器和存储设备之间传送的数据的所有加密和所有解密,其中,所述存储设备经由片上系统(SOC)设备耦合到所述存储器,其中,所述CCE电路耦合在片上系统(SOC)设备的输入输出存储器管理单元和所述存储器之间。示例10包括如示例9所述的装置,其中,所述CCE电路用于至少部分基于与从所述存储器读取的数据的物理地址的密钥标识符相关联的密钥,来执行对从所述存储器读取的数据的解密,其中,所述CCE电路用于至少部分基于存储密钥来对经解密的从所述存储器读取的数据进行加密,然后才将经加密的数据存储在所述存储设备中。示例11包括如示例10所述的装置,其中,所述密钥标识符包括来自所述物理地址的多个比特。示例12包括如示例10所述的装置,其中,所述存储密钥被存储在密钥表中。示例13包括如示例9所述的装置,其中,所述CCE电路用于至少部分基于存储密钥来执行对从所述存储设备读取的数据的解密,其中,所述CCE电路还用于至少部分基于从所述存储设备读取的数据的物理地址的密钥标识符,来对经解密的从所述存储设备读取的数据进行加密以生成重加密的数据,然后才将所述重加密的数据存储在所述存储器中。示例14包括如示例13所述的装置,其中,所述密钥标识符包括来自所述物理地址的多个比特。示例15包括如示例13所述的装置,其中,所述存储密钥被存储在密钥表中。示例16包括如示例9所述的装置,其中,所述CCE电路用于基于高级加密标准(AES)-带密文窃取的XEX可调整分组密码(XTS),来对所述数据进行加密或解密。示例17包括如示例9所述的装置,其中,所述CCE电路用于基于高级加密标准(AES)-伽罗瓦/计数器模式(GCM),来对所述数据进行加密或解密。示例18包括如示例9所述的装置,其中,所述存储器包括动态随机访问存储器。示例19包括如示例9所述的装置,其中,所述存储设备包括非易失性存储器(NVM)驱动器。示例20包括如示例19所述的装置,其中,所述NVM驱动器根据NVM快速协议进行操作。
示例21包括一个或多个非暂态计算机可读介质,包括一个或多个指令,所述一个或多个指令当在至少一个处理器上被执行时配置所述至少一个处理器来执行一个或多个操作,用于:基于对指令的解码来确定聚合密码引擎(CCE)电路是否被启用;并且在确定所述CCE电路被启用之后,响应于所述指令的执行而对多个密钥进行编程,其中,所述CCE电路用于至少部分基于所述多个密钥中的至少一个密钥,来执行对在存储器和存储设备之间传送的数据的所有加密和所有解密。示例22包括如示例21所述的一个或多个计算机可读介质,还包括一个或多个指令,该一个或多个指令当在所述至少一个处理器上被执行时配置所述至少一个处理器来执行一个或多个操作,以使得所述CCE电路至少部分基于与从所述存储器读取的数据的物理地址的密钥标识符相关联的密钥,来执行对从所述存储器读取的数据的解密,其中,所述CCE电路至少部分基于存储密钥来对经解密的从所述存储器读取的数据进行加密,然后才将经加密的数据存储在所述存储设备中。示例23包括如示例22所述的一个或多个计算机可读介质,其中,所述密钥标识符包括来自所述物理地址的多个比特。示例24包括如示例22所述的一个或多个计算机可读介质,还包括一个或多个指令,该一个或多个指令当在所述至少一个处理器上被执行时配置所述至少一个处理器来执行一个或多个操作,以使得将所述存储密钥存储在密钥表中。示例25包括如示例21所述的一个或多个计算机可读介质,还包括一个或多个指令,该一个或多个指令当在所述至少一个处理器上被执行时配置所述至少一个处理器来执行一个或多个操作,以使得所述CCE电路至少部分基于存储密钥来执行对从所述存储设备读取的数据的解密,其中,所述CCE电路至少部分基于从所述存储设备读取的数据的物理地址的密钥标识符,来对经解密的从所述存储设备读取的数据进行加密以生成重加密的数据,然后才将所述重加密的数据存储在所述存储器中。
示例26包括一种装置,包括用于执行如任何在前示例中记载的方法的装置。示例27包括机器可读存储装置,其中包括机器可读指令,所述指令当被执行时,实现如任何在前示例中记载的方法或者实现如任何在前示例中记载的装置。
在各种实施例中,参考图1及其后各个附图论述的一个或多个操作可由参考任何附图论述的一个或多个组件(在此可互换地称为“逻辑”)执行。
在各种实施例中,本文论述的操作,例如参考图1及其后各图论述的操作,可被实现为硬件(例如,逻辑电路)、软件、固件或者其组合,其可被提供为计算机程序产品,例如,包括一个或多个有形(例如,非暂态)机器可读或计算机可读介质,其上存储有用于对计算机编程以执行本文论述的过程的指令(或者软件过程)。该机器可读介质可包括存储设备,例如关于附图论述的那些。
此外,这种计算机可读介质可作为计算机程序产品被下载,其中该程序可经由通信链路(例如,总线、调制解调器、或者网络连接)通过在载波或其他传播介质中提供的数据信号被从远程计算机(例如,服务器)传送到请求方计算机(例如,客户端)。
本说明书中提及“一个实施例”或“实施例”的意思是联系该实施例描述的特定特征、结构和/或特性可被包括在至少一个实现方式中。在本说明书中各种地方出现短语“在一个实施例中”可能全都指的是同一实施例,也可能不是全都指同一实施例。
另外,在说明书和权利要求中,可以使用术语“耦合”和“连接”及其衍生词。在一些实施例中,“连接”可被用于指示出两个或更多个元素与彼此发生直接物理或电气接触。“耦合”的意思可以是两个或更多个元素发生直接物理或电气接触。然而,“耦合”也可以指两个或更多个元素可能没有与彼此发生直接接触,但仍可与彼此合作或交互。
从而,虽然是以依结构特征和/或方法动作而定的语言来描述实施例的,但要理解,要求保护的主题可不限于所描述的具体特征或动作。更确切地说,这些具体特征和动作是作为实现要求保护的主题的样本形式被公开的。
Claims (22)
1.一种提供用于存储加密的聚合密码引擎CCE的装置,所述装置包括:
解码电路,用于对指令进行解码以确定是否启用了聚合密码引擎CCE电路;以及
执行电路,用于执行所述指令以响应于确定所述CCE电路被启用而编程多个密钥,
其中,所述CCE电路用于至少部分基于所述多个密钥中的至少一个密钥,来执行对要在存储器和存储设备之间传送的数据的所有加密和所有解密。
2.如权利要求1所述的装置,其中,所述存储设备经由片上系统SOC设备耦合到所述存储器,其中,所述CCE电路耦合在片上系统SOC设备的输入输出存储器管理单元和所述存储器之间。
3.如权利要求1所述的装置,其中,所述CCE电路用于至少部分基于与从所述存储器读取的数据的物理地址的密钥标识符相关联的密钥,来执行对从所述存储器读取的数据的解密,其中,所述CCE电路还用于至少部分基于存储密钥来对经解密的从所述存储器读取的数据进行加密,然后才将经加密的数据存储在所述存储设备中。
4.如权利要求3所述的装置,其中,所述密钥标识符包括来自所述物理地址的多个比特。
5.如权利要求3所述的装置,其中,所述存储密钥被存储在密钥表中。
6.如权利要求1所述的装置,其中,所述CCE电路用于至少部分基于存储密钥来执行对从所述存储设备读取的数据的解密,其中,所述CCE电路还用于至少部分基于从所述存储设备读取的数据的物理地址的密钥标识符,来对经解密的从所述存储设备读取的数据进行加密以生成重加密的数据,然后才将所述重加密的数据存储在所述存储器中。
7.如权利要求6所述的装置,其中,所述密钥标识符包括来自所述物理地址的多个比特。
8.如权利要求6所述的装置,其中,所述存储密钥被存储在密钥表中。
9.一种提供用于存储加密的聚合密码引擎CCE的装置,所述装置包括:
聚合密码引擎CCE电路,用于执行对要在存储器和存储设备之间传送的数据的所有加密和所有解密,
其中,所述存储设备经由片上系统SOC设备耦合到所述存储器,
其中,所述CCE电路耦合在片上系统SOC设备的输入输出存储器管理单元和所述存储器之间。
10.如权利要求9所述的装置,其中,所述CCE电路用于至少部分基于与从所述存储器读取的数据的物理地址的密钥标识符相关联的密钥,来执行对从所述存储器读取的数据的解密,其中,所述CCE电路还用于至少部分基于存储密钥来对经解密的从所述存储器读取的数据进行加密,然后才将经加密的数据存储在所述存储设备中。
11.如权利要求10所述的装置,其中,所述密钥标识符包括来自所述物理地址的多个比特。
12.如权利要求10所述的装置,其中,所述存储密钥被存储在密钥表中。
13.如权利要求9所述的装置,其中,所述CCE电路用于至少部分基于存储密钥来执行对从所述存储设备读取的数据的解密,其中,所述CCE电路还用于至少部分基于从所述存储设备读取的数据的物理地址的密钥标识符,来对经解密的从所述存储设备读取的数据进行加密以生成重加密的数据,然后才将所述重加密的数据存储在所述存储器中。
14.如权利要求13所述的装置,其中,所述密钥标识符包括来自所述物理地址的多个比特。
15.如权利要求13所述的装置,其中,所述存储密钥被存储在密钥表中。
16.如权利要求9所述的装置,其中,所述CCE电路用于基于高级加密标准AES-带密文窃取的XEX可调整分组密码XTS,来对所述数据进行加密或解密。
17.如权利要求9所述的装置,其中,所述CCE电路用于基于高级加密标准AES-伽罗瓦/计数器模式GCM,来对所述数据进行加密或解密。
18.如权利要求9所述的装置,其中,所述存储器包括动态随机访问存储器。
19.如权利要求9所述的装置,其中,所述存储设备包括非易失性存储器NVM驱动器。
20.如权利要求19所述的装置,其中,所述NVM驱动器根据NVM快速协议进行操作。
21.一种机器可读介质,包括代码,所述代码在被执行时,使得机器执行权利要求1至20中任一项的操作。
22.一种设备,包括用于执行权利要求1至20中任一项的操作的装置。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
USPCT/US2020/066279 | 2020-12-20 | ||
PCT/US2020/066279 WO2022132184A1 (en) | 2020-12-20 | 2020-12-20 | System, method and apparatus for total storage encryption |
US17/133,627 US20220198027A1 (en) | 2020-12-20 | 2020-12-23 | Storage encryption using converged cryptographic engine |
US17/133,627 | 2020-12-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114647858A true CN114647858A (zh) | 2022-06-21 |
Family
ID=77910674
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111374868.4A Pending CN114647858A (zh) | 2020-12-20 | 2021-11-19 | 使用聚合密码引擎的存储加密 |
Country Status (2)
Country | Link |
---|---|
EP (1) | EP4016358A1 (zh) |
CN (1) | CN114647858A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11847067B2 (en) | 2021-06-25 | 2023-12-19 | Intel Corporation | Cryptographic protection of memory attached over interconnects |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3688649A1 (en) * | 2017-09-29 | 2020-08-05 | INTEL Corporation | Cryptographic memory ownership |
US20190342093A1 (en) * | 2019-06-28 | 2019-11-07 | Siddhartha Chhabra | Converged cryptographic engine |
-
2021
- 2021-09-23 EP EP21198475.2A patent/EP4016358A1/en active Pending
- 2021-11-19 CN CN202111374868.4A patent/CN114647858A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11847067B2 (en) | 2021-06-25 | 2023-12-19 | Intel Corporation | Cryptographic protection of memory attached over interconnects |
US11874776B2 (en) | 2021-06-25 | 2024-01-16 | Intel Corporation | Cryptographic protection of memory attached over interconnects |
Also Published As
Publication number | Publication date |
---|---|
EP4016358A1 (en) | 2022-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220198027A1 (en) | Storage encryption using converged cryptographic engine | |
US11755500B2 (en) | Cryptographic computing with disaggregated memory | |
US20220206958A1 (en) | Cryptographic computing including enhanced cryptographic addresses | |
KR101692914B1 (ko) | Sha256 알고리즘의 메시지 스케줄링을 위한 명령어 세트 | |
CN110659244A (zh) | 内联编码能力 | |
EP3843322A1 (en) | Method and apparatus for multi-key total memory encryption based on dynamic key derivation | |
US11847067B2 (en) | Cryptographic protection of memory attached over interconnects | |
JP2019207393A (ja) | 高性能認証付き暗号に関するハードウェアアクセラレータ及び方法 | |
EP4109312A1 (en) | Circuitry and methods for supporting encrypted remote direct memory access (erdma) for live migration of a virtual machine | |
US11436342B2 (en) | TDX islands with self-contained scope enabling TDX KeyID scaling | |
US20220100911A1 (en) | Cryptographic computing with legacy peripheral devices | |
EP4016358A1 (en) | Storage encryption using converged cryptographic engine | |
CN114281406A (zh) | 用于空间上唯一且位置独立的持久存储器加密的电路和方法 | |
EP2887224A1 (en) | Latency agnostic transaction buffer for request-grant protocols | |
US20230032236A1 (en) | Data streaming accelerator | |
EP4156005A1 (en) | System, apparatus and method for direct peripheral access of secure storage | |
EP4044027A2 (en) | Region-based deterministic memory safety | |
US20220417042A1 (en) | Platform sealing secrets using physically unclonable function (puf) with trusted computing base (tcb) recoverability | |
EP4020231B1 (en) | Speculative decompression within processor core caches | |
US20220413715A1 (en) | Zero-redundancy tag storage for bucketed allocators | |
US11734436B2 (en) | Organic light emitting diode (OLED) compensation based on protected content | |
US20230094171A1 (en) | Memory assisted incline encryption/decryption |
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 |