assembly 数据存储器屏障(DMB)指令是否会阻塞ARM多核架构中的核?

o3imoua4  于 2023-04-30  发布在  其他
关注(0)|答案(2)|浏览(140)

我读了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'不会影响其他核心的执行?

ajsxfq5m

ajsxfq5m1#

它对指令执行没有明显的影响;但是对由这些指令从存储器子系统读取或写入到存储器子系统的数据有巨大的影响。以及对这些指令执行速度的非常明显的影响
正如Nate Eldridge指出的那样,架构手册描述了这些指令的效果,但没有描述实现,不同的ARM芯片之间可能会有很大的差异。
您可能期望从特定实现中获得的内容:

  • 每个核心都必须将其缓存同步引擎驱动到检查点,这可能会使其他核心停滞数百个CPU周期。
  • 该指令解码队列可能会停止或被完全丢弃。
  • 其他核的L1高速缓存可能部分或完全无效,从而对其他核造成显著的性能损失。

在具有多个CPU芯片的系统上,其中同步必须同步芯片之间的L2高速缓存,结果将相应地更昂贵。

6rqinv9w

6rqinv9w2#

DMB仅影响当前运行线程中的指令顺序。对于任何跨线程和跨核同步的事情,您需要一些更高级别的原语,如信号量或互斥体(通常还有一些操作系统支持以有效地处理它)。

相关问题