实现为单周期MIPS增加可运行指令,以增加“按位与”and指令为例(基于logisim)
主要就只需要对控制器内部做修改,因为主电路各部分是完全具备运行条件的
修改前的控制器内部
原MIPS电路中已经包含了两种R型指令add和slt,对于是否为R型的判断前面已经有了(即通过判断OP为00时)所以无需修改
然后就是进行一个进一步是运行R性指令而不是退出的判断操作,只是多了一种情况,所以加个“或”门分支就可以了
然后呢其实增加一个按位与指令and无非就是改一下func字段的判断条件,改成and对应代码的16进制值做“比较判断”,来进一步确定是做and的R型指令(通过查找文档我们得知那个16进制值为24)
最后输出ALU_OP前多一个二选一,即and=1时输出相对应的ALU_OP值7,否则进行之前具有的add或slt运算,因而也完全不会影响原本具有的功能。
然后让我们来测试一下
我写了一段代码,如下:
addi $1,$0,15
and $3,$0,$1
and $4,$1,$1
addi $v0,$0,10
syscall
上述代码写为16进制呢,得到:
2001000f
00211824
00012024
2002000a
0000000c
预期结果:
0000 000f和0000 000f做与运算,故3号寄存器值应为0000 000f
0000 000f和0000 0000做与运算,故4号寄存器值应为0000 0000
测试截图