【问题标题】:Adding a new instruction to a MIPS向 MIPS 添加新指令
【发布时间】:2020-06-21 05:54:26
【问题描述】:

嘿,我学习软件,所以在绘制电路方面我完全是新手,我需要在此处为​​这台 MIPS 机器添加一条新指令

我必须添加的新指令 jt - 跳转表 - 是一条指令,它可以在两个寄存器指示的地址处转到内存中的值指示的地址:

jt rs, rt # PC := mem[ R[rs] + R[rt] * 8 ]

其编码如下: • 指令[31-26]:jt的操作码

• 指令 [25-21]:rs ​​注册号

• 指令 [20-16]:rt 注册号

• 指令 [15-11]:0

• 指令[10-6]:0

• 指令 [5-0]:0x20

有人可以向一个完整的初学者(我)解释在图表上添加这样一条指令的过程吗?感谢您的宝贵时间。

【问题讨论】:

  • 这根本不是一个真正的编程问题,更多的是计算机体系结构,但是您需要修改两个主要内容。 On 是您标记的“控制器”,通常称为“指令解码器”。您需要生成控制信号来输出您的rtrs 寄存器。您需要为* 8 添加选择将其中一个寄存器值左移 3 位的功能。据我所知,这就是你真正需要做的。至于这是否可以在没有更深层次的改变的情况下实现,这将取决于现有的实现。
  • @ThomasJager 哦,非常感谢您的解释,我会试试看^^

标签: assembly mips cpu cpu-architecture circuit


【解决方案1】:

根据您的指令描述,您需要使用 R 中的寄存器作为输入将新值存储到 PC。现有架构不允许将使用寄存器 rs 和 rt 值作为输入计算的地址移动到 PC 寄存器。但是,允许将 R[rs] 和 R[rt] 的值移动到输出端口 V1 和 V2。您只需将 E(enable) 设置为 1。为了进一步实现,需要添加和移位。一个简单的方法是添加一个 barrel shifter 块来移动第二个输入或 V2。 V1 和 V2*8 作为 UAL 的输入。在 UAL 中启用添加算术运算。加法器的输出进入 MD 的 Adr 输入。应该启用 MD。 MD的输出应该进入PC。由于现在 PC 有两个以上的输入,因此需要一个 2:1 多路复用器。 控制器应生成五个控制位。一个启用R(寄存器文件),一个启用3位移位,另一个启用Adder,另一个启用MD,另一个设置PC之前的Mux控制,最后一个启用PC的LD(加载)控制。

【讨论】:

  • 加法器输出必须到 MEM,作为加载地址。这是内存间接跳转,将表中的指针加载到 PC 中。显然是 MIPS64,因为它将索引缩放了 8。
  • @PeterCordes 我已经编辑了答案。感谢您的指出。
猜你喜欢
  • 1970-01-01
  • 2019-01-20
  • 2012-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-26
  • 2012-01-28
  • 1970-01-01
相关资源
最近更新 更多