📜  相关分支预测

📅  最后修改于: 2021-06-28 17:13:31             🧑  作者: Mango

程序中存在的条件分支会严重影响系统的性能。因此,我们需要提出一种有效的分支预测机制,以高精度获取分支目标地址,从而最大程度地减少与控制危害相关的停顿。

如果无法正确预测目标地址,则将在刷新流水线并使处理器返回到执行分支指令时处于较早状态的状态时发生惩罚。

分支预测技术的类型–
分支预测技术可以分为两种类型:

  1. 静态分支预测技术
  2. 动态分支预测技术

这些解释如下。

1.静态分支预测技术:
在使用静态分支预测技术的情况下,基础硬件会假设不是始终采用该分支,还是始终采用该分支。
让我们用示例代码来理解分支预测:

//Code
int a=0;
while(a<5)
  {
    //branch instruction, condition either true or false
    if(a%2==0)   
    {.....}
    a++;
  }

输出 –
让我们假设底层硬件假设不总是进行分支。基础硬件预测的输出和实际输出如图所示:

2.动态分支预测技术:
在动态分支预测技术中,底层硬件的预测不是固定的,而是动态变化的。此技术比静态技术具有更高的准确性。

一些动态分支预测技术是:

  1. 1位分支预测技术
  2. 2位分支预测技术
  3. 相关分支预测技术

这些解释如下。

  • 1位分支预测技术–
    在这项技术中,硬件仅在一个错误的假设之后更改其假设。例如,如果硬件假设要采用分支但实际上未采取分支,则在下一步中硬件假定不采取分支,反之亦然。

    1位分支预测机如下图所示:

    解释 –
    首先,假设硬件假设采用分支,因此在a = 0时采用分支。在a = 1时,硬件假定要采用分支但不采用分支。所以现在在a = 2时,硬件假定不采用分支但采用了分支。在a = 3时,硬件假定采用分支,但不采用分支。在a = 4时,硬件假定不采用分支,但采用分支。

    基础硬件预测的输出和实际输出如图所示:

  • 2位分支预测器–
    在这种技术中,底层硬件不会仅在一个错误的假设之后更改其假设,而是在连续两个错误的假设之后更改其假设,反之亦然。

    2位分支预测机如图所示:

    解释 –

    1. 可以说,当a = 0时,一切都将重置(00),因此硬件假定不采用分支而采用了分支。因此当前状态为(01)
    2. 当a = 1时,硬件假定不采用分支并且不采用分支。因此当前状态为(00)
    3. 当a = 2时,硬件假定不采用分支并采用分支,因此当前状态为(01)
    4. 当a = 3时,硬件假定不采用分支并且不采用分支。所以当前状态是(10)
    5. 当a = 4时,硬件假定不采用分支并采用分支,因此当前状态为(00]

    基础硬件预测的输出和实际输出如图所示:

  • 相关分支预测–
    同样由于与其他分支的干扰,我们也无法从2位分支预测器中获得显着的准确性,因此相关分支预测成为图片,也称为两级分支预测器,其中考虑到最近的行为而提高了预测精度其他分支机构也是如此。

    信息来源–

    • 它使用之前提取的分支目标地址的k个最低有效位。
    • 它还使用本地历史表(LHH),它是移位寄存器的表,其中移位寄存器指的是m个分支的最后结果,这些分支具有相同的k个最低有效位。
    • 它还使用本地预测表根据结果的状态来预测结果。

    例子 –
    让我们用相同的例子来说明和理解这种预测技术。

    逐步说明–
    1.最低k(此处k = 3)有效位为100,即4,因此它指向本地历史记录表中的位置4。在位置4,它包含000,即0,因此它指向本地预测表中的位置0。它包含状态00,即未采取分支,但实际上采取了分支(0%2)。所以现在两个表都更新了。
    完成过程如图所示:

    2.在位置4,现在它在本地历史表中包含100,因此它指向本地预测表中的位置4。它包含状态00,即未采用分支,而实际上未采用分支。因此,表将被更新。
    完成过程如图所示:

    3.现在位置4现在在本地历史记录表中包含010,因此它指向本地预测表中的位置2。它包含状态00,即未采用分支,而实际上已采用分支。因此,表将被更新。
    完成过程如图所示:

    4.现在在位置4,它在本地历史记录表中包含101,因此它指向本地预测表中的位置5。它包含状态00,即未采取分支,实际上未采取分支。因此,表得到更新
    完成过程如图所示:

    5.现在在位置4中,它在本地历史记录表中包含010,因此它指向本地预测表中的位置2。它包含状态01,即未采用分支,而实际上已采用分支。因此,表得到更新
    完成过程如图所示:

    基础硬件预测的输出和实际输出如图所示:

    因此,如果存在多个分支,并且像这样继续进行处理,则相关分支预测比所有技术都具有最高的准确性。