系统结构之延迟禁止表
基本是空白的
如题:2020年10月
分析
还是从基础的点开始
基础知识
什么是预约表?
类似于时空图。
如果任务在第n拍要用到第k段,就在相应的第n列第k行的交点处用
- 打上对勾
什么是延迟禁止表?
根据预约表可以很容易得出一个任务使用各段所需间隔的拍数(延迟)。这些延迟构成的集合,就是一个延迟禁止表。
禁止的意思:要想不争用流水线的功能段,相邻两个任务进入流水线的拍数就不能为集合里的元素。
什么又是冲突向量??
用一个N-1位的位向量来表示后续新任务间隔各种不同的拍数送入流水线时,是否具发生功能段使用冲突,称此位向量为冲突向量C.
如何表示冲突向量
找出延迟禁止表里面最大的数,最大数是几,就写几个空的二进制位。
然后根据延迟禁止表里的数,从右到左依次填到空的二进制位里。如禁止表里有3,那就在从右到左的第3位处补1.
写到这里,基本上是可以回答第一问了:
各段分别的间隔时间如下:
S1:7-1=6 S2:5-2=3 S3:4-3=1 S4:7-4=3 S5=6-5=1;合并掉相同的项后是F={6,3,1}
初始冲突向量C=100101
第二问,什么是状态转移图?
初始冲突向量,1表示在节拍数时,会发生冲突状态。那在不会发生冲突的状态,就可以发生状态转移。剩下的问题就是如何用冲突向量表示新的状态?
1.把不发生冲突的状态先表示出来,其实就是将初始冲突向量中0位去掉,使之发生。如100101,第二位是0,那就将冲突向量右移2位。
2.再与初始冲突向量进行 或 运算,得到的就是新的状态,也就是在相隔0位的时间拍内可以调度一个新的任务。
3.得到新的状态,有0的话,继续1,2步的操作。直到都是循环起来为止。
第二问答案如下图所示:

第三问,什么是最小平均延迟??
指的是平均每隔多少拍可以调度一个任务。
如何求最小平均延迟呢?
根据上步得到的状态转移图,得出所有的循环状态(也就是调度方案),算出平均时间
(5) 5
(2,5) 3.5
(2,2,5) (2+2+5)/3= 3
(4,5) 4.5
(4) 4
所以最小的平均延迟就是3
Δ
t
\Delta t
Δt,同时,最大吞吐率就是1/3
Δ
t
\Delta t
Δt
最佳的调度方案就是(2,2,5)
扩展知识 如何根据状态转移图画流水线时空图
如题:按最佳调度方案,输入4个任务的时空图。
最佳调度方案(2,2,5)表示什么呢?
表示第1号从0开始后,第2号任务间隔2个 Δ t \Delta t Δt进入流水线,第3个任务也是间隔2个 Δ t \Delta t Δt,第4号任务间隔5个 Δ t \Delta t Δt进入流水线。相当于流水线计算最大吞吐率时,瓶颈子段最大延迟时间。
知道最佳调度方案后,如何画时空图呢?
1.根据预约表,S1段在第1拍与第7拍有任务,所以在时空图中的第1个
Δ
t
\Delta t
Δt和第7个
Δ
t
\Delta t
Δt分别画上格子。
2.根据预约表,同上,完成S2,S3,S4,S5段的任务格。并标出是任务1
3.根据任务1的时空图,分别出任务2,3,4的时空图。注意,间隔的时间是最佳调度方案来的,详见(2,2,5)表示什么?。画任务2时,S1段由于是间隔2个
Δ
t
\Delta t
Δt,所以起点位置在2,终点确定时,就是由任务1的终点+2即可。依次进行。
最后第4个任务是自己加的,画不出来的,因为起点处与任务2起点重合了,还是有问题,但思想就是这么个思想。

1226

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



