掌桥专利:专业的专利平台
掌桥专利
首页

合并的分支目标缓冲器条目

文献发布时间:2023-06-19 18:25:54


合并的分支目标缓冲器条目

背景技术

分支目标预测器在处理器的执行单元计算分支指令的目标之前预测分支指令的目标。分支目标预测器维持分支目标缓冲器以存储根据其对应分支指令索引的先前计算的分支信息。

附图说明

图1是根据一些实施方案的合并的分支目标缓冲器条目的示例性处理器的框图。

图2是根据一些实施方案的合并的分支目标缓冲器条目的示例性方法的流程图。

图3是根据一些实施方案的合并的分支目标缓冲器条目的示例性方法的流程图。

图4是根据一些实施方案的合并的分支目标缓冲器条目的示例性方法的流程图。

图5是根据一些实施方案的合并的分支目标缓冲器条目的示例性方法的流程图。

图6是根据一些实施方案的合并的分支目标缓冲器条目的示例性方法的流程图。

图7是根据一些实施方案的合并的分支目标缓冲器条目的示例性计算机可读存储介质。

具体实施方式

在一些实施方案中,合并的分支目标缓冲器的方法包括在分支目标缓冲器中维持对应于第一分支指令的条目,其中该条目标识第一分支指令的第一分支目标地址和第二分支指令的第二分支目标地址;以及基于第一分支指令访问条目。

在一些实施方案中,该方法包括基于条目将指示第一分支目标地址和第二分支目标地址的数据存储在预测队列中。在一些实施方案中,预测队列通信地耦接到指令提取单元,该指令提取单元被配置为基于第一分支目标地址和第二分支目标地址来加载多个指令。在一些实施方案中,该方法还包括:接收指示第一分支指令和第一分支目标地址的第一重新导向;以及在分支目标缓冲器中存储条目作为标识第一分支目标地址。在一些实施方案中,该方法包括:接收指示第二分支指令和第二分支目标地址的第二重新导向;以及修改条目以标识第二分支目标地址和第一分支目标地址。在一些实施方案中,该方法包括基于一个或多个合并规则来确定修改条目以标识第二分支目标地址和第一分支目标地址。在一些实施方案中,一个或多个合并规则基于以下中的至少一项:第一分支指令的分支类型、第二分支指令的分支类型、第一分支指令的预测窗口或第二分支指令的指令地址。在一些实施方案中,确定修改条目以标识第二分支目标地址和第一分支目标地址进一步基于在条目中标识第一分支目标地址和第二分支目标地址所需的位数。

在一些实施方案中,合并的分支目标缓冲器条目的分支目标预测器执行包括以下各项的步骤:在分支目标缓冲器中维持对应于第一分支指令的条目,其中该条目标识第一分支指令的第一分支目标地址和第二分支指令的第二分支目标地址;以及基于第一分支指令访问条目。

在一些实施方案中,步骤还包括基于条目将指示第一分支目标地址和第二分支目标地址的数据存储在预测队列中。在一些实施方案中,预测队列通信地耦接到指令提取单元,该指令提取单元基于第一分支目标地址和第二分支目标地址来加载多个指令。在一些实施方案中,步骤还包括:接收指示第一分支指令和第一分支目标地址的第一重新导向;以及在分支目标缓冲器中存储条目作为标识第一分支目标地址。在一些实施方案中,步骤还包括接收指示第二分支指令和第二分支目标地址的第二重新导向;以及修改条目以标识第二分支目标地址和第一分支目标地址。在一些实施方案中,步骤还包括基于一个或多个合并规则来确定修改条目以标识第二分支目标地址和第一分支目标地址。在一些实施方案中,一个或多个合并规则基于以下中的至少一项:第一分支指令的分支类型、第二分支指令的分支类型、第一分支指令的预测窗口或第二分支指令的指令地址。在一些实施方案中,确定修改条目以标识第二分支目标地址和第一分支目标地址进一步基于在条目中标识第一分支目标地址和第二分支目标地址所需的位数。

在一些实施方案中,合并的分支目标缓冲器条目的处理器包括:分支目标预测器,该分支目标预测器执行包括以下各项的步骤:在分支目标缓冲器中维持对应于第一分支指令的条目,其中该条目标识第一分支指令的第一分支目标地址和第二分支指令的第二分支目标地址;以及基于第一分支指令访问条目。

在一些实施方案中,步骤还包括基于条目将指示第一分支目标地址和第二分支目标地址的数据存储在预测队列中。在一些实施方案中,处理器还包括指令提取单元,该指令提取单元基于第一分支目标地址和第二分支目标地址来加载多个指令,并且预测队列通信地耦接到指令提取单元。在一些实施方案中,步骤还包括:接收指示第一分支指令和第一分支目标地址的第一重新导向;以及在分支目标缓冲器中存储条目作为标识第一分支目标地址。在一些实施方案中,步骤还包括接收指示第二分支指令和第二分支目标地址的第二重新导向;以及修改条目以标识第二分支目标地址和第一分支目标地址。在一些实施方案中,步骤还包括基于一个或多个合并规则来确定修改条目以标识第二分支目标地址和第一分支目标地址。在一些实施方案中,一个或多个合并规则基于以下中的至少一项:第一分支指令的分支类型、第二分支指令的分支类型、第一分支指令的预测窗口或第二分支指令的指令地址。在一些实施方案中,确定修改条目以标识第二分支目标地址和第一分支目标地址进一步基于在条目中标识第一分支目标地址和第二分支目标地址所需的位数。

在一些实施方案中,合并的分支目标缓冲器条目的装置包括:处理器,该处理器包括分支目标预测器,该分支目标预测器执行包括以下各项的步骤:在分支目标缓冲器中维持对应于第一分支指令的条目,其中该条目标识第一分支指令的第一分支目标地址和第二分支指令的第二分支目标地址;以及基于第一分支指令访问条目。

