CN114694737A - 具有差错纠正能力的低开销存储器完好性 - Google Patents
具有差错纠正能力的低开销存储器完好性 Download PDFInfo
- Publication number
- CN114694737A CN114694737A CN202111413690.XA CN202111413690A CN114694737A CN 114694737 A CN114694737 A CN 114694737A CN 202111413690 A CN202111413690 A CN 202111413690A CN 114694737 A CN114694737 A CN 114694737A
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- ecc
- compressed data
- compressed
- 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 280
- 238000012937 correction Methods 0.000 title claims abstract description 55
- 230000006835 compression Effects 0.000 claims abstract description 50
- 238000007906 compression Methods 0.000 claims abstract description 50
- 238000001514 detection method Methods 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 14
- 238000000034 method Methods 0.000 abstract description 10
- 230000008520 organization Effects 0.000 abstract description 8
- 230000006870 function Effects 0.000 description 31
- 238000007667 floating Methods 0.000 description 15
- 238000012795 verification Methods 0.000 description 15
- 238000006073 displacement reaction Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 9
- 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 8
- 239000000872 buffer Substances 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000000873 masking effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 101100117236 Drosophila melanogaster speck gene Proteins 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000001066 destructive effect Effects 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000005201 scrubbing Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- VOXZDWNPVJITMN-ZBRFXRBCSA-N 17β-estradiol Chemical compound OC1=CC=C2[C@H]3CC[C@](C)([C@H](CC4)O)[C@@H]4[C@@H]3CCC2=C1 VOXZDWNPVJITMN-ZBRFXRBCSA-N 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 239000012556 adjustment buffer Substances 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004193 electrokinetic chromatography Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- 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/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- 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
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W12/00—Security arrangements; Authentication; Protecting privacy or anonymity
- H04W12/10—Integrity
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Quality & Reliability (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
本公开涉及具有差错纠正能力的低开销存储器完好性。描述了用于基于可缩放存储器完好性和增强型可靠性、可用性和可服务性(SMIRAS)的系统的技术。可以使得基于SMIRAS的系统能够使用基于完好性的元数据组织,该组织将数据、元数据和ECC数据的第一部分一起存储在存储器中,并且将ECC数据的第二部分存储在隔绝存储器中;或者使用基于压缩的组织,该组织将压缩数据、压缩元数据和ECC数据的第二部分存储为缓存线。
Description
技术领域
本公开总体涉及计算机领域,更具体地涉及具有差错纠正能力的低开销存储器完好性。
背景技术
存储器完好性是通过将密码消息认证码(message authentication code,MAC)与存储器中的每个数据线相关联来操作的。MAC是在数据被写入到存储器时生成的,并且是在从存储器读取数据时被验证的。如果数据在驻留在存储器中时曾被修改,则MAC将不匹配,并且导致修改攻击被检测到(然后可通知安全性异常,以将该攻击通知给软件)。
现代处理器被设计来保护存储器中的敏感数据免遭硬件和软件攻击。一些处理器提供密码机制来用于加密、完好性和重放(replay)保护。存储器加密保护驻留在存储器中的数据的保密性。另一方面,完好性保护防止攻击者对存储器中的密文(即,加密的数据,而不是作为未加密数据的明文)引起任何隐藏的修改,并且重放保护消除了对密文的任何未检测到的时间替换。如果没有这种保护,能够物理上触及系统的攻击者可记录数据线的快照并且在以后某个时间点重放它们。
发明内容
本公开的一方面提供了一种系统,包括:存储器电路;存储器安全性引擎电路,用于针对要被存储在所述存储器电路中的多个加密压缩数据线中的每一个生成如下项:关于被用于每个压缩数据线的压缩的压缩元数据,与每个压缩数据线相关联的差错纠正码(ECC)数据,所述ECC数据包括用于差错纠正和检测的第一层级的ECC数据和只用于差错纠正的第二层级的ECC数据,以及与每个压缩数据线相关联的至少消息认证码,其中,所述压缩元数据和所述第二层级的ECC数据与所述压缩数据线一起被存储。
本公开的一方面提供了一种装置,包括:存储器安全性引擎电路,用于针对要被存储在存储器电路中的多个加密压缩数据线中的每一个生成如下项:关于被用于每个压缩数据线的压缩的压缩元数据,与每个压缩数据线相关联的差错纠正码(ECC)数据,所述ECC数据包括用于差错纠正和检测的第一层级的ECC数据和只用于差错纠正的第二层级的ECC数据,以及与每个压缩数据线相关联的至少消息认证码,其中,所述压缩元数据和所述第二层级的ECC数据与所述压缩数据线一起被存储;以及存储器控制器,用于从存储器读取数据线和向存储器写入数据线。
附图说明
将参考附图描述根据本公开的各种实施例,其中:
图1图示了存储器中的分层级ECC组织的实施例。
图2图示了具有SMIRAS的存储器布局的实施例。
图3图示了利用带有或不带有压缩的SMIRAS的系统的实施例。
图4图示了可被用于SMIRAS系统中的不同元数据组织的实施例。
图5图示了存储器安全性引擎及其与存储器的交互的实施例。
图6图示了存储器安全性引擎及其与存储器的交互的实施例。
图7图示了密钥表512的实施例。
图8图示了与PCONFIG指令相关联的示例调用流程。
图9图示了详述存储器加密能力的模型特定寄存器(MSR)的实施例。
图10图示了详述存储器激活的模型特定寄存器(MSR)的实施例。
图11图示了用于当使用压缩SMIRAS和/或未压缩SMIRAS时处理存储器请求的流程的实施例。
图12图示了示例性系统的实施例。
图13图示了处理器1300的实施例的框图,该处理器可具有多于一个核心,可具有集成的存储器控制器,并且可具有集成的图形。
图14(A)是根据本公开的实施例图示出示例性有序流水线和示例性寄存器重命名、无序发出/执行流水线两者的框图。
图14(B)是根据本公开的实施例图示出要被包括在处理器中的有序体系结构核心的示例性实施例和示例性寄存器重命名、无序发出/执行体系结构核心两者的框图。
图15图示了(一个或多个)执行单元的电路的实施例,例如图14(B)的(一个或多个)执行单元的电路1462。
图16是根据一些实施例的寄存器体系结构1600的框图。
图17图示了指令格式的实施例。
图18图示了寻址字段1705的实施例。
图19图示了第一前缀1701(A)的实施例。在一些实施例中,第一前缀1701(A)是REX前缀的实施例。
图20(A)图示了如何使用第一前缀1701(A)的R、X和B字段的实施例。
图20(B)图示了如何使用第一前缀1701(A)的R、X和B字段的实施例。
图20(C)图示了如何使用第一前缀1701(A)的R、X和B字段的实施例。
图20(D)图示了如何使用第一前缀1701(A)的R、X和B字段的实施例。
图21(A)图示了第二前缀1701(B)的两字节形式的实施例。
图21(B)图示了第二前缀1701(B)的三字节形式的实施例。
图22图示了第三前缀1701(C)的实施例。
图23是根据本公开的实施例与使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令相对比的框图。
具体实施方式
本公开涉及用于具有差错纠正能力的低开销存储器完好性的方法、装置、系统和非暂态计算机可读存储介质。
由其客户的要求驱动的云安全性提供商(cloud security provider,CSP)对在其平台上运行的客户工作负载希望有密码隔离。在一些实施例中,信任域扩展(trust domainextensions,TDX)使用多密钥全存储器加密引擎(multi-key total memory encryptionengine,MKTME)在服务器上提供隔离。每域存储器完好性是TDX体系结构的一个组成部分,允许了针对所有软件攻击进行保护和针对硬件修改攻击进行防御。然而,为了防御所有的硬件攻击,可能需要硬件重放保护。
如上所述,存储器完好性是通过将MAC与存储器中的每个数据线相关联来操作的。MAC是在数据被写入到存储器时生成的,并且是在从存储器读取数据时被验证的。如果数据在驻留在存储器中时曾被修改,则MAC将不匹配,并且导致修改攻击被检测到(然后可通知安全性异常,以将该攻击通知给软件)。传统的完好性方法可能会有很大的性能开销,因为与每个数据线相关联的MAC必须在每次访问时被加载,并且依据存储器访问的类型被验证/更新。这种额外的访问导致了存储、性能和带宽开销。注意,传统的存储器完好性将MAC单独存储在被盗存储器中(操作系统不可见的存储器)。
一些服务器平台使用ECC存储器来实现高可用性,并且ECC比特随着缓存线数据一起移动,从而消除了额外的访问和关联的性能开销。然而,在ECC比特中存储MAC可导致ECC能力的降低(以最常见的DDR5存储器为例,100%的单设备差错纠正需要128b的ECC),并且由于ECC设备中可用的比特数目有限,阻止了将安全性缩放到超出一定限度。
图1图示了存储器中的分层级ECC组织的实施例。ECC_TIER1 101代表差错检测和纠正都需要的ECC比特,因此是性能关键的,并且被存储在ECC存储器中。ECC_TIER2 103只是差错纠正所需要的,因此可被存储在不使用ECC的隔绝存储器中。在写入到存储器时,ECC的ECC_TIER2 103将被更新,这可导致从隔绝存储器的额外访问。在一些实施例中,使用缓存ECC_TIER2线的元数据缓存,以尽量减少SMIRAS所需的对存储器的额外访问。
图2图示了具有SMIRAS的存储器布局的实施例。在高级别上,SMIRAS对存储器进行隔绝,在每个缓存线的基础上存储元数据(例如,ECC数据)。如图所示,数据移动粒度块200包括数据线201和元数据203。元数据203是差错检测和纠正所需要的第一层级的元数据。额外的元数据205与每个粒度块200相关联,是仅差错纠正所需的第二层级的元数据。这个额外的存储器被存储在隔绝存储器中。
在一些实施例中,物理设备(例如DDR5 DIMM)包括存储ECC元数据的存储器设备和不被用于存储ECC元数据的存储器设备。在一些实施例中,所有存储器设备都默认存储ECC元数据。使用ECC的存储器设备被用于存储性能敏感的元数据(例如,ECC的差错检测和纠正层级,MAC),而用于隔绝存储器的存储器设备可能不使用ECC(但在一些实施例中可能使用),用于存储与脱离性能关键路径的缓存线相关联的元数据(例如,ECC的差错纠正层级)。在一些实施例中,对于存储器设备中的每次写入,存储128比特的数据。在一些实施例中,还存储额外的奇偶比特(例如,8比特)。
本文详述了一种可以使用压缩的可缩放存储器完好性和增强RAS(ScalableMemory Integrity and Enhanced RAS,SMIRAS)存储器完好性体系结构。具有压缩的SMIRAS允许完整的差错纠正能力和高强度的存储器完好性,而不需要引入或者最小化传统存储器完好性方法的性能开销。具体地,在一些实施例中,SMIRAS针对差错纠正码(errorcorrection code,ECC)利用了扩展里德-所罗门码(extended Reed Solomon code)的优势,它允许ECC元数据比特被分割成两个层级,第一层级是差错检测和纠正所需要的,第二层级只是差错纠正所需要的。在非隔绝存储器中,数据线与元数据一起被存储,该元数据可包括第一层级的ECC(ECC_TIER1)、MAC等等中的一个或多个。在一些实施例中,使用SMIRAS的系统使用隔绝存储器(或者存储器的分离部分)来存储与每个缓存线相关联的第二层级ECC元数据(ECC_TIER2)。因此,在需要时,使用第一层级的ECC和第二层级的ECC可以实现完全ECC校正。
在一些实施例中,SMIRAS使用ECC支持设备和隔绝存储器设备作为组合元数据存储。ECC设备存储在读取时需要的性能敏感的元数据,而隔绝存储器元数据则存储不属于性能路径的元数据。作为示例,与缓存线大小的数据相关联的MAC被存储在ECC设备中。隔绝存储器被用来存储非性能敏感的元数据。作为示例,仅用于差错纠正的ECC元数据被存储在隔绝存储器中。这种次级ECC元数据只需要在写入时被更新,而不需要在读取时被取得,除非有差错需要纠正。在非ECC支持设备中,所有的元数据都被存储在隔绝存储器中。
对于压缩的实施例,数据线被压缩以释放空间给ECC层级(例如ECC_TIER2),在默认的SMIRAS实现方式中(即没有压缩),ECC层级通常会被存储在隔绝存储器中。如果该线是可压缩的,那么可避免用SMIRAS写入到存储在隔绝存储器中的ECC层级时需要的读取-修改-写入操作的额外访问。也使用第一加密算法,例如高级加密标准(Advanced EncryptionStandard,AES),对数据线进行加密。由于压缩元数据如果被保留为明文则可揭示关于明文的信息,因此压缩元数据也被加密。在一些实施例中,压缩元数据被使用狭窄区块密码来进行加密,例如Prince、Simon、Speck,等等。
具体地,数据首先被发送经过压缩引擎(在核心中或在核心之外),该压缩引擎尝试将数据至少压缩128比特(在一些实施例中,下一个更高的压缩粒度是128比特的倍数)。在使用AES的实施例中,这样做是为了确保压缩后的数据可被用AES进行加密,而AES是以128比特的粒度进行操作的。
图3图示了利用带有或不带有压缩的SMIRAS的系统的实施例。如图所示,处理器301或片上系统(system on a chip,SOC)300包括:一个或多个核心303;最后一级缓存(last level cache,LLC)304(其将是在多个核心303之间共享的);存储器安全性引擎(memory security engine,MSE)305,用于加密或解密数据、验证数据、维护一个或多个加密密钥、和/或缓存ECC数据;以及存储器控制器电路307,用于执行到存储器的读取和写入(以及在一些实施例中,执行基于ECC的差错纠正)。每个处理器301耦合到存储器309,该存储器可被加密。此外,存储器309可支持ECC。在一些实施例中,每个SOC 300包括存储器309。在一些实施例中,MSE 305是存储器控制器电路307的一部分。
为了支持压缩,在一些实施例中,(一个或多个)核心303包括对一个或多个压缩/解压缩算法的指令支持。在一些实施例中,使用了在核心303外部的专用的压缩/解压缩单元308。
如上所述,在一些实施例中,同时支持带有压缩的SMIRAS和不带有压缩的SMIRAS。图4图示了可被用于SMIRAS系统中的不同元数据组织的实施例。第一组织400示出了具有相应ECC 403的缓存线401。这个组织可被用于没有使能SMIRAS的基本配置中。
第二组织410示出了当缓存线411不能被压缩时的布局。在这种情况下,ECC_TIER1413(检测和纠正所需)被存储在ECC设备中,并且ECC_TIER2 419(仅纠正所需)被存储在被盗或隔绝存储器中。通过移动ECC_TIER2 419而释放的空间被用来存储元数据417,例如MAC。在ECC设备中的这个元数据中,一个比特被用来指示压缩。在读取时的返回路径上需要这个信息,以便知道如何获得解密的数据并且纠正差错(如果有的话)。
第三组织420示出了当缓存线421能够被压缩时的布局。在这种情况下,数据缓存线本身存储ECC_TIER2数据425以及用于对缓存线进行解压缩的压缩元数据423。与线未被压缩的情况类似,ECC设备存储ECC_TIER1 421和携带MAC等等的元数据429。元数据429包括1比特压缩指示符。在这样的实施例中,压缩元数据423可包括对于哪种类型的压缩曾被用来对该块内的数据421进行压缩的指示。由于压缩元数据可泄露关于明文数据的信息,因此需要对其进行保护。当压缩成功时,压缩元数据和ECC_TIER2都被存储在缓存线本身中,并且可自然地使用AES-XTS(用于数据本身的加密算法,有时称为XTS-AES,其中XTS代表Xor-encrypt-xor-based tweaked-codebook mode with ciphertext stealing,带有密文窃取的基于异或加密异或的调整码本模式)来对ECC_TIER2和压缩元数据进行加密。然而,ECC_TIER2可能是巡逻擦洗逻辑(patrol scrubbing logic)进行纠正所需要的,该巡逻擦洗逻辑擦洗整个存储器(可能每天一次)以防止积累。为了使巡逻擦洗逻辑独立于加密引擎工作(即,没有关于密钥的任何知识),ECC_TIER2在一些实施例中被保持为明文,只有压缩元数据被加密。然而,由于压缩元数据是64b,而AES以128b粒度进行操作,所以AES不能被高效地使用(注意,这样做是有可能的,但对于带有密文窃取的硬件而言效率不高)。为了高效地保护压缩元数据,使用了狭窄区块密码,例如Prince、Simon、Speck,等等。
除了上面详述的布局以外,与SMIRAS最相关的是MSE 305。注意,MSE 305可具有其他名称,例如存储器加密引擎(memory encryption engine,MEE),安全处理器,等等。图5图示了存储器安全性引擎及其与存储器的交互的实施例。MSE 305通过存储器控制器电路307与存储器309交互(例如,从存储器读取或向存储器写入)。在这个图示中,存储器309存储着数据线523、与数据线相关联的MAC 525、以及差错检测和纠正所需的ECC数据527,仅差错纠正所需的ECC数据529被存储在隔绝存储器520中。在一些实施例中,差错检测和纠正所需的ECC数据527和MAC 525总共包括128比特,数据线523为512比特,并且仅差错纠正所需的ECC数据529针对每个缓存线为64比特。
在一些实施例中,MSE 305包括以下各项中的一个或多个:多密钥电路501、加密/解密电路503、验证电路505、元数据取得和缓存电路507、读取/写入控制器513、和/或一个或多个SMIRAS数据结构509。
多密钥电路501提供(例如,存储和/或生成)多个加密密钥。在一些实施例中,加密密钥是使用硬件随机数生成器来生成的。硬件随机数生成器的一种示例是物理不可克隆函数(physical unclonable function,PUF)电路。加密密钥的类型的示例包括但不限于AES-XTS-128比特、AES-XTS-256比特等等的密钥。通常,软件管理密钥的使用,并且可使用每个可用的密钥来加密存储器的任何页。因此,多密钥电路501允许了对存储器进行至少页粒度的加密。在一些实施例中,密钥表512存储关于这些密钥及其使用的信息。可以使用任何形式的存储器或存储装置(例如,RAM)来实现密钥表512,也可直接在存储器保护控制器206上、在存储器210中和/或使用另一个存储器组件来实现密钥表512。
加密/解密电路503执行加密和描述(例如,比如AES-XTS-128比特,AES-XTS-256比特,等等)。具体地,加密/解密电路503可取入密文并且产生解密的数据,或者取入数据并且产生密文。在一些实施例中,AES-XTS加密计算调整(tweak),该调整是从系统存储器的存储器地址得出的。该调整可以是存储器中的唯一位置,例如,包含相同信息的两个存储器扇区可各自具有唯一的存储器位置。该调整可被表示为处理器-存储器接口(processor-memoryinterface,PMI)扇区地址和存储器扇区内的块的索引的组合,并且可在接收到要加密或解密的写入或读取数据时被存储在调整缓冲器中。
差错纠正和/或检测电路515执行以下各项中的一个或多个:针对从存储器309取回的数据进行差错纠正和/或检测,以及针对要被写入到存储器309的数据进行差错纠正码生成。
验证电路505使用消息认证码(MAC),以通过比较计算出的MAC值和存储的MAC值来检查数据线的完好性。注意,验证电路505在一些实施例中生成MAC值来与数据线和ECC一起存储。在一些实施例中,验证电路505使用ECC_TIER1执行差错纠正并且使用ECC_TIER1和ECC_TIER2执行差错检测和纠正。
当在元数据取得和缓存电路507的缓存中没有发现的纠正码时,元数据取得和缓存电路507在由检测码检测到差错时取得仅差错纠正所需的ECC数据(例如,ECC 529)(并且缓存它)。注意,对于写入,隔绝存储器中的ECC在每次写入时被更新(最多2次写入)。
在一些实施例中,一个或多个SMIRAS数据结构509存储以下各项中的一个或多个:对于要使用的(一个或多个)加密/解密算法的指示,数据和元数据的地址,以及对于要使用哪个(哪些)密钥的指示,等等。
读取/写入控制器513执行从存储器和向存储器的读取和写入流程(用于完好性保护)。读取/写入控制器513也可跟踪数据和元数据被写入的位置,以便以后取回。在一些实施例中,读取/写入控制器513包括一个或多个状态机。在一些实施例中,读取/写入控制器513包括一个或多个电路。在一些实施例中,读取/写入控制器513保持密钥数据结构(称为密钥表)512为最新。在其他实施例中,另一组件保持密钥表512为最新。密钥表512存储了关于将被MSE 305使用的密钥的信息。
对于读取,生成读取请求(例如,来自核心),并且MSE 305接收该请求。MSE 305经由存储器控制器电路307向隔绝存储器520发出读取请求。隔绝存储器在一些实施例中可以是不支持ECC的存储器。密文被从存储器(例如,数据线523)连同与数据线相关联的MAC 525和差错检测和纠正所需的ECC数据527一起被读取。注意,在一些实施例中,这些被存储在ECC硬件中。
存储器控制器电路307使用ECC数据527确定密文是否有差错。当没有差错时,数据线523被加密/解密电路503同时或顺序地解密,并且由验证电路505使用MAC数据136进行验证。
在一些实施例中,当存储器控制器电路307和/或验证电路505确定存在差错或者数据线不可验证时,元数据取得和缓存电路507取得仅差错纠正所需的ECC数据(例如,ECC529)。加密/解密电路503、验证电路505、元数据取得和缓存电路507和存储器控制器电路307中的一个或多个使用ECC的全部(两部分)来修复数据线523。响应于对数据线523的成功验证和解密,解密的数据和对完好性验证的指示被输出。
图6图示了存储器安全性引擎及其与存储器的交互的实施例。具体地,使用图4的第三布局。在这个示例中,压缩数据(例如,384比特数据)623、压缩元数据625和ECC_TIER2数据627构成了数据621的缓存线。这被存储在ECC存储器中。ECC_TIER1 629和元数据631不作为缓存线的一部分被存储。
在有压缩选项的情况下,数据首先被发送通过压缩引擎。在一些实施例中,压缩引擎尝试将数据压缩至少128比特(下一个更高的压缩粒度必须是128比特的倍数)。这样做是为了确保压缩后的数据可被用AES来进行加密,而AES是以128比特的粒度进行操作的。
对于使用第三布局的SMIRAS,在接收到读取时,MSE 305将请求转发给存储器控制器307。密文连同关联的ECC比特(带有MAC和ECC_TIER1比特)被返回到MSE 305,并且被馈送到解密和MAC生成流水线。解密和完好性验证可并行进行。验证成功后,解密的数据被返回给请求者。在被馈送到解密流水线之前,ECC逻辑515检查加载的数据是否有任何差错。只有当检测到差错时,ECC_TIER2(存储在隔绝存储器中)才被取得,以允许与ECC_TIER1一起进行差错纠正。对于写入请求,写入到存储器的数据的ECC需要被生成并存储在存储器中。因此,在对数据的每个写入请求时,有两个写入被发出到存储器,一个是用于加密数据本身,另一个是用于更新ECC_TIER2。
为了尽量减少对存储器的访问,在一些实施例中,ECC_TIER2被缓存在内部元数据缓存中,并且只有当缓存中出现错失时,才向存储器发出请求,以取得与写入到存储器的数据线相关联的ECC_TIER2线。ECC_TIER2(大小为64b)在ECC_TIER2线中被更新,并且更新后的线被存储在元数据缓存中,并且在逐出时被自然写回到存储器。
图7图示了密钥表512的实施例。密钥表512的条目可对应于不同的受保护域。例如,每个条目包括密钥或域标识符(ID)703、保护模式707、以及关联的加密密钥705(如果适用)。在一些实施例中,例如,密钥ID(KeyID)可代表在关联的受保护域内的存储器地址的高阶比特。与给定的密钥ID相关联的受保护域涵盖最高阶比特与该密钥ID相匹配的所有存储器地址。在图示的实施例中,密钥ID作为字段被存储在密钥表512中,但在替换实施例中,密钥ID可被用作密钥表512的索引而不是被直接存储在密钥表512中。
此外,在一些实施例中,可支持多个保护模式,并且可使用特定的保护模式来保护每个受保护域。例如,在一些实施例中,支持的保护模式可包括明文模式(例如,未加密)、标准或默认加密模式(例如,使用标准或默认加密密钥进行加密)、和/或定制加密模式(例如,使用唯一加密密钥进行加密)。相应地,密钥表512可标识与每个受保护域或密钥ID相关联的保护模式。
例如,在图示的示例中,域密钥表512包括四个条目。第一条目标识了与密钥ID00000相对应的受保护域(从而涵盖了在最高阶5比特中包含00000的所有存储器地址),该域在默认加密模式中被使用密钥“ABC”来进行保护。第二条目标识了与密钥ID 00001相对应的受保护域(从而涵盖了在最高阶5比特中包含00001的所有存储器地址),该域在明文模式中受保护,从而不具有关联的加密密钥。第三条目标识了与密钥ID 00010相对应的受保护域(从而涵盖了在最高阶5比特中包含00010的所有存储器地址),该域在定制加密模式中被使用密钥“XYZ”来进行保护。第四条目标识了与密钥ID 00011相对应的受保护域(从而涵盖了在最高阶5比特中包含00011的所有存储器地址),该域在默认加密模式中被使用密钥“ABC”来进行保护。如这些示例所示,使用定制加密模式来保护的域具有唯一密钥(“XYZ”),使用默认加密模式来保护的域共享加密密钥(“ABC”),而以明文模式保护的域是未加密的,从而没有关联的密钥。
在一些实施例中,可以使用由处理器实现的处理器指令来定义和/或配置受保护域,例如联系图8以及在本公开各处描述的“平台配置”(PCONFIG)指令。例如,PCONFIG指令可被用于定义和/或配置受保护域,其方式是通过在存储器安全性引擎305的密钥表512中编程新的条目——或者修改现有条目。以这种方式,可以使用PCONFIG指令以编程方式(例如,由管理软件)定义和配置受保护域。
在一些实施例中,例如,处理器可以实现一种指令,该指令可被用于配置与存储器保护系统相关联的受保护域。例如,处理器指令可以是“平台配置”(PCONFIG)指令、“可信平台动作监督器”(trusted platform action supervisor,TPAS)指令、和/或任何其他适当类型的指令。
例如,“平台配置”(PCONFIG)指令可被用于定义和/或配置受保护域,其方式是通过在存储器保护控制器的域密钥表(例如,存储器加密引擎的域密钥表)中编程新的条目——或者修改现有条目。以这种方式,可以使用PCONFIG指令以编程方式来定义和配置受保护域。一旦使用PCONFIG指令配置了受保护域,与受保护域相关联的存储器地址会以受保护域的配置所指定的方式受到保护。例如,当使用加密保护时,数据在被写入到受保护域内的存储器地址之前被加密,并且从受保护域内的存储器地址读取的数据在被返回到请求方处理器之前被解密。
在一些实施例中,PCONFIG指令可能要求一定的权限级别或权限环。例如,处理器可以支持权限级别或权限环的层次体系,以限制对某些资源的访问。在一些实施例中,权限环0可能是限制性最小的级别,而具有更高数字的权限环可能有越来越多的限制性。例如,权限环0可用于系统管理软件(例如,操作系统内核和设备驱动器),而权限环3可用于用户区应用。因此,在一些实施例中,PCONFIG指令可以是第0环指令,它只能由在最高权限环中执行的软件使用(例如,用于配置受保护域的管理软件)。替换地,或者额外地,PCONFIG指令可以是第3环指令,它可被任何用户区应用用来配置其自己的受保护域。
图8图示了与PCONFIG指令相关联的示例调用流程。图示的示例标识了使用PCONFIG指令执行域配置的软件810和存储器安全性引擎305之间的调用流程。存储器安全性引擎305可包括任何引擎、控制器或者提供密码存储器保护的其他组件。软件810可包括用于配置受存储器安全性引擎305保护的域的任何软件,例如虚拟机管理器和/或其他管理软件。图示的调用流程开始于由软件810选择用于针对特定域编程加密密钥的密钥编程模式(调用802a)。例如,如下文进一步论述的,软件810可以直接为该域指定密钥,或者可以请求生成随机密钥。然后,软件810可以调用PCONFIG处理器指令来执行域配置(调用802b)。当PCONFIG指令被调用时,存储器安全性引擎305针对特定域编程密钥和保护模式(调用802c)。然后,存储器安全性引擎305向软件810返回状态代码(调用802d),然后该状态代码被软件810处理(调用802e)。
在一些实施例中,PCONFIG指令可以支持用于配置和管理受保护域的各种叶函数。例如,当PCONFIG指令被执行时,可以在硬件寄存器(例如,EAX寄存器)中指定要调用的特定叶函数。在一些实施例中,也可以在硬件寄存器(例如,RBX/RCX/RDX寄存器)中指定特定叶函数所使用的参数。
下面的表格说明了可用来实现对多个叶函数的支持的PCONFIG叶编码的示例。虽然只定义了一个叶函数(KEY_PROGRAM叶),但为了扩展PCONFIG指令的功能,可以使用保留的叶编码来定义额外的叶函数。
PCONFIG叶函数编码
PCONFIG指令的密钥编程叶函数(KEY_PROGRAM)可被用来针对受保护域编程密钥。在一些实施例中,可以在密钥编程结构(KEY_PROGRAM_STRUCT)中指定密钥编程叶函数使用的参数,并且可以在硬件寄存器(例如,RBX寄存器)中指定密钥编程结构的地址。下面的表格说明了密钥编程结构(KEY_PROGRAM_STRUCT)的示例实施例。
密钥编程结构(KEY_PROGRAM_STRUCT)
如以上表格中所示,密钥编程结构标识了正被编程的特定域的密钥ID,并且它还指定了密钥编程命令。在一些实施例中,例如,密钥编程叶函数可以支持多个密钥编程命令,并且期望的命令可以在密钥编程结构中被指定。此外,在一些实施例中,密钥编程结构还可包括(一个或多个)保留字段,该保留字段可用于密钥编程叶函数的后续扩展。
下面的表格说明了密钥编程叶函数可以支持的密钥编程命令的示例。
密钥编程命令
在执行密钥编程叶函数之后,可以在硬件寄存器中指定返回值或状态代码,以表明密钥编程函数是否成功。下面的表格说明了密钥编程叶函数可以返回的状态代码的示例。
密钥编程叶函数返回的状态代码(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模型特定寄存器(model-specific register,MSR)来执行域配置,允许软件通过向PCONFIG MSR写入而调用PCONFIG操作(例如,执行WRMSR指令,在寄存器(例如ECX寄存器)中传递PCONFIG MSR的索引)。此外,可以在硬件寄存器中传递PCONFIG操作(及其关联的叶函数和命令)的某些参数。例如,可以在硬件寄存器中传递密钥编程结构(KEY_PROGRAM_STRUCT)的地址,所述硬件寄存器例如是EDX寄存器、EAX寄存器、或者这两个寄存器(例如,对于64比特存储器地址)。然后,可以按与上述类似的方式执行PCONFIG操作。
此外,在一些实施例中,PCONFIG操作可以利用包装blob来进行域密钥编程。以这种方式,可以对域密钥进行编程,而不将密钥透露给管理软件。在一些实施例中,例如,可以实现额外的PCONFIG叶函数,以使得密钥能够被包装,然后在被解包之后被编程到存储器安全性引擎305。
下面提供了用于实现PCONFIG指令的示例伪代码。
如上所述,可经由MSR将SMIRAS能力暴露给BIOS/软件。图9图示了详述存储器加密能力的模型特定寄存器(MSR)的实施例。在一些实施例中,这个寄存器是IA32_TME_CAPABILITY。这个图示出了MSR比特字段901和它们相应的描述903。注意,字段可以被重排列,等等,因为这只是示例性MSR布局。
前六个字段表明(一个或多个)加密/解密电路503和验证电路`iNVC05将使用什么加密和MAC。注意,比特5被用于指示对压缩的使用。比特35:32标识(一个或多个)密钥(例如,来自多密钥电路501)。
图10图示了详述存储器激活的模型特定寄存器(MSR)的实施例。在一些实施例中,这个寄存器是ME_ACTIVATE,它至少部分被用于锁定MSR。这个图示出了MSR比特字段1001和它们相应的描述1003。注意,字段可以被重排列,等等,因为这只是示例性MSR布局。
比特0表明在存储器加密被激活之后MSE MSR上的只读锁定。例如,通过写入到ACTIVATE_MSR寄存器(例如,使用写入MSR或WRMSR指令),在激活了存储器加密之后,可以激活该锁定。可以通过将这个比特字段设置为1来使能锁定,并且可以通过将这个比特字段设置为0来禁用锁定。
比特1当被设置时使能存储器加密(可能是全存储器加密)。比特2被用于选择默认模式的密钥。要么在启动时创建新的密钥(当为0时),要么恢复密钥(当为1时)。
比特3表明当从待机状态恢复时将密钥保存到存储装置中。
比特7:4表明要使用的加密算法。该值与图9的MSR的前六个字段一致。
比特10:8被用于SMKTME。
比特11表明SMIRAS被使能(在一些实施例中)。比特13:12表明SMIRAS粒度。
比特31:14被保留。
比特35:32表明要支持的密钥的数目。例如,如果它的值是8,那么将支持多达256个密钥。
比特47:36被保留。
比特63:48充当BIOS的比特掩码以限制哪些加密算法被允许。
图11图示了用于当使用压缩SMIRAS和/或未压缩SMIRAS时处理存储器请求的流程的实施例。在一些实施例中,到此为止,要写入的数据已被压缩(或者至少尝试被压缩)。在一些实施例中,此流程的动作由MSE305和存储器控制器307中的一个或多个来执行。
在1101,接收存储器请求。在1103,确定请求的类型是读取还是写入。在一些实施例中,读取/写入控制器513进行这个确定。对于写入请求,在1105,确定压缩是否成功了。例如,数据是否被成功压缩了?当压缩成功时,则使用加密/解密电路503对压缩数据和压缩元数据进行加密。例如,压缩数据被使用AES来加密,并且压缩元数据被使用狭窄区块密码来进行加密。
在1108,使用验证电路505在加密的线和压缩元数据上生成MAC,并且使用差错纠正和/或检测电路515在加密的线和压缩元数据上生成ECC。注意,生成的ECC包括ECC_TIER1和ECC_TIER2两者。
加密的缓存线连同ECC_TIER2在1109处被置于缓存线本身中,并且加密的数据连同其ECC(其至少包含MAC和压缩状态)在1111处被用一个写入请求存储在存储器中。换句话说,使用420的布局。
另一方面,如果压缩不成功,则在1113,对缓存线进行加密,并且在加密的线上生成MAC。在这种情况下,在1115,仅在数据线的密文上生成ECC,并且在1117,向存储器发出两个写入以将加密的密文和与缓存线相关联的ECC_TIER2存储在隔绝存储器中。换句话说,使用410的布局。
对于读取请求,在1119,将读取请求发送到存储器,并且在1121,在读取数据返回时,检查压缩状态以确定缓存线是否被压缩。在1123,使用ECC_TIER1来检测任何差错。
如果在1125处没有检测到差错,则在1131,尝试验证MAC(例如,通过与在加密数据和加密压缩元数据上计算的MAC进行比较)。当线被压缩时,验证的MAC是在压缩数据和压缩元数据上的。
在1133,对该验证进行确定。当MAC验证失败时,在1135,通知安全性异常。如果MAC验证成功,则在1137,将解密的数据返回给请求者。如果线被压缩,则在将数据返回给请求者之前,首先使用压缩元数据对解密数据进行解压缩。
当在1125处检测到差错时,在1127,当该线曾被压缩时,取得ECC_TIER2。注意,如果该线曾被压缩,则ECC_TIER2将会在取得的缓存线本身中,从而不需要额外访问存储器。在1129,对差错进行纠正,并且在1131,对纠正后的数据遵循验证完好性的流程。
SMIRAS可被用在许多不同的体系结构和系统中。下面详述了示例性体系结构、系统、处理器等等的示例。
示例性计算机体系结构
下面详细描述示例性计算机体系结构。本领域中已知的用于膝上型电脑、桌面型电脑、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(digital signal processor,DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备、以及各种其他电子设备的其他系统设计和配置,也是适当的。总之,能够包含本文公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般是适当的。
图12图示了示例性系统的实施例。多处理器系统1200是一种点到点互连系统,并且包括多个处理器,其中包括经由点到点互连1250耦合的第一处理器1270和第二处理器1280。在一些实施例中,第一处理器1270和第二处理器1280是同构的。在一些实施例中,第一处理器1270和第二处理器1280是异构的。
处理器1270和1280被示为分别包括集成存储器控制器(integrated memorycontroller,IMC)单元电路1272和1282。处理器1270还包括点到点(P-P)接口1276和1278作为其互连控制器单元的一部分;类似地,第二处理器1280包括P-P接口1286和1288。处理器1270、1280可利用P-P接口电路1278、1288经由点到点(P-P)接口1250交换信息。IMC 1272和1282将处理器1270、1280耦合到各自的存储器,即存储器1232和存储器1234,这些存储器可以是在本地附接到各个处理器的主存储器的一部分。
处理器1270、1280可各自利用点到点接口电路1276、1294、1286、1298经由个体P-P互连1252、1254来与芯片组1290交换信息。芯片组1290可以可选地经由高性能接口1292与协处理器1238交换信息。在一些实施例中,协处理器1238是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享缓存(未示出)可被包括在任一处理器1270、1280中,或者在两个处理器之外,但经由P-P互连与处理器连接,从而使得任一个或两个处理器的本地缓存信息在处理器被置于低功率模式中的情况下可被存储在该共享缓存中。
芯片组1290可经由接口1296耦合到第一互连1216。在一些实施例中,第一互连1216可以是外围组件互连(Peripheral Component Interconnect,PCI)互连,或者诸如快速PCI互连或另一I/O互连之类的互连。在一些实施例中,互连之一耦合到功率控制单元(power control unit,PCU)1217,它可包括电路、软件和/或固件,以执行关于处理器1270、1280和/或协处理器1238的功率管理操作。PCU 1217向电压调节器提供控制信息以使得电压调节器生成适当的调节电压。PCU 1217还提供控制信息以控制生成的操作电压。在各种实施例中,PCU 1217可包括多种功率管理逻辑单元(电路)来执行基于硬件的功率管理。这种功率管理可以是完全受处理器控制的(例如,由各种处理器硬件控制,并且可由工作负载和/或功率约束、热约束或其他处理器约束所触发),和/或功率管理可响应于外部源(例如,平台或功率管理源或系统软件)而被执行。
PCU 1217被图示为作为与处理器1270和/或处理器1280分开的逻辑存在。在其他情况下,PCU 1217可在处理器1270或1280的核心(未示出)中的给定的一个或多个上执行。在一些情况下,PCU 1217可被实现为被配置为执行其自己的专用功率管理代码(有时称为P代码)的微控制器(专用或通用)或者其他控制逻辑。在另外的其他实施例中,PCU 1217要执行的功率管理操作可被实现在处理器外部,例如借由单独的功率管理集成电路(powermanagement integrated circuit,PMIC)或者在处理器外部的另一组件来实现。在另外的其他实施例中,PCU 1217要执行的功率管理操作可被实现在BIOS或其他系统软件内。
各种I/O设备1214可耦合到第一互连1216,以及将第一互连1216耦合到第二互连1220的互连(总线)桥1218。在一些实施例中,一个或多个额外的处理器1215,例如协处理器、高吞吐量MIC处理器、GPGPU、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列(FPGA)、或者任何其他处理器,耦合到第一互连1216。在一些实施例中,第二互连1220可以是低引脚数(low pin count,LPC)互连。各种设备可耦合到第二互连1220,包括例如键盘和/或鼠标1222、通信设备1227、和存储单元电路1228。存储单元电路1228可以是盘驱动器或其他大容量存储设备,在一些实施例中,它可包括指令/代码和数据1230。另外,音频I/O 1224可耦合到第二互连1220。注意,除了上述的点到点体系结构以外其他体系结构也是可能的。例如,取代点到点体系结构,诸如多处理器系统1200之类的系统可实现多点分支互连或者其他这种体系结构。
示例性核心体系结构、处理器和计算机体系结构
可以按不同的方式、为了不同的目的、在不同的处理器中实现处理器核心。例如,这种核心的实现方式可包括:1)打算用于通用计算的通用有序核心;2)打算用于通用计算的高性能通用无序核心;3)主要打算用于图形和/或科学(吞吐量)计算的专用核心。不同处理器的实现方式可包括:1)包括打算用于通用计算的一个或多个通用有序核心和/或打算用于通用计算的一个或多个通用无序核心的CPU;以及2)包括主要打算用于图形和/或科学(吞吐量)的一个或多个专用核心的协处理器。这样的不同处理器导致不同的计算机系统体系结构,这些体系结构可包括:1)协处理器在与CPU分开的芯片上;2)协处理器在与CPU相同的封装中、分开的管芯上;3)协处理器与CPU在同一管芯上(在此情况下,这种协处理器有时被称为专用逻辑,例如集成图形和/或科学(吞吐量)逻辑,或者被称为专用核心);以及4)片上系统,其可在与所描述的CPU(有时称为(一个或多个)应用核心或者(一个或多个)应用处理器)相同的管芯上包括上述的协处理器以及额外的功能。接下来描述示例性核心体系结构,然后是对示例性处理器和计算机体系结构的描述。
图13图示了处理器1300的实施例的框图,该处理器可具有多于一个核心,可具有集成的存储器控制器,并且可具有集成的图形。实线框图示了具有单个核心1302A、系统代理1310和一组一个或多个互连控制器单元电路1316的处理器1300,而虚线框的可选添加图示了具有多个核心1302(A)-(N)、系统代理单元电路1310中的一组一个或多个集成存储器控制单元电路1314和专用逻辑1308以及一组一个或多个互连控制器单元电路1316的替换处理器1300。注意处理器1300可以是图12的处理器1270或1280或者协处理器1238或1215之一。
从而,处理器1300的不同实现方式可包括:1)其中专用逻辑1308是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核心,未示出),并且核心1302(A)-(N)是一个或多个通用核心(例如,通用有序核心、通用无序核心、或者两者的组合)的CPU;2)其中核心1302(A)-(N)是大量的主要打算用于图形和/或科学(吞吐量)的专用核心的协处理器;以及3)其中核心1302(A)-(N)是大量的通用有序核心的协处理器。从而,处理器1300可以是通用处理器、协处理器或者专用处理器,例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元电路)、高吞吐量集成众核(many integrated core,MIC)协处理器(包括30个或更多个核心)、嵌入式处理器,等等。处理器可被实现在一个或多个芯片上。处理器1300可以是一个或多个衬底的一部分和/或可利用若干个工艺技术中的任何一者被实现在一个或多个衬底上,这些技术例如是BiCMOS、CMOS或NMOS。
存储器层次体系包括核心1302(A)-(N)内的一级或多级缓存单元电路1304(A)-(N)、一组或一个或多个共享缓存单元电路1306、以及耦合到该组集成存储器控制器单元电路1314的外部存储器(未示出)。该组一个或多个共享缓存单元电路1306可包括一个或多个中间级别缓存(例如第2级(L2)、第3级(L3)、第4级(4)或者其他级别的缓存),比如最后一级缓存(last level cache,LLC),和/或这些的组合。虽然在一些实施例中基于环的互连网络电路1312互连专用逻辑1308(例如,集成图形逻辑)、该组共享缓存单元电路1306和系统代理单元电路1310,但替换实施例使用任何数目的公知技术来互连这种单元。在一些实施例中,在共享缓存单元电路1306中的一个或多个和核心1302(A)-(N)之间维持一致性。
在一些实施例中,核心1302(A)-(N)中的一个或多个能够进行多线程处理。系统代理单元电路1310包括协调和操作核心1302(A)-(N)的那些组件。系统代理单元电路1310可包括例如功率控制单元(power control unit,PCU)电路和/或显示单元电路(未示出)。PCU可以是或者可以包括调节核心1302(A)-(N)和/或专用逻辑1308(例如,集成图形逻辑)的功率状态所需要的逻辑和组件。显示单元电路用于驱动一个或多个在外部连接的显示器。
核心1302(A)-(N)就体系结构指令集而言可以是同构的或者异构的;也就是说,核心1302(A)-(N)中的两个或更多个可能够执行同一指令集,而其他核心可能够只执行该指令集的子集或者不同的指令集。
示例性核心体系结构
有序和无序核心框图
图14(A)是根据本公开的实施例图示出示例性有序流水线和示例性寄存器重命名、无序发出/执行流水线两者的框图。图14(B)是根据本公开的实施例图示出要被包括在处理器中的有序体系结构核心的示例性实施例和示例性寄存器重命名、无序发出/执行体系结构核心两者的框图。图14(A)-14(B)中的实线框图示了有序流水线和有序核心,而虚线框的可选添加图示了寄存器重命名、无序发出/执行流水线和核心。考虑到有序方面是无序方面的子集,将描述无序方面。
在图14(A)中,处理器流水线1400包括取得级1402、可选的长度解码级1404、解码级1406、可选的分配级1408、可选的重命名级1410、调度(也称为调遣或发出)级1412、可选的寄存器读取/存储器读取级1414、执行级1416、写回/存储器写入级1418、可选的异常处理级1422、以及可选的提交级1424。在这些处理器流水线级的每一者中可执行一个或多个操作。例如,在取得级1402期间,从指令存储器取得一个或多个指令,在解码级1406期间,可以对取得的一个或多个指令进行解码,可以生成使用转发寄存器端口的地址(例如,加载存储单元(load store unit,LSU)地址),并且可以执行分支转发(例如,立即数偏移或者链接寄存器(link register,LR))。在一个实施例中,解码级1406和寄存器读取/存储器读取级1414可以被组合到一个流水线级中。在一个实施例中,在执行级1416期间,可以执行解码的指令,可以执行到高级微控制器总线(Advanced Microcontroller Bus,AHB)接口的LSU地址/数据流水线化,可以执行乘法和加法操作,可以执行具有分支结果的算术操作,等等。
作为示例,示例性寄存器重命名、无序发出/执行核心体系结构可实现流水线1400如下:1)指令取得1438执行取得和长度解码级1402和1404;2)解码单元电路1440执行解码级1406;3)重命名/分配器单元电路1452执行分配级1408和重命名级1410;4)调度器单元电路1456执行调度级1412;5)物理寄存器文件单元电路1458和存储器单元电路1470执行寄存器读取/存储器读取级1414;执行集群1460执行执行级1416;6)存储器单元电路1470和物理寄存器文件单元电路1458执行写回/存储器写入级1418;7)在异常处理级1422中可涉及各种单元(单元电路);并且8)引退单元电路1454和物理寄存器文件单元电路1458执行提交级1424。
图14(B)示出了处理器核心1490包括耦合到执行引擎单元电路1450的前端单元电路1430,并且两者都耦合到存储器单元电路1470。核心1490可以是精简指令集计算(reduced instruction set computing,RISC)核心、复杂指令集计算(complexinstruction set computing,CISC)核心、超长指令字(very long instruction word,VLIW)核心、或者混合或替换核心类型。作为另外一个选项,核心1490可以是专用核心,例如,网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(general purposecomputing graphics processing unit,GPGPU)核心、图形核心,等等。
前端单元电路1430可包括分支预测单元电路1432,其耦合到指令缓存单元电路1434,指令缓存单元电路1434耦合到指令转化后备缓冲器(translation lookasidebuffer,TLB)1436,指令TLB 1436耦合到指令取得单元电路1438,指令取得单元电路1438耦合到解码单元电路1440。在一个实施例中,指令缓存单元电路1434被包括在存储器单元电路1470中,而不是前端单元电路1430。解码单元电路1440(或解码器)可对指令解码,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或者其他控制信号作为输出,这些微操作、微代码入口点、微指令、其他指令或者其他控制信号是从原始指令解码来的,或者以其他方式反映原始指令,或者是从原始指令得出的。解码单元电路1440可还包括地址生成单元电路(AGU,未示出)。在一个实施例中,AGU使用转发的寄存器端口来生成LSU地址,并且可进一步执行分支转发(例如,立即数偏移分支转发,LR寄存器分支转发,等等)。可利用各种不同的机制来实现解码单元电路1440。适当机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(programmable logic array,PLA)、微代码只读存储器(read onlymemory,ROM),等等。在一个实施例中,核心1490包括微代码ROM(未示出)或其他介质,其为某些宏指令存储微代码(例如,在解码单元电路1440中或者以其他方式在前端单元电路1430内)。在一个实施例中,解码单元电路1440包括微操作(micro-op)或操作缓存(未示出),以保持/缓存在解码或处理器流水线1400的其他级期间生成的经解码的操作、微标记或微操作。解码单元电路1440可耦合到执行引擎单元电路1450中的重命名/分配器单元电路1452。
执行引擎电路1450包括重命名/分配器单元电路1452,其耦合到引退单元电路1454和一组一个或多个调度器电路1456。调度器电路1456表示任何数目的不同调度器,包括预留站、中央指令窗口,等等。在一些实施例中,调度器电路1456可包括算术逻辑单元(arithmetic logic unit,ALU)调度器/调度电路、ALU队列、算术生成单元(arithmeticgeneration unit,AGU)调度器/调度电路、AGU队列,等等。调度器电路1456耦合到物理寄存器文件电路1458。物理寄存器文件电路1458的每一者表示一个或多个物理寄存器文件,这些物理寄存器文件中的不同物理寄存器文件存储一个或多个不同的数据类型,例如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针),等等。在一个实施例中,物理寄存器文件单元电路1458包括向量寄存器单元电路、写入掩码(writemask)寄存器单元电路、以及标量寄存器单元电路。这些寄存器单元可提供体系结构式向量寄存器、向量掩码寄存器、通用寄存器,等等。物理寄存器文件单元电路1458与引退单元电路1454(也称为退役队列或引退队列)重叠以说明可用来实现寄存器重命名和无序执行的各种方式(例如,利用(一个或多个)重排序缓冲器(reorder buffer,ROB)和(一个或多个)引退寄存器文件;利用(一个或多个)未来文件、(一个或多个)历史缓冲器、以及(一个或多个)引退寄存器文件;利用寄存器图谱和寄存器的池;等等)。引退单元电路1454和物理寄存器文件电路1458耦合到(一个或多个)执行集群1460。(一个或多个)执行集群1460包括一组一个或多个执行单元电路1462和一组一个或多个存储器访问电路1464。执行单元电路1462可在各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)上执行各种算术、逻辑、浮点或其他类型的操作(例如,移位、加法、减法、乘法)。虽然一些实施例可包括专用于特定功能或功能集合的若干个执行单元或执行单元电路,但其他实施例可只包括一个执行单元电路或者全部执行所有功能的多个执行单元/执行单元电路。调度器电路1456、物理寄存器文件单元电路1458、以及(一个或多个)执行集群1460被示为可能是多个,因为某些实施例为某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线和/或存储器访问流水线,它们各自具有其自己的调度器电路、物理寄存器文件单元电路和/或执行集群—并且在单独的存储器访问流水线的情况下,实现了某些实施例,其中只有此流水线的执行集群具有存储器访问单元电路1464)。还应当理解,在使用分开流水线的情况下,这些流水线中的一个或多个可以是无序发出/执行,并且其余的是有序的。
在一些实施例中,执行引擎单元电路1450可以执行到高级微控制器总线(AHB)接口(未示出)的加载存储单元(LSU)地址/数据流水线化,以及地址级和写回、数据级加载、存储、以及分支。
存储器访问电路1464的集合耦合到存储器单元电路1470,存储器单元电路1470包括数据TLB单元电路1472,数据TLB单元电路1472耦合到数据缓存电路1474,数据缓存电路1474耦合到第2级(L2)缓存电路1476。在一个示例性实施例中,存储器访问单元电路1464可包括加载单元电路、存储地址单元电路、以及存储数据单元电路,它们中的每一者耦合到存储器单元电路1470中的数据TLB电路1472。指令缓存电路1434进一步耦合到存储器单元电路1470中的第2级(L2)缓存单元电路1476。在一个实施例中,指令缓存1434和数据缓存1474在L2缓存单元电路1476、第3级(L3)缓存单元电路(未示出)和/或主存储器中被组合成单个指令和数据缓存(未示出)。L2缓存单元电路1476耦合到一个或多个其他级别的缓存并且最终耦合到主存储器。
核心1490可支持一个或多个指令集(例如,x86指令集(带有已随着较新版本添加的一些扩展);MIPS指令集;ARM指令集(带有可选的额外扩展,例如NEON)),包括本文描述的(一个或多个)指令。在一个实施例中,核心1490包括逻辑来支持紧缩数据指令集扩展(例如,AVX1、AVX2),从而允许了被许多多媒体应用使用的操作被利用紧缩数据来执行。
示例性执行单元电路
图15图示了执行单元电路的实施例,例如图14(B)的执行单元电路1462。如图所示,执行单元电路1462可包括一个或多个ALU电路1501、向量/SIMD单元电路1503、加载/存储单元电路1505、和/或分支/跳转单元电路1507。ALU电路1501执行整数算术和/或布尔操作。向量/SIMD单元电路1503对紧缩数据(例如,SIMD/向量寄存器)执行向量/SIMD操作。加载/存储单元电路1505执行加载和存储指令,以将数据从存储器加载到寄存器中,或者从寄存器存储到存储器。加载/存储单元电路1505也可以生成地址。分支/跳转单元电路1507依据指令引起到某个存储器地址的分支或跳转。浮点单元(floating-point unit,FPU)电路1509执行浮点算术。执行单元电路1462的宽度依据实施例而有所不同,并且可以在从16比特到1024比特的范围中。在一些实施例中,两个或更多个更小的执行单元被从逻辑上组合以形成更大的执行单元(例如,两个128比特执行单元被从逻辑上组合以形成256比特执行单元)。
示例性寄存器体系结构
图16是根据一些实施例的寄存器体系结构1600的框图。如图所示,存在向量/SIMD寄存器1610,其宽度从128比特到1024比特不等。在一些实施例中,向量/SIMD寄存器1610在物理上是512比特的,并且取决于映射,只有一些低位比特被使用。例如,在一些实施例中,向量/SIMD寄存器1610是512比特的ZMM寄存器:低位256比特被用于YMM寄存器,并且低位128比特被用于XMM寄存器。因此,存在寄存器的覆盖。在一些实施例中,向量长度字段在最大长度和一个或多个其他更短的长度之间做出选择,其中每个这种更短长度是前一长度的一半长度。标量操作是在ZMM/YMM/XMM寄存器中的最低阶数据要素位置上执行的操作;更高阶数据要素位置或者被保持与其在该指令之前相同,或者被归零,这取决于实施例。
在一些实施例中,寄存器体系结构1600包括写入掩码/谓词(predicate)寄存器1615。例如,在一些实施例中,有8个写入掩码/谓词寄存器(有时称为k0至k7),其中每一者是16比特、32比特、64比特或128比特大小的。写入掩码/谓词寄存器1615可以允许合并(例如,允许目的地中的任何要素集合在任何操作的执行期间免受更新)和/或归零(例如,归零向量掩码允许了目的地中的任何要素集合在任何操作的执行期间被归零)。在一些实施例中,给定的写入掩码/谓词寄存器1615中的每个数据要素位置对应于目的地的一个数据要素位置。在其他实施例中,写入掩码/谓词寄存器1615是可缩放的,并且由给定向量要素的设定数目的使能比特组成(例如,每个64比特向量要素有8个使能比特)。
寄存器体系结构1600包括多个通用寄存器1625。这些寄存器可以是16比特、32比特、64比特等等,并且可被用于标量操作。在一些实施例中,这些寄存器被用名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8至R15来引用。
在一些实施例中,寄存器体系结构1600包括标量浮点寄存器1645,它被用于使用x87指令集扩展的32/64/80比特浮点数据上的标量浮点操作,或者作为MMX寄存器,来对64比特紧缩整数数据执行操作,以及为MMX和XMM寄存器之间执行的一些操作保存操作对象。
一个或多个标志寄存器1640(例如,EFLAGS,RFLAGS,等等)存储状态和控制信息,用于算术、比较和系统操作。例如,一个或多个标志寄存器1640可以存储条件代码信息,例如进位、奇偶性、辅助进位、零、符号、以及溢出。在一些实施例中,一个或多个标志寄存器1640被称为程序状态和控制寄存器。
片段寄存器1620包含用于访问存储器的片段点。在一些实施例中,这些寄存器由名称CS、DS、SS、ES、FS和GS来称呼。
机器特定寄存器(machine-specific register,MSR)1635控制和报告处理器性能。大多数MSR 1635处理与系统有关的功能,并且是应用程序不可访问的。机器检查寄存器1660由用于检测和报告硬件差错的控制、状态和差错报告MSR组成。
一个或多个指令指针寄存器1630存储指令指针值。(一个或多个)控制寄存器1655(例如,CR0-CR4)确定处理器(例如,处理器1270、1280、1238、1215和/或1300)的操作模式和当前执行任务的特性。调试寄存器1650控制并允许监视处理器或核心的调试操作。
存储器管理寄存器1665指定用于保护模式存储器管理中的数据结构的位置。这些寄存器可包括GDTR、IDRT、任务寄存器、以及LDTR寄存器。
本公开的替换实施例可使用更宽或更窄的寄存器。此外,本公开的替换实施例可使用更多、更少或不同的寄存器文件和寄存器。
指令集
指令集体系结构(instruction set architecture,ISA)可包括一个或多个指令格式。给定的指令格式可定义各种字段(例如,比特的数目、比特的位置)来指定要执行的操作(例如,操作码)和要在其上执行该操作的(一个或多个)操作对象和/或其他(一个或多个)数据字段(例如,掩码),等等。一些指令格式通过指令模板(或子格式)的定义被进一步分解。例如,给定的指令格式的指令模板可被定义为具有该指令格式的字段的不同子集(包括的字段通常是按相同顺序的,但至少一些具有不同的比特位置,因为包括的字段更少)和/或被定义为具有以不同方式被解读的给定字段。从而,ISA的每个指令是利用给定的指令格式来表达的(并且如果定义了的话,以该指令格式的指令模板中的给定一个指令模板来表达)并且包括用于指定操作和操作对象的字段。例如,示例性ADD指令具有特定的操作码和指令格式,该指令格式包括操作码字段来指定该操作码并且包括操作对象字段来选择操作对象(源1/目的地和源2);并且此ADD指令在指令流中的出现将在选择特定操作对象的操作对象字段中具有特定内容。
示例性指令格式
可按不同的格式来实现本文描述的(一个或多个)指令的实施例。此外,下文详述了示例性系统、体系结构和流水线。(一个或多个)指令的实施例可在这种系统、体系结构和流水线上被执行,但不限于详述的那些。
图17图示了指令格式的实施例。如图所示,指令可包括多个组件,包括但不限于一个或多个字段,用于:一个或多个前缀1701、操作码1703、寻址信息1705(例如,寄存器标识符、存储器寻址信息,等等)、位移值1707、和/或立即数1709。注意,一些指令利用了该格式的一些或所有字段,而其他指令可能只使用操作码1703的字段。在一些实施例中,图示的顺序是这些字段要被编码的顺序,然而,应当明白,在其他实施例中,这些字段可被以不同的顺序来编码、被组合,等等。
(一个或多个)前缀字段1701当被使用时会修改指令。在一些实施例中,一个或多个前缀被用于重复字符串指令(例如,0xF0、0xF2、0xF3,等等),以提供片段覆盖(例如,0x2E、0x36、0x3E、0x26、0x64、0x65、0x2E、0x3E,等等),以执行总线锁定操作,和/或改变操作对象(例如,0x66)和地址大小(例如,0x67)。某些指令要求强制性的前缀(例如,0x66、0xF2、0xF3,等等)。这些前缀中的某些可能被认为是“传统”前缀。其他前缀——其一个或多个示例在此详述——表明和/或提供了进一步的能力,例如指定特定的寄存器,等等。其他前缀通常在“传统”前缀之后。
操作码字段1703被用于至少部分地定义在指令解码时要执行的操作。在一些实施例中,在操作码字段1703中编码的主操作码的长度为1、2或3个字节。在其他实施例中,主操作码可以是不同的长度。额外的3比特操作码字段有时被编码在另一个字段中。
寻址字段1705被用于寻址指令的一个或多个操作对象,例如存储器中的位置或者一个或多个寄存器。图18图示了寻址字段1705的实施例。在这个图示中,示出了可选的ModR/M字节1802和可选的缩放比例、索引、基址(Scale,Index,Base,SIB)字节1804。ModR/M字节1802和SIB字节1804被用于编码一指令的多达两个操作对象,每个操作对象是直接寄存器或有效存储器地址。注意,这些字段中的每一者是可选的,即,不是所有的指令都包括这些字段中的一个或多个。MOD R/M字节1802包括MOD字段1842、寄存器字段1844、和R/M字段1846。
MOD字段1842的内容区分存储器访问和非存储器访问模式。在一些实施例中,当MOD字段1842的值为b11时,就利用了寄存器直接寻址模式,否则就使用寄存器间接寻址。
寄存器字段1844可编码目的地寄存器操作对象或者源寄存器操作对象,或者可编码操作码扩展,并且可不被用于编码任何指令操作对象。寄存器索引字段1844的内容直接指定或者通过地址生成指定源或目的地操作对象的位置(在寄存器中或者在存储器中)。在一些实施例中,寄存器字段1844被补充以来自前缀(例如,前缀1701)的额外比特,以允许更大的寻址。
R/M字段1846可被用于编码引用存储器地址的指令操作对象,或者可被用于编码目的地寄存器操作对象或源寄存器操作对象。注意R/M字段1846在一些实施例中可被与MOD字段1842相组合以规定寻址模式。
SIB字节1804包括缩放比例字段1852、索引字段1854、以及基址字段1856,以用于地址的生成。缩放比例字段1852指示缩放因子。索引字段1854指定要使用的索引寄存器。在一些实施例中,索引字段1854被补充以来自前缀(例如,前缀1701)的额外比特,以允许更大的寻址。基址字段1856指定了要使用的基址寄存器。在一些实施例中,基址字段1856被补充以来自前缀(例如,前缀1701)的额外比特,以允许更大的寻址。在实践中,缩放比例字段1852的内容允许了缩放索引字段1854的内容以进行存储器地址生成(例如,对于使用2缩放比例*索引+基址的地址生成)。
一些寻址形式利用位移值来生成存储器地址。例如,可以根据2缩放比例*索引+基址+位移、索引*缩放比例+位移、r/m+位移、指令指针(RIP/EIP)+位移、寄存器+位移等等来生成存储器地址。该位移可以是1字节、2字节、4字节等等的值。在一些实施例中,位移字段1707提供这个值。此外,在一些实施例中,在寻址字段1705的MOD字段中编码了位移因子用法,其表明压缩位移方案,对于该方案,位移值是通过将disp8与缩放因子N结合相乘来计算的,该缩放因子N是基于向量长度、b比特的值和指令的输入要素大小而确定的。该位移值被存储在位移字段1707中。
在一些实施例中,立即数字段1709为指令指定立即数。立即数可以被编码为1字节值、2字节值、4字节值,等等。
图19图示了第一前缀1701(A)的实施例。在一些实施例中,第一前缀1701(A)是REX前缀的实施例。使用这个前缀的指令可以指定通用寄存器、64比特紧缩数据寄存器(例如,单指令、多数据(single instruction,multiple data,SIMD)寄存器或向量寄存器)、和/或控制寄存器和调试寄存器(例如,CR8-CR15和DR8-DR15)。
使用第一前缀1701(A)的指令可以使用3比特字段指定最多达三个寄存器,这取决于格式:1)使用Mod R/M字节1802的reg字段1844和R/M字段1846;2)使用Mod R/M字节1802与SIB字节1804,包括使用reg字段1844和基址字段1856和索引字段1854;或者3)使用操作码的寄存器字段。
在第一前缀1701(A)中,比特位置7:4被设置为0100。比特位置3(W)可被用于确定操作对象大小,但可能不会单独确定操作对象宽度。因此,当W=0时,操作对象大小由代码段描述符(code segment descriptor,CS.D)决定,而当W=1时,操作对象大小为64比特。
注意,添加另一个比特则允许了寻址16(24)个寄存器,而单独的MOD R/M reg字段1844和MOD R/M R/M字段1846各自只能寻址8个寄存器。
在第一前缀1701(A)中,比特位置2(R)可以是MOD R/M reg字段1844的扩展,并且当该字段编码通用寄存器、64比特紧缩数据寄存器(例如,SSE寄存器)或者控制或调试寄存器时,可被用来修改ModR/M reg字段1844。当Mod R/M字节1802指定其他寄存器或定义扩展操作码时,R被忽略。
比特位置1(X)X比特可以修改SIB字节索引字段1854。
比特位置B(B)B可以修改Mod R/M R/M字段1846中的基址或SIB字节基址字段1856;或者它可以修改用于访问通用寄存器(例如,通用寄存器1625)的操作码寄存器字段。
图20(A)-(D)图示了如何使用第一前缀1701(A)的R、X和B字段的实施例。图20(A)图示了当SIB字节1804不被用于存储器寻址时,来自第一前缀1701(A)的R和B被用来扩展MOD R/M字节1802的reg字段1844和R/M字段1846。图20(B)图示了当不使用SIB字节1804时,来自第一前缀1701(A)的R和B被用来扩展MOD R/M字节1802的reg字段1844和R/M字段1846(寄存器-寄存器寻址)。图20(C)图示了当SIB字节1804被用于存储器寻址时,来自第一前缀1701(A)的R、X和B被用于扩展MOD R/M字节1802的reg字段1844以及索引字段1854和基址字段1856。图20(D)图示了当寄存器被编码在操作码1703中时来自第一前缀1701(A)的B被用来扩展MOD R/M字节1802的reg字段1844。
图21(A)-(B)图示了第二前缀1701(B)的实施例。在一些实施例中,第二前缀1701(B)是VEX前缀的实施例。第二前缀1701(B)编码允许了指令具有多于两个操作对象,并且允许了SIMD向量寄存器(例如,向量/SIMD寄存器1610)长于64比特(例如,128比特和256比特)。第二前缀1701(B)的使用提供了三操作对象(或更多)的语法。例如,先前的两操作对象指令执行比如A=A+B之类的操作,这覆写了源操作对象。对第二前缀1701(B)的使用使得操作对象能够执行非破坏性操作,例如A=B+C。
在一些实施例中,第二前缀1701(B)有两种形式——两字节形式和三字节形式。两字节的第二前缀1701(B)被主要用于128比特、标量和一些256比特指令;而三字节的第二前缀1701(B)提供了对第一前缀1701(A)的紧凑替换和3字节操作码指令。
图21(A)图示了第二前缀1701(B)的两字节形式的实施例。在一个示例中,格式字段2101(字节0 2103)包含值C5H。在一个示例中,字节12105在比特[7]中包括“R”值。这个值是第一前缀1701(A)的相同值的补码。比特[2]被用来规定向量的长度(L)(其中0的值是标量或者128比特向量,而1的值是256比特向量)。比特[1:0]提供等同于一些传统前缀的操作码外延性(例如,00=无前缀,01=66H,10=F3H,并且11=F2H)。被示为vvvv的比特[6:3]可被用于:1)编码以反转(反码)形式指定的第一源寄存器操作对象,并且对于具有2个或更多个源操作对象的指令是有效的;2)编码对于某些向量移位以反码形式指定的目的地寄存器操作对象;或者3)不编码任何操作对象,该字段被保留并且应当包含某个值,例如1111b。
使用这个前缀的指令可以使用Mod R/M R/M字段1846来编码引用存储器地址的指令操作对象,或者编码目的地寄存器操作对象或源寄存器操作对象。
使用这个前缀的指令可以使用Mod R/M reg字段1844来编码目的地寄存器操作对象或者源寄存器操作对象,被作为操作码扩展来对待,而不被用于编码任何指令操作对象。
对于支持四个操作对象的指令语法,vvvv,Mod R/M R/M字段1846和Mod R/M reg字段1844编码了四个操作对象中的三个。然后立即数1709的比特[7:4]被用来编码第三源寄存器操作对象。
图21(B)图示了第二前缀1701(B)的三字节形式的实施例。在一个示例中,格式字段2111(字节0 2113)包含值C4H。字节1 2115在比特[7:5]中包括“R”、“X”和“B”,它们是第一前缀1701(A)的相同值的补码。字节1 2115的比特[4:0](示为mmmmm)包括内容来根据需要编码一个或多个隐含的前导操作码字节。例如,00001意味着0FH前导操作码,00010意味着0F38H前导操作码,00011意味着前导0F3AH操作码,等等。
字节2 2117的比特[7]与第一前缀1701(A)的W被类似地使用,包括帮助确定可提升的操作对象大小。比特[2]被用来规定向量的长度(L)(其中0的值是标量或者128比特向量,而1的值是256比特向量)。比特[1:0]提供等同于一些传统前缀的操作码外延性(例如,00=无前缀,01=66H,10=F3H,并且11=F2H)。被示为vvvv的比特[6:3]可被用于:1)编码以反转(反码)形式指定的第一源寄存器操作对象,并且对于具有2个或更多个源操作对象的指令是有效的;2)编码对于某些向量移位以反码形式指定的目的地寄存器操作对象;或者3)不编码任何操作对象,该字段被保留并且应当包含某个值,例如1111b。
使用这个前缀的指令可以使用Mod R/M R/M字段1846来编码引用存储器地址的指令操作对象,或者编码目的地寄存器操作对象或源寄存器操作对象。
使用这个前缀的指令可以使用Mod R/M reg字段1844来编码目的地寄存器操作对象或者源寄存器操作对象,被作为操作码扩展来对待,而不被用于编码任何指令操作对象。
对于支持四个操作对象的指令语法,vvvv,Mod R/M R/M字段1846和Mod R/M reg字段1844编码了四个操作对象中的三个。然后立即数1709的比特[7:4]被用来编码第三源寄存器操作对象。
图22图示了第三前缀1701(C)的实施例。在一些实施例中,第一前缀1701(A)是EVEX前缀的实施例。第三前缀1701(C)是四字节前缀。
第三前缀1701(C)可以在64比特模式中编码32个向量寄存器(例如,128比特、256比特和512比特寄存器)。在一些实施例中,利用写入掩码/操作掩码(opmask)(见先前图中对于寄存器的论述,例如图16)或预测的指令利用这个前缀。操作掩码寄存器允许了条件处理或选择控制。操作掩码指令——其源/目的地操作对象是操作掩码寄存器并且将操作掩码寄存器的内容视为单个值——是使用第二前缀1701(B)来编码的。
第三前缀1701(C)可以编码指令类所特定的功能(例如,具有“加载+操作”语义的紧缩指令可以支持嵌入式广播功能,具有舍入语义的浮点指令可以支持静态舍入功能,具有非舍入算术语义的浮点指令可以支持“抑制所有异常”功能,等等)。
第三前缀1701(C)的第一字节是格式字段2211,它在一个示例中具有62H的值。随后的字节被称为有效载荷字节2215-2219,并且共同形成P[23:0]的24比特值,以一个或多个字段的形式提供特定的能力(在此详述)。
在一些实施例中,有效载荷字节2219的P[1:0]与低位的两个mmmmm比特相同。在一些实施例中,P[3:2]被保留。比特P[4](R’)在与P[7]和ModR/M reg字段1844相组合时允许了访问高16向量寄存器集合。当不需要SIB类型寻址时,P[6]也可提供对高16向量寄存器的访问。P[7:5]由R、X和B构成,它们是向量寄存器、通用寄存器、存储器寻址的操作对象指定符修饰符比特,并且当与ModR/M寄存器字段1844和ModR/M R/M字段1846相组合时,允许了访问低8个寄存器之外的下一组8个寄存器。P[9:8]提供等同于一些传统前缀的操作码外延性(例如,00=无前缀,01=66H,10=F3H,并且11=F2H)。P[10]在一些实施例中是固定值1。被示为vvvv的P[14:11]可被用于:1)编码以反转(反码)形式指定的第一源寄存器操作对象,并且对于具有2个或更多个源操作对象的指令是有效的;2)编码对于某些向量移位以反码形式指定的目的地寄存器操作对象;或者3)不编码任何操作对象,该字段被保留并且应当包含某个值,例如1111b。
P[15]类似于第一前缀1701(A)和第二前缀1711(B)的W,并且可以作为操作码扩展比特或操作对象大小提升。
P[18:16]指定操作掩码(写入掩码)寄存器(例如,写入掩码/谓词寄存器1615)中的寄存器的索引。在本公开的一个实施例中,特定值aaa=000具有特殊行为,暗示着没有操作掩码被用于特定指令(这可按多种方式来实现,包括使用硬连线到全一的操作掩码或者绕过掩蔽硬件的硬件)。当合并时,向量掩码允许了目的地中的任何要素集合被保护免于在(由基本操作和增强操作指定的)任何操作的执行期间的更新;在其他的一个实施例中,保留目的地的相应的掩码比特具有0的每个要素的旧值。与之不同,归零向量掩码允许了目的地中的任何要素集合在(由基本操作和增强操作指定的)任何操作的执行期间被归零;在一个实施例中,目的地的要素在相应的掩码比特具有0值时被设置到0。这个功能的子集是控制被执行的操作的向量长度(即,被修改的要素的跨度,从第一个到最后一个)的能力;然而,被修改的要素不是必须要连续。从而,操作掩码字段允许了部分向量操作,包括加载、存储、算术、逻辑,等等。虽然描述了其中操作掩码字段的内容选择若干个操作掩码寄存器中包含要使用的操作掩码的那一个(从而操作掩码字段的内容间接标识要执行的该掩蔽)的本公开实施例,但替换实施例作为替代或附加允许掩码写入字段的内容直接指定要执行的掩蔽。
P[19]可以与P[14:11]相组合,来以非破坏性源语法编码第二源向量寄存器,该语法可以使用P[19]来访问高16个向量寄存器。P[20]编码多种功能,这些功能在不同类别的指令中有所不同,并且可影响向量长度/舍入控制指定符字段(P[22:21])的含义。P[23]表明对合并-写入掩蔽的支持(例如,当被设置为0时)或者对归零和合并-写入掩蔽的支持(例如,当被设置为1时)。
在下面的表格中详述了在使用第三前缀1701(C)的指令中对寄存器的编码的示例性实施例。
表格1:64比特模式中的32寄存器支持
表格2:32比特模式中的编码寄存器指定符
表格3:操作掩码寄存器指定符编码
程序代码可被应用到输入指令以执行本文描述的功能并且生成输出信息。输出信息可按已知的方式被应用到一个或多个输出设备。对于本申请而言,处理系统包括任何具有处理器的系统,例如数字信号处理器(digital signal processor,DSP)、微控制器、专用集成电路(application specific integrated circuit,ASIC)、或者微处理器。
可以用高级别过程式或面向对象的编程语言来实现程序代码以与处理系统进行通信。如果希望,也可以用汇编或机器语言来实现程序代码。实际上,本文描述的机制在范围上不限于任何特定的编程语言。在任何情况下,该语言可以是经编译或者经解译的语言。
可以用硬件、软件、固件或者这种实现方案的组合来实现本文公开的机制的实施例。本公开的实施例可被实现为在包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备的可编程系统上执行的计算机程序或程序代码。
至少一个实施例的一个或多个方面可由被存储在机器可读介质上的表示处理器内的各种逻辑的代表性指令来实现,这些代表性指令当被机器读取时使得该机器制作逻辑来执行本文描述的技术。这种被称为“IP核心”的表现形式可被存储在有形机器可读介质上并且被提供到各种客户或制造设施以加载到实际制作该逻辑或处理器的制作机器中。
这种机器可读存储介质可包括但不限于由机器或设备制造或形成的物品的非暂态有形布置,包括诸如以下项之类的存储介质:硬盘,任何其他类型的盘(包括软盘、光盘、致密盘只读存储器(compact disk read-only memory,CD-ROM)、可改写致密盘(compactdisk rewritable,CD-RW)、以及磁光盘),半导体设备(诸如,只读存储器(read-onlymemory,ROM),诸如动态随机访问存储器(dynamic random access memory,DRAM)、静态随机访问存储器(static random access memory,SRAM)之类的随机访问存储器(randomaccess memory,RAM),可擦除可编程只读存储器(erasable programmable read-onlymemory,EPROM),闪速存储器,电可擦除可编程只读存储器(electrically erasableprogrammable read-only memory,EEPROM),相变存储器(phase change memory,PCM)),磁卡或光卡,或者适合用于存储电子指令的任何其他类型的介质。
因此,本公开的实施例还包括非暂态有形机器可读介质,其包含指令或者包含定义本文描述的结构、电路、装置、处理器和/或系统特征的设计数据,例如硬件描述语言(Hardware Description Language,HDL)。这种实施例也可被称为程序产品。
仿真(包括二进制转化、代码变形等等)
在一些情况下,指令转换器可被用于将指令从源指令集转换到目标指令集。例如,指令转换器可将指令转化(例如,利用静态二进制转化、包括动态编译的动态二进制转化)、变形、仿真或者以其他方式转换到要被核心处理的一个或多个其他指令。可以用软件、硬件、固件或者其组合来实现指令转换器。指令转换器可以在处理器上、在处理器外、或者一部分在处理器上一部分在处理器外。
图23是根据本公开的实施例与使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令相对比的框图。在图示的实施例中,指令转换器是软件指令转换器,虽然可替换地,可以用软件、固件、硬件或者其各种组合来实现指令转换器。图23示出了高级别语言2302的程序可被利用第一ISA编译器2304来编译以生成第一ISA二进制代码2306,第一ISA二进制代码2306可由具有至少一个第一指令集核心的处理器2316原生执行。具有至少一个第一ISA指令集核心的处理器2316表示任何这样的处理器:这种处理器可通过兼容地执行或以其他方式处理(1)第一ISA指令集核心的指令集的实质部分或者(2)目标为在具有至少一个第一ISA指令集核心的英特尔处理器上运行的应用或其他软件的目标代码版本,来执行与具有至少一个第一ISA指令集核心的处理器基本上相同的功能,以便实现与具有至少一个第一ISA指令集核心的处理器基本上相同的结果。第一ISA编译器2304表示可操作来生成第一ISA二进制代码2306(例如,目标代码)的编译器,第一ISA二进制代码2306在带有或不带有额外的链接处理的情况下可在具有至少一个第一ISA指令集核心的处理器2316上被执行。类似地,图23示出了高级别语言2302的程序可被利用替换指令集编译器2308来编译以生成替换指令集二进制代码2310,替换指令集二进制代码2310可由没有第一ISA指令集核心的处理器2314原生执行。指令转换器2312用于将第一ISA二进制代码2306转换成可由没有第一ISA指令集核心的处理器2314原生执行的代码。这个转换后的代码不太可能与替换指令集二进制代码2310相同,因为能够做到这一点的指令转换器是难以制作的;然而,转换后的代码将实现一般操作并且由来自替换指令集的指令构成。从而,指令转换器2312表示通过仿真、模拟或任何其他过程允许不具有第一ISA指令集处理器或核心的处理器或其他电子设备执行第一ISA二进制代码2306的软件、固件、硬件或者其组合。
示例性实施例包括但不限于:
1.一种系统,包括:
存储器电路;
存储器安全性引擎电路,来为要被存储在所述存储器电路中的多个加密压缩数据线中的每一个生成:
关于被用于每个压缩数据线的压缩的压缩元数据,
与每个压缩数据线相关联的差错纠正码(ECC)数据,所述ECC数据包括用于差错纠正和检测的第一层级的ECC数据和只用于差错纠正的第二层级的ECC数据,以及
与每个压缩数据线相关联的至少消息认证码,其中,所述压缩元数据和第二层级的ECC数据被与所述压缩数据线一起存储。
2.如示例1所述的系统,其中,所述存储器安全性引擎电路将采用基于AES的加密方案、利用压缩引擎来压缩所述压缩数据线。
3.如示例1所述的系统,其中,响应于对压缩数据线的读取请求,所述存储器安全性引擎电路接收所述压缩数据线、第一层级的ECC数据、以及与每个压缩数据线相关联的消息认证码,从所述压缩元数据确定使用的压缩,利用所述第一层级的ECC数据来检测任何差错,对所述压缩数据线进行解密,并且尝试利用所述消息认证码来验证所述压缩数据线。
4.如示例3所述的系统,其中,当所述压缩数据线未得到验证时,所述存储器安全性引擎电路通知安全性异常。
5.如示例3所述的系统,其中,当所述压缩数据线未得到验证时,所述存储器安全性引擎电路将经解密的压缩数据线发送到请求者。
6.如示例3所述的系统,其中,当检测到差错时,所述第二层级的ECC数据被从存储器取得,并且所述存储器安全性引擎电路利用所述第一层级的ECC数据和第二层级的ECC数据来纠正检测到的差错。
7.如示例1所述的系统,其中,响应于对压缩数据线的写入请求,所述存储器安全性引擎电路对于成功压缩的数据,对压缩数据进行加密,并且将经加密的压缩数据放置在缓存线中并且向存储器发出写入。
8.如示例1所述的系统,其中,响应于对压缩数据线的写入请求,所述存储器安全性引擎电路对于未成功压缩的数据,对未压缩数据进行加密,在经加密的未压缩数据上生成消息认证码,在经加密的未压缩数据上生成ECC,并且向存储器发出两个写入。
9.如示例1所述的系统,还包括:
存储器控制器,来从所述存储器电路读取和写入数据线。
10.如示例1所述的系统,其中,所述压缩数据的大小是384比特,所述压缩元数据的大小是64比特,并且所述第二层级的ECC数据的大小是64比特。
11.如示例1所述的系统,其中,所述存储器电路的至少真子集支持ECC。
12.一种装置,包括:
存储器安全性引擎电路,来为要被存储在存储器电路中的多个加密压缩数据线中的每一个生成:
关于被用于每个压缩数据线的压缩的压缩元数据,
与每个压缩数据线相关联的差错纠正码(ECC)数据,所述ECC数据包括用于差错纠正和检测的第一层级的ECC数据和只用于差错纠正的第二层级的ECC数据,以及
与每个压缩数据线相关联的至少消息认证码,其中,所述压缩元数据和第二层级的ECC数据被与所述压缩数据线一起存储;以及
存储器控制器,来从存储器读取数据线和向存储器写入数据线。
13.如示例12所述的装置,其中,所述存储器安全性引擎电路将采用基于AES的加密方案、利用压缩引擎来压缩所述压缩数据线。
14.如示例12所述的装置,其中,响应于对压缩数据线的读取请求,所述存储器安全性引擎电路接收所述压缩数据线、第一层级的ECC数据、以及与每个压缩数据线相关联的消息认证码,从所述压缩元数据确定使用的压缩,利用所述第一层级的ECC数据来检测任何差错,对所述压缩数据线进行解密,并且尝试利用所述消息认证码来验证所述压缩数据线。
15.如示例14所述的装置,其中,当所述压缩数据线未得到验证时,所述存储器安全性引擎电路通知安全性异常。
16.如示例14所述的装置,其中,当所述压缩数据线未得到验证时,所述存储器安全性引擎电路将经解密的压缩数据线发送到请求者。
17.如示例14所述的装置,其中,当检测到差错时,所述第二层级的ECC数据被从存储器取得,并且所述存储器安全性引擎电路利用所述第一层级的ECC数据和第二层级的ECC数据来纠正检测到的差错。
18.如示例12所述的装置,其中,响应于对压缩数据线的写入请求,所述存储器安全性引擎电路对于成功压缩的数据,对压缩数据进行加密,并且将经加密的压缩数据放置在缓存线中并且向存储器发出写入。
19.如示例12所述的装置,其中,响应于对压缩数据线的写入请求,所述存储器安全性引擎电路对于未成功压缩的数据,对未压缩数据进行加密,在经加密的未压缩数据上生成消息认证码,在经加密的未压缩数据上生成ECC,并且向存储器发出两个写入。
20.如示例12所述的装置,其中,所述压缩数据的大小是384比特,所述压缩元数据的大小是64比特,并且所述第二层级的ECC数据的大小是64比特。
提及“一个实施例”、“一实施例”、“一示例实施例”等等表明描述的实施例可包括特定的特征、结构或特性,但可能不一定每个实施例都包括该特定特征、结构或特性。此外,这种短语不一定指的是同一实施例。另外,当联系一实施例来描述特定的特征、结构或特性时,认为联系其他实施例(无论是否明确描述)来实现这种特征、结构或特性,是在本领域技术人员的知识范围内的。
此外,在上文描述的各种实施例中,除非另有特别注明,否则诸如短语“A、B或C中的至少一者”之类的析取语言打算被理解为意指A、B或C,或者其任何组合(例如,A、B和/或C)。因此,析取语言并不打算也不应当被理解为暗示给定的实施例要求至少一个A、至少一个B或者至少一个C各自都存在。
说明书和附图因此应被认为是说明性的,而不是限制性的。然而,很明显,在不脱离如权利要求中记载的本公开的更宽精神和范围的情况下,可对其进行各种修改和改变。
Claims (20)
1.一种系统,包括:
存储器电路;
存储器安全性引擎电路,用于针对要被存储在所述存储器电路中的多个加密压缩数据线中的每一个生成如下项:
关于被用于每个压缩数据线的压缩的压缩元数据,
与每个压缩数据线相关联的差错纠正码(ECC)数据,所述ECC数据包括用于差错纠正和检测的第一层级的ECC数据和只用于差错纠正的第二层级的ECC数据,以及
与每个压缩数据线相关联的至少消息认证码,其中,所述压缩元数据和所述第二层级的ECC数据与所述压缩数据线一起被存储。
2.如权利要求1所述的系统,其中,所述存储器安全性引擎电路用于:采用基于AES的加密方案、利用压缩引擎来压缩所述压缩数据线。
3.如权利要求1所述的系统,其中,响应于对压缩数据线的读取请求,所述存储器安全性引擎电路用于:接收所述压缩数据线、所述第一层级的ECC数据、以及与每个压缩数据线相关联的消息认证码,从所述压缩元数据确定所使用的压缩,利用所述第一层级的ECC数据来检测任何差错,对所述压缩数据线进行解密,并且尝试利用所述消息认证码来验证所述压缩数据线。
4.如权利要求3所述的系统,其中,当所述压缩数据线未得到验证时,所述存储器安全性引擎电路用于:通知安全性异常。
5.如权利要求3所述的系统,其中,当所述压缩数据线未得到验证时,所述存储器安全性引擎电路用于:将经解密的压缩数据线发送到请求者。
6.如权利要求3所述的系统,其中,当检测到差错时,所述第二层级的ECC数据被从存储器取得,并且所述存储器安全性引擎电路用于:利用所述第一层级的ECC数据和所述第二层级的ECC数据来纠正检测到的差错。
7.如权利要求1至6中任一项所述的系统,其中,响应于对压缩数据线的写入请求,所述存储器安全性引擎电路用于:对于成功压缩的数据,对压缩数据进行加密,并且将经加密的压缩数据放置在缓存线中并且向存储器发出写入。
8.如权利要求1至6中任一项所述的系统,其中,响应于对压缩数据线的写入请求,所述存储器安全性引擎电路用于:对于未成功压缩的数据,对未压缩数据进行加密,在经加密的未压缩数据上生成消息认证码,在经加密的未压缩数据上生成ECC,并且向存储器发出两个写入。
9.如权利要求1至6中任一项所述的系统,还包括:
存储器控制器,用于从所述存储器电路读取数据线和向所述存储器电路写入数据线。
10.如权利要求1至6中任一项所述的系统,其中,所述压缩数据的大小是384比特,所述压缩元数据的大小是64比特,并且所述第二层级的ECC数据的大小是64比特。
11.如权利要求1至6中任一项所述的系统,其中,所述存储器电路的至少真子集支持ECC。
12.一种装置,包括:
存储器安全性引擎电路,用于针对要被存储在存储器电路中的多个加密压缩数据线中的每一个生成如下项:
关于被用于每个压缩数据线的压缩的压缩元数据,
与每个压缩数据线相关联的差错纠正码(ECC)数据,所述ECC数据包括用于差错纠正和检测的第一层级的ECC数据和只用于差错纠正的第二层级的ECC数据,以及
与每个压缩数据线相关联的至少消息认证码,其中,所述压缩元数据和所述第二层级的ECC数据与所述压缩数据线一起被存储;以及
存储器控制器,用于从存储器读取数据线和向存储器写入数据线。
13.如权利要求12所述的装置,其中,所述存储器安全性引擎电路用于:采用基于AES的加密方案、利用压缩引擎来压缩所述压缩数据线。
14.如权利要求12所述的装置,其中,响应于对压缩数据线的读取请求,所述存储器安全性引擎电路用于:接收所述压缩数据线、所述第一层级的ECC数据、以及与每个压缩数据线相关联的消息认证码,从所述压缩元数据确定所使用的压缩,利用所述第一层级的ECC数据来检测任何差错,对所述压缩数据线进行解密,并且尝试利用所述消息认证码来验证所述压缩数据线。
15.如权利要求14所述的装置,其中,当所述压缩数据线未得到验证时,所述存储器安全性引擎电路用于:通知安全性异常。
16.如权利要求14所述的装置,其中,当所述压缩数据线未得到验证时,所述存储器安全性引擎电路用于:将经解密的压缩数据线发送到请求者。
17.如权利要求14所述的装置,其中,当检测到差错时,所述第二层级的ECC数据被从存储器取得,并且所述存储器安全性引擎电路用于:利用所述第一层级的ECC数据和所述第二层级的ECC数据来纠正检测到的差错。
18.如权利要求12至17中任一项所述的装置,其中,响应于对压缩数据线的写入请求,所述存储器安全性引擎电路用于:对于成功压缩的数据,对压缩数据进行加密,并且将经加密的压缩数据放置在缓存线中并且向存储器发出写入。
19.如权利要求12至17中任一项所述的装置,其中,响应于对压缩数据线的写入请求,所述存储器安全性引擎电路用于:对于未成功压缩的数据,对未压缩数据进行加密,在经加密的未压缩数据上生成消息认证码,在经加密的未压缩数据上生成ECC,并且向存储器发出两个写入。
20.如权利要求12至17中任一项所述的装置,其中,所述压缩数据的大小是384比特,所述压缩元数据的大小是64比特,并且所述第二层级的ECC数据的大小是64比特。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/134,344 | 2020-12-26 | ||
US17/134,344 US20220207190A1 (en) | 2020-12-26 | 2020-12-26 | Low overhead memory integrity with error correction capabilities |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114694737A true CN114694737A (zh) | 2022-07-01 |
Family
ID=78085779
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111413690.XA Pending CN114694737A (zh) | 2020-12-26 | 2021-11-25 | 具有差错纠正能力的低开销存储器完好性 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220207190A1 (zh) |
EP (1) | EP4020288A1 (zh) |
CN (1) | CN114694737A (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2023044544A (ja) * | 2021-09-17 | 2023-03-30 | キオクシア株式会社 | メモリシステム |
US20230114414A1 (en) * | 2021-09-28 | 2023-04-13 | Advanced Micro Devices, Inc. | Method and apparatus for protecting memory devices via a synergic approach |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013180714A1 (en) * | 2012-05-31 | 2013-12-05 | Hewlett-Packard Development Company, L.P. | Local error detection and global error correction |
US10324634B2 (en) * | 2017-04-07 | 2019-06-18 | Micron Technology, Inc. | Methods of bit-flagged sketch-based memory management and memory devices utilizing the same |
US10657071B2 (en) * | 2017-09-25 | 2020-05-19 | Intel Corporation | System, apparatus and method for page granular, software controlled multiple key memory encryption |
US10831596B2 (en) * | 2018-01-22 | 2020-11-10 | Micron Technology, Inc. | Enhanced error correcting code capability using variable logical to physical associations of a data block |
KR102557993B1 (ko) * | 2018-10-02 | 2023-07-20 | 삼성전자주식회사 | 메모리 이용 효율을 향상한 보안 처리기를 포함하는 시스템 온 칩, 메모리 시스템 및 시스템 온 칩의 동작방법 |
WO2020148746A1 (en) * | 2019-01-20 | 2020-07-23 | Arilou Information Security Technologies Ltd. | System and method for data compression based on data position in frames structure |
US11036636B2 (en) * | 2019-06-28 | 2021-06-15 | Intel Corporation | Providing improved efficiency for metadata usages |
US11218165B2 (en) * | 2020-05-15 | 2022-01-04 | Alibaba Group Holding Limited | Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM |
-
2020
- 2020-12-26 US US17/134,344 patent/US20220207190A1/en active Pending
-
2021
- 2021-09-23 EP EP21198465.3A patent/EP4020288A1/en active Pending
- 2021-11-25 CN CN202111413690.XA patent/CN114694737A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220207190A1 (en) | 2022-06-30 |
EP4020288A1 (en) | 2022-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3958160B1 (en) | Encoded inline capabilities | |
US20200159676A1 (en) | Cryptographic computing using encrypted base addresses and used in multi-tenant environments | |
EP4020239A1 (en) | Integrity protected access control mechanisms | |
US11917067B2 (en) | Apparatuses, methods, and systems for instructions for usage restrictions cryptographically tied with data | |
US20230018585A1 (en) | Updating encrypted security context in stack pointers for exception handling and tight bounding of on-stack arguments | |
CN114691289A (zh) | 用于保存和恢复密钥信息的指令支持 | |
EP4020288A1 (en) | Low overhead memory integrity with error correction capabilities | |
EP4020878B1 (en) | Isa accessible physical unclonable function | |
EP4020877B1 (en) | Isa accessible physical unclonable function | |
EP4020180A1 (en) | Isa accessible physical unclonable function | |
EP4020299A1 (en) | Memory address bus protection for increased resilience against hardware replay attacks and memory access pattern leakage | |
US20240118913A1 (en) | Apparatus and method to implement shared virtual memory in a trusted zone | |
CN114692223A (zh) | 用于通过不受信任的链路对硬件进行编程的isa支持 | |
US20240054080A1 (en) | Speculating object-granular key identifiers for memory safety | |
EP4156006A1 (en) | Isa accessible physical unclonable function | |
EP4020182A1 (en) | Isa accessible physical unclonable function | |
EP4156594A1 (en) | Memory assisted incline encryption/decryption | |
US20240104013A1 (en) | Deterministic adjacent overflow detection for slotted memory pointers | |
US20240193263A1 (en) | Dynamic hardware integrity and/or replay protection | |
US20230418608A1 (en) | Implicit memory corruption detection for conditional data types |
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 |