计算机管道好处,关于管道:计算机组织-“采用预测”(总是采用)分支预测如何工作?...

我可以理解"预测未采取"的工作方式。它只是在获取PC + 4指令上继续前进。在分支被解析之前,如果采用了分支,则刷新之前获取的所有指令。

但是我不明白"预测采取"是如何工作的。我认为分支指令在处理器可以预测将要采用之前就需要处于解码阶段(并且分支目标地址的计算需要完成),对吗?

那么,如何在" MIPS 5级流水线"之类的机器上实施"预测"呢? (分支目标地址的计算和是否分支是在ID(指令解码)阶段决定的)

如果可以在ID阶段解析分支,是否意味着在IF(指令提取)阶段进行了预测?

我很困惑,因为有人说"采用预测"或"未采用预测"被称为"静态分支预测",编译器会做所有的事情。因此,在"采用预测"的情况下,编译器会将分支目标指令插入到分支指令之后的位置。

我的想法正确吗?还是他的话是正确的?

MIPS具有分支延迟插槽,可为简单的5级管道隐藏分支等待时间,对于无条件分支,甚至对于有条件的(如果您在ID阶段处理它们也是如此)(像实际的MIPS I和/或Stanford MIPS学术版本显然做到了) 。

但是,是的,要避免获取气泡,需要在分支被解码之前预测分支的存在以及它们的目标地址。 (包括无条件的直接分支)。真正的预测变量可以做到这一点。有关现代x86上的示例,请参见Slow jmp-instruction。

但这与经典的5级RISC差距很大。

如果将这样的预测变量放入没有分支延迟时隙的5级RISC中,例如一个简单的RISC-V,您可能实际上要先检查当前正在获取的位置,因此可以预测下一个周期要获取的内容。

通常,对于条件分支,您只会采用静态的始终采用的预测。 (通常只有向后位移,例如循环分支)。

如果您没有在ID阶段本身中正确评估分支条件,那么该预测会将分支等待时间从2个周期(IF到EX)缩短到1个周期(IF到ID)。

也就是说,您可以将ID阶段设计为在看到反向分支时重新获取,或者如果看到向前条件分支则不重新获取。

因此,您可以针对前向分支和后向分支的失败进行优化,因为它们相对常见。为了做得更好,您可以使用按地址或以各种复杂方式建立索引的动态预测缓存(例如TAGE使用最近的分支历史作为索引的一部分)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值