VSX? VMX? AltiVec技术? VR? VSR?这些PowerPC SIMD首字母缩写词如何相互关联?

时间:2017-09-06 17:22:44

标签: powerpc

我听说过很多关于Altivec寄存器但我甚至没有在POWER9 ISA上找到它。在该文档中,我只在第6章“矢量工具”和第7章“矢量标量浮点运算”中找到VR和VSR寄存器。

On ABI我注意到寄存器是如何物理分配的: Vector Registers as Part of VSRs

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

据我所知,以下是发生的事情:

  1. Altivec / VMX(Vector Multimedia eXtensions)是PowerPc的旧SIMD技术。我认为它是旧的英特尔MMX。
  2. 新VSX(矢量标量扩展)是它的升级,但为了避免与Altivec的兼容性,它们仅保留32个寄存器(VSR32-VSR63),Altivec操作无法处理其他VSR0-VSR31。但是,VSX指令可以在所有64个寄存器(VSR0-VSR63)上运行。我将其视为新的英特尔SSE。
  3. 这是对的吗?

1 个答案:

答案 0 :(得分:3)

稍微澄清术语:

  • VMX是POWER / PowerPC处理器矢量支持的早期实现。
  • Altivec是VMX的商标;在功能上,它应该是等价的
  • VSX是POWER处理器的矢量支持的新实现

VSX增加了更多的向量寄存器(32个以上,但每个寄存器仍为128位)和VSX特定指令。如您所见,编号较高的VSX寄存器与用于VMX操作的寄存器共享。因此,在单个进程中混合使用VMX和VSX指令是不明智的,除非您注意寄存器分配。

我对英特尔的矢量实现并不太熟悉,但你的类比听起来对我来说是正确的。