0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

寄存器比內(nèi)存快的原理是什么?

Linux閱碼場(chǎng) ? 來源:未知 ? 作者:胡薇 ? 2018-08-02 16:17 ? 次閱讀

計(jì)算機(jī)的存儲(chǔ)層次(memory hierarchy)之中,寄存器(register)最快,內(nèi)存其次,最慢的是硬盤。

同樣都是晶體管存儲(chǔ)設(shè)備,為什么寄存器比內(nèi)存快呢?

Mike Ash寫了一篇很好的解釋,非常通俗地回答了這個(gè)問題,有助于加深對(duì)硬件的理解。下面就是我的簡(jiǎn)單翻譯。

原因一:距離不同

距離不是主要因素,但是最好懂,所以放在最前面說。內(nèi)存離CPU比較遠(yuǎn),所以要耗費(fèi)更長的時(shí)間讀取。

以3GHz的CPU為例,電流每秒鐘可以振蕩30億次,每次耗時(shí)大約為0.33納秒。光在1納秒的時(shí)間內(nèi),可以前進(jìn)30厘米。也就是說,在CPU的一個(gè)時(shí)鐘周期內(nèi)(0.33納秒),光可以前進(jìn)10厘米。

濤聲依舊注:每次震蕩的耗時(shí)也就是CPU的時(shí)鐘周期,時(shí)鐘周期為震蕩頻率的倒數(shù)。

因此,如果內(nèi)存距離CPU超過5厘米,就不可能在一個(gè)時(shí)鐘周期內(nèi)完成數(shù)據(jù)的讀取,這還沒有考慮硬件的限制和電流實(shí)際上達(dá)不到光速。相比之下,寄存器在CPU內(nèi)部,當(dāng)然讀起來會(huì)快一點(diǎn)。

距離對(duì)于桌面電腦影響很大,對(duì)于手機(jī)影響就要小得多。手機(jī)CPU的時(shí)鐘頻率比較慢(iPhone 5s為1.3GHz),而且手機(jī)的內(nèi)存緊挨著CPU。

原因二:硬件設(shè)計(jì)不同

蘋果公司新推出的iPhone 5s,CPU是A7,寄存器有6000多位(31個(gè)64位寄存器,加上32個(gè)128位寄存器)。而iPhone 5s的內(nèi)存是1GB,約為80億位(bit)。

這意味著,高性能、高成本、高耗電的設(shè)計(jì)可以用在寄存器上,反正只有6000多位,而不能用在內(nèi)存上。因?yàn)槊總€(gè)位的成本和能耗只要增加一點(diǎn)點(diǎn),就會(huì)被放大80億倍。

事實(shí)上確實(shí)如此,內(nèi)存的設(shè)計(jì)相對(duì)簡(jiǎn)單,每個(gè)位就是一個(gè)電容和一個(gè)晶體管,而寄存器的設(shè)計(jì)則完全不同,多出好幾個(gè)電子元件。

并且通電以后,寄存器的晶體管一直有電,而內(nèi)存的晶體管只有用到的才有電,沒用到的就沒電,這樣有利于省電。

這些設(shè)計(jì)上的因素,決定了寄存器比內(nèi)存讀取速度更快。

原因三:工作方式不同

寄存器的工作方式很簡(jiǎn)單,只有兩步:

(1)找到相關(guān)的位

(2)讀取這些位。

內(nèi)存的工作方式就要復(fù)雜得多:

1.找到數(shù)據(jù)的指針。(指針可能存放在寄存器內(nèi),所以這一步就已經(jīng)包括寄存器的全部工作了。)

2. 將指針?biāo)屯鶅?nèi)存管理單元(MMU),由MMU將虛擬的內(nèi)存地址翻譯成實(shí)際的物理地址。

3. 將物理地址送往內(nèi)存控制器(memory controller),由內(nèi)存控制器找出該地址在哪一根內(nèi)存插槽(bank)上。

4.確定數(shù)據(jù)在哪一個(gè)內(nèi)存塊(chunk)上,從該塊讀取數(shù)據(jù)。

5. 數(shù)據(jù)先送回內(nèi)存控制器,再送回CPU,然后開始使用。

內(nèi)存的工作流程比寄存器多出許多步。每一步都會(huì)產(chǎn)生延遲,累積起來就使得內(nèi)存比寄存器慢得多。

為了緩解寄存器與內(nèi)存之間的巨大速度差異,硬件設(shè)計(jì)師做出了許多努力,包括在CPU內(nèi)部設(shè)置緩存、優(yōu)化CPU工作方式,盡量一次性從內(nèi)存讀取指令所要用到的全部數(shù)據(jù)等等。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5268

    瀏覽量

    119640
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    2942

    瀏覽量

    73727

原文標(biāo)題:為什么寄存器比內(nèi)存快?

文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    為什么寄存器的速度內(nèi)存

    `在看C專家編程的時(shí)候, 上面有一幅圖,整理的是內(nèi)存媒介的速度,與成本的關(guān)系說明, 這里我在網(wǎng)上找了一張說明更為細(xì)致的圖:那為什么寄存器的速度會(huì)比內(nèi)存?Mike Ash寫了一篇很好的
    發(fā)表于 12-27 10:19

    寄存器,寄存器是什么意思

    寄存器,寄存器是什么意思 寄存器定義  寄存器是中央處理內(nèi)的組成部分。寄存器是有限存貯容量
    發(fā)表于 03-08 14:26 ?2.2w次閱讀

    閃存存儲(chǔ)寄存器嗎?_寄存器和存儲(chǔ)的區(qū)別

    寄存器)、成本高,它用名字來標(biāo)識(shí)(如AX、BX等),沒有地址;;存儲(chǔ)在CPU的外部,它的訪問速度寄存器慢,容量大(20根地址線尋址1M內(nèi)存
    發(fā)表于 10-11 17:12 ?1.2w次閱讀

    寄存器Load/Store內(nèi)存訪問指令

    5.4 多寄存器Load/Store內(nèi)存訪問指令 多寄存器Load/Store內(nèi)存訪問指令也叫批量加載/存儲(chǔ)指令,它可以實(shí)現(xiàn)在一組寄存器和一
    發(fā)表于 10-18 15:56 ?1次下載

    為什么寄存器內(nèi)存_原因是這個(gè)

    本文開始介紹了寄存器特點(diǎn)、分類以及寄存器的工作原理,其次介紹了內(nèi)存的容量、大小與選購方法,最后闡述了寄存器
    發(fā)表于 04-11 09:09 ?6948次閱讀
    為什么<b class='flag-5'>寄存器</b><b class='flag-5'>比</b><b class='flag-5'>內(nèi)存</b><b class='flag-5'>快</b>_原因是這個(gè)

    逆向基礎(chǔ)之寄存器內(nèi)存詳解

    本文主要介紹的是逆向基礎(chǔ)的寄存器內(nèi)存方面的信息,首先介紹的是逆向主要是做什么的,其次對(duì)編程和機(jī)器架構(gòu)做了個(gè)簡(jiǎn)介,最后詳細(xì)的闡述了逆向基礎(chǔ)的寄存器內(nèi)存
    發(fā)表于 04-26 09:52 ?2940次閱讀

    RFM反射內(nèi)存5565控制和狀態(tài)寄存器

    3.3 RFM反射內(nèi)存控制和狀態(tài)寄存器 內(nèi)存訪問周期RFM5565 反射內(nèi)存控制和狀態(tài)寄存器,偏移值存儲(chǔ)在基址
    發(fā)表于 08-13 07:58 ?1076次閱讀

    寄存器變量

    C語言中使用關(guān)鍵字register來聲明局部變量為寄存器變量。寄存器變量的值會(huì)被存放在CPU的寄存器中,每當(dāng)需要使用它們時(shí),CPU就可以直接使用,而無須再通過控制
    發(fā)表于 06-03 10:13 ?2295次閱讀

    計(jì)算機(jī)中內(nèi)存、cache和寄存器之間的關(guān)系

    CPU、內(nèi)存、寄存器之間的關(guān)系cpu 取址 -》地址輸入地址寄存器 -》 緩存命中即,則數(shù)據(jù)進(jìn)入數(shù)據(jù)寄存器 -》 緩存未命中則進(jìn)入內(nèi)存 -》
    發(fā)表于 07-22 09:19 ?5173次閱讀
    計(jì)算機(jī)中<b class='flag-5'>內(nèi)存</b>、cache和<b class='flag-5'>寄存器</b>之間的關(guān)系

    寄存器內(nèi)存的區(qū)別

    寄存器是中央處理內(nèi)的組成部份。它跟CPU有關(guān)。寄存器是有限存貯容量的高速存貯部件,它們可用來暫存指令、數(shù)據(jù)和位址。在中央處理的控制部件中,包含的
    發(fā)表于 12-31 16:57 ?1w次閱讀

    CS,IP和PC寄存器

    CS寄存器和IP寄存器:首先強(qiáng)調(diào)一下,這兩個(gè)寄存器非常非常重要,CS的全拼為“Code segment”,即代碼段寄存器,對(duì)應(yīng)于內(nèi)存中的存放
    發(fā)表于 12-17 18:31 ?2次下載
    CS,IP和PC<b class='flag-5'>寄存器</b>

    CPU、寄存器內(nèi)存單元的物理結(jié)構(gòu)

    這個(gè)問題應(yīng)該從cpu、寄存器內(nèi)存單元的物理結(jié)構(gòu)來看。
    的頭像 發(fā)表于 09-05 11:17 ?4060次閱讀

    訪問CXL 2.0設(shè)備中的內(nèi)存映射寄存器

    計(jì)算快速鏈接 (CXL) 1.1 和 CXL 2.0 規(guī)范在內(nèi)存映射寄存器的放置和訪問方式上有所不同。CXL 1.1 規(guī)范將內(nèi)存映射寄存器放置在 RCRB(根復(fù)合
    的頭像 發(fā)表于 05-25 16:56 ?1782次閱讀
    訪問CXL 2.0設(shè)備中的<b class='flag-5'>內(nèi)存</b>映射<b class='flag-5'>寄存器</b>

    寄存器內(nèi)存的區(qū)別

    在計(jì)算機(jī)體系結(jié)構(gòu)中,寄存器內(nèi)存是兩個(gè)至關(guān)重要的組成部分。它們各自承擔(dān)著不同的角色,共同確保計(jì)算機(jī)系統(tǒng)的正常運(yùn)行。本文將對(duì)寄存器內(nèi)存進(jìn)行詳細(xì)的介紹,包括它們的定義、功能以及二者之間的
    的頭像 發(fā)表于 05-12 17:11 ?1535次閱讀

    寄存器分為基本寄存器和什么兩種

    ,它們用于存儲(chǔ)指令、數(shù)據(jù)和地址等信息?;?b class='flag-5'>寄存器的容量通常較小,但訪問速度非常,因?yàn)樗鼈兣cCPU的執(zhí)行單元緊密相連。 基本寄存器的分類 基本寄存器可以分為以下幾類: (1)通用
    的頭像 發(fā)表于 07-12 10:31 ?827次閱讀