在部分有序网络上广播高速缓存一致性的制作方法

文档序号:6648797阅读:211来源:国知局
在部分有序网络上广播高速缓存一致性的制作方法
【专利摘要】一种用于高速缓存一致性的方法,包括:由请求方高速缓存(RC)在部分有序请求网络(RN)上将对于高速缓存块的对等(P2P)请求广播到多个从属高速缓存;在P2P请求挂起期间,由RC在RN上从网关接收对于高速缓存块的转发的请求;在接收转发的请求之后,由RC从多个从属高速缓存接收对P2P请求的多个响应;在RC中设置高速缓存块的处理器内部状态,其中处理器内部状态也规定高速缓存块的处理器间状态;在设置处理器内部状态之后和P2P请求完成之后,由RC发布对转发的请求的响应;由RC响应于发布对转发的请求的响应而修改处理器内部状态。
【专利说明】在部分有序网络上广播高速缓存一致性

【背景技术】
[0001]在计算中,高速缓存一致性是指共享资源的本地高速缓存中存储的数据的一致性。当系统中客户端维持公用存储器资源的高速缓存时,可能出现不一致的数据的问题。这对于多处理系统中的CPU尤为真实。高速缓存一致性旨在维持高速缓存间与高速缓存和存储器间的一致性从而使得多个高速缓存的存在除了其对性能的影响之外对于系统编程人员是本质不可见的。


【发明内容】

[0002]一般而言,在一方面,本发明涉及用于高速缓存一致性的方法。该方法包括:通过第一请求方高速缓存(Re)的高速缓存代理在本地处理器的部分有序请求网络上将对于高速缓存块的第一对等(P2P)请求广播到该本地处理器上的多个从属高速缓存的多个高速缓存代理;在第一 P2P请求挂起期间,由第一 RC的高速缓存代理在该部分有序请求网络上从在该本地处理器上的本地网关接收与该高速缓存块相关联的转发的请求,其中该本地网关被操作地连接到外部处理器上的外部网关,其中,由于第一 P2P请求挂起,第一 RC的高速缓存代理延迟响应转发的请求;在接收转发的请求之后,由第一 RC的高速缓存代理从该多个从属高速缓存的多个高速缓存代理接收对第一 P2P请求的多个响应;在接收该多个响应之后,由第一 RC的高速缓存代理设置第一 RC中的该高速缓存块的处理器内部状态,其中该处理器内部状态也规定与该本地处理器和外部处理器相关联的高速缓存块的处理器间状态;并且在设置处理器内部状态之后和第一 P2P请求完成之后,由第一 RC的高速缓存代理发布对转发的请求的响应;并且由第一 RC的高速缓存代理响应发布对转发的请求的响应而修改所述处理器内部状态。
[0003]一般而言,在一方面,本发明涉及用于高速缓存一致性的方法。该方法包括:由驱逐高速缓存(EC)的高速缓存代理在本地处理器上的部分有序请求网络上将对于高速缓存块的对等(P2P)写回请求广播到本地处理器上的多个从属高速缓存的多个高速缓存代理;在P2P写回请求仍挂起期间,由EC的高速缓存代理在部分有序请求网络上从本地处理器上的本地网关接收对于该高速缓存块的第一转发的请求,其中该本地网关被操作地连接到外部处理器上的外部网关,并且其中,在P2P写回请求仍挂起期间,EC的高速缓存代理延迟响应第一转发的请求以确保只有一个P2P写回请求对于本地处理器上的该高速缓存块有效;由EC的高速缓存代理从该多个从属高速缓存的高速缓存代理接收多个响应;在从该多个从属高速缓存的高速缓存代理接收所述多个响应之后以及在P2P写回请求完成之后,由EC的高速缓存代理发布对第一转发的请求的响应;并且在发布对第一转发的请求的响应之后,由EC的高速缓存代理发布对该多个从属高速缓存的高速缓存代理的多个响应。
[0004]一般而言,在一个方面,本发明涉及用于高速缓存一致性的系统。该系统包括:夕卜部处理器;和本地处理器,包括:多个本地从属高速缓存的多个高速缓存代理;操作地连接该多个本地高速缓存的多个高速缓存代理的第一部分有序请求网络;以及请求方高速缓存(RC)的高速缓存代理,被配置为:在第一部分有序请求网络上将用于第一高速缓存块的对等(P2P)请求广播到该多个本地从属高速缓存的多个高速缓存代理;在?2?请求挂起期间,在部分有序请求网络上接收与第一高速缓存块相关联的转发的请求;在转发的请求被接收之后,基于对P2P请求的响应在RC中设置该高速缓存块的处理器内部状态,其中该处理器内部状态也规定与本地处理器和外部处理器相关联的高速缓存块的处理器间状态;以及在处理器内部状态被设置之后以及在P2P请求完成之后,发布对转发的请求的响应,其中,在P2P请求挂起期间对转发的请求的响应被延迟。
[0005]从以下的描述和所附权利要求,本发明的其他方面将是明显的。

【专利附图】

【附图说明】
[0006]图1示出了根据本发明的一或多个实施例的系统。
[0007]图2A示出了根据本发明的一或多个实施例的高速缓存代理和高速缓存。
[0008]图2B示出了根据本发明的一或多个实施例的网关标签。
[0009]图3A示出了根据本发明的一或多个实施例的的流程图。
[0010]图3B示出了根据本发明的一或多个实施例的表的集合。
[0011]图4A、图4B和图4C示出了根据本发明的一或多个实施例的流程图。
[0012]图5示出了根据本发明的一或多个实施例的表的集合。
[0013]图6A和图6B示出了根据本发明的一或多个实施例的流程图。
[0014]图6C示出了根据本发明的一或多个实施例的的表的集合。
[0015]图7示出了根据本发明的一或多个实施例的计算系统。

【具体实施方式】
[0016]现在将参考附图详细描述本发明的具体实施例。各个附图中类似的元素由类似的附图标记表示以保持一致。
[0017]在以下对本发明的实施例的具体描述中,将会阐述许多具体细节以提供对本发明的彻底理解。然而,对于本领域普通技术人员而言以下将会是明显的,即本发明可以没有这些具体细节而实现。在其他实例中,没有详细描述众所周知的特征以避免不必要地复杂化本说明书。
[0018]一般而言,本发明的实施例提供用于高速缓存一致性的系统和方法。具体地,存在多个处理器且每个处理器具有多个高速缓存。每个处理器还具有连接到其他处理器的网关的网关。使用处理器间一致性协议维持处理器间的高速缓存一致性。在单个处理器上,通过使用具有有序特性的请求网络维持处理器的多个高速缓存间的高速缓存一致性。此有序特性被用于确保请求的转发过程以获得对高速缓存块的存取权限(如,只读、读/写等)。此外,向处理器间一致性协议展示一致的高速缓存视图,处理器间一致性协议不知道在每个处理器上的高速缓存的多样性。
[0019]图1示出了根据本发明的一或多个实施例的系统(100)。如图1中所示,存在多个处理器(如,处理器X(1IX)、处理器Y(101Y))。该多个处理器可以位于同一芯片上或不同芯片上。每个处理器(101XU01Y)包括操作连接到多个高速缓存的多个核。例如,处理器X (101X)包括操作连接到高速缓存A (120A)的核A1(124A)和核A2(126A);操作连接到高速缓存B(120B)的核B1(124B)和核B2(126B);以及操作连接到高速缓存C (120C)的核C1(124C)和核02(1260。类似地,在处理器¥1(101丫)中,核F1(124F)和核F2(126F)被操作连接到高速缓存F(120F);且核E1(124E)和核E2(126E)被操作连接到高速缓存E(120E)。每个处理器(101XU01Y)也包括操作连接到其他处理器(101XU01Y)的网关(152AU52B)的网关(如,网关A(152A)、网关B(152))(之后讨论)。
[0020]仍然参照图1,处理器X(1lX)包括操作连接到一或多个外部(即处理器外)设备的直接存储器存取(DMA)高速缓存(130)和用于与处理器外主存储器通信的一或多个存储器控制器单元(MCU)(如MCU A (144), MCU B(146))。处理器Y(1lY)也可以包括DMA(未示出)和一或多个MCU (未示出)。
[0021]为了成功地执行指令,该处理器核(124A-C、124E、124F、126A-C、126E、126F)和/或外部设备频繁地存取(如从其读取或向其写入)主存储器中的一或多个存储器地址。为了加速这些指令的执行,一些存储器地址的内容可以本地存储在高速缓存(120A-CU20E、120F)中,这些高速缓存具有比主存储器更快的存储时间。如果高速缓存(120A-CU20E、120F)没有存储所需存储器地址的内容,或如果该存储器地址的内容未被存储于在所需状态(之后讨论)中的该高速缓存(120A-C、120E、120F)中,那么发生高速缓存未中。
[0022]在本发明的一或多个实施例中,每个处理器(101XU01Y)包括操作连接到高速缓存(120A-C、120E、120F)的多个高速缓存代理。具体地,处理器X (101X)包括操作连接到高速缓存A(120A)的高速缓存代理(122A);操作连接到高速缓存B(120B)的高速缓存代理(122B);和操作连接到高速缓存C(120C)的高速缓存代理(122C)。类似地,处理器Y(1lY)包括操作连接到高速缓存F(120F)的高速缓存代理(122F);和操作连接到高速缓存E(120E)的高速缓存代理(122E)。高速缓存代理D(122D)被操作连接到DMA高速缓存
(130)。
[0023]在本发明的一或多个实施例中,高速缓存代理(120A_C、120E、120F)被配置为响应高速缓存未中或为了转移对高速缓存块的控制,将各种类型的对等请求广播到相同处理器(101XU01Y)上的其他高速缓存代理(122A-E)并处理对该P2P请求的响应(来自其他高速缓存代理)。类似地,该高速缓存代理(122A-E)也被配置为侦听(即,接收)广播的各种类型的P2P请求并发布对P2P请求的响应。
[0024]在本发明的一或多个实施例中,P2P请求、转发的请求和/或间接请求产生自其上的处理器被称为本地处理器。该本地处理器上的高速缓存和网关被分别称为本地高速缓存和本地网关。在系统(100)中的其他处理器被称为外部处理器。外部处理器上的高速缓存和网关被分别称为外部高速缓存和外部网关。
[0025]在本发明的一或多个实施例中,高速缓存代理(122A-E)被配置为向和高速缓存代理位于相同处理器上的本地网关发布各种类型的间接请求。例如,高速缓存代理(122A-D)向网关A(152A)发布各种类型的间接请求。类似地,高速缓存代理E (122E)和高速缓存代理F(122F)向网关B(152B)发布各种类型的间接请求。该高速缓存代理(122A-E)还被配置为从与高速缓存代理(122A-E)位于相同处理器上的网关(152AU52B)侦听(即,接收)转发的请求。
[0026]仍然参考图1,在处理器X(1lX)上,网关A(152A)、MCU代理(142),以及多个高速缓存代理(122A-D)由请求网络X(180X)操作连接。在处理器Y(1lY)上,网关B(152B)和多个高速缓存代理(122EU22F)由请求网络X(180X)连接。在本发明的一或多个实施例中,请求网络X(180X)和请求网络Y(180Y)是相同的。请求网络Χ(180Χ)和请求网络Υ(180Υ)都可以被用于广播P2P请求和转发的请求。每个请求网络(180Χ、180Υ)具有有序的特性,如果高速缓存代理在见到用于一个高速缓存块地址的分组A之后发送用于相同缓存块地址的分组B,那么在该请求网络上没有高速缓存代理在分组A之前看到分组B。相应的,用于每个请求网络(180Χ、180Υ)的一个可能实现是一或多个单向环。
[0027]在本发明的一或多个实施例中,每个处理器(101Χ、101Υ)包括用于传输对P2P请求的响应和与一些响应相关联的数据(即,高速缓存块)的数据和响应网络(160Χ、160Υ)。在本发明的一或多个实施例中,在数据和响应网络(160Χ、160Υ)中的至少一个网络是用于点到点响应的每轨道单驱动器自由运行管道网络。在本发明的一或多个实施例中,该数据和响应网络(160Χ、160Υ)是相同的。虽然该数据和响应网络(160Χ、160Υ)被逻辑地与请求网络(180Χ、180Υ)隔离,但是响应和数据的传输可以在与请求相同的物理网络上被执行。
[0028]在本发明的一或多个实施例中,每个处理器(101Χ、101Υ)包括用于从高速缓存向网关(152Α、152Β)传输中间请求的网络。这些网络可以与请求网络(180Χ、180Υ)和/或数据和响应网络(160Χ、160Υ)共享资源。
[0029]虽然图1仅示出了两个处理器(即,处理器X (101Χ)、处理器Y (101Υ)),但是该系统(100)可以具有任意数量的处理器。进一步,虽然处理器X(1lX)仅示出了三个高速缓存(即,高速缓存A (120Α)、高速缓存B (120Β)、高速缓存C (120C)),但是每个处理器可以具有任意数量的高速缓存。仍进一步,虽然图1仅示出了操作连接到每个高速缓存的两个核,但是可以有附着到每个高速缓存的任意数量的核。此外,不同高速缓存可以被附着到不同数量的核。
[0030]另外,虽然图1仅示出了每处理器一个网关,但是在本发明的一或多个实施例中,单个处理器具有多个网关。在这样的实施例中,处理器上的多个网关中的每个网关负责高速缓存块的一部分。换言之,与给定高速缓存块相关联的请求仅由处理器上的多个网关中的一个预定网关处理。
[0031]图2Α示出了根据本发明的一或多个实施例的高速缓存代理Μ(222Μ)、高速缓存Μ(220Μ),和多个核(S卩,核Μ1 (224Μ)、核Μ2(226Μ))。高速缓存代理Μ(222Μ)可以对应于以上参照图1讨论的高速缓存代理(122A-C、122E、122F)中的任一个。进一步,高速缓存M(220M)可以对应于以上参照图1讨论的高速缓存(120A-C、120E、120F)中的任一个。仍然进一步,核(224M、226M)可以对应于以上参照图1讨论的核(224A_C、224E、224F、226A_C、226E、224F)中的任一个。
[0032]高速缓存M(220M)存储多个高速缓存块(即,高速缓存块Ml (211)、高速缓存块M2 (212)、高速缓存块M3 (213))。每个高速缓存块(211、212、213)对应于在主存储器中的一或多个存储器地址。进一步,每个高速缓存块(211、212、213)也可以由系统(100)中的另一个高速缓存保持。在本发明的一或多个实施例中,高速缓存代理M(222M)包括请求表(204)以在用于高速缓存块的P2P请求挂起期间(以下讨论)存储用于相同高速缓存块的任何转发的请求(由本地网关发布)。
[0033]如上讨论,该系统(100)包括多个处理器。同样如上讨论,使用处理器间一致性协议(例如,通过使用MOESI状态)维持处理器间的高速缓存一致性。图2A中的表2.1示出了用于每个MOESI状态的可能的处理器间状态。
[0034]对于在处理器内的每个单独的高速缓存(例如高速缓存M(220M)),使用额外的状态(即,处理器内部状态)表示该高速缓存是否是处理器内保持该高速缓存块的唯一高速缓存。高速缓存M(220M)记录用于每个高速缓存块的处理器内部状态(254)。这是处理器间状态M和E要求的,因为在修改高速缓存块的内容之前,高速缓存块必须在处理器内部以及处理器间排他地被保持。在本发明的一或多个实施例中,在写回处理中处理器间状态O和S也同样需要相应的额外状态。
[0035]图2A中的表2.2示出了定义处理器的处理器间高速缓存状态的处理器内部高速缓存状态。这些状态作为“供应方”状态被已知。对于每个存储器间状态存在两个存储器内部状态以辨别在处理器内是否排他地保持该高速缓存块。例如,如表2.2中所示,处理器内部状态Mc和Dc被用于处理器间状态M以辨别在处理器内是否排他地保持该高速缓存块。高速缓存也可以保持高速缓存块在S。状态中,在这种情况下,或者该高速缓存块被保持在另一个高速缓存的非排他的供应方状态,或者该高速缓存在从将该块保持在非排他的供应方状态的高速缓存到另一高速缓存的传输中。虽然图2A中未示出,但是处理器内部状态I。指示该高速缓存没有保持该高速缓存块。
[0036]在处理器内,只有一个高速缓存(供应方高速缓存)保持该高速缓存块在指示处理器间状态的状态;如果在处理器内该状态非排他(即,在状态Dc,Oc, Xc或Qc),那么在相同处理器上的其他高速缓存可以保持该块在状态S。,该状态不传递处理器间状态信息(除非其不是I)。
[0037]网关标签
[0038]在本发明的一或多个实施例中,该网关可以使用网关标签为高速缓存块维持处理器间状态的自我复制。图2B中的表2.3示出了对应于不同处理器间状态的不同网关标签状态。该网关标签状态可以或可以不记录处理器间排他性。如上所讨论,在本发明的一或多个实施例中,单个处理器具有多个网关。在这样的实施例中,只有对应于该高速缓存块的网关为该闻速缓存块保持网关标签。
[0039]对等(P2P)请求
[0040]在本发明的一或多个实施例中,在处理器上的高速缓存可以通过P2P协议在高速缓存之间传输高速缓存块(211、212、213),该P2P协议维持高速缓存间一致性但是不可以改变处理器的合计(aggregate)存取权限,也不可以确保转发过程。在本发明的一或多个实施例中,为了改变合计存取权限或确保转发过程,高速缓存通过本地网关(即,与高速缓存位于相同处理器上的网关)做出请求。该本地网关做出任何必须的处理器间请求并将它们广播到处理器上的其他高速缓存(以下讨论)。
[0041]图3A示出了根据本发明的一或多个实施例的流程图。在图3A中的流程图描述了用于高速缓存块的P2P请求与该P2P请求和来自网关的转发的请求之间的交互。在图3A中示出的过程可以由例如以上参照图1讨论的在系统(100)中的一或多个组件执行。在本发明不同的实施例中,图3A中示出的一或多个步骤可以被省略、重复和/或以不同次序执行。相应地,本发明的实施例不应该被认为限于在图3A中所示的步骤的特定的数目和排列。
[0042]对等分配事务试图通过从相同处理器上的另一个高速缓存获得对高速缓存块的存取权限以获得对高速缓存块的存取权限。因此对等请求可能由于其他高速缓存可能不拥有具有所希望的存取权限的高速缓存块而失败。同样地,由于该协议热切地广播,不带有用于相同高速缓存块的请求的编序点,所以即使如果其他高速缓存具有所希望的读取权限,在由不同高速缓存同时发布的请求之间的冲突可能弓I起请求失败。
[0043]最初,该请求方高速缓存的高速缓存代理将用于高速缓存块的P2P请求广播到处理器上的其他高速缓存(即,从属高速缓存)(步骤302)。该P2P请求在处理器的部分有序请求网络被广播。该P2P请求也可以由处理器上的本地网关接收。图3B中的表3.1示出了 P2P请求的两种可能类型。
[0044]在步骤304中,请求方高速缓存的高速缓存代理接收用于高速缓存块的转发的请求。该转发的请求来自处理器上的本地网关。此外,该转发的请求在用于高速缓存块的P2P请求仍然被挂起的期间被接收。该高速缓存代理可以为之后的处理存储该转发的请求(即,该高速缓存代理延迟对转发的请求的响应)。由于转发的请求是由网关生成的,所以高速缓存代理在转发的请求被接收时对其没有控制。转发的请求可以在来自从属高速缓存的任何响应之前被接收,或在某些响应已经被接收之后被接收。
[0045]在步骤306中,该从属高速缓存的高速缓存代理发布对P2P请求的响应。具体地,每个从属高速缓存的高速缓存代理发布对P2P请求的单独的响应。该单独的响应可以基于P2P请求的类型和/或在其中从属高速缓存保持高速缓存块的处理器内部状态。此外,跟随着高速缓存的/高速缓存代理的响应,用于从属高速缓存中的高速缓存块的处理器内部状态可以基于P2P请求的类型被更新。图3B中的表3.3示出了由从属高速缓存的高速缓存代理对P2P请求的响应。图3B中的表3.3也示出了在从属高速缓存中的高速缓存块跟随响应的新状态。例如,如果P2P请求是pRTS且该从属高速缓存保持该高速缓存块在X。,从属高速缓存的高速缓存代理用DataE响应且从属高速缓存中的高速缓存块的处理器内部状态被设置为S。。图3B中的表3.2描述了各种类型的响应。
[0046]在本发明的一或多个实施例中,当从属从另一高速缓存接收到对于高速缓存块的请求时,如果该从属具有用于相同高速缓存块的挂起请求,那么该从属用否定应答(Nack)响应且不经历状态改变。从属也可以为其他原因用Nack应答,例如资源冲突或在确定挂起请求的存在时的不严密。任何携带数据的响应(如DataM、DataO、DataE、DataS)携带由该从属高速缓存保持的高速缓存块的内容。
[0047]响应P2P请求不需要从属高速缓存的高速缓存代理计分且是无条件地做出的,不等待该从属高速缓存的高速缓存代理可能已经发布的任何请求的服务。
[0048]在步骤308中,一旦请求高速缓存的高速缓存代理从从属高速缓存接收对P2P请求的所有响应,就确定是否接收到携带数据的响应。当确定接收到携带数据的响应时,过程继续进行到步骤310。当确定没有接收到携带数据的响应时(如,该P2P请求是pRTO且该请求方高速缓存已经保持该高速缓存块在供应方状态),过程继续到步骤312。
[0049]在步骤310中,该高速缓存数据被安装在请求方高速缓存中且用于高速缓存块的初始处理器内部状态被设置。这个新状态基于从从属高速缓存接收到的携带数据的响应的类型,或在请求方处于供应方状态的情况下,这个新状态基于该请求方的原始状态(如,该请求方高速缓存已经保持该高速缓存块在处理器内部状态X。并发布PRTP以获得状态E。)。图3B中的表3.4示出基于从从属高速缓存接收到的携带数据的响应的类型的用于高速缓存块的新状态。例如,如图3B中所示,如果携带数据的响应是DataE,那么新状态是Xc。
[0050]在步骤312中,如果P2P请求是pRTO且没有接收到Nack响应,那么过程继续到步骤313。然而,如果P2P请求是pRTS,或者如果P2P请求是pRTO且接收到Nack响应,那么过程继续到步骤316。
[0051]在步骤313中,确定P2P请求是否是pRTO且在P2P请求(即pRTO)被挂起期间该请求方高速缓存是否接收到pRTS。当步骤313的条件是真,步骤314被跳过以避免违反排他性性质(之后讨论),且P2P请求(即,pRTO)被认为失败。之后过程继续到步骤316。然而,当步骤313的条件是假时,过程继续到步骤314。
[0052]在步骤314中,执行在请求方高速缓存中的高速缓存块的处理器内部状态的辅助更新。高速缓存块的新的处理器内部状态基于该高速缓存块的当前(即,步骤310)处理器内部状态。图3B中的3.5示出了在辅助更新之后,基于当前处理器内部状态的用于高速缓存块的新状态。步骤310和步骤314中的更新可以被合并为一个更新,对于受益于本详细说明书的本领域技术人员而言这一点应该是清楚的。
[0053]在步骤316中,P2P请求没有挂起(即,该P2P请求完成或被认为失败)且请求方高速缓存的高速缓存代理响应转发的请求。
[0054]考虑到图3A所示的过程和图3B中的表,当一个高速缓存从相同处理器中的另一个高速缓存提取高速缓存块时:(I)该数据和处理器间状态在响应中被从供应高速缓存传输到目的地高速缓存;(2)该源高速缓存失去其供应方状态;且(3)目的地高速缓存变成供应方。因此,在所有时候,该处理器间状态被存储在供应方高速缓存中或在从一个高速缓存到另一个高速缓存的响应中。由P2P自己的P2P业务不改变处理器间状态。
[0055]被保持在状态M。、Rc, E。、或P。的高速缓存块意味着该高速缓存块未被处理器上的其他高速缓存保持。P2P请求按如下方式维持这一性质:(I)可以将高速缓存块放置在处理器内部排他状态的唯一 P2P请求是成功的pRTO ; (2)成功的pRTO使其他高速缓存无效;
(3)从属作出的任何为了重新获得高速缓存块的请求按照请求网络排序性质被排序在所有高速缓存中的PRTO之后,以使得请求不可以影响pRTO的结果;⑷如果pRTO成功,由处理器上的其他高速缓存对高速缓存块的存取权限的重新获得必须通过PRTO请求方,该请求方在完成PRTO之后服务该请求时失去它的排他状态;(5)所以当pRTO请求方保持该块在状态M。、Rc, E。、或P。时,在处理器中没有其他高速缓存保持该高速缓存块。
[0056]本地和外部转发的请求
[0057]图4示出了根据本发明的一或多个实施例的流程图。图4A中的流程图描述了用于高速缓存块的本地转发的请求。在图4A中示出的过程可以由例如如上参照图1讨论的系统(100)中的一或多个部件执行。在本发明不同的实施例中,图4A中示出的一或多个步骤可以被省略、重复和/或以不同次序执行。相应地,本发明的实施例不应该被认为限于在图4A中所示的步骤的特定的数目和排列。
[0058]最初,该本地网关从请求方高速缓存的高速缓存代理接收对高速缓存块的请求(步骤402)。在本发明的一或多个实施例中,该请求是P2P请求且因此该请求在部分有序请求网络中由处理器上的从属高速缓存的高速缓存代理和网关接收。在本发明的一或多个实施例中,该请求是由请求方高速缓存的高速缓存代理直接向本地网关发布的间接请求。因为上一个用于高速缓存块的P2P请求由于冲突而失败或因为处理器缺少请求方高速缓存所需的对高速缓存块足够的读取权限,所以该间接请求可以由请求方高速缓存发布。示例性的间接请求包括mRTS(即,用于对高速缓存块读取存取的请求)和mRTO(即,用于对高速缓存块读取/写入存取的请求)。
[0059]一旦接收对高速缓存块的请求,该本地网关试图确定本地处理器是否保持高速缓存块在合适的状态(步骤406)。当本地网关确定该本地处理器保持该高速缓存块在合适的状态时,过程继续到步骤414。然而,当该网关确定该本地处理器没有保持高速缓存块在合适的状态或者当网关不能确定该本地处理器是否保持该高速缓存块在合适的状态(步骤406)时,过程继续到步骤407。
[0060]如上所讨论的,在本发明的一或多个实施例中,本地网关为高速缓存块维持网关标签。该网关标签指示在本地处理器中的高速缓存块的处理器间状态。相应地,该网关可能能够通过访问用于高速缓存块的网关标签确定本地处理器是否保持该高速缓存块在合适的状态。然而,在缺少网关标签的情况或在用于该闻速缓存块的已有网关标签上缺少相关联的ESI状态的情况中,该本地网关可能不能够确定该本地处理器是否保持该高速缓存块在合适的状态。在缺少ESI状态的情况下,该本地网关可以分辨该本地处理器是否保持该块在对于PRTS合适的状态,如果网关标签指示该高速缓存块未被保持,那么该本地网关仅可以分辨该本地处理器没有保持该块在对于PRTO合适的状态。
[0061]在步骤407中,处理器间请求(如,用于mRTO或pRTO的RT0,用于mRTS或pRTS的RTS)被发布。该处理器间请求可以由于以下原因被发布:(i)本地网关没有为高速缓存块保持网关标签,因此本地网关不能够确定该本地处理器是否保持该高速缓存块在合适的状态;或(ii)该本地网关为高速缓存块保持网关标签,且该网关标签指示该本地处理器没有保持高速缓存块在合适的状态和/或该网关标签缺少相关联的ESI状态。假设具有精确目录的处理间协议准备就绪以使得保持每个高速缓存块的处理器的集合被精确已知,那么如果该处理器已经保持该高速缓存块,该处理器间请求将返回确认。
[0062]在步骤408中,在处理器间请求被发布之后,本地网关从存储器或者从在外部处理器上的外部从属高速缓存接收合适的处理器间状态。如果该处理器尚未保持数据,那么高速缓存块数据也可以被接收。
[0063]对于RTS,该本地网关可以将DataS提供给请求方高速缓存的高速缓存代理(步骤410)。数据返回可以包括该处理器是否成为该高速缓存块的排他保持方、允许本地网关提供DataE的指示。协议可能需要处理器接受修改的备份。对于RT0,类似的互动是可能的,但是在这种情况下,数据总是指示排他的备份并可以指示该处理器需要使其备份被修改。相应地,由本地网关向请求方高速缓存提供的任何数据可以是DataE或者DataM(步骤410)。
[0064]在步骤414,该本地网关在部分有序请求网络上将本地转发的请求广播到本地处理器上的从属高速缓存。例如当该请求是间接请求且从网关标签确定该处理器保持高速缓存块在所需的处理器内部状态时,步骤414被执行。例如当处理器间请求返回确认时,步骤414被执行。图5中的表5.1示出了两个可能的本地转发的请求。在RTS的情况下,fRTS被广播。在RTO的情况下,fRTO被广播。
[0065]在步骤416中,从属高速缓存的高速缓存代理在部分有序请求网络上接收用于高速缓存块的本地转发的请求。从属高速缓存的高速缓存代理可以直接响应请求方高速缓存的闻速缓存代理。每个响应基于从属闻速缓存中的闻速缓存块的目如的处理器内部状态。此外,基于本地转发的请求的类型和目前的处理器内部状态更新从属高速缓存中的高速缓存块的处理器内部状态。图5中的表5.2示出了由从属高速缓存的高速缓存代理对本地转发的请求的响应和随后对处理器内部状态的更新。例如,如果本地转发的请求是fRTS且从属高速缓存中的高速缓存块的目前的处理器内部是%,从属高速缓存的高速缓存代理用DataS响应,且从属高速缓存中的高速缓存块的新的处理器内部状态被设置为Sc。
[0066]在步骤412中,如果数据被接收,那么请求方高速缓存的高速缓存代理在请求方高速缓存中安装高速缓存块数据并更新在请求方高速缓存中的高速缓存块的处理器内部状态。
[0067]如上所讨论的,确认可以由本地网关响应RTO而接收,在这种情况下,该确认始终指示排他备份且可以指示该处理器需要使其备份被修改。在广播fRTO之外,本地网关也转发AckE或AckM以指示修改的状态。如果该高速缓存块由本地处理器保持在状态0,该请求高速缓存将来自网关的AckE中携带的排他性与由来自fRTO的DataO提供的修改的状态结合以安装该高速缓存块在状态M。
[0068]在本发明的一或多个实施例中,关于步骤402,该网关可以被包括于P2P请求在部分有序请求网络的广播中,而不是在P2P请求失败之后高速缓存发送明确的间接请求。之后可以通过从请求高速缓存发送的或通过也接收对高速缓存的响应并独立确定成功或失败的网关,通知对等请求的成功或失败。一旦检测到失败,该网关表现为好像它已经接收到明确的间接请求。
[0069]在本发明的一或多个实施例中,网关一次只发布每高速缓存块一个转发的请求,在发布用于相同高速缓存的另一个请求之前,等待所有的响应被接收。在本发明的一或多个实施例中,当高速缓存的高速缓存代理可以存储每高速缓存块多于一个转发的请求且部分有序请求网络在网关和每个高速缓存代理之间维持转发的请求的排序时,该网关可以在第一个转发的请求完成之前发布用于相同高速缓存块的多个转发的请求。
[0070]图4B示出了根据本发明的一或多个实施例的流程图。图4B中的流程图描述了用于高速缓存块的外部转发的请求。在图4B中示出的过程可以由例如以上参照图1讨论的在系统(100)中的一或多个组件执行。在本发明不同的实施例中,图4B中示出的一或多个步骤可以被省略、重复和/或以不同次序执行。相应地,本发明的实施例不应该被认为限于在图4B中所示的步骤的特定的数目和排序。
[0071]最初,本地网关从外部处理器上的外部网关接收用于高速缓存块的处理器间请求(步骤422)。该处理器间请求由外部网关发布,因为外部处理器不具有在外部处理器上的DMA或请求方高速缓存所需要的所需处理器内部状态的高速缓存块。示例的处理器间请求包括RTS、RT0、高速缓存块无效请求,以及高速缓存块的一次读取快照。
[0072]在步骤424中,本地网关在部分有序请求网络将用于高速缓存块的外部转发的请求广播到本地处理器上的所有高速缓存。外部转发的请求的类型依赖于由本地网关接收的处理器间请求的类型。图5中的表5.3示出了用于各种处理器间请求的各种外部转发的请求。例如,用于高速缓存块的fCPI可以由本地网关广播以服务用于高速缓存块的处理器内间请求RTO。
[0073]在步骤426中,每个本地高速缓存的高速缓存代理发布对外部转发的请求的响应且/或更新本地高速缓存中的高速缓存块的处理器内部状态。该响应和新的处理器内部状态基于外部转发的请求的类型和/或高速缓存中的高速缓存块的目前处理器内部状态。图5中的表5.4示出了高速缓存响应外部转发的请求的各种响应。例如,如图5.4中所示,如果本地高速缓存中的高速缓存块的目前处理器内部状态是R。,且外部转发的请求是类型?PB,那么由本地高速缓存的高速缓存代理发布的响应是DataO。表5.5示出了基于外部转发的请求的类型和高速缓存块的目前处理器内部状态的本地高速缓存的高速缓存块的新的处理器内部状态。例如,如表5.5所示,如果外部转发的请求是类型fCPB,且高速缓存块的目前的处理器内部状态是Ec,那么高速缓存块的新的处理器内部状态被设置为Sc。
[0074]在步骤428中,一旦本地网关从本地高速缓存接收响应,那么本地网关发布对处理器间请求的响应。在本发明的一或多个实施例中,当本地网关存储用于高速缓存块的网关标签时,该网关标签被更新以反映本地处理器上高速缓存块新的处理器间状态。
[0075]如表5.5中所示,不像其他外部转发的请求,fCPB和f(PD使得任意高速缓存块-供应从属高速缓存处于供应方状态。这允许在另一个高速缓存服务《PB或《PD之前将高速缓存块传输到该高速缓存。该另一个高速缓存之后也提供该高速缓存块。在fCPB的情况下,第一供应方失去对高速换存块的任意写入存取。所以所有备份的数据都应该匹配。对于fCPD,情况不是这样,在该情况下介入存储可以改变高速缓存的值。该网关应该只选择一个携带数据的响应并丢弃其他。
[0076]如上讨论的,本地网关可以使用网关标签以确定在P2P请求失败时不需要处理器间请求并立即继续以发布相应的转发的请求。然而,该失败必须是由于冲突产生的,预计冲突的情况相对罕见。虚假预测P2P请求的失败可以导致在缺少向其传递高速缓存块的挂起的请求情况下对高速缓存块的传送。
[0077]例如,如果该网关标签过早地被外部请求无效或降级,那么可能发生这样的虚假失败预测以使得对等请求赢得到供应方高速缓存的竞赛并因此成功,但是等到网关看到该对等请求时,该网关标签已经被无效或降级,从而触发提早的处理器间请求。
[0078]图4C示出了根据本发明的一或多个实施例的流程图。图4C中的流程图描述用于由本地网关做出的虚假P2P失败预测的解决办法。在图4C中示出的过程可以由例如以上参照图1讨论的在系统(100)中的一或多个组件执行。在本发明不同的实施例中,图4C中示出的一或多个步骤可以被省略、重复和/或以不同次序执行。相应地,本发明的实施例不应该被认为限于在图4C中所示的步骤的特定的数目和排列。
[0079]最初,请求方高速缓存的高速缓存代理在部分有序请求网络上广播用于高速缓存块的P2P请求(如,pRTS)(步骤450)。该部分有序请求网络具有有序特性,即如果请求方在用于相同高速缓存块的另一个请求B之前看到自己的请求A,那么没有代理会在请求A之前看到请求B。具有这一有序特性的一个可能网络是单向环。
[0080]在步骤452中,本地网关在部分有序请求网络(如,单向环)上广播用于高速缓存块的外部转发的无效请求(flNV),不无效用于高速缓存块的网关标签。该fINV是响应由本地网关接收的用于高速缓存块的处理器间无效请求。
[0081]在步骤454中,在外部转发的无效请求返回之前,本地网关在部分有序请求网络上接收P2P请求(如,pRTS)。一旦接收pRTS,本地网关认为pRTS将会成功,因为用于高速缓存块的网关标签仍然有效。
[0082]在步骤456中,只有在fINV已经做出部分有序请求网络(如,单向环)的完全传输并返回到本地网关之后,本地网关才无效用于高速缓存块的网关标签。由于直到网关在部分有序请求网络上看到自己的转发的请求(如,fINV)时用于外部请求的网关标签的更新才被执行,所以可以避免虚假的失败预测。
[0083]在本发明的一或多个实施例中,用于高速缓存块的本地或外部转发的请求通常成功。假设用于高速缓存块的处理器间状态不是I,那么在所有时间高速缓存保持高速缓存块在供应方状态或高速缓存块通过携带状态的响应被传输中。此外,关于高速缓存块通过对等请求在高速缓存之间被转发,假设因为在转发的请求到达高速缓存的时间上的运气不佳,没有高速缓存供应高速缓存块。这意味着在请求被发送前的某个时刻,某个高速缓存是高速缓存块的供应方并且因为该请求获得高速缓存块失败,所以在请求已经结束之后的某个时刻,某个高速缓存是供应方。
[0084]考虑在处理器高速缓存中高速缓存块在处理器获得高速缓存块(通过网关,必须在转发的请求之前)和交出高速缓存块(通过网关,必须在转发的请求之后)之间的整个历史。该历史被作为代表该高速缓存何时是该高速缓存块的供应方的高速缓存_[时间]间隔的(有序)列表被展示。该列表的元素可以被如下分类:(A)在该时间间隔之后高速缓存为其服务转发的请求的那些元素;和(B)在该时间间隔之前高速缓存为其服务转发的请求的那些元素。
[0085]受益于本详细说明书的本领域技术人员可以认为该处理器永远不会交出该高速缓存块,在这种情况下,该列表可以无限长,或该列表的最后一个元素是半间隔而不是间隔。在前一种情况下,从在间隔完全位于转发的请求的完成之后的点截断列表。后一种情况支持以下论断。
[0086]第一元素必须在类型A ;最后的元素必须在类型B。必须有对应于在列表中分别在类型A和类型B中的元素X和y的至少两个高速缓存X和Y,以使得X和y相邻(X直接将高速缓存块供应给Y)。所以在交出高速缓存块之后X服务转发的请求且在接收高速缓存块之前Y服务转发的请求。
[0087]然而,为了让Y在接收高速缓存块之前服务该请求,Y必须在见到转发的请求之后发送它的对于高速缓存的对等请求,否则对转发的请求的服务将会被延迟直到其请求已经结束。由于它的请求是在接收转发的请求之后发送的,X必须在见到转发的请求之后也见到Y的请求(按照请求网络的有序特性),所以X必须在将高速缓存块交出给Y之前看到转发的请求,X不能在类型A。所以运气不佳的假设是矛盾的,因此不能被保持。
[0088]间接请求
[0089]高速缓存向网关发送分配的间接请求以获得对高速缓存块的存取权限。不像P2P请求,间接请求被确保会成功。由网关执行的细节动作强烈依赖于处理器间一致性协议。
[0090]如以上参考图4A讨论的,间接请求的实例包括:⑴用于对高速缓存块的读取存取的间接请求(mRTS) ;(2)用于对高速缓存块的读-写存取的间接请求(mRTO);和(3)间接写回(之后讨论)。
[0091]同样如上所讨论,P2P协议确保指示该高速缓存是在处理器内高速缓存块的唯一保持者的高速缓存状态确实确保在处理器上没有其他高速缓存保持该高速缓存块。对于该论断极其重要的是一旦高速缓存已经被PRTO无效,它只有通过发布对等请求重新获得该高速缓存块,并且根据请求网络有序特性,该对等请求被排在所有高速缓存的pRTO之后。
[0092]间接请求为不发布P2P请求获得高速缓存块提供“后门”。对协议没有限制或修改的间接请求可以破坏处理器内部排他特性。
[0093]考虑以下涉及三个高速缓存的情形:同时向相同高速缓存块发布请求的高速缓存A、高速缓存B和高速缓存C。最初没有高速缓存保持高速缓存块。高速缓存A正在执行PRTO0高速缓存B正在执行pRTS。高速缓存C正在执行mRTO (mRTS不会产生差别)。
[0094]以下事件序列相继发生:
[0095]1.高速缓存B发送pRTS。
[0096]2.高速缓存A发送pRTO。
[0097]3.高速缓存C用Ack响应pRTO。
[0098]4.高速缓存C发送mRTO。
[0099]5.网关处理mRTO,向高速缓存C发送DataE。
[0100]6.高速缓存C接收DataE并在状态E。安装DataE。
[0101]7.高速缓存C用DataE响应pRTS,将其状态降级为Sc。
[0102]8.高速缓存A用Nack响应pRTS。
[0103]9.高速缓存B接收响应,在状态X。安装高速缓存块。
[0104]10.高速缓存B用DataE响应pRTO,将它的状态降级为Ic。
[0105]11.高速缓存A接收响应,在状态E。安装高速缓存块。
[0106]现在存在在状态Ec中的高速缓存,还有在状态Sc的另一个高速缓存,违反排他特性。
[0107]一个可能的解决方法是不允许间接请求从处理器内部状态I。被发送,除非P2P请求被首先发送且任意其他P2P请求(由/来自另一个高速缓存代理)被否定应答直到该间接请求完成。另一个解决方法更加巧妙。注意到高速缓存B&WpRTS ;pRT0不具有这一效果,因为它可以无效高速缓存C。虽然可以存在请求链以产生类似的反例(涉及更多高速缓存),该链中的一个请求必须是PRTS以在使供应方在状态S。期间传输高速缓存块。
[0108]在“供应链”中pRTO晚于pRTS,所以pRTS必须在pRTO完成之前接收所有它的响应。同样必须在pRTO已经被发送之后在pRTO的请求方处服务pRTS ;如果pRTS在pRTO被发送前被服务,那么在所有高速缓存处pRTS可以在pRTO之前被看到(根据网络有序特性)。在高速缓存已经对PRTO响应之后,pRTS不能够使高速缓存在状态S。(为了让此发生,pRTO必须在pRTS之前被看到)。
[0109]因此确定在pRTO挂起期间pRTO请求方服务pRTS。如果我们让该服务也取消图3B中表3.5规定的最终更新(即,步骤314被跳过),那么pRTO失败(在示例进入状态Xc而不是状态E。)且排他特性未被违反。
[0110]牺牲和写回
[0111]当高速缓存条目被要求存储高速缓存块且没有合适的空闲条目时,条目的内容需要被驱逐。该驱逐被指代为“牺牲”。如果被驱逐的高速缓存块的数据被转移到别处,那么该牺牲是写回。从协议定义的角度,牺牲的原因被忽略。
[0112]图6A示出了根据本发明的一或多个实施例的流程图。图6A中所示的过程对应于牺牲和可能的写回。图6A中所示的过程也示出了在驱逐过程和对于高速缓存块的转发的请求之间的互动。图6A中所示的过程可以由例如以上参照图1讨论的在系统(100)中的一或多个组件执行。在本发明不同的实施例中,图6A中示出的一或多个步骤可以被省略、重复和/或以不同次序执行。相应地,本发明的实施例不应该被认为限于在图6A中所示的步骤的特定的数目和排列。
[0113]最初,用于驱逐高速缓存的高速缓存代理在部分有序请求网络上将用于高速缓存块的P2P写回请求(pWB)广播到本地处理器上的从属高速缓存(步骤602)。如上讨论的,步骤602的触发器可以是在驱逐高速缓存中缺少合适的空闲条目。此外,驱逐高速缓存之前可以是请求高速缓存且该驱逐是必要的以存储最近获得的高速缓存块。如果高速缓存保持高速缓存块在状态S。,它可以无声地将状态降级到I。。这有效地释放条目,且不再需要执行图6A中所示的过程。然而,如果驱逐高速缓存保持高速缓存块在供应方状态,那么无声牺牲是不允许的。
[0114]在步骤603中,驱逐高速缓存的高速缓存代理接收用于高速缓存块的转发的请求。该转发的请求来自处理器上的本地网关(当转发的请求被接收时,高速缓存代理对转发的请求没有控制)。此外,在用于高速缓存块的PWB仍然挂起期间接收转发的请求。驱逐高速缓存的高速缓存代理可以为之后的处理存储转发的请求(即,高速缓存代理延迟响应转发的请求)。
[0115]在步骤604中,本地处理器上的从属高速缓存的每个高速缓存代理发布对pWB请求的响应并/或更新从属高速缓存中的高速缓存块的处理器内部状态。对PWB的响应基于从属高速缓存中的高速缓存块的目前处理器内部状态。图6C中的表6.1示出了从属高速缓存的高速缓存代理对PWB的可能响应。例如,如图6.1中所示,如果从属高速缓存保持高速缓存块在处理器内部状态Sc,那么从属高速缓存的高速缓存代理可以响应pWB发布应答写回(AckWB)。AckWB和PullWB在部分有序请求网络上传播。从属高速缓存中的高速缓存块的新的处理器内部状态被设置为Sc。
[0116]在步骤605中,一旦从从属高速缓存接收所有的响应,驱逐高速缓存就响应转发的请求(以上参考图4A和图4B讨论的)。受益于本详细说明书的本领域技术人员将认识到步骤605被依附于步骤603,并且因此步骤605可选。
[0117]在步骤606中,确定高速缓存块的驱逐是否仍然必要。具体地,转发的请求可能已经改变将被驱逐到S。或I。的高速缓存块的处理器内部状态。如上讨论的,如果高速缓存保持高速缓存块在状态S。,它可以无声地将状态降级到I。。当确定驱逐不在必要时,过程继续到步骤618。然而,当确定从驱逐高速缓存驱逐高速缓存块仍然必要时,过程继续到步骤608。
[0118]在步骤608中,确定在部分有序请求网络上是否从从属高速缓存的高速缓存代理接收到对PWB的至少一个AckWB。当确定至少一个AckWB被接收时,过程继续到步骤610。当确定没有接收到AckWB响应时,过程继续到步骤612。
[0119]在步骤612中,确定在部分有序请求网络上是否从从属高速缓存的高速缓存代理接收到对PWB的至少一个PullWB响应。当确定至少一个PullWB被接收时,过程继续到步骤614。当确定没有接收到PullWB时,过程继续到步骤620。
[0120]如果pWB从处理器上的每个从属高速缓存接收Nack,那么pWB失败。为了确保转发过程驱逐高速缓存可以向网关发布间接写回(mWB)(步骤620)。至于间接分配请求,其可以由被告知PWB的失败的网关暗示地完成。不像分配间接请求,间接写回可以仅从状态M。、R。、E。、或P。被发布(即,当驱逐高速缓存处在供应方状态中且在处理器中没有其他高速缓存保持该高速缓存块)。
[0121]在其他供应方状态支持间接写回将需要其他高速缓存中高速缓存块的无效(更大的复杂度)或将需要网关广播转发的写回。网关执行处理器间协议所需的任何东西,t匕如如果高速缓存块被修改,向存储器写回高速缓存块(处理器间状态M或O)。
[0122]在步骤614中,如果在部分有序请求网络上接收到多于一个PullWB响应,驱逐高速缓存的高速缓存代理选择发布PullWB的从属高速缓存、向选择的从属高速缓存发送响应,和将驱逐高速缓存中的高速缓存块降级到处理器内部状态I。。发送到选择的从属高速缓存的响应依赖于降级前驱逐高速缓存中的高速缓存块的处理器内部状态。图6C中的表
6.2示出了为不同处理器内部状态发送到选择的从属高速缓存的响应。例如,如果驱逐高速缓存保持高速缓存块在D。,那么驱逐高速缓存的高速缓存代理向选择的从属高速缓存发送DataM。
[0123]在步骤610中,如果在部分有序请求网络上接收多于一个的AckWB响应,驱逐高速缓存的高速缓存代理选择发布AckWB的从属高速缓存、向选择的从属高速缓存发送响应,和将驱逐高速缓存中的高速缓存块降级到处理器内部状态I。。发送到选择的从属高速缓存的响应依赖于降级前驱逐高速缓存中的高速缓存块的处理器内部状态。图6C中的表6.2示出了为不同处理器内部状态发送到选择的从属高速缓存的响应。例如,如果驱逐高速缓存保持高速缓存块在0。,那么驱逐高速缓存的高速缓存代理向选择的从属高速缓存发送AckO0
[0124]在步骤618中,向所有未被选择的从属高速缓存的高速缓存代理发送Nack。
[0125]基于图6A,驱逐高速缓存的高速缓存代理仅为响应的接收等待并随后响应收到的转发的请求并在对转发的请求之后接收的任何AckWB或PullWB响应之前作出任何所需的状态改变。在PWB挂起期间延迟对转发的请求的响应的原因是确保在处理器上每高速缓存块只有一个PWB活跃。如果已经用AckWB回答第一个pWB的高速缓存不具有用于为第二个PffB作出相同回答的资源,那么具有用于相同的高速缓存块的多个活跃的pWB会引起问题。需要无效其高速缓存块以使用Nack响应,但是禁止无效它的具有未完成AckWB的高速缓存块。可以通过其他方法围绕这个问题展开工作,但是似乎使罕见的极端情况变缓比使协议变得复杂更好。
[0126]图6B示出了根据本发明的一或多个实施例的流程图。图6B中示出的过程描述了在牺牲和可能的写回期间从属高速缓存采取的行动。图6B中示出的过程也描述了在用于高速缓存块的转发的请求和驱逐过程之间的互动。在图6B中示出的过程可以由例如以上参照图1讨论的在系统(100)中的一或多个组件执行。在本发明不同的实施例中,图6B中示出的一或多个步骤可以被省略、重复和/或以不同次序执行。相应地,本发明的实施例不应该被认为限于在图6B中所示的步骤的特定的数目和排列。
[0127]最初,由从属高速缓存的高速缓存代理在部分有序请求网络上接收用于高速缓存块的P2P写回请求(pWB)。如上讨论的,当驱逐高速缓存缺少合适的空闲条目时,pWB被发布。
[0128]在步骤634中,从属高速缓存的高速缓存代理在部分有序请求网络上依赖于从属高速缓存中高速缓存块的处理器内部状态使用Nack、AckffB或PullWB响应pWB。此外,在从属高速缓存中的高速缓存块的处理器内部状态响应于PWB被更新。图6C中的表6.1示出了从属高速缓存对PWB的各种响应和分派到高速缓存块的新的处理器内部状态。例如,如表6.1中所示,如果当pWB被接收时,从属高速缓存中的高速缓存块目前的处理器内部状态是Ic,那么从属高速缓存的高速缓存代理可以在部分有序请求网络上利用PullWB响应。从属高速缓存中的高速缓存块的新状态仍然是I。。
[0129]在步骤636中,在从属高速缓存已经在部分有序请求网络上响应pWB之后,从属高速缓存接收本地或外部的转发的请求。转发的请求来自处理器上的本地网关(因为转发的请求是由本地网关发布的,所以从属高速缓存的高速缓存代理对转发的请求何时到达没有控制)。此外,在用于高速缓存块的AckWB或PullWB仍然挂起期间,转发的请求被接收。从属高速缓存的高速缓存代理可以为之后的处理存储转发的请求(即,在用于高速缓存块的AckffB或PullWB仍然挂起期间,高速缓存代理延迟响应对于高速缓存块的转发的请求)。
[0130]在步骤638中,由从属高速缓存从驱逐高速缓存接收对AckWB或PullWB的响应。如图6C中表6.2所不的,该响应基于在驱逐闻速缓存中的闻速缓存块的处理器内部状态。例如,从属高速缓存可以分别响应AckWB和PullWB从驱逐高速缓存接收AckM或DataE。
[0131]在步骤640中,在数据响应(如,DataM、DataO、DataE、DataS)的情况下,高速缓存块被安装在从属高速缓存中。此外,对于数据响应和确认(如,AckM、AckO、ACkE、ACkS),从属高速缓存中的高速缓存块的处理器内部状态根据图6C中的表6.3被更新。
[0132]在步骤642中,由于AckWB或PullWB不再为从属高速缓存挂起(B卩,AckWB或PullffB完成),从属高速缓存响应转发的请求。
[0133]考虑到图3A、图6A和图6B,任何具有用于相同高速缓存块的活跃的P2P分配请求的高速缓存使用Nack响应pWB(做出任何由图6C中表6.1规定的状态改变)。任何具有挂起的PWB的高速缓存使用Nack响应接收的用于相同高速缓存块的P2P分配请求以阻止向相同高速缓存块的第二个同时pWB。任何具有挂起的AckWB或PullWB的高速缓存使用Nack响应接收的对等分配请求。
[0134]请求以写入整个高速缓存块
[0135]如果意图写入整个高速缓存块,那么将原始高速缓存块数据传输到写入方的高速缓存是对网络带宽的浪费。没有伴随高速缓存块数据而仅在高速缓存之间转移存取权限的“pRTW”请求不工作。如果由于接收Nack或由于看到请求方不能获得写入存取的pRTS,那么高速缓存块数据丢失。所以PRTW请求必须和pRTO请求表现完全相同,具有pRTW的一个原因是允许自动的mRTW。
[0136]假设处理器间协议支持在不转移高速缓存块数据的情况下转移写入存取,那么mRTW可以导致对整个高速缓存块写入的处理器间带宽需求的降低。
[0137]与网关标签相关联的额外操作
[0138]如上所讨论的,在本发明的一或多个实施例中,网关可以使用网关标签以精确预测对等请求的失败并在从对等请求自身看到失败指示之前开始失败的处理器间服务。这样可以节省在全部高速缓存未中处理中的对等请求处理的等待时间。
[0139]同样如上所讨论的,在本发明的一或多个实施例中,网关也可以使用网关标签以确定在对等请求失败时不要求处理器间请求并立刻继续以发布相应的转发的请求。然而,该失败必须是由于冲突造成的。
[0140]在本发明的一或多个实施例中,关于网关标签驱逐,使得网关标签的结构精确镜像高速缓存的结构是不切实际的一网关标签的结合性可能变得过度。在缺少充足的结合性情况下,在执行分配处理器间请求时可能不可能分配网关标签条目;在这种情况下,有必要从闻速缓存中驱逐另一个闻速缓存块以在网关标签中制造空间。
[0141]在本发明的一或多个实施例中,这可以通过在执行处理器间写回或牺牲期间网关将fCPI广播到高速缓存并将高速缓存块存储在网关中的缓冲器中来实现(典型的处理器间协议要求高速缓存块为由其他处理器的可能存取被保留直到牺牲的效果对其他处理器的请求可见)。
[0142]在本发明的一或多个实施例中,另一个方法是在抑制高速缓存块转移到处理器上另一个高速缓存期间迫使供应方高速缓存开始牺牲(利用PWB的特殊变形pWBA)。
[0143]对pWB的受害者高速缓存指定
[0144]在本发明的一或多个实施例中,当多个高速缓存使用Pu IIWB和/或AckWB响应时,PWB的处理可以是相当昂贵的。同时发布PullWB可能污染PullWB发布方的高速缓存。为了缓解这一情况,能够瞄准在具体高速缓存处的PWB是有用的,该高速缓存是唯一被允许使用PullWB响应的高速缓存。
[0145]pWB的变形pWBA也可以从除了指定的受害者高速缓存之外的每个高速缓存抑制AckffB0
[0146]在本发明的一或多个实施例中,能够完全不指定受害者高速缓存、迫使所有的高速缓存Nack并无效任何共享的备份也是有用的。这个可以被用于与mWB(即,间接写回)结合以迫使高速缓存块离开处理器上的所有高速缓存。
[0147]本发明的实施例实际上可以在任何种类的计算系统中实现,不管使用何种平台。例如,计算系统可以是一或多个移动设备(如,膝上型计算机、智能手机、个人数字助手、平板计算机或其他移动设备)、台式计算机、服务器、服务器机架中的刀片或其他任何类型的计算设备或至少包括最小处理电源、存储器,和输入和输出设备以执行本发明的一或多个实施例的设备。例如,如图7中所示,计算系统(700)可以包括一或多个计算机处理器(702)、相关联的存储器(704)(例如,随机存取存储器(RAM)、高速缓存存储器、闪存等等)、一或多个存储设备(706)(例如,硬盘、比如压缩盘(⑶)驱动或数字多功能盘(DVD)驱动的光驱、闪存卡等)和多个其他元件和功能。该计算机处理器(702)可以是用于处理指令的集成电路。例如,该计算机处理器可以是一或多个核、或处理器的微核。该计算系统(700)也可以包括一或多个输入设备(710),比如触屏、键盘、鼠标、麦克风、触板、电子笔或任何其他类型的输入设备。更进一步,计算系统(700)可以包括一或多个输出设备(708),比如屏幕(如液晶显示器(LCD)、等离子显示器、触屏、阴极射线管(CRT)监视器、投影仪或其他显不设备)、打印机、夕卜部存储器或任何其他输出设备。一或多个输出设备可以与输入设备相同或不同。计算系统(700)可以被通过网络接口连接(未示出)连接到网络(714)(如,局域网(LAN)、比如因特网、移动网络的广域网(LAN)或任何其他类型网络)。该输入和输出设备可以是本地的或远程的(如,通过网络(712))连接到计算机处理器(702)、存储器(704)和存储设备(706))。存在许多不同类型的计算系统,并且之前提到的输入和输出设备可以采用其他形式。
[0148]可以在比如⑶、DVD、存储设备、磁盘、磁带、闪存、物理存储器或任何其他计算机可读存储介质上全部或部分、暂时或永久地储存计算机可读程序代码形式的软件指令以执行本发明的实施例。具体地,该软件指令可以对应于计算机可读程序代码,该代码在被处理器执行时被配置为执行本发明的实施例。
[0149]此外,之前提到的计算系统(700)的一或多个元件可以位于远程的位置并在网络(714)上连接到其他元件。此外,本发明的实施例可以在具有多个节点的分布式系统中被实现,此处本发明的每个部分可以位于分布式系统内的不同节点上。在本发明的一个实施例中,节点对应于不同的计算设备。可替代地,节点可以对应于具有相关联的物理存储器的计算机处理器。该节点可以作为替代地对应于具有共享存储器和/或资源的计算机处理器的微核或计算机处理器。
[0150]虽然已经参考有限数量的实施例描述本发明,但是受益于本公开的本领域技术人员将体会到可以设计出其他实施例而不偏离此处所公开的发明的范围。因此,本发明的范围应该仅由所附权利要求限制。
【权利要求】
1.一种用于高速缓存一致性的方法,包括: 通过第一请求方高速缓存RC的高速缓存代理在本地处理器的部分有序请求网络上将对于高速缓存块的第一对等P2P请求广播到所述本地处理器上的多个从属高速缓存的多个高速缓存代理; 在第一P2P请求挂起期间,由第一 RC的高速缓存代理在所述部分有序请求网络上从在所述本地处理器上的本地网关接收与所述高速缓存块相关联的转发的请求, 其中所述本地网关被操作地连接到外部处理器上的外部网关, 其中,由于第一 P2P请求挂起,第一 RC的高速缓存代理延迟响应所述转发的请求;在接收转发的请求之后,由第一 RC的高速缓存代理从所述多个从属高速缓存的多个高速缓存代理接收对第一 P2P请求的多个响应; 在接收所述多个响应之后,由第一 RC的高速缓存代理设置第一 RC中的所述高速缓存块的处理器内部状态, 其中所述处理器内部状态也规定与所述本地处理器和外部处理器相关联的高速缓存块的处理器间状态;并且 在设置处理器内部状态之后和第一 P2P请求完成之后,由第一 RC的高速缓存代理发布对转发的请求的响应;并且 由第一 RC的高速缓存代理响应发布对转发的请求的响应而修改所述处理器内部状态。
2.如权利要求1所述的方法,进一步包括: 由本地网关在部分有序请求网络上接收第一 P2P请求; 由本地网关响应本地网关不能确定所述本地处理器是否保持高速缓存块在由第一 P2P请求要求的处理器内部状态,发布对于所述高速缓存块的处理器间请求。
3.如权利要求1所述的方法,进一步包括: 由本地网关在部分有序请求网络上接收第一 P2P请求;并且 由本地网关通过存取用于所述高速缓存块的网关标签确定本地处理器保持所述高速缓存块。
4.如权利要求3所述的方法,进一步包括: 由本地网关从外部网关接收处理器间请求以无效所述高速缓存块; 在第一 P2P请求被接收前,由本地网关在部分有序请求网络上将转发的请求广播到所述多个从属高速缓存的多个高速缓存代理和第一 RC的高速缓存代理, 其中所述转发的请求是使所述高速缓存块无效的请求; 在接收第一 P2P请求之后,由本地网关在请求网络上接收转发的请求的返回;以及在部分有序请求网络上接收转发的请求的返回之后,由本地网关使网关标签无效以阻止第一 P2P请求的虚假失败预测。
5.如权利要求1所述的方法,进一步包括: 由本地处理器上的第二 RC的高速缓存代理在部分有序请求网络上广播对于所述高速缓存块的第二 P2P请求; 由第二 RC的高速缓存代理识别第二 P2P请求的失败; 由第二 RC的高速缓存代理响应识别第二 P2P请求的失败发布对于所述高速缓存块的间接请求, 其中,当第二 RC保持所述高速缓存块在处理器内部状态Ic中时,第二 RC的高速缓存代理被允许发布对于所述高速缓存块的间接请求,因为在发布间接请求之前第二 RC已广播第二 P2P请求且直到间接请求完成之前第二 RC都否定应答随后的对于所述高速缓存块的P2P请求;并且 由本地网关响应接收间接请求在部分有序请求网络上发布转发的请求。
6.如权利要求5所述的方法,其中由第一RC的高速缓存代理发布的对转发的请求的响应由第二 RC的高速缓存代理接收。
7.如权利要求1所述的方法,进一步包括: 响应于在第一 P2P请求挂起期间请求方高速缓存的高速缓存代理接收对于所述高速缓存块的P2P读入存取请求pRTS,认为第一 P2P请求失败,其中第一 P2P请求是对于所述高速缓存块的读-写存取请求pRTO。
8.一种用于高速缓存一致性的方法,包括: 由驱逐高速缓存EC的高速缓存代理在本地处理器上的部分有序请求网络上将对于高速缓存块的对等P2P写回请求广播到本地处理器上的多个从属高速缓存的多个高速缓存代理; 在P2P写回请求仍挂起期间,由EC的高速缓存代理在部分有序请求网络上从本地处理器上的本地网关接收对于所述高速缓存块的第一转发的请求, 其中所述本地网关被操作地连接到外部处理器上的外部网关,并且其中,在P2P写回请求仍挂起期间,EC的高速缓存代理延迟响应第一转发的请求以确保只有一个P2P写回请求对于本地处理器上的所述高速缓存块有效; 由EC的高速缓存代理从所述多个从属高速缓存的高速缓存代理接收多个响应; 在从所述多个从属高速缓存的高速缓存代理接收所述多个响应之后以及在P2P写回请求完成之后,由EC的高速缓存代理发布对第一转发的请求的响应;并且 在发布对第一转发的请求的响应之后,由EC的高速缓存代理发布对多个从属高速缓存的高速缓存代理的多个响应。
9.如权利要求8所述的方法,其中第一转发的请求是无效请求,且其中对所述多个从属高速缓存的高速缓存代理的所述多个响应都是否定应答Nack。
10.如权利要求8所述的方法,进一步包括: 由EC的高速缓存代理在来自所述多个从属高速缓存的高速缓存代理的所述多个响应中识别来自第一从属高速缓存的拉写回Pul IWB。
11.如权利要求10所述的方法,进一步包括: 由EC的高速缓存代理在来自所述多个从属高速缓存的高速缓存代理的所述多个响应中识别来自从第二从属高速缓存的应答写回AckWB, 其中所述对多个从属高速缓存的高速缓存代理的多个响应包括: 基于EC中高速缓存块的处理器内部状态的用于第二从属高速缓存的高速缓存代理的一种肯定应答;以及 用于第一从属高速缓存的高速缓存代理的否定应答Nack。
12.如权利要求10所述的方法,其中所述对多个从属高速缓存的高速缓存代理的多个响应包括用于第一从属高速缓存的高速缓存代理的基于EC中的所述高速缓存块的处理器间状态的闻速缓存块。
13.如权利要求8所述的方法,进一步包括: 由所述多个从属高速缓存中的一个从属高速缓存的高速缓存代理在部分有序请求网络上接收P2P写回请求; 由所述从属高速缓存的高速缓存代理基于所述从属高速缓存中高速缓存块的处理器内部状态在部分有序请求网络上发布针对P2P写回请求的应答写回AckWB ; 在AckWB挂起期间,由所述从属高速缓存的高速缓存代理在部分有序请求网络上接收第一转发的请求, 其中在AckWB挂起期间,所述从属高速缓存的高速缓存代理延迟响应第一转发的请求; 在接收第一转发的请求之后,由所述从属高速缓存的高速缓存代理从EC的高速缓存代理接收一种肯定应答; 由所述从属高速缓存的高速缓存代理基于肯定应答的类型更新在所述从属高速缓存中的高速缓存块的处理器内部状态;以及 在更新处理器内部状态之后和在AckWB完成之后,由所述从属高速缓存的高速缓存代理响应第一转发的请求。
14.如权利要求8所述的方法,进一步包括: 由所述多个从属高速缓存中的一个从属高速缓存的高速缓存代理在部分有序请求网络上接收P2P写回请求; 由所述从属高速缓存的高速缓存代理基于所述从属高速缓存中的高速缓存块的处理器内部状态在部分有序请求网络上发布向P2P写回请求的拉写回PullWB ; 在PullWB挂起期间,由所述从属高速缓存的高速缓存代理在部分有序请求网络上接收对于所述高速缓存块的第二转发的请求,其中第二转发的请求来自本地网关, 其中,由于PullWB挂起,所以所述从属高速缓存的高速缓存代理延迟响应第二转发的请求; 在接收第二请求之后,由所述从属高速缓存的高速缓存代理接收来自EC的高速缓存代理的高速缓存块; 由所述从属高速缓存的高速缓存代理在所述从属高速缓存中安装来自EC的高速缓存代理的高速缓存块;且 在安装所述高速缓存块之后,由所述从属高速缓存的高速缓存代理对第二转发的请求响应。
15.一种用于高速缓存一致性的系统,包括: 外部处理器;和 本地处理器,包括: 多个本地从属高速缓存的多个高速缓存代理; 操作地连接所述多个本地从属高速缓存的多个高速缓存代理的第一部分有序请求网络;以及 请求方高速缓存RC的高速缓存代理,被配置为: 在第一部分有序请求网络上将用于第一高速缓存块的对等P2P请求广播到所述多个本地从属高速缓存的多个高速缓存代理; 在P2P请求挂起期间,在部分有序请求网络上接收与第一高速缓存块相关联的转发的请求; 在转发的请求被接收之后,基于对P2P请求的响应在RC中设置所述高速缓存块的处理器内部状态, 其中该处理器内部状态也规定与本地处理器和外部处理器相关联的高速缓存块的处理器间状态;以及 在处理器内部状态被设置之后以及在P2P请求完成之后,发布对转发的请求的响应, 其中,在P2P请求挂起期间对转发的请求的响应被延迟。
16.如权利要求15所述的系统,其中本地处理器进一步包括: 包括与第一闻速缓存块对应的网关标签的本地网关, 其中该网关标签由本地网关使用以确定本地处理器保持第一高速缓存块。
17.如权利要求16所述的系统,其中外部处理器包括: 操作地连接到本地网关的外部网关; 用于多个外部从属高速缓存的多个高速缓存代理;以及 操作地连接外部网关和所述多个外部从属高速缓存的多个高速缓存代理的第二部分有序请求网络, 其中该外部网关被配置以向本地网关发布用于第一高速缓存块的处理器间无效请求, 其中该本地网关在第一部分有序请求网络上响应处理器间无效请求发布该转发的请求,以及 其中在第一部分有序请求网络上看到该转发的请求的返回之后,本地网关无效该网关标签, 其中第一部分有序请求网络和第二部分有序请求网络是单向环。
18.如权利要求15中所述的系统,其中所述本地处理器进一步包括: 本地网关,该本地网关被配置为: 在该第一部分有序请求网络上接收该P2P请求;并且 响应于不能确定本地处理器是否保持第一高速缓存块在由P2P请求要求的处理器内部状态,向外部处理器发布对于第一高速缓存块的处理器间请求。
19.如权利要求15所述的系统,其中RC的高速缓存代理进一步被配置为: 响应于在P2P请求挂起期间接收对于第一高速缓存块的P2P读入存取请求pRTS,认为P2P请求失败,其中P2P请求是对于第一高速缓存块的读-写存取请求pRTO。
20.如权利要求15所示的系统,其中RC的高速缓存代理发布间接写回以驱逐存储在RC中的第二高速缓存块。
【文档编号】G06F12/08GK104303163SQ201480001234
【公开日】2015年1月21日 申请日期:2014年3月12日 优先权日:2013年3月14日
【发明者】P·N·洛文斯坦因, S·E·菲利斯, D·R·斯曼特克, C·W·M·陈, S·W·Y·梁, D·沃尔克, R·斯维拉马克瑞斯南 申请人:甲骨文国际公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1