我无法实现jrlti指令。我无权修改ALU,因此必须保持原样。
以下是指令的定义方式:
[rs] <SignImm? PC = [rt]:PC = PC + 4
在mips单周期数据路径中处理的比较[rs] <SignImm在哪里?我是否使用ALU来处理它,如果是这样的话?我必须添加什么部分。
我怎么能做PC = [rt]而不是PC = PC + 4请在我试图实现指令时做出的任何错误假设上纠正我。
显然,如果您使用ALU进行比较,则不能将其用于其他任何事情,因为您处于单周期架构中,并且您必须找到另一条路径。
在SrcA(RD1)和Imm16之间进行比较。因此,为了跳转而写入PC的寄存器在RD2中。
RD2和PC之间目前没有路径。来自RD2的唯一路径导致ALU的存储器或输入。所以你必须在RD2和PC之间添加一条路径。
有几种方法可以做到这一点,但更简单的是在PCBranch之后添加一个多路复用器,它将驱动PC为分支计算的地址或这个新指令的寄存器RD2。在这两种情况下,相同的信号(ALU比较的输出)用于控制将哪个值写入PC。
还必须在控制单元上进行修改,并附加一个信号来控制该多路复用器。