用于多类别存储器的缓存一致性管理

文档序号:948177 发布日期:2020-10-30 浏览:9次 >En<

阅读说明:本技术 用于多类别存储器的缓存一致性管理 (Cache coherency management for multi-class memory ) 是由 F·R·德罗普斯 M·S·沃达克雷 T·麦基 M·马勒维基 于 2020-04-01 设计创作,主要内容包括:在缓存一致性管理的示例性方面,第一请求被接收并且包括共享存储器中的第一存储器块的地址。所述共享存储器包括与对应处理器相关联的存储器设备的存储器块。所述存储器块中的每一个与多种存储器类别中的一种相关联,所述多种存储器类别指示用于管理对应存储器块的缓存一致性的协议。确定与所述第一存储器块相关联的存储器类别,并且对所述第一请求的响应是基于所述第一存储器块的存储器类别。所述第一存储器块和第二存储器块被包括在相同的存储器设备之一中,并且所述第一存储器块的存储器类别不同于所述第二存储器块的存储器类别。(In an exemplary aspect of cache coherency management, a first request is received and includes an address of a first memory block in a shared memory. The shared memory includes memory blocks of a memory device associated with a corresponding processor. Each of the memory blocks is associated with one of a plurality of memory classes that indicate a protocol for managing cache coherency of the corresponding memory block. A memory class associated with the first memory block is determined, and a response to the first request is based on the memory class of the first memory block. The first and second memory blocks are included in one of the same memory devices, and a memory class of the first memory block is different from a memory class of the second memory block.)

用于多类别存储器的缓存一致性管理

背景技术

在多处理器共享存储器系统中,在处理器的本地系统存储器中存储的数据可以被共享,导致所述数据的副本也被存储在其他处理器的缓存中。采用缓存一致性以确保遍及系统传播所述共享数据的改变或所述数据副本的改变,使得所有副本都反映相同的值。硬件和/或软件实施方式通过应用诸如基于监听的协议或基于目录的协议等缓存一致性协议来监督或管理多处理器共享存储器系统中的缓存一致性。基于目录的缓存一致性协议采用一致性目录来追踪和存储存储器块的状态和所有权,在多处理器共享存储器系统中所述存储器块的状态和所有权可以与其他处理器共享。可以采用一致性目录缓存以提供对一致性目录中存储的状态和所有权信息的更快访问。

具体实施方式

在前述描述中,阐述了许多细节以使得理解本文中所公开的主题。然而,可以在没有这些细节中的一些或全部细节的情况下实践实施方式。其他实施方式可以包括下文所讨论的细节的修改和变化。所附权利要求旨在覆盖这样的修改和变化。

本公开提供用于管理多处理器共享存储器系统中的缓存一致性。可以使用不同的协议、方案和/或配置管理缓存一致性,所述不同的协议、方案和/或配置中的每一个提供不同的优势和劣势。比如,缓存一致性可以由硬件和/或软件管理。此外,缓存一致性可以是基于目录的,意味着缓存一致性协议采用一致性目录(本文中也称为“目录”)来存储与存储器块相关的信息或来自存储器块的数据的副本(例如,缓存行)。在目录条目中存储的信息可以包括存储器块或缓存行的状态和/或所有权。在目录中存储的状态和所有权信息可被用于促进或确保跨多处理器共享存储器系统之间具有一致性——例如,共享数据的改变被传播到系统中的共享处理器或计算节点。

使用单个缓存一致性协议提供缓存一致性管理的系统遭受这种协议的缺点。比如,对于一些协议,随着共享存储器的量增长,为了适应对另外的存储器块或缓存行的状态和所有权信息的追踪,目录的大小同样地增加。因此较大目录要求甚至更多的存储器,这可以导致电力资源、计算资源和区域资源的更大消耗。被要求维持一致性协议的信息移动可消耗资源,所述资源将以其他方式对于其他系统使用是可用的。

在本文描述的示例实施例中,系统的存储器块或存储器的区域(诸如共享存储器)可以被分类为三种存储器类别中的一种。然而,应理解的是,系统可以支持多于或少于三种存储器类别,每一种存储器类别具有唯一的缓存一致性协议或管理方法。每一种存储器类别指示要被用于对应存储器块或所述存储器的区域的缓存一致性协议。通过同时支持多种存储器类别,系统可以实施最大化或最大限度利用存储器类别的缓存一致性协议的优势并且最小化或避免其劣势的最佳或改良的缓存一致性管理安排。

比如,对于第一存储器类别,缓存一致性由硬件管理。根据第一存储器类别的缓存一致性协议,本地存储器块和/或相应的缓存行的状态和所有权信息被存储在系统存储器中的一致性目录中。此外,在相应的节点控制器上提供一致性目录缓存以存储被存储在一致性目录中的状态和所有权信息的一些或全部的副本。节点控制器除了其他方面外还管理对本地存储器的访问。因此,当节点控制器接收要求访问状态和所有权信息的请求时,节点控制器可以从其一致性目录缓存中高效地获得所述信息,而不必从系统存储器中的一致性目录中取得所述信息。

值得注意的是,由于一致性目录缓存的大小不必随着系统存储器和相应的一致性目录的增加而增加,因此节点控制器的大小可以保持恒定(和/或不随着系统存储器增长相同的比例)。因此,这种配置使得系统可扩展为非常大的系统存储器尺寸。另一方面,第一存储器类别的缓存一致性协议需要消耗系统存储器以存储一致性目录。随着系统存储器增长,一致性目录在大小上同样地增加以追踪正在增长的系统存储器的状态和所有权,由此消耗更多的存储器资源。此外,当一致性目录缓存有遗漏或其他缓存管理相关的活动时,一致性目录缓存的维护可要求访问系统存储器以获得状态和所有权信息。

对于第二存储器类别,缓存一致性由硬件管理。根据第二存储器类别的缓存一致性协议,使用被存储在节点控制器(例如,节点控制器的存储器)中的一致性目录追踪存储器块和/或相应缓存行的状态和所有权信息。也就是说,代替将一致性目录存储在计算节点的系统存储器中或对应于处理器,目录由节点控制器存储和管理。当节点控制器接收要求访问与其本地存储器相关的状态和所有权信息的请求时,节点控制器可以从其一致性目录中高效地获得所述信息,而不必从存储在系统存储器中的一致性目录中取得所述信息,从而影响系统性能。

将目录存储在节点控制器中不需要消耗另外的系统存储器。此外,由于节点控制器无需访问系统存储器以取得状态和所有权信息从而维护其目录,因此系统性能未受第二存储器类别的缓存一致性协议的太多影响。另一方面,第二存储器类别的缓存一致性协议对可扩展性造成障碍。比如,针对非常大的系统存储器(例如,针对所有存储器块)维持精确的状态和所有权信息需要在节点控制器处增加资源(例如,存储器、大小)。

对于第三存储器类别,缓存一致性由软件管理。也就是说,第三存储器类别的存储器块的缓存一致性由软件应用程序或根据软件应用程序处理。由于目录不被用于追踪状态和所有权信息,因此这种协议不消耗系统存储器。此外,由于由软件管理的一致性不使用目录,因此不需要获得或维护目录所需的系统存储器访问或硬件消息。由于针对这些存储器区域在节点控制器中不要求一致性目录或一致性目录缓存,因此节点控制器的大小和资源也可以被减少。另一方面,然而,由软件管理的缓存一致性确实需要更复杂的应用程序编程模型来实施,并且可以使得一些应用程序性能取决于所要求的数据共享的量。

多处理器共享存储器系统

图1图示了缓存一致性计算系统100的示例性实施例。如在图1中所示出的,出于说明和简化目的,计算系统100包括被布置成计算节点n1、n2、n3和n4(在本文中统称为“n1至n4”或“计算节点”)的计算部件(例如,处理器、存储器)。也就是说,计算节点n1至n4中的每一个指的是不必被单独地封装或在物理上与其他计算节点的计算部件分开的计算部件的关联或逻辑分组。在一些实施例中,多个计算节点(以及存储器、节点控制器)可以一起被封装在单个机壳或封装体中。此外,在一些实施例中,提及计算节点n1至n4中的一个可以指示提及所述计算节点的处理器或存储器设备。计算节点n1至n4被通信地耦接到节点控制器103-1(节点控制器1)和节点控制器103-2(节点控制器2)(本文中统称为“103”或“节点控制器103”)。

节点控制器103经由组构(或组构互连)101彼此通信地耦接。如下文进一步详细描述的,节点控制器103被配置成针对和/或代表相应计算节点提供特定管理功能,如本领域技术人员已知的,包括缓存一致性管理和/或对缓存一致性协议或其他存储器访问协议的实施。出于说明的目的,尽管图1的示例性计算系统100包括两个节点控制器和四个计算节点,但计算系统100可以包括任意数量的节点控制器和计算节点。

如在图1中图示的示例性实施例中所示出的,计算节点n1至n4是包括处理器和存储器(例如,存储器设备)的计算系统。应理解的是,计算节点可以包括或者由任意数量的处理器和/或存储器、以及在示例性图1中未图示的其他硬件以及其他软件组成,如本领域技术人员已知的。计算节点n1至n4(和/或其对应的部件)可以被物理地或虚拟地定义。此外,计算节点n1至n4(和/或其部件)中的每一个可以被独立地或者与其他计算节点一起被物理地封装。因此,在一些实施例中,计算系统100可以是由一个或多个机壳组成的服务器,每个机壳包括一个或多个计算节点。

在一些实施例中,如上文提及的,计算节点n1至n4中的每一个虽包括处理器和存储器,但可以包括各种其他的硬件和/或软件部件。如在图1中所示出的,计算节点n1、n2、n3和n4分别包括处理器105-1(处理器1)、处理器105-2(处理器2)、处理器105-3(处理器3)和处理器105-4(处理器4)(在本文中统称为“105”或“处理器105”),以及存储器107-1、存储器107-2、存储器107-3和存储器107-4(在本文中统称为“107”或“存储器107”)。在一些实施例中,处理器105(和/或处理器105的存储器控制器)经由一个或多个存储器通道和/或总线(诸如***部件互连(PCI)总线、工业标准架构(ISA)总线、PCI Express(PCIe)总线)和高性能链路(诸如直连媒体接口(DMI)系统、快速通道互连、超传输、双倍数据率(DDR)、SATA、SCSI或光纤通道总线,等等)被通信地耦接(例如,直接连接)至其对应的存储器107。尽管在图1中未图示,但在一些实施例中,存储器107中的一个或多个被连接至组构101。

在一些实施例中,存储器可以对于一个处理器是本地的,并且对于其他处理器是远程的。比如,在图1中,存储器中的每一个(例如,存储器107-1)可以被视为或被称为对于处理器中的与所述存储器通信地耦接(例如,直接附接)的一个处理器(例如,处理器105-1)是“本地的”。存储器中的对于处理器都不是本地的每一个存储器可以被视为或被称为对于那些处理器是“远程的”。同样地,处理器105和存储器107(和/或节点n1至n4)对于节点控制器103中的一个可以是本地的或远程的。比如,如在图1中图示的,节点控制器103-1被通信地耦接至处理器105-1和105-2(以及由此耦接至其本地存储器107-1和107-2)。因此,处理器105-1和105-2(及其本地存储器107-1和107-2)对于节点控制器103-1是本地的,而其他处理器和存储器可以被视为对于节点控制器103-1是远程的。应理解的是,节点控制器103可以具有任意数量的本地处理器和存储器。

处理器105中的每一个是被配置成执行指令的独立处理资源、节点或单元。应理解的是,处理器105中的每一个可以是或者指一个或多个中央处理单元(CPU)、由两个或更多个CPU组成的双核或多核处理器、计算集群、云服务器等。在一些实施例中,处理器105中的两个或更多个(例如,处理器105-1和处理器105-2)可以使用点对点互连或总线被通信地耦接。例如,可以使用英特尔的超级通道互连(UPI)或英特尔的快速通道互连(QPI)连接处理器105中的两个或更多个。

