具有稀疏和密集预测缓存的复合分支预测装置制造方法及图纸

技术编号:7149586 阅读:293 留言:0更新日期:2012-04-11 18:40
用于微处理器中的分支预测的系统和方法。复合装置对指令缓存的每个条目内不多于常见较小数量的分支在稀疏缓存中存储分支预测信息。对于其中i-cache行包括附加分支的较不常见情况,该装置在密集缓存中存储相应的分支预测信息。该稀疏缓存的每个条目存储指示相应的指令缓存行是否包括附加分支指令的位矢量。此标记还可被用于选择密集缓存中的条目以存储。第二稀疏缓存存储从该第一稀疏缓存驱逐的全部条目。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及微处理器,尤其涉及预测机制(prediction mechanism)。
技术介绍
当代微处理器可包括一个或更多个处理器内核或处理器,其中每个处理器能够执行软件应用的指令。这些处理器通常是管线化(pipelined)的,其中该处理器包括一个或更多个数据处理级,该一个或更多个数据处理级与放置于其间的存储元件(例如,寄存器和阵列)串联。在限定时钟周期或相(phase)的时钟信号的转换(transition)过程中, 一级的输出可被用作下一级的输入,其中相是时钟周期的一小部分。尽管管线(pipeline) 可被分成任意数量的级(在这些级处执行指令处理的部分),指令处理通常包括获取 (fetching)指令、解码指令、执行指令和在该指令确定的目的地中存储执行结果。理想情况下,每个时钟周期对管线的每一级产生有用的指令执行。然而,管线中的停顿可导致在特定的管线级期间无有用工作可执行。一些停顿可能持续若干时钟周期并明显降低处理器性能。停顿的一些示例包括数据缓存(cache)或指令缓存未中(miss),指令间的数据依赖性,以及控制流误预测(misprediction),比如误预测的分支指令(branch instruction)。停顿对处理器性能的负面影响可以通过重叠(overlap)管线级而减小。进一步的技术是允许指令的乱序(out-of-order)执行,这有助于减少依赖数据的停顿。另外, 具有超级标量体系结构(superscalar architecture)的内核根据动态调度每个时钟周期发出变化的数量的指令。然而,由于可能阻止所有停顿周期的隐藏的按序回退(in-order retirement),若干时钟周期的停顿仍降低了处理器的性能。因此,另一种减少性能损失的方法是减少多周期停顿的发生。一种这样的多周期停顿是控制流指令(比如分支指令)的误预测。分支指令包括许多类型,比如有条件的或无条件的以及直接的或间接的。条件分支指令执行确定采用指令流中的哪条路径的操作。如果该分支指令确定没有满足指定的条件(其可被编码在该指令内),则该分支指令被认为是不采取(non-taken)并以程序次序执行接下来的序贯指令。然而,如果该分支指令确定满足了指定的条件,则认为采取该分支指令。相应地,执行后续指令,后续指令不是程序次序中接下来的序贯指令,而是位于分支目标地址的指令。无条件分支指令被认为是永远采取(always-taken)的条件分支指令。在该指令内没有要测试的指定条件,而后续指令的执行永远按照不同于序贯次序的次序进行。另外,分支目标地址可以通过相对于存储在该程序计数器(PC)寄存器中的线性地址值的偏移(offset)而指定,该偏移可被存储在条件分支指令本身中。这种类型的分支目标地址被称为“直接的”。分支目标地址还可由寄存器或记忆体(memory)中的值指定,其中该寄存器或记忆体位置可被存储在该分支指令中。这种类型的分支目标地址被称为“间接的”。进一步,在间接分支指令中,指定该分支目标地址的寄存器可被装载有不同的值。无条件间接分支指令的示例包括程序调用(procedure calls)和返回 (returns),其可用于实现程序代码中的子例程(subroutines),并可使用返回地址堆栈 (Return Address Stack,RAS)来提供该分支目标地址。另一示例是间接跳转指令,其可用于实现switch-case语句,该语句在面向对象编程(比如C++和Java)中很流行。条件分支指令的示例是可用于实现程序代码中的循环(loops)的分支指令(例如,“for”和“while”循环结构)。条件分支指令必须满足指定条件才能被认为采取。满足条件的一个示例可以是指定的寄存器现在保持(hold)的存储值为零。该指定的寄存器被编码在该条件分支指令中。由于软件应用代码内的指令,此指定的寄存器可在循环中递减其存储的值。该指定寄存器的输出可被输入到专用零检测组合逻辑中。另外,条件分支指令彼此可具有一定的依赖关系。例如,程序可具有简单的情况, 比如if (value == 0) value ==1 ; if (value == 1)将用于实现上述实例的条件分支指令将具有可用于改进预测该条件的准确度的全局历史。在一个实施例中,该预测可通过2-位计数器执行。接下来详细地描述分支预测。当代微处理器可能需要多个时钟周期以确定分支指令的条件的结果和确定分支目标地址。对于在特定管线中执行的特定的线程,直到分支指令被解码且知道随后条件结果和分支目标地址之后,该分支指令或后续指令才执行有用工作。这些停顿周期降低了处理器的性能。在该指令被获取之后很短时间内,可对条件分支的条件和分支目标地址进行预测,而不是停顿。至于何时准备好了预测的精确阶段取决于该管线的实现。为了预测分支条件,用于从记忆体(比如从指令缓存(i-cache))获取指令的PC可被用于索引分支预测逻辑。使用PC的早期的综合预测方案的一个示例是kott McFarling在1993年的论文 “Combining Branch Predictors“(Research Laboratory Technical Note TN-36)中描述的gselect分支预测方法,通过援引将该论文全部并入本文。PC中存储的线性地址可与全局历史寄存器中存储的值以散列函数结合。该散列函数的输出和该PC可被用于索引预测表,比如模式历史表(PHT)、分支目标缓冲器(BTB)或其它。用当前分支指令的分支目标地址信息而不是采取或不采取的预测来更新全局历史寄存器可增加条件分支方向预测(即, 采取和不采取结果预测)和间接分支目标地址预测(比如BTB预测或间接目标阵列预测) 两者的预测准确度。在分支预测机制的各实施例中可包括许多不同的方案。高分支预测准确度有助于更高效、更高性能的微处理器。来自预测的指令流的指令可在执行该分支指令前推测性执行,并在执行该分支指令前在任何情况下被放入处理器的管线中。如果所预测的指令流是正确的,则每个时钟周期执行的指令的数量有利地增加。 然而,如果所预测的指令流是不正确的(即,不正确地预测了一个或更多分支指令),则来自被不正确地预测的指令流的指令被从该管线丢弃且每个时钟周期执行的指令的数量减少。时常,分支预测机制包括分支指令的在先执行的历史以形成对特定分支指令的更准确的行为。这种分支预测历史通常需要在存储器中保持与分支指令对应的数据。而且, 分支目标缓冲器(BTB)可用于存储目标地址预测中使用的全部或部分分支目标地址。在包括历史和地址信息的分支预测数据被从该存储区中驱逐(evict)或以其他方式丢失的情况下,为了随后的分支指令而再生该数据是必需的。上述问题的一个解决方案是增加分支预测存储器的大小。然而,增加分支预测存储器的大小需要门面积(gate area)和分支预测机制的大小的显著增加。因而,通过减小分支预测存储器的大小以减少门的面积和功率消耗,有关分支的行为的有价值的数据可能被驱逐并且必须被再生。鉴于以上,期望能够改进分支预测能力又不需要显著增加门计数和分支预测机制的尺寸的方法和机制。
技术实现思路
思索用于微处理器中的分支预测的系统和方法。在一个实施例中,提供一种微处理器内的复本文档来自技高网
...

【技术保护点】
1.一种微处理器,包括:指令缓存;以及包括第一多个条目的第一稀疏缓存,所述条目中的每一个对应于所述指令缓存的条目;其中所述第一稀疏缓存的每个条目被配置为:对不多于第一数量的分支指令存储分支预测信息;以及存储指示所述指令缓存的相应条目是否包括大于所述第一数量的分支指令的标记。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:杰拉尔德·D·小祖拉斯基
申请(专利权)人:超威半导体公司
类型:发明
国别省市:US

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

1