VSX?VMX?阿尔蒂维克?虚拟现实?VSR?!这些PowerPC SIMD首字母缩略词之间的关系如何?

VSX?VMX?阿尔蒂维克?虚拟现实?VSR?!这些PowerPC SIMD首字母缩略词之间的关系如何?,powerpc,Powerpc,我听说过很多关于Altivec寄存器的事,但我甚至没有在网上找到它。在该文档中,我只在第6章“向量设施”和第7章“向量标量浮点运算”下找到了VR和VSR寄存器 在上,我注意到寄存器是如何进行物理分配的: 我仍然不明白为什么有两组。Altivec是遗产吗 据我所知,发生的情况如下: Altivec/VMX(矢量多媒体扩展)是PowerPc的一种古老的SIMD技术。我把它看作是旧的英特尔MMX 新的VSX(矢量标量扩展)是它的升级,但为了避免破坏与Altivec的兼容性,它们只保留了32个寄存器(

我听说过很多关于Altivec寄存器的事,但我甚至没有在网上找到它。在该文档中,我只在第6章“向量设施”和第7章“向量标量浮点运算”下找到了VR和VSR寄存器

在上,我注意到寄存器是如何进行物理分配的:

我仍然不明白为什么有两组。Altivec是遗产吗

据我所知,发生的情况如下:

  • Altivec/VMX(矢量多媒体扩展)是PowerPc的一种古老的SIMD技术。我把它看作是旧的英特尔MMX
  • 新的VSX(矢量标量扩展)是它的升级,但为了避免破坏与Altivec的兼容性,它们只保留了32个寄存器(VSR32-VSR63),Altivec操作无法处理其他VSR0-VSR31。然而,VSX指令可以在所有64个寄存器(VSR0-VSR63)上运行。我把它看作是新的英特尔SSE

  • 正确吗?

    要稍微澄清一下术语:

    • VMX是POWER/PowerPC处理器的向量支持的早期实现
    • Altivec是VMX的商标;在功能上,它应该是等效的
    • VSX是POWER处理器的向量支持的较新实现
    VSX增加了更多的向量寄存器(32个以上,但每个寄存器仍有128位)和特定于VSX的指令。正如您所发现的,编号较高的VSX寄存器与用于VMX操作的寄存器共享。因此,在一个进程中混合使用VMX和VSX指令是不可取的,除非您对寄存器分配非常小心


    我不太熟悉Intel的vector实现,但你的类比听起来对我来说是正确的。

    你说的“在单个进程中混合使用VMX和VSX指令是不明智的,除非你小心寄存器分配”是什么意思?特别是对于gcc的内联程序集,您可以使用%x修饰符来标记相同的向量寄存器需要转换为VSX,如。最多,我认为它在多线程上可能会有一些性能问题,但是单进程@gut:更重要的是,您不希望通过写入VSX寄存器(反之亦然)无意中覆盖VMX寄存器的某个值。