带宽感知的动态高速缓存替换方法、装置、系统和介质转让专利

申请号 : CN201811623393.6

文献号 : CN109669882B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张乾龙

申请人 : 贵州华芯通半导体技术有限公司

摘要 :

本发明公开了存储器系统中的基于带宽感知的动态高速缓存替换方法,包括:监控与存储器系统相关的实时带宽,其中,存储器系统包括高速缓存,高速缓存的每一个缓存行中包括第一状态信息和第二状态信息;确定实时带宽是否满足预定条件,其中,当实时带宽不满足预定条件时,根据第一状态信息来选择高速缓存中的缓存行之一,而当实时带宽满足预定条件时,根据第一状态信息和第二状态信息两者来选择高速缓存中的缓存行之一;用更新的数据来替换所选择缓存行中所缓存的数据。

权利要求 :

1.一种在至少包括第一存储器和第二存储器的存储器系统中基于带宽感知的动态高速缓存替换方法,包括:

监控第一存储器的第一实时带宽和第二存储器的第二实时带宽,其中,所述存储器系统还包括高速缓存,所述高速缓存的每一个缓存行中包括:关于该缓存行中所缓存的数据的使用情况的特征的第一状态信息、以及关于该缓存行的地址所指向的存储器的第二状态信息;

将第一实时带宽与第二实时带宽的比值与预定阈值进行比较,以用更新的数据来替换所选择缓存行中缓存的数据,其中当第一实时带宽与第二实时带宽的比值小于或等于预定阈值时,根据第一状态信息来选择所述高速缓存中的缓存行之一,用更新的数据来替换所选择缓存行中所缓存的数据;

或者

当第一实时带宽与第二实时带宽的比值大于预定阈值时,根据第一状态信息和第二状态信息两者来选择所述高速缓存中的缓存行之一,用更新的数据来替换所选择缓存行中所缓存的数据,并且

其中,第一存储器是普通存储器,第二存储器是高带宽存储器。

2.如权利要求1所述的方法,当第一实时带宽与第二实时带宽的比值小于或等于预定阈值时,根据第一状态信息来选择所述高速缓存中的缓存行之一,用更新的数据来替换所选择缓存行中所缓存的数据包括:根据第一状态信息对所述高速缓存中的缓存行进行排序,选择次序最高或最低的一个缓存行,用更新的数据来替换所选择缓存行中所缓存的数据。

3.如权利要求1所述的方法,当第一实时带宽与第二实时带宽的比值大于预定阈值时,根据第一状态信息和第二状态信息两者来选择所述高速缓存中的缓存行之一,用更新的数据来替换所选择缓存行中所缓存的数据包括:根据第一状态信息对所述高速缓存中的缓存行进行排序,根据第二状态信息获得所述高速缓存中的多个缓存行,选择所述多个缓存行中根据第一状态信息排序的次序最高或最低的一个缓存行,用更新的数据来替换所选择缓存行中所缓存的数据。

4.如权利要求3所述的方法,其中所获得的所述多个缓存行的第二状态信息所包括的缓存行地址指向第二存储器。

5.如权利要求1所述的方法,其中第一状态信息包括关于所述缓存行中所缓存的数据的使用频率或访问频率的信息,或者包括关于所述缓存行中所缓存的数据的尺寸或访问延迟的信息。

6.如权利要求1所述的方法,其中第二状态信息是缓存行地址所指向的存储器的标识符。

7.如权利要求1所述的方法,还包括:当所述替换完成时,更新所述缓存行的第二状态信息。

8.一种在至少包括第一存储器和第二存储器的存储器系统中基于带宽感知的动态高速缓存替换方法,包括:

监控第一存储器和第二存储器之间的链路的实时带宽,其中,所述存储器系统还包括高速缓存,所述高速缓存的每一个缓存行中包括:关于该缓存行中所缓存的数据的使用情况的特征的第一状态信息、以及关于该缓存行的地址所指向的存储器的第二状态信息;

将所述实时带宽与预定阈值进行比较,以用更新的数据来替换所选择缓存行中缓存的数据,其中

当所述实时带宽小于或等于预定阈值时,根据第一状态信息来选择所述高速缓存中的缓存行之一,用更新的数据来替换所选择缓存行中所缓存的数据;或者当所述实时带宽大于预定阈值时,根据第一状态信息和第二状态信息两者来选择所述高速缓存中的缓存行之一,用更新的数据来替换所选择缓存行中所缓存的数据,并且其中,第一存储器是远程存储器,第二存储器是本地存储器。

9.如权利要求8所述的方法,其中,当所述实时带宽小于或等于预定阈值时,根据第一状态信息来选择所述高速缓存中的缓存行之一,用更新的数据来替换所选择缓存行中所缓存的数据包括:

根据第一状态信息对所述高速缓存中的缓存行进行排序,选择次序最高或最低的一个缓存行,用更新的数据来替换所选择缓存行中所缓存的数据。

10.如权利要求8所述的方法,其中,当所述实时带宽大于预定阈值时,根据第一状态信息和第二状态信息两者来选择所述高速缓存中的缓存行之一,用更新的数据来替换所选择缓存行中所缓存的数据包括:

根据第一状态信息对所述高速缓存中的缓存行进行排序,根据第二状态信息获得所述高速缓存中的多个缓存行,选择所述多个缓存行中根据第一状态信息排序的次序最高或最低的一个缓存行,用更新的数据来替换所选择缓存行中所缓存的数据。

11.如权利要求10所述的方法,其中所获得的所述多个缓存行的第二状态信息所包括的缓存行地址指向第二存储器。

