CN1860452A - 提供远程数据高速缓存早期回应的方法和设备 - Google Patents
提供远程数据高速缓存早期回应的方法和设备 Download PDFInfo
- Publication number
- CN1860452A CN1860452A CNA2004800285759A CN200480028575A CN1860452A CN 1860452 A CN1860452 A CN 1860452A CN A2004800285759 A CNA2004800285759 A CN A2004800285759A CN 200480028575 A CN200480028575 A CN 200480028575A CN 1860452 A CN1860452 A CN 1860452A
- Authority
- CN
- China
- Prior art keywords
- processor
- control unit
- bunch
- speed cache
- correlation control
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/082—Associative directories
Abstract
本发明提供了提高多处理器、多簇系统的数据访问效率的方法和设备。通过提供与系统的各簇相连的数据高速缓存,实现了可在本地完成各种处理事务的机制。所述远程数据高速缓存接收用于远程簇具有的存储线的数据和状态信息。如果远程数据高速缓存具有与请求对应的信息,则向发出请求的处理器提供带有完成指示符的回应。所述完成指示符允许无需查询本地和远程节点满足所述请求。
Description
相关申请
本申请涉及2002年11月4日提交的美国专利申请No.10/288,347和10/288,399,这两份申请的标题均为“管理查询请求的方法和设备(Methods and Apparatus For Managing Probe Request)”,申请人为David B.Glasco,出于各种目的本文引用参考其全部内容。本发明申请还涉及David B.Glasco于2003年5月20日提交的美国专利申请No.10/442,845,其标题为“提供高速缓存状态信息的方法和设备(Methods and Apparatus For Providing Cache State Information)”,出于各种目的本文引用参考其全部内容。
技术领域
本发明大体上涉及多处理器系统的数据访问。更具体地,本发明提供了一种提高数据访问效率的技术,能够同时保持具有多簇结构的多处理器系统的超高速缓存相关性。
背景技术
各种性能限制已导致了对点对点结构的开发,这种结构用于连接具有单个存储空间的系统中的各个处理器。在一个实例中,单个处理器可通过多个点对点连接互相直接连接,形成处理器簇。也可以连接各个独立处理器簇。所述点对点连接显著地增加了协同处理和多重处理功能的带宽。
在每个簇中形成了机制,可减少计算机系统中各簇内和互相之间的事务处理数量。然而,在许多情况下,所述机制没有以优化方式减少事务处理的数量。在多处理器、多簇系统中,各处理器发出查询请求,以便在特定的存储线上执行操作,存储线可能存储在本地或远程节点。一些常见的操作包括存储线上读出信息、共享读出信息和读出信息改进等操作。在许多实例中,即使在提供另外的机构后便能在本地处理事务的情况下,也仍然将处理事务发送到远程的簇。因此,在本地处理事务的机构受到限制。
因此,希望能提供提高高速缓存访问请求效率的技术,用于具有多个簇的系统,所述簇由点对点连接的多个处理器组成。
发明内容
根据本发明,提供了一种在多处理器、多簇系统中改进数据访问效率的方法和设备。通过提供与系统的各个簇相关联的远程数据高速缓存,实现了可在本地完成各种处理事务的机制。远程数据高速缓存接收用于远程簇具有的存储线的数据和状态信息。如果在远程数据高速缓存具有与请求对应的信息,则向发出请求的处理器提供带有完成指示符的回应。所述完成指示符允许无需查询本地和远程节点满足请求。
在一个实施例中,提出了一种向高速缓存访问请求提供回应的方法。高速缓存相关控制器从处理器簇中的处理器接收与存储线相关联的高速缓存访问请求,簇中的处理器以点对点的结构相互连接。从与高速缓存相关控制器相关联的远程数据高速缓存得到高速缓存访问请求的回应信息。带有完成指示符的回应信息提供给处理器。
在另一个实施例中,提出了一种处理簇。处理簇包括多个处理器和高速缓存相关控制器。多个处理器以点对点结构相互连接。高速缓存相关控制器配置成可接收多个处理器中的第一处理器的与存储线相关联的高速缓存访问请求,从与高速缓存相关控制器相关联的远程数据高速缓存得到高速缓存访问请求的回应信息,带有完成指示符的回应信息提供给处理器。
通过参考本说明书的其余部分和附图,可以进一步了解本发明的性质和优点。
附图说明
通过下面参考附图进行的说明,可以清楚地了解本发明,附图显示了本发明的特定实施例。
图1A和图1B是显示具有多个簇的系统的示意图。
图2是具有多个处理器的簇的示意图。
图3是高速缓存相关控制器的示意图。
图4是显示单个簇的处理器的数据访问请求的事务处理流的视图。
图5A-5D是显示高速缓存相关控制器功能的视图。
图6显示了具有多个查询回应的查询请求的事务处理流。
图7是高速缓存相关目录的图表。
图8是远程数据高速缓存的图表。
图9显示了使用远程数据高速缓存的事务处理流。
具体实施方式
现在,将详细讨论本发明的一些实施例,包括发明人认为的实现本发明的最佳模式。附图中示出了这些具体实施例的实例。尽管本发明是参考这些附图进行说明的,但应理解,不希望将本发明限于所介绍的实施例。相反地,希望本发明包括附录的权利要求定义的本发明的精神和范围内的其他方案、修改和等同物。处理器之间具有点对点通信的多处理器结构适合作为本发明的具体实施例。在以下说明中,显示了许多具体的细节,以便让读者更透彻地理解本发明。尽管没有某些或全部这些具体细节本发明也能实施。为避免不必要地干扰对本发明的介绍,没有详细说明公知的处理操作。并且,本发明申请涉及的特定单个物体包括这样的可能性,即除非上下文明确地指明其他情况,可以使用多于一个物体来实现本发明的方法和设备。
提出了一种可提高多处理器、多簇系统的数据访问效率的技术。在点对点结构中,处理器簇包括点对点直接相互连接的多个处理器。在共享相同内存空间的系统中,通过使用点对点连接而不是传统的共享总线或是外部网络,多个处理器可高效地使用。同样,通过使基于传统总线和外部网络的多处理器结构免于许多带宽和等待时间的限制,处理和网络效率得到提高。然而,根据各实施例,线性增加点对点结构连接的处理器数量将导致连接多个处理器的连接数量的指数增长。为减少所用的连接数量和进一步模块化使用点对点结构的多处理器系统,可使用多个簇。
根据各个实施例,多个处理器簇通过点对点结构进行互连。每个处理器簇包括处理簇之间通信的高速缓存相关控制器。在一个实施例中,连接处理器的点对点结构也用来连接处理器簇。
通过高速缓存相关控制器,建立多簇系统可以用不一定支持多簇的处理器。通过用高速缓存相关控制器代表本地事务中的非本地节点,可以建立这样的多簇系统,使得本地节点不需关心本地簇外存在的节点。下面将提供高速缓存相关控制器的更多细节。
在单簇系统中,可以通过串行化点发送所有数据访问请求,来保持高速缓存的相关性。文中将任何对数据访问请求进行排序的机构称为串行化点。串行化点的一个例子是存储控制器。单簇系统的各个处理器将数据访问请求发送到存储控制器。在一个实例中,存储控制器配置成可串行化或锁定数据访问请求,使得在任何特定时刻,对于给定的存储线仅允许一个数据访问请求。如果其他处理器也试图访问同一存储线,则将该数据访问企图阻挡,直到存储线解锁。存储控制器允许在多处理器、单簇系统中保持高速缓存相关性。
串行化点也可以用于多处理器、多簇系统,其中,各个簇中的处理器共享一个地址空间。通过使用一个地址空间,内部的点对点连接可以显著地改善簇间通信,超越基于传统的外部网络的多簇系统进行的簇间通信。各个簇中的处理器将数据访问请求发送给存储控制器,其与如归属簇这样的特定簇相关联。类似地,存储控制器能串行化所有不同簇的数据请求。然而,多处理器、多簇系统中的串行化点可能不如多处理器、单簇系统的串行化点效率高。换言之,各簇之间传输的等待时间这样的因素造成的延时可以对各个数据访问请求的回应时间造成不利影响。应当注意,在多处理器环境中使用查询也可以造成延时。
尽管在使用共享存储空间的结构的簇间事务处理的延时远小于使用以太网或令牌网之类外部网络的传统信息传输环境中的延时,但是,即使很小的延迟也是非常重要的影响因素。在一些应用中,在一秒钟之内可能有几百万的处理器的数据访问请求。因而,任何延时均可以对处理器性能造成不利影响。
根据各个实施例,查询管理用来提高多处理器、多簇系统的访问数据的效率。文中,查询是指从节点得到回应维持系统的高速缓存相关性的机制。在一个实例中,将探查高速缓存的机制称为查询。文中,将过滤或减少传输到各个节点的查询或查询请求数量的任何机制称为查询管理。在一个实例中,查询管理包括辨别查询请求,以确定是否查询可传输到数量减少的实体。
在典型的实施中,请求发送给存储控制器,该控制器将查询传播至系统的各个节点。这样的系统中,不知道高速缓存线的状态。对系统中的所有节点进行查询,且请求簇接受每个节点的回应。在具有相关目录的系统中,与各存储线相关的状态信息可以用来减少事务处理数量。文中将保持各存储线相关状态信息的实体称为相关目录。相关目录通常包括本地簇存储线的信息,其可存储在远程簇中。根据各个实施例,通过推断本地高速缓存的状态,相关目录可减少对远程簇的查询数量。在其他实施例中,相关目录用于取消传输请求至归属簇的存储控制器。
根据各个实施例,每个簇提供了另一级高速缓存,当与每个处理器相关的高速缓存不具有要求的存储线时,在发送查询到归属簇之前,可检查与簇相关的高速缓存。在一个实例中,远程数据高速缓存设置在各簇,通过每个簇的高速缓存相关控制器可以访问远程数据高速缓存。远程数据高速缓存允许在不查询本地或远程节点或不将请求发送至归属存储控制器,在本地完成事务处理。
图1A可以使用本发明技术的多簇、多处理器系统的实例的示意图。每个处理簇101、103、105和107可包括多个处理器。处理簇101、103、105和107通过点对点连接11a-f相互连接。在一个实施例中,图1A示出的多簇结构的多个处理器共享同一存储空间。在这个实例中,点对点连接11a-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表示的JATG接口,与处理器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可以包括双倍数据速率(DDR)内存,实际上,以双列直插内存模块(DIMMs)的形式提供内存。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为随后的请求解锁存储线。应当注意,CPU401-1、CPU401-2、CPU401-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,并由后者将查询回应发送至处理器601-3。高速缓存相关控制器621-4也发送读回应给高速缓存相关控制器603-4,后者将读回应发送给处理器601-4。尽管查询和查询回应携带了维持系统高速缓存相关性的信息,但读回应可以携带实际得到的数据。在接收得到的数据后,处理器601-4将源完成(source done)的回应发送给高速缓存相关控制器603-5。根据各个实施例,现在,请求簇600完成了所述事务处理。高速缓存相关控制器603-5将源完成的信息发送给高速缓存相关控制器621-5。高速缓存相关控制器621-5将源完成的信息发送给存储控制器623-2。在接收到源完成的信息时,存储控制器623-2可以解锁存储线,归属簇620的事务处理现在完成。另一个处理器现在可访问已解锁的存储线。
应当注意,因为在将查询回应发送给高速缓存相关控制器603-3之前,高速缓存相关控制器621-3等待远程簇的查询回应,因而延时存在于系统。根据各个实施例,高速缓存相关控制器603-3收集查询回应。通过远程簇发送查询回应到归属簇,在归属簇高速缓存相关控制器处,归属簇查询响应和远程簇查询响应均延迟。在一个实例中,远程簇查询响应必须行进额外的中继段以到达请求簇。在远程簇和请求簇之间传输查询回应的等待时间可以远小于通过归属簇在远程簇和请求簇之间传输查询回应的等待时间。由于这个增加的中继段,也延迟了归属簇查询回应。
所属领域技术人员将认识到,包括请求、查询和回应信息的特定事务处理顺序可根据于具体情况改变。在一个实例中,高速缓存相关控制器621-3等待接收来自存储控制器623-1的读回应信息,然后将查询回应和读回应信息发送给高速缓存相关控制器603-3。在另外的实例中,高速缓存相关控制器可以是产生请求的实际处理器。某些处理器可以作为处理器又能作为高速缓存相关控制器。并且考虑了各种与读和写相关的数据访问请求信息、查询和回应。如上所述,可以将任何探查高速缓存的信息称为查询。类似地,可以将任何向存储控制器指示存储线应解锁的信息称为源完成(source done)信息。
应当注意,图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和对应于远程簇的高速缓存相关控制器641-1。如上所述,使用多簇结构导致了延时,业务量和处理开销增大等其他不希望的因素。
即使不需查询所有簇,在多簇系统中查询也传输到所有簇。例如,如果与查询请求相关的存储线是无效的,或不存在于高速缓存,可以不需要查询与各个簇相关的所有高速缓存。在不具有相关目录的系统中,通常需要查探所有簇。但是,通过使用相关目录,系统的事务处理的数量可通过仅查询系统的簇的子集来减小,减少业务量和处理开销。
通过使用相关目录,可以保持全部存储线的状态信息(相对于每个簇),且通过特定簇中的存储控制器或高速缓存相关控制器可以访问所述信息。根据各个实施例,相关目录跟踪和管理查询的分布,以及对回应的接收。如果相关目录信息表明不需要对特定簇进行查询,则可以不查询特定簇。在一个实例中,相关目录表明不必对请求和远程簇进行查询。归属簇的高速缓存相关控制器查询本地节点,且不将查询发送至请求和远程簇。然后,归属簇的高速缓存相关控制器接收到查询回应后发送回应至请求簇。然而,在典型的多簇系统中,请求簇预期各个受查询簇有预定数目的回应。在一个实例中,如果多簇系统包括四个簇,请求簇将预期有与所有四个簇的节点相关的查询回应。
图7是相关目录的一个实例,相关目录可用来管理和过滤查询。存在各种的相关目录。在一个实例中,完整目录为系统的每条存储线提供了条目。在这个实例中,存储控制器保存了相关目录,且通过高速缓存相关控制器能访问目录。然而,在具有大量系统存储器的系统中,完整目录可能效率不高或是不切实际。根据各个实施例,提供了具有有限数量条目的稀疏目录,各条目与选定的一组存储线相关联。在一个实例中,相关目录701包括状态信息713、无效数据拥有者信息715、和与存储线711相关的占有向量717。在一些实施例中,存储线状态是修改、拥有、共享和无效。
在无效状态下,任何与远程簇相关的高速缓存中,没有可进行存储的存储线。在共享状态下,存储线可能存在于多于一个高速缓存中,但存储线是有效的,且在任何高速缓存中不能进行改动。当存储线处于共享状态时,可以检查占有向量717,以确定哪些高速缓存共享了相关数据。可以用N位的字符串的形式来实现占有向量,其中,每一位代表N个簇的高速缓存中的可用数据。文中,跟踪哪些簇在其高速缓存具有复制的相关存储线的机构称为占有向量。具有地址741的存储线处于共享状态,占有向量717表明簇1和3分别在其高速缓存中具有复制的共享存储线。
在修改状态下,存储线已经进行了修改,且修改的复制品存在于与特定簇相关的高速缓存。当存储线修改时,可以检查无效数据拥有者信息区715,以确定无效数据的拥有者。文中,指示哪个簇在其高速缓存内拥有经修改的存储线复制品的机构称为无效数据拥有者信息区。在一个实例中,与地址781相关的存储线进行了修改,无效数据拥有者区715指示簇2拥有该存储线。
在拥有状态下,单个高速缓存拥有无效存储线,多个其他的高速缓存也可以共享所述无效存储线。该存储线由拥有的高速缓存进行了修改,现在状态变成了只读。在这种状态下,存储器中的复制品是失效的。如果存储线处于拥有状态,则可以访问无效数据拥有者区来确定哪个簇拥有所述无效数据。在一个实例中,与地址761相关的存储线处于拥有状态,由簇4所有。也可以检查占有向量717,以确定哪些其他的高速缓存可能具有相关数据。在这个实例中,占有向量717表明簇2、3和4分别在其高速缓存中具有与存储线相关的复制数据。
尽管相关目录701包括修改、拥有、共享和无效四种状态,但应当注意,特定的实施方式可以使用不同状态的组合。在一个实例中,系统可以具有修改、专有、拥有、共享和无效五种状态。在专有状态下,远程簇的特定节点可以访问存储线,但远程簇的节点还没有将数据写到高速缓存线。使用本发明的技术,则可以具有多种不同的存储线状态。
当请求簇的处理器在特定存储线进行事务处理,如读请求时,处理器访问相关的高速缓存。在许多实施中,特定簇中的每个处理器具有相关的高速缓存。如果在高速缓存中没有存储线,则通过高速缓存相关控制器将请求发送至归属簇。在一个实施例中,归属簇是由具有地址空间的处理器组成的簇,其中地址空间包括请求存储线。然后,高速缓存相关控制器访问相关目录,以确定应当查询哪些簇来满足请求。相关目录使得在簇之间传输的查询数量减少。
发明人David B.Glasco于2002年11月4日提交的美国专利申请No.10/288,347和10/288,399介绍了通过访问相关目录减少系统中的事务处理数量的机构,两份申请的标题均为“管理查询请求的方法和装置(Methods and Apparatus for Managing Probe Request)”,本文为了各种目的参考引用其全部内容。通过减少簇间的事务处理数目,带宽得以保留,且事务处理等待时间减少,因而系统的效率得到提升。相关目录提供了一种减少簇间处理事务的机构。根据各个实施例,远程的数据高速缓存是另一种减少簇间处理事务的机构。
根据各个实施例,每个簇中配备了另一级高速缓存,如果每个处理器相关的高速缓存没有包含要求的存储线,则先检查与簇相关的高速缓存,然后将查询发送至归属簇。在一个实例中,每个簇包括了远程数据高速缓存,且通过每个簇的高速缓存相关控制器能够访问高速缓存。与各处理器相关的高速缓存不同,在这个实例中,簇中的多个处理器设置一个远程数据高速缓存。如果处理器请求的存储线没有在与特定处理器相关的高速缓存中找到,高速缓存相关控制器不必将请求发送至归属簇。相反地,高速缓存相关控制器可以检查远程数据高速缓存,以确定存储线是否存在于远程数据高速缓存中。如果存储线存在于远程数据高速缓存,则不需将请求发送至归属簇,而是由高速缓存相关控制器使用远程数据高速缓存中的数据对处理事务作出回应。
通过使用本发明的技术,远程数据高速缓存可以对读数据、读共享数据、读修改的数据之类的请求进行回应,无需将请求发送至归属簇。因此,不查询本地或远程的节点便可完成事务处理。
图8是远程数据高速缓存的图表。远程数据高速缓存允许高速缓存相关控制器在本地高效地处理特定类型的处理事务,无需将查询发送至远程簇。文中,将任何保存远程簇的数据的高速缓存称为远程数据高速缓存,这些数据本地处理器可访问,但访问是在本地高速缓存访问之后而在归属簇存储控制器访问之前进行。在一个实例中,高速缓存相关控制器访问远程数据高速缓存之后,进行读数据、读共享数据、或读修改的数据等请求发送至归属簇。远程数据高速缓存允许本地簇处理事务,无需将查询发送至远程簇。
根据各个实施例,远程数据高速缓存801包括存储线区811。在这个区设置了各存储线的地址,允许高速缓存相关控制器进行高效的访问,确定特定的存储线是否存在于远程数据高速缓存。当某请求远程数据高速缓存中没有,而存储线从处理器高速缓存取出或从归属存储控制器取得时,通常会将条目添加到远程数据高速缓存。远程数据高速缓存801也包括状态信息813和实际存储数据815。在一个实例中,地址821处于无效状态,且不具有相关的高速缓存数据。应当注意,在典型情况下,不会将无效状态的存储线包括到远程数据高速缓存中。地址841包括共享状态的数据843。在一个实例中,可以使用远程数据高速缓存中共享状态的数据来满足读数据和读共享数据的请求,无需将请求发送到归属簇。地址861具有拥有状态的数据863。根据各个实施例,拥有状态的数据可以用来满足读数据和读共享数据的处理事务。
应当指出,在某些情况下,远程数据高速缓存801中的数据不能处于修改状态。对于具有远程数据高速缓存的系统,可以使用远程数据高速缓存来存储远程簇的数据。在这样的系统中,通常采用标准的MEOSI高速缓存相关协议。在这个协议中,本地处理器高速缓存可从高速缓存取得存储线,如果存储线是无效的(处于修改或拥有状态),则将所述数据回写到存储线。处理器高速缓存和系统存储器之间的远程数据高速缓存将观察到回写,但不具有足够的信息来确定怎样将存储线设置到远程数据高速缓存。而一般处理器高速缓存具有这种信息。
然而,远程数据高速缓存与高速缓存相关控制器相关联。在一些实例中,高速缓存相关控制器不具有涉及从处理器高速缓存取出的数据是否处于修改或拥有状态的信息。因而,远程数据高速缓存采用保守的方法以拥有状态对其进行安装,即使存储线可能以修改状态设置。类似地,即使可以专有状态设置存储线,远程数据高速缓存有时也以共享状态进行安装。通过采用保守方法,远程数据高速缓存便不能处理读修改数据之类的事务,而如果知道存储线处于专有或修改状态,这类事务则可以处理。因而将数据发送至归属簇。将数据发送至归属簇使用了本不必使用的系统资源。
有几种机构既允许远程数据高速缓存设置共享或拥有状态的存储线,也允许设置专用或修改状态的存储线。在一个实例,从相关目录得到将存储线设置到远程数据高速缓存的修改或拥有状态的信息。在另一个实例中,状态信息从处理器的增加的源完成信息得到。
这些机构不仅允许远程数据高速缓存中的数据以共享或拥有状态保存,也允许以修改或专用状态保存。远程数据高速缓存以修改或专用状态保存的数据可以满足读数据、读共享数据和读修改数据的处理事务。其他用于填充远程数据高速缓存的机构可参考David B.Glasco于2003年5月20日提交的题为“提供高速缓存状态信息的方法和装置(Methods and Apparatus for Providing Cache StateInformation)”的美国专利申请No.10/442,845,本文出于各种目的参考引用其全部内容。
应当注意,远程数据高速缓存801也保存了未决状态的信息。用未决状态来保存已初步进入远程数据高速缓存但没有经过源完成确认的数据。在将数据写入远程数据高速缓存之后和接收到最终的回应处理之前,处理器接收的查询可以使保存于未决状态的数据无效。
图9是示出了一种事务流的示意图,示出了如何使用远程数据高速缓存。根据各个实施例,请求簇900的处理器901-1发送数据访问请求,如读请求,至高速缓存相关控制器903-1。高速缓存相关控制器903-1跟踪悬挂缓冲区中的处理事务,并确定使用远程数据高速缓存905是否能本地处理所述请求。根据各个实施例,如果该请求是特定存储线的读数据或读共享数据请求,则如果远程数据高速缓存中的存储线以修改、拥有、专有或共享状态中的任一种状态保存,便可本地处理所述请求。换言之,如果存储线的有效拷贝处于远程数据高速缓存中,则可以本地处理请求。如果请求是读修改数据之类的事务,则如果存储线以修改或专用状态保存在远程数据高速缓存,便可本地处理请求。如果本地处理请求,则远程数据高速缓存将信息提供给高速缓存相关控制器903-3。
在典型的实施方式中,请求处理节点可预期事务结束之前有其他处理节点的回应。如果通过远程数据高速缓存本地可满足处理事务,则在最佳情况下,不必对其他处理节点进行查询,因而这些节点也不会产生回应。在通过远程数据高速缓存能满足本地处理事务的情况下,高速缓存相关控制器可能不得不查询系统的其他节点,或高速缓存相关控制器将代表系统的其他节点产生回应,查询将导致被查询的节点将回应发送给请求节点。然而,发送无关的查询和查询回应将减少远程数据高速缓存的本地满足处理事务所带来的好处。高速缓存相关控制器具有使用远程数据高速缓存完成处理事务所需的所有信息,并能用信号将完成事务处理的信息通知请求处理器。
因此,本发明的技术提供了允许高速缓存相关控制器通过远程数据高速缓存满足本地处理事务且无需发送无关查询和查询回应的机构。在一个实施例中,本发明的技术可使得高速缓存相关控制器用回应信息和完成指示符对请求处理节点作出回应。文中将任何把不应当期望其他回应的信息通知请求处理节点的机制称为完成指示符。在一个实例中,完成指示符是带有高速缓存相关控制器的回应信息的完成位(completion bit)。回应信息可以包括状态信息和远程数据高速缓存的数据。根据各个实施例,回应信息提供给请求处理器901-3。然后,在识别完成位后,请求处理器901-3发送源完成信息给高速缓存相关控制器903-5。如果没有提供完成位,则请求处理器901-3通常预期系统中其他节点的回应。在一个实例中,请求处理器901-3预期来自请求处理器簇的节点的回应,和来自归属簇高速缓存相关控制器的回应。
尽管通过本发明的具体实施例对本发明进行了详细的图示和说明,所属领域技术人员应知道,可以对公开的实施例进行形式和细节上的变化,未脱离本发明的精神或范围。例如,本发明的实施例可以应用通过点对点、开关或总线结构连接的多个处理器簇。在另一个实例中,处理器构成的多个簇可以共享单个高速缓存相关控制器,或者,在单个簇可以使用多个高速缓存相关控制器。因而,本发明的范围可参考附录的权利要求来确定。
Claims (20)
1.一种对高速缓存访问请求提供回应的方法,所述方法包括:
接收处理器簇中处理器的高速缓存访问请求,所述请求与高速缓存相关控制器的存储线相关联,所述簇中的处理器以点对点结构形式互连;
从与所述高速缓存相关控制器相关联的远程数据高速缓存获得高速缓存访问请求的回应信息;
提供带有完成指示符的回应信息给所述处理器。
2.如权利要求1所述的方法,其特征在于,回应信息设置在回应包中。
3.如权利要求1或2所述的方法,其特征在于,回应信息包括状态信息。
4.如权利要求2所述的方法,其特征在于,回应信息包括数据。
5.如权利要求1-4中任一项所述的方法,其特征在于,所述完成指示符通知所述处理器,高速缓存相关控制器的回应是仅有的回应。
6.如权利要求1-5中任一项所述的方法,其特征在于,所述处理器是请求簇中的请求处理器。
7.如权利要求1-6中任一项所述的方法,其特征在于,所述完成指示符允许所述高速缓存相关控制器不查询本地或远程节点。
8.如权利要求1-7中任一项所述的方法,其特征在于,在识别所述回应中的完成指示符后,所述处理器发出源完成的信息。
9.如权利要求8所述的方法,其特征在于,所述处理器将源完成的信息发送给高速缓存相关控制器。
10.如权利要求9所述的方法,其特征在于,所述处理器将源完成的信息发送给用作存储控制器的所述高速缓存相关控制器。
11.一种处理簇,包括:
多个以点对点结构连接的处理器;
高速缓存相关控制器,所述控制器配置成可接收所述多个处理器中的第一处理器的与存储线相关联的高速缓存访问请求,从与所述高速缓存相关控制器相关联的远程数据高速缓存获得所述高速缓存访问请求的回应信息,将带有完成指示符的回应信息提供给所述处理器。
12.如权利要求11所述的处理簇,其特征在于,回应信息设置在回应包中。
13.如权利要求11或12所述的处理簇,其特征在于,回应信息包括状态信息。
14.如权利要求12所述的处理簇,其特征在于,回应信息包括数据。
15.如权利要求11-14中任一项所述的处理簇,其特征在于,所述完成指示符通知所述第一处理器,所述高速缓存相关控制器的回应是仅有的回应。
16.如权利要求11-15中任一项所述的处理簇,其特征在于,所述第一处理器是请求簇中的请求处理器。
17.如权利要求11-16中任一项所述的处理簇,其特征在于,所述完成指示符允许高速缓存相关控制器不查询本地或远程节点。
18.如权利要求11-17中任一项所述的处理簇,其特征在于,在识别所述回应中的完成指示符后,所述第一处理器发出源完成的信息。
19.如权利要求18所述的处理簇,其特征在于,所述第一处理器向所述高速缓存相关控制器发送源完成的信息。
20.一种高速缓存相关控制器,包括:
装置,接收处理器簇的处理器的高速缓存访问请求,所述请求与高速缓存相关控制器的存储线相关联,所述簇中的处理器以点对点结构连接;
装置,从与所述高速缓存相关控制器相关联的远程数据高速缓存获得所述高速缓存访问请求的回应信息;和
装置,向所述处理器提供带有完成指示符的回应信息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/635,703 US7249224B2 (en) | 2003-08-05 | 2003-08-05 | Methods and apparatus for providing early responses from a remote data cache |
US10/635,703 | 2003-08-05 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1860452A true CN1860452A (zh) | 2006-11-08 |
Family
ID=34116290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2004800285759A Pending CN1860452A (zh) | 2003-08-05 | 2004-07-29 | 提供远程数据高速缓存早期回应的方法和设备 |
Country Status (8)
Country | Link |
---|---|
US (1) | US7249224B2 (zh) |
EP (1) | EP1652091B1 (zh) |
JP (1) | JP2007501466A (zh) |
CN (1) | CN1860452A (zh) |
AT (1) | ATE502335T1 (zh) |
CA (1) | CA2533203A1 (zh) |
DE (1) | DE602004031852D1 (zh) |
WO (1) | WO2005017755A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113924625A (zh) * | 2019-06-07 | 2022-01-11 | 美光科技公司 | 非易失性存储器系统中的操作一致性 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7216205B2 (en) * | 2004-01-12 | 2007-05-08 | Hewlett-Packard Development Company, L.P. | Cache line ownership transfer in multi-processor computer systems |
US20070233932A1 (en) * | 2005-09-30 | 2007-10-04 | Collier Josh D | Dynamic presence vector scaling in a coherency directory |
US7404045B2 (en) * | 2005-12-30 | 2008-07-22 | International Business Machines Corporation | Directory-based data transfer protocol for multiprocessor system |
US7680987B1 (en) * | 2006-03-29 | 2010-03-16 | Emc Corporation | Sub-page-granular cache coherency using shared virtual memory mechanism |
JP5338375B2 (ja) * | 2009-02-26 | 2013-11-13 | 富士通株式会社 | 演算処理装置、情報処理装置および演算処理装置の制御方法 |
US8447934B2 (en) * | 2010-06-30 | 2013-05-21 | Advanced Micro Devices, Inc. | Reducing cache probe traffic resulting from false data sharing |
US8656115B2 (en) | 2010-08-20 | 2014-02-18 | Intel Corporation | Extending a cache coherency snoop broadcast protocol with directory information |
KR101975288B1 (ko) | 2012-06-15 | 2019-05-07 | 삼성전자 주식회사 | 멀티 클러스터 프로세싱 시스템 및 그 구동 방법 |
UA125747C2 (uk) | 2015-09-01 | 2022-06-01 | Фьост Вейв Байо, Інк. | Способи та композиції для лікування станів, пов'язаних із аномальною запальною відповіддю |
US9792210B2 (en) * | 2015-12-22 | 2017-10-17 | Advanced Micro Devices, Inc. | Region probe filter for distributed memory system |
US10980756B1 (en) | 2020-03-16 | 2021-04-20 | First Wave Bio, Inc. | Methods of treatment |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5524212A (en) | 1992-04-27 | 1996-06-04 | University Of Washington | Multiprocessor system with write generate method for updating cache |
US5751995A (en) | 1994-01-04 | 1998-05-12 | Intel Corporation | Apparatus and method of maintaining processor ordering in a multiprocessor system which includes one or more processors that execute instructions speculatively |
US5778437A (en) * | 1995-09-25 | 1998-07-07 | International Business Machines Corporation | Invalidation bus optimization for multiprocessors using directory-based cache coherence protocols in which an address of a line to be modified is placed on the invalidation bus simultaneously with sending a modify request to the directory |
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 |
US5887138A (en) * | 1996-07-01 | 1999-03-23 | Sun Microsystems, Inc. | Multiprocessing computer system employing local and global address spaces and COMA and NUMA access modes |
US6049847A (en) * | 1996-09-16 | 2000-04-11 | Corollary, Inc. | System and method for maintaining memory coherency in a computer system having multiple system buses |
US5950228A (en) * | 1997-02-03 | 1999-09-07 | Digital Equipment Corporation | Variable-grained memory sharing for clusters of symmetric multi-processors using private and shared state tables |
US6658526B2 (en) | 1997-03-12 | 2003-12-02 | Storage Technology Corporation | Network attached virtual data storage subsystem |
US6253292B1 (en) * | 1997-08-22 | 2001-06-26 | Seong Tae Jhang | Distributed shared memory multiprocessor system based on a unidirectional ring bus using a snooping scheme |
US6085295A (en) | 1997-10-20 | 2000-07-04 | International Business Machines Corporation | Method of maintaining data coherency in a computer system having a plurality of interconnected nodes |
US6108737A (en) * | 1997-10-24 | 2000-08-22 | Compaq Computer Corporation | Method and apparatus for reducing latency of inter-reference ordering in a multiprocessor system |
US6014709A (en) | 1997-11-05 | 2000-01-11 | Unisys Corporation | Message flow protocol for avoiding deadlocks |
US6108797A (en) * | 1997-12-11 | 2000-08-22 | Winbond Electronics Corp. | Method and system for loading microprograms in partially defective memory |
US6480927B1 (en) | 1997-12-31 | 2002-11-12 | Unisys Corporation | High-performance modular memory system with crossbar connections |
US6631448B2 (en) * | 1998-03-12 | 2003-10-07 | Fujitsu Limited | Cache coherence unit for interconnecting multiprocessor nodes having pipelined snoopy protocol |
US6122715A (en) | 1998-03-31 | 2000-09-19 | Intel Corporation | Method and system for optimizing write combining performance in a shared buffer structure |
US6205520B1 (en) | 1998-03-31 | 2001-03-20 | Intel Corporation | Method and apparatus for implementing non-temporal stores |
US6173393B1 (en) | 1998-03-31 | 2001-01-09 | Intel Corporation | System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data |
US6052769A (en) | 1998-03-31 | 2000-04-18 | Intel Corporation | Method and apparatus for moving select non-contiguous bytes of packed data in a single instruction |
US6370621B1 (en) * | 1998-12-21 | 2002-04-09 | Advanced Micro Devices, Inc. | Memory cancel response optionally cancelling memory controller's providing of data in response to a read operation |
US6490661B1 (en) * | 1998-12-21 | 2002-12-03 | Advanced Micro Devices, Inc. | Maintaining cache coherency during a memory read operation in a multiprocessing computer system |
US6189078B1 (en) * | 1998-12-22 | 2001-02-13 | Unisys Corporation | System and method for increasing data transfer throughput for cache purge transactions using multiple data response indicators to maintain processor consistency |
US6167492A (en) | 1998-12-23 | 2000-12-26 | Advanced Micro Devices, Inc. | Circuit and method for maintaining order of memory access requests initiated by devices coupled to a multiprocessor system |
US6374331B1 (en) * | 1998-12-30 | 2002-04-16 | Hewlett-Packard Company | Distributed directory cache coherence multi-processor computer architecture |
US6665767B1 (en) | 1999-07-15 | 2003-12-16 | Texas Instruments Incorporated | Programmer initiated cache block operations |
US6343347B1 (en) | 1999-08-04 | 2002-01-29 | International Business Machines Corporation | Multiprocessor system bus with cache state and LRU snoop responses for read/castout (RCO) address transaction |
US20020053004A1 (en) * | 1999-11-19 | 2002-05-02 | Fong Pong | Asynchronous cache coherence architecture in a shared memory multiprocessor with point-to-point links |
US6636906B1 (en) | 2000-04-28 | 2003-10-21 | Hewlett-Packard Development Company, L.P. | Apparatus and method for ensuring forward progress in coherent I/O systems |
US6640287B2 (en) | 2000-06-10 | 2003-10-28 | Hewlett-Packard Development Company, L.P. | Scalable multiprocessor system and cache coherence method incorporating invalid-to-dirty requests |
US6622217B2 (en) | 2000-06-10 | 2003-09-16 | Hewlett-Packard Development Company, L.P. | Cache coherence protocol engine system and method for processing memory transaction in distinct address subsets during interleaved time periods in a multiprocessor system |
US6738868B2 (en) | 2000-06-10 | 2004-05-18 | Hewlett-Packard Development Company, L.P. | System for minimizing directory information in scalable multiprocessor systems with logically independent input/output nodes |
US6751721B1 (en) * | 2000-08-31 | 2004-06-15 | Hewlett-Packard Development Company, L.P. | Broadcast invalidate scheme |
US6839808B2 (en) * | 2001-07-06 | 2005-01-04 | Juniper Networks, Inc. | Processing cluster having multiple compute engines and shared tier one caches |
US6973543B1 (en) * | 2001-07-12 | 2005-12-06 | Advanced Micro Devices, Inc. | Partial directory cache for reducing probe traffic in multiprocessor systems |
US6976131B2 (en) * | 2002-08-23 | 2005-12-13 | Intel Corporation | Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system |
US7003633B2 (en) | 2002-11-04 | 2006-02-21 | Newisys, Inc. | Methods and apparatus for managing probe requests |
US6925536B2 (en) | 2002-11-05 | 2005-08-02 | Newisys, Inc. | Cache coherence directory eviction mechanisms for unmodified copies of memory lines in multiprocessor systems |
US7464227B2 (en) * | 2002-12-10 | 2008-12-09 | Intel Corporation | Method and apparatus for supporting opportunistic sharing in coherent multiprocessors |
US7162589B2 (en) | 2002-12-16 | 2007-01-09 | Newisys, Inc. | Methods and apparatus for canceling a memory data fetch |
US6986002B2 (en) * | 2002-12-17 | 2006-01-10 | International Business Machines Corporation | Adaptive shared data interventions in coupled broadcast engines |
US7130969B2 (en) * | 2002-12-19 | 2006-10-31 | Intel Corporation | Hierarchical directories for cache coherency in a multiprocessor system |
US7334089B2 (en) | 2003-05-20 | 2008-02-19 | Newisys, Inc. | Methods and apparatus for providing cache state information |
-
2003
- 2003-08-05 US US10/635,703 patent/US7249224B2/en not_active Expired - Fee Related
-
2004
- 2004-07-29 CN CNA2004800285759A patent/CN1860452A/zh active Pending
- 2004-07-29 AT AT04757398T patent/ATE502335T1/de not_active IP Right Cessation
- 2004-07-29 EP EP04757398A patent/EP1652091B1/en not_active Not-in-force
- 2004-07-29 DE DE602004031852T patent/DE602004031852D1/de active Active
- 2004-07-29 JP JP2006522635A patent/JP2007501466A/ja active Pending
- 2004-07-29 CA CA002533203A patent/CA2533203A1/en not_active Abandoned
- 2004-07-29 WO PCT/US2004/024685 patent/WO2005017755A1/en active Application Filing
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113924625A (zh) * | 2019-06-07 | 2022-01-11 | 美光科技公司 | 非易失性存储器系统中的操作一致性 |
CN113924625B (zh) * | 2019-06-07 | 2022-10-28 | 美光科技公司 | 非易失性存储器系统中的操作一致性 |
US11513959B2 (en) | 2019-06-07 | 2022-11-29 | Micron Technology, Inc. | Managing collisions in a non-volatile memory system with a coherency checker |
Also Published As
Publication number | Publication date |
---|---|
ATE502335T1 (de) | 2011-04-15 |
US7249224B2 (en) | 2007-07-24 |
DE602004031852D1 (de) | 2011-04-28 |
EP1652091A1 (en) | 2006-05-03 |
CA2533203A1 (en) | 2005-02-24 |
JP2007501466A (ja) | 2007-01-25 |
US20050033924A1 (en) | 2005-02-10 |
EP1652091A4 (en) | 2008-10-29 |
EP1652091B1 (en) | 2011-03-16 |
WO2005017755A1 (en) | 2005-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100437521C (zh) | 提供高速缓存状态信息的方法及装置 | |
CN1116643C (zh) | 具有共享干预支持的非均匀存储器访问数据处理系统及方法 | |
US7395379B2 (en) | Methods and apparatus for responding to a request cluster | |
US7003633B2 (en) | Methods and apparatus for managing probe requests | |
CN1320464C (zh) | 用于维持共享高速缓存一致性的方法和设备 | |
CN1860452A (zh) | 提供远程数据高速缓存早期回应的方法和设备 | |
EP1561162B1 (en) | Methods and apparatus for multiple cluster locking | |
US20040088496A1 (en) | Cache coherence directory eviction mechanisms in multiprocessor systems | |
US20040088495A1 (en) | Cache coherence directory eviction mechanisms in multiprocessor systems | |
US20040088494A1 (en) | Cache coherence directory eviction mechanisms in multiprocessor systems | |
US20030225978A1 (en) | Methods and apparatus for speculative probing of a remote cluster | |
US7103636B2 (en) | Methods and apparatus for speculative probing of a remote cluster | |
US7272688B1 (en) | Methods and apparatus for providing cache state information | |
US20030182514A1 (en) | Methods and apparatus for speculative probing with early completion and delayed request | |
US20030210655A1 (en) | Methods and apparatus for responding to a request cluster | |
US7103726B2 (en) | Methods and apparatus for managing probe requests | |
US7337279B2 (en) | Methods and apparatus for sending targeted probes | |
US7418556B2 (en) | Accessing memory and processor caches of nodes in multi-node configurations | |
CA2505016A1 (en) | Methods and apparatus for managing probe requests | |
US7162589B2 (en) | Methods and apparatus for canceling a memory data fetch | |
CN1664795A (zh) | 目录协议对多处理器结点内脏数据共享的支持方法 | |
US8151057B1 (en) | Shared cache for point-to-point connected processing nodes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |