机器字大小(或更小)的写入是否已序列化?只需一个本机操作码即可将寄存器内容复制到 RAM。
将数据写入 RAM 是原子的。如果两个 CPU 尝试同时写入同一位置,内存控制器将决定写入的某种顺序。当一个 CPU 写入内存时,另一个 CPU 将根据需要停顿多个周期,直到第一个写入完成;那么它将覆盖它的值。这就是所谓的竞争条件.
小于本机字大小的写入不是原子的 - 在这种情况下,CPU 必须将旧内存值读入寄存器,将新字节写入寄存器,然后将该新值写回内存。
您永远不应该有依赖于此的代码——如果您有多个 CPU 试图同时写入同一内存位置,那么您就做错了。
另一个重要的考虑因素是缓存一致性问题。每个CPU都有自己的缓存。如果一个 CPU 将数据写入其缓存,则其他 CPU 如果想要读取该数据值,则需要了解该数据值的更改。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)