六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 124|回复: 0

关于ll/sc指令

[复制链接]

升级  48%

6

主题

6

主题

6

主题

童生

Rank: 1

积分
24
 楼主| 发表于 2013-1-15 01:49:48 | 显示全部楼层 |阅读模式
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失败。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表