存储器107中的每一个可以包括或者由任意数量的存储器设备组成,所述存储器设备可以是易失性设备(例如,随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM))和/或非易失性设备(例如,非易失性RAM(NVRAM)、双倍数据率4同步动态RAM(DDR4SDRAM))。可被使用的其他类型的存储器设备包括只读存储器(ROM)(例如,掩模ROM、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM))、闪速存储器、忆阻器器件,等等。

如本领域技术人员已知的,存储器107可被用于存储诸如操作系统(OS)、管理程序和其他应用程序等软件。在存储器107上存储的软件由进程和/或线程组成,所述进程和/或线程可被同时执行并共享诸如存储器(例如存储器107)和处理器(例如处理器105)等资源。进程和/或线程当被执行时可以使请求和响应在处理器105(和/或节点控制器103-1和节点控制器103-2)之间传输。如下文进一步详细描述的,在存储器107中存储的软件可被用于提供缓存一致性。

存储器107或者其一部分(例如,存储器块、片段)可以形成共享存储器107sm。由存储器107中的全部或一些存储器的全部或部分形成的共享存储器107sm可以被处理器105中的全部或一些处理器共享和/或访问。也就是说,例如,在存储器107-1的被共享并因此是共享存储器107sm的一部分的部分中存储的数据可以被除处理器105-1之外的处理器访问。应理解的是,许可(例如,读许可/写许可)可被用于控制对共享存储器107sm的全部或部分的访问和/或被处理器105中的全部或一些处理器访问。应理解的是,为了简化,除非另有指明,否则本文提及的存储器107中的任意或全部应指被共享的并组成共享存储器107sm的部分,尽管在一些实施例中,存储器107可以包括非共享区域。

如本领域技术人员已知的,存储器107中的每一个和/或其部分可以根据如本领域技术人员已知的各种设置被配置或被编程。这种配置可以包括指定存储器107和/或其作为共享存储器的部分。比如,当划分存储器107时,这种配置可以发生。当可以针对存储器的存储器块或存储器区域定义或设定本领域技术人员已知的许多其他设置时,一个示例是缓存一致性协议。缓存一致性协议定义了针对相应的存储器块或区域来管理或处理缓存一致性的方式。出于说明的目的,将参照存储器块来描述存储器类别。然而,应理解的是,存储器类别可以被分配给任意尺寸的存储器区域和/或其他存储器部分。

如下文进一步详细描述的(例如,参照图2),可以使用存储器类别将存储器块分类,所述存储器类别指示其缓存一致性协议和/或缓存一致性管理方案。在本文描述的一些示例实施例中,当可以从任意数量的存储器类别和相应缓存一致性协议的集合中为存储器块分配存储器类别时,可以为存储器块分配多达三种存储器类别中的任意一种,所述三种存储器类别定义了它们的缓存一致性协议或管理方案。

·类别1:利用节点控制器上的一致性目录缓存由硬件管理的一致性;

·类别2:利用节点控制器上的一致性目录由硬件管理的一致性;以及

·类别3:由软件管理的一致性。

存储器片段可动态配置为缓存一致性类别中的一种类别产生混合共享存储器和多处理器系统,其使得可以最大限度利用每一种缓存一致性类别的优势(并最小化劣势)。应理解的是,存储器107中的每一个可以具有不同的尺寸并且定义任意数量的存储器块或在其中的可以具有任意尺寸和/或配置的区域。如下文进一步详细描述的,关于存储器块或存储器区域的定义或配置的至少一些信息可以被存储在比如对应的节点控制器中。在一些实施例中,节点控制器可以存储指示存储器块(和/或存储器区域)的存储器类别和/或缓存一致性协议的信息。所述信息允许节点控制器容易地识别针对存储器块的每一种存储器类别的缓存一致性协议并且基于所述协议采取特定的动作。在一些实施例中,可以使用base-limit寄存器来存储和/或追踪针对存储器块(或存储器区域)的存储器类别或缓存一致性协议。也就是说,例如,节点控制器可以存储base-limit寄存器,所述base-limit寄存器中的每一个对应于一种存储器类别。与存储器类别相关联的每个base-limit对可以包括或者识别存储器地址和/或由所述存储器类别覆盖的存储器范围。因此,节点控制器可以确定所接收的存储器地址落入哪个base-limit对内,并且由此识别所述base-limit对的以及因此在所述存储器地址处的存储器块的存储器类别。base-limit对也可以识别存储器区域的节点控制器组构位置。

仍参照图1,处理器105中的每一个可以包括用于存储来自存储器107的数据的一个或多个处理器缓存或者与之相关联以提供对所述数据的更快访问。更具体地,缓存105-1c、105-2c、105-3c和105-4c(本文中统称为“105c”或“缓存105c”)分别与处理器105-1、105-2、105-3以及105-4相关联(和/或对于其是本地的)。还可以说,在一些实施例中,存储器107中的每一个与其相应的处理器105的缓存105c相关联。应理解的是,单个缓存可以对应于单个处理器或者可以在多个处理器之间共享。还应理解的是,每一个缓存可以被物理地布置在作为其相应处理器的相同的或分开的芯片或部件上。

由于来自或被存储在存储器107中的数据在被缓存时可以被更快地访问,因此缓存105c可被用于存储最初被存储在存储器107中的数据的副本,例如,所述数据的副本被更加频繁地访问和/或可能需要更加高效地被访问。应理解的是,缓存数据可以包括在存储器107中存储的数据的全部或子集。当正在缓存时,数据以被称为缓存行或缓存块的固定尺寸块从存储器107传送至缓存105c。复制的缓存行作为缓存条目被存储在缓存105c中。缓存条目包含数种类型的信息,包括从存储器107复制的相应数据以及所述数据在存储器107内的存储器位置(例如,标签或地址)。

在一些实施例中,可以将共享数据的多个副本存储在多个缓存105c中。例如,在与处理器105-1相关联的存储器107-1中存储的数据可以被缓存在其本地缓存105-1c中并且与其他处理器共享使得其副本也被存储或被缓存在远程缓存105-2c、105-3c和/或105-4c中。在这种情况下,协调对所述共享数据的访问以提供一致性。比如,当共享数据被修改时,遍及系统100传播这些改变以确保所述数据的所有副本被更新并且是一致的或者共享副本是无效的以确保维持一致性。