12.如权利要求8所述的方法,其中第一状态信息包括关于所述缓存行中所缓存的数据的使用频率或访问频率的信息,或者包括关于所述缓存行中所缓存的数据的尺寸或访问延迟的信息。

13.如权利要求8所述的方法,其中第二状态信息是缓存行地址所指向的存储器的标识符。

14.如权利要求8所述的方法,还包括:当所述替换完成时,更新所述缓存行的第二状态信息。

15.一种存储器系统,包括:

多个存储器,所述多个存储器至少包括第一存储器和第二存储器;

高速缓存,所述高速缓存的每一个缓存行中包括:关于该缓存行中所缓存的数据的使用情况的特征的第一状态信息、以及关于该缓存行的地址所指向的存储器的第二状态信息;

中央处理单元,被配置为:

监控第一存储器的第一实时带宽和第二存储器的第二实时带宽;

将第一实时带宽与第二实时带宽的比值与预定阈值进行比较,以用更新的数据来替换所选择缓存行中缓存的数据,其中当第一实时带宽与第二实时带宽的比值小于或等于预定阈值时,根据第一状态信息来选择所述高速缓存中的缓存行之一,用更新的数据来替换所选择缓存行中所缓存的数据;

当第一实时带宽与第二实时带宽的比值大于预定阈值时,根据第一状态信息和第二状态信息两者来选择所述高速缓存中的缓存行之一,用更新的数据来替换所选择缓存行中所缓存的数据,并且

其中,第一存储器是普通存储器,第二存储器是高带宽存储器。

16.一种存储器系统,包括:

多个存储器,所述多个存储器至少包括第一存储器和第二存储器;

高速缓存,所述高速缓存的每一个缓存行中包括:关于该缓存行中所缓存的数据的使用情况的特征的第一状态信息、以及关于该缓存行的地址所指向的存储器的第二状态信息;

中央处理单元,被配置为:

监控第一存储器和第二存储器之间的链路的实时带宽;

将所述实时带宽与预定阈值进行比较,以用更新的数据来替换所选择缓存行中缓存的数据,其中

当所述实时带宽小于或等于预定阈值时,根据第一状态信息来选择所述高速缓存中的缓存行之一,用更新的数据来替换所选择缓存行中所缓存的数据;

当所述实时带宽大于预定阈值时,根据第一状态信息和第二状态信息两者来选择所述高速缓存中的缓存行之一,用更新的数据来替换所选择缓存行中所缓存的数据,并且其中,第一存储器是远程存储器,第二存储器是本地存储器。

17.一种其上记录有用于包括多个存储器的存储器系统中基于带宽感知的动态高速缓存替换的程序代码的非暂时性计算机可读记录介质,所述程序代码在由计算机处理器执行时执行如权利要求1-14中的任意一项所述的方法。

18.一种在至少包括第一存储器和第二存储器的存储器系统中基于带宽感知的动态高速缓存替换装置,包括:

监控模块,被配置为监控第一存储器的第一实时带宽和第二存储器的第二实时带宽,其中,所述存储器系统还包括高速缓存,所述高速缓存的每一个缓存行中包括:关于该缓存行中所缓存的数据的使用情况的特征的第一状态信息、以及关于该缓存行的地址所指向的存储器的第二状态信息;

比较模块,被配置为将第一实时带宽与第二实时带宽的比值与预定阈值进行比较,以用更新的数据来替换所选择缓存行中缓存的数据;

处理模块,被配置为当第一实时带宽与第二实时带宽的比值小于或等于预定阈值时,根据第一状态信息来选择所述高速缓存中的缓存行之一,用更新的数据来替换所选择缓存行中所缓存的数据;或者当第一实时带宽与第二实时带宽的比值大于预定阈值时,根据第一状态信息和第二状态信息两者来选择所述高速缓存中的缓存行之一,用更新的数据来替换所选择缓存行中所缓存的数据,并且其中,第一存储器是普通存储器,第二存储器是高带宽存储器。

19.一种在至少包括第一存储器和第二存储器的存储器系统中基于带宽感知的动态高速缓存替换装置,包括:

监控模块,被配置为监控第一存储器和第二存储器之间的链路的实时带宽,其中,所述存储器系统还包括高速缓存,所述高速缓存的每一个缓存行中包括:关于该缓存行中所缓存的数据的使用情况的特征的第一状态信息、以及关于该缓存行的地址所指向的存储器的第二状态信息;

比较模块,被配置为将所述实时带宽与预定阈值进行比较,以用更新的数据来替换所选择缓存行中缓存的数据;

处理模块,被配置为当所述实时带宽小于或等于预定阈值时,根据第一状态信息来选择所述高速缓存中的缓存行之一,用更新的数据来替换所选择缓存行中所缓存的数据;或者当所述实时带宽大于预定阈值时,根据第一状态信息和第二状态信息两者来选择所述高速缓存中的缓存行之一,用更新的数据来替换所选择缓存行中所缓存的数据,并且其中,第一存储器是远程存储器,第二存储器是本地存储器。

说明书 :

带宽感知的动态高速缓存替换方法、装置、系统和介质

技术领域

[0001] 本发明涉及存储器技术,更具体地,涉及在包括多个存储器的存储器系统中的带宽感知的动态高速缓存替换方法、装置、系统和计算机介质。

背景技术

