CN113900967A - 高速缓存存储系统 - Google Patents

高速缓存存储系统 Download PDF

Info

Publication number
CN113900967A
CN113900967A CN202110685905.7A CN202110685905A CN113900967A CN 113900967 A CN113900967 A CN 113900967A CN 202110685905 A CN202110685905 A CN 202110685905A CN 113900967 A CN113900967 A CN 113900967A
Authority
CN
China
Prior art keywords
memory
location
response
local cache
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110685905.7A
Other languages
English (en)
Inventor
伊兰·帕尔多
希勒尔·查普曼
马克·B·罗森布鲁斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mellanox Technologies Ltd
Original Assignee
Mellanox Technologies Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mellanox Technologies Ltd filed Critical Mellanox Technologies Ltd
Publication of CN113900967A publication Critical patent/CN113900967A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0824Distributed directories, e.g. linked lists of caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

在一个实施方式中,一种计算机服务器系统包括:用于跨存储器位置存储数据的存储器;包括相应的本地高速缓存的多个处理核心,在相应的本地高速缓存中高速缓存从存储器中读取的高速缓存行;互连,用于管理存储器和本地高速缓存的读取操作和写入操作,根据从存储器中读取高速缓存的高速缓存行的相应存储器位置来维持高速缓存的高速缓存行的本地高速缓存位置数据,接收对要被写入到存储器位置之一的数据元素的写入请求,响应于本地高速缓存位置数据和写入请求的存储器位置,查找将数据元素写入到的本地高速缓存位置,并且向第一处理核心发送更新请求,以响应于查找到的本地高速缓存位置,用数据元素来更新相应的第一本地高速缓存。

Description

