CN216527140U - 一种分支预测的装置及处理器 - Google Patents

一种分支预测的装置及处理器 Download PDF

Info

Publication number
CN216527140U
CN216527140U CN202122779113.4U CN202122779113U CN216527140U CN 216527140 U CN216527140 U CN 216527140U CN 202122779113 U CN202122779113 U CN 202122779113U CN 216527140 U CN216527140 U CN 216527140U
Authority
CN
China
Prior art keywords
branch
feedback
unit
instruction
history
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
Application number
CN202122779113.4U
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.)
Shenzhen Yousi Technology Co ltd
Original Assignee
Shenzhen Yousi Technology 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 Shenzhen Yousi Technology Co ltd filed Critical Shenzhen Yousi Technology Co ltd
Priority to CN202122779113.4U priority Critical patent/CN216527140U/zh
Application granted granted Critical
Publication of CN216527140U publication Critical patent/CN216527140U/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本申请提供一种分支预测的装置及处理器,所述装置用于处理器的指令执行,包括:全局分支历史寄存器;分支反馈单元;分支反馈值生成单元,与所述分支反馈单元及所述全局分支历史寄存器连接,用于生成分支预测反馈值;异或计算单元,与所述分支反馈值生成单元及程序计数器连接,用于将分支指令的地址与所述分支预测反馈值进行异或运算;模式历史表索引单元,与所述异或计算单元连接,用于从模式历史表得到预测分支跳转的决策计数器;预测跳转单元,与所述模式历史表索引单元连接,用于根据所述决策计数器的状态值预测分支是否跳转。通过分支执行情况的反馈提高分支预测准确率。

Description

