ARM处理器上的数据内存屏障和数据同步屏障之间的区别

时间:2019-07-29 13:10:06

标签: c++ c arm memory-barriers

我正在使用硬件寄存器控制DMA,并在工作中查看其他代码,我发现它们使用数据存储器/同步屏障指令(dmb()和dsb()),然后尝试从{{3} }。我使用的平台是基于ARM的体系结构。

在代码中,我看到它们是这样实现的:

/* Data Synchronization Barrier */
#define dsb() __asm__ __volatile__ ("dsb" : : : "memory")

/* Data Memory Barrier */
#define dmb() __asm__ __volatile__ ("dmb" : : : "memory")

两者之间有什么区别?我无法分辨出差异。

0 个答案:

没有答案