Lock 指令到底有什么用?
資深大佬 : Orlion 0
最近在看原子操作的原理,得知是通过 Lock 指令保证了内存读写原子性,其原理是
- CPU 保证 Lock 后缀后跟的指令原子性
- 老 CPU 上通过锁总线来保证可见性
- 新 CPU 上如果数据存在于 cpu cache 上时通过 MESI 协议来实现可见性,否则还是锁总线
对此我产生了几个问题:
- 难道不声明 Lock CPU 就不通过 MESI 协议保证 cache 一致性吗?我觉得不是, https://strikefreedom.top/cpu-caches-theory-and-application 这篇文章的 demo 中并没有声明 Lock 指令,但仍然出现了缓存失效。
- 是不是除了 cpu cache 外还有 store buffer 和 invalid queue 会影响可见性,所以 CPU 只能保证 cache 的一致性但保证不了其他硬件缓存层面的一致性,所以还是需要 Lock 指令?
大佬有話說 (7)