在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

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

3天內不再提示

訪問寄存器代替內存引用

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

我們先看一個例子:

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

圖片

Prog 1 Prog2

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

話不多說,我們看實際的結果:

圖片

圖片

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

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

寄存器

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

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

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

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

計算機訪問速度分級:

表1 時間單位

圖片

以3.3GHz的CPU為例:

表2 系統的各種延時

圖片

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

x86-64 CPU的整數寄存器:

圖片

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

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

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

    關注

    31

    文章

    5363

    瀏覽量

    120939
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10901

    瀏覽量

    212672
  • 內存
    +關注

    關注

    8

    文章

    3052

    瀏覽量

    74215
  • 程序
    +關注

    關注

    117

    文章

    3795

    瀏覽量

    81296
收藏 0人收藏

    評論

    相關推薦

    arm程序狀態寄存器訪問指令

    arm程序狀態寄存器訪問指令
    發表于 01-04 13:11 ?0次下載

    寄存器Load/Store內存訪問指令

    5.4 多寄存器Load/Store內存訪問指令 多寄存器Load/Store內存訪問指令也叫批
    發表于 10-18 15:56 ?1次下載

    為什么寄存器內存快_原因是這個

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

    逆向基礎之寄存器內存詳解

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

    RFM反射內存5565控制和狀態寄存器

    3.3 RFM反射內存控制和狀態寄存器 內存訪問周期RFM5565 反射內存控制和狀態寄存器,偏
    發表于 08-13 07:58 ?1322次閱讀

    寄存器變量

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

    零基礎學ARM:程序狀態寄存器訪問指令解析

    一、程序狀態寄存器訪問指令ARM微處理支持程序狀態寄存器訪問指令,用于在程序狀態寄存器和通用
    的頭像 發表于 12-24 13:36 ?3552次閱讀

    寄存器內存的區別

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

    C語言訪問MCU寄存器

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

    Cortex-M3 內部寄存器

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

    [從零學習匯編語言] - 寄存器內存訪問

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

    訪問CXL 2.0設備中的內存映射寄存器

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

    寄存器內存的區別

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

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

    ,它們用于存儲指令、數據和地址等信息。基本寄存器的容量通常較小,但訪問速度非常快,因為它們與CPU的執行單元緊密相連。 基本寄存器的分類 基本寄存器可以分為以下幾類: (1)通用
    的頭像 發表于 07-12 10:31 ?1573次閱讀

    寄存器尋址的實現方式

    在計算機體系結構中,寄存器尋址是一種常見的尋址方式,它允許程序直接訪問CPU內部的寄存器寄存器尋址可以提高程序的執行效率,因為它避免了對內存
    的頭像 發表于 07-12 10:36 ?788次閱讀
    主站蜘蛛池模板: 手机在线观看免费视频 | 国产网站在线免费观看 | 日本污全彩肉肉无遮挡彩色 | 97一区二区三区 | 亚洲电影av | 美女网色站 | 国产va免费精品观看 | 色www| 日日干夜夜操视频 | 视频在线免费观看 | 久久成人国产 | 91无毒不卡 | 综合网在线 | 四虎1515hh永久久免费 | 中文字幕一二三区乱码老 | 花怜write. as| 午夜视频啪啪 | 天天曰夜夜曰 | 成人伊人亚洲人综合网站222 | dy天堂 | 欧美黄色tv | 天天激情站 | 午夜视频在线观看免费高清 | 欧美三级小视频 | 色片视频网站 | 末成年一级在线看片 | 四虎影在线永久免费观看 | 69xx女xo69| 欧美一区二区三区高清视频 | 无夜精品久久久久久 | 在线a网| 97久久精品国产精品青草 | 天天做天天爱天天射 | 不卡的毛片 | 国产女人视频免费观看 | 欧美成人精品一区二三区在线观看 | 欧美特级午夜一区二区三区 | 国产美女影院 | 人人乳乳香蕉大免费 | 91精品欧美激情在线播放 | bt天堂在线最新版在线 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品