写点什么

Vector 向量计算技术与 SIMD 技术的对比

发布于: 2021 年 09 月 01 日
Vector向量计算技术与SIMD技术的对比

关键词:RISC-V 处理器 ,平头哥玄铁 CPU,RISC-V 指令集,IoT 芯片,Vector,SIMD 技术


什么是向量计算技术?什么是 SIMD 技术?它们之间有什么区别?看到这个标题的时候,可能各位读者都会有各种各样的疑问。那么本文,笔者将基于 RISC-V 指令集,尽量以简单易懂的方式,向大家介绍二者的联系和区别,并分析 RISC-V 向量计算技术的优劣。


一、   SIMD 技术简述

传统的通用处理器都是标量处理器,一条指令执行只得到一个数据结果。但对于图像、信号处理等应用,存在大量的数据并行性计算操作,这个时候,提高数据的并行性从而提高运算的性能就显得尤为重要。因此,SIMD 技术应运而生。


SIMD 的英文全称是 Single Instruction Multiple Data,即单指令流多数据技术,SIMD 的概念是相对于 SISD(Single Instruction Single Data,单指令流单数据)提出的。SIMD 技术最初通过将 64 位寄存器的数据拆分成多个 8 位、16 位、32 位的形式来实现 byte、half word、word 类型数据的并行计算;在后续,为了进一步增加计算的并行度,SIMD 技术开始通过增加寄存器位宽来满足应用对算力的需求。对于传统的 SIMD 技术,Intel 的 MMX、SSE 系列、AVX 系列,以及 ARM 的 Neon 架构都是其中的代表。



二、   向量计算技术简述

而提高数据并行性的另一种方式就是向量计算技术。与传统的 SIMD 技术一样,其也是通过扩展寄存器位宽,来增加计算的并行度;但不同的是,向量寄存器是可变长度的寄存器,而不像 SIMD 那样嵌入在操作码中。矢量技术的代表就是 RISC-VV 扩展指令集和 ARM 的 SVE 架构。


三、   Vector 向量计算技术的优势

相比于传统的 SIMD 技术,矢量计算技术是一种硬件软件更加解耦的技术,其对编程人员更加友好,是一种软硬件协同的技术典范。为何这么说呢?可以简单用下述的例子说明一下:



上述代码是分别基于 ARM Neon 指令集和 RISC-V V 指令集的典型应用程序 memory copy。对于 ARM 的代码部分,LDP 和 STP 分别为指定为 128 位宽的 load 和 store 操作,每次循环操作 96 个字节。而对于 RICS-V 的代码,上述的循环控制完全通过 vsetvli 指令以及 sub 指令实现,软件不需要显示每遍循环计算了多少数据量,仅需要给出总的数据量即可。即使硬件中矢量寄存器的长度从 128 变为 256,上述代码也不需要进行任何修改。


上述对比可以看出,由于指令集限定了数据操作位宽,那么每次硬件对并行度的扩展都意味着指令集的扩展以及代码的重写,这将增加更多额外劳动,对开发者也更不友好。然而随着处理器应用领域的不断扩大,对数据硬件并行性的需求也在不断提高,硬件架构并行度升级似乎成为一种必然趋势。纵观 Intel SIMD 指令集的发展,从 MMX 的 64 位,到 SSE 系列的 128 位,AVX、AVX2 的 256 位,以及最新的 AVX-512 的 512 位,寄存器的位宽在短短 20 年里扩大了 8 倍。这对于软件的适配来说也是不小的工作。


四、   Vector 向量计算技术的劣势

RISC-V 相比 ARM Neon 等 SIMD 指令架构来说,有着可变长、软件维护方便等优势。那是否就说明 RISC-V 的 Vector 向量架构就没有任何缺点呢?


其实不然,首先,向量架构带来更灵活的使用本身也可能带来一些负面影响。由于操作数本身不指定操作数类型,需要通过 vsetvli 指令专门设置,则当出现频繁的数据类型切换时,必然会带来更多的指令数。另外,除了操作数据类型,向量长度(VL)也是通过 vsetvli 指令非显示的设置的,在超标量乱序处理器中,若频繁的更改向量长度,则可能带来潜在的性能损失。除此之外,RISC-V V 指令集制定时间较短,相比于 ARM Neon 等发展多年的 SIMD 指令集,在指令功能的丰富性上尚有欠缺,因此,在碰到一些特定场景时,需要使用更多的指令去实现相应的功能,进一步降低了整体的性能。


五 、  小结

虽然 RISC-V 矢量技术还有不完善的地方,但瑕不掩瑜,其解决了 SIMD 技术带来的二进制不兼容问题,使同一份代码可以跑在基于 RISC-V 架构的任何矢量位宽的处理器上,这意味着软件维护成本的大大降低,对其生态的建设是具有重大意义的。而且 RISC-V 是开源架构,包括我们平头哥在内的众多团体和个人都将成为架构制定的参与者,相信在大家的集思广益下,RISC-V 向量架构会更加完善,并将 Vector 向量技术推向下一个发展高潮。


本文转自平头哥芯片开放社区(occ),更多详情请点击https://occ.t-head.cn/space?channelName=1

用户头像

还未添加个人签名 2021.08.24 加入

还未添加个人简介

评论

发布
暂无评论
Vector向量计算技术与SIMD技术的对比