高速缓存存储系统
技术领域
本发明涉及计算机系统,尤其但非排他地涉及高速缓存加载。
背景技术
在多核心系统中,将存储器(例如,DRAM中)中的缓冲区分配给每个核心。缓冲区由核心管理,并且也可以将缓冲区空间分配给网络接口控制器(NIC),NIC在网络中的核心和设备之间传送分组。从网络接收的发往特定核心的分组数据与描述符一起被存储在分配给该核心的存储器中的缓冲区中。在一些系统中,可以由NIC使用接收侧缩放(RSS)来对接收分组进行分类,并基于该分类将接收分组数据放置到与相应核心相关联的相应队列中。NIC还可以(例如,经由中断)通知核心:在存储器中存在接收分组数据,核心从该存储器中检索分组描述符然后检索分组数据(例如,分组净荷),以用于更新其本地高速缓存。类似的过程可以被用于其他外围设备,诸如快速非易失性存储器(NVMe)固态驱动器(SSD)设备。
发明内容
根据本公开的实施方式,提供了一种计算机服务器系统,包括:存储器,被配置为跨存储器位置存储数据;包括相应的本地高速缓存的多个处理核心,在相应的本地高速缓存中高速缓存从存储器中读取的高速缓存行;以及互连,被配置为:管理存储器和本地高速缓存的读取操作和写入操作,根据从存储器中读取高速缓存的高速缓存行的相应存储器位置,维持高速缓存的高速缓存行的本地高速缓存位置数据,接收对要被写入到存储器位置之一的数据元素的写入请求,并且响应于本地高速缓存位置数据和写入请求的存储器位置,查找将数据元素写入到的本地高速缓存位置,并且向处理核心中的第一处理核心发送更新请求,以响应于查找到的本地高速缓存位置,用数据元素来更新处理核心中的相应第一本地高速缓存。
进一步根据本公开的实施方式,第一处理核心被配置为响应于所发送的更新请求,用数据元素来更新第一本地高速缓存。
仍进一步根据本公开的实施方式,该互连包括目录,该目录被配置为根据高速缓存的高速缓存行的存储器位置中的相应存储器位置来存储高速缓存的高速缓存行的本地高速缓存位置数据,并且该互连被配置为响应于写入请求的存储器位置的目录来查询目录,从而产生查找到的本地高速缓存位置。
另外,根据本公开的实施方式,该系统包括接口控制器,该接口控制器被配置为从至少一个设备接收分组,该分组包括数据元素,并生成写入请求。
此外,根据本公开的实施方式,接口控制器被配置为:即使接口控制器不知道本地高速缓存器位置,也用将数据元素推送到第一本地高速缓存器的指示来标记写入请求。
进一步根据本公开的实施方式,接口控制器被配置为:响应于接收分组的报头数据来对接收分组进行分类,响应于接收分组的分类来查找将接收分组的数据元素写入到的存储器位置之一;并且响应于查找到的存储器位置来生成对数据元素的写入请求。
仍进一步根据本公开的实施方式,接口控制器被配置为:响应于接收分组的分类来查找用于接收分组的队列,响应于查找到的队列来查找用于接收分组的缓冲区描述符,并且响应于查找到的缓冲区描述符来查找将接收分组的数据元素写入到的存储器位置。
另外,根据本公开的实施方式,接口控制器包括用于管理通过网络接收分组的网络接口控制器,该至少一个设备包括网络中的至少一个节点。
此外,根据本公开的实施方式,接口控制器包括外围设备控制器,并且至少一个设备包括至少一个外围设备。
此外,根据本公开的实施方式,至少一个外围设备包括以下磁盘驱动器或硬件加速器中的一个或多个。
根据本公开的另一实施方式,还提供了一种计算机服务器方法,包括:跨存储器位置将数据存储在存储器中;在多个处理核心的本地高速缓存中高速缓存从存储器中读取的高速缓存行;管理存储器和本地高速缓存的读取操作和写入操作,根据从存储器中读取高速缓存的高速缓存行的相应存储器位置,维持高速缓存的高速缓存行的本地高速缓存位置数据,接收对要被写入到存储器位置之一的数据元素的写入请求,响应于本地高速缓存位置数据和写入请求的存储器位置,查找将数据元素写入到的本地高速缓存位置,并且向处理核心中的第一处理核心发送更新请求,以响应于查找到的相应本地高速缓存位置,用数据元素来更新本地高速缓存中的相应第一本地高速缓存。
仍进一步根据本公开的实施方式,该方法包括响应于所发送的更新请求,用数据元素来更新第一本地高速缓存。
另外,根据本公开的实施方式,该方法包括:根据高速缓存的高速缓存行的存储器位置中的相应存储器位置来在目录中存储高速缓存的高速缓存行的本地高速缓存位置数据;并且响应于写入请求的存储器位置来查询目录,从而产生查找到的本地高速缓存位置。
此外,根据本公开的实施方式,该方法包括:从至少一个设备接收分组,该分组包括数据元素;并且生成写入请求。
进一步根据本公开的实施方式,该方法包括:即使接口控制器不知道本地高速缓存器位置,也由接口控制器用将分组的数据元素推送到第一本地高速缓存器的指示来标记写入请求。
仍进一步根据本公开的实施方式,该方法包括:响应于接收分组的报头数据,对接收分组进行分类;响应于接收分组的分类,查找将接收分组的数据元素写入到的存储器位置之一;并且响应于查找到的存储器位置,生成对接收分组的写入请求。
另外,根据本公开的实施方式,该方法包括:响应于接收分组的分类,查找用于接收分组的队列;响应于查找到的队列,查找用于接收分组的缓冲区描述符;以及响应于查找到的缓冲区描述符,查找将接收分组的数据元素写入到的存储器位置。
此外,根据本公开的实施方式,接收分组是由网络接口控制器执行的,该方法还包括:网络接口控制器管理通过网络接收分组,该至少一个设备包括网络中的至少一个节点。
此外,根据本公开的实施方式,接收分组是由外围设备控制器执行的,并且至少一个设备包括至少一个外围设备。
仍进一步根据本公开的实施方式,至少一个外围设备包括以下中的一个或多个:磁盘驱动器或硬件加速器。
附图说明
从以下结合附图的详细描述中将会理解本发明,其中:
图1是根据本发明的实施方式构造和操作的计算机服务器系统的框图;
图2是包括在图1的系统中的互连的操作方法中的步骤的流程图;
图3是包括在图1的系统中的接口控制器的操作方法中的步骤的流程图;
图4是管理包括在图1的系统中的本地高速缓存更新的方法中的步骤的流程图;以及
图5是更新包括在图1的系统中的本地高速缓存的方法中的步骤的流程图。
具体实施方式
如前面所提及,在多核心系统中,网络接口控制器(NIC)可以(例如,经由中断)通知相关核心:在存储器(例如,DRAM或SRAM)中存在接收分组数据,然后该核心从该存储器中检索分组描述符然后检索分组数据,以用于更新其本地高速缓存。例如,使用快速外围组件互连(PCIe)消息信令中断(MSI/MSI-x),中断消息以正确的核心为目标,但描述符和分组数据通常被写入到存储器中的存储器位置,而不是核心的本地高速缓存。被称为接收侧缩放(RSS)的方案可以被用来将描述符和分组数据写入到通常与核心相关联的专用队列中,从而避免不同核心访问共享队列时的争用。但是,NIC硬件通常不知道哪个队列属于哪个核心。
上述方法缺乏性能,因为分组数据首先被写入到存储器,而不是相关的本地高速缓存。通过将分组数据直接写入到相关的高速缓存可以提高性能。
上述问题的一种可能的解决方案是使NIC知道RSS队列与哪个核心相关联,以便NIC将数据推送到该核心的高速缓存中。这个解决方案取决于NIC中对特征的特定支持,因此是次优的并且取决于设备。
本发明的实施方式通过将分组描述符和净荷数据直接写入到托管多核心系统的设备的中央处理单元(CPU)芯片互连级别处的相关的本地高速缓存位置来解决上述问题。因此,支持和由此产生的效率可以通过任何NIC或其他合适的设备使用(例如,由CPU分配给NIC或其他合适的设备的)存储器缓冲区将数据传送到CPU软件来实现,而不管NIC(或其他设备)是否支持。在一些实施方式中,CPU可以由图形处理单元(GPU)或任何合适的处理设备来代替。
在一些实施方式中,任何合适的数据元素(例如,净荷数据或其他数据)都可以被直接写入到相关的本地高速缓存位置,而无论这些数据元素来自NIC、另一个接口控制器还是另一个元素,诸如图形处理单元(GPU)或其他CPU。
假设作为存储器一致性协议的一部分而被跟踪的信息,基于相对于在将净荷数据直接写入到存储器时净荷数据将被写入到的相同存储器位置(例如,存储器地址)的本地高速缓存的最新历史记录,来提供将净荷数据写入到本地高速缓存中的地方的最佳估计。因此,CPU互连使用作为存储器一致性协议(下面更详细描述)的一部分而被跟踪的信息,该信息通过存储器位置(例如,存储器地址)来跟踪本地高速缓存使用,其中处理核心从存储器中从该存储器位置中读取高速缓存行。被跟踪的信息包括高速缓存存储器位置及其当前对应的本地高速缓存位置。互连通过查找与包括在写入请求中的存储器位置相对应的高速缓存位置来处理来自NIC的写入请求(写入净荷数据),并指导相关核心利用接收到的净荷数据相应地更新其本地高速缓存。如果未查找到针对一些存储器位置的对应高速缓存位置,则将相关的净荷数据写入到相应存储器位置处的存储器中。
存储器一致性是一个影响计算机系统设计的问题,在该计算机系统中,两个或更多处理器或核心共享一个公共存储器区域。在多处理器或多核心系统中,有两个或更多处理元件同时工作,因此它们有可能同时访问同一存储器位置。如果它们都没有更改此位置中的数据,则它们可以无限地共享之并根据它们需要而将其高速缓存。但是,一旦一个对该位置进行更新,另一个就可能工作在过时的副本上,例如驻留在其本地高速缓存中的副本。因此,需要一种方案(例如,存储器一致性协议)来将所有共享值的变化通知所有处理元件,从而为系统提供一致性存储器。一致性协议例如可以基于目录和/或基于侦听。
因此,在这样的多核心系统中,根据存储器一致性协议来管理对存储器的读取和写入以及高速缓存更新,在该协议中,CPU互连维护一个目录,该目录包括一张表,该表列出了当前本地高速缓存的高速缓存行的高速缓存位置以及它们的关联状态和存储器位置(例如,存储器地址),从存储器(例如,DRAM或SRAM)中从该存储器位置中读取高速缓存行。
例如,每当核心访问尚未在本地高速缓存中的DRAM中的存储器位置时,就会通知CPU互连:使用目录中的表经由存储器位置已发生访问并对高速缓存的存储器位置保持跟踪。
作为另一示例,如果核心请求从DRAM读取行,则CPU互连接收该读取请求并检查目录以检查与该存储器位置相关联的最新更新版本是在DRAM中还是在本地高速缓存中。然后,可以由请求核心使用数据的最新版本。
作为又一个示例,如果核心想要更新高速缓存的高速缓存行,则该核心通知互连有关该更新,并且该高速缓存行的所有其他高速缓存的副本(如目录中所列出的)均无效。互连可以发送侦听请求以使其他高速缓存行无效,然后将该核心写入权限授予该存储器位置的整个高速缓存行。
举例来说,对于写入事务,CPU互连可以接收写入请求以将数据写入到存储器中的存储器位置。CPU互连检查目录,以确定是否存在该存储器位置的高速缓存的副本。如果存在高速缓存的副本,则CPU互连可以将侦听请求发送到相关的(一个或多个)核心,以使它们的副本无效。在接收到无效确认之后,CPU互连将数据写入到该存储器位置处的存储器(例如,DRAM)。
在本发明的实施方式中,在从诸如NIC之类的接口控制器接收到写入请求后,CPU互连不是使相关核心上的副本无效,而是根据目录中的已知高速缓存位置数据而将数据直接写入到相关处理核心的本地高速缓存中。如果本地高速缓存中没有针对该存储器位置的高速缓存副本,则数据将被写入到该存储器位置处的存储器中。
将数据直接写入到本地高速缓存具有若干优点。首先,避免了在转发数据之前侦听无效的往返延迟。其次,关于分组描述符,通常相关的处理核心会轮询描述符,以使得将存储器地址高速缓存在正确的核心的本地高速缓存中。第三,关于分组数据,通常为每个核心实现(指派给不同核心的存储器缓冲区中的)一个缓冲池,因此使用存储器缓冲区的最后一个分组已由将要处理新分组的核心处理。在这种情况下,存储器地址也将被高速缓存在正确的目标核心的本地高速缓存中。第四,CPU互连自然地将高速缓存位置作为其高速缓存一致性实现的一部分来进行跟踪,而无需明确了解接口控制器的行为和应用类型。
系统描述
现在对图1进行参考,图1是根据本发明的实施方式构造和操作的计算机服务器系统10的框图。计算机服务器系统10包括多个处理核心12、存储器14(诸如动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM))、CPU互连16以及接口控制器18。存储器14被配置为跨多个存储器位置存储数据。处理核心12包括相应的本地高速缓存20(例如,每个处理核心12一个本地高速缓存20),在其中高速缓存从存储器14中从存储器14中的一些存储器位置中读取的高速缓存行。在一些实施方式中,处理核心12可以被包括在诸如中央处理单元或图形处理单元(GPU)之类的处理单元中。CPU互连16可以由任何合适的互连代替,例如但不限于GPU互连。互连16包括目录22,目录22被配置为根据从存储器14中读取高速缓存的高速缓存行的相应存储器位置来存储高速缓存的高速缓存行的本地高速缓存位置数据和状态数据。目录22可以包括:由存储器位置来索引的表,并且对于每个列出的存储器位置,包括当前存储来自该存储器位置中的数据的对应的本地高速缓存位置。每个列出的存储器位置还可以包括对应的高速缓存行的状态。该状态可以包括:“脏”,其指示已从包括在存储器14中的对应数据中修改了高速缓存的数据;以及“干净”,其指示高速缓存的数据尚未被修改;“独占”,其指示只有一个核心具有数据的副本;“共享”,其指示存在从存储器14高速缓存的数据的多个副本。状态可以取决于所使用的一致性协议。从高速缓存中移除的高速缓存行通常也会从表中被移除。目录22由互连16来更新,互连16接收读取和写入请求以及被用来对目录22进行更新的更新通知。互连16还根据任何合适的存储器一致性协议来执行其他存储器一致性任务。
接口控制器18可以包括任何合适的接口控制器,其从至少一个设备26接收分组并将分组发送到至少一个设备26。在一些实施方式中,接口控制器18包括网络接口控制器(NIC)以管理通过网络从(一个或多个)设备26接收分组,该设备26可以是网络24中的一个(或多个)节点。
在一些实施方式中,接口控制器18包括外围设备控制器,并且(一个或多个)设备26包括至少一个外围设备。在一些实施方式中,外围设备包括磁盘驱动器和/或硬件加速器。
现在对图2进行参考,图2是包括图1的系统10中的互连16的操作方法中的步骤的流程图28。还对图1进行参考。互连16被配置为管理(框30)存储器14和本地高速缓存20的读取操作和写入操作,包括对本地高速缓存20的更新和无效,同时根据任何合适的存储器一致性协议来维持存储器的一致性。互连16被配置为根据从存储器14中读取高速缓存的高速缓存行的相应存储器位置,在目录22中维持(框32)当前高速缓存的高速缓存行的状态数据和本地高速缓存位置数据。本地高速缓存数据和状态数据可以被存储在根据存储器位置来索引的表中。例如,在本地高速缓存20中高速缓存的每个高速缓存行可以包括表中的行,该行包括:从存储器14中读取高速缓存的高速缓存行的存储器位置;在本地高速缓存20中对存高速缓存行进行高速缓的高速缓存位置;以及高速缓存行的状态。
现在对图3进行参考,图3是包括图1的系统10中的接口控制器18的操作方法中的步骤的流程图40。还对图1进行参考。接口控制器18被配置为从(一个或多个)设备26接收(框42)分组。接口控制器18被配置为响应于接收分组的报头数据来分类(框44)接收分组。可以根据任何合适的机制来执行分类,例如但不限于RSS。
在一些实施方式中,接口控制器18被配置为响应于接收分组的分类来查找(框46)接收分组的接收队列(在其中张贴接收分组)。接口控制器18被配置为响应于查找到的队列,查找(框48)用于接收分组的缓冲区描述符。接口控制器18被配置为响应于接收分组的分类而查找(框50)将接收分组的净荷数据写入到的存储器位置。在一些实施方式中,接口控制器18被配置为响应于查找到的缓冲区描述符,查找将接收分组的净荷数据写入到的存储器位置。
在一些实施方式中,接口控制器18将接收分组的净荷数据写入到存储器缓冲区(逻辑缓冲区,该逻辑缓冲区可以在任何合适的物理位置)中,随后该净荷数据从该存储器缓冲区被传送到本地高速缓存20之一,并且将分组的指示(例如,分组已到达)和缓冲区描述符(例如,完成队列元素(CQE))写入到存储器位置中。
接口控制器18被配置为生成(框52)对要被写入到查找到的存储器位置(在框50的步骤中查找到的)的(接收分组的)净荷数据的写入请求。在一些实施方式中,接口控制器18被配置为:即使接口控制器不知道本地高速缓存位置,也用将分组的净荷数据推送到本地高速缓存20之一的指示来标记写入请求。
实际上,接口控制器18的一些或全部功能可以被组合在单个物理组件中,或者可替代地,使用多个物理组件来实现。这些物理组件可以包括硬连线或可编程设备,或两者的组合。在一些实施方式中,接口控制器18的至少一些功能可以在合适的软件控制下由可编程处理器来执行。例如,该软件可以通过网络以电子的形式被下载到设备。可替代地或附加地,软件可以被存储在有形的、非暂时性的计算机可读存储介质中,诸如光、磁或电子存储器。
对于随后的分组或任何其他合适的数据,可以重复上述框42-52的步骤。术语“净荷数据”在上面和下面被用作数据元素的示例,并且任何其他合适的数据元素可以代替净荷数据。
现在对图4进行参考,图4是包括在图1的系统20中管理本地高速缓存更新的方法中的步骤的流程图60。
互连16被配置为从接口控制器18接收(框62)写入请求(用于将净荷数据写入到由接口控制器18查找到的存储器位置)。互连16被配置为查找(框64)(当前使用的)本地高速缓存20的本地高速缓存位置,其中响应于(存储在目录22中的)本地高速缓存位置数据和写入请求的存储器位置来写入接收分组的净荷数据。作为框64的子步骤,互连16被配置为响应于写入请求的存储器位置(例如,包括在写入请求中的相应存储器位置)来查询(框66)目录22,从而产生本地高速缓存20的本地高速缓存位置,在其中写入接收分组的净荷数据。
互连16被配置为向相应的处理核心12(与查找到的本地高速缓存位置相关联)发送更新请求,以响应于查找到的(当前使用的)本地高速缓存位置,用接收分组的净荷数据来更新(框68)相应的本地高速缓存20。换句话说,用分组的净荷数据来更新某个本地高速缓存20的更新请求被发送到包括该本地高速缓存20的处理核心12,该本地高速缓存20包括针对该分组查找到的相关的(当前使用的)本地高速缓存位置。如果在框66的步骤中未查找到存储器位置,这意味着该存储器位置未与当前高速缓存的高速缓存行之一相关联,则互连16被配置为将相关的净荷数据写入到存储器14中的该存储器位置。
实际上,互连16的一些或全部功能可以被组合在单个物理组件中,或者可替代地,使用多个物理组件来实现。这些物理组件可以包括硬连线或可编程设备,或两者的组合。在一些实施方式中,互连16的至少一些功能可以在合适的软件控制下由可编程处理器来执行。例如,该软件可以通过网络以电子的形式下载到设备。可替代地或附加地,软件可以被存储在有形的、非暂时性的计算机可读存储介质中,诸如光、磁或电子存储器。
对于随后的写入请求,可以重复上述框62-68的步骤。
现在对图5进行参考,图5是包括在图1的系统中更新本地高速缓存20的方法中的步骤的流程图80。还对图1进行参考。相关的处理核心12被配置为接收(框82)来自互连16的更新请求。换句话说,每个处理核心12接收寻址到该处理核心12的更新请求。相关的处理核心12被配置为从在其中存储净荷数据的存储器缓冲区中检索相应分组的净荷数据,并响应于发送的更新请求,用相应分组的净荷数据来更新相应的本地高速缓存20(即,每个处理核心12更新其自己的本地高速缓存20)。
对于随后的更新请求,可以重复上述框82-84的步骤。
实际上,处理核心12中的一些或全部可以被组合在单个物理组件中,或者可替代地,使用多个物理组件来实现。这些物理组件可以包括硬连线或可编程设备,或两者的组合。在一些实施方式中,处理核心12的至少一些功能可以在合适的软件控制下由可编程处理器来执行。该软件可以例如通过网络以电子的形式下载到设备。可替代地或附加地,软件可以被存储在有形的、非暂时性的计算机可读存储介质中,诸如光、磁或电子存储器。
为了清楚起见,在分开的实施方式的上下文中描述的本发明的各种特征也可以在单个实施方式中被组合提供。相反,为简洁起见,在单个实施方式的上下文中描述的本发明的各种特征也可以分开地或以任何合适的子组合来提供。
通过示例例证了上述实施方式,并且本发明不受以上已经具体示出和描述的内容的限制。相反,本发明的范围包括上述各种特征的组合和子组合,以及本领域技术人员在阅读前述说明后将想到的并且在现有技术中未公开的变型和修改。

