内存层次结构 - 为什么寄存器很昂贵?

9

我理解:

访问时间更快 > 花费更高

访问时间较慢 > 花费较低

我也了解寄存器是层次结构的顶部,具有最快的访问时间。但我很难研究出为什么它这么昂贵?据我所知,寄存器是直接内置于ALU中的电路。如果它们确实内置于CPU(尤其是ALU)中,那么是什么使它成为最昂贵的?

是它的大小吗?(寄存器当然是最小的)


1
考虑地址寻址。由于它们靠近ALU,因此在寄存器复用选择时我们需要最小的总线宽度。这直接关系到指令宽度,指令只能选择有限数量的寄存器。如果您有1024个通用寄存器,则需要10位指令才能选择每个寄存器。 - Jonathon Reinhart
1
还要考虑时钟。拥有更多的东西,它就越大,这通常需要较慢的时钟频率。这就是为什么你的RAM运行在比CPU更低的时钟频率下的原因。 - Jonathon Reinhart
2
供需关系。寄存器非常稀缺,因此它们非常昂贵。L1缓存很少,但不像寄存器那样稀缺。L2更为丰富。RAM充足。磁盘很丰富。S3是无限的。资源越丰富,价格越便宜,但访问速度较慢。 - Remus Rusanu
1个回答

15

寄存器非常昂贵,因为它们必须非常快速,并且需要同时从许多地方访问。

例如,如果您有语句a = a + x; b = b + x; c = c + x; ,那么您有三条指令都想读取相同的寄存器。所以寄存器不仅仅是内存。还有所有需要在处理器中的数据路径,这样可以将寄存器中持有x的相同数据同时发送到三个指令。数据可以传输到很多很多地方。如果您编写double a = x; ,其中x是整数,则必须有一个数据路径将寄存器x发送到浮点单元。或者向量单元等。

然后您还要面临一个问题,不仅需要存储数据,还必须确保数据可用。如果您编写x = y + z; a = a + x; ,某人必须在第一条指令运行时跟踪持有x的寄存器此时无效,直到加法结果被存储,并阻止第二个加法运行。这非常昂贵。

因此,在构建寄存器时,不仅需要添加一些内存,还需要支付更多成本。寄存器对于处理器的速度非常重要,因此使用最昂贵和最快的技术来构建它们。


有没有适当的资源可以学习这个? - Damika

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接