CN102959529A - 用于缓存的网络的广播协议 - Google Patents

用于缓存的网络的广播协议 Download PDF

Info

Publication number
CN102959529A
CN102959529A CN2012800017783A CN201280001778A CN102959529A CN 102959529 A CN102959529 A CN 102959529A CN 2012800017783 A CN2012800017783 A CN 2012800017783A CN 201280001778 A CN201280001778 A CN 201280001778A CN 102959529 A CN102959529 A CN 102959529A
Authority
CN
China
Prior art keywords
buffer memory
caching agent
request
response
state
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.)
Pending
Application number
CN2012800017783A
Other languages
English (en)
Inventor
P·N·洛文斯坦
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.)
Oracle International Corp
Oracle America Inc
Original Assignee
Oracle International 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 Oracle International Corp filed Critical Oracle International Corp
Publication of CN102959529A publication Critical patent/CN102959529A/zh
Pending legal-status Critical Current

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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • 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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0822Copy directories
    • 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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions

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

一种用于管理缓存的方法,包括:通过操作地连接到第一缓存的第一缓存代理并使用第一物理网络,广播对存储器地址的第一对等P2P请求;通过操作地连接到第二缓存的第二缓存代理并使用第二物理网络,基于所述第一P2P请求的类型以及对应于所述存储器地址的所述第二缓存中的缓存行的状态,发出对所述第一P2P请求的第一响应;通过操作地连接到第三缓存的第三缓存代理,发出对所述第一P2P请求的第二响应;以及,通过所述第一缓存代理并基于所述第一响应和所述第二响应,升级对应于所述存储器地址的所述第一缓存中的缓存行的状态。

Description

