CN101313285B - 高速缓存包含性的按组放宽 - Google Patents

高速缓存包含性的按组放宽 Download PDF

Info

Publication number
CN101313285B
CN101313285B CN200680043167.XA CN200680043167A CN101313285B CN 101313285 B CN101313285 B CN 101313285B CN 200680043167 A CN200680043167 A CN 200680043167A CN 101313285 B CN101313285 B CN 101313285B
Authority
CN
China
Prior art keywords
cache
group
expulsion
formula
local cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN200680043167.XA
Other languages
English (en)
Other versions
CN101313285A (zh
Inventor
R·拉吉瓦
M·马蒂纳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN101313285A publication Critical patent/CN101313285A/zh
Application granted granted Critical
Publication of CN101313285B publication Critical patent/CN101313285B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

多核心处理器包括多个处理器以及一共享高速缓存。高速缓存控制逻辑在共享高速缓存以及各处理器的局部高速缓存中实现了一种包含式高速缓存模式。当处理器选择延迟从局部高速缓存进行驱逐时,维持计数器以按组记录情况。当计数器指示对于某组有一个或多个延迟驱逐处于未决状态时,高速缓存控制逻辑将该组当作非包含式的,向所有局部高速缓存广播外来监听,而不管该监听是否在共享高速缓存中命中。还描述和要求了其他实施例。

Description

高速缓存包含性的按组放宽
技术领域
本公开总体上涉及信息处理系统,更具体地,涉及多处理器系统中对高速缓存包含性(cache inclusion)的按组放宽(per-set relaxation)。
背景技术
许多处理系统的目标是快速地处理信息。采用的一种增加处理器处理信息的速度的技术是使该处理器具有更快的局部存储器(local memory),称为高速缓存。处理器使用高速缓存临时性地存储指令和数据。采用的另一种增加处理器处理信息的速度的技术是使该处理器具有多线程处理的能力。
对于支持软件线程并发执行的系统,例如同时多线程(simultaneousmulti-threading,“SMT”)和/或单芯片多处理器(chip multi-processor,“CMP”)系统,应用程序可以被并行化为多线程代码以利用系统潜在的并发执行能力。多线程应用程序的数个线程可能需要通信及同步,通常通过共享存储器(shared memory)来完成。另外,单线程程序也可以被并行化为多线程代码,这是通过将该程序组织为多个线程、然后并发地运行这些线程来实现的,其中每个线程都运行在单独的逻辑处理器或处理器核心上。
可以采用事务性存储器(transactional memory)来提高多线程程序的性能和/或使编写多线程程序变得更容易。事务性存储器涉及线程推测地执行一指令块。即,该线程执行这些指令,但直到该线程决定提交或抛弃(也称作放弃)推测地完成的工作之前,其他的线程不被允许看到这些指令的执行结果。
处理器可以通过提供对作为事务的一部分而完成的存储器更新进行缓冲的能力来使事务性存储器更有效率。存储器更新可被缓冲,直到执行或抛弃事务性存储器更新的决定被作出。被缓冲的事务性存储器更新可以存储在高速缓存系统中。
附图说明
参照附图,可以理解本发明的实施例,在附图中相似的元素由相似的数字表示。这些附图不是要进行限制,而是用来说明用于在多处理器计算系统中提供高速缓存包含性的按组放宽的系统、方法、装置和机制的选择性实施例。
图1是说明在事务性执行过程中能够对存储器更新进行缓冲的局部高速缓存的至少一个实施例的方框图。
图2是说明多核心处理器的至少一个实施例的方框图。
图3是说明用于在示例性代码块的事务性执行过程中对于存储器写的高速缓存处理的方框数据流图。
图4是说明对于多核心处理器中包含式(inclusive)高速缓存层次结构的至少一个实施例的高速缓存处理的方框数据流图。
图5是说明多处理器系统的至少一个实施例的方框图,该系统具有修改的高速缓存模式,以进行延迟的驱逐(delayed eviction)以及对包含性的按组放宽。
图6是示出对于多核心系统的示例性高速缓存操作的方框数据流图,该系统具有修改的高速缓存模式,以进行延迟的驱逐以及对包含性的按组放宽。
图7是说明一种方法的至少一个实施例的流程图,该方法用于针对某一组放宽末级高速缓存中的包含性原则。
图8是示出对于多核心系统的另外的示例性高速缓存操作的方框数据流图,该系统具有修改的高速缓存模式,以进行延迟的驱逐以及对包含性的按组放宽。
图9是说明一种方法的至少一个实施例的流程图,该方法用于针对某一组恢复末级高速缓存中的包含性原则。
具体实施方式
下面的论述描述了用于在多核心系统中提供高速缓存包含性的按组放宽的系统、方法、装置和机制的选定实施例。在下面的描述中,给出了许多具体细节,例如处理器、路(way)、组(set)和片上高速缓存的数目,系统配置以及数据结构,以提供对本发明实施例的更透彻理解。但是,本领域技术人员将能够理解,本发明可以不需要上述具体细节来实施。另外,一些公知的结构、电路及类似部件并未详细示出,以避免不必要地使下述论述难以理解。
事务性执行。对于利用线程级推测的多线程任务,至少一些(虽然不一定是全部)并发执行的线程可以共享相同的存储器空间。这里使用的术语“协作线程”表示一组共享相同的存储器空间的线程。协作线程可以共享部分的存储器空间,也可以访问存储器的其他未共享部分。因为协作线程共享至少部分的存储器空间,所以它们至少可以读取和/或写入部分相同的存储器项目。因而,并发执行的协作线程应当相互同步,以完成正确的、有意义的工作。
已经提出了各种处理协作线程的存储器访问同步的方法。一种方法是“事务性执行”,有时也称作“事务性存储器”。在事务性执行方法中,指令块可以被划作为原子块(atomic block),并可以被原子地执行,而不需要利用锁(本文中使用的术语“原子块”、“事务性存储器块”和“事务性块”可以互换使用)。其语义为,要么每一个被划分的指令的实际效果全部可见并同时提交给处理器状态,要么部分或全部的被划分的指令的效果全都不可见或不被提交。
在一个协作线程的原子块的执行过程中,对于至少一种已知的事务性执行方法来说,由该线程创建的存储器状态是推测性的,因为并不知道该指令原子块是否将成功执行完毕。即,第二个协作线程可能竞争相同的数据,从而知道第一个协作线程无法原子地执行。考虑到推测错误(misspeculation),根据提出的至少一些事务性执行方法,在该原子块的指令执行过程中不更新处理器状态。而是,在原子块期间进行的存储器更新可被缓存到局部缓冲器中,例如高速缓存,直到确定该块是否能够成功地原子地执行为止,最终,存储器更新可以被成体系地提交至存储器。对于其他方法,在原子块的指令执行过程中,在进行任何处理器状态更新之前,首先记录复原状态。如果出现了推测错误,则处理器状态可以随后从保存的复原状态中被还原。
图1是说明能够在事务性执行过程中对存储器更新进行缓冲的局部高速缓存100的至少一个实施例的方框图。在许多现存系统中,高速缓存100被细分为多个组102。许多现代处理器中每个组包含若干行104,称作“路”。因为每组包含几个行,映射到给定组的一个主存储器行可以被存储在该组中的任意行、或者称“路”104。
图1对局部高速缓存100进行说明,该局部高速缓存包括一个或多个组102,每一组包含若干(n)路104。对于在图1中说明的示例性实施例,每组包含n=3路。图1说明,高速缓存100的每一路104可以与事务字段106相关联。该事务字段106中的位的值可以表示该路104中的高速缓存行是否具有在原子块执行过程中被修改的推测性数据。例如如果事务字段106中的位显示其值为“1”,这可以表示该高速缓存行104包含针对尚未完成原子执行的事务的推测性(或“临时”)数据。这种数据对于系统的其余部分不可见。如果另一个线程(在同一个处理器或另一个处理器上运行)试图在该事务位被置为有效时访问该高速缓存行,那么该事务因为其无法被原子地执行而必将失败。
对于一般的高速缓存处理,当出现高速缓存缺失时,包含缺失项的存储器行将被装入高速缓存100,有时候还要替换另一高速缓存行。该过程称作高速缓存替换。在高速缓存替换过程中,组102中数个路104之一必须被替换,因此它将被挑选出来从该高速缓存100中驱逐。
资源保证。如果事务要求的高速缓存路104比高速缓存100的组102中可用的路要多,该事务将会由于资源缺乏而失败,这是因为包含有临时值的其中一路104将被挑中驱逐,以便为另外的临时值让出空间。在一事务过程中,任何从局部高速缓存102的驱逐都会引起放弃该事务,这是因为该事务的存储器更新需要被原子地提交(或不予提交)。
为了避免这个问题,最好向应用程序员提供“资源保证”。即,如果程序员知道对于一事务性块的执行要保证特定数量的路可用,那么该程序员可以编写这样的代码,使得即便在对事务性块的所有存储器访问都被映射到同一组这样的最坏情形下,所述代码仍仅需要该特定数量的高速缓存行。即,程序员可以编写这样的代码,其仅需要组中可用的路数、或者以其他任何方式可用的路数(例如组中可用的路数加上牺牲高速缓存(victim cache)中可用的路数)。
以这种方式,程序员的代码被保证不会由于高速缓存资源的缺乏而失败。基于这个原因,对于应用程序程序员来说资源保证可能非常重要。但是,在实现了包含式高速缓存模式的多处理器系统中,程序员对于资源保证的依赖可能会被危及。
对于事务性执行的高速缓存缓冲。图2是说明多核心处理器的至少一个实施例的方框图。处理器200可以包括两个或更多处理器核心P(0)~P(N)。图2中表示的四个处理器,P(0)~P(N),不应被理解为限制性的。对于本论述,处理器核心的数量被称作“N”。处理器核心可超过两个的选择性在图2中用虚线与椭圆来表示。即,图2表示N≥2。本文中所描述的按组放宽包含性模式以及延迟驱逐可以在任何具有n个处理器核心的多核心处理器中采用,其中n≥2。
为简化论述,一CMP实施例在这里作进一步详细论述。即,图2中示出的每一个处理器核心P(0)~P(N)可以表示32位和/或64位处理器,例如PentiumPentium
Figure S200680043167XD00052
Pro、Pentium
Figure S200680043167XD00053
II、Pentium
Figure S200680043167XD00054
III、Pentium4以及Itanium与Itanium2微处理器。但是上述的部分清单不应被视为限制性的。
图2示出,处理器200的每个处理器核心P(0)~P(N)可以包括一个或多个局部高速缓存。为便于论述,对于图2中示出的示例性系统200中每个处理器P1~P4,只示出了一个这样的高速缓存206。局部高速缓存206每一个可以包括图1中示出的事务字段(例如见图1的106)。
图2示出至少一个CMP实施例,其具有位于单个芯片封装103中的多个处理器核心P(0)~P(N)以及一个共享末级(last-level)高速缓存204。每个处理器核心可以是单线程或者多线程处理器。但是,图2中示出的实施例200不应被视作限制性的——所述核心P(0)~P(N)并不必须位于同一个芯片封装中,也不必须位于同一个硅片上。
图2中示出的处理器核心P(0)~P(N)的实施例被假定可提供某些语义来支持推测性多线程处理。例如,假定每个处理器核心P(0)~P(N)提供划分一组指令(在本文中互换地称作“原子块”或“事务性块”)的开始和末端的方法,该组指令包括对共享数据的存储器操作。还有,如前所述,每个处理器核心P(0)~P(N)包括局部高速缓存206,用于对操作进行缓冲存储(存储器写)。(对于至少一个实施例,这样的机制包括事务字段106)。此外,每个处理器核心P(0)~P(N)被假定对来自局部高速缓存206的、被缓冲的存储器写进行原子更新(假如在原子块执行过程中没有察觉出竞争)。这样的一般功能由图2中示出的处理器核心P(0)~P(N)(以及下面论述的图4、5、6和8中示出的处理器核心P(0)~P(N))的至少一个实施例给出。
当最终确定原子块是否能完成执行而不存在与其他线程的未解决的依赖关系或竞争时,在局部高速缓存206中缓冲的存储器更新可以被原子地执行。但是,如果事务失败(即,如果原子块由于竞争或未解决的数据依赖关系而无法完成执行),那么在局部高速缓存206中其事务位被置为有效的行可以被清除,而被缓冲的更新不再执行。
在原子块执行过程中,并且在确定其是否已成功执行之前,存储器写可以如下被缓冲在局部高速缓存206中。当在事务性执行过程中发生写操作时,要被写入的存储器行被从存储器中(未在图2中示出)读取到局部高速缓存206的一路中,新的值被写入局部高速缓存206中。局部高速缓存206中该路的事务位(见事务字段106)被置为有效,以指示该路包括与事务性执行有关的临时值。
图3是说明在事务性执行中对存储器写的高速缓存处理的方框数据流图。图3示出在示例性原子指令序列的执行过程中执行的一系列高速缓存事务。示例性地,假定在事务过程中每一个存储器写都映射到局部高速缓存206的同一组,但向不同的高速缓存块地址写入。该指令原子块在下列伪码中给出:
事务XYZ开始{
(1)写X
(2)写Y;
(3)写Z;
}事务结束
事务性执行的一个益处是在指令原子块过程中写入的存储单元(memory location)不需要是连续的。图3示出,对于事务XYZ的示例性代码,写入了三个存储单元:A、B和C,但是对于每一次写,存储器的不同行被读取到高速缓存100中。出于示例的目的,在事务XYZ过程中存储器写的所有行都映射到高速缓存100的同一组,即组102。
图3示出第一个高速缓存操作(1)将包含数据项X的一存储器行读取到正在执行事务XYZ的处理器的局部高速缓存206中。该行称作高速缓存行A。对于高速缓存行A,字段106中的事务位被置为有效,以指示该行包含临时数据。
类似地,第二个高速缓存操作(2)将包含数据项Y的一存储器行(被称作高速缓存行B)读取到高速缓存206中。同样地,对于高速缓存行B,字段106中的事务位被置为有效。第三个高速缓存操作(3)将高速缓存行C(包含数据项Z)读取到局部高速缓存206中。同样地,字段106中的事务位被置为有效。
因为组0 102包含足够的路来容纳事务XYZ的所有存储器写,所以该事务不会因为高速缓存100的资源缺乏而失败。即,资源保证得以维持。
多核心处理器系统中的包含式高速缓存和事务性执行。
使用多核心多线程系统的包含式高速缓存层次结构可能会危及上述资源保证。图4用来详细说明这一点,该图是表示多处理器系统400中的包含式高速缓存层次结构的至少一个实施例的方框数据流图。图4中示出的示例性系统400采用了一种写无效高速缓存一致性策略,以维持局部高速缓存206a~206d之间的一致性。
对于包含式高速缓存模式,在任何局部高速缓存206a~206d中存在的数据也存在于末级高速缓存(LLC)204中。来自芯片203外部的一致性监听(snoop)只需在最初发送给LLC 204。这可能出现在,例如,当监听请求来自图4中示出的芯片203之外的另一插槽(未示出)时。这种监听请求在本文中称作“外来”监听。
如果外来监听在LLC 204中命中,那么它将被广播到一个或多个处理器P(0)~P(N),从而局部高速缓存206a~206n也可以被查询。否则,如果外来一致性监听未在LLC 204中命中,那么就可以知道该数据不在任何局部高速缓存206a~206d之中出现,而监听不需要被发送至局部高速缓存206a~206d。以这种方式,与外来监听有关的总线业务量,与针对非包含式高速缓存层次结构所预期的这种总线业务量相比,能得以减少。
对于包含式高速缓存系统,如果一高速缓存行被从LLC 204中驱逐,那么该高速缓存行也必须被从任何包含它的局部高速缓存206中驱逐。如图4所示,这意味着,即使程序员仔细地编写代码以便遵守资源保证,内部事件也可能在一事务过程中强制驱逐被局部缓存的数据。
图4中示出的例子假定图4中示出的所有存储器操作映射到LLC 204的同一组,以及该组102是一个4路组。对于图4中示出的例子,假定处理器核心P(0)在执行前面所述的事务XYZ的代码。还假定每一个其他处理器都在并发地执行下面的代码:
处理器核心P(1):写M
处理器核心P(2):写N
处理器核心P(N):写P
图4示出,在高速缓存操作(1)和(2)中,处理器核心P(0)将高速缓存行A和B读取至其局部高速缓存206a中,并将字段106中的事务位(如上述结合图3所解释的)置为有效。因为该高速缓存层次结构是包含式的,高速缓存行A和B在高速缓存操作(1)和(2)过程中还分别地被读取至LLC 204中。
虽然处理器核心P(0)尚未完成事务XYZ的执行,处理器核心P(1)执行其指令,使高速缓存操作(3)将高速缓存行D读取到局部高速缓存206b中,以便将数据项M写入。同样地,在处理器核心P(0)完成事务XYZ的执行之前,处理器核心P(2)执行其指令,使高速缓存操作(4)将高速缓存行E读取到局部高速缓存206c中,以便将数据项N写入。由于包含性原则,高速缓存行D和E在高速缓存操作(3)和(4)过程中也被分别写入LLC 204中。
图4示出,同样在处理器核心P(0)完成事务XYZ的执行之前,处理器核心P(N)执行其指令,使高速缓存操作(5)将高速缓存行F读取到局部高速缓存206d中,以便将数据项P写入。[对于本论述来说,高速缓存操作(3)、(4)和(5)在其相应的处理器核心上是否在原子事务过程中执行不具有实质意义,因此图4并未示出与高速缓存事务(3)、(4)和(5)相关联的事务位的值。]
图4示出,作为在处理器核心P(N)上的“写P”操作执行的结果而被执行的高速缓存操作(5)遇到了LLC 204的全满组102。即,该组102的每一路都包含有效数据。从而,作为高速缓存操作(5)的结果,必须选择一牺牲高速缓存行来进行驱逐。图4示出,出于示例的目的,LLC替换算法选择了路0来被驱逐。
高速缓存操作(6)从LLC 204中对行A的驱逐对于处理器核心P(0)具有严重的后果。因为该高速缓存层次结构是包含式的,因此对LLC 204中一高速缓存行的驱逐也要求对局部高速缓存206a中的同一行进行驱逐。在高速缓存操作(7)中对局部高速缓存206a中的高速缓存行A的驱逐导致事务XYZ放弃并失败。这是因为原子事务的所有存储器操作都必须被原子地更新(或者不更新)至该高速缓存层次结构的下一级。
因此,即使不存在协作线程竞争局部高速缓存206a中的数据,以及即使根据事务性执行的四路保证,处理器核心P(0)在其局部高速缓存206a中具有足够的资源来完成事务XYZ的执行,在高速缓存操作(7)中从处理器核心P(0)的局部高速缓存206a中驱逐高速缓存行A还是会导致事务XYZ失败。
即使包含式LLC 204记录了事务位,并且即使包含式LLC的替换算法倾向于不驱逐其事务位被置为有效的高速缓存行,图4中示出的问题还是可能会发生。这是因为在给定时刻LLC组中的所有高速缓存行可能都被标记为临时事务性数据。
放宽的包含性与延迟驱逐。
图5是说明多处理器系统500的方框图,根据本发明至少一个实施例,该系统采用修改的高速缓存模式,用于临时性地延迟从局部高速缓存506a~506d进行驱逐,以及按组地放宽LLC 504中的包含性。
图5示出,多处理器系统500可以包括多个处理器核心P(0)~P(N)。如同前面结合图4所论述的,图5中示出的处理器核心的特定数目不应认为是限制性的。这里所论述的放宽的包含性模式可以用于任何包括n个处理器核心的多核心系统,其中n≥2。处理器核心P(0)~P(N)和LLC 504中至少有一些可以位于同一芯片封装503中。
图5示出,每一个处理器可以包括一局部高速缓存506a~506n。如上所述,每一个局部高速缓存506a~506n可以包括针对每一高速缓存行的一事务字段106。图5示出,系统500还包括包含式LLC高速缓存504。该包含式LLC高速缓存504包括针对LLC 504的每一组(例如,组102)的一冲突计数器502。冲突计数器502可以是寄存器、锁存器、存储元件或者任何其他能够存储计数值的存储区域。对于至少一个实施例来说,如果LLC 504具有x组,那么系统500就包括x个计数器502。
系统500还可以包括控制逻辑模块510(这里称作“高速缓存控制器”),其执行高速缓存控制功能,例如基于由处理器核心P(0)~P(N)通过互连520提交的存储器请求来确定高速缓存命中/缺失。高速缓存控制器510还可以向处理器核心P(0)~P(N)发出监听以确保高速缓存一致性。
因此,在正常的包含式处理中,称LLC 504的所有组都处于包含式模式中。如果处理器请求用于存储器写的数据,则高速缓存控制器510可以针对该数据块向LLC 504发送无效监听操作。如果该监听操作在LLC 504中命中,LLC 504就使它的该数据块副本失效。另外,因为该监听在LLC504中命中,以及因为图5中示出的高速缓存模式是包含式的,所以无效监听操作还被从高速缓存控制器510通过互连520向L1高速缓存506a~506n发送。
然而,高速缓存控制器510还包括用于实现延迟驱逐和包含性放宽模式的逻辑。对于至少一个实施例来说,高速缓存控制器510可以利用一个组的冲突计数器502来实现延迟驱逐,以确保在事务性执行中局部高速缓存206的X个高速缓存行的资源保证。
由高速缓存控制器510实现的延迟驱逐模式依赖于放宽任何其冲突计数器具有非零值的组的包含性。即,该模式向LLC 504提供了能够选择性地按组来临时性地变为非包含式的能力。虽然这里所述的实施例利用计数器502来反映某一组的延迟驱逐处于未决状态,但是任何其他记录未决的延迟驱逐的方式也可以被采用,而并不背离所附权利要求的范围。
结合图6和图7,给出了对于延迟驱逐模式的进一步论述。图6是示出在图5中示出的系统500的操作过程中的示例性高速缓存操作的方框数据流图,其中至少一个处理器正在进行指令原子块的事务性执行。对于图6中示出的例子,假定处理器核心P(0)正在执行前述的事务XYZ的代码,还假定其他处理器每个都在并发地执行结合图4而规定的代码:
处理器核心P(1):写M
处理器核心P(2):写N
处理器核心P(N):写P
图6的高速缓存操作(1)至(4)实质上同结合图4所述的上述操作相同。如图6中所示,在高速缓存操作(4)结束时,行A、B、D和E已被装入LLC504中组S的多路中。
图6示出,在高速缓存操作(5)中,处理器P(N)执行其指令,使得高速缓存操作将高速缓存行F读取到局部高速缓存206d中,以便将数据项P写入。作为在处理器核心P(N)上“写P”的执行结果而被执行的高速缓存操作(5)遇到LLC 202的全满组102。从而,作为高速缓存操作(5)的结果,一牺牲高速缓存行被选择来进行驱逐。图6示出,出于示例的目的,高速缓存控制器510的LLC替换算法选择了路0来被驱逐,该路0包含高速缓存行A。
图7是说明方法700的至少一个实施例的流程图,该方法用于针对某一组来放宽末级高速缓存中的包含性原则。这种方法700的一个实施例可以例如由高速缓存控制器(参见例如图5和图6的510)来执行。该方法开始于方框702并继续至方框703。
图6和图7示出,高速缓存控制器510在方框703可以驱逐选中的牺牲高速缓存行。图6示出,作为高速缓存操作(6),从LLC 504中驱逐行A。然而,与图4中示出的处理形成对照的是,这种驱逐(6)并不必然导致立即从处理器P(0)的局部高速缓存506a中驱逐高速缓存行A。处理然后继续至方框704。
在方框704,高速缓存控制器510可以向处理器P(0)发送针对高速缓存行A的修改的监听请求630。修改的监听消息630并不简单地表示处理器核心P(0)应当驱逐该高速缓存行,而是带有一标记以便向处理器核心P(0)通知该监听是因为LLC资源冲突(因此并不反映与协作线程的数据冲突)。对修改的监听消息630的发送704在图6中被标为高速缓存操作(7)。
响应于修改的监听消息630,局部高速缓存206a的控制逻辑在高速缓存操作(8)中生成响应,以表示处理器P(0)正在进行与该高速缓存行有关的事务性执行。在本文中该响应被称作事务组冲突响应。处理器P(0)并不立刻将该高速缓存驱逐并放弃该事务,而是从处理器P(0)向高速缓存控制器510发送回事务组冲突响应640,并继续其事务性执行。事务组冲突响应640表示处理器P(0)将延迟高速缓存行A的驱逐,直到该事务(在该例子中为事务XYZ)完成(或放弃)。事务组冲突响应640还触发对于组S102的包含性放宽,如下面立刻所叙述的。
高速缓存控制器510接收到事务组冲突响应640,使图7的方框706的判定结果为“真”。处理然后便继续至方框708。
另一方面,如果未收到冲突事务响应,则方框706的判定结果为假,表示正常的包含式高速缓存处理。在此情形下,假定:1)该高速缓存行已从局部高速缓存206a中被驱逐,2)延迟驱逐因此将不被执行,和3)包含式高速缓存处理可以正常继续。因此,如果方框706的判定结果为“假”,则方法700的处理便在方框712结束。
图6示出,高速缓存行A在高速缓存操作(6)中从LLC 504中被驱逐,但是,在高速缓存操作(7)中并不会将该高速缓存行从局部高速缓存206a中驱逐。替代的是,在高速缓存操作(7)中发出事务组冲突响应640,表示从局部高速缓存206a中驱逐该高速缓存行的操作将被延迟。
高速缓存操作(6)和(7)的结果是,LLC 504就组S而言不再是包含式的。即,局部高速缓存206a具有一有效的高速缓存行,即行A,但其并不包括在LLC 504的组S中。因此,在图7的方框708中,高速缓存控制器510开始对LLC 504中的组S执行放宽的包含性处理。
在方框708中,高速缓存控制器510递增组S的冲突计数器502的值。处理然后继续至方框710。在方框710中,高速缓存控制器510对于选定的组(在本例中为组S)进入放宽的包含式模式。对于选定的组的任何外来监听,高速缓存控制器510在方框710将该监听向所有局部高速缓存206a~206d进行广播。即,只要某组的冲突计数器为非零,高速缓存控制器510就会保持注意局部高速缓存之一已指示其由于某事务而将延迟驱逐、以及针对该组的包含性原则当前不予遵循。方框710中的处理有效地允许按组地实现非包含性,前提是只要针对该组有一个或多个延迟驱逐处于未决状态。方法700的处理然后在方框712结束。
图8和图9说明根据本发明至少一个实施例而可以执行的处理,用来还原经历过从局部高速缓存的延迟驱逐的某组的包含性。图8是一个方框数据流图,说明如图5所示的500这样的多处理器系统的一个实施例的数据流。图9是说明方法900的至少一个实施例的流程图,该方法用于恢复经历过延迟驱逐的组的包含性。对于至少一个实施例来说,图9的方法可以由高速缓存控制器来执行,例如图5和图6中示出的高速缓存控制器510。
图8延续了前面结合图6和图7而说明的例子。图8示出,高速缓存操作(6)之后,LLC 504的组S的路0已被替换为高速缓存行F。在高速缓存操作(9)中,在事务XYZ继续执行过程中,处理器核心P(0)将包含数据项Z的一存储器行读取到局部高速缓存206a中。该行在图8中被称作高速缓存行C。对于高速缓存行C,其字段106中的事务位被置为有效,以表示其包含临时数据。
事务XYZ执行完毕之后,如果该事务已成功,处理器P(0)将该事务的存储器状态提交。在高速缓存操作10中,高速缓存行A、B和C的事务位被清除。当其提交事务XYZ的存储器状态时,处理器P(0)将项目X写回到LLC 504中,并对高速缓存行A执行延迟驱逐。如果该事务不成功,处理器P(0)将高速缓存行A从局部高速缓存206a中驱逐而不提交结果。写回与驱逐(事务成功)或驱逐(事务XYZ未成功)在图8中被示为高速缓存操作(11)。
不管该事务是否成功,处理器P(0)大约在其执行高速缓存操作(11)的同时向高速缓存控制器发送消息850。消息850用来指示处理器P(0)已完成延迟驱逐或者写回的执行。在本文中该消息被称作完成消息850。完成消息850可以由与局部高速缓存506a相关联的控制逻辑来生成和发送。
图9示出,高速缓存控制器可以在方框904接收完成消息。方法900的处理从方框904继续至方框906。在方框906,高速缓存控制器510递减组S的冲突计数器502。处理然后继续至方框908,在这里确定所选组的冲突计数器在递减以后此时是否为非零。如果为非零,那么该组保持在非包含性状态,处理在方框912结束。
然而,如果在方框908中确定该组的冲突计数器反映零值,那么对于该组而言没有另外的延迟驱逐处于未决状态。结果,处理继续至方框910,在这里恢复所选组的正常的包含性处理。处理然后在方框912中结束。
上述的机制、方法和结构可以在任何多处理器系统中采用。在上述的图2、5、6和8中阐述了这样的系统的一些例子。这样的系统中的每一个的实施例可以包括多个处理器,其中每个处理器实现非阻塞(non-blocking)高速缓冲存储器子系统(在本文中高速缓冲存储器子系统有时被简称为术语“高速缓存系统”)。高速缓存系统可以包括L0高速缓存206、506,并任选地可以包括L1高速缓存(未示出)。对于至少一个实施例来说,L0高速缓存206、506(以及L1高速缓存(若有的话))可以是片上(on-die)高速缓存。所述系统还可以包括片上共享末级高速缓存204、504。
除了高速缓存,该系统的每一个处理器还可以从主存储器(参见例如图5的主存储器590)获取数据。主存储器、L2高速缓存、L0高速缓存以及L1高速缓存(如果有的话)一起组成存储器层次结构。存储器(参见例如图5的主存储器590)可以存储指令592和/或数据591,用于控制处理器的操作。指令592和/或数据591可以包括用于执行这里所述的任何或全部技术的代码。存储器590旨在作为存储器的一般化表示,并可以包括各种形式的存储器,例如硬盘驱动器、CD-ROM、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等等,以及相关的电路。
本文所公开的机制的实施例可以以硬件、软件、固件或者上述实现方法的组合来实现。本发明的实施例可以被实现为在可编程系统上执行的计算机程序,该可编程系统包括至少一个处理器、一数据存储系统(包括易失性和非易失存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。程序代码可以应用在输入数据上,以执行本文所述的功能并生成输出信息。该输出信息可以以已知的方式被应用到一个或多个输出设备。对于本申请来说,处理系统可以包括任何具有处理器的系统,该处理器例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或者微处理器。
上述的系统200和系统500代表了基于可从英特尔公司获得的Pentium
Figure S200680043167XD00141
Pentium
Figure S200680043167XD00142
Pro、PentiumII、Pentium
Figure S200680043167XD00144
III、Pentium
Figure S200680043167XD00145
4以及Itanium
Figure S200680043167XD00146
与Itanium
Figure S200680043167XD00147
II微处理器的处理系统,但是也可以使用其他系统(包括具有其他微处理器的个人计算机(PC)、工程工作站、机顶盒等等)。在一个实施例中,示例性系统可以执行可从微软公司获得的一个版本的WINDOWS
Figure S200680043167XD00148
操作系统,但是也可以使用例如其他操作系统以及图形用户界面。
虽然示出并描述了本发明的特定实施例,但是对于本领域技术人员来说显而易见的是,可以进行许多改变和修改,而并不背离所附权利要求的范围。例如,由图5、6和8中示出的高速缓存控制器510实现的组替换算法可以倾向于支持事务性高速缓存块。即,如果有非事务性块可用,该替换算法可以拒绝从LLC中置换事务性块。以这种方式,该替换算法可以有助于减少转换至上面结合图7的方框710而论述的非包含式状态。本领域技术人员将认识到,这种替代性的实施例可能要求LLC和局部高速缓存交换关于哪些高速缓存块包含临时数据的补充信息。
此外,例如,本领域技术人员将会理解,本文中所论述的延迟驱逐/放宽包含性的结构和技术的实施例可以应用到延迟写回或延迟驱逐值得采纳的任何情形中。虽然这种方法在本文中是针对其关于事务性执行的益处进行说明的,但是这样的论述不应被认为是限制性的。本领域技术人员可以确定本文中所论述的方法可能有用的其他情形,并可以在这样的情形中实现延迟驱逐/放宽包含性,而不背离所附权利要求的范围。
此外,例如,每组一个的计数器502的值在上述论述中用于确定延迟驱逐是否处于未决状态。然而,本领域技术人员会认识到,其他方法也可以用来记录未决的延迟驱逐。
此外,例如,本文中所论述的实施例可以用于在上述之外的其他情形中,包括不涉及事务性执行的情形。例如,所述实施例可以用于这样的系统,该系统为第一线程提供服务质量的规定,以确保该系统中其他线程不会降低该第一线程的性能。
因此,本领域技术人员将会理解,可以进行许多改变和修改,而不背离本发明的更广泛的各方面。所附权利要求旨在将所有这些落入本发明的真正范围内的改变和修改都包含在其范围内。

Claims (24)

1.一种用于处理信息的装置,包括:
多个处理器,每一个都具有局部高速缓存;
共享包含式高速缓存,其耦合到所述多个处理器;以及
高速缓存控制器,用于响应于来自所述多个处理器的其中之一的延迟驱逐指示,将所述共享高速缓存中的一个组置于非包含式状态,其中,所述延迟驱逐指示表示从局部高速缓存中驱逐高速缓存行的操作将被延迟。
2.权利要求1所述的装置,还包括:
存储区域,用于记录未决的延迟驱逐。
3.权利要求2所述的装置,其中:
所述存储区域用于维持计数器值。
4.权利要求3所述的装置,其中:
所述高速缓存控制器还用于,响应于接收到所述延迟驱逐指示,递增所述计数器值的值。
5.权利要求2所述的装置,还包括:
多个存储区域,每一个对应于所述共享高速缓存中的一个组。
6.权利要求1所述的装置,其中:
所述高速缓存控制器还用于,在所述非包含式状态期间,向所述局部高速缓存广播针对所述组的监听,而不管该监听是否在所述共享高速缓存中命中。
7.权利要求1所述的装置,其中,所述局部高速缓存还包括:
控制逻辑,用于生成所述延迟驱逐指示。
8.权利要求7所述的装置,其中:
所述控制逻辑还用于,响应于一监听而生成所述延迟驱逐指示,该监听否则将会导致在事务性执行过程中一临时数据被从所述局部高速缓存中驱逐。
9.权利要求1所述的装置,其中,所述局部高速缓存还包括:
控制逻辑,用于生成消息以指示延迟驱逐完成。
10.权利要求1所述的装置,其中,所述高速缓存控制器还用于:
响应于确定针对所述组的所有未决的延迟驱逐都已完成,将该组置于包含式状态。
11.一种高速缓存控制器,包括:
控制模块,用于在处于包含式模式时选择性地向多个局部高速缓存广播监听;
递增机构,用于一旦接收到延迟驱逐指示,就对计数器进行递增,其中,所述延迟驱逐指示表示从局部高速缓存中驱逐高速缓存行的操作将被延迟;以及
递减机构,用于一旦从所述局部高速缓存接收到完成消息,就对所述计数器进行递减;
其中,所述控制模块还用于,在所述计数器的值指示对于与所述延迟驱逐指示相关联的选定组有一个或多个延迟驱逐处于未决状态时,将该选定组置于非包含式模式。
12.权利要求11所述的高速缓存控制器,其中:
所述控制模块还用于,在所述非包含式模式期间,非选择性地向所有的所述局部高速缓存广播针对所述组的监听。
13.权利要求11所述的高速缓存控制器,其中:
所述控制模块还用于,在处于所述包含式模式时,仅当所述监听在共享高速缓存中命中时才向所述局部高速缓存广播所述监听。
14.权利要求11所述的高速缓存控制器,其中:
所述控制模块还用于,维持针对共享高速缓存中除了所述选定组以外的所有组的所述包含式模式。
15.权利要求11所述的高速缓存控制器,还包括:
用于根据替换策略从共享高速缓存选择并驱逐数据的模块。
16.权利要求15所述的高速缓存控制器,其中:
所述控制模块用于,在所述局部高速缓存的其中一个延迟所述数据的驱逐时,维持针对所述选定组的所述非包含式模式。
17.一种用于处理信息的系统,包括:
存储器;
多个处理器,其耦合到所述存储器,每个处理器都包括局部高速缓存;
共享高速缓存,其耦合在所述处理器和所述存储器之间;以及
高速缓存控制逻辑,用于在所述局部高速缓存、所述共享高速缓存以及所述存储器中实施一致性策略;
其中,所述高速缓存控制逻辑包括用于将所述共享高速缓存实现为包含式高速缓存的逻辑,并且还包括用于响应于来自所述多个处理器的其中之一的延迟驱逐指示,临时性地将所述共享高速缓存中的一个或多个组视为非包含式形式的逻辑,其中,所述延迟驱逐指示表示从局部高速缓存中驱逐高速缓存行的操作将被延迟。
18.权利要求17所述的系统,其中:
所述存储器是DRAM。
19.权利要求17所述的系统,还包括:
计数器,用于记录针对所述共享高速缓存中的一个组的未决的延迟驱逐。
20.权利要求17所述的系统,其中,所有的所述处理器都位于单个芯片上。
21.权利要求20所述的系统,还包括:
另外的多个处理器,其位于第二芯片上,耦合到所述单个芯片。
22.权利要求19所述的系统,其中,所述用于临时性地将所述共享高速缓存中的所述一个或多个组视为非包含式形式的逻辑还包括:
用于在所述计数器的值指示针对一个组有一个或多个延迟驱逐处于未决状态时将该组视为非包含式形式的逻辑。
23.权利要求21所述的系统,其中,所述用于将所述共享高速缓存实现为包含式高速缓存的逻辑还包括:
用于仅当一监听在所述共享高速缓存中命中时从所述第二芯片向所述局部高速缓存广播该监听的逻辑。
24.权利要求21所述的系统,其中,所述用于临时性地将所述共享高速缓存中的所述一个或多个组视为非包含式形式的逻辑还包括:
用于如果有任意监听映射到所述一个或多个组就从所述第二芯片向一个或多个局部高速缓存广播该监听的逻辑。
CN200680043167.XA 2005-12-19 2006-12-06 高速缓存包含性的按组放宽 Expired - Fee Related CN101313285B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/313,114 2005-12-19
US11/313,114 US20070143550A1 (en) 2005-12-19 2005-12-19 Per-set relaxation of cache inclusion
PCT/US2006/047140 WO2007078647A2 (en) 2005-12-19 2006-12-06 Per-set relaxation of cache inclusion

Publications (2)

Publication Number Publication Date
CN101313285A CN101313285A (zh) 2008-11-26
CN101313285B true CN101313285B (zh) 2013-02-13

Family

ID=37954115

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200680043167.XA Expired - Fee Related CN101313285B (zh) 2005-12-19 2006-12-06 高速缓存包含性的按组放宽

Country Status (4)

Country Link
US (1) US20070143550A1 (zh)
CN (1) CN101313285B (zh)
DE (1) DE112006003453T5 (zh)
WO (1) WO2007078647A2 (zh)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7917699B2 (en) * 2007-12-21 2011-03-29 Mips Technologies, Inc. Apparatus and method for controlling the exclusivity mode of a level-two cache
US9128750B1 (en) * 2008-03-03 2015-09-08 Parakinetics Inc. System and method for supporting multi-threaded transactions
US9928072B1 (en) * 2008-05-02 2018-03-27 Azul Systems, Inc. Detecting and recording atomic execution
US8225139B2 (en) * 2009-06-29 2012-07-17 Oracle America, Inc. Facilitating transactional execution through feedback about misspeculation
JP5283128B2 (ja) * 2009-12-16 2013-09-04 学校法人早稲田大学 プロセッサによって実行可能なコードの生成方法、記憶領域の管理方法及びコード生成プログラム
US9081501B2 (en) * 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
US9477600B2 (en) * 2011-08-08 2016-10-25 Arm Limited Apparatus and method for shared cache control including cache lines selectively operable in inclusive or non-inclusive mode
US9223687B2 (en) 2012-06-15 2015-12-29 International Business Machines Corporation Determining the logical address of a transaction abort
US9298631B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Managing transactional and non-transactional store observability
US9298469B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Management of multiple nested transactions
US9262320B2 (en) 2012-06-15 2016-02-16 International Business Machines Corporation Tracking transactional execution footprint
US9311101B2 (en) * 2012-06-15 2016-04-12 International Business Machines Corporation Intra-instructional transaction abort handling
US9129071B2 (en) * 2012-10-24 2015-09-08 Texas Instruments Incorporated Coherence controller slot architecture allowing zero latency write commit
US9378148B2 (en) 2013-03-15 2016-06-28 Intel Corporation Adaptive hierarchical cache policy in a microprocessor
CN104951240B (zh) * 2014-03-26 2018-08-24 阿里巴巴集团控股有限公司 一种数据处理方法及处理器
US9454313B2 (en) * 2014-06-10 2016-09-27 Arm Limited Dynamic selection of memory management algorithm
US9612970B2 (en) * 2014-07-17 2017-04-04 Qualcomm Incorporated Method and apparatus for flexible cache partitioning by sets and ways into component caches
US9594697B2 (en) * 2014-12-24 2017-03-14 Intel Corporation Apparatus and method for asynchronous tile-based rendering control
CN106155936B (zh) * 2015-04-01 2019-04-12 华为技术有限公司 一种缓存替换方法与相关装置
US10262721B2 (en) 2016-03-10 2019-04-16 Micron Technology, Inc. Apparatuses and methods for cache invalidate
US10795820B2 (en) * 2017-02-08 2020-10-06 Arm Limited Read transaction tracker lifetimes in a coherent interconnect system
US11003592B2 (en) * 2017-04-24 2021-05-11 Intel Corporation System cache optimizations for deep learning compute engines
US10922265B2 (en) * 2017-06-27 2021-02-16 Intel Corporation Techniques to control remote memory access in a compute environment
US11068299B1 (en) * 2017-08-04 2021-07-20 EMC IP Holding Company LLC Managing file system metadata using persistent cache
TWI697902B (zh) 2019-01-24 2020-07-01 瑞昱半導體股份有限公司 電子裝置及電子裝置的管理方法
TWI739430B (zh) * 2019-01-24 2021-09-11 瑞昱半導體股份有限公司 快取記憶體及快取記憶體的管理方法
CN111258927B (zh) * 2019-11-13 2022-05-03 北京大学 一种基于采样的应用程序cpu末级高速缓存缺失率曲线的预测方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5832276A (en) * 1996-10-07 1998-11-03 International Business Machines Corporation Resolving processor and system bus address collision in a high-level cache
US5937431A (en) * 1996-07-12 1999-08-10 Samsung Electronics Co., Ltd. Multi- node, multi-level cache- only memory architecture with relaxed inclusion
US20030084250A1 (en) * 2001-10-31 2003-05-01 Gaither Blaine D. Limiting the number of dirty entries in a computer cache
CN1609823A (zh) * 2003-10-23 2005-04-27 英特尔公司 用于维持共享高速缓存一致性的方法和设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7689778B2 (en) * 2004-11-30 2010-03-30 Intel Corporation Preventing system snoop and cross-snoop conflicts

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5937431A (en) * 1996-07-12 1999-08-10 Samsung Electronics Co., Ltd. Multi- node, multi-level cache- only memory architecture with relaxed inclusion
US5832276A (en) * 1996-10-07 1998-11-03 International Business Machines Corporation Resolving processor and system bus address collision in a high-level cache
US20030084250A1 (en) * 2001-10-31 2003-05-01 Gaither Blaine D. Limiting the number of dirty entries in a computer cache
CN1609823A (zh) * 2003-10-23 2005-04-27 英特尔公司 用于维持共享高速缓存一致性的方法和设备

Also Published As

Publication number Publication date
WO2007078647A2 (en) 2007-07-12
US20070143550A1 (en) 2007-06-21
DE112006003453T5 (de) 2008-10-02
CN101313285A (zh) 2008-11-26
WO2007078647A3 (en) 2007-08-23

Similar Documents

Publication Publication Date Title
CN101313285B (zh) 高速缓存包含性的按组放宽
US9501333B2 (en) Multiprocessor system with multiple concurrent modes of execution
US7644238B2 (en) Timestamp based transactional memory
US8832415B2 (en) Mapping virtual addresses to different physical addresses for value disambiguation for thread memory access requests
CN101203831B (zh) 用于对存储器更新进行缓存的装置、方法和系统
US8321634B2 (en) System and method for performing memory operations in a computing system
US9514049B2 (en) Cache backing store for transactional memory
US11237966B2 (en) System and method for event monitoring in cache coherence protocols without explicit invalidations
US9798577B2 (en) Transactional storage accesses supporting differing priority levels
CN104375958A (zh) 高速缓存存储器管理事务性存储器访问请求
JPH1078918A (ja) チェックポイント処理加速装置および同装置を適用した計算機システム
CN1327336C (zh) 用于使用记录板机制处理加载锁定指令的方法
US9430380B2 (en) Managing memory transactions in a distributed shared memory system supporting caching above a point of coherency
CN101495968A (zh) 用于软件事务处理存储器系统的硬件加速
KR20120104364A (ko) 무제한 트랜잭션 메모리(utm) 시스템에서의 모드 전환의 수행
US10108464B2 (en) Managing speculative memory access requests in the presence of transactional storage accesses
CN101563674A (zh) 对来自多处理器系统上的多线程程序的存储器访问进行管理的方法和系统
EP0404560B1 (en) multiprocessor system and method
Ren et al. High-performance GPU transactional memory via eager conflict detection
US20200034236A1 (en) Dynamic transaction throttling in a data processing system supporting transactional memory
JP2006202285A (ja) レジスタを同期させる方法
JPH10149307A (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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130213

Termination date: 20181206