CN113434867A - 利用间接有效表的Spectre修复的方法和微处理器 - Google Patents
利用间接有效表的Spectre修复的方法和微处理器 Download PDFInfo
- Publication number
- CN113434867A CN113434867A CN202110763288.8A CN202110763288A CN113434867A CN 113434867 A CN113434867 A CN 113434867A CN 202110763288 A CN202110763288 A CN 202110763288A CN 113434867 A CN113434867 A CN 113434867A
- Authority
- CN
- China
- Prior art keywords
- branch
- indirect
- valid
- branch prediction
- instruction
- 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 title claims abstract description 39
- 238000001228 spectrum Methods 0.000 title abstract description 12
- 230000008439 repair process Effects 0.000 title abstract description 7
- 230000007704 transition Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 description 9
- 230000000116 mitigating effect Effects 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 7
- 239000000872 buffer Substances 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 230000004888 barrier function Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000013479 data entry Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 101100110009 Caenorhabditis elegans asd-2 gene Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- 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/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- 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/52—Monitoring 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
-
- 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30061—Multi-way branch instructions, e.g. CASE
-
- 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
- G06F9/3848—Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Hardware Redundancy (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
Abstract
本申请涉及利用间接有效表的Spectre修复的方法和微处理器。在一个实施例中,一种微处理器包括:分支预测表,其包括多个条目,其中,所述多个条目中的至少一部分与间接分支类型相对应;以及间接有效表;其中,基于间接分支指令取指,所述分支预测表中的与间接分支指令相对应的条目基于对所述间接有效表中的相应条目的清除而被配置为无效。
Description
技术领域
本发明通常涉及微处理器,并且具体地涉及微处理器安全。
背景技术
在2018年早期,研究人员发布了与微处理器的潜在安全漏洞有关的信息,并且具体地,与可以允许恶意代码使存储在计算机芯片中的特权数据(例如,秘密或私有数据,诸如属于在微处理器上运行的其它程序的数据、仅管理员可用的数据等)暴露的安全缺陷有关的信息。存在安全缺陷的若干变化,其中两个归类为Spectre(幽灵)的通用标签并且第三个称为Meltdown。这些漏洞通过对现代微处理器中使用的推测执行和高速缓存机制的开发而产生。
存在Spectre漏洞的两种变体。第一种(有时被称为边界校验旁路)涉及恶意代码,该恶意代码引起内核模式中的错误推测并且间接地学习对高速缓存的访问模式,因而推测性地访问内核存储器以访问特权数据。第二变体(有时称为分支目标注入)使用间接分支预测来欺骗微处理器推测地执行到其原本将不执行的存储器位置中。如果执行这些指令可以在高速缓存中留下可使用高速缓存推断攻击来检测的状态,则攻击者然后可以访问内核存储器的内容。
公开的缓解Spectre漏洞的尝试包括针对第一变体(变体I)的静态分析和防御、以及针对第二变体(变体II)(其是本发明的关注点)的微代码更新,其中该微代码更新采用两种值得注意的缓解技术的形式:间接分支限制推测(IBRS)和间接分支预测器(有时也称为“预测”)屏障(IBPB)形式的。IBRS防止较低特权等级代码中的间接分支影响较高特权等级代码中的预测。IBRS具有变体,其中也防止较高特权等级代码影响较低特权等级代码中的预测(因此需要准确的特权等级匹配)。IBPB清除分支目标地址高速缓存(BTAC)以用于在用户模式或访客模式上下文切换之间运行的间接分支推测。
发明内容
在一个实施例中,一种微处理器包括:分支预测表,其包括多个条目,其中,所述多个条目中的至少一部分与间接分支类型相对应;以及间接有效表;其中,基于间接分支指令取指,所述分支预测表中的与间接分支指令相对应的条目基于对所述间接有效表中的相应条目的清除而被配置为无效。
在检查以下附图和详细描述时,本发明的其它系统、方法、特征和优点对于本领域的技术人员将是明显的或变得明显。所有这样的附加系统、方法、特征和优点旨在被包括在本说明书内、本发明的范围内,并且受所附权利要求的保护。
附图说明
参考以下附图,可以更好地理解本发明的各个方面。不必按比例绘制附图中的组件,而是将重点放在清楚地例示本发明的原理上。此外,在附图中,相同的附图标记在多个视图中表示相应部件。
图1A是示出实现分支预测安全系统的实施例的微处理器所用的示例分支单元流水线的框图。
图1B是示出图1A中所示的分支单元流水线的示例前端的示意图。
图2是示出部分地基于对Spectre变体II漏洞的间接分支限制推测(IBRS)缓解技术的示例分支预测安全系统的实施例的示意图。
图3是示出部分地基于对Spectre变体II漏洞的间接分支预测器屏障(IBPB)缓解技术的示例分支预测安全系统的实施例的示意图。
图4是示出基于IBRS的示例分支预测安全方法的实施例的流程图。
图5是示出基于IBPB的示例分支预测安全方法的实施例的流程图。
具体实施方式
公开了用于微处理器的基于间接分支限制推测(IBRS)和间接分支预测器屏障(IBPB)缓解技术来提供Spectre修复的分支预测安全系统和方法的某些实施例。IBRS防止较低特权等级代码中的间接分支影响较高特权等级代码中的预测。IBRS还具有变体,在该变体中,也防止较高特权等级代码影响较低特权等级代码中的预测(例如,因此需要准确的特权等级匹配)。在一个实施例中,分支预测安全系统通过在预测表(例如,分支目标地址高速缓存或BTAC)条目中使用额外两(2)个标签位表示使用的多个(例如,四(4)个)特权状态来实现IBRS。将这2个位称为预测器模式,但未公开在BTAC中存在这些位。而是,如可以最好地理解的,如IBPB那样,当微代码转变到更高特权模式时,看上去会清除预测器。与特权等级和预测器模式有关的附加信息可以在属于的美国专利申请公开号20200133679中找到。如果分支指令未通过特权等级测试,则分支预测安全系统的实施例使分支指令未命中并且不被预测。IBPB在从较低特权代码转变为较高特权代码时清除间接分支。在一个实施例中,分支预测安全系统通过针对间接分支指令添加单独的间接有效表来实现IBPB。间接有效表可以在单个时钟周期中被清除,这是因为所有位被同时清除。在分支预测表(例如,BTAC)读取时,间接分支指令应具有要被读取作为分支指令的正常有效位以及间接有效位。基于间接有效表中的对应条目的清除,将分支预测表配置为无效。
另外,IBRS和IBPB是用于Spectre II变体的两种缓解技术。然而,实现细节已留给各芯片制造商。在一些情况下,硬件修复已经导致性能问题,这并不意外,因为现代处理器的推测处理起因于需要经由硬件来加速处理。此外,一些技术(如IBPB,其中间接分支被清除)对于大型分支预测表(诸如BTAC等)是不可行的。例如,当前BTAC可能具有四千(4k)个条目(具有多个路),各条目九十(90)位宽,其中散布并存储有分支类型的混合。针对所有分支条目在各周期清除各有效位条目(例如,设置为零)消耗相当大的功率并且是浪费的。此外,创建如下的表(阵列)是不可行的,其中,该表(阵列)在不顺次读取表中的每个条目的情况下基于也存储在该表中的类型数据有条件地清除有效位条目,这至少部分地因所需的周期数量而不切实际。相反,分支预测安全系统的某些实施例通过以下来规避这些和/或其它挑战:将(预测器模式)标签添加至预测表以使得能够确定当前预测器模式是否等于或大于由标签指示的预测器模式、以及/或者使用小的(例如,在一些实施例中为单个位的条目的多个行,但也可以使用每行的附加条目或者一个或多个附加小表,诸如BTAC中通常用于主要有效条目的用于实现快速清除的附加条目或表)间接有效表来在监督器与用户代码之间转变时在单个时钟周期中清除有效条目。因此,当与其它IBRS/IBPB方法相比时,改进了速度和效率方面的性能。
已经总结了本发明的分支预测安全系统的某些特征,现在将详细参考如附图中所示的分支预测安全系统的描述。虽然将结合这些附图描述分支预测安全系统,但是不旨在将其限制为本文所公开的一个或多个实施例。即,虽然本发明容许修改和替代形式,但是其具体实施例在附图中以示例的方式示出并且本文将详细描述为足以使本领域技术人员理解。然而,应当理解,附图及其详细描述不旨在将本发明限制为所公开的特定形式。相反,本发明将覆盖落在由所附权利要求限定的本发明的精神和范围内的所有修改、等同物和替代物。如贯穿本申请所使用的,词语“可以”是以许可的意义(即,意味着具有潜在性)而不是强制的意义(即,意味着必须)来使用的。类似地,词语“包括(include)”、“包括(including)”和“包括(includes)”意味着包括但不限于。
各种单元、模块、电路、逻辑或其它组件可以被描述为“被配置为”进行一个或多个任务。在这样的背景下,“被配置为”是结构的广泛叙述,该结构通常意味着“具有电路或其它物理结构”,该电路或其它物理结构在操作期间进行或能够进行一个或多个任务。电路可以是专用电路,或者是在编码指令的控制下操作的更通用的处理电路。即,在描述本发明的各种实现的某些方面或特征时,本文可以使用如“单元”、“模块”、“电路”、“逻辑”和“组件”的术语。本领域技术人员将理解,利用电路来实现相应的特征,无论该电路是专用电路还是在微编码指令控制下操作的更通用的电路。
此外,单元/模块/电路/逻辑/组件可以被配置为即使在该单元/模块/电路/逻辑/组件当前不在操作中时也进行任务。叙述被配置为进行一个或多个任务的单元/模块/电路/逻辑/组件明确地旨在针对该单元/模块/电路/逻辑/组件不进行功能性限定。对此,本领域技术人员将了解,电路元件的具体结构或互连将通常由设计自动化工具的编译器(诸如寄存器传送语言(RTL)编译器等)来确定。RTL编译器对非常类似于汇编语言代码的脚本进行操作,以将脚本编译成用于最终电路的布局或制造的形式。
即,使用更高级软件工具来设计集成电路(诸如本发明的集成电路等),以对电路的期望功能操作进行建模。如众所周知的,“电子设计自动化”(或EDA)是用于设计电子系统(诸如集成电路等)的软件工具的类别。EDA工具还用于将设计功能编程到现场可编程门阵列(FPGA)中。如Verilog和甚高速集成电路硬件描述语言(VHDL)的硬件描述语言(HDL)被用于创建电路的高级表示,从该高级表示可以得到低级表示和最终的实际布线。实际上,由于现代半导体芯片可以具有数十亿个组件,因此EDA工具被认为对于它们的设计是必要的。实际上,电路设计者使用如C/C++的编程语言来指定操作功能。EDA软件工具将该指定功能转换成RTL。然后,硬件描述语言(例如Verilog)将RTL转换成离散的门网表。该网表定义由例如铸造厂生产的实际电路。实际上,这些工具因其在促进电子和数字系统的设计工艺中的作用和用途而众所周知和理解,因此本文不需要描述。
图1A示出微处理器10的示例性分支单元流水线的实施例。应当了解,为了简洁以及易于解释和说明,本文省略了微处理器10的某些已知组件。如已知的,流水线架构提供在执行中重叠的多个指令,其中各个级称为管道级。分支单元流水线中所示的框可以各自根据一个或多个级来实施,这些级在框的左侧示出并且在所描绘的实施例中由从上至下按顺序前进并且被重定向(如箭头所示)的大写字母C、I、B、U、L、M、F、G、W、X、E、S、W、Y和Z表示。本领域的普通技术人员应了解,图1A中所描绘的级的数量和/或布置仅说明一个示例性实施例,并且在一些实施例中,可以实现级的不同数量和/或布置,因此预期在本发明的范围内。本领域的普通技术人员还应了解,框提供对分支流水线的功能性的一般描述,并且为了简洁,本文省略了本领域的普通技术人员已知的相关联逻辑或电路。例如,本领域的普通技术人员应了解,如已知的,流水线的各级可以由时钟流水线寄存器或锁存器分开。作为另一示例,虽然图1A中未明确示出,但本领域的普通技术人员应了解,前端处的操作涉及与指令高速缓存的数据交换或交互。
指令高速缓存是微处理器内的随机存取存储器装置,微处理器将最近从较大高速缓存(例如,L2高速缓存、L3高速缓存)或系统存储器获取和/或预获取(例如,通过总线接口单元从DRAM获取和/或预获取)并且由微处理器在运行ISA机器语言程序的过程中进行的ISA机器语言程序的指令(诸如x86 ISA机器语言指令等)放入指令高速缓存中。ISA定义保持要进行的下一ISA指令的存储器地址(由x86 ISA定义为指令指针(IP),但有时称为程序计数器(PC))的指令地址寄存器,并且微处理器在其运行机器语言程序以控制程序的流程时更新指令地址寄存器内容。为了随后在下一次机器语言程序流执行时基于指令地址寄存器内容从指令高速缓存而不是从系统存储器更快地拾取ISA指令的目的,对ISA指令进行高速缓存,使得寄存器保持指令高速缓存中所存在的ISA指令的存储器地址。特别地,基于保持在指令地址寄存器中的存储器地址(例如,IP)而非排他性地基于由加载或存储指令指定的存储器地址来访问指令高速缓存。因此,将ISA指令保持为数据(诸如可存在于采用软件转译器的系统的硬件部分中等)、并且排他地基于加载/存储地址而不是通过指令地址寄存器值来访问的专用数据高速缓存不是指令高速缓存。此外,为了本发明的目的,对指令和数据进行高速缓存(即,基于指令地址寄存器值和加载/存储地址,而不是排他地基于加载/存储地址所访问)的统一高速缓存旨在被包括在指令高速缓存的定义中。
特别注意图1A的微处理器10的分支单元流水线,微处理器10包括流水线微处理器,在一个实施例中,该流水线微处理器的指令集基本上符合x86架构指令集。如本领域的普通技术人员从本文提供的描述中将了解的,本发明可以以各种不同的电路结构和架构来实现,并且图1A中所示的架构仅是许多合适的架构之一。示例性微处理器10包括快速预测器12、分支目标地址高速缓存(BTAC)14、指令字节队列(XIB)16、分支解码器18、格式指令队列(FIQ)/循环队列20、指令转译器22、寄存器别名表(RAT)/保留站(RS)24、功能单元(例如,整数单元、浮点单元等)26、以及分支表更新28。微处理器10的各附图标记的框对应于在相应的多个级C、I、B、U、L、M、F、G、W、X、E、S、W、Y和Z上实现的逻辑电路,其中流水线架构在每个级启用不同指令组。在一个实施例中,可以在每个级处运行四个或更多个指令,其中控制信号沿着流水线标记各级。与快速预测器12、BTAC 14和XIB 16相关联的级涉及对指令高速缓存(I高速缓存,图1A中未示出)的访问。
快速预测器12包括单周期分支预测器,该单周期分支预测器提供单周期预测(例如,花费一个周期来产生目标地址,在一个实施例中在I级提供该预测)。在一个实施例中,快速预测器12包括存储先前执行的分支指令的分支目标地址的表(本文也被称为阵列或目标阵列),该表在随后遇到所存储的分支指令时实现分支预测。在一个实施例中,表包括128个条目,但是在一些实施例中可以使用其它大小(例如,64个条目、32个条目等)的表。该表被组织为n路(例如,n是大于1的整数)的集关联高速缓存。一般而言,n路的集关联高速缓存在这里也称为多集关联高速缓存。在一个实施例中,各条目存储八(8)个3位计数器和当前局部分支模式,该计数器是由3位局部分支模式而选择的。快速预测器12还包括条件分支预测器,该条件分支预测器与该表并行地被访问并且为条件分支提供采取/不采取的方向。快速预测器还包括返回堆栈,该返回堆栈可以提供目标而不是表。在一个实施例中,返回堆栈包括四(4)个条目,并且为返回指令提供目标。注意,以上列出的规范仅用于说明,并且一些实施例可以在不同的规范下进行,因此预期在本发明的范围内。快速预测器12被配置为立即(在单个周期内)递送预测分支目标,而没有采用分支惩罚。在一些实施例中,快速预测器12可以根据其预测机制和/或表配置的其它规范来操作,或者在一些实施例中,可以省略快速预测器12。大多数分支被快速预测器12正确地预测。在一些实施例中,在快速预测器12基于同一所获取的分支指令而提供与BTAC 14的分支预测不同(例如,在方向和/或目标上不同)的分支预测的情况下,BTAC 14利用BTAC 14所提供的分支预测信息(例如,方向、目标地址、分支预测类型)来在BTAC 14的一组级内(例如,在U级)重写快速预测器12的分支预测并更新快速预测器表。
I级和/或B级对应于对分支单元流水线的各种表(包括I高速缓存、标签阵列、转译后备缓存器(TLB)阵列、BTAC阵列、返回堆栈阵列等)的访问、(例如,基于标签)通过多路复用给出方向或路、以及读出指令。
BTAC 14保持其用于预测后续执行期间的目标地址、方向和类型的与先前执行分支指令有关的信息。BTAC 14包括比快速预测器12的表大得多的一个或多个表。在一个实施例中,BTAC 14包括4k条目、m路的集关联表(这里也称为阵列或目标阵列),其中m是大于1的整数。BTAC 14的各条目包括有效位、分支目标地址预测、方向预测和分支类型。在一个实施例中,各条目另外包括两个标签位,在这里也被称为预测器模式位。如上文所说明的,预测器模式位表示也由使用的四(4)个不同特权状态。分支类型指定分支指令是呼叫/返回、是间接分支、是条件相对分支、还是无条件相对分支。在一个实施例中,BTAC 14包括具有多条目(例如,12k)的基于标签几何(TAGE)的条件分支预测器的条件相对分支预测器(或者简称为条件分支预测器)、多个表、多位(例如,3位)、采取/不采取(T/NT)计数器以及多位全局分支历史,或者与上述这些协作。也就是说,TAGE条件分支预测器包括具有几何上增加的分支历史长度的标签表,这是众所周知的。作为另一示例,间接预测包括多条目(例如,1.5k)TAGE预测器,并且将表条目用于静态间接分支。在一个实施例中,使用了两个TAGE条件分支预测器,一个用于表的边A,以及一个用于表的边B。TAGE条件分支预测器可以是BTAC的一部分或与BTAC 14结合使用。
在一个实施例中,BTAC 14包括具有比TAGE条件分支预测器低的复杂度的第二类型的条件分支预测器(例如与表的边C相关联的gshare预测器)或与之协作。gshare条件分支预测器可以是BTAC 14的一部分或与BTAC 14结合使用。gshare条件分支预测器包括在快速预测器12的复杂度与TAGE条件分支预测器的复杂度之间的复杂度(例如,大约TAGE条件分支预测器的大小的1/10)。在一个实施例中,gshare条件分支预测器包括单个表(例如,包括最后m个执行的分支指令的分支模式的m位全局历史寄存器,其中,m通常为10-12位,但不限于该数量)。gshare条件分支预测器使用全局分支历史和分支指令的位置(例如IP)来(经由XOR逻辑运算)创建到计数器(例如2位计数器)的表中的索引,其中索引的结果是针对当前分支的预测。由于TAGE和gshare类型的条件分支预测器在本领域中是已知的,因此为简洁起见,在此省略对其的进一步描述。注意,在一些实施例中,可以使用其它类型的预测机制,包括基于相关性的预测机制、使用全局和局部分支历史的组合的条件分支预测器等。此外,尽管这里强调了边A、B和C,但是在一些实施例中,可以使用更少的或额外的边。对于指令高速缓存的高速缓存行的各部分或各取指单位(quantum)(例如,16字节),BTAC 14可以保持三个条目(例如,边A、B和C,尽管在一些实施例中可以使用更少的边来存储针对更少的分支指令的预测信息),该三个条目可以保持针对可能存在于高速缓存行的一部分中的多达三个分支指令的预测信息。BTAC 14包括通过一组级(例如,I级、B级和U级)的操作。实际上,分支指令的U级用作目标的C级(例如,从B级到C级的箭头反映B级处的分支指令的情况,并且下一个时钟是目标的C级,或者在这里也是高速缓存地址),从而导致BTAC预测的二时钟延迟。
BTAC 14具有二时钟采取惩罚(two-clock taken penalty),这也揭示快速预测器12通过立即将新高速缓存地址引导为目标来提供快速分支预测(无采取惩罚)的益处。在一个实施例中,BTAC 14大于快速预测器12且具有更复杂的分支预测机制,其被配置为(例如,总是)在分支预测中存在不一致(例如,BTAC 14确定的分支预测与快速预测器12所确定的采取判断和/或分支目标地址不同)时重写快速预测器12的分支预测。在一些实施例中,BTAC 14被配置为通过将分支预测信息写入到快速预测器12的表中(且还写入BTAC 14的表中)来在BTAC级其中之一(例如,U级)期间更新快速预测器12。在一些实施例中,延迟对BTAC14的更新,直到分支被执行或引退为止,其中对BTAC 14的更新涉及对BTAC 14的预测器表的写入。在一个实施例中,更新涉及目标信息更新和/或计数器更新。然而,对快速预测器12的更新不等待那么久,而在BTAC级期间发生。注意,不在快速预测器12中的分支在两个周期之后在与BTAC级相对应的时间(例如,在BTAC级期间)被写入快速预测器12中。
XIB 16是条目队列,各条目保持来自指令高速缓存的16个字节的数据。例如,来自XIB 16的高速缓存数据仅是采用16个字节的块的指令字节流,并且鉴于指令具有可变长度,给定x86指令在流内或给定块内在何处开始或结束是未知的。XIB 16包括用以确定和标记各指令在流内的开始和结束字节、从而将字节流分解成x86指令流的已知逻辑,其中该x86指令流被提供给FIQ/循环队列20并存储在FIQ/循环队列20中以供微处理器流水线的其余部分处理。在L(长度)级,XIB 16确定指令长度。在一个实施例中,预解码器(图1A中未示出)在U级处实现,并且被配置为检测潜在分支指令并且在队列中针对各指令字节来如此地标记它们。注意,在该级,存在关于给定字节是否为指令的开始的模糊性。如果字节是在稍后(M级)确定的分支指令的操作码字节,则该指令被确认为分支指令。例如,分支解码器18包括用于在多路复用或M级中对指令进行多路复用的指令多路复用(未示出),其中分支指令被这样确认。
在F级中,如以上所说明的对这些指令进行格式化。在一个实施例中,格式化指令包括基本上符合x86架构指令集的指令。此外,在M级确定给定指令(可能由预解码器预先标记)是否确实是分支。例如,在快速预测器12或BTAC 14中发生未命中的情况下(例如,在初始启动时),分支解码器18(例如,指令多路复用)决定为当前指令是分支,向BOT写入,并且在G级将高速缓存地址重定向到新目标并更新微处理器10的前端中的表。实际上,当在快速预测器12或BTAC 14处未命中时,分支解码器18提供分支预测,其中分支指令在C级转向目标。在一些情况下,诸如在BTAC 14处针对各取指存在多于有限或预定最大数量的分支(例如,针对各16字节取指存在多于三个分支)的情况下,延迟额外分支的分支预测,直到解码时间为止。
FIQ/循环队列20接收格式化指令并且对它们进行缓存,直到它们可以被转译成微指令为止。FIQ/循环队列20还提供初步解码和快速循环功能(例如,在BTAC循环分支上,循环队列被激活并且循环指令被重复发送),后者由框20右侧的箭头表示。
W级提供可选的额外定时时钟。
在X级,指令转译器22(在X级或转译级中)将存储在FIQ/循环队列20中的格式化指令转译成微指令。
指令以程序顺序被提供至寄存器别名表/保留表(RAT/RS)24。RAT/RS 24的RAT功能维持和生成针对各指令的依赖性信息。RAT/RS 24的RAT功能将指令的源和目的地重命名到内部寄存器上,并且将指令分派到RAT/RS 24的保留站,该保留站(可能不按照程序顺序)向功能单元26发出指令。包括整数单元的功能或执行单元26在E(执行)级执行分支指令。执行单元、分支单元和整数单元是本文中可互换使用的术语。在一个实施例中,执行单元26(例如,两个执行单元)在单个时钟周期中执行两个分支。执行单元26还指示BTAC 14是否已正确地预测分支指令。
在一个实施例中,将执行的结果提供给重排序缓存器(未示出),该重排序缓存器包括与已经执行的指令有关的信息。众所周知,重排序缓存器在指令发出之后保持指令的原始程序顺序,并允许在退出级期间对结果进行序列化。在一个实施例中,可以将重排序缓存器的信息中的一些存储在沿着流水线的其它地方,诸如在解码器18处等。存储在重排序缓存器中的信息可以包括分支信息,诸如分支的类型、分支模式、目标、预测中使用的表以及高速缓存替换策略信息(例如,最近最少使用或LRU)等。
分支表更新28包括S、W、Y和Z级,并且被配置为用与完全解码和执行的分支指令有关的信息(例如,分支的最终结果)来(例如,在S级处)对前端的各种表(例如,BTAC、TAGE)进行更新。在S、W、Y和Z级,更新可能涉及表读取、目标地址写入以及计数器递增或递减,这可能涉及一些延迟。在一个实施例中,分支表更新28针对给定条件分支指令和缓存有该条件分支指令的边(例如,A、B或C)提供错误预测的指示。
现在参考图1B并继续参考图1A,示出在针对图1A的微处理器10示出的分支单元流水线的前端30处使用的示例快速预测器12和其它示例性源。前端30包括获取单元32(例如,包括多路复用和时钟寄存器)、转译后备缓存器(TLB)34、指令高速缓存(I高速缓存数据)36、I高速缓存标签38(或标签阵列)、BTAC 14以及快速预测器12。获取单元32接收多个高速缓存指令地址源,包括顺次的指令地址(例如,来自I级)、经校正指令地址(例如,来自S级)、解码时间指令地址(例如,来自G级)以及来自BTAC 14和快速预测器12的地址。获取单元32的输出是作为对TLB 34、I高速缓存数据36、I高速缓存标签38、BTAC 14和用于访问I高速缓存数据36的下一指令的快速预测器12的输入而提供的高速缓存地址。
TLB 34在存储器管理单元(未示出)的管理下提供如已知的虚拟到物理页地址转译。即,TLB 34存储最近使用的虚拟地址的物理地址。TLB 34从分段单元(其将来自程序的逻辑地址转换成线性地址)接收线性地址,并且将该线性地址的一部分与TLB 34的条目进行比较以查找匹配。如果存在匹配,则根据TLB条目计算物理地址。如果不存在匹配,则拾取来自存储器的页表条目且将该页表条目放置到TLB 34中。
I高速缓存数据36包括已经从L2、L3或主存储器拾取或预拾取的指令的1级高速缓存。I高速缓存数据36包括多个时钟寄存器。
I高速缓存标签38包括与I高速缓存数据36中的指令相对应的标签阵列,并且包括多个时钟寄存器,并且用于确定与所拾取的高速缓存指令相关联的信息(例如,高速缓存地址的标签或部分)与I高速缓存数据36和BTAC 14之间的匹配。
上文结合图1A说明了BTAC 14,并且该BTAC 14具有多个时钟寄存器和二(2)时钟采取惩罚。同样在上文中说明的快速预测器12具有零(0)时钟采取惩罚。例如,假定沿着I高速缓存以每周期16个字节进行拾取,并且假设高速缓存地址20至高速缓存地址95的分支指令。注意,在该示例中由地址描述暗示十六进制表示法(例如,0x0、0x10、0x20等)。由此,取指在高速缓存地址0、高速缓存地址10、高速缓存地址20(分支指令,但由于BTAC 14跨越多个周期进行读取和多路复用因而尚未解决,其中在一些实施例中,该多个周期是与I高速缓存相同的定时)、高速缓存地址30(相对时钟1)、高速缓存地址40(相对时钟2)、然后在第3时钟(相对时钟3)上发生,高速缓存指令取指被重定向到缓存地址95。因此在该示例中采取的分支惩罚包括两个时钟周期,因为高速缓存地址30和40发生在分支之后。换言之,在没有快速预测器12的情况下,对于该特定设计示例,采用的分支惩罚总是两个时钟。利用更小且更快的快速预测器12,高速缓存地址获取(在以上示例中)包括0、10、20和95,对高速缓存地址没有延迟且采取的惩罚为零。如上所述,在一些实施例中,快速预测器12可以被省略。
在开始对分支预测安全系统的某些实施例的更详细描述之前,下面进一步说明Spectre漏洞。通常,可以在用户编程代码和监督编程代码的上下文中理解漏洞或安全缺陷。监督代码是指需要较高特权或安全授权来访问的代码,包括与密码规定、隐私数据等有关的代码,其通常仅旨在用于网站或操作系统中的(例如,由具有适当安全凭证的那些(例如,网站或云计算服务的管理员))的特权访问。监督代码可以包括在操作系统或管理程序中涉及的内核代码。另一方面,用户代码是可以由用户运行并且具有比监督代码更低的特权要求的代码。用户代码不应当能够访问监督代码。在硬件水平上,芯片实施安全协议以防止从较低特权等级到较高特权等级(例如,在用户和/或应用之间)的访问。Spectre安全缺陷可以通过从定时模式推断数据的性质以访问数据而利用芯片中的推测性分支预测机制,并且更具体地,利用间接分支预测机制。诸如IBPB和甚至IBRS等的缓解技术在从较低(用户代码)转变为较高(监督)特权代码时清除例如BTAC中的间接分支指令。例如,当转变到监督器代码或模式或者从监督器代码或模式转变时,清除间接分支。在被称为retpoline的另一技术中,每个间接分支被替换为返回目标。然而,如上文所说明的,在给定预测表中的大小、路布置和分支类型的混合的情况下,间接分支清除可能损害性能。进一步,在编译器处实现retpoline,其中除了可能具有有限软件库的嵌入式应用之外,与硬件修复相比,在给定软件应用的程度和范围的情况下更多地涉及改变代码。
给定以上附加背景,现在将转向注意图2,图2示出部分地基于Spectre变体II漏洞的间接分支限制推测(IBRS)缓解技术的示例分支预测安全系统40的实施例。通常,分支预测安全系统40防止用户代码影响监督代码。更具体地,存在两种针对由分支预测安全系统40实现的方法的变型。一个变型是特权等级(或等效地,预测器模式)必须准确地匹配,而另一个变型是较低特权代码不能影响较高特权代码。在一个实施例中,分支预测安全系统40包括BTAC 14(但在一些实施例中,可以使用其它分支预测表类型),并且BTAC条目42包括有效条目44、预测器模式(PM)标签46(或特权等级标签)、地址标签48和数据条目50。有效条目44包括指示BTAC 14中的分支指令是否有效的1位设置。预测器模式标签46包括与四(4)个特权等级中的任一个相对应的2位值。地址标签48和数据条目50分别与针对分支指令和分支信息或数据的地址标识符或索引相对应。
分支预测安全系统40还包括逻辑52,该逻辑52用于从BTAC条目42的选择条目接收信息,并且通过使不满足某些特权等级条件的分支无效来加强安全。在一些实施例中,逻辑52为BTAC 14的一部分或与BTAC 14协作地工作。逻辑52包括比较器逻辑54和56以及多路复用选择58。在一个实施例中,比较器逻辑54接收拾取到的分支指令(例如,间接分支指令)的当前预测器模式和PM标签46,并且进行特权等级检查。特权等级检查确定当前预测器模式是否等于PM标签46以及预测器模式是否大于或等于PM标签46(例如,较低特权代码不能影响较高特权代码),并且当满足时,触发多路复用选择58以提供PM匹配的输出。该操作与标签匹配一起进行。即比较器逻辑56接收取指地址和地址标签48,并且当这些值相等时提供标签匹配。实际上,导致BTAC 14中的命中的条件包含有效标签44、来自比较器逻辑56的标签匹配和来自多路复用选择58的PM匹配。相反,通过在特权测试失败时引起未命中(并且因此不被预测)而在不同特权等级的代码之间拒绝访问。值得注意的是,不同于使用微代码来针对代码特权等级的每次改变而清除预测器的传统修复,分支预测安全系统40的某些实施例保留分支,而保留的分支仅在处于相同特权等级时可访问。在本发明的上下文中,本领域的普通技术人员应当理解,图2中描绘的组件的布置是示例实施例,并且在一些实施例中,可以使用组件的其它布置来实现类似的功能,并且因此预期其它布置在本发明的范围内。
现在参考图3,示出部分地基于Spectre变体II漏洞的间接分支预测器屏障(IBPB)缓解技术的示例分支预测安全系统60的实施例。如上文所指示,IBPB由分支预测安全系统60通过在从较低特权代码转变为较高特权代码时清除分支预测表(例如,BTAC 14)中的间接分支来实现。在一个实施例中,如下文所说明的,分支预测安全系统60通过使用单独的间接有效表来进行该功能。分支预测安全系统60包括多个路(表条目)62,并且在该示例中,为四(4)个BTAC路0、1、2和3(例如,针对边A、B、C等中的各边)。应当理解,在一些实施例中,可以使用更少的或额外的BTAC路62,因此预期在本发明的范围内。分支预测安全系统60还包括比较器逻辑64、路多路复用器66和间接有效表68。间接有效表68存储针对BTAC 14的间接分支指令的有效位条目(例如,间接有效位条目)。间接有效表68远小于BTAC 14,其中在一个实施例中,各条目在长度上是单个位。间接有效表68可以在单个时钟中被清除。如本领域的普通技术人员在本发明的上下文中所理解的,对间接有效表68的清除可以简单地使用正常信号。通过这种小表(例如,仅包含间接有效位)的低功率/电流约束,利用用于实现对表的所有位的同时清除的足够电流,使得所有条目的单个时钟清除成为可能。
进一步说明,在一个实施例中,间接有效表68包括多个行和针对各行的一个或多个条目。例如,间接有效表68包括六十四(64)行×十六(16)位的物理布置,其中,各个位条目(例如,列)包括寄存器和驱动器(以提供所需的电流)以将清除总线(例如,16位)锁存和分配至表68中的所有随机存取存储器(例如,SRAM)单元。可以单独清除条目,或者可以使用例如针对每个单元的晶体管一次(例如,在单个时钟周期中)清除整个表,该晶体管在被清除信号激活时将单元的存储器状态清零。当清除信号未激活时,单元作为正常SRAM单元而进行。64行×16位表还被多路复用以在逻辑上产生间接有效表配置。在一个实施例中,间接有效表68包括512×2位表,其中一个位条目与主有效相关联,而其它条目与间接有效相关联。在一些实施例中,多路复用器可以产生512×1位表,其中各条目仅与间接有效相关联(并且BTAC 14中的条目为主有效)。
BTAC路62向路多路复用器66和比较器逻辑64提供相应输出。在一个实施例中,比较器逻辑64从BTAC路62接收分支类型(例如,间接分支,4位)的指示,并且在一个实施例中,还从BTAC 14(例如,从BTAC 14的针对所拾取的分支指令的条目)接收主有效条目和地址标签匹配。比较器逻辑64的另一输入是来自间接有效表68的间接有效条目。比较器逻辑64将命中的指示提供到路多路复用器66,其中命中与主有效、具有间接有效(例如,如经由间接有效表68提供)的间接类型和地址标签匹配相对应。另一方面,当清除间接有效表68时,不管BTAC 14的有效条目如何(例如,有效或无效),基于所清除的间接有效表条目,BTAC条目仍被视为无效。换句话说,在读取BTAC 14时,可以(例如,由比较器逻辑64)确定为存在针对给定地址标签处的主有效的间接分支类型,但是如果来自间接有效表68的输入指示间接无效位,则间接分支指令无效,从而防止其在从用户代码转变到特权或监督代码之后的使用(因此防止恶意代码使用间接分支指令来利用Spectre型安全缺陷)。实际上,与BTAC 14并行地,间接有效表68使得能够读出(在主有效条目或BTAC有效条目、或者在如上文所说明的一些实施例中的间接有效表中的主有效条目之外的)第二有效位条目,并且间接有效表68被设计为在单个周期中可清除,从而避免因从大得多的BTAC 14中清除间接分支而预期造成的效能影响。将根据主有效、间接类型分支指令、间接有效和地址标签匹配而产生的命中提供到路多路复用器66,并且产生BTAC输出(例如,具有包括特定地址、特定路、边、目标、分支指令的类型的分支指令的信息)。在本发明的上下文中,本领域的普通技术人员应当理解,图3中所描绘的组件的布置是示例实施例,并且在一些实施例中,可以使用组件的其它布置来实现类似的功能,并且因此预期其它布置在本发明的范围内。
在本发明的上下文中,本领域的普通技术人员应当理解,微处理器的一些实施例可以被配置为进行两种方法(基于IBRS的实施例和基于IBPB的实施例),并且一些实施例可以仅能够进行一种或另一种方法。
已经描述了分支预测安全系统40的某些实施例,应当理解的是,在微处理器中实现的并且基于IBRS的示例分支预测安全方法的一个实施例(表示为图4中的方法70)包括:接收拾取到的分支指令(72);使用由与包括多个条目的分支预测表中的特权等级相对应的第一标签指示的特权等级对所拾取的分支指令进行特权等级测试,所述多个条目中的各条目包括与特权等级相对应的标签(74);以及基于所述特权等级测试的失败而针对所拾取的分支指令提供预测分支未命中(76)。
已经描述了分支预测安全系统60的某些实施例,应当理解的是,在微处理器中实现的并且基于IBPB的示例方法的又一实施例(表示为图5中的方法78)包括:在包含多个条目的分支预测表处接收间接分支指令取指,其中,所述多个条目中的至少一部分与间接分支类型相对应(80);以及所述分支预测表中的与间接分支指令相对应的条目基于对间接有效表中的相应条目的清除而被配置为无效(82)。
流程图中的任何处理描述或框应被理解为表示代码的模块、段、逻辑或部分(其包括用于在过程中实现特定逻辑功能或步骤的一个或多个可执行指令),并且替代实现包括在实施例的范围内,其中如本发明领域技术人员将理解的,功能可以不按所示或讨论的顺序地执行(包括基本上并发执行或以不同顺序执行),这取决于所涉及的功能。
虽然已经在附图和前面的描述中详细示出和描述了本发明,但是这样的示出和描述应被认为是说明性的或示例性的而不是限制性的;本发明不限于所公开的实施例。本领域技术人员通过研究附图、公开内容和所附权利要求书,在实践要求保护的发明时可以理解并实现所公开的实施例的其它变化。
注意,可以使用所公开的实施例的不同组合,因此参考实施例或一个实施例并不意味着排除来自该实施例的特征与来自其它实施例的特征一起使用。在权利要求书中,词语“包括”不排除其它要素或步骤。
Claims (20)
1.一种微处理器,包括:
分支预测表,其包括多个条目,其中,所述多个条目中的至少一部分与间接分支类型相对应;以及
间接有效表;
其中,基于间接分支指令取指,所述分支预测表中的与间接分支指令相对应的条目基于对所述间接有效表中的相应条目的清除而被配置为无效。
2.根据权利要求1所述的微处理器,还包括逻辑,所述逻辑被配置为在单个时钟周期中清除所述间接有效表的多个条目中的各条目。
3.根据权利要求1所述的微处理器,其中,与所述间接分支类型相对应的多个条目中的各条目包括有效位条目,其中,所述分支预测表中的有效位条目是有效或无效的。
4.根据权利要求1所述的微处理器,其中,所述分支预测表的无效配置防止在较低特权代码等级至较高特权代码等级之间的转变之后的分支预测。
5.根据权利要求1所述的微处理器,其中,所述间接分支指令被恶意代码破坏。
6.根据权利要求1所述的微处理器,其中,基于包括间接分支指令的取指,并行地读取所述分支预测表和所述间接有效表。
7.根据权利要求1所述的微处理器,其中,针对间接分支指令的分支预测表命中基于:所述分支预测表的地址标签匹配、所述分支预测表或所述间接有效表中的主有效位、以及所述间接有效表中的间接有效位。
8.根据权利要求7所述的微处理器,还包括分支预测表路多路复用器,其中,对所述分支预测表命中的指示用于选择所述分支预测表的输出。
9.根据权利要求8所述的微处理器,其中,所述输出包括分支目标、分支类型、以及路。
10.根据权利要求1所述的微处理器,其中,所述分支预测表包括分支目标地址高速缓存即BTAC。
11.一种在微处理器中实现的方法,所述方法包括:
在包括多个条目的分支预测表处接收间接分支指令取指,其中,所述多个条目中的至少一部分与间接分支类型相对应;以及
将所述分支预测表中的与间接分支指令相对应的条目基于对间接有效表中的相应条目的清除而配置为无效。
12.根据权利要求11所述的方法,还包括在单个时钟周期中清除所述间接有效表的多个条目中的各条目。
13.根据权利要求11所述的方法,其中,与所述间接分支类型相对应的多个条目中的各条目包括有效位条目,其中,所述分支预测表中的有效位条目是有效或无效的。
14.根据权利要求11所述的方法,其中,所述分支预测表的无效配置防止在较低特权代码等级至较高特权代码等级之间的转变之后的分支预测。
15.根据权利要求11所述的方法,其中,所述间接分支指令被恶意代码破坏。
16.根据权利要求11所述的方法,还包括基于包括间接分支指令的取指来并行地读取所述分支预测表和所述间接有效表。
17.根据权利要求11所述的方法,其中,针对间接分支指令的分支预测表命中基于:所述分支预测表的地址标签匹配、所述分支预测表或所述间接有效表中的主有效位、以及所述间接有效表中的间接有效位。
18.根据权利要求17所述的方法,还包括基于将对所述分支预测表命中的指示提供到所述分支预测表所馈送的路多路复用器而从所述分支预测表进行输出。
19.根据权利要求18所述的方法,其中,所述输出包括分支目标、分支类型、以及路。
20.根据权利要求11所述的方法,其中,所述分支预测表包括分支目标地址高速缓存即BTAC。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/098,195 | 2020-11-13 | ||
US17/098,195 US11500643B2 (en) | 2020-11-13 | 2020-11-13 | Spectre fixes with indirect valid table |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113434867A true CN113434867A (zh) | 2021-09-24 |
Family
ID=77759199
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110763288.8A Pending CN113434867A (zh) | 2020-11-13 | 2021-07-06 | 利用间接有效表的Spectre修复的方法和微处理器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11500643B2 (zh) |
CN (1) | CN113434867A (zh) |
TW (1) | TWI783582B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220207148A1 (en) * | 2020-12-26 | 2022-06-30 | Intel Corporation | Hardening branch hardware against speculation vulnerabilities |
US12014178B2 (en) | 2022-06-08 | 2024-06-18 | Ventana Micro Systems Inc. | Folded instruction fetch pipeline |
US12008375B2 (en) | 2022-06-08 | 2024-06-11 | Ventana Micro Systems Inc. | Branch target buffer that stores predicted set index and predicted way number of instruction cache |
US12014180B2 (en) | 2022-06-08 | 2024-06-18 | Ventana Micro Systems Inc. | Dynamically foldable and unfoldable instruction fetch pipeline |
US12020032B2 (en) * | 2022-08-02 | 2024-06-25 | Ventana Micro Systems Inc. | Prediction unit that provides a fetch block descriptor each clock cycle |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5819056A (en) * | 1995-10-06 | 1998-10-06 | Advanced Micro Devices, Inc. | Instruction buffer organization method and system |
US20050132174A1 (en) * | 2003-12-16 | 2005-06-16 | Intel Corporation | Predicting instruction branches with independent checking predictions |
US8832418B2 (en) * | 2009-08-28 | 2014-09-09 | Via Technologies, Inc. | Efficient branch target address cache entry replacement |
US8760958B2 (en) * | 2012-03-15 | 2014-06-24 | Memoir Systems, Inc. | Methods and apparatus for designing and constructing multi-port memory circuits with voltage assist |
US9600289B2 (en) * | 2012-05-30 | 2017-03-21 | Apple Inc. | Load-store dependency predictor PC hashing |
TW201941049A (zh) * | 2018-02-02 | 2019-10-16 | 美商多佛微系統公司 | 用於轉換詮釋資料處理的指令的系統和方法 |
CN108427576B (zh) | 2018-02-12 | 2022-04-01 | 华夏芯(北京)通用处理器技术有限公司 | 一种免受Spectre攻击的高性能推测执行算法 |
US11347507B2 (en) * | 2018-03-15 | 2022-05-31 | SiFive, Inc. | Secure control flow prediction |
US20200034152A1 (en) * | 2018-07-30 | 2020-01-30 | Cavium, Llc | Preventing Information Leakage In Out-Of-Order Machines Due To Misspeculation |
US11635965B2 (en) * | 2018-10-31 | 2023-04-25 | Intel Corporation | Apparatuses and methods for speculative execution side channel mitigation |
CN111414321B (zh) | 2020-02-24 | 2022-07-15 | 中国农业大学 | 一种基于动态映射机制的cache防护方法及装置 |
-
2020
- 2020-11-13 US US17/098,195 patent/US11500643B2/en active Active
-
2021
- 2021-07-06 CN CN202110763288.8A patent/CN113434867A/zh active Pending
- 2021-07-19 TW TW110126488A patent/TWI783582B/zh active
Also Published As
Publication number | Publication date |
---|---|
US11500643B2 (en) | 2022-11-15 |
US20220156082A1 (en) | 2022-05-19 |
TWI783582B (zh) | 2022-11-11 |
TW202219944A (zh) | 2022-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI783582B (zh) | 利用間接有效表的Spectre修復的方法和微處理器 | |
KR100973951B1 (ko) | 오정렬 메모리 액세스 예측 | |
US11734426B2 (en) | Processor that mitigates side channel attacks by prevents cache line data implicated by a missing load address from being filled into a data cache memory when the load address specifies a location with no valid address translation or no permission to read from the location | |
US11733972B2 (en) | Processor that mitigates side channel attacks by providing random load data as a result of execution of a load operation that does not have permission to access a load address | |
US11907369B2 (en) | Processor that mitigates side channel attacks by preventing cache memory state from being affected by a missing load operation by inhibiting or canceling a fill request of the load operation if an older load generates a need for an architectural exception | |
US10599437B2 (en) | Managing obscured branch prediction information | |
TWI807371B (zh) | 利用預測器模式標籤的Spectre修復方法和微處理器 | |
JP2009540439A (ja) | スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ | |
EP4020285A1 (en) | Simulation state to detect transient execution attack | |
US20190235873A1 (en) | System and method of reducing computer processor power consumption using micro-btb verified edge feature | |
US20220067143A1 (en) | Virtually-tagged data cache memory that uses translation context to make entries allocated during execution under one translation context inaccessible during execution under another translation context | |
CN113448626B (zh) | 推测分支模式更新方法和微处理器 | |
US11614944B2 (en) | Small branch predictor escape | |
US11275686B1 (en) | Adjustable write policies controlled by feature control registers | |
US11995447B2 (en) | Quick predictor override and update by a BTAC | |
TWI844775B (zh) | 快速預測器覆寫方法和微處理器 | |
US11360774B2 (en) | Dual branch format | |
US11461103B2 (en) | Dual branch execute and table update with single port | |
Sah et al. | Defending Against Misspeculation-based Cache Probe Attacks Using Variable Record Table |
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 |