在一些实施方案中,步骤还包括基于条目将指示第一分支目标地址和第二分支目标地址的数据存储在预测队列中。在一些实施方案中,处理器还包括指令提取单元,该指令提取单元基于第一分支目标地址和第二分支目标地址来加载多个指令,并且预测队列通信地耦接到指令提取单元。在一些实施方案中,步骤还包括:接收指示第一分支指令和第一分支目标地址的第一重新导向;以及在分支目标缓冲器中存储条目作为标识第一分支目标地址。在一些实施方案中,步骤还包括接收指示第二分支指令和第二分支目标地址的第二重新导向;以及修改条目以标识第二分支目标地址和第一分支目标地址。在一些实施方案中,步骤还包括基于一个或多个合并规则来确定修改条目以标识第二分支目标地址和第一分支目标地址。在一些实施方案中,一个或多个合并规则基于以下中的至少一项:第一分支指令的分支类型、第二分支指令的分支类型、第一分支指令的预测窗口或第二分支指令的指令地址。在一些实施方案中,确定修改条目以标识第二分支目标地址和第一分支目标地址进一步基于在条目中标识第一分支目标地址和第二分支目标地址所需的位数。

图1是包括处理器100的设备或装置101的非限制性示例的框图。设备1和/或处理器100可以实现本发明的各种实施方案。示例性处理器100可包括在各种设备1中,包括移动设备、个人计算机、外围硬件部件、游戏设备、机顶盒等。处理器100包括分支预测器102。分支预测器102是逻辑和/或电路的组合,其预测分支指令在执行之前将采取的方向或路径。分支预测器102包括分支目标预测器104。分支目标预测器104是逻辑和/或电路的组合,其预测在执行分支指令期间计算目标地址之前分支指令的所采取分支的目标地址。尽管分支目标预测器104被示出为分支预测器102的子部件,但是应当理解,分支目标预测器104也可以实现为单独的部件。

分支目标预测器104维持分支目标缓冲器106。分支目标106通常是专用存储器(例如,高速缓冲存储器)的一部分,其存储分支指令的所采取分支的目标地址,下文中称为“分支目标地址”。分支目标缓冲器106中的每个条目包括标识符字段。在一些实施方案中,标识符包括对应分支指令的指令地址(例如,“分支指令地址”)。在其他实施方案中,标识符字段包括预测地址。预测地址包括以推测为首的程序计数器(例如,处理器流水线中的最近程序计数器)。预测地址用作被预测的预测块的起始地址。因此,分支目标缓冲器106中的每个条目根据标识符字段来索引。

分支目标缓冲器106中的每个条目还包括目标字段。分支目标缓冲器106条目的目标字段存储对应分支指令的分支目标地址的标识符。分支目标地址包括预测块的起始地址。预测块是可以由指令提取单元提取的连续指令字节的块。每个预测块必须包含在称为预测窗口的某个存储器区域内。在一些实施方案中,预测窗口包括高速缓存行。在一些实施方案中,预测块由以下各项指定(例如,在分支目标缓冲器106条目中指示):1)起始地址,该起始地址指定存储器空间内的预测块的第一字节,因此指定预测块是其一部分;2)结束地址(例如,预测窗口内的偏移);以及3)一个或多个分支类型,该一个或多个分支类型指定预测块内的每个分支是调用、返回还是跳过(例如,既不是调用也不是返回的分支)。在一些实施方案中,每个分支目标缓冲器106条目还指示每个分支是否被预测为被采取。下面进一步详细描述这些条目属性。

用于实现分支目标缓冲器的现有方法需要分支目标缓冲器条目存储单个分支目标地址的标识符,或者需要分支目标地址对处于相同预测块(例如,相同pBlock n对)中。相比之下,被配置用于合并的分支目标缓冲器条目的分支目标缓冲器106的条目存储一个或多个分支(例如,一个或多个分支目标地址)的标识符,从而允许在不需要在相同预测块中的单个条目中参考多个分支目标地址。例如,假设分支目标缓冲器106条目的32位目标字段,使用多达32位来参考单个分支目标地址。参考两个分支目标地址的条目将目标字段中的位的第一子集(例如,前16位)分配给第一分支目标地址,并且将目标字段中的位的第二子集(例如,第二16位)分配给第二分支目标地址。对于每个参考的分支目标地址,分支目标缓冲器106的目标字段还包括开始于对应分支目标地址的预测块的最后字节的标识符。

分配给给定分支目标地址的目标字段的位是给定分支目标地址的最低阶位。为了计算给定分支目标地址,从条目的分支指令地址的最高阶位复制给定分支目标地址的剩余位(例如,最高阶位)。例如,假设32位寻址并且目标字段的16位被分配给给定分支目标地址,则给定分支目标地址将被计算为分支指令地址的前16位(例如,16个最高阶位),其附加有分配于目标字段中的16位。作为另一个示例,假设32位寻址并且目标字段的20位被分配给给定分支目标地址,则给定分支目标地址将被计算为分支指令地址的前12位(例如,12个最高阶位),其附加有分配于目标字段中的20位。读者将理解,目标字段中的位可在所标识的分支目标地址之间均等地分配,或不均等地分配(例如,第一分支目标地址可被分配20位,而第二分支目标地址可被分配12位)。

在一些实施方案中,对于第一分支“Br0”,条目具有“sequential before”属性,其指定分支目标地址是否在与预测地址相同的预测窗口中,或者它是否在N个预测窗口之后。例如,在Br0处于下一预测窗口(即,SequentialBefore=1)的情况下,则分支预测器102将预测开始于预测地址并结束于包含预测地址的预测窗口(Pw0)的结尾的第一预测块Pblk0。同时,分支预测器102将预测开始于随后的预测窗口(Pw1)的开始的第二预测块Pblk1。Pblk1包含Br0。如果Br0被预测为被采取,则Pblk1结束于Br0的最后字节。否则,Pblk1可包含直到Pw1的最后字节的字节。

对于条目“Br1”中的第二分支,条目指定分支是(a)在Br0的所采取路径上还是(b)在Br0的非采取路径上。在两种情况下,条目指定Br1是在Br0的所采取/非采取目标处的预测窗口中还是在随后的预测窗口中。Br1预测如下:

