实施高速缓存一致性的系统和方法

文档序号:6614108阅读:171来源:国知局
专利名称:实施高速缓存一致性的系统和方法
技术领域
本发明涉及高速緩存一致性(Cache coherence)机制,并且尤 其涉及利用基于环的侦测响应收集(ring-based snoop response collection )在基于网络的多处理器系统中的高速緩存一致性。
背景技术
对称多处理器("SMP")系统采用高速緩存一致性机制以确保 高速緩存一致性。基于侦测的高速緩存一致性是实现SMP系统的高速 緩存一致性的典型方案。利用基于侦测的高速緩存一致性,当高速緩 存缺失(Cache Miss)发生时,请求高速緩存向其对等的高速緩存广 播高速緩存请求。适当的高速緩存侦测过滤机制用于减少由高速緩存 一致性消息和高速緩存侦测操作造成的开销。通常,在基于总线的 SMP系统中实现基于侦测的高速緩存一致性,在该SMP系统中高速緩 存经由共享总线互相通信。为避免潜在的通信瓶颈,现代SMP系统通 常使用消息传递网络,而不是在物理上共享的总线。此类SMP系统被 称为基于网络的SMP系统。
现在参照图l,示出了一个示例性高速緩存一致性多处理器系统,
其包括经由节点间互连网络互连的多个节点,其中每个节点包括中央
处理单元("CPU")和高速緩存。同样连接到该节点间互连网络上的
是存储器和输入/输出("IO")设备。虽然存储器被描述成一个部件,
但是存储器可被物理地分成多个存储器部分,其中每个存储器部分在 操作上与节点相关。
现在参照图2,示出了另一个示例性高速緩存一致性多处理器系 统,其包括经由节点间互连网络互连的多个节点,其中每个节点包括 芯片多处理器("CMP")子系统。每个CMP子系统包括一个或多个能够经由节点内结构互相通信的高速緩存。存储器部分,以及输入/ 输出设备也可被连接到节点内结构上。
利用基于侦测的高速緩存一致性,当读取高速緩存缺失发生时, 请求高速緩存通常向其对等高速緩存和存储器广播高速緩存数据请 求。当对等高速緩存收到高速緩存数据请求时,该对等高速緩存执行 本地高速緩存侦测操作,并且产生表明是否在对等高速緩存中找到所 请求的数据,以及相应高速緩存管线的状态的高速緩存侦测响应。如 果在对等高速緩存中找到所请求的数据,则对等高速緩存可经由高速 緩存至高速緩存传送向请求高速緩存提供数据。如果没有对等高速緩 存能够提供数据,则存储器负责提供所请求的数据。
在高速緩存一致性SMP系统中,高速緩存请求可以是旨在获得所 请求数据的共享拷贝的高速緩存数据请求、旨在获得所请求数据的排 它拷贝(exclusive c叩y)的高速緩存数据和所有权请求、或旨在使其它 高速緩存中的所请求数据的共享拷贝无效的所有权请求。
用于获得基于侦测的高速緩存一致性的若干技术为本领域技术 人员所熟知。例如,MESI侦测高速緩存一致性协议及其变型已被广 泛地用于SMP系统中。正如名称所暗示的,MESI具有4个高速緩存状 态修改(M)、排它(E)、共享(S)以及无效(1)。如果高速緩存管线 在高速緩存中处于无效状态,则数据在高速緩存中不是有效的。如果 高速緩存管线在高速緩存中处于共享状态,则数据在高速緩存中有 效,并且在其它高速緩存中也可能有效。例如,当从存储器或另一个 高速緩存中检索数据时,进入该状态,并且相应的侦测响应表明数据 在至少一个其它高速緩存中有效。如果高速緩存管线在高速緩存中处 于排它状态,则数据在该高速緩存中有效,并且在任何其他高速緩存 中不能有效。此外,相对于保存在存储器中的数据,该数据尚未被修 改。例如,当从存储器或另一个高速緩存中检索数据时,进入该状态, 并且相应的侦测响应表明该数据在任何其他高速緩存中都不是有效 的。如果高速緩存管线在高速緩存中处于修改状态,则数据在高速緩 存中有效,并且在任何其他高速緩存中不可能有效。此外,作为存储
器存储操作的结果,该数据已被修改,并且修改的数据尚未被写入存
储器o
利用基于侦测的高速緩存一致性,当高速緩存缺失发生时,如果 在存储器和另一个高速緩存中都找到所请求的数据,因为高速緩存至 高速緩存传送等待时间通常小于存储器访问等待时间,所以通常优选
经由高速緩存至高速緩存传送提供数据。例如,在IBM⑧Power 4系统 中,当一个地址的数据在多芯片模块中的一个或多个高速緩存中共享 时,具有最后收到的共享拷贝的高速緩存可经由高速緩存至高速緩存 传送给相同多芯片模块中的另 一 个高速緩存提供数据。
如果最初从高速緩存产生高速緩存请求,则该高速緩存被称为高 速緩存请求的请求高速緩存。如果在给高速緩存请求提供服务过程中 需要侦测高速緩存,则该高速緩存被称为高速緩存请求的侦测高速緩 存。如果高速緩存提供所请求数据给请求高速緩存,则该高速緩存被 称为高速緩存请求的供给高速緩存。
同样,如果最初从节点中的高速緩存产生高速緩存请求,则该节 点被称为高速緩存请求的请求节点。如果在给高速緩存请求提供服务 过程中,需要侦测节点中的至少一个高速緩存,则该节点被称为高速 緩存请求的侦测节点。如果节点中的高速緩存提供所请求数据给请求 节点,则该节点被称为高速緩存请求的供给节点。
在基于总线的SMP系统中,总线充当中央仲裁器,其将所有总线 事务序列化,以确保总线事务的全部顺序。在基于网络的SMP系统中, 可以于不同的接收高速緩存以不同顺序接收消息。该一致性消息的序 列化保证的缺乏使得难以提供有效的高速緩存一致性支持。因此,存 在对于在基于网络的多处理器系统中能够有效地支持高速緩存一致 性的机制的需要。

发明内容
根据本发明的一个实施例,一种用于实施高速緩存一致性的计算 机实现的方法包括通过网络无需排序限制地从请求节点多播对于存
储器地址的高速緩存请求,通过嵌入所述网络中的单向环,由该请求 节点收集高速緩存请求的组合侦测响应,以及根据该组合侦测响应在 请求节点处实施存储器地址的高速緩存一致性。
才艮据本发明的一个实施例,高速緩存一致性系统包括通过网络连 接的多个节点,所述网络包括嵌入的单向环,以及实现该系统的高速 緩存一致性的高速緩存一致性机制,其中所述高速緩存一致性机制无 需任何排序限制地利用网络传送对于存储器地址的高速緩存请求,并 且利用嵌入的单向环收集高速緩存请求的组合侦测响应。
根据本发明的一个实施例,提供一种计算机可读介质,其包含了 由处理器可执行的指令,该指令用来执行用于实施高速緩存一致性的
方法。该方法包括通过网络无需排序限制地从请求节点多播对于存 储器地址的高速緩存请求,通过嵌入所述网络中的单向环,由该请求 节点收集高速緩存请求的组合侦测响应,以及根据该组合侦测响应在 请求节点处实施存储器地址的高速緩存一致性。


参照附图,下面将更详细地描述本公开的优选实施例 图l描述了示例性高速緩存一致多处理器系统,其包括经由节点
间互连网络互连的多个节点,其中每个节点包括CPU和高速緩存。 图2描述了示例性高速緩存一致多处理器系统,其包括经由节点
间互连网络互连的多个节点,其中每个节点包括CMP子系统,该CMP
子系统包括一个或多个高速緩存。
图3示出了图解请求节点如何处理到来的数据请求的流程图。 图4示出了图解请求节点如何处理到来的数据和所有权请求的流程图。
图5示出了图解请求节点如何处理到来的所有权请求的流程图。 图6示出了图解侦测节点如何处理到来的高速緩存请求的流程图。
图7示出了图解侦测节点如何处理高速緩存请求的到来的部分组
合侦测响应(PCSR)的流程图。
图8示出了图解侦测节点如何利用一致性沖突检测支持处理到来 的高速緩存请求的流程图。
图9示出了图解侦测节点如何利用一致性沖突检测支持处理到来 的PCSR的流程图。
图10示出了图解当使用侦测过滤时侦测节点如何利用侦测列表 处理到来的PCSR的流程图。
图ll示出了根据本发明的一个实施例的计算机系统节点的图。
具体实施例方式
根据本公开的一个实施例,利用基于环的侦测响应收集实现基于 网络的多处理器系统中的高速緩存一致性。高速緩存一致性机制通过 没有任何排序限制地利用多处理器系统的互连网络,同时利用嵌入互 连网络中的单向环来收集高速緩存侦测响应,多播高速緩存请求。
高速緩存一致系统包括经由互连网络彼此连接的多个节点。互连 网络逻辑上包括请求网络、响应网络和数据网络。请求网络被用于高 速緩存请求传送,响应网络被用于高速緩存侦测响应传送,而数据网 络被用于所有其它传送,包括高速緩存至高速緩存数据传送以及高速 緩存与存储器之间的数据传送。虽然逻辑上互相独立,但是请求网络、 响应网络和数据网络在物理上可以共享通信管脚和链接。
对于指定的存储器地址,响应网络包括被用于传送高速緩存侦测 响应的单向环。假设相同存储器地址的高速緩存侦测响应使用相同单 向环,那么不同的存储器地址(通常以高速緩存管线粒度)可将嵌入所 述网络中的不同的单向环用于高速緩存侦测响应。
对于指定的高速緩存请求的侦测节点,如果在嵌入的单向环中节 点在侦测节点前面,则该节点被称为在前节点。如果在嵌入的单向环 中节点在侦测节点之后,则该节点被称为后续节点。如果在嵌入的单 向环中侦测节点在请求节点之后,则该高速緩存请求的侦测节点被称 为第一侦测节点。如果在单向环互连网络中请求节点在侦测节点之
后,则该高速緩存请求的侦测节点被称为最后侦测节点。
当侦测高速緩存执行高速緩存侦测操作时,侦测高速緩存产生表 明高速緩存侦测结果的高速緩存侦测响应。如果高速緩存侦测响应表 明仅在 一个侦测节点处本地高速緩存侦测操作的结果,则该高速緩存
侦测响应被称为本地侦测响应(LSR)。如果高速緩存侦测响应表明 在一个或更多侦测节点处本地高速緩存侦测操作的结果,则该高速緩 存侦测响应被称为部分组合的侦测响应(PCSR)。如果高速緩存侦 测响应表明在高速緩存请求的所有侦测节点处本地高速緩存侦测操 作的结果,则该高速緩存侦测响应被称为组合侦测响应(CSR)。此 外,如果高速緩存侦测响应表明侦测节点能够给请求节点提供所请求
数据,则该高速緩存侦测响应被称为正侦测响应;如果高速緩存侦测
响应表明没有侦测节点能够给请求节点提供所请求数据,则该高速緩
存侦测响应被称为负侦测响应。
根据本公开的说明性实施例,当存储器地址的高速緩存缺失在请 求节点中发生时,该请求节点没有任何排序限制地向利用请求网络的 所有侦测节点发出正确的高速緩存请求。如果需要所请求数据,则一
旦收到所请求的数据,无论相应的CSR是否被接收,该请求节点在其 计算中能够使用所请求的数据。当请求节点收到CSR和所请求的数据 (如果有的话)时,其完成给高速緩存请求提供服务。
当侦测节点从请求节点接收高速緩存请求时,侦测节点执行本地 高速緩存侦测操作以产生LSR;以及如果来自在前节点的在前PCSR 已被接收和记录,则根据高速緩存请求的LSR和在前PCSR计算新的 PCSR,或者如果高速緩存请求的在前PCSR尚未被接收,则为了后面 的使用记录LSR。侦测节点需要确定是否利用嵌入的单向环向后续节 点转发新的PCSR,或者记录新的PCSR (以及稍后转发它)。
当侦测节点从在前节点接收到高速緩存请求的在前PCSR时,如 果已经产生和记录了 LSR,则侦测节点根据高速緩存请求的在前 PCSR和先前记录的LSR计算新的PCSR,或者如果尚未产生LSR,则 为了以后的使用记录在前的PCSR。侦测节点需要确定是否利用嵌入
的单向环向后续节点转发新的PCSR,或者记录新的PCSR (以及稍后 转发它)。
为计算高速緩存请求的新PCSR,侦测节点使用以下方法如果 在前PCSR指示数据尚未被提供给请求节点(负PCSR),以及LSR指 示数据尚未被提供给请求节点(负LSR),则新的PCSR指示数据尚 未被提供给请求节点(负PSCR)。另一方面,如果在前PCSR或者LSR 中的任意一个指示请求数据已被提供给请求节点(正PCSR或正 LSR),则新的PCSR指示数据已被提供给请求节点(正PCSR)。
当高速緩存缺失在请求节点中的高速緩存中发生时,请求节点可 接收数据请求、数据和所有权请求、或所有权请求。侦测节点可接收 高速緩存请求或PCSR。现在示出如何利用基于环的侦测响应收集, 在高速緩存一致多处理器系统中处理此类请求和侦测响应。
(l)数据请求的处理(在请求节点处)
图3示出了图解当高速緩存缺失在请求节点中的请求高速緩存中 发生时,请求节点如何处理到来的数据请求的流程图。当请求节点从 请求高速緩存收到高速緩存数据请求时(300),请求节点利用请求 网络向侦测节点发送高速緩存数据请求(301),以及利用响应网络向高 速緩存请求的第一侦测节点发送高速緩存请求的初始(负)PCSR (302 )。利用响应网络,从请求节点向第一侦测节点发送的高速緩 存数据请求可与初始PCSR—起搭栽(piggyback)。请求节点等待从 供给节点接收所请求的数据,或等待从高速緩存请求的最后侦测节点 接收高速緩存请求的CSR (303 )。侦测节点检查侦测节点是否已收 到所请求的数据或高速緩存请求的CSR (304)。
如果侦测节点已经从供给节点收到所请求的数据,则请求节点在 请求高速緩存中緩存接收的数据(305),并且等待从最后侦测节点 接收高速緩存请求的CSR (306)。当从最后侦测节点收到高速緩存 请求的CSR时,请求节点将请求高速緩存状态正确地设置成结束高速 緩存请求服务(307 )。
如果请求节点已经从高速緩存请求的最后侦测节点收到高速緩
存请求的CSR,则请求节点检查高速緩存请求的CSR是否为正或负 (308)。如果高速緩存请求的CSR为正,则请求节点等待从供给节 点接收所请求的数据(309)。当从供给节点收到所请求的数据时, 请求节点在请求高速緩存中緩存接收的数据,并且将请求高速緩存状 态正确地设置成结束高速緩存请求服务(310)。否则,如果高速緩存请 求的CSR为负,则请求节点向存储器发送数据请求(311),并且等待从 存储器中接收所请求的数据(312)。当请求节点从存储器中收到所 请求的数据时,请求节点在请求高速緩存中緩存接收的数据,并且将 请求高速緩存状态正确地设置成结束高速緩存数据请求服务(313)。
(2)数据和所有权请求的处理(在请求节点处)
图4示出了图解当高速緩存缺失在请求节点中的请求高速緩存中 发生时,请求节点如何处理到来的数据和所有权请求的流程图。当请 求节点从请求高速緩存收到高速緩存数据和所有权请求时(400 ), 请求节点利用请求网络向侦测节点发送高速緩存数据和所有权请求 (401),以及利用响应网络向高速緩存请求的第一侦测节点发送高速緩 存请求的初始(负)PCSR (402)。利用响应网络,从请求节点向第一 侦测节点发送的高速緩存数据和所有权请求可与初始PCSR—起搭 载。请求节点等待从供给节点接收所请求的数据,或等待从最后侦测 节点接收高速緩存请求的CSR (403)。请求节点检查其是否已经从 供给节点收到所请求的数据,或者从最后侦测节点收到高速緩存请求 的CSR( 404)'
如果请求节点已经从供给节点收到所请求的数据,则请求节点在 请求高速緩存中緩存接收的数据(405),并且等待从最后侦测节点 接收高速緩存请求的CSR (406)。当从最后侦测节点收到高速緩存 请求的CSR时,请求节点将请求高速緩存状态正确地设置成结束高速 緩存请求服务(407 )。
如果请求节点已经从最后侦测节点收到高速緩存请求的CSR,则 请求节点检查高速緩存请求的CSR是否为正或负(408)。如果高速 緩存请求的CSR为正,则请求节点等待从供给节点接收所请求的数据
U09)。当从供给节点收到所请求的数据时,请求节点在请求高速 緩存中緩存接收的数据,并且将请求高速緩存状态正确地设置成结束 高速緩存数据和所有权请求服务(410)。否则,如果高速緩存请求的 CSR为负,则请求节点向存储器发送数据请求(411),并且等待从存储 器中接收所请求的数据(412)。当请求节点从存储器中收到所请求的数 据时,请求节点在请求高速緩存中緩存接收的数据,并且将请求高速 緩存状态正确地设置成结束高速緩存数据和所有权请求服务(413)。
(3) 所有权请求的处理(在请求节点处)
图5示出了图解当高速緩存缺失在请求节点中的请求高速緩存中 发生时,请求节点如何处理到来的所有权请求的流程图。当请求节点 从请求高速緩存收到高速緩存所有权请求时(500),节点利用请求 网络向对等(侦测)节点发送所有权请求(501),以及利用响应网络向 高速緩存请求的第一侦测节点发送高速緩存请求的初始(负)PCSR (502 )。利用响应网络,从请求节点向第一侦测节点发送的高速緩 存所有权请求可与初始PCSR—起搭栽。请求节点等待从高速緩存请 求的最后侦测节点接收高速緩存请求的CSR( 503 )。当收到高速緩存 请求的CSR时,请求节点将请求高速緩存状态正确地设置成结束高速 緩存请求服务(504 )。
(4) 高速緩存请求的处理(在侦测节点处)
图6示出了图解侦测节点如何处理到来的高速緩存请求的流程 图。当侦测节点从请求节点接收高速緩存请求时(600),侦测节点 执行本地高速緩存侦测操作,产生指示所请求的数据是否应当由侦测 节点提供给请求节点的高速緩存请求的LSR,以及如果高速緩存请求 的LSR指示应当提供所请求的数据,则利用数据网络向请求节点提供 数据(601)。侦测节点检查是否从在前节点收到高速緩存请求的在 前PCSR(602)。如果收到高速緩存请求的在前PCSR,则侦测节点 基于高速緩存请求的在前PCSR和高速緩存请求的LSR,产生高速緩 存请求的新PCSR (603)。侦测节点利用响应网络向后续节点转发高 速緩存请求的新PCSR (603 )。否则,如果没有收到高速緩存请求的 在前PCSR,则侦测节点为了未来处理记录高速緩存请求的 LSR( 604 )。
(5) PCSR的处理(在侦测节点处)
图7示出了图解侦测节点如何处理到来的PCSR的流程图。当侦测 节点从在前节点收到高速緩存请求的在前PCSR时(700),侦测节点 检查侦测节点处是否有可用的高速緩存请求的LSR (701)。如果存 在可用的高速緩存请求的LSR,则侦测节点基于从在前节点接收的高 速緩存请求的在前PCSR,以及高速緩存请求的可用LSR,产生高速 緩存请求的新PCSR ( 702 )。侦测节点利用响应网络向后续节点转发 高速緩存请求的新PCSR (702)。否则,如果侦测节点处没有可用的 高速緩存请求的LSR,则侦测节点为了未来处理记录从在前节点接收 的高速緩存请求的在前PCSR( 703 )。
一致性沖突检测支持
当不止一个节点同时发出关于相同地址的高速緩存请求时,一致 性冲突可能发生。需要适当的冲突处理以确保系统为高速緩存一致 的,以及能够正向前进。现在示出侦测节点如何利用合适的沖突检测 支持来处理高速緩存请求和在前PCSR。
根据本公开的说明性实施例,每个节点都保存PCSR向量,其中 PCSR向量的每个位对应于请求节点,其指示是否已收到来自相应请 求节点的高速緩存请求的PCSR,以及是否尚未将该PCSR用于计算新 PCSR。此外,每个节点都保存LSR向量,其中LSR向量的每个位对 应于请求节点,其指示来自相应请求节点的高速緩存请求的LSR是否 已被产生,以及是否尚未利用该LSR来计算新PCSR。此外,每个节 点保存DRN(数据接收节点)信息,其指示请求节点(如果有約话)已 经有所请求数据了 ,其中PCSR向量指示相应的PCSR已被收到并且尚 未被用于计算新PCSR,或者LSR向量指示相应的LSR已被产生并且 尚未被用于计算新PCSR。
对于侦测节点,我们用概念PCSI^V ( r )来表示针对请求节点r, 由请求节点r发出的高速緩存请求的PCSR是否已被侦测节点接收,并
且尚未被侦测节点用于产生要转发到后续节点的新PCSR。如果 PCSR—V(r)表明可用(AVAILABLE),则来自请求节点r的高速緩 存请求的PCSR已被侦测节点接收,并且尚未被用于产生新PCSR。如 果PCSR—V ( r )表明不可用(UNAVAILABLE),则来自请求节点r 的高速緩存请求的PCSR尚未被侦测节点接收,或者来自请求节点的 高速緩存请求的PCSR已被侦测节点接收,并且已被用于产生新 PCSR。最初,针对系统中的每个请求节点,PCSR向量表明不可用。 对于侦测高速緩存,我们用概念LSR一V ( r )来表示针对请求高速 緩存r,由请求节点r发出的高速緩存请求的LSR是否已被侦测节点产 生,并且尚未被侦测节点用于产生要转发到后续节点的新PCSR。如 果LSRJS^ ( r )表明可用,则来自请求节点r的高速緩存请求的LSR已 被侦测节点产生,并且尚未被用于产生新PCSR。如果LSI^V(r)表 明不可用,则来自请求节点r的高速緩存请求的LSR尚未被侦测节点产 生,或者来自请求节点r的高速緩存请求的LSR已被侦测节点产生,并 且已被用于产生新PCSR。最初,针对系统中的每个请求节点,LSR
向量表明不可用。
对于侦测节点,我们用概念DRN来表示已经给其提供有请求数 据的请求节点r,其中PCSRJV^(r)表明可用,或者LSR—V ( r )表明可 用。DRN的初值为无。
(6)利用一致性冲突检测处理高速緩存请求(在侦测节点处)
图8示出了图解侦测节点如何利用一致性冲突检测支持处理到来 的高速緩存请求的流程图。当侦测节点从请求节点r接收高速緩存请 求时(800 ),侦测节点执行本地高速緩存侦测操作,并且产生高速 緩存请求的LSR,其指示所请求的数据是否应当由侦测节点提供给请 求节点(801)。侦测节点检查高速緩存请求的LSR是否指示所请求 的数据已由侦测节点提供给请求节点(802)。
如果高速緩存请求的LSR指示所请求的数据已由侦测节点提供 给请求节点,则侦测节点利用数据网络将数据提供给请求节点 r( 803)。侦测节点检查PCSR—V(r)是否为可用(804)。如果PCSR—V (r )为可用,则侦测节点基于从在前节点接收的高速緩存请求的 PCSR,以及高速緩存请求的LSR,产生高速緩存请求的新PCSR,并 且利用响应网络将新PCSR转发给后续节点(805 )。侦测节点清除 PCSR—V(r)以指示不可用(806)。否则,如果PCSR—V(r)为不可 用,则侦测节点为了未来处理而记录高速緩存请求的LSR( 807 ),并 且将LSR—V ( r )设置成指示可用,并且将DRN设置成r( 808 )。
如果高速緩存请求的LSR指示所请求的数据未被侦测节点提供 给请求节点,则侦测节点检查PCSR—V(r)是否为可用(809)。如果 PCSR一V ( r )为不可用,则侦测节点为了未来处理而记录高速緩存请 求的LSR( 819 ),并且将LSR一V ( r )设置成指示可用(820 )。如果 PCSR_V ( r )为可用,则侦测节点检查DRN是否被设置成r( 810 )。
如果DRN被设置成r,则侦测节点基于从在前节点接收的高速緩 存请求的PCSR和高速緩存请求的LSR,产生高速緩存请求的新 PCSR ,利用响应网络将高速緩存请求的新PCSR转发给后续节点 (811),以及清除PCSR—V ( r )以指示不可用(812)。对于每个节 点k,如果PCSR—V(k)指示可用,以及LSR—V(k)指示可用,则侦测节 点基于相应记录的PCSR和相应记录的LSR产生新PCSR,利用响应网 络将新PCSR转发给后续节点,以及清除PCSR一V(k)和LSR一V(k)以指 示不可用(813)。
如果DRN未被设置成r,则侦测节点检查DRN是否指示没有请求 节点要接收数据(814)。如果没有请求节点要接收数据,则侦测节 点基于从在前节点接收的高速緩存请求的PCSR和高速緩存请求的 LSR,产生高速緩存请求的新PCSR,利用响应网络将高速緩存请求 的新PCSR转发给后续节点(815),以及清除PCSR—V( r )以指示不 可用(816)。否则,如果有任意节点要接收数据,则为了未来处理 而记录高速緩存请求的LSR(817),并且将LSF^V (r)设置成指示可 用(818)。
(7)利用一致性冲突检测处理PCSR (在侦测节点处)
图9示出了图解侦测节点如何利用一致性冲突检测支持处理高速
緩存请求的到来的PCSR的流程图。当侦测节点从在前节点接收高速 緩存请求的PCSR时(900),侦测节点检查从在前节点接收的高速緩 存请求的PCSR是否指示数据已被提供给请求节点(901)。
如果从在前节点接收的高速緩存请求的PCSR指示数据已被提供 给请求节点,则侦测节点检查LSR-V ( r )是否为可用(卯2)。如果 LSR一V ( r )为可用,则侦测节点基于从在前节点接收的高速緩存请求 的PCSR,以及高速緩存请求的LSR,产生高速緩存请求的新PCSR, 并且利用响应网络将高速緩存请求的新PCSR转发给后续节点(903 )。 侦测节点清除LSRJV(r)以指示不可用(卯4)。否则,如果LSR_V (r )为不可用,则侦测节点为了未来处理而记录从在前节点接收的高 速緩存请求的PCSR(905),并且将PCSI^V(r)设置成指示可用,以 及将DRN设置成r(卯6 )。
如果从在前节点接收的高速緩存请求的PCSR指示数据未被提供 给请求节点,则侦测节点检查LSF^V ( r )是否为可用(卯7)。如果 LSR—V ( r )为不可用,则侦测节点为了未来处理而记录从在前节点接 收的高速緩存请求的PCSR( 917 ),并且将PCSI^V ( r )设置成指示可 用(918)。如果LSR—V(r)为可用,则侦测节点检查DRN是否被设置 成r(908)。
如果DRN被设置成r,则侦测节点基于从在前节点接收的高速緩 存请求的PCSR和高速緩存请求的LSR,产生高速緩存请求的新 PCSR ,利用响应网络将高速緩存请求的新PCSR转发给后续节点 (909),以及清除LSR—V(r)以指示不可用(910)。对于每个节点 k,如果PCSR—V (k)指示可用,以及LSR—V (k)指示可用,则侦测节 点基于相应记录的PCSR和相应记录的LSR产生新PCSR,利用响应网 络将新PCSR转发给后续节点,以及清除PCSR—V (k)和LSR—V (k)以 指示不可用(911)。
如杲DRN未被设置成r,则侦测节点检查DRN是否指示没有节点 要接收数据(912)。如果没有节点要接收数据,则侦测节点基于从 在前节点接收的高速緩存请求的PCSR和高速緩存请求的LSR,产生
高速緩存请求的新PCSR,利用响应网络将高速緩存请求的新PCSR转 发给后续节点(913),以及清除LSRJS^(r)以指示不可用()。 否则,如果有任何节点要接收数据,则为了未来处理而记录从在前节 点接收的高速緩存请求的PCSR( 915 ),并且将PCSI^V ( r )设置成指 示可用(916)。
侦测过滤实施
可以利用适当的侦测过滤器来避免不必要的高速緩存请求和不 必要的本地高速緩存侦测操作,以实施基于环的响应收集系统。当请 求节点接收高速緩存请求时,相应的侦测过滤器可以确定不需要侦测 一些侦测节点。例如,如果侦测过滤器建议针对一个节点过滤高速緩 存数据请求,则在该节点中不能找到所请求的数据,或即使所请求的 数据在该节点中被緩存,也不能从该节点提供所请求的数据。相反, 如果侦测过滤器建议针对一个节点不过滤读请求,则可以从该节点提 供所请求的数据。
现在示出在处理高速緩存请求时,侦测过滤如何用于减少不必要 的高速緩存请求和不必要的本地高速緩存侦测操作。
如果请求节点收到高速緩存数据请求,则请求高速緩存利用与图 3相同的方法处理高速緩存数据请求,除了如下修改方框301和302之 外
(301)请求节点获得给其发送高速緩存请求可能必需的侦测节点 的列表(高速緩存请求的侦测列表)。请求节点利用请求网络将高速 緩存请求仅发送给在该列表中的侦测节点。
(302 )请求节点利用响应网络将高速緩存请求的PCSR,与请求 节点向其发送高速緩存请求的侦测节点的列表一起(PCSR和侦测列 表)发送给高速緩存请求的第一侦测节点。
此外,所有对CSR的提及应当被当作CSR和侦测列表。然而,在 请求节点收到高速緩存请求的CSR和侦测列表之后,该请求节点不使 用收到的高速緩存请求的侦测列表,所以不需要进一步改变。
如果请求节点收到高速緩存数据和所有权请求,则请求高速緩存
利用与图4相同的方法处理高速緩存数据和所有权请求,除了如下修 改方框401和402之外
(401)请求节点获得向其发送高速緩存请求可能必需的侦测节 点的列表(高速緩存请求的侦测列表)。请求节点利用请求网络将高 速緩存请求仅发送给该列表中的侦测节点。
(402 )请求节点利用响应网络将高速緩存请求的PCSR,与请求 节点向其发送高速緩存请求的侦测节点的列表一起(PCSR和侦测列 表)发送给高速緩存请求的第一侦测节点。
此外,所有对CSR的提及应当被当作CSR和侦测列表。然而,在 请求节点收到高速緩存请求的CSR和侦测列表之后,该请求节点不使 用高速緩存请求的侦测列表,所以不需要进一步改变,
如果请求节点收到高速緩存所有权请求,则请求高速緩存利用与 图5相同的方法处理高速緩存所有权请求,除了如下修改方框501和 502之外
(501)请求节点获得向其发送高速緩存请求可能必需的侦测节 点的列表(高速緩存请求的侦测列表)。请求节点利用请求网络将高 速緩存请求仅发送给该列表中的侦测节点。
(502 )请求节点利用响应网络将高速緩存请求的PCSR,与请求 节点向其发送高速緩存请求的侦测节点的列表一起(PCSR和侦测列 表)发送给高速緩存请求的第 一侦测节点。
此外,所有对CSR的提及应当被当作CSR和侦测列表。然而,在 请求节点收到高速緩存请麥的CSR和侦测列表之后,该请求节点不使 用高速緩存请求的侦测列表,所以不需要进一步改变。
图10示出了图解当使用侦测过滤时,侦测节点如何利用高速緩存 请求的侦测列表处理到来的PCSR的流程图。当侦测节点从在前节点 收到高速緩存请求的PCSR和侦测列表时(1000),侦测节点检查在 侦测节点处是否有可用的高速緩存请求的LSR (1001)。如果在侦测 节点处有可用的高速緩存请求的LSR,则侦测节点基于从在前节点接 收的高速緩存请求的PCSR,以及高速緩存请求的可用LSR产生高速
緩存请求的新PCSR ( 1002)。侦测节点利用响应网络向后续节点转 发高速緩存请求的新PCSR和侦测列表(1003)。否则,如果侦测节 点处没有可用的高速緩存请求的LSR,则侦测节点检查该侦测节点是 否被包含在收到的高速緩存请求的侦测列表中(1004 )。如果侦测节点 被包含在收到的高速緩存请求的侦测列表中,则侦测节点为了未来处 理而记录从在前节点接收的高速緩存请求的PCSR和侦测列表 (1005)。否则,如果侦测节点未被包含在收到的高速緩存请求的侦 测列表中,则侦测节点利用响应网络将从在前节点接收的高速緩存请 求的PCSR和侦测列表转发给后续节点。
应当理解,可以通过各种形式的硬件、软件、固件、专用处理器 或其组合来实现本发明。在一个实施例中,本发明可以用软件实现成 可触知地嵌入在程序存储设备上的应用程序。该应用程序可被上载到 包括任何适当体系结构的机器中,并且可被其执行。
根据本发明的实施例,参考图ll,用于在基于网络的多处理器系 统中实施高速緩存一致性的计算机系统(1101)可特别包括中央处理 单元(CPU)( 1102)、存储器(1103),以及输入/输出(I/0)接口 ( 1104 )。 计算机系统(1101)通常通过I/0接口 ( 1104 )连接到显示器(1105 ), 以及诸如鼠标和键盘的各种输入设备(1106)上。支持电路可包括诸 如高速緩存、电源、时钟电路以及通信总线的电路。存储器(1103) 可包括随机访问存储器(RAM)、只读存储器(ROM)、盘驱动器、磁带 驱动器或其组合。本发明可被实现为被存储在存储器(1103)中的、 由CPU (1102)执行的例程(1107)来处理来自信号源(1108)的信 号。这样,当执行本发明的例程(1107)时,计算机系统(1101)是 一种变成专用计算机系统的通用计算机系统。
计算机平台(1101 )还包括操作系统和微指令代码。此处描述的 各种进程和功能可以是微指令代码的一部分,或者是通过操作系统执 行的应用程序(或其组合)的一部分。此外,各种其它外部设备可被 连接到计算机平台上,例如附加的数据存储设备和打印设备。
可以进一步理解,因为附图中所示的一些组成系统部件和方法可
以用软件实现,所以系统部件(或过程)之间的实际连接可根据编程 本发明的方式而不同。根据此处提供的本发明的指导,本领域普通技 术人员会能够想到本发明的这些和类似实现或结构。
前面描述了在基于网络的多处理器系统中实施高速緩存一致性 的机制和方法的实施例,应当注意,本领域技术人员根据上述教导可 以进行修改和变化。所以可以理解,在公开的本发明的具体实施例中 可以进行各种落在所附权利要求书定义的发明范围和宗旨内的改变。
权利要求
1.一种用于实施高速缓存一致性的计算机实现的方法,包括通过网络无需排序限制地从请求节点多播对于存储器地址的高速缓存请求;通过嵌入所述网络中的单向环,由所述请求节点收集所述高速缓存请求的组合侦测响应;以及根据所述组合侦测响应,在所述请求节点处实施所述存储器地址的高速缓存一致性。
2. 如权利要求l所述的计算机实现的方法,进一步包括 通过所述网络将所述存储器地址的数据提供给所述请求节点; 在由所述请求节点收集所述高速緩存请求的所述侦测响应之前,使用在所述请求节点处的所述数据;以及在接收到所述高速緩存请求的数据和侦测响应后,完成在所述请 求节点处的所述高速緩存请求。
3. 如权利要求2所迷的计算机实现的方法,进一步包括 在侦测节点处从所述请求节点接收所述高速緩存请求; 在所述侦测节点处执行本地高速緩存侦测操作,并且产生所述高速緩存请求的LSR (本地侦测响应);以及为了后续处理在所述侦测节点处记录所述LSR。
4. 如权利要求2所述的计算机实现的方法,进一步包括 在侦测节点处从所述请求节点接收所述高速緩存请求;在所述侦测节点处执行本地高速緩存侦测操作,并且产生所述高 速緩存请求的LSR (本地侦测响应);基于来自在前节点的所述高速緩存请求的所述LSR以及在前 PCSR,确定所述高速緩存请求的新PCSR (部分组合侦测响应),其 中在嵌入所述网络中的单向环中所述在前节点在所述侦测节点之前; 以及通过嵌入所述网络中的所述单向环,将来自所述侦测节点的所述 高速緩存请求的所述新PCSR转发给后续节点,其中在嵌入所述网络 中的所述单向环中所述后续节点在所述侦测节点之后。
5. 如权利要求2所述的计算机实现的方法,进一步包括 在侦测节点处从在前节点接收在前PCSR(部分组合侦测响应),其中在嵌入所述网络中的所述单向环中所述在前节点在所述侦测节 点之前;以及为了后续处理在所述侦测节点处记录所述在前PCSR。
6. 如权利要求2所述的计算机实现的方法,进一步包括 在侦测节点处从在前节点接收在前PCSR(部分组合侦测响应),其中在嵌入所述网络中的所述单向环中所述在前节点在所述侦测节 点之前;基于所述高速緩存请求的所述在前PCSR和先前记录的LSR (本 地侦测响应),确定所述高速緩存请求的新PCSR;以及通过嵌入所述网络中的所述单向环,将来自所述侦测节点的所述 高速緩存请求的所述新PCSR转发给后续节点,其中在嵌入所述网络 中的所述单向环中所述后续节点在所述侦测节点之后,
7,如权利要求2所述的计算机实现的方法,进一步包括 在侦测节点处从在前节点接收在前PCSR (部分组合侦测响应)和侦测列表,其中所述侦测列表包括针对所述高速緩存请求需要被侦测的至少一个节点;以及如果所述侦测节点被包含在所述侦测列表中,则在所述侦测节点处为后续处理记录所述在前PCSR。
8. 如权利要求2所述的计算机实现的方法,进一步包括 在侦测节点处从在前节点接收在前PCSR (部分组合侦测响应)和侦测列表,其中所述侦测列表包括针对所述高速緩存请求需要被侦 测的至少一个节点;以及如果所述侦测节点没有被包含在所述侦测列表中,则通过嵌入所 述网络中的所述单向环,将所述在前PCSR和所述侦测列表转发给后 续节点。
9. 如权利要求2所述的计算机实现的方法,进一步包括 在侦测节点处从在前节点接收在前PCSR (部分组合侦测响应)和侦测列表,其中所述侦测列表包括针对所述高速緩存请求需要被侦 测的至少一个节点;基于所述高速緩存请求的所述在前PCSR和先前记录的LSR (本 地侦测响应),确定所述高速緩存请求的新PCSR;以及通过嵌入所述网络中的所述单向环,将来自所述侦测节点的所述 高速緩存请求的所述新PCSR和所述侦测列表转发给后续节点。
10. 如权利要求2所述的计算机实现的方法,其中,将所述数据 提供给所述请求节点的步骤包括提供来自侦测节点的所述数据或提 供来自存储器的所述数据中的一个。
11. 如权利要求l所述的计算机实现的方法,其中对于所述存储 器地址的高速緩存请求为数据请求、数据和所有权请求或所有权请 求。
12. 如权利要求l所述的计算机实现的方法,进一步包括 通过所述网络无需排序限制地多播来自所述请求节点的、对于第二存储器地址的第二高速緩存请求;通过嵌入所述网络中的第二单向环,由所述请求节点收集所述第 二高速緩存请求的第二组合侦测响应;以及根据所述第二组合侦测响应,在所述请求节点处实施所述第二存 储器地址的高速緩存一致性。
13. —种高速緩存一致性的系统,包括 通过网络连接的多个节点,所述网络包括嵌入的单向环;以及 实现所述系统的高速緩存一致性的高速緩存一致性机构,其中,所述高速緩存一致性机构利用所述网络无需任何排序限制 地传送对于存储器地址的高速緩存请求,并且利用所述嵌入的单向环 来收集对于所述高速緩存请求的组合侦测响应。
14. 如权利要求13所述的系统,所述多个节点进一步包括 请求节点、在所述嵌入的单向环中在所述请求节点之后的第一侦测节点以及在所述嵌入的单向环中在所述请求节点之前的最后侦测 节点,其中,当所述存储器地址的高速緩存缺失在所述请求节点中的请 求高速緩存中发生时,所述请求节点利用所述网络、无需任何排序限 制地将对于所述存储器地址的所述高速緩存请求多播给至少一个侦 测节点,并且将初始PCSR (部分组合侦测响应)发送给所述第一侦 测节点,其中,如果所述请求节点通过所述网络接收到所请求的数据,则 所述请求节点将所述高速緩存请求所请求的数据用于计算,以及其中,所述请求节点在接收到所述高速緩存请求的所请求数据和 所述侦测响应后,完成在所述请求节点处的所述高速緩存请求。
15. 如权利要求13所述的系统,所述多个节点进一步包括侦测节点、在所述嵌入的单向环中在所述侦测节点之前的在前节 点、以及在所述嵌入的单向环中在所述侦测节点之后的后续节点, 其中,当所述侦测节点接收到所述高速緩存请求时,如果从所述 在前节点接收的所述高速緩存请求的在前PCSR (部分组合侦测响应) 未被记录在所述侦测节点中,则所述侦测节点执行本地高速緩存侦测 操作以产生LSR (本地侦测响应),并且为后续处理记录所述LSR, 以及其中,当所述侦测节点接收到所述高速緩存请求时,如果从所述 在前节点接收的所述高速緩存请求的所述在前PCSR被记录在所述侦 测节点中,则所述侦测节点执行本地高速緩存侦测操作以产生所述 LSR,基于所述在前PCSR和所述LSR计算新PCSR,并且将所述新 PCSR转发给所述后续节点。
16. 如权利要求13所述的系统,所述多个节点进一步包括侦测节点、在所述嵌入的单向环中在所述侦测节点之前的在前节 点、以及在所述嵌入的单向环中在所述侦测节点之后的后续节点,其中,当所述侦测节点接收到来自所述在前节点的所述高速緩存 请求的在前PCSR (部分组合侦测响应)时,如果在所述侦测节点处 未记录所述高速緩存请求的LSR (本地侦测响应),则所述侦测节点 为后续处理记录所述PCSR,以及其中,当所述侦测节点接收到来自所述在前节点的所述高速緩存 请求的所述在前PCSR时,如果在所述侦测节点处记录了所述高速緩 存请求的所述LSR,则所述侦测节点基于所述在前PCSR和所述LSR 计算新PCSR,并且将所述新PCSR转发给所述后续节点。
17. 如权利要求13所述的系统,所述多个节点进一步包括侦测节点、在所述嵌入的单向环中在所述侦测节点之前的在前节 点、以及在所述嵌入的单向环中在所述侦测节点之后的后续节点,其中,当所述侦测节点接收到来自所述在前节点的所述高速緩存 请求的在前PCSR (部分组合侦测响应)和侦测列表时,如果所述侦 测节点没有包含在所述侦测列表中,则所述侦测节点将所述在前 PCSR和所述侦测列表转发给所述后续节点,其中,当所述侦测节点从所述在前节点接收到所述高速緩存请求的所述在前PCSR和所述侦测列表时,如果所述侦测节点包含在所述 侦测列表中,以及如果在所述侦测节点处未记录所述高速緩存请求的 LSR(本地侦测响应),则所述侦测节点为后续处理记录所述在前 PCSR和所述侦测列表,以及其中,当所述侦测节点从所述在前节点接收到所述高速緩存请求 的所述在前PCSR和所述侦测列表时,如果所述侦测节点包含在所述 侦测列表中,以及如果在所述侦测节点处记录了所述高速緩存请求的 LSR,则所述侦测节点基于所述在前PCSR和所述LSR计算新PCSR, 并且将所述新PCSR和所述侦测列表转发给所述后续节点。
18. 如权利要求13所述的系统,其中,对于所述存储器地址的高 速緩存请求是数据请求、数据和所有权请求或所有权请求。
19. 如权利要求13所述的系统,所述网络进一步包括 第二嵌入的单向环,其中所述高速緩存一致性机构利用所述网络无需任何排序限制地传送对于第二存储器地址的第二高速緩存请求,并且利用所述第二嵌入的单向环收集对于所述第二高速緩存请求的第二组合侦测响应。
全文摘要
提供了一种用于实施高速缓存一致性的计算机实现的方法,包括通过网络无需排序限制地从请求节点多播对于存储器地址的高速缓存请求,由所述请求节点通过嵌入网络中的单向环,收集对于高速缓存请求的组合侦测响应,以及根据该组合侦测响应,在请求节点处实施存储器地址的高速缓存一致性。
文档编号G06F12/08GK101178691SQ20071018124
公开日2008年5月14日 申请日期2007年10月25日 优先权日2006年11月6日
发明者卡里恩·施特劳斯, 沈晓卫 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1