SIMD 和 SSE 有什么区别?
What's the difference between SIMD and SSE?
我很困惑,SIMD和SSE、SSE2、SSE3、AVX等有什么区别?
根据我的知识和研究,SIMD 是允许单条指令对多个数据进行操作的架构,而 SSE、AVX 是实现 SIMD 架构的指令集。
并且每个体系结构的矢量大小之间是否存在差异,例如 SSE 有 128 位而 AVX 有 256 位?如果底层 SIMD 架构相同(我认为),那么不同的 ISA 如何具有不同的向量大小?
我不确定这是否属实,有人可以向我详细解释一下到底发生了什么吗?
维基百科页面 (http://en.m.wikipedia.org/wiki/SIMD) 很好地解释了 SIMD 以及实现它的指令集。
单指令多数据 (SIMD),是 Flynn 分类法中的 class 并行计算机。它描述了具有多个处理元素的计算机,这些处理元素同时对多个数据点执行相同的操作。
SIMD是'concept',SSE/AVX是概念的实现。所有 SIMD 指令集都是 CPU 可以在多个数据点上执行的一组指令。只要CPU支持执行指令,那么无论数据大小,多个SIMD指令集共存是可行的。
我很困惑,SIMD和SSE、SSE2、SSE3、AVX等有什么区别?
根据我的知识和研究,SIMD 是允许单条指令对多个数据进行操作的架构,而 SSE、AVX 是实现 SIMD 架构的指令集。
并且每个体系结构的矢量大小之间是否存在差异,例如 SSE 有 128 位而 AVX 有 256 位?如果底层 SIMD 架构相同(我认为),那么不同的 ISA 如何具有不同的向量大小?
我不确定这是否属实,有人可以向我详细解释一下到底发生了什么吗?
维基百科页面 (http://en.m.wikipedia.org/wiki/SIMD) 很好地解释了 SIMD 以及实现它的指令集。
单指令多数据 (SIMD),是 Flynn 分类法中的 class 并行计算机。它描述了具有多个处理元素的计算机,这些处理元素同时对多个数据点执行相同的操作。
SIMD是'concept',SSE/AVX是概念的实现。所有 SIMD 指令集都是 CPU 可以在多个数据点上执行的一组指令。只要CPU支持执行指令,那么无论数据大小,多个SIMD指令集共存是可行的。