计算机架构 - 分支预测

时间:2018-04-18 23:00:39

标签: computer-science cpu-architecture branch-prediction

我根本不理解这个解决方案。有人可以帮我这个吗? This is the questionHere is the answer

1 个答案:

答案 0 :(得分:0)

在第一个周期中,您的分支预测器位于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.因此,最后一个分支是错误预测的。

因此,总共有三个误预测。