完善补充了OpenMIPS的代码,实现了MIPS32指令集中的乘累加、乘累减指令,共有四条:madd、maddu、msub、msubu...
分类:
其他好文 时间:
2014-09-03 15:02:36
阅读次数:
240
乘累加、乘累减指令有4条,包括:madd、maddu、msub、msubu,实现思路:计划在流水线执行阶段采用两个时钟周期完成运算,第一个时钟周期进行乘法运算,第二个时钟周期将乘法结果与HI、LO寄存器进行加/减法。...
分类:
其他好文 时间:
2014-09-02 14:14:44
阅读次数:
339
一个人的旅行是孤单的
一个人的冬季是寒冷的
但是
一个人的处理器是骄傲的
让我们骄傲一次...
分类:
其他好文 时间:
2014-09-01 14:03:43
阅读次数:
215
因为OpenMIPS设计乘累加、乘累减、除法指令在流水线执行阶段占用多个时钟周期,因此需要暂停流水线,以等待这些多周期指令执行完毕,一种直观的实现方法是:要暂停流水线,只需保持取指令地址PC的值不变,同时保持流水线各个阶段的寄存器(也就是IF/ID、ID/EX、EX/MEM、MEM/WB模块的输出)不变。
OpenMIPS采用的是一种改进的方法:假如位于流水线第n阶段的指令需要多个时钟周期,进而请求流水线暂停,那么需保持取指令地址PC的值不变,同时保持流水线第n阶段、第n阶段之前的各个阶段的寄存器不变,而第...
分类:
其他好文 时间:
2014-08-27 00:26:36
阅读次数:
333
通过实验来检验我们修改后的代码是否实现了简单算术操作指令...
分类:
其他好文 时间:
2014-08-22 14:35:38
阅读次数:
156
为了实现简单算术指令,需要修改译码阶段的ID模块、执行阶段的EX模块,上一篇博文中已经介绍了对译码阶段ID模块的修改过程,本文继续介绍执行阶段EX模块的修改过程。...
分类:
其他好文 时间:
2014-08-21 00:13:03
阅读次数:
343
虽然简单算术操作指令的数目比较多,有15条,但实现方式都是相似的,与前几章逻辑、移位操作指令的实现方式也很类似,不需要增加新的模块、新的接口,只需要修改流水线译码阶段的ID模块、执行阶段的EX模块即可。实现思路如下。
(1)修改流水线译码阶段的ID模块,添加对上述简单算术操作指令的译码,给出运算类型alusel_o、运算子类型aluop_o、要写入的目的寄存器地址wd_o等信息,同时根据需要读取地址为rs、rt的通用寄存器的值。
(2)修改流水线执行阶段的EX模块,依据传入的信息,进行运算,得到运算结果,确...
分类:
其他好文 时间:
2014-08-20 00:01:15
阅读次数:
526
本章将实现MIPS32指令集架构定义的所有算术操作指令,共有21条,按照OpenMIPS实现这些指令的方式,可以分为三类,分别介绍如下。
(1)简单算术操作指令
共有15条,包括加法、减法、比较、乘法等指令,这些指令在流水线的执行阶段都只需要一个时钟周期,而且实现思路很直观,与第4章添加逻辑操作指令类似,只需修改译码阶段的ID模块、执行阶段的EX模块,即可实现。
(2)乘累加、乘累减指令
共有4条:乘累加madd、无符号乘累加maddu、乘累减msub、无符号乘累减msubu。其中madd、maddu要求操...
分类:
其他好文 时间:
2014-08-15 14:43:58
阅读次数:
585
本节将通过一个测试程序验证为OpenMIPS处理器添加的移动操作指令是否实现正确...
分类:
移动开发 时间:
2014-08-14 14:05:28
阅读次数:
278
自己动手写CPU,通过修改OpenMIPS,实现了MIPS32指令集架构中的移动操作指令...
分类:
移动开发 时间:
2014-08-13 14:58:26
阅读次数:
243