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