CN101604295B - 优化基于目录的一致性协议中的并发访问 - Google Patents

优化基于目录的一致性协议中的并发访问 Download PDF

Info

Publication number
CN101604295B
CN101604295B CN2009101462030A CN200910146203A CN101604295B CN 101604295 B CN101604295 B CN 101604295B CN 2009101462030 A CN2009101462030 A CN 2009101462030A CN 200910146203 A CN200910146203 A CN 200910146203A CN 101604295 B CN101604295 B CN 101604295B
Authority
CN
China
Prior art keywords
cache
request
catalogue
message
cache proxy
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
CN2009101462030A
Other languages
English (en)
Other versions
CN101604295A (zh
Inventor
H·泰瑞
A·库玛
S·朴
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 CN101604295A publication Critical patent/CN101604295A/zh
Application granted granted Critical
Publication of CN101604295B publication Critical patent/CN101604295B/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/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/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • 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

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

优化基于目录的一致性协议中的并发访问
背景
许多计算系统包括多个处理器以及与I/O和存储设备接口的输入/输出(I/O)代理,且还包括可以是用于多个处理器的一致高速缓存的一致存储器。因为一个或多个高速缓存经常被包括在这多个处理器中,所以一致高速缓存意味着处理器与可请求访问高速缓存的其它代理(例如,其它处理器或I/O代理)共享其高速缓存。
当计算系统包括多个一致性高速缓冲存储器以及如多个处理器和I/O代理之类的多个请求代理时,在两个代理同时请求访问高速缓存线时发生冲突。为缓解该问题,在多个请求代理之间仲裁对特定高速缓存线的访问的系统通常使用高速缓存一致性协议来完成。时常地,诸如目录之类的中心实体被用来通过存储指示存在于高速缓冲存储器的一个或多个中的各种高速缓存线的位置和状态的条目来维持高速缓存一致性。高速缓存一致性算法定义对同一存储器位置的读和写的行为。如果满足以下情况,则获得高速缓存的一致性,这些情况为:(1)在处理器P对X进行的写之后由该同一处理器P对位置X进行的读在由P进行的读和写指令之间没有发生另一处理器对X进行的写的情况下必需总是返回由P写入的值;(2)在另一处理器P2对X进行的写之后由处理器P1对位置X进行的读在两次访问之间没有发生由任何处理器对X进行的其它写的情况下必需返回由P2所进行的写入的值;以及(3)在由另一处理器P2对X进行的写之后由处理器P1对位置X进行的读在两次访问之间没有发生由任何处理器对X进行的其它写的情况下必需返回由P2所进行的写入的值。
然而,随着计算系统中的高速缓存和/或请求代理的数目的增大时,维持高速缓存一致性的复杂度以及在这些代理之间所需的消息数目也因为高速缓存一致性协议必需适应于新按比例缩放的计算系统而增大。更进一步地,为维持一致性,必需发送增加数目的消息,这增加了互连上的通信量、减小了用于其它通信的带宽、并且还导致回复对数据的请求时的等待时间。
附图简述
图1是根据本发明一个实施例的系统的一部分的框图。
图2是根据本发明一个实施例的协议处理的流程图。
图3是根据本发明一个实施例的输出序列发生器的框图。
图4是根据本发明一个实施例的输入路径结构的框图。
图5是根据本发明一个实施例的目录的框图。
图6是根据本发明一个实施例的方法的流程图。
图7是根据本发明一个实施例的系统的框图。
详细描述
在各实施例中,耦合各系统代理的系统的低层互连的特性可被用来提高用于高速缓存一致性的目录处的消息处理的并发性,减小互连上的带宽并且降低在系统的每一单独核处的未命中处理的总的等待时间。
现在参考图1,所示出的是根据本发明一个实施例的系统的一部分的框图。如图1中所示,系统10包括多个高速缓存代理C1-C3。每个这种高速缓存代理可包括或具有对高速缓冲存储器的访问,并且在各个实施例中可以是处理器插座、核、或者包括或关联于高速缓冲存储器的其它这种处理单元。高速缓存代理C1-C3的每一个经由可以是环形互连的互连20耦合。如图1的实现中所示,环形互连20可包括分别用于传送请求、响应和数据分组的三个独立消息路径,虽然本发明的范围在这一方面不受限制。
除了高速缓存代理之外,如图1中所示地,存在目录D。目录D可以是管理高速缓存一致性协议并且允许对存储在各个高速缓存代理C1-C3中的信息的一致访问的归属代理或其它单元的一部分。例如,目录D可包括在各个条目中存储关于存储在高速缓存代理C1-C3中的高速缓存线的位置以及它们的状态的信息的表。在一些实施例中,当所请求数据不存在于高速缓存代理的任何一个中时,归属代理还可被用来访问主存储器。
因而,在高速缓存代理寻求独占地访问数据或共享访问时,它可将诸如对独占所有权(RdO)的请求、或者对共享数据(RdS)的请求之类的请求发送到目录D以获得所请求数据。如以下将进一步描述的,系统10可实现高速缓存一致性协议,在该协议中某些确认消息可在相应数据消息由转发高速缓存代理发送给请求者之后(例如,高速缓存到高速缓存转发消息)被发送到目录D,以使可在互连20上实现减小的带宽和等待时间。注意,对于图1的环形互连架构,可假设在环形互连20上的任何源-目的地对之间不存在排序,然而未被弹回的消息(即,数据和响应消息)可被假设为在用于同一消息类的任何两个高速缓存代理之间按序递送。
如以下将进一步描述地,目录D可包括阵列,该阵列包括存储在系统10的各个高速缓存中的信息的元数据。更进一步地,目录D可包括一个或多个队列来保持待决请求,这既有已被处理的请求,也有由于冲突或其它原因仍不能被处理的待决请求。虽然本发明的范围在这一点上不受限制,但是在一些实现中高速缓存一致性协议可使用MESI(修改、独占、共享、无效)或者MESIF(修改、独占、共享、无效、转发)协议来实现。
现在考虑当前被高速缓存代理C2保持在M状态中的高速缓存代理C1对高速缓存块(例如,A1)的读所有权(RFO)请求的事务。还假设C3也对同一高速缓存块做出了RFO请求并且该请求在C2的请求已被完全处理之前到达目录D。换言之,该第二请求是同一数据的并发请求。
具有纯私有高速缓存的消息流以下在图2中示出,图2是根据本发明的一个实施例的协议处理的流程图。目录将对高速缓存块的待决并发请求保持在队列中,并且以到达的先进先出(FIFO)顺序对它们进行服务。图2还示出在每一高速缓存代理和目录处进行的状态转移。在图2中所示的各种消息的名称(RdO、FwdO等)是助记符号,并且可在不同实现中具有不同的标记。通常这些名称包括消息类型缩写(例如,读(Rd)、转发(Fwd)等),以及所请求的高速缓存状态(从高速缓存代理到目录),所请求的转发状态(从目录到所监听的高速缓存)、或者转移高速缓存状态(从高速缓存到高速缓存、或者从目录到高速缓存)缩写(例如,MESI之一)。
如图2中所示,在初始时,高速缓存代理C1-C3具有以下状态:C1和C3处于无效(I)状态并且C2处于修改(M)状态,这指示高速缓存代理C2独占地保持数据的唯一有效副本。因而目录D指示C2保持有效数据的独占副本。如图2中所示,高速缓存代理C1将针对该数据的请求发送到目录D,即独占所有权(RdO)的读请求。在接收该请求之后,目录D可在其表中查找相应条目以确定数据的有效独占副本在高速缓存代理C2中。因而目录D将监听请求(例如,转发请求(即,FwdO))发送到高速缓存代理C2。注意,高速缓存代理C3此后对同一数据作出类似请求,并且因而高速缓存代理C1和C3寻求对同一数据的并发访问。因此,在时间A,目录D将来自高速缓存代理C3的请求存储到请求FIFO对列。
仍然参考图2,当高速缓存代理C2从目录D接收到转发请求时,它使高速缓存线的其副本无效并且将所请求数据直接发送到高速缓存代理C1作为对监听请求的响应。数据消息包含由响应高速缓存修改的实际数据,并且消息类型助记符号(即,DataM)指示接收高速缓存C1应转移到的MESI状态(即,M)。注意,高速缓存代理C2不将完成(CMP)响应发送回目录D,直到在它将所请求数据发到高速缓存代理C1之后。如在图2中可见,当该完成信息在目录D处接收时,来自高速缓存C3的请求可在时间C出队。时间B”到C反映目录必需等待的时间量(可以是零),以确保高速缓存代理C1在来自目录的监听消息(FwdO)之前的至少一个周期看见数据消息(DataM)。因为采取无缓冲环形互连假设作为底层互连,所以该时间可由环上的任何代理精确地计算。此时目录D可将监听请求(即,转发请求(FwdO))发送到高速缓存代理C1,以使所请求数据可被转发到高速缓存代理C3。
仍参考图2,响应于该请求,高速缓存代理C1可将包括所请求的数据的、对监听请求的响应(例如,数据消息(DataM))发送到高速缓存代理C3,并且此后将完成(CMP)消息发回目录D。此时,根据用于一致性协议的标准规则,高速缓存代理C1将使该高速缓存线的其副本无效(I)。因而在图2中所示的处理结束之后,高速缓存代理C1和C2包括该线的无效副本,而该线的所修改的有效副本存在于高速缓存代理C3中,如由相应的目录条目所指示的。
由于图2中所示的协议处理,可避免否则将需要被发送的各种其它一致性协议消息。例如,代替以上所述的流程,如果要求完成消息在D可开始任何排队的请求的处理之前被发送到目录D,则将导致互连上的附加消息以及浪费的带宽。更进一步地,当来自高速缓存C3的并发请求被排队在目录D中时,导致更大的等待时间。即,在各个实施例中,在时间B之后到达高速缓存代理C1的任何转发消息可由高速缓存代理C1处理,而不需要从高速缓存代理C1回到目录D的中间完成消息。此外,诸如图1中的无缓冲环的消息特性的知识可被利用以精确地估计在环形互连20上的两个代理之间的消息穿越时间。
因而在各个实施例中,高速缓存代理被控制以使它总是在其首先将监听响应(例如,数据消息)注入到请求者之后将对监听请求的完成消息注回到环形互连上的目录。这样,目录可以然后在最小和预定的时间延迟之后将对并发请求的监听请求注入到环形互连,该时间延迟可以是零个或更多的周期。该时间延迟可以至少部分地基于来自高速缓存代理的完成消息的到达以及请求高速缓存代理、转发高速缓存代理以及目录D的相对位置来计算。
在一个实施例中,假设单向环(该算法对于双向环也成立,以下所描述的持续时间计算可被修改),以及针对不同拓扑参数的以下值:
从第二请求者(C2)到目录的路程段的数目=N;
从第一请求者(C1)到目录的路程段的数目=M;
从C1到C2的路程段的数目=P;
环停留点(ring stop)之间的延迟(即,环消息从一个路程段移动到另一个路程段所花的以周期计算的时间)=D;以及
在完成消息到达之后目录在向C1发起转发请求之前必需等待的时间(以周期计算)=T。
以下等式可被用在一个实施例中:
T=(P-N-M+1)*D[等式1]
额外周期(即,“+1”)确保来自目录的转发请求在数据消息已被代理接收之后的至少一个周期到达高速缓存代理(C1)。计算假设数据和完成消息在同一周期中被注入到环停留点,并且数据消息在完成消息之前被注入。在一些情况下,T可以小于零,在该情况下目录可将转发请求直接注入目的为C1的环。
注意该分析对所有高速缓存代理做出以下假设:(1)当转发请求被任何高速缓存代理接收时,该高速缓存代理在向目录发送响应之前首先将所转发的数据和状态放入请求者。这两个消息可在同一周期中注入,但是完成消息决不能在数据消息被注入数据环之前被注入;(2)从环停留点到同一环停留点上的协议代理的消息按照到达环停留点的顺序由协议代理处理;(3)来自在该环停留点的协议代理的目的为环停留点的消息按照它们由协议代理生成的顺序被注入;(4)对于响应和数据消息通道没有弹回(即,在高速缓存代理做请求之前缓冲器被预保留);(5)在用于响应和数据消息的任何两个环停留点之间的消息传递的持续时间可由无缓冲环上的所有代理精确预测;以及(6)等式1对所有分组采取相同的大小。注意对于不同大小的分组,持续时间计算可被修改以适应分组大小。
在一个实现中,除了显著减少对同一地址(冲突的或其它)的并发访问所花费的时间之外,至少一个消息可在一致性协议流中被消除。这种协议还可显著降低障栅同步的等待时间,其中多个代理以并发方式竞争同一高速缓存的所有权。
为量化在用于高速缓存到高速缓存转发情况的本发明的实施例中获得的等待时间减少,可检查所有线程参与的障栅同步处理所花费的时间量。障栅同步是线程在“同步”点等待直到组中的所有其它成员到达该同一同步点的机制,此时所有线程从障栅被“释放”并且继续正常处理。在障栅同步处理中,每一线程在到达障栅之后,将障栅数递增一、检查障栅的值以察看是否所有线程已到达障栅,否则进入忙碌等待状态。为保持量化简单,假设障栅同步高速缓存块在M状态中活动而没有介入S状态。
假设分组穿行整个环的总时间是T个周期,并且采用将任何分组的最大等待时间有效地减少为T/2个周期、且所有代理均匀地随机分布在环上的双向环,则以下等式表达使一个代理获得并更新同步变量的等待时间。具体地,记得通常情况中的目录在接受对同一地址的第二请求之前将不得不等待平均T/8个周期,完成请求的处理的以周期计算的等待时间如下:
等待时间=(T/4+T/4+T/4+T/8)=7T/8个周期[等式2]
注意,该等待时间减少按照对冲突地址的请求处理在根据常规方法处理之前不得不等待的时间量(即,T个周期)来表达。类似地,对于处理一对并发请求的常规方法,所采用的以周期计算的时间是:
等待时间=2*T个周期
相反,根据本发明的一个实施例,总的等待时间可如下得到。对于最佳情况,来自目录的FwdO消息将在请求者已接收到数据之后的正好一个周期到达。假设协议处理开销在两种情况中是相同的,并且因此可被忽略:
等待时间=(T/4+T/4+T/4)+1+T/4=T+1个周期[最佳情况][等式3]
对于最差情况,假设监听消息在它已看见数据之后花费T/4个周期到达请求者。在这种情况下,等待时间是:
等待时间=(T/4+T/4+T/4)+(T/4+T/4)=5T/4个周期[最差情况][等式4]
因此在通常情况中,可证明在高速缓存代理C1已看见所转发的数据之后其对于监听所观察到的延迟将是~T/8个周期。因此,在通常情况下,有两个线程参与(假设第二线程的请求在第一线程的请求已被完全处理之前到达)的障栅同步的等待时间可由以下等式表达:
总的等待时间=(3T/4)+(T/8+T/4)[通常情况,对于2个线程,障栅同步]
=3T/4+3T/8=9T/8个周期。[等式5]
等式5因而是对于并发访问的总时间减少的通用等式,其中X个访问在对同一事务当前有至少一个事务待决的情况下到达。注意,所有X个访问在第一事务已完成之前到达是不必要的,只要在事务(从第二个往前)到达时,有事务当前在进行中。这通常是在障栅同步中的情况,尤其是对于具有许多核的大规模系统。
综上所述,由于不同代理对同一高速缓存块的并发访问而对在目录处待决的事务所观察到的等待时间减少可大约=(T-7T/8)=T/8个周期。更进一步地,假设X个紧接着的访问、且每一个(除了第一个)在当前有事务在进行中时到达目录,则完成对目录处的同一地址的并发访问的总等待时间为3T/4+X*(3T/8)。因此,与常规方法相比总的系统等待时间中的减少是T/4+X*5T/8。
基于所有事务都涉及高速缓存到高速缓存转移的假设,在确认环上的带宽的减小可通过观察在常规情况中必需有两个消息、并且根据一个实施例,在该通道上仅有一个消息来计算。因此,假设所有事务都是高速缓存到高速缓存转移,则在确认环上的带宽的减小为50%。
各实施例因而通过减少花费在目录处排队的时间、并且减少完成与获得高速缓存块相关联的一致性操作所必需的消息的数目来改进对同一高速缓存块的并发请求的等待时间。因而这既是等待时间减少又是带宽节省技术。各实施例可在目录使用定时器来精确地确定何时保证特定代理已从对等高速缓存接收到所转发的消息。此外,各实施例可使用硬件支持来确保消息的排序。
各实施例因而减少在无重试的基于目录的一致性协议中的对同一高速缓存块的并发一致性操作所花费的时间。这些操作进行频繁障栅同步的在多线程识别、挖掘和综合(RMS)工作负荷中相当常见。各实施例因而利用了底层互连的特性来减少在一致性操作中的等待时间和消息数。
在各实施例中,可提供某些硬件结构来确保对于协议引擎(PE)环接口处的监听响应以及对于完成消息的跨消息类(例如,相应和数据)的排序。一种机制可以是对所有高速缓存代理处的所有消息类(请求、响应和数据)具有单个先进先出(FIFO)结构,但是这些实现将对性能有害。
因而在其它各实施例中,可提供协议引擎与环代理之间的组合逻辑。更具体地,该硬件结构可被定位在耦合在协议引擎与环停留点之间的响应队列与数据队列之间。该逻辑可阻止完成响应在对原始请求者的相应数据响应已被注入到无缓冲(BL)环之前被注入到确认(AK)环。该逻辑可取决于(一个或多个)单独队列的性质以及它们的排空特性来采用不同的形式。
在针对每一队列的FIFO实施例中,例如8比特标签(比FIFO队列中的条目数大得多)的标签可由协议引擎(响应生成实体)附连到监听响应和完成消息。然后比较器电路可被耦合在完成队列的头处。当完成响应到达队列的头时、且在它被注入到AK环之前,对照数据队列的头来检查该完成响应。如果数据队列中的头条目标签具有比完成条目中的标签低的值,则数据响应仍未被注入到BL环。另一方面,如果它具有相等或更高的值,则数据响应将被注入同一块周期中或已被注入到BL环。
现在参考图3,所示的是根据本发明的一个实施例的输出序列发生器的框图。如图3中所示,输出序列发生器200可被用来对从协议引擎210到由到环形互连的多个环的连接形成的环停留点的监听响应,这多个环例如是其上传递数据的无缓冲环245以及其上发送完成和其它此类确认消息的确认(AK)环255。
如图3中所示,协议引擎210可生成数据消息以及包括例如8比特标签的与每一组消息相关联的标签的完成消息。要在相关联的环上发出的这些消息在一个实施例中被提供给队列220和230中的相应的一个,即完成队列220和数据队列230,它们可被改作FIFO缓冲器。如图3中所示,完成队列220的头条目可被提供给比较器240,在该比较器中它与数据缓冲器230的头相比较。该比较可指示完成缓冲器220的标签是否具有小于数据标签的值的值,意味着相应的数据消息已被注入到环245中。因此,比较器240的输出可由逻辑240用来阻止完成队列220的头处的条目被注入到确认环255。虽然使用图3的实施例中的该特定实现示出,但是本发明的范围在这一点上不受限制。
为确保从环停留点注入的监听在其从环停留点到协议引擎的路上不会超越所转发的数据响应,可在输入路径上提供内容可寻址存储器(CAM)。输入路径上的CAM导致从目录到CAM的每一监听请求进入输入队列并且捕捉目的地是高速缓存/核的“在路上的”数据分组(具有状态信息)。
如果数据在数据队列中被捕捉,则监听被阻止,直到针对同一地址的数据消息已被注入到高速缓存控制器。这使高速缓存在高速缓存块被待决监听监听出之前能够向核提供数据,以供核消耗该数据并且执行至少一个操作(例如,在对其提供该数据以使用新值来盖写数据的RFO请求的情况下)。
现在参考图4,所示出的是根据本发明的一个实施例的输入路径结构的框图。如图4中所示,给定高速缓存代理可耦合到多个环,即请求(即,AD)环305、数据(即,BL)环310、以及确认(即,AK)环315。基于一个实施例,即使保证监听请求在来自对等高速缓存的所转发的数据之后的至少一个周期到达环停留点,在观察到该转发的数据之前监听实际上可被高速缓存代理看见是可能的。这将导致高速缓存代理对目录的不一致的响应。为防止这种情况发生,提供了涉及内容可寻址存储器(CAM)325的方案。每一传入监听在传入协议数据队列320中执行高速缓存块地址查找以寻找可能在路上的任何消息。如果没有消息,则监听经由监听启用逻辑330来启用,并且经由高速缓存输入队列372发送到高速缓存370的高速缓存控制器380。如果存在针对同一高速缓存块的数据消息(在345),则该数据分组在数据响应协议队列350中被标记(框355),并且监听被保持待决。随着传入数据响应协议FIFO队列350被排空,如果遇到标记的分组(在365),则监听启用逻辑330在经由延迟单元332的固定延迟之后被启用。这使得在传入监听队列320的顶部的监听能被释放。高速缓存控制器380内部的协议处理因而维持不变。输出协议处理375包括确保作为从高速缓存响应队列374接收到的监听响应的一部分的数据消息在完成消息被放置在AK环315上之前的至少一个时钟被放置在BL环310上的输出序列发生器。虽然用图4的实施例中的该特定实现来示出,但是本发明的范围在这一点上不受限制。
通过引入用于在第一和第二输入队列之间查找的CAM结构,显式回写(EWB)(M副本驱逐)以及填充提示(S副本驱逐)事务可使用较少数目的消息来实现。在常规协议中,EWB请求和填充提示需要首先咨询目录,以在实际驱逐线之前检查没有冲突的请求在进行中。通过提供CAM结构,EWB可在没有这些消息的情况下继续,并且传入监听可“捕捉”EWB,因为它们将位于协议缓冲器FIFO结构中直到EWB/填充提示完成。这可导致更好的高速缓存利用。
在各种实现中,各实施例可在诸如存在于归属代理中的目录中实现。现在参考图5,所示出的是根据本发明的一个实施例的目录的框图。如图5中所示,可以是归属代理的目录的目录400包括各种结构以维护关于存储在相关联的高速缓存中的高速缓存线以及特定控制逻辑、队列、定时器、以及给定归属代理目录中可存在的其它此类组件的信息。
如图5中所示,目录400可包括具有多个条目的目录阵列410,这多个条目的每一个可与在目录400所关联的高速缓存之一中的给定高速缓存线相关联。每个条目可包括关于高速缓存线的位置、以及其状态的信息以及可能的其它此类信息。更进一步地,目录400包括待决请求队列420,其可以是存储来自与目录400相关联的不同高速缓存代理的各种请求的存储。为确定给定请求是否可被执行,首先可确定针对同一高速缓存线的任何先前未解决请求是否已存在于请求队列420中。
如在图5中进一步所示,可存在监听逻辑430。这一逻辑可被用来分析传入请求以及目录阵列410中的信息,以使各种监听请求能被发送到不同的高速缓存代理。此外,各实施例可包括并发请求逻辑450,该并发请求逻辑可被用来处理其中针对单个高速缓存线的多个请求正传入目录400的情况。例如,并发请求逻辑450可确定针对单个高速缓存线的多个并发请求的存在,并且使第二个这种并发请求能从目录400更快地发送,即在接收与第一并发请求相关联的完成消息之前。为此,结合一个或多个定时器445,并发请求逻辑450可确定该第二并发请求在其可从目录400发送之前被存储在待决请求队列420中的预定最小时间延迟。例如,一个或多个定时器可被用来精确地定时可从目录发送并发请求之间的预定周期数,以允许对高速缓存未命中请求的主动处理。尽管用图5的实施例中的这一特定实现来示出,但是本发明的范围在这方面不受限制。
在一个特定实现中,并发请求逻辑450可根据以下图6的流程图来处理这些并发请求。现在参考图6,所示的是根据本发明的一个实施例的可被目录或其它跟踪结构用来确定在并发监听请求可被发送之前的最小时间延迟的方法500的流程图。如图6中所示,方法500可通过从第二高速缓存代理接收对高速缓存线的请求来开始(框510)。基于该请求,目录可确定高速缓存线的位置和状态(框520)。例如,目录可确定该高速缓存线存在于第一高速缓存代理中。因此,目录可生成将高速缓存线从第一高速缓存代理发送到第二高速缓存代理的第一监听请求(框530)。
在某一点,在该第一监听请求的发送之前或其之后、但是在高速缓存到高速缓存转发的确认的完成之前,目录可从第三高速缓存代理接收对同一高速缓存线的并发请求(框540)。因此,目录可将该并发请求存储在例如待决请求队列中或者诸如目录内的FIFO之类的其它这种临时存储中。
此后,目录可接收高速缓存线在第一与第二高速缓存代理之间的发送的确认(框550)。在框560处接收该确认之后,可确定最小时间延迟。该时间延迟可被计算为在目录可发送请求将高速缓存线从第二高速缓存代理转发到第三高速缓存代理的第二监听请求之前的时段。在一个实施例中,该计算可根据等式1来进行。在菱形570处,可例如基于目录中的定时器来确定是否已达到该最小时间延迟。如果否,则菱形570可循环返回到其本身。当已实现时间延迟时,可将第二监听请求发送到第二高速缓存代理以引起高速缓存到高速缓存转发(框580)。然后,目录此后可接收该发送的确认(框590)以使待决请求可从其在队列中的位置出队(框590)。虽然使用图6的实施例中的特定实现示出,但是本发明的范围在这点上不受限制。
各实施例可在许多不同的系统类型中实现。现在参考图7,所示出的是根据本发明的一个实施例的系统的框图。如图7所示,多处理器系统600是点对点互连系统,并且包括经由点对点互连650耦合的第一处理器670和第二处理器680。如图7中所示,处理器670和680的每一个可以是多核处理器,它们包括第一和第二处理器核(即,处理器核674a和674b以及处理器核684a和684b)、以及可经由无缓冲环形互连耦合到核的目录673和683。每个目录可包括诸如图5中所示的逻辑以能用最小等待时间发送并发监听请求。
仍参考图7,第一处理器670还包括存储器控制器集线器(MCH)672和点对点(P-P)接口676和678。类似地,第二处理器680包括MCH 682和P-P接口686和688。如图7中所示,MCH672和682将处理器耦合到相应存储器,即存储器632和存储器364,这些存储器可以是主存储器(例如,动态随机存取存储器(DRAM))的本地附连到相应处理器的部分。第一处理器670和第二处理器680可分别经由P-P互连652和654耦合到芯片组690。如图7所示,芯片组690包括P-P接口694和698。
此外,芯片组690包括接口692以使芯片组690与高性能图形引擎638耦合。芯片组690又可经由接口696耦合到第一总线616。如图7中所示,各种I/O设备614可与使第一总线616耦合到第二总线620的总线桥一起耦合到第一总线616。各种设备可被耦合到第二总线620,包括例如键盘/鼠标622、通信设备626以及诸如盘驱动器或其它大容量存储设备之类的数据存储单元628,该数据存储单元在一个实施例中可包括代码630。此外,音频I/O可被耦合到第二总线624。
各实施例可用代码来实现并且可被存储在其上存储有指令的存储介质上,其中这些指令可用于对系统编程以执行这些指令。存储介质可包括但不限于任何类型的盘,包括软盘、光盘、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)以及磁光盘;半导体器件,比如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM),磁卡或光卡;或适用于存储电子指令的任何其它类型的介质。
尽管已关于有限数量的实施例描述了本发明,但本领域中的技术人员将从中认识到许多修改和变型。所附权利要求书旨在涵盖落入本发明的真实精神和范围内的所有这些修改和变型。

