我这里说的 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,离内存还远着呢
: ...................
--
FROM 167.220.233.*