AVX512比较和交换

问题描述 投票:1回答:1

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

我不能立即找到一个,但没有最好的谷歌福。

x86 avx compare-and-swap avx512
1个回答
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。

© www.soinside.com 2019 - 2024. All rights reserved.