【问题标题】:Computer Architecture- Branch Prediction计算机架构-分支预测
【发布时间】:2018-09-29 07:38:49
【问题描述】:
【问题讨论】:
-
如果您对问题或答案一无所知,请去看您的教授。如果您确实了解某些内容,则需要解释您所了解的内容,以便答案比教科书还要小。 How to Ask 有一些写好问题的描述。
标签:
computer-science
cpu-architecture
branch-prediction
【解决方案1】:
在第一个周期中,您的分支预测器为 00(00 或 01 假定分支未采用)。因此,当分支时,我们假设它没有被占用并开始执行 addi。因为 d 等于 0,所以不采取分支的假设是正确的。我们继续使用分支预测器 00。
对于出现的下一个分支,我们仍然有一个 00 预测器并假设未采用。这是正确的,因为 d 等于 1(如果 d 不等于 1,则仅分支)。
接下来我们回到第一个分支。请记住,d 现在是 1。根据我们的 00 预测器,不应该采用分支。但是,当实际计算分支时,我们发现 1 不是 0,因此采用了分支(错误预测++)。
因为分支被采用,所以 d 仍然是 1。因为最后一个分支被采用,我们的预测器是 01,它仍然告诉我们预测未采用的分支。因为 d 等于 1,所以这个预测是正确的。
我们现在回到顶部,d 值为 2(它必须在代码的其他地方增加)。我们的分支预测器再次为 00,并告诉我们不要选择分支。拿走就错了。
因为我们采用了分支,所以我们将预测变量增加到 01。这仍然告诉我们不要采用分支。这是错误的,因为 d 现在是 2。因此,最终分支被错误预测。
因此,共有三个错误预测。