CN110659066A - 用于战胜边信道攻击的处理器指令支持 - Google Patents
用于战胜边信道攻击的处理器指令支持 Download PDFInfo
- Publication number
- CN110659066A CN110659066A CN201910456359.2A CN201910456359A CN110659066A CN 110659066 A CN110659066 A CN 110659066A CN 201910456359 A CN201910456359 A CN 201910456359A CN 110659066 A CN110659066 A CN 110659066A
- Authority
- CN
- China
- Prior art keywords
- instruction
- register
- cache
- flag
- memory
- 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
- 238000000034 method Methods 0.000 claims abstract description 57
- 230000015654 memory Effects 0.000 claims description 132
- 230000000116 mitigating effect Effects 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 23
- 230000036316 preload Effects 0.000 description 23
- 238000012545 processing Methods 0.000 description 20
- 230000008569 process Effects 0.000 description 16
- 238000007667 floating Methods 0.000 description 12
- 239000000872 buffer Substances 0.000 description 9
- 238000004891 communication Methods 0.000 description 9
- 230000004044 response Effects 0.000 description 9
- 238000013519 translation Methods 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000002243 precursor Substances 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000003756 stirring Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000013442 quality metrics Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1491—Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
-
- 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
- G06F9/3865—Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/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/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- 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/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本文详述的是用于计算机架构的系统、设备和方法,所述计算机架构具有用于缓解基于页故障和/或基于高速缓存的边信道攻击的指令集支持。在实施例中,一种设备包括用于解码第一指令的解码器,所述第一指令具有针对第一操作码的第一字段,所述第一操作码指示执行电路将在第一寄存器中设置第一标志,所述第一标志指示在事件发生时将程序流程重定向到异常处理程序的操作模式。所述设备还包括执行电路,所述执行电路用于执行所解码的第一指令以在第一寄存器中设置指示操作模式的第一标志,并将异常处理程序的地址存储在第二寄存器中。
Description
技术领域
本发明领域一般涉及计算机处理器架构,并且更具体地说,涉及当被执行时使处理器以边信道保护模式进行操作的指令。
背景技术
某些类的基于软件的边信道攻击涉及一个软件程序(攻击者)通过利用公共底层资源(例如,中央处理单元或CPU)来获得关于另一个程序(受害者)的信息。示例性的边信道攻击包括基于页故障的攻击和基于高速缓存的攻击。基于页故障的攻击是针对在可信执行环境内执行的程序的边信道攻击,其中操作系统(OS)不在可信计算基础中。攻击者(诸如恶意OS)可以通过在程序的执行期间通过主动操纵页表或通过被动观察页表条目的控制位中的变化而观察页故障的序列来执行边信道攻击。以这种方式,攻击者可以获得在执行期间的程序的存储器存取模式。如果存储器存取模式取决于正被处理的秘密信息,则攻击者可以间接推断出秘密信息。基于高速缓存的边信道攻击是基于由被CPU执行的程序所共享的高速缓存的更一般的攻击。受害者的高速缓存未命中和高速缓存命中之间的时间差异使得攻击者(诸如恶意程序)能够推断出受害者的高速缓存存取模式(例如,哪个高速缓存位置被存取以及其何时被存取)。基于那些模式,攻击者可以推断出正由受害程序所处理的秘密信息。
附图说明
在附图中,通过示例而非限制的方式示出了本发明,其中相似的附图标记表示类似的元件。
图1示出了根据一些实施例的边信道攻击缓解的高级视图。
图2A-2B示出了用于处理用于支持边信道攻击缓解的指令的硬件的实施例。
图3A-3D示出了在一系列示例性指令的执行期间的示例性数据高速缓存单元、示例性指令高速缓存单元、示例性指令转化后援缓冲器(translation lookaside buffer)单元和示例性数据转化后援缓冲器。
图4A-4B示出了在驱逐事件之前和之后的示例性数据高速缓存单元、示例性指令高速缓存单元、示例性指令转化后援缓冲器单元和示例性数据转化后援缓冲器。
图5示出了ENBEGIN指令、ENEND指令、MOVCIP指令和PRELOAD指令的实施例。
图6示出了用于处理图5中所示的示例性指令的硬件的实施例。
图7示出了由处理器执行以处理ENBEGIN指令的方法的实施例。
图8示出了由处理器执行以处理ENEND指令的方法的实施例。
图9示出了由处理器执行以处理MOVCIP指令的方法的实施例。
图10示出了由处理器执行以处理PRELOAD指令的方法的实施例。
图11示出了由处理器在处于事件通知模式中时响应于发生的事件而执行的方法的实施例。
图12A-B示出了更具体的示例性有序核架构的框图,该核将是芯片中几个逻辑块(包括相同类型和/或不同类型的其它核)之一。
图12A是根据本发明的实施例的单个处理器核的框图,连同其到管芯上互连网络1202的连接以及连同其2级(L2)高速缓存的本地子集1204。
图12B是根据本发明的实施例的图12A中的处理器核的一部分的放大视图。
图13是根据本发明的实施例的处理器1300的框图,处理器1300可以具有多于一个核、可以具有集成存储器控制器、并且可以具有集成图形。
图14-17是示例性计算机架构的框图。
图14示出了根据本发明的一个实施例的系统的框图。
图15是根据本发明的实施例的第一更具体示例性系统的框图。
图16是根据本发明的实施例的第二更具体示例性系统的框图。
图17是根据本发明的实施例的SoC的框图。
图18是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
在以下描述中,阐述了许多具体细节。然而,应当理解,在没有这些具体细节的情况下也可以实践本发明的实施例。在其它情形下,没有详细示出众所周知的电路、结构和技术,以免模糊对该描述的理解。
说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用指示所描述的实施例可以包括特定特征、结构或特性,但是每个实施例可不一定包括所述特定特征、结构或特性。此外,这样的短语不一定指相同实施例。此外,当结合实施例来描述特定特征、结构或特性时,主张的是无论是否明确描述,结合其它实施例来影响这种特征、结构或特性是在本领域技术人员的知识范围内的。
本文详述了用于检测和保护免受边信道攻击的一组指令和硬件支持的实施例。具体而言,所公开的实施例涉及一组指令,软件程序可以利用这组指令来消除攻击者获得秘密信息的能力。具体而言,指令将处理器置于边信道保护模式(称为“事件通知模式”)。在事件通知模式中,可能指示边信道攻击的某些事件使用户级别程序执行通过用户级别异常处理程序(handler)而重定向。用户级别异常处理程序允许用户级别程序通过将关键或敏感信息锁(pin)在高速缓存(以防止基于高速缓存的攻击)或转化后援缓冲器(TLB)(以防止基于页故障的攻击)中来防止攻击者观察高速缓存或存储器存取模式。通过指令和硬件支持,用户级别程序可以结合轻量保护机制来抵御边信道攻击。
图1示出了根据一些实施例的边信道攻击缓解的高级视图。如图所示,用户级别应用的程序流程100包括ENBEGIN指令105、前导例程110、安全性关键例程115和ENEND指令120。在这种使用中,前导例程110和安全性关键例程115的虚线指示它们是特定于用户级别应用的,并且可以从一个应用到另一个应用而变化。前导例程110和安全性关键例程115包括与被保护的用户级别应用相关的指令。保护需要执行应用的处理器进入事件通知模式106。用户级别应用可以指示处理器进入事件通知模式106,以主动保护秘密信息免受边信道攻击。特别地,用户级别应用将前导例程110和安全性关键例程115用ENBEGIN指令105和ENEND指令120包起来(wrap)。注意,尽管图1将ENBEGIN指令105示出为与前导例程110分离,但是在一些实施例中,ENBEGIN指令早先被包括在前导例程110中。
在处理器执行安全性关键代码115之前,前导代码110使处理器将所有安全性关键代码和/或数据加载到高速缓存和/或TLB中。在事件通知模式106期间没有驱逐事件125,处理器执行前导例程110、安全性关键例程115,并且然后在执行ENEND指令时退出事件通知模式106。
如果在处理器正以事件通知模式106处理指令时发生驱逐事件125,则处理器引发异常,以将用户级别应用流程重定向到用户级别异常处理程序130。再次,用户级别异常处理程序130的虚线指示它是特定于用户级别应用的,并且可能从一个应用到另一个应用而变化。当重定向发生时,处理器退出事件通知模式。一旦处于用户级别异常处理程序,软件程序就可以实现各种边信道缓解措施。这种缓解措施的一个示例是使用户级别异常处理程序发出ENBEGIN指令105,并且然后调用前导例程110(如图所示)或调用前导例程110(如果前导例程包括ENBEGIN指令105的话)。前导例程110使处理器将安全性关键代码和/或数据重新加载到高速缓存和/或TLB中。以这种方式,用户级别异常处理程序130和前导例程110有效地将代码和/或数据“锁”在高速缓存/TLB中。因为成功的基于页故障或基于高速缓存的边信道攻击的先决条件是引起驱逐或监测驱逐,所以攻击者无法观察或操纵安全性关键代码和/或数据。此外,由于安全性关键代码和/或数据被预加载到高速缓存/TLB中,所以攻击者无法在执行之前和之后基于受害者的执行或高速缓存足迹获得信息。
示例性核架构
图2A-2B示出了用于处理用于支持边信道攻击缓解的指令的硬件的实施例。具体而言,图2A是示出根据本发明的实施例的示例性有序管线和示例性寄存器重命名、无序发布/执行管线两者的框图。图2B是示出根据本发明的实施例的要被包括在处理器中的有序架构核的示例性实施例和示例性寄存器重命名、无序发布/执行架构核两者的框图。图2A-B中的实线方框示出有序管线和有序核,而虚线方框的可选附加示出寄存器重命名、无序发布/执行管线和核。假定有序方面是无序方面的子集,将描述无序方面。
在图2A中,处理器管线200包括获取级202、长度解码级204、解码级206、分配级208、重命名级210、调度(也称为分派或发布)级212、寄存器读/存储器读级214、执行级216、写回/存储器写级218、异常处理级222和提交级224。
图2B示出了处理器核290,其包括耦合到执行引擎单元250的前端单元230,并且两者都耦合到存储器单元270。核290可以是缩减指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或者混合或备选核类型。作为又一选项,核290可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等。
前端单元230包括耦合到指令高速缓存单元234的分支预测单元232,指令高速缓存单元234耦合到指令TLB 236,指令236耦合到指令获取单元238,指令获取单元238耦合到解码单元240。解码单元240(或解码器)可以解码指令,并且生成一个或多个微操作、微代码条目点、微指令、其它指令或其它控制信号作为输出,所述一个或多个微操作、微代码条目点、微指令、其它指令或其它控制信号从原始指令中解码,或者以其它方式反映原始指令,或者从原始指令导出。解码单元240可以使用各种不同的机制而被实现。合适机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核290包括存储用于某些宏指令(例如,在解码单元240中或否则在前端单元230内)的微代码的微代码ROM或其它介质。解码单元240耦合到执行引擎单元250中的重命名/分配器单元252。
执行引擎单元250包括耦合到退役单元254和一组一个或多个调度器单元256的重命名/分配器单元252。调度器单元256表示任意数量的不同调度器,包括预约站、中央指令窗口等。调度器单元256耦合到物理寄存器堆单元258。物理寄存器堆单元258中的每个表示一个或多个物理寄存器堆,所述一个或多个物理寄存器堆中的不同物理寄存器堆存储一个或多个不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、矢量整数、矢量浮点、状态(例如,作为要被执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器堆单元258包括矢量寄存器单元、写掩蔽寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构矢量寄存器、矢量掩蔽寄存器和通用寄存器。物理寄存器堆单元258由退役单元254覆盖,以示出寄存器重命名和无序执行可采用各种方式而被实现(例如,使用重排序缓冲器和退役寄存器堆;使用未来堆、历史缓冲器、和退役寄存器堆;使用寄存器映射和寄存器池;等等)。退役单元254和物理寄存器堆单元258耦合到执行集群260。执行集群260包括一组一个或多个执行单元262和一组一个或多个存储器存取单元264。执行单元262可以执行各种操作(例如移位、加法、减法、乘法)并对各种类型的数据(例如标量浮点、打包整数、打包浮点、矢量整数、矢量浮点)执行所述各种操作。虽然一些实施例可以包括专用于特定功能或功能的集合的多个执行单元,但是其它实施例可以仅包括一个执行单元或都执行所有功能的多个执行单元。调度器单元256、物理寄存器堆单元258和执行集群260被示出为可能是复数个,因为某些实施例针对某些类型的数据/操作创建单独的管线(例如,标量整数管线、标量浮点/打包整数/打包浮点/矢量整数/矢量浮点管线、和/或存储器存取管线,它们各自具有它们自己的调度器单元、物理寄存器堆单元、和/或执行集群——并且在单独的存储器存取管线的情况下,实现其中仅此管线的执行集群具有存储器存取单元264的某些实施例)。还应该理解,在使用单独的管线的情况下,这些管线中的一个或多个可能是无序发布/执行,而其余管线是有序的。
该组存储器存取单元264耦合到存储器单元270,存储器单元270包括耦合到数据高速缓存单元274的数据TLB单元272,数据高速缓存单元274耦合到2级(L2)高速缓存单元276。在一个示例性实施例中,存储器存取单元264可以包括加载单元、存储地址单元和存储数据单元,它们中的每个都耦合到存储器单元270中的数据TLB单元272。指令高速缓存单元234还耦合到存储器单元270中的2级(L2)高速缓存单元276。L2高速缓存单元276耦合到高速缓存的一个或多个其它级,并最终耦合到主存储器。
通过示例的方式,示例性寄存器重命名、无序发布/执行核架构可以如下实现管线200:1)指令获取238执行获取级202和长度解码级204;2)解码单元240执行解码级206;3)重命名/分配器单元252执行分配级208和重命名级210;4)调度器单元256执行调度级212;5)物理寄存器堆单元258和存储器单元270执行寄存器读/存储器读级214;执行集群260执行执行级216;6)存储器单元270和物理寄存器堆单元258执行写回/存储器写级218;7)异常处理级222中可能涉及各种单元;以及8)退役单元254和物理寄存器堆单元258执行提交级224。
核290可以支持一个或多个指令集(例如x86指令集(具有已添加有较新版本的一些扩展);加利福尼亚州桑尼维尔市的MIPS科技的MIPS指令集;加利福尼亚州森尼维尔市ARM控股的ARM指令集(具有可选的附加扩展,诸如NEON)),包括本文所描述的指令。在一个实施例中,核290包括用于支持打包数据指令集扩展(例如,AVX1、AVX2)的逻辑,从而允许使用打包数据来执行由许多多媒体应用所使用的操作。
应当理解,核可以支持多线程(执行两个或更多个并行组的操作或线程),并且可以采用多种方式来这样做,包括时间分片多线程、同时多线程(其中单个物理核为物理核正同时多线程的每个线程提供逻辑核)或其组合(例如,时间分片获取并解码以及在此之后同时多线程,诸如在Intel®超线程技术中)。
虽然寄存器重命名是在无序执行的上下文中描述的,但是应该理解,寄存器重命名可以在有序架构中被使用。虽然处理器的所示实施例还包括单独的指令和数据高速缓存单元234/274以及共享L2高速缓存单元276,但是备选实施例可以具有用于指令和数据两者的单个内部高速缓存(诸如例如1级(L1)内部高速缓存)或者内部高速缓存的多个级。在一些实施例中,系统可以包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。备选地,所有高速缓存都可以在核和/或处理器外部。
每当在事件通知模式期间可能发生与攻击相关联的某些事件(“安全性关键事件”)时,核290都引发用户级别异常处理程序。示例性安全性关键事件包括驱逐数据TLB单元272、数据高速缓存单元274、指令高速缓存单元234或指令TLB 236中的条目。此外,核290响应于诸如外部中断或异常的其它安全性关键事件而引发用户级别异常处理程序。
核290的几个特征支持事件通知模式,包括一个或多个寄存器、受安全性关键事件影响的高速缓存或TLB条目的条目级跟踪(参考图3A-3D和4A-4B所描述的)、以及包括ENBEGIN和ENEND的指令的添加(参考图5所描述的)。关于寄存器支持,核290包括用于支持事件通知模式的流程和状态的一个或多个寄存器。在示例性实施例中,核290支持的每个线程包括寄存器中的事件通知状态标志、用户级别异常处理程序指针(EIP)寄存器和当前指令指针(CIP)寄存器。事件通知状态标志指示核290是否正针对线程在事件通知模式中进行操作。当安全性关键事件发生时,CIP寄存器存储程序流程的指令指针(IP)。EIP寄存器存储用户级别异常处理程序的位置,在安全性关键事件发生后,核290将程序流程重定向到该位置。
在上下文切换期间,不需要保存事件通知状态标志和EIP寄存器。当安全性关键事件发生时,核290在任何上下文切换之前使用EIP寄存器中的信息,并且当核290在安全性关键事件发生时退出事件通知模式时,事件通知状态标志可以被清除而不保存。
图3A-3D和4A-4B示出了示例性指令TLB单元236、示例性数据TLB单元272、示例性指令高速缓存单元234和示例性数据高速缓存单元274。在高级处,高速缓存或TLB中的条目包括每线程跟踪位,其指示该条目是否在事件通知模式中被跟踪。跟踪或“T”位允许核290仅在发生安全性关键代码或数据的驱逐时重定向程序流程,而不是在任何高速缓存驱逐时将程序流程重定向到用户级别异常处理程序120。即使多个线程在事件通知模式中共享代码或数据并存取共享的代码/数据,也可以针对每个硬件线程独立设置或清除T位。在示例性实施例中,当在事件通知模式中操作时,对TLB或高速缓存中的条目的存取将数据带入被跟踪状态。换句话说,如果程序流程(例如,前导例程110和安全性关键代码115)导致在高速缓存或TLB内命中的存储器存取,则核290(例如,控制高速缓存或TLB的逻辑)针对与该存取相关联的线程而设置相关联的条目的T位。此外,如果程序流程导致未命中高速缓存或TLB的存储器存取,并引起从另一存储器检索数据,则核290设置在其中存储所检索的数据的高速缓存/TLB条目的T位。在一些实施例中,如下所述,掩蔽值可以启用或禁用针对特定高速缓存和/或TLB的驱逐跟踪,从而防止在所掩蔽的高速缓存/TLB中设置T位。
图3A-3D示出了在执行表1中所示的示例性指令集期间的指令TLB单元236、数据TLB单元272、指令高速缓存单元234和数据高速缓存单元274的状态。图4A-4B示出了在驱逐之前和之后的高速缓存和TLB的状态。如图3A-3D和4A-4B中的每个所示,并且假设双线程核290:指令TLB单元236中的每个条目包括虚拟地址302、物理地址304、第一线程T位(“T0”)306和第二线程T位(“T1”)308;数据TLB单元272中的每个条目包括虚拟地址318、物理地址320、第一线程T位(“T0”)322和第二线程T位(“T1”)324;指令高速缓存单元234中的每个条目包括标签310、数据312、第一线程T位(“T0”)314和第二线程T位(“T1”)316;并且数据高速缓存单元274中的每个条目包括标签326、数据328、第一线程T位(“T0”)330和第二线程T位(“T1”)330。
表1包含更新图3A-3D中的高速缓存和TLB的状态的示例性指令序列。在这个示例中,指令是第一线程T0的一部分,并且任何管线操作都被忽略。
表1:图3A-3D的示例说明
号码 | 指令 | 程序计数器 | 针对数据操作所存取的存储器地址 | 执行后的高速缓存/TLB状态 |
1 | ENBEGIN | 0x1000 | 图3A | |
2 | mov(%rsi),%rax | 0x1004 | 0x4000 | 图3B |
3 | mov4(%rsi),%rbx | 0x1008 | 0x5000 | 图3C |
4 | ENEND | 0x100c | 图3D |
图3A示出了在处理器执行第一指令之后的TLB 236、272和高速缓存234、275的状态。最初,核290正处理程序,并且程序计数器进行到包括ENBEGIN指令的存储器位置。核290从存储器获取指令,导致对指令TLB单元236和指令高速缓存单元234的更新。在这个示例中,指令TLB单元236用具有0x1000的虚拟地址302和0xc000的物理地址304的条目来更新,并且指令高速缓存单元234用具有0xc000的标签310和包括在虚拟地址0x1000处开始的指令的数据值的条目来更新。此外,由于核290尚未进入事件通知模式,所以第一和第二线程的新条目的T位306、308、314和316保持“0”。因为指令不涉及数据,所以数据TLB单元272和数据高速缓存单元274保持不变。
图3B示出了在处理器执行第二指令之后的TLB 236、272和高速缓存234、275的状态。第二指令是数据移动(MOV)指令,其使核290将数据从寄存器rsi(例如0x4000)中指定的存储器位置移动到寄存器rax。假设第二指令作为ENBEGIN指令的一部分经由指令TLB单元236和指令高速缓存单元234而被高速缓存,则存在指令命中,并且指令TLB单元236和指令高速缓存单元234中的各个高速缓存条目的T位306、314被设置。此外,响应于MOV指令,核290从存储器读数据,导致对数据TLB单元272和数据高速缓存单元274的更新。在这个示例中,数据TLB单元272用具有0x4000的虚拟地址318和0x9000的物理地址320的条目来更新,并且数据高速缓存单元274用具有0x9000的标签310和从存储器读的数据的条目来更新。此外,因为这些存储器存取发生在事件通知模式内,所以对应于新条目的T位322和330被设置。
图3C示出了在处理器执行第三指令之后的TLB 236、272和高速缓存234、275的状态。第三指令是移动(MOV)指令,其使核290将数据从相对寄存器rsi中指定的存储器位置偏移的存储器位置(0x5000)移动到寄存器rbx。假设第三指令作为ENBEGIN指令的一部分经由指令TLB单元236和指令高速缓存单元234而被高速缓存,则核290从存储器读数据,导致对数据TLB单元272和数据高速缓存单元274的更新。在这个示例中,数据TLB单元272用具有0x5000的虚拟地址318和0xa000的物理地址320的条目来更新,并且数据高速缓存单元274用具有0xa000的标签310和从存储器读的数据的条目来更新。此外,因为这些存储器存取发生在事件通知模式内,所以对应于新条目的T位322和330被设置。
图3D示出了在处理器执行第四指令之后的TLB 236、272和高速缓存234、275的状态。第四指令是ENEND指令。当核290处理ENEND指令时,它清除(或使与高速缓存/TLB相关联的逻辑清除)所有被设置的T位连同其它操作(例如,清除事件通知状态标志)。
图4A-4B示出了在诸如高速缓存驱逐的安全性关键事件之前和之后的指令TLB单元236、数据TLB单元272、指令高速缓存单元234和数据高速缓存单元274的状态。再次假设双线程核290:指令TLB单元236中的每个条目包括虚拟地址302、物理地址304、第一线程T位(“T0”)306和第二线程T位(“T1”)308;数据TLB单元272中的每个条目包括虚拟地址318、物理地址320、第一线程T位(“T0”)322和第二线程T位(“T1”)324;指令高速缓存单元234中的每个条目包括标签310、数据312、第一线程T位(“T0”)314和第二线程T位(“T1”)316;并且数据高速缓存单元274中的每个条目包括标签326、数据328、第一线程T位(“T0”)330和第二线程T位(“T1”)330。
图4A示出了在某个时间点(例如在执行表1中的前三个指令之后)的TLB 236、272和高速缓存234、275的状态。如果安全性关键事件发生在退出事件通知模式之前,则核290清除(或使与高速缓存/TLB相关联的逻辑清除所有被设置的T位连同其它操作(例如,清除事件通知状态标志),如作为上面参考图3D所描述的ENEND指令的情况。清除T位后的状态在图4B中示出。除了清除T位之外,核290还执行附加操作,诸如重定向针对对于与安全性关键事件相关联的高速缓存/TLB条目具有被设置的T位的任何线程的程序流程。参考图11,在下面找到关于这些操作的附加细节。在图4A和4B之间示出的示例中,数据高速缓存单元274中被驱逐的条目具有针对第一线程的被设置的T位,因此核290将使在第一线程内执行的相关联程序的程序流程重定向到用户级别异常处理程序。
示例性指令
图5示出了ENBEGIN指令510、ENEND指令520、MOVCIP指令530和PRELOAD指令540的实施例。ENBEGIN指令510包括操作码(OPCODE)字段502,其包括解码电路可以用来标识ENBEGIN指令510的值。立即值(immediate)、寄存器或存储器位置操作数512包括或标识用户级别异常处理程序的条目点(即存储器地址)。在一些实施例中,ENBEGIN指令540还包括立即值、寄存器或存储器位置操作数514,其包括或标识基于受影响的高速缓存或TLB来启用或禁用(例如,掩蔽)安全性关键事件的值。例如,操作数514可以是4位值,其中每个位分别指示是否监测指令TLB单元236、数据TLB单元272、指令高速缓存单元234和数据高速缓存单元274中的安全性关键事件。在一些实施例中,可以省略操作数512或514中的一个或两个,并且它们各自的内容位于与ENBEGIN指令510相关联的隐式寄存器中。在执行ENBEGIN指令510时,执行电路通过设置事件通知状态标志而将核290置于事件通知模式中,并加载EIP寄存器中用户级别异常处理程序的条目点的位置。
ENEND指令520包括操作码字段502,操作码字段502包括解码电路可以用来标识ENEND指令520的值。在执行ENEND指令520时,执行电路通过清除事件通知状态标志并清除高速缓存/TLB中的任何被设置的T位或使任何被设置的T位被清除来从事件通知模式中移除核290。
MOVCIP指令530包括操作码字段502,操作码字段502包括解码电路可以用来标识MOVCIP指令530的值。MOVCIP指令530允许软件程序将该值存储在CIP寄存器中。在一些实施例中,MOVCIP指令530包括寄存器或存储器位置操作数532,其标识CIP中的值应该存储的位置。在用操作数532执行MOVCIP指令时,执行电路将CIP寄存器中的该值存储在所标识的位置中。在一些实施例中,MOVCIP指令530不包括操作数,并且在执行MOVCIP指令530时,执行电路将CIP寄存器的内容推到软件程序的堆栈上。如本文别处所述,用户级别异常处理程序可以使用MOVCIP指令530来存储软件程序的主流程的位置,使得它可以当在事件通知模式中发生安全性关键事件时在核290将执行重定向到用户级别异常处理程序之后被恢复。
PRELOAD指令540包括操作码字段502,操作码字段502包括解码电路可以用来标识PRELOAD指令540的值。PRELOAD指令540提供了将代码预加载到指令高速缓存单元234中或者将数据预加载到数据高速缓存单元274中的简单方式。寄存器或存储器位置操作数542包括或标识包含要“锁”到高速缓存中的数据的数据结构的存储器位置。数据结构可以对应于指令高速缓存单元234或数据高速缓存单元274中的条目的格式。立即值、寄存器或存储器位置操作数544包括或标识数据结构是被加载到指令高速缓存单元234中还是被加载到数据高速缓存单元274中。例如,“1”可以指示数据结构将被加载到指令高速缓存单元234中,并且“0”可以指示数据结构将被加载到数据高速缓存单元274中。立即值、寄存器或存储器位置操作数546包括或标识与被高速缓存的条目相关联的权限(例如,“1”指示只读,而“0”指示读或写权限)。在一些实施例中,操作数542、544和546中的一个或多个可以被省略,并且它们各自的内容位于与PRELOAD指令540相关联的隐式寄存器中。例如,RAX可以存储与操作数542的描述相关联的值,RBX可以存储与操作数544的描述相关联的值,RCX可以存储与操作数546的描述相关联的值。在执行PRELOAD指令540时,执行电路将数据结构中的数据从存储器加载到具有所标识的权限的数据高速缓存单元或指定的指令高速缓存单元中。
图6示出了用于处理图5中所示的示例性指令的硬件的实施例。如图所示,存储装置601存储要被执行的指令603,包括ENBEGIN指令、ENEND指令、MOVCIP指令和PRELOAD指令。所述指令由解码电路605所接收。例如,解码电路605从获取逻辑/电路接收此指令。解码电路605可以对应于图2中的解码单元240,并且获取逻辑/电路可以对应于图2中的指令获取单元238。
如图5中所示,取决于指令603,指令603包括针对操作码的字段和零个或多个操作数。解码电路605将指令解码成一个或多个操作。在一些实施例中,此解码包括生成将由执行电路(诸如图2中的执行引擎单元250)所执行的多个微操作。例如,解码电路605可以基于被加载到指令高速缓存单元234或数据高速缓存单元274中的数据结构的已知大小而将预加载操作分成多个存储器读操作。
在一些实施例中,寄存器重命名、寄存器分配和/或调度电路607为以下项中的一项或多项提供功能性:1)将逻辑操作数值重命名为物理操作数值(例如,在一些实施例中为寄存器别名表),2)将状态位和标志分配给所解码指令,以及3)调度所解码指令以用于在指令池之外的执行电路上执行(例如,在一些实施例中使用预留站)。寄存器(寄存器堆)和/或存储器608存储数据作为要由执行电路操作的指令的操作数,包括上述CIP寄存器630、EIP寄存器640和包括事件通知状态标志650的寄存器。示例性寄存器类型包括打包数据寄存器、通用寄存器和浮点寄存器。
执行电路执行609所解码指令。所解码指令的执行使执行电路基于所解码指令来执行操作,如下面参考图7-10所详述的。
写回(退役)电路611提交所解码指令的执行的结果(如果有的话)。在一些实施例中,退役/写回电路在架构上将目的寄存器提交到寄存器或存储器中,并退役指令。
图7示出了由处理器执行以处理ENBEGIN指令的方法的实施例。例如,图2A中的管线200的级、图2B的核290或图6中所示的硬件执行此方法。
在701,获取指令。例如,由获取级202或指令获取单元238获取ENBEGIN指令。如上面参考图5所述,ENBEGIN指令包括针对操作码的字段,该操作码用于指示执行电路将在第一寄存器中设置指示事件通知模式的标志,并将异常处理程序条目点操作数存储在第二寄存器中。ENBEGIN指令可以包括显式操作数,或者与标识异常处理程序条目点的隐式操作数相关联。ENBEGIN指令还可以包括显式操作数或与隐式操作数相关联,该隐式操作数标识在发生安全性关键事件时哪个(哪些)高速缓存或TLB应该触发重定向到异常处理程序。
在703,所获取的指令被解码。例如,所获取的ENBEGIN指令由解码级206、解码单元240或解码电路605所解码。
在705,检索与所解码指令的显式或隐式操作数相关联的数据值。例如,如果隐式或显式操作数包括对包含用户级别异常处理程序的条目点地址的寄存器或存储器位置的引用,则检索条目点地址。
在707,所解码的指令由诸如执行级216、执行引擎单元250(例如,执行单元262)或执行电路609的执行电路所执行。对于ENBEGIN指令,执行将使执行电路在寄存器中设置事件通知状态标志,以指示核290处于事件通知模式,并将用户级别异常处理程序的地址存储在第二寄存器(例如,上面所述的EIP寄存器)中。
在709,写入所执行指令的结果。例如,写回/存储器写级218、存储器存取单元264、执行单元262或写回电路611设置寄存器中的事件通知状态标志640,并将用户级别异常处理程序的地址写到EIP寄存器650。
图8示出了由处理器执行以处理ENEND指令的方法的实施例。例如,图2A中的管线200的级、图2B的核290或图6中所示的硬件执行此方法。
在801,获取指令。例如,获取级202或指令获取单元238获取ENEND指令。如上面参考图5所述,ENEND指令包括针对操作码的字段,该操作码指示执行电路将清除第一寄存器中指示事件通知模式的标志,并使数据TLB、数据高速缓存、指令TLB和指令高速缓存中的至少一个中的跟踪位被清除。例如,如果操作数514掩蔽了指令TLB和指令高速缓存中的驱逐事件,则操作码可能仅使数据TLB和数据高速缓存中的T位被清除。在一些实施例中,在退出事件通知模式时,TLB和高速缓存中的所有T位被清除。
在803,所获取的指令被解码。例如,所获取的ENEND指令由解码级206、解码单元240或解码电路605所解码。
在805,所解码的指令由诸如执行级216、执行引擎单元250(例如,执行单元262)或执行电路609的执行电路所执行。对于ENEND指令,该执行将使执行电路清除第一寄存器中指示事件通知模式的标志(例如,事件通知状态标志)。该执行将进一步使数据TLB、数据高速缓存、指令TLB和指令高速缓存中的至少一个中的T位被清除。例如,该执行将使执行电路重新设置或覆写高速缓存或TLB中的T位,或者使与高速缓存或TLB相关联的逻辑重新设置或覆写T位。
在807,写入所执行指令的结果。例如,写回/存储器写级218、存储器存取单元264、执行单元262或写回电路611清除寄存器中的事件通知状态标志640。
图9示出了由处理器执行以处理MOVCIP指令的方法的实施例。例如,图2A中的管线200的级、图2B的核290或图6中所示的硬件执行此方法。
在901,获取指令。例如,由获取级202或指令获取单元238获取MOVCIP指令。如上面参考图5所述,MOVCIP指令包括针对操作码的字段,该操作码用于指示执行电路将存储被存储在第一指令指针寄存器(例如,CIP寄存器630)中的值。在一些实施例中,MOVCIP指令还包括寄存器或存储器位置操作数,其标识第一指令指针寄存器中的值应被存储的位置。在MOVCIP指令不包括操作数的其它实施例中,指令指示执行电路将把第一指令指针寄存器中的值存储到存储器中的堆栈上。
在903,所获取的指令被解码。例如,所获取的ENEND指令由解码级206、解码单元240或解码电路605所解码。
在905,检索与所解码指令相关联的数据值。具体地,检索第一指令指针寄存器(例如,CIP寄存器630)的值。
在907,所解码的指令由诸如执行级216、执行引擎单元250(例如,执行单元262)或执行电路609的执行电路所执行。对于MOVCIP指令,该执行将使执行电路将被存储在第一指令指针寄存器(例如,如在905检索的CIP寄存器640)中的值存储在由操作数所标识的位置(如果指令包括标识要存储指针的位置的操作数)或者存储在存储器中的堆栈上(如果指令不包括标识要存储指针的位置的操作数)。
在909,写入所执行指令的结果。例如,写回/存储器写级218、存储器存取单元264、执行单元262或写回电路611将来自第一指令指针寄存器的值写到存储器中的堆栈或写到由操作数(如果存在的话)所指定的位置。例如,如果执行电路在907对写进行缓冲,则在909执行所缓冲的操作。
图10示出了由处理器执行以处理PRELOAD指令的方法的实施例。例如,图2A中的管线200的级、图2B的核290或图6中所示的硬件执行此方法。
在1001,获取指令。例如,由获取级202或指令获取单元238获取PRELOAD指令。如上面参考图5所述,PRELOAD指令包括针对操作码的字段,该操作码用于指示执行电路将利用存储器中某个位置的数据来加载通过高速缓存选择器值所标识的高速缓存。PRELOAD指令可以包括显式操作数,或者与隐式操作数相关联,该隐式操作数标识数据在存储器中的位置,如本文所述。PRELOAD指令可以进一步包括显式操作数,或与隐式操作数相关联,该隐式操作数包括或标识高速缓存选择器值(例如,存储器中的数据的目的地是指令高速缓存还是数据高速缓存),如本文所述。PRELOAD指令还可以包括显式操作数,或与隐式操作数相关联,该隐式操作数包括或标识与所加载的高速缓存条目相关联的读/写权限,如本文所述。
在1003,所获取的指令被解码。例如,所获取的PRELOAD指令由解码级206、解码单元240或解码电路605所解码。
在1005,检索与所解码的指令相关联的数据值。具体地,检索存储器中要被加载到所标识的高速缓存中的数据(即指令或数据)。此外,如果任何操作数是隐式操作数,则检索存储在每个隐式操作数的位置中的数据(例如,读/写权限值;该值指示来自存储器的数据是被加载到数据高速缓存还是指令高速缓存中)。
在1007,所解码的指令由诸如执行级216、执行引擎单元250(例如,执行单元262)或执行电路609的执行电路所执行。对于PRELOAD指令,该执行将使执行电路使所检索到的数据加载到通过高速缓存选择器值所标识的高速缓存中。例如,执行电路加载数据高速缓存或指令高速缓存中的数据,如由高速缓存选择器值所标识的,并且如果指定了的话,则服从读/写权限。
在1009,写入所执行指令的结果。例如,写回/存储器写级218、存储器存取单元264、执行单元262或写回电路611将来自存储器的数据写到所标识的高速缓存中。
图11示出了由处理器响应于在处于事件通知模式中时发生的事件而执行的方法的实施例。例如,图2A中的管线200的级、图2B的核290、图6中所示的硬件和/或与其相关联的任何微代码(统称为固件/硬件)执行此方法。
该方法开始于1101,在发生高速缓存或TLB驱逐、中断或其它安全性关键事件时。例如,当固件/硬件处于事件通知模式中时,该方法开始,并且标识具有被设置的T位的高速缓存或TLB条目的驱逐。此外,如果例如经由操作数514仅对某些高速缓存或TLB启用了事件通知模式,则如果满足所有必要条件(例如,核290处于事件通知模式中、具有被设置的T位的条目发生驱逐、驱逐在未被掩蔽的高速缓存或TLB中),那么该方法开始。
在1103,固件/硬件清除寄存器中的事件通知状态标志,以使处理器退出事件通知模式。在1105,固件/硬件清除高速缓存和/或TLB中的被设置的T位。在1107,固件/硬件将软件程序流程的指令指针存储在指令指针寄存器中。例如,如果在发生安全性关键事件时,主软件程序流程的指令指针在0x10F0,则固件/硬件将值0x10F0写到CIP寄存器。在1109,一旦存储了软件程序流程的指令指针,固件/硬件针对软件程序通过用户级别异常处理程序的条目点(例如,存储在EIP寄存器中的值)来加载指令指针寄存器(例如,程序计数器),这将使软件程序将其程序流程重定向到异常处理程序。在1111,固件/硬件(和任何支持软件)处理作为安全性关键事件的触发的中断或其它异常(例如,外部中断或异常)。一旦固件/硬件返回到软件程序,固件/硬件就开始在用户级别异常处理程序处执行软件程序,如在1113所指示。通过在安全性关键事件发生时将软件程序的指令指针存储在CIP寄存器中并用EIP寄存器来加载当前指令指针,当软件程序继续执行时,固件/硬件将执行重定向到用户级别异常处理程序,以允许软件程序战胜可能的边信道攻击。
示例性程序流程
各种程序流程可以利用本文公开的指令和相关联的固件/硬件特征来保护安全性关键代码和/或数据。以下示例示出了由软件程序所执行的操作序列,该软件程序包括前导例程和安全性关键例程连同硬件和/或固件,以防止安全性关键代码或数据的泄漏。
在第一示例中,在没有被安全性关键事件中断的情况下,处理器(例如,核290)执行软件程序。在软件程序的主流程中,软件程序调用前导例程。前导例程包括ENBEGIN指令,其后是用于预加载指令或数据高速缓存的PRELOAD指令。当前导例程完成时(即加载了高速缓存),程序流程返回到主流程。在主流程中,软件程序执行安全性关键处理(或调用安全性关键例程)。一旦安全性关键处理完成,软件程序就发出ENEND指令。
在第二示例中,处理器(例如,核290)执行软件程序,并且安全性关键事件发生在软件程序的安全性关键例程期间(例如,在安全性关键例程115期间)。在该示例中,安全性关键事件是被跟踪的高速缓存条目(例如,具有T位)的高速缓存驱逐。软件程序流程调用前导例程,其包括ENBEGIN指令,并通过PRELOAD指令执行高速缓存预加载。软件程序流程继续到安全性关键例程,在该例程的处理期间发生被跟踪的高速缓存或TLB条目的驱逐。作为响应,固件/硬件清除事件通知状态标志、清除高速缓存和/或TLB中的任何被设置的T位、将软件程序的指令指针存储在CIP寄存器中、并且用软件程序的用户级别异常处理程序的条目点来加载软件程序的指令指针以将程序流程重定向到用户级别异常处理程序。用户级别异常处理程序将存储在CIP寄存器中的值存储到程序堆栈上(例如,在MOVCIP指令不包括位置操作数的实施例中)或存储到所标识的位置上(例如,在MOVCIP包括位置操作数的实施例中)。存储在CIP寄存器中存储的值允许软件程序恢复发生驱逐时其停止的其安全性关键例程。用户级别异常然后调用前导例程来将安全性关键代码和/或数据“重新锁”在高速缓存中。在调用前导例程之前,用户级别异常处理程序可以保存堆栈上的任何标志或其它寄存器,以使软件程序能够恢复前导返回后其停止的安全性关键例程。执行前导例程,包括通过发出ENBEGIN指令来重新发起事件通知模式。一旦前导例程完成,软件程序流程就返回到用户级别异常处理程序。用户级别异常处理程序在从堆栈调用前导例程之前复原并标记或注册它所包留的,并将程序流程重定向到保留的CIP寄存器的值。以这种方式,软件程序在重新加载高速缓存后恢复执行安全性关键例程。此外,通过重新加载高速缓存,任何观察者或攻击者都无法基于高速缓存填充/驱逐来断定安全性关键例程中的任何模式。
在第三示例中,处理器(例如,核290)执行软件程序,并且安全性关键事件发生在软件程序的前导例程期间(例如,在前导例程110期间)。在该示例中,安全性关键事件是被跟踪的高速缓存条目(例如,具有T位)的高速缓存驱逐。软件程序流程调用前导例程,其包括ENBEGIN指令。在此示例中,前导例程通过PRELOAD指令来开始高速缓存预加载。在完成高速缓存预加载之前,发生被跟踪的高速缓存或TLB条目的驱逐。作为响应,固件/硬件清除事件通知状态标志、清除高速缓存和/或TLB中的任何被设置的T位、将软件程序的指令指针存储在CIP寄存器中、并且用软件程序的用户级别异常处理程序的条目点来加载软件程序的指令指针以将程序流程重定向到用户级别异常处理程序。用户级别异常处理程序将存储在CIP寄存器中的值存储到指定位置(例如,经由包括位置操作数的MOVCIP指令的实施例)。用户级别异常然后调用前导例程来将安全性关键代码和/或数据“重新锁”在高速缓存中。执行前导例程,包括通过发出ENBEGIN指令来重新发起事件通知模式。前导例程可以对其第一执行设置检查点,并基于检查点的存在来检查其先前是否曾被中断。如果前导例程确定它曾被中断,则前导例程可以将程序流程还原到该检查点,使得前导例程从开始到完成仅执行一次。在执行前导例程之后,程序流程继续到安全性关键例程。
注意,第一安全性关键事件可以发生在安全性关键例程内,并且随后第二安全性关键事件可以发生在由处理第一安全性关键事件的用户级别异常处理程序发起的前导例程内。在这种情况下,响应于第一事件所调用的用户级别异常处理程序将调用MOVCIP指令来存储安全性关键程序流程的指令指针,而对用户级别异常处理程序的随后调用(例如,从前导例程)将不会。一旦前导例程在没有中断的情况下完成了一次,响应于第一事件所调用的用户级别异常处理程序就将发出RET指令,以允许软件程序通过重新加载的高速缓存来恢复安全性关键例程执行。同样,通过重新加载高速缓存,任何观察者或攻击者都无法基于高速缓存填充/驱逐来断定安全性关键例程中的任何模式。
在第四示例中,处理器(例如,核290)执行软件程序,并且安全性关键事件发生在软件程序的安全性关键例程期间。在该示例中,安全性关键事件是外部中断。软件程序流程调用前导例程,其包括ENBEGIN指令,并通过PRELOAD指令执行高速缓存预加载。软件程序流程继续到安全性关键例程,在该例程的处理期间发生外部中断。作为响应,固件/硬件清除事件通知状态标志、清除高速缓存和/或TLB中的任何被设置的T位、将软件程序的指令指针存储在CIP寄存器中、并且用软件程序的用户级别异常处理程序的条目点来加载软件程序的指令指针以将程序流程重定向到用户级别异常处理程序。在服务外部中断之后,程序流程通过用户级别异常处理程序恢复。用户级别异常处理程序将存储在CIP寄存器中的值存储到程序堆栈上(例如,在MOVCIP指令不包括位置操作数的实施例中)或存储到所标识的位置上(例如,在MOVCIP包括位置操作数的实施例中)。存储CIP寄存器中的值允许软件程序恢复发生中断时其停止的其安全性关键例程。用户级别异常然后调用前导例程来将安全性关键代码和/或数据“重新锁”在高速缓存中。在调用前导例程之前,用户级别异常处理程序可以保存堆栈上的任何标志或其它寄存器,以使软件程序能够恢复前导返回后其停止的安全性关键例程。执行前导例程,包括通过发出ENBEGIN指令来重新发起事件通知模式。一旦前导例程完成,软件程序流程就返回到用户级别异常处理程序。用户级别异常处理程序在从堆栈调用前导例程之前复原并标记或注册它所包留的,并将程序流程重定向到保留的CIP寄存器的值。以这种方式,软件程序恢复执行安全性关键例程。同样,通过重新加载高速缓存,任何观察者或攻击者都无法基于高速缓存填充/驱逐来断定安全性关键例程中的任何模式。
边信道保护模式可以跨各种不同的核和计算机架构而被实现,包括在仿真环境中,诸如参考图12-18所示出和描述的那些环境。
附加示例性核架构
特定示例性有序核架构
图12A-B示出了比图2A和2B所示的有序核架构更具体的示例性有序核架构的框图,该核将是芯片中的几个逻辑块(包括相同类型和/或不同类型的其它核)之一。逻辑块通过高带宽互连网络(例如环形网络)与一些固定功能逻辑、存储器I/O接口和其它必要的I/O逻辑进行通信,这取决于应用。
图12A是根据本发明的实施例的单个处理器核连同其到管芯上互连网络1202的连接并连同其2级(L2)高速缓存的本地子集1204的框图。在一个实施例中,指令解码器1200支持具有打包数据指令集扩展的x86指令集。L1高速缓存1206允许低延迟存取以将存储器高速缓存到标量和矢量单元中。虽然在一个实施例中(为了简化设计),标量单元1208和矢量单元1210使用单独的寄存器组(分别是标量寄存器1212和矢量寄存器1214),并且在它们之间转移的数据被写到存储器,并然后从1级(L1)高速缓存1206中读回,但是本发明的备选实施例可以使用不同的方法(例如,使用单个寄存器组或者包括允许数据在不被写和读回的情况下在两个寄存器堆之间转移的通信路径)。
L2高速缓存的本地子集1204是全局L2高速缓存的一部分,该全局L2高速缓存被划分成单独的本地子集,每处理器核一个。每个处理器核都具有到其自己的L2高速缓存的本地子集1204的直接存取路径。处理器核所读的数据被存储在其L2高速缓存子集1204中,并且可以与其它处理器核存取它们自己的本地L2高速缓存子集并行地被快速存取。处理器核所写的数据被存储在其自己的L2高速缓存子集1204中,并且如果需要,则从其它子集转储清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其它逻辑块的代理在芯片内相互通信。每个环形数据路径是每方向1012位宽。
图12B是根据本发明的实施例的图12A中的处理器核的一部分的放大视图。图12B包括L1高速缓存1204的L1数据高速缓存1206A部分,以及关于矢量单元1210和矢量寄存器1214的更多细节。具体而言,矢量单元1210是16宽矢量处理单元(VPU)(参见16宽ALU1228),其执行整数、单精度浮点和双精度浮点指令中的一个或多个。VPU支持用搅拌单元(swizzle unit)1220来搅拌寄存器输入、用数值转换单元1222A-B进行数值转换、以及用复制单元1224对存储器输入进行复制。写掩蔽寄存器1226允许预测结果矢量写。
图13是根据本发明的实施例的处理器1300的框图,处理器1300可以具有多于一个核、可以具有集成存储器控制器、并且可以具有集成图形。图13中的实线方框示出了具有单个核1302A、系统代理1310、一组一个或多个总线控制器单元1316的处理器1300,而虚线方框的可选附加示出了具有多个核1302A-N、系统代理单元1310中的一组一个或多个集成存储器控制器单元1314以及专用逻辑1308的备选处理器1300。
因此,处理器1300的不同实现可以包括:1)具有作为集成图形和/或科学性(吞吐量)逻辑的专用逻辑1308的CPU(其可以包括一个或多个核),并且核1302A-N是一个或多个通用核(例如,通用有序核、通用无序核、两者的组合);2)具有作为主要意图用于图形和/或科学性(吞吐量)的大量专用核的核1302A-N的协处理器;以及3)具有作为大量通用有序核的核1302A-N的协处理器。因此,处理器1300可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量多集成核(MIC)协处理器(包括30个或更多个核)、嵌入式处理器等。处理器可以在一个或多个芯片上被实现。处理器1300可以是一个或多个衬底的一部分和/或可以使用多种工艺技术(诸如例如BiCMOS、CMOS或NMOS)中的任一种在一个或多个衬底上被实现。
存储器层级包括核内的一个或多个级别的高速缓存、一组或一个或多个共享高速缓存单元1306、以及耦合到所述组集成存储器控制器单元1314的外部存储器(未示出)。所述组共享高速缓存单元1306可以包括一个或多个中级高速缓存,诸如2级(L2)、3级(L3)、4级(L4)或其它级别的高速缓存、最后一级高速缓存(LLC)、和/或它们的组合。虽然在一个实施例中,基于环的互连单元1312将集成图形逻辑1308(集成图形逻辑1308是专用逻辑的示例,并且在本文也被称为专用逻辑)、所述组共享高速缓存单元1306和系统代理单元1310/集成存储器控制器单元1314互连,但是备选实施例可以使用任意数量的公知技术以用于互连这些单元。在一个实施例中,在一个或多个高速缓存单元1306和核1302-A-N之间维持一致性。
在一些实施例中,核1302A-N中的一个或多个能够多线程。系统代理1310包括协调和操作核1302A-N的那些组件。系统代理单元1310可以包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括对于调节核1302A-N和集成图形逻辑1308的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1302A-N在架构指令集方面可以是同构的或异构的;也就是说,核1302A-N中的两个或更多个可以能够执行相同的指令集,而其它核可能仅能够执行该指令集的子集或不同的指令集。
示例性计算机架构
图14-17是示例性计算机架构的框图。本领域中已知的用于膝上型计算机、桌上型计算机、手持式PC、个人数字助理、工程工作站、服务器、网络装置、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式装置和各种其它电子装置的其它系统设计和配置也是合适的。一般而言,能够结合如本文所公开的处理器和/或其它执行逻辑的多种系统或电子装置通常是合适的。
现在参考图14,示出了根据本发明的一个实施例的系统1400的框图。系统1400可以包括耦合到控制器中枢1420的一个或多个处理器1410、1415。在一个实施例中,控制器中枢1420包括图形存储器控制器中枢(GMCH)1490和输入/输出中枢(IOH)1450(其可以在单独的芯片上);GMCH 1490包括存储器1440和协处理器1445被耦合于的存储器和图形控制器;IOH 1450将输入/输出(I/O)装置1460耦合到GMCH 1490。备选地,存储器和图形控制器中的一个或两个被集成在处理器内(如本文所述),存储器1440和协处理器1445被直接耦合到处理器1410,并且控制器中枢1420与IOH 1450一起在单个芯片中。
附加处理器1415的可选性质在图14中用虚线表示。每个处理器1410、1415可以包括本文描述的处理核中的一个或多个,并且可以是处理器1300的某个版本。
存储器1440可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)、或两者的组合。对于至少一个实施例,控制器中枢1420经由多点总线(诸如前侧总线(frontsidebus)(FSB))、点对点接口(诸如快速路径互连(QPI))或类似连接1495而与处理器1410、1415进行通信。
在一个实施例中,协处理器1445是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器中枢1420可以包括集成图形加速器。
在包括架构、微架构、热、功率耗用特性等的品质度量谱方面,物理资源1410、1415之间可以存在各种不同。
在一个实施例中,处理器1410执行控制通用类型的数据处理操作的指令。嵌入在指令内的可以是协处理器指令。处理器1410将这些协处理器指令识别为是应该由所附协处理器1445所执行的类型。因此,处理器1410在协处理器总线或其它互连上向协处理器1445发出这些协处理器指令(或表示协处理器指令的控制信号)。协处理器1445接受并执行所接收的协处理器指令。
现在参考图15,示出了根据本发明的实施例的第一更具体示例性系统1500的框图。如图15中所示,多处理器系统1500是点对点互连系统,并且包括经由点对点互连1550而被耦合的第一处理器1570和第二处理器1580。处理器1570和1580中的每个都可以是处理器1300的某个版本。在本发明的一个实施例中,处理器1570和1580分别是处理器1410和1415,而协处理器1538是协处理器1445。在另一个实施例中,处理器1570和1580分别是处理器1410、协处理器1445。
处理器1570和1580被示出分别包括集成存储器控制器(IMC)单元1572和1582。处理器1570还包括点对点(P-P)接口1576和1578作为其总线控制器单元的一部分;类似地,第二处理器1580包括P-P接口1586和1588。处理器1570、1580可以使用P-P接口电路1578、1588经由点对点(P-P)接口1550来交换信息。如图15中所示,IMC 1572和1582将处理器耦合到各自的存储器,即存储器1532和存储器1534,其可以是本地附连于各自处理器的主存储器的一部分。
处理器1570、1580各自可以使用点对点接口电路1576、1594、1586、1598经由单独的P-P接口1552、1554与芯片集1590交换信息。芯片集1590可以可选地经由高性能接口1592与协处理器1538交换信息。在一个实施例中,协处理器1538是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
共享高速缓存(未示出)可以被包括在处理器中或在两个处理器之外,然而经由P-P互连而与处理器连接,使得如果处理器被置于低功率模式中,则任一个或两个处理器的本地高速缓存信息可以被存储在共享高速缓存中。
芯片集1590可以经由接口1596而被耦合到第一总线1516。在一个实施例中,第一总线1516可以是外设组件互连(PCI)总线、或诸如PCI Express总线或另一第三代I/O互连总线的总线,尽管本发明的范畴未被如此限制。
如图15中所示,各种I/O装置1514可以被耦合到第一总线1516,连同将第一总线1516耦合到第二总线1520的总线桥接器1518。在一个实施例中,一个或多个附加处理器1515(诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器)被耦合到第一总线1516。在一个实施例中,第二总线1520可以是低引脚数(LPC)总线。在一个实施例中,各种装置可以被耦合到第二总线1520,包括例如键盘和/或鼠标1522、通信装置1527和存储单元1528,诸如磁盘驱动器或可以包括指令/代码和数据1530的其它海量存储装置。此外,音频I/O 1524可以被耦合到第二总线1520。注意,其它架构也是可能的。例如,代替图15的点对点架构,系统可以实现多点总线或其它此类架构。
现在参考图16,示出的是根据本发明的实施例的第二更具体示例性系统1600的框图。图15和16中相似的元件具有相似的附图标记,并且为了避免模糊图16的其它方面,图15的某些方面已经从图16中省略。
图16示出了处理器1570、1580可以分别包括集成存储器和I/O控制逻辑(“CL”)1572和1582。因此,CL 1572、1582包括集成存储器控制器单元并包括I/O控制逻辑。图16示出了不仅存储器1532、1534被耦合到CL 1572、1582,而且I/O装置1614也被耦合到控制逻辑1572、1582。传统I/O装置1615被耦合到芯片集1590。
现在参考图17,示出的是根据本发明的实施例的SoC 1700的框图。图13中相似的元件具有相似的附图标记。此外,虚线方框是更高级SoC上的可选特征。在图17中,互连单元1702被耦合到:应用处理器1710,其包括一组一个或多个核1302A-N(其包括高速缓存单元1304A-N)以及共享高速缓存单元1306;系统代理单元1310;总线控制器单元1316;集成存储器控制器单元1314;一组或一个或多个协处理器1720,其可以包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1730;直接存储器存取(DMA)单元1732;和用于耦合到一个或多个外部显示器的显示单元1740。在一个实施例中,协处理器1720包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
本文公开的机制的实施例可以采用硬件、软件、固件或这些实现方法的组合来实现。本发明的实施例可被实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置和至少一个输出装置。
程序代码(诸如图15中所示的代码1530)可以被应用于输入指令以执行本文描述的功能并生成输出信息。输出信息可以以已知的方式而被应用于一个或多个输出装置。出于本申请的目的,处理系统包括具有处理器的任何系统,诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)、或微处理器。
程序代码可以用高级过程或面向对象的编程语言来实现,以与处理系统进行通信。如果期望的话,程序代码也可以用汇编语言或机器语言来实现。事实上,本文描述的机制在范畴上不限于任何特定的编程语言。在任何情况下,语言可能是编译的或解译的语言。
至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的表示性指令来实现,该表示性指令表示处理器内的各种逻辑,当被机器读时,该表示性指令使机器制作用于执行本文描述的技术的逻辑。这种被称为“IP核”的表示可被存储在有形的机器可读介质上,并被提供给各种客户或制造设施以加载到实际制作逻辑或处理器的制作机器中。
这种机器可读存储介质可以包括但不限于由机器或装置制造或形成的物品的非暂时性有形布置,包括存储介质,诸如硬盘、任何其它类型的盘(包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)、和磁光盘)、半导体装置(诸如只读存储器(ROM),诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)的随机存取存储器(RAM),可擦除可编程只读存储器(EPROM),闪速存储器,电可擦除可编程只读存储器(EEPROM),相变存储器(PCM)、磁卡或光卡)、或适合于存储电子指令的任何其它介质。
因此,本发明的实施例还包括包含指令或包含设计数据的非暂时性有形机器可读介质(诸如硬件描述语言(HDL)),其定义了本文描述的结构、电路、设备、处理器和/或系统特征。这些实施例也可以被称为程序产品。
仿真(包括二进制转化、代码变形等)
在一些情况下,指令转换器可以被用于将指令从源指令集转换成目标指令集。例如,指令转换器可以将指令转化(例如,使用静态二进制转化、包括动态编译的动态二进制转化)、变形、仿真或以其它方式转换成要由核处理的一个或多个其它指令。指令转换器可以采用软件、硬件、固件或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图18是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示实施例中,指令转换器是软件指令转换器,尽管备选地,指令转换器可以采用软件、固件、硬件或其各种组合来实现。图18示出了可以使用x86编译器1804来编译高级语言1802中的程序,以生成x86二进制代码1806,该代码可以由具有至少一个x86指令集核的处理器1816来原生地执行。具有至少一个x86指令集核的处理器1816表示能够通过兼容地执行或以其它方式处理(1)Intel x86指令集核的大部分指令集、或(2)目标代码版本的应用或目标是在具有至少一个x86指令集核的Intel处理器上运行的其它软件来执行与具有至少一个x86指令集核的Intel处理器基本相同的功能以便实现与具有至少一个x86指令集核的Intel处理器基本相同的结果的任何处理器。x86编译器1804表示可操作以生成x86二进制代码1806(例如,目标代码)的编译器,该代码可以在具有附加链接处理或不具有附加链接处理的情况下在具有至少一个x86指令集核的处理器1816上被执行。类似地,图18示出了可以使用备选指令集编译器1808来编译高级语言1802中的程序,以生成备选指令集二进制代码1810,该备选指令集二进制代码1810可以由没有至少一个x86指令集核的处理器1814(例如,具有执行加利福尼亚州桑尼维尔市的MIPS科技的MIPS指令集;加利福尼亚州森尼维尔市ARM控股的ARM指令集的核的处理器)来原生地执行。指令转换器1812被用于将x86二进制代码1806转换成可由不具有x86指令集核的处理器1814来原生地执行的代码。此转换后的代码不太可能与备选指令集二进制代码1810相同,因为很难制作能够实现这一点的指令转换器;然而,转换后的代码将完成一般操作,并由来自备选指令集的指令组成。因此,指令转换器1812表示软件、固件、硬件或其组合,其通过仿真、模拟或任何其它过程,允许不具有x86指令集处理器或核的处理器或其它电子装置执行x86二进制代码1806。
示例
设备、方法和非暂时性机器可读介质的示例性实施例被详述如下。
示例1. 一种设备,包括:解码器,所述解码器用于解码第一指令,所述第一指令至少具有针对第一操作码的第一字段,所述第一操作码用于指示执行电路将在第一寄存器中设置第一标志,所述第一标志用于指示在事件发生时将使程序流程重定向到异常处理程序的操作模式;以及执行电路,所述执行电路用于执行所解码的第一指令以在所述第一寄存器中设置用于指示所述操作模式的所述第一标志,并将异常处理程序的地址存储在第二寄存器中。
示例2. 根据示例1所述的设备,其中所述第一指令具有针对所述异常处理程序的所述地址的第二字段。
示例3. 根据示例1所述的设备,进一步包括:高速缓存,在所述高速缓存中的条目包括第二标志,所述第二标志在被设置时标识在驱逐时使所述第一寄存器中的所述第一标志被清除并使所述条目中的所述第二标志被清除的条目。
示例4. 根据示例1所述的设备,所述解码器用于解码第二指令,所述第二指令具有针对第二操作码的第二字段,所述第二操作码用于指示所述执行电路将清除所述第一寄存器中的所述第一标志,并且所述执行电路将执行所解码的第二指令以清除所述第一寄存器中的所述第一标志。
示例5. 根据示例1所述的设备,所述解码器用于解码第二指令,所述第二指令具有针对第二操作码的第二字段,所述第二操作码用于指示所述执行电路将把存储在第一指令指针寄存器中的值存储到存储器中的位置,并且所述执行电路将执行所解码的第二指令以将存储在所述第一指令指针寄存器中的所述值存储到所述存储器中的所述位置。
示例6. 根据示例1所述的设备,所述解码器用于解码第二指令,所述第二指令具有针对第二操作码的第二字段,所述第二操作码用于指示执行电路将利用在存储器中的位置处的数据来加载通过值所标识的高速缓存,并且所述执行电路用于执行所解码的第二指令以利用在所述存储器中的所述位置处的数据来加载通过所述值所标识的所述高速缓存。
示例7. 根据示例1所述的设备,所述执行电路用于将第一指令指针寄存器中的地址复制到第二指令指针寄存器中,并用于将所述异常处理程序的所述地址复制到所述第一指令指针寄存器中。
示例8. 一种方法,包括:解码第一指令,所述第一指令具有针对第一操作码的第一字段,所述第一操作码指示执行电路将在第一寄存器中设置第一标志,所述第一标志指示在事件发生时将程序流程重定向到异常处理程序的操作模式;以及执行所解码的第一指令以在所述第一寄存器中设置指示所述操作模式的所述第一标志,并将异常处理程序的地址存储在第二寄存器中。
示例9. 根据示例8所述的方法,其中所述第一指令具有针对所述异常处理程序的所述地址的第二字段。
示例10. 根据示例8所述的方法,进一步包括:在高速缓存中的条目中设置第二标志;以及当从所述高速缓存驱逐所述条目时,清除所述第一寄存器中的所述第一标志以及所述第二标志。
示例11. 根据示例8所述的方法,进一步包括:解码第二指令,所述第二指令具有针对第二操作码的第二字段,所述第二操作码指示所述执行电路将清除所述第一寄存器中的所述第一标志;以及执行所解码的第二指令以清除所述第一寄存器中的所述第一标志。
示例12. 根据示例8所述的方法,进一步包括:解码第二指令,所述第二指令具有针对第二操作码的第二字段,所述第二操作码指示所述执行电路将把存储在第一指令指针寄存器中的值存储到存储器中的位置;以及执行所解码的第二指令以将存储在所述第一指令指针寄存器中的所述值存储到所述存储器中的所述位置。
示例13. 根据示例8所述的方法,进一步包括:解码第二指令,所述第二指令具有针对第二操作码的第二字段,所述第二操作码指示执行电路将利用在存储器中的位置处的数据来加载通过值所标识的高速缓存;以及执行所解码的第二指令以利用在所述存储器中的所述位置处的数据来加载通过所述值所标识的所述高速缓存。
示例14. 根据示例8所述的方法,进一步包括:将第一指令指针寄存器中的地址复制到第二指令指针寄存器中;以及将所述异常处理程序的所述地址复制到所述第一指令指针寄存器中。
示例15. 一种存储至少一个指令的非暂时性机器可读介质,所述至少一个指令在被执行时使处理器执行方法,所述方法包括:解码第一指令,所述第一指令具有针对第一操作码的第一字段,所述第一操作码指示执行电路将在第一寄存器中设置第一标志,所述第一标志指示在事件发生时将程序流程重定向到异常处理程序的操作模式;以及执行所解码的第一指令以在所述第一寄存器中设置指示所述操作模式的所述第一标志,并将异常处理程序的地址存储在第二寄存器中。
示例16. 根据示例15所述的非暂时性机器可读介质,其中所述第一指令具有针对所述异常处理程序的所述地址的第二字段。
示例17. 根据示例15所述的非暂时性机器可读介质,进一步包括:在高速缓存中的条目中设置第二标志;以及当从所述高速缓存驱逐所述条目时,清除所述第一寄存器中的所述第一标志以及所述第二标志。
示例18. 根据示例15所述的非暂时性机器可读介质,进一步包括:解码第二指令,所述第二指令具有针对第二操作码的第二字段,所述第二操作码指示所述执行电路将清除所述第一寄存器中的所述第一标志;以及执行所解码的第二指令以清除所述第一寄存器中的所述第一标志。
示例19. 根据示例15所述的非暂时性机器可读介质,进一步包括:解码第二指令,所述第二指令具有针对第二操作码的第二字段,所述第二操作码指示所述执行电路将把存储在第一指令指针寄存器中的值存储到存储器中的位置;以及执行所解码的第二指令以将存储在所述第一指令指针寄存器中的所述值存储到所述存储器中的所述位置。
示例20. 根据示例15所述的非暂时性机器可读介质,进一步包括:解码第二指令,所述第二指令具有针对第二操作码的第二字段,所述第二操作码指示执行电路将利用在存储器中的位置处的数据来加载通过值所标识的高速缓存;以及执行所解码的第二指令以利用在所述存储器中的所述位置处的数据来加载通过所述值所标识的所述高速缓存。
在前述说明书中,本发明的实施例已经参考其具体示例性实施例而被描述。然而,将明显的是,在不脱离如所附权利要求中阐述的本发明的更广泛精神和范畴的情况下,可以对其进行各种修改和改变。因此,说明书和附图被认为是在说明性而不是局限性的意义上。
如本文所示的流程图提供了各种过程动作的序列的示例。流程图可以指示将由软件或固件例程所执行的操作以及物理操作。在一个实施例中,流程图可以示出有限状态机(FSM)的状态,其可以采用硬件和/或软件来实现。尽管以特定的序列或顺序示出,除非另有说明,否则动作的顺序可被修改。因此,所示实施例应该仅被理解为示例,并且该过程可以采用不同的顺序来执行,并且一些动作可以并行执行。另外,在各种实施例中可以省略一个或多个动作;因此,并非每个实施例都需要所有动作。其它过程流程是可能的。
本发明的实施例可以包括上面已经描述的各种步骤。所述步骤可以采用机器可执行指令来实现,所述指令可被用于使通用或专用处理器执行所述步骤。备选地,这些步骤可以由包含用于执行所述步骤的硬连线逻辑的特定硬件组件来执行,或者由编程的计算机组件和定制的硬件组件的任意组合来执行。
如本文所述,指令可以指硬件的特定配置,诸如被配置成执行某些操作或具有存储在采用非暂时性计算机可读介质来实施的存储器中的预确定功能性或软件指令的专用集成电路(ASIC)。因此,图中所示的技术可以使用在一个或多个电子装置(例如,终端站、网络元件等)上存储和执行的代码和数据来实现。这种电子装置使用计算机机器可读介质(诸如非暂时性计算机机器可读存储介质(例如,磁盘;光盘;随机存取存储器;只读存储器;闪速存储器装置;相变存储器)和暂时性计算机机器可读通信介质(例如,电、光、声或其它形式的传播信号——诸如载波、红外信号、数字信号等))来存储和通信代码和数据。此外,这种电子装置通常包括一组耦合到一个或多个其它组件的一个或多个处理器,诸如一个或多个存储装置(非暂时性机器可读存储介质)、用户输入/输出装置(例如键盘、触摸屏和/或显示器)和网络连接。处理器组和其它组件的耦合通常通过一个或多个总线和桥接器(也称为总线控制器)进行。携带网络业务的存储装置和信号分别表示一个或多个机器可读存储介质和机器可读通信介质。因此,给定电子装置的存储装置通常存储用于在该电子装置的一个或多个处理器的集合上执行的代码和/或数据。当然,本发明的实施例的一个或多个部分可以使用软件、固件和/或硬件的不同组合来实现。贯穿此详细描述,出于解释的目的,阐述了许多具体细节,以便提供对本发明的透彻理解。然而,对于本领域技术人员将显而易见的是,本发明可以在没有这些具体细节中的一些细节的情况下被实践。在某些情形下,没有详细描述众所周知的结构和功能,以免模糊本发明的主题。因此,本发明的范畴和精神应该根据随附的权利要求来判断。
Claims (20)
1.一种用于战胜边信道攻击的设备,包括:
解码器,所述解码器用于解码第一指令,所述第一指令至少具有针对第一操作码的第一字段,所述第一操作码用于指示执行电路将在第一寄存器中设置第一标志,所述第一标志用于指示在事件发生时将使程序流程重定向到异常处理程序的操作模式;以及
执行电路,所述执行电路用于执行所解码的第一指令以在所述第一寄存器中设置用于指示所述操作模式的所述第一标志,并将异常处理程序的地址存储在第二寄存器中。
2.根据权利要求1所述的设备,其中所述第一指令具有针对所述异常处理程序的所述地址的第二字段。
3.根据权利要求1所述的设备,进一步包括:
高速缓存,在所述高速缓存中的条目包括第二标志,所述第二标志在被设置时标识在驱逐时使所述第一寄存器中的所述第一标志被清除并使所述条目中的所述第二标志被清除的条目。
4.根据权利要求1所述的设备,所述解码器还用于解码第二指令,所述第二指令具有针对第二操作码的第二字段,所述第二操作码用于指示所述执行电路将清除所述第一寄存器中的所述第一标志,并且所述执行电路还将执行所解码的第二指令以清除所述第一寄存器中的所述第一标志。
5.根据权利要求1所述的设备,所述解码器还用于解码第二指令,所述第二指令具有针对第二操作码的第二字段,所述第二操作码用于指示所述执行电路将把存储在第一指令指针寄存器中的值存储到存储器中的位置,并且所述执行电路还将执行所解码的第二指令以将存储在所述第一指令指针寄存器中的所述值存储到所述存储器中的所述位置。
6.根据权利要求1所述的设备,所述解码器还用于解码第二指令,所述第二指令具有针对第二操作码的第二字段,所述第二操作码用于指示执行电路将利用在存储器中的位置处的数据来加载通过值所标识的高速缓存,并且所述执行电路还将执行所解码的第二指令以利用在所述存储器中的所述位置处的数据来加载通过所述值所标识的所述高速缓存。
7.根据权利要求1所述的设备,所述执行电路还用于将第一指令指针寄存器中的地址复制到第二指令指针寄存器中,并用于将所述异常处理程序的所述地址复制到所述第一指令指针寄存器中。
8.一种用于战胜边信道攻击的方法,包括:
解码第一指令,所述第一指令具有针对第一操作码的第一字段,所述第一操作码指示执行电路将在第一寄存器中设置第一标志,所述第一标志指示在事件发生时将程序流程重定向到异常处理程序的操作模式;以及
执行所解码的第一指令以在所述第一寄存器中设置指示所述操作模式的所述第一标志,并将异常处理程序的地址存储在第二寄存器中。
9.根据权利要求8所述的方法,其中所述第一指令具有针对所述异常处理程序的所述地址的第二字段。
10.根据权利要求8所述的方法,进一步包括:
在高速缓存中的条目中设置第二标志;以及
当从所述高速缓存驱逐所述条目时,清除所述第一寄存器中的所述第一标志以及所述第二标志。
11.根据权利要求8所述的方法,进一步包括:
解码第二指令,所述第二指令具有针对第二操作码的第二字段,所述第二操作码指示所述执行电路将清除所述第一寄存器中的所述第一标志;以及
执行所解码的第二指令以清除所述第一寄存器中的所述第一标志。
12.根据权利要求8所述的方法,进一步包括:
解码第二指令,所述第二指令具有针对第二操作码的第二字段,所述第二操作码指示所述执行电路将把存储在第一指令指针寄存器中的值存储到存储器中的位置;以及
执行所解码的第二指令以将存储在所述第一指令指针寄存器中的所述值存储到所述存储器中的所述位置。
13.根据权利要求8所述的方法,进一步包括:
解码第二指令,所述第二指令具有针对第二操作码的第二字段,所述第二操作码指示执行电路将利用在存储器中的位置处的数据来加载通过值所标识的高速缓存;以及
执行所解码的第二指令以利用在所述存储器中的所述位置处的数据来加载通过所述值所标识的所述高速缓存。
14.根据权利要求8所述的方法,进一步包括:
将第一指令指针寄存器中的地址复制到第二指令指针寄存器中;以及
将所述异常处理程序的所述地址复制到所述第一指令指针寄存器中。
15.一种用于战胜边信道攻击的系统,包括:
存储器;
处理器,所述处理器包括:
解码器,所述解码器用于解码第一指令,所述第一指令至少具有针对第一操作码的第一字段,所述第一操作码用于指示执行电路将在第一寄存器中设置第一标志,所述第一标志用于指示在事件发生时将使程序流程重定向到异常处理程序的操作模式;以及
执行电路,所述执行电路用于执行所解码的第一指令以在所述第一寄存器中设置用于指示所述操作模式的所述第一标志,并将异常处理程序的地址存储在第二寄存器中。
16.根据权利要求15所述的系统,其中所述第一指令具有针对所述异常处理程序的所述地址的第二字段。
17.根据权利要求15所述的系统,所述处理器进一步包括:
高速缓存,在所述高速缓存中的条目包括第二标志,所述第二标志在被设置时标识在驱逐时使所述第一寄存器中的所述第一标志被清除并使所述条目中的所述第二标志被清除的条目。
18.根据权利要求15所述的系统,所述解码器还用于解码第二指令,所述第二指令具有针对第二操作码的第二字段,所述第二操作码用于指示所述执行电路将清除所述第一寄存器中的所述第一标志,并且所述执行电路还将执行所解码的第二指令以清除所述第一寄存器中的所述第一标志。
19.根据权利要求15所述的系统,所述解码器还用于解码第二指令,所述第二指令具有针对第二操作码的第二字段,所述第二操作码用于指示所述执行电路将把存储在第一指令指针寄存器中的值存储到存储器中的位置,并且所述执行电路还将执行所解码的第二指令以将存储在所述第一指令指针寄存器中的所述值存储到所述存储器中的所述位置。
20.一种包括代码的机器可读介质,所述代码在被执行时使机器执行根据权利要求7-14中任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/024733 | 2018-06-29 | ||
US16/024,733 US10922088B2 (en) | 2018-06-29 | 2018-06-29 | Processor instruction support to defeat side-channel attacks |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110659066A true CN110659066A (zh) | 2020-01-07 |
Family
ID=66676291
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910456359.2A Pending CN110659066A (zh) | 2018-06-29 | 2019-05-29 | 用于战胜边信道攻击的处理器指令支持 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10922088B2 (zh) |
EP (1) | EP3588314B1 (zh) |
CN (1) | CN110659066A (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11100223B2 (en) * | 2018-11-02 | 2021-08-24 | United States Of America As Represented By The Secretary Of The Air Force | Core shell liquid metal encapsulates comprising multi-functional ligands and networks comprising same |
US11836244B2 (en) * | 2021-02-04 | 2023-12-05 | Nec Corporation | Clone application detection mechanism for securing trusted execution environments against a malicious operating system |
US20230022096A1 (en) * | 2021-07-22 | 2023-01-26 | Vmware, Inc. | Coherence-based attack detection |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7065633B1 (en) * | 1999-01-28 | 2006-06-20 | Ati International Srl | System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU |
US6408380B1 (en) * | 1999-05-21 | 2002-06-18 | Institute For The Development Of Emerging Architectures, L.L.C. | Execution of an instruction to load two independently selected registers in a single cycle |
US6877085B2 (en) * | 2001-11-30 | 2005-04-05 | Broadcom Corporation | Mechanism for processing speclative LL and SC instructions in a pipelined processor |
US7174405B1 (en) * | 2003-06-06 | 2007-02-06 | Cisco Technology, Inc. | Method and system for replacing a read-modify-write operation with an atomic set-bits or clear-bits operation |
US20070219771A1 (en) * | 2005-12-01 | 2007-09-20 | Verheyen Henry T | Branching and Behavioral Partitioning for a VLIW Processor |
EP1865435A1 (en) * | 2006-06-06 | 2007-12-12 | Texas Instruments France | Enhanced exception handling |
US8407425B2 (en) | 2007-12-28 | 2013-03-26 | Intel Corporation | Obscuring memory access patterns in conjunction with deadlock detection or avoidance |
US8635437B2 (en) * | 2009-02-12 | 2014-01-21 | Via Technologies, Inc. | Pipelined microprocessor with fast conditional branch instructions based on static exception state |
US9405708B1 (en) * | 2015-02-04 | 2016-08-02 | Amazon Technologies, Inc. | Preventing attacks that rely on same-page merging by virtualization environment guests |
-
2018
- 2018-06-29 US US16/024,733 patent/US10922088B2/en active Active
-
2019
- 2019-05-28 EP EP19177146.8A patent/EP3588314B1/en active Active
- 2019-05-29 CN CN201910456359.2A patent/CN110659066A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP3588314A1 (en) | 2020-01-01 |
US10922088B2 (en) | 2021-02-16 |
EP3588314B1 (en) | 2023-04-19 |
US20200004552A1 (en) | 2020-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11681533B2 (en) | Restricted speculative execution mode to prevent observable side effects | |
US20230273846A1 (en) | Hardware apparatuses and methods for memory corruption detection | |
CN107683480B (zh) | 用于支持对受保护容器的实时迁移的处理器、方法、系统和指令 | |
JP6143872B2 (ja) | 装置、方法、およびシステム | |
US9372812B2 (en) | Determining policy actions for the handling of data read/write extended page table violations | |
US11663006B2 (en) | Hardware apparatuses and methods to switch shadow stack pointers | |
CN108334400B (zh) | 为安全飞地管理存储器 | |
EP3757829A1 (en) | Processor instruction support for mitigating controlled-channel and cache-based side-channel attacks | |
US10867092B2 (en) | Avoiding asynchronous enclave exits based on requests to invalidate translation lookaside buffer entries | |
CN109791584B (zh) | 用于标识和避免虚拟机监视程序和客户虚拟机之间的跟踪冲突的处理器扩展 | |
EP3716055A1 (en) | System, apparatus and method for symbolic store address generation for data-parallel processor | |
US9207940B2 (en) | Robust and high performance instructions for system call | |
US20220308980A1 (en) | Apparatus and method for pausing processor trace for efficient analysis | |
EP3588314B1 (en) | Processor instruction support to defeat side-channel attacks | |
CN111353156A (zh) | 可缩放多密钥总存储器加密引擎 | |
WO2018005103A1 (en) | Apparatuses, methods, and systems for memory disambiguation | |
CN112148372A (zh) | 用于推测性侧信道攻击的硬件加载强化 | |
US11243769B2 (en) | Shadow stack ISA extensions to support fast return and event delivery (FRED) architecture | |
US10853078B2 (en) | Method and apparatus for supporting speculative memory optimizations |
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 |