超标量处理器的分支预测

参考《超标量处理器设计》

超标量处理器根据去指令的地址,从I-Cache中取出多条指令,这些指令组成指令组(fetch group),处理器根据指令组中指令的个数,调整取指令的地址,进行下个周期的取指令。

超标量处理器中的取指令的地址不连续,每次增加的值等于指令组的字长,所以如果使用取指令的地址进行分支预测,就只对指令组的第一条指令进行了分支预测。

BTB需要几下分支指令在四条指令中的位置(4way超标量处理器)

当前周期取出的质量不包括分支指令,BTB记录下01即分支指令的偏移值,若四字对齐的四条指令中存在多于一条的分支指令,它们会互相干扰。

上述局限于指令出现在四字对齐的边界内,如果可以对一个周期的所有指令做分支预测,情况如下

这种情况BTB需要四个读端口,硬件利用效率低,不采用上述方法。

1.目标地址预测

对于RISC指令集,可以在取指阶段马上进行目标地址的计算不必进行目标地址的预测,需要在I-Cache取出时马上识别出分支指令,可以在进入I-Cache之前进行预解码,如果遇到间接跳转的指令,此时无法对目标地址进行预测。

2.分支方向预测

基于局部历史的分支预测,需要PHT和BHT支持多端口,可以通过交叠的方式模拟多端口

基于全局历史的分支预测,考虑多条指令的GHR不一样,所以不能简单的模拟。

3.交叠

使用但端口存储器模拟多端口的结构

 若寻址PHT的地址由哈希运算产生,要保证每周期寻址PHT的四个地址落在不同的bank上,否则会产生bank冲突。

可以将每条指令PC值的[3:2](PC需要字对齐)作为寻址的低位部分,这样可以保证四个地址寻址到四个不同的bank。

交叠的优点:避免真正使用多端口存储器而对芯片面积、功耗和延迟造成负面的影响。

大部分多端口功能部件如ROB、发射队列(Issue Queue)和指令缓存(Instruction Buffer)等部件。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值