首页 / 专利库 / 资料储存系统 / 高速缓冲存储器 / 高速缓冲存储器及其工作方法和处理器

高速缓冲存储器及其工作方法和处理器

阅读:375发布:2020-05-08

专利汇可以提供高速缓冲存储器及其工作方法和处理器专利检索,专利查询,专利分析的服务。并且本 发明 涉及高速缓冲 存储器 及其工作方法和处理器。一种集关联式 高速缓冲存储器 ,包括:排列为M个集×N个通路的存储条目的M×N的存储器阵列,其中M和N两者都是大于1的整数。在所述M个集的相互独立的P个组中的各组内,所述N个通路能够单独供电。 控制器 针对所述P个组中的各组,监视该组的利用趋势,并且基于所述利用趋势来在不同的时间实例期间向该组的所述N个通路中的不同数量的通路动态地提供电 力 。,下面是高速缓冲存储器及其工作方法和处理器专利的具体信息内容。

1.一种集关联式高速缓冲存储器,包括:
排列为M个集×N个通路的存储条目的M×N的存储器阵列,其中M和N两者都是大于1的整数;
在所述M个集的互斥的P个组中的各组内,所述N个通路能够单独被供电;以及控制器,用于针对所述P个组中的各组,监视该组的利用趋势,并且在不同的时间实例期间基于所述利用趋势来动态地使得向该组的所述N个通路中的不同数量的通路提供电
其中所述组的利用趋势包括所述组的命中率,
在所述组的命中率小于第二预定命中率阈值、并且所述控制器当前正使得电力提供至的组的通路的数量是所述组的全部所述N个通路的情况下,所述控制器使得向所述组的所述N个通路中的更小数量的通路提供电力,以及
在所述组的命中率小于第一预定命中率阈值、并且所述控制器当前正使得电力提供至的组的通路的数量少于所述组的全部所述N个通路的情况下,所述控制器使得向所述组的所述N个通路中的更大数量的通路提供电力,其中所述第一预定命中率阈值大于所述第二预定命中率阈值。
2.根据权利要求1所述的高速缓冲存储器,其中,还包括:
所述组的利用趋势还包括所述组的访问频率
3.根据权利要求2所述的高速缓冲存储器,其中,还包括:
在所述组的命中率大于所述第一预定命中率阈值、并且所述组的访问频率小于第一预定访问频率阈值的情况下,所述控制器使得向所述组的所述N个通路中的更小数量的通路提供电力。
4.根据权利要求2所述的高速缓冲存储器,其中,还包括:
在所述组的命中率小于第三预定命中率阈值、所述组的访问频率大于第二预定访问频率阈值、并且所述控制器当前正使得电力提供至的组的通路的数量是所述组的所有N个通路的情况下,所述控制器使得向所述组的所述N个通路中的更小数量的通路提供电力。
5.根据权利要求2所述的高速缓冲存储器,其中,还包括:
在所述组的命中率小于第三预定命中率阈值、所述组的访问频率大于第二预定访问频率阈值、并且所述控制器当前正使得电力提供至的组的通路的数量小于所述组的所有N个通路的情况下,所述控制器使得向所述组的所述N个通路中的更大数量的通路提供电力。
6.根据权利要求1所述的高速缓冲存储器,其中,还包括:
所述组的利用趋势包括高速缓存行被预取到但所述高速缓存行未被使用而被驱逐的组中的存储条目的数量的度量。
7.根据权利要求6所述的高速缓冲存储器,其中,还包括:
在高速缓存行被预取到但所述高速缓存行未被使用而被驱逐的组中的存储条目的数量大于第一预定条目数量阈值的情况下,所述控制器使得向所述组的所述N个通路中的更小数量的通路提供电力。
8.根据权利要求6所述的高速缓冲存储器,其中,还包括:
在高速缓存行被预取到但所述高速缓存行未使用而被驱逐的组中的存储条目的数量小于第二预定条目数量阈值的情况下,所述控制器使得向所述组的所述N个通路中的更大数量的通路提供电力。
9.根据权利要求1所述的高速缓冲存储器,其中,还包括:
所述组的利用趋势包括所述组的平均牺牲者高速缓存行年龄。
10.根据权利要求9所述的高速缓冲存储器,其中,还包括:
在所述组的所述平均牺牲者高速缓存行年龄大于第一预定年龄阈值的情况下,所述控制器使得向所述组的所述N个通路中的更小数量的通路提供电力。
11.根据权利要求9所述的高速缓冲存储器,其中,还包括:
在所述组的所述平均牺牲者高速缓存行年龄小于第二预定年龄阈值、并且所述控制器当前正使得电力提供至的组的通路的数量小于所述组的所有N个通路的情况下,所述控制器使得向所述组的所述N个通路中的更大数量的通路提供电力。
12.根据权利要求9所述的高速缓冲存储器,其中,还包括:
在所述组的所述平均牺牲者高速缓存行年龄小于第二预定年龄阈值、并且所述控制器当前正使得向所述组的所有N个通路提供电力的情况下,所述控制器使得向所述组的所述N个通路中的更小数量的通路提供电力。
13.根据权利要求1所述的高速缓冲存储器,其中,还包括:
所述控制器包括计数器,所述计数器用于监视所述P个组中的仅Q个组的利用趋势,其中Q小于P;以及
所述控制器以时分复用方式监视所述P个组中的Q个组的不同集的利用趋势。
14.一种使集关联式高速缓冲存储器进行工作的方法,所述高速缓冲存储器具有排列为M个集×N个通路的存储条目的M×N的存储器阵列,其中M和N两者都是大于1的整数,在所述M个集的互斥的P个组中的各组内,所述N个通路能够单独供电,所述方法包括以下步骤:
针对所述P个组中各个组,
监视所述组的利用趋势,其中所述组的利用趋势包括所述组的命中率;以及在不同的时间实例期间,在所述组的命中率小于第二预定命中率阈值、并且当前正在被提供电力的组的通路的数量是所述组的全部所述N个通路的情况下,动态地使得向所述组的N个通路中的更小数量的通路提供电力,以及
在所述组的命中率小于第一预定命中率阈值、并且当前正在被提供电力的组的通路的数量小于所述组的全部所述N个通路的情况下,动态地使得向所述组的N个通路中的更大数量的通路提供电力,其中所述第一预定命中率阈值大于所述第二预定命中率阈值。
15.根据权利要求14所述的方法,其中,所述组的利用趋势还包括所述组的访问频率,所述方法还包括以下步骤:
在所述组的命中率小于第三预定命中率阈值、所述组的访问频率大于第二预定访问频率阈值、并且当前正在被提供电力的组的通路的数量是所述组的全部所述N个通路的情况下,动态地使得向所述组的N个通路中的更小数量的通路提供电力。
16.根据权利要求14所述的方法,其中,所述组的利用趋势还包括所述组的访问频率,所述方法还包括以下步骤:
在所述组的命中率小于第三预定命中率阈值、所述组的访问频率大于第二预定访问频率阈值、并且当前正在被提供电力的组的通路的数量小于所述组的全部所述N个通路的情况下,动态地使得向所述组的N个通路中的更大数量的通路提供电力。
17.根据权利要求14所述的方法,其中,
所述组的利用趋势包括所述组的平均牺牲者高速缓存行年龄,所述方法还包括以下步骤:
在所述组的平均牺牲者高速缓存行年龄小于第二预定年龄阈值、并且当前正在被提供电力的组的通路的数量是所述组的全部所述N个通路的情况下,动态地使得向所述组的N个通路中的更小数量的通路提供电力。
18.一种处理器,包括:
多个处理核;
权利要求1所述的高速缓冲存储器,其耦接至所述多个处理核。

