2014-09-26 499 views
3

我的理解是:内存层次 - 为什么寄存器很贵?

更快访问时间>昂贵

较慢访问时间>昂贵

我也明白,寄存器的层次结构的顶部,并有最快的访问时间。我有一个很难研究的是为什么它是如此昂贵?据我所知,寄存器实际上是直接构建在ALU中的电路。如果它们真的被内置到CPU(特别是ALU)中,究竟是什么使它成为最昂贵的?

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

+1

认为寻址。它们靠近ALU,所以我们对寄存器复用器选择的总线宽度最小。这与指令宽度直接相关,只能选择有限数量的寄存器。如果你有1024个通用寄存器,那么在指令中需要10位来选择每个寄存器。 – 2014-09-26 08:48:16

+1

也想想时钟。你拥有的东西越多,它就越大,这通常需要较慢的时钟频率。这就是为什么你的RAM以比你的CPU更低的时钟频率运行的原因。 – 2014-09-26 08:50:53

+1

供求关系。登记册非常稀少,因此它们非常昂贵。 L1缓存很少,但不是注册表。 L2更丰富。 RAM很多。磁盘丰富。 S3是无限的。更丰富,更便宜,但访问速度更慢。 – 2014-09-26 09:11:32

回答

5

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

例如,如果您有语句a = a + x; b = b + x; c = c + x;你有三条指令都希望读取同一个寄存器。所以寄存器不只是内存。处理器中还需要有所有数据路径,因此寄存器x中的相同数据可以同时发送到三条指令。数据可以传到许多地方。如果你写双a = x;而x是一个整数,那么必须有一个数据路径将寄存器x发送到浮点单元。或者到一个矢量单位。等等。

然后你有问题不仅需要存储数据,还必须确保它是可用的。如果你写x = y + z; a = a + x;当第一条指令运行时,有人必须跟踪,保存x的寄存器现在无效,直到存储结果为止,并停止第二次加法运行。这是非常昂贵的。

所以建立一个寄存器不仅仅是增加一点内存,还需要付出代价。寄存器对处理器的速度至关重要,因此使用最昂贵且速度最快的技术来构建它们。