一种分支预测的装置及处理器
技术领域
本申请涉及处理器领域,具体涉及一种分支预测的装置及处理器。
背景技术
现代高性能处理器均采用流水线技术实现,而采用流水线技术不可避免会产生控制冒险,控制冒险是指流水线在执行分支指令时,无法提前确定下一条指令地址,导致延迟产生的情况。
在一个经典五级流水线中,包含了取指,译码,执行,访存,写回五个阶段,处理器需要在取指令阶段通过指令地址提取指令,而分支指令只有在访存阶段,才能确定下一条指令的提取地址,这就导致流水线需要等待,此时处理器处于空闲阶段,浪费了许多时钟周期,降低了性能。
实用新型内容
本申请旨在提供一种分支预测的装置及处理器,采用额外的分支预测单元对分支执行情况进行反馈,可以保持较高的预测准确率,减少时钟周期的浪费,降低功耗,优化了处理器的性能。
根据本申请的一方面,提出一种分支预测的装置,用于处理器的指令执行,包括:
全局分支历史寄存器;
分支反馈单元;
分支反馈值生成单元,与所述分支反馈单元及所述全局分支历史寄存器连接,用于生成分支预测反馈值;
异或计算单元,与所述分支反馈值生成单元及程序计数器连接,用于将分支指令的地址与所述分支预测反馈值进行异或运算;
模式历史表索引单元,与所述异或计算单元连接,用于从模式历史表得到预测分支跳转的决策计数器;
预测跳转单元,与所述模式历史表索引单元连接,用于根据所述决策计数器的状态值预测分支是否跳转。
根据一些实施例,前述装置还包括,分支反馈单元包括分支反馈检测器、分支反馈历史寄存器、使能单元、多路选择器;
所述分支反馈检测器与分支指令寄存器连接,用于根据寄存器值进行运算并根据运算结果更新分支反馈历史使能信号和分支反馈历史寄存器;
所述分支反馈历史寄存器与所述分支反馈检测器连接,用于记录分支反馈检测器的运算结果;
所述使能单元与所述分支反馈检测器连接,用于接收分支反馈历史使能信号,使能多路选择器;
所述多路选择器与所述分支反馈历史寄存器及所述全局分支历史寄存器连接,用于生成分支预测反馈值。
根据一些实施例,前述装置还包括,所述分支反馈值生成单元用于将分支反馈单元的输出与所述全局分支历史寄存器的高位拼接以得到所述分支预测反馈值。
根据一些实施例,前述装置还包括,所述分支反馈单元用于根据所述分支反馈使能信号选择全局分支历史寄存器的低位或者分支反馈历史寄存器作为分支反馈的结果。
根据一些实施例,前述装置还包括,所述分支反馈检测器包括:
比较器,用于将所述运算结果和预设值进行比较,并根据比较结果更新所述分支反馈使能信号。
根据一些实施例,前述装置还包括,所述分支反馈检测器还包括:
减法器,用于在取出的指令为循环分支指令时将分支指令寄存器值进行相减运算,并取绝对值,得到所述运算结果。
根据一些实施例,前述装置还包括,所述预设值大于等于所述循环分支指令的循环步长。
根据一些实施例,前述装置还包括分支结果记录单元和模式历史表更新单元:
所述分支结果记录单元用于根据所述分支指令跳转结果更新所述全局分支历史寄存器;
所述模式历史表更新单元用于根据所述分支指令跳转结果更新索引得到的决策计数器。
根据本申请的另一方面,提供一种处理器,所述处理器包括根据前述的装置中任一所述的装置。
根据本申请示例实施例,通过提供额外的分支执行情况的信息反馈,可提高分支预测准确性,减少时钟周期的浪费,同时降低功耗,优化了处理器的性能。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1示出根据本申请示例实施例的G-share的实现原理图。
图2示出根据本申请示例实施例的决策计数器工作原理图。
图3示出根据本申请示例实施例的执行分支预测的示意图。
图4示出根据本申请示例实施例的分支预测方法流程图。
图5示出根据本申请示例实施例的分支预测装置的框图。
图6示出根据本申请另一示例实施例的分支预测装置的框图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本申请将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本申请概念的教示。如本文中所使用,术语“及/或”包括相关联的列出项目中的任一个及一或多者的所有组合。
本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本申请所必须的,因此不能用于限制本申请的保护范围。
在计算机体系结构中,分支预测器(Branch predictor)是一种数字电路,在分支指令执行结束之前猜测哪一路分支将会被运行,以提高处理器的指令流水线的性能。使用分支预测器的目的,在于改善指令管线化的流程。分支预测器对于现今的指令流水线微处理器获得高性能是非常关键的技术。
目前,比较常用的分支预测技术是G-share。G-share的实现原理如图1所示。
由图1可知,G-share包含以下部分:
PC是指程序计数器存放的当前分支指令的提取地址。
GBHSR(Global Branch History Shift Register)全局分支历史移位寄存器是指记录在此之前所有分支指令的跳转情况,使用移位寄存器记录。
PHT(Pattern History Table)模式历史表是在用于预测当前分支指令是否跳转的决策索引表。
G-share的工作流程如下:
(1)用PC的低n位和GBHSR的低n位进行按位异或,得到索引idx。
(2)使用1中得到的idx对PHT进行索引,得到一个2-bit的分支预测跳转的决策计数器。
(3)2中决策计数器工作原理如图2所示。
由图2可知,2-bit决策计数器一共有四个状态,“强跳转”“弱跳转”“强不跳转”“弱不跳转”,每当分支指令结果为“跳转”时,决策计数器将向“强跳转”方向提升状态值;每当分支指令结果为“不跳转”时,决策计数器将向“强不转”方向降低状态值。
(4)在分支指令执行结束时,根据分支指令执行结果更新GBHSR和决策计数器的值。
G-share算法采用的全局分支历史移位寄存器GBHSR并不为每条条件跳转指令保持专用的历史记录。相反,它保持一份所有条件跳转指令的共用的历史记录。优点是能识别出不同的跳转指令之间的相关性。缺点是历史记录被不相关的不同的条件跳转指令的执行情况稀释了;如果有太多的不同的分支指令,甚至历史记录没有一位是来自同一个分支指令。
另外,当执行循环分支指令时,随着循环次数增多,全局分支历史移位寄存器GBHSR所记录的分支跳转情况将被挤出,此时将索引到同一个模式历史表PHT,当流水线执行到循环跳出的分支指令时,G-share算法总是预测失败,从而使得分支预测的准确性降低。
根据一些技术方案,采用多组GBHR及多级索引机制,虽然一定程度上提升了分支预测准确率,但仍然存在以下不足:
方案使用多组GBHR,会导致分支预测单元的硬件面积增大,不可避免的提升了功耗。
方案采用两级索引机制实现分支预测算法,会增加延时,降低取指模块的性能,增大取指模块实现难度。
方案由于使用PC索引GBHR,随着循环次数增多,GBHR所记录的分支跳转情况将被挤出,此时将索引到同一个PHT,当流水线执行到循环跳出的分支指令时,该方案总是预测失败,使得分支预测的准确性降低。
对于大部分的循环体结构,可以使用C语言描述成以下模板:
(1)递增型循环
for(i=S;i<E;i+=P){
循环体结构内部代码
}
上述代码转换成RISC-V汇编代码如下:
Figure BDA0003351549190000061
(A)当循环开始前,首先将循环变量的初始值S赋值给循环变量i,再将循环步长P和循环结束标志E赋值到寄存器中。
(B)当循环开始时,首先检测循环变量i是否等于循环结束标志。这条指令便是一条分支指令。
(a)如果两者不相等,说明循环还未结束。
循环未结束时,应该顺序执行循环体的结构代码。
循环体结构代码执行结束后,应该将循环变量i自加步长P,以供下次分支指令判断。
在循环体结构代码和循环变量i自增执行结束后,应该跳转到循环开始时的分支指令,以判断下一次循环是否执行。
(b)如果两者相等,说明循环已经结束,应该跳转到循环结束的代码位置ExitLoop,以执行下一条指令。
(2)递减型循环
for(i=S;i<E;i-=P){
循环体结构内部代码
}
上述代码转换成RISC-V汇编代码如下:
Figure BDA0003351549190000071
(3)嵌套型循环
Figure BDA0003351549190000072
上述代码转换成RISC-V汇编代码如下:
Figure BDA0003351549190000073
(A)当循环开始前,首先将循环变量的初始值S赋值给循环变量i,再将循环步长P和循环结束标志E赋值到寄存器中。
(B)当循环开始时,首先检测循环变量i是否等于循环结束标志。这条指令便是一条分支指令。
(a)如果两者不相等,说明循环还未结束。
循环未结束时,应该顺序执行循环体的结构代码。
循环体结构代码执行结束后,应该将循环变量i自减步长P,以供下次分支指令判断。
在循环体结构代码和循环变量i自减执行结束后,应该跳转到循环开始时的分支指令,以判断下一次循环是否执行。
(b)如果两者相等,说明循环已经结束,应该跳转到循环结束的代码位置ExitLoop,以执行下一条指令。
对于上述类型的循环结构,如果采用现有分支预测技术,跳转指令beq的每一次历史执行情况都会被记录在GBHR中,但是随着循环次数提升,GBHR的值会被最新的跳转情况挤出。这会使得当前分支预测技术不能准确判断循环何时跳出。
为此,本申请提出一种分支预测的方法和装置,通过提供额外的分支执行情况的信息反馈,可大幅度提高分支预测准确性。
下面,以循环分支指令为例,描述根据本申请实施例的技术方案。本领域技术人员易于理解,根据本申请实施例的技术方案可以应用于循环分支指令以外的分支指令预测场景。
以下结合附图对本申请的示例实施例进行说明。
图3示出根据本申请示例实施例的执行分支预测的示意图。图4示出根据本申请示例实施例的分支预测方法流程图。图4所示方法可通过图3所示执行过程实现。
以下结合图3、图4对本申请提出的分支预测方法进行详细说明。
基于risc-v指令集的经典五级流水线的处理器,将流水线功能模块分为取指令,译码,执行,内存访问和写回五个功能模块。
五级流水线中第一个阶段取指,是指将指令从存储器中读取出来的过程。
译码是指将存储器中取出的指令进行翻译的过程。经过译码之后得到指令需要的操作数寄存器索引,可以使用此索引从通用寄存器组中将操作数读出。译码阶段会解码取出的指令,除了分支指令,其他指令也需要寄存器。
执行,指令译码之后所需要进行的计算类型都已得知,并且已经从通用寄存器组中读取出了所需的操作数,那么接下来便进行指令执行。指令执行是指对指令进行真正运算的过程。譬如,如果指令是一条加法运算指令,则对操作数进行加法操作;如果是减法运算指令,则进行减法操作。
访存,存储器访问指令往往是指令集中最重要的指令类型之一,访存(MemoryAccess)是指存储器访问指令将数据从存储器中读出,或者写入存储器的过程。
写回(Write-Back)是指将指令执行的结果写回通用寄存器组的过程。如果是普通运算指令,该结果值来自于“执行”阶段计算的结果;如果是存储器读指令,该结果来自于“访存”阶段从存储器中读取出来的数据。
参见图4,在S401,获取分支执行的反馈结果。
根据一些实施例,读取分支反馈历史寄存器和全局分支历史寄存器中的值。参见图3,全局分支历史寄存器GBHR是指记录在此之前所有分支指令的跳转情况。分支反馈历史寄存器FBHR,记录分支反馈信息。这里F的位数可以根据分支指令寄存器值的运算关系来确定。
在S403,根据分支执行的反馈结果和全局分支历史寄存器的值生成分支预测反馈值。
根据分支反馈历史使能信号FB_EN,选择分支反馈历史寄存器或者全局分支历史寄存器的低位,与所述全局分支历史寄存器的高位拼接,生成分支预测反馈值。
FB_EN是分支反馈历史使能信号,供多路选择器选择数据来源。例如,通过FB_EN信号使能多路选择器,选择分支反馈历史寄存器(例如F位的分支反馈历史寄存器,以下用FBHR说明)或者全局分支历史寄存器GBHR的低F位,与GBHR高M位拼接,生成一个新的数,称为分支预测反馈值。
在S405,判断取出的指令若为分支指令,则将该指令地址与所述分支预测反馈值进行异或运算。
根据一些实施例,在取指阶段,如果取出的指令为分支指令,那么将该指令地址PC与分支预测反馈值进行异或运算作为模式历史表PHT的索引地址。
参见图3,PC是指程序计数器存放的当前分支指令的提取地址。模式历史表PHT是在用于预测当前分支指令是否跳转的决策索引表。
在S407,将所述异或运算的结果作为索引地址,对模式历史表进行索引,得到预测分支跳转的决策计数器。
根据一些实施例,PHT根据在S405得到的索引地址索引对应的2bit决策计数器,根据该2bit决策计数器的情况预测是否跳转。
在S409,根据所述决策计数器的状态值预测分支是否跳转。
当2bit决策器中状态为“强跳转”“弱跳转”时预测跳转;
当2bit决策器中状态为“强不跳转”“弱不跳转”时预测不跳转。
当有一条分支指令被执行结束时,分支反馈检测器根据这条指令的执行情况进行运算。
分支反馈检测器运算更新过程:通过对内存访问阶段存储的mem_rs1和mem_rs2两个寄存器值进行运算,并且和预设值(例如,反馈精度x)进行比较,从而更新FBHR、FB_EN。FBHR中保存分支反馈检测器的运算结果。FB_EN信号表示是否即将结束循环。
参见图3,mem_rs1,mem_rs2是上一条分支指令的两个寄存器值。除了分支指令,其他指令也需要寄存器,随着分支指令更新,mem_rs1和mem_rs2也会被更新。
例如对于递增型循环,mem_rs1不断递增,当mem_rs1和mem_rs2相等时跳出循环。这种情况下只需要将mem_rs1和mem_rs2进行相减运算,相减的绝对值与一个反馈精度x进行比较,其中反馈精度x需要大于等于步长P,否则此次比较无意义。
如果FBHR中的值小于等于x,则说明循环指令即将结束,此时将FB_EN信号置1,使多路选择器选择FBHR信号。具体如下表:
mem-rs1 mem-rs2 FBHR P x FB_EN
0 10 10 2 3 0
2 10 8 2 3 0
4 10 6 2 3 0
6 10 4 2 3 0
8 10 2 2 3 1
10 10 0 2 3 1
对于其他循环类型,反馈检测器可以自行选择最适合的运算方式。合适的方式指:反馈检测器可以有其他运算方式,具体到其中一种情况,最常见的递增型循环来说,反馈检测器可选用相减取绝对值的方法。
本申请的反馈检测器可以通过将分支指令的两个寄存器值mem_rs1和mem_rs2做一定的运算作为反馈,提前预测这两个寄存器值mem_rs1,mem_rs2的关系,进而预测分支指令是否跳转。
面对非循环指令也适用,同样可以提高准确性。因为对于分支指令来说,rs1和rs2两个寄存器之间的关系代表着是否跳转,这种关系包括:rs1=rs2,rs1≠rs2,rs1>rs2等等。
以最为常见的递增型循环作为例子,反馈检测器中将rs1和rs2相减运算取绝对值作为反馈。
当有一条分支指令被执行结束时,将根据该分支指令跳转情况更新分支结果记录单元,PHT更新单元。当分支结果记录单元、PHT更新单元被更新时,将更新GBHR、被索引的2bit决策器。
GBHR使用“0”代表分支不跳转,使用“1”代表分支跳转。当分支指令被执行完成的时候,其执行情况将通过移位记录到该寄存器中。
2bit决策计数器包含了四个状态,“强跳转”“弱跳转”“强不跳转”“弱不跳转”。如果该分支指令结果为“跳转”时,决策计数器将向“强跳转”方向提升状态值;如果该分支指令结果为“不跳转”时,决策计数器将向“强不转”方向降低状态值。当分支指令被执行完成的时候,其执行情况将使得被索引的2bit决策计数器跳转到下一个状态。
图5示出根据本申请示例实施例的分支预测方法装置的框图。图6示出根据本申请另一示例实施例的分支预测装置的框图。
参见图5,分支预测的装置,包括全局分支历史寄存器501,用于记录所有分支指令的跳转情况。
分支反馈单元502,用于获取分支反馈的结果。
分支反馈值生成单元503,用于根据分支反馈的所述结果和全局分支历史寄存器的值,生成分支预测反馈值。
异或计算单元504,判断取出的指令若为分支指令,则将该指令地址与所述分支预测反馈值进行异或运算。
模式历史表索引单元505,将所述异或运算的结果作为索引地址,从模式历史表得到预测分支跳转的决策计数器。
预测跳转单元506,根据所述决策计数器的状态值预测分支是否跳转。
参见图6,分支预测装置中的分支反馈单元502还包括分支反馈检测器601、分支反馈历史寄存器602、使能单元603,多路选择器604。
分支反馈检测器601,根据分支指令寄存器值进行运算,并根据运算结果更新分支反馈历史使能信号和分支反馈历史寄存器。
分支反馈历史寄存器602,用于记录分支反馈检测器的运算结果。
使能单元603,用于接收分支反馈历史使能信号,使能多路选择器。
多路选择器604,用于选择分支反馈历史寄存器或者全局分支历史寄存器,生成分支预测反馈值。
根据一些实施例,分支预测的装置,还包括分支结果记录单元和模式历史表更新单元(图中未示出)。
分支结果记录单元,用于根据所述分支指令跳转结果更新所述全局分支历史寄存器。
模式历史表更新单元,用于根据所述分支指令跳转结果更新索引得到的决策计数器。
根据一些实施例,分支反馈单元502读取分支反馈历史寄存器602和全局分支历史寄存器501。
当有一条分支指令被执行结束时,分支反馈检测器601根据这条指令的执行情况进行运算。
根据一些实施例,分支反馈检测器601运算更新过程:通过对内存访问阶段存储的mem_rs1和mem_rs2两个寄存器值进行运算,并且和预设值(例如,反馈精度x)进行比较,从而更新分支反馈历史寄存器602、分支反馈历史使能信号FB_EN。
分支反馈值生成单元503根据分支反馈历史使能信号FB_EN,选择分支反馈历史寄存器602或者全局分支历史寄存器501的低位,与所述全局分支历史寄存器的高位拼接,生成分支预测反馈值。
FB_EN是分支反馈历史使能信号,供多路选择器604选择数据来源。例如,通过FB_EN信号使能单元603使能多路选择器604,选择分支反馈历史寄存器602或者全局分支历史寄存器501。
根据一些实施例,判断取出的指令若为分支指令,则异或计算单元504将该指令地址与所述分支预测反馈值进行异或运算。
根据一些实施例,在取指阶段,如果取出的指令为分支指令,那么将该指令地址PC与分支预测反馈值进行异或运算作为模式历史表PHT的索引地址。
模式历史表索引单元505将所述异或运算的结果作为索引地址,对模式历史表进行索引,得到预测分支跳转的决策计数器。
根据一些实施例,预测跳转单元506根据决策计数器的情况预测是否跳转。
本申请的部分设计可能使用修改反馈数据前递方式、逻辑电路的方式、修改运算方法等来实现与本申请的对分支指令信息反馈的相同实现方法。
应清楚地理解,本申请描述了如何形成和使用特定示例,但本申请不限于这些示例的任何细节。相反,基于本申请公开的内容的教导,这些原理能够应用于许多其它实施例。
本领域技术人员可以理解实现上述实施例的全部或部分步骤被实现为由CPU执行的计算机程序。在该计算机程序被CPU执行时,执行本申请提供的上述方法所限定的上述功能的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。
此外,需要注意的是,上述附图仅是根据本申请示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
通过对示例实施例的描述,本领域技术人员易于理解,根据本申请实施例的分支预测的方法至少具有以下优点中的一个或多个。
根据示例实施例,相比于使用多组的全局分支历史寄存器GBHR,本申请只使用了全局分支历史寄存器GBHR和分支反馈历史寄存器FBHR,大大的减少了分支预测单元的硬件面积,同时提高了预测速度,降低了功耗。
根据示例实施例,相比于只使用一组GBHSR的G-share算法,本申请使用GBHR和FBHR相结合的预测算法,提升了分支预测的准确性。
根据示例实施例,本申请通过分支预测单元进行反馈,可以根据不同的分支指令采用额外的分支执行情况反馈的信息,提升了分支预测的准确性。同时还可以准确预知循环分支指令的跳转情况,从而解决现有技术对循环结束情况预测结果总是失败的问题。
根据示例实施例,本申请的实现不会因为循环嵌套的原因造成预测降低。
本领域技术人员可以理解上述各模块可以按照实施例的描述分布于装置中,也可以进行相应变化唯一不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
以上具体地示出和描述了本申请的示例性实施例。应可理解的是,本申请不限于这里描述的详细结构、设置方式或实现方法;相反,本申请意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。

