CN109154911A - 用于监视高速缓存行在不同的高速缓存级下的状态的阴影标签存储器 - Google Patents
用于监视高速缓存行在不同的高速缓存级下的状态的阴影标签存储器 Download PDFInfo
- Publication number
- CN109154911A CN109154911A CN201680086083.8A CN201680086083A CN109154911A CN 109154911 A CN109154911 A CN 109154911A CN 201680086083 A CN201680086083 A CN 201680086083A CN 109154911 A CN109154911 A CN 109154911A
- Authority
- CN
- China
- Prior art keywords
- cache
- shade
- cache line
- tag ram
- coherency states
- 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.)
- Granted
Links
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/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
-
- 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
- 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/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- 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
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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/60—Details of cache memory
- G06F2212/6042—Allocation of cache space to multiple users or processors
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
一种处理系统(100),包括:多个处理器核心(111、112、113、114)和多个专用高速缓存(131、132、133、134)。每个专用高速缓存与所述多个处理器核心中的对应的处理器核心相关联,并且包括对应的第一高速缓存行组。所述处理系统还包括共享高速缓存(140),所述共享高速缓存由所述多个处理器核心共享。所述共享高速缓存包括第二高速缓存行组和阴影标签存储器(142),所述阴影标签存储器包括多个条目(216),每个条目存储关于所述专用高速缓存中的一个的所述第一高速缓存行组中的对应的高速缓存行的状态信息(215)。
Description
背景技术
相关领域的描述
处理系统典型地利用数据高速缓存来加速对存储在系统存储器中的数据的访问。数据高速缓存以高速缓存分层结构的形式实现,其中多级高速缓存用于临时地存储从系统存储器访问的数据。相干协议通常在这种多级高速缓存中实现,以确保处理器核心不对已经过时或以其它方式无效的高速缓存数据进行操作。然而,在独占高速缓存实现方式中(即允许在高速缓存行的仅一个级处高速缓存有效的高速缓存行的情况),常规的高速缓存技术通常引起过多的探针通信量用来实现相干协议,并且由此可能影响高速缓存性能。
附图说明
通过参考附图,更好地理解本公开,并且其许多特征和优点对于本领域的技术人员而言是显而易见的。在不同附图中使用相同的参考符号指示类似或相同的项。
图1是根据一些实施方案的利用阴影标签存储器的处理系统的框图。
图2是根据一些实施方案的具有用于存储关于2级(L2)高速缓存的状态信息的阴影标签存储器的3级(L3)高速缓存的框图。
图3是根据一些实施方案的示出用于实现阴影标签存储器以改善高速缓存性能的过程的流程图。
图4是根据一些实施方案的示出用于使用阴影标签存储器过滤高速缓存探针的过程的流程图。
图5是根据至少一些实施方案的示出用于使用阴影标签存储器的耦合的填充/牺牲请求的过程的图。
图6是根据一些实施方案的示出使用阴影标签存储器的独占转发(Fe)相干状态的示例性使用的图。
图7是根据一些实施方案的示出使用阴影标签存储器的被脏占用(Od)相干状态的示例性使用的图。
图8是根据一些实施方案的示出使用阴影标签存储器将高速缓存行从高速缓存分层结构驱逐到存储器的过程的流程图。
具体实施方式
图1至图8示出了利用阴影标签存储器来提供有效高速缓存操作的处理系统。处理系统实现一个或多个计算复合体,每个计算复合体具有多个处理器核心和具有两级或更多级高速缓存的高速缓存分层结构。每个处理器核心与一级或多级高速缓存相关联,一级或多级高速缓存专用于对应的核心(以下称为“专用高速缓存”)。处理系统还实现在另一个级处的高速缓存,并且在另一个级处的高速缓存在计算复合体的处理器核心间共享(以下称为“共享高速缓存”)。共享高速缓存的控制器在阴影标签存储器中保持关于专用高速缓存的高速缓存行的地址信息和状态信息。该状态信息包括例如关于专用高速缓存中的每一个的高速缓存行的相干信息,以及关于专用高速缓存处的高速缓存行的先前历史的信息。这种相干信息包括例如来自相干状态组的相干状态的指示符,相干状态组是由专用高速缓存实现的相干状态组的超集。通过该阴影标签存储器,共享高速缓存能够基于阴影标签存储器中存在的行而过滤发送到专用高速缓存的探针。如果在阴影标签存储器中不存在探针行,那么不需要将探针发送到专用高速缓存并且由此被共享高速缓存过滤掉。对于源自计算复合体内或计算复合体与整个系统之间的探针,该探针过滤减少到计算复合体内的专用高速缓存的探针通信量。在一些实施方案中,阴影标签存储器还以更高的精细度跟踪专用高速缓存的高速缓存行的状态,以及更有效地处理来自专用高速缓存级的高速缓存行填充请求和其相关联的高速缓存行牺牲请求。
图1示出了根据至少一些实施方案的利用阴影标签存储器的处理系统100。在所示的示例中,处理系统100包括计算复合体102、高速缓存分层结构104、存储器控制器106和南桥108。计算复合体102包括多个处理器核心,例如在该示例中所示的四个处理器核心111、112、113、114。处理器核心包括例如中央处理单元(CPU)核心、图形处理单元(GPU)核心、数字信号处理器(DSP)核心或其组合。将了解,计算复合体102的处理器核心的数量可以少于或多于四个。
存储器控制器106作为高速缓存分层结构104和系统存储器116之间的接口操作。因此,要高速缓存在高速缓存分层结构104中的数据典型地作为被称为“高速缓存行”的数据块操纵,并且所述数据块使用系统存储器116的物理地址在存储器分层结构中进行寻址或以其它方式定位。响应于来自高速缓存分层结构104的存储器请求,由存储器控制器106从系统存储器116访问高速缓存行。同样,当存储器含有修改过的数据的高速缓存行从高速缓存分层结构104驱逐出并因此需要在系统116中进行更新时,存储器控制器106管理该回写过程。南桥108作为高速缓存分层结构104、存储器控制器106和处理系统100的一个或多个外围设备118(例如,网络接口、键盘、鼠标、显示器和其它输入/输出装置)之间的接口操作。
高速缓存分层结构104包括两级或更多级高速缓存。在所示的示例中,高速缓存分层结构104包括三个高速缓存级、:级1(L1);级2(L2);以及级3(L3)。对于L1,核心复合体102为每个处理核心实现小的专用高速缓存,小的专用高速缓存被示出为L1高速缓存121、122、123、124,每个高速缓存与处理器核心111至114中的对应的处理器核心相关联,如图1所示。
对于L2,核心复合体102为每个处理器核心实现更大专用高速缓存,更大专用高速缓存被示出为分别对应于处理器核心111至114的L2高速缓存131、132、133、134,也如图1所示。L2高速缓存131至134中的每一个专用于其对应的处理器核心,但是高速缓存分层结构104操作来维持L2高速缓存131至134之间的相干性。在一些实施方案中,L2高速缓存131至134可以是直接映射的或n路集合关联高速缓存。
对于L3高速缓存级,高速缓存分层结构104实现L3高速缓存140,L3高速缓存140由计算复合体102的处理器核心共享,并且由此由至少L2高速缓存131至134共享。L3高速缓存140实现:L3控制器142;L3数据阵列,所述L3数据阵列包括多个索引和多个对应的路,每个路用于在对应的索引处存储对应的高速缓存行;以及L3标签阵列,所述L3标签阵列用于存储与每个索引/路相关联的标签信息。L3数据阵列和L3标签阵列共同地示出,并且在本文中被称为L3数据/标签阵列144。
L3高速缓存140还包括阴影标签存储器146,以存储关于L2高速缓存131至134的高速缓存行的地址信息和状态信息(即,存储表示L2高速缓存131至134的标签信息的“阴影标签”)。为此,阴影标签存储器146被实现为高速缓存、阵列、表、锁存器、触发器或其它存储配置,以便包括分层地布置为多个“存储体”、多个索引和多个路的阴影标签条目。即,阴影标签存储器146中的每个条目对应于特定的存储体、索引和路组合。阴影标签存储器146中的每个阴影标签条目跟踪关于存在于L2高速缓存31至134中的一个中的对应的高速缓存行的信息。存储在关于对应的高速缓存行的阴影标签条目处的信息包括例如高速缓存行的物理地址(或其部分)以及L2高速缓存处的高速缓存行的状态。每个存储体含有多个索引和路,并且表示用于跟踪存在于L2高速缓存中的一个中的高速缓存行的阴影标签条目。因此,对于图1的示例,阴影标签存储器146包括四个“存储体”,四个L2高速缓存131至134中的每一个各用一个。
为了说明,图2示出了根据一些实施方案的L3高速缓存140的示例性实现方式。L3高速缓存140被分段为多个“片”和路由逻辑206,其中所示的示例具有四个片201、202、203、204(也表示为片1至4),路由逻辑206用于基于与每个通信相关联的地址如何在片1至4内定位而将通信路由到相应的片和从相应的片路由通信。每个片表示由L2高速缓存131至134使用的地址分布的对应的“片”。每个片还表示阴影标签存储器146的对应的“片”。因此,由于在该示例中存在四个片,因此片201至204中的每一个存储L2高速缓存131至134的地址空间的对应的25%以及阴影标签存储器146的条目的对应的25%。为此,如片201的详细视图所示,每个片包括L3数据/标签片208、阴影标签片210和片控制器212。对于片201,L3数据/标签片208具有L2高速缓存地址范围的前25%的数据和标签阵列条目,而对于片201,L3数据/标签片208具有L2高速缓存地址范围的之后的25%的数据和标签阵列条目,依此类推。类似地,对于片201,阴影标签片210包括阴影标签存储器146的索引的前25%,对于片202,阴影标签片210包括阴影标签存储器146的索引的之后的25%,依此类推。
图2还更详细地示出了阴影标签存储器146的示例性布置。如上指出,阴影标签存储器146被存储为阴影标签片210组,每个阴影标签片210具有与阴影标签存储器146相关联的整个地址范围的对应部分。因此,每个阴影标签片210包括多个存储体、索引和路。每个阴影标签片210中的存储体的数量对应于L2高速缓存的数量。因此,由于在图1的示例中存在四个L2高速缓存131至134,在该示例中,每个阴影标签片210包括分别与L2高速缓存131、132、133、134相关联的四个存储体221、222、223、224。存储体的关联性(即,路的数量)与同该存储体相关联的L2高速缓存的关联性相同。例如,如果L2高速缓存是八路关联的,那么阴影标签存储器146的每个存储体也是八路关联的,即,具有八个路。相反,如果L2高速缓存是直接映射的,那么阴影标签存储器146的每个存储体也是直接映射的;即,每个存储体实际上是单路集合关联高速缓存。给定存储体中的索引和路的特定组合表示跟踪存在于L2高速缓存中的对应的高速缓存行的阴影标签条目216。阴影标签存储器146的每个条目具有地址字段214和状态字段215,地址字段214存储与条目216相关联的高速缓存行的地址的至少一部分(典型地是物理地址的高位),状态字段215用于存储关于高速缓存行的状态信息。存储在阴影标签存储器146的对应的条目216中的关于L2高速缓存的高速缓存行的状态信息和地址信息典型地反映存储在L2高速缓存的标签阵列中的关于该高速缓存行的标签信息的至少一个子集,并且由此“遮蔽”L2高速缓存的关于该高速缓存行的标签。由此,L3高速缓存140的阴影标签存储器146中的状态信息可以被视为L2高速缓存131至134中的对应的高速缓存行标签的“阴影标签”。
以下表1说明阴影标签存储器位置216的示例性格式和使用,以便表示关于对应的L2高速缓存行的状态信息。
表1:阴影标签存储器位置格式
因此,如表1所示,存储在与特定核心/L2高速缓存处的特定高速缓存行相关联的阴影标签条目216中的状态信息不仅包括该L2高速缓存处的高速缓存行的物理地址的标签部分的副本,而且还有关于高速缓存行的相干状态信息,以及用于促成处理将高速缓存行从L2高速缓存的驱逐的分配信息。
图3示出了根据一些实施方案的L3高速缓存140的阴影标签存储器146的一般操作和使用。如框302所示,L3控制器142监视L2高速缓存131至134的操作(经由例如相干总线或其它窥探机制),以便识别L2高速缓存131至134处的高速缓存行的状态变化并相应地更新阴影标签存储器146。为了说明,当新高速缓存行被带入L2高速缓存131至134中时,L3控制器142识别片201至204中的哪一个与高速缓存行的物理地址相关联,识别所识别的片的阴影标签片210的索引和路,并且更新对应于L2高速缓存的存储体处的阴影标签条目216以反映该高速缓存行向L2高速缓存的添加。类似地,当高速缓存行的状态在L2高速缓存131至134处改变时,L3控制器142识别片201至204中的哪一个与高速缓存行相关联,并且然后更新在该所识别的片的阴影标签片210处更新对应于L2高速缓存的存储体处的一个阴影标签条目216以反映高速缓存行的更新过的状态。从L2高速缓存131至134驱逐高速缓存行同样触发L3控制器142从阴影标签存储器146驱逐高速缓存行。
在一些实施方案中,高速缓存分层结构104将L2高速缓存级和L3高速缓存级保持为独占高速缓存,即,存在于L2高速缓存131至134中的一个中的高速缓存行将不存在于L3高速缓存140中,反之亦然。然而,通过实际上在L3高速缓存140的阴影标签存储器146处保持关于驻留在L2高速缓存131至134中的高速缓存行的标签或其它状态信息而不在L3高速缓存140处保持L2高速缓存行中的任一个,结果产生一种混合方法,借此,L2高速缓存级和L3高速缓存级是独占数据的,但是“包含”标签的。即,通过在阴影标签存储器146中保持关于L2高速缓存行的状态信息,L3高速缓存140具有对L2高速缓存131至134的状态以及存储在其中的数据的相干状态的可见性,而不必存储与L2高速缓存131至134的高速缓存行相关联的实际数据中的任何数据。这种对L2高速缓存的高速缓存行状态的L3级洞察实现许多有利的操作。
为了说明,如框304所示,由于L3高速缓存140具有关于哪些高速缓存行存储在L2高速缓存131至134(以及这些高速缓存行的状态)的信息,因此L3高速缓存140非常适合用作由存储器控制器106、南桥108或处理系统100在计算复合体102之外的其它部件提交的对高速缓存行的高速缓存探针的探针过滤器。以下参考图4更详细地描述该探针过滤过程。作为另一示例,如框306所示,L3高速缓存140处的阴影标签信息允许L3高速缓存140实现L2填充请求,L2填充请求也具有相关联的L2高速缓存行驱逐请求(在下文中,“L2牺牲请求”)以作为组合请求来避免在常规高速缓存系统中处理这两种请求的许多陷阱。以下参考图5更详细地描述这种情况的示例。作为又一个示例,框308表示使用L3高速缓存140处的阴影标签存储器146以比在L2高速缓存131至134处应用的更高的精细度来跟踪L2高速缓存行的相干性的过程,这减少了系统级高速缓存探针的数量,并且由此改善整体系统性能。以下参考图6和图7描述这种高精细度相干状态跟踪的示例。另外,框310表示阴影标签存储器146促成L3牺牲处理的过程,如以下参考图8更详细地描述。
图4示出了根据至少一个实施方案的使用阴影标签存储器146由L3高速缓存140实现的探针过滤器方法400。在高速缓存分层结构(诸如处理系统100的高速缓存分层结构104)中,高速缓存探针用于获取高速缓存的数据,查询高速缓存的数据的状态,改变高速缓存的数据的状态,或通过潜在地使来自高速缓存的缓存行无效来以其它方式操纵高速缓存的数据。源自计算复合体102之外的高速缓存探针(即,处理器核心111至114、L1高速缓存121至124、以及L2高速缓存131至134)或L3高速缓存140在本文中被称为“系统高速缓存探针”。这些系统高速缓存探针可以经由存储器控制器106从例如处理系统100的不同的计算复合体而来、经由南桥108从外围设备120而来等。典型地,此类系统高速缓存探针从高速缓存分层结构中的最低级(在该示例中为L3高速缓存级)传播。因此,探针过滤器方法400示出了用于这种系统高速缓存探针的探针过滤器过程。
方法400在框402处发起,其中L3控制器142接收系统高速缓存探针。响应于高速缓存探针,在框404处,L3控制器142检查L3数据/标签阵列144的标签以确定高速缓存探针所请求的高速缓存行的有效副本是否存在于L3高速缓存140中(即,高速缓存探针是否命中L3高速缓存140)。如果在L3高速缓存140中存在所请求的高速缓存行的有效副本,那么在框406处,L3控制器142发信号表示高速缓存命中并服务来自L3高速缓存140的高速缓存探针。
否则,如果在L3高速缓存140中不存在所请求的高速缓存行的有效副本,那么在框408处,L3控制器142搜索阴影标签存储器146的状态信息以确定L2高速缓存中的至少一个是否存储所请求的高速缓存行的有效副本。在框410处,L3控制器142分析搜索结果。如果阴影标签存储器146的搜索表明L2高速缓存131至136都不含有所请求的高速缓存行的有效副本,那么在框412处,L3控制器142响应于高速缓存探针而发信号表示高速缓存未命中。通过该高速缓存未命中,存储器控制器106发起存储器访问以从系统存储器116获得所请求的高速缓存行。否则,如果阴影标签存储器146的搜索表明至少一个L2高速缓存具有所请求的高速缓存行的有效副本,那么在框414处,选择具有有效副本的L2高速缓存(在存在多于一个具有有效副本的L2的情况下),并且L3控制器142将高速缓存探针转发到所选择的L2高速缓存。当存在两个或更多个具有所请求的高速缓存行的有效副本的L2高速缓存时,L3控制器基于如在阴影标签存储器146中所表示的两个或更多个L2高速缓存的相干状态的比较而选择L2高速缓存131至134中的一个来服务高速缓存探针。为了说明,优选地在具有所请求的高速缓存行的有效副本的其它L2高速缓存上选择具有在阴影标签存储器146中表示的关于所请求的高速缓存行的转发(F)或占用(O)相干状态的L2高速缓存。
因此,如方法400所示,由于阴影标签存储器146使得L3控制器142能够知道哪些高速缓存行存在于L2高速缓存131至134中并是有效得,因此在一些实施方案中,L3控制器142先发地针对不存在于L2高速缓存131至134中(即,无效)的高速缓存行向系统高速缓存探针发送高速缓存未命中信号,并且由此过滤掉本来将会被广播到L2高速缓存并被返回指示缓存行不存于L2缓存中的L2“高速缓存未命中”的高速缓存探针。
图5示出了根据一些实施方案的使用阴影标签存储器146处理L3高速缓存140处的耦合的填充/牺牲事务的过程。如上所述,驻留在L2高速缓存中的高速缓存行的L2标签和状态位保持在位于与高速缓存行相关联的索引和与L2高速缓存相关联的路处的对应的阴影标签条目216处。当L2高速缓存向特定的L2索引和路发送填充请求时,填充请求(根据情况)以相同的L2索引和路触发容量牺牲请求。如果填充请求和牺牲请求作为单独请求从L2高速缓存发送到L3高速缓存,那么针对这对请求(即,填充请求与容量牺牲请求配对)的阴影标签存储器146的状态更新可能引入非预期的操作。这样做的原因在于由L3高速缓存实现的用于缓冲此类请求的队列可能接受填充请求,并且不具有任何更多自由条目来接受来自L2高速缓存的容量牺牲请求。独立地处理填充请求和牺牲请求(两者都不驻留在请求队列中)可能在L2索引和路处更新阴影标签存储器146中引起问题。作为一个示例,如果在容量牺牲请求保持未处理的同时完成填充请求,那么对牺牲高速缓存行的地址的探针在阴影标签存储器146中将未命中,并且因此L3控制器将认为L2高速缓存不具有牺牲缓存行的副本。作为另一个示例,如果在容量牺牲请求保持未处理的同时处理填充请求并且尚未将作为填充请求的对象的高速缓存行的标签存储到阴影标签存储器146中,那么对填充高速缓存行的地址的探针在阴影标签存储器146中将未命中,并且因此L3控制器将认为L2高速缓存不具有填充高速缓存行的副本。
为了避免此类问题,在至少一个实施方案中,高速缓存分层结构104可以被配置为使得L2高速缓存131至134发出具有作为耦合的填充/牺牲请求500的所得容量牺牲请求的填充请求,耦合的填充/牺牲请求500包括填充请求502和对应的牺牲请求504两者作为提供到L3控制器142的单个请求分组。L3控制器142的队列控制器506如此识别耦合的填充/牺牲请求500,并且由此将耦合的填充/牺牲请求500排队为两个单独条目,其中填充请求502入于填充请求队列508中,并且牺牲请求入于在写入请求队列510中。为了确保成功入队,队列控制器506不使任一请求入队,直到确认两个队列508、510具有至少一个开放条目。通过接收单个请求分组中的请求502、504,并且通过确保两个请求仅在其相应的队列中存在空间时入队,避免其中在填充请求502排队而牺牲请求504丢弃的任何实例。由此,填充请求502和牺牲请求504各自可以独立地更新阴影标签存储器146。
为了说明,如果填充请求502从队列508访问并在牺牲请求504之前(例如,在L3命中的情况下)执行(如填充处理512所表示),那么在处理填充请求502中,L3控制器142可以重写阴影标签条目216处的牺牲标签,该牺牲标签由阴影标签存储器146中的L2索引和路进行索引。这是可接受的,因为在该时段内对牺牲地址的任何探针现在将会与队列510中的未完成的牺牲请求504互锁。相反,如果牺牲请求504从队列510访问并在填充请求502之前执行(如牺牲处理514所表示),那么在阴影标签存储器146的对应的索引和路处下清除牺牲高速缓存行的标签信息将会是可接受的,即使填充高速缓存行的标签信息尚未写入阴影标签存储器146中的相同位置也是如此。
除了促成有效探针过滤和准确的耦合的填充/牺牲请求处理之外,在一些实施方案中,阴影标签存储器146使得L3高速缓存140能够为存储在L2高速缓存131至134处的高速缓存行提供增强的相干操作。为此,在一些实施方案中,L3高速缓存140实现高速缓存相干协议,该高速缓存相干协议是由L2高速缓存131至134实现的高速缓存相干协议的超集。例如,L2高速缓存131至134实现MOESI(修改-占用-独占-共享-无效)相干协议,而由L3控制器保持在阴影标签存储器146处的关于L2高速缓存131至134的相干状态包括例如MOESI协议以及附加的相干状态,该附加的相干状态使得L3控制器能够例如更有效地处理内部和系统高速缓存探针,同时允许L2缓存131至134使用不太复杂的相干协议,并且由此需要L2高速缓存131至134的不太复杂的实现方式以及相同的计算复合体102的L2高速缓存131至134之间的不太复杂的通信。
图6和图7示出了用于阴影标签存储器146的超集相干协议实现方式的两个这样的示例。具体地,图6和图7示出了附加的相干状态的使用,其允许L3控制器142从相干角度或从存储器控制器106角度想起特定的高速缓存行本质上是独占的,同时仍然允许高速缓存行以在核心中的一个请求对高速缓存行的独占访问时避免对较大系统的某些探针的方式在计算复合体102内进行共享。
图6示出了其中L3高速缓存140在阴影标签存储器146处实现附加的相干状态,其表示为“独占转发”或“Fe”的示例性实现方式,。在阴影标签存储器146处使用Fe状态来记录或以其它方式记住处理器核心在与相同的计算复合体102中的另一个核心共享该高速缓存行之前具有对对应的高速缓存行的独占访问,并且由此使得L3控制器142能够在内部(即,无需对整个系统的探针)处理由另一个核心对进行对该高速缓存行的独占访问的任何请求(在本文中,这种请求被称为改变为独占或ChgToX请求)。
为了举例说明,图6示出了涉及特定的高速缓存行(被表示为“高速缓存行X”)的高速缓存访问操作的序列600。在序列600前进时在L2高速缓存131至134中的每一个处保持的关于高速缓存行X的相干状态由左侧的通道图602表示。在序列600前进时在阴影标签存储器146处的关于L2高速缓存131至134中的每一个的对应的阴影标签条目216中保持的关于高速缓存行X的相干状态由右侧的通道图604表示。处于该示例的目的,L2高速缓存131至134利用MOESI相干协议,而阴影标签存储器146除了MOESI相干协议的M、O、E、S和I相干状态之外还利用Fe相干状态(即,“MOESI+”)。
在时间0上,高速缓存行X无效地存在于L2高速缓存131至134中的任一个中,并且由此高速缓存行X的相干状态在L2高速缓存131至134的对应的标签中和在阴影标签存储器146中的对应的阴影标签(即,在阴影标签条目216中)被标记为I(无效)。在时间1上,与处理器核心111相关联的L2高速缓存131发出对高速缓存行X的填充请求606,并且在已经完成填充请求的处理之后,L2高速缓存131将高速缓存行X的相干状态从“I”(无效)改变为“E”(独占),并且由此记录新高速缓存行已经安装在L2高速缓存131中这一事实。另外,L3控制器142注意到该响应被发送到请求606,并且针对高速缓存行X和L2高速缓存131更新阴影标签存储器146的阴影标签条目216以还反映E相干状态。
在时间2上,处理器核心112发出对高速缓存行X的读出请求,读出请求又触发与处理器核心112相关联的L2高速缓存132发出对高速缓存行X的填充请求608。作为响应,L3控制器142通过搜索阴影标签存储器146来处理填充请求,并且识别在阴影标签存储器146中指示L2高速缓存131具有该高速缓存行的副本的“命中”。作为响应,L3控制器142向L2高速缓存131发送探针请求并通过用高速缓存行数据回应于L2高速缓存132来满足填充请求608。这造成L2高速缓存131共享其高速缓存行X的副本,并且L2高速缓存级处的相干控制器将L2高速缓存131、132处的高速缓存行X的相干状态改变为“S”(共享)相干状态。L3控制器142必须更新两个阴影标签存储器位置,一个对应于高速缓存行X存在于L2高速缓存131中,一个对应于高速缓存行X刚发送到L2高速缓存132。然而,比起将阴影标签存储器146中的这两个位置处的对应的相干状态改变为“S”状态,L3控制器142识别出在该操作时高速缓存行X的核心111的相干状态是“E”,并且由此对于L2高速缓存131,将“E”相干状态改变为“Fe”相干状态。由于处理器核心112在此变化时不具有“E”相干状态,因此对于阴影标签存储器146中的L2高速缓存132,L3控制器142将高速缓存行X的相干状态改变为“S”以指示L2高速缓存132正在共享高速缓存行X.
随后,在时间3上,处理器核心112发出对获得对高速缓存行X的独占访问的请求,其又触发L2高速缓存132发出ChgToX请求610。如此时通道图602中的相干状态所示,L2高速缓存131、132对于高速缓存行X具有“S”状态,并且高速缓存133和134对于高速缓存行X具有“I”状态。由此,从L2相干状态中,在发出ChgToX请求610时,L2高速缓存看起来都不具有对高速缓存行X的独占访问。由此,在常规系统中,ChgToX请求610将会必须被传播到存储器控制器106,然后将会被广播回处理系统100中的任何其它计算复合体以确定高速缓存行X的有效副本是否存在于别处,并且如果是,那么使任何此类副本无效,使得处理器1可以获得对高速缓存行X的独占访问。该过程由此造成整个系统100中大量的探针通信量。然而,由L3高速缓存140处的阴影标签存储器146提供的扩展的L2相干状态跟踪可以减少或消除这种探针业务。
为了说明,由于L3控制器142在阴影标签存储器146中将L2高速缓存131的高速缓存行X的相干状态标记为Fe,因此L3控制器142能够识别出处理器核心111/L2高速缓存131在高速缓存行X在计算复合体102内进行共享(即,与处理器核心112/L2高速缓存132共享)之前具有对高速缓存行X的独占访问。从该信息中,得出的是高速缓存行X不在计算复合体102之外进行共享,并且由此在计算复合体102之外不存在高速缓存行X的有效副本。由此,响应于在阴影标签存储器146中检测到高速缓存行X的Fe相干状态,L3控制器142能够向L2高速缓存132发信号通知L2高速缓存132可以具有对高速缓存行X的独占访问,而无需将ChgToX请求610转发到存储器控制器106,从而避免触发一个或多个外部探测器以在计算复合体102外部找到并使高速缓存行X的副本无效。响应于该信令,L2高速缓存131、132更新它们相应的标签以分别反映高速缓存行X的相干状态到状态“I”和“E”的变化。L3控制器142同样对阴影标签存储器146中的L2高速缓存131、132的相干状态进行相同变化。因此,如上所述,通过使用阴影标签存储器146中的Fe相干状态来识别在计算复合体102内进行共享之前具有对高速缓存行的独占访问的核心/L2高速缓存,外部探针可以在该相同的计算复合体102中的另一个核心随后请求独占访问时减少或消除。
图7示出了其中L3高速缓存140利用在阴影标签存储器146处被表示为“被脏占用”或“Od”的附加的相干状态的示例性实现方式。与Fe状态类似,在一些实施方案中,在阴影标签存储器146处使用Od状态来记录或以其它方式记住处理器核心具有对与相同的计算复合体102中的另一个核心共享的高速缓存行的修改过的或“脏”副本的独占访问,并且由此使得L3控制器142能够在内部(即,无需对整个系统的探针)处理由另一个核心对进行对该高速缓存行的独占访问的任何请求(在本文中,这种请求被称为改变为独占或ChgToX请求)。
为了举例说明,图7示出了涉及特定的高速缓存行(被表示为“高速缓存行X”)的高速缓存访问操作的序列700。在序列700前进时在L2高速缓存131至134中的每一个处保持的关于高速缓存行X的相干状态由左侧的通道图702表示。在序列700前进时在阴影标签存储器146处的关于L2高速缓存131至134中的每一个的对应的阴影标签条目216中保持的关于高速缓存行X的相干状态由右侧的通道图704表示。在该示例中,L2高速缓存131至134利用MOESDI相干协议,而阴影标签存储器146除了MOESI相干协议的M、O、E、S和I相干状态之外还利用Od相干状态(即,“MOESI+”)。
在时间0上,高速缓存行X无效地存在于L2高速缓存131至134中的任一个中,并且由此高速缓存行X的相干状态在L2高速缓存131至134的对应的标签中和在阴影标签存储器146中的对应的阴影标签(即,在阴影标签条目216中)被标记为I(无效)。在时间1上,与处理器核心111相关联的L2高速缓存131发出对高速缓存行X的填充请求706,并且在已经完成填充请求的处理之后,L2高速缓存131将高速缓存行X的相干状态改变为“E”(独占)。另外,L3控制器142注意到该响应被发送到请求606,并且L3控制器142针对高速缓存行X和L2高速缓存131更新阴影标签存储器146的阴影标签存储器位置216以还反映E相干状态。
在时间2上,处理器核心111发出写入请求708,写入请求708修改驻留在L2高速缓存131中的高速缓存行X的副本。作为响应,处理系统100将L2高速缓存131中的高速缓存行X的相干状态改变为“M”(修改过的)相干状态。同样,响应于在L2高速缓存131处检测到对高速缓存行X的修改,L3控制器142更新阴影标签存储器146以反映L2高速缓存131处的高速缓存行X的“M”相干状态。
在时间3上,处理器核心112发出对高速缓存行X的读出请求,读出请求又触发与处理器核心112相关联的L2高速缓存132发出对高速缓存行X的填充请求710。作为响应,L3控制器142通过搜索阴影标签存储器146来处理填充请求,并且识别在阴影标签存储器146中指示L2高速缓存131具有该高速缓存行的副本的“命中”。作为响应,L3控制器142向L2高速缓存131发送探针请求并通过用高速缓存行数据回应于L2高速缓存132来满足填充请求608。这造成L2高速缓存131与L2高速缓存132共享其高速缓存行X的脏副本,并且L2高速缓存级处的相干控制器将高速缓存行X的相干状态改变为关于L2高速缓存131的“S”(共享)相干状态和关于L2高速缓存132的“O”(占用)相干状态。然而,比起同样以相同的方式改变阴影标签存储器146中的对应的相干状态,L3控制器142识别出在该操作时高速缓存行X的核心111的相干状态是“M”,并且由此将高速缓存行X标记为具有L2高速缓存132的“Od”相干状态。由此,阴影标签存储器146表示L2高速缓存132获得从相同的计算复合体102中的另一个核心对高速缓存行X的脏副本的访问。
随后,在时间4上,处理器核心111发出对获得对高速缓存行X的独占访问的请求,其又触发L2高速缓存131发出ChgToX请求712。此时,从L2相干状态中,将不清楚高速缓存行X的独占副本是否存在于L2高速缓存131至134中的任一个中。因此,在常规系统中,ChgToX请求712将会必须被传播到存储器控制器106,然后将会被广播回处理系统100中的任何其它计算复合体以确定高速缓存行X的副本是否存在于别处,并且如果是,那么使副本无效,使得计算复合体102中的核心111可以获得对高速缓存行X的独占访问。该过程将会造成在整个系统100中大量的探针通信量。然而,由于L3控制器142在阴影标签存储器146中将L2高速缓存132的高速缓存行X的相干状态标记为Od,因此L3控制器142能够识别出处理器核心112/L2高速缓存132在与计算复合体102中的另一个核心/L2高速缓存共享高速缓存行X之前具有对高速缓存行X的独占访问。从该信息中,得出的是高速缓存行X不在计算复合体102之外进行共享,并且由此在计算复合体102之外不存在高速缓存行X的有效副本。通过该信息,L3控制器142能够向L2高速缓存131发信号表示L2高速缓存131可以具有对高速缓存行X的独占访问而不需要将ChgToX请求710转发到存储器控制器106,并且由此避免触发一个或多个外部探针在计算复合体102之外发现高速缓存行X的副本并使其无效。响应于该信令,L2高速缓存131、132更新它们相应的标签以分别反映高速缓存行X的相干状态到状态“D”和“I”的变化。L3控制器142同样对阴影标签存储器146中的L2高速缓存131、132的相干状态进行相同变化。因此,如上所述,通过使用阴影标签存储器146中的Od相干状态来识别在计算复合体102内进行共享之前具有对高速缓存行的独占访问的核心/L2高速缓存,外部探针可以在该相同的计算复合体102中的另一个核心随后请求独占访问时消除。
图8示出了根据至少一个实施方案的用于使用阴影标签存储器146有效处理报告到存储器控制器106的从高速缓存分层结构104的高速缓存行驱逐的方法800。在框802处,接收新高速缓存行以存储在L3高速缓存140处。在L3高速缓存140中安装新高速缓存行有时可能造成从L3高速缓存140的相同位置驱逐另一个现有的高速缓存行。出于以下目的,该驱逐被称为“L3牺牲”。因此,在框804处,L3控制器142确定新高速缓存行是否造成L3牺牲。如果不是,那么不需要L3牺牲处理,并且由此方法800终止。然而,如果L3牺牲产生,那么发起L3牺牲处理。在一些实施方案中,L2高速缓存131至134被实现为包含性高速缓存,并且由此包括存在于其对应的L1高速缓存121至124中的所有高速缓存行。因此,在框808处,L3控制器142搜索阴影标签存储器146以确定在阴影标签存储器146中是否存在相同的高速缓存行。如果L3牺牲在阴影标签存储器146中,那么L3控制器142在搜索过程中“命中”,并且由此L3控制器142确定高速缓存行存在于L2高速缓存131至134中的一个中。因此,响应于命中,在框810处,L3控制器142制止L3牺牲的任何进一步处理,包括制止将L3牺牲报告到存储器控制器106。然而,如果“未命中”得自阴影标签存储器搜索,那么L3控制器142确定高速缓存行不存在于L2高速缓存131至134中的任一个中。因此,响应于在框812处的未命中,L3控制器完成L3牺牲的处理,其包括将L3牺牲作为从高速缓存分层结构104的驱逐报告到存储器控制器106。因此,阴影标签存储器146的实现方式使得L3高速缓存140能够在L2高速缓存131至134中存在L3牺牲高速缓存行的实例中消除对将作为驱逐牺牲报告到存储器控制器106的L3牺牲的请求,并且由此在设计中节省功率和存储器带宽。
在一些实施方案中,上述设备和技术在包括一个或多个集成电路(IC)装置(也被称为集成电路封装或微芯片)的系统中实现,诸如以上参考图1至图8所述的处理系统100。这些IC装置的设计和制造中使用了电子设计自动化(EDA)和计算机辅助设计(CAD)软件工具。这些设计工具典型地表示为一个或多个软件程序。一个或多个软件程序包括可由计算机系统执行的代码以操纵计算机系统以对表示一个或多个IC装置的电路的代码进行操作,以便执行设计或调适制造系统以制造电路的过程的至少一部分。该代码包括指令、数据或指令和数据的组合。表示设计工具或制造工具的软件指令典型地存储在计算系统可访问的计算机可读存储介质中。同样,表示IC装置的设计或制造的一个或多个阶段的代码存储在相同的计算机可读存储介质或不同的计算机可读存储介质中并从中访问。
非暂时性计算机可读存储介质包括在使用期间可由计算机系统访问以向计算机系统提供指令和/或数据的任何非暂时性计算机存储介质,或非暂时性计算机存储介质的组合。此类存储介质包括但不限于光学介质(例如,压缩盘(CD)、数字通用盘(DVD)、蓝光盘)、磁性介质(例如,软盘、磁带或磁性硬驱动器)、易失性存储器(例如,随机存取存储器(RAM)或高速缓存)、非易失性存储器(例如,只读存储器(ROM)或闪存存储器))或基于微机电系统(MEMS)的存储介质。非暂时性计算机可读存储介质嵌入在计算系统(例如,系统RAM或ROM)中、固定地附接到计算系统(例如,磁性硬驱动器)、移动地附接到计算系统(例如,光盘或基于通用串行总线(USB)的闪存存储器)或经由有线网络或无线网络(例如,网络可访问的存储装置(NAS))联接到计算机系统。
在一些实施方案中,上述技术的某些方面由执行软件的处理系统的一个或多个处理器实现。软件包括存储或以其它方式有形地体现在非暂时性计算机可读存储介质上的一个或多个可执行指令集。软件包括所述指令和某些数据,所述指令和某些数据在由一个或多个处理器执行时操纵一个或多个处理器执行上述技术的一个或多个方面。非暂时性计算机可读存储介质包括例如磁盘或光盘存储装置、固态存储装置(诸如闪存存储器)、高速缓存、随机存取存储器(RAM),或一个或多个其它非易失性存储器装置等。存储在非暂时性计算机可读存储介质上的可执行指令集以源代码、汇编语言代码、目标代码或可由一个或多个处理器解释或以其它方式执行的其它指令格式实现。
要注意,并不需要以上在概述中描述的所有活动或要素,可不需要特定活动或装置的一部分,并且除了所描述的那些之外,还会执行一个或多个另外活动,或包括一个或多个另外要素。另外,活动被列出的顺序不一定是它们被执行的顺序。而且,已经参考特定实施方案来描述了构思。然而,本领域的普通技术人员将了解,在不脱离如以下权利要求中阐述的本公开的范围的情况下,可以做出各种修改和改变。因此,本说明书和附图被认为是说明性而非限制性的,并且所有此类修改旨在包括在本公开的范围内。
以上已经针对特定实施方案描述益处、其它优点和问题的解决方案。然而,益处、优点、问题的解决方案和导致任何益处、优点或解决方案出现或变得更突出的任何特征不应被解释为任何权利要求或所有权利要求的关键、所需或基本特征。此外,以上公开的特定实施方案仅是说明性的,因为所公开的主题以对本领域的受益于本文中的教义的技术人员显而易见的不同但等效的方式来修改和实践。除了如以下权利要求中所描述的之外,本文中示出的构造或设计的细节旨在是没有限制的。因此,明显的是,以上公开的特定实施方案可以被更改或修改,并且所有此类变化被认为是在所公开的主题的范围内的。因此,本文中寻求的保护如以下权利要求中阐述。
Claims (17)
1.一种处理系统(100),所述处理系统包括:
多个处理器核心(111、112、113、114);
多个专用高速缓存(131、132、133、134),每个专用高速缓存与所述多个处理器核心中的对应的处理器核心相关联,并且包括对应的高速缓存行组;以及
共享高速缓存(140),所述共享高速缓存由所述多个处理器核心共享,所述共享高速缓存包括:
第二高速缓存行组,以及
阴影标签存储器(146),所述阴影标签存储器包括多个条目(216),每个条目存储关于所述专用高速缓存中的一个的所述高速缓存行组中的对应的高速缓存行的状态信息(215)和地址信息(214)。
2.如权利要求1所述的处理系统,其中:
所述专用高速缓存被配置为根据第一相干状态组存储关于对应的所述高速缓存行组的所述高速缓存行的相干状态;并且
所述阴影标签存储器用于根据第二相干状态组存储关于所述多个专用高速缓存的所述高速缓存行组的所述高速缓存行的相干状态,所述第二相干状态组包括所述第一相干状态组的超集。
3.如权利要求2所述的处理系统,其中所述第二相干状态组包括表示从所述多个专用高速缓存中的具有对相关联的高速缓存行的独占访问的一个获得所述相关联的高速缓存行的相干状态。
4.如权利要求2所述的处理系统,其中所述第二相干状态组包括表示从所述多个专用高速缓存中的具有对相关联的高速缓存行的独占访问的一个以修改形式获得所述相关联的高速缓存行的相干状态。
5.如权利要求1所述的处理系统,其中所述共享高速缓存还包括:
控制器(142),所述控制器用于基于所述阴影标签存储器而过滤高速缓存探针。
6.如权利要求5所述的处理系统,其中所述控制器通过以下方式过滤高速缓存探针:
搜索所述阴影标签存储器以确定所述阴影标签存储器是否具有关于与高速缓存探针相关联的高速缓存行的有效条目;以及
响应于确定所述阴影标签存储器不具有关于所述高速缓存行的有效条目,响应于所述高速缓存探针而发信号表示高速缓存未命中。
7.如权利要求5所述的处理系统,其中所述控制器进一步通过以下方式过滤高速缓存探针:
响应于确定所述阴影标签存储器具有关于所述高速缓存行的有效条目,识别与所述有效条目相关联的所述专用高速缓存并将所述高速缓存探针转发到所识别的专用高速缓存。
8.一种处理系统(100)中的方法,所述处理系统包括与多个处理器核心(111、112、113、114)相关联的多个专用高速缓存(131、132、133、134)和由所述多个处理器核心共享的共享高速缓存(140),所述方法包括:
在所述多个专用高速缓存处保持关于存储在所述多个专用高速缓存处的高速缓存行的相干信息;以及
在所述共享高速缓存的阴影标签存储器(142)处保持关于存储在所述多个专用高速缓存处的所述高速缓存行的相干信息。
9.如权利要求8所述的方法,其中:
在所述多个专用高速缓存处保持所述相干信息包括根据第一相干状态组在所述多个专用高速缓存处保持所述相干信息;并且
在所述共享高速缓存的所述阴影标签存储器处保持所述相干信息包括根据第二相干状态组保持所述相干信息,所述第二相干状态组包括所述第一相干状态组的超集。
10.如权利要求9所述的方法,其中所述第二相干状态组包括表示从所述多个专用高速缓存中的具有对相关联的高速缓存行的独占访问的一个获得所述相关联的高速缓存行的相干状态。
11.如权利要求9所述的方法,其中所述第二相干状态组包括表示从所述多个专用高速缓存中的具有对相关联的高速缓存行的独占访问的一个以修改形式获得所述相关联的高速缓存行的相干状态。
12.如权利要求8所述的方法,所述方法还包括:
在所述共享高速缓存处基于所述阴影标签存储器而过滤高速缓存探针。
13.如权利要求12所述的方法,其中过滤高速缓存探针包括:
搜索所述阴影标签存储器以确定所述阴影标签存储器是否具有关于与高速缓存探针相关联的高速缓存行的有效条目(216);以及
响应于确定所述阴影标签存储器不具有关于所述高速缓存行的有效条目,响应于所述高速缓存探针而发信号表示高速缓存未命中。
14.如权利要求8所述的方法,所述方法还包括:
搜索所述阴影标签存储器以确定所述阴影标签存储器是否具有关于从所述共享高速缓存驱逐的高速缓存行的有效条目(216);
响应于确定不存在关于所述高速缓存行的有效条目而将所述高速缓存行报告为被驱逐到存储器控制器(106);以及
响应于确定存在关于所述高速缓存行的有效条目而制止将所述高速缓存行报告为被驱逐到所述存储器控制器。
15.一种处理系统(100),所述处理系统包括:
多个专用高速缓存(131、132、133、134),每个专用高速缓存专用于处理器核心(111、112、113、114)组的对应的处理器核心;以及共享高速缓存(140),所述共享高速缓存由所述处理器核心组共享,其中所述共享高速缓存被保持为相对于所述多个专用高速缓存是独占数据的并且相对于所述多个专用高速缓存是包含标签的。
16.如权利要求15所述的处理系统,其中所述共享高速缓存包括:
阴影标签存储器(142),所述阴影标签存储器存储状态信息,所述状态信息表示由所述多个专用高速缓存存储的关于存储在所述专用高速缓存处的高速缓存行的标签信息。
17.如权利要求16所述的处理系统,其中:
所述专用高速缓存中的每一个被配置为根据第一相干状态组存储关于所述专用高速缓存的高速缓存行的相干状态;并且
由所述阴影标签存储器存储的所述状态信息包括根据第二相干状态组的关于所述多个专用高速缓存的所述高速缓存行的至少一个子集的相干状态,所述第二相干状态组包括所述第一相干状态组的超集。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/190,607 | 2016-06-23 | ||
US15/190,607 US10073776B2 (en) | 2016-06-23 | 2016-06-23 | Shadow tag memory to monitor state of cachelines at different cache level |
PCT/US2016/052607 WO2017222577A1 (en) | 2016-06-23 | 2016-09-20 | Shadow tag memory to monitor state of cachelines at different cache level |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109154911A true CN109154911A (zh) | 2019-01-04 |
CN109154911B CN109154911B (zh) | 2021-03-05 |
Family
ID=60677550
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680086083.8A Active CN109154911B (zh) | 2016-06-23 | 2016-09-20 | 用于监视高速缓存行在不同的高速缓存级下的状态的阴影标签存储器 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10073776B2 (zh) |
JP (1) | JP6653768B2 (zh) |
KR (1) | KR102429404B1 (zh) |
CN (1) | CN109154911B (zh) |
WO (1) | WO2017222577A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112612727A (zh) * | 2020-12-08 | 2021-04-06 | 海光信息技术股份有限公司 | 一种高速缓存行替换方法、装置及电子设备 |
CN112612726A (zh) * | 2020-12-08 | 2021-04-06 | 海光信息技术股份有限公司 | 基于缓存一致性的数据存储方法、装置、处理芯片及服务器 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10373285B2 (en) * | 2017-04-09 | 2019-08-06 | Intel Corporation | Coarse grain coherency |
US10325341B2 (en) | 2017-04-21 | 2019-06-18 | Intel Corporation | Handling pipeline submissions across many compute units |
US10528519B2 (en) * | 2017-05-02 | 2020-01-07 | Mellanox Technologies Ltd. | Computing in parallel processing environments |
US10885213B2 (en) * | 2017-09-12 | 2021-01-05 | Sophos Limited | Secure firewall configurations |
US10528483B2 (en) * | 2017-10-23 | 2020-01-07 | Advanced Micro Devices, Inc. | Hybrid lower-level cache inclusion policy for cache hierarchy having at least three caching levels |
US11275688B2 (en) | 2019-12-02 | 2022-03-15 | Advanced Micro Devices, Inc. | Transfer of cachelines in a processing system based on transfer costs |
US20230099256A1 (en) * | 2021-09-29 | 2023-03-30 | Advanced Micro Devices, Inc. | Storing an indication of a specific data pattern in spare directory entries |
US11797451B1 (en) * | 2021-10-15 | 2023-10-24 | Meta Platforms Technologies, Llc | Dynamic memory management in mixed mode cache and shared memory systems |
CN114217861A (zh) * | 2021-12-06 | 2022-03-22 | 海光信息技术股份有限公司 | 数据处理方法及装置、电子装置和存储介质 |
US11960399B2 (en) | 2021-12-21 | 2024-04-16 | Advanced Micro Devices, Inc. | Relaxed invalidation for cache coherence |
WO2023146334A1 (ko) * | 2022-01-27 | 2023-08-03 | 한국과학기술원 | 로그 기반 파일 시스템에서 쓰레기 수집과 트랜잭션의 병행 처리를 위한 쓰레기 수집 방법 |
US11954034B2 (en) | 2022-03-28 | 2024-04-09 | Woven By Toyota, Inc. | Cache coherency protocol for encoding a cache line with a domain shared state |
US11907124B2 (en) | 2022-03-31 | 2024-02-20 | International Business Machines Corporation | Using a shadow copy of a cache in a cache hierarchy |
US20240202116A1 (en) * | 2022-12-20 | 2024-06-20 | Advanced Micro Devices, Inc. | Method and Apparatus for Increasing Memory Level Parallelism by Reducing Miss Status Holding Register Allocation in Caches |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1609823A (zh) * | 2003-10-23 | 2005-04-27 | 英特尔公司 | 用于维持共享高速缓存一致性的方法和设备 |
CN1746867A (zh) * | 2004-09-08 | 2006-03-15 | 英特尔公司 | 使用核心指示符的高速缓存过滤 |
US20060080512A1 (en) * | 2004-10-08 | 2006-04-13 | International Business Machines Corporation | Graphics processor with snoop filter |
CN1910560A (zh) * | 2004-06-03 | 2007-02-07 | 索尼计算机娱乐公司 | 用于在回写高速缓存中同时窥探推入或窥探取消操作过程中取消回写操作的系统和方法 |
CN103136117A (zh) * | 2011-08-08 | 2013-06-05 | Arm有限公司 | 探听过滤器和非包含共享高速缓冲存储器 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5297269A (en) | 1990-04-26 | 1994-03-22 | Digital Equipment Company | Cache coherency protocol for multi processor computer system |
US5897656A (en) | 1996-09-16 | 1999-04-27 | Corollary, Inc. | System and method for maintaining memory coherency in a computer system having multiple system buses |
US6018763A (en) | 1997-05-28 | 2000-01-25 | 3Com Corporation | High performance shared memory for a bridge router supporting cache coherency |
US7146468B2 (en) | 2002-04-24 | 2006-12-05 | Ip-First, Llc. | Cache memory and method for handling effects of external snoops colliding with in-flight operations internally to the cache |
US8301844B2 (en) * | 2004-01-13 | 2012-10-30 | Hewlett-Packard Development Company, L.P. | Consistency evaluation of program execution across at least one memory barrier |
US7213106B1 (en) | 2004-08-09 | 2007-05-01 | Sun Microsystems, Inc. | Conservative shadow cache support in a point-to-point connected multiprocessing node |
US7337280B2 (en) | 2005-02-10 | 2008-02-26 | International Business Machines Corporation | Data processing system and method for efficient L3 cache directory management |
US7386683B2 (en) | 2005-03-29 | 2008-06-10 | International Business Machines Corporation | Method and apparatus for filtering snoop requests in a point-to-point interconnect architecture |
US7836262B2 (en) * | 2007-06-05 | 2010-11-16 | Apple Inc. | Converting victim writeback to a fill |
US8429349B2 (en) | 2008-09-18 | 2013-04-23 | International Business Machines Corporation | Techniques for cache injection in a processor system with replacement policy position modification |
US20100146209A1 (en) | 2008-12-05 | 2010-06-10 | Intellectual Ventures Management, Llc | Method and apparatus for combining independent data caches |
US8904115B2 (en) | 2010-09-28 | 2014-12-02 | Texas Instruments Incorporated | Cache with multiple access pipelines |
US9268697B2 (en) | 2012-12-29 | 2016-02-23 | Intel Corporation | Snoop filter having centralized translation circuitry and shadow tag array |
US9727466B2 (en) * | 2014-08-26 | 2017-08-08 | Arm Limited | Interconnect and method of managing a snoop filter for an interconnect |
US9542316B1 (en) * | 2015-07-23 | 2017-01-10 | Arteris, Inc. | System and method for adaptation of coherence models between agents |
-
2016
- 2016-06-23 US US15/190,607 patent/US10073776B2/en active Active
- 2016-09-20 WO PCT/US2016/052607 patent/WO2017222577A1/en active Application Filing
- 2016-09-20 CN CN201680086083.8A patent/CN109154911B/zh active Active
- 2016-09-20 JP JP2018555925A patent/JP6653768B2/ja active Active
- 2016-09-20 KR KR1020187036777A patent/KR102429404B1/ko active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1609823A (zh) * | 2003-10-23 | 2005-04-27 | 英特尔公司 | 用于维持共享高速缓存一致性的方法和设备 |
CN1910560A (zh) * | 2004-06-03 | 2007-02-07 | 索尼计算机娱乐公司 | 用于在回写高速缓存中同时窥探推入或窥探取消操作过程中取消回写操作的系统和方法 |
CN1746867A (zh) * | 2004-09-08 | 2006-03-15 | 英特尔公司 | 使用核心指示符的高速缓存过滤 |
US20060080512A1 (en) * | 2004-10-08 | 2006-04-13 | International Business Machines Corporation | Graphics processor with snoop filter |
CN103136117A (zh) * | 2011-08-08 | 2013-06-05 | Arm有限公司 | 探听过滤器和非包含共享高速缓冲存储器 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112612727A (zh) * | 2020-12-08 | 2021-04-06 | 海光信息技术股份有限公司 | 一种高速缓存行替换方法、装置及电子设备 |
CN112612726A (zh) * | 2020-12-08 | 2021-04-06 | 海光信息技术股份有限公司 | 基于缓存一致性的数据存储方法、装置、处理芯片及服务器 |
CN112612726B (zh) * | 2020-12-08 | 2022-09-27 | 海光信息技术股份有限公司 | 基于缓存一致性的数据存储方法、装置、处理芯片及服务器 |
Also Published As
Publication number | Publication date |
---|---|
US10073776B2 (en) | 2018-09-11 |
KR20190011257A (ko) | 2019-02-01 |
JP2019519028A (ja) | 2019-07-04 |
CN109154911B (zh) | 2021-03-05 |
WO2017222577A1 (en) | 2017-12-28 |
JP6653768B2 (ja) | 2020-02-26 |
KR102429404B1 (ko) | 2022-08-05 |
US20170371786A1 (en) | 2017-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109154911A (zh) | 用于监视高速缓存行在不同的高速缓存级下的状态的阴影标签存储器 | |
CN107038123A (zh) | 用于数据处理系统中的缓存一致性的探听过滤器 | |
KR100978156B1 (ko) | 스누프 필터에서의 실효를 감소시키기 위한 라인 스와핑 스킴을 위한 방법, 장치, 시스템 및 컴퓨터 판독 가능 기록 매체 | |
US10423354B2 (en) | Selective data copying between memory modules | |
CN111263934B (zh) | 至少具有三个缓存级别的缓存层级的混合低级缓存包含策略 | |
CN110413199A (zh) | 管理存储系统的方法、设备和计算机程序产品 | |
CN110413541A (zh) | 支持附加实地址不可知加速器的集成电路和数据处理系统 | |
CN106484628A (zh) | 基于事务的混合存储器模块 | |
US11550720B2 (en) | Configurable cache coherency controller | |
TW200805061A (en) | Patrol snooping for higher level cache eviction candidate identification | |
US8621152B1 (en) | Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access | |
CN107438837A (zh) | 数据高速缓存 | |
JP6630449B2 (ja) | 他のキャッシュでのエントリの可用性に基づくキャッシュエントリの置換 | |
CN109684231A (zh) | 用于识别固态盘中的热数据和流的系统及方法 | |
CN112955876B (zh) | 用于在数据处理网络中传输数据的方法和装置 | |
CN110235101A (zh) | 可变转换后备缓冲器(tlb)编索引 | |
TWI502346B (zh) | 根據窺探回應資訊之目錄快取分配技術 | |
CN110088738A (zh) | 存储操作队列 | |
JP2024533612A (ja) | 擬似lru補足時期情報を用いた再参照間隔予測(rrip) | |
CN109478164A (zh) | 用于存储用于高速缓存条目传输的高速缓存位置信息的系统和方法 | |
US10452548B2 (en) | Preemptive cache writeback with transaction support | |
CN104077237B (zh) | 缓冲存储器、缓冲存储器控制单元和缓冲存储器的控制方法 | |
US7685372B1 (en) | Transparent level 2 cache controller | |
CN109840220A (zh) | 零颠簸高速缓存队列管理器 | |
JP2021506028A (ja) | 共通のメモリページからメモリへのキャッシュラインのリンス |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |