一种面向宽松一致性模型的惰性缓存失效方法及系统
本技术涉及计算机,尤其涉及一种面向宽松一致性模型的惰性缓存失效方法及系统。
背景技术:
1、在包括多个计算芯粒或处理节点的共享内存处理系统中,不同芯粒访问远程地址时,可将远程数据缓存在本地缓存中以降低后续远程访问开销。为了维护这些副本的一致性,系统会挑选一个主(home)芯粒中的目录控制器记录某一缓存行被哪些远端芯粒缓存,该目录控制器也被称为home目录。在释放一致性或类似宽松一致性模型下,普通内存写入不要求在写入完成时立即对所有远端共享者可见。程序通常通过release/acquire、memoryfence或范围同步等同步事件来建立跨线程或跨芯粒的内存可见性关系。
2、在宽松一致性模型下,程序本意是让普通写入可以延迟可见,只在同步点才建立全局可见性。但为了维护同步语义的正确性,目前的目录控制器只能对所有写入都采取保守的即时失效策略,导致出现假共享问题。假共享会引发大量冗余的缓存失效,迫使远端共享者的缓存副本过早作废,从而严重浪费宝贵的互连带宽,并大幅降低了本应被提升的远程缓存命中率。
技术实现思路
1、本技术实施例的主要目的在于提出一种面向宽松一致性模型的惰性缓存失效方法及系统,能够在不破坏同步语义正确性的前提下,减少写请求或原子请求引发的冗余缓存失效,避免假共享导致远程缓存副本过早作废,并提高互连带宽利用效率和远程缓存命中率。
2、为实现上述目的,本技术实施例的一方面提出了一种面向宽松一致性模型的惰性缓存失效方法,所述方法包括以下步骤:
3、接收访问请求,确定所述访问请求的操作类型和目录项;
4、若所述访问请求为读请求,根据所述目录项的状态将所述访问请求加入共享者集合,并根据共享者数量对所述目录项进行状态转换;
5、若所述访问请求为写/原子写请求,根据所述目录项的状态将所述访问请求加入共享者集合或待失效集合,并根据共享者数量对所述目录项进行状态转换;
6、若所述访问请求为同步操作请求,读取所述目录项的状态为待失效态的待失效集合,向该所述待失效集合中的所有共享者发送失效请求,进而在收到所有共享者的失效确认请求后进行同步边界排空。
7、在一些实施例中,所述目录项的状态至少包括失效态、有效态以及待失效态,其中,所述待失效态用于表征缓存行已经发生写入或原子写入,但失效请求尚未全部发送或确认。
8、在一些实施例中,所述根据所述目录项的状态将所述访问请求加入共享者集合,并根据共享者数量对所述目录项进行状态转换,具体包括:
9、当所述目录项为无效态,分配该所述目录项并将该所述目录项初始化为有效态,同时将所述访问请求加入所述共享者集合;
10、当所述目录项为有效态,将所述访问请求加入所述共享者集合;
11、当所述目录项为待失效态,将所述访问请求加入所述共享者集合,并在所述目录项的共享者数量为一个时,将所述目录项转换为有效态。
12、在一些实施例中,所述根据所述目录项的状态将所述访问请求加入共享者集合或待失效集合,并根据共享者数量对所述目录项进行状态转换,具体包括:
13、判断所述访问请求是否满足宽松一致性模型下的延迟可见条件;
14、若所述访问请求不满足所述延迟可见条件,执行即时失效或刷新路径;
15、若所述访问请求满足所述延迟可见条件,判断所述目录项的状态;
16、当所述目录项为无效态,分配该所述目录项并将该所述目录项初始化为有效态,同时将所述访问请求加入所述共享者集合;
17、当所述目录项为有效态,将所述访问请求加入所述待失效集合,并在所述目录项的共享者数量为多个时,将所述目录项转换为待失效态;
18、当所述目录项为待失效态,将所述访问请求加入所述待失效集合,并在所述目录项的共享者数量为一个时,将所述目录项转换为有效态。
19、在一些实施例中,所述当所述目录项为待失效态,将所述访问请求加入所述待失效集合将所述访问请求加入所述待失效集合,并在所述目录项的共享者数量为一个时,将所述目录项转换为有效态之后,所述方法还包括:
20、若后续的写/原子写请求再次作用于同一缓存行,获取新产生的待失效目标,进而将所述待失效目标合并至所述待失效集合。
21、在一些实施例中,所述读取所述目录项的状态为待失效态的待失效集合,向该所述待失效集合中的所有共享者发送失效请求,进而在收到所有共享者的失效确认请求后进行同步边界排空,具体包括:
22、当所述目录项为待失效态,通过主目录控制器读取该所述目录项的所述待失效集合;
23、通过所述主目录控制器向所述待失效集合中的所有共享者发送失效请求,进而在收到所有共享者的失效确认请求后,清空所述待失效集合,并将所述目录项转换为无效态或有效态。
24、在一些实施例中,所述方法还包括:
25、若所述访问请求为目录替换请求,判断是否存在迁移保存结构;
26、当存在所述迁移保存结构,将所述目录项的地址标签、状态位、共享者集合以及待失效集合迁移至所述迁移保存结构;
27、当不存在所述迁移保存结构,在所述目录项被复用前排空该所述目录项的所述待失效集合;
28、当所述目录项的共享者数量为零或所述目录项的所述待失效集合为空,将该所述目录项转换为无效态或有效态。
29、为实现上述目的,本技术实施例的另一方面提出了一种面向宽松一致性模型的惰性缓存失效系统,包括:
30、请求分类模块,用于接收访问请求,确定所述访问请求的操作类型和目录项;
31、读请求处理模块,用于若所述访问请求为读请求,根据所述目录项的状态将所述访问请求加入共享者集合,并根据共享者数量对所述目录项进行状态转换;
32、写/原子写请求处理模块,用于若所述访问请求为写/原子写请求,根据所述目录项的状态将所述访问请求加入共享者集合或待失效集合,并根据共享者数量对所述目录项进行状态转换;
33、同步边界排空处理模块,用于若所述访问请求为同步操作请求,读取所述目录项的状态为待失效态的待失效集合,向该所述待失效集合中的所有共享者发送失效请求,进而在收到所有共享者的失效确认请求后进行同步边界排空。
34、为实现上述目的,本技术实施例的另一方面提出了一种电子设备,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如前面所述的方法。
35、为实现上述目的,本技术实施例的另一方面提出了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现前面所述的方法。
36、本技术实施例至少包括以下有益效果:本技术的面向宽松一致性模型的惰性缓存失效方法及系统,针对普通写请求或原子写请求将目标缓存行目录项置为待失效态,在待失效态中保留精确共享者集合,并生成独立的待失效共享者集合;在acquire/release、memoryfence、范围同步等同步事件到达时,向合并后的远端共享者集合发送定向失效请求,并在确认写入可见且收到必要远端失效确认后才完成同步边界。本技术能够在不破坏同步语义正确性的前提下,减少写请求或原子请求引发的冗余缓存失效,避免假共享导致远程缓存副本过早作废,并提高互连带宽利用效率和远程缓存命中率。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com