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

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

Info

Publication number
CN100421088C
CN100421088C CNB2006100942200A CN200610094220A CN100421088C CN 100421088 C CN100421088 C CN 100421088C CN B2006100942200 A CNB2006100942200 A CN B2006100942200A CN 200610094220 A CN200610094220 A CN 200610094220A CN 100421088 C CN100421088 C CN 100421088C
Authority
CN
China
Prior art keywords
speed cache
data
cache
formation
speed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB2006100942200A
Other languages
English (en)
Other versions
CN1955948A (zh
Inventor
史蒂文·P·范德威尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
IBM China Co Ltd
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1955948A publication Critical patent/CN1955948A/zh
Application granted granted Critical
Publication of CN100421088C publication Critical patent/CN100421088C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels

Abstract

计算机系统高速缓存包括至少两个级别。较低级别的选择牺牲性高速缓存接收从较高级别高速缓存逐出的高速缓存线。选择机制选择从较高级别高速缓存逐出的线以便存储在牺牲性高速缓存中,只有某些逐出的线被选择用于牺牲。优选地,使用与每个高速缓存线相关联的两个优先级位来选择用于牺牲的线。优先级位表明该线在处于较高级别高速缓存中时是否被再次引用过以及该线在被从较高级别高速缓存逐出后是否被重新加载过。

Description

用于管理高速缓存数据的数字数据处理设备和方法
技术领域
本发明涉及数字数据处理硬件,并且特别地涉及用于数字数据处理设备的处理单元的高速缓存和支持硬件的设计和操作。
背景技术
在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的指令高速缓存(L1 I-高速缓存)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示出了队列的结果状态。
可以观察到,在优选的实施例中,总是将从L2 203逐出的具有高优先级的高速缓存线放进牺牲性高速缓存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高速缓存的特定关联集合中大多数或者所有的线具有高优先级,则该关联集合很有可能是“热”集合。如果所有其他因素都相同,应该优先考虑从“热”集合中逐出的高速缓存线,然后再考虑从非“热”集合中逐出的高速缓存线。可以将一个或多个额外的位添加到牺牲性高速缓存队列的每个条目中,以便记录从中逐出该条目的关联集合中的线的平均优先级。这些位可以定义额外的优先级级别或者用于具有更高优先级的替代性基础。在第三个替代性实施例中,在确定是否将特定高速缓存线选择为进入牺牲性高速缓存中时,可以考虑已在特定高速缓存线映射到的关联集合中的牺牲性高速缓存中的高速缓存线的优先级。即,如果牺牲性高速缓存中的同一关联集合中的所有线具有低优先级,则始终选择具有低优先级的线,但是随着具有低优先级的线的比例减小,则可能希望选择更少的具有低优先级的线。尽管此处描述了替代性优先级技术的几个特定例子,但应该理解可以使用其他的优先级,并且此处描述的优先级技术仅仅旨在用作说明而非限制。
在优选的实施例中,牺牲性高速缓存队列用作将高速缓存线选择为存储在牺牲性高速缓存中的主要机制。如前所述,队列的一个优点是其可以根据具有较低优先级的线与具有较高优先级的线的比例来灵活地调整存储低优先级高速缓存线的比例。然而,应该意识到,用于牺牲性高速缓存的选择机制并非必须是队列,并且可以采取任意不同的其他形式。例如,作为替代,可以根据逐出的线的优先级以及/或者其他因素,紧接在高速缓存线从较高级别高速缓存被逐出之后进行选择确定。
尽管已经公开了本发明的特定实施例以及某些替代性方案,但应该认识到,在下述权利要求的范围内,本领域的普通技术人员可以在形式和细节上得到另外的变型。

Claims (20)

1. 一种数字数据处理设备,包括:
至少一个处理器;
内存;
第一高速缓存,其用于临时存储供所述至少一个处理器使用的所述内存的一部分;
第二高速缓存,其用于临时存储供所述至少一个处理器使用的所述内存的一部分,所述第二高速缓存处于比所述第一高速缓存更低的级别上,其中数据仅在被从所述第一高速缓存逐出之后才存储在所述第二高速缓存中;以及
选择机制,其用于选择从所述第一高速缓存逐出的数据以存储在所述第二高速缓存中,所述选择机制选择的在所述第二高速缓存中进行存储的数据少于从所述第一高速缓存逐出的全部有效数据。
2. 根据权利要求1所述的数字数据处理设备,还包括第三高速缓存,所述第三高速缓存处于比所述第一高速缓存和所述第二高速缓存更高的级别上。
3. 根据权利要求1所述的数字数据处理设备,还包括第三高速缓存,所述第三高速缓存处于比所述第一高速缓存和所述第二高速缓存更低的级别。
4. 根据权利要求1所述的数字数据处理设备,其中所述选择机制包括用于临时容纳从所述第一高速缓存逐出的有效数据的队列,所述队列利用至少一个选择标准,以便选择性地使所述队列中的数据进入所述第二高速缓存,或者在不使数据进入所述第二高速缓存的情况下从所述队列移走数据。
5. 根据权利要求4所述的数字数据处理设备,其中所述队列包括队列命中机制,其用于确定所述队列中是否包含由所述处理器生成的数据引用,并且如果所述队列中包含所述数据引用,则输出所述数据。
6. 根据权利要求1所述的数字数据处理设备,
其中所述第一高速缓存包括多个关联集合,每个关联集合包含多个高速缓存线,使用由所述处理器生成的数据地址的第一函数对每个关联集合进行访问;以及
其中所述第二高速缓存包括多个关联集合,每个关联集合包括多个高速缓存线,使用所述数据地址的第二函数对每个关联集合进行访问。
7. 根据权利要求6所述的数字数据处理设备,其中所述选择机制利用下述标准中的至少一个选择标准:(a)是否已经在所述第一高速缓存中多次引用从所述第一高速缓存逐出的数据;(b)从所述第一高速缓存中逐出的数据先前是否曾经被从所述第一高速缓存逐出并且在被逐出后又被重新载入所述第一高速缓存;(c)是否已经在所述第一高速缓存中多次引用过逐出所述数据的所述第一高速缓存的关联集合中的其他数据;(d)逐出所述数据的所述第一高速缓存的关联集合中的其他数据先前是否曾经被从所述第一高速缓存逐出并且在被逐出后又被重新载入所述第一高速缓存。
8. 根据权利要求7所述的数字数据处理设备,
其中通过所述第二函数将所述第一高速缓存的每个所述关联集合的所述多个高速缓存线的所述数据地址映射到所述第二高速缓存的相应的多个不同的所述关联集合;
其中通过所述第一函数将所述第二高速缓存的每个所述关联集合的所述多个高速缓存线的所述数据地址映射到所述第一高速缓存的相应的多个不同的所述关联集合。
9. 根据权利要求1所述的数字数据处理设备,
其中所述数字数据处理设备包括多个所述处理器,所述多个处理器共享所述第一高速缓存和所述第二高速缓存。
10. 一种用于数据处理的集成电路芯片,包括:
至少一个处理器核心;
第一高速缓存,其用于临时存储供所述至少一个处理器核心使用的外部内存的一部分;
第二高速缓存,其用于临时存储供所述至少一个处理器核心使用的所述内存的一部分,所述第二高速缓存处于比所述第一高速缓存更低的级别上,其中数据仅在被从所述第一高速缓存逐出之后才存储在所述第二高速缓存中;以及
选择机制,其用于选择从所述第一高速缓存逐出的数据以在所述第二高速缓存中进行存储,所述选择机制选择的在所述第二高速缓存中进行存储的数据少于从所述第一高速缓存逐出的全部有效数据。
11. 根据权利要求10所述的集成电路芯片,还包括第三高速缓存,所述第三高速缓存处于比所述第一高速缓存和所述第二高速缓存更高的级别上。
12. 根据权利要求10所述的集成电路芯片,其中所述选择机制包括用于临时容纳从所述第一高速缓存中逐出的有效数据的队列,所述队列利用至少一个选择标准,以便选择性地使所述队列中的数据进入所述第二高速缓存,或者在不使数据进入所述第二高速缓存的情况下从所述队列移走数据。
13. 根据权利要求12所述的集成电路芯片,其中所述队列包括队列命中机制,其用于确定所述队列中是否包含由所述处理器生成的数据引用,并且假如所述队列中包含所述数据引用,则输出所述数据。
14. 根据权利要求10所述的集成电路芯片,
其中所述第一高速缓存包括多个关联集合,每个关联集合包含多个高速缓存线,使用由所述处理器生成的数据地址的第一函数对每个关联集合进行访问;以及
其中所述第二高速缓存包括多个关联集合,每个关联集合包括多个高速缓存线,使用所述数据地址的第二函数对每个关联集合进行访问。
15. 根据权利要求14所述的集成电路芯片,其中所述选择机制利用下述标准中的至少一个选择标准:(a)是否已经在所述第一高速缓存中多次引用从所述第一高速缓存逐出的数据;(b)从所述第一高速缓存中逐出的数据先前是否曾经被从所述第一高速缓存逐出并且在被逐出后又被重新载入所述第一高速缓存;(c)是否已经在所述第一高速缓存中多次引用过逐出所述数据的所述第一高速缓存的关联集合中的其他数据;(d)逐出所述数据的所述第一高速缓存的关联集合中的其他数据先前是否曾经被从所述第一高速缓存逐出并且在被逐出后又被重新载入所述第一高速缓存。
16. 根据权利要求15所述的集成电路芯片,
其中通过所述第二函数将所述第一高速缓存的每个所述关联集合的所述多个高速缓存线的所述数据地址映射到所述第二高速缓存的相应的多个不同的所述关联集合;
其中通过所述第一函数将所述第二高速缓存的每个所述关联集合的所述多个高速缓存线的所述数据地址映射到所述第一高速缓存的相应的多个不同的所述关联集合。
17. 一种用于在数字数据处理设备中管理高速缓存数据的方法,包括步骤:
在第一高速缓存中临时存储供所述数字数据处理设备的至少一个处理器使用的内存的一部分;
选择所述第一高速缓存中的有效数据的离散部分,以从所述第一高速缓存中逐出;
关于为了从所述第一高速缓存中逐出而选出的有效数据的每个所述离散部分,执行关于是否在第二高速缓存中临时存储所述各离散部分的选择确定,所述第二高速缓存处于比所述第一高速缓存更低的级别上,其中数据仅在从所述第一高速缓存被逐出之后才在所述第二高速缓存中进行存储;以及
其中所述选择确定步骤确定将所述离散部分中的至少某些离散部分存储在所述第二高速缓存中,并且其中所述选择确定步骤确定不将所述离散部分中的至少某些离散部分存储在所述第二高速缓存中。
18. 根据权利要求17所述的方法,其中所述选择确定步骤包括在一个队列中临时容纳从所述第一高速缓存逐出的有效数据,并且使用至少一个选择标准,选择性地使所述队列中的数据进入所述第二高速缓存,或者在不使数据进入所述第二高速缓存的情况下从所述队列移走数据。
19. 根据权利要求17所述的集成电路芯片,
其中所述第一高速缓存包括多个关联集合,每个关联集合包含多个高速缓存线,使用由所述处理器生成的数据地址的第一函数对每个关联集合进行访问;以及
其中所述第二高速缓存包括多个关联集合,每个关联集合包括多个高速缓存线,使用所述数据地址的第二函数对每个关联集合进行访问。
20. 根据权利要求19所述的方法,其中所述选择确定步骤利用下述标准中的至少一个选择标准:(a)是否已经在所述第一高速缓存中多次引用从所述第一高速缓存逐出的数据;(b)从所述第一高速缓存中逐出的数据先前是否曾经从所述第一高速缓存被逐出并且在被逐出后又被重新载入所述第一高速缓存;(c)是否已经在所述第一高速缓存中多次引用过逐出所述数据的所述第一高速缓存的关联集合中的其他数据;以及(d)逐出所述数据的所述第一高速缓存的关联集合中的其他数据先前是否曾经被从所述第一高速缓存逐出并且在被逐出后又被重新载入所述第一高速缓存。
CNB2006100942200A 2005-10-26 2006-06-27 用于管理高速缓存数据的数字数据处理设备和方法 Expired - Fee Related CN100421088C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/259,313 US20070094450A1 (en) 2005-10-26 2005-10-26 Multi-level cache architecture having a selective victim cache
US11/259,313 2005-10-26

Publications (2)

Publication Number Publication Date
CN1955948A CN1955948A (zh) 2007-05-02
CN100421088C true CN100421088C (zh) 2008-09-24

Family

ID=37986616

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100942200A Expired - Fee Related CN100421088C (zh) 2005-10-26 2006-06-27 用于管理高速缓存数据的数字数据处理设备和方法

Country Status (2)

Country Link
US (1) US20070094450A1 (zh)
CN (1) CN100421088C (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103221930A (zh) * 2010-09-27 2013-07-24 先进微装置公司 用于减少由积极预取所致的处理器缓存污染的方法及装置

Families Citing this family (102)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7281092B2 (en) * 2005-06-02 2007-10-09 International Business Machines Corporation System and method of managing cache hierarchies with adaptive mechanisms
US7873788B1 (en) 2005-11-15 2011-01-18 Oracle America, Inc. Re-fetching cache memory having coherent re-fetching
US7958312B2 (en) * 2005-11-15 2011-06-07 Oracle America, Inc. Small and power-efficient cache that can provide data for background DMA devices while the processor is in a low-power state
US7899990B2 (en) * 2005-11-15 2011-03-01 Oracle America, Inc. Power conservation via DRAM access
US7516274B2 (en) * 2005-11-15 2009-04-07 Sun Microsystems, Inc. Power conservation via DRAM access reduction
US7934054B1 (en) 2005-11-15 2011-04-26 Oracle America, Inc. Re-fetching cache memory enabling alternative operational modes
US7647452B1 (en) 2005-11-15 2010-01-12 Sun Microsystems, Inc. Re-fetching cache memory enabling low-power modes
US7676633B1 (en) * 2007-01-31 2010-03-09 Network Appliance, Inc. Efficient non-blocking storage of data in a storage server victim cache
US7752395B1 (en) 2007-02-28 2010-07-06 Network Appliance, Inc. Intelligent caching of data in a storage server victim cache
US8959307B1 (en) 2007-11-16 2015-02-17 Bitmicro Networks, Inc. Reduced latency memory read transactions in storage devices
US20090157968A1 (en) * 2007-12-12 2009-06-18 International Business Machines Corporation Cache Memory with Extended Set-associativity of Partner Sets
US8452920B1 (en) * 2007-12-31 2013-05-28 Synopsys Inc. System and method for controlling a dynamic random access memory
US8140771B2 (en) * 2008-02-01 2012-03-20 International Business Machines Corporation Partial cache line storage-modifying operation based upon a hint
US8255635B2 (en) 2008-02-01 2012-08-28 International Business Machines Corporation Claiming coherency ownership of a partial cache line of data
US8117401B2 (en) * 2008-02-01 2012-02-14 International Business Machines Corporation Interconnect operation indicating acceptability of partial data delivery
US8250307B2 (en) * 2008-02-01 2012-08-21 International Business Machines Corporation Sourcing differing amounts of prefetch data in response to data prefetch requests
US8266381B2 (en) 2008-02-01 2012-09-11 International Business Machines Corporation Varying an amount of data retrieved from memory based upon an instruction hint
US20090198910A1 (en) * 2008-02-01 2009-08-06 Arimilli Ravi K Data processing system, processor and method that support a touch of a partial cache line of data
US8108619B2 (en) 2008-02-01 2012-01-31 International Business Machines Corporation Cache management for partial cache line operations
US8015365B2 (en) * 2008-05-30 2011-09-06 Intel Corporation Reducing back invalidation transactions from a snoop filter
US8347037B2 (en) * 2008-10-22 2013-01-01 International Business Machines Corporation Victim cache replacement
US8209489B2 (en) 2008-10-22 2012-06-26 International Business Machines Corporation Victim cache prefetching
US8898401B2 (en) * 2008-11-07 2014-11-25 Oracle America, Inc. Methods and apparatuses for improving speculation success in processors
US8806145B2 (en) * 2008-11-07 2014-08-12 Oracle America, Inc. Methods and apparatuses for improving speculation success in processors
US8117397B2 (en) * 2008-12-16 2012-02-14 International Business Machines Corporation Victim cache line selection
US8499124B2 (en) * 2008-12-16 2013-07-30 International Business Machines Corporation Handling castout cache lines in a victim cache
US8225045B2 (en) * 2008-12-16 2012-07-17 International Business Machines Corporation Lateral cache-to-cache cast-in
US8489819B2 (en) 2008-12-19 2013-07-16 International Business Machines Corporation Victim cache lateral castout targeting
US8417903B2 (en) * 2008-12-19 2013-04-09 International Business Machines Corporation Preselect list using hidden pages
US20100217952A1 (en) * 2009-02-26 2010-08-26 Iyer Rahul N Remapping of Data Addresses for a Large Capacity Victim Cache
US8949540B2 (en) * 2009-03-11 2015-02-03 International Business Machines Corporation Lateral castout (LCO) of victim cache line in data-invalid state
US8285939B2 (en) * 2009-04-08 2012-10-09 International Business Machines Corporation Lateral castout target selection
US8347036B2 (en) * 2009-04-09 2013-01-01 International Business Machines Corporation Empirically based dynamic control of transmission of victim cache lateral castouts
US8327073B2 (en) * 2009-04-09 2012-12-04 International Business Machines Corporation Empirically based dynamic control of acceptance of victim cache lateral castouts
US8312220B2 (en) * 2009-04-09 2012-11-13 International Business Machines Corporation Mode-based castout destination selection
US8117390B2 (en) * 2009-04-15 2012-02-14 International Business Machines Corporation Updating partial cache lines in a data processing system
US8176254B2 (en) * 2009-04-16 2012-05-08 International Business Machines Corporation Specifying an access hint for prefetching limited use data in a cache hierarchy
US8140759B2 (en) * 2009-04-16 2012-03-20 International Business Machines Corporation Specifying an access hint for prefetching partial cache block data in a cache hierarchy
US8566531B2 (en) * 2009-08-21 2013-10-22 Google Inc. System and method of selectively caching information based on the interarrival time of requests for the same information
US8665601B1 (en) 2009-09-04 2014-03-04 Bitmicro Networks, Inc. Solid state drive with improved enclosure assembly
US8447908B2 (en) 2009-09-07 2013-05-21 Bitmicro Networks, Inc. Multilevel memory bus system for solid-state mass storage
US8560804B2 (en) 2009-09-14 2013-10-15 Bitmicro Networks, Inc. Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device
US9189403B2 (en) 2009-12-30 2015-11-17 International Business Machines Corporation Selective cache-to-cache lateral castouts
US8712984B2 (en) 2010-03-04 2014-04-29 Microsoft Corporation Buffer pool extension for database server
US9235531B2 (en) * 2010-03-04 2016-01-12 Microsoft Technology Licensing, Llc Multi-level buffer pool extensions
US9465745B2 (en) 2010-04-09 2016-10-11 Seagate Technology, Llc Managing access commands by multiple level caching
TW201220048A (en) * 2010-11-05 2012-05-16 Realtek Semiconductor Corp for enhancing access efficiency of cache memory
US9372755B1 (en) 2011-10-05 2016-06-21 Bitmicro Networks, Inc. Adaptive power cycle sequences for data recovery
US9043669B1 (en) 2012-05-18 2015-05-26 Bitmicro Networks, Inc. Distributed ECC engine for storage media
US9552293B1 (en) 2012-08-06 2017-01-24 Google Inc. Emulating eviction data paths for invalidated instruction cache
US9361237B2 (en) * 2012-10-18 2016-06-07 Vmware, Inc. System and method for exclusive read caching in a virtualized computing environment
US9639466B2 (en) * 2012-10-30 2017-05-02 Nvidia Corporation Control mechanism for fine-tuned cache to backing-store synchronization
US20140181402A1 (en) * 2012-12-21 2014-06-26 Advanced Micro Devices, Inc. Selective cache memory write-back and replacement policies
CN103984647B (zh) * 2013-02-08 2017-07-21 上海芯豪微电子有限公司 存储表替换方法
US9423457B2 (en) 2013-03-14 2016-08-23 Bitmicro Networks, Inc. Self-test solution for delay locked loops
US9842024B1 (en) 2013-03-15 2017-12-12 Bitmicro Networks, Inc. Flash electronic disk with RAID controller
US10445239B1 (en) * 2013-03-15 2019-10-15 Bitmicro Llc Write buffering
US9501436B1 (en) 2013-03-15 2016-11-22 Bitmicro Networks, Inc. Multi-level message passing descriptor
US10489318B1 (en) 2013-03-15 2019-11-26 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9916213B1 (en) 2013-03-15 2018-03-13 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US9720603B1 (en) 2013-03-15 2017-08-01 Bitmicro Networks, Inc. IOC to IOC distributed caching architecture
US9798688B1 (en) 2013-03-15 2017-10-24 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US9430386B2 (en) 2013-03-15 2016-08-30 Bitmicro Networks, Inc. Multi-leveled cache management in a hybrid storage system
US9400617B2 (en) 2013-03-15 2016-07-26 Bitmicro Networks, Inc. Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained
US10120694B2 (en) 2013-03-15 2018-11-06 Bitmicro Networks, Inc. Embedded system boot from a storage device
US9734067B1 (en) * 2013-03-15 2017-08-15 Bitmicro Networks, Inc. Write buffering
US9875205B1 (en) 2013-03-15 2018-01-23 Bitmicro Networks, Inc. Network of memory systems
US9672178B1 (en) 2013-03-15 2017-06-06 Bitmicro Networks, Inc. Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system
US9971524B1 (en) 2013-03-15 2018-05-15 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9934045B1 (en) 2013-03-15 2018-04-03 Bitmicro Networks, Inc. Embedded system boot from a storage device
KR20150019788A (ko) * 2013-08-16 2015-02-25 에스케이하이닉스 주식회사 캐시 장치 및 그 제어 방법
KR102147356B1 (ko) * 2013-09-30 2020-08-24 삼성전자 주식회사 캐시 메모리 시스템 및 그 동작방법
US9361233B2 (en) * 2013-12-20 2016-06-07 Intel Corporation Method and apparatus for shared line unified cache
CN104750423B (zh) * 2013-12-25 2018-01-30 中国科学院声学研究所 一种优化pcm内存写的方法和装置
US9952991B1 (en) 2014-04-17 2018-04-24 Bitmicro Networks, Inc. Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation
US9811461B1 (en) 2014-04-17 2017-11-07 Bitmicro Networks, Inc. Data storage system
US10055150B1 (en) 2014-04-17 2018-08-21 Bitmicro Networks, Inc. Writing volatile scattered memory metadata to flash device
US10025736B1 (en) 2014-04-17 2018-07-17 Bitmicro Networks, Inc. Exchange message protocol message transmission between two devices
US10078604B1 (en) 2014-04-17 2018-09-18 Bitmicro Networks, Inc. Interrupt coalescing
US10042792B1 (en) 2014-04-17 2018-08-07 Bitmicro Networks, Inc. Method for transferring and receiving frames across PCI express bus for SSD device
WO2016009247A1 (en) * 2014-07-14 2016-01-21 Via Alliance Semiconductor Co., Ltd. Cache system with primary cache and overflow cache that use different indexing schemes
CN105814549B (zh) * 2014-10-08 2019-03-01 上海兆芯集成电路有限公司 具有主高速缓存器和溢出fifo高速缓存器的高速缓存器系统
US9558117B2 (en) 2015-01-15 2017-01-31 Qualcomm Incorporated System and method for adaptive implementation of victim cache mode in a portable computing device
US9690710B2 (en) 2015-01-15 2017-06-27 Qualcomm Incorporated System and method for improving a victim cache mode in a portable computing device
US10013353B2 (en) * 2015-02-23 2018-07-03 Red Hat, Inc. Adaptive optimization of second level cache
US10606795B2 (en) * 2015-06-18 2020-03-31 Netapp, Inc. Methods for managing a buffer cache and devices thereof
JP6451538B2 (ja) * 2015-07-22 2019-01-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US9996470B2 (en) 2015-08-28 2018-06-12 Netapp, Inc. Workload management in a global recycle queue infrastructure
US9836406B2 (en) * 2015-12-22 2017-12-05 Oracle International Corporation Dynamic victim cache policy
WO2017190266A1 (zh) * 2016-05-03 2017-11-09 华为技术有限公司 管理转址旁路缓存的方法和多核处理器
US10152425B2 (en) * 2016-06-13 2018-12-11 Advanced Micro Devices, Inc. Cache entry replacement based on availability of entries at another cache
US20180052778A1 (en) * 2016-08-22 2018-02-22 Advanced Micro Devices, Inc. Increase cache associativity using hot set detection
US9946646B2 (en) * 2016-09-06 2018-04-17 Advanced Micro Devices, Inc. Systems and method for delayed cache utilization
CN108255598A (zh) * 2016-12-28 2018-07-06 华耀(中国)科技有限公司 性能保证的虚拟化管理平台资源分配系统及方法
US10552050B1 (en) 2017-04-07 2020-02-04 Bitmicro Llc Multi-dimensional computer storage system
US10606752B2 (en) * 2017-11-06 2020-03-31 Samsung Electronics Co., Ltd. Coordinated cache management policy for an exclusive cache hierarchy
CN109032964A (zh) * 2018-07-02 2018-12-18 京东方科技集团股份有限公司 缓存替换方法及其装置、异构多核系统
US11609858B2 (en) * 2018-12-26 2023-03-21 Samsung Electronics Co., Ltd. Bypass predictor for an exclusive last-level cache
US11113207B2 (en) * 2018-12-26 2021-09-07 Samsung Electronics Co., Ltd. Bypass predictor for an exclusive last-level cache
US11741020B2 (en) * 2019-05-24 2023-08-29 Texas Instruments Incorporated Methods and apparatus to facilitate fully pipelined read-modify-write support in level 1 data cache using store queue and data forwarding
US11586564B2 (en) * 2020-11-25 2023-02-21 Samsung Electronics Co., Ltd Head of line entry processing in a buffer memory device
US11768778B2 (en) 2021-09-30 2023-09-26 Advanced Micro Devices, Inc. Re-reference indicator for re-reference interval prediction cache replacement policy

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1226705A (zh) * 1998-02-17 1999-08-25 国际商业机器公司 具有独立实现优化高速缓存操作的高速缓存相关协议
CN1231443A (zh) * 1998-02-17 1999-10-13 国际商业机器公司 垂直高速缓冲的伪精确i-高速缓存的包括性
US6038645A (en) * 1996-08-28 2000-03-14 Texas Instruments Incorporated Microprocessor circuits, systems, and methods using a combined writeback queue and victim cache
US20030217230A1 (en) * 2002-05-17 2003-11-20 International Business Machines Corporation Preventing cache floods from sequential streams
CN1581107A (zh) * 2003-08-01 2005-02-16 微软公司 用于管理被存储在高速缓存中的对象的系统和方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047357A (en) * 1995-01-27 2000-04-04 Digital Equipment Corporation High speed method for maintaining cache coherency in a multi-level, set associative cache hierarchy
US5706467A (en) * 1995-09-05 1998-01-06 Emc Corporation Sequential cache management system utilizing the establishment of a microcache and managing the contents of such according to a threshold comparison
US6185658B1 (en) * 1997-12-17 2001-02-06 International Business Machines Corporation Cache with enhanced victim selection using the coherency states of cache lines
US6397296B1 (en) * 1999-02-19 2002-05-28 Hitachi Ltd. Two-level instruction cache for embedded processors
US20060179231A1 (en) * 2005-02-07 2006-08-10 Advanced Micron Devices, Inc. System having cache memory and method of accessing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6038645A (en) * 1996-08-28 2000-03-14 Texas Instruments Incorporated Microprocessor circuits, systems, and methods using a combined writeback queue and victim cache
CN1226705A (zh) * 1998-02-17 1999-08-25 国际商业机器公司 具有独立实现优化高速缓存操作的高速缓存相关协议
CN1231443A (zh) * 1998-02-17 1999-10-13 国际商业机器公司 垂直高速缓冲的伪精确i-高速缓存的包括性
US20030217230A1 (en) * 2002-05-17 2003-11-20 International Business Machines Corporation Preventing cache floods from sequential streams
CN1581107A (zh) * 2003-08-01 2005-02-16 微软公司 用于管理被存储在高速缓存中的对象的系统和方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103221930A (zh) * 2010-09-27 2013-07-24 先进微装置公司 用于减少由积极预取所致的处理器缓存污染的方法及装置
CN103221930B (zh) * 2010-09-27 2016-09-07 先进微装置公司 用于减少由积极预取所致的处理器缓存污染的方法及装置

Also Published As

Publication number Publication date
US20070094450A1 (en) 2007-04-26
CN1955948A (zh) 2007-05-02

Similar Documents

Publication Publication Date Title
CN100421088C (zh) 用于管理高速缓存数据的数字数据处理设备和方法
CN106415522B (zh) 存储器内轻量一致性
CN1307561C (zh) 不同高速缓存级上具有关联集重叠同余组的多级高速缓存
US5717893A (en) Method for managing a cache hierarchy having a least recently used (LRU) global cache and a plurality of LRU destaging local caches containing counterpart datatype partitions
US5434993A (en) Methods and apparatus for creating a pending write-back controller for a cache controller on a packet switched memory bus employing dual directories
US8423715B2 (en) Memory management among levels of cache in a memory hierarchy
US8230179B2 (en) Administering non-cacheable memory load instructions
US7200713B2 (en) Method of implementing off-chip cache memory in dual-use SRAM memory for network processors
CN105550155B (zh) 用于多处理器系统的探听过滤器以及相关探听过滤方法
US7590802B2 (en) Direct deposit using locking cache
US9612975B2 (en) Page cache device and method for efficient mapping
JP2000298659A (ja) コンプリート・アンド・コンサイス・リモート(ccr)ディレクトリ
CN101236527A (zh) 减少探听过滤器中的后来无效的行交换方案
CN110362506B (zh) 高速缓存存储器及其中实现的方法
US20100191913A1 (en) Reconfiguration of embedded memory having a multi-level cache
CN100590612C (zh) 数据处理系统和高速缓存替换方法
JP2004199677A (ja) キャッシュを動作させるためのシステム及び方法
JP4448550B2 (ja) キャッシュシステム
WO2006040689A1 (en) Implementation and management of moveable buffers in cache system
US7917700B2 (en) Method and cache control circuit for replacing cache lines using alternate PLRU algorithm and victim cache coherency state
WO2006027643A1 (en) A virtual address cache and method for sharing data stored in a virtual address cache
JPH10301850A (ja) データ処理システム内のキャッシュ・コヒーレンシを維持するためにセクタ化キャッシュ・メモリに疑似精密包含方式を設ける方法及びシステム
TWI742770B (zh) 神經網路計算裝置及其快取管理方法
US20240054072A1 (en) Metadata-caching integrated circuit device
JP2004046643A (ja) キャッシュ装置および記憶手段選択方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: IBM (CHINA) CO., LTD.

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORP.

Effective date: 20101028

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: ARMONK, NEW YORK, UNITED STATES TO: 201203 7/F, BUILDING 10, ZHANGJIANG INNOVATION PARK, NO.399, KEYUAN ROAD, ZHANGJIANG HIGH-TECH PARK, PUDONG NEW DISTRICT, SHANGHAI, CHINA

TR01 Transfer of patent right

Effective date of registration: 20101028

Address after: 201203 Chinese Shanghai Pudong New Area Zhang Jiang high tech Park Keyuan Road No. 399 Zhang Jiang Innovation Park Building No. 10 7 floor

Patentee after: International Business Machines (China) Co., Ltd.

Address before: New York grams of Armand

Patentee before: International Business Machines Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080924

Termination date: 20170627

CF01 Termination of patent right due to non-payment of annual fee