AVX512 比较和交换

AVX512 Compare and Swap

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

我不能立即找到一个,但没有最好的google fu。

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

您是否希望使用 64 字节的全缓存行 CAS?没有单一的说明。

AVX512 本身不提供,但使用 TSX (transactional memory) 您可以自己推出。将加载+比较+存储放在事务中。 IDK xbegin / xendlock cmpxchg.

相比有多贵

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