[发明专利]LLC中Cache行的替换方法有效
申请号: | 201410462286.5 | 申请日: | 2014-09-11 |
公开(公告)号: | CN104166631B | 公开(公告)日: | 2017-08-01 |
发明(设计)人: | 王恩东;倪璠;陈继承 | 申请(专利权)人: | 浪潮(北京)电子信息产业有限公司 |
主分类号: | G06F12/123 | 分类号: | G06F12/123 |
代理公司: | 北京安信方达知识产权代理有限公司11262 | 代理人: | 王丹,李丹 |
地址: | 100085 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | llc cache 替换 方法 | ||
技术领域
本发明涉及计算机技术领域,尤其涉及一种最后一级高速缓冲存储器(LLC,Last Level Cache)中Cache行的替换方法。
背景技术
为了填补处理器与存储系统的性能差异,现代处理器通常使用多层Cache结构。其中,一种重要的设计方案是包含Cache(Inclusive Cache)层次结构设计。在Inclusive Cache层次结构中,靠近处理器核的上层Cache的Cache行在远离处理器核的下层Cache中均具有副本,而下层Cache中的Cache行则不一定在上层Cache中具有副本,这种结构能够简化Cache一致性协议。但是,与非包含及互斥Cache结构相比,包含Cache可能遭遇性能损失。一方面,由于数据的重复存储,有效的Cache空间减少;另一方面,当一个Cache行从LLC中替换出去时,为了保持包含属性,须将其从上层Cache中无效,这次上层Cache中为了保持包含属性而被无效的Cache行通常被称为“包含牺牲者”(inclusive victims)。由于包含牺牲者在上层Cache中可能属于常用Cache行,因此,过早的无效化会导致额外的访问缺失,从而降低Cache性能。
传统的LLC替换算法,例如近期最近最少使用(LRU,Least Recently Used)的替换策略中,最近一次被访问的Cache行总是被放在Cache的最近最多使用(MRU,Most Resently Used)行,而距离当前最远被访问的Cache行则放置在Cache的LRU行。在进行LLC替换时,通常根据Cache行在LLC中的最近访问频度确定替换候选块,即总是将位于对应组的LRU行替换,而将新加入的Cache行置于MRU处,而不考虑其在上层Cache中的使用情况。因此,当替换候选块在上层Cache中具有很好的访问局部性时,此类替换算法中的“包含牺牲者”将会导致Cache性能急剧下降。
此外,在片上多处理器(CMP,Chip multiprocessors)系统中,每个处理器核具有私有的L1数据/指令Cache,多个处理器核共享一个LLC。在系统运行过程中,多个处理器核私有的Cache中可能同时存在某一数据块的副本,因此,当对其中一个进行写操作时,需要借助Cache一致性协议保证数据的正确性。在进行LLC替换时,为了保证包含属性,需要将待替换数据块在上层Cache中的全部副本无效。当该数据块在上层Cache经常被访问时,上述无效操作将会极大降低Cache访问性能。
有鉴于此,需要一种改进的LLC替换方案来解决现有技术的问题。
发明内容
为了解决上述技术问题,本发明提供了一种LLC中Cache行的替换方法,能够有效降低包含Cache中替换引入的“包含牺牲者”导致的性能损失。
为了达到本发明目的,本发明提供了一种LLC中Cache行的替换方法,包括:如果目标Cache地址在LLC中缺失,根据操作类型计算新调入Cache行的替换优先级,按照替换优先级有序原则,将优先级最高的Cache行换出,并将新调入Cache行存入目标Cache的对应位置;如果目标Cache地址在LLC中命中,根据Cache一致性状态和操作类型,更新当前访问Cache行的替换优先级,按照替换优先级有序原则,对当前访问Cache行进行优先级的升降级。
进一步地,替换优先级P的计算方式为:P=a1×c×op+k×a2+a3×(1-c)×op,其中,a1表示写操作权重,c表示上层Cache中的副本是否已经回写,如果回写,c=0,否则,c=1;op表示引起替换的操作类型,写操作对应op=1,否则op=0;k表示只读副本数量,其取值不超过共享LLC的处理器核数;a2表示读操作权重;a3表示回写操作权重,其中,P值越小,替换优先级越高,发生替换时优先被替换。
进一步地,操作类型包括读操作和写操作;如果由读操作引起LLC中Cache行替换,新调入Cache行中的P=2*a2;如果由写操作引起LLC中Cache行替换,新调入Cache行中的P=a1,其中,a1大于2*a2;如果上层Cache的Cache行发生回写时,P=a3,其中,a3小于2*a2;如果上层Cache的Cache行在LLC中存在一个只读副本时,P=a2,其中,a3大于a2。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮(北京)电子信息产业有限公司,未经浪潮(北京)电子信息产业有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410462286.5/2.html,转载请声明来源钻瓜专利网。