首页 > 解决方案 > 确定四个级间寄存器中每一个的最小大小(以位为单位)

问题描述

我不知道如何开始处理这个问题。

我可以阅读的任何提示或参考/视频等可以让我回答这个问题会很好考虑图 1 中显示的多周期 MIPS 数据路径,
它显示了 4 个级间寄存器:IF/ID、ID/EX 、EX/MEM 和 MEM/WB。还要考虑
图中蓝色显示的控制信号。假设 ALUOp 控制信号为
3 位。忽略未显示的控制信号(即控制转发的信号)。确定
四个级间寄存器中每一个的最小大小(以位为单位)

在此处输入图像描述

标签: architecturemips

解决方案


他们说我们将把 4 个级间块中的每一个都视为由一个“寄存器”组成,并询问每个级间的这种寄存器有多宽。

您可以相当清楚地看到 IF/ID 级间块有一个“寄存器”,它接收作为输入 - 因此保存:(a) 从指令存储器读取的指令,以及 (b) 程序计数器 +4 计算。由于这些项目 (a,b) 中的每一项都是 32 位宽,因此 IF/ID“寄存器”必须是 64 位宽,以便保存这两个值。(IF/ID 寄存器中似乎没有控制信号。)

ID/EX 级间块还接收 (a) 位程序计数器,(b) 读取数据 1 和 2,(c) 符号扩展立即数,(d)rtrd指令字段,以及 (e) 三个控制信号。因此,请推理它们的宽度并将它们相加以获得 ID/EX 级寄存器的宽度。(请注意,寄存器的 EX 部分有 3 个输出信号,并且文本中说其中一个是 3 位宽……除非另有说明,否则我们将控制信号的 1 位宽度计算在内,因为它们中的大多数都是简单的布尔值.)

总之,计算有多少位进入或离开级间寄存器,这就是那个级间的答案。(输入和输出的位数相等——寄存器只是直接从“输入”(用输入箭头在寄存器左侧绘制)和一个周期的结尾复制位,到开始时的“输出”下一个(用从寄存器右侧出来的箭头绘制的图表)。)


这张图过于简单化了。例如,为了在 EX 阶段实现旁路/转发和/或停顿,rs也需要从 ID 到 EX 进行通信,但仅rt显示rd为共享。MEM阶段还需要旁路/转发,因此也需要指令的各种寄存器字段。


推荐阅读