提供高速缓存状态信息的方法及装置的制作方法

文档序号:6489470阅读:120来源:国知局
专利名称:提供高速缓存状态信息的方法及装置的制作方法
相关申请的交叉引用本申请涉及已提交的美国专利申请No.10/288347和10/288399,它们的标题均为“管理试探请求的方法及装置”,由David B.Glasco于2002年11月4日提交,通过引用将其完整地结合于本文中用于所有目的。
背景技术
1.发明领域本发明一般涉及多处理器系统中存取数据。更具体来说,本发明提供用于改进数据存取效率、同时保持具有多群集体系结构的多处理器系统中的高速缓存相干性的技术。
2.相关技术的描述性能限制已经导致用于连接具有单存储空间的系统中的处理器的点到点体系结构的发展。在一个实例中,各个处理器可直接通过多个点到点链路相互连接,从而形成处理器群集。处理器的分开的群集也可被连接。点到点链路显著增加了协处理和多处理功能的带宽。
在这种多处理器、多群集系统中,处理器发送试探请求,以便对可能在本地或远程节点中高速缓存的特定存储行执行操作。一些常见操作包括对存储行进行读取块、读取块共享和读取块修改操作。在许多实例中,如果提供了附加机制,则即使当事务可在本地处理时,也把事务转发到远程群集。但是,本地处理事务的机制受到限制。
因此,希望提供用于改进具有采用点到点链路连接的多个处理器的多个群集的系统中的高速缓存存取请求效率的技术。

发明内容
根据本发明,提供用于提高多处理器、多群集系统中的数据存取效率的方法及装置。允许各种事务在本地完成的机制通过提供与系统中的各种群集关联的远程数据高速缓存来实现。远程数据高速缓存接收远程群集中保持的存储行的数据和状态信息。采用包括相干目录和扩充源完成消息在内的各种机制,把状态信息提供给远程数据高速缓存。
在一个实施例中,提供一种计算机系统。所述计算机系统包括请求群集和归属群集。请求群集包括第一组多个节点和请求高速缓存相干控制器。第一组多个节点具有第一组多个处理器以及与第一组多个处理器关联的第一组多个高速缓存。请求高速缓存相干控制器与远程数据高速缓存关联。远程数据高速缓存保持非请求群集的存储行中的数据。归属群集包括第二组多个处理器和请求高速缓存相干控制器。第二组多个处理器以点到点体系结构互连。
在另一个实施例中,提供用于保持相干性的方法。在请求高速缓存相干控制器上接收来自请求群集处理器的写回。写回与从对应于请求群集处理器的高速缓存中逐出的存储行关联。与该存储行关联的数据被写入远程数据高速缓存。远程数据高速缓存保持非请求群集的地址空间中存储行中的数据。接收表明存储行是以修改还是拥有状态保持的信息。
在另一个实施例中,提供用于保持相干性的方法。在请求高速缓存相干控制器上接收来自归属群集的读取块响应。读取块响应与存储行关联。与读取块响应关联的数据被写入远程数据高速缓存。远程数据高速缓存保持非请求群集的地址空间中的存储行中的数据。
在又一个实施例中,一种计算机系统包括请求群集和归属群集。请求群集包括第一组多个节点和请求高速缓存相干控制器。第一组多个节点具有第一组多个处理器以及与第一组多个处理器关联的第一组多个高速缓存。请求高速缓存相干控制器与远程数据高速缓存关联。远程数据高速缓存保持非请求群集的存储行中的数据。归属群集包括第二组多个处理器和请求高速缓存相干控制器。第二组多个处理器以点到点体系结构互连。第一组多个处理器可用于把信息发送给请求高速缓存相干控制器,表明高速缓存行是拥有的还是已修改的,以便修改远程数据高速缓存中的条目。
通过参照说明的其余部分及附图,可以进一步理解本发明的性质和优点。
附图简介参照以下结合说明本发明的具体实施例的附图的描述,可最佳地理解本发明。