·如果Br1在Br0的所采取路径上并且Br0被预测为非采取,则Br1不用于预测。

·如果Br1在Br0的非采取路径上并且Br0被预测为被采取,则Br1不用于预测。

·如果Br1在Br0的所采取路径上并且Br0被预测为被采取,则Br1用于预测。例如,假设PblkN结束于Br0的最后字节,则预测引擎将预测开始于Br0的目标地址的PblkN+1。Br1具有SequentialBefore属性,从而指定其是在Br0的目标处的预测窗口中还是在随后的预测窗口中。如果SequentialBefore=0,则Br1是PblkN+1的一部分。否则PblkN+1不包含任何预测的分支,并且其结束于预测窗口的最后字节。

·如果Br1在Br0的非采取路径上并且Br0被预测为非采取,则Br1用于预测。Br1可以在与Br0相同的预测窗口中,在这种情况下,其作为因子计入与Br0相同的Pblk。或者它可以在随后的预测窗口中的一个预测窗口中,如SequentialBefore属性所指定的。例如,在Br0处于PblkN中的情况下。Br1SequentialBefore=0意味着Br1在与Br0相同的预测窗口中。Br1SequentialBefore=M意味着Br1在Br0之后的M个预测窗口中。如果M=2,则预测引擎将同时预测:

·PblkN,其包含Br0并且结束于包含Br0的预测窗口(即PwN)的最后字节。

·PblkN+1,其由紧接在PwN之后的全预测窗口(即PwN+1)

组成

·PblkN+2,其开始于PwN+2的第一字节并且包含Br1。如果Br1被预测为被采取,则PblkN+2结束于Br1的最后字节。否则,其可包含直到PwN+2的最后字节的字节。

每个条目可存储多于两个分支的信息。对于每个分支Br_i,存在指定以下特性的属性:

