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

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

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

3天內不再提示

如何幫助提高CPU分支跳轉的正確率

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

我們還是先看一個例子:

圖片

看上面的兩個函數,它們都是calloc一個全零數組x(這里不能直接用數組賦值,否則編譯器會足夠聰明進行自動的優化),遍歷x中的每個數,如果等于0,執行分支A,否則執行分支B。

唯一的不同就是在分支判斷的時候,prog2.c加了likely。我們先看下實際的結果如何:

圖片

圖片

可以看出,加了likely的prog2,明顯用時變短。原因何在?

為了理解上面的例子,我們先介紹CPU流水線相關知識:

3.1. CPU流水線簡介

CPU流水線是一種使用多級緩存來提高處理器性能的技術。它是指將CPU操作分為多個階段,每個階段單獨完成一個操作,然后將結果傳遞給下一個階段,以此類推。每個階段都有一個獨立的部件,并且所有部件都能同時處理不同的指令。現代CPU都會采用這種技術來提高CPU的運行效率。

CPU流水線通常包括以下五個階段:

1)取指令(Instruction fetch):從存儲器中讀取指令。

2)指令譯碼(Instruction decode):將指令轉換為可執行的指令。

3)執行指令(Instruction execute):執行指令的操作。

4)寫回(Write back):將執行指令得到的結果寫回內存中。

5)更新程序計數器(Update program counter):將程序計數器加1,使它指向下一個指令。

舉個簡單的例子:

我們假設每一個步驟執行時間都是一個時鐘周期,那么一條指令執行需要3個時鐘周期

圖片

CPU 執行指令的3個時鐘周期里,取值單元只在第一個時鐘周期里工作,其余兩個時鐘周期都處于空閑狀態,其它兩個執行單元也是如此,效率太低了。

解決方法就是引入流水線,引入流水線工作模式后可以看到,除了剛開始第一個時鐘周期大家還可以偷懶外,其余的時間都不會閑著

圖片

CPU流水線的優點是可以同時執行多個指令,從而提高了處理器的效率。但它也存在一些問題,例如數據相關性(Data dependency)和控制相關性(Control dependency),這些問題可能導致流水線停滯,降低CPU的性能。

執行的程序指令如果是順序結構,沒有中斷或跳轉,流水線確實可以提高執行效率。但是當程序指令中存在跳轉、分支結構時,下面預取的指令可能就要全部丟掉了,需要到要跳轉的地方重新取指令執行。一般來說分支預測錯誤的處罰大約是19個時鐘周期。(具體計算方法這里不做詳細介紹了)。

我們看下前面提到的例子匯編出來的結果:

圖片

prog2,這里匯編是”jne”,意思是如果判斷結果不為0,就跳轉到地址 800的地方執行。我們知道這里的判斷一直是0。所以,cpu指令順序向下執行,并不會發生預判錯誤,預取的指令也不會丟棄。這樣就不會遭到分支預測錯誤的懲罰,效率會提高。

所以有些情況下,當我們根據實際的情況可以判斷出哪條分支的可能性更高的時候,我們就可以站在上帝視角給予一定的提示,這樣就可以降低分支預測錯誤,減少CPU的無用功了,從而可以有效的提高性能,同時也節省了功耗。

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

    關注

    68

    文章

    10879

    瀏覽量

    212201
  • 代碼
    +關注

    關注

    30

    文章

    4802

    瀏覽量

    68745
