AVX512比较和交换

时间:2018-01-04 09:37:16

标签: x86 avx compare-and-swap avx512

AVX512集中是否有原子CAS指令或等效指令?

我无法立即找到一个,但没有最好的谷歌。

1 个答案:

答案 0 :(得分:2)

除了lock cmpxchg16b(16字节)之外,x86没有任何保证原子操作宽于8个字节。对齐的向量加载/存储在当前CPU上是元素原子的(即在8字节元素内没有撕裂),although it's not clear if the documentation guarantees that

您是否希望使用64字节的整个缓存行CAS?没有单一的指示。

仅AVX512不能提供,但TSX (transactional memory)你可以自己动手。在事务中放置一个load + compare + store。 IDK xbegin / xendlock cmpxchg相比有多贵。

你也不需要AVX512;整个事务以原子方式提交或根本不提交,因此您可以使用一对AVX2加载/比较指令来实现64字节CAS。