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