指令高速缓存功耗降低的制作方法

文档序号:6397652阅读:266来源:国知局
专利名称:指令高速缓存功耗降低的制作方法
指令高速缓存功耗降低
背景技术
微处理器通常采用指令高速缓存来加速指令的检索和执行。指令高速缓存通常在更高级别的存储器与处理器之间用作缓冲存储器。当指令由处理器获取时,该指令被复制到指令高速缓存中以由处理器直接访问。如果在程序指令集中相同的指令被频繁地使用,则由于减少了较高级别的存储器的较慢访问,所以在指令高速缓存中存储这些指令使得吞吐量增加。例如,集关联(set-associative)指令高速缓存可包括数据阵列和标签阵列。数据阵列和标签阵列可结合以形成在指令高速缓存内的以不同方式组织的高速缓存线或字。当生成用于指令获取的地址时,指令高速缓存将地址的标签字段与当前存储在标签阵列的相应高速缓存线集合中的标签值加以比较。如果存在标签匹配,并且标签有效(即,高速缓存命中),那么从与期望的地址相对应的数据阵列中的位置来获取数据。既然直接从指令高速缓存中检索数据,由于不必访问外部存储器,因此速度提高。在指令高速缓存的一个示范性实现方案中,当生成用于指令获取的地址时,并行地激活标签阵列和数据阵列的与可能匹配该地址的高速缓存线集合相对应的部分。换句话说,标签阵列中与高速缓存线集合相对应的所有通路均被激活,并且数据阵列中与高速缓存线集合相对应的所有地址均被激活。当标签阵列和数据阵列被激活时,获取保存有与指令地址相对应的数据的数据阵列位置,并且丢弃在其他激活位置的数据。通过并行激活与高速缓存线集合相对应的标签阵列和数据阵列的所有位置,相对于串行方法,通常指令获取可被更快地实施,在所述串行方法中,在一个时钟周期中所有的标签位置均被激活以标识匹配的数据位置,并且在随后的时钟周期中,数据阵列中的单个位置被激活以获取数据。然而,采用这些用于实施指令获取的并行和串行方法有各种限制。例如,在并行方法中,由于数据阵列中与高速缓存线集合相对应的所有数据位置均被激活来从仅仅一个位置获取数据,所以为支持增加处理速度而增加了功率消耗。换句话说,并行方法更快,但是它的功率耗费也更大。另一方面,在串行方法中,通过仅激活数据阵列中的一个位置来减少功率消耗。然而,为了标识数据阵列中的哪一个位置必须被激活以获取期望的数据,标签阵列和数据阵列访问必须在多个时钟周期上串行地发生。换句话说,串行方法牺牲处理速度以支持减少功率消耗。


图1示出了根据本公开的计算设备的微处理器的实施例。图2示出了根据本公开的计算机处理管线的实施例。图3示意性示出了指令高速缓存的实施例的一部分。图4示出了最近最少使用位的编码,其标识指令高速缓存的高速缓存线集合中的最近最少使用通路。图5示出了最近最少使用位的编码,其标识指令高速缓存的高速缓存线集合中的最近最多使用通路。
图6示出了用于控制指令高速缓存的方法的实施例。图7示出了根据本公开的的示范性指令高速缓存操作的时间线。
具体实施例方式本论述提出了用于以这样的方式来控制微处理器的指令高速缓存的新颖的系统和方法:在不显著地降低微处理器性能的情况下减少功率消耗。更具体地,本论述涉及通过从指令获取中所规定的指令高速缓存通路集合中来确定最近最多使用(MRU)通路(或地址),以优化指令高速缓存的控制。通过在高速缓存线集合中仅激活MRU通路而不激活其他通路来检索存储在MRU通路处的数据,关于MRU通路的信息被用来有效地访问指令高速缓存。这样,如果在MRU通路处有高速缓存命中,则相对于集合中的所有通路均被激活以从单个通路中检索数据的实现方案,在指令高速缓存中查找数据所消耗的功率量减少。此外,可利用高速缓存线集合的标签来并行地查找MRU通路以提供相对于串行方法更快的性能。另一方面,如果在集合MRU通路之外的通路之一中存在命中,那么由于MRU通路的有限激活,因此数据是不可用的,并且随后激活集合中的另一个通路以检索数据。由于实际增加了指令高速缓存命中时延,因此高速缓存查找的重演(replay)通常会降低性能。然而,该类事件的频率足够稀少,使得与并行查找方法相比,总体节能胜过性能的小幅降低。当该类事件发生时的性能与串行查找方法相似。此外,如果在集合中没有命中任何通路(S卩,高速缓存未命中),由于数据需要从更高级别的高速缓存中检索,因此指令高速缓存的行为相对于其他的实现方案没有改变。换句话说,当出现高速缓存未命中时,相对于集合中的所有通路被激活以检索数据的指令高速缓存控制方法没有性能损失,并且,功率消耗仍然低于并行查找方法。图1示意性描绘了微处理器100,其可与本文所描述的系统和方法关联采用。微处理器100相异地包括存储器分级体系110和/或与存储器分级体系110通信,所述存储器分级体系Iio包括LI处理器高速缓存112、L2处理器高速缓存114、L3处理器高速缓存116、主存储器118 (例如,一个或多个DRAM芯片)、二级存储120 (例如,磁性和/或光存储单元)和/或三级存储122 (例如,磁带群(tape farm))。应该理解,尽管可能有例外,但是这些存储器/存储部件被按照访问时间和容量的递增顺序列出。存储器控制器124处理协议并且提供主存储器118所要求的并且通常用来调度存储器访问的信号接口。存储器控制器可在处理器裸片上或分离的裸片上实现。应该理解,上面提供的存储器分级体系是非限制性的,并且在不脱离本公开的范围的情况下,也可使用其他的存储器分级体系。所述的存储器分级体系是示例性的示例,并且应该理解,在不脱离本公开的精神的情况下,可采用其他的分级体系。微处理器100包括获取逻辑126、解码逻辑128、执行逻辑130、存储逻辑132以及回写逻辑134。获取逻辑126从存储器分级体系110 (通常从由L2-L3高速缓存和主存储器所支持的专用LI指令高速缓存)中检索指令,用于存储在指令高速缓存216中(在图2中示出)。可根据本文所描述的系统和方法来控制指令高速缓存216,以便当实施指令获取操作时,降低由于微处理器100的功率消耗。解码逻辑128解码所获取的指令,例如通过解析操作码、操作数和寻址模式。一旦被解析,随后由执行逻辑130执行指令。对于产生结果(例如,与在执行程序中实施至另一个位置的分支的那些相对)的操作,回写逻辑134将结果写到适当的位置,诸如处理器寄存器。在加载/存储架构中,存储逻辑132实施加载和存储操作,诸如将操作数从主存储器加载到处理器寄存器中。应该理解,上述5个阶段在某种程度上特定于并且包括在典型的精简指令集计算(RISC)的实现方案中。更一般地,微处理器可包括获取、解码和执行逻辑,以及由执行逻辑所执行的存储和写回功能。本公开同样适用于这些以及其他的微处理器实现方案。在所描述的示例中,可以一次一个地获取和执行指令,这可能要求多个时钟周期。在这段时间内,数据路径大量部分可能未被使用。除了或者代替单个指令获取,可使用预取方法以提高性能并避免与读取和存储操作(即,读取指令并将这样的指令加载到处理器寄存器中和/或执行队列中)相关联的时延瓶颈。此外,在任何给定的时间可获取多个指令以提闻性能。为了获得更高的性能,示例性的微处理器可被管线化以拓展指令级并行性并且更高效地利用数据路径,使得在同一时间在执行的不同阶段中存在多个指令。图2示出了根据本描述的处理管线200的实施例。

