流水线时空图及分析
主要学习下如何作图
如题:2021年10月
分析
- 如何画这个时空图呢?
- 效率及实际吞吐率,怎么算来?
- 细分?如何提高实际吞吐率的?
基本知识
在系统结构考点之重叠方式中已经对流水线的基本原理做了介绍,但显然是不能应对上述这些疑问的。
时空图意义
直观地描述流水线的工作过程
时空图如何表示的?
纵坐标表示空间,流水线的子过程(对应的就是题中的功能段)对应的是流水线的深度或称为几级;
横坐标表示时间,即各个任务在流水线中所经过的时间,题中告诉每个功能段所需要时间分为1
Δ
\Delta
Δt,2
Δ
\Delta
Δt,3
Δ
\Delta
Δt,1
Δ
\Delta
Δt;这个其实告诉,每个功能段有四个子过程。
很显然,各个指令的执行时间是不同的。
时空图的读取
读取方法是从时间起,读任务所处的每级流水线。参考下面图27
Δ \Delta Δt指的是什么?
这个其实是指把一条指令分解成m个时间相等的子过程,每隔 Δ \Delta Δt=T/m就可以一个过程。
如何画时空图呢?
不会画,那就先看个例子:
上面是子过程,所经过的时间都相等时的情形,好理解些。但像本题给出的子过程时间不相等,如何画呢?先给出第一问答案

