基于栅栏和锁的多核Cache一致性维护的方法和装置的制造方法

文档序号:9375532阅读:450来源:国知局
基于栅栏和锁的多核Cache一致性维护的方法和装置的制造方法
【技术领域】
[0001]本发明主要涉及到片上多核微处理器的设计领域,特指一种适用于片上多核处理器中的cache —致性维护的方法。
【背景技术】
[0002]随着应用需求的增加以及芯片设计和制造技术的发展,需要在单个芯片上集成更多的资源,以提高单芯片的处理能力。然而,全局互连延迟、功耗、可靠性等因素使得单纯通过提高单处理器的频率来提高系统性能变得越来越难以实现。因此,在单芯片上集成多颗处理器核已经成为提高系统性能的主要发展方向。
[0003]为了提高访存性能,片上多核处理器往往采用共享存储结构,并且为了降低对存储器带宽的要求,往往为各个处理器核配备了私有的cache结构,cache极大的提升了片上多核访存的效率。但共享数据进入cache也产生了一个新问题即cache —致性要求:任意单核的一条读存储体指令(LOAD)所返回的值必须是由最近的一条对同一地址的写存储体指令(STORE)所写的值决定的。这一要求即为存储一致性需求,它实际上包含了存储器行为的两个重要方面:一致性协议(coherence)和访存次序(Event ordering)。一致性协议规定了一个读操作应该返回什么样的值。而访存次序则规定什么时候能将已写入的值返回给读操作。一致性协议保证多个处理器在同一时刻对同一物理位置能够读到相同的值。而访存次序则保证了各个处理器对同一物理位置的读写操作之间所应有的次序。
[0004]为了实现cache —致性要求,片上多核存储系统通常采用目录或监听的硬件解决方案,需要采用额外的结构跟踪共享数据块的状态,硬件开销较大;特别是随着片上多核系统集成度的提高,传统的基于目录或监听协议的硬件代价极大的增加了系统设计复杂度,总体功耗,以及响应时间。除目录和监听协议外,用户还可基于软件的方式实现cache—致性要求,但这些方法需要程序员从程序调度方面进行配合,才能确保访存次序,增加了程序员的负担,此外其效率相对硬件解决方案也较为低下。
[0005]综上所述,如何实现一种硬件结构简单、使用灵活、编程易用性强的cache —致性维护方法,从而可以高效集成在片上多核系统中,实现片上多核处理器在适度硬件复杂度下的性能提升,已经成为一个亟待解决的关键技术问题。

【发明内容】

