向量处理机
向量流水处理机
处理方式
计算D=A × \times ×(B+C)
-
横向(水平)处理
横向处理方式是指采用逐个求向量中各元素(分量)的方法来进行向量处理的方式。解决方法:从1到n ,先计算 b 1 + c 1 b_1+c_1 b1+c1放入 k 1 , 后 算 k 1 × a 1 存 入 d 1 k_1,后算k_1\times a_1存入d_1 k1,后算k1×a1存入d1.再按顺序依次算下去.
-
纵向方式处理
纵向处理方式是指采用对两个向量按相同操作执行完之后,再转去执行别的操作的方法来进行向量处理的方式。解决方法:从1到n ,先计算 b i + c i b_i+c_i bi+ci放入 k i , k_i, ki,即将所以加法部分先算完,后算 k i × a i k_i \times a_i ki×ai存入 d i d_i di.即算完加法后再算乘法部分
-
分组纵横处理方式
向量的长度n超出了向量寄存器组中寄存器的个数时,将该向量分成若干个组,使每组都能装得进向量寄存器组中。对组内向量元素采用纵向处理方式,而各组间则采用软件方法编制循环程序的方法依次循环处理的方式,称之为分组纵横处理方式。
总结:向量横向处理方式是向量的处理方式,但不是向量流水处理方式,属于标量方式
提高向量流水处理的性能
通过并行技术性能
向量寄存器组 v i v_i vi特点
①向量寄存器组Vi在同一时钟周期内可接收一个结果分量并为下次操作再提供一个源分量。
②每个Vi组都有单独的总线连到各功能部件上,而每个功能部件也各有把运算结果送回向量寄存器组的输出总线。
两种冲突
-
Vi冲突指
并行工作的各向量指令的源向量或结果向量使用了相同的Vi。例如 V4←V1+V2 V5←V1∧V3 这两条向量指令不能同时执行,必须在第一条向量指令执行完, 释放出V1之后,第二条向量指令才能开始执行。 由于二者的首元素下标可能不同,向量长度也可能不同,难以由V1同时提供两条指令所需要的源向量。
-
功能部件冲突
-
同一个功能部件被一条以上的要求并行工作的向量指令所使用。
例如 V4←V2*V3 V5←V1*V6 这两条向量指令都需要使用浮点相乘流水功能部件, 那就需在第一条向量指令执行到计算完最后一个结果分量, 释放出功能部件之后, 第二条向量指令才能开始执行。
并行技术
只要不出现Vi冲突和功能部件冲突,各个Vi和功能部件之间都能并行工作,大大加快了向量指令的处理。
通过链接技术
链接技术:
只要不出现功能部件冲突和源向量冲突,通过链接机构可使有数据相关的向量指令仍能重叠并行处理。
例如,对前述向量运算 D=A*(B+C)
若向量长度N≤64,向量为浮点数,则在B、C取到V0、V1后,
就可用以下3条向量指令求解:(接过程如图5-33所示)
V3←存贮器(访存取A向量)
V2←V0+V1(B向量和C向量浮点加)
V4←V2*V3(浮点乘,存D向量)
由于一二条指令不存在相关,可以并行处理。结果传入第三条指令
- 链接执行
CRAY—1启动访存、把元素送往功能部件,把结果存入Vi都需要有1拍的传送延迟。 - 第一个结果分量存入V4的拍数:
此后,每拍就可取得一个结果分量存入V4,一共只需17+(N-1)拍就可以执行完这3条向量指令,获得全部结果分量。 - 建立链接的时机条件:
指令的向量长度相等
在前一条指令的第一个结果分量到达向量寄存器组并可以用作本条向量指令的源操作数时,立即启动本条指令工作而形成链。
这种链接特性实质上是把“相关通路”的思想引入到向量指令的执行过程中