Tuesday, December 23, 2008

PowerPC上的原子操作

众所周知,PowerPC上没有直接的CAS指令。替代的,我们有linked load和store conditional指令提供。Linked load和Store conditional指令完全可以达到和CAS(addr, exp, new)一样的效果。

do{
if (LL(addr)!=exp) return false;
}
until SC(addr, new); return true;
性能上,我们照例可以用Performance Inspector测试,结果如下所示:

图中用到的指令可以参考PPC 5.3指令集.

0 comments: