掌桥专利:专业的专利平台
掌桥专利
首页

出口分组调度

文献发布时间:2023-06-19 19:38:38


出口分组调度

背景技术

在网络接口控制器(NIC),分组能够被调度以用于在特定时间的传送。然而,通过并行和分级层的业务塑造(shaping)拓扑来塑造各种网络应用(例如,视频服务器上的视频流)按规定速率的许多流的分组传送能够是处理器密集型任务,尤其是在流能够在多个分级聚合阶段被塑造并且每个阶段中的节点被并行塑造的情况下。在服务器上,用于分组调度和塑造的处理器周期减少了可用于其它应用的处理器周期。

附图说明

图1描绘示例系统。

图2描绘示例系统。

图3描绘队列使用的示例。

图4A和4B描绘示例进程。

图5描绘示例网络接口装置。

图6描绘系统。

具体实施方式

电气与电子工程师协会(IEEE)标准802.1 Qbv-2015规定时间敏感网络(TSN)的标准。另外,电影与电视工程师协会(SMPTE) ST 2110-21 (ST 2110-21:2017 - SMPTEStandard - Professional Media Over Managed IP Networks: Traffic Shaping andDelivery Timing for Video)要求在调度的时间的分组传送。与取出分组体、对分组进行加密以及调度用于出口服务类别(CoS)队列(ECQ)中的传送的分组关联的时延能够使兼容IEEE 802.1Qbv或SMPTE ST 2110-21具有挑战性。另外,传送暂停方案(诸如,例如IEEE802.3x)和基于优先级的流控制(PFC)(例如IEEE 802.1Qbb)能够暂停来自端口或与业务类别关联的分组的传送,并且抑制时间敏感分组的调度传送,或者强制某些业务类别被指定为时间敏感业务。

一些示例提供业务塑造(根据不同模式)。第一模式能够是根据定义的速率策略来调节(pace)网络业务。第二模式能够是基于分组优先级类别或端口来仲裁分组业务。一些示例为端口提供出口分组调度,所述出口分组调度考虑基于时间戳的分组选择以及基于以下一个或多个的优先级或非基于时间的(non-time based)分组选择:轮询(RR)、差额轮询(DRR)、差额加权轮询(DWRR)、优先化弹性轮询(PERR)、加权公平排队(WFQ)、严格优先级或其它。RR仲裁能够选择端口(例如,物理的或逻辑的),以使得不同端口按顺序被服务用于分组传送的带宽的分配。严格优先级能够被分配优先级到一个或多个端口,以使得最高优先级端口在(一个或多个)较低优先级端口之前被服务以便为某些时间关键端口分配高于其它端口的优先级。因此,网络接口装置能够支持基于优先级或非基于时间的方案的出口调度以及基于时间的出口调度,并且满足TSN 802.1 Qbv或SMPTE ST 2110-21要求。

一些示例通过忽略暂停或PFC命令来允许TSN分组要求代替暂停或流控制的要求(例如,IEEE 802.3x或IEEE 802.1Qbb)。例如,当端口或队列不应当在IEEE802.3或IEEE802.1Qbb下传送时,基于时间的队列将具有优先权,并且即使队列遭受暂停,也能够不考虑所述不传送情况。尽管具有暂停时间持续期的暂停消息以特定队列为目标,分组能够被调度以用于在暂停时间持续期期满之前从所述特定队列出口。

网络接口装置的业务塑造器能够允许分组被放置在调度出口队列中(在从主机或服务器存储器取回分组之前)。调度出口缓冲器能够包含分组、分组的标头或元数据。因此,如果存在来自从主机存储器来访问分组的不可预测的时延、业务塑造器定时时隙之间的抖动(例如,时隙间隔之间的变化)和/或通往用于传送的分组的选择的数据路径中的抖动,则来自端口输出的业务模式可具有抖动或不可预测的时延。数据路径能够包含业务塑造器、分组创建器(builder)、主机存储器、媒体访问控制(MAC)、物理层接口(PHY)和对传送介质的串行化器/去串行化器(SERDES)。通过给予优先级或尝试向具有传送时间戳要求的某些分组提供一定程度的公平,一些示例能够去除或减少来自从主机存储器来访问分组的不可预测的时延以及传送时隙之间的抖动。

重新排序弹性传输可使用本文所述的示例来使分组传送时间保持在可接受的界限内。示例能够执行分组调节(诸如,对于基于流传送协议的媒体流传送应用)。流传送协议能够包含实时流传送协议(RTSP)、H.323、会话发起协议(SIP)、Jingle(XMPP)等。在SMPTEST 2110-21中,章节6.6.1中的“Network Compatibility Model”规定每个RTSP流的固定分组间间隙。

图1描绘示例系统。服务器102能够包含或访问本文所述的其它组件(例如,加速器装置、互连和其它电路模块)中的一个或多个处理器104、存储器106和装置接口108。处理器104能够执行一个或多个应用(例如,微服务、虚拟机(VM)、容器或其它分布式或虚拟化执行环境),所述一个或多个应用利用或请求使用传输技术(诸如,传送控制协议(TCP)、用户数据报协议(UDP)、快速UDP互联网连接(QUIC)、融合以太网上的RDMA(RoCE)或其它协议)的分组的调节传送。在一些示例中,一个或多个处理器104能够请求网络接口装置150传送一个或多个分组并且利用本文所述的分组传送调度。

分组的离开时间能够由软件(例如,在网络接口装置150上执行的应用、管理程序、装置驱动器和/或软件(例如,数据面软件和/或控制面软件))所决定。所述应用可命令所述装置驱动器发送一定量的数据,并且所述装置驱动器能够将数据的传送调出(pace out)为较小的数据块。所述应用能够在服务器102上或在网络接口装置150上运行。CPU能够将全部分组传送卸载到网络接口装置150。

在一些示例中,软件能够识别传送时隙,并且传送流水线152能够调度出口时间(基于对主机存储器的最坏情况访问时间和/或其它数据路径时延)。

