第四章-向量处理机

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zongza/article/details/82355316

1 向量处理机相对标量处理机的优势

向量处理机的实质是用一条指令(向量指令)发起对整个向量中的所有元素的访存操作流水化处理这些元素(因为他们需要进行的操作相同),从而减少指令获取和解码的带宽

对于向量A=[1,2,3]

A+A

代替循环

for i in len(A):
    Ai+Ai

减少了很多显式指令的获取和解码,同时后者每次+都要访问一次主存得到向量的一个元素,而向量指令访存操作是为向量中的所有元素发起的,相对于访问 cache 而言更高的访问主存的延迟被均摊了

2 向量的处理方式和对应的处理机结构

对于只包含一个运算符的向量计算(如:A+B) 纵向和横向方式没有区别
对于包含多个运算符的向量计算(如:A*(B+C)) 纵向明显比横向有优势,如减少数据相关

例如计算 A*(B-C)
1 横向 - 在标量处理机中使用

//以元素为单位 整体计算A*(B-C)
for i in len(A):
    bi-ci->qi
    ai*qi->di
//每次循环都存在数据相关

2 纵向 - 在向量处理机中使用 存储器存储器结构

//先计算B-C(只有一个运算符,纵向和横向没区别,相当于以元素为单位整体计算B-C)
for i in len(B):
    qi <-bi-ci
//再计算A*Q
for i in len(A):
    ai*qi->di
-----表示成向量指令就是---------
B-C->Q
A*Q->D
//由于先算出整体q,避免了数据相关

3 纵横向 - 在向量处理机中使用 寄存器寄存器结构

int 分段数 =2;
for k in 分段数:
    for m in len(B)/分段数:
        i = m+k*len(B)/分段数
        qi <-bi-ci
    for n in len(A)/分段数:
        i = n+k*len(B)/分段数
        ai*qi->di

3 提高向量处理机性能的常用技术

  1. 设置多个功能部件
  2. 采用链接技术,加快一串指令的执行速度(实质相当于变纵向为横向)
  3. 循环开采(分段)
  4. 多处理机

链接使用条件:

  • 没有功能部件冲突寄存器冲突
  • 链接只能发生在上一条指令的结果送入向量寄存器的那个周期
  • 前向链接了好几个结果时,这些结果的送入寄存器的时刻必须相同

4 向量处理机性能评价

5 参考

向量处理器
百度百科

猜你喜欢

转载自blog.csdn.net/zongza/article/details/82355316
今日推荐