CN113228024A - 用于推测执行的安全预测器 - Google Patents

用于推测执行的安全预测器 Download PDF

Info

Publication number
CN113228024A
CN113228024A CN201980086070.4A CN201980086070A CN113228024A CN 113228024 A CN113228024 A CN 113228024A CN 201980086070 A CN201980086070 A CN 201980086070A CN 113228024 A CN113228024 A CN 113228024A
Authority
CN
China
Prior art keywords
predictor
mode
circuit
entries
integrated circuit
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
Application number
CN201980086070.4A
Other languages
English (en)
Inventor
克尔斯特·阿萨诺维奇
安德鲁·沃特曼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Swift Co ltd
SiFive Inc
Original Assignee
Swift Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Swift Co ltd filed Critical Swift Co ltd
Publication of CN113228024A publication Critical patent/CN113228024A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/556Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2113Multi-level security, e.g. mandatory access control

Abstract

公开了用于推测执行的安全预测器的系统和方法。一些实施方式可以消除或减轻处理器中的边信道攻击,诸如Spectre‑类攻击。例如,用于执行指令的集成电路包括预测器电路,该预测器电路在以第一模式操作时,使用存储在预测器条目集合中的数据来生成预测。例如,集成电路可以被配置为:检测集成电路正在执行的软件的安全域转换;响应于安全域转换,将预测器电路的模式从第一模式改变为第二模式并调用预测器条目集合的重置,其中,第二模式防止使用预测器条目集合中的预测器条目的第一子集;并在完成重置后,将模式改变回第一模式。

Description