图1A和1B是图解表示,说明具有多个群集的系统。
图2是具有多个处理器的群集的图解表示。
图3是高速缓存相干控制器的图解表示。
图4是图解表示,说明来自单群集中的处理器的数据存取请求的事务流。
图5A-5D是图解表示,说明高速缓存相干控制器功能性。
图6是图解表示,说明具有多个试探响应的试探请求的事务流。
图7是图解表示,说明高速缓存相干目录。
图8是图解表示,说明远程数据高速缓存。
图9是图解表示,说明采用远程数据高速缓存的事务流。
图10是图解表示,说明用于采用对存储器的写回来更新远程数据高速缓存的事务流。
图11是图解表示,说明用于更新远程数据高速缓存但没有对存储器的写回的事务流。
图12是图解表示,说明用于采用相干目录来更新远程数据高速缓存的事务流。
图13是流程图,说明采用相干目录的远程数据高速缓存更新。
图14是图解表示,说明用于采用扩充源完成信息来更新远程数据高速缓存的事务流。
图15是流程图,说明采用扩充源完成信息的远程数据高速缓存更新。
具体实施例的详细描述现在详细地参照本发明的一些具体实施例,其中包括本发明人考虑用于执行本发明的最佳模式。这些具体实施例的实例如附图所示。虽然结合这些具体实施例来描述本发明,但是要理解,它不是意在把本发明限制到所述实施例。相反,它意在涵盖可能包含在所附权利要求定义的本发明的精神和范围之内的备选方案、修改和等效物。在其处理器之间具有点到点通信的多处理器体系结构适合用于实现本发明的具体实施例。在以下描述中,阐述大量具体细节,以便提供对本发明的透彻理解。可在没有这些具体细节的部分或全部的条件下实施本发明。没有详细描述众所周知的过程操作,以免不必要地影响对本发明的理解。此外,本申请提到特定单数实体包括本发明的方法及装置可采用一个以上实体来实现的可能性,除非上下文另外清楚地说明。
提供用于提高多处理器、多群集系统中的数据存取效率的技术。在点到点体系结构中,处理器的群集包括直接通过点到点链路相互连接的多个处理器。通过采用点到点链路来代替传统的共享总线或外部网络,在共享相同存储空间的系统中有效地使用多个处理器。通过避免基于传统总线和外部网络的多处理器体系结构的许多带宽和等待时间限制,还提高处理和网络效率。但是,根据各种实施例,线性增加点到点体系结构中的处理器数量造成用于连接多个处理器的链路数量的指数增加。为了减少所使用的链路数量以及进一步使采用点到点体系结构的多处理器系统模块化,采用多个群集。
根据各种实施例,多个处理器群集采用点到点体系结构来互连。处理器的各群集包括用来处理群集之间的通信的高速缓存相干控制器。在一个实施例中,用来连接处理器的点到点体系结构也用于连接群集。
通过采用高速缓存相干控制器,多个群集系统可采用可能不一定支持多个群集的处理器来构建。这种多群集系统的构建方式可能是,采用高速缓存相干控制器来表示本地事务中的非本地节点,使得本地节点不需要知道本地群集外部的节点的存在。下面提供关于高速缓存相干控制器的更详细说明。
在单群集系统中,高速缓存相干性可通过经由串行化点发送所有数据存取请求来保持。用于对数据存取请求排序的任何机制在本文中称作串行化点。串行化点的一个实例是存储控制器。单群集系统中的各种处理器向存储控制器发送数据存取请求。在一个实例中,存储控制器配置成串行化或锁定数据存取请求,使得在任何特定时间仅允许对给定存储行的一个数据存取请求。如果另一个处理器尝试存取相同存储行,则数据存取尝试被阻止,直到存储行解除锁定为止。存储控制器允许在多处理器、单群集系统中保持高速缓存相干性。
串行化点也可用于多处理器、多群集系统,其中,各个群集中的处理器共享单个地址空间。通过采用单个地址空间,内部点到点链路可用来显著改进优于传统的基于外部网络的多群集系统的群集间通信。各个群集中的各个处理器向与特定群集、如归属群集关联的存储控制器发送数据存取请求。存储控制器可以类似地对于来自不同群集的所有数据请求串行化。但是,多处理器、多群集系统中的串行化点可能没有多处理器、单群集系统中的串行化点那么有效。也就是说,由诸如来自群集之间的传送的等待时间之类的因素引起的延迟可能负面影响各个数据存取请求的响应时间。应当注意,延迟还由多处理器环境中的试探的使用所引起。
虽然在采用共享存储空间的体系结构中的群集间事务中的延迟明显低于采用外部网络、如以太网或令牌环的传统消息传递环境中的延迟,但是甚至最小延迟也是一个重要因素。在一些应用中,在几分之一秒中可能存在来自处理器的数百万数据存取请求。任何延迟可能负面影响处理器性能。
根据各种实施例,试探管理用于提高多处理器、多群集系统中存取数据的效率。用于从节点引出响应以保持系统中的高速缓存相干性的机制在本文中称作试探。在一个实例中,用于窥探高速缓存的机制称作试探。对试探的响应可送往发起请求的源或目标。用于过滤或减少传送到各个节点的试探和试探请求的数量的任何机制在本文中称作管理试探。在一个实例中,管理试探需要表征试探请求,以便确定试探是否可传送给减少数量的实体。
在典型实现中,请求被发送给向系统中的各个节点广播试探的存储控制器。在这种系统中,没有高速缓存行状态的知识是已知的。系统中的所有节点经过试探,以及请求群集接收来自各节点的响应。在具有相干目录的系统中,与各个存储行关联的状态信息可用来减少事务的数量。用于保持与各个存储行关联的状态信息的任何机制在本文中称作相干目录。相干目录通常包括在远程群集中高速缓存的、本地群集中的存储行的信息。根据各种实施例,相干目录用于通过推断本地高速缓存的状态来减少对远程群集的试探的数量。在其它实施例中,相干目录用来消除请求向归属群集中的存储控制器的传送。
图1A是可采用本发明的技术的多群集、多处理器系统的一个实例的图解表示。各处理群集101、103、105和107可包括多个处理器。处理群集101、103、105和107通过点到点链路111a-f相互连接。在一个实施例中,图1A所示的多群集体系结构中的多个处理器共享相同存储空间。在这个实例中,点到点链路111a-f是内部系统连接,它们代替传统的前端总线用于连接多个群集101、103、105和107中的多个处理器。点到点链路可支持任何点到点相干协议。
图1B是可采用本发明的技术的多群集、多处理器系统的另一个实例的图解表示。各处理群集121、123、125和127可通过点到点链路141a-d耦合到交换机131。应当注意,采用交换机和点到点链路允许在连接系统中的多个群集时具有更少点到点链路的实现。交换机131可包括具有相干协议接口的处理器。根据各种实现,图1A所示的多群集系统采用交换机131来扩展,如图1B所示。
图2是例如图1A所示的群集101等的多处理器群集的图解表示。群集200包括处理器202a-202d、一个或多个基本I/O系统(BIOS)204、包含存储体206a-206d的存储子系统、点到点通信链路208a-208e以及服务处理器212。点到点通信链路配置成允许处理器202a-202d、I/O交换机210和高速缓存相干控制器230之间的互连。服务处理器212配置成允许经由在图2中由链路214a-214f表示的JTAG接口与处理器202a-202d、I/O交换机210和高速缓存相干控制器230的通信。应当注意,支持其它接口。还应当注意,在一些实现中,服务处理器没有包含在多个处理器群集中。I/O交换机210把系统的其余部分连接到I/O适配器216和220。
根据具体实施例,本发明的服务处理器具有根据先前指定的划分方案划分系统资源的智能。划分可通过采用点到点通信基础设施成为可能的、由服务处理器对于与系统处理器关联的路由选择表的直接处理来实现。路由选择表用来控制和隔离各种系统资源,其中定义它们之间的连接。
处理器202a-d还通过点到点链路232a-d耦合到高速缓存相干控制器230。可用于在保持高速缓存相干性的同时提供多个处理器群集之间的通信的任何机制或装置在本文中称作高速缓存相干控制器。高速缓存相干控制器230可耦合到与其它多处理器群集关联的高速缓存相干控制器。应当注意,在一个群集中可能存在一个以上高速缓存相干控制器。高速缓存相干控制器230采用点到点协议与处理器202a-d以及远程群集进行通信。
更一般来说,应当理解,图2所示的具体体系结构只是示范,并且本发明的实施例被认为具有对于所示系统资源的每个的不同配置和资源互连以及各种备选方案。但是,为了便于说明,将假定服务器200的具体细节。例如,假定图2所示资源的大多数驻留在单个电子装配中。另外,存储体206a-206d可包括在物理上作为双列直插存储模块(DIMM)提供的双倍数据速率(DDR)存储器。例如,I/O适配器216可能是提供对永久存储装置的存取的超高速直接存储器存取(UDMA)控制器或者小型计算机系统接口(SCSI)控制器。I/O适配器220可能是以太网卡,它适合提供与例如局域网(LAN)或因特网之类的网络的通信。
根据一个具体实施例以及如图2所示,I/O适配器216以及220都提供对称I/O访问。也就是说,各提供对等效I/O集的访问。大家会理解,这种配置有助于划分方案,其中多个划分有权访问相同类型的I/O。但是,还应当理解,可设计在其中创建没有I/O的划分的实施例。例如,为了测试存储复合体,可创建包括一个或多个处理器及关联存储资源、即存储复合体的划分。
根据一个实施例,服务处理器212为Motorola MPC855T微处理器,它包括集成芯片组功能。高速缓存相干控制器230是支持本地点到点相干协议的专用集成电路(ASIC)。高速缓存相干控制器230还可配置成处理非相干协议,以便允许与I/O装置进行通信。在一个实施例中,高速缓存相干控制器230是特殊配置的可编程芯片,例如可编程逻辑器件或者现场可编程门阵列。
图3是高速缓存相干控制器230的一个实例的图解表示。根据各种实施例,高速缓存相干控制器包括协议引擎305,它配置成处理从多处理器系统的各个群集中的处理器接收的信息包、如试探和请求。协议引擎305的功能性可在若干引擎之间划分,以便提高性能。在一个实例中,划分根据包类型(请求、试探和响应)、方向(入局和出局)或者事务流(请求流、试探流等)来进行。
协议引擎305有权访问未决缓冲器309,它允许高速缓存相干控制器跟踪诸如最近请求和试探之类的事务,并把事务与特定处理器关联。未决缓冲器309中保存的事务信息可包括事务目标节点、对于后续冲突检测和协议优化的请求的地址、响应信息、标记和状态信息。
高速缓存相干控制器具有诸如相干协议接口307之类的接口,它允许高速缓存相干控制器与该群集以及外部处理器群集中的其它处理器进行通信。根据各种实施例,各接口307和311作为全交叉开关或者作为采用诸如复用器和缓冲器之类的组件的分开的接收和发送单元来实现。高速缓存相干控制器还可包括诸如用于与I/O装置通信的非相干协议接口311之类的其它接口。但是应当注意,高速缓存相干控制器230不一定需要提供相干和非相干两种接口。还应当注意,一个群集中的高速缓存相干控制器可与另一个群集中的高速缓存相干控制器进行通信。
图4是图解表示,说明来自具有未采用高速缓存相干控制器的单群集的系统中的处理器的高速缓存请求的事务。处理器401-1向存储控制器403-1发送存取请求、如读取存储行请求。存储控制器403-1可与这个处理器、单群集中的另一个处理器关联,或者可能是独立组件、如ASIC或特殊配置的可编程逻辑器件(PLD)。为了简化高速缓存相干,在任一给定时间通常仅允许一个处理器存取与共享地址空间对应的存储行。为了防止其它处理器尝试存取相同的存储行,存储行可由存储控制器403-1锁定。对相同存储行的其它所有请求被阻止或排队。通常仅当存储控制器403-1对存储行解除锁定时才允许另一个处理器进行存取。
然后,存储控制器403-1向本地高速缓冲存储器405、407和409发送试探以确定高速缓存状态。本地高速缓冲存储器405、407和409则又向相同处理器401-2发送试探响应。存储控制器403-1还向相同处理器401-3发送存取响应、如读取响应。然后,处理器401-3可向存储控制器403-2发送完成响应,以便允许存储控制器403-2对存储行解除锁定以用于后续请求。应当注意,CPU 401-1、CPU 401-2和CPU 401-3表示相同处理器。
图5A-5D是图解表示,说明高速缓存相干控制器操作。多处理器群集中的高速缓存相干控制器的使用允许创建多处理器、多群集相干域,而没有影响各群集中的本地节点、如处理器和存储控制器的功能性。在一些情况中,处理器可能仅支持允许单群集中的有限数量的处理器而不允许多个群集的协议。通过使本地处理器认为非本地节点只是在高速缓存相干控制器中体现的单一本地节点,高速缓存相干控制器可用于允许多个群集。在一个实例中,群集中的处理器不需要了解其它群集中的处理器。相反,该群集中的处理器与高速缓存相干控制器进行通信,好像高速缓存相干控制器正代表所有非本地节点。
应当注意,远程群集中的节点在本文中称作非本地节点或者称作远程节点。但是,非本地节点指的是一般不在请求群集中的节点,并且包括远程群集中的节点以及归属群集中的节点。从其中发起数据存取或高速缓存存取请求的群集在本文中称作请求群集。包含串行化点的群集在本文中称作归属群集。其它群集称作远程群集。归属群集和远程群集在本文中又称作非本地群集。
图5A说明用作聚集远程高速缓存的高速缓存相干控制器。当处理器501-1对本地存储控制器503-1产生数据存取请求时,高速缓存相干控制器509接受来自本地存储控制器503-1的试探,并将其转发给非本地节点部分511。应当注意,相干协议可包含几种类型的消息。在一个实例中,相干协议包括四种类型的消息;数据或高速缓存存取请求、试探、响应或试探响应,以及数据包。数据或高速缓存存取请求通常针对归属节点存储控制器。试探用来查询系统中的各高速缓存。试探包可携带允许高速缓存正确转变指定行的高速缓存状态的信息。响应用来携带试探响应信息,以及允许节点通知其它节点关于给定事务的状态。数据包携带写请求以及读响应的请求数据。
根据各种实施例,存储地址驻留在本地存储控制器上。如上所述,包括本地群集外部的处理器和高速缓存相干控制器的节点在本文中称作非本地节点。高速缓存相干控制器509则累积来自非本地节点的响应,并以与和高速缓存块505和507关联的本地节点向处理器501-2发送单个响应相同的方式来发送单个响应。本地处理器可预计所试探的每个本地节点的单个试探响应。高速缓存相干控制器的使用允许本地处理器工作而不需要关注是否存在非本地节点。
还应当注意,诸如处理器501-1和处理器501-2之类的组件在本文中表示在事务序列期间的不同时间点的相同组件。例如,处理器501-1可发起数据存取请求,以及相同处理器501-2稍后可接收从该请求产生的试探响应。
图5B说明用作试探代理对的高速缓存相干控制器。当高速缓存相干控制器521-1接收来自非本地节点531的试探时,高速缓存相干控制器521-1接受该试探,并把试探转发到与高速缓存块523、525和527关联的本地节点。高速缓存相干控制器521-2则把最终响应转发给非本地节点部分531。在这个实例中,高速缓存相干控制器是试探的源以及目标。与高速缓存块523、525和527关联的本地节点表现得好像高速缓存相干控制器是具有本地存储器请求的本地处理器。
图5C说明用作远程存储器的高速缓存相干控制器。当本地处理器541-1产生针对远程存储器的存取请求时,高速缓存相干控制器543-1把请求转发给非本地节点553。当远程请求指定本地试探时,高速缓存相干控制器543-1对本地节点产生试探,以及被试探节点向处理器541-2提供响应。一旦高速缓存相干控制器543-1接收到来自非本地节点部分553的数据,它把读响应转发给处理器541-3。高速缓存相干控制器还把最终响应转发给与非本地节点553关联的远程存储控制器。
图5D说明用作远程处理器的高速缓存相干控制器。在第一群集的高速缓存相干控制器561-1接收来自第二群集中的处理器的请求时,高速缓存相干控制器用作代表第二群集处理器的第一群集处理器。高速缓存相干控制器561-1接受来自部分575的请求,并将其转发给存储控制器563-1。高速缓存相干控制器561-2则累积所有试探响应以及所取出的数据,并把最终响应转发给存储控制器563-2以及非本地节点575。
通过允许高速缓存相干控制器用作聚集远程高速缓存、试探代理对、远程存储器以及远程处理器,多个群集系统可采用可能不一定支持多个群集的处理器来构建。高速缓存相干控制器可用来表示本地事务中的非本地节点,使得本地节点不需要知道本地群集外部的节点的存在。
图6是图解表示,说明从本地处理器发送到采用高速缓存相干控制器的非本地群集的数据请求的事务。多群集系统包括请求群集600、归属群集620和远程群集640。如上所述,归属群集620和远程群集640以及除请求群集600之外的其它任何群集在本文中称作非本地群集。与本地和非本地群集关联的处理器和高速缓存相干控制器在本文中类似地分别称作本地处理器、本地高速缓存相干控制器、非本地处理器以及非本地高速缓存相干控制器。
根据各种实施例,本地群集600中的处理器601-1向高速缓存相干控制器603-1发送数据存取请求、如读取请求。高速缓存相干控制器603-1跟踪图3的未决缓冲器中的事务,并把请求转发到归属群集620中的高速缓存相干控制器621-1。在归属群集620的高速缓存相干控制器621-1接收存取请求,并跟踪其未决缓冲器中的请求。在一个实例中,与请求关联的信息存储在未决缓冲器中。高速缓存相干控制器621-1把存取请求转发到同样与归属群集620关联的存储控制器623-1。这时,存储控制器623-1锁定与请求关联的存储行。在一个实例中,存储行是请求群集600、归属群集620和远程群集640中的多个处理器共享的存储空间中的唯一地址。存储控制器623-1产生与数据存取请求关联的试探,并把试探转发到与高速缓存块625和627关联的本地节点以及转发给高速缓存相干控制器621-2。
应当注意,虽然与请求、试探、响应和数据关联的消息被描述成从一个节点转发到另一个,但消息本身可包含变化。在一个实例中,对消息进行变更,以便允许多群集体系结构对于各种本地节点是透明的。应当注意,也可处理写请求。在写请求中,目标存储控制器收集响应,并在收集完成时把响应发送给处理器。
与远程群集640关联的高速缓存相干控制器641-1接收来自高速缓存相干控制器621-2的试探,并试探与高速缓存块645、647和649关联的本地节点。类似地,与请求群集600关联的高速缓存相干控制器603-2接收试探,并把试探转发到与高速缓存块605、607和609关联的本地节点,以便试探请求群集600中的高速缓存块。处理器601-2接收来自与高速缓存块605、607和609关联的本地节点的试探响应。
根据各种实施例,高速缓存相干控制器621-3累积试探响应,并把试探响应发送给高速缓存相干控制器603-3,高速缓存相干控制器603-3又把试探响应转发给处理器601-3。高速缓存相干控制器621-4还把读响应发送给高速缓存相干控制器603-4,高速缓存相干控制器603-4把读响应转发给处理器601-4。试探和试探响应携带用于保持系统中的高速缓存相干性的信息,而读响应则可携带实际所取的数据。在接收所取数据之后,处理器601-4可向高速缓存相干控制器603-5发送源完成响应。根据各种实施例,这时在请求群集600上完成事务。高速缓存相干控制器603-5把源完成消息转发给高速缓存相干控制器621-5。高速缓存相干控制器621-5又把源完成消息发送给存储控制器623-2。在收到源完成消息时,存储控制器623-2可对存储行解除锁定,以及这时完成归属群集620上的事务。另一个处理器这时可存取解除锁定的存储行。
应当注意,由于高速缓存相干控制器621-3在向高速缓存相干控制器603-3发送试探响应之前等待远程群集试探响应,因此延迟被引入系统中。根据各种实施例,在高速缓存相干控制器603-3上收集试探响应。通过让远程群集通过归属群集发送试探响应,归属群集试探响应以及远程群集试探响应在归属高速缓存相干控制器上可能延迟。在一个实例中,远程群集试探响应必须经历附加跳,以便到达请求群集。远程群集与请求群集之间的试探响应的传送的等待时间可能充分小于远程群集与请求群集之间通过归属群集的试探响应的传送的等待时间。归属群集试探响应还由于这个附加跳而被延迟。
本领域的技术人员会理解,涉及请求、试探和响应消息的特定事务序列可能根据特定实现而变化。在一个实例中,高速缓存相干控制器621-3可能在向高速缓存相干控制器603-3传送试探响应消息以及读响应消息之前等待接收来自存储控制器623-1的读响应消息。在其它实例中,高速缓存相干控制器可能是产生请求的实际处理器。一些处理器可作为处理器以及作为高速缓存相干控制器进行工作。此外还考虑与读和写关联的各种数据存取请求消息、试探和响应。如上所述,用于窥探高速缓存的任何消息可称作试探。类似地,用于向存储控制器表明存储行应当解除锁定的任何消息可称作源完成消息。
应当注意,图6所示的事务说明执行许多不同功能的高速缓存相干控制器的实例,其中包括如参照图5A-5D所述的远程处理器、聚集本地高速缓存、试探代理对以及远程存储器的功能。
在归属群集620的高速缓存相干控制器621-1用作远程处理器。当高速缓存相干控制器接收来自请求群集处理器的请求时,高速缓存相干控制器被指示用作代表请求群集处理器的请求处理器。在这种情况中,高速缓存相干控制器621-1接受来自处理器601-1的转发请求,并将其发送给存储控制器623-1,累积来自所有本地节点和存储控制器623-1的响应,并把累积响应和数据再转发给请求处理器601-3。高速缓存相干控制器621-5还把源完成转发给本地存储控制器623-2。
请求群集600中的高速缓存相干控制器603-1用作远程存储器。作为远程存储器,高速缓存相干控制器设计成把来自处理器的请求转发给正确的远程群集,并确保本地节点被试探。在这种情况中,高速缓存相干控制器603-1把试探转发到归属群集620中的高速缓存相干控制器621-1。高速缓存相干控制器603-2还试探本地节点605、607和609。
请求群集640中的高速缓存相干控制器641-1用作试探代理对。如上所述,当用作试探代理对的高速缓存相干控制器接收来自远程群集的试探时,高速缓存相干控制器接受该试探,并将其转发给所有本地节点。高速缓存相干控制器累积响应,并把最终响应送回给请求群集。在这里,高速缓存相干控制器641-1把试探发送到与高速缓存块645、647和649关联的本地节点,收集试探响应,并把试探响应发送到归属群集620中的高速缓存相干控制器621-3。类似地,高速缓存相干控制器603-2还用作请求群集600中的试探代理对。高速缓存相干控制器603-2把试探请求转发给本地节点,其中包括与高速缓存块605、607和609关联的本地节点。
高速缓存相干控制器621-2和621-3还用作聚集远程高速缓存。高速缓存相干控制器621-2负责接受来自存储控制器623-1的试探以及把试探转发给其它处理器群集600和640。更明确地说,高速缓存相干控制器621-2把试探转发给与请求群集600对应的高速缓存相干控制器603-2以及转发给与远程群集640对应的高速缓存相干控制器641-1。如上所述,采用多群集体系结构可能引入延迟以及其它不希望的元素、如增加的通信量以及处理开销。
即使并非所有群集需要被试探,试探也被传送到多群集系统中的所有群集。例如,如果与试探请求关联的存储行是无效的或者不存在于高速缓存中,则可能不需要试探与各个群集关联的所有高速缓存。在没有相干目录的系统中,通常需要窥探所有群集。但是,通过采用相干目录,系统中的事务数量可通过仅试探系统中的群集的子集来减少,以便使通信量和处理开销最小。
通过采用相干目录,全局存储行状态信息(对于各群集)可由特定群集中的存储控制器或高速缓存相干控制器来维护和访问。根据各种实施例,相干目录跟踪和管理试探的分发以及响应的接收。如果相干目录信息表明不需要对特定群集的试探,则可消除对特定群集的试探。在一个实例中,相干目录表明不需要对请求和远程群集的试探。归属群集中的高速缓存相干控制器试探本地节点,而没有把试探转发给请求和远程群集。然后,归属群集中的高速缓存相干控制器在接收到试探响应之后把响应发送给请求群集。但是,在典型的多群集系统中,请求群集期待来自各个被试探群集的预定数量的响应。在一个实例中,如果多群集系统包括四个群集,则请求群集将期待与全部四个群集中的节点关联的试探响应。
图7是可用于允许试探的管理和过滤的相干目录的一个实例。各种相干目录可用。在一个实例中,全目录为系统中的每个存储行提供一个条目。在这个实例中,在存储控制器中维护相干目录,并且可由高速缓存相干控制器访问。但是,在具有大量系统存储空间的系统中,全目录可能不是有效的或者不是可行的。根据各种实施例,为稀疏目录提供与存储行的所选集合关联的有限数量的条目。在一个实例中,相干目录701包括与存储行711关联的状态信息713、脏数据所有者信息715以及占用向量717。在一些实施例中,存储行状态为修改、拥有、共享和无效。
在无效状态中,在与任何远程群集关联的高速缓存中当前没有高速缓存存储行。在共享状态中,存储行可存在于一个以上高速缓存中,但存储行是清洁的,并且不能在这些高速缓存中的任一个中进行修改。当存储行处于共享状态时,可检查占用向量717以确定什么高速缓存共享相关数据。占用向量717可实现为N位字符串,其中每个位表示N个群集的高速缓存中的数据的可用性。用于跟踪什么群集保持高速缓存中的相关存储行的副本的任何机制在本文中称作占用向量。具有地址741的存储行处于共享状态,以及占用向量717表明群集1和3各具有高速缓存中的共享存储行的副本。
在修改状态中,存储行经过修改,以及已修改副本存在于与特定群集关联的高速缓存中。当存储行被修改时,可检查脏数据所有者信息字段715以确定脏数据的所有者。用于表明什么群集拥有高速缓存中的存储行的已修改副本的任何机制在本文中称作脏数据所有者信息字段。在一个实例中,与地址781关联的存储行经过修改,以及脏数据所有者字段715表明群集2拥有存储行。
在拥有状态中,脏存储行由单个高速缓存拥有,但可在多个其它高速缓存中保持共享。它已经由拥有高速缓存进行修改,但这时为只读。在这种情况下,存储器中保存的副本是陈旧的。如果存储行处于拥有状态,则可访问脏数据所有者字段715以确定哪个群集拥有脏数据。在一个实例中,与地址761关联的存储行处于拥有状态,并且由群集4拥有。还可检查占用向量717以确定其它哪些高速缓存可能具有相关数据。在这个实例中,占用向量717表明群集2、3和4各具有与高速缓存中的存储行关联的数据的副本。
虽然相干目录701包含修改、拥有、共享和无效四种状态,但应当注意,具体实现可采用状态的不同集合。在一个实例中,系统可能具有修改、独占、拥有、共享和无效五种状态。在独占状态中,存储行可由远程群集中的特定节点存取,但远程群集中的节点可能仍未把数据写入高速缓存行。本发明的技术可与各种可能的不同存储行状态配合使用。
当请求群集中的处理器对特定存储行执行事务、如读请求时,处理器存取关联高速缓存。在许多实现中,特定群集中的各处理器具有关联高速缓存。如果存储行在高速缓存中不可用,则请求通过高速缓存相干控制器被转发给归属群集。在一个实施例中,归属群集是具有包含请求的存储行的地址空间的处理器的群集。高速缓存相干控制器则可访问相干目录,来确定什么群集应当被试探以满足该请求。相干目录允许群集之间传送的试探数量的减少。
用于通过访问相干目录来减少系统中的事务数量的机制在美国专利申请No.10/288399和10/288347中进行了描述,两项专利申请的标题均为“管理试探请求的方法及装置”,由David B.Glasco于2002年11月4日提交,通过引用将其完整地结合于本文中用于所有目的。通过减少群集间事务的数量,系统效率得到提高,因为节省了带宽,以及减少了事务等待时间。相干目录提供一种用于减少群集间事务的机制。根据各种实施例,远程数据高速缓存是用于减少群集间事务的另一种机制。
根据各种实施例,在各群集中提供另一级高速缓存,使得如果与各处理器关联的高速缓存没有保持存储行中的请求,则可在把试探转发给归属群集之前检查与群集关联的高速缓存。在一个实例中,远程数据高速缓存包含在各群集中,并可由各群集的高速缓存相干控制器访问。与和各处理器关联的高速缓存不同,在这个实例中,为群集中的多个处理器提供单个远程数据高速缓存。如果在与处理器关联的高速缓存中没有找到特定处理器所请求的存储行,则高速缓存相干控制器不一定需要把请求转发给归属群集。而是,高速缓存相干控制器可检查远程数据高速缓存,以便确定存储行是否驻留在远程数据高速缓存中。如果存储行驻留在远程数据高速缓存中,则不需要向归属群集转发任何试探,而是高速缓存相干控制器可采用远程数据高速缓存中的数据来响应事务。
通过采用本发明的技术,远程数据高速缓存可响应诸如读取块、读取块共享以及读取块修改等请求,而无需把请求转发给归属群集。
图8是远程数据高速缓存的图解表示。远程数据高速缓存允许高速缓存相干控制器有效地本地处理某些类型的事务,而不必把试探转发给远程群集。在本地高速缓存之后但在归属群集存储控制器之前被存取的、由本地处理器存取的、保存来自远程群集的数据的任何高速缓存在本文中称作远程数据高速缓存。在一个实例中,在诸如读取、读取块共享或读取块修改请求之类的请求被转发给归属群集之前,远程数据高速缓存由高速缓存相干控制器存取。远程数据高速缓存允许事务在本地群集中处理,而不必把试探转发给远程群集。
根据各种实施例,远程数据高速缓存801包括存储行字段811。在这个字段中提供各个存储行的地址,以允许由高速缓存相干控制器进行有效访问,从而确定特定存储行是否驻留在远程数据高速缓存中。当存储行从处理器高速缓存中被逐出时,通常对远程数据高速缓存添加条目。远程数据高速缓存801还包含状态信息813和实际高速缓存的数据815。在一个实例中,地址821具有无效且没有关联高速缓存数据的状态。应当注意,在典型情况中,无效状态中的存储行只是没有包含在远程数据高速缓存中。地址841包含以共享状态保持的数据843。在一个实例中,远程数据高速缓存中以共享状态保存的数据可用来满足读取块和读取块共享请求,而无需把请求转发给归属群集。地址861具有以拥有状态保持的数据863。根据各种实施例,以拥有状态保持的数据还可用来满足读取块和读取块共享事务。
应当注意,在一些情况中,没有数据可在远程数据高速缓存801中以修改状态保存。对于具有远程数据高速缓存的系统,远程数据高速缓存可用来高速缓存来自远程群集的数据。在这类系统中,通常采用标准MEOSI高速缓存相干协议。在这种协议中,本地处理器高速缓存可从高速缓存中逐出存储行,如果该行是脏的(已修改或拥有状态),则数据被写回到存储器中。位于处理器高速缓存与系统存储器之间的远程数据高速缓存将观察写回,但没有足够信息来确定如何把该行安装到远程数据高速缓存。典型的处理器高速缓存确实具有这种信息。
但是,远程数据高速缓存与高速缓存相干控制器关联。在一些情况中,高速缓存相干控制器没有关于从处理器高速缓存中逐出的行是处于已修改还是拥有状态的信息。因此,远程数据高速缓存采取保守方法,并以拥有状态安装存储行,即使该存储行可能已经以修改状态安装。以相同方式,远程数据高速缓存有时保守地以共享状态安装存储行,即使该存储行可能已经以独占状态安装。通过采取保守方法,在存储行已知处于独占或修改状态时可处理的诸如读取块修改之类的事务无法由远程数据高速缓存来处理,因此被转发给归属群集。向归属群集转发采用不一定必须使用的系统资源。
本发明的技术提供用于允许远程数据高速缓存不仅以共享和拥有状态而且还以独占和修改状态安装存储行的若干机制。在一个实例中,用于把存储行安装到远程数据高速缓存中的修改或拥有状态信息从相干目录中获得。在另一个实例中,状态信息从来自处理器的扩充源完成消息中获得。
本发明的技术不仅允许远程数据高速缓存中的所有数据以共享或拥有状态保持,而且还提供用于以修改和独占状态保持数据的机制。远程数据高速缓存中以修改或独占状态保存的数据可满足读取块、读取块共享和读取块修改事务。
应当注意,远程数据高速缓存801还以未决状态保存信息。未决状态用来保持最初进入远程数据高速缓存、但仍未由源完成确认的数据。可通过处理器所接收的试探来使以未决状态保持的数据在该数据最初写入远程数据高速缓存之后但在接收到最终响应事务之前变成无效。
图9是图解表示,说明其中可采用远程数据高速缓存的事务流。根据各种实施例,请求群集900中的处理器901-1向高速缓存相干控制器903-1发送数据存取请求、如读取请求。高速缓存相干控制器903-1跟踪未决缓冲器中的事务,并确定该请求是否可采用远程数据高速缓存905进行本地处理。根据各种实施例,如果请求为针对特定存储行的读取块或读取块共享,则在存储行在远程数据高速缓存中以修改、拥有、独占或共享状态中的任一个保存时,该请求可进行本地处理。换言之,如果存储行的有效副本处于远程数据高速缓存中,则可本地处理该请求。但是,如果请求为诸如读取块修改之类的事务,则仅当存储行在远程数据高速缓存中以修改或独占状态保持时,才可本地处理该请求。如果请求可本地处理,则远程数据高速缓存向高速缓存相干控制器903-3提供信息,高速缓存相干控制器903-3向处理器901-3发送数据响应。但是,如果请求无法本地处理,则高速缓存相干控制器903-3把请求转发给归属群集920。
一旦远程数据高速缓存确定它可满足请求,则它锁定该行,并阻止所有入局试探请求,直到事务完成为止。远程数据高速缓存对于存储行在远程数据高速缓存上有效地创建临时串行化点-锁定该行,直到事务完成为止,如存储控制器进行的操作那样。
图9说明其中在远程数据高速缓存中的条目用来减少系统中的事务数量的事务流。图10和图11是示意表示,说明在其中条目被安装到远程数据高速缓存的事务流。图10说明在其中条目被添加到远程数据高速缓存以及数据被写回到系统存储器的事务。图11说明在其中条目被添加到远程数据高速缓存、但没有把数据写入系统存储器的事务。
参照图10,请求群集1000中的处理器1001-1向高速缓存相干控制器1003-1发送写回事务。通常在从与处理器关联的高速缓存中逐出存储行时产生写回。高速缓存相干控制器1003-1以未决状态把数据写入远程数据高速缓存1005-1,并把写回转发给归属群集。归属群集1020中的高速缓存相干控制器1021-1把写回转发给存储控制器1023-1,存储控制器1023-1把数据写入系统存储器。然后,存储控制器1023-1把完成消息发送给高速缓存相干控制器1021-3,高速缓存相干存储器1021-3通过高速缓存相干控制器1003-2把完成消息转发给请求群集1000的处理器1001-2。处理器1001-2把源完成消息发给高速缓存相干控制器1003-3。如果插入试探使存储行无效,则源完成消息通常包含指示符注释。如果源完成表明使该行无效,则存储行从远程数据高速缓存中删除或者置于无效状态。如果没有使该行无效,则远程数据高速缓存中的条目的状态以保守方式更新为共享。源完成则通过高速缓存相干控制器1003-3和1021-5被转发给归属群集存储控制器1023-2。
图10说明其中数据写回到存储器的情况。在一些情况中,数据不一定需要写回到存储器。在一个实例中,处于拥有状态的存储行的逐出引起存储行在远程数据高速缓存中以拥有状态进行安装。在这种特定情况中,远程数据高速缓存没有保存脏数据。这允许远程数据高速缓存静寂地逐出该条目。
图11是图解表示,说明用于把存储行安装到远程数据高速缓存而没有把存储行写回到存储器的事务流。处理器1101-1把写回发送给高速缓存相干控制器1103-1。存储行安装到远程数据高速缓存1105-1中,并且可供使用。完成消息被发送给处理器1101-2,处理器1101-2又把源完成发送给高速缓存相干控制器1103-3。在这种情况中,如果从远程数据高速缓存中逐出条目,则远程数据高速缓存可保存写回到存储器的脏数据。
图12是图解表示,说明在其中相干目录提供状态信息的写回的事务流。根据各种实施例,远程数据高速缓存不知道被写回的存储行是处于拥有还是修改状态,因而必须保守地假定它处于拥有状态。本发明的技术允许归属群集向远程数据高速缓存提供关于存储行是处于拥有还是修改状态的信息。请求群集1200中的处理器1201-1把写回发送给高速缓存相干控制器1203-1。数据以未决状态被写入远程数据高速缓存1205-1。高速缓存相干控制器1203-1还通过归属群集1220中的高速缓存相干控制器1221-1把写回转发给存储控制器1223-1。
存储控制器1223-1把存储行写回到系统存储器中,并把完成消息发送给高速缓存相干控制器1221-3。高速缓存相干控制器1221-3从相干目录获得状态信息,并把完成消息中的状态信息发送给高速缓存相干控制器1203-2。根据各种实施例,以表明存储行是以拥有还是修改状态保持的拥有/修改位的形式来发送状态信息。高速缓存相干控制器1203-2把状态信息写入其未决缓冲器,并把完成消息发送给处理器1201-2。处理器1201-2把源完成消息转发给高速缓存相干控制器1203-3。远程数据高速缓存1205-3中的存储行的状态这时可从未决转换到拥有/修改位所提供的任何状态。源完成通过高速缓存相干控制器1221-5被转发给存储控制器1223-2。
图13是流程图,说明采用相干目录的远程数据高速缓存的管理。在1301,从处理器接收写回事务。在一些实例中,因脏存储行的逐出而产生写回。在1303,数据以设置为未决的状态被写入远程数据高速缓存。未决状态说明源完成由处理器发送之前可能出现的插入使无效事务。在1305,写回被转发给归属群集。应当注意,当数据实际上写回到存储器时,写回被转发给归属群集。在1307,从归属群集接收完成消息,其中具有从归属群集的相干目录检索的拥有或修改状态信息。在1311,拥有或修改信息存储在未决缓冲器中。在1313,完成消息被转发给处理器。在1315,从处理器接收源完成消息。在这时,在1317,可存取未决缓冲器以获取与存储行关联的状态信息。
还检查源完成消息,以便确定是否设置了无效位。在产生写回之后,但在存储控制器上提交数据之前被盖写时,无效位用于发信号通知存储控制器写回数据无效。如果在1319在源完成中设置了无效位,则远程数据高速缓存状态在1321被设置为无效。在一些实例中,从远程数据高速缓存中删除数据。如果在1319没有设置无效位,则在1323确定存储行是否以拥有状态保持。如果存储行如来自相干目录的拥有或修改信息所示,保持为拥有状态,则远程数据高速缓存状态在1325被设置为共享。如果拥有或修改信息在1323设置为修改,则存储行的远程数据高速缓存状态在1327设置为独占。通过提供拥有或修改信息,本发明的技术允许远程数据高速缓存状态可设置为独占。通过把远程数据高速缓存状态设置为独占,包括读取块修改的更多事务可在请求群集中处理。
图14是图解表示,说明在其中处理器提供扩充源完成的写回的事务流。请求群集1400中的处理器1401-1把写回发送给高速缓存相干控制器1403-1。数据以未决状态被写入远程数据高速缓存1405-1。高速缓存相干控制器1403-1还通过归属群集1420中的高速缓存相干控制器1421-1把写回转发给存储控制器1423-1。
存储控制器1423-1把存储行写回到系统存储器中,并把完成消息发送给高速缓存相干控制器1421-3。高速缓存相干控制器1421-3把完成消息发送给高速缓存相干控制器1403-2。高速缓存相干控制器1403-2把完成消息发送给处理器1401-2。处理器1401-2把扩充源完成消息发送给高速缓存相干控制器1403-3。从处理器发送到存储控制器、表明事务完成以及提供关于存储行是处于拥有还是修改状态的信息的任何消息在本文中称作扩充源完成消息。根据各种实施例,扩充源完成消息包含表明存储行的状态在逐出之前在处理器高速缓存中是拥有还是修改的拥有/修改位。远程数据高速缓存1405-3中的存储行的状态这时可从未决转换到拥有/修改位所提供的任何状态。源完成通过高速缓存相干控制器1421-5被转发给存储控制器1423-2。应当注意,由于不需要相干目录,因此,即使在数据没有写回到归属群集时,扩充源完成也可用来提供拥有/修改信息。
图15是流程图,说明采用扩充源完成信息的远程数据高速缓存的管理。在1501,从处理器接收写回事务。在1503,数据以设置为未决的状态被写入远程数据高速缓存。在1505,确定数据是否要写回到存储器中。如果数据在1505写回到存储器中,则写回在1511被转发给归属群集。在1513,从归属群集接收完成消息。完成消息在1515被转发给处理器,并在1517从处理器接收扩充源完成。
在1521,从扩充源完成中确定是否设置了无效位。如果设置了无效位,则远程数据高速缓存状态在1551设置为无效。否则,在1553确定拥有或修改位是否设置为拥有。如果拥有或修改位被设置为拥有,则远程数据高速缓存状态在1555设置为共享。如果拥有或修改位被设置为修改,则远程数据高速缓存状态在1557设置为独占。即使当数据没有写回到存储器时,采用扩充源完成信息来管理远程数据高速缓存条目也允许有效的管理。在一个实例中,如果拥有或修改存储行被逐出,则在1505需要写回。在另一个实例中,如果共享或独占存储行被逐出,则在1505不需要写回。但是,远程数据高速缓存可具有用于以后对存储器写回的其它一些机制。如果不需要写回,则完成消息在1531发送给处理器。在1533,从处理器接收扩充源完成。在1535,确定是否在扩充源完成中设置了无效位。如果设置了无效位,则远程数据高速缓存状态在1541设置为无效。否则,确定拥有或修改位是否设置为拥有。如果拥有或修改位在1543设置为拥有,则远程数据高速缓存状态被设置为拥有。如果拥有或修改信息被设置为修改,则远程数据高速缓存状态在1547设置为修改。
数据可通过各种方式加载到远程数据高速缓存中。在以上所述的一个实例中,当高速缓存行从处理器高速缓存中逐出时加载数据。但是,数据也可通过其它方式来加载。例如,数据可在从存储控制器到读取块的数据响应上加载到远程数据高速缓存中。在这种情况中,行以共享状态安装到远程数据高速缓存中。例如,在图6中,当来自存储控制器的数据响应在请求群集的高速缓存相干控制器603-4上接收时,数据除了发送给处理器601-4之外还可发送给远程数据高速缓存。
虽然参照特定实施例具体表示和描述了本发明,但是,本领域的技术人员会理解,可进行所公开实施例的形式和细节上的变更,而没有背离本发明的范围或精神。例如,本发明的实施例可与通过点到点、交换机或总线体系结构连接的多个处理器群集配合使用。在另一个实例中,处理器的多个群集可共享单个高速缓存相干控制器,或者多个高速缓存相干控制器可用于单个群集中。因此,本发明的范围应当参照所附权利要求来确定。
权利要求
1.一种计算机系统,包括包括第一组多个节点和请求高速缓存相干控制器的请求群集,所述第一组多个节点具有第一组多个处理器以及与所述第一组多个处理器关联的第一组多个高速缓存,所述请求高速缓存相干控制器与远程数据高速缓存关联,其中所述远程数据高速缓存保持非请求群集的存储行中的数据;包括第二组多个处理器和请求高速缓存相干控制器的归属群集,所述第二组多个处理器以点到点体系结构互连。
2.如权利要求1所述的计算机系统,其特征在于,非请求群集包括所述归属群集和一个或多个远程群集。
3.如权利要求1所述的计算机系统,其特征在于,当保持数据的存储行被从所述第一组多个高速缓存中逐出时,所述远程数据高速缓存被用来高速缓存与非请求群集关联的存储行。
4.如权利要求1所述的计算机系统,其特征在于,当保持脏数据的高速缓存行被从所述第一组多个高速缓存中逐出时,产生写回。
5.如权利要求4所述的计算机系统,其特征在于,当以修改或拥有状态保持所述行时,数据为脏的。
6.如权利要求4所述的计算机系统,其特征在于,逐出存储行包括把数据写回到存储器。
7.如权利要求1所述的计算机系统,其特征在于,多个远程数据高速缓存与所述计算机系统中的多个高速缓存相干控制器关联。
8.如权利要求1所述的计算机系统,其特征在于,数据可在所述远程数据高速缓存中以修改、独占、拥有、共享和无效状态来保持。
9.如权利要求8所述的计算机系统,其特征在于,数据还可以未决状态来保持。
10.如权利要求9所述的计算机系统,其特征在于,在所述高速缓存相干控制器从所述第一组多个处理器其中之一接收写回之后,数据以未决状态写入所述远程数据高速缓存。
11.如权利要求9所述的计算机系统,其特征在于,在从所述第一组多个处理器其中之一接收源完成之后,如果所述源完成表明使所述行无效,则数据以无效状态写入所述远程数据高速缓存。
12.如权利要求9所述的计算机系统,其特征在于,在从所述第一组多个处理器其中之一接收源完成之后,如果所述源完成表明未使所述行无效,则数据以所述修改、独占、拥有或共享状态写入所述远程数据高速缓存。
13.如权利要求1所述的计算机系统,其特征在于,所述请求高速缓存相干控制器从所述归属群集接收表明所述存储行是以共享状态还是以拥有状态来保持的信息。
14.如权利要求1所述的计算机系统,其特征在于,在所述归属群集响应读取块请求之后,数据以所述共享状态写入所述远程数据高速缓存。
15.一种用于维持相干性的方法,所述方法包括在请求高速缓存相干控制器上从请求群集处理器接收写回,所述写回与从对应于所述请求群集处理器的高速缓存中逐出的存储行关联;把与所述存储行关联的数据写入远程数据高速缓存,其中所述远程数据高速缓存保持非请求群集的地址空间中的存储行中的数据;接收表明所述存储行是以修改状态还是以拥有状态来保持的信息。
16.如权利要求15所述的方法,其特征在于,从具有相干目录的归属群集高速缓存相干控制器接收表明所述存储行是以修改状态还是以拥有状态来保持的信息。
17.如权利要求15所述的方法,其特征在于,从所述请求群集处理器接收表明所述存储行是以修改状态还是以拥有状态来保持的信息。
18.如权利要求15所述的方法,其特征在于,在源完成消息中从所述请求群集处理器接收表明所述存储行是以修改状态还是以拥有状态来保持的信息。
19.如权利要求15所述的方法,其特征在于,还包括接收表明插入请求是否使所述存储行无效的信息。
20.如权利要求19所述的方法,其特征在于,如果插入请求使所述存储行无效,则所述远程数据高速缓存中的所述存储行的状态被设置为无效。
21.如权利要求20所述的方法,其特征在于,如果未使所述存储行无效,则所述远程数据高速缓存中的所述存储行的状态被设置为共享或独占。
22.如权利要求21所述的方法,其特征在于,如果在接收所述写回之前所述存储行以拥有状态来保持,则所述远程数据高速缓存中的所述存储行的状态被设置为共享。
23.如权利要求21所述的方法,其特征在于,如果在接收所述写回之前所述存储行以修改状态来保持,则所述远程数据高速缓存中的所述存储行的状态被设置为独占。
24.一种用于维持相干性的方法,所述方法包括在请求高速缓存相干控制器上从归属群集接收读取块响应,所述读取块响应与存储行关联;以及把与所述读取块响应关联的数据写入远程数据高速缓存,其中所述远程数据高速缓存保持非请求群集的地址空间中的存储行中的数据。
25.如权利要求24所述的方法,其特征在于,与所述读取块响应关联的数据以共享状态写入所述远程数据高速缓存。
26.如权利要求24所述的方法,其特征在于,与所述读取块响应关联的数据以独占状态写入所述远程数据高速缓存。
27.一种计算机系统,包括包括第一组多个节点和请求高速缓存相干控制器的请求群集,所述第一组多个节点具有第一组多个处理器以及与所述第一组多个处理器关联的第一组多个高速缓存,所述请求高速缓存相干控制器与远程数据高速缓存关联,其中所述远程数据高速缓存保持非请求群集的存储行中的数据;包括第二组多个处理器和请求高速缓存相干控制器的归属群集,所述第二组多个处理器以点到点体系结构互连;其中所述第一组多个处理器可用于把信息发送给所述请求高速缓存相干控制器,该信息表明高速缓存行是拥有的还是修改的,以便修改所述远程数据高速缓存中的条目。
28.如权利要求27所述的计算机系统,其特征在于,所述第一组多个处理器还可用于把信息发送给所述请求高速缓存相干控制器,该信息表明所述高速缓存行是否为无效的。
29.如权利要求27所述的计算机系统,其特征在于,非请求群集包括所述归属群集和一个或多个远程群集。
30.如权利要求27所述的计算机系统,其特征在于,当保持数据的存储行被从所述第一组多个高速缓存中逐出时,所述远程数据高速缓存被用来高速缓存与非请求群集关联的存储行。
31.如权利要求27所述的计算机系统,其特征在于,当高速缓存行被逐出时发送信息,所述信息表明高速缓存行是拥有的还是修改的。
32.如权利要求31所述的计算机系统,其特征在于,逐出高速缓存行包括把数据写回到存储器。
33.如权利要求27所述的计算机系统,其特征在于,多个远程数据高速缓存与所述计算机系统中的多个高速缓存相干控制器关联。
34.如权利要求27所述的计算机系统,其特征在于,数据可在所述远程数据高速缓存中以修改、独占、拥有、共享和无效状态来保持。
35.如权利要求34所述的计算机系统,其特征在于,数据还可以未决状态来保持。
36.如权利要求35所述的计算机系统,其特征在于,在所述高速缓存相干控制器从所述第一组多个处理器其中之一接收写回之后,数据以未决状态写入所述远程数据高速缓存。
37.一种计算机系统,包括用于在请求高速缓存相干控制器上从请求群集处理器接收写回的部件,所述写回与从对应于所述请求群集处理器的高速缓存中逐出的存储行关联;用于把与所述存储行关联的数据写入远程数据高速缓存的部件,其中所述远程数据高速缓存保持非请求群集的地址空间中的存储行中的数据;用于接收表明所述存储行是以修改状态还是以拥有状态来保持的信息的部件。
38.如权利要求37所述的计算机系统,其特征在于,从具有相干目录的归属群集高速缓存相干控制器接收表明所述存储行是以修改状态还是以拥有状态来保持的信息。
39.如权利要求37所述的计算机系统,其特征在于,从所述请求群集处理器接收表明所述存储行是以修改状态还是以拥有状态来保持的信息。
40.如权利要求37所述的计算机系统,其特征在于,在源完成消息中从所述请求群集处理器接收表明所述存储行是以修改状态还是以拥有状态来保持的信息。
41.如权利要求37所述的计算机系统,其特征在于,还包括接收表明插入请求是否使所述存储行无效的信息。
42.如权利要求41所述的计算机系统,其特征在于,如果插入请求使所述存储行无效,则所述远程数据高速缓存中的所述存储行的状态被设置为无效。
43.一种计算机系统,包括用于在请求高速缓存相干控制器上从归属群集接收读取块响应的部件,所述读取块响应与存储行关联;以及用于把与所述读取块响应关联的数据写入远程数据高速缓存的部件,其中所述远程数据高速缓存保持非请求群集的地址空间中的存储行中的数据。
全文摘要
根据本发明,提供用于提高多处理器、多群集系统中的数据存取效率的方法及装置。允许各种事务在本地完成的机制通过提供与系统中的各种群集关联的远程数据高速缓存来实现。远程数据高速缓存接收远程群集中保持的存储行的数据和状态信息。采用包括相干目录和扩充源完成消息在内的各种机制,把状态信息提供给远程数据高速缓存。
文档编号G06F12/08GK1829978SQ200480020505
公开日2006年9月6日 申请日期2004年5月20日 优先权日2003年5月20日
发明者D·B·格拉斯科 申请人:新信息系统公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1