為什麼寄存器比記憶體快?

來源:互聯網
上載者:User

標籤:記憶體   晶體管   儲存   

原文出處:中文 ,英文

  電腦的儲存層次(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)讀取這些位。
  記憶體的工作方式就要複雜得多:
  (1)找到資料的指標。(指標可能存放在寄存器內,所以這一步就已經包括寄存器的全部工作了。)
  (2)將指標送往記憶體管理單元(MMU),由MMU將虛擬記憶體位址翻譯成實際的物理地址。
  (3)將物理地址送往記憶體控制器(memory controller),由記憶體控制器找出該地址在哪一根記憶體插槽(bank)上。
  (4)確定資料在哪一個記憶體塊(chunk)上,從該塊讀取資料。
  (5)資料先送回記憶體控制器,再送回CPU,然後開始使用。
  記憶體的工作流程比寄存器多出許多步。每一步都會產生延遲,累積起來就使得記憶體比寄存器慢得多。
  為了緩解寄存器與記憶體之間的巨大速度差異,硬體設計師做出了許多努力,包括在CPU內部設定緩衝、最佳化CPU工作方式,盡量一次性從記憶體讀取指令所要用到的全部資料等等。

著作權聲明:本文為博主原創文章,歡迎垂詢 email: [email protected]

為什麼寄存器比記憶體快?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.