在計算機的儲存層次(memory hierarchy)之中,暫存器(register)最快,記憶體其次,最慢的是硬碟。
具體原因如下
距離不是主要因素,但是最好懂,所以放在最前面說。記憶體離cpu比較遠,所以要耗費更長的時間讀取。
以3ghz的cpu為例,電流每秒鐘可以振盪30億次,每次耗時大約為0.33納秒。光在1納秒的時間內,可以前進30厘公尺。也就是說,在cpu的乙個時鐘週期內,光可以前進10厘公尺。因此,如果記憶體距離cpu超過5厘公尺,就不可能在乙個時鐘週期內完成資料的讀取,這還沒有考慮硬體的限制和電流實際上達不到光速。相比之下,暫存器在cpu內部,當然讀起來會快一點。
距離對於桌面電腦影響很大,對於手機影響就要小得多。手機cpu的時鐘頻率比較慢(iphone 5s為1.3ghz),而且手機的記憶體緊挨著cpu。
蘋果公司推出的iphone 5s,cpu是a7,暫存器有6000多位(31個64位暫存器,加上32個128位暫存器)。而iphone 5s的記憶體是1gb,約為80億位(bit)。這意味著,高效能、高成本、高耗電的設計可以用在暫存器上,反正只有6000多位,而不能用在記憶體上。因為每個位的成本和能耗只要增加一點點,就會被放大80億倍。
事實上確實如此,記憶體的設計相對簡單,每個位就是乙個電容和乙個電晶體,而暫存器的設計
則完全不同,多出好幾個電子元件。並且通電以後,暫存器的電晶體一直有電,而記憶體的電晶體只有用到的才有電,沒用到的就沒電,這樣有利於省電。這些設計上的因素,決定了暫存器比記憶體讀取速度更快。
記憶體的工作方式就要複雜得多:
(1)找到資料的指標。(指標可能存放在暫存器內,所以這一步就已經包括暫存器的全部工作了。)記憶體的工作流程比暫存器多出許多步。每一步都會產生延遲,累積起來就使得記憶體比暫存器慢得多。(2)將指標送往
記憶體管理單元
(mmu),由mmu將虛擬的記憶體位址翻譯成實際的實體地址。
(3)將實體地址送往記憶體控制器(
memory controller
),由記憶體控制器找出該位址在哪一根記憶體插槽(bank)上。
(4)確定資料在哪乙個記憶體塊(chunk)上,從該塊讀取資料。
(5)資料先送回記憶體控制器,再送回cpu,然後開始使用。
為了緩解暫存器與記憶體之間的巨大速度差異,硬體設計師做出了許多努力,包括在cpu內部設定快取、優化cpu工作方式,盡量一次性從記憶體讀取指令所要用到的全部資料等等。
參考:
暫存器比記憶體訪問速度快的原因
距離太遠,暫存器就在cpu內部,而記憶體則在外部。暫存器結構複雜,記憶體設計簡單。工作方式不同。cpu訪問記憶體的過程中會包含訪問暫存器的操作。以上是看完文章後的個人理解,放上原文如下。同樣都是電晶體儲存裝置,為什麼暫存器比記憶體快呢?mike ash 寫了一篇很好的解釋,非常通俗地回答了這個問題,...
為什麼暫存器比記憶體快?
計算機的儲存層次 memory hierarchy 之中,暫存器 register 最快,記憶體其次,最慢的是硬碟。同樣都是電晶體儲存裝置,為什麼暫存器比記憶體快呢?mike ash寫了一篇很好的解釋,非常通俗地回答了這個問題,有助於加深對硬體的理解。下面就是我的簡單翻譯。原因一 距離不同 距離不是...
為什麼暫存器比記憶體快?
分類 計算機原理及常識 2013 10 15 20 54 266人閱讀收藏 舉報記憶體 計算機暫存器 原文出處 mike ash 譯文出處 阮一峰 計算機的儲存層次 memory hierarchy 之中,暫存器 register 最快,記憶體其次,最慢的是硬碟。同樣都是電晶體儲存裝置,為什麼暫存器...