让我们考虑将指令执行分解为五个阶段。这些如下。
- 提取指令(IF):
它将下一条预期指令读入缓冲区。IR → Mem [PC] ; PC → PC + 4 ;
- 指令解码(ID):
在此,执行以下步骤:- 指令解码,用于确定操作码和操作数说明符。
- 计算操作数,其中计算每个源操作数的有效地址。
- 提取操作数,其中从内存中提取每个操作数。
A → Regs [IR6, 10] ; B → Regs [IR11, ..., 15] ; Immediate → (IR16)16## (IR16, ..., 31)
- 执行指令(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)
- 内存访问/分支完成周期(MEM):
它访问内存。Memory ref: LMD → Mem [ALUoutput] or Mem (ALUoutput) → B Branch: if (cond) PC → ALUoutput
- 写操作数(WO):
它存储结果。Reg-Reg ALU: Regs [R16, ...., 20] → ALUoutput ; Reg-Imm ALU: Regs [R11, ..., 15] → ALUoutput ; Reg-Reg ALU: Regs [R11, ...., 15] → LMD ;