[0002] 随着存储器技术的发展,混合存储器系统和存储器异构系统是当前和未来的计算机系统发展方向。混合存储器系统是指在同一个地址空间中,同时存在不同类型的存储器,
导致访问不同物理地址时的访存特点不同。目前,各大处理器设计厂商都使用了混合存储
器技术,例如,Intel推出的Knights Landing处理器集成了16G的片上MCDRAM(Multi-
Channel Dynamic random-access memory,多通道动态随机存取存储器)(HBM(high 
bandwidth memory,高带宽存储器)的一种),Nvidia推出的芯片Pascal集成了片上HBM,AMD
推出的芯片Fiji片上集成了HBM。与普通的DRAM(Dynamic Random Access Memory,动态随
机存取存储器)相比,HBM的带宽要比普通的DRAM大4-5倍,因此,对于带宽需求较高的进程
适合运行在HBM上。而存储器异构系统是指诸如CC-NUMA(Cache Coherence Non-uniform 
memory access,缓存一致性非均匀存储器访问)系统等非传统的存储器系统,其中往往也
存在多个不同带宽的存储器。
[0003] 然而,现有的高速缓存(cache)替换算法,诸如单纯的LRU(Least Recently Used,最近最少使用)算法或者MRU(Most Recently Used,最近最常使用)算法,没有考虑到不同
缓存行(cacheline)中的存储器地址所对应的存储器可能具有不同的带宽。例如,在混合存
储器系统中选择LRU算法作为高速缓存替换算法时,仅考虑了数据使用频率,有可能使所选
择的用于替换的缓存行对应带宽压力本身就很大的普通存储器,导致普通存储器的带宽占
用较高,而系统中HBM又没有得到有效利用,使得系统负载不均衡。同样地,单纯考虑带宽的
高速缓存替换算法可能使得缓存行中常用的数据被频繁替换,导致高速缓存替换性能下
降。
[0004] 因此,需要一种考虑存储器带宽和数据使用状态等情况的综合的高速缓存替换算法。这种算法应该达到这样的目的:如果带宽压力已足够大,尽量选择对带宽造成压力小的
缓存行进行替换,即,替换尽量减少对存储系统的带宽压力,并且尽量争取负载均衡。

发明内容

[0005] 有鉴于上述情况,本公开提供了基于带宽感知的动态高速缓存替换方法、装置、系统和介质。
[0006] 一方面,根据本公开的实施例,提供了一种包括多个存储器的存储器系统中基于带宽感知的动态高速缓存替换方法,包括:监控与存储器系统相关的实时带宽,其中,存储
器系统包括高速缓存,高速缓存的每一个缓存行中包括:关于该缓存行中所缓存的数据的
使用情况的特征的第一状态信息、以及关于该缓存行的地址所指向的存储器的第二状态信
息;确定实时带宽是否满足预定条件以判断是否用更新的数据来替换所选择缓存行中缓存
的数据,其中,当实时带宽不满足预定条件时,根据第一状态信息来选择高速缓存中的缓存
行之一,用更新的数据来替换所选择缓存行中所缓存的数据;当实时带宽满足预定条件时,
根据第一状态信息和第二状态信息两者来选择高速缓存中的缓存行之一,用更新的数据来
替换所选择缓存行中所缓存的数据。
[0007] 此外,根据本公开的实施例的方法,其中,存储器系统是混合存储器系统,其中包括CPU(Central Processing Unit,中央处理单元)、高速缓存、普通带宽的存储器和带宽高
于普通存储器的高带宽存储器。高速缓存替换方法包括:监控本地存储器和远程存储器之
间的链路的实时带宽;当实时带宽小于或等于预定阈值时,根据第一状态信息对高速缓存
中的缓存行进行排序,选择次序最高或最低的一个缓存行,用更新的数据来替换所选择缓
存行中所缓存的数据;当实时带宽大于阈值时,根据第一状态信息对高速缓存中的缓存行
进行排序,根据第二状态信息获得其第二状态信息所包括的缓存行的地址指向本地存储器
的多个缓存行,选择多个缓存行中次序最高或最低的一个缓存行,用更新的数据来替换所
选择缓存行中所缓存的数据。
[0008] 此外,根据本公开的实施例的方法,其中,存储器系统是CC-NUMA存储器系统,其中包括CPU、高速缓存、本地存储器和远程存储器。本地存储器和远程存储器之间经由NUMA链
路通信。高速缓存替换方法包括:监控与普通存储器相对应的第一实时带宽和与高带宽存
储器相对应的第二实时带宽;当第一实时带宽与第二实时带宽的比值小于或等于预定阈值
时,根据第一状态信息对高速缓存中的缓存行进行排序,选择次序最高或最低的一个缓存
行,用更新的数据来替换所选择缓存行中所缓存的数据;当第一实时带宽与第二实时带宽
的比值大于预定阈值时,根据第一状态信息对高速缓存中的缓存行进行排序,根据第二状
态信息获得其第二状态信息所包括的缓存行的地址指向高带宽存储器的多个缓存行,选择
多个缓存行中次序最高或最低的一个缓存行,用更新的数据来替换所选择缓存行中所缓存
的数据。
[0009] 此外,根据本公开的实施例的方法,其中,第一状态信息包括关于缓存行中所缓存的数据的使用频率或访问频率的信息,或者包括关于缓存行中所缓存的数据的尺寸或访问
延迟的信息。
[0010] 此外,根据本公开的实施例的方法,其中,第二状态信息是缓存行的地址所指向的存储器的标识符。
[0011] 此外,根据本公开的实施例的方法,还包括:当替换完成时,更新缓存行的第二状态信息。
[0012] 另一方面,根据本公开的实施例,提供了一种存储器系统,包括:多个存储器;高速缓存,高速缓存的每一个缓存行中包括:关于该缓存行中所缓存的数据的使用情况的特征
的第一状态信息、以及关于该缓存行的地址所指向的存储器的第二状态信息;中央处理单
元,被配置为:监控与存储器系统相关的实时带宽;确定实时带宽是否满足预定条件以判断
是否用更新的数据来替换所选择缓存行中缓存的数据,其中,当实时带宽不满足预定条件
时,根据第一状态信息来选择高速缓存中的缓存行之一,用更新的数据来替换所选择缓存
行中所缓存的数据;当实时带宽满足预定条件时,根据第一状态信息和第二状态信息两者
来选择高速缓存中的缓存行之一,用更新的数据来替换所选择缓存行中所缓存的数据。
[0013] 又一方面,根据本公开的实施例,提供了一种其上记录有用于包括多个存储器的存储器系统中基于带宽感知的动态高速缓存替换的程序代码的非暂时性计算机可读记录
介质,程序代码在由计算机执行时执行本公开所提供的方法。
[0014] 再一方面,根据本公开的实施例,提供了一种在包括多个存储器的存储器系统中基于带宽感知的动态高速缓存替换装置,包括:监控模块,被配置为监控与存储器系统相关
的实时带宽,其中,存储器系统包括高速缓存,高速缓存的每一个缓存行中包括:关于该缓
存行中所缓存的数据的使用情况的特征的第一状态信息、以及关于该缓存行的地址所指向
的存储器的第二状态信息;比较模块,被配置为确定实时带宽是否满足预定条件以判断是
否用更新的数据来替换所选择缓存行中缓存的数据;处理模块,被配置为当实时带宽不满
足预定条件时,根据第一状态信息来选择高速缓存中的缓存行之一,用更新的数据来替换
所选择缓存行中所缓存的数据;当实时带宽满足预定条件时,根据第一状态信息和第二状
态信息两者来选择高速缓存中的缓存行之一,用更新的数据来替换所选择缓存行中所缓存
的数据。
[0015] 根据本公开的实施例的方法、装置、系统和介质方法,一种基于带宽感知的动态高速缓存替换机制。该机制综合考虑了存储器系统的实时带宽,有效地改善了包括多个存储
器的存储器系统中可能出现的负载不均衡的问题。
[0016] 要理解的是,前面的一般描述和下面的详细描述两者都是示例性的,并且意图在于提供要求保护的技术的进一步说明。

附图说明

[0017] 图1示出了根据实施例的实现本发明的一个应用场景的示例;
[0018] 图2示出了根据实施例的实现本发明的另一个应用场景的示例;
[0019] 图3示出了根据实施例的实现本发明的方法的示例流程图;
[0020] 图4示出了根据实施例的在图1的场景中实现本发明的方法的示例流程图;
[0021] 图5示出了根据实施例的在图2的场景中实现本发明的方法的示例流程图;
[0022] 图6示出了根据实施例的在图1的场景中实现本发明的方法的示例算法流程图;
[0023] 图7示出了根据实施例的在图1的场景中实现本发明的方法的另一示例算法流程图;
[0024] 图8示出了根据实施例的图6或图7中所应用的高速缓存替换算法和原有高速缓存替换算法的对比;
[0025] 图9示出了根据实施例的在图2的场景中实现本发明的方法的一个示例流程图;
[0026] 图10示出了根据实施例的图9中所应用的高速缓存替换算法和原有高速缓存替换算法的对比;
[0027] 图11A示出了根据实施例的实现本发明的示例装置的软件模块图;以及图11B示出了根据实施例的实现本发明的又一示例装置的软件模块图。

具体实施方式

[0028] 下面将结合本公开的实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通
常在附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因
此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的
范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做
出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
[0029] 应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本公开的
描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0030] 图1示出了根据实施例的实现本发明的一个应用场景的示例。
[0031] 图1中示出的结构是典型的包括多个不同带宽的存储器的混合存储器系统,包括:不止一个CPU(CPU0 101和CPU1 102),LLC(Last Level Cache,最后一级高速缓存)103,普
通存储器104,以及带宽比普通存储器更高的高带宽存储器。
[0032] 混合存储器系统中的HBM一般有三种使用模式:(1)把HBM配置成为高速缓存;(2)把HBM配置成为普通存储器;(3)把HBM一部分配置成为高速缓存,一部分配置成为普通存储
器。本发明针对的情况包括(2)和(3),即,只要存储系统中存在不同的带宽的存储器,就需
要考虑高速缓存替换算法是否有利于负载均衡,诸如CC-NUMA系统等异构系统也是如此。
[0033] 图2示出了根据实施例的实现本发明的另一个应用场景的示例。
[0034] 图2中示出的结构是典型的CC-NUMA系统。CC-NUMA系统下,多个存储器簇(cluster)通过高速互联连接,簇是存储器的逻辑概念,在这里可以理解为位于某个位置的
多个存储器的集合。簇0 200包括:不止一个CPU(CPU0 201和CPU1 202),LLC 203,以及存储
器204-206。簇1 200’包括:不止一个CPU(CPU2 201’和CPU3 202’),LLC 203’,以及存储器
204’-206’。簇0 200和簇1 200’之间由NUMA链路207连接。在一个实施例中,簇0 200是本地
存储器系统,簇1 200’是远程存储器系统。可替换地,簇0 200可以是远程存储器系统,簇1 
200’可以是本地存储器系统。
[0035] 图3示出了根据实施例的实现本发明的方法的示例流程图。
[0036] 在步骤S301处,监控与存储器系统相关的实时带宽。其中,存储器系统包括高速缓存,高速缓存的每一个缓存行中包括:关于该缓存行中所缓存的数据的使用情况的特征的
第一状态信息、以及关于该缓存行的地址所指向的存储器的第二状态信息。
[0037] 在步骤S302处,确定实时带宽是否满足预定条件以判断是否用更新的数据来替换所选择缓存行中缓存的数据。
[0038] 当实时带宽不满足预定条件时,步骤转到S303,根据第一状态信息来选择高速缓存中的缓存行之一,用更新的数据来替换所选择缓存行中所缓存的数据。
[0039] 当实时带宽满足预定条件时,步骤转到S304,根据第一状态信息和第二状态信息两者来选择高速缓存中的缓存行之一,用更新的数据来替换所选择缓存行中所缓存的数
据。
[0040] 其中,预定条件可以指示系统中存储器带宽压力是否较大。实时带宽不满足预定条件可以意味着系统中存储器带宽压力不大,可以不用考虑带宽来进行高速缓存替换。实
时带宽满足预定条件可以意味着系统中存储器带宽压力较大,需要考虑带宽来进行高速缓
存替换。该方法能够在监控到系统中存储器带宽压力较大的情况下实现对考虑带宽的高速
缓存替换算法的选择,有利于实现系统中的负载均衡。
[0041] 图4示出了根据实施例的在图1的场景中实现本发明的方法的示例流程图。
[0042] 参考图1和图4,在一个实施例中,存储器系统包括普通存储器和高带宽存储器,监控与存储器系统相关的实时带宽包括监控与普通存储器相对应的第一实时带宽和与高带
宽存储器相对应的第二实时带宽。在一个实施例中,预定条件包括:第一实时带宽与第二实
时带宽的比值大于预定阈值。
[0043] 具体地,在步骤S401处,监控与普通存储器相对应的第一实时带宽和与高带宽存储器相对应的第二实时带宽。其中,存储器系统包括高速缓存,高速缓存的每一个缓存行中
包括:关于该缓存行中所缓存的数据的使用情况的特征的第一状态信息、以及关于该缓存
行的地址所指向的存储器的第二状态信息。
[0044] 在步骤S402处,确定第一实时带宽与第二实时带宽的比值是否大于预定阈值以判断是否用更新的数据来替换所选择缓存行中缓存的数据。
[0045] 当第一实时带宽与第二实时带宽的比值不大于预定阈值时,步骤转到S403,根据第一状态信息来选择高速缓存中的缓存行之一,用更新的数据来替换所选择缓存行中所缓
存的数据。
[0046] 当第一实时带宽与第二实时带宽的比值大于预定阈值时,步骤转到S404,根据第一状态信息和第二状态信息两者来选择高速缓存中的缓存行之一,用更新的数据来替换所
选择缓存行中所缓存的数据。
[0047] 此外,存储器系统中所包括的普通存储器和高带宽存储器不限于图1中所示的数量。也就是说,存储器系统可以包括一个或多个普通存储器以及一个或多个高带宽存储器。
并且,可以监控多个存储器中的一个或多个的实时带宽。并且,预定条件也可以包括任何能
够体现实时带宽压力的一个或多个阈值、数值关系等。
[0048] 在一个实施例中,第一状态信息包括关于缓存行中所缓存的数据的使用频率或访问频率的信息,或者包括关于缓存行中所缓存的数据的尺寸或访问延迟的信息。换句话说,
第一状态信息可以与传统的、不考虑存储器系统的实时带宽的高速缓存替换算法相对应。
例如,第一状态信息可以与以下各项中的至少一项或者其中多项的组合相对应:LRU算法、
MRU算法、FIFO(First In First Out,先进先出)算法、Size(基于所替换数据的尺寸)算法、
LLF(Lowest Latency First,最低延迟优先)算法、Hybrid算法、LRV(Lowest Relative 
Value,最低相对值)算法、LNCR(Least Normalized Cost Replacement,最低标准化成本)
算法、SLRU(Size-Adjust LRU,尺寸调整LRU)算法等。在一个实施例中,第一状态信息是一
个比特。然而,第一状态信息也可以是多个比特,这取决于所对应算法。可以根据需要灵活
选用算法与本发明的方法相结合。
[0049] 在一个实施例中,第二状态信息是缓存行的地址所指向的存储器的标识符。在一个实施例中,第二状态信息是一个比特。在一个实施例中,第二状态信息是多个比特。第二
状态信息的比特数可以取决于存储器或存储器簇的数量,或者可以取决于需要监控的存储
器或链路的数量。在一个实施例中,当高速缓存替换完成时,更新缓存行的第二状态信息。
结合第二状态信息,本发明的方法至少可以确定用哪个存储器地址进行高速缓存替换可以
减轻系统的带宽压力。
[0050] 图4的方法至少可以应用于需要监控多个带宽不一致的存储器来反映系统带宽压力的情况。在这种情况下,直接监控各存储器的带宽可以指示各存储器的带宽压力,以便于
选择高速缓存替换算法。
[0051] 图5示出了根据实施例的在图2的场景中实现本发明的方法的示例流程图。
[0052] 参考图2和图5,在一个实施例中,存储器系统包括本地存储器和远程存储器,监控与存储器系统相关的实时带宽包括监控本地存储器和远程存储器之间的链路的实时带宽。
在一个实施例中,预定条件包括:实时带宽是否大于预定阈值。
[0053] 具体地,在步骤S501处,监控本地存储器和远程存储器之间的链路的实时带宽。其中,存储器系统包括高速缓存,高速缓存的每一个缓存行中包括:关于该缓存行中所缓存的
数据的使用情况的特征的第一状态信息、以及关于该缓存行的地址所指向的存储器的第二
状态信息。
[0054] 在步骤S502处,确定实时带宽是否大于预定阈值以判断是否用更新的数据来替换所选择缓存行中缓存的数据。
[0055] 当实时带宽不大于预定阈值时,步骤转到S503,根据第一状态信息来选择高速缓存中的缓存行之一,用更新的数据来替换所选择缓存行中所缓存的数据。
[0056] 当实时带宽大于预定阈值时,步骤转到S504,根据第一状态信息和第二状态信息两者来选择高速缓存中的缓存行之一,用更新的数据来替换所选择缓存行中所缓存的数
据。
[0057] 此外,存储器系统中所包括的本地存储器和远程存储器不限于图2中所示的数量,相应地,各存储器之间的链路数量也可以是一个或多个。并且,可以监控多个链路中的一个
或多个的实时带宽。并且,预定条件也可以包括任何能够体现实时带宽压力的一个或多个
阈值、数值关系等。
[0058] 图5的方法至少可以应用于需要监控一个或多个存储器之间的链路来反映系统带宽压力的情况。在这种情况下,存储器之间的链路的带宽比各存储器本身的带宽更能反映
系统带宽压力,监控链路带宽有利于选择高速缓存替换算法。
[0059] 然而,需要注意的是,图4所应用的场景和图5所应用的场景不是互斥的,图4的方法和图5的方法也不是互斥的。举例来说,在包含多个存储器簇的存储器系统中,可以先通
过监控链路带宽选择要进行替换的存储器簇,再通过监控所选择存储器簇中各存储器的带
宽来选择具体要进行替换的存储器。当然,本发明不限于此。本领域技术人员可以在特定场
景下对其中一个或多个步骤进行重新排序、删除或结合等来进行应用,以达到相同的目的。
[0060] 图6示出了根据实施例的在图1的场景中实现本发明的方法的示例算法流程图。
[0061] 参考图1,在一个实施例中,在存储器系统中,普通存储器可以是DDR SDRAM(Double Data Rate Synchronous DRAM,双倍速率同步DRAM),高带宽存储器可以是
MCDRAM。在一个实施例中,第一状态信息可以是与LRU算法相对应的值。在一个实施例中,第
二状态信息可以用一个F比特来表示。一个F比特足以区分开两个不同的存储器。例如,用1
表示所访问地址属于MCDRAM,用0表示所访问地址属于DDR。
[0062] 在步骤S601处,监控DDR和MCDRAM的实时带宽。
[0063] 在步骤S602处,确定DDR实时带宽与MCDRAM实时带宽的比值是否大于预定阈值M。M可以是预设的经验值,例如,M可以是1/5。
[0064] 当DDR实时带宽与MCDRAM实时带宽的比值大于M时,步骤转到S606,在高速缓存的每个组中,根据每个缓存行的LRU值对缓存行进行排序,按照LRU值从高到低的顺序搜索第
一个F=1的缓存行,即,搜索地址属于MCDRAM并且最近最少使用的缓存行。接着,在步骤607
处,选择搜索到的缓存行。
[0065] 当DDR实时带宽与MCDRAM实时带宽的比值小于或等于M时,步骤转到S603,在高速缓存的每个组中,根据每个缓存行的LRU值对缓存行进行排序,选择该组中LRU值最大的缓
存行,即,选择最近最少使用的缓存行。
[0066] 在步骤S604处,用更新的数据来替换所选择缓存行中所缓存的数据。
[0067] 在步骤S605处,数据替换完成时,更新该缓存行的地址属性和F比特。
[0068] 图7示出了根据实施例的在图1的场景中实现本发明的方法的另一示例算法流程图。
[0069] 参考图1和图6,图7示出了图6的一种替换算法。步骤S701-S705与步骤S601-S605类似,因此省略对其的描述。
[0070] 当DDR实时带宽与MCDRAM实时带宽的比值大于M时,步骤转到S706,在高速缓存的每个组中,根据每个缓存行的LRU值对缓存行进行排序,并且将缓存行按照LRU值的阈值N分
为两个分组:即LRU≥N的分组,LRU<N的分组。例如,N可以是4。
[0071] 接着,在步骤S707处,在LRU≥N的分组中,按照LRU值从高到低搜索第一个F=1的缓存行。
[0072] 接着,在步骤S708处,确定是否能够搜索到F=1的缓存行。
[0073] 如果无法搜索到F=1的缓存行,步骤转到S703。接着,进行步骤S704和S705。
[0074] 如果搜索到F=1的缓存行,步骤转到S709,选择搜索到的缓存行。接着,进行步骤S704和S705。
[0075] 进一步对缓存行分组,缩小选择进行替换的缓存行的范围,除了加快了选择速度,还相当于增加了选择综合考虑实时带宽的高速缓存替换算法的条件,以进一步满足实现系
统负载均衡的需求。例如,在图7的实施例中,选择LRU≥4的缓存行执行本发明的替换算法,
可以有效地避开常用的数据,即热数据,避免替换频率过高。
[0076] 图8示出了根据实施例的图6或图7中所应用的高速缓存替换算法和原有高速缓存替换算法的对比。
[0077] 如图8所示,假设CPU0上运行STREAM程序(专门用于检测CPU性能的程序),频繁读写普通存储器(例如,普通带宽的DDR4),当LLC发生未命中(miss)需要分配时,就要挑选一
个组(set)中的某一路(way)对应的缓存行进行替换。此时如果所替换的缓存行地址属于
DDR4,则会进一步加剧DDR4的压力,导致CPU0的性能下降,无法做到负载均衡。
[0078] 在一个实施例中,高速缓存的每一个组中包括8个路,对应8个缓存行。
[0079] 在一个实施例中,原有的高速缓存替换算法可以采用LRU算法。相应地,在每一组中的每一路的缓存行可以包括LRU值。例如,可以按照7-0的顺序设计LRU值,即,7表示最近
最少使用,0表示最近最常使用。
[0080] 在一个实施例中,本发明的改进的高速缓存替换算法也可以结合LRU算法。在每一组中的每一路的缓存行除了可以包括LRU值,还可以包括一个F比特。
[0081] 参考图6或图7中所应用的高速缓存替换算法,监控DDR和MCDRAM的实时带宽,设定阈值M。
[0082] 对图1中DDR和MCDRAM(带宽高于DDR的高带宽存储器)带宽监控,设定DDR实时带宽比MCDRAM实时带宽阈值M(例如,1/5),
[0083] 当(DDR实时带宽)/(MCDRAM实时带宽)≤M时,表示DDR带宽压力不大,此时可以保持LLC的原有LRU算法不变。
[0084] 当(DDR实时带宽)/(MCDRAM实时带宽)>M时,表示这时DDR上的带宽压力已经比较大。这时,替换算法切换为综合考虑LRU和F。在该种情况下,把高速缓存中每一组中的缓存
行按照LRU算法的排序划分为两个分组(LRU值<N的一个分组,LRU值≥N的一个分组)。在一
个实施例中,例如,N可以为4。在LRU>=4的缓存行分组中挑选第一个F=1的缓存行进行替
换。如图8所示,如果仅采用LRU算法,则应该选择way4来进行替换。然而,way4的F为0,即,此
时way4中的缓存行地址属于DDR。为了综合考虑实时带宽使得负载更为均衡,在LRU值为4-7
的分组(即way0、way3、way4和way7)内按照LRU值从高到低的顺序(7,6,5,4)选择第一个F=
1的缓存行来进行替换。在图8所示的情况下,应该选择LRU=6且F=1的way0。此时way0中的
缓存行属于MCDRAM,对其进行替换不会对DDR的带宽产生进一步压力。
[0085] 如果不采用这种分组,有可能导致热数据被替换,而使得系统性能下降。
[0086] 此外,还需要考虑一种情况。在LRU值≥4的分组中,所有缓存行的F比特都为0,则按照原来的LRU算法进行替换(即,选择LRU=7的way4)。
[0087] 图9示出了根据实施例的在图2的场景中实现本发明的方法的一个示例流程图。
[0088] 参考图2,在一个实施例中,在存储器系统中可以包括作为本地存储器簇的簇200和作为远程存储器簇的簇200’。在一个实施例中,第一状态信息可以是与MRU算法相对应的
值。在一个实施例中,第二状态信息可以用两个F比特来表示。例如,F比特包括bit0和bit1。
在一个实施例中,bit1表示对高速缓存的每一组的缓存行的分组,相同值的bit1的缓存行
属于一个分组。分组数越多,则根据带宽情况进行高速缓存替换跳帧的粒度越精细,一个比
特的bit1可以表示缓存行被分成两个分组。可替换地,bit1还可以是两个或更多个比特,以
实现更精细的粒度。在一个实施例中,bit0可以表示是否属于本地存储器簇的存储器,例
如,用1表示属于本地存储器簇,用0表示属于远程存储器簇。
[0089] 步骤S901-S905与步骤S701-705类似,因此省去对其的描述。
[0090] 当NUMA链路的实时带宽大于预定阈值M时,转到步骤S906,在高速缓存的每个组中,根据每个缓存行的MRU值对缓存行进行排序,并且将缓存行分为两个分组,用bit1标记
分组。在一个实施例中,可以设定阈值N来进行分组,将MRU值≥N的缓存行分为一个分组,将
MRU值<N的缓存行分为一个分组。可替换地,分组的条件不限于MRU值,也不限于设定阈值。
[0091] 接着,在步骤S907处,在bit1=1的高速缓存的路的分组中,按照MRU值从高到低搜索第一个bit0=1的缓存行。
[0092] 接着,在步骤S908处,确定是否能够搜索到bit0=1的缓存行。
[0093] 如果无法搜索到bit0=1的缓存行,步骤转到S903。接着,执行步骤S904和S905。
[0094] 如果搜索到bit0=1的缓存行,步骤转到S909,选择搜索到的缓存行。接着,执行步骤S904和S905。
[0095] 进一步对缓存行分组,相当于增加了进行综合考虑实时带宽的高速缓存替换算法的条件。分组越多,所能考虑条件越多,所需要的bit1的比特数也就越多,相应地,缓存行所
占用的资源也会越多。因此,在分组时也需要综合考虑各种因素。在一个实施例中,bit1可
以指示根据延迟时间进行的分组。在一个实施例中,bit1可以指示根据数据尺寸进行的分
组。当然,本发明不限于此。
[0096] 图10示出了根据实施例的图9中所应用的高速缓存替换算法和原有高速缓存替换算法的对比。
[0097] 如图10所示,在CC-NUMA系统下,多个存储器簇通过高速互联连接。这导致对于某个处理器而言,访问本地存储器簇内部的存储器比访问远程存储器簇的存储器所获得的带
宽更大、速度更快。也就是说,相对于各个存储器的带宽限制,链路带宽对于高速缓存替换
的性能影响更大。相比而言,某个处理器访问属于同一存储器簇的HBM和DDR只有带宽上的
差别,速度差别不大。
[0098] 在一个实施例中,高速缓存的每一个组中包括8个路,对应8个缓存行。
[0099] 在一个实施例中,原有的高速缓存替换算法可以采用MRU算法。相应地,在每一组中的每一路的缓存行可以包括MRU值。例如,可以按照7-0的顺序设计MRU值,即,7表示最近
最常使用,0表示最近最少使用。
[0100] 在一个实施例中,本发明的改进的高速缓存替换算法也可以结合MRU算法。在每一组中的每一路的缓存行除了可以包括MRU值,还可以包括F比特。在一个实施例中,F比特还
可以包括如图9所示的bit0和bit1。
[0101] 参考图9中所应用的高速缓存替换算法,监控本地存储器簇和远程存储器簇之间的NUMA链路的实时带宽,设定阈值M。在这种情况下,NUMA链路是稀缺资源,只监控NUMA链路
就可以判断是否需要根据实时带宽情况来选择不同的高速缓存替换算法,然后可以通知所
有处理器CPU0-3实时带宽信息,则CPU0-3在后续进行高速缓存替换时,可以选择是否优先
替换本地存储器簇内部的DDR上的数据。
[0102] 当NUMA链路的实时带宽≤M时,表示NUMA链路带宽压力不大,可以选择远程的存储器簇进行替换,此时可以保持LLC的原有MRU算法不变,不考虑F比特(即bit0和bit1)。
[0103] 当NUMA链路的实时带宽>M时,表示NUMA链路带宽压力较大,如果选择远程存储器簇进行替换,可能导致NUMA链路带宽压力进一步增大,可能造成延迟增加。这时,替换算法
切换为综合考虑MRU和F(包括bit0和bit1)。
[0104] 在该种情况下,把高速缓存中每一组中的缓存行按照MRU算法的排序划分为两个分组(MRU值<N的一个分组,MRU值≥N的一个分组)。在一个实施例中,例如,N可以为4。在
MRU>=4的缓存行分组中挑选第一个F=1的缓存行进行替换。如图10所示,如果仅采用MRU
算法,则应该选择way4来进行替换。然而,在way4的F比特中,bit1=1,且bit0=0,即,此时
way4中的缓存行地址属于远程存储器簇。为了综合考虑实时带宽使得负载更为均衡,可以
在bit1=1的分组中按照MRU值从高到低的顺序搜索第一个bit0=1的缓存行来进行替换。
在图10所示的情况下,应该选择LRU=4且bit1=1、bit0=1的way7。此时way7中的缓存行属
于本地存储器簇,对其进行替换不会对NUMA链路的带宽产生进一步压力。
[0105] 如果不采用这种分组,有可能导致热数据被替换,而使得系统性能下降。
[0106] 此外,还需要考虑一种情况。在bit1=1的分组中,所有缓存行的F比特的bit0都为0,则按照原来的MRU算法进行替换(即,选择MRU=7的way4)。
[0107] 图11A示出了根据实施例的实现本发明的示例装置的软件模块图,图11B示出了根据实施例的实现本发明的又一示例装置的软件模块图。
[0108] 参考图11A,提供了一种在包括多个存储器的存储器系统中基于带宽感知的动态高速缓存替换装置,包括:监控模块1101,被配置为监控与存储器系统相关的实时带宽,其
中,存储器系统包括高速缓存,高速缓存的每一个缓存行中包括:关于该缓存行中所缓存的
数据的使用情况的特征的第一状态信息、以及关于该缓存行的地址所指向的存储器的第二
状态信息;比较模块1103,被配置为确定实时带宽是否满足预定条件以判断是否用更新的
数据来替换所选择缓存行中缓存的数据;以及处理模块1105,被配置为当实时带宽不满足
预定条件时,根据第一状态信息来选择高速缓存中的缓存行之一,用更新的数据来替换所
选择缓存行中所缓存的数据;当实时带宽满足预定条件时,根据第一状态信息和第二状态
信息两者来选择高速缓存中的缓存行之一,用更新的数据来替换所选择缓存行中所缓存的
数据。
[0109] 参考图11B,处理模块1105还可以包括:排序模块11051,被配置为根据缓存行中的信息对缓存行进行排序;搜索模块11053,被配置为搜索多个缓存行中满足条件的一个或多
个缓存行;以及数据替换模块11055,被配置为用更新的数据来替换所选择缓存行中所缓存
的数据。图11B是在图11A的基础上实现本发明的方法的细化的模块结构,但是本发明不限
于此。
[0110] 需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0111] 在本申请所提供的几个实施例中,应该理解到,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,该模块、程序段或代码的一部分包含一个或多个用
于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中
所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可
以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意
的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行
规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的
组合来实现。
[0112] 所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说
对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计
算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个
人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。
而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存
储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要
说明的是,在本文中,诸如第一和第三等之类的关系术语仅仅用来将一个实体或者操作与
另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实
际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包
含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括
没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素
的过程、方法、物品或者设备中还存在另外的相同要素。
[0113] 以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修
改、等同替换、改进等,均应包含在本公开的保护范围之内。应注意到:相似的标号和字母在
下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需
要对其进行进一步定义和解释。
[0114] 以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵
盖在本公开的保护范围之内。因此,本公开的保护范围应以所附权利要求及其等同物的保
护范围为准。