Claims (20)

1.一种计算机服务器系统,包括:
存储器,所述存储器被配置为跨存储器位置存储数据;
包括相应的本地高速缓存的多个处理核心,在所述相应的本地高速缓存中高速缓存从所述存储器中读取的高速缓存行;
互连,所述互连被配置为:
管理所述存储器和所述本地高速缓存的读取操作和写入操作;
根据从所述存储器中读取高速缓存的所述高速缓存行的所述存储器位置中的相应存储器位置,维持高速缓存的所述高速缓存行的本地高速缓存位置数据;
接收对要被写入到所述存储器位置之一的数据元素的写入请求;
响应于所述本地高速缓存位置数据和所述写入请求的所述存储器位置,查找将所述数据元素写入到的本地高速缓存位置;以及
向所述处理核心中的第一处理核心发送更新请求,以响应于查找到的本地高速缓存位置,用所述数据元素来更新所述本地高速缓存中的相应第一本地高速缓存。
2.根据权利要求1所述的系统,其中所述第一处理核心被配置为响应于所发送的更新请求,用所述数据元素来更新所述第一本地高速缓存。
3.根据权利要求1所述的系统,其中:
所述互连包括目录,所述目录被配置为根据高速缓存的所述高速缓存行的所述存储器位置中的相应存储器位置来存储高速缓存的所述高速缓存行的所述本地高速缓存位置数据;以及
所述互连被配置为响应于所述写入请求的所述存储器位置来查询所述目录,从而产生所述查找到的本地高速缓存位置。
4.根据权利要求1所述的系统,还包括接口控制器,所述接口控制器被配置为:
从至少一个设备接收分组,所述分组包括所述数据元素;以及
生成所述写入请求。
5.根据权利要求4所述的系统,其中所述接口控制器被配置为:即使所述接口控制器不知道本地高速缓存器位置,也用将所述数据元素推送到所述第一本地高速缓存器的指示来标记所述写入请求。
6.根据权利要求4所述的系统,其中所述接口控制器被配置为:
响应于所述接收分组的报头数据,对所述接收分组进行分类;
响应于所述接收分组的所述分类,查找将所述接收分组的所述数据元素写入到的所述存储器位置之一;以及
响应于查找到的所述存储器位置,生成对所述数据元素的所述写入请求。
7.根据权利要求6所述的系统,其中所述接口控制器被配置为:
响应于所述接收分组的所述分类,查找用于所述接收分组的队列;
响应于查找到的所述队列,查找用于所述接收分组的缓冲区描述符;以及
响应于查找到的所述缓冲区描述符,查找将所述接收分组的所述数据元素写入到的所述存储器位置。
8.根据权利要求4所述的系统,其中所述接口控制器包括用于管理通过网络接收分组的网络接口控制器,所述至少一个设备包括所述网络中的至少一个节点。
9.根据权利要求4所述的系统,其中所述接口控制器包括外围设备控制器,并且所述至少一个设备包括至少一个外围设备。
10.根据权利要求9所述的系统,其中所述至少一个外围设备包括以下中的一个或多个:磁盘驱动器;或硬件加速器。
11.一种计算机服务器方法,包括:
跨存储器位置将数据存储在存储器中;
在多个处理核心的本地高速缓存中高速缓存从所述存储器中读取的高速缓存行;
管理所述存储器和所述本地高速缓存的读取操作和写入操作;
根据从所述存储器中读取高速缓存的所述高速缓存行的所述存储器位置的相应存储器位置,维持高速缓存的所述高速缓存行的本地高速缓存位置数据;
接收对要被写入到所述存储器位置之一的数据元素的写入请求;
响应于所述本地高速缓存位置数据和所述写入请求的所述存储器位置,查找将所述数据元素写入到的本地高速缓存位置;以及
向所述处理核心中的第一处理核心发送更新请求,以响应于查找到的相应本地高速缓存位置,用所述数据元素来更新所述本地高速缓存中的相应第一本地高速缓存。
12.根据权利要求11所述的方法,还包括:响应于所发送的更新请求,用所述数据元素来更新所述第一本地高速缓存。
13.根据权利要求11所述的方法,还包括:
根据高速缓存的所述高速缓存行的所述存储器位置中的相应存储器位置来在目录中存储高速缓存的所述高速缓存行的所述本地高速缓存位置数据;以及
响应于所述写入请求的所述存储器位置来查询所述目录,从而产生查找到的本地高速缓存位置。
14.根据权利要求11所述的方法,还包括:
从至少一个设备接收分组,所述分组包括所述数据元素;以及
生成所述写入请求。
15.根据权利要求14所述的方法,还包括:即使接口控制器不知道本地高速缓存器位置,也由所述接口控制器用将所述分组的所述数据元素推送到所述第一本地高速缓存器的指示来标记所述写入请求。
16.根据权利要求14所述的方法,还包括:
响应于所述接收分组的报头数据,对所述接收分组进行分类;
响应于所述接收分组的所述分类,查找将所述接收分组的所述数据元素写入到的所述存储器位置之一;以及
响应于查找到的所述存储器位置,生成对所述接收分组的所述写入请求。
17.根据权利要求16所述的方法,还包括:
响应于所述接收分组的所述分类,查找用于所述接收分组的队列;
响应于查找到的所述队列,查找用于所述接收分组的缓冲区描述符;以及
响应于查找到的所述缓冲区描述符,查找将所述接收分组的所述数据元素写入到的所述存储器位置。
18.根据权利要求14所述的方法,其中接收所述分组是由网络接口控制器执行的,所述方法还包括:所述网络接口控制器管理通过网络接收分组,所述至少一个设备包括所述网络中的至少一个节点。
19.根据权利要求14所述的方法,其中接收所述分组是由外围设备控制器执行的,并且所述至少一个设备包括至少一个外围设备。
20.根据权利要求19所述的方法,其中所述至少一个外围设备包括以下中的一个或多个:磁盘驱动器;或硬件加速器。
CN202110685905.7A 2020-06-22 2021-06-21 高速缓存存储系统 Pending CN113900967A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/907,347 US20210397560A1 (en) 2020-06-22 2020-06-22 Cache stashing system
US16/907,347 2020-06-22

