用于管理高速缓存数据的数字数据处理设备和方法

文档序号:6559707阅读:393来源:国知局
专利名称:用于管理高速缓存数据的数字数据处理设备和方法
技术领域
本发明涉及数字数据处理硬件,并且特别地涉及用于数字数据处理设备的处理单元的高速缓存和支持硬件的设计和操作。
背景技术
在20世纪后半叶,开始了称为信息革命的现象。尽管信息革命是范围比历史上的任何一个事件或机器更广的历史性发展,但没有一个设备比数字电子计算机更能代表信息革命。计算机系统的发展确实是一场革命。每年,计算机系统都变得更快,存储更多的数据,并且向其用户提供更多的应用。
现代计算机系统通常包括中央处理单元(CPU)和存储、检索与传送信息所必需的支持硬件,所述支持硬件例如通信总线和内存。现代计算机系统还包括与外部世界通信所必需的硬件(例如输入/输出控制器或存储控制器)以及附属于其上的设备(例如键盘、显示器、磁带驱动器、磁盘驱动器、连接到网络的通信线路等)。CPU是系统的心脏。其执行指令,指令包括计算机程序并且指示其他系统组件的操作。
从计算机硬件的立场看,大部分系统以基本相同的方式进行操作。处理器能够执行诸如算术、逻辑比较以及数据从一个位置到另一个位置的移动之类的有限的一组非常简单的操作。但是每个操作都执行得非常快。指示计算机执行大量的这种简单操作的程序形成了计算机在进行复杂工作的错觉。通过更快地执行基本上相同的一组非常简单的操作,有可能使得用户感受到计算机系统的新能力或改进的能力。因此,对计算机系统的不断改进需要不断地使这些系统变得更快。
计算机系统的整体速度(又称“吞吐量”)可以用每单位时间执行的操作数来粗略地测量。从概念上讲,对系统速度的所有可能的改进中的最简单改进是提高各个组件的时钟速度,并且特别是处理器的时钟速度。例如,如果每个组件都以两倍的速度运行,而其他方面以完全相同的方式进行操作,则系统将在一半的时间中完成给定的任务。由多个分立组件构成的早期计算机处理器易于通过缩小及合并组件,最终将整个处理器封装为单一芯片上的集成电路来极大地提高时钟速度,并且通过进一步减小尺寸以及其他改进来加快时钟速度仍然是一个目标。除了加快时钟速度,还可以通过增加每个时钟周期执行的平均操作数来增加单独的CPU的吞吐量。
典型的计算机系统可以存储大量数据,并且可以调用处理器来使用该数据的任意部分。通常用作存储海量数据(mass data)的设备(例如旋转磁质硬盘驱动存储单元)需要相对较长的等待时间来访问存储于其上的数据。如果处理器每执行一个操作都要直接从这种大容量存储设备访问数据,则处理器的几乎所有时间都将用于等待存储设备返回数据,并且该处理器的吞吐量将实际上很低。因此,计算机系统将数据存储在内存或者存储设备的层级结构中,每个后续级别具有更快的访问速度、但存储更少的数据。大容量存储单元处于最低级别,其在相对较慢的设备上存储所有的数据。沿层级结构向上是主内存,其通常是半导体内存。主内存具有比存储单元小得多的数据容量,但是具有快很多的访问速度。更高的级别是高速缓存,高速缓存可以在该层级结构的单一级别或多个级别(级别1是最高级别)上。高速缓存也是半导体内存,但是比主内存更快,并且同样具有更小的数据容量。甚至可以将诸如可通过网络访问的数据之类的外部存储数据看作在计算机系统自身的大容量存储单元之下的又一个层级结构级别,原因是有可能从网络连接(例如,因特网)获得的数据量甚至还更大,并且访问时间更慢。
当处理器生成内存引用地址时,其首先在高速缓存中寻找所要的数据(这可能需要在多个高速缓存级别上进行搜索)。如果该数据不在高速缓存中(称为“高速缓存未命中(cache miss)”),则处理器从内存获得该数据,或者如果必要,则从存储器获得该数据。内存访问需要相对较大数量的处理器周期,在此处理器周期期间处理器通常是空闲的。理想地,最靠近处理器的高速缓存级别存储处理器当前所需的数据,因此当处理器生成内存引用时,其不需要等待相对较长的等待时间来完成数据访问。然而,因为任意高速缓存级别的容量只是主内存容量的一小部分,并且主内存容量本身只是大容量存储单元容量的一小部分,因此不可能简单地将所有数据载入高速缓存。必须存在某种技术用于选择将要存储于高速缓存中的数据,以便当处理器需要特定的数据项目时,该数据项目很有可能在那里。
通常将高速缓存划分为称为“线”的数据单元,线是可被独立载入高速缓存或者从高速缓存中移走的最小数据单元。为了支持任意不同的选择性高速缓存技术,高速缓存通常使用高速缓存线的关联集合进行寻址。关联集合是全部共享公共高速缓存索引号的一组高速缓存线。高速缓存索引号通常源自所引用地址的选择位。高速缓存比主内存小得多,关联集合只容纳对应于高速缓存索引号的一小部分主内存地址。
因为高速缓存具有固定大小,所以当将数据放入高速缓存中时,必须选择从该高速缓存移走或“逐出”已在该高速缓存中的一些其他数据。通常,之后会很快再次引用已被选择移走的数据。特别地,在使用关联集合设计高速缓存的情况下,必须选择移走同一关联集合中的另一高速缓存线。如果特定的关联集合包含频繁引用的高速缓存线(称作“热(hot)”关联集合),则很可能会很快再次需要已逐出的高速缓存线。
高速缓存设计的一种方法是使用“牺牲性高速缓存(victimcache)”。牺牲性高速缓存通常是中间级别的高速缓存,其从在高速缓存层级结构中紧接其上的高速缓存接收所有被逐出的高速缓存线。牺牲性高速缓存的设计考虑了很可能会很快再次需要某些已逐出的高速缓存线。频繁使用的高速缓存线通常会被再次引用,并且在从牺牲性高速缓存中逐出该频繁使用的高速缓存线之前将其放入更高级别的高速缓存,而最终将根据某个选择算法将不需要的线从牺牲性高速缓存逐出到更低级别(或者到内存)。
传统的牺牲性高速缓存设计使用牺牲性高速缓存来接收从较高级别高速缓存逐出的所有数据。然而在很多系统环境中,该已逐出数据中的大部分不太可能再次被需要,而相对较小的部分可能代表频繁访问的数据。如果牺牲性高速缓存大到足以容纳大部分的或所有的很可能被再次引用的已逐出线,则其同样必须大到足以容纳大量的不需要的线。如果使得牺牲性高速缓存较小,则在可以再次引用某些需要的线之前将其逐出并将其返回到较高级别的高速缓存。因此,传统的牺牲性高速缓存对于有待存储于高速缓存中的选择性数据来说是一种低效率的技术,并且可能会产生疑问将硬件分配给牺牲性高速缓存是否并不比将其用于增加其他高速缓存的大小来得更好。
尽管用于设计高速缓存层级结构和选择高速缓存内容的传统技术已经获得了有限的成功,然而可以看出在很多环境中,处理器花费了其大量的时间空闲在高速缓存未命中上。增加高速缓存的大小会有所帮助,但是需要在不大量增加高速缓存大小的情况下减少平均访问时间的用于高速缓存的设计和操作的改进技术。

发明内容
计算机系统包括主内存、至少一个处理器和具有至少两个级别的高速缓存。较低级别的选择牺牲性高速缓存接收从较高级别高速缓存逐出的高速缓存线。选择机制选择已从较高级别高速缓存逐出的线以在较低级别的选择牺牲性高速缓存中进行存储,只将已逐出的线中的一些线选为在牺牲性高速缓存中进行存储。
在优选的实施例中,每根高速缓存线与两个优先级位相关联。当第一次将高速缓存线从内存放入较高级别高速缓存时,将这些位复位(reset)。如果高速缓存线在处于较高级别高速缓存中时被再次引用,则将第一位置位(set)。如果高速缓存线在从较高级别高速缓存中逐出之后并且在逐出到内存之前被再次引用,则将第二位置位。第二位代表高优先级,第一位代表中等优先级,并且如果没有将任何位置位,则代表低优先级。当从较高级别高速缓存中逐出线时,该线进入用于选择牺牲性高速缓存的相对较小的队列。较高优先级的高速缓存线使得较低优先级的线被丢弃出队列,而优先级不高于队列中的任意高速缓存线的高速缓存线使得该队列前进,将一个单元放置在选择牺牲性高速缓存中。优选地,使用“最近最少使用(LRU)”技术从选择牺牲性高速缓存中逐出高速缓存线。
在优选的实施例中,访问较高级别高速缓存和访问选择牺牲性高速缓存都使用地址中的选择位来获得关联集合的索引,并且检查该编有索引的关联集合中的多个高速缓存线。优选地,较高级别高速缓存中的关联集合的数目大于选择牺牲性高速缓存中的数目。在可选的实施例中,使用地址位的哈希函数来访问选择牺牲性高速缓存的关联集合,所述地址位的哈希函数在牺牲性高速缓存中的多个关联集合之间对较高级别高速缓存中的每个关联集合的内容进行分配,以便分担较高级别高速缓存中的任意“热”集合的负担。
尽管此处使用了术语“较高级别高速缓存”和“较低级别高速缓存”,但这些术语仅仅旨在表示一种相对的高速缓存级别关系,并非旨在暗示系统只包含两个高速缓存级别。正如此处所用,“较高级别”指相对地更靠近处理器核心的级别。在优选的实施例中,在“较高级别高速缓存”之上存在至少一个高速缓存级别,并且在“较低级别”或选择牺牲性高速缓存之下存在至少一个高速缓存级别,这些级别根据任意不同的传统原则进行操作。
通过根据优选的实施例从牺牲性高速缓存中选择性地排除高速缓存线,可以更有效地使用可用高速缓存空间。在所有情况下,具有高优先级的高速缓存线(即,高速缓存线在逐出之后曾经被再次引用过)都将进入牺牲性高速缓存。然而,低优先级并不一定会进入牺牲性高速缓存,并且允许低优先级线进入牺牲性高速缓存的程度随着低优先级高速缓存线与高优先级高速缓存线的比例而变化。


