为什么浮点寄存器不同于通用寄存器

Why floating point registers are different than general purpose ones

大多数体系结构都有不同的寄存器组来存储常规整数和浮点数。从二进制存储的角度来看,东西存储在哪里应该无关紧要吧?只是 1 和 0,他们不能将相同的通用寄存器通过管道传输到浮点 ALU 中吗?

SIMD(x64 中的 xmm)寄存器能够存储浮点数和常规整数,因此 为什么相同的概念不适用于常规寄存器?

对于实际的处理器设计,需要考虑的问题比"a binary storage point of view"多很多。

例如,导线长度很重要,这既是因为一次可以移动数十位的并行路径占用芯片 space,也是因为沿着导线获取信号需要时间。几分之一英寸的时间不多,但当一个周期是几分之一纳秒时仍然很重要。相比之下,真空中的光可以在一纳秒内传播约 11.8 英寸。电线中的电信号较慢。

将寄存器放在靠近将要使用其内容的算术单元的位置是个好主意。通过单独的整数和浮点寄存器,处理器可以拥有接近通用 ALU 的整数寄存器,以及接近浮点单元的浮点寄存器。

还有读写寄存器的路径数量有限的问题。使用独立的寄存器组,ALU 和浮点单元具有独立的寄存器访问路径,允许同时发生更多事情。循环时间不再快速下降,处理器速度提高的其他来源之一是并行执行更多操作。

我不知道目前这些问题中的哪一个很重要,但总的来说,将寄存器组分开可以为处理器设计人员提供他们在合并这些组时不会有的机会。