什么是非线性流水线
上图是一个例子:这是一个连接图,表示非线性流水线存在反馈回路,所以如果输入任务不合理,有可能会出现同一时刻多个任务争用同一功能段的情况。
本文所提到的相关算法理论所要解决的问题就是:通过找出流水线的最小循环周期,使安排任务不冲突。
以下介绍几个概念:
预约表
- 什么是预约表?
它就是对一段给定流水线的工作流程的预测,下图是一个例子,对应于图4.21的流水线:
值得注意的是,
- 因为非线性流水线在某一具有回路的功能段的选择是多样的,所以同一个非线性流水线连接图对应的预约表不是唯一的,以上仅仅是其中一种可能的情况;
- 另外,因为表格只表示了结果,没有显示出过程,所以同一张预约表可能会对应多个不同的非线性流水线。
禁止表
禁止表:由重复使用同一功能的节拍间隔数构成(也就是预约表中某一个功能端的两个√对应的时刻的差值),它其实是一个集合。
上述例子的禁止表是{1,5,6,8}。
冲突向量
禁止表体现了哪些间隔是不应该被使用的,也就是有冲突的 ,把这些变成位表示就是冲突向量。从右往左分别表示1,2,3,4...,某位置1表示有冲突,置0表示无冲突。
比如,由禁止表得到初始冲突向量为:10110001。
状态转移图
如图是一个状态转移图。
每一个结点表示的是一个冲突向量,有向边有权重j,表示从前一个冲突向量隔j拍会得到后一个冲突向量。
具体计算思路如下:
- 间隔j的取值可由初始冲突向量中的0的位置得知
- 对于每一个冲突向量,将其逻辑右移j位(即开头补上j个0,省略末尾j位)后与初始冲突向量进行或运算,即可得到新的冲突向量。
由此可以得到状态转移图:
图中从C0出发又回到C0的一条完整路径被称为一种可行的调度方案。
调度方案整理如下:
对于其中的(3,4)和(4,3),一位大佬说可以这么理解:
存在这样的一个循环 3 4 3 4 3 4 ...... 7,因为可以无穷循环,所以可以把它近似的等价为 3 4;4 3同理。
(3.4)和(4,3)的平均间隔拍数最小,但(3,4)更紧凑,所以可认为(3,4)是最佳调度方案。
对应流水线时空图如下:
至此,与非线性流水线调度相关的理论就结束了。