用于将高速缓存行降级到共享高速缓存的技术

文档序号:1598842 发布日期:2020-01-07 浏览:7次 >En<

阅读说明:本技术 用于将高速缓存行降级到共享高速缓存的技术 (Techniques for demoting cache lines to a shared cache ) 是由 E.塔米尔 B.理查森 N.鲍尔 A.坎宁安 D.亨特 K.德维 C.韦 于 2019-05-30 设计创作,主要内容包括:用于将高速缓存行降级到共享高速缓存的技术包括一种计算设备,其具有有着多个核的至少一个处理器、具有核本地高速缓存和共享高速缓存的高速缓冲存储器、以及高速缓存行降级设备。计算设备的处理器的处理器核被配置成检索所接收的网络分组的数据的至少一部分,并将该数据移动到核本地高速缓存的一个或多个核本地高速缓存行中。处理器核被进一步配置成对该数据执行处理操作,并在已经完成处理操作之后向高速缓存行降级设备传输高速缓存行降级命令。高速缓存行降级设备被配置成执行高速缓存行降级操作以将该数据从核本地高速缓存行降级到共享高速缓存的共享高速缓存行。本文中描述了其他实施例。(Techniques for destaging cache lines to a shared cache include a computing device having at least one processor with a plurality of cores, a cache memory having a core local cache and a shared cache, and a cache line destaging device. A processor core of a processor of the computing device is configured to retrieve at least a portion of the data of the received network packet and move the data into one or more core local cache lines of the core local cache. The processor core is further configured to perform a processing operation on the data and transmit a cache line destage command to the cache line destage device after the processing operation has been completed. The cache line destaging device is configured to perform a cache line destaging operation to destage the data from the core local cache line to a shared cache line of the shared cache. Other embodiments are described herein.)

用于将高速缓存行降级到共享高速缓存的技术

背景技术

现代计算设备已经成为用于个人、商业和社交用途的普遍存在的工具。照此,许多现代计算设备能够连接到各种数据网络,包括因特网,以通过各种数据网络以不同的速率传输和接收数据通信。为了促进计算设备之间的通信,数据网络通常包括一个或多个网络计算设备(例如,计算服务器、存储服务器等),以(例如,经由交换机、路由器等)路由进入/离开网络的通信(例如,北-南网络业务(traffic))和在网络中的网络计算设备之间的通信(例如,东-西网络业务)。在目前的分组交换网络架构中,在联网计算设备之间以网络分组的形式传输数据。在高级别处,在一个计算设备处将数据分组化成网络分组,并且通过网络经由传输设备(例如,计算设备的网络接口控制器(NIC))将所得分组传输到另一计算设备。

在网络分组的接收时,计算设备通常执行一个或多个处理操作(例如,防护(security)、网络地址转换(NAT)、负载均衡、深度分组检查(DPI)、传输控制协议(TCP)优化、缓存、因特网协议(IP)管理等)以确定计算设备将对网络分组做什么(例如,丢弃网络分组,处理/存储网络分组的至少一部分,转发网络分组等)。为了这么做,这样的分组处理往往被在分组处理流水线(例如,服务功能链)中执行,在所述分组处理流水线中网络分组的数据的至少一部分随着其被处理而从一个处理器核传递到另一个。然而,在这样的分组处理期间,由于跨核窥探而可能发生停顿,并且利用陈旧数据的高速缓存污染可能是个问题。

具体实施方式

虽然本公开的概念容许有各种修改和替代形式,但是已经通过示例的方式在图中示出并且将在本文中详细描述其特定实施例。然而,应当理解,没有将本公开的概念限制到所公开的特定形式的意图,而相反,意图是覆盖与本公开和随附权利要求一致的所有修改、等同方案和替代方案。

在说明书中对“一个实施例”、“实施例”、“说明性实施例”等的引用指示所描述的实施例可能包括特定特征、结构或特性,但是每一个实施例可能或可能不一定包括该特定特征、结构或特性。而且,这样的短语不一定是指相同的实施例。另外,当结合实施例描述特定特征、结构或特性时,主张:结合其他实施例来实现这样的特征、结构或特性处于本领域技术人员的知识内,无论是否被明确地描述。此外,应当领会,被包括在以“A、B和C中的至少一个”的形式的列表中的项目可以意味着(A);(B);(C);(A和B);(A和C);(B和C);或(A、B和C)。类似地,以“A、B或C中的至少一个”的形式列出的项目可以意味着(A);(B);(C);(A和B);(A和C);(B和C);或(A、B和C)。

在一些情况下,可以以硬件、固件、软件或其任何组合来实现所公开的实施例。所公开的实施例还可以被实现为一个或多个暂时性或非暂时性机器可读(例如,计算机可读)存储介质所承载的或存储在其上的指令,所述指令可以由一个或多个处理器读取和执行。机器可读存储介质可以体现为用于存储或传输以可由机器读取的形式的信息的任何存储设备、机构或其他物理结构(例如,易失性或非易失性存储器、媒体盘或其他媒体设备)。

在图中,可能以特定布置和/或排序示出一些结构特征或方法特征。然而,应当领会,可能不需要这样的特定布置和/或排序。更准确地说,在一些实施例中,可以以与说明性图中所示的方式和/或次序不同的方式和/或次序来布置这样的特征。此外,结构特征或方法特征在特定图中的包括不意在暗示这样的特征在所有实施例中都被需要,并且在一些实施例中可以不被包括或者可以与其他特征组合。

现在参考图1,在说明性实施例中,用于将高速缓存行降级到共享高速缓存的系统100包括经由网络104通信地耦合到网络计算设备106的源计算设备102。虽然被说明性地示为具有单个源计算设备102和单个网络计算设备106,但是在其他实施例中,系统100可以包括多个源计算设备102和多个网络计算设备106。应当领会,出于向说明书提供清楚的目的,源计算设备102和网络计算设备106在本文中已经被说明性地指定为“源”和“目的地”中的一个,并且源计算设备102和/或网络计算设备106可以能够执行本文中描述的任何功能。应当进一步领会,源计算设备102和网络计算设备106可以驻留在同一数据中心或高性能计算(HPC)环境中。换言之,源计算设备102和网络计算设备106可以驻留在经由一个或多个互连而连接的同一网络104中。

在使用中,源计算设备102和网络计算设备106向彼此传输并从彼此接收网络业务(例如,网络分组、帧等)。例如,网络计算设备106可以从源计算设备102接收网络分组。在网络分组的接收时,网络计算设备106,或者更具体地,网络计算设备106的主机结构接口(host fabric interface,HFI)126,标识要对网络分组的至少一部分执行的一个或多个处理操作,并对其执行某个级别的处理。为了这么做,处理器核110请求对先前可能已经存储或移动到(通常在处理器上或靠近处理器高速缓存的)共享高速缓冲存储器中的数据的访问。网络计算设备106被配置成将所请求的数据移动到核本地高速缓存(例如,核本地高速缓存114),以用于对由进行请求的处理器核110所请求的数据的较快访问。

时常,不止一个处理操作(例如,防护、网络地址转换(NAT)、负载均衡、深度分组检测(DPI)、传输控制协议(TCP)优化、缓存、因特网协议(IP)管理等)由网络计算设备执行,其中每一个操作通常由诸如服务功能链之类的分组处理流水线中的不同处理器核执行。因此,在处理完成时,由一个处理器核访问的数据需要被释放(例如,降级到共享高速缓存116),以便下一个处理器核执行其指定的处理操作。

为了这么做,如以下将进一步详细描述的,网络计算设备106被配置成:基于网络分组的大小,向高速缓存管理器传输指令以将(多个)高速缓存行从核本地高速缓存114降级到共享高速缓存116,或者向卸载设备(参见例如高速缓存行卸载设备130)传输命令以触发将由卸载设备执行以将(多个)高速缓存行从核本地高速缓存114降级到共享高速缓存116的高速缓存行降级操作。换言之,一旦已经完成处理,每一个处理器核就将可应用的分组高速缓存行降级到共享高速缓存116,这允许第一处理核上的更好的高速缓存再使用并且在分组处理流水线(例如,修改数据)或输入/输出(I/O)流水线中节省第二处理核上的跨核窥探。因此,与目前的技术不同,可以有效地避免由于跨核窥探和高速缓存污染引起的停顿。此外,还与目前的技术不同,可以避免当所请求的数据不在共享高速缓存中或者以其他方式不可由进行请求的处理器核访问时可归因于所有权请求的成本。

网络计算设备106可以被体现为能够执行本文中描述的功能的任何类型的计算或计算机设备,包括但不限于计算机、服务器(例如,独立的、安装在机架上的、刀片式等)、滑板(sled)(例如,计算滑板、加速器滑板、存储滑板、存储器滑板等)、增强或智能的网络接口控制器(NIC)/HFI、网络器具(例如,物理的或虚拟的)、路由器、交换机(例如,分解交换机、安装在机架上的交换机、独立交换机、受完全管理的交换机、受部分管理的交换机、全双工交换机和/或支持半双工通信模式的交换机)、web器具、分布式计算系统、基于处理器的系统和/或多处理器系统。

如图1中所示,说明性的网络计算设备106包括一个或多个处理器108、存储器118、I/O子系统120、一个或多个数据存储设备122、通信电路124、降级设备130,并且在一些实施例中包括一个或多个***设备128。应当领会,在其他实施例中,网络计算设备106可以包括其他或附加组件,诸如在典型计算设备中常见的那些(例如,各种输入/输出设备和/或其他组件)。此外,在一些实施例中,说明性组件中的一个或多个可以被合并在另一组件中,或者以其他方式形成另一组件的一部分。

(多个)处理器108可以体现为能够执行如本文中描述的各种计算功能的任何类型的设备或设备的集合。在一些实施例中,(多个)处理器108可以体现为一个或多个多核处理器、数字信号处理器(DSP)、微控制器、或者其他(多个)处理器或(多个)处理/控制电路。在一些实施例中,(多个)处理器108可以体现为、包括或以其他方式耦合到集成电路、嵌入式系统、现场可编程阵列(FPGA)(例如,可重新配置的电路)、片上系统(SOC)、专用集成电路(ASIC)、可重新配置的硬件或硬件电路、或者促进本文中描述的功能的执行的其他专用硬件。

(多个)说明性处理器108包括多个处理器核110(例如,两个处理器核、四个处理器核、八个处理器核、十六个处理器核等)和高速缓冲存储器112。处理器核110中的每一个可以体现为能够执行经编程的指令的独立逻辑执行单元。应当领会,在一些实施例中,网络计算设备106(例如,在超级计算机实施例中)可以包括数千个处理器核。(多个)处理器108中的每一个可以连接到在网络计算设备106的(未示出的)母板上的物理连接器或插座,该物理连接器或插座被配置成接受单个物理处理器封装(即,多核物理集成电路)。另外,处理器核110中的每一个通信地耦合到高速缓冲存储器112的至少一部分和可用于独立执行程序、操作、线程等的功能单元。应当领会,如本文中描述的(多个)处理器108不限于在同一管芯或插座上。

