大多数体系结构具有不同的寄存器集,用于存储规则的整数和浮点数。从二进制存储的角度来看,将对象存储在正确的位置应该没关系吗?它只是1和0,难道它们不能将相同的通用寄存器传递给浮点ALU吗?
SIMD(x64中为xmm
)寄存器能够存储浮点数和正整数,因此为什么同一概念不适用于常规寄存器?
对于实际的处理器设计,除了“二进制存储的观点”之外,还有更多的问题需要考虑。
例如,线长很重要,这是因为可以一次移动数十位的并行路径占用了芯片空间,而且沿线获取信号也需要时间。几分之一英寸的时间不多,但是当周期为几分之一秒时仍然很重要。为了进行比较,真空中的光可以在一纳秒内传播约11.8英寸。电线中的电信号较慢。
这使得将寄存器放在要使用其内容的算术单元附近是个好主意。通过单独的整数和浮点寄存器,处理器可以使整数寄存器接近通用ALU,而浮点寄存器则接近浮点单元。
还存在用于读取和写入寄存器的路径数量有限的问题。通过单独的寄存器组,ALU和浮点单元具有独立的寄存器访问路径,从而允许更多的事情同时发生。周期时间不再快速减少,并且处理器速度提高的其他来源之一是并行执行更多操作。
我不知道当前哪个问题重要,但总的来说,将寄存器组分开给处理器设计人员提供了机会,如果将这些组合并在一起,他们将没有机会。