流水线技术理解

流水线,这个词语最早出于工厂里面,是资本家为了提高产品的产量而采用的一种技术。我们姑且不去看他的定义,我们从生活中的例子理解什么是流水线技术

假如我们有很多衣服要洗,现在有一台洗衣机和一台干衣机,洗衣机用时30分钟,干衣机用时60分钟。如果洗一桶衣服,如下图所示:


很显然,总时间 = 洗衣时间 + 干衣时间 = 90 分钟

那如果洗多桶衣服呢?我们对比如下两种方案。

方案一:

很明显,这种方案的总时间为:N*90 分钟。

当然,我们也没那么傻,当干衣机在工作的时候我们为什么要让洗衣机闲着呢?根据这样的想法,我们得到方案二:

可以很容易得到,方案二所需总时间 = N* 干衣时间 + 洗衣时间= ( N*60 + 30 )分钟。

通过上面两个例子的对比,我们可以清楚发现方案二的好处,明显提升了系统的吞吐量,而这种提升的背后正是流水线技术的应用。那么在我们的数字电路中如何应用流水线技术呢?在继续这个问题之前,我们先了解两个概念:延时吞吐量

延时:是指从某个输入到与该输入相关联的输出变成有效之间的延迟时间。

方案一洗衣服的延时= 90分钟
方案二洗衣服的延时=120分钟(为什么是120分钟,请读者仔细思考)

吞吐量:输出或者输入的处理速率。

方案一洗衣服的吞吐量= 1/(90分钟)
方案二洗衣服的吞吐量=1/(60分钟)(为什么是60分钟,请读者仔细思考)

好,言归正传,再返回到电路上。如下图所示的组合逻辑电路:

电路的延时为t,吞吐量为1/t。工作时序如下图示意:

对于上面的电路,当H执行计算的时候,F和G是处于闲置状态的,仅仅为保证各自的输出不变,那么我们能否让F、G走出这种状态而充分利用他们呢?如果让F和G走出了闲置状态,那么如何保证他们的输出不变呢?思考后,我们很容易联想到数电中的寄存器,没错,通过寄存器来保证输出的不变,于是我们得到电路如下:

假定F、G、H的传播延迟分别为15、20、25ns,我们使用的是理想的0延迟寄存器,于是我们可以得到相关的延时和吞吐量
未加寄存器: 延时45 , 吞吐量1/45 ,加了寄存器:延时50,吞吐量 1/25。在H对Xi执行计算的过程中,F和G就可以工作在输入Xi+1上,即可以接受Xi+1时候的输入,这时H的计算和F、G的接收就是并行的了。对比前面的洗衣机例子,这里正是一个流水线的应用,而且是一个二阶流水线,至于为什么是二阶流水线,接着往下看。

下面我们再换个角度看看流水线,也就是流水线时空图,如下:

在谈这张图之前,我们再看一个概念:K阶流水线。

K阶段流水线(“K流水线”)是一个非循环电路,对应于从输入到输出的每一条路径恰好有K个寄存器。因此前面的电路为啥是2阶应该清楚了。通时,我们还可以知道,1、组合逻辑电路是0阶流水线;2、在K阶段流水线中,每个流水线阶段的输出(而不是输入)都有一个寄存器。好,我们接着谈上面的流水线时空图。

通过流水线时空图,我们观察到,当流水线每个阶段都开始工作后,每一个时钟周期都会有一个结果的输出,也就是说K阶段流水线的吞吐量即是时钟频率,而K阶流水线的延时是对所有寄存器公用的时钟周期的K倍
同时我们也可以观察到,所有的流水级都只花费一个时钟周期的时间,因此,时钟周期必须能够满足最慢操作的执行需要
因此我们可以得出
指令执行时间(流水线)=指令执行时间(非流水线)/流水线级数
即在理想情况和有大量指令的情况下,流水线所带来的加速比与流水线的级数近似相同。例如一个5级流水线能够获得的加速比接近于5。

而这样一种技术如果用到电脑里面岂不能提高性能啦?没错,我们现在的电脑里面跑的CPU就用到了流水线技术,通过这样的一种技术,提高了指令的吞吐率,从而带来了性能的提高。注意:流水线所带来的性能提高是通过增加指令的吞吐率,而不是减少单条指令的执行时间实现的。为什么呢?这就好像洗衣服,干衣服用的时间没变,但是最终的产出却是增加了的道理一样。

文章出处:http://www.brieftime.net/articles/tag/%E6%B5%81%E6%B0%B4%E7%BA%BF%E6%8A%80%E6%9C%AF

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值