博客
关于我
DMB DSB ISB 简介
阅读量:333 次
发布时间:2019-03-04

本文共 1200 字,大约阅读时间需要 4 分钟。

DMB: Data memory barrier
理解DMB指令,先看下面例子,在core 0和core1上同时跑两个不同的指令(如下表所示)

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

这里core0在执行两个指令,写A B两个值的时候,可能会发生乱序也可能Write A时发生Cache Miss,那么就会导致在cache中 A的最新值更新慢于B的最新值。于是在core1中的指令Load B就会拿到新值,而Load A 就会拿到旧值。如果A与B有相互关系的话,便可能产生死锁等问题。这里有一个典型的例子:https://lkml.org/lkml/2012/7/13/123

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

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

在core0所执行的两条指令之间加入一个DMB. 这样,若core1在Load B时,拿到了最新值。那么Load A 也一定拿到了最新值。这就是DMB的作用:DMB前面的LOAD/STORE读写的最新值的acknowledgement在时间上一定先于DMB之后的指令。

SB 和DMB容易混淆。他们的区别在于:DMB可以继续执行之后的指令,只要这条指令不是内存访问指令。而DSB不管它后面的什么指令,都会强迫CPU等待它之前的指令执行完毕。其实在很多处理器设计的时候,DMB和DSB没有区别(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]。于是他们的重量级排序可以是:ISB>DSB>DMB

转载地址:http://tdve.baihongyu.com/

你可能感兴趣的文章
神经网络二之手写数字识别
查看>>
神经网络四之计算损失函数
查看>>
神经网络六之反向传播
查看>>
计算机网络五层协议
查看>>
第五章 数字滤波器的基本结构之三
查看>>
第六章 IIR数字滤波器的设计方法之三全通系统
查看>>
kinect人体骨架25点
查看>>
FANUC机器人R-30iB_R-30iB PLUS备件规格型号统计整理
查看>>
如何在VM station虚拟机中安装西门子博途TIA PORTAL?
查看>>
FANUC机器人的镜像备份操作及U盘格式化具体步骤
查看>>
vue-依赖-点击复制
查看>>
vue如何配置兼容ie es6转es5
查看>>
js井子棋
查看>>
vue项目如何区分开发、生产和测试环境
查看>>
css取消双击选中文字
查看>>
LeetCode 116填充每个节点的下一个右侧结点指针
查看>>
C++小笔记——function绑定重载函数、私有继承用的条件
查看>>
最近一些算法题的总结
查看>>
2021-4-28【PTA】【L2-1 包装机 (25 分)】
查看>>
2021-5-2【指针】【作业】【指针代替下标进行数组编程】
查看>>