CN112148372A - 用于推测性侧信道攻击的硬件加载强化 - Google Patents
用于推测性侧信道攻击的硬件加载强化 Download PDFInfo
- Publication number
- CN112148372A CN112148372A CN202010191105.5A CN202010191105A CN112148372A CN 112148372 A CN112148372 A CN 112148372A CN 202010191105 A CN202010191105 A CN 202010191105A CN 112148372 A CN112148372 A CN 112148372A
- Authority
- CN
- China
- Prior art keywords
- load
- processor
- data
- hardware
- secure
- 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
- 230000002787 reinforcement Effects 0.000 title description 2
- 230000004044 response Effects 0.000 claims abstract description 35
- 238000000034 method Methods 0.000 claims abstract description 34
- 230000015654 memory Effects 0.000 claims description 66
- 238000013519 translation Methods 0.000 claims description 17
- 230000014616 translation Effects 0.000 claims description 17
- 230000001419 dependent effect Effects 0.000 claims description 6
- 238000012545 processing Methods 0.000 description 36
- 238000010586 diagram Methods 0.000 description 29
- 230000006870 function Effects 0.000 description 12
- 238000007667 floating Methods 0.000 description 9
- 238000010801 machine learning Methods 0.000 description 8
- 230000006855 networking Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 6
- 239000003795 chemical substances by application Substances 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 229910052754 neon Inorganic materials 0.000 description 2
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000013442 quality metrics Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000001228 spectrum Methods 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/556—Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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/604—Tools and structures for managing or administering access control systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Automation & Control Theory (AREA)
- Advance Control (AREA)
Abstract
本申请公开了用于推测性侧信道攻击的硬件加载强化。公开了用于硬件加载强化的方法和装置的实施例。在实施例中,处理器包括安全逻辑、数据转发硬件和数据取出硬件。安全逻辑用于确定加载是否安全。数据转发硬件用于响应于该加载安全的确定而转发由该加载请求的数据。数据取出逻辑用于无论该加载安全的确定如何都取出由该加载请求的数据。
Description
技术领域
技术领域总体上涉及计算机,并且更具体地涉及计算机系统安全。
背景技术
计算机系统可能容易受到攻击者获取机密的、私人的或秘密的机密信息的尝试的影响。例如,诸如幽灵(Spectre)和灾难(Meltdown)之类的攻击利用处理器的推测性和乱序执行能力来通过侧信道分析非法读取数据。
附图说明
在所附附图中以示例方式而非限制方式来图示本发明,在附图中,类似的附图标记指示类似的要素,其中:
图1图示公开小配件和公开基元的示例;
图2图示防止信息通过访问指令被推测性地消耗以防止信息通过侧信道被传送。
图3是可用于执行加载指令的处理器流水线和高速缓存层级结构的框图;
图4是根据本发明的实施例的包括对硬件加载强化的支持的处理器流水线和高速缓存层级结构的框图;
图5是根据本发明的实施例的用于硬件加载强化的方法的流程图;
图6A是图示根据本发明的实施例的示例性有序流水线以及示例性寄存器重命名的乱序发布/执行流水线两者的框图;
图6B是图示根据本发明的实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核两者的框图;
图7是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、并且可具有集成图形器件的处理器的框图;
图8-图11是示例性计算机架构的框图;
图8示出根据本发明的一个实施例的系统的框图;
图9是根据本发明的实施例的第一更具体的示例性系统的框图;
图10是根据本发明的实施例的第二更具体的示例性系统的框图;
图11是根据本发明的实施例的芯片上系统(SoC)的框图;
图12是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
在下列描述中,阐述了众多特定细节。然而应当理解,在没有这些具体细节的情况下也可实践本发明的实施例。在其他实例中,未详细示出公知的电路、结构和技术,以免使对本描述的理解模糊。
说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用表明所描述的实施例可以包括特定的结构、特征或特性,但是每个实施例可能不一定都包括该特定的结构、特征或特性。此外,此类短语不一定是指同一个实施例。此外,当结合实施例描述特征、结构或特性时,认为结合无论是否被明确描述的其他实施例而影响此类特征、结构或特性是在本领域技术人员的知识范围之内的。
许多处理器和处理器核支持提高性能的能力,诸如高速缓存操作、多线程操作、乱序执行、分支预测和推测性执行。攻击者已经找到多种方式来利用这些处理器的能力以非法读取数据。
例如,攻击者可能故意试图从不应当可由其读取的存储器位置(例如,出界)读取数据(例如,秘密数据)。读取可能被允许推测性地继续,直到确定访问是否出界。可以通过不提交任何结果直到作出确定来确保系统的架构正确性,但是推测性执行可能会导致处理器的微架构状态在作出确定之前改变,并且攻击者可能能够执行侧信道分析以根据处理器的微架构状态的差异来推断秘密数据的值。这种类型的推测性攻击的许多变型是可能的。在一种情况下,攻击者可能推测性地将秘密数据用作存储器地址的一部分,并通过使用时序分析来确定哪些存储器位置正被加载到高速缓存中以推断该值。
本发明的实施例包括系统、方法和装置,这些系统、方法和装置提供出于各种原因对于在各种计算机系统中使用可能期望的特征或特性,包括基于推测、侧信道分析等降低对攻击的脆弱性;与替代方法相比,在性能或其他方面以较低的成本降低对此类分析的脆弱性;和/或总体上提高安全性。
实施例可以提供要被解耦为两个单独的操作的加载指令或操作,这两个单独的操作是可被推测性地执行的预取操作和可被延迟直到加载指令不再是推测性的数据转发操作。可期望实施例避免与用于缓解侧信道攻击的软件方法相关联的复杂性和性能损失。
如上文所讨论,当处理器在推测性路径上执行时,处理器的推测性执行能力可能使处理器易于受到利用。使处理器开始在推测性路径上执行的推测机制可以被称为推测基元。推测基元可能使处理器易于受到利用,例如因为处理器可能在用于确定推测性路径(例如,分支预测)是否是正确的和/或允许的(例如,边界检查)的条件的解决之前就开始在该推测性路径上的执行。
利用也可以使用或依赖于开窗口小配件,开窗口小配件在解决推测之前创建足够的延迟。例如,如果分支条件取决于要被加载到高速缓存中的数据,则在推测性路径上的执行可能继续至少直到数据被加载。
在推测性执行期间,第一指令(被称为访问指令)可以推测性地读取秘密数据,并且第二指令(被称为传送指令)可以将秘密数据编码在处理器的状态中、或以可能可观察(例如,由攻击者)的方式影响处理器或处理器的操作。这两个指令一起可以被称为公开小配件。
利用也可以使用或依赖于公开基元,攻击者可能使用公开基元以在信息已经被泄漏和传送后通过侧信道接收信息。图1图示在受害者的上下文或攻击者的上下文中执行的公开小配件110和在攻击者的上下文中执行的公开基元120的示例。公开小配件110包括访问指令112和传送指令114,访问指令112读取秘密数据,传送指令114将秘密数据编码到微架构状态中。公开基元可以接收秘密数据,因为微架构状态变化对软件可见(例如,通过时序和/或性能监测单元)。
本发明的实施例涉及响应于如上所述的访问指令而改变处理器核(例如,图6中的核690、或图7或图11中的核702A-N中的任一个)或处理器(例如,图7中的处理器700;图8中的处理器810或815中的任一个;图9或图10中的处理器970、980或915中的任一个;或图11中的处理器1110)的操作,以缓解对此类利用和/或攻击的脆弱性。图2图示防止由访问指令读取的信息被推测性地消耗并防止该信息通过侧信道被传送。如图2所示,如果通过访问指令212访问的信息未被推测性地消耗,则该信息不会通过侧信道被传送,无论什么传送指令214或公开基元跟随其后和/或试图被使用。
例如,当访问指令是执行未授权的存储器访问的加载指令时,任何指令可能被用作传送指令。传送指令可能是允许信息通过秘密信息数据流被传送的加载或存储指令,如以下伪代码所示:
或者,传送指令可能是允许信息通过依赖秘密的控制流传送(例如,通过改变指令高速缓存的状态,通过使向量处理单元被上电和/或使用)的任何指令,如以下伪代码所示:
图3是可用于执行加载指令的处理器流水线(其可以表示图6A中的流水线600的一部分)和高速缓存层级结构的框图。通过不将推测性加载指令分派给该流水线防止这些推测性加载指令成为可利用的访问指令,但是可能对性能具有不期望地大的负面影响。因此,本发明的实施例使推测性加载指令能在两个单独的操作中执行:推测性高速缓存数据取出操作和非推测性数据转发操作。处理器流水线包括安全逻辑(例如,图4中的安全逻辑410,如下所述)以用于确定加载是否是推测性的。
图4是根据本发明的实施例的包括对硬件加载强化的支持的处理器流水线(其可以表示图6A中的流水线600的一部分)和高速缓存层级结构的框图。当由加载指令请求的数据在第1级(L1)高速缓存450中未命中时,要求取出可以取出包括该数据的高速缓存行。该数据取出操作与数据转发操作解耦,使得其可以被推测性地执行。推测性数据取出操作还可以包括在转换后备缓冲器(TLB)440中查找地址转换。数据转发操作可以被延迟直到加载不再是推测性的,或者如果推测在错误路径上则数据转发操作可以被压制(squash)。
安全逻辑410可以包括用于确定数据转发操作是否安全以及何时安全的硬件和/或逻辑。在各实施例中,安全逻辑410可以确定当以下条件中的任一个或任意组合为真时数据转发操作是安全的:加载不再是推测性的;加载可以不再被压制;所有先前分支已经被解决(例如,当推测是由于分支预测时);加载准备好被引退而没有任何错误;加载准备好被引退,尽管有错误。在各实施例中,安全逻辑410可以基于来自预留站或乱序执行集群420和/或管理或涉及乱序执行的任何硬件和/或逻辑(例如,重排序缓冲器)的信息作出这些确定。
如由安全逻辑410所确定的安全条件可以由维持加载顺序的加载队列430使用和/或由管理在L1 450中未命中的数据请求的未命中队列460使用。
当安全条件为假时,加载被阻止(例如,由加载队列430)并且由加载指令请求的数据不会被转发到从属指令,无论请求在L1 450中命中还是未命中。然而,如果请求在L1 450中未命中,则执行要求取出(例如,由未命中队列460)以取出数据(例如,从L2高速缓存470、L3高速缓存480或系统存储器),并且如果数据的地址在TLB中未命中,则执行页表走查,并且转换被插入TLB中。
只有当安全条件为真或变为真时,在L1高速缓存450中找到的数据才被转发到从属指令,并且在L1高速缓存450中未找到的数据被取出并转发到从属指令。
因此,加载指令被转换为可以被推测性地执行的数据取出操作和不被推测性地执行的数据转发操作。推测性数据取出操作可以包括对所请求数据的要求取出,包括将包含数据的高速缓存行加载到L1高速缓存中并且如果必要的话改变高速缓存一致性状态,并且执行地址转换和将地址转换加载到TLB中。因此,与其中加载指令不被推测性地执行的软件或其他方法不同,一旦加载指令不再是推测性的,该加载指令请求的数据更可能是可用的(例如,在L1高速缓存中)以供转发。
图5是根据本发明的实施例的用于硬件加载强化的方法的示例的方法500的流程图。各种方法实施例可以包括以各种组合和顺序的图5所示的动作中的全部或任一个,具有或不具有未示出的其他动作(包括与在前描述或接下来的描述相关的动作)。
在510中,加载指令由处理器接收。在512中,安全逻辑确定该加载是否安全。
在520中,响应于该加载不安全的确定,数据转发被阻止。在522中,确定所请求数据是否可用(例如,对L1高速缓存命中)。在524中,响应于所请求数据不可用的确定,执行要求取出。方法500从522(如果确定数据可用)和524(如果确定该数据不可用)返回至512,直到确定该加载安全(或者该加载被压制,未示出)。
在532中,响应于该加载安全的确定,确定所请求数据是否可用(例如,对L1高速缓存命中)。在534中,响应于所请求数据不可用的确定,执行要求取出。在536中,响应于所请求数据可用的确定,将该数据转发至从属操作。
实施例可以包括选择性地启用和禁用硬件加载强化的能力,例如,以强化(例如,转换为推测性数据取出操作和非推测性数据转发操作)仅推测性安全关键加载。确定是否强化加载操作可以基于:该加载是否尝试访问受保护数据,或者该加载是否以其他方式不被授权或要求还未获得的授权。可以动态地执行确定,从而充分利用(例如,存储器执行单元中的)现有处理器特征,诸如保护密钥技术。例如,从加载不具有(或者尚未具有)密钥的受保护页请求数据的该加载可以被强化。在实施例中,基于降低对特定利用和/或攻击(例如,幽灵v1,假设其他技术被用于其他变型)的脆弱性的期望,选择性启用可以被使用(例如,仅用于条件分支)。
实施例可以包括可以利用更激进的预取来提高性能的技术。例如,与加载有关的推测性预取可以不仅响应于L1未命中被触发,而且可以响应于在某些条件下的L1命中被触发。任何已知的技术可以被使用,包括由硬件预取器使用的那些技术,诸如使用对高速缓存行的命中作为触发器来预取下一顺序的高速缓存行。实施例还可以包括使用和/或扩展加载队列来存储所预取数据以降低在安全逻辑确定加载安全之前被推测性地加载的高速缓存行将被驱逐的可能性。
实施例可以包括用于硬件加载强化的编译器支持。例如,编译器可以标识关键加载(例如,具有长依赖关系链或分支条件所依赖的加载)并且将预取指令插入在它们之前以减少延迟对由这些加载请求的数据的转发的性能影响。
在实施例中,处理器可以包括安全逻辑、数据转发硬件和数据取出硬件。安全逻辑用于确定加载是否安全。数据转发硬件用于响应于该加载安全的确定而转发由该加载请求的数据。数据取出逻辑用于无论该加载安全的确定如何都取出由该加载请求的数据。
数据转发硬件还可以用于响应于该加载不安全的确定而阻止对数据的转发。数据转发硬件可以包括加载队列。数据取出硬件可以包括未命中队列。安全逻辑可以用于基于来自预留站或乱序执行集群的信息来确定该加载是否安全。处理器还可以包括用于存储地址转换的转换后备缓冲器,地址转换无论该加载安全的确定如何都响应于该加载而被执行。当该加载不再是推测性的时,安全逻辑可以用于确定该加载安全。可以响应于加载指令来执行该加载。当加载指令准备好被引退时,安全逻辑可以用于确定该加载安全。数据可以被转发至一个或多个从属指令。响应于该加载的推测性执行在错误路径上的确定,该加载可以被压制。可以响应于分支预测来执行该加载。当分支预测的条件被满足时,安全逻辑可以用于确定该加载安全。
在实施例中,方法可以包括确定加载是否安全;响应于确定该加载不安全,阻止对由该加载请求的数据的转发;以及无论该加载不安全的确定如何,都取出由该加载请求的数据。
方法还可以包括:响应于确定该加载安全,转发该数据。方法还可以包括:无论该加载不安全的确定如何,都执行地址转换并且将结果存储在转换后备缓冲器中。方法可以包括:该加载在推测性执行路径上。方法还可以包括:确定推测性执行路径错误;并且响应于确定推测性执行路径错误,压制该加载。
在实施例中,系统可以包括如上所述的系统存储器和处理器,其中该数据可以被从系统存储器取出。
在实施例中,设备可以包括:用于确定加载是否安全的装置;用于响应于该加载安全的确定而转发由该加载请求的数据的装置;以及用于无论该加载安全的确定如何都取出由该加载请求的数据的装置。
数据转发装置还可以用于响应于该加载不安全的确定而阻止对数据的转发。数据转发装置可以包括加载队列。数据取出装置可以包括未命中队列。安全确定装置可以用于基于来自预留站或乱序执行集群的信息来确定该加载是否安全。设备还可以包括用于存储地址转换的转换后备缓冲器,地址转换无论该加载安全的确定如何都响应于该加载而被执行,。安全确定装置可以用于当该加载不再是推测性的时确定该加载安全。可以响应于加载指令来执行该加载。安全确定装置可以用于当加载指令准备好被引退时确定该加载安全。数据可以被转发至一个或多个从属指令。响应于该加载的推测性执行在错误路径上的确定,该加载可以被压制。可以响应于分支预测来执行该加载。安全确定装置可以用于当分支预测的条件被满足时确定加载安全。
在实施例中,一种装置可以包括数据存储设备,该数据存储设备存储代码,该代码当由硬件处理器执行时使该硬件处理器执行本文中公开的任何方法。装置可以如在具体实施方式中所述。方法可以如在具体实施方式中所述。
在实施例中,一种非暂态机器可读介质可以存储代码,该代码在由机器执行时使该机器执行包括本文中公开的任何方法的方法。
示例性核、处理器和系统架构
已经参考处理器描述和描绘了本发明的实施例,该处理器可以表示在其中以不同方式和/或出于不同目的具体化本发明的许多不同处理器中的任一个。这些处理器和核,例如如下所述,可以包括诸如高速缓存和分支预测器之类的硬件,该硬件改善性能,但是可能使处理器和/或核更容易受到根据本发明的实施例可以防御的分析的攻击。
例如,其中可以具体化本发明的处理器中的核的实现方式可以包括:旨在用于通用计算的通用有序核;旨在用于通用计算的高性能通用乱序核;旨在主要用于图形和/或科学(吞吐量)计算的专用核。其中可以具体化本发明的处理器的实现方式可以包括:中央处理单元(CPU),包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用乱序核;以及协处理器,包括旨在主要用于图形和/或科学(吞吐量)计算的一个或多个专用核。此类不同的处理器导致不同的计算机系统架构,这些计算机系统架构可包括:在与CPU分开的芯片上的协处理器;在与CPU相同的封装中但在分开的管芯上的协处理器;与CPU在相同管芯上的协处理器(在该情况下,此类协处理器有时被称为专用逻辑或被称为专用核,该专用逻辑诸如,集成图形和/或科学(吞吐量)逻辑);以及芯片上系统(SoC),其可以将所描述的CPU(有时被称为(多个)应用核或(多个)应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上。
接着描述示例性核架构,随后描述示例性处理器和计算机架构。每个处理器可以包括一个或多个核,其中每个核和/或核的组合可以被构造和设计为在不同时刻执行一个或多个线程、进程或其他指令序列。根据称为同时(或对称)多线程(SMT)的一类方法中的任一种或任何其他方法,核架构和设计技术可以准备和/或支持多个线程的并发执行。
此外,如上文所提及且在下文中更详细地解释,本公开的实施例可以应用于任何类型的处理器或处理元件,包括:通用处理器、服务器处理器或在服务器环境中使用的处理元件、协处理器(例如,安全协处理器)、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元、密码加速器、固定功能加速器、机器学习加速器、联网加速器、或计算机视觉加速器),现场可编程门阵列,或任何其他处理器或处理设备。一个或多个处理器可以实现在一个或多个芯片上。一个或多个处理器可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,BiCMOS、CMOS、或NMOS)中的任何技术被实现在一个或多个基板上。上面列出并在本文中描述的处理器和处理设备是示例性的;如本文所解释,本公开适用于任何处理器或处理设备。
此外,如上所述和在下文中更详细解释的,本公开的实施例可以应用于使用多种指令集和指令集架构的处理器或处理元件,包括例如:x86指令集(可选地包括已经添加更新版本的扩展);加利福尼亚州桑尼维尔的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集(具有诸如NEON之类的可选的附加扩展);IBM的“Power”指令集或任何其他指令集,包括RISC和CISC指令集两者。上面列出的和本文中描述的指令集和指令集架构是示例性的;如本文所解释,本公开适用于任何指令集或指令集架构。
示例性核架构
图6A是图示根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线的框图。图6B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图。图6A-图6B中的实线框图示有序流水线和有序核,而虚线框的任选增加图示寄存器重命名的、乱序发布/执行流水线和核。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图6A中,处理器流水线600包括取出级602、长度解码级604、解码级606、分配级608、重命名级610、调度(也被称为分派或发布)级612、寄存器读取/存储器读取级614、执行级616、写回/存储器写入级618、异常处置级622和提交级624。
图6B示出处理器核690,该处理器核690包括前端单元630,该前端单元630耦合到执行引擎单元650,并且前端单元630和执行引擎单元650两者都耦合到存储器单元670。核690可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代的核类型。作为又一选项,核690可以是专用核,诸如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核,等等。例如,如上文所解释,核690可以是包含以下各项的集合中的任何项:通用处理器、服务器处理器或用于在服务器环境中使用的处理元件、协处理器(例如,安全协处理器)、高吞吐量MIC处理器、GPGPU、加速器(诸如例如、图形加速器或数字信号处理(DSP)单元、密码加速器、固定功能加速器、机器学习加速器、联网加速器、或计算机视觉加速器)、现场可编程门阵列、或任何其他处理器或处理设备。
前端单元630包括分支预测单元632,该分支预测单元632耦合到微操作高速缓存633和指令高速缓存单元634,该指令高速缓存单元634耦合到指令转换后备缓冲器(TLB)636,该指令转换后备缓冲器636耦合到指令取出单元638,该指令取出单元638耦合到解码单元640。解码单元640(或解码器)可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。微操作、微代码进入点、微指令等等可以存储在至少微操作高速缓存633中。解码单元640可使用各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核690包括存储用于某些宏指令的微代码的微代码ROM或其他介质(例如,在解码单元640中,或以其他方式在前端单元630内)。微操作高速缓存633和解码单元640耦合到执行引擎单元650中的重命名/分配器单元652。在各实施例中,诸如633的微操作高速缓存还可以或替代地称为操作高速缓存、u-op高速缓存、uop高速缓存或μop高速缓存;而微操作可以称为微op、u-op、uops和μop。
执行引擎单元650包括重命名/分配器单元652,该重命名/分配器单元652耦合到引退单元654和一个或多个调度器单元的集合656。(多个)调度器单元656表示任何数量的不同调度器,包括预留站、中央指令窗等。(多个)调度器单元656耦合到(多个)物理寄存器堆单元658。(多个)物理寄存器堆单元658中的每一个物理寄存器堆单元表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,状态(例如,作为要执行的下一条指令的地址的指令指针)等等。在一个实施例中,(多个)物理寄存器堆单元658包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通用寄存器。(多个)物理寄存器堆单元658由引退单元654重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器、(多个)引退寄存器堆;使用寄存器映射和寄存器池,等等)。引退单元654和(多个)物理寄存器堆单元658耦合到(多个)执行集群660。(多个)执行集群660包括一个或多个执行单元的集合662以及一个或多个存储器访问单元的集合664。执行单元662可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可包括仅一个执行单元或全都执行所有功能的多个执行单元。(多个)调度器单元656、(多个)物理寄存器堆单元658和(多个)执行集群660示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器单元、(多个)物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有(多个)存储器访问单元664的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序的。
存储器访问单元的集合664耦合到存储器单元670,该存储器单元670包括数据TLB单元672,该数据TLB单元672耦合到数据高速缓存单元674,该数据高速缓存单元674耦合到第二级(L2)高速缓存单元676。在一个示例性实施例中,存储器访问单元664可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合到存储器单元670中的数据TLB单元672。指令高速缓存单元634还耦合到存储器单元670中的第二级(L2)高速缓存单元676。L2高速缓存单元676耦合到一个或多个其他级别的高速缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名的乱序发布/执行核架构可如下所述地实现流水线600:1)指令取出638执行取出级602和长度解码级604;2)解码单元640执行解码级606;3)重命名/分配器单元652执行分配级608和重命名级610;4)(多个)调度器单元656执行调度级612;5)(多个)物理寄存器堆单元658和存储器单元670执行寄存器读取/存储器读取级614;执行集群660执行执行级616;6)存储器单元670和(多个)物理寄存器堆单元658执行写回/存储器写入级618;7)各单元可牵涉到异常处置级622;以及8)引退单元654和(多个)物理寄存器堆单元658执行提交级624。
核690可支持一个或多个指令集(例如,x86指令集(具有已与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON的任选的附加扩展),IBM的“Power”指令集,或任何其他指令集,包括RISC和CISC指令集两者),其中包括本文中描述的(多条)指令。在一个实施例中,核690包括用于支持紧缩数据指令集扩展(例如,AVX、AVX2、AVX-512)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、SMT(例如,单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码,以及此后的诸如 超线程化技术中的SMT)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所图示的处理器的实施例还包括分开的指令和数据高速缓存单元634/674以及共享的L2高速缓存单元676,但是替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如,第一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有(多个)高速缓存都可以在核和/或处理器的外部。
示例性处理器架构
图7是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器700的框图。图7中的实线框图示具有单个核702A、系统代理710、一个或多个总线控制器单元的集合716的处理器700,而虚线框的任选增加图示具有多个核702A-N、系统代理单元710中的一个或多个集成存储器控制器单元的集合714以及专用逻辑708的替代处理器700。
因此,处理器700的不同实现可包括:1)CPU,其中专用逻辑708是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核702A-N是一个或多个通用核(例如,通用有序核、通用乱序核、这两者的组合);2)协处理器,其中核702A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;3)协处理器,其中核702A-N是大量通用有序核;以及4)表示具有单独的输入/输出(I/O)块的任意数量的分解的核的核702A-N。因此,处理器700可以是通用处理器、服务器处理器或在服务器环境中使用的处理元件、协处理器(例如,安全协处理器)、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元、密码加速器、固定功能加速器、机器学习加速器、联网加速器、或计算机视觉加速器)、现场可编程门阵列、或任何其他处理器或处理设备。该处理器可以被实现在一个或多个芯片上。处理器700可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,BiCMOS、CMOS、或NMOS)中的任何技术被实现在一个或多个基板上。
存储器层次结构包括核内的一个或多个级别的高速缓存、一个或多个共享高速缓存单元的集合706、以及耦合到集成存储器控制器单元的集合714的外部存储器(未示出)。共享高速缓存单元的集合706可包括一个或多个中间级别的高速缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合。虽然在一个实施例中,基于环的互连单元712将集成图形逻辑708(集成图形逻辑708是专用逻辑的示例并且在本文中也称为专用逻辑)、共享高速缓存单元的集合706以及系统代理单元710/(多个)集成存储器控制器单元714互连,但是替代实施例可使用任何数量的公知技术来互连此类单元。在一个实施例中,在一个或多个高速缓存单元706与核702A-N之间维持一致性。
在一些实施例中,一个或多个核702A-N能够实现多线程化。系统代理710包括协调和操作核702A-N的那些部件。系统代理单元710可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核702A-N以及集成图形逻辑708的功率状态进行调节所需的逻辑和部件,或可包括这些逻辑和部件。显示单元用于驱动一个或多个外部连接的显示器。
核702A-N在架构指令集方面可以是同构的或异构的;即,核702A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
示例性计算机架构
图8-图11是示例性计算机架构的框图。本领域中已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、通用处理器、服务器处理器或在服务器环境中使用的处理元件、协处理器(例如,安全协处理器)、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器、密码加速器、固定功能加速器、机器学习加速器、联网加速器、或计算机视觉加速器)、现场可编程门阵列、或任何其他处理器或处理设备、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
现在参考图8,所示出的是根据本发明一个实施例的系统800的框图。系统800可以包括一个或多个处理器810、815,这些处理器耦合到控制器中枢820。在一个实施例中,控制器中枢820包括图形存储器控制器中枢(GMCH)890和输入/输出中枢(IOH)850(其可以在分开的芯片上);GMCH890包括存储器和图形控制器,存储器840和协处理器845耦合到该存储器和图形控制器;IOH 850将I/O设备860耦合到GMCH 890。或者,存储器和图形控制器中的一个或这两者被集成在(如本文中所描述的)处理器内,存储器840和协处理器845直接耦合到处理器810,并且控制器中枢820与IOH 850处于单个芯片中。
附加的处理器815的任选性在图8中通过虚线来表示。每一处理器810、815可包括本文中描述的处理核中的一个或多个,并且可以是处理器700的某一版本。
存储器840可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢820经由诸如前端总线(FSB)之类的多分支总线、诸如快速路径互连(QPI)之类的点对点接口、或者类似的连接895来与(多个)处理器810、815进行通信。
在一个实施例中,协处理器845是专用处理器(包括例如,通用处理器、服务器处理器或在服务器环境中使用的处理元件、诸如安全协处理器之类的协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元、密码加速器、固定功能加速器、机器学习加速器、联网加速器、或计算机视觉加速器)、现场可编程门阵列、或任何其他处理器或处理设备)。在一个实施例中,控制器中枢820可以包括集成图形加速器。
在物理资源810、815之间可以存在包括架构、微架构、热、功耗特性等一系列品质度量方面的各种差异。
在一个实施例中,处理器810执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器810将这些协处理器指令识别为具有应当由附连的协处理器845执行的类型。因此,处理器810在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器845。(多个)协处理器845接受并执行所接收的协处理器指令。
现在参见图9,所示出的是根据本发明的实施例的第一更具体的示例性系统900的框图。如图9中所示,多处理器系统900是点对点互连系统,并且包括经由点对点互连950耦合的第一处理器970和第二处理器980。处理器970和980中的每一个都可以是处理器700的某一版本。在本发明的一个实施例中,处理器970和980分别是处理器810和815,而协处理器938是协处理器845。在另一实施例中,处理器970和980分别是处理器810和协处理器845。
处理器970和980示出为分别包括集成存储器控制器(IMC)单元972和982。处理器970还包括作为其总线控制器单元的一部分的点对点(P-P)接口976和978;类似地,第二处理器980包括P-P接口986和988。处理器970、980可以经由使用点对点(P-P)接口电路978、988的P-P接口950来交换信息。如图9中所示,IMC 972和982将处理器耦合到相应的存储器,即存储器932和存储器934,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器970、980可各自经由使用点对点接口电路976、994、986、998的各个P-P接口952、954来与芯片组990交换信息。芯片组990可以任选地经由高性能接口992来与协处理器938交换信息。在一个实施例中,协处理器938是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享高速缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组990可以经由接口996耦合到第一总线916。在一个实施例中,第一总线916可以是外围部件互连(PCI)总线或诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图9中所示,各种I/O设备914可连同总线桥918一起耦合到第一总线916,该总线桥918将第一总线916耦合到第二总线920。在一个实施例中,诸如通用处理器、服务器处理器或在服务器环境中使用的处理元件、协处理器(例如,安全协处理器)、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元、密码加速器、固定功能加速器、机器学习加速器、联网加速器、或计算机视觉加速器)、现场可编程门阵列或任何其他处理器或处理设备的一个或多个附加处理器915耦合到第一总线916。在一个实施例中,第二总线920可以是低引脚数(LPC)总线。在一个实施例中,各种设备可耦合到第二总线920,这些设备包括例如键盘和/或鼠标922、通信设备927以及存储单元928,该存储单元928诸如可包括指令/代码和数据930的盘驱动器或者其他大容量存储设备。此外,音频I/O 924可以被耦合到第二总线920。注意,其他架构是可能的。例如,代替图9的点对点架构,系统可以实现多分支总线或其他此类架构。
现在参考图10,示出的是根据本发明的实施例的第二更具体的示例性系统1000的框图。图9和10中的类似元件使用类似的附图标记,并且从图10中省略了图9的某些方面以避免混淆图10的其他方面。
图10图示处理器970、980可分别包括集成存储器和I/O控制逻辑(“CL”)972和982。因此,CL 972、982包括集成存储器控制器单元,并包括I/O控制逻辑。图10图示不仅存储器932、934耦合到CL 972、982,而且I/O设备1014也耦合到控制逻辑972、982。传统I/O设备1015被耦合到芯片组990。
现在参考图11,示出的是根据本发明的实施例的SoC 1100的框图。图7中的类似要素使用类似的附图标记。另外,虚线框是更先进的SoC上的任选的特征。在图11中,(多个)互连单元1102被耦合到:应用处理器1110,其包括一个或多个核的集合702A-N以及(多个)共享高速缓存单元706,一个或多个核的集合702A-N包括高速缓存单元704A-N;系统代理单元710;(多个)总线控制器单元716;(多个)集成存储器控制器单元714;一个或多个协处理器的集合1120,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器、通用处理器、服务器处理器或在服务器环境中使用的处理元件、安全协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元、密码加速器、固定功能加速器、机器学习加速器、联网加速器、或计算机视觉加速器)、现场可编程门阵列、或任何其他处理器或处理设备;静态随机存取存储器(SRAM)单元1130;直接存储器访问(DMA)单元1132;以及用于耦合到一个或多个外部显示器的显示单元1140。在一个实施例中,(多个)协处理器1120包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器,等等。
结论
本文公开的机制的各实施例可以被实现在硬件、软件、固件或此类实现方式的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器(包括例如,通用处理器、服务器处理器或在服务器环境中使用的处理元件、协处理器(例如,安全协处理器)、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元、密码加速器、固定功能加速器、机器学习加速器、联网加速器、或计算机视觉加速器)、现场可编程门阵列、或任何其他处理器或处理设备)、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如,图9中图示的代码930)应用于输入指令,以执行本文中描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以用高级的面向过程的编程语言或面向对象的编程语言来实现,以便与处理系统通信。如果需要,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定的编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制造用于执行本文中所述的技术的逻辑。被称为“IP核”的此类表示可以被存储在有形的机器可读介质上,并可被供应给各个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非暂态、有形布置,其包括存储介质,诸如硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括非暂态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
根据本发明的实施例的将由处理器核执行的指令可以以下文详细描述的“通用向量友好指令格式”来具体化。在其他实施例中,不利用此类格式而使用另一指令格式,然而,下文对写掩码寄存器、各种数据变换(混合、广播等)、寻址等的描述一般适用于上文(多条)指令的实施例的描述。另外,在下文中详细描述示例性系统、架构和流水线。指令可在此类系统、架构和流水线上执行,但是不限于详述的那些系统、架构和流水线。
在一些情况下,指令转换器可用于将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令变换(例如,使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式转换成要由核处理的一条或多条其他指令。指令转换器可以用软件、硬件、固件、或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图12是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图12示出可使用x86编译器1204来编译高级语言1202形式的程序,以生成可由具有至少一个x86指令集核的处理器1216原生执行的x86二进制代码1206。具有至少一个x86指令集核的处理器1216表示通过兼容地执行或以其他方式处理以下各项来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核的指令集的实质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器1204表示可操作用于生成x86二进制代码1206(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器1216上执行。类似地,图12示出可以使用替代的指令集编译器1208来编译高级语言1202形式的程序,以生成可以由不具有至少一个x86指令集核的处理器1214(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代的指令集二进制代码1210。指令转换器1212用于将x86二进制代码1206转换成可以由不具有x86指令集核的处理器1214原生执行的代码。该转换后的代码不大可能与替代的指令集二进制代码1210相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自替代指令集的指令构成。因此,指令转换器1212通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1206的软件、固件、硬件或其组合。
可能已经参考其他附图的示例性实施例描述了流程图中的操作。然而,应当理解,流程图的操作可由除参照其他附图所讨论的本发明的那些实施例之外的实施例来执行,并且参照其他附图所讨论的本发明的实施例可执行与参照流程图所讨论的操作不同的操作。此外,尽管附图中的流程图示出由本发明的某些实施例执行的操作的特定顺序,但是,应当理解,此类顺序是示例性的(例如,替代实施例可按不同顺序执行操作,可组合某些操作,可使某些操作重叠,等等)。
本发明的实施例的一个或多个部分可使用软件、固件和/或硬件的不同组合来实现。实施例可使用电子设备来实现,电子设备使用机器可读介质(也称为计算机可读介质)来存储和(在内部以及/或者通过网络与其他电子设备)传输代码(该代码由软件指令组成,并且有时被称为计算机程序代码或计算机程序)和/或数据,机器可读介质诸如机器可读存储介质(例如,磁盘、光盘、只读存储器(ROM)、闪存设备、相变存储器)和机器可读传输介质(也称为载体)(例如,电、光、无线电、声或其他形式的传播信号——诸如,载波、红外信号)。因此,电子设备(例如,计算机)可以包括硬件和软件,诸如,一个或多个处理器的集合,该一个或多个处理器的集合耦合到一个或多个机器可读存储介质,该机器可读存储介质用于存储供在处理器集合上执行的代码和/或用于存储数据。例如,电子设备可包括包含代码的非易失性存储器,因为非易失性存储器即使当电子设备被关闭(当功率被移除)时也可使代码/数据留存,而当电子设备被开启时,将由那个电子设备的(多个)处理器执行的代码的那部分典型地从较慢的非易失性存储器被复制到那个电子设备的易失性存储器(例如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))中。典型的电子设备还包括用于建立与其他电子设备的网络连接(以使用传播信号传输和/或接收代码和/或数据)的一个或多个物理网络接口的集合。
尽管已经通过若干实施例来描述本发明,但是本领域技术人员将认识到,本发明不限于所描述的实施例,本发明可由在所附权利要求的精神和范围内的修改和变化实践。描述因此被视为是说明性的而不是限制性的。
Claims (20)
1.一种用于硬件加载强化的处理器,包括:
安全逻辑,用于确定加载是否安全;
数据转发硬件,用于响应于所述加载安全的确定而转发由所述加载请求的数据;以及
数据取出硬件,用于无论所述加载安全的确定如何都取出由所述加载请求的所述数据。
2.如权利要求1所述的处理器,其中,所述数据转发硬件还用于响应于所述加载不安全的确定而阻止对所述数据的转发。
3.如权利要求1所述的处理器,其中,所述数据转发硬件包括加载队列。
4.如权利要求1所述的处理器,其中,所述数据取出硬件包括未命中队列。
5.如权利要求1所述的处理器,其中,所述安全逻辑用于基于来自预留站或乱序执行集群的信息来确定所述加载是否安全。
6.如权利要求1所述的处理器,进一步包括转换后备缓冲器,用于存储地址转换,所述地址转换无论所述加载安全的确定如何都响应于所述加载而被执行。
7.如权利要求1所述的处理器,其中,所述安全逻辑用于当所述加载不再是推测性的时确定所述加载安全。
8.如权利要求1所述的处理器,其中,所述加载响应于加载指令而被执行。
9.如权利要求8所述的处理器,其中,所述安全逻辑用于当所述加载指令准备好被引退时确定所述加载安全。
10.如权利要求1所述的处理器,其中,所述数据将被转发至一个或多个从属指令。
11.如权利要求1所述的处理器,其中,所述加载响应于所述加载的推测性执行在错误路径上的确定而被压制。
12.如权利要求1所述的处理器,其中,所述加载响应于分支预测而被执行。
13.如权利要求12所述的处理器,其中,所述安全逻辑用于当所述分支预测的条件被满足时确定所述加载安全。
14.一种用于硬件加载强化的方法,包括:
确定加载是否安全;
响应于确定所述加载不安全,阻止对由所述加载请求的数据的转发;以及
无论所述加载不安全的确定如何,都取出由所述加载请求的所述数据。
15.如权利要求14所述的方法,进一步包括:响应于确定所述加载安全,转发所述数据。
16.如权利要求14所述的方法,进一步包括:无论所述加载不安全的确定如何,都执行地址转换并且将结果存储在转换后备缓冲器中。
17.如权利要求14所述的方法,其中,所述加载在推测性执行路径上。
18.如权利要求17所述的方法,进一步包括:
确定所述推测性执行路径错误;以及
响应于确定所述推测性执行路径错误,压制所述加载。
19.一种用于硬件加载强化的系统,包括:
系统存储器;以及
处理器,包括:
安全逻辑,用于确定加载是否安全;
数据转发硬件,用于响应于所述加载安全的确定而转发由所述加载请求的数据;以及
数据取出硬件,用于无论所述加载安全的确定如何都取出由所述加载请求的所述数据,其中所述数据将被从所述系统存储器取出。
20.如权利要求19所述的系统,其中,所述数据转发硬件还用于响应于所述加载不安全的确定而阻止对所述数据的转发。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/458,006 US20200410094A1 (en) | 2019-06-29 | 2019-06-29 | Hardware load hardening for speculative side-channel attacks |
US16/458,006 | 2019-06-29 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112148372A true CN112148372A (zh) | 2020-12-29 |
Family
ID=69960348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010191105.5A Pending CN112148372A (zh) | 2019-06-29 | 2020-03-18 | 用于推测性侧信道攻击的硬件加载强化 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20200410094A1 (zh) |
EP (1) | EP3757773A1 (zh) |
CN (1) | CN112148372A (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11095745B1 (en) * | 2020-10-23 | 2021-08-17 | EMC IP Holding Company LLC | Cloud-based scheduling of data operations to an object storage using an operation pool |
US11675899B2 (en) * | 2020-12-15 | 2023-06-13 | International Business Machines Corporation | Hardware mitigation for Spectre and meltdown-like attacks |
US11740909B2 (en) | 2021-11-09 | 2023-08-29 | Meta Platforms, Inc. | Secure speculative execution of instructions |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5611063A (en) * | 1996-02-06 | 1997-03-11 | International Business Machines Corporation | Method for executing speculative load instructions in high-performance processors |
US7657880B2 (en) * | 2003-01-31 | 2010-02-02 | Intel Corporation | Safe store for speculative helper threads |
US10515049B1 (en) * | 2017-07-01 | 2019-12-24 | Intel Corporation | Memory circuits and methods for distributed memory hazard detection and error recovery |
US10963567B2 (en) * | 2017-10-12 | 2021-03-30 | Microsoft Technology Licensing, Llc | Speculative side-channel attack mitigations |
US11163576B2 (en) * | 2019-03-20 | 2021-11-02 | Eta Scale Ab | Systems and methods for invisible speculative execution |
-
2019
- 2019-06-29 US US16/458,006 patent/US20200410094A1/en active Pending
-
2020
- 2020-03-18 CN CN202010191105.5A patent/CN112148372A/zh active Pending
- 2020-03-24 EP EP20165127.0A patent/EP3757773A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP3757773A1 (en) | 2020-12-30 |
US20200410094A1 (en) | 2020-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11681533B2 (en) | Restricted speculative execution mode to prevent observable side effects | |
US20230342156A1 (en) | Apparatuses and methods for speculative execution side channel mitigation | |
US10452551B2 (en) | Programmable memory prefetcher for prefetching multiple cache lines based on data in a prefetch engine control register | |
US9619750B2 (en) | Method and apparatus for store dependence prediction | |
CN113260994A (zh) | 针对对计算机系统的推测性边信道分析的防御 | |
CN112988624A (zh) | 用于保护影子栈的处理器、方法、系统和指令 | |
US20180173534A1 (en) | Branch Predictor with Branch Resolution Code Injection | |
EP3757829A1 (en) | Processor instruction support for mitigating controlled-channel and cache-based side-channel attacks | |
US9118482B2 (en) | Fault tolerant apparatus and method for elliptic curve cryptography | |
EP3757773A1 (en) | Hardware load hardening for speculative side-channel attacks | |
US20210200552A1 (en) | Apparatus and method for non-speculative resource deallocation | |
CN112579171A (zh) | 用于当在推测执行期间被视为安全的时省略安全检查的硬件 | |
CN113535236A (zh) | 基于指令集体系结构的和自动的加载跟踪的方法和装置 | |
US10922088B2 (en) | Processor instruction support to defeat side-channel attacks | |
US20220206819A1 (en) | Dynamic detection of speculation vulnerabilities | |
EP3109754A1 (en) | Systems, methods, and apparatuses for improving performance of status dependent computations | |
US20220207148A1 (en) | Hardening branch hardware against speculation vulnerabilities | |
US20220207154A1 (en) | Dynamic mitigation of speculation vulnerabilities | |
US10853078B2 (en) | Method and apparatus for supporting speculative memory optimizations | |
CN113568663A (zh) | 代码预取指令 | |
US20220091851A1 (en) | System, Apparatus And Methods For Register Hardening Via A Micro-Operation | |
US20230315640A1 (en) | Circuitry and methods for implementing capability-directed prefetching | |
US20230315452A1 (en) | Circuitry and methods for capability informed prefetches | |
US11797309B2 (en) | Apparatus and method for speculative execution information flow tracking | |
US20230315465A1 (en) | Circuitry and methods for informing indirect prefetches using capabilities |
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 |