我的理解是:内存层次 - 为什么寄存器很贵?
更快访问时间>更昂贵
较慢访问时间>少昂贵
我也明白,寄存器的层次结构的顶部,并有最快的访问时间。我有一个很难研究的是为什么它是如此昂贵?据我所知,寄存器实际上是直接构建在ALU中的电路。如果它们真的被内置到CPU(特别是ALU)中,究竟是什么使它成为最昂贵的?
是它的大小(当然是最小的寄存器)?
我的理解是:内存层次 - 为什么寄存器很贵?
更快访问时间>更昂贵
较慢访问时间>少昂贵
我也明白,寄存器的层次结构的顶部,并有最快的访问时间。我有一个很难研究的是为什么它是如此昂贵?据我所知,寄存器实际上是直接构建在ALU中的电路。如果它们真的被内置到CPU(特别是ALU)中,究竟是什么使它成为最昂贵的?
是它的大小(当然是最小的寄存器)?
寄存器非常非常昂贵,因为它们必须非常非常快速,并且需要同时从多个位置访问它们。
例如,如果您有语句a = a + x; b = b + x; c = c + x;你有三条指令都希望读取同一个寄存器。所以寄存器不只是内存。处理器中还需要有所有数据路径,因此寄存器x中的相同数据可以同时发送到三条指令。数据可以传到许多地方。如果你写双a = x;而x是一个整数,那么必须有一个数据路径将寄存器x发送到浮点单元。或者到一个矢量单位。等等。
然后你有问题不仅需要存储数据,还必须确保它是可用的。如果你写x = y + z; a = a + x;当第一条指令运行时,有人必须跟踪,保存x的寄存器现在无效,直到存储结果为止,并停止第二次加法运行。这是非常昂贵的。
所以建立一个寄存器不仅仅是增加一点内存,还需要付出代价。寄存器对处理器的速度至关重要,因此使用最昂贵且速度最快的技术来构建它们。
认为寻址。它们靠近ALU,所以我们对寄存器复用器选择的总线宽度最小。这与指令宽度直接相关,只能选择有限数量的寄存器。如果你有1024个通用寄存器,那么在指令中需要10位来选择每个寄存器。 – 2014-09-26 08:48:16
也想想时钟。你拥有的东西越多,它就越大,这通常需要较慢的时钟频率。这就是为什么你的RAM以比你的CPU更低的时钟频率运行的原因。 – 2014-09-26 08:50:53
供求关系。登记册非常稀少,因此它们非常昂贵。 L1缓存很少,但不是注册表。 L2更丰富。 RAM很多。磁盘丰富。 S3是无限的。更丰富,更便宜,但访问速度更慢。 – 2014-09-26 09:11:32