说明书全文

高速缓冲存储器及其工作方法和处理器

[0001] 相关申请的交叉引用
[0002] 本申请要求2016年4月18日提交的标题为“DYNAMIC POWERING OF CACHE MEMORY BY WAYS WITHIN MULTIPLE SET GROUPS BASED ON UTILIZATION TRENDS”的第62/323,859号美国临时申请的优先权,其全部内容通过引用包含于此。

背景技术

[0003] 处理器是执行计算机程序指定的指令的数字装置。典型的计算机系统包括连接至系统存储器的处理器,其中该系统存储器存储程序指令和这些程序指令要处理的数据。这种系统的性能受到以下事实的妨碍:将数据从系统存储器读取到处理器中或者将数据从处理器写入系统存储器所需的时间通常比处理器执行用于处理该数据的指令所需的时间大得多。该时间差经常介于1~2个数量级。因而,处理器在等待对存储器进行读取或写入时,可能处于闲置而不进行任何操作。
[0004] 然而,处理器设计人员很久以前就意识到,程序趋于对相对较小比例的数据进行相对较大比例的时间的访问,诸如频繁访问的程序变量等。具有该特征的程序被认为表现出良好的时间局部性,并且该特征的倾向被称为参考原则的局部性。为了利用该原则,现代处理器通常包括一个或多个高速缓冲存储器。高速缓冲存储器或高速缓存器相对于系统存储器大小是小型存储器,并且电气上接近处理器内核,其中该高速缓冲存储器或高速缓存器暂时存储通常驻留在计算机系统的更大且更远的存储器(诸如系统存储器等)中的数据的子集。对数据进行高速缓存是将数据存储在高速缓冲存储器的存储元件中,使得随后与从系统的更远存储器提供数据相比,可以从高速缓冲存储器更快地提供数据。
[0005] 当处理器执行存储器读取指令(诸如加载或弹出指令等)时,处理器首先检查所请求的数据是否存在于高速缓存器中、即存储器读取地址在高速缓存器中是否命中(hit)。如果所请求的数据不存在于高速缓存器中、即如果存储器读取地址在高速缓冲器中未命中(miss),则处理器通常除将数据加载到处理器的指定寄存器中外,还将该数据取指到高速缓存器中。现在由于数据存在于高速缓存器中,因此下次遇到请求相同数据的存储器读取指令时,可以将该数据从高速缓存器(而不是系统存储器)取指(fetch)到寄存器中以供处理。由于数据已存在于高速缓存器中,因此基本上可以立即执行存储器读取指令。
[0006] 高速缓存器按高速缓存行(cache lines)或高速缓存(cache blocks)存储数据。高速缓存行是在高速缓存器和系统存储器之间可以传送的数据的最小单位。高速缓存行大小的示例是64字节的数据。当存储器读取指令导致高速缓存未命中时,不是仅对该存储器读取指令所请求的数据进行取指,而是将该未命中地址所关联(implicated)的整个高速缓存行取指到高速缓存器中。结果,由于可以从高速缓存器供给数据、而不必访问系统存储器,因此可以快速地执行用于请求相同高速缓存行中的数据的后续存储器读取指令。
[0007] 另外,当执行存储器写入指令(诸如存储或推入(push)指令等)时,如果存储器写入地址在高速缓存器中命中,则可以将数据立即写入高速缓存器的高速缓存行,由此使得推迟向系统存储器的数据写入。随后,通常为了为较新的高速缓存行腾出空间,高速缓存器将该高速缓存行写入系统存储器。该操作通常被称为写回操作。此外,当存储器写入地址在高速缓存器中未命中时,一些高速缓存器还分配该高速缓存器中的条目(entry)。即,高速缓存器进行该高速缓存器的条目中的旧高速缓存行的写回操作,并且将写入地址所关联的新高速缓存行从系统存储器读取到以前被旧高速缓存行占用的高速缓存条目中。该操作通常被称为写入分配操作。
[0008] 可以观察到,高效地起作用的高速缓存器可以大大提高处理器的性能。另外,在许多情况下,特别是在高速缓冲存储器大(诸如处理器的高速缓冲存储器层级中的末级高速缓存器)时,高速缓冲存储器占据了处理器的电消耗的很大比例。还期望降低高速缓冲存储器所消耗的电量,这通常是与提高处理器的性能的目标进行竞争的目标。发明内容
[0009] 本发明提供一种集关联式高速缓冲存储器,包括:排列为M个集×N个通路的存储条目的M×N的存储器阵列,其中M和N两者都是大于1的整数;在所述M个集的互斥的P个组中的各组内,所述N个通路能够单独被供电;以及控制器,用于针对所述P个组中的各组,监视该组的利用趋势,并且在不同的时间实例期间基于所述利用趋势来动态地使得向该组的所述N个通路中的不同数量的通路提供电力。
[0010] 本发明还提供一种使集关联式高速缓冲存储器进行工作的方法,所述高速缓冲存储器具有排列为M个集×N个通路的存储条目的M×N的存储器阵列,其中M和N两者都是大于1的整数,在所述M个集的互斥的P个组中的各组内,所述N个通路能够单独供电,所述方法包括以下步骤:针对所述P个组中各个组,监视所述组的利用趋势;以及在不同的时间实例期间,基于所述利用趋势来动态地使得向所述组的N个通路中的不同数量的通路提供电力。
[0011] 本发明还提供一种处理器,包括:多个处理核;高速缓冲存储器,其耦接至所述多个处理核,所述高速缓冲存储器包括:排列为M个集×N个通路的存储条目的M×N的存储器阵列,其中M和N两者都是大于1的整数;在所述M个集的互斥的P个组中的各组内,所述N个通路能够单独供电;以及控制器,用于针对所述P个组中的各组,监视该组的利用趋势,并且在不同的时间实例期间基于所述利用趋势来向该组的所述N个通路中的不同数量的通路动态地提供电力。附图说明
[0012] 图1是示出处理器的框图
[0013] 图2是更详细地示出图1的高速缓冲存储器的框图。
[0014] 图3是示出图2的高速缓冲存储器的用以进行集(set)的组(group)的通路(way)的选择性供电的操作的流程图
[0015] 图4是示出图2的高速缓冲存储器的用以根据图3的流程图来进行集的组的通路的选择性供电的操作的示例的框图。
[0016] 图5~8是示出根据不同实施例的、图2的高速缓冲存储器的用以进行集的组的通路的选择性供电的操作的流程图。

