流水线技术
2012-02-28 00:53:01| 分类: 计算机 | 标签: |字号大中小 订阅
从本质上讲,流水线技术是一种时间并行技术。
计算机的各个部分几乎都可以采用流水线技术:
(1)指令的执行过程可以采用流水线,称为指令流水线。
(2)运算器中的操作部件,如浮点加法器、浮点乘法器等可以采用流水线,称为操作部件流水线。
(3)访问主存的部件可以采用访存部件流水线。多个计算机之间,通过存储器连接,也可以采用流水线,称为宏流水线。
1.顺序执行方式
执行n条指令所用的时间为:
![2012年02月28日 - 海神 - 城堡之家](http://img7.ph.126.net/SGK85qGA-tyk6w0gBDr9aQ==/1347983663484615797.jpg)
如果每段时间都为t,则执行n条指令所用的时间为:T=3nt
主要优点:控制简单,节省设备
主要缺点:速度慢,功能部件的利用率低
2.一次重叠执行方式
![2012年02月28日 - 海神 - 城堡之家](http://img1.ph.126.net/WfW0E2j4S9Cncyg8DeVjkg==/2831075315773057641.jpg)
如果两个过程的时间相等,则执行n条指令的时间为: T=(2n+1)t
主要优点:
指令的执行时间缩短
功能部件的利用率明显提高
3.二次重叠执行方式
![2012年02月28日 - 海神 - 城堡之家](http://img5.ph.126.net/yaj33fN2XgKmkEEMrtYc8A==/1307732741814994825.jpg)
如果三个过程的时间相等,执行n条指令的时间为:T=3t+(n-1)t=(n+2)t
在理想情况下,处理机中同时有三条指令在执行。
处理机的结构要作比较大的改变,需要采用先行控制技术。
在理想情况下,处理机中同时有三条指令在执行。
处理机的结构要作比较大的改变,需要采用先行控制技术。
流水线的基本参数——吞吐率
吞吐率(Through Put)——在单位时间内流水线所完成的任务数量或输出的结果数。
![2012年02月28日 - 海神 - 城堡之家](http://img7.ph.126.net/6m5_pZTLKEMA0D0aS66wEA==/2391974352104432457.jpg)
其中:n为任务数,
Tk为完成n个任务所用的时间。
各段执行时间相等,输入连续任务情况下,完成n个任务需要的总时间为:
Tk=(k+n-1)?t
其中:k 为流水线的段数,?t为时钟周期。
Tk为完成n个任务所用的时间。
各段执行时间相等,输入连续任务情况下,完成n个任务需要的总时间为:
Tk=(k+n-1)?t
其中:k 为流水线的段数,?t为时钟周期。
流水线性能分析
吞吐率(throughput rate)
单位时间内流水线所完成的任务数或输出结果的数量
吞吐率(throughput rate)
单位时间内流水线所完成的任务数或输出结果的数量
加速比(speedup ratio)
完成一批任务,使用非流水线执行时间与使用流水线执行时间之比
效率(efficiency)
(指流水线的设备利用率)从时空图看,就是n个任务占用的时空区和m个段总的时空区之比
特点:
流水线有助于提高整个程序(所有任务)的吞吐率,但并没有减少每个指令(任务)的执行时间
流水线各个功能段所需时间应尽量相等。否则,时间长的功能段将成为流水线的“瓶颈”,会造成流水线的“阻塞”(Stall)
流水线开始需要“通过时间”(Fill)和最后需要“排空时间”(Drain)。流水线只有处理连续不断的任务才能发挥其效率
流水线中存在一些冲突(冒险Hazard,相关、依赖Dependence,竞争Competition)的情况,它使得下一条指令无法在预定设计的时钟周期内执行。这些冲突将降低流水线性能
主要有三种类型的冲突(相关)
结构相关(资源冲突):当指令重叠执行过程中,硬件资源满足不了指令重叠执行的要求
数据相关(数据冲突):在同时执行的多条指令中,一条指令依赖前一条指令的执行结果(数据)
控制相关(控制冲突):流水线遇到分支指令或其他改变PC值的指令
顺序作业
流水线有助于提高整个程序(所有任务)的吞吐率,但并没有减少每个指令(任务)的执行时间
流水线各个功能段所需时间应尽量相等。否则,时间长的功能段将成为流水线的“瓶颈”,会造成流水线的“阻塞”(Stall)
流水线开始需要“通过时间”(Fill)和最后需要“排空时间”(Drain)。流水线只有处理连续不断的任务才能发挥其效率
流水线中存在一些冲突(冒险Hazard,相关、依赖Dependence,竞争Competition)的情况,它使得下一条指令无法在预定设计的时钟周期内执行。这些冲突将降低流水线性能
主要有三种类型的冲突(相关)
结构相关(资源冲突):当指令重叠执行过程中,硬件资源满足不了指令重叠执行的要求
数据相关(数据冲突):在同时执行的多条指令中,一条指令依赖前一条指令的执行结果(数据)
控制相关(控制冲突):流水线遇到分支指令或其他改变PC值的指令
![2012年02月28日 - 海神 - 城堡之家](http://img8.ph.126.net/_UTF-9DKV_HtgDa6EddhuA==/3109454067739897898.jpg)
![2012年02月28日 - 海神 - 城堡之家](http://img6.ph.126.net/H9TNoU4WMQhT-C6r57kRwg==/562949953438590286.jpg)
流水线作业
![2012年02月28日 - 海神 - 城堡之家](http://img5.ph.126.net/1koM1fVRKhcKpdJSRnqvyg==/1165869353552815365.jpg)
![2012年02月28日 - 海神 - 城堡之家](http://img2.ph.126.net/K5Il2TND3EQLB9UTt6PW7g==/2536089540180291782.jpg)
流水线无法帮助解决单个任务的延迟, 有利于减少整个工作全部时间
多个任务同时操作需要不同的资源
可能的加速比=流水线的段数
流水线的速率受速度最慢的流水段的限制
流水线各段长度不均会降低加速比
充满流水线所需的时间和排空流水线所需的时间影响加速比
会由于依赖而造成阻塞
静态流水线与动态流水线静态流水线:同一段时间内,多功能流水线中的各个功能段只能按照一种固定的方式连接,实现一种固定的功能。只有连续出现同一种运算时,流水线的效率才能得到充分的发挥。
![2012年02月28日 - 海神 - 城堡之家](http://img5.ph.126.net/zE8tFbGa2dRzgEhRJflpog==/998110267433270745.jpg)
动态流水线:在同一段时间内,多功能流水线中的各段可以按照不同的方式连接,同时执行多种功能。
![2012年02月28日 - 海神 - 城堡之家](http://img9.ph.126.net/fZmqS06poOawRsiNf7d64w==/1104226333653159899.jpg)
流水线的其他分类方法按照数据表示方式:
标量流水线和向量流水线
按照控制方式:同步流水线和异步流水线
顺序流水线与乱序流水线,乱序流水线又称为无序流水线、错序流水线或异步流水线等。