CN111133423A - 具有事务支持的抢占式高速缓存写回 - Google Patents
具有事务支持的抢占式高速缓存写回 Download PDFInfo
- Publication number
- CN111133423A CN111133423A CN201880061718.8A CN201880061718A CN111133423A CN 111133423 A CN111133423 A CN 111133423A CN 201880061718 A CN201880061718 A CN 201880061718A CN 111133423 A CN111133423 A CN 111133423A
- Authority
- CN
- China
- Prior art keywords
- cache
- controller
- shared
- private
- unused bandwidth
- 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
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/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
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- 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/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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
-
- 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/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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
- G06F2212/1024—Latency reduction
-
- 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/1041—Resource optimization
- G06F2212/1044—Space efficiency 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/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- 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/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/507—Control mechanisms for virtual memory, cache or TLB using speculative control
-
- 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
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
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
一种抢占式高速缓存写回方法包括从第一高速缓存(118)的第一高速缓存控制器(120)向第二高速缓存(122)的第二高速缓存控制器(124)传输未使用带宽消息,所述未使用带宽消息表示在第一循环期间在所述第一高速缓存与所述第二高速缓存之间的未使用带宽。在第二循环期间,基于所述未使用带宽消息,将包含脏数据的高速缓存行从所述第二高速缓存抢占式地写回到所述第一高速缓存。此外,响应于对所述第二高速缓存的高速缓存缺失而改写所述第二高速缓存中的所述高速缓存行。
Description
政府许可权
本发明是在美国能源部(DOE)授予劳伦斯·利弗莫尔国家安全局的PathForward项目(主合同No.DE-AC52-07NA27344,分包合同No.B620717)的政府支持下完成的。政府享有本发明的某些权利。
背景技术
处理系统通常实现一个或多个计算复合体,每一计算复合体具有多个处理器内核和具有两个或更多级的高速缓存层次结构。等待时间段与处理器内核请求数据的时间与接收到请求的数据的时间之间的时间相关联。为了最大程度地减少处理器内核用于闲置和等待数据的时间,许多处理系统使用高速缓存层次结构中的高速缓存存储器来存储程序指令和数据的临时副本。在高速缓存层次结构中,每一处理器内核与对应内核专用的一个或多个高速缓存级别(下文中称为“私有高速缓存”)相关联。处理系统还在高速缓存层次结构的另一级别上实现共享高速缓存,其中共享高速缓存在计算复合体的处理器内核之间共享(下文中称为“共享高速缓存”)。
附图说明
通过参考附图,可以更好地理解本公开,并且本公开的众多特征和优点对于本领域技术人员而言是显而易见的。在不同图式中使用相同的附图标记来指示类似或相同的项目。
图1是根据一些实施方案的利用抢占式高速缓存写回的处理系统的框图。
图2是图示根据一些实施方案的示例性抢占式高速缓存写回操作的框图。
图3是图示根据一些实施方案的另一示例性抢占式高速缓存写回操作的框图。
图4是图示根据一些实施方案的又一示例性抢占式高速缓存写回操作的框图。
图5是图示根据一些实施方案的抢占式高速缓存写回方法的流程图。
具体实施方式
图1到图5图示利用抢占式高速缓存写回以减少高速缓存内的脏行的数目的技术,由此缩短由于“脏”行(也就是说,在高速缓存处已被修改,但尚未被写入到较低级别的高速缓存的高速缓存行)的写回而导致的未来高速缓存缺失的等待时间。为了说明,在多核处理系统中,其中每一内核与一个或多个级别的私有高速缓存相关联并且内核共享高速缓存层次结构的另一非私有级别处的共享高速缓存,如果高速缓存处发生高速缓存缺失,则对应的高速缓存控制器可能需要驱逐高速缓存行以便为“缺失”的数据(即,与导致高速缓存缺失的存储器地址相关联的数据)腾出空间。常见地,如果要驱逐的高速缓存行是脏高速缓存行,则高速缓存控制器通过在驱逐高速缓存行之前将脏高速缓存行写入(称为“写回”)到较低级别的高速缓存或主存储器来保持存储器一致性。写回因此会给导致脏高速缓存行的写回的每一高速缓存缺失带来性能惩罚。
为了减轻这种性能惩罚,在各种实施方案中,处理系统通过从第一高速缓存的高速缓存控制器和第二高速缓存的高速缓存控制器周期性地传输未使用带宽消息来采用抢占式缓存写回,所述未使用带宽消息表示在第一循环期间在第一高速缓存与第二高速缓存之间的未使用带宽。在第二高速缓存的高速缓存控制器处计算高速缓存行的数目,基于未使用带宽消息,所述数目的高速缓存行可以抢占式地从第二高速缓存写入到第一高速缓存而不会超过未使用带宽。在第二循环期间,将计算出数目的高速缓存行从第二高速缓存抢占式地写回到第一高速缓存。计算出数目的高速缓存行的这种抢占式高速缓存写回减少在遇到需要从第二高速缓存驱逐脏高速缓存行的高速缓存缺失之前的第二高速缓存中的脏高速缓存行的数目。因此,可以改写与第二高速缓存的未来高速缓存缺失相关联的数据,而无需等待到较低级别的高速缓存和/或系统存储器的写回,从而减少系统资源的浪费(例如,高速缓存之间的带宽)并且提高性能。
图1图示根据至少一些实施方案的利用抢占式高速缓存写回的处理系统100。在所描绘的实例中,处理系统100包括例如两个处理器内核102和104的多个处理器内核、高速缓存层次结构106、存储器控制器108和系统存储器110。处理器内核102、104包括例如中央处理单元(CPU)内核、图形处理单元(GPU)内核、数字信号处理器(DSP)内核或其组合。应当了解,处理系统的处理器内核的数目可以少于或多于两个。
存储器控制器108作为高速缓存层次结构106与系统存储器110之间的接口操作。因此,通常使将要缓存在高速缓存层次结构106中的数据作为被称为“高速缓存行”的数据块进行操作,并且使用与系统存储器110相关联的虚拟或实体地址在存储器层次结构中定址或另外定位所述数据块。在一些实施方案中,每一高速缓存行还存储用于管理高速缓存行的额外数据,例如用于识别与高速缓存行相关联的存储器地址的高速缓存行标签数据,和/或用于将高速缓存行中的数据与其他高速缓存或与系统存储器110同步的高速缓存一致性数据。在各种实施方案中,高速缓存标签可以由与高速缓存行相关联的存储器地址的全部或一部分形成。存储器控制器108响应于来自高速缓存层次结构106的存储器请求从系统存储器110访问高速缓存行。同样地,当从高速缓存层次结构106驱逐包含修改的数据的高速缓存行并且因此需要在系统存储器110中更新时,存储器控制器108管理这个写回过程。
高速缓存层次结构106包括两个或更多级别的高速缓存。在图示的实例中,高速缓存层次结构106包括三个高速缓存级别:级别1(L1)、级别2(L2)和级别3(L3)。对于L1,处理系统100为每一处理内核实现小型私有高速缓存,所述私有高速缓存被描绘为各自与处理器内核102、104中的对应处理器内核相关联的L1高速缓存112、114。L1高速缓存112、114中的每一个实现L1高速缓存控制器116,所述L1高速缓存控制器116处理来自处理器内核102、104的存储器访问请求。在这个实施方案中,L1高速缓存112、114中的每一个被图示为能够存储相应的处理器内核102、104可能需要的任何类型的数据的单个高速缓存存储器。然而,其他实施方案可以包括与每一处理器内核102、104相关联的用于分开地存储不同类型的数据的单独L1高速缓存单元,例如程序指令高速缓存、程序数据高速缓存和转换后备缓冲区数据高速缓存。
对于L2,处理系统100实现更大的(以相对于L1高速缓存112、114的存储大小)L2高速缓存118。如图所示,L2高速缓存118由处理器内核102、104共享。在一些实施方案中,处理系统100使用包含性高速缓存设计,其中存储在L1高速缓存112、114中的数据也被复制在L2高速缓存118中。在其他实施方案中,处理系统100使用排他性高速缓存设计,其中高速缓存绝不共享数据。L2高速缓存118实现L2高速缓存控制器120,所述L2高速缓存控制器120管理共享的L2高速缓存118并且通过各种一致性方案来帮助维持片上数据的一致性。高速缓存缺失在处理器内核102、104需要的数据或指令不在高速缓存中时发生。举例来说,L1高速缓存缺失被发送到L2高速缓存控制器120,所述L2高速缓存控制器120然后检查L2高速缓存118是否有命中(即,期望的数据或指令在L2高速缓存中)。
对于L3,处理系统100实现L3高速缓存122,所述L3高速缓存122相对于L2高速缓存118和L1高速缓存112、114在存储大小上总体上更大。L3高速缓存122由处理器内核102、104共享,并且因此由至少L1高速缓存112、114和L2高速缓存118共享。L3高速缓存122实现L3高速缓存控制器124,所述L3高速缓存控制器124管理L3高速缓存122并且通过各种一致性方案来帮助维持片上数据的一致性。L2高速缓存缺失被发送到L3高速缓存控制器124,所述L3高速缓存控制器124然后检查L3高速缓存122是否有命中(即,期望的数据或指令在L3高速缓存中)。
虽然L1高速缓存112、114中的每一个是其对应的处理器内核私用的,但是高速缓存层次结构104操作以维持L1高速缓存112、114、L2高速缓存118与L3高速缓存122之间的一致性。特别地,L1高速缓存112、114、L2高速缓存118和L3高速缓存122实现存储器一致性协议(在本文中简称为“一致性协议”)。每一高速缓存行与由一致性协议控制的对应一致性信息相关联,以指示高速缓存行的一致性状态,以及如何在一致性协议的规则下处理高速缓存行。
举例来说,一致性协议可以确立一致性状态,例如“已修改”指示高速缓存行可以在对应的高速缓存中修改,“排他性”指示对应的缓存行不能在与其他处理器内核相关联的高速缓存中修改,而“共享”指示高速缓存行由高速缓存层次结构104的多个高速缓存共享,并且因此不应被修改。对于如由处理系统实现的特定一致性协议所定义的指定事件,高速缓存层次结构104的高速缓存可以发出高速缓存探针以识别其他高速缓存中的给定高速缓存行的一致性状态。举例来说,在将高速缓存行的一致性状态从共享改变为排他性之前,高速缓存可以发出高速缓存探针以识别高速缓存行是否存储在任何其他高速缓存中,如果是,则改变存储高速缓存行的高速缓存中的高速缓存行的一致性状态。基于对探针的响应,发出探针的高速缓存可以按照一致性协议规则的要求采取适当的措施。举例来说,如果没有其他高速缓存存储高速缓存行,则高速缓存可以将所述高速缓存行的状态从“共享”改变为“排他性”。
如上所述,高速缓存层次结构106的高速缓存存储器通常被划分成固定数目的高速缓存存储器位置,被称为高速缓存行。通常,每一高速缓存行与一组系统存储器地址相关联。每一高速缓存行适于存储来自其相关联的系统存储器地址中的一个的程序指令和/或数据的副本。当处理器内核102、104中的一个修改或更新存储在高速缓存存储器位置中的数据时,最终将需要将所述数据复制回到系统存储器中。如果存储在高速缓存行中的数据在高速缓存层次结构106的高速缓存存储器(例如,L1高速缓存112、114、L2高速缓存118和/或L3高速缓存122)中的一个内被修改,但未修改成在系统存储器110中反映,则高速缓存存储器中的数据被称为“脏数据”。通常,处理器或处理器内核推迟用脏数据更新系统存储器110,直到处理器内核需要高速缓存行存储来自系统存储器110的不同数据的副本为止。
在一个实施方案中,L1高速缓存112、114中的每一个可以存储有限数目的高速缓存行。当超出L1高速缓存的容量时,将高速缓存行中的一个从L1高速缓存中移除以为新的高速缓存行腾出空间。移除的高速缓存行被称为受害者行。可以根据例如选择最近最少使用的高速缓存行的高速缓存替换策略和/或根据与程序相关联的高速缓存指令来选择受害者高速缓存行。如果受害者行中的数据尚未被相关联的处理器内核修改,则受害者行中的数据可能被丢弃或重写。然而,如果受害者行中的数据已被相关联的处理器内核(例如,处理器内核102、104中的一个)修改,则脏数据(即,在高速缓存存储器中被修改但在系统存储器110中未被修改)必须被复制回系统存储器110(或不同高速缓存级别的存储器)以确保程序的正确操作。将已修改的高速缓存数据从高速缓存存储器复制到较低级别的高速缓存存储器或系统存储器被称为写回操作。
应当了解,性能惩罚与由脏高速缓存行的写回导致的高速缓存缺失产生的等待时间相关联。举例来说,当在L1高速缓存112中未找到处理器内核102需要的数据或指令时,从其他高速缓存级别(例如,L2高速缓存118或L3高速缓存122)或从系统存储器110获取请求的数据。然而,如果L1高速缓存112已满,则必须从L1高速缓存112中移除现有的高速缓存行中的至少一个,以为处理器内核102请求的新高速缓存行腾出空间。如果在L1高速缓存112(可以容易地改写)中没有干净的高速缓存行,则在可以将处理器内核102请求的数据写入L1高速缓存112中之前,由于等待脏高速缓存行的写回而导致等待时间。
在各种实施方案中,例如下面更详细地描述的,将不同高速缓存和/或存储器级别之间的未使用带宽(每预定时间单位,在本文中称为“循环”)从一个高速缓存报告给存储器层次结构106中的下一级别高速缓存。作为一实例,L2高速缓存控制器120向L1高速缓存控制器116发送未使用带宽消息,所述未使用带宽消息表示每循环中的L1高速缓存112与L2高速缓存118之间的带宽利用率。响应于未使用带宽消息,L1高速缓存控制器116计算可以从L1高速缓存112写入到L2高速缓存118的脏高速缓存行的数目,以便利用但不超过每循环的可用未使用带宽。在下一循环期间,将计算出数目的脏高速缓存行抢占式地写入到存储器层次结构106中较低的下一高速缓存级别(例如,从L1高速缓存112到L2高速缓存118)。写回到L2高速缓存118的高速缓存行可以在L1高速缓存112中标记为干净的。
如本文中所使用的,“抢占式地”是指在遇到整个高速缓存的高速缓存缺失之前将脏高速缓存行从高速缓存写回到较低的下一高速缓存级别,这将需要逐出至少一个脏高速缓存行才能将数据写入到整个高速缓存中。随后,响应于高速缓存缺失,先前被抢占式地写回但仍然包含脏数据的高速缓存行可以被改写,但不会从高速缓存驱逐任何数据。因此,减少了L1高速缓存112中的脏高速缓存行的数目,并且与L1高速缓存112的未来高速缓存缺失相关联的数据可以改写干净的高速缓存行,而无需等待到较低级别的高速缓存和/或系统存储器110的写回,从而减少系统资源的浪费(例如,高速缓存之间的带宽)并且提高性能。
图2是图示根据一些实施方案的示例性抢占式高速缓存写回操作的图解。典型的存储器包含组织成一组高速缓存行的存储器阵列。在图2的实例中,存储器阵列202中的每一高速缓存行包括对应的地址标签,所述地址标签识别与存储在所述高速缓存行中的数据相关联的主存储器位置。此外,每一高速缓存行包括高速缓存行状态识别符,例如用于指示特定高速缓存行中的数据是否与系统存储器110中存储的数据不同的脏位。如图所示,位值1表示高速缓存行中的数据是脏的,而位值0表示高速缓存行中的数据是干净的。在各种实施方案中,每一高速缓存行还包括有效位以指示块中的数据是否有效。
在第一循环期间,L2高速缓存控制器120向L1高速缓存控制器116传达未使用带宽消息,所述未使用带宽消息表示每循环中的L1高速缓存112与L2高速缓存118之间的带宽利用率。如图2的实例中所示,L1高速缓存控制器116基于未使用带宽消息来计算可以将一条脏高速缓存行从L1高速缓存112写入到L2高速缓存118,以便利用但不超过可用的未使用带宽。因此,在第二循环期间,L1高速缓存112的脏高速缓存行202中的数据被写回到L2高速缓存118的高速缓存行206。在这个示例性实施方案中,写回到L2高速缓存118的高速缓存行在L1高速缓存112中被标记为干净的。因此,L1高速缓存112中的脏高速缓存行的数目减小,并且与L1高速缓存112的未来高速缓存缺失相关联的数据可以改写高速缓存行204,而无需等待数据A到较低级别的高速缓存和/或系统存储器110的写回。
在图2的实例中,高速缓存层次结构利用一种层次结构(不是严格排他的,因为允许高速缓存行存在于多个高速缓存中,但并不要求如此),在所述层次结构中,较高级别的高速缓存(即,L1高速缓存112)中的所有高速缓存行也存在于较低级别的高速缓存(即,L2高速缓存118)中。在抢占式高速缓存行写回之后,在L1高速缓存112和L2高速缓存118二者中存在包含数据A的高速缓存行的副本,即使高速缓存行204被标记为干净的并且高速缓存行206被标记为脏的。此外,在这个实例中,使用分配策略,其中首先在高速缓存缺失时将高速缓存行分配给L1高速缓存112。L2高速缓存118作为受害者高速缓存操作,因为L2高速缓存118在写回操作之后接收高速缓存行的副本。在其他实施方案中,高速缓存层次结构可以利用严格排他的层次结构,其中较低级别的高速缓存(即,L2高速缓存118)包含在较高级别的高速缓存(即,L1高速缓存112)中不存在的高速缓存行。在此等实施方案(未示出)中,在抢占式高速缓存行写回之后,从较高级别的高速缓存驱逐高速缓存行的副本。在其他实施方案中,高速缓存层次结构可以替代地利用严格包含的层次结构,其中L1高速缓存112和L2高速缓存118均响应于高速缓存缺失而在写入时获得高速缓存行的副本。
虽然在图2的实例中仅图示L1高速缓存112和L2高速缓存118,但是应当理解,本文所述的所描述的抢占式高速缓存行写回可以在存储器层次结构(例如,图1的高速缓存层次结构106)中的任何高速缓存存储器之间执行。举例来说,L3控制器124可以向L2高速缓存控制器120传达未使用带宽消息,所述未使用带宽消息表示每循环中的L3高速缓存122与L2高速缓存118之间的带宽利用率。在各种实施方案中,这种抢占式高速缓存行写回可以应用于高速缓存层次结构106的任何级别,或者可以在高速缓存层次结构106的所有高速缓存之间在每一循环同时执行(例如,对于每一循环,在L1高速缓存112/L2高速缓存118之间,以及还在L2高速缓存118/L3高速缓存122之间)。
此外,应当理解,本文所述的所描述的抢占式高速缓存行写回不限于高速缓存之间的未使用带宽,并且还可以应用于存储器层次结构中的任何存储器。在一些实施方案中,可以在系统存储器110与高速缓存层次结构的最后一级高速缓存之间应用本文所述的抢占式高速缓存行写回操作。举例来说,在图1的上下文中,存储器控制器108可以向L3高速缓存控制器124传达未使用带宽消息,所述未使用带宽消息表示每循环中的L3高速缓存122与系统存储器110之间的带宽利用率。
在如本文所述的各种实施方案中,可以根据标准高速缓存替换策略来执行用于抢占式写回的脏高速缓存行的选择,标准高速缓存替换策略例如最近最少使用(LRU)策略,众所周知,在最近最少使用(LRU)策略中,高速缓存首先写回最近最少使用的项目。在其他实施方案中,可以通过为每一高速缓存行提供计数器来优化抢占式高速缓存写回。图3是图示根据一些实施方案的另一示例性抢占式高速缓存写回操作的图解。
在图3的实例中,存储器阵列302中的每一高速缓存行包括对应的地址标签,所述地址标签识别与存储在所述高速缓存行中的数据相关联的主存储器位置。每一高速缓存行包括高速缓存行状态识别符,例如用于指示特定高速缓存行中的数据是否与系统存储器110中存储的数据不同的脏位。如图所示,位值1表示高速缓存行中的数据是脏的,而位值0表示高速缓存行中的数据是干净的。在各种实施方案中,每一高速缓存行还包括有效位以指示块中的数据是否有效。此外,每一高速缓存行还包括计数器位,所述计数器位基于预定的时间表定期重置,每当在高速缓存行中写入数据时,所述计数器位递增。举例来说,自最近一次计数器复位以来,L1高速缓存112的高速缓存行304中的数据A已经写入一次或以其他方式修改一次。自最近一次计数器复位以来,L1高速缓存112的高速缓存行306中的数据B已经写入一次或以其他方式修改一次。自最近一次计数器复位以来,L1高速缓存112的高速缓存行308中的数据C已经写入七次或以其他方式修改七次,并且自最近一次计数器复位以来,L1高速缓存112的高速缓存行310中的数据D已经写入两次或以其他方式修改两次。
在第一循环期间,L2高速缓存控制器120向L1高速缓存控制器116传达未使用带宽消息,所述未使用带宽消息表示每循环中的L1高速缓存112与L2高速缓存118之间的带宽利用率。如图3的实例中所示,L1高速缓存控制器116基于未使用带宽消息来计算可以将三个脏高速缓存行从L1高速缓存112写入到L2高速缓存118,以便利用但不超过可用的未使用带宽。因此,在第二循环期间,L1高速缓存112的三个脏高速缓存行中的数据被写回到L2高速缓存118。在这个示例性实施方案中,L1高速缓存控制器116通过选择具有低计数器值的高速缓存行用于在具有高计数器值的高速缓存行之前写回来确定哪些高速缓存行将被写回。因为具有较高计数器值的高速缓存行很可能在不久的将来导致写入命中并且因此被写成包含脏数据,所以优先处理低计数器高速缓存行的抢占式写回降低写回流量并且提高抢占式写回过程的效率。此外,写回流量的降低减少存储器层次结构的较低级别处的非易失性存储器的损耗。
因此,如图3中所示,L1高速缓存控制器116确定高速缓存行304、306和310具有最低的三个计数器值,并且在第二循环期间,L1高速缓存112的三个脏高速缓存行中的数据被写回到L2高速缓存118。因此,在这个示例性实施方案中,写回到L2高速缓存118的高速缓存行304、306和310在L1高速缓存112中被标记为干净的。L1高速缓存112中的脏高速缓存行的数目减小,并且与对L1高速缓存112的未来高速缓存缺失相关联的数据可以改写高速缓存行304、306和310上,而无需等待数据A、数据B和数据D到较低级别的高速缓存和/或系统存储器110的写回。还将了解,对L1高速缓存112的未来高速缓存缺失将导致L1高速缓存控制器116优先处理在仍然保持标记为脏的高速缓存行308上写入到干净的高速缓存行304、306和310。
类似于图2的实例,图3的高速缓存层次结构利用一种层次结构(不是严格排他的,因为允许高速缓存行存在于多个高速缓存中,但并不要求如此),在所述层次结构中,较高级别的高速缓存(即,L1高速缓存112)中的所有高速缓存行也存在于较低级别的高速缓存(即,L2高速缓存118)中。因此,在抢占式高速缓存行写回之后,在L1高速缓存112和L2高速缓存118二者中存在包含数据A、数据B和数据D的高速缓存行的副本,即使高速缓存行在L1高速缓存112中被标记为干净的并且高速缓存行在L2高速缓存118中被标记为脏的。此外,在这个实例中,使用分配策略,其中首先在高速缓存缺失时将高速缓存行分配给L1高速缓存112。L2高速缓存118作为受害者高速缓存操作,因为L2高速缓存118在写回操作之后接收高速缓存行的副本。在其他实施方案中,高速缓存层次结构可以利用严格排他的层次结构,其中较低级别的高速缓存(即,L2高速缓存118)包含在较高级别的高速缓存(即,L1高速缓存112)中不存在的高速缓存行。在此等实施方案(未示出)中,在抢占式高速缓存行写回之后,从较高级别的高速缓存驱逐高速缓存行的副本。在其他实施方案中,高速缓存层次结构可以替代地利用严格包含的层次结构,其中L1高速缓存112和L2高速缓存118均响应于高速缓存缺失而在写入时获得高速缓存行的副本。
虽然在图3的实例中仅图示L1高速缓存112和L2高速缓存118,但是应当理解,本文所述的所描述的抢占式高速缓存行写回可以在存储器层次结构(例如,图1的高速缓存层次结构106)中的任何高速缓存存储器之间执行。举例来说,L3控制器124向L2高速缓存控制器120传达未使用带宽消息,所述未使用带宽消息表示每循环中的L3高速缓存122与L2高速缓存118之间的带宽利用率。在各种实施方案中,这种抢占式高速缓存行写回可以应用于高速缓存层次结构106的任何级别,或者可以在高速缓存层次结构106的所有高速缓存之间在每一循环同时执行(例如,对于每一循环,在L1高速缓存112/L2高速缓存118之间,以及还在L2高速缓存118/L3高速缓存122之间)。
此外,应当理解,本文所述的所描述的抢占式高速缓存行写回不限于高速缓存之间的未使用带宽,并且还可以应用于存储器层次结构中的任何存储器。在一些实施方案中,可以在系统存储器110与高速缓存层次结构的最后一级高速缓存之间应用本文所述的抢占式高速缓存行写回操作。举例来说,在图1的上下文中,存储器控制器108可以向L3高速缓存控制器124传达未使用带宽消息,所述未使用带宽消息表示每循环中的L3高速缓存122与系统存储器110之间的带宽利用率。
图4是图示根据一些实施方案的又一示例性抢占式高速缓存写回操作的图解。在图4的实例中,每一高速缓存行包括高速缓存行状态识别符,例如用于指示特定高速缓存行中的数据是否与系统存储器110中存储的数据不同的脏位。如图所示,位值1表示高速缓存行中的数据是脏的,而位值0表示高速缓存行中的数据是干净的。在各种实施方案中,每一高速缓存行还包括有效位以指示块中的数据是否有效。此外,存储器阵列402中的每一高速缓存行包括对应的事务标识(ID)标签,所述事务标识(ID)标签识别针对每一需求请求指派给高速缓存行的事务ID。
在第一循环期间,L2高速缓存控制器120向L1高速缓存控制器116传达未使用带宽消息,所述未使用带宽消息表示每循环中的L1高速缓存112与L2高速缓存118之间的带宽利用率。如图4的实例中所示,L1高速缓存控制器116基于未使用带宽消息来计算可以将三个脏高速缓存行从L1高速缓存112写入到L2高速缓存118,以便利用但不超过可用的未使用带宽。因此,在第二循环期间,L1高速缓存112的三个脏高速缓存行中的数据被写回到L2高速缓存118。在这个示例性实施方案中,L1高速缓存控制器116通过优先处理具有相同事务ID的高速缓存行来确定哪些高速缓存行将被写回。因此,如图4中所示,L1高速缓存控制器116确定高速缓存行404、406和408全部标记有事务ID A。因此,基于来自第一循环的三个高速缓存行带宽,即使高速缓存行408被标记为干净的,在第二循环期间,高速缓存行404、406和408中的数据也全部被写入到L2高速缓存118。因此,提高了与同一事务相关联的数据的完整性和持久性。
类似于图2到图3的实例,图4的高速缓存层次结构利用一种层次结构(不是严格排他的,因为允许高速缓存行存在于多个高速缓存中,但并不要求如此),在所述层次结构中,较高级别的高速缓存(即,L1高速缓存112)中的所有高速缓存行也存在于较低级别的高速缓存(即,L2高速缓存118)中。因此,在抢占式高速缓存行写回之后,在L1高速缓存112和L2高速缓存118二者中存在高速缓存行404、406和408的副本,即使高速缓存行在L1高速缓存112中被标记为干净的并且高速缓存行在L2高速缓存118中被标记为脏的。此外,在这个实例中,使用分配策略,其中首先在高速缓存缺失时将高速缓存行分配给L1高速缓存112。L2高速缓存118作为受害者高速缓存操作,因为L2高速缓存118在写回操作之后接收高速缓存行的副本。在其他实施方案中,高速缓存层次结构可以利用严格排他的层次结构,其中较低级别的高速缓存(即,L2高速缓存118)包含在较高级别的高速缓存(即,L1高速缓存112)中不存在的高速缓存行。在此等实施方案(未示出)中,在抢占式高速缓存行写回之后,从较高级别的高速缓存驱逐高速缓存行的副本。在其他实施方案中,高速缓存层次结构可以替代地利用严格包含的层次结构,其中L1高速缓存112和L2高速缓存118均响应于高速缓存缺失而获得高速缓存行的副本。
虽然在图4的实例中仅图示L1高速缓存112和L2高速缓存118,但是应当理解,本文所述的所描述的抢占式高速缓存行写回可以在存储器层次结构(例如,图1的高速缓存层次结构106)中的任何高速缓存存储器之间执行。举例来说,L3控制器124向L2高速缓存控制器120传达未使用带宽消息,所述未使用带宽消息表示每循环中的L3高速缓存122与L2高速缓存118之间的带宽利用率。在各种实施方案中,这种抢占式高速缓存行写回可以应用于高速缓存层次结构106的任何级别,或者可以在高速缓存层次结构106的所有高速缓存之间在每一循环同时执行(例如,对于每一循环,在L1高速缓存112/L2高速缓存118之间,以及还在L2高速缓存118/L3高速缓存122之间)。
此外,应当理解,本文所述的所描述的抢占式高速缓存行写回不限于高速缓存之间的未使用带宽,并且还可以应用于存储器层次结构中的任何存储器。在一些实施方案中,可以在系统存储器110与高速缓存层次结构的最后一级高速缓存之间应用本文所述的抢占式高速缓存行写回操作。举例来说,在图1的上下文中,存储器控制器108可以向L3高速缓存控制器124传达未使用带宽消息,所述未使用带宽消息表示每循环中的L3高速缓存122与系统存储器110之间的带宽利用率。
图5图示根据一些实施方案的执行抢占式高速缓存写回的方法500。在步骤502处,处理器内核(诸如图1的处理器内核102)向其L1高速缓存(即,L1高速缓存112)发送加载和/或存储请求。在步骤504处,L1控制器确定加载和/或存储请求是否导致高速缓存缺失以及L1高速缓存112是否已满。如果不是,则方法500返回步骤502以处理下一加载和/或存储请求。然而,如果步骤504的两个条件都满足,则方法500进行到步骤506。
在步骤506处,高速缓存层次结构的一个或多个高速缓存控制器提供关于带宽利用率的反馈。举例来说,如关于图2所讨论的,L2高速缓存控制器120向L1高速缓存控制器116传达未使用带宽消息,所述未使用带宽消息表示每循环中的L1高速缓存112与L2高速缓存118之间的带宽利用率。也就是说,将未使用带宽消息从较低级别的高速缓存控制器(例如,L2高速缓存控制器120)传达到较高级别的高速缓存的高速缓存控制器(例如,L1高速缓存控制器116)。
在步骤508处,较高级别的高速缓存控制器(例如,L1高速缓存控制器116)基于未使用带宽消息来计算可以写入到较低级别的高速缓存(例如,L2高速缓存118)的脏高速缓存行的数目,以便利用但不超过可用的未使用带宽。因此,在步骤510处的下一循环期间,将所述数目个计算出的脏高速缓存行中的数据写回到较低级别的高速缓存。因此,在每一循环期间,L1高速缓存112中的脏高速缓存行的数目减小,并且与对L1高速缓存112的未来高速缓存缺失相关联的数据可以被改写,而无需等待脏数据到较低级别的高速缓存和/或系统存储器的写回,从而减少系统资源的浪费(例如,高速缓存之间的带宽)并且提高性能。此外,应当了解,在一些实施方案中,执行本文所描述的本公开的各方面的用户或操作系统(OS)可以限制写回的速率,例如当被写入或写出的高速缓存是经受存储器磨损的非易失性存储器时(例如,在磨损开始破坏存储装置的完整性之前,限于有限数目的编程-擦除循环)。举例来说,可以设置用户定义的抢占式写回带宽极限,或者可以在一个或多个级别的高速缓存之间完全禁用抢占式写回。
在第一方面,所述方法包括:从第一高速缓存的第一高速缓存控制器向第二高速缓存的第二高速缓存控制器传输未使用带宽消息,所述未使用带宽消息表示在第一循环期间在第一高速缓存与第二高速缓存之间的未使用带宽;在第二循环期间,基于所述未使用带宽消息而将包含脏数据的高速缓存行从第二高速缓存抢占式地写回到第一高速缓存;以及响应于对第二高速缓存的高速缓存缺失而改写第二高速缓存中的高速缓存行。
在第一方面的一个实施方案中,所述方法包括在第二高速缓存的第二高速缓存控制器处计算在不超过未使用带宽的情况下从第二高速缓存抢占式地写入到第一高速缓存的可用高速缓存行的数目。在另一实施方案中,所述方法包括从第三高速缓存的第三高速缓存控制器和第一高速缓存的第一高速缓存控制器传输额外未使用带宽消息,所述未使用带宽消息表示在第一循环期间在第三高速缓存与第一高速缓存之间的未使用带宽。所述方法还包括:在第二循环期间,基于所述额外未使用带宽消息而将包含脏数据的第二高速缓存行抢占式地写回到第三高速缓存;以及响应于对第一高速缓存的高速缓存缺失而改写第二高速缓存行,而不会从第一高速缓存驱逐任何数据。
在第一方面的另一实施方案中,相对于第二高速缓存,第一高速缓存是较低级别的高速缓存。在另一实施方案中,所述方法包括抢占式地写回高速缓存行还包括优先处理第二高速缓存中的第一高速缓存行的写回,所述第一高速缓存行与低于第二高速缓存中的第二高速缓存行的第二写回计数器值的第一写回计数器值相关联,其中第一写回计数器值和第二写回计数器值跟踪第一高速缓存行和第二高速缓存行中的每一个已被修改的次数。在另一实施方案中,所述方法包括抢占式地写回高速缓存行还包括响应于写回第二高速缓存中与第一事务标识标签相关联的第一高速缓存行,使第二高速缓存中与第一事务标识标签相关联的干净高速缓存行的写回优先于第二高速缓存中与第二事务标识标签相关联的脏高速缓存行的写回。
在第一方面的又一实施方案中,第一缓存是高速缓存层次结构中的最后一级高速缓存。在特定实施方案中,所述方法包括:从系统存储器的存储器控制器和第一高速缓存的第一高速缓存控制器传输额外未使用带宽消息,所述额外未使用带宽消息表示在第一循环期间在系统存储器与第一高速缓存之间的未使用带宽;在第二循环期间,基于所述额外未使用带宽消息而将包含脏数据的第二高速缓存行从第一高速缓存抢占式地写回到系统存储器;以及响应于对第一高速缓存的高速缓存缺失而改写第二高速缓存行。
在第二方面,一种处理系统包括:与多个处理器内核中的一个处理器内核相关联的私有高速缓存,所述私有高速缓存包括私有高速缓存控制器和一组对应的高速缓存行;以及由多个处理器内核共享的共享高速缓存,所述共享高速缓存包括共享高速缓存控制器和一组共享的高速缓存行,其中所述共享高速缓存控制器被配置成将未使用带宽消息传达给所述私有高速缓存中的所述私有高速缓存控制器,所述未使用带宽消息表示在第一循环期间在所述共享高速缓存与所述私有高速缓存之间的未使用带宽。
在第二方面的一个实施方案中,所述私有高速缓存中的所述私有高速缓存控制器被配置成计算在不超过未使用带宽的情况下从所述私有高速缓存抢占式地写入到所述共享高速缓存的可用高速缓存行的数目。在另一实施方案中,所述私有高速缓存中的所述私有高速缓存控制器被配置成响应于高速缓存缺失而抢占式地改写高速缓存行,而不会从所述私有高速缓存驱逐任何数据。
在第二方面的另一实施方案中,所述处理系统包括额外的共享高速缓存,所述额外的共享高速缓存包括额外的共享高速缓存控制器和额外一组共享高速缓存行,其中所述额外的共享高速缓存控制器被配置成将未使用带宽消息传达给所述共享高速缓存控制器,所述消未使用带宽息表示在所述第一循环期间在所述共享高速缓存与所述额外的共享高速缓存之间的未使用带宽。在特定实施方案中,所述额外的共享高速缓存是高速缓存层次结构中的最后一级高速缓存。在另一特定实施方案中,所述处理系统包括由所述多个处理器内核共享的系统存储器,所述系统存储器包括存储器控制器,其中所述存储器控制器被配置成将未使用带宽消息传达给最后一级高速缓存,所述未使用带宽消息表示在所述第一循环期间在所述系统存储器与所述最后一级高速缓存之间的未使用带宽。
在第二方面的另一实施方案中,相对于所述私有高速缓存,所述共享高速缓存是较低级别的高速缓存。在另一实施方案中,所述私有高速缓存的所述私有高速缓存控制器被配置成优先处理所述私有高速缓存中的第一高速缓存行的写回,所述第一高速缓存行与低于所述私有高速缓存中的第二高速缓存行的第二写回计数器值的第一写回计数器值相关联,其中所述第一写回计数器值和所述第二写回计数器值跟踪所述第一高速缓存行和所述第二高速缓存行中的每一个已被修改的次数。在又一实施方案中,所述私有高速缓存的所述私有高速缓存控制器被配置成响应于写回所述私有高速缓存中与第一事务标识标签相关联的第一高速缓存行,使所述私有高速缓存中与第一事务标识标签相关联的干净高速缓存行的写回优先于所述私有高速缓存中与第二事务标识标签相关联的脏高速缓存行的写回
在第三方面,一种处理器包括:与多个处理器内核的处理器内核相关联的私有高速缓存,所述私有高速缓存包括私有高速缓存控制器和一组对应的高速缓存行;以及由所述多个处理器内核共享的共享高速缓存,所述共享高速缓存包括共享高速缓存控制器和一组共享的高速缓存行,其中所述共享高速缓存控制器被配置成将未使用带宽消息传达给所述私有高速缓存中的所述私有高速缓存控制器,所述未使用带宽消息表示在第一循环期间在所述共享高速缓存与所述私有高速缓存之间的未使用带宽。
在第三方面的一个实施方案中,所述私有高速缓存中的所述私有高速缓存控制器被配置成计算在不超过未使用带宽的情况下从所述私有高速缓存抢占式地写入到所述共享高速缓存的可用高速缓存行的数目。在另一实施方案中,所述处理器包括额外的共享高速缓存,所述额外的共享高速缓存包括额外的共享高速缓存控制器和额外一组共享高速缓存行,其中所述额外的共享高速缓存控制器被配置成将额外未使用带宽消息传达给所述共享高速缓存控制器,所述未使用带宽消息表示在所述第一循环期间在所述共享高速缓存与所述额外的共享高速缓存之间的未使用带宽。
在一些实施方案中,可以由执行软件的处理系统的一个或多个处理器来实现上述技术的某些方面。所述软件包括在非暂时性计算机可读存储介质上存储或以其他方式有形地体现的一组或多组可执行指令。所述软件可以包括指令和某些数据,所述指令和某些数据在由所述一个或多个处理器执行时操纵所述一个或多个处理器,以执行上述技术的一个或多个方面。非暂时性计算机可读存储介质可以包括例如磁盘或光盘存储装置、固态存储装置(例如快闪存储器、高速缓存、随机存取存储器(RAM))或其他一个或多个非易失性存储装置等。存储在非暂时性计算机可读存储介质上的可执行指令可以是源代码、汇编语言代码、目标代码或者由一个或多个处理器解译或以其他方式执行的其他指令格式。
计算机可读存储介质可以包括在使用期间可由计算机系统访问以向计算机系统提供指令和/或数据的任何存储介质或存储介质的组合。这种存储介质可以包括但不限于光学介质(例如,光盘(CD)、数字通用盘(DVD)、蓝光盘)、磁性介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机存取存储器(RAM)或高速缓存)、非易失性存储器(例如,只读存储器(ROM)或快闪存储器),或基于微机电系统(MEMS)的存储介质。计算机可读存储介质可以嵌入在计算系统(例如,系统RAM或ROM)中,固定地附接到计算系统(例如,磁性硬盘驱动器),可移除地附接到计算系统(例如,光盘或基于通用串行总线(USB)的快闪存储器),或经由有线或无线网络(例如,网络可访问存储装置(NAS))联接到计算机系统。
应当注意,并不需要上文在一般描述中描述的全部活动或要素,可能不需要特定活动或装置的一部分,并且可以执行除了所描述那些活动或要素之外的一个或多个其他活动或者包括其他要素。此外,活动列出的顺序不一定是活动执行的顺序。而且,已经参考特定实施方案对这些概念进行了描述。然而,本领域普通技术人员将了解,可以在不脱离如以下权利要求中所阐述的本公开的范围的情况下做出各种修改和更改。因此,说明书和附图应被视为具有说明性含义而不是限制性含义,并且所有此等修改意图包括在本公开的范围内。
上文关于具体实施方案描述了益处、其他优势以及问题的解决方案。然而,益处、优势、问题的解决方案和可能致使任何益处、优势或解决方案发生或变得更加明显的任何特征不应被解释为任何或所有权利要求的关键、必要或基本特征。此外,上文公开的特定实施方案只是说明性的,因为公开的主题可以以对于受益于本文的教示的本领域技术人员而言显而易见的不同但等效的方式进行修改和实践。本文示出的构造或设计的细节不受任何限制,除非以下权利要求中另有说明。因此,很明显,上文公开的特定实施方案可以被更改或修改,并且所有这些变更被视为在所公开的主题的范围内。因此,本文寻求的保护如在权利要求中所阐述。
Claims (20)
1.一种方法,所述方法包括:
从第一高速缓存的第一高速缓存控制器向第二高速缓存的第二高速缓存控制器传输未使用带宽消息,所述未使用带宽消息表示在第一循环期间在所述第一高速缓存与所述第二高速缓存之间的未使用带宽;
在第二循环期间,基于所述未使用带宽消息,将包含脏数据的高速缓存行从所述第二高速缓存抢占式地写回到所述第一高速缓存;以及
响应于对所述第二高速缓存的高速缓存缺失而改写所述第二高速缓存中的所述高速缓存行。
2.如权利要求1所述的方法,所述方法还包括:
在所述第二高速缓存的所述第二高速缓存控制器处计算在不超过所述未使用带宽的情况下从所述第二高速缓存抢占式地写入到所述第一高速缓存的可用高速缓存行的数目。
3.如权利要求1所述的方法,所述方法还包括:
从第三高速缓存的第三高速缓存控制器和所述第一高速缓存的所述第一高速缓存控制器传输额外未使用带宽消息,所述额外未使用带宽消息表示在所述第一循环期间在所述第三高速缓存与所述第一高速缓存之间的未使用带宽;
在所述第二循环期间,基于所述额外未使用带宽消息,将包含脏数据的第二高速缓存行从所述第一高速缓存抢占式地写回到所述第三高速缓存;以及
响应于对所述第一高速缓存的高速缓存缺失而改写所述第二高速缓存行,而不会从所述第一高速缓存驱逐任何数据。
4.如权利要求1所述的方法,其中相对于所述第二高速缓存,所述第一高速缓存是较低级别的高速缓存。
5.如权利要求1所述的方法,其中抢占式地写回所述高速缓存行还包括:
优先处理所述第二高速缓存中的第一高速缓存行的写回,所述第一高速缓存行与低于所述第二高速缓存中的第二高速缓存行的第二写回计数器值的第一写回计数器值相关联,其中所述第一写回计数器值和所述第二写回计数器值跟踪所述第一高速缓存行和所述第二高速缓存行中的每一个已被修改的次数。
6.如权利要求1所述的方法,其中抢占式地写回所述高速缓存行还包括:
响应于写回所述第二高速缓存中与第一事务标识标签相关联的第一高速缓存行,使所述第二高速缓存中与所述第一事务标识标签相关联的干净高速缓存行的写回优先于所述第二高速缓存中与第二事务标识标签相关联的脏高速缓存行的写回。
7.如权利要求1所述的方法,其中所述第一高速缓存是高速缓存层次结构中的最后一级高速缓存。
8.如权利要求7所述的方法,所述方法还包括:
从系统存储器的存储器控制器和所述第一高速缓存的所述第一高速缓存控制器传输额外未使用带宽消息,所述额外未使用带宽消息表示在所述第一循环期间在所述系统存储器与所述第一高速缓存之间的未使用带宽;
在第二循环期间,基于所述额外未使用带宽消息,将包含脏数据的第二高速缓存行从所述第一高速缓存抢占式地写回到所述系统存储器;以及
响应于对所述第一高速缓存的高速缓存缺失而改写所述第二高速缓存行。
9.一种处理系统,所述处理系统包括:
与多个处理器内核中的一个处理器内核相关联的私有高速缓存,所述私有高速缓存包括私有高速缓存控制器和一组对应的高速缓存行;以及
由所述多个处理器内核共享的共享高速缓存,所述共享高速缓存包括共享高速缓存控制器和一组共享的高速缓存行,其中所述共享高速缓存控制器被配置成将未使用带宽消息传达给所述私有高速缓存中的所述私有高速缓存控制器,所述未使用带宽消息表示在第一循环期间在所述共享高速缓存与所述私有高速缓存之间的未使用带宽。
10.如权利要求9所述的处理系统,其中所述私有高速缓存中的所述私有高速缓存控制器被配置成计算在不超过所述未使用带宽的情况下从所述私有高速缓存抢占式地写入到所述共享高速缓存的可用高速缓存行的数目。
11.如权利要求9所述的处理系统,其中所述私有高速缓存中的所述私有高速缓存控制器被配置成响应于高速缓存缺失而抢占式地改写高速缓存行,而不会从所述私有高速缓存驱逐任何数据。
12.如权利要求9所述的处理系统,所述处理系统还包括:
额外的共享高速缓存,所述额外的共享高速缓存包括额外的共享高速缓存控制器和额外一组共享高速缓存行,其中所述额外的共享高速缓存控制器被配置成将未使用带宽消息传达给所述共享高速缓存控制器,所述未使用带宽消息表示在所述第一循环期间在所述共享高速缓存与所述额外的共享高速缓存之间的未使用带宽。
13.如权利要求12所述的处理系统,其中所述额外的共享高速缓存是高速缓存层次结构中的最后一级高速缓存。
14.如权利要求13所述的处理系统,所述处理系统还包括:
由所述多个处理器内核共享的系统存储器,所述系统存储器包括存储器控制器,其中所述存储器控制器被配置成将未使用带宽消息传达给所述最后一级高速缓存,所述未使用带宽消息表示在所述第一循环期间在所述系统存储器与所述最后一级高速缓存之间的未使用带宽。
15.如权利要求9所述的处理系统,其中相对于所述私有高速缓存,所述共享高速缓存是较低级别的高速缓存。
16.如权利要求9所述的处理系统,其中所述私有高速缓存的所述私有高速缓存控制器被配置成优先处理所述私有高速缓存中的第一高速缓存行的写回,所述第一高速缓存行与低于所述私有高速缓存中的第二高速缓存行的第二写回计数器值的第一写回计数器值相关联,其中所述第一写回计数器值和所述第二写回计数器值跟踪所述第一高速缓存行和所述第二高速缓存行中的每一个已被修改的次数。
17.如权利要求9所述的处理系统,其中所述私有高速缓存的所述私有高速缓存控制器被配置成响应于写回所述私有高速缓存中与第一事务标识标签相关联的第一高速缓存行,使所述私有高速缓存中与第一事务标识标签相关联的干净高速缓存行的写回优先于所述私有高速缓存中与第二事务标识标签相关联的脏高速缓存行的写回。
18.一种处理器,所述处理器包括:
与多个处理器内核中的一个处理器内核相关联的私有高速缓存,所述私有高速缓存包括私有高速缓存控制器和一组对应的高速缓存行;以及
由所述多个处理器内核共享的共享高速缓存,所述共享高速缓存包括共享高速缓存控制器和一组共享的高速缓存行,其中所述共享高速缓存控制器被配置成将未使用带宽消息传达给所述私有高速缓存中的所述私有高速缓存控制器,所述未使用带宽消息表示在第一循环期间在所述共享高速缓存与所述私有高速缓存之间的未使用带宽。
19.如权利要求18所述的处理器,其中所述私有高速缓存中的所述私有高速缓存控制器被配置成计算在不超过所述未使用带宽的情况下从所述私有高速缓存抢占式地写入到所述共享高速缓存的可用高速缓存行的数目。
20.如权利要求18所述的处理器,所述处理器还包括:
额外的共享高速缓存,所述额外的共享高速缓存包括额外的共享高速缓存控制器和额外一组共享高速缓存行,其中所述额外的共享高速缓存控制器被配置成将额外未使用带宽消息传达给所述共享高速缓存控制器,所述额外未使用带宽消息表示在所述第一循环期间在所述共享高速缓存与所述额外的共享高速缓存之间的未使用带宽。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/718,564 | 2017-09-28 | ||
US15/718,564 US10452548B2 (en) | 2017-09-28 | 2017-09-28 | Preemptive cache writeback with transaction support |
PCT/US2018/051390 WO2019067254A1 (en) | 2017-09-28 | 2018-09-17 | PREEMPTIVE CACHE MEMORY WRITING WITH TRANSACTION MEDIA |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111133423A true CN111133423A (zh) | 2020-05-08 |
CN111133423B CN111133423B (zh) | 2021-10-15 |
Family
ID=65806666
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880061718.8A Active CN111133423B (zh) | 2017-09-28 | 2018-09-17 | 一种抢占式高速缓存写回方法、处理系统和处理器 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10452548B2 (zh) |
EP (1) | EP3688597B1 (zh) |
JP (1) | JP6820449B2 (zh) |
KR (1) | KR102220468B1 (zh) |
CN (1) | CN111133423B (zh) |
WO (1) | WO2019067254A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10705962B2 (en) * | 2017-12-21 | 2020-07-07 | Intel Corporation | Supporting adaptive shared cache management |
US11106594B2 (en) | 2019-09-05 | 2021-08-31 | Advanced Micro Devices, Inc. | Quality of service dirty line tracking |
KR102579320B1 (ko) | 2023-04-19 | 2023-09-18 | 메티스엑스 주식회사 | 캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7472230B2 (en) * | 2001-09-14 | 2008-12-30 | Hewlett-Packard Development Company, L.P. | Preemptive write back controller |
US6976131B2 (en) * | 2002-08-23 | 2005-12-13 | Intel Corporation | Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system |
DE102006049526A1 (de) * | 2006-10-20 | 2008-04-24 | Evonik Degussa Gmbh | Stabile wässrige Dispersionen von Siliciumdioxid |
US8392657B2 (en) * | 2009-10-09 | 2013-03-05 | Intel Corporation | Monitoring cache usage in a distributed shared cache |
US8843707B2 (en) * | 2011-12-09 | 2014-09-23 | International Business Machines Corporation | Dynamic inclusive policy in a hybrid cache hierarchy using bandwidth |
US9558127B2 (en) * | 2014-09-09 | 2017-01-31 | Intel Corporation | Instruction and logic for a cache prefetcher and dataless fill buffer |
US9767041B2 (en) * | 2015-05-26 | 2017-09-19 | Intel Corporation | Managing sectored cache |
US10185498B2 (en) * | 2016-06-16 | 2019-01-22 | Advanced Micro Devices, Inc. | Write buffer design for high-latency memories |
-
2017
- 2017-09-28 US US15/718,564 patent/US10452548B2/en active Active
-
2018
- 2018-09-17 KR KR1020207008109A patent/KR102220468B1/ko active IP Right Grant
- 2018-09-17 CN CN201880061718.8A patent/CN111133423B/zh active Active
- 2018-09-17 JP JP2020515717A patent/JP6820449B2/ja active Active
- 2018-09-17 EP EP18862763.2A patent/EP3688597B1/en active Active
- 2018-09-17 WO PCT/US2018/051390 patent/WO2019067254A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
KR102220468B1 (ko) | 2021-02-25 |
EP3688597B1 (en) | 2023-04-05 |
JP2020535507A (ja) | 2020-12-03 |
US10452548B2 (en) | 2019-10-22 |
EP3688597A4 (en) | 2021-08-18 |
EP3688597A1 (en) | 2020-08-05 |
CN111133423B (zh) | 2021-10-15 |
JP6820449B2 (ja) | 2021-01-27 |
WO2019067254A1 (en) | 2019-04-04 |
US20190095330A1 (en) | 2019-03-28 |
KR20200040294A (ko) | 2020-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101038963B1 (ko) | 캐쉬 할당을 위한 장치, 시스템, 방법 및 기계 액세스가능 매체 | |
EP3414665B1 (en) | Profiling cache replacement | |
JP6653768B2 (ja) | 異なるキャッシュレベルのキャッシュラインの状態をモニタリングするシャドウタグメモリ | |
KR20170098187A (ko) | 저장 서브시스템을 위한 연관적 및 원자적 라이트-백 캐싱 시스템 및 방법 | |
EP3433743B1 (en) | Cache entry replacement based on availability of entries at another cache | |
CN111133423B (zh) | 一种抢占式高速缓存写回方法、处理系统和处理器 | |
US7197605B2 (en) | Allocating cache lines | |
US20180113815A1 (en) | Cache entry replacement based on penalty of memory access | |
US11507519B2 (en) | Data compression and encryption based on translation lookaside buffer evictions | |
GB2539382A (en) | Cache coherency | |
CN111344685A (zh) | 在断电状态期间保留处理器内核的高速缓存条目 | |
EP3724774B1 (en) | Rinsing cache lines from a common memory page to memory | |
US10503640B2 (en) | Selective data retrieval based on access latency | |
US11960399B2 (en) | Relaxed invalidation for cache coherence | |
CN112955877A (zh) | 修改存储数据的装置和方法 | |
US20080244190A1 (en) | Method, Apparatus, System and Program Product Supporting Efficient Eviction of an Entry From a Central Coherence Directory |
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 |