用于延迟的高速缓存利用的系统和方法转让专利

申请号 : CN201780054334.9

文献号 : CN109716307B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 威廉·L·沃克

申请人 : 超威半导体公司

摘要 :

一种用于管理高速缓存利用的系统(100),包括处理器核心(111至114)、一个或多个低级高速缓存(131至134)以及高级高速缓存(140)。响应于启用所述高级高速缓存,所述系统对从所述低级高速缓存逐出的低级高速缓存牺牲者进行计数(110)。在所述低级高速缓存牺牲者的计数不大于阈值数量时,所述系统将每个低级高速缓存牺牲者转移到系统存储器(116),而不将所述低级高速缓存牺牲者存储到所述高级高速缓存。当所述低级高速缓存牺牲者的所述计数大于所述阈值数量时,所述系统将每个低级高速缓存牺牲者写入所述高级高速缓存。通过这种方式,如果在达到所述阈值数量的低级高速缓存牺牲者之前停用所述高级高速缓存,则所述高级高速缓存仍然是空的并且因此可以在不进行转储清除的情况下停用。

权利要求 :

1.一种用于管理处理系统(100)中的高速缓存利用的方法,所述方法包括:响应于启用高级高速缓存(140),对从一个或多个低级高速缓存(131至134)逐出的低级高速缓存牺牲者(250)进行计数;

在所述低级高速缓存牺牲者的计数(110)不大于阈值数量时,将所述低级高速缓存牺牲者中的每个低级高速缓存牺牲者存储到存储器(116),而不将所述低级高速缓存牺牲者存储到所述高级高速缓存;以及当所述低级高速缓存牺牲者的所述计数大于所述阈值数量时,将在超过所述阈值数量之后逐出的每个低级高速缓存牺牲者存储到所述高级高速缓存。

2.如权利要求1所述的方法,其中所述一个或多个低级高速缓存中的每一个是2级(L2)高速缓存,并且其中所述高级高速缓存是3级(L3)高速缓存。

3.如权利要求1所述的方法,其中所述阈值数量在所述高级高速缓存的多次启用上是静态的。

4.如权利要求1所述的方法,其还包括:

至少部分地基于以下各项中的至少一者来动态地确定所述阈值数量:所述一个或多个低级高速缓存的高速缓存牺牲者计数历史;所述高级高速缓存的有效位历史;对所述阈值数量的上限约束;对所述阈值数量的下限约束;所述高级高速缓存的功率使用;或者所述高级高速缓存的断电时间。

5.如权利要求1所述的方法,其还包括:

存储高速缓存牺牲者历史,所述高速缓存牺牲者历史将高速缓存牺牲者的数量与所述一个或多个低级高速缓存的活动时间段集合中的每个时间段相关联;以及至少部分地基于所述高速缓存牺牲者历史来确定所述阈值数量。

6.根据权利要求5所述的方法,其中确定所述阈值数量包括至少部分地基于所述阈值数量的上限约束来确定所述阈值数量。

7.如权利要求1所述的方法,其还包括:

使用有效位来跟踪所述高级高速缓存的被占用区域;

存储有效位历史,所述有效位历史将有效位的使用与所述高级高速缓存的活动时间段相关联;以及至少部分地基于所述有效位历史来确定所述阈值数量。

8.如权利要求1所述的方法,其中将在超过所述阈值数量之后逐出的每个低级高速缓存牺牲者存储到所述高级高速缓存包括:基于通路约束来选择所述高级高速缓存的用于存储低级高速缓存牺牲者的区域。

9.如权利要求1所述的方法,其还包括:

响应于将要停用所述高级高速缓存的指示,至少部分地基于所述低级高速缓存牺牲者的所述计数是否超过所述阈值数量来选择用于所述高级高速缓存的断电过程。

10.如权利要求9所述的方法,其中:

选择断电过程包括:

当所述低级高速缓存牺牲者的所述计数不超过所述阈值数量时,选择其中在不将所述高级高速缓存转储清除的情况下停用所述高级高速缓存的断电过程。

11.如权利要求10所述的方法,其中:

当所述低级高速缓存牺牲者的所述计数超过所述阈值数量时,选择其中在将所述高级高速缓存转储清除的情况下停用所述高级高速缓存的断电过程。

12.一种系统(100),其包括:

处理器核心(111至114);

一个或多个低级高速缓存(131至134),其可由所述处理器核心访问;

高级高速缓存(140),其可由所述处理器核心和所述一个或多个低级高速缓存访问;以及控制器(142),其用于访问所述一个或多个低级高速缓存和所述高级高速缓存,其中所述控制器用于:响应于启用所述高级高速缓存,对从所述一个或多个低级高速缓存逐出的低级高速缓存牺牲者进行计数(110);

在所述低级高速缓存牺牲者的计数不大于阈值数量时,将所述低级高速缓存牺牲者中的每个低级高速缓存牺牲者存储到系统存储器(116),而不将所述低级高速缓存牺牲者存储到所述高级高速缓存;以及当所述低级高速缓存牺牲者的所述计数大于所述阈值数量时,将在超过所述阈值数量之后逐出的每个低级高速缓存牺牲者存储到所述高级高速缓存。

13.如权利要求12所述的系统,其中所述阈值数量在所述高级高速缓存的多次启用上是静态的。

14.如权利要求12所述的系统,其中所述控制器还用于至少部分地基于以下各项中的至少一者来动态地确定所述阈值数量:所述一个或多个低级高速缓存的高速缓存牺牲者计数历史;所述一个或多个低级高速缓存的有效位历史;对所述阈值数量的上限约束;对所述阈值数量的下限约束;所述高级高速缓存的功率使用;或者所述高级高速缓存的断电时间。

15.如权利要求12所述的系统,其中所述控制器用于:存储高速缓存牺牲者历史,所述高速缓存牺牲者历史将高速缓存牺牲者的数量与所述一个或多个低级高速缓存的活动时间段集合中的每个时间段相关联;以及至少部分地基于所述高速缓存牺牲者历史来确定所述阈值数量。

16.如权利要求12所述的系统,其中所述控制器用于:使用所述高级高速缓存的标签阵列中的有效位来跟踪所述高级高速缓存的被占用区域。

17.如权利要求16所述的系统,其中所述控制器用于:存储有效位历史,所述有效位历史将所述有效位的使用与所述高级高速缓存的活动时间段相关联;以及至少部分地基于所述有效位历史来确定所述阈值数量。

18.如权利要求12所述的系统,其中所述控制器用于:当所述低级高速缓存牺牲者的所述计数不超过所述阈值数量时,在不将所述高级高速缓存转储清除的情况下使所述高级高速缓存断电。

19.如权利要求12所述的系统,其中所述控制器用于:在所述计数不大于所述阈值数量时,基于通路约束来选择所述高级高速缓存的用于存储低级牺牲者的区域。

20.一种用于管理高速缓存利用的方法,所述方法包括:存储高速缓存牺牲者历史,所述高速缓存牺牲者历史将高速缓存牺牲者的数量与低级高速缓存的活动时间段集合中的每个时间段相关联;

确定要发送到存储器而不存储到高级高速缓存的低级高速缓存牺牲者的阈值数量;以及响应于启用所述高级高速缓存,在启用所述高级高速缓存之后,将达到阈值数量的低级高速缓存牺牲者存储到系统存储器,而不写入所述高级高速缓存。

21.如权利要求20所述的方法,其中存储达到所述阈值数量的低级高速缓存牺牲者包括确定所述低级高速缓存牺牲者的计数。

22.如权利要求21所述的方法,其中存储达到所述低级高速缓存牺牲者的阈值数量还包括:在所述低级高速缓存牺牲者的计数不大于所述阈值数量时,将所述低级高速缓存牺牲者中的每个低级高速缓存牺牲者存储到存储器,而不将所述低级高速缓存牺牲者存储到所述高级高速缓存。

23.一种用于管理缓存利用的方法,所述方法包括:

响应于启用高级高速缓存,对发送到所述高级高速缓存的低级高速缓存牺牲者进行计数;以及在所述低级高速缓存牺牲者的计数(110)不大于阈值数量时,将所述低级高速缓存牺牲者中的每个低级高速缓存牺牲者存储到所述高级高速缓存,并且将所述高级高速缓存的存储所述低级高速缓存牺牲者的位置存储到转储清除表。

24.如权利要求23所述的方法,其还包括:

当低级高速缓存牺牲者的计数超过所述阈值数量时,将每个低级高速缓存牺牲者写入所述高级高速缓存,而不将所述高级高速缓存的存储所述低级高速缓存牺牲者的位置存储到所述转储清除表。

25.如权利要求23所述的方法,其还包括:

存储高速缓存牺牲者历史,所述高速缓存牺牲者历史将高速缓存牺牲者的数量与一个或多个低级高速缓存的活动时间段集合中的每个时间段相关联;以及至少部分地基于所述高速缓存牺牲者历史来确定所述阈值数量。

26.如权利要求23所述的方法,其还包括:

当所述低级高速缓存牺牲者的所述计数不超过所述阈值数量时,在不将所述高级高速缓存转储清除的情况下停用所述高级高速缓存。

27.如权利要求23所述的方法,其还包括:

使用有效位来跟踪所述高级高速缓存的被占用区域;

存储有效位历史,所述有效位历史将有效位的使用与所述高级高速缓存的活动时间段相关联;以及至少部分地基于所述有效位历史来确定所述阈值数量。

28.如权利要求23所述的方法,其中将在超过所述阈值数量之后逐出的每个低级高速缓存牺牲者存储到所述高级高速缓存包括:基于通路约束来选择所述高级高速缓存的用于存储低级高速缓存牺牲者的区域。

说明书 :

用于延迟的高速缓存利用的系统和方法

技术领域

