分支预测器

编辑
本词条由“匿名用户” 建档。
在计算机体系结构中,分支预测器是一种数字电路,它试图猜测分支在明确知道之前将走哪条路。 分支预测器的目的是改善指令流水线中的流程。 分支预测器在许多现代流水线微处理器架构(如 x86)中实现高性能方面发挥着关键作用。 双向分支通常使用条件跳转指令来实现。 可以采用条件跳转并跳转到程序存储器中的不同位置,也可以不采用条件跳转并在条件跳转后立即继续执行。 在计算出条件并且条件跳转已经通过指令...

分支预测器

编辑

计算机体系结构中,分支预测器是一种数字电路,它试图猜测分支在明确知道之前将走哪条路。 分支预测器的目的是改善指令流水线中的流程。 分支预测器在许多现代流水线微处理器架构(如 x86)中实现高性能方面发挥着关键作用。

双向分支通常使用条件跳转指令来实现。 可以采用条件跳转并跳转到程序存储器中的不同位置,也可以不采用条件跳转并在条件跳转后立即继续执行。 在计算出条件并且条件跳转已经通过指令流水线中的执行阶段之前,无法确定是否进行条件跳转。

如果没有分支预测,处理器将不得不等待条件跳转指令通过执行阶段,然后下一条指令才能进入流水线中的获取阶段。 分支预测器试图通过猜测是否最有可能采用条件跳转来避免这种时间浪费。 然后获取并推测执行被猜测最有可能的分支。 如果后来检测到猜测是错误的,则推测执行或部分执行的指令将被丢弃,流水线从正确的分支重新开始,从而导致延迟。

在分支预测错误的情况下浪费的时间等于管道中从获取阶段到执行阶段的阶段数。 现代微处理器往往具有相当长的流水线,因此误预测延迟在 10 到 20 个时钟周期之间。 因此,使流水线更长会增加对更高级分支预测器的需求。

xxx次遇到条件跳转指令时,没有太多信息可以作为预测的基础。 但是分支预测器会记录分支是否被采用。 当它遇到之前已经出现过几次的条件跳转时,它就可以根据历史进行预测。 例如,分支预测器可能会识别出条件跳转的执行频率更高,或者每两次执行一次。

分支预测与分支目标预测不同。 分支预测试图猜测是否会进行条件跳转。 分支目标预测尝试在通过解码和执行指令本身计算之前猜测所采用的有条件或无条件跳转的目标。 分支预测和分支目标预测通常组合到同一电路中。

实施

编辑

静态分支预测

静态预测是最简单的分支预测技术,因为它不依赖于代码执行的动态历史信息。 相反,它仅根据分支指令预测分支的结果。

SPARC 和 MIPS(最早的商业 RISC 架构中的两个)的早期实现使用单向静态分支预测:它们总是预测不会采用条件跳转,因此它们总是获取下一条顺序指令。 仅当评估分支或跳转并发现已采用时,指令指针才会设置为非顺序地址。

两个 CPU 都在解码阶段评估分支,并具有单周期指令提取。 结果,分支目标循环有两个周期长,并且机器总是在任何采用的分支之后立即获取指令。 两种体系结构都定义了分支延迟槽,以便利用这些获取的指令。

一种更高级的静态预测形式假定将采用后向分支而不会采用前向分支。 向后分支是目标地址低于其自身地址的分支。 这种技术可以帮助提高循环的预测准确性,这些循环通常是向后指向的分支,并且被采用的次数多于不被采用的次数。

一些处理器允许将分支预测提示插入到代码中,以告知是否应该采用静态预测。 Intel Pentium 4 接受分支预测提示,但此功能在后来的 Intel 处理器中被放弃了。

分支预测器

当动态预测器没有足够的信息可供使用时,静态预测在一些具有动态分支预测的处理器中用作回退技术。在静态预测中,所有决定都是在编译时做出的,在程序执行之前。

动态分支预测

动态分支预测使用在运行时收集的有关已采用或未采用分支的信息来预测分支的结果。

内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/196055/

(1)
词条目录
  1. 分支预测器
  2. 实施
  3. 静态分支预测
  4. 动态分支预测

轻触这里

关闭目录

目录