在哪个阶段做出分支决策?

时间:2018-09-28 16:53:06

标签: cpu-architecture

在哪个RISC管道阶段中做出分支决策?它处于“解码”或“执行”阶段还是其他阶段?假设管道有5个阶段-“ IF”,“ ID”,“ EX”,“ MEM”和“ WB”。

1 个答案:

答案 0 :(得分:3)

早期的MIPS在解码阶段使用特殊的执行单元评估了分支条件,因此它只需要一个1周期的气泡(它会填充1个分支延迟时隙:What is the point of delay slots?)。

来源:维基百科的经典RISC(5级管道)文章

  

Instruction decode

     

(第4段)如果解码的指令是分支或跳转,则在读取寄存器文件的同时并行计算分支或跳转的目标地址。在读取寄存器文件后计算分支条件,如果采用分支或指令为跳转,则将在第一阶段的PC预测变量中分配分支目标,而不是分配已计算的递增PC。应该注意的是,某些架构在执行阶段使用了ALU,但代价是稍微降低了指令吞吐量。

也:What's the role of EX stage for branching in Pipelined MIPS w Forwarding?

但是,这将要求输入比平时更早准备好,因此如果分支slt或其他指令的结果仍在EX阶段,而该指令处于ID时,它将不得不停顿


其他来源(例如这些幻灯片:http://home.deib.polimi.it/santambr/dida/phd/wonderland/2014/doc/PDF/4_BranchHazard_StaticPrediction_V0.pdf)说:“分支结果和分支目标地址已在EX阶段(第3阶段)结束时准备好了”,用于经典的MIPS beq指令。 / p>


不同的架构可能会做出不同的选择,例如停顿或使用分支预测+投机性提取/解码(如果需要),他们等待分支结果从任何阶段生成的结果就绪。

甚至甚至甚至是推测执行(但仍然是有序的,因此可以在误写到达写回或MEM之前将其推测出来。您不希望将任何推测存储写入缓存。 )