我的理解是:內存層次 - 爲什麼寄存器很貴?
更快訪問時間>更昂貴
較慢訪問時間>少昂貴
我也明白,寄存器的層次結構的頂部,並有最快的訪問時間。我有一個很難研究的是爲什麼它是如此昂貴?據我所知,寄存器實際上是直接構建在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