1.什么是向量处理机?
具有向量数据表示和相应向量指令的流水线处理机称为向量流水线处理机,也称为向量处理机。
与之对应的是标量处理机,不支持向量数据表示,没有提供向量指令。
2.实例:一个简单的FORTRAN循环程序
DO 10 i=1,N
10 d[i] = a[i]*(b[i] + c[i])
(1)水平(横向)处理方式
依次计算向量k和d的每个元素
..... ......
ki = bi + ci
di = ki * ai
..... .......
循环的每个迭代中有1次数据相关,1次控制相关,需要两次功能切换
(2)垂直(纵向)处理方式
计算向量k的每个元素之后,再计算向量d的每个元素,需要向量数据类型和向量指令的支持
K = B + C
D = K * A
没有分支;仅有1次数据相关;仅需要1次功能切换
需要存储器-存储器型操作的运算流水线
(3)分组(纵横)处理方式
将长度为N的向量分为m组,每组有n个元素,组内按纵向方式处理,依次处理各组
需要m次迭代;每次迭代执行两条向量指令,有1次数据相关,需要2次功能切换
需要寄存器-寄存器型操作的运算流水线
这种技术称为向量循环或分段开采
3.实例:
(1)
(2)
4.向量处理机的速度评价方法
由于一条指令最多得到一个结果,标量处理机通常用每秒执行多少条指令(MIPS)来衡量机器的运算速度
向量处理机用每秒取得多少浮点运算结果来衡量机器速度,以MFLOPS作为测量单位
采用MFLOPS可以忽视Load、Store、分支、测试等类型指令的影响
5.向量处理机实例分析
实例:Cray-I
1.性能指标
1GFLOPS、主频80M、向量长度64
2.基本结构
- 向量运算部件
- 向量寄存器组(V0-V7)
- 向量长度寄存器
-向量屏蔽寄存器
3.向量指令类型
V代表向量 S代表标量
功能部件冲突:同一功能部件被一条以上的并行工作向量指令所使用
Vi冲突:并行工作的各向量指令具有相同的源向量或结果向量
4.CRAY-I体系结构特点
4.1 向量寄存器与功能单元的连接通路
每个Vi块都有单独总线可连到所有向量功能部件,而每个向量功能部件也各自都有把运算结果送回向量寄存器组的总线。
4.2 向量链接技术
一个向量功能部件得到的结果直接送入另一个向量功能部件的操作数寄存器时所发生的连接过程称为链接。
当两条指令出现“写后读”相关时,若它们不存在当功能部件冲突和向量寄存器(源或目的)冲突,就有可能把它们所用的功能部件头尾相连,形成一个链接流水线,进行流水处理。
链接特性实质上是把流水线“定向”的思想引入到向量执行过程的结果。
6.向量链接技术应考虑的问题
设定合适的向量功能部件和操作数寄存器
链接时机问题
-只有在前一条向量指令的第一个结果元素送入结果向量寄存器的哪一个时钟周期才可以进行链接
-只有当前一条向量指令全部执行完毕,释放相应的向量寄存器资源后才能执行后面的向量指令。
-所有可以链接执行的向量指令的向量长度应相等