标签:指令流水
流水线时空图
流水线要经过装入、充满、排空三个阶段。
静态流水线
定义:在同一时段内,只有一种任务。
例子:A*B = a1b1 + a2b2 + a3b3 + a4b4
前面四个任务是乘法,后面三个任务是加法。我们看到乘法并没有交织到加法,而是等加法执行完,再执行。
动态流水线
定义:在同一时段内,多种任务在执行(如乘法和加法同时运行)。
例子:A*B = a1b1 + a2b2 + a3b3 + a4b4
第一个黄色任务表示a1b1+a2b2,由于第二个黄色任务a3b3+a4b4需要a4b4结束后再进行,所以没有紧跟着前一个黄色任务。同理,最后一个加法,要在前两个加法结束后才能进行。
吞吐率(TP)
定义:单位时间完成的指令数(或任务数,这个任务有可能是浮点加法)。
例子:
这个例子中各功能段用时不同,受S2的制约,出现了如上图所示的空隙,最终TP计算式为:
其中tj为各段时间中最长的一段时间。
加速比
定义:串行用时与流水用时之比。
下面是加速比趋于无穷的情况,看来加速比是有上限的,且这个值接近于功能段数。
效率
定义:因为要完成每个功能段需要多个设备共同工作,在整个流水过程中,这些设备并不是一直都工作,我们让所有设备实际工作时间之和与假定整个流水过程中所有设备一直工作的时间总和之比称为效率(有点摸不着头脑,看下面的例子)。
效率计算式为:
分母m*T表示时空图中m段与T(流水时间)围成的面积,分子m*n*t0表示n个任务实际占用面积之和。
如果各段时间不相等(这个例子可以参见上面的例子):
非线性流水线的调度
对于一个任务,在它的节拍中,存在至少两个节拍使用的是同一功能段,则称它为非线性流水,如果不注意前后两个任务相隔的节拍数,很有可能发生功能段争用(如在上面吞吐量部分的时空图中,我们就不能前后两个任务相隔1拍或2拍)。为了找出这些不能使用的节拍间隔,我们引入了预约表,正如名字所示,一个任务说它在什么时候要使用哪一段,我预约了。随之而来的一些重要概念有:
简单循环 |
平均启动距离 |
(1,7) |
4 |
(3,5) |
4 |
(5,7) |
6 |
(3,5,7) |
5 |
(5,3,7) |
5 |
(5) |
5 |
标签:指令流水
原文地址:http://blog.csdn.net/bluecloudmatrix/article/details/30282751