《大话处理器》连载——微架构(2) 顺溜流水线的深入分析
2011-08-04 22:41
393 查看
在上一节中,顺溜已经告诉了我们流水线的基本概念,顺溜将整个射击过程分成了2个步骤(术语称之为节拍),两个步骤可以并行起来执行,只是时间上进行了些许的错位,这就是流水线的本质。
这条流水线被划分成了2个节拍,也就是2级流水线,于是我们引出了流水线的第一个问题:流水线级数。
众所周知,Intel处理器的流水线级数要远高于ARM、DSP等嵌入式处理器,那么流水线级数更多,有什么好处呢?
还是以顺溜来举例子,假设顺溜将射击的流水线划分成4个步骤:上膛1、上膛2、射击1、射击2 四步,由于整个过程需要10秒,那么每一个小步骤需要2.5秒。
射击的4级流水线
从图我们可以看出,现在顺溜每2.5秒就可以射出一颗子弹,于是一分钟可以消灭24个敌人,射击效率提高了一倍。如果换成计算机的术语,那就是处理器的工作频率可以提升一倍。现在大多数嵌入式处理器的工作频率在1G Hz 左右徘徊,Intel处理器的工作频率早已跳过了3G Hz,这和流水线的级数有密切的关系。总而言之,在不考虑其他因素的情况下,流水线级数越多,工作效率越高。
再回到顺溜的例子,细心的读者可能会发现:顺溜并不是要求一个人给自己上膛,而是要求两个人。从直觉来看,顺溜不仅仅是个神枪手,同时也是个快枪手,射击的速度是上膛速度的两倍。我们再来从数学的角度严谨分析一下,这也引出了流水线的第二个问题:流水线的效率问题。
先修改一下上一节的假设:上膛时间为10秒,射击时间为5秒。我们再来看看射击过程:
不规则的流水线示例
从图上我们可以看出,即使是顺溜射击得再快,也要等到战友将子弹上完膛,因此顺溜有一半的时间在等待,什么事情也没有做。本着能者多劳的原则,让顺溜闲着是极大的浪费,因此我们要想办法解决这个问题。
一种解决方法是将子弹上膛细分为2个步骤——上膛1和上膛2,组成3级的流水线,如下图所示:
拆分耗时较长的步骤
采用这种方式后,相当于有两个战友给顺溜上膛,一个做上膛1这个步骤,另一个做上膛2这个步骤,再加上顺溜,这三个人组成一个流水线,可以保证顺溜5秒杀一人。
不过,很多事情是很难进一步分拆的,例如上膛就不能分成2个步骤,那么这时候怎么办呢?我们可以采取如下的策略:配备2个战友给顺溜上膛,1个10秒内就可以有2把枪的子弹上膛了,在下一个10秒内,顺溜就可以射击2次,因此也能保证顺溜5秒杀一人。这也就是顺溜要求给自己配2个人装弹的原因。
给耗时步骤配置多个重复单元
上面这个例子,进一步通用化,当一个节拍的执行时间比别的节拍长时,这时候流水线的效率并不是最高,如图:
流水线的思想可以说是用在生活中的方方面面,车间流水线是它在工业上的用途之一,科学管理之父泰勒认为:科学管理理念的精髓之一就是进行流水作业。
这条流水线被划分成了2个节拍,也就是2级流水线,于是我们引出了流水线的第一个问题:流水线级数。
众所周知,Intel处理器的流水线级数要远高于ARM、DSP等嵌入式处理器,那么流水线级数更多,有什么好处呢?
还是以顺溜来举例子,假设顺溜将射击的流水线划分成4个步骤:上膛1、上膛2、射击1、射击2 四步,由于整个过程需要10秒,那么每一个小步骤需要2.5秒。
射击的4级流水线
从图我们可以看出,现在顺溜每2.5秒就可以射出一颗子弹,于是一分钟可以消灭24个敌人,射击效率提高了一倍。如果换成计算机的术语,那就是处理器的工作频率可以提升一倍。现在大多数嵌入式处理器的工作频率在1G Hz 左右徘徊,Intel处理器的工作频率早已跳过了3G Hz,这和流水线的级数有密切的关系。总而言之,在不考虑其他因素的情况下,流水线级数越多,工作效率越高。
再回到顺溜的例子,细心的读者可能会发现:顺溜并不是要求一个人给自己上膛,而是要求两个人。从直觉来看,顺溜不仅仅是个神枪手,同时也是个快枪手,射击的速度是上膛速度的两倍。我们再来从数学的角度严谨分析一下,这也引出了流水线的第二个问题:流水线的效率问题。
先修改一下上一节的假设:上膛时间为10秒,射击时间为5秒。我们再来看看射击过程:
不规则的流水线示例
从图上我们可以看出,即使是顺溜射击得再快,也要等到战友将子弹上完膛,因此顺溜有一半的时间在等待,什么事情也没有做。本着能者多劳的原则,让顺溜闲着是极大的浪费,因此我们要想办法解决这个问题。
一种解决方法是将子弹上膛细分为2个步骤——上膛1和上膛2,组成3级的流水线,如下图所示:
拆分耗时较长的步骤
采用这种方式后,相当于有两个战友给顺溜上膛,一个做上膛1这个步骤,另一个做上膛2这个步骤,再加上顺溜,这三个人组成一个流水线,可以保证顺溜5秒杀一人。
不过,很多事情是很难进一步分拆的,例如上膛就不能分成2个步骤,那么这时候怎么办呢?我们可以采取如下的策略:配备2个战友给顺溜上膛,1个10秒内就可以有2把枪的子弹上膛了,在下一个10秒内,顺溜就可以射击2次,因此也能保证顺溜5秒杀一人。这也就是顺溜要求给自己配2个人装弹的原因。
给耗时步骤配置多个重复单元
上面这个例子,进一步通用化,当一个节拍的执行时间比别的节拍长时,这时候流水线的效率并不是最高,如图:
流水线的思想可以说是用在生活中的方方面面,车间流水线是它在工业上的用途之一,科学管理之父泰勒认为:科学管理理念的精髓之一就是进行流水作业。
相关文章推荐
- 《大话处理器》连载——微架构(1) 顺溜的2级流水线
- 《大话处理器》连载——微架构(6) 流水线上的冒险——免不了磕磕绊绊
- 《大话处理器》连载——微架构(4) 史上最经典的5级流水线
- 《大话处理器》连载——微架构(8) 流水线上的冒险——控制冒险
- 《大话处理器》连载——微架构(11) 从顺序执行到乱序执行——因时制宜
- 《大话处理器》连载——微架构(12) 指令的相关
- 《大话处理器》连载——微架构(9) 分支预测——以古为镜,可以知兴替
- 《大话处理器》连载——微架构(5) DSP更深的流水线
- 《大话处理器》连载——微架构(7) 流水线上的冒险——数据冒险
- 《大话处理器》连载——微架构(19) 乱序执行总结
- 《大话处理器》连载——微架构(16) Buffer的作用——去耦合
- 《大话处理器》连载——微架构(22) Superscalar处理器实例——Intel P4 CPU
- 《大话处理器》连载——微架构(10) 分支预测实现与条件执行
- 《大话处理器》连载——微架构(13) 去数据相关和控制相关
- 《大话处理器》连载——微架构(15) 寄存器重命名
- 《大话处理器》连载——微架构(20) 处理器并行设计——Flynn分类
- 《大话处理器》连载——微架构(14) 去伪相关——让伪军投诚
- 《大话处理器》连载——微架构(21) 指令并行的“绿营”和“蓝营”
- HLS协议深入分析——时间线介绍(二)
- 深入分析Java的序列化(Serialization)