[发明专利]一种基于缓存一致性原理的原子操作实现方法及装置有效
申请号: | 201510501567.1 | 申请日: | 2015-08-14 |
公开(公告)号: | CN105094840B | 公开(公告)日: | 2019-01-29 |
发明(设计)人: | 倪璠 | 申请(专利权)人: | 浪潮(北京)电子信息产业有限公司 |
主分类号: | G06F9/52 | 分类号: | G06F9/52 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 罗满 |
地址: | 100085 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 缓存 一致性 原理 原子 操作 实现 方法 装置 | ||
本发明实施例公开了一种基于一致性原理的原子操作实现方法及装置,包括当处理器对锁定地址执行原子操作时,将所述锁定地址的协议初始状态转换为保持态;其中,在所述锁定地址处于保持态时,阻止其他处理器对所述锁定地址的读写操作;执行所述处理器对所述锁定地址的读写操作,当所述锁定地址处于保持态时,处理器的缓存一致性维护机制保证只有当前处理器能够对所述锁定地址执行读写操作,其它处理器对所述锁定地址的操作均需暂停等待,从而保证处理器对锁定地址的原子操作。
技术领域
本发明涉及计算机系统结构技术领域,更具体地说,涉及一种基于缓存一致性原理的原子操作实现方法及装置。
背景技术
在多线程程序中,对共享变量的互斥访问的实现一般依赖于自旋锁(spinlock),而自旋锁的实现需要执行“测试-设置”原子操作(TestAndSet)。这种原子操作需要专门的硬件支持才能完成。在自旋锁的实现中,处理器首先对锁定地址执行读操作,并在写入之前执行测试操作,检测读操作发送后是否有其它处理器对该地址执行了读写操作;若没有其它处理器对该地址执行读写操作,则执行写入操作;否则,重复上述读操作,并执行检查直至满足写入条件。当系统集成的处理器核数较多,并且均对该地址发起访问时,上述操作可能需要经过很长时间才能完成,导致数据的同步操作效率低下。
因此,如何降低原子操作涉及的读写操作时间,提升数据同步效率,是现在需要解决的问题。
发明内容
本发明的目的在于提供一种基于缓存一致性原理的原子操作实现方法及装置,以降低原子操作涉及的读写操作时间,提升数据同步效率。
为实现上述目的,本发明实施例提供了如下技术方案:
一种基于缓存一致性原理的原子操作实现方法,包括:
当处理器对锁定地址执行原子操作时,将所述锁定地址的协议初始状态转换为保持态;其中,在所述锁定地址处于保持态时,阻止其他处理器对所述锁定地址的读写操作;
执行所述处理器对所述锁定地址的读写操作。
优选的,将所述锁定地址的协议初始状态转换为保持态之后,还包括:
设置所述处理器对所述锁定地址的保持时长;
当所述锁存地址处于保持态的时长大于所述保持时长时,解除所述锁定地址的保持态,恢复与所述保持态相对应的协议状态。
优选的,将所述锁定地址的协议初始状态转换为保持态,包括:
若所述锁定地址的协议初始状态为无效态或者共享态,则所述处理器请求独占保持态;
若所述锁定地址的协议初始状态为独占态,则将所述独占态转换为独占保持态;
若所述锁定地址的协议初始状态为修改态,则将所述修改态转换为修改保持态。
优选的,若所述锁定地址处于独占保持态,则执行所述处理器的读操作时,保持所述锁定地址处于独占保持态不变;执行所述处理器的写操作时,将所述锁定地址的协议状态变为修改保持态;
若所述锁定地址处于修改保持态,则执行所述处理器的读操作和写操作时,所述锁定地址的协议状态不变。
优选的,若所述锁定地址处于独占保持态,并且所述锁存地址处于独占保持态的时长大于所述保持时长,将所述锁定地址的协议状态转换为独占态;
若所述锁定地址处于修改保持态,并且所述锁存地址处于修改保持态的时长大于所述保持时长,将所述锁定地址的协议状态转换为修改态。
一种基于缓存一致性原理的原子操作实现装置,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮(北京)电子信息产业有限公司,未经浪潮(北京)电子信息产业有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510501567.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种插件的资源调用方法和装置
- 下一篇:一种响应式图形化的生成方法与系统