(本题满分 15 分)假定 43 题中计算机 C 的部分数据通路如题 44 所示。

图中带箭头虚线代表控制信号,IR.rt、IR.rs 分别表示 IR 中的 rt、rs 字段,IR₁₁₋₀ 为 IR 的低 12 位,要求取指令周期完成 PC 增量操作,请回答下列问题 (1)①和②是同一类部件,其名称是什么(1 分)
(2)I 型指令中 imm8 可以是带符号或无符号整数,M 型指令中 offset 是带符号整数,则 EXTOP 至少有几位?为什么?(2 分)
(3)取指周期中 MARSrC、ALUA SrC、ALUB SrC、RegWr 的取值各是什么?(4 分)
(4)左移指令周期中 ALUB SrC、RegWsrc、RegDst、RegWr 的取值各是什么?Extop 是否可以与 M 型指令中的 EXTop 相同?为什么?(2 分)
[tag_link]
【答案】
(1) 多路选择器R 型指令需要用到寄存器编号 rs 和 rt,M 型指令需要用到寄存器 0 和 15,所以需要通过二路选择器进行选择。
(2) 只需要 1 位,因为只需要 1 位就可以实现零扩展和符号扩展这两种操作。
(3) 先解释各个控制信号的含义:
| 信号 | 本质问题 |
|---|---|
| MARSrC | 访问内存的地址来自 PC 还是 ALU |
| ALUASrC | ALU 的 A 端用 PC 还是寄存器 |
| ALUBSrC | ALU 的 B 端用 Rb / 常数 / 立即数 |
| RegWr | 要不要写寄存器 |
| RegWsrc | 写回数据来自 ALU 还是 MDR |
| RegDst | 写哪个寄存器 |
| 2R | 指令分阶段送给控制器 |
在取指阶段需要读取 PC 地址的指令内容,并且要计算 PC=PC+2 获取下一条指令的地址,不涉及到通用寄存器的写入。所以 MARSrc=0, ALUA Src=0, ALUB Src=1, RegWr = 0
(4) 左移指令需要通过扩展器获取到左移的立即数,所以 ALUB Src=2,计算结果通过 ALU 写回到通用寄存器中,所以 RegWSrc=1,RegWr=1,写入的寄存器位 R[rt],所以 RegDst=1。综上:ALUB Src=2, RegWSrc=1, RegDst=1, RegWr=1