用于推测执行的安全预测器
技术领域
本公开涉及用于推测执行的安全预测器。
背景技术
已经公开了依赖处理器分支预测和推测执行的边信道攻击。对于Intel x86处理器,这些攻击中的第一个最初被标记为Spectre,这些攻击的其他变体或类别也存在。简而言之,这些攻击依赖于训练分支预测器来执行攻击者选择的代码,以便在进程/上下文和/或权限级别改变后将目标的秘密数据加载到缓存存储器中。攻击者使用的目标代码可能是来自目标进程或共享库中的代码,因此目标进程执行该代码是合法的。在攻击者进程重新获得对处理器的控制后,攻击者可以测量从缓存中的同一位置读取数据所需的时间,从而确定缓存中存在哪些目标数据,并且因此确定目标进程中数据的价值。减少这些攻击对于安全且可靠的计算非常重要。
附图说明
当结合附图阅读时,从以下详细描述可以最好地理解本公开。需要强调的是,按照惯例,附图的各种特征并非按比例。相反,为了清楚,各种特征的尺寸被任意扩大或缩小。
图1是用于执行具有安全预测的指令的集成电路的示例的框图。
图2是用于安全预测的预测器电路的示例的框图。
图3是用于执行具有安全预测的指令的系统的示例的框图。
图4是用于执行具有安全预测的指令的技术的示例的流程图。
图5是用于在预测器的重置操作期间,基于预测器条目集合的子集来执行具有预测的指令的技术的示例的流程图。
具体实施方式
概述
本文公开了用于推测执行的安全预测器的实施方式。一些实施方式可以被用来比先前已知的解决方案更有效地消除或减少对处理器(例如,诸如x86、ARM和/或RISC-V CPU的CPU)的边信道攻击(例如,Spectre-类攻击)的可能性。
公开了用于安全预测的系统和方法。集成电路(例如,处理器或微控制器)可以被配置为解码和执行指令集架构(ISA)(例如,RISC V指令集)中的指令。集成电路可以实现流水线架构。集成电路可以包括预测器电路(例如,分支预测器),其用于通过减少流水线架构中执行指令的延迟来提高性能。预测器电路访问被放置在条目中的预测数据,这些预测数据可以被用来确定用于相应指令的预测。
集成电路可以被配置为检测针对正在由集成电路执行的软件,何时发生安全域转换。例如,可以基于隐含或明确地解码与安全域转换相关联的指令来检测安全域转换。例如,可以使用用于指示在软件中的安全域边界的特殊指令,或者可以将现有指令解释为使安全域转换。在一些实施方式中,可以基于接收中断信号来检测安全域转换。
当检测到安全域转换时,可以重置预测器的状态,包括预测器条目集合,以防止处于该状态的数据在安全域之间传递信息。由于预测器的状态可能很大并且重置整个状态可能需要多个时钟周期来完成,因此预测器可以被配置为在一种或多种受限模式下操作,以防止预测器在对重置操作指定的时间间隔期间,使用被标记为重置的预测器条目来生成预测。例如,在受限模式中,在重置的时间间隔期间,可以禁止预测器电路生成预测以促进推测执行。例如,在受限模式中,预测器电路可以被配置为在重置的时间间隔期间生成不依赖于预测器条目的静态预测。在一些实施方式中,预测器电路可以包括混合预测器,该混合预测器可以基于其预测器状态的子集来生成预测。例如,在受限模式中,预测器电路可以被配置为基于预测器条目的子集生成预测,而预测器条目中的不相交子集在被重置时不可使用。在一些实施方式中,重置操作的时间间隔的持续时间是固定的,这可以提供诸如防止经由时序变化泄漏信息和/或防止抖动(例如,对于实时应用)的益处。
如本文所用,术语“电路”指被构造为实现一个或多个功能的电子组件(例如,晶体管、电阻器、电容器和/或电感器)的布置。例如,电路可以包括互连以形成共同实现逻辑功能的逻辑门的一个或多个晶体管。
如本文所用,术语“微体系结构状态”指集成电路(例如,处理器或微控制器)的状态(例如,数据位)的一部分,其不能由集成电路执行的软件直接访问。例如,微体系结构状态可以包括存储在缓存中的数据和/或由控制流预测器存储的用于对控制流执行进行预测的数据。
详情
图1是用于执行具有安全预测的指令的集成电路110的示例的框图。例如,集成电路110可以是处理器、微处理器、微控制器或IP核。集成电路110包括预测器电路120和安全域转换检测电路130。例如,预测器电路120可以包括值预测器、存储器依赖预测器、预取预测器、控制流预测器、分支预测器、分支历史表、分支目标缓冲器和/或返回地址堆栈预测器。例如,预测器电路120可以被配置为当在第一模式(例如,标准或正常模式)下操作时,使用存储在从预测器条目集合中的任何中选择的一个或多个条目中的数据来生成用于指令的推测执行的预测。例如,安全域转换检测电路130可以检测集成电路110(例如,处理器)何时进行到不同进程的上下文切换,或从用户进程切换到操作系统(内核模式),或从操作系统切换到虚拟机管理程序(管理程序模式)。在一些实施方式中,安全域转换检测电路130可以基于指令的解码来检测转换,该指令明确或隐含地与安全域的转换相关联。在一些实施方式中,安全域转换检测电路130可以基于接收中断信号来检测转换。预测器电路120包括预测器重置电路140,其被配置为当安全域转换检测电路130检测到安全域转换事件时,重置预测器电路120的状态。例如,预测器条目集合可能全部或部分存储在SRAM中,并且可能需要多个时钟周期来完全重置。当正在执行重置操作时,预测器电路120可以被配置为避免使用被调度以重置的预测器状态中一些或全部(例如,预测器条目的子集)。例如,在用于执行重置的时间间隔期间,预测器电路120可以完全禁止预测、生成不依赖于任何预测器条目的静态预测,或者基于预测器条目集合中的已经被重置的子集(例如,存储在触发器中并且可以在检测到安全域转换时立即重置的条目的子集)来生成预测。例如,预测器电路120可以包括可以使用其预测器条目的子集生成预测的混合预测器。在一些实施方式中,可以在固定持续时间的时间间隔期间执行重置操作,这可以防止以重置延迟的形式泄露信息并防止抖动源(例如,以提高实时应用的性能)。例如,预测器电路120可以被实现为图2的预测器电路210。例如,集成电路110可以被用来实现图4的技术400。
例如,集成电路110可以被配置为使用安全域转换检测电路130,针对由集成电路110正在执行的软件,检测安全域转换,并且响应于安全域转换,将预测器电路的模式120从第一模式改变为第二模式,并且通过向预测器重置电路140输入重置信号来调用该预测器条目集合的重置。第二模式可以防止预测器电路120使用预测器条目集合中的预测器条目的至少第一子集以生成预测。集成电路110可以被配置为在完成预测器状态重置之后,将预测器电路的模式改变为第一模式以恢复正常预测。在一些实施方式中,集成电路110可以被配置为响应于重置的部分完成,将预测器电路120的模式改变为第三模式,该第三模式使得预测器电路120能够使用预测器条目集合中的已经被重置的第二子集,同时防止使用预测器条目集合中的尚未被重置的第三子集。第二子集和第三子集可以是非空并且是第一子集的不相交的子集。集成电路110可以被配置为在重置完成之前,基于第二子集中的预测器条目来生成预测。在一些实施方式中,在第二模式下操作防止预测器电路120生成预测。在一些实施方式中,在第二模式下操作防止预测器电路120使用预测器条目集合中的所有并且使预测器电路120生成静态预测。在一些实施方式中,在第二模式下操作使预测器电路120基于预测器条目集合中的与预测器条目的第一子集不相交的第二子集中的预测器条目来生成预测。例如,预测器电路120当在第一模式下操作时,可以基于根据预测器条目集合的第二子集确定的预测与根据预测器条目集合中的与第二集合不相交的一个或多个相应的附加子集确定的一个或多个预测的组合来生成预测。在一些实施方式中,安全域转换检测电路130被配置为基于对与安全域转换相关联的指令进行解码来检测安全域转换。在一些实施方式中,安全域转换检测电路130被配置为基于接收中断信号来检测安全域转换。在一些实施方式中,在调用重置和将预测器电路的模式改变为第一模式之间的时间间隔具有固定的持续时间,这可以防止经由重置操作的定时泄露信息和/或减少或消除抖动。
图2是用于安全预测的预测器电路210的示例的框图。预测电路210包括预测确定电路230;具有预测器条目的预测数据表240;预测更新电路250和预测器重置电路252。例如,预测确定电路230可以被配置为基于对应于指令的预测数据表240的条目中的数据来确定用于指令的预测260(例如,分支预测或值预测)。然而,当已经检测到安全域转换时,可以将预测器重置信号输入到预测器电路210以使得预测器重置电路252执行存储在预测数据表240中的预测器条目的重置,以及预测模式选择信号可以被输入到预测器电路210以修改预测确定电路生成预测260的方式。例如,改变预测器电路210的模式可以使预测260生成为不依赖于预测数据表240中的预测器条目的静态预测或阻止生成预测260。例如,改变预测器电路210的模式可以使得通过仅访问在重置操作的早期阶段已经被重置的预测数据表240中的预测器条目(例如,存储在触发器中的条目)的子集来生成预测260。例如,预测器电路210可以用在实现图4的技术400中。
例如,预测器电路210可以包括分支预测器并且预测260可以包括对是否将采用本分支指令的预测。例如,预测数据表240的条目可以包括反映最近已经采用对应分支指令的频率的相应计数器(例如,两位饱和计数器)。在一些实施方式中,预测器电路210包括分支历史表。例如,预测数据表240的条目可以包括反映最近对应分支指令的分支历史的相应移位寄存器。例如,预测数据表240的条目可以由程序计数器索引。在第一模式(例如,标准或正常模式)中,预测确定电路230可以被配置为基于对应于指令的预测数据表240的条目中的数据来确定用于该指令的预测260。例如,如果预测数据表240的对应条目中的饱和计数器高于阈值,则可以“采用”用于分支指令的预测260。例如,在第二模式(例如,受限重置模式)中,预测确定电路230可以被配置为将用于指令的预测260确定为静态预测。例如,在第二模式(例如,受限重置模式)中,预测确定电路230可以被配置为基于来自预测器条目集合中的在重置操作的早期阶段中已经被重置并且可用于安全使用的子集的数据来确定用于该指令的预测260。
预测更新电路250被配置为在执行指令后更新预测数据表240。例如,当采用分支指令时,预测更新电路250可以使对应于分支指令的预测数据表240的条目中的饱和计数器递增。例如,当不采用分支指令时,预测更新电路250可以使对应于分支指令的预测数据表240的条目中的饱和计数器递减。
预测器重置电路252可以被配置为对存储在预测数据表240中的预测器条目集合执行重置操作。例如,当检测到安全域转换时,预测器电路可以从检测器电路接收预测器重置信号,这可以使预测器重置电路252启动预测数据表240中的预测器条目的重置。例如,预测数据表240的一些或全部预测器条目可以被存储在SRAM中。重置(例如,将条目值设置为零或一些其他默认值或初始值)所有预测器条目可能需要多个时钟周期。例如,可以在跨越多个时钟周期的时间间隔期间,由预测器重置电路252执行完全重置操作。在一些实施方式中,预测数据表240的一些预测器条目可以被存储在触发器或寄存器中,当接收到预测器重置信号时,其可以在单个时钟周期内被清零或重置。例如,可以在接收到预测器重置信号后的第一个时钟周期内,清零存储在触发器中的预测器条目的子集,而可以在更长时间间隔的过程中,重置被存储在SRAM中的预测器条目的另一个不相交子集(例如,利用对SRAM的不同部分进行一系列写入)。
图3是用于执行具有安全预测的指令的系统300的示例的框图。系统300包括存储指令的存储器302和被配置为执行指令的集成电路310。例如,集成电路310可以是处理器、微处理器、微控制器或IP核。集成电路310包括互连接口电路312;高速缓存314;指令解码缓冲器320,其被配置为存储从存储器302中取出的指令;指令解码器电路330,其被配置为对来自指令解码缓冲器320的指令进行解码并且将对应微指令传递给一个或多个执行资源电路(340、342、344和346)以供执行;预测器电路350;以及安全域转换检测电路360。例如,预测器电路350可以被实现为图2的预测器电路210。例如,集成电路310可以被配置为实现图4的技术400。
互连接口电路312(例如,总线接口电路)被配置为向包括存储器302的外部设备传输数据以及从其接收数据。例如,互连接口电路312可以被配置为从存储器302提取指令并将它们存储在指令解码缓冲器320,同时指令由集成电路310的流水线架构处理。例如,互连接口电路312可以被配置为在流水线的回写阶段期间,将由执行指令产生的数据写入存储器302。例如,互连接口电路312可以提取数据块(例如,指令)。互连接口电路312可以被配置为使用高速缓存314来优化数据传输。
集成电路310包括指令解码缓冲器320,其被配置为存储从存储器302提取的指令,同时它们被解码用于执行。例如,指令解码缓冲器320可以具有有助于集成电路310的流水线和/或超标量架构的深度(例如,4、8、12、16或24条指令)。指令可以是集成电路310支持的指令集合(例如,RISC V指令集合、x86指令集合、ARM指令集合或MIPS指令集合)的成员。
集成电路310包括一个或多个执行资源电路(340、342、344和346),其被配置为执行指令或微指令以支持指令集合。例如,指令集合可以是RISC V指令集合。例如,一个或多个执行资源电路(340、342、344和346)可以包括加法器、移位器(例如桶形移位器)、乘法器和/或浮点单元。一个或多个执行资源电路(340、342、344和346)可以基于执行指令的结果,更新集成电路310的状态,包括内部寄存器和/或标志或状态位(图3中未明确示出)和微架构状态。指令的执行结果也可以被写入存储器302(例如,在流水线执行的后续阶段期间)。
集成电路310包括指令解码器电路330,其被配置为对指令解码缓冲器320中的指令进行解码。指令解码缓冲器320可以使用一个或多个执行资源电路(340、342、344和346),将指令转换成集成电路310内部执行的对应微指令。指令解码器电路330被配置为使用来自预测器电路350的预测来调度用于执行的指令并且实现推测执行。
集成电路310包括预测器电路350,其被配置为生成预测以使得能够推测执行。预测器电路350的预测器条目可以存储用于确定用于指令(例如,分支指令)的预测的数据(例如,计数器)。例如,预测器电路350可以包括值预测器、存储器依赖预测器、预取预测器、控制流预测器、分支预测器、分支历史表、分支目标缓冲器和/或返回地址堆栈预测器。例如,预测器电路350可以被配置为当在第一模式(例如,标准或正常模式)下操作时,使用存储在从预测器条目集合的任何中选择的一个或多个条目中的数据以生成用于指令的推测执行的预测。预测器电路350可以支持预测器条目集合的重置,当在由集成电路310正在执行的软件中发生安全域转换时可以调用该重置,以防止预测器条目的数据被用作边信道信息泄漏。由于重置操作可能需要一个以上的时钟周期来完成,因此预测器电路350还可以支持限制性模式,该模式防止在为执行重置操作分配的时间间隔期间使用为重置而调度的预测器条目。例如,预测器电路350可以支持禁用预测器电路350并且在为重置预测器状态而分配的时间间隔期间防止生成预测的限制性模式。例如,预测器电路350可以支持限制性模式,该模式使预测器电路350在为重置预测器状态分配的时间间隔期间生成静态预测。例如,预测器电路350可以支持限制性模式,该模式使得预测器电路350仅使用在重置操作的早期阶段期间已经被重置的预测器条目的子集来生成预测。在一些实施方式中,预测器电路350是混合预测器,其被配置为基于预测器条目集合的一个或多个子集生成预测。例如,预测器电路350可以使用多数投票方案、子集的固定层级或优先级、从可用子集选择其中的预测的元预测、或基于用于对使用相应子集生成的预测的预测置信度得分,来组合来自预测器条目的多个相应子集的预测。例如,这些混合方案可以被用来在重置操作期间预测器条目集合的部分不可用时确定合理的预测。
集成电路310包括安全域转换电路360,其被配置为检测由集成电路310正在执行的软件何时从一个安全域改变到另一安全域。例如,当集成电路310执行到不同进程的上下文切换、或接收中断、或从用户进程切换到操作系统、或从操作系统切换到虚拟机管理程序时,安全域转换检测电路360可以检测到转换。在一些实施方式中,安全域转换检测电路360可以基于解码(例如,使用指令解码器电路330)与安全域转换相关联的指令来检测安全域转换。解码的指令可以明确或隐含地与安全域的转换相关联。例如,解码的指令可以是专门的指令,其明确目的是发信号告知软件编写者的意图以强制执行就在指令之前或之后的安全域边界。例如,该指令可以是与安全域转换隐含关联的过程调用或返回指令。在一些实施方式中,安全域转换检测电路360可以基于接收中断信号来检测安全域转换。当检测到安全域转换时,安全域转换检测电路360可以向预测器电路350发出模式选择信号和/或重置信号。
例如,集成电路310可以被配置为使用安全域转换检测电路360,对由集成电路310正在执行的软件检测安全域转换,并且响应于安全域转换,将预测器电路的模式350从第一模式改变到第二模式并调用预测器条目集合的重置。第二模式可以防止预测器电路350使用预测器条目集合中的预测器条目的至少第一子集来生成预测。集成电路310可以被配置为在完成重置之后,将预测器电路的模式改变为第一模式以恢复正常预测。在一些实施方式中,集成电路310可以被配置为响应于重置的部分完成,将预测器电路350的模式改变为第三模式,该第三模式使得预测器电路350能够使用预测器条目集合中的已经被重置的第二子集,同时防止使用预测器条目集合中的尚未被重置的第三子集。第二子集和第三子集可以是非空并且是第一子集的不相交的子集。集成电路310可以被配置为在重置完成之前,基于第二子集中的预测器条目来生成预测。在一些实施方式中,在第二模式下操作防止预测器电路350生成预测。在一些实施方式中,在第二模式下操作防止预测器电路350使用预测器条目集合中的所有并且使预测器电路350生成静态预测。在一些实施方式中,在第二模式下操作使预测器电路350基于预测器条目集合中的与预测器条目的第一子集不相交的第二子集中的预测器条目来生成预测。例如,预测器电路350当在第一模式下操作时,可以基于根据预测器条目集合的第二子集确定的预测与根据预测器条目集合中的与第二集合不相交的一个或多个相应的附加子集确定的一个或多个预测的组合来生成预测。在一些实施方式中,安全域转换检测电路360被配置为基于对与安全域转换相关联的指令进行解码来检测安全域转换。在一些实施方式中,安全域转换检测电路360被配置为基于接收中断信号来检测安全域转换。在一些实施方式中,在调用重置和将预测器电路的模式改变为第一模式之间的时间间隔具有固定的持续时间,这可以防止经由重置操作的定时泄露信息和/或减少或消除抖动。
图4是用于执行具有安全预测的指令的技术400的示例的流程图。技术400包括检测用于由集成电路正执行的软件的安全域转换(410);响应于安全域转换,调用预测器条目集合的重置(420)并且将预测器电路的模式从第一模式改变到第二模式(430);在重置时间间隔期间,继续执行将一种或多种限制模式用于限制对预测器条目的访问的预测器电路(440);以及在完成重置之后,将预测器电路的模式改变到第一模式(450),并且继续使用具有对预测器条目的完全访问的第一模式执行(460)。例如,预测器电路可以包括控制流预测器、值预测器、分支预测器、分支历史表、分支目标缓冲器和/或返回地址堆栈预测器。例如,可以使用图1的集成电路110来实现技术400。例如,可以使用图2的预测器电路210来实现技术400。例如,可以使用图3的系统300来实现技术400。
技术400包括对由集成电路(例如,集成电路310)正执行的软件检测安全域转换(410),该集成电路包括预测器电路,该预测器电路被配置为当在第一模式(例如,标准或正常标准)中操作时,使用存储在从预测器条目集合中的任何选择的一个或多个条目中的数据来生成用于指令的推测执行的预测。在一些实施方式中,可以基于解码与安全域转换相关联的指令来检测安全域转换(410)。例如,可以解码可以被用来明确地指示软件中的安全域边界的特殊指令。例如,服务于另一目的的指令(例如,过程调用或返回指令)可以与安全域转换隐含地相关联,并且可以基于对这些隐含关联指令之一的解码来检测安全域转换(410)。在一些实施方式中,基于接收中断信号来检测安全域转换(410)。例如,某些中断可能与安全域转换相关联,或者所有中断都可能与安全域转换相关联。在一些实施方式中,基于对指令进行解码并且还基于与安全域转换相关联的集成电路(例如,处理器)的内部状态来检测安全域转换(410)。例如,可以基于解码或执行异常返回指令并且基于具有与安全域转换相关联的值的目的地的特权模式来检测安全域转换(410),其中,处理器状态记录将返回哪一特权模式。
当(在操作415)已经检测到安全域转换时,技术400包括响应于安全域转换,将预测器电路的模式从第一模式改变到第二模式(430)并调用预测器条目集合的重置(420)。第二模式可以防止预测器电路使用预测器条目集合中的预测器条目的至少第一子集来生成预测。例如,在第二模式下操作可以防止预测器电路生成预测。例如,在第二模式下操作可以防止预测器电路使用预测器条目集合中的所有并且可以使预测器电路生成静态预测。在一些实施方式中,在第二模式下操作使预测器电路基于预测器条目集合中的与预测器条目的第一子集不相交的第二子集中的预测器条目来生成预测。例如,预测器电路可以包括混合预测器,该混合预测器能够基于包括在其预测器状态中的预测器条目的一个或多个子集来生成预测。例如,预测器电路可以使用多数投票方案、子集的固定层级或优先级、从可用子集选择其中的预测的元预测、或基于对使用相应子集生成的预测的预测置信度得分,来组合来自预测器条目的多个相应子集的预测。在正常模式下,预测器电路可以通过组合基于预测器条目集合的多个子集的预测来生成预测。例如,预测器电路当在第一模式下操作时,可以基于根据预测器条目集合的第二子集确定的预测与根据预测器条目集合中的与第二集合不相交的一个或多个相应的附加子集的一个或多个预测的组合来生成预测。例如,在第二模式(例如,限制模式)中,预测器电路可以被配置为仅基于预测器条目的一个或多个子集来确定预测,因为它们在重置操作期间变得可用。
技术400包括继续执行对预测器电路使用在重置时间间隔期间限制对预测器条目的访问的一种或多种限制模式(440)。例如,继续执行指令(440)可以包括使用由在第二模式下操作的预测器电路确定的预测来促进推测执行。在一些实施方式中,当在第二模式下操作时,预测器电路不生成预测,并且在没有推测执行的益处的情况下执行继续(440),直到重置操作完成。例如,图5的技术500可以被实现以利用预测器条目集合的附加部分,因为它们在重置操作期间变得可用以提高预测器的性能以继续推测执行(440)。
当(在操作445)重置完成时,技术400包括在完成重置之后将预测器电路的模式改变为第一模式(例如,标准或正常模式)(450)。在一些实施方式中,在调用重置(420)和将预测器电路的模式改变为第一模式(450)之间的时间间隔具有固定持续时间。将该时间间隔限制为具有固定的持续时间可以提供益处,诸如防止以定时信息的形式跨越安全域边界泄漏信息和/或防止抖动源(例如,对于实时应用)。
在预测器电路的模式已经改变回到第一模式(例如,标准或正常模式)(450)之后,技术400包括使用具有对预测器条目的完全访问权的第一模式继续执行(460)。在用预测更新(例如,使用预测更新电路250)的继续执行(460)一段时间之后,包括预测器条目集合的预测器状态可以稳定并收敛到调整到新安全域内的条件的有用值。图5是用于在预测器的重置操作期间,基于预测器条目集合的子集,执行具有预测的指令的技术500的示例的流程图。
图5是用于在预测器的重置操作期间,基于预测器条目集合的子集执行具有预测的指令的技术500的示例的流程图。技术500包括响应于重置的部分完成,将预测器电路的模式改变到第三模式(例如,附加的限制较少的模式)(510),这使得预测器电路能够使用预测器条目集合中、已经被重置的第二子集同时阻止使用预测器条目集合中的尚未被重置的第三子集。第二子集和第三子集可以是非空且第一子集的不相交的子集。技术500包括在完成重置之前,基于第二子集中的预测器条目生成预测(520)。例如,当这些子集在重置操作期间变得可用时,技术500可以被用来利用混合预测器中的预测器条目的附加子集。
在第一方面,本说明书中描述的主题可以被体现在用于执行指令的集成电路中,该集成电路包括预测器电路,该预测器电路被配置为当在第一模式下操作时,使用存储在从预测器条目集合中的任何选择的一个或多个条目中的数据来生成用于指令的推测执行的预测,其中,该集成电路被配置为:检测由集成电路正执行的软件的安全域转换;响应于安全域转换,将预测器电路的模式从第一模式改变为第二模式并且调用预测器条目集合的重置,其中,第二模式防止预测器电路使用预测器条目集合中的预测器条目的至少第一子集以生成预测;以及在重置完成后,将预测器电路的模式改变为第一模式。
在第二方面,本说明书中描述的主题可以被体现在包括检测正由集成电路执行的软件的安全域转换的方法中,该集成电路包括预测器电路,该预测器电路被配置为当在第一模式下操作时,使用存储在从预测器条目集合中的任何选择的一个或多个条目中的数据来生成用于指令的推测执行的预测;响应于安全域转换,将预测器电路的模式从第一模式改变为第二模式并且调用预测器条目集合的重置,其中,第二模式防止预测器电路使用预测器条目集中的预测器条目的至少第一子集以生成预测;以及在重置完成后,将预测器电路的模式改变为第一模式。
虽然已经结合某些实施例描述了本公开,但是应当理解到,本公开不限于所公开的实施例,相反,旨在涵盖包括在所附权利要求的范围内的各种修改和等效布置,其范围被赋予最广泛的解释,以涵盖法律允许的所有这类修改和等效结构。

Claims (30)

1.一种用于执行指令的集成电路,包括:
预测器电路,所述预测器电路被配置为当在第一模式下操作时,使用存储在从预测器条目集合中的任何一个选择的一个或多个条目中的数据来生成用于指令的推测执行的预测,其中,所述集成电路被配置为:
检测由所述集成电路正执行的软件的安全域转换;
响应于所述安全域转换,将所述预测器电路的模式从所述第一模式改变为第二模式并且调用所述预测器条目集合的重置,其中,所述第二模式防止所述预测器电路使用所述预测器条目集合中的预测器条目的至少第一子集以生成预测;以及
在所述重置完成后,将所述预测器电路的模式改变为所述第一模式。
2.根据权利要求1所述的集成电路,其中,所述集成电路被配置为:
响应于所述重置的部分完成,将所述预测器电路的模式改变为第三模式,所述第三模式使得所述预测器电路能够使用所述预测器条目集合中的已经被重置的第二子集,同时防止使用所述预测器条目集合中的尚未被重置的第三子集,其中,所述第二子集和所述第三子集是非空且与所述第一子集的不相交的子集;以及
在完成所述重置之前,基于所述第二子集中的预测器条目生成预测。
3.根据权利要求1至2中的任一项所述的集成电路,其中,在所述第二模式下操作防止所述预测器电路生成预测。
4.根据权利要求1至2中的任一项所述的集成电路,其中,在所述第二模式下操作防止所述预测器电路使用所述预测器条目集合中的所有并且使所述预测器电路生成静态预测。
5.根据权利要求1所述的集成电路,其中,在所述第二模式下操作使所述预测器电路基于所述预测器条目集合中的与所述预测器条目的所述第一子集不相交的第二子集中的预测器条目来生成预测。
6.根据权利要求5所述的集成电路,其中,所述预测器电路当在所述第一模式下操作时,基于根据所述预测器条目集合的所述第二子集确定的预测与根据所述预测器条目集合中的与所述第二集合不相交的一个或多个相应的附加子集的一个或多个预测的组合来生成预测。
7.根据权利要求1至6中的任一项所述的集成电路,其中,所述集成电路被配置为基于对与安全域转换相关联的指令的解码来检测所述安全域转换。
8.根据权利要求1至7中的任一项所述的集成电路,其中,所述集成电路被配置为基于与安全域转换相关联的所述集成电路的内部状态来检测所述安全域转换。
9.根据权利要求1至8中的任一项所述的集成电路,其中,所述集成电路被配置为基于接收中断信号来检测所述安全域转换。
10.根据权利要求1至9中的任一项所述的集成电路,其中,在调用所述重置和将所述预测器电路的模式改变为所述第一模式之间的时间间隔具有固定持续时间。
11.根据权利要求1至10中的任一项所述的集成电路,其中,所述预测器电路包括控制流预测器。
12.根据权利要求1至10中的任一项所述的集成电路,其中,所述预测器电路包括值预测器。
13.根据权利要求1至10中的任一项所述的集成电路,其中,所述预测器电路包括分支历史表。
14.根据权利要求1至10中的任一项所述的集成电路,其中,所述预测器电路包括分支目标缓冲器。
15.根据权利要求1至10中的任一项所述的集成电路,其中,所述预测器电路包括返回地址堆栈预测器。
16.一种方法,包括:
检测由集成电路正执行的软件的安全域转换,所述集成电路包括预测器电路,所述预测器电路被配置为当在第一模式下操作时,使用存储在从预测器条目集合中的任何一个选择的一个或多个条目中的数据来生成用于指令的推测执行的预测;
响应于所述安全域转换,将所述预测器电路的模式从所述第一模式改变为第二模式并且调用所述预测器条目集合的重置,其中,所述第二模式防止所述预测器电路使用所述预测器条目集合中的预测器条目的至少第一子集以生成预测;以及
在所述重置完成后,将所述预测器电路的模式改变为所述第一模式。
17.根据权利要求16所述的方法,包括:
响应于所述重置的部分完成,将所述预测器电路的模式改变为第三模式,所述第三模式使得所述预测器电路能够使用所述预测器条目集合中的已经被重置的第二子集,同时防止使用所述预测器条目集合中的尚未被重置的第三子集,其中,所述第二子集和所述第三子集是非空且所述第一子集的不相交的子集;以及
在完成所述重置之前,基于所述第二子集中的预测器条目生成预测。
18.根据权利要求16至17中的任一项所述的方法,其中,在所述第二模式下操作防止所述预测器电路生成预测。
19.根据权利要求16至17中的任一项所述的方法,其中,在所述第二模式下操作防止所述预测器电路使用所述预测器条目集合中的所有并且使所述预测器电路生成静态预测。
20.根据权利要求16所述的方法,其中,在所述第二模式下操作使所述预测器电路基于所述预测器条目集合中的与所述预测器条目的所述第一子集不相交的第二子集中的预测器条目来生成预测。
21.根据权利要求20所述的方法,其中,所述预测器电路当在所述第一模式下操作时,基于根据所述预测器条目集合的所述第二子集确定的预测与根据所述预测器条目集合中的与所述第二集合不相交的一个或多个相应的附加子集的一个或多个预测的组合来生成预测。
22.根据权利要求16至21中的任一项所述的方法,其中,基于对与安全域转换相关联的指令的解码来检测所述安全域转换。
23.根据权利要求16至22中的任一项所述的方法,其中,基于与安全域转换相关联的所述集成电路的内部状态来检测所述安全域转换。
24.根据权利要求16至23中的任一项所述的方法,其中,基于接收中断信号来检测所述安全域转换。
25.根据权利要求16至24中的任一项所述的方法,其中,在调用所述重置和将所述预测器电路的模式改变为所述第一模式之间的时间间隔具有固定持续时间。
26.根据权利要求16至25中的任一项所述的方法,其中,所述预测器电路包括控制流预测器。
27.根据权利要求16至25中的任一项所述的方法,其中,所述预测器电路包括值预测器。
28.根据权利要求16至25中的任一项所述的方法,其中,所述预测器电路包括分支历史表。
29.根据权利要求16至25中的任一项所述的方法,其中,所述预测器电路包括分支目标缓冲器。
30.根据权利要求16至25中的任一项所述的方法,其中,所述预测器电路包括返回地址堆栈预测器。
CN201980086070.4A 2018-12-31 2019-12-20 用于推测执行的安全预测器 Pending CN113228024A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862787248P 2018-12-31 2018-12-31
US62/787,248 2018-12-31
US16/362,121 US11429392B2 (en) 2018-12-31 2019-03-22 Secure predictors for speculative execution
US16/362,121 2019-03-22
PCT/US2019/067794 WO2020142262A1 (en) 2018-12-31 2019-12-20 Secure predictors for speculative execution

Publications (1)

Publication Number Publication Date
CN113228024A true CN113228024A (zh) 2021-08-06

Family

ID=71122966

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980086070.4A Pending CN113228024A (zh) 2018-12-31 2019-12-20 用于推测执行的安全预测器

Country Status (5)

Country Link
US (1) US11429392B2 (zh)
EP (1) EP3906493A1 (zh)
KR (1) KR20210110598A (zh)
CN (1) CN113228024A (zh)
WO (1) WO2020142262A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11443044B2 (en) * 2019-09-23 2022-09-13 International Business Machines Corporation Targeted very long delay for increasing speculative execution progression
DE102020134681A1 (de) 2020-01-31 2021-08-05 Intel Corporation Vorrichtungen, verfahren und systeme für anweisungen zum anfordern eines verlaufs-resets eines prozessorkerns
US11436018B2 (en) * 2020-01-31 2022-09-06 Intel Corporation Apparatuses, methods, and systems for instructions to request a history reset of a processor core
US20220206819A1 (en) * 2020-12-26 2022-06-30 Intel Corporation Dynamic detection of speculation vulnerabilities
US11861368B2 (en) * 2022-05-24 2024-01-02 Arm Limited Re-enabling use of prediction table after execution state switch

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5781752A (en) 1996-12-26 1998-07-14 Wisconsin Alumni Research Foundation Table based data speculation circuit for parallel processing computer
US6647490B2 (en) 1999-10-14 2003-11-11 Advanced Micro Devices, Inc. Training line predictor for branch targets
US20090089564A1 (en) * 2006-12-06 2009-04-02 Brickell Ernie F Protecting a Branch Instruction from Side Channel Vulnerabilities
US8555040B2 (en) 2010-05-24 2013-10-08 Apple Inc. Indirect branch target predictor that prevents speculation if mispredict is expected
US9201658B2 (en) 2012-09-24 2015-12-01 Apple Inc. Branch predictor for wide issue, arbitrarily aligned fetch that can cross cache line boundaries
US10001998B2 (en) 2014-04-18 2018-06-19 Oracle International Corporation Dynamically enabled branch prediction
US10540181B2 (en) * 2018-01-19 2020-01-21 Marvell World Trade Ltd. Managing branch prediction information for different contexts
US10705848B2 (en) * 2018-05-24 2020-07-07 Arm Limited TAGE branch predictor with perceptron predictor as fallback predictor
US10831491B2 (en) * 2018-06-29 2020-11-10 Intel Corporation Selective access to partitioned branch transfer buffer (BTB) content

