1. 程式人生 > >寄存器與內存的區別

寄存器與內存的區別

寄存器與內存的區別

寄存器:寄存器是有觸發器或鎖存器組成,通常由觸發器組成,寄存器擁有非常高的讀寫速度,所以在寄存器之間傳遞數據非常快
內存:內存就是存儲器,由半導體器件構成。
計算機的存儲層次(memory hierarchy)之中,寄存器(register)最快,內存其次,最慢的是硬盤。技術分享圖片
同樣都是晶體管存儲設備,為什麽寄存器比內存快呢?
Mike Ash寫了一篇很好的解釋,非常通俗地回答了這個問題,有助於加深對硬件的理解。
原因一:距離不同
距離不是主要因素,但是最好懂。內存離CPU比較遠,所以消費更長的時間儲存。
以3Ghz的CPU為例子,電流每秒可以震蕩30億次,每次耗時大概為0.33納秒,光在1納秒裏可以前進30cm,也就是說一個CPU周期內,光可以前進10cm。因此如果內存距離CPU超過5cm,就不可能在一個時鐘周期內完成數據的讀寫。這還沒考慮硬件的限制和電流實際上達不到光速。相比之下,寄存器在CPU內部,當然讀起來會快一點。

原因二:硬件設計不同
蘋果公司新推出的iphone5s,CPU是A7,寄存器有6000多位(31個64位寄存器,加上32個128位寄存器)。而iphone5s的內存是1GB,約為80億位(bit)。這意味著高性能、高成本、高耗電的設計可以用在寄存器上,反正只有6000多位,而不能用在內存上,因為每個位的成本和耗能只要增加一點點,就會被放大80億倍。
事實上確實如此,內存的設計相對簡單,每個位就是一個電容和一個晶體管,而寄存器的設計則完全不同,多出好幾個電子元件。並且通電後,寄存器的晶體管一直有電,而內存的晶體管只有在用到的才有電,沒用到的就沒電,這樣利於省電。這些設計上的因素,決定了寄存器比內存讀取速度更快。

原因三:工作方式不同
寄存器的工作方式只有2步:(1)找到相關的位(2)讀取這些位
內存的工作方式就復雜多:
(1)找到數據的指針(指針可能存放在寄存器內,所以這一步就已經包括寄存器的全部工作了。)
(2)將指針送往內存管理單元(MMU),由MMU講虛擬的內存地址翻譯成實際的物理地址。
(3)將物理地址送往內存控制器(memory controller),由於內存控制器找出該地址在哪一根內存插槽(bank)上.
(4)確定數據在哪一個內存塊(chunk)上,從該塊讀取數據。
(5)內存先送回內存控制器,再送回CPU,然後開始使用。
內存的工作流程比寄存器多出許多步,每一步都會產生延遲,累積起來就使得內存比寄存器慢得多。

為了緩解寄存器和內存之間速度的巨大差異,硬件設計師做出了許多努力,包括CPU內部設置緩存,優化CPU工作方式,盡量一次從內存讀取指令所要用到的全部數據等等。

寄存器與內存的區別