CN1940892A - 逐出高速缓存的行的电路布置、数据处理系统和方法 - Google Patents
逐出高速缓存的行的电路布置、数据处理系统和方法 Download PDFInfo
- Publication number
- CN1940892A CN1940892A CNA2006100959790A CN200610095979A CN1940892A CN 1940892 A CN1940892 A CN 1940892A CN A2006100959790 A CNA2006100959790 A CN A2006100959790A CN 200610095979 A CN200610095979 A CN 200610095979A CN 1940892 A CN1940892 A CN 1940892A
- Authority
- CN
- China
- Prior art keywords
- cache
- cache line
- level
- lower level
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/254—Distributed memory
- G06F2212/2542—Non-uniform memory access [NUMA] architecture
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种用于包含式高速缓存的高速缓存逐出算法,它可以至少部分地基于在较高级高速缓存中的高速缓存行的状态,来确定从包含式高速缓存中逐出多个高速缓存行当中的哪一行。具体地,高速缓存逐出算法从对于较低级高速缓存的包含式高速缓存目录中确定高速缓存行是否高速缓存在较低级高速缓存中但没有高速缓存在多个较高级高速缓存的任何一个中,对于较高级高速缓存,高速缓存目录信息附加地存储在高速缓存目录中。然后,基于对高速缓存行高速缓存在较低级高速缓存中但没有高速缓存在多个较高级高速缓存的任何一个中的确定,高速缓存逐出算法可以选择该高速缓存行,用于从该高速缓存中逐出。
Description
技术领域
本发明涉及计算机和数据处理系统,具体地涉及用于在这种计算机和数据处理系统的高速缓存的逐出(eviction)算法。
背景技术
随着对处理器(计算机的“大脑”)和存储由计算机所处理的信息的存储器两者在性能上的大量改进,计算机技术正以极快的步伐继续发展。
通常,处理器通过执行形成计算机程序的指令序列来操作。指令典型地存储在具有多个由唯一存储器地址标识的存储位置的存储系统中。存储器地址共同地定义了“存储器地址空间”,其表示可由处理器访问的存储器地址的可寻址范围。
形成计算机程序的指令和这些指令所操作的数据两者常常存储在存储系统中,并且当执行该计算机程序时根据需要由处理器取回。但是,处理器的速度相对于存储设备的速度已经增加的程度,使得从存储器中取回指令和数据常常会成为性能上的严重瓶颈。为了减少该瓶颈,期望尽可能使用最快可利用的存储设备,例如,静态随机访问存储器(SRAM)设备等等。但是,存储器速度和存储器容量通常与成本直接相关,因此,许多计算机设计必须在存储器速度和容量与成本之间做出平衡。
获得这种平衡的重要方式是在存储系统中使用多“级”存储器,从而试图以对系统性能产生最小影响来减少成本。通常,计算机依靠相对大的、慢的以及便宜的大容量存储系统(例如硬盘驱动器或者其它外部存储设备)、使用动态随机访问存储设备(DRAM)或者其它易失存储器存储设备的中间主存储器、以及一个或者多个利用SRAM等等实现的高速但容量有限的高速缓冲存储器(cache memories)或者高速缓存。然后,一个或者多个存储控制器被用来在各种存储器级之间交换来自通常被称为“高速缓存行”的存储器地址的分段的信息,以试图令所请求的存储器地址被存储在可由处理器访问的最快的高速缓冲存储器中的频率最大化。只要存储器访问请求试图访问没有高速缓存在高速缓冲存储器中的存储器地址,就会发生“高速缓存未命中”。作为高速缓存未命中的结果,典型地,通常必须从相对慢的、较低的存储器级中取回对于存储器地址的高速缓存行,而这通常会对性能造成极大的影响。
已经开发的一种多级存储器体系结构被称为“非统一存储器访问(NUMA)体系结构”,其中多个主存储器基本上分布在计算机上,并且按照处理器和高速缓存的组,被物理上分成多个物理子系统或者模块,在此也被称为“节点”。在NUMA计算机的每个节点中的处理器、高速缓存和存储器通常设置在同一电路板或者卡上,以提供对于节点而言为“本地”的所有部件之间的高速交互。通常,包括一个或者多个集成电路芯片的“芯片组”被用来管理处理器和存储器体系结构中的各个部件之间的数据通信。节点也通过例如系统总线或者点到点互联的集合的网络相互耦合,由此允许一个节点处的处理器访问存储在另一个节点处的数据,这样有效地扩展了计算机的整体容量。此外,在处理器中以及每个芯片组中利用一个或者多个高速缓存级。当对存储在本地存储器(即驻留在与处理器相同节点处的存储器)中数据的访问时间与对远程存储器中存储(即驻留在另一个节点处的存储器)的数据的访问时间相比非常短时,存储器访问被称为“非统一的”。
典型的高速缓存利用将高速缓存行映射到多个组之一的高速缓存目录,其中,每组包括高速缓存目录条目及其所参考的高速缓存行。此外,存储在高速缓存目录条目中的对于一组的标签被用来确定是否存在对于那组的高速缓存命中或者未命中,即验证特定存储器地址所映射到的组中的高速缓存行是否包含对应于该存储器地址的信息。
常常,高速缓存中的每个目录条目还包括状态信息,其中状态信息表示该条目所参考的高速缓存行的状态,并且使用该状态信息,以在存储器体系结构中的不同存储器之间保持一致性。一个通用的一致性协议被称为MESI一致性协议,它按照以下四个状态之一对高速缓存中的每个条目进行标记:修改的、排他的、共享的或者无效的。“修改的”状态表示条目包含有效的高速缓存行,并且该条目具有其最接近的副本,即,如果有其他副本的话,所有其它副本不再有效。“排他的”状态类似于“修改的”状态,但是表示条目中的高速缓存行仍然没有被修改。“共享的”状态表示高速缓存行的有效副本存储在条目中,但是高速缓存行的其它有效副本也可以在其它设备中。“无效的”状态表示没有有效的高速缓存行存储在条目中。
高速缓存也可以具有不同的关联度,并且通常被称为N路组关联。每“路”或者类代表在高速缓存目录中对于给定组的单独目录条目和高速缓存行。因此,在单路组关联的高速缓存中,每个存储器地址被映射到高速缓存中的一个目录条目以及一个高速缓存行。多路组关联的高速缓存,例如四路组关联的高速缓存,提供特定存储器地址可以被映射到多个目录条目以及高速缓存行,由此降低了在单路组关联的高速缓存中比较常见的性能限制热点的可能性。
另外,一些高速缓存在性质上可以是“包含式”的,因为这些高速缓存维护着由与这些高速缓存相耦合的较高级高速缓存所高速缓存的高速缓存行的冗余副本。虽然由于在较高级高速缓存中高速缓存的高速缓存行的冗余副本的存储使得包含式高速缓存的有效容量比“排他式”高速缓存的低,但是包含式高速缓存提供了以下性能好处,即通过检查包含式高速缓存中的高速缓存行的状况,可以简单地确定由与包含式高速缓存相耦合的较高级高速缓存所高速缓存的高速缓存行的状况。
可能影响系统性能的高速缓存的一个可能操作是高速缓存行的逐出操作。只要需要对于新的高速缓存行的空间,就会频繁地要求任何尺寸受限的高速缓存从高速缓存中放弃或者逐出高速缓存行。在单路组关联的高速缓存情况下,高速缓存行的逐出很平常,因为每个高速缓存行是被映射到高速缓存中的单个条目,这样输入的高速缓存行必然代替存储在输入的高速缓存行所映射到的单个条目中的现有的高速缓存行。
另一方面,在多路组关联高速缓存中,输入的高速缓存行可能潜在地存储在映射到同一组的多个条目之一中。已经发现:选择哪个条目存储输入的高速缓存行(这通常必须逐出先前存储在所选择的条目中的高速缓存行)可能会对系统性能产生极大影响。因此,已经开发了各种选择算法(通常被称为逐出算法),以试图最小化高速缓存行逐出对系统性能的影响。
许多传统的逐出算法尽可能地选择组中空的条目(例如具有无效MESI状态的条目)。但是,在没有空条目存在的情况下,可以使用各种算法,包括:选择最近最少使用(LRU)的条目、选择最近最频繁使用(MRU)的条目、随机选择、按照循环的方式选择以及它们的变型。通常,不同的算法在不同的环境下能更好地工作。
与一些传统逐出算法(例如基于LRU和MRU的算法)相关联的一个缺陷是要求这些算法跟踪对组中的各种条目的访问,以确定哪个条目最近最频繁使用和最近最少使用。但是,在一些高速缓存中,不太可能确定高速缓存行的真实参考模式。具体地,包含式高速缓存典型地不具有对于也在较高级高速缓存中高速缓存的高速缓存行的参考模式。
作为一个例子,在前述NUMA存储器体系结构的一种实现中,在体系结构中的每个节点可以包括通过一个或者多个处理器总线耦合到节点控制器芯片组的多个处理器,每一个处理器具有仅仅可由该处理器访问的一个或者多个专用高速缓存器,例如第一级(L1)数据和/或指令高速缓存、第二级(L2)高速缓存和第三级(L3)高速缓存。在节点控制器本身中可以实现附加的第四级(L4)高速缓存,并由所有处理器共享。
在L4高速缓存被实现为包含式高速缓存的情况下,L4高速缓存通常对于给定高速缓存行的真实参考模式不具有充分的可见性。具体地,只要L4高速缓存检测到在处理器总线上的访问,通过处理器总线耦合到每个处理器的外部L4高速缓存通常仅仅可以确定什么时候访问高速缓存行。但是,在高速缓存行起初装载到处理器的专用高速缓存之后,由同一处理器所频繁使用的高速缓存行不再产生在处理器总线上执行的任何操作。因此,依靠对高速缓存行的跟踪访问的L4高速缓存的高速缓存逐出算法可能会做出关于这些高速缓存存储行的参考模式的不正确假设,并且因此选择将错误的高速缓存行逐出。
因此,在本领域中,十分需要与包含式高速缓存一起使用的改进的逐出算法。
发明内容
通过利用对于包含式高速缓存的基于状态的高速缓存逐出算法,本发明旨在解决与现有技术相关的这些和其它问题,该算法可以至少部分地基于在较高级高速缓存中的高速缓存行的状态,来确定从包含式高速缓存中逐出多个高速缓存行中的哪一行。具体地,与本发明一致的高速缓存逐出算法从对于较低级高速缓存的包含式高速缓存目录确定高速缓存行是否高速缓存在较低级高速缓存中而没有高速缓存在任何多个较高级高速缓存,其中对于所述较高级高速缓存,高速缓存目录信息附加地存储在高速缓存目录中;以及基于确定高速缓存行高速缓存在较低级高速缓存中而没有高速缓存在多个较高级高速缓存的任何一个中,从较低级高速缓存中逐出高速缓存行。
在所附的权利要求中,阐述了表征本发明特征的这些和其它优势和特征,它们构成本发明的另外一部分。但是,为了更好地理解本发明以及通过它的使用所实现的优势和目的,应当参考附图以及所附的描述性内容,其中描述了本发明的示例性实施例。
附图说明
图1是适合于利用与本发明一致的基于状态的高速缓存逐出算法的多节点计算机系统的方框图;
图2是图1的多节点计算机系统的节点之一的高速缓存体系结构的方框图;
图3是描述在图2的高速缓存体系结构的L4高速缓存中实现基于状态的高速缓存逐出算法的高速缓存行填充请求处理例程的流程图;
图4是存储在图2的高速缓存体系结构中的一组高速缓存行的示例性状态的方框图;
图5是描述命中L4高速缓存的高速缓存行请求产生的从图4状态的状态变化的方框图;
图6是一方框图,描述当对于L4高速缓存中所请求的高速缓存行在关联组中具有可利用的空条目时,未命中L4高速缓存的高速缓存行请求产生的从图5状态的状态变化;
图7是一方框图,描述当对于L4高速缓存中所请求的高速缓存行在关联组中具有可利用的条目时未命中L4高速缓存的高速缓存行请求产生的从图6状态的状态变化,其中该所请求的高速缓存行对应于在L4高速缓存中高速缓存的而没有在任何较高级高速缓存中高速缓存的高速缓存行;
图8是一方框图,描述当对于L4高速缓存中所请求的高速缓存行在关联组中没有可利用的条目时未命中L4高速缓存的高速缓存行请求产生的从图7状态的状态变化,其中该所请求的高速缓存行对应于在L4高速缓存中高速缓存的而没有在任何较高级高速缓存中高速缓存的高速缓存行;以及
图9是一方框图,描述当对于L4高速缓存中所请求的高速缓存行在关联组中具有多个可利用的条目时未命中L4高速缓存的高速缓存行请求产生的从图8状态的状态变化,其中该所请求的高速缓存行对应于在L4高速缓存中高速缓存的而没有在任何较高级高速缓存中高速缓存的高速缓存行。
具体实施方式
此后所讨论和描述的实施例实现了一种用于包含式高速缓存的基于状态的高速缓存逐出算法,其至少部分地基于较高级高速缓存中的高速缓存行的状态。具体地,与本发明一致的高速缓存逐出算法试图确定高速缓存在包含式高速缓存中而没有高速缓存在任何与其耦合的较高级高速缓存中的高速缓存行。因此,与仍然高速缓存在较高级高速缓存中并且由此假设为仍然被处理器所使用的高速缓存行相比,选择逐出不再存在于较高级高速缓存中并且假设为不为这些高速缓存所服务的处理器所使用的高速缓存行。由此,减小了处理器需要在不久的将来访问逐出的高速缓存行的可能性,从而最小化了高速缓存未命中以及对性能产生影响的可能性。
另外,在许多实现中,由于最小化了与通知较高级高速缓存无效它们的逐出高速缓存行的副本相关联的开销,因此实现了附加的性能好处,因为逐出没有高速缓存在较高级高速缓存中的高速缓存行不需要通知任何较高级高速缓存这种高速缓存行的逐出。特别地,在包含式高速缓存经由例如处理器总线的有限带宽接口耦合到较高级高速缓存的环境中,这种后无效(back-invalidate)业务量的消除减少了处理器总线的使用并且释放带宽用于其它操作。另外,在管线处理器体系结构中,消除后无效业务量也可以最小化由于这些业务量引起的内部处理器管线中断。
与本发明一致的高速缓存逐出算法典型地根据对于较低级高速缓存的包含式高速缓存目录,来确定高速缓存行是否高速缓存在较低级高速缓存中而没有高速缓存在多个较高级高速缓存的任一个中,其中对于较高级高速缓存,高速缓存目录信息附加地存储在高速缓存目录中。正如以下将更详细地讨论的,该确定可以基于维护在较低级高速缓存目录中的状态信息,其中该状态信息表示高速缓存行是否高速缓存在较高级高速缓存中。这种状态信息可以与对于较低级高速缓存中的高速缓存行的状态信息相结合,或者可以独立地进行维护。而且,状态信息可以表示哪个较高级高速缓存具有高速缓存行的有效副本,或者状态信息可以简单地表示耦合到较低级高速缓存的一些较高级高速缓存具有高速缓存行的有效副本,而不确定哪个较高级高速缓存具有该有效副本。例如通过处理器或者通过处理器总线,可以将对于多个较高级高速缓存的状态信息分组在一起,或者可以分别维护对于每个高速缓存的状态信息。状态信息也可以标识较高级高速缓存中的高速缓存行的真实状态,或者可替换地,可以仅仅表示较高级高速缓存具有处于非无效状态的高速缓存行的副本。作为一个例子,对于较低级高速缓存的高速缓存目录可以仅仅需要单个比特,其表示关联的高速缓存行的有效副本是否高速缓存在较高级高速缓存中。但是,应当理解,在其他实施例中,附加的状态信息可以存储在较低级高速缓存目录中。
也正如以下将变得更加清楚的,可以将本发明基于较高级目录中的高速缓存行的状态的高速缓存行逐出结合到各种已知逐出算法中。例如,正如以下将更详细地描述的,可以期望在多路组关联的包含式高速缓存中实现逐出算法,其中首先选择关联组中的空条目,如果不存在空条目则选择高速缓存在包含式高速缓存中但没有高速缓存在任何较高级高速缓存中的高速缓存行的条目,以及最后如果没有找到高速缓存在包含式高速缓存中但没有高速缓存在较高级高速缓存中的高速缓存行,则通过MRU、LRU、随机、循环或者其它传统算法选择条目。另外,可以期望在一些实施例中与确定关联组中的多个条目具有没有高速缓存在较高层高速缓存中的高速缓存行相结合来应用MRU、LRU、随机、循环或者其它技术。
应当理解,只要一个较低级高速缓存耦合到计算机的较高级高速缓存和主存储器的中间,该高速缓存就是相对于包含式较低级高速缓存的“较高级高速缓存”。在以下描述的实施例中,例如,较低级高速缓存是多节点计算机的节点控制器中的L4高速缓存,而较高级高速缓存是设置在与节点控制器耦合的处理器内的L1、L2和L3高速缓存。应当理解,较高级高速缓存和较低级高速缓存可以直接相互耦合,或者经由中间存储器或者高速缓存相互耦合。另外,较高级高速缓存可以专用于特定处理器,或者可以由多个处理器共享。而且,较高级高速缓存可以是多路组相关联或者单路组相关联,本身可以是包含式的或者排他的,并且可以仅仅是数据或者指令高速缓存。对于从该即时公开中受益的本领域技术人员来说,其它变型是显而易见的。
现在回到附图,其中相同的数字在全部若干视图中代表相同的部分,图1描述了表示一个合适环境的多节点计算机50,其中,可以按照与本发明一致的方式实现在此所描述的基于状态的高速缓存逐出算法。计算机50通常表示例如各种多用户计算机中的任意一种,多用户计算机例如网络服务器、中程计算机、大型计算机等等。但是,应当理解,本发明可以在实际上能够利用包括多个高速缓存级的共享存储器体系结构的任何设备中实现,这种设备包括其它计算机和数据处理系统,例如在单用户计算机(如工作站、台式计算机、便携式计算机等等)或者在其它可编程电子器件(例如并入嵌入式控制器等等)中实现。可编程电子器件如机顶盒、游戏机等等。
实现为多节点计算机的计算机50包括多个节点52,每个节点通常包括一个或者多个处理器54,每个处理器包括一个或者多个高速缓存55,并且耦合到一个或者多个系统或者处理器总线56。将芯片组高速缓存59、处理器总线接口60以及存储器接口62相结合的芯片组58也耦合到每个处理器总线24,存储器接口62通过存储器总线66连接到存储器子系统64。存储器子系统通常包括多个存储设备,例如DRAM 68,其为每个节点52提供主存储器。
为了与外设和其它外部设备连接,芯片组58还包括输入/输出接口70,提供到I/O子系统72的连接。而且,为了提供节点间连接,在每个节点中提供了节点间接口,例如可扩展端口接口74,以经由通信链路75耦合到一个或者多个其它节点52。芯片组58通常还包括驻留在其中的多个缓存器,例如中央缓存器77,以及分别设置在处理器总线接口60和可扩展端口接口74中的一个或者多个专用缓存器61、75。芯片组58还包括在此称为一致性单元76的控制逻辑,以管理对以下存储器请求的处理,该请求由处理器54和/或者远程节点52通过可扩展端口互联75提供给芯片组。
应当理解,在芯片组58中,可以支持任何给定类型的多端口或者接口。正如图1所示,例如,可以期望在每个节点中支持多个处理器总线(或者总线分段),这可能会需要获得由一个处理器总线上的处理器所请求的数据的来源,而这通过传送来自另一个处理器总线上处理器的数据来实现。而且,由芯片组58支持的各种接口可以实现任意数目的已知协议。例如,芯片组58可以与来自英特尔公司的用于处理器的Xeon行的处理器总线协议相兼容。但是,应当理解,本发明的原理可应用到其它计算机实现中,包括其它多节点设计、单节点设计、以及利用多级存储器系统的其它设计。
可以使用一个或者多个集成电路器件来实现芯片组58,并且芯片组58可以用来与附加的电子部件连接,这些部件例如图形控制器、声卡、固件、服务处理器等等。因此,应当理解,术语“芯片组”可以描述实现在此所描述的功能的单个集成电路芯片,并且甚至可以整体上或者部分地集成到例如处理器芯片的另一个电子部件中。
计算机50,或者其中部件的任何子集,此后可以被称为“装置”。应当意识到,术语“装置”可以被认为包括了例如计算机和其它电子器件的各种数据处理系统以及这些系统内的各种部件,包括单独的集成电路器件或者它们的组合。而且,在装置内,可以包括一个或者多个逻辑电路,它们将各个布置连接成电路,这些布置通常实现在一个或者多个集成电路器件上,并且可选地包括与其连接的附加分立部件。
还应当意识到,通常至少部分地使用在此被称为硬件定义程序的一个或者多个计算机数据文件来设计和制造电路布置,其中硬件定义程序定义了在集成电路器件上电路布置的布图设计。通常通过设计工具以已知的方式生成程序,并且随后在制造期间加以使用来创建布图设计掩模,掩模定义了应用到半导体晶片上的电路布置。通常,使用硬件定义语言(HDL)(例如VHDL、Verilog、EDIF等等)以预定格式提供程序。这样,虽然在以充分实现了功能的集成电路器件来实现的电路布置的上下文中已经对本发明并且随后还将对本发明进行描述,但是,本领域技术人员应当理解,与本发明一致的电路布置能够作为程序产品以各种形式来分发,并且本发明可以等效地来应用,而不管用来实际执行该分发的计算机可读介质的特定类型。计算机可读介质的例子包括但不局限于:有形的可记录类型介质,例如,易失和非易失存储设备、软盘、硬盘驱动器、CD-ROM和DVD等等,以及传输类型介质,例如数字和模拟通信链路。
图2描述了在计算机50上多个节点52之一的示例性高速缓存体系结构。在该体系结构中,四个处理器芯片54(也被表示为处理器0-3)经由一对处理器总线56(也被表示为处理器总线A和B)耦合到芯片组。处理器0和1耦合到处理器总线A,而处理器2和3耦合到处理器总线B。
另外,在该示例性体系结构中,提供了四级高速缓存,L1、L2和L3高速缓存55A、55B和55C设置在每个处理器芯片54中,以及芯片组高速缓存59被实现为L4高速缓存。L1高速缓存55A被实现为分立的指令和数据高速缓存,而L2和L3高速缓存55B和55C高速缓存指令和数据两者。
L4高速缓存59包括高速缓存目录80和数据组82,它们可能设置在同一集成电路中或者可能不设置在同一集成电路中。L4高速缓存被实现为包含式4路组相关联高速缓存,包括N个关联组0到N-1,在目录80中的每个关联组84包括分别与四个关联类0、1、2和3相关联的四个条目86、88、90和92。在目录80中的每个条目86-92包括:标签字段94,其存储当前高速缓存的高速缓存行的标签;以及状态字段96,其例如使用MESI协议或者现有技术中已知的其它状态协议存储当前高速缓存的高速缓存行的状态。每个条目86-92在数据组82中具有相关联的存储区(slot)98,其中存储对于每个高速缓存的高速缓存行的数据。
在每个条目86-92中的状态字段96存储对于L4高速缓存和较高级L1-L3高速缓存55A、55B和55C两者的状态信息。在所描述的实施例中,对于较高级高速缓存的状态信息是基于通过处理器总线基础的处理器总线,并且此外,用于每个处理器总线以及L4高速缓存的状态信息被编码成单个字段。例如,在与发明一致的一个实施例中,用于L4高速缓存、处理器总线A(PBA)高速缓存以及处理器总线B(PBB)高速缓存的状态信息被编码成5比特字段,正如以下表1所显示的那样。此外,在所描述的实施例中,每当处理器修改了它的高速缓存行的副本,处理器并不会通知L4高速缓存,这样L4高速缓存就不能区分对于每个处理器总线的“排他的”或者“修改的”状态。在另一个实施例中,处理器可以通知L4高速缓存从“排他的”状态变化到“修改的”状态,使得L4高速缓存将更新对于高速缓存行的合适PBA或者PBB。
表1实例状态编码
编码 | L4状态 | PBA状态 | PBB状态 |
b10000 | I | I | I |
b00000 | S | I | I |
b00001 | S | S | I |
b00010 | S | I | S |
b00011 | S | S | S |
b00100 | E | I | I |
b00101 | E | S | I |
b00110 | E | I | S |
b00111 | E | S | S |
b01000 | E | E | I |
b01001 | E | I | E |
b01010 | M | I | I |
b01011 | M | S | I |
b01100 | M | I | S |
b01101 | M | S | S |
b01110 | M | E | I |
B01111 | M | I | E |
本领域的一个普通技术人员应该理解,可以使用其它状态协议,正如其它映射和编码那样。此外,可以在逐个处理器基础上划分状态信息,或者状态信息可以简单地表示任何处理器是否具有高速缓存行的有效副本。从该即时公开中受益的本领域的一个技术人员将可以理解存储表示较高级高速缓存是否具有高速缓存行的有效副本的状态信息的其它变型。
图3接下来描述了高速缓存行填充请求处理例程100,其在计算机50的L4高速缓存59的控制逻辑中实现基于状态的高速缓存逐出算法。具体地,块102描述了接收到来自耦合到芯片组58的处理器54之一的输入的高速缓存行填充请求。接下来,块104确定所请求的高速缓存行是否在L4高速缓存中,以及L4 MESI状态是否为除无效之外的任何状态(即,高速缓存命中)。如果是,控制进行到块106,以便通过访问来自L4高速缓存的数据并且将数据返回请求的处理器来处理该请求。另外,在该示例性实施例中假设:在以下情况下高速缓存执行LRU算法,即没有在关联组中找到未使用的高速缓存行的条目,或者如果所有条目当前正在使用,则在关联组中没有找到在L4高速缓存中高速缓存但没有在较高级高速缓存中高速缓存的条目。同样地,块106也更新存储在L4高速缓存目录中的LRU信息。则完成了高速缓存行请求的处理。
返回到块104,如果没有发生高速缓存命中,则必须从替换源(例如节点存储器、远程节点等等)中提取数据。另外,必须在L4高速缓存中分配用于新高速缓存行的空间。如此,控制进行到块108,以便例如通过确定关联组中的任何条目是否具有无效的状态,来确定关联组中是否存在所请求的高速缓存行的可利用或者未使用的条目。如果是,则控制进行到块110,以便从节点存储器或者远程节点(当合适时)访问所请求的数据。一旦取回了数据,则数据就被写入到空的条目,同时相应更新该条目的MESI状态和LRU信息。则完成了高速缓存行请求的处理。
返回到块108,如果没有找到可利用的条目,控制进行到块112,以便例如通过确定对于所有处理器总线任何条目是否具有无效状态,来确定关联组中所请求的高速缓存行的条目是否与当前没有在较高级高速缓存中高速缓存的高速缓存行相关联。如果是,控制进行到块114,以便从节点存储器或者远程节点(当合适时)访问所请求的数据。一旦取回了数据,则移走所确定的条目中现有的数据,并且利用取回的数据代替它,同时相应更新对于该条目的MESI状态和LRU信息。则完成了高速缓存行请求的处理。
返回到块112,如果没有找到与没有在较高级高速缓存中高速缓存的高速缓存行相关联的条目,则控制进行到块116,以根据替代的算法(例如前述LRU算法)选择条目。如此,块116从节点存储器或者远程节点(当合适时)访问所请求的数据,并且根据替代的算法(例如最近最少使用的条目)选择条目。另外,将无效请求发送到对于与所选择条目相关联的高速缓存行相关的一个处理器总线或者多个处理器总线,移走选择条目中现有的数据,并且利用取回的数据代替它,同时相应更新对于该条目的MESI状态和LRU信息。则完成了高速缓存行请求的处理。
应当理解,可替代地,其它的逻辑可以在例程100中实现。例如在块108找到多个可利用的条目或者在块112中找到与没有高速缓存在较高级高速缓存中的高速缓存行相关联的多个条目的情况下,可以使用与在块116中所使用的相同或者不同的替代算法来从多个条目中进行选择。
通过描述经由例程100中实现的逻辑来处理一系列高速缓存行请求的结果,图4-9提供了在计算机50中实现的基于状态的高速缓存逐出算法的作的另一个示意图。具体地,图4描述了存储在L4高速缓存目录80中的一组四个关联组84,具有存储在每个关联类条目86、88、90和92中的示例性标签和状态信息94、96。在图4中,假设标识为A0-A3、B0-B3、C0-C3和D0-D3的高速缓存行存储在以下高速缓存中,这些高速缓存在每个条目86-92中具有标识相关高速缓存行的关联标签信息,并且对于每个条目具有标识在L4高速缓存、处理器总线A处理器和处理器总线B处理器的每一个中的高速缓存行状态的MESI状态信息。明显地,在关联组0的类2中的高速缓存行C0被显示为无效的,而其余条目被显示为具有有效高速缓存行。图4也描述了在相关联的较高级高速缓存55中每个高速缓存行的本地MESI状态。
图5描述了对来自处理器总线B上处理器的对地址120的高速缓存行请求的处理,该地址具有标识高速缓存行D0的标签部分122、标识关联组0的索引部分和表示所请求的高速缓存行中地址偏移的偏移部分126。明显地,因为与关联组0的类3中的高速缓存行D0一起高速缓存了地址120,所以例程100(图3)在块104中将检测到高速缓存命中,以及正如上述结合块106所描述的那样处理该请求,通过处理器总线B将所请求的高速缓存行返回到请求的处理器,并更新对于高速缓存行D0的状态信息,以表示在处理器总线B上的处理器现在具有处于排他状态的高速缓存行。
图6接下来描述了对来自处理器总线A上处理器的对地址128的高速缓存行请求的处理,该地址具有标识高速缓存行E0的标签部分122以及标识关联组0的索引部分。明显地,因为当前没有对高速缓存行E0进行高速缓存(即高速缓存行E0的标签信息与关联组0中的任何条目86-92的标签信息不相匹配),所以例程100(图3)在块104中将检测到高速缓存未命中。此外,因为在关联组0中的其中一个条目(条目90)表示所有状态是无效的,所以块108将确定存在可利用的条目,并且正如上述结合块110描述的那样处理该请求,通过处理器总线A将所请求的高速缓存行返回到请求的处理器,并在条目90中写入高速缓存行E0的标签和状态信息,以表示在处理器总线A上的处理器现在具有处于排他状态的高速缓存行。
图7接下来描述了对来自处理器总线B上处理器的对地址130的高速缓存行请求的处理,该地址具有标识高速缓存行F3的标签部分122以及标识关联组3的索引部分。明显地,因为目前没有对高速缓存行F3进行高速缓存(即高速缓存行F3的标签信息与关联组3中的任何条目86-92的标签信息不相匹配),所以例程100(图3)在块104中将检测到高速缓存未命中。此外,因为在关联组3中没有条目表示所有状态是无效的,所以块108将确定不存在可利用的条目。此外,因为在关联组3的关联类0中的条目86表示没有在任何处理器中对高速缓存行A3进行高速缓存(因为对于每个处理器总线的状态是无效的),所以块112将确定存在对于没有在较高级高速缓存中高速缓存的高速缓存行的条目,并且正如上述结合块114描述的那样处理该请求,通过处理器总线B将所请求的高速缓存行返回到请求的处理器,并将对于高速缓存行F3的标签和状态信息写入到条目86,以表示处理器总线B上的处理器现在具有处于排他状态的高速缓存行。明显地,因为没有在任何处理器中对高速缓存行A3进行高速缓存,所以不需要将无效请求发送给任何处理器总线,如果另外要求,则选择关联组中另一个高速缓存行来代替。
图8接下来描述了对来自处理器总线A上处理器的对地址132的高速缓存行请求的处理,该地址具有标识高速缓存行G1的标签部分122以及标识关联组1的索引部分。明显地,因为当前没有对高速缓存行G1进行高速缓存(即高速缓存行G1的标签信息与关联组1中的任何条目86-92的标签信息不相匹配),所以例程100(图3)在块104中将检测到高速缓存未命中。此外,因为在关联组1中没有条目表示所有状态是无效的,所以块108将确定不存在可利用的条目。此外,因为在关联组1没有条目与没有在任何处理器中高速缓存的高速缓存行相关联(因为对于每个条目的状态具有对于处理器总线之一的至少一个非无效状态),所以块112将确定不存在对于没有在较高级高速缓存中高速缓存的高速缓存行的条目,并且正如上述结合块116描述的那样处理该请求。假设例如条目88是关联组1中最近最少使用的条目,则块116可以选择该条目来代替,通过处理器总线A将所请求的高速缓存行返回到请求的处理器,并将对于高速缓存行G1的标签和状态信息写入到条目88,以表示处理器总线A上的处理器现在具有处于排他状态的高速缓存行。另外,块116将通过处理器总线B发送无效请求,以无效对于处理器3在高速缓存中的高速缓存行B1的副本(见图4)。
图9接下来描述了对来自处理器总线A上处理器的对地址134的高速缓存行请求的处理,该地址具有标识高速缓存行H2的标签部分122以及标识关联组2的索引部分。明显地,因为当前没有对高速缓存行H2进行高速缓存(即高速缓存行H2的标签信息与关联组2中的任何条目86-92的标签信息不相匹配),所以例程100(图3)在块104中将检测到高速缓存未命中。此外,因为在关联组2中没有条目表示所有状态是无效的,所以块108将确定不存在可利用的条目。此外,因为在关联组2的关联类0和1中的条目86和88表示没有在任何处理器中对高速缓存行A2和B2进行高速缓存(因为对于每个处理器总线的状态是无效的),所以块112将确定存在对于没有在较高级高速缓存中高速缓存的高速缓存行的条目,并且正如上述结合块114描述的那样处理该请求。此外,因为多个条目与该标准匹配,所以在块114中,将使用替代算法(例如LRU、MRU、随机、循环等等)从多个条目中进行选择。例如,可以期望在相匹配的条目中简单地选择最低关联类,在这种情况下为关联类0。这样,在该实例中,块114将通过处理器总线A将所请求的高速缓存行返回到请求的处理器,并将对于高速缓存行H2的标签和状态信息写入到条目86,以表示处理器总线A上的处理器现在具有处于排他状态的高速缓存行。明显地,因为没有在任何处理器中对高速缓存行A2进行高速缓存,所以不需要将无效请求发送给任何处理器总线。
应当理解,可以对与本发明一致的所描述的实施例做出各种修改。也应当理解,在设置在芯片组或者其它合适的集成电路器件的逻辑电路内实现上述功能将适当地在从该即时公开中受益的本领域普通技术人员的能力之内。
Claims (21)
1.一种电路布置,包括:
多个处理器,每个处理器包括至少一个较高级高速缓存;以及
包含式多路组关联的较低级高速缓存,耦合到所述多个处理器,所述较低级高速缓存包括高速缓存目录,所述高速缓存目录包括对于多个高速缓存行的高速缓存目录信息,其中所述多个高速缓存行当前高速缓存在所述较低级高速缓存和多个处理器中的任何一个中,所述较低级高速缓存被配置为:响应于对所请求的高速缓存行的高速缓存未命中,基于对一个高速缓存行高速缓存在所述较低级高速缓存中而没有高速缓存在所述多个处理器的任何一个中的确定,从所述较低级高速缓存中有选择地逐出该高速缓存行。
2.一种电路布置,包括:
包含式高速缓存目录,与较低级高速缓存相关联,并且被配置为存储对于所述较低级高速缓存和多个较高级高速缓存的高速缓存目录信息;以及
控制逻辑,耦合到所述包含式高速缓存目录,并且被配置为基于对一个高速缓存行高速缓存在所述较低级高速缓存中而没有高速缓存在所述多个较高级高速缓存的任何一个中的确定,从所述较低级高速缓存中有选择地逐出该高速缓存行。
3.根据权利要求2的电路布置,其中,所述较低级高速缓存设置在多节点数据处理系统的节点控制器中,并且其中所述多个较高级高速缓存设置在耦合到所述节点控制器的多个处理器中。
4.根据权利要求3的电路布置,其中,所述较低级高速缓存是第四级高速缓存,并且其中所述多个较高级高速缓存包括设置在耦合到所述节点控制器的所述多个处理器的每个处理器中的至少一个第一、第二和第三级高速缓存。
5.根据权利要求2的电路布置,还包括对于所述较低级高速缓存的高速缓存存储器。
6.根据权利要求2的电路布置,其中,所述控制逻辑被配置为响应于对于在所述较低级高速缓存上未命中的另一高速缓存行的请求,有选择地逐出所述高速缓存行。
7.根据权利要求6的电路布置,其中,所述包含式高速缓存目录包括多路组关联的高速缓存目录,其中,所述另一高速缓存行在与所述逐出的高速缓存行相同的关联组中,并且其中所述控制逻辑被配置为仅仅在确定对于所述关联组不存在空的关联类之后,有选择地逐出所述高速缓存行。
8.根据权利要求7的电路布置,其中,所述控制逻辑进一步被配置为响应于在所述关联组中没有关联类存储如下高速缓存行的确定而应用高速缓存替代算法,所述高速缓存行高速缓存在所述较低级高速缓存中但没有高速缓存在所述多个较高级高速缓存的任何一个中。
9.根据权利要求8的电路布置,其中,从由最近最少使用、最近最多使用、随机和循环组成的组中选择所述高速缓存替代算法。
10.一种集成电路器件,包括权利要求2的所述电路布置。
11.一种芯片组,包括权利要求2的所述电路布置。
12.一种数据处理系统,包括:
多个处理器;以及
节点控制器,耦合到所述多个处理器,并且包括权利要求2的所述电路布置,其中,所述多个较高级高速缓存设置在所述多个处理器中。
13.根据权利要求12的数据处理系统,其中,所述多个处理器和所述节点控制器设置在所述数据处理系统的多个节点当中的第一节点中。
14.一种程序产品,包括定义权利要求2的所述电路布置的硬件定义程序,以及载有所述硬件定义程序的计算机可读介质。
15.一种从高速缓存中逐出高速缓存行的方法,该方法包括:
从对于较低级高速缓存的包含式高速缓存目录中确定高速缓存行是否高速缓存在所述较低级高速缓存中但是没有高速缓存在多个较高级高速缓存的任何一个中,其中对于所述较高级高速缓存的高速缓存目录信息附加地存储在所述高速缓存目录中;以及
基于对所述高速缓存行高速缓存在所述较低级高速缓存中而没有高速缓存在所述多个较高级高速缓存的任何一个中的确定,从所述较低级高速缓存中逐出该高速缓存行。
16.根据权利要求15的方法,其中,所述较低级高速缓存设置在多节点数据处理系统的节点控制器中,并且其中所述多个较高级高速缓存设置在耦合到所述节点控制器的多个处理器中。
17.根据权利要求16的方法,其中,所述较低级高速缓存是第四级高速缓存,并且其中所述多个较高级高速缓存包括设置在耦合到所述节点控制器的所述多个处理器的每个处理器中的至少一个第一、第二和第三级高速缓存。
18.根据权利要求15的方法,其中,响应于对于在所述较低级高速缓存上未命中的另一高速缓存行的请求,执行确定和逐出。
19.根据权利要求18的方法,其中,所述包含式高速缓存目录包括多路组关联的高速缓存目录,其中,所述另一高速缓存行在与所述逐出的高速缓存行相同的关联组中,并且其中仅仅在确定对于所述关联组不存在空的关联类之后,执行逐出所述高速缓存行。
20.根据权利要求19的方法,还包括响应于在所述关联组中没有关联类存储如下高速缓存行而应用高速缓存替代算法,所述高速缓存行高速缓存在所述较低级高速缓存中但没有高速缓存在所述多个较高级高速缓存的任何一个中。
21.根据权利要求20的方法,其中,从由最近最少使用、最近最多使用、随机和循环组成的组中选择所述高速缓存替代算法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/239,616 US20070073974A1 (en) | 2005-09-29 | 2005-09-29 | Eviction algorithm for inclusive lower level cache based upon state of higher level cache |
US11/239,616 | 2005-09-29 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1940892A true CN1940892A (zh) | 2007-04-04 |
Family
ID=37895548
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006100959790A Pending CN1940892A (zh) | 2005-09-29 | 2006-06-29 | 逐出高速缓存的行的电路布置、数据处理系统和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20070073974A1 (zh) |
CN (1) | CN1940892A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103870400A (zh) * | 2014-03-06 | 2014-06-18 | 华为技术有限公司 | 一种超级电容的电压调节方法、装置及系统 |
CN103885890A (zh) * | 2012-12-21 | 2014-06-25 | 华为技术有限公司 | 高速缓冲存储器cache中cache块的替换处理方法和装置 |
WO2018161272A1 (zh) * | 2017-03-08 | 2018-09-13 | 华为技术有限公司 | 一种缓存替换方法,装置和系统 |
CN109478164A (zh) * | 2016-07-14 | 2019-03-15 | 超威半导体公司 | 用于存储用于高速缓存条目传输的高速缓存位置信息的系统和方法 |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8253751B2 (en) * | 2005-06-30 | 2012-08-28 | Intel Corporation | Memory controller interface for micro-tiled memory access |
US7577793B2 (en) * | 2006-01-19 | 2009-08-18 | International Business Machines Corporation | Patrol snooping for higher level cache eviction candidate identification |
US7552288B2 (en) * | 2006-08-14 | 2009-06-23 | Intel Corporation | Selectively inclusive cache architecture |
US8074027B2 (en) * | 2006-12-04 | 2011-12-06 | Microsoft Corporation | Multi-level read caching for multiplexed transactional logging |
US8878860B2 (en) * | 2006-12-28 | 2014-11-04 | Intel Corporation | Accessing memory using multi-tiling |
US20090320036A1 (en) * | 2008-06-19 | 2009-12-24 | Joan Marie Ries | File System Object Node Management |
US8327072B2 (en) * | 2008-07-23 | 2012-12-04 | International Business Machines Corporation | Victim cache replacement |
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 |
US8225045B2 (en) * | 2008-12-16 | 2012-07-17 | International Business Machines Corporation | Lateral cache-to-cache cast-in |
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 |
US8489819B2 (en) | 2008-12-19 | 2013-07-16 | International Business Machines Corporation | Victim cache lateral castout targeting |
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 |
US8327073B2 (en) * | 2009-04-09 | 2012-12-04 | International Business Machines Corporation | Empirically based dynamic control of acceptance of victim cache lateral castouts |
US8347036B2 (en) * | 2009-04-09 | 2013-01-01 | International Business Machines Corporation | Empirically based dynamic control of transmission of victim cache lateral castouts |
US8312220B2 (en) * | 2009-04-09 | 2012-11-13 | International Business Machines Corporation | Mode-based castout destination selection |
US9189403B2 (en) | 2009-12-30 | 2015-11-17 | International Business Machines Corporation | Selective cache-to-cache lateral castouts |
US8407420B2 (en) * | 2010-06-23 | 2013-03-26 | International Business Machines Corporation | System, apparatus and method utilizing early access to shared cache pipeline for latency reduction |
US9378148B2 (en) | 2013-03-15 | 2016-06-28 | Intel Corporation | Adaptive hierarchical cache policy in a microprocessor |
US20140289468A1 (en) * | 2013-03-25 | 2014-09-25 | International Business Machines Corporation | Lightweight primary cache replacement scheme using associated cache |
US9479579B2 (en) * | 2013-06-03 | 2016-10-25 | Tencent Technology (Shenzhen) Company Limited | Grouping processing method and system |
US20160055100A1 (en) * | 2014-08-19 | 2016-02-25 | Advanced Micro Devices, Inc. | System and method for reverse inclusion in multilevel cache hierarchy |
US9866498B2 (en) * | 2014-12-23 | 2018-01-09 | Intel Corporation | Technologies for network packet cache management |
US10628313B2 (en) * | 2017-05-26 | 2020-04-21 | International Business Machines Corporation | Dual clusters of fully connected integrated circuit multiprocessors with shared high-level cache |
US10528482B2 (en) * | 2018-06-04 | 2020-01-07 | International Business Machines Corporation | Cache management |
EP4006734B1 (en) * | 2020-11-25 | 2024-05-08 | ARM Limited | Methods and apparatus for transferring data within hierarchical cache circuitry |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6023747A (en) * | 1997-12-17 | 2000-02-08 | International Business Machines Corporation | Method and system for handling conflicts between cache operation requests in a data processing system |
US6347363B1 (en) * | 1998-02-17 | 2002-02-12 | International Business Machines Corporation | Merged vertical cache controller mechanism with combined cache controller and snoop queries for in-line caches |
US6981096B1 (en) * | 1998-10-02 | 2005-12-27 | International Business Machines Corporation | Mapping and logic for combining L1 and L2 directories and/or arrays |
US6408362B1 (en) * | 1999-06-24 | 2002-06-18 | International Business Machines Corporation | Data processing system, cache, and method that select a castout victim in response to the latencies of memory copies of cached data |
US6587930B1 (en) * | 1999-09-23 | 2003-07-01 | International Business Machines Corporation | Method and system for implementing remstat protocol under inclusion and non-inclusion of L1 data in L2 cache to prevent read-read deadlock |
US6467030B1 (en) * | 1999-11-09 | 2002-10-15 | International Business Machines Corporation | Method and apparatus for forwarding data in a hierarchial cache memory architecture |
US6976131B2 (en) * | 2002-08-23 | 2005-12-13 | Intel Corporation | Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system |
US20050015555A1 (en) * | 2003-07-16 | 2005-01-20 | Wilkerson Christopher B. | Method and apparatus for replacement candidate prediction and correlated prefetching |
US7558920B2 (en) * | 2004-06-30 | 2009-07-07 | Intel Corporation | Apparatus and method for partitioning a shared cache of a chip multi-processor |
US20070186045A1 (en) * | 2004-07-23 | 2007-08-09 | Shannon Christopher J | Cache eviction technique for inclusive cache systems |
US20070083715A1 (en) * | 2005-09-13 | 2007-04-12 | International Business Machines Corporation | Early return indication for return data prior to receiving all responses in shared memory architecture |
US7536514B2 (en) * | 2005-09-13 | 2009-05-19 | International Business Machines Corporation | Early return indication for read exclusive requests in shared memory architecture |
-
2005
- 2005-09-29 US US11/239,616 patent/US20070073974A1/en not_active Abandoned
-
2006
- 2006-06-29 CN CNA2006100959790A patent/CN1940892A/zh active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103885890A (zh) * | 2012-12-21 | 2014-06-25 | 华为技术有限公司 | 高速缓冲存储器cache中cache块的替换处理方法和装置 |
CN103885890B (zh) * | 2012-12-21 | 2017-04-12 | 华为技术有限公司 | 高速缓冲存储器cache中cache块的替换处理方法和装置 |
CN103870400A (zh) * | 2014-03-06 | 2014-06-18 | 华为技术有限公司 | 一种超级电容的电压调节方法、装置及系统 |
CN109478164A (zh) * | 2016-07-14 | 2019-03-15 | 超威半导体公司 | 用于存储用于高速缓存条目传输的高速缓存位置信息的系统和方法 |
CN109478164B (zh) * | 2016-07-14 | 2024-04-16 | 超威半导体公司 | 用于存储用于高速缓存条目传输的高速缓存位置信息的系统和方法 |
US12026099B2 (en) | 2016-07-14 | 2024-07-02 | Advanced Micro Devices, Inc. | System and method for storing cache location information for cache entry transfer |
WO2018161272A1 (zh) * | 2017-03-08 | 2018-09-13 | 华为技术有限公司 | 一种缓存替换方法,装置和系统 |
CN109074320A (zh) * | 2017-03-08 | 2018-12-21 | 华为技术有限公司 | 一种缓存替换方法,装置和系统 |
CN109074320B (zh) * | 2017-03-08 | 2023-11-17 | 华为技术有限公司 | 一种缓存替换方法,装置和系统 |
Also Published As
Publication number | Publication date |
---|---|
US20070073974A1 (en) | 2007-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1940892A (zh) | 逐出高速缓存的行的电路布置、数据处理系统和方法 | |
CN100476760C (zh) | 用于分级高速缓存行替换的方法、系统及装置 | |
US8412907B1 (en) | System, method and computer program product for application-level cache-mapping awareness and reallocation | |
US7552286B2 (en) | Performance of a cache by detecting cache lines that have been reused | |
CN1126046C (zh) | 包括多层次分级存储器体系的数据处理系统的高速缓存相关性协议 | |
US20100325374A1 (en) | Dynamically configuring memory interleaving for locality and performance isolation | |
US7711902B2 (en) | Area effective cache with pseudo associative memory | |
US7266647B2 (en) | List based method and apparatus for selective and rapid cache flushes | |
US9152569B2 (en) | Non-uniform cache architecture (NUCA) | |
US7277992B2 (en) | Cache eviction technique for reducing cache eviction traffic | |
KR102157354B1 (ko) | 효율적으로 압축된 캐시 라인의 저장 및 처리를 위한 시스템 및 방법 | |
KR100978156B1 (ko) | 스누프 필터에서의 실효를 감소시키기 위한 라인 스와핑 스킴을 위한 방법, 장치, 시스템 및 컴퓨터 판독 가능 기록 매체 | |
CN111602377B (zh) | 高速缓存中资源调整方法、数据访问方法及装置 | |
US20120215988A1 (en) | Administering Non-Cacheable Memory Load Instructions | |
US8185692B2 (en) | Unified cache structure that facilitates accessing translation table entries | |
CN1156771C (zh) | 用于在非均匀存储器存取计算机系统内提供逐出协议的方法和系统 | |
US20120102273A1 (en) | Memory agent to access memory blade as part of the cache coherency domain | |
TW201140319A (en) | Replacing cache lines in a cache memory | |
US7287122B2 (en) | Data replication in multiprocessor NUCA systems to reduce horizontal cache thrashing | |
CN1320464C (zh) | 用于维持共享高速缓存一致性的方法和设备 | |
US20060123196A1 (en) | System, method and computer program product for application-level cache-mapping awareness and reallocation requests | |
US8694732B2 (en) | Enhanced coherency tracking with implementation of region victim hash for region coherence arrays | |
US8473686B2 (en) | Computer cache system with stratified replacement | |
US9251070B2 (en) | Methods and apparatus for multi-level cache hierarchies | |
US12093177B2 (en) | Multi-level partitioned snoop filter |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20070404 |
|
C20 | Patent right or utility model deemed to be abandoned or is abandoned |