Lock 指令到底有什么用?
Orlion
·
2021-01-14
·
via 汇编
最近在看原子操作的原理,得知是通过 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 指令?
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。