Claims (9)

1.一种分支预测的装置,用于处理器的指令执行,其特征在于,包括:
全局分支历史寄存器;
分支反馈单元;
分支反馈值生成单元,与所述分支反馈单元及所述全局分支历史寄存器连接,用于生成分支预测反馈值;
异或计算单元,与所述分支反馈值生成单元及程序计数器连接,用于将分支指令的地址与所述分支预测反馈值进行异或运算;
模式历史表索引单元,与所述异或计算单元连接,用于从模式历史表得到预测分支跳转的决策计数器;
预测跳转单元,与所述模式历史表索引单元连接,用于根据所述决策计数器的状态值预测分支是否跳转。
2.根据权利要求1所述的装置,其特征在于,分支反馈单元包括分支反馈检测器、分支反馈历史寄存器、使能单元、多路选择器;
所述分支反馈检测器与分支指令寄存器连接,用于根据寄存器值进行运算并根据运算结果更新分支反馈历史使能信号和分支反馈历史寄存器;
所述分支反馈历史寄存器与所述分支反馈检测器连接,用于记录分支反馈检测器的运算结果;
所述使能单元与所述分支反馈检测器连接,用于接收分支反馈历史使能信号,使能多路选择器;
所述多路选择器与所述分支反馈历史寄存器及所述全局分支历史寄存器连接,用于生成分支预测反馈值。
3.根据权利要求2所述的装置,其特征在于,所述分支反馈值生成单元用于将分支反馈单元的输出与所述全局分支历史寄存器的高位拼接以得到所述分支预测反馈值。
4.根据权利要求3所述的装置,其特征在于,所述分支反馈单元用于根据所述分支反馈使能信号选择全局分支历史寄存器的低位或者分支反馈历史寄存器作为分支反馈的结果。
5.根据权利要求4所述的装置,其特征在于,所述分支反馈检测器包括:
比较器,用于将所述运算结果和预设值进行比较,并根据比较结果更新所述分支反馈使能信号。
6.根据权利要求5所述的装置,其特征在于,所述分支反馈检测器还包括:
减法器,用于在取出的指令为循环分支指令时将分支指令寄存器值进行相减运算,并取绝对值,得到所述运算结果。
7.根据权利要求6所述的装置,其特征在于,所述预设值大于等于所述循环分支指令的循环步长。
8.根据权利要求1所述的装置,其特征在于,还包括分支结果记录单元和模式历史表更新单元:
所述分支结果记录单元用于根据所述分支指令跳转结果更新所述全局分支历史寄存器;
所述模式历史表更新单元用于根据所述分支指令跳转结果更新索引得到的决策计数器。
9.一种处理器,其特征在于,所述处理器包括根据权利要求1-8中任一所述的分支预测的装置。
CN202122779113.4U 2021-11-12 2021-11-12 一种分支预测的装置及处理器 Active CN216527140U (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202122779113.4U CN216527140U (zh) 2021-11-12 2021-11-12 一种分支预测的装置及处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202122779113.4U CN216527140U (zh) 2021-11-12 2021-11-12 一种分支预测的装置及处理器

Publications (1)

Publication Number Publication Date
CN216527140U true CN216527140U (zh) 2022-05-13

Family

ID=81529940

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202122779113.4U Active CN216527140U (zh) 2021-11-12 2021-11-12 一种分支预测的装置及处理器

Country Status (1)

Country Link
CN (1) CN216527140U (zh)

Similar Documents

Publication Publication Date Title
JP4042604B2 (ja) プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
KR101754462B1 (ko) 동적 비순차적 프로세서 파이프라인을 구현하기 위한 방법 및 장치
US9880842B2 (en) Using control flow data structures to direct and track instruction execution
CN103250131B (zh) 包括用于早期远分支预测的影子缓存的单周期多分支预测
RU2417407C2 (ru) Способы и устройство для моделирования поведения предсказания переходов явного вызова подпрограммы
EP2466453A1 (en) Data processing device, data processing method, program conversion processing device, and program conversion processing method, program conversion processing device, data processing device, program conversion processing method, and data processing method, data processing device, data processing method, program analysis processing device, and program analysis processing method, data processing device, history storing device, data processing method, and program, and compile processing device, data processing device, compile processing method, and program
US9395986B2 (en) Compiling method and compiling apparatus
US10162635B2 (en) Confidence-driven selective predication of processor instructions
US9195444B2 (en) Compiler method and compiler apparatus for optimizing a code by transforming a code to another code including a parallel processing instruction
JP2000132390A (ja) プロセッサ及び分岐予測器
KR100983135B1 (ko) 패킷의 의존성 명령을 그룹핑하여 실행하는 프로세서 및 방법
US8095775B1 (en) Instruction pointers in very long instruction words
JP2001273138A (ja) プログラム変換装置および方法
WO2007085010A2 (en) Early conditional selection of an operand
US9182960B2 (en) Loop distribution detection program and loop distribution detection method
US11442727B2 (en) Controlling prediction functional blocks used by a branch predictor in a processor
CN216527140U (zh) 一种分支预测的装置及处理器
CN114035848A (zh) 一种分支预测的方法、装置及处理器
CN113032011B (zh) 一种数据流架构中循环程序执行的方法及系统
US7849299B2 (en) Microprocessor system for simultaneously accessing multiple branch history table entries using a single port
CN114610388A (zh) 一种指令跳转方法、处理器及电子设备
JP2006053830A (ja) 分岐予測装置および分岐予測方法
CN113918225A (zh) 指令预测方法、指令数据处理装置、处理器以及存储介质
CN116113940A (zh) 一种图计算装置、处理方法及相关设备
US20130007424A1 (en) Cascading indirect branch instructions

Legal Events

Date Code Title Description
GR01 Patent grant
GR01 Patent grant