系统结构-延迟禁止表、冲突向量、状态转移图、最小平均延迟周期性、调度方案

南大自考流程详解
自考-计算机应用专业
2020系统结构系列

在这里插入图片描述在这里插入图片描述

1、写出预约表的延迟禁止表和冲突向量C

延迟禁止表的定义:将流水线中所有各段对一个任务流过时会争用同一段的节拍间隔数汇集在一起,构成一个延迟禁止表F。
这是什么意思呢?
题目中的五段,你可以想象成五个商家。卖冬瓜的,卖西瓜的,卖南瓜的,卖北瓜的,卖苹果的。
现在小红的任务是,9分钟完成,第1分钟买冬瓜,第2分钟买西瓜,然后是3西瓜,4南瓜,5北瓜,6北瓜,7同时买西瓜和苹果,8苹果,9冬瓜。
别管为什么不一起买,就是打比方。
然后小绿来了,他的任务和小红一样。
他能和小红相隔0分钟去执行任务吗?显然不能,第1分钟卖冬瓜的老大哥被小红霸占着呢。小绿只能等着。
在这里插入图片描述
他能和小红相隔1分钟去执行任务吗?不能,到第三分钟的时候,他会和小红再次冲突。
在这里插入图片描述
他能和小红相隔2分钟去执行任务吗?竖着来看,这样是可以的,每分钟他们都可以做自己的事情,没有任何冲突。
在这里插入图片描述
相隔三分钟也没有冲突。
在这里插入图片描述
小绿等待几分钟(拍)可以执行任务?有哪几种方案?
套用下方公式可解:
对于第1段,间隔9-1=8拍(第1拍和第9拍都要买冬瓜,所以前后相隔8拍买,冬瓜会冲突的)
对于第2段,间隔3-2=1拍、8-2=6拍、8-3=5拍
对于第4段,间隔6-5=1拍
对于第5段,间隔8-7=1拍
汇集为1,5,6,8,所以延迟禁止表F={1,5,6,8},即小绿如果和小红相隔1,5,6,8等分钟(拍)执行任务,都会冲突。这是被禁止的。

冲突向量的定义:由延迟禁止表可知,要想不争用流水线的功能段,相邻两个任务送入流水线的间隔拍数就不能为1,3,4,8拍,这些间隔拍数应当禁止使用。可以用一个有N-1位的位向量来表示后续新任务间隔各种不同拍数送入流水线时,是否会发生功能段使用的冲突,称此位向量为冲突向量C (Collison Vector)。
解:根据题意
N为拍数,N-1=9-1=8位二进制,禁止取1,其余位数为0。即第1,5,6,8位均为1.
冲突向量C =(10110001)

2、如何画出流水线状态转移图?

首先我们要知道:

初始冲突向量C ,二进制表示,值为1表示禁止相隔的拍数。0,表示可以相隔的拍数。
下一任务相隔x拍进入,可以获该任务进入后的新的冲突向量:
其值= 初始冲突向量 | 当前冲突向量右移x位

套用上述公式计算

注意:计算到什么时候呢?直到不再产生不同的冲突变量为止
第一个任务:
当前冲突向量:初始冲突向量C =(10110001)
表明第二个任务可以间隔的拍数(2,3,4,7)
第二个任务相隔2拍进入
当前冲突向量:10110001>>2=00101100,10110001 | 00101100=10111101
第三个任务可以相隔2拍或者7拍进入
第三个任务相隔2拍进入
当前冲突向量:10111101>>2=00101111,10110001 | 00101111=10111111
第四个任务只能相隔7拍进入
第四个任务相隔7拍进入
当前冲突向量:10111111>>7=00000001,10110001|00000001=10110001
注意,此时的冲突向量已经不是新的,它和第一个任务的冲突向量是相同的,所以就可以止住了。
那么我们开始画图。
首先我们有三个冲突变量,用方框表示,三个初始变量的关系也要在图上表出来。如下图所示,这就是状态转移图。但是这是不完整的,因为第2任务的时候,我们有四种选择,(2,3,4,7),而我们选择了2,假如我们选择了其它选项,就会产生不同的结果了。
在这里插入图片描述
让我们穷尽每种选择,那么最终我们画出来的图将会是:
在这里插入图片描述

3、求出最佳调度方案,最小平均延迟及流水线的最大吞吐率

调度方案如何获取,看我们绘制出来的状态转移图,从初始冲突变量开始,到不再出现新的冲突变量结束。
即,调度方案是指构成循环。(3,4)这个调度方案,执行起来就是:3,4,3,4,3,4。。。不停循环,形成一个呈周期性重复的方案。综上可得,调度方案有如下几种:
在这里插入图片描述
要想找出一种最佳调度方案使流水线的吞吐率最高,只要计算出每种调度方案的平均间隔拍数,找到其中最小即可。
由上表可知,采用先隔3拍后隔4拍轮流给流水线送入任务的调度方案是最佳的。即平均每隔3.5拍送入一个任务,吞吐率最高。尽管(4,3)调度方案平均间隔也是3.5拍,但若实际流入任务数是循环所需任务的整数倍,则其实际吞吐率会相对低些,所以不作为最佳调度方案。

意思是什么呢?
如当前题目,(3,4)这个调度方案,构成循环所需任务就是2个。假如实际流入任务数是4个,即整数倍,那么(3,4)调度方案执行起来就是3,4,3;(第一个任务直接进入的,不用间隔)
说明按(3,4)调度方案输入4个任务,全部完成时间为3+4+3+9=19(拍),实际吞吐率Tp=4/19(任务/拍)
在这里插入图片描述(4,3)调度方案执行起来就是4,3,4
说明按(4,3)调度方案输入4个任务,全部完成时间为4+3+4+9=20(拍),实际吞吐率Tp=4/20(任务/拍)。显然这个吞吐率比上面的低。
在这里插入图片描述
那为什么要强调整数倍,是因为非整数倍情况,假如实际流入任务数是3个,3+4+9=4+3+9,此时它们的实际吞吐率是一样的。
解得:
流水线的最小平均延迟为3.5拍
此时流水线的最大吞吐率Tpmax= 1/3.5(任务/拍)
同为3.5拍的(3,4)和(4,3)调度方案,又因为实际流入任务数是循环所需任务的整数倍时,(3,4)则其实际吞吐率会相对高些(上面已证),所以最佳调度方案:(3,4)

小红小绿买西瓜,但愿我没把简单的问题讲复杂

热爱编程的小水怪,欢迎关注。有错请指出,一起加油。

  • 184
    点赞
  • 254
    收藏
    觉得还不错? 一键收藏
  • 54
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 54
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值