参照网络接口装置150,传送流水线152能够选择通过一个或多个端口的分组传送。在一些示例中,仲裁器154能够指派来自存储在存储器156中的队列158或存储器106中的分组缓冲器的分组以用于传送。存储器156能够被实现为易失性存储器装置,包含高速缓存(例如,1级(L1)、2级(L2)、3级(L3)和/或末级高速缓存(LLC))。要注意,尽管存储器156被示出为网络接口装置150的部分,但存储器156能够是另一装置或服务器102的部分。

队列158能够包含一个或多个链接的列表,所述一个或多个链接的列表存储不与出口时间戳关联的分组或者基于其传送时间戳所排序的出口分组的元数据或标识符。在一些示例中,队列158的一个或多个队列能够与基于优先级的选择或非基于时间戳的方案关联。

仲裁器154能够基于传送时间戳来选择分组以用于传送,并且基于来自多个队列之间的分配带宽从队列158的一个或多个队列中分组的选择包含以下的一个或多个:轮询(RR)、差额轮询(DRR)、差额加权轮询(DWRR)、优先化弹性轮询(PERR)、加权公平排队(WFQ)、严格优先级或其它。仲裁器154能够从队列158之中的一个或多个基于时间的队列和一个或多个非基于时间的队列基于主定时器170的当前时间来选择用于从端口出口的分组。时间戳能够表示分组的最早离开时间,并且时间戳的使用能够帮助确保分组不被传送,直至定时器值大于或等于分组的时间戳。

通过将时间戳值向上或向下舍入到下一个时隙中,仲裁器154能够基于分组的时间戳来选择传送时隙。在一些示例中,如果分组时间戳小于当前时间并且在与当前时间之差的阈值量内,则分组能够被选择以用于传送。在一些示例中,如果分组时间戳比当前时间小了多余阈值级别的差,则分组能够被视为传送并且丢弃。在一些示例中,如果分组到达基于时间的队列(在它的离开时间之后),则仲裁器能够使所述分组被立即发送。例如,仲裁器154能够基于等于或小于主定时器170的当前时间的传送时间来选择用于出口的分组,以超越(override)严格优先级,从而让具有基于时间戳的分组的较低优先级队列优先于较高优先级业务类别(TC)队列中的分组被发送。换句话说,如果分组的传送时间戳小于或等于主定时器170的当前时间,则分组被指派最高服务质量,并且被选择用于接下来出口。

在一些示例中,仲裁器154能够允许其时间被调度以便传送的分组等待,直至(1)信用(credit)可用或(2)可编程的附加时间已经过。仲裁器154能够基于批次选择来选择一批多个分组以用于传送,其使用该批次中的至少一个分组的离开时间(在那个批次的调度决定中)。仲裁器154能够测试所请求的队列的头的传送时间以确认其在调度的时间帧内,从而避免由于无限的离开时间而阻挡队列。对于多个基于时间的队列,能够首先基于哪个分组最接近主定时器的当前时间来确定优先级次序。

在一些示例中,为了在1 µs(+/- 100ns)时隙发送分组,此类分组能够被发送(如果主定时器值≥队列分组的头的离开时间戳减去100ns的阈值,)。这还能够允许分组离开,即便在它前面存在巨型帧。例如,为了在1 µs(+/- 100ns)时隙发送分组,能够进行与主定时器的多次比较,诸如(1)如果主定时器≥队列分组的头的离开时间减去200ns的阈值,则准备发送这个分组但不调度它以便发送(例如,从存储器取出分组数据,并且将分组分配到输出先入先出(FIFO)队列(通过将分组放置在接下来将发送的队列顶端或延迟其它分组),因为在合适的时间发送这个分组将有冲突);(2)如果主定时器≥队列分组的头的离开时间减去100ns的阈值,则将分组调度成发送的分组;(3)如果主定时器≥队列分组的头的离开时间加上50ns的阈值,则以所有定时队列的最高优先级调度这个分组。阈值时间值(诸如,-200、-100、+50ns)能够是由驱动器或操作系统可编写的。其它阈值能够被使用。

一些示例应用了对于离开时间的严格遵守来调度分组以在它的离开时间而非尽最大努力发送分组,或者在它的离开时间之前调度分组以用于传送。例如,在视频中,分组调节被应用以避免分组过早离开(从而避免挤满接收器的缓冲器)或过晚离开(从而损害视频的质量)。

基于时间的队列能够在存储器中被分配,并且分组能够被分类并且分配到这些队列(基于其预期离开时间)。如果存在多个基于时间的队列,则分组能够被移动到将与正确的离开时间关联的队列。例如,对于将不从主机取出的较小尺寸分组和将从主机取出的大分组,则以下方案能够被用于使分组与队列关联。队列1(Queue1)能够按离开时间的次序而填有小型分组,队列2(Queue2)能够基于离开时间的次序而填有较大型分组并且可能具有比队列1更早的离开时间。队列N(Queue N)能够存储分组,所述分组的传送时间已经过,并且此类分组能够被尽可能快地发送。

下面描绘仲裁器154的操作的潜在伪代码。

If departure time < current time

        Place packet in queue N

Else

For i = 1 to N-1

If departure time 

        Queue(i) <- Packet

        Return;}

        End loop

        Queue (with lowest error) <- Packet //分组将不按定时次序

End if

对于实时工作负载,在一些情况下,所有队列能够是基于定时的队列。因此,N = 8或10或其它值。

如果不存在具有在主定时器170的当前时间或小于主定时器170的当前时间的传送时间戳的分组,则仲裁器154能够使用带宽分配技术或非基于时间戳的方案(诸如以下的一个或多个:轮询(RR)、差额轮询(DRR)、差额加权轮询(DWRR)、优先化弹性轮询(PERR)、加权公平排队(WFQ)、严格优先级或其它)来从队列选择分组。

流能够是正被在两个端点之间传递的分组的序列(通常表示使用已知协议的单个会话)。因此,流能够由定义的元组的集合所识别,并且为了路由目的,流由识别端点的两个元组(例如源和目的地地址)所识别。对于基于内容的服务(例如负载平衡器、防火墙、入侵检测系统等),能够通过使用N-元组(例如源地址、目的地地址、IP协议、传输层源端口和目的地端口)以更细的粒度来区分流。流中的分组被预期在分组头中具有元组的相同集合。将被控制的分组流能够通过元组(例如,以太网类型字段、源和/或目的地IP地址、源和/或目的地用户数据报协议(UDP)端口、源/目的地TCP端口或任何其它头字段)以及唯一源和目的地队列对(QP)编号或标识符的组合而被识别。

本文中分组可被用于指代可跨网络发送的比特的各种格式化集,诸如以太网帧、IP分组、TCP段、UDP数据报等。此外,如此文件中所使用的,参照L2、L3、L4和L7层(层2、层3、层4和层7)是分别参照OSI(开放系统互连)层模型的第二数据链路层、第三网络层、第四传输层和第七应用层。

网络接口装置150能够被实现为以下的一个或多个:网络接口控制器(NIC)、启用远程直接存储器存取(RDMA)的NIC、SmartNIC、路由器、交换机、转发元件、基础设施处理单元(IPU)、数据处理单元(DPU)或网络附连的电器(例如存储装置、存储器、加速器、处理器、安全设施)等等。网络接口装置150能够被使用接口160而在通信上耦合到服务器102的接口108。接口108和接口160能够基于高速外围组件互连(PCIe)、计算高速链路(CXL)而进行通信。参见例如Peripheral Component Interconnect Express (PCIe) BaseSpecification 1.0 (2002)以及更早版本、更晚版本及其变体。参见例如Compute ExpressLink (CXL) Specification revision 2.0, version 0.7 (2019)以及更早版本、更晚版本及其变体。

图2描绘示例系统。一些示例融入多种类型的仲裁器204、210和220,由此时间戳考虑能够在决定出口分组中超越较高优先级级别队列。基于优先级的仲裁器204能够基于非时间戳考虑(诸如优先级)从队列来选择分组,并且利用方案,诸如以下的一个或多个:轮询(RR)、差额轮询(DRR)、差额加权轮询(DWRR)、优先化弹性轮询(PERR)、加权公平排队(WFQ)或严格优先级。仲裁器210能够决定选择基于时间的队列条目,以及从非基于时间的队列的信用扣除信用以允许端口和业务类别之间的公平,以使得特定端口的总体信用消耗被列入预算,并且这个端口相对于其它端口将不被过度预订。在一些示例中,端口(或业务类别)可不接收更多带宽,因为它既具有定时分组又具有正常分组(与仅具有正常分组的另一端口相比)。

能够支持多级仲裁。在一些示例中,具有为基于时间的传送所调度的分组的队列是时间队列1(Time Queue 1) 202-1和时间队列2(Time Queue 2) 202-2。时间队列1 202-1和时间队列2 202-2能够被按端口分配。仲裁器210能够调度分组以用于传送(基于当前时间(例如网络接口装置的主定时器)和在队列的头的(一个或多个)分组的离开时间)。因此,如果时间队列202-1至202-2中的分组的离开时间晚于来自主定时器230的当前时间,则它将在由仲裁器204(例如调度协议,诸如SP、RR、ERR或DWRR)所选择的其它非基于定时器的队列中的分组上经过(pass)仲裁器210。要注意在这种情况中,仲裁器220是时域复用器(TDM),所述时域复用器旋转通过端口以选择每TDM时隙出口的分组。

虽然每端口仅示出2个时间队列,但能够存在1个或多于2个时间队列。另外,能够存在多于或少于3级仲裁。

如果与基于时间的队列关联的流被暂停,则来自时间队列的分组可不退出队列以用于出口。对队列隔离基于时间的分组能够避免使非基于时间的分组被暂停,并且将暂停的影响限制于单个流而非其它流(如果此类其它流被分配到基于时间的队列)。在一些示例中,仲裁器154能够基于离开时间来选择分组以用于传送并且忽略暂停命令。在一些示例中,暂停命令是暂停分组。在一些示例中,暂停命令是优先级流控制(PFC)分组。

在示例中,具有相同业务类别的两个分组能够到达队列,以使得第一分组未按次序而到达队列(由于从主机接口取回分组中的抖动)。然而,仲裁器能够发送具有正确的离开时间的分组,这将强制分组重新排序。示例允许更精确的启动时间控制/业务调节。

关于暂停帧,IEEE 802.3x和IEEE 802.1 Qbb规范可被修改如下。所述规范可提供为与TSN调度相关的分组而设计的缓冲器。例如,出口调度器可不在暂停被释放之前在端口上发送超过10K字节的TSN分组,出口调度器可不在暂停被释放之前在端口上发送超过某个速率的TSN分组,和/或字节的速率或数量能够被通告。某个更高级协议能够允许链路伙伴共享上文IEEE协议的基于时间的调度队列上的信用。所述规范可定义能够处理TSN分组而不管端口的和/或业务类别暂停状态的业务的类别。

图3描绘队列利用的示例。头离开时间和尾离开时间能够表示与当前主定时器值分别较近和较远的距离。队列4(Queue 4)在这个示例中是空的并且未被使用。队列3(Queue3)能够存储具有离开时间<13,000 ns的分组。队列2能够存储满足13,000 ns≤离开时间<50,000 ns的分组。队列1能够存储满足50,000 ns≤离开时间<100,000 ns的分组。队列0能够存储满足100,000 ns≤离开时间≤“最大未来时间”的分组。如果分组时间戳超过“最大未来时间”,则网络接口装置能够丢弃所关联的分组、将所关联的分组放置在另一队列中、中断操作系统以指示所关联的分组将被丢弃或已具有时间戳等等,所述时间戳处于接受的离开时间戳的范围之外。队列的时间范围能够取决于由控制面或驱动器所设置的配置而被改变。

图4A描绘示例进程。该进程能够由网络接口装置的操作系统、驱动器、应用和/或固件所执行。在402,网络接口装置的传送调度器能够被配置成从基于时间的队列或非基于时间的队列来选择分组。在一些示例中,非基于时间的队列能够是关联于严格优先级、加权轮询等等的一个或多个方案的队列。

图4B描绘示例进程。该进程能够由网络接口装置所执行。在450,传送调度器能够从非基于时间的队列或基于时间的队列来选择分组以用于传送。例如,传送调度器能够选择具有在当前时间或小于当前时间的时间戳的用于传送或出口的分组。如果没有分组具有在当前时间或小于当前时间的时间戳,则能够根据适用的分组选择准则从非基于时间的队列来选择分组以用于传送。当前时间能够基于网络接口装置可访问的时钟源。在452,分组能够被分配用于从FIFO队列的传送。

图5描绘示例网络接口装置。网络接口中的各种处理器资源能够进行分组传送调度(基于基于时间的或非基于时间的队列),如本文所述的。在一些示例中,网络接口500能够被实现为网络接口控制器、网络接口卡、主机构造接口(HFI)或主机总线适配器(HBA),并且此类示例能够是可互换的。网络接口500能够被使用总线PCIe、CXL或DDR而耦合到一个或多个服务器。网络接口500可被实施为包含一个或多个处理器的片上系统(SoC)的部分,或者被包含在还含有一个或多个处理器的多片封装上。

网络装置500的一些示例是基础设施处理单元(IPU)或数据处理单元(DPU)的部分,或者由IPU或DPU使用。xPU能够至少指代IPU、DPU、GPU、GPGPU或其它处理单元(例如加速器装置)。IPU或DPU能够包含具有一个或多个可编程流水线或固定功能处理器的网络接口以便执行本能够由CPU所执行的操作的卸载。IPU或DPU能够包含一个或多个存储器装置。在一些示例中,IPU或DPU能够执行虚拟交换机操作,管理存储事务(例如压缩、加密、虚拟化),并且管理在其它IPU、DPU、服务器或装置上执行的操作。

网络接口500能够包含收发器502、处理器504、传送队列506、接收队列508、存储器510和总线接口512以及DMA引擎552。收发器502能够接收和传送分组(依照适用的协议,诸如,如IEEE 802.3中所述的以太网,然而可使用其它协议)。收发器502能够从网络接收分组以及向网络发送分组(经由网络介质(未描绘))。收发器502能够包含PHY电路模块514和媒体访问控制(MAC)电路模块516。PHY电路模块514能够包含编码和解码电路模块(未示出)以便根据适用的物理层规范或标准对数据分组进行编码和解码。MAC电路模块516能够被配置成对接收的分组执行MAC地址过滤,通过验证数据完整性来处理接收的分组的MAC头,去除前导和填充(padding),以及提供分组内容以用于由更高层处理。MAC电路模块516能够被配置成将待传送的数据组装成分组,所述分组包含目的地和源地址以及网络控制信息和错误检测哈希值一起。

对于在传送队列506中排队以用于传送的分组,传送业务管理器507能够执行传送调度、细和粗颗粒列表管理和迁移、堆叠以及高速缓存收回,如本文所述的。

处理器504能够是以下之一的任何组合:处理器、核、图形处理单元(GPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)或其它可编程硬件装置,其允许网络接口500的编程。例如,“智能网络接口”或SmartNIC能够使用处理器504在网络接口中提供分组处理能力。

处理器504能够包含可编程处理流水线,所述可编程处理流水线可由编程协议无关的分组处理器(P4)、C、Python、Broadcom网络编程语言(NPL)或x86兼容的可执行二进制文件或其它可执行二进制文件来编程。可编程处理流水线能够包含一个或多个匹配动作单元(MAU),所述一个或多个匹配动作单元(MAU)能够使用一个或多个粒度列表来调度分组以用于传送,如本文所述的。处理器、FPGA、其它专用处理器、控制器、装置和/或电路能够被用于分组处理或分组修改。三态内容可寻址存储器(TCAM)能够被用于对分组头内容的查询操作或并行匹配动作。

传送业务管理器507能够从基于时间戳和/或非基于时间戳的队列之中选择分组以分配到传送时隙,如本文所述的。传送业务管理器507能够被实现为处理器504和/或FPGA530的部分。

分组分配器524能够使用接收侧缩放(RSS)来提供用于由多个CPU或核所处理的接收的分组的分发。当分组分配器524使用RSS时,分组分配器524能够基于接收的分组的内容来计算哈希值或进行另一确定以确定哪个CPU或核将处理分组。

中断合并522能够执行中断节制(moderation),由此网络接口中断合并522等待多个分组到达或等待超时期满(在向主机系统生成中断以处理(一个或多个)接收的分组之前)。接收段合并(RSC)能够由网络接口500所执行,由此传入分组的部分被组合成分组的段。网络接口500向应用提供这个合并的分组。

直接存储器存取(DMA)引擎552能够将分组头、分组净荷和/或描述符直接从主机存储器复制到网络接口,或反之亦然,而不是将分组复制到在主机的中间缓冲器并且然后使用从中间缓冲器到目的地缓冲器的另一复制操作。

存储器510能够是任何类型的易失性或非易失性存储装置,并且能够存储用于对网络接口500进行编程的任何队列或指令。传送队列506能够包含用于由网络接口进行的传送的数据的引用或数据。接收队列508能够包含数据或数据的引用,其由网络接口从网络所接收。描述符队列520能够包含描述符,所述描述符引用传送队列506或接收队列508中的数据或分组。总线接口512能够提供与主机装置(未描绘)的接口。例如,总线接口512能够兼容于或至少部分基于PCI、PCI高速、PCI-x、串行ATA和/或USB(然而可使用其它互连标准)或其专有变体。

