SIMD与向量架构比较

12
什么是SIMD和向量处理器之间的区别?我目前的理解是,向量处理是SIMD的一个子集。但有人告诉我,“SIMD不仅限于向量”,我不确定这意味着什么。有具体的例子吗?
另外,为什么标量架构比向量架构更受青睐?是因为它们更容易实现和编程吗?
我知道我们有SISD(普通的1核CPU)、SIMD(单/多核处理器上的SSE扩展)、MIMD(嗯……大概就像MPI一样,所以是集群!)和MISD(被认为是不切实际/不可行的)。除此之外,我读过关于向量处理和超标量架构方面的内容。还有其他新的架构我错过了需要了解吗?谢谢!
2个回答

10

弗林分类法是计算机体系结构的一种分类方式。按照弗林分类法,矢量处理器属于SIMD类别。有些架构不是矢量处理器,但也属于SIMD类别。例如连接机器和许多GPU,其中多个处理器执行相同的指令。

MMX、SSE、Altivec等都属于矢量处理和SIMD类别。有许多名称指代相同的概念:子字并行、小规模SIMD、短向量处理、寄存器中的SIMD(SWAR)或最常见的多媒体扩展。

传统的矢量处理器如CraySTAR使用较大和可变的向量大小。

超标量是实现处理器的一种方法,但它不像弗林分类法那样对其指令集做出任何声明。


4
可以从ARM Neon和ARM VFP的比较中找到一个实际的例子。前者是更经典的SIMD,在并行(或大多数情况下并行)评估2、4、8或16个项目。后者是一个浮点扩展,其被编程为顺序迭代两组连续寄存器(也许允许跳过2),例如S0..S3、S8..S11,并将结果写入S12..S15。
后一种架构使用同一指令处理可变数量(1-4)的操作,需要1-4个时钟周期来完成任务。如果该架构允许每条指令执行128个操作,系统之间的概念差异将更加明显 - 即使两个都是向量和SIMD架构。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接