Floating point GPU是否将整数和浮点向量寄存器分开?

Floating point GPU是否将整数和浮点向量寄存器分开?,floating-point,gpu,cpu-architecture,gpgpu,cpu-registers,Floating Point,Gpu,Cpu Architecture,Gpgpu,Cpu Registers,CPU寄存器组长期以来一直采用整数寄存器和浮点寄存器相分离的方式,原因包括允许指令使用较少的位指定寄存器、节省读/写端口上的资源,以及能够在物理上将寄存器组定位在更靠近各自执行单元的位置 对于向量寄存器集来说,这是正确的:MMX最初将8087浮点寄存器重新用于短整数向量,但后来的x86 CPU为短整数添加了第二组寄存器,即使假装它们是相同的寄存器会遇到一些麻烦,以防有代码意外地依赖于这些寄存器 那么现代GPU呢?他们有统一的还是单独的整数和浮点数向量寄存器组?如果是统一的,为什么它们会做出与CP

CPU寄存器组长期以来一直采用整数寄存器和浮点寄存器相分离的方式,原因包括允许指令使用较少的位指定寄存器、节省读/写端口上的资源,以及能够在物理上将寄存器组定位在更靠近各自执行单元的位置

对于向量寄存器集来说,这是正确的:MMX最初将8087浮点寄存器重新用于短整数向量,但后来的x86 CPU为短整数添加了第二组寄存器,即使假装它们是相同的寄存器会遇到一些麻烦,以防有代码意外地依赖于这些寄存器


那么现代GPU呢?他们有统一的还是单独的整数和浮点数向量寄存器组?如果是统一的,为什么它们会做出与CPU不同的选择?

即使假装它们是相同的寄存器会有一些麻烦,以防有代码意外地依赖于这些寄存器。-你在说什么?听起来您在谈论SSE添加的XMM寄存器(最初仅用于FP,但SSE2将其扩展为整数SIMD)。但这些都是独立的建筑状态;没有任何东西会假装它们是与MMX
mm0..mm7
state相同的寄存器。GPU根本没有向量寄存器;每个GPU“核心”就像CPU风格的短向量SIMD向量的一个元素。是的,我认为它们是统一的。GPU基本上只做数字运算,在吞吐量优化的内核中。CPU更关心延迟,因为他们的一些工作负载有很长的串行依赖链,没有大量的数据/线程级并行。就过去十几年的NVIDIA GPU而言,寄存器就是寄存器就是寄存器。它由32位组成。因此,它可以保存32位
int
或32位
浮点。其中一对(与偶数寄存器编号对齐,例如R4、R5)可容纳64位
双精度
。在CPU中,摩托罗拉88100使用相同的寄存器文件进行浮点和整数运算。想想看,DEC VAX使用相同的寄存器进行整数和浮点运算。