Claims (20)

1.一种用于处理来自计算机系统中的多个代理的请求的方法,其包括:
在目录处接收来自第一高速缓存代理的完成消息,所述完成消息指示所述第一高速缓存代理已响应于针对高速缓存线的第一请求将所述高速缓存线发送到第二高速缓存代理;
确定在所述目录将第二请求发送到第二高速缓存代理之前的时间延迟,所述第二高速缓存代理响应于所述第二请求而把所述高速缓存线转发到第三高速缓存代理;以及
在所述时间延迟之后发送所述第二请求。
2.如权利要求1所述的方法,其特征在于,所述第一高速缓存代理在所述第一高速缓存代理将包括所述高速缓存线的相应数据消息注入到耦合到所述第一和第二高速缓存代理的互连之后发送所述完成消息。
3.如权利要求2所述的方法,其特征在于,还包括在所述互连的第一通道上接收所述完成消息以及在所述互连的第二通道上发送所述第二请求。
4.如权利要求3所述的方法,其特征在于,还包括:
在所述第一高速缓存代理中确定第一队列中与关于所述完成消息的条目相关联的标签值是否小于第二队列中关于所述数据消息的相应条目的标签值;以及
如果第一队列中与关于所述完成消息的条目相关联的标签值不小于第二队列中关于所述数据消息的相应条目的标签值,则将所述完成消息注入到所述第一通道,否则阻止注入所述完成消息。
5.如权利要求1所述的方法,其特征在于,还包括:
将在所述第三高速缓存代理中的所述高速缓存线存储在传入数据队列中;
确定来自所述目录的传入监听请求是否对应于所述高速缓存线;以及
如果是,则将所述传入监听请求维持在第二队列中直到所述高速缓存线从所述传入数据队列中排出。
6.如权利要求5所述的方法,其特征在于,还包括在发送对所述传入监听请求的监听响应之前发送包括来自所述第三高速缓存代理的所述高速缓存线的数据消息。
7.如权利要求1所述的方法,其特征在于,还包括驱逐或发送针对来自所述第一高速缓存代理的高速缓存线的填充提示,而不需要咨询目录。
8.一种用于处理来自计算机系统中的多个代理的请求的装置,其包括:
多个高速缓存代理,其每一个包括高速缓冲存储器;以及
经由互连耦合到所述多个高速缓存代理的目录,所述目录用于存储各自与存储在耦合到所述目录的高速缓存代理的高速缓冲存储器中的高速缓存线相关联的多个条目,所述目录包括用于确定在所述目录可发送并发监听请求之前的时间延迟的第一逻辑,对所述时间延迟的确定是至少部分基于来自所述高速缓存代理的完成消息的到达以及请求高速缓存代理、转发高速缓存代理以及所述目录的相对位置。
9.如权利要求8所述的装置,其特征在于,所述目录包括用于指示所述时间延迟何时已完成的至少一个定时器。
10.如权利要求8所述的装置,其特征在于,所述目录在不接收来自第一高速缓存代理的完成消息的情况下将所述并发监听请求发送到所述第一高速缓存代理。
11.如权利要求8所述的装置,其特征在于,所述第一逻辑根据T=(P-N-M+1)*D来确定所示时间延迟,其中P与从第一高速缓存代理到第二高速缓存代理的互连路程段的数目相对应,N与从所述第二高速缓存代理到所述目录的互连路程段的数目相对应,M与从所述第一高速缓存代理到所述目录的互连路程段的数目相对应,以及D与所述互连上的环停留点之间的延迟相对应。
12.如权利要求8所述的装置,其特征在于,所述并发监听请求是针对第一高速缓存线的请求,所述第一高速缓存线要响应于所述并发监听请求从第一高速缓存代理转发到第二高速缓存代理。
13.如权利要求12所述的装置,其特征在于,所述目录响应于来自所述第二高速缓存代理的第二请求生成所述并发监听请求,其中所述第二请求在来自所述第一高速缓存代理的对所述高速缓存线的第一请求之后在所述目录中被接收。
14.如权利要求13所述的装置,其特征在于,所述目录将所述第二请求存储在请求者队列中。
15.如权利要求13所述的装置,其特征在于,所述目录响应于来自第三高速缓存代理的将所述第一高速缓存线转发到所述第一高速缓存代理的完成消息将所述第二请求出队。
16.一种用于处理来自多个代理的请求的系统,其包括:
多核处理器,其包括多个高速缓存代理以及经由环形互连耦合到所述多个高速缓存代理的目录,所述环形互连包括用于监听请求、数据消息、以及确认消息的独立通道,所述目录包括并发请求逻辑,所述并发请求逻辑接收来自第二缓存代理的第一确认消息,计算在所述目录发送第二监听请求之前的时间延迟,且不接收来自第一高速缓存代理的第二确认消息,其中所述第二确认消息指示第一高速缓存线向第一缓存代理的发送,所述第二确认消息指示所述第一缓存代理中的第一高速缓存线的接收,所述第二监听请求用于请求将所述第一高速缓存线从所述第一高速缓存代理被转发到第三高速缓存代理;以及
耦合到所述多核处理器的动态随机存取存储器(DRAM)。
17.如权利要求16所述的系统,其特征在于,所述并发请求逻辑至少部分地基于所述环形互连的特性来计算所述时间延迟。
18.如权利要求16所述的系统,其特征在于,所述时间延迟与所述第一确认消息的接收和所述并发监听请求的发送之间的周期数相对应。
19.如权利要求18所述的系统,其特征在于,所述目录包括至少一个定时器以指示所述时间延迟何时已完成。
20.如权利要求18所述的系统,其特征在于,所述第一高速缓存代理被配置成在接收来自所述第二高速缓存代理的所述第一高速缓存线之后阻止向所述目录发送确认消息。
CN2009101462030A 2008-06-13 2009-06-12 优化基于目录的一致性协议中的并发访问 Expired - Fee Related CN101604295B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/157,792 US8190820B2 (en) 2008-06-13 2008-06-13 Optimizing concurrent accesses in a directory-based coherency protocol
US12/157,792 2008-06-13

