CN106227674B - 缓存一致性控制器及方法 - Google Patents
缓存一致性控制器及方法 Download PDFInfo
- Publication number
- CN106227674B CN106227674B CN201610355195.0A CN201610355195A CN106227674B CN 106227674 B CN106227674 B CN 106227674B CN 201610355195 A CN201610355195 A CN 201610355195A CN 106227674 B CN106227674 B CN 106227674B
- Authority
- CN
- China
- Prior art keywords
- cache
- memory
- directory
- memories
- memory address
- 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.)
- Active
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/0817—Cache consistency protocols using directory methods
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开涉及缓存一致性。缓存一致性控制器包括:目录,该目录针对由一致缓存结构中可连接的一个或多个缓存存储器或一个或多个缓存存储器的组缓存的存储器地址指示缓存存储器中的哪些缓存存储器正缓存那些存储器地址;以及控制电路,该控制电路被配置为检测与要被访问的存储器地址有关的目录条目,以便在目录条目指示缓存存储器之一正缓存存储器地址的情况下,在缓存存储器中协调另一缓存存储器或一致代理对该存储器地址的访问;控制电路响应于状态数据,该状态数据指示组中的每个缓存存储器当前是否服从缓存一致性控制,以便在检测与要被访问的存储器地址有关的目录条目中考虑组中仅当前服从缓存一致性控制的那些缓存存储器。
Description
技术领域
本公开涉及缓存一致性。
背景技术
某些所谓的缓存一致系统(其中一致性是跨同一数据的多个潜在副本被维护或至少被监测的)利用缓存一致性控制器,例如探听滤波器。缓存一致性控制器或“一致性点”或“家庭节点”负责监督对存储器地址的访问,并且可以使用所谓的探听滤波器用于检查要被访问的存储器地址的缓存版本是否由缓存一致系统中的另一缓存拥有。
为了避免进行不必要的探听查询,探听滤波器可以维护目录,该目录指示哪些存储器地址被系统中的哪些缓存所拥有。这样的目录可以是包括性的,在于其尝试存储所有缓存的所有这类信息。作为示例,m路关联结构可以被提供用于这类目录。
如果与新缓存访问有关的条目需要被写到所有路当前被占用的关联目录的区域中,则一个条目需要被删除。为了维护目录的包括性质,则这涉及缓存一致性控制器,缓存一致性控制器指示(一个或多个)有关缓存来删除其相应缓存行。该过程可以被称为后失效(back invalidation)。正确操作缓存的后失效通常是不可取的,因为这可能降低缓存命中的可能性,增加存储器访问的延迟和功率要求。
发明内容
在示例布置中,提供了一种缓存一致性控制器,包括:
目录,该目录针对由一致缓存结构中可连接的一个或多个缓存存储器或一个或多个缓存存储器的组缓存的存储器地址指示缓存存储器中的哪些缓存存储器正缓存那些存储器地址;以及
控制电路,该控制电路被配置为检测与要被访问的存储器地址有关的目录条目,以便在目录条目指示缓存存储器之一正缓存存储器地址的情况下,在缓存存储器中协调另一缓存存储器或一致代理对该存储器地址的访问;
控制电路响应于状态数据,该状态数据指示组中的每个缓存存储器当前是否服从缓存一致性控制,以便在检测与要被访问的存储器地址有关的目录条目中考虑组中仅当前服从缓存一致性控制的那些缓存存储器。
在另一示例布置中,提供了一种缓存一致性控制器,包括:
用于存储目录的装置,该目录针对由一致缓存结构中可连接的一个或多个缓存存储器或一个或多个缓存存储器的组缓存的存储器地址指示缓存存储器中的哪些缓存存储器正缓存那些存储器地址;以及
用于检测与要被访问的存储器地址有关的目录条目的装置,以便在目录条目指示缓存存储器之一正缓存存储器地址的情况下,在缓存存储器中协调另一缓存存储器或一致代理对该存储器地址的访问;
用于响应于状态数据进行检测的装置,该状态数据指示组中的每个缓存存储器当前是否服从缓存一致性控制,以便在检测与要被访问的存储器地址有关的目录条目中考虑组中仅当前服从缓存一致性控制的那些缓存存储器。
在另一示例布置中,提供了一种缓存一致数据通信设备,包括如上所定义的缓存一致性控制器。
在另一示例布置中,提供了一种存储器系统,包括:
如上所定义的缓存一致数据通信设备;以及
一个或多个缓存存储器的组,每个缓存存储器被连接到缓存一致数据通信设备。
在另一示例布置中,提供了一种方法,包括:
存储目录,该目录针对由一致缓存结构中可连接的一个或多个缓存存储器或一个或多个缓存存储器的组缓存的存储器地址指示缓存存储器中的哪些缓存存储器正缓存那些存储器地址;以及
检测与要被访问的存储器地址有关的目录条目,以便当目录条目指示缓存存储器之一正缓存存储器地址时,在缓存存储器中协调另一缓存存储器或实例中的一致代理对该存储器地址的访问;
检测步骤响应于状态数据,该状态数据指示组中的每个缓存存储器当前是否服从缓存一致性控制,以便在检测与要被访问的存储器地址有关的目录条目中考虑组中仅当前服从缓存一致性控制的那些缓存存储器。
本技术的另外的相应的方面和特征由所附权利要求定义。
附图说明
将参照如附图中所示的实施例、仅通过示例的方式来进一步描述本技术,在附图中:
图1示意性示出了数据处理装置;
图2示意性示出了数据处理元件和相关联的缓存;
图3示意性示出了缓存一致性控制器的操作;
图4示意性示出了探听滤波器目录;
图5示意性示出了探听目录条目;
图6是示出缓存逐出操作的示意流程图;
图7是示出释放探听目录中的条目的操作的示意流程图;
图8是示出掩模过程的示意流程图;
图9是示出掩模过程的细节的示意流程图;
图10示意性示出了示例掩模;
图11示意性示出了用于应用掩模的电路;以及
图12是示出探听过程的示意流程图。
具体实施方式
在参照附图讨论实施例之前,提供对实施例的下述描述。
示例实施例提供了一种缓存一致性控制器,包括:
目录,该目录针对由一致缓存结构中可连接的一个或多个缓存存储器或一个或多个缓存存储器的组缓存的存储器地址指示缓存存储器中的哪些缓存存储器正缓存那些存储器地址;以及
控制电路,该控制电路被配置为检测与要被访问的存储器地址有关的目录条目,以便在目录条目指示缓存存储器之一正缓存存储器地址的情况下,在缓存存储器中协调另一缓存存储器或一致代理对该存储器地址的访问;
控制电路响应于状态数据,该状态数据指示组中的每个缓存存储器当前是否服从缓存一致性控制,以便在检测与要被访问的存储器地址有关的目录条目中考虑组中仅当前服从缓存一致性控制的那些缓存存储器。
当缓存代理或缓存存储器从一致性域中被移除,例如在代理清除其缓存从而从探听滤波器目录中移除所有其相关联的条目的某些实例中掉电。但在这不发生的情况下,通过不良电源管理软件或不发送之前的缓存逐出的缓存代理,它可能导致与不再是一致性域的一部分并且不再被探听的缓存代理有关的探听滤波器中的陈旧的(过期的)条目。在包括性探听滤波器的示例中,这可能导致容量冲突问题,其要求后失效以从缓存中移除缓存行以允许新的分配(要被写的新目录条目)。
本布置解决了该问题。但对探听滤波器的新的一致访问是对现有缓存行的命中时,不考虑对不再在一致性域中的缓存代理的参照。这要求无额外的探听滤波器访问;节省功率和探听滤波器访问带宽。在示例中,从探听滤波器被返回的用于原始访问的探听向量现在指示一致性域中仍使能的缓存代理。
在示例实施例中,控制电路响应于状态数据,该状态数据指示组中的缓存存储器当前是否服从缓存一致性控制,以便在检测哪些缓存存储器正缓存要被访问的存储器地址中忽视与要被访问的存储器地址有关的相应目录条目中的关于当前未服从缓存一致性控制的缓存存储器的任意指示。
本布置可以提供通过控制电路清除与不再受缓存一致性控制的缓存存储器有关的条目的目录的便捷方式,控制电路被配置为仅基于组中当前服从缓存一致性控制的那些缓存存储器来生成替代目录条目。
在示例实施例中,目录提供m个可能的条目,该m个可能的条目被配置为存储以下指示:关于特定存储器地址,哪些缓存存储器正缓存该存储器地址,其中m大于1。例如,目录可以是m路关联的,以使得多个存储器地址映射到m个目录条目的关联组。在这样的情况下,本布置可以提供用于避免需要后失效的有用技术,例如在仅不再受缓存一致性控制的缓存存储器在目录中的条目中被详述的情况下。在示例实施例中,控制电路被配置为检测针对要新被缓存的存储器地址,目录条目是否可用存储于对关于一个或多个缓存存储器中哪些缓存存储器正缓存该存储器地址的指示。在实施例中,控制电路被配置为使得当被映射到该存储器地址的m个目录条目的集合中的所有目录条目被占用时,控制电路被配置为选择m个目录条目的集合中的一个目录条目作为要被重写的目录条目和要被无效的相应缓存信息,控制电路被配置为根据一个或多个缓存存储器组中哪个缓存存储器由该目录条目指示来从m个目录条目的组中选择要被重写的目录条目。但在本布置的示例中,针对仅由当前不服从缓存一致性控制的一个或多个缓存存储器占用的目录条目,控制电路被配置为将该目录视为未被占用的。
例如使用所谓的探听向量的示例实施例提供目录条目,每个目录条目包括从相应缓存存储器地址导出的信息和针对缓存存储器组中的每个缓存存储器指示该缓存存储器当前是否正缓存该存储器地址的信息。
实现本布置的精致方便的示例方式是控制电路被配置为响应于状态数据来对目录条目中的信息应用滤波器,该信息针对缓存存储器组中的每个缓存存储器指示该缓存存储器当前是否正在缓存该存储器地址,以便仅传递与当前服从缓存一致性控制的缓存存储器有关的那些指示。
作为目录条目的至少一部分的示例,指示将针对缓存存储器组中的每个缓存存储指示该缓存存储器当前是否正在缓存该存储器地址,该指示针对组中的每个缓存存储器包括相应的数据项。在这种情况下,滤波器可被配置为仅传递与当前服从缓存一致性控制的缓存存储器相对应的那些数据项。例如,每个数据项可包括一个数据位;并且滤波器可包括与缓存存储器组相对应的数据位与数据位集合(每个数据位指示相应缓存存储器当前是否服从缓存一致性控制)的逻辑组合。
另一示例实施例提供了一种缓存一致性控制器,包括:
用于存储目录的装置,该目录针对由一致缓存结构中可连接的一个或多个缓存存储器或一个或多个缓存存储器的组缓存的存储器地址指示缓存存储器中的哪些缓存存储器正缓存那些存储器地址;以及
用于检测与要被访问的存储器地址有关的目录条目的装置,以便在目录条目指示缓存存储器之一正缓存存储器地址的情况下,在缓存存储器中协调另一缓存存储器或一致代理对该存储器地址的访问;
用于响应于状态数据进行检测的装置,该状态数据指示组中的每个缓存存储器当前是否服从缓存一致性控制,以便在检测与要被访问的存储器地址有关的目录条目中考虑组中仅当前服从缓存一致性控制的那些缓存存储器。
示例实施例提供了一种缓存一致数据通信设备(例如片上网络设备或缓存一致互连),包括如上所定义的缓存一致性控制器。
另一示例实施例提供了一种存储器系统,包括:
如上所定义的缓存一致数据通信设备;以及
一个或多个缓存存储器的组,每个缓存存储器被连接到缓存一致数据通信设备。
另一示例实施例提供了一种方法,包括:
存储目录,该目录针对由一致缓存结构中可连接的一个或多个缓存存储器或一个或多个缓存存储器的组缓存的存储器地址指示缓存存储器中的哪些缓存存储器正缓存那些存储器地址;以及
检测与要被访问的存储器地址有关的目录条目,以便在目录条目指示缓存存储器之一正缓存存储器地址的情况下,在缓存存储器中协调另一缓存存储器或一致代理对该存储器地址的访问;
检测步骤响应于状态数据,该状态数据指示组中的每个缓存存储器当前是否服从缓存一致性控制,以便在检测与要被访问的存储器地址有关的目录条目中考虑组中仅当前服从缓存一致性控制的那些缓存存储器。
示例布置可以被实现为例如缓存一致数据通信设备(例如互连或片上网络(NoC)设备),包括如上所定义的缓存一致性控制器。
示例布置可以被实现为存储器系统,包括:
如上所定义的缓存一致数据通信设备;以及
一个或多个缓存存储器的组,每个缓存存储器被连接到缓存一致数据通信设备。
现在参照附图,图1示意性示出了数据处理装置,包括:多个数据处理节点10、12、14、16、18和20和被连接到多个数据处理节点的互连电路30。互连电路包括多个接口40、42、44、46、48、50和数据路由电路60,其中每个接口与数据处理节点中相应的一个数据处理节点相关联,数据路由电路60用于控制和监测各个数据处理节点之间的数据处理事务。
数据处理节点10…20可以是各种类型的节点,例如,可能具有相关缓存存储器的处理元件(例如,CPU(中央处理单元,作为数据处理元件的示例)或CPU集群);存储器;外围组件(例如输入/输出组件),直接存储器访问(DMA)设备等。一些数据处理节点可被配置为主节点,并且一些可被配置为从节点,主/从区别指示哪些节点对这些节点之间的数据处理事务进行控制。
图1的数据处理装置可以被实现为单个集成电路,例如被实现为所谓的片上系统(SoC)。替代地,图1的数据处理装置可以被实现为多个离散并互连的系统。
互连电路是缓存一致数据通信设备的示例。另一示例(未示出,但被视为本技术的实施例)是所谓的片上网络(NoC)系统。图1的布置是存储器系统的示例,该存储器系统包括:缓存一致数据通信设备;以及一组一个或多个缓存存储器,每个缓存存储器被连接到缓存一致数据通信设备。
在示例实施例中,互连电路可以是所谓的缓存一致互连电路的示例。在这里,术语“一致的”指对跨整个系统存储的同一数据的多个副本之间的正确关系的维护。例如,数据可以被存储在作为数据处理节点之一(例如节点10)的存储器设备中。其它节点(例如节点12、14)可以是具有其自己的相应缓存的处理元件,相应缓存根据处理元件操作的性质可以存储数据的一个或多个副本,数据的一个或多个副本也被保存在存储器10中。在一个节点对这类信息进行数据处理访问的情况下,需要确保访问节点正访问所存储信息的最新版本,并且如果对所存储的信息做出任何改变,则其它版本它们本身被正确地改变或其它版本被删除或被无效。数据路由电路60包括各种机制和电路以提供一致的操作。这些的示例将在下文中被讨论。
图2示意性示出了图1的布置中的示例节点。在该示例中,CPU 200参照关联缓存存储器210中所存储的数据,CPU 200和缓存存储器210二者都与互连电路30进行通信。缓存存储器210对存储器10中保存的信息的副本进行存储。在某些实例中,两个副本可以是相同的,例如在副本在存储器读操作期间已被缓存的情况下。在其它实例中,将会导致副本彼此不同的情况可能发生,例如在针对缓存210中存储的数据项的副本,数据写操作已由CPU200执行的情况下。在多缓存的系统中,需要确保在数据项的一个版本被访问之前,关于其它版本已实现的任意变化针对所有副本被完全实现。
与缓存一致性功能相关联的逻辑的作用因此是确保在数据处理事务发生之前,如果要被访问的数据项的版本是过期的(由于对同一数据项的另一副本做出修改),则要被访问的副本首先被更新。类似地,如果数据处理事务涉及修改数据项,则缓存一致性逻辑避免与数据项的其它现有副本的冲突。下面将讨论用于实现此的技术。
图3示意性示出了包括探听滤波器的缓存一致性控制器的操作。
术语“探听滤波器”是历史的一个并且在这里被用于指代具有相关联的“目录”的控制设备,其中目录存储指示关于哪个数据被存储在哪个缓存中的信息,并且探听滤波器它本身至少有助于处理对所缓存信息的数据访问,以便提供缓存一致性功能。
在本实施例中,缓存一致性控制器包括探听滤波器。缓存一致性控制器可以可选地提供其它功能。探听滤波器可以提供与监督对跨缓存一致系统的数据访问的处理有关的功能中的一些或全部功能。因此,在一些示例中,探听滤波器可以被视为缓存一致性控制器。在其它示例中,缓存一致性控制器(包括探听滤波器)提供缓存一致性控制器的示例。下面要讨论的缓存一致性控制器和/或探听滤波器提供如下所讨论被配置的控制电路或控制逻辑的示例。
在图3中,探听滤波器300(具有如上讨论的目录310和寄存器305,指示为一致性控制布置中的当前部分(否则被称为在一致系统中或在一致域中)的这些缓存存储器)构成与事务路由器320相关联的缓存一致性控制器302的一部分,事务路由器320构成数据路由电路60的一部分。事务路由器320与一个或多个缓存存储器(其中的两个示例330、340在图3中被示出)进行数据通信。每个缓存存储器具有相关联的代理335、345,其负责对关于该缓存存储器的数据读操作和数据写操作的本地处理。
在这里使用的术语“代理”包含至少两种类型的布置。在典型一致系统中具有两种类型的代理,“完全一致”和“I/O一致”。完全一致代理是具有缓存结构的那些处理元件,缓存结构可以具有从互连电路探听的数据。I/O一致代理不具有缓存因此不能被探听,然而它们仍要求能够读取存储在完全一致代理的缓存中的数据。
因此,在本说明书中,参照“要被缓存存储器或一致代理中的一个访问的存储器地址”。在这里,缓存存储器(当一致域中的一部分被用作完全一致代理时),用这样的表达被称为“或一致代理”的其它代理被用作I/O一致代理。
探听滤波器300对处理(在该处理下,当数据处理节点10…20中的任意数据处理节点旨在访问或修改作为缓存行被存储在任意缓存存储器中的数据时,该节点获得这样做的许可)的至少一部分进行处理。作为该处理的一部分,探听滤波器300检查任意其它缓存存储器是否具有将被修改的行的副本。如果在其它缓存存储器处存在任意其它副本,则那些副本需要被清除和被无效。如果这些副本它们本身包含对该行中所存储数据的修改,则在至少一些情况下,缓存一致性控制器302(或探听滤波器300)指示缓存存储器将该行写回主存储器。
在节点针对缓存存储器中所存储的数据进行读访问时,请求进行读取的节点10…20已访问缓存数据的最新正确版本这是很重要的。缓存一致性控制器302监督该过程,以使得如果另一缓存具有所需数据的最近修改版本,则其它缓存写回修改版本和/或转发修改版本的副本用于在当前请求节点处缓存。
包括探听滤波器300的缓存一致性控制器302因此提供缓存一致性控制器的示例,缓存一致性控制器被配置为当目录指示缓存存储器中的一个缓存存储器正缓存存储器地址时,在缓存存储器中协调另一缓存存储器对该存储器地址的访问。探听控制器存储或提供诸如目录310之类的目录,目录针对由一致缓存结构中可连接的一个或多个缓存存储器或一个或多个缓存存储器的组缓存的存储器地址,指示缓存存储器中的哪些缓存存储器正缓存那些存储器地址。
探听操作提供将消息发送到缓存存储器的示例,缓存存储器通过目录被指示缓存正由另一缓存存储器访问的存储器地址,并且从接收消息的缓存存储器接收响应,该响应指示该缓存存储器实际上是否正在缓存该存储器地址。
在图1中所示类型的数据处理系统的示例中,由探听滤波器300执行的几乎所有检查可以被预计错过,也就是说它们将无法发现多个缓存之间的数据的复制。然而,由探听滤波器300执行的检查对维护缓存一致性是必要的。为了提高过程的效率并且使探听滤波器300避免做出肯定将要错过的检查,探听滤波器300维护目录310,目录310向探听滤波器300指示哪些数据被存储在哪个缓存处。这不仅允许探听滤波器300降低探听操作的数量(通过避免执行以下这样的操作:特定行未被保存在任意缓存中或仅被保存在与当前访问该数据的节点相对应的缓存处),它还允许与探听操作有关的数据通信(例如作为单播或多播通信)被更好地定向到(一个或多个)适当的缓存而不是作为数据事务被广播到所有缓存。
因此,当潜在的探听操作被发起时,探听滤波器300询问目录310以检测讨论中的信息是否被保存在一个或多个缓存中。如果确实需要探听操作来询问关于一个或多个缓存处的数据的当前状态,则探听滤波器300可以在适当的情况下将该询问作为单播或多播通信(而不是广播通信)而执行。
包括探听滤波器300的缓存一致性控制器302因此提供缓存一致性控制器的示例,缓存一致性控制器包括:目录(例如目录310),其针对由一致缓存结构中的一个或多个缓存存储器的组缓存的存储器地址,指示缓存存储器中的哪些缓存存储器正缓存那些存储器地址,目录是相关联的,以使得多个存储器地址映射到不止一个目录条目的关联集合(在该示例中,该集合具有m个条目,其中m大于1);以及控制逻辑,该控制逻辑响应于要新被缓存的存储器地址,并且被配置为检测被映射到该存储器地址的目录条目中的一个或多个集合是否可用于对指示(该指示关于一个或多个缓存存储器中哪些缓存存储器正缓存该存储器地址)的存储。
探听滤波器300是所谓的包括性探听滤波器,这表示它具有维护服从缓存一致性的所有缓存拥有的所有数据的完整列表的不间断的要求。为了实现该目的,探听滤波器300(作为缓存一致性控制器302的一部分)需要被与缓存存储器相关联的代理通知已发生缓存插入。但为了有效地执行该功能,它还应该被代理通知如果缓存行已从该缓存存储器中被逐出(被移除),则(在未修改数据的情况下)简单的删除或无效或(针对修改的数据)写回主存储器。然而,与多个缓存相关联的一些操作协议可以推荐逐出的信令但不必授权它。在任意情况下,存在这样的情况:缓存存储器可能通常由于软件错误(例如在虚拟存储器系统中)或存储器错误而无法发送所有逐出。
在本说明书中,“沉默逐出”将指代从缓存中被逐出的块或其它数据项,而无需将该逐出事件发送到探听目录。
为了维护探听滤波器目录310的包括属性,针对每个存储的缓存行,条目必须被提供在目录310中。下面将进一步讨论目录310的结构,但一般地说可能目录310至少就适用于存储新访问的缓存行的目录310的区域来说变成满的。该容量问题可以被如上讨论的沉默逐出的问题加重。如果沉默逐出发生,则探听滤波器300无法从目录310中清除相应条目,这表示进而当新条目被要求写到目录310中时其更有可能表现出是满的。
探听滤波器300所使用的用于处理针对新创建的条目的不足容量的问题的技术将执行所谓的“后无效”。在这里,缓存一致性控制器302或探听滤波器300选择探听滤波器目录310中要被删除的条目(所谓的“牺牲”条目)并且发起对相应缓存行从相应(一个或多个)缓存中的逐出。高速的后无效是不可取的,因为它通常降低缓存占用率因而降低缓存命中率,因此可能导致性能下降和功率增加,这二者都是由于主存储器访问的增加。它还可能增加执行时间,因为主存储器访问趋向于比缓存存储器访问更慢。
本公开的实施例提供了用于基于那些缓存存储器进行的数据访问和/或那些缓存存储器的一个或多个特性来优选地选择遭受后失效的缓存存储器。下面将讨论这些技术的进一步的细节。
图4示意性示出了诸如目录310之类的探听滤波器目录。探听滤波器目录310被组织为n×m条目的m路关联组。在这里,目录310中条目的数目n×m可以被设置例如为缓存一致系统中所有缓存行的总数的1.5倍。路的数目m可以被设置为比每个缓存存储器的关联性更低的路的数目。单纯作为示例,在具有复数16路关联缓存存储器的系统中,m可以是8。注意,本技术适用于诸如所谓的布谷鸟(cuckoo)缓存之类的其它关联结构。
关联性和“路”的数目指示存在用于存储要被目录310保存的任意单独数据项的m个可能的位置。在本示例中,数据项被称为探听目录“条目”,并且图5示意性示出了探听目录条目500。因此,在该示例中,目录提供m个可能的条目,该m个可能的条目被配置为存储以下指示:关于特定存储器地址,哪些缓存存储器正缓存该存储器地址,其中m大于1。在示例中,目录是m路关联的,以使得多个存储器地址映射到m个目录条目的关联组。注意,在其它关联结构(例如,其关联性与同一结构的多个探针有关或由同一结构的多个探针提供的结构,例如所谓的哈希-重哈希结构(包括所谓的布谷鸟哈希结构))中,值m可能不是固定的而是可以随操作而变化。但在(至少)单点操作中,关联性提供不止一个目录条目的组作为特定操作的位置。
探听目录条目500包括两个选项:标签510和探听向量520。
标签510构成说明的一部分,说明是关于哪个缓存行(换言之,地址空间的哪个区域)被探听目录条目500引用的。为了确定探听目录条目被存储(或将被存储)在探头目录310中的位置,与讨论中的与缓存行有关的存储器地址的一部分被用于选择或索引目录310的n组条目之一。存储器地址的剩余部分被用于生成标签510。例如,存储器地址的若干最高有效位可以指示条目将被存储在目录310的n组条目中的哪一组条目中,下一最高有效位的另外的组构成标签510。这里要注意的是,最低有效位不一定需要作为讨论中的缓存行的存储器地址的说明的一部分,因为缓存行包括表示若干存储器地址的数据。例如,缓存行可能包括8×32位数据字,这表示存储器地址的5个最低有效位与指定存储器空间中的缓存行的位置无关。
替代地,若干最低有效位可被用作索引,若干最高有效位构成标签。
哈希可被用于如上所讨论的过程中的任意部分,以便引入对目录310中条目被存储的位置的不规则或伪随机分布,这进而可避免多个缓存结构必须被存储在目录310中的相邻索引处的问题。
在目录310的根据从讨论中的存储器地址导出的索引选择的一组条目内,条目可以被存储在任意m“路”处。当新条目将被存储在目录310中时,如果存在空闲的路,则该路可以被用来存储新存储的条目。如果不存在任何空闲的路,则如上面提到的后失效过程必须被执行以便提供空闲的路。下面将对此进行更详细的描述。
探听向量指示哪些缓存存储索引和标签(在地址空间中)所定义的缓存行。在图5中所示的示例中,探听向量适用于具有四个一致缓存的系统,并且探听向量包括四个位,每个位指示(通过1或0)该缓存行是否被相应缓存拥有。例如,探听向量的格式可以是如下所示:
根据该格式,被表示为(例如)1001的探听向量将指示索引和标签所定义的缓存行被缓存A和D拥有,但未被缓存B和C拥有。
探听向量的位提供指示(其针对缓存存储器组中的每个缓存存储器,指示该缓存存储器当前是否正在缓存该存储器地址)的示例,该指示针对组中的每个缓存存储器包括相应的数据项(在该示例中为位)。
探听滤波器可以维护探听目录的内容,因为(作为一致功能的一部分)探听滤波器(或缓存一致性控制器,其包括探听滤波器)被通知关于缓存存储器获得缓存行的副本的任意操作。通常,探听滤波器还被通知关于缓存逐出,但是如上所讨论的,可能存在逐出未被正确通知的情况。
探听向量0000将指示探听目录中的空闲条目。条目可以即使在拥有该缓存行的最后缓存执行逐出时保留,但该条目随后被释放来由新创建的条目重写。
当然,应该注意的是可以使用其它格式。
上面所讨论的探听向量提供了每个目录条目的示例,每个目录条目包括从相应缓存存储器地址导出的信息和指示下述内容的信息:针对缓存存储器组中的每个缓存存储器,该缓存存储器当前是否正缓存该存储器地址。
图6是示出缓存逐出操作的示意流程图。过程步骤被示出在垂直虚线的左边和右边。示出在左边的步骤指示由缓存存储器和/或其相应代理执行的事情。示出在线右边的步骤指示由探听滤波器(作为缓存一致性控制器302的一部分)或缓存一致性控制器302(包括探听滤波器300)和/或目录310执行的步骤。
在步骤600处,缓存逐出被发起。要求缓存逐出有各种确定的理由,响应于在相应缓存处本地执行的过程或响应于来自缓存一致性控制器302的指令。在步骤610处,要被逐出的该缓存行的内容如果是“脏的(dirty)”则被写回主存储器,“脏的”是用于指代下述内容的术语:相对从主存储器初始取回的版本已被修改的缓存行内容。在步骤620处,代理通知缓存一致性控制器302(因此通知探听滤波器)关于该逐出,并且在步骤630处,探听滤波器删除或至少无效与该缓存处的该缓存行相对应的目录条目。步骤630可以包括例如将与该缓存行相对应的探听向量的有关位设置为零。
如上所讨论的,如果步骤620由于任意原因而无法发生,则步骤630不被触发,因而不必要的条目仍保留在探听滤波器目录310中。
在某些示例布置中,步骤610、620可以作为单个操作被执行。
图7是示出用于释放条目并且将新创建的条目存储在探听滤波器目录中的操作的示意流程图。该过程涉及当前未被保存在目录中的探听向量,因而涉及针对第一缓存中目录条目的生成以存储特定缓存行的副本。
在步骤700处,索引值从要被存储在目录310中的缓存行的主存储器空间中的地址中导出。如上面所讨论的,这可以是缓存行的存储器地址的一部分,或可以依赖从该地址导出的哈希值或其它值。它指示条目将被存储所在的目录的条目的集合(在图4所示的示例中的n集合中)。标签例如由该缓存行的地址的剩余部分被形成。
在步骤710处,探听滤波器检查与该索引有关的所有m个条目是否是满的,也就是说检查该索引的所有m路当前是否被有效数据占用。如果所有m路包含具有探听向量有至少一个非零位(根据如上所讨论的示例格式)的相应条目,则该测试被满足。这是控制电路的示例,控制电路被配置为针对要新被缓存的存储器地址,检测目录条目是否可用于存储对关于一个或多个缓存存储器中哪些缓存存储器正缓存该存储器地址的指示。
如果是满的,则在步骤720处探听滤波器300选择要被删除的“牺牲(victim)”条目,并且缓存一致性控制器302发起对任意缓存存储器中相应缓存行(到牺牲条目)的后验证,其任意缓存存储器中该缓存行被记录为被存储。关于一个示例缓存存储器的操作在图7中示出,但是要求后失效的可能有不止一个。相应缓存行被存储所在的一个或多个缓存存储器参照该缓存行执行逐出过程(图6中所示的形式),并且确认已对缓存一致性控制器302这样做。探听滤波器随后在步骤740处将新的条目写到新空闲的路。步骤720提供以下示例:控制电路被配置为使得当映射到该存储器地址的m个目录条目的集合中的所有目录条目被占用时,控制电路被配置为选择m个目录条目的集合中的一个目录条目作为要被重写的目录条目和要被无效的相应缓存信息,控制电路被配置为根据一个或多个缓存存储器组中哪个缓存存储器由该目录条目指示来从m个目录条目的组中选择要被重写的目录条目。
返回步骤710,如果步骤710处执行的检查透露与检测的索引相对应的m个条目不是全部满的,则控制直接进行到步骤740,在步骤740中新条目简单被写到那些条目中空闲的路。
图7因此提供一种方法的示例,该方法包括:
存储目录,该目录针对由一致缓存结构中的一个或多个缓存存储器的组缓存的存储器地址,指示缓存存储器中的哪些缓存存储器正缓存那些存储器地址,目录是相关联的,以使得多个存储器地址映射到不止一个目录条目的关联集合(例如,m个目录条目的集合,其中m大于1);
响应于要新被缓存的存储器地址,检测被映射到该存储器地址的目录条目集合中的一个或多个目录条目是否可用于存储对关于一个或多个缓存存储器中哪些缓存存储器正缓存该存储器地址的指示;以及
当被映射到该存储器地址的目录条目集合中的所有目录条目被占用时,根据一个或多个缓存存储器组中哪个缓存存储器由该目录条目指示,选择目录条目集合中的一个目录条目作为要被重写的目录条目和要被无效的相应缓存信息。
在根据图7的技术和下面将讨论的那些技术进行操作中,探听滤波器300(和/或缓存一致性控制器302)提供了控制逻辑的示例,该控制逻辑被配置为使得当被映射到该存储器地址的目录条目集合中的所有目录条目被占用时,控制逻辑被配置为选择目录条目集合中的一个目录条目作为要被重写的目录条目和要被无效的相应缓存信息,控制逻辑被配置为根据一个或多个缓存存储器组中哪个缓存存储器由该目录条目指示来从目录条目集合中选择要被重写的目录条目。
因此,图7描述了后失效过程。该过程的一个重要方面是步骤720,在步骤720处,在目录310中的条目集合满的情况下,牺牲条目被选择用于删除。在示例实施例中,使用了伪随机牺牲选择技术。
图8是示出了掩模过程的示意流程图。该流程图提供了对过程的高级概述,并且下面将在讨论中给出更多细节。
在步骤800处,缓存一致性控制器302检测与系统相关联的缓存存储器中哪些缓存存储器当前作为一致域的一部分在操作中。缓存存储器可以出于各种原因离开一致域,例如由于功率下降、操作状态的变化、故障或其它原因。缓存存储器可以维持在操作中(仅不在一致操作中)或可以停止操作。
缓存一致性控制器302在步骤800处不间断地执行检测并且将检测的结果维护在寄存器305中。
针对至少某些缓存一致系统,检测步骤800它本身是正常操作的已建立的部分。本公开关注这样的技术:通过这样的技术,该检测的结果例如被用于探听滤波器目录310的管理中。
在步骤810处,缓存一致性控制器302和/或探听滤波器300创建所谓的掩模,掩模是步骤800处检测的每个缓存存储器的状态的表示。换言之,掩模提供状态数据的示例,状态数据指示组中的每个缓存存储器当前是否正服从缓存一致性控制。掩模可以在810处从寄存器305的内容中被创建,该步骤例如每当掩模被要求时(参见下面)或每当对寄存器305的内容做出改变时发生。
在步骤820处,探听滤波器300以下面将描述的方式将对探听向量应用掩模,以便在检测与要被访问的存储器地址有关的目录条目中考虑缓存存储器组中仅当前服从缓存一致性控制的那些缓存存储器。以这种方式应用掩模提供了控制电路的示例,该控制电路被配置为响应于状态数据对目录条目中的信息应用滤波器,该信息针对缓存存储器组中的每个缓存存储器,指示该缓存存储器当前是否正在缓存该存储器地址,以便仅传递与当前服从缓存一致性控制的缓存存储器有关的那些指示。
图9是更详细示出掩模过程的示意流程图。在步骤900处,探听滤波器300访问目录310,并且关于一个或多个目录条目检测与那些目录条目相关联的探听向量。
在步骤910处,探听滤波器300对探听向量应用掩膜。这允许探听滤波器300在检测哪些缓存存储器正缓存要被访问的存储器地址中忽视与要被访问的存储器地址有关的相应目录条目(例如,在探听向量中)中的关于当前未服从缓存一致性控制的缓存存储器的任意指示。
在步骤920处,探听滤波器300和/或缓存一致性控制器302“清除”被发现涉及不再服从缓存一致性控制的缓存存储器的任意目录条目。在下面将讨论的示例中,这可以包括准备替换探听向量,这省略之前由探听向量拥有的与不再服从缓存一致性控制的缓存存储器有关的任意信息。
图10示意性示出了示例掩模。该掩模遵循如上所讨论的探听向量格式,这在于(如所绘出的)掩模的四个数据位930按所绘出的从左到右的顺序分别表示缓存存储器A…D。数据位930中的每个数据位针对相应缓存存储器指示该缓存存储器当前是否正受缓存一致性控制。例如,“1”可以指示相应缓存存储器当前正受缓存一致性控制,并且“0”可以指示相应缓存存储器未受缓存一致性控制。因此,指示当前正受缓存一致性控制的缓存存储器A、C和D的示例掩模可以是:
1 | 0 | 1 | 1 |
将理解的是,指示的位数或极性的具体选择是常规设计选择并且可使用替代表示,例如“0”可以指示相应缓存存储器当前正受缓存一致性控制,并且“1”可以指示相应缓存存储器未受缓存一致性控制。这些选择可以影响例如下面将结合图11所讨论的逻辑的类型。然而,在本讨论中,将使用结合图10所讨论的示例格式。
图11示意性示出了用于应用掩模的示例电路,电路包括逻辑组合器1100,逻辑组合器1100将探听向量1110的相应位与掩模1120进行组合以生成输出1130。
图11的电路提供了掩模与探听向量的逻辑组合,以使输出或结果1130提供关于当前服从缓存一致性控制的缓存存储器的正常探听向量指示(是该缓存处拥有的数据?),但是针对当前不服从缓存一致性控制的任意缓存存储器,该指示被设置为指示“当前未被存储在该缓存存储器处”。逻辑组合器1100的操作提供了仅传递与当前服从缓存一致性控制的缓存存储器相对应的那些数据项的示例。在示例中,(探听向量的)每个数据项包括一个数据位;并且逻辑组合使用与缓存存储器组相对应的数据位与数据位集合(每个数据位指示相应缓存存储器当前是否服从缓存一致性控制)。
探听向量为何可以保留在目录310中存在各种原因,其中探听向量指示不再服从缓存一致性控制的缓存存储器保留特定数据的副本,即使该信息实际上不再与探听滤波器操作有关。例如,缓存存储器可以由于瞬时故障离开一致域,从而使得缓存存储器不具有向缓存一致性控制器发送逐出的机会。或缓存存储器离开一致域的动作事实上将被布置为不使得探听滤波器预先移除与该缓存存储器有关的条目,因为作为单个操作这样做针对探听滤波器和/或缓存一致性控制器将潜在地是非常处理器密集的(processor-intensive)。替代地,本技术允许探听目录310在逐索引或逐条目的基础上(随着那些索引或条目接下来被访问)被清除与不再在一致域中的缓存存储器有关的探听向量信息。
因此,逻辑组合器1100的输出可以按各种方式使用,下面将参照图12描述这些方式中的至少一些方式。
例如,每当探听向量被访问时,掩模可以被应用,以便移除与不再在一致域中的缓存存储器有关的任意逻辑“1”(按该说明书中使用的示例记法)。如果这改变了探听向量,则条目可以被修改以便反映新(被掩模的)探听向量。
第一示例为如下所示:
掩模 | 1 | 0 | 1 | 1 |
探听向量 | 1 | 1 | 0 | 0 |
新探听向量 | 1 | 0 | 0 | 0 |
该操作随输出1130产生输出(新)探听向量,输出1130仍指示有关数据由服从缓存一致性控制的缓存存储器拥有。新探听向量可以例如被写到该目录条目以替代之前的探听向量。
第二示例为如下所示:
掩模 | 1 | 0 | 0 | 1 |
探听向量 | 0 | 1 | 0 | 0 |
新探听向量 | 0 | 0 | 0 | 0 |
该操作类似地随输出1130产生输出(新)探听向量,输出1130指示有关数据不再由服从缓存一致性控制的缓存存储器拥有。新探听向量可以例如被写到该目录条目以替代之前的探听向量。或探听向量条目可以简单地被删除。
这两个示例表示上面所讨论的步骤920的示例实例。(探听滤波器300和/或缓存一致性控制器302的)控制电路被配置为仅基于组中当前服从缓存一致性控制的那些缓存存储器来生成替代目录条目。
在掩模的另一示例使用中,掩模的探听向量可用来选择用于后失效的牺牲条目(上面的步骤720)。如果新条目需要被写到目录310的满的条目集合中,则需要步骤720。
例如,考虑以下情况:相关条目集合的一个或多个条目使得当与掩模组合时,条目具有被掩模的探听向量,其指示该相关数据不再由服从缓存一致性控制的缓存存储器拥有,例如:
掩模 | 1 | 0 | 0 | 1 |
探听向量 | 0 | 1 | 0 | 0 |
新探听向量 | 0 | 0 | 0 | 0 |
在该示例情况下,具有被掩模的探听向量(指示该相关数据不再由服从缓存一致性控制的缓存存储器拥有)的目录条目可以被视为未被占用的,用于在该条目集合中(在该索引处)找到存储新需要的条目的位置的目的。在图7的流程图的上下文中,这可以表示以下两者中的任一者:
(a)允许控制传递直到步骤720,但是随后将该目录条目设置为牺牲条目(避免正常的牺牲选择过程);或
(b)在步骤710处应用掩模,以使得针对该条目“未满的”路径从步骤710跟随到步骤740。
即使在被掩模的探听向量的情况下(在应用掩模后,被掩模的探听向量仍指示相关数据由一个或多个缓存拥有),牺牲选择步骤720可以在选择牺牲条目中考虑被掩模的探听向量(而不是原始探听向量)。例如,如果牺牲选择是基于缓存存储器的循环或伪随机选择的,则被掩模的探听向量中的信息可用于选择过程。
图12是示出探听过程并且具体地示出从探听滤波器目录查找开始的过程的部分的示意流程图。
如上面所讨论的,目录查找是当缓存存储器或其它一致代理需要访问存储器地址时被执行的第一步骤。探听滤波器300检查目录310(包括性的目录)关于指示该存储器地址当前是否由构成一致系统的一部分的缓存存储器中的任意缓存存储器缓存的信息。然而,如上所讨论的,在与缓存一致性控制器和探听滤波器相关联的缓存存储器(从而使得它可以构成一致域的一部分,但它当前不服从缓存一致性控制)的情况下,这样的缓存存储器仍可以在目录中的条目中被引用,从而使得那些条目指示缓存存储器存储特定的数据项。不论缓存存储器实际上是否仍存储那些数据项,缓存存储器不再服从缓存一致性控制的事实表示不论它是否存储那些数据项它都与探听操作无关。因此,上面所讨论的掩模可用于忽视该信息。
参照图12,探听滤波器目录查找在步骤1200处被发起。在步骤1205处,做出关于当前访问的地址是否提供目录中的命中的检测。换言之,探听滤波器300检测目录310是否已经包含索引和标签与当前访问的地址相对应的条目。如果响应为“是”,则控制传递到步骤1210。如果答案是“否”,则控制传递到下面将讨论的步骤1230。
在步骤1210处,构成命中的目录条目的探听向量被读取并且被(例如)图11中所示的逻辑掩模。在步骤1215处,表示来自图11的输出1130的被掩模的探听向量被返回。如上面所讨论的,掩模的影响是移除与同缓存一致性控制器和探听滤波器相关联的缓存存储器(其不再是缓存一致性域的一部分的之外)相对应的探听向量中的任意数据位。
在步骤1220处,新探听向量基于当前存储器访问事务被计算或被生成。如上面所讨论的,这可以包括从当前正缓存该存储器地址的组中移除一些缓存存储器和/或将缓存存储器添加到当前缓存该存储器地址的组。如果目录条目与该存储器地址的之前的目录条目不同,则其在步骤1225处被更新,并且过程(至少目前由于它与访问目录中的探听向量有关)结束。存储器访问事务正常被执行,但基于步骤1215处所返回的被掩模的探听向量。
返回步骤1230,如果在步骤1205处未检测到目录命中,则步骤1230被执行,关于当前存储器地址是否是所谓的分配事务的测试由探听滤波器和/或缓存一致性控制器执行。这涉及将产生被保存在缓存存储器(其中之前未保存任何副本,注意来自步骤1205的“否”结果指示无任何之前的副本被保存)中的该存储器地址的副本的存储器访问。如果答案是“否”,则控制传递到步骤1255,在步骤1255处,零探听向量被返回并且过程结束。
然而,如果对步骤1230的响应为“是”,则在步骤1235处,要被写为分配事务的一部分的探听向量如上所讨论的被掩模。在该步骤处,要注意的是,当标签在探听目录中被查找时,所有m路的探听向量被返回(例如,并行)并且掩模被并行应用到所有这些探听向量以确定当前在一致域中的那些缓存代理的探听向量。在步骤1240处,零探听向量被返回。
在步骤1245处,如果目录的条目集合被发现全部是满的(在上述步骤710处),则牺牲条目被选择(与步骤720相对应,但使用如上所讨论的被掩模的探听向量)。如果条目集合在被掩模的探听向量的基础上被检测出不是全满的(如上所述),则空闲的路被选择用于写新条目。
换言之,针对仅由当前不服从缓存一致性控制的一个或多个缓存存储器占用的目录条目,探听滤波器被配置为将该目录条目视为未被占用的。另一方面,如果所有目录条目被占用,即使考虑使用忽视仅与当前不服从缓存一致性控制的缓存存储器有关的探听向量的掩模,则牺牲路被选择用于重写。此外,掩模被用于牺牲路(例如任意条目)的选择。
最后,在步骤1250处,新写的探听向量被插入到所选择的路中并且过程结束。
在本申请中,词“被配置为…”被用于表示具有用于执行所定义的操作的配置表的装置的元件。在该上下文中,“配置”表示硬件或软件的互连的布置或方式。例如,装置可以具有提供所定义的操作的专用硬件,或处理器或其它处理设备(例如,处理元件12)可被编程为执行功能。“被配置为”不暗示装置原始需要按任意方式改变以提供所定义的操作。
尽管本文已参照附图详细描述了本技术的说明性实施例,但将理解的是本技术不限于那些精确的实施例,并且在不脱离由所附权利要求定义的技术的精神或范围的情况下,本领域技术人员可以实现其中的各种变化、添加和修改。例如,在不脱离本技术的范围的情况下,可以做出从属权利要求的特征与独立权利要求的特征的各种组合。
Claims (17)
1.一种缓存一致性控制器,包括:
目录,该目录针对由一致缓存结构中可连接的一个或多个缓存存储器或一个或多个缓存存储器的组缓存的存储器地址指示缓存存储器中的哪些缓存存储器正缓存那些存储器地址;以及
控制电路,该控制电路被配置为检测与要被访问的存储器地址有关的目录条目,以便在所述目录条目指示所述缓存存储器中的一个缓存存储器正缓存存储器地址的情况下,在所述缓存存储器中协调另一缓存存储器或一致代理对该存储器地址的访问;
所述控制电路响应于状态数据,该状态数据指示所述组中的每个缓存存储器当前是否服从缓存一致性控制,以便在检测与所述要被访问的存储器地址有关的所述目录条目中考虑所述组中仅当前服从缓存一致性控制的那些缓存存储器。
2.如权利要求1所述的缓存一致性控制器,其中,所述控制电路响应于所述状态数据,所述状态数据指示所述组中的缓存存储器当前是否服从缓存一致性控制,以便在检测哪些缓存存储器正缓存所述要被访问的存储器地址中忽视与所述要被访问的存储器地址有关的相应目录条目中的关于当前未服从缓存一致性控制的缓存存储器的任意指示。
3.如权利要求1所述的缓存一致性控制器,其中,所述控制电路被配置为仅基于所述组中当前服从缓存一致性控制的那些缓存存储器来生成替代目录条目。
4.如权利要求1所述的缓存一致性控制器,其中,所述目录提供m个可能的条目,该m个可能的条目被配置为存储以下指示:关于特定存储器地址,哪些缓存存储器正缓存该存储器地址,其中m大于1。
5.如权利要求4所述的缓存一致性控制器,其中,所述目录可以是m路关联的,以使得多个存储器地址映射到m个目录条目的关联组。
6.如权利要求4所述的缓存一致性控制器,其中,所述控制电路被配置为:针对要新被缓存的存储器地址,检测目录条目是否可用于存储对关于所述一个或多个缓存存储器中哪些缓存存储器正缓存该存储器地址的指示。
7.如权利要求4所述的缓存一致性控制器,其中,所述控制电路被配置为使得当被映射到该存储器地址的m个目录条目的集合中的所有目录条目被占用时,所述控制电路被配置为选择所述m个目录条目的集合中的一个目录条目作为要被重写的目录条目和要被无效的相应缓存信息,所述控制电路被配置为根据所述一个或多个缓存存储器的组中哪个缓存存储器由该目录条目指示来从所述m个目录条目的集合中选择要被重写的目录条目。
8.如权利要求7所述的缓存一致性控制器,其中,针对仅由当前不服从缓存一致性控制的一个或多个缓存存储器占用的目录条目,所述控制电路被配置为将该目录视为未被占用的。
9.如权利要求1所述的缓存一致性控制器,其中,每个目录条目包括从相应缓存存储器地址导出的信息和针对缓存存储器组中的每个缓存存储器指示该缓存存储器当前是否正缓存该存储器地址的信息。
10.如权利要求9所述的缓存一致性控制器,其中,所述控制电路被配置为:响应于所述状态数据来对目录条目中的信息应用滤波器,该信息针对所述缓存存储器组中的每个缓存存储器指示该缓存存储器当前是否正在缓存该存储器地址,以便仅传递与当前服从缓存一致性控制的缓存存储器有关的那些指示。
11.如权利要求10所述的缓存一致性控制器,其中,所述指示针对所述缓存存储器组中的每个缓存存储器指示该缓存存储器当前是否正在缓存该存储器地址,该指示针对组中的每个缓存存储器包括相应的数据项。
12.如权利要求11所述的缓存一致性控制器,其中,所述滤波器可被配置为仅传递与当前服从缓存一致性控制的缓存存储器相对应的那些数据项。
13.如权利要求12所述的缓存一致性控制器,其中:
每个数据项可包括一个数据位;以及
所述滤波器可包括与所述缓存存储器组相对应的数据位与数据位集合的逻辑组合,所述数据位集合中的每个数据位指示相应缓存存储器当前是否服从缓存一致性控制。
14.一种缓存一致性控制器,包括:
用于存储目录的装置,该目录针对由一致缓存结构中可连接的一个或多个缓存存储器或一个或多个缓存存储器的组缓存的存储器地址指示缓存存储器中的哪些缓存存储器正缓存那些存储器地址;以及
用于检测与要被访问的存储器地址有关的目录条目的装置,以便在所述目录条目指示所述缓存存储器中的一个缓存存储器正缓存存储器地址的情况下,在所述缓存存储器中协调另一缓存存储器或一致代理对该存储器地址的访问;
用于响应于状态数据进行检测的装置,该状态数据指示所述组中的每个缓存存储器当前是否服从缓存一致性控制,以便在检测与所述要被访问的存储器地址有关的所述目录条目中考虑所述组中仅当前服从缓存一致性控制的那些缓存存储器。
15.一种缓存一致数据通信设备,包括如权利要求1所述的缓存一致性控制器。
16.一种存储器系统,包括:
如权利要求15所述的缓存一致数据通信设备;以及
一个或多个缓存存储器的组,每个缓存存储器被连接到所述缓存一致数据通信设备。
17.一种缓存一致性方法,包括:
存储目录,该目录针对由一致缓存结构中可连接的一个或多个缓存存储器或一个或多个缓存存储器的组缓存的存储器地址指示缓存存储器中的哪些缓存存储器正缓存那些存储器地址;以及
检测与要被访问的存储器地址有关的目录条目,以便在所述目录条目指示所述缓存存储器中的一个缓存存储器正缓存存储器地址的情况下,在所述缓存存储器中协调另一缓存存储器或一致代理对该存储器地址的访问;
检测步骤响应于状态数据,该状态数据指示所述组中的每个缓存存储器当前是否服从缓存一致性控制,以便在检测与所述要被访问的存储器地址有关的所述目录条目中考虑所述组中仅当前服从缓存一致性控制的那些缓存存储器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1509423.8A GB2539382B (en) | 2015-06-01 | 2015-06-01 | Cache coherency |
GB1509423.8 | 2015-06-01 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106227674A CN106227674A (zh) | 2016-12-14 |
CN106227674B true CN106227674B (zh) | 2022-07-22 |
Family
ID=53677552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610355195.0A Active CN106227674B (zh) | 2015-06-01 | 2016-05-25 | 缓存一致性控制器及方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10169236B2 (zh) |
CN (1) | CN106227674B (zh) |
GB (1) | GB2539382B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10579526B2 (en) * | 2017-02-08 | 2020-03-03 | Arm Limited | Responding to snoop requests |
US10621103B2 (en) * | 2017-12-05 | 2020-04-14 | Arm Limited | Apparatus and method for handling write operations |
US11163688B2 (en) * | 2019-09-24 | 2021-11-02 | Advanced Micro Devices, Inc. | System probe aware last level cache insertion bypassing |
US11226900B2 (en) * | 2020-01-29 | 2022-01-18 | Advanced Micro Devices, Inc. | Using a bloom filter to reduce the number of memory addressees tracked by a coherence directory |
CN112612726B (zh) * | 2020-12-08 | 2022-09-27 | 海光信息技术股份有限公司 | 基于缓存一致性的数据存储方法、装置、处理芯片及服务器 |
US20230325316A1 (en) * | 2022-04-11 | 2023-10-12 | Arteris, Inc. | System and method to enter and exit a cache coherent interconnect |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102346714A (zh) * | 2011-10-09 | 2012-02-08 | 西安交通大学 | 用于多核处理器的一致性维护装置及一致性交互方法 |
CN103858111A (zh) * | 2013-10-08 | 2014-06-11 | 华为技术有限公司 | 一种实现聚合虚拟化中内存共享的方法、设备和系统 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6546464B2 (en) * | 1999-01-08 | 2003-04-08 | Nortel Networks Limited | Method and apparatus for increasing data rates in a data network while maintaining system coherency |
US6584550B1 (en) * | 1999-11-29 | 2003-06-24 | Apple Computer, Inc. | System and method for updating a head entry from read-only to read-write and allowing a list to expand in a cache-coherence sharing list |
US6721852B2 (en) * | 2001-10-17 | 2004-04-13 | Sun Microsystems, Inc. | Computer system employing multiple board sets and coherence schemes |
US7296121B2 (en) * | 2002-11-04 | 2007-11-13 | Newisys, Inc. | Reducing probe traffic in multiprocessor systems |
US7240160B1 (en) * | 2004-06-30 | 2007-07-03 | Sun Microsystems, Inc. | Multiple-core processor with flexible cache directory scheme |
US7475195B2 (en) * | 2005-05-24 | 2009-01-06 | International Business Machines Corporation | Data processing system, cache system and method for actively scrubbing a domain indication |
US20100146209A1 (en) * | 2008-12-05 | 2010-06-10 | Intellectual Ventures Management, Llc | Method and apparatus for combining independent data caches |
US8271735B2 (en) * | 2009-01-13 | 2012-09-18 | Oracle America, Inc. | Cache-coherency protocol with held state |
US9009541B2 (en) * | 2012-08-20 | 2015-04-14 | Apple Inc. | Efficient trace capture buffer management |
US9304923B2 (en) * | 2013-03-12 | 2016-04-05 | Arm Limited | Data coherency management |
US9367348B2 (en) * | 2013-08-15 | 2016-06-14 | Globalfoundries Inc. | Protecting the footprint of memory transactions from victimization |
US9244845B2 (en) * | 2014-05-12 | 2016-01-26 | Netspeed Systems | System and method for improving snoop performance |
-
2015
- 2015-06-01 GB GB1509423.8A patent/GB2539382B/en active Active
-
2016
- 2016-04-20 US US15/133,341 patent/US10169236B2/en active Active
- 2016-05-25 CN CN201610355195.0A patent/CN106227674B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102346714A (zh) * | 2011-10-09 | 2012-02-08 | 西安交通大学 | 用于多核处理器的一致性维护装置及一致性交互方法 |
CN103858111A (zh) * | 2013-10-08 | 2014-06-11 | 华为技术有限公司 | 一种实现聚合虚拟化中内存共享的方法、设备和系统 |
Also Published As
Publication number | Publication date |
---|---|
GB2539382A (en) | 2016-12-21 |
US10169236B2 (en) | 2019-01-01 |
GB201509423D0 (en) | 2015-07-15 |
CN106227674A (zh) | 2016-12-14 |
US20160350220A1 (en) | 2016-12-01 |
GB2539382B (en) | 2017-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106227674B (zh) | 缓存一致性控制器及方法 | |
TWI391821B (zh) | 在互連結構上發佈請求而無參照基於標籤快取狀態的低階快取之處理單元及資料處理系統與方法 | |
US8495308B2 (en) | Processor, data processing system and method supporting a shared global coherency state | |
US8806148B2 (en) | Forward progress mechanism for stores in the presence of load contention in a system favoring loads by state alteration | |
US7500065B2 (en) | Data processing system and method for efficient L3 cache directory management | |
US6088769A (en) | Multiprocessor cache coherence directed by combined local and global tables | |
US7467323B2 (en) | Data processing system and method for efficient storage of metadata in a system memory | |
US20140208038A1 (en) | Sectored cache replacement algorithm for reducing memory writebacks | |
US9208092B2 (en) | Coherent attached processor proxy having hybrid directory | |
US9977742B2 (en) | Cache coherency | |
JP2007257631A (ja) | 動作のスヌーピングに応答して無効コヒーレンシー状態を更新するデータ処理システム、キャッシュ・システム、および方法 | |
US10579527B2 (en) | Remote node broadcast of requests in a multinode data processing system | |
US20060080506A1 (en) | Data replication in multiprocessor NUCA systems to reduce horizontal cache thrashing | |
JP5004571B2 (ja) | 同報通信範囲を示す無効な整合状態を正確に形成するためのデータ処理システム、キャッシュ・システム、および方法 | |
KR20210041485A (ko) | 데이터 신호 경로 및 태그 신호 경로를 갖는 메모리 인터페이스 | |
US7669013B2 (en) | Directory for multi-node coherent bus | |
US7725660B2 (en) | Directory for multi-node coherent bus | |
US10956070B2 (en) | Zeroing a memory block without processor caching | |
US10713169B2 (en) | Remote node broadcast of requests in a multinode data processing system | |
US10387310B2 (en) | Remote node broadcast of requests in a multinode data processing system | |
US10949346B2 (en) | Data flush of a persistent memory cache or buffer | |
CN114787784A (zh) | 扩展对某些请求的一致性保护的高速缓存窥探模式 | |
US20230100746A1 (en) | Multi-level partitioned snoop filter | |
US11748280B2 (en) | Broadcast scope selection in a data processing system utilizing a memory topology data structure |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20180528 Address after: cambridge Applicant after: ARM Ltd. Applicant after: ARM TECHNOLOGY (CHINA) Co.,Ltd. Address before: cambridge Applicant before: ARM Ltd. |
|
TA01 | Transfer of patent application right | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |