64位原生类型atomicy和内存总线?

时间:2013-08-22 18:31:16

标签: c cpu atomic cpu-architecture atomicity

我已经读过一些原生类型是原子的,只要它们不比内存总线宽并且对齐。我可能在这方面非常错误,但即使对于32位CPU(http://en.wikipedia.org/wiki/Front-side_bus),也不是通常64位的内存总线?在这种情况下,上述语句是否意味着读或写或对齐的64位本机类型是原子的?我查看了intel的文档,它说x86保证是32位及以下的原子 - 但我想确保我正确理解内存总线宽度部分。

谢谢!

1 个答案:

答案 0 :(得分:2)

内存总线的宽度与内存访问的原子性没有任何关系。您可以拥有一位内存总线,并且通过将总线保持64次读取或写入仍然可以进行原子64位内存访问。如果CPU和缓存之间的路径是32位且无法锁定缓存,则可以使用64位总线但不能访问原子64位内存。