CN111352659A - 用于分支和获取流水线的误预测恢复设备和方法 - Google Patents
用于分支和获取流水线的误预测恢复设备和方法 Download PDFInfo
- Publication number
- CN111352659A CN111352659A CN201911289097.1A CN201911289097A CN111352659A CN 111352659 A CN111352659 A CN 111352659A CN 201911289097 A CN201911289097 A CN 201911289097A CN 111352659 A CN111352659 A CN 111352659A
- Authority
- CN
- China
- Prior art keywords
- misprediction
- branch
- misprediction recovery
- redirect
- state
- 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.)
- Granted
Links
- 238000011084 recovery Methods 0.000 title claims abstract description 94
- 238000000034 method Methods 0.000 title claims abstract description 47
- 230000004044 response Effects 0.000 claims description 33
- 238000012937 correction Methods 0.000 claims description 20
- 230000007704 transition Effects 0.000 claims description 19
- 230000000737 periodic effect Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 29
- 230000009471 action Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 101100292100 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) PHO92 gene Proteins 0.000 description 1
- 101100478213 Schizosaccharomyces pombe (strain 972 / ATCC 24843) spo5 gene Proteins 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 239000006260 foam Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000029305 taxis Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/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, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- 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, 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
- 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, 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
公开了用于分支和获取流水线的误预测恢复设备和方法。一种根据本发明的实施例的误预测恢复设备包括指令执行单元、分支预测器和误预测恢复单元(MRU)。MRU可在来自指令执行单元的误预测重定向之后提供离散周期预测。MRU可包括用于生成用于预测的分支的预测置信度信息的分支置信度过滤器。MRU可包括标签内容可寻址存储器(CAM)。标签CAM可存储误预测的低置信度分支,探测误预测重定向,并且从分支置信度过滤器获得预测置信度信息。MRU可包括误预测恢复缓冲器(MRB),MRB用于存储标签CAM中存在的误预测的低置信度分支的替代路径,而不存储指令自身。此外,公开了一种用于从与指令获取流水线相关联的误预测恢复的方法。
Description
本申请要求于2018年12月20日提交的序列号为62/783,173的美国临时专利申请的权益,所述美国临时专利申请的内容通过引用整体包含于此。
技术领域
本公开涉及集成电路,更具体地,涉及用于微处理器的分支和获取流水线的误预测恢复设备和方法。
背景技术
中央处理器(CPU)性能在很大程度上取决于准确的分支预测。处理器采用复杂的分支预测器单元来更好地使用CPU资源,提高性能并降低损失的功率。尽管这样的预测器能够实现非常高的准确性,但是它们通常使用多个周期来预测分支,导致对“采用的”分支的惩罚。即使利用高度准确的预测器,分支的子集仍然难以预测,并且被频繁地误预测。
因为分支误预测需要整个流水线被刷新,所以分支误预测非常昂贵(尤其是在较深的流水线处理器中)。由于预测器需要在误预测之后赶上来填补空的管道,分支预测器延迟通常成为CPU的瓶颈。误预测延迟(或惩罚)可被理解为执行指令所花费的周期数,该指令跟随着被强制重定向获取管道的误预测分支。这不仅取决于分支预测管道/延迟,还取决于其他事件(诸如,高速缓存未命中),这会进一步降低性能。
分支预测器自身在实现上不同。通常,在它们的准确性与它们的速度之间存在权衡。如果分支预测器将分支预测为采用的分支,则它将分支和获取管道重新定向为从新地址开始,因此会遭受所谓的采用的气泡惩罚(bubble penalty),采用的气泡惩罚表示等待下一预测的丢失或高推测性的获取周期。当机器的其他位置不存在用于覆盖气泡的背压(back pressure)时,这种惩罚出现。误预测刷新流水线,因此紧跟在误预测后的时间内误预测将机器直接暴露于采用的气泡惩罚。
发明内容
本公开的示例实施例可提供用于微处理器的分支和获取流水线的误预测恢复设备和方法。
发明的方面包括一种误预测恢复设备。所述误预测恢复设备可包括一个或多个指令执行单元。所述误预测恢复设备可包括一个或多个分支预测器。所述误预测恢复设备可包括:误预测恢复单元(MRU),连接到所述一个或多个指令执行单元并连接到所述一个或多个分支预测器,并且被配置为在来自一个或多个指令执行单元的误预测重定向之后提供离散周期预测。
MRU可包括:分支置信度过滤器,被配置为:基于来自所述一个或多个分支预测器的信息并基于来自所述一个或多个指令执行单元的误预测重定向,来生成用于预测的分支的预测置信度信息。MRU可包括标签内容可寻址存储器(CAM)。标签CAM可存储误预测的低置信度分支,从所述一个或多个指令执行单元探测误预测重定向,并且从与误预测的低置信度分支相关联的分支置信度过滤器获得预测置信度信息。
MRU还可包括:误预测恢复缓冲器(MRB),被配置为:存储标签CAM中存在的误预测的低置信度分支的替代路径。MRB可响应于误预测重定向,利用替代路径驱动指令获取流水线。MRB可存储替代路径的指令地址,而不存储指令自身。
实施例包括一种用于从与指令获取流水线相关联的误预测恢复的方法。所述方法可包括:从一个或多个指令执行单元接收误预测重定向。所述方法可包括:通过误预测恢复单元(MRU),在从所述一个或多个指令执行单元接收的误预测重定向之后提供离散周期预测。所述方法可包括:通过分支置信度过滤器,基于来自一个或多个分支预测器的信息并基于来自所述一个或多个指令执行单元的误预测重定向来生成用于预测的分支的预测置信度信息。所述方法可包括:通过标签内容可寻址存储器(CAM),存储误预测的低置信度分支。所述方法可包括:通过标签CAM,从所述一个或多个指令执行单元探测误预测重定向。所述方法可包括:通过标签CAM,从与误预测的低置信度分支相关联的分支置信度过滤器获得预测置信度信息。所述方法可包括:通过误预测恢复缓冲器(MRB),存储标签CAM中存在的误预测的低置信度分支的替代路径。
本发明可消除通过从先前预测的泡沫惩罚获取而获得的泡沫惩罚,而不等待当前的预测器结果,先前预测的泡沫惩罚通过从先前预测的高概率基本块获取而获得。本发明可立即恢复延迟,并提高具有不可预测的分支和高的后预测失败准确性的内核的性能。
附图说明
图1示出根据在此公开的实施例的包括误预测恢复缓冲器的误预测恢复设备的示例框图。
图2示出根据在此公开的实施例的标签CAM的组织的示例图。
图3示出根据在此公开的实施例的包括误预测恢复单元(MRU)的微处理器的示例框图。
图4示出根据在此公开的实施例的用于控制误预测恢复缓冲器的示例有限状态机。
图5示出根据在此公开的实施例的误预测恢复缓冲器的记录状态的示例波形图。
图6示出根据在此公开的实施例的误预测恢复缓冲器的重定向状态的示例波形图。
图7示出根据在此公开的实施例的示出具有误预测恢复缓冲器和不具有误预测恢复缓冲器的比较的示例波形图。
图8A示出根据在此公开的实施例的具有坏MRB数据的重定向状态的示例波形图。
图8B示出根据在此公开的实施例的校正状态的示例波形图。
图9是根据在此公开的实施例的包括误预测恢复缓冲器的计算系统的示例框图。
具体实施方式
现在将详细参照发明构思的实施例,发明构思的示例在附图中被示出。在下面的具体实施方式中,阐述许多具体细节以能够彻底理解发明构思。然而,应理解,本领域普通技术人员可在没有这些具体细节的情况下实践发明构思。在其他情况下,公知的方法、过程、组件、电路和网络未被详细描述,以免不必要地模糊实施例的方面。
将理解,尽管术语第一、第二等在此可用于描述各种元件,但是这些元件不应被这些术语限制。这些术语仅用于将一个元件与另一元件区分开。例如,在不脱离发明构思的范围的情况下,第一缓冲器可被称为第二缓冲器,类似地,第二缓冲器可被称为第一缓冲器。
在发明构思的描述中使用的术语在此仅出于描述特定实施例的目的,而不意图限制发明构思。如在发明构思的描述和所附权利要求中使用的那样,除非上下文另外清楚地指示,否则单数形式也意图包括复数形式。还将理解,在此使用的术语“和/或”表示并包含相关联所列项中的一个或多个的任何可能的组合和所有可能的组合。还将理解,当在本说明书中使用术语“包括”和/或“包含”时,表明存在陈述的特征、整体、步骤、操作、元件和/或组件,但是不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组。附图的组件和特征不必按比例绘制。
本公开的实施例包括具有误预测恢复单元(MRU)的误预测恢复设备。MRU可包括误预测恢复缓冲器(MRB)、标签内容可寻址存储器(CAM)和分支预测过滤器。使用高度准确的预测器,可预测分支的重要部分。换言之,仅这些分支的子集被频繁地误预测。误预测恢复设备使用任何合适的预测器置信度估计器来识别低置信度分支。然后,误预测恢复设备过滤频繁出现的低置信度分支,并在误预测之后立即记录/存储高度可能的预测。然后,误预测恢复设备能够通过从先前预测的高概率基本块进行获取而不等待当前预测器结果,在误预测之后的几个周期内驱动分支和获取流水线,从而消除了采用的气泡惩罚。紧接在低置信度误预测的分支之后的预测和获取延迟的这种减少提供实际较高的延迟预测器,以赶上并开始填充下游的管道。因此,这促使紧接在误预测但添加了标签的低置信度分支之后预测并获取一系列基本块。该结构提供每个低置信度分支的最可能的基本块获取路径,从而消除在主预测器追赶获取校正的路径时的即时预测器采用的气泡。这种方法的显著优点是对于具有难以预测的分支并且具有高的误预测后准确性的内核的立即延迟恢复以及性能提高。
图1示出根据在此公开的实施例的包括误预测恢复缓冲器(MRB)105的误预测恢复设备100的示例框图。误预测恢复设备100可包括具有误预测恢复缓冲器105的误预测恢复单元(MRU)150。MRU 150还可包括标签CAM110和分支置信度过滤器(branch confidencefilter)115。MRB 105可以可通信地结合到选择器120。选择器120可以是例如多路复用器。此外,误预测恢复设备100可包括有限状态机(FSM)125。如以下进一步详细描述的那样,FSM125可控制MRB 105、标签CAM 110和/或分支置信度过滤器115的各个方面。误预测恢复设备100还可包括一个或多个指令执行单元130以及一个或多个分支预测器135。误预测恢复设备100还可包括指令获取流水线170。
分支置信度过滤器115可基于从一个或多个分支预测器135接收的分支预测信息155以及从一个或多个指令执行单元130接收的一个或多个重定向160,来实现置信度估计技术。分支置信度过滤器115可使用各种度量(诸如,误预测之间的距离、在给定时间间隔内的正确预测与错误预测、预测器置信度和训练等)。收集的信息可以是全局的,或者另外可以是对于特定分支特定的。分支置信度过滤器115可基于来自一个或多个分支预测器135的信息155并基于来自一个或多个指令执行单元130的重定向160,生成并存储用于预测的分支的预测置信度信息118。
标签CAM 110可存储频繁地误预测的低置信度分支。这通过从一个或多个执行单元130探测重定向160并从一个或多个分支预测器135获得关于这些分支的置信度信息(诸如,预测器置信度估计器165)来完成。MRB 105可存储标签CAM 110中存在的低置信度分支的一个或多个替代路径180。术语“替代路径”表示从误预测分支开始与预测路径偏离的路径。如果误预测,则MRB 105利用该替代路径180驱动指令获取流水线170。换言之,如果误预测,则在选择器120之后的分支流175可由MRB 105存储的替代路径180驱动。更具体地,MRB105可发送MRB分支108,MRB分支108可由选择器120基于重定向有效信号190来选择。MRB105还可从一个或多个分支预测器135接收反馈,以确认一个或多个分支预测器135是否在这些重定向上与MRB 105一致。当MRB 105没有驱动指令获取流水线170时,通常的分支流185可通过选择器120被传递到指令获取流水线170。选择器120可通过由MRB 105生成的重定向有效信号190控制。从一个或多个指令执行单元130接收的重定向160也可被传递到在195处示出的分支和/或获取单元。
图2示出根据在此公开的实施例的标签CAM 110的组织的示例图200。现参照图1和图2。
标签CAM 110可存储指令分支目标地址(例如,IA 1、IA 2至IA N)以及相关联的分支信息(例如,brInfo)(诸如,预测的方向(preDir)和分支类型)。标签CAM 110中的条目可包括提供指令获取流水线170所需的任何必要信息。该必要信息的最基本的形式包括可被用于重定向指令获取流水线170的对分支的预测以及相应的目标IA(例如,IA1、IA 2至IAN)。部分220可被输入到标签CAM 110中并被存储在其中。MRB分支预测记录210可被存储在MRB 105中。
可根据基本块的部分(诸如,MRB分支预测记录210),来测量替代路径深度205。MRB分支预测记录210均包括指令流,该指令流以分支的目标或新的顺序高速缓存行(line)开始并以采用的分支或高速缓存行的末端结束。每个MRB分支预测记录210可包括:在采用的分支或高速缓存行的末端结束的一个或多个指令流。MRB分支预测记录210提供接下来到哪个分支以及该分支去哪里的最可能的预测路径。
期望的路径深度205取决于分支管道的深度或与一个或者多个分支预测器135相关联的延迟。由于一个或多个预测器135平均比MRB 105更准确,因此一旦足够数量的指令被向下游发送(即,发送到分支流175),一个或多个分支预测器135就可接管。标签CAM 110的组织还考虑缓冲器深度215,或者换言之,正被跟踪并被存储在标签CAM 110中的低置信度分支的数量。
MRB 105可预测的分支的最大数量等于路径深度205。由于每个分支可具有采用的结果或未采用的结果,因此存在至少两条可能的替代路径,每条可能的替代路径具有路径深度205。更具体地,排列的数量是2^(路径深度205)。例如,以每个分支有两种方式并且那些方式中的每种也有两种方式依此类推的树为例,深度3具有八条可能的路径(即,分支)。在一些实施例中,该树内仅一个这样的分支被记录在MRB 105中。当路径中存在连续的行时,该可能的替代路径的数量相应地减少。然而,MRB 105尽力存储最可能的路径。更准确的一个或多个分支预测器135可确认和/或重定向MRB 105,尽管一个或多个分支预测器135将能够以低得多的速率这样做。当在MRB 105仍在预测的同时发生重定向时,MRB 105可停止驱动指令获取流水线170。当由一个或多个分支预测器135确定的路径具有被采用的更高的概率时,存储在MRB 105中的一个或多个替代路径180可被更新。MRB 105可由此训练自身以最小化未来的重定向。
在此公开的示例实施例可在紧接在误预测重定向之后的短持续时间内识别频繁地误预测的分支并将离散周期预测提供给指令获取流水线170,从而增大分支吞吐量(branch throughput)并隐藏采用的气泡惩罚。MRU 150可直接使用来自一个或多个分支预测器135的预测器置信度估计器165,来识别低置信度分支。然后,MRU 150可识别频繁地出现的低置信度分支,并且可在误预测之后立即记录或另外存储高度可能的预测(即,一个或多个替代路径180)。MRB 105可通过获取已预测的高概率基本块而不等待来自一个或多个分支预测器135的当前预测器结果,在误预测之后的几个周期内驱动分支流175和/或指令获取流水线170,从而消除采用的气泡惩罚。
由于MRB 105可驱动分支流175,因此在一些实施例中,更长的延迟分支预测器135可作为输入被提供给路径数据(即,MRB分支108),并因此可在指令在下游执行中被解析之前进行预测校正。这减少来自MRU 150的后续坏预测的惩罚。
MRB 105可仅存储并驱动基本块分支预测,并且不存储指令自身。尽管以仍然从指令地址获取实际指令为代价,但是这允许具有大的指令覆盖范围(instruction footprintcoverage)的小型且简单的实现方式。
在此公开的示例实施例增大误预测后的吞吐量,但是不一定减少误预测延迟。未采用的预测不需要记录在MRB 105中。此外,始终采用的分支不需要在下游进行验证,以允许在给定的周期内多次采用。
标签CAM 110可使用替换策略来过滤出频繁地误预测的分支,并利用新的误预测分支替换不频繁的分支。只要具有更高权重(即,频繁的误预测)条目的分支持续误预测,它们就可保留在标签CAM 110中,然而低权重(即,不频繁的误预测)条目随时间被替换。在标签CAM 110中命中的每个重定向增大其相应的权重。一旦任何权重饱和或当标签CAM 110变满时,权重就可减小或按比例缩小,以能够识别不经常访问的标签。
图3示出根据在此公开的实施例的包括MRU 150的微处理器300的示例框图。微处理器300可以是任何合适的处理器,诸如,ARM处理器、RISC处理器、x86处理器等。微处理器300可包括如在此描述的FSM 125。微处理器300可包括如在此描述的MRU 150。MRU 150可包括如在此描述的MRB 105。
图4示出根据在此公开的实施例的用于控制误预测恢复缓冲器105的示例有限状态机(FSM)125。现参照图1和图4。
在空闲状态405下,FSM 125是空闲的。在记录状态410下,FSM 125正在标签CAM110中创建新条目,并将相应的替代路径180存储在MRB 105中。在校正状态415下,基于来自一个或多个分支预测器135的反馈,FSM 125正利用更高概率的替代路径180替换MRB 105中现存的替代路径180。在重定向状态420下,FSM 125可发出从MRB 105关于误预测的读取,并使用读取的数据来重定向指令获取流水线170。
为了简单起见,可仅允许从空闲状态405到记录状态410、校正状态415和重定向状态420的转换。在一个替代实施例中,更复杂的状态机可用于在状态之间确定优先级而不返回到空闲状态405。
当特定分支是低置信度分支并且存在误预测并且在标签CAM 110中没有命中时,FSM 125可以在430从空闲状态405转换到记录状态410。当特定MRB分支预测记录小于路径深度(例如,图2的205)时,FSM 125可保留在记录状态410下。当特定MRB分支预测记录等于路径深度(例如,图2的205)时或响应于停止记录命令,FSM 125可以在435从记录状态410转换回到空闲状态405。
当特定分支是低置信度分支并且存在MRB误预测并且在标签CAM 110中存在命中时,FSM 125可以在440从空闲状态405转换到校正状态415。当特定MRB分支预测记录小于路径深度(例如,图2的205)时,FSM 125可保持在校正状态415下。当特定MRB分支预测记录等于路径深度(例如,图2的205)时,或者响应于停止校正命令,FSM 125可以在445从校正状态415转换回到空闲状态405。
当存在误预测并且在标签CAM 110中存在命中时,FSM 125可以在450从空闲状态405转换到重定向状态420。当特定MRB分支预测记录小于路径深度(例如,图2的205)并且MRB分支预测记录有效时,FSM 125可保持在重定向状态420下。当特定MRB分支预测记录等于路径深度(例如,图2的205)时,或者响应于管道刷新,或者响应于MRB误预测,FSM 125可以在455从重定向状态420转换回到空闲状态405。
图5示出根据在此公开的实施例的误预测恢复缓冲器的记录状态(例如,图4的410)的示例波形图500。波形图500示出时钟信号CLK、示例重定向波形、示例刷新波形、示例预测采用的分支波形、示例分支IA波形和示例MRB数据波形。
波形图500示出当MRB 105处于记录状态410时的信号的示例时序关系。该示例波形图500示出MRU 150在识别的低置信度误预测被重定向之后将数据记录到MRB 105中。经过真实路径校正的每个条目是预测具有高概率的采用的分支。当特定的低置信度分支被误预测并且特定的低置信度分支在标签CAM 110中已经不存在时,该特定的低置信度分支可被选取以被记录在MRB 105中。在一些实施例中,MRU 150选取将被记录在MRB 105中的低置信度分支。相应的标签被存储在标签CAM 110中并被分配初始替换权重。后续分支作为替代路径180被存储在MRB 105中。示例时序图500假设路径深度为三(3)。如图5中所示,响应于505处的重定向(即,坏预测),分支IA波形示出分支指令J、K和L,其中,在流内散布有多个2个气泡惩罚。MRB 105在510处开始记录MRB数据,并在515、520和525处继续。
图6示出根据在此公开的实施例的MRB 105的重定向状态(例如,图4的420)的示例波形图600。现参照图1和图6。
波形图600示出时钟信号CLK、示例重定向波形、示例刷新波形、示例预测采用的分支波形、示例MRB读取波形、示例MRB数据波形和示例获取波形。当在MRB 105中误预测分支命中时(即,先前记录的误预测情况被检测为已经再次发生),则从MRB 105读取替代路径180,并在指令获取流水线170上驱动替代路径180。由于MRB 105使用先前存储的分支信息,因此MRB 105可在没有气泡的情况下驱动分支流175,并且可在同一周期中预测多个分支。如图6中所示,响应于605处的重定向,获取波形遵循具有MRB1、MRB2和MRB3的真实路径,并且没有气泡惩罚散布在流内。在误预测之后最重要的动作是尽快地提供指令获取流水线170而没有气泡。因此,示例波形图600示出MRU 150在已记录高置信度替代之后激活并从低置信度误预测恢复。
图7示出根据在此公开的实施例的示出具有MRB和不具有MRB的比较的示例波形图700。现参照图1和图7。
波形图700示出时钟信号CLK、示例重定向波形、示例刷新波形、示例预测采用的分支波形、示例正常分支IA波形、示例验证的采用的分支波形、示例MRB读取波形、示例MRB数据波形和示例MRB分支IA波形。
如图7中可看出的,将由一个或多个分支预测器135驱动的正常分支IA流与由MRB105驱动的MRB分支IA流进行比较,正常分支IA使采用的预测具有散布的气泡(即,驱动具有散布在每个采用的预测之间的两(2)个气泡惩罚的指令获取流水线170)。由于指令获取流水线170被刷新,因此在所有下游单元空闲的点处产生六(6)个额外的气泡。相比之下,在这个示例中,MRB分支IA流节省六(6)个气泡。在一些实施例中,节省的气泡的数量可大于或小于六。波形包括用于经由正常的一个或多个分支预测器135进行预测验证的两个周期的延迟。验证的采用的分支波形指示正常的一个或多个分支预测器135是否与来自MRB 105的替代路径180一致,当正常的一个或多个分支预测器135不一致时,正常的一个或多个分支预测器135随后可使状态被校正。
图8A示出根据在此公开的实施例的具有坏MRB数据的重定向状态的示例波形图。图8B示出根据在此公开的实施例的校正状态的示例波形图。现参照图1、图8A和图8B。
图8A的波形图800和图8B的波形图802分别示出时钟信号CLK、示例重定向波形、示例刷新波形、示例预测采用的分支波形、示例MRB读取波形、示例MRB数据波形以及示例获取波形。波形图802是波形图800的延续。
一个或多个分支预测器135可确认MRB 105重定向指令获取流水线170的预测是否准确。如果一个或多个分支预测器135确定MRB 105动作不准确,则一个或多个分支预测器135可刷新指令获取流水线170的一部分并从不一致的点重新开始。在一个示例中,响应于确定替代路径不准确,一个或多个分支预测器135可校正发送到指令获取流水线的离散周期预测。在这种情况下,MRU 150可存储校正的离散周期预测。由于MRB 105存储最可能的一条或多条路径,所以这仅发生小部分时间。当一个或多个分支预测器135认为另一路径具有被采用的更高的概率时,MRB 105可固定在FSM125的校正状态(例如,图4的415)期间存储的路径。
在这个示例中,如图8A中所示,获取路径具有坏MRB2和MRB3条目。因为一个或多个分支预测器135已确定MRB 105动作不准确,或者一个或多个分支预测器135认为另一路径具有被采用的更高的概率,因此MRB2和MRB3条目可被认为“坏”。如作为校正状态(例如,图4的415)的代表的图8B中所示,坏MRB2和MRB3条目被好MRB2和MRB3条目替换。因为在一些情况下一个或多个分支预测器135比在MRB 105中存储的那些更准确,所以MRB2和MRB3可被认为“好”。然后,如图8B中所示,可将“好”MRB2和MRB3条目作为新的MRB2和MRB3存储在MRB105中。换言之,MRB 105可通过存储更新的分支信息来训练自身以使将来的重定向最小化。
图9是根据在此公开的实施例的包括微处理器300的计算系统900的示例框图。微处理器300可与在此描述的微处理器300相同,并且可电连接到系统总线905。计算系统900还可包括时钟910、随机存取存储器(RAM)和/或闪存915、存储器控制器945、用户接口920、调制解调器925(诸如,基带芯片组)和/或自动测试设备(ATE)935,时钟910、随机存取存储器(RAM)和/或闪存915、存储器控制器945、用户接口920、调制解调器925(诸如,基带芯片组)和/或自动测试设备(ATE)935中的任何一个或全部可电连接到系统总线905。
如果计算系统900是移动装置,则它还可包括对计算系统900供电的电池940。尽管在图9中未示出,但是计算系统900还可包括应用芯片组、相机图像处理器(CIS)、移动DRAM等。存储器控制器945和闪存915可构成使用非易失性存储器来存储数据的固态驱动器/固态盘(SSD)。
在示例实施例中,计算系统900可用作计算机、便携式计算机、超移动PC(UMPC)、工作站、上网本、PDA、网络平板计算机、无线电话、移动电话、智能电话、电子书、PMP(便携式多媒体播放器)、数码相机、数字音频记录器/播放器、数字图片/视频记录器/播放器、便携式游戏机、导航系统、黑匣子、3维电视、能够在无线环境下发送和接收信息的装置、构成家庭网络的各种电子装置之一、构成计算机网络的各种电子装置之一、构成远程信息处理网络的各种电子装置之一、RFID或构成计算系统的各种电子装置之一。
可通过能够执行上述方法的各种操作的任何合适的装置(诸如,各种硬件和/或软件组件、电路和/或模块),来执行所述操作。
发明的方面包括一种误预测恢复设备。所述误预测恢复设备可包括一个或多个指令执行单元。所述误预测恢复设备可包括一个或多个分支预测器。所述误预测恢复设备可包括:误预测恢复单元(MRU),连接到所述一个或多个指令执行单元并连接到所述一个或多个分支预测器,并且被配置为在来自所述一个或多个指令执行单元的误预测重定向之后提供离散周期预测。
MRU可包括:分支置信度过滤器,被配置为:基于来自所述一个或多个分支预测器的信息并基于来自所述一个或多个指令执行单元的误预测重定向,来生成用于预测的分支的预测置信度信息。MRU可包括:标签内容可寻址存储器(CAM)。标签CAM可存储频繁误预测的低置信度分支,从所述一个或多个指令执行单元探测误预测重定向,并且从与频繁误预测的低置信度分支相关联的分支置信度过滤器获得预测置信度信息。
MRU还可包括:误预测恢复缓冲器(MRB),被配置为:存储标签CAM中存在的频繁误预测的低置信度分支的替代路径。MRB可响应于误预测重定向,利用替代路径驱动指令获取流水线。MRB可存储替代路径的指令地址,而不存储指令自身。
在一些实施例中,替代路径从频繁误预测的低置信度分支之中的误预测分支开始与预测路径偏离。
误预测恢复设备还可包括指令获取流水线。响应于来自所述一个或多个指令执行单元的误预测重定向,MRB可被配置为利用替代路径驱动指令获取流水线。MRU可被配置为在没有气泡惩罚的情况下将离散周期预测从MRB提供给指令获取流水线。MRB可被配置为存储替代路径的指令地址,而不存储指令自身。MRB可被配置为在误预测重定向之后立即存储替代路径。MRB可被配置为:存储分别与标签CAM中存在的频繁误预测的低置信度分支之中的频繁误预测的低置信度分支相关联的多个替代路径。MRU可被配置为在误预测重定向之后至少基于存储在MRB中的替代路径提供离散周期预测。
所述一个或多个分支预测器可被配置为确定替代路径是否准确。响应于确定替代路径不准确,所述一个或多个分支预测器可被配置为校正发送到指令获取流水线的离散周期预测。MRU可被配置为存储校正的离散周期预测。
所述误预测恢复设备还可包括:有限状态机(FSM),被配置为控制MRU,并在空闲状态、记录状态、重定向状态和校正状态之间转换。FSM可被配置为至少响应于误预测重定向而从空闲状态转换到记录状态。FSM可被配置为至少响应于误预测重定向以及标签CAM中的命中,从空闲状态转换到重定向状态。
误预测重定向可被称为第一误预测重定向。FSM可被配置为至少响应于与MRB相关联的第二误预测重定向而从空闲状态转换到校正状态。FSM可被配置为至少响应于与MRB相关联的第二误预测重定向以及标签CAM中的命中,从空闲状态转换到校正状态。
实施例包括一种用于从与指令获取流水线相关联的误预测恢复的方法。所述方法可包括:从一个或多个指令执行单元接收误预测重定向。所述方法可包括:通过误预测恢复单元(MRU),在从所述一个或多个指令执行单元接收的误预测重定向之后提供离散周期预测。所述方法可包括:通过分支置信度过滤器,基于来自一个或多个分支预测器的信息并基于来自所述一个或多个指令执行单元的误预测重定向来生成用于预测的分支的预测置信度信息。所述方法可包括:通过标签内容可寻址存储器(CAM),存储频繁误预测的低置信度分支。所述方法可包括:通过标签CAM,从所述一个或多个指令执行单元探测误预测重定向。所述方法可包括:通过标签CAM,从与频繁误预测的低置信度分支相关联的分支置信度过滤器获得预测置信度信息。所述方法可包括:通过误预测恢复缓冲器(MRB),存储标签CAM中存在的频繁误预测的低置信度分支的替代路径。
所述方法还可包括:通过MRB,响应于来自所述一个或多个指令执行单元的误预测重定向,利用替代路径驱动指令获取流水线。所述方法还可包括:通过MRU,在没有气泡惩罚的情况下将离散周期预测从MRB提供给指令获取流水线。所述方法还可包括:通过MRB,存储替代路径的指令地址,而不存储指令自身。所述方法还可包括:通过MRB,在来自所述一个或多个指令执行单元的误预测重定向之后立即存储替代路径。
所述方法还可包括:通过所述一个或多个分支预测器,确定替代路径是否准确。所述方法还可包括:响应于确定替代路径不准确,通过所述一个或多个分支预测器,校正发送到指令获取流水线的离散周期预测。所述方法还可包括:通过MRU,存储校正的离散周期预测。
所述方法还可包括:通过有限状态机FSM,控制MRU。所述方法还可包括:通过FSM,在空闲状态、记录状态、重定向状态和校正状态之间转换。所述方法还可包括:通过FSM,至少响应于误预测重定向而从空闲状态转换到记录状态。所述方法还可包括:通过FSM,至少响应于误预测重定向以及标签CAM中的命中,从空闲状态转换到重定向状态。在一些实施例中,误预测重定向被称为第一误预测重定向。所述方法还可包括:通过FSM,至少响应于与MRB相关联的第二误预测重定向而从空闲状态转换到校正状态。所述方法还可包括:通过FSM,至少响应于与MRB相关联的第二误预测重定向以及标签CAM中的命中,从空闲状态转换到校正状态。
结合在此公开的实施例描述的方法或算法和功能的块或步骤可直接以硬件、以由处理器执行的软件模块或以两者的组合来实现。如果以软件实现,则该功能可作为一个或多个指令或代码被存储在有形的非暂时性计算机可读介质上或者作为一个或多个指令或代码在有形的非暂时性计算机可读介质上传输。软件模块可存在于随机存取存储器(RAM)、闪存、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可移动磁盘、CD ROM或本领域已知的任何其他形式的存储介质中。
以上讨论意图提供对可实现发明构思的特定方面的合适的一个或多个机器的简要的总体描述。通常,一个或多个机器包括系统总线,处理器、存储器(例如,RAM、ROM或其他状态保存介质)、存储装置、视频接口和输入/输出接口端口附接到系统总线。可通过来自传统输入装置(诸如,键盘、鼠标等)的输入以及通过从另一机器接收的指令、与虚拟现实(VR)环境的交互、生物特征反馈或其他输入信号,至少部分地控制一个或多个机器。如在此使用的,术语“机器”意图广泛地包含单个机器、虚拟机或通信耦合的机器、虚拟机或一起操作的装置的系统。示例性机器包括计算装置(诸如,个人计算机、工作站、服务器、便携式计算机、手持装置、电话、平板计算机等)以及交通装置(诸如,私人或公共交通工具(例如,汽车、火车、出租车等))。
一个或多个机器可包括嵌入式控制器,诸如,可编程或非可编程逻辑装置或阵列、专用集成电路(ASIC)、嵌入式计算机、智能卡等。一个或多个机器可利用到一个或多个远程机器的一个或多个连接(诸如,通过网络接口、调制解调器或其他通信耦合)。机器可通过物理网络和/或逻辑网络(诸如,内联网、因特网、局域网、广域网等)的方式互连。本领域的技术人员将理解,网络通信可利用包括射频(RF)、卫星、微波、电气和电子工程师协会(IEEE)545.11、光学、红外、电缆、激光等的各种有线和/或无线短程或远程载波和协议。
可参照或结合包括功能、过程、数据结构、应用程序等的相关联数据来描述本发明构思的实施例,相关联数据在被机器访问时导致机器执行任务或定义抽象数据类型或低层硬件上下文。相关联数据可被存储在例如易失性存储器和/或非易失性存储器(例如,RAM、ROM等)中,或被存储在其他存储装置及其相关联的存储介质中,相关联的存储介质包括硬盘驱动器、软盘、光学存储装置、磁带、闪存、记忆棒、数字视频磁盘、生物存储装置等。可在包括物理网络和/或逻辑网络的传输环境上以包、串行数据、并行数据、传播信号等的形式传递相关联数据,并且可以以压缩或加密格式使用相关联数据。相关联数据可用在分布式环境中,并且可被本地和/或远程地存储以用于机器访问。
已经参照示出的实施例描述和示出发明构思的原理,将认识到,可在不脱离这样的原理的情况下在布置和细节上修改示出的实施例,并且可以以任何期望的方式组合示出的实施例。尽管前述讨论集中于特定实施例,但是其他配置被预期。具体地,即使在此使用诸如“根据发明构思的实施例”等的表述,这些短语也意在总体参照实施例可能性,而不意图将发明构思限于特定实施例配置。如在此使用的,这些术语可参照可组合成其他实施例的相同或不同的实施例。
发明构思的实施例可包括一种非暂时性机器可读介质,该非暂时性机器可读介质包括可由一个或多个处理器执行的指令,该指令包括用于执行在此描述的发明构思的要素的指令。
前述说明性实施例不应被解释为限制其发明构思。尽管已经描述一些实施例,但是本领域技术人员将容易理解,在实质上不脱离本公开的新颖教导和优点的情况下,可对那些实施例进行许多修改。因此,所有这样的修改意图被包括在如权利要求中限定的本发明构思的范围内。
可通过在图形处理器(GPU)中或处理器内核内实现一些发明特征,来最好地实现所述一些发明特征。其他类型的处理器或专用集成电路(ASIC)可实现在此公开的发明原理。可在各种移动装置(诸如,智能电话、平板计算机、笔记本计算机等)的处理器和/或存储器模块内实现发明构思,或者可在各种固定装置(诸如,台式计算机、路由器等)中实现发明构思。
Claims (20)
1.一种误预测恢复设备,包括:
一个或多个指令执行单元;
一个或多个分支预测器;以及
误预测恢复单元,连接到所述一个或多个指令执行单元并连接到所述一个或多个分支预测器,并且被配置为在来自所述一个或多个指令执行单元的误预测重定向之后提供离散周期预测,误预测恢复单元包括:
分支置信度过滤器,被配置为:基于来自所述一个或多个分支预测器的信息并基于来自所述一个或多个指令执行单元的误预测重定向,来生成用于预测的分支的预测置信度信息;
标签内容可寻址存储器,被配置为:
存储误预测的低置信度分支;
从所述一个或多个指令执行单元探测误预测重定向;并且
从与误预测的低置信度分支相关联的分支置信度过滤器获得预测置信度信息;以及
误预测恢复缓冲器,被配置为:存储标签内容可寻址存储器中存在的误预测的低置信度分支的替代路径。
2.根据权利要求1所述的误预测恢复设备,其中,替代路径从误预测的低置信度分支之中的误预测分支开始与预测路径偏离。
3.根据权利要求2所述的误预测恢复设备,还包括:指令获取流水线,其中,响应于来自所述一个或多个指令执行单元的误预测重定向,误预测恢复缓冲器被配置为利用替代路径驱动指令获取流水线。
4.根据权利要求3所述的误预测恢复设备,其中,误预测恢复单元被配置为在没有气泡惩罚的情况下将离散周期预测从误预测恢复缓冲器提供给指令获取流水线。
5.根据权利要求1所述的误预测恢复设备,其中,误预测恢复缓冲器被配置为存储替代路径的指令地址,而不存储指令自身。
6.根据权利要求1所述的误预测恢复设备,其中,误预测恢复缓冲器被配置为在误预测重定向之后存储替代路径。
7.根据权利要求1所述的误预测恢复设备,其中,误预测恢复缓冲器被配置为:存储分别与标签内容可寻址存储器中存在的误预测的低置信度分支之中的误预测的低置信度分支相关联的替代路径。
8.根据权利要求1所述的误预测恢复设备,其中,误预测恢复单元被配置为:在误预测重定向之后基于存储在误预测恢复缓冲器中的替代路径提供离散周期预测。
9.根据权利要求1所述的误预测恢复设备,其中,所述一个或多个分支预测器被配置为确定替代路径是否准确。
10.根据权利要求9所述的误预测恢复设备,其中,响应于确定替代路径不准确,所述一个或多个分支预测器被配置为校正发送到指令获取流水线的离散周期预测。
11.根据权利要求10所述的误预测恢复设备,其中,误预测恢复单元被配置为存储校正的离散周期预测。
12.根据权利要求1所述的误预测恢复设备,还包括:有限状态机,被配置为控制误预测恢复单元,并在空闲状态、记录状态、重定向状态和校正状态之间转换。
13.根据权利要求12所述的误预测恢复设备,其中,有限状态机被配置为响应于误预测重定向以及标签内容可寻址存储器中的未命中,从空闲状态转换到记录状态。
14.根据权利要求12所述的误预测恢复设备,其中,有限状态机被配置为响应于误预测重定向以及标签内容可寻址存储器中的命中,从空闲状态转换到重定向状态。
15.根据权利要求12所述的误预测恢复设备,其中,误预测重定向被称为第一误预测重定向,并且其中,有限状态机被配置为响应于与误预测恢复缓冲器相关联的第二误预测重定向而从空闲状态转换到校正状态。
16.根据权利要求15所述的误预测恢复设备,其中,有限状态机被配置为响应于与误预测恢复缓冲器相关联的第二误预测重定向以及标签内容可寻址存储器中的命中,从空闲状态转换到校正状态。
17.一种用于从与指令获取流水线相关联的误预测恢复的方法,所述方法包括:
从一个或多个指令执行单元接收误预测重定向;
通过误预测恢复单元,在从所述一个或多个指令执行单元接收的误预测重定向之后提供离散周期预测;
通过分支置信度过滤器,基于来自一个或多个分支预测器的信息并基于来自所述一个或多个指令执行单元的误预测重定向来生成用于预测的分支的预测置信度信息;
通过标签内容可寻址存储器,存储误预测的低置信度分支;
通过标签内容可寻址存储器,从所述一个或多个指令执行单元探测误预测重定向;
通过标签内容可寻址存储器,从与误预测的低置信度分支相关联的分支置信度过滤器获得预测置信度信息;以及
通过误预测恢复缓冲器,存储标签内容可寻址存储器中存在的误预测的低置信度分支的替代路径。
18.根据权利要求17所述的方法,还包括:
通过误预测恢复缓冲器,响应于来自所述一个或多个指令执行单元的误预测重定向,利用替代路径驱动指令获取流水线;
通过误预测恢复单元,在没有气泡惩罚的情况下将离散周期预测从误预测恢复缓冲器提供给指令获取流水线;
通过误预测恢复缓冲器,存储替代路径的指令地址,而不存储指令自身;以及
通过误预测恢复缓冲器,在来自所述一个或多个指令执行单元的误预测重定向之后存储替代路径。
19.根据权利要求18所述的方法,还包括:
通过所述一个或多个分支预测器,确定替代路径是否准确;
响应于确定替代路径不准确,通过所述一个或多个分支预测器,校正发送到指令获取流水线的离散周期预测;以及
通过误预测恢复单元,存储校正的离散周期预测。
20.根据权利要求17所述的方法,还包括:
通过有限状态机,控制误预测恢复单元;
通过有限状态机,在空闲状态、记录状态、重定向状态和校正状态之间转换;
通过有限状态机,响应于误预测重定向以及标签内容可寻址存储器中的未命中,从空闲状态转换到记录状态;
通过有限状态机,响应于误预测重定向以及标签内容可寻址存储器中的命中,从空闲状态转换到重定向状态;
其中,误预测重定向被称为第一误预测重定向,所述方法还包括:
通过有限状态机,响应于与误预测恢复缓冲器相关联的第二误预测重定向而从空闲状态转换到校正状态;以及
通过有限状态机,响应于与误预测恢复缓冲器相关联的第二误预测重定向以及标签内容可寻址存储器中的命中,从空闲状态转换到校正状态。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862783173P | 2018-12-20 | 2018-12-20 | |
US62/783,173 | 2018-12-20 | ||
US16/281,084 | 2019-02-20 | ||
US16/281,084 US10846097B2 (en) | 2018-12-20 | 2019-02-20 | Mispredict recovery apparatus and method for branch and fetch pipelines |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111352659A true CN111352659A (zh) | 2020-06-30 |
CN111352659B CN111352659B (zh) | 2024-04-02 |
Family
ID=71098602
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911289097.1A Active CN111352659B (zh) | 2018-12-20 | 2019-12-13 | 用于分支和获取流水线的误预测恢复设备和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10846097B2 (zh) |
KR (1) | KR20200077401A (zh) |
CN (1) | CN111352659B (zh) |
TW (1) | TWI827754B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10990403B1 (en) * | 2020-01-27 | 2021-04-27 | Arm Limited | Predicting an outcome of an instruction following a flush |
US11334361B2 (en) | 2020-03-02 | 2022-05-17 | Arm Limited | Shared pointer for local history records used by prediction circuitry |
US11157284B1 (en) | 2020-06-03 | 2021-10-26 | Arm Limited | Predicting an outcome of an instruction following a flush |
US20220075624A1 (en) * | 2020-09-04 | 2022-03-10 | Advanced Micro Devices, Inc. | Alternate path for branch prediction redirect |
EP3989063B1 (en) * | 2020-10-23 | 2023-08-30 | INTEL Corporation | High confidence multiple branch offset predictor |
US11768688B1 (en) * | 2022-06-02 | 2023-09-26 | Microsoft Technology Licensing, Llc | Methods and circuitry for efficient management of local branch history registers |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5796998A (en) * | 1996-11-21 | 1998-08-18 | International Business Machines Corporation | Apparatus and method for performing branch target address calculation and branch prediciton in parallel in an information handling system |
US6401196B1 (en) * | 1998-06-19 | 2002-06-04 | Motorola, Inc. | Data processor system having branch control and method thereof |
US6757816B1 (en) * | 1999-12-30 | 2004-06-29 | Intel Corporation | Fast branch misprediction recovery method and system |
US20050120192A1 (en) * | 2003-12-02 | 2005-06-02 | Intel Corporation ( A Delaware Corporation) | Scalable rename map table recovery |
US20050138480A1 (en) * | 2003-12-03 | 2005-06-23 | Srinivasan Srikanth T. | Method and apparatus to reduce misprediction penalty by exploiting exact convergence |
WO2008077088A2 (en) * | 2006-12-19 | 2008-06-26 | The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations | System and method for branch misprediction prediction using complementary branch predictors |
US20080195844A1 (en) * | 2007-02-13 | 2008-08-14 | Shen Gene W | Redirect Recovery Cache |
US20090063819A1 (en) * | 2007-08-28 | 2009-03-05 | Doing Richard W | Method and Apparatus for Dynamically Managing Instruction Buffer Depths for Non-Predicted Branches |
US20090193231A1 (en) * | 2008-01-30 | 2009-07-30 | Ibm Corporation | Method and apparatus for thread priority control in a multi-threaded processor of an information handling system |
CN102934075A (zh) * | 2010-06-28 | 2013-02-13 | 高通股份有限公司 | 用于使用预先通知技术改变程序的顺序流程的方法和设备 |
US20130311760A1 (en) * | 2012-05-16 | 2013-11-21 | Qualcomm Incorporated | Multi Level Indirect Predictor using Confidence Counter and Program Counter Address Filter Scheme |
US20130311759A1 (en) * | 2010-10-12 | 2013-11-21 | Soft Machines, Inc. | Instruction sequence buffer to enhance branch prediction efficiency |
CN104919418A (zh) * | 2013-01-15 | 2015-09-16 | 国际商业机器公司 | 用于分支预测的基于置信度阈值的相对路径执行 |
CN107102845A (zh) * | 2013-03-13 | 2017-08-29 | 想象力科技有限公司 | 间接分支预测 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9436476B2 (en) * | 2013-03-15 | 2016-09-06 | Soft Machines Inc. | Method and apparatus for sorting elements in hardware structures |
-
2019
- 2019-02-20 US US16/281,084 patent/US10846097B2/en active Active
- 2019-11-19 KR KR1020190149080A patent/KR20200077401A/ko active Search and Examination
- 2019-12-05 TW TW108144451A patent/TWI827754B/zh active
- 2019-12-13 CN CN201911289097.1A patent/CN111352659B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5796998A (en) * | 1996-11-21 | 1998-08-18 | International Business Machines Corporation | Apparatus and method for performing branch target address calculation and branch prediciton in parallel in an information handling system |
US6401196B1 (en) * | 1998-06-19 | 2002-06-04 | Motorola, Inc. | Data processor system having branch control and method thereof |
US6757816B1 (en) * | 1999-12-30 | 2004-06-29 | Intel Corporation | Fast branch misprediction recovery method and system |
US20050120192A1 (en) * | 2003-12-02 | 2005-06-02 | Intel Corporation ( A Delaware Corporation) | Scalable rename map table recovery |
US20050138480A1 (en) * | 2003-12-03 | 2005-06-23 | Srinivasan Srikanth T. | Method and apparatus to reduce misprediction penalty by exploiting exact convergence |
WO2008077088A2 (en) * | 2006-12-19 | 2008-06-26 | The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations | System and method for branch misprediction prediction using complementary branch predictors |
US20080195844A1 (en) * | 2007-02-13 | 2008-08-14 | Shen Gene W | Redirect Recovery Cache |
US20090063819A1 (en) * | 2007-08-28 | 2009-03-05 | Doing Richard W | Method and Apparatus for Dynamically Managing Instruction Buffer Depths for Non-Predicted Branches |
US20090193231A1 (en) * | 2008-01-30 | 2009-07-30 | Ibm Corporation | Method and apparatus for thread priority control in a multi-threaded processor of an information handling system |
CN102934075A (zh) * | 2010-06-28 | 2013-02-13 | 高通股份有限公司 | 用于使用预先通知技术改变程序的顺序流程的方法和设备 |
US20130311759A1 (en) * | 2010-10-12 | 2013-11-21 | Soft Machines, Inc. | Instruction sequence buffer to enhance branch prediction efficiency |
US20130311760A1 (en) * | 2012-05-16 | 2013-11-21 | Qualcomm Incorporated | Multi Level Indirect Predictor using Confidence Counter and Program Counter Address Filter Scheme |
CN104919418A (zh) * | 2013-01-15 | 2015-09-16 | 国际商业机器公司 | 用于分支预测的基于置信度阈值的相对路径执行 |
CN107102845A (zh) * | 2013-03-13 | 2017-08-29 | 想象力科技有限公司 | 间接分支预测 |
Non-Patent Citations (1)
Title |
---|
ERIK JACOBSEN: "Assigning Confidence to Conditional Branch Predictions", 《IEEE》, pages 142 - 151 * |
Also Published As
Publication number | Publication date |
---|---|
KR20200077401A (ko) | 2020-06-30 |
TWI827754B (zh) | 2024-01-01 |
US20200201651A1 (en) | 2020-06-25 |
US10846097B2 (en) | 2020-11-24 |
CN111352659B (zh) | 2024-04-02 |
TW202026867A (zh) | 2020-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111352659B (zh) | 用于分支和获取流水线的误预测恢复设备和方法 | |
CN110069285B (zh) | 一种检测分支预测的方法及处理器 | |
TWI506552B (zh) | 迴圈預測器指導的迴圈緩衝器 | |
US10402200B2 (en) | High performance zero bubble conditional branch prediction using micro branch target buffer | |
US7478228B2 (en) | Apparatus for generating return address predictions for implicit and explicit subroutine calls | |
CN103119537B (zh) | 用于通过使指令拾取单元掉电来降低处理器中的功耗的方法和装置 | |
KR101081674B1 (ko) | 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법 | |
CN100530081C (zh) | 分支预测控制 | |
JP2013122774A (ja) | 同時に予測された分岐命令を解決するための方法および装置 | |
US20190155608A1 (en) | Fast pipeline restart in processor with decoupled fetcher | |
KR20130122675A (ko) | 아직 발행되지 않은 명령들에 대한 얼리 액세스를 가진 코프로세서를 구비한 프로세서 | |
CN112230992A (zh) | 一种包含分支预测循环的指令处理装置、处理器及其处理方法 | |
CN107870780B (zh) | 数据处理装置和方法 | |
CN106293639B (zh) | 使用微分支目标缓冲器的高性能零气泡条件分支预测 | |
US11249762B2 (en) | Apparatus and method for handling incorrect branch direction predictions | |
EP3646171A1 (en) | Branch prediction for fixed direction branch instructions | |
CN116048627B (zh) | 指令缓冲方法、装置、处理器、电子设备及可读存储介质 | |
CN106066786A (zh) | 处理器以及处理器操作方法 | |
US7836277B2 (en) | Pre-tracing instructions for CGA coupled processor in inactive mode for execution upon switch to active mode and continuing pre-fetching cache miss instructions | |
US11194575B2 (en) | Instruction address based data prediction and prefetching | |
US11947461B2 (en) | Prefetch unit filter for microprocessor | |
CN109614146B (zh) | 一种局部跳转指令取指方法及装置 | |
CN117971324A (zh) | 一种cpu指令预取方法、装置、设备及存储介质 | |
CN114064127A (zh) | 具有指令预取功能的微处理器 | |
CN114116007A (zh) | 具有指令预取功能的微处理器 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |