使用全局窥探向单个相干系统中的分布式计算机节点提供高速缓存一致性的方法和设备的制作方法

文档序号:6402896阅读:571来源:国知局
专利名称:使用全局窥探向单个相干系统中的分布式计算机节点提供高速缓存一致性的方法和设备的制作方法
技术领域
一般来说,本发明涉及计算机数据高速缓存方案,具体来说,涉及当系统利用能够被配置为系统中的单独的,独立的节点的多个数据处理器时,用于维护具有分布式共享存储器的系统内的各个存储器之间的一致性的方法和设备,所述系统利用跨各种节点分布的不均匀的存储器存取(NUMA)或系统存储器。
背景技术
在利用以协调的方式同时操作的一个以上的处理器的计算机系统设计中,可以在物理上配置的或与一个这样的处理器组关联的系统存储器可以被这样的系统中的其他处理器或处理器组进行访问。由于在数据处理系统内需要较大的处理能力,并由于希望具有相对少的微处理器作为多处理系统合作地操作共享系统组件,最近几年一直有人在尝试解决维护存储器设备(当系统节点包括多个共享节点本地的资源和/或硬件设备的处理器时,存储器设备可以由一个以上的处理或一个以上的系统节点进行访问)之间的一致性所固有的问题。
一致性问题由一个系统来进行示范,在该系统中,使用互连的纵横开关(crossbar)通信信道连接多个存储器设备,每一个存储器设备都与关联的处理器或构成多处理器系统的本地处理器组配套。来自处理器或充当这样的多节点系统中的一个节点的处理器组的读取或写入数据请求可以被定向到与发出请求的处理器关联的存储器设备内的地址或与系统内的另一个处理器组关联的存储器的地址。每一个处理器组还与本地高速缓存关联。由于每一个处理器组都具有关联的高速缓存,每一个高速缓存可能具有一个以上的级别,因此,必须小心,以确保在整个系统中维护的数据的一致性。
确保维护一致性的一种方式是跟踪目录(或寄存器)中的每一项数据的状态,所述目录(或寄存器)指向数据所在的每一个非本地高速缓存。通过知道数据的每一个副本的位置,每一个副本都可以更新,或者在寄存器内作出记号,以表示一个或多个位置的数据没有过期。这样的寄存器或表需要指向正在高速缓存数据的多个节点的指针。由于组件延迟并因为某些系统在等待来自其他系统处理器本地的其他存储器子系统的数据状态指示符时同时处理多个数据行的能力没有完全得到利用,所有这些都具有使系统速度和性能减慢的效果。
在相关技术的专利中,维护指向每一个节点内特定的数据项的每一个副本的一个表所存在的问题是,它增大了这样的表内的目录条目的复杂性和宽度,使表变得相对大和复杂。
授权给Luick等人的No.6,088,769美国专利说明了通过组合的本地和全局表所解决的多处理器高速缓存一致性。尽管此引用定义了单一的全局窥探方案,但是,它依赖单一的目录,和L1和L2高速缓存过滤器数据引用,以便只有这样的引用中的某些引用到达中心全局控制单位。Luick没有说明多处理器系统中的所有处理器的所有数据引用的全局窥探,通过单个级别中央控制设备进行,所述单个级别中央控制设备便于在多节点处理器系统中的多个节点之间进行通信。此外,尽管Luick说明了对照特定的节点本地的专用目录的校验数据引用,但它没有讲述单一的全局高速缓存一致性表中的校验数据引用。此外,Luick引用描述了生成数据标记或引用的单处理器中的高速缓存一致性的处理方法,但是,没有讲述在生成一个节点中的数据标记的多处理器群集中的用途,所述节点包含其自己的可以作为独立处理系统起作用的存储器和输入/输出功能,无需通过中央控制设备进行通信,所述中央控制设备还作为到其他独立处理器节点的通信信道起作用。
颁发给Fu的No.6,065,077美国专利讲述了共享数据高速缓存的方法,其中,所有存储器和处理器设备单独地连接到流量控制单元,所述流量控制单元充当处理器和存储器元件之间的纵横开关,并与其他纵横开关或通信系统进行通信,而其他纵横开关或通信系统本身也控制它们的子系统组件。Fu没有讲述用于跨多处理器系统协调数据的系统,所述多处理器系统本身利用一个组或节点内的多处理器,所述节点能够在必要时独立于中央控制设备或纵横开关系统进行操作。Fu所提供的方法要求对存储器的所有引用都得到满足,方法是将来自存储器单元的数据通过充当纵横开关的流量控制设备传输到正在请求数据的处理单元。Fu没有讲述这样的系统,处理器请求的数据可以完全由正在请求这样的数据的特定节点的本地存储器来满足,也没有讲述这样的方法,通过这样的方法只有具有一致性影响的数据请求在节点之间进行传输。
在颁发给Arimilli等人的No.5,943,685美国专利中提供了另一个引用,该引用说明了跟踪整个系统中的各个高速缓存中维护的数据的其他方法,该发明提供了共享的高速缓存之间的单个数据提供者的共享干预的方法。颁发给Hoover等人的No.5,604,882美国专利描述了高速缓存用于从对等高速缓存单元到多处理器系统中的全局存储控制单元的空白通知的系统和方法。相关的背景技术没有说明使用中心通信或控制设备的方法,所述中心通信或控制设备将来自一个节点的结果转发到多节点系统中的另一个节点,所采用的方法应是同时向第一节点提供读取请求,向第二节点提供写入请求,读取请求的结果传递到第二节点,而不必经过中央控制或通信设备,所述中央控制或通信设备将数据标记和地址信息传递到各个节点。
相应地,本发明的目标是提供一种用于维护多处理器系统内的多个高速缓存中存储的数据的一致性的系统和方法,所述系统和方法利用中心标记和地址纵横开关作为中心通信通道,其特征在于,不需要中心设备来维护系统中的挂起的与高速缓存相关的数据请求的瞬变或瞬变状态。本发明的另一个目标是提供一种用于维护至少具有两个节点的多处理器系统内的多个高速缓存中存储的数据的一致性的系统和方法,其特征在于,向数据请求者节点返回这样的来自存储了被请求的数据的目标节点的请求的结果,而不必经过中央控制设备的处理。
本发明的还有另一个目标是提供位于多节点多处理器系统内的单独的节点中的多个高速缓存中存储的数据的一致性的系统和方法,所述系统和方法利用数据标记和地址纵横开关控制和通信设备,其特征在于,从第一节点到第二节点的标记或地址信息的中心设备控制通信同时向第一节点发送读取请求,向第二节点发送数据写入请求,数据读取请求的结果被传递这样的第二节点,而不必通过标记和地址纵横开关进行传输。

发明内容
本发明提供了利用分布式计算节点的计算机系统中使用的方法和设备,其中,每一个节点都包括一个或多个微处理器,每一个节点都能够用本地系统存储器和控制系统独立地进行操作,其中,所有节点都互相连接,以便作为多节点系统进行操作。该方法用于维护多处理器系统中的高速缓存一致性,所述多处理器系统具有多个由诸如标记和地址纵横开关系统和数据纵横开关系统之类的互连通信通道连接的节点。该方法用标记和地址纵横开关系统进行操作,当系统还包括从任何节点的存储器系统访问数据的功能时,所述标记和地址纵横开关系统能够存储有关系统内的数据的位置和状态。该方法包括下列步骤存储有关所述互连通道中的数据的状态的信息;响应请求节点所发出的对被请求的那部分数据的请求,检查所述存储信息以判断被请求的那部分数据的最新的副本的位置;检索被请求的那部分数据的所述最当前副本,并将所述数据定向到发出请求的节点;检查所述存储信息以判断被请求的数据的位置;然后指示所述系统向发出请求的节点发送所述被请求的数据,而不必经过所述互连通信通道。
该设备包括多处理器系统,所述多处理器系统由两个或更多节点组成,每一个节点至少一个处理器,每一个节点包括由处理器使用的共享的分布式存储器系统的一部分。节点由通信通道互相连接,所述通信通道包括在分布式存储器中存储跨系统存储的数据的位置和状态。优选实施例通过在标记和地址纵横开关设备中存储被请求的数据的位置和状态或其他位置和状态信息来降低整个系统中的数据流的延迟,所述标记和地址纵横开关设备同时检查所有节点中的每一行的高速缓存线状态。然后基于存储在标记和地址纵横开关系统中的这样的信息向正在请求数据的节点发回适当的回复,或其他请求,所述标记和地址纵横开关系统还充当节点之间的通信通道。
通过阅读本发明的优选实施例的详细说明,本发明的其他特点和优点将变得显而易见,说明应结合附图来阅读。


