【实验】多周期CPU微程序设计
基础知识
取指令阶段
- 需要完成的功能是 Mem[PC++] → IR
- 计算+1的动作和访问内存可以并行
- 但是内存取出来的地址和ALU的结果必须分不同的周期送回
节拍 | 数据通路 | 控制信号 | 说明 |
---|---|---|---|
T1 | Mem[PC]→IR,(PC)→AluSrcA,(AluOut)→PC |
|
完成PC+=4和内存取指令 |
T2 | (IR)→OP/Func/R1#/R2#/Imm, PC+4+Imm16<<2→C | 完成译码,取操作数和分支地址的计算 |
LOAD 指令
节拍 | 数据通路 | 控制信号 | 说明 |
---|---|---|---|
T1 | (A)+Imm→C) | 算操作数地址 | |
T2 | Mem[C]→DR | 访问主存 | |
T3 | (DR)→Reg | 寄存器的写回 |
ADD 指令
- (R0) + (R1) → R0
节拍 | 数据通路 | 控制信号 | 说明 |
---|---|---|---|
T1 | (R1)+(R2)→C | 完成实际的运算,保存在C中 | |
T2 | ©→Reg | 运算结果写回到通用寄存器 |
STORE指令
- (R0)→Mem[R2]
- 涉及到内存的写,寄存器的读
节拍 | 数据通路 | 控制信号 | 说明 |
---|---|---|---|
T1 | (A)+Imm→C | 算要访问的地址 | |
T2 | Mem[C]=B | 将寄存器B的值锁存到指定地址 |
BEQ
节拍 | 数据通路 | 控制信号 | 说明 |
---|---|---|---|
T1 | cmp(A,B) |
微指令的结构分析
- 下址地段:若P标志位为0,则表示下一条微指令的地址
- 0号地址一定为取指微程序的入口
- 每段微程序的最后一条要跳转到0地址回到取指阶段