我正在尝试对单周期MIPS处理器实现jr(跳转寄存器)指令支持。在下图中,我绘制了一个简单的多路复用器,允许在正常的链式PC或指令(jr)地址之间进行选择。
如何知道指令是JR以将多路复用器选择设置为' 1'?我已经完成了跳转和jump_and_link(虽然图片没有显示,因为我现在手头没有我的项目),并控制它们,我只检查OP代码在主控件中为10(跳转)或11(jal),然后将多路复用器设置为' 1'。但我认为我不能对jr做同样的事情,因为指令布局是不同的。
答案 0 :(得分:7)
JR
指令的操作码有Instruction[31:26] == 0
(特殊)和Instruction[5:0] == 0x08 (JR).
您需要查看这两个位位置以确定这是JR
指令。图表上的Control
块需要额外输入Instruction[5:0].
rs
中的Instruction[25:21]
字段选择此指令的源寄存器。当执行rs
指令时,需要将PC分配给JR
。
答案 1 :(得分:0)
我认为你可以通过在Jump mux之前实现JR mux来提高硬件性能,因为JR mux不依赖于Jump sel mux输出的pcnext。