SIMD 和 SSE 有什么区别?

Mr.*_*rey 3 x86 simd

我很困惑,SIMD 和 SSE、SSE2、SSE3、AVX 等有什么区别?

根据我的知识和研究,SIMD 是允许单个指令对多个数据进行操作的架构,而 SSE、AVX 是实现 SIMD 架构的指令集。

并且每种架构的向量大小之间是否存在差异,例如 SSE 有 128 位,而 AVX 有 256 位?如果底层的 SIMD 架构是相同的(我认为),那么不同的 ISA 如何具有不同的向量大小?

我不确定这是否属实,有人可以向我详细解释实际发生的情况吗?

Mue*_*ito 5

维基百科页面 ( http://en.m.wikipedia.org/wiki/SIMD ) 很好地解释了 SIMD 以及实现它的指令集。

单指令多数据(SIMD)是弗林分类法中的一类并行计算机。它描述了具有多个处理元件的计算机,它们同时对多个数据点执行相同的操作。

SIMD 是“概念”,SSE/AVX 是该概念的实现。所有的 SIMD 指令集都只是 CPU 可以在多个数据点上执行的一组指令。只要CPU支持执行指令,那么多个SIMD指令集共存是可行的,无论数据大小。