【发布时间】:2020-01-13 11:23:07
【问题描述】:
我可以理解“预测未采取”的工作原理。它只是继续获取 PC+4 指令。直到分支解决,如果分支被取走,则刷新之前取到的所有指令。
但我不明白“预测采取”是如何工作的。我认为分支指令需要处于解码阶段(并且需要完成分支目标地址计算),然后处理器才能预测它会被占用,对吧?
那么如何在 MIPS 5-stage pipeline 这样的机器上实现“预测”? (分支目标地址计算和分支是否采取在ID(指令解码)阶段决定)
如果分支可以在ID阶段解决,是否意味着在IF(指令获取)阶段进行了预测?
我很困惑,因为有人说“预测采取”或“预测未采取”被称为“静态分支预测”,编译器会做所有的事情。所以在“预测采取”的情况下,编译器会将分支目标指令插入到分支指令之后的位置。
我的想法对吗?还是他的说法是正确的?
【问题讨论】:
标签: pipeline cpu-architecture branch-prediction