OpenMIPS设计采用试商法实现除法运算,对于32位的除法,需要至少32个时钟周期才能得到除法结果。本节介绍试商法的一般过程。...
分类:
其他好文 时间:
2014-09-05 14:26:51
阅读次数:
253
乘累加、乘累减指令有4条,包括:madd、maddu、msub、msubu,实现思路:计划在流水线执行阶段采用两个时钟周期完成运算,第一个时钟周期进行乘法运算,第二个时钟周期将乘法结果与HI、LO寄存器进行加/减法。...
分类:
其他好文 时间:
2014-09-02 14:14:44
阅读次数:
339
因为OpenMIPS设计乘累加、乘累减、除法指令在流水线执行阶段占用多个时钟周期,因此需要暂停流水线,以等待这些多周期指令执行完毕,一种直观的实现方法是:要暂停流水线,只需保持取指令地址PC的值不变,同时保持流水线各个阶段的寄存器(也就是IF/ID、ID/EX、EX/MEM、MEM/WB模块的输出)不变。
OpenMIPS采用的是一种改进的方法:假如位于流水线第n阶段的指令需要多个时钟周期,进而请求流水线暂停,那么需保持取指令地址PC的值不变,同时保持流水线第n阶段、第n阶段之前的各个阶段的寄存器不变,而第...
分类:
其他好文 时间:
2014-08-27 00:26:36
阅读次数:
333
本章将实现MIPS32指令集架构定义的所有算术操作指令,共有21条,按照OpenMIPS实现这些指令的方式,可以分为三类,分别介绍如下。
(1)简单算术操作指令
共有15条,包括加法、减法、比较、乘法等指令,这些指令在流水线的执行阶段都只需要一个时钟周期,而且实现思路很直观,与第4章添加逻辑操作指令类似,只需修改译码阶段的ID模块、执行阶段的EX模块,即可实现。
(2)乘累加、乘累减指令
共有4条:乘累加madd、无符号乘累加maddu、乘累减msub、无符号乘累减msubu。其中madd、maddu要求操...
分类:
其他好文 时间:
2014-08-15 14:43:58
阅读次数:
585
前文中介绍过,软RAID其实是通过md来实现的,它本质上是一个程序,用来模拟RAID。它依赖于CPU完成,需要占用大量的CPU时钟周期,所以性能不会太好;并且它完全依赖于当前操作系统,所以一旦操作系统损坏,则很有可能影响到该RAID的使用,因此在生产环境中,不建议使用软RAID。..
分类:
其他好文 时间:
2014-08-14 03:52:18
阅读次数:
357
我们在第4章实现的五级流水线结构很简单,如果按照“简单即美(Simple is Beautiful)的标准,那么我们的流水线是美的,但是不完美,因为现实往往是复杂的,一个简单的流水线是解决不了如此多的现实问题的,本节探讨的数据相关问题就是其中一个问题。在我们实现逻辑、移位操作等其它指令之前,必须先讨论这个问题,因为这个问题已经影响到测试程序的编写了。
流水线中经常有一些被称为“相关”的情况发生,它使得指令序列中下一条指令无法按照设计的时钟周期执行,这些“相关”会降低流水线的性能。流水线中的相关分为三种类型。...
分类:
其他好文 时间:
2014-07-30 14:51:39
阅读次数:
684
多核时代不宜再用 x86 的 RDTSC 指令测试指令周期和时间陈硕Blog.csdn.net/Solstice自从 Intel Pentium 加入 RDTSC 指令以来,这条指令是 micro-benchmarking 的利器,可以以极小的代价获得高精度的 CPU 时钟周期数(Time Stam...
分类:
编程语言 时间:
2014-07-23 15:21:56
阅读次数:
347
FPGA 设计中的流量,时滞,时序
流量:每个时钟周期能够传输的数据位。
时滞:数据从输入到输出需要经历的时钟周期;
时序:两个元件之间的最大延迟,他决定系统的最高时钟速度。
1 采用流水线可以提高 流量;
例如计算X^3,迭代结构
流水线:
此时
流量=8/1
时滞=3
时序=乘法器延迟
2 如果要求低时滞则可以去掉寄存器
3 降低时序,提高...
分类:
其他好文 时间:
2014-07-17 16:31:57
阅读次数:
202
在前文介绍RISC的特点时提到一点:大量使用寄存器。这是因为寄存器的存取可以在一个时钟周期内完成,同时也简化了寻址方式。MIPS32的指令中除加载/存储指令外,都是使用寄存器或立即数作为操作数的。MIPS32中的寄存器分为两类:通用寄存器(GPR:General Purpose Register)、特殊寄存器。...
分类:
其他好文 时间:
2014-07-13 18:55:11
阅读次数:
594
计算机流水线是Intel首次在486芯片中开始使用的。流水线的工作方式就象工业生产上的装配流水线。在CPU中由5—6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5—6步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,因此提高CPU的运算速度。经典奔腾...
分类:
其他好文 时间:
2014-07-09 15:52:15
阅读次数:
201