女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

訪問寄存器代替內(nèi)存引用

麥辣雞腿堡 ? 來源:OPPO內(nèi)核工匠 ? 作者:Rock ? 2023-12-13 11:07 ? 次閱讀

我們先看一個例子:

有這么兩個程序:它們的目的就是將數(shù)組x中的數(shù),按照下標累加到數(shù)組y中,最后在把數(shù)組y中的數(shù)據(jù)累加到一個數(shù)dest里面。為了驗證效果,我們將這個過程重復(fù)10000遍。

圖片

Prog 1 Prog2

這兩個程序的區(qū)別就在Prog2中紅框里面的內(nèi)容。那么哪個程序運行的更快呢?

話不多說,我們看實際的結(jié)果:

圖片

圖片

這里為了說明效果,我們編譯的時候,并沒有采用優(yōu)化(編譯優(yōu)化,確實可以提高程序運行的效率,但是過高的編譯優(yōu)化等級會有一定的副作用,另外編譯器優(yōu)化也具有一定的局限性,高效的代碼仍然應(yīng)該是我們追求的目標)。可以看到,Prog2要明顯比Prog1快。

要想理解上面的例子,我們必須先介紹一下寄存器匯編代碼的相關(guān)知識:

寄存器

CPU內(nèi)部用來存放數(shù)據(jù)的一些小型存儲區(qū)域, 注意寄存器是在CPU內(nèi)部,受限于CPU的物理尺寸,寄存器數(shù)量不會太多。我們只需要記住兩點:

1) 寄存器和CPU的L1 cache相比,速度雖然還在一個數(shù)量級,但是L1 cache的訪問速度還是要慢幾倍。具體的數(shù)據(jù)見下文表2

2) CPU只能從寄存器直接取數(shù)據(jù)或者指令,如果取不到,獲取的順序是L1-》L2-》L3-》主存-》磁盤。

從下文表2中可以看出,如果cpu的cache訪問miss了,性能損失還是很大的。如果內(nèi)存里面再miss了,那對性能來說不亞于一場災(zāi)難了。

計算機訪問速度分級:

表1 時間單位

圖片

以3.3GHz的CPU為例:

表2 系統(tǒng)的各種延時

圖片

正如你所見,CPU周期的時間非常短,這段時間,光的速度大約只能走0.5米。想象一下,是不是非常震撼?

x86-64 CPU的整數(shù)寄存器:

圖片

我們無需刻意去記住這些寄存器的名稱,不同架構(gòu)的寄存器的數(shù)量和名稱也不一樣,我們只要知道他們是cpu內(nèi)部的效率極高的存儲單元即可。

回到前面的例子,為什么Prog2要比Prog1快,是因為Prog2里面用DEST這個局部變量代替了dest。DEST是一個局部變量,在匯編指令里是直接訪問寄存器,而dest則需要去訪問內(nèi)存cache。

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

    關(guān)注

    31

    文章

    5425

    瀏覽量

    123544
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11049

    瀏覽量

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

    關(guān)注

    8

    文章

    3111

    瀏覽量

    75032
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3824

    瀏覽量

    82504
收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    arm程序狀態(tài)寄存器訪問指令

    arm程序狀態(tài)寄存器訪問指令
    發(fā)表于 01-04 13:11 ?0次下載

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

    寄存器)、成本高,它用名字來標識(如AX、BX等),沒有地址;;存儲在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)存訪問指令也叫批
    發(fā)表于 10-18 15:56 ?1次下載

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

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

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

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

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

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

    寄存器變量

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

    零基礎(chǔ)學ARM:程序狀態(tài)寄存器訪問指令解析

    一、程序狀態(tài)寄存器訪問指令A(yù)RM微處理支持程序狀態(tài)寄存器訪問指令,用于在程序狀態(tài)寄存器和通用
    的頭像 發(fā)表于 12-24 13:36 ?4025次閱讀

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

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

    C語言訪問MCU寄存器

    C語言訪問MCU寄存器問題由來://下面這行代碼的意思是直接操作0X020C4068這個寄存器//具體寄存器的作用是通過手冊得到的#define CCM_CCGR0 *((volati
    發(fā)表于 10-25 13:21 ?3次下載
    C語言<b class='flag-5'>訪問</b>MCU<b class='flag-5'>寄存器</b>

    Cortex-M3 內(nèi)部寄存器

    寄存器組R0-R12R0-R12,通用寄存器;R0-R12都是32位通用寄存器,用于數(shù)據(jù)操作;但是絕大多數(shù)16位Thumb指令只能訪問R0-R7,而32位Thumb指令可以
    發(fā)表于 11-26 16:21 ?39次下載
    Cortex-M3 內(nèi)部<b class='flag-5'>寄存器</b>

    [從零學習匯編語言] - 寄存器內(nèi)存訪問

    [從零學習匯編語言] - 寄存器內(nèi)存訪問
    發(fā)表于 11-26 20:51 ?13次下載
    [從零學習匯編語言] - <b class='flag-5'>寄存器</b>與<b class='flag-5'>內(nèi)存</b><b class='flag-5'>訪問</b>

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

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

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

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

    寄存器尋址的實現(xiàn)方式

    在計算機體系結(jié)構(gòu)中,寄存器尋址是一種常見的尋址方式,它允許程序直接訪問CPU內(nèi)部的寄存器寄存器尋址可以提高程序的執(zhí)行效率,因為它避免了對內(nèi)存
    的頭像 發(fā)表于 07-12 10:36 ?1387次閱讀