目录可被用于追踪共享数据并提供一致性。如下文进一步详细描述的(例如,参照图2),目录可以追踪和/或存储关于共享数据的信息,包括例如状态和所有权信息。此外,还如下文进一步详细描述的,基于存储器类别的类型,目录可以被存储在一个或多个部件或设备中。虽然目录可以是包括关于存储器107中的所有共享数据的信息(例如,状态、所有权)的“完整目录”,但是除非另有指明,否则本文中的目录被用于追踪相应系统存储器的缓存行或块的全部或部分。

仍参照图1,如上所讨论的,节点控制器103是被配置成代表或针对对应计算资源提供和/或执行多种功能(例如,缓存一致性、路由、负载平衡、故障恢复等)的计算设备或部件,包括计算节点、存储器和/或处理器。在一些实施例中,节点控制器103中的每一个的功能在多处理器系统100的处理器105之一中可以被替代地提供。

在一些实施例中,节点控制器103-1可以是或者包括通用处理器(例如,微处理器、传统的处理器、控制器、微控制器、状态机、序列发生器)、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑设备、分立门或晶体管逻辑、分立硬件部件,或其被设计成执行本文所描述的功能的任何组合。在一些实施例中,缓存一致性管理(例如,图4)由包括一致性管理器硬件序列发生器、硬件状态机和/或其他电路或者硬件部件的节点控制器执行。但是,应理解的是,一致性管理也可以如本领域技术人员已知的通过处理器实施的指令来提供。节点控制器103-1也可以包括一个或多个存储器或者存储器设备,诸如ROM、RAM、DRAM、EEPROM、闪速存储器、寄存器或本领域技术人员已知的任何其他形式的存储介质。

如在示例性图1中图示的,节点控制器103-1被通信地耦接至节点n1和n2(和/或其处理器105-1和105-2)和/或与节点n1和n2(和/或其处理器105-1和105-2)相关联;并且节点控制器103-2被通信地耦接至节点n3和n4(和/或其处理器105-3和105-4)和/或与节点n3和n4(和/或其处理器105-3和105-4)相关联。应理解的是,节点控制器103中的每一个可以被通信地耦接至任意数量的节点和/或处理器和/或与之相关联。在一些实施例中,节点控制器103及其对应的本地处理器经由诸如UPI链路等互连通信地耦接。此外,节点控制器103可以经由组构101彼此互连。

在一些实施例中,除了其他方面外,节点控制器103还可以通过追踪缓存105c之中的相应缓存中的缓存行的状态和所有权信息来提供缓存一致性。如下文进一步详细描述的,节点控制器103可以采用目录和/或目录缓存以提供缓存一致性。也就是说,尽管在图1中未图示,但在一些实施例中,节点控制器103可以包括对应于目录的一致性目录缓存以用于追踪例如系统存储器的缓存行大小的块的状态和所有权信息。然而,应理解的是,如本文描述的,目录可以另外地或可替代地被存储在存储器中(例如,在存储器107之一中)而不是在节点控制器中。

组构101可以包括一个或多个直接互连和/或交换互连,通过所述组构,节点控制器103(以及由此处理器105)可以彼此通信。例如,在一些实施例中,组构101可以包括在节点控制器103-1与节点控制器103-2之间的直接互连(例如,以最小化时延)。因此,组构101可被用于在节点控制器103和/或处理器105的一个或多个之间或当中传输数据和/或消息。这种通信可以包括例如对存储器或缓存块进行读取或写入的请求,在这种情况下,如下所述,节点控制器103可以针对每种类型的存储器类别经由多种同时实施的缓存一致性协议来提供或促进缓存一致性。

图2图示了具有多种存储器类别的存储器块的共享存储器的示例性实施例,每种类别具有或指示用于管理存储器块的缓存一致性的不同缓存一致性协议。更具体地,在图2中,由存储器107-1、107-2、107-3以及107-4组成的共享存储器107sm被示出,所述存储器分别对应于处理器105-1至105-4和/或计算节点n1至n4和/或对于处理器105-1至105-4和/或计算节点n1至n4是本地的。出于说明的目的,如所示出的,共享存储器107sm的由存储器107-1组成的部分包括编号为m01至m20的存储器块,所述存储器块中的每一个可以具有任意尺寸和/或与其他块不同的尺寸。同样地,共享存储器107sm的由存储器107-2组成的部分包括编号为m21至m51的存储器块;共享存储器107sm的由存储器107-3组成的部分包括编号为m52至m78的存储器块;并且共享存储器107sm的由存储器107-4组成的部分包括编号为m79至m92的存储器块。存储器块被配置成存储数据。应理解的是,共享存储器107sm可以具有任意尺寸、包括任意数量的存储器块或区域、以及由对应于任意数量的计算节点的任意数量的存储器或存储器设备组成。此外,存储器107-1、107-2、107-3和107-4(以及在这些存储器中的每一个存储器中的块、类别或区域)不必是连续的,尽管在示例性图2中被图示如此。

为了简化,现在参照共享存储器107sm的存储器107-1更详细地描述了存储器类别及其相应的用于管理缓存一致性的缓存一致性协议(例如,缓存一致性管理方案、协议、配置)。应理解的是,出于简化的目的,尽管未在图2中图示或者未参照图2讨论,但是存储器107-2、107-3和107-4可以包括下文参照存储器107-1所描述的一些或全部特征、布置、配置和/或功能。因此,应理解的是,与存储器107-1类似,存储器107-2、107-3和107-4可以包括多种存储器类别的存储器块,以及同样地与缓存、目录和/或节点控制器相关联。

