EX阶段在流水线MIPS转发中的分支角色是什么?

时间:2017-07-02 00:07:44

标签: mips cpu-architecture pipelining

考虑以下流水线处理器结构:

MIPS Schema](![a busy cat

请注意,分支的条件测试(=电路),以及分支时下一条指令的目标地址计算都在ID阶段执行 - 作为节省停顿/冲洗的方法(如反对在EX阶段完成所有操作并将结果转发到给定分支指令的MEM阶段。)

由于所有工作都在指令解码阶段完成,为什么还要等待给定的分支指令到达EX阶段? EX舞台ALU单元是否在这方面发挥作用?

提前谢谢。

2 个答案:

答案 0 :(得分:0)

beq出现控制危险时,流水线处理器事先不知道接下来要获取什么指令,因为在下一条指令被取出时尚未做出分支决定。

因为决定是在MEM阶段做出的,所以我们需要在每个分支处停止管道三个周期,这当然会影响系统性能。

另一种方法是预测是否将采取分支并开始基于预测执行指令。一旦做出分支决策并且可用,如果预测错误,处理器可以抛出(冲洗)指令(这称为分支误预测惩罚)也会影响表现。

为了减少分支误预测惩罚,可以提前做出分支决策。 做出决定只需要比较两个寄存器。使用专用的相等比较器比执行减法和零检测更快。如果比较器足够快,可以将其移回Decode阶段,以便从寄存器文件中读取操作数并进行比较,以在Decode阶段结束时确定下一台PC。

不幸的是,早期的分支决策硬件引入了新的RAW 数据危险

答案 1 :(得分:0)

  

由于所有工作都在指令解码阶段完成,为什么还要等待给定的分支指令到达EX阶段? EX舞台ALU单元是否在这方面发挥作用?

分支指令仅在解码阶段被解码和解析,我们不等待它进入EX阶段。

就像你在问题中指出的那样,分支结果和目标地址计算都是在DEC阶段完成的。硬件通过从正确的阶段转发所需的数据来处理RAW危险(在读取RegFile之后立即注意小多路复用器)。结果,分支相等性检查看到正确的操作数,结果驱动PCSrcD信号。该信号进一步决定了图中第一个Mux的输出(基本上在PC+4Branch Target之间决定。因此,在DEC阶段本身就可以安全快速地做到这一点。

此外,分支指令相关信号(PCSrcDBranchDPCBranchD)都没有进入EX阶段。如果您看到ISS / EX寄存器的输入,则它不会接收任何上述信号。因此,信息不会传递到EX阶段,并且分支在DEC阶段本身的末尾完全解析并退出。