日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

DMB DSB ISB 简介

發(fā)布時(shí)間:2025/3/21 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DMB DSB ISB 简介 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

DMB: Data memory barrier
理解DMB指令,先看下面例子,在core 0和core1上同時(shí)跑兩個(gè)不同的指令(如下表所示)

core 0core 1
Write A;Load B;
Write B;Load B;

這里core0在執(zhí)行兩個(gè)指令,寫(xiě)A B兩個(gè)值的時(shí)候,可能會(huì)發(fā)生亂序也可能Write A時(shí)發(fā)生Cache Miss,那么就會(huì)導(dǎo)致在cache中 A的最新值更新慢于B的最新值。于是在core1中的指令Load B就會(huì)拿到新值,而Load A 就會(huì)拿到舊值。如果A與B有相互關(guān)系的話,便可能產(chǎn)生死鎖等問(wèn)題。這里有一個(gè)典型的例子:https://lkml.org/lkml/2012/7/13/123

于是,就有了下面的解決方法:

core 0core 1
Write ALoad B
DMB;Load A
Write B

在core0所執(zhí)行的兩條指令之間加入一個(gè)DMB. 這樣,若core1在Load B時(shí),拿到了最新值。那么Load A 也一定拿到了最新值。這就是DMB的作用:DMB前面的LOAD/STORE讀寫(xiě)的最新值的acknowledgement在時(shí)間上一定先于DMB之后的指令。

SB 和DMB容易混淆。他們的區(qū)別在于:DMB可以繼續(xù)執(zhí)行之后的指令,只要這條指令不是內(nèi)存訪問(wèn)指令。而DSB不管它后面的什么指令,都會(huì)強(qiáng)迫CPU等待它之前的指令執(zhí)行完畢。其實(shí)在很多處理器設(shè)計(jì)的時(shí)候,DMB和DSB沒(méi)有區(qū)別(DMB完成和DSB同樣的功能)。他們以及ISB在arm reference中的解釋如下[1]:

A Data Synchronization Barrier (DSB) completes when all instructions before this instruction complete.
A Data Memory Barrier (DMB) ensures that all explicit memory accesses before the DMB instruction complete before any explicit memory accesses after the DMB instruction start.
An Instruction Synchronization Barrier (ISB) flushes the pipeline in the processor, so that all instructions following the ISB are fetched from cache or memory, after the ISB has been completed.
ISB不僅做了DSB所做的事情,還將流水線清空[2]。于是他們的重量級(jí)排序可以是:ISB>DSB>DMB

總結(jié)

以上是生活随笔為你收集整理的DMB DSB ISB 简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。