x86上顺序一致的原子载荷

axe*_*axe 2 assembly load atomic memory-fences

我对x86上的顺序一致的加载操作感兴趣.据我所知,汇编程序列表由编译器生成,它在x86上实现为普通加载,但据我所知,普通加载有保证获得语义,而普通商店保证有释放.顺序一致的存储实现为锁定的xchg,而加载为普通负载.这听起来很奇怪,你能详细解释一下吗?

添加

刚刚在互联网上找到,顺序一致的原子载荷可以作为简单的mov完成,只要存储是用锁定的xchg完成的,但是没有证据也没有文档链接.你知道我在哪里可以读到这个吗?

提前致谢.

Ant*_*ams 8

MOV只要SC存储使用LOCKed指令完成,值正确对齐,并且使用"正常"WB缓存模式,x86上的plain 就足以进行原子顺序一致的加载.

见我的博客文章http://www.justsoftwaresolutions.co.uk/threading/intel-memory-ordering-and-c++-memory-model.html为全面映射,并在英特尔处理器文档的http://开发商.intel.com/products/processor/manuals/index.htm了解允许的订单详情.

如果您使用"WC"缓存模式或"非暂时"指令,MOVNTI则所有投注都将关闭,因为处理器不一定及时将数据写回主存储器.