SIMD微架构

时间:2019-06-20 19:40:24

标签: arm vectorization simd neon

我试图了解矢量处理器和SIMD体系结构(例如ARM NEON)之间的区别。我知道这两者之间的向量寄存器长度可配置性有所不同。但是,我不确定它们的微体系结构有何不同?对于SIMD机器,是否需要与每个指令所处理的元素数量一样多的处理单元?还是像向量处理器一样,我们可以拥有比向量寄存器中的数据元素更少的处理单元数量,而只需要使用定序器在多个周期内完成一条指令?

谢谢

2 个答案:

答案 0 :(得分:2)

您可以使用较窄的硬件实现短向量SIMD(例如NEON或x86 SSE),例如,必须将每条指令解码为2种内部操作。

Intel在Pentium 3到Pentium M上使用128位SSE向量来实现这一点,其中Pentium 4和Core 2是第一个具有全角SIMD执行单元的微体系结构。

但是解码与数据无关,因此您不需要完整的微码定序器。

答案 1 :(得分:1)

  

向量处理器和SIMD之间的区别

我不知道您对向量处理器的定义,但是wikipedia说SIMD是其中的一种。

  

是否是SIMD机器需要与每个指令所处理的元素数量一样多的处理单元?

某些CPU将SIMD寄存器拆分为多个部分,并独立进行处理。英特尔奔腾III将128位SSE操作拆分为64位,AMD Zen对256位AVX指令也是如此,将其拆分为128位。

  

需要使用定序器在多个周期内完成一条指令吗?

仅仅是因为它们被分割并不意味着它们会顺序运行。所有现代CPU(包括ARM)每个内核都具有多个执行单元(EU)。 Micro-op可以在不同的EU上并行运行,但是这些EU不相等。自从我提到AMD Zen以来,here’s a link。内核每个周期可以开始执行多达10个不同的微操作:4个整数(全部可以进行加或按位运算,其中2个可以相乘/除法,其中2个可以分支),2个整数加载/存储,4个128位浮点运算(两个可以加,另两个可以相乘,两个可以AES加密)。每个周期最多可以完成16条指令,8个整数,8个浮点数。不同的微操作需要不同的周期计数。