高速缓冲存储器112可以体现为:比起存储器118(即,主存储器),处理器108可以更快地访问的任何类型的高速缓存,诸如管芯上高速缓存或处理器上高速缓存。在其他实施例中,高速缓冲存储器112可以是管芯外高速缓存,但是驻留在与处理器108相同的片上系统(SoC)上。说明性高速缓冲存储器112包括被体现为核本地高速缓存114和共享高速缓存116的多级高速缓存架构。核本地高速缓存114可以体现为专用于处理器核110中的特定一个的高速缓冲存储器。因此,虽然被说明性地示为单个核本地高速缓存114,但是应当领会,在一些实施例中,对于每一个处理器核110,可以存在至少一个核本地高速缓存114。

共享高速缓存116可以体现为高速缓冲存储器,通常大于核本地高速缓存114并且由处理器108的所有处理器核110共享。例如,在说明性实施例中,核本地高速缓存114可以体现为1级(L1)高速缓存和2级(L2)高速缓存,而共享高速缓存116可以体现为3级(L3)高速缓存。在这样的实施例中,应当领会,L1高速缓存可以体现为处理器核110本地的任何存储器类型,通常被称为“主要高速缓存”,其是最接近处理器108的最快存储器。应当进一步领会,在这样的实施例中,L2高速缓存可以体现为处理器核110本地的任何类型的存储器,通常被称为“中级高速缓存”,其能够馈入L1高速缓存,具有比L1高速缓存更大更慢但是通常比L3/共享高速缓存116(即,末级高速缓存(LLC))更小更快的存储器。在其他实施例中,多级高速缓存架构可以包括附加和/或替代级别的高速缓冲存储器。虽然未在图1中说明性地示出,但是应当进一步领会,高速缓冲存储器112包括存储器控制器(参见例如图2的高速缓存管理器214),其可以体现为控制器电路或用作处理器108与存储器118之间的接口的其他逻辑。

存储器118可以体现为能够执行本文中描述的功能的任何类型的易失性或非易失性存储器或数据贮存器。在操作中,存储器118可以存储在网络计算设备106的操作期间使用的各种数据和软件,诸如操作系统、应用程序、程序、库和驱动程序。应当领会,存储器118可以被称为主存储器(即,主要存储器)。易失性存储器可以是存储介质,所述存储介质需要电力来维持由该介质存储的数据的状态。易失性存储器的非限制性示例可以包括各种类型的随机存取存储器(RAM),诸如动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)。

(多个)处理器108中的每一个和存储器118经由I/O子系统120而通信地耦合到网络计算设备106的其他组件,所述I/O子系统120可以体现为促进利用(多个)处理器108、存储器118和网络计算设备106的其他组件的输入/输出操作的电路和/或组件。例如,I/O子系统120可以体现为或以其他方式包括存储器控制器中枢(hub)、输入/输出控制中枢、集成传感器中枢、固件设备、通信链路(例如,点到点链路、总线链路、电线、电缆、光导、印刷电路板迹线等)和/或促进输入/输出操作的其他组件和子系统。在一些实施例中,I/O子系统120可以形成SoC的一部分,并且连同处理器108中的一个或多个、存储器118和网络计算设备106的其他组件一起合并在单个集成电路芯片上。

所述一个或多个数据存储设备122可以体现为被配置用于数据的短期或长期存储的任何类型的(多个)存储设备,诸如例如存储器设备和电路、存储器卡、硬盘驱动器、固态驱动器或其他数据存储设备。每一个数据存储设备122可以包括存储用于数据存储设备122的数据和固件代码的系统分区。每一个数据存储设备122还可以包括存储用于操作系统的数据文件和可执行文件的操作系统分区。

通信电路124可以体现为能够实现网络计算设备106与诸如源计算设备102之类的其他计算设备以及诸如接入点、交换机、路由器等的任何网络通信实现设备之间的通信以允许通过网络104的通信的任何通信电路、设备或其集合。因此,通信电路124可以被配置成使用任何一个或多个通信技术(例如,无线或有线通信技术)和相关联的协议(例如,以太网、蓝牙®、Wi-Fi®、WiMAX、LTE、5G等)来实现这样的通信。

应当领会,在一些实施例中,通信电路124可以包括执行流水线逻辑(例如,硬件算法)以用于执行本文中描述的功能的专用电路、硬件或其组合,执行本文中描述的功能包括处理网络分组(例如,解析所接收的网络分组、为每一个所接收的网络分组确定目的地计算设备、将网络分组转发到网络计算设备106的相应主机缓冲器的特定缓冲队列等)、执行计算功能等。

在一些实施例中,如在本文中描述的通信电路124的功能中的一个或多个的执行可以由通信电路124的专用电路、硬件或其组合来执行,所述专用电路、硬件或其组合可以体现为SoC或以其他方式形成网络计算设备106的SoC的一部分(例如,连同处理器108、存储器118和/或网络计算设备106的其他组件一起合并在单个集成电路芯片上)。替代地,在一些实施例中,所述专用电路、硬件或其组合可以体现为网络计算设备106的一个或多个分立的处理单元,其中的每一个可以能够执行本文中描述的功能中的一个或多个。

说明性的通信电路124包括HFI 126,所述HFI 126可以体现为一个或多个内插板、子插件板、网络接口卡、控制器芯片、芯片组或可以被网络计算设备106用于与另一计算设备(例如,源计算设备102)连接的其他设备。在一些实施例中,HFI 126可以体现为包括一个或多个处理器的SoC的一部分,或者被包括在还包含一个或多个处理器的多芯片封装上。在一些实施例中,HFI 126可以包括本地处理器(未示出)和/或本地存储器(未示出),其两者在HFI 126本地。在这样的实施例中,HFI 126的本地处理器可以能够执行本文中描述的处理器108的功能中的一个或多个。此外或替代地,在这样的实施例中,HFI 126的本地存储器可以在板级别、插座级别、芯片级别和/或其他级别处集成到网络计算设备106的一个或多个组件中。

所述一个或多个***设备128可以包括可用于向网络计算设备106中输入信息和/或从网络计算设备106接收信息的任何类型的设备。***设备128可以体现为可用于向网络计算设备106中输入信息的任何辅助设备,诸如键盘、鼠标、麦克风、条形码阅读器、图像扫描器等,或者可用于从网络计算设备106输出信息的任何辅助设备,诸如显示器、扬声器、图形电路、打印机、投影仪等。应当领会,在一些实施例中,***设备128中的一个或多个可以起输入设备和输出设备两者(例如,触摸屏显示器、显示屏上方的数字转换器等)的作用。还应当领会,连接到网络计算设备106的***设备128的类型可以取决于例如网络计算设备106的类型和/或预期用途。此外或替代地,在一些实施例中,***设备128可以包括一个或多个端口,诸如USB端口,例如用于将外部***设备连接到网络计算设备106。

高速缓存行降级设备130可以体现为可用于发起从核本地高速缓存114到共享高速缓存116的高速缓存行降级的任何类型的固件、软件和/或硬件设备。在一些实施例中,高速缓存行降级设备130可以体现为但不限于复制引擎、可用于复制数据的直接存储器访问(DMA)设备、支持卸载读取的设备等。应当领会,高速缓存行降级设备130可以是能够读取或假装读取数据的任何类型的设备,只要当设备与数据交互或以其他方式请求对数据的访问时与该数据相关联的高速缓存行就将被降级到共享高速缓存116作为副作用即可。

源计算设备102可以体现为能够执行本文中描述的功能的任何类型的计算或计算机设备,包括但不限于智能电话、移动计算设备、平板计算机、膝上型计算机、笔记本计算机、计算机、服务器(例如,独立的、安装在机架上的、刀片式等)、滑板(例如,计算滑板、加速器滑板、存储滑板、存储器滑板等)、网络器具(例如,物理的或虚拟的)、web器具、分布式计算系统、基于处理器的系统和/或多处理器系统。虽然未说明性地示出,但是应当领会,源计算设备102包括与说明性的网络计算设备106的那些组件类似和/或相同的组件。照此,为了描述的清楚,不在本文中重复相同组件的图和描述,其中要理解,以上关于网络计算设备106所提供的对应组件的描述同样适用于源计算设备102的对应组件。当然,应当领会,取决于实施例,所述计算设备可以包括附加的和/或替代的组件。

网络104可以体现为任何类型的有线或无线通信网络,包括但不限于无线局域网(WLAN)、无线个域网(WPAN)、边缘网络(例如,多接入边缘计算(MEC)网络)、雾网络、蜂窝网络(例如,全球移动通信系统(GSM)、长期演进(LTE)、5G等)、电话网络、数字订户线(DSL)网络、电缆网络、局域网(LAN)、广域网(WAN)、全球网络(例如,因特网)或其任何组合。应当领会,在这样的实施例中,网络104可以充当集中式网络,并且在一些实施例中可以通信地耦合到另一网络(例如,因特网)。因此,网络104可以包括多种其他虚拟和/或物理网络计算设备(例如,路由器、交换机、网络中枢、服务器、存储设备、计算设备等),如促进网络计算设备106与源计算设备102之间的通信所需要的,这未被示出以保持描述的清楚。

现在参考图2,在使用中,网络计算设备106在操作期间建立环境200。说明性环境200包括图1的(多个)处理器108、HFI 126和高速缓存行降级设备130,以及高速缓存管理器214和降级管理器220。说明性HFI 126包括网络业务入口/出口管理器208,说明性高速缓存行降级设备130包括接口管理器210,并且(多个)说明性处理器108包括分组处理操作管理器212。环境200的各种组件可以体现为硬件、固件、软件或其组合。照此,在一些实施例中,环境200的组件中的一个或多个可以体现为电路或电子设备的集合(例如,网络业务入口/出口管理电路208、降级设备接口管理电路210、分组处理操作管理电路212、高速缓存管理电路214、降级管理电路220等)。

如说明性地示出的,网络业务入口/出口管理电路208、降级设备接口管理电路210、分组处理操作管理电路212、高速缓存管理电路214和降级管理电路220形成网络计算设备106的特定组件的一部分。然而,虽然被说明性地示为由网络计算设备106的特定组件执行,但是应当领会,在其他实施例中,在本文中被描述为由网络业务入口/出口管理电路208、降级设备接口管理电路210、分组处理操作管理电路212、高速缓存管理电路214和/或降级管理电路220执行的一个或多个功能可以至少部分地由网络计算设备106的一个或多个其他组件执行。

此外,在一些实施例中,说明性组件中的一个或多个可以形成另一组件的一部分,和/或说明性组件中的一个或多个可以彼此独立。另外,在一些实施例中,环境200的组件中的一个或多个可以体现为虚拟化硬件组件或仿真架构,其可以由HFI 126、(多个)处理器108或网络计算设备106的其他组件建立和维护。应当领会,网络计算设备106可以包括在计算设备中常见的其他组件、子组件、模块、子模块、逻辑、子逻辑和/或器件,为了描述的清楚而未在图2中图示它们。

在说明性环境200中,网络计算设备106另外包括高速缓存行地址数据202、降级数据204和网络分组数据206,其中的每一个可以由网络计算设备106的各种组件和/或子组件访问。另外,高速缓存行地址数据202、降级数据204和网络分组数据206中的每一个可以由网络计算设备106的各种组件访问。此外,应当领会,在一些实施例中,存储在高速缓存行地址数据202、降级数据204和网络分组数据206中的每一个中或由其以其他方式表示的数据可以不相对于彼此互斥。例如,在一些实现方式中,存储在高速缓存行地址数据202中的数据也可以被存储为降级数据204和/或网络分组数据206中的一个或多个的一部分,或者被以另一替代布置进行存储。照此,虽然由网络计算设备106利用的各种数据在本文中被描述为特定的离散数据,但是在其他实施例中,这样的数据可以被组合、聚合和/或以其他方式形成单个或多个数据集的部分,包括重复的副本。

可以如以上所讨论的那样体现为硬件、固件、软件、虚拟化硬件、仿真架构和/或其组合的网络业务入口/出口管理器208被配置成接收入站网络业务和路由/传输出站网络业务。为了这么做,说明性网络业务入口/出口管理器208被配置成促进(例如,从源计算设备102)到网络计算设备106的入站网络通信(例如,网络业务、网络分组、网络流等)。因此,网络业务入口/出口管理器208被配置成(例如,经由通信电路124)管理(例如,创建、修改、删除等)到网络计算设备106的物理和虚拟网络端口(即,虚拟网络接口)的连接,以及与之相关联的入口缓冲器/队列。

此外,网络业务入口/出口管理器208被配置成促进来自网络计算设备106的出站网络通信(例如,网络业务、网络分组串流、网络流等)。为了这么做,网络业务入口/出口管理器208被配置成(例如,经由通信电路124)管理(例如,创建、修改、删除等)到网络计算设备106的物理和虚拟网络端口/接口的连接,以及与之相关联的出口缓冲器/队列。在一些实施例中,网络分组的至少一部分(例如,网络分组的头部的至少一部分、网络分组的有效载荷的至少一部分、校验和等)可以被存储在网络分组数据206中。

可以如以上所讨论的那样体现为硬件、固件、软件、虚拟化硬件、仿真架构和/或其组合的降级设备接口管理器210被配置成管理高速缓存行降级设备130的接口。例如,降级设备接口管理器210被配置成从(多个)处理器108接收高速缓存行降级命令,其可用于标识(哪些)高速缓存行将被从核本地高速缓存114降级到共享高速缓存116。此外,降级设备接口管理器210被配置成响应于已经接收高速缓存行降级命令而执行一些操作(例如,读取请求)以将一个或多个高速缓存行从核本地高速缓存114降级到共享高速缓存116。应当领会,高速缓存行降级命令包括将从核本地高速缓存114降级到共享高速缓存116的每一个高速缓存行的标识符,并且每一个标识符可由高速缓存行降级设备130用于降级(例如,复制、驱逐等)可应用的(多个)高速缓存行。

可以如以上所讨论的那样体现为硬件、固件、软件、虚拟化硬件、仿真架构和/或其组合的分组处理操作管理器212被配置成标识将对所接收的网络分组的数据的至少一部分(例如,网络分组的头部字段、网络分组的有效载荷的一部分等)执行哪些分组处理操作以及将执行每一个分组处理操作的相关联的处理器核110。此外,在一些实施例中,分组处理操作管理器212可以被配置成标识每一个分组处理操作何时已经完成并且(例如,向降级管理器220)提供对完成的指示。应当领会,虽然在本文中被描述为由相关联的处理器核110执行,但是分组处理操作中的一个或多个可以由访问高速缓冲存储器112可能需要的任何类型的计算设备/逻辑(例如,加速器设备/逻辑)来执行。

可以如以上所讨论的那样体现为硬件、固件、软件、虚拟化硬件、仿真架构和/或其组合的高速缓存管理器214被配置成管理高速缓冲存储器112(例如,核本地高速缓存114和共享高速缓存116)。为了这么做,高速缓存管理器214被配置成管理进出高速缓冲存储器112的条目的添加和驱逐。因此,可以体现为或以其他方式包括存储器管理单元的高速缓存管理器214被进一步配置成记录虚拟地址到物理地址转换的结果。在这样的实施例中,转换结果可以被存储在高速缓存行地址数据202中。高速缓存管理器214此外被配置成促进从主存储器获取数据和将经缓存的数据存储到主存储器,以及将数据从可应用的核本地高速缓存114降级到共享高速缓存116,并将数据从共享高速缓存116提升到可应用的核本地高速缓存114。

可以如以上所讨论的那样体现为硬件、固件、软件、虚拟化硬件、仿真架构和/或其组合的降级管理器220被配置成管理数据从核本地高速缓存114到共享高速缓存116的降级。为了这么做,降级管理器220被配置成向高速缓冲存储器管理器(例如,高速缓存管理器214)传输指令以将处理的数据从核本地高速缓存114降级(例如,复制、驱逐等)到共享高速缓存116,或者向高速缓存行降级设备130传输命令以将处理的数据从核本地高速缓存114降级到共享高速缓存116。为了确定是否将高速缓存行降级指令发送到高速缓存管理器214或者将高速缓存行降级命令发送到高速缓存行降级设备130,降级管理器220被进一步配置成比较网络分组的大小和预定分组大小阈值。

如果降级管理器220确定网络分组大小大于分组大小阈值,则降级管理器220被配置成将高速缓存行降级指令传输到高速缓存管理器214。否则,如果降级管理器220确定网络分组大小小于或等于分组大小阈值,则降级管理器220被配置成将高速缓存行降级命令传输到高速缓存行降级设备130。此外,降级管理器220被配置成在高速缓存行降级指令/命令中包括将从核本地高速缓存114降级到共享高速缓存116的每一个高速缓存行或者一系列高速缓存行的标识符。如说明性地示出的,降级管理器220可以被配置为卸载设备;然而,在一些实施例中,如本文中描述的功能可以由处理器108的一部分或处理器核110执行,或者降级管理器220可以以其他方式形成处理器108的一部分或处理器核110。应当领会,在下一个高速缓存位置提前已知的这样的情况下,降级管理器220可以被配置成将数据移动到与分组处理流水线中的下一个处理器核相关联的核本地高速缓存的已知核本地高速缓存条目。

现在参考图3,示出了用于将高速缓存行降级到共享高速缓存的方法300,其可以由计算设备(例如,图1和2的网络计算设备106)执行。方法300开始于框302,其中网络计算设备106确定是否处理网络分组(例如,处理器108已经轮询HFI 126以得到下一个要处理的分组)。如果是这样,则方法300前进到框304,其中网络计算设备106标识将由处理器核110对网络分组的至少一部分执行的一个或多个分组处理操作。在框306中,网络计算设备106,或者更具体地,进行请求的处理器核110,对将要处理的网络分组的可应用部分执行所标识的(多个)分组处理操作。应当领会,虽然在本文中被描述为由进行请求的处理器核110执行,但是分组处理操作中的一个或多个可以由访问高速缓冲存储器112可能需要的任何类型的计算设备/逻辑(例如,加速器设备/逻辑)执行。

在框308中,网络计算设备106确定进行请求的处理器核110或可应用的计算设备/逻辑是否已经完成所标识的(多个)分组处理操作,其诸如可以由进行请求的处理器核110指示。如果是这样,则方法300前进到框310,其中网络计算设备106确定核本地高速缓存114中的哪个或哪些高速缓存行与处理的网络分组相关联。此外,在框312中,网络计算设备106标识网络分组的大小。在框314中,网络计算设备106比较所标识的网络分组大小和分组大小阈值。在框316中,网络计算设备106确定所标识的网络分组大小是否大于分组大小阈值。

如果网络计算设备106确定所标识的网络分组大小小于或等于分组大小阈值,则方法300分支到框318,其中网络计算设备106被配置成向高速缓存管理器214传输高速缓存行降级指令以将与处理的网络分组相关联的一个或多个高速缓存行从核本地高速缓存114降级到共享高速缓存116。此外,在框320中,网络计算设备在高速缓存行降级指令中包括核本地高速缓存114中的每一个确定的高速缓存行的高速缓存行标识符。参考回框316,如果降级管理器220确定网络分组大小大于分组大小阈值,则方法300分支到框322,其中网络计算设备106向高速缓存行降级设备130传输高速缓存行降级命令以触发高速缓存行降级操作,以将与处理的网络分组相关联的一个或多个高速缓存行从核本地高速缓存114降级到共享高速缓存116。此外,在框324中,网络计算设备106包括一个或多个高速缓存行标识符,其对应于将在高速缓存行降级命令中降级的一个或多个高速缓存行。

现在参考图4和5,在使用中,网络计算设备106建立用于经由高速缓存行降级指令将高速缓存行降级到共享高速缓存116的说明性环境400以及用于经由到高速缓存行降级设备130的高速缓存行降级命令将高速缓存行降级到共享高速缓存116的说明性环境500。现在参考图4,说明性环境400包括图1的HFI 126、处理器核110、核本地高速缓存114、共享高速缓存116和降级设备130,以及图2的高速缓存管理器214。说明性核本地高速缓存114和共享高速缓存116中的每一个包括多个高速缓存条目。

如说明性地示出的,核本地高速缓存114包括多个核本地高速缓存条目404。说明性核本地高速缓存条目404包括:被指定为核本地高速缓存条目(1)404a的第一核本地高速缓存条目,被指定为核本地高速缓存条目(2)404b的第二核本地高速缓存条目,被指定为核本地高速缓存条目(3)404c的第三核本地高速缓存条目,被指定为核本地高速缓存条目(4)404d的第四核本地高速缓存条目,以及被指定为核本地高速缓存条目(N)404e的第五核本地高速缓存条目(即,“第N”核本地高速缓存条目404,其中“N”是正整数并指定一个或多个附加的核本地高速缓存条目404)。类似地,说明性共享高速缓存116包括多个共享高速缓存条目406。说明性共享高速缓存条目406包括:被指定为共享高速缓存条目(1)406a的第一共享高速缓存条目,被指定为共享高速缓存条目(2)406b的第二共享高速缓存条目,被指定为共享高速缓存条目(3)406c的第三共享高速缓存条目,被指定为共享高速缓存条目(4)406d的第四共享高速缓存条目,以及被指定为共享高速缓存条目(N)406e的第五共享高速缓存条目(即,“第N”共享高速缓存条目406,其中“N”是正整数并指定一个或多个附加的共享高速缓存条目406)。

现在参考图5,类似于图4的说明性环境,说明性环境500包括图1的HFI 126、处理器核110、核本地高速缓存114、共享高速缓存116和降级设备130,以及图2的高速缓存管理器214。如先前所描述的,处理器核110被配置成(例如,经由HFI/主机接口(未示出))从HFI126轮询可用的网络分组以用于处理并且对网络分组的数据的至少一部分执行某个级别的处理操作。还如先前所描述的,在处理操作的完成时,处理器核110被进一步配置成提供一个或多个高速缓存行将从核本地高速缓存114降级到共享高速缓存116的某个指示。

参考回图4,如说明性地示出的,由处理器核110提供的指示采取一个或多个高速缓存行降级指令的形式。应当领会,每一个高速缓存行降级指令可用于从核本地高速缓存114中标识高速缓存行,并将数据降级到共享高速缓存116。照此,应当领会,这样的指令对于较大的分组可能不够高效。因此,处理器核110可以被配置成:对于较大的数据块,利用高速缓存行降级设备来卸载降级操作。为了这么做,再次参考图5,处理器核110可以被配置成向高速缓存行降级设备130传输高速缓存行降级命令502以触发将由高速缓存行降级设备130执行的高速缓存行降级操作,其诸如可以经由数据读取请求、DMA请求等或者将导致数据被降级到共享高速缓存116作为副作用而不浪费处理器核周期的任何其他类型的请求来执行。

如在图4和5两者中说明性地示出的,核本地高速缓存行(1)404a、核本地高速缓存行(2)404b和核本地高速缓存行(3)404c中的数据与处理的网络分组相关联,如由围绕那些核本地高速缓存行404中的每一个的突出显示的轮廓所指示的。还如说明性地示出的,高速缓存行降级操作导致所述数据被降级,使得核本地高速缓存行(1)404a中的数据被降级到共享高速缓存行(1)406a,核本地高速缓存行(2)404b中的数据被降级到共享高速缓存行(2)406b,并且核本地高速缓存行(3)404c中的数据被降级到共享高速缓存行(3)406c;然而,应当领会,由于高速缓存行降级操作,降级的高速缓存行可以被移动到任何可用的共享高速缓存行406。

示例

以下提供了本文中公开的技术的说明性示例。所述技术的实施例可以包括以下描述的示例中的任何一个或多个以及以下描述的示例的任何组合。

示例1包括一种用于将高速缓存行降级到共享高速缓存的计算设备,该计算设备包括一个或多个处理器,其中所述一个或多个处理器中的每一个包括多个处理器核;高速缓冲存储器,其中高速缓冲存储器包括核本地高速缓存和共享高速缓存,其中核本地高速缓存包括多个核本地高速缓存行,并且其中共享高速缓存包括多个共享高速缓存行;高速缓存行降级设备;以及接收网络分组的主机结构接口(HFI),其中所述一个或多个处理器中的处理器的处理器核要检索所接收的网络分组的数据的至少一部分,其中检索数据包括将数据移动到所述多个核本地高速缓存行中的一个或多个核本地高速缓存行中;对数据执行一个或多个处理操作;并且在已经完成对数据的所述一个或多个处理操作之后,向高速缓存行降级设备传输高速缓存行降级命令,并且其中高速缓存行降级设备要响应于已经接收高速缓存行降级命令而执行高速缓存行降级操作,以将数据从所述一个或多个核本地高速缓存行降级到共享高速缓存的一个或多个共享高速缓存行。

示例2包括示例1的主题,并且其中处理器核进一步要在已经完成对数据的所述一个或多个处理操作之后确定所接收的网络分组的大小是否大于分组大小阈值,其中向高速缓存行降级设备传输高速缓存行降级命令包括在确定所接收的网络分组的大小大于分组大小阈值之后传输高速缓存行降级命令。

示例3包括示例1和2中的任何示例的主题,并且其中处理器核进一步要在已经确定所接收的网络分组的大小小于或等于分组大小阈值之后向高速缓冲存储器的高速缓存管理器传输高速缓存行降级指令,并且其中高速缓存管理器要基于高速缓存行降级指令将数据从所述一个或多个核本地高速缓存行降级到共享高速缓存的所述一个或多个共享高速缓存行,其中高速缓存行降级指令绕过高速缓存行降级设备。

示例4包括示例1-3中的任何示例的主题,并且其中传输高速缓存行降级指令包括传输与所述一个或多个共享高速缓存行对应的一个或多个高速缓存行标识符。

示例5包括示例1-4中的任何示例的主题,并且其中执行高速缓存行降级操作包括执行读取请求或直接存储器访问。

示例6包括示例1-5中的任何示例的主题,并且其中高速缓存行降级命令包括对与所接收的网络分组相关联的要被降级到共享高速缓存的核本地高速缓存行的指示。

示例7包括示例1-6中的任何示例的主题,并且其中高速缓存行降级设备包括复制引擎、可用于复制数据的直接存储器访问(DMA)设备或者可用于执行读取操作的卸载设备中的一个。

示例8包括示例1-7中的任何示例的主题,并且其中传输高速缓存行降级命令包括传输与所述一个或多个共享高速缓存行对应的一个或多个高速缓存行标识符。

示例9包括一个或多个机器可读存储介质,其包括存储在其上的多个指令,所述多个指令响应于被执行而使计算设备:通过计算设备的处理器检索由计算设备的主机结构接口(HFI)接收的网络分组的数据的至少一部分,其中检索数据包括将数据移动到计算设备的核本地高速缓存的多个核本地高速缓存行中的一个或多个核本地高速缓存行中,并且其中处理器包括多个处理器核;通过所述多个处理器核中的处理器核对数据执行一个或多个处理操作;通过处理器并且在已经完成对数据的所述一个或多个处理操作之后向计算设备的高速缓存行降级设备传输高速缓存行降级命令;以及通过高速缓存行降级设备并且响应于已经接收高速缓存行降级命令而执行高速缓存行降级操作,以将数据从所述一个或多个核本地高速缓存行降级到计算设备的共享高速缓存的一个或多个共享高速缓存行。

示例10包括示例9的主题,并且其中处理器核进一步要在已经完成对数据的所述一个或多个处理操作之后确定所接收的网络分组的大小是否大于分组大小阈值,其中向高速缓存行降级设备传输高速缓存行降级命令包括在确定所接收的网络分组的大小大于分组大小阈值之后传输高速缓存行降级命令。

示例11包括示例9和10中的任何示例的主题,并且其中处理器核进一步要在已经确定所接收的网络分组的大小小于或等于分组大小阈值之后向包括核本地高速缓存和共享高速缓存的高速缓冲存储器的高速缓存管理器传输高速缓存行降级指令,并且其中高速缓存管理器要基于高速缓存行降级指令将数据从所述一个或多个核本地高速缓存行降级到共享高速缓存的所述一个或多个共享高速缓存行。

示例12包括示例9-11中的任何示例的主题,并且其中传输高速缓存行降级指令包括传输与所述一个或多个共享高速缓存行对应的一个或多个高速缓存行标识符。

示例13包括示例9-12中的任何示例的主题,并且其中执行高速缓存行降级操作包括执行读取请求或直接存储器访问。

示例14包括示例9-13中的任何示例的主题,并且其中传输高速缓存行降级命令包括传输与所述一个或多个共享高速缓存行对应的一个或多个高速缓存行标识符。

示例15包括一种用于将高速缓存行降级到共享高速缓存的方法,该方法包括通过计算设备的处理器检索由计算设备的主机结构接口(HFI)接收的网络分组的数据的至少一部分,其中检索数据包括将数据移动到计算设备的核本地高速缓存的多个核本地高速缓存行中的一个或多个核本地高速缓存行中,并且其中处理器包括多个处理器核;通过所述多个处理器核中的处理器核对数据执行一个或多个处理操作;通过处理器核并且在已经完成对数据的所述一个或多个处理操作之后向计算设备的高速缓存行降级设备传输高速缓存行降级命令;以及通过高速缓存行降级设备并且响应于已经接收高速缓存行降级命令而执行高速缓存行降级操作,以将数据从所述一个或多个核本地高速缓存行降级到计算设备的共享高速缓存的一个或多个共享高速缓存行。

示例16包括示例15的主题,并且进一步包括在已经完成对数据的所述一个或多个处理操作之后确定所接收的网络分组的大小是否大于分组大小阈值,其中向高速缓存行降级设备传输高速缓存行降级命令包括在确定所接收的网络分组的大小大于分组大小阈值之后传输高速缓存行降级命令。

示例17包括示例15和16中的任何示例的主题,并且进一步包括通过处理器核并且在已经确定所接收的网络分组的大小小于或等于分组大小阈值之后向包括核本地高速缓存和共享高速缓存的高速缓冲存储器的高速缓存管理器传输高速缓存行降级指令;以及通过高速缓存管理器基于高速缓存行降级指令将数据从所述一个或多个核本地高速缓存行降级到共享高速缓存的所述一个或多个共享高速缓存行。

示例18包括示例15-17中的任何示例的主题,并且其中传输高速缓存行降级指令包括传输与所述一个或多个共享高速缓存行对应的一个或多个高速缓存行标识符。

示例19包括示例15-18中的任何示例的主题,并且其中执行高速缓存行降级操作包括执行读取请求或直接存储器访问中的一个。

示例20包括示例15-19中的任何示例的主题,并且其中传输高速缓存行降级命令包括传输与所述一个或多个共享高速缓存行对应的一个或多个高速缓存行标识符。

示例21包括一种用于将高速缓存行降级到共享高速缓存的计算设备,该计算设备包括用于通过计算设备的处理器检索由计算设备的主机结构接口(HFI)接收的网络分组的数据的至少一部分的电路,其中检索数据包括将数据移动到计算设备的核本地高速缓存的多个核本地高速缓存行中的一个或多个核本地高速缓存行中,并且其中处理器包括多个处理器核;用于通过所述多个处理器核中的处理器核对数据执行一个或多个处理操作的电路;用于通过处理器核并且在已经完成对数据的所述一个或多个处理操作之后向计算设备的高速缓存行降级设备传输高速缓存行降级命令的电路;以及用于通过高速缓存行降级设备并且响应于已经接收高速缓存行降级命令而执行高速缓存行降级操作以将数据从所述一个或多个核本地高速缓存行降级到计算设备的共享高速缓存的一个或多个共享高速缓存行的部件。

示例22包括示例21的主题,并且进一步包括用于在已经完成对数据的所述一个或多个处理操作之后确定所接收的网络分组的大小是否大于分组大小阈值的电路,其中向高速缓存行降级设备传输高速缓存行降级命令包括在确定所接收的网络分组的大小大于分组大小阈值之后传输高速缓存行降级命令。

示例23包括示例21和22中的任何示例的主题,并且进一步包括用于通过处理器核并且在已经确定所接收的网络分组的大小小于或等于分组大小阈值之后向包括核本地高速缓存和共享高速缓存的高速缓冲存储器的高速缓存管理器传输高速缓存行降级指令的电路;以及用于通过高速缓存管理器基于高速缓存行降级指令将数据从所述一个或多个核本地高速缓存行降级到共享高速缓存的所述一个或多个共享高速缓存行的电路。

示例24包括示例21-23中的任何示例的主题,并且其中传输高速缓存行降级指令包括传输与所述一个或多个共享高速缓存行对应的一个或多个高速缓存行标识符。

示例25包括示例21-24中的任何示例的主题,并且其中用于执行高速缓存行降级操作的部件包括用于执行读取请求或直接存储器访问中的一个的部件。

22页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于延迟的不规则载荷的预取器

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类