分支目标缓冲区如何减少延迟?

时间:2014-10-26 17:55:39

标签: branch computer-architecture

我想有些东西我没有得到。我相信我理解BTB背后的概念......但我不明白它是如何有用的。

因此BTB在流水线处理器的IF阶段允许我们知道分支的可能目标。这是我们通常会在ID阶段发现的知识...所以我们提前一步。

但是......那又怎样?我们如何处理这些信息?它如何使我们的管道更快?

3 个答案:

答案 0 :(得分:2)

BTB的性能影响在超级标量处理器中更明显。超标量意味着处理器具有多个ID(指令解码器)。例如第4代Intel Core处理器(Haswell)有 4个解码器,ARM A15部件有3个解码器等。

能够预测代码将采用哪个分支,可以让您提前获取和解码多个指令 并尝试填充所有解码器,而无需停止管道

同样通过了解所采用的分支,处理器可以推测性地重新排序传入的指令。

如果我们没有分支预测(使用BTB),CPU需要等待条件指令的评估,同时,ID的其余部分在评估条件时不会做任何事情,而不是利用"超级标量" :)

为什么分支预测很重要......它有助于CPU 每个周期执行尽可能多的指令。例如,Haswell CPU理论上可以在同一周期内执行4条指令。 BTB对此有所帮助。

答案 1 :(得分:1)

当谈论指令流中的分支时,有三个问题:

  1. 这条指令是分支指令吗?
  2. 如果这是一个条件分支,是否会采取分支?
  3. 如果采用分支或者是无条件分支,则从哪里获取下一条指令?什么是分支目标
  4. 由于获取指令是管道的首要问题,因此尽早在管道中回答这些问题对于当今高度超级分类器处理器的性能至关重要。

    分支预测器会尝试预测问题#2的答案。 BTB 试图预测问题#3的答案。虽然人们在谈论"分支预测器时常常会把BTB弄进来。#/ p>

答案 2 :(得分:0)

利用该信息,CPU可以更快地启动在分支目标处获取,解码和推测性地执行代码的过程。

相关问题