[0001] 本申请涉及存储器系统,尤其涉及一种用于延迟的高速缓存利用的系统和方法。

背景技术

[0002] 处理系统经常使用具有多级高速缓存的存储器子系统。往往有利的是在不使用时停用此类高速缓存(也就是,“断电”)。为了停用高速缓存,将高速缓存转储清除(flush)并且将任何有效行发送到系统存储器。然而,在搜索高级高速缓存以获得发送到存储器的有效高速缓存行时会消耗功率。一些传统的存储器子系统在高速缓存外部利用跟踪硬件来跟踪指示高速缓存的大致被占用区域(也就是,有效高速缓存行在高速缓存内所在的地方)的有效性位集合、有时被称为“通路有效”或“扇区有效”位,以帮助搜索有效行的速度。如果有效行并未广泛地分布在高速缓存上,则使用此类有效性位可以加速转储清除。然而,搜索有效行和将高速缓存转储清除以准备停用高速缓存的过程利用大量的功率或大量的时钟周期。

发明内容

[0003] 本申请在一个方面提供了一种用于管理处理系统(100)中的高速缓存利用的方法,所述方法包括:响应于启用高级高速缓存(140),对从一个或多个低级高速缓存(131至134)逐出的低级高速缓存牺牲者(250)进行计数;在所述低级高速缓存牺牲者的计数(110)不大于阈值数量时,将所述低级高速缓存牺牲者中的每个低级高速缓存牺牲者存储到存储器(116),而不将所述低级高速缓存牺牲者存储到所述高级高速缓存;以及当所述低级高速缓存牺牲者的所述计数大于所述阈值数量时,将在超过所述阈值数量之后逐出的每个低级高速缓存牺牲者存储到所述高级高速缓存。
[0004] 本申请在另一个方面提供了一种系统(100),其包括:处理器核心(111至114);一个或多个低级高速缓存(131至134),其可由所述处理器核心访问;高级高速缓存(140),其可由所述处理器核心和所述一个或多个低级高速缓存访问;以及控制器(142),其用于访问所述一个或多个低级高速缓存和所述高级高速缓存,其中所述控制器用于:响应于启用所述高级高速缓存,对从所述一个或多个低级高速缓存逐出的低级高速缓存牺牲者进行计数(110);在所述低级高速缓存牺牲者的计数不大于阈值数量时,将所述低级高速缓存牺牲者中的每个低级高速缓存牺牲者存储到系统存储器(116),而不将所述低级高速缓存牺牲者存储到所述高级高速缓存;以及当所述低级高速缓存牺牲者的所述计数大于所述阈值数量时,将在超过所述阈值数量之后逐出的每个低级高速缓存牺牲者存储到所述高级高速缓存。
[0005] 本申请在又一个方面提供了一种用于管理高速缓存利用的方法,所述方法包括:存储高速缓存牺牲者历史,所述高速缓存牺牲者历史将高速缓存牺牲者的数量与低级高速缓存的活动时间段集合中的每个时间段相关联;确定要发送到存储器而不存储到高级高速缓存的低级高速缓存牺牲者的阈值数量;以及响应于启用所述高级高速缓存,在启用所述高级高速缓存之后,将达到阈值数量的低级高速缓存牺牲者存储到系统存储器,而不写入所述高级高速缓存。
[0006] 本申请在还另一个方面提供了一种用于管理缓存利用的方法,所述方法包括:响应于启用高级高速缓存,对发送到所述高级高速缓存的低级高速缓存牺牲者进行计数;以及在所述低级高速缓存牺牲者的计数(110)不大于阈值数量时,将所述低级高速缓存牺牲者中的每个低级高速缓存牺牲者存储到所述高级高速缓存,并且将所述高级高速缓存的存储所述低级高速缓存牺牲者的位置存储到转储清除表。

附图说明

[0007] 通过参考附图可以更好地理解本公开,并且本公开的许多特征和优点对本领域的技术人员显而易见。
[0008] 图1包括根据一些实施例的用于利用延迟高速缓存技术进行存储器管理的示例系统的图示。
[0009] 图2包括根据一些实施例的图1的系统中的示例延迟高速缓存过程的图示。
[0010] 图3包括示出根据一些实施例的用于在高速缓存启用之后基于延迟高速缓存来管理高速缓存利用的示例方法的流程图。
[0011] 图4包括示出根据一些实施例的用于训练用于延迟高速缓存过程的阈值参数来进行存储器管理的示例方法的流程图。
[0012] 图5包括示出根据一些实施例的用于将经受延迟高速缓存的高速缓存转储清除的示例方法的流程图。
[0013] 图6包括根据一些实施例的图1的系统中的延迟高速缓存过程的另一示例的图示。
[0014] 图7包括示出根据一些实施例的基于利用转储清除表的延迟高速缓存过程进行存储器管理的示例方法的流程图。
[0015] 图8包括示出根据一些实施例的用于使用转储清除表将高速缓存转储清除的示例方法的流程图。
[0016] 在不同图中使用相同参考符号指示相似或相同的项。

具体实施方式

[0017] 图1至图8示出用于在高速缓存启用之后使用延迟高速缓存过程进行高速缓存管理的示例系统和方法,以便在高速缓存随后停用时降低将高速缓存转储清除所引起的功率和周期成本。在一个示例实施例中,一种系统包括一个或多个处理器核心和存储器子系统,所述存储器子系统至少包括低级高速缓存和高级高速缓存,以及存储器控制器和系统存储器。高级高速缓存响应于一个或多个相关联处理器核心处的活动而启用(也就是,从低功率状态变成高功率状态)。响应于启用高级高速缓存,所述系统对从低级高速缓存转移或从低级高速缓存移除的高速缓存行进行计数。此类转移或移除的高速缓存行在本文中被称为“低级高速缓存牺牲者”。在低级高速缓存牺牲者的计数不超过指定的阈值数量时,将低级高速缓存牺牲者发送到系统存储器并且例如不写入高级高速缓存。当所述计数达到阈值数量时,准许任何后续的低级高速缓存牺牲者存储在高级高速缓存中。因此,将低级高速缓存牺牲者缓存在高级高速缓存处被延迟直至达到阈值数量的低级高速缓存牺牲者。因此,高级高速缓存在它启用之后的更长时间内仍然是空的,并且因此在高级高速缓存启用之后不久就停用的情况下,高级高速缓存更容易转变到停用状态而无需花费时间和能量来搜索有效高速缓存行和将所述有效高速缓存行从高级高速缓存转移到系统存储器。
[0018] 在替代实施例中,当启用高级高速缓存时,所述系统对在高级高速缓存启用之后发出的低级高速缓存牺牲者进行计数。在所述计数不超过阈值数量时,将低级高速缓存牺牲者存储在高级高速缓存中并且将高级高速缓存中的存储高速缓存级牺牲者的高速缓存行地址或其他位置的列表(这个列表在本文中被称为“转储清除表”)存储在所述系统处。可选地,存储器控制器还存储指示所述计数是否超过阈值的指示符。如果停用高级高速缓存并且所述计数不超过阈值,则所述系统实施停用过程,所述停用过程访问转储清除表并且将与存储在转储清除表中的具体高速缓存行地址相关联的高级高速缓存的高速缓存行转储清除。或者,当所述计数在停用高级高速缓存的情况下超过阈值数量时,根据不同停用过程来停用存储器,诸如基于以下操作的过程:跟踪有效位、识别用来存储高速缓存牺牲者或以其他方式被高速缓存牺牲者占用的通路或其他区域、将用来存储低级高速缓存牺牲者的高级高速缓存的那些识别的通路转储清除,以及停用高级高速缓存。因此,在高功率状态下的短时间段之后,在转变到低功率状态之前可以更容易识别和转移有效高速缓存行,从而降低与功率状态之间的转变相关联的时间和功率消耗。
[0019] 图1示出根据至少一些实施例的处理系统100。在所示示例中,处理系统100包括计算复合体102、高速缓存层级结构104、存储器控制器106以及南桥108。计算复合体102包括多个处理器核心,诸如四个处理器核心111、112、113、114。所述处理器核心包括例如中央处理单元(CPU)核心、图形处理单元(GPU)核心、数字信号处理器(DSP)核心,或者它们的组合。将了解,计算复合体102的处理器核心的数量可以少于或多于四个。
[0020] 存储器控制器106作为高速缓存层级结构104与系统存储器116之间的接口操作。因此,将要高速缓存在高速缓存层级结构104中的数据通常作为数据块操纵,所述数据块被称为高速缓存行并且使用系统存储器116的物理地址寻址或以其他方式定位在存储器层级结构中。由存储器控制器106响应于来自高速缓存层级结构104的存储器请求而从系统存储器116访问高速缓存行。同样地,当含有更改后数据的高速缓存行被逐出高速缓存层级结构
104并且因此需要在系统存储器116中更新时,系统控制器106管理这个回写过程。南桥108作为高速缓存层级结构104、存储器控制器106与处理系统100的一个或多个外围设备118(例如,网络接口、键盘、鼠标、显示器以及其他输入/输出装置)之间的接口操作。
[0021] 高速缓存层级结构104包括两级或更多级高速缓存。在所示示例中,高速缓存层级结构104包括三个高速缓存级:1级(L1);2级(L2)和3级(L3)。对于L1,核心复合体102针对每个处理核心实施小型专用高速缓存,所述小型专用高速缓存被示为L1高速缓存121、122、123、124,每一者与处理器核心111至114中的对应一者相关联。对于L2,核心复合体102针对每个处理器核心实施较大专用高速缓存,所述较大专用高速缓存被示为分别对应于处理器核心111至114的L2高速缓存131、132、133、134。L2高速缓存131至134中的每一者是它的对应处理器核心专用的,但高速缓存层级结构104操作以维持L2高速缓存131至134之间的一致性。在一些实施例中,L2高速缓存131至134包括例如直接映射高速缓存或n通路组相关联高速缓存。
[0022] 对于L3高速缓存级,高速缓存层级结构104实施由计算复合体102的处理器核心共享并且因此至少由L2高速缓存131至134共享的L3高速缓存140。L3高速缓存140实施L3控制器142和包括多个索引和多个对应通路的L3数据阵列,每个通路用于将对应高速缓存行存储在对应索引处,以及用于存储与每个索引/通路相关联的标签信息的L3标签阵列。共同地示出L3数据阵列和L3标签阵列,并且在本文中被称为L3数据/标签阵列144。出于下文的目的,L3高速缓存140被视作高级高速缓存,而L1高速缓存121至124和L2高速缓存131至134被视作低级高速缓存(相对于L3高速缓存140而言)。
[0023] 如下文更详细地描述,当诸如L3高速缓存140的高级高速缓存响应于相关联处理器核心111至114中的一者或多者处的活动而启用时(也就是,从低功率状态转换到高功率状态),计数器110开始对在L3高速缓存140的启用开始之后从低级高速缓存中的一者或多者逐出的高速缓存行(也就是,“低级高速缓存牺牲者”)计数。例如,所述计数包括L2高速缓存牺牲者的计数或者将要从L1高速缓存121至124或L2高速缓存131至134移除的L1和L2高速缓存牺牲者的计数。计数器110可以实施在例如L3高速缓存140中(例如,在L3控制器142中,如图1所示)或实施在L3高速缓存140外部的硬件中(例如,在存储器控制器106中)。
[0024] 在低级高速缓存牺牲者的计数不超过阈值数量时,在一些实施例中,高速缓存层级结构104阻止任何低级高速缓存牺牲者被高速缓存在L3高速缓存140中,并且因此每个低级高速缓存牺牲者反而例如使用L3控制器142转移到系统存储器116。然而,一旦低级高速缓存牺牲者的计数满足或超过这个阈值数量,高速缓存层级结构104便准许任何后续的低级高速缓存牺牲者被高速缓存在L3高速缓存140中。因此,按照这种方法,对于从低级高速缓存发出的第一阈值数量的低级高速缓存牺牲者,L3高速缓存140仍然是“空”的(也就是,没有有效高速缓存行)。因此,如果在从低级高速缓存逐出阈值数量的低级高速缓存牺牲者之前再次停用L3高速缓存140,则可以在不必将L3高速缓存140转储清除的情况下停用L3高速缓存140。
[0025] 为了说明,现在参考图2中示出的特定示例,低级高速缓存牺牲者250在L3高速缓存140启用之后被逐出低级高速缓存(例如,L2高速缓存131至134)。如图所示,L3高速缓存140由一组低级高速缓存(例如,L2高速缓存131至134)共享。因此,在一些情况下,低级高速缓存牺牲者250的这个集合是来自与共享高级高速缓存相关联的低级高速缓存中的每一者的低级高速缓存牺牲者的累积集合。或者,低级高速缓存牺牲者250的集合由单个低级高速缓存生成并且提供给专用高级高速缓存。如图所示,在L3高速缓存140启用之后,低级高速缓存牺牲者250中的编号不大于阈值数量“N”的初始子集252发送到系统存储器116,而不高速缓存在L3高速缓存140中,然而准许在这个阈值数量N之后的任何后续低级高速缓存牺牲者250(诸如所示子集254中的那些)高速缓存在L3高速缓存140中。
[0026] 在其中高级高速缓存(例如,L3高速缓存)在相关联处理器核心处于功率门控状态时停用并且在相关联处理器核心中的一者或多者活动时启用的系统中,高级高速缓存可以在所述高速缓存是空的(也就是,不含有有效高速缓存行)时更快速地停用。在其中处理器核心和相关联高级高速缓存频繁地唤醒和关闭的系统中,如本文所述的在此类短活动时段期间绕过高级高速缓存可以降低功率消耗并且减少与停用高级高速缓存相关联的时间。因此,在图2的所示示例中,如果L3高速缓存140的停用是在发出N个低级高速缓存牺牲者250之前发生,则L3高速缓存140将是空的并且因此准备好停用,而无需首先将L3高速缓存140的有效高速缓存行转储清除,由此降低在停用L3高速缓存140时消耗的功率。
[0027] 图3示出根据一些实施例的用于在高级高速缓存启用之后实施延迟高速缓存的方法300。方法300以高级高速缓存(例如,L3高速缓存140,图1)的启用开始,如在框302处所示。在示例中,响应于相关联处理器核心处或相关联低级高速缓存处的活动而启用高级高速缓存。响应于启用高级高速缓存,计数器110开始对由低级高速缓存(例如,L2高速缓存131至134)发出的低级高速缓存牺牲者的计数,如在框304处所示。
[0028] 在低级高速缓存牺牲者从低级高速缓存转移(如在框306处所示)时,L3控制器142针对发出的每个低级高速缓存牺牲者使当前计数增加一(计数=计数+1),如在框308处所示,并且随后将低级高速缓存牺牲者的当前计数与阈值数量进行比较,如在框310处所示。如果当前计数不超过阈值数量,则不准许访问高级高速缓存,并且因此低级高速缓存牺牲者绕过存储在高级高速缓存中并发送到系统存储器或除了高级高速缓存外的高速缓存,如在框312处所示。然而,当与低级高速缓存牺牲者相关联的当前计数超过阈值数量时(也就是,当自从高级高速缓存启用以来已经发出了N个低级高速缓存牺牲者时),准许访问高级高速缓存,并且因此低级高速缓存牺牲者存储到高级高速缓存,如在框314处所示。例如,低级高速缓存牺牲者使用传统协议写入高级高速缓存,诸如使用通路有效位来识别有效高速缓存行。
[0029] 因此,如由方法300所示通过在高级高速缓存通电之后阻止前N个(N=阈值数量)低级牺牲者存储到高级高速缓存,高级高速缓存在初始时间段内并且针对初始数量的低级高速缓存牺牲者仍然是空的。因此,当在短时间段的活动之后停用高级高速缓存时,高级高速缓存更可能是空的并且因此避免在停用高级高速缓存之前进行转储清除过程。
[0030] 在一些实现方式中,阈值数量是在高级高速缓存的多次启用上的静态数量。在一些实施例中,这个静态数量可以基于系统的预期使用来建立或者通过建模或模拟来确定。或者,例如至少部分地基于高级高速缓存的历史使用或低级高速缓存牺牲者的计数而动态地确定所述阈值数量。例如,如图4所示,方法400包括L3控制器142跟踪高级高速缓存使用,如在框402处所示。或者,存储器控制器106跟踪高级高速缓存使用并且实施方法400的方面。在示例中,L3控制器142跟踪通路有效位的历史以确定高级高速缓存的使用历史。在示例中,有效位历史将有效位使用与高级高速缓存的先前活动时间段相关联。在另一示例中,跟踪在活动时段期间转移的低级高速缓存牺牲者的数量或计数。例如,高速缓存牺牲者计数历史将低级牺牲者计数与先前活动时间段相关联。
[0031] 如在框404处所示,L3控制器142将此类高级高速缓存牺牲者历史(诸如,有效位历史或牺牲者计数历史)存储在L3控制器142或存储器控制器106的表或其他数据结构中。如在框406处所示,L3控制器142或存储器控制器106至少部分地基于高速缓存牺牲者历史来确定阈值数量。例如,至少部分地基于在先前活动时间段期间从低级高速缓存转移的低级高速缓存牺牲者的计数来确定阈值数量。在另一示例中,使用基于通路有效位或扇区有效位的数量的高级高速缓存使用历史来确定阈值数量。在又一示例中,阈值数量还受对阈值数量的上限约束或对阈值数量的下限约束影响。例如,当基于使用历史动态地确定阈值数量时,L3控制器142阻止阈值数量被设置成大于上限约束的数量或者阻止阈值数量被设置成小于下限约束的数量。在一些实施例中,确定阈值数量还包括基于将功率消耗或断电的时钟周期数量与高级高速缓存使用历史相关联的算法来确定阈值数量。
[0032] 因此,使用例如依赖于使用历史数据的查找表、算法、探试法或直方图来确定阈值数量,所述使用历史数据诸如通路有效或扇区有效位的历史或者与先前活动时间段相关联的被上限约束和下限约束约束的低级高速缓存牺牲者计数的历史。此类查找表、算法、探试法或直方图由例如功率消耗或断电时钟周期的数量通知。
[0033] 为了停用高级高速缓存,所述系统根据低级高速缓存牺牲者是否写入高级高速缓存来选择要实施的特定停用过程,或者至少部分地基于低级高速缓存牺牲者的计数是否超过阈值数量来选择用于高级高速缓存的停用过程。例如,如图5所示,方法500包括开始停用系统100的高级高速缓存,如在框502处所示。此类停用是例如响应于相关联核心进入功率门控状态而开始的。
[0034] 系统100确定高级高速缓存中是否含有任何有效高速缓存行,如在框504处所示。在高级高速缓存含有有效高速缓存行的情况下,所述系统选择利用高速缓存转储清除过程的停用协议,并且因此根据这个停用协议来将高级高速缓存转储清除,如在框506处所示。
在示例中,所述系统针对通路有效位来搜索高级高速缓存的标签阵列(例如,L3数据/标签阵列144)以识别将被转储清除的高级高速缓存的高速缓存行,并且可以将所识别的高速缓存行牺牲者转移到系统存储器116。一旦高级高速缓存被转储清除,系统100便将高级高速缓存置于低功率状态,如在框508处所示。
[0035] 再次参考框504,当低级高速缓存牺牲者没有写入高级高速缓存时,系统100可以选择不包括转储清除过程的停用协议,并且因此系统100可以绕过高级高速缓存的转储清除并且反而在没有转储清除的情况下直接使高级高速缓存断电,如在框510处所示。因此,通过阻止前N个低级牺牲者存储到高级高速缓存,当在从低级高速缓存逐出第N+1个低级牺牲者之前停用高级高速缓存的情况下停用时,所述系统可以周期性地绕过时间密集且消耗功率的转储清除过程。
[0036] 以上描述内容描述了示例实现方式,借此阻止将在高级高速缓存启用之后的阈值数量的初始低级牺牲者存储在所述高级高速缓存中。然而,在通过图6中的示例示出的替代实现方式中,准许编号不大于阈值数量(“N”)的低级高速缓存牺牲者的初始集合存储到高级高速缓存,诸如L3高速缓存140。L3控制器142或高速缓存层级结构104的其他部件存储一个或多个转储清除表670,所述转储清除表存储L3高速缓存140中的存储初始集合的对应低级高速缓存牺牲者的位置。此外,如下文所述,在一些实现方式中,将低级高速缓存牺牲者的这个初始集合限制到高级高速缓存的通路的子集(在图6中由框672表示通路的这个子集),而在这个初始集合之后发出的低级高速缓存牺牲者可以存储到通路的整个集合(由框674表示)中的任一者,受制于其他基于通路的约束。此外,L3控制器142存储标识符680(例如,控制位或寄存器值)以识别转移到高级高速缓存的低级高速缓存牺牲者的数量是否超过阈值数量。如下文更详细地说明,在停用过程期间可以利用转储清除表670,以减少用于停用高级高速缓存的时间量、时钟周期或功率使用。
[0037] 图7示出根据一些实施例的用于在高级高速缓存启用之后填充转储清除表670的方法700。方法700包括启用高级高速缓存(例如,L3高速缓存140),如在框702处所示。如上所述,例如响应于一个或多个相关联处理器核心处的活动而启用高级高速缓存。如在框704处所示,计数器110开始对从低级高速缓存逐出的低级高速缓存牺牲者的计数。在低级高速缓存牺牲者从低级高速缓存转移(如在框706处所示)时,存储器控制器106针对发出的每个低级高速缓存牺牲者使当前计数增加一(计数=计数+1),如在框708处所示,并且随后将低级高速缓存牺牲者的当前计数与阈值数量进行比较,如在框710处所示。在计数不超过阈值数量时,将每个低级牺牲者写入高级高速缓存,如在框712处所示。可选地,将低级高速缓存牺牲者写入高级高速缓存内的被通路约束约束的位置,所述通路约束识别写入低级高速缓存牺牲者的有限集合的区域。高级高速缓存内的写入低级高速缓存牺牲者的初始集合的位置也可以存储在转储清除表670中,如在714处所示。或者,低级高速缓存牺牲者的初始集合可以写作连续集合、写入存储在转储清除表670中的地方的位置。
[0038] 再次参考框710,当低级高速缓存牺牲者的计数超过阈值数量时,系统100将任何后续的低级高速缓存牺牲者写入高级高速缓存,而基于位置的限制不用于写入N个低级牺牲者的初始集合,如在框716处所示。可以使用用于确定高级高速缓存上的写入低级高速缓存牺牲者的位置的各种算法和探试法来写此类低级高速缓存牺牲者。在每种情况下,将低级高速缓存牺牲者写入高级高速缓存可以使用高级高速缓存的标签阵列的通路有效位来识别用过的区域。
[0039] 在替代示例中,上述方法的方面可以在L3控制器142中实施。此外,图3的方法300和图7的方法700可以相结合,其中第一阈值数量的低级高速缓存牺牲者发送到系统存储器而不写入高级高速缓存,并且第二阈值数量的低级高速缓存牺牲者存储在高级高速缓存上而同时将地址存储在转储清除表中。
[0040] 当停用高级高速缓存时,系统100可以基于计数来确定在停用之前是否利用转储清除表670以加速高级高速缓存的转储清除,或者是否使用其他机制,诸如监测有效位或跟踪通路有效位。例如,如图8所示,方法800包括开始高级高速缓存的断电过程,如在框802处所示。将在高级高速缓存活动时从低级高速缓存转移到高级高速缓存中的低级高速缓存牺牲者的计数与阈值数量进行比较,如在框804处所示。应注意,这个阈值数量与在图7的框706处采用的阈值数量相同。
[0041] 如果计数不超过阈值数量(也就是,如果不大于阈值数量的低级牺牲者已经存储在高级高速缓存中),则系统100可以使用转储清除表670来将高级高速缓存转储清除。因此,如在框806处所示,所述系统访问存储在存储器控制器或其他存储位置上的转储清除表670。如上文参考图7所述,转储清除表670存储N个低级牺牲者的初始集合中的每一者在高级高速缓存内的每个位置的标识符。利用转储清除表670,系统100可以将转储清除表670中指示的位置转储清除,如在808处所示,并且随后将高级高速缓存断电,如在框810处所示。
[0042] 再次参考框804,如果低级高速缓存牺牲者的计数不超过阈值数量,则系统100只使用转储清除表670无法将高级高速缓存转储清除。因此,系统100搜索与高级高速缓存的标签阵列中的每个高速缓存行相关联的有效位以识别有效高速缓存行,或者访问通路有效位以识别高级高速缓存内的存储将被转储清除的有效高速缓存行的区域,如在框812处所示。将所识别的有效高速缓存行转储清除到系统存储器116(或较高的高速缓存级),如在框814处所示,并且可以停用高级高速缓存,如在框818处所示。考虑到搜索高级高速缓存来获得将被转储清除的高级高速缓存的有效高速缓存行或有效区域可能比利用识别高级高速缓存上的有限数量的物理位置的转储清除表670花费更多时间,利用有效位或查表(table walking)的停用过程可能比利用转储清除表670的过程慢。
[0043] 在一些实施例中,上述设备和技术在包括一个或多个集成电路(IC)装置(也被称为集成电路封装或微芯片)的系统中实施,诸如上文参考图1至图8描述的处理系统。电子设计自动化(EDA)和计算机辅助设计(CAD)软件工具可以用于设计和制造这些IC装置。这些设计工具通常表示为一个或多个软件程序。所述一个或多个软件程序包括可由计算机系统执行的代码,以操纵计算机系统在代表一个或多个IC装置的电路的代码上操作,以便执行用于将制造系统设计或适配成制造所述电路的过程的至少一部分。这个代码可以包括指令、数据,或者指令和数据的组合。代表设计工具或制造工具的软件指令通常存储在可由计算系统访问的计算机可读存储介质中。同样地,代表IC装置的设计或制造的一个或多个阶段的代码可以存储在相同计算机可读存储介质或不同计算机可读存储介质中并且从中访问。
[0044] 非暂时性计算机可读存储介质可以包括在使用期间可由计算机系统访问以向计算机系统提供指令和/或数据的任何非暂时性存储介质或非暂时性存储介质的组合。此类存储介质可以包括,但不限于,光学介质(例如,光盘(CD)、数字多功能盘(DVD)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机存取存储器(RAM)或高速缓存)、非易失性存储器(例如,只读存储器(ROM)或闪存存储器),或者基于微机电系统(MEMS)的存储介质。计算机可读存储介质可以嵌入在计算系统中(例如,系统RAM或ROM)、固定地附接到计算系统(例如,磁性硬盘驱动器)、可移除地附接到计算系统(例如,光盘或基于通用串行总线(USB)的闪存存储器),或者经由有线或无线网络耦合到计算机系统(例如,网络可访问存储设备(NAS))。
[0045] 在一些实施例中,上述技术的某些方面可以通过处理系统的一个或多个处理器执行软件来实施。所述软件包括存储或以其他方式有形地体现在非暂时性计算机可读存储介质上的一个或多个可执行指令集。所述软件可以包括指令和某些数据,所述指令和某些数据在由一个或多个处理器执行时操纵所述一个或多个处理器来执行上述技术的一个或多个方面。非暂时性计算机可读存储介质可以包括例如磁盘或光盘存储装置、诸如闪存存储器的固态存储装置、高速缓存、随机存取存储器(RAM),或者一个或多个其他非易失性存储器装置等等。存储在非暂时性计算机可读存储介质上的可执行指令可以采用源代码、汇编语言代码、目标代码或者被一个或多个处理器解译或以其他方式执行的其他指令格式。
[0046] 应注意,上述所有活动或元件并非都是必需的,具体活动或装置的一部分可能是不需要的,并且除了上述那些活动和元件外,可以执行一个或多个其他活动或者包括其他元件。此外,列出活动的顺序不一定是执行活动的顺序。而且,已经参考具体实施例描述了概念。然而,本领域一般技术人员应了解,在不脱离如所附权利要求中所阐明的本公开的范围的情况下,可以进行各种修改和变化。因此,说明书和附图应被视作说明性而非限制性的,并且所有此类修改意图被包括在本公开的范围内。
[0047] 上文已经关于具体实施例描述了益处、其他优点和问题的解决方案。然而,所述益处、优点、问题的解决方案以及可以致使任何益处、优点或解决方案出现或者变得更加明显的任何特征不应被解释为任一或所有权利要求的决定性、必需或本质特征。此外,上文公开的特定实施例仅仅是说明性的,因为受益于本文中的传授内容的本领域技术人员显而易见,所公开的主题可以采用不同但等效的方式进行修改和实践。除了所附权利要求中描述之外,并不意图限制本文中所示的构造或设计的细节。因此显然,可以更改或修改上文公开的特定实施例并且所有此类变化被视作在所公开的主题的范围内。因此,本文中寻求的保护在所附权利要求中阐明。