日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

[architecture]-DBG、DMB、DSB 和 ISB指令介绍

發布時間:2025/3/21 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [architecture]-DBG、DMB、DSB 和 ISB指令介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

快速鏈接:
.
👉👉👉 個人博客筆記導讀目錄(全部) 👈👈👈

1、DBG、DMB、DSB 和 ISB指令介紹

調試指令、數據內存屏障指令、數據同步屏障指令和指令同步屏障指令。

語法

  • DBG{cond} {#option}
  • DMB{cond} {option}
  • DSB{cond} {option}
  • ISB{cond} {option}


    cond : 是一個可選的條件代碼(請參閱條件執行)。
    option : 對提示操作的可選限制。
    說明:如果指令未實現,則與 NOP 效果相同
  • (1)、DBG : 調試提示可向調試系統及其相關系統發送提示。
  • (2)、DMB :數據內存屏障可作為內存屏障使用。 它可確保會先檢測到程序中位于 DMB 指令前的所有顯式內存訪問指令,然后再檢測到程序中位于 DMB 指令后的顯式內存訪問指令。它不影響其他指令在處理器上的執行順序

option 的允許值為:SY, 完整的系統DMB 操作。 這是缺省情況,可以省略

舉個例子: 如下的操作,確保dmb之前的內存訪問已經完成了,即數據讀到了x1、x2、x3、x21,然后后面的inval_dcache_aera會使用這些參數。

  • (3)、DSB : 數據同步屏障是一種特殊類型的內存屏障。 只有當此指令執行完畢后,才會執行程序中位于此指令后的指令。 當滿足以下條件時,此指令才會完成:
    位于此指令前的所有顯式內存訪問均完成。
    位于此指令前的所有緩存、跳轉預測和 TLB 維護操作全部完成

允許的值為:
SY : 完整的系統 DSB 操作。 這是缺省情況,可以省略。
UN : 只可完成于統一點的DSB 操作。
ST : 存儲完成后才可執行的DSB 操作。
UNST : 只有當存儲完成后才可執行的DSB 操作,并且只會完成于統一點

  • (4)、ISB : 指令同步屏障可刷新處理器中的管道,因此可確保在 ISB 指令完成后,才從高速緩存或內存中提取位于該指令后的其他所有指令這可確保提取時間晚于 ISB 指令的指令能夠檢測到 ISB 指令執行前就已經執行的上下文更改操作的執行效果,例如更改ASID 或已完成的 TLB 維護操作,跳轉預測維護操作以及對 CP15 寄存器所做的所有更改。
    此外,ISB 指令可確保程序中位于其后的所有跳轉指令總會被寫入跳轉預測邏輯,其寫入上下文可確保 ISB 指令后的指令均可檢測到這些跳轉指令。這是指令流能夠正確執行的前提條件。
    舉個例子:如果上述代碼中1和2處的之類,同時從icache中取的,那么2處位置sp的值感測不到1處對sp的修改。那么有了isb之類后,保證1處操作完成之后,再進行2處取指令,這樣就不會亂了。

2、Linux Kernel中的smp_mb()、smp_rmb()、smp_wmb()、mb()、wmb()、rmb()

smp_mb()、smp_rmb()、smp_wmb()在底層調用的都是dmb

#define __smp_mb() dmb(ish) #define __smp_rmb() dmb(ishld) #define __smp_wmb() dmb(ishst)#ifndef smp_mb #define smp_mb() __smp_mb() #endif#ifndef smp_rmb #define smp_rmb() __smp_rmb() #endif#ifndef smp_wmb #define smp_wmb() __smp_wmb() #endif

mb()、wmb()、rmb()在底層調用的也都是dmb

#define mb() asm volatile("dmb ish" ::: "memory") #define wmb() asm volatile("dmb ishst" ::: "memory") #define rmb() asm volatile("dmb ishld" ::: "memory")

問:smp_mb()、smp_rmb()、smp_wmb() 和 mb()、wmb()、rmb()到底有什么區別嗎

總結

以上是生活随笔為你收集整理的[architecture]-DBG、DMB、DSB 和 ISB指令介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。