VPU vs FPU vs GPU vs ALU

VPU vs FPU vs GPU vs ALU

我想更好地理解向量处理图形 (VPU)、浮点单元、图形处理单元和算术逻辑单元之间的区别。

我知道 CPU 内部有一个 FPU 和一个 ALU,但是 GPU 也是这样吗?

那么 VPU 和 GPU 呢?他们不应该是同一件事吗?里面有没有ALUs/FPUs?

VPU 支持超大尺寸或可变尺寸的向量。特别是,向量指令从寄存器(有时称为向量长度寄存器)或内存位置获取向量中元素的数量。此外,通常支持向量掩码以选择性地处理向量的元素。 VPU 通常有专门的寄存器来保存向量长度和掩码。请参阅 Cray vector instructions for example. This is in contrast to SIMD 说明,它支持小向量或 fixed-size 向量(并且可能对掩码的支持有限)。

虽然 VPU 的指令集包括向量指令,但这些指令的实现或执行方式可能无法完全并行化,甚至可能类似于标量处理器(在循环中一次处理一个元素)。

GPU 可能是也可能不是 VPU,具体取决于 GPU 支持的指令集。此外,VPU 可能会作为 GPU 实现,但这实际上是一个实现细节。 GPU 是大量内核(每个内核通常包含一个 ALU 和一个 FPU)和一些 VPU 和 general-purpose CPU 中不存在的特殊单元(用于图形处理)的集合。然而,大多数(如果不是全部)真正的 GPU 都不是 VPU,因为它们不支持如此强大的向量指令。将内核映射到 GPU 内核由编译器和 GPU 设备驱动程序完成。

来自 Wikipedia 的 VPU 定义指定向量必须是 one-dimensional。从历史上看,情况总是如此。另一方面,GPU 可能看起来 built-in 支持 multi-dimensional 向量,但这实际上是由编译器处理的,而不是架构。所以我不认为这是本质区别。

FPU 和 ALU 是 VPU、CPU 和 GPU 的组件。