繁体   English   中英

winmips64 分支目标缓冲区执行 2 个周期停止

[英]winmips64 branch target buffer does 2 cycles stall

所以我一直在寻找为什么在winmips64上每次分支目标缓冲区错误预测时都会出现2个周期停顿,但我什么也没得到。所以它错误预测了bne第一次和最后一次运行。第一次说它的2个分支循环停顿并且在分支错误预测的最后 2 个周期中,有什么想法吗?代码的另一部分提到了 R12

    lw R4,0(R3)
    
    
    lw R8,0(R2)

    dmul R8,R8,R4
    
    daddi R3,R3,-8



    daddi R11,R2,-8
    dadd R9,R9,R8
    
    daddi R2,R2,-8
    bne R11,R12,loop    

我不知道具体的 winmips64 架构,即它与其他 MIPS 流水线实现有何不同或没有什么不同。 所以,如果其他人知道细节,如果我错了,请纠正我。

采取的分支和错误预测都花费 2 个周期与标准的 5 阶段流水线一致,其中分支决定(采取/未采取)在 EX 阶段完全解决,因此必须刷新前面阶段的指令,IF 和 ID,当它错了。

分支第一次执行时,分支预测器不知道,处理器似乎在假设未采用的情况下向前移动; 因此,有关分支的消息被搁置。

最后一次执行分支时,分支预测器知道,但是,分支没有被采用,这与预测不匹配,因为预测器假设它将继续循环,就像它刚刚做的那样。 因此,错误预测的消息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM