流水线技术-向量

一、向量处理方式

1)横向处理方式
2)纵向处理方式
3)纵横处理方式

下面以计算表达式 D = A * ( B + C )

(1)横向处理方式

逐个求出结果向量的各个元素

d1=a1×(b1+c1)
d2=a2×(b2+c2)

dN=aN×(bN+cN)

逐个求D中的N个分量,先进行相加k←b1+c1,其中k为暂存单元,然后相乘d1←k×a1 。
在每个向量元素的加乘运算中,都会发生数据相关的情况,而且当采用静态流水线时,还要进行2次
乘和加功能的转换。这样共会出现N次相关和2N次功能转换。因此,这种横向加工方式只适合于标量
循环算法,不适合于向量流水处理。

(2)纵向处理方式

纵向(垂直)加工方式:先对所有元素执行一种相同的运算,再对所有元素执行另一种相同的运算。

先算:
k1=b1+c1
k2=b2+c2

kN=bN+cN
再算:
d1=a1×k1
d2=a2×k2

dN=aN×kN

在两条向量指令间仅有一次数据相关,流水线功能的切换只需一次。

(3)纵横处理方式

对向量元素分组,每个组内采用纵向加工方式,组之间采用横向加工方式。

因为向量寄存器的长度有限。当向量长度超过向量寄存器可表示的最大限度n时,就必须分组加以处理。
设向量长度为N,则:N=s×n+r
其中n≤N,r<n,n、s、r均为正整数,s为组数,r为余数(余下的部分也作为一组处理)。

第一组计算:
k1~n=b1~n+c1~n
d1~n=a1~n×k1~n
第二组计算:
kn+1~2n=bn+1~2n+cn+1~2n
dn+1~2n=an+1~2n×kn+1~2n

每组内各有两条向量指令,各组内有一次数据相关,需2次流水功能切换,需n个中间向量寄存器单元。

二、向量处理机的结构

(1)功能部件

共有12条可并行工作的单功能流水线,可分别流水地进行地址、向量、标量的各种运算。

6个单功能流水部件:整数加、逻辑运算、移位、浮点加、浮点乘和浮点迭代求倒数。

(2)向量寄存器组V

每个向量寄存器可以每拍向功能部件提供一个数据元素,或者每拍接收一个从功能部件来的结果元素。

(3)标量寄存器S和快速暂存器T

标量寄存器有8个:S0-S7,都是64位。
快速暂存器T用于在标量寄存器和存储器之间提供缓冲。

(4)向量屏蔽寄存器VM

向量屏蔽寄存器VM为64位,每一位对应于向量寄存器的一个单元。其作用是用于向量归并、压缩、还原和测试操作等。
也可用于实现对向量某些元素的单独运算。

三、提供向量处理机性能的方法

(1)设置多个功能部件,使它们并线工作

在向量处理机中,为了提高性能,通常都设置多个独立的功能部件,这些部件能并行工作,并各自
按流水方式工作,从而形成了多条并行工作的运算操作流水线。

(2)采用链接技术,加快一串向量指令的执行

链接技术是指具有先写后读相关的两条指令,在不出现功能部件冲突和源向量冲突的情况下,可以把
功能部件链接起来进行流水处理,以达到加快执行的目的。

链接技术实际上可以看成是流水线的定向技术在向量处理机中的应用。当前一个向量功能部件产生第
1个结果并送到向量寄存器的入口时,该结果立即送往下一个功能部件的入口,开始后续的向量操作,
此后依次得到的中间结果都按此处理。

要进行链接执行的向量指令的向量长度必须相等,否则无法进行链接。

(3)采用循环开采技术,加快循环的处理

当向量的长度大于向量寄存器的长度时,必须把长向量分成长度固定的段,然后循环分段处理,每
一次循环只处理一个向量段。这种技术称为分段开采技术。

(4)采用多处理机系统,进一步提高性能

四、向量处理性能的评估参数和方法

4.1 向量指令的处理时间Tvp

在向量处理机上,执行一条向量长度为n的向量指令的时间Tvp可表示为:

Tvp=Ts+Tvf+(n-1)Tc

Ts为向量流水线的建立时间,它包括向量起始地址的设置、计数器加1,条件转移指令执行等。
Tvf为向量流水线的流过时间,它是一条指令从开始译码到流过流水线得到第一个结果的时间。
Tc为流水线“瓶颈”段的执行时间。

如果不存在“瓶颈”流水段,每段的执行时间都等于一个时钟周期,则上式也可以写成:

Tvp=[s+e+(n-1)]τ

其中,s为向量流水线建立时间所需的时钟周期数,e为向量流水线流过时间所需的时钟周期数,n为向
量长度,τ为时钟周期。

一组向量操作的执行时间主要取决于下面三个因素:向量的长度、向量操作之间是否存在流水功能部件
的冲突和数据的相关性。
1)能在一个时钟周期内一起开始执行的向量指令称为一个编队。(一定不存在流水功能部件的冲突和数
据的相关性—RAW除外)
2)有冲突和相关的指令分在不同的编队。
3)一个编队的运行时间为队中耗时最长的指令运行时间

向量长度大于向量寄存器长度时,则需要分段开采。分段开采的开销由执行标量代码的开销Tloop和每个
编队的向量启动开销Tstart组成。所以向量长度为n的向量操作(程序段)的整个执行时间为:

4.2 最大性能R∞

R∞表示当向量长度为无穷大时的向量流水线的最大性能。常在评价峰值性能时使用,单位为MFLOPS。它
可表示为:

4.3 n½ 半性能长度

n½ 是指达到一半R∞值所需的向量长度。它是评价向量流水线建立时间对性能影响的参数,表示为建立流
水线而导致操作的损失。

当向量长度 n=n½ 时,表示整个向量流水处理时间中只有一半时间是在做有效操作,而另一半是浪费
掉的。通常希望向量流水线有较小的n½。
∵ Tvp =To+nTc = (s+n)Tc
∴ 当n½ =To/Tc=s时,表示一半时间在做有效操作,一半时间为消耗。

4.4 向量长度临界值nv

向量流水方式的工作速度优于标量串行方式工作时所需的向量长度临界值。该参数既衡量建立时
间,也衡量标量、向量速度比对性能的影响。