系统结构考点之时空图及分析

本文深入探讨系统结构中的时空图概念,详细讲解如何绘制时空图、理解Δt的含义,以及如何通过时空图计算吞吐率和效率。此外,还介绍了流水线瓶颈段的改造策略,并总结了加速比的计算方法。


主要学习下如何作图

如题:2021年10月

分析

  1. 如何画这个时空图呢?
  2. 效率及实际吞吐率,怎么算来?
  3. 细分?如何提高实际吞吐率的?

基本知识

系统结构考点之重叠方式中已经对流水线的基本原理做了介绍,但显然是不能应对上述这些疑问的。

时空图意义

直观地描述流水线的工作过程

时空图如何表示的?

纵坐标表示空间,流水线的子过程(对应的就是题中的功能段)对应的是流水线的深度或称为几级;
横坐标表示时间,即各个任务在流水线中所经过的时间,题中告诉每个功能段所需要时间分为1 Δ \Delta Δ​t,2 Δ \Delta Δ​t,3 Δ \Delta Δ​t,1 Δ \Delta Δ​t;这个其实告诉,每个功能段有四个子过程。
很显然,各个指令的执行时间是不同的。

时空图的读取

读取方法是从时间起,读任务所处的每级流水线。参考下面图27

Δ \Delta Δ​t指的是什么?

这个其实是指把一条指令分解成m个时间相等的子过程,每隔 Δ \Delta Δ​t=T/m就可以一个过程。

如何画时空图呢?

不会画,那就先看个例子:

上面是子过程,所经过的时间都相等时的情形,好理解些。但像本题给出的子过程时间不相等,如何画呢?先给出第一问答案

画图的步骤:

  1. 因为有四个功能段所以流水线可画为四级的空间,也就是纵坐标就分成四段。
  2. 先画出横坐标,时间等分成10份左右,不够的话再补
  3. 确定任务1,一般画在时空线或坐标轴中间区域的就是任务,进入流水线的起点,一般就是t0,也就是原点。一般都会标出 Δ \Delta Δt,而不标t0,t1…。题目中占用一个 Δ \Delta Δt,,那么就在1级流水线片,画一个方格。
  4. 在任务1的1级流水线方格的右上角,继续画2级流水线的方格,依次在第3级与第4级流水线处分别画出所占用时间的方格。如答案所示的图。画完第4级流水线,也就代表着任务1流出流水线。
  5. 确定任务2的起点,这个起点取1级流水线任务1完成后所偏移的瓶颈子段(见下面最大吞吐率时的解释)。如题目中瓶颈子段为3 Δ \Delta Δ​t,所以在1级流水线上取任务1完成后的第3个 Δ \Delta Δ​t。这里是考试重点
  6. 确定任务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轴上的长度)
除数就是比效率少乘了个任务数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guangod

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值