如何在MIPS一周期数据路径中实现指令jrlti(如果小于立即数则跳转寄存器)?

问题描述 投票:0回答:1

我无法实现jrlti指令。我无权修改ALU,因此必须保持原样。

以下是指令的定义方式:

[rs] <SignImm? PC = [rt]:PC = PC + 4

在mips单周期数据路径中处理的比较[rs] <SignImm在哪里?我是否使用ALU来处理它,如果是这样的话?我必须添加什么部分。

This is the standard datapath I'm using

This is what I tried to do

我怎么能做PC = [rt]而不是PC = PC + 4请在我试图实现指令时做出的任何错误假设上纠正我。

mips cpu-architecture
1个回答
1
投票

显然,如果您使用ALU进行比较,则不能将其用于其他任何事情,因为您处于单周期架构中,并且您必须找到另一条路径。

在SrcA(RD1)和Imm16之间进行比较。因此,为了跳转而写入PC的寄存器在RD2中。

RD2和PC之间目前没有路径。来自RD2的唯一路径导致ALU的存储器或输入。所以你必须在RD2和PC之间添加一条路径。

有几种方法可以做到这一点,但更简单的是在PCBranch之后添加一个多路复用器,它将驱动PC为分支计算的地址或这个新指令的寄存器RD2。在这两种情况下,相同的信号(ALU比较的输出)用于控制将哪个值写入PC。

还必须在控制单元上进行修改,并附加一个信号来控制该多路复用器。

© www.soinside.com 2019 - 2024. All rights reserved.