我根本不理解这个解决方案。有人可以帮我这个吗? This is the question和Here is the answer
答案 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.因此,最后一个分支是错误预测的。
因此,总共有三个误预测。