关于ll/sc指令

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失败。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值