CN112148210A - 用于存储器保护的装置id - Google Patents
用于存储器保护的装置id Download PDFInfo
- Publication number
- CN112148210A CN112148210A CN202010218257.XA CN202010218257A CN112148210A CN 112148210 A CN112148210 A CN 112148210A CN 202010218257 A CN202010218257 A CN 202010218257A CN 112148210 A CN112148210 A CN 112148210A
- Authority
- CN
- China
- Prior art keywords
- memory
- access
- policy
- field
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
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
-
- 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/0866—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
-
- 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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- 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/002—Countermeasures against attacks on cryptographic mechanisms
-
- 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/088—Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic algorithms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- Storage Device Security (AREA)
Abstract
在一个示例中公开了一种计算系统,包括:处理器;存储器;以及存储器加密引擎(MEE),所述存储器加密引擎(MEE)包括电路和逻辑,用于:分配受保护的隔离存储器区域(IMR);对受保护的IMR加密;设置访问控制策略,用于允许通过由装置标识符标识的装置访问所述IMR;以及在接收到针对IMR的存储器访问请求时,实施访问控制策略。
Description
技术领域
本公开一般涉及计算机安全领域,并且更特别地但非排他地涉及提供用于存储器保护的装置标识的系统和方法。
背景技术
在现代世界中,计算资源在人类生活中扮演着越来越集成的角色。随着计算机变得越来越普遍,控制从电网和大型工业机器到台式工作站和灯泡的所有事物,计算机安全性在许多情况下是首要关注的问题。
附图说明
当结合附图阅读时,从以下详细描述中可以最好地理解本公开。要强调的是,根据工业中的标准实践,各种特征不一定按比例绘制,并且仅用于说明目的。在明确或隐含地示出了比例的情况下,它仅提供了一个说明性示例。在其它实施例中,为了讨论的清楚,各种特征的尺寸可以任意地增加或减小。
图1是用于加密存储器区域的分布式实施机制的框图。
图2是示出基于统一源ID的存储器访问系统的框图。
图3是示出说明性架构的所选方面的系统的框图。
图4是示出了被配置成提供存储器访问控制策略的系统的附加所选元件的框图。
图5是设置存储器访问策略的方法的流程图。
图6是实施存储器访问策略的方法的流程图。
图7a-7b是示出根据本说明书的一个或多个示例的通用向量-友好指令格式及其指令模板的框图。
图8a-8d是示出根据本说明书的一个或多个示例的示例特定向量-友好指令格式的框图。
图9是根据本说明书的一个或多个示例的寄存器架构的框图。
图10a是示出根据本说明书的一个或多个示例的示例有序流水线和示例寄存器重命名、乱序发布/执行流水线两者的框图。
图10b是示出根据本说明书的一个或多个示例的要被包括在处理器中的有序架构核的示例和示例寄存器重命名、乱序发布/执行架构核两者的框图。
图11a-11b示出根据本说明书的一个或多个示例的更特定的有序核架构的框图,所述核将是芯片中的若干逻辑块(包括相同类型和/或不同类型的其他核)中的一个。
图12是根据本说明书的一个或多个示例的可以具有多于一个核、可以具有集成存储器控制器并且可以具有集成图形的处理器的框图。
图13-16是根据本说明书的一个或多个示例的计算机架构的框图。
图17是根据本说明书的一个或多个示例进行如下对比的框图:使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令。
具体实施方式
以下公开提供了用于实现本公开的不同特征的许多不同的实施例或示例。下面描述组件和布置的特定示例用于简化本公开。当然,这些仅仅是示例,并非旨在是限制性的。此外,本公开可能在各种示例中重复参考标号和/或字母。这种重复是出于简单和清楚的目的,并且其本身不表示所讨论的各种实施例和/或配置之间的关系。不同的实施例可以具有不同的优点,并且任何实施例都不必需要特定的优点。
现代计算工作负荷需求安全性机制远远超出传统的安全性示例,例如旧的UNIX大型机。在本上下文中,多个用户可能已经在系统上拥有帐户,并且安全性由简单的认证机制组成,其中用户提供用户名和密码,并且被认证。这样的系统具有初步的访问控制,例如通过对文件系统内的文件和目录应用某些准许。
随着计算的发展,安全性威胁的性质也在发展。例如,在现代云数据中心中,多租户(multitenant)数据中心中的大量租户可以在相同物理硬件上运行它们自己的单独工作负载。尽管这些工作负荷在逻辑上是分开的,但是诸如利用高速缓存加载和分支误预测的侧通道攻击之类的一些现代复杂攻击能够访问它们不应访问的数据。
增强的安全性可以通过可信环境而被提供,诸如多密钥总存储器加密(MKTME),其对装置的整个存储器加密。当存储器被加密时,即使攻击者能够获得对未授权的存储器位置的访问,在没有正确的消息认证码(MAC)的情况下,泄露的数据对于攻击者而言是无用的。
即使在单用户装置中,所述单用户装置诸如膝上型计算机、台式计算机、平板计算机、智能电话或其他类似装置,也可以提供可信执行环境(TEE)来处理特别敏感的工作负载或安全性功能。TEE可以与存储器加密引擎(MEE)通过接口连接,MEE可以不必是MKTME,但是在本说明书中被称为“部分范围MEE”。如贯穿本说明书所使用的,MEE应当被广泛地理解为包括提供总存储器加密(诸如在MKTME的情况下)的MEE或仅加密存储器的一部分(如在“部分范围MEE”的情况下)的MEE。
用于加密存储器的实施机制可以包括标识隔离存储器区域(IMR),其可以覆盖例如具有定义的开始地址和结束地址的定义的存储器范围。可以授权一个或多个授权装置访问IMR存储器范围,所述一个或多个授权装置可以由一个或多个装置标识符(或装置ID)来标识。对于针对IMR范围的每个存储器访问,适当的访问控制策略可标识与存储器访问请求相关联的装置ID,确定装置ID是否与被授权访问IMR范围的装置的装置ID匹配,并且通过在匹配的情况下允许访问或在不匹配的情况下不允许访问来实施策略。
一个可能的实现包括多个不同的装置,每个装置向IMR提供它们自己的访问控制策略。例如,系统可以在存储器中针对其安全性具有若干隔离区。这种区域的示例包括用于TEE的IMR、用于保护Intel®软件保护扩展(SGX)代码和数据的处理器保留存储器范围寄存器(PRMRR)、用于保护SMM代码和数据的系统管理模式范围寄存器(SMR)、以及用于向图形提供隔离的存储器的图形窃取存储器。
提供这些保护的硬件平台最终需要在每个上下文中通过安全性架构所要求的那样,实现对每个范围的期望保护。
为了提供对各种范围的期望保护,硬件平台可以在平台中的各种位置处实现保护。例如,PRMRR保护可以在核中(以防止未授权的核访问)、在输入/输出(I/O)端口中(以防止未授权的I/O访问)以及在图形驱动器中(以防止来自图形的未授权访问)实现。
然而,在多个位置处的访问控制的这种重复可能导致增加的硬件可信计算基础(TCB)、验证和设计复杂性。这可增加安全性漏洞的可能性。
其它实施例可利用如下事实:具有受保护存储器的系统通常已包含MEE。MEE位于存储器路径上,并且因此提供了用于监视所有存储器访问的有用位置。在本说明书的至少一些实施例中,在MEE(例如,部分范围MEE、MKTME或其他类似MEE)中实现集中式访问控制,针对每个IMR标识的特定范围具有可信代理。可以以各种不同的方式对加密引擎的保护策略编程。例如,可以提供新的指令集架构指令,其在一些情况下可以采用微码来实现。当使用该指令时,软件编程可以简单地运行指令,并且通常假定已经执行了所指示的策略。在其它示例中,可以提供存储器策略寄存器,通过所述存储器策略寄存器,例如,可信代理可以利用适当的数据填充寄存器,所述适当的数据诸如IMR的地址范围和单个代理ID、多个代理ID、或被授权访问存储器范围的代理ID的范围。在一些情况下,这些寄存器不能由软件直接编程。在这些情况下,应用编程接口(API)或其它接口,诸如存储器映射I/O(MMIO)接口,可以由MEE本身提供。使用该接口,系统程序员可以将适当的访问控制编程到寄存器中,并且在MEE内设置策略。
在一些实施例中,诸如管芯上互连、核间互连、非核构造或其他构造或互连之类的构造可被制造,使源ID知晓能够实现传播源ID以及存储器访问请求。在各种实施例中,源ID可以作为用于源ID的多个总线线路串行地(例如,作为数据分组)或并行地传送。例如,如果源ID是16位源ID,则附加的16个导体可被添加到非核构造或其他片上构造,用于携带附加的源ID信息。
然而,注意,这些总线线路的添加在每个应用中都是不实际的。例如,装置可能需要通过现有的定义明确的标准兼容总线进行通信。仅为了提供一个示例,外围组件互连高速(PCIe)是用于将外围装置添加到计算系统的流行标准。PCIe总线可以包括用于从独立用户系统的人接口和I/O装置到数据中心中的高速硬件加速器的所有事物的外围设备。除了对位于集成电路或片上系统(SoC)上的装置的访问控制之外,可能需要提供来自这些装置的访问控制。
在一些实施例中,用于维护现有的标准兼容PCIe总线而不是试图向总线添加新的痕迹线(trace line)可能更实用。在这种情况下,为了安全性目的,可能需要利用附加逻辑来修改PCIe控制器以接收装置ID。在一个说明性示例中,装置ID可以作为事务层协议(TLP)分组报头或在TLP分组报头内传送。因此,PCIe控制器可能需要TLP前缀处理模块,该TLP前缀处理模块能够从TLP前缀中提取适当的装置ID,该TLP前缀在符合标准的PCIe总线上被接收,并且然后将其转移成经由管芯上构造的装置ID总线线路传送的并行数据。
在一个说明性实施例中,装置ID是16位装置标识符,其提供系统中总共65,536个可能的装置ID。此16位装置ID是以说明性及非限制性实例的方式公开的,并且可使用其它装置ID宽度。例如,通过说明性和非限制性示例,装置ID可以是2、4、6、8、12、16、24、32、48、64或128位。此外,虽然在该实施例中将装置ID作为二进制无符号整数来对待,但是其他表示也是可能的。例如,在事先已知仅存在16个可能装置的系统中,或者在存在16个已知枚举装置的系统中,则16位装置ID可作为16个标志的字段来对待,其中每个标志指示对存储器访问感兴趣的分立装置。这在实例中可以是有用的,其中多于一个装置可能需要同时访问存储器位置。例如,可能存在这样的情况:其中多个分立装置需要在相同的存储循环从存储器位置读取值,在这种情况下,可以设置用于这些装置中的每一个装置的标志,并且MEE可以确保被标志的所有装置被准许访问存储器位置。
在一些实施例中,这个新的装置ID及其相关联的输送机制是必要的,因为存储器访问策略控制已经集中到MEE。在具有分布式访问控制方法的其他实施例中,每个装置上的复制访问实施逻辑固有地知道其接收的存储器访问请求的源。例如,图形引擎中的访问控制逻辑知道通过它的访问,源自作为源的图形引擎。在集中式访问控制的情况下,可能需要将发起存储器事务的源的标识符一直携带到MEE,并且可能一直携带到存储器控制器。因此,本说明书的实施例引入了源感知构造(SAF),其允许经由MEE以集中的方式实施这些保护。
这使得能够通过调节MEE的有利位置来集中访问控制,进一步减少硬件TCB、验证和设计复杂性,这也降低了安全性漏洞的可能性。总之,本说明书的集中式访问策略提供了更高的保证。这通过使用SAF和指令集架构(ISA)支持来实现,以将访问策略编程到MEE内的中央访问控制实施逻辑。
本说明书的实施例可以有用地分成三个部分。
第一,在MEE内提供新的访问控制引擎,其可以是部分范围MEE、MKTME或任何其他类似MEE。访问引擎实现对期望的平台资源和存储器范围的访问策略。负责在现有平台上对范围编程的可信代理可以将范围和策略信息编程到加密引擎,并且此后在允许特征启动之前锁定和/或验证策略。
第二,提供SAF以提供关于构造的源信息。用于特定资源的访问策略被编程为允许访问资源的源标识符的集合。这要求每个启动器或启动器的集合与一个或多个源标识符或源标识符的范围相关联。策略寄存器可使用本文被称为“SET_POLICY”的新ISA指令来编程,尽管应当理解,名称SET_POLICY仅作为说明性示例而提供。为了落入本说明书和权利要求书的范围内,架构不需要使用名称SET_POLICY,而是可以为提供相同或相似功能的寄存器提供不同的名称。在其它实施例中,可以根据由资源安全性架构所要求的那样使用MMIO访问。作为示例,PRMRR由微码编程,而SMRR可以由系统软件使用MMIO编程。
第三,为编程策略提供ISA支持。在一个实施例中提供新指令以将策略信息编程到加密引擎。这对于在它们的TCB中不包括系统软件的实施例(例如,Intel® SGX)是有用的。
现在将更特别地参照附图来描述用于提供用于存储器保护的装置ID的系统和方法。应当注意,在整个附图中,可以重复某些参考标号以指示特定装置或块跨附图完全或基本一致。然而,这并不旨在暗示所公开的各种实施例之间的任何特定关系。在某些示例中,一类元件可以由特定的参考标号(“小工具(widget)10”)来指代,而该类的各个种类或示例可以由用连字符连接的标号(“第一特定小工具10-1”和“第二特定小工具10-2”)来指代。
图1是用于加密存储器区域的分布式实施机制的框图。在图1的示例中,例如在部分范围MEE的情况下,存储器104可选地包括未受保护区域108。未受保护区域108可由通用硬件和软件140访问。
存储器104也被分成多个IMR 112。在该图示中,每个IMR具有不同的目的。例如,IMR 112-1是被分配为用于可信计算操作的TEE包体(enclave)的PRMRR。IMR 112-1由核经由诸如Intel® 软件保护扩展(SGX)120的特殊指令来管理。
IMR 112-2是SMRR区域,并且在该图示中由SMI处置器124管理。
IMR 112-3是不同的存储器包体,并且由核心128管理。
IMR 112-4是受保护的I/O存储器区域或地址空间,并且由PCIe控制器132管理。
在该配置中,SGX120、SMI处置器124、核心128和PCIe控制器132全部提供它们自己的存储器管理和安全性功能。这些功能跨各种装置被复制,因此增加了这些装置中的一个装置中的编程错误和/或安全性漏洞的概率。注意,在这种配置中,不存在对SAF的需要,因为每个装置固有地知道存储器访问请求的源。
图2是系统200的框图,其示出了基于统一源ID的存储器访问系统。在该示例中,如前所述,可选地提供未受保护区域208以供通用硬件和软件240访问。此外,IMR 212-1提供了经由SGX 220可访问的PRMRR TEE。IMR 212-2用于SMRR,并且由SMI处置器224可访问。IMR212-3是由核心228可访问的存储器包体。IMR 212-4是受保护的I/O区域,并且由PCIe控制器232可访问。
在该实施例中,存储器访问控制特征可以由MEE250统一提供,在各个实施例中,其可以是部分范围MEE、MKTME或任何其他适合的MEE。在该图中所示的互连可以被认为是构造,并且在一些实施例中,至少在PCIe控制器232、核228、SMI处置器224、SGX 220以及通用硬件和软件240(一方面)与MEE/MKTME 250(另一方面)之间,构造可以是SAF。例如,构造可以包括附加总线线路,诸如用于16位源ID的16个附加总线线路,其在各种装置之间携带源ID信息。
图3是示出说明性架构的所选方面的系统300的框图。在该示例中,系统300包括一个或多个处理器,所述一个或多个处理器包括四个核。包括在图3的示例中的核0 0330-0、核1 330-1、核2 330-2和核心3 330-3。核330连接到图形引擎334,而路由器328将数据路由到各个核330。
数据端口308向系统的其它部分发送数据和从系统的其它部分接收数据。数据端口308可以被认为是非核的一部分。
I/O端口304也通信地耦合到数据端口308,并且可以提供I/O服务,其包括联网、人接口装置和其他输入/输出。I/O端口304通信地耦合到PCIe构造336,其可以包括PCIe控制器。在该示例中,三个PCIe装置,即PCIe装置340、PCIe装置344和PCIe装置348经由PCIe构造336耦合到系统。
存储器构造312通信地耦合到数据端口308和I/O端口304。存储器构造312还将系统通信地耦合到MEE 316,其可以是部分范围MEE、MKTME、某一其他总存储器加密控制器或其他MEE。
存储器构造312将MEE 316耦合到存储器控制器320,其最终耦合到存储器324。
在此说明性实例中,存储器构造312可是SAF,意味着其可包含附加总线线路以在各点之间携载源ID信息。此外,核330、GEN 334、路由器328、数据端口308、I/O端口304和PCIe构造336之间的互连还可以包括附加总线线路,以便携带源ID信息。来自PCIe构造336的互连可以承载这样的总线线路,但是在另一实施例中,可以是没有附加总线线路的标准PCIe构造。在该情况下,数据可以在数据分组(诸如在TLP前缀中)中提供,并且可以由PCIe控制器在SAF上转换成并行数据。
图4是示出被配置成提供存储器访问控制策略的系统400的附加所选元件的框图。在该示例中,处理器402包括存储器策略设置寄存器404,以及SET_POLICY指令微码408。注意,SET_POLICY指令这里被提供为非限制性示例,并且架构设计者可给予指令任何适当的名称。此外,尽管在该示例中SET_POLICY指令被示为在微码中,但在其它实施例中它可以在硬件指令中,或从固件、软件或某一其它源加载。SET_POLICY指令微码提供用于可信代理对存储器访问策略编程的指令,包括例如存储器范围和有资格访问存储器范围的一个或多个装置ID。
存储器策略设置寄存器404可以是如本文的其它附图中所示的标准寄存器文件的一部分,并且可以用于对存储器访问策略编程。在一些情况下,存储器策略设置寄存器404不是直接软件可访问的,而是可以经由例如MEE 420的MMIO模块430可访问的。在一些实施例中,策略至少部分地被硬编码(例如,仅对SGX包体的PRMRR访问),或者由系统软件提供(例如,SMRR访问策略)。在第一种情况下,新的SET_POLICY指令可用于在集中式访问控制引擎中设置策略。在第二种情况下,系统软件可以直接使用MMIO对策略编程。
处理器402经由SAF与非核430通信地耦合。非核心430和MEE 420之间的互连也是SAF,处理器402和MEE 420之间的互连,以及PCIe控制器410和MEE 420之间的互连也是这样。
在该示例中,PCIe控制器410经由标准PCIe总线连接到PCIe装置。该PCIe总线可能缺少SAF,并且因此源ID可能需要例如作为数据分组的一部分被串行地传送。在一个示例中,源ID作为TLP前缀的一部分被传送,并且PCIe控制器402包括TLP前缀处理模块412。TLP前缀处理模块412接收串行化的源ID作为TLP前缀分组的一部分,并将其转换成可经由SAF传送到MEE 420的并行数据。
MEE 420包括MMIO模块430,其在某些实施例中除此之外可以用于对存储器策略设置寄存器404编程。在其他实施例中,可以提供MMIO模块430,但是可以不出于该目的。
MEE 420还包含存储器策略设置模块424和存储器策略实施模块428。作为参考,存储器策略设置模块424及存储器策略实施模块428可共同地被称为存储器访问控制引擎。存储器策略设置模块424包括电路和逻辑,提供所述电路和逻辑可设置存储器访问策略。这可以包括电路和逻辑,用于与处理器402通信地耦合并且从处理器402接收关于对存储器访问策略编程的指令。存储器策略设置模块424还可以包括MMIO模块430或与MMIO模块430耦合,在这种情况下,它还可以提供用于可信代理与MEE 420提供接口连接并且对存储器访问策略编程的机制。存储器策略实施模块428可包含电路及逻辑,用于一旦存储器访问控制策略已被设置及验证,则在所述存储器访问控制策略中实施。
MEE 420经由存储器构造与存储器控制器434通信,所述存储器控制器434与存储器和/或地址空间440提供接口连接,以执行如由MEE 420授权和启用的存储器访问操作。
图5是设置存储器访问策略的方法500的流程图。以示例的方式,特定范围的可信代理可以对与该范围相对应的访问控制策略编程。取决于什么代理在范围的可信计算基(TCB)中,这可以通过MMIO或通过SET_POLICY指令来完成。作为示例,对于PRMRR而言,因为BIOS和操作系统/虚拟存储器监视器在信任边界之外,所以访问策略可能需要通过SET_POLICY指令来编程。然而,在其它实施例中,可代替指令而不是用模型特定寄存器(MSR)。对于像SMRR或IMR那样的范围,其中BIOS在信任边界内,该范围可以由BIOS通过MMIO或经由SET_POLICY指令来设置。
SET_POLICY指令可由软件运行如下:
参数policy _ value可以是允许访问对应范围的源ID的位向量。在一些实施例中,唯一的源ID与每个存储器流量源相关联。然而,在一个实施例中,如果若干源的安全性角色被认为是等同的,则它们可以被组合以具有单个源ID。在该示例中,源ID实际上是组源ID而不是单独的源ID。
参考方法500,在框504中开始,如上所述的可信代理对用于存储器区域的访问控制策略编程。如上所述,取决于上下文,这可以经由SET_POLICY指令、经由MMIO或经由寄存器的直接编程来编程。
在框508中,包括一个或多个可准许的源ID的策略信息被锁定到加密引擎。一旦ID被锁定,则它们不能由不可信源解锁或被更改。
在框512中,可信代理验证策略和锁定信息以确保锁定正确地发生。作为编程的一部分,SET_POLICY指令或MMIO锁定寄存器以防止来自任何实体的任何进一步修改。在软件不被信任以对访问策略正确地编程的范围的情况下,可信代理读取对应的访问寄存器以验证策略已被正确地设置。如果不是,则可信代理可以使特征启动失败。例如,对于SGX而言,指令MCHECK可以检查由BIOS设置的访问策略寄存器,并且如果策略不是如预期的那样,则SGX启动失败。
因此,在判定框516中,系统检查以确定策略是否被正确编程和锁定。如果程序未被正确编程和锁定,则在框520中,安全编程特征失败。响应于该失败,可以重置系统,可以采取补救动作,可以向安全管理员通知,或者可以采取其他适当的动作。在框590中,该方法完成。
返回到判定框516,如果策略被正确编程并锁定,则在框524中,系统按照需要启动受保护存储器特征。
在框528,系统开始实施受保护存储器特征。实施的一个实施例在图6的方法600中示出。
图6是实施存储器访问策略的方法600的流程图。
在框604开始,存在对MEE或MKTME的传入存储器访问请求。
在框608,在传入的所请求的加密引擎上,范围分类逻辑可以标识传入访问是否属于特定范围。例如,如果存储器访问在IMR的范围内,则需要由存储器访问策略实施模块来处理。如果它不属于该范围,则它可以被切换到存储器控制器并被正常处理。
假设访问属于指定的范围,则在框608中,MEE通过存储器地址范围和源ID两者来标识存储器访问请求。然后,MEE可以查询相关联的策略寄存器,以确定发起存储器访问的源是否被允许访问该范围。
在判定框612,系统确定是否准许源ID访问该范围。如果不准许源ID访问该范围,则在框616,丢弃存储器访问请求,和/或存在中止页面操作。如上所述,在这种错误的情况下,可以采取适当的补救或安全性措施。在一些情况下,所尝试的读取在读取请求时返回固定模式,而对于写入请求,则简单地丢弃该请求。
返回到判定框612,如果允许与事务相关联的源ID访问该范围,则在框620中,允许存储器访问操作。然后,将访问操作发送到存储器控制器以完成请求。
在框690中,该方法完成。
以下某些附图详述了用于实现上述实施例的示例架构和系统。在一些实施例中,如以下详细描述的那样仿真或者实现为软件模块的上述一个或者多个硬件组件和/或指令。
在某些示例中,指令可以以“通用向量-友好指令格式”来体现,这将在下面详细描述。在其它实施例中,使用另一指令格式。以下对写掩码寄存器、各种数据变换(打乱(swizzle)、广播等)、寻址等的描述通常适用于对以上指令的实施例的描述。另外,下面详细描述示例系统、架构和流水线。以上指令的实施例可以在那些系统、架构和流水线上运行,但不限于那些详细描述的。
指令集可包括一个或多个指令格式。给定的指令格式可定义各种字段(例如,比特数量、比特地点)以在其它事物中指定要被执行的操作(例如,操作码)和操作数(在其上要执行操作)和/或其他数据字段(例如,掩码)。一些指令格式通过指令模板(或子格式)的定义被进一步分解。例如,给定的指令格式的指令模板可被定义以具有指令格式的字段的不同子集(包括的字段典型地采用相同顺序,但至少一些具有不同比特地点,因为包括有较少字段)和/或被定义以具有不同地解译的给定字段。因此,ISA的每个指令使用给定的指令格式来表示(并且如果被定义,则采用该指令格式的指令模板中的给定一个)并且包括用于指定操作和操作数的字段。
在一个实施例中,示例ADD指令具有特定操作码和指令格式,其包括用于指定那个操作码的操作码字段和用于选择操作数的操作数字段(源1/目的地和源2));以及指令流中的该ADD指令的出现将具有选择特定操作数的操作数字段中的特定内容。
SIMD扩展的集合被称为高级向量扩展(AVX)(AVX1和AVX2),并且使用向量扩展(VEX)编码方案已经被发布和/或公布(例如,参见Intel® 64和IA-32架构软件开发者手册,2014年九月;并且参见Intel®高级向量扩展编程参考,2014年十月)。
示例指令格式
本文描述的指令的实施例可以采用不同格式实施。此外,示例系统、架构和流水线在下文被详述。指令的实施例可在这样的系统、架构和流水线上执行,但不限于详述的那些。
通用向量-友好指令格式
向量-友好指令格式是适合用于向量指令的指令格式(例如特定于向量操作存在某些字段)。虽然描述了实施例,其中通过矢-量友好指令格式支持向量和标量两者操作,但备选实施例仅使用通过向量-友好指令格式的向量操作。
图7a-7b是框图,其示出根据本说明书的实施例的通用向量-友好指令格式和其指令模板。如本说明书中所公开的,图7a-7b的向量-友好指令格式和指令模板可以被配置或适于提供用于存储器保护的装置ID。
图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指令模板内,示出了非存储器访问、完整舍入(full round)控制类型操作710指令模板,和非存储器访问、数据变换类型操作715指令模板;以及2)在存储器访问720指令模板内,示出了存储器访问、暂时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可多至三个源和一个目的地寄存器,但备选实施例可支持更多或更少的源和目的地寄存器(例如,可支持多至两个源,其中这些源之一还充当目的地;可支持多至三个源,其中这些源之一还充当目的地;或可支持多至两个源和一个目的地)。
修改符(Modifier)字段746—它的内容分辨出一般向量指令格式中指定存储器访问的指令与不指定存储器访问的那些指令的出现;那就是说,在非存储器访问705指令模板和存储器访问720指令模板之间进行分辨。存储器访问操作对存储器层级进行读和/或写(在使用寄存器中的值来指定源和/或目的地地址的一些情况中),而非存储器访问操作不进行(例如,源和目的地是寄存器)。虽然在一个实施例中此字段还在三个不同方式之间选择以执行存储器地址运算,但备选实施例可支持用于执行存储器地址运算的更多、更少、或不同方式。
扩增(augmentation)操作字段750——它的内容分辨出除了基础操作之外还要被执行的多种不同操作的哪一个。此字段是上下文特定的。在本说明书的一个实施例中,此字段被划分成类别字段768、α字段752、和β字段754。扩增操作字段750允许操作的通用组在单个指令而不是二个、三个、或四个指令中被执行。
缩放(scale)字段760—它的内容允许用于存储器地址生成(例如,用于使用2缩放*索引+基址的地址生成)的索引字段的内容的缩放。
位移(displacement)字段762A—它的内容作为存储器地址生成(例如,用于使用2缩放*索引+基址+位移的地址生成)的部分被使用。
位移因子字段762B(注意,直接在位移因子字段762B上的位移字段762A的并置指示一个或另一个被使用)—它的内容作为地址生成的部分被使用;它指定要通过存储器访问的大小(N)来缩放的位移因子—其中N是存储器访问中的字节的数量(例如,用于使用2缩放*索引+基址+缩放的位移的地址生成)。冗余低顺序比特被忽略,并且因此,位移因子字段的内容被乘以存储器操作数的总大小(N)以便生成要在运算有效地址中被使用的最终位移。
N的值由处理器硬件在运行时间基于完整操作码字段774(本文中较后所描述)和数据操纵字段754C来确定。位移字段762A和位移因子字段762B在它们不被用于非存储器访问705指令模板和/或不同实施例可实现所述两个的仅一个或没有一个的意义中是可选的。
数据元素宽度字段764—它的内容分辨出多个数据元素宽度的哪一个要被使用(在对于所有指令的一些实施例中;在对于指令的仅一些指令的其它实施例中)。此字段在以下意义上是可选的:如果仅一个数据元素宽度被支持和/或使用操作码的一些方面来支持数据元素宽度,则不需要此字段。
写掩码字段770—它的内容在按数据元素地点的基础上控制目的地向量操作数中的那个数据元素地点是否反映基础操作和扩增操作的结果。类别A指令模板支持合并写掩蔽,而类别B指令模板支持合并和归零写掩蔽两者。
在合并时,向量掩码允许目的地中的元素的任何集合被保护免于在任何操作(由基础操作和扩增操作所指定的)的执行期间更新;在一个实施例中,保存其中对应掩码比特具有0的目的地的每个元素的旧值。相比之下,在归零时,向量掩码允许目的地中的元素的任何集合在任何操作(由基础操作和扩增操作所指定的)的执行期间被归零;在一个实施例中,在对应掩码比特具有0值时,目的地的元素被设置成0。
此功能性的子集是用于控制正被执行的操作的向量长度(那就是说,正被修改的元素的跨度,从第一个到最后一个)的能力;然而,被修改的元素不必要是连续的。因此,写掩码字段770允许部分向量操作,包括加载、存储、算术、逻辑、等等。虽然本说明书的实施例被描述,其中写掩码字段770的内容选择含有要被使用的写掩码的多个写掩码寄存器之一(并且因此写掩码字段770的内容间接标识要被执行的掩蔽),但备选实施例转而或附加地允许掩码写字段770的内容直接指定要被执行的掩蔽。
立即数字段772—它的内容允许立即数的规格。此字段在它在不支持立即数的一般向量-友好格式的实现中不存在和它在不使用立即数的指令中不存在的意义中是可选的。
类别字段768—它的内容在指令的不同类别之间进行分辨。参考图7a-7b,此字段的内容在类别A和类别B指令之间选择。在图7a-7b中,圆角方形被用于指示在字段中呈现的特定值(例如,在图7a-7b中相应对于类别字段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的内容指示抑制被启用时,给定的指令不报告任何种类的浮点异常标记且不唤起(raise)任何浮点异常处置器。
舍入操作控制字段758—它的内容分辨出一组舍入操作的哪一个要执行(例如,上舍入、下舍入、朝零舍入和往最近舍入)。因此,舍入操作控制字段758允许按指令的基础上的舍入模式的改变。在本说明书的一个实施例中,其中处理器包括用于指定舍入模式的控制寄存器,舍入操作控制字段750的内容覆盖那个寄存器值。
非存储器访问指令模板——数据变换类型操作
在非存储器访问数据变换类型操作715指令模板中,β字段754被解译为数据变换字段754B,其内容分辨出多个数据变换的哪一个要被执行(例如,无数据变换、打乱、广播)。
在类别A的存储器访问720指令模板的情况中,α字段752被解译为驱逐提示字段752B,其内容分辨出驱逐提示的哪一个要被使用(在图7a中,暂时752B.1和非暂时752B.2对于存储器访问、暂时725指令模板,和存储器访问、非暂时730指令模板被相应指定),而β字段754被解译为数据操纵字段754C,其内容分辨出多个数据操纵操作(还已知为原语(primitive))的哪一个要被执行(例如,无操纵;广播;源的上转换;以及目的地的下转换)。存储器访问720指令模板包括缩放字段760、并可选地包括位移字段762A或位移缩放字段762B。
向量存储器指令通过转换支持来执行自存储器的向量加载和往存储器的向量存储。如通过常规向量指令,向量存储器指令以数据元素式的方式将数据转移自/往存储器,实际上被转移的元素由作为写掩码被选择的向量掩码的内容所指示。
存储器访问指令模板——暂时
暂时数据是这样的数据,其有可能被足够快地再使用以受益于进行高速缓存。然而,这是提示,并且不同处理器可以采用不同方式来实现它,包括完全忽略该提示。
存储器访问指令模板——非暂时
非暂时数据是这样的数据,其不太可能被足够快地再使用以受益于在第1级高速缓存中进行高速缓存并应被给定用于驱逐的优先权。然而,这是提示,并且不同处理器可以采用不同方式来实现它,包括完全忽略该提示。
类别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允许这些特征在通用向量-友好指令格式中在按指令的基础上被指定。
写掩码字段和数据元素宽度字段的组合创建分类的(typed)指令,因为它们允许掩码基于不同数据元素宽度而被应用。
在类别A和类别B内建立的各种指令模板在不同情境中是有益的。在本说明书的一些实施例中,不同处理器或处理器内的不同核可支持仅类别A、仅类别B、或两个类别。例如,打算用于通用计算的高性能通用乱序核可支持仅类别B,打算主要用于图形和/或科学(吞吐量)计算的核可支持仅类别A,以及打算用于两者的核可支持两个类别(当然,具有来自两个类别的模板和指令但不是来自两个类别的所有模板和指令的某些混合的核在本说明书的界限之内)。同样,单个处理器可包括多个核,其的所有支持相同类别或其中不同核支持不同类别。例如,在带有单独的图形和通用核的处理器中,打算主要用于图形和/或科学计算的图形核之一可支持仅类别A,而通用核的一个或多个通用核可以是支持仅类别B的打算用于通用计算的带有乱序运行和寄存器重命名的高性能通用核。不具有单独的图形核的另一个处理器可包括支持类别A和类别B两者的更多一个通用有序或乱序核。当然,来自一个类别的特征可还被实现于本说明书的不同实施例中的另一类别中。以高等级语言所写的程序将被转化(例如,准时编译或静态编译)成多种不同可运行的形式,包括:1)具有用于运行的由目标处理器所支持的一个或多个类别的仅指令的形式;或2)具有使用所有类别的指令的不同组合所写的备选例程并具有选择例程以基于由处理器(其当前正运行代码)所支持的指令来运行的控制流代码(control flow code)的形式。
示例特定向量-友好指令格式
图8a-8d是示出根据本说明书的一个或多个示例的示例特定向量-友好指令格式的框图。如本说明书中所公开的,图8a-8d的向量-友好指令格式可以被配置或适于提供用于存储器保护的装置ID。
图8a示出了特定向量-友好指令格式800,其在以下意义上是特定的,即它指定字段的位置、大小、解译和顺序,以及这些字段中的一些字段的值。特定向量-友好指令格式800可用于扩展x86指令集,并且因此一些字段与现有x86指令集及其扩展(例如,AVX)中使用的那些字段相似或相同。此格式与以下字段保持一致:具有延伸的现有x86指令集的立即字段、位移字段、缩放/索引/基底(SIB)字段、MOD R/M字段、实际操作码字节字段以及前置码编码字段。来自图7a和图7b中的字段被图示,来自图8a的字段映射到所述字段中。
应当理解,尽管出于说明的目的,在通用向量-友好指令格式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)和757BEX字节1,位[ 5 ] -B)组成。EVEX.R、EVEX.X和EVEX.B位字段提供与对应的VEX位字段相同的功能,并且使用1s补码形式来编码,即ZMM0被编码为1111B,ZMM15被编码为0000B。指令的其它字段编码寄存器索引的较低三位,如本领域已知的(rrr、xxx和bbb),使得Rrrr、Xxxx和Bbbb可以通过添加EVEX.R、EVEX.X和EVEX.B来形成。
REX'字段710——这是REX'字段710的第一部分并且是EVEX。R'位字段(EVEX字节1,位[ 4 ] -R'),其用于编码扩展32寄存器集合的上部16或下部16。在一个实施例中,该位与如下指示的其它位一起以位反转格式(bit inverted format)存储,用于与BOUND指令(其实际操作码字节是62)区分(在公知的x86 32位模式中),但是在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 ] -vvv)——EVEX.vvvv的作用可以包括以下:1)EVEX.vvvv对以反转(1s补码)形式指定的第一源寄存器操作数编码,并且对于具有两个或更多源操作数的指令有效;2)EVEX.vvvv对目的地寄存器操作数编码,以1s补码形式为某些向量移位指定;或3)EVEX.vvvv不编码任何操作数,字段被保留并且应当包含1111b。因此,EVEX.vvvv字段820对以反转(1s补码)形式存储的第一源寄存器说明符的四个低阶位编码。取决于指令,使用额外的不同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前缀仅要求两个位)。在一个实施例中,为了支持使用采用传统格式和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'字段710——这是REX'字段的剩余部分并且是EVEX.V'位字段(EVEX字节3,位[ 3 ] -V'),其可用于编码扩展32寄存器集合的上部16或下部16。该位以位反转格式存储。值1用于编码较低16个寄存器。换句话说,V'VVVV是通过组合EVEX.V'、EVEX.vvvvl来形成。
写掩码字段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字节(字节6)——如前所述,缩放字段750的内容用于存储器地址生成。SIB.xxx 854和SIB.bbb856——这些字段的内容先前已经关于寄存器索引Xxxx和Bbbb而被引用。
位移字段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使用八个位,其可以被设置为仅四个真正有用的值:-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);当它包含1时,它表示EVEX.U1(B类768B)。当U =0且MOD字段842包含11(表示非存储器访问操作)时,α字段752(EVEX字节3,位[ 7 ] -EH)被解译为rs字段752A。
当rs字段752A包含1(舍入752 A.1)时,β字段754(EVEX字节3,位[ 6:4 ] -SSS)被解译为舍入控制字段754A。舍入控制字段754A包括一位SAE字段756和两位舍入操作字段758。当rs字段752A含有0(数据变换752 A.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;当它包含1(舍入757 A.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的框图。如本说明书中所公开的,寄存器架构900可以被配置或适于提供用于存储器保护的装置ID。
在图示的实施例中,存在32个向量寄存器910(512位宽);这些寄存器被称为zmm0到zmm31。较低16个zmm寄存器的较低阶256位覆盖在寄存器ymm0-16上。较低16个zmm寄存器的较低阶128位(ymm寄存器的较低阶128位)覆盖在寄存器xmm0-15上。特定向量-友好指令格式800对这些覆盖的寄存器文件进行操作,如下表所示。
换句话说,向量长度字段759B在最大长度和一个或多个其他较短长度之间选择,其中每个这种较短长度是前一长度的一半;并且没有向量长度字段759B的指令模板对最大向量长度进行操作。此外,在一个实施例中,特定向量-友好指令格式800的B类指令模板对紧缩或标量单/双精度浮点数据和紧缩或标量整数数据进行操作。标量操作是对zmm/ymm/xmm寄存器中的最低阶数据元素位置执行的操作;较高阶数据元素位置或者与它们在指令之前保持不变,或者取决于实施例而被置零。
写掩码寄存器915——在所示的实施例中,存在八个写掩码寄存器(K0到K7),每个大小为64位。在备选实施例中,写掩码寄存器915的大小是16位。如前所述,在一个实施例中,向量掩码寄存器k0不能用作写掩码;当通常将指示k0的编码用于写掩码时,它选择硬连线写掩码0xFFFF,从而有效地禁用用于该指令的写掩码。
通用寄存器925——在所示出的实施例中,存在连同现存x86寻址模式被用于寻址存储器操作数的十六个64-比特通用寄存器。这些寄存器通过名称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相同的封装中单独管芯上的协同处理器;3)在与CPU相同的管芯上的协同处理器(在该情况中,此类协同处理器有时被称为专用逻辑,诸如集成的图形和/或科学(吞吐量)逻辑,或被称为专用核);以及4)在可在相同管芯上包括所描述的CPU(有时被称为应用核或应用处理器)、以上所描述的协同处理器、和附加功能性的SoC。示例核架构接下来被描述,继之以示例处理器和计算机架构的描述。
示例核架构
有序核和乱序核框图
图10a是框图,其示出示例有序流水线和示例寄存器重命名、乱序发布/运行流水线两者。图10b是框图,其示出要被包括在处理器中的有序架构核的示例实施例和示例寄存器重命名、乱序发布/运行架构核两者。如本说明书中所公开的,图10a-10b的示例流水线、寄存器重命名和架构核可以被配置或适于提供用于存储器保护的装置ID。
图10a-10b中的实线框示出有序流水线和有序核,而虚线框的可选附加示出寄存器重命名、乱序发布/运行流水线和核。给定有序方面是乱序方面的子集,乱序方面将被描述。
在图10a中,处理器流水线1000包括取阶段1002、长度解码阶段1004、解码阶段1006、分配阶段1008、重命名阶段1010、调度(还已知为分派或发布)阶段1012、寄存器读/存储器读阶段1014、运行阶段1016、写回/存储器写阶段1018、异常处置阶段1022、和提交阶段1024。
图10b示出处理器核1090,其包括耦合到运行引擎单元1050的前端单元1030,并且两者被耦合到存储器单元1070。核1090可以是简化指令集计算(RISC)核、复杂指令集计算(CISC)核、非常长指令字(VLIW)核、或混合或备选核类型。如仍有的另一个选项,核1090可以是专用核,诸如例如网络或通信核、压缩引擎、协同处理器核、通用计算图形处理单元(GPGPU)核、图形核等等。
前端单元1030包括耦合到指令高速缓存单元1034的分支预测单元1032,所述指令高速缓存单元1034被耦合到指令转化旁视(lookaside)缓冲器(TLB)1036,其被耦合到指令取单元1038,指令取单元1038被耦合到解码单元1040。解码单元1040(或解码器)可解码指令,并生成为输出一个或多个微操作、微码条目点、微指令、其它指令、或其它控制信号,其被解码自、或其以其它方式反映、或被推导自原始指令。使用各种不同机制,解码单元1040可被实现。适合的机制的示例包括但不限于查找表、硬件实现、PLA、微码只读存储器(ROM)、等等。在一个实施例中,核1090包括存储用于某些宏指令的微码的微码ROM或另一介质(例如,在解码单元1040中或以别的方式在前端单元1030内)。解码单元1040被耦合到运行引擎单元1050中的重命名/分配器单元1052。
运行引擎单元1050包括耦合到引退单元1054和一个或多个调度器单元1056的集合的重命名/分配器单元1052。调度器单元1056代表任何数量的不同调度器,包括保留站、中央指令窗口、等等。调度器单元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指令集(带有已随较新版本被添加的一些扩展);MIPS Technologies of Sunnyvale,CA的MIPS指令集;ARM Holdings ofSunnyvale,CA的ARM指令集(带有诸如NEON的可选附加扩展)),包括本文中所描述的指令。在一个实施例中,核1090包括用于支持打包数据指令集扩展(例如,AVX1、AVX2)的逻辑,因此允许由许多多媒体应用来使用的操作使用打包的数据来执行。
应被理解的是,核可支持多线程(运行操作或线程的两个或更多并行集合),并可以多种方式来如此做,所述多种方式包括时间分段的多线程、同时多线程(在单个物理核为线程的每个提供逻辑核的情况中,那个物理核正进行同时多线程),或其组合(例如,诸如在Intel®超线程技术中的时间分段的取和解码以及其后的同时多线程)。
虽然寄存器重命名在乱序运行的上下文中被描述,但应理解的是,寄存器重命名可被用在有序架构中。虽然处理器的所示出实施例还包括单独的指令和数据高速缓存单元1034/1074以及共享的L2高速缓存单元1076,但备选实施例可具有用于指令和数据两者的单个内部高速缓存,诸如例如,1级(L1)内部高速缓存、或多个级别的内部高速缓存。在一些实施例中,系统可包括内部高速缓存及外部于核和/或处理器的外部高速缓存的组合。备选地,所有高速缓存可外部于核和/或处理器。
示例有序核架构
图11a-11b示出核将是芯片中若干逻辑块之一(包括相同类型和/或不同类型的其它核)的更特定示例有序核架构的框图。如本说明书中所公开的,图11a-11b的有序核架构可以被配置或适于提供用于存储器保护的装置ID。
逻辑块通过高带宽互连网络(例如,环网络)取决于应用而通信于一些固定的功能逻辑、存储器I/O接口、和另一必要I/O逻辑。
图11a是根据一个或多个实施例的单个处理器核连同到管芯上互连网络1102的它的连接并连同2级(L2)高速缓存1104的它的本地子集的框图。在一个实施例中,指令解码器1100支持带有打包的数据指令集扩展的x86指令集。L1高速缓存1106允许低等待时间访问以将存储器高速缓存到标量和向量单元中。虽然在一个实施例中(为简化设计),标量单元1108和向量单元1110使用单独的寄存器集合(相应地,是标量寄存器1112和向量寄存器1114),并且在它们之间所转移的数据被写到存储器并然后从1级(L1)高速缓存1106读回,但其他实施例可使用不同手段(例如,使用单个寄存器集合或包括允许数据在所述两个寄存器文件之间被转移而不被写和读回的通信路径)。
L2高速缓存1104的本地子集是全局L2高速缓存的部分,所述全局L2高速缓存被划分成单独的本地子集,每处理器核一个。每个处理器核具有到L2高速缓存1104的它自己的本地子集的直接访问路径。由处理器核所读的数据被存储在其L2高速缓存子集1104中并能被快速地访问,并行于其它处理器核访问它们自己的本地L2高速缓存子集。由处理器核所写的数据被存储在其自己的L2高速缓存子集1104中并且如果必要则从其它子集中转储清除。环网络确保共享的数据的一致性。环网络是双向的以允许诸如处理器核、L2高速缓存、和其它逻辑块的代理在芯片内互相通信。每个环数据-路径每方向是1024-比特宽。
图11b是根据本说明书的实施例的图11a中的处理器核的部分的扩展的视图。图11b包括L1高速缓存1104的L1数据高速缓存1106A部分,以及关于向量单元1110和向量寄存器1114的更多细节。特别地,向量单元1110是16宽向量处理单元(VPU)(见16宽ALU 1128),其运行整数、单精度浮动、和双精度浮动指令的一个或多个。VPU支持在存储器输入上通过打乱单元1120来打乱寄存器输入、通过数值转换单元1122A-B来进行数值转换、以及通过复制单元1124来进行复制。写掩码寄存器1126允许预测所得向量写。
图12是根据本说明书的实施例的可具有多于一个核、可具有集成存储器控制器、并可具有集成图形的处理器1200的框图。如本说明书中所公开的,处理器1200可以被配置或适于提供用于存储器保护的装置ID。
图12中的实线框示出带有单个核1202A、系统代理1210、一个或多个总线控制器单元1216的集合的处理器1200,而虚线框的可选附加示出带有多个核1202A-N、系统代理单元1210中的一个或多个集成存储器控制器单元1214的集合、和专用逻辑1208的备选处理器1200。
因此,处理器1200的不同实现可包括:1)CPU,带有是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核)的专用逻辑1208、以及是一个或多个通用核(例如,通用有序核、通用乱序核、所述两个核的组合)的核1202A-N;2)带有是打算主要用于图形和/或科学吞吐量的大量的专用核的核1202A-N的协同处理器;以及3)带有是大量的通用有序核的核1202A-N的协同处理器。因此,处理器1200可以是通用处理器、协同处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU、高吞吐量许多集成核(MIC)协同处理器(包括30或更多核)、嵌入式处理器等等。处理器可被实现在一个或多个芯片上。使用多个处理技术的任何个(诸如例如,BiCMOS、CMOS、或NMOS),处理器1200可被实现在一个或多个衬底上和/或是其部分。
存储器层级包括核内高速缓存的一个或多个级别、共享的高速缓存单元1206的集合或一个或多个、和耦合到集成存储器控制器单元1214的集合的外部存储器(未示出)。共享的高速缓存单元1206的集合可包括一个或多个中级别高速缓存,诸如2级(L2)、3级(L3)、4级(L4)、或其它级别的高速缓存、最后级别高速缓存(LLC)、和/或其组合。虽然在一个实施例中,基于环的互连单元1212将集成图形逻辑1208、共享的高速缓存单元1206的集合、以及系统代理单元1210/集成存储器控制器单元1214互连,但备选实施例可使用用于互连此类单元的任何数量的公知技术。在一个实施例中,一个或多个高速缓存单元1206和核1202-A-N之间的一致性被维持。
在一些实施例中,核1202A-N的一个或多个核有多线程的能力。系统代理1210包括协调和操作核1202A-N的那些组件。系统代理单元1210可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括为调节集成图形逻辑1208和核1202A-N的功率状态所需要的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1202A-N可关于架构指令集是同质或异质的;那就是说,核1202A-N的两个或更多核可有运行相同指令集的能力,而其它的核可有运行不同指令集或那个指令集的仅子集的能力。
示例计算机架构
图13-16是示例计算机架构的框图。如本说明书中所公开的,图13-16的架构可以被配置或适于提供用于存储器保护的装置ID。
在对于膝上型计算机、桌上型计算机、手持型PC、个人数字助理、工程工作站、服务器、网络装置、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持装置、以及各种其它电子装置的领域中已知的其它系统设计和配置也是适合的。一般来说,能够合并如本文中所公开的处理器和/或其它运行逻辑的极多种的系统或电子装置一般是适合的。
现在参考图13,所示出的是根据一个实施例的系统1300的框图。系统1300可包括被耦合到控制器集线器1320的一个或多个处理器1310、1315。在一个实施例中,控制器集线器1320包括图形存储器控制器集线器(GMCH)1390和输入/输出集线器(IOH)1350(其可在单独的芯片上);GMCH 1390包括存储器1340和协同处理器1345被耦合到的存储器和图形控制器;IOH 1350将输入/输出(I/O)装置1360耦合到GMCH 1390。备选地,存储器和图形控制器之一或两者被集成在处理器(如本文中所描述的)内,存储器1340和协同处理器1345被直接耦合到处理器1310、和带有IOH 1350的单个芯片中的控制器集线器1320。
附加处理器1315的可选性质在图13中用断线来指代。每个处理器1310、1315可包括本文中所描述的处理核中的一个或多个,并可以是处理器1200的某版本。
存储器1340可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)、或所述两个存储器的组合。对于至少一个实施例,控制器集线器1320经由诸如前侧总线(FSB)的多点总线、点对点接口,诸如超级通道互连(UPI)、或类似连接1395来与处理器1310、1315通信。
在一个实施例中,协同处理器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。使用P-P接口电路1478、1488,处理器1470、1480可经由点对点(P-P)接口1450来互换信息。如图14中所示出的,IMC 1472和1482将处理器耦合到相应存储器(就是存储器1432和存储器1434),其可以是本地附连到相应处理器的主存储器的部分。
使用点对点接口电路1476、1494、1486、1498,处理器1470、1480可各自经由各个P-P接口1452、1454与芯片集1490互换信息。芯片集1490可以可选地经由高性能接口1439与协同处理器1438互换信息。在一个实施例中,协同处理器1438是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。
共享的高速缓存(未示出)可被包括在任一处理器中或在两个处理器之外,又经由P-P互连与处理器连接,使得如果处理器被置于低功率模式中,则任一或两个处理器的本地高速缓存信息可被存储在共享的高速缓存中。
芯片集1490可经由接口1496来耦合到第一总线1416。在一个实施例中,以非限制性示例的方式,第一总线1416可以是外围组件互连(PCI)总线、或诸如PCI高速总线或另一第三代I/O互连总线的总线。
如图14中所示出的,各种IO装置1414可连同总线桥1418被耦合到第一总线1416,总线桥1418将第一总线1416耦合到第二总线1420。在一个实施例中,诸如协同处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或DSP单元)、现场可编程门阵列、或任何其它处理器的一个或多个附加处理器1415被耦合到第一总线1416。在一个实施例中,第二总线1420可以是低管脚计数(LPC)总线。各种装置可被耦合到第二总线1420,包括例如键盘和/或鼠标1422、通信装置1427和诸如硬盘驱动器或其它大容量存储装置的存储单元1428,其可包括指令或代码和数据1430(在一个实施例中)。进一步地,音频IO 1424可被耦合到第二总线1420。注意,其它架构是可能的。例如,替代图14的点对点架构,系统可实现多点总线或另一此类架构。
现在参考图15,所示出的是第二更特定示例系统1500的框图。图14和图15标有相似参考标号,并且图14的某些方面已从图15中被省略以便避免使图15的其它方面难以理解。
图15示出了处理器1470、1480可相应包括集成存储器以及IO控制逻辑(“CL”)1472和1482。因此,CL 1472、1482包括IMC单元并包括IO控制逻辑。图15示出了不仅存储器1432、1434被耦合到CL 1472、1482,而且IO装置1514也被耦合到控制逻辑1472、1482。传统I/O装置1515被耦合到芯片集1490。
现在参考图16,所示出的是根据实施例的片上系统(SoC)1600的框图。图12中的类似元件标有相似参考标号。同样,虚线框在更高级的SoC上是可选特征。在图16中,互连单元1602被耦合到:应用处理器1610,其包括一个或多个核1202A-N的集合和共享的高速缓存单元1206;系统代理单元1210;总线控制器单元1216;IMC单元1214;协同处理器1620或一个或多个的集合,其可包括集成图形逻辑、图像处理器、音频处理器、以及视频处理器;静态随机存取存储器(SRAM)单元1630;直接存储器访问(DMA)单元1632;以及用于耦合到一个或多个外部显示器的显示单元1640。在一个实施例中,协同处理器1620包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等等。
本文中所公开的机制的实施例可被实现在硬件、软件、固件、或此类实现手段的组合中。一些实施例可被实现为在可编程系统上运行的程序代码或计算机程序,所述可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置、和至少一个输出装置。
诸如图14中所示出的代码1430的程序代码可被应用于输入指令以执行本文中所描述的功能并生成输出信息。输出信息可以已知方式被应用于一个或多个输出装置。为了此应用的目的,处理系统包括具有处理器(诸如例如:DSP、微控制器、应用特定集成电路(ASIC)、或微处理器)的任何系统。
程序代码可被实现在高等级规程上(procedural)或面向对象的编程语言中以与处理系统通信。如果期望的话,则程序代码可还被实现在汇编或机器语言中。事实上,本文中所描述的机制不限于对任何具体编程语言的范畴中。在任何情况中,语言可以是编译或解译的语言。
至少一个实施例的一个或多个方面可由存储在机器可读介质上的代表性指令来实现,所述代表性指令表示处理器内的各种逻辑,其当由机器来读时促使该机器制作用于执行本文中所描述的技术的逻辑。此类表示(已知为“知识产权(IP)核”)可被存储在有形的、机器可读介质上并被供应给各种客户或制造设施以加载到实际做出逻辑或处理器的制作机器。
此类机器可读存储介质可包括由机器或装置所制造或形成的物品(article)的非暂态、有形的布置而没有限制,包括存储介质(诸如硬盘、包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)、和磁光盘的任何其它类型的盘)、半导体装置(诸如ROM,诸如DRAM、SRAM之类的随机存取存储器(RAM),可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、PCM、磁或光卡、或适合于存储电子指令的任何其它类型的介质)。
因此,一些实施例还包括非暂态、有形的机器可读介质,所述介质含有指令或含有设计数据,诸如硬件描述语言(HDL),其定义本文中所描述的结构、电路、装置、处理器和/或系统特征。此类实施例可还被称为程序产品。
仿真(包括二进制转化、代码变形等)
在一些情况中,指令转换器可被用于将指令从源指令集转换成目标指令集。例如,指令转换器可转化(例如,使用静态二进制转化或包括动态编译的动态二进制转化)、变形、仿真、或以其它方式将指令转换成要由核来处理的一个或多个其它指令。指令转换器被实现在软件、硬件、固件、或其组合中。指令转换器可在处理器上、离开处理器、或部分在处理器上而部单独开处理器。
图17是框图,其对照根据本发明的实施例的使用软件指令转换器以将源指令集中的二进制指令转换成目标指令集中的二进制指令。如本说明书中所公开的,图17的指令集可以被配置或适于提供用于存储器保护的装置ID。
在所示出的实施例中,指令转换器是软件指令转换器,尽管备选地指令转换器可被实现在软件、固件、硬件、或其各种组合中。图17示出使用x86编译器1704,用高等级语言1702的程序可被编译以生成x86二进制代码1706,其可由带有至少一个x86指令集核的处理器1716来原生运行。带有至少一个x86指令集核的处理器1716表示能如带有至少一个x86指令集核的Intel®处理器一样大体上执行相同功能的任何处理器,这通过兼容地运行或以其它方式处理(1)Intel® x86指令集核的指令集的实质部分,或(2)针对于在带有至少一个x86指令集核的Intel®处理器上运行的应用或另一软件的对象(object)代码版本,以便取得大体上与带有至少一个x86指令集核的Intel®处理器相同的结果。x86编译器1704表示可操作以生成x86指令集的二进制代码1706(例如,对象代码)的编译器,二进制代码1706能通过或不通过附加联接处理而在带有至少一个x86指令集核的处理器1716上被运行。类似地,图17示出了使用备选指令集编译器1708,用高等级语言1702的程序可被编译以生成备选指令集二进制代码1710,其可由不带有至少一个x86指令集核的处理器1714(例如,带有运行MIPS Technologies of Sunnyvale,CA的MIPS指令集和/或运行ARM Holdings ofSunnyvale,CA的ARM指令集的核的处理器)来原生运行。指令转换器1712被用于将x86二进制代码1706转换成可由不带有x86指令集核的处理器1714来原生运行的代码。此被转换的代码不可能与备选指令集二进制代码1710相同,因为能够这样做的指令转换器难以做出;然而,被转换的代码将完成一般操作并由来自备选指令集的指令构成。因此,指令转换器1712表示软件、固件、硬件、或其组合,其通过仿真、模拟或任何其它过程而允许不具有x86指令集处理器或核的处理器或另一电子装置运行x86二进制代码1706。
前述内容概述了本文所公开的主题的一个或多个实施例的特征。提供这些实施例是为了使本领域普通技术人员(PHOSITA)能够更好地理解本公开的各个方面。可以引用某些公知的术语以及基础技术和/或标准,而无需详细描述。可以预期PHOSITA将拥有或具有访问那些技术和标准中足以实践本说明书的教导的背景知识或信息。
PHOSITA将理解,它们可以容易地使用本公开作为基础,以用于设计或修改其它工艺、结构或变型,以实现与本文介绍的实施例相同的目的和/或实现相同的优点。PHOSITA还将认识到,这种等同构造并不脱离本公开的精神和范围,并且它们可以在不脱离本公开的精神和范围的情况下进行各种改变、替换和变更。
在前述描述中,比实践所附权利要求书严格必需的更详细地描述一些或所有实施例的某些方面。出于提供所公开的实施例的上下文和说明的目的,这些细节仅以非限制性示例的方式提供。这些细节不应被理解为是必需的,并且不应被“曲解(read into)”权利要求书作为限制。短语可以指“一个实施例”或“多个实施例”。这些短语以及任何其它对实施例的引用应当被广泛地理解为是指一个或多个实施例的任何组合。此外,在特定“实施例”中公开的若干特征也可以仅遍及多个实施例。例如,如果特征1和特征2在“实施例”中公开,则实施例A可以具有特征1但缺特征2,而实施例B可以具有特征2但缺特征1。
本说明书可以以框图格式提供说明,其中某些特征在单独的框中公开。这些应当被广泛地理解为公开各种特征如何互操作,但是不旨在暗示那些特征必须在单独的硬件或软件中体现。此外,在单个框在相同框中公开多于一个特征的情况下,那些特征不一定需要体现在相同硬件和/或软件中。例如,在一些情况下,计算机“存储器”可以分布或映射在多级高速缓存或本地存储器、主存储器、电池支持(battery-backed)的易失性存储器和各种形式的永久性存储器(诸如硬盘、存储服务器、光盘、磁带驱动等)之间。在某些实施例中,一些组件可被省略或合并。在一般意义上,附图中所描绘的布置在其表示上可以是更逻辑的,而物理架构可以包括这些元件的各种排列、组合和/或混合。无数可能的设计配置可以用于实现本文概述的操作目标。因此,相关联的设施具有无数的替代布置、设计选择、装置可能性、硬件配置、软件实现和装备选项。
本文可以参考计算机可读介质,其可以是有形的和非暂时性计算机可读介质。如在本说明书和贯穿权利要求书中所使用的,“计算机可读介质”应当被理解为包括相同或不同类型的一个或多个计算机可读介质。以非限制性示例的方式,计算机可读介质可以包括光学驱动(例如,CD/DVD/蓝光)、硬盘驱动、固态驱动、闪存或其他非易失性介质。计算机可读介质还可以包括诸如ROM、现场可编程门阵列(FPGA)或ASIC之类的介质,所述介质被配置成执行期望指令、存储用于对FPGA或ASIC编程以执行期望指令的指令、可以被集成在硬件中的其他电路中的IP块、或者被直接编码到硬件中的指令、或者处理器(诸如微处理器、DSP、微控制器)上的微码、或者在任何其他合适的组件、装置、元件或对象中的微码(在适当的情况下并且基于特定需要)。本文中的非暂时性存储介质明确地旨在包括被配置成提供所公开的操作或配置成促使处理器执行所公开的操作的任何非暂时性专用或可编程硬件。
在贯穿本说明书和权利要求书中,各种元件可以是彼此“通信地”、“电地”、“机械地”或以其他方式“耦合”。这种耦合可以是直接的点对点耦合,或者可以包括中间装置。例如,两个装置可以经由促进通信的控制器彼此通信地耦合。装置可以经由诸如信号升压器、分压器或缓冲器之类的中间装置彼此电耦合。机械耦合的装置可以是间接机械耦合的。
本文公开的任何“模块”或“引擎”可以指或包括软件、软件栈、硬件、固件和/或软件的组合、被配置成执行引擎或模块的功能的电路、或如上文公开的任何计算机可读介质。在适当的情况下,这样的模块或引擎可以被提供在硬件平台上或与硬件平台相结合,硬件平台可以包括硬件计算资源,诸如处理器、存储器、存储设备、互连、网络和网络接口、加速器或其他合适的硬件。这样的硬件平台可以作为单个单片装置(例如,以PC形状因子)来提供,或者具有被分布的功能的一些或部分(例如,高端数据中心中的“复合节点”,其中计算、存储器、存储设备和其他资源可以被动态地分配并且不需要对于彼此是本地的)。
本文公开了流程图、信号流程图或示出以特定顺序执行的操作的其他图示。除非另有明确说明,或者除非在特定上下文中要求,否则该顺序应当被理解为仅是非限制性示例。此外,在一个操作被示为跟随另一个操作的情况下,也可能发生可能相关或不相关的其他中间操作。一些操作也可以同时或并行执行。在操作被称为“基于”或“根据”另一项或操作的情况下,这应当被理解为暗示该操作至少部分地基于或至少部分地根据所述另一项或操作。这不应被解释为暗示操作仅基于或排他地基于、或仅根据或排他地根据所述项或操作。
本文所公开的任何硬件元件的全部或部分可以容易地在SoC中被提供,包括CPU封装。SoC代表将计算机或其它电子系统的组件集成到单个芯片中的集成电路(IC)。因此,例如,客户端装置或服务器装置可以全部或部分地在SoC中被提供。SoC可以包含数字、模拟、混合信号和射频功能,所有这些功能都可以在单个芯片衬底上提供。其它实施例可以包括多芯片模块(MCM),其中多个芯片位于单个电子封装内并且被配置成通过电子封装彼此紧密地交互。
在一般意义上,任何适当配置的电路或处理器可执行与数据相关联的任何类型的指令以实现本文详述的操作。本文所公开的任何处理器都可以将元件或制品(例如,数据)从一个状态或事物变换到另一个状态或事物。此外,基于特定的需要和实现,在处理器中被跟踪、被发送、被接收或被存储的信息可以被提供在任何数据库、寄存器、表、高速缓存、队列、控制列表或存储结构中,所有这些可以在任何适当的时间帧(timeframe)内被引用。本文所公开的任何存储器或存储元件应被解释为在适当情况下被涵盖在宽泛的术语“存储器”和“存储设备”内。
实现本文所述的功能性的全部或部分的计算机程序逻辑以各种形式体现,包括但不限于源码形式、计算机可执行形式、机器指令或微码、可编程硬件和各种中间形式(例如,由汇编器、编译器、链接器或定位器生成的形式)。在示例中,源码包括以各种编程语言实现的一系列计算机程序指令,所述编程语言诸如目标代码、汇编语言或高等级语言,诸如OpenCL、FORTRAN、C、C + +、JAVA或HTML,供各种操作系统或操作环境使用,或采用硬件描述语言,诸如Spice、Verilog和VHDL。源码可以定义和使用各种数据结构和通信消息。源码可以是采用计算机可执行形式(例如,经由解译器),或者源码可以被转换(例如,经由翻译器、汇编器或编译器)成计算机可执行形式,或者被转换成中间形式,诸如字节代码。在适当的情况下,前述中的任一个都可以用于构建或描述适当的离散电路或集成电路,无论是顺序的、组合的、状态机或其他。
在一个示例实施例中,可以在相关联的电子装置的板上实现图中的任何数量的电路。板可以是通用电路板,其可以保持电子装置的内部电子系统的各种组件,并且进一步提供用于其他外围设备的连接器。任何合适的处理器和存储器可以基于特定的配置需要、处理需求和计算设计而被适当地耦合到板。注意,利用对于本文提供的多个示例,可以按照两个、三个、四个或更多个电气组件来描述交互。然而,这样做仅仅是为了清楚和举例的目的。应当理解,可以以任何适当的方式合并或重新配置系统。沿着类似的设计备选方案,图中的任何所示组件、模块和元件可以以各种可能的配置来组合,所有这些都在本说明书的广泛范围内。
本领域技术人员可以查明多个其它改变、替换、变化、变更和修改,并且意图是,本公开涵盖落入所附权利要求书的范围内的所有这样的改变、替换、变化、变更和修改。为了帮助美国专利商标局(USPTO)以及另外本申请所公布的任何专利的任何读者解释于此所附权利要求,申请人希望注意到,申请人:(a)不打算所附权利要求书中的任何一个引用35美国第112节(前AIA)的段落六(6)或同一节(后AIA)的段落(f),因为它在本申请提交的日期存在,除非在特定权利要求书中特别使用了词语“部件用于”或“步骤用于”;以及(b)不打算通过说明书中的任何陈述以未以其他方式明确反映在所附权利要求书中的任何方式来限制本公开。
示例实现
在一个示例中公开了一种计算系统,包括:包括:处理器;存储器;以及存储器加密引擎(MEE),所述存储器加密引擎(MEE)包括电路和逻辑,用于:分配受保护的隔离存储器区域(IMR);对所述受保护的IMR加密;设置访问控制策略,用于允许通过由装置标识符标识的装置访问所述IMR;以及在接收到针对所述IMR的存储器访问请求时,实施所述访问控制策略。
还公开了一种示例计算系统,其中所述MEE逻辑还用于拒绝访问未由所述装置标识符标识的任何装置。
还公开了一种示例计算系统,其中所述MEE逻辑还用于接收多个装置的多个装置标识符,并且仅准许所述多个装置访问所述IMR。
还公开了一种示例计算系统,其中所述MEE是多密钥总存储器加密(MKTME)引擎。
还公开了一种示例计算系统,其中,所述MEE是部分范围MEE。
还公开了一种示例计算系统,其中所述处理器包括一个或多个访问策略寄存器以及电路和逻辑,用于根据所述访问策略寄存器来设置所述MEE的所述访问控制策略。
还公开了一种示例计算系统,其中所述处理器包括用于提供SET_POLICY指令的逻辑,所述SET_POLICY指令用于提供用于设置所述访问控制策略的软件可访问部件。
还公开了一种示例计算系统,还包括用于实现所述SET_POLICY指令的处理器微码
还公开了一种示例计算系统,还包括所述处理器和所述MEE之间的管芯上互连构造,所述管芯上互连构造包括专用装置标识符总线线路。
还公开了一种示例计算系统,还包括非核,以及在所述处理器和所述非核之间的源标识符总线线路。
还公开了一种示例计算系统,还包括外围组件互连高速(PCIe)控制器,所述PCIe控制器包括装置ID处理器模块。
还公开了一种示例计算系统,其中所述装置ID处理器模块包括用于处理事务层协议(TLP)分组前缀内的装置ID的逻辑。
还公开了一种示例计算系统,其中所述MEE包括存储器映射输入/输出(MMIO)模块,用于提供接口来对所述存储器访问策略编程。
还公开了一种示例计算系统,其中所述MMIO模块包括:用于验证尝试对所述存储器访问策略编程的代理是可信代理的逻辑。
还公开了一种示例计算系统,其中实施所述存储器访问策略包括:接收存储器访问请求;确定所述存储器访问请求是用于所述IMR的范围内的存储器位置;提取尝试所述存储器访问请求的装置的装置标识符;确定尝试访问所述存储器位置的所述装置的所述装置标识符与被允许访问所述IMR的所述装置标识符匹配;以及允许所述存储器访问。
还公开了一种示例计算系统,其中实施所述存储器访问策略还包括确定尝试访问所述存储器位置的所述装置的所述装置标识符不匹配被允许访问所述IMR的所述装置标识符,以及丢弃所述存储器访问请求。
还公开了一种示例计算系统,其中所述MEE包括存储器映射输入/输出(MMIO)模块,用于提供接口来对所述存储器访问策略编程。
还公开了一种示例计算系统,其中所述MMIO模块包括用于验证尝试对所述存储器访问策略编程的代理是可信代理的逻辑。
也公开了一种示例集成电路,包括:存储器加密引擎(MEE)模块,所述存储器加密引擎(MEE)模块包括电路,用于对主存储器的全部或一部分加密,并且用于在加密存储器内将存储器的范围标识为隔离存储器区域(IMR);存储器策略设置模块,所述存储器策略设置模块包括电路,用于接收授权的装置标识符,并且用于将所述授权的装置标识符与所述IMR相关联作为被授权访问所述IMR的装置;以及存储器策略实施模块,所述存储器策略实施模块包括电路,用于接收针对所述IMR的所述范围内的存储器位置的访问请求,所述访问请求包括请求装置标识符,并且用于仅在所述请求装置标识符与所述授权的装置标识符匹配的情况下允许所述访问请求。
还公开了一种示例集成电路,其中所述存储器策略实施模块还包括电路,用于确定所述请求装置标识符与所述授权的装置标识符不匹配,并且用于丢弃所述访问请求。
还公开了一种示例集成电路,还包括到芯片上构造的接口,所述互连包括n个总线线路以用于接收所述请求装置标识符。
还公开了一种示例集成电路,其中n=16。
还公开了一种示例集成电路,其中n选自由2、4、8、12、16、32和64组成的群组。
还公开了一种示例多芯片模块,包括多个上述示例的所述集成电路。
还公开了一种示例片上系统,包括多个上述示例的所述集成电路。
还公开了一个或多个计算机可读介质的示例,所述计算机可读介质具有存储在其上的指令和/或掩模,用于指示制造者制造多个上述示例的所述集成电路。
也公开了一种示例微处理器,包括:一个或多个核;以及寄存器文件,所述寄存器文件包括被配置成保持加密存储器区域的存储器范围的一个或多个存储器策略寄存器,以及被授权访问所述加密存储器区域的至少一个授权的装置标识符;以及逻辑,所述逻辑用于根据所述加密存储器区域的所述范围和所述至少一个授权的装置标识符利用存储器访问策略来对存储器加密引擎(MEE)编程。
还公开了一种示例微处理器,还包括提供存储器策略设置指令,其中所述存储器策略设置指令用于接收所述加密存储器区域的范围和所述至少一个授权的装置标识符,并且用于根据所述加密存储器的所述范围和所述至少一个授权的装置标识符来对所述MEE编程。
还公开了一种示例微处理器,其中所述存储器策略设置指令用于接收被授权访问所述范围的多个装置标识符。
还公开了一种示例微处理器,其中所述存储器策略设置指令用于接收被授权访问加密存储器的所述范围的装置标识符的范围。
还公开了一种示例多芯片模块,包括多个上述示例的所述处理器和所述MEE。
还公开了一种示例片上系统,包括多个上述示例的所述处理器和所述MEE。
还公开了一种示例计算系统,包括多个上述示例的所述处理器和所述MEE。
也公开了一种示例计算系统,还包括外围组件互连高速(PCIe)控制器,所述PCIe控制器包括装置授权模块,用于接收尝试访问所述存储器的PCIe装置的装置标识符,以及用于向所述MEE传达所述PCIe装置的所述装置标识符。
还公开了一种示例计算系统,其中所述装置授权模块用于从事务层协议(TLP)分组前缀中提取所述装置标识符。
Claims (25)
1.一种计算系统,包括:
处理器;
存储器;以及
存储器加密引擎(MEE),所述存储器加密引擎(MEE)包括电路和逻辑,用于:
分配受保护的隔离存储器区域(IMR);
对所述受保护的IMR加密;
设置访问控制策略,用于允许通过由装置标识符标识的装置访问所述IMR;以及
在接收到针对所述IMR的存储器访问请求时,实施所述访问控制策略。
2.如权利要求1所述的计算系统,其中所述MEE逻辑还用于拒绝访问未由所述装置标识符标识的任何装置。
3.如权利要求1所述的计算系统,其中所述MEE逻辑还用于接收多个装置的多个装置标识符,并且仅准许所述多个装置访问所述IMR。
4.如权利要求1所述的计算系统,其中所述MEE是多密钥总存储器加密(MKTME)引擎。
5.如权利要求1所述的计算系统,其中所述MEE是部分范围MEE。
6.如权利要求1所述的计算系统,其中所述处理器包括一个或多个访问策略寄存器以及电路和逻辑,用于根据所述访问策略寄存器来设置所述MEE的所述访问控制策略。
7.如权利要求1所述的计算系统,其中所述处理器包括用于提供SET_POLICY指令的逻辑,所述SET_POLICY指令用于提供用于设置所述访问控制策略的软件可访问部件。
8.如权利要求1所述的计算系统,还包括用于实现所述SET_POLICY指令的处理器微码。
9.如权利要求1所述的计算系统,还包括所述处理器和所述MEE之间的管芯上互连构造,所述管芯上互连构造包括专用装置标识符总线线路。
10.如权利要求9所述的计算系统,还包括非核,以及在所述处理器和所述非核之间的源标识符总线线路。
11.如权利要求1所述的计算系统,还包括外围组件互连高速(PCIe)控制器,所述PCIe控制器包括装置ID处理器模块。
12.如权利要求11所述的计算系统,其中所述装置ID处理器模块包括用于处理事务层协议(TLP)分组前缀内的装置ID的逻辑。
13.如权利要求1所述的计算系统,其中所述MEE包括存储器映射输入/输出(MMIO)模块,用于提供接口对所述存储器访问策略编程。
14.如权利要求13所述的计算系统,其中所述MMIO模块包括;用于验证尝试对所述存储器访问策略编程的代理是可信代理的逻辑。
15.如权利要求1至14中的任一项所述的计算系统,其中实施所述存储器访问策略包括:
接收存储器访问请求;
确定所述存储器访问请求用于所述IMR的范围内的存储器位置;
提取尝试所述存储器访问请求的装置的装置标识符;
确定尝试访问所述存储器位置的所述装置的所述装置标识符与被允许访问所述IMR的所述装置标识符匹配;以及
允许所述存储器访问。
16.根据权利要求1所述的计算系统,其中实施所述存储器访问策略还包括:确定尝试访问所述存储器位置的所述装置的所述装置标识符与被允许访问所述IMR的所述装置标识符不匹配,并且丢弃所述存储器访问请求。
17.如权利要求1所述的计算系统,其中所述MEE包括存储器映射输入/输出(MMIO)模块,用于提供接口对所述存储器访问策略编程。
18.如权利要求13所述的计算系统,其中所述MMIO模块包括:用于验证尝试对所述存储器访问策略编程的代理是可信代理的逻辑。
19.一种集成电路,包括:
存储器加密引擎(MEE)模块,所述存储器加密引擎(MEE)模块包括电路,用于对主存储器的全部或一部分加密,并且用于在加密存储器内将存储器的范围标识为隔离存储器区域(IMR);
存储器策略设置模块,所述存储器策略设置模块包括电路,用于接收授权的装置标识符,并且用于将所述授权的装置标识符与所述IMR相关联作为被授权访问所述IMR的装置;以及
存储器策略实施模块,所述存储器策略实施模块包括电路,用于接收针对所述IMR的所述范围内的存储器位置的访问请求,所述访问请求包括请求装置标识符,并且用于仅在所述请求装置标识符与所述授权的装置标识符匹配的情况下允许所述访问请求。
20.如权利要求19所述的集成电路,其中所述存储器策略实施模块还包括电路,用于确定所述请求装置标识符与所述授权的装置标识符不匹配,并且用于丢弃所述访问请求。
21.如权利要求19所述的集成电路,还包括到芯片上构造的接口,所述互连包括n个总线线路以用于接收所述请求装置标识符。
22.如权利要求19所述的集成电路,其中n=16。
23.如权利要求19所述的集成电路,n选自由2、4、8、12、16、32和64组成的群组。
24.一种多芯片模块,包括根据权利要求19-23中的任一项所述的集成电路。
25.一种片上系统,包括根据权利要求19-23中的任一项所述的集成电路。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/454476 | 2019-06-27 | ||
US16/454,476 US11343090B2 (en) | 2019-06-27 | 2019-06-27 | Device ID for memory protection |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112148210A true CN112148210A (zh) | 2020-12-29 |
Family
ID=68162306
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010218257.XA Pending CN112148210A (zh) | 2019-06-27 | 2020-03-25 | 用于存储器保护的装置id |
Country Status (3)
Country | Link |
---|---|
US (2) | US11343090B2 (zh) |
EP (1) | EP3757857B1 (zh) |
CN (1) | CN112148210A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11343090B2 (en) | 2019-06-27 | 2022-05-24 | Intel Corporation | Device ID for memory protection |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11436342B2 (en) | 2019-12-26 | 2022-09-06 | Intel Corporation | TDX islands with self-contained scope enabling TDX KeyID scaling |
US11949595B2 (en) * | 2020-06-26 | 2024-04-02 | Intel Corporation | Reflection routing as a framework for adaptive modular load balancing for multi-hierarchy network on chips |
US20220100871A1 (en) * | 2020-09-26 | 2022-03-31 | Intel Corporation | Scalable multi-key memory encryption |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8959576B2 (en) | 2013-03-14 | 2015-02-17 | Intel Corporation | Method, apparatus, system for qualifying CPU transactions with security attributes |
US9904805B2 (en) | 2015-09-23 | 2018-02-27 | Intel Corporation | Cryptographic cache lines for a trusted execution environment |
US10565130B2 (en) | 2017-09-25 | 2020-02-18 | Intel Corporation | Technologies for a memory encryption engine for multiple processor usages |
CN111095252A (zh) | 2017-09-29 | 2020-05-01 | 英特尔公司 | 密码存储器所有权 |
US10938559B2 (en) * | 2017-12-12 | 2021-03-02 | Advanced Micro Devices, Inc. | Security key identifier remapping |
US11082231B2 (en) | 2017-12-29 | 2021-08-03 | Intel Corporation | Indirection directories for cryptographic memory protection |
US11343090B2 (en) | 2019-06-27 | 2022-05-24 | Intel Corporation | Device ID for memory protection |
-
2019
- 2019-06-27 US US16/454,476 patent/US11343090B2/en active Active
-
2020
- 2020-03-20 EP EP20164733.6A patent/EP3757857B1/en active Active
- 2020-03-25 CN CN202010218257.XA patent/CN112148210A/zh active Pending
-
2022
- 2022-03-18 US US17/698,269 patent/US20220278836A1/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11343090B2 (en) | 2019-06-27 | 2022-05-24 | Intel Corporation | Device ID for memory protection |
Also Published As
Publication number | Publication date |
---|---|
US20190319789A1 (en) | 2019-10-17 |
EP3757857A1 (en) | 2020-12-30 |
US20220278836A1 (en) | 2022-09-01 |
US11343090B2 (en) | 2022-05-24 |
EP3757857B1 (en) | 2024-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3958160B1 (en) | Encoded inline capabilities | |
EP3720084B1 (en) | Apparatuses, methods, and systems for verification of input-output memory management unit to device attachment | |
EP3757857B1 (en) | Device id for memory protection | |
US10491381B2 (en) | In-field system test security | |
KR20210084223A (ko) | 동적 키 유도에 기초한 다중 키 전체 메모리 암호화를 위한 방법 및 장치 | |
US11403005B2 (en) | Cryptographic memory ownership | |
US20230169173A1 (en) | Standardized Interface for Intellectual Property Blocks | |
US11436342B2 (en) | TDX islands with self-contained scope enabling TDX KeyID scaling | |
US11243766B2 (en) | Flexible instruction set disabling | |
EP4202698A1 (en) | Circuitry and methods for implementing input/output extensions for trust domains | |
US10859627B2 (en) | In-field system testing | |
EP4020280A1 (en) | Dynamic detection of speculation vulnerabilities | |
CN114692231A (zh) | 用于针对硬件重放攻击和存储器访问模式泄漏的提高的恢复力的存储器地址总线保护 | |
CN113536293A (zh) | 用于高效地管理和处理影子栈的装置和方法 | |
CN109643244B (zh) | 映射安全策略组寄存器 | |
EP4216089A1 (en) | Device security manager architecture for trusted execution environment input/output (tee-io) capable system-on-a-chip integrated devices | |
US20230289433A1 (en) | Device security manager architecture for trusted execution environment input/output (tee-io) capable system-on-a-chip integrated devices | |
WO2023115248A1 (en) | Circuitry and methods for implementing a trusted execution environment security manager | |
EP4020188A1 (en) | Hardening load hardware against speculation vulnerabilities | |
EP4020281A1 (en) | Hardening registers against speculation vulnerabilities | |
EP4020279A1 (en) | Hardening store hardware against speculation vulnerabilities | |
EP4020278A1 (en) | Hardening execution hardware against speculation vulnerabilities |
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 |