【实验】多周期CPU微程序设计

基础知识

取指令阶段

  • 需要完成的功能是 Mem[PC++] → IR
  • 计算+1的动作和访问内存可以并行
  • 但是内存取出来的地址和ALU的结果必须分不同的周期送回
节拍 数据通路 控制信号 说明
T1 Mem[PC]→IR,(PC)→AluSrcA,(AluOut)→PC IRin,IRWrite,AluSrcA=PC,IR_{in}, IRWrite, AluSrcA=PC,
AluOp=ADD,ALuSrcB=4,PCWriteAluOp=ADD, ALuSrcB=4,PCWrite
完成PC+=4和内存取指令
T2 (IR)→OP/Func/R1#/R2#/Imm, PC+4+Imm16<<2→C AluOp=ADD,AluSrcB=(PC+4+Imm)AluOp=ADD, AluSrcB=(PC+4+Imm) 完成译码,取操作数和分支地址的计算

LOAD 指令

节拍 数据通路 控制信号 说明
T1 (A)+Imm→C) AluOP=ADD,AluSrcA=A,AluSrcB=ImmAluOP=ADD,AluSrcA=A, AluSrcB=Imm 算操作数地址
T2 Mem[C]→DR IorD=1IorD=1 访问主存
T3 (DR)→Reg RegWrite,MemtoRegRegWrite,MemtoReg 寄存器的写回

ADD 指令

  • (R0) + (R1) → R0
节拍 数据通路 控制信号 说明
T1 (R1)+(R2)→C AluOP=OP,AluSrcA=A,AluSrcB=BAluOP=OP, AluSrcA=A,AluSrcB=B 完成实际的运算,保存在C中
T2 ©→Reg RegDst=rd,RegWrite=1,MemtoReg=CRegDst=rd, RegWrite=1,MemtoReg=C 运算结果写回到通用寄存器

STORE指令

  • (R0)→Mem[R2]
  • 涉及到内存的写,寄存器的读
节拍 数据通路 控制信号 说明
T1 (A)+Imm→C AluOP=ADD,AluSrcA,AluSrcB=ImmAluOP=ADD, AluSrcA, AluSrcB=Imm 算要访问的地址
T2 Mem[C]=B MemWrite=1,IorD=1MemWrite=1, IorD=1 将寄存器B的值锁存到指定地址

BEQ

节拍 数据通路 控制信号 说明
T1 cmp(A,B) Branch,PCSrc=1,AlUOP=cmp,AluSrcA=A,AluSrcB=BBranch, PCSrc=1, AlUOP=cmp,AluSrcA=A, AluSrcB=B

微指令的结构分析

【实验】多周期CPU微程序设计

  • 下址地段:若P标志位为0,则表示下一条微指令的地址
  • 0号地址一定为取指微程序的入口
  • 每段微程序的最后一条要跳转到0地址回到取指阶段