分支预测器和用于操作分支预测器的方法技术

技术编号:14658669 阅读:74 留言:0更新日期:2017-02-17 00:27
提供一种分支预测器和用于操作分支预测器的方法。分支预测器包含可用于访问指令高速缓存的指令字节块的块地址和指令字节块内的第一/第二字节偏移。散列逻辑将分支转移历史(branch pattern)和由块地址分别和各第一/第二字节偏移形成的第一/第二地址通过散列运算以生成各第一/第二索引。条件分支预测器接收第一/第二索引,并响应于此分别提供指令字节块中的第一/第二条件分支指令的第一/第二方向预测。在一个实施例中,分支目标地址高速缓存(BTAC)提供字节偏移,且第一/第二方向预测静态地与也由BTAC提供的第一/第二目标地址相关联。替代地,字节偏移是预定值,且第一/第二方向预测基于由BTAC提供的字节偏移的相对尺寸动态地与第一/第二目标地址相关联。

【技术实现步骤摘要】

本专利技术涉及处理器设计的领域,特别是涉及一种由块地址和多个字节偏移形成的多个地址与分支指令历史转移通过散列运算形成的多个条件分支指令预测器索引的分支预测器。
技术介绍
在处理器设计的领域中对分支指令预测器的预测精度要求越来越高是公知的。随着处理器流水级、高速缓存存储器访问延迟和超标量体系结构中的指令发布宽度的增加,该需求更加强烈。分支指令预测器包括预测目标地址,和预测条件分支指令方向,即跳转或者不跳转。典型地,以相对大的块为单位从指令高速缓存器中取指,例如,一次性从指令高速缓存取出16个字节指令。因此,在取出的指令块中可能存在多个分支指令。需要精确地预测取出的块中存在的分支指令,并预测它们的目标地址和它们的方向。因为块内分支指令的位置是相对随机的,所以这是有挑战的。对于固定长度指令如此,但是对于允许指令是可变长度的指令集架构(例如,x86或者ARM)尤其如此。例如,一条x86分支指令可能位于与从指令高速缓存取出的指令字节块的任何字节偏移处。
技术实现思路
根据本专利技术的一方面,提供一种分支预测器。该分支预测器可以包括:可用于访问处理器的指令高速缓存的指令字节块的块地址;所述指令字节块内的第一字节偏移;所述指令字节块内的第二字节偏移;散列逻辑,散列分支转移历史和由块地址和第一字节偏移形成的第一地址以生成第一索引,以及散列分支转移历史和由块地址和第二字节偏移形成的第二地址以生成第二索引;和条件分支预测器,接收第一索引和第二索引,并响应于此分别提供所述指令字节块中的第一和第二条件分支指令的第一和第二方向预测。根据本专利技术的另一方面,提供一种用于操作分支预测器的方法。所述方法可以包括:使用块地址以访问处理器的指令高速缓存的指令字节块;提供所述指令字节块内的第一字节偏移和第二字节偏移;散列分支转移历史和由块地址和第一字节偏移形成的第一地址以生成第一索引,和散列分支转移历史和由块地址和第二字节偏移形成的第二地址以生成第二索引;和由条件分支预测器响应于接收第一索引和第二索引分别提供所述指令字节块中的第一条件分支指令和第二条件分支指令的第一方向预测和第二方向预测。附图说明图1是图示具有分支预测器的处理器的框图。图2是图示图1的分支预测器的操作的流程图。图3是图示具有常规的分支预测器的处理器的框图。图4是图示具有根据替代实施例的分支预测器的处理器的框图。图5是图示图4的分支预测器的操作的流程图。具体实施方式词汇散列(hash)两个或更多个实体,比如地址和分支转移历史(branchpattern),指的是关于两个或更多实体中的每一个的一个或多个位执行一个或多个与/或逻辑运算以生成具有比两个或更多实体中最大的实体的位数更少位数的结果。一个或多个与/或逻辑运算可以包括,但不限于:实体的预定位的选择;包括异或(XOR)、NAND、AND、OR、NOT、循环移位平移的布尔逻辑运算;和包括加、减、乘、除、取模的算术运算。为了通过示例图示,假定100位分支转移历史,32位地址,且结果是10位索引。散列地址和分支转移历史(即,对地址和分支转移历史进行散列运算)可以包括将分支转移历史的位[9:0]和位[19:10]与分支指令地址的位[9:0]异或。实施例中的分支预测器,其通过使用条件分支指令地址与分支转移历史散列运算后的值为索引,得到的方向预测,精确度高于只使用条件分支指令的部分地址参与散列算法来索引条件分支预测器的结果。现在参考图1,示出了具有分支预测器100的处理器103的框图。处理器103包括取指单元101、指令高速缓存102和分支预测器100或者分支预测单元100。该分支预测器100包括分支转移历史104、散列逻辑106、分支目标地址高速缓存(branchtargetaddresscache,BTAC)108、条件分支预测器112和控制逻辑114。取指单元101生成提供给指令高速缓存102、BTAC108和散列逻辑106的块地址122。指令高速缓存102响应于块地址122提供架构指令字节块124。在一个实施例中,指令字节块124包括16个字节,虽然可考虑其他实施例。指令字节块124可以包括多个架构分支指令,如以下更详细地讨论的。如果控制逻辑114将目标地址128或者最终结果128提供到取指单元101,则取指单元101基于目标地址128更新块地址122,以从非顺序程序位置取出,这被称为重定向。否则,即,在没有到目标地址128的重定向的情况下,取指单元101在从指令高速缓存102取出指令字节块124之后递增块地址122。从处理器103向后面的流水线提供指令字节块124。优选地,指令字节块124由指令队列(未示出)接收。指令字节从队列输出到指令译码器(未示出),该指令译码器将架构指令124翻译为提供给执行流水线(未示出)以用于执行的微指令。队列缓冲多个指令字节块124以用于提供到指令译码器。只要指令缓存队列中具有可以输出给指令译码器的指令,指令译码器就可以把翻译之后的微指令提供到执行流水线处理,处理器就能有效地利用执行流水线。因此,分支预测器100的目标是避免指令队列过于接近地变空,以使得指令译码器不具有足够的指令来翻译以保持执行流水线良好地使用。在一个实施例中,执行流水线是包括一个或多个架构寄存器、寄存器重命名单元、重排序缓冲器、保留站、多个执行单元和用于发射微指令到执行单元的指令调度器的超标量乱序执行流水线。执行单元可以包括以下执行单元类型的一个或多个:整数单元、浮点单元、媒体单元、单指令多数据(SIMD)单元、分支执行单元、访存单元。优选地,处理器103还包括存储器子系统,其包括存储器次序缓冲器、地址变换高速缓存(tanslation-lookasidebuffer,TLB)、tablewalk引擎、多级缓存和各种请求队列,例如一个或多个存储器访问队列、存储器存储队列、填充队列和/或存储器监听队列。BTAC108之前执行过的历史分支指令以及它们的分支目标地址、方向、在字节块中的位置124,为当前的字节块做预测。BTAC108包括条目的一个或多个存储器阵列。优选地,该一个或多个存储器阵列组织结构是多路组相联的多侧的高速缓存。如以下更详细地描述的。每个条目保存与分支指令相关联的分支历史信息。在一个实施例中,BTAC108中的每个条目包括以下字段:有效位、标签、分支类型、字节偏移、跨字节块标志位和目标地址。分支指令的方向是分支是否跳转。也就是,如果分支指令不跳转,则程序流顺序地进行,即,沿着指令不跳转的方向,取该不跳转分支指令后面的一条指令地址。进行到在不跳转的分支指令的地址之后的地址顺序跟随分支指令的下一指令。但是,如果分支指令跳转,则该分支指令指令处理器103将程序流转向到目标地址而不是继续正常的顺序程序流。在无条件分支指令的情况下,比如调用、返回或者无条件跳转指令,总是跳转的。在条件分支指令的情况下,如果满足由条件分支指令指定的条件则跳转;否则,不跳转。条件跳转指令跳转的条件通常是处理器的一些架构状态,例如,架构条件标记是否满足标准,例如,大于、小于、等于、负的、正的、进位、零、溢出等。可以以多种方式指定目标地址。在返回指令的情况下,目标地址(或者返回地址)典型地从堆栈弹出,该返回地址先前响应于先前执行的调用指令推入本文档来自技高网...
<a href="http://www.xjishu.com/zhuanli/55/201610883034.html" title="分支预测器和用于操作分支预测器的方法原文来自X技术">分支预测器和用于操作分支预测器的方法</a>

