代码之家  ›  专栏  ›  技术社区  ›  gut

VSX?VMX?Altivec?虚拟现实?VSR?!这些PowerPC SIMD首字母缩略词如何相互关联?

  •  5
  • gut  · 技术社区  · 7 年前

    我听说过很多关于Altivec寄存器的事,但我甚至没有在 POWER9 ISA

    在…上 ABI 我注意到寄存器是如何进行物理分配的: Vector Registers as Part of VSRs

    我仍然不明白为什么有两组。Altivec是传统吗?

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

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

    是这样吗?

    1 回复  |  直到 7 年前
        1
  •  4
  •   Jeremy Kerr    7 年前

    稍微澄清一下术语:

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

    VSX添加了更多向量寄存器(多32个,但每个寄存器仍为128位)和VSX特定的指令。正如您所发现的,编号较高的VSX寄存器与用于VMX操作的寄存器共享。因此,在单个进程中混合VMX和VSX指令是不可取的,除非您小心寄存器分配。

    我对英特尔的矢量实现不太熟悉,但我觉得你的类比很正确。