嵌入式linux应用开发完全手册 关于pc为什么指向下两条指令的位置问题

来源:互联网 发布:如何评价列宁 知乎 编辑:程序博客网 时间:2024/04/28 15:39

流水线技术  

2012-02-28 00:53:01|  分类:计算机 |  标签:|字号 订阅

流水线(pipeline)技术是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。计算机中的流水线是把一个重复的过程分解为若干个子过程,每个子过程与其他子过程并行进行。由于这种工作方式与工厂中的生产流水线十分相似,因此称为流水线技术。
从本质上讲,流水线技术是一种时间并行技术。

计算机的各个部分几乎都可以采用流水线技术:
(1)指令的执行过程可以采用流水线,称为指令流水线。
(2)运算器中的操作部件,如浮点加法器、浮点乘法器等可以采用流水线,称为操作部件流水线。
(3)访问主存的部件可以采用访存部件流水线。多个计算机之间,通过存储器连接,也可以采用流水线,称为宏流水线。

1.顺序执行方式
执行n条指令所用的时间为:

2012年02月28日 - 海神 - 城堡之家

如果每段时间都为t,则执行n条指令所用的时间为:T=3nt
主要优点:控制简单,节省设备
主要缺点:速度慢,功能部件的利用率低

2.一次重叠执行方式

2012年02月28日 - 海神 - 城堡之家
  如果两个过程的时间相等,则执行n条指令的时间为:    T=(2n+1)t
主要优点:
指令的执行时间缩短
功能部件的利用率明显提高
3.二次重叠执行方式
2012年02月28日 - 海神 - 城堡之家
 
如果三个过程的时间相等,执行n条指令的时间为:T=3t+(n-1)t=(n+2)t
在理想情况下,处理机中同时有三条指令在执行。
处理机的结构要作比较大的改变,需要采用先行控制技术。
 
流水线的基本参数——吞吐率
吞吐率(Through Put)——在单位时间内流水线所完成的任务数量或输出的结果数。
2012年02月28日 - 海神 - 城堡之家
其中:n为任务数,
        Tk为完成n个任务所用的时间。
  各段执行时间相等,输入连续任务情况下,完成n个任务需要的总时间为:
        Tk=(k+n-1)?t
  其中:k 为流水线的段数,?t为时钟周期。
流水线性能分析
吞吐率(throughput rate)
单位时间内流水线所完成的任务数或输出结果的数量

加速比(speedup ratio)
完成一批任务,使用非流水线执行时间与使用流水线执行时间之比

效率(efficiency)
(指流水线的设备利用率)从时空图看,就是n个任务占用的时空区和m个段总的时空区之比
 
特点:
流水线有助于提高整个程序(所有任务)的吞吐率,但并没有减少每个指令(任务)的执行时间
流水线各个功能段所需时间应尽量相等。否则,时间长的功能段将成为流水线的“瓶颈”,会造成流水线的“阻塞”(Stall)
流水线开始需要“通过时间”(Fill)和最后需要“排空时间”(Drain)。流水线只有处理连续不断的任务才能发挥其效率
流水线中存在一些冲突(冒险Hazard,相关、依赖Dependence,竞争Competition)的情况,它使得下一条指令无法在预定设计的时钟周期内执行。这些冲突将降低流水线性能

主要有三种类型的冲突(相关)

结构相关(资源冲突):当指令重叠执行过程中,硬件资源满足不了指令重叠执行的要求
数据相关(数据冲突):在同时执行的多条指令中,一条指令依赖前一条指令的执行结果(数据)
控制相关(控制冲突):流水线遇到分支指令或其他改变PC值的指令

2012年02月28日 - 海神 - 城堡之家
 顺序作业
2012年02月28日 - 海神 - 城堡之家
流水线作业
 
 2012年02月28日 - 海神 - 城堡之家
2012年02月28日 - 海神 - 城堡之家
 流水线无法帮助解决单个任务的延迟, 有利于减少整个工作全部时间
多个任务同时操作需要不同的资源
可能的加速比=流水线的段数
流水线的速率受速度最慢的流水段的限制
流水线各段长度不均会降低加速比
充满流水线所需的时间和排空流水线所需的时间影响加速比
会由于依赖而造成阻塞
静态流水线与动态流水线静态流水线:同一段时间内,多功能流水线中的各个功能段只能按照一种固定的方式连接,实现一种固定的功能。只有连续出现同一种运算时,流水线的效率才能得到充分的发挥。
2012年02月28日 - 海神 - 城堡之家
 
动态流水线:在同一段时间内,多功能流水线中的各段可以按照不同的方式连接,同时执行多种功能。
2012年02月28日 - 海神 - 城堡之家
 
流水线的其他分类方法按照数据表示方式:
标量流水线和向量流水线
按照控制方式:同步流水线和异步流水线
顺序流水线与乱序流水线,乱序流水线又称为无序流水线、错序流水线或异步流水线等。