📜  五级管道的各种说明

📅  最后修改于: 2021-06-29 04:53:24             🧑  作者: Mango

让我们考虑将指令执行分解为五个阶段。这些如下。

  1. 提取指令(IF):
    它将下一条预期指令读入缓冲区。
    IR → Mem [PC] ;
    PC → PC + 4 ; 
  2. 指令解码(ID):
    在此,执行以下步骤:
    • 指令解码,用于确定操作码和操作数说明符。
    • 计算操作数,其中计算每个源操作数的有效地址。
    • 提取操作数,其中从内存中提取每个操作数。
    A → Regs [IR6,  10] ;
    B → Regs [IR11, ...,  15] ;
    Immediate → (IR16)16## (IR16, ..., 31) 
  3. 执行指令(EX):
    它执行指示的操作。
    Memory ref:   ALUoutput  →  A + Immediate ;
    Reg-Reg ALU:  ALU  →  A func B ;
    Reg-Imm ALU:  ALUoutput  →  A op Immediate ;
    Branch:       ALUoutput  →  PC + Immediate;  Cond * (A op 0) 
  4. 内存访问/分支完成周期(MEM):
    它访问内存。
    Memory ref:  LMD  →  Mem [ALUoutput]  or Mem (ALUoutput)  →  B
    Branch:      if (cond) PC  →  ALUoutput 
  5. 写操作数(WO):
    它存储结果。
    Reg-Reg ALU:   Regs [R16, ...., 20]  →  ALUoutput ;
    Reg-Imm ALU:   Regs [R11, ..., 15] → ALUoutput ;
    Reg-Reg ALU:   Regs [R11, ...., 15]  →  LMD ;