AVX512集中是否有原子CAS指令或等效指令?
我无法立即找到一个,但没有最好的谷歌。
答案 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
/ xend
与lock cmpxchg
相比有多贵。
你也不需要AVX512;整个事务以原子方式提交或根本不提交,因此您可以使用一对AVX2加载/比较指令来实现64字节CAS。