收藏 人收藏

    評論

    相關推薦

    CPU分支預測對程序的影響

    分支預測的英文名字是“Branch Prediction”,如果大家在Google上搜索這個關鍵字,可以看到關于分支預測的很多內容。不過,要搞清楚分支預測是如何工作的,才是問題的關鍵。
    發表于 09-23 14:11 ?1145次閱讀

    提高繼電保護動作正確率的策略

    和復雜,一旦發生局部電網和設備事故,而得不到有效控制,就會造成電網的穩定破壞和大面積停電事故。現代化大電網對繼電保護的依賴性更強,對其動作正確率的要求更高。2 提高繼電保護動作正確率的措施2.1
    發表于 08-20 14:58

    labview如何立即退出當前事件分支

    `想按Stop按鍵起到急停作用,想法就是:按Stop按鈕,立即停止當前執行的事件分支跳轉到另一個急停事件中,所有的閥門和泵全部關閉。考慮到當前分支的執行時間比較但是我想只要按下Stop鍵就會停止當前
    發表于 10-28 15:12

    優化技巧:提前if判斷幫助CPU分支預測

    分支預測(branch prediction)和指令流水線(instruction pipeline),這兩個結合可以極大提高CPU效率。對于像簡單的if跳轉
    發表于 06-13 16:27

    怎樣去正確的配置CAN協議的波特

    正確配置了它?我是否正確使用標稱同步跳轉寬度?(我沒有在網站上看到同步跳轉寬度的提及)。如果我犯了任何錯誤,我將不勝感激一些反饋!(請注意,我此時沒有示波器訪問權限,這就是我首先在這
    發表于 12-02 11:08

    PLC編程的跳轉分支實驗

    PLC編程的跳轉分支實驗 一. 實驗目的1. 熟悉編程軟件及編程方式。2. 掌握跳轉分支指令的使用。二.
    發表于 09-30 18:33 ?6797次閱讀

    使用智能外設提高CPU效率

    現代微控制器添加了一個范圍廣泛的新功能,在正確使用時可以大大提高應用效率。特別是,可以使用獨立于CPU獨立操作的智能外設和外圍設備,允許CPU并行執行其他任務,或者進入低功耗睡眠模式。
    發表于 06-09 14:32 ?7次下載
    使用智能外設<b class='flag-5'>提高</b><b class='flag-5'>CPU</b>效率

    Thumb指令集之Thumb跳轉指令

    進行狀態切換可以在程序中設定選擇)。 ⑤ 帶返回和狀態切換的跳轉指令(是否進行狀態切換可以在程序中設定選擇)。 ⑥ 第二種形式的帶返回和狀態切換的跳轉指令。 下面詳細介紹各指令的特點及用途。 11.3.1 跳轉指令B Thumb
    發表于 10-19 10:04 ?1次下載
    Thumb指令集之Thumb<b class='flag-5'>跳轉</b>指令

    搜狗推“唇語識別”正確率達90%

    人機交互是未來讓人們更好的去理解程序的執行的效果,或者說讓機器可以更準備的知道人們對他發布的指令進行正確的執行。搜狗推出新型的人機交互技術“唇語識別”據悉在垂直場景下可以達到90%準確
    發表于 12-14 16:43 ?1545次閱讀

    ARM嵌入式系統的中斷服務例程跳轉

    在32位 ARM 系統中,一般都是在中斷向量表中放置一條分支指令或PC寄存器加載指令,實現 程序跳轉 到 中斷服務 例程的功能。例如: IRQEntry B HandleIRQ ;跳轉范圍較小 B
    發表于 04-10 10:11 ?2834次閱讀

    如何使用蝙蝠優化算法的網絡入侵檢測模型提高入侵檢測的正確率

    網絡入侵具有突發性和隱蔽性等特點,傳統的技術很難描述其變化規律,這導致入侵檢測正確率非常的低。為提高入侵檢測正確率,降低誤檢,提出了一種基于動態自適應權重和柯西變異的蝙蝠優化算法優化
    發表于 11-14 17:34 ?5次下載
    如何使用蝙蝠優化算法的網絡入侵檢測模型<b class='flag-5'>提高</b>入侵檢測的<b class='flag-5'>正確率</b>

    GPU和CPU芯片的區別

    CPU和GPU之所以大不相同,是由于其設計目標的不同,它們分別針對了兩種不同的應用場景。CPU需要很強的通用性來處理各種不同的數據類型,同時又要邏輯判斷又會引入大量的分支跳轉和中斷的處
    的頭像 發表于 05-10 09:04 ?1.9w次閱讀

    如何才能解決圖像匹配算法的光照變化敏感和匹配正確率低的問題

    針對現有的基于局部特征的圖像匹配算法對光照變化敏感、匹配正確率低等問題,提出一種具有光照魯棒性的圖像匹配算法。首先使用實時對比保留去色(RTCP)算法灰度化圖像,然后利用對比拉伸函數模擬不同光照變換
    發表于 11-14 15:16 ?12次下載
    如何才能解決圖像匹配算法的光照變化敏感和匹配<b class='flag-5'>正確率</b>低的問題

    cpu和gpu的結構區別

    CPU和GPU之所以大不相同,是由于其設計目標的不同,它們分別針對了兩種不同的應用場景。 CPU需要很強的通用性來處理各種不同的數據類型,同時又要邏輯判斷又會引入大量的分支跳轉和中斷的
    發表于 11-15 10:24 ?1491次閱讀
    <b class='flag-5'>cpu</b>和gpu的結構區別

    CPU中什么是分支預測

    什么是分支預測 在超標量的流水線架構上,我們得知,CPU 在運行指令的時候,會在一個時鐘上做多個操作,也就是涉及到調用前后相關的指令,比如我們在一個簡單的判斷語句中。 if (n > 0 ) { n
    的頭像 發表于 11-29 17:22 ?1051次閱讀
    主站蜘蛛池模板: 亚洲网站免费观看| 国产操视频| 天天爽夜夜春| 五月天天| 理论片午夜| 国产一级大片免费看| 国产免费色视频| www亚洲欲色成人久久精品| 免费看大尺度视频在线观看| 中国色老头| 最新合集丨新片速递| 91国内在线国内在线播放| 久久天天躁狠狠躁夜夜爽蜜月| 人成电影免费观看在线| 中国一级黄色毛片| 香港日本三级在线播放| 禁漫画羞羞动漫入口| 欧美小网站| 日本黄色影片| 日本三级带日本三级带黄首页| 亚洲一区二区三区在线网站| 久久久久国产免费| 91网站在线看| 亚洲一区二区三区影院| 视频在线h| 亚洲第一视频区| 亚洲国产欧美视频| 色丁香在线观看| 狠狠躁夜夜躁人人爽天天3| 噜啪啪| 国产va免费精品高清在线观看| 色偷偷7777www人| 老色批| 99精品免费视频| 精品亚洲午夜久久久久| 玖玖草在线观看| 91视频www| 亚洲v视频| 久久综合97色综合网| 快色视频在线观看| 亚洲第一网站快活影院|