向量体系结构
向量计算方式
![](https://img2022.cnblogs.com/blog/2772093/202208/2772093-20220803132344683-1589316238.jpg)
向量专用特殊寄存器
- 向量长度寄存器 VL
是一个长度为 64 位的寄存器,每一位对应于向量寄存器的一个单元。 控制着所有向量运算的长度,包括 ld / st.
作用 : 将软件层程序中实际向量长度 N 与硬件层向量寄存器中的元素数目 64 相适配。
- 向量屏蔽寄存器 VM
当向量的长度小于 64 时,或者条件语句控制下对向量某些元素进行单独运算的时候使用。
VMIPS向量指令格式
![](https://img2022.cnblogs.com/blog/2772093/202208/2772093-20220803132428839-1654110008.jpg)
向量体系结构的相关概念
- 循环间相关
如果各论循环之间存在相关性,则成为循环间相关,否则为循环间无关。
- 可向量化
针对一组 MIPS 指令描述的循环,如果满足循环间无关,则循环称可向量化的,编译器可为其生成向量指令。
- 指令编队
由一组不包含结构冒险的向量指令组成,一个编队中的所有向量指令在硬件条件允许的时候可以并行执行。
什么是不包含结构冒险 : 不可以抢占同一硬件资源。如 : 加法ALU 乘法ALU 等
向量体系结构的性能优化
- 多车道技术
财大气粗之多加ALU
- 链接技术
将流水线的思想引入向量执行过程,对两条流水线进行联合控制,改变优化后面的功能需要等到前一个功能的n个结果都产生才能开始的情况,改进为只需要等到前一个功能的第一个结果产生就可以开始,即向量数据的生产与向量数据的消费进行延迟的重叠。
1 )链接技术的例题 :
![](https://img2022.cnblogs.com/blog/2772093/202208/2772093-20220803132501312-1808564356.jpg)
![](https://img2022.cnblogs.com/blog/2772093/202208/2772093-20220803132523328-1237771691.jpg)
2 )进行向量链接的要求 :
a. 无向量寄存器使用冲突和无功能部件使用冲突。
b. 只有当前一条指令的第一个结果元素送入结果向量寄存器的那一个时钟周期才可以进行链接。
就上面那个流水线建立
c. 如果两个源操作数都需要之前的指令来提供的话,它们到达的时间必须相等。
d. 链接指令的向量长度必须相等。
e. 一般都是在向量分组的内部进行链接计算
- 编队技术
概念 : 几条可以在同一个时钟周期内一起开始执行的向量指令集合称为一个编队;
什么样的向量可以在同一个时钟周期内一起执行 ? :不存在结构冲突、数据冲突(或者存在数据冲突但是可以链接)
例题 :
- 分段开采技术
定义 : 当向量的长度N大于向量寄存器的长度n时,必须把长向量N分成长度固定为n的段,然后循环分段处理,每一次循环只处理一个向量段。这种技术称为分段开采技术。
GPU体系结构
向量体系结构和GPU体结构的区别
向量体系结构 : 指令流水线深 , ALU宽度窄。单次流水后能处理更多数据,掩盖不必要的流水线时间。
GPU结构 : 指令流水线浅,ALU宽度宽。流水本身比较简单,直接对更多的数据进行并行计算,同一时刻处理更多数据。
GPGPU (General Purpose GPU)的优势
-
解放了程序员,程序员不需要再去学习图形处理的概念,降低了编程序的复杂度。
-
开始的GPU,其中的硬件都是为了图形图像的处理设置的,没有随机访问、内存读写等概念,因此如果用于科学计算,需程序员自行编写程序实现。在发展为GPGPU的时候,增加了相应的硬件。
-
打通了CPU内存 和 GPU显存,实现了统一的地址空间。
-
开始支持高精度的科学运算,比如知识双精度浮点数运算,并加入了科学计算常用的处理单元,如sin, cos等。