你的问题在于对cpu的理解太少
在读完读懂量化体系结构之前,不建议你去碰memory consistency model
store buffer的位置可以看这张图
https://www.researchgate.net/figure/Caches-With-Store-Buffers_fig7_228824849
【 在 Maksim (Marksim) 的大作中提到: 】
: 标 题: Re: struct 内成员变量多线程可见性的问题
: 发信站: 水木社区 (Fri Mar 26 15:34:00 2021), 站内
:
: 我这里说的 store, load 都是 std::atomic_store, std::atomic_load。在 C++ 层面,std::atomic 逻辑上对 consistency 模型做了明确得语义描述。编译器根据语义在生成指令时会根据架构选择一条或者多条指令来选择加不加 barrier,xchg 或者 mov-store 或者 mov-store + mfence。在给定语义下 (比如 sequential consistency),对应的指令就要把 store buffer 写回内存。
:
: p.s. "store buffer 出去后进的是 cache" 我不确定,我看到的不是这样。道理上,store buffer 就是缓存内存写。而且 cpu 在读 cache 时也会查找 store buffer,写回 cache 不是多此一举吗?
:
: 【 在 BigCarrot 的大作中提到: 】
: : :
: : 你仍然没有搞清楚
: : 从store buffer出去之后进的是cache,离内存还远着呢
: : ...................
:
: --
:
: ※ 来源:·水木社区
http://www.newsmth.net·[FROM: 167.220.233.*]
--
FROM 71.198.160.*