【发布时间】:2018-10-17 19:10:03
【问题描述】:
关于ARMDSB内存屏障instruction:
DSB-
数据同步屏障作为一种特殊的内存 屏障。此指令后无程序顺序指令 执行直到该指令完成。
很好理解,下一个:
此指令完成 什么时候:
此指令完成之前的所有显式内存访问。
在此之前的所有缓存、分支预测器和 TLB 维护操作 指令完成。
等等,缓存、分支预测器和 TLB 维护到底是什么意思?是冲洗的意思吗?这是否意味着DSB 指令本身可以触发这种刷新?还有什么被认为是维护?
【问题讨论】:
-
我认为它们意味着正常加载/存储指令的所有缓存副作用在 DSB 之后的任何内容之前完成,以及任何显式 TLB 无效指令的影响。
-
@PeterCordes 分支预测器维护怎么样?
-
如果您在缓存、预测器或 TLB 上执行 CP15 操作时专门执行
mcr cp15...,则这些操作将完成。通常,可能会有几条指令组合在一起,然后根据用例发出DSB。例如,您可能会在更新 MMU 表时使缓存和 TLB 无效。
标签: caching assembly arm cpu-cache memory-barriers