SIMD和矢量处理器有什么区别?我目前的理解是矢量处理是SIMD的一个子集。但我被告知“SIMD不仅限于矢量”,我不知道究竟是什么意思。有什么具体的例子吗?
此外,为什么标量体系结构优先于矢量体系结构?是因为它们更易于实施和编程吗?
我知道我们有SISD(常规1核CPU),SIMD(单核/多核处理器上的SSE扩展),MIMD(错误...大概类似MPI,我猜,所以集群!)和MISD(其中)被认为是不切实际/不可行的)。除此之外,我读过的其他一些东西是矢量处理和超标量体系结构。我错过并应该了解的任何新架构?谢谢!
答案 0 :(得分:9)
Flynn's Taxonomy是计算机体系结构的分类。通过Flynn的分类法,矢量处理属于SIMD类。有些架构不是矢量处理器,而是属于SIMD类。例子是例如多个处理器执行相同指令的Connection Machine和许多GPUs。
MMX,SSE,Altivec等属于矢量处理以及SIMD类。有许多名称指的是相同的概念:子字并行,小规模SIMD,短矢量处理,寄存器内的SIMD(SWAR)或最常见的多媒体扩展。
传统上,Cray或STAR等矢量处理器使用了较大且可变的矢量大小。
Superscalar是一种实现处理器的方法,但没有像Flynn的Taxonomy那样对其指令集做任何声明。
答案 1 :(得分:3)
从ARM Neon与ARM VFP的比较中可以找到一个实际的例子。第一种是更经典的SIMD,并行(或大多数并行)评估2,4,8或16项。另一个是浮点扩展,被编程为顺序迭代两组连续寄存器(可能允许跳过2),例如。 S0..S3,S8..S11并将结果写入S12..S15。
后一种体系结构使用相同的指令处理可变数(1-4)运算,使用1-4个时钟周期来完成任务。如果架构允许每条指令执行128次操作,那么系统之间的概念差异将更加清晰 - 即使两者都是矢量和SIMD架构。