用于缓存的网络的广播协议
背景技术
在计算中,缓存一致性是指存储在共享资源的本地缓存中的数据的一致性。当***中的客户端维护公用存储器资源的缓存时,可能会出现非一致数据的问题。对多处理***中的CPU尤其是这样的。缓存一致性旨在在缓存之间和在缓存和存储器之间维护一致性,以便缓存的存在对***程序员而言基本上是不可见的,它们对性能的影响除外。
一致性协议是在分布式共享存储器的***中的所有缓存之间维护一致性的协议。对于给定存储器模型。
发明内容
一般而言,一方面,本发明涉及用于管理缓存的方法。该方法包括:通过操作地连接到第一缓存的第一缓存代理并使用第一物理网络,广播对存储器地址的第一对等(P2P)请求;通过操作地连接到第二缓存的第二缓存代理并使用第二物理网络,基于所述第一P2P请求的类型以及对应于所述存储器地址的所述第二缓存中的缓存行的状态,发出对所述第一P2P请求的第一响应;通过操作地连接到第三缓存的第三缓存代理,发出对所述第一P2P请求的第二响应;以及,通过所述第一缓存代理并基于所述第一响应和所述第二响应,升级对应于所述存储器地址的所述第一缓存中的缓存行的状态。
一般而言,一方面,本发明涉及用于管理缓存的方法。该方法包括:通过操作地连接到第一缓存的第一缓存代理并使用第一物理网络,广播对存储器地址的对等(P2P)回写请求;通过操作地连接到第二缓存的第二缓存代理并响应于所述P2P回写请求,标识所述第二缓存中的对应于所述存储器地址的缓存行的共享状态;通过所述第二缓存代理并响应于标识所述共享状态,使用第二物理网络,向所述第一缓存代理发出回写肯定确认(WBAck);通过操作地连接到第三缓存的第三缓存代理并响应于所述P2P回写请求,标识所述第三缓存中的对应于所述存储器地址的缓存行的无效状态;通过所述第三缓存代理并响应于标识所述无效状态,向所述第一缓存代理发出回写拉(WBPull)请求;通过所述第一缓存代理,将所述第一缓存中的对应于所述存储器地址的缓存行的状态传输到从包括所述第二缓存和所述第三缓存的组中选择的所选缓存;以及,将所述第一缓存中的所述缓存行降级。
一般而言,一方面,本发明涉及用于管理缓存的***。该***包括:包括第一核、第二核,以及第三核的第一处理器;位于所述第一处理器上的并与所述第一核相关联的第一缓存;位于所述第一处理器上的并与所述第二核相关联的第二缓存;位于所述第一处理器上的并与所述第三核相关联的第三缓存;第一缓存代理,操作地连接到第一缓存并被配置成使用所述处理器上的第一物理网络广播对存储器地址的对等(P2P)请求;第二缓存代理,操作地连接到所述第二缓存并被配置成使用所述处理器上的第二物理网络,基于所述P2P请求的类型和所述第二缓存中的对应于所述存储器地址的缓存行的状态,发出对该P2P请求的第一响应;第三缓存代理,操作地连接到第三缓存并被配置成使用所述第二物理网络发出对所述P2P请求的第二响应,其中,第一缓存代理进一步被配置成基于第一响应和第二响应修改第一缓存中的对应于该存储器地址的缓存行的状态。
通过下面的描述和所附权利要求书,本发明的其他方面将变得显而易见。
附图说明
图1示出了描绘了根据本发明的一个或多个实施例的***的框图。
图2示出了根据本发明的一个或多个实施例的关于缓存行(cacheline)状态的表。
图3示出了根据本发明的一个或多个实施例的关于对等(P2P)请求类型的表。
图4示出了根据本发明的一个或多个实施例的请求和响应分组。
图5示出了根据本发明的一个或多个实施例的流程图。
图6示出了关于对P2P请求的响应的表。
图7示出了关于响应于P2P请求而对缓存行状态的更改的表。
图8示出了根据本发明的一个或多个实施例的流程图。
图9示出了关于对于多个P2P请求类型准许的初始缓存行状态的表。
图10示出了关于根据接收到的对P2P请求的响应而对缓存行状态的更改的表。
图11A、11B,以及11C示出了根据本发明的一个或多个实施例的示例。
图12示出了根据本发明的一个或多个实施例的流程图。
图13示出了关于根据接收到的响应和现有缓存行状态的数据包类型和新缓存行状态的表。
图14示出了根据本发明的一个或多个实施例的流程图。
图15A、15B,以及15C示出了根据本发明的一个或多个实施例的示例。
图16示出了根据本发明的一个或多个实施例的计算机***。
具体实施方式
现在将参考附图详细描述本发明的具体实施例。为确保一致性,各种图形中的相同元件通过相同引用编号来表示。
在下面的对本发明的各实施例的详细描述中,阐明了众多具体细节以提供对本发明的更加全面的理解。然而,对本领域的技术人员显而易见的是,本发明也可以在没有这些具体细节的情况下实施,在其他情况下,没有对已知的特征进行详细描述,以避免不必要地使描述复杂化。
一般而言,本发明的各实施例提供用于在多核处理器上的多个缓存之间维护缓存一致性的***和方法。具体而言,每一缓存都与缓存代理和多核处理器的至少一个核相关联。此外,每一缓存都将多个缓存行保持在各种状态。为解决缓存未中和/或将对一个缓存行的控制转移到另一个缓存,缓存代理广播对等(P2P)请求。缓存代理还处理对P2P请求的响应(例如,来自其他缓存代理)。
图1示出了根据本发明的一个或多个实施例的***(100)。如图1所示,***(100)包括具有可操作地连接到多个缓存(例如,缓存1(110)、缓存X(120))的多个处理器核(例如,核Y1(114)、核Y2(116)、核X1(124)、核X2(126))的处理器(199)。处理器(199)还包括可操作地连接到一个或多个外部(即,处理器之外)的设备的直接存储器访问(DMA)缓存(130);用于与处理器之外的主存储器进行通信的一个或多个存储器控制单元(MCU)(例如,MCU A(144)、MCU B(146));以及,对于给定存储器地址,与用于在处理器(199)及其他处理器之间维护缓存一致性的处理器之间的一致性协议进行交互的一个或多个网关(例如,网关(152))。
为了成功地执行指令,处理器核(114、116、124、126)和/或外部设备必须频繁地访问(例如,读写)主存储器中的一个或多个存储器地址。为了加快这些指令的执行,某些存储器地址的内容可以本地存储在缓存(110,120,130)中,这比主存储器具有更快的访问时间。如果缓存(110,120,130)未存储所需的存储器地址的内容,或者如果缓存(110,120,130)未在所需的状态存储存储器地址的内容(下面所讨论的),则发生缓存未中。
缓存(110,120,130)将对应于一个或多个存储器地址的缓存行存储在主存储器中。例如,缓存1(110)存储缓存行E(111)、缓存行F(112),以及缓存行G(113)。每一缓存行(111,112,113)对应于主存储器中的一个或多个存储器地址。此外,每一缓存行(111,112,113)还可以被***(100)中的另一个缓存(例如,120,130)保存。如果一缓存行在任何缓存(110,120,130)中有效,则唯一缓存(110,120,130)被指定为该缓存行的“供给者”。供给者供应缓存行以服务另一个缓存中的缓存未中。在本发明的一个或多个实施例中,在填充或升级缓存行之后,请求者变为供给者。作为替代地,供给者仍然为供给者。
缓存1(110)以各种状态(118)中的一个存储每一缓存行(111,112,113)。图2示出了描述了可以保持缓存行的各种状态的表(200)。如果***(100)中的单个缓存(110,120,130)保持一缓存行,则它处于供给者状态;如果多个缓存(110,120,130)保持一缓存行,则一个缓存处于供给者状态,其他缓存处于状态S。如果缓存(110,120,130)在状态M或状态E中保持缓存行,则它具有对缓存行的写权限。然而,如果处理器(199)内的多个缓存共享一缓存行,则处理器(199)可以访问该缓存行,即使每一单个缓存没有这样的访问权。表(200)还示出在供给者缓存的状态中编码的处理器访问权限(即,处理器之间的状态)。图2还包括带有各种处理器之间状态的描述的表(205)。在本发明的一个或多个实施例中,网关(152)为缓存(110,120,130)中存在的每个缓存行维护处理器之间状态的副本。
仍参考图1,在本发明的一个或多个实施例中,处理器(199)包括可操作地连接到缓存(110,120,130)的多个缓存代理(例如,缓存代理1(102),缓存代理X(122),缓存代理Y(132))。缓存代理(102,122,132)被配置成,响应于缓存未中或为了转移对缓存行的控制,将各种类型的P2P请求广播到其他缓存代理(102,122,132),并处理对P2P请求的响应(来自其他缓存代理)。类似地,缓存代理(102,122,132)还被配置成监听(即,接收)各种类型的广播的P2P请求,并发出对P2P请求的响应。图3示出了列出多个P2P请求类型,对P2P请求类型的描述,以及P2P请求类型的触发的表(300)。图3还示出了列出多种响应类型(即,对P2P请求的)以及对响应类型的描述的表(350)。
图4示出了根据本发明的一个或多个实施例的P2P请求数据包(401)和响应数据包(415)。P2P请求数据包(401)可以被缓存代理(102,122,132)用来广播对应于存储器地址的P2P请求(即,图3的表(300)中所描述的P2P请求中的一个)。类似地,响应数据包(415)可以由缓存代理(102,122,132)响应于对应于存储器地址的P2P请求而发出。如图4所示,P2P请求数据包(401)具有多个字段,包括类型字段(403)、事务标识(TID)字段(405)、设置字段(407),以及标记字段(409)。也如图4所示,响应数据包(415)具有多个字段,包括类型字段(417)、TID字段(419)、分配者TID字段(421),以及数据字段(423)。所属领域的技术人员,在阅读此详细描述之后,将理解P2P请求数据包(401)和/或响应数据包(415)可以具有未示出的额外的字段。此外,并非所有的数据包都携带全部字段。
在本发明的一个或多个实施例中,类型字段(403)标识对于缓存行和对应的存储器地址的P2P请求的类型(例如,上文在图3的表(300)中所讨论的PRTS、PRTO、PRTU、PWB);TID字段(405)是正在广播的缓存代理的ID和由正在广播的缓存代理指派给P2P请求的ID的串联;设置字段(407)标识存储器地址的L3索引(即,存储器地址的比特[19:6]);以及,标记字段(409)标识存储器地址的L3标记(即,存储器地址的比特[49:20])。
在本发明的一个或多个实施例中,类型字段(417)标识发出的响应的类型(例如,图3的表(350)中的响应类型中的一个);TID字段(419)等于触发P2P请求的TID字段(405);分配者TID字段(421)是由作出响应的缓存代理为标识该响应所创建的ID;以及,数据字段(423)存储缓存行的数据值。在本发明在一个或多个实施例中,当响应是WBAck时,分配者TID字段(421)中的值被称为WBAckID。在本发明在一个或多个实施例中,当响应是WBPull时,分配者TID字段(421)中的值被称为WBPullID。
回头参考图1,在本发明的一个或多个实施例中,缓存代理(102,122,132)包括请求表。例如,缓存代理1(102)包括请求表(104)。请求表(104)中的每一条目都对应于由缓存代理1(102)广播的P2P请求。此外,请求表(104)中的每一条目都包括P2P请求的状态(例如,空闲、活动、失败等等)、与P2P请求相关联的存储器地址、由缓存代理1(102)响应于P2P请求而接收到的任何响应、以及P2P请求的TID(上文参考图4所讨论的)。此外,请求表(104)中的条目通过P2P请求的TID来索引。
在本发明的一个或多个实施例中,缓存代理(102,122,132)包括回写表。例如,缓存代理1(102)包括回写表(106)。回写表(106)将传入的回写记录(即,写日志)到缓存1(110)。具体而言,回写请求表(106)中的每一条目都包括回写的状态(即,活动或不活动)以及对应于回写的存储器地址。
仍参考图1,在本发明的一个或多个实施例中,缓存代理(102,122,132)、网关(152),MCU代理(142)使用环形网络(180)可操作地连接。因此,环形网络(180)可以用于广播和接收P2P请求。环形网络(180)可以是物理单向或物理双向网络。另外,***(100)包括用于传输对P2P请求的响应和与某些响应相关联的数据(即,缓存行)的一个或多个物理数据和响应网络(160)。在本发明的一个或多个实施例中,数据和响应网络(160)中的至少一个网络是对于点对点响应的单驱动每轨道自由运行(single-driver-per-trackfree-running)管道网络。
图5示出了根据本发明的一个或多个实施例的流程图。图5所示出的过程可以,例如,由从属缓存代理响应于来自请求者缓存代理的传入的非回写P2P请求(即,PRTS、PRTO,以及PRTU请求)而执行。图5所示出的步骤的序列在本发明的各实施例之间可不同,步骤中的一个或多个可以并行地执行和/或可以是可选的。
一开始,对应于存储器地址的P2P请求由从属缓存代理接收(步骤502)。P2P请求可以由请求者缓存代理在物理网络(例如,环形网络(180),上文参考图1所讨论的)上广播。此外,P2P请求可以对应于标识P2P请求的类型、与P2P请求相关联的TID,以及用于标识缓存行以及与P2P请求相关联的对应的存储器地址的设置和标记字段的数据包(例如,上文参考图4所讨论的P2P请求数据包(401))。
在步骤504中,确定非回写P2P请求(即,PRTS、PRTO、PRTU)、WBPull或WBAck(下面所讨论的)是否对于该存储器地址已经是未决的。在本发明的一个或多个实施例中,通过基于存储器地址来搜索从属缓存代理的请求表(例如,上文参考图1所讨论的请求表(104)),来确定未决的非回写P2P请求的存在。在本发明的一个或多个实施例中,通过基于存储器地址来搜索从属缓存代理的回写表(例如,上文参考图1所讨论的回写表(106)),来确定未决的WBPull或WBAck(下面所讨论的)的存在。当确定对于存储器地址存在未决的非回写P2P请求、WBPull或WBAck时,进程前进到步骤510。然而,当确定没有未决的非回写P2P请求、WBPull或WBAck时,进程前进到步骤506。
在步骤506中,基于P2P请求的类型和对应于存储器地址的从属缓存行的状态,由从属缓存代理发出响应。发出的响应可以对应于标识响应的类型以及与接收到的P2P请求相关联的TID的响应数据包(例如,响应数据包(415))。响应的类型基于P2P请求的类型和从属缓存中的从属缓存行的状态。图6示出了标识根据P2P请求类型和从属缓存中的缓存行的状态的响应类型的表(600)。例如,如图6所示,当传入的P2P请求是PRTO请求,从属缓存中的缓存行的状态是E或X时,发出类型DataE的响应。类似地,当传入的P2P请求是PRTU,从属缓存中的缓存行的状态是S时,发出类型Ack的响应。在本发明的一个或多个实施例中,响应是在不同于在其上面接收到P2P请求的物理网络的物理网络(例如,数据和响应网络(160))上发出的。此外,与传入的P2P请求不同,发出的响应不是广播消息。相反,发出的响应是点对点消息。发出的响应的意图的目的地(即,请求者缓存代理)可以根据响应数据包中的TID来标识。
仍参考图5,在步骤508中,从属缓存中的缓存行的状态被修改。例如,响应于接收到P2P请求并发出响应,从属缓存可能失去其作为缓存行的供给者的状态。图7示出了描述了根据传入的P2P请求类型和初始缓存行状态对从属缓存中的缓存行的状态的修改的表(700)。例如,如图7所示,当传入的P2P请求是PRTS请求并且从属缓存中的缓存行的状态是D(即,从属缓存是缓存行的供给者)时,缓存行的状态被设置(即,修改)为状态S。如表(700)所示,如果从属缓存在任何供给者状态(即,M,D,O,E,X,Q)保持缓存行并且接收到PRTS,则从属缓存将状态更改(即,修改)为非供给者共享的状态S。作为替代地,从属缓存可以继续在供给者状态保持缓存行(未示出),尽管接收到PRTS。这对应于供给者(即,从属缓存)保持是供给者的各实施例。
如上文所讨论的,当存在对于该地址的未决的非回写P2P请求、WBPull或WBAck时,进程到达步骤510。在步骤510中,发出类型否定确认(NAck)的响应。该响应包括传入的P2P请求的TID。然后,进程结束。
图8示出了根据本发明的一个或多个实施例的流程图。图8所示出的进程可以例如由请求者缓存代理在广播非回写P2P请求(即,PRTS、PRTO,以及PRTU请求)时执行。图8所示出的步骤的序列在本发明的各实施例之间可不同,步骤中的一个或多个可以并行地执行和/或可以是可选的。
一开始,标识P2P请求的触发(步骤802)。触发可以对应于缓存未中。换言之,该缓存没有相关联的处理核所需的缓存行,或者该缓存未将缓存行保持在处理核所需的状态。在图3的表(300)中讨论了对于P2P请求的触发。
在步骤804中,确定P2P请求是否已经对于对应于该缓存行的存储器地址是未决的。在本发明的一个或多个实施例中,可以通过基于存储器地址来搜索请求者缓存代理的请求表,来标识对该存储器地址的现有的P2P请求。当确定没有对于该存储器地址的未决P2P请求时,进程前进到步骤806。否则,进程结束。
在步骤806中,确定缓存是否在对于P2P请求准许的状态下保持缓存行。图9示出了带有根据P2P请求类型的被许可的初始缓存行状态的表(900)。例如,如图9所示,类型PRTS或PRTO的P2P请求只有当在状态I中保持缓存行时才准许类型PRTS或PRTO的P2P请求。类似地,如图9所示,只有当在状态D、O、X、Q或S中的一个保持缓存行时,才准许类型PRTU的P2P请求。当确定缓存行被保持在准许的状态时,进程前进到步骤808。否则,进程结束。
在步骤808中,生成并广播对应于存储器地址的P2P请求。在本发明的一个或多个实施例中,生成P2P请求包括生成标识P2P请求的TID。P2P请求可以对应于包括TID、P2P请求的类型,以及用于标识存储器地址的设置和标记字段的数据包(例如,上文参考图4所讨论的P2P请求数据包(401))。此外,P2P请求可以在可操作地连接多个缓存代理的物理网络(例如,环形网络(180))上广播。
在步骤810中,P2P请求被记录(即,写日志)在请求者缓存的请求表(例如,请求表(104))中。具体而言,通过TID索引的请求表中的条目被填充以P2P请求的状态(例如,空闲、活动、失败等等)、与P2P请求相关联的存储器地址、由缓存代理响应于P2P请求(下面讨论)接收到的任何响应、以及P2P请求的TID。
在步骤812中,由请求者缓存代理接收对P2P请求的响应。响应可以对应于标识响应的类型、P2P请求的TID,以及在某些情况下,数据(即,缓存行)的数据包(例如,上文参考图4所讨论的响应数据包(415))。响应可以被记录(即,写日志)在通过TID索引的请求者表的条目中。
在步骤814中,确定接收到的响应是否是带有处理器之间的状态(例如,AckM、AckO、AckE、AckS)的肯定确认,或带有处理器之间的状态(例如,DataM、DataO、DataE、DataS)的数据。当确定接收到的响应是肯定确认或带有处理器之间的状态的数据时,进程前进到步骤816。否则,进程前进到步骤820。
在步骤816中,对应于存储器地址的缓存行被利用接收到的响应中的数据来填充/更新。所属领域的技术人员,在阅读此详细描述之后,将理解只有当接收到的响应是带有处理器之间的状态的数据时才执行步骤816。在步骤818中,请求者缓存中的缓存行的状态被修改。图10示出了带有根据接收到的响应类型的下一缓存行状态的表(1005)。例如,如图10所示,如果响应类型是DataE或AckE,则缓存行的状态被设置为X。类似地,如果响应类型是DataM或AckM,则缓存行的状态被设置为D。在本发明的一个或多个实施例中,由请求者缓存代理来设置缓存行的状态。在本发明的一个或多个实施例中,如果请求者响应于PRTS接收到数据(例如,DataM、DataO、DataE、DataS),则缓存行的状态被设置为S。这对应于其中供给者(即,从属缓存)保持是供给者的各实施例。
仍参考图8,在步骤820中,确定是否已接收到全部响应。当确定已经接收到全部响应时,进程前进到步骤822。否则,进程返回到步骤812。
在步骤822中,如果P2P请求是PRTO或PRTU,并且没有接收到Nack响应,则缓存行的状态基于其当前状态(即,在步骤818中设置的状态)被设置为最终状态。图10示出了带有根据缓存行的当前状态和P2P请求类型的缓存行的最终状态的表(1010)。例如,如果P2P请求是PRTO请求,并且当前缓存行状态是X,则缓存行被设置为最终状态E。类似地,如果P2P请求是PRTO请求,并且当前缓存行状态是Q,则最后的缓存行状态也是Q(即,无变化)。
所属领域的技术人员,在阅读此详细描述之后,将理解如果最后的缓存行状态是M或E,P2P请求对于PRTO或PRTU请求是成功的。所属领域的技术人员,在阅读此详细描述之后,也将理解如果最后的缓存行状态是D、O、X或Q,则P2P请求对于PRTS请求是成功的。
在步骤824中,现在完成P2P请求,对应于P2P请求的请求表中的条目可以被复位(即,状态被设置为完成,等等)。
图11A示出了根据本发明的一个或多个实施例的示例。具体而言,图11A对应于成功的PRTS请求。附接到缓存0(1100)的缓存代理发出请求,缓存1(1101)、缓存2(1102),以及缓存3(1103)是从属缓存。缓存2(1102)处于状态Q;其他从属缓存处于状态I或S。缓存2(1102)提供DataS数据包(指出处理器之间的状态是S),并被降级到状态S;当缓存0(1100)接收到DataS数据包时,数据被在状态Q安装。在此示例中,网关(1104)没有用于服务任何请求失败的资源,如此,网关返回Nack。由于PRTS请求是成功的,因此,随后不需要网关执行任何动作(1104)。
图11B示出了根据本发明的一个或多个实施例的示例。具体而言,图11B对应于不成功的PRTS请求。附接到缓存0(1100)的缓存代理发出请求,缓存1(1101)、缓存2(1102),以及缓存3(1103)是从属缓存。缓存2(1102)返回否定确认,因为它具有其自己的未决PRTS,该未决的PRTS已从缓存1(1101)获取缓存行,使缓存1(1101)中的缓存行保持在状态S。缓存0(1100)的PRTS在它不再是缓存行的供给者之后到达缓存1(1101)。缓存0(1100)的PRTS在DataS数据包到达之前到达缓存2(1102)。来自不同的缓存代理的对同一个缓存行的请求之间的这样的竞争是不可避免的,因为没有对于同一个缓存行的请求的序列化点。尽管缺乏这种序列化,对等协议在缓存之间保持一致性,即使它不保证向前进展。
图11C示出了根据本发明的一个或多个实施例的示例。图11C基本上是对应于图11B的时间线。与在代理之间传递的消息一起,示出了每一代理(即,缓存0(1100)、缓存1(1101)、缓存2(1102)、缓存3(1103),以及网关(1104)的时间线。可以看出,缓存2(1102)赢得与供给者缓存1(1101)的竞争。当请求正在未决时(用中断的时间线表示)接收到的PRTS请求也可以看出导致否定确认。
图12示出了根据本发明的一个或多个实施例的流程图。图12所示出的过程可以,例如,由请求者缓存代理在广播P2P回写(PWB)请求时执行。图12所示出的步骤的序列在本发明的各实施例之间可不同,步骤中的一个或多个可以并行地执行和/或可以是可选的。
一开始,标识PWB请求的触发(步骤1202)。PWB请求是将缓存行的所有权转移到从属缓存的请求。因此,触发可以是由与请求者缓存代理相关联的处理器核所发出的指令。在图3的表(300)中讨论了对于P2P请求的触发。
在步骤1204中,确定P2P请求是否已经对于对应于缓存行的存储器地址是未决的。在本发明的一个或多个实施例中,可以通过基于存储器地址来搜索请求者缓存代理的请求表,标识对存储器地址的现有的P2P请求。当确定没有对于存储器地址的P2P请求是未决的时,进程前进到步骤1206。否则,进程结束。
在步骤1206中,确定缓存是否对于PWB请求在准许的状态保持缓存行。在本发明的一个或多个实施例中,缓存必须在状态M、D、O、E、X,或Q保持缓存行,以发出PWB请求。当确定在准许的状态保持缓存行时,进程前进到步骤1208。否则,进程结束。
在步骤1208中,生成并广播对应于存储器地址的PWB请求。在本发明的一个或多个实施例中,生成PWB请求包括为PWB请求生成TID。PWB请求可以对应于包括TID、P2P请求的类型,以及用于标识存储器地址的设置和标记字段的数据包(例如,上文参考图4所讨论的P2P请求数据包(401))。此外,P2P请求可以在操作地连接多个缓存代理的物理网络(例如,环形网络(180))上广播。
在步骤1210中,PWB请求被记录(即,写日志)在请求者缓存的请求表(例如,请求表(104))中。具体而言,通过TID索引的请求表中的条目被利用PWB请求的状态(例如,空闲、活动、失败等等)、与PWB请求相关联的存储器地址、由缓存代理响应于PWB请求(下面所讨论的)接收到的任何响应,以及PWB请求的TID来填充。
在步骤1212中,由请求者缓存代理接收对来自从属缓存代理的P2P请求的响应。响应可以对应于标识该响应的类型、PWB请求的TID、由作出响应的从属缓存代理所创建的并标识作出响应的从属缓存代理的分配者TID字段的数据包(例如,上文参考图4所讨论的响应数据包(415))。在本发明的一个或多个实施例中,当响应是WBAck时,分配者TID字段的值被称为WBAckID。在本发明的一个或多个实施例中,当响应是WBPull时,分配者TID字段的值被称为WBPullID。响应可以被记录(即,写日志)在通过TID索引的请求者表的条目中。
在步骤1214中,确定接收到的响应是否是WBAck或WBPull。当确定接收到的响应是WBAck或WBPull时,进程前进到步骤1216。否则,进程前进到步骤1220。
在步骤1216中,基于请求者缓存中的缓存行的状态,数据包被直接发送(即,不是广播)到从属缓存,然后,使请求者缓存中的缓存行降级。图13示出了带有根据接收到的响应(即,步骤1212)和请求者缓存中的缓存行的现有状态发送的数据包的类型的表(1300)。如图13所示,如果响应是WBAck,请求者缓存中的缓存行的现有状态是Q,则带有AckS的数据包被发送到从属缓存。类似地,如果响应是WBPull,请求者缓存中的缓存行的现有状态是E或X,则带有DataE的数据包被发送到从属缓存。任何发送的数据包都携带在接收到的响应中发现的分配者TID(即,步骤1212)。此外,如图13所示,请求者缓存中的缓存行被降级到状态I。
在本发明的一个或多个实施例中,为避免死锁,从缓存代理发送对WBPull/WBAck的响应不能等待从其他缓存代理接收到对于PWB的响应。
回头参考图12,在步骤1220中,确定是否已接收到全部响应。当确定已经接收到全部响应时,进程前进到步骤1224。否则,进程返回到步骤1212。
在步骤1224中,现在完成PWB请求,对应于PWB请求的请求表中的条目可以被复位(即,状态被设置为完成,等等)。
图14示出了根据本发明的一个或多个实施例的流程图。图14所示出的过程可以,例如,由从属缓存代理响应于来自请求者缓存代理的传入的PWB请求来执行。图14所示出的步骤的序列在本发明的各实施例之间可不同,步骤中的一个或多个可以并行地执行和/或可以是可选的。
一开始,对应于存储器地址的PWB请求由从属缓存代理接收(步骤1402)。PWB请求可以由请求者缓存代理在物理网络(例如,环形网络(180),上文参考图1所讨论的)上广播。此外,PWB请求可以对应于标识请求的类型、与PWB请求相关联的TID,以及用于标识缓存行以及与PWB请求相关联的对应的存储器地址的设置和标记字段的数据包(例如,上文参考图4所讨论的P2P请求数据包(401))。
在步骤1404中,确定P2P请求是否已经对于存储器地址是未决的。在本发明的一个或多个实施例中,通过基于存储器地址来搜索从属缓存代理的请求表(例如,上文参考图1所讨论的请求表(104)),来确定未决的P2P请求的存在。当确定对于存储器地址存在未决的P2P请求时,进程前进到步骤1406。然而,当确定没有对于存储器地址的未决的P2P请求时,进程前进到步骤1408。
在步骤1408中,确定从属缓存是否缓存行保持在供给者状态。当确定从属缓存在供给者状态保持缓存行时,进程前进到步骤1406。当确定从属缓存在共享或无效状态(即,不是供给者状态)保持缓存行时,进程前进到步骤1410。
在步骤1410中,激活对应于PWB请求的从属缓存代理的回写表(例如,上文参考图1所讨论的回写表(106))中的空闲条目。该条目记录(即,写日志)来自请求者缓存的PWB请求。该条目包括回写以及对应于回写的存储器地址的状态(即,活动或不活动)。
在步骤1412中,确定从属缓存是否在共享状态保持缓存行。当确定从属缓存在供给者状态保持缓存行时,进程前进到步骤1414。然而,当确定从属缓存将缓存行保持在无效状态时,进程前进到步骤1420。
在步骤1414中,作为对PWB请求的响应,向请求者缓存代理发出回写肯定确认(WBAck)。发出的响应可以对应于标识响应的类型以及与接收到的PWB请求相关联的TID的响应数据包(例如,响应数据包(415))。在本发明的一个或多个实施例中,发出的响应还包括由从属缓存代理响应于从属缓存在共享状态保持缓存行所生成的WBAck标识(ID)。WBAckID标识从属缓存/代理。
在步骤1416中,从请求者缓存代理接收数据包。在本发明的一个或多个实施例中,数据包是带有处理器之间的状态(例如,AckM、AckO、AckE、AckS)的肯定确认。数据包包括前面由从属缓存代理所生成的WBAckID。在本发明的一个或多个实施例中,数据包是NAck(未示出)。在这样的实施例中,进程结束,而不访问步骤1418。
在步骤1418中,基于接收到的数据包,设置缓存行的状态。具体而言,缓存行的状态被设置为接收到的数据包中所标识的处理器之间的状态。
如上文所讨论的,当确定从属缓存在无效状态保持缓存行时,进程到达步骤1420。在步骤1420中,作为对PWB请求的响应,向请求者缓存代理发出回写拉请求(WBPull)。发出的响应可以对应于标识响应的类型以及与接收到的PWB请求相关联的TID的响应数据包(例如,响应数据包(415))。在本发明的一个或多个实施例中,发出的响应还包括由从属缓存代理响应于从属缓存在无效状态保持缓存行所生成的WBPull标识(ID)。WBPullID标识从属缓存/代理。
在步骤1422中,从请求者缓存代理接收数据包。在本发明的一个或多个实施例中,数据包包括带有处理器之间的状态(例如,DataM、DataO、DataE、DataS)的数据(即,来自请求者缓存的缓存行)。数据包包括前面由从属缓存代理所生成的WBPullID。在步骤1424中,缓存行用从数据包提取的数据填充。在本发明的一个或多个实施例中,数据包是NAck(未示出)。在这样的实施例中,进程结束,而不访问步骤1424或步骤1418。
如上文所讨论的,当存在对地址的未决的P2P请求时,进程到达步骤1406。在步骤1406中,发出类型“否定确认”(NAck)的响应。响应包括传入的PWB请求的TID。然后,进程结束。
图15A示出了根据本发明的一个或多个实施例的示例。具体而言,图15A对应于成功的PWB请求。附接到缓存0(1500)的缓存代理发出请求,缓存1(1501)、缓存2(1502),以及缓存3(1503)是从属缓存。由于缓存1(1501)在状态S保持缓存行,它以WBAck应答,并以在状态O接受缓存行结束。不需要传输数据,因为缓存行数据已经存在。缓存2(1502)不保留缓存行,但是可以接受它,如此,它以WBPull应答。然而,缓存0(1500)否定地确认WBPull,因为它选择缓存1(1501)以接受回写。缓存3(1503)不保留缓存行,并且不能接受它,如此,它否定地确认PWB。网关(1504)处理不需要到处理器上的其他缓存的进一步广播。
图15B示出了根据本发明的一个或多个实施例的示例。图15B基本上与图15A相同,只是缓存0(1500)选择缓存2(1502)接受数据。由于缓存2(1502)不保留缓存行的副本,因此,必须传输数据以完成回写。
图15C示出了根据本发明的一个或多个实施例的示例。具体而言,图15C示出了由于另一个缓存代理的请求而使PWB成功的示例。在缓存0(1500)发送PWB之后,但是在从网关接收到WBPull之前,缓存0(1500)接收PRTS请求。它将数据提供到缓存2(1502),如此丢失其供给者状态;缓存0(1500)立即悄悄地使其本身降级到状态I。它向网关发送指出不需要网关服务回写的否定确认。
本发明的各实施例具有下列优点中的一个或多个:同一个处理器上缓存之间的快速缓存到缓存的传输;维护一致性的缓存之间的低延迟P2P广播事务,尽管在发生事务之间冲突时不保证转发的进度;以及,对处理器之间的一致性协议显得统一的缓存。
本发明的各实施例可以在几乎任何类型的计算机上实现,不管所使用的平台如何。例如,如图16所示,计算机***(1600)包括一个或多个硬件处理器(1602)、相关联的存储器(1604)(例如,随机存取存储器(RAM)、高速缓冲存储器、闪存等等)、存储设备(1606)(例如,硬盘、诸如光盘驱动器或数字视盘(DVD)驱动器之类的光驱动器,闪存棒等等),以及当今的计算机典型的很多其他元件以及功能(未示出)。计算机***(1600)还可以包括诸如键盘(1608)、鼠标(1610),或麦克风(未示出)之类的输入装置。此外,计算机***(1600)可以包括诸如监视器(1612)(例如,液晶显示器(LCD)、等离子显示器,或阴极射线管(CRT)监视器)之类的输出装置。计算机***(1600)可以通过网络接口连接(未示出)连接到网络(1614)(例如,局域网(LAN)、诸如因特网之类的广域网(WAN),或任何其他类型的网络)。在本发明的一个或多个实施例中,存在许多不同类型的计算机***,并且如前所述的输入和输出装置可以呈现其他形式。一般而言,计算机***(1600)包括实施本发明的各实施例所需的至少最小的处理、输入,和/或输出装置。
此外,在本发明的一个或多个实施例中,如前所述的计算机***(1600)的一个或多个元件可以位于远程位置,并通过网络连接到其他元件。此外,本发明的各实施例可以在具有多个节点的分布式***上实现,其中,本发明的每一部分(例如,数据结构、转换器模块、布局引擎)都可以位于分布式***内的不同的节点中。在本发明的一个实施例中,节点对应于计算机***。作为替代地,节点可以对应于带有相关联的物理存储器的处理器。节点可以作为替代地对应于带有共享存储器和/或资源的处理器或处理器的微核。此外,执行本发明的各实施例的计算机可读取的程序代码形式的软件指令可以临时或永久地存储在诸如压缩盘(CD)、磁盘、穿孔卡、磁带,存储器之类的非瞬时的计算机可读存储介质上,或任何其他计算机可读取的存储设备中。
尽管是参考数量有限的实施例来描述本发明的,但是,那些本领域技术人员在了解本发明的优点之后,将理解,也可以设计出不偏离如此处所公开的本发明的范围的其他实施例。相应地,本发明的范围只能由所附的权利要求来加以限制。

Claims (20)

1.一种用于管理缓存的方法,包括:
通过操作地连接到第一缓存的第一缓存代理并使用第一物理网络,广播对存储器地址的第一对等P2P请求;
通过操作地连接到第二缓存的第二缓存代理并使用第二物理网络,基于所述第一P2P请求的类型以及对应于所述存储器地址的所述第二缓存中的缓存行的状态,发出对所述第一P2P请求的第一响应;
通过操作地连接到第三缓存的第三缓存代理,发出对所述第一P2P请求的第二响应;以及
通过所述第一缓存代理并基于所述第一响应和所述第二响应,升级对应于所述存储器地址的所述第一缓存中的缓存行的状态。
2.如权利要求1所述的方法,还包括:
通过所述第一缓存代理并在广播所述第一P2P请求之前,对于所述第一P2P请求的类型,比较所述缓存行的状态和多个准许的状态;
通过所述第一缓存代理,生成标识所述第一缓存代理和所述第一P2P请求的事务标识TID;
通过所述第一缓存代理,在由所述TID索引的请求表的条目中记录所述存储器地址和所述第一P2P广播的类型,其中,所述第一P2P请求包括所述TID;以及
通过所述第二缓存代理并基于所述P2P请求的类型,修改对应于所述存储器地址的所述第二缓存中的所述缓存行的状态。
3.如权利要求2所述的方法,还包括:
通过所述第一缓存代理,从所述第一响应提取数据项;以及
通过所述第一缓存代理,利用所述数据项填充所述第一缓存中的所述缓存行的一部分,
其中,所述第二响应是包括所述TID的肯定确认。
4.如权利要求2所述的方法,其中,所述第一响应是包括处理器之间状态和所述TID的肯定确认Ack,其中,所述第一P2P请求的类型是升级请求。
5.如权利要求2所述的方法,其中,所述第三缓存包括在无效状态的对应于所述存储器地址的缓存行,其中,所述第二响应是包括所述TID的肯定确认Ack。
6.如权利要求2所述的方法,还包括:
通过所述第三缓存代理并在所述第一P2P请求由所述第三缓存代理接收到之前,使用所述第一物理网络广播对所述存储器地址的第二对等P2P请求;
通过所述第三缓存代理并响应于所述第一P2P请求,标识所述第三缓存代理的请求表中的所述第二P2P请求的未决状态,
其中,所述第二响应是响应于标识所述未决状态的包括所述TID的否定确认NAck,以及
其中,所述第三缓存包括在供给者状态的对应于所述存储器地址的缓存行。
7.如权利要求1所述的方法,其中,所述第一缓存代理、所述第二缓存代理、所述第三缓存代理、所述第一物理网络,以及所述第二物理网络位于处理器上。
8.一种用于管理缓存的方法,包括:
通过操作地连接到第一缓存的第一缓存代理并使用第一物理网络,广播对存储器地址的对等P2P回写请求;
通过操作地连接到第二缓存的第二缓存代理并响应于所述P2P回写请求,标识所述第二缓存中的对应于所述存储器地址的缓存行的共享状态;
通过所述第二缓存代理并响应于标识所述共享状态,使用第二物理网络向所述第一缓存代理发出回写肯定确认WBAck;
通过操作地连接到第三缓存的第三缓存代理并响应于所述P2P回写请求,标识所述第三缓存中的对应于所述存储器地址的缓存行的无效状态;
通过所述第三缓存代理并响应于标识所述无效状态,向所述第一缓存代理发出回写拉WBPull请求;
通过所述第一缓存代理,将所述第一缓存中的对应于所述存储器地址的缓存行的状态传输到从包括所述第二缓存和所述第三缓存的组中选择的所选缓存;以及
将所述第一缓存中的所述缓存行降级。
9.如权利要求8所述的方法,进一步包括:
通过所述第一缓存代理生成标识所述第一缓存代理和所述P2P回写请求的事务标识TID,其中,所述P2P回写请求包括所述TID;
通过所述第二缓存代理并响应于标识所述共享状态,生成标识所述第二缓存代理并对应于所述WBAck的WBAck标识WBAckID;以及
通过所述第二缓存代理在通过所述WBAckID索引的回写表的条目中记录所述存储器地址,
其中,所述WBAck包括所述TID和所述WBAckID。
10.如权利要求9所述的方法,其中,传输所述缓存行的所述状态包括:
通过所述第一缓存代理并向所述第二缓存代理发送包括处理器之间的状态和所述WBAckID的肯定确认Ack,其中,所述所选缓存是所述第二缓存;
通过所述第二缓存代理并响应于所述Ack,升级所述第二缓存中的对应于所述存储器地址的缓存行的状态;以及
通过所述第一缓存代理并向所述第三缓存代理发送否定确认NAck,
其中,所述WBPull请求是在传输所述缓存行的所述状态之后接收到的。
11.如权利要求8所述的方法,进一步包括:
通过所述第一缓存代理,生成标识所述第一缓存代理和所述P2P回写请求的事务标识TID,其中,所述P2P回写请求包括所述TID;
通过所述第三缓存代理并响应于标识所述无效状态,生成标识所述第三缓存代理并对应于所述WBPull请求的WBPull标识WBPullID;以及
通过所述第三缓存代理,在由所述WBPullID索引的回写表的条目中记录所述存储器地址,其中,所述WBPull请求包括所述TID和所述WBPullID。
12.如权利要求11所述的方法,其中,传输所述缓存行的所述状态包括:
通过所述第一缓存代理并向所述第三缓存代理发送所述第一缓存中的所述缓存行的值、处理器之间的状态、以及所述WBPullID,其中,所述所选缓存是所述第三缓存;
通过所述第三缓存代理,存储所述第三缓存中对应于所述存储器地址的所述缓存行中的值;
通过所述第三缓存代理升级所述第三缓存中的所述缓存行的状态;以及
通过所述第一缓存代理并向所述第二缓存代理发送否定确认NAck,
其中,所述WBAck是在传输所述缓存行的所述状态之后接收到的,并且
其中,所述所选缓存是所述第三缓存。
13.一种用于管理缓存的***,包括:
包括第一核、第二核,以及第三核的第一处理器;
位于所述第一处理器上的并与所述第一核相关联的第一缓存;
位于所述第一处理器上的并与所述第二核相关联的第二缓存;
位于所述第一处理器上的并与所述第三核相关联的第三缓存;
第一缓存代理,操作地连接到所述第一缓存并被配置成使用所述处理器上的第一物理网络广播对存储器地址的对等P2P请求;
第二缓存代理,操作地连接到所述第二缓存并被配置成使用所述处理器上的第二物理网络,基于所述P2P请求的类型和所述第二缓存中的对应于所述存储器地址的缓存行的状态,发出对所述P2P请求的第一响应;
第三缓存代理,操作地连接到所述第三缓存并被配置成使用所述第二物理网络发出对所述P2P请求的第二响应,
其中,所述第一缓存代理进一步被配置成基于所述第一响应和所述第二响应修改所述第一缓存中的对应于所述存储器地址的缓存行的状态。
14.如权利要求13所述的***,还包括:
位于所述第一处理器上的多个网关,
其中,所述多个网关中的至少一个被配置成响应于所述P2P请求而联络第二处理器,
其中,所述第一物理网络是操作地连接所述第一缓存代理、所述第二缓存代理、所述第三缓存代理、以及所述多个网关的环形网络。
15.如权利要求13所述的***,其中,所述第一缓存代理包括:
请求表,具有记录所述P2P请求的类型和所述存储器地址、并通过事务标识TID索引的条目,
其中,所述P2P请求包括所述TID,以及
其中,所述第一响应包括所述TID。
16.如权利要求15所述的***,其中,所述第一响应是回写拉WBPull请求,其中,所述第二缓存代理包括:
回写表,具有记录所述存储器地址并通过WBPull标识WBPullID索引的条目,
其中,所述第一响应还包括所述WBPullID,以及
其中,所述第一缓存代理进一步被配置成向所述第二缓存代理发送所述第一缓存中的所述缓存行的值、处理器之间的状态、以及所述WBPullID。
17.如权利要求15所述的***,其中,所述第二响应是回写肯定确认WBAck,其中,所述第三缓存代理包括:
回写表,具有记录所述存储器地址并通过WBAck标识WBAckID索引的条目,
其中,所述第二响应包括所述WBAckID,并且
其中,所述第一缓存代理进一步被配置成向所述第三缓存代理发送包括处理器之间的状态和所述WBAckID的肯定确认Ack。
18.如权利要求15所述的***,其中,所述第一缓存代理进一步被配置成从所述第一响应提取数据项,并利用所述数据项填充所述第一缓存中的所述缓存行的一部分。
19.如权利要求15所述的***,其中,所述第一响应是包括处理器之间的状态和所述TID的肯定确认Ack,其中,所述P2P请求的类型是升级请求。
20.如权利要求15所述的***,其中,所述第三缓存包括在无效状态的对应于所述存储器地址的缓存行,并且其中,所述第二响应是包括所述TID的肯定确认Ack。
CN2012800017783A 2011-02-17 2012-02-07 用于缓存的网络的广播协议 Pending CN102959529A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/030,006 2011-02-17
US13/030,006 US8756378B2 (en) 2011-02-17 2011-02-17 Broadcast protocol for a network of caches
PCT/US2012/024056 WO2012112335A1 (en) 2011-02-17 2012-02-07 Broadcast protocol for a network of caches

Publications (1)

Publication Number Publication Date
CN102959529A true CN102959529A (zh) 2013-03-06

Family

ID=46653716

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2012800017783A Pending CN102959529A (zh) 2011-02-17 2012-02-07 用于缓存的网络的广播协议

Country Status (4)

Country Link
US (1) US8756378B2 (zh)
EP (1) EP2676203B1 (zh)
CN (1) CN102959529A (zh)
WO (1) WO2012112335A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106104499A (zh) * 2014-06-02 2016-11-09 美光科技公司 高速缓冲存储器架构

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101831550B1 (ko) * 2012-10-22 2018-02-22 인텔 코포레이션 다중슬롯 링크 계층 플릿에서의 제어 메시징
US10268583B2 (en) * 2012-10-22 2019-04-23 Intel Corporation High performance interconnect coherence protocol resolving conflict based on home transaction identifier different from requester transaction identifier
US8972663B2 (en) * 2013-03-14 2015-03-03 Oracle International Corporation Broadcast cache coherence on partially-ordered network
US11354309B2 (en) * 2017-09-14 2022-06-07 Sony Corporation Information processing apparatus and information processing method
IT202000018331A1 (it) 2020-07-28 2022-01-28 Koyre S R L Sistema di rilevamento delle sollecitazioni in una struttura flessibile bidimensionale

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7600080B1 (en) * 2006-09-22 2009-10-06 Intel Corporation Avoiding deadlocks in a multiprocessor system

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5297269A (en) * 1990-04-26 1994-03-22 Digital Equipment Company Cache coherency protocol for multi processor computer system
US5655100A (en) * 1995-03-31 1997-08-05 Sun Microsystems, Inc. Transaction activation processor for controlling memory transaction execution in a packet switched cache coherent multiprocessor system
US5893160A (en) * 1996-04-08 1999-04-06 Sun Microsystems, Inc. Deterministic distributed multi-cache coherence method and system
US5909540A (en) 1996-11-22 1999-06-01 Mangosoft Corporation System and method for providing highly available data storage using globally addressable memory
US8274518B2 (en) 2004-12-30 2012-09-25 Microsoft Corporation Systems and methods for virtualizing graphics subsystems

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7600080B1 (en) * 2006-09-22 2009-10-06 Intel Corporation Avoiding deadlocks in a multiprocessor system

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106104499A (zh) * 2014-06-02 2016-11-09 美光科技公司 高速缓冲存储器架构
US10303613B2 (en) 2014-06-02 2019-05-28 Micron Technology, Inc. Cache architecture for comparing data
CN106104499B (zh) * 2014-06-02 2019-07-19 美光科技公司 存储器设备及用于操作高速缓冲存储器的方法
US11243889B2 (en) 2014-06-02 2022-02-08 Micron Technology, Inc. Cache architecture for comparing data on a single page

Also Published As

Publication number Publication date
WO2012112335A1 (en) 2012-08-23
US20120215987A1 (en) 2012-08-23
EP2676203A4 (en) 2014-09-17
EP2676203A1 (en) 2013-12-25
US8756378B2 (en) 2014-06-17
EP2676203B1 (en) 2018-01-10

Similar Documents

Publication Publication Date Title
JP5006348B2 (ja) 応答出力キャッシュに対するマルチキャッシュ協調
CN1157659C (zh) 非均匀存储器访问数据处理***及其通信方法
CN101604295B (zh) 优化基于目录的一致性协议中的并发访问
CN100468365C (zh) 高速缓存相干协议的推测分布式冲突解决方法和装置
CN103885895A (zh) 容错集群存储***中的写入性能
US8788760B2 (en) Adaptive caching of data
TWI463318B (zh) 快取一致性處理系統、快取記憶體,及其方法
CN101127009B (zh) 供多处理器***中的高速缓存一致性中使用的转发状态
CN101625664B (zh) 满足部分写和非监听存取之间的存储器排序要求
CN102209104B (zh) 减小通信协议中的分组大小
US7913048B2 (en) Data subscribe-and-publish mechanisms and methods for producer-consumer pre-fetch communications
CN102959529A (zh) 用于缓存的网络的广播协议
CN102214120B (zh) 处理非相干设备的原子操作
CN110045912A (zh) 数据处理方法和装置
CN103917963A (zh) 基于快速持久性存储器的回写储存器高速缓存
CN109992566A (zh) 一种文件访问方法、装置、设备及可读存储介质
CN112106032A (zh) I/o主设备和cpu之间优化数据共享的有序写存储的高性能流
CN112596801B (zh) 事务处理方法、装置、设备、存储介质、数据库
CN107368435A (zh) 一种精简目录及利用该精简目录实现Cache一致性监听的方法
CN1829988A (zh) 无共享数据库***中的单相提交
US20140164324A1 (en) Utilization of data structures to synchronize copies of a resource
US7996614B2 (en) Cache intervention on a separate data bus when on-chip bus has separate read and write data busses
US8127079B2 (en) Intelligent cache injection
US8516199B2 (en) Bandwidth-efficient directory-based coherence protocol
US9460013B2 (en) Method and system for removal of a cache agent

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
AD01 Patent right deemed abandoned

Effective date of abandoning: 20170208

C20 Patent right or utility model deemed to be abandoned or is abandoned