具体实施方式

[0017] 在本公开中描述将集分组成多个集组(set group)的集关联(set-associate)式高速缓冲存储器的实施例,其中在集关联式高速缓冲存储器的各集组内,可以在高速缓冲存储器的工作期间动态地改变所通电或断电的通路的数量,从而提供高速缓冲存储器的性能和电力消耗之间的期望平衡。也就是说,高速缓冲存储器有时从集组的通路中的一些通路中去除电力且有时向集组的通路中的一些通路提供电力,并且动态地确定高速缓冲存储器去除/提供电力所针对的通路的数量。高速缓冲存储器包括控制器,其中该控制器监视高速缓冲存储器的不同集组的利用趋势(utilization trends),以作出与何时增加或减少所通电的各集组的通路的数量有关的决定。利用趋势包括但不限于命中率、平均牺牲者高速缓存行年龄、预取但未使用的高速缓存行的数量和/或访问频率中的一个或其组合。
[0018] 在本公开中从高速缓冲存储器的一组集的通路中去除电力意味着完全去除电力、或者至少去除电力使得该组的通路中的存储单元的状态丢失或至少不可靠。这与如下的其它省电技术形成对比:减少提供至存储单元的电力,这或许导致性能下降,但提供了足以保持存储单元的状态的电力。相反,在本公开中向高速缓冲存储器的一组集的通路提供电力意味着提供足以保持存储单元的当前状态的电力。
[0019] 现在参考图1,示出例示处理器100的框图。处理器100包括全部耦接至高速缓冲存储器132并且共用高速缓冲器132的多个处理核102。优选地,各核102还包括其自身的较低级的高速缓冲存储器(例如,1级(L1)指令高速缓冲存储器和L1数据高速缓冲存储器),并且高速缓冲存储器132是处理器100的末级高速缓存器(LLC)。另外,处理器100可以包括中间级高速缓冲存储器(例如,2级(L2)高速缓存器),其中该中间级高速缓冲存储器相对于核102可以是本地的,或者可以由两个或更多核102共用。已考虑到如下的实施例:被配置为基于利用趋势来动态地向集组内的所述数量的通路供电的高速缓冲存储器是较低/中间级高速缓冲存储器而不是LLC。此外,尽管针对图1来说明处理器的与多个核共用高速缓冲存储器的多核处理器有关的实施例,但已考虑到如下的其它实施例:多个核不共用被配置为基于利用趋势来动态地向集组内的多个通路供电的高速缓冲存储器,而是该高速缓冲存储器专用于可作为处理器100中的单个核102的核102。
[0020] 现在参考图2,示出更详细地例示图1的高速缓冲存储器132的框图。高速缓冲存储器132包括存储条目的存储器阵列206和包含利用计数器204的控制器202。存储器阵列206排列为M个集×N个通路。在图2的示例实施例中,存在16个通路和128个集,并且这128个集排列成各组具有互斥(mutually exclusive)的16个集的8个集组。应当理解,被配置为基于利用趋势来动态地向集组内的多个通路供电的高速缓冲存储器132可以包括更多或更少的通路、集以及各集组内的集。
[0021] 利用控制器202可单独地向各集组内的通路供电。在一个实施例中,控制器202包括针对各集组的各个通路启用寄存器(未示出)。各通路启用寄存器针对各个组保持用于指定该通路是通电还是断电的、与N个通路相关联的N个位。如以下所述,控制器202设置/清除组的通路启用寄存器的位,以相对于该组的通路提供/去除电力,从而减少/增加针对该组所通电的通路的数量。在替代实施例中,控制器202包括全局通路启用寄存器和Q个本地通路启用寄存器,其中Q小于N。各本地通路启用寄存器具有表示集组中的哪个集组与该本地通路启用寄存器相关联的关联指示符。各有效本地通路启用寄存器控制关联指示符所指定的组的通路的供电,并且利用全局通路指示符来控制本地通路指示符没有指定的组的通路的供电。可选地,与各本地通路启用寄存器相关联的指示符指定开始和结束组,使得由关联的本地通路启用寄存器来控制开始和结束规格中所包括的所有组。特别是在大量组使其通路的全部或仅一个通电的情形中,这些实施例可以在提供足够的电力控制的同时,在大小和电力消耗方面更高效。在一个实施例中,可由控制器202单独对一组集内的通路以成对方式供电。即,控制器202一次向组内的两个通路提供/去除电力。
[0022] 存储器阵列206的存储条目存储高速缓存行的数据和这些高速缓存行的关联状况信息(例如,MESI(Modified Exclusive Shared or Invalid)状态)。在一个实施例中,单独的存储器阵列存储该数据和状况。另外,阵列206包括每一集的用于保持替换信息的存储元件,其中该替换信息用于确定将分配集中的哪个通路。该替换信息还可以保持在与数据和/或状况阵列分开的存储器阵列中。
[0023] 控制器202监视高速缓冲存储器132的利用,以尝试利用处理器100正执行的程序来确定利用随时间经过的趋势。如上所述,利用趋势包括但不限于命中率、平均牺牲者高速缓存行年龄、预取但未使用的高速缓存行的数量和/或访问频率中的一个或其组合。因而,计数器204可用于针对各集组存储向该集组的高速缓存命中的数量、向该集组的访问的次数和该集组中的高速缓存行的年龄。计数器204还可以包括诸如位图或移位寄存器等的存储器,其中该存储器用于存储其它信息(诸如用于指示是否预取了集组的高速缓存行以及是否在预取之后驱逐(evicted)之前使用了集组的高速缓存行的指示等)。如以下更详细地所述,控制器202还保持用于将计数器204中所存储的值与之进行比较的各种阈值。控制器202还包括用于进行监视集组的利用并作出与利用趋势有关的决定所需的计算的逻辑。在一个实施例中,不是具有针对各集组的一组计数器204,而是控制器202包括较少集合的计数器204,其中通过监视不同集组的利用趋势以时分复用方式共用该较少集合的计数器
204。
[0024] 现在参考图3,示出例示图2的高速缓冲存储器132的用以进行集的组的通路的选择性供电的操作的流程图。流程从块301开始。
[0025] 在块301中,控制器202将索引初始化为0。该索引在这里被称为J。流程进入块302。
[0026] 在块302中,控制器202最初向高速缓冲存储器132的所有集组的所有通路提供电力。流程进入块304。
[0027] 在块304中,控制器202监视当前集组(组[J])的一个或多个利用趋势。图5~8描述以下方式的各种实施例:控制器202监视集组的利用趋势;以及控制器202(例如,在决定块306和316中)判断减少或增加集组的通电通路的数量是否有益。流程进入决定块306。
[0028] 在决定块306中,控制器202判断在块304中所监视的集组的利用趋势是否表示减少集组中的通电通路的数量(例如,减少电力消耗以换取可接受的性能损失)将是有益的。如果为“是”,则流程进入块308;否则,流程进入决定块316。
[0029] 在块308中,控制器202减少集组的通电通路的数量。即,控制器202使集组中的当前通电通路中的一个或多个通路(被称为目标通路)断电。在图4中示出如下示例:例如,集组4的通路15在时刻1处通电,但随后在时刻2处由控制器202断电。另外,在使该组的目标通路断电之前,控制器202驱逐这些目标通路中具有有效数据的所有高速缓存行,使得有效数据不会丢失。流程进入块322。
[0030] 在决定块316中,控制器202判断块304中所监视的集组的利用趋势是否表示增加集组中的通电通路的数量(例如,提升性能以换取可接受的电力消耗增加)将是有益的。如果为“是”,则流程进入块318;否则,流程进入块322。
[0031] 在块318中,控制器202增加集组的通电通路的数量。即,控制器202使集组的当前通电通路中的一个或多个通路(被称为目标通路)通电。在图4中示出如下示例:例如,集组5的通路5和6在时刻1处断电,但随后在时刻2处由控制器202通电。另外,在使该组的目标通路通电之后,控制器202使目标通路无效。流程进入块322。
[0032] 在块322中,控制器202更新索引J以指定下一集组,其中该操作优选包括使J递增、并且在J达到集组的数量的情况下绕回到0。流程返回至块304以监视该索引所指定的下一集组的利用。
[0033] 尽管图3(以及图5~8)描述了以时分复用方式监视单个组并且动态地调整该单个组的大小的实施例,但在其它实施例中,根据用以进行监视的资源(例如,计数器204)的可用性,可以以时分复用方式监视一个以上的组并且动态地调整这些组的大小。此外,在其它实施例中,控制器202包括足以同时进行针对所有组的监视和动态调整大小的资源(例如,计数器204),使得不必进行时分复用。例如,在图7的实施例中(在该实施例中预取但未使用的高速缓存行的数量为被监视的利用趋势),所需的资源量可能相对较小,使得包括针对所有组的监视和调整大小的硬件将是大小和电力消耗方面的有利折衷。
[0034] 优选地,在早于对调整集组的大小进行评价的时间点的时间滚动窗口内测量针对图5~8所述的命中率、预取但未使用就被驱逐的高速缓存行的数量、平均牺牲者高速缓存行年龄和访问频率。
[0035] 优选地,阈值是不同的,从而提供滞后影响(hysteresis affect),以避免不必要地、过于频繁地改变集组的大小。这是特别有益的,因为尽管与增大组的大小相关联的性能成本可能很少(可能没有)(尽管可能存在电力消耗成本),但由于必须首先驱逐断电的目标通路中的有效高速缓存行,因而可能存在与减小组的大小相关联的显著的性能成本。
[0036] 现在参考图4,示出例示图2的高速缓冲存储器132的用以根据图3的流程图进行集的组的通路的选择性供电的操作的示例的框图。
[0037] 可以观察到,图4示出高速缓冲存储器132的各个集组(在该示例中为8个)的各个通路是通电(灰色)还是断电(白色)。图4示出在两个不同的时间点(表示为时刻1和时刻2)处各集组的哪些通路通电/断电,其中时刻2在时刻1之后。
[0038] 在图4的示例中,在时刻1处:集组0的通路3~12通电,并且其通路0~2和13~15断电;集组1的通路0~13通电,并且其通路14~15断电;集组2的通路0~11和15通电,并且其通路12~14断电;集组3的通路1~11和14~15通电,并且其通路0和12~13断电;集组4的通路0~15通电,并且没有通路断电;集组5的通路0~4通电,并且其通路5~15断电;集组6的通路0~15通电,并且没有通路断电;集组7的通路2~15通电,并且其通路0~1断电。
[0039] 在图4的示例中,在时刻2处:集组0的通路0和3~12通电并且其通路1~2和13~15断电,即利用控制器202使通路0通电,由此使所通电的通路的数量增加1;集组1的通路0~14通电并且其通路15断电,即利用控制器202使通路14通电,由此使所通电的通路的数量增加1;集组2的通路1~11和15通电并且其通路0和12~14断电,即利用控制器202使通路0断电,由此使所通电的通路的数量减少1;集组3的通路1~11和14~15通电并且其通路0和12~13断电,即控制器202没有改变所通电的通路的数量;集组4的通路0~14通电并且其通路
15断电,即利用控制器202使通路15断电,由此使所通电的通路的数量减少1;集组5的通路0~6通电并且其通路7~15断电,即利用控制器202使通路5~6通电,由此使所通电的通路的数量增加2;集组6的通路0~15通电并且没有通路断电,即控制器202没有改变所通电的通路的数量;集组7的通路3~15通电并且其通路0~2断电,即利用控制器202使通路2断电,由此使所通电的通路的数量减少1。
[0040] 尽管图4示出了集组内的集呈现为彼此连续(即,集的索引是顺次的)的实施例,但已考虑到集组内的集的索引为非顺次的其它实施例。例如,在集组内的集的索引可以是该索引以组的数量为模的值相等的集,例如,假定8个组,则集3、11、19等在同一组中。
[0041] 在一个实施例中,如作为2014年12月14日提交的PCT申请PCT/IB2014/003261(代理人案号VAS.2723-PCT)的美国国家阶段申请的、2015年11月12日提交的美国专利申请14/890,895(代理人案号VAS.2723-PCT-US)所述,高速缓冲存储器132针对集内的不同组的通路采用不同的替换策略,其中各个申请的全部内容通过引用而包含于此以用于所有目的。
用以分别向高速缓冲存储器132的集组内的通路动态地提供电力的能力可以是特别有用的,并且与这种高速缓冲存储器132产生协作增效。
[0042] 现在参考图5,示出例示图2的高速缓冲存储器132的用以进行集的组的通路的选择性供电的操作的流程图。图5的实施例采用集组内的平均牺牲者高速缓存行年龄,作为用于判断减少或增加针对各集组所通电的通路的数量是否可能是有益的利用趋势。高速缓存行的牺牲者年龄是从针对高速缓存行分配高速缓冲存储器132中的条目时起直到从高速缓冲存储器132驱逐该高速缓存行时为止的时间的度量。牺牲者年龄可以从高速缓冲存储器132的时钟周期、向高速缓冲存储器132的访问、向集组的访问或其它适当时间单位方面进行测量。在一个实施例中,图2的利用计数器204记录当前集组中的高速缓存行的牺牲者年龄,并且控制器202(例如,在块504中)在诸如以下等的适当事件时计算高速缓存行牺牲者年龄的平均值:预定时间段结束时、(例如,在图5的流程图的各循环处)监视新的集组时、从集组所驱逐的高速缓存行的数量达到阈值时、或者其它适当事件。
[0043] 一般而言,如果针对集组的平均牺牲者年龄高,则这可能被视为如下的指示:该组可能大于当前数据集的映射到该组的一部分所需的量,并且如果使该组减少为数量更少的通路以省电,则该较小的组可能仍足够大以成为针对数据集的该部分高效的命中率。相反,如果针对集组的平均牺牲者年龄低,则这可被视为如下的指示:该组对于当前数据集的映射到该组的一部分而言过小,并且需要使该组增大。然而,如果针对集组的平均牺牲者年龄低、但该组已处于其最大大小(即,所有的通路已通电),则这可能是如下的指示:数据集的该部分对于该组而言仅仅是过大,以及/或者向该组的访问的性质为较小大小的组与完整大小的组在命中率方面效率将是几乎一样、因此可以通过显著地缩小组的大小来节省电力。例如,假定程序正在大的数据集内进行流传输,使得来自该组的高速缓存行的各新的分配最终导致将仅使用了一次的高速缓存行从该组驱逐,这将利用小的平均牺牲者高速缓存行年龄来表示。在这种情况下,具有少量通路的组与具有最大数量的通路的组在命中率方面将是几乎一样的效率;因而,可以通过使组的通路断电以来显著地减少通路的数量,以节省电力。在一个实施例中,在图5的块517和519中捕获到该特征。流程从块501开始。
[0044] 在块501中,控制器202将索引初始化为0。该索引在这里被称为J。流程进入块502。
[0045] 在块502中,控制器202最初向高速缓冲存储器132的所有集组的所有通路提供电力。流程进入块504。
[0046] 在块504中,控制器202监视当前集组(组[J])的平均牺牲者高速缓存行年龄。流程进入决定块506。
[0047] 在决定块506中,控制器202判断块504中所监视的集组的平均牺牲者高速缓存行年龄是否大于上限阈值,在一个实施例中,该上限阈值是预定值。如果为“是”,则流程进入块508;否则,流程进入决定块515。
[0048] 在块508中,控制器202减少集组的通电通路的数量。另外,在使该组的目标通路断电之前,控制器202驱逐目标通路中的具有有效数据的所有高速缓存行,使得有效数据不会丢失。流程进入块522。
[0049] 在决定块515中,控制器202判断块504中所监视的集组的平均牺牲者高速缓存行年龄是否小于下限阈值,在一个实施例中,该下限阈值是预定值。如果为“是”,则流程进入决定块517;否则,流程进入块522。
[0050] 在决定块517中,控制器202判断集组的所有通路当前是否均通电。如果为“是”,则流程进入块519;否则,流程进入块518。
[0051] 在块518中,控制器202增加集组的通电通路的数量。另外,在使该组的目标通路通电之后,控制器202使目标通路无效。流程进入块522。
[0052] 在块519中,控制器202使集组的通电通路的数量减少为一个通路。在替代实施例中,控制器202使集组的通电通路的数量减少为少量通路(例如,两个、三个或四个)、而不是一个通路。另外,在使组的目标通路断电之前,控制器202驱逐目标通路中的具有有效数据的所有高速缓存行,使得有效数据不会丢失。此外,控制器202确保其在基于集组的平均牺牲者高速缓存行年龄进行集组的通电通路的数量的任何大小调整之前,等待至少预定时间量。在不存在此一延迟的情况下,下次监视该集组时(例如,针对该集组下次循环时),以下是极有可能的:平均牺牲者高速缓存行年龄将小于上限阈值(即,在决定块506中为“否”),平均牺牲者高速缓存行年龄将小于下限阈值(即,在决定块515中为“是”),并且并非所有的通路均通电(即,在决定块517中为“否”),使得控制器202将增加通电通路的数量。然而,只要存在如上所述的条件(即,数据集的一部分对于组而言过大以及/或者向该组的访问的性质为较小大小的组与完整大小的组在命中率方面将是几乎一样的效率),就期望将所通电的通路的数量保持为小。即,只要存在该条件,则增加通路的数量就没有帮助。此一延迟可以为该条件的消退(例如,流传输的完成)提供机会。在不存在此一延迟的情况下,尽管该条件持续存在,但控制器202可能在通电所有通路和通电单个通路之间连续振荡,即每次通过图5的循环时,(经由块518)快速地增加通电通路的数量直到该数量达到所有通电通路、然后(经由块519)下降至小的数量,这是不理想的。在一个实施例中,控制器202针对各集组包括标志,其中在设置该标志的情况下表示延迟针对集组的动态大小调整,在至少预定时间量之后,控制器202清除该标志。流程进入块522。
[0053] 在块522中,控制器202更新索引J以指定下一集组,其中该操作优选包括使J递增、并且在J达到集组的数量时绕回至0。流程返回至块504,以监视该索引所指定的下一集组的平均牺牲者高速缓存行年龄。
[0054] 现在参考图6,示出例示图2的高速缓冲存储器132的用以进行集的组的通路的选择性供电的操作的流程图。图6的实施例采用集组的命中率作为用于判断减少或增加针对各集组所通电的通路的数量是否可能有益的利用趋势。集组的命中率是该集组中的命中次数相对于向该集组的访问次数的比率。在一个实施例中,图2的利用计数器204记录当前集组中的命中次数和向当前集组的访问次数,并且控制器202(例如,在块604中)在诸如以下等的适当事件时计算命中率:预定时间段结束时、(例如,在图6的流程图的各循环处)监视新的集组时、或者其它适当事件。
[0055] 一般而言,如果针对集组的命中率相对较低,则这可被视为如下的指示:该组对于当前数据集的映射到该组的一部分而言可能过小,并且如果使该组增加为较大数量的通路,则该较大的组可以提高针对数据集的该部分的命中率。然而,如果针对集组的命中率非常低并且该组已处于其最大大小(即,所有的通路均通电),则这可能是如下的指示:数据集的一部分对于该组而言仅仅是过大,以及/或者向该组的访问的性质是较小大小的组在命中率方面将是与完整大小的组几乎一样的效率、因此可以通过显著地减小组的大小来节省电力。如以上所论述的,具有少量通路的组可以是与具有最大数量的通路的组几乎一样高效的命中率;因而,可以通过使组的通路断电来显著地减少通路的数量,以节省电力。在一个实施例中,在图6的块617、619和621中捕获到该特征。流程从块601开始。
[0056] 在块601中,控制器202将索引初始化为0。该索引在这里被称为J。流程进入块602。
[0057] 在块602中,控制器202最初向高速缓冲存储器132的所有集组的所有通路提供电力。流程进入块604。
[0058] 在块604中,控制器202监视当前集组(组[J])的命中率。流程进入决定块615。
[0059] 在决定块615中,控制器202判断在块604中所监视的集组的命中率是否小于第一阈值(其中,在一个实施例中,该第一阈值是预定值)。如果为“是”,则流程进入决定块617;否则,流程进入块622。
[0060] 在决定块617中,控制器202判断集组的所有通路当前是否通电。如果为“是”,则流程进入决定块619;否则,流程进入块618。
[0061] 在块618中,控制器202增加集组的通电通路的数量。另外,在使组的目标通路通电之后,控制器202使目标通路无效。流程进入块622。
[0062] 在决定块619中,控制器202判断在块604中所监视的集组的命中率是否小于比块615的第一阈值小的第二阈值,在一个实施例中,该第二阈值也是预定值。如果为“是”,则流程进入块621;否则,流程进入块622。
[0063] 在块621中,控制器202使集组的通电通路的数量减少为一个通路。另外,在使该组的目标通路断电之前,控制器202驱逐这些目标通路中的具有有效数据的所有高速缓存行,使得有效数据不会丢失。此外,如上所述,控制器202确保其在基于集组的命中率进行集组的通电通路的数量的任何大小调整之前,等待至少预定时间量。流程进入块622。
[0064] 在块622中,控制器202更新索引J以指定下一集组,其中该操作优选包括使J递增、并且在J达到集组的数量时绕回至0。流程返回至块604,以监视该索引所指定的下一集组的命中率。
[0065] 现在参考图7,示出例示图2的高速缓冲存储器132的用以进行集的组的通路的选择性供电的操作的流程图。图7的实施例采用集组的预取但未使用高速缓存行的数量(在图7中称为NUM_PBNU)作为用于判断减少或增加针对各集组所通电的通路的数量是否可能有益的利用趋势。集组的NUM_PBNU是集组内的向集组内预取所分配、但随后从未使用的高速缓存行的数量。在一个实施例中,各个核102包括数据预取器,其中该数据预取器基于在核
102上执行程序所产生的存储器访问的模式以及/或者该程序中所包括的指示核102预取高速缓存行的预取指令,来将高速缓存行预取到高速缓冲存储器132中。
[0066] 在一个实施例中,控制器202针对各集组包括计数器204和位。各位与该组的各个存储条目相对应。在通过(例如,通过处理器100的数据或指令预取器所分配的)预取来分配条目时,设置该位,并且在利用加载/存储需求来使用条目时,清除该位。在从条目驱逐高速缓存行时,如果设置了位,则这表示:由于从未使用所预取的高速缓存行,因此所预取的高速缓存行的分配是浪费的;因而控制器202使利用计数器204递增。如果计数器204达到预定阈值,则这可以是表示应当减少通路的数量以节省电力的利用趋势。在一个实施例中,将位保持在高速缓冲存储器132的标签阵列中。在一个实施例中,控制器202针对组的各集包括计数器204,并且控制器202仅在(例如,在决定块706中)判断为针对组的所有集的计数器204超过阈值的情况下,才(例如,在决定块708中)减少所通电的通路的数量。在一个实施例中,图2的利用计数器204记录当前集组的NUM_PBNU,并且控制器202(例如,在块704中)在诸如以下等的适当事件时检查NUM_PBNU:预定时间段结束时、(例如,在图7的流程图的各循环处)监视新的集组时、或者其它适当事件。
[0067] 在块701中,控制器202将索引初始化为0。该索引在这里被称为J。流程进入块702。
[0068] 在块702中,控制器202最初向高速缓冲存储器132的所有集组的所有通路提供电力。流程进入块704。
[0069] 在块704中,控制器202监视当前集组(组[J])的NUM_PBNU。流程进入决定块706。
[0070] 在决定块706中,控制器202判断块704中所监视的集组的NUM_PBNU是否大于上限阈值,在一个实施例中,该上限阈值是预定值。如果为“是”,流程进入块708;否则,流程进入决定块716。
[0071] 在块708中,控制器202减少集组的通电通路的数量。另外,在使该组的目标通路断电之前,控制器202驱逐目标通路中的具有有效数据的所有高速缓存行,使得有效数据不会丢失。流程进入块722。
[0072] 在决定块716中,控制器202判断块704中所监视的集组的NUM_PBNU是否小于下限阈值,在一个实施例中,该下限阈值是比上限阈值小以提供滞后的预定值。如果为“是”,流程进入块718;否则,流程进入块722。
[0073] 在块718中,控制器202增加集组的通电通路的数量。另外,在使组的目标通路通电之后,控制器202使目标通路无效。流程进入块722。
[0074] 在块722中,控制器202更新索引J以指定下一集组,其中该操作优选包括使J递增、并且在J达到集组的数量时绕回至0。流程返回至块704,以监视该索引所指定的下一集组的NUM_PBNU。
[0075] 现在参考图8,示出例示图2的高速缓冲存储器132的用以进行集的组的通路的选择性供电的操作的流程图。如图6的实施例那样,图8的实施例也采用集组的命中率作为用于判断减少或增加针对各集组所通电的通路的数量是否可能有益的利用趋势。然而,图8的实施例还采用向集组的访问频率以及命中率作为利用趋势。集组的访问频率是向集组的访问率的度量。在一个实施例中,控制器202使用向当前集组的访问次数,以(例如,在块804中)在诸如以下等的适当事件时不仅计算命中率而且还计算访问频率:预定时间段结束时、(例如,在图8的流程图的各循环处)监视新的集组时、或者其它适当事件。
[0076] 一般而言,如上所述,如果针对集组的命中率相对较低,则(除非同样如以上所论述的所有的通路都已通电,否则)这通常将表示用以增加集组的通电通路的数量的需求。然而,如果集组的访问频率非常低,则可能不值得这样做,因为:访问很少发生,使得较小集组的省电可能比潜在增加的高速缓存命中率这一相对较小的性能益处有价值。此外,如果访问频率非常低并且命中率高(这暗示着相对较大的集组),则减少集组的通电通路的数量可能是有益的,因为较小集组的省电可能比高的高速缓存命中率这一相对较小的性能益处有价值。流程从块801开始。
[0077] 在块801中,控制器202将索引初始化为0。该索引在这里被称为J。流程进入块802。
[0078] 在块802中,控制器202最初向高速缓冲存储器132的所有集组的所有通路提供电力。流程进入块804。
[0079] 在块804中,控制器202监视当前集组(组[J])的命中率和访问频率。流程进入决定块806。
[0080] 在决定块806中,控制器202判断在块804中所监视的集组的命中率是否大于上限命中率阈值,在一个实施例中,该上限命中率阈值是预定值。如果为“是”,则流程进入决定块807;否则,流程进入决定块816。
[0081] 在决定块807中,控制器202判断在块804中所监视的集组的访问频率是否小于下限访问频率阈值,在一个实施例中,该下限访问频率阈值是预定值。如果为“是”,则流程进入块808;否则,流程进入决定块822。
[0082] 在块808中,控制器202减少集组的通电通路的数量。另外,在使该组的目标通路断电之前,控制器202驱逐这些目标通路中的具有有效数据的所有高速缓存行,使得有效数据不会丢失。流程进入块822。
[0083] 在决定块816中,控制器202判断在块804中所监视的集组的命中率是否小于下限命中率阈值,在一个实施例中,该下限命中率阈值是预定值。如果为“是”,则流程进入决定块817;否则,流程进入块822。
[0084] 在决定块817中,控制器202判断在块804中所监视的集组的访问频率是否大于上限访问频率阈值,在一个实施例中,该上限访问频率阈值是预定值。如果为“是”,则流程进入决定块819;否则,流程进入块822。
[0085] 在决定块819中,控制器202判断集组的所有通路当前是否均通电。如果为“是”,则流程进入块821;否则,流程进入块820。
[0086] 在块820中,控制器202增加集组的通电通路的数量。另外,在使该组的目标通路通电之后,控制器202使目标通路无效。流程进入块822。
[0087] 在块821中,控制器202使集组的通电通路的数量减少为一个通路。另外,在使该组的目标通路断电之后,控制器202驱逐目标通路中的具有有效数据的所有高速缓存行,使得有效数据不会丢失。此外,如上所述,控制器202确保其在基于集组的命中率以及访问频率来进行集组的通电通路的数量的任何大小调整之前,等待至少预定时间量。流程进入块822。
[0088] 在块822中,控制器202更新索引J以指定下一集组,其中该操作优选包括使J递增、并且在J达到集组的数量时绕回至0。流程返回至块804,以监视该索引所指定的下一集组的NUM_PBNU。
[0089] 已考虑到集组的粒度改变的各种实施例。例如,在图2的实施例中,将集分组成八个互斥的组(各集组具有16个通路),由此允许多达128个可单独供电的集组通路。然而,已考虑到具有不同数量的互斥的组以允许有更多或更少的单独可供电通路的其它实施例。在一个实施例中,各集可以是其自身的互斥的组,使得L2高速缓存器124中的各条目可以是集组通路。注意,组的数量越大,可以对L2高速缓存器124进行预算的粒度越精细,以使该L2高速缓存器12适合所分析的程序的需求,而组的数量越少,描述集组通路特征所需的控制位越少。在一个实施例中,尽管组中的集的数量是32,但已考虑到组中的集的数量更多或更少的其它实施例。
[0090] 尽管说明了选择性地向集的组内的通路供电的高速缓冲存储器是多个处理器内核共用的高速缓冲存储器的实施例,但已考虑到高速缓冲存储器专用于单个内核、或者由比处理器的所有内核少的内核共用的其它实施例。此外,尽管说明了选择性地向集的组内的通路供电的高速缓冲存储器是处理器的高速缓冲存储器层级的特定级(例如,3级)处的高速缓冲存储器,但已考虑到高速缓冲存储器处于不同级(例如,1级、2级)的其它实施例。另外,说明了采用预定阈值的各种实施例。在一个实施例中,例如利用操作系统或其它系统软件,预定阈值中的一个或多个是用户可编程的。在一个实施例中,例如采用以下形式将预定阈值中的一个或多个制造到控制器202中:硬接线逻辑、可熔断(即,可更新)的熔断器、以及/或者可打补丁的处理器100的微代码。
[0091] 尽管这里已经说明了本发明的各种实施例,但应当理解,这些实施例是以示例而非限制性的方式呈现的。相关计算机领域的技术人员将明白,可以在没有背离本发明的范围的情况下对这些实施例进行形式和细节方面的各种改变。例如,软件可以实现这里所述的设备和方法的例如功能、制造、建模、模拟、描述和/或测试。这可以通过使用通用编程语言(例如,C、C++)、包括Verilog HDL、VHDL等的硬件描述语言(HDL)、或者其它可用程序的来实现。这种软件可以配置在诸如磁带、半导体、磁盘或光盘(例如,CD-ROM、DVD-ROM等)等的任何已知的计算机可用介质、网络、有线、无线或其它通信介质中。这里所述的设备和方法的实施例可以包括在诸如(例如,以HDL所实现或指定的)处理器内核等的半导体知识产权内核中,并且在集成电路的制造中变换成硬件。另外,这里所述的设备和方法可以作为硬件和软件的组合来实现。因而,本发明不应局限于这里所述任何典型实施例,而应仅根据所附权利要求书及其等同物来定义。具体地,可以在可用于通用计算机的处理器装置内实现本发明。最后,本领域技术人员应当理解,在没有背离如所附权利要求书所定义的本发明的范围的情况下,这些技术人员可以容易地使用所公开的概念和特定实施例作为用于设计或修改用于执行本发明的相同目的的其它结构。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