画图的步骤:
- 因为有四个功能段所以流水线可画为四级的空间,也就是纵坐标就分成四段。
- 先画出横坐标,时间等分成10份左右,不够的话再补
- 确定任务1,一般画在时空线或坐标轴中间区域的就是任务,进入流水线的起点,一般就是t0,也就是原点。一般都会标出 Δ \Delta Δt,而不标t0,t1…。题目中占用一个 Δ \Delta Δt,,那么就在1级流水线片,画一个方格。
- 在任务1的1级流水线方格的右上角,继续画2级流水线的方格,依次在第3级与第4级流水线处分别画出所占用时间的方格。如答案所示的图。画完第4级流水线,也就代表着任务1流出流水线。
- 确定任务2的起点,这个起点取1级流水线任务1完成后所偏移的瓶颈子段(见下面最大吞吐率时的解释)。如题目中瓶颈子段为3 Δ \Delta Δt,所以在1级流水线上取任务1完成后的第3个 Δ \Delta Δt。这里是考试重点
- 确定任务2起点后,其他就和任务1(步骤1-4是一样的)。分别画出其他任务的流水线。
关于如何确实周期性流水线任务起点问题?(考点)
流水线中起点问题,就是确定最大流水线瓶颈子段,如题所示,最大瓶颈子段就是3
Δ
\Delta
Δt,所以第二个任务起点就输入第一个任务开始,算3个,就是从第4个时间点开始画。
如果是间隔5
Δ
\Delta
Δt,重复这样的数据流输入,那如何画第二段数据流输入呢?数据流间的最大瓶颈子段就成了5
Δ
\Delta
Δt,得从数据流的最后一个数据输入开始算5个时间,从第6个时间起才是下一个数据流的起点。
实际吞吐率
TP:指的是流水线在单位时间里能流出的任务数或结果数。
最大吞吐率:当n趋于无穷大时,每经过一个
Δ
\Delta
Δt,就完成一个任务。TP(max)=1/
Δ
\Delta
Δt,但对于任务的每段不是
Δ
\Delta
Δt的时候,最大吞吐率取决于瓶颈子段TP=1/max(
Δ
\Delta
Δt1,
Δ
\Delta
Δt2,
Δ
\Delta
Δt3,…,
Δ
\Delta
Δtn)。如本题中,四段最大的是3
Δ
\Delta
Δt,所以最大吞吐率为1/3
Δ
\Delta
Δt
m段流水线,流水线的各段经过时间均为
Δ
\Delta
Δt,完成了n个任务,完成n个任务的解释共需要时间T=m
Δ
\Delta
Δt+(n-1)
Δ
\Delta
Δt.注:m
Δ
\Delta
Δt:表示第1个任务需要的时间,随后就是每经过一个
Δ
\Delta
Δt流水线就流出一个任务。
则TP=n/T=n / (m
Δ
\Delta
Δt+(n-1)
Δ
\Delta
Δt.) 需要记忆的点,任务数n永不变,变的只是m,第一个任务所需要的时间,瓶颈段时间
所以第三问答案为:这里m,已经变成了7了,不再是原来的4
TP=50 /(7+49)
Δ
\Delta
Δt = 25/28
Δ
\Delta
Δt\
这只是提供了一计算流水线吞吐率的方法,如果要是流水线各段经过的时间不相同时,如何计算吞吐率呢?(这也是本题的考点)
公式为:TP = n /
∑
\sum
∑i=1m
Δ
\Delta
Δt i + (n-1)max(
Δ
\Delta
Δt1,
Δ
\Delta
Δt2,
Δ
\Delta
Δt3,…,
Δ
\Delta
Δtm)
第二问答案
就拿本题来说,完成了n个任务,完成n个任务解释共需要:第1个任务需要
∑
\sum
∑i=1m也就是每个任务子过程一共经过了(1+2+3+1)
Δ
\Delta
Δt=7
Δ
\Delta
Δt。随后就是每个瓶颈子段时间,流水线流出一个任务,所以是(n-1)3
Δ
\Delta
Δt.
将n=50代入,即可得:50 / [(7+147)
Δ
\Delta
Δt]
从时空图算吞吐率
根据吞吐率的计算公式:TP=n/T=n / (m Δ \Delta Δt+(n-1) Δ \Delta Δt.) ;//T实际上就是x轴的对应最后数据流的一个数结束的长度,所以如果任务数在图中能够完全表示的话,实际吞吐率就是x轴的长度分之任务数
瓶颈段改造
有两种方法:
瓶颈段再细分
相当于把瓶颈段(时间最长的流水线),再分成几个小的段。增加了流水线的数量,也就是增加的m.本质是时间重复。
瓶颈段并联法
设置多个瓶颈段。当进行到瓶颈段时,第一个任务进第一个瓶颈段,第二个任务进第二个瓶颈段…依次进入。也是增加了m.本质是资源重复。
时空图如下:
也就说到了瓶颈段时,会同时出现多个并行的任务1,并行的任务2.....
效率
效率
η
\eta
η指流水线中设备的实际使用时间占整个运行时间之比。
效率
η
\eta
η = n个任务实际占用的时空图 / k个段总的时空图 =T0 / kTk
从时空图计算效率
在时空图中,任务的实际使用的时间如何看呢?
从流水线的产品线方向看(也就是中间部分,斜上完成一个任务的时间),任务都是斜线一个一个执行的,那就是实际使用时间,所以只要知道一个任务所用的时间就可以知道实际使用的时间。从时间方向上看实际使用的时间没有减去重叠部分时间。脑补下工厂实际流水的情形,就是一条流水线上多个人只组装一个产品的时间。虽然这里说的是实际使用时间,但并不是真正“实际”运行时间,而只是抽象出来方便计算的时间,这是要与下面的整个运行时间整体来看,就是同时扩大一个相同的值,所以还是“实际”用时。
整个运行时间如何看呢?
还是从产品线方向看,斜线向上,中间还有等待的时间没算,脑补,当第一个产品流入时,第二个工序的人,需要等待第一个工序的人完成,而最后一个工序的人相对于第一个工序的人需要等中间的n道工序的时间。如果把等待的时间都加上,就是整个产品线的运行时间。
等待的时间,如何算呢?其实就是流水线的上一个产品流完所用的时间。
所有的等待+执行时间就是流水线上所有的等待时间相加,就是 流水线x轴用时 X 几道工序y轴 面积,也就是 m
Δ
\Delta
Δt+(n-1)
Δ
\Delta
Δt. x n.
总结
效率就是 流水线实际第一条任务用时 X 任务数 / 流水线总的用时(算上重叠部分) X 几道工序;//强调第一条任务用时,是因为这里并不是实际用时,而是斜线方向的用时,脑补流水线只有一个任务时的情形。产品区只有一个任务用时 / 流水线实际用时X几道工序,也就是中间产品用时数 / 用时面积。
从公式计算效率
k:为纵坐标,表示几级流水线
Tk为横坐标,最长的那个位置值,各段时间等长的话就是k+n-1 k:第一段用时(从上往下看,一共是经历了k段,第一段流水才跑完,顺带跑了第二段的部分),n-1为剩下的用时。
各流水线时间相等,输入连续任务:
η
\eta
η = kn
Δ
\Delta
Δt / k(k+n-1)
Δ
\Delta
Δt = n/(k+n-1)
最高效率为
η
\eta
η max=lim n / (k+n-1)=1
各段时间不等,输入n个连续任务:
η
\eta
η = n*
∑
\sum
∑ k i=1
Δ
\Delta
Δt / k (
∑
\sum
∑ k i=1
Δ
\Delta
Δt + (n-1).max(
Δ
\Delta
Δt1,
Δ
\Delta
Δt2,
Δ
\Delta
Δt3,…,
Δ
\Delta
Δtn))
最高效率为:
η
\eta
η =
∑
\sum
∑ k i=1
Δ
\Delta
Δt / max(
Δ
\Delta
Δt1,
Δ
\Delta
Δt2,
Δ
\Delta
Δt3,…,
Δ
\Delta
Δtn)
n个任务实际占用的时空图,也就是n*
∑
\sum
∑ m i=1,如本题,一个任务是7
Δ
\Delta
Δt,50个任务的话,就是两者相乘。这代表实际的任务处理需要的时间
m个段总的时空图,也就是共4级,所以是4*(7
Δ
\Delta
Δt+(50-1)3
Δ
\Delta
Δt)
所以,第二问答案为:50*7
Δ
\Delta
Δt / 4*154
Δ
\Delta
Δt=0.568
扩展知识
加速比
完成一批任务,不使用流水线所用时间与使用流水线所用的时间之比。
各段时间相等情况下
s = 顺序执行时间 Tn / 流水线执行时间Tk
s = k
Δ
\Delta
Δt(一道工序所需时间) * n(n个任务) / (k+n-1)
Δ
\Delta
Δt 需要记忆的点
s = kn / k+n-1;//当n很大时,k+n-1 接近于 n ,所以,最大加速比
smax=Lim(kn / k+n-1)=k
各段时间不等,输入连续任务情况下
s= n*
∑
\sum
∑ k i=1
Δ
\Delta
Δt /
∑
\sum
∑ k i=1
Δ
\Delta
Δt+(n-1).max(
Δ
\Delta
Δt1,
Δ
\Delta
Δt2,
Δ
\Delta
Δt3,…,
Δ
\Delta
Δtn)
最大加速比为:
smax=
∑
\sum
∑ k i=1
Δ
\Delta
Δt / max(
Δ
\Delta
Δt1,
Δ
\Delta
Δt2,
Δ
\Delta
Δt3,…,
Δ
\Delta
Δtn)
加速比总结
加速比也就是 一道工序时间 * 任务数 / 流水线实际使用的时间(x轴上的长度)
除数就是比效率少乘了个任务数。
本文深入探讨系统结构中的时空图概念,详细讲解如何绘制时空图、理解Δt的含义,以及如何通过时空图计算吞吐率和效率。此外,还介绍了流水线瓶颈段的改造策略,并总结了加速比的计算方法。
6481

被折叠的 条评论
为什么被折叠?



