Neon, SVE 和SVE2都是SIMD(Single Instruction Multiple Data)。
Neon架构是固定128bit 矢量(vector)长度的指令集。
SVE(Scalable Vector Extension)就是支持灵活矢量长度(128-2048,以128为步长)的指令,为了HPC和ML而设计。
SVE2就是SVE和Neon的超集,SVE2继承了SVE的概念,寄存器,操作原则等等,最大的增强是功能覆盖性扩展了。 SVE2支持计算机视觉,5G,多媒体等多方面。 其实,就是增加了多条新指令。
SVE和SVE2 不是Neon的扩展(其实,这样理解也没有问题),而是重设计。 实现上是覆盖式的,支持SVE/SVE2,一定支持Neon。
我个人的理解,SVE和SVE2最大的好处是软件是灵活的,一开始就考虑到指令中vector的长度可变,因此软件一开始就支持从128到2048bits的全长度。 其次是指令设计更合理。实现,肯定是一个执行引擎,就把Neon,SVE,SVE2全覆盖了,如图。
原作者:Winnie.shao@2020
|