【技术保护点】
一种分支预测器,包括:可用于访问处理器的指令高速缓存的指令字节块的块地址;所述指令字节块内的第一字节偏移;所述指令字节块内的第二字节偏移;散列逻辑,散列分支转移历史和由块地址和第一字节偏移形成的第一地址以生成第一索引,以及散列分支转移历史和由块地址和第二字节偏移形成的第二地址以生成第二索引;和条件分支预测器,接收第一索引和第二索引,并响应于此分别提供所述指令字节块中的第一和第二条件分支指令的第一和第二方向预测。

【技术特征摘要】
1.一种分支预测器,包括:可用于访问处理器的指令高速缓存的指令字节块的块地址;所述指令字节块内的第一字节偏移;所述指令字节块内的第二字节偏移;散列逻辑,散列分支转移历史和由块地址和第一字节偏移形成的第一地址以生成第一索引,以及散列分支转移历史和由块地址和第二字节偏移形成的第二地址以生成第二索引;和条件分支预测器,接收第一索引和第二索引,并响应于此分别提供所述指令字节块中的第一和第二条件分支指令的第一和第二方向预测。2.如权利要求1所述的分支预测器,进一步包括:分支目标地址高速缓存BTAC,提供对应所述块地址中的第一字节偏移和第二字节偏移。3.如权利要求2所述的分支预测器,进一步包括:其中,所述块地址索引的BTAC,还提供与第一字节偏移和第二字节偏移对应的第一分支目标地址预测和第二分支目标地址预测;以及其中,所述分支预测器静态地关联由所述条件分支预测器提供的第一方向预测与由BTAC提供的第一分支目标地址预测,并静态地关联由所述条件分支预测器提供的第二方向预测与由BTAC提供的第二分支目标地址预测。4.如权利要求2所述的分支预测器,进一步包括:其中,所述第一字节偏移和第二字节偏移每个是N位,其中,N是log2Q,其中,Q是由指令高速缓存响应于块地址提供的指令字节块中的指令字节的数目。5.如权利要求2所述的分支预测器,进一步包括:其中,使用由处理器执行的条件分支指令的正确地址来更新所述条件分支预测器。6.如权利要求1所述的分支预测器,进一步包括:其中,所述第一字节偏移具有第一预定值且所述第二字节偏移具有第二预定值,其中,所述第一预定值和第二预定值不同。7.如权利要求6所述的分支预测器,进一步包括:所述块地址索引的分支目标地址高速缓存BTAC,提供第一条件分支指令和第二条件分支指令中的每一个的分支目标地址预测和相应的字节偏移;其中,所述分支预测器确定由BTAC提供的哪个字节偏移具有较小的值和哪个具有较大的值;以及其中,所述分支预测器动态地关联由所述条件分支预测器提供的第一方向预测与其由BTAC提供的相应的字节偏移具有较小的值的分支目标地址预测,并动态地关联由所述条件分支预测器提供的第二方向预测与其由BTAC提供的相应的字节偏移具有较大的值的分支目标地址预测。8.如权利要求7所述的分支预测器,进一步包括:其中,所述BTAC通过块地址访问,且所述条件分支预测器由同一时钟周期内的第一索引和第二索引访问。9.如权利要求6所述的分支预测器,进一步包括:其中,使用由散列逻辑生成的第一索引和第二索引中对应的一个来更新所述条件分支预测器。10.如权利要求1所述的分支预测器,进一步包括:其中,所述条件分支预测器包括具有分别接收第一索引和第二索引和分别提供第一方向预测和第二方向预测的第一端口和第二端口的存储器。11.如权利要求10所述的分支预测器,进一步包括:其中,所述条件分支预测器包括多个存储器,其中,所述多个存储器中的每个存储器具有第一端口和第二端口,所述第一端口和第二端口分别接收一对第一索引和第二索引并分别提供第一方向预测和第二方向预测;以及其中,所述散列逻辑将不同长度的分支转移历史和由块地址和第一/第二字节偏移形成的第一/第二地址进行散列运算,以生成用于多个存储器中的每一个的第一/第二索引。12.如权利要求1所述的分支预测器...

【专利技术属性】
技术研发人员:王小玲杨梦晨陈国华
申请(专利权)人:上海兆芯集成电路有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1