参考附图可以最佳地理解本发明在结构和操作方面的细节,在附图中相同的参考标号表示相同的部件,并且在附图中图1是根据本发明优选实施例的用于利用选择牺牲性高速缓存的计算机系统的主要硬件组件的高级框图;图2更具体地表示了根据优选实施例的用于对数据进行存储和寻址的各种高速缓存和相关联的结构的层级结构;图3是表示根据优选实施例的包括相关联的访问机制的高速缓存的通用结构的框图;图4是更详细地表示根据优选实施例的牺牲性高速缓存队列和相关联的控制逻辑的框图;图5是根据优选实施例的牺牲性高速缓存队列的操作的说明性例子。
具体实施例方式
参考附图,其中贯穿几个视图,相同数字表示相同部件,图1是根据本发明优选实施例的用于利用选择牺牲性高速缓存的计算机系统100的主要硬件组件的高级别表示。计算机系统100的主要组件包括一个或多个中央处理单元(CPU)101A-101D、主内存102、高速缓存106、终端接口111、存储接口112、I/O设备接口113和通信/网络接口114,所有组件相连接以便通过总线103、104和总线接口105在组件间相互进行通信。
系统100包含一个或多个通用可编程中央处理单元(CPU)101A-101D,此处统称为特征101。在优选的实施例中,系统100包含相对较大的系统所特有的多个处理器;然而,作为替代,系统100可以是单CPU系统。每个处理器101执行存储在内存102中的指令。将指令和其他数据从主内存102载入高速缓存106以便进行处理。主内存102是用于存储数据(包括程序)的随机存取半导体内存。尽管在图1中从原理上将主内存102和高速缓存106表示为单一实体,然而应该理解实际上这些实体是更为复杂的,并且特别地,如此处更详细地表示的一样,高速缓存存在于多个不同级别上。
总线103-105在各个系统组件之间提供通信路径。存储总线103提供数据通信路径,以便在CPU 101和高速缓存106、主内存102和I/O总线接口单元105之间传送数据。I/O总线接口105还连接到系统I/O总线104,以便向各种I/O单元传送数据或者从各种I/O单元传送数据。I/O总线接口105通过系统I/O总线104与多个I/O接口单元111-114进行通信,所述I/O接口单元也称为I/O处理器(IOP)或I/O适配器(IOA)。系统I/O总线可以是例如行业标准PCI总线,或者任意其他适当的总线技术。
I/O接口单元111-114支持与多种存储器和I/O设备的通信。例如,终端接口111支持附加一个或多个用户终端121-124。存储器接口单元112支持附加一个或多个直接存取存储设备(DASD)125-127(其典型地是旋转的磁盘驱动存储设备,尽管作为替代其可以是其他设备,包括配置为对于主机来说表现为单一的大存储设备的磁盘驱动阵列)。I/O和其他设备接口113提供到任何不同的其它输入/输出设备或者到其他类型的设备的接口。在图1的示例性实施例中示出了两个这类设备,即打印机128和传真机129,应该理解还可以存在多种其他的这类设备,这些设备可以是不同的类型。网络接口114提供从系统100到其他数字设备和计算机系统的一个或多个通信路径,这些路径可以包括例如诸如因特网、局域网或其他网络之类的一个或多个网络130,或者可以包括远程设备通信线路、无线连接等。
应该理解图1旨在在较高级别上描述系统100的代表性的主要组件;各个组件可以比图1中表示的组件更复杂;可以存在与图1中示出的组件不同的组件或者可以存在除图1示出的组件之外的其他组件;并且这些组件的数目、类型和配置是可变的。还应该理解,并非图1中示出的所有组件都可能出现在一个特定的计算机系统中。此处公开了这种附加复杂度或附加变形的几个特定例子,应该理解这些例子仅作为示例,并非只有这些变形。
尽管主内存102在图1中示为单一的单片实体,但内存还可以是分布式的并且与不同CPU或者CPU的集合相关联,正如在任意不同的所谓“非一致存储访问(NUMA)”计算机体系结构中所知的那样。尽管存储总线103在图1中示为在高速缓存106、主内存102和I/O总线接口105之间提供直接通信路径的相对简单的单一总线结构,但实际上存储总线103可以包括多个不同的总线或通信路径,其可以以各种不同的形式来排列,这些形式例如层级结构的点到点链路,星型配置或网状配置,多级总线,平行且冗余的路径等。而且,尽管将I/O总线接口105和I/O总线104表示为单一的相应单元,但系统100实际上可以包含多个I/O总线接口单元105和/或多个I/O总线104。尽管将多个I/O接口单元示出为将系统I/O总线104与通往不同I/O设备的各种通信路径相隔离,但作为替代,多个I/O接口单元可以将某些或者所有的I/O设备直接连接到一个或多个系统I/O总线。
图1描述的计算机系统100具有多个附属终端121-124,例如其可能是多用户“大型机(mainframe)”计算机系统的典型情况。通常,在这种情况下,附属设备的实际数目大于图1中示出的附属设备的数目,尽管本发明并不局限于任意特定大小的系统。作为替代,计算机系统100可以是单用户系统,通常只包括单一用户显示和键盘输入;或者可以是服务器或者类似设备,其具有很少的直接用户接口或者没有直接用户接口,但是从其他计算机系统(客户端)接收请求。
尽管已经在较高级别上描述和示出了各种系统组件,但应该理解典型的计算机系统包含对理解本发明来说并非必要的多个未示出的其他组件。
图2更详细地表示了根据优选实施例的各种高速缓存和用于从内存访问数据的相关联的数据路径的层级结构。在该实施例中,在主内存102之外,还存在高速缓存层级结构。高速缓存存在于表示为级别1(最高级)、级别2、级别3上,并且牺牲性高速缓存位于级别2和级别3之间的的级别(有时表示为级别2.5)上。每个处理器101与不和任何其他处理器共享的一对相应的级别1高速缓存相关联。这对高速缓存中的一个高速缓存是级别1的指令高速缓存(L1I-高速缓存)201A、201B(此处一般地称为特征201),而这对高速缓存中的另一个高速缓存是级别1的数据高速缓存(L1 D-高速缓存)202A、202B(此处一般地称为特征202)。每个处理器还与相应的级别2高速缓存203、选择牺牲性高速缓存205和级别3高速缓存206相关联;与L1高速缓存不同,在优选的实施例中,在多个处理器之间共享每个L2高速缓存和每个L3高速缓存,尽管作为替代,可以将这类高速缓存中的一个或多个高速缓存专用于单一的相应处理器。出于说明的目的,图2示出的两个处理器101A、101B共享L2高速缓存204、牺牲性高速缓存205和L3高速缓存206,但是在系统100的各个级别上的处理器和高速缓存的数目可以变化,并且在每个不同级别上共享高速缓存的处理器的数目也可以变化。共享每个L2高速缓存、牺牲性高速缓存或者L3高速缓存的处理器的数目可以是相同的,也可以是不同的。优选地,在L2高速缓存与牺牲性高速缓存之间存在一对一的对应关系,尽管并非必须如此。在L2高速缓存与L3高速缓存之间可能存在一对一的对应关系,或者多个L2高速缓存可以与同一个L3高速缓存相关联。
在越高级别上(越靠近处理器),高速缓存通常变得越快,并且逐渐存储较少的数据。在此处描述的示例性实施例中,即较大的计算机系统的典型情况中,L2高速缓存203具有128字节的高速缓存线大小以及2M字节的总存储容量。L3高速缓存具有128字节的高速缓存线大小以及32M字节的总存储容量。L2高速缓存和L3高速缓存都是8路关联(即,每个关联集合包括8根数据高速缓存线,或1K字节),L2高速缓存分成2048(2K)个关联集合,并且L3高速缓存分成32K个关联集合。L1高速缓存比较小。牺牲性高速缓存优选地具有64K字节的大小,并且是4路关联(即,每个关联集合包括4根数据高速缓存线,或512K字节的数据)。因此,牺牲性高速缓存分成128个关联集合。然而,应该理解这些参数仅仅代表使用当前技术的大型系统的典型高速缓存。这些典型参数会随着技术发展而改变。较小的计算机系统通常将具有相应较小的高速缓存,并且可能具有较少的高速缓存级别。本发明并不局限于任何特定的高速缓存大小、高速缓存线大小、高速缓存级别的数目、在特定级别上的高速缓存是被多个处理器共享还是专用于单一处理器、或者类似的设计参数。
如图2中示出的,存在加载路径211,其用于将数据从主内存102载入各个高速缓存,或者用于将数据从较低级别高速缓存载入较高级别高速缓存。图2从原理上将该加载路径表示为单一实体,尽管实际上其可以实现为多个总线或者类似的数据路径。众所周知,当处理器101需要访问内存地址时,针对所需要的数据搜索高速缓存。如果该数据不在L1高速缓存中,则从可以从中找到该数据的最高可用高速缓存加载该数据,或者如果该数据不在高速缓存中,则从主内存加载该数据。(如果数据不在主内存中,则通常从存储器加载该数据,但是从存储器进行加载所耗费的时间很长,使得通常会将正在执行的进程交换出处理器。)在一些体系结构中,还可以在处理器实际访问特定数据之前,推测性地将该特定数据载入高速缓存,例如载入L3高速缓存。在优选的实施例中,还将载入较高级别高速缓存的数据载入处于该级别之下的除牺牲性高速缓存205之外的其他高速缓存级别上,从而较低级别高速缓存(除牺牲性高速缓存之外)包含较高级别高速缓存中的数据的副本。当从较高级别高速缓存逐出数据时,除非该数据已发生了改变,否则不需要将该数据复制回较低级别高速缓存(除了在将在下面说明的从L2逐出到牺牲性高速缓存的情况中)。
高速缓存205充当牺牲性高速缓存,即意味着其接收从L2高速缓存203逐出的数据。因此高速缓存205不包含任意较高级别高速缓存中的数据的副本。当将数据放入L2高速缓存和/或L1高速缓存时,该数据绕过了牺牲性高速缓存205。当从L2高速缓存逐出数据时,将该数据临时放置在牺牲性高速缓存队列204中(无论该数据在L2中是否被修改过),并且如路径212所表示的那样,可以最终将该数据从牺牲性高速缓存队列204写到牺牲性高速缓存205。从L2高速缓存203经牺牲性高速缓存队列204的路径是数据进入牺牲性高速缓存205的唯一路径。牺牲性高速缓存队列204充当用于选择性地将数据写到牺牲性高速缓存205的选择装置,下面将对其进行进一步解释。即,并非将从L2高速缓存203逐出的所有数据都放进牺牲性高速缓存205;作为替代,从L2高速缓存逐出的数据将经历选择过程,从而拒绝将某些被逐出的数据包括进牺牲性高速缓存。如果被拒绝的数据在较高级别高速缓存中时发生过改变,则如旁路路径213所表示的那样直接将该数据写回到L3高速缓存206;如果该被拒绝的数据没有发生过改变,则可以仅仅从队列204中删除该数据,原因是该数据的副本已经存在于L3高速缓存中。
图2旨在描述各个高速缓存之间的特定的功能关系,并且单独示出特定组件的事实并非旨在表示组件是如何被封装的。现代集成电路技术已经发展到这样的程度,即通常将至少某个高速缓存封装在与处理器(有时还称作处理器核心)相同的集成电路芯片上,并且甚至可以将多个处理器核心放置在单一芯片上。在优选的实施例中,将CUP101A和101B,以及L1高速缓存201A、201B、202A、202B,L2高速缓存203、牺牲性高速缓存队列204和牺牲性高速缓存205封装在单一集成电路芯片上,如虚线中的特征210所示,同时将L3高速缓存206封装在单独的集成电路芯片或多个集成电路芯片上,所述芯片与相应的处理器芯片安装在公共的印刷电路板上。然而,该布置只是一种可能的封装布置,并且随着集成电路和其他电子封装技术的发展,可以想象到该布置将会实现进一步的集成。
如本领域中已知的那样,通过以下方式来访问高速缓存从选择地址位(或者在某些情况下,从诸如线程标识位之类的附加位)解码出关联集合的标识,并且将关联集合中的高速缓存线的地址与期望的数据地址进行比较。例如,在高速缓存中存在2K个关联集合的情况下,从2K个关联集合中指定一个特定的关联集合需要11位。理想地,确定这11位使得每个关联集合具有相等的被访问概率。在优选的实施例中,使用实地址对L2高速缓存203、牺牲性高速缓存205和L3高速缓存206进行寻址,并且因此由地址转换硬件(未示出)将处理器生成的虚地址或有效地址首先转换成实地址,以便访问高速缓存中的数据。地址转换硬件可以包括本领域中已知的各种转换机制中的任意转换机制(诸如转换后备缓冲器(translation look-asidebuffer)或类似机制),以及相关联的访问和转换硬件。作为替代,如在某些计算机系统设计中已知的那样,可以在不转换的情况下,使用虚地址或有效地址来访问高速缓存级别中的某些级别或者所有级别。
图3表示了根据优选实施例的包括相关联的访问机制的高速缓存的通用结构。图3可以代表L2高速缓存203、牺牲性高速缓存205或L3高速缓存206中的任意一个。L1高速缓存通常是相似的。参考图3,高速缓存包括高速缓存数据表301和高速缓存索引302。数据表301包含已分组为关联集合304的多个数据高速缓存线303。在优选的实施例中,每个高速缓存线303包含128字节,并且每个关联集合304包含8根高速缓存线(在L2高速缓存203或L3高速缓存206中)或者4根线(在牺牲性高速缓存205中)。索引302包含索引记录306的多行305,每行305对应于一个关联集合304,并且根据具体情况包含8个(L2或L3高速缓存)或4个(牺牲性高速缓存)索引条目。每个索引条目306至少包含相应的高速缓存线303的实地址311的一部分、某些控制位312和一对优先级位313。如技术领域中已知的那样,控制位312可以包括但并非必须局限于脏位(dirty bit);诸如“最近最少使用(LRU)”位之类的用于在必须的情况下选择将要逐出的高速缓存线的一个或多个位;用作信号标志(semaphore)的一个或多个位;用于维护高速缓存一致性的锁定机制或类似机制等。在优选的实施例中,根据各种传统的“最近最少使用(LRU)”技术中的任意一种技术来选择要从高速缓存中逐出的高速缓存线,尽管作为替换可以使用任意现在已知的或今后开发的逐出选择方法。
使用选择器逻辑307,选择索引304的一行305来引用高速缓存线,所述索引304的行305对应于期望数据的实地址320的一部分的某个函数。在优选的实施例中,该函数是对紧接着最低7位(这最低的7位对应于高速缓存线的大小128,或27)之上的位位置上的N位实地址的直接解码,其中N取决于高速缓存中的关联集合的数目,并且大到足以选择任意关联集合。通常,这意味着N是关联集合的数目以2为基的对数。即,对于具有2048个关联集合的L2高速缓存203,N是11;对于具有32K个关联集合的L3高速缓存206,N是15;并且对于具有128个关联集合的牺牲性高速缓存,N是7。然而,作为替代,可以使用更复杂的哈希函数,并且特别地,可以对L2使用直接解码,同时对牺牲性高速缓存使用更复杂的哈希函数。实地址包含超过(N+7)位,因此多个实地址映射到同一关联集合。
因此,对于L2高速缓存203,将实地址的第7-17位(其中第0位是最低阶位)输入选择器逻辑307;对于L3高速缓存206,将实地址的第7-21位输入选择器逻辑;以及对于牺牲性高速缓存205,将实地址的第7-13位输入选择器逻辑。接着,由比较器逻辑309将在所选行305的每个相应的索引条目306中的实地址311与所引用数据的实地址320进行比较。实际上,只需要比较实地址的高阶位部分(即,在最低阶的(N+7)位之上的位),原因是最低的7位对于确定高速缓存线不是必须的,并且接下来的N位利用行选择自然地进行了比较。如果存在匹配,则比较器逻辑309输出一个选择信号,该选择信号对应于8个索引条目或4个索引条目中匹配的一个索引条目。选择器逻辑308使用选择器307所用的同一实地址来选择高速缓存线303的一个关联集合304,并且比较器309的输出在所选关联集合中选择8根或4根高速缓存线303中的单根高速缓存线。
尽管在图3中将选择器307和308示出为独立的实体,但应该观察到它们执行相同的功能。根据芯片设计,这些实体实际上可以是单一的选择器,所述单一选择器的输出同时选择索引302中的行305和高速缓存数据表301中的关联集合304。
在操作中,如果可能,从L1可以满足内存引用。在L1高速缓存未命中的情况下,使用选择性实地址位同时访问L2和牺牲性高速缓存索引(并且可能还有L3),以便确定所需的数据是否在任一高速缓存中。如果该数据在L2中,则通常将该数据从L2载入L1高速缓存,但在L2中保持该数据不变。(因为L2高速缓存可以被共享,所以可能存在这种情况其中该数据处于另一个处理器的L1高速缓存中,并且暂时不可用。)如果该数据在牺牲性高速缓存205中(即,其不在L2中),则并行地将该数据从牺牲性高速缓存载入L2和L1中,并且在牺牲性高速缓存中使该高速缓存线无效。在这种情况下,使用各种传统的选择技术中的任意一种技术从L2中选择要逐出的一根高速缓存线,所述传统的选择技术例如“最近最少使用”。如果被逐出的线是有效的,则将其放置在牺牲性高速缓存队列204中。为了在牺牲性高速缓存队列中腾出空间,则如此处将进一步解释的,该队列可以使线(不是必须与被无效的线位于相同的关联集合中)进入到牺牲性高速缓存中,或者可以删除线。如果线进入到牺牲性高速缓存中,则必须选择将牺牲性高速缓存中的另一个高速缓存线逐出到L3(同样使用“最近最少使用”或者任意其他的合适技术)。为了在L1高速缓存中腾出空间,将选择要逐出的一根现有高速缓存线;但因为在L2中复制了L1高速缓存条目,该逐出的线必然已经在L2中,因此不需要为该线腾出空间。
如果该数据既不在L2中也不在牺牲性高速缓存中,则从L3或主内存将该数据取到L2和L1中。在这种情况下,使用任意传统技术来选择要从L2逐出的高速缓存线。如果该逐出的线是有效的,则将其放置在牺牲性高速缓存队列中。牺牲性高速缓存队列可以使现有的高速缓存线进入到牺牲性高速缓存中,或者可以删除现有的高速缓存线;如果一个高速缓存线进入到牺牲性高速缓存中,则必须选择将牺牲性高速缓存中的另一个高速缓存线逐出到L3(同样使用任意一种传统技术)。
使用优先级位313为进入牺牲性高速缓存205建立优先级。在优选的实施例中,每个优先级位对(priority bit pair)包括一个重载位和一个重复引用位。当将高速缓存线从内存102载入任意级别的高速缓存时,将这两个位初始地设置为零。如果该高速缓存线在处于L2高速缓存203中时被重复引用(即,不止一次被引用),则重复引用位被设置为1,并且在该高速缓存线处于高速缓存中的时间期间保持设置为1(即,直到该高速缓存线被逐出所有的高速缓存,并且只驻留在内存中)。重复引用位逻辑310检测对现有高速缓存线的引用作为来自比较器309的线中的任意一根线上的正信号的输出,并且导致在相应的索引条目306中的重复引用位被置位。重复引用位逻辑310只出现在L1高速缓存201、202和L2高速缓存203中;在牺牲性高速缓存或L3高速缓存中不需要重复引用位逻辑310。重载位用于表明该高速缓存线是否已被逐出L2高速缓存,并且随后作为对该高速缓存线的另一次引用的结果又重新载入L2高速缓存。因为只有牺牲性高速缓存队列204使用重载位,因此在优选的实施例中,当从任意较低级别高速缓存加载到L2时对重载位置位,即这可以通过简单地将来自牺牲性高速缓存和L3高速缓存的适当的输出信号线设置为高来实现。出于同样的原因,也将从牺牲性高速缓存队列到L2的输出信号线设置为高。此处进一步描述使用这些优先级位来选择进入牺牲性高速缓存的高速缓存线。
根据本发明的优选实施例,牺牲性高速缓存205用作选择牺牲性高速缓存,其中将从L2高速缓存203逐出的高速缓存线中的一部分放置到牺牲性高速缓存中。牺牲性高速缓存队列204是选择要包含到牺牲性高速缓存中的高速缓存线的机制。图4根据优选实施例更详细地说明了牺牲性高速缓存队列以及相关联的控制逻辑。
牺牲性高速缓存队列204包括一组有序的队列位置(queue slot)401,每个位置包含一个高速缓存线的完整内容以及与该高速缓存线关联的数据,所述高速缓存线是从L2高速缓存203逐出的。即,每个位置包含来自高速缓存线索引条目306的实地址311的一部分、来自高速缓存线索引条目的控制位312、来自高速缓存线索引条目的优先级位313以及来自高速缓存线303的128个字节的数据。在优选的实施例中,队列204包含8个队列位置401,应该理解这个数字可以变化。
用于进入牺牲性高速缓存的优先级与每个高速缓存线相关联。该优先级源自优先级位对313。重载位代表高优先级(表示为优先级3),并且如果重载位被置位,则高速缓存线具有该优先级(在这种情况中,重复引用位的状态是不相关的)。重复引用位代表中等优先级(表示为优先级2),并且如果重复引用位被置位而重载位没有被置位,则高速缓存线具有优先级2。如果没有任何一个位被置位,则高速缓存线具有低优先级(表示为优先级1)。
当从L2高速缓存203逐出有效高速缓存线时(该被逐出的线由图4中的特征402示出),由优先级逻辑403比较来自逐出的线的优先级位与来自队列位置401的优先级位,以便确定适当的动作。在优选的实施例中,优先级逻辑403根据下述规则操作该队列(A)如果逐出的线402的优先级高于高速缓存位置401中的各线的优先级中的至少一个优先级,则从队列位置中的一组线中选择一个具有最低优先级的线,以便从该队列中删除该线,所选择的线是该集合中在该队列里存在得最久的一根线(即,占用由该集合占用的线中的最后一根线)。在这种情况下,激活从优先级逻辑403到“与(AND)”门409的已删除线输出;将该输出与已删除高速缓存线的已修改位进行逻辑“与”,以便生成L3_Enable(L3激活)信号,使得该已删除高速缓存线被写到L3 206。如果已删除高速缓存线的已修改位没有置位,则仍然从队列204中删除该线,但是不需要将其写回到L3高速缓存。接着,使用乘法器404将逐出的线402放置在队列中紧接于由具有相同优先级或更高优先级的线占用的第一位置之前的队列位置上,并且根据需要通过移位逻辑405在队列中向后移动具有较低优先级的线。
(B)如果逐出的线402的优先级不高于高速缓存位置401中的各线的优先级中的至少一个优先级,则使用乘法器404将逐出的线放置在第一队列位置中,移位逻辑405使得队列中的所有其他线向前移动一个位置,并且由选择器逻辑406选择在最后的队列位置中的线,以便将其放置在牺牲性高速缓存中。(这意味着根据适当的算法选择要从牺牲性高速缓存逐出的一根线。)在这种情况下,激活来自优先级逻辑403的输出V Enable(V激活),使得将选择器406的输出写到牺牲性高速缓存。
因为牺牲性高速缓存队列204容纳已从L2高速缓存逐出但还没进入牺牲性高速缓存的高速缓存线,所以在该队列中的高速缓存线将不会包含在L2高速缓存或牺牲性高速缓存中(尽管在较慢的L3高速缓存中将找到这些高速缓存线)。优选地,牺牲性高速缓存队列还包括用于搜索队列的逻辑,以便确定在该队列中是否包含由处理器生成的数据引用,并且相应地作出反应。如图4所示,该队列包含一组8个比较器407(图中示出了其中的3个),每个比较器分别对应于8个队列位置401中的一个位置。每个比较器并行地比较来自相应的队列位置的实地址部分与数据引用的实地址的相应部分。如果任意一对地址部分进行比较,则激活相应的比较器407的输出信号,使得选择器逻辑406选择相应的位置以便输出,并且激活从“或(OR)”门408输出的队列命中(Queue Hit)线。队列命中线的激活使得将选择器406的输出载入L2高速缓存(以及较高级别的适当高速缓存)以便满足数据引用。在这种情况下,从L2高速缓存中逐出另一根线以为该队列中的线腾出空间。如果已逐出的线是有效的,则使用上述优先级为该逐出的线确定适当的队列位置401,根据需要在队列中移动数据。在这种情况下,自动选择从该队列删除该队列中与数据引用匹配并已载入L2高速缓存的那个高速缓存线,并且没有任何线从该队列前进到牺牲性高速缓存。在少数情况下,队列中的被命中的高速缓存线会代替L2中的无效高速缓存线。在这些情况下,不会将被替换的线放置在队列上,从而在该队列中留下一个“洞”。将该“洞”简单地当作超低优先级的条目,其被从L2逐出的下一根高速缓存线替代。
图5是根据优选实施例的关于牺牲性高速缓存队列的这些规则的操作的说明性例子。如图4中所示,行501中示出了队列的初始状态。队列初始时包含分别占用队列位置1到8、表示为A到H的8根高速缓存线,其中线A到线E具有优先级1(低),线F具有优先级2(中等),并且线G和H具有优先级3(高)。每个队列线的优先级在其字母表示之后。
从初始状态,假设从L2高速缓存203逐出具有优先级1的高速缓存线I(表示为“I1”)。因为在队列中没有线具有比线I更低的优先级,所以可以应用上面的规则(B)。因此将队列中的所有的高速缓存线向右(前)移动,将高速缓存线H3放进牺牲性高速缓存,并且将高速缓存线I1放进高速缓存位置1。行502示出了队列的结果状态。
此时,从L2高速缓存逐出具有优先级2的高速缓存线J(J2)。因为在队列中至少一个高速缓存线具有比J2更低的优先级(即,线I1、A1、B1、C1、D1和E1都具有比J2更低的优先级),所以可以应用上面的规则(A)。优先级逻辑403从具有优先级1的一组线中选择在队列中存在得最久的那根线(即,高速缓存线E1),以便从队列中删除。将J2放置在队列中紧接在具有相同优先级的最近的队列条目之前,即紧接在高速缓存线F2之前。将已删除的高速缓存线E1发送给L3高速缓存,以便可以写进L3;因为L3已经包含该高速缓存线的副本,所以通常不需要将该删除的线写到L3,除非该删除的线已经改变。行503示出了队列的结果状态。
接着,连续从L2逐出均都具有优先级1的高速缓存线K和L。在两种情况下,都可以应用上面的规则(B),并且将所有的高速缓存线向右移动。当从L2逐出高速缓存线K1时,将高速缓存线G3放进牺牲性高速缓存;当从L2逐出高速缓存线L1时,将高速缓存线F2放进牺牲性高速缓存。行504和行505分别示出了放置高速缓存线K1和L1之后队列的结果状态。
接着,从L2逐出具有优先级3的高速缓存线M。因为在队列中至少一个高速缓存线具有比M3更低的优先级,所以可以应用规则(A)。优先级逻辑将线D1选择为从队列中删除。注意,所选择的线来自具有最低优先级(即,优先级1)的线的集合,不是来自具有比M3更低的优先级的线的集合。选择D1导致要在队列中向后移动高速缓存线J2,并且将高速缓存线M3放置在线J2的前面,从而始终保持了队列中的优先级。行506示出了放置线M3之后队列的结果状态。
接着,从L2逐出具有优先级1的高速缓存线N(可以应用规则(B)),使得在队列中向右移动所有的高速缓存线,并且将高速缓存线M3放进牺牲性高速缓存。行507示出了放置线N1之后队列的结果状态。
此时,处理器生成针对高速缓存线B1中的地址的内存引用。因为已经从L2逐出了线B1,并且还没有将线B1放进牺牲性高速缓存,因此L2和牺牲信号都未命中。比较器407检测在队列中是否存在高速缓存线B1,并且用信号将此通知给较高级别的系统逻辑。从队列传输线B1以将其放进L2中,并且从L2逐出高速缓存线O(具有优先级1)以为线B1腾出空间。注意,在传送线B1到L2之后,将B1的优先级改成3(通过设置重载位)。将高速缓存线O1放置为紧接在具有相同优先级的最近的线之前,即紧接在线N1之前。为了完成该放置,向右移动线N1、L1、K1、I1和A1以占用线B1空出来的队列位置。行508示出了队列的结果状态。
此时,从L2逐出具有优先级2的高速缓存线P。可以应用规则(A)。选择从高速缓存删除高速缓存线C1,并且将线P2放进高速缓存中紧接在线J2(具有相同的优先级)之前。行509示出了队列的结果状态。
可以观察到,在优选的实施例中,总是将从L2203逐出的具有高优先级的高速缓存线放进牺牲性高速缓存205,而可以将具有较低优先级的线放进牺牲性高速缓存或者不将其放进牺牲性高速缓存。特别地,将较低优先级的线放进牺牲性高速缓存的几率取决于处在较高优先级上的线的比例。随着从L2逐出的具有较高优先级的线的比例变大,将更小比例的较低优先级的线放进牺牲性高速缓存中。从L2逐出的高优先级的线的大比例是L2正在过载的指示。因此,希望在将线放进牺牲性高速缓存(其可能不具有足够的空间处理所有的应该保留的线)方面有更多的选择。在这种环境下,极大地倾向将高优先级的线放进牺牲性高速缓存是合理的。另一方面,在逐出的线中的大部分处于低优先级的情况下,L2很有可能大得足以容纳高速缓存线的工作集合,并且牺牲性高速缓存不需要这么具有选择性。
在上述的优选实施例中,使用紧接在最低7位(对应于128字节的高速缓存线大小)之上的N个地址位来确定每个高速缓存的关联集合。访问高速缓存索引和高速缓存数据表的这种形式具有相对简单的优点。然而,应该看到,位7-17足以确定L2高速缓存中的关联集合,并且这些位的子集(即位7-13)足以确定牺牲性高速缓存中的关联集合。因此L2高速缓存中的每个关联集合的全部内容映射到牺牲性高速缓存中的单一的相应关联集合。如果在L2高速缓存中存在“热”关联集合,则从该L2高速缓存中逐出的所有线都将映射到牺牲性高速缓存中的同一个关联集合,很有可能使得该集合也是“热”的。因此,作为替代性的实施例,可以使用更加复杂的哈希函数对牺牲性高速缓存进行索引,其中L2高速缓存中的任意单一关联集合映射到牺牲性高速缓存中的多个关联集合,并且L2高速缓存中的多个关联集合将其内容中的至少部分内容映射到牺牲性高速缓存中的单一关联集合。在2003年12月9日提交的序列号为10/731,065的共同转让的美国专利申请“在不同高速缓存级别中具有关联集合的重叠一致组的多级高速缓存(Multi-Level Cache Having OverlappingCongruence Groups of Associativity Sets in Different Cache Levels)”中描述了这种映射的例子,在此通过引用的方式包含该申请的内容。
在上述优选实施例中,仅根据已逐出线的表示重载和重复引用的两个优先级位来确定牺牲性高速缓存队列中的优先级。然而,作为替代,优先级可以基于其他因素。在一个替代性的实施例中,可以将优先级简化为记录在单一的位中的两个级别,该单一的位是重载位、重复引用位或者由重载或重复引用表示的关联位。在第二个替代性实施例中,逐出的线的优先级可以至少部分地基于在L2高速缓存的同一关联集合中的其他高速缓存线的平均优先级。即,如果在L2高速缓存的特定关联集合中大多数或者所有的线具有高优先级,则该关联集合很有可能是“热”集合。如果所有其他因素都相同,应该优先考虑从“热”集合中逐出的高速缓存线,然后再考虑从非“热”集合中逐出的高速缓存线。可以将一个或多个额外的位添加到牺牲性高速缓存队列的每个条目中,以便记录从中逐出该条目的关联集合中的线的平均优先级。这些位可以定义额外的优先级级别或者用于具有更高优先级的替代性基础。在第三个替代性实施例中,在确定是否将特定高速缓存线选择为进入牺牲性高速缓存中时,可以考虑已在特定高速缓存线映射到的关联集合中的牺牲性高速缓存中的高速缓存线的优先级。即,如果牺牲性高速缓存中的同一关联集合中的所有线具有低优先级,则始终选择具有低优先级的线,但是随着具有低优先级的线的比例减小,则可能希望选择更少的具有低优先级的线。尽管此处描述了替代性优先级技术的几个特定例子,但应该理解可以使用其他的优先级,并且此处描述的优先级技术仅仅旨在用作说明而非限制。
在优选的实施例中,牺牲性高速缓存队列用作将高速缓存线选择为存储在牺牲性高速缓存中的主要机制。如前所述,队列的一个优点是其可以根据具有较低优先级的线与具有较高优先级的线的比例来灵活地调整存储低优先级高速缓存线的比例。然而,应该意识到,用于牺牲性高速缓存的选择机制并非必须是队列,并且可以采取任意不同的其他形式。例如,作为替代,可以根据逐出的线的优先级以及/或者其他因素,紧接在高速缓存线从较高级别高速缓存被逐出之后进行选择确定。
尽管已经公开了本发明的特定实施例以及某些替代性方案,但应该认识到,在下述权利要求的范围内,本领域的普通技术人员可以在形式和细节上得到另外的变型。
权利要求
1.一种数字数据处理设备,包括至少一个处理器;内存;第一高速缓存,其用于临时存储供所述至少一个处理器使用的所述内存的一部分;第二高速缓存,其用于临时存储供所述至少一个处理器使用的所述内存的一部分,所述第二高速缓存处于比所述第一高速缓存更低的级别上,其中数据仅在被从所述第一高速缓存逐出之后才存储在所述第二高速缓存中;以及选择机制,其用于选择从所述第一高速缓存逐出的数据以存储在所述第二高速缓存中,所述选择机制选择的在所述第二高速缓存中进行存储的数据少于从所述第一高速缓存逐出的全部有效数据。
2.根据权利要求1所述的数字数据处理设备,还包括第三高速缓存,所述第三高速缓存处于比所述第一高速缓存和所述第二高速缓存更高的级别上。
3.根据权利要求1所述的数字数据处理设备,还包括第三高速缓存,所述第三高速缓存处于比所述第一高速缓存和所述第二高速缓存更低的级别。
4.根据权利要求1所述的数字数据处理设备,其中所述选择机制包括用于临时容纳从所述第二高速缓存逐出的有效数据的队列,所述队列利用至少一个选择标准,以便选择性地使所述队列中的数据进入所述第二高速缓存,或者在不使数据进入所述第二高速缓存的情况下从所述队列移走数据。
5.根据权利要求4所述的数字数据处理设备,其中所述队列包括队列命中机制,其用于确定所述队列中是否包含由所述处理器生成的数据引用,并且如果所述队列中包含所述数据引用,则输出所述数据。
6.根据权利要求1所述的数字数据处理设备,其中所述选择机制利用下述标准中的至少一个选择标准(a)是否已经在所述第一高速缓存中多次引用从所述第一高速缓存逐出的数据;(b)从所述第一高速缓存中逐出的数据先前是否曾经被从所述第一高速缓存逐出并且在被逐出后又被重新载入所述第一高速缓存;(c)是否已经在所述第一高速缓存中多次引用过逐出所述数据的所述第一高速缓存的关联集合中的其他数据;(d)逐出所述数据的所述第一高速缓存的关联集合中的其他数据先前是否曾经被从所述第一高速缓存逐出并且在被逐出后又被重新载入所述第一高速缓存。
7.根据权利要求1所述的数字数据处理设备,其中所述第一高速缓存包括多个关联集合,每个关联集合包含多个高速缓存线,使用由所述处理器生成的数据地址的第一函数对每个关联集合进行访问;以及其中所述第二高速缓存包括多个关联集合,每个关联集合包括多个高速缓存线,使用所述数据地址的第二函数对每个关联集合进行访问。
8.根据权利要求7所述的数字数据处理设备,其中通过所述第二函数将所述第一高速缓存的每个所述关联集合的所述多个高速缓存线的所述数据地址映射到所述第二高速缓存的相应的多个不同的所述关联集合;其中通过所述第一函数将所述第二高速缓存的每个所述关联集合的所述多个高速缓存线的所述数据地址映射到所述第一高速缓存的相应的多个不同的所述关联集合。
9.根据权利要求1所述的数字数据处理设备,其中所述数字数据处理设备包括多个所述处理器,所述多个处理器共享所述第一高速缓存和所述第二高速缓存。
10.一种用于数据处理的集成电路芯片,包括至少一个处理器核心;第一高速缓存,其用于临时存储供所述至少一个处理器核心使用的外部内存的一部分;第二高速缓存,其用于临时存储供所述至少一个处理器核心使用的所述内存的一部分,所述第二高速缓存处于比所述第一高速缓存更低的级别上,其中数据仅在被从所述第一高速缓存逐出之后才存储在所述第二高速缓存中;以及选择机制,其用于选择从所述第一高速缓存逐出的数据以在所述第二高速缓存中进行存储,所述选择机制选择的在所述第二高速缓存中进行存储的数据少于从所述第一高速缓存逐出的全部有效数据。
11.根据权利要求10所述的集成电路芯片,还包括第三高速缓存,所述第三高速缓存处于比所述第一高速缓存和所述第二高速缓存更高的级别上。
12.根据权利要求10所述的集成电路芯片,其中所述选择机制包括用于临时容纳从所述第二高速缓存中逐出的有效数据的队列,所述队列利用至少一个选择标准,以便选择性地使所述队列中的数据进入所述第二高速缓存,或者在不使数据进入所述第二高速缓存的情况下从所述队列移走数据。
13.根据权利要求12所述的集成电路芯片,其中所述队列包括队列命中机制,其用于确定所述队列中是否包含由所述处理器生成的数据引用,并且假如所述队列中包含所述数据引用,则输出所述数据。
14.根据权利要求10所述的集成电路芯片,其中所述选择机制利用下述标准中的至少一个选择标准(a)是否已经在所述第一高速缓存中多次引用从所述第一高速缓存逐出的数据;(b)从所述第一高速缓存中逐出的数据先前是否曾经被从所述第一高速缓存逐出并且在被逐出后又被重新载入所述第一高速缓存;(c)是否已经在所述第一高速缓存中多次引用过逐出所述数据的所述第一高速缓存的关联集合中的其他数据;(d)逐出所述数据的所述第一高速缓存的关联集合中的其他数据先前是否曾经被从所述第一高速缓存逐出并且在被逐出后又被重新载入所述第一高速缓存。
15.根据权利要求10所述的集成电路芯片,其中所述第一高速缓存包括多个关联集合,每个关联集合包含多个高速缓存线,使用由所述处理器生成的数据地址的第一函数对每个关联集合进行访问;以及其中所述第二高速缓存包括多个关联集合,每个关联集合包括多个高速缓存线,使用所述数据地址的第二函数对每个关联集合进行访问。
16.根据权利要求15所述的集成电路芯片,其中通过所述第二函数将所述第一高速缓存的每个所述关联集合的所述多个高速缓存线的所述数据地址映射到所述第二高速缓存的相应的多个不同的所述关联集合;其中通过所述第一函数将所述第二高速缓存的每个所述关联集合的所述多个高速缓存线的所述数据地址映射到所述第一高速缓存的相应的多个不同的所述关联集合。
17.一种用于在数字数据处理设备中管理高速缓存数据的方法,包括步骤在第一高速缓存中临时存储供所述数字数据处理设备的至少一个处理器使用的内存的一部分;选择所述第一高速缓存中的有效数据的离散部分,以从所述第一高速缓存中逐出;关于为了从所述第一高速缓存中逐出而选出的有效数据的每个所述离散部分,执行关于是否在第二高速缓存中临时存储所述各离散部分的选择确定,所述第二高速缓存处于比所述第一高速缓存更低的级别上,其中数据仅在从所述第一高速缓存被逐出之后才在所述第二高速缓存中进行存储;以及其中所述选择确定步骤确定将所述离散部分中的至少某些离散部分存储在所述第二高速缓存中,并且其中所述选择确定步骤确定不将所述离散部分中的至少某些离散部分存储在所述第二高速缓存中。
18.根据权利要求17所述的方法,其中所述选择确定步骤包括在一个队列中临时容纳从所述第二高速缓存逐出的有效数据,并且使用至少一个选择标准,选择性地使所述队列中的数据进入所述第二高速缓存,或者在不使数据进入所述第二高速缓存的情况下从所述队列移走数据。
19.根据权利要求17所述的方法,其中所述选择确定步骤利用下述标准中的至少一个选择标准(a)是否已经在所述第一高速缓存中多次引用从所述第一高速缓存逐出的数据;(b)从所述第一高速缓存中逐出的数据先前是否曾经从所述第一高速缓存被逐出并且在被逐出后又被重新载入所述第一高速缓存;(c)是否已经在所述第一高速缓存中多次引用过逐出所述数据的所述第一高速缓存的关联集合中的其他数据;以及(d)逐出所述数据的所述第一高速缓存的关联集合中的其他数据先前是否曾经被从所述第一高速缓存逐出并且在被逐出后又被重新载入所述第一高速缓存。
全文摘要
计算机系统高速缓存包括至少两个级别。较低级别的选择牺牲性高速缓存接收从较高级别高速缓存逐出的高速缓存线。选择机制选择从较高级别高速缓存逐出的线以便存储在牺牲性高速缓存中,只有某些逐出的线被选择用于牺牲。优选地,使用与每个高速缓存线相关联的两个优先级位来选择用于牺牲的线。优先级位表明该线在处于较高级别高速缓存中时是否被再次引用过以及该线在被从较高级别高速缓存逐出后是否被重新加载过。
文档编号G06F12/08GK1955948SQ200610094220
公开日2007年5月2日 申请日期2006年6月27日 优先权日2005年10月26日
发明者史蒂文·P·范德威尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1