CN117008979B - 一种分支预测器 - Google Patents
一种分支预测器 Download PDFInfo
- Publication number
- CN117008979B CN117008979B CN202311280301.XA CN202311280301A CN117008979B CN 117008979 B CN117008979 B CN 117008979B CN 202311280301 A CN202311280301 A CN 202311280301A CN 117008979 B CN117008979 B CN 117008979B
- Authority
- CN
- China
- Prior art keywords
- branch
- target buffer
- stage
- branch target
- buffer
- 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.)
- Active
Links
- 230000003139 buffering effect Effects 0.000 claims abstract description 18
- 239000013598 vector Substances 0.000 claims description 10
- 230000000875 corresponding effect Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 9
- 238000000034 method Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
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
本发明提供一种分支预测器,包括分支历史缓冲子系统、分支目标缓冲子系统、分支跳转方向预测器,所述分支历史缓冲子系统用于存储分支预测器进行预测所需要的分支历史信息,通过分支历史信息的条目查看分支指令跳转方向的指示;所述分支目标缓冲子系统分为依次进行被访问的三级单元,包括第一级分支目标缓冲、第二级分支目标缓冲、第三级分支目标缓冲,所述第一级分支目标缓冲中有间接分支目标、其它分支目标两个子模块。本发明在包含分支类型指令的高性能通用处理器设计中,以精简的微架构和较小的硬件资源开销实现高效的分支预测,可以适配包含分支指令的各种架构,能够显著提升处理器前端运行效率。
Description
技术领域
本发明涉及一种分支指令执行装置,尤其是涉及一种分支预测器。
背景技术
计算机程序的指令序列可以包括各种分支指令。分支指令是计算机程序中的一种指令,它可以使计算机开始执行不同的指令序列,从而偏离其按顺序执行指令的默认行为。例如,可以使用条件跳转指令来实现双向分支(if… else…)。分支预测器用以预测分支指令是否会跳转。
分支预测器可以改进指令流水线中的流程。在没有分支预测的情况下,处理器必须等到分支指令(例如,条件跳转指令)通过执行阶段,然后下一条指令才能进入提取阶段。分支预测器通过确定分支(例如,条件跳转)是否更有可能跳转来避免这种等待。然后在最可能的分支处的指令(例如,序列中的下一条指令或不同的指令)被提取并且从预测指令开始的一个或多个指令被推测性地(投机)执行。如果处理器稍后检测到分支预测错误,则刷新流水线(导致投机执行的指令被丢弃)并且流水线以正确的指令重新开始。
图1是一个处理器实现的装置示例的框图。该装置中的分支预测器提供一个或多个执行单元执行的分支指令跳转地址的预测,预测功能由分支跳转目标预测和分支跳转方向预测两个子系统协同完成,例如,当分支跳转目标预测子系统索引到某个分支指令的跳转目标地址,并且分支跳转方向预测子系统认为当前的分支指令是要跳转的,则分支预测器给出预测的跳转地址。这些地址可以被发送到指令提取单元中的指令缓存,指令缓存在所识别的地址处检索指令(如果在指令缓存中检测到输入地址的命中,则可以直接从指令缓存输出对应的指令,否则指令可以从内存系统的层次结构的较低级别请求,并且在检索时可以从指令缓存中输出)。取出的指令然后被发送到指令译码单元,在那里它们被译码以产生用于控制指令执行单元的操作的控制信号,从而实现所需的操作。
分支预测器可以在每次取指令时访问以预测接下来即将执行的指令块,预测的提取指令块可以包括存储器地址空间内的一个或多个顺序指令。指令块中的指令条数通常是确定的,例如可以是1,2,4,8,16,32条。
分支预测器的预测结果(分支跳转地址)由多路复用器输出(多路复用器的另一通路为顺序取指地址),并提供给指令缓存,同时也被提供给分支预测器做新一轮预测。分支预测器的目的是预测是否有任何被预测为跳转的会造成指令流改变的分支指令(即指令的运行顺序不是按照编译后的1、2、3、4、5、6......顺次执行,而是在中间某处跳到其它位置的指令执行,例如1、2、3、4、9、10、11)。如果预测的指令块包括一个或多个这样的分支指令,则识别被预测为跳转的第一条改变指令流的指令的位置,并且该指令的目标地址被用于下一个预测的提取指令块的起始地址。如果在提取指令块内没有识别出这样的分支指令,则下一个提取指令块的起始地址是当前指令块的最后一条指令的地址之后的顺序地址。
由上文可知,在处理器设计中,如果不加入分支预测器或者分支预测器预测准确率不高的话,都会对处理器性能产生较大影响。
以下两点是目前业界对于分支预测技术的共识:
(1)大部分(可能80%-90%以上)的分支预测错误是由少部分的分支指令造成的(例如具有多个跳转目标地址的间接分支(Indirect Branch),以及伴随较长循环的分支指令等)。
(2)具有较高预测错误率的分支指令通常不会连续均匀分布。
因此,能够针对上述两点问题进行优化能够显著提升分支预测器的预测准确率。
当下主流的高性能处理器基本都是基于多级流水线设计的,因此分支预测器中的预测子系统一般相对应地也设计为多级的。如图2所示,一般来说,越是前级的预测对于处理器性能的损伤越小(分支跳转地址对指令提取重定向产生的流水线停顿取决于预测器所处的流水线阶段,例如,如果Level 1预测器的预测结果出在与指令提取单元的流水线第一级相对应的时钟周期,则不会使指令提取流水线停顿;Level3预测器的预测结果出在与指令提取单元的流水线第三级相对应的时钟周期,则当Level 3预测器预测分支指令跳转时,指令提取单元流水线前两级投机执行的部分要被冲刷掉,相应地,指令提取单元流水线要停顿两个时钟周期)。
目前公开的技术(细节)方案中并没有对上述提出的两个问题(1.大部分(可能80%-90%以上)的分支预测错误是由少部分的分支指令造成的;2.具有较高预测错误率的分支指令通常不会连续均匀分布)提供完美的解决方案。
发明内容
本发明提供了一种分支预测器,用于解决上述两个问题,其技术方案如下所述:
一种分支预测器,包括分支历史缓冲子系统、分支目标缓冲子系统、分支跳转方向预测器,所述分支历史缓冲子系统用于存储分支预测器进行预测所需要的分支历史信息,通过分支历史信息的条目查看分支指令跳转方向的指示;所述分支目标缓冲子系统分为依次进行被访问的三级单元,包括第一级分支目标缓冲、第二级分支目标缓冲、第三级分支目标缓冲,所述第一级分支目标缓冲中有间接分支目标、其它分支目标两个子模块,分别针对间接分支指令和非间接分支指令进行预测。
所述分支历史信息是一个或多个全局历史向量或局部历史向量,包括有关当遇到分支指令时程序的状态以及是否跳转分支的信息。
所述第一级分支目标缓冲最先被访问,第二级分支目标缓冲在第一级分支目标缓冲所在流水线阶段的下一级被访问,第三级分支目标缓冲在第二级分支目标缓冲所在流水线阶段的下一级被访问,并且第一级分支目标缓冲到第三级分支目标缓冲的容量依次递增。
所述第二级分支目标缓冲、第三级分支目标缓冲的条目相同,包括有效位、标签、分支类型、跳转目标、预测错误计数五项信息;所述有效位表示该条目能够被用于进行预测;所述标签在分支目标缓冲访问时用来进行条目匹配;所述分支类型表示该条目中存储的分支指令是什么类型;所述跳转目标表示该条目中存储的分支指令的跳转地址;所述预测错误计数表示该条目中的分支预测信息预测的准确度,准确度过低的条目会被剔到后级分支目标缓冲中。
所述第一级分支目标缓冲中的条目内容相比第二级分支目标缓冲、第三级分支目标缓冲的条目,多出一项“是否跳转”,使用2-bit饱和计数器来预测分支跳转方向。
还包括高频错误预测分支缓冲,所述高频错误预测分支缓冲用于记录高频错误预测的分支指令对应的正确历史信息以确保该历史信息不被频繁的循环迭代覆盖。
所有的分支指令信息需要由CPU中相应的指令解析单元处理,所有首次出现的分支指令信息都会被更新进入第三级分支目标缓冲。
当第三级分支目标缓冲命中并且第一级分支目标缓冲未命中时,对应条目的分支预测信息将被移入第一级分支目标缓冲;当第三级分支目标缓冲条目被占满时又有新的分支指令信息需要被更新,则第三级分支目标缓冲需要先根据各条目中预测错误计数信息选择预测准确率最低的条目剔出,如果所有条目预测准确率均未达到剔出的阈值,则根据最近最少使用算法覆盖对应的旧条目,为新写入的信息提供位置。
第一级分支目标缓冲接收第二级分支目标缓冲和第三级分支目标缓冲向其移入的分支指令信息,写入条件均为第一级分支目标缓冲未预测并且后级分支目标缓冲进行了预测,并且写入时将间接分支指令与其它类型的分支指令分开存储;当第一级分支目标缓冲条目被占满时又有新的分支指令信息需要被更新,则需要先根据各条目中预测错误计数信息选择预测准确率最低的条目剔出到第二级分支目标缓冲,如果所有条目预测准确率均未达到剔出的阈值,则根据最近最少使用算法将对应条目剔出到第二级分支目标缓冲。
所述高频错误预测分支缓冲预测时分为两级,第一级缓冲存入分支历史信息,通过与条目中标签哈希后得到一个新的标签,通过这个新的标签索引到第二级缓冲从而得到分支跳转目标地址;其中,第二级分支目标缓冲或第三级分支目标缓冲访问的同时,高频错误预测分支缓冲也被访问,如果第二级分支目标缓冲或第三级分支目标缓冲与高频错误预测分支缓冲同时命中,则根据两者命中条目中的预测错误计数值进行比较,选择较低值的条目作为预测结果。
所述分支预测器,在包含分支类型指令的高性能通用处理器设计中,以精简的微架构和较小的硬件资源开销实现高效的分支预测,特别针对处理器应用场景的典型工作负载中对性能影响较大的分支指令高频错误预测进行了优化,可以适配包含分支指令的各种架构,能够显著提升处理器前端运行效率。
附图说明
图1是一个处理器实现的装置示例示意图;
图2是所述分支预测器中的预测子系统设计为多级的示意图;
图3是所述分支预测器的结构示意图;
图4是所述分支目标缓冲子系统的结构示意图;
图5是所述第二级分支目标缓冲和第三级分支目标缓冲中的条目示例示意图;
图6是所述第一级分支目标缓冲中的条目内容示意图;
图7是所述高频错误预测分支缓冲的结构框图。
具体实施方式
如图3所示,所述分支预测器,包括分支历史缓冲子系统、分支目标缓冲子系统、分支跳转方向预测器三部分。本发明提供的分支预测器,解决的分支预测方案的优化主要在分支跳转目标预测子系统,将分支跳转目标预测子系统采用分支目标缓冲子系统(BranchTarget Buffer,简称BTB)。分支跳转方向预测器在本发明框架下可以使用业界普遍使用的预测算法(例如TAGE、Perceptron等)。
分支历史缓冲子系统用于存储分支预测器进行预测所需要的分支历史信息,所述分支历史信息是一个或多个全局历史向量或局部历史向量,分支历史信息可以包括有关当遇到分支指令时程序的状态以及是否跳转分支的信息(例如,程序是否跳转到一条指令或下一条指令是否指令已执行)。分支预测器利用分支历史信息,可以包括遇到特定分支指令的先前N个实例(其中N可以是任何合适的整数)的条目,其中每个条目包括分支指令跳转的方向的指示。
其中,全局历史向量通常不会为每个分支指令保留单独的历史记录,而是保留所有分支指令的共享历史。因此,全局历史向量可以包括在当前分支指令之前遇到的最后N个分支指令的表示。本发明框架下的分支历史缓冲子系统中存储的历史向量可以包括与先前遇到的分支指令相关联的任何合适的信息,例如分支指令的地址、分支指令的目标(例如,如果分支指令被跳转到的分支指令指定的分支的地址)跳转)、分支指令跳转的方向等。
如图4所示,所述分支目标缓冲子系统分为三级:即第一级分支目标缓冲、第二级分支目标缓冲、第三级分支目标缓冲三个单元。其中,第一级分支目标缓冲中有两个子模块:间接分支目标(预测器)和其它(非间接)分支目标(预测器),分别针对间接分支指令和非间接分支指令进行预测。第二级分支目标缓冲和第三级分支目标缓冲不涉及这个区分设计。
所述分支目标缓冲子系统除了分成的三级,还设置有一个单元:高频错误预测分支缓冲。使用时,第一级分支目标缓冲最先被访问,第二级分支目标缓冲在第一级分支目标缓冲所在流水线阶段的下一级被访问,第三级分支目标缓冲在第二级分支目标缓冲所在流水线阶段的下一级被访问。一般来说,第一级分支目标缓冲到第三级分支目标缓冲的容量是依次递增的。
第二级分支目标缓冲和第三级分支目标缓冲中的条目示例如图5所示,包含了有效位、标签、分支类型、跳转目标、预测错误计数五项信息。所述有效位表示该条目可以被用于进行预测;标签在分支目标缓冲访问时用来进行条目匹配;分支类型表示该条目中存储的分支指令是什么类型的(不同类型的分支指令可能对应使用不同的预测组件,例如无条件跳转分支指令就不需要再关注分支跳转方向预测器的信息,因为一定是跳转的);跳转目标表示该条目中存储的分支指令的跳转地址;预测错误计数表示该条目中的分支预测信息预测的准确度,准确度过低的条目会被剔到后级分支目标缓冲中。
第一级分支目标缓冲中的条目内容与后两级的有一处不同,多了一个“是否跳转”的项,如图6所示。因为第一级分支目标缓冲为了能够快速给出预测结果,一般使用2-bit饱和计数器来预测分支跳转方向而非使用复杂预测器(例如TAGE预测器)。
本发明的应用步骤如下所述:
S1:当CPU初始运行时,分支跳转目标预测子系统中没有存储分支指令,因此无法进行预测,所有的分支指令信息都需要由CPU中相应的指令解析单元,例如分支(执行)单元(Branch Unit)反馈。所有首次出现的分支指令信息都会被更新进入第三级分支目标缓冲。
S2:当第三级分支目标缓冲命中并且第一级分支目标缓冲未命中时,对应条目的分支预测信息将被移入第一级分支目标缓冲;当第三级分支目标缓冲条目被占满时又有新的分支指令信息需要被更新,则第三级分支目标缓冲需要先根据各条目中预测错误计数信息选择预测准确率最低的条目剔出,如果所有条目预测准确率均未达到剔出的阈值(例如连续预测错误三次及以上),则根据最近最少使用(LeastRecently Used,简称LRU)算法覆盖对应的旧条目,为新写入的信息提供位置。
S3:第一级分支目标缓冲接收第二级分支目标缓冲和第三级分支目标缓冲向其移入的分支指令信息(写入条件均为第一级分支目标缓冲未预测并且后级分支目标缓冲进行了预测),并且写入时将间接分支指令(Indirect Branch)与其它类型的分支指令分开存储。这种设计方案主要考虑到第一级分支目标缓冲使用简易的分支历史信息导致对于间接分支的预测准确度不高,频繁动态调整不要影响到其它分支指令。当第一级分支目标缓冲条目被占满时又有新的分支指令信息需要被更新,则需要先根据各条目中预测错误计数信息选择预测准确率最低的条目剔出到第二级分支目标缓冲,如果所有条目预测准确率均未达到剔出的阈值(例如连续预测错误三次及以上),则根据最近最少使用(LeastRecentlyUsed,简称LRU)算法将对应条目剔出到第二级分支目标缓冲。
其中,第二级分支目标缓冲的写入信息主要源于第一级分支目标缓冲剔出的条目。当第二级分支目标缓冲命中并且第一级分支目标缓冲未命中时,对应条目的分支预测信息将被写入第一级分支目标缓冲。
上述的分支目标缓冲子系统的动态更新策略保证了“较热”(出现频率较高)的分支指令尽可能地被相对处于流水线前级的分支目标缓冲预测,有效地降低了分支预测带来的流水线停顿造成地性能损失。同时,尽可能地使相同地分支预测信息不做重复存储,从而提升了存储效率。
上文提到,减少少数高频出现的分支错误预测将极大地提高预测器整体性能。因此,在本发明中识别高频错误预测的分支指令并利用高频错误预测分支缓冲来预测这些分支指令。一般来说,具有单一跳转目标的无条件(直接)跳转分支(Unconditional Branch)和条件(直接)跳转分支(Conditional Branch)指令在通常情况下不容易发生预测错误。一个典型的容易预测错误的场景是具有多个(数十甚至上百)跳转目标的间接分支(IndirectBranch)指令频繁循环出现。由于间接跳转分支指令的预测需要结合分支历史信息(越长越准确)进行预测,然而全局共享分支历史信息的一个缺点就是如果分支指令不相关或者在被预测的分支指令之间有许多其他分支指令,则分支历史可能会被不相关的信息以及相关的分支指令稀释。全局历史向量在先前循环迭代中被分支指令覆盖时,可能无法为当前分支指令提供准确的程序上下文,也无法在进入循环之前捕获与分支指令的相关性。所以高频错误预测分支缓冲需要记录高频错误预测的分支指令对应的正确历史信息以确保该历史信息不被频繁的循环迭代覆盖。同时,当第一次遇到分支指令时或在检测到循环退出后遇到分支指令时,对应分支历史以及指令预测信息也写入高频错误预测分支缓冲。
所述高频错误预测分支缓冲的结构框图如图7所示,高频错误预测分支缓冲的条目与第二级分支目标缓冲、第三级分支目标缓冲条目存储的信息类似,区别在于高频错误预测分支缓冲预测时分为两级,第一级缓冲存入分支历史信息,通过与条目中标签哈希后得到一个新的标签,通过这个新的标签索引到第二级缓冲从而得到分支跳转目标地址。在实际应用中,第二级分支目标缓冲或第三级分支目标缓冲访问的同时,高频错误预测分支缓冲也被访问,如果第二级分支目标缓冲或第三级分支目标缓冲与高频错误预测分支缓冲同时命中,则根据两者命中条目中的预测错误计数值进行比较,选择较低值的条目作为预测结果。
高频错误预测分支缓冲填满后的条目剔出策略与第三级分支目标缓冲对应的策略一致。
本发明产生的有益效果主要有:
(1)通过对分支目标缓冲子系统中的分支信息的动态流转,使得出现较为频繁的分支指令能够在更短的时钟周期内得到预测,并且对于前级分支目标缓冲预测不准的分支指令移动到后级分支目标缓冲,从而使其能够使用更多更准确的信息来提升预测准确度。
(2)加入高频错误预测分支缓冲,专门针对贡献大部分的分支预测错误的少数分支指令进行预测,提升了预测器的准确度。
(3)分支目标缓冲子系统中各级缓冲存储信息相互基本不重复,提升了存储效率。
Claims (7)
1.一种分支预测器,其特征在于:包括分支历史缓冲子系统、分支目标缓冲子系统、分支跳转方向预测器,所述分支历史缓冲子系统用于存储分支预测器进行预测所需要的分支历史信息,通过分支历史信息的条目查看分支指令跳转方向的指示;所述分支目标缓冲子系统分为依次进行被访问的三级单元,包括第一级分支目标缓冲、第二级分支目标缓冲、第三级分支目标缓冲,所述第一级分支目标缓冲中有间接分支目标、其它分支目标两个子模块,分别针对间接分支指令和非间接分支指令进行预测;
还包括高频错误预测分支缓冲,所述高频错误预测分支缓冲用于记录高频错误预测的分支指令对应的正确历史信息以确保该历史信息不被频繁的循环迭代覆盖;
当第三级分支目标缓冲命中并且第一级分支目标缓冲未命中时,对应条目的分支预测信息将被移入第一级分支目标缓冲;当第三级分支目标缓冲条目被占满时又有新的分支指令信息需要被更新,则第三级分支目标缓冲需要先根据各条目中预测错误计数信息选择预测准确率最低的条目剔出,如果所有条目预测准确率均未达到剔出的阈值,则根据最近最少使用算法覆盖对应的旧条目,为新写入的信息提供位置;
第一级分支目标缓冲接收第二级分支目标缓冲和第三级分支目标缓冲向其移入的分支指令信息,写入条件均为第一级分支目标缓冲未预测并且后级分支目标缓冲进行了预测,并且写入时将间接分支指令与其它类型的分支指令分开存储;当第一级分支目标缓冲条目被占满时又有新的分支指令信息需要被更新,则需要先根据各条目中预测错误计数信息选择预测准确率最低的条目剔出到第二级分支目标缓冲,如果所有条目预测准确率均未达到剔出的阈值,则根据最近最少使用算法将对应条目剔出到第二级分支目标缓冲。
2.根据权利要求1所述的分支预测器,其特征在于:所述分支历史信息是一个或多个全局历史向量或局部历史向量,包括有关当遇到分支指令时程序的状态以及是否跳转分支的信息。
3.根据权利要求1所述的分支预测器,其特征在于:所述第一级分支目标缓冲最先被访问,第二级分支目标缓冲在第一级分支目标缓冲所在流水线阶段的下一级被访问,第三级分支目标缓冲在第二级分支目标缓冲所在流水线阶段的下一级被访问,并且第一级分支目标缓冲到第三级分支目标缓冲的容量依次递增。
4.根据权利要求1所述的分支预测器,其特征在于:所述第二级分支目标缓冲、第三级分支目标缓冲的条目相同,包括有效位、标签、分支类型、跳转目标、预测错误计数五项信息;所述有效位表示该条目能够被用于进行预测;所述标签在分支目标缓冲访问时用来进行条目匹配;所述分支类型表示该条目中存储的分支指令是什么类型;所述跳转目标表示该条目中存储的分支指令的跳转地址;所述预测错误计数表示该条目中的分支预测信息预测的准确度,准确度过低的条目会被剔到后级分支目标缓冲中。
5.根据权利要求1或4任一所述的分支预测器,其特征在于:所述第一级分支目标缓冲中的条目内容相比第二级分支目标缓冲、第三级分支目标缓冲的条目,多出一项“是否跳转”,使用2-bit饱和计数器来预测分支跳转方向。
6.根据权利要求1所述的分支预测器,其特征在于:所有的分支指令信息需要由CPU中相应的指令解析单元处理,所有首次出现的分支指令信息都会被更新进入第三级分支目标缓冲。
7.根据权利要求1所述的分支预测器,其特征在于:所述高频错误预测分支缓冲预测时分为两级,第一级缓冲存入分支历史信息,通过与条目中标签哈希后得到一个新的标签,通过这个新的标签索引到第二级缓冲从而得到分支跳转目标地址;其中,第二级分支目标缓冲或第三级分支目标缓冲访问的同时,高频错误预测分支缓冲也被访问,如果第二级分支目标缓冲或第三级分支目标缓冲与高频错误预测分支缓冲同时命中,则根据两者命中条目中的预测错误计数值进行比较,选择较低值的条目作为预测结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311280301.XA CN117008979B (zh) | 2023-10-07 | 2023-10-07 | 一种分支预测器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311280301.XA CN117008979B (zh) | 2023-10-07 | 2023-10-07 | 一种分支预测器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117008979A CN117008979A (zh) | 2023-11-07 |
CN117008979B true CN117008979B (zh) | 2023-12-26 |
Family
ID=88567589
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311280301.XA Active CN117008979B (zh) | 2023-10-07 | 2023-10-07 | 一种分支预测器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117008979B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117472446B (zh) * | 2023-12-28 | 2024-04-09 | 北京微核芯科技有限公司 | 基于处理器的多级取指目标缓冲器的分支预测方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5978909A (en) * | 1997-11-26 | 1999-11-02 | Intel Corporation | System for speculative branch target prediction having a dynamic prediction history buffer and a static prediction history buffer |
US6721877B1 (en) * | 2000-05-25 | 2004-04-13 | Advanced Micro Devices, Inc. | Branch predictor that selects between predictions based on stored prediction selector and branch predictor index generation |
CN113722243A (zh) * | 2021-09-03 | 2021-11-30 | 苏州睿芯集成电路科技有限公司 | 用于直接跳转的超前预测的方法及分支指令追踪高速缓存 |
CN114296803A (zh) * | 2021-12-08 | 2022-04-08 | 江南大学 | 基于全局历史分类的间接分支预测器及预测方法 |
CN115480826A (zh) * | 2022-09-21 | 2022-12-16 | 海光信息技术股份有限公司 | 分支预测器、分支预测方法、装置和计算设备 |
CN116737240A (zh) * | 2022-03-02 | 2023-09-12 | 腾讯科技(深圳)有限公司 | 分支预测方法、装置、处理器、介质及设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040014988A (ko) * | 2001-06-29 | 2004-02-18 | 코닌클리즈케 필립스 일렉트로닉스 엔.브이. | 간접 브랜치 타겟 어드레스 예측을 위한 방법, 장치 및컴파일러 |
US9235419B2 (en) * | 2012-06-11 | 2016-01-12 | International Business Machines Corporation | Branch target buffer preload table |
US9430241B2 (en) * | 2012-06-15 | 2016-08-30 | International Business Machines Corporation | Semi-exclusive second-level branch target buffer |
US20160239309A1 (en) * | 2015-02-12 | 2016-08-18 | International Business Machines Corporation | Branch target buffer column predictor |
GB2577051B (en) * | 2018-09-11 | 2021-03-03 | Advanced Risc Mach Ltd | Branch prediction using branch target buffer |
-
2023
- 2023-10-07 CN CN202311280301.XA patent/CN117008979B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5978909A (en) * | 1997-11-26 | 1999-11-02 | Intel Corporation | System for speculative branch target prediction having a dynamic prediction history buffer and a static prediction history buffer |
US6721877B1 (en) * | 2000-05-25 | 2004-04-13 | Advanced Micro Devices, Inc. | Branch predictor that selects between predictions based on stored prediction selector and branch predictor index generation |
CN113722243A (zh) * | 2021-09-03 | 2021-11-30 | 苏州睿芯集成电路科技有限公司 | 用于直接跳转的超前预测的方法及分支指令追踪高速缓存 |
CN114296803A (zh) * | 2021-12-08 | 2022-04-08 | 江南大学 | 基于全局历史分类的间接分支预测器及预测方法 |
CN116737240A (zh) * | 2022-03-02 | 2023-09-12 | 腾讯科技(深圳)有限公司 | 分支预测方法、装置、处理器、介质及设备 |
CN115480826A (zh) * | 2022-09-21 | 2022-12-16 | 海光信息技术股份有限公司 | 分支预测器、分支预测方法、装置和计算设备 |
Also Published As
Publication number | Publication date |
---|---|
CN117008979A (zh) | 2023-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5136697A (en) | System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache | |
US6263427B1 (en) | Branch prediction mechanism | |
KR101459536B1 (ko) | 사전 통지 기법들을 사용하여 프로그램의 순차적 흐름을 변경하기 위한 방법들 및 장치 | |
US6178498B1 (en) | Storing predicted branch target address in different storage according to importance hint in branch prediction instruction | |
KR100411529B1 (ko) | 제2 레벨 분기 예측 테이블을 이용한 분기 예측 방법 및장치 | |
JP4027620B2 (ja) | 分岐予測装置、プロセッサ、及び分岐予測方法 | |
US9442736B2 (en) | Techniques for selecting a predicted indirect branch address from global and local caches | |
US7831817B2 (en) | Two-level branch prediction apparatus | |
US5935238A (en) | Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles | |
US5964869A (en) | Instruction fetch mechanism with simultaneous prediction of control-flow instructions | |
CN117008979B (zh) | 一种分支预测器 | |
US10613869B2 (en) | Branch target address provision | |
US11169807B2 (en) | System and method for dynamic accuracy and threshold control for branch classification | |
KR101026978B1 (ko) | 리턴 스택을 운용하는 방법 및 장치 | |
US10423420B2 (en) | Stream based branch prediction index accelerator for multiple stream exits | |
US10831499B2 (en) | Apparatus and method for performing branch prediction | |
US20240152360A1 (en) | Branch Prediction Using loop Iteration Count | |
JPH1040104A (ja) | 分岐命令の結果予測装置及び方法 | |
US20040225866A1 (en) | Branch prediction in a data processing system | |
US10922082B2 (en) | Branch predictor | |
US20200159538A1 (en) | Adaptive Utilization Mechanism for a First-Line Defense Branch Predictor | |
US10620960B2 (en) | Apparatus and method for performing branch prediction | |
US7343481B2 (en) | Branch prediction in a data processing system utilizing a cache of previous static predictions | |
US20060259752A1 (en) | Stateless Branch Prediction Scheme for VLIW Processor |
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 |