我读了 ARM 架构参考手册中的内存屏障,我看到了数据内存屏障(DMB)指令。
我的问题是 DMB 指令(特别是 'dmb ish')块核心?
例如,四核架构(核心 0-3),核心 0 执行 DMB 指令,然后其他核心阻塞,直到某种屏障执行流(控制流,例如核心-缓存控制器-内存控制器)?
或者 dmb 指令与这些部分完全没有关系?
在 ARM 参考手册(https://developer.arm.com/documentation/dui0802/a/A32-and-T32-Instructions/DMB--DSB--and-ISB)中,DMB 指令不影响除内存访问(ld,st)以外的其他指令执行。但是我对这部分很好奇。
很明显,“dmb ish”永远不会影响其他内核的执行?
DMB 只影响当前正在运行的线程中的指令顺序。对于任何同步跨线程和跨核心的东西,你需要一些更高级别的原语,如信号量或互斥体(通常一些操作系统支持有效地处理它)。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(41条)