为了实现逻辑、移位操作与空指令(其中nop、ssnop不用特意实现,可以认为是特殊的逻辑左移指令sll),只需要修改OpenMIPS的如下两个模块。
修改译码阶段的ID模块,用以实现对上述指令的译码。
修改执行阶段的EX模块,使其按照译码结果进行运算。...
分类:
其他好文 时间:
2014-08-04 14:22:06
阅读次数:
232
MIPS32指令集架构中定义的逻辑操作指令有8条:and、andi、or、ori、xor、xori、nor、lui,其中ori指令已经实现了,本章要实现其余7条指令。
MIPS32指令集架构中定义的移位操作指令有6条:sll、sllv、sra、srav、srl、srlv。
MIPS32指令集架构中定义的空指令有2条:nop、ssnop。其中ssnop是一种特殊类型的空操作,在每个周期发射多条指令的CPU中,使用ssnop指令可以确保单独占用一个发射周期。OpenMIPS设计为标量处理器,也就是每个周期发射一...
分类:
其他好文 时间:
2014-08-01 13:37:11
阅读次数:
1166
我们在第4章实现的五级流水线结构很简单,如果按照“简单即美(Simple is Beautiful)的标准,那么我们的流水线是美的,但是不完美,因为现实往往是复杂的,一个简单的流水线是解决不了如此多的现实问题的,本节探讨的数据相关问题就是其中一个问题。在我们实现逻辑、移位操作等其它指令之前,必须先讨论这个问题,因为这个问题已经影响到测试程序的编写了。
流水线中经常有一些被称为“相关”的情况发生,它使得指令序列中下一条指令无法按照设计的时钟周期执行,这些“相关”会降低流水线的性能。流水线中的相关分为三种类型。...
分类:
其他好文 时间:
2014-07-30 14:51:39
阅读次数:
684
一、概述本文是根据整合网上资料与相关博文总结出来的关于【C/C++左移右移运算符 】的知识。二、正文(1)结合图示篇,更加简单明了。移位运算包含“逻辑移位”(logical shift)和“算术移位”(arithmetic shift)。逻辑移位:移出去的位丢弃,空缺位(vacant bit)用 0...
分类:
编程语言 时间:
2014-07-27 22:40:19
阅读次数:
297
计算机很复杂,可以听歌、看电影、上网、玩游戏,内部是怎么工作的,这个问题太可怕了,太复杂了。
计算机很简单,只有加、减、乘、除、逻辑、移位、转移、存储、加载等几类可以做的操作,太简单了。
复杂?简单?其实取决于个人对事物的认识程度,认识的越多,了解的越深刻,那么就越接近本质,而本质往往都是简单的,比如大名鼎鼎的质能方程,一个简单的式子就解释了质量与能量的关系。
计算机就是一台计算的设备,而且是一台很基础的计算设备,只能计算小学数学课堂上讲授的四则运算,再加上一些并不复杂的与、或、非等逻辑运算,其余诸如平方、...
分类:
其他好文 时间:
2014-07-08 21:12:53
阅读次数:
285