CN109313618A - 用于分组传递的图形处理单元(gpu) - Google Patents
用于分组传递的图形处理单元(gpu) Download PDFInfo
- Publication number
- CN109313618A CN109313618A CN201780034009.6A CN201780034009A CN109313618A CN 109313618 A CN109313618 A CN 109313618A CN 201780034009 A CN201780034009 A CN 201780034009A CN 109313618 A CN109313618 A CN 109313618A
- Authority
- CN
- China
- Prior art keywords
- data grouping
- nic
- core
- grouping
- processing
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Facsimiles In General (AREA)
Abstract
所公开的是一种装置,其包括网络接口控制器(NIC)、存储器和加速器。所述加速器可以包括直接存储器访问(DMA)控制器,其被配置成从NIC接收数据分组,并且将所述数据分组提供到存储器。所述加速器还可以包括处理电路,用于通过在从NIC接收的数据分组上实现分组处理功能来生成经处理的数据分组,并且将所述经处理的数据分组提供到至少一个处理核。还描述了其它方法、装置、物品和系统。
Description
优先权要求
该专利申请对2016年6月30日提交的、序列号为15/198,714的美国申请要求优先权权益,所述申请通过引用以其全部被并入本文中。
技术领域
实施例一般地涉及信息处理和通信,并且更具体地,涉及通过计算机网络从主计算机系统传送数据的电路。
背景技术
当前,网络卡接收数据分组,并且将它们传递到计算设备以供处理。随着针对处理网络数据中的速度的需求增加,努力已经通常指向改善分组处理速度。
附图说明
在不一定按比例绘制的附图中,同样的标号可以在不同的视图中描述类似的组件。具有不同字母后缀的同样标号可以表示类似组件的不同实例。附图一般地作为示例、而不是作为限制地图示在本文档中所讨论的各种实施例。
图1图示了根据一些实施例的架构的示意图。
图2图示了根据一些实施例的装置的框图。
图3图示了根据一些实施例的示例数据分组处理流水线。
图4A和4B图示了根据一些实施例的数据分组进入和外出路径。
图5图示了根据一些实施例的示例方法。
具体实施方式
网络接口性能近年来已经增加。然而,分组处理尚未跟上网络接口性能增益。
各种参数和条件可影响分组处理的性能。例如,中央处理单元(CPU)速度和利用、中断开销、总线带宽、存储器等待时间和/I/O等待时间可影响分组处理应用的性能。对分组处理有影响的CPU开销的一些示例可以包括涉及针对每个分组的存储器分配和解除分配的开销,在内核与用户空间之间拷贝数据,昂贵的高速缓存未命中,每分组的系统调用,以及通过多队列网络接口控制器(NIC)的队列而将分组的并行化处理变换成串行化的处理。后一条件可发生于所有分组会聚到一个单一点的时候,因而产生瓶颈。
图形处理单元(GPU)的架构可以使能实现GPU中的高度并行的处理,并且该能力可以用于改善分组处理性能,以解决以上担忧,以及其它担忧。可编程GPU可以充当协处理器,这通过从主CPU接收代码、数据和命令。GPU开发中的新近努力已经指向增加并行性。因而,现今的GPU可具有数百或数千个核。GPU中的数千个核在一起可以提供比单个CPU核更大的吞吐量,以用于许多类型的高度并行任务。GPU效用性可以通过如下来被增强:发动每GPU核的多个线程以提供高线程级并行性。通过使用高线程级并行性,GPU可以通过执行相当大数量的线程来缩减存储器访问等待时间。类似地,GPU的处理能力可以用于在软件路由器上运行的计算密集的操作,并且因而克服CPU所造成的瓶颈。因此,本文中所述的实施例利用GPU的高线程级并行性能力来执行分组处理功能,用以减少或消除至少一个系统瓶颈和减速源。
在本文中描述的实施例能够使用GPU结合NIC来执行分组处理。NIC还可以被称为主机-构造接口(HFI)。使用相组合的GPU和NIC可以使得对于主机而言看似为:单个集成的以太网设备可以提供各种种类的可编程卸载和网络虚拟化。如本文中所公开的,组件和技术的该唯一的组合将GPU和CPU操作组合起来以导致针对数据中心运营商和其它联网客户的经改善的性能。另外,实施例可以允许更灵活且可编程的分组处理功能。
在一些在先系统中,数据分组从NIC直接进入CPU。相比之下,在本文中所公开的实施例中,通过将NIC和GPU组合为一个单元,可以在进入CPU之前处理数据分组。因而,在分组被传送时,数据分组可以在进入CPU之前、在NIC处理之后在GPU上被预处理,并且反之亦然。换言之,CPU和NIC可以是菊链式的,使得对于系统软件而言透明地看似单个复杂设备。NIC可以将数据分组直接传递(例如经由直接存储器访问(DMA)控制器)到GPU和从GPU将数据分组直接传递(例如经由直接存储器访问(DMA)控制器),并且GPU可以在做出向和从CPU的最终传递之前应用附加的分组处理功能。
经组合的NIC和GPU的实施例可以经由新限定的虚拟I/O模型被表示,所述新限定的虚拟I/O模型组合NIC和GPU的硬件功能二者。经组合的GPU和NIC功能作为单个软件层,可以被视为“虚拟NIC”。由虚拟NIC所表示的元数据可以表示参数,诸如GPU和NIC的经组合的卸载能力,以及由GPU和NIC在分组上所执行的或将执行的卸载,以及其它参数。这允许使用经组合的GPU/NIC的软件应用查看和/或控制所执行的卸载。
使用GPU用于分组处理可以为特定卸载提供经改善的性能。例如,使用GPU用于分组处理可以示出针对无状态分组处理的增加的卸载性能。如本文中所公开的,当在GPU上处理各种数据分组的时候,可以改善针对一些算法的计算时间。速度方面的增加可受诸如但不限于以下各项的因素所限制:在CPU和GPU之间的带宽,以及计算资源的可用性。
可以通过使用如本文中所公开的硬件块支持队列管理(HQM)或等同的接口改善以及输入级流水线化来解决带宽问题。HQM的使用或等同的接口改善以及流水线化可以有助于最小化在虚拟设备与处理核之间的颤动,这是由于在分组被传递到CPU的处理核之前,虚拟设备提供对分组的附加处理。将工作负载卸载到GPU可以使得更多的计算资源可用于核上的、可能或可能不受计算资源可用性限制的其它软件功能。
图1图示了根据一些实施例的架构100的示意图。如图1中所示,架构100可以包括分组处理应用102、软件设备驱动器104、至少一个处理核106、NIC 108以及加速器110。在一些实施例中,加速器是GPU。然而,实施例不限于此,并且加速器110可以通过使用例如现场可编程门阵列(FPGA)来被实现。
在操作期间,一些数据分组处理功能可以通过GPU 110来被完成,如本文中稍后描述的。因此,运行分组处理应用的CPU的所述至少一个核106(例如至少第一核,以及可能地第二核或更多核)可以免于运行这些功能。作为结果,CPU的核可以用于处理其它数据分组。
在传统计算设备中,GPU用于图形处理和视频流转码。如本文中所公开的,GPU 110可以被重新目的化为与NIC 108协作,使得它们对于软件而言看似单个设备(装置200,图2)。换言之,利用由装置200组合所处理的数据分组的软件将在大多数实施例中不知晓数据分组不是由处理核106处理的。与本文中所公开的实施例一致,数据分组可以从NIC 108传递到GPU 110,并且回到NIC 108,而不进入核106。另外,工作负载也可以从部分核卸载。例如,一些功能可以从核106卸载,用以将先前在核106上软件中执行的功能移动到经组合的设备,诸如装置200(图2)。
图2图示了根据一些实施例的装置200。装置200可以包括NIC 108,用以与一个或多个硬件组件通信。装置200可以此外包括加速器110(例如GPU、FPGA等等)。装置200还可以在一些实施例中被称为虚拟NIC,因为装置200组合加速器110和NIC 108,在单个软件层下运转。加速器110可以包括存储器202以及DMA控制器204,所述DMA控制器204被配置成从NIC108接收数据分组,并且将数据分组移动到存储器202。GPU具有其自己的板上设备存储器,其可以如6 GB那么大或更大。GPU可以直接访问设备存储器,因此可以通过PCIe总线、经由DMA来拷贝数据。PCIe总线还用于CPU-GPU通信,诸如发动GPU内核并且随着计算进行而同步状态。
加速器110可以包括处理电路206,所述处理电路206通过在从NIC 108接收的数据分组上实现分组处理功能而生成经处理的数据分组。处理电路206还可以将经处理的数据分组提供给CPU的至少一个处理核106(图1)。将理解的是,由处理电路206所执行的功能和操作中的任一个或全部可以利用硬件、软件、固件、或其任何组合来被执行。在一些实施例中,处理电路206可以包括一个或多个处理核。处理电路206可以通过实现被存储在存储器202内的指令208(例如“软件”)来执行本文中所描述的、关于数据分组处理流水线(图3)的各种操作。因而,存储器202可以包括机器可读介质。
图3图示了根据一些实施例的示例数据分组处理流水线300。如图3中所示,多个CPU核302可以运行应用,所述应用可以使用虚拟NIC接口304来发送和接收使用装置200的数据分组。
GPU 110可以包括各种数据分组处理、接收和传送功能。例如,GPU 110可以包括数据分组分类器306,所述数据分组分类器306可以维护一组规则,所述规则基于分组报头的内容来对分组属于哪个分组流进行分类。针对每个类所采取的动作(例如在输出队列中的分组调度、路由决策等等)可以此外在GPU 110中或在其它系统中被执行。GPU 110可以包括内联解密功能308。GPU 110还可以包括进入分组业务管理310功能,其延迟一些或所有数据报以使它们遵从所期望的业务简档,用以增强或确保针对某些种类分组的性能、等待时间和可用带宽。GPU 110可以另外包括分组分布功能312,其可以用于处理所接收的数据分组,然后将经处理的数据分组发送到所述多个CPU核302。分组分布功能312还可以包括另一DMA控制器(未在图3中示出),所述另一DMA控制器向/从虚拟NIC接口304对接以有助于将经处理的数据分组分布到所述多个CPU核302。在其它实施例中,可以提供网状连接。
GPU 110可以执行用于进入QoS的其它功能328,诸如计量功能、标记功能、监管、业务类分离、分割和重组(SAR)。
GPU 110还可以包括外出分组业务管理314,以及外出QoS功能316。外出QoS功能可以包括调度和成形。调度功能可以包括先到先服务(FCFS)、轮循、串优先、最早到期优先方案,以及一般化的处理器共享,其基于与分组流相关联的权重因子。成形功能可以减少业务的突发性,这通过例如延迟与优先化的业务流的那些相比被指明为不太重要的分组流。GPU110可以包括内联加密318功能性,其用于处置从所述多个CPU核302所接收的数据分组。GPU110还可以包括分组传送器320和分组接收器322。虽然已经在图3中示出了可用互连和通信路径中的一些,但是将领会的是,可以提供其它功能性,并且这些功能性可以用仅仅为了清楚性目的而没有在图3中被示出的各种方式进行通信。
GPU 110可以包括输送代理324,用于向和从NIC 108(或HFI)输送分组,用于移交分组以用于GPU内的其它分组处理,以及向和从虚拟NIC接口304传递分组。换言之,输送代理324可以被视为联网功能,用于追踪分组处理状态以及处置NIC 108接口。在一些实施例中,DMA控制器204功能可以被并入或被视为输送代理324功能的一部分。输送代理324可以为分组提供附加的处理,这除了其它操作之外尤其通过例如添加或从数据分组剥离报头或地址,无论是为了向核302提供分组还是为了从核302接收分组以用于传送到网络。为了简单,输送代理324已经在图3中被示出在两个位置中,尽管如上所述,输送代理324可以运作在流水线300的各种方面中。输送代理324的功能还被示出在图4A和4B中。
另外,各种功能和功能序列可以取决于应用需要而被编程和修改。例如,如果某些数据分组不需要被加密或不能达成被加密,则可以绕过或以其它方式省略内联解密功能308和内联加密318。另外,GPU 110可以与NIC 108分组接收和传送功能对接。此外,异常处置路径可以利用关于NIC 108操作的CPU干预。
图4A和4B图示了根据一些实施例的数据分组进入和外出的示例。另外,图4A和4B图示了在至少经由中断和用户层级中断所限定的各种级之间的潜在通信机制的示例。例如,如图4A和4B中所示,操作410和452(例如传送(TX)和接收(RX)分组指示)可以被实现为中断、轮询或用户层级中断机制。类似地,操作426和454(例如虚拟NIC TX和RX分组指示)可以通过使用中断、轮询、用户层级中断或回调机制来被实现。
作为示例,图4A和4B图示了输送代理324可以如何与存储器202以及图3中所示的各种功能块对接。分组引擎可以实现分组处理功能的各种阶段。在操作402中,数据分组可以从网络400抵达NIC 108。在操作404中,NIC可以将数据分组提供给存储器202(或提供给DMA控制器204,其可以将数据分组移动到存储器202,如本文中较早先所描述的那样)。在操作406中,NIC 108可以将数据分组描述符提供到存储器202。存储器202然后可以在操作408中将数据分组提供到数据分组分类器306。附加地或可替换地,NIC 108可以在操作410中生成中断(或使用任何其它机制,诸如轮询,或用户层级中断机制),以用信号通知输送代理324已经接收到数据分组,并且输送代理324可以在操作412中将数据分组提供到数据分组分类器306。在操作414中,数据分组分类器306可以将经分类的分组提供到输送代理324,所述输送代理324可以进而基于由数据分组分类器所提供的信息而将分类报头或其它信息添加到经分类的分组。
在操作416中,输送代理324可以将经分类的分组(例如在操作414处生成的分组)提供到内联解密功能308。可替换地,在操作418中,存储器202可以将经加密的数据分组提供到内联解密功能308。在操作420中,内联解密功能308将经解密的分组提供到存储器202。附件地或可替换地,在操作422中,内联解密功能308将经解密的数据分组提供到输送代理324。
在操作424中,输送代理324执行负载平衡,用以确定哪个/哪些核302应当接收分组。输送代理324可以在(例如到不同核的)多个路径之间拆分分组(在按分组的基础上、按流的基础上或其它基础上),用以实现负载平衡。输送代理324可以使用算法、诸如轮循调度或方案,其基于检测对各种核/多个核302的利用水平以执行负载平衡。
在操作426中,输送代理324通过虚拟NIC接口304使用中断、轮询、用户层级中断或回调机制,用以将经处理的数据分组提供到核302。可替换地,存储器202可以将分组数据提供到虚拟NIC接口304。
在操作430中,CPU核302可以执行任何分组处理,诸如通过将数据分组提供到在核302上运行的应用。在一些实施例中,CPU核302可以执行数据分组的传送。因此,核302可以指示数据分组用于在操作432中通过可以包括中断、轮询、用户层级中断、回调等等的机制传送的可用性。在一些实施例中,在操作434中,核302可以将数据分组提供到输送代理324,并且输送代理324可以将数据分组提供到内联加密318引擎以用于在操作436中加密。在其它实施例中,在操作432中,经解密的分组可以被提供到存储器202,并且存储器202可以提供经解密的分组以用于在操作438中加密。在操作442中,经加密的数据分组被提供到输送代理324。在操作444中,输送代理324可以向存储器202指示分组准备好用于传送,并且在操作446中,输送代理324可以请求NIC 108传送对应的数据分组。在操作450、452和454中,NIC108可以将分组传送到网络400,并且向输送代理324提供确认,所述输送代理324进而向核302提供确认。
图4A和4B中所示的各种传送路径可以取决于应用而被变更。例如,如以上所指示的,某些数据分组可能不需要被加密,并且因而,用于那些数据分组的传送路径可以省略将会把它们路由到加密电路的路径。另外,在通过应用核302的处理之后,数据分组可能需要在被传送到网络400之前被加密。因而,传送路径可以被变更以包括将会把数据分组路由到加密电路的路径。换言之,取决于应用,传送路径可以是静态的或动态的。
示例方法
根据各种实施例可以实现各种方法来执行上述使用模型以及其它使用模型的功能。图5是根据一些实施例的示例方法500的流程图。如此处所述的装置200或其元件(例如GPU110、NIC 108等等)可以执行示例方法500的操作。因此,将参考图1-4的组件来描述示例方法500。例如,处理电路206可以执行示例方法500的一个或多个操作。
示例方法500开始于操作502,其中处理电路206接收数据分组。如本文中所述,可以从NIC 108接收数据分组。
示例方法500继续操作504,其中处理电路206处理数据分组。例如,处理电路206可以执行在图3中所示的数据分组处理流水线中的功能中的任一个。与本文中所公开的实施例一致,数据分组被处理使得在CPU核302上运作的软件不知道数据分组已经预先被GPU110处理。换言之,CPU核302将NIC 108和GPU 110视为单个集成的设备(例如装置200(图2)),而不是两个分离的组件。
示例方法500继续操作506,其中处理电路206将经处理的数据分组传送到CPU核302。一旦GPU 110已经处理了数据分组,经处理的数据分组于是就可以被发送到CPU核302以供各种应用使用。
还可以相反地实施用于接收、处理和传送数据的示例方法500。例如,GPU 110可以从CPU核302接收数据分组,处理数据分组,并且将经处理的数据分组传送到NIC 108以用于传送到网络400。
在实施例中,示例方法500可以包括附加的操作,诸如例如检测与所述多个分组流对应的业务负载特性,并且基于业务负载特性以及由GPU 110所执行的负载平衡而将一个或多个分组流指引到CPU核302中的一个或多个。
如本文中所述的,示例可以包括逻辑或多个电路、组件、模块或机制,或者可以操作于其上。模块是能够执行所指定的操作的有形实体(例如硬件),并且可以用某种方式被配置或布置。在示例中,电路可以用指定的方式被布置(例如在内部,或关于外部实体、诸如其它电路)为模块。在示例中,一个或多个计算机系统(例如独立的、客户端或服务器计算机系统)的至少一部分或者GPU 110的一个或多个处理器可以由固件或软件(例如指令208(图2)、应用部分、或应用)配置为模块,所述模块运作以执行所指定的操作。在示例中,软件可以驻留在至少一个机器可读介质上。在示例中,软件当被模块的底层硬件(例如GPU 110)执行的时候,可以包括指令208(图1),以使得硬件执行所指定的操作。
例如,指令208可以使得GPU 110检测在NIC 108处所接收的多个分组流的特性。在各种实施例中,指令208可以可选地使得硬件检测与所述多个分组流对应的业务负载特性,并且基于业务负载特性而将一个或多个分组流指引到所述一个或多个CPU核302。
虽然机器可读介质可以包括单个介质,但是术语“机器可读介质”可以包括单个介质或多个介质(例如集中式或分布式数据库,和/或相关联的高速缓存和服务器)。
术语“机器可读介质”可以包括如下任何介质:所述介质能够存储、编码或承载指令208以供机器(例如装置200、GPU 110或任何其它处理器或电路)执行,并且使得所述机器执行本公开内容的技术中的任何一个或多个,或者其能够存储、编码或承载由这样的指令所使用的或与这样的指令相关联的数据结构。换言之,处理电路206(图2)可以包括指令,并且因此可以在各种实施例的上下文中被称为机器可读介质。其它非限制性机器可读介质示例可以包括固态存储器、以及光学和磁性介质。机器可读介质的特定示例可以包括:非易失性存储器、诸如半导体存储器设备(例如电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))和闪速存储器设备;磁盘,诸如内部硬盘和可移除盘;磁光盘;以及CD-ROM和DVD-ROM盘。
指令208可以此外在通信网络上、通过使用传送介质、利用多个传递协议(例如帧中继、因特网协议(IP)、TCP、用户数据报协议(UDP)、超文本传递协议(HTTP)等等)中的任一个来被传送或接收。示例通信网络可以包括局域网(LAN)、广域网(WAN)、分组数据网络(例如因特网)、移动电话网络((例如信道访问方法,包括码分多址(CDMA)、时分多址(TDMA)、频分多址(FDMA)以及正交频分多址(OFDMA),以及蜂窝网络,诸如全球移动通信系统(GSM)、通用移动电信系统(UMTS)、CDMA 2000 lx*标准和长期演进(LTE))、普通老式电话(POTS)网络,以及无线数据网络(例如电气与电子工程师协会(IEEE)802族的标准,包括IEEE 802.11标准(WiFi)、IEEE 802.16标准(WiMax®)以及其它)、对等(P2P)网络,或其它现在已知或稍后开发的协议。
术语“传送介质”应当被理解为包括如下任何无形介质:所述无形介质能够存储、编码、或承载指令以供硬件处理电路执行,并且包括数字或模拟通信信号或其它无形介质以促进这样的软件的通信。
附加注释&示例:
示例1包括一主题(诸如设备、处理器、计算机设备、电气装置等等),所述主题包括网络接口控制器(NIC);存储器;以及加速器,所述加速器包括:直接存储器访问(DMA)控制器,其被配置成从NIC接收数据分组,并且将所述数据分组移动到存储器;以及处理电路,所述处理电路被配置成通过在从NIC接收的数据分组上实现分组处理功能来生成经处理的数据分组,并且将所述经处理的数据分组提供到中央处理单元(CPU)的至少一个处理核。
在示例2中,示例1的主题可以可选地包括其中所述加速器包括图形处理单元(GPU)。
在示例3中,示例2的主题可以可选地包括输送代理以在NIC和加速器之间输送分组。
在示例4中,示例3的主题可以可选地包括其中所述分组处理功能包括分组分类器功能。
在示例5中,示例4的主题可以可选地包括其中所述输送代理此外被配置成将分组提供到分组分类器功能。
在示例6中,示例4的主题可以可选地包括其中所述输送代理此外被配置成追踪分组处理的状态。
在示例7中,示例2的主题可以可选地包括其中所述加速器包括分组传送和分组传送功能。
在示例8中,示例1-7中任一个的主题可以可选地包括其中所述NIC和加速器包括软件层,所述软件层形成虚拟NIC接口,用以将经处理的数据分组提供到所述至少一个处理核。
在示例9中,示例8的主题可以可选地包括其中所述虚拟NIC向所述至少一个处理核呈现针对加速器和NIC的卸载能力信息。
在示例10中,示例9的主题可以可选地包括第二DMA控制器,用于将经处理的数据分组提供给虚拟NIC接口。
在示例11中,示例1-10中任一个的主题可以可选地包括其中所述加速器包括现场可编程阵列(FPGA)。
在示例12中,示例1-11中任一个的主题可以可选地包括其中经处理的数据分组通过使用网状连接而被提供到所述至少一个处理核。
在示例13中,示例1-12中任一个的主题可以可选地包括其中所述处理电路被配置成执行负载平衡操作。
在示例14中,示例1-13中任一个的主题可以可选地包括如下电路:所述电路用于从所述至少一个处理核接收数据分组,以用于通过使用NIC来传送。
在示例15中,示例1-14中任一个的主题可以可选地包括其中所述分组处理功能包括:用于被提供到所述至少一个处理核的数据分组的解密功能,以及用于从所述至少一个处理核所接收的数据分组的加密功能。
在示例16中,示例15的主题可以可选地包括其中所述分组处理功能包括调度功能,用于调度从所述至少一个处理核所接收的数据分组的传送。
示例17包括一主题(诸如数据中心系统、联网系统、或其它系统),所述主题包括网络接口控制器(NIC),所述网络接口控制器被配置成自网络传送和接收数据;中央处理单元(CPU),其包括第一核与第二核;与所述CPU和NIC进行电通信的加速器,所述加速器包括直接存储器访问(DMA)控制器、处理电路和存储了指令的存储器,所述指令在被加速器执行的时候使得加速器执行操作,包括:通过在从NIC接收的数据分组上实现分组处理功能而生成经处理的数据分组,以及将所述经处理的数据分组提供到所述第一核或第二核中的至少一个。
在示例18中,示例17的主题可以可选地包括其中所述分组处理功能包括以下各项中的至少一个:分组加密、分组解密和分组分类。
在示例19中,示例17-18中任一个的主题可以可选地包括其中所述加速器此外被配置成执行负载平衡操作,用以至少在所述第一核与第二核之间平衡处理负载。
示例20包括一主题,诸如包括指令的机器可读介质,所述指令当在机器(诸如控制设备、电气装置、图形处理单元(GPU)、处理器、NIC卡、或其它以太网设备等等)上被执行的时候使得所述机器执行操作,包括:在GPU的直接存储器访问(DMA)控制器处提供来自网络接口控制器(NIC)的数据分组;通过使用分组处理功能来处理所述数据分组,所述分组处理功能包括解密功能和分组分类功能中的至少一个,用以生成经处理的数据分组;以及将经处理的数据分组提供到中央处理单元(CPU)的至少一个处理核。
在示例21中,示例20的主题可以可选地包括其中所述指令此外包括根据负载平衡操作而将经处理的数据分组提供到CPU的两个或更多处理核。
在示例22中,示例20-21中任一个的主题可以可选地包括从所述至少一个处理核接收数据分组;以及根据调度功能而将所述数据分组提供到NIC。
示例23包括图形处理单元(GPU),所述图形处理单元具有:用于向和从网络传送和接收数据分组的构件;用于将经处理的数据分组传送到中央处理单元(CPU)的多个核的构件;以及用于生成经处理的数据分组以用于传送到所述多个核的构件。
在示例24中,示例23的主题可以可选地包括其中所述用于将经处理的数据分组传送到所述多个核的构件包括网状连接。
在示例21中,示例19的主题可以可选地包括用于执行所述多个核之间的负载平衡的构件。
以上具体实施例包括对附图的参考,所述附图形成具体实施例的一部分。附图作为图示而示出可以被实践的特定实施例。这些实施例在本文中还被称为“示例”。这样的示例可以包括除了所示或所述的那些之外的元素。然而,还设想的是包括所示或所述的元素的示例。此外,还设想的是如下示例:所述示例使用要么关于特定示例(或其一个或多个方面)要么关于本文中所示或所述的其它示例(或其一个或多个方面)所示或所述的那些元素(或其一个或多个方面)的任何组合或置换。
本文档中所提及的出版物、专利和专利文献通过引用以其全部被并入本文中,就如同单独地通过引用被并入那样。在本文档和通过引用被如此并入的那些文献之间的不一致使用的情况中,在所并入的(多个)参考文献中的使用补充本文档的使用:对于矛盾的不一致性,本文档中的使用进行掌控。
在本文档中,术语“一”或“一个”被使用,如在专利文献中常见的那样,用于包括一个或多于一个,其独立于“至少一个”或“一个或多个”的任何其它实例或使用。在本文档中,术语“或”用于指代非排他性的或,使得“A或B”包括“A但不是B”、“B但不是A”以及“A和B”,除非另行指示。在所附权利要求中,术语“包括”和“其中”被用作相应术语“包括有”和“其中有”的简明英语等同物。而且,在以下权利要求中,术语“包括”和“包含”是开放式的,也就是说,包括除了在权利要求中这样的术语之后所列出的那些之外的元素的系统、设备、物品或过程仍被视为落入该权利要求的范围内。此外,在以下权利要求中,术语“第一”、“第二”和“第三”等等仅仅被用作标签,并且不意图暗示针对它们的对象的数字次序。
以上描述意图是说明性的,而不是限制性的。例如,上述示例(或其一个或多个方面)可以结合其它的被使用。可以诸如由本领域普通技术人员在回顾以上描述时使用其它实施例。摘要是为了允许读者快速地弄清技术公开内容的性质,并且在理解了以下的情况下被提交:它将不被用于解释或限制权利要求的范围或含义。而且,以上具体实施方式中,各种特征可以被群组在一起以精简公开内容。然而,权利要求可以不阐明本文中所公开的特征,因为实施例可以包括所述特征的子集。此外,实施例可以包括比在特定示例中所公开的那些更少的特征。因而,以下权利要求由此被并入到具体实施方式中,其中权利要求独立作为分离的实施例。本文中所公开的实施例的范围将参考所附权利要求、连同这样的权利要求被授权给的等同物的全范围来被确定。
Claims (25)
1.一种装置,包括:
网络接口控制器(NIC);
存储器;以及
加速器,所述加速器包括:
直接存储器访问(DMA)控制器,其被配置成从NIC接收数据分组,并且将所述数据分组移动到存储器;以及
处理电路,所述处理电路被配置成:
通过在从NIC接收的数据分组上实现分组处理功能而生成经处理的数据分组,以及
将经处理的数据分组提供到中央处理单元(CPU)的至少一个处理核。
2.根据权利要求1所述的装置,其中所述加速器包括图形处理单元(GPU)。
3.根据权利要求2所述的装置,此外包括输送代理,用于在NIC与加速器之间输送分组。
4.根据权利要求3所述的装置,其中所述分组处理功能包括分组分类器功能。
5.根据权利要求4所述的装置,其中所述输送代理此外被配置成将分组提供到分组分类器功能。
6.根据权利要求4所述的装置,其中所述输送代理此外被配置成追踪分组处理的状态。
7.根据权利要求2所述的装置,其中所述加速器包括分组传送和分组传送功能。
8.根据权利要求1所述的装置,其中所述NIC和加速器包括软件层,所述软件层形成虚拟NIC接口,用以将经处理的数据分组提供到所述至少一个处理核。
9.根据权利要求8所述的装置,其中所述虚拟NIC向所述至少一个处理核呈现针对加速器和NIC的卸载能力信息。
10.根据权利要求9所述的装置,此外包括:
第二DMA控制器,其用于将经处理的数据分组提供到虚拟NIC接口。
11.根据权利要求1所述的装置,其中所述加速器包括现场可编程阵列(FPGA)。
12.根据权利要求1所述的装置,其中经处理的数据分组通过使用网状连接而被提供到所述至少一个处理核。
13.根据权利要求1所述的装置,其中所述处理电路被配置成执行负载平衡操作。
14.根据权利要求1所述的装置,此外包括:
用于从所述至少一个处理核接收数据分组以用于通过使用NIC传送的电路。
15.根据权利要求1所述的装置,其中所述分组处理功能包括:用于被提供到所述至少一个处理核的数据分组的解密功能,以及用于从所述至少一个处理核所接收的数据分组的加密功能。
16.根据权利要求15所述的装置,其中所述分组处理功能包括调度功能,用于调度从所述至少一个处理核所接收的数据分组的传送。
17.一种系统,包括:
网络接口控制器(NIC),其被配置成从网络传送和接收数据;
中央处理单元(CPU),其包括第一核与第二核;
与所述CPU和NIC进行电通信的加速器,所述加速器包括直接存储器访问(DMA)控制器、处理电路和存储器,所述加速器用于执行包括以下各项的操作:
通过在从NIC接收的数据分组上实现分组处理功能而生成经处理的数据分组,以及
将所述经处理的数据分组提供到所述第一核或第二核中的至少一个。
18.根据权利要求17所述的系统,其中所述分组处理功能包括以下各项中的至少一个:分组加密、分组解密和分组分类。
19.根据权利要求17所述的系统,其中所述加速器此外被配置成执行负载平衡操作,用以至少在所述第一核与第二核之间平衡处理负载。
20.一种图形处理单元(GPU),包括:
用于向和从网络传送和接收数据分组的构件;
用于将经处理的数据分组传送到中央处理单元(CPU)的多个核的构件;以及
用于生成经处理的数据分组以用于传送到所述多个核的构件。
21.根据权利要求20所述的GPU,其中所述用于将经处理的数据分组传送到所述多个核的构件包括网状连接。
22.一种方法,包括:
从网络接口控制器(NIC)接收数据分组;
将数据分组移动到存储器;
通过在从NIC接收的数据分组上实现分组处理功能而生成经处理的数据分组;以及
将经处理的数据分组提供到中央处理单元(CPU)的至少一个处理核。
23.根据权利要求22所述的方法,此外包括:
执行轮循负载平衡,用于将经处理的数据分组提供到所述至少一个处理核。
24.根据权利要求22-23中任一项所述的方法,此外包括:
执行至少一个进入服务品质(QoS)功能以将经处理的数据分组提供到所述至少一个处理核,所述至少一个进入QoS功能包括以下各项中的至少一个:计量功能、业务类分离功能、以及分割和重组(SAR)功能。
25.一种存储了指令的机器可读介质,所述指令在被图形处理单元(GPU)执行的时候使得GPU执行权利要求22-24中任一项的操作。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/198,714 US10331590B2 (en) | 2016-06-30 | 2016-06-30 | Graphics processing unit (GPU) as a programmable packet transfer mechanism |
US15/198714 | 2016-06-30 | ||
PCT/US2017/034429 WO2018004896A1 (en) | 2016-06-30 | 2017-05-25 | Graphics processing unit (gpu) for packet transfer |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109313618A true CN109313618A (zh) | 2019-02-05 |
CN109313618B CN109313618B (zh) | 2023-07-28 |
Family
ID=60787472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780034009.6A Active CN109313618B (zh) | 2016-06-30 | 2017-05-25 | 用于分组传递的图形处理单元(gpu) |
Country Status (4)
Country | Link |
---|---|
US (1) | US10331590B2 (zh) |
CN (1) | CN109313618B (zh) |
DE (1) | DE112017003279T5 (zh) |
WO (1) | WO2018004896A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112398762A (zh) * | 2019-08-11 | 2021-02-23 | 特拉维夫迈络思科技有限公司 | 用于上传/下载数据库的硬件加速 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10110684B1 (en) | 2013-08-15 | 2018-10-23 | Avi Networks | Transparent network service migration across service devices |
US9843520B1 (en) * | 2013-08-15 | 2017-12-12 | Avi Networks | Transparent network-services elastic scale-out |
US11283697B1 (en) | 2015-03-24 | 2022-03-22 | Vmware, Inc. | Scalable real time metrics management |
US10331590B2 (en) | 2016-06-30 | 2019-06-25 | Intel Corporation | Graphics processing unit (GPU) as a programmable packet transfer mechanism |
WO2018039482A1 (en) * | 2016-08-24 | 2018-03-01 | Raduchel William J | Network-enabled graphics processing module |
US10936533B2 (en) * | 2016-10-18 | 2021-03-02 | Advanced Micro Devices, Inc. | GPU remote communication with triggered operations |
US10140392B1 (en) | 2017-06-29 | 2018-11-27 | Best Apps, Llc | Computer aided systems and methods for creating custom products |
US10254941B2 (en) | 2017-06-29 | 2019-04-09 | Best Apps, Llc | Computer aided systems and methods for creating custom products |
US11204747B1 (en) * | 2017-10-17 | 2021-12-21 | Xilinx, Inc. | Re-targetable interface for data exchange between heterogeneous systems and accelerator abstraction into software instructions |
US10740163B2 (en) * | 2018-06-28 | 2020-08-11 | Advanced Micro Devices, Inc. | Network packet templating for GPU-initiated communication |
US10795840B2 (en) | 2018-11-12 | 2020-10-06 | At&T Intellectual Property I, L.P. | Persistent kernel for graphics processing unit direct memory access network packet processing |
US10922449B2 (en) | 2018-11-21 | 2021-02-16 | Best Apps, Llc | Computer aided systems and methods for creating custom products |
CN110058931B (zh) * | 2019-04-19 | 2022-03-22 | 上海兆芯集成电路有限公司 | 用以任务调度的处理系统及其加速方法 |
WO2020236296A1 (en) | 2019-05-23 | 2020-11-26 | Cray Inc. | System and method for facilitating efficient packet injection into an output buffer in a network interface controller (nic) |
US11470017B2 (en) * | 2019-07-30 | 2022-10-11 | At&T Intellectual Property I, L.P. | Immersive reality component management via a reduced competition core network component |
WO2021178221A1 (en) | 2020-03-03 | 2021-09-10 | Best Apps, Llc | Computer aided systems and methods for creating custom products |
US11514203B2 (en) * | 2020-05-18 | 2022-11-29 | Best Apps, Llc | Computer aided systems and methods for creating custom products |
US11960813B2 (en) | 2021-08-02 | 2024-04-16 | Advanced Micro Devices, Inc. | Automatic redistribution layer via generation |
EP4391496A1 (en) * | 2022-12-23 | 2024-06-26 | INTEL Corporation | Networking control engine embedded in a platform |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1910571A (zh) * | 2003-07-25 | 2007-02-07 | 国际商业机器公司 | 单芯片协议转换器 |
US20080181245A1 (en) * | 2007-01-31 | 2008-07-31 | Claude Basso | System and Method for Multicore Communication Processing |
CN101572689A (zh) * | 2008-04-29 | 2009-11-04 | 国际商业机器公司 | 多处理器系统中网络接口卡与加速器传输数据的方法与装置 |
CN101990002A (zh) * | 2009-07-29 | 2011-03-23 | 索乐弗莱尔通讯公司 | 控制器集成 |
EP2722767A1 (en) * | 2012-10-16 | 2014-04-23 | Solarflare Communications Inc | Encapsulated accelerator |
CN104011656A (zh) * | 2011-12-22 | 2014-08-27 | 英特尔公司 | 使用直接数据路径架构来存储数据以降低能量消耗和改进性能 |
US20150039793A1 (en) * | 2012-03-14 | 2015-02-05 | Istituto Nazionale Di Fisica Nucleare | Network interface card for a computing node of a parallel computer accelerated by general purpose graphics processing units, and related inter-node communication method |
US8996644B2 (en) * | 2010-12-09 | 2015-03-31 | Solarflare Communications, Inc. | Encapsulated accelerator |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7793032B2 (en) | 2007-07-11 | 2010-09-07 | Commex Technologies, Ltd. | Systems and methods for efficient handling of data traffic and processing within a processing device |
US8458366B2 (en) | 2007-09-27 | 2013-06-04 | Oracle America, Inc. | Method and system for onloading network services |
US9672162B2 (en) | 2013-08-16 | 2017-06-06 | Arm Limited | Data processing systems |
US9698791B2 (en) | 2013-11-15 | 2017-07-04 | Scientific Concepts International Corporation | Programmable forwarding plane |
US9444827B2 (en) | 2014-02-15 | 2016-09-13 | Micron Technology, Inc. | Multi-function, modular system for network security, secure communication, and malware protection |
US10331590B2 (en) | 2016-06-30 | 2019-06-25 | Intel Corporation | Graphics processing unit (GPU) as a programmable packet transfer mechanism |
-
2016
- 2016-06-30 US US15/198,714 patent/US10331590B2/en active Active
-
2017
- 2017-05-25 WO PCT/US2017/034429 patent/WO2018004896A1/en active Application Filing
- 2017-05-25 DE DE112017003279.2T patent/DE112017003279T5/de active Pending
- 2017-05-25 CN CN201780034009.6A patent/CN109313618B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1910571A (zh) * | 2003-07-25 | 2007-02-07 | 国际商业机器公司 | 单芯片协议转换器 |
US20080181245A1 (en) * | 2007-01-31 | 2008-07-31 | Claude Basso | System and Method for Multicore Communication Processing |
CN101572689A (zh) * | 2008-04-29 | 2009-11-04 | 国际商业机器公司 | 多处理器系统中网络接口卡与加速器传输数据的方法与装置 |
CN101990002A (zh) * | 2009-07-29 | 2011-03-23 | 索乐弗莱尔通讯公司 | 控制器集成 |
US8996644B2 (en) * | 2010-12-09 | 2015-03-31 | Solarflare Communications, Inc. | Encapsulated accelerator |
CN104011656A (zh) * | 2011-12-22 | 2014-08-27 | 英特尔公司 | 使用直接数据路径架构来存储数据以降低能量消耗和改进性能 |
US20150039793A1 (en) * | 2012-03-14 | 2015-02-05 | Istituto Nazionale Di Fisica Nucleare | Network interface card for a computing node of a parallel computer accelerated by general purpose graphics processing units, and related inter-node communication method |
EP2722767A1 (en) * | 2012-10-16 | 2014-04-23 | Solarflare Communications Inc | Encapsulated accelerator |
Non-Patent Citations (1)
Title |
---|
苏文等: "面向云计算的多核处理器存储和网络子系统优化设计", 《高技术通讯》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112398762A (zh) * | 2019-08-11 | 2021-02-23 | 特拉维夫迈络思科技有限公司 | 用于上传/下载数据库的硬件加速 |
CN112398762B (zh) * | 2019-08-11 | 2022-08-05 | 迈络思科技有限公司 | 一种网元及网元中的通信方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109313618B (zh) | 2023-07-28 |
WO2018004896A1 (en) | 2018-01-04 |
US10331590B2 (en) | 2019-06-25 |
DE112017003279T5 (de) | 2019-03-14 |
US20180004693A1 (en) | 2018-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109313618A (zh) | 用于分组传递的图形处理单元(gpu) | |
US11575607B2 (en) | Dynamic load balancing for multi-core computing environments | |
CN110036609B (zh) | 用于实现智能分组聚合的设备和方法 | |
US10986041B2 (en) | Method and apparatus for virtual network functions and packet forwarding | |
CN109768939B (zh) | 一种支持优先级的标签化网络栈方法和系统 | |
US9965441B2 (en) | Adaptive coalescing of remote direct memory access acknowledgements based on I/O characteristics | |
US9602437B1 (en) | System and method for accelerating network applications using an enhanced network interface and massively parallel distributed processing | |
CN115516832A (zh) | 网络和边缘加速瓦片(next)体系结构 | |
CN105975433B (zh) | 一种报文处理方法及装置 | |
Yi et al. | Gpunfv: a gpu-accelerated nfv system | |
US20180248934A1 (en) | Method and System for a Scheduled Map Executor | |
US20230300075A1 (en) | Methods and apparatus for performance scaling with parallel processing of sliding window management on multi-core architecture | |
CN109992405A (zh) | 一种处理数据报文的方法和网卡 | |
US11750418B2 (en) | Cross network bridging | |
US20240080276A1 (en) | Path selection for packet transmission | |
CN116266141A (zh) | 用于使用负载平衡指派和检查反重放序列号的方法和装置 | |
US10616116B1 (en) | Network traffic load balancing using rotating hash | |
US20150254100A1 (en) | Software Enabled Network Storage Accelerator (SENSA) - Storage Virtualization Offload Engine (SVOE) | |
KR101683818B1 (ko) | Cpu 부하 분산 패킷 처리 장치 및 방법 | |
US20220109613A1 (en) | Programmable traffic management engine | |
US20230208913A1 (en) | In-order streaming in-network computation | |
US20230393814A1 (en) | In-network compute operations | |
US20230185624A1 (en) | Adaptive framework to manage workload execution by computing device including one or more accelerators | |
WO2023133097A1 (en) | Adaptive temporal resource binding based on speculative pipeline interdependency |
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 |