·Br_i在另一个分支Br_j的所采取或非采取路径上(j

·Br_i SequentialBefore,其指定不具有分离Br_i和Br_j的分支的预测窗口的数目

·预测窗口内Br_i的结束地址

·Br_i的分支类型

如上所述,分支目标缓冲器106中的条目还在“分支类型字段”中为目标字段中标识的每个分支目标地址存储对应分支指令的分支类型的标识符。例如,假设分支指令落入分支类型的预定义枚举中的一者中。分支类型可指示分支指令的特定类型,以及该分支与条目中参考的其他分支之间的关系。假设分支目标缓冲器106条目支持对应于第一分支指令“Br0”和第二分支指令“Br1”的目标字段中的多达两个分支目标地址,则分支类型字段可以针对“Br0”指示指令的类型(例如,调用、有条件跳过、无条件跳过、可变或固定目标等)以及“Br0”是否存在;以及“Br1”是在“Br0”的所采取路径上,是在“Br0”的未采取路径上,还是在与“Br0”相同的预测窗口中(例如,是在从“Br0”的分支目标地址加载时所访问的指令块等)。

在一些实施方案中,Br0SequentialBefore属性具有最大值,该最大值确定当在分支目标缓冲器106中未命中时,有多少没有分支的预测块被预测。例如,如果Br0SequentialBefore被设置为具有最大值2,则分支目标缓冲器106中未命中的每个预测流可以预测3个预测块:第一预测块开始于预测地址并且结束于预测窗口的最后字节,第二预测块和第三预测块是接下来的两个全预测窗口。下一个预测流将使用预测地址,该预测地址是在预测的最后预测块之后的预测窗口的第一字节。这是重要的,因为它使得能够增加预测带宽并减少预测预测块所花费的功率,即使在不具有许多分支的代码中也是如此。

因此,分支类型字段然后包括表示枚举中的任何分支类型所需的位数乘以分支目标地址编码的数目。例如,假设分支指令落入需要四位来表示的十四个不同分支类型中的一个分支类型中。假设可以在目标字段中标识出多达两个分支目标指令,则分支类型字段包括2*4=8位。

当用对应于第一分支指令的预测地址(例如,第一分支指令之前的预测地址)或第一分支指令地址查询分支目标预测器104时,这取决于使用哪个地址来索引分支目标缓冲器106中的条目。如果没有找到这样的条目,则分支指令继续通过指令流水线来执行。如果找到条目,则分支目标预测器104访问该条目。

分支目标预测器104针对条目的目标字段中参考的每个分支目标地址计算分支目标地址。例如,假设第一分支目标地址由第一部分位参考并且第二分支目标地址由第二部分位参考,分支目标预测器104通过将第一部分位附加到分支指令地址中满足指令地址中的位数所需的最高阶位的数目上来计算第一分支目标地址。分支目标预测器104通过将第二部分位附加到分支指令地址中满足指令地址中的位数所需的最高阶位的数目上来计算第二分支目标地址。分支目标预测器104然后将计算的分支目标地址(例如,第一分支目标地址和第二分支目标地址)存储在预测队列108中。例如,对于每个分支目标地址(例如,对于第一分支目标地址和第二分支目标地址),分支目标预测器存储对应预测块。预测块包括起始地址(例如,分支目标地址)和结束于结束地址的一系列指令地址。在分支目标缓冲器条目中标识预测块的结束地址(例如,使用指令的偏移或数目来确定结束地址,或预测块中最后指令的地址的标识符),或与指令的新预测窗口的开始相对应的默认结束地址。

预测队列108是存储器的一部分,其被分配以维持指令的预测块的队列(例如,分支目标地址和相同预测块中的随后指令)。预测队列108通信地耦接到指令提取单元114。指令提取单元114从存储器加载一个或多个指令并且将加载的指令存储在指令队列112中。因此,指令提取单元114访问分支目标地址的预测队列108,并且将开始于分支目标地址的多个指令加载到指令队列112中。在一些实施方案中,插入到指令队列112中的顺序指令块(例如,预测块)的数目等于针对分支目标缓冲器106条目命中可以插入的预测块的数目的定义最大值。例如,指令提取单元114加载开始于分支目标地址的指令块以填充指令队列112的高速缓存行。地址的这种块被称为预测块。随着多个分支目标地址(例如,多个预测块)已经响应于分支目标缓冲器106的单次访问而添加到预测队列108,分支预测吞吐量增加,从而使得每次循环能够提取并执行更多指令。来自指令队列112的指令然后由指令提取单元114提供给解码单元116并且由执行单元118执行。

为了生成合并的分支目标缓冲器106条目,分支目标预测器104针对第一分支指令接收第一重新导向(例如,来自解码单元116或执行单元118)。例如,第一次提取第一分支指令时,不存在分支目标缓冲器106中的条目。因此,第一分支指令的第一分支目标地址将由解码单元116和/或执行单元118计算,这取决于第一分支是有条件性的还是间接的。因此,到分支目标预测器104的重新导向包括对第一分支指令(例如,分支类型)、第一分支指令地址和第一分支目标地址的描述。分支目标预测器104然后在分支目标缓冲器106中存储标识标识符字段中的分支指令地址和目标字段中的分支目标地址的条目。所生成的条目还在分支类型字段中标识第一分支指令的分支类型。由于目标字段中没有参考其他分支指令,因此类型字段将不会反映第一分支指令与另一分支指令之间的关系。

分支目标预测器104然后接收第二分支指令的第二重新导向。第二重新导向包括对第二分支指令(例如,分支类型)、第二分支指令地址和第二分支目标地址的描述。分支目标预测器104然后确定是否修改条目(例如,条目的类型字段、标识符字段和目标字段)来标识第二分支目标地址以及第一分支目标地址。例如,分支目标预测器104基于一个或多个合并规则来确定修改条目以标识第二分支目标地址以及第一分支目标地址。

合并规则可以基于第二分支指令的指令地址。例如,分支目标预测器104可响应于第二分支指令的指令地址包括在第一分支目标地址的预测窗口中而确定修改条目来标识第二分支目标地址以及第一分支目标地址。例如,假设指令提取单元114将开始于给定目标地址的64字节指令块加载到指令队列112中。因此,每个分支目标地址对应于64字节预测窗口。第二分支指令的指令地址在第一分支目标地址的预测窗口内,其中第二分支指令地址在第一分支目标地址的64字节内。分支目标预测器104还可响应于第二分支指令的指令地址包括在第一分支目标地址的预测窗口之后的下一个预测窗口(例如,下一个64字节块)中而确定修改条目来标识第二分支目标地址以及第一分支目标地址。

合并规则还可以基于第一分支指令和第二分支指令的分支类型。例如,可以优先选择分支指令的特定组合来修改条目以标识第二分支目标地址以及第一分支目标地址。合并规则还可防止修改条目以标识分支类型的某些组合的第二分支目标地址以及第一分支目标地址。作为非限制性示例,在第一分支指令是调用的情况下,合并规则可防止在第二分支指令是调用或返回时修改条目,以便避免返回地址堆栈不支持的任何调用/调用、调用/返回、返回/调用、返回/返回组合。

分支目标预测器104还基于在条目(例如,目标字段)中标识第一分支目标地址和第二分支目标地址所需的位数来确定修改条目以标识第二分支目标地址以及第一分支目标地址。例如,假设32位寻址方案,其中第一分支目标地址和第一分支指令地址共享相同的16个最高阶位,但从第17个最高阶位开始不同。因此,第一分支目标地址需要标识目标字段的16位。在第二分支目标地址不同于开始于第13位最高阶位的第一分支指令地址的情况下,第二分支目标地址需要在目标字段中标识12位。因此,32位目标字段可以指示第一分支目标地址(使用第一分支目标地址的16个最低阶位)和第二分支目标地址(使用第二分支目标地址的12个最低阶位)。

相比之下,假设第二分支目标地址不同于开始于第21位的第一分支指令地址(用于索引条目),第二分支目标地址需要在目标字段中标识20位。当第一分支目标地址需要16位时,第一分支目标地址和第二分支目标地址两者均不能在目标字段中表示。因此,分支目标预测器106将确定不修改条目。在确定不修改条目的情况下,将替代地在分支目标缓冲器106中创建第二分支指令的新条目。

修改条目以标识第二分支目标地址和第一分支目标地址包括向条目的目标字段添加开始于第一位的与第一分支指令地址不同的第二分支目标地址的最低阶位的数目。修改条目以标识第二分支目标地址和第一分支目标地址包括向分支类型字段添加第二分支类型的指示并且修改分支类型字段以反映第一分支目标指令与第二分支目标指令之间的关系。

对于关于合并规则的另外示例,假设每个条目可记录两个分支(Br0和Br1),并且SequentialBefore最大值是一,使得当在分支目标缓冲器106中未命中时生成两个Pblk。进一步假设预测窗口是64字节对齐的存储器行。每个预测块被分派以下特性:

·用于在预测Pblk时查找BTB的预测地址

·在预测Pblk时在BTB中找到的分支的结束地址

·指定预测块相对于在预测Pblk时在BTB中找到的每个分支的位置的描述符。

对于该示例,假设预测地址=0x005,并且假设分支的类型和目标大小总是使得能够将两个分支配对成单个条目:

·分支目标缓冲器106中的预测未命中生成具有StartAddr=0x005、EndAddr=0x03f的Pblk0以及具有StartAddr=0x040、EndAddr=0x07f的Pblk1。

·具有EndOffset=0x07的BrA的Pblk0上的重新导向将导致BrA在预测地址处被训练为具有SequentialBefore=0的Br0

·具有EndOffset=0x01的BrB的Pblk1上的重新导向将导致BrB在预测地址处被训练为具有SequentialBefore=1的Br0

·预测命中分支目标缓冲器106条目,其中单个分支Br0具有SequentialBefore=0、EndOffset=0x3e、TgtAddr=0x102,并且其预测Br0被采取。它生成具有StartAddr=0x005、EndAddr=0x03e的Pblk0以及具有StartAddr=0x102、EndAddr=0x13f的Pblk1。

·具有EndOffset=0x03的BrC的Pblk1上的重新导向将导致BrC在预测地址处被训练为具有SequentialBefore=0的Br1,Br1在Br0的所采取路径上。

·预测命中分支目标缓冲器106条目,其中单个分支Br0具有SequentialBefore=0、EndOffset=0x2e、TgtAddr=0x102,并且其预测Br0非采取。它生成具有StartAddr=0x005、EndAddr=0x03f的Pblk0以及具有StartAddr=0x040、EndAddr=0x07f的Pblk1。

·具有EndOffset=0x34的BrD的Pblk0上的重新导向将导致BrD在预测地址处被训练为具有SequentialBefore=0的Br1,Br1在Br0的非采取路径上。

·具有EndOffset=0x05的BrE的Pblk1上的重新导向将导致BrE在预测地址处被训练为具有SequentialBefore=1的Br1,Br1在Br0的非采取路径上。

为了进一步解释,图2阐述了示出用于合并的分支目标缓冲器条目的示例性方法的流程图,该方法包括在分支目标缓冲器106中(例如,由分支预测器102的分支目标预测器104)维持202对应于第一分支指令的条目204,其中该条目204标识第一分支指令的第一分支目标地址和第二分支指令的第二分支目标地址。分支目标缓冲器106中的每个条目包括存储标识符(诸如分支目标地址或预测地址)的标识符字段。因此,分支目标缓冲器106中的每个条目根据标识符字段来索引。

分支目标缓冲器106中的每个条目还包括目标字段。因此,目标字段标识第一分支指令的第一分支目标地址和第二分支指令的第二分支目标地址。分配给给定分支目标地址的目标字段的位是给定分支目标地址的最低阶位。为了计算给定分支目标地址,从(例如,标识符字段的)条目的分支指令地址的最高阶位复制给定分支目标地址的剩余位(例如,最高阶位)。例如,假设32位寻址并且目标字段的16位被分配给第一分支目标地址,则第一分支目标地址将被计算为分支指令地址的前16位(例如,16个最高阶位),其附加有分配于目标字段中的16位。读者将理解,目标字段中的位可在所标识的分支目标地址之间均等地分配,或不均等地分配(例如,第一分支目标地址可被分配20位,而第二分支目标地址可被分配12位)。

分支目标缓冲器106中的每个条目还在“分支类型字段”中为目标字段中标识的每个分支目标地址存储对应分支指令的分支类型的标识符。例如,假设分支指令落入分支类型的预定义枚举中的一者中。分支类型可指示分支指令的特定类型,以及该分支、预测地址与条目中参考的其他分支之间的关系。假设分支目标缓冲器106条目支持对应于第一分支指令“Br0”和第二分支指令“Br1”的目标字段中的多达两个分支目标地址,则分支类型字段可以针对“Br0”指示指令的类型(例如,调用、有条件跳过、无条件跳过、可变或固定等)以及“Br0”是否存在;“Br0”是在预测地址所指向的预测窗口中还是随后的预测窗口中;“Br1”是在“Br0”的所采取路径上,是在“Br0”的未采取路径上,还是在与“Br0”相同的预测窗口中(例如,是在从“Br0”的分支目标地址加载时所访问的指令块等)。

图2的方法还包括基于第一分支指令(例如,由分支预测器102的分支目标预测器104)访问206条目204。例如,用对应于第一分支指令的预测地址(例如,第一分支指令之前的预测地址)或第一分支指令地址查询分支目标预测器104,这取决于使用哪个地址来索引分支目标缓冲器106中的条目。分支目标预测器104然后将分支目标缓冲器106中的对应条目标识为条目204。

为了进一步解释,图3阐述了示出用于合并的分支目标缓冲器条目的示例性方法的流程图,该方法包括在分支目标缓冲器106中(例如,由分支预测器102的分支目标预测器104)维持202对应于第一分支指令的条目204,其中该条目204标识第一分支指令的第一分支目标地址和第二分支指令的第二分支目标地址;以及基于第一分支指令(例如,由分支预测器102的分支目标预测器104)访问206条目204。

图3的方法与图2的不同之处在于图3的方法还包括基于条目204将指示第一分支目标地址和第二分支目标地址的数据304存储302在预测队列108中。预测队列108是存储器的一部分,其被分配以维持分支目标地址的队列(例如,地址的预测块)。预测队列108通信地耦接到指令提取单元114。指令提取单元114从存储器加载一个或多个指令并且将加载的指令存储在指令队列112中。因此,指令提取单元114访问分支目标地址的预测队列108,并且将开始于分支目标地址的多个指令加载到指令队列112中。例如,指令提取单元114加载开始于分支目标地址的指令块以填充指令队列112的高速缓存行。地址的这种块被称为预测块。当响应于分支目标缓冲器106的单次访问而将多个分支目标地址添加到预测队列108时,指令提取单元114可将多个预测块存储在指令队列112中。这提高了效率,因为可以在给定循环中提取更多指令。

分支目标预测器104基于条目204的目标字段来计算第一分支目标地址和第二分支目标地址。例如,假设第一分支目标地址由第一部分位参考并且第二分支目标地址由第二部分位参考,分支目标预测器104通过将第一部分位附加到分支指令地址中满足指令地址中的位数所需的最高阶位的数目上来计算第一分支目标地址。分支目标预测器104通过将第二部分位附加到分支指令地址中满足指令地址中的位数所需的最高阶位的数目上来计算第二分支目标地址。分支目标预测器104然后将计算的分支目标地址(例如,第一分支目标地址和第二分支目标地址)存储在预测队列108中。

为了进一步解释,图4阐述了示出用于合并的分支目标缓冲器条目的示例性方法的流程图,该方法包括在分支目标缓冲器106中(例如,由分支预测器102的分支目标预测器104)维持202对应于第一分支指令的条目204,其中该条目204标识第一分支指令的第一分支目标地址和第二分支指令的第二分支目标地址;以及基于第一分支指令(例如,由分支预测器102的分支目标预测器104)访问206条目204。

图4的方法与图2的不同之处在于图4的方法还包括(例如,由分支预测器102的分支目标预测器104从执行单元112)接收402指示第一分支指令和第一分支指令地址的第一重新导向404。例如,第一次提取第一分支指令时,不存在分支目标缓冲器106中的条目。因此,第一分支指令的第一分支目标地址将由解码单元116和/或执行单元118计算,这取决于第一分支是有条件性的还是间接的。因此,到分支目标预测器104的第一重新导向404包括对第一分支指令(例如,分支类型)、第一分支指令地址和第一分支目标地址的描述。

图4的方法还包括(例如,由分支预测器102的分支目标预测器104)存储406条目204作为标识第一分支目标地址。例如,存储条目204,从而标识标识符字段中的第一分支指令地址和目标字段中的第一分支目标地址。所生成的条目还在分支类型字段中标识第一分支指令的分支类型,其包括关于第一分支目标地址是在与第一分支指令地址相同的预测窗口中还是在随后的预测窗口中的信息。由于目标字段中没有参考其他分支指令,因此类型字段将不会反映第一分支指令与另一分支指令(例如,第二分支指令)之间的关系。

为了进一步解释,图5阐述了示出用于合并的分支目标缓冲器条目的示例性方法的流程图,该方法包括(例如,由分支预测器102的分支目标预测器104从执行单元112)接收402指示第一分支指令和第一分支指令地址的第一重新导向404;(例如,由分支预测器102的分支目标预测器104)存储406条目204作为标识第一分支目标地址;在分支目标缓冲器106中(例如,由分支预测器102的分支目标预测器104)维持202对应于第一分支指令的条目204,其中该条目204标识第一分支指令的第一分支目标地址和第二分支指令的第二分支目标地址;以及基于第一分支指令(例如,由分支预测器102的分支目标预测器104)访问206条目204。

图5的方法与图4的不同之处在于图5的方法还包括(例如,由分支预测器102的分支目标预测器104从执行单元112)接收502指示第二分支指令和第二分支目标地址的第二重新导向504。第二重新导向504包括对以下各项的描述:第二分支指令(例如,分支类型),第二分支目标指令是在第一分支的所采取路径处还是在第一分支的非采取路径处,第二分支目标指令是在与第一分支目标指令相同的预测窗口中还是在随后的预测窗口中,第二分支指令地址以及第二分支目标地址。

图5的方法还包括(例如,由分支预测器102的分支目标预测器104)修改506条目205以标识第二分支目标地址和第一分支目标地址。修改506条目204以标识第二分支目标地址和第一分支目标地址包括向条目204的目标字段添加开始于第一位的与第一分支指令地址不同的第二分支目标地址的最低阶位的数目。修改506条目204以标识第二分支目标地址和第一分支目标地址包括向条目204的分支类型字段添加第二分支类型的指示并且修改分支类型字段以反映第一分支目标指令与第二分支目标指令之间的关系。

为了进一步解释,图6阐述了示出用于合并的分支目标缓冲器条目的示例性方法的流程图,该方法包括(例如,由分支预测器102的分支目标预测器104从执行单元112)接收402指示第一分支指令和第一分支指令地址的第一重新导向404;(例如,由分支预测器102的分支目标预测器104)存储406条目204作为标识第一分支目标地址;(例如,由分支预测器102的分支目标预测器104从执行单元112)接收指示第二分支指令和第二分支目标地址的第二重新导向504;(例如,由分支预测器102的分支目标预测器104)修改506条目205以标识第二分支目标地址和第一分支目标地址;在分支目标缓冲器106中(例如,由分支预测器102的分支目标预测器104)维持202对应于第一分支指令的条目204,其中该条目204标识第一分支指令的第一分支目标地址和第二分支指令的第二分支目标地址;以及基于第一分支指令(例如,由分支预测器102的分支目标预测器104)访问206条目204。

图6的方法与图5的不同之处在于图6的方法还包括(例如,由分支预测器102的分支目标预测器104)确定602修改条目204(例如,条目204的目标字段)以标识第二分支目标地址以及第一分支目标地址。例如,分支目标预测器104基于一个或多个合并规则来确定修改条目以标识第二分支目标地址以及第一分支目标地址。

合并规则可以基于第二分支指令的指令地址。例如,分支目标预测器104响应于第二分支指令的指令地址包括在第一分支目标地址的预测窗口中而确定修改条目来标识第二分支目标地址以及第一分支目标地址。例如,假设指令提取单元114将开始于给定目标地址的64字节指令块加载到指令队列112中。因此,每个分支目标地址对应于64字节预测窗口。第二分支指令的指令地址在第一分支目标地址的预测窗口内,其中第二分支指令地址在第一分支目标地址的64字节内。分支目标预测器104还可响应于第二分支指令的指令地址包括在第一分支目标地址的预测窗口之后的下一个预测窗口(例如,下一个64字节块)中而确定修改条目来标识第二分支目标地址以及第一分支目标地址。

合并规则还可以基于第一分支指令和第二分支指令的分支类型。例如,可以优先选择分支指令的特定组合来修改条目以标识第二分支目标地址以及第一分支目标地址。合并规则还可防止修改条目以标识分支类型的某些组合的第二分支目标地址以及第一分支目标地址。作为非限制性示例,在第一分支指令是调用的情况下,合并规则可防止在第二分支指令是调用或返回时修改条目,以便避免返回地址堆栈不支持的任何调用/调用、调用/返回、返回/调用、返回/返回组合。在一些实施方案中,可针对分支目标缓冲器106条目命中插入的预测块的定义最大数目是对合并的限制。

分支目标预测器104还基于在条目(例如,目标字段)中标识第一分支目标地址和第二分支目标地址所需的位数来确定602修改条目以标识第二分支目标地址以及第一分支目标地址。例如,假设32位寻址方案,其中第一分支目标地址在其16个最高阶位中与第一分支指令地址相同,但从第17位开始不同。因此,第一分支目标地址需要标识目标字段的16位。在第二分支目标地址不同于开始于第13位的第一分支指令地址(用于索引条目)的情况下,第二分支目标地址需要在目标字段中标识12位。因此,32位目标字段可以指示第一分支目标地址(使用第一分支目标地址的16个最低阶位)和第二分支目标地址(使用第二分支目标地址的12个最低阶位)。

鉴于以上阐述的解释,读者将认识到,根据本公开的实施方案的合并的分支目标缓冲器条目的益处在某些实施方案中在某些情况下包括:

·通过提供改进的预测带宽来改进计算系统的性能,从而允许在对分支目标缓冲器的单次访问中将分支目标地址的多个指令块加载到指令队列中;以及/或者

·通过提供分支目标缓冲器的增加的存储效率来改进计算系统的性能;以及/或者

·通过从单个分支目标缓冲器条目生成多个预测的指令块来改进执行软件的计算系统的性能,从而改进软件执行期间的效率和功率使用。

本公开的优点和特征可通过以下陈述进一步描述:

1.一种合并的分支目标缓冲器条目的方法,该方法包括:在分支目标缓冲器中维持对应于第一分支指令的条目,其中该条目标识第一分支指令的第一分支目标地址和第二分支指令的第二分支目标地址;以及基于第一分支指令访问条目。

2.根据语句1所述的方法,还包括基于条目将指示第一分支目标地址和第二分支目标地址的数据存储在预测队列中。

3.根据语句1至2中任一项所述的方法,其中预测队列通信地耦接到指令提取单元,该指令提取单元被配置为基于第一分支目标地址和第二分支目标地址来加载多个指令。

4.根据语句1至3中任一项所述的方法,还包括:接收指示第一分支指令和第一分支目标地址的第一重新导向;以及在分支目标缓冲器中存储条目作为标识第一分支目标地址。

5.根据语句1至4中任一项所述的方法,还包括:接收指示第二分支指令和第二分支目标地址的第二重新导向;以及修改条目以标识第二分支目标地址和第一分支目标地址。

6.根据语句1至5中任一项所述的方法,还包括基于一个或多个合并规则来确定修改条目以标识第二分支目标地址和第一分支目标地址。

7.根据语句1至6中任一项所述的方法,其中一个或多个合并规则基于以下中的至少一项:第一分支指令的分支类型、第二分支指令的分支类型、第一分支指令的预测窗口或第二分支指令的指令地址。

8.根据语句1至7中任一项所述的方法,其中确定修改条目以标识第二分支目标地址和第一分支目标地址进一步基于在条目中标识第一分支目标地址和第二分支目标地址所需的位数。

9.一种装置,该装置包括:合并的分支目标缓冲器条目的分支目标预测器,该分支目标预测器被配置为:在分支目标缓冲器中维持对应于第一分支指令的条目,其中该条目标识第一分支指令的第一分支目标地址和第二分支指令的第二分支目标地址;并且基于第一分支指令访问条目。

10.根据语句9所述的分支目标预测器,其被进一步配置为基于条目将指示第一分支目标地址和第二分支目标地址的数据存储在预测队列中。

11.根据语句9至10中任一项所述的分支目标预测器,其中预测队列通信地耦接到指令提取单元,该指令提取单元被配置为基于第一分支目标地址和第二分支目标地址来加载多个指令。

12.根据语句9至11中任一项所述的分支目标预测器,其被进一步配置为:接收指示第一分支指令和第一分支目标地址的第一重新导向;并且在分支目标缓冲器中存储条目作为标识第一分支目标地址。

13.根据语句9至12中任一项所述的分支目标预测器,其被进一步配置为:接收指示第二分支指令和第二分支目标地址的第二重新导向;并且修改条目以标识第二分支目标地址和第一分支目标地址。

14.根据语句9至13中任一项所述的分支目标预测器,其被进一步配置为基于一个或多个合并规则来确定修改条目以标识第二分支目标地址和第一分支目标地址。

15.根据语句9至14中任一项所述的分支目标预测器,其中一个或多个合并规则基于以下中的至少一项:第一分支指令的分支类型、第二分支指令的分支类型、第一分支指令的预测窗口或第二分支指令的指令地址。

16.根据语句9至15中任一项所述的分支目标预测器,其中确定修改条目以标识第二分支目标地址和第一分支目标地址进一步基于在条目中标识第一分支目标地址和第二分支目标地址所需的位数。

17.一种计算设备,该计算设备包括:存储器,该存储器存储计算机可读指令;以及处理器,该处理器与所述存储器通信并且包括:

处理器内核,该处理器内核包括:

合并的分支目标缓冲器条目的分支目标预测器,该分支目标预测器被配置为:在分支目标缓冲器中维持对应于所述计算机可读指令的第一分支指令的条目,其中该条目标识第一分支指令的第一分支目标地址和第二分支指令的第二分支目标地址;并且基于第一分支指令访问条目。

18.根据语句17所述的计算设备,其中所述处理器包括片上系统。

19.一种操作计算设备以提高效率的方法,该计算设备包括存储器以及与所述存储器通信的处理器,所述存储器存储在所述处理器上执行的计算机可读指令,所述方法包括:在所述处理器的分支目标缓冲器中维持对应于所述计算机可读指令的第一分支指令的条目,其中该条目标识第一分支指令的第一分支目标地址和第二分支指令的第二分支目标地址;以及基于第一分支指令访问条目。

20.根据语句19所述的方法,还包括基于条目将指示第一分支目标地址和第二分支目标地址的数据存储在预测队列中。

21.一种用于合并的分支目标缓冲器条目的装置,该装置包括:处理器,该处理器包括分支目标预测器,该分支目标预测器被配置为:在分支目标缓冲器中维持对应于第一分支指令的条目,其中该条目标识第一分支指令的第一分支目标地址和第二分支指令的第二分支目标地址;并且基于第一分支指令访问条目。

22.根据语句21所述的装置,其中分支目标预测器被进一步配置为基于条目将指示第一分支目标地址和第二分支目标地址的数据存储在预测队列中。

23.根据语句21至22中任一项所述的装置,其中分支目标预测器被进一步配置为:接收指示第一分支指令和第一分支目标地址的第一重新导向;并且在分支目标缓冲器中存储条目作为标识第一分支目标地址。

24.根据语句21至23中任一项所述的装置,其中分支目标预测器被进一步配置为:

接收指示第二分支指令和第二分支目标地址的第二重新导向;并且修改条目以标识第二分支目标地址和第一分支目标地址。

25.根据语句21至24中任一项所述的装置,其中分支目标预测器被进一步配置为基于一个或多个合并规则来确定修改条目以标识第二分支目标地址和第一分支目标地址。

26.根据语句21至25中任一项所述的装置,其中一个或多个合并规则基于以下中的至少一项:第一分支指令的分支类型、第二分支指令的分支类型、第一分支指令的预测窗口或第二分支指令的指令地址。

27.根据语句21至26中任一项所述的装置,其中确定修改条目以标识第二分支目标地址和第一分支目标地址进一步基于在条目中标识第一分支目标地址和第二分支目标地址所需的位数。

本公开的示例性实施方案主要在合并的分支目标缓冲器条目的全功能计算机系统的上下文中描述。然而,熟悉本领域的读者将认识到,本公开还可体现在设置在计算机可读存储介质上的用以与任何合适的数据处理系统一起使用的计算机程序产品中。此类计算机可读存储介质可以是用于机器可读信息的任何存储介质,包括磁介质、光介质或其他合适的介质。此类介质的示例包括硬盘驱动器或软盘中的磁盘、光盘驱动器的光盘、磁带以及本领域的技术人员可想到的其他介质。本领域的技术人员将立即认识到,具有适当编程装置的任何计算机系统将能够执行如在计算机程序产品中体现的本公开的方法的步骤。本领域的技术人员还将认识到,尽管本说明书中描述的一些示例性实施方案针对在计算机硬件上安装和执行的软件,然而,被实现为固件或硬件的另选实施方案也在本公开的范围内。

本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可包括其上具有用于使处理器执行本公开的各方面的计算机可读程序指令的计算机可读存储介质(或媒介)。

图7阐述了根据本公开的实施方案的示例性计算机可读存储介质700。图7的示例性计算机可读存储介质700可以包括任何类型的计算机可读存储介质700,其包括光盘702(例如,压缩盘(CD)、数字多功能盘(DVD)、蓝光光盘等)、磁盘704(例如,软盘、压缩磁盘)、硬盘驱动器706、固态驱动器(SSD)708、随机存取存储器(RAM)710等。计算机可读存储介质可以是可保留和存储供指令执行设备使用的指令的有形设备。计算机可读存储介质可以是(例如但不限于)电子存储设备、磁存储设备、光学存储设备、电磁存储设备、半导体存储设备或前述项的任何合适组合。计算机可读存储介质的更具体示例的不完全列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码的设备(诸如其上记录有指令的槽中的穿孔卡片或凸起结构)以及前述项的任何合适组合。如本文所用的计算机可读存储介质不能被理解为瞬时信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)或通过导线传输的电信号。