图6描绘示例计算系统。调度分组以用于传送的系统600的组件(例如处理器610、网络接口650等等),如本文所述的。系统600包含处理器610,处理器610提供处理、操作管理和指令的执行以用于系统600。处理器610能够包含任何类型的微处理器、中央处理单元(CPU)、图形处理单元(GPU)、处理核或其它处理硬件以便为系统600提供处理或处理器的组合。处理器610控制系统600的总体操作,并且能够是或包含一个或多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑装置(PLD)或诸如此类或此类装置的组合。

在一个示例中,系统600包含耦合到处理器610的接口612,所述接口能够表示更高速度接口或高吞吐量接口以用于需要更高带宽连接的系统组件,诸如存储器子系统620或图形接口组件640或加速器642。接口612表示接口电路,所述接口电路能够是独立组件或被集成到处理器管芯上。其中示出,图形接口640接合到图形组件以用于向系统600的用户提供视觉显示。在一个示例中,图形接口640能够驱动向用户提供输出的高清晰度(HD)显示器。高清晰度能够指代具有大约100 PPI(每英寸像素)或更大的像素密度的显示器,并且能够包含诸如全HD(例如1080p)、视网膜显示、4K(超高清晰度或UHD)或其它格式。在一个示例中,显示器能够包含触摸屏显示器。在一个示例中,图形接口640生成显示(基于存储在存储器630中的数据或基于由处理器610执行的操作或者基于上述两者)。在一个示例中,图形接口640生成显示(基于存储在存储器630中的数据或基于由处理器610执行的操作或者基于上述两者)。

加速器642能够是能够由处理器610访问或使用的固定功能或可编程卸载引擎。例如,加速器642之中的加速器能够提供压缩(DC)能力、加密服务(诸如公钥加密(PKE)、密码、哈希/验证能力、解密)或者其它能力或服务。在一些实施例中,附加地或者备选地,加速器642之中的加速器提供字段选择控制器能力,如本文所述的。在一些情况下,加速器642能够被集成到CPU插槽(例如,到包含CPU并且提供与该CPU的电接口的到电路板或母板的连接器)中。例如,加速器642能够包含单核或多核处理器、图形处理单元、逻辑执行单元、单或多级高速缓存、可用于独立执行程序或线程的功能单元、专用集成电路(ASIC)、神经网络处理器(NNP)、可编程控制逻辑和可编程处理元件(诸如,现场可编程门阵列(FPGA)或可编程逻辑装置(PLD))。加速器642能够提供多个神经网络、CPU、处理器核、通用图形处理单元,或者能够使图形处理单元可用于由人工智能(AI)或机器学习(ML)模型的使用。例如,AI模型能够使用或包含以下的一个或多个:增强学习方案、Q学习方案、深度Q学习或异步优势执行器评价器(A3C)、组合神经网络、循环组合神经网络或者其它AI或ML模型。能够使多个神经网络、处理器核或图形处理单元可用于由AI或ML模型的使用。

存储器子系统620表示系统600的主存储器,并且为将由处理器610所执行的代码或将被用于执行例程的数据值来提供存储。存储器子系统620能够包含一个或多个存储器装置630,诸如只读存储器(ROM)、闪速存储器、一种或多种随机存取存储器(RAM)(诸如DRAM)或其它存储装置或此类装置的组合。存储器630存储并且托管操作系统(OS)632等等以便为系统600中的指令的执行提供软件平台。另外,应用634能够在来自存储器630的OS632的软件平台上执行。应用634表示程序,所述程序具有它们自己的操作逻辑以执行一个或多个功能的执行。进程636表示向OS 632或者一个或多个应用634或者组合提供辅助功能的代理或例程。OS 632、应用634和进程636提供软件逻辑以便为系统600提供功能。在一个示例中,存储器子系统620包含存储器控制器622,所述存储器控制器是生成命令并且向存储器630发出命令的存储器控制器。将理解,存储器控制器622能够是处理器610的物理部分或接口612的物理部分。例如,存储器控制器622能够是集成到具有处理器610的电路上的集成存储器控制器。

在一些示例中,OS 632能够是Linux®、Windows®服务器或个人计算机、FreeBSD®、Android®、MacOS®、iOS®、VMware vSphere、openSUSE、RHEL、CentOS、Debian、Ubuntu或任何其它操作系统。OS和驱动器能够在由Intel®、ARM®、AMD®、Qualcomm®、IBM®、Texas Instruments®等等设计或销售的CPU上执行。在一些示例中,驱动器能够配置网络接口650以从基于时间戳或优先级的队列分配分组以用于传送,如本文所述的。在一些示例中,驱动器能够启用或禁用向从基于时间戳或优先级的队列分配分组以用于传送的网络接口650的卸载,如本文所述的。驱动器能够通告网络接口650的能力以执行网络接口650的一个或多个方面,从而从基于时间戳或优先级的队列分配分组以用于传送,如本文所述的。

尽管未明确示出,但将理解,系统600能够包含装置之间的一个或多个总线或总线系统,诸如存储器总线、图形总线、接口总线或其它。总线或其它信号线能够在通信上或在电上将组件耦合在一起,或者既在通信上又在电上耦合所述组件。总线能够包含物理通信线路、点对点连接、桥、适配器、控制器或其它电路模块或组合。总线能够包含例如以下的一个或多个:系统总线、外围组件互连(PCI)总线、超传输或工业标准架构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)或电气与电子工程师协会(IEEE)标准1394总线(Firewire)。

在一个示例中,系统600包含接口614,该接口能够耦合到接口612。在一个示例中,接口614表示接口电路,其能够包含独立组件和集成电路模块。在一个示例中,多个用户接口组件或外围组件或二者耦合到接口614。网络接口650为系统600提供在一个或多个网络上与远程装置(例如服务器或其它计算装置)进行通信的能力。网络接口650能够包含以太网适配器、无线互连组件、蜂窝网络互连组件、USB(通用串行总线)或基于其它有线或无线标准的或专有的接口。网络接口650能够向相同数据中心或机架中的装置或者远程装置传送数据,这能够包含发送存储在存储器中的数据。

网络接口650的一些示例是基础设施处理单元(IPU)或数据处理单元(DPU)的部分,或者由IPU或DPU使用。xPU能够至少指代IPU、DPU、GPU、GPGPU或其它处理单元(例如加速器装置)。IPU或DPU能够包含具有一个或多个可编程流水线或固定功能处理器的网络接口以执行本能够由CPU所执行的操作的卸载。IPU或DPU能够包含一个或多个存储器装置。在一些示例中,IPU或DPU能够执行虚拟交换机操作,管理存储事务(例如压缩、加密、虚拟化),并且管理在其它IPU、DPU、服务器或装置上执行的操作。

在一个示例中,系统600包含(一个或多个)输入/输出(I/O)接口660。I/O接口660能够包含一个或多个接口组件,用户与系统600通过其交互(例如音频、字母数字、触觉/触摸或其它互动)。外围接口670能够包含上文未明确地提及的任何硬件接口。外围装置通常指代从属连接到系统600的装置。从属连接是其中系统600提供软件平台或硬件平台或二者的连接,操作在其上执行,并且用户与其交互。

在一个示例中,系统600包含存储子系统680以按非易失性方式来存储数据。在一个示例中,在某些系统实现中,存储装置680的至少某些组件能够与存储器子系统620的组件重叠。存储子系统680包含(一个或多个)存储装置684,该存储装置能够是或包含用于按非易失性方式来存储大量数据的任何常规介质,诸如一个或多个基于光、固态或磁性的盘或组合。存储装置684以持久状态保存代码或指令和数据686(例如尽管到系统600的电力中断,也保留值)。存储装置684能够通常被视为“存储器”,但存储器630一般是向处理器610提供指令的执行或操作存储器。而存储装置684是非易失性的,存储器630能够包含易失性存储器(例如,如果系统600的电力被中断,则数据的值或状态是不确定的)。在一个示例中,存储子系统680包含控制器682以与存储装置684接合。在一个示例中,控制器682是接口614或处理器610的物理部分,或者能够包含处理器610和接口614二者中的电路或逻辑。

易失性存储器是存储器,其状态(并且因此存储在它中的数据)是不确定的(如果装置的电力被中断)。动态易失性存储器使用刷新存储在装置中的数据来保持状态。动态易失性存储器的一个示例包含DRAM(动态随机存取存储器)或某种变体(诸如同步DRAM(SDRAM))。易失性存储器的示例包含高速缓存。如本文所述的存储器子系统可与许多存储器技术兼容,诸如DDR3(双倍数据速率版本3,由JEDEC(联合电子装置工程委员会)在2007年6月16日最初发布)。DDR4 (DDR版本4,由JEDEC在2012年9月公布的初始规范)、DDR4E (DDR版本4)、LPDDR3(低功率DDR版本3,JESD209-3B,JEDEC,2013年8月)、LPDDR4 (LPDDR版本4,JESD209-4,由JEDEC在2014年8月最初公布)、WIO2(宽输入/输出版本2,JESD229-2,由JEDEC在2014年8月最初公布)、HBM(高带宽存储器,JESD325,由JEDEC在2013年10月最初公布)、LPDDR5(当前由JEDEC讨论)、HBM2 (HBM版本2,当前由JEDEC讨论)或其它或存储器技术以及基于此类规范的衍生或扩展的技术的组合。

非易失性存储器(NVM)装置是存储器,其状态是确定的,即便该装置的电力被中断。在一个实施例中,NVM装置能够包含块可寻址存储器装置,诸如NAND技术,或者更具体地,多阈值级NAND闪速存储器(例如,单级单元(“SLC”)、多级单元(“MLC”)、四级单元(“QLC”)、三级单元(“TLC”)或某种其它NAND)。NVM装置还能够包含字节可寻址就地写入三维交叉点存储装置或其它字节可寻址就地写入NVM装置(也被称为持久存储器),诸如单或多级相变存储器(PCM)或带开关的相变存储器(PCMS)、Intel® Optane™存储器、使用硫系相变材料(例如,硫系玻璃)的NVM装置、电阻存储器(包含金属氧化物基、氧空位基和导电桥随机存取存储器(CB-RAM))、纳米线存储器、铁电随机存取存储器(FeRAM、FRAM)、包含忆阻器技术的磁阻随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、基于自旋电子磁结存储器的装置、基于磁隧穿结(MTJ)的装置、基于DW(畴壁)和SOT(自旋轨道转移)的装置、基于晶闸管的存储装置或以上的一个或多个或其它存储器的组合。

电源(未描绘)向系统600的组件提供电力。更具体地,电源通常接合到系统600中的一个或多个供电以向系统600的组件提供电力。在一个示例中,供电包含AC到DC(交流到直流)适配器以插入到壁装插座中。此类AC电力能够是可再生能源(例如太阳能)电源。在一个示例中,电源包含DC电源,诸如外部AC到DC转换器。在一个示例中,电源或供电包含无线充电硬件以便经由靠近充电场而充电。在一个示例中,电源能够包含内部电池、交流电流供应、基于运动的供电、太阳能供电或燃料电池源。

在一示例中,能够使用处理器、存储器、存储装置、网络接口和其它组件的互连计算sled来实现系统600。能够使用高速互连,诸如:以太网(IEEE 802.3)、远程直接存储器存取(RDMA)、InfiniBand、互联网广域RDMA协议(iWARP)、传送控制协议(TCP)、用户数据报协议(UDP)、快速UDP互联网连接(QUIC)、聚合以太网上的RDMA (RoCE)、高速外围组件互连(PCIe)、Intel快速通道互连 (QPI)、Intel超级通道互连(UPI)、Intel片上系统构造(IOSF)、Omni-Path、计算高速链路(CXL)、HyperTransport、高速构造、NVLink、高级微控制器总线架构(AMBA)互连、OpenCAPI、Gen-Z、无限构造(IF)、用于加速器的高速缓存一致互连(CCIX)、3GPP长期演进(LTE)(4G)、3GPP 5G及其变体。数据能够被复制或存储到虚拟化存储节点或者被访问(使用诸如构造上的NVMe(NVMe-oF)或NVMe的协议)。

本文实施例可在各种类型的计算、智能电话、平板、个人计算机和联网设备(诸如,交换机、路由器、机架和刀片服务器(诸如,在数据中心和/或服务器场环境中采用的那些))中所实现。在数据中心和服务器场中使用的服务器包含阵列服务器配置,诸如基于机架的服务器或刀片服务器。这些服务器经由各种网络设备在通信中互连,诸如将服务器的集合分割成局域网(LAN),在LAN之间具有合适的交换和路由设施以形成私人内联网。例如,云托管设施可通常采用具有许多服务器的大型数据中心。刀片包含单独的计算平台,所述计算平台被配置成执行服务器类型功能,即,“卡上服务器”。因此,每个刀片包含常规服务器常用的组件,包含主印刷电路板(主板),所述主印刷电路板提供用于耦合合适集成电路(IC)和安装到主板的其它组件的内部配线(例如,总线)。

在一些示例中,本文所述的网络接口和其它实施例能够结合基站(例如3G、4G、5G等等)、宏基站(例如5G网络)、微微基站(例如IEEE 802.11兼容接入点)、毫微基站(例如用于点对多点(PtMP)应用)、本地部署数据中心、外部部署数据中心、边缘网络元件、雾(fog)网络元件和/或混合数据中心(例如使用虚拟化、云和软件定义的联网以跨物理数据中心和分布式多云环境来递送应用工作负载的数据中心)而被使用。

可使用硬件元件、软件元件或二者的组合来实现各种示例。在一些示例中,硬件元件可包含装置、组件、处理器、微处理器、电路、电路元件(例如晶体管、电阻器、电容器、电感器等等)、集成电路、ASIC、PLD、DSP、FPGA、存储单元、逻辑门、寄存器、半导体装置、芯片、微芯片、芯片集等等。在一些示例中,软件元件可包含软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、功能、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。确定是否使用硬件元件和/或软件元件来实现示例可变化(根据任何数量的因素(诸如,预期计算速率、功率级别、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其它设计或性能约束,如对于给定实现所需的))。处理器能够是硬件状态机、数字控制逻辑、中央处理单元或者任何硬件、固件和/或软件元件的一个或多个组合。

可使用一制造物品或至少一个计算机可读介质来实现一些示例,或者一些示例可被实现为一制造物品或至少一个计算机可读介质。计算机可读介质可包含非暂态存储介质以存储逻辑。在一些示例中,非暂态存储介质可包含能够存储电子数据的一个或多个类型的计算机可读存储介质,包含易失性存储器或非易失性存储器、可拆除或不可拆除存储器、可擦除或不可擦除存储器、可写或可重写存储器等等。在一些示例中,逻辑可包含各种软件元件,诸如软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、功能、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。

根据一些示例,计算机可读介质可包含非暂态存储介质以存储或维持指令,当所述指令由机器、计算装置或系统执行时,所述指令使所述机器、计算装置或系统执行根据所述示例的方法和/或操作。所述指令可包含任何合适的类型的代码,诸如源代码、编译代码、解释代码、可执行代码、静态代码、动态代码和诸如此类。可根据预定义计算机语言、方式或语法来实现指令以用于指示机器、计算装置或系统执行某个功能。可使用任何合适的高级、低级、面向对象、可视、编译和/或解释的编程语言来实现指令。

至少一个示例的一个或多个方面可由存储在至少一种机器可读介质上的代表性指令实现,所述代表性指令表示处理器内的各种逻辑,当由机器、计算装置或系统读取时,所述代表性指令使所述机器、计算装置或系统来制作执行本文所述技术的逻辑。称为“IP核”的此类表示可被存储在有形机器可读介质上,并且被提供给各种顾客或制造设施以加载到实际制造逻辑或处理器的制作机器中。

短语“一个示例”或“一示例”的出现并不一定全都指代相同示例或实施例。本文所述的任何方面能够与本文所述的任何其它方面或类似方面所组合,而不管是否针对相同附图或元件来描述方面。附图中描绘的框功能的划分、省略或包含并不推断用于实现这些功能的硬件组件、电路、软件和/或元件将必然在实施例中被划分、省略或包含。

可使用表达“耦合”和“连接”以及它们的派生词一起来描述一些示例。这些术语不一定旨在用作彼此的同义词。例如,使用术语“连接”和/或“耦合”的描述可指示:两个或更多元件处于与彼此的直接物理或电接触。然而,术语“耦合”可还意味着:两个或更多元件未处于与彼此的直接接触,还仍与彼此协作或交互。

本文中术语“第一”、“第二”和诸如此类不表示任何次序、量或重要性,而是被用于区分一个元件与另一元件。本文中术语“一(a/an)”不表示量的限制,而是表示引用的项目的至少一个项目的存在。本文中参照信号所使用的术语“有效”表示信号的状态,在所述状态中信号是起作用的,并且能够通过将任何逻辑电平(逻辑0或逻辑1)应用于信号来实现所述状态。术语“跟随”或“在...之后”能够指代紧随或跟随在某个或一些其它事件之后。还可根据备选实施例来执行其它序列的操作。另外,可添加或去除附加操作(取决于特定应用)。能够使用改变的任何组合,并且受益于此公开的本领域中的普通技术人员将理解许多变化、修改及其备选实施例。

除非另有明确说明,否则在如通常所使用的上下文内理解诸如短语“X、Y或Z的至少一个”的析取语言(disjunctive language)以呈现项目、术语等可以是X、Y或Z或者其任何组合(例如X、Y和/或Z)。因此,此类析取语言通常并不意图并且不应该暗示某些实施例要求X的至少一个、Y的至少一个Y或Z的至少一个各自都存在。另外,除非另有明确说明,诸如短语“X、Y和Z的至少一个”的合取语言(conjunctive language)也应该被理解成表示X、Y、Z或其任何组合,包含“X、Y和/或Z”。

下文提供本文公开的装置、系统和方法的说明性示例。装置、系统和方法的实施例可包含下文所述的示例的任何一个或多个和任何组合。

一示例包含一种网络接口装置,所述网络接口装置包含用于基于离开时间来选择分组以用于传送的电路模块(其忽略暂停命令)。在一些示例中,暂停命令是暂停分组。在一些示例中,暂停命令是优先级流控制(PFC)分组。

示例1包含一个或多个示例,并且包含一种设备,所述设备包括:网络接口装置,所述网络接口装置包括:用于基于与分组关联的离开时间戳值和当前时间值从至少一个基于时间的队列和至少一个基于优先级的队列之中来选择所述分组以用于传送的电路模块,以及用于导致所选择的分组的传送的电路模块。

示例2包含一个或多个示例,其中,所述电路模块要用于基于所述当前时间值并且基于所关联的离开时间戳值从所述至少一个基于时间的队列来选择分组以用于传送。

示例3包含一个或多个示例,其中,所述电路模块要用于从所述至少一个基于时间的队列来选择分组以用于传送,而不考虑正与所述至少一个基于时间的队列关联的优先级流控制或暂停。

示例4包含一个或多个示例,其中,所述网络接口装置包括要用于基于所关联的离开时间戳值和所述当前时间值来丢弃来自基于时间的队列的所述分组的电路模块。

示例5包含一个或多个示例,其中,为了从所述至少一个基于优先级的队列来选择分组以用于传送,所述电路模块要用于应用以下的一个或多个:轮询(RR)、差额轮询(DRR)、差额加权轮询(DWRR)、优先化弹性轮询(PERR)、加权公平排队(WFQ)或严格优先级。

示例6包含一个或多个示例,并且包含存储器,所述存储器在操作时,要用于存储与所述至少一个基于时间的队列或所述至少一个基于优先级的队列关联的分组。

示例7包含一个或多个示例,其中,所述网络接口装置包括以下的一个或多个:网络接口控制器(NIC)、启用远程直接存储器存取(RDMA)的NIC、SmartNIC、路由器、交换机、转发元件、基础设施处理单元(IPU)、数据处理单元(DPU)或网络附连的电器。

示例8包含一个或多个示例,并且包含服务器以请求所述分组的传送并且指示所关联的离开时间戳值。

示例9包含一个或多个示例,并且包含数据中心,所述数据中心包括所述服务器和第二服务器,其中,所述网络接口装置要用于调节到所述第二服务器的多个分组和所选择的分组的分组传送。

示例10包含一个或多个示例,并且包含至少一个计算机可读介质,所述至少一个计算机可读介质包括存储在其上的指令,所述指令如果由一个或多个处理器执行,则使所述一个或多个处理器:配置网络接口装置以:基于与分组关联的离开时间戳值和当前时间值从至少一个基于时间的队列和至少一个基于优先级的队列之中来选择所述分组以用于传送。

示例11包含一个或多个示例,其中,网络接口装置要用于从所述至少一个基于时间的队列来选择分组以用于传送,而不考虑正与所述至少一个基于时间的队列关联的优先级流控制或暂停。

示例12包含一个或多个示例,包括存储在其上的指令,所述指令如果由一个或多个处理器执行,则使所述一个或多个处理器:配置所述网络接口装置以:基于所述离开时间戳值和所述当前时间值来丢弃来自基于时间的队列的所述分组。

示例13包含一个或多个示例,其中,为了从所述至少一个基于优先级的队列来选择分组以用于传送,所述网络接口装置要用于应用以下的一个或多个:轮询(RR)、差额轮询(DRR)、差额加权轮询(DWRR)、优先化弹性轮询(PERR)、加权公平排队(WFQ)或严格优先级。

示例14包含一个或多个示例,其中,为了基于所述离开时间戳值和所述当前时间值从所述至少一个基于时间的队列来选择分组以用于传送,所述网络接口装置要用于调节分组传送。

示例15包含一个或多个示例,其中,所述网络接口装置包括以下的一个或多个:网络接口控制器(NIC)、启用远程直接存储器存取(RDMA)的NIC、SmartNIC、路由器、交换机、转发元件、基础设施处理单元(IPU)、数据处理单元(DPU)或网络附连的电器。

示例16包含一个或多个示例,并且包含一种方法,所述方法包括:基于与分组关联的传送时间戳和当前时间戳值,在网络接口装置从至少一个基于时间戳的队列和至少一个基于优先级的队列之中来选择所述分组以分配到传送时隙。

示例17包含一个或多个示例,其中,在网络接口装置从所述至少一个基于时间戳的队列来选择分组以分配到传送时隙包括:基于所述当前时间戳值和所述传送时间戳从所述至少一个基于时间戳的队列来选择所述分组以用于传送。

示例18包含一个或多个示例,其中,在网络接口装置从所述至少一个基于时间戳的队列来选择所述分组以分配到传送时隙不考虑正与所述至少一个基于时间戳的队列关联的优先级流控制或暂停。

示例19包含一个或多个示例,包括:基于所述传送时间戳和所述当前时间戳值来丢弃来自基于时间戳的队列的所述分组。

示例20包含一个或多个示例,其中,在网络接口装置从所述至少一个基于优先级的队列来选择分组以分配到传送时隙基于以下的一个或多个:轮询(RR)、差额轮询(DRR)、差额加权轮询(DWRR)、优先化弹性轮询(PERR)、加权公平排队(WFQ)或严格优先级。

相关技术
  • 分组处理装置、入口分组处理电路和出口分组处理电路
  • 分组处理装置、入口分组处理电路和出口分组处理电路
技术分类

06120115982508