图1是将标记和地址纵横开关系统与数据纵横开关系统一起使用的典型的多处理器系统的方框图,该图与本发明一起操作,并建议打印在所发专利的第一页上。
图2A-2C是连接其中运用了本发明的多处理器系统中的每一个象限或节点的标记和地址纵横开关系统的方框图。
图3是说明一个组的功能组件的一个象限处理器组以及本发明中的高速缓存和远程高速高速缓存的关系。
图4A-4D是说明在优选实施例中使用的高速缓存读取和读取失效的各种状态的表。
图5A-5B是说明优选实施例中使用的系统中的非高速缓存读取请求的表。
图6A-6B是说明优选实施例中使用的系统中的非高速缓存写入请求的表。
图7是说明对优选实施例中使用的系统中的对存储器映射的输入/输出、CSR和非存储器目标的读取和写入的表。
图8A-8B是说明优选实施例中使用的系统中的转出请求的表。
图9A-9C是用于优选实施例中使用的标记和地址纵横开关设备的所有输入和输出总线的字段的mnemonics的表,并提供图4、5、6、7和8中使用的引用。
图10是远程高速缓存标记的映射的方框图。
具体实施例方式
概述具体来说,本发明涉及多处理器系统中使用的改善的数据处理方法,所述多处理器系统配置了两个或多个独立的处理节点,利用标记和地址纵横开关系统并与数据纵横开关系统结合使用,一起包括数据处理系统,以处理跨节点的多个数据读取和写入请求。在这样的系统中,特定的处理器或节点不能知道在其他节点上存在的数据的高速缓存线状态,它们需要访问其他节点的存储器内的这样的数据的最当前副本,才能使系统一致地操作。在这样的多节点系统中,必须保证数据高速缓存线对于请求给定数据高速缓存线的微处理器或节点来说是最新的,采用获得保证全系统范围的高速缓存一致性的方法。这里所说明的系统在允许系统中的任何节点访问某一高速缓存线之前提供对所述高速缓存线的任何请求的序列化的层次结构,以便在系统中的可能在一起操作的所有节点中维护高速缓存一致性。
这里所描述的方法和设备利用了全局窥探以提供单一的序列化点。本发明中的全局窥探是这样来实现的假设系统内的所有节点都将对数据的所有请求传递到集中式控制器,所述集中式控制器与系统中的每一个节点进行通信,并维护集中的高速缓存状态标记。中央控制器是一个连接节点的数据标记和地址纵横开关系统,同时检查所有节点的每一行的高速缓存状态标记,并向正在请求数据的节点发出适当的回复。控制器还向其他节点生成其他请求,以便维护高速缓存一致性并在适当的情况下提供被请求的数据。
优选实施例将与一个或多个微处理器的每一个节点关联的系统的所有存储器空间划分为每一个节点的本地和远程类别。每一个节点都拥有整个系统中的全部存储器空间的唯一的部分,被定义为该节点的本地部分。全部的系统存储器正好由系统中的一个节点集合拥有。任何高速缓存线的本地和远程类别是互相排斥的,因此,系统中的对于节点来说不是本地的所有高速缓存线都被定义为对该节点来说是远程的。本发明为系统的每一个节点提供了三级远程高速缓存支持,其特征在于,每一个节点都高速缓存控制器指定的远程数据线。与每一个节点或处理器组关联的每一个存储器板本身分为本地存储器,存储器的一部分被定义为远程高速缓存。被定义为远程高速缓存的每一个本地存储器系统的那一部分作为三级高速缓存操作。本发明通过为系统提供一个装置,以预先知道被请求的线是位于特定的节点的本地存储器中,或者,还是位于正在高速缓存另一个节点的本地存储器的被定义为远程高速缓存的本地存储器的部分,从而提供对被请求的数据线的预期。
本说明书假设当发出对数据的请求时系统中的每一个节点都可以从本地存储器或远程高速高速缓存请求数据,由于控制器知道在哪一个类别中定义了线,当控制器完成其一致性检查时控制器可以验证或拒绝预期的数据线的使用。如果预期的并预先读取的主题数据线是一致的,那么,请求数据的节点可以使用该线。如果线不一致,那么,控制器会将请求转发到适当的节点,发出请求的节点丢弃预期的数据线,并由于控制器发出的请求使用线返回代替。
使用远程高速缓存可以降低高速缓存线的延迟,否则,必须从系统中的另一个节点获取。所说明的远程高速缓存的存在提供了一致性状态,通过允许“脏”高速缓存线作为只读副本在节点中存在,从而不必进行从节点到节点的数据传输。当高速缓存线必须恢复到其原始存储器位置时,远程高速缓存中持有的这样的“脏”只读高速缓存线的存在延迟了时间,从而增强了这样的可能性其他高速缓存状态转移将清除将高速缓存线恢复到其原始存储器位置的必要性,从而节省了不必要的系统事务,这些不必要的系统事务会由于消耗系统带宽而导致延迟。如果这样的远程高速缓存清除了这样的“脏”数据线,并且系统节点清除了该数据线的指定所有者,则控制器将重新分配不同的共享节点作为数据线的新所有者,而不必在系统内进行任何实际数据移动。如果除清除“脏”行的节点之外没有节点共享数据,那么该行将恢复到其存储器位置。
在本发明中,给定计算节点的系统存储器被定义为分配给系统内的分区的所有节点的集合存储器,给定节点是所述系统的成员。因此,在存在一个以上的计算节点的分区的系统中,本发明和描述了对跨被定义为系统内的单个分区内操作的节点的系统存储器的操作,并在此范围内分配系统存储器。
优选实施例的详细信息图1提供了其中可以使用本发明的典型的多处理器系统的示例。图1说明了多处理器系统,该系统利用了四个单独的中央控制系统(控制代理)66,其中每一个控制系统为每个控制代理66的四个Intel牌的Itanium级的微处理器62的阵列64提供了输入/输出接口和存储器控制。在许多应用中,控制代理66是特定用途集成电路(ASIC),这种集成电路是为特定的系统应用程序开发的,以便为每一个微处理器总线76、与给定的控制代理66关联的每一个存储器68、PCI接口总线21,PCI输入/输出接口80,以及连接到各种PCI设备的关联的PCI总线74提供接口。每一个微处理器的总线76通过总线61连接到控制代理66。每一个PCI接口总线21都通过PCI接口块总线20连接到每一个控制代理66。
图1还说明了标记和地址纵横开关70以及数据纵横开关72之间的端口连接。从图1所示的方框图中可以理解,纵横开关70和纵横开关72允许在每一个控制代理66之间进行通信,以便地址信息和记忆线和写入信息可以跨整个多处理器系统60进行传送。这样的存储器寻址系统跨系统地传送数据位置,并促进控制代理66有关数据有效性和所需数据位置的高速缓存信息的更新。
单一节点或“象限”处理器组58包括微处理器62、存储器68和控制代理66。在本发明涉及的多处理器系统中,象限存储器68通常是随机存取存储器(RAM),可以作为本地控制代理的本地或主存储器。特定的存储器68连接到整个系统60中的特定的控制器代理66,但当由不直接连接到与特定控制代理66关联的特定存储器68的另一个象限或控制代理66访问时,被视为远程存储器。任何一个象限58中中存在的微处理器62都可以访问任何其他象限58上的存储器68。NUMA系统通常将存储器68分为本地存储器和远程存储器,以便其他象限进行访问,当数据可以被利用或存储在位于不同于并因此远离具有可能发出数据的PCI设备的象限58的另一个象限58上时,本发明增强了整个系统的跟踪数据的能力。
图3是以更简单的视图显示的图1所示的相同的多处理器系统的不同的视图,说明了相对于其他象限组件以及纵横开关系统70和72的一个象限58,为简单起见,在图3中作为一个单元说明。本发明说明将位于每一个节点或象限58中的存储器68的某一部分定义为远程高速缓存79。作为本地存储器操作的那一部分存储器68作为与它所关联的特定象限58的主存储器操作,而远程高速缓存79作为存储器板68的一部分但被定义为远程高速缓存,作为系统中的其他节点的远程高速缓存操作。从图3可以看出,远程高速缓存79不同于通常与特定的处理器62关联的高速缓存63。高速缓存63通常在处理器62的同一衬底或芯片上,并可以分成常常被称为一级(L1)和二级(L2)高速缓存。
标记和地址纵横开关70和数据纵横开关72允许四个存储器控制代理66之间的接口互连作为共享存储器共同的操作系统实体,或者,如果整个系统被分开以允许图1中说明的系统内的独立的操作系统,则分隔为共享存储器操作系统实例的单独的实例。标记和地址纵横开关70通过在位于共同的操作系统实例(分区)中的不同的象限58上的微处理器总线76之间提供数据地址窥探功能,支持这样的体系结构。为支持窥探活动,标记和地址纵横开关70在一个分区中的象限58的存储器控制代理66之间路由请求和响应。每一个分区都具有其自己的不同的象限58的组,没有哪一个象限可以是一个分区以上的一部分。不同分区的象限不与彼此的存储器空间进行交互;下面将肯定地描述本发明,系统中的所有象限都在单一的系统分区内进行操作。
标记和地址纵横开关70跨每一个纵横开关70总线接收入站请求,如图1中的端口1的单一的实例41所示。标记和地址纵横开关70在偶数标记管道52或奇数管道53中处理入站数据请求,如图2所详述的,在输出46中将回复发送到发出请求的象限58,并在必要时将出站数据请求发送到其他标记和地址纵横开关70输出总线45、47或48。标记和地址纵横开关70为其对每一个目标存储器控制代理66的出站请求以及在必要时向发出请求的节点的清除请求分配事务标识符(TrID)。存储器控制代理66在适当的时候释放这样的TrID以便进行重新分配。标记和地址纵横开关70响应存储器控制代理66的对数据的请求不一定完成事务。如果被请求的数据的目标地址对于发出请求的象限58来说是本地的,没有远程高速缓存持有线作为修改,那么标记和地址纵横开关70以GO作出回答(如图4、5和6的表所示),存储器控制代理66使用来自其本地存储器68的数据来完成对请求数据的处理器62的读取。
如果数据在另一个象限的远程高速缓存中进行修改,那么,标记和地址纵横开关70以WAIT作出,发出请求的存储器控制代理66挂起请求,直到数据纵横开关72提供读取数据。当标记和地址纵横开关70发出WAIT回复时,它还向拥有高速缓存线的目标存储器控制代理66发出出站的读取请求,包括象限标识符(象限ID)和原始的发出请求的(源)存储器控制代理66的TrID。此时,目标控制代理66从其存储器板获取目标线,并将它发送到数据纵横开关72,并附带源象限ID和源TrID。数据纵横开关72使用源象限ID将数据路由到源控制代理66,在此,它可以通过观察随数据返回的源TrID值被提供给发出请求的处理器。
标记和地址纵横开关70将系统60中的所有请求序列化为两个地址流,它将这两个地址流发送到其偶数和奇数标记管道,如图2所示。图2为清楚起见分为三个部分,图2A、2B和2C,但代表一个图表。每一个管道都将地址发送到外部SRAM远程高速缓存标记(RCT)以查找全局高速缓存状态。由于每一个SRAM组件都只存储其自己的端口的RCT条目,即,其自己的存储器控制代理66,所有四个SRAM的读取构成了该索引处的所有四个RCT的读取。来自不是发出请求的分区的成员端口的条目将被忽略。一个高速缓存线正好是一个象限58的宿主(即,对于其来说,是本地的,或由其拥有),因此,至少一个端口应该产生标记逻辑丢失(标记不匹配或状态1)。管道内的信息的顺序始终被预留。
当标记逻辑57判断RCT条目必须修改(由于状态、标记或ECC场),标记和地址纵横开关70通过位于标记比较器和调度器84和85中的写入缓冲器向外部SRAM调度一次写入。为防止冲突,其中,可以查询新访问,而写入在写入缓冲器中挂起,将窥探写入缓冲器条目。写入缓冲器中的窥探命中(有效地址匹配)导致查找停止,写入缓冲器内容被流出到SRAM。通过标记管道进行的查找最终可能导致标记写入,因此,还必须对它们进行窥探,对这些条目的窥探命中还导致停顿,直到冲突解决(包括在必要时排放写入缓冲器)。
标记和地址纵横开关70通过分配条目和维护它们的系统状态来管理直接的映射远程高速缓存。如果一个请求需要RCT条目,而该条目已经在使用中,则老的条目必须清除,此操作在当前技术中有时被称作转出。标记和地址纵横开关70通过向发出了导致清除的请求的控制代理66发出一个失效或读取失效来完成此项工作(也叫做“煽动者”)。标记和地址纵横开关70作出的此转出请求是发送到目标存储器控制代理66的原始(“煽动者”)请求的补充,并位于其之前。
由于系统被配置了几乎相同的象限58,因此,整个系统可以作为单一的系统分区或使用所说明的方法分区为四个单独的分区系统。在优选实施例中,象限58的最大总数是4,如图1中所说明的那样。标记和地址纵横开关70的每一个端口由于其代理66和纵横开关70之间的物理连接被指派了四个控制代理66中的其中一个。标记和地址纵横开关70和数据纵横开关72与每一个控制代理66之间的互连是通过总线71来实现的。如图1所示的从标记和地址纵横开关70和数据纵横开关72到象限1中的控制代理66的连接,总线也被称为端口。尽管只在象限1中显示,但是,对于每一个象限58,总线71的配置都是相同的,从如图1所示的端口0、1、2和3的连接可以看出。总线73是连接控制代理66与标记和地址纵横开关70的总线71的一部分。总线75是连接数据纵横开关72与每一个控制代理66的总线71的一部分。图1中所示的系统的每一个象限,通过标记和地址纵横开关70以及数据纵横开关72并通过被定义为端口的通道传递到系统的其余部分。端0、1、2和3都显示在图1上,通过每一个端口的输入和输出部分将纵横开关系统与控制代理66互连,将每一个纵横开关与每一个给定的象限互连。图1中的所有象限58利用图1的端口1中所示的互连总线71以类似的方式连接,从图中可以看出。包括将纵横开关与每一个象限58互连的端口的纵横开关系统基本上是连接处理节点的通信通道。图2说明了如图1所示的标记和地址纵横开关70的内部逻辑。端口0的输入40、端口1的输入41、端口2的输入42,以及端口3的输入43说明了每一个象限或节点中的每一个控制代理66到标记和地址纵横开关70的通信通道的一部分。同样,图2说明了端口0输出45、端口1输出46、端口2输出47和端口3输出48,这些也在如图1所示的整个系统方框图中进行了显示。图81(a)和81(b)中显示了与标记和地址纵横开关70一起起作用的标记查询寄存器。寄存器81(a)和81(b)是相同的,只是它们与偶数管道和奇数管道关联,用于进行标记处理,如图2中所示。提供了双管道设计,通过将偶数标记指派给偶数管道,将奇数标记指派给奇数管道,以便可以同时进行处理,以降低系统中的延迟。
输入40、41、42和43都通过缓冲区引入,并可操作地连接到偶数输入多路复用器50,以及奇数输入多路复用器51,并根据与输入标记的偶数或奇数关系,选择适当的多路复用器。每一个多路复用器50和51用于序列化来自四个输入的标记流。多路复用器50和51的输出发送到另一个多路复用器,最终发送到标记查询寄存器81(a)和81(b)。偶数管道逻辑52和奇数管道逻辑53评估所提供的标记和请求类型,以为连接到其分区内定义的象限的端口生成输出响应和请求。所产生的输出条目被高速缓存在调度缓冲区54和55中,所述调度缓冲区是先进先出(FIFO)类型的缓冲区。调度缓冲区54和55消除所显示的标记逻辑和输出选择逻辑之间的时间差异。条目按先进先出的顺序存储在调度缓冲区54和55中,直到它们可以发送到目标端口,作为输出45、46、47或48,代表了到每一个端口或象限的一个输出。
标记查询寄存器81(a)和81(b)在配置方面相同,由四个同步静态随机存取存储器(SSRAM)芯片构成,总共四个,每一个都是512 kbit x 16位。标记查询寄存器81(a)通过线路82(a)连接到偶数标记比较器和调度器84。尽管在图2中显示了一个连接,但是连接82(a)实际上是四个通路,每一个都对应于来自每一个端口的输入0、1、2和3,如图所描述。通过连接82(b)连接到奇数标记比较器和调度器85的寄存器81(b)在功能上基本上是相同的。通路82(b)同样由四个通路组成,每一个都对应于一个端口。标记查询寄存器81(a)和81(b)是与标记和地址纵横开关70连接的外部存储器,用于存储整个系统中的所有远程高速缓存标记的标记和状态信息。这样的信息不能直接由存储器控制代理66进行访问,因此控制代理66中生成的所有可高速缓存的事务必须访问纵横开关70以访问纵横开关70以访问或“窥探”纵横开关70的远程高速缓存标记(RCT)。图10所示的方框图中说明了寄存器81(a)和81(b)的物理配置。如图10所示,寄存器81(a)和81(b)是以同步静态随机存取存储器芯片(SSRAM)实现的,所述芯片以纵横开关70的内部时钟频率进行操作,在本发明中是133MHz。从图10中可以看出,有两组外部SSRAM,这些组被划分为奇数和偶数管道,如图2所示。每一组寄存器81(a)、81(b)被分成四个象限,每一个象限都代表纵横开关70的物理端口。由于在优选实施例中总共有四个端口,如图1的系统图所示,可以理解,每一个端口都对应于本发明中的物理象限,如前面所描述。因此,RCT接口的每一个端口都代表物理象限的远程高速缓存的RCT,如图10所显示的,标记查询寄存器81(a)和81(b)的每一象限区域都包含标记和状态信息。
现在回到远程高速缓存,下面将根据优选实施例中的本发明的操作描述下面的表1中显示的远程高速缓存状态。标记和地址纵横开关70为远程地址的远程高速缓存维护了直接映射的高速缓存标记。标记条目具有地址标记部分和状态部分(还有6个校验位,以便进行SEC/DED保护)。可能的远程高速缓存状态值有I、S或M(代表invalid、shared和modified)。标记和地址纵横开关70上的每一个端口(端口0、1、2和3,如图1所示)具有这些高速缓存标记的对应的偶数和奇数标记SRAM阵列。对于共享相同的分区ID的端口,对应的高速缓存标记象限构成了集体的远程高速缓存标记状态。标记象限或两个不同的分区(如果在单独定义的分区中至少有一个节点操作)彼此之间没有影响,但SRAM地址插脚的物理共享除外(这会强制访问序列化)。一个地址的集体的标记状态是请求者的分区(其标记地址匹配该地址)中的该索引的所有象限的状态。
如上所述,在本发明中使用的可能的集体的状态有无效、共享、脏和修改。对于这些集体的状态1.“无效”表示分区中的所有象限具有I状态,或者在该索引上标记不匹配;2.“共享”表示,至少一个象限匹配其标记,并在该索引上具有S状态(但无匹配并具有M状态);3.“脏”表示,正好一个象限与M状态匹配,并至少有一个与S状态的匹配;以及4.“修改”表示,正好一个象限与M状态匹配,并且所有其他象限都是“无效”。
“脏”状态意味着,宿主象限58中的存储器是陈旧的,其状态为共享(S)或修改(M)的所有象限58都具有一个相同副本,没有处理器62在其内部高速缓存中具有修改的副本。每当偶数/奇数管道处理偶数/奇数存储器地址的入站请求时,标记和地址纵横开关70都对偶数/奇数标记阵列的所有四个标记象限执行读取访问。请求和所产生的查询的处理都可能需要对标记进行更新。防止对高速缓存线进行连续的访问,而潜在的更新被挂起。存储器映射输入/输出(MMIO)地址和对非存储器目标的请求不需要查询,但仍消耗管道阶段。
标记和地址纵横开关70使用信用/释放(credit/release)机制调节入站请求。控制代理66假设可以发送“信用”数量的请求,当信用消耗完之后将不允许进一步的请求。纵横开关70以信用释放返回信用,这将允许重新使用信用。
写入缓冲器或标记和地址纵横开关70的标记管道中的地址冲突可以阻止标记管道中的进展,直到冲突解决。缺少TrID可能会延迟管道条目(令牌)从标记逻辑到调度缓冲区54中的移动。如果调度缓冲区54或55已满,则新的条目无法进入缓冲区。还有某些错误(如SEC校正)会将管道停顿一个时钟。由于这些原因,管道条目可能会在到调度缓冲区54或55的输入处被延迟,并因此导致管道被阻塞。在TrID不足的情况下,条目被延迟可编程的一段时间)以等待有可用的TrID。如果延迟期已过,则重新尝试进入。在这种情况下,令牌被转换为重试并作为对请求者的响应放在调度缓冲区54或55中(错误按类似方式进行处理以错误令牌替换原始的令牌)。转换为重试或错误允许条目放入调度缓冲区54或55,然后,管道可以前进。这样的情况取消了可能被调度的任何外部标记更新或可能已经分配的TrID。如果一个条目在到调度缓冲区54或55的输入处被延迟,那么,当任何外部标记读取操作返回到纵横开关70时需要排队。当调度缓冲区54或55不阻塞时,这些排队的读取结果(叫做“停顿收集器”)必须按照正确的顺序插入回管道中。
入站请求只由信用/释放机制进行调节。入站响应没有定义。出站请求由目标控制代理66中的TrID的可用性进行调节(根据标记和地址纵横开关70的TrID分配逻辑的判断)。出站响应没有调节机制,控制代理66接受任何纵横开关70响应。调度缓冲区54或55中的条目的所有出站响应或请求都必须同时引用它们的相应的输出。因此,调度缓冲区54和55在发生冲突时必须争用输出45、46、47和48。此外,到输出端口的输出响应可能伴随着转出(清除)请求,两者都必须发送到输出端口,转出优先。
标记和地址纵横开关70接收来自控制代理66的请求,并基于每一个象限的远程高速缓存标记中的高速缓存线的状态作出响应。象限远程高速缓存(RC)状态的集合叫做全局远程高速缓存(RC)状态。在此表中,合法状态值的组合被简化为3个字符串I、S和M,如上所述。第二列是请求者的RC标记的状态,第三列是所有者除外的其他象限的状态,第四列是所有者象限的状态。在表1的列1中给出了全局RC状态的状态名称。本地请求应该始终不匹配或具有I状态。应该理解,本地请求意味着,请求者处于状态I,因为本地地址没有高速缓存在远程高速缓存中。在其中Req状态为I的行中,在该象限的远程高速缓存中,不存在线。I状态表示,没有标记匹配,状态是I,或端口不是发出请求的分区的成员。所有四个“脏”状态表示,持有M状态的线的象限中的处理器在它们的芯片内(L1/L2)高速缓存中具有未修改的数据。
表1全局远程高速缓存状态定义

当请求者是所有者时,表1指派请求值为M,和显示所有者为状态I。在图中使用了这样的状态名称,以显示标记和地址纵横开关70如何对总线73请求作出响应。还应该理解,总线73是图1所示的每一个端口的标记和地址纵横开关70的每一个总线的说明。
图4说明了高速缓存的读取和读取失效。图4为清楚起见分为四个部分,图4A、4B、4C和4D,但代表一个图表。图5说明了非高速缓存读取。图5为清楚起见分为两个部分,图5A、5B,但代表一个图表。图6说明了非高速缓存写入。图6为清楚起见分为两个部分,图6A、6B,但代表一个图表。图7说明了对MMIO、CSR和非存储器目标的读取和写入。图8说明了转出请求。图8为清楚起见分为两个部分,图8A、8B,但代表一个图表。图9中说明了纵横开关70的所有输入和输出总线所使用的场的所有助记符(在一个实例中显示为图1中的总线73),并可以用作在参考利用优选实施例的操作的插图中的助记符的图中的引用。图9为清楚起见分为三个部分,图9A、9B和9C,但代表一个图表。在说明优选实施例的操作时,可以对这样的图进行参考。
图4、5、6、7、8和9说明了优选实施例的操作,并可用于理解这里所说明的方法和系统的实际操作。请看图4,所显示的表描述了高速缓存读取和读取失效的各种状态,它们完全说明了本发明的实现方式。图4可以用于说明由四个端口中的任何一个端口启动的任何数据请求,并用作定义结果和对于一个给定输入的所有其他端口的响应的示例。图4的列101包含各种总线请求。列101包括对本地地址高速缓存读取的请求(LCR),对远程地址的高速缓存读取的请求(RCR)、对本地地址的高速缓存读取失效的请求(LCRI);对远程地址的高速缓存读取失效的请求(RCRI)。将使用一个说明性的示例来演示本发明的操作,假设列101中的总线73请求从端口1发出,从而与输41有关,如图1所示。
对于本示例,列101代表图2上的输入41。在这样的情况下,对于列102中的每一个全局远程高速缓存状态,在列103中给出了对这样的请求的标记和地址纵横开关70响应,以及这样的响应被定向到向其发出请求的输出端口。在本示例中,输入41上的请求对应于处理对该请求的响应的输出46。同样,列104、105和106引用图2中的输出45、46、47或48,因为它们涉及主、共享者或所有者。在本示例中,对列104中的home的请求是不同于46的其他输出中的一个。对列105中的共享者的请求一定不包括对列104中的home quad的请求。列104中指定的Home是其中地址是本地的quad,或表示地址对于特定的quad是本地的。列106描述了示例中的对quad的特定输出,该quad被定义为相关数据的所有者。在用于从quad 1接收到的请求的示例中,列106根据定义是不同于与端口1关联的输出46的其他输出中的一个。列107定义了下一个全局远程高速缓存状态,列108定义了远程高速缓存分配和/或转出是否应该与列101中的特定总线请求关联。列108中的“是”表示重新定位可能是必需的,这进一步意味着,需要对现有的行进行转出。
图5是说明了与图4中所描述的具有类似的垂直列定义的非高速缓存读取请求的表。图5提供了为每一个本地非高速缓存读取请求和远程非高速缓存读取请求定义的quad的各种状态和响应。图6再一次以类似的列标题,为本地非高速缓存部分写入的请求、对纵横开关70的请求或本地非高速缓存全线写入请求的远程非高速缓存部分写入请求或远程非高速缓存全线写入请求提供了定义的解决方案。在优选实施例中,完全的高速缓存线被定义为32字节,是实施例中使用的一致性的单位。部分线是在涉及小于32字节的系统中作出的请求,相应地被视为部分线。
图7是说明到存储器映射I/O位置、CSR、和非存储器目标的读取和写入,其定义包含在图9中包含的助记符描述中。图8是一个定义必须发送到宿主、共享者和所有者节点以实现高速缓存线的清除的请求的表。如果图4的列108为(刺激)请求显示“是”,并在远程高速缓存中有一个有效的预先存在的条目,那么,该条目必须清除,以便为(刺激)请求的高速缓存腾出空间。因此,图8定义了与不同的存储器位置(但相同的高速缓存条目)关联的活动,并作为(刺激)请求的副效应而发生。图9包含了各个图中使用的引用助记符。
在图4到8中,偶而对n*RCI进行了引用。n是等于操作的数量或一个特定的操作可能需要的请求的数量。提供了使用图4的示例,该示例说明了其在本发明的操作中的用途。
以图4中的线109作为示例,在对到本地地址的高速缓存读取失效的请求中,列102提供了共享的丢失的实例。提供了列103,术语GO Inv=n,列104提供一个空白,列105提供了对作为n*RCI的共享者的请求的定义。在此示例中,处理器发出对本地地址的请求,它打算修改其数据。为维护一致性,它请求数据,并希望系统中的这样的数据的所有其他副本失效,因为它计划“拥有”这样的数据。然而,在利用共享丢失的示例中,在系统内有其他象限,这些其他象限除了请求者的本地存储器中的副本外,还具有高速缓存只读副本。因此,处理器可以直接向存储器请求这样的数据,因为只有其他副本是共享副本。因此,根据定义,存储器中的存储器不是陈旧的。在该示例中,处理器按建议读取列103中的数据,其中,对请求者的响应被定义为GO,表示处理器可以继续具有查询的数据的过程,因为要读取的预期的数据有效,处理器可以使用数据。
在继续本发明定义的操作中,必须通知以前共享数据的其余的象限,应有本示例的数据不再有效,这样的象限不再具有数据的有效的副本。相应地,本发明假设,由于操作,这样的存储器现在被定义为陈旧的。列105假设,RCI的n副本(这意味着远程高速缓存线失效)被发送到其他共享者。以前共享所述数据的每一个象限(总共n个象限)现在被通知,被操作的高速缓存线现在无效。在行109中的示例中,列103表示系统中预期的失效确认的数量(inv=n)。相应地,inv=n匹配n*RCI。本示例中定义的系统操作不完整,直到数据被接收,并返回n个失效确认。在该示例中,可以理解,只有一个对发出请求的象限的响应,因为只有一个发出请求的象限。在行109中,只有一个对宿主象限的请求,因为只有一个宿主象限,并且只有一个对所有者象限的请求,因为只有一个象限被定义为所有者。在列105中,可以理解,在给定的示例中,在所说明的优选实施例中,最多可以有三个共享象限,因为在本实施例中提供了总共四个象限。
对于所说明的示例,可以理解,图4、5、6、7和8提供了完整的操作方案和控制协议,准确地定义了这里所定义的设备和方法的操作。图9中的Q/A列表示助记符是否与请求(Q=请求)或回复(A=回复)关联。
本发明可以在利用中央控制设备或系统以在一组微处理器之间进行通信的任何多处理器系统中应用。当与标记和地址纵横开关系统以及数据纵横开关系统一起使用时本发明最有益,这样的系统跨系统地使用不均匀的存储器存取或分布式存储器连接多个处理器组。这里所显示和详细描述的优选实施例的系统和方法完全能够实现本发明的目标,这些系统和方法可以在这样的系统中通过跟踪数据标记和地址纵横开关控制器内的数据状态来维护多节点系统内的高速缓存的一致性。然而,应该理解,所描述的实施例只本发明的一个示例,因而,只是本发明广泛预期的主题的代表。
例如,在特定的系统的上下文中描述了优选的实施例,该系统利用十六个微处理器,由四个处理器的四个单独的组的象限组成,每一个象限具有存储器控制代理,该存储器控制代理与中央控制器纵横开关连接,将存储器板分配给象限,优选实施例通过其他子系统与其他象限中的类似的控制器进行通信。尽管如此,本发明可以与具有多处理器的任何系统一起使用,不论是否被分组为“节点”,指派了单独的存储器控制代理,当在多节点系统内这样的处理器组或在处理数据读取或写入命令或事务请求时需要一致性或协调时,控制一个或多个处理器的每一个单独的组。
本发明不一定限于这里所说明的特定的处理器的数量或处理器的阵列,但可以在使用互连的存储器控制系统中使用相似的系统设计,在节点之间带有标记和地址和数据通信系统,以实现本发明。相应地,本发明的范围完全包含其他实施例,这对于精通本技术的人员是显而易见的。
权利要求
1.一种在多处理器系统中维护高速缓存一致性的方法,所述多处理器系统具有由互连的通信通道(70-72)连接的多个节点(58),能够存储有关系统内的数据的位置和状态的信息,每一个节点具有至少一个高速缓存,节点本地的存储设备,以及至少一个处理器设备,每一个节点内的处理器设备能够从本地存储设备、本地高速缓存或从非本地存储设备或非本地高速缓存通过互连的通信通道访问数据,该方法包括存储有关所述互连通道(70,72)中的数据的状态的信息(102);响应发出请求的节点所发出的对被请求的那部分数据的请求,检查所述存储信息以判断被请求的那部分数据的最当前副本的位置;检索被请求的那部分数据的所述当前副本,并将所述数据定向到发出请求的节点;检查所述存储信息以判断被请求的数据的位置;以及指示所述系统向发出请求的节点发送所述被请求的数据,而不必经过所述互连通信通道。
2.一种多处理器计算机系统,包括多个节点(58),每一个节点都包括至少一个处理器和连接到所述处理器的共享的分布式系统存储器的一部分;以及一个通信通道,连接所述节点并包括中心硬件设备(70、72),所述中心硬件设备存储在节点的存储器中存储的数据的位置和状态信息。
3.根据权利要求2所述多处理器系统,其特征在于,每一个节点都包括无需通过所述通信通道进行通信便可以对其进行访问的存储器,以及可由其它节点进行远程访问的存储器。
4.根据权利要求2所述多处理器系统,其特征在于,所述中心硬件设备存储信息,用于判断哪些节点或处理器存储了每一个所述节点的存储器中的一个或多个标识的数据的副本。
5.根据权利要求2所述多处理器系统,其特征在于,所述中心硬件设备将被请求的数据与节点中所存储的数据的位置和状态进行比较,将被请求的数据定向到发出请求的节点,并向所述设备为其存储了数据的位置的其他节点发送需要其他数据的请求。
6.根据权利要求5所述多处理器系统,其特征在于,所述中心硬件设备包括可操作地连接到节点的调度缓冲区,并在向目标节点传送数据的同时,向其他节点发出需要与标识的数据的状态相关的信息的请求。
7.根据权利要求5所述多处理器系统,其特征在于,所述互连通信通道包括第一通道,用于存储节点中的数据的位置和状态,第二通道,用于传送由所述目标节点所请求的数据。
8.一种在多处理器系统中维护高速缓存一致性的方法,所述多处理器系统具有由互连的通信通道(70-72)连接的多个节点(58),能够存储有关系统内的数据的位置和状态的信息,每一个节点具有至少一个高速缓存,节点本地的存储设备,以及至少一个处理器设备,所述存储器和处理器设备连接在一起以构成完整的子系统,每一个节点内的处理器设备能够从本地存储设备、本地高速缓存或从非本地存储设备或非本地高速缓存通过互连的通信通道访问数据,其特征在于,所述通信通道包括第一通道(70)和第二通信通道(72),所述第一通道传送节点内的数据的状态和位置,所述第二通信通道在各个节点之间传送数据,该方法包括在所述第一通道中存储有关数据的状态(102)的信息;所述第一通道响应发出请求的节点所发出的对数据的请求,检查所述存储信息以判断被请求的那部分数据的最当前副本的位置;所述第一通道指示所述第二通道将所述数据的所述最当前副本转发到发出请求的节点;以及所述第二通道检索被请求的那部分数据的所述当前副本,并将所述数据定向到目标节点。
9.根据权利要求8所述方法,其特征在于,所述第一通道响应发出请求的节点所发出的对数据的请求,检查所述存储信息以判断被请求的那部分数据的最当前副本的位置的步骤包括在所述第一通信通道中存储有关每一个节点中的数据的状态的信息;在从节点请求数据时,通过读取所述存储信息并判断被定义为所述存储数据的最当前副本的所希望的状态,来检查每一个节点中存储的被请求的数据的状态。
全文摘要
一种用于提供多处理器系统中的高速缓存一致性的方法和设备,所述多处理器系统被配置为两个或多个具有本地存储器的节点(58),以及将所有节点互相连接的标记和地址纵横开关系统(70)和数据纵横开关系统(72)。本发明适用于多处理器计算机系统,所述多处理器计算机系统利用在一个以上节点分布的系统存储器并窥探利用节点本地存储器的每一节点中的数据状态。使用全局窥探来提供数据标记的单一的序列化点。中心纵横开关控制器同时检查所有节点的给定地址线的高速缓存状态标记,并向正在请求数据的节点发出适当回复,同时向系统中的任何其他节点生成其他数据请求,以便维护高速缓存一致性并提供被请求的数据。系统通过将每一个节点的本地存储器划分为本地和远程类别来利用每一个节点的本地存储器,所述类别对于任何给定的高速缓存线是互相排斥的。本发明为每一个节点提供了三级远程高速缓存支持。
文档编号G06F13/00GK1620651SQ03802570
公开日2005年5月25日 申请日期2003年1月9日 优先权日2002年1月9日
发明者托马斯·B·伯格, 布鲁斯·M·吉尔伯特, 托马斯·D·洛维特 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1