Publications (2)

Publication Number Publication Date
CN101604295A CN101604295A (zh) 2009-12-16
CN101604295B true CN101604295B (zh) 2013-03-27

Family

ID=40902559

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009101462030A Expired - Fee Related CN101604295B (zh) 2008-06-13 2009-06-12 优化基于目录的一致性协议中的并发访问

Country Status (6)

Country Link
US (1) US8190820B2 (zh)
JP (1) JP5037566B2 (zh)
CN (1) CN101604295B (zh)
DE (1) DE102009023898B4 (zh)
GB (1) GB2460747B (zh)
TW (1) TWI416322B (zh)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8180963B2 (en) * 2009-05-21 2012-05-15 Empire Technology Development Llc Hierarchical read-combining local memories
US8468309B2 (en) 2010-09-25 2013-06-18 Intel Corporation Optimized ring protocols and techniques
JP5772458B2 (ja) * 2011-09-29 2015-09-02 富士通株式会社 データ管理プログラム、ノード、および分散データベースシステム
US9280468B2 (en) 2011-10-26 2016-03-08 Qualcomm Technologies, Inc. Three channel cache-coherency socket protocol
US9910807B2 (en) 2011-11-29 2018-03-06 Intel Corporation Ring protocol for low latency interconnect switch
WO2013081579A1 (en) 2011-11-29 2013-06-06 Intel Corporation Ring protocol for low latency interconnect switch
JP5643903B2 (ja) * 2011-12-23 2014-12-17 インテル・コーポレーション 階層的キャッシュ設計におけるキャッシュ間の効率的通信のための方法および装置
US8627012B1 (en) 2011-12-30 2014-01-07 Emc Corporation System and method for improving cache performance
US9235524B1 (en) 2011-12-30 2016-01-12 Emc Corporation System and method for improving cache performance
US9009416B1 (en) * 2011-12-30 2015-04-14 Emc Corporation System and method for managing cache system content directories
US9053033B1 (en) * 2011-12-30 2015-06-09 Emc Corporation System and method for cache content sharing
US9158578B1 (en) 2011-12-30 2015-10-13 Emc Corporation System and method for migrating virtual machines
US9104529B1 (en) * 2011-12-30 2015-08-11 Emc Corporation System and method for copying a cache system
US8930947B1 (en) 2011-12-30 2015-01-06 Emc Corporation System and method for live migration of a virtual machine with dedicated cache
US9135177B2 (en) 2013-02-26 2015-09-15 Apple Inc. Scheme to escalate requests with address conflicts
US9304926B2 (en) 2013-07-23 2016-04-05 Arm Limited Coherency control message flow
US9785556B2 (en) * 2014-12-23 2017-10-10 Intel Corporation Cross-die interface snoop or global observation message ordering
CN106326183B (zh) * 2015-06-30 2019-03-15 龙芯中科技术有限公司 基于目录的缓存一致性的实现方法及装置
US10387314B2 (en) * 2015-08-25 2019-08-20 Oracle International Corporation Reducing cache coherence directory bandwidth by aggregating victimization requests
US9971692B2 (en) 2015-11-17 2018-05-15 International Business Machines Corporation Supporting concurrent operations at fine granularity in a caching framework
US9965390B2 (en) 2015-11-17 2018-05-08 International Business Machines Corporation Reducing defragmentation in a multi-grained writeback cache
US9916249B2 (en) 2015-11-17 2018-03-13 International Business Machines Corporation Space allocation in a multi-grained writeback cache
US10095595B2 (en) 2015-11-17 2018-10-09 International Business Machines Corporation Instant recovery in a multi-grained caching framework
US9817757B2 (en) 2015-11-17 2017-11-14 International Business Machines Corporation Scalable metadata management in a multi-grained caching framework
US10152417B2 (en) * 2016-04-11 2018-12-11 International Business Machines Corporation Early freeing of a snoop machine of a data processing system prior to completion of snoop processing for an interconnect operation
US10733103B2 (en) 2017-12-13 2020-08-04 International Business Machines Corporation Non-blocking directory-based cache coherence
US11544193B2 (en) 2020-09-11 2023-01-03 Apple Inc. Scalable cache coherency protocol
CN112579479B (zh) * 2020-12-07 2022-07-08 成都海光微电子技术有限公司 在维护缓存一致性时维护事务次序的处理器及其方法
US12007895B2 (en) 2021-08-23 2024-06-11 Apple Inc. Scalable system on a chip

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1184540A (zh) * 1996-02-15 1998-06-10 国际商业机器公司 时间相干超高缓存系统

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2474201B1 (fr) * 1980-01-22 1986-05-16 Bull Sa Procede et dispositif pour gerer les conflits poses par des acces multiples a un meme cache d'un systeme de traitement numerique de l'information comprenant au moins deux processus possedant chacun un cache
US5778438A (en) * 1995-12-06 1998-07-07 Intel Corporation Method and apparatus for maintaining cache coherency in a computer system with a highly pipelined bus and multiple conflicting snoop requests
US5897657A (en) * 1996-07-01 1999-04-27 Sun Microsystems, Inc. Multiprocessing system employing a coherency protocol including a reply count
US5832276A (en) * 1996-10-07 1998-11-03 International Business Machines Corporation Resolving processor and system bus address collision in a high-level cache
US6065101A (en) * 1997-06-12 2000-05-16 International Business Machines Corporation Pipelined snooping of multiple L1 cache lines
US6122719A (en) * 1997-10-31 2000-09-19 Silicon Spice Method and apparatus for retiming in a network of multiple context processing elements
FI108502B (fi) * 1998-12-11 2002-01-31 Nokia Corp Menetelmõ ja laitteet lyhytsanomien lõhettõmiseksi
US7461213B2 (en) * 2002-10-08 2008-12-02 Rmi Corporation Advanced processor system using request, data, snoop, and response rings
US20040103248A1 (en) * 2002-10-08 2004-05-27 Hass David T. Advanced telecommunications processor
US7917646B2 (en) * 2002-12-19 2011-03-29 Intel Corporation Speculative distributed conflict resolution for a cache coherency protocol
US6922756B2 (en) * 2002-12-19 2005-07-26 Intel Corporation Forward state for use in cache coherency in a multiprocessor system
JP4658064B2 (ja) 2003-10-22 2011-03-23 インテル コーポレイション 相互接続ネットワークでの効率的な順序保存用の方法及び装置
JP4085389B2 (ja) * 2003-12-24 2008-05-14 日本電気株式会社 マルチプロセッサシステム、マルチプロセッサシステムにおける一貫性制御装置及び一貫性制御方法
US7856534B2 (en) * 2004-01-15 2010-12-21 Hewlett-Packard Development Company, L.P. Transaction references for requests in a multi-processor network
US7822929B2 (en) * 2004-04-27 2010-10-26 Intel Corporation Two-hop cache coherency protocol
US7975018B2 (en) * 2004-07-07 2011-07-05 Emc Corporation Systems and methods for providing distributed cache coherence
US7454576B2 (en) * 2004-12-27 2008-11-18 Intel Corporation System and method for cache coherency in a cache with different cache location lengths
US7406566B2 (en) * 2005-06-03 2008-07-29 Intel Corporation Ring interconnect with multiple coherence networks
US7437518B2 (en) * 2005-09-07 2008-10-14 Intel Corporation Hiding conflict, coherence completion and transaction ID elements of a coherence protocol
US8010753B2 (en) * 2005-09-28 2011-08-30 International Business Machines Corporation Systems and methods for temporarily transferring use of portions of partitioned memory between host computers
US7747897B2 (en) * 2005-11-18 2010-06-29 Intel Corporation Method and apparatus for lockstep processing on a fixed-latency interconnect
US7962694B2 (en) * 2006-03-31 2011-06-14 Intel Corporation Partial way hint line replacement algorithm for a snoop filter
US20080005486A1 (en) * 2006-06-29 2008-01-03 Mannava Phanindra K Coordination of snoop responses in a multi-processor system
US8301790B2 (en) * 2007-05-30 2012-10-30 Randy Morrison Synchronization of audio and video signals from remote sources over the internet
US7779210B2 (en) * 2007-10-31 2010-08-17 Intel Corporation Avoiding snoop response dependency
JP2009245323A (ja) * 2008-03-31 2009-10-22 Nec Computertechno Ltd レイテンシ短縮方式及び方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1184540A (zh) * 1996-02-15 1998-06-10 国际商业机器公司 时间相干超高缓存系统

Also Published As

Publication number Publication date
US8190820B2 (en) 2012-05-29
TWI416322B (zh) 2013-11-21
JP5037566B2 (ja) 2012-09-26
US20090313435A1 (en) 2009-12-17
DE102009023898B4 (de) 2020-06-18
GB0909592D0 (en) 2009-07-15
DE102009023898A1 (de) 2009-12-31
CN101604295A (zh) 2009-12-16
GB2460747B (en) 2010-08-04
GB2460747A (en) 2009-12-16
JP2009301552A (ja) 2009-12-24
TW201011536A (en) 2010-03-16

Similar Documents

Publication Publication Date Title
CN101604295B (zh) 优化基于目录的一致性协议中的并发访问
US8656115B2 (en) Extending a cache coherency snoop broadcast protocol with directory information
US7437518B2 (en) Hiding conflict, coherence completion and transaction ID elements of a coherence protocol
TWI463318B (zh) 快取一致性處理系統、快取記憶體,及其方法
CN100468365C (zh) 高速缓存相干协议的推测分布式冲突解决方法和装置
JP3644587B2 (ja) 共用介入サポートを有する不均等メモリ・アクセス(numa)・データ処理システム
JP3661761B2 (ja) 共用介入サポートを有する不均等メモリ・アクセス(numa)データ処理システム
CN103370696B (zh) 多核系统以及核数据读取方法
US7856534B2 (en) Transaction references for requests in a multi-processor network
US7913048B2 (en) Data subscribe-and-publish mechanisms and methods for producer-consumer pre-fetch communications
US20150286568A1 (en) Method and apparatus for monitor and mwait in a distributed cache architecture
US7386680B2 (en) Apparatus and method of controlling data sharing on a shared memory computer system
US7856535B2 (en) Adaptive snoop-and-forward mechanisms for multiprocessor systems
US20070005899A1 (en) Processing multicore evictions in a CMP multiprocessor
US6266743B1 (en) Method and system for providing an eviction protocol within a non-uniform memory access system
IL142265A (en) Data processing system with uneven access to memory (NUMA) that precedes a call request for a remote processing industry on an approximate basis
US7519780B2 (en) System and method for reducing store latency in symmetrical multiprocessor systems
US7779210B2 (en) Avoiding snoop response dependency
US7797495B1 (en) Distributed directory cache
CN117407194A (zh) 一种基于缓存一致性的异构通信架构
US10917198B2 (en) Transfer protocol in a data processing network
CN102959529A (zh) 用于缓存的网络的广播协议
US7779211B2 (en) Reducing latency in responding to a snoop request
CN102819420A (zh) 基于命令取消的高速缓存流水线锁步并发执行方法
CN112955877B (zh) 修改存储数据的装置和方法

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

Granted publication date: 20130327

Termination date: 20210612

CF01 Termination of patent right due to non-payment of annual fee