Publications (1)

Publication Number Publication Date
CN113900967A true CN113900967A (zh) 2022-01-07

Family

ID=78823256

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110685905.7A Pending CN113900967A (zh) 2020-06-22 2021-06-21 高速缓存存储系统

Country Status (3)

Country Link
US (1) US20210397560A1 (zh)
CN (1) CN113900967A (zh)
DE (1) DE102021206160A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024066668A1 (en) * 2022-09-30 2024-04-04 International Business Machines Corporation Fast memory clear of system memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024066668A1 (en) * 2022-09-30 2024-04-04 International Business Machines Corporation Fast memory clear of system memory

Also Published As

Publication number Publication date
DE102021206160A1 (de) 2021-12-23
US20210397560A1 (en) 2021-12-23

Similar Documents

Publication Publication Date Title
US8015365B2 (en) Reducing back invalidation transactions from a snoop filter
US10169080B2 (en) Method for work scheduling in a multi-chip system
CN108701092B (zh) 自愈粗粒探听过滤器
US10402327B2 (en) Network-aware cache coherence protocol enhancement
US7996625B2 (en) Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
TWI391821B (zh) 在互連結構上發佈請求而無參照基於標籤快取狀態的低階快取之處理單元及資料處理系統與方法
US9529532B2 (en) Method and apparatus for memory allocation in a multi-node system
US8631210B2 (en) Allocation and write policy for a glueless area-efficient directory cache for hotly contested cache lines
US7836144B2 (en) System and method for a 3-hop cache coherency protocol
US10592459B2 (en) Method and system for ordering I/O access in a multi-node environment
US6772298B2 (en) Method and apparatus for invalidating a cache line without data return in a multi-node architecture
US20150254182A1 (en) Multi-core network processor interconnect with multi-node connection
US9372800B2 (en) Inter-chip interconnect protocol for a multi-chip system
JP2008027435A (ja) 排他的所有権のスヌープフィルタ
JP2005519391A (ja) 共有ベクトルの増加を伴わないdsmマルチプロセッサシステムにおけるキャッシュコヒーレンスのための方法およびシステム
US20090248989A1 (en) Multiprocessor computer system with reduced directory requirement
US9223799B1 (en) Lightweight metadata sharing protocol for location transparent file access
CN113900967A (zh) 高速缓存存储系统
US11914865B2 (en) Methods and systems for limiting data traffic while processing computer system operations
US11803470B2 (en) Multi-level cache coherency protocol for cache line evictions
US10776266B2 (en) Apparatus and method of modification of stored data
CN112579479B (zh) 在维护缓存一致性时维护事务次序的处理器及其方法
CN116848516A (zh) 分布式缓存系统和数据缓存方法
US20050289302A1 (en) Multiple processor cache intervention associated with a shared memory unit

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