简单的多周期MIPS I CPU设计(六)—— 流水线

本文探讨了单周期CPU存在的资源浪费问题,并介绍了多周期CPU中的指令执行方式,通过流水线技术提高硬件资源利用率。通过示例说明了数据冒险和控制冒险的情况及解决策略,同时涉及整数乘除法和浮点运算单元的设计。
摘要由CSDN通过智能技术生成

上一篇:寄存器重命名
下一篇:分支预测

单周期CPU问题

早期的RISC CPU采用了简单的单周期执行模式,也就是说每个时钟周期只执行一条指令。这样做的好处是设计简单:CPU只需要一条一条指令执行,在上一条指令完全执行完成之后再执行下一条指令。如果从软件设计的角度来看这个设计的话,也就是单线程程序了。我们在设计单线程程序时只需要考虑指令间的逻辑顺序就可以了。相对地,我们在设计多线程程序时就需要考虑多个线程之间的操作顺序问题,可能某个线程A在计算到某一步时需要线程B的中间结果,如果A执行得比B快,那么A就需要等待B,如果A执行得比B慢,那么A就需要找到B之前算出来的结果放在哪里,再把数据取出来。

而对于多核CPU,一个计算任务只通过一个线程执行,和通过多个线程执行的效率显然是有差别的(如果实现计算任务的程序对多核CPU优化比较到位)。而且这样做能充分利用多核CPU的硬件资源而不导致浪费。

那么我们回到CPU设计上,如果我们等待一条指令完全执行完成了以后再执行下一条指令,那么这会导致硬件资源的浪费。对于单周期CPU,指令的执行过程将是5个步骤依次执行。当指令执行到某个步骤时,剩下4个步骤的硬件资源将被闲置(由于我们会在电路中大量使用触发器,而触发器是属于耗能比较大的器件,因此充分利用硬件资源还能够降低我们设计的CPU的功耗,提升能耗比)。假定这里的单周期CPU每个阶段的执行占用一个时钟周期,如果提供了500MHz的时钟,那么这个CPU最多只能有100MHz的指令执行频率,每条指令执行需要的时钟周期数CPI(也就是执行一条指令平均需要的周期数)在最好的情况下只有5。同频率下,单周期CPU的指令执行数比多周期的少,效率也就低。

因此,充分利用硬件资源提升CPU的计算速度和降低能耗比是很有必要的。

指令执行方式

执行过程图示

分为五阶段的流水线

上图中,横坐标为时间,向右为正方向,表示时间的增加;纵坐标为指令的执行顺序,正方向向下,沿着正方向指令的执行次序更晚。我们在理想情况下执行了5条指令(每行表示一条指令的执行过程),可以看到每过一个时钟周期就会有一条新指令开始执行(进入IF阶段)。我们在时间段1时只有第一条指令在IF阶段,时间段2是第一条指令进入了ID阶段,又有一条新指令进入IF阶段,时间段5时每个阶段的硬件资源都有指令在执行,此时硬件利用率最高(100\%)。时刻9后指令全部执行完成。

\paragraph{分析} 以上就是多周期CPU提升硬件资源利用效率的方法,我们将一条指令分成5个阶段,那么每条指令只错开一个阶段的执行之间开始执行,就不会发生同时使用某个硬件资源的状况,从而使得指令的执行像是在“并行”执行一样(虽然和并行有根本区别),时间段5同时有5条指令在执行。如果是单周期的CPU,这5条指令需要 5×5=25

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值