CN111684425A - 适应于大高速缓存大小的基于区域的目录方案 - Google Patents
适应于大高速缓存大小的基于区域的目录方案 Download PDFInfo
- Publication number
- CN111684425A CN111684425A CN201880088582.XA CN201880088582A CN111684425A CN 111684425 A CN111684425 A CN 111684425A CN 201880088582 A CN201880088582 A CN 201880088582A CN 111684425 A CN111684425 A CN 111684425A
- Authority
- CN
- China
- Prior art keywords
- cache
- region
- entry
- array
- response
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 45
- 230000015654 memory Effects 0.000 claims description 90
- 230000004044 response Effects 0.000 claims description 42
- 239000000523 sample Substances 0.000 claims description 34
- 230000008685 targeting Effects 0.000 claims description 9
- 230000008859 change Effects 0.000 claims description 4
- 238000012544 monitoring process Methods 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 21
- 230000001427 coherent effect Effects 0.000 description 12
- 239000004744 fabric Substances 0.000 description 10
- 238000003491 array Methods 0.000 description 9
- 238000005192 partition Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
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/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- 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/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- 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/60—Details of cache memory
- G06F2212/604—Details relating to cache allocation
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
公开了用于维持基于区域的高速缓存目录的系统、设备和方法。一种系统包括多个处理节点,其中每个处理节点包括高速缓存子系统。所述系统还包括高速缓存目录,以帮助管理所述系统的不同高速缓存子系统之间的高速缓存一致性。为了减少所述高速缓存目录中条目的数量,所述高速缓存目录基于区域而非基于高速缓存线来跟踪一致性,其中区域包括多条高速缓存线。因此,所述系统包括基于区域的高速缓存目录以跟踪具有高速缓存在所述系统中的任何高速缓存子系统中的至少一条高速缓存线的区域。所述高速缓存目录在每个条目中包括引用计数以跟踪每区域被高速缓存的高速缓存线的总数。如果给定条目的引用计数变为零,则所述高速缓存目录回收所述给定条目。
Description
背景技术
相关技术描述
计算机系统使用通常由廉价且高密度的动态随机存取存储器(DRAM)芯片形成的主存储器。然而,DRAM芯片承受相对长的访问时间。为了提高性能,数据处理器通常包括至少一个称为高速缓存的本地高速存储器。在多核数据处理器中,每个数据处理器核心可具有其自己的专用第一层级(L1)高速缓存,而其他高速缓存(例如,第二层级(L2)高速缓存、第三层级(L3)高速缓存)则由数据处理器核心共享。
计算系统中的高速缓存子系统包括被配置为存储数据块的高速的高速缓存存储器。如本文所使用的,“块”是存储在连续存储器位置中的一组字节,所述一组字节出于一致性目的而被视为一个单元。如本文所使用的,术语“高速缓存块”、“块”、“高速缓存线”和“线”中的每一者是可互换的。在一些实施方案中,块也可以是高速缓存中的分配和解除分配的单元。块中的字节数根据设计选择而变化,并且可具有任何大小。另外,术语“高速缓存标签”、“高速缓存线标签”和“高速缓存块标签”中的每一者是可互换的。
在多节点计算机系统中,必须采取特殊的预防措施来维持不同处理节点正在使用的数据的一致性。例如,如果处理器尝试访问某个存储器地址处的数据,则它必须首先确定存储器是否存储在另一个高速缓存中并且已被修改。为了实现此高速缓存一致性协议,高速缓存通常包含多个状态位以指示高速缓存线的状态,从而维持整个系统的数据一致性。一种常见的一致性协议称为“MOESI”协议。根据MOESI协议,每条高速缓存线包括用于指示所述线处于哪个MOESI状态的状态位,所述状态位包括指示以下各项的位:高速缓存线已被修改(M),高速缓存线是独占的(E)或共享的(S),或者高速缓存线是无效的(I)。占用(O)状态指示:所述线在一个高速缓存中被修改,在其他高速缓存中可能存在共享副本,以及存储器中的数据已过时。
高速缓存目录是高性能可扩展系统中的关键构建块。高速缓存目录用于跟踪系统当前正在使用的高速缓存线。高速缓存目录通过仅在需要时执行存储器请求或探针请求而既提高存储器带宽又减小探针带宽。逻辑上,高速缓存目录驻留在强制执行高速缓存一致性协议的高速缓存线的主节点处。高速缓存目录的工作原理是包容性(即,存在于中央处理单元(CPU)高速缓存中的线必须存在于高速缓存目录中)。在基于高速缓存线的目录方案中,单独跟踪每条高速缓存线。因此,高速缓存目录的大小随计算系统中所有CPU高速缓存子系统的总容量线性增大。随时间推移,CPU高速缓存大小显著增长。由于这种增长,维持基于线的高速缓存目录变得非常困难。
附图说明
通过结合附图参考以下描述,可更好地理解本文描述的方法和机制的优点,在附图中:
图1是计算系统的一个实施方案的框图。
图2是核心复合体的一个实施方案的框图。
图3是多CPU系统的一个实施方案的框图。
图4是高速缓存目录的一个实施方案的框图。
图5是高速缓存目录的另一个实施方案的框图。
图6是高速缓存目录的另一个实施方案的框图。
图7是改换高速缓存目录条目中的集群有效字段的用途的一个实施方案的图。
图8是示出用于维持基于区域的高速缓存目录的方法的一个实施方案的一般化流程图。
图9是示出一致性从装置处理来自CPU的无效化指示的方法的一个实施方案的一般化流程图。
图10是示出高速缓存目录跟踪对存储器的第一区域的访问的方法的一个实施方案的一般化流程图。
图11是示出用于在不同粒度层级维持高速缓存目录的阵列的方法的一个实施方案的一般化流程图。
图12是示出用于操作多阵列高速缓存目录的方法的一个实施方案的一般化流程图。
图13是示出高速缓存目录维持数据结构的方法的一个实施方案的一般化流程图,所述数据结构具有用于最近访问的私有区域的条目。
图14是示出用于在不同粒度层级维持高速缓存目录的阵列的方法的一个实施方案的一般化流程图。
具体实施方式
在以下描述中,阐述了众多特定细节以提供对本文呈现的方法和机制的透彻理解。然而,本领域普通技术人员应认识到,可在没有这些特定细节的情况下实践各种实施方案。在一些情况下,并未详细示出众所周知的结构、部件、信号、计算机程序指令和技术,以避免混淆本文描述的方法。应理解,为了使说明清楚简单,附图中所示的元件未必按比例绘制。例如,一些元件的尺寸可相对于其他元件放大。
本文公开用于实现适应于大高速缓存大小的基于区域的高速缓存目录方案的各种系统、设备、方法和计算机可读介质。在一个实施方案中,一种系统包括至少多个处理节点、存储器和高速缓存目录。每个处理节点包括一个或多个处理器和一个高速缓存子系统。在一个实施方案中,高速缓存目录被配置为基于区域跟踪存储器的部分,其中每个区域包括多条高速缓存线。高速缓存目录维持用于存储器的具有高速缓存在系统的任何高速缓存子系统中的至少一条高速缓存线的每个区域的条目。高速缓存目录还维持每个条目的引用计数,其中引用计数是所述区域的高速缓存在系统的所有高速缓存子系统中的高速缓存线数的数量总和。高速缓存目响应于给定条目的引用计数达到零而录回收给定条目。
在一个实施方案中,高速缓存目录响应于接收第一区域的第一高速缓存线正由系统的第一高速缓存子系统高速缓存的指示而为第一区域分配第一条目。高速缓存目录还将新分配的第一条目的引用计数初始化为一。高速缓存目录响应于接收第一区域的第二高速缓存线正由系统的第二高速缓存子系统高速缓存的指示而使第一条目的引用计数递增到二,其中第二高速缓存线不一定在物理上不同于第一高速缓存线。针对第一区域的由高速缓存子系统高速缓存的每条后续高速缓存线,高速缓存目录使引用计数递增。
在一个实施方案中,高速缓存目录跟踪区域是私有的还是共享的。例如,高速缓存目录存储第一条目以跟踪第一区域。当第一区域是私有的时,第一条目的第一字段被解释为具有第一含义。当第一区域是共享的时,第一条目的第一字段被解释为具有不同于第一含义的第二含义。在一个实施方案中,当第一区域是私有的时,第一字段被解释为CPU有效字段,并且当第一区域是共享的时,第一字段被解释为集群有效字段,其中集群是指一组特定CPU。
在一个实施方案中,高速缓存目录维持第一阵列来以第一粒度跟踪存储器的部分。高速缓存目录还维持第二阵列来以第二粒度跟踪存储器的部分,其中第二粒度是比第一粒度更精细的粒度。在此实施方案中,高速缓存目录响应于接收给定存储器请求而并行地执行对第一阵列和第二阵列的查找。高速缓存目录响应于查找在第一阵列和第二阵列两者中命中而仅基于从第二阵列的匹配条目中提取的数据来生成一个或多个探针。
在一个实施方案中,高速缓存目录监视第一阵列中的条目的引用计数字段。在一个实施方案中,高速缓存目录响应于检测到给定区域已经从私有转变为共享而开始以更精细粒跟度踪所述区域。在此实施方案中,高速缓存目录响应于在检测到给定区域已从私有转变为共享之后接收靶定所述区域的存储器请求而在第二阵列中创建条目。在一个实施方案中,高速缓存目录响应于检测到给定区域的引用计数已经超过可编程阈值而开始基于更精细粒度来跟踪给定区域。在此实施方案中,高速缓存目录响应于在检测到引用计数已经超过阈值之后接收靶定给定区域的存储器请求而在第二阵列中创建条目。在一个实施方案中,第一阵列是基于区域的阵列,并且第二阵列是基于线的阵列。
现在参考图1,示出计算系统100的一个实施方案的框图。在一个实施方案中,计算系统100包括至少核心复合体105A-105N、输入/输出(I/O)接口120、总线125、一个或多个存储器控制器130以及网络接口135。在其他实施方案中,计算系统100可包括其他部件并且/或者计算系统100可以不同方式来布置。在一个实施方案中,每个核心复合体105A-105N包括一个或多个通用处理器,诸如中央处理单元(CPU)。应注意,“核心复合体”在本文中也可称为“处理节点”或“CPU”。在一些实施方案中,一个或多个核心复合体105A-105N可包括具有高度并行架构的数据并行处理器。数据并行处理器的实例包括图形处理单元(GPU)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等。核心复合体105A-105N内的每个处理器核心包括具有一个或多个高速缓存层级的高速缓存子系统。在一个实施方案中,每个核心复合体105A-105N包括在多个处理器核心之间共享的高速缓存(例如,第三层级(L3)高速缓存)。
一个或多个存储器控制器130表示可由核心复合体105A-105N访问的任何数量和类型的存储器控制器。一个或多个存储器控制器130耦接到任何数量和类型的存储器装置(未示出)。例如,耦接到一个或多个存储器控制器130的一个或多个存储器装置中的存储器的类型可包括动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、NAND闪存存储器、NOR闪存存储器、铁电随机存取存储器(FeRAM)等。I/O接口120表示任何数量和类型的I/O接口(例如,外围部件互连(PCI)总线、PCI扩展(PCI-X)、PCIE(PCI Express)总线、吉比特以太网(GBE)总线、通用串行总线(USB))。各种类型的外围装置可耦接到I/O接口120。此类外围装置包括(但不限于)显示器、键盘、鼠标、打印机、扫描仪、操纵杆或其他类型的游戏控制器、媒体记录装置、外部存储装置、网络接口卡等。
在各种实施方案中,计算系统100可以是服务器、计算机、膝上型电脑、移动装置、游戏控制台、流式传输装置、可穿戴装置或各种其他类型的计算系统或装置中的任一种。应注意,计算系统100的部件的数量可随实施方案的不同而不同。可存在与图1所示数量相比更多或更少的每种部件。还应注意,计算系统100可包括图1未示出的其他部件。另外,在其他实施方案中,计算系统100可以与图1所示不同的方式进行结构化。
现在转到图2,示出核心复合体200的一个实施方案的框图。在一个实施方案中,核心复合体200包括四个处理器核心210A-210D。在其他实施方案中,核心复合体200可包括其他数量的处理器核心。应注意,“核心复合体”在本文中也可称为“处理节点”或“CPU”。在一个实施方案中,核心复合体200的部件包括在(图1的)核心复合体105A-105N内。
每个处理器核心210A-210D包括用于存储从存储器子系统(未示出)中检索的数据和指令的高速缓存子系统。例如,在一个实施方案中,每个核心210A-210D包括对应的第一层级(L1)高速缓存215A-215D。每个处理器核心210A-210D可包括或耦接到对应的第二层级(L2)高速缓存220A-220D。另外,在一个实施方案中,核心复合体200包括由处理器核心210A-210D共享的第三层级(L3)高速缓存230。L3高速缓存230耦接到一致性主装置以访问织构和存储器子系统。应注意,在其他实施方案中,核心复合体200可包括具有其他数量的高速缓存和/或具有不同高速缓存层级的其他配置的其他类型的高速缓存子系统。
现在参考图3,示出多CPU系统300的一个实施方案的框图。在一个实施方案中,系统包括多个CPU 305A-305N。每系统CPU的数量可随实施方案的不同而不同。每个CPU 305A-305N可分别包括任何数量的核心308A-308N,其中核心的数量根据实施方案变化。每个CPU305A-305N还包括对应的高速缓存子系统310A-310N。每个高速缓存子系统310A-310N可包括任何数量的层级的高速缓存和任何类型的高速缓存层次结构。
在一个实施方案中,每个CPU 305A-305N连接到对应的一致性主装置315A-315N。如本文所使用的,“一致性主装置”被限定为处理通过互连结构(例如,总线/织构318)流动的业务并且管理所连接CPU的一致性的代理。为了管理一致性,一致性主装置接收并处理一致性相关的消息和探针,并且一致性主装置生成一致性相关的请求和探针。应注意,“一致性主装置”在本文中也可称为“一致性主单元”。
在一个实施方案中,每个CPU 305A-305N通过对应的一致性主装置315A-315N和总线/织构318耦接到一对一致性从装置。例如,CPU 305A通过一致性主装置315A和总线/织构318耦接到一致性从装置320A-320B。一致性从装置(CS)320A耦接到存储器控制器(MC)330A,并且一致性从装置320B耦接到存储器控制器330B。一致性从装置320A耦接到高速缓存目录(CD)325A,其中高速缓存目录325A包括用于可通过存储器控制器330A访问的存储器的具有高速缓存在系统300中的高速缓存线的存储器区域的条目。应注意,高速缓存目录325A以及每个其他高速缓存目录也可称为“探针过滤器”。类似地,一致性从装置320B耦接到高速缓存目录325B,其中高速缓存目录325B包括用于可通过存储器控制器330B访问的存储器的具有高速缓存在系统300中的高速缓存线的存储器区域的条目。应注意,每CPU具有两个存储器控制器的实例仅指示一个实施方案。应理解,在其他实施方案中,每个CPU305A-305N可连接到除两个之外的其他数量的存储器控制器。
在与CPU 305A配置类似的配置中,CPU 305B通过一致性主装置315B和总线/织构318耦接到一致性从装置335A-335B。一致性从装置335A通过存储器控制器350A耦接到存储器,并且一致性从装置335A还耦接到高速缓存目录345A以管理对应于可通过存储器控制器350A访问的存储器的高速缓存线的一致性。一致性从装置335B耦接到高速缓存目录345B,并且一致性从装置335B通过存储器控制器365B耦接到存储器。例如,CPU 305N通过一致性主装置315N和总线/织构318耦接到一致性从装置355A-355B。一致性从装置355A-355B分别耦接到高速缓存目录360A-360B,并且一致性从装置355A-355B分别通过存储器控制器365A-365B耦接到存储器。如本文所使用的,“一致性从装置”被限定为通过处理靶定对应存储器控制器的所接收请求和探针来管理一致性的代理。应注意,“一致性从装置”在本文中也可称为“一致性从单元”。另外,如本文所使用的,“探针”被限定为消息,所述消息从一致性点传递到计算机系统中的一个或多个高速缓存,以确定高速缓存是否具有数据块的副本并且任选地指示高速缓存应使数据块处于的状态。
当一致性从装置接收靶定其对应存储器控制器的存储器请求时,一致性从装置执行对其对应高速缓存目录的查找,以确定所述请求是否靶定具有高速缓存在任何高速缓存子系统中的至少一条高速缓存线的区域。在一个实施方案中,系统300中的每个高速缓存目录跟踪存储器的区域,其中区域包括多条高速缓存线。所跟踪区域的大小可随实施方案的不同而不同。通过以区域的粒度而不是以高速缓存线的更精细粒度进行跟踪,可减小每个高速缓存目录的大小。应注意,“区域”在本文中也可称为“页面”。当一致性从装置接收到请求时,一致性从装置确定所述请求所靶定的区域。然后,针对此区域执行对高速缓存目录的查找。如果查找导致命中,则一致性从装置向命中条目中所标识的一个或多个CPU发送探针。一致性从装置所生成的探针的类型取决于命中条目所指定的一致性状态。
应注意,尽管图3中未示出,但在其他实施方案中,可存在从总线/织构318到未示出以避免混淆附图的其他部件的其他连接。例如,在另一个实施方案中,总线/织构318包括与一个或多个I/O接口和一个或多个I/O装置的连接。
现在转到图4,示出高速缓存目录400的一个实施方案的框图。在一个实施方案中,高速缓存目录400包括控制单元405和阵列410。阵列410可包括任何数量的条目,其中条目的数量根据实施方案变化。在一个实施方案中,阵列410的每个条目包括状态字段415、扇区有效字段420、集群有效字段425、引用计数字段430以及标签字段435。在其他实施方案中,阵列410的条目可包括其他字段并且/或者可以其他合适的方式来布置。
状态字段415包括指定区域的聚合状态的状态位。聚合状态反映此特定区域的最具限制性的高速缓存线状态。例如,即使整个给定区域中只有一条高速缓存线是脏的,给定区域的状态也存储为“脏”。此外,即使整个给定区域中只有一条高速缓存线是共享的,给定区域的状态也存储为“共享”。
扇区有效字段420存储与区域内的线的子组或扇区相对应的位向量,以提供精细粒度的跟踪。通过跟踪区域内的线的子组,可减少在展开区域无效化探针时生成的所不想要的规则一致性探针和单独线探针的数量。如本文中所使用的,“区域无效化探针”被限定为由高速缓存目录响应于区域条目从高速缓存目录中被逐出而生成的探针。当一致性主装置接收区域无效化探针时,一致性主装置使区域的由本地CPU高速缓存的每条高速缓存线无效。另外,区域无效化探针中包括跟踪器和扇区有效位,以减轻CPU高速缓存处的探针扩增。
子组的组织和扇区有效字段420中的位数可根据实施方案变化。在一个实施方案中,在特定区域条目内使用扇区有效字段420跟踪两条线。在另一个实施方案中,可在每个区域条目内跟踪其他数量的线。在此实施方案中,扇区有效字段420可用于指示正在区域内单独跟踪的分区的数量。另外,可使用存储在扇区有效字段420中的偏移量来标识分区。每个偏移量标识给定分区在给定区域内的位置。扇区有效字段420或条目的另一个字段也可指示给定区域内的每个分区的单独所有者和单独状态。
集群有效字段425包括用于跟踪区域跨各种CPU高速缓存集群的存在的位向量。例如,在一个实施方案中,CPU一起被分组成CPU集群。存储在集群有效字段425中的位向量用于减少规则一致性探针和区域无效化探针的探针目的地。
引用计数字段430用于跟踪区域的高速缓存在系统中某处的高速缓存线的数量。在第一次访问区域时,就在表410中安设条目,并将引用计数字段430设置为一。随时间推移,每次高速缓存访问来自此区域的高速缓存线时,引用计数就递增。当来自此区域的高速缓存线由高速缓存逐出时,引用计数递减。最终,如果引用计数达到零,则将条目标记为无效,并且可将条目重新用于其他区域。通过利用引用计数字段430,可减小区域无效化探针的发生率。当条目与没有活跃订户的区域相关联时,引用计数字段430允许回收目录条目。在一个实施方案中,一旦引用计数跨越阈值,引用计数字段430就可饱和。阈值可设置为一定值,所述值大到足以处理私有访问模式,同时在处理通信数据的广泛共享的访问模式时牺牲一些准确性。标签字段435包括用于标识与特定区域相关联的条目的标签位。
现在参考图5,示出高速缓存目录500的另一个实施方案的框图。在一个实施方案中,高速缓存目录500包括至少控制单元505,所述控制单元505耦接到基于区域的阵列510和辅助的基于线的阵列515。基于区域的阵列510包括用于跟踪基于区域高速缓存的数据的条目。在一个实施方案中,基于区域的阵列510的每个条目包括对针对所述区域的由计算系统(例如,图3的系统300)的高速缓存子系统高速缓存的高速缓存线的访问次数进行计数的引用计数。在一个实施方案中,当给定区域的引用计数达到阈值时,将开始由辅助的基于线的阵列515基于线来跟踪给定区域。
因此,在一个实施方案中,当针对给定区域高速缓存的高速缓存线的数量达到阈值时,辅助的基于线的阵列515将开始跟踪对给定区域的单独线的访问。每次从给定区域访问新的高速缓存线时,都在辅助的基于线的阵列515中为高速缓存线创建新条目。在一个实施方案中,并行地执行对基于区域的阵列510和基于线的阵列515的查找。
在一个实施方案中,仅所具有的引用计数大于阈值的共享区域将由辅助的基于线的阵列515基于高速缓存线进行跟踪。共享区域是指具有存储在至少两个不同CPU的高速缓存子系统中的高速缓存线的区域。私有区域是指具有仅由单个CPU高速缓存的高速缓存线的区域。因此,在一个实施方案中,对于所具有的引用计数大于阈值的共享区域,在基于线的阵列515中将存在一个或多个条目。在此实施方案中,对于私有区域,在基于线的阵列515中将没有任何条目。
现在转到图6,示出高速缓存目录600的另一个实施方案的框图。在一个实施方案中,高速缓存目录600包括控制单元605、基于区域的阵列610、辅助的基于线的阵列615以及用于高速缓存N个最近访问的私有页面的结构620。应注意,N是可根据实施方案变化的正整数。
在一个实施方案中,结构620包括用于暂时高速缓存最后N个访问的私有页面的条目的存储位置。当控制单元605接收与结构620中的条目匹配的存储器请求或无效化请求时,控制单元605被配置为使引用计数递增或递减、在阵列610和615外部修改集群有效字段和/或扇区有效字段等。因此,不必每次访问都对阵列610和615中的条目进行读取和写入,对最近访问的私有页面620的访问可绕过对阵列610和615的访问。使用结构620可帮助加速针对这些私有页面对高速缓存目录600进行的更新。
在一个实施方案中,不会修改扇区有效位或集群有效位的I/O事务可受益于用于高速缓存N个最近访问的私有页面的结构620。通常,I/O事务将仅修改给定条目的引用计数,并且不是每次都对阵列610或615执行读取和写入,而是可更新结构620。
因此,结构620实现对高速缓存目录600的高效访问。在一个实施方案中,传入请求在执行对阵列610和615的查找之前执行对结构620的查找。在一个实施方案中,在传入请求被分配在一致性从装置(例如,图3的一致性从装置320A)的输入队列中时,控制单元605确定结构620中是存在命中还是未命中。稍后,当请求到达队列的头部时,控制单元605已经知道请求是否是结构620中的命中。如果请求是结构620中的命中,则可避免对阵列610和615的查找。
现在参考图7,示出改换高速缓存目录条目中的集群有效字段的用途的一个实施方案的图。在一个实施方案中,条目705A包括与正由高速缓存目录跟踪的共享区域相关联的各种字段。状态字段710A存储共享编码715A以指示对应区域被共享。如本文所使用的,“共享”区域是指具有由多个不同CPU集群高速缓存的高速缓存线的区域。当状态字段710A存储共享编码715A时,集群有效字段720A存储用于指示哪些CPU集群725A-725N正在高速缓存对应区域的高速缓存线的位向量。在此实例中,集群有效字段720A将CPU一起分组成集群。在一个实施方案中,如果集群位725A-725N设置为一,则这指示CPU集群存储来自区域的至少一条高速缓存线。在一个实施方案中,如果集群位725A-725N设置为零,则这指示集群中的CPU都不存储来自区域的高速缓存线。条目705A还可包括未示出以避免混淆附图的任何数量的其他字段。
如果集群有效字段720A即使针对私有区域也保持不变,则需要向集群中被标识为正在高速缓存那个区域的至少一条高速缓存线的所有CPU发送探针。相反,在一个实施方案中,如果区域是私有的(即,仅由单个集群访问),则将集群有效字段的用途改换为所有者有效字段或CPU有效字段。这允许高速缓存目录针对私有区域探测一个特定CPU。
因此,如果正由条目705A跟踪的区域从作为共享区域转变为作为私有区域,则与这个私有区域的条目705A相比,条目705B表现出字段的变化。如条目705B所示,状态710B现在包括私有715B编码以表示区域的私有状态。由于状态710B现在已改为私有715B,因此先前的集群有效字段720A现在变为CPU有效字段720B。存储在CPU有效字段720B中的位向量的每个位735A-735N表示原始集群中的单个CPU。如果这个集群中的给定CPU高速缓存对应区域的至少一条高速缓存线,则将特定CPU 735A-735N位设置为一。否则,如果集群中的给定CPU没有高速缓存来自区域的任何高速缓存线,则将对应CPU 735A-735N位设置为零。
通过将集群有效字段720A改为CPU有效字段720B,可发出仅靶向具有来自区域的高速缓存线的CPU的定向探针。这有助于减少由高速缓存目录生成的不必要探针的数量。在一个实施方案中,如果从不同集群接收到靶定私有区域(对应于条目705B)的请求,则这个私有区域变为共享区域。当这种情况发生时,集群有效字段720A恢复到其正常操作,因为区域现在是共享的。
现在转到图8,示出用于维持基于区域的高速缓存目录的方法800的一个实施方案。出于讨论目的,按顺序次序示出此实施方案中的步骤和图9至图13的那些步骤。然而,应注意,在所描述方法的各种实施方案中,所描述元素中的一个或多个同时地执行,以与所示不同的次序执行,或者完全省略掉。也可根据需要执行其他附加元素。本文描述的各种系统或设备中的任一者都被配置为实现方法800。
高速缓存目录跟踪存储器的具有高速缓存在多CPU系统的任何高速缓存子系统中的至少一条高速缓存线的区域,其中每个区域包括多条高速缓存线(框805)。高速缓存目录维持用于存储器的具有高速缓存在系统的任何高速缓存子系统中的至少一条高速缓存线的每个区域的条目(框810)。高速缓存目录维持高速缓存目录的每个条目的引用计数,其中引用计数是所述区域的高速缓存在系统的所有高速缓存子系统中的高速缓存线数的数量总和(框815)。响应于接收靶定给定区域内的高速缓存线的存储器请求,高速缓存目录向具有给定区域的任何高速缓存线的每个CPU发送探针(框820)。响应于对应区域的高速缓存线正由CPU高速缓存,高速缓存目录使给定条目的引用计数递增(框825)。响应于对应区域的高速缓存线从CPU的高速缓存子系统中被逐出,高速缓存目录使给定条目的引用计数递减(框830)。在框830之后,方法800结束。
现在参考图9,示出一致性从装置处理来自CPU的无效化指示的方法900的一个实施方案。一致性从装置从给定CPU接收指示给定CPU不再高速缓存特定高速缓存线的无效化指示(框905)。响应于接收无效化指示,一致性从装置确定特定高速缓存线的区域(框910)。接下来,一致性从装置定位所标识区域的高速缓存目录条目(框915)。
然后,一致性从装置使所标识区域的所定位高速缓存目录条目中的引用计数递减(框920)。如果引用计数现在等于零(条件框925,“是”分支),则一致性从装置使所述条目无效(框930)。现在,所述条目可重新用于在接收到靶定没有高速缓存目录条目的区域的存储器请求时分配新条目。如果引用计数现在仍大于零(条件框925,“否”分支),则一致性从装置维持所述条目的有效状态(框935)。在框930和935之后,方法900结束。
现在转向图10,示出高速缓存目录跟踪对存储器的第一区域的访问的方法1000的一个实施方案。高速缓存目录接收对存储器的第一区域内的第一高速缓存线的第一存储器请求(框1005)。响应于确定第一区域在高速缓存目录中没有条目,在高速缓存目录中为第一区域分配新条目,并且将新条目的引用计数初始化为一(框1010)。如果高速缓存目录已满,则高速缓存目录逐出现有条目以分配新条目。高速缓存目录可利用任何合适的逐出算法来确定逐出哪个条目。接下来,高速缓存目录接收对存储器的第一区域内的第二高速缓存线的第二存储器请求,其中第二高速缓存线不一定在物理上不同于第一高速缓存线(框1015)。响应于接收对存储器的第一区域的第二存储器请求,使与存储器的第一区域相对应的条目的引用计数递增到二(框1020)。在框1020之后,方法1000结束。应注意,与存储器的第一区域相对应的条目的引用计数针对对第一区域内的任何高速缓存线的每个后续存储器请求而递增。同样,每次来自第一区域的高速缓存线从高速缓存子系统中被逐出时,引用计数都递减。
现在参考图11,示出用于在不同粒度层级维持高速缓存目录的阵列的方法1100的一个实施方案。高速缓存目录在第一阵列中维持条目来以第一粒度跟踪存储器的地址范围(框1105)。在一个实施方案中,第一粒度是存储器的页面。在一个实施方案中,页面为4千字节(KB)。在其他实施方案中,第一粒度可对应于其他地址范围大小。
高速缓存目录维持第一阵列中的每个条目的引用计数,以跟踪所述区域的高速缓存在系统中某处的高速缓存线数的数量(框1110)。如果给定条目的引用计数超过可编程阈值(条件框1115,“是”分支),则高速缓存目录开始以第二粒度跟踪对应地址范围,其中第二粒度是比第一粒度更精细的粒度。(框1120)。在一个实施方案中,第二粒度对应于高速缓存线。在一个实施方案中,高速缓存线包括64个字节。在其他实施方案中,可利用其他高速缓存线大小。如果给定条目的引用计数小于或等于可编程阈值(条件框1115,“否”分支),则高速缓存目录继续以第一粒度跟踪对应地址范围(框1125)。在框1125之后,方法1100返回到框1110。
针对高速缓存在系统中的来自对应地址范围的每个新高速缓存线,高速缓存目录在第二阵列中分配新条目来以第二粒度跟踪所述区域的这个部分(框1130)。如果高速缓存目录已满,则高速缓存目录从第二阵列中逐出条目以分配新条目。高速缓存目录可利用任何合适的逐出算法来确定逐出哪个条目。在框1130之后,方法1100返回到框1110。
现在转到图12,示出用于操作多阵列高速缓存目录的方法1200的一个实施方案。在多CPU系统的多阵列高速缓存目录处接收存储器请求(框1205)。高速缓存目录针对存储器请求执行对第一阵列和第二阵列的并行查找(框1210)。在一个实施方案中,第一阵列以第一粒度跟踪地址范围,并且第二阵列以第二粒度跟踪地址范围,其中第二粒度是比第一粒度更精细的粒度。如果查找导致对第一阵列和第二阵列两者的命中(条件框1215,“是”分支),则高速缓存目录利用来自第二阵列的匹配条目来生成探针(框1220)。如果查找导致对仅第一阵列的命中(条件框1225,“是”分支),则高速缓存目录利用来自第一阵列的匹配条目来生成探针(框1230)。如果查找导致对第一阵列和第二阵列两者的未命中(条件框1225,“否”分支),则高速缓存目录在第一阵列中以第一粒度为存储器请求的地址范围分配新条目(框1235)。如果第一阵列已满,则高速缓存目录可从第一阵列中逐出现有条目。高速缓存目录可利用任何合适的技术来确定逐出哪个现有条目。如果高速缓存目录从第一阵列中逐出现有条目,则高速缓存目录向具有对应地址范围的高速缓存线的一个或多个CPU发送无效化探针。在框1220、1230和1235之后,方法1200结束。
现在参考图13,示出高速缓存目录维持数据结构的方法1300的一个实施方案,所述数据结构具有用于最近访问的私有区域的条目。高速缓存目录维持数据结构以高速缓存用于最后N个访问的私有区域的条目(框1305)。N的值可根据实施方案变化。高速缓存目录还维持一个或多个阵列,所述一个或多个阵列具有用于跟踪具有高速缓存在多CPU系统的任何高速缓存子系统中的高速缓存线的区域的条目(框1310)。
接下来,在高速缓存目录处接收存储器请求(框1315)。响应于接收存储器请求,高速缓存目录执行对具有用于最后N个访问的私有区域的条目的数据结构的查找(框1320)。如果查找导致命中(条件框1325,“是”分支),则高速缓存目录利用匹配条目来生成用于一个或多个高速缓存子系统的探针(框1330)。此外,高速缓存目录取消对一个或多个主高速缓存目录阵列的查找(框1335)。如果查找导致未命中(条件框1325,“否”分支),则高速缓存目录针对所述请求执行对一个或多个主高速缓存目录阵列的一次或多次查找(框1340)。高速缓存目录可利用任何适当的处理规程来处理对主高速缓存目录阵列的查找。在框1335和1340之后,方法1300结束。
现在参考图14,示出用于在不同粒度层级维持高速缓存目录的阵列的方法1400的一个实施方案。高速缓存目录在第一阵列中维持条目来以第一粒度跟踪存储器的私有区域的地址范围(框1405)。在一个实施方案中,第一粒度是存储器的页面。在一个实施方案中,页面为4KB。在其他实施方案中,第一粒度可对应于其他地址范围大小。
高速缓存目录确定私有区域中的任一个是否已转变为共享状态(条件框1410)。如果私有区域中的任一个已转变为共享状态(条件框1410,“是”分支),则高速缓存目录开始以第二粒度跟踪对应地址范围,其中第二粒度是比第一粒度更精细的粒度。(框1415)。在一个实施方案中,第二粒度对应于高速缓存线。在一个实施方案中,高速缓存线包括64个字节。在其他实施方案中,可利用其他高速缓存线大小。如果私有区域中的任一个未转变为共享状态(条件框1410,“否”分支),则高速缓存目录继续以第一粒度跟踪对应地址范围(框1420)。在框1420之后,方法1400返回到框1410。
针对高速缓存在系统中的来自对应地址范围的每个新高速缓存线,高速缓存目录在第二阵列中分配新条目来以第二粒度跟踪所述区域的这个部分(框1425)。如果高速缓存目录已满,则高速缓存目录从第二阵列中逐出条目以分配新条目。高速缓存目录可利用任何合适的逐出算法来确定逐出哪个条目。在框1425之后,方法1400返回到框1410。
在各种实施方案中,使用软件应用程序的程序指令来实现本文描述的方法和/或机制。例如,设想到可由通用处理器或专用处理器执行的程序指令。在各种实施方案中,此类程序指令可由高级编程语言表示。在其他实施方案中,程序指令可从高级编程语言编译成二进制形式、中间形式或其他形式。替代地,可写入描述硬件的行为或设计的程序指令。此类程序指令可由诸如C的高级编程语言表示。替代地,可使用诸如Verilog的硬件设计语言(HDL)。在各种实施方案中,程序指令存储在多种非暂时性计算机可读存储介质中的任一种上。存储介质可由计算系统在使用期间访问以向计算系统提供程序指令以用于程序执行。一般而言,这种计算系统包括至少一个或多个存储器和被配置为执行程序指令的一个或多个处理器。
应强调,上述实施方案仅是实现方式的非限制性实例。一旦完全理解以上公开内容,许多变化和修改对于本领域技术人员而言将变得明显。所附权利要求意图解释为包含所有此类变化和修改。
Claims (20)
1.一种系统,其包括:
多个处理节点,其中每个处理节点包括一个或多个处理器和一个高速缓存子系统;
存储器;以及
高速缓存目录,所述高速缓存目录被配置为:
维持用于存储器的具有高速缓存在所述系统的任何高速缓存子系统中的至少一条高速缓存线的每个区域的条目,其中区域包括多条高速缓存线;
维持所述高速缓存目录的每个条目的引用计数,其中所述引用计数跟踪对应区域的高速缓存在所述系统的任何高速缓存子系统中的高速缓存线数的数量;并且
响应于给定条目的引用计数达到零而回收所述给定条目。
2.如权利要求1所述的系统,其中所述高速缓存目录进一步被配置为:
响应于接收第一区域的第一高速缓存线正由所述系统的第一高速缓存子系统高速缓存的指示而为所述第一区域分配第一条目;并且
将所述第一条目的引用计数初始化为一。
3.如权利要求2所述的系统,其中所述高速缓存目录进一步被配置为:响应于接收所述第一区域的第二高速缓存线正由所述系统的第二高速缓存子系统高速缓存的指示而使所述第一条目的所述引用计数递增。
4.如权利要求1所述的系统,其中所述高速缓存目录进一步被配置为:
跟踪区域是私有的还是共享的;
响应于确定第一区域为私有而将第一条目的第一字段解释为中央处理单元有效字段,其中所述第一条目对应于所述第一区域;
响应于检测到所述第一区域到共享的状态变化而将所述第一条目的所述第一字段解释为集群有效字段。
5.如权利要求1所述的系统,其中所述高速缓存目录进一步被配置为:
维持第一阵列来以第一粒度跟踪存储器的部分;
维持第二阵列来以第二粒度跟踪存储器的部分,其中所述第二粒度是比所述第一粒度更精细的粒度;并且
响应于接收给定存储器请求而并行地执行对所述第一阵列和所述第二阵列的查找。
6.如权利要求5所述的系统,其中所述高速缓存目录进一步被配置为:响应于所述查找在所述第一阵列和所述第二阵列两者中命中而仅基于从所述第二阵列的匹配条目中提取的数据来生成探针。
7.如权利要求1所述的系统,其中所述高速缓存目录进一步被配置为:
监视第一阵列中的条目的引用计数字段;
响应于检测到给定区域的引用计数已经超过阈值而开始基于更精细粒度来跟踪所述给定区域;并且
响应于在检测到所述引用计数已经超过所述阈值之后接收靶定所述给定区域的存储器请求而在第二阵列中创建条目。
8.一种方法,其包括:
在高速缓存目录中维持用于存储器的具有高速缓存在系统的任何高速缓存子系统中的至少一条高速缓存线的每个区域的条目,其中区域包括多条高速缓存线;
维持所述高速缓存目录的每个条目的引用计数,其中所述引用计数跟踪对应区域的高速缓存在所述系统的任何高速缓存子系统中的高速缓存线数的数量;以及
响应于给定条目的引用计数达到零而回收所述给定条目。
9.如权利要求8所述的方法,其还包括:
响应于接收第一区域的第一高速缓存线正由所述系统的第一高速缓存子系统高速缓存的指示而为所述第一区域分配第一条目;以及
将所述第一条目的引用计数初始化为一。
10.如权利要求9所述的方法,其还包括:响应于接收所述第一区域的第二高速缓存线正由所述系统的第二高速缓存子系统高速缓存的指示而使所述第一条目的所述引用计数递增。
11.如权利要求8所述的方法,其还包括:
跟踪区域是私有的还是共享的;
响应于确定第一区域为私有而将第一条目的第一字段解释为中央处理单元有效字段,其中所述第一条目对应于所述第一区域;
响应于检测到所述第一区域到共享的状态变化而将所述第一条目的所述第一字段解释为集群有效字段。
12.如权利要求8所述的方法,其还包括:
维持第一阵列来以第一粒度跟踪存储器的部分;
维持第二阵列来以第二粒度跟踪存储器的部分,其中所述第二粒度是比所述第一粒度更精细的粒度;以及
响应于接收给定存储器请求而并行地执行对所述第一阵列和所述第二阵列的查找。
13.如权利要求12所述的方法,其还包括:响应于所述查找在所述第一阵列和所述第二阵列两者中命中而仅基于从所述第二阵列的匹配条目中提取的数据来生成探针。
14.如权利要求8所述的方法,其还包括:
监视第一阵列中的条目的引用计数字段;
响应于检测到给定区域的引用计数已经超过阈值而开始基于更精细粒度来跟踪所述给定区域;以及
响应于在检测到所述引用计数已经超过所述阈值之后接收靶定所述给定区域的存储器请求而在第二阵列中创建条目。
15.一种设备,其包括:
高速缓存目录,所述高速缓存目录被配置为:
维持用于存储器的具有高速缓存在多个高速缓存子系统中的任一个中的至少一条高速缓存线的每个区域的条目,其中区域包括多条高速缓存线;
维持所述高速缓存目录的每个条目的引用计数,其中所述引用计数跟踪对应区域的高速缓存在任何高速缓存子系统中的高速缓存线数的数量;并且
响应于给定条目的引用计数达到零而回收所述给定条目。
16.如权利要求15所述的设备,其中所述高速缓存目录进一步被配置为:
响应于接收第一区域的第一高速缓存线正由所述系统的第一高速缓存子系统高速缓存的指示而为所述第一区域分配第一条目;并且
将所述第一条目的引用计数初始化为一。
17.如权利要求16所述的设备,其中所述高速缓存目录被配置为:响应于接收所述第一区域的第二高速缓存线正由所述系统的第二高速缓存子系统高速缓存的指示而使所述第一条目的所述引用计数递增。
18.如权利要求15所述的设备,其中所述高速缓存目录被配置为:
跟踪区域是私有的还是共享的;
响应于确定第一区域为私有而将第一条目的第一字段解释为中央处理单元有效字段,其中所述第一条目对应于所述第一区域;
响应于检测到所述第一区域到共享的状态变化而将所述第一条目的所述第一字段解释为集群有效字段。
19.如权利要求15所述的设备,其中所述高速缓存目录进一步被配置为:
维持第一阵列来以第一粒度跟踪存储器的部分;
维持第二阵列来以第二粒度跟踪存储器的部分,其中所述第二粒度是比所述第一粒度更精细的粒度;并且
响应于接收给定存储器请求而并行地执行对所述第一阵列和所述第二阵列的查找。
20.如权利要求19所述的设备,其中所述高速缓存目录进一步被配置为:响应于所述查找在所述第一阵列和所述第二阵列两者中命中而仅基于从所述第二阵列的匹配条目中提取的数据来生成探针。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/846,008 US11119926B2 (en) | 2017-12-18 | 2017-12-18 | Region based directory scheme to adapt to large cache sizes |
US15/846,008 | 2017-12-18 | ||
PCT/US2018/051765 WO2019125559A1 (en) | 2017-12-18 | 2018-09-19 | Region based directory scheme to adapt to large cache sizes |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111684425A true CN111684425A (zh) | 2020-09-18 |
Family
ID=63794696
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880088582.XA Pending CN111684425A (zh) | 2017-12-18 | 2018-09-19 | 适应于大高速缓存大小的基于区域的目录方案 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11119926B2 (zh) |
EP (2) | EP4293521A3 (zh) |
JP (1) | JP7390304B2 (zh) |
KR (1) | KR20200097793A (zh) |
CN (1) | CN111684425A (zh) |
WO (1) | WO2019125559A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115203071A (zh) * | 2021-04-14 | 2022-10-18 | 慧与发展有限责任合伙企业 | 默认共享状态缓存一致性协议的应用 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11119926B2 (en) | 2017-12-18 | 2021-09-14 | Advanced Micro Devices, Inc. | Region based directory scheme to adapt to large cache sizes |
US10705959B2 (en) | 2018-08-31 | 2020-07-07 | Advanced Micro Devices, Inc. | Region based split-directory scheme to adapt to large cache sizes |
US10922237B2 (en) | 2018-09-12 | 2021-02-16 | Advanced Micro Devices, Inc. | Accelerating accesses to private regions in a region-based cache directory scheme |
US11516151B2 (en) * | 2019-12-31 | 2022-11-29 | Infinera Oy | Dynamically switching queueing systems for network switches |
KR20210156061A (ko) * | 2020-06-17 | 2021-12-24 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
US11874774B2 (en) * | 2020-09-24 | 2024-01-16 | Advanced Micro Devices, Inc. | Mechanism to efficiently rinse memory-side cache of dirty data |
US11507517B2 (en) * | 2020-09-25 | 2022-11-22 | Advanced Micro Devices, Inc. | Scalable region-based directory |
US11550720B2 (en) * | 2020-11-24 | 2023-01-10 | Arm Limited | Configurable cache coherency controller |
US20230195632A1 (en) * | 2021-12-20 | 2023-06-22 | Advanced Micro Devices, Inc. | Probe filter directory management |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880558A (zh) * | 2011-06-09 | 2013-01-16 | 苹果公司 | 用于高速缓存块一致性的系统、方法和设备 |
US20130097385A1 (en) * | 2011-10-18 | 2013-04-18 | Advanced Micro Devices, Inc. | Dual-granularity state tracking for directory-based cache coherence |
US20140032848A1 (en) * | 2011-09-09 | 2014-01-30 | University Of Rochester | Sharing Pattern-Based Directory Coherence for Multicore Scalability ("SPACE") |
US20140379989A1 (en) * | 2013-06-19 | 2014-12-25 | International Business Machines Corporation | Coherent attached processor proxy having hybrid directory |
CN105320611A (zh) * | 2014-06-30 | 2016-02-10 | 英特尔公司 | 用于细粒存储器保护的方法和设备 |
US20170177484A1 (en) * | 2015-12-22 | 2017-06-22 | Advanced Micro Devices, Inc. | Region probe filter for distributed memory system |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5463753A (en) | 1992-10-02 | 1995-10-31 | Compaq Computer Corp. | Method and apparatus for reducing non-snoop window of a cache controller by delaying host bus grant signal to the cache controller |
JPH08263374A (ja) * | 1995-03-20 | 1996-10-11 | Hitachi Ltd | キャッシュ制御方法およびそれを用いたマルチプロセッサシステム |
JPH09311820A (ja) * | 1996-03-19 | 1997-12-02 | Hitachi Ltd | マルチプロセッサシステム |
US6101581A (en) | 1997-10-24 | 2000-08-08 | Doren; Stephen Van | Separate victim buffer read and release control |
US6826651B2 (en) | 1998-05-29 | 2004-11-30 | International Business Machines Corporation | State-based allocation and replacement for improved hit ratio in directory caches |
US6295598B1 (en) | 1998-06-30 | 2001-09-25 | Src Computers, Inc. | Split directory-based cache coherency technique for a multi-processor computer system |
US6425060B1 (en) * | 1999-01-05 | 2002-07-23 | International Business Machines Corporation | Circuit arrangement and method with state-based transaction scheduling |
US6922755B1 (en) | 2000-02-18 | 2005-07-26 | International Business Machines Corporation | Directory tree multinode computer system |
US6640287B2 (en) | 2000-06-10 | 2003-10-28 | Hewlett-Packard Development Company, L.P. | Scalable multiprocessor system and cache coherence method incorporating invalid-to-dirty requests |
US8635410B1 (en) | 2000-07-20 | 2014-01-21 | Silicon Graphics International, Corp. | System and method for removing data from processor caches in a distributed multi-processor computer system |
US6810467B1 (en) | 2000-08-21 | 2004-10-26 | Intel Corporation | Method and apparatus for centralized snoop filtering |
US6868481B1 (en) | 2000-10-31 | 2005-03-15 | Hewlett-Packard Development Company, L.P. | Cache coherence protocol for a multiple bus multiprocessor system |
US6842830B2 (en) | 2001-03-31 | 2005-01-11 | Intel Corporation | Mechanism for handling explicit writeback in a cache coherent multi-node architecture |
US6754782B2 (en) | 2001-06-21 | 2004-06-22 | International Business Machines Corporation | Decentralized global coherency management in a multi-node computer system |
US6973543B1 (en) | 2001-07-12 | 2005-12-06 | Advanced Micro Devices, Inc. | Partial directory cache for reducing probe traffic in multiprocessor systems |
US6829679B2 (en) * | 2001-11-09 | 2004-12-07 | International Business Machines Corporation | Different caching treatment of memory contents based on memory region |
US6834327B2 (en) | 2002-02-08 | 2004-12-21 | Hewlett-Packard Development Company, L.P. | Multilevel cache system having unified cache tag memory |
US7003631B2 (en) | 2002-05-15 | 2006-02-21 | Broadcom Corporation | System having address-based intranode coherency and data-based internode coherency |
US7206934B2 (en) | 2002-09-26 | 2007-04-17 | Sun Microsystems, Inc. | Distributed indexing of identity information in a peer-to-peer network |
US6868485B1 (en) | 2002-09-27 | 2005-03-15 | Advanced Micro Devices, Inc. | Computer system with integrated directory and processor cache |
US7296121B2 (en) | 2002-11-04 | 2007-11-13 | Newisys, Inc. | Reducing probe traffic in multiprocessor systems |
US6920532B2 (en) | 2002-11-05 | 2005-07-19 | Newisys, Inc. | Cache coherence directory eviction mechanisms for modified copies of memory lines in multiprocessor systems |
US7024521B2 (en) | 2003-04-24 | 2006-04-04 | Newisys, Inc | Managing sparse directory evictions in multiprocessor systems via memory locking |
US7340565B2 (en) | 2004-01-13 | 2008-03-04 | Hewlett-Packard Development Company, L.P. | Source request arbitration |
US7149852B2 (en) | 2004-01-20 | 2006-12-12 | Hewlett Packard Development Company, Lp. | System and method for blocking data responses |
JP4119380B2 (ja) | 2004-02-19 | 2008-07-16 | 株式会社日立製作所 | マルチプロセッサシステム |
WO2006004196A1 (ja) | 2004-07-02 | 2006-01-12 | Nec Corporation | マルチプロセッサシステムおよびメモリアクセス処理方法 |
US7523327B2 (en) | 2005-03-05 | 2009-04-21 | Intel Corporation | System and method of coherent data transfer during processor idle states |
US7797495B1 (en) | 2005-08-04 | 2010-09-14 | Advanced Micro Devices, Inc. | Distributed directory cache |
JP4848771B2 (ja) | 2006-01-04 | 2011-12-28 | 株式会社日立製作所 | キャッシュ一貫性制御方法およびチップセットおよびマルチプロセッサシステム |
US7774551B2 (en) | 2006-10-06 | 2010-08-10 | Hewlett-Packard Development Company, L.P. | Hierarchical cache coherence directory structure |
US7502893B2 (en) * | 2006-10-26 | 2009-03-10 | Freescale Semiconductor, Inc. | System and method for reporting cache coherency state retained within a cache hierarchy of a processing node |
US8561043B2 (en) | 2008-03-28 | 2013-10-15 | International Business Machines Corporation | Data transfer optimized software cache for irregular memory references |
US8205045B2 (en) | 2008-07-07 | 2012-06-19 | Intel Corporation | Satisfying memory ordering requirements between partial writes and non-snoop accesses |
US8285942B2 (en) | 2009-01-27 | 2012-10-09 | International Business Machines Corporation | Region coherence array having hint bits for a clustered shared-memory multiprocessor system |
WO2012035605A1 (ja) | 2010-09-13 | 2012-03-22 | 富士通株式会社 | 情報処理装置および情報処理装置の制御方法 |
US8996807B2 (en) * | 2011-02-15 | 2015-03-31 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a multi-level cache |
US20130290643A1 (en) * | 2012-04-30 | 2013-10-31 | Kevin T. Lim | Using a cache in a disaggregated memory architecture |
FR2992446B1 (fr) | 2012-06-22 | 2015-04-10 | Commissariat Energie Atomique | Systeme et procede de traitement de donnees a gestion d'une coherence de caches dans un reseau de processeurs munis de memoires caches. |
US20140189243A1 (en) * | 2012-12-28 | 2014-07-03 | Blas Cuesta | Sectored cache with hybrid line granularity |
CN103294612B (zh) | 2013-03-22 | 2014-08-13 | 浪潮电子信息产业股份有限公司 | 在多级缓存一致性域系统局部域构造Share-F状态的方法 |
US11119926B2 (en) | 2017-12-18 | 2021-09-14 | Advanced Micro Devices, Inc. | Region based directory scheme to adapt to large cache sizes |
US10705959B2 (en) | 2018-08-31 | 2020-07-07 | Advanced Micro Devices, Inc. | Region based split-directory scheme to adapt to large cache sizes |
-
2017
- 2017-12-18 US US15/846,008 patent/US11119926B2/en active Active
-
2018
- 2018-09-19 EP EP23207123.3A patent/EP4293521A3/en active Pending
- 2018-09-19 CN CN201880088582.XA patent/CN111684425A/zh active Pending
- 2018-09-19 EP EP18783264.7A patent/EP3729278B1/en active Active
- 2018-09-19 JP JP2020552670A patent/JP7390304B2/ja active Active
- 2018-09-19 WO PCT/US2018/051765 patent/WO2019125559A1/en unknown
- 2018-09-19 KR KR1020207020740A patent/KR20200097793A/ko not_active Application Discontinuation
-
2021
- 2021-09-13 US US17/472,977 patent/US11809322B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880558A (zh) * | 2011-06-09 | 2013-01-16 | 苹果公司 | 用于高速缓存块一致性的系统、方法和设备 |
US20140032848A1 (en) * | 2011-09-09 | 2014-01-30 | University Of Rochester | Sharing Pattern-Based Directory Coherence for Multicore Scalability ("SPACE") |
US20130097385A1 (en) * | 2011-10-18 | 2013-04-18 | Advanced Micro Devices, Inc. | Dual-granularity state tracking for directory-based cache coherence |
US20140379989A1 (en) * | 2013-06-19 | 2014-12-25 | International Business Machines Corporation | Coherent attached processor proxy having hybrid directory |
CN105320611A (zh) * | 2014-06-30 | 2016-02-10 | 英特尔公司 | 用于细粒存储器保护的方法和设备 |
US20170177484A1 (en) * | 2015-12-22 | 2017-06-22 | Advanced Micro Devices, Inc. | Region probe filter for distributed memory system |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115203071A (zh) * | 2021-04-14 | 2022-10-18 | 慧与发展有限责任合伙企业 | 默认共享状态缓存一致性协议的应用 |
Also Published As
Publication number | Publication date |
---|---|
EP4293521A3 (en) | 2024-03-13 |
EP3729278B1 (en) | 2023-11-08 |
KR20200097793A (ko) | 2020-08-19 |
EP3729278A1 (en) | 2020-10-28 |
JP7390304B2 (ja) | 2023-12-01 |
JP2021507437A (ja) | 2021-02-22 |
US20190188137A1 (en) | 2019-06-20 |
US11119926B2 (en) | 2021-09-14 |
EP4293521A2 (en) | 2023-12-20 |
WO2019125559A1 (en) | 2019-06-27 |
US20210406180A1 (en) | 2021-12-30 |
US11809322B2 (en) | 2023-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11809322B2 (en) | Region based directory scheme to adapt to large cache sizes | |
US11314646B2 (en) | Region based split-directory scheme to adapt to large cache sizes | |
US11782848B2 (en) | Home agent based cache transfer acceleration scheme | |
EP3850490B1 (en) | Accelerating accesses to private regions in a region-based cache directory scheme | |
US10545875B2 (en) | Tag accelerator for low latency DRAM cache | |
US20220050785A1 (en) | System probe aware last level cache insertion bypassing | |
US20230325317A1 (en) | Reducing probe filter accesses for processing in memory requests | |
US20240111683A1 (en) | Dynamically altering tracking granularity in a region-based cache directory |
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 |