计算机体系结构中如何处理未解析的条件分支处理策略?

computer architecturecomputer sciencenetwork

条件分支的计算必须等到所引用的条件已知后才能进行。例如,如果指定的条件定义了前一条指令执行结果的符号,那么计算的前提条件是前一条指令已经执行完毕。

在所引用的条件已知之前,该条件分支被视为未解析。

处理器利用三种基本元素来处理未解析的条件分支,例如阻塞分支处理、推测执行和多路分支,如图所示。

阻塞分支处理是处理未解析条件分支的最简单方法。条件分支的执行会在确定的条件得到解决之前被中断。早期的流水线微处理器,例如 MC 68020、MC 68030 和 80386,就是阻塞分支处理的例子。这种方法会因为流水线停顿而导致较长的延迟,如表格所示。因此,高级处理器采用了一种更有利的策略,称为推测执行。

阻塞分支处理中的分支惩罚

处理器类型已执行的惩罚周期未执行的惩罚周期
MC 68020 (1984)53
MC 68030 (1987)53
80386 (1985)82

由于未解析的分支,推测性分支处理会触发流水线中断,从而阻止特定条件的执行。检测到未解析的条件分支后,会根据猜测结果进行推测性执行,并沿着猜测的路径继续执行。

如图所示,推测性执行包含三个关键要素:分支预测方案、推测性执行的范围以及预测错误时的恢复方案。

分支预测可以是固定预测或真实预测。固定预测会不断进行类似的猜测,结果要么是"执行",要么是"不执行"。真实预测有两种可能的结果:"执行",要么是"不执行"(即执行到执行路径,顺序路径)。

在推测性执行中,处理器会持续推测性地执行指令,直到确定了条件为止。

但是,条件执行开始到等效条件解析完成之间的时间间隔可能会发生显著变化。

如果出现预测错误,需要实现两个基本要素:一是丢弃推测执行的结果,二是继续执行其他路径,例如正确的路径。当存在多个待处理的条件分支时,应选择并执行相应的备选路径。

最后,多路分支是处理未解析条件分支的最佳方案。因此,在遇到未解析的条件分支时,两条可行的路径都会被执行。当计算出特定条件时,正确的路径会保留下来。这条路径会被接受,而错误的路径会被移除。


相关文章