CN101464840B - 用于管理数据处理***中的缓存的装置和方法 - Google Patents
用于管理数据处理***中的缓存的装置和方法 Download PDFInfo
- Publication number
- CN101464840B CN101464840B CN2008101768291A CN200810176829A CN101464840B CN 101464840 B CN101464840 B CN 101464840B CN 2008101768291 A CN2008101768291 A CN 2008101768291A CN 200810176829 A CN200810176829 A CN 200810176829A CN 101464840 B CN101464840 B CN 101464840B
- Authority
- CN
- China
- Prior art keywords
- cache lines
- coherency state
- buffer memory
- data block
- under
- 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
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/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
- G06F12/127—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
-
- 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/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- 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/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
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
公开了用于管理数据处理***中的缓存操作的处理器和方法,该***具有***存储器和多个处理单元(PU)。第一PU确定必须用第一数据块替换的该第一PU的第一缓存中的多个缓存行中的一个缓存行,并且确定该第一数据块是否是来自该多个PU中的另一个的全相联缓存行。如果该第一数据块不是来自该多个PU中的另一个的全相联缓存行,该第一缓存不包含处于一致性状态无效中的缓存行,并且该第一缓存包含处于一致性状态已移动中的缓存行,则该第一PU选择处于一致性状态已移动中的缓存行,在所选择的缓存行中存储该第一数据块,并且更新该第一数据块的一致性状态。
Description
技术领域
本发明一般地涉及计算机网络和并行处理领域,更具体地讲,涉及用于改进多处理器环境中的缓存行替换选择的***和方法。
背景技术
现代电子设备通常包括多个处理器,有时将每个均称作处理单元(PU),该每个单元包括核逻辑(core logic)(“核”)、一级(L1)缓存,以及二级(L2)缓存。典型地,每个核仅可访问其自身专用的L2缓存,而通常不能访问邻近PU的L2缓存。
本领域的技术人员应该理解,在许多情形中,核没有最大可能程度地使用其专用L2缓存。例如,当核执行仅略微地使用L2缓存的代码或者执行来自锁定缓存方式的代码时、当核掉电或者处于休眠模式时,或者例如当响应于检测到的制造缺陷而已将核禁止(disable)时,都可能发生这种情形。这些例子只是核未充分利用其专用L2缓存中的许多普通情形中的一个实例。
依据该未充分的利用,已经有多种尝试来改进缓存性能,包括一个或多个PU相互间共享其缓存的某些级的一些***。每种当前方法忍受一个或多个缺点。通常,一组解决方案聚焦于掷出(castout)处理(handling),在该掷出处理中,一般为了给进入的缓存块腾出空间,把进入的缓存块存储在所选择逐出的缓存行当前占用的缓存位置中,PU选择该缓存行以将其“掷出”其缓存。
例如,一个简单的解决方案是将所有的缓存行逐出(evict)或者“掷出”至存储器。即,最简单的解决方案是当逐出这些缓存行时,将掷出的缓存行回写(write back)到存储器。随后通过一致性总线(coherent bus)将这些逐出的行取回(retrieve)至所有L2缓存(以及其相关的PU)所附连处。然而,这种方法忍受明显的缺点,即总是将所有的行掷出至存储器是低效率的且阻碍了性能。而且,当另一个缓存未充分利用时,该方法不能够使一个核共享该另一个核的缓存。另外,当缓存的核在休眠模式中掉电或由于核制造缺陷 而被无效时(deactivate)时,该方法不允许使用该缓存。
另一传统的方法提供了用于每个L2缓存的专用的全相联缓存(victimcache)。在此方法中,将逐出的行掷出至全相联的缓存,并且将该全相联的缓存典型地配置为在缓存缺失时仅仅容纳从L2缓存逐出的缓存行。然而该方法增加了额外的缓存和支持的硬件,这比L2缓存本身耗费了更大的面积和功率。另外,典型的全相联缓存一般地为每个同余类(congruence class)分配仅仅一个或两个行空间。与标准的缓存中六到八个行相比较,其因此仅仅提供了有限的解决方案。
在另一方法中,下文中称作在先方法,PU耦合到公共L3缓存,并且L3缓存预选择三个相邻的L2缓存中的一个用作临时代用(makeshift)全相联缓存。一旦L3缓存选择该全相联缓存,则L3缓存与该全相联缓存经由专用通信来执行请求/准许同步交换(request/grant handshake),随后在耦合L3和L2缓存的数据总线上仅仅传输数据。
在先方法忍受这样的缺点,即它缺乏用于跟踪缓存行是否先前已被移动的机制。同样,在先***中被逐出的行可以从缓存到缓存无限地循环,其可导致不必要的带宽成本和妨碍***性能。此外,在先全相联缓存、逐出的目标缓存必须接受进入的缓存行,这可能需要该全相联缓存逐出否则原来保存在该缓存中的缓存行。同样,在先方法可以牺牲另一个缓存为代价来增强一个缓存的性能。
在另一方法中,下文中称为Garg方法,其由美国专利号7076609所图解,核共享两个L2缓存,跨越L2缓存均等地划分结合性(associativity)。例如,该PU共享诸如用于L2缺失检测和处理之类的组合替换控制。具体地讲,取决于当时的替换策略,响应于L2缓存缺失,Garg方法将从存储器中取回的新的行分配到L2的任何一个。而且,响应于L1缺失,Garg方法同时检索两个L2缓存。
同样,Garg方法提供了具有广泛结合性的共享的、多组(multi-bank)二级缓存。因此,Garg方法也忍受单一共享缓存的缺陷。具体地讲,Garg行替换方法必须检索多个L2缓存,这增加了检索时间。而且,因为Garg在L2缓存上扩展的结合性,不仅在本地L2缓存缺失的情况下,只要必须检索任何一个L2缓存时,就必须检索每个Garg L2缓存。另外,因为没有Garg缓存包含所有的用于特定同余类的结合性,因此放置在一个L2缓存中的缓存替换 将仍然在未包含该缓存行的本地L2中缺失,这通常出现在传统的***中。
因此,存在用于多处理器环境中的缓存行替换选择的***和/或方法的需要,其至少解决一些与传统***和方法相关的问题和缺点。
发明内容
提供以下概述以便于理解公开实施例特有的一些创新特征,其不旨在完全的描述。通过总体地考虑整个说明书、权利要求书、附图和摘要可获得对实施例的各个方面的完全理解。
因此,本发明的一个方面是提供改进的缓存行替换方法。
本发明的另一方面是提供改进的缓存行替换***。
本发明的另一方面是提供用于在多处理器环境中的缓存行替换的改进***。
本发明的另一方面是提供用于在多处理器环境中的缓存行替换的改进方法。
本发明的另一方面是提供用于在多处理器环境中的缓存行替换选择的改进方法和***。
本发明的另一方面是提供用于管理缓存的改进方法和***。
本发明的另一方面是提供用于在多处理器环境中管理缓存的改进方法和***。
如在此所描述,现在可以实现上述方面和其他目标和优点。一种用于管理数据处理***中的缓存操作的方法,该***具有***存储器和多个处理单元(PU),每个PU具有包括多个缓存行的缓存,每个缓存行具有多种一致性状态(coherency state)之一,并且每个PU耦合到该多个PU中的至少另一个。该方法包括:由第一PU确定必须用第一数据块替换该第一PU的第一缓存中的多个缓存行之一。该第一PU确定该第一数据块是否是来自该多个PU中的另一个的全相联缓存行。如果该第一数据块不是来自该多个PU中的另一个的全相联缓存行,该第一PU确定该第一缓存是否包含处于无效的一致性状态下的缓存行。如果该第一缓存包含处于无效的一致性状态下的缓存行,则第一PU将该第一数据块存储在处于无效的一致性状态下的缓存行中,并且更新该第一数据块的一致性状态。如果该第一缓存不包含处于无效的一致性状态下的缓存行,则该第一PU确定该第一缓存是否包含处于已移动的一致 性状态下的缓存行。如果该第一缓存包含处于已移动的一致性状态下的缓存行,则该第一PU选择处于已移动的一致性状态下的缓存行,并且在所选择的处于已移动的一致性状态下的缓存行中存储该第一数据块,并且更新该第一数据块的一致性状态。
在一个可替换的实施例中,一种用于管理数据处理***中的缓存操作的方法,该***具有***存储器和多个处理单元(PU),每个PU具有包括多个缓存行的缓存,每个缓存行具有多种一致性状态下的一个,并且每个PU耦合到该多个PU中的至少另一个。该方法包括:由第二PU从第一PU接收请求,用于在第二PU的第二缓存中存储来自第一PU的第一缓存的第一数据块。第二PU确定该第一数据块是否与第二缓存中处于共享的一致性状态的缓存行匹配。如果第一数据块与第二缓存中处于共享的一致性状态的缓存行匹配,则第二PU接受该请求,而没有数据传输。如果第一数据块与第二缓存中处于共享的一致性状态的缓存行不匹配,则第二PU确定第二缓存是否包含处于无效的一致性状态下的缓存行。如果该第二缓存包含处于无效的一致性状态下的缓存行,则该第二PU接受该请求,在与处于无效的一致性状态下的缓存行同样的位置建立(install)第一数据块,并且更新该第一数据块的一致性状态。如果该第二缓存不包含处于无效的一致性状态下的缓存行,则该第二PU确定第二缓存是否包含处于共享的一致性状态下的缓存行。如果该第二缓存包含处于共享的一致性状态下的缓存行,则该第二PU接受该请求,在处于共享的一致性状态下的缓存行中存储第一数据块,并且更新该第一数据块的一致性状态。如果该第二缓存不包含处于共享的一致性状态下的缓存行,则第二PU确定该第二缓存是否包含处于已移动的一致性状态下的缓存行。如果该第二缓存不包含处于已移动的一致性状态下的缓存行,则第二PU拒绝该请求。
附图说明
附图进一步图解了实施例并且与详细的描述一起用作解释在此公开的实施例,其中,贯穿分开的各视图,同样的参考标记指代相同或功能类似的要素,并且附图被并入并形成本说明书的一部分。
图1图解了示出根据优选实施例的计算机***的框图;
图2图解了描述改进的缓存一致性协议的逻辑状态的高级状态图,其可 以根据优选实施例实现;
图3图解了描述改进的缓存行替换方法的逻辑操作步骤的高级流程图,其可以根据优选实施例实现;
图4图解了描述改进的缓存行替换方法的逻辑操作步骤的高级流程图,其可以根据优选实施例实现;
图5图解了描述改进的缓存行替换方法的逻辑操作步骤的高级流程图,其可以根据优选实施例实现;以及
图6图解了描述改进的缓存行替换方法的逻辑操作步骤的高级流程图,其可以根据优选实施例实现。
具体实施方式
可以改变在这些非限制性的例子中讨论的具体值和配置,并且其引用仅是为了图解至少一个实施例,而不是旨在限制本发明的范围。
在下面的讨论中,阐述了许多特定的细节以提供对本发明的彻底理解。本领域的技术人员应该理解,可以在没有这些特定细节的情况下实践本发明。在另一些实例中,为了不在不必要的细节上对本发明造成模糊而以示意性或框图的形式图解公知的要素。另外,一般已经省略了关于网络通信、电磁信号技术、用户接口或输入/输出技术等的细节,这是由于这些细节被认为对获得本发明的完全理解是不必要的,并且认为其是相关领域的普通技术人员所能理解的。
还要注意到,除非另有指出,否则在此描述的所有功能都可以以硬件或者软件,或者其一些组合来实现。然而,在优选实施例中,除非另有指出,否则由诸如计算机或者电子数据处理器之类的处理器根据编码为执行这些功能的诸如计算机程序代码之类的代码、软件和/或集成电路来执行功能。
本发明可以采取完全硬件实施例、完全软件实施例,或包含硬件和软件要素的实施例的形式。在一个实施例中,以软件来实施本发明,其包括但不限于固件、驻留软件、微代码等等。
此外,本发明可采取可根据计算机可用或计算机可读介质来访问的计算机程序产品的形式,该介质提供计算机使用的程序代码,或是与指令执行***有关的程序代码。为了本描述的目的,计算机可用或者计算机可读介质可以是任何装置或有形的介质,其可以包含、存储、通信、传播或传送指令执 行***、装置或设备所使用的程序,或是与指令执行***、装置或设备有关的程序。
该介质可以是电子的、磁的、光学的、电磁的、红外的,或者半导体***(或装置或设备)。计算机可读介质的例子包括半导体或固态存储器、磁带、可移动计算机盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘的当前的例子包括致密盘-只读存储器(CD-ROM)、致密盘-读/写(CD-R/W)以及DVD。
适合于存储和/或执行程序代码的数据处理***包括通过***总线直接或者间接耦合到存储器元件的至少一个处理器。该存储器元件可以包括在程序代码的实际执行期间使用的本地存储器、大容量存储器、以及缓存存储器,该缓存存储器为了减少在执行期间必须从大容量存储器取回代码的时间量、提供至少一些程序代码的暂时存储。
输入/输出或I/O设备(包括但不限于键盘、显示器、定点设备等等)可以通过***I/O控制器直接或间接耦合于***。也可以将网络适配器耦合到***以使该数据处理***能够通过***的专用或公共网络而变为耦合到其他数据处理***或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡仅仅是网络适配器的几个当前可用的类型。
现在参照附图,图1是图解了根据本发明的优选实施例的、用于改进的缓存一致性的***100的某些组件的高级框图。***100包括***总线102。
通常,***总线102不同于传统计算机***总线,其如下面描述所修改、耦合了***100的各种组件。更具体地讲,计算机***100包括输入/输出(I/O)***104。I/O***104耦合到***总线102并且不同于传统I/O***,其包括用于提供***100和例如用户、另一计算机***、因特网、或其他适合的外部实体之间的接口的软件和硬件。如本领域的技术人员应该理解的那样,除非在此另有描述,否则I/O***104通常是公共组件和软件的集合,其组成现代计算机***的输入/输出***。
***100还包括存储器100。存储器100耦合到***总线102,并且不同于传统的计算机***存储器。***100还包括一个或多个多核***(MCS)120。通常,如下面更详细描述的那样,每个MCS120是包括缓存和其他支持硬件的、配置为执行典型的计算机任务的、根据在此描述的一个或多个优选实施例的处理器或者多个处理器。在图解实施例中,***100包括两个MCS: MCS 120和MCS 120a。在替代实施例中,可以用传统处理单元(PU)替换一个MCS 120。本领域的技术人员应该理解,也可以将***100配置为具有多于两个MCS 120,它们中的一个或多个可以用传统PU替换。在图解实施例中,MCS 120a集合地表示这些各种选项。通常,MCS 120和MCS 120a为***100接收和处理数据。
通常,在图解实施例中,MCS 120通过耦合到***总线102的三级(L3)缓存130来耦合到***100的其他组件。L3缓存130不同于传统的L3缓存,其如在此描述所修改,并且包含用于MCS 120的处理单元(PU)的指令和/或数据。L3缓存130还耦合到辅助总线(secondary bus)132。辅助总线132完全包含在MCS120中的,并且其不同于传统的计算机***总线。
MCS 120包括多个处理单元(PU)140,其耦合到一个或多个其他PU并且耦合到辅助总线132。在图解实施例中,MCS 120包括三个示例性PU 140:PU 140a、PU 140b以及PU 140c,其每一个均耦合到辅助总线132。通常,将每个PU140配置为通过辅助总线132来与L3缓存130通信。此外,通常每个PU 140接收用于处理的数据和指令,处理所接收的数据和指令,并且将结果返回给***100的一个或多个其他组件。
每个PU 140通过多个通信信道耦合到一个或多个其他PU。图1图解了示例性实施例中的三个这种通信信道。具体地讲,***100中的每个PU 140通过互联链路142和链路144耦合到下游(downstream)的PU。类似地,***100中的每个PU 140通过互联链路146耦合到上游(upstream)的PU。如在此所使用,“每个”是指所有的具体子集(subset)。链路142、144和146不同于传统的通信信道、互联或适合于PU相互耦合以用于数据/指令传送、控制通信或其他合适操作的其他连接。
如在此所使用,术语“上游”和“下游”指的是PU相互间的关系,或者组织成环型、星型,或其他拓扑。即,目标PU从“上游”的邻近PU接收掷入(cast in)的缓存行,下面将更详细地描述。类似地,PU将缓存行“掷出”给邻近的“下游”PU。如在此所描述,“邻近PU”是为了与其他PU交换控制信息、数据和指令而耦合到另一PU的PU。
每个PU140包括核150,如150a、150b和150c所示。每个核150包括核逻辑152,如152a、152b和152c所示。核逻辑152不同于传统的核逻辑,其如此处描述所修改。每个核逻辑152耦合到专用的一级(L1)缓存154, 如154a、154b和154c所示。L1缓存154不同于传统的L1缓存,其如此处描述所修改。
每个核150耦合到专用的二级(L2)缓存160,如160a、160b和160c所示。L2缓存160不同于传统的L2缓存,其如此处描述所修改。如下面更详细的描述,每个PU140配置为在特定的情况下开始将特定缓存行从其自身的L2缓存160掷出至邻近PU的L2缓存160。
例如,在一个实施例中,PU 140a将缓存行从其L2缓存160a掷出至下游PU 140b的L2缓存160b。L2缓存160b接收将该缓存行作为“掷入”的缓存行。类似地,在一个实施例中,PU 140c将缓存行从其L2缓存160c掷出至下游PU 140a的L2缓存160a。L2缓存160a接收该缓存行作为“掷入”的缓存行。从而,在以下更详细描述的特定情况下,通常将MCS 120的PU 140配置将缓存行掷出至邻近PU的L2缓存。
另外,示例性***100图解了在此描述的关于L2到L2处理(transaction)的掷出/掷入操作的特征。本领域的技术人员应该理解,在此公开的实施例的原理还可以应用于具有在此教导的好处的L3到L3的处理、L1到L1的处理,以及其他的合适的配置的操作。本领域的技术人员还应该理解用于在缓存层次(hierarchy)的各个级(level)之间保持一致性的一些机制的需要。
虽然存在许多现代协议和技术用来实现缓存一致性,但大多数典型的协议仅允许一个处理器许可(permission)以在任何特定的时间点向作为缓存块的给定的存储器位置写。如这样,只要PU想向存储器位置写,必须存在一些机制使用所有其他的PU来检验在一致性协议下挂起(pending)写操作是可接受的。在一个实施例中,PU通过“监听”(“snoop”)协议来尝试这种检验。
如上所述,在一个实施例中,多核***中的PU经过辅助总线(例如,图1的辅助总线132)耦合在一起。PU通过该辅助总线通信以用于一致性和其他目的,例如包括指示从存储器位置读或向存储器位置写的期望。当PU在辅助总线上指示挂起操作时,所有的其它PU监视(或“监听”)该挂起操作。监听的PU将该挂起操作中的目标存储器位置与它们各自缓存中的所存储的存储器位置进行比较,确定缓存的状态是否可以允许该挂起操作,如果可以,是在什么条件下。
在典型的现代协议中,以及在此的本发明的实施例中,如本领域的技术 人员所理解,存在需要监听和跟踪行为的几个总线存储器处理。例如“有写意图的读”需要监听和跟踪行为。另外,在一些实施例中,需要另外的硬件和信令(signaling)行用于支持该监听操作,其为了清楚在此省略。
因此,通常为了保持缓存的一致性,只要PU想要读或写存储器块,其必须向***中的其他PU指示该期望。因此缓存一致性协议包括状态指示器(indictor),用于指示块的当前一致性“状态”,而每个级中的每个缓存块具有其自身的状态。例如,如果只有一个PU具有缓存块的有效(active)复制,则该PU将该块标记为处于“排他的”(“exclusive”)一致性状态,其遵照以下更详细描述的另外的协议条件。通常,因为其他的处理单元没有该缓存块的复制,因此PU可以写排他的缓存块,而不用首先与***中的其他PU通信。
另外,在一些实例中,在“***”(“intervention”)操作中,PU可以直接从邻近PU(而不是从主存储器中)取回请求的缓存块。同样,源PU可以将所请求的缓存块传送到请求的PU,而不会导致一致性问题,并且不会首先将该缓存块写至存储器。
通常,如在此所使用,“一致性状态”是指表示在缓存中存储的数据与在存储器和其他缓存中存储的数据之间的关系的多个状态下的一个。为减少混淆,此处讨论是指作为“处于X的一致性状态”或者“处于一致性状态X”的缓存行或缓存块,其中X指示与缓存行/块相关的一致性状态。这用于从无效缓存行(具有无效数据的缓存行)中区分无效的(invalid)一致性状态(没有由一致性协议定义的一致性状态)。例如,“共享(已移动的)的一致性状态”是在此描述的一致性协议中的无效的一致性状态,然而“无效的一致性状态”是有效的一致性状态。
图2图解了改进的缓存一致性协议中的多个有效一致性状态的一个实施例。具体地讲,图2图解了可根据优选实施例来实现的、描述改进的缓存一致性协议的逻辑状态的高级状态图200。
图表200图解了八种有效的一致性状态:已修改的(已移动的)(“Mm”)、已修改的(自身的)(“Mo”)、无效的(“I”)、共享的(“S”)、排他的(已移动)(“Em”)、排他的(自身的)(“Eo”)、已标记的(Tagged)(已移动)(“Tm”)以及已标记的(自身的)(“To”)。通常,除了如在此修改,状态Mm、Mo、I、S、Em以及Eo配置为公知的MESI协议状态“已移动”、“排他的”、“共享的”和“无效的”。
通常,状态Mo指示缓存行是有效的并且包含已修改的数据。该行的复制没有并且不可以存在于任何其他的缓存中。本地的PU已访问过该缓存行。本地的PU是包含存储该缓存行的缓存的PU。
通常,状态Mm指示缓存行是有效的并且包含已修改的数据。该行的复制没有并且不可以存在于任何其他的缓存中。本地的PU还没有访问过该缓存行。而且,该缓存行是通过本地PU从掷出该缓存行的邻近PU作为掷入的缓存行接收的。
通常,状态Eo指示缓存行是有效的并且包含未被修改的数据,即,该数据与存储器中存储的数据匹配。该行的复制没有并且不可以存在于任何其他的缓存中。本地的PU已访问过该缓存行。
通常,状态Em指示缓存行是有效的并且包含未修改的数据。该行的复制没有并且不可以存在于任何其他的缓存中。本地的PU还没有访问过该缓存行。而且,该缓存行是通过本地PU从掷出该缓存行的邻近PU作为掷入的缓存行接收的。
通常,状态S指示缓存行是有效的并且该行的复制可存在于其他的缓存中。在图解的实施例中,状态S仅仅指示该缓存行是有效的并且可以存在其他的复制。在一个可替换的实施例中,状态S包括子状态(sub-state),共享的(最后的)(“S(I)”),其指示该缓存行是该缓存行的最近访问的复制。S(I)状态便利于处于“共享的”状态下的行的数据***。
通常,状态I指示缓存行在当前缓存中不是有效的。该缓存行的复制可以各种状态存在于其他的缓存中。
通常,状态To指示缓存行是有效的并且包含已修改的数据。PU已经通过***操作将该缓存行的至少一个复制发送给另一PU的缓存。本地的PU已经访问过该缓存行。本领域的技术人员应该明白,状态To是公知的MESI缓存一致性协议的扩展。通常,“已标记”的状态指示容纳已标记的缓存行的PU负责在未来的某个时间将已修改的缓存行回写(write back)到存储器层次(heirarchy)。容纳该已标记的缓存行的PU可以通过回写到***存储器或通过将该标记(tag)传递给另一PU来履行(satisfy)其责任。
通常,状态Tm指示缓存行是有效的并且包含已修改的数据。PU已经通过***操作将该缓存行的至少一个复制发送给另一PU的缓存。而且,该缓存行是通过本地PU从掷出该缓存行的邻近PU作为掷入的缓存行而接收的。 本地的PU还没有访问过该缓存行。
同时与此提交的案卷号AUS920070828US1的同族申请(companionapplication)描述了特有的一致性协议另外的细节,其可以配置为连同在此公开的实施例而操作。
图3图解了缓存行替换和缓存行替换选择的方法的一个实施例。具体地讲,图3图解了描述逻辑操作步骤的高级流程图300,该步骤由例如实现图2的一致性协议200的图1的***100执行,其可以根据优选实施例实现。通常,除非另有指示,否则图1的MCS 120执行该方法的步骤。
例如,在一个实施例中,每个PU 140可以执行该方法的步骤。具体地讲,只要PU 140确定必须选择要替换的缓存行以便为进入的缓存行腾出空间时,每个PU 140执行该方法的步骤。在一个实施例中,响应于该确定,即必须选择用于替换的L2缓存160的一个现有的缓存行以便为进入的缓存行腾出空间,一个或多个PU 140执行该方法的步骤。在一个实施例中,核模块150执行该方法的步骤。然而,为了图解方便,除非另有指示,否则下面的讨论假定MCS 120的PU 140执行该方法的步骤。
如在块305所图解,开始该处理,其中PU 140确定该进入的缓存行是否是来自邻近PU的进入的掷入缓存行,该进入的缓存行将替代(replace)所选择的用于替换的缓存行。如果在块305,该进入的缓存行是掷入的缓存行,则该处理继续沿着YES分支到标记“A”,以下结合图5做更详细的描述。如果在块305,该进入的缓存行不是掷入的缓存行,则该处理继续沿着NO分支到块310。
如在块310所图解,PU 140确定PU 140的L2缓存160中是否存在处于无效的一致性状态的任何缓存行。如果在块310,L2缓存160中存在处于无效的一致性状态的缓存行,则PU 140选择一个这样的缓存行并且该处理继续沿着YES分支到块315。
接着,如在块315所图解,PU 140将该进入的缓存行数据块写入L2缓存160的所选择的缓存行的缓存的位置。接着,如在块320所图解,PU 140更新与所选择的缓存行相关的缓存一致性状态信息以指示具有新接收的数据块的缓存行的状态。接着,如在块325所图解,如果有的话,PU 140将掷出由所掷入的缓存行当前占据的缓存行中先前存储的缓存行,并且该处理结束。本领域的技术人员应理解,无需将处于无效的一致性状态的缓存行掷出到存 储器。同样,在空出的缓存行无需掷出到存储器的情况下,PU 140跳过这一步骤,并且该处理结束。如在此所使用,“更新缓存一致性状态信息”等同于“更新缓存一致性状况”和“更新缓存一致性状态”。
如果在确定块310,L2缓存160中没有处于无效的一致性状态的缓存行,则该处理继续沿着NO分支到块确定330。如在确定块330所图解,PU 140确定PU 140的L2缓存160中是否存在处于已移动的一致性状态的任何缓存行。如果在确定块330,L2缓存160中存在处于已移动的一致性状态的缓存行,则该处理继续沿着YES分支到块335。
如在块335所图解,PU 140在PU的L2缓存160中选择用于替换处于已移动的一致性状态的缓存行。在一个实施例中,PU 140选择处于已移动的一致性状态的任何一个缓存行。在一个可替换的实施例中,根据预定的优选,PU 140从处于已移动的一致性状态的几个缓存行之间选择。在一个实施例中,该预定的优选是对于PU 140在处于Em的一致性状态的缓存行之前选择处于Tm的一致性状态的缓存行,并且在处于Mm的一致性状态的缓存行之前选择处于Em的一致性状态的缓存行。
接着,如在块315所图解,PU 140将该进入的缓存行数据块写入L2缓存160的所选择的缓存行的缓存的位置。接着,如在块320所图解,PU 140更新与所选择的缓存行相关的缓存一致性状态信息以指示具有新接收的数据块的缓存行的状态。接着,如在块325所图解,如果需要的话,PU 140将掷出由所掷入的缓存行当前占据的缓存行中先前存储的缓存行,并且该处理结束。在一个实施例中,PU 140从空出的缓存行回写数据。在一个实施例中,PU 140将该空出的缓存行写入到回写缓冲区。或者,当不需要将该空出的缓存行掷出到存储器,则PU 140跳过这一步骤。通常,在一个实施例中,PU 140将处于Tm和Mm的一致性状态已替换的缓存行掷出,并且PU 140丢弃处于Em的一致性状态的已替换的缓存行。
此外,在一些实施例中,PU在其他已移动缓存行之前选择用于替换来自上游邻近PU的已移动的缓存行。在已移动的缓存行之间,PU首先选择Tm缓存行用于替换,因为这样的行可以存在于其他缓存中,万一PU再次需要该缓存行,其比从存储器中的取回要快。接着,PU选择Em缓存行,因为这样的缓存行没有被修改并且因此不需要将其掷出到存储器,这还可以减少不必要的总线处理。接着,PU选择Mm缓存行,因为这样的缓存行不存在于其 他的缓存中,并且需要随后的掷出或回写操作。
如果在确定块330不存在处于已移动的一致性状态的L2缓存160中的缓存行,则该处理继续沿着NO分支到块340。如在块340所图解,PU140识别或否则确定L2缓存160的哪一个缓存行是最近最少使用过(LRU)的缓存行。本领域的技术人员应该理解,存在各种公知的方法来确定LRU缓存行。该处理继续到图4的标记“B”。
图4图解了用于缓存行替换和缓存行替换选择的方法的一个实施例。具体地讲,图4图解了描述逻辑操作步骤的高级流程图400,该步骤由例如实现图2的一致性协议200的图1的***100执行,其可以根据优选实施例实现。
该处理从标记“B”继续到确定块405。如在块405所图解,PU 140确定LRU缓存行是否处于共享的一致性状态。如果在块405,LRU缓存行处于共享的一致性状态,该处理继续沿着YES分支到块410。如在块410所图解,PU 140将该进入的缓存行数据块写入LRU缓存行的缓存的位置。
接着,如在块415所图解,PU 140丢弃被替换以便为进入的缓存行腾出空间的LRU缓存行。本领域的技术人员应该理解,在一个可替换的实施例中,PU 140在将该进入的缓存行写入由被丢弃的LRU缓存行所空出的缓存位置之前丢弃该LRU缓存行。接着,如在块420所图解,PU 140响应于写该进入的缓存行而更新该缓存行的一致性状态,并且该处理结束。
如果在确定块405,该LRU缓存行不是处于共享的一致性状态,该处理继续沿着NO分支到块425。如在块425所图解,PU 140请求邻近PU接受作为进入的掷入的该LRU缓存行。如上所述,PU 140可以请求上游和/或下游的邻近PU来接受该LRU缓存行作为进入的掷入缓存行。在优选实施例中,每个PU 140仅仅请求下游的PU来接受被逐出的缓存行作为进入的掷入缓存行。
接着,如在确定块430所图解,PU 140确定被请求的邻近PU是否接受作为进入的掷入的该LRU缓存行。如果在确定块430,邻近的PU接受了该LRU缓存行作为进入的掷入,该处理继续沿着YES分支到块435。
如在块435所图解,PU 140将该LRU缓存行发送给接受的邻近PU。在一个实施例中,PU140通过从其L2缓存160传送数据到邻近PU的L2缓存160而将该LRU缓存行数据发送给接受的邻近PU。在一个可替换的实施例 中,在邻近PU已经有了该LRU缓存行的复制(下面将更详细的描述)的情况下,PU 140不向该邻近的PU传送任何数据。
接着,如在块440所图解,PU 140将该进入的缓存行数据块写入由该LRU缓存块空出的缓存的位置。接着,如在块420所图解,PU 140更新缓存行一致性状态,并且该处理结束。
如果在块430所图解,邻近PU没有接受该LRU缓存行作为进入的掷入,该过程继续沿着NO分支到确定块445。如在确定块445所图解,PU 140确定该LRU缓存行是否处于一致性状态Eo。
如果在确定块445中,该LRU缓存行处于一致性状态Eo,则该处理继续沿着YES分支到块450。如在块450所图解,PU 140丢弃该当前的LRU缓存行入口(entry)。在一个实施例中,PU 140清除当前的LRU缓存行的缓存位置。在一个可替换的实施例中,PU 140用该进入的缓存行覆盖(overwrite)当前的LRU缓存行,而不将该当前的LRU缓存行写入到例如回写缓冲区。
接着,如在块455所图解,PU 140将该进入的缓存行数据块写入由该LRU缓存行空出的缓存的位置。接着,如在块420所图解,PU 140更新该缓存行一致性状态,并且该处理结束。
如果在确定块445中,该LRU缓存行不是处于一致性状态Eo,则该处理继续沿着NO分支到块460。如在块460所图解,PU 140将该当前的LRU缓存行入口掷出到存储器。在一个实施例中,PU 140将该当前LRU缓存行掷出到L3缓存130。在一个可替换的实施例中,PU 140通过将该当前缓存行写入到例如回写缓冲区而掷出该当前的LRU缓存行。在一个可替换的实施例中,PU 140通过将该缓存行写入到主存储器110而掷出该当前的LRU缓存行。
接着,如在块455所图解,PU 140将该进入的缓存行数据块写入由LRU缓存行空出的缓存的位置。接着,如在块420所图解,PU 140更新该缓存行一致性状态,并且该处理结束。
相应的,图3和图4中所图解方法提供了一改进的机制,用于从多个缓存行中选择用于替换的缓存行以便为进入的缓存行腾出空间。图5和图6图解了一种改进的机制,PU可以使用其确定是否接受进入的掷入行。本领域的技术人员应该理解,PU可以同时和/或以交替的顺序执行该方法的一个或多 个所图解的实施例的步骤。
图5图解了用于确定是否接受进入的掷入缓存行和用于缓存行替换的方法的一个实施例。具体地讲,图5图解了描述逻辑操作步骤的高级流程图500,该步骤由例如实现图2的一致性协议200的图1的***100执行,其可以根据优选实施例实现。
该处理开始于确定块505。如在确定块505所图解,PU 140确定是否有进入的掷入缓存行。如果在块505,对于PU没有进入的掷入缓存行,则该处理继续沿着NO分支到块510。如在块510所图解,PU等待并且该处理返回确定块505。本领域的技术人员应该理解,PU140可以在如块510所指示的等待的同时执行其他的任务。在一个实施例中,块505并入块510,并且PU140检测每个进入的缓存行以确定该进入的缓存行是否是掷入的缓存行。
如果在块505,对于PU存在进入的掷入缓存行,或者该进入的缓存行是掷入的缓存行,则该处理继续沿着YES分支到块515。该处理还从标记“A”继续到确定块515。如上所述,标记“A”表示PU确定进入的缓存行是来自邻近PU的进入的掷入行。如确定块515所图解,PU 140确定该进入的掷入行是否处于To的一致性状态。
如果在确定块515,该进入的缓存行处于To的一致性状态,则该处理继续沿着YES分支到确定块520。如在确定块520所图解,PU 140确定该掷入缓存行是否与PU的L2缓存160中已有的缓存行匹配,如果是这样,则确定该缓存行是否处于共享的一致性状态。
如果在确定块520中,该掷入缓存行与PU的L2缓存160中的缓存行匹配并且该缓存行处于共享的一致性状态,则该处理继续沿着YES分支到块525。如在块525所图解,PU 140接受该进入的掷入缓存行。通常,PU 140通过将该进入的掷入缓存行数据块写入PU的L2缓存160的缓存位置处的缓存行来接受该进入的掷入缓存行。在一个实施例中,PU 140通过向请求的PU指示PU 140在其缓存中已经有了该数据的复制并且不需要数据传送来接受该进入的掷入缓存行。在一个实施例中,PU 140通过产生或生成接受信号来接受该掷入的缓存行,然后将数据传送到PU的L2缓存160。
与此同时提交的同时待审的(co-pending)律师卷号AUS920070126US1,除了其他新颖特征外,还提供了关于邻近PU之间的接口和通信的方法的另外的细节。
接着,在块530中所示的,PU 140更新缓存行一致性状态,而该缓存行是PU 140所写入的掷入缓存行。接着,如在块535所图解,如果有的话,PU140将在由所掷入的缓存行当前占据的缓存行中先前存储的缓存行掷出,并且该处理结束。即,在一个实施例中,PU 140从空出的缓存行回写数据。在一个实施例中,PU 140将该空出的缓存行写入到回写缓冲区。或者,当处于一致性状态To的该掷入的缓存行与PU的L2缓存160中的处于一致性状态S中的缓存行匹配时,则PU 140跳过这一步骤。或者,当不需要将该空出的缓存行掷出到存储器,则PU 140跳过这一步骤。
如果在确定块520,该掷入的缓存行与PU的L2缓存160中的缓存行不匹配或者该匹配的缓存行不是处于共享的一致性状态,则该处理继续沿着NO分支到确定块540。类似地,如果在确定块515,该掷入缓存行不是处于To的一致性状态,则该处理继续沿着NO分支到确定块540。
如在确定块540所图解,PU 140确定在PU的L2缓存160中是否存在处于无效的一致性状态的任何缓存行。如果在确定块540中,在PU的L2缓存160中可得到处于无效的一致性状态的缓存行,则PU 140选择用于替换处于无效的一致性状态的缓存行并且该处理继续沿着YES分支到块525。如上述的,PU 140接受该进入的掷入缓存行并且将该缓存行数据写入所选择的缓存行(块525),更新该缓存行的一致性状态(块530),如果必要的话将空出的缓存行掷出到存储器(块535)并且该处理结束。
如果在确定块540,在PU的L2缓存160中不可得到处于无效的一致性状态的缓存行,则该处理继续沿着NO分支到图6的标记“C”。
图6图解了一种用于确定是否接受进入的掷入缓存行和用于缓存行替换的方法的一个实施例。具体地讲,图6图解了描述逻辑操作步骤的高级流程图500,该步骤由例如实现图2的一致性协议200的图1的***100执行,其可以根据优选实施例实现。
该处理从标记“C”继续到确定块605。如在确定块605所图解,PU 140确定在PU的L2缓存160中是否存在处于共享的一致性状态的任何缓存行。如果在确定块605,在PU的L2缓存160中存在处于共享的一致性状态的缓存行,则PU 140选择用于替换处于共享的一致性状态的缓存行并且该处理继续沿着YES分支到块610。
如在块610所图解,如以上关于图5的块525所描述,PU 140接受该进 入的掷入缓存行。接着,如在块615所图解,如以上关于图5的块530所描述,PU 140更新该缓存行的一致性状态。接着,如在块620所图解,如以上关于图5的块535所描述,如果需要的话,PU 140将空出的缓存行掷出到存储器,并且该处理结束。
如在确定块605,在PU的L2缓存160中没有处于共享的一致性状态的缓存行,则该处理继续沿着NO分支到块625。如在确定块625所图解的,PU 140确定在PU的L2缓存160中是否存在处于已移动的一致性状态的任何缓存行。如果在确定块625,在PU的L2缓存160中存在处于已移动的一致性状态的任何缓存行,则该处理继续沿着YES分支到块630。
如在块630所图解,PU 140选择用于替换在PU的L2缓存160中处于已移动的一致性状态的缓存行。在一个实施例中,PU140选择处于已移动一致性状态的任何一个。在一个可替换的实施例中,根据预定的优选,PU从处于已移动的一致性状态的几个缓存行之间选择。在一个实施例中,该预定的优选是用于PU 140来在处于Em的一致性状态的缓存行之前选择处于Tm的一致性状态的缓存行,并且在处于Mm的一致性状态的缓存行之前选择处于Em的一致性状态的缓存行。
接着,如上所述,PU 140接受该进入的掷入缓存行并且将该缓存行数据写入所选择的缓存行(块610),更新该缓存行的一致性状态(块615),如果必要的话将空出的缓存行掷出到存储器(块620)并且该处理结束。通常,在一个实施例中,PU 140掷出处于Tm和Mm的一致性状态的被替换的缓存行,并且PU 140丢弃处于Em的一致性状态的被替换的缓存行。
如果在确定块625中,在PU的L2缓存160中没有处于已移动的一致性状态的任何缓存行,则该处理继续沿着NO分支到块635。如在块635所图解,PU 140拒绝该进入的掷入缓存行并且该处理结束。在一个实施例中,PU 140通过声明拒绝信号而拒绝该进入的缓存行。在一个替换实施例中,PU 140通过不声明(de-assert)接受信号而拒绝该进入的缓存行。在一个替换实施例中,PU 140拒绝该进入的缓存行并且指令请求的PU稍后再试。
从而,通常,一个实施例中的实现图2的状态图200的图1的***100提供了用于多处理器环境中的缓存行的替换选择的新颖的***和方法。即,在此公开的实施例连同新颖的一致性协议和接口一起扩展了公知的LRU替换算法。
更具体地讲,在此公开的实施例允许PU在PU自身缓存行之前丢弃先前“已移动”的缓存行。另外,如果PU没有任何“已移动”的行,则在此公开的特定实施例允许PU将该PU“自身的”行掷出到下游的邻近PU,PU可以接收该掷出的缓存行作为进入的“掷入”缓存行。
广泛地讲,在一些实施例中,由于无效缓存行是空的并且不需要掷出或者行丢弃,因此PU可以首先通过选择无效的缓存行用于替换为装载或存储指令而优先考虑缓存行替换。第二,PU选择已移动的缓存行,因为这些行还没有被本地PU使用并且只是被典型地容纳以改进PU的上游的邻近PU的缓存的性能。第三,该PU选择通过如上所述的修改的、不同于传统的LRU算法所确定的行。本领域的技术人员应该理解,通常该PU不考虑锁定的缓存行用于替换。
此外,在一些实施例中,PU在其他已移动的缓存行之前选择来自上游的邻近PU的已移动的缓存行用于替换。在已移动的缓存行之间,PU首先选择Tm缓存行用于替换,因为这样的行可以存在于其他的缓存,万一PU再次需要该缓存行,这比从存储器取回要快。接着,PU选择Em缓存行,因为这样的缓存行没有被修改并且因此不需要掷出到存储器,这也消除了不必要的总线处理。接着,该PU选择Mm缓存行,因为这样的缓存行不存在于其他缓存中,并且需要随后掷出或回写操作。
在PU的L2缓存没有包含已移动的缓存行的情况下,该PU使用LRU算法来选择缓存行。如果PU选择自身的缓存行,该PU尝试掷出被逐出的缓存行到下游邻近的PU而不是到存储器。从而,在一个实施例中,通常,对于掷出缓存行,PU在处于除了无效之外的任何其他一致性状态的行之前丢弃已移动的缓存行,这给了PU自身的缓存行的优先(preference)。对于掷入的缓存行,PU在共享的缓存行和无效的缓存行之后替换已移动的缓存行。在一个实施例中,PU在已移动的行之前选择共享的行以被替换,因为该行的复制很可能存在于另一L2缓存中并且因为不需要掷出。
而且,本领域的技术人员应该明白,在此公开的实施例支持各种修改。例如,在一个实施例中,当从上游的邻近PU接受掷入的缓存行时,PU在Em缓存行之前替换Tm缓存行,因为Tm行(其可以驻留在其他PU的缓存中)的潜在的更快的重用通常比由于PU可以丢弃没有总线处理的Em缓存行、通过选择Em缓存行所提供的精简的总线通信量(traffic)更重要。在可替换的 一个实施例中,尤其在所减少的总线通信量比更快的缓存行重用优先级高的情况下,PU可以在Tm缓存行之前丢弃Em缓存行。
在一些所图解的实施例中,如果PU仅仅具有Mm已移动的缓存行可用于替换,那么PU可以接受作为掷入的Mo缓存行来替换Mm缓存行。在一个可替换的实施例中,当PU的缓存中仅仅包含Mm已移动的缓存行可用于替换时,PU可以拒绝作为掷入的Mo缓存行。该实施例用所减少的总线处理的优点来交换将更近使用(more recently used)的缓存行掷出到存储器的小缺点。即,该实施例仅仅需要一个总线处理(上游的PU将被拒绝的Mo缓存行掷出到存储器),而所图解的实施例发生(incur)两个总线处理(上游的PU将该缓存行掷出到下游的PU,并且下游的PU将被替换的Mm缓存行掷出到存储器)。
因此,所公开的实施例提供了超过现有技术的方法和***的许多优点。例如,所公开的缓存行替换选择方法改进了超过标准的LRU替换算法的性能。另外,实现所公开的方法的多核***可以扩展单一PU的L2(或其他的)缓存可用的资源。因此,通过这种***中改进缓存行替换选择,所公开的一致性协议支持将行从一个PU缓存掷出到另一PU缓存。
在另一技术优点中,在新颖的一致性协议中可得到的另外的状态有助于PU优化其替换算法和接受所掷入的缓存行的机制这两者。通过区分“自身”的缓存行和仅仅是“被移动”到本地PU缓存中的缓存行,本地PU可以提供辅助的缓存空间给邻近PU,而且不用牺牲本地PU的性能。
在另一技术优点中,区分“已移动的”和“自身的”缓存行有助于防止缓存行从邻近PU传递到邻近PU再到邻近PU等等。即,在一个实施例中,不允许将“已移动”的缓存行掷出到邻近PU的缓存。该PU而是在自身的缓存行之前替换或者无效已移动的缓存行,由此防止不需要的缓存行无限循环。这种机制使***的缓存从填满(fill up)不需要的缓存行中解脱出来,并且有助于防止***性能的恶化。
在另一技术优点中,在此所公开的新颖的实施例有助于扩展被降级的多核***的性能。例如,在一个实施例中,在制造测试发现某种类型的部分合格的芯片的情况下,所公开的实施例可以支持改进的邻近缓存的使用,其可以充分满足用于救助不合适的芯片的性能需求。另外,在此所公开的新颖的实施例可以帮助部分降级的芯片在对于现有技术的***可能是灾难的情况下 保持可用。例如,在一个PU或核服务一段时间后出现故障的情况下,剩余的核可以继续使用故障核的缓存。在一些情况下,被继续使用的邻近缓存可以弥补(offset)失去核的大部分的性能影响,这可以充分地扩展芯片的服务寿命。
在又一技术优点中,当选择要丢弃/掷出哪一个缓存行时,所公开的实施例越过(over)自身的行优先考虑已移动的行,这允许每个PU保持完全利用其自身缓存,这改进了性能、灵活性和可靠性。此外,尤其当下游的邻近PU的核掉电或被禁止(disable)时,将自身的行掷出到下游的邻近PU的缓存(而不是到存储器)改进了总的吞吐量(throughput)。而且,通常PU可以从邻近PU的L2缓存中取回缓存行,这比从主存储器中取回要更快,这也改进了性能。
所公开的缓存行替换选择方法和***也提供了超过特定的现有技术的***和方法的具体的优点。例如,与在先方法相反,在此所公开的一致性协议可以将已标记的行移动到处于共享状态的邻近PU的缓存,而不需要数据传输。另外,由于在先方法缺乏此处所描述的新颖的“已移动”和“自身的”状态,因此在先方法不能采用这种状态来防止旧的缓存行的无限循环。
另外,在先PU不能拒绝接受掷出的缓存行作为掷入的缓存行。在所公开的缓存行替换选择协议中,在该本地的PU具有足够的空间之前,本地的PU可以拒绝接受掷出的缓存行,该空间是以无效、共享、或已移动状态之一的一致性状态下的缓存行的形式。从而,不同于在先方法,本发明未以降低另一PU的缓存的性能为代价来改进一个PU的缓存的性能。
类似地,本发明提供了超过Garg方法的许多优点。因为本发明支持改进的缓存行掷出和取回协议,这种***是超过Garg方法的改进,并且Garg方法忍受包括低可扩展性(scalability)的单一共享缓存的缺点。此外,由于采用本发明的***中的行替换协议可以将缓存检测限制到本地L2(而不是到多个L2缓存),因此所公开的缓存行替换选择协议支持精简的缓存缺失检索。同样,本发明改进了缓存性能,其通常超过Garg方法和其它现有技术的***和方法。
本领域的技术人员应该理解,上面公开的变型、其他特征、功能或其替代物都可以值得组合到许多其他的不同***或应用中。另外,本领域的技术人员可以随后做出各种现在无法预料或者不曾预料到的其替代物、修改、变 型或者改进,其也旨在由下面的权利要求书所包括。
Claims (20)
1.一种用于管理数据处理***中的缓存的方法,该***具有***存储器和多个处理单元PU,每个PU具有包括多个缓存行的缓存,每个缓存行具有多种一致性状态之一,并且每个PU耦合到该多个PU中的至少另一个,该方法包括:
通过第一PU确定必须用第一数据块替换该第一PU的第一缓存中的多个缓存行之一;
通过第一PU确定该第一数据块是否是来自该多个PU中的另一个的全相联缓存行;
如果该第一数据块不是来自该多个PU中的另一个的全相联缓存行,则通过该第一PU确定该第一缓存是否包含处于无效的一致性状态下的缓存行;
如果该第一缓存包含处于无效的一致性状态下的缓存行,则将该第一数据块存储在处于无效的一致性状态下的缓存行中,并且更新该第一数据块的一致性状态;
如果该第一缓存不包含处于无效的一致性状态下的缓存行,则通过该第一PU确定该第一缓存是否包含处于已移动的一致性状态下的缓存行;以及
如果该第一缓存包含处于已移动的一致性状态下的缓存行,选择处于已移动的一致性状态下的缓存行,并且将该第一数据块存储在处于已移动的一致性状态下的所选择的缓存行中,并且更新该第一数据块的一致性状态。
2.如权利要求1所述的方法,其中如果该第一缓存包含处于已移动的一致性状态下的缓存行,选择处于已移动的一致性状态下的缓存行,并且将该第一数据块存储在处于已移动的一致性状态下的所选择的缓存行中,并且更新该第一数据块的一致性状态包括:
如果该第一缓存包含处于已移动的一致性状态下的缓存行,则通过该第一PU确定该第一缓存是否包含处于已移动的一致性状态下的一个以上的缓存行;
如果该第一缓存包含处于已移动的一致性状态下的一个以上的缓存行,则在任何其他一致性状态前选择处于已移动的和已标记的一致性状态下的缓存行作为全相联缓存行,以及在处于已移动的和已修改的一致性状态下的缓存行之前选择处于已移动的和排他的一致性状态下的缓存行作为全相联缓存 行;以及
将该第一数据块存储在该全相联缓存行中,并且更新该第一数据块的一致性状态。
3.如权利要求1所述的方法,还包括将处于已移动的一致性状态下的所选择的缓存行掷出到存储器。
4.如权利要求1所述的方法,还包括:
如果该第一缓存不包含处于已移动的一致性状态下的缓存行,则通过该第一PU确定在该第一缓存中的最近最少使用过的LRU缓存行;
通过第一PU确定该LRU缓存行是否处于共享的一致性状态;以及
如果该LRU缓存行处于共享的一致性状态,则将该第一数据块存储在该LRU缓存行中,并且更新该第一数据块的一致性状态。
5.如权利要求4所述的方法,还包括:
如果该LRU缓存行不处于共享的一致性状态,则确定该LRU缓存行是否处于自身的一致性状态;以及
如果该LRU缓存行处于自身的一致性状态,则请求该多个PU中的另一个接受该LRU缓存行。
6.如权利要求5所述的方法,还包括:
如果该多个PU中的另一个接受该LRU缓存行,则将该LRU缓存行发送到该接受的PU;以及
将该第一数据块存储在由该LRU缓存行空出的第一缓存位置中,并且更新该第一数据块的一致性状态。
7.如权利要求5所述的方法,还包括:
如果该多个PU中的另一个拒绝该LRU缓存行,则通过第一PU确定该LRU缓存行是否处于排他的一致性状态;
如果该LRU缓存行不是处于排他的一致性状态,则将该LRU缓存行掷出到存储器;以及
将该第一数据块存储在由该LRU缓存行空出的第一缓存位置中,并且更新该第一数据块的一致性状态。
8.一种用于管理数据处理***中的缓存的方法,该***具有***存储器和多个处理单元PU,每个PU具有包括多个缓存行的缓存,每个缓存行具有多种一致性状态下的一种状态,并且每个PU耦合到该多个PU中的至少另一 个,该方法包括:
通过第二PU从第一PU接收用于将来自第一PU的第一缓存的第一数据块存储在第二PU的第二缓存中的请求;
确定该第一数据块是否与在第二缓存中处于共享的一致性状态下的缓存行匹配;
如果该第一数据块与在第二缓存中处于共享的一致性状态下的缓存行匹配,则通过第二PU接受该请求,而不传送数据;
如果该第一数据块与在第二缓存中处于共享的一致性状态下的缓存行不匹配,则通过第二PU确定该第二缓存是否包含处于无效的一致性状态的缓存行;
如果该第二缓存包含处于无效的一致性状态的缓存行,则接受该请求,将该第一数据块存储在处于无效的一致性状态下的缓存行中,并且更新第一数据块的一致性状态;
如果该第二缓存不包含处于无效的一致性状态的缓存行,则通过第二PU确定该第二缓存是否包含处于共享的一致性状态的缓存行;
如果该第二缓存包含处于共享的一致性状态的缓存行,则接受该请求,将该第一数据块存储在处于共享的一致性状态下的缓存行中,并且更新第一数据块的一致性状态;
如果该第二缓存不包含处于共享的一致性状态的缓存行,则通过第二PU确定该第二缓存是否包含处于已移动的一致性状态的缓存行;以及
如果该第二缓存不包含处于已移动的一致性状态的缓存行,则拒绝该请求。
9.如权利要求8所述的方法,还包括:
如果该第二缓存包含处于已移动的一致性状态的缓存行,则接受该请求,将该第一数据块存储在处于已移动的一致性状态下的缓存行中,并且更新第一数据块的一致性状态。
10.如权利要求8所述的方法,还包括:
如果该第二缓存包含处于已移动的一致性状态的缓存行,则通过第二PU确定处于已移动的一致性状态的缓存行是否也处于已标记的一致性状态;以及
如果处于已移动的一致性状态的缓存行也处于已标记的一致性状态,则 将处于已移动的一致性状态的缓存行中的数据掷出到存储器;以及
接受该请求,将该第一数据块存储到由处于已移动的一致性状态的缓存行空出的缓存位置中,并且更新该第一数据块的一致性状态。
11.一种用于管理数据处理***中的缓存的装置,该***具有***存储器和多个处理单元PU,每个PU具有包括多个缓存行的缓存,每个缓存行具有多种一致性状态下的一种状态,并且每个PU耦合到该多个PU中的至少另一个,该装置包括:
用于通过第一PU确定必须用第一数据块替换该第一PU的第一缓存中的多个缓存行之一的部件;
用于通过第一PU确定该第一数据块是否是来自该多个PU中的另一个的全相联缓存行的部件;
用于如果该第一数据块不是来自多个PU中的另一个的全相联缓存行,则通过该第一PU确定该第一缓存是否包含处于无效的一致性状态下的缓存行的部件;
用于如果该第一缓存包含处于无效的一致性状态下的缓存行,则将该第一数据块存储在处于无效的一致性状态下的缓存行中并且更新该第一数据块的一致性状态的部件;
用于如果该第一缓存不包含处于无效的一致性状态下的缓存行,则通过该第一PU确定该第一缓存是否包含处于已移动的一致性状态下的缓存行的部件;以及
用于如果该第一缓存包含处于已移动的一致性状态下的缓存行,则选择处于已移动的一致性状态下的缓存行,将该第一数据块存储在处于已移动的一致性状态下的所选择的缓存行中并且更新该第一数据块的一致性状态的部件。
12.如权利要求11所述的装置,其中所述用于如果该第一缓存包含处于已移动的一致性状态下的缓存行,则选择处于已移动的一致性状态下的缓存行,将该第一数据块存储在处于已移动的一致性状态下的所选择的缓存行中并且更新该第一数据块的一致性状态的部件包括:
用于如果该第一缓存包含处于已移动的一致性状态下的缓存行,则通过该第一PU确定该第一缓存是否包含处于已移动的一致性状态下的一个以上的缓存行的部件;
用于如果该第一缓存包含处于已移动的一致性状态下的一个以上的缓存行,则在任何其他一致性状态之前选择处于已移动的和已标记的一致性状态下的缓存行作为全相联缓存行,以及在处于已移动的和已修改的一致性状态下的缓存行之前选择处于已移动的和排他的一致性状态下的缓存行作为全相联缓存行的部件;以及
用于将该第一数据块存储在该全相联缓存行中并且更新该第一数据块的一致性状态的部件。
13.如权利要求11所述的装置,还包括用于将处于已移动的一致性状态下的所选择的缓存行掷出到存储器的部件。
14.如权利要求11所述的装置,还包括:
用于如果该第一缓存不包含处于已移动的一致性状态下的缓存行,则通过该第一PU确定在该第一缓存中的最近最少使用过的LRU缓存行的部件;
用于通过第一PU确定该LRU缓存行是否处于共享的一致性状态的部件;以及
用于如果该LRU缓存行处于共享的一致性状态,则将该第一数据块存储在该LRU缓存行中并且更新该第一数据块的一致性状态的部件。
15.如权利要求14所述的装置,还包括:
用于如果该LRU缓存行不是处于共享的一致性状态,则确定该LRU缓存行是否处于自身的一致性状态的部件;以及
用于如果该LRU缓存行处于自身的一致性状态,则请求该多个PU中的另一个接受该LRU缓存行的部件。
16.如权利要求15所述的装置,还包括:
用于如果该多个PU中的另一个接受该LRU缓存行,则将该LRU缓存行发送到该接受的PU的部件;以及
用于将该第一数据块存储在由该LRU缓存行空出的第一缓存位置中并且更新该第一数据块的一致性状态的部件。
17.如权利要求15所述的装置,还包括:
用于如果该多个PU中的另一个拒绝该LRU缓存行,则通过第一PU确定该LRU缓存行是否处于排他的一致性状态的部件;
用于如果该LRU缓存行不是处于排他的一致性状态,则将该LRU缓存行掷出到存储器的部件;以及
用于将该第一数据块存储在由该LRU缓存行空出的第一缓存位置中并且更新该第一数据块的一致性状态的部件。
18.一种用于管理数据处理***中的缓存的装置,该***具有***存储器和多个处理单元PU,每个PU具有包括多个缓存行的缓存,每个缓存行具有多种一致性状态下的一种状态,并且每个PU耦合到该多个PU中的至少另一个,该装置包括:
用于通过第二PU来从第一PU接收用于将来自第一PU的第一缓存的第一数据块存储在第二PU的第二缓存中的请求的部件;
用于确定该第一数据块是否与在第二缓存中处于共享的一致性状态下的缓存行匹配部件;
用于如果该第一数据块与在第二缓存中处于共享的一致性状态下的缓存行匹配,则通过第二PU接受该请求而不传送数据的部件;
用于如果该第一数据块与在第二缓存中处于共享的一致性状态下的缓存行不匹配,则通过第二PU确定该第二缓存是否包含处于无效的一致性状态的缓存行的部件;
用于如果该第二缓存包含处于无效的一致性状态的缓存行,则接受该请求,将该第一数据块存储在处于无效的一致性状态下的缓存行中,并且更新第一数据块的一致性状态的部件;
用于如果该第二缓存不包含处于无效的一致性状态的缓存行,则通过第二PU确定该第二缓存是否包含处于共享的一致性状态的缓存行的部件;
用于如果该第二缓存包含处于共享的一致性状态的缓存行,则接受该请求,将该第一数据块存储在处于共享的一致性状态下的缓存行中,并且更新第一数据块的一致性状态的部件;
用于如果该第二缓存不包含处于共享的一致性状态的缓存行,则通过第二PU确定该第二缓存是否包含处于已移动的一致性状态的缓存行的部件;以及
用于如果该第二缓存不包含处于已移动的一致性状态的缓存行,则拒绝该请求的部件。
19.如权利要求18所述的装置,还包括:
用于如果该第二缓存包含处于已移动的一致性状态的缓存行,则接受该请求,将该第一数据块存储在处于已移动的一致性状态下的缓存行中,并且 更新第一数据块的一致性状态的部件。
20.如权利要求18所述的装置,还包括:
用于如果该第二缓存包含处于已移动的一致性状态的缓存行,则通过第二PU确定处于已移动的一致性状态的缓存行是否也处于已标记的一致性状态的部件;
用于如果处于已移动的一致性状态的缓存行也处于已标记的一致性状态,则将处于已移动的一致性状态的缓存行中的数据掷出到存储器的部件;以及
用于接受该请求,将该第一数据块存储到处于已移动的一致性状态的缓存行空出的缓存位置中,并且更新第一数据块的一致性状态的部件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/959,804 US7836257B2 (en) | 2007-12-19 | 2007-12-19 | System and method for cache line replacement selection in a multiprocessor environment |
US11/959,804 | 2007-12-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101464840A CN101464840A (zh) | 2009-06-24 |
CN101464840B true CN101464840B (zh) | 2012-11-21 |
Family
ID=40790039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101768291A Expired - Fee Related CN101464840B (zh) | 2007-12-19 | 2008-11-25 | 用于管理数据处理***中的缓存的装置和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7836257B2 (zh) |
CN (1) | CN101464840B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8803897B2 (en) * | 2009-09-03 | 2014-08-12 | Advanced Micro Devices, Inc. | Internal, processing-unit memory for general-purpose use |
CN102103568B (zh) * | 2011-01-30 | 2012-10-10 | 中国科学院计算技术研究所 | 片上多核处理器***的高速缓存一致性协议的实现方法 |
US10162754B2 (en) | 2016-03-08 | 2018-12-25 | International Business Machines Corporation | Lateral cast out of cache memory |
CN105912415B (zh) * | 2016-04-05 | 2017-12-29 | 浪潮电子信息产业股份有限公司 | 一种验证cache一致性协议的方法及装置 |
US10303605B2 (en) * | 2016-07-20 | 2019-05-28 | Intel Corporation | Increasing invalid to modified protocol occurrences in a computing system |
US10133669B2 (en) | 2016-11-15 | 2018-11-20 | Intel Corporation | Sequential data writes to increase invalid to modified protocol occurrences in a computing system |
US10528482B2 (en) | 2018-06-04 | 2020-01-07 | International Business Machines Corporation | Cache management |
US11829636B2 (en) * | 2021-09-01 | 2023-11-28 | Micron Technology, Inc. | Cold data identification |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1231443A (zh) * | 1998-02-17 | 1999-10-13 | 国际商业机器公司 | 垂直高速缓冲的伪精确i-高速缓存的包括性 |
CN1499382A (zh) * | 2002-11-05 | 2004-05-26 | 华为技术有限公司 | 廉价冗余磁盘阵列***中高效高速缓存的实现方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6185658B1 (en) * | 1997-12-17 | 2001-02-06 | International Business Machines Corporation | Cache with enhanced victim selection using the coherency states of cache lines |
US6247098B1 (en) * | 1998-02-17 | 2001-06-12 | International Business Machines Corporation | Cache coherency protocol with selectively implemented tagged state |
US6970976B1 (en) | 1999-06-25 | 2005-11-29 | International Business Machines Corporation | Layered local cache with lower level cache optimizing allocation mechanism |
US6460114B1 (en) | 1999-07-29 | 2002-10-01 | Micron Technology, Inc. | Storing a flushed cache line in a memory buffer of a controller |
US6385695B1 (en) | 1999-11-09 | 2002-05-07 | International Business Machines Corporation | Method and system for maintaining allocation information on data castout from an upper level cache |
US7076609B2 (en) | 2002-09-20 | 2006-07-11 | Intel Corporation | Cache sharing for a chip multiprocessor or multiprocessing system |
US7392353B2 (en) | 2004-12-03 | 2008-06-24 | International Business Machines Corporation | Prioritization of out-of-order data transfers on shared data bus |
US7343455B2 (en) | 2005-02-09 | 2008-03-11 | International Business Machines Corporation | Cache mechanism and method for avoiding cast out on bad victim select and recycling victim select operation |
US7337280B2 (en) * | 2005-02-10 | 2008-02-26 | International Business Machines Corporation | Data processing system and method for efficient L3 cache directory management |
US7305523B2 (en) | 2005-02-12 | 2007-12-04 | International Business Machines Corporation | Cache memory direct intervention |
US7305522B2 (en) | 2005-02-12 | 2007-12-04 | International Business Machines Corporation | Victim cache using direct intervention |
US7277992B2 (en) * | 2005-03-22 | 2007-10-02 | Intel Corporation | Cache eviction technique for reducing cache eviction traffic |
US7386669B2 (en) | 2005-03-31 | 2008-06-10 | International Business Machines Corporation | System and method of improving task switching and page translation performance utilizing a multilevel translation lookaside buffer |
US7237070B2 (en) | 2005-04-19 | 2007-06-26 | International Business Machines Corporation | Cache memory, processing unit, data processing system and method for assuming a selected invalid coherency state based upon a request source |
-
2007
- 2007-12-19 US US11/959,804 patent/US7836257B2/en not_active Expired - Fee Related
-
2008
- 2008-11-25 CN CN2008101768291A patent/CN101464840B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1231443A (zh) * | 1998-02-17 | 1999-10-13 | 国际商业机器公司 | 垂直高速缓冲的伪精确i-高速缓存的包括性 |
CN1499382A (zh) * | 2002-11-05 | 2004-05-26 | 华为技术有限公司 | 廉价冗余磁盘阵列***中高效高速缓存的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
US7836257B2 (en) | 2010-11-16 |
CN101464840A (zh) | 2009-06-24 |
US20090164736A1 (en) | 2009-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101464840B (zh) | 用于管理数据处理***中的缓存的装置和方法 | |
CN101149706B (zh) | 支持掷出的一致性管理的处理器、数据处理***和方法 | |
US7747825B2 (en) | Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of shared memory blocks | |
US7827354B2 (en) | Victim cache using direct intervention | |
US7620776B2 (en) | Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of modified memory blocks | |
US5940856A (en) | Cache intervention from only one of many cache lines sharing an unmodified value | |
US7500065B2 (en) | Data processing system and method for efficient L3 cache directory management | |
US8495308B2 (en) | Processor, data processing system and method supporting a shared global coherency state | |
US7305523B2 (en) | Cache memory direct intervention | |
US5946709A (en) | Shared intervention protocol for SMP bus using caches, snooping, tags and prioritizing | |
KR100567099B1 (ko) | L2 디렉토리를 이용한 멀티프로세서 시스템의 가-저장촉진 방법 및 장치 | |
US5524208A (en) | Method and apparatus for performing cache snoop testing using DMA cycles in a computer system | |
US5963974A (en) | Cache intervention from a cache line exclusively holding an unmodified value | |
US6502171B1 (en) | Multiprocessor system bus with combined snoop responses explicitly informing snoopers to scarf data | |
EP0936554B1 (en) | Cache coherency protocol including a hovering (H) state having a precise mode and an imprecise mode | |
US8296520B2 (en) | System and method for optimizing neighboring cache usage in a multiprocessor environment | |
KR101072174B1 (ko) | 능동적 프리페치들로 향상된 호버 상태를 실시하는 시스템 및 방법 | |
US6345339B1 (en) | Pseudo precise I-cache inclusivity for vertical caches | |
JPH10326226A (ja) | キャッシュ動作要求間の競合に応答して置換用の代替キャッシュ・エントリを選択する方法及びシステム | |
US6349367B1 (en) | Method and system for communication in which a castout operation is cancelled in response to snoop responses | |
US20090150619A1 (en) | Coherent caching of local memory data | |
EP0976047B1 (en) | Read operations in multiprocessor computer system | |
US7496715B1 (en) | Programmable cache management system and method | |
US6658536B1 (en) | Cache-coherency protocol with recently read state for extending cache horizontally | |
JPH09128346A (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121121 Termination date: 20181125 |
|
CF01 | Termination of patent right due to non-payment of annual fee |