例如,处理管线200包括5个阶段: 指令获取(IF) 202 指令解码(ID) 204 执行(EX) 206 存储(MEM) 208 回写(WB) 210在IF阶段202中,获取指令用于在处理管线200中执行。此外,在ID阶段204中,解码之前所获取的指令并且从包括寄存器堆的解码逻辑中读取寄存器源操作数。在EX阶段206中,执行逻辑用来计算结果(例如,对于“ADD”指令)、计算用于存储器操作(例如,“LOAD (加载)”或“STORE (存储)”)的有效地址,或者计算分支目标地址(例如,对于“branch(分支)”指令),其中如果采取分支,则处理管线200应该获取它的下一个指令。在MEM阶段208中,加载和存储指令访问数据存储器(或高速缓存)。在WB阶段210期间,具有寄存器目的操作数的任何指令(例如“ADD”或“STORE”)将他们的结果写到寄存器堆(未示出)。因此,一个指令可能正在将结果写回到内部寄存器同时另一个指令正在读取或写入数据,紧跟着的指令正在执行操作,并且接下来的指令正在检索寄存器操作数而另一个指令正在被获取。具体转向IF阶段202,本论述目的在于在指令获取操作期间控制指令高速缓存216。IF阶段202包括程序计数器212,其记录要在处理管线200的指令序列中所执行的指令的存储器地址。程序计数器212将所要执行的指令的地址发送给指令存储器214。指令存储器214包括指令高速缓存216和到更高级别存储器存储(例如,更高级别高速缓存和其他存储器子系统)的接口 226。注意,指令存储器以简化的形式呈现,并且应该认识到指令存储器可附加地或可替代地包括各种其他类型的存储器。指令高速缓存216用作在更高级别存储器存储接口 226和处理管线200的阶段之间的缓冲存储器。当获取指令时,将在由指令所请求的程序计数器212所引用的位置处的数据复制到指令高速缓存216中以通过处理管线200进行发送。如果在程序指令集中频繁地使用相同的指令数据,则由于减少了经由接口 226的从更高级别存储器存储来检索指令减少,因此在指令高速缓存216中存储这些指令使得吞吐量增加。如果用于指令的数据没有存储在指令高速缓存216中,那么经由接口 226访问更高级别存储器存储来检索数据。图3示出了指令高速缓存216的一部分,并且本文将参考其用于论述指令高速缓存216。指令高速缓存216包括分为多个高速缓存线的存储器空间,其示例在302处示出。在一个具体的示例中,每个高速缓存线为64字节。多个高速缓存线被逻辑地分为多个高速缓存线集合,高速缓存线集合的示例在304处示出。在一个具体的示例中,指令高速缓存包括512个高速缓存线集合,其中的四个(即,集合N-N+3 )在图3中示出。应该予以理解的是,在不脱离本公开的范围的情况下,指令高速缓存可包括任何合适数目的高速缓存线集合,每个高速缓存线可以是任意合适的大小,并且每个高速缓存线中的字节的数目可以是不同的。高速缓存线集合中的高速缓存线的数目可定义主存储器中任何特定的位置可映射于其的指令高速缓存中位置的数目。在示出的示例中,指令高速缓存包括四通路的集关联阵列,其中每个高速缓存线集合均是关联的并且包括可储存指令数据的四个通路。应该予以理解的是,在不脱离本公开的范围的情况下,指令高速缓存可以在高速缓存线集合中包括任意合适数目的通路或数据位置(例如完全关联的2通路、8通路等等)。指令高速缓存216的每个高速缓存线均被分为提供不同信息的不同的位字段。特别地,指令高速缓存216的每个高速缓存线均包括最近最少使用(LRU)位306、标签位308以及数据位310。LRU位306指示在高速缓存线集合中的最近最少使用(或访问)通路。标签位308标识指定通路,在该处存储与地址相对应的指令。数据位310存储指令数据。在所示出的示例中,由于如果存在命中,则由于指令高速缓存的每个指令获取读取均对高速缓存线的数据的一半进行检索,因此每个高速缓存线的数据位310均被分为低的一半和高的一半。应该予以理解的是,在不脱离本公开的范围的情况下,在指令获取读取期间可检索任意合适的数据量。将每个高速缓存线的不同位字段组织到由高速缓存控制器224所控制的不同阵列中。特别地,指令高速缓存216包括LRU阵列218、标签阵列220以及数据阵列222。LRU阵列218包括用于指令高速缓存216中的每个高速缓存线集合的LRU位306。标签阵列220包括用于指令高速缓存216中的每个高速缓存线的标签位308。数据阵列222包括用于指令高速缓存216中的每个高速缓存线的数据位310。高速缓存控制器224配置为贯穿指令获取操作,在任意LRU阵列218、标签阵列220和/或数据阵列222中查找(又称为访问或激活)任意指定位置以检索相应的位。应该予以理解的是,在不脱离本公开的范围的情况下,以简化的形式提供指令高速缓存,并且在一些实现方案中,指令高速缓存可包括保存附加数据的可替代的或附加的阵列结构。在高级别处,在指令获取操作期间,当程序计数器212发起指令获取请求的时候,高速缓存控制器224可基于从程序计数器212接收的地址来确定可存储指令的高速缓存线集合。在一个示例中,高速缓存控制器224激活用于高速缓存线集合的所有四个通路的标签阵列220和所有这些通路的数据阵列222,以确定在高速缓存线集合中是否存在命中或未命中。注意,在一些实现方案中,高速缓存控制器224并行激活标签阵列220和数据阵列222以确定是否存在命中,同时如果存在命中,则检索指令数据。对于高速缓存命中,在处理管线200的ID阶段204中,高速缓存控制器224从指令高速缓存216将指令数据输出给寄存器。在高速缓存命中之后的后续的时钟周期中,高速缓存控制器224从指令高速缓存中的顺序条目中获取指令,直到发生管线停滞或直到由于支路或事件而重定向为止。对于高速缓存未命中,从主存储器226中检索指令并且将其放置在指令高速缓存216的高速缓存线中。高速缓存控制器224采用规定的高速缓存线集合的LRU位306以选择用于收回(eviction)的通路,使得从主存储器206所检索的指令可存储在指令高速缓存216中。例如,可选择如由LRU位306所指示的最近最少使用通路用于收回,使得所请求的指令可存储在其位置上。图4示出了由高速缓存控制器224所使用以标识高速缓存线集合中的最近最少使用通路的LRU位的编码400的示例。编码或伪LRU(pseudo-LRU)算法400采用3位矢量来记录高速缓存线集合中四个通路里哪一个是最近最少使用的。例如,对于命中通路之一的指令高速缓存的读取,高速缓存控制器224以下面的方式在编码400中更新LRU位。L[l]或L[2]位这两者之一以及L
位被指出不太可能是最近最多使用的通路。另一个L[l]或L[2]位保持不变。因此,如果通路O是集合的最近最少使用通路,那么L
位被设置为0,L[1]位被设置为0,并且L[2]位无关紧要或者不加以考虑。如果通路I是集合的最近最少使用通路,那么L
位被设置为0,L[l]位被设置为1,并且L[2]位无关紧要。如果通路2是集合的最近最少使用通路,那么L
位被设置为1,L[l]位无关紧要,并且L[2]位被设置为O。如果通路3是集合的最近最少使用通路,那么L
位被设置为1,L[l]位无关紧要,并且L[2]位被设置为I。高速缓存控制器224随着每次高速缓存命中而更新LRU位,以更新最近最少使用通路。进一步地,闻速缓存控制器224随着每次闻速缓存未命中而读取LRU位,以确定选择哪个通路用于收回。此外,在指令高速缓存216的操作期间,在控制策略中采用LRU位以降低功率消耗。控制策略识别处理管线200贯穿操作对一些指令频繁的重复执行。由于这样的重复,相对于高速缓存线集合中的其他通路,所请求的指令更可能存储在最近最多使用通路中。相应地,高速缓存控制器224配置为基于LRU位306来确定指定高速缓存线集合中的最近最多使用(MRU)通路。当获取顺序条目时,高速缓存控制器224使用最近最多使用通路以高效地访问指令高速缓存216。例如,当顺序获取下一个指令时,高速缓存控制器224配置为激活数据阵列222中与最近最多使用通路相对应的位置,而不是激活集合中的所用通路以检索指令。这样,相对于激活集合中的所有通路来从单个通路检索数据的其他方法,在指令高速缓存216中查找数据所消耗的功率量减少。图5示出了用于基于高速缓存线集合的LRU位的高速缓存线集合的MRU位的示范性编码500。编码500由高速缓存控制器224所使用以跟踪高速缓存线集合中的最近最多使用通路。特别地,MRU编码500通过翻转LRU编码400的位来确定。换句话说,可使用LRU位306来确定用于指定高速缓存线集合的最近最多使用通路和最近最少使用通路二者。根据MRU编码500,如果通路O是集合的最近最多使用通路,那么L
位被设置为1,L[1]位被设置为I,并且L [2]位无关紧要或者不加以考虑。如果通路I是集合的最近最多使用通路,那么L
位被设置为1,L[1]位被设置为0,并且L[2]位无关紧要。如果通路2是集合的最近最多使用通路,那么L
位被设置为0,L[1]位无关紧要,并且L[2]位被设置为I。如果通路3是集合的最近最多使用通路,那么L
位被设置为0,L[l]位无关紧要,并且L[2]位被设置为O。MRU编码500提供了高速缓存控制器224可以如何确定高速缓冲线集合中的最近最多使用通路的一个示例。应该予以理解的是,在不脱离本公开的范围的情况下,高速缓存控制器可以任何合适的方式来确定高速缓冲线集合中的最近最多使用通路。在一个示范性实现方案中,高速缓存控制器224配置为在时钟周期内的LRU阵列218的单个读取操作中对四个连续的高速缓存线集合的LRU位进行查找。换句话说,LRU位描述四高速缓存线集合的组。与读取操作相对应的高速缓存线集合的数目基于指令高速缓存的实现方案,并且更具体地,基于用来描述高速缓存线集合中的通路的LRU位的数目和高速缓存线的大小。应该予以理解的是,在不脱离本公开的范围的情况下,可从单个的读取操作中返回用于任意合适数目的高速缓存线集合的LRU位。在一个示例中,高速缓存控制器224配置为针对指令获取操作,随着初始标签和数据查找(例如,其由于分支操作而在重定向之后被实施)而并行地对LRU位进行查找。注意,用于所要完成的LRU访问的时钟周期的数目基于实现方案而变化。假设初始查找不针对相关联的LRU条目中的最终集合并且没有后续的重定向,那么在初始访问之后的两个时钟周期LRU位对于高速缓存控制器224是可用的。高速缓存控制器224配置为基于LRU位来确定将要开始的指令查找(或访问)和后续访问的最近最多使用通路。针对这些访问,高速缓存控制器224配置为查找存储在数据阵列222中的最近最多使用通路里的数据来获取指令。相应地,高速缓存控制器224配置为不激活数据阵列222中的指定高速缓存线集合中的任何其他通路。换句话说,只有数据阵列222的最近最多使用通路被激活以获取指令。此外,在标签阵列220中,高速缓存控制器224配置为查找用于所选定的高速缓存线集合中的所有通路的标签以确定是否在指定高速缓存线集合的任何通路中存在命中。在一个示例中,高速缓存控制器224配置为并行地实施标签查找和最近最多使用通路数据阵列查找。如果在最近最多使用通路中存在命中,那么来自所激活数据阵列的数据是可用的,并且高速缓存控制器224配置为输出存储在最近最多使用通路中的数据。如果在不是最近最多使用通路的通路之一中存在命中,那么由于只有最近最多使用通路的数据阵列222的有限激活,因此数据是不可用的。随后,为了从标签命中的通路中获取指令,高速缓存控制器224配置为激活标签阵列220和数据阵列222的相应部分来从指定的高速缓存线集合中的所有通路获取所有标签和数据。由于实际上增加了高速缓存命中时延,因此高速缓存查找的重演一般会降低性能。如果在指定高速缓存线集合中的任何通路中均不存在命中,则从主存储器226或另一个更高级别高速缓存中检索指令。在该控制策略中,为了降低功率消耗,高速缓存控制器使用从LRU位导出的信息来预测存储指令的位置,并且仅访问该位置来检索数据。具体地,控制策略命令高速缓存线集合中的最近最多使用通路为用于所要存储的指令的最可能的位置。如此,高速缓存控制器仅激活数据阵列的最近最多使用通路以检索数据。如果预测正确,则相对于激活高速缓存线集合中的所有通路,功率消耗降低,并且没有性能损失。如果预测不正确,那么由于数据阵列的有限激活,因此需要附加的访问以检索数据。注意,在一些情况下,出于基于高速缓存命中而更新LRU的目的,在将于其他方面查找LRU位的时间点之前查找LRU位。在该示例中,在其中LRU位将被使用的对新的LRU数据条目的第一顺序访问之前的两个时钟周期查找LRU阵列。进一步注意,在该示例中,在通过访问阵列之一而实施查找之后的两个时钟周期,数据可用。应该予以理解的是,在不脱离本公开的范围的情况下,检索数据的处理速度或时钟周期的数目可能不同。图6示出了用于控制指令高速缓存的方法600的实施例。在一个示例中,图2中示出的高速缓存控制器224配置为实施方法600来控制指令高速缓存216的操作,包括访问LRU阵列218、标签阵列220和数据阵列222。在602处,方法600包括在最近最少使用位阵列中查找用于指令高速缓存中的多个高速缓存线集合的每一个的最近最少使用位。查找LRU位包括激活LRU阵列与多个高速缓存线集合相对应的部分。在一个示例中,多个高速缓存线集合表示指令高速缓存中的顺序条目。在条目序列中指定集合可由从指令获取操作所提供的地址所规定。在一个具体的示例中,查找最近最少使用位包括查找用于指令高速缓存中的四个顺序高速缓存线集合的每一个的最近最少使用位。为了预测其中存储指令的集合中的通路,可在从高速缓存线集合之一获取指令之前查找用于顺序高速缓存线集合的LRU位。在604处,方法600包括基于用于指定高速缓存线的最近最少使用位来确定在多个高速缓存线集合的指定高速缓存线集合中的最近最多使用通路。在一个示例中,指定高速缓存线集合是其中存储当前正在被获取的指令的集合。在一个示例中,正如上面参考编码500和图5所论述的,使用3位矢量来确定MRU通路以跟踪哪个通路是最近最多使用的。在606处,在一个示例中,方法600包括在标签阵列中查找用于指定高速缓存线集合中的所有通路的标签。高速缓存线集合中的所有标签经激活以确定是否在指定高速缓存线集合中的任何一个通路中存在高速缓存命中。可替代地,在另一个示例中,方法600包括在标签阵列中查找指定高速缓存线集合中的最近最多使用通路。如果存在命中,则没有性能损失。然而,如果存在未命中,那么高速缓存控制器不知道数据是否在不同的通路的指令高速缓存中或者根本不在指令高速缓存中。因此,在未命中之后,可实施包括所有通路的标签阵列的第二次查找以确定数据是否在另一个通路中,或者是否需要从更高级别存储器存储来检索数据。在608处,方法600包括在数据阵列中查找存储在指定高速缓存线集合中的最近最多使用通路中的数据。更具体地,在数据阵列中查找存储在指定高速缓存线集合中的最近最多使用通路中的数据包括:激活数据阵列的最近最多使用通路,而且不激活指定高速缓存线集合中数据阵列的任何其他通路。相对于其中所有通路均被激活以从单个通路检索数据的方法,通过在指令获取操作期间不激活指定高速缓存线集合中数据阵列的任何其他通路,可降低功率消耗。在一个示例中,并行地实施标签查找和数据查找。通过并行实施这些操作,可更快地实施指令获取操作以相对于串行方法提高处理性能。注意,在于标签阵列中查找用于指定高速缓存线集合中所有通路的标签和于数据阵列中查找存储在最近最多使用通路中的数据之前,在最近最少使用位阵列中实施对用于多个高速缓存线集合的每一个的最近最少使用位的查找。为了降低功率消耗,通过在标签和数据查找之前查找LRU位,可对指令存储在哪里(即MRU通路)进行预测,使得数据阵列可以被高效地激活。在一个示例中,在于标签阵列中查找用于指定高速缓存线集合中所有通路的标签和于数据阵列中查找存储在最近最多使用通路中的数据之前的两个时钟周期,在最近最少使用位阵列中实施对用于多个高速缓存线集合的每一个的最近最少使用位的查找。应该予以理解的是,在不脱离本公开的范围的情况下,可在标签和数据查找之前的任意合适数目的时钟周期查找LRU位。在610处,方法600包括确定在MRU通路中是否存在高速缓存命中。可基于为指定高速缓存线集合的一个或多个通路而查找的标签来进行确定。如果确定在MRU通路中存在高速缓存命中,那么方法600移动到612。否则,方法600移动到614。在612处,在MRU通路中存在高速缓存命中,并且方法600包括从数据阵列中输出存储在最近最多使用通路中的数据。数据表示由指令获取操作所请求的指令。在一个示例中,将数据输出给处理管线的指令解码阶段。在614处,方法600包括确定在除了指定高速缓存线集合中的MRU通路之外的任何其他通路中是否存在高速缓存命中。如果确定在除了指定高速缓存线集合中的MRU通路之外的任何其他通路中存在高速缓存命中,则方法600移动到618和620。否则,方法600移动到616。在616处,方法600包括从更高级别高速缓存或其他存储器存储中检索指令数据。在一个示例中,通过接口 226从更高级别高速缓存或其他存储器存储中检索数据。在618处,方法600包括在标签阵列中查找用于指定高速缓存线集合中的所有通路的标签。查找标签以确定在高速缓存线集合中是否仍然存在高速缓存命中。在620处,方法600包括在数据阵列中查找存储在指定高速缓存线集合的所有通路中的数据。在一个示例中,在重演期间并行地实施标签查找和数据查找。通过并行实施这些操作,可更快地实施指令获取操作以提高处理性能。在622处,方法600包括从指定高速缓存线集合中的命中通路输出数据。图7示出了根据本公开的示范性指令高速缓存操作的时间线。时间线描绘了在指令获取操作期间的标签、数据和LRU阵列访问的示范性管线。在该示例中,出于简单而明确的目的,每次激活最近最多使用通路均假设存在高速缓存命中。进一步地,如果存在命中,则每个对高速缓存的指令获取读取均检索高速缓存线的数据的一半。在时间线中,时间从左向右推进并且后续的指令高速缓存访问从上到下推进,尽管一些访问可并行实施。在第一时钟周期中,已经发生了由于分支的重定向,引起指令高速缓存的指令获取。在第二时钟周期中,在标签阵列中查找用于指定高速缓存线集合(集合2)的所有标签,在数据阵列中查找用于高速缓存线集合(集合2)的所有低数据通路,以及在LRU阵列中查找用于四连续高速缓存线集合的组的LRU位,其包括当前高速缓存线集合。注意,虽然查找用于四连续高速缓存线集合的组的LRU位,但当前指令正在从其中获取的指定高速缓存线集合不必是组中的第一高速缓存线集合。在所示出的示例中,指定高速缓存线集合是组中的第三高速缓存线集合(即,集合0-3中的集合2)。在第二时钟周期中并行地实施标签、数据和LRU查找。当由于分支的重定向从指令高速缓存引起获取时,数据和标签阵列的所有通路均被激活以确定在高速缓存线集合中的任何通路中是否存在命中,并且如果存在高速缓存命中,则返回正确数据。激活LRU阵列以确定在接下来的四个顺序高速缓存线集合中的MRU通路。在该示例中,在实施查找之后两个时钟周期数据可用。当处理正在来自第二时钟周期的数据访问时,实施下一个指令获取。特别地,在第三时钟周期中,针对集合2查找所有的标签和高数据通路。由于来自对LRU阵列的初始查找的MRU数据尚不可用,因此查找所有标签和高数据阵列位置以实施MRU通路的定向查找。在第四时钟周期中,来自在第二时钟周期中所实施的访问的指令数据和LRU数据是可用的。由于LRU位是可用的,因此可确定将要开始的指令获取的MRU通路以及用于使用相同LRU数据的后续访问的MRU通路(S卩,在四顺序高速缓存线集合的组中的其他集合)。特别地,对于指定高速缓存线集合(集合3)仅激活数据阵列的MRU低数据通路,并且不激活其他通路。进一步地,仍激活标签阵列的所有通路以确定在集合3的任意通路中是否存在高速缓存命中。通过针对集合3仅访问MRU低数据通路,当存在高速缓存命中时,可降低数据阵列访问的功率消耗而没有性能损失。此外,在第四时钟周期中查找用于接下来四个高速缓存线集合(即,集合4-7)的LRU位,以为定向查找顺序指令获取的MRU通路做准备。在第五时钟周期中,通过在标签阵列中查找用于集合3的所有标签和在数据阵列中仅查找用于集合3的MRU高数据通路来实施下一个指令获取。由于在第四时钟周期中使得LRU位可用,从其可知用于集合3的MRU高数据通路,因此在指令获取期间,实施对MRU高数据通路的定向查找以降低功率消耗。此外,来自在第三时钟周期中所实施的指令获取的指令数据可用于通过进一步沿管线的阶段的传播。在第六时钟周期中,通过在标签阵列中为查找用于集合4的所有标签和在数据阵列中仅查找用于集合4的MRU低数据通路来实施下一个顺序指令获取。由于在第四时钟周期中使得LRU位可用,从其可知用于集合4的MRU低数据通路,因此在指令获取期间,实施对MRU低数据通路的定向查找以降低功率消耗。此外,来自在第四时钟周期中所实施的指令获取的指令数据可用于通过进一步沿管线的阶段的传播。此外,在第六时钟周期中发生到另一个地址的重定向。在第七时钟周期中,在标签阵列中查找用于指定高速缓存线集合(集合8)的所有标签,在数据阵列中查找用于高速缓存线集合(集合8)的所有低数据通路,并且在LRU阵列中查找用于四连续高速缓存线集合(集合8-11)的组的LRU位,其包括当前高速缓存线集合。在第七时钟周期所查找的数据在第九时钟周期可用。指令获取可顺序继续,直到发生由于分支的重定向为止。在图7中所突出显示的在第四、第五和第六时钟周期中所实施的查找是MRU数据通路的定向访问。相对于其中所有数据通路均被访问以从单个数据通路获取指令的指令高速缓存控制策略,由这些访问所消耗的功率降低。由于在指令高速缓存操作期间的指令获取的高重复性质,因此在指令获取期间数据阵列访问的功率消耗在全部指令高速缓存功率消耗中占首要地位。相对于在指令获取期间总是激活指令高速缓存的数据阵列的所有通路的实现方案而言,根据本文所述的功率降低策略来控制指令高速缓存,可降低整个CPU核心的功率消耗。应该理解,本文所述的配置和/或方法事实上是示例性的,并且由于可能存在大量的变化形式,因此这些特定的实施例或示例不应被认为具有限制意义。本文所述的特定的例程或方法可表示任何数目的处理策略中的一个或多个。如此,所示出的各种动作可以以所示的顺序、以其他顺序、并行地或以所省略的一些方式来实施。同样,可改变上述过程的顺序。本公开的主题包括各种过程,系统和配置,和本文所公开的其他的特征、功能、行为和/或属性,以及其任何和所有等同物的所有新颖的和非显而易见的组合和子组合。
权利要求
1.一种指令高速缓存,包括: 最近最少使用位阵列; 标签阵列; 数据阵列;以及 高速缓存控制器,其配置为(I)在所述最近最少使用位阵列中查找用于所述指令高速缓存中的多个高速缓存线集合的每一个的最近最少使用位,其中用于高速缓存线集合的最近最少使用位指示在该高速缓存线集合中的最近最少使用通路,(2)基于用于指定高速缓存线集合的所述最近最少使用位来确定在所述多个高速缓存线集合的所述指定高速缓存线集合中的最近最多使用通路,(3)在所述标签阵列中查找用于所述指定高速缓存线集合中的一个或多个通路的标签,(4)在所述数据阵列中查找存储在所述指定高速缓存线集合中的所述最近最多使用通路中的数据,以及如果在所述最近最多使用通路中存在高速缓存命中,则(5)从所述数据阵列输出存储在所述最近最多使用通路中的所述数据。
2.根据权利要求1所述的指令高速缓存,其中所述高速缓存控制器配置为并行地(I)在所述标签阵列中查找用于所述指定高速缓存线集合中的一个或多个通路的所述标签,以及(2)在所述数据阵列中查找存储在所述最近最多使用通路中的所述数据。
3.根据权利要求1所述的指令高速缓存,其中所述高速缓存控制器配置为在(I)在所述标签阵列中查找用于所述指定高速缓存线集合中的一个或多个通路的所述标签,以及(2)在所述数据阵列中查找存储在所述最近最多使用通路中的所述数据之前,在所述最近最少使用位阵列中查找用于所述多个高速缓存线集合的每一个的最近最少使用位。
4.根据权利 要求1所述的指令高速缓存,其中所述高速缓存控制器配置为(I)激活所述数据阵列的所述指定高速缓存线集合中的所述最近最多使用通路并且(2 )不激活所述数据阵列的所述指定高速缓存线集合中的任何其他通路,来查找存储在所述指定高速缓存线集合中的所述最近最多使用通路中的数据。
5.根据权利要求1所述的指令高速缓存,其中所述高速缓存控制器配置为在所述标签阵列中查找用于所述指定高速缓存线集合中的所有通路的所述标签。
6.根据权利要求5所述的指令高速缓存,其中所述高速缓存控制器配置为(I)如果在所述最近最多使用通路中存在高速缓存未命中,则在所述标签阵列中查找用于所述指定高速缓存线集合中的所有通路的标签,(2)在所述数据阵列中查找存储在所述指定高速缓存线集合中的所有通路中的数据,以及(3)如果在所述指定高速缓存线集合中的任何通路中存在高速缓存命中,则从所述数据阵列输出命中通路中的所述数据。
7.一种用于控制包括最近最少使用位阵列、标签阵列和数据阵列的指令高速缓存的方法,包括: 在所述最近最少使用位阵列中查找用于所述指令高速缓存中的多个高速缓存线集合的每一个的最近最少使用位,其中用于高速缓存线集合的最近最少使用位指示该高速缓存线集合中的最近最少使用通路; 基于用于指定高速缓存线的所述最近最少使用位,确定在所述多个高速缓存线集合的所述指定高速缓存线集合中的最近最多使用通路; 在所述标签阵列中查找用于所述指定高速缓存线集合中的一个或多个通路的标签; 在所述数据阵列中查找存储在所述指定高速缓存线集合中的所述最近最多使用通路中的数据;以及 如果在所述最近最多使用通路中存在高速缓存命中,则从所述数据阵列输出存储在所述最近最多使用通路中的所述数据。
8.根据权利要求7所述的方法,其中并行地实施在所述标签阵列中查找用于所述指定高速缓存线集合中的一个或多个通路的所述标签,以及在所述数据阵列中查找存储在所述最近最多使用通路中的所述数据。
9.根据权利要求7所述的方法,其中在(I)在所述标签阵列中查找用于所述指定高速缓存线集合中的一个或多个通路的所述标签和(2)在所述数据阵列中查找存储在所述最近最多使用通路中的所述数据之前,实施在所述最近最少使用位阵列中查找用于所述多个高速缓存线集合的每一个的最近最少使用位。
10.根据权利要求7所述的方法,其中在所述数据阵列中查找存储在所述指定高速缓存线集合中的所述最近最多使用通路中的数据包括,在所述指定高速缓存线集合中,(I)激活所述数据阵列的所 述最近最多使用通路并且(2)不激活所述数据阵列的任何其他通路。
全文摘要
在一个实施例中,一种用于控制包括最近最少使用位阵列、标签阵列和数据阵列的指令高速缓存的方法,包括在最近最少使用位阵列中查找用于指令高速缓存中的多个高速缓存线集合的每一个的最近最少使用位,基于用于指定高速缓存线的最近最少使用位来确定多个高速缓存线集合的指定高速缓存线集合中的最近最多使用通路,在标签阵列中查找用于指定高速缓存线集合中一个或多个通路的标签,在数据阵列中查找存储在高速缓存线集合中的最近最多使用通路中的数据,以及如果在最近最多使用通路中存在高速缓存命中,则从数据阵列中检索存储在最近最多使用通路中的数据。
文档编号G06F12/08GK103198026SQ201310008129
公开日2013年7月10日 申请日期2013年1月9日 优先权日2012年1月9日
发明者安尼施·阿加沃尔, 罗斯·泽格尔肯, 凯温·科朔雷克 申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1