Also Published As

Publication number Publication date
US11429392B2 (en) 2022-08-30
US20200210197A1 (en) 2020-07-02
WO2020142262A1 (en) 2020-07-09
EP3906493A1 (en) 2021-11-10
KR20210110598A (ko) 2021-09-08

Similar Documents

Publication Publication Date Title
US11429392B2 (en) Secure predictors for speculative execution
US11347507B2 (en) Secure control flow prediction
EP3699795B1 (en) Restricted speculative execution
US10540181B2 (en) Managing branch prediction information for different contexts
KR100973951B1 (ko) 오정렬 메모리 액세스 예측
JP4511461B2 (ja) データ処理システムでの処理動作マスキング
KR101793318B1 (ko) 명령어 에뮬레이션 프로세서, 방법 및 시스템
JP5172942B2 (ja) プロセッサによる電力消費を低減する方法、プロセッサ、及び、情報処理システム
US10001998B2 (en) Dynamically enabled branch prediction
CN104978284B (zh) 处理器子程序高速缓冲存储器
US7013383B2 (en) Apparatus and method for managing a processor pipeline in response to exceptions
EP3039532B1 (en) A data processing apparatus and method for controlling performance of speculative vector operations
US10599437B2 (en) Managing obscured branch prediction information
US20220292183A1 (en) Secure control flow prediction
US20110179255A1 (en) Data processing reset operations
US7100012B2 (en) Processor and data cache with data storage unit and tag hit/miss logic operated at a first and second clock frequencies
KR20170100448A (ko) 데이터 스토리지
US20190235873A1 (en) System and method of reducing computer processor power consumption using micro-btb verified edge feature
JP2008527559A (ja) プロセッサ及びその命令発行方法
CN110235103B (zh) 基于块的微架构中具有不同特权等级的模式之间的推测性转变
JP2004503865A (ja) 選択的分岐予測を有するプロセッサ
CN111989657A (zh) 用于控制将指令分配到指令缓存存储区的设备和方法
Feng et al. Constant-Time Loading: Modifying CPU Pipeline to Defeat Cache Side-Channel Attacks
US10324727B2 (en) Memory dependence prediction
JPH1049373A (ja) パイプライン・デジタル・プロセッサにおいて多重で高精度の事象を操作する方法と装置

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40058957

Country of ref document: HK