高速缓存包含性的按组放宽的制作方法

文档序号:6569687阅读:108来源:国知局
专利名称:高速缓存包含性的按组放宽的制作方法
技术领域
本公开总体上涉及信息处理系统,更具体地,涉及多处理器系统中对
高速缓存包含性(cache inclusion)的按组放宽(per-set relaxation)。
背景技术
许多处理系统的目标是快速地处理信息。采用的一种增加处理器处理 信息的速度的技术是使该处理器具有更快的局部存储器(ocal meiiK)iy),称 为高速缓存。处理器使用高速缓存临时性地存储指令和数据。采用的另一 种增加处理器处理信息的速度的技术是使该处理器具有多线程处理的能 力。
对于支持软件线程并发执行的系统,例如同时多线程(simultaneous multi-threading, "SMT")和/或单芯片多处理器(chip multi-processor, "CMP") 系统,应用程序可以被并行化为多线程代码以利用系统潜在的并发执行能 力。多线程应用程序的数个线程可能需要通信及同步,通常通过共享存储 器(shared memoiy)来完成。另外,单线程程序也可以被并行化为多线程代 码,这是通过将该程序组织为多个线程、然后并发地运行这些线程来实现 的,其中每个线程都运行在单独的逻辑处理器或处理器核心上。
可以采用事务性存储器(transactional memory)来提高多线程程序的性
能和/或使编写多线程程序变得更容易。事务性存储器涉及线程推测地执行 一指令块。即,该线程执行这些指令,但直到该线程决定提交或抛弃(也称 作放弃)推测地完成的工作之前,其他的线程不被允许看到这些指令的执行 结果。
处理器可以通过提供对作为事务的一部分而完成的存储器更新进行缓 冲的能力来使事务性存储器更有效率。存储器更新可被缓冲,直到执行或 抛弃事务性存储器更新的决定被作出。被缓冲的事务性存储器更新可以存 储在高速缓存系统中。


