CN105095144B - 基于栅栏和锁的多核Cache一致性维护的方法和装置 - Google Patents
基于栅栏和锁的多核Cache一致性维护的方法和装置 Download PDFInfo
- Publication number
- CN105095144B CN105095144B CN201510440207.5A CN201510440207A CN105095144B CN 105095144 B CN105095144 B CN 105095144B CN 201510440207 A CN201510440207 A CN 201510440207A CN 105095144 B CN105095144 B CN 105095144B
- Authority
- CN
- China
- Prior art keywords
- lock
- hardware
- data
- fence
- core
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种基于栅栏和锁的多核Cache一致性维护的方法和装置,该方法为:对于相同地址的共享数据,在进行多核间的读写操作时,首先通过硬件栅栏保证写数据核获取硬件锁的操作先于读数据核对硬件锁的查询操作;其次,写数据核获取硬件锁后开始进行写操作,并在作废掉其他核cache空间的数据副本之后,释放硬件锁;其他核在进行读数据前首先需要查询硬件锁的状态,直到硬件锁被释放以后才开始进行读数据操作。该装置用来执行上述方法。本发明具有结构简单、使用灵活、编程易用性强等优点。
Description
技术领域
本发明主要涉及到片上多核微处理器的设计领域,特指一种适用于片上多核处理器中的cache一致性维护的方法。
背景技术
随着应用需求的增加以及芯片设计和制造技术的发展,需要在单个芯片上集成更多的资源,以提高单芯片的处理能力。然而,全局互连延迟、功耗、可靠性等因素使得单纯通过提高单处理器的频率来提高系统性能变得越来越难以实现。因此,在单芯片上集成多颗处理器核已经成为提高系统性能的主要发展方向。
为了提高访存性能,片上多核处理器往往采用共享存储结构,并且为了降低对存储器带宽的要求,往往为各个处理器核配备了私有的cache结构,cache极大的提升了片上多核访存的效率。但共享数据进入cache也产生了一个新问题即cache一致性要求:任意单核的一条读存储体指令(LOAD)所返回的值必须是由最近的一条对同一地址的写存储体指令(STORE)所写的值决定的。这一要求即为存储一致性需求,它实际上包含了存储器行为的两个重要方面:一致性协议(coherence)和访存次序(Event ordering)。一致性协议规定了一个读操作应该返回什么样的值。而访存次序则规定什么时候能将已写入的值返回给读操作。一致性协议保证多个处理器在同一时刻对同一物理位置能够读到相同的值。而访存次序则保证了各个处理器对同一物理位置的读写操作之间所应有的次序。
为了实现cache一致性要求,片上多核存储系统通常采用目录或监听的硬件解决方案,需要采用额外的结构跟踪共享数据块的状态,硬件开销较大;特别是随着片上多核系统集成度的提高,传统的基于目录或监听协议的硬件代价极大的增加了系统设计复杂度,总体功耗,以及响应时间。除目录和监听协议外,用户还可基于软件的方式实现cache一致性要求,但这些方法需要程序员从程序调度方面进行配合,才能确保访存次序,增加了程序员的负担,此外其效率相对硬件解决方案也较为低下。
综上所述,如何实现一种硬件结构简单、使用灵活、编程易用性强的cache一致性维护方法,从而可以高效集成在片上多核系统中,实现片上多核处理器在适度硬件复杂度下的性能提升,已经成为一个亟待解决的关键技术问题。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种结构简单、使用灵活、编程易用性强的基于栅栏和锁的多核Cache一致性维护的方法和装置。
为解决上述技术问题,本发明采用以下技术方案:
一种基于栅栏和锁的多核Cache一致性维护的方法,对于相同地址的共享数据,在进行多核间的读写操作时,首先通过硬件栅栏保证写数据核获取硬件锁的操作先于读数据核对硬件锁的查询操作;其次,写数据核获取硬件锁后开始进行写操作,并在作废掉其他核cache空间的数据副本之后,释放硬件锁;其他核在进行读数据前首先需要查询硬件锁的状态,直到硬件锁被释放以后才开始进行读数据操作。
作为本发明方法的进一步改进:所述写数据核为多个向不同地址写数据的处理器核,读数据核也为多个处理器核。
作为本发明方法的进一步改进:通过硬件栅栏保证所有写数据核获取硬件锁的操作先于读数据核对硬件锁的查询操作;其次,多个写数据核获取硬件锁后开始进行写操作,并在作废掉其他核cache空间的cache副本之后,释放硬件锁在所有获取核都完成释放后才会处于被释放的状态;其他核在进行读数据前首先需要查询硬件锁的状态,直到硬件锁被释放以后才开始进行读数据操作。
本发明进一步提供一种基于栅栏和锁的多核Cache一致性维护的装置,包括若干硬件栅栏和硬件锁;所述硬件栅栏用来实现任意核之间的同步,保证处理器核间的操作次序;所述硬件锁用来提供共享式获取以及状态查询功能。
作为本发明装置的进一步改进:一个硬件锁被一个或多个处理器核共同获取,当被多个核获取时,在所有核都执行释放操作后,硬件锁才能被完全释放;处理器核用来查询硬件锁是否被获取。
作为本发明装置的进一步改进:所述硬件锁以向量表的方式提供共享式获取,支持多个处理器核共同获取,同时支持释放操作;每个处理器核只能释放自己获取的锁,当一个锁被多个处理器核获取时,只有在所有的核都释放的前提下才能被完全释放;所述硬件栅栏支持任意核间的同步,提供相应寄存器用来设置同步的处理器核数目以及同步时间上限,同时支持同步过程超时的状态记录及查询。
作为本发明装置的进一步改进:若干所述硬件栅栏和若干所述硬件锁以组合的方式使用,即硬件锁的获取和释放之间可以插入硬件栅栏的同步操作;所述硬件栅栏和硬件锁则根据片上多核处理器的结构选择分布式或集中式的拓扑结构。
与现有技术相比,本发明的优点在于:
1、本发明的基于栅栏和锁的多核Cache一致性维护的方法和装置,硬件栅栏以及硬件锁的核心结构包含对应每个处理器核的向量表,硬件栅栏可以实现若干处理器核间的同步,硬件锁可以对获取核进行记录;相比传统的目录和监听的硬件解决方案,结构简单,且由于无需记录每块共享数据的状态,能够在适度硬件复杂读下高效实现cache一致性维护。
2、本发明的基于栅栏和锁的多核Cache一致性维护的方法和装置,硬件栅栏和硬件锁可以根据片上多核的具体拓扑,以分布式或集中式的方式进行构建,实现方式灵活,且与片上多核结构的粘合性好。
3、本发明中的一致性维护方法通过硬件栅栏进行简洁有效的操作次序维护,无需软件通过程序调度来保证程序执行顺序,有效降低了程序员的负担。
4、本发明中的一致性维护方法中读数据核通过查询锁的状态确定是否开始进行读数据操作,在查询不成功时读数据核可以处理与被读数据无关的其他操作,从而进一步提升了系统的性能,减少了读数据核的非必要等待。
5、本发明中的一致维护方法不仅可以支持单个核写操作和若干核读操作间的cache一致性维护,而且可以支持多个核写不同地址空间与多个核读相应地址空间之间的cache一致性维护。这个特点对于当前多核编程中常用的多个核并行生产数据到一段指定空间,再由多个核进行消费的处理模式而言,只需一个硬件栅栏和一个硬件锁的配合即可支持,使用高效且便捷。
附图说明
图1是本发明的结构框架原理示意图。
图2是本发明是本硬件栅栏和硬件锁的采用集中式结构拓扑示意图。
图3是本发明在具体应用实例中硬件栅栏和锁采用分布式结构的示意图。
图4是本发明在具体应用实例中基于硬件栅栏和硬件锁的单写多读的cache一致性维护流程图。
图5是本发明在具体应用实例中是基于硬件栅栏和硬件锁的多写多读的cache一致性维护流程图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
结合图1所示,本发明的基于栅栏和锁的多核Cache一致性维护的方法,为:对于相同地址的共享数据,在进行多核间的读写操作时,首先通过硬件栅栏保证写数据核获取硬件锁i的操作先于读数据核对硬件锁i的查询操作;其次,写数据核获取硬件锁i后开始进行写操作,并在作废掉其他核cache空间的数据副本之后,释放硬件锁i;其他核在进行读数据前首先需要查询硬件锁i的状态,直到硬件锁i被释放以后才开始进行读数据操作。
在具体应用时,写数据核可以为多个向不同地址写数据的处理器核,读数据核也可为多个处理器核,从而实现多对多的cache一致性维护。首先,通过硬件栅栏保证所有写数据核获取硬件锁i的操作先于读数据核对硬件锁i的查询操作;其次,多个写数据核获取硬件锁i后开始进行写操作,并在作废掉其他核cache空间的cache副本之后,释放硬件锁i需要在所有获取核都完成释放后才会处于被释放的状态;其他核在进行读数据前首先需要查询硬件锁i的状态,直到硬件锁i被释放以后才开始进行读数据操作。
如图1所示,在本发明方法的基础上,本发明进一步提供了一种基于栅栏和锁的多核Cache一致性维护的装置,该装置包括若干硬件栅栏和硬件锁;所述硬件栅栏可以实现任意核之间的同步,保证处理器核间的操作次序;所述硬件锁用来提供共享式获取,以及状态查询功能,即一个硬件锁可以被一个或多个处理器核共同获取,当被多个核获取时,需要所有核都执行释放操作后,硬件锁才能被完全释放,处理器核可以查询硬件锁是否被获取。
在具体应用实例中,硬件锁以向量表的方式提供共享式获取,支持多个处理器核共同获取,同时支持释放操作。每个处理器核只能释放自己获取的锁,当一个锁被多个处理器核获取时,只有在所有的核都释放的前提下才能被完全释放。硬件栅栏支持任意核间的同步,提供相应寄存器用来设置同步的处理器核数目以及同步时间上限,同时支持同步过程超时的状态记录及查询。
进一步,在较佳的实施例中,若干硬件栅栏可以和若干硬件锁以组合的方式使用,即硬件锁的获取和释放之间可以插入硬件栅栏的同步操作;硬件栅栏和硬件锁则可根据片上多核处理器的结构选择分布式或集中式的拓扑结构。
如图3所示,为在具体应用实例中硬件栅栏和锁采用分布式结构的实施方案。本实施方案将所有的硬件栅栏及硬件锁以子模块(Sub_SYNC)的形式均匀分布在片上网络节点上,并通过每个节点的请求控制器(AC)与片上网络连接。
如图2所示,为在具体应用实例中硬件栅栏和锁采用集中式结构实施方案。本实施方案将所有的硬件栅栏及硬件锁集中实现,通过与每个处理器节点上的AC直接相连,实现处理器之间的栅栏及锁操作。
如图4所示,为基于本发明硬件结构进行的单写多读cache一致性维护实施实例的具体流程图,其具体步骤如下:
S1:程序员通过每一个参与此次生产消费事件的核使用栅栏设置指令设置栅栏同步的进程个数(图中为3),标志着此次生产消费事件的启动。
S2:栅栏同步进程数目设置完成后,生产核获取k号锁,实现对共享区域的加锁,之后进入栅栏;所有消费核直接进入栅栏。
S3:所有生产核与所有消费核进入栅栏以后,进行栅栏释放,释放通过广播通知参与栅栏同步的处理器核,无关核不受影响。
S4:生产核向其他所有核广播数据作废操作,要求其他核作废私有数据 Cache中相应区域的数据拷贝,保证cache数据一致性。
S5:生产核对共享cache进行写操作。消费核在此期间可以进行不依赖于生产数据的处理,当需要使用共享数据时则开始查询k号锁当前状态,从而避免消费核的非必要等待。
S6:生产核完成数据生产后,释放k号锁;消费核查询k号锁,若已被释放则获取k号锁,然后进行数据访问,完成后各消费核释放各自占有的k号锁,离开此次存储一致性维护过程。
如图5所示,为是基于本发明硬件结构进行的多写多读cache一致性维护实施实例的具体流程图,其具体步骤如下:
S1:程序员通过每一个参与此次生产消费事件的核使用栅栏设置指令设置栅栏同步的进程个数(图中为3),标志着此次生产消费事件的启动。
S2:栅栏同步进程数目设置完成后,所有生产核获取k号锁,实现对共享区域的加锁,之后进入栅栏;所有消费核直接进入栅栏。
S3:所有生产消费核到达栅栏后,进行栅栏释放,释放通过广播通知参与栅栏同步的处理器核,无关核不受影响。
S4:所有生产核广播各自的数据作废操作,要求其他核作废私有数据 Cache中相应区域的数据拷贝,保证cache数据的一致性。
S5:生产核对共享cache进行写操作。消费核在此期间可以进行不依赖于生产数据的处理,当需要使用共享数据时则开始查询k号锁当前状态,从而避免消费核的非必要等待。
S6:生产核完成数据生产后,各自释放k号锁;消费核查询k号锁,若已被完全释放则获取k号锁,然后进行数据访问,完成后各消费核释放各自占有的k号锁,离开此次存储一致性维护过程。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
Claims (5)
1.一种基于栅栏和锁的多核Cache一致性维护的方法,其特征在于,对于相同地址的共享数据,在进行多核间的读写操作时,首先通过硬件栅栏保证写数据核获取硬件锁的操作先于读数据核对硬件锁的查询操作;其次,写数据核获取硬件锁后开始进行写操作,并在作废掉其他核cache空间的数据副本之后,释放硬件锁;其他核在进行读数据前首先需要查询硬件锁的状态,直到硬件锁被释放以后才开始进行读数据操作;
所述写数据核为多个向不同地址写数据的处理器核,读数据核也为多个处理器核;
所述硬件锁以向量表的方式提供共享式获取,支持多个处理器核共同获取,同时支持释放操作;每个处理器核只能释放自己获取的锁,当一个锁被多个处理器核获取时,只有在所有的核都释放的前提下才能被完全释放;所述硬件栅栏支持任意核间的同步,提供相应寄存器用来设置同步的处理器核数目以及同步时间上限,同时支持同步过程超时的状态记录及查询。
2.根据权利要求1所述的基于栅栏和锁的多核Cache一致性维护的方法,其特征在于,通过硬件栅栏保证所有写数据核获取硬件锁的操作先于读数据核对硬件锁的查询操作;其次,多个写数据核获取硬件锁后开始进行写操作,并在作废掉其他核cache空间的cache副本之后,释放硬件锁在所有获取核都完成释放后才会处于被释放的状态;其他核在进行读数据前首先需要查询硬件锁的状态,直到硬件锁被释放以后才开始进行读数据操作。
3.一种基于栅栏和锁的多核Cache一致性维护的装置,其特征在于,包括若干硬件栅栏和硬件锁;所述硬件栅栏用来实现任意核之间的同步,保证处理器核间的操作次序;所述硬件锁用来提供共享式获取以及状态查询功能;
对于相同地址的共享数据,在进行多核间的读写操作时,首先通过所述硬件栅栏保证写数据核获取硬件锁的操作先于读数据核对硬件锁的查询操作;其次,写数据核获取所述硬件锁后开始进行写操作,并在作废掉其他核cache空间的数据副本之后,释放所述硬件锁;其他核在进行读数据前首先需要查询所述硬件锁的状态,直到所述硬件锁被释放以后才开始进行读数据操作;
所述写数据核为多个向不同地址写数据的处理器核,读数据核也为多个处理器核;
所述硬件锁以向量表的方式提供共享式获取,支持多个处理器核共同获取,同时支持释放操作;每个处理器核只能释放自己获取的锁,当一个锁被多个处理器核获取时,只有在所有的核都释放的前提下才能被完全释放;所述硬件栅栏支持任意核间的同步,提供相应寄存器用来设置同步的处理器核数目以及同步时间上限,同时支持同步过程超时的状态记录及查询。
4.根据权利要求3所述的基于栅栏和锁的多核Cache一致性维护的装置,其特征在于,一个硬件锁被一个或多个处理器核共同获取,当被多个核获取时,在所有核都执行释放操作后,硬件锁才能被完全释放;处理器核用来查询硬件锁是否被获取。
5.根据权利要求3或4所述的基于栅栏和锁的多核Cache一致性维护的装置,其特征在于,若干所述硬件栅栏和若干所述硬件锁以组合的方式使用,即硬件锁的获取和释放之间可以插入硬件栅栏的同步操作;所述硬件栅栏和硬件锁则根据片上多核处理器的结构选择分布式或集中式的拓扑结构。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510440207.5A CN105095144B (zh) | 2015-07-24 | 2015-07-24 | 基于栅栏和锁的多核Cache一致性维护的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510440207.5A CN105095144B (zh) | 2015-07-24 | 2015-07-24 | 基于栅栏和锁的多核Cache一致性维护的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105095144A CN105095144A (zh) | 2015-11-25 |
CN105095144B true CN105095144B (zh) | 2018-08-24 |
Family
ID=54575623
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510440207.5A Active CN105095144B (zh) | 2015-07-24 | 2015-07-24 | 基于栅栏和锁的多核Cache一致性维护的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105095144B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107291371B (zh) * | 2016-03-31 | 2019-11-19 | 华为技术有限公司 | 一种读写锁的实现方法及装置 |
CN107436807A (zh) * | 2016-05-27 | 2017-12-05 | 深圳市中兴微电子技术有限公司 | 共享硬件资源的方法、控制器、存储器及系统 |
CN109840151B (zh) * | 2017-11-29 | 2021-08-27 | 大唐移动通信设备有限公司 | 一种用于多核处理器的负载均衡方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102681937A (zh) * | 2012-05-15 | 2012-09-19 | 浪潮电子信息产业股份有限公司 | 一种缓存一致性协议正确性验证方法 |
CN102693162A (zh) * | 2011-12-29 | 2012-09-26 | 中国科学技术大学苏州研究院 | 基于共享内存和核间中断的多核平台上多个虚拟机之间进程通信方法 |
CN102937915A (zh) * | 2012-11-28 | 2013-02-20 | 中国人民解放军国防科学技术大学 | 用于多核处理器的硬件锁实现方法及装置 |
CN103034593A (zh) * | 2012-12-11 | 2013-04-10 | 中国人民解放军国防科学技术大学 | 面向众核处理器的片上锁变量全局编址存储方法及装置 |
CN103279428A (zh) * | 2013-05-08 | 2013-09-04 | 中国人民解放军国防科学技术大学 | 一种显式的面向流应用的多核Cache一致性主动管理方法 |
CN104699631A (zh) * | 2015-03-26 | 2015-06-10 | 中国人民解放军国防科学技术大学 | Gpdsp中多层次协同与共享的存储装置和访存方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102103523A (zh) * | 2009-12-22 | 2011-06-22 | 国际商业机器公司 | 锁分配控制的方法和装置 |
-
2015
- 2015-07-24 CN CN201510440207.5A patent/CN105095144B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693162A (zh) * | 2011-12-29 | 2012-09-26 | 中国科学技术大学苏州研究院 | 基于共享内存和核间中断的多核平台上多个虚拟机之间进程通信方法 |
CN102681937A (zh) * | 2012-05-15 | 2012-09-19 | 浪潮电子信息产业股份有限公司 | 一种缓存一致性协议正确性验证方法 |
CN102937915A (zh) * | 2012-11-28 | 2013-02-20 | 中国人民解放军国防科学技术大学 | 用于多核处理器的硬件锁实现方法及装置 |
CN103034593A (zh) * | 2012-12-11 | 2013-04-10 | 中国人民解放军国防科学技术大学 | 面向众核处理器的片上锁变量全局编址存储方法及装置 |
CN103279428A (zh) * | 2013-05-08 | 2013-09-04 | 中国人民解放军国防科学技术大学 | 一种显式的面向流应用的多核Cache一致性主动管理方法 |
CN104699631A (zh) * | 2015-03-26 | 2015-06-10 | 中国人民解放军国防科学技术大学 | Gpdsp中多层次协同与共享的存储装置和访存方法 |
Non-Patent Citations (2)
Title |
---|
Efficient Synchronization for Embedded On-Chip Multiprocessors;Matteo Monchiero et al;《IEEE TRANSACTIONS ON VERY LARGE SCALE INTEGRATION (VLSI) SYSTEMS》;20061031;第14卷(第10期);第1049-1062页 * |
多核同步机制的设计权衡;叶伟军 等;《第十八届计算机工程与工艺年会暨第四届微处理器技术论坛论文集》;20140731;第2.2节,第3.1节,第3.2节,图1,图3 * |
Also Published As
Publication number | Publication date |
---|---|
CN105095144A (zh) | 2015-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2738698B1 (en) | Locking protocol for partitioned and distributed tables | |
CN102270180B (zh) | 一种多核处理器系统的管理方法 | |
EP2932370B1 (en) | System and method for performing a transaction in a massively parallel processing database | |
CN103729329B (zh) | 核间通信装置及方法 | |
CN105095144B (zh) | 基于栅栏和锁的多核Cache一致性维护的方法和装置 | |
CN104346317B (zh) | 共享资源访问方法和装置 | |
US9519652B2 (en) | Method, apparatus, and system for operating shared resource in asynchronous multiprocessing system | |
CN106850260A (zh) | 一种虚拟化资源管理平台的部署方法和装置 | |
JP2003131900A (ja) | サーバシステム運用管理方式 | |
US8195896B2 (en) | Resource sharing techniques in a parallel processing computing system utilizing locks by replicating or shadowing execution contexts | |
JP2015514247A (ja) | データベースへの中間層トランザクションログのインライン委譲をサポートするためのシステムおよび方法 | |
CN104462007B (zh) | 实现多核间缓存一致性的方法及装置 | |
CN105955910B (zh) | 一种面向飞腾高密度服务器系统的授时方法 | |
CN101887367A (zh) | 一种多级并行化编程方法 | |
KR20140138670A (ko) | 2-단계 커미트 호출들의 엄격한 순서화에 근거하여 트랜잭션 복구를 지원하는 시스템들 및 방법들 | |
WO2024109239A1 (zh) | 集群数据同步方法、装置、设备及非易失性可读存储介质 | |
CN109947575A (zh) | 读写锁的加锁、释放方法及相关系统 | |
WO2024124847A1 (zh) | 一种梯度数据的同步方法、系统、设备及存储介质 | |
WO2014205845A1 (zh) | 一种numa系统内存镜像配置方法、解除方法、系统和主节点 | |
WO2013097394A1 (zh) | 一种多处理器共享存储方法及系统 | |
WO2017181430A1 (zh) | 分布式系统的数据库复制方法及装置 | |
CN113905054B (zh) | 基于RDMA的Kudu集群数据同步方法、装置、系统 | |
CN110532069A (zh) | 一种分布式事务提交方法及装置 | |
CN106850354A (zh) | 一种单点故障的处理方法及装置 | |
CN106126878A (zh) | 电磁功能材料优化设计的粗颗粒并行方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |