标签: performance x86 x86-64 intel cpu-architecture
我试图找出是否可以在Ivy Bridge上编写一个包含各种数据类型(int,double,float等)的256位对象?
我看了一下英特尔手册和ctrl + f的“32字节”,但结果都讨论了相同数据类型的256位(所以4倍双倍或8倍浮点数等)。
我这样做是为了确保数据一致性的无锁设计的一部分 - 将所有256位数据加载在一起,然后分别提取各个组件。
答案 0 :(得分:3)
我进行了网络搜索,看来英特尔不保证32字节写入是原子的。我发现this表明即使是常规的 8 字节写也不能保证原子。
Intel提供比较和交换8字节指令,这是原子的。
底线是我认为你需要采取另一种方法。