SPARC v9 是否有双字比较和交换指令?
所以; 在兼容 v9 的 64 位 SPARC CPU 上,存在我知道的 cas 指令。 这对单字长度值进行操作。
我还在网上看到了对 casx 指令的引用 - 但我找不到更多关于它的信息。
我想知道 - 这是双字比较和交换吗?
如果没有,那么普遍的问题是: 是否有双字比较和交换?
So; on a 64 bit SPARC CPU which is v9 compliant, there exists I know a cas instruction. This operates on single word length values.
I've also seen on the web reference to a casx instruction - but I can't find out anything much more about it.
I'm wondering - is this a double word compare and swap?
And if not, the general question is; IS there a double word compare and swap?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
另请注意,
casx
确实存在,但它是casxa
的合成指令(即简化的助记符)。 请参阅前述 SPARC 架构手册中的表 43:Also note that
casx
does exist, however it's a synthetic instruction (i.e. a simplified mnemonic) forcasxa
. See Table 43 in the aforementioned SPARC Architecture Manual:Sparc64——现代CPU中唯一的——既不实现双宽CAS也不实现LL/SC。 因此,实现无锁代码是有问题的。 有一个解决方案,但它们是针对其他平台上不存在的问题(ABA)的解决方案,因为它们支持 CAS 或 LL/SC。 此外,由于这一限制,一系列无锁算法无法在 Space 上实现。
Sparc64 - alone amongst modern CPUs - implements neither double wide CAS nor LL/SC. As such, implementing lock-free code is problematic. There a solutions, but they are solutions to a problem (ABA) which does not exist on other platforms because of their support for CAS or LL/SC. Furthermore, a range of lock-free algorithms cannot be implemented on Sparce because of this limitation.
CASXA。 请参见SPARC 体系结构手册。
CASXA. See The SPARC Architecture Manual.