本文所述的计算机可读程序指令可从计算机可读存储介质下载到相应的计算/处理设备,或经由网络(例如互联网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。

用于执行本公开的操作的计算机可读程序指令可以是汇编指令、指令集体系结构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据或者以一种或多种编程语言的任何组合编写的源代码或目标代码,编程语言包括诸如Smalltalk、C++等面向对象的编程语言,以及诸如“C”编程语言或类似编程语言的常规过程编程语言。计算机可读程序指令可整个地在用户计算机上执行、部分地在用户计算机上执行、作为独立的软件包、部分地在用户计算机上执行并且部分地在远程计算机上执行或者整个地在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户计算机,或者可连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。在一些实施方案中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可执行计算机可读程序指令,具体通过利用计算机可读程序指令的状态信息来个性化处理电子电路,以便执行本公开的各方面。

本公开的各方面在此参考根据本公开的实施方案的方法、装置(系统)和计算机程序产品的流程图图示和/或框图进行描述。应当理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可由计算机可读程序指令来实现。

这些计算机可读程序指令可提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以得到机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令形成用于实现在流程图和/或框图的一个或多个框中指定的功能/动作的构件。计算机装置(处理器可以体现为片上系统或SoC)可包括一个或多个处理器内核。这些计算机可读程序指令还可存储在可指示计算机、可编程数据处理装置和/或其他设备以特定方式起作用的计算机可读存储介质中,使得其中存储有指令的计算机可读存储介质包括包含实现在流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令的制品。

计算机可读程序指令还可被加载到计算机、其他可编程数据处理装置或其他设备上,导致在计算机、其他可编程装置或其他设备上执行一系列操作步骤以得到计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现在流程图和/或框图的一个或多个框中指定的功能/动作。

图中的流程图和框图示出了根据本公开的各种实施方案的系统、方法和计算机程序产品的可能具体实施的体系结构、功能和操作。就这一点而言,流程图或框图中的每个框可表示指令的包括用于实现指定逻辑功能的一个或多个可执行指令的模块、段或部分。在一些另选的具体实施中,框中指出的功能可不按照图中指出的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可基本上同时执行,或者这些框有时可以相反顺序执行。还将注意到,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可由执行指定功能或动作或者执行专用硬件和计算机指令的组合的基于专用硬件的系统来实现。

从前面的描述将理解,可在本公开的各种实施方案中进行修改和改变。本说明书中的描述仅用于说明目的,而不应以限制性意义进行解释。本公开的范围仅由所附权利要求书的语言限定。

相关技术
  • 用最近条目队列补充分支目标缓冲器的方法和系统
  • 用最近条目队列补充分支目标缓冲器的方法和系统
技术分类

06120115563359