流水线
流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术
常考:流水线执行时间计算、流水线吞吐率、流水线加速比、流水线效率
在计算机中的应用如图所示
流水线将空余时间充分利用,以提高工作效率
类似于分工执行,一部分只取指,一部分只分析,一部分只执行
流水线的时间计算
流水线计算公式: $$ \begin{cases} \triangle t:流水线周期\ t_k:第一条指令第k步耗时\ k:第一条指令步骤数 \end{cases} $$ $$ 一条指令执行时间+(指令条数-1)流水线周期\ 理论公式: (t_1+t_2+t_3+…t_k)+(n-1)\triangle t\ 实践公式: k*\triangle t+(n-1)*\triangle t $$
- **流水线周期:**几个操作中,执行时间最长的一段
- 执行完第一条指令后,后面每条指令耗时数值上等于流水线周期
- 计算时,先验证理论公式,没有答案时使用实践公式
- 实践公式:所有指令都给予流水线周期的时间
两类公式对比图:
例题
$$ 一条指令的执行过程可以分解为取指、分析和执行三步,\\ 取指时间t=3Δ t\ 分析时间t=2Δ t\ 执行时间t=4Δ t\的情况下,若按照串行方式执行,则全部10条指令全部执行完需要( \ \ )Δ t\ 若按流水线方式执行,流水线周期为(\ \ )Δ t ,10条全部执行需要(\ \ )Δ t $$
解析: $$ 1.首先,如果串行执行,那么10条指令执行完需要(3+2+4)Δt*10=90Δt \ 2.由题可知,流水线周期为最长的一步,即分析时间4Δt.\ 执行十条所需时间为 (3+2+4)Δt+(10-1)*4Δt=45Δt $$
超标量流水线
如图
这是一个由两条流水线组成的超标量流水线,它的度为2,意味着它可以同时进行两个操作
若有10条指令,只需要5条的执行时间
相当于多了一条生产线
流水线吞吐率
单位时间流水线完成的任务数
基本公式:
$$ TP= \frac{指令条数}{流水线执行时间} $$
最大吞吐率公式:
$$ TP=\lim_{n \to \infty}\frac{n}{(k+n-1)Δt}=\frac{1}{Δt} $$
流水线加速比
完成同样一批任务,不使用流水线所用的时间与使用流水线的时间之比 $$ \begin{align} s=\frac{不使用流水线所用的时间}{使用流水线的时间} \end{align} $$ 加速比越高越好
流水线的效率
流水线的效率是指流水线的设备利用率,在时空图上,流水线的效率定义为n个任务占用的时空区与k个流水段总的时空区之比 $$ \begin{align} E=\frac{k个流水段的总的时空区}{n个任务占用的时空区}=\frac{一条指令执行时间n}{指令步数n条指令流水线执行时间} \end{align} $$ 例:
如图指令任务分成四步,S4进行的时间最长所以3∆t为流水线的周期
由图可得虽然运用了流水线,但是还是有许多时间片的浪费。S4任务除了第一条指令等待了三个时间片,其余时间都处于运行状态。 如图流水线效率为: $$ \begin{align} E=\frac{6Δt4}{415Δt}=40% \end{align} $$