仍参照图2,存储器107-1包括三种不同存储器类别的存储器块:存储器块m01至m05属于存储器类别(被标记为“类别1”)存储器块;存储器块m06至m16属于存储器类别2(被标记为“类别2”);并且存储器块m17至m20属于存储器类别3(被标记为“类别3”)。不同类别的存储器块具有与其相关联的不同缓存一致性管理协议。如上文所描述的,例如在存储器管理操作或存储器划分期间,存储器块或存储器区域的存储器类别可被设置。应理解的是,存储器可以包括任意数量的存储器类别的存储器块。也就是说,尽管示例性存储器107-1包括三种不同的存储器类别,但是存储器107-1可以包括一种或多种不同类别的存储器块。此外,存储器的属于单个类别的存储器块不必是连续的。也就是说,例如,尽管在图2中图示的存储器107-1的类别1存储器块(m01至m05)被示出为是连续的,但这些相同的存储器块可以非连续地分布在存储器107-1的其他区域或地址处。

在一些实施例中,存储器107-1至107-4分别与缓存105-1c至105-4c相关联。在一些实施例中,在存储器块中存储的数据可以被缓存(例如,在处理器缓存中),意味着数据的副本(被称为“缓存行”或“缓存块”)被存储在缓存的缓存条目中。存储缓存行(例如,数据副本)的缓存条目的示例性结构在下面的表1中示出:

表1

缓存索引 有效位 标签 数据

如在表1中所示出的,除了其他信息之外,缓存条目还可以包括索引、有效位、标签以及从主要的存储器之一中复制的数据的副本——缓存行。在一些实施例中,缓存索引可以是与缓存内的每个缓存条目或缓存块相关联的标识符;有效位可以是指示相应的缓存条目是被使用的还是未被使用的标识符(例如,位);标签可以是用于确定缓存行的标识和/或用于将缓存行链接至或关联至其在主存储器中的相应的存储器块的标识符或描述符;并且数据涉及来自主存储器的数据的副本(缓存行)。

仅出于说明的目的,缓存105-1c现在将被进一步详细描述。然而,应理解的是,缓存105-2c至105-4c包括本文所描述的缓存105-1c的一些或全部特征。在一些实施例中,在存储器107-1的存储器块中存储的数据的副本可以被缓存在处理器105-1的相应缓存105-1c的缓存条目中,以及在缓存105-2c、105-3c和/或105-4c中。尽管缓存可以是任意尺寸,但是在一些实施例中,图2的缓存105-1c小于其对应的存储器107-1。也就是说,缓存105-1c被用于存储存储器107-1中所存储的数据的子集(诸如被更频繁使用的数据),在所述缓存中,所述数据的子集可以被处理器105-1更加快速地访问。

在示例性图2中,缓存105-1c包括可以是任意尺寸的示例性缓存条目c01至c11。如由从存储器107-1的存储器块指向缓存105-1c的缓存条目的箭头图示的,缓存条目c03、c01和c08分别与作为类别1存储器块的存储器块m01、m04和m05中存储的数据的副本相关联和/或存储所述数据的副本。缓存条目c02、c11、c04分别与是类别2存储器块的存储器块m06、m15和m16中存储的数据的副本相关联和/或存储所述数据的副本。缓存条目c09和c10分别与是类别3存储器块的存储器块m17和m18中存储的数据的副本相关联和/或存储所述数据的副本。应理解的是,缓存105-1c的一些缓存条目(例如,c05至c07)在任意给定时间处可以不被使用。

如上文所描述的,在一些实施例中,目录(或“一致性目录”)可被用于遍及整个系统(例如,系统100)追踪存储器块和/或相应缓存行(包括在远程缓存中的缓存行)的状态。也就是说,在目录条目中,目录可以存储指示哪个缓存已经存储或正在存储来自本地存储器中的存储器块的数据的副本的信息。下面表2图示了目录条目的示例性结构:

表2

标签 状态 所有权

如在表2中所示出的,每个目录条目可以包括例如标签、状态信息和所有权信息。标签可以是将目录条目与存储器块(或缓存条目)相关联的标识符、指针等。也就是说,目录条目中的标签指示所述目录条目的状态和所有权信息对应于哪个存储器块或缓存条目。状态信息指示存储器块的状态。应理解的是,可以追踪不同的状态,包括例如修改状态、独有状态、共享状态和/或无效状态。

如本领域技术人员已知的,修改状态指示来自存储器块的数据仅被缓存在一个缓存中,但它是脏的(dirty)——意味着它已经从主存储器中存储的原始值进行了修改。独有状态指示来自存储器块的数据仅被缓存在一个缓存中,但它是干净的(clean)——意味着它与主存储器中存储的原始值相匹配。在一些实施例中,独有状态使数据能够在无需通知块的其他潜在共享者的情况下被改变或更新。共享状态指示来自存储器块的数据可以被缓存在其他缓存中并且它是干净的——意味着它与主存储器中存储的原始值相匹配。无效状态指示来自存储器块的数据未被缓存。

仍参照表2,所有权信息指示拥有(例如,在其中已缓存有)存储器块或缓存行的处理器——例如,当目录中所述存储器块的状态为修改状态或独有状态时;或者指示共享存储器块的处理器——例如,当目录中所述存储器块的状态是共享状态时。应理解的是,取决于所使用的一致性实施方式和一致性协议,被存储为状态和所有权信息的实际信息可以变化。

可以使用单个目录或多个目录追踪单个计算节点的存储器和/或缓存的状态和所有权,所述单个目录或多个目录可以被存储在一个或多个存储器上。在一些实施例中,目录的存储位置可以是基于在相应的缓存中的存储器块的缓存一致性类别。此外,在一些实施例中,与单个计算节点的缓存相关联的目录的数量可以是基于相应缓存中的存储器块的缓存一致性类别的数量。

例如,如上所讨论在图2中所示出的,存储器107-1的存储器块具有三种不同的类别(例如,类别1、类别2、类别3)。参照图3A和图3B,现在进一步详细地描述存储器的这些类别。

如在示例性图3A中所示出的,类别1的存储器块的缓存一致性是使用在本地主存储器上存储的一致性目录以及在相应的节点控制器上存储的一致性目录缓存由硬件管理的。如在示例性图3B中所示出的,类别2的存储器块的缓存一致性是使用在相应的节点控制器上存储的一致性目录由硬件管理的。类别3的存储器块的缓存一致性是由软件管理的。

