我完全不明白这个解决方案。有人可以帮我吗?这是问题,这是答案
在第一个周期中,分支预测变量为 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,并告诉 up 不要采取分支。当我们接受它时,它是错误的。
因为我们采用了分支,所以我们将预测变量增加到 01。这仍然告诉我们不要拿树枝。这是错误的,因为 d 现在是 2。因此,最后一个分支被错误预测。
因此,总共有三种错误预测。