MMX vs SSE
时间线为 MMX - 3DNow! - SSE,都是 SIMD 技术。
简介
MMX 可以认为是 Matrix Math eXtension.
的缩写,主要用于对多媒体数据的性能提升。
MMX 仅支持整数运行,如果是浮点运算,需要传统的 x87 协处理器,但 MMX 和 x87 的寄存器相互重叠,所以 MMX 做大量的浮点运算时,需要频繁切换用户状态。
3DNow!的出现(AMD),就是为了解决 MMX 上浮点运算的问题,并通过向量寄存器支持浮点向量计算,将性能提升了 2 ~ 4 倍。
3DNow! is a deprecated extension to the x86 instruction set developed by Advanced Micro Devices (AMD). It adds single instruction multiple data (SIMD) instructions to the base x86 instruction set, enabling it to perform vector processing of floating-point vector operations using vector registers, which improves the performance of many graphics-intensive applications.
随后,Intel 为了争夺此市场,推出了 SSE(Streaming SIMD Extensions) 技术。通过添加额外的 XMM 寄存器和浮点指令,来解决了原来的问题。
Intel’s first IA-32 SIMD effort was the MMX instruction set. MMX had two main problems: it re-used existing x87 floating-point registers making the CPUs unable to work on both floating-point and SIMD data at the same time, and it only worked on integers. SSE floating-point instructions operate on a new independent register set, the XMM registers, and adds a few integer instructions that work on MMX registers.