所以; 在符合 v9 的 64 位 SPARC CPU 上,存在我知道cas指令。这对单个字长值进行操作。
我还在网上看到了对casx指令的引用——但我找不到更多关于它的信息。
我想知道 - 这是一个双字比较和交换吗?
如果不是,一般的问题是;是否有双字比较和交换?
卡萨。请参阅SPARC 体系结构手册。
另请注意,它casx
确实存在,但它是casxa
. 请参见上述 SPARC 体系结构手册中的表 43 :
Synthetic: casx [regrs1], regrs2, regrd
Instruction: casxa [regrs1]#ASI_P, regrs2, regrd
Description: compare and swap extended
Sparc64 - 仅在现代 CPU 中 - 既不实现双宽 CAS 也不实现 LL/SC。因此,实现无锁代码是有问题的。有一个解决方案,但它们是解决问题(ABA)的方法,因为它们支持 CAS 或 LL/SC,所以在其他平台上不存在该问题。此外,由于这个限制,一系列无锁算法无法在 Sparce 上实现。