我理解:
访问时间更快 > 花费更高
访问时间较慢 > 花费较低
我也了解寄存器是层次结构的顶部,具有最快的访问时间。但我很难研究出为什么它这么昂贵?据我所知,寄存器是直接内置于ALU中的电路。如果它们确实内置于CPU(尤其是ALU)中,那么是什么使它成为最昂贵的?
是它的大小吗?(寄存器当然是最小的)
我理解:
访问时间更快 > 花费更高
访问时间较慢 > 花费较低
我也了解寄存器是层次结构的顶部,具有最快的访问时间。但我很难研究出为什么它这么昂贵?据我所知,寄存器是直接内置于ALU中的电路。如果它们确实内置于CPU(尤其是ALU)中,那么是什么使它成为最昂贵的?
是它的大小吗?(寄存器当然是最小的)
寄存器非常昂贵,因为它们必须非常快速,并且需要同时从许多地方访问。
例如,如果您有语句a = a + x; b = b + x; c = c + x; ,那么您有三条指令都想读取相同的寄存器。所以寄存器不仅仅是内存。还有所有需要在处理器中的数据路径,这样可以将寄存器中持有x的相同数据同时发送到三个指令。数据可以传输到很多很多地方。如果您编写double a = x; ,其中x是整数,则必须有一个数据路径将寄存器x发送到浮点单元。或者向量单元等。
然后您还要面临一个问题,不仅需要存储数据,还必须确保数据可用。如果您编写x = y + z; a = a + x; ,某人必须在第一条指令运行时跟踪持有x的寄存器此时无效,直到加法结果被存储,并阻止第二个加法运行。这非常昂贵。
因此,在构建寄存器时,不仅需要添加一些内存,还需要支付更多成本。寄存器对于处理器的速度非常重要,因此使用最昂贵和最快的技术来构建它们。