更具体地,在图3A中,数据被存储在存储器207-1的类别1存储器块中。除了其他方面外,计算节点n1a的目录209-1还通过追踪和/或存储存储器207-1的全部或一些存储器块的状态和所有权来管理一致性。计算节点n1a与节点控制器203-1通信地耦接和/或相关联,计算节点n1a可以通过该节点控制器203-1与其他计算节点通信。节点控制器203-1包括缓存了目录209-1的全部或一些目录条目的目录缓存203-1c。图3A的示例性布置通过允许即使计算节点n1a的存储器的尺寸增加,节点控制器203-1的存储器和/或缓存的尺寸也保持相对恒定来提供可扩展性。

在图3B中,数据被存储在存储器207-2的类别2存储器块中。计算节点n2a与节点控制器203-2通信地耦接和/或相关联,计算节点n2a可以通过该节点控制器203-2与其他计算节点通信。节点控制器203-2包括目录211-2,除了其他方面外,所述目录还通过追踪和/或存储存储器207-2的全部或一些存储器块的状态和所有权来管理一致性。图3B的示例性布置不要求为了追踪状态和所有权信息而增加或另外消耗存储器207-2,并且由于除了其他方面外在节点控制器203-2上的目录还存储状态和所有权信息而消除或减少对存储器207-2的访问。

应理解的是,计算节点n1a和计算节点n2a的目录和其他布置可以被组合,使得单个计算节点具有含有多种类别的存储器块的存储器。作为这种组合的结果,可以提供在计算节点和相应的节点控制器两者中存储的目录,并且在节点控制器上也可以提供目录缓存。此外,尽管在计算节点n1a上的目录209-1被图示为与其相应的存储器207-1是分开的,但是应理解的是,在存储器207-1中(例如,在存储器207-1的非共享部分中)可以包括和/或存储目录。应注意的是,除了其他方面外,目录缓存211-2可以用作目录和目录缓存两者以便追踪不同存储器类别的状态和所有权。也就是说,应理解的是,在本文中的一些实施例中,目录与目录缓存之间的区别涉及条目替换算法以及对每一个的追踪的完整性。比如,目录可以被配置成保留针对所有相关存储器块的追踪以及不利用有效的远程所有权来移除任何条目。通常当目录位于节点控制器上时,节点控制器保留所述信息(例如,状态、所有权)的唯一副本。目录缓存可以被配置成包含目录条目的子集,并且目录信息的完整全集也将被保留在另一存储器中。目录缓存通常地用较新的条目替换较旧的条目。

返回至图2,存储器107-1包括不同类别的存储器块。作为结果,存储器107-1的存储器块的数据的缓存一致性采用在计算节点n1的存储器中存储的一致性目录109-1、以及在节点控制器103-1上存储的另一个一致性目录111-1。此外,根据针对类别1存储器块的一致性管理协议,节点控制器103-1包括一致性目录缓存103-1c,所述一致性目录缓存包括在目录109-1中的条目的副本。应理解的是,在一些实施例中,目录109-1和目录111-1可以单独地或组合地被配置成相比于追踪存储器107-1的全部存储器块的状态和所有权信息所需而言更小或者包括更少的条目。也就是说,目录109-1和目录111-1可以单独地或组合地追踪存储器块的仅子集的状态和所有权。

目录109-1包括示例性目录条目d01至d12。如所示出的,除其他方面外,目录条目d01、d02、d03、d08和d09还分别与存储器块m01、m04和m05、m03和m02的状态和所有权信息相关联和/或存储所述状态和所有权信息。值得注意的是,存储器块m01、m04和m05、m03和m02是类别1存储器块。这样,根据类别1存储器块的对应缓存一致性管理协议,节点控制器103-1的一致性目录缓存103-1c存储了目录条目d01、d02、d03、d08和d09中的全部或一些数据(例如,状态、所有权)的副本。如本文中进一步详细讨论的,节点控制器103-1可以在在它自己的缓存(103-1c)中容易地访问存储器块m01、m04和m05、m03和m02的所有权和状态信息而不需要访问在计算节点n1上的目录109-1、缓存105-1c和/或存储器107-1以获得所述信息。具体地,一致性目录缓存103-1c的目录缓存条目c50、c51、c52、c57和c58分别包括目录109-1的目录条目d01、d02、d03、d08和d09的副本。

此外,在节点控制器103-1上存储的目录111-1包括示例性目录条目d70至d79。如所示出的,除其他方面外,目录条目d70、d71和d79还分别与在存储器块m15、m16和m06中存储的数据的状态和所有权信息相关联和/或存储所述状态和所有权信息。值得注意的是,存储器块m15、m16和m06是类别2存储器块。因此,节点控制器103-1可以在它自己的目录中访问存储器块m15、m16和m06的所有权和状态信息而不需要访问计算节点n1上的存储器107-1和/或目录109-1以获得所述信息。

应理解的是,节点控制器103-1可以包括其他目录和/或在目录111-1中包括另外的目录条目以另外地或可替代地追踪和/或存储其他相关联的存储器(诸如节点控制器n2的存储器107-2)中的存储器块的状态和所有权信息。

图4是图示了用于管理针对多类别存储器的缓存一致性的方面的过程400的示例性实施例的流程图。更具体地,过程400详细说明了在系统100(例如,如参照图1和图2所描述的)中节点控制器103-1如何处理接收的请求,所述请求涉及在共享存储器107sm当中的其相关联的存储器107-1和存储器107-2的任何一个中的存储器块和/或所述存储器的任何一个中存储的数据。

如上所讨论的,节点控制器103-1被通信地耦接至对于其是本地的计算节点n1和n2(和/或其对应的处理器105-1和105-2)。此外,节点控制器103-1经由组构101被耦接至其他节点控制器,诸如节点控制器103-2。节点控制器103-2被通信地耦接至对于其是本地的计算节点n3和n4(和/或其处理器105-3和105-4)。节点n3和n4(和/或其处理器105-3和105-4)对于节点控制器103-1(和/或对于计算节点n1和n2,以及处理器105-1和105-2)是远程的。如在图2中所示出的,存储器107-1包括多种缓存一致性类别(例如,类别1至3)的存储器块。

在过程400的步骤450处,节点控制器103-1接收与在其相应的存储器之一中的存储器块相关的请求,例如,由正被处理器执行的线程触发。请求可以包括指令(例如,读取、写入)、在其中或针对其处理所述指令的存储器块的地址、数据和/或源标识符(例如,请求处理器)。请求可以是远程请求,意味着它由节点控制器103-1从其他节点控制器中的一个(例如,节点控制器103-2)接收,所述其他节点控制器代表系统100的其本地处理器(和/或来自处理器自身中的一个)。另一方面,请求可以是本地请求,意味着它由对于接收所述请求的节点控制器103-1是本地的处理器(例如,105-1和105-2)中的一个接收。

也就是说,在一些实施例中,由节点控制器103-1接收的请求可以是从包括本地处理器(例如,处理器105-1和105-2)和远程处理器(例如,处理器105-3和105-4)的处理器105中的任何一个发起或发送的。如本领域的技术人员已知的,基于指示存储器块(或存储器地址或请求中包括的地址)是由节点控制器103-1管理的信息(例如,存储器映射),请求可以被路由至节点控制器103-1。在一些实施例中,在步骤450处接收的请求可以是读取命令或写入命令——例如,用于将存储器块读取或写入存储器107-1中。在一些实施例中,负责管理缓存一致性的节点控制器103-1可以包含存储器块的状态和所有权信息。如上文所描述的,基于存储器类别(例如,上文所讨论的类别1至3),状态和所有权信息可以被存储在不同的存储器或存储器设备中。节点控制器103-1可以使用此信息来精确且高效地响应在步骤450处接收的请求。

进而,在步骤452处,节点控制器识别在步骤450处由节点控制器103-1接收的请求是从本地处理器(例如,处理器105-1和105-2)还是远程处理器(例如,处理器105-3和105-4)发起的。此确定可由节点控制器103-1基于请求中所包括的数据(例如,进行请求的处理器和/或节点控制器或者从其接收到请求之处的标识符)和/或由节点控制器103-1存储的信息来执行。基于此信息(例如,请求是来自本地处理器还是远程处理器),在步骤454至468处,节点控制器103-1可以执行合适的缓存一致性管理。

节点控制器进而确定在请求中指示的地址(和/或多个地址、地址范围)是否是由软件管理的一致性(SMC)存储器块(例如,类别3)。在一些实施例中,这可以通过确定存储器块是否在SMC存储器区域中而被执行。也就是说,在步骤454处,节点控制器103-1分析在请求中包括的地址并且检查与位于所述地址处的存储器块相关联的存储器类别。如上文所描述的,节点控制器103-1可以使用包括与节点控制器的在共享存储器107sm当中的相关联存储器(例如,107-1、107-2)相关的信息的存储器管理数据等来进行这种确定。在一些实施例中,此信息可以包括针对由节点控制器103-1管理的或者与节点控制器103-1相关联的存储器的块的存储器类别(例如,类别1至3)。

如果节点控制器103-1在步骤454处确定在接收到的请求中引用的地址是类别3存储器块和/或对应于类别3存储器区域(例如,SMC),则节点控制器103-1在步骤456处向从其接收到请求的处理器传输响应(例如,经由处理器的相应节点控制器)。应注意的是,在节点控制器103-1在步骤452处确定请求是由本地处理器(例如,处理器105-1、105-2)发起的实施例中,在步骤456处传输的响应被发送至本地处理器,而无需通过另一个节点控制器路由。另一方面,如果请求是由远程处理器(例如,处理器105-3、105-4)发起的,则在步骤456处传输的响应通过远程处理器的相应节点控制器(例如,103-2)被发送至远程处理器。

如本领域技术人员已知的,响应的类型和/或响应中包含的信息可以取决于许多因素(包括缓存一致性协议、请求是读取指令还是写入指令等等)而变化。比如,在一些实施例中,响应可以包括来自被引用的存储器块的一个或多个数据、以及存储器块的状态和/或所有权信息。

在一些实施例中,在步骤456处(和/或在下文进一步详细描述的步骤462处)传输的响应的类型可以是基于步骤452处的确定请求是由本地处理器还是远程处理器发送的。在一些实施例中,如果请求是从本地处理器接收的,则在步骤456处节点控制器传输响应,所述响应包括表明没有处理器拥有存储器块和/或具有在请求中引用的存储器块中所存储的数据的共享副本的指示。这是由于在由软件管理的一致性方法中是由软件而非处理器来管理缓存一致性的事实。也就是说,软件控制(例如,追踪和确保)SMC存储器块或区域的一致性。另一方面,如果请求是由节点控制器103-1从远程处理器接收的,则响应不包括存储器块的所有权信息。

进而,节点控制器103-1返回至其在步骤450处等待接收另外的请求的原始状态。

返回至步骤454,另一方面,如果节点控制器103-1确定在所接收请求中引用的地址不对应类别3或SMC存储器块,则在步骤458处节点控制器进而确定地址是否与具有使用节点控制器上(或中枢上)的目录由硬件管理的缓存一致性的类别2存储器块相对应。在一些实施例中,这可以通过检查地址是否在类别2存储器区域内来被执行。如在步骤454中,这种确定可以基于由节点控制器103-1存储的关于其相应的或本地的存储器(例如,存储器107-1和107-2)的配置的信息来进行。

如果节点控制器103-1在步骤458处确定在步骤450处接收到的请求中引用的地址与具有使用中枢上的目录由硬件管理的一致性的存储器块(例如,类别2存储器)相对应,则在步骤460处节点控制器进而检测目录命中是否发生。如上文所描述的,在中枢上的由硬件管理的目录(或在节点控制器上的目录)配置或实施方式中,类别2存储器的状态和所有权信息可以被包括在节点控制器103-1中所存储的目录111-1中(而不是被包括在计算节点的主存储器目录109-1中)。应理解的是,除其他方面外,目录111-1还可以包括类别2存储器块的全部或子集的状态和所有权信息。

如本领域技术人员已知的,目录命中和/或其发生指示目录111-1包括与请求中引用的地址相对应的存储器块的状态和/或所有权信息。另一方面,如果目录111-1不包括在请求中所引用的存储器块的状态和所有权信息,则失效发生(例如,无命中发生)。

如果在步骤460处识别到命中,则节点控制器103-1进而在步骤462处响应请求。因为命中已被识别到,意味着存储器块的状态和/或所有权信息被包括在目录111-1中,所以对请求的响应可以基于和/或包括存储器块的所有权。如上所讨论的,响应的类型还可以基于请求是从本地处理器还是远程处理器接收的和/或请求是读取请求还是写入请求而变化。值得注意的是,因为在节点控制器103-1中存储的目录111-1包括相关存储器块的状态和所有权信息,所以节点控制器103-1可以高效地响应请求,而无需首先访问或取得存储在别处(诸如在计算节点的主存储器中)的状态和所有权信息。

如果在步骤460处未识别到命中(和/或识别到失效),意味着目录111-1不包括存储器块的状态或所有权信息,则在步骤456处节点控制器103-1进而向进行请求的处理器传输响应。如上所讨论的,在步骤456处传输的响应可以取决于请求是从本地处理器还是远程处理器接收的而变化。在一些实施例中,如果请求是从本地处理器接收的,则响应可以包括表明存储器块不属于任何处理器(例如,因为它是由软件所有的)的指示。另一方面,如果请求是从远程处理器接收的,则状态追踪信息可以被添加到控制器103-1上的目录111-1,并且向进行请求的处理器发送合适的响应(例如,经由处理器节点控制器)。

进而,无论是否识别到命中,在步骤456或462处发送响应之后,节点控制器103-1返回至其可以等待另外的请求以处理的步骤450。

返回至步骤458,如果节点控制器103-1确定在请求中引用的存储器块不是具有使用在节点控制器中存储的目录由硬件管理的一致性的存储器块(例如,类别2存储器),则在步骤464处节点控制器进而识别目录缓存命中是否发生。换言之,节点控制器103-1检查其一致性目录缓存103-1c是否包括请求中所引用的存储器块的状态和/或所有权信息。

应理解的是,由于节点控制器103-1假设在请求中引用的存储器块是类别1存储器、即具有使用计算节点的主存储器中(例如,存储器107-1中)存储的一致性目录109-1以及节点控制器103-1中存储的目录缓存103-1c由硬件管理的一致性的存储器,因此步骤464的一致性目录缓存命中检查被执行。如上文所描述的,目录缓存103-1c可以存储在相应目录109-1中包括的数据(例如,状态和所有权信息)的副本。在一些实施例中,节点控制器103-1可以进行这样的假设:存储器块是类别1存储器,因为其之前确定存储器块既不是类别3类型存储器也不是类别2类型存储器,并且因此必定是类别1存储器。然而,尽管在图4中未图示,但节点控制器103-1可以基于由节点控制器103-1存储的存储器配置信息在步骤464之前执行检查以确定存储器块是否是类别1存储器。

如果在步骤464处节点控制器103-1确定目录缓存命中发生(意味着在请求中引用的地址与具有在目录缓存103-1c中存储的状态和所有权信息的存储器块相对应),则在步骤462处节点控制器103-1向进行请求的节点控制器或处理器传输包括状态和所有权信息的响应。如由识别到的命中所指示的,因为状态和所有权信息被存储在节点控制器103-1的缓存目录103-1c中,因此节点控制器103-1可以高效地响应请求,而无需访问或取得存储在别处(诸如在计算节点的主存储器中)的状态和所有权信息。进而,节点控制器103-1返回至其可以等待另外的请求以处理的步骤450。

另一方面,如果节点控制器103-1在步骤464处没有检测到命中(和/或检测到失效),则节点控制器103-1在步骤466处从目录109-1中读取和/或取得在请求中引用的存储器块的目录信息(例如,状态和所有权)。如上文所描述的,目录109-1被存储在存储器中,而不是在节点控制器103-1中。例如,对应于第一计算节点n1和/或处理器105-1的目录109-1可以被存储在本地存储器107-1中(例如,在其非共享部分中)。

进而,在步骤468处,节点控制器103-1更新其目录缓存103-1c以包括从目录109-1读取或取得的状态和所有权信息。也就是说,节点控制器103-1可以存储在步骤450处接收的请求中引用的存储器块的、被包括在相应目录109-1中的状态和所有权信息的副本。

进而,在步骤462处,节点控制器103-1向进行请求的节点控制器或处理器传输响应。响应可以包括在请求中引用的存储器块的状态和所有权信息。节点控制器103-1返回至其可以等待另外的请求以处理的步骤450。

应理解的是,尽管与存储器块相对应的存储器类别的确定(例如,步骤454、458)在过程400中被图示为顺序步骤,但是这些确定可以同时地和/或部分同时地执行。例如,在一些实施例中,节点控制器103-1可以在单个步骤中确定存储器块的存储器类别并且基于此相应地处理请求。

图5图示了用于提供缓存一致性管理的装置503-1,所述装置包括硬件或硬件部件503-1h(例如,电路、硬件逻辑)。硬件503-1h被配置成完成或执行本文中所描述的方法、功能和/或过程。在一些实施例中,这些方法、功能和/或过程可被实施为在计算机可读介质(诸如RAM、ROM、EPROM、EEPROM)上存储的机器可读指令或代码。这些指令可以由装置503-1的一个或多个处理器执行。

如在图5中所示出的,硬件503-1h可以包括用于接收请求(诸如包括地址和指令的第一存储器访问请求)的硬件(和/或机器可读指令和可执行指令)504-1。地址可以是共享存储器中的第一存储器块的存储器地址,以及指令可以涉及第一存储器块。共享存储器可以包括与对应处理器相关联的一个或多个存储器设备的多个存储器块。所述多个存储器块中的每一个可以与多种存储器类别中的一种相关联,所述一种类别指示用于管理对应存储器块的缓存一致性的协议。

硬件503-1h可以包括用于确定与第一存储器块相关联的存储器类别的硬件(和/或机器可读和可执行指令)504-2,以及用于基于第一存储器块的存储器类别向第一存储器访问请求传输响应的硬件(和/或机器可读和可执行指令)504-3。

23页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种数据传输方法、装置、计算机可读存储介质和计算机设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类