向量处理机

什么是向量处理机

具有向量数据表示和相应向量指令的流水线处理机称为向量流水线处理机,也称向量处理机。
与之对应的是标量处理机,不支持向量数据表示,没有提供向量指令。

三种处理方式

对于标量情况下的计算我们十分熟悉,举例来说

for(i = 1;i <= 10;i++)
d[i] = a[i]*(b[i]+c[i])

水平处理方式

  • 依次计算向量k和d的每个元素
    … …

k[i] = b[i] + c[i]
d[i]= k[i] * a[i]
… …

  • 循环的每个迭代(iteration)中有1次数据相关,1次控制相关,需要2次功能切换

这就是一般标量计算下常用的处理方式

垂直处理方式

在讲这种处理方式之前,我们首先要定义向量A

$$ A = (a_{1}a_{2}a_{3}...a_{n}) $$

在向量化C语言中代码就可以描述为 D = A*( B + C )

计算向量K的每个元素之后,再计算向量D的每个元素,需要向量数据类型和向量指令的支持

K = B + C

D = K * A

分析

没有分支

仅有1次数据相关

仅需要1次功能切换

分组处理方式

  • 将长度为N的向量分为m组,每组有n个元素,组内按纵向方式处理,依次处理各组。
  • 需要m次迭代;每次迭代执行两条向量指令,有1次数据相关,需要2次功能切换
  • 需要寄存器-寄存器型操作的运算流水线
    这种技术称为向量循环或分段开采

向量处理机实例

Last modification:April 24th, 2020 at 06:17 pm
如果觉得我的文章对你有用,请随意赞赏