参照附图,可以理解本发明的实施例,在附图中相似的元素由相似的 数字表示。这些附图不是要进行限制,而是用来说明用于在多处理器计算 系统中提供高速缓存包含性的按组放宽的系统、方法、装置和机制的选择 性实施例。
图1是说明在事务性执行过程中能够对存储器更新进行缓冲的局部高 速缓存的至少一个实施例的方框图。
图2是说明多核心处理器的至少一个实施例的方框图。 图3是说明用于在示例性代码块的事务性执行过程中对于存储器写的 高速缓存处理的方框数据流图。
图4是说明对于多核心处理器中包含式(indusive)高速缓存层次结构 的至少一个实施例的高速缓存处理的方框数据流图。
图5是说明多处理器系统的至少一个实施例的方框图,该系统具有修 改的高速缓存模式,以进行延迟的驱逐(delayed eviction)以及对包含性的按 组放宽。
图6是示出对于多核心系统的示例性高速缓存操作的方框数据流图, 该系统具有修改的高速缓存模式,以进行延迟的驱逐以及对包含性的按组 放宽。
图7是说明一种方法的至少一个实施例的流程图,该方法用于针对某 一组放宽末级高速缓存中的包含性原则。
图8是示出对于多核心系统的另外的示例性高速缓存操作的方框数据 流图,该系统具有修改的高速缓存模式,以进行延迟的驱逐以及对包含性 的按组放宽。
图9是说明一种方法的至少一个实施例的流程图,该方法用于针对某 一组恢复末级高速缓存中的包含性原则。
具体实施例方式
下面的论述描述了用于在多核心系统中提供高速缓存包含性的按组放 宽的系统、方法、装置和机制的选定实施例。在下面的描述中,给出了许多具体细节,例如处理器、路(way)、组(set)和片上高速缓存的数目,系统 配置以及数据结构,以提供对本发明实施例的更透彻理解。但是,本领域 技术人员将能够理解,本发明可以不需要上述具体细节来实施。另外,一 些公知的结构、电路及类似部件并未详细示出,以避免不必要地使下述论 述难以理解。
事务性执行。对于利用线程级推测的多线程任务,至少一些(虽然不一 定是全部)并发执行的线程可以共享相同的存储器空间。这里使用的术语 "协作线程"表示一组共享相同的存储器空间的线程。协作线程可以共享 部分的存储器空间,也可以访问存储器的其他未共享部分。因为协作线程 共享至少部分的存储器空间,所以它们至少可以读取和/或写入部分相同的
存储器项目。因而,并发执行的协作线程应当相互同步,以完成正确的、 有意义的工作。
已经提出了各种处理协作线程的存储器访问同步的方法。 一种方法是 "事务性执行",有时也称作"事务性存储器"。在事务性执行方法中,指 令块可以被划作为原子块(atomicblock),并可以被原子地执行,而不需要 利用锁(本文中使用的术语"原子块"、"事务性存储器块"和"事务性块" 可以互换使用)。其语义为,要么每一个被划分的指令的实际效果全部可见 并同时提交给处理器状态,要么部分或全部的被划分的指令的效果全都不 可见或不被提交。
在一个协作线程的原子块的执行过程中,对于至少一种已知的事务性 执行方法来说,由该线程创建的存储器状态是推测性的,因为并不知道该 指令原子块是否将成功执行完毕。即,第二个协作线程可能竞争相同的数 据,从而知道第一个协作线程无法原子地执行。考虑到推测错误 (misspeculatkm),根据提出的至少一些事务性执行方法,在该原子块的指 令执行过程中不更新处理器状态。而是,在原子块期间进行的存储器更新 可被缓存到局部缓冲器中,例如高速缓存,直到确定该块是否能够成功地 原子地执行为止,最终,存储器更新可以被成体系地提交至存储器。对于 其他方法,在原子块的指令执行过程中,在进行任何处理器状态更新之前, 首先记录复原状态。如果出现了推领U错误,则处理器状态可以随后从保存 的复原状态中被还原。图1是说明能够在事务性执行过程中对存储器更新进行缓沖的局部高
速缓存100的至少一个实施例的方框图。在许多现存系统中,高速缓存100 被细分为多个组102。许多现代处理器中每个组包含若干行104,称^fT路"。 因为每组包含几个行,映射到给定组的一个主存储器行可以被存储在该组 中的任意行、或者称"路"104。
图1对局部高速缓存IOO进行说明,该局部高速缓存包括一个或多个 组102,每一组包含若干(n)路104。对于在图1中说明的示例性实施例, 每组包含n-3路。图1说明,高速缓存100的每一路104可以与事务字段 106相关联。该事务字段106中的位的值可以表示该路104中的高速缓存 行是否具有在原子块执行过程中被修改的推测性数据。例如如果事务字段 106中的位显示其值为"1",这可以表示该高速缓存行104包含针对尚未 完成原子执行的事务的推测性(或"临时")数据。这种数据对于系统的其 余部分不可见。如果另一个线程(在同一个处理器或另一个处理器上运行) 试图在该事务位被置为有效时访问该高速缓存行,那么该事务因为其无法 被原子地执行而必将失败。
对于一般的高速缓存处理,当出现高速缓存缺失时,包含缺失项的存 储器行将被装入高速缓存100,有时候还要替换另一高速缓存行。该过程 称作高速缓存替换。在高速缓存替换过程中,组102中数个路104之一必
须被替换,因此它将被挑选出来从该高速缓存ioo中驱逐。
资源保证。如果事务要求的高速缓存路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位处理器,例 如Pentium 、 Pentium Pro、 Pentium II、 Pentium III、 Pentium 4以 及Itanium⑧与Itanium 2微处理器。但是上述的部分清单不应被视为限制 性的。
图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)只需在最初发送给LLC204。这可能出现在,例如,当监听请求 来自图4中示出的芯片203之外的另一插槽(未示出)时。这种监听请求在
本文中称作"外来"监听。
如果外来监听在LLC204中命中,那么它将被广播到一个或多个处理 器P(0) P(N),从而局部高速缓存206a 206n也可以被査询。否贝U,如果 外来一致性监听未在LLC 204中命中,那么就可以知道该数据不在任何局 部高速缓存206a 206d之中出现,而监听不需要被发送至局部高速缓存 206a 206d。以这种方式,与外来监听有关的总线业务量,与针对非包含 式高速缓存层次结构所预期的这种总线业务量相比,能得以减少。对于包含式高速缓存系统,如果一高速缓存行被从LLC 204中驱逐, 那么该高速缓存行也必须被从任何包含它的局部高速缓存206中驱逐。如 图4所示,这意味着,即使程序员仔细地编写代码以便遵守资源保证,内 部事件也可能在一事务过程中强制驱逐被局部缓存的数据。
图4中示出的例子假定图4中示出的所有存储器操作映射到LLC 204 的同一组,以及该组102是一个4路组。对于图4中示出的例子,假定处 理器核心P(O)在执行前面所述的事务XYZ的代码。还假定每一个其他处 理器都在并发地执行下面的代码
处理器核心P(1):写M
处理器核心P(2):写N
处理器核心P(N):写P
图4示出,在高速缓存操作(1)和(2)中,处理器核心P(O)将高速缓存行 A和B读取至其局部高速缓存206a中,并将字段106中的事务位(如上述 结合图3所解释的)置为有效。因为该高速缓存层次结构是包含式的,高速 缓存行A和B在高速缓存操作(1)和(2)过程中还分别地被读取至LLC 204 中。
虽然处理器核心P(O)尚未完成事务XYZ的执行,处理器核心P(l)执行 其指令,使高速缓存操作(3)将高速缓存行D读取到局部高速缓存206b中, 以便将数据项M写入。同样地,在处理器核心P(O)完成事务XYZ的执行 之前,处理器核心P(2)执行其指令,使高速缓存操作(4)将高速缓存行E读 取到局部高速缓存206c中,以便将数据项N写入。由于包含性原则,高 速缓存行D和E在高速缓存操作(3)和(4)过程中也被分别写入LLC 204中。
图4示出,同样在处理器核心P(O)完成事务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(O)具有 严重的后果。因为该高速缓存层次结构是包含式的,因此对LLC204中一 高速缓存行的驱逐也要求对局部高速缓存206a中的同一行进行驱逐。在高 速缓存操作(7)中对局部高速缓存206a中的高速缓存行A的驱逐导致事务 XYZ放弃并失败。这是因为原子事务的所有存储器操作都必须被原子地更 新(或者不更新)至该高速缓存层次结构的下一级。
因此,即使不存在协作线程竞争局部高速缓存206a中的数据,以及即 使根据事务性执行的四路保证,处理器核心P(O)在其局部高速缓存206a 中具有足够的资源来完成事务XYZ的执行,在高速缓存操作(7)中从处理 器核心P(O)的局部高速缓存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 中命中,LLC504就使它的该数据块副本失效。另外,因为该监听在LLC 504中命中,以及因为图5中示出的高速缓存模式是包含式的,所以无效 监听操作还被从高速缓存控制器510通过互连520向Ll高速缓存506a 506n发送。
然而,高速缓存控制器510还包括用于实现延迟驱逐和包含性放宽模 式的逻辑。对于至少一个实施例来说,高速缓存控制器510可以利用一个 组的冲突计数器502来实现延迟驱逐,以确保在事务性执行中局部高速缓 存206的X个高速缓存行的资源保证。
由高速缓存控制器510实现的延迟驱逐模式依赖于放宽任何其冲突计 数器具有非零值的组的包含性。即,该模式向LLC504提供了能够选择性 地按组来临时性地变为非包含式的能力。虽然这里所述的实施例利用计数 器502来反映某一组的延迟驱逐处于未决状态,但是任何其他记录未决的 延迟驱逐的方式也可以被采用,而并不背离所附权利要求的范围。
结合图6和图7,给出了对于延迟驱逐模式的进一步论述。图6是示 出在图5中示出的系统500的操作过程中的示例性高速缓存操作的方框数 据流图,其中至少一个处理器正在进行指令原子块的事务性执行。对于图 6中示出的例子,假定处理器核心P(O)正在执行前述的事务XYZ的代码, 还假定其他处理器每个都在并发地执行结合图4而规定的代码
处理器核心P(1):写M处理器核心P(2):写N 处理器核心P(N):写P
图6的高速缓存操作(1)至(4)实质上同结合图4所述的上述操作相同。 如图6中所示,在高速缓存操作(4)结束时,行A、 B、 D和E已被装入LLC 504中组S的多路中。
图6示出,在高速缓存操作(5)中,处理器P(N)执行其指令,使得高速 缓存操作将高速缓存行F读取到局部高速缓存206d中,以便将数据项P 写入。作为在处理器核心P(N)上"写P"的执行结果而被执行的高速缓存 操作(5)遇到LLC202的全满组102。从而,作为高速缓存操作(5)的结果, 一牺牲高速缓存行被选择来迸行驱逐。图6示出,出于示例的目的,高速 缓存控制器510的LLC替换算法选择了路0来被驱逐,该路0包含高速缓 存行A。
图7是说明方法700的至少一个实施例的流程图,该方法用于针对某 一组来放宽末级高速缓存中的包含性原则。这种方法700的一个实施例可 以例如由高速缓存控制器(参见例如图5和图6的510)来执行。该方法开始 于方框702并继续至方框703。
图6和图7示出,高速缓存控制器510在方框703可以驱逐选中的牺 牲高速缓存行。图6示出,作为高速缓存操作(6),从LLC504中驱逐行A。 然而,与图4中示出的处理形成对照的是,这种驱逐(6)并不必然导致立即 从处理器P(O)的局部高速缓存506a中驱逐高速缓存行A。处理然后继续至 方框704。
在方框704,高速缓存控制器510可以向处理器P(O)发送针对高速缓 存行A的修改的监听请求630。修改的监听消息630并不简单地表示处理 器核心P(O)应当驱逐该高速缓存行,而是带有一标记以便向处理器核心P(O) 通知该监听是因为LLC资源冲突(因此并不反映与协作线程的数据冲突)。 对修改的监听消息630的发送704在图6中被标为高速缓存操作(7)。
响应于修改的监听消息630,局部高速缓存206a的控制逻辑在高速缓 存操作(8)中生成响应,以表示处理器P(O)正在进行与该高速缓存行有关的 事务性执行。在本文中该响应被称作事务组冲突响应。处理器P(O)并不立 刻将该高速缓存驱逐并放弃该事务,而是从处理器P(O)向高速缓存控制器510发送回事务组冲突响应640,并继续其事务性执行。事务组冲突响应 640表示处理器P(O)将延迟高速缓存行A的驱逐,直到该事务(在该例子中 为事务XYZ)完成(或放弃)。事务组冲突响应640还触发对于组S 102的包 含性放宽,如下面立刻所叙述的。高速缓存控制器510接收到事务组冲突响应640,使图7的方框706 的判定结果为"真"。处理然后便继续至方框708。另一方面,如果未收到冲突事务响应,则方框706的判定结果为假, 表示正常的包含式高速缓存处理。在此情形下,假定l)该高速缓存行已 从局部高速缓存206a中被驱逐,2)延迟驱逐因此将不被执行,和3)包含式 高速缓存处理可以正常继续。因此,如果方框706的判定结果为"假",则 方法700的处理便在方框712结束。图6示出,高速缓存行A在高速缓存操作(6)中从LLC 504中被驱逐, 但是,在高速缓存操作(7)中并不会将该高速缓存行从局部高速缓存206a 中驱逐。替代的是,在高速缓存操作(7)中发出事务组冲突响应640,表示 从局部高速缓存206a中驱逐该高速缓存行的操作将被延迟。高速缓存操作(6)和(7)的结果是,LLC 504就组S而言不再是包含式的。 即,局部高速缓存206a具有一有效的高速缓存行,即行A,但其并不包括 在LLC504的组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(O)将包含数据 项Z的一存储器行读取到局部高速缓存206a中。该行在图8中被称作高 速缓存行C。对于高速缓存行C,其字段106中的事务位被置为有效,以 表示其包含临时数据。 、事务XYZ执行完毕之后,如果该事务己成功,处理器P(O)将该事务 的存储器状态提交。在高速缓存操作10中,高速缓存行A、 B和C的事 务位被清除。当其提交事务XYZ的存储器状态时,处理器P(O)将项目X 写回到LLC 504中,并对高速缓存行A执行延迟驱逐。如果该事务不成功, 处理器P(O)将高速缓存行A从局部高速缓存206a中驱逐而不提交结果。 写回与驱逐(事务成功)或驱逐(事务XYZ未成功)在图8中被示为高速缓存 操作(ll)。不管该事务是否成功,处理器P(0)大约在其执行高速缓存操作(11)的 同时向高速缓存控制器发送消息850。消息850用来指示处理器P(O)已完 成延迟驱逐或者写回的执行。在本文中该消息被称作完成消息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,并 任选地可以包括Ll高速缓存(未示出)。对于至少一个实施例来说,L0高 速缓存206、 506 (以及L1高速缓存(若有的话))可以是片上(on-die)高速缓 存。所述系统还可以包括片上共享末级高速缓存204、 504。除了高速缓存,该系统的每一个处理器还可以从主存储器(参见例如图 5的主存储器590)获取数据。主存储器、L2高速缓存、L0高速缓存以及 Ll高速缓存(如果有的话)一起组成存储器层次结构。存储器(参见例如图5 的主存储器590)可以存储指令592和/或数据591,用于控制处理器的操作。 指令592和/或数据591可以包括用于执行这里所述的任何或全部技术的代 码。存储器590旨在作为存储器的一般化表示,并可以包括各种形式的存 储器,例如硬盘驱动器、CD-ROM、随机存取存储器(RAM)、动态随机存 取存储器(DRAM)、静态随机存取存储器(SRAM)等等,以及相关的电路。本文所公开的机制的实施例可以以硬件、软件、固件或者上述实现方 法的组合来实现。本发明的实施例可以被实现为在可编程系统上执行的计 算机程序,该可编程系统包括至少一个处理器、 一数据存储系统(包括易失 性和非易失存储器和/或存储元件)、至少一个输入设备以及至少一个输出 设备。程序代码可以应用在输入数据上,以执行本文所述的功能并生成输 出信息。该输出信息可以以已知的方式被应用到一个或多个输出设备。对 于本申请来说,处理系统可以包括任何具有处理器的系统,该处理器例如 数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或者微处理器。上述的系统200和系统500代表了基于可从英特尔公司获得的 Pentium 、 Pentium Pro、 Pentium II、 Pentium III、 Pentium 4以及 Itanium⑧与Itanium II微处理器的处理系统,但是也可以使用其他系统(包 括具有其他微处理器的个人计算机(PC)、工程工作站、机顶盒等等)。在一 个实施例中,示例性系统可以执行可从微软公司获得的一个版本的 WINDOWS⑧操作系统,但是也可以使用例如其他操作系统以及图形用户19界面。虽然示出并描述了本发明的特定实施例,但是对于本领域技术人员来 说显而易见的是,可以进行许多改变和修改,而并不背离所附权利要求的范围。例如,由图5、 6和8中示出的高速缓存控制器510实现的组替换算 法可以倾向于支持事务性高速缓存块。sp,如果有非事务性块可用,该替 换算法可以拒绝从LLC中置换事务性块。以这种方式,该替换算法可以有 助于减少转换至上面结合图7的方框710而论述的非包含式状态。本领域 技术人员将认识到,这种替代性的实施例可能要求LLC和局部高速缓存交 换关于哪些高速缓存块包含临时数据的补充信息。此外,例如,本领域技术人员将会理解,本文中所论述的延迟驱逐/^:宽包含性的结构和技术的实施例可以应用到延迟写回或延迟驱逐值得采纳的任何情形中。虽然这种方法在本文中是针对其关于事务性执行的益处 进行说明的,但是这样的论述不应被认为是限制性的。本领域技术人员可 以确定本文中所论述的方法可能有用的其他情形,并可以在这样的情形中 实现延迟驱逐/放宽包含性,而不背离所附权利要求的范围。此外,例如,每组一个的计数器502的值在上述论述中用于确定延迟 驱逐是否处于未决状态。然而,本领域技术人员会认识到,其他方法也可 以用来记录未决的延迟驱逐。此外,例如,本文中所论述的实施例可以用于在上述之外的其他情形 中,包括不涉及事务性执行的情形。例如,所述实施例可以用于这样的系 统,该系统为第一线程提供服务质量的规定,以确保该系统中其他线程不 会降低该第一线程的性能。因此,本领域技术人员将会理解,可以进行许多改变和修改,而不背 离本发明的更广泛的各方面。所附权利要求旨在将所有这些落入本发明的 真正范围内的改变和修改都包含在其范围内。
权利要求
1、 一种装置,包括多个处理器,每一个都具有局部高速缓存; 共享包含式高速缓存,其耦合到所述多个处理器;以及 高速缓存控制器,用于响应于来自所述多个处理器的其中之一的延迟 驱逐指示,将所述共享高速缓存中的一个组置于非包含式状态。
2、 权利要求1所述的装置,还包括-存储区域,用于记录未决的延迟驱逐。
3、 权利要求2所述的装置,其中 所述存储区域用于维持计数器值。
4、 权利要求3所述的装置,其中所述高速缓存控制器还用于,响应于接收到所述延迟驱逐指示,递减 所述计数器值的值。
5、 权利要求2所述的装置,还包括多个所述存储区域,每一个对应于所述共享高速缓存中的一个组。
6、 权利要求l所述的装置,其中所述高速缓存控制器还用于,在所述非包含式状态期间,向所述局部 高速缓存广播针对所述组的监听,而不管该监听是否在所述共享高速缓存 中命中。
7、 权利要求l所述的装置,其中,所述局部高速缓存还包括 控制逻辑,用于生成所述延迟驱逐指示。
8、 权利要求7所述的装置,其中所述控制逻辑还用于,响应于一监听而生成所述延迟驱逐指示,该监 听否则将会导致在事务性执行过程中一临时数据被从所述局部高速缓存中 驱逐。
9、 权利要求l所述的装置,其中,所述局部高速缓存还包括 控制逻辑,用于生成消息以指示延迟驱逐完成。
10、 权利要求l所述的装置,其中,所述高速缓存控制器还用于 响应于确定针对所述组的所有未决的延迟驱逐都己完成,将该组置于包含式状态。
11、 一种高速缓存控制器,包括控制模块,用于在处于包含式模式时选择性地向多个局部高速缓存广 播监听;递增机构,用于一旦从所述局部高速缓存的其中之一接收到延迟驱逐 指示,就对计数器进行递增;以及递减机构,用于一旦从所述局部高速缓存接收到完成消息,就对所述 计数器进行递减;其中,所述控制模块还用于,在所述计数器值指示对于与所述延迟驱 逐指示相关联的选定组有一个或多个延迟驱逐处于未决状态时,将该组置 于非包含式模式。
12、 权利要求ll所述的高速缓存控制器,其中所述控制模块还用于,在所述非包含式模式期间,非选择性地向所有 的所述局部高速缓存广播针对所述组的监听。
13、 权利要求ll所述的高速缓存控制器,其中所述控制模块还用于,在处于所述包含式模式时,仅当所述监听在共 享高速缓存中命中时才向所述局部高速缓存广播所述监听。
14、 权利要求ll所述的高速缓存控制器,其中所述控制模块还用于,维持针对共享高速缓存中除了所述选定组以外 的所有组的所述包含式模式。
15、 权利要求ll所述的高速缓存控制器,还包括 用于根据替换策略从共享高速缓存选择并驱逐数据的模块。
16、 权利要求15所述的高速缓存控制器,其中所述控制模块用于,在所述局部高速缓存的其中一个延迟所述数据的 驱逐时,维持针对所述选定组的所述非包含式模式。
17、 一种系统,包括 存储器;多个处理器,其耦合到所述存储器,每个处理器都包括局部高速缓存; 共享高速缓存,其耦合在所述处理器和所述存储器之间;以及 高速缓存控制逻辑,用于在所述局部高速缓存、共享高速缓存以及存储器中实施一致性策略;其中,所述高速缓存控制逻辑包括用于将所述共享高速缓存实现为包含式高速缓存的逻辑,并且还包括用于临时性地将所述共享高速缓存中的一个或多个组视为非包含式形式的逻辑。
18、 权利要求17所述的系统,其中 所述存储器是DRAM。
19、 权利要求17所述的系统,还包括计数器,用于记录针对所述共享高速缓存中的一个组的未决的延迟驱逐。
20、 权利要求17所述的系统,其中,所有的所述处理器都位于单个芯 片上。
21、 权利要求20所述的系统,还包括另外的多个处理器,其位于第二芯片上,耦合到所述单个芯片。
22、 权利要求19所述的系统,其中,所述用于临时性地将所述共享高速缓存中的一个或多个组视为非包含式形式的逻辑还包括用于在所述计数器值指示针对一个组有一个或多个延迟驱逐处于未决 状态时将该组视为非包含式形式的逻辑。
23、 权利要求21所述的系统,其中,所述用于将所述共享高速缓存实现为包含式高速缓存的逻辑还包括用于仅当一监听在所述共享高速缓存中命中时从所述第二芯片向所述 局部高速缓存广播该监听的逻辑。
24、 权利要求21所述的系统,其中,所述用于临时性地将所述共享高速缓存中的一个或多个组视为非包含式形式的逻辑还包括用于如果有任意监听映射到所述一个或多个组就从所述第二芯片向一 个或多个局部高速缓存广播该监听的逻辑。
全文摘要
多核心处理器包括多个处理器以及一共享高速缓存。高速缓存控制逻辑在共享高速缓存以及各处理器的局部高速缓存中实现了一种包含式高速缓存模式。当处理器选择延迟从局部高速缓存进行驱逐时,维持计数器以按组记录情况。当计数器指示对于某组有一个或多个延迟驱逐处于未决状态时,高速缓存控制逻辑将该组当作非包含式的,向所有局部高速缓存广播外来监听,而不管该监听是否在共享高速缓存中命中。还描述和要求了其他实施例。
文档编号G06F12/08GK101313285SQ200680043167
公开日2008年11月26日 申请日期2006年12月6日 优先权日2005年12月19日
发明者M·马蒂纳, R·拉吉瓦 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1