【发布时间】:2014-08-02 07:37:43
【问题描述】:
Intel 64 and IA-32 Architectures Software Developer's Manual 表示 遵循单个处理器对操作的重新排序(第 8.2.2 节, “P6 和最新处理器系列中的内存排序”):
读取可能会随着旧写入到不同位置而重新排序,但 不是旧的写入相同的位置。
然后在下面讨论与之前相比放松的地方 处理器,它说:
存储缓冲区转发,当读取将写入传递到同一内存时 位置。
据我所知,“存储缓冲区转发”没有精确定义 任何地方(也不是“通过”)。读通过写是什么意思 到这里的同一个位置,因为上面说不能读取 重新排序并写入相同的位置?
【问题讨论】:
-
相关:Can a speculatively executed CPU branch contain opcodes that access RAM? 描述了存储缓冲区是什么以及它存在的原因,与它对内存模型的影响分开。 (对于 x86 正常加载/存储(不是 NT),它几乎是程序顺序 + 存储缓冲区和存储转发;参见 Globally Invisible load instructions
标签: assembly x86 intel cpu-architecture memory-model