[0006]本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种结构简单、使用灵活、编程易用性强的基于栅栏和锁的多核Cache —致性维护的方法和
目.ο
[0007]为解决上述技术问题,本发明采用以下技术方案:
一种基于栅栏和锁的多核Cache —致性维护的方法,对于相同地址的共享数据,在进行多核间的读写操作时,首先通过硬件栅栏保证写数据核获取硬件锁的操作先于读数据核对硬件锁的查询操作;其次,写数据核获取硬件锁后开始进行写操作,并在作废掉其他核cache空间的数据副本之后,释放硬件锁;其他核在进行读数据前首先需要查询硬件锁的状态,直到硬件锁被释放以后才开始进行读数据操作。
[0008]作为本发明方法的进一步改进:所述写数据核为多个向不同地址写数据的处理器核,读数据核也为多个处理器核。
[0009]作为本发明方法的进一步改进:通过硬件栅栏保证所有写数据核获取硬件锁的操作先于读数据核对硬件锁的查询操作;其次,多个写数据核获取硬件锁后开始进行写操作,并在作废掉其他核cache空间的cache副本之后,释放硬件锁在所有获取核都完成释放后才会处于被释放的状态;其他核在进行读数据前首先需要查询硬件锁的状态,直到硬件锁被释放以后才开始进行读数据操作。
[0010]本发明进一步提供一种基于栅栏和锁的多核Cache —致性维护的装置,包括若干硬件栅栏和硬件锁;所述硬件栅栏用来实现任意核之间的同步,保证处理器核间的操作次序;所述硬件锁用来提供共享式获取以及状态查询功能。
[0011]作为本发明装置的进一步改进:一个硬件锁被一个或多个处理器核共同获取,当被多个核获取时,在所有核都执行释放操作后,硬件锁才能被完全释放;处理器核用来查询硬件锁是否被获取。
[0012]作为本发明装置的进一步改进:所述硬件锁以向量表的方式提供共享式获取,支持多个处理器核共同获取,同时支持释放操作;每个处理器核只能释放自己获取的锁,当一个锁被多个处理器核获取时,只有在所有的核都释放的前提下才能被完全释放;所述硬件栅栏支持任意核间的同步,提供相应寄存器用来设置同步的处理器核数目以及同步时间上限,同时支持同步过程超时的状态记录及查询。
[0013]作为本发明装置的进一步改进:若干所述硬件栅栏和若干所述硬件锁以组合的方式使用,即硬件锁的获取和释放之间可以插入硬件栅栏的同步操作;所述硬件栅栏和硬件锁则根据片上多核处理器的结构选择分布式或集中式的拓扑结构。
[0014]与现有技术相比,本发明的优点在于:
1、本发明的基于栅栏和锁的多核Cache—致性维护的方法和装置,硬件栅栏以及硬件锁的核心结构包含对应每个处理器核的向量表,硬件栅栏可以实现若干处理器核间的同步,硬件锁可以对获取核进行记录;相比传统的目录和监听的硬件解决方案,结构简单,且由于无需记录每块共享数据的状态,能够在适度硬件复杂读下高效实现cache —致性维护。
[0015]2、本发明的基于栅栏和锁的多核Cache —致性维护的方法和装置,硬件栅栏和硬件锁可以根据片上多核的具体拓扑,以分布式或集中式的方式进行构建,实现方式灵活,且与片上多核结构的粘合性好。
[0016]3、本发明中的一致性维护方法通过硬件栅栏进行简洁有效的操作次序维护,无需软件通过程序调度来保证程序执行顺序,有效降低了程序员的负担。
[0017]4、本发明中的一致性维护方法中读数据核通过查询锁的状态确定是否开始进行读数据操作,在查询不成功时读数据核可以处理与被读数据无关的其他操作,从而进一步提升了系统的性能,减少了读数据核的非必要等待。
[0018]5、本发明中的一致维护方法不仅可以支持单个核写操作和若干核读操作间的cache 一致性维护,而且可以支持多个核写不同地址空间与多个核读相应地址空间之间的cache 一致性维护。这个特点对于当前多核编程中常用的多个核并行生产数据到一段指定空间,再由多个核进行消费的处理模式而言,只需一个硬件栅栏和一个硬件锁的配合即可支持,使用高效且便捷。
【附图说明】
[0019]图1是本发明的结构框架原理示意图。
[0020]图2是本发明是本硬件栅栏和硬件锁的采用集中式结构拓扑示意图。
[0021]图3是本发明在具体应用实例中硬件栅栏和锁采用分布式结构的示意图。
[0022]图4是本发明在具体应用实例中基于硬件栅栏和硬件锁的单写多读的cache —致性维护流程图。
[0023]图5是本发明在具体应用实例中是基于硬件栅栏和硬件锁的多写多读的cache —致性维护流程图。
【具体实施方式】
[0024]以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
[0025]结合图1所示,本发明的基于栅栏和锁的多核Cache —致性维护的方法,为:对于相同地址的共享数据,在进行多核间的读写操作时,首先通过硬件栅栏保证写数据核获取硬件锁i的操作先于读数据核对硬件锁i的查询操作;其次,写数据核获取硬件锁i后开始进行写操作,并在作废掉其他核cache空间的数据副本之后,释放硬件锁i ;其他核在进行读数据前首先需要查询硬件锁i的状态,直到硬件锁i被释放以后才开始进行读数据操作。
[0026]在具体应用时,写数据核可以为多个向不同地址写数据的处理器核,读数据核也可为多个处理器核,从而实现多对多的cache—致性维护。首先,通过硬件栅栏保证所有写数据核获取硬件锁i的操作先于读数据核对硬件锁i的查询操作;其次,多个写数据核获取硬件锁i后开始进行写操作,并在作废掉其他核cache空间的cache副本之后,释放硬件锁i需要在所有获取核都
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1