分支预测和绩效

时间:2016-05-18 09:32:54

标签: cpu-architecture branch-prediction

我正在读一本关于计算机体系结构的书,我在本章谈到分支预测。 有这个小练习让我很难缠绕它。

考虑以下内部for循环

for (j = 0; j < 2; j++)
{
    for (i = 10; i > 0; i = i-1)
        x[i] = x[i] + s
}

-------&GT;内循环:

L.D       F0, 0(R1)
ADD.D     F4, F0, F2
S.D       F4, 0(R1)
DADDUI    R1, R1, -8
BNE       R1, R3, Loop

假设寄存器F2保持标量s,R1保持x [10]的地址,并且当i == 0时,R3被预先计算以结束循环;

a)预测器如何在拍摄/不拍摄之间交替执行?

----由于循环只执行了2次,我认为备用预测会损害这种情况下的性能(?),并且有1次未命中预测。

b)1位分支预测缓冲区是否会提高性能(与a相比)?假设第一个预测是&#34;未采取&#34;,并且没有其他分支映射到此条目。

----假设第一个预测是&#34;未采用&#34;,如果预测错误,则1比特预测器将该比特反转。所以这将是NT / T / T.这是否与问题a)具有相同的性能? 1次错过预测。

c)2位分支预测缓冲区是否会提高性能(与a相比)?假设第一个预测是&#34;未采取&#34;,并且没有其他分支映射到此条目。

----以&#34开始的2位分支预测;未采取&#34;。我记得在错过两次后2位预测发生了变化。所以这个预测就像NT / NT / T / T.因此,与a)相比,它的性能会更差。 1错过预测

这是我尝试回答这些问题。任何人都可以向我解释我的答案是对还是错更详细的请问?感谢。

1 个答案:

答案 0 :(得分:0)

  

由于循环仅执行2次

你的意思是外循环条件,你没有显示asm的那个?我现在只回答部分问题,以防这个混乱是你的主要问题。如果这不是您感到困惑的话,请发表评论。

内循环底部的条件分支执行20次,具有此模式:9xT,1xNT,9xT,1xNT。交替预测器在50%的时间内会出现错误,+ / - 20%取决于它是正确还是错误。

外循环只运行两次:T,NT。整个内循环运行两次。

根据交替预测是以T还是NT开始,外环分支将被完美或非常预测。