[发明专利]实现自适应锁的方法和装置以及多核处理器系统有效
申请号: | 201110394780.9 | 申请日: | 2011-12-02 |
公开(公告)号: | CN102566979A | 公开(公告)日: | 2012-07-11 |
发明(设计)人: | 秦岭;陈渝;崔岩;吴瑾 | 申请(专利权)人: | 华为技术有限公司;清华大学 |
主分类号: | G06F9/38 | 分类号: | G06F9/38 |
代理公司: | 北京龙双利达知识产权代理有限公司 11329 | 代理人: | 王君;肖鹂 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 实现 自适应 方法 装置 以及 多核 处理器 系统 | ||
技术领域
本发明实施例涉及计算机领域,并且更具体地,涉及实现自适应锁的方法和装置以及多核处理器系统。
背景技术
随着芯片技术的不断发展,多处理器核系统已经越来越普及。为了最大限度地发挥多处理器核的潜力,应用程序通常采用多线程的方式进行并行运行。
现在的大部分架构的计算机系统,例如SMP(SymmetricalMulti-Processing Architecture,对称多处理架构)、NUMA(Non UniformMemory Access Architecture,非一致内存访问架构),提供了统一的物理内存地址空间。因此,多个应用程序或线程可以通过共享变量来访问(读操作或写操作)同一个内存地址。但是,对同一个内存地址的并行访问,必然存在竞争。例如,两个线程同时访问一个内存地址,有可能会引起资源冲突。为了避免这样的冲突,处理器核提供了多种同步机制来保护共享的存储设备和/或共享的硬件高速缓存中的共享资源,例如自旋锁、互斥锁等。
并行多线程访问共享资源时,必然会竞争保护该共享资源的锁。随着核数的增多,并行线程的增多,锁竞争度也变得越来越激烈,以至于会对应用程序的性能产生较大的影响。因此,需要采取有效的措施降低锁竞争、避免锁抖动,进而提高系统性能。
发明内容
本发明实施例提供了一种实现自适应锁的方法以及装置以及多核处理器系统,针对系统中处理器核的锁机制,能够一定程度上解决多线程竞争同一个锁时产生的锁抖动。
一方面,提供了一种实现自适应锁的方法,包括:当新的第一线程尝试获得自适应锁时,如果所述自适应锁空闲,则使所述第一线程获得所述自适应锁,否则使所述第一线程根据竞争所述自适应锁的激烈程度进入自旋状态或者节能状态;当所述第一线程处于节能状态,使所述第一线程等待被唤醒进入自旋状态,或者当所述第一线程处于自旋状态,使所述第一线程竞争所述自适应锁,直到所述第一线程竞争到所述自适应锁并对所述自适应锁保护的共享资源操作完毕,释放所述自适应锁;当所述自适应锁被释放时,如果有处于节能状态的线程,则唤醒另一个处于节能状态的线程以使其进入自旋状态,以便与其他处于自旋状态的线程一同竞争所述自适应锁。
另一方面,提供了一种实现自适应锁的装置,包括:确定单元,用于当新的第一线程尝试获得自适应锁时,如果所述自适应锁空闲,则使所述第一线程获得所述自适应锁,否则使所述第一线程根据竞争所述自适应锁的激烈程度进入自旋状态或者节能状态;竞争单元,用于当所述第一线程处于节能状态,使所述第一线程等待被唤醒进入自旋状态,或者当所述第一线程处于自旋状态,使所述第一线程竞争所述自适应锁,直到所述第一线程竞争到所述自适应锁并对所述自适应锁保护的共享资源操作完毕,释放所述自适应锁;唤醒单元,用于当所述自适应锁被释放时,如果有处于节能状态的线程,则唤醒另一个处于节能状态的线程以使其进入自旋状态,以便与其他处于自旋状态的线程一同竞争所述自适应锁。
再一方面,提供了一种多核处理器系统,包括:两个或更多个处理器核,以及共享的硬件资源;所述两个或更多个处理器核访问由自适应锁保护的所述共享的硬件资源;其中每个所述处理器核用于:当新的第一线程尝试获得自适应锁时,如果所述自适应锁空闲,则使所述第一线程获得所述自适应锁,否则使所述第一线程根据竞争所述自适应锁的激烈程度进入自旋状态或者节能状态;当所述第一线程处于节能状态,使所述第一线程等待被唤醒进入自旋状态,或者当所述第一线程处于自旋状态,使所述第一线程竞争所述自适应锁,直到所述第一线程竞争到所述自适应锁并对所述自适应锁保护的共享资源操作完毕,释放所述自适应锁;当所述自适应锁被释放时,如果有处于节能状态的线程,则唤醒另一个处于节能状态的线程以使其进入自旋状态,以便与其他处于自旋状态的线程一同竞争所述自适应锁。
可见,本发明实施例的可扩展的自适应锁的实现技术,由于能够根据自适应锁的竞争程度(即竞争自适应锁的线程的数目多少)选择合适的锁模式,当竞争自适应锁的线程的数目超过一定数量,使超出的部分线程进入节能状态,而保证不超过一定数量的处于自旋状态的线程在竞争自适应锁,只有当一个处于自旋状态的线程在访问自适应锁保护的共享资源后才相应地使一个处于节能状态的线程进入自旋状态,从而避免了多线程在竞争同一个锁时产生的锁抖动,进而降低了系统的开销,提高了系统的性能。
附图说明
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司;清华大学,未经华为技术有限公司;清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110394780.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:道路拥堵状况实时查询系统及方法
- 下一篇:触摸控制方法和电子设备