CN115203071A - 默认共享状态缓存一致性协议的应用 - Google Patents

默认共享状态缓存一致性协议的应用 Download PDF

Info

Publication number
CN115203071A
CN115203071A CN202111259304.6A CN202111259304A CN115203071A CN 115203071 A CN115203071 A CN 115203071A CN 202111259304 A CN202111259304 A CN 202111259304A CN 115203071 A CN115203071 A CN 115203071A
Authority
CN
China
Prior art keywords
memory
directory
processor
memory blocks
blocks
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
Application number
CN202111259304.6A
Other languages
English (en)
Inventor
M·马勒维基
T·麦基
M·S·沃达克雷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of CN115203071A publication Critical patent/CN115203071A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0824Distributed directories, e.g. linked lists of caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction

Abstract

示例实施方式涉及如应用于存储器块范围的缓存一致性协议。目录可以跟踪处于默认共享状态的存储器块范围的独占所有权。目录可以与一组处理器中的第一处理器相关联。当从该组处理器中的第二处理器接收到读取目录中不存在的一个或多个存储器块的请求时,一个或多个块可以以默认共享状态传输到第二处理器。目录中不可跟踪目录中不存在的块。

Description

默认共享状态缓存一致性协议的应用
背景技术
在多处理器共享存储器系统中,数据可以在多个处理器之间共享和访问。多个处理器采用缓存一致性。采用缓存一致性是为了确保对共享数据的更改或对共享数据的副本的更改能够在整个系统中传播,使得每个处理器都访问统一或一致的数据。为此,多处理器共享存储器系统使用基于硬件或软件的协议和机制来强制执行缓存一致性,以仲裁对共享存储器的访问并使处理器能够对相同的数据进行读取和/或写入。
附图说明
在以下详细描述中参照附图描述了某些示例,在附图中:
图1是由各种互连计算部件形成的缓存一致性计算系统的示例框图。
图2a是图示了示例缓存一致性协议的序列图。
图2b是进一步图示了示例缓存一致性协议的序列图。
图3是图示了用于强制执行一个或多个缓存一致性协议的示例节点控制器的框图。
图4是图示了用于强制执行一个或多个缓存一致性协议的示例系统的框图。
图5是图示了用于实施多种缓存一致性协议的方法的流程图。
图6是图示了用于将存储器区域从默认共享状态协议切换到默认无效状态协议的方法的流程图。
图7是图示了使用记分板将应用于动态存储器区域的协议从默认共享状态协议切换到默认不活动状态协议的电路图。
具体实施方式
在前述描述中,阐述了许多细节以使得理解本文中所公开的主题。然而,可以在没有这些细节中的一些或全部细节的情况下实践实施方式。其他实施方式可以包括上文所讨论的细节的修改和变化。所附权利要求旨在覆盖这样的修改和变化。
本公开使用部分目录协议提供了缓存一致性的高效管理和强制执行,以确保共享了存储器的处理器可以访问统一或一致的数据。可以使用基于硬件或软件的机制和协议来强制执行缓存一致性。例如,基于硬件的方法采用硬件部件在多处理器共享存储器系统中强制执行缓存一致性。如本领域技术人员已知的,这些方法可以包括基于目录或侦听的协议。
除其他外,基于目录的协议使用一致性目录来跟踪共享存储器中的存储器块的状态和所有权信息,例如,共享存储器块是否与处理器共享,并且如果是,则与哪些处理器共享。当请求处理一致性操作时,如对共享存储器的存储器块进行读取或写入时,将使用目录的状态和所有权信息来一致地处理请求。这可以包括管理处理器与其他计算部件之间的各种通信,例如以共享状态和所有权信息并实现操作。基于侦听的协议通过向共享所述存储器的处理器广播消息来强制执行缓存一致性,所述消息指示何时请求或处理共享存储器上的一致性操作。例如,这些消息可能导致处理器更新其共享存储器中的共享数据的副本或使其无效。以这种方式,处理器可以避免处理不一致的数据副本。
图1图示了由各种互连计算部件形成的缓存一致性计算系统100的示例性实施例。在一些实施例中,系统100是多处理器系统,其包括可由处理器102-108中的一些或全部访问的共享存储器110。如下文进一步详细描述的,每个处理器102-108可以与相应存储器块范围(本文也称为存储器块区域)112-118(本文统称为“存储器110”)相关联。每个处理器可以进一步分别对应于节点控制器122-128。每个节点控制器122-128可以分别与相应的存储器块范围A 112-D 118相关联,使得节点控制器的目录可以跟踪与节点控制器相关联的存储器块范围的块的子集。在该示例中,为了清楚和简洁起见,每个节点控制器与单个相应的存储器块范围和单个处理器相关联。然而,在其他示例中,节点控制器可以与多个存储器块范围和/或多个处理器相关联。
处理器102-108中的每一个可以是或指代被配置为执行指令的一个或多个处理资源、节点或单元。例如,处理器102-108中的每一个可以是或指代一个或多个中央处理单元(CPU)、包括两个或更多个CPU的双核或多核处理器或处理器插槽、处理器的单个核、计算集群、云服务器等。在一些实施例中,处理器102-108中的两个或更多个(例如,处理器102和处理器104)可以使用点对点互连或总线通信地耦接。
此外,处理器102-108中的每一个可以包括一个或多个处理器缓存132-138或与其相关联,以用于存储共享系统存储器中所存储的数据的副本,从而使处理器更快速地访问该数据。应当理解,在一些实施例中,多个处理器或核可以共享单个缓存。还应理解的是,每个缓存可以被物理地布置在与其对应处理器相同的或分开的芯片或部件上。由于处理器从其缓存中访问数据比从系统存储器中访问数据更快,所以缓存132-138可以用于存储系统存储器中所存储的数据的副本,这些数据例如被频繁或立即访问或更有可能被频繁或立即访问,和/或可以由处理器以更高效率访问。
如图1所示,处理器102-108分别通信地耦接到存储器块范围A 112-D 118。在一些示例中,存储器块范围112-118形成可以由全部或一些处理器102-108访问的共享系统存储器。应当理解,虽然在一些实施例中,处理器102-108中的每一个可以通信地耦接到存储器块范围112-118中的一个或多个和/或访问其中的数据,但是处理器102-108中的每一个可以与存储器块范围112-118中的相应存储器块范围直接相关联。处理器102-108中的每一个与存储器块范围112-118之一之间的这种对应关系或关联可以由它们之间的直接附接或连接引起或产生。例如,处理器102可以直接附接到存储器块范围112a,如图1所示。在一些实施例中,存储器块范围(例如,存储器块范围112a)可以被认为对其对应(例如,直接连接的)处理器(例如,处理器102)是“本地的”,并且可以称为相对于其对应处理器的“本地存储器”。另一方面,相对于其本地处理器之外的其他处理器(例如,处理器104),存储器块范围(例如,存储器块范围112a)可以被认为是“远程的”并且可以被称为“远程存储器”。
处理器102-108(和/或处理器102-108的存储器控制器)可以经由一个或多个存储器通道和/或总线(诸如外围部件互连(PCI)总线、工业标准架构(ISA)总线、PCI Express(PCIe)总线)和高性能链路(诸如
Figure BDA0003325065640000031
直连媒体接口(DMI)系统、快速通道互连、超传输、双倍数据率(DDR)、SATA、SCSI或光纤通道总线,等等)通信地耦接(例如,直接连接)至其相应的存储器块范围112-118。
存储器块范围112-118中的每一个可以包括或者由任意数量的存储器设备构成,所述存储器设备可以是或包括易失性存储器设备(例如,随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM))和/或非易失性存储器设备(例如,非易失性RAM(NVRAM)、双倍数据率4同步动态RAM(DDR4 SDRAM))。可以使用的其他类型的存储器设备包括只读存储器(ROM)(例如,掩模型ROM、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、以及电可擦除可编程ROM(EEPROM))、闪速存储器、忆阻器器件,等等。
此外,存储器块范围112-118中的每一个可以用于存储诸如操作系统(OS)、管理程序和其他应用程序等软件。在存储器110上存储的软件由进程和/或线程构成,所述进程和/或线程可以被同时执行并共享诸如存储器(例如,存储器110)和处理器(例如,处理器102-108)等资源。进程和/或线程在被执行时可以使得在处理器102-108(和/或节点控制器122-128)之间传输请求和响应。如下文进一步详细描述的,在一些实施例中,存储在存储器110中的软件可以用于提供缓存一致性(例如,在软件管理的缓存一致性实施方式中)。
如上所述,存储器块范围112-118可以形成共享系统存储器110。处理器102-108中的一些或全部可以访问存储在系统存储器110中的数据。例如,存储在是共享的并且因此是系统存储器110的一部分的存储器块范围(例如,存储器块范围112)中的数据可以由除存储器块范围112本地的处理器之外的处理器(例如,处理器104)访问。应理解的是,可以使用许可来控制对系统存储器110的全部或部分的访问和/或由全部或一些处理器102-108进行的访问。应理解的是,出于简化的目的,除非另有指示,否则本文提及存储器110中的任何一个或全部应指代是共享的并构成系统存储器110的部分,但在一些实施例中,存储器块范围112-118可以包括仅由其相应的本地处理器访问的非共享区域。
在一些实施例中,对(例如,缓存一致性)存储器110的访问和/或管理可以由节点控制器112-128提供或处置。在这方面,应当理解,处理器(例如,处理器102-108)及其对应的存储器块范围(例如,存储器块范围112-118)被认为对与它们相关联(例如,直接连接或最紧密连接)的节点控制器是本地的。节点控制器122-128因此被配置为提供和/或执行代表、用于其本地或相应的计算资源(例如,存储器、处理器)的各种功能、或与其相关联的各种功能。这样的功能可以包括或涉及缓存一致性、路由、负载均衡、故障恢复等。在一些实施例中,本文描述的节点控制器122-128中的每一个的一些或全部功能可以在处理器102-108中的一个或多个中实施。
节点控制器122-128(也称为“集线器”或“互连代理”)是计算设备或部件,其可以是或者包括通用处理器(例如,微处理器、传统的处理器、控制器、微控制器、状态机、序列发生器)、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑设备、分立门或晶体管逻辑、分立硬件部件,或其被设计成执行本文所描述的功能的任何组合,等等。应当理解,计算系统100可以包括任意数量的节点控制器。如下文进一步详细描述的,节点控制器122-128可以使用基于硬件和基于软件的方法来提供、参与或以其他方式促进缓存一致性(例如,强制执行缓存一致性协议)。
尽管图1中未示出,节点控制器122-128中的每一个可以包括一个或多个存储器或存储器设备,诸如ROM、RAM、EEPROM、闪速存储器、寄存器或本领域技术人员已知的任何其他形式的存储介质或元件。在一些实施例中,缓存一致性可以是基于目录的,使得节点控制器122-128的存储器或存储装置可以用于在其本地存储器中存储诸如与存储器块相关的状态和所有权的信息。然而,应当理解,如本文所描述的,状态和所有权信息可以附加地或可替代地存储在存储器110中。
如图1中示例性图示的,每个节点控制器122-128分别与处理器102-108以及分别与存储器块范围112-118通信地耦接和/或相关联。应理解的是,节点控制器122-128中的每一个可以与任意数量的本地处理器和/或存储器通信地耦接和/或相关联。在一些实施例中,节点控制器122-128经由诸如UPI链路等互连与其相应的本地处理器通信地耦接和/或连接。
节点控制器122-128中的每一个可以被配置为提供缓存一致性,使得对存储在共享存储器中的数据的更改可以在整个系统100中传播,以确保处理器102-108能够访问该共享数据的统一版本。节点控制器122-128可以通过实施基于目录或侦听的缓存一致性方案或协议来提供缓存一致性。在这方面,在一些实施例中,节点控制器122-128中的每一个可以包括被配置为存储用于缓存一致性功能的信息并执行缓存一致性功能的侦听或请求加速器和/或一致性控制器。节点控制器(和/或其请求加速器和一致性控制器)可以是或包括计算机硬件(例如,序列发生器、状态机),如包括逻辑和存储器设备或存储元件的电路。所述逻辑被配置为实施或执行本文描述的功能、过程和/或方法中的一个或多个,包括用于提供或管理缓存一致性的那些功能、过程和/或方法。存储器设备或存储元件可以包括缓存并且可以用于存储目录。
为了提供基于目录的缓存一致性,节点控制器122-128采用一致性目录142-148来在其本地存储器中跟踪和/或存储存储器块的全部或子集的状态和所有权。尽管为了清楚和简洁起见,一致性目录142-148被图示为存储在节点控制器122-128中,但是一致性目录可以存储在系统100的其他部件内,例如存储在存储器块112-118上,或远程存储以例如通过网络访问。通过在节点控制器122-128中存储目录,在一些情况下节点控制器可以高效地访问状态和所有权信息,而无需从存储器块范围112-118内的目录中取得该信息。在一些实施例中,节点控制器122-128可以包括一致性目录缓存,所述一致性目录缓存可以用于存储来自存储器块112-118范围内的目录的一致性目录条目的副本。如同在节点控制器122-128中存储一致性目录一样,一致性目录缓存的使用允许节点控制器122-128更高效地访问状态和所有权信息。
为了提供基于侦听的缓存一致性,节点控制器122-128可以处理侦听消息。如本领域技术人员已知的,侦听消息可以被广播到具有已经对其做出读取或写入请求的存储器块的副本的节点控制器。在一些实施例中,节点控制器122-128可以存储与处理器或处理器缓存共享(例如,活动)或不共享(例如,无效)的存储器区域内的存储器块的数量的信息或计数器。在要访问的存储器块被共享的情况下,这种信息可以用于确定是否需要将侦听请求广播到其他节点控制器或处理器。
如上所述,目录可以跟踪存储器块范围中的块的所有权以确保缓存一致性。在一些情况下,目录可以跟踪哪个处理器对存储器块具有独占所有权,和/或可以跟踪存储器块(即,不由任何单个处理器独占拥有或以其他方式缓存在系统中的存储器块)的共享所有权。在处理器对所拥有的存储器块具有独占的读取和写入能力的情况下,可以认为处理器对存储器块具有独占所有权。在一些示例实施方式中,在给定时间,仅一个处理器可能对系统中的存储器块具有独占所有权。
在处理器对存储器块具有非独占的读取能力的情况下,可以认为处理器对存储器块具有共享所有权。根据缓存一致性协议,处理器可以将共享存储器块的副本缓存在与处理器相关联或以其他方式在处理器本地的缓存中。在一些示例实施方式中,任意数量的处理器102-108可以同时具有存储器块的缓存共享副本。
在一些示例系统中,目录可以仅跟踪存储器的总缓存一致性存储器空间的子集。仅跟踪总缓存一致性存储器空间的子集的目录在本文中可以称为“部分目录”。在实施部分目录的系统中,可以实施用于处置未被部分目录跟踪的存储器块的协议。示例协议(在本文中称为默认无效状态协议)可以包括部分目录在目录丢弃存储器块(即,目录不再跟踪存储器块)时使每个处理器缓存中的存储器块无效和/或转储清除。
作为默认无效状态协议的说明性示例,处理器102可以请求第一存储器块的共享所有权,例如,对存储器块范围B 114中的存储器块的读取请求。节点控制器124的部分目录(例如,目录144)可以确定所请求的第一存储器块不在部分目录的缓存中,或者以其他方式未被部分目录跟踪,由此部分目录可以将第一存储器块添加到其缓存(未示出)。当所请求的第一存储器块与具有副本的处理器102处于共享状态时,部分目录可以进一步跟踪所请求的第一存储器块。
处理器106可以请求存储器块范围B 114中的不同于第一存储器块的第二存储器块的共享所有权。部分目录可以确定所请求的第二存储器块不在部分目录的缓存中,或者以其他方式未被部分目录跟踪,由此部分目录可以将第二存储器块添加到其缓存。然而,部分目录可能确定部分目录中没有足够的空间来跟踪第一存储器块和第二存储器块两者,并且因此可能逐出第一存储器块以腾出空间。部分目录可以进一步侦听以使处理器102的缓存中的第一存储器块无效。
因此,默认无效状态协议会带来一些折衷。部分目录可能会丢弃存储器块并使当前具有存储器副本并且可能仍在使用所述存储器块的处理器缓存中的存储器块无效。因此,为了处理器102收回所述存储器块,处理器102可以再次请求访问所述存储器块。这可能会增加等待时间并增加网络中的流量,从而导致相对于本文讨论的提议的替代协议而言较低的系统性能。
将用部分目录实施的另一示例协议(如下文将进一步描述的并且在本文中称为默认共享状态协议)可以包括部分目录将当前未被目录跟踪的存储器块视为处于共享状态。换句话说,请求读取未被目录跟踪的存储器块的处理器将接收到数据的共享副本。尽管存储器块被请求处理器缓存,但目录可能不跟踪存储器块,因为处理器只是保持共享,而不是独占所有权。被认为处于默认无效状态的节点控制器可以实施“默认无效协议”,本文也称为“默认无效状态协议”。类似地,被认为处于默认共享状态的节点控制器可以实施“默认共享协议”,本文也称为“默认共享状态协议”。在示例实施方式中,寄存器152-158可以分别在节点控制器122-128处实施,以指示节点控制器的状态。具体地,寄存器152-158可以规定相应节点控制器122-128要应用于特定存储器区域(本文也称为存储器块范围,例如,存储器块范围112-118)的协议。
节点控制器122-128可以经由结构101(或“结构互连”)彼此通信耦接和/或互连,并且处理器102-108可以通过所述结构彼此通信。结构101可以包括一个或多个直接和/或交换互连。例如,在一些实施例中,结构101可以包括节点控制器122-128之间的直接互连(例如,以最小化等待时间)。因此,结构101可以用于在节点控制器122-128和/或处理器102-108的一个或多个之间或当中传输数据和/或消息。这种通信可以包括例如存储器访问请求(例如,从存储器块或缓存块读取或者写入存储器块或缓存块)、状态更改请求(例如,使无效)、确认、以及本领域技术人员已知以及根据适用的缓存一致性协议的需要的其他消息。
应当理解,系统100的部件(例如,节点控制器122-128、处理器102-108和存储器110)可以物理地容纳在一起或分开。例如,图1所示的系统100的示例性部件可以在单个机箱或多个机箱中提供。如上所述,系统100可以包括图1所示的节点控制器、处理器和/或存储器之外的任意数量的节点控制器、处理器和/或存储器,其可以容纳在一起或分开。此外,在一些实施例中,系统100可以包括由节点控制器、处理器和/或存储器形成并且通信地耦接到结构101的附加系统或子系统,通过所述结构可以实现与节点控制器122-128和/或处理器102-108的通信。
图2A和2B是分别图示了示例缓存一致性协议的序列图200A和200B。具体地,序列图200A和序列图200B图示了默认共享状态协议的示例实施方式。尽管下面参考图1的系统100分别描述了序列200A和200B的执行,但是这是为了说明的目的,并且可以利用用于执行的其他合适的部件。出于说明的目的,图2A和图2B的处理器102、处理器104和节点控制器126可以是图1的处理器102、处理器104和节点控制器126。在一些示例中,序列200A和200B的步骤可以基本上同时执行或以与图2A和图2B所示的不同顺序执行。在一些示例中,序列200A和200B可以包括比图2A和图2B中所示的更多或更少的步骤,并且在一些示例中,其中一些步骤可以在进行中和/或可以重复。
转到图2A,处理器(例如,处理器102)可以请求读取存储器110的地址,或者更具体地,请求读取存储器内特定地址处的多个存储器块。在一些示例中,针对所请求的地址,处理器102可以首先检查其本地缓存,在这种情况下是缓存132。如果所述地址不存在于本地缓存(即,缓存132)中,则处理器102可以将读取请求202传输到与所述地址所在的存储器块范围相关联的节点控制器——在该示例中为节点控制器126。
节点控制器126在接收到读取请求时,可以检查其本地目录(即,目录146),以确定目录146是否正在跟踪与所述地址相关联的存储器块。如果确定地址未被目录跟踪(例如,目录地址不存在于目录146的缓存中),则节点控制器126可以假设——在默认共享状态下——所请求的地址是共享的。因此,目录146不被更新为跟踪所请求的地址,如在默认无效状态协议中的情况。而是,以共享状态将存储器块传输204到请求处理器102。
不同的处理器(例如,处理器104)可以请求读取存储器110的不同地址。针对所请求的地址,处理器104可以首先检查其本地缓存,在这种情况下是缓存134。如果该地址不存在于本地缓存(即,缓存134)中,则处理器104可以向节点控制器126传输读取请求206以访问不同的地址。
节点控制器126在接收到读取请求时,可以检查其本地目录(即,目录146),以确定目录146是否正在跟踪与不同地址相关联的存储器块。如果确定不同地址未被目录跟踪(例如,目录地址不存在于目录146的缓存中),则节点控制器126可以假设所请求的地址是共享的。因此,目录146不被更新为跟踪所请求的不同地址,如在默认无效状态协议中的情况。而是,以共享状态将存储器块传输208到请求处理器104。通过在示例部分目录146中不跟踪这些读取请求的地址,目录146不会耗尽空间,如可能是默认无效状态协议中存在的情况。因此,默认共享状态协议中的目录146可能不会像默认无效状态协议中的目录146那样逐出尽可能多的存储器块来为跟踪附加地址创建空间,目录146也不会像默认无效状态协议中的目录146那样频繁地使处理器缓存中的存储器块无效。由于在默认共享状态协议中目录不承担跟踪共享所有权的负担,因此目录可以具有更多空间用于跟踪独占所有权的地址。
转到图2B,处理器(例如,处理器102)可以请求对存储器110的地址的独占所有权——例如,处理器102可以请求写入该地址。在一些示例中,针对所请求的地址,处理器102可以首先检查缓存132。如果所述地址不存在于缓存132中,则处理器102可以将对所述地址的所有权的请求212传输到与所述地址所在的存储器块范围相关联的节点控制器——在该示例中为节点控制器126。
节点控制器126在接收到所有权请求时,可以检查其本地目录(即,目录146),以确定目录146是否正在跟踪与所述地址相关联的存储器块。如果确定地址未被目录跟踪(例如,目录地址不存在于目录146的缓存中),则节点控制器126可以假设——在默认共享状态下——所请求的地址是共享的。
然而,因为处理器102请求独占所有权,所以在该示例实例中,节点控制器126可以使共享了存储器110的每个处理器的缓存(例如,处理器102-108的缓存132-138)处的地址无效。在所图示的这个示例中,为了清楚和简洁起见,节点控制器126被示出为在214处使处理器104处的地址无效。因为目录146正在响应对地址的独占访问的请求,所以该示例实例中,目录146可以跟踪所请求的地址。
节点控制器126可以从每个处理器(在所示的这个示例中为处理器104)接收确认使地址无效216的响应。在接收到确认后,节点控制器126可以向处理器102传输218所请求地址的独占所有权。虽然默认共享状态协议在响应读取请求时可能更高效,但在请求地址的独占所有权的情况下,默认无效状态协议可能比默认共享状态协议更高效。
因此,对于主要读取数据的应用程序,如主要搜索存储器的大型存储器数据库,默认共享状态协议可能比默认无效状态协议更高效。
图3是图示了用于强制执行一个或多个缓存一致性协议的示例节点控制器302的框图300。节点控制器302可以是任意数量的计算设备或部件,其可以是或者包括通用处理器(例如,微处理器、传统的处理器、控制器、微控制器、状态机、序列发生器)、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑设备、分立门或晶体管逻辑、分立硬件部件,或其被设计成执行本文所描述的功能的任何组合,等等。节点控制器302可以例如在计算系统100中实施,例如作为节点控制器122-128中的任何一个。
节点控制器302可以包括目录310,以用于跟踪共享存储器的存储器块范围中的块的所有权以确保缓存一致性。在一些情况下,目录可以跟踪哪个处理器对存储器块具有独占所有权,和/或可以跟踪存储器块(即,不由任何单个处理器独占拥有或以其他方式缓存在系统中的存储器块)的共享所有权。目录310可以例如是目录142-148中的任何一个,并且可以跟踪存储器110的相应存储器块范围112-118。尽管目录310被图示为在节点控制器302本地,但目录310可以是与节点控制器302相同或不同的硬件的一部分或以其他方式存储在其上,并且可以由节点控制器302远程访问,例如,经由网络。
目录310可以包括任意数量的目录条目362,以用于跟踪独占存储器块,或在一些情况下跟踪共享存储器块。在一些示例中,目录310可以是部分目录,其中目录310可以仅跟踪总缓存一致性存储器空间的子集,如由节点控制器302强制执行的协议所确定的。具体地,节点控制器302可以强制执行确定跟踪存储器目录310的哪些块的协议,例如,默认无效协议、默认共享协议等。
节点控制器302可以进一步包括非暂态计算机可读介质330,所述介质当由处理器(例如,处理器302)执行时可以执行缓存一致性协议。非暂态计算机可读介质330可以如图所示的在单个设备中实施,或者可以分布在多个设备之间。同样地,处理器320可以表示能够执行由计算机可读介质330存储的指令的任意数量的物理处理资源,这些资源可以是相同硬件——或通过网络进行通信的不同硬件——的一部分。处理器320可以是例如图1的示例系统100中所示的处理器102-108的任何组合。
如本文所使用的,“计算机可读介质”可以是用于包含或存储如可执行指令、数据等信息的任何电子、磁性、光学或其他物理存储装置。例如,本文所述的任何计算机可读介质可以是RAM、EEPROM、易失性存储器、非易失性存储器、闪速存储器、存储驱动器(例如,HDD、SSD)、任何类型的存储盘(例如,压缩盘、DVD等)等中的任何一者或其组合。进一步地,本文所述的任何计算机可读介质可以是非暂态的。在本文所述的示例中,一个或多个计算机可读介质可以是物品(或制品)的一部分。物品或制品可以指代任何制造的单个部件或多个部件。
处理器320可以是中央处理单元(CPU)、图形处理单元(GPU)、微处理器和/或适于取得并执行存储在计算机可读介质330中的指令的其他硬件设备。处理器320可以取出、解码和执行程序指令332-334和/或其他指令。作为取得并执行指令的替代或补充,处理器320可以包括至少一个电子电路,该至少一个电子电路包括用于执行指令332-334和/或其他指令的功能的多个电子部件。
在该示例中,非暂态计算机可读介质330的指令332-334在被执行时可以强制执行默认共享协议。在示例中,默认共享协议可以使目录310跟踪共享存储器的块的独占所有权,并且可以将目录310未跟踪的任何存储器块视为“共享存储器”。
具体地,框332包括用于目录310跟踪存储器块子集的独占所有权的指令。因此,目录310可以例如在授予请求处理器对所请求的存储器块的独占所有权时(例如,响应于处理器的写入请求)跟踪处理器所请求的存储器块。
框334包括用于目录310响应于读取请求而将所请求的存储器块传输到请求处理器的指令。具体地,以共享状态传输所请求的存储器块,而不在目录310处跟踪所述地址。因此,例如,响应于或预期以共享状态将所请求的存储器块传输到处理器,将不会在目录310处创建目录条目362。因此,节点控制器302可以强制执行默认共享状态协议,使得目录310充当部分目录,从而跟踪存储器块的独占所有权并且不跟踪以共享状态传输到请求处理器的任何存储器块。
图4是图示了用于强制执行一个或多个缓存一致性协议的示例系统的框图。系统402可以包括节点控制器402,其与图3的节点控制器302一样可以是任意数量的计算设备或部件,其可以是或者包括通用处理器(例如,微处理器、传统的处理器、控制器、微控制器、状态机、序列发生器)、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑设备、分立门或晶体管逻辑、分立硬件部件,或其被设计成执行本文所描述的功能的任何组合,等等。节点控制器402可以例如在计算系统100中实施,例如作为节点控制器122-128中的任何一个。
节点控制器402可以通过网络与目录440通信以跟踪存储器块的所有权,从而确保缓存一致性。节点控制器402可以进一步例如通过网络与共享存储器410通信。虽然节点控制器402被图示为具有两个存储器块范围(本文中另外称为存储器区域),分别为412和414,但是存储器410可以包括任意数量的存储器块范围。在示例实施方式中,目录440可以与存储器410的特定存储器块范围(例如,存储器块范围A 412)相关联,使得目录440至少跟踪相关联存储器块范围中的存储器块子集。
存储器410可以被共享,因为它可以被网络的其他节点访问。在示例中,网络的其他节点可以包括其他节点控制器、其他目录、其他处理器或其任何组合。网络的这些其他目录与目录440相比可以与存储器410的不同存储器块范围相关联。此外,在一些示例中,除了节点控制器402之外的其他节点控制器可以实施与节点控制器402不同的缓存一致性协议。在示例中,网络的其他处理器可以请求对共享存储器410的存储器块的独占或共享访问。
节点控制器402可以包括非暂态计算机可读介质430,所述非暂态计算机可读介质可以包括与图3的非暂态计算机可读介质330类似的架构。计算机可读介质430可以包括指令432和434,所述指令在被执行时可以实施用于缓存一致性的另一个示例默认共享状态协议。计算机可读介质430的指令可以由处理器420执行,所述处理器可以包括与如上所述的图3的处理器320的架构类似的架构。
在示例中,存储器410的存储器块范围A 412可以根据默认共享状态协议由目录440跟踪。在一些示例中,存储器块范围B 414可以根据不同的协议(例如,默认无效状态协议)由相同或不同的目录跟踪。响应于从处理器接收到用于读取存储器块范围A 412中的任意数量的存储器块的读取请求,指令432在被执行时可以确定所请求的存储器块是否在目录440中被跟踪。
可以确定所请求的范围A中的存储器块不存在,或以其他方式被目录440跟踪。在这种情况下,指令434在被执行时可以使目录440将所请求的存储器块传输到请求处理器。在示例中,可以将所请求的存储器块传输到请求处理器而不在目录440中跟踪不存在的块。因此,可以根据默认共享状态协议来跟踪存储器410的存储器块范围A 412内的存储器块,在该示例中,对于该特定存储器范围的使用,所述默认共享状态协议可以是比默认无效状态协议更高效的协议。
将不同的缓存一致性协议应用到不同的存储器区域能够根据特定存储器区域的使用方式灵活地应用最高效的协议。例如,对于主要读取数据的应用程序,如主要用于搜索存储器的大型内存(in-memory)数据库,出于上述原因,默认共享状态协议可以比默认无效状态协议更高效。反之,对于执行高频存储器写入的应用程序,默认无效状态协议可以比默认无效状态协议更高效。因此,不同的应用程序可以与具有与不同存储器范围相关联的不同协议的公共共享存储器的不同存储器范围相关联。
在一些示例中,节点控制器402可以包括寄存器452,所述寄存器可以跟踪一个或多个存储器块范围的状态。在该示例中,节点控制器402可以检查寄存器452以确定要执行哪个缓存一致性协议。如图所示,寄存器452可以在节点控制器402本地,或者远离节点控制器402并且可由节点控制器402通过网络访问。寄存器452可以是硬件、或硬件和软件的组合。在一些示例中,寄存器452可以是包括基址寄存器和界寄存器两者的电子电路,使得一系列基址寄存器和界寄存器可以指定存储器410中每个存储器块范围的地址界限。在示例中,BIOS可以提供控制启用哪个部分目录模式以及每个存储器块区域(例如,存储器块范围A 412和存储器块范围B 414)中存在多少存储器的变量。每个区域的存储器量可以通过硬件的基址寄存器和界寄存器的设置来控制。每个基址寄存器和界寄存器可以进一步包括目录模式寄存器位,以确定可以使用哪种目录模式来处理请求。
在一些示例中,应用于特定存储器块范围的协议可以是动态的,使得可以在第一时间将第一协议应用于存储器块范围,并且可以在不同于第一时间的第二时间将不同的协议应用于存储器块范围。换句话说,存储器块范围可以是动态的,使得应用于存储器块范围的协议可以自动更改,或者如本文将进一步描述的通过各种指标以其他方式确定。寄存器452可以例如翻转状态,即,响应于阈值,指示节点控制器402将不同的协议应用到与寄存器相关联的特定存储器块范围。在一些示例中,关于应用于存储器块范围的协议,存储器410的任意数量的存储器块范围可以是动态的。在一些示例中,存储器410的一些存储器块范围是静态的,使得应用于它们的协议是固定的,并且不会动态更改。
关于动态存储器块范围,应用于动态存储器块范围的协议可以由任意数量的指标来确定。例如,可以分析由利用特定存储器块范围的应用程序生成的网络协议层流量。此外,可以在关于特定存储器块范围运行特定缓存一致性协议时收集统计数据。
例如,可以记录目录440的缓存中的目录条目462的计数。如果共享存储器块条目的阈值计数持续存在于缓存中,则寄存器452可以将状态从默认无效状态协议更改为默认共享状态协议。类似地,如果独占拥有的存储器块条目的阈值计数持续存在,则寄存器452可以将状态从默认共享状态协议更改为默认无效状态协议。在另一个示例中,可以跟踪目录440的缓存上共享存储器块条目与独占拥有的存储器块条目的比率(或反之亦然)。在阈值比率持续存在的情况下,寄存器452可以更改状态。
在另一个示例中,可以跟踪由共享读取请求引起的目录逐出的数量。预定时间段内的阈值逐出数量可以指示目录440正在抖动(thrash),并且可以触发寄存器452翻转到默认共享状态协议。在又一示例中,可以跟踪无效侦听的数量,例如,在图2B的214处。预定时间段内的阈值侦听数量可以触发寄存器452翻转到默认无效状态协议。
当存储器410被分区和/或以其他方式分配时,虚拟机管理器(VMM)可以如应用程序所指示的或以其他方式优选的那样将存储器块区域分配给应用程序。在一些示例中,在没有足够的存储器来向应用程序分配优选存储器的情况下,操作系统(OS)可以按照非优选协议为应用程序分配存储器。在一些示例中,可以跟踪在预定时间段内将非优选存储器分配给应用程序的次数。在达到阈值时,可以调整应用于动态存储器块区域的协议。
因此,可以跟踪多个指标以确定在给定时间用于特定存储器块区域的适当协议。可以利用用于在协议之间切换的逻辑,并且该逻辑可以依赖于上述指标。例如,寄存器452可以包括可编程阈值设置和性能计数器以跟踪任意数量的指标。在示例中,软件可以用于对阈值设置进行编程,并且可以向硬件规定何时翻转寄存器452。
图5是图示了用于实施多种缓存一致性协议的方法的流程图500。图6是图示了用于将存储器区域从默认共享状态协议切换到默认无效状态协议的方法的流程图600。尽管下面参照图1的系统100或图4的系统400描述了对方法500和方法600的执行,但是这是为了说明的目的,并且可以利用用于执行方法500和方法600的其他合适的部件。方法500和方法600可以以存储在机器可读存储介质上的可执行指令的形式和/或以电子电路(例如,硬件)的形式来实施。在一些示例中,可以基本上同时或者以与图5和图6所示的不同顺序执行方法500和方法600的步骤。在一些示例中,方法500和方法600可以包括比图5和图6中所示的更多或更少的步骤。在一些示例中,方法500和方法600的一些步骤可以在特定时间进行和/或可以重复。
在框502处,节点控制器(例如,图4的节点控制器402)可以接收对任意数量的存储器块的请求。请求可以由处理器(例如,图1的处理器102-108中的任一个)接收。在框504处,可以确定所述请求是对存储器块的独占所有权的请求,还是对存储器块的共享访问的请求,例如,读取请求。
确定所述请求是独占所有权之后可以是在框506处使共享对存储器的访问的处理器(例如,图1的存储器110或图4的存储器410)的每个缓存中的存储器块无效,即,侦听。侦听可以由与具有所请求存储器块的存储器块范围相关联的目录(例如,图1的目录142-148中的任何一个)执行。在框508处,目录可以授予对所请求的存储器块的独占访问。目录可以进一步跟踪所拥有的块。
确定所述请求是对存储器块的共享访问之后可以确定要将哪个协议应用于所请求的存储器块。具体地,在框510处,可以确定是否要应用默认共享状态协议。如上所述,可以通过节点控制器检查相应注册表的状态信息来做出确定。
在肯定确定之后,节点控制器可以在框512处指示相关联的目录将所请求的存储器块传输到请求处理器。如上所述,该传输可以在目录中不跟踪事务的情况下发生。
在框510处确定不应当应用默认共享状态(或者换句话说,应用默认无效状态协议)之后,在框514处确定与所请求的存储器块相对应的目录在其缓存中是否具有足够的空间来跟踪事务。
框514处的肯定确定可以导致在框518处目录跟踪处于共享状态的存储器块。反之,在框516处,与所请求的存储器块相关联的目录可以从其缓存中逐出较旧的条目以腾出空间来跟踪最新请求。在示例实施方式中,出于一致性的目的,目录可以在逐出之前使与共享所述存储器的每个其他处理器中的较旧条目相关联的存储器块无效。
如上所述,一些存储器块区域可以是动态的,从而可以根据各种指标来更改应用于存储器块区域的协议。具体地,可以将存储器块区域从默认无效状态协议切换为默认共享状态协议。存储器块区域还可以从默认共享状态协议切换到默认无效状态协议。在一些示例中,可以实施下面描述的机制以在从默认共享状态协议切换到默认无效状态协议期间保持一致性,因为在默认共享状态下目录不跟踪共享状态。
示例机制可以包括转储清除与转变存储器区域相关联的每条线。然而,如果存储器区域很大,这可能会花费大量时间。协议之间的太多切换可能会导致过度转储清除,从而导致系统性能下降。
另一个示例机制可以包括记分板的实施方式。例如,目录所跟踪的每个地址在记分板上都包括对应的位。在确定将存储器块区域从默认共享状态协议切换到默认无效状态协议时(例如,由于满足上述任何阈值),可以初始化记分板。初始化时的记分板可以指示要切换的存储器块区域中的每个地址是共享的。随着寻址被访问,对应的记分板位可以被解除断言。当访问与被解除断言的位相对应的地址时,可以查询目录缓存和/或寄存器的目录状态。一旦记分板中的所有位都被解除断言,记分板就可以自由地重新初始化。因此,在一些示例实施方式中,记分板可以由多个存储器区域利用。
图6是可以如何利用记分板来将动态存储器区域从默认共享状态切换到默认无效状态的说明性示例。具体地,在框602处,节点控制器可以接收访问一个或多个存储器块的请求。在框604处,可以确定所请求的存储器块是否具有在记分板范围内(即,在要切换的动态存储器区域内)的地址。否定确定之后可以是框606处确定地址是否落入具有应用了默认共享状态协议的存储器块区域内。
框606处的肯定确定之后是假设将应用默认共享状态协议,除非相关目录另有显示。框606处的否定确定之后是假设将应用默认无效状态协议,除非相关目录另有显示。然后在框608处根据假设的协议来处理所述请求。
框604处的肯定确定之后是在框610处节点控制器检查与所述地址相对应的记分板位。在框612处确定所述位是否被置位,即,被断言。如果所述位被解除断言,则除非目录另有显示,否则假设默认无效状态协议,并且在框608处根据假设的协议处理所述请求。反之,如果在框612处确定所述位被置位,则在框614清除所述位。
然后可以在框616处确定分数中的每一位是否已经被清除,即,被解除断言。框616处的肯定确定之后是在框618处将记分板设置为不活动,因为存储器块区域已经完成从默认共享状态协议到默认无效状态协议的切换。除非目录另有显示,否则框616处的否定确定之后是假设状态是共享的。然后在框608处根据假设的协议来处理所述请求。
图7是进一步图示了使用记分板将应用于动态存储器区域的协议从默认共享状态协议切换到默认不活动状态协议的电路图700。在共享存储器包括静态默认共享状态协议存储器区域和动态默认共享状态存储器区域二者的情况下可以利用示例电路。
电路图700包括第一基址和界寄存器对,分别为702和704,它们一起限定静态存储器块区域的上边界和下边界。尽管为了清楚和简洁起见,仅关于静态区域图示了一对基址寄存器702和界寄存器704,但是可以利用多个基址和界寄存器对来限定多个静态存储器块区域的边界。
在确定传入地址701在基址寄存器702和界寄存器704的范围内的情况下,则除非目录740另有指示,否则应用于所请求地址的协议由静态存储器块区域的默认状态确定。例如,如果地址在由基址寄存器702和界寄存器704确定的默认共享状态存储器块范围内,则除非目录740另有指示,否则应用默认共享状态协议。如果目录740另有指示,则所应用的协议由目录740所指示的协议决定。
电路图700进一步包括第二基址和界寄存器对,分别为706和708。第二基址寄存器706和界寄存器708对可以一起限定动态存储器块区域的上下边界。第二基址寄存器706和界寄存器708对可以与记分板710相关联。尽管为了清楚和简洁起见,仅关于动态区域示出了一对基址寄存器706和界寄存器708以及一个记分板710,但是可以利用多个基址和界寄存器对以及记分板来限定多个动态存储器块区域的边界。
如果传入地址落入基址寄存器和界寄存器的范围内并且不以其他方式存在于目录740中,则所应用的协议可由记分板710上对应于地址701的位710a确定。如果位710a被置位或以其他方式断言,则将应用默认共享状态协议。反之,如果位710a被清除或以其他方式解除断言,则将应用默认无效状态协议。
当确定地址落入记分板710的区域内时(如由基址寄存器706和界寄存器708所确定的),所述位被清除或以其他方式解除断言。一旦每个位都被清除,记分板就可能变为不活动,因为动态存储器块区域已成功地从默认共享状态区域更改为默认无效状态区域。
在前述描述中,阐述了许多细节以使得理解本文中所公开的主题。然而,可以在没有这些细节中的一些或全部细节的情况下实践实施方式。其他实施方式可以包括上文所讨论的细节的修改和变化。所附权利要求旨在覆盖这样的修改和变化。

Claims (20)

1.一种装置,包括:
节点控制器,所述节点控制器与一组处理器中的第一处理器和存储器相关联,并且能够操作用于强制执行存储器块的缓存一致性,
其中,所述节点控制器当处于默认共享状态时:
在所述节点控制器的目录中跟踪所述存储器块的子集的独占所有权;
响应于从该组处理器中的第二处理器接收到读取所述目录中不存在的一个或多个存储器块的请求,将所述一个或多个块以共享状态传输到所述第二处理器,而不在所述目录中跟踪所述不存在的块。
2.如权利要求1所述的装置,其中,所述节点控制器在处于所述默认共享状态时响应于从所述第二处理器接收到获取对所述一个或多个存储器块的所有权的请求:
使该组处理器的每个缓存中的所述一个或多个存储器块无效;以及
将所述目录中的所述一个或多个存储器块的状态更新为对所述第二处理器独占。
3.如权利要求1所述的装置,其中,所述节点控制器在处于所述默认无效状态时响应于从该组处理器中的所述第二处理器接收到读取所述目录中不存在的所述一个或多个存储器块的请求:
在所述目录的缓存中跟踪所述一个或多个存储器块,其中,所述一个或多个存储器块在所述目录缓存中被标记为共享;以及
将所述一个或多个共享块传输到所述第二处理器。
4.如权利要求3所述的装置,其中,所述节点控制器在处于所述默认无效状态时响应于从所述第二处理器接收到所述读取请求,
响应于确定所述目录的缓存中没有足够的空间来跟踪所述一个或多个存储器块的状态,从所述目录的缓存中逐出一个或多个不同的存储器块;以及
在所述目录的缓存中跟踪所述一个或多个存储器块,其中,所述一个或多个存储器块在所述目录中被标记为共享。
5.如权利要求1所述的装置,其中,所述存储器包括多个存储器区域,并且进一步包括寄存器以用于确定要应用于所述多个存储器区域中的存储器区域的协议。
6.如权利要求5所述的装置,其中,所述由所述寄存器确定的要应用的协议是所述默认共享状态或默认无效状态之一。
7.如权利要求6所述的装置,进一步包括所述寄存器在确定关于处于默认无效状态的特定存储器区域满足阈值时将所述特定存储器区域的状态更改为默认共享状态。
8.如权利要求7所述的装置,其中,所述阈值包括由所述目录跟踪并标记为共享的特定存储器区域的存储器块与由所述目录跟踪并标记为拥有的特定存储器区域的存储器块的百分比。
9.如权利要求7所述的装置,其中,所述阈值包括在预定时间段内由对与所述特定存储器区域相关联的存储器块的读取请求引起的目录逐出的数量。
10.如权利要求7所述的装置,其中,所述阈值包括在预定时间段内由所述目录接收的对与所述特定存储器区域相关联的存储器块的读取请求与由所述目录接收的对与所述特定存储器区域相关联的存储器块的所有权请求的数量的百分比。
11.如权利要求6所述的装置,其中,所述寄存器在确定对于处于所述默认共享状态的所述特定存储器区域已经满足由所述目录发出的无效侦听的阈值频率时将所述特定存储器区域的状态更改为所述默认无效状态。
12.一种方法,包括:
由与一组处理器中的第一处理器相关联的目录跟踪处于默认共享状态的存储器块范围的独占所有权;
响应于从该组处理器中的第二处理器接收到读取所述目录中不存在的一个或多个存储器块的请求,将处于所述默认共享状态的所述一个或多个块以共享状态传输到所述第二处理器,而不在所述目录中跟踪所述不存在的块。
13.如权利要求12所述的方法,其中,响应于从所述第二处理器接收到获取对处于所述默认共享状态的所述一个或多个存储器块的所有权的请求,使该组处理器的每个缓存中的所述一个或多个存储器块无效。
14.如权利要求12所述的方法,其中,响应于从该组处理器中的所述第二处理器接收到读取所述目录中不存在并且处于默认无效状态的一个或多个存储器块的请求:
在所述目录的缓存中跟踪处于所述默认无效状态的所述一个或多个存储器块,其中,所述一个或多个存储器块在所述目录缓存中被标记为共享;以及
将所述一个或多个共享块传输到所述第二处理器。
15.如权利要求12所述的方法,其中,响应于从所述第二处理器接收到读取处于默认无效状态的一个或多个存储器块的请求,
响应于确定所述目录的缓存中没有足够的空间来跟踪所述一个或多个存储器块的状态,从所述目录的缓存中逐出一个或多个不同的存储器块;以及
在所述目录的缓存中跟踪处于所述默认无效状态的所述一个或多个存储器块,其中,所述一个或多个存储器块在所述目录中被标记为共享。
16.一种系统,包括:
存储器,所述存储器包括处于默认共享状态的第一存储器块范围和处于默认无效状态的第二不同的存储器块范围;
目录,所述目录用于跟踪所述第一存储器块范围的独占所有权;以及
与所述存储器相关联的节点控制器,其中,所述节点控制器
响应于从处理器接收到读取所述第一范围中的一个或多个存储器块的请求:
确定在所述目录中是否跟踪了所述第一范围中的所述一个或多个存储器块;以及
响应于确定所述目录中不存在所述一个或多个存储器块,将所述一个或多个存储器块传输到所述处理器而不在所述目录中跟踪所述不存在的块。
17.如权利要求16所述的系统,其中,所述节点控制器响应于从所述处理器接收到读取所述第二范围中的一个或多个存储器块的请求:
确定在所述目录中是否跟踪了所述第二范围中的所述一个或多个存储器块;以及
响应于确定所述目录中不存在所述第二范围中的所述一个或多个存储器块,
在所述目录中跟踪所述第二范围中的所述一个或多个存储器块,其中,所述一个或多个存储器块在所述目录的缓存中被标记为共享;以及
将所述一个或多个共享块传输到所述处理器。
18.如权利要求16所述的系统,进一步包括寄存器,所述寄存器用于跟踪所述存储器中的每个存储器块的状态,其中,所述节点控制器根据所述寄存器确定所述存储器中的存储器块的状态。
19.如权利要求18所述的系统,其中,所述存储器进一步包括处于动态状态的第三存储器块范围,其中,所述寄存器可以响应于阈值来翻转所述第三范围中的存储器块的状态。
20.如权利要求16所述的系统,其中,所述第一存储器块范围和所述第二存储器块范围的状态和区域大小是固定的。
CN202111259304.6A 2021-04-14 2021-10-28 默认共享状态缓存一致性协议的应用 Pending CN115203071A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/230,286 2021-04-14
US17/230,286 US11687459B2 (en) 2021-04-14 2021-04-14 Application of a default shared state cache coherency protocol

Publications (1)

Publication Number Publication Date
CN115203071A true CN115203071A (zh) 2022-10-18

Family

ID=83447087

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111259304.6A Pending CN115203071A (zh) 2021-04-14 2021-10-28 默认共享状态缓存一致性协议的应用

Country Status (3)

Country Link
US (2) US11687459B2 (zh)
CN (1) CN115203071A (zh)
DE (1) DE102021127104A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115514772A (zh) * 2022-11-15 2022-12-23 山东云海国创云计算装备产业创新中心有限公司 一种实现缓存一致性的方法、装置、设备及可读介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11972117B2 (en) * 2021-07-19 2024-04-30 EMC IP Holding Company LLC Selecting surviving storage node based on environmental conditions

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101859281A (zh) * 2009-04-13 2010-10-13 廖鑫 基于集中式目录的嵌入式多核缓存一致性方法
CN102521163A (zh) * 2011-12-08 2012-06-27 华为技术有限公司 目录替换方法及设备
CN107003932A (zh) * 2014-09-29 2017-08-01 华为技术有限公司 多核处理器系统的缓存目录处理方法和目录控制器
CN111684425A (zh) * 2017-12-18 2020-09-18 超威半导体公司 适应于大高速缓存大小的基于区域的目录方案
CN111858398A (zh) * 2019-04-30 2020-10-30 慧与发展有限责任合伙企业 用于多类别存储器的缓存一致性管理
CN112579480A (zh) * 2020-12-09 2021-03-30 海光信息技术股份有限公司 存储管理方法、存储管理装置以及计算机系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809536A (en) * 1996-12-09 1998-09-15 Intel Corporation, Inc. Method for reducing the number of coherency cycles within a directory-based cache coherency memory system uitilizing a memory state cache
US5860120A (en) * 1996-12-09 1999-01-12 Intel Corporation Directory-based coherency system using two bits to maintain coherency on a dual ported memory system
US6574710B1 (en) * 2000-07-31 2003-06-03 Hewlett-Packard Development Company, L.P. Computer cache system with deferred invalidation
US6973543B1 (en) 2001-07-12 2005-12-06 Advanced Micro Devices, Inc. Partial directory cache for reducing probe traffic in multiprocessor systems
US20030084253A1 (en) * 2001-10-31 2003-05-01 Johnson David J.C. Identification of stale entries in a computer cache
JP4043225B2 (ja) * 2001-12-10 2008-02-06 株式会社ルネサステクノロジ キャッシュ装置および方法
US20070233932A1 (en) 2005-09-30 2007-10-04 Collier Josh D Dynamic presence vector scaling in a coherency directory
US7941610B2 (en) * 2006-04-27 2011-05-10 Hewlett-Packard Development Company, L.P. Coherency directory updating in a multiprocessor computing system
US8200903B2 (en) * 2008-02-14 2012-06-12 Hewlett-Packard Development Company, L.P. Computer cache system with stratified replacement
US9218289B2 (en) * 2012-08-06 2015-12-22 Qualcomm Incorporated Multi-core compute cache coherency with a release consistency memory ordering model
US10592424B2 (en) * 2017-07-14 2020-03-17 Arm Limited Range-based memory system
EP3724863B1 (en) * 2017-12-15 2023-08-30 Sensormatic Electronics, LLC Hard tag applicator
US10970213B2 (en) 2019-04-30 2021-04-06 Hewlett Packard Enterprise Development Lp Selective disabling of hardware-based cache coherency and enforcement of software-based cache coherency

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101859281A (zh) * 2009-04-13 2010-10-13 廖鑫 基于集中式目录的嵌入式多核缓存一致性方法
CN102521163A (zh) * 2011-12-08 2012-06-27 华为技术有限公司 目录替换方法及设备
CN107003932A (zh) * 2014-09-29 2017-08-01 华为技术有限公司 多核处理器系统的缓存目录处理方法和目录控制器
CN111684425A (zh) * 2017-12-18 2020-09-18 超威半导体公司 适应于大高速缓存大小的基于区域的目录方案
CN111858398A (zh) * 2019-04-30 2020-10-30 慧与发展有限责任合伙企业 用于多类别存储器的缓存一致性管理
CN112579480A (zh) * 2020-12-09 2021-03-30 海光信息技术股份有限公司 存储管理方法、存储管理装置以及计算机系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115514772A (zh) * 2022-11-15 2022-12-23 山东云海国创云计算装备产业创新中心有限公司 一种实现缓存一致性的方法、装置、设备及可读介质
CN115514772B (zh) * 2022-11-15 2023-03-10 山东云海国创云计算装备产业创新中心有限公司 一种实现缓存一致性的方法、装置、设备及可读介质

Also Published As

Publication number Publication date
DE102021127104A1 (de) 2022-10-20
US20220334971A1 (en) 2022-10-20
US20230281127A1 (en) 2023-09-07
US11687459B2 (en) 2023-06-27

Similar Documents

Publication Publication Date Title
US6345342B1 (en) Cache coherency protocol employing a read operation including a programmable flag to indicate deallocation of an intervened cache line
US8180981B2 (en) Cache coherent support for flash in a memory hierarchy
US8015365B2 (en) Reducing back invalidation transactions from a snoop filter
US9170946B2 (en) Directory cache supporting non-atomic input/output operations
US8812786B2 (en) Dual-granularity state tracking for directory-based cache coherence
US20070156972A1 (en) Cache coherency control method, chipset, and multi-processor system
US20100235576A1 (en) Handling Castout Cache Lines In A Victim Cache
US20120102273A1 (en) Memory agent to access memory blade as part of the cache coherency domain
US20100153647A1 (en) Cache-To-Cache Cast-In
US6321306B1 (en) High performance multiprocessor system with modified-unsolicited cache state
US20100235584A1 (en) Lateral Castout (LCO) Of Victim Cache Line In Data-Invalid State
US20130073811A1 (en) Region privatization in directory-based cache coherence
US20230281127A1 (en) Application of a default shared state cache coherency protocol
US11556471B2 (en) Cache coherency management for multi-category memories
US20200401519A1 (en) Region based split-directory scheme to adapt to large cache sizes
US10970213B2 (en) Selective disabling of hardware-based cache coherency and enforcement of software-based cache coherency
US11625326B2 (en) Management of coherency directory cache entry ejection
US6345344B1 (en) Cache allocation mechanism for modified-unsolicited cache state that modifies victimization priority bits
KR20230070034A (ko) 스케일러블 영역 기반 디렉토리
CN112673358B (zh) 在基于区域的高速缓存目录方案中加速对私有区域的访问
US8799587B2 (en) Region coherence array for a mult-processor system having subregions and subregion prefetching
US6374333B1 (en) Cache coherency protocol in which a load instruction hint bit is employed to indicate deallocation of a modified cache line supplied by intervention
US6615320B2 (en) Store collapsing mechanism for SMP computer system
US6349369B1 (en) Protocol for transferring modified-unsolicited state during data intervention
US10482015B2 (en) Ownership tracking updates across multiple simultaneous operations

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination