CN111656332A - 基于本地代理的高速缓存传送加速方案 - Google Patents
基于本地代理的高速缓存传送加速方案 Download PDFInfo
- Publication number
- CN111656332A CN111656332A CN201880088010.1A CN201880088010A CN111656332A CN 111656332 A CN111656332 A CN 111656332A CN 201880088010 A CN201880088010 A CN 201880088010A CN 111656332 A CN111656332 A CN 111656332A
- Authority
- CN
- China
- Prior art keywords
- probe
- cache
- early
- entry
- lookup
- 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.)
- Granted
Links
- 238000012546 transfer Methods 0.000 title description 3
- 230000001133 acceleration Effects 0.000 title description 2
- 239000000523 sample Substances 0.000 claims abstract description 224
- 230000015654 memory Effects 0.000 claims abstract description 92
- 230000001427 coherent effect Effects 0.000 claims abstract description 70
- 238000012545 processing Methods 0.000 claims abstract description 61
- 230000004044 response Effects 0.000 claims abstract description 26
- 238000000034 method Methods 0.000 claims abstract description 24
- 230000007246 mechanism Effects 0.000 abstract description 7
- 239000004744 fabric Substances 0.000 description 14
- 238000010586 diagram Methods 0.000 description 10
- 239000003795 chemical substances by application Substances 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000003068 static effect 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
- G06F12/082—Associative directories
-
- 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/0824—Distributed directories, e.g. linked lists of caches
-
- 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/0826—Limited pointers directories; State-only directories without pointers
-
- 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
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- 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/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting 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/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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/507—Control mechanisms for virtual memory, cache or TLB using speculative control
-
- 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
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)状态指示所述行在一个高速缓存中被修改、在其他高速缓存中可能存在共享副本并且存储器中的数据已过时。
在第一节点的高速缓存子系统至第二节点的高速缓存子系统之间传送数据通常涉及多个操作,其中每个操作都会导致传送延迟。这些操作通常以串行方式执行,其中一个操作在前一个操作结束时开始。
附图说明
通过结合附图参考以下描述,可更好地理解本文所述的方法和机制的优点,在附图中:
图1是计算系统的一个实施方案的框图。
图2是核心复合体的一个实施方案的框图。
图3是多CPU系统的一个实施方案的框图。
图4是一致的从设备的一个实施方案的框图。
图5是示出用于实现早期探针机制的方法的一个实施方案的一般化流程图。
图6是示出用于在早期探针高速缓存中分配基于区域的条目以用于生成早期探针的方法的一个实施方案的一般化流程图。
具体实施方式
在以下描述中,阐述了许多特定细节以提供对本文呈现的方法和机制的透彻理解。然而,本领域的普通技术人员应认识到,可在没有这些具体细节的情况下实践各种实施方案。在一些情况下,并未详细示出众所周知的结构、部件、信号、计算机程序指令和技术,以避免混淆本文所述的方法。应当理解,为了使说明清楚简单,附图中所示的元件未必按比例绘制。例如,元件中的一些的尺寸可相对于其他元件被放大。
本文公开了用于实现推测性探针机制的各种系统、设备、方法和计算机可读介质。在一个实施方案中,一种系统至少包括多个处理节点(例如,中央处理单元(CPU))、互连结构、一致的从设备、探针过滤器、存储器控制器和存储器。每个处理节点包括一个或多个处理单元。每个处理节点中包括的一个或多个处理单元((例如,通用处理器、图形处理单元(GPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP))的类型可以随实施方案和节点的不同而不同。所述一致的从设备通过所述互连结构耦接到所述多个处理节点,并且所述一致的从设备还耦接到所述探针过滤器和所述存储器控制器。
所述一致的从设备包括早期探针高速缓存,以高速缓存对所述探针过滤器的最近查找。在一个实施方案中,针对共享页面的对所述探针过滤器的最近查找被高速缓存在所述早期探针高速缓存中。有关页面是共享页面还是专用页面的信息可作为探针过滤器查找的一部分获得。在一个实施方案中,早期探针高速缓存基于区域存储条目,其中区域包括多个高速缓存线。所述一致的从设备通过互连结构从处理节点接收存储器请求。响应于通过所述结构从给定的处理节点接收存储器请求,所述一致的从设备执行对所述探针过滤器和所述早期探针高速缓存的并行查找。如果对所述早期探针高速缓存的查找与给定的条目匹配,则所述一致的从设备从所述给定的条目中检索所述区域所有者的识别符(ID)和置信度指示符。如果所述置信度指示符大于可编程阈值,则所述一致的从设备将早期探针发送到识别为所述区域所有者的所述处理节点。应注意,在对所述探针过滤器的查找完成之前发送所述早期探针。当所述早期探针被发送到正确目标时,这有助于减少从目标处理节点检索数据的等待时间。
当对所述探针过滤器的所述查找完成时,并且如果所述查找导致命中,则所述一致的从设备从匹配条目中检索所述高速缓存线的所有者的ID。如果存储器请求所针对的高速缓存线的所有者与从早期探针高速缓存获得的区域的所有者匹配,则所述一致的从设备使早期探针高速缓存中的对应的条目的置信度指示符递增。根据实施方案,所述一致的从设备可向所有者发送或不发送需求探针。如果发送到目标处理节点的早期探针致使所针对的数据返回到发出请求的节点,则所述一致的从设备不需要发送需求探针。否则,如果早期探针致使所针对的数据从发出请求的节点的高速缓存子系统中拉出,则可将需求探针发送到目标节点,以将数据返回到发出请求的节点。如果存储器请求所针对且从探针过滤器检索的高速缓存线的所有者不与从早期探针高速缓存获得的区域的所有者匹配,则一致的从设备使早期探针高速缓存中的对应的条目的置信度指示符递减。同样,一致的从设备将需求探针发送到正确处理节点。
如果对早期探针高速缓存的查找未命中并且对探针过滤器的查找在共享页面上命中,则在早期探针高速缓存中分配新条目。一致的从设备确定包括存储器请求所针对的高速缓存线的区域,并且然后一致的从设备将区域的ID存储在早期探针高速缓存中的新条目的区域所有者字段中。一致的从设备还将置信度指示符字段和LRU字段初始化为默认值。因此,当一致的从设备接收到针对相同区域的后续存储器请求时,对早期探针高速缓存的查找将在此新条目上命中,从而致使在置信度指示符字段大于可编程阈值时将早期探针发送到识别为区域所有者的节点。
现在参考图1,示出计算系统100的一个实施方案的框图。在一个实施方案中,计算系统100至少包括核心复合体105A至105N、输入/输出(I/O)接口120、总线125、一个或多个存储器控制器130和网络接口135。在其他实施方案中,计算系统100可包括其他部件并且/或者计算系统100可以不同方式布置。在一个实施方案中,每个核心复合体105A至105N包括一个或多个通用处理器,诸如中央处理单元(CPU)。应注意,“核心复合体”在本文中也可称为“处理节点”或“CPU”。在一些实施方案中,一个或多个核心复合体105A至105N可包括具有高度并行架构的数据并行处理器。数据并行处理器的实例包括图形处理单元(GPU)、数字信号处理器(DSP)等等。核心复合体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,其中核心的数量根据实施方案而有所变化。每个CPU 305A至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耦接到探针过滤器(PF)325A,其中探针过滤器325A包括用于存储器区域的条目,所述存储器区域具有在系统300中高速缓存的用于可通过存储器控制器330A访问的存储器的高速缓存线。应注意,探针过滤器325A和其他探针过滤器中的每一个也可称为“高速缓存目录”。类似地,一致的从设备320B耦接到探针过滤器325B,其中探针过滤器325B包括用于存储器区域的条目,所述存储器区域具有在系统300中高速缓存的用于可通过存储器控制器330B访问的存储器的高速缓存线。应注意,每CPU具有两个存储器控制器的实例仅指示一个实施方案。应当理解,在其他实施方案中,每个CPU 305A至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。这在早期探针高速缓存识别正确目标的情况下有助于对数据的早期检索,并且减少与处理存储器请求相关联的等待时间。应注意,在其他实施方案中,可存在从总线/结构318到未示出以避免混淆附图的其他部件的其他连接。例如,在另一个实施方案中,总线/结构318包括与一个或多个I/O接口和一个或多个I/O装置的连接。
现在转到图4,示出一致的从设备400的一个实施方案的框图。在一个实施方案中,一致的从设备400的逻辑被包括在(图3的)系统300的一致的从设备320A至320B、335A至335B和355A至355B中。一致的从设备400包括耦接到探针过滤器415和早期探针高速缓存420的控制单元410。控制单元410也耦接到互连结构和存储器控制器。控制单元410可使用硬件和/或软件的任何合适的组合来实现。控制单元410被配置为通过互连结构从各种CPU接收存储器请求。由控制单元410接收到的存储器请求通过耦接到一致的从设备400的存储器控制器传送到存储器。在一个实施方案中,当控制单元410接收到给定的存储器请求时,控制单元410执行对早期探针高速缓存420和探针过滤器415的并行查找。
在一个实施方案中,早期探针高速缓存420被配置为针对共享区域高速缓存对探针过滤器415的最近查找的结果。例如,当针对所接收的存储器请求执行对探针过滤器415的查找时,从查找中检索到的信息的一部分被保留并存储在早期探针高速缓存420中。例如,从对探针过滤器415的查找中检索高速缓存线的所有者的ID,并且在早期探针高速缓存420中针对此高速缓存线所在的区域的地址创建条目。将高速缓存此高速缓存线的节点作为区域所有者存储在早期探针高速缓存420中的新条目中。
一般而言,早期探针高速缓存420基于以下原理工作:在存储器的区域内,所有高速缓存线的共享行为将很可能是相同的。换句话说,如果一致的从设备400针对第一区域内的第一高速缓存线生成并向节点445发送定向探针,则针对第一区域内的第二高速缓存线向节点445发送定向探针的可能性也较大。由于早期探针高速缓存420比探针过滤器415更小且更快,因此早期探针高速缓存420最终比对探针过滤器415的查找可完成的时间更早地向目标节点推测性地启动早期探针。将受益于早期探针的启动的工作负载的一个实例是生产者消费者场景,其中生产者向区域内的线存储,并且然后消费者从这些线读取。对于区域内的所有线,本地节点最终启动探针以从生产者获取最新数据。
如本文所使用的,“定向探针”是指基于对探针过滤器415的查找而生成的探针,其中所述探针被发送到存储器请求所针对的高速缓存线的所有者。“早期探针”是指基于对早期探针过滤器420的查找而生成的探针,其中所述探针被发送到被识别为存储器请求所针对的高速缓存线的区域的所有者的节点。早期探针与定向探针不同的一种方式是,早期探针可能被发送到错误目标。此外,比定向探针早若干时钟周期发送早期探针,因此,早期探针在被发送到正确目标的情况下有助于减少对存储器请求的处理的等待时间。
在一个实施方案中,早期探针高速缓存420的每个条目包括区域地址字段、区域所有者字段、置信度指示符字段和最近最少使用(LRU)字段。当一致的从设备400接收到请求时,针对所述请求的区域地址执行对早期探针高速缓存420的查找,并且针对所述请求所针对的高速缓存线执行对探针过滤器415的并行查找。如果对早期探针高速缓存420的查找导致命中,则一致的从设备400从匹配条目中检索置信度指示符。如果置信度计数器超过可编程阈值,则针对区域所有者启动早期探针。否则,如果置信度计数器小于或等于可编程阈值,则一致的从设备400阻止启动早期探针,并转而等待对探针过滤器415的查找的结果。
在稍后的时间点,当对探针过滤器415的查找完成时,利用对探针过滤器415的查找的结果对早期探针高速缓存420进行更新。如果在早期探针高速缓存420中不存在针对共享区域的区域地址的条目,则通过基于LRU字段逐出现有条目,在早期探针高速缓存420中创建新条目。如果早期探针高速缓存420中已经存在针对所述区域地址的条目,则针对此条目更新LRU字段。如果从探针过滤器415中检索到的高速缓存线目标与在早期探针高速缓存420条目中识别的区域所有者相同,则使置信度指示符递增(即,增加1)。如果从探针过滤器415中检索到的高速缓存线目标与在早期探针高速缓存420条目中识别的区域所有者不同,则使置信度指示符递减(即,减小1)或进行重置。
一旦一致的从设备400启动早期探针,就可根据实施方案以不同的方式来处理在对探针过滤器415的查找之后生成的对应的需求探针。在一个实施方案中,如果早期探针到达正确目标,则不启动需求探针。在此实施方案中,早期探针将致使从目标中检索数据并将其返回到发出请求的节点。另一方面,如果早期探针被发送到错误目标,则将需求探针发送到正确目标。在另一个实施方案中,早期探针将数据从目标的高速缓存子系统中拉出,然后将数据存储在临时缓冲区中。如果计时器在需求探针到达之前到期,则可丢弃此数据。在此实施方案中,在早期探针之后启动需求探针,并且需求探针将从高速缓存子系统中拉出的数据转发到发出请求的节点。
现在参考图5,示出用于实现早期探针机制的方法500的一个实施方案。出于讨论目的,按顺序次序示出此实施方案中的步骤和图6的那些步骤。然而,应注意,在所描述的方法的各种实施方案中,同时地、以与所示不同的次序执行所描述的元件中的一个或多个,或完全省略所描述的元件中的一个或多个。在需要时也执行其他另外的元件。本文中描述的各种系统或设备中的任一者被配置为实现方法500。
响应于接收到存储器请求,一致的从单元对探针过滤器和早期探针高速缓存执行并行查找(框505)。在对探针过滤器的查找完成之前,一致的从单元响应于确定对早期探针高速缓存的查找与将第一处理节点识别为存储器请求所针对的第一区域的所有者的条目匹配,则将早期探针发送到第一处理节点(框510)。为了便于这样讨论,假定早期探针高速缓存中的匹配条目的置信度指示符大于可编程阈值。如果对探针过滤器的查找将第一处理节点识别为存储器请求所针对的高速缓存线的所有者(条件框515,“是”分支),则使早期探针高速缓存中的匹配条目中的置信度指示符递增并且更新LRU字段(框520)。根据实施方案,可任选地将需求探针发送到第一处理节点(框525)。
如果对探针过滤器的查找将不同的处理节点识别为存储器请求所针对的高速缓存线的所有者(条件框515,“否”分支),则使早期探针高速缓存中的匹配条目中的置信度指示符递减并且更新LRU字段(框530)。另外,任选地利用正确处理节点来更新早期探针高速缓存中的匹配条目中的区域所有者字段(框535)。另外,将需求探针发送到正确处理节点(框540)。在框525和540之后,方法500结束。
现在转到图6,示出用于在早期探针高速缓存中分配基于区域的条目以用于生成早期探针的方法600的一个实施方案。针对所接收的存储器请求的对早期探针高速缓存的查找不与任何现有条目匹配,而对探针过滤器的查找与共享区域的现有条目匹配(框605)。应注意,早期探针高速缓存查找和探针过滤器查找由一致的从单元并行执行。响应于对早期探针高速缓存的查找未命中和对探针过滤器的查找命中,将需求探针发送到由探针过滤器中的匹配条目识别的目标(框610)。此外,确定存储器请求所针对的区域(框615)。然后,在早期探针高速缓存中针对存储器请求的区域分配新条目(框620)。可以利用任何合适的逐出算法来确定逐出哪个条目以为新条目让出空间。将新条目的置信度指示符字段设置为默认值,并且使新条目的LRU字段初始化(框625)。将需求探针所针对的节点的ID存储在早期探针高速缓存中的新条目的区域所有者字段中(框630)。因此,对于针对此区域的未来存储器请求,基于早期探针高速缓存中的此新条目将早期探针发送到相同节点。在框630之后,方法600结束。
在各种实施方案中,使用软件应用程序的程序指令来实现本文所述的方法和/或机制。例如,设想了可由通用或专用处理器执行的程序指令。在各种实施方案中,此类程序指令可通过高级编程语言来表示。在其他实施方案中,程序指令可从高级编程语言编译成二进制形式、中间形式或其他形式。替代地,可编写描述硬件行为或设计的程序指令。此类程序指令可通过诸如C的高级编程语言来表示。替代地,可使用诸如Verilog的硬件设计语言(HDL)。在各种实施方案中,程序指令存储在各种非暂时性计算机可读存储介质中的任一个上。在使用期间,计算系统可访问存储介质,以将程序指令提供到计算系统以用于程序执行。一般来讲,此类计算系统包括至少一个或多个存储器和被配置为执行程序指令的一个或多个处理器。
应当强调的是,上述实施方案仅仅是实现方式的非限制性示例。一旦充分理解上述公开内容,许多变化和修改对于本领域的技术人员将变得显而易见。意图将所附权利要求解释为包含所有此类变化和修改。
Claims (20)
1.一种系统,其包括:
多个处理节点;
探针过滤器,所述探针过滤器被配置为跟踪由所述多个处理节点高速缓存的高速缓存线;
存储器控制器;以及
耦接到所述存储器控制器的一致的从单元,其中所述一致的从单元包括早期探针高速缓存,所述早期探针高速缓存被配置为高速缓存对所述探针过滤器的最近查找,其中所述早期探针高速缓存基于区域存储条目,其中区域包括多个高速缓存线;
其中所述一致的从单元被配置为:
响应于接收到存储器请求,执行对所述探针过滤器和所述早期探针高速缓存的并行查找;
响应于对所述早期探针高速缓存的查找与所述早期探针高速缓存的第一条目匹配,从所述第一条目中检索第一处理节点的识别符,其中所述第一条目将所述第一处理节点识别为所述存储器请求所针对的第一区域的所有者;并且
响应于确定所述第一条目的置信度指示符大于阈值,将早期探针发送到所述第一处理节点,其中在对所述探针过滤器的查找完成之前发送所述早期探针。
2.如权利要求1所述的系统,其中所述一致的从单元还被配置为:响应于确定对高速缓存目录的查找将所述第一处理节点识别为所述存储器请求所针对的高速缓存线的所有者,使所述第一条目的所述置信度指示符增大。
3.如权利要求2所述的系统,其中所述一致的从单元还被配置为:响应于确定对所述探针过滤器的所述查找将不同的处理节点识别为所述存储器请求所针对的高速缓存线的所有者,使所述第一条目的所述置信度指示符减小。
4.如权利要求1所述的系统,其中响应于对所述早期探针高速缓存的所述查找未命中以及对所述探针过滤器的所述查找命中对应于共享区域的条目,所述一致的从单元被配置为针对所述存储器请求在所述早期探针高速缓存中分配新条目。
5.如权利要求4所述的系统,其中所述一致的从单元还被配置为:
确定包括所述存储器请求所针对的所述高速缓存线的区域;
将所述区域的地址存储在所述早期探针高速缓存的所述新条目的区域地址字段中;
从所述探针过滤器的匹配条目中提取所述高速缓存线的所有者的识别符(ID);并且
将所述ID存储在所述早期探针高速缓存中的所述新条目的区域所有者字段中。
6.如权利要求1所述的系统,其中所述第一处理节点被配置为:
接收所述早期探针;
如果在所述第一处理节点的高速缓存子系统中存在所述早期探针所针对的数据,则检索所述数据;并且
将所述数据返回到发出请求的处理节点。
7.如权利要求1所述的系统,其中所述第一处理节点被配置为:
接收所述早期探针;
如果在所述第一处理节点的高速缓存子系统中存在所述早期探针所针对的数据,则检索所述数据;并且
缓冲所述数据并且等待接收对应的需求探针。
8.一种方法,其包括:
响应于接收到存储器请求,执行对探针过滤器和早期探针高速缓存的并行查找;
响应于对所述早期探针高速缓存的查找与所述早期探针高速缓存的第一条目匹配,从所述第一条目中检索第一处理节点的识别符,其中所述第一条目将所述第一处理节点识别为所述存储器请求所针对的第一区域的所有者;以及
响应于确定所述第一条目的置信度指示符大于阈值,将早期探针发送到所述第一处理节点,其中在对所述探针过滤器的查找完成之前发送所述早期探针。
9.如权利要求8所述的方法,其还包括:响应于确定对所述早期探针高速缓存的所述查找将所述第一处理节点识别为所述存储器请求所针对的高速缓存线的所有者,使所述第一条目的所述置信度指示符增大。
10.如权利要求9所述的方法,其还包括:响应于确定对所述探针过滤器的所述查找将不同的处理节点识别为所述存储器请求所针对的高速缓存线的所有者,使所述第一条目的所述置信度指示符减小。
11.如权利要求8所述的方法,其中响应于对所述早期探针高速缓存的所述查找未命中以及对所述探针过滤器的所述查找命中对应于共享区域的条目,所述方法还包括针对所述存储器请求在所述早期探针高速缓存中分配新条目。
12.如权利要求11所述的方法,其还包括:
确定包括所述存储器请求所针对的高速缓存线的区域;
将所述区域的地址存储在所述早期探针高速缓存的所述新条目的区域地址字段中;
从所述探针过滤器的匹配条目中提取所述高速缓存线的所有者的识别符(ID);以及
将所述ID存储在所述早期探针高速缓存中的所述新条目的区域所有者字段中。
13.如权利要求8所述的方法,其还包括:
在所述第一处理节点处接收所述早期探针;
如果在所述第一处理节点的高速缓存子系统中存在所述早期探针所针对的数据,则检索所述数据;以及
将所述数据返回到发出请求的处理节点。
14.如权利要求8所述的方法,其还包括:
在所述第一处理节点处接收所述早期探针;
如果在所述第一处理节点的高速缓存子系统中存在所述早期探针所针对的数据,则检索所述数据;以及
缓冲所述数据并且等待接收对应的需求探针。
15.一种设备,其包括:
探针过滤器,所述探针过滤器被配置为跟踪由多个处理节点高速缓存的高速缓存线;以及
一致的从单元,所述一致的从单元包括早期探针高速缓存,所述早期探针高速缓存被配置为高速缓存对所述探针过滤器的最近查找,其中所述早期探针高速缓存基于区域存储条目,其中区域包括多个高速缓存线,并且其中所述一致的从单元被配置为:
响应于接收到存储器请求,执行对所述探针过滤器和所述早期探针高速缓存的并行查找;
响应于对所述早期探针高速缓存的查找与所述早期探针高速缓存的第一条目匹配,从所述第一条目中检索第一处理节点的识别符,其中所述第一条目将所述第一处理节点识别为所述存储器请求所针对的第一区域的所有者;并且
响应于确定所述第一条目的置信度指示符大于阈值,将早期探针发送到所述第一处理节点,其中在对所述探针过滤器的查找完成之前发送所述早期探针。
16.如权利要求15所述的设备,其中所述一致的从单元还被配置为:响应于确定对高速缓存目录的查找将所述第一处理节点识别为所述存储器请求所针对的高速缓存线的所有者,使所述第一条目的所述置信度指示符增大。
17.如权利要求16所述的设备,其中所述一致的从单元还被配置为:响应于确定对所述探针过滤器的所述查找将不同的处理节点识别为所述存储器请求所针对的高速缓存线的所有者,使所述第一条目的所述置信度指示符减小。
18.如权利要求15所述的设备,其中响应于对所述早期探针高速缓存的所述查找未命中以及对所述探针过滤器的所述查找命中对应于共享区域的条目,所述一致的从单元被配置为针对所述存储器请求在所述早期探针高速缓存中分配新条目。
19.如权利要求18所述的设备,其中所述一致的从单元被配置为:
确定包括所述存储器请求所针对的所述高速缓存线的区域;
将所述区域的地址存储在所述早期探针高速缓存的所述新条目的区域地址字段中;
从所述探针过滤器的匹配条目中提取所述高速缓存线的所有者的识别符(ID);并且
将所述ID存储在所述早期探针高速缓存中的所述新条目的区域所有者字段中。
20.如权利要求15所述的设备,其中所述一致的从单元还被配置为:响应于确定对所述探针过滤器的所述查找与将第二处理节点识别为所述存储器请求所针对的高速缓存线的所有者的条目匹配,将需求探针发送到所述第二处理节点。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/844,215 US10776282B2 (en) | 2017-12-15 | 2017-12-15 | Home agent based cache transfer acceleration scheme |
US15/844,215 | 2017-12-15 | ||
PCT/US2018/051756 WO2019118037A1 (en) | 2017-12-15 | 2018-09-19 | Home agent based cache transfer acceleration scheme |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111656332A true CN111656332A (zh) | 2020-09-11 |
CN111656332B CN111656332B (zh) | 2024-08-27 |
Family
ID=63794694
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880088010.1A Active CN111656332B (zh) | 2017-12-15 | 2018-09-19 | 基于本地代理的高速缓存传送加速方案 |
Country Status (6)
Country | Link |
---|---|
US (2) | US10776282B2 (zh) |
EP (2) | EP3724772B1 (zh) |
JP (1) | JP6975335B2 (zh) |
KR (1) | KR102383040B1 (zh) |
CN (1) | CN111656332B (zh) |
WO (1) | WO2019118037A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117651021A (zh) * | 2024-01-25 | 2024-03-05 | 苏州萨沙迈半导体有限公司 | 过滤器及其控制方法和装置、电气设备 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10776282B2 (en) | 2017-12-15 | 2020-09-15 | Advanced Micro Devices, Inc. | Home agent based cache transfer acceleration scheme |
US11210248B2 (en) * | 2019-12-20 | 2021-12-28 | Advanced Micro Devices, Inc. | System direct memory access engine offload |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090327616A1 (en) * | 2008-06-30 | 2009-12-31 | Patrick Conway | Snoop filtering mechanism |
US20160117250A1 (en) * | 2014-10-22 | 2016-04-28 | Imagination Technologies Limited | Apparatus and Method of Throttling Hardware Pre-fetch |
US20170177484A1 (en) * | 2015-12-22 | 2017-06-22 | Advanced Micro Devices, Inc. | Region probe filter for distributed memory system |
US20170255557A1 (en) * | 2016-03-07 | 2017-09-07 | Qualcomm Incorporated | Self-healing coarse-grained snoop filter |
US20170308297A1 (en) * | 2016-04-22 | 2017-10-26 | Advanced Micro Devices, Inc. | Object tagged memory monitoring method and processing apparatus |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6055610A (en) * | 1997-08-25 | 2000-04-25 | Hewlett-Packard Company | Distributed memory multiprocessor computer system with directory based cache coherency with ambiguous mapping of cached data to main-memory locations |
US6631401B1 (en) | 1998-12-21 | 2003-10-07 | Advanced Micro Devices, Inc. | Flexible probe/probe response routing for maintaining coherency |
US7234029B2 (en) * | 2000-12-28 | 2007-06-19 | Intel Corporation | Method and apparatus for reducing memory latency in a cache coherent multi-node architecture |
US7395375B2 (en) * | 2004-11-08 | 2008-07-01 | International Business Machines Corporation | Prefetch miss indicator for cache coherence directory misses on external caches |
US7636819B2 (en) | 2005-08-23 | 2009-12-22 | Advanced Micro Devices, Inc. | Method for proactive synchronization within a computer system |
JP5136652B2 (ja) * | 2008-11-10 | 2013-02-06 | 富士通株式会社 | 情報処理装置及びメモリ制御装置 |
US9081706B2 (en) * | 2012-05-10 | 2015-07-14 | Oracle International Corporation | Using a shared last-level TLB to reduce address-translation latency |
US9405687B2 (en) * | 2013-11-04 | 2016-08-02 | Intel Corporation | Method, apparatus and system for handling cache misses in a processor |
US9639470B2 (en) * | 2014-08-26 | 2017-05-02 | Arm Limited | Coherency checking of invalidate transactions caused by snoop filter eviction in an integrated circuit |
CN104331377B (zh) | 2014-11-12 | 2018-06-26 | 浪潮(北京)电子信息产业有限公司 | 一种多核处理器系统的目录缓存管理方法 |
US11237965B2 (en) * | 2014-12-31 | 2022-02-01 | Arteris, Inc. | Configurable snoop filters for cache coherent systems |
US10776282B2 (en) | 2017-12-15 | 2020-09-15 | Advanced Micro Devices, Inc. | Home agent based cache transfer acceleration scheme |
-
2017
- 2017-12-15 US US15/844,215 patent/US10776282B2/en active Active
-
2018
- 2018-09-19 CN CN201880088010.1A patent/CN111656332B/zh active Active
- 2018-09-19 EP EP18783262.1A patent/EP3724772B1/en active Active
- 2018-09-19 WO PCT/US2018/051756 patent/WO2019118037A1/en unknown
- 2018-09-19 JP JP2020532672A patent/JP6975335B2/ja active Active
- 2018-09-19 EP EP21202235.4A patent/EP3961409B1/en active Active
- 2018-09-19 KR KR1020207020385A patent/KR102383040B1/ko active IP Right Grant
-
2020
- 2020-09-14 US US17/019,999 patent/US11782848B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090327616A1 (en) * | 2008-06-30 | 2009-12-31 | Patrick Conway | Snoop filtering mechanism |
US20160117250A1 (en) * | 2014-10-22 | 2016-04-28 | Imagination Technologies Limited | Apparatus and Method of Throttling Hardware Pre-fetch |
US20170177484A1 (en) * | 2015-12-22 | 2017-06-22 | Advanced Micro Devices, Inc. | Region probe filter for distributed memory system |
US20170255557A1 (en) * | 2016-03-07 | 2017-09-07 | Qualcomm Incorporated | Self-healing coarse-grained snoop filter |
US20170308297A1 (en) * | 2016-04-22 | 2017-10-26 | Advanced Micro Devices, Inc. | Object tagged memory monitoring method and processing apparatus |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117651021A (zh) * | 2024-01-25 | 2024-03-05 | 苏州萨沙迈半导体有限公司 | 过滤器及其控制方法和装置、电气设备 |
CN117651021B (zh) * | 2024-01-25 | 2024-04-30 | 苏州萨沙迈半导体有限公司 | 过滤器及其控制方法和装置、电气设备 |
Also Published As
Publication number | Publication date |
---|---|
EP3961409A1 (en) | 2022-03-02 |
EP3724772A1 (en) | 2020-10-21 |
JP2021507371A (ja) | 2021-02-22 |
US20210064545A1 (en) | 2021-03-04 |
CN111656332B (zh) | 2024-08-27 |
EP3961409B1 (en) | 2024-04-10 |
US11782848B2 (en) | 2023-10-10 |
WO2019118037A1 (en) | 2019-06-20 |
KR102383040B1 (ko) | 2022-04-08 |
JP6975335B2 (ja) | 2021-12-01 |
KR20200096975A (ko) | 2020-08-14 |
US20190188155A1 (en) | 2019-06-20 |
US10776282B2 (en) | 2020-09-15 |
EP3724772B1 (en) | 2021-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7390304B2 (ja) | 大規模なキャッシュサイズに適合する領域ベースのディレクトリスキーム | |
US11782848B2 (en) | Home agent based cache transfer acceleration scheme | |
EP3850490B1 (en) | Accelerating accesses to private regions in a region-based cache directory scheme | |
US10503648B2 (en) | Cache to cache data transfer acceleration techniques | |
EP4035015B1 (en) | System probe aware last level cache insertion bypassing | |
CN111699476A (zh) | 取消和回放协议方案以改进排序带宽 | |
US20230325317A1 (en) | Reducing probe filter accesses for processing in memory requests |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |