向量计算机的特点
特定任务上计算速度快
计算密集 -> IO 密集
昂贵
Seymour Gray设计的机器
是超算的前身
向量计算机作用
军事研究。
科学研究。
天气预测。
石油探测。
工业设计。
生物信息。
在七十年代到八十年代还没有超级计算机这一概念,这时候是叫向量计算机
纵轴:时间线
横轴:功能部件
ld:load store
add:
fadd:float add
1976年Gray-1向量计算机的扩展
标量单元
Load/Store结构
向量扩展
向量寄存器。
向量指令。
执行
硬件控制
高度并行流水
不再使用虚存和数据缓存
交叉存取
Cray-1(1976)结构
存储器-存储器结构 优化为 寄存器-寄存器结构,运算部件所需要的操作数从向量寄存器中读取,运算的中间结果也写到向量寄存器中。(操作数,数值都存储在寄存器中读写)
优点
降低主存储器的流量。寄存器-寄存器结构的Cray
向量计算模型
模型结构
加法计算
对应位置相加。一条指令就可以完成多个数据相加。
存取计算
可以从Memory中各个地方采集数据。可以按照一定的跨步取数据。相当于并行加载数据。
Load相当于收集操作。
Store相当于散列操作。
向量ISA特点
指令紧凑简洁:单指令流多操作(包含程序加工和控制操作)
可表达性好:
-
-
-
- N个操作相互独立
- 使用相同的功能单元
- 以前一个指令相同的方式访问寄存器。(相当于操作复制多份)
- 可以访存连续的块。
- 以已知方式访存(指定步长load/store)
-
-
向量ISA硬件特点
-
-
- 每个指令要求更多工作。
- 隐式的程序加工操作
- 向量内没有数据依赖。
- 不连续的向量元素访存。
- 内存访问模式已知。
-
向量运算执行的特点
-
-
- 使用深度流水执行元素操作
- 简化深度流水的控制(因为一个向量内元素是独立的)
-
多个向量指令可以重叠执行
中间,1个cycle执行24个动作。竖向是时间线。横向是操作
链化执行
如果没有链,在开始下一个以来的指令是,必须等待结果中的最后一个元素被写入。
有了链化执行,只要写过中第一个元素被写入就可以开始下一个依赖操作。
向量拆解
由于向量寄存器长度限制,通常将一个长度为N的循环并行化,若N远大于向量寄存器长度,不能将每个操作都分配到一个向量寄存器中。
将N个操作拆成多组满足向量寄存器长度的片段。
要分别计算每一个片段数据的起始位置。
向量条件计算
通常向量化循环中包含条件计算
解决方法
增加一个掩码位。
向量掩码需要初始化
根据条件设置掩码位。
最后写会的时候判断一下掩码位。
向量Scatter和Gather
若想向量化带有间接地址的循环
解决方法
加载rD中数据作为索引存储在vD中。(暂存rD中数据)
根据vD中索引,从rC中间接数据到vC。(直接根据存储的rD数据作为索引,加载rC数据到vC)
加载rB到vB
做加法
存储结果
若B中所有元素都是0,vA中收集到的数据全是A0,最终收集的时候会出错。
标签:计算机,元素,寄存器,掩码,操作,数据,向量 From: https://www.cnblogs.com/RedNoseBo/p/17332278.html