`
geekish
  • 浏览: 15038 次
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于ll/sc指令

OS 
阅读更多

ls/sc指令对主要的应用场合在多线程环境,有必要先来了解一下什么是ABA问题 。这个问题,简单的说来,是破坏了一个假设,即如果前后从同一位置读取的值相同,那么在这两次读之间这个位置的值就从未改变过。也许这个问题,改个名字叫做RWR问题来的更加直观。至于这个问题是否成其为一个问题,这里就不赘述了。

 

 

实际上,类似的ll/sc的CAS(compare-and-swap )操作就基于上面提到的假设。对基于ld/st的RISC体系结构来说,CAS的方法是不合理的,所以才需要ll/sc。CAS在软件事务内存(STM)中的应用 已经有人研究过,但是ld/st对STM的支持还没见到有人研究?

 

 

实现ll/sc的关键在于CPU(from programmer's view)对load-locked操作的内存位置发生的写操作的监视。如果这个位置可以缓存(该位置是否可以缓存依赖实现)的,这个任务会通过缓存监听逻辑实现。这里有个粒度的问题,粒度越大,目标位置附近越大范围的内存修改都会让cpu觉察到,从而引起sc失败。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics