CN110036609A - 智能分组聚合 - Google Patents

智能分组聚合 Download PDF

Info

Publication number
CN110036609A
CN110036609A CN201780075253.7A CN201780075253A CN110036609A CN 110036609 A CN110036609 A CN 110036609A CN 201780075253 A CN201780075253 A CN 201780075253A CN 110036609 A CN110036609 A CN 110036609A
Authority
CN
China
Prior art keywords
processing element
grouping
theme
queue
optionally included
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
Application number
CN201780075253.7A
Other languages
English (en)
Other versions
CN110036609B (zh
Inventor
D·比德尔曼
M·奥尔
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN110036609A publication Critical patent/CN110036609A/zh
Application granted granted Critical
Publication of CN110036609B publication Critical patent/CN110036609B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6215Individual queue per QOS, rate or priority
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/22Traffic shaping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • H04L47/6275Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6295Queue scheduling characterised by scheduling criteria using multiple queues, one for each individual QoS, connection, flow or priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9005Buffering arrangements using dynamic buffer space allocation
    • 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/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • 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/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • 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/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/321Interlayer communication protocols or service data unit [SDU] definitions; Interfaces between layers

Abstract

本文中提供了用于实现智能分组聚合的各种系统和方法。一种用于实现智能分组聚合的网络接口设备,包括:分组解析器,用于接收多个分组并将该多个分组中的每个分组路由至多个队列中的队列,这些分组基于这些分组特性在队列之间划分;以及协调器电路,该协调器电路用于:与处理元件对接,以确定该处理元件的当前操作状态;基于该处理元件的当前操作状态从多个队列中选择队列;以及将数个分组从所选择的队列转发至处理元件。

Description

智能分组聚合
优先权申请
本申请是2016年12月30日提交的美国专利申请序列第15/396,196号的延续,并要求该美国专利申请序列第15/396,196号的优先权,该专利的公开内容通过引用整体结合于此。
技术领域
本文中所描述的实施例总体上涉及数据通信系统,并且具体地涉及实现智能分组聚合。
背景技术
当前,网络卡接收数据分组并将它们传递至计算设备以供进行处理。随着网络使用增长并且附加的系统上线以将更多数据提供给更多终端用户,数据通信服务需要变得更快且更高效。在网络卡级别,需要有效的分组处理以增加网络中的吞吐量。
附图说明
在附图中(这些附图不一定是按比例绘制的),相同数字可描述不同视图中的类似组件。具有不同的字母后缀的相同的数字可表示类似组件的不同实例。在所附附图的图中通过示例的方式而非限制性地图示出一些实施例,其中:
图1是图示出根据实施例的操作环境100的示意图;
图2是图示出根据实施例的NID的示意图;
图3是图示出根据实施例的分组处理的示意图;
图4是图示出根据实施例的用于灵活分组调度的方法的流程图;
图5是图示出根据实施例的随时间的处理元件的配置的示意图;
图6是图示出根据实施例的用于基于时间的灵活分组调度的方法的流程图;
图7是图示出根据实施例的分组处理期间的控制和数据流的示意图;
图8是图示出根据实施例的分组处理期间的控制和数据流的示意图;
图9是图示出根据实施例的用于管理分组处理的方法的流程图;
图10是图示出根据实施例的用于管理分组处理的方法的流程图;
图11是图示出根据实施例的用于管理分组处理的方法的流程图;
图12是图示出根据实施例的用于管理分组处理的方法的流程图;
图13是图示出根据实施例的分组处理的示意图;
图14是图示出根据实施例的用于分组处理的方法的流程图;
图15是图示出根据实施例的分组处理的另一示例的示意图;
图16是图示出根据实施例的用于分组处理的方法的流程图;
图17是图示出根据实施例的用于分组处理的方法的流程图;以及
图18是图示出根据示例实施例的示例机器的框图,可对该示例机器执行本文中所讨论的技术(例如,方法)中的任何一种或多种。
具体实施方式
在下列描述中,出于解释的目的,阐述了众多具体细节,以便提供对一些示例实施例的全面理解。然而,对本领域技术人员将显而易见的是,可在没有这些具体细节的情况下实施本公开。
各种参数和条件可能影响分组处理的性能。例如,中央处理单元(CPU)速度和利用率、中断开销、总线带宽、存储器等待时间以及I/O等待时间可影响分组处理应用的性能。影响分组处理的CPU开销的一些示例包括针对每个分组的存储器分配和解除分配、在内核与用户空间之间复制数据、昂贵的高速缓存未命中、以及每分组系统调用所涉及的开销。
通过将一些任务从CPU卸载到网络接口设备(NID),可提高整体分组处理速度并使其流畅。NID可被用作集中式控制器,以处置分组并将其路由至CPU、协处理器、专用集成电路(ASIC)或现场可编程门阵列(FPGA)。
网络接口设备(NID)可以是但不限于,网络接口卡、网络接口控制器、网络适配器、物理网络接口、或局域网(LAN)适配器。NID可以是芯片上系统(SoC)中的同一ASIC或者相邻ASIC管芯中的模块。一般而言,NID包括用于支持数据链路层的电子电路与物理层处的物理设备。NID可提供通过各种信道和协议的通信,这些信道和协议包括以太网、蜂窝(3G、4G、5G、LTE等)WiFi、Omnipath、光纤信道等。
可编程GPU可通过接收来自主机CPU或来自NID的代码、数据和命令而充当协处理器。近来在GPU开发中的努力一直致力于提高并行性。由此,当今的GPU可具有数百或数千个核。同时,对于许多类型的高度并行任务,GPU中大量的核可提供比单个CPU核更高的吞吐量。通过发起每GPU核多个线程以提供高线程级并行性,GPU有用性可被增强。通过使用高线程级并行性,GPU可通过执行相当大量的线程来降低显而易见的存储器访问等待时间。相应地,本文中所描述的一些实施例利用GPU的高线程级并行性能力来执行分组处理功能,以减少或消除系统瓶颈和减速的至少一个来源。
对于特定的处理需要,ASIC和FPGA还可被用作针对主机CPU或针对NID的协处理器。多个ASIC可被并入到主机设计中,在该主机设计中,每个ASIC针对特定使用进行设计,这些特定使用诸如,声音分析、图像分析、机器学习、加密等等。类似地,FPGA是可在针对特定使用制造之后被配置的集成电路。FPGA可以是在运行时可配置且可重新配置的,以使得FPGA能够对其自身进行重新配置以适合即将到来的任务。ASIC和FPGA可被用于各种各样的任务,包括:模数转换器(ADC)、数模转换器(DAC)、加密/解密、数据压缩、联网卸载(例如,解析、封装、转发、网络通信量管理、查找等)等等。
出于本公开的目的,术语“处理元件”是指能够处理诸如进程、线程、虚拟机和FPGA程序之类的数据的构造。
出于本公开的目的,“计算单元”包括能够处理网络分组中的一些或全部的任何物理组件或物理组件的逻辑布置。示例计算单元包括但不限于:CPU、核、CPU复合体、服务器复合体、FPGA、ASIC、图形处理单元(GPU)或其他协处理器。
因此,利用此布置、具有内置计算单元和处理元件以及与主机的紧密协作接口的NID,NID能够使用关于环境中各种条件的知识(例如,NID自身的状态以及主机的状态两者)来使得在分组将被转发时其自己的对分组的工作或主机的对分组的工作更高效、更有效或更全面。另外,NID能够影响环境(其自己的环境(例如,NID上)或主机的环境),以使得分组处理更好。
一般而言,NID通过一些L1/L2接口接收一个分组或多个分组,并且使用(可能状态性的)解析器来决定针对该分组的下一操作是什么,其中,“状态性的”可依赖于当前或历史的所保存的状态元数据。NID可使用NID上计算单元和处理元件来执行NID上处理,这些计算单元诸如ASIC、FPGA等等,这些处理元件诸如FPGA程序、VM等等。NID能够:1)进行与分组有关的事情,诸如,封装/解除封装、加密/解密、添加/移除头部、聚合/分割、添加时间戳等;以及2)进行与分组的状态有关的事情,诸如,保存/更新元数据、改变内部或系统配置以处置分组处理、查询/使用所存储的元数据、查询/使用NID或系统的当前或历史状态、请求/调度NID、以及系统级状态改变(例如,预加载高速缓存、将FPGA代码加载在NID上FPGA或主机FPGA中、或两者等)。
本公开被布置成:
1.系统架构和操作环境的概览
2.分组处理机制
a.基于环境的状态的分组队列优先级排定
b.基于时分复用的分组队列优先级排定
3.对环境中的处理元件的主动管理
a.将程序/指令预加载到处理元件中以准备作用于分组的处理元件
b.基于元数据对要加载的程序/指令的优先级排定
4.使用优先级排定、预加载和其他机制的批处理
5.附加实施例
a.软件定义的联网
b.网络功能虚拟化
c.开放式虚拟交换机(OpenVswitch)和增强型柏克莱分组过滤器(BerkeleyPacket Filter)
d.物联网
e.数据中心应用
f.串行化器-解串行化器(SERDES)和其他组件
g.数据平面开发套件
本文中所公开的是通过NID与CPU核、FPGA或其他处理结构(例如,ASIC、GPU、协处理器或虚拟机(VM))之间的协调和集成来提供分组处理效率的系统和方法。
1.系统架构和操作环境的概览
图1是图示出根据实施例的操作环境100的示意图。操作环境100可以是服务器计算机、台式计算机、膝上型计算机、可穿戴设备、混合式设备、机载交通工具系统、网络交换机、网络路由器或能够接收和处理网络通信量的其他计算设备。操作环境100包括网络接口设备(NID)102。NID 102包括用于支持数据链路层与物理层的电子电路。具体而言,NID 102能够使用互连104或无线电106来接收数据。互连104被布置成用于通过物理介质接受信号,其中,这些信号被布置成某种被支持的L2组帧,并且将传入的信号流解释为位流,该位流被组织为被称为“帧”的L2单元。例如,互连104可以是以太网端口。其他类型的通信接口可由NID 102支持,诸如,千兆位以太网、ATM、HSSI、POS、FDDI、FTTH等等。在这些情况下,可在NID架构中提供适当的端口。无线电106能够发送和接收射频(RF)数据,并且被用来通过诸如WiFi、蓝牙、Zigbee、蜂窝通信等等之类的无线协议来进行通信。
NID 102包括分组解析器108和协调器电路110。可使用NID上CPU 111、ASIC、FPGA180或NID上的其他类型的计算单元来实现分组解析器108和协调器电路110中的任一者或两者。分组解析器108和协调器电路110可使用NID存储器112或主存储器114来进行各种操作,这些操作诸如,对分组进行排队、保存状态数据、存储历史数据、支持神经网络等等。
NID 102可经由合适的互连信道与核150A-N、主存储器114或操作环境100的其他部分进行通信,该互连信道诸如外围组件互连快速(PCIe)连接器116。PCIe连接器116可以具有任何宽度(例如,x1、x4、x12、x16或x32)。其他互连信道包括英特尔芯片上系统结构(IOSF)和快速路径互连(QPI)。
操作环境100还包括中央处理单元(CPU)核150A、150B、150C和150N(统称为150A-N)。虽然在图1中图示出四个核,但是理解在特定的CPU架构中可存在更多或更少的核。另外,可存在多个CPU逻辑地被编组在一起以创建CPU复合体。本文中所描述的机制可被用于单核CPU、多核CPU或者协同进行动作的多个CPU。
NID 102可经由诸如PCIe总线之类的总线来与核150A-N进行通信。PCIe客户端115控制该总线以及NID 102中与总线控制器118对接的PCIe连接器116。PCIe客户端115可执行附加功能,诸如,控制对内部资源到虚拟域的分配、支持各种形式的I/O虚拟化(例如,单根输入/输出虚拟化(SR-IOV))和其他功能。PCIe总线控制器118可被并入到包括核150A-N的同一管芯中。平台控制器中枢可包括PCIe总线控制器118、存储器管理单元(MMU)120、串行ATA控制器、通用串行总线(USB)控制器、时钟控制器、受信任平台模块(TPM)、串行外围接口(SPI)、以及处理器管芯中的其他组件。
现代处理器架构在去往主存储器之前具有高速缓存层级结构中的多个层级。在许多设计中,最外层的高速缓存由同一物理芯片上(例如,同一封装中)的所有核共享,而最内的高速缓存层级是逐核的。
在图1中所图示的示例中,每个CPU核150A-N包括对应的L1高速缓存,分成L1指令高速缓存152A、152B、152C、152N(统称为152A-N)和L1数据高速缓存154A、154B、154C、154N(统称为154A-N)。核150A-N各自还包括L2高速缓存156A、156B、156C、156N(统称为156A-N)。L1高速缓存和L2高速缓存的尺寸取决于处理器设计而变化。对于L1高速缓存尺寸,常规的尺寸范围为32KB至64KB(例如,16KB指令和16KB数据,或者32KB指令和32KB数据),并且对于L2高速缓存尺寸,常规的尺寸范围为256KB至512KB。L3高速缓存尺寸可从8MB变化到12MB或更多。
当数据在高速缓存中成功被找到时,其被称为“高速缓存命中”。高速缓存是非常快速的存储器,并且用于最内层的高速缓存的数据路径针对快速数据吞吐量被优化。即使如此,当高速缓存命中发生时,L1高速缓存(例如,高速缓存152A)中的数据可花费几个处理器周期来访问,L2高速缓存(例如,高速缓存156A)中的数据可花费十个或更多周期来访问,并且L3高速缓存(例如,高速缓存160)中的数据可花费五十个或更多周期。如果存在高速缓存未命中,以使得处理器不得不去往主存储器来获得数据或指令,则操作可能花费数百个周期。因此,高速缓存未命中是在计算上是非常高成本的。
为了提高通信效率和功效,NID 102能以辅助核150A-N并避免高速缓存未命中或增加高速缓存命中的方式来处理网络分组。本文中描述了示例过程。
在其他实施例中,操作环境100包括一个或多个FPGA 180。FPGA 180可存在于NID上或主机中。协调器电路110可与FPGA 180对接,以确定其状态、请求重新配置(或部分的重新配置)、或为FPGA 180提供作用于其上的数据。部分的重新配置是当FPGA 180的较小部分被重新配置时,与整个FPGA 180相对。NID 102可充当FPGA 180的协处理器或助手。当FPGA180能够处理的分组到达NID 102处时,那么以类似于高速缓存命中的方式将其称为“FPGA命中”。相反,如果分组到达并且FPGA 180未被配置成用于处置该分组并且需要被重新配置,则这可被称为“FPGA未命中”。协调器电路110可与一个或多个FPGA 180对接,以减少FPGA未命中或增加FPGA命中。本文中描述了示例过程。
在其他实施例中,操作环境100包括一个或多个虚拟机(VM)190。VM 190包括“容器”和“VM容器”以及其他类似的虚拟化“客户机”构造。VM 190可在CPU核150A-N、NID上CPU111上或其他地方执行。协调器电路110可与VM 190对接,以确定其状态、请求重新配置、或为VM 190提供作用于其上的数据。以类似方式,VM 190可周期性地或按需求旋转。当VM 190能够处理的分组到达NID 102时,那么可将其称为“VM命中”,并且相反,“VM未命中”是分组由于对应的VM 190未被加载而无法被立即处理的情况。NID 102可充当VM 190的协处理器或助手,以减少VM未命中或增加VM命中。本文中描述了示例过程。
图2是图示出根据实施例的NID 200的示意图。NID 200包括网络接口层202,该网络接口层202包括以太网接口204、无线电206并且可能包括其他的L1/L2接口208。解析器210从网络接口层202接收数据,并且还被配置成用于通过该网络接口层202向外传送数据。解析器210可提供图1的解析器108和协调器电路110两者的功能。NID 200包括NID上处理元件212A、212B、212N(统称为212A-N)。处理元件212A-N可以是线程、进程、虚拟机、FPGA程序以及能够处理分组数据的其他构造。这些元件212A-N还可被用来提供某种协调器功能。NID200还包括NID上FPGA 214,该NID上FPGA214可由解析器210配置成用于执行本文中所描述的功能。NID 200包括NID上队列216A、216B、216N(统称为216A-N),这些队列可包括数据队列、事件队列、完成队列、请求/命令队列等。为了与主机系统进行通信,NID 200包括PCIe客户端218并且任选地包括其他NID/CPU互连220。NID 200还可包括其自己的CPU 222以供进行机载处理。
2.分组处理机制
此处描述了若干个分组处理机制。NID能够基于环境因子动态地调度分组处理。这些环境因子可被存储在元数据数据库中,该元数据数据库可由NID和主机的其他组件访问。元数据数据库可包括关于分组、程序、FPGA配置、历史分组信息、主机或NID CPU负载、主机或NID存储器利用、功耗水平等的各种信息。
2.a.基于环境状态的分组队列优先级排定
提高分组处理效率的一种方式是修改分组的排队次序,以使得更可能由指令高速缓存(例如,高速缓存152A)中的现有指令、FPGA 180的分区或虚拟机190处理的分组优先于更不可能由此类处理元件处理的分组。由此,可影响分组调度,以便减少高速缓存、FPGA或虚拟机未命中。得到的分组调度就带宽而言可能是不平等的,但处理元件的整体性能更好。
图3是图示出根据实施例的分组处理的示意图。分组缓冲器300充当为了存储从网络接收的分组而留出的存储空间。分组缓冲器300可位于NID(例如,NID 102或NID 200)中,或者可位于主机计算机(例如,操作环境100)中。
随着分组302A、302B、302N(统称为302A-N)由分组解析器108接收,它们可被存储在分组缓冲器300中。分组解析器108使用分组检查机制(例如,使用TCP卸载引擎(TOE)和对应的特征)来检查传入的分组302A-N的内容。通过查找分组的封装中的层,分组解析器108能够确定源/目的地、通信量处置和元数据标记、应用或者甚至数据内容。分组检查不必是深度的分组检查。其可以与查看源地址/端口编号/其他头部信息、以及知晓来自该源地址/端口编号/头部信息的所有通信量需要使用特定程序或处理元件来处理一样简单。
在分组分析的过程期间获得的信息被存储在元数据数据库304中。元数据数据库304可存储关于一个分组或一组分组302A-N的各种元数据。例如,元数据数据库304可包括某种类型的数个分组、处理分组或类似分组所需要的程序、处理分组或类似分组所需要的虚拟机、处理分组或类似分组所需要的FPGA程序、分组或类似分组的统计学简档,等等。元数据数据库304由协调器电路110使用以管理对处理元件的协调、调度、加载和卸载。
协调器电路110需要具有与处理元件(例如,核154A、FPGA 180或VM 190)的同步化,以便确定恰当的调度决策。过程同步化的概念涉及即时(JIT)处理。JIT处理类似于JIT制造。JIT制造是用于装配诸如汽车之类的设备的部件在对该设备的装配之前不久被递送的情况。这允许制造商维持较小的库存并且仍然快速地生产产品。在本上下文中,如果将协调器电路110与处理元件同步,并且理解什么可被处理以及何时可被处理,则协调器电路110能够恰好在需要被处理的数据被需要之前递送该数据。这可引起更少的高速缓存/FPGA/VM未命中,并且还允许在设计中更小的硬件(例如,高速缓存)要求。
在JIT处理中可使用紧密紧凑的指令集合。在处理元件执行该指令集合的时刻之前,协调器电路110可将传入的分组数据加载到处理元件(例如,高速缓存)中。这允许指令和数据恰在要被处理的时刻到达。为了使协调器电路110与(多个)处理元件同步,该同步化需要是非常准确且精确的。该精确性和准确性可通过共享同一个时钟电路来实现。然而,在一些情况下,这是不可能的。由此,可使用其他同步化机制,这些同步化机制诸如,IEEE1588精确时间协议(PTP)、IEEE 802.1时间敏感型联网(TSN)、同步以太网、网络时间协议(NTP)或无线网络时间同步化机制(例如,参考广播同步(RBS)、传感器网络的定时同步协议(TPSN)、泛洪时间同步协议(FTSP)等)。同样,可在PCIe接口上使用精确时间测量(PTM)。
协调器电路110能够使用适当的定时约束,以与各种处理元件同步化,这些处理元件诸如,处理器核、FPGA 180、VM 190、或如GPU、加速器电路、通用GPU(GPGPU)等之类的其他物。例如,在FPGA 180的情况下,提前期可能不同,因为FPGA 180可花费相当大量的时间来对其自身或分区进行重新编程。为了适应该扩展的重新编程时间,协调器电路110可操作以首先发送程序,并且当分区正要完成编程时发送数据,以使得该数据可几乎紧接在被加载到FPGA 180中之后被处理。
协调器电路110可使用用于对来自分组缓冲器300的分组排定优先级或从分组缓冲器300丢弃分组的各种机制来组织分组缓冲器300。可通过分析元数据数据库304以确定处理分组302A-N需要哪些指令、与处理元件对接以确定该处理元件如何被配置(例如,哪些指令在高速缓存中或马上将要在高速缓存中,哪些程序在FPGA分区中,等等)、并且基于是否存在预期的高速缓存/FPGA/VM命中而向分组302A-N分派优先级或队列位置来实现优先级排定。
在一些实施例中,预期的命中被用作确定队列位置时的若干因子中的一个因子。在第一方面中,常规的优先级排定方案为{优先级,次序},其中,优先级是分组优先级,并且次序是循环(round robin)排序。使用该层级结构,首先就优先级对分组302A-N进行分析,并且随后如果若干个分组302A-N具有同一优先级,则就循环次序对分组302A-N进行分析。例如,优先级的范围可从零到七,其中,零为最高优先级,并且七为最低优先级。可使用其他值的范围,例如,1-8、1-100、1-5等,并且可使用其他优先级方案,例如,5是最高优先级并且1是最低优先级。可基于何种类型的数据将被存储在分组302A-N中、何种应用与分组302A-N相关联、用户偏好等来分派优先级。例如,携带用于实时对接(诸如,视频会议)的数据的分组302A-N可被分派比后台进程(诸如,软件更新服务)更高的分组优先级。
在第一个实施例中可使用修订的优先级排定方案。修订的优先级排定方案可将“命中”作为因子包括在优先级确定中。示例修订的优先级排定方案包括{优先级,命中,次序},其中,命中是布尔值真或假,并且当指令、程序或处理元件的其他配置是使得处理元件能够立刻处理分组302A-N的此类指令、程序或配置时,命中为真。
在优先级方案的第二个实施例中,常规优先级排定方案可以是{CIR,优先级,次序},其中,CIR是承诺信息速率,并且是指由服务提供方保证的带宽。高于CIR的是可突发的(burstable)带宽的限额,其可被表达为超额信息速率(EIR)。CIR与EIR的和为峰值信息速率(PIR)。修订的优先级排定方案可以是{CIR,命中,优先级,次序}。在此类实施例中,满足承诺数据速率,并且此后基于预期处理元件性能、分组数据优先级以及循环排序。
在优先级方案的第三个实施例中,常规优先级排定方案可以是{CIR,优先级,次序},并且修订的优先级排定方案可以是{CIR,优先级,命中,次序}。在此类实施例中,承诺数据速率被满足,并在处理元件性能之前考虑分组数据优先级,其中,循环排序是最后考虑的因子。
可开发包括命中因子的其他优先级排定方案。示例优先级排定方案包括但不限于{CIR,PIR,命中,优先级,次序}、{CIR,命中,PIR,优先级,次序}、{CIR,优先级,命中,PIR,次序}以及{命中,优先级,TTL,次序},其中,TTL是被分派给用于处理分组202A-N的指令或程序的存活时间(TTL)值。当分组302A-N需要被处理时,协调器电路110或其他组件可检查指令或程序是否被加载到高速缓存/FPGA/VM中。如果指令/程序不可用,则具有过期的TTL的任何指令可在其他指令之前被驱逐。如果分组302A-N到达并且由已经在存储器中的指令/程序处理(例如,高速缓存命中或FPGA命中),则指令/程序可使它们的相应TTL值被刷新、被更新或以其他方式被修改。TTL值可与优先级方案组合使用。
例如,如果分组的两个集合各自具有被加载在高速缓存中以处理这些分组的指令并且这些分组具有同一优先级,则具有较低或过期的TTL值的指令可优于具有较高或未过期的TTL的指令被使用。原因是具有较低或过期的TTL的指令至少部分地因为这些指令最近尚未被使用而具有该值。由此,可作出最近已被使用的指令(具有较高或未过期的TTL值的那些指令)可在附加分组处理中再次被使用的推断,所以使用此类指令的分组应当是优先的。
当分组缓冲器300变成已满时,可从分组流丢弃分组302A-N。头部丢弃是当分组缓冲器300已满时基于对分组302A-N中有什么的理解来作出丢弃决策的情况。尾部丢弃是当分组缓冲器300已满时不论分组优先级或分类如何而丢弃最后分组302N的情况。
为了实现智能丢弃机制,协调器电路110可检查分组的内容,检查处理元件的配置,并且基于每个分组中有什么来决定要丢弃哪个分组或哪些分组。通过考虑处理元件的配置(例如,高速缓存中的指令),协调器电路110能够减少或避免高速缓存/FPGA/VM未命中。使用逆优先级方案,其中具有最低优先级的一个分组或多个分组被丢弃。
在逆优先级方案的第一个实施例中,“可能未命中”度量与常规优先级因子组合使用。例如,常规逆优先级方案可以是{逆优先级,次序},其中,逆优先级是按最低优先级到最高优先级进行排序的分组优先级,并且其中,次序是循环处理中的次序。智能逆优先级方案可以是{逆优先级,可能未命中,次序},其中,可能未命中是分组数据是否将经历预期的高速缓存/FPGA/VM未命中的度量、值或评级。可能未命中因子可扩展到可配置成用于处理分组的任何处理元件。
在逆优先级方案的第二个实施例中,添加承诺信息速率(CIR),其中,重要性次序为逆CIR(例如,满足或超出CIR)、可能未命中、逆优先级、并且随后为循环次序。这可被表达为{逆CIR,可能未命中,逆优先级,次序}。正如上文所描述的逆优先级方案的第一个实施例,可能未命中因子可扩展到可配置成用于处理分组的任何处理元件。
可将附加或替代因子与逆优先级方案的第一和第二实施例中所讨论的因子组合、重新排序、或调整。示例附加因子为TTL。
图4是图示出根据实施例的用于灵活分组调度的方法400的流程图。在框402处,接收分组。从对分组进行分析来确定被用来处理分组的对应的处理元件(操作404)。在各实施例中,处理元件包括计算进程、线程、虚拟机或现场可编程门阵列(FPGA)。将分组存储在队列(例如,分组缓冲器)中(操作406)。
在框408处,判定处理元件在计算单元中是否活跃。在各实施例中,计算单元包括中央处理单元(CPU)、处理器核、CPU复合体、现场可编程门阵列(FPGA)或图形处理单元(GPU)。
在实施例中,从对分组进行分析来确定被用来处理分组的对应的处理元件包括:使用TCP卸载引擎来检查该分组并标识对应的处理元件。
在实施例中,判定处理元件在计算单元中是否活跃包括:与计算单元对接以判定处理元件是否活跃。在进一步的实施例中,计算单元是处理器核,并且为了与该计算单元对接,协调器电路用于接收对由该计算单元操作的高速缓存的内容的指示。在进一步的实施例中,对高速缓存的内容的指示由存储器管理单元(MMU)提供。
在实施例中,计算单元是FPGA,并且为了与该计算单元对接,协调器电路用于与FPGA接口进行通信以判定处理元件在计算单元中是否活跃。在进一步的实施例中,FPGA接口维持对哪些FPGA程序已经被加载在FPGA中的记录。
在框410处,基于处理元件在计算单元中是否活跃来修改分组在队列中的优先级。队列中的每个分组或每组分组可具有被分派给它的优先级。对处理元件进行监视。监视可包括确定哪些指令处于高速缓存中(在进程或线程的情况下)、确定哪些指令可能马上被放置在高速缓存中、确定哪个虚拟机被加载、确定FPGA当前如何被配置等。随着监视进行,该分组或该组分组的优先级可被提高或降低。例如,如果当前处于高速缓存中的指令是将对队列中的数据进行操作的指令(例如,高速缓存命中),则优先级可被提高。例如,如果处理队列中的数据所需要的指令当前处于主存储器中——换言之,高速缓存未命中是可能的,则优先级可被降低。
在实施例中,基于处理元件在计算单元中是否活跃来修改队列中分组的优先级包括:在处理元件在计算单元中活跃时提高该分组的优先级。在进一步的实施例中,提高分组的优先级包括将处理元件活跃与从以下各项的列表选择的至少两个其他因子包括在一起:分组优先级、循环次序、承诺信息速率、以及处理元件存活时间值。
在实施例中,基于处理元件在计算单元中是否活跃来修改队列中分组的优先级包括:在处理元件在计算单元中不活跃时降低该分组的优先级。在进一步的实施例中,降低分组的优先级包括将处理元件不活跃与从以下各项的列表选择的至少两个其他因子包括在一起:分组优先级、循环次序、承诺信息速率、以及处理元件存活时间值。
在实施例中,基于处理元件在计算单元中是否活跃来修改队列中分组的优先级包括以下操作:判定在处理元件在计算单元中不活跃时是否从队列丢弃分组,以及基于该判定而从队列丢弃分组。在进一步的实施例中,判定是否从队列丢弃分组包括将处理元件不活跃与从以下各项的列表选择的至少两个其他因子包括在一起:逆分组优先级、循环次序、逆承诺信息速率、以及处理元件存活时间值。
应理解,该节中所描述的优先级排定和丢弃技术可与来自本文档中的其他章节的技术组合使用。另外,可对优先级排定和丢弃技术进行组合,以使得串行地、并行地或以其他方式使用多个优先级排定或丢弃技术。
2.b.基于时分复用的分组队列优先级排定
在一些配置中,可给处理元件提供在被交换出之前执行的限量的时间。在此配置中,灵活的、智能NID可基于被用来处理特定的分组的处理元件何时将在计算单元上可用来执行分组调度。
由此,提高分组处理效率的另一方式为使到计算单元的分组递送与被用来处理该分组的处理元件活跃的时隙同步。时隙是处理元件能够执行时的时间段。时隙可以具有任何长度,诸如,从几微秒到几分钟,取决于处理元件和计算单元的设计和配置。通过使用时间感知的调度机制,协调器电路110能够避免或减少计算单元处高成本的上下文切换。
正如本文档中所描述的其他调度机制,同步化是重要的。恰在处理元件将要执行用于处理分组的指令的时刻之前,协调器电路110可将分组数据加载到处理元件(例如,高速缓存)中。这允许指令和数据恰在要被处理的时刻到达。为了使协调器电路110与(多个)处理元件同步,该同步化需要是非常准确且精确的。可使用本文中所描述的同步化机制,这些同步化机制诸如,IEEE 1588精确时间协议(PTP)、IEEE 802.1时间敏感型联网(TSN)、同步以太网、网络时间协议(NTP)、无线网络时间同步化机制(例如,参考广播同步(RBS)、传感器网络的定时同步协议(TPSN)、泛洪时间同步协议(FTSP)等)、或精确时间测量(PTM)。
图5是图示出根据实施例的随时间的处理元件的配置的示意图。处理元件可以是线程、指令集合、虚拟机中的程序、FPGA程序等等。可将处理元件调度成以某些周期执行,以随时间提供交替的服务。该设计可被称为处理器共享、时间共享或时分复用。在布置500中,每个程序A、B和C具有等量的处理器时间。此处的原理是所有程序被平等地对待。在布置550中,程序A、B和C具有动态的周期。可使用动态的周期来适应优先级排定方案或处理元件之间的工作负荷分发。
协调器电路110知道每个程序A、B和C的时隙。协调器电路110随后以适当的时隙来调度具有较高优先级的分组以处理那些分组。示例优先级排定方案为{时隙,优先级,次序},其中,时隙是指示处理元件是否活跃或者到下一时隙发生时的距离的值,优先级是分组优先级,并且次序是针对具有同一优先级的分组的循环次序。
时隙值可以是0或1(例如,1位的值),其中,0被用来指示程序是不活跃的,并且1被用来指示程序是活跃的。1位的时隙值可被用来对分组的队列优先级进行过滤或加权。替代地,时隙值可以是2位的值,其中,值3指示程序当前正在执行或被加载,2指示程序接下来将执行,1指示距离被加载两个位置,并且0指示距离被加载三个位置。应理解,1位的和2位的时隙值的值可被修改以适配其他优先级排定方案。另外,可以使用更多位。
进一步地,可使用比图5中所图示出的程序/指令更多或更少的程序/指令。在其中存在更少的共享时间的程序的情况下,则一些位值可能不被使用或可能被忽略(例如,作为不关心的(DNC)值)。例如,如果仅有两个程序被交替,则在2位的方案中,值1和0是无意义的并且可被忽略。
附加或替代的因子可与优先级方案中所讨论的因子一起被组合、重新排序或调整。示例附加因子包括承诺信息速率(CIR)。例如,如果CIR未被满足,则至少部分地满足CIR的分组可以是优先的。
返回图3,当分组缓冲器300变成已满时,可从分组流丢弃分组302A-N。头部丢弃是在当分组缓冲器300已满时基于对分组302A-N中有什么的理解来作出丢弃决策的情况。尾部丢弃是当分组缓冲器300已满时不论分组优先级或分类如何而丢弃最后分组302N的情况。
为了实现智能丢弃机制,协调器电路110可检查分组的内容,检查处理元件的配置,并且基于每个分组中有什么来决定要丢弃哪个分组或哪些分组。具体而言,逆优先级方案被用来标识具有最低优先级的一个分组或多个分组,该一个分组或多个分组随后可被丢弃。通过考虑处理元件的配置(例如,高速缓存中的指令),协调器电路110能够通过丢弃一段时间内将不被处置的分组来减少或避免高速缓存/FPGA/VM未命中。
由此,针对智能丢弃机制的逆优先级排定方案可以是{逆时隙,逆优先级,次序},其中,逆时隙被用来在程序/指令未被加载或在一段时间不可被加载时对优先级进行加权。逆时隙可以是1位的值,其中,1被用来指示程序/指令未被加载,并且0被用来指示程序/指令被加载。作为另一示例,逆时隙可以是2位的值,其中,0指示程序当前被加载,1指示程序下一个被加载,2指示程序距离是活跃的两个位置,并且3指示程序距离是活跃的三个位置。因此,未被加载的程序将以较高的分组丢弃优先级来反映(例如,更可能的是将从队列丢弃该分组)。应理解,1位的和2位的逆时隙值的值可被修改以适配其他优先级排定方案。另外,可以使用更多位。
附加或替代的因子可与逆优先级方案中所讨论的因子一起被组合、重新排序或调整。示例附加因子包括承诺信息速率(CIR)。例如,如果CIR已被满足,则将提供与CIR相关的附加服务的分组可被解除优先并被丢弃。
图6是图示出根据实施例的用于基于时间的灵活分组调度的方法600的流程图。在框602处,接收分组,并且从对该分组进行分析确定被用来处理该分组的对应的处理元件。在各实施例中,处理元件包括计算进程、线程、虚拟机或现场可编程门阵列(FPGA)。在实施例中,确定被用来处理分组的对应的处理元件包括:使用TCP卸载引擎来检查该分组并标识对应的处理元件。将分组存储在队列(例如,分组缓冲器)中(操作604)。
在框606处,确定处理元件何时在计算单元中活跃的定时。在各实施例中,计算单元包括中央处理单元(CPU)、处理器核、CPU复合体、现场可编程门阵列(FPGA)或图形处理单元(GPU)。
在实施例中,确定处理元件何时在计算单元中活跃的定时包括使其与计算单元同步。在进一步的实施例中,其中,使其与计算单元同步通过使用下列各项中的至少一项来执行:IEEE 1588精确时间协议、IEEE 802.1时间敏感型联网、同步以太网、网络时间协议、或精确时间测量。
在实施例中,确定处理元件何时在计算单元中活跃的定时包括与计算单元对接以确定处理元件何时是活跃的。在进一步的实施例中,计算单元是处理器核,并且与该计算单元对接包括接收对由该计算单元操作的高速缓存的内容的指示。在进一步的实施例中,对高速缓存的内容的指示由存储器管理单元(MMU)提供。
在另一实施例中,计算单元是FPGA,并且与该计算单元对接包括与FPGA接口进行通信以判定处理元件在计算单元中是否活跃。在进一步的实施例中,FPGA接口维持对哪些FPGA程序已经被加载在FPGA中的记录。
在框608处,基于处理元件何时在计算单元中活跃的定时来修改分组在队列中的优先级。在实施例中,基于处理元件何时在计算单元中活跃的定时来修改分组在队列中的优先级包括:在处理元件在计算单元中活跃或马上将活跃时提高该分组的优先级。在进一步的实施例中,提高分组的优先级包括将处理元件活跃或马上将活跃与从以下各项的列表选择的至少一个因子包括在一起:分组优先级和循环次序。
在另一实施例中,基于处理元件何时在计算单元中活跃的定时来修改分组在队列中的优先级包括:在处理元件在计算单元中不活跃或马上将不活跃时降低该分组的优先级。在进一步的实施例中,降低分组的优先级包括将处理元件不活跃与从以下各项的列表选择的至少一个因子包括在一起:分组优先级和循环次序。
在另一实施例中,基于处理元件在计算单元中是否活跃来修改队列中分组的优先级包括:判定在处理元件在计算单元中不活跃或马上将不活跃时是否从队列丢弃分组,以及基于该判定而从队列丢弃分组。在进一步的实施例中,判定是否从队列丢弃分组包括将处理元件不活跃或马上将不活跃与从以下各项的列表选择的至少一个因子包括在一起:逆分组优先级和循环次序。
应理解,该节中所描述的优先级排定和丢弃技术可与来自本文档中的其他章节的技术组合使用。另外,可对优先级排定和丢弃技术进行组合,以使得串行地、并行地或以其他方式使用多个优先级排定或丢弃技术。
3.对环境中的处理元件的主动管理
对处理元件的主动管理包括以下各项的概念:监视处理元件以确定它们的状态和未来状态;以及配置处理元件以使得其能够更快地作用于数据分组。主动管理可与队列优先级排定、分组聚合、以及本文档中所描述的其他技术一起使用,以便减少分组处理时间。
3.a.将程序/指令预加载到处理元件中
提高处理性能的另一方式是主动地管理作用于分组的指令、程序、虚拟机或其他类型的处理元件。主动管理包括但不限于:针对指令高速缓存(例如,高速缓存152A)加载或驱逐指令;在FPGA分区中将程序加载、重新编程或卸载;以及加载或卸载虚拟机实例。当分组到达时,指令、程序或其他处理元件可被加载以立即或至少以优先化的方式处理该分组。如果更快地使对应的处理元件可用,则成批到达的分组(诸如,与图像相关的那些分组)可更高效地被处理。通过在转发从分组(或多个分组)获得的数据之前对处理元件进行预加载,系统避免了高速缓存未命中及其相关联的延迟。预加载可在分组被处理之前的相对小的时期(诸如,100ns)内发生,以使得当数据到达时指令对于该数据而言是可用的。由此,主动管理可减少计算单元在处理分组时可能不得不承担的上下文切换的数量。可批量处理多个分组,以进一步提高处理效率。这在第4节中进一步描述。
图7是图示出根据实施例的分组处理期间的控制和数据流的示意图。在网络接口700处接收分组302A-N。分组解析器108检查分组302A-N并标识被分组302A-N要求的处理。分组302A-N被处理,以确定将由处理器核(例如,核150A)运行的对应的程序。分组处理可包括参考元数据数据库(例如,数据库304)、主存储器114或NID存储器112以获取附加信息并将分组信息与对应的程序相关。
分组202A-N被放置在数据队列702中。数据队列702可以是NID上的,诸如,在NID存储器112中。替代地,数据队列702可在主存储器114中。
处理分组302A-N所需要的指令从主存储器114被检取并被放置在指令队列304中。指令队列704可以是NID上的,诸如,在NID存储器112中。替代地,指令队列704可在主存储器114中。在指令被取出之后,这些指令随后可被加载到高速缓存708的保留的部分或区域706。高速缓存308可以是处理器核或CPU复合体的L1、L2或L3高速缓存。高速缓存的保留的部分706包括NID控制的指令高速缓存710和NID控制的数据高速缓存712。
高速缓存的保留的部分706可由NID 102诸如利用直接存储器访问来直接地控制。替代地,高速缓存的保留的部分706可由NID 102诸如经由高速缓存控制器714、存储器管理单元等等来间接地控制。协调器电路110可将地址或地址范围传递至高速缓存控制器314以加载到高速缓存708中。高速缓存控制器714可被用来从高速缓存708加载和驱逐指令。高速缓存的保留的部分706可由高速缓存控制器714动态地分配。取决于网络负载、分组优先级或其他因子,NID 102可请求高速缓存708中的附加分配。
在指令和数据从它们的相应的队列304、302被加载到高速缓存308中之后,处理核能够在没有针对数据或指令的高速缓存未命中的情况下对数据进行操作。
在实施例中,NID控制高速缓存的区域。在大多数情况下,CPU或MMU控制高速缓存;然而,在该实施例中,NID控制高速缓存的该区域。例如,NID控制的区域可在末级高速缓存(例如,L3 160)中。NID 102理解用于传入的数据分组的程序在主存储器114中的位置A处,NID 102检取那些指令并将它们与分组数据一起放置在末级高速缓存的NIC控制的区域(例如,保留的区域706)中。当CPU核(例如,核154A)开始处理该分组时,其将向外去往其指令高速缓存(例如,高速缓存152A)并且尝试检取指令。CPU将会未命中高速缓存的所有层级直到末级。此处,CPU将抓取指令,并将它们带到L1高速缓存(例如,高速缓存152A)中。
在另一实施例中,NID与高速缓存控制器714(例如,MMU)进行交互。在此类情况下,NID可指令高速缓存控制器714在时间B之前加载指令A以处理传入的数据。高速缓存控制器714随后可恰在处理传入的数据的时刻取出未命中的指令,从而避免高速缓存未命中。
对指令进行预加载在与若干个相关分组一起使用时可以是尤其有效的。许多分组可一起被排队,并且突发至NID控制的数据高速缓存312。在此情况下,在该组分组上指令仅需要被取出一次。对相关的分组进行编组可使用TCP卸载和大型接收卸载(large receiveoffload,LRO)机制来执行。
图8是图示出根据实施例的分组处理期间的控制和数据流的示意图。参考将指令和数据加载在处理器高速缓存中,与如何在图7中描述分组处理类似,程序或数据可被加载到FPGA分区中,以减少或消除由于FPGA未命中而导致的延迟。在网络接口800处接收分组302A-N。分组解析器108检查分组302A-N并标识被分组302A-N要求的处理。分组302A-N被解析以确定将要由FPGA 180运行的对应的程序。分组302A-N被放置在FPGA分组队列802中。FPGA分组队列802可在FPGA 180、FPGA接口控制器804中,在主存储器114中,或者在NID存储器112中。分组解析器108或协调器电路110确定处理分组302A-N所需要的FPGA程序。此信息被发送至FPGA接口控制器804。
FPGA接口控制器804可被配置成用于跟踪被加载在FPGA 180的分区中的程序。如果该程序已经在FPGA 180中,则分组302A-N可在没有附加延迟的情况下被转发。如果由分组解析器108/协调器电路110指示的程序不在FPGA 180中,则FPGA接口控制器804可从FPGA图像存储806获取恰当的图像。FPGA接口控制器804随后将程序加载到分区808中。在程序被加载到FPGA 180之后,FPGA接口控制器804随后从FPGA分组队列802获取分组数据并将其发送至其被处理所在的FPGA 180。
FPGA接口控制器404加载的分区808可以是FPGA 180中保留的分区空间。该保留的分区空间可由FPGA接口控制器804控制,并被留出以使得FPGA 180不将其用于其他程序。
在第一方面中,协调器电路110通过适合于该种类型的处理元件的各种机制与处理元件对接。例如,在处理核(例如,核150A)的情况下,协调器电路110可与存储器管理单元(MMU)对接,以标识L1、L2或L3高速缓存的内容。在FPGA 180的情况下,协调器电路110可向FPGA 180传送请求以确定FPGA的分区的内容。如以上在图8中所描述,协调器电路110可与FPGA接口控制器804结合工作。
替代地,协调器电路110可控制高速缓存的部分或FPGA分区。在处理核(例如,核150A)的情况下,协调器电路110可使用直接存储器访问将指令和数据写入到L1、L2或L3高速缓存的保留的区域。如图7中所讨论,保留的区域可包括由协调器电路110控制的区域。高速缓存驱逐由协调器电路110控制。驱逐可基于各种优先级或其他方案,诸如本文中所描述的那些方案。
类似地,在FPGA 180的情况下,协调器电路110可使用FPGA接口控制器804并且在由FPGA接口控制器804控制的分区中将FPGA程序加载或卸载,该FPGA接口控制器804被连接至主机系统上(或NID 102内部)的FPGA,并且可操作以跟踪这些FPGA中的FPGA程序。协调器电路110或FPGA接口控制器804可执行对过时的、未使用的或未被充分利用的程序的驱逐。协调器电路110或FPGA接口控制器804可保持对哪些FPGA分区已经被加载的跟踪,并且不对已经处于FPGA分区中的程序进行重新加载。
作为该过程的部分,多个分区可被重新配置。例如,为了处理数据集,分区P1、P2、P3、P4和P5需要被编程。由于算法按次序被处理,因此FPGA接口控制器804可对P1进行编程,随后在对P2进行编程的同时将数据发送至P1。当完成对P2进行编程时,在P3被编程的同时,P1的数据可移动至P2,以此类推。事实上,一旦P1完成处理,则其可被重新编程以处理不同的数据集。
图9是图示出根据实施例的用于管理分组处理的方法900的流程图。分组被接收(操作902)并且随后被解析以确定最佳程序(操作904)。例如,该解析(操作904)可标识将要加载到高速缓存中的指令的集合或者将要加载到FPGA中的程序。在操作904之后,最佳程序被加载(操作906)。如果最佳程序已经在计算单元中,则方法可仅仅进行至操作908,在该操作908处,分组被转发至计算单元以被处理。方法900在分组到达时继续处理分组。
在第二方面中,可基于优先级系统来加载指令或程序。该优先级系统可指代服务的类别或服务的质量。可对分组302A-N进行解析,以确定处理分组302A-N最可能使用的程序或指令。可将该元数据存储在元数据数据库304中。协调器电路110随后可确定处理分组302A-N所使用的程序或指令的优先级。如果该优先级高于FPGA或高速缓存中的当前程序或指令,则该当前程序或指令被转储清除并且由处理分组302A-N所使用的程序或指令代替。这减少或消除了如果存在高速缓存未命中或FPGA未命中分组302A-N将经历的等待时间。
3.b.基于元数据的程序/指令的优先级排定
元数据是关于数据的数据。在分组处理的上下文中,元数据可包括关于该分组的各种事实、关于环境(NID上的或主机中的环境)的数据、关于指令或程序的数据、历史数据等等。元数据可被用作由解析器108、协调器110或者诸如212A-N、NID上FPGA 214、NID上CPU222等之类的其他处理元件进行的操作的部分。
在一些实例中,代替于转储清除出操作中间的任何内容以处理较高级别优先级任务,可使用多个等级的优先级。基于指令的优先级,基于当前正在执行的指令和准备好被加载的指令的优先级来作出决定。可给正在执行的指令提供多一点的时间,以查看到那时其是否完成,并且如果未完成,则它们被转储清除。其他优先级排定和定时方案被认为在本公开的范围内。
另外,基于优先级,协调器电路110可增加或减少可用于指令或程序的高速缓存或分区的量。例如,当存在高得多的优先级的指令集合以及相关联的分组时,协调器电路110可加载更多指令。使用较大的高速缓存/分区空间可对减少针对复杂处理的进一步的高速缓存/FPGA未命中起作用,由此确保更快速的处理以及更好的用户体验。诸如视频会议之类的高优先级程序可使用复杂过程来确保实时或接近实时的音频和视频呈现。
在一些情况下,分组的优先级可随时间改变,甚至在给定实例中对分组的流送期间。例如,当网页中的大型图像被NID 102接收时,第一分组具有较高值,以将该图像尽可能响应地呈现给用户。然而,在分组流的尾部处,其中图像的大部分已经被显示给用户,稍后的分组可接收较低的优先级。图像呈现过程中稍后的高速缓存未命中以及相关联的延迟可能不是可由用户感知的,因为用户的注意力可能已经移动至网页的其他部分上。例如,稍后的分组可仅向已经被显示的图像添加分辨率。由此,稍后的分组对于用户体验可能不那么重要。
图10是图示出根据实施例的用于管理分组处理的方法1000的流程图。分组被接收(操作1002)并且随后被解析以确定最佳程序(操作1004)。例如,该解析(操作1004)可标识将要加载到高速缓存中的指令的集合或者将要加载到FPGA中的程序。确定最佳程序的优先级(操作1006),并且如果其具有比当前被加载的程序更高的优先级,则该最佳程序被加载(操作1008)。可能存在被用来确保当前加载的程序在被驱逐前能够完成某个数量的工作的超时。如果最佳程序已经在计算单元中,则方法可仅仅进行至操作1010,在该操作1010处,分组被转发至计算单元以被处理。方法1000在分组到达时继续处理分组。
在另一方面中,可使用分组处理的历史来调整优先级。加载和驱逐可由一个或多个分组的统计学简档控制或影响。该统计学简档可包括在某个间隔内到达的某种类型的分组的直方图。分组或分组类型的该统计学简档可在每个分组被接收之后被修订,或者可在时间窗口上被更新。统计学简档可使用人工智能、机器学习、遗传算法、神经网络或其他类型的优化算法来建立。另外或替代地,安全算法、软件定义的联网算法、网络功能虚拟化算法、物联网(IoT)算法、数据挖掘算法、数据分析、或网络/网络通信量分析可被用来建立统计学简档。该统计学简档可将分组类型是常见的还是非常见的、此类分组的典型数量、通常接收分组时在一天中的时间、发送者信息和其他通信量模式数据考虑在内。
除了使用统计学简档来进行分组处理和路由之外,分组解析器108或协调器电路110或NID 102的其他部分还可使用统计学简档来检测潜在的网络攻击(例如,拒绝服务攻击)。例如,如果通过文件传输协议(FTP)会话接收请求数据的大量的分组,则NID 102可将其标记为潜在的网络攻击。在安全性的情况下,NID 102或协调器电路110可使用分析或其他方法来检查分组中的趋势。如果确定要发生新的趋势,则NID 102/协调器电路110可生成新的虚拟机,以分析通信量/数据,从而将新的分组发送到该新的虚拟机以供进行分析。可能跨越/分离可能不良/不安全/恶意的分组,以使得它们由新的基于安全性的虚拟机以及正常处理路径进行处理。尽管在该示例中,已经使用了虚拟机,但其可利用FPGA分区、GPGPU或进行该处理的协处理器来实现。进一步地,NID 102或协调器电路110可确定应当使用多个安全性算法或指令中的哪一个并将其转发至处理元件。
使用统计学简档,协调器电路110或FPGA接口控制器804可适应性地加载服务更大量的分组的指令或程序,由此减少或消除高速缓存或FPGA中的上下文切换。例如,如果高速缓存中NID控制的区域具有仅用于一个程序的空间并且存在两个分组类型A和B,若统计示出可能被接收的A分组比B分组更多,则协调器电路110可利用针对A的程序来加载高速缓存。随时间推移,可能存在比A更多的B分组。在此情况下,协调器电路110可切换指令,以处理B分组。目标是减少针对最大数量的分组的上下文切换。
图11是图示出根据实施例的用于管理分组处理的方法1100的流程图。分组被接收(操作1102)并且随后被解析以确定最佳程序(操作1104)。例如,该解析(操作1104)可标识将要加载到高速缓存中的指令的集合或者将要加载到FPGA中的程序。针对分组类型或程序来更新统计学简档(操作1106)。在操作1108处,判定该程序或分组类型的统计数据是否优于当前被加载在计算单元中的那些程序。如果该程序或分组类型的统计数据不优于那些已经被使用的程序,则使用常规分组处理来对分组进行处理。否则,新的程序被加载(操作1110)并且分组被转发至计算单元以进行处理(操作1112)。方法1100在分组到达时继续处理分组。
在另一方面中,可使用分派给用于处理分组的指令或程序的存活时间(TTL)值来卸载程序或指令。当分组需要被处理时,协调器电路110、FPGA接口控制器404或其他组件可检查指令或程序是否被加载到高速缓存/FPGA中。如果指令/程序不可用,则具有过期的TTL的任何指令可在其他指令之前被驱逐。
如果分组到达并且由已经在存储器中的指令/程序处理(例如,高速缓存命中或FPGA命中),则指令/程序可使它们的相应TTL值被刷新、被更新或以其他方式被修改。
TTL值可与优先级方案组合使用。例如,如果两组指令分别具有低优先级和高优先级,并且每一组都具有过期的TTL值,则相应的控制器可驱逐低优先级指令以便在高速缓存中腾出空间。如果没有充足的空间,则具有过期的TTL值的高优先级指令也可被驱逐。
可在分组处理中组合各方面。例如,优先级方案可被用来确定哪个程序将被加载到能够保存若干个程序的FPGA中。将从FPGA卸载以为新的程序腾出空间的程序可基于TTL估计来选择。
作为另一示例,分组的优先级可与分组的统计学简档组合。如果分组在历史上是常见的并且优先级高,则这些分组可被排定优先级优于历史上罕见的即使具有高优先级的分组。其他组合被认为在本公开的范围内。
图12是图示出根据实施例的用于管理分组处理的方法1200的流程图。分组被接收(操作1202)并且随后被解析以确定最佳程序(操作1204)。例如,该解析(操作1204)可标识将要加载到高速缓存中的指令的集合或者将要加载到FPGA中的程序。为所加载的程序确定存活时间(TTL)值(操作1206)。在操作1208处,判定在操作1204中标识的最佳程序是否能够被加载到计算单元中。该判定可基于所加载的程序中的任一者的TTL是否已经过期。判定还可基于其他因子,诸如,所加载的程序的优先级、程序最近是否已经处理了任何分组、程序的尺寸等。如果最佳程序无法被加载,则使用常规分组处理来处理分组。否则,具有过期的TTL的所加载的程序被驱逐,并且新的程序被加载(操作1210)。在新的程序被加载之后,分组被转发至计算单元以进行处理(操作1212)。方法1200在分组到达时继续处理分组。
应理解,该节中所描述的优先级排定、加载和驱逐技术可与来自本文档中的其他章节的技术组合使用。另外,可对优先级排定、加载和驱逐技术进行组合,以使得串行地、并行地或以其他方式使用多个技术。
4.使用优先级排定、预加载和其他机制的批处理
队列管理和处理元件管理的有效性可通过批处理来进一步增强。本文中所公开的是通过使用批处理以及与CPU核、FPGA或其他处理结构(例如,ASIC、GPU、协处理器或虚拟机(VM))之间的协调和集成来提供分组处理效率的系统和方法。
提高分组处理效率的一种方式是一起处理类似的分组。在第一实施例中,类似的分组可被编组并被存储在队列中。在适当的时间,队列中的一些或全部可被转储清除,由此将数个类似的分组传送至计算单元以进行处理。在第二实施例中,组成较大数据块的分组(例如,被用来传输图像文件的若干个分组)可在被传送至计算单元以进行处理之前被组合在存储器中。在此类实施例中,分组聚合或编组减少计算单元在处理分组时可能不得不承担的上下文切换的数量。
图13是图示出根据实施例的分组处理的示意图。对多个队列1300A、1300B、1300N(统称为1300A-N)进行分配。队列1300A-N可具有任何尺寸,并且可被动态地分配,以使得它们可取决于可用的存储器而增加或减少。每个队列1300A-N或队列1300A-N的子集可与诸如程序、线程、进程或虚拟机之类的通信端点相关联。
随着分组1302A、1302B、1302N(统称为1302A-N)由分组解析器108接收,它们可入列在队列1300A-N中的一个队列中。分组解析器108使用分组检查机制(例如,使用TCP卸载引擎(TOE)和对应的特征)来检查传入的分组1302A-N的内容。通过查找分组的封装中的层,分组解析器108能够确定源/目的地、通信量处置和元数据标记、应用或者甚至数据内容。使用该信息,以及可能关于系统的状态的信息,分组解析器108将向特定的队列1300A-N引导分组1302A-N。在一些实现方式中,如果不存在适当的队列,则分组解析器108可行动以创建一个适当的队列。分组解析器108或NID 102的另一组件可为新的队列分配存储器并在队列数据字典1304中创建条目。队列数据字典可存储队列1300A-N的各种特性,诸如,队列名称、优先级、最大或最小尺寸、相关联的计算单元、相关联进程或线程、相关联的程序等等。
协调器电路110监视队列1300A-N。另外,协调器电路110还可监视与队列1300A-N相关联的计算单元、进程、线程、程序或其他目的地。每个队列1300A-N可具有指定的优先级。例如,优先级的范围可从零到七,其中,零为最高优先级,并且七为最低优先级。可使用其他值的范围,例如,1-8、1-100、1-5等,并且可使用其他优先级方案,例如,5是最高优先级并且1是最低优先级。可基于何种类型的数据将被存储在队列中、何种应用与该队列相关联、用户偏好等来分派优先级。例如,处置实时接口的数据的队列,该数据诸如,实时视频、语音、通信量信息、车辆控制系统、地图数据、虚拟现实应用、线上游戏等等。
协调器电路110可监视CPU高速缓存(例如,L1指令高速缓存152A-N、L2高速缓存156A-N或L3高速缓存160)。如果高速缓存具有被用来处理与特定队列相关联的分组的指令或将马上具有这些指令在其中,则协调器电路110将较高的优先级分派给该特定队列1300A-N。
周期性地,协调器电路110可确定具有最高优先级的队列1300A-N并将一组分组从获胜的队列(例如,队列1300N)转发至处理元件(例如,核A 150A数据高速缓存154A)。处理元件包括但不限于,进程、线程、虚拟机和FPGA。该组分组可具有任何数量,例如,三十二个分组。该组分组表示由当前正在执行或马上将要执行的进程、线程、指令、虚拟机或其他处理元件进行处理的分组。批处理提高了处理的效率和分组吞吐量。并且将分组数据转发至马上将要执行的处理元件的高速缓存中使得该处理元件更高效,由于这使要处理的数据已经被加载到有关高速缓存中并且无需首先对其进行加载。
协调器电路110可实施通信量调节策略。在基于承诺信息速率(CIR)的系统中,协调器电路110可为从队列发送的每个分组从令牌桶取得令牌以用于处理。在线程、进程、程序等已经结束对分组的处理之后,可将令牌返回至令牌桶。也能以周期性速率对令牌进行刷新。例如,如果端口试图达到某个带宽,则令牌将以相当于所期望的带宽的速率被刷新。所使用的令牌的数量限制从队列1300A-N到处理元件的传输的速率。
CIR是由服务提供商保证的带宽。高于CIR的是可突发的(burstable)带宽的限额,其可被表达为超额信息速率(EIR)。CIR与EIR的和为峰值信息速率(PIR)。在一些实施例中,协调器电路110能以比针对临时时间段的PIR更高的PIR进行传送。
替代地,协调器电路110可实施循环策略。一般而言,循环策略尝试平衡处理时间与数据吞吐量的公平。尽管每个队列可被服务大致相等的时间段,但那些具有更多数据的队列可能无法快速使其数据移动通过。可使用其他循环变型,如亏损加权循环或加权公平排队。
在示例循环优先级方案中,基于优先级的调度器周而复始地进行,在每个时间标记(time-tick)处决定要服务哪个队列。利用严格优先级,在每个标记处,调度器按优先级从上到下查看队列,并为非空的第一个队列提供服务。因此,如果队列为空,则检查下一最低优先级队列;如果不为空,则在该时间标记中服务最高的非空队列。利用权重,调度器可向具有优先级K的队列分配K个时间标记,并且向具有双倍该优先级的队列分配2K个时间标记。因此,每个队列基于其优先级在总时间的部分中被服务。关于队列调度器如何决定接下来服务哪个队列以及服务多长时间存在其他更复杂的方法(例如,其可以查看队列占用率、查看等待的分组的长度等)。
在另一示例循环优先级方案中,有四个具有高优先级的队列以及三个处于低优先级的队列,系统可在四个高优先级队列之间进行循环,直到它们为空,随后在三个低优先级队列之间进行循环。
图14是图示出根据实施例的用于分组处理的方法1400的流程图。当分组在NIC处被接收时,它们入列在多个队列中的一个队列上(操作1402)。基于分组的内容在队列之间划分这些分组。类似的分组或者可使用类似的指令或处理单元进行处理的分组可被排队在一起。以此种方式,当分组最终被一起转发至处理单元时,分组可能更高效地被处理。
每个队列可具有给其分配的优先级。队列可与多个处理元件中的一个处理元件相关联。处理元件包括但不限于进程、线程、虚拟机和FPGA(其可包括FPGA或一起工作的多个FPGA的部分)。对处理元件进行监视(操作1404)。监视可包括确定哪些指令处于高速缓存中(在进程或线程的情况下)、确定哪些指令可能马上被放置在高速缓存中、确定哪个虚拟机被加载、确定FPGA当前如何被配置等。随着监视进行,队列的优先级可被提高或降低。例如,如果当前处于高速缓存中的指令是将对队列中的数据进行操作的指令(例如,高速缓存命中),则优先级可被提高。例如,如果处理队列中的数据所需要的指令当前处于主存储器中——换言之,高速缓存未命中是可能的,则优先级可被降低。
在操作1406处,基于监视从多个队列中选择队列。例如,在下一处理窗口时具有最高优先级的队列被选择。数个分组从所选择的队列中出列,并且被转发至处理元件以便进行处理。如以上所描述,分组的数量是任意的,并且可由设计者或操作者进行设置或者可根据对处理元件的监视的结果来确定。在各实施例中,分组的数量为三十二、六十四或者与数据高速缓存可保存的数量一样多。
图15是图示出根据实施例的分组处理的另一示例的示意图。在进行联网时,大型接收卸载(LRO)是一种增加数据吞吐量并减少CPU开销的机制。LRO将多个传入分组1500A、1500B、1500N(统称为1500A-N)重新组装为组合的分组1502。得到的组合的分组1502在其被向上传递到联网栈之前被存储在缓冲器1504中。由此,CPU不得不处理更少的分组并且能够在每个分组事务中获得更多数据。
组合的分组1502由协调器电路110(或解析器108)进行分析,以确定其要求的指令、进程、线程、虚拟机、FPGA或其他处理元件。由协调器电路110作出的转发决定随后基于处理元件是否已就绪。
替代地,协调器电路110可为组合的分组1502确定适当的处理元件并且请求处理元件被加载。例如,协调器电路110可确定组合的分组1502是图像文件,并且需要某个指令的集合来处理该图像文件。协调器电路110可请求这些指令被加载到CPU高速缓存中,以使得当组合的分组1502被转发至CPU时,CPU能够对其进行操作而没有延迟。类似地,在可重新配置的FPGA环境的实例中,协调器电路110可请求或使得FPGA 180对其自身进行重新配置以便为传入的组合的分组1502做准备。能以类似的方式管理虚拟机、进程、线程和其他处理元件。
作为另一替代,协调器电路110可使得处理元件通过转发组合的分组1502的同一类型的虚设数据来加载正确的程序、指令、分区、角色等。例如,组合的分组1502可以是图像数据。FPGA可被编程为用于处置数字信号处理。为了使得FPGA对其自身进行重新编程,协调器电路110可转发图像分组。该图像分组可来自用于此种类型的触发机制的虚设分组的储存库。响应于接收该图像分组,FPGA可将其自身重新配置成用于处置新的数据。这可与接收包括1502分组的部分的附加分组并行地完成。协调器电路110随后可取消对虚设图像分组的处理并转发组合的分组1502以供进行处理。
利用改进的预见和其他处理技术,可在已经在缓冲器1504中接收和重新组装之后几乎立即处理组合的分组1502。例如,可在LRO操作的起始时检查分组头部,以确定数据类型、文件类型或关于分组1500A-N中的数据的其他信息。在预期接收到多个分组中,并且在分组重新组装完成之前,可以将触发虚设分组转发至FPGA 180以便引起重新编程。以此种方式,截至组合的分组1502被组装并被置于缓冲器1504中时,FPGA 180可被重新编程并准备好进行处理。协调器电路110可取消虚设工作并随后从缓冲器1504转发组合的分组1502。使用此种机制,组合的分组1502将在缓冲器1504中等待最小量的时间。代替于一个组合的分组1502,可能存在多个组合的分组1502来传输诸如图像数据之类的大型数据集。在此种情况下,多个组合的分组1502可去到FPGA 180以供进行处理。
代替于LRO,可使用其他类型的卸载,例如,使用不同的分组合并标准的通用接收卸载(GRO)。
图16是图示出根据实施例的用于分组处理的方法1600的流程图。当分组在NIC处被接收时,对它们进行检查并组合较小的分组(操作1602)。例如,这可使用TOE和LRO或GRO来执行。如果分组超过阈值尺寸,则它们可被缓冲而不通过LRO/GRO进行修改。在操作1604处,缓冲组合的分组(或大型未组合的分组)。
在操作1606处,处理元件被配置成用于处置来自缓冲器的下一分组。处理元件可以是线程、CPU核、虚拟机、FPGA等。在操作1608处,由处理元件调度并处理组合的分组。
图17是图示出根据实施例的用于分组处理的方法1700的流程图。当分组在NIC处被接收时,对它们进行检查并组合较小的分组(操作1702)。例如,这可使用TOE和LRO或GRO来执行。如果分组超过阈值尺寸,则它们可被缓冲而不通过LRO/GRO进行修改。在操作1704处,缓冲组合的分组(或大型未组合的分组)。
在操作1706处,检查处理元件以判定该处理元件是否被配置成用于处置来自缓冲器的下一分组。处理元件可以是线程、CPU核、虚拟机、FPGA、GPU、协处理器、FPGA的部分等。如果是,则在操作1708处,由处理元件调度并处理组合的分组。
应理解,该节中所描述的批处理技术可与来自本文档中的其他章节的技术组合使用。
5.附加实施例
5.a.软件定义的联网
一些实施例可使用软件定义的联网(SDN),该SDN可被定义为网络控制平面从转发平面的物理分离,并且其中,控制平面控制若干个设备。此种控制若干个设备的控制平面可利用英特尔服务器或服务器组来实现。以降低高速缓存未命中的风险的意图,此处描述的此种系统和方法可解析/处理每个传入的分组,标识与传入的分组相关联的程序或指令集,并且将该分组和指令发送至高速缓存中NID控制的部分。在其中协调器电路无法控制被加载在高速缓存中的指令的情况下,其可指令MMU来进行控制,或者其可发送可以快速地被处理的虚设分组以强制加载指令。
在FPGA的情况下,协调器电路110可验证FPGA使必要算法/分区被编程,并且然后编程未命中的(多个)分区或者如果必要的算法/分区已经被编程则简单地转发数据/数据分组。协调器电路还可临时地存储一旦FPGA被加载了正确的编程就可以被发送到FPGA中的分组。注意,来自这些联网的设备的数据/数据分组可一起编组,以利用同一算法按LRO类型方式进行处理。
5.b.网络功能虚拟化
另一项技术是网络功能虚拟化(NFV),其为使网络服务虚拟化的努力。这些网络服务随后可在诸如由英特尔供应的那些服务器之类的服务器上实现,并在其CPU上实现特定功能作为进程或线程,或者使用可根据需要生成的虚拟化(虚拟机)。随着联网设备被添加或通信量增加,更多服务器/虚拟机可被开启以处理增加的负载。使用本公开中所描述的此种机制,NID102/协调器电路110可解析NFV分组,确定用于处理该分组的适当的指令,并随后将NFV分组数据和相关联的指令转发至CPU、虚拟机、FPGA或其他处理元件的高速缓存以供进行处理。类似地,NID 102/协调器电路110可转发已经被解析和分类的多个分组,以使用同一个指令的集合。
5.c.开放式虚拟交换机和增强型柏克莱分组过滤器
在支持VM的服务器上的普遍存在的形式的分组处置是虚拟交换,其中,开放式虚拟交换机(OVS)是一种常见的装置。虚拟交换机经由系统的NID将分组从VM转发至世界,或者从VM转发到VM,这可直接地或者也经由NID(例如,VM1-到-NID-到-VM2)来完成。通常的实现方式是NID仅充当使分组从物理介质到OVS并从OVS返回到物理介质的方式。然而,具有内置处理元件的NID(诸如本文中所描述的NID)可卸载OVS的操作中的一些并在NID上执行这些操作,因此使OVS更高效。最常见被卸载的是解析传入的分组并利用解析结果(中的一些)来进行查找以确定要应用于该分组的动作的集合的功能,其中最后(逻辑上)的动作将其转发到所期望的(多个)目的地。
增强型柏克莱分组过滤器(eBPF)是系统的用户可通过其写入小程序的技术,这些小程序中的每个小程序对其输入进行相对小且狭义定义的操作集合,并生成所期望的输出。用户随后可指定将要按次序执行的这些小程序的序列(例如,用户定义程序A、B、C、D、E、F、G和H,并且指定两个应用序列A->B->F->H和A->B->C->D->G)。这通常与充当输入的分组以及(可能被修改的)作为来自每个程序的输出的分组一起使用。在此情况下,合适地配备的NID(诸如本文中所描述的NID)可卸载用户提供的小程序的操作中的一些或全部操作,从而至少部分地执行要应用于分组的操作序列。
值得注意的是,OVS可以被实现,以使得解析、进行查找以及应用通过查找选择的动作的任务可使用eBPF(例如,eBPF程序或者可能是eBPF程序序列被写入以进行解析,随后一些附加eBPF程序实现所期望的查找并对分组应用动作)来实现。在此类情况下,卸载eBPF操作中的一些或全部的合适地配备的NID(诸如,本文中所描述的NID)也自动地结束于卸载OVS。
利用基于eBPF的实现方式,系统管理者可仅仅将新的eBPF模块安装到运行中的OVS中,甚至无需停止该OVS。当发生这种情况时,卸载OVS内核部分也必须具有可编程性,而且OVS内核部分变成一系列小元件,每个元件在逻辑上是独立的,因此系统设计者可选择性地卸载这些元件中的一些并安排它们与留在主机中的元件进行交互。结果是系统不再必须卸载OVS内核部分的全部。再次,利用更智能的NIC(诸如本文中所描述的NIC)以及与主机的状态的更好的协作/协调,系统设计者能够更好地决定要卸载什么,并且甚至对于不同的分组流具有不同的卸载的集合。例如,对于一些流,我们将卸载隧穿/去隧穿和解密/加密,并且对于其他流,基于对主机状态是什么(例如,FPGA是否具有合适的分区来进行这些工作)的了解,我们将选择让主机进行该操作。
5.d.物联网
进一步地,本申请中的技术应用到IoT雾。例如,TTL的概念可暗示在分组的数据不再有用时该分组应当被丢弃。例如,汽车正在试图获得交叉路口的路线信息,以确定它应当直行还是转弯。如果该信息在已经做出确定之后到达(太晚而无法改变车道或者已经经过该交叉路口),则不需要发送该信息。为了使其正确地工作,时间必须在跨网络的设备之间同步(例如,使用如IEEE 1588和同步以太网和/或无线同步技术之类的技术)。
5.e.数据中心应用
在今天的数据中心中,执行相当大量的人工智能和机器学习。本文中所描述的此种机制可通过随着数据到达而将算法指令加载到高速缓存中来促进这些算法。其还可使该高速缓存预加载有所需要的参数以促进处理。例如,在神经网络中,运行神经网络所需要的参数或权重可随着数据到达而被预加载到高速缓存中,因此允许对传入的数据的JIT处理。类似地,在FPGA情境中,FPGA可被重新编程为用于在该FPGA中实现人工智能/机器学习/神经网络,并且随后在处理传入的数据之前预加载权重和其他参数。通过允许必要的程序、程序数据以及传入的数据被快速访问,高速缓存未命中/FPGA未命中的可能性被大大降低,从而允许快速处理。
另外,在人工智能中存在许多工具。主要的工具中的两个工具是推理引擎(规则和演绎)和知识库(对问题的理解)。当新的数据集到达时,可使用规则将该数据与知识库进行比较,并且演绎出新的知识。使用本文中所描述的机制,知晓分组要求人工智能,本文中所描述的机制可以加载针对传入的数据的知识库和规则,以使得高速缓存具有知识库、推理引擎或允许算法在显著降低的高速缓存未命中/FPGA未命中的风险的情况下产生结果的其他例程的所有要求的信息。
进一步地,利用时间和处理的知识,协调器电路可按需要馈送附加数据。例如,如果神经网络正在试图相对于其他动物图像标识出传入的猫图像。如果协调器电路了解将传入的图像与已知的图像进行比较花费1us,则该协调器电路可在每1us调度来自知识库的每个图像被插入到高速缓存中协调器控制的区域中。例如,算法可将传入的图像相对于人类图像、马图像、狗图像、猫图像、鱼图像、鲸图像以及鸟图像进行比较。那些图像中的每个图像可恰在所需要的时间之前被放置在高速缓存(或FPGA)中,以使得相对于被比较的图像来处理传入的图像时不存在高速缓存未命中。
5.f.串行化器-解串行化器(SERDES)和其他组件
今天制造微芯片中用于SERDES和ASIC/MCM/硅光子/RAM的不同技术可能包括来自不同技术节点的多个模块。例如,SERDES可使用最新的10nm工艺,而协调器电路、FPGA和/或CPU可使用16nm FinFET工艺或单独优化的工艺。同样的,硅光子可使用特定针对该技术设计的工艺,并且RAM可使用针对高速度和高密度设计的工艺。这些组件的全部随后可被组合在微芯片中,以提供本文中所描述的机制。芯片可通过衬底或其他装置而彼此通信。注意,所提到的技术可能变化。例如,组件可使用这些节点中的任何节点:45nm、28nm、22nm、16nm、14nm、10nm、8nm等。多芯片模块中的每个管芯可在同一个或不同的工艺节点上开发。
5.g.数据平面开发套件(DPDK)
许多NID包括某种虚拟化机制。一种常见的机制为单根输入/输出虚拟化(SR-IOV)。使用虚拟化机制,主机上的客户端(例如,VM、容器或甚至线程)被给予这样的错觉:它具有其自己的NID,该NID具有到线路的一个或多个端口。该客户端随后可使用DPDK从该虚拟NID读取分组/向该虚拟NID写入分组,该虚拟NID是由现实NID维护的虚拟实体,从而绕过主机的内核和通常的分组处置机制。作为优势,绕过是更快的。然而,每个客户端必须基本上拥有用于联网的所有内容的副本,并且因为客户端不知道他们并不是独自的,所以他们可能会经历“嘈杂的邻居”问题,从而影响其他客户端。
因为分组绕过主机的内核,所以现在NID更靠近于VM/容器,该VM/容器是分组源或目的地。主机操作系统(OS)仍然控制运行哪个VM/容器并且何时运行VM/容器,并且仍然具有与使用虚拟化机制之前相同的高速缓存。主机的MMU允许NID从主机的主存储器读取分组/将分组从主机的主存储器写入在由给定VM/容器分派/拥有的位置中。当VM/容器/线程或其他客户端需要特殊功能时,客户端仍可使用协处理器、GPU、FPGA等。
使用本文中所描述的系统和机制,如果NID更好地了解VM/容器何时将执行以及MMU如何分配存储器和高速缓存或FPGA内容,则可应用各种优先级排定、排队、调度、加载、驱逐以及本文中所描述的其他机制。NID仍可将一些操作应用到分组,并且随后调度该分组以用于递送至客户端/从客户端递送。NID可与DPDK对接以确定例如何时可运行VM/容器,并且随后使用DPDK库来转发分组以供进行处理。作为另一示例,NID可与DPDK对接并且确定VM/容器长时间被挂起,并且因此可从分组缓冲器或队列丢弃分组。
硬件平台
各实施例能以硬件、固件和软件中的一者或其组合实现。实施例也可被实现为存储在机器可读存储设备上的指令,这些指令可由至少一个处理器读取并执行,以执行本文中所描述的操作。机器可读存储设备可包括用于以可由机器(例如,计算机)读取的形式存储信息的任何非瞬态机制。例如,机器可读存储设备可包括只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存设备、以及其他存储设备和介质。
处理器子系统可被用来执行机器可读介质上的指令。处理器子系统可以包括一个或多个处理器,每个处理器具有一个或多个核。另外,处理器子系统可被设置在一个或多个物理设备上。处理器子系统可包括一个或多个专用处理器,诸如图形处理单元(GPU)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)或固定功能处理器。
如本文中所描述的示例可包括逻辑或者数个组件、模块或机制,或可在逻辑或者数个组件、模块或机制上进行操作。模块可以是通信地耦合至一个或多个处理器以实现本文中所描述的操作的硬件、软件或固件。模块可以是硬件模块,并且由此,模块可被认为是能够执行指定操作的有形实体且可按某种方式来配置或布置。在示例中,能以指定的方式将电路(例如,内部地或者相对于诸如其他电路之类的外部实体)布置为模块。在示例中,一个或多个计算机系统(例如,独立的客户端或服务器计算机系统)或一个或多个硬件处理器的全部或部分可由固件或软件(例如,指令、应用部分、或者应用)配置为操作用于执行指定的操作的模块。在示例中,软件可驻留在机器可读介质上。在示例中,软件在由模块的底层硬件执行时,使得该硬件执行指定的操作。因此,术语硬件模块被理解为涵盖有形实体,该有形实体是被物理地构造、具体地配置(例如,硬连线)、或者临时地(例如,瞬态地)配置(例如,编程)成以指定的方式操作或者执行本文中所描述的任何操作的部分或全部的实体。考虑到其中临时配置模块的示例,这些模块中的每一个不需要在任何一个时刻进行实例化。例如,在模块包括使用软件而配置的通用硬件处理器的情况下,通用硬件处理器可以在不同时间被配置为相应的不同模块。软件可相应地配置硬件处理器,例如以便在一个时间实例处构造特定的模块,并且在不同的时间实例处构造不同的模块。各模块也可以是软件或固件模块,这些模块操作以执行本文中所描述的方法。
如在本文档中所使用,电路系统或电路可单独或以任何组合方式包括例如:硬连线电路系统;可编程电路系统,诸如包括一个或更多单独指令处理核的计算机处理器;状态机电路系统;和/或存储由可编程电路系统执行的指令的固件。电路、电路系统或模块可共同或单独地被具体化为形成较大系统的一部分的电路系统,该较大系统例如,集成电路(IC)、芯片上系统(SoC)、台式计算机、膝上型计算机、平板计算机、服务器、智能电话、等等。
图18是图示出根据示例实施例的以计算机系统1800的示例形式的机器的框图,在该机器内可执行指令集合或指令序列以使该机器执行本文中所讨论的方法中的任何一种。在替代实施例中,该机器作为独立设备进行操作,或可被连接(例如,联网)到其他机器。在联网的部署中,该机器可在服务器-客户端网络环境中作为服务器或客户端机器来进行操作,或者其可在对等(或分布式)网络环境中充当对等机。该机器可以是可穿戴设备、个人计算机(PC)、平板PC、混合平板、个人数字助理(PDA)、移动电话、或能够执行指定要由该机器采取的动作的指令(顺序地或以其他方式)的任何机器。进一步地,尽管仅图示了单个机器,但是也应当认为术语“机器”包括单独地或联合地执行一组(或多组)指令以执行本文中所讨论的方法中的任何一者或多者的机器的任何集合。类似地,应当认为术语“基于处理器的系统”包括由处理器(例如,计算机)控制或操作来单独地或联合地执行指令以执行本文中所讨论的方法中的任何一者或多者的一个或多个机器的任何集合。
示例计算机系统1800包括至少一个处理器1802(例如,中央处理单元(CPU)、图形处理单元(GPU)或这两者、处理器核、计算节点等)、至少一个协处理器1803(例如,FPGA、专用GPU、ASIC等)、主存储器1804和静态存储器1806,这些组件经由链路1808(例如,总线)彼此通信。计算机系统1800可进一步包括视频显示单元1810、字母数字输入设备1812(例如,键盘)、以及用户界面(UI)导航设备1814(例如,鼠标)。在一个实施例中,视频显示单元1810、输入设备1812和UI导航设备1814被并入到触屏显示器中。计算机系统1800可以附加地包括存储设备1816(例如,驱动单元)、信号生成设备1818(例如,扬声器)、网络接口设备1820以及一个或多个传感器(未示出),该传感器诸如全球定位系统(GPS)传感器、罗盘、加速度计、陀螺仪、磁力计、或其他传感器。
存储设备1816包括机器可读介质1822,在该机器可读介质1822上存储有一组或多组数据结构和指令1824(例如,软件),这些数据结构和指令具体化本文中所描述的方法或功能中的任何一者或多者,或者由本文中所描述的方法或功能中的任何一者或多者利用。在由计算机系统1800执行指令1824期间,这些指令1824也可完全地或至少部分地驻留在主存储器1804、静态存储器1806内,和/或驻留在处理器1802内,其中,主存储器1804、静态存储器1806和处理器1802也构成机器可读介质。
虽然机器可读介质1822在示例实施例中图示为单个介质,但术语“机器可读介质”可包括存储一条或多条指令1824的单个介质或多个介质(例如,集中式或分布式数据库、和/或相关联的高速缓存及服务器)。还应当认为术语“机器可读介质”包括任何有形介质,该有形介质能够存储、编码或携带用于由机器执行的指令,这些指令使机器执行本公开的方法中的任何一者或多者,或者该有形介质能够存储、编码或携带由此类指令利用或与此类指令相关联的数据结构。术语“机器可读介质”应当相应地被认为包括,但不限于:固态存储器、以及光和磁介质。机器可读介质的特定示例包括:非易失性存储器,该非易失性存储器以示例的方式包括但不限于半导体存储器设备(例如,电可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM))和闪存设备;诸如内部硬盘及可移动盘之类的磁盘;磁光盘;以及CD-ROM和DVD-ROM盘。
可使用传输介质,经由网络接口设备1820,利用数个公知的传输协议中的任何一种协议(例如,HTTP),进一步在通信网络1826上传送或接收指令1824。通信网络的示例包括:局域网(LAN)、广域网(WAN)、因特网、移动电话网络、普通老式电话(POTS)网络、以及无线数据网络(例如,蓝牙、Wi-Fi、3G、以及4G LTE/LTE-A或WiMAX网络)。应当认为术语“传输介质”包括能够存储、编码或携带用于由机器执行的指令的任何无形的介质,并且包括数字或模拟通信信号或者用于促进此类软件的通信的其他无形介质。
网络接口设备1820可被配置或编程为用于实现本文中所描述的方法。具体而言,网络接口设备1820可提供分组检查、聚合、排队和处理的各方面。网络接口设备1820还可被配置或编程为用于通过链路1808与存储器管理单元(MMU)、处理器1802、主存储器1804、静态存储器1806、或系统1800的其他组件进行通信。网络接口设备1820可查询系统1800的各组件或以其他方式与这些组件对接以检查高速缓存存储器;触发或停止虚拟机、进程或其他处理元件的操作;或以其他方式与系统1800中或系统1800外部的各计算单元或处理元件进行交互。
附加注释和示例:
示例1是一种用于实现智能分组聚合的网络接口设备,该网络接口设备包括:分组解析器,用于接收多个分组并将该多个分组中的每个分组路由至多个队列中的队列,这些分组基于这些分组的特性在队列之间划分;以及协调器电路,该协调器电路用于:与处理元件对接,以确定该处理元件的当前操作状态;基于该处理元件的当前操作状态从多个队列中选择队列;以及将数个分组从所选择的队列转发至处理元件。
在示例2中,如示例1所述的主题任选地包括:其中,处理元件包括计算进程。
在示例3中,如示例1-2中任何一项或多项所述的主题任选地包括:其中,处理元件包括线程。
在示例4中,如示例1-3中任何一项或多项所述的主题任选地包括:其中,处理元件包括虚拟机。
在示例5中,如示例1-4中任何一项或多项所述的主题任选地包括:其中,处理元件包括现场可编程门阵列(FPGA)程序。
在示例6中,如示例1-5中任何一项或多项所述的主题任选地包括:其中,分组解析器包括用于检查所述分组的TCP卸载引擎。
在示例7中,如示例1-6中任何一项或多项的主题任选地包括:其中,分组解析器用于:尝试标识多个队列中与特定分组对应的队列;当标识失败时,分配新的队列;以及将该特定分组存储在该新的队列中。
在示例8中,如示例1-7中任何一项或多项的主题任选地包括:其中,为了与处理元件对接,协调器电路用于与用于检查与该处理元件相关联的高速缓存存储器的存储器管理单元(MMU)对接。
在示例9中,如示例1-8中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前操作中的线程。
在示例10中,如示例1-9中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前操作中的进程。
在示例11中,如示例1-10中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前操作中的虚拟机。
在示例12中,如示例1-11中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前FPGA配置。
在示例13中,如示例1-12中任何一项或多项所述的主题任选地包括:其中,为了从多个队列中选择队列,协调器电路用于:确定与多个队列中的队列的集合相关联的当前优先级;以及从该队列的集合中选择具有最高优先级的队列。
在示例14中,如示例13所述的主题任选地包括:其中,当当前操作状态指示处理元件能够处理存储在队列中的分组时,提高该队列的当前优先级。
在示例15中,如示例13-14中任何一项或多项所述的主题任选地包括:其中,当当前操作状态指示处理元件无法处理存储在队列中的分组时,降低该队列的当前优先级。
在示例16中,如示例1-15中任何一项或多项所述的主题任选地包括:其中,为了将数个分组从所选择的队列转发至处理元件,协调器电路用于在转发这些分组时实施通信量调节策略。
在示例17中,如示例16所述的主题任选地包括:其中,通信量调节策略包括承诺信息速率机制。
在示例18中,如示例16-17中任何一项或多项所述的主题任选地包括:其中,通信量调节策略包括循环机制。
在示例19中,如示例1-18中任何一项或多项所述的主题任选地包括:其中,数个分组是三十二个分组。
示例20是一种实现智能分组聚合的方法,该方法包括:在分组解析器处接收多个分组并将该多个分组中的每个分组路由至多个队列中的队列,这些分组基于这些分组的特性在队列之间划分;与处理元件对接,以确定该处理元件的当前操作状态;基于该处理元件的当前操作状态从多个队列中选择队列;以及将数个分组从所选择的队列转发至处理元件。
在示例21中,如示例20所述的主题任选地包括:其中,处理元件包括计算进程。
在示例22中,如示例20-21中任何一项或多项所述的主题任选地包括:其中,处理元件包括线程。
在示例23中,如示例20-22中任何一项或多项所述的主题任选地包括:其中,处理元件包括虚拟机。
在示例24中,如示例20-23中任何一项或多项所述的主题任选地包括:其中,处理元件包括现场可编程门阵列(FPGA)程序。
在示例25中,如示例20-24中任何一项或多项所述的主题任选地包括:其中,分组解析器包括用于检查所述分组的TCP卸载引擎。
在示例26中,如示例20-25中任何一项或多项的主题任选地包括:尝试标识多个队列中与特定分组对应的队列;当标识失败时,分配新的队列;以及将该特定分组存储在该新的队列中。
在示例27中,如示例20-26中任何一项或多项的主题任选地包括:与处理元件对接包括与用于检查与该处理元件相关联的高速缓存存储器的存储器管理单元(MMU)对接。
在示例28中,如示例20-27中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前操作中的线程。
在示例29中,如示例20-28中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前操作中的进程。
在示例30中,如示例20-29中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前操作中的虚拟机。
在示例31中,如示例20-30中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前FPGA配置。
在示例32中,如示例20-31中任何一项或多项所述的主题任选地包括:其中,从多个队列中选择队列包括:确定与多个队列中的队列的集合相关联的当前优先级;以及从该队列的集合中选择具有最高优先级的队列。
在示例33中,如示例32所述的主题任选地包括:其中,当当前操作状态指示处理元件能够处理存储在队列中的分组时,提高该队列的当前优先级。
在示例34中,如示例32-33中任何一项或多项所述的主题任选地包括:其中,当当前操作状态指示处理元件无法处理存储在队列中的分组时,降低该队列的当前优先级。
在示例35中,如示例20-34中任何一项或多项所述的主题任选地包括:其中,将数个分组从所选择的队列转发至处理元件包括在转发这些分组时实施通信量调节策略。
在示例36中,如示例35所述的主题任选地包括:其中,通信量调节策略包括承诺信息速率机制。
在示例37中,如示例35-36中任何一项或多项所述的主题任选地包括:其中,通信量调节策略包括循环机制。
在示例38中,如示例20-37中任何一项或多项所述的主题任选地包括:其中,数个分组是三十二个分组。
示例39是至少一种包括指令的机器可读介质,这些指令在由机器执行时使得该机器执行如示例20-38所述的方法中的任一项的操作。
示例40是一种包括用于执行如示例20-38所述的方法中的任一项的装置的设备。
示例41是一种用于实现智能分组聚合的设备,该设备包括:用于在分组解析器处接收多个分组并将该多个分组中的每个分组路由至多个队列中的队列的装置,这些分组基于这些分组的特性在队列之间划分;用于与处理元件对接以确定该处理元件的当前操作状态的装置;用于基于该处理元件的当前操作状态从多个队列中选择队列的装置;以及用于将数个分组从所选择的队列转发至处理元件的装置。
在示例42中,如示例41所述的主题任选地包括:其中,处理元件包括计算进程。
在示例43中,如示例41-42中任何一项或多项所述的主题任选地包括:其中,处理元件包括线程。
在示例44中,如示例41-43中任何一项或多项所述的主题任选地包括:其中,处理元件包括虚拟机。
在示例45中,如示例41-44中任何一项或多项所述的主题任选地包括:其中,处理元件包括现场可编程门阵列(FPGA)程序。
在示例46中,如示例41-45中任何一项或多项所述的主题任选地包括:其中,分组解析器包括用于检查所述分组的TCP卸载引擎。
在示例47中,如示例41-46中任何一项或多项的主题任选地包括:用于尝试标识多个队列中与特定分组对应的队列的装置;用于在标识失败时分配新的队列的装置;以及用于将该特定分组存储在该新的队列中的装置。
在示例48中,如示例41-47中任何一项或多项的主题任选地包括:用于与处理元件对接的装置包括用于与用于检查与该处理元件相关联的高速缓存存储器的存储器管理单元(MMU)对接的装置。
在示例49中,如示例41-48中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前操作中的线程。
在示例50中,如示例41-49中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前操作中的进程。
在示例51中,如示例41-50中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前操作中的虚拟机。
在示例52中,如示例41-51中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前FPGA配置。
在示例53中,如示例41-52中任何一项或多项所述的主题任选地包括:其中,用于从多个队列中选择队列的装置包括:用于确定与多个队列中的队列的集合相关联的当前优先级的装置;以及用于从该队列的集合中选择具有最高优先级的队列的装置。
在示例54中,如示例53所述的主题任选地包括:其中,当当前操作状态指示处理元件能够处理存储在队列中的分组时,提高该队列的当前优先级。
在示例55中,如示例53-54中任何一项或多项所述的主题任选地包括:其中,当当前操作状态指示处理元件无法处理存储在队列中的分组时,降低该队列的当前优先级。
在示例56中,如示例41-55中任何一项或多项所述的主题任选地包括:其中,用于将数个分组从所选择的队列转发至处理元件的装置包括用于在转发这些分组时实施通信量调节策略的装置。
在示例57中,如示例56所述的主题任选地包括:其中,通信量调节策略包括承诺信息速率机制。
在示例58中,如示例56-57中任何一项或多项所述的主题任选地包括:其中,通信量调节策略包括循环机制。
在示例59中,如示例41-58中任何一项或多项所述的主题任选地包括:其中,数个分组是三十二个分组。
示例60是至少一种机器可读介质,包括用于实现智能分组聚合的指令,这些指令在由机器执行时使得该机器用于:在分组解析器处接收多个分组并将该多个分组中的每个分组路由至多个队列中的队列,这些分组基于这些分组的特性在队列之间划分;与处理元件对接,以确定该处理元件的当前操作状态;基于该处理元件的当前操作状态从多个队列中选择队列;以及将数个分组从所选择的队列转发至处理元件。
在示例61中,如示例60所述的主题任选地包括:其中,处理元件包括计算进程。
在示例62中,如示例60-61中任何一项或多项所述的主题任选地包括:其中,处理元件包括线程。
在示例63中,如示例60-62中任何一项或多项所述的主题任选地包括:其中,处理元件包括虚拟机。
在示例64中,如示例60-63中任何一项或多项所述的主题任选地包括:其中,处理元件包括现场可编程门阵列(FPGA)程序。
在示例65中,如示例60-64中任何一项或多项所述的主题任选地包括:其中,分组解析器包括用于检查所述分组的TCP卸载引擎。
在示例66中,如示例60-65中任何一项或多项的主题任选地包括用于以下各项的指令:尝试标识多个队列中与特定分组对应的队列;当标识失败时,分配新的队列;以及将该特定分组存储在该新的队列中。
在示例67中,如示例60-66中任何一项或多项的主题任选地包括:用于与处理元件对接的指令包括用于与用于检查与该处理元件相关联的高速缓存存储器的存储器管理单元(MMU)对接的指令。
在示例68中,如示例60-67中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前操作中的线程。
在示例69中,如示例60-68中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前操作中的进程。
在示例70中,如示例60-69中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前操作中的虚拟机。
在示例71中,如示例60-70中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前FPGA配置。
在示例72中,如示例60-71中任何一项或多项所述的主题任选地包括:其中,用于从多个队列中选择队列的指令包括用于以下各项的指令:确定与多个队列中的队列的集合相关联的当前优先级;以及从该队列的集合中选择具有最高优先级的队列。
在示例73中,如示例72所述的主题任选地包括:其中,当当前操作状态指示处理元件能够处理存储在队列中的分组时,提高该队列的当前优先级。
在示例74中,如示例72-73中任何一项或多项所述的主题任选地包括:其中,当当前操作状态指示处理元件无法处理存储在队列中的分组时,降低该队列的当前优先级。
在示例75中,如示例60-74中任何一项或多项所述的主题任选地包括:其中,用于将数个分组从所选择的队列转发至处理元件的指令包括用于在转发这些分组时实施通信量调节策略的指令。
在示例76中,如示例75所述的主题任选地包括:其中,通信量调节策略包括承诺信息速率机制。
在示例77中,如示例75-76中任何一项或多项所述的主题任选地包括:其中,通信量调节策略包括循环机制。
在示例78中,如示例60-77中任何一项或多项所述的主题任选地包括:其中,数个分组是三十二个分组。
示例79是一种用于实现智能分组聚合的网络接口设备,该网络接口设备包括:分组解析器,用于接收多个分组并将该多个分组聚合成组合的分组;以及协调器电路,该协调器电路用于:与处理元件对接,以确定该处理元件的当前操作状态;以及基于该当前操作状态将组合的分组转发至该处理元件。
在示例80中,如示例79所述的主题任选地包括:其中,处理元件包括计算进程。
在示例81中,如示例79-80中任何一项或多项所述的主题任选地包括:其中,处理元件包括线程。
在示例82中,如示例79-81中任何一项或多项所述的主题任选地包括:其中,处理元件包括虚拟机。
在示例83中,如示例79-82中任何一项或多项所述的主题任选地包括:其中,处理元件包括现场可编程门阵列(FPGA)。
在示例84中,如示例79-83中任何一项或多项所述的主题任选地包括:其中,分组解析器包括用于聚合多个分组的大型接收卸载引擎。
在示例85中,如示例79-84中任何一项或多项的主题任选地包括:其中,为了与处理元件对接,协调器电路用于与用于检查与该处理元件相关联的高速缓存存储器的存储器管理单元(MMU)对接。
在示例86中,如示例79-85中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前操作中的线程。
在示例87中,如示例79-86中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前操作中的进程。
在示例88中,如示例79-87中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前操作中的虚拟机。
在示例89中,如示例79-88中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前FPGA配置。
在示例90中,如示例79-89中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态指示该处理元件无法处理组合的分组,并且其中,协调器电路用于请求处理元件将其自身重新配置成其中该处理元件能够处理组合的分组的操作状态。
在示例91中,如示例90所述的主题任选地包括:其中,为了请求处理元件对其自身进行重新配置,协调器电路用于使得指令被加载到该处理元件的指令高速缓存中。
在示例92中,如示例91所述的主题任选地包括:其中,为了使得指令被加载到指令高速缓存中,协调器电路用于请求存储器管理单元(MMU)从主存储器加载指令。
在示例93中,如示例91-92中任何一项或多项所述的主题任选地包括:其中,为了使得指令被加载到指令高速缓存中,协调器电路用于转发与组合的分组具有相同类型的虚设分组,以便使得指令被加载到指令高速缓存中。
在示例94中,如示例90-93中任何一项或多项所述的主题任选地包括:其中,为了请求处理元件对其自身进行重新配置,协调器电路用于请求FPGA加载不同的功能。
示例95是一种实现智能分组聚合的方法,该方法包括:在分组解析器处接收多个分组并将该多个分组聚合成组合的分组;与处理元件对接,以确定该处理元件的当前操作状态;以及基于该当前操作状态将组合的分组转发至该处理元件。
在示例96中,如示例95所述的主题任选地包括:其中,处理元件包括计算进程。
在示例97中,如示例95-96中任何一项或多项所述的主题任选地包括:其中,处理元件包括线程。
在示例98中,如示例95-97中任何一项或多项所述的主题任选地包括:其中,处理元件包括虚拟机。
在示例99中,如示例95-98中任何一项或多项所述的主题任选地包括:其中,处理元件包括现场可编程门阵列(FPGA)。
在示例100中,如示例95-99中任何一项或多项所述的主题任选地包括:其中,分组解析器包括用于聚合多个分组的大型接收卸载引擎。
在示例101中,如示例95-100中任何一项或多项的主题任选地包括:其中,与处理元件对接包括与用于检查与该处理元件相关联的高速缓存存储器的存储器管理单元(MMU)对接。
在示例102中,如示例95-101中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前操作中的线程。
在示例103中,如示例95-102中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前操作中的进程。
在示例104中,如示例95-103中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前操作中的虚拟机。
在示例105中,如示例95-104中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前FPGA配置。
在示例106中,如示例95-105中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态指示该处理元件无法处理组合的分组,并且其中,该方法包括请求处理元件将其自身重新配置成其中该处理元件能够处理组合的分组的操作状态。
在示例107中,如示例106所述的主题任选地包括:其中,请求处理元件对其自身进行重新配置包括:使得指令被加载到该处理元件的指令高速缓存中。
在示例108中,如示例107所述的主题任选地包括:其中,使得指令被加载到指令高速缓存中包括请求MMU从主存储器加载指令。
在示例109中,如示例107-108中任何一项或多项所述的主题任选地包括:其中,使得指令被加载到指令高速缓存中包括转发与组合的分组具有相同类型的虚设分组以便使得指令被加载到指令高速缓存中。
在示例110中,如示例106-109中任何一项或多项所述的主题任选地包括:其中,请求处理元件对其自身进行重新配置包括请求FPGA加载不同的功能。
示例111是至少一种包括指令的机器可读介质,这些指令在由机器执行时使得该机器执行如示例95-110所述的方法中的任一项的操作。
示例112是一种包括用于执行如示例95-110所述的方法中的任一项的装置的设备。
示例113是一种用于实现智能分组聚合的设备,该设备包括:用于在分组解析器处接收多个分组并将该多个分组聚合成组合的分组的装置;用于与处理元件对接以确定该处理元件的当前操作状态的装置;以及用于基于该当前操作状态将组合的分组转发至该处理元件的装置。
在示例114中,如示例113所述的主题任选地包括:其中,处理元件包括计算进程。
在示例115中,如示例113-114中任何一项或多项所述的主题任选地包括:其中,处理元件包括线程。
在示例116中,如示例113-115中任何一项或多项所述的主题任选地包括:其中,处理元件包括虚拟机。
在示例117中,如示例113-116中任何一项或多项所述的主题任选地包括:其中,处理元件包括现场可编程门阵列(FPGA)。
在示例118中,如示例113-117中任何一项或多项所述的主题任选地包括:其中,分组解析器包括用于聚合多个分组的大型接收卸载引擎。
在示例119中,如示例113-118中任何一项或多项的主题任选地包括:其中,用于与处理元件对接的装置包括用于与用于检查与该处理元件相关联的高速缓存存储器的存储器管理单元(MMU)对接的装置。
在示例120中,如示例113-119中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前操作中的线程。
在示例121中,如示例113-120中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前操作中的进程。
在示例122中,如示例113-121中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前操作中的虚拟机。
在示例123中,如示例113-122中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前FPGA配置。
在示例124中,如示例113-123中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态指示该处理元件无法处理组合的分组,并且其中,该设备包括用于请求处理元件将其自身重新配置成其中该处理元件能够处理组合的分组的操作状态的装置。
在示例125中,如示例124所述的主题任选地包括:其中,用于请求处理元件对其自身进行重新配置的装置包括:用于使得指令被加载到该处理元件的指令高速缓存中的装置。
在示例126中,如示例125所述的主题任选地包括:其中,用于使得指令被加载到指令高速缓存中的装置包括用于请求MMU从主存储器加载指令的装置。
在示例127中,如示例125-126中任何一项或多项所述的主题任选地包括:其中,用于使得指令被加载到指令高速缓存中的装置包括用于转发与组合的分组具有相同类型的虚设分组以便使得指令被加载到指令高速缓存中的装置。
在示例128中,如示例124-127中任何一项或多项所述的主题任选地包括:其中,用于请求处理元件对其自身进行重新配置的装置包括用于请求FPGA加载不同的功能的装置。
示例129是至少一种机器可读介质,包括用于实现智能分组聚合的指令,这些指令在由机器执行时使得该机器用于:在分组解析器处接收多个分组并将该多个分组聚合成组合的分组;与处理元件对接,以确定该处理元件的当前操作状态;以及基于该当前操作状态将组合的分组转发至该处理元件。
在示例130中,如示例129所述的主题任选地包括:其中,处理元件包括计算进程。
在示例131中,如示例129-130中任何一项或多项所述的主题任选地包括:其中,处理元件包括线程。
在示例132中,如示例129-131中任何一项或多项所述的主题任选地包括:其中,处理元件包括虚拟机。
在示例133中,如示例129-132中任何一项或多项所述的主题任选地包括:其中,处理元件包括现场可编程门阵列(FPGA)。
在示例134中,如示例129-133中任何一项或多项所述的主题任选地包括:其中,分组解析器包括用于聚合多个分组的大型接收卸载引擎。
在示例135中,如示例129-134中任何一项或多项的主题任选地包括:其中,用于与处理元件对接的指令包括用于与用于检查与该处理元件相关联的高速缓存存储器的存储器管理单元(MMU)对接的指令。
在示例136中,如示例129-135中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前操作中的线程。
在示例137中,如示例129-136中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前操作中的进程。
在示例138中,如示例129-137中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前操作中的虚拟机。
在示例139中,如示例129-138中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态包括当前FPGA配置。
在示例140中,如示例129-139中任何一项或多项所述的主题任选地包括:其中,处理元件的当前操作状态指示该处理元件无法处理组合的分组,并且其中,介质包括用于请求处理元件将其自身重新配置成其中该处理元件能够处理组合的分组的操作状态的指令。
在示例141中,如示例140所述的主题任选地包括:其中,用于请求处理元件对其自身进行重新配置的指令包括用于使得指令被加载到该处理元件的指令高速缓存中的指令。
在示例142中,如示例141所述的主题任选地包括:其中,用于使得指令被加载到指令高速缓存中的指令包括用于请求MMU从主存储器加载指令的指令。
在示例143中,如示例141-142中任何一项或多项所述的主题任选地包括:其中,用于使得指令被加载到指令高速缓存中的指令包括用于转发与组合的分组具有相同类型的虚设分组以便使得指令被加载到指令高速缓存中的指令。
在示例144中,如示例140-143中任何一项或多项所述的主题任选地包括:其中,用于请求处理元件对其自身进行重新配置的指令包括用于请求FPGA加载不同的功能的指令。
示例145是一种用于实现灵活分组处理的网络接口设备,所述网络接口设备包括:分组解析器,该分组解析器用于:接收分组;以及从对该分组进行分析来确定被用来处理该分组的对应的处理元件;以及协调器电路,该协调器电路用于:判定该处理元件在计算单元中是否活跃;当处理元件不活跃时,加载该处理元件;以及将分组转发至该处理元件。
在示例146中,如示例145所述的主题任选地包括:其中,处理元件包括计算进程。
在示例147中,如示例145-146中任何一项或多项所述的主题任选地包括:其中,处理元件包括线程。
在示例148中,如示例145-147中任何一项或多项所述的主题任选地包括:其中,处理元件包括虚拟机。
在示例149中,如示例145-148中任何一项或多项所述的主题任选地包括:其中,处理元件包括现场可编程门阵列(FPGA)程序。
在示例150中,如示例145-149中任何一项或多项所述的主题任选地包括:其中,计算单元包括中央处理单元(CPU)。
在示例151中,如示例145-150中任何一项或多项所述的主题任选地包括:其中,计算单元包括处理器核。
在示例152中,如示例145-151中任何一项或多项所述的主题任选地包括:其中,计算单元包括CPU复合体。
在示例153中,如示例145-152中任何一项或多项所述的主题任选地包括:其中,计算单元包括现场可编程门阵列(FPGA)。
在示例154中,如示例145-153中任何一项或多项所述的主题任选地包括:其中,计算单元包括图形处理单元(GPU)。
在示例155中,如示例145-154中任何一项或多项所述的主题任选地包括:其中,为了从对分组进行分析来确定被用来处理该分组的对应的处理元件,分组解析器用于使用TCP卸载引擎来检查该分组并标识该对应的处理元件。
在示例156中,如示例145-155中任何一项或多项所述的主题任选地包括:其中,为了判定处理元件在计算单元中是否活跃,协调器电路用于与计算单元对接,以判定该处理元件是否活跃。
在示例157中,如示例156所述的主题任选地包括:其中,计算单元是处理器核,并且其中,为了与该计算单元对接,协调器电路用于接收对由该计算单元操作的高速缓存的内容的指示。
在示例158中,如示例157所述的主题任选地包括:其中,对高速缓存的内容的指示由存储器管理单元(MMU)提供。
在示例159中,如示例156-158中任何一项或多项所述的主题任选地包括:其中,计算单元是FPGA,并且其中,为了与计算单元对接,协调器电路用于与FPGA接口进行通信以判定处理元件在计算单元中是否活跃。
在示例160中,如示例159所述的主题任选地包括:其中,FPGA接口维护哪些FPGA程序已经被加载到FPGA中的记录。
在示例161中,如示例145-160中任何一项或多项所述的主题任选地包括:其中,计算单元是处理器核,并且其中,为了在处理元件不活跃时加载该处理元件,协调器电路用于将指令和数据存储在处理器核的高速缓存中,以处理分组。
在示例162中,如示例161所述的主题任选地包括:其中,为了将指令和数据存储在处理器核的高速缓存中,协调器电路用于向该处理器核的高速缓存控制器传递地址。
在示例163中,如示例161-162中任何一项或多项所述的主题任选地包括:其中,高速缓存包括由处理器核控制的通用部分以及由网络接口设备控制的保留部分。
在示例164中,如示例161-163中任何一项或多项所述的主题任选地包括:其中,为了存储指令和数据,协调器电路用于将指令和数据存储在由处理器核控制的通用部分中。
在示例165中,如示例161-164中任何一项或多项所述的主题任选地包括:其中,为了存储指令和数据,协调器电路用于将指令和数据存储在由网络接口设备控制的保留部分中。
在示例166中,如示例165所述的主题任选地包括:其中,协调器电路用于从高速缓存的保留部分驱逐内容。
在示例167中,如示例166所述的主题任选地包括:其中,为了从高速缓存的保留部分驱逐内容,协调器电路用于:确定加载在高速缓存的保留部分中的现有指令的优先级;确定不活跃并且将需要被加载到高速缓存的保留部分中以处理分组的指令的优先级;以及当现有指令的优先级低于不活跃的指令的优先级时,驱逐加载在高速缓存的保留部分中的现有指令。
在示例168中,如示例166-167中任何一项或多项所述的主题任选地包括:其中,为了从高速缓存的保留部分驱逐内容,协调器电路用于:判定是否存在任何分组正在由加载在高速缓存的保留部分中的现有指令处理;以及当加载在高速缓存的保留部分中的现有指令不是正在被用来处理分组时,从高速缓存的保留部分驱逐现有指令。
在示例169中,如示例166-168中任何一项或多项所述的主题任选地包括:其中,为了从高速缓存的保留部分驱逐内容,协调器电路用于:检查加载在高速缓存的保留部分中的现有指令的存活时间(TTL)值;以及在该TTL值已过期之后,从高速缓存的保留部分驱逐现有指令。
在示例170中,如示例169所述的主题任选地包括:其中,当分组被转发至高速缓存的保留部分以用于由现有指令处理时,协调器电路用于增加加载在高速缓存的保留部分中的现有指令的TTL值。
在示例171中,如示例145-170中任何一项或多项所述的主题任选地包括:其中,计算单元是处理器核,并且其中,为了在处理元件不活跃时加载该处理单元,协调器电路用于:标识分组的统计学简档;基于该统计学简档向分组分派优先级;以及当分组的优先级高于高速缓存中的指令的优先级时,将指令和数据存储在处理器核的高速缓存中以处理该分组。
在示例172中,如示例171所述的主题任选地包括:其中,统计学简档通过使用人工智能过程被维护。
在示例173中,如示例171-172中任何一项或多项所述的主题任选地包括:其中,人工智能包括机器学习过程。
在示例174中,如示例171-173中任何一项或多项所述的主题任选地包括:其中,统计学简档通过使用分组处理直方图被维护。
在示例175中,如示例145-174中任何一项或多项所述的主题任选地包括:其中,计算单元是FPGA,并且其中,为了在处理元件不活跃时加载该处理元件,协调器电路用于使得FPGA将程序加载到FPGA分区中。
在示例176中,如示例175所述的主题任选地包括:其中,为了加载程序,协调器电路用于与FPGA接口控制器进行交互。
在示例177中,如示例176所述的主题任选地包括:其中,FPGA包括由FPGA控制的分区和由FPGA接口控制器控制的分区。
在示例178中,如示例177所述的主题任选地包括:其中,为了加载程序,协调器电路用于在由FPGA控制的分区中加载程序。
在示例179中,如示例177-178中任何一项或多项所述的主题任选地包括:其中,为了加载程序,协调器电路用于在由FPGA接口控制器控制的分区中加载程序。
在示例180中,如示例177-179中任何一项或多项所述的主题任选地包括:其中,FPGA接口控制器用于从由该FPGA接口控制器控制的分区卸载程序。
在示例181中,如示例180所述的主题任选地包括:其中,为了从由FPGA接口控制器控制的分区卸载程序,该FPGA接口控制器用于:确定加载在由FPGA接口控制器控制的分区中的现有程序的优先级;确定不活跃并且将需要被加载到FPGA中以处理分组的程序的优先级;以及当现有程序的优先级低于不活跃的处理元件的程序的优先级时,对由FPGA接口控制器控制的分区中的现有程序中的至少一个进行重新配置。
在示例182中,如示例180-181中任何一项或多项所述的主题任选地包括:其中为了从由FPGA接口控制器控制的分区卸载程序,该FPGA接口控制器用于:判定是否存在任何分组正在由加载在由FPGA接口控制器控制的分区中的现有程序处理;以及当现有程序不是正在被用来处理分组时,从由FPGA接口控制器控制的分区卸载现有程序。
在示例183中,如示例180-182中任何一项或多项所述的主题任选地包括:其中为了从由FPGA接口控制器控制的分区卸载程序,该FPGA接口控制器用于:检查加载在由FPGA接口控制器控制的分区中的现有程序的存活时间(TTL)值;以及在该TTL值已过期之后,从由FPGA接口控制器控制的分区卸载现有程序。
在示例184中,如示例183所述的主题任选地包括:其中,当分组被转发至由FPGA接口控制器控制的分区以用于由现有程序处理时,FPGA接口控制器用于增加加载在由FPGA接口控制器控制的分区中的现有程序的TTL值。
在示例185中,如示例145-184中任何一项或多项所述的主题任选地包括:其中,计算单元是FPGA,并且其中,为了在处理元件不活跃时加载该处理元件,协调器电路用于:标识分组的统计学简档;基于该统计学简档向分组分派优先级;以及当分组的优先级高于FPGA中的现有程序的优先级时,利用程序来重新配置FPGA中的现有程序以处理分组。
在示例186中,如示例185所述的主题任选地包括:其中,统计学简档通过使用人工智能过程被维护。
在示例187中,如示例185-186中任何一项或多项所述的主题任选地包括:其中,人工智能包括机器学习过程。
在示例188中,如示例185-187中任何一项或多项所述的主题任选地包括:其中,统计学简档通过使用分组处理直方图被维护。
示例189是一种灵活分组处理的方法,该方法包括:接收分组;从对该分组进行分析来确定被用来处理该分组的对应的处理元件;判定该处理元件在计算单元中是否活跃;当处理元件不活跃时,加载该处理元件;以及将分组转发至该处理元件。
在示例190中,如示例189所述的主题任选地包括:其中,处理元件包括计算进程。
在示例191中,如示例189-190中任何一项或多项所述的主题任选地包括:其中,处理元件包括线程。
在示例192中,如示例189-191中任何一项或多项所述的主题任选地包括:其中,处理元件包括虚拟机。
在示例193中,如示例189-192中任何一项或多项所述的主题任选地包括:其中,处理元件包括现场可编程门阵列(FPGA)程序。
在示例194中,如示例189-193中任何一项或多项所述的主题任选地包括:其中,计算单元包括中央处理单元(CPU)。
在示例195中,如示例189-194中任何一项或多项所述的主题任选地包括:其中,计算单元包括处理器核。
在示例196中,如示例189-195中任何一项或多项所述的主题任选地包括:其中,计算单元包括CPU复合体。
在示例197中,如示例189-196中任何一项或多项所述的主题任选地包括:其中,计算单元包括现场可编程门阵列(FPGA)。
在示例198中,如示例189-197中任何一项或多项所述的主题任选地包括:其中,计算单元包括图形处理单元(GPU)。
在示例199中,如示例189-198中任何一项或多项所述的主题任选地包括:其中,确定被用来处理分组的对应的处理元件包括使用TCP卸载引擎来检查该分组并标识该对应的处理元件。
在示例200中,如示例189-199中任何一项或多项所述的主题任选地包括:其中,判定处理元件在计算单元中是否活跃包括与计算单元对接以判定该处理元件是否活跃。
在示例201中,如示例200所述的主题任选地包括:其中,计算单元是处理器核,并且其中,与该计算单元对接包括接收对由该计算单元操作的高速缓存的内容的指示。
在示例202中,如示例201所述的主题任选地包括:其中,对高速缓存的内容的指示由存储器管理单元(MMU)提供。
在示例203中,如示例200-202中任何一项或多项所述的主题任选地包括:其中,计算单元是FPGA,并且其中,与计算单元对接包括与FPGA接口进行通信以判定处理元件在计算单元中是否活跃。
在示例204中,如示例203所述的主题任选地包括:其中,FPGA接口维护哪些FPGA程序已经被加载到FPGA中的记录。
在示例205中,如示例189-204中任何一项或多项所述的主题任选地包括:其中,计算单元是处理器核,并且其中,在处理元件不活跃时加载该处理元件包括将指令和数据存储在处理器核的高速缓存中以处理该分组。
在示例206中,如示例205所述的主题任选地包括:其中,将指令和数据存储在处理器核的高速缓存中包括向该处理器核的高速缓存控制器传递地址。
在示例207中,如示例205-206中任何一项或多项所述的主题任选地包括:其中,高速缓存包括由处理器核控制的通用部分以及由网络接口设备控制的保留部分。
在示例208中,如示例205-207中任何一项或多项所述的主题任选地包括:其中,存储指令和数据包括将指令和数据存储在由处理器核控制的通用部分中。
在示例209中,如示例205-208中任何一项或多项所述的主题任选地包括:其中,存储指令和数据包括将指令和数据存储在由网络接口设备控制的保留部分中。
在示例210中,如示例209所述的主题任选地包括:从高速缓存的保留部分驱逐内容。
在示例211中,如示例210所述的主题任选地包括:其中,从高速缓存的保留部分驱逐内容包括:确定加载在高速缓存的保留部分中的现有指令的优先级;确定不活跃并且将需要被加载到高速缓存的保留部分中以处理分组的指令的优先级;以及当现有指令的优先级低于不活跃的指令的优先级时,驱逐加载在高速缓存的保留部分中的现有指令。
在示例212中,如示例210-211中任何一项或多项所述的主题任选地包括:其中,从高速缓存的保留部分驱逐内容包括:判定是否存在任何分组正在由加载在高速缓存的保留部分中的现有指令处理;以及当加载在高速缓存的保留部分中的现有指令不是正在被用来处理分组时,从高速缓存的保留部分驱逐现有指令。
在示例213中,如示例210-212中任何一项或多项所述的主题任选地包括:其中,从高速缓存的保留部分驱逐内容包括:检查加载在高速缓存的保留部分中的现有指令的存活时间(TTL)值;以及在该TTL值已过期之后,从高速缓存的保留部分驱逐现有指令。
在示例214中,如示例213所述的主题任选地包括:其中,当分组被转发至高速缓存的保留部分以用于由现有指令处理时,增加加载在高速缓存的保留部分中的现有指令的TTL值。
在示例215中,如示例189-214中任何一项或多项所述的主题任选地包括:其中,计算单元是处理器核,并且其中,在处理元件不活跃时加载该处理元件包括:标识分组的统计学简档;基于该统计学简档向分组分派优先级;以及当分组的优先级高于高速缓存中的指令的优先级时,将指令和数据存储在处理器核的高速缓存中以处理该分组。
在示例216中,如示例215所述的主题任选地包括:其中,统计学简档通过使用人工智能过程被维护。
在示例217中,如示例215-216中任何一项或多项所述的主题任选地包括:其中,人工智能包括机器学习过程。
在示例218中,如示例215-217中任何一项或多项所述的主题任选地包括:其中,统计学简档通过使用分组处理直方图被维护。
在示例219中,如示例189-218中任何一项或多项所述的主题任选地包括:其中,计算单元是FPGA,并且其中,在处理元件不活跃时加载该处理元件包括使得FPGA将程序加载到FPGA分区中。
在示例220中,如示例219所述的主题任选地包括:其中,加载程序包括与FPGA接口控制器进行交互。
在示例221中,如示例220所述的主题任选地包括:其中,FPGA包括由FPGA控制的分区和由FPGA接口控制器控制的分区。
在示例222中,如示例221所述的主题任选地包括:其中,加载程序包括在由FPGA控制的分区中加载程序。
在示例223中,如示例221-222中任何一项或多项所述的主题任选地包括:其中,加载程序包括在由FPGA接口控制器控制的分区中加载程序。
在示例224中,如示例221-223中任何一项或多项所述的主题任选地包括:其中,FPGA接口控制器用于从由该FPGA接口控制器控制的分区卸载程序。
在示例225中,如示例224所述的主题任选地包括:其中,从由FPGA接口控制器控制的分区卸载程序包括:确定加载在由FPGA接口控制器控制的分区中的现有程序的优先级;确定不活跃并且将需要被加载到FPGA中以处理分组的程序的优先级;以及当现有程序的优先级低于不活跃的处理元件的程序的优先级时,对由FPGA接口控制器控制的分区中的现有程序中的至少一个进行重新配置。
在示例226中,如示例224-225中任何一项或多项所述的主题任选地包括:其中,从由FPGA接口控制器控制的分区卸载程序包括:判定是否存在任何分组正在由加载在由FPGA接口控制器控制的分区中的现有程序处理;以及当现有程序不是正在被用来处理分组时,从由FPGA接口控制器控制的分区卸载现有程序。
在示例227中,如示例224-226中任何一项或多项所述的主题任选地包括:其中,从由FPGA接口控制器控制的分区卸载程序包括:检查加载在由FPGA接口控制器控制的分区中的现有程序的存活时间(TTL)值;以及在该TTL值已过期之后,从由FPGA接口控制器控制的分区卸载现有程序。
在示例228中,如示例227所述的主题任选地包括:其中,当分组被转发至由FPGA接口控制器控制的分区以用于由现有程序处理时,FPGA接口控制器用于增加加载在由FPGA接口控制器控制的分区中的现有程序的TTL值。
在示例229中,如示例189-228中任何一项或多项所述的主题任选地包括:其中,计算单元是FPGA,并且其中,在处理元件不活跃时加载该处理元件包括:标识分组的统计学简档;基于该统计学简档向分组分派优先级;以及当分组的优先级高于FPGA中的现有程序的优先级时,利用程序来重新配置FPGA中的现有程序以处理分组。
在示例230中,如示例229所述的主题任选地包括:其中,统计学简档通过使用人工智能过程被维护。
在示例231中,如示例229-230中任何一项或多项所述的主题任选地包括:其中,人工智能包括机器学习过程。
在示例232中,如示例229-231中任何一项或多项所述的主题任选地包括:其中,统计学简档通过使用分组处理直方图被维护。
在示例233中,如示例189-232中任何一项或多项所述的主题任选地包括:其中,在处理元件不活跃时加载该处理元件包括使用即时(JIT)机制将处理元件配置成用于处理分组。
示例234是至少一种包括指令的机器可读介质,这些指令在由机器执行时使得该机器执行如示例189-233所述的方法中的任一项的操作。
示例235是一种包括用于执行如示例189-233所述的方法中的任一项的装置的设备。
示例236是一种用于实现灵活分组处理的设备,该设备包括:用于接收分组的装置;用于从对该分组进行分析来确定被用来处理该分组的对应的处理元件的装置;用于判定该处理元件在计算单元中是否活跃的装置;用于在处理元件不活跃时加载该处理元件的装置;以及用于将分组转发至该处理元件的装置。
在示例237中,如示例236所述的主题任选地包括:其中,处理元件包括计算进程。
在示例238中,如示例236-237中任何一项或多项所述的主题任选地包括:其中,处理元件包括线程。
在示例239中,如示例236-238中任何一项或多项所述的主题任选地包括:其中,处理元件包括虚拟机。
在示例240中,如示例236-239中任何一项或多项所述的主题任选地包括:其中,处理元件包括现场可编程门阵列(FPGA)程序。
在示例241中,如示例236-240中任何一项或多项所述的主题任选地包括:其中,计算单元包括中央处理单元(CPU)。
在示例242中,如示例236-241中任何一项或多项所述的主题任选地包括:其中,计算单元包括处理器核。
在示例243中,如示例236-242中任何一项或多项所述的主题任选地包括:其中,计算单元包括CPU复合体。
在示例244中,如示例236-243中任何一项或多项所述的主题任选地包括:其中,计算单元包括现场可编程门阵列(FPGA)。
在示例245中,如示例236-244中任何一项或多项所述的主题任选地包括:其中,计算单元包括图形处理单元(GPU)。
在示例246中,如示例236-245中任何一项或多项所述的主题任选地包括:其中,用于确定被用来处理分组的对应的处理元件的装置包括用于使用TCP卸载引擎来检查该分组并标识该对应的处理元件的装置。
在示例247中,如示例236-246中任何一项或多项所述的主题任选地包括:其中,用于判定处理元件在计算单元中是否活跃的装置包括用于与计算单元对接以判定该处理元件是否活跃的装置。
在示例248中,如示例247所述的主题任选地包括:其中,计算单元是处理器核,并且其中,用于与该计算单元对接的装置包括用于接收对由该计算单元操作的高速缓存的内容的指示的装置。
在示例249中,如示例248所述的主题任选地包括:其中,对高速缓存的内容的指示由存储器管理单元(MMU)提供。
在示例250中,如示例247-249中任何一项或多项所述的主题任选地包括:其中,计算单元是FPGA,并且其中,用于与计算单元对接的装置包括用于与FPGA接口进行通信以判定处理元件在计算单元中是否活跃的装置。
在示例251中,如示例250所述的主题任选地包括:其中,FPGA接口维护哪些FPGA程序已经被加载到FPGA中的记录。
在示例252中,如示例236-251中任何一项或多项所述的主题任选地包括:其中,计算单元是处理器核,并且其中,用于在处理元件不活跃时加载该处理元件的装置包括用于将指令和数据存储在处理器核的高速缓存中以处理该分组的装置。
在示例253中,如示例252所述的主题任选地包括:其中,用于将指令和数据存储在处理器核的高速缓存中的装置包括用于向该处理器核的高速缓存控制器传递地址的装置。
在示例254中,如示例252-253中任何一项或多项所述的主题任选地包括:其中,高速缓存包括由处理器核控制的通用部分以及由网络接口设备控制的保留部分。
在示例255中,如示例252-254中任何一项或多项所述的主题任选地包括:其中,用于存储指令和数据的装置包括用于将指令和数据存储在由处理器核控制的通用部分中的装置。
在示例256中,如示例252-255中任何一项或多项所述的主题任选地包括:其中,用于存储指令和数据的装置包括用于将指令和数据存储在由网络接口设备控制的保留部分中的装置。
在示例257中,如示例256所述的主题任选地包括:用于从高速缓存的保留部分驱逐内容的装置。
在示例258中,如示例257所述的主题任选地包括:其中,用于从高速缓存的保留部分驱逐内容的装置包括:用于确定加载在高速缓存的保留部分中的现有指令的优先级的装置;用于确定不活跃并且将需要被加载到高速缓存的保留部分中以处理分组的指令的优先级的装置;以及用于在现有指令的优先级低于不活跃的指令的优先级时驱逐加载在高速缓存的保留部分中的现有指令的装置。
在示例259中,如示例257-258中任何一项或多项所述的主题任选地包括:其中,用于从高速缓存的保留部分驱逐内容的装置包括:用于判定是否存在任何分组正在由加载在高速缓存的保留部分中的现有指令处理的装置;以及用于在加载在高速缓存的保留部分中的现有指令不是正在被用来处理分组时从高速缓存的保留部分驱逐现有指令的装置。
在示例260中,如示例257-259中任何一项或多项所述的主题任选地包括:其中,用于从高速缓存的保留部分驱逐内容的装置包括:用于检查加载在高速缓存的保留部分中的现有指令的存活时间(TTL)值的装置;以及用于在该TTL值已过期之后从高速缓存的保留部分驱逐现有指令的装置。
在示例261中,如示例260所述的主题任选地包括:用于在分组被转发至高速缓存的保留部分以用于由现有指令处理时增加加载在高速缓存的保留部分中的现有指令的TTL值的装置。
在示例262中,如示例236-261中任何一项或多项所述的主题任选地包括:其中,计算单元是处理器核,并且其中,用于在处理元件不活跃时加载该处理元件的装置包括:用于标识分组的统计学简档的装置;用于基于该统计学简档向分组分派优先级的装置;以及用于在分组的优先级高于高速缓存中的指令的优先级时将指令和数据存储在处理器核的高速缓存中以处理该分组的装置。
在示例263中,如示例262所述的主题任选地包括:其中,统计学简档通过使用人工智能过程被维护。
在示例264中,如示例262-263中任何一项或多项所述的主题任选地包括:其中,人工智能包括机器学习过程。
在示例265中,如示例262-264中任何一项或多项所述的主题任选地包括:其中,统计学简档通过使用分组处理直方图被维护。
在示例266中,如示例236-265中任何一项或多项所述的主题任选地包括:其中,计算单元是FPGA,并且其中,用于在处理元件不活跃时加载该处理元件的装置包括用于使得FPGA将程序加载到FPGA分区中的装置。
在示例267中,如示例266所述的主题任选地包括:其中,用于加载程序的装置包括用于与FPGA接口控制器进行交互的装置。
在示例268中,如示例267所述的主题任选地包括:其中,FPGA包括由FPGA控制的分区和由FPGA接口控制器控制的分区。
在示例269中,如示例268所述的主题任选地包括:其中,用于加载程序的装置包括用于在由FPGA控制的分区中加载程序的装置。
在示例270中,如示例268-269中任何一项或多项所述的主题任选地包括:其中,用于加载程序的装置包括用于在由FPGA接口控制器控制的分区中加载程序的装置。
在示例271中,如示例268-270中任何一项或多项所述的主题任选地包括:其中,FPGA接口控制器用于从由该FPGA接口控制器控制的分区卸载程序。
在示例272中,如示例271所述的主题任选地包括:其中,用于从由FPGA接口控制器控制的分区卸载程序的装置包括:用于确定加载在由FPGA接口控制器控制的分区中的现有程序的优先级的装置;用于确定不活跃并且将需要被加载到FPGA中以处理分组的程序的优先级的装置;以及用于在现有程序的优先级低于不活跃的处理元件的程序的优先级时对由FPGA接口控制器控制的分区中的现有程序中的至少一个进行重新配置的装置。
在示例273中,如示例271-272中任何一项或多项所述的主题任选地包括:其中,用于从由FPGA接口控制器控制的分区卸载程序的装置包括:用于判定是否存在任何分组正在由加载在由FPGA接口控制器控制的分区中的现有程序处理的装置;以及用于在现有程序不是正在被用来处理分组时从由FPGA接口控制器控制的分区卸载现有程序的装置。
在示例274中,如示例271-273中任何一项或多项所述的主题任选地包括:其中,用于从由FPGA接口控制器控制的分区卸载程序的装置包括:用于检查加载在由FPGA接口控制器控制的分区中的现有程序的存活时间(TTL)值的装置;以及用于在该TTL值已过期之后从由FPGA接口控制器控制的分区卸载现有程序的装置。
在示例275中,如示例274所述的主题任选地包括:其中,当分组被转发至由FPGA接口控制器控制的分区以用于由现有程序处理时,FPGA接口控制器用于增加加载在由FPGA接口控制器控制的分区中的现有程序的TTL值。
在示例276中,如示例236-275中任何一项或多项所述的主题任选地包括:其中,计算单元是FPGA,并且其中,用于在处理元件不活跃时加载该处理元件的装置包括:用于标识分组的统计学简档的装置;用于基于该统计学简档向分组分派优先级的装置;以及用于在分组的优先级高于FPGA中的现有程序的优先级时利用程序来重新配置FPGA中的现有程序以处理分组的装置。
在示例277中,如示例276所述的主题任选地包括:其中,统计学简档通过使用人工智能过程被维护。
在示例278中,如示例276-277中任何一项或多项所述的主题任选地包括:其中,人工智能包括机器学习过程。
在示例279中,如示例276-278中任何一项或多项所述的主题任选地包括:其中,统计学简档通过使用分组处理直方图被维护。
在示例280中,如示例236-279中任何一项或多项所述的主题任选地包括:其中,用于在处理元件不活跃时加载该处理元件的装置包括用于使用即时(JIT)机制将处理元件配置成用于处理分组的装置。
示例281是至少一种机器可读介质,包括用于实现灵活分组处理的指令,这些指令在由机器执行时使得该机器用于:接收分组;从对该分组进行分析来确定被用来处理该分组的对应的处理元件;判定该处理元件在计算单元中是否活跃;当处理元件不活跃时,加载该处理元件;以及将分组转发至该处理元件。
在示例282中,如示例281所述的主题任选地包括:其中,处理元件包括计算进程。
在示例283中,如示例281-282中任何一项或多项所述的主题任选地包括:其中,处理元件包括线程。
在示例284中,如示例281-283中任何一项或多项所述的主题任选地包括:其中,处理元件包括虚拟机。
在示例285中,如示例281-284中任何一项或多项所述的主题任选地包括:其中,处理元件包括现场可编程门阵列(FPGA)程序。
在示例286中,如示例281-285中任何一项或多项所述的主题任选地包括:其中,计算单元包括中央处理单元(CPU)。
在示例287中,如示例281-286中任何一项或多项所述的主题任选地包括:其中,计算单元包括处理器核。
在示例288中,如示例281-287中任何一项或多项所述的主题任选地包括:其中,计算单元包括CPU复合体。
在示例289中,如示例281-288中任何一项或多项所述的主题任选地包括:其中,计算单元包括现场可编程门阵列(FPGA)。
在示例290中,如示例281-289中任何一项或多项所述的主题任选地包括:其中,计算单元包括图形处理单元(GPU)。
在示例291中,如示例281-290中任何一项或多项所述的主题任选地包括:其中,用于确定被用来处理分组的对应的处理元件的指令包括用于使用TCP卸载引擎来检查该分组并标识该对应的处理元件的指令。
在示例292中,如示例281-291中任何一项或多项所述的主题任选地包括:其中,用于判定处理元件在计算单元中是否活跃的指令包括用于与计算单元对接以判定该处理元件是否活跃的指令。
在示例293中,如示例292所述的主题任选地包括:其中,计算单元是处理器核,并且其中,用于与该计算单元对接的指令包括用于接收对由该计算单元操作的高速缓存的内容的指示的指令。
在示例294中,如示例293所述的主题任选地包括:其中,对高速缓存的内容的指示由存储器管理单元(MMU)提供。
在示例295中,如示例292-294中任何一项或多项所述的主题任选地包括:其中,计算单元是FPGA,并且其中,用于与计算单元对接的指令包括用于与FPGA接口进行通信以判定处理元件在计算单元中是否活跃的指令。
在示例296中,如示例295所述的主题任选地包括:其中,FPGA接口维护哪些FPGA程序已经被加载到FPGA中的记录。
在示例297中,如示例281-296中任何一项或多项所述的主题任选地包括:其中,计算单元是处理器核,并且其中,用于在处理元件不活跃时加载该处理元件的指令包括用于将指令和数据存储在处理器核的高速缓存中以处理分组的指令。
在示例298中,如示例297所述的主题任选地包括:其中,用于将指令和数据存储在处理器核的高速缓存中的指令包括用于向该处理器核的高速缓存控制器传递地址的指令。
在示例299中,如示例297-298中任何一项或多项所述的主题任选地包括:其中,高速缓存包括由处理器核控制的通用部分以及由网络接口设备控制的保留部分。
在示例300中,如示例297-299中任何一项或多项所述的主题任选地包括:其中,用于存储指令和数据的指令包括用于将指令和数据存储在由处理器核控制的通用部分中的指令。
在示例301中,如示例297-300中任何一项或多项所述的主题任选地包括:其中,用于存储指令和数据的指令包括用于将指令和数据存储在由网络接口设备控制的保留部分中的指令。
在示例302中,如示例301所述的主题任选地包括:用于从高速缓存的保留部分驱逐内容的指令。
在示例303中,如示例302所述的主题任选地包括:其中,用于从高速缓存的保留部分驱逐内容的指令包括用于以下各项的指令:确定加载在高速缓存的保留部分中的现有指令的优先级;确定不活跃并且将需要被加载到高速缓存的保留部分中以处理分组的指令的优先级;以及当现有指令的优先级低于不活跃的指令的优先级时,驱逐加载在高速缓存的保留部分中的现有指令。
在示例304中,如示例302-303中任何一项或多项所述的主题任选地包括:其中,用于从高速缓存的保留部分驱逐内容的指令包括用于以下各项的指令:判定是否存在任何分组正在由加载在高速缓存的保留部分中的现有指令处理;以及当加载在高速缓存的保留部分中的现有指令不是正在被用来处理分组时,从高速缓存的保留部分驱逐现有指令。
在示例305中,如示例302-304中任何一项或多项所述的主题任选地包括:其中,用于从高速缓存的保留部分驱逐内容的指令包括用于以下各项的指令:检查加载在高速缓存的保留部分中的现有指令的存活时间(TTL)值;以及在该TTL值已过期之后,从高速缓存的保留部分驱逐现有指令。
在示例306中,如示例305所述的主题任选地包括:用于在分组被转发至高速缓存的保留部分以用于由现有指令处理时增加加载在高速缓存的保留部分中的现有指令的TTL值的指令。
在示例307中,如示例281-306中任何一项或多项所述的主题任选地包括:其中,计算单元是处理器核,并且其中,用于在处理元件不活跃时加载该处理元件的指令包括用于以下各项的指令:标识分组的统计学简档;基于该统计学简档向分组分派优先级;以及当分组的优先级高于高速缓存中的指令的优先级时,将指令和数据存储在处理器核的高速缓存中以处理该分组。
在示例308中,如示例307所述的主题任选地包括:其中,统计学简档通过使用人工智能过程被维护。
在示例309中,如示例307-308中任何一项或多项所述的主题任选地包括:其中,人工智能包括机器学习过程。
在示例310中,如示例307-309中任何一项或多项所述的主题任选地包括:其中,统计学简档通过使用分组处理直方图被维护。
在示例311中,如示例281-310中任何一项或多项所述的主题任选地包括:其中,计算单元是FPGA,并且其中,用于在处理元件不活跃时加载该处理元件的指令包括用于使得FPGA将程序加载到FPGA分区中的指令。
在示例312中,如示例311所述的主题任选地包括:其中,用于加载程序的指令包括用于与FPGA接口控制器进行交互的指令。
在示例313中,如示例312所述的主题任选地包括:其中,FPGA包括由FPGA控制的分区和由FPGA接口控制器控制的分区。
在示例314中,如示例313所述的主题任选地包括:其中,用于加载程序的指令包括用于在由FPGA控制的分区中加载程序的指令。
在示例315中,如示例313-314中任何一项或多项所述的主题任选地包括:其中,用于加载程序的指令包括用于在由FPGA接口控制器控制的分区中加载程序的指令。
在示例316中,如示例313-315中任何一项或多项所述的主题任选地包括:其中,FPGA接口控制器用于从由该FPGA接口控制器控制的分区卸载程序。
在示例317中,如示例316所述的主题任选地包括:其中,用于从由FPGA接口控制器控制的分区卸载程序的指令包括用于以下各项的指令:确定加载在由FPGA接口控制器控制的分区中的现有程序的优先级;确定不活跃并且将需要被加载到FPGA中以处理分组的程序的优先级;以及当现有程序的优先级低于不活跃的处理元件的程序的优先级时,对由FPGA接口控制器控制的分区中的现有程序中的至少一个进行重新配置。
在示例318中,如示例316-317中任何一项或多项所述的主题任选地包括:其中,用于从由FPGA接口控制器控制的分区卸载程序的指令包括用于以下各项的指令:判定是否存在任何分组正在由加载在由FPGA接口控制器控制的分区中的现有程序处理;以及当现有程序不是正在被用来处理分组时,从由FPGA接口控制器控制的分区卸载现有程序。
在示例319中,如示例316-318中任何一项或多项所述的主题任选地包括:其中,用于从由FPGA接口控制器控制的分区卸载程序的指令包括用于以下各项的指令:检查加载在由FPGA接口控制器控制的分区中的现有程序的存活时间(TTL)值;以及在该TTL值已过期之后,从由FPGA接口控制器控制的分区卸载现有程序。
在示例320中,如示例319所述的主题任选地包括:其中,当分组被转发至由FPGA接口控制器控制的分区以用于由现有程序处理时,FPGA接口控制器用于增加加载在由FPGA接口控制器控制的分区中的现有程序的TTL值。
在示例321中,如示例281-320中任何一项或多项所述的主题任选地包括:其中,计算单元是FPGA,并且其中,用于在处理元件不活跃时加载该处理元件的指令包括用于以下各项的指令:标识分组的统计学简档;基于该统计学简档向分组分派优先级;以及当分组的优先级高于FPGA中的现有程序的优先级时,利用程序来重新配置FPGA中的现有程序以处理分组。
在示例322中,如示例321所述的主题任选地包括:其中,统计学简档通过使用人工智能过程被维护。
在示例323中,如示例321-322中任何一项或多项所述的主题任选地包括:其中,人工智能包括机器学习过程。
在示例324中,如示例321-323中任何一项或多项所述的主题任选地包括:其中,统计学简档通过使用分组处理直方图被维护。
在示例325中,如示例281-324中任何一项或多项所述的主题任选地包括:其中,用于在处理元件不活跃时加载该处理元件的指令包括用于使用即时(JIT)机制将处理元件配置成用于处理分组的指令。
示例326是一种用于实现灵活分组调度的网络接口设备,该网络接口设备包括:分组解析器,该分组解析器用于:接收分组;从对分组进行分析来确定被用来处理该分组的对应的处理元件;以及将该分组存储在队列中;以及协调器电路,该协调器电路用于:判定处理元件在计算单元中是否活跃;以及基于处理元件在计算单元中是否活跃来修改队列中分组的优先级。
在示例327中,如示例326所述的主题任选地包括:其中,处理元件包括计算进程。
在示例328中,如示例326-327中任何一项或多项所述的主题任选地包括:其中,处理元件包括线程。
在示例329中,如示例326-328中任何一项或多项所述的主题任选地包括:其中,处理元件包括虚拟机。
在示例330中,如示例326-329中任何一项或多项所述的主题任选地包括:其中,处理元件包括现场可编程门阵列(FPGA)程序中的程序。
在示例331中,如示例326-330中任何一项或多项所述的主题任选地包括:其中,计算单元包括中央处理单元(CPU)。
在示例332中,如示例326-331中任何一项或多项所述的主题任选地包括:其中,计算单元包括处理器核。
在示例333中,如示例326-332中任何一项或多项所述的主题任选地包括:其中,计算单元包括CPU复合体。
在示例334中,如示例326-333中任何一项或多项所述的主题任选地包括:其中,计算单元包括现场可编程门阵列(FPGA)。
在示例335中,如示例326-334中任何一项或多项所述的主题任选地包括:其中,计算单元包括图形处理单元(GPU)。
在示例336中,如示例326-335中任何一项或多项所述的主题任选地包括:其中,为了确定被用来处理分组的对应的处理元件,分组解析器用于使用TCP卸载引擎来检查该分组并标识该对应的处理元件。
在示例337中,如示例326-336中任何一项或多项所述的主题任选地包括:其中,为了判定处理元件在计算单元中是否活跃,协调器电路用于与计算单元对接,以判定该处理元件是否活跃。
在示例338中,如示例337所述的主题任选地包括:其中,计算单元是处理器核,并且其中,为了与该计算单元对接,协调器电路用于接收对由该计算单元操作的高速缓存的内容的指示。
在示例339中,如示例338所述的主题任选地包括:其中,对高速缓存的内容的指示由存储器管理单元(MMU)提供。
在示例340中,如示例337-339中任何一项或多项所述的主题任选地包括:其中,计算单元是FPGA,并且其中,为了与计算单元对接,协调器电路用于与FPGA接口进行通信以判定处理元件在计算单元中是否活跃。
在示例341中,如示例340所述的主题任选地包括:其中,FPGA接口维护哪些FPGA程序已经被加载到FPGA中的记录。
在示例342中,如示例326-341中任何一项或多项所述的主题任选地包括:其中,为了基于处理元件在计算单元中是否活跃来修改队列中分组的优先级,协调器电路用于在处理元件在计算单元中活跃时提高该分组的优先级。
在示例343中,如示例342所述的主题任选地包括:其中,为了提高分组的优先级,协调器电路用于将处理元件活跃与从以下各项的列表选择的至少两个其他因子包括在一起:分组优先级、循环次序、承诺信息速率、以及处理元件存活时间值。
在示例344中,如示例342-343中任何一项或多项所述的主题任选地包括:其中,为了判定处理元件在计算单元中是否活跃,协调器电路用于与计算单元对接,以判定该处理元件是否活跃。
在示例345中,如示例344所述的主题任选地包括:其中,计算单元是处理器核,并且其中,为了与该计算单元对接,协调器电路用于接收对由该计算单元操作的高速缓存的内容的指示。
在示例346中,如示例345所述的主题任选地包括:其中,对高速缓存的内容的指示由存储器管理单元(MMU)提供。
在示例347中,如示例344-346中任何一项或多项所述的主题任选地包括:其中,计算单元是FPGA,并且其中,为了与计算单元对接,协调器电路用于与FPGA接口进行通信以判定处理元件在计算单元中是否活跃。
在示例348中,如示例347所述的主题任选地包括:其中,FPGA接口维护哪些FPGA程序已经被加载到FPGA中的记录。
在示例349中,如示例326-348中任何一项或多项所述的主题任选地包括:其中,为了基于处理元件在计算单元中是否活跃来修改队列中分组的优先级,协调器电路用于在处理元件在计算单元中不活跃时降低该分组的优先级。
在示例350中,如示例349所述的主题任选地包括:其中,为了降低分组的优先级,协调器电路用于将处理元件不活跃与从以下各项的列表选择的至少两个其他因子包括在一起:分组优先级、循环次序、承诺信息速率、以及处理元件存活时间值。
在示例351中,如示例326-350中任何一项或多项所述的主题任选地包括:其中,为了基于处理元件在计算单元中是否活跃来修改队列中分组的优先级,协调器电路用于:当处理元件在计算单元中不活跃时,判定是否从队列中丢弃该分组;以及基于该判定而从队列中丢弃该分组。
在示例352中,如示例351所述的主题任选地包括:其中,为了判定是否从队列中丢弃分组,协调器电路用于将处理元件不活跃与从以下各项的列表选择的至少两个其他因子包括在一起:逆分组优先级、循环次序、逆承诺信息速率、以及处理元件存活时间值。
示例353是一种实现灵活分组调度的方法,该方法包括:接收分组;从对分组进行分析来确定被用来处理该分组的对应的处理元件;将该分组存储在队列中;判定处理元件在计算单元中是否活跃;以及基于处理元件在计算单元中是否活跃来修改队列中分组的优先级。
在示例354中,如示例353所述的主题任选地包括:其中,处理元件包括计算进程。
在示例355中,如示例353-354中任何一项或多项所述的主题任选地包括:其中,处理元件包括线程。
在示例356中,如示例353-355中任何一项或多项所述的主题任选地包括:其中,处理元件包括虚拟机。
在示例357中,如示例353-356中任何一项或多项所述的主题任选地包括:其中,处理元件包括现场可编程门阵列(FPGA)程序中的程序。
在示例358中,如示例353-357中任何一项或多项所述的主题任选地包括:其中,计算单元包括中央处理单元(CPU)。
在示例359中,如示例353-358中任何一项或多项所述的主题任选地包括:其中,计算单元包括处理器核。
在示例360中,如示例353-359中任何一项或多项所述的主题任选地包括:其中,计算单元包括CPU复合体。
在示例361中,如示例353-360中任何一项或多项所述的主题任选地包括:其中,计算单元包括现场可编程门阵列(FPGA)。
在示例362中,如示例353-361中任何一项或多项所述的主题任选地包括:其中,计算单元包括图形处理单元(GPU)。
在示例363中,如示例353-362中任何一项或多项所述的主题任选地包括:其中,确定被用来处理分组的对应的处理元件包括使用TCP卸载引擎来检查该分组并标识该对应的处理元件。
在示例364中,如示例353-363中任何一项或多项所述的主题任选地包括:其中,判定处理元件在计算单元中是否活跃包括与计算单元对接以判定该处理元件是否活跃。
在示例365中,如示例364所述的主题任选地包括:其中,计算单元是处理器核,并且其中,与该计算单元对接包括接收对由该计算单元操作的高速缓存的内容的指示。
在示例366中,如示例365所述的主题任选地包括:其中,对高速缓存的内容的指示由存储器管理单元(MMU)提供。
在示例367中,如示例364-366中任何一项或多项所述的主题任选地包括:其中,计算单元是FPGA,并且其中,与计算单元对接包括与FPGA接口进行通信以判定处理元件在计算单元中是否活跃。
在示例368中,如示例367所述的主题任选地包括:其中,FPGA接口维护哪些FPGA程序已经被加载到FPGA中的记录。
在示例369中,如示例353-368中任何一项或多项所述的主题任选地包括:其中,基于处理元件在计算单元中是否活跃来修改队列中分组的优先级包括在处理元件在计算单元中活跃时提高该分组的优先级。
在示例370中,如示例369所述的主题任选地包括:其中,提高分组的优先级包括将处理元件活跃与从以下各项的列表选择的至少两个其他因子包括在一起:分组优先级、循环次序、承诺信息速率、以及处理元件存活时间值。
在示例371中,如示例353-370中任何一项或多项所述的主题任选地包括:其中,基于处理元件在计算单元中是否活跃来修改队列中分组的优先级包括在处理元件在计算单元中不活跃时降低该分组的优先级。
在示例372中,如示例371所述的主题任选地包括:其中,降低分组的优先级包括将处理元件不活跃与从以下各项的列表选择的至少两个其他因子包括在一起:分组优先级、循环次序、承诺信息速率、以及处理元件存活时间值。
在示例373中,如示例353-372中任何一项或多项所述的主题任选地包括:其中,基于处理元件在计算单元中是否活跃来修改队列中分组的优先级包括:当处理元件在计算单元中不活跃时,判定是否从队列中丢弃该分组;以及基于该判定而从队列中丢弃该分组。
在示例374中,如示例373所述的主题任选地包括:其中,判定是否从队列中丢弃分组包括将处理元件不活跃与从以下各项的列表选择的至少两个其他因子包括在一起:逆分组优先级、循环次序、逆承诺信息速率、以及处理元件存活时间值。
示例375是包括指令的至少一种机器可读介质,这些指令在由机器执行时使得机器执行如示例353-374所述的方法中的任一项的操作。
示例376是一种包括用于执行如示例353-374所述的方法中的任一项的装置的设备。
示例377是一种用于实现灵活分组调度的设备,该设备包括:用于接收分组的装置;用于从对分组进行分析来确定被用来处理该分组的对应的处理元件的装置;用于将该分组存储在队列中的装置;用于判定处理元件在计算单元中是否活跃的装置;以及用于基于处理元件在计算单元中是否活跃来修改队列中分组的优先级的装置。
在示例378中,如示例377所述的主题任选地包括:其中,处理元件包括计算进程。
在示例379中,如示例377-378中任何一项或多项所述的主题任选地包括:其中,处理元件包括线程。
在示例380中,如示例377-379中任何一项或多项所述的主题任选地包括:其中,处理元件包括虚拟机。
在示例381中,如示例377-380中任何一项或多项所述的主题任选地包括:其中,处理元件包括现场可编程门阵列(FPGA)程序中的程序。
在示例382中,如示例377-381中任何一项或多项所述的主题任选地包括:其中,计算单元包括中央处理单元(CPU)。
在示例383中,如示例377-382中任何一项或多项所述的主题任选地包括:其中,计算单元包括处理器核。
在示例384中,如示例377-383中任何一项或多项所述的主题任选地包括:其中,计算单元包括CPU复合体。
在示例385中,如示例377-384中任何一项或多项所述的主题任选地包括:其中,计算单元包括现场可编程门阵列(FPGA)。
在示例386中,如示例377-385中任何一项或多项所述的主题任选地包括:其中,计算单元包括图形处理单元(GPU)。
在示例387中,如示例377-386中任何一项或多项所述的主题任选地包括:其中,用于确定被用来处理分组的对应的处理元件的装置包括用于使用TCP卸载引擎来检查该分组并标识该对应的处理元件的装置。
在示例388中,如示例377-387中任何一项或多项所述的主题任选地包括:其中,用于判定处理元件在计算单元中是否活跃的装置包括用于与计算单元对接以判定该处理元件是否活跃的装置。
在示例389中,如示例388所述的主题任选地包括:其中,计算单元是处理器核,并且其中,用于与该计算单元对接的装置包括用于接收对由该计算单元操作的高速缓存的内容的指示的装置。
在示例390中,如示例389所述的主题任选地包括:其中,对高速缓存的内容的指示由存储器管理单元(MMU)提供。
在示例391中,如示例388-390中任何一项或多项所述的主题任选地包括:其中,计算单元是FPGA,并且其中,用于与计算单元对接的装置包括用于与FPGA接口进行通信以判定处理元件在计算单元中是否活跃的装置。
在示例392中,如示例391所述的主题任选地包括:其中,FPGA接口维护哪些FPGA程序已经被加载到FPGA中的记录。
在示例393中,如示例377-392中任何一项或多项所述的主题任选地包括:其中,用于基于处理元件在计算单元中是否活跃来修改队列中分组的优先级的装置包括用于在处理元件在计算单元中活跃时提高该分组的优先级的装置。
在示例394中,如示例393所述的主题任选地包括:其中,用于提高分组的优先级的装置包括用于将处理元件活跃与从以下各项的列表选择的至少两个其他因子包括在一起的装置:分组优先级、循环次序、承诺信息速率、以及处理元件存活时间值。
在示例395中,如示例377-394中任何一项或多项所述的主题任选地包括:其中,用于基于处理元件在计算单元中是否活跃来修改队列中分组的优先级的装置包括用于在处理元件在计算单元中不活跃时降低该分组的优先级的装置。
在示例396中,如示例395所述的主题任选地包括:其中,用于降低分组的优先级的装置包括用于将处理元件不活跃与从以下各项的列表选择的至少两个其他因子包括在一起的装置:分组优先级、循环次序、承诺信息速率、以及处理元件存活时间值。
在示例397中,如示例377-396中任何一项或多项所述的主题任选地包括:其中,用于基于处理元件在计算单元中是否活跃来修改队列中分组的优先级的装置包括:用于在处理元件在计算单元中不活跃时判定是否从队列中丢弃该分组的装置;以及用于基于该判定而从队列中丢弃该分组的装置。
在示例398中,如示例397所述的主题任选地包括:其中,用于判定是否从队列中丢弃分组的装置包括用于将处理元件不活跃与从以下各项的列表选择的至少两个其他因子包括在一起的装置:逆分组优先级、循环次序、逆承诺信息速率、以及处理元件存活时间值。
示例399是至少一种机器可读介质,包括用于实现灵活分组调度的指令,这些指令在由机器执行时使得该机器用于:接收分组;从对分组进行分析来确定被用来处理该分组的对应的处理元件;将该分组存储在队列中;判定处理元件在计算单元中是否活跃;以及基于处理元件在计算单元中是否活跃来修改队列中分组的优先级。
在示例400中,如示例399所述的主题任选地包括:其中,处理元件包括计算进程。
在示例401中,如示例399-400中任何一项或多项所述的主题任选地包括:其中,处理元件包括线程。
在示例402中,如示例399-401中任何一项或多项所述的主题任选地包括:其中,处理元件包括虚拟机。
在示例403中,如示例399-402中任何一项或多项所述的主题任选地包括:其中,处理元件包括现场可编程门阵列(FPGA)程序中的程序。
在示例404中,如示例399-403中任何一项或多项所述的主题任选地包括:其中,计算单元包括中央处理单元(CPU)。
在示例405中,如示例399-404中任何一项或多项所述的主题任选地包括:其中,计算单元包括处理器核。
在示例406中,如示例399-405中任何一项或多项所述的主题任选地包括:其中,计算单元包括CPU复合体。
在示例407中,如示例399-406中任何一项或多项所述的主题任选地包括:其中,计算单元包括现场可编程门阵列(FPGA)。
在示例408中,如示例399-407中任何一项或多项所述的主题任选地包括:其中,计算单元包括图形处理单元(GPU)。
在示例409中,如示例399-408中任何一项或多项所述的主题任选地包括:其中,用于确定被用来处理分组的对应的处理元件的指令包括用于使用TCP卸载引擎来检查该分组并标识该对应的处理元件的指令。
在示例410中,如示例399-409中任何一项或多项所述的主题任选地包括:其中,用于判定处理元件在计算单元中是否活跃的指令包括用于与计算单元对接以判定该处理元件是否活跃的指令。
在示例411中,如示例410所述的主题任选地包括:其中,计算单元是处理器核,并且其中,用于与该计算单元对接的指令包括用于接收对由该计算单元操作的高速缓存的内容的指示的指令。
在示例412中,如示例411所述的主题任选地包括:其中,对高速缓存的内容的指示由存储器管理单元(MMU)提供。
在示例413中,如示例410-412中任何一项或多项所述的主题任选地包括:其中,计算单元是FPGA,并且其中,用于与计算单元对接的指令包括用于与FPGA接口进行通信以判定处理元件在计算单元中是否活跃的指令。
在示例414中,如示例413所述的主题任选地包括:其中,FPGA接口维护哪些FPGA程序已经被加载到FPGA中的记录。
在示例415中,如示例399-414中任何一项或多项所述的主题任选地包括:其中,用于基于处理元件在计算单元中是否活跃来修改队列中分组的优先级的指令包括用于在处理元件在计算单元中活跃时提高该分组的优先级的指令。
在示例416中,如示例415所述的主题任选地包括:其中,用于提高分组的优先级的指令包括用于将处理元件活跃与从以下各项的列表选择的至少两个其他因子包括在一起的指令:分组优先级、循环次序、承诺信息速率、以及处理元件存活时间值。
在示例417中,如示例399-416中任何一项或多项所述的主题任选地包括:其中,用于基于处理元件在计算单元中是否活跃来修改队列中分组的优先级的指令包括用于在处理元件在计算单元中不活跃时降低该分组的优先级的指令。
在示例418中,如示例417所述的主题任选地包括:其中,降低分组的优先级包括将处理元件不活跃与从以下各项的列表选择的至少两个其他因子包括在一起:分组优先级、循环次序、承诺信息速率、以及处理元件存活时间值。
在示例419中,如示例399-418中任何一项或多项所述的主题任选地包括:其中,用于基于处理元件在计算单元中是否活跃来修改队列中分组的优先级的指令包括用于以下各项的指令:当处理元件在计算单元中不活跃时,判定是否从队列中丢弃该分组;以及基于该判定而从队列中丢弃该分组。
在示例420中,如示例419所述的主题任选地包括:其中,用于判定是否从队列中丢弃分组的指令包括用于将处理元件不活跃与从以下各项的列表选择的至少两个其他因子包括在一起的指令:逆分组优先级、循环次序、逆承诺信息速率、以及处理元件存活时间值。
示例421是一种用于实现基于时间的灵活分组调度的网络接口设备,该网络接口设备包括:分组解析器,该分组解析器用于:从对分组进行分析来确定被用来处理该分组的对应的处理元件;以及将该分组存储在队列中;以及协调器电路,该协调器电路用于:确定处理元件何时在计算单元中活跃的定时;以及基于处理元件何时在计算单元中活跃的定时来修改队列中分组的优先级。
在示例422中,如示例421所述的主题任选地包括:其中,处理元件包括计算进程。
在示例423中,如示例421-422中任何一项或多项所述的主题任选地包括:其中,处理元件包括线程。
在示例424中,如示例421-423中任何一项或多项所述的主题任选地包括:其中,处理元件包括虚拟机。
在示例425中,如示例421-424中任何一项或多项所述的主题任选地包括:其中,处理元件包括现场可编程门阵列(FPGA)程序中的程序。
在示例426中,如示例421-425中任何一项或多项所述的主题任选地包括:其中,计算单元包括中央处理单元(CPU)。
在示例427中,如示例421-426中任何一项或多项所述的主题任选地包括:其中,计算单元包括处理器核。
在示例428中,如示例421-427中任何一项或多项所述的主题任选地包括:其中,计算单元包括CPU复合体。
在示例429中,如示例421-428中任何一项或多项所述的主题任选地包括:其中,计算单元包括现场可编程门阵列(FPGA)。
在示例430中,如示例421-429中任何一项或多项所述的主题任选地包括:其中,计算单元包括图形处理单元(GPU)。
在示例431中,如示例421-430中任何一项或多项所述的主题任选地包括:其中,为了确定被用来处理分组的对应的处理元件,分组解析器用于使用TCP卸载引擎来检查该分组并标识该对应的处理元件。
在示例432中,如示例421-431中任何一项或多项所述的主题任选地包括:其中,为了确定处理元件何时在计算单元中活跃的定时,使协调器电路与计算单元同步。
在示例433中,如示例432所述的主题任选地包括:其中,使用下列各项中的至少一项使协调器电路与计算单元同步:IEEE 1588精确时间协议、IEEE 802.1时间敏感型联网、同步以太网、网络时间协议、或精确时间测量。
在示例434中,如示例421-433中任何一项或多项所述的主题任选地包括:其中,为了确定处理元件何时在计算单元中活跃的定时,协调器电路用于与计算单元对接,以确定该处理元件在何时活跃。
在示例435中,如示例434所述的主题任选地包括:其中,计算单元是处理器核,并且其中,为了与该计算单元对接,协调器电路用于接收对由该计算单元操作的高速缓存的内容的指示。
在示例436中,如示例435所述的主题任选地包括:其中,对高速缓存的内容的指示由存储器管理单元(MMU)提供。
在示例437中,如示例434-436中任何一项或多项所述的主题任选地包括:其中,计算单元是FPGA,并且其中,为了与计算单元对接,协调器电路用于与FPGA接口进行通信以判定处理元件在计算单元中是否活跃。
在示例438中,如示例437所述的主题任选地包括:其中,FPGA接口维护哪些FPGA程序已经被加载到FPGA中的记录。
在示例439中,如示例421-438中任何一项或多项所述的主题任选地包括:其中,为了基于处理元件何时在计算单元中活跃的定时来修改队列中分组的优先级,协调器电路用于在处理元件在计算单元中活跃或马上将在计算单元中活跃时提高该分组的优先级。
在示例440中,如示例439所述的主题任选地包括:其中,为了提高分组的优先级,协调器电路用于将处理元件活跃或马上将活跃与从以下各项的列表中选择的至少一个因子包括在一起:分组优先级和循环次序。
在示例441中,如示例439-440中任何一项或多项所述的主题任选地包括:其中,为了确定处理元件何时在计算单元中活跃的定时,协调器电路用于与计算单元对接,以确定该处理元件在何时活跃。
在示例442中,如示例441所述的主题任选地包括:其中,计算单元是处理器核,并且其中,为了与该计算单元对接,协调器电路用于接收对由该计算单元操作的高速缓存的内容的指示。
在示例443中,如示例442所述的主题任选地包括:其中,对高速缓存的内容的指示由存储器管理单元(MMU)提供。
在示例444中,如示例441-443中任何一项或多项所述的主题任选地包括:其中,计算单元是FPGA,并且其中,为了与计算单元对接,协调器电路用于与FPGA接口进行通信以确定处理元件何时在计算单元中活跃。
在示例445中,如示例444所述的主题任选地包括:其中,FPGA接口维护哪些FPGA程序已经被加载到FPGA中的记录。
在示例446中,如示例421-445中任何一项或多项所述的主题任选地包括:其中,为了基于处理元件何时在计算单元中活跃的定时来修改队列中分组的优先级,协调器电路用于在处理元件在计算单元中不活跃或马上将在计算单元中不活跃时降低该分组的优先级。
在示例447中,如示例446所述的主题任选地包括:其中,为了降低分组的优先级,协调器电路用于将处理元件不活跃与从以下各项的列表中选择的至少一个因子包括在一起:分组优先级和循环次序。
在示例448中,如示例421-447中任何一项或多项所述的主题任选地包括:其中,为了基于处理元件在计算单元中是否活跃来修改队列中分组的优先级,协调器电路用于:当处理元件在计算单元中不活跃或马上将在计算单元中不活跃时,判定是否从队列中丢弃该分组;以及基于该判定而从队列中丢弃该分组。
在示例449中,如示例448所述的主题任选地包括:其中,为了判定是否从队列中丢弃分组,协调器电路用于将处理元件不活跃与从以下各项的列表中选择的至少一个因子包括在一起:逆分组优先级和循环次序。
示例450是一种实现基于时间的灵活分组调度的方法,该方法包括:从对分组进行分析来确定被用来处理该分组的对应的处理元件;将该分组存储在队列中;确定处理元件何时在计算单元中活跃的定时;以及基于处理元件何时在计算单元中活跃的定时来修改队列中分组的优先级。
在示例451中,如示例450所述的主题任选地包括:其中,处理元件包括计算进程。
在示例452中,如示例450-451中任何一项或多项所述的主题任选地包括:其中,处理元件包括线程。
在示例453中,如示例450-452中任何一项或多项所述的主题任选地包括:其中,处理元件包括虚拟机。
在示例454中,如示例450-453中任何一项或多项所述的主题任选地包括:其中,处理元件包括现场可编程门阵列(FPGA)程序中的程序。
在示例455中,如示例450-454中任何一项或多项所述的主题任选地包括:其中,计算单元包括中央处理单元(CPU)。
在示例456中,如示例450-455中任何一项或多项所述的主题任选地包括:其中,计算单元包括处理器核。
在示例457中,如示例450-456中任何一项或多项所述的主题任选地包括:其中,计算单元包括CPU复合体。
在示例458中,如示例450-457中任何一项或多项所述的主题任选地包括:其中,计算单元包括现场可编程门阵列(FPGA)。
在示例459中,如示例450-458中任何一项或多项所述的主题任选地包括:其中,计算单元包括图形处理单元(GPU)。
在示例460中,如示例450-459中任何一项或多项所述的主题任选地包括:其中,确定被用来处理分组的对应的处理元件包括使用TCP卸载引擎来检查该分组并标识该对应的处理元件。
在示例461中,如示例450-460中任何一项或多项所述的主题任选地包括:其中,确定处理元件何时在计算单元中活跃的定时包括与计算单元进行同步。
在示例462中,如示例461所述的主题任选地包括:其中,通过使用下列各项中的至少一项来执行与计算单元进行同步的操作:IEEE 1588精确时间协议、IEEE 802.1时间敏感型联网、同步以太网、网络时间协议、或精确时间测量。
在示例463中,如示例450-462中任何一项或多项所述的主题任选地包括:其中,确定处理元件何时在计算单元中活跃的定时包括与计算单元对接以确定该处理元件何时活跃。
在示例464中,如示例463所述的主题任选地包括:其中,计算单元是处理器核,并且其中,与该计算单元对接包括接收对由该计算单元操作的高速缓存的内容的指示。
在示例465中,如示例464所述的主题任选地包括:其中,对高速缓存的内容的指示由存储器管理单元(MMU)提供。
在示例466中,如示例463-465中任何一项或多项所述的主题任选地包括:其中,计算单元是FPGA,并且其中,与计算单元对接包括与FPGA接口进行通信以判定处理元件在计算单元中是否活跃。
在示例467中,如示例466所述的主题任选地包括:其中,FPGA接口维护哪些FPGA程序已经被加载到FPGA中的记录。
在示例468中,如示例450-467中任何一项或多项所述的主题任选地包括:其中,基于处理元件何时在计算单元中活跃的定时来修改队列中分组的优先级包括在处理元件在计算单元中活跃或马上将在计算单元中活跃时提高该分组的优先级。
在示例469中,如示例468所述的主题任选地包括:其中,提高分组的优先级包括将处理元件活跃或马上将活跃与从以下各项的列表中选择的至少一个因子包括在一起:分组优先级和循环次序。
在示例470中,如示例468-469中任何一项或多项所述的主题任选地包括:其中,确定处理元件何时在计算单元中活跃的定时包括与计算单元对接以确定该处理元件何时活跃。
在示例471中,如示例470所述的主题任选地包括:其中,计算单元是处理器核,并且其中,与该计算单元对接包括接收对由该计算单元操作的高速缓存的内容的指示。
在示例472中,如示例471所述的主题任选地包括:其中,对高速缓存的内容的指示由存储器管理单元(MMU)提供。
在示例473中,如示例470-472中任何一项或多项所述的主题任选地包括:其中,计算单元是FPGA,并且其中,与计算单元对接包括与FPGA接口进行通信以确定处理元件何时在计算单元中活跃。
在示例474中,如示例473所述的主题任选地包括:其中,FPGA接口维护哪些FPGA程序已经被加载到FPGA中的记录。
在示例475中,如示例450-474中任何一项或多项所述的主题任选地包括:其中,基于处理元件何时在计算单元中活跃的定时来修改队列中分组的优先级包括在处理元件在计算单元中不活跃或马上将在计算单元中不活跃时降低该分组的优先级。
在示例476中,如示例475所述的主题任选地包括:其中,降低分组的优先级包括将处理元件不活跃与从以下各项的列表中选择的至少一个因子包括在一起:分组优先级和循环次序。
在示例477中,如示例450-476中任何一项或多项所述的主题任选地包括:其中,基于处理元件在计算单元中是否活跃来修改队列中分组的优先级包括:当处理元件在计算单元中不活跃或马上将在计算单元中不活跃时,判定是否从队列中丢弃该分组;以及基于该判定而从队列中丢弃该分组。
在示例478中,如示例477所述的主题任选地包括:其中,判定是否从队列丢弃分组包括将处理元件不活跃或马上将不活跃与从以下各项的列表选择的至少一个因子包括在一起:逆分组优先级和循环次序。
示例479是包括指令的至少一种机器可读介质,这些指令在由机器执行时使得机器执行如示例450-478所述的方法中的任一项的操作。
示例480是一种包括用于执行如示例450-478所述的方法中的任一项的装置的设备。
示例481是一种用于实现基于时间的灵活分组调度的设备,该设备包括:用于从对分组进行分析来确定被用来处理该分组的对应的处理元件的装置;用于将该分组存储在队列中的装置;用于确定处理元件何时在计算单元中活跃的定时的装置;以及用于基于处理元件何时在计算单元中活跃的定时来修改队列中分组的优先级的装置。
在示例482中,如示例481所述的主题任选地包括:其中,处理元件包括计算进程。
在示例483中,如示例481-482中任何一项或多项所述的主题任选地包括:其中,处理元件包括线程。
在示例484中,如示例481-483中任何一项或多项所述的主题任选地包括:其中,处理元件包括虚拟机。
在示例485中,如示例481-484中任何一项或多项所述的主题任选地包括:其中,处理元件包括现场可编程门阵列(FPGA)程序中的程序。
在示例486中,如示例481-485中任何一项或多项所述的主题任选地包括:其中,计算单元包括中央处理单元(CPU)。
在示例487中,如示例481-486中任何一项或多项所述的主题任选地包括:其中,计算单元包括处理器核。
在示例488中,如示例481-487中任何一项或多项所述的主题任选地包括:其中,计算单元包括CPU复合体。
在示例489中,如示例481-488中任何一项或多项所述的主题任选地包括:其中,计算单元包括现场可编程门阵列(FPGA)。
在示例490中,如示例481-489中任何一项或多项所述的主题任选地包括:其中,计算单元包括图形处理单元(GPU)。
在示例491中,如示例481-490中任何一项或多项所述的主题任选地包括:其中,用于确定被用来处理分组的对应的处理元件的装置包括用于使用TCP卸载引擎来检查该分组并标识该对应的处理元件的装置。
在示例492中,如示例481-491中任何一项或多项所述的主题任选地包括:其中,用于确定处理元件何时在计算单元中活跃的定时的装置包括用于与计算单元进行同步的装置。
在示例493中,如示例492所述的主题任选地包括:其中,通过使用下列各项中的至少一项来执行与计算单元进行同步的操作:IEEE 1588精确时间协议、IEEE 802.1时间敏感型联网、同步以太网、网络时间协议、或精确时间测量。
在示例494中,如示例481-493中任何一项或多项所述的主题任选地包括:其中,用于确定处理元件何时在计算单元中活跃的定时的装置包括用于与计算单元对接以确定该处理元件何时活跃的装置。
在示例495中,如示例494所述的主题任选地包括:其中,计算单元是处理器核,并且其中,用于与该计算单元对接的装置包括用于接收对由该计算单元操作的高速缓存的内容的指示的装置。
在示例496中,如示例495所述的主题任选地包括:其中,对高速缓存的内容的指示由存储器管理单元(MMU)提供。
在示例497中,如示例494-496中任何一项或多项所述的主题任选地包括:其中,计算单元是FPGA,并且其中,用于与计算单元对接的装置包括用于与FPGA接口进行通信以判定处理元件在计算单元中是否活跃的装置。
在示例498中,如示例497所述的主题任选地包括:其中,FPGA接口维护哪些FPGA程序已经被加载到FPGA中的记录。
在示例499中,如示例481-498中任何一项或多项所述的主题任选地包括:其中,用于基于处理元件何时在计算单元中活跃的定时来修改队列中分组的优先级的装置包括用于在处理元件在计算单元中活跃或马上将在计算单元中活跃时提高该分组的优先级的装置。
在示例500中,如示例499所述的主题任选地包括:其中,用于提高分组的优先级的装置包括用于将处理元件活跃或马上将活跃与从以下各项的列表中选择的至少一个因子包括在一起的装置:分组优先级和循环次序。
在示例501中,如示例499-500中任何一项或多项所述的主题任选地包括:其中,用于确定处理元件何时在计算单元中活跃的定时的装置包括用于与计算单元对接以确定该处理元件何时活跃的装置。
在示例502中,如示例501所述的主题任选地包括:其中,计算单元是处理器核,并且其中,用于与该计算单元对接的装置包括用于接收对由该计算单元操作的高速缓存的内容的指示的装置。
在示例503中,如示例502所述的主题任选地包括:其中,对高速缓存的内容的指示由存储器管理单元(MMU)提供。
在示例504中,如示例501-503中任何一项或多项所述的主题任选地包括:其中,计算单元是FPGA,并且其中,用于与计算单元对接的装置包括用于与FPGA接口进行通信以确定处理元件何时在计算单元中活跃的装置。
在示例505中,如示例504所述的主题任选地包括:其中,FPGA接口维护哪些FPGA程序已经被加载到FPGA中的记录。
在示例506中,如示例481-505中任何一项或多项所述的主题任选地包括:其中,用于基于处理元件何时在计算单元中活跃的定时来修改队列中分组的优先级的装置包括用于在处理元件在计算单元中不活跃或马上将在计算单元中不活跃时降低该分组的优先级的装置。
在示例507中,如示例506所述的主题任选地包括:其中,用于降低分组的优先级的装置包括用于将处理元件不活跃与从以下各项的列表中选择的至少一个因子包括在一起的装置:分组优先级和循环次序。
在示例508中,如示例481-507中任何一项或多项所述的主题任选地包括:其中,用于基于处理元件在计算单元中是否活跃来修改队列中分组的优先级的装置包括:用于在处理元件在计算单元中不活跃或马上将在计算单元中不活跃时判定是否从队列中丢弃该分组的装置;以及用于基于该判定而从队列中丢弃该分组的装置。
在示例509中,如示例508所述的主题任选地包括:其中,用于判定是否从队列丢弃分组的装置包括用于将处理元件不活跃或马上将不活跃与从以下各项的列表选择的至少一个因子包括在一起的装置:逆分组优先级和循环次序。
示例510是至少一种机器可读介质,包括用于实现基于时间的灵活分组调度的指令,这些指令在由机器执行时使得该机器用于:从对分组进行分析来确定被用来处理该分组的对应的处理元件;将该分组存储在队列中;确定处理元件何时在计算单元中活跃的定时;以及基于处理元件何时在计算单元中活跃的定时来修改队列中分组的优先级。
在示例511中,如示例510所述的主题任选地包括:其中,处理元件包括计算进程。
在示例512中,如示例510-511中任何一项或多项所述的主题任选地包括:其中,处理元件包括线程。
在示例513中,如示例510-512中任何一项或多项所述的主题任选地包括:其中,处理元件包括虚拟机。
在示例514中,如示例510-513中任何一项或多项所述的主题任选地包括:其中,处理元件包括现场可编程门阵列(FPGA)程序中的程序。
在示例515中,如示例510-514中任何一项或多项所述的主题任选地包括:其中,计算单元包括中央处理单元(CPU)。
在示例516中,如示例510-515中任何一项或多项所述的主题任选地包括:其中,计算单元包括处理器核。
在示例517中,如示例510-516中任何一项或多项所述的主题任选地包括:其中,计算单元包括CPU复合体。
在示例518中,如示例510-517中任何一项或多项所述的主题任选地包括:其中,计算单元包括现场可编程门阵列(FPGA)。
在示例519中,如示例510-518中任何一项或多项所述的主题任选地包括:其中,计算单元包括图形处理单元(GPU)。
在示例520中,如示例510-519中任何一项或多项所述的主题任选地包括:其中,用于确定被用来处理分组的对应的处理元件的指令包括用于使用TCP卸载引擎来检查该分组并标识该对应的处理元件的指令。
在示例521中,如示例510-520中任何一项或多项所述的主题任选地包括:其中,用于确定处理元件何时在计算单元中活跃的定时的指令包括用于与计算单元进行同步的指令。
在示例522中,如示例521所述的主题任选地包括:其中,通过使用下列各项中的至少一项来执行与计算单元进行同步的操作:IEEE 1588精确时间协议、IEEE 802.1时间敏感型联网、同步以太网、网络时间协议、或精确时间测量。
在示例523中,如示例510-522中任何一项或多项所述的主题任选地包括:其中,用于确定处理元件何时在计算单元中活跃的定时的指令包括用于与计算单元对接以确定该处理元件何时活跃的指令。
在示例524中,如示例523所述的主题任选地包括:其中,计算单元是处理器核,并且其中,用于与该计算单元对接的指令包括用于接收对由该计算单元操作的高速缓存的内容的指示的指令。
在示例525中,如示例524所述的主题任选地包括:其中,对高速缓存的内容的指示由存储器管理单元(MMU)提供。
在示例526中,如示例523-525中任何一项或多项所述的主题任选地包括:其中,计算单元是FPGA,并且其中,用于与计算单元对接的指令包括用于与FPGA接口进行通信以判定处理元件在计算单元中是否活跃的指令。
在示例527中,如示例526所述的主题任选地包括:其中,FPGA接口维护哪些FPGA程序已经被加载到FPGA中的记录。
在示例528中,如示例510-527中任何一项或多项所述的主题任选地包括:其中,用于基于处理元件何时在计算单元中活跃的定时来修改队列中分组的优先级的指令包括用于在处理元件在计算单元中活跃或马上将在计算单元中活跃时提高该分组的优先级的指令。
在示例529中,如示例528所述的主题任选地包括:其中,用于提高分组的优先级的指令包括用于将处理元件活跃或马上将活跃与从以下各项的列表中选择的至少一个因子包括在一起的指令:分组优先级和循环次序。
在示例530中,如示例528-529中任何一项或多项所述的主题任选地包括:其中,用于确定处理元件何时在计算单元中活跃的定时的指令包括用于与计算单元对接以确定该处理元件何时活跃的指令。
在示例531中,如示例530所述的主题任选地包括:其中,计算单元是处理器核,并且其中,用于与该计算单元对接的指令包括用于接收对由该计算单元操作的高速缓存的内容的指示的指令。
在示例532中,如示例531所述的主题任选地包括:其中,对高速缓存的内容的指示由存储器管理单元(MMU)提供。
在示例533中,如示例530-532中任何一项或多项所述的主题任选地包括:其中,计算单元是FPGA,并且其中,用于与计算单元对接的指令包括用于与FPGA接口进行通信以确定处理元件何时在计算单元中活跃的指令。
在示例534中,如示例533所述的主题任选地包括:其中,FPGA接口维护哪些FPGA程序已经被加载到FPGA中的记录。
在示例535中,如示例510-534中任何一项或多项所述的主题任选地包括:其中,用于基于处理元件何时在计算单元中活跃的定时来修改队列中分组的优先级的指令包括用于在处理元件在计算单元中不活跃或马上将在计算单元中不活跃时降低该分组的优先级的指令。
在示例536中,如示例535所述的主题任选地包括:其中,用于降低分组的优先级的指令包括用于将处理元件不活跃与从以下各项的列表中选择的至少一个因子包括在一起的指令:分组优先级和循环次序。
在示例537中,如示例510-536中任何一项或多项所述的主题任选地包括:其中,用于基于处理元件在计算单元中是否活跃来修改队列中分组的优先级的指令包括用于以下各项的指令:当处理元件在计算单元中不活跃或马上将在计算单元中不活跃时,判定是否从队列中丢弃该分组;以及基于该判定而从队列中丢弃该分组。
在示例538中,如示例537所述的主题任选地包括:其中,用于判定是否从队列丢弃分组的指令包括用于将处理元件不活跃或马上将不活跃与从以下各项的列表选择的至少一个因子包括在一起的指令:逆分组优先级和循环次序。
示例539是包括指令的至少一种机器可读介质,所述指令在被机器执行时使所述机器执行如示例1-538所述的操作中的任一项的操作。
示例540是一种包括用于执行如示例1-538所述的操作中的任一项的装置的设备。
示例541是用于执行如示例1-538中的任一项所述的操作的系统。
示例542是用于执行如示例1-538中任一项所述的操作的方法。
以上具体实施方式包括对附图的引用,附图形成具体实施方式的部分。附图通过说明方式示出可被实施的具体实施例。这些实施例在本文中还被称为“示例”。此类示例可包括除所示出或所描述的那些要素以外的要素。然而,还构想了包括所示出或所描述的元素的示例。而且,还构想了使用所示出或所描述的那些元素(或其一个或多个方面)的任何组合或排列的示例,或参照本文中所示出或所描述的特定示例(或其一个或多个方面),或参照本文中所示出或所描述的其他示例(或其一个或多个方面)。
在此文档中引用的出版物、专利和专利文档通过引用被整体结合在本文中,就好像通过引用单独地被结合那样。在本文档与通过引用结合在的那些文档之间不一致的用法的情况下,所结合的(多个)引用文档中的用法是对此文档的用法的补充;对于不可调和的不一致性,此文档中的用法占主导。
在本文档中,如在专利文档中常见的那样,使用术语“一”或“一个”以包括一个或多于一个,并且独立于“至少一个”或“一个或多个”的任何其他实例或用法。在本文档中,使用术语“或”来表示非排他的“或”,使得“A或B”包括“A但非B”,“B但非A”,以及“A和B”,除非另外指示。在所附权利要求书中,术语“包括”和“其特征在于”被用作相应的术语“包含”和“其中”的普通英语等效词。而且,在所附权利要求中,术语“包括”和“包含”是开放式的,即,在权利要求中,在此类术语之后包括除那些列出的元素之外的元素的系统、设备、制品或过程仍被视为在那项权利要求的范围之内。此外,在所附权利要求中,术语“第一”、“第二”、以及“第三”等仅用作标记,并且不旨在表明它们的对象的数值顺序。
以上描述旨在是说明性而非限制性的。例如,可结合其他实施例来使用以上所描述的示例(或者其一个或多个方面)。诸如可由本领域普通技术人员在仔细阅读以上描述之后使用其他实施例。摘要允许读者快速地确定本技术公开的性质。提交该摘要,并且理解该摘要将不用于解释或限制权利要求书的范围或含义。而且,在以上具体实施方式中,各种特征可分组在一起以使本公开精简。然而,权利要求可以不陈述本文中所公开的每一特征,因为实施例的特征可以是所述特征的子集。进一步地,实施例可包括比特定示例中所公开的那些特征更少的特征。因此,所附权利要求书由此被结合到具体实施方式中,一项权利要求作为单独的实施例而独立存在。本文中所公开的实施例的范围应当参照所附权利要求书连同此类权利要求所赋予权利的等价方案的完整范围来确定。

Claims (25)

1.一种用于实现智能分组聚合的网络接口设备,所述网络接口设备包括:
分组解析器,用于接收多个分组并将所述多个分组中的每个分组路由至多个队列中的队列,所述分组基于所述分组的特性在所述队列之间划分;以及
协调器电路,所述协调器电路用于:
与处理元件对接,以确定所述处理元件的当前操作状态;
基于所述处理元件的所述当前操作状态从所述多个队列中选择队列;以及
将数个分组从所选择的队列转发至所述处理元件。
2.如权利要求1所述的设备,其中,所述处理元件包括计算进程。
3.如权利要求1所述的设备,其中,所述处理元件包括线程。
4.如权利要求1所述的设备,其中,所述处理元件包括虚拟机。
5.如权利要求1所述的设备,其中,所述处理元件包括现场可编程门阵列(FPGA)程序。
6.如权利要求1所述的设备,其中,所述分组解析器包括用于检查所述分组的TCP卸载引擎。
7.如权利要求1所述的设备,其中,所述分组解析器用于:
尝试标识所述多个队列中与特定分组对应的队列;
当所述标识失败时,分配新的队列;以及
将所述特定分组存储在所述新的队列中。
8.如权利要求1所述的设备,其中,为了与所述处理元件对接,所述协调器电路用于与用于检查与所述处理元件相关联的高速缓存存储器的存储器管理单元(MMU)对接。
9.如权利要求1所述的设备,其中,所述处理元件的所述当前操作状态包括当前操作中的线程。
10.如权利要求1所述的设备,其中,所述处理元件的所述当前操作状态包括当前操作中的进程。
11.如权利要求1所述的设备,其中,所述处理元件的所述当前操作状态包括当前操作中的虚拟机。
12.如权利要求1所述的设备,其中,所述处理元件的所述当前操作状态包括当前FPGA配置。
13.如权利要求1所述的设备,其中,为了从所述多个队列中选择队列,所述协调器电路用于:
确定与所述多个队列中的队列的集合相关联的当前优先级;以及
从所述队列的集合中选择具有最高优先级的队列。
14.一种实现智能分组聚合的方法,所述方法包括:
在分组解析器处接收多个分组并将所述多个分组中的每个分组路由至多个队列中的队列,所述分组基于所述分组的特性在所述队列之间划分;
与处理元件对接,以确定所述处理元件的当前操作状态;
基于所述处理元件的所述当前操作状态从所述多个队列中选择队列;以及
将数个分组从所选择的队列转发至所述处理元件。
15.如权利要求14所述的方法,其中,所述处理元件包括线程。
16.如权利要求14所述的方法,其中,所述处理元件包括虚拟机。
17.如权利要求14所述的方法,其中,所述处理元件包括现场可编程门阵列(FPGA)程序。
18.如权利要求14所述的方法,其中,所述分组解析器包括用于检查所述分组的TCP卸载引擎。
19.如权利要求14所述的方法,进一步包括:
尝试标识所述多个队列中与特定分组对应的队列;
当所述标识失败时,分配新的队列;以及
将所述特定分组存储在所述新的队列中。
20.如权利要求14所述的方法,其中,从所述多个队列中选择队列包括:
确定与所述多个队列中的队列的集合相关联的当前优先级;以及
从所述队列的集合中选择具有最高优先级的队列。
21.如权利要求20所述的方法,其中,当所述当前操作状态指示所述处理元件能够处理存储在队列中的分组时,提高所述队列的所述当前优先级。
22.如权利要求20所述的方法,其中,当所述当前操作状态指示所述处理元件无法处理存储在队列中的分组时,降低所述队列的所述当前优先级。
23.如权利要求14所述的方法,其中,将所述数个分组从所述所选择的队列转发至所述处理元件包括:在转发所述分组时实施通信量调节策略。
24.至少一种包括指令的机器可读介质,所述指令在由机器执行时使得所述机器执行如权利要求14-23所述的方法中的任一项的操作。
25.一种设备,包括用于执行如权利要求14-23所述的方法中的任一项的装置。
CN201780075253.7A 2016-12-30 2017-11-28 用于实现智能分组聚合的设备和方法 Active CN110036609B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/396,196 US10362149B2 (en) 2016-12-30 2016-12-30 Intelligent packet aggregation
US15/396,196 2016-12-30
PCT/US2017/063446 WO2018125462A1 (en) 2016-12-30 2017-11-28 Intelligent packet aggregation

Publications (2)

Publication Number Publication Date
CN110036609A true CN110036609A (zh) 2019-07-19
CN110036609B CN110036609B (zh) 2024-02-27

Family

ID=62709113

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780075253.7A Active CN110036609B (zh) 2016-12-30 2017-11-28 用于实现智能分组聚合的设备和方法

Country Status (4)

Country Link
US (1) US10362149B2 (zh)
EP (1) EP3563533B1 (zh)
CN (1) CN110036609B (zh)
WO (1) WO2018125462A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114363248A (zh) * 2020-09-29 2022-04-15 华为技术有限公司 计算系统、加速器、交换平面及聚合通信方法
CN114928663A (zh) * 2022-06-02 2022-08-19 蜂助手股份有限公司 一种识别回调报文的方法及装置

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11157801B2 (en) * 2017-02-28 2021-10-26 Microsoft Technology Licensing, Llc Neural network processing with the neural network model pinned to on-chip memories of hardware nodes
US10609054B2 (en) 2017-04-07 2020-03-31 Keysight Technologies Singapore (Sales) Pte. Ltd. Methods, systems, and computer readable media for monitoring, adjusting, and utilizing latency associated with accessing distributed computing resources
US10425321B2 (en) 2017-04-25 2019-09-24 Keysight Technologies Singapore (Sales) Pte. Ltd. Methods, systems, and computer readable media for testing time sensitive network (TSN) elements
CN109150722B (zh) * 2017-06-16 2021-03-30 华为技术有限公司 一种业务转发的方法及网络设备
US10447598B2 (en) * 2017-07-17 2019-10-15 Qualcomm Incorporated User datagram protocol (UDP) receive offloading
US10547629B2 (en) * 2017-11-05 2020-01-28 Rapid7, Inc. Detecting malicious network activity using time series payload data
US10623372B2 (en) * 2017-12-06 2020-04-14 Nicira, Inc. Load balancing IPsec tunnel processing with extended Berkeley packet filter (eBPF)
US10534710B2 (en) * 2018-06-22 2020-01-14 Intel Corporation Non-volatile memory aware caching policies
CN109409513B (zh) * 2018-10-10 2021-03-12 广州市百果园信息技术有限公司 一种基于神经网络的任务处理方法及相关设备
KR102608382B1 (ko) 2018-10-18 2023-12-01 삼성전자주식회사 데이터를 처리하는 방법 및 이를 수행하는 전자 장치
US10965392B2 (en) 2019-01-25 2021-03-30 Keysight Technologies, Inc. Active network tap supporting time sensitive network (TSN) standards
US11563768B2 (en) 2019-01-31 2023-01-24 Keysight Technologies, Inc. Methods, systems, and computer readable media for detecting and mitigating effects of timing attacks in time sensitive networks
CN111866039A (zh) * 2019-04-28 2020-10-30 中国移动通信集团上海有限公司 企业服务系统及请求处理方法
US11502932B2 (en) 2019-05-17 2022-11-15 Keysight Technologies, Inc. Indirect testing using impairment rules
CN110149660B (zh) * 2019-05-24 2022-05-06 重庆邮电大学 基于目标导向的多数据包聚合选择方法
US11277343B2 (en) 2019-07-17 2022-03-15 Vmware, Inc. Using VTI teaming to achieve load balance and redundancy
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
CN112787835B (zh) * 2019-11-07 2023-01-13 华为技术有限公司 网络设备及处理关于网络报文的数据的方法
US11509638B2 (en) 2019-12-16 2022-11-22 Vmware, Inc. Receive-side processing for encapsulated encrypted packets
US11444883B2 (en) * 2020-01-17 2022-09-13 Vmware, Inc. Signature based management of packets in a software defined networking environment
US11444831B2 (en) 2020-01-17 2022-09-13 Keysight Technologies, Inc. Methods, systems, and computer readable media for measuring schedule update time for a time aware shaper implementation
US11394650B2 (en) * 2020-04-14 2022-07-19 Charter Communications Operating, Llc Modificationless packet prioritization for frame generation
US11283722B2 (en) 2020-04-14 2022-03-22 Charter Communications Operating, Llc Packet prioritization for frame generation
US11909841B2 (en) * 2020-05-29 2024-02-20 Intel Corporation System, apparatus and method for adaptive peer-to-peer communication with edge platform
TWI745034B (zh) 2020-08-18 2021-11-01 國立陽明交通大學 封包聚合及解聚合方法
US11290516B1 (en) 2020-12-21 2022-03-29 Cisco Technology, Inc. Prioritized MSRP transmissions to reduce traffic interruptions
US11595472B2 (en) 2021-01-19 2023-02-28 Mellanox Technologies, Ltd. Controlling packet delivery based on application level information
KR20220126591A (ko) * 2021-03-09 2022-09-16 삼성전자주식회사 패킷을 프로세싱하는 전자 장치 및 그 동작 방법
US20220060418A1 (en) * 2021-10-29 2022-02-24 Intel Corporation Network interface device-based computations
US11729119B2 (en) 2021-11-18 2023-08-15 Cisco Technology, Inc. Dynamic queue management of network traffic
US11899585B2 (en) 2021-12-24 2024-02-13 Western Digital Technologies, Inc. In-kernel caching for distributed cache
US11934663B2 (en) 2022-01-10 2024-03-19 Western Digital Technologies, Inc. Computational acceleration for distributed cache
US11792139B2 (en) 2022-01-24 2023-10-17 Mellanox Technologies, Ltd. Efficient packet reordering using hints
US11797379B2 (en) 2022-02-04 2023-10-24 Western Digital Technologies, Inc. Error detection and data recovery for distributed cache

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030039258A1 (en) * 2001-08-22 2003-02-27 Tuck Russell R. Method and apparatus for intelligent sorting and process determination of data packets destined to a central processing unit of a router or server on a data packet network
US6665699B1 (en) * 1999-09-23 2003-12-16 Bull Hn Information Systems Inc. Method and data processing system providing processor affinity dispatching
US20060047856A1 (en) * 2004-07-06 2006-03-02 Sun Microsystems, Inc. Computer architecture and process for implementing a virtual vertical perimeter framework for an overloaded CPU having multiple network interfaces
CN101278530A (zh) * 2005-08-17 2008-10-01 高通股份有限公司 在ev-do网络上实现有服务质量的分组传输的优先级区分技术
US8144588B1 (en) * 2007-09-11 2012-03-27 Juniper Networks, Inc. Scalable resource management in distributed environment
US20140286349A1 (en) * 2013-03-21 2014-09-25 Fujitsu Limited Communication device and packet scheduling method

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7304944B2 (en) * 2004-05-03 2007-12-04 Lucent Technologies Inc. Unified scheduling and queueing architecture for a multiservice switch
US7733891B2 (en) * 2005-09-12 2010-06-08 Zeugma Systems Inc. Methods and apparatus to support dynamic allocation of traffic management resources in a network element
US20120155267A1 (en) 2010-12-16 2012-06-21 International Business Machines Corporation Selection of receive-queue based on packet attributes
US8990602B2 (en) 2010-12-21 2015-03-24 Intel Corporation Apparatus, method, and system for early deep sleep state exit of a processing element
US9444914B2 (en) 2013-09-16 2016-09-13 Annapurna Labs Ltd. Configurable parser and a method for parsing information units
US9973599B2 (en) 2013-12-04 2018-05-15 Mediatek Inc. Parser for parsing header in packet and related packet processing apparatus
US9942152B2 (en) 2014-03-25 2018-04-10 A10 Networks, Inc. Forwarding data packets using a service-based forwarding policy

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6665699B1 (en) * 1999-09-23 2003-12-16 Bull Hn Information Systems Inc. Method and data processing system providing processor affinity dispatching
US20030039258A1 (en) * 2001-08-22 2003-02-27 Tuck Russell R. Method and apparatus for intelligent sorting and process determination of data packets destined to a central processing unit of a router or server on a data packet network
US20060047856A1 (en) * 2004-07-06 2006-03-02 Sun Microsystems, Inc. Computer architecture and process for implementing a virtual vertical perimeter framework for an overloaded CPU having multiple network interfaces
CN101278530A (zh) * 2005-08-17 2008-10-01 高通股份有限公司 在ev-do网络上实现有服务质量的分组传输的优先级区分技术
US8144588B1 (en) * 2007-09-11 2012-03-27 Juniper Networks, Inc. Scalable resource management in distributed environment
US20120155271A1 (en) * 2007-09-11 2012-06-21 Juniper Networks, Inc. Scalable resource management in distributed environment
US20140286349A1 (en) * 2013-03-21 2014-09-25 Fujitsu Limited Communication device and packet scheduling method

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114363248A (zh) * 2020-09-29 2022-04-15 华为技术有限公司 计算系统、加速器、交换平面及聚合通信方法
CN114928663A (zh) * 2022-06-02 2022-08-19 蜂助手股份有限公司 一种识别回调报文的方法及装置

Also Published As

Publication number Publication date
WO2018125462A1 (en) 2018-07-05
US20180191642A1 (en) 2018-07-05
EP3563533B1 (en) 2022-03-02
EP3563533A4 (en) 2020-07-29
US10362149B2 (en) 2019-07-23
CN110036609B (zh) 2024-02-27
EP3563533A1 (en) 2019-11-06

Similar Documents

Publication Publication Date Title
CN110036609A (zh) 智能分组聚合
US20180191629A1 (en) Time-based flexible packet scheduling
US20180191632A1 (en) Flexible packet scheduling
US10848430B2 (en) Flexible packet processing
US20220121455A1 (en) Intent-based cluster administration
US10412021B2 (en) Optimizing placement of virtual machines
US11256554B2 (en) Reducing overlay network overhead across container hosts
US9906454B2 (en) System and method for providing quality of service to data center applications by controlling the rate at which data packets are transmitted
CN103608776B (zh) 异构型处理设备上的动态工作划分
WO2017107091A1 (en) Virtual cpu consolidation to avoid physical cpu contention between virtual machines
CN109076029A (zh) 用于网络i/o访问的技术
JP2017050001A (ja) 効果的なニューラルネットワークの配置に用いるシステム及び方法
EP3314544A1 (en) Deep neural network partitioning on servers
US20220116478A1 (en) Microservice latency reduction
US20210328944A1 (en) Methods, apparatus, and articles of manufacture to dynamically allocate cache
CN109218383A (zh) 虚拟网络功能负载平衡器
US20160112256A1 (en) Method for configuring an m2m system
NL2033544B1 (en) Methods and apparatus to implement edge scalable adaptive-grained monitoring and telemetry processing for multi-qos services
Zheng et al. Auto-scaling in Kubernetes-based fog computing platform
US20220300418A1 (en) Maximizing resource bandwidth with efficient temporal arbitration
US20230119552A1 (en) Resource management mechanisms for stateful serverless clusters in edge computing
Patterson et al. HiveMind: A hardware-software system stack for serverless edge swarms
US20240039860A1 (en) Methods, systems, apparatus, and articles of manufacture to manage network communications in time sensitive networks
US20240036631A1 (en) Protocol state aware power management
Wadhwa et al. Resource utilization for iot oriented framework using zero hour policy

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