进迭时空RISC-V Vector技术实践
在CPU核的设计中,SIMD(single instruction multiple data,单指令多数据)是一种常用的数据并行处理方式,通过一条指令同时对多个数据元素进行操作以提升处理器的计算效率和运行速度。SIMD具有广泛的应用场景,例如图像处理、科学计算、加解密、机器学习和人工智能等。随着应用对算力需求的不断提高,处理器的数据并行能力也随之增长(例如intel的SIMD ISA进化,寄存器从MMX的64-bit进化到如今AVX的512-bit)。但这种传统SIMD指令的编程模型决定了其寄存器长度(即并行度)是嵌入在指令中的,软硬件的耦合度很高,每次硬件的并行度升级都需要软件进行相应的适配,带来额外的软件工作量。
相较于传统SIMD指令,RISC-V指令集向量扩展RISC-V Vector采用了更加灵活的编程模型,在提供单指令多数据并行处理的同时,为开发者提供了更高层次的抽象,使得软硬件更加解耦,软件无需感知硬件并行度的变化,直接适配于不同的硬件配置。
我们以RISC-V Vector1.0指令集为例。从图中可以看到,对于向量寄存器宽度(VLEN)不同的硬件,同一套程序可以直接运行,唯一区别是VLEN越大的处理器每轮迭代所能够处理的元素个数越多,因此所需要的循环次数越少。此外,由于指令集所定义的element mask功能,在最后一轮迭代时,超出的元素将被无效掉,而无需类似SIMD指令那样对循环末梢的元素进行额外的特殊处理。
进迭时空RISC-V Vector技术实践
进迭时空第一代RISC-V CPU核X60和RISC-V AI核A60已完整支持RISC-V Vector 1.0扩展,并应用于RISC-V AI CPU芯片K1中。该系列核支持VLEN=256-bit的向量寄存器宽度,提供最大2x128-bit的数据并行处理能力,支持INT/FP等多种计算精度。同时,A60还基于向量寄存器扩展了符合IME标准的AI指令,提供2Tops INT8融合AI算力。
我们基于SWAN测试集对K1的向量能力进行了测试和优化。SWAN是一套用于测试向量指令在多媒体、图像处理等数据密集型应用中性能表现的基准测试集,其针对chromium、WebRTC、PDFium 等应用的软件库进行性能分析,测试涵盖了图像编解码、卷积计算、色彩空间转换等典型算法。
在SWAN的所有37个测试中,向量指令相较于标量指令均获得了明显的加速比,尤其是在低精度高并行度的测试上,向量的加速效果可达数十倍。
此外,相较于Cortex-A55的SIMD指令, 在相同频率下,K1芯片的Vector指令测试表现:
· 51%的测试项性能达到 Cortex-A55 的 1.5 倍以上(最高 2.5 倍);
· 21%的测试项性能达到 Cortex-A55 的 1~1.5 倍;
由于配置了更宽的向量寄存器和数据处理宽度,K1在数据并行度高的程序上获得了更大的收益,例如ibjpeg、skia等典型的图像测试程序的性能上甚至可达50%~100%的提升。此外,软件优化也是向量化非常重要的一个环节。程序的算法及指令调度优化会对测试结果有影响,在针对性进行优化调整之后,向量化的程度和整体性能都有明显提升,这也是RISC-V Vector指令集软件生态在实际应用场景中需要不断积累优化的地方。
想要了解及购买进迭时空产品,请前往iCEasy商城品牌专区:
https://s.iceasy.com/1Pjqx1
iCEasy商城欢迎您的到来!