CN113051626A - 基于动态密钥推导的多密钥全存储器加密的方法和装置 - Google Patents
基于动态密钥推导的多密钥全存储器加密的方法和装置 Download PDFInfo
- Publication number
- CN113051626A CN113051626A CN202011017996.9A CN202011017996A CN113051626A CN 113051626 A CN113051626 A CN 113051626A CN 202011017996 A CN202011017996 A CN 202011017996A CN 113051626 A CN113051626 A CN 113051626A
- Authority
- CN
- China
- Prior art keywords
- key
- processor
- instruction
- field
- circuitry
- 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 claims abstract description 226
- 238000000034 method Methods 0.000 title claims abstract description 34
- 238000009795 derivation Methods 0.000 title claims abstract description 23
- 230000006870 function Effects 0.000 claims abstract description 52
- 239000013598 vector Substances 0.000 description 103
- 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 73
- 238000010586 diagram Methods 0.000 description 45
- 238000006073 displacement reaction Methods 0.000 description 40
- 238000012545 processing Methods 0.000 description 28
- 238000007667 floating Methods 0.000 description 19
- 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 17
- 238000004891 communication Methods 0.000 description 9
- 238000006243 chemical reaction Methods 0.000 description 8
- 239000000126 substance Substances 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 7
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000001052 transient effect Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000013501 data transformation Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- UIERETOOQGIECD-ARJAWSKDSA-N angelic acid group Chemical group C(\C(\C)=C/C)(=O)O UIERETOOQGIECD-ARJAWSKDSA-N 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program 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
- 230000006837 decompression Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 150000003839 salts Chemical class 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012546 transfer 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
-
- 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
-
- 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/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- 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/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- 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/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
-
- 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/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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
-
- 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/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/107—License processing; Key processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2463/00—Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
- H04L2463/062—Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying encryption of the keys
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
Abstract
所公开的实施例涉及基于动态密钥推导的多密钥全存储器加密的方法和装置。在一个示例中,处理器包括:密码电路;具有多个密钥拆分和多个完整加密密钥的存储装置;获取和解码电路,用于对指定操作码、地址和keyID的指令进行获取和解码,该操作码要求处理器使用地址来确定是否使用显式密钥,在确定使用显式密钥的情况下,keyID用于选择多个完整加密密钥之一以用作密码密钥,否则,处理器将通过以下方式来动态地推导密码密钥,所述方式是使用keyID选择多个密钥拆分之一、并将密钥拆分和根密钥提供给密钥推导函数以推导密码密钥,加密电路使用该密码密钥对所寻址的存储器位置执行密码操作。
Description
技术领域
发明的领域总地涉及计算机处理器架构,并且更具体地涉及用于基于动态密钥推导的多密钥全存储器加密(MKTME)的方法和装置。
背景技术
对鲁棒的计算机安全性的日益增长的需求已经导致密码学在主流计算机系统和网络中的广泛使用。例如,磁盘加密可以用来保护驻留在永久性磁盘存储设备上的数据,而网络加密可以用来保护通过网络传输的数据。
数据处理系统可以使用虚拟机(VM)来为不同的软件堆栈提供不同的执行环境。用于管理数据处理系统内的VM的软件可被称为管理程序或虚拟机监视器(VMM)。执行VMM的数据处理系统可被称为主机。相比之下,VM的内容可被称为客户机。
VM服务器可以为VM提供受保护的存储器区域。VM服务器可以包括与存储器管理器通信的一个或多个处理器,该存储器管理器包括加密引擎,该加密引擎用来加密从一个或多个处理器传播到存储器的数据,并用来解密从存储器返回到一个或多个处理器的数据。
作为益处,VM服务器可以支持成百上千个虚拟机,每个虚拟机具有与其他虚拟机不同的唯一加密密钥。然而,遗憾的是,为每个虚拟机存储一个或多个加密密钥需要大量存储器,这带来显著的成本和用电。
发明内容
根据本公开的一方面,提供了一种处理器,包括:获取电路,用于获取指令;解码电路,用于对获取的指令进行解码,所述获取的指令用于指定操作码、地址和密钥标识符,所述操作码指示所述处理器将使用所述地址来确定是否使用显式密钥,在确定使用显式密钥的情况下,所述处理器将使用所述密钥标识符在多个完整加密密钥中选择密码密钥,否则,所述处理器将通过以下方式来动态地推导所述密码密钥,所述方式是使用所述密钥标识符在多个密钥拆分中选择密钥拆分、并将所述密钥拆分和根密钥提供给密钥推导函数KDF,所述处理器还将使用所述密码密钥与加密电路,以对经加密的存储器位置执行密码操作;和执行电路,用于按照所述操作码来执行所述指令,其中,每个密钥拆分需要比每个完整加密密钥更少的存储。
根据本公开的另一方面,提供了一种由处理器执行的方法,该处理器包括:存储器控制器,用于使用密码电路对数据进行加密和解密;以及存储装置,用于存储多个密钥拆分和多个完整加密密钥,该方法包括:使用获取电路来获取指令;使用解码电路对获取的指令进行解码,所述获取的指令指定操作码、地址和密钥标识符,所述操作码指示所述处理器将使用所述地址来确定是否使用显式密钥,在确定使用显式密钥的情况下,所述处理器将使用所述密钥标识符在所述多个完整加密密钥中选择密码密钥,否则,所述处理器将通过以下方式来动态地推导所述密码密钥,所述方式是使用所述密钥标识符在多个密钥拆分中选择密钥拆分、并将所述密钥拆分和根密钥提供给由所述存储器控制器实现的密钥推导函数KDF,所述存储器控制器还将使用所述密码密钥与加密电路来对经加密的存储器位置执行密码操作;和使用执行电路按照所述操作码来执行所述指令,其中,每个密钥拆分需要比每个完整加密密钥更少的存储。
根据本公开的又一方面,提供了一种系统,包括:用于存储指令的存储器;处理器,该处理器包括:获取电路,用于获取指令;解码电路,用于对获取的指令进行解码,所述获取的指令用于指定操作码、地址和密钥标识符,所述操作码指示所述处理器将使用所述地址来确定是否使用显式密钥,在确定使用显式密钥的情况下,所述处理器将使用所述密钥标识符在多个完整加密密钥中选择密码密钥,否则,所述处理器将通过以下方式来动态地推导所述密码密钥,所述方式是使用所述密钥标识符在多个密钥拆分中选择密钥拆分、并将所述密钥拆分和根密钥提供给密钥推导函数KDF,所述处理器还将使用所述密码密钥与加密电路来对经加密的存储器位置执行密码操作;和执行电路,用于按照所述操作码来执行所述指令,其中,每个密钥拆分需要比每个完整加密密钥更少的存储。
附图说明
在附图的各图中通过示例而非限制的方式示出了本发明,其中相似的附图标记指示类似的元件并且其中:
图1示出了根据一些实施例的密码保护系统中的配备有存储器和存储加密的设备;
图2是示出用于推导密钥的电路的实施例的框图;
图3是示出根据一些实施例的用于推导密钥的过程的方框流程图;
图4示出了根据一些实施例的加密指令的格式;
图5是用于配置受保护域的PCONFIG指令的示例;
图6是示出根据一些实施例的用于执行指令的处理组件的框图;
图7A-7B是示出根据本发明的一些实施例的通用向量友好指令格式及其指令模板的框图;
图7A是示出根据本发明的一些实施例的通用向量友好指令格式及其A类指令模板的框图;
图7B是示出根据本发明的一些实施例的通用向量友好指令格式及其B类指令模板的框图;
图8A是示出根据本发明的一些实施例的示例性特定向量友好指令格式的框图;
图8B是示出根据一个实施例的构成完整操作码字段的特定向量友好指令格式的字段的框图;
图8C是示出根据一个实施例的构成寄存器索引字段的特定向量友好指令格式的字段的框图;
图8D是示出根据一个实施例的构成增强操作字段的特定向量友好指令格式的字段的框图;
图9是根据一个实施例的寄存器架构的框图;
图10A是示出根据一些实施例的示例性顺序流水线和示例性寄存器重命名、乱序发布/执行流水线的框图;
图10B是示出根据一些实施例的处理器中所要包括的顺序架构核的示例性实施例和示例性寄存器重命名、乱序发布/执行架构核的框图;
图11A-B示出了更具体的示例性顺序核架构的框图,该核将是芯片中的几个逻辑块(包括相同类型和/或不同类型的其他核)之一;
图11A是根据一些实施例的单个处理器核以及其与管芯上互连网络的连接以及其2级(L2)缓存的本地子集的框图;
图11B是根据一些实施例的图11A中的处理器核的一部分的展开图;
图12是根据一些实施例的处理器的框图,该处理器可具有多于一个核、可具有集成的存储器控制器并且可具有集成的图形;
图13-16是示例性计算机架构的框图;
图13示出了根据一些实施例的系统的框图;
图14是根据一些实施例的第一更具体的示例性系统的框图;
图15是根据一些实施例的第二更具体的示例性系统的框图;
图16是根据一些实施例的片上系统(SoC)的框图;并且
图17是根据一些实施例的对照使用软件指令转换器来将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。
具体实施方式
在以下描述中,阐述了许多具体细节。然而,明白的是,可以在没有这些具体细节的情况下实践一些实施例。在其他情况下,尚未详细示出众所周知的电路、结构和技术,以免使对本说明书的理解模糊。
说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用指示所描述的实施例可包括特征、结构或特性,但是每个实施例可能不一定包括该特征、结构或特性。此外,这样的短语不一定指相同的实施例。另外,当关于实施例描述特征、结构或特性时,如果明确描述,则认为关于其他实施例影响这样的特征、结构或特性在本领域技术人员的知识范围内。
如上所述,存在使系统安全的不断增长的需求,尤其是随着越来越多的企业数据正在移动到云。安全技术包括全存储器加密(TME),其中从核移动到存储器的数据在其回到硬件形式的核的途中被加密和解密。MK-TME(多密钥TME)是对TME的增强,其允许使用多个密钥(所支持的密钥的数量取决于实现方式)以及可配置为允许使用不同密钥对不同页面进行加密的软件。在一些实施例中,例如在云服务提供商(CSP)上下文中,MKTME可以实现不同CSP工作负载之间的密码隔离。
所公开的本发明的实施例提供了一种方法,该方法动态地/实时地推导MKTME所需的加密密钥,而不是将密钥存储在缓存中。所公开的实施例因此提供了在不牺牲性能的情况下解决该硬件缓存/管芯尺寸/成本问题的优点。
在替代的、较差的MKTME方法中,所有的加密和调整密钥都存储在处理器上的硬件缓存中。换句话说,整组的可用密钥都存储在加密引擎内,需要与(密钥的数量x密钥的完整大小)相等的存储。然而,随着加密密钥大小增加(例如从128位增加到256位)以及密钥的数量增加(例如从64增加到256以及更多),对硬件缓存/SRAM的大小要求急剧增加。对于主AES密钥,密钥的完整大小可以为128b或256b,并且如果加密算法需要一个调整密钥,则密钥的完整大小还可包括128或256b调整密钥。
有利地,所公开的实施例允许使用大大减少的存储元件来存储可用密钥的子集(并且在一些实施方式中为所有可用密钥)。具体而言,所公开的实施例建立一个或少量的根密钥(RK1、RK2等),其包括完整的期望熵(128或256位)。然后,对于所需的每个唯一对称加密密钥(EK1、EK2等),存储“密钥拆分(key split)”或“盐(salt)”值(KS1、KS2等),其与密钥推导函数一起使用以便恢复加密密钥。
在操作中,在一些实施例中,当读取和写入周期到达存储器控制器时,它们伴随有KeyID。在替代方法中,KeyID用作直接查找对应密钥值的索引。然而,对于所公开的实施例,KeyID用作查找密钥拆分值的索引,密钥拆分值然后被路由到密钥推导函数(KDF)中以恢复加密密钥。在存储器接口上完成读取周期的同时完成KDF操作,所以当密文被返回时,加密密钥可用于对数据进行解密,而没有额外的等待时间。基于可用于执行变换的时间预算,KDF的输出可用作加密密钥或解密密钥。在读或写路径上需要该转换。
图1示出了根据所公开的实施例的用于提供用于存储在存储器和存储设备中的数据的加密的计算系统的示例。在一个实施例中,计算系统100是片上系统(SOC)。尽管计算系统100在图1中已被示为相接的,然而与所公开的实施例一致的系统实际上可以由单独的设备(例如,经由有线或无线的通信而耦合)组成。如图所示,计算系统100包括处理电路102、存储器电路104、I/O电路106和互连109。在操作中,处理电路102执行对存储在存储器电路104中的数据进行操作的动作。I/O电路106例如经由由存储器电路104生成的直接存储器访问(DMA)请求来生成数据(例如,来自用户交互)或接收数据(例如,来自网络源或存储设备)以存储在存储器电路104中。互连109包括互连结构电路,以控制如何在使处理电路102、存储器电路104和I/O电路106耦合的一个或多个总线上传送数据。例如,在高速外围组件互连(PCIe)系统中,互连109包括至少一个端口和由交换设备组成的交换结构,以生成对处理电路102的事务请求。注意,互连109还可包括从处理电路102到存储器电路108的点对点链接。
处理电路102包括存储器控制器108、核电路110和加密电路112。存储器控制器108控制访问以从存储器电路104读取数据和/或向存储器电路104写入数据。核电路110包括至少一个处理核以处理在存储器电路104和/或一个或多个缓存(未示出)中存储的数据。密码电路112被配置为在存储在存储器电路104中之前对明文数据(例如,未加密的数据)进行加密,并被配置为在数据被核电路110处理、数据被DMA到计算系统100中的另一位置、存储在存储设备中等之前对先前加密的数据进行解密。在一个实施例中,密码电路112包括实现TME(全存储器加密)和/或MKTME(多密钥全存储器加密)的电路。
在操作中,存储器控制器108和互连109控制从核电路110和/或I/O电路106流到存储器电路104的数据,反之亦然。当执行该功能时,存储器控制器108适当地将要存储在存储器电路104中的数据路由通过密码电路112,以使得该数据在存储在存储器电路104中之前被加密,或者当数据已经被加密时使密码电路112被跳过。以这种方式,存储器控制器确保避免冗余的加密。存储器控制器108将从存储器电路104接收的数据路由通过密码电路112,以按照指示对经加密的数据进行解密。经解密的数据可以由核电路110处理,或者经由I/O电路106通过I/O接口传送。在某些情况下,存储器控制器108在经由I/O电路106通过I/O接口传送经加密的数据之前将数据保留为加密形式。
存储器104可以允许在运行时为像OS、应用程序、实用程序、驱动程序等一样的较低权限软件提供保护。在至少一个实施例中,可以根据以已知的方式在处理电路102(包括密码电路112)中实现的TME和MKTME技术将存储器104内的数据加密为经加密的存储器112。TME可以将计算系统100的存储器104(例如,物理存储器)的至少一部分加密为经加密的存储器112。经加密的存储器112可以防止丢失或被盗的系统(例如,其中攻击者具有对系统的物理访问权)受到损害。在这种情形下,在存储器未被加密的情况下,攻击者可能能够获取敏感的用户信息,包括例如用于对存储设备中的数据进行磁盘解密的密钥。
在一些支持TME/MKTME的实现方式(其中设备是SoC(片上系统))中,加密引擎在通向外部存储器总线的直接数据路径中,因此进入和/或离开存储器总线上的设备的所有存储器数据都被加密。设备内部(缓存等中)的数据保持明文,因此支持现有的软件和I/O模型。
在这种情况下,数据通过互连109以明文形式被传送到处理电路102和I/O电路106。在一些实施例中,由处理器电路102执行的OS(操作系统)或其他软件不涉及控制在存储器电路104、处理电路102、互连109、I/O电路106和存储设备之间传送的数据的加密或解密。
I/O电路106包括PCIe根端口121、PCIe根端口125,并且被附接到:高速非易失性存储器(NVMe)固态驱动器(SSD)137,附接到串行AT附件(SATA)SSD 139的SATA 129的PCI集成端点,附接到通用闪存存储(UFS)SSD 141的UFS 133的PCI集成端点,诸如此类。尽管在图1中仅示出了I/O接口和存储设备的几个示例,但是明白的是,在任何给定的设备中可以存在任何数量的I/O接口和存储设备,或者任何类型的I/O接口和存储设备。
在一个实施例中,当处理电路102是SOC时,存储设备可以在该SOC的外部。由于加密和解密的控制由存储器控制器108管理,因此在本发明的实施例中,不需要OS进行任何介入或干预。因此,提高了设备性能以及整体设备安全性。
图2是示出用于推导密钥的电路的实施例的框图。如图所示,电路200接收KeyID202作为输入。电路200包括用于一组密钥拆分的存储204以及在完整密钥存储206中存储的显式密钥。在一个实施例中,计算系统将用于多密钥全存储器加密(MKTME)的密钥空间划分为例如在完整密钥存储206中存储的一组“显式密钥”以及例如将基于在密钥拆分存储204中存储的密钥拆分而推导出的一组“推导密钥”。密钥拆分存储204的使用提供了硅面积成本和用电方面的优点,这是因为:如下所述,需要少得多的存储。因为以这种方式来划分密钥空间,所以KeyID 202被路由到范围查找208,以确定该KeyID是对应于显式密钥还是推导密钥。如果KeyID对应于显式密钥,则KeyID 202用作选择器216中的索引以选择正确的完整加密密钥。选择器(例如,多路复用器218)将显式密钥或推导密钥路由到密钥推导输出220。
但是,如果范围查找208确定KeyID 202选择了推导密钥,则KeyID202用作选择器214中的索引以选择正确的密钥拆分,该密钥拆分与根密钥210一起被馈送到密钥推导函数KDF 212中,以推导对应的加密密钥。如在下文中使用的,可以说KDF 212“恢复”或“生成”或“计算”加密密钥。
在一些实施例中,密钥拆分大小是48-64b。最佳大小将取决于系统属性。与存储完整的256b主密钥和调整密钥相比,仅存储密钥拆分可以提供显著减少所需存储的潜在优点。如果支持少量密钥,则节省的区域将不会超过用来执行KDF的所需密码引擎的区域。然而,随着密钥的数量增加,将通过交叉点,在该交叉点处存储节省量超过密码引擎的增量区域。
密钥推导函数的选择
如上所述,各种函数可以用作由KDF 212实现的函数。
一些实施例例如使用XTS-AES加密函数。如由电气和电子工程师协会(I5)作为出版物I5 P1916/D16进行描述和标准化的,(XTS指的是具有密文窃取的基于XEX的调整后的码本模式,并且AES指的是高级加密标准)。XTS-AES是可调区块密码(tweakable blockcipher),其可以用于对基于扇区的存储进行加密。XTS-AES作用于128位或更多位的数据单元,并使用AES区块密码作为子例程。XTS-AES的密钥材料由数据加密密钥(由AES区块密码使用)以及“调整密钥”组成,调整密钥用于将数据块的逻辑位置并入加密中。XTSS是在参考文献[XEX04]中描述的可调区块密码的类的具体实例化。XTS-AES解决了诸如复制和粘贴以及字典攻击之类的威胁,同时允许密码实现中的并行化和流水线化。一些使用XTS-AES进行加密的实施例实际上在KDF 212中并行执行两个KDF操作:一个用于恢复主加密密钥,一个用于恢复调整密钥。
在其他实施例中,KDF 212使用美国国家标准技术研究院(NIST)所描述和标准化的NIST SP800-108。在一些实施例中,当212使用NIST SP800-108来推导密钥时,密钥拆分大小为48-64b。最佳大小将取决于系统属性。
有利地,与存储完整的256b主密钥和调整密钥相比,仅存储密钥拆分使得所需存储被减少到的大约10分之一。如果支持少量密钥,则节省的区域将不会超过用来执行KDF的所需密码引擎的区域。然而,随着密钥的数量增加,将通过交叉点,在该交叉点处存储节省超过密码引擎的增量区域。
图3是示出根据一些实施例的用于推导密钥的过程的方框流程图。在一个实施例中,流程300由具有存储器控制器和用于存储多个密钥拆分和多个完整加密密钥的存储装置的处理器来执行,该存储器控制器用于使用密码电路对数据进行加密和解密。流程300开始于操作310,在操作310期间,处理器将使用获取电路来获取指令。在操作315,处理器将使用解码电路对指令进行解码。
指令的示例被示出为加密指令301。关于图4、图7A-B和图8A-D进一步示出和描述加密指令的格式。如图所示,加密指令301包括指定操作码302、目标位置304、源位置306和keyID 308的字段。在一些实施例中,像这里一样,操作码302指示处理器将使用源位置306(例如,地址)来例如通过使用范围查找208确定是否使用显式密钥,在确定使用显式密钥的情况下,处理器将使用keyID 308在多个完整加密密钥(例如完整加密密钥存储206(图2))中选择密码密钥。否则,处理器将通过使用keyID在存储204中的多个密钥拆分中选择密钥拆分来动态地推导密码密钥。在推导的加密密钥的情况下,操作码还要求处理器将密钥拆分和根密钥提供给由存储器控制器实现的密钥推导函数(KDF),例如KDF212。
在一些实施例中,在操作320,处理器将调度指令的执行。在一些实施例中,在操作330,处理器将提交执行的结果。在操作可以在不同的时间发生或根本不发生的情况下,操作320如其虚线边框所示是可选的。
操作码302还要求处理器使用密码密钥与加密电路,以对经加密的存储器位置执行密码操作。在操作325,处理器将按照操作码使用执行电路来执行指令。
在一些实施例中,在操作330,处理器将提交执行的结果。在操作可以在不同的时间发生或根本不发生的情况下,操作330如其虚线边框所示是可选的。
图4示出了根据一些实施例的加密指令的格式。如图所示,加密指令400包括用于指定操作码405、目标位置410、源位置415和keyID 420的字段。加密指令400具有几个可选字段,其包括被示出为以下各项的几个可选字段:源宽度425,源元素大小430,写掩码435,以及零控制440。加密指令400的可选字段以虚线边框示出。
在一些实施例中,操作码405要求进行加密或解密操作。405的操作码被示出为包括星号,其指示可以将附加的前缀或后缀添加到操作码中以进一步指定不同的指令行为。
源位置415和目标位置410可以各自指定存储器位置(例如指定一向量,该向量具有以存储器地址开始的连续存储的元素)或寄存器位置(例如向量寄存器,诸如图9中的xmm、ymm和zmm向量寄存器)。
KeyID 420可以是标量值,该标量值指定要在执行所公开的算法时使用的keyID,例如如在图3中示出和描述。在一些实施例中,keyID 420可以指定寄存器位置,在该寄存器位置处存储要使用的标量值。
如图所示,可选字段包括:源宽度425,其用于指定源和目标所位于的寄存器和/或存储器位置的宽度;源元素大小430,其用于指定源向量的每个元素的宽度,它是2位、4位、8位、16位、32位、64位等;写掩码435,其要么是多位字段要么标识多位写掩码寄存器,其中这些位中的每个位控制在执行之后是否要更新对应的目标元素,或者是否屏蔽该对应元素;以及零控制440,其指定是将被屏蔽的目标元素归零还是保留其先前值。
在受保护的域中配置密码
在一些实施例中,可以使用由处理电路102实现的处理器指令(诸如结合图5并贯穿本公开描述的“平台配置”(PCONFIG)指令)来定义和/或配置受保护的域。PCONFIG指令例如可以用来通过在存储器控制器108中的密钥表(例如,图2的204和206)中编程新条目(或修改现有条目)来定义和/或配置受保护的域。以这种方式,可以使用PCONFIG指令以编程方式(例如,通过管理软件)定义和配置受保护的域。
在一些实施例中,处理器实现可以用来配置与存储器保护系统相关联的受保护域的指令。例如,处理器指令可以是“平台配置”(PCONFIG)指令、“可信平台动作管理器”(TPAS)指令和/或任何其他合适类型的指令。
“平台配置”(PCONFIG)指令可以用来通过在存储器保护控制器的域密钥表(例如,图1的存储器控制器108中的密钥表,诸如图2的204和206)中编程新条目(或修改现有条目)来定义和/或配置受保护的域。以这种方式,可以使用PCONFIG指令以编程方式定义和配置受保护的域。一旦已经使用PCONFIG指令配置了受保护域,就以该受保护域的配置所指定的方式来保护与该受保护域相关联的存储器地址。例如,在一些实施例中,当使用加密保护时,数据在被写入到受保护域内的存储器地址之前被加密,并且从受保护域内的存储器地址读取的数据在被返回给请求处理器之前被解密。
在一些实施例中,PCONFIG指令需要特定的特权级别(privilege level)或特权环(privilege ring)。例如,处理器可以支持特权级别或特权环的分级结构,以限制对某些资源的访问。在一些实施例中,特权环0是限制性最小的级别,而具有更高数字的特权环的限制性越来越大。例如,特权环0可用于系统管理软件(例如,操作系统内核和设备驱动程序),而特权环3可用于用户层应用程序。因此,在一些实施例中,PCONFIG指令是第0环指令,其只能由在最高特权环中执行的软件(例如,用来配置受保护域的管理软件)使用。替代地或附加地,PCONFIG指令可以是第3环指令,其可以被任何用户应用程序用来配置其自己的受保护域。
图5示出了与PCONFIG指令相关联的示例调用流程500。所示出的示例标识例如通过存储器控制器108(图1)使用PCONFIG指令来执行域配置的软件510之间的调用流程500,存储器控制器108可包括任何引擎、控制器或提供密码存储器保护的其他组件。软件510可包括用来配置受存储器控制器108(图1)保护的域的任何软件,诸如操作系统、管理程序、虚拟机管理器和/或其他管理软件。所示出的调用流程以软件510选择用于对特定域的加密密钥进行编程的密钥编程模式(调用502a)开始。例如,如关于图2和图3示出和描述的,软件510可以为该域选择完整的加密密钥,或者可以要求由密钥推导函数推导的密钥。软件510然后可以向存储器控制器520发出PCONFIG处理器指令,以执行域配置(调用502b)。当PCONFIG指令被调用时,存储器控制器108(图1)对特定域的密钥和保护模式进行编程(调用502c)。存储器控制器108(图1)然后将状态码返回给软件510(调用502d),该状态码然后被软件510处理(调用502e)。
在一些实施例中,PCONFIG指令支持用于配置和管理受保护域的各种叶函数。例如,当执行PCONFIG指令时,可以在硬件寄存器(例如,EAX寄存器)中指定要调用的特定叶函数。也可以在硬件寄存器(例如,RBX/RCX/RDX寄存器)中指定特定叶函数所使用的参数。
表1示出了可用来实现对多个叶函数的支持的PCONFIG叶编码的示例。尽管仅定义了一个叶函数(KEY_PROGRAM叶),但可以使用保留的叶编码来定义额外的叶函数,以便扩展PCONFIG指令的功能。
表1:PCONFIG叶函数编码
PCONFIG指令的密钥程序叶函数(KEY_PROGRAM)可以用于对受保护域的密钥进行编程。在一些实施例中,在密钥程序结构(KEY_PROGRAM_STRUCT)中指定密钥程序叶函数所使用的参数,并且在硬件寄存器(例如,RBX寄存器)中指定密钥程序结构的地址。表2示出了密钥程序结构(KEY_PROGRAM_STRUCT)的示例实施例。
表2:密钥程序结构(KEY_PROGRAM_STRUCT)
如表2所示,密钥程序结构标识正被编程的特定域的密钥ID,并且它还指定密钥编程命令。例如,在一些实施例中,密钥程序叶函数支持多个密钥编程命令,并且在密钥程序结构中指定期望的命令。此外,在一些实施例中,密钥程序结构还包括一个或多个保留字段,其可以用于密钥程序叶函数的后续扩展。
表3示出了与PCONFIG指令一起使用以将密钥绑定到keyID的另一示例性KEY_PROGRAM_STRUCT。
表3:密钥程序结构(KEY_PROGRAM_STRUCT)
表4示出了密钥程序叶函数所可以支持的密钥编程命令的示例。
表4:密钥编程命令
表5是与PCONFIG命令结合使用的密钥编程命令的另一示例性列表。与表4的示例性列表形成对照,表5中的列表包括以等于4的编码动态地设置密钥的命令,该命令可以例如用于执行如图2和图3所示的加密指令。
表5:密钥编程命令
为了支持根据所公开的实施例的动态推导密钥,调用附加命令:KEYID_SET_KEY_DYNAMIC。软件建立在表6中示出的示例性KEY_PROGRAM_STRUCT以与PCONFIG指令结合使用,以向MKTME引擎指示将动态生成与正在被编程的KeyID相关联的密钥:
表6:动态密钥的KEY_PROGRAM_STRUCT
在执行密钥程序叶函数之后,可以在硬件寄存器中指定返回值或状态码以指示密钥程序函数是否成功。表7示出了密钥程序叶函数所返回的状态码的示例。
表7:密钥程序叶函数(KEY_PROGRAM)所返回的状态码
状态码 | 代码 | 描述 |
PROG_SUCCESS | 0 | 域被成功编程。 |
INVALID_PROG_CMD | 1 | 密钥编程命令无效。 |
ENTROPY_ERROR | 2 | 随机生成的密钥的熵是不足的。 |
INVALID_KEYID | 3 | 域密钥ID无效。 |
INVALID_ENC_ALG | 4 | 无效的加密算法被选择。 |
DEVICE_BUSY | 5 | 无法获得域密钥表的锁。 |
虽然所示出的实施例使用PCONFIG处理器指令来执行域配置,但是其他实施例可以使用替代的方法和/或附加的方法来进行域配置。例如,在一些实施例中,可以使用硬件寄存器来执行域配置。例如,可以实现PCONFIG模块特定寄存器(MSR)来执行域配置,允许软件通过写入到PCONFIG MSR来调用PCONFIG操作(例如,利用在诸如ECX寄存器之类的寄存器中传递的PCONFIG MSR的索引来执行WRMSR指令)。此外,可以在硬件寄存器中传递PCONFIG操作的某些参数(及其关联的叶函数和命令)。例如,可以在硬件寄存器(诸如EDX寄存器、EAX寄存器或这两个寄存器)中传递密钥程序结构(KEY_PROGRAM_STRUCT)的地址(例如,针对64位存储器地址)。然后可以按照如上所述的类似方式执行PCONFIG操作。
此外,在一些实施例中,PCONFIG操作可以将经包装的blob用于域密钥编程。以这种方式,可以在不向管理软件透露密钥的情况下对域密钥进行编程。例如,在一些实施例中,附加的PCONFIG叶函数可被实现,以使密钥能够被包装,然后在被拆包之后随后被编程到存储器保护控制器320。
图6是示出根据一些实施例的用于执行指令的处理组件的框图。如图所示,存储装置601存储要执行的一个或多个指令603。如在下面进一步描述,在一些实施例中,计算系统600是用于同时处理包括矩阵在内的压缩数据向量的多个元素的SIMD处理器。
在操作中,通过获取电路605从存储装置601中获取一个或多个指令。通过解码电路609对所获取的指令607进行解码。关于图5、图7A-B和图8A-D进一步示出和描述的指令格式具有用于指定第一、第二和目标向量的位置的字段(未在这里示出)。解码电路609将指令607解码为一个或多个操作。在一些实施例中,该解码包括生成要由执行电路(诸如执行电路617)执行的多个微操作。解码电路609还对指令后缀和前缀(如果使用的话)进行解码。
在一些实施例中,寄存器重命名、寄存器分配和/或调度电路613提供以下各项中的一项或多项的功能:1)将逻辑操作数值重命名为物理操作数值(例如,在一些实施例中为寄存器别名表),2)向经解码的指令分配状态位和标志,以及3)在指令池之外调度经解码的指令611以在执行电路617上执行(例如,在一些实施例中使用保留站)。
寄存器(寄存器文件)和/或存储器615将数据存储为要由执行电路617对其进行操作的指令611的操作数。在下面至少关于图2-6B、图10A-B和图11A-B进一步描述和示出执行电路617。
示例性的寄存器类型包括写掩码寄存器、压缩数据寄存器、通用寄存器和浮点寄存器,如在下面至少关于图9进一步描述和示出的。
在一些实施例中,回写电路619提交指令611的执行结果。关于图2-4、图10A-B和图11A-B进一步示出和描述了执行电路617和系统600。
指令集
指令集可以包括一个或多个指令格式。给定指令格式可以定义各种字段(例如,位数、位的位置)以指定要执行的操作(例如,操作码)和将在其上执行该操作的操作数和/或其他数据字段(例如,掩码)等。一些指令格式通过指令模板(或子格式)的定义被进一步细分。例如,给定指令格式的指令模板可以被定义为具有指令格式的字段的不同子集(所包括的字段通常具有相同的顺序,但是至少一些具有不同的位位置,因为包括较少的字段)和/或被定义为具有不同解释的给定字段。因此,ISA的每个指令使用给定的指令格式表示(并且,如果定义,则在该指令格式的给定的一个指令模板中)并且包括用于指定操作和操作数的字段。例如,示例性ADD指令具有特定操作码和指令格式,该指令格式包括指定该操作码的操作码字段和选择操作数的操作数字段(源1/目的地和源2);并且在指令流中出现该ADD指令将在操作数字段中具有选择特定操作数的特定内容。已发布和/或公布了被称为高级向量扩展(AVX)(AVX1和AVX2)并使用向量扩展(VEX)编码方案的一组SIMD扩展(例如,参见和IA-32架构软件开发人员手册,2014年9月;参见高级向量扩展编程参考,2014年10月)。
示例性指令格式
本文描述的指令的实施例可以以不同的格式实现。另外,以下详细描述示例性系统、架构和流水线。指令的实施例可以在这样的系统、架构和流水线上执行,但不限于详细说明的那些。
通用向量友好指令格式
向量友好指令格式是适合于向量指令的指令格式(例如,存在特定于向量操作的某些字段)。虽然描述了通过向量友好指令格式支持向量和标量操作的实施例,但替代实施例仅使用向量友好指令格式的向量操作。
图7A-7B是示出根据本发明的一些实施例的通用向量友好指令格式及其指令模板的框图。图7A是示出根据本发明的一些实施例的通用向量友好指令格式及其A类指令模板的框图;图7B是示出根据本发明的一些实施例的通用向量友好指令格式及其B类指令模板的框图。具体地,为通用向量友好指令格式700定义A类和B类指令模板,两者都包括无存储器访问705指令模板和存储器访问720指令模板。在向量友好指令格式的上下文中,术语“通用”是指不与任何特定指令集相捆绑的指令格式。
虽然将描述本发明的示例,其中向量友好指令格式支持以下内容:具有32位(4字节)或64位(8字节)数据元素宽度(或大小)的64字节向量操作数长度(或者大小)(因此,64字节向量由16个双字大小的元素组成,或者可替换地由8个四字大小的元素组成);具有16位(2字节)或8位(1字节)数据元素宽度(或大小)的64字节向量操作数长度(或大小);具有32位(4字节)、64位(8字节)、16位(2字节)或8位(1字节)数据元素宽度(或大小)的32字节向量操作数长度(或大小);以及具有32位(4字节)、64位(8字节)、16位(2字节)或8位(1字节)数据元素宽度(或大小)的16字节向量操作数长度(或大小);替换实施例可以支持具有更多、更少或不同数据元素宽度(例如,128位(16字节)数据元素宽度)的更多、更少和/或不同的向量操作数大小(例如,256字节向量操作数)。
图7A中的A类指令模板包括:1)在无存储器访问705指令模板内,示出了无存储器访问、全舍入控制类型操作710指令模板和无存储器访问、数据变换类型操作715指令模板;2)在存储器访问720指令模板内,示出了存储器访问、暂时(temporal)725指令模板和存储器访问、非暂时730指令模板。图7B中的B类指令模板包括:1)在无存储器访问705指令模板内,示出了无存储器访问、写掩码控制、部分舍入控制类型操作712指令模板和无存储器访问、写掩码控制、vsize类型操作717指令模板;2)在存储器访问720指令模板内,示出了存储器访问、写掩码控制727指令模板。
通用向量友好指令格式700包括以下以图7A-7B所示的顺序列出的以下字段。
格式字段740-该字段中的特定值(指令格式标识符值)唯一地标识向量友好指令格式,因此标识指令在指令流中以向量友好指令格式出现。因此,该字段是可选的,仅具有通用向量友好指令格式的指令集是不需要该字段的。
基本操作字段742-其内容区分不同的基本操作。
寄存器索引字段744-其内容直接或通过地址生成来指定源和目标操作数的位置,无论它们在寄存器中还是在存储器中。这些包括足够数量的位以从PxQ(例如32x512、16x128、32x1024、64x1024)寄存器文件中选择N个寄存器。虽然在一个实施例中,N可以是多达三个源和一个目的地寄存器,但是替代实施例可以支持更多或更少的源和目的地寄存器(例如,可以支持多达两个源,其中这些源中的一个也充当目的地,可以支持多达三个源,其中这些源中的一个也充当目的地,可能支持多达两个源和一个目的地)。
修正符字段746,呈现为无存储器访问字段746A和存储器访问字段746B-其内容区分通用向量指令格式中指定存储器访问的指令的出现与不指定存储器访问的指令的出现;即,区分无存储器访问705指令模板和存储器访问720指令模板。存储器访问操作读取和/或写入存储器层级结构(在一些情况下使用寄存器中的值指定源和/或目的地地址),而非存储器访问操作不这样做(例如,源和目的地是寄存器)。虽然在一个实施例中,该字段还在三种不同方式之间进行选择以执行存储器地址计算,但替代实施例可以支持更多、更少或不同的方式来执行存储器地址计算。
增强操作字段750-其内容区分除基本操作之外还要执行各种不同操作中的哪一个。该字段是上下文特定的。在一些实施例中,该字段被分成类字段768,α字段752和β字段754。增强操作字段750允许在单个指令中而不是2、3或4个指令中执行公共操作组。
缩放字段760-其内容允许缩放索引字段的内容以用于存储器地址生成(例如,用于使用2scale*index+base的地址生成)。
位移字段762A-其内容用作存储器地址生成的一部分(例如,用于使用2scale*index+base+displacement的地址生成)。
位移因子字段762B(注意,直接在位移因子字段762B上的位移字段762A的并置指示使用一个或另一个)-其内容用作地址生成的一部分;它指定位移因子,该位移因子将通过存储器访问的大小(N)来缩放-其中N是存储器访问中的字节数(例如,对于使用2scale*index+base+scaled displacement的地址生成)。忽略冗余低阶位,因此,位移因子字段的内容乘以存储器操作数总大小(N),以便生成用于计算有效地址的最终位移。N的值由处理器硬件在运行时基于完整操作码字段774(稍后描述)和数据操纵字段754C来确定。位移字段762A和位移因子字段762B从以下意义上来说是可选的,例如它们不用于无存储器访问705指令模板和/或不同实施例可以仅实现这两者中的一个或不实现这两者。
数据元素宽度字段764-其内容区分要使用多个数据元素宽度中的哪一个(在一些实施例中针对所有指令;在其他实施例中仅针对一些指令)。该字段从以下意义上来说是可选的,例如如果仅支持一个数据元素宽度和/或使用操作码的某些方面支持数据元素宽度则不需要该字段。
写掩码字段770-其内容基于每个数据元素位置控制目的地向量操作数中的数据元素位置是否反映了基本操作和增强操作的结果。A类指令模板支持合并写掩码,而B类指令模板支持合并和归零写掩码。合并时,向量掩码允许在执行任何操作(由基本操作和增强操作指定)期间保护目的地中的任何元素集免于更新;在另一个实施例中,保留相应掩码位具有0值的目的地的每个元素的旧值。相反,当归零向量掩码允许在执行任何操作(由基本操作和增强操作指定)期间将目的地中的任何元素集归零;在一个实施例中,当相应的掩码位具有0值时,目的地的元素被设置为0。该功能的一个子集是能够控制正在执行的操作的向量长度(即,从第一个到最后一个被修改的元素的跨度);但是,修改的元素不必是连续的。因此,写掩码字段770允许部分向量操作,包括加载、存储、算术、逻辑等。虽然描述了本发明的实施例,其中写掩码字段770的内容选择多个写掩码寄存器中包含要使用的写掩码的一个写掩码寄存器(并且因此写掩码字段770的内容间接地标识要执行的掩码),但替代实施例或者附加实施例允许写掩码字段770的内容直接指定要执行的掩码。
立即数(immediate)字段772-其内容允许指定立即数。该字段从以下意义上来说是可选的,例如它不存在于不支持立即数的通用向量友好格式的实现中并且它不存在于不使用立即数的指令中。
类字段768-其内容区分不同类的指令。参考图7A-B,该字段的内容在A类和B类指令之间进行选择。在图7A-B中,圆角方块用于表示在字段中存在特定值(例如,分别在图7A-B中的类字段768的A类768A和B类768B)。
A类指令模板
在A类的非存储器访问705指令模板的情况下,α字段752被解析为RS字段752A,其内容区分要执行不同的增强操作类型中的哪个(例如,舍入752A.1和数据变换752A.2分别被指定用于无存储器访问、舍入型操作710和无存储器访问、数据变换类型操作715指令模板),而β字段754区分要执行哪个指定类型的操作。在无存储器访问705指令模板中,不存在缩放字段760,位移字段762A和位移因子字段762B。
无存储器访问指令模板-全舍入控制类型操作
在无存储器访问全舍入控制类型操作710指令模板中,β字段754被解析为舍入控制字段754A,其内容提供静态舍入。虽然在本发明的所述实施例中,舍入控制字段754A包括抑制所有浮点异常(SAE)字段756和舍入操作控制字段758,但是替代实施例可以支持可以将这些概念编码到同一字段中或仅具有这些概念/字段中的一个或者另一个(例如,可以仅具有舍入操作控制字段758)。
SAE字段756-其内容区分是否禁用异常事件报告;当SAE字段的756内容表明启用抑制时,给定的指令不会报告任何类型的浮点异常标志,也不会引发任何浮点异常处理程序。
舍入操作控制字段758-其内容区分要执行一组舍入操作中的哪一个(例如,向上舍入,向下舍入,向零舍入和向最近舍入)。因此,舍入操作控制字段758允许基于每个指令改变舍入模式。在其中处理器包括用于指定舍入模式的控制寄存器的一些实施例中,舍入操作控制字段750的内容覆盖该寄存器值。
无存储器访问指令模板-数据变换类型操作
在无存储器访问数据变换类型操作715指令模板中,β字段754被解析为数据变换字段754B,其内容区分要执行多个数据变换中的哪一个(例如,无数据变换、调配(swizzle)、广播)。
在类A的存储器访问720指令模板的情况下,α字段752被解析为逐出提示字段752B,其内容区分将使用哪一个驱逐提示(在图7A中,暂时752B.1和非暂时752B.2分别被指定用于存储器访问、暂时725指令模板和存储器访问、非暂时730指令模板),而β字段754被解析为数据操纵字段754C,其内容区分要执行多个数据操纵操作(也称为基元)中的哪一个(例如,无操纵;广播;源的上转换;以及目的地的下转换)。存储器访问720指令模板包括缩放字段760,并且可选地包括位移字段762A或位移因子字段762B。
向量存储器指令利用转换支持执行从存储器的向量加载和到存储器的向量存储。与常规向量指令一样,向量存储器指令以逐个数据元素的方式从/向存储器传输数据,实际传输的元素由被选择作为写掩码的向量掩码的内容决定。
存储器访问指令模板-暂时
暂时数据是可能足够快地被重用以从缓存受益的数据。然而,这是一个提示,不同的处理器可以以不同的方式实现它,包括完全忽略提示。
存储器访问指令模板-非暂时
非暂时数据是不太可能足够快地被重用以从缓存在第一级缓存中受益的数据,并且应该优先驱逐。然而,这是一个提示,不同的处理器可以以不同的方式实现它,包括完全忽略提示。
B类指令模板
在B类的指令模板的情况下,α字段752被解析为写掩码控制(Z)字段752C,其内容区分由写掩码字段770控制的写掩码应该是合并还是归零。
在B类的非存储器访问705指令模板的情况下,β字段754的一部分被解析为RL字段757A,其内容区分要执行不同增强操作类型中的哪一个(例如,舍入757A.1和向量长度(VSIZE)757A.2分别被指定用于无存储器访问、写掩码控制、部分舍入控制类型操作712指令模板和无存储器访问、写掩码控制、VSIZE类型操作717指令模板),而β字段754的其余部分区分要执行哪个指定类型的操作。在无存储器访问705指令模板中,不存在缩放字段760,位移字段762A和位移因子字段762B。
在无存储器访问、写掩码控制、部分舍入控制类型操作710指令模板中,β字段754的其余部分被解析为舍入操作字段759A并且禁用异常事件报告(给定指令不报告任何类型的浮点异常标志,不会引发任何浮点异常处理程序)。
舍入操作控制字段759A-正如舍入操作控制字段758一样,其内容区分要执行的一组舍入操作中的哪一个(例如,向上舍入、向下舍入、向零舍入和向最近舍入)。因此,舍入操作控制字段759A允许基于每个指令改变舍入模式。在其中处理器包括用于指定舍入模式的控制寄存器的一些实施例中,舍入操作控制字段750的内容覆盖该寄存器值。
在无存储器访问、写掩码控制、VSIZE类型操作717指令模板中,β字段754的其余部分被解析为向量长度字段759B,其内容区分要在多个数据向量长度中的哪一个(例如,128、256或512字节)上执行。
在B类的存储器访问720指令模板的情况下,β字段754的一部分被解析为广播字段757B,其内容区分是否要执行广播类型数据操纵操作,而β字段754的其余部分被解析为向量长度字段759B。存储器访问720指令模板包括缩放字段760,并且可选地包括位移字段762A或位移因子字段762B。
关于通用向量友好指令格式700,示出了完整操作码字段774,其包括格式字段740,基本操作字段742和数据元素宽度字段764。尽管示出了完整操作码字段774包括所有这些字段的一个实施例,但在不支持所有这些字段的实施例中,完整操作码字段774包括少于所有这些字段。完整操作码字段774提供操作代码(操作码)。
增强操作字段750、数据元素宽度字段764和写掩码字段770允许在通用向量友好指令格式中基于每个指令指定这些特征。
写掩码字段和数据元素宽度字段的组合创建分类型的指令,因为它们允许基于不同的数据元素宽度来应用掩码。
在A类和B类中找到的各种指令模板在不同情况下是有益的。在本发明的一些实施例中,处理器内的不同处理器或不同核可以仅支持A类,仅支持B类或支持这两类。例如,旨在用于通用计算的高性能通用乱序核可以仅支持B类,旨在主要用于图形和/或科学(吞吐量)计算的核可以仅支持A类,而旨在用于两者的核可以支持两者(当然,具有来自两类的模板和指令但不是来自两类的所有模板和指令的某种混合的核也在本发明的范围内)。此外,单个处理器可以包括多个核,所有核都支持相同的类或不同的核支持不同的类。例如,在具有单独图形和通用核的处理器中,旨在主要用于图形和/或科学计算的图形核之一可以仅支持A类,而一个或多个通用核可以是具有乱序执行和寄存器重命名的高性能通用核,旨在用于仅支持B类的通用计算。另一个不具有单独图形核的处理器可以包括支持A类和B类两者的一个或多个通用顺序或乱序核。当然,在本发明的不同实施例中,来自一类的特征也可以在另一类中实现。用高级语言编写的程序将被放置(例如,及时编译或静态编译)成各种不同的可执行形式,包括:1)仅具有用于执行的目标处理器所支持的类的指令的形式;或2)具有使用所有类的指令的不同组合编写的备选例程并具有控制流程代码的形式,该控制流程代码基于当前正在执行代码的处理器所支持的指令来选择要执行的例程。
示例性特定向量友好指令格式
图8A是示出根据本发明的一些实施例的示例性特定向量友好指令格式的框图。图8A示出了特定向量友好指令格式800,该格式从以下意义上来说是特定的,例如该格式指定字段的位置、大小、解析和顺序、以及这些字段中的一些字段的值。特定向量友好指令格式800可用于扩展x86指令集,因此一些字段与现有x86指令集及其扩展(例如AVX)中使用的字段类似或相同。此格式与具有扩展的现有x86指令集的前缀编码字段、真实操作码字节字段、MOD R/M字段、SIB字段、位移字段以及立即数字段保持一致。示出了8A中的字段所映射的图7A或7B中的字段。
应当理解,尽管出于说明性目的,在通用向量友好指令格式700的上下文中参考特定向量友好指令格式800描述了本发明的实施例,但是本发明不限于特定向量友好指令格式800,除非声明的情况下。例如,通用向量友好指令格式700考虑了各种字段的各种可能大小,而特定向量友好指令格式800被示为具有特定大小的字段。作为具体示例,虽然数据元素宽度字段764被示为特定向量友好指令格式800中的一位字段,但是本发明不限于此(即,通用向量友好指令格式700考虑其他大小的数据元素宽度字段764)。
具体向量友好指令格式700包括以下按照图8A中所示的顺序列出的以下字段。
EVEX前缀(字节0-3)802-以四字节形式编码。
格式字段740(EVEX字节0,位[7:0])-第一字节(EVEX字节0)是格式字段740并且它包含0x62(在一些实施例中用于区分向量友好指令格式的唯一值)。
第二至第四字节(EVEX字节1-3)包括提供特定能力的多个位字段。
REX字段805(EVEX字节1,位[7-5])-由EVEX.R位字段(EVEX字节1,位[7]-R)、EVEX.X位字段(EVEX字节1,位[6]-X)和EVEX.B位字段(EVEX字节1,位[5]-B)组成。EVEX.R、EVEX.X和EVEX.B位字段提供与相应VEX位字段相同的功能,并使用1的补码形式编码,即ZMM0被编码为1111B,ZMM15被编码为0000B。指令的其他字段对寄存器索引的低三位进行编码,如本领域中已知的(rrr、xxx和2),因此可以通过添加EVEX.R、EVEX.X和EVEX.B来形成Rrrr、Xxxx和2b。
REX'字段810A-这是REX'字段810的第一部分,并且是EVEX.R'位字段(EVEX字节1,位[4]-R'),其用于对扩展32寄存器组的高16或低16位进行编码。在一些实施例中,该位以及如下所示的其它位以位反转的格式来存储,以与BOUND指令进行区分(在众所周知的x8632位模式中),其真实操作码字节为62,但是在MOD R/M字段(下面描述)中不接受MOD字段中的值11;本发明的替代实施例不以反转格式存储这个和下面的其他所指示的位。值1用于对低16位寄存器编码。即,R'Rrrr是通过组合EVEX.R'、EVEX.R和来自其他字段的其他RRR形成的。
操作码映射字段815(EVEX字节1,位[3:0]-mmmm)-其内容对隐含的前导操作码字节(0F、0F 38或0F 3)进行编码。
数据元素宽度字段764(EVEX字节2,位[7]-W)-由符号EVEX.W表示。EVEX.W用于定义数据类型的粒度(大小)(32位数据元素或64位数据元素)。
EVEX.vvvv 820(EVEX字节2,位[6:3]-vvvv)-EVEX.vvvv的作用可以包括以下内容:1)EVEX.vvvv对第一个源寄存器操作数进行编码,以反转(1的补码)形式指定,并且对有2个或更多源操作数的指令有效;2)EVEX.vvvv对目标寄存器操作数进行编码,以1的补码形式指定用于某些向量移位;或者3)EVEX.vvvv不对任何操作数进行编码,该字段是保留的,并且应该包含1111b。因此,EVEX.vvvv字段820对以反转(1的补码)形式存储的第一源寄存器指定符的4个低阶位进行编码。取决于指令,使用额外不同的EVEX位字段将指定符大小扩展为32个寄存器。
EVEX.U 768类字段(EVEX字节2,位[2]-U)-如果EVEX.U=0,则表示A类或EVEX.U0;如果EVEX.U=1,则表示B类或EVEX.U1。
前缀编码字段825(EVEX字节2,位[1:0]-pp)-为基本操作字段提供附加位。除了以EVEX前缀格式提供对传统SSE指令的支持之外,这还具有压缩SIMD前缀的益处(不是要求字节表示SIMD前缀,EVEX前缀仅需要2位)。在一个实施例中,为了支持在传统格式和EVEX前缀格式中使用SIMD前缀(66H,F2H,F3H)的传统SSE指令,将这些传统SIMD前缀编码到SIMD前缀编码字段中;并且在运行时在被提供给解码器的PLA之前扩展为传统SIMD前缀(因此PLA可以执行这些传统指令的传统和EVEX格式而无需修改)。虽然较新的指令可以直接使用EVEX前缀编码字段的内容作为操作码扩展,但是某些实施例以类似的方式扩展以保持一致性,但允许这些传统SIMD前缀指定不同的含义。替代实施例可以重新设计PLA以支持2位SIMD前缀编码,因此不需要扩展。
α字段752(EVEX字节3,位[7]-EH;也称为EVEX.EH、EVEX.rs、EVEX.RL、EVEX.写掩码控制、以及EVEX.N;也用α示出)-如前所述,该字段是特定于上下文的。
β字段754(EVEX字节3,位[6:4]-SSS,也称为EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;也用β示出)-如前所述,该字段是特定于上下文的。
REX'字段810B-这是REX'字段810的剩余部分,并且是EVEX.V'位字段(EVEX字节3,位[3]-V'),其可用于对扩展32寄存器组的高16或低16位编码。该位以位反转格式存储。值1用于对低16位寄存器编码。即,通过组合EVEX.V'、EVEX.vvvv来形成V'VVVV。
写掩码字段770(EVEX字节3,位[2:0]-kkk)-如前所述,其内容指定写掩码寄存器中的寄存器的索引。在一些实施例中,特定值EVEX.kkk=000具有特殊行为,暗示没有写掩码用于特定指令(这可以以各种方式实现,包括使用硬连线到所有的写掩码或绕过掩蔽硬件的硬件)。
真实操作码字段830(字节4)也称为操作码字节。在该字段中指定部分操作码。
MOD R/M字段840(字节5)包括MOD字段842、Reg字段844和R/M字段846。如前所述,MOD字段842的内容区分存储器访问和非存储器访问操作。Reg字段844的作用可归纳为两种情况:对目的地寄存器操作数或源寄存器操作数编码,或被视为操作码扩展而不用于对任何指令操作数编码。R/M字段846的作用可以包括以下内容:对引用存储器地址的指令操作数编码,或对目的地寄存器操作数或源寄存器操作数编码。
缩放、索引、基准字节SIB 850(字节6)-缩放字段SS 852用于存储器地址生成。SIB.xxx 854和SIB.2 856-这些字段的内容先前已经相关于寄存器索引Xxxx和2b提及了。
位移字段762A(字节7-10)-当MOD字段842包含10时,字节7-10是位移字段762A,并且其工作方式与传统的32位位移(disp32)相同并且以字节粒度工作。
位移因子字段762B(字节7)-当MOD字段842包含01时,字节7是位移因子字段762B。该字段的位置与传统x86指令集8位位移(disp8)的位置相同,其以字节粒度工作。由于disp8是符号扩展的,它只能解决-128到127个字节之间的偏移量;就64字节缓存行而言,disp8使用8位,只能被设置为4个非常有用的值-128、-64、0和+64;因为经常需要更大的范围,所以使用disp32;但是,disp32需要4个字节。与disp8和disp32相比,位移因子字段762B是disp8的重新解析;当使用位移因子字段762B时,实际位移由位移因子字段的内容乘以存储器操作数访问的大小(N)来确定。这种类型的位移称为disp8*N。这减少了平均指令长度(用于位移的单个字节,但具有更大的范围)。这种压缩位移基于有效位移是存储器访问的粒度的倍数的假设,因此,不需要对地址偏移的冗余低阶位进行编码。即,位移因子字段762B代替传统x86指令集8位位移。因此,位移因子字段762B以与x86指令集8位位移相同的方式被编码(因此ModRM/SIB编码规则没有变化),唯一的例外是disp8被过加载到disp8*N。即,编码规则或编码长度没有变化,而只是硬件对位移值的解析变化(需要用存储器操作数的大小来缩放位移以获得逐字节地址偏移)。立即数字段772如前所述操作。
完整操作码字段
图8B是示出根据一些实施例的构成完整操作码字段774的特定向量友好指令格式800的字段的框图。具体地,完整操作码字段774包括格式字段740、基本操作字段742和数据元素宽度(W)字段764。基本操作字段742包括前缀编码字段825、操作码映射字段815和真实操作码字段830。
寄存器索引字段
图8C是示出根据一些实施例的构成寄存器索引字段744的特定向量友好指令格式800的字段的框图。具体地,寄存器索引字段744包括REX字段805、REX'字段810、MODR/M.reg字段844、MODR/M.r/m字段846、VVVV字段820、xxx字段854和bbb字段856。
增强操作字段
图8D是示出根据一些实施例的构成增强操作字段750的特定向量友好指令格式800的字段的框图。
当类(U)字段768包含0时,它表示EVEX.U0(A类768A);当类(U)字段768包含1时,它表示EVEX.U1(B类768B)。当U=0并且MOD字段842包含11(表示无存储器访问操作)时,α字段752(EVEX字节3,位[7]-EH)被解析为rs字段752A。当rs字段752A包含1(舍入752A.1)时,β字段754(EVEX字节3,位[6:4]-SSS)被解析为舍入控制字段754A。舍入控制字段754A包括一位SAE字段756和两位舍入操作字段758。当rs字段752A包含0(数据变换752A.2)时,β字段754(EVEX字节3,位[6:4]-SSS)被解析为三位数据变换字段754B。当U=0并且MOD字段842包含00、01或10(表示存储器访问操作)时,α字段752(EVEX字节3,位[7]-EH)被解析为逐出提示(EH)字段752B,β字段754(EVEX字节3,位[6:4]-SSS)被解析为三位数据操纵字段754C。
当U=1时,α字段752(EVEX字节3,位[7]-EH)被解析为写掩码控制(Z)字段752C。当U=1并且MOD字段842包含11(表示无存储器访问操作)时,β字段754的一部分(EVEX字节3,位[4]-S0)被解析为RL字段757A;当RL字段757A包含1(舍入757A.1)时,β字段754的其余部分(EVEX字节3,位[6-5]-S2-1)被解析为舍入操作字段759A,而当RL字段757A包含0(VSIZE757.A2)时,β字段754的其余部分(EVEX字节3,位[6-5]-S2-1)被解析为向量长度字段759B(EVEX字节3,位[6-5]-L1-0)。当U=1并且MOD字段842包含00、01或10(表示存储器访问操作)时,β字段754(EVEX字节3,位[6:4]-SSS)被解析为向量长度字段759B(EVEX字节3,位[6-5]-L1-0)和广播字段757B(EVEX字节3,位[4]-B)。
示例性寄存器架构
图9是根据一些实施例的寄存器架构900的框图。在所示的实施例中,存在512位宽的32个向量寄存器910;这些寄存器引用为zmm0到zmm31。低16个zmm寄存器的低阶256位覆盖在寄存器ymm0-15上。低16个zmm寄存器的低阶128位(ymm寄存器的低阶128位)覆盖在寄存器xmm0-15上。特定向量友好指令格式800对这些覆盖的寄存器文件进行操作,如下表所示。
即,向量长度字段759B在最大长度和一个或多个其他较短长度之间进行选择,其中每个这样的较短长度是前一长度的一半长度;没有向量长度字段759B的指令模板对最大向量长度操作。此外,在一个实施例中,特定向量友好指令格式800的B类指令模板对打包或标量单/双精度浮点数据和打包或标量整数数据进行操作。标量操作是对zmm/ymm/xmm寄存器中的最低阶数据元素位置执行的操作;根据实施例,高阶数据元素位置保持与指令之前相同或归零。
写掩码寄存器915-在所示实施例中,存在8个写掩码寄存器(k0到k7),各自大小为64位。在替换实施例中,写掩码寄存器915的大小为16位。如前所述,在一些实施例中,向量掩码寄存器k0不能用作写掩码;当通常表示k0的编码用于写掩码时,它选择0x6f的硬连线写掩码,有效地禁用该指令的写掩码。
通用寄存器925-在所示实施例中,有16个64位通用寄存器,它们与现有的x86寻址模式一起用于寻址存储器操作数。这些寄存器由名称RAX,RBX,RCX,RDX,RBP,RSI,RDI,RSP和R8至R15引用。
标量浮点堆栈寄存器文件(x87堆栈)945,其上混叠有MMX打包整数平坦寄存器文件950-在所示实施例中,x87堆栈是用于使用x87指令集扩展对32/64/80位浮点数据执行标量浮点运算的八元素堆栈;而MMX寄存器用于对64位打包整数数据执行操作,以及保持用于MMX和XMM寄存器之间执行的某些操作的操作数。
替代实施例可以使用更宽或更窄的寄存器。另外,备选实施例可以使用更多、更少或不同的寄存器文件和寄存器。
示例性核架构、处理器和计算机架构
处理器核可以以不同的方式实现,可以被实现用于不同的目的,并且可以在不同的处理器中实现。例如,这种核的实现方式可以包括:1)用于通用计算的通用顺序核;2)用于通用计算的高性能通用乱序核;3)主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现方式可以包括:1)CPU,其包括旨在用于通用计算的一个或多个通用顺序核和/或用于通用计算的一个或多个通用乱序核;2)协处理器,包括主要用于图形和/或科学(吞吐量)的一个或多个专用核。这种不同的处理器导致不同的计算机系统架构,其可以包括:1)在与CPU不同的芯片上的协处理器;2)在与CPU相同的封装中的单独管芯(die)上的协处理器;3)在与CPU相同的管芯上的协处理器(在这种情况下,这种协处理器有时被称为专用逻辑(例如,集成图形和/或科学(吞吐量)逻辑)或被称为专用核);4)片上系统,其可以在同一管芯上包括所描述的CPU(有时被称为(一个或多个)应用核或(一个或多个)应用处理器)、以上描述的协处理器、和附加功能。接下来描述示例性核架构,之后描述示例性处理器和计算机架构。
示例性核架构
顺序和乱序的核框图
图10A是示出根据本发明的一些实施例的示例性顺序流水线和示例性寄存器重命名、乱序发布/执行流水线两者的框图。图10B是示出根据本发明的一些实施例的要被包括在处理器中的顺序架构核和示例性寄存器重命名、乱序发布/执行架构核两者的示例性实施例的框图。图10A-B中的实线框示出了顺序流水线和顺序核,而可选择添加的虚线框示出了寄存器重命名、乱序发布/执行流水线和核。假定顺序方面是乱序方面的子集,将描述乱序方面。
在图10A中,处理器流水线1000包括提取(fetch)阶段1002、长度解码阶段1004、解码阶段1006、分配阶段1008、重命名阶段1010、调度(也被称为调派或发布)阶段1012、寄存器读取/存储器读取阶段1014、执行阶段1016、写回/存储器写入阶段1018、异常处理阶段1022、和提交阶段(commit stage)1024。
图10B示出了处理器核1090,其包括耦合到执行引擎单元1050的前端单元1030,并且执行引擎单元1050和前端单元1030两者都耦合到存储器单元1070。核1090可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代的核类型。作为另一种选择,核1090可以是专用核,例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等。
前端单元1030包括耦合到指令缓存单元1034的分支预测单元1032,指令缓存单元1034耦合到指令转换后备缓冲器(TLB)1036,指令转换后备缓冲器1036耦合到指令提取单元1038,指令提取单元1038耦合到解码单元1040。解码单元1040(或解码器)可以解码指令,并且生成作为输出的一个或多个微操作、微代码入口点、微指令、其他指令、或其他控制信号,它们解码自原始指令或以其他方式反映原始指令或导出自原始指令。可以使用各种不同的机制来实现解码单元1040。合适机制的示例包括但不限于查找表、硬件实现方式、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核1090包括微代码ROM或存储用于某些宏指令的微代码的其他介质(例如,在解码单元1040中或在前端单元1030内)。解码单元1040耦合到执行引擎单元1050中的重命名/分配器单元1052。
执行引擎单元1050包括重命名/分配器单元1052,其耦合到引退(retirement)单元1054和一组一个或多个调度器单元1056。(一个或多个)调度器单元1056表示任意数目的不同调度器,包括,预留站(reservations station)、中央指令窗等。(一个或多个)调度器单元1056耦合到(一个或多个)物理寄存器文件单元1058。每个物理寄存器文件单元1058表示一个或多个物理寄存器文件,这些物理寄存器文件中的不同的物理寄存器文件存储一个或多个不同的数据类型,例如,标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器文件单元1058包括向量寄存器单元、写入掩码寄存器单元、和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、和通用寄存器。(一个或多个)物理寄存器文件单元1058与引退单元1054重叠,以说明寄存器重命名和乱序执行可以被实现的各种方式(例如,使用(一个或多个)重新排序缓冲器和(一个或多个)引退寄存器文件;使用(一个或多个)未来文件、(一个或多个)历史缓冲器、和(一个或多个)引退寄存器文件;使用寄存器图和寄存器池;等等)。引退单元1054和(一个或多个)物理寄存器文件单元1058耦合到(一个或多个)执行集群1060。(一个或多个)执行集群1060包括一组一个或多个执行单元1062和一组一个或多个存储器访问单元1064。执行单元1062可以对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。虽然一些实施例可以包括专用于特定功能或功能集的多个执行单元,但是其他实施例可以仅包括一个执行单元或者全部执行所有功能的多个执行单元。(一个或多个)调度器单元1056、(一个或多个)物理寄存器文件单元1058、和(一个或多个)执行集群1060被示为可能是多个,因为某些实施例针对某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,其中每个流水线都有自己的调度器单元、物理寄存器文件单元、和/或执行集群-并且在单独的存储器访问流水线的情况下,其中仅该流水线的执行集群具有(一个或多个)存储器访问单元1064的某些实施例被实现)。还应理解,在使用单独的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行而其余的是有序发布/执行的。
该组存储器访问单元1064耦合到存储器单元1070,存储器单元1070包括耦合到数据缓存单元1074的数据TLB单元1072,其中数据缓存单元1074耦合到2级(L2)缓存单元1076。在一个示例性实施例中,存储器访问单元1064可以包括加载单元、存储地址单元、和存储数据单元,其中的每个单元耦合到存储器单元1070中的数据TLB单元1072。指令缓存单元1034还耦合到存储器单元1070中的2级(L2)缓存单元1076。L2缓存单元1076耦合到一个或多个其他级别的缓存并最终耦合到主存储器。
作为示例,示例性寄存器重命名的乱序发布/执行核架构可以按如下方式实现流水线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。
核1090可以支持一个或多个指令集(例如,x86指令集(具有已经添加有较新版本的一些扩展);美国加利福尼亚州桑尼维尔市的MIP Technologies的MIPS指令集;美国加利福尼亚州桑尼维尔市的ARM Holdings的ARM指令集(具有可选的附加扩展,例如,NEON)),包括本文所描述的(一个或多个)指令。在一个实施例中,核1090包括支持打包数据指令集扩展(例如,AVX1、AVX2)的逻辑,从而允许要使用打包数据来执行的许多多媒体应用所使用的操作。
应理解,核可以支持多线程(执行两个或更多个并行的操作集或线程集),并且可以以各种方式这样做,这些方式包括时间分片多线程、同时多线程(其中,单个物理核为该物理核正在同时进行多线程的每个线程提供逻辑核)、或它们的组合(例如,时间分片的提取和解码以及此后同时的多线程,例如,在超线程技术中)。
虽然在乱序执行的上下文中描述了寄存器重命名,但应理解,寄存器重命名可以用在顺序架构中。虽然所示处理器的实施例还包括单独的指令和数据缓存单元1034/1074以及共享的L2缓存单元1076,但替代实施例可以具有用于指令和数据两者的单个内部缓存,例如,1级(L1)内部缓存、或多级内部缓存。在一些实施例中,系统可以包括内部缓存和外部缓存的组合,其中外部缓存在核和/或处理器外部。替代地,全部缓存可以在核和/或处理器外部。
具体示例性顺序核架构
图11A-B示出了更具体的示例性顺序核架构的框图,其中核将是芯片中的若干逻辑块(可能包括相同类型和/或不同类型的其他核)中的一个逻辑块。逻辑块通过高带宽互连网络(例如,环形网络)与某固定功能逻辑、存储器I/O接口、和其他必要的I/O逻辑通信,这取决于应用。
图11A是根据本发明的一些实施例的单个处理器核以及其与管芯上互连网络1102的连接以及其在2级(L2)缓存1104的本地子集的框图。在一个实施例中,指令解码器1100支持具有打包数据指令集扩展的x86指令集。L1缓存1106允许低等待时间的访问以将存储器缓存到标量和向量单元中。虽然在一个实施例中(为了简化设计),标量单元1108和向量单元1110使用单独的寄存器组(分别为标量寄存器1112和向量寄存器1114),并且它们之间传输的数据被写入到存储器然后从1级(L1)缓存1106中读回,但是本发明的替代实施例可以使用不同的方法(例如,使用单个寄存器组或包括允许数据在两个寄存器文件(file)之间传输而不被写入和读回的通信路径)。
L2缓存的本地子集1104是全局L2缓存的一部分,全局L2缓存被划分为分开的本地子集,每个处理器核一个本地子集。每个处理器核具有到其自己的L2缓存的本地子集1104的直接访问路径。由处理器核读取的数据被存储在其L2缓存子集1104中并且可以与访问它们自己的本地L2缓存子集的其他处理器核并行地被快速访问。由处理器核写入的数据被存储在其自己的L2缓存子集1104中,并且在需要的情况下被从其他子集冲刷(flushed)。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2缓存、和其他逻辑块之类的代理在芯片内彼此通信。每个环形数据路径在每个方向上为1012位宽。
图11B是根据本发明的一些实施例的图11A中的处理器核的一部分的展开图。图11B包括L1缓存1106的L1数据缓存1106A部分,以及关于向量单元1110和向量寄存器1114的更多细节。具体地,向量单元1110是16宽的向量处理单元(VPU)(参见16宽的ALU 1128),它执行整数、单精度浮点、和双精度浮点指令中的一个或多个。VPU支持通过调配单元1120对寄存器输入进行调配,使用数字转换单元1122A和1122B进行数字转换,以及使用复制单元1124对存储器输入进行复制。写入掩码寄存器1126允许预测得到向量写入。
图12是根据本发明的一些实施例的可具有不止一个核、可具有集成存储器控制器、且可具有集成图形的处理器1200的框图。图12中的实线框示出了具有单核1202A、系统代理1210、和一组一个或多个总线控制器单元1216的处理器1200;但虚线框的可选添加示出了具有以下各项的替代处理器1200:多个核1202A到1202N、系统代理单元1210中的一组一个或多个集成存储器控制器单元1214、以及专用逻辑1208。
因此,处理器1200的不同实现方式可以包括:1)具有专用逻辑1208的CPU(其中专用逻辑是集成图形和/或科学(吞吐量)逻辑(其可以包括一个或多个核)),以及核1202A-N(其是一个或多个通用核(例如,通用顺序核、通用乱序核、或两者的组合);2)具有核1202A-N的协处理器(其中核1202A-N是主要用于图形和/或科学(吞吐量)的大量专用核);3)具有核1202A-N的协处理器(其中核1202A-N是大量通用顺序核)。因此,处理器1200可以是通用处理器、协处理器、或专用处理器,例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的许多集成核(MIC)协处理器(包括30个或更多个核)、嵌入式处理器等等。处理器可以在一个或多个芯片上实现。处理器1200可以是一个或多个衬底的一部分和/或可以通过使用多种工艺技术(例如,BiCMOS、CMOS或NMOS)中的任何一种来在一个或多个衬底上实现。
存储器层级包括核内的一个或多个级别的缓存、一组或一个或多个共享缓存单元1206、以及耦合到该组集成存储器控制器单元1214的外部存储器(未示出)。该组共享缓存单元1206可以包括一个或多个中级缓存(例如,2级(L2)、3级(L3)、4级(L4)),或其他级别的缓存、最后级别缓存(LLC)、和/它们的组合。虽然在一个实施例中,基于环的互连单元1212对集成图形逻辑1208(集成图形逻辑1208是专用逻辑的一个示例并且在本文中也被称为专用逻辑)、该组共享缓存单元1206、以及系统代理单元1210/(一个或多个)集成存储器控制器单元1214进行互连,但替代实施例可以使用任何数目的众所周知的技术来互连这些单元。在一个实施例中,在一个或多个缓存单元1206和核1202A-N之间维持一致性。
在一些实施例中,核1202A-N中的一个或多个核能够进行多线程。系统代理1210包括协调和操作核1202A-N的那些组件。系统代理单元1210可以包括例如电源控制单元(PCU)和显示单元。PCU可以是或可以包括调节核1202A-N和集成图形逻辑1208的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1202A-N在架构指令集方面可以是同构的或异构的;也就是说,核1202A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行仅该指令集的子集或不同的指令集。
示例性计算机架构
图13-16是示例性计算机架构的框图。用于膝上型计算机、台式计算机、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备、和各种其他电子设备的本领域已知的其他系统设计和配置也是适合的。通常,能够结合本文所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备通常是合适的。
现在参考图13,示出了根据本发明的一个实施例的系统1300的框图。系统1300可以包括一个或多个处理器1310、1315,其耦合到控制器集线器1320。在一个实施例中,控制器集线器1320包括图形存储器控制器集线器(GMCH)1390和输入/输出集线器(IOH)1350(可以在分开的芯片上);GMCH 1390包括耦合到存储器1340和协处理器1345的存储器和图形控制器;IOH 1350将输入/输出(I/O)设备1360耦合到GMCH1390。替代地,存储器和图形控制器中的一个或两个被集成在处理器内(如本文所描述的),存储器1340和协处理器1345直接耦合到处理器1310,以及包括IOH 1350的单个芯片中的控制器集线器1320。
图13中用虚线表示附加处理器1315的可选性质。每个处理器1310、1315可以包括本文所描述的处理核中的一个或多个,并且可以是处理器1200的某个版本。
存储器1340可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)、或这两者的组合。对于至少一个实施例,控制器集线器1320经由多点总线(multi-drop bus)与(一个或多个)处理器1310、1315通信,该多点总线例如是前端总线(FSB)、诸如QuickPath互连(QPI)之类的点对点接口、或类似的连接1395。
在一个实施例中,协处理器1345是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器集线器1320可以包括集成图形加速器。
在物理资源1310、1315之间在包括架构特性、微架构特性、热特性、功耗特性等的指标度量的范围方面可存在各种差异。
在一个实施例中,处理器1310执行控制一般类型的数据处理操作的指令。嵌入在指令内的可以是协处理器指令。处理器1310将这些协处理器指令识别为应该由所附接的协处理器1345执行的类型。因此,处理器1310将这些协处理器指令(或表示协处理器指令的控制信号)发布到协处理器总线或其它互连上,以到协处理器1345。(一个或多个)协处理器1345接受并执行所接收的协处理器指令。
现在参考图14,示出了根据本发明的实施例的第一更具体的示例性系统1400的框图。如图14所示,多处理器系统1400是点对点互连系统,并且包括经由点对点互连1450耦合的第一处理器1470和第二处理器1480。处理器1470和1480中的每一个处理器可以是处理器1200的某个版本。在一些实施例中,处理器1470和1480分别是处理器1310和1315,而协处理器1438是协处理器1345。在另一个实施例中,处理器1470和1480分别是处理器1310和协处理器1345。
处理器1470和1480被示出为分别包括集成存储器控制器(IMC)单元1472和1482。处理器1470还包括作为其总线控制器单元的一部分的点对点(P-P)接口1476和1478;类似地,第二处理器1480包括P-P接口1486和1488。处理器1470、1480可以使用P-P接口电路1478、1488经由点对点(P-P)接口1450来交换信息。如图14所示,IMC 1472和1482将处理器耦合到相应的存储器(即,存储器1432和存储器1434),这些存储器可以是本地附接到相应处理器的主存储器的一部分。
处理器1470、1480可以各自使用点对点接口电路1476、1494、1486、1498经由各个P-P接口1452、1454来与芯片集1490交换信息。芯片集1490可以可选地经由高性能接口1492来与协处理器1438交换信息。在一个实施例中,协处理器1438是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩和/或解压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
共享缓存(未示出)可以被包括在任一处理器中,或者在两个处理器外部但经由P-P互连与处理器连接,使得在处理器进入低功率模式的情况下,任一或两个处理器的本地缓存信息可以被存储在共享缓存中。
芯片集1490可以经由接口1496耦合到第一总线1416。在一个实施例中,第一总线1416可以是外围组件互连(PCI)总线,或诸如PCI Express总线或另一第三代I/O互连总线之类的总线,但本发明的范围不限于此。
如图14所示,各种I/O设备1414可以耦合到第一总线1416,以及将第一总线1416耦合到第二总线1420的总线桥1418。在一个实施例中,一个或多个附加处理器1415(例如,协处理器、高吞吐量MIC处理器、GPGPU、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列、或任何其他处理器)耦合到第一总线1416。在一个实施例中,第二总线1420可以是低引脚数(LPC)总线。在一个实施例中,各种设备可以耦合到第二总线1420,包括,例如键盘和/或鼠标1422、通信设备1427、和诸如磁盘驱动器或其他大容量存储设备之类的存储装置1428(其可以包括指令/代码和数据1430)。此外,音频I/O 1424可以耦合到第二总线1420。注意,可能有其他架构。例如,代替图14的点对点架构,系统可以实现多点(multi-drop)总线或其他这样的架构。
现在参考图15,示出了根据本发明的实施例的第二更具体的示例性系统1500的框图。图14和15中的相似的元件具有相似的附图标记,并且图14中的某些方面已从图15中省略,以避免模糊图15的其他方面。
图15示出了处理器1470、1480可以分别包括集成存储器和I/O控制逻辑(“CL”)1472和1482。因此,CL 1472、1482包括集成存储器控制器单元并包括I/O控制逻辑。图15示出了不仅存储器1432、1434耦合到CL1472、1482,而且I/O设备1514也耦合到控制逻辑1472、1482。传统(legacy)I/O设备1515耦合到芯片集1490。
现在参考图16,示出了根据本发明的实施例的SoC 1600的框图。图12中的相似的元件具有相似的附图标记。此外,虚线框是更高级SoC上的可选功能。在图16中,(一个或多个)互连单元1602耦合到以下各项:应用处理器1610,其包括一组一个或多个核1202A-N(包括缓存单元1204A到1204N)和(一个或多个)共享缓存单元1206;系统代理单元1210;(一个或多个)总线控制器单元1216;(一个或多个)集成存储器控制器单元1214;一组或一个或多个协处理器1620,其可以包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1630;直接存储器存取(DMA)单元1632;以及显示单元1640,用于耦合到一个或多个外部显示器。在一个实施例中,(一个或多个)协处理器1620包括专用处理器,例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
本文公开的机制的实施例可以以硬件、软件、固件或这些实现方法的组合来实现。本发明的实施例可以实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器,存储系统(包括易失性和非易失性存储器和/或存储元件),至少一个输入设备及至少一个输出设备。
程序代码(例如图14中所示的代码1430)可以应用于输入指令以执行本文描述的功能并生成输出信息。输出信息可以以已知的方式应用于一个或多个输出设备。对于本申请,处理系统包括具有处理器的任何系统,例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以以高级过程或面向对象的编程语言实现,以与处理系统通信。如果需要,程序代码也可以用汇编语言或机器语言实现。实际上,本文描述的机制不限于任何特定编程语言的范围。在任何情况下,该语言可以是经编译或解析的语言。
至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的代表性指令来实现,该代表性指令表示处理器内的各种逻辑,当由机器读取时使得机器构造逻辑以执行本文所描述的技术。这种称为“IP核”的表示可以存储在有形机器可读介质上,并提供给各种客户或制造设施,以加载到实际制造逻辑或处理器的制造机器中。
这样的机器可读存储介质可以包括但不限于由机器或设备制造或形成的物品的非暂时性有形布置,包括诸如硬盘之类的存储介质,任何其他类型的盘,包括软盘、光盘、光盘只读存储器(CD-ROM)、光盘可擦写(CD-RW)和磁光盘、半导体设备(如只读存储器(ROM))、随机存取存储器(RAM)(如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)、磁卡或光学卡或适用于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括非暂时性实体机器可读介质,其包含指令或包含设计数据,例如硬件描述语言(HDL),其定义本文描述的结构、电路、装置、处理器和/或系统特征。这些实施例也可以被称为程序产品。
仿真(包括二进制转换,代码变形等)
在一些情况下,指令转换器可用于将指令从源指令集转换为目标指令集。例如,指令转换器可以转换(例如,使用静态二进制转换,包括动态编译的动态二进制转换)、变形、仿真或以其他方式将指令转换为要由核处理的一个或多个其他指令。指令转换器可以用软件、硬件、固件或其组合来实现。指令转换器可以在处理器上、处理器外或者部分在处理器上、部分在处理器外。
图17是根据本发明的一些实施例的对照使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。在所示实施例中,指令转换器是软件指令转换器,但替代地,指令转换器可以用软件、固件、硬件、或其各种组合来实现。图17示出了采用高级语言1702的程序可以使用x86编译器1704来编译以生成x86二进制代码1706,其可以由具有至少一个x86指令集核的处理器1716本地执行。具有至少一个x86指令集核的处理器1716表示可以通过进行以下操作来执行与具有至少一个x86指令集核的Intel处理器基本上相同的功能,从而实现与具有至少一个x86指令集核的Intel处理器基本上相同的结果的任何处理器:兼容地执行或以其他方式处理(1)Intel x86指令集核的指令集的大部分或者(2)目标为在具有至少一个x86指令集核的Intel处理器上运行的应用或其他软件的目标代码版本。x86编译器1704表示可操作以生成x86二进制代码1706(例如,目标代码)的编译器,其中二进制代码可以在具有或不具有附加链接处理的情况下在具有至少一个x86指令集核的处理器1716上被执行。类似地,图17示出了采用高级语言1702的程序可以使用替代指令集编译器1708来编译以生成替代指令集二进制代码1710,该二进制代码可以由没有至少一个x86指令集核的处理器1714(例如,具有执行美国加利福尼亚州桑尼维尔市的MIPS Technologies的MIPS指令集和/或执行美国加利福尼亚州桑尼维尔市的ARMHoldings的ARM指令集的核的处理器)本地执行。指令转换器1712用于将x86二进制代码1706转换为可由不具有x86指令集核的处理器1714本地执行的代码。该转换后的代码不太可能与替代指令集二进制代码1710相同,因为很难制造出能够实现它的指令转换器;但是,转换后的代码将完成一般操作,并由来自替代指令集的指令组成。因此,指令转换器1712表示通过仿真、模拟、或任何其他过程来允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1706的软件、固件、硬件、或其组合。
更多示例
示例1提供了一种示例性处理器,其包括:获取电路,用于获取指令;解码电路,用于对获取的指令进行解码,获取的指令用于指定操作码、地址和密钥标识符,该操作码指示处理器将使用该地址来确定是否使用显式密钥,在确定使用显式密钥的情况下,处理器将使用密钥标识符在多个完整加密密钥中选择密码密钥,否则,处理器将通过以下方式来动态地推导密码密钥,所述方式是使用密钥标识符在多个密钥拆分中选择密钥拆分、并将密钥拆分和根密钥提供给密钥推导函数(KDF),处理器还将在加密电路上使用密码密钥,以对经加密的存储器位置执行密码操作;以及执行电路,用于按照操作码来执行指令,其中,每个密钥拆分需要比每个完整加密密钥更少的存储。
示例2包括示例1的示例性处理器的实质,还包括多个核,每个核包括获取电路、解码电路和执行电路的实例,其中,这多个核的至少一适当子集用于执行多个虚拟机,每个虚拟机具有唯一的密码密钥。
示例3包括示例1的示例性处理器的实质,其中,指令与处理器的多个核之一正在执行的虚拟机相关联。
示例4包括示例1的示例性处理器的实质,其中,指令还具有用于指定写数据的字段,并且其中,操作码要求处理器对写数据进行加密并将经加密的写数据存储到由地址标识的位置。
示例5包括示例1的示例性处理器的实质,其中,操作码要求从由地址标识的位置获取读数据,并使用密码密钥对读数据进行解密。
示例6包括示例1的示例性处理器的实质,其中,KDF在计数器模式或反馈模式下使用伪随机函数的多次迭代。
示例7包括示例1的示例性处理器的实质,其中,根密钥包括128位或256位。
示例8提供了一种由处理器执行的方法,该处理器包括:存储器控制器,用于使用密码电路对数据进行加密和解密;以及存储装置,用于存储多个密钥拆分和多个完整加密密钥,该方法包括:使用获取电路来获取指令;使用解码电路对获取的指令进行解码,获取的指令指定操作码、地址和密钥标识符,该操作码指示处理器将使用该地址来确定是否使用显式密钥,在确定使用显式密钥的情况下,处理器将使用密钥标识符在多个完整加密密钥中选择密码密钥,否则,处理器将通过以下方式来动态地推导密码密钥,所述方式是使用密钥标识符在多个密钥拆分中选择密钥拆分、并将密钥拆分和根密钥提供给由存储器控制器实现的密钥推导函数(KDF),存储器控制器还将使用密码密钥与加密电路,以对经加密的存储器位置执行密码操作;以及使用执行电路按照所述操作码来执行指令,其中,每个密钥拆分需要比每个完整加密密钥更少的存储。
示例9包括示例8的示例性方法的实质,还包括使用处理器内的多个核来实现多个虚拟机,每个核包括获取电路、解码电路和执行电路的实例,其中这多个核中的至少一个实现多个虚拟机,每个虚拟机具有唯一的密码密钥。
示例10包括示例8的示例性方法的实质,其中,指令与处理器的多个核之一正在执行的虚拟机相关联。
示例11包括示例8的示例性方法的实质,其中,指令还具有用于指定写数据的字段,并且其中,操作码要求处理器对写数据进行加密并将经加密的写数据存储到由地址标识的位置。
示例12包括示例8的示例性方法的实质,其中,操作码要求从由地址标识的位置获取读数据,并使用密码密钥对读数据进行解密。
示例13包括示例8的示例性方法的实质,其中,KDF在计数器模式或反馈模式下使用伪随机函数的多次迭代。
示例14包括示例8的示例性方法的实质,其中,根密钥包括128位或256位。
示例15提供了一种示例性非暂时性计算机可读介质,其包含指令,包括存储器控制器和存储装置的处理器以如下操作对这些指令做出响应,存储器控制器用于使用密码电路对数据进行加密和解密,存储装置用于存储多个密钥拆分和多个完整加密密钥,所述操作包括:使用获取电路来获取指令;使用解码电路对获取的指令进行解码,获取的指令指定操作码、地址和密钥标识符,该操作码指示处理器将使用该地址来确定是否使用显式密钥,在确定使用显式密钥的情况下,处理器将使用密钥标识符在多个完整加密密钥中选择密码密钥,否则,处理器将通过以下方式来动态地推导密码密钥,所述方式是使用密钥标识符在多个密钥拆分中选择密钥拆分、并将密钥拆分和根密钥提供给由存储器控制器实现的密钥推导函数(KDF),存储器控制器还将使用密码密钥与加密电路,以对经加密的存储器位置执行密码操作;以及使用执行电路按照操作码来执行指令,其中,每个密钥拆分需要比每个完整加密密钥更少的存储。
示例16包括示例15的示例性非暂时性计算机可读介质的实质,其中,指令还要求使用处理器内的多个核来实现多个虚拟机,每个核包括获取电路、解码电路和执行电路的实例,其中这多个核中的至少一个实现多个虚拟机,每个虚拟机具有唯一的密码密钥。
示例17包括示例15的示例性非暂时性计算机可读介质的实质,其中,指令与处理器的多个核之一正在执行的虚拟机相关联。
示例18包括示例15的示例性非暂时性计算机可读介质的实质,其中,指令还具有用于指定写数据的字段,并且其中,操作码要求处理器对写数据进行加密并将经加密的写数据存储到由地址标识的位置。
示例19包括示例15的示例性非暂时性计算机可读介质的实质,其中,操作码要求从由地址标识的位置获取读数据,并使用密码密钥对读数据进行解密。
示例20包括示例15的示例性非暂时性计算机可读介质的实质,其中,KDF在计数器模式或反馈模式下使用伪随机函数的多次迭代。
Claims (21)
1.一种处理器,包括:
获取电路,用于获取指令;
解码电路,用于对获取的指令进行解码,所述获取的指令用于指定操作码、地址和密钥标识符,所述操作码指示所述处理器将使用所述地址来确定是否使用显式密钥,在确定使用显式密钥的情况下,所述处理器将使用所述密钥标识符在多个完整加密密钥中选择密码密钥,否则,所述处理器将通过以下方式来动态地推导所述密码密钥,所述方式是使用所述密钥标识符在多个密钥拆分中选择密钥拆分、并将所述密钥拆分和根密钥提供给密钥推导函数KDF,所述处理器还将使用所述密码密钥与加密电路,以对经加密的存储器位置执行密码操作;和
执行电路,用于按照所述操作码来执行所述指令,
其中,每个密钥拆分需要比每个完整加密密钥更少的存储。
2.如权利要求1所述的处理器,还包括多个核,每个核包括获取电路、解码电路和执行电路的实例,其中,所述多个核的至少一适当子集用于执行多个虚拟机,每个虚拟机具有唯一的密码密钥。
3.如权利要求1-2中任一权利要求所述的处理器,其中,所述指令与所述处理器的多个核之一正在执行的虚拟机相关联。
4.如权利要求1-2中任一权利要求所述的处理器,其中,所述指令还具有用于指定写数据的字段,并且其中,所述操作码要求所述处理器对所述写数据进行加密并将经加密的写数据存储到由所述地址标识的位置。
5.如权利要求1所述的处理器,其中,所述操作码要求从由所述地址标识的位置获取读数据,并使用所述密码密钥对所述读数据进行解密。
6.如权利要求1-5中任一权利要求所述的处理器,其中,所述KDF在计数器模式或反馈模式下使用伪随机函数的多次迭代。
7.如权利要求1-6中任一权利要求所述的处理器,其中,所述根密钥包括128位或256位。
8.一种由处理器执行的方法,该处理器包括:存储器控制器,用于使用密码电路对数据进行加密和解密;以及存储装置,用于存储多个密钥拆分和多个完整加密密钥,该方法包括:
使用获取电路来获取指令;
使用解码电路对获取的指令进行解码,所述获取的指令指定操作码、地址和密钥标识符,所述操作码指示所述处理器将使用所述地址来确定是否使用显式密钥,在确定使用显式密钥的情况下,所述处理器将使用所述密钥标识符在所述多个完整加密密钥中选择密码密钥,否则,所述处理器将通过以下方式来动态地推导所述密码密钥,所述方式是使用所述密钥标识符在多个密钥拆分中选择密钥拆分、并将所述密钥拆分和根密钥提供给由所述存储器控制器实现的密钥推导函数KDF,所述存储器控制器还将使用所述密码密钥与加密电路来对经加密的存储器位置执行密码操作;和
使用执行电路按照所述操作码来执行所述指令,
其中,每个密钥拆分需要比每个完整加密密钥更少的存储。
9.如权利要求8所述的方法,还包括使用所述处理器内的多个核来实现多个虚拟机,每个核包括获取电路、解码电路和执行电路的实例,其中所述多个核中的至少一个实现多个虚拟机,每个虚拟机具有唯一的密码密钥。
10.如权利要求8-9中任一权利要求所述的方法,其中,所述指令与所述处理器的多个核之一正在执行的虚拟机相关联。
11.如权利要求8-10中任一权利要求所述的方法,其中,所述指令还具有用于指定写数据的字段,并且其中,所述操作码要求所述处理器对所述写数据进行加密并将经加密的写数据存储到由所述地址标识的位置。
12.如权利要求8所述的方法,其中,所述操作码要求从由所述地址标识的位置获取读数据,并使用所述密码密钥对所述读数据进行解密。
13.如权利要求8-12中任一权利要求所述的方法,其中,所述KDF在计数器模式或反馈模式下使用伪随机函数的多次迭代。
14.如权利要求8-13中任一权利要求所述的方法,其中,所述根密钥包括128位或256位。
15.一种系统,包括:
用于存储指令的存储器;
处理器,该处理器包括:
获取电路,用于获取指令;
解码电路,用于对获取的指令进行解码,所述获取的指令用于指定操作码、地址和密钥标识符,所述操作码指示所述处理器将使用所述地址来确定是否使用显式密钥,在确定使用显式密钥的情况下,所述处理器将使用所述密钥标识符在多个完整加密密钥中选择密码密钥,否则,所述处理器将通过以下方式来动态地推导所述密码密钥,所述方式是使用所述密钥标识符在多个密钥拆分中选择密钥拆分、并将所述密钥拆分和根密钥提供给密钥推导函数KDF,所述处理器还将使用所述密码密钥与加密电路来对经加密的存储器位置执行密码操作;和
执行电路,用于按照所述操作码来执行所述指令,
其中,每个密钥拆分需要比每个完整加密密钥更少的存储。
16.如权利要求15所述的系统,还包括多个核,每个核包括获取电路、解码电路和执行电路的实例,其中,所述多个核的至少一适当子集用于执行多个虚拟机,每个虚拟机具有唯一的密码密钥。
17.如权利要求15-16中任一权利要求所述的系统,其中,所述指令与所述处理器的多个核之一正在执行的虚拟机相关联。
18.如权利要求15-16中任一权利要求所述的系统,其中,所述指令还具有用于指定写数据的字段,并且其中,所述操作码要求所述处理器对所述写数据进行加密并将经加密的写数据存储到由所述地址标识的位置。
19.如权利要求15所述的系统,其中,所述操作码要求从由所述地址标识的位置获取读数据,并使用所述密码密钥对所述读数据进行解密。
20.如权利要求15-19中任一权利要求所述的系统,其中,所述KDF在计数器模式或反馈模式下使用伪随机函数的多次迭代。
21.如权利要求15-20中任一权利要求所述的系统,其中所述根密钥包括128位或256位。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/728,712 | 2019-12-27 | ||
US16/728,712 US20210200880A1 (en) | 2019-12-27 | 2019-12-27 | Method and apparatus for multi-key total memory encryption based on dynamic key derivation |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113051626A true CN113051626A (zh) | 2021-06-29 |
Family
ID=72659134
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011017996.9A Pending CN113051626A (zh) | 2019-12-27 | 2020-09-24 | 基于动态密钥推导的多密钥全存储器加密的方法和装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20210200880A1 (zh) |
EP (1) | EP3843322A1 (zh) |
KR (1) | KR20210084223A (zh) |
CN (1) | CN113051626A (zh) |
BR (1) | BR102020019667A2 (zh) |
TW (1) | TW202139038A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116308813A (zh) * | 2023-05-17 | 2023-06-23 | 青岛农村商业银行股份有限公司 | 一种异业联合金融权益安全管理系统 |
CN116781234A (zh) * | 2023-05-04 | 2023-09-19 | 深圳市海德盈富信息技术策划有限公司 | 基于伪随机乱序加密的财务数据共享方法及装置 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10580122B2 (en) * | 2015-04-14 | 2020-03-03 | Chongqing University Of Ports And Telecommunications | Method and system for image enhancement |
US11520709B2 (en) * | 2020-01-15 | 2022-12-06 | International Business Machines Corporation | Memory based encryption using an encryption key based on a physical address |
US11763008B2 (en) * | 2020-01-15 | 2023-09-19 | International Business Machines Corporation | Encrypting data using an encryption path and a bypass path |
US11706039B2 (en) * | 2020-12-26 | 2023-07-18 | Intel Corporation | ISA accessible physical unclonable function |
US11700135B2 (en) * | 2020-12-26 | 2023-07-11 | Intel Corporation | ISA accessible physical unclonable function |
US20230100106A1 (en) * | 2021-09-24 | 2023-03-30 | Intel Corporation | System, Apparatus And Method For Direct Peripheral Access Of Secure Storage |
US20230102178A1 (en) * | 2021-09-25 | 2023-03-30 | Intel Corporation | Isa accessible physical unclonable function |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10657071B2 (en) * | 2017-09-25 | 2020-05-19 | Intel Corporation | System, apparatus and method for page granular, software controlled multiple key memory encryption |
US11121856B2 (en) * | 2018-06-15 | 2021-09-14 | Intel Corporation | Unified AES-SMS4—Camellia symmetric key block cipher acceleration |
US11017092B2 (en) * | 2018-09-27 | 2021-05-25 | Intel Corporation | Technologies for fast launch of trusted containers |
-
2019
- 2019-12-27 US US16/728,712 patent/US20210200880A1/en not_active Abandoned
-
2020
- 2020-09-18 TW TW109132349A patent/TW202139038A/zh unknown
- 2020-09-24 KR KR1020200123996A patent/KR20210084223A/ko active Search and Examination
- 2020-09-24 CN CN202011017996.9A patent/CN113051626A/zh active Pending
- 2020-09-25 EP EP20198333.5A patent/EP3843322A1/en not_active Withdrawn
- 2020-09-26 BR BR102020019667-7A patent/BR102020019667A2/pt not_active Application Discontinuation
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116781234A (zh) * | 2023-05-04 | 2023-09-19 | 深圳市海德盈富信息技术策划有限公司 | 基于伪随机乱序加密的财务数据共享方法及装置 |
CN116781234B (zh) * | 2023-05-04 | 2024-02-02 | 深圳市海德盈富信息技术策划有限公司 | 基于伪随机乱序加密的财务数据共享方法及装置 |
CN116308813A (zh) * | 2023-05-17 | 2023-06-23 | 青岛农村商业银行股份有限公司 | 一种异业联合金融权益安全管理系统 |
CN116308813B (zh) * | 2023-05-17 | 2023-08-08 | 青岛农村商业银行股份有限公司 | 一种异业联合金融权益安全管理系统 |
Also Published As
Publication number | Publication date |
---|---|
KR20210084223A (ko) | 2021-07-07 |
BR102020019667A2 (pt) | 2021-06-29 |
TW202139038A (zh) | 2021-10-16 |
US20210200880A1 (en) | 2021-07-01 |
EP3843322A1 (en) | 2021-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210382719A1 (en) | Apparatuses, methods, and systems for access synchronization in a shared memory | |
CN113051626A (zh) | 基于动态密钥推导的多密钥全存储器加密的方法和装置 | |
CN110659244A (zh) | 内联编码能力 | |
US9760371B2 (en) | Packed data operation mask register arithmetic combination processors, methods, systems, and instructions | |
CN107003852B (zh) | 用于执行向量位混洗的方法和装置 | |
CN107003845B (zh) | 用于在掩码寄存器和向量寄存器之间可变地扩展的方法和装置 | |
KR101729424B1 (ko) | 128-비트 프로세서에서의 skein256 sha3 알고리즘에 대한 명령어 세트 | |
US11917067B2 (en) | Apparatuses, methods, and systems for instructions for usage restrictions cryptographically tied with data | |
US11874776B2 (en) | Cryptographic protection of memory attached over interconnects | |
WO2013095659A1 (en) | Multi-element instruction with different read and write masks | |
EP4109312A1 (en) | Circuitry and methods for supporting encrypted remote direct memory access (erdma) for live migration of a virtual machine | |
CN113051192A (zh) | 具有能够实现tdx keyid缩放的自包含范围的tdx岛 | |
US11954047B2 (en) | Circuitry and methods for spatially unique and location independent persistent memory encryption | |
CN112148510A (zh) | 用于线性地址屏蔽架构的设备、方法和系统 | |
EP4156005A1 (en) | System, apparatus and method for direct peripheral access of secure storage | |
TW202234275A (zh) | 推測漏洞的動態緩解 | |
CN114692166A (zh) | 推测漏洞的动态检测 | |
EP4202655A1 (en) | Circuitry and methods for implementing capability-based compartment switches with descriptors | |
EP4202697A1 (en) | Circuitry and methods for implementing non-redundant metadata storage addressed by bounded capabilities | |
EP4198716A1 (en) | Circuitry and methods for implementing capabilities using narrow registers |
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 |