用于多核计算环境的硬件队列调度的制作方法

文档序号:29571597发布日期:2022-04-09 04:05阅读:663来源:国知局
用于多核计算环境的硬件队列调度的制作方法
用于多核计算环境的硬件队列调度
相关申请
1.本专利源于申请,该申请要求于2020年2月21日提交的第62/979,963号美国临时专利申请和2019年9月11日提交的第62/899,061号美国临时专利申请的权益。美国临时专利申请第62/979,963号和美国临时专利申请第62/899,061号通过引用整体结合于此。此处要求对美国临时专利申请第62/979,963号以及美国临时专利申请第62/899,061号的优先权。
技术领域
2.本公开总体上涉及多核计算环境,并且更具体地,涉及用于多核计算环境的硬件队列调度。


背景技术:

3.多接入边缘计算(mec)是一种网络架构概念,其可在网络(诸如蜂窝网络)的边缘处实现云计算功能和基础设施技术服务环境。使用mec,数据中心云服务和应用可以在更靠近终端用户或计算设备的位置进行处理,以改善网络操作。此类处理可以消耗更接近终端用户或计算设备的处理资源的不成比例的量的带宽,从而增加网络的等待时间、拥塞和功耗。
附图说明
4.图1是包括示例多核计算系统的示例多核计算环境的图示。
5.图2是包括示例动态负荷平衡器(dlb)的图1的示例多核计算系统的示例实现的图示。
6.图3是由图1和/或图2的示例多核计算系统执行以处理示例数据流的第一示例工作流的图示。
7.图4是由图1和/或图2的示例多核计算系统执行以处理示例数据流的基于排序调度的第二示例工作流的图示。
8.图5是图4的第二示例工作流的注释图示。
9.图6是由图1和/或图2的示例多核计算系统执行以处理示例数据流的基于原子调度的第三示例工作流的图示。
10.图7是中央处理单元(cpu)中的第一示例处理核利用率的图示。
11.图8是包括图2-图6的示例dlb中的一个dlb的cpu中的第二示例处理核利用率的图示。
12.图9是cpu中的示例吞吐量的图示。
13.图10是包括图2-图6的示例dlb中的一个dlb的cpu中的示例吞吐量的图示。
14.图11-图13是cpu中的静态固定核利用率的图示。
15.图14-图16是包括图2-图6的示例dlb中的一个dlb的cpu中的动态可缩放核利用率
的图示。
16.图17是描述基于具有和不具有图2-图6的示例dlb的cpu的示例吞吐量参数的表。
17.图18是图2-图6的dlb中的一个(多个)dlb的示例实现的框图。
18.图19是示例生产者和消费者调度系统的图示,包括图2-图6和/或图18的dlb中的一个dlb。
19.图20是促进跨多核计算架构的计算任务的调度的图2-图6、图18和/或图19的dlb中的一个dlb的图示。
20.图21是促进跨多核计算架构的计算任务的调度的图2-图6、图18、图19和/或图20的dlb中的一个dlb的图示。
21.图22是促进跨多核计算架构的计算任务的调度的图2-图6、图18、图19、图20和/或图21的dlb中的一个dlb的图示。
22.图23是促进跨多核计算架构的计算任务的调度的图2-图6、图18、图19、图20、图21和/或图22的dlb中的一个dlb的图示。
23.图24是促进跨多核计算架构的计算任务的调度的图2-图6、图18、图19、图20、图21、图22和/或图23的(多个)dlb的示例虚拟化实现的图示。
24.图25a-图25d描绘了由图2-图6、图18、图19、图20、图21、图22、图23和/或图24的(多个)dlb实现的不同类型队列的示例实现。
25.图26是使用图2-图6、图18、图19、图20、图21、图22、图23和/或图24的(多个)dlb的第四示例工作流的图示。
26.图27是可使用图2-图6、图18、图19、图20、图21、图22、图23和/或图24的(多个)dlb实现的示例应用的图示。
27.图28是可使用图2-图6、图18、图19、图20、图21、图22、图23、图24和/或图26的(多个)dlb实现的另一示例应用的图示。
28.图29是图28的示例应用的注释图示。
29.图30是可使用图2-图6、图18、图19、图20、图21、图22、图23、图24、图26和/或图28的(多个)dlb实现的另一示例应用的图示。
30.图31是可使用图2-图6、图18、图19、图20、图21、图22、图23、图24、图26和/或图28的(多个)dlb实现的又一示例应用的图示。
31.图32是与示例三级流水线中的收费点和归还点相对应的第五示例工作流的图示,该第五示例工作流可使用图2-图6、图18、图19、图20、图21、图22、图23、图24、图26和/或图28的(多个)dlb实现。
32.图33-图34描绘了与图19的生产者和消费者调度系统的操作相对应的示例数据流图。
33.图35是描述硬件控制字和消费者队列元素的示例实现的示例表,该示例表可使用图2-图6、图18、图19、图20、图21、图22、图23、图24、图26和/或图28的(多个)dlb实现。
34.图36是示例多核处理器的示例实现的框图,该示例多核处理器包括图2-图6、图18、图19、图20、图21、图22、图23、图24、图26、图28、图33和/或图34的dlb中的一个dlb。
35.图37是示例多核处理器的另一示例实现的框图,该示例多核处理器包括图2-图6、图18、图19、图20、图21、图22、图23、图24、图26、图28、图33和/或图34的dlb中的一个dlb。
36.图38是与实现图2-图6、图18、图19、图20、图21、图22、图23、图24、图26、图28、图33和/或图34的dlb的示例现场可编程门阵列(fpga)进行通信的示例多核处理器的图示。
37.图39是包括图38的示例多核处理器和示例fpga的示例系统的图示。
38.图40a-图40d描绘了图39的系统的不同示例实现。
39.图41是使用系统存储器执行的示例生产者和消费者调度系统的图示。
40.图42是表示可以被执行以实现图2-图6、图10、图14、图16、图18-图24、图26、图28、图33、图34和/或图36-图40d的dlb以动态地对数据流进行负荷平衡的示例机器可读指令的流程图。
41.图43是表示可以被执行以实现图2-图6、图10、图14、图16、图18-图24、图26、图28、图33、图34和/或图36-图40d的dlb以移动示例数据指令的示例机器可读指令的流程图。
42.图44是表示可以被执行以实现图2-图6、图10、图14、图16、图18-图24、图26、图28、图33、图34和/或图36-图40d的dlb以基于事件动态地对数据流进行负荷平衡的示例机器可读指令的流程图。
43.图45是表示可以被执行以实现图2-图6、图10、图14、图16、图18-图24、图26、图28、图33、图34和/或图36-图40d的dlb以动态地对数据流进行负荷平衡的示例机器可读指令的流程图。
44.图46是表示可以被执行以实现图2-图6、图10、图14、图16、图18-图24、图26、图28、图33、图34和/或图36-图40d的dlb以动态地对数据流进行负荷平衡的示例机器可读指令的流程图。
45.图47是表示可以被执行以实现示例软件分发平台的示例机器可读指令的流程图,该示例软件分发平台用于将软件分发到图2-图6、图10、图14、图16、图18-图24、图26、图28、图33、图34和/或图36-图40d的dlb。
46.图48是被构造成用于执行图42-图46的示例机器可读指令以实现图2-图6、图10、图14、图16、图18-图24、图26、图28、图33、图34和/或图36-图40d的dlb的示例处理平台的框图。
47.图49是被构造成用于执行图42-图46的示例机器可读指令以实现图2-图6、图10、图14、图16、图18-图24、图26、图28、图33、图34和/或图36-图40d的dlb的另一示例处理平台的框图。
48.图50是被构造成用于执行图42-图46的示例机器可读指令以实现图2-图6、图10、图14、图16、图18-图24、图26、图28、图33、图34和/或图36-图40d的dlb的又一示例处理平台系统的框图。
49.图51是示例软件分发平台的框图,该示例软件分发平台用于将软件(例如,与图42-图46的示例计算机可读指令相对应的软件)分发给诸如消费者(例如,用于许可、销售和/或使用)、零售商(例如,用于销售、转售、许可和/或分许可)、和/或原始设备制造商(oem)(例如,用于包括在要分发给例如零售商和/或直接购买客户的产品中)之类的客户端设备。
具体实施方式
50.这些图并未按比例绘制。一般来说,贯穿(多个)附图和所附书面说明书,相同的附
图标记将用于指代相同或相似的部分。除非另有指示,否则连接参考(例如,附连的、耦合的、连接的、以及结合的)应被广义地解释并且可包括元件集合之间的中间构件以及元件之间的相对移动。由此,连接参考不一定暗示两个元件直接地连接并彼此处于固定的关系。
51.除非另有特别说明,否则诸如“第一”、“第二”、第三”等的描述符在本文中使用而不以任何方式强加或以其他方式指示优先级、物理顺序、列表中的排列和/或排序的任何含义,但仅用作标签和/或任意名称来区分元素以便于理解所公开的示例。在一些示例中,描述符“第一”可以用于指代具体实施方式中的要素,而在权利要求中可以使用诸如“第二”或“第三”之类的不同描述符来指代同一要素。在此类情况下,应当理解,此类描述符仅用于清楚地标识那些可能例如以其他方式共享相同名称的要素。
52.多接入边缘计算(mec)是一种网络架构概念,其可在网络(诸如蜂窝网络)的边缘处实现云计算功能和基础设施技术服务环境。使用mec,数据中心云服务和应用可以在更靠近终端用户或计算设备的位置进行处理,以改善网络操作。
53.虽然mec是边缘计算的演进的重要部分,但云和通信服务提供商正在解决变换云和通信服务提供商的网络的需求,为第五代蜂窝网络技术(即,5g)做准备。为了满足支持5g的下一代网络的需求,云服务提供商可以用更敏捷和灵活的方法取代固定功能专有硬件,这些方法依赖于最大限度地利用多核边缘和数据中心服务器的能力。下一代服务器边缘和数据中心联网可以包括在整个数据中心以及一直到边缘(并且包括边缘)虚拟化并部署联网功能的能力。高分组吞吐量增加了对更好的端到端等待时间、服务质量(qos)和通信量管理的需求。此类需求进而推动了跨网络的数据平面流水线的各阶段之间高效数据移动和数据共享的需求。
54.本文所公开的队列管理可以通过减少cpu核在cpu的核之间对指向数据结构、数据分组等的指针进行编组所花费的时间来提供网络中的效率。例如,本文公开的硬件队列管理可以通过放弃将数据结构和指针从一个cpu核传递到另一个cpu核的开销来提高与跨cpu核处理网络数据相关的系统性能(例如,网络系统性能、5g系统性能等)。
55.本文公开的队列管理可以通过硬件队列管理来实现,硬件队列管理在硬件中实行队列管理。在一些公开的示例中,硬件队列管理可以由示例硬件队列管理器(hqm)或实现为动态负荷平衡器(dlb)的hqm来实现。例如,当hqm实现为dlb时,hqm可以实现、实行和/或以其他方式执行动态负荷平衡功能、计算或处理任务等。如本文所使用的,术语“硬件队列管理器”、“硬件排队管理器”和“hqm”是等效的并且可互换地使用。如本文所使用的,术语“动态负荷平衡器”和“dlb”是等效的且可互换地使用,并且指经由hqm实现的负荷平衡器(lb)。
56.在一些公开的示例中,hqm可以启用流水线化分组处理,并支持每秒数亿次队列管理和负荷平衡操作,以供运行到完成和流水线化网络处理方法。本文公开的硬件队列管理可以替换软件队列(例如,与软件队列管理相关联的队列),尤其是与多个生产者cpu核和/或多个消费者cpu核相关联的软件队列。如本文所使用的,术语“生产者核”和“生产者cpu核”可互换地使用,并指创建和/或以其他方式生成用于入列到hqm的元素(例如,队列元素)的核。如本文所使用的,术语“消费者核”和“消费者cpu核”可互换地使用,并指作用于从hqm出列的结果的核。
57.与软件队列管理相比,使用本文公开的示例hqm的应用可以经由有效的工作负荷分布从增强的总体系统性能中获益,其中软件排队的最典型用途之一是负荷平衡。典型的
排队方案可以使用cpu核来分发工作,这使cpu核承担排队和重新排序任务,而不是使用cpu核通过基于硬件的队列管理内置负荷平衡功能进行高附加值工作者核处理,如本文所公开的。本文公开的示例hqm可以移除直接的核到核交互,并实行硬件中的负荷平衡。
58.尺寸标注(dimensioning)是指在计算网络或系统架构的整个切片上分配、分发和/或以其他方式调度计算应用的过程。在一些实例中,可以通过部署生产者-消费者模型在计算网络中实现尺寸标注。生产者(例如,数据生产者)可以指将某种类型的消息放入队列(例如,缓冲区、计算队列、计算任务队列等)的代理(例如,硬件代理、软件代理等)。消费者(例如,数据消费者)可以指相同的代理或不同的代理,该代理可以从队列中移除消息以供处理。在一些实例中,该消息可指代表一个或多个指针(例如,一个或多个标识符)的机器可读数据,该指针与存储器(例如,非易失性存储器、易失性存储器等)中的数据或要执行的计算任务的其他指示相对应。当生产者尝试将消息添加到满队列或消费者尝试从空队列中移除消息时,可能出现问题。
59.用于在基于mec的应用和数据中心中部署生产者-消费者模型的现有技术可以包括管理队列的软件,该队列包括由处理器或其他类型的处理器电路系统的一个或多个核(例如,计算核、硬件核、处理核等)执行的数据。此类现有技术可以随机或者不考虑核的即时利用将数据分配(例如,静态分配)到要执行的核。例如,现有技术可以将要处理的传入数据分配给正在经历繁重计算工作负荷的核,从而由于核的处理能力或带宽不可用而在处理传入数据时产生瓶颈。在此类示例中,传入数据可以与大象流或胖流(fat flow)相对应。在一些此类示例中,可以将核指派给网络接口控制器(nic),以从nic接收大象流的数据分组。nic可以经由接收侧缩放(rss)随机地喷射分组,从而减少与核和/或更一般地包括核的处理器相关联的带宽。如本文所使用的,大象流或胖流是单个会话、相对长时间运行的网络连接,其消耗核和/或更一般地包括核的处理器的大量或不成比例的量的带宽。大象流或胖流可能非常大(总字节数)或通信量很大,并且时间或持续时间非常长。
60.因此,此类现有技术未考虑计算架构(例如,多核计算架构)中计算资源的资源可用性、成本结构等,并且因此可能受到锁等待时间、存储器等待时间、高速缓存行为、轮询多个队列等的影响,这会增加处理传入数据所需的时间。锁等待时间可以响应于自旋锁或自旋锁条件而发生。自旋锁是指线程(例如,计算线程、核线程、硬件线程等)尝试获取但在循环中等待(即,自旋)同时重复检查锁是否可用的锁。由于线程保持活动状态,但没有执行有用的任务,因此使用此类锁类似于忙等待。一旦获取,自旋锁将通常一直保持到它们被显式释放为止,尽管在一些实现中,如果等待的线程(例如,保持锁的线程)阻塞或进入睡眠模式,自旋锁可能自动释放。
61.自旋锁如果保持持续时间较长,则变得浪费,因为它们可能阻止其他线程运行并需要重新调度。线程保持锁的时间越长,线程在保持锁时将被操作系统(os)调度程序中断的风险就越大。如果发生这种情况,其他线程将留在保持模式(即,自旋)(例如,重复尝试获取锁),而保持锁的线程不朝着释放锁的方向行进。结果是无限期延期,直到保持锁的线程可以完成并释放锁为止。在单处理器系统上尤其如此,在单处理器系统中,具有相同优先级的每个等待线程很可能浪费其量子(例如,分配线程可以运行的时间)自旋,直到保持锁的线程最终完成为止。
62.本文公开的示例包括hqm,用于改进计算机网络架构(诸如多核计算机网络架构)
中的负荷平衡和工作负荷分布。本文公开的示例减少和/或以其他方式消除自旋锁惩罚。在一些公开的示例中,hqm能够在多个生产者(例如,生产者核)与多个消费者(例如,消费者核)之间对数据(例如,蜂窝或其他无线网络中的数据分组)进行流水线化处理。生产者核可以将计算任务的调度迁移到示例hqm,以将生产者核的工作负荷分配给多个消费者核的可用消费者核。通过将调度迁移到示例hqm,生产者核可用于执行高附加值核处理任务。有利地,示例hqm可以移除直接的核到核交互,并在硬件中执行调度和相对应的负荷平衡任务。
63.在一些公开的示例中,hqm实现负荷平衡器(例如,dlb),以改进计算机网络架构中的负荷平衡和工作负荷分布。在此类公开的示例中,dlb可以增加(例如,动态增加)用于促进大象流的分发、传输和/或处理的消费者核的数量,以优化和/或以其他方式提高与大象流相关联的吞吐量、线速(line rate)、带宽等。例如,dlb可以基于调度类型(例如,原子调度、排序调度等)将大象流分发给一个或多个消费者核,从一个或多个消费者核接收处理后的大象流,以及重新排序和/或聚合处理后的大象流,以准备分发和/或传输到不同的硬件、不同的逻辑实体等。
64.图1是示例多核计算环境100的图示。多核计算环境100包括示例设备环境102、示例边缘网络104、示例核网络106和示例云网络107。在该示例中,设备环境102是5g设备环境,其有助于使用诸如基于5g的无线网络(例如,5g蜂窝网络)之类的无线网络执行计算任务。
65.设备环境102包括示例设备(例如,计算设备)108、110、112、114、116。设备108、110、112、114、116包括第一示例设备108、第二示例设备110、第三示例设备112、第四示例设备114和第五示例设备116。第一设备108是5g支持互联网的智能手机。或者,第一设备108可以是平板电脑、支持互联网的笔记本电脑等。第二设备110是交通工具(例如,内燃机交通工具、电动交通工具、混合动力交通工具等)。例如,第二设备110可以是包括电子控制单元或其他硬件的交通工具,在一些示例中,其可以是自动驾驶、自主或计算机辅助驾驶交通工具。
66.第三设备112是空中交通工具。例如,第三设备112可以是包括在诸如无人机之类的无人空中交通工具(uav)(例如,自主uav、人类或用户控制的uav等)中的处理器或其他类型的硬件。第四设备114是机器人。例如,第四设备114可以是协作机器人或在装配、抬高、制造等任务类型中使用的其他类型的机械。
67.第五设备116是医疗相关联的设备。例如,第五设备116可以是存储和/或处理医疗保健记录的计算机服务器。在其他示例中,第五设备116可以是医疗设备,诸如输液泵、磁共振成像(mri)机器、外科机器人、生命体征监测设备等。在一些示例中,设备108、110、112、114、116中的一个或多个可以是不同类型的计算设备,诸如服务器、个人计算机、工作站、自学习机(例如,神经网络)、移动设备(例如,手机、智能电话、诸如ipad
tm
的平板)、个人数字助理(pda)、互联网设备、dvd播放器、cd播放器、数字视频记录仪、蓝光播放器、游戏控制台、个人视频记录仪、机顶盒、耳机或其他可穿戴设备、或任何其他类型的计算设备。在一些示例中,可能存在比图1所示更少或更多的设备。
68.设备108、110、112、114、116,和/或更一般地设备环境102,经由第一示例网络118与边缘网络104通信。第一网络118是蜂窝网络(例如,5g蜂窝网络)。例如,第一网络118可以通过天线、无线电塔等和/或其组合来实现和/或以其他方式促进。另外或替代地,第一网络
118中的一个或多个可以是以太网连接、数字订户线路(dsl)连接、电话线连接、同轴电缆系统、卫星系统、直线对传式无线系统、蜂窝电话系统等和/或其组合。
69.在图1所示的示例中,边缘网络104包括第一网络118、示例远程无线电单元(rru)120、示例分布式单元(du)122和示例集中式单元(cu)124。在该示例中,du 122和/或cu 124是多核计算系统。例如,du 122和cu 124中的一个或多个可以包括多个处理器,每个处理器包括多个核(例如,处理器核)。在此类示例中,du 122和/或cu 124是诸如多核边缘服务器之类的边缘服务器(例如,5g边缘服务器),这些边缘服务器可以实行通过边缘网络104将数据流(例如,通信流、分组流、一个或多个数据分组的流等)分发到不同目的地(例如,5g设备环境102、核网络106等)。在一些示例中,可以使用比图1所示更少或更多的第一网络118、rru 120、du 122和/或cu 124。
70.在该示例中,rru 120是无线电基站中的无线电收发器(例如,远程无线电收发器,也称为远程无线电头(rrh))。例如,rru 120是可以包括射频(rf)电路系统、模拟-数字/数字-模拟转换器和/或连接到运营商(例如,蜂窝运营商或提供商)的网络的上功率转换器/下功率转换器的硬件。在此类示例中,rru 120可以将数字信号转换为rf,将rf信号放大到期望的功率水平,并且经由天线在空气中辐射放大后的rf信号。在一些示例中,rru 120可以经由天线从空中接收期望的频带的信号并放大接收到的信号。rru 120被称为远程,因为rru 120通常安装在与基站硬件物理距离较远的天线杆顶部或塔顶位置,基站硬件通常安装在室内机架安装的位置或装置中。
71.在图1的图示示例中,rru 120与du 122中的相应一个耦合和/或以其他方式通信。在该示例中,du 122包括实现实时层1(l1)调度功能(例如,物理层控制)和/或层2(l2)调度功能(例如,无线电链路控制(rlc)、介质访问控制(mac)等)的硬件。在该示例中,cu 124包括实现层3调度功能(诸如分组数据聚合控制(pdcp)和/或无线电资源控制(rrc)功能)的硬件。在该示例中,cu 124中的第一cu 124是集中单元控制平面(cu-cp),而cu 124中的第二cu 124是集中单元用户平面(cu-up)。
72.在该示例中,du 122中的一个或多个和/或cu 124中的一个或多个中的至少一个实现虚拟化无线电接入网络(vran)。例如,du 122中的一个或多个和/或cu 124中的一个或多个可以基于网络功能虚拟化(nfv)的原理在供应商不可知硬件(例如,商品服务器硬件)上执行、运行和/或以其他方式实现虚拟化基带功能。nfv是一种网络架构概念,它使用基础设施技术(it)虚拟化的技术将整个类别的网络节点功能虚拟化为构建块,这些构建块可以连接或链接在一起,以创建通信服务。
73.在图1的图示示例中,第一网络118与rru 120之间的(多个)第一连接实现边缘网络104的前传。du 122与cu 124之间的(多个)第二连接实现边缘网络104的中传。cu 124与核网络106之间的(多个)第三连接实现边缘网络104的回传。
74.在图1的图示示例中,核网络106包括示例核设备126。在该示例中,核设备126是多核计算系统。例如,核设备126中的一个或多个可以包括多个处理器,每个处理器包括多个核(例如,处理器核)。例如,核设备126中的一个或多个可以是服务器(例如,物理服务器、虚拟服务器等和/或其组合)。在此类示例中,核设备126中的一个或多个可以用与du 122、cu 124等相同的硬件实现。在一些示例中,核设备126中的一个或多个可以是任何其他类型的计算设备。
75.核网络106由不同的逻辑层实现,包括示例应用层128、示例虚拟化层130和示例硬件层132。在一些示例中,核设备126是核服务器。在一些示例中,应用层128或其(多个)部分、虚拟化层130或其(多个)部分、或硬件层132或其(多个)部分实现核服务器。例如,核服务器可以由与核设备126中的第一核设备、核设备126中的第二核设备等和/或其组合相关联的应用层128、虚拟化层130和/或硬件层132来实现。在该示例中,应用层128可以结合电信网络的操作(诸如图1的多核计算环境100)来实现业务支持系统(bss)、操作支持系统(oss)、5g核(5gc)系统、网际协议多媒体核网络子系统(ims)等。在该示例中,虚拟化层130可以代表核设备126的物理硬件资源的虚拟化,诸如处理资源(例如,cpu、图形处理单元(gpu)等)、存储器资源(例如,非易失性存储器、易失性存储器等)、存储资源(例如,硬盘驱动器、固态盘驱动器等)、网络资源(例如,nic、网关、路由器等)等的虚拟化。在本示例中,虚拟化层130可以使用管理程序控制和/或以其他方式管理物理硬件资源的虚拟化,该管理程序可以运行由物理硬件资源的虚拟化构建和/或以其他方式组成的一个或多个虚拟机(vm)。
76.核网络106与云网络107通信。在该示例中,云网络107可以是私有或公共云服务提供商。例如,可以使用虚拟和/或物理硬件、软件和/或固件资源来实现云网络107以执行计算任务。
77.在图1的图示示例中,描绘了多个示例通信路径134、136、138,包括第一示例通信路径134、第二示例通信路径136和第三示例通信路径138。在该示例中,第一通信路径134是同5g设备环境102的设备108、110、112、114、116中的一个(多个)与边缘网络104的第一网络118、rru 120、du 122和/或cu 124中的一个(多个)之间的通信相对应的设备到边缘通信路径。第二通信路径136是同边缘网络104的第一网络118、rru 120、du 122和/或cu 124中的一个(多个)与核网络106的核设备126中的一个(多个)之间的通信相对应的边缘到核通信路径。第三通信路径138是同设备108、110、112、114、116中的一个(多个)与核设备126中的一个(多个)之间的、经由边缘网络104的第一网络118、rru 120、du 122和/或cu 124中的一个(多个)的通信相对应的设备到边缘到核通信路径。
78.在一些示例中,响应于将工作负荷(例如,计算工作负荷)低效地分发到处理器的核(例如,包括在du 122、cu 124等中的处理器的核和/或其组合),与边缘网络104相关联的带宽可以被降低、减少等。例如,du 122、cu 124等中的每一个可以包括包含多个核(例如,计算核、处理核等)的至少一个处理器。在一些此类示例中,与处理器通信的边缘网络104的nic可以将大象流分发到处理器的单个核。在一些此类示例中,单个核可能需要额外的时间来处理大象流。有利地,本文描述的示例通过动态地缩放指派给大象流的执行的核的数量来改进边缘网络104和/或更一般地图1的多核计算环境100中的工作负荷的此类分发。
79.图2是示例多核计算系统200的示例实现的图示,该示例多核计算系统200包括包含示例动态负荷平衡器(dlb)202的示例处理器201。例如,多核计算系统200可实现图1的du 122、cu 124、核设备126等中的一个。多核计算系统200包括示例生产者核204、示例消费者核206、示例工作者核208、示例nic 210和示例应用(例如,固件和/或软件应用)212。
80.在示例操作中,应用212促进示例数据流214从示例输入216流向示例输出218。在该示例中,数据流214是大象流、胖流等。应用212经由nic 210中的第一nic将数据流214从输入216引导到生产者核204。有利地,多核计算系统200可以处理与本示例的数据流214或
不同数据流相关联的不同大小的数据分组。
81.在示例操作中,dlb 202中的一个或多个可以将数据从生产者核204入列(例如,将诸如队列元素之类的元素添加和/或以其他方式放置到队列上),并将经入列的数据出列(例如,从队列中移除元素,诸如队列元素)到工作者核208中的一个(多个),诸如工作者核208的第一工作者核(w1)、第二工作者核(w2)和/或第三工作者核(w3)。例如,dlb 202可以经由由实线表示的第一示例连接220将数据从生产者核204入列并将数据出列到工作者核208中的一个(多个)。在该示例中,经入列数据和/或经出列数据包括数据指针(例如,标识符、数据标识符等)、对存储在存储器中的数据的数据引用等。响应于获得经出列数据,工作者核208中的一个(多个)从多核计算系统200的存储器中检取数据流214的、被引用和/或以其他方式与经出列数据相对应的(多个)数据分组(或其他数据)。响应于获得(多个)数据分组,工作者核208中的一个(多个)执行与(多个)数据分组相关联的计算任务、计算操作等。例如,工作者核208可以执行和/或以其他方式处理网际协议安全(ipsec)任务(例如,加密任务、解密任务等)、深度分组检查任务、防火墙任务等。
82.在示例操作中,响应于执行计算任务,工作者核208中的一个(多个)可以将与处理后的(多个)数据分组相对应的数据指针入列到dlb 202中的一个(多个),dlb 202进而将数据指针出列到消费者核206。响应于将数据指针从dlb 202中的一个(多个)出列,消费者核206检取相对应的处理后的(多个)数据分组。响应于检取处理后的(多个)数据分组,消费者核206可经由nic 210中的第二nic和/或应用212将处理后的(多个)数据分组发送到输出218。尽管在图2中描绘了nic 210的两个实例,但是替代地,这两个实例可以组合成单个实例和/或可以使用不同数量的nic 210。
83.图3是由包括示例dlb 304的示例多核计算系统302执行以处理示例数据流306的第一示例工作流300的图示。例如,多核计算系统302可实现图1的du 122、cu 124、核设备126等中的一个。多核计算系统302包括示例处理器308,其包括示例生产者核310、示例消费者核312和示例工作者核314以及示例nic 316。在一些示例中,生产者核310可与图2的生产者核204相对应。在一些示例中,消费者核312可与图2的消费者核206相对应。在一些示例中,工作者核314中的一个或多个可与图2的工作者核208中的一个(多个)相对应。
84.在图3的图示示例中,生产者核310是接收器(rx)核而消费者核312是发射器(tx)核。在该示例中,尽管分开描述,但生产者核310和消费者核312是同一核,但表示由该同一核执行的不同功能(例如,接收数据功能或任务、发送数据功能或任务等)。或者,生产者核310和消费者核312可以是不同的核。
85.在图3的图示示例中,尽管描绘了nic 316的两个实例,但nic 316的两个实例在本示例中与同一nic 316相对应。例如,nic 316可以向生产者核310发送数据,并且同一nic 316可以从消费者核312获取数据。或者,nic 316的两个实例可以是分开的nic。在一些示例中,nic 316中的一个或多个和与图1的边缘网络104和/或核网络106相关联的nic相对应。在一些示例中,nic 316中的一个或多个与图2的nic 210中的至少一个相对应。
86.在图3的图示示例中,尽管描绘了dlb 304的两个实例,但dlb 304的两个实例在本示例中与同一dlb 304相对应。例如,dlb 304可以包括在与生产者核310和消费者核312相同的处理器308中。在此类示例中,dlb 304可以将数据从生产者核310入列,并且同一dlb 304可以将数据出列到工作者核314中的一个(多个)。在一些示例中,可以使用dlb 304中的
多于一个dlb。例如,dlb 304的第一实例可以将数据从生产者核310入列用于第一数据流,而dlb 304的第二实例可以将数据从生产者核310入列用于第二数据流。
87.在第一工作流300中,在第一示例操作318期间,nic 316从设备(例如,图1的设备108、110、112、114、116中的一个(多个))获得数据流306(例如,大象流)。在第二示例操作320期间,生产者核310从nic 316获得数据流306的数据分组和与该数据分组相对应的指针。在第二操作320期间,与生产者核310相关联的dlb 304使指针入列。在第二操作320期间,工作者核314中的第一工作者核使指针从dlb 304(例如,从包括在dlb 304中的队列)出列。在第三示例操作322期间,工作者核314中的第一工作者核检取由指针标识的数据分组并且对该数据分组执行感兴趣的操作(例如,计算操作)。
88.在第一工作流300的第四示例操作324期间,dlb 304响应于工作者核314中的第一工作者核完成对数据分组的操作,将指针从工作者核314中的第一工作者核入列。在第四操作324期间,响应于入列,dlb 304将指针和与先前处理后的数据分组相对应的其他指针重新排序和/或聚合。在第四操作324期间,dlb 304将指针出列到消费者核312。在第五示例操作326期间,消费者核312检取与指针相对应的处理后的数据分组,并将处理后的数据分组发送到nic 316,nic 316进而将处理后的数据分组发送到不同的硬件、固件和/或软件。
89.有利地,dlb 304是nic不可知的并且可以与来自任何nic制造商的nic一起工作和/或以其他方式与其兼容。有利地,当nic 316实行的负荷平衡不足时,处理器308可以将调度任务从生产者核310迁移到dlb 304。有利地,处理器308可以使用dlb 304来防止核过载,诸如工作者核314中的一个或多个的利用率接近利用率上限,而工作者核314中的其他一个(多个)空闲和/或以其他方式处于睡眠或低功率状态。有利地,dlb 304通过将指针出列到工作者核314中的可用的一个(多个)以处理数据流306的数据分组来提供平衡的工作负荷核利用率。有利地,dlb 304和/或更一般地,处理器308可支持不同的工作负荷、数据流等,诸如短持续时间和小尺寸数据流、大象流等。有利地,dlb 304和/或更一般地,处理器308可处理不同的工作负荷、数据流等,以增加和/或以其他方式最大化核利用率并改进数据流306的服务质量(qos)。
90.图4是由示例多核计算系统402执行以处理示例数据流(流1)404的基于排序调度的第二示例工作流400的图示。在该示例中,多核计算系统402可与图1的du 122、cu 124、核设备126等中的一个相对应。多核计算系统402包括示例处理器406。在该示例中,处理器406可与图3的处理器308相对应。在该示例中,处理器406包括示例生产者核(rx核)408、示例dlb 410、示例工作者核(核)412和示例消费者核(tx核)414。
91.例如,生产者核408可与图3的生产者核310相对应。dlb 410可与图3的dlb 304相对应。工作者核412可与图3的工作者核314相对应。消费者核414可与图3的消费者核312相对应。
92.图5是由图4的多核计算系统402执行的基于排序调度的第二工作流400的注释图示。在第二工作流400中,生产者核408从数据源、流源等(例如,图3的nic 316)获得数据流404。在该示例中,数据流404是采用明文的大象流。在其他示例中,数据流404可以是采用密文或任何其他格式的数据流(诸如大象流)。
93.在图5的图示示例中,生产者核408将与数据流404的数据分组中的相应一个数据分组相对应的数据指针、数据引用等入列到dlb 410。在该示例中,生产者核408生成事件
(event_dev)并将其发送到dlb 410。响应于事件,dlb 410可以从事件(诸如数据指针)中提取数据,该事件引用和/或以其他方式标识数据流404、数据流404的数据分组等和/或其组合。
94.dlb 410动态地将分组分发到工作者核412中的可用的一个(多个)。例如,dlb 410可以基于排序调度将经入列的数据指针分发到工作者核412中的可用的一个(多个)。在此类示例中,工作者核412中的可用的一个(多个)可以将数据指针从dlb 410出列,检取与经出列的数据指针相对应的数据分组,并完成对检取到的数据分组的(多个)操作。
95.在一些示例中,dlb 410确定工作者核412中的一个或多个可用于基于与工作者核412中的一个或多个相关联的遥测数据(例如,核利用率百分比或参数、带宽、吞吐量等)执行工作负荷。在此类示例中,dlb 410可以使用排序队列。例如,当有一个或多个生产者(例如,一个或多个生产者核)排队等候与多个消费者(例如,消费者核)通信以及要求动态地平衡多个消费者之间的工作负荷时,dlb 410可以使用排序队列,然后恢复原始入列顺序。
96.在第二工作流400期间,工作者核412中的可用的一个(多个)工作者核执行(多个)工作负荷。例如,(多个)工作负荷可以与ipsec应用相对应,并且因此,工作者核412中的可用的一个(多个)工作者核可以对数据流404的数据分组进行认证、加密和/或解密。另外或替代地,工作者核412中的可用的一个(多个)工作者核可以执行任何其他类型的计算任务(例如,深度分组检查、防火墙功能或任务、在线或流式拍卖中的出价排序等)。
97.在第二工作流400期间,工作者核412中的可用的一个(多个)工作者核向dlb 410发送、递送和/或以其他方式提供标识处理后的数据分组的数据指针,以供重新排序和/或聚合。例如,dlb 410可以通过重新排序和/或聚合与数据分组相对应的数据指针来重新排序和/或聚合数据分组。响应于数据指针的重新排序和/或聚合,dlb 410将经重新排序和/或经聚合的数据指针出列到消费者核414,以使消费者核414将用于分发、传输等的相对应处理后的数据分组发送到不同的硬件、固件、软件,和/或其他不同的逻辑实体。
98.图6是由图4的多核计算系统402执行的基于原子调度的第三示例工作流600的图示。例如,dlb 410可以使用原子队列来使数据指针从生产者核408入列和/或使数据指针出列到消费者核414。在此类示例中,当一个或多个生产者排队等候与多个消费者通信以及要求基于流标识符(例如,数据流标识符)利用动态消费者亲和性(affinity)来平衡多个消费者之间的工作负荷时,dlb 410使用原子队列。例如,生产者核408可以从生产者(例如,图3的nic 316)获得示例数据流(流1、2和3)602,并且dlb 410可以将第一流标识符(流1)、第二流标识符(流2)和第三流标识符(流3)指派给数据流602中的相应数据流。在此类示例中,dlb 410可以分发数据流602,使数据流602被处理(例如,由工作者核412中的一个(多个)处理),对数据流602重新排序,和/或基于第一到第三流标识符聚合数据流602。
99.图6的图示示例有助于和/或以其他方式实行消费者在不使用锁的情况下对每个流变量进行操作。消费者亲和性是动态的。例如,流标识符与给定核(例如,生产者核、消费者核等)之间的亲和性随着流标识符从多核计算系统402中出现和消失而动态地移动。
100.图7是与示例nic 706通信的示例中央处理单元(cpu)704中的第一示例处理核利用率702的图示700。在该示例中,cpu 704不包括dlb,诸如图2的dlb 202、图3的dlb 304和/或图4-图6的dlb 410。在该示例中,由于缺乏先前处理器的动态和可缩放负荷平衡,cpu 704的核708的利用率未平衡。例如,cpu 704可以静态地将数据指派到核708以用于处理。在
此类示例中,由于cpu 704不基于核708的利用率将数据指派给核708,因此核708的利用率变得不平衡。
101.图8是与示例nic 806通信的示例cpu 804的第二示例处理核利用率802的图示800。在该示例中,cpu 804包括示例dlb 808。dlb 808可以与图2的dlb 202、图3的dlb 304和/或图4-图6的dlb 410的示例实现相对应和/或以其他方式是图2的dlb 202、图3的dlb 304和/或图4-图6的dlb 410的示例实现。有利地,通过利用dlb 808来促进数据分组的处理,cpu 804的核810的利用率基本平衡(例如,核810中的每个核在其他核810中的一个或多个核的指定容差或阈值利用率值内,核810具有在容差(例如,+/-1%、+/-2%等)内的大致相同的利用率。例如,响应于dlb 808至少基于核810的利用率将数据动态地指派给核810,核810的利用率变得平衡。
102.图9是包括核906的cpu 904中的示例吞吐量902的图示。例如,cpu 904可不包括dlb,诸如图2的dlb 202、图3的dlb 304、图4-图6的dlb 410、和/或图8的dlb 808。在该示例中,cpu 904获得工作负荷(流1)908并指派核906以处理整个工作负荷908。结果,cpu 904实现60%的吞吐量902,这低于100%的线速910。在该示例中,核906和/或更一般地,cpu 904以60%的线速910操作。
103.图10是示例cpu 1004中的示例吞吐量1002的图示1000,该示例cpu 1004包括多个示例工作者核1006和示例dlb 1008。例如,dlb 1008可以与图2的dlb 202、图3的dlb 304、图4-图6的dlb 410和/或图8的dlb 808的示例实现相对应和/或以其他方式是图2的dlb 202、图3的dlb 304、图4-图6的dlb 410和/或图8的dlb 808的示例实现。在该示例中,cpu 1004获得示例工作负荷(流1)1010,并将工作负荷1010分发给工作者核1006中的一个(多个)以处理工作负荷1010。有利地,cpu 1004满足吞吐量阈值(例如,100%的示例线速1012)。在该示例中,dlb 1008基于排序调度使cpu 1004满足吞吐量阈值。另外或替代地,dlb 1008可以使用一种或多种其他类型的调度,诸如原子调度。有利地,dlb 1008执行和/或以其他方式处理工作负荷1010而无自旋锁惩罚。
104.图11-图13是静态固定核利用率的图示。图11是cpu 1102中执行和/或以其他方式实行诸如ipsec应用(例如,数据的认证、加密和/或解密)之类的应用1104的静态固定利用率的图示。例如,cpu 1102可不包括dlb,诸如图2的dlb 202、图3的dlb 304、图4-图6的dlb 410、图8的dlb 808和/或图10的dlb 1008。cpu 1102包括生产者核(rx)1106、工作者核(w1)1108和消费者核(tx)1110。
105.图12是与图11的cpu 1102相关联的示例处理核利用率1202的图示1200。在图11-图12的示例中,生产者核1106是接收核,因为生产者核1106从nic 1112接收工作负荷。生产者核1106通过指派单个工作者核(例如,工作者核1108)以处理整个工作负荷(例如,执行ipsec应用的处理),来执行软件调度和分发任务。响应于处理整个工作负荷,工作者核1108具有相对较高的利用率,并且其余核(例如,工作者核2(w2)、工作者核3(w3)、工作者核4(w4)等)是空闲的。结果,cpu 1102实现60%的吞吐量1204,这低于100%的线速1206。
106.图13是图11的cpu 1102中的静态固定核利用率的另一图示。cpu 1102可不包括dlb,诸如图2的dlb 202、图3的dlb 304、图4-图6的dlb 410、图8的dlb 808和/或图10的dlb 1008。响应于处理整个工作负荷,工作者核1108具有相对较高的利用率,并且其余核(例如,工作者核2(w2)、工作者核3(w3)、工作者核4(w4)等)是空闲的。结果,cpu 1102实现低于
100%的线速的吞吐量。
107.图14-图15是包括示例dlb 1404(诸如图2的dlb 202、图3的dlb 304、图4-图6的dlb 410、图8的dlb 808和/或图10的dlb 1008)的示例cpu 1402中的动态可缩放核利用率的图示。在该示例中,cpu 1402包括dlb 1404以实现cpu 1402执行和/或以其他方式实行诸如ipsec应用之类的应用1406(例如,数据的认证、加密和/或解密)的动态可缩放利用率。cpu 1402包括生产者核(rx)1408、工作者核(w1、w2、w3)1410和消费者核(tx)1412。在该示例中,cpu 1402从nic 1414获得工作负荷,并将该工作负荷分发给工作者核1410中的工作者核以处理工作负荷。
108.图15是与图14的cpu 1402相关联的示例处理核利用率1502的图示1500。有利地,cpu 1402的吞吐量1504满足基于工作负荷到多个工作者核1410的动态和可缩放分发的吞吐量阈值(例如,100%的示例线速1506)。响应于工作者核1410中的工作者核处理工作负荷,该工作者核1410中的工作者核具有相对低的利用率并且具有彼此基本相似的利用率。有利地,cpu 1402实现如图15的示例中所描绘的100%的吞吐量1504。
109.图16是包括dlb 1404的图14的cpu 1402中的动态可缩放核利用率的图示。尽管在图16中,dlb 1404被描绘为具有多个实例,但是仅有一个dlb 1404在操作中。例如,dlb 1404的单个实例可以将工作负荷从生产者核1408入列,并将工作负荷出列到工作者核1410。在此类示例中,dlb 1404可以将已完成的工作负荷从工作者核1410入列,并将已完成的工作负荷出列到消费者核1412。在一些示例中,dlb 1404的多于一个的实例可用于改进工作负荷的调度和分发。
110.生产者核1408通过指派工作者核1410中的多个可用工作者核处理工作负荷(例如,执行应用1406的处理)来执行硬件调度和分发任务。响应于利用工作者核1410中的多个工作者核处理工作负荷,工作者核1410中所利用的工作者核具有彼此基本相似的相对低的利用率。有利地,cpu 1402实现100%的吞吐量1204,其满足和/或以其他方式满足100%的期望或预期线速。
111.图17是表1700,其描述了基于具有和不具有图2的dlb 202、图3的dlb 304、图4-图6的dlb 410、图8的dlb 808、图10的dlb 1008和/或图14的dlb 1404的cpu的示例吞吐量参数(例如,以字节为单位的分组大小、以百万分组/秒(mpps)为单位的线速、以mpps为单位的已处理分组等)。在该示例中,对于512字节的分组大小,没有dlb的cpu(诸如图11的cpu 1102)可以以60%的吞吐量处理3.19mpps。有利地,与不包括dlb的cpu相比,包括dlb的cpu(诸如图14的cpu 1402)可以每秒处理更多分组和/或具有更高的吞吐量。有利地,如图17的表1700中阐述的数据所示,dlb可以通过增加分配用于处理工作负荷(诸如执行ipsec应用、实行流式在线拍卖等)的工作者核的数量,将吞吐量从44%增加到89%、增加到100%。
112.图18是示例dlb 1800的框图。在一些示例中,图18的dlb 1800是图2的dlb 202、图3的dlb 304、图4-图6的dlb 410、图8的dlb 808、图10的dlb 1008和/或图14的dlb 1404的示例实现。dlb 1800包括示例配置控制器1810、示例事件控制器1820、示例队列控制器1830、示例重新排序控制器1840、示例聚合控制器1850、示例仲裁控制器1860、示例遥测控制器1870和示例存储1880。
113.在图18的图示示例中,dlb 1800包括配置控制器1810,用于对dlb 1800的配置进行调节、修改和/或以其他方式控制。例如,配置控制器1810可以配置dlb 1800的一个或多
个组件(例如,硬件、固件和/或软件组件)、元件(例如,硬件、固件和/或软件元件)等。在一些示例中,配置控制器1810将dlb 1800的配置调整到dlb中。例如,配置控制器1810可以调用dlb 1800来执行、实施和/或以其他方式实行与多核计算系统(例如,图2-图6的多核计算系统200、302、402)相关联的负荷平衡操作。
114.在一些示例中,配置控制器1810配置dlb 1800的硬件或硬件的(多个)部分,诸如(多个)生产者端口、重新排序逻辑、(多个)队列(例如,(多个)存储队列)、(多个)仲裁器或仲裁器逻辑等中的至少一个。例如,配置控制器1810可以将dlb 1800的生产者端口配置为直接端口、负荷平衡端口等。在其他示例中,配置控制器1810可以将队列配置为直接队列、未排序队列、排序队列、原子队列等。在另一其他示例中,配置控制器1810可以将仲裁器配置为第一级仲裁器、第二级仲裁器等。
115.在图18的图示示例中,dlb 1800包括事件控制器1820,用于标识事件并促进执行与该事件相关联的计算任务。例如,事件控制器1820可以接收事件(event_dev)。响应于事件,事件控制器1820可以从事件(诸如数据指针)中提取数据,该事件引用和/或以其他方式标识数据流、数据流的数据分组等和/或其组合。
116.在一些示例中,事件控制器1820实现dlb 1800的前端逻辑(例如,前端逻辑电路系统),其可与nic、生产者核等对接。在一些示例中,事件控制器1820可基于事件将数据流标识为大象流、胖流等。例如,事件控制器1820可以标识来自nic的传入大象流,并调用队列控制器1830和/或更一般地调用dlb 1800,以开始处理与传入大象流相关联的计算任务,诸如标识用于存储数据指针的队列、标识工作者核中可用的一个(多个)工作者核等、和/或其组合。
117.在一些示例中,事件控制器1820基于与事件相关联的信息来结合事件调用动作。例如,事件控制器1820可获得包括在与事件相关联的数据中、包括在事件中等的数据指针。事件控制器1820可检查事件以判定数据分组的优先级、数据分组是否与已知数据流相关联等。响应于对事件的检查,事件控制器1820可以调用动作,诸如指示生产者端口中的一个生产者端口将数据指针发送到重新排序逻辑、到dlb的队列中的一个队列、从队列中的一个队列到第一级仲裁器或第二级仲裁器等和/或其组合。
118.在一些示例中,事件控制器1820将多个qe打包到高速缓存行中,以提高网格带宽效率。例如,事件控制器1820可以基于第一事件生成第一16b qe(例如,下文图35中描述的16b hcw),基于第二事件生成第二16b qe,等等。在此类示例中,事件控制器1820可以将16b qe中的四个16bqe打包和/或以其他方式组装到64b高速缓存行(例如,64b存储单元)中。响应于填充64b高速缓存行,事件控制器1820可以执行存储器指令。例如,事件控制器1820可以执行lfence、mfence、sfence等指令,以将64b高速缓存行移动到由队列控制器1830维护的队列中。在一些示例中,事件控制器1820执行移动数据指令。例如,事件控制器1820可以通过使用movdqa指令将双四字从源操作数移动到目的地操作数来执行移动数据指令。
119.在一些示例中,事件控制器1820管理和/或以其他方式控制基于硬件的信用评定方案、基于软件的信用评定方案、令牌管理方案等和/或其组合。例如,事件控制器1820可以基于存储在事件中的数据来标识数据指针(例如,标识符)的数据源(例如,nic、核、网络等)。在此类示例中,事件控制器1820可判定数据源是否具有生产者信用。在一些示例中,队列控制器1830响应于事件控制器1820确定数据源具有生产者信用,将数据指针入列到队
列。在此类示例中,事件控制器1820可响应于入列而从与数据源相关联的多个生产者信用中扣除生产者信用。在一些此类示例中,多个生产者信用存储在系统或主存储器中。在一些示例中,响应于与数据指针相关联的数据分组的分发,事件控制器1820将生产者信用添加到多个生产者信用。
120.在图18的图示示例中,dlb 1800包括队列控制器1830,用于控制队列操作(诸如将数据从生产者核入列和/或将数据出列到工作者核)。在一些示例中,队列控制器1830生成、维护和/或以其他方式操作存储在dlb1800中的队列,以供调度与应用(诸如ipsec应用、在线拍卖应用等)相关联的计算任务、操作等。例如,队列控制器830可以将数据从图3的生产者核310入列,将数据出列到图3的工作者核314中的工作者核,将数据从工作者核314中的工作者核入列,和/或将数据出列到图3的消费者核312。
121.在一些示例中,队列控制器1830从事件控制器1820、重新排序控制器1840等获取数据指针,并将数据指针存储到队列的尾指针中。在一些示例中,队列控制器1830将数据指针发送到仲裁控制器1860。在一些示例中,队列控制器1830调用仲裁控制器1860以从队列的头指针获取数据指针。在一些示例中,队列控制器1830实现存储在dlb 1800中的硬件管理队列。
122.在一些示例中,队列控制器1830配置队列以处理队列操作。例如,队列控制器1830可以将队列配置为未排序队列、排序队列、原子队列等。在一些示例中,队列控制器1830生成标识符(例如,流标识符、数据流标识符、队列标识符等)以促进感兴趣的工作负荷的执行。
123.在一些示例中,响应于一个或多个生产者排队等候与多个消费者通信并要求在多个消费者之间平衡工作负荷(例如,无动态消费者亲和性),队列控制器1830将队列配置为未排序队列。例如,队列控制器1830可以将未排序队列实现为先进先出(fifo)队列、后进先出(lifo)队列等。
124.在一些示例中,响应于一个或多个生产者排队等候与多个消费者通信并要求在多个消费者之间动态平衡工作、然后恢复原始入列顺序,队列控制器1830将队列配置为排序队列。例如,队列控制器1830可以将排序队列实现为基于排序跟踪的队列。在此类示例中,数据可以不按照原始序列的顺序进行处理,但是随后可以由重新排序控制器1840将其重新排序为原始序列。
125.在一些示例中,响应于生产者中的一个或多个排队等候与多个消费者进行通信并要求基于流标识符利用动态消费者亲和性来在多个消费者之间平衡工作负荷,队列控制器1830将队列配置为原子队列。有利地,队列控制器1830将队列配置为原子队列使消费者在不使用锁的情况下对每个流变量进行操作。消费者亲和性是动态的。例如,流标识符与给定核(例如,生产者核、工作者核、消费者核等)之间的亲和性随着流标识符从多核计算系统中出现和消失而动态地移动。
126.在图18的图示示例中,dlb 1800包括重新排序控制器1840,用于控制与工作负荷相关联的数据重新排序操作。例如,重新排序控制器1840可以结合获得的和/或以其他方式接收的事件执行重新排序操作。在一些示例中,重新排序控制器1840可以对从工作者核(诸如图4的工作者核412中的一个工作者核)获得的处理后数据进行重新排序。例如,重新排序控制器1840可以获得未排序数据并基于与未排序数据相关联的标识符(例如,队列标识符、
流标识符等)来对未排序数据进行排序。
127.在一些示例中,重新排序控制器1840生成、维护和/或以其他方式操作缓冲区(例如,重新排序缓冲区),以在将入列数据移动到不同队列之前存储入列数据。例如,重新排序控制器1840可以将已被单独和/或乱序处理的数据分组重新排序为用于后续任务(例如,流的接收或传输)的单个流。在此类示例中,重新排序控制器1840可以通过重新排序相对应的数据指针来重新排序数据分组。在一些示例中,重新排序控制器1840实现重新排序逻辑(诸如重新排序逻辑电路系统)。
128.在图18的图示示例中,dlb 1800包括聚合控制器1850,用于控制与工作负荷相关联的数据聚合操作。在一些示例中,聚合控制器1850可以对从工作者核(诸如图4的工作者核412中的一个工作者核)获得的处理后数据进行聚合。例如,聚合控制器1850可以从工作者核412获得数据,并将所获得的数据打包成已编译的数据流,以准备传送到不同的硬件、软件和/或固件。
129.在图18的图示示例中,dlb 1800包括仲裁控制器1860,用于促进基于优先级的事件处理。在一些示例中,事件控制器1820可以确定事件与具有优先级值的一个或多个数据分组相关联。在此类示例中,事件控制器1820可以确定事件中包括的、与具有优先级值的一个或多个数据分组相对应的一个或多个数据指针。在一些此类示例中,仲裁控制器1860可以基于优先级值来从队列中检取一个或多个数据指针。例如,仲裁控制器1860可以实现多级优先级仲裁器,其中一个或多个数据指针可以基于与事件相关联的优先级值被指向到多级优先级仲裁器的一个或多个级。在一些示例中,仲裁控制器1860实现第一级仲裁器、第二级仲裁器等。
130.在一些示例中,仲裁控制器1860响应于吞吐量参数不满足吞吐量阈值,分配一个或多个核以从队列中(例如,从图22的队列2214中的一个队列中)出列标识符。在此类示例中,响应于分配,仲裁控制器1860可使一个或多个核对数据分组执行一个或多个操作,该数据分组与经出列标识符相对应。
131.在图18的图示示例中,dlb 1800包括遥测控制器1870,用于获取遥测数据并基于所获取的遥测数据来确定遥测参数。在一些示例中,遥测控制器1870从多核处理器的核获得遥测数据,诸如图4-图6的生产者核408、工作者核412中的一个(多个)、消费者核414等。例如,遥测控制器1870可以从核获得遥测数据(诸如带宽、空闲时间、等待时间、吞吐量、利用率等)和/或核的遥测数据的组合。
132.在一些示例中,遥测控制器1870基于遥测数据来确定遥测参数。例如,遥测控制器1870可以基于来自核的利用率遥测数据来确定第一遥测参数(诸如核利用率参数)。在此类示例中,核利用率参数是核的利用率百分比,它指示核执行工作负荷的可用性。在一些此类示例中,遥测控制器1870可以从工作者核412中的一个工作者核获得利用率遥测数据,确定10%的核利用率参数,并确定核利用率不足,因为核仅被利用10%。在一些此类示例中,遥测控制器1870可以基于核利用率参数来将工作者核412中的一个工作者核标识为可用于接收工作负荷。例如,遥测控制器1870可以基于比20%、30%等的核利用率阈值小的10%的核利用率参数,来将工作者核412中的一个工作者核标识为可用于接收工作负荷,从而满足核利用率阈值。
133.在图18的图示示例中,dlb 1800包括存储1880,用于记录和/或以其他方式存储数
据。例如,存储1880可以存储配置数据或信息(例如,dlb 1800的配置、队列的配置等)、信用计数或总数(例如,硬件信用、软件信用、已使用或未使用信用的总数等)、数据指针、数据队列、事件数据或信息、标识符(例如,流标识符、队列标识符等)、遥测数据或信息等。存储1880可以由易失性存储器(例如,同步动态随机存取存储器(sdram)、动态随机存取存储器(dram)、rambus动态随机存取存储器(rdram)等)和/或非易失性存储器(例如,闪存存储器)实现。存储1880可以附加地或替代地由一个或多个双倍数据速率(ddr)存储器(诸如ddr、ddr2、ddr3、ddr4、移动ddr(mddr)等)来实现。存储1880可以附加地或替代地由一个或多个大容量存储设备(诸如(多个)硬盘驱动器、(多个)紧凑盘驱动器、(多个)数字多功能盘驱动器、(多个)固态盘驱动器等)实现。虽然在图示出的示例中存储1880被示出为存储的单个实例,但是存储1880可以由任何数量和/或(多个)类型的存储来实现。此外,存储1880中所存储的数据可以采用任何数据格式,诸如例如,二进制数据、逗号分隔的数据、制表符分隔的数据、结构化查询语言(sql)结构等。
134.尽管实施dlb(诸如图2的dlb 202、图3的dlb 304、图4-图6的dlb 410、图8的dlb 808、图10的dlb 1008和/或图14的dlb 1404)的示例方式在图18中示出,但图18中图示的元件、过程和/或设备中的一个或多个可以以任何其他方式组合、划分、重新布置、省略、消除和/或实现。此外,图18的示例配置控制器1810、示例事件控制器1820、示例队列控制器1830、示例重新排序控制器1840、示例聚合控制器1850、示例仲裁控制器1860、示例遥测控制器1870、示例存储1880和/或更一般地,示例dlb 1800可由硬件、软件、固件、和/或硬件、软件和/或固件的任何组合来实现。由此,例如,以下各项中的任何一项可以由一个或多个模拟或数字电路、逻辑电路、(多个)可编程处理器、(多个)可编程控制器、(多个)gpu、(多个)数字信号处理器(dsp)、(多个)专用集成电路(asic)、(多个)可编程逻辑器件(pld)和/或(多个)现场可编程逻辑器件(fpld)实现:示例配置控制器1810、示例事件控制器1820、示例队列控制器1830、示例重新排序控制器1840、示例聚合控制器1850、示例仲裁控制器1860、示例遥测控制器1870、示例存储1880或更一般地,示例dlb 1800。当阅读涵盖纯软件和/或固件实现的本专利的装置或系统权利要求中的任一权利要求时,示例配置控制器1810、示例事件控制器1820、示例队列控制器1830、示例重新排序控制器1840、示例聚合控制器1850、示例仲裁控制器1860、示例遥测控制器1870、和/或示例存储1880中的至少一者由此被明确地限定为包括包含软件和/或固件的非瞬态计算机可读存储设备或存储盘(诸如,存储器、数字多功能盘(dvd)、紧凑盘(cd)、蓝光盘等等)。更进一步地,图2的示例dlb 202、图3的示例dlb 304和/或图4-图6的示例dlb 410可包括作为图18中所图示的那些的补充或作为图18中所图示的那些的替代的一个或多个元件、过程和/或设备,和/或可包括所图示出的元件、过程和设备中的任何一者或全部中的一个以上。如本文所使用,短语“进行通信”(包括其变体)包含直接通信和/或通过一个或多个中间组件的间接通信,并且不需要直接的物理(例如,有线)通信和/或持续通信,而是附加地包括以周期性间隔、预定间隔、非周期性间隔、和/或一次性事件来进行的选择性通信。
135.图19是使用示例dlb 1902执行的示例生产者和消费者调度系统1900的图示。在该示例中,dlb 1902是硬件。例如,可以由诸如一个或多个模拟或数字电路、逻辑电路、(多个)可编程处理器、(多个)可编程控制器、(多个)gpu、(多个)dsp、(多个)asic、(多个)pld和/或(多个)fpld之类的电路系统来实现dlb 1902。在此类示例中,dlb 1902可以由硬件、软件、
固件和/或硬件、软件和/或固件的任何组合来实现。
136.在图19的图示示例中,系统1900包括dlb 1902、示例生产者1904和示例消费者1906。在该示例中,生产者1904是多核处理器的核(例如,生产者核),诸如图4-图6的处理器406的生产者核408中的那些核。在该示例中,消费者1906是多核处理器的核(例如,消费者核),诸如图4-图6的处理器406的消费者核414中的那些核。
137.在图19的图示示例中,dlb 1902包括示例入列逻辑1908,用于从生产者1904获取数据(例如,数据指针),并将数据存储在存储于dlb 1902的示例存储器1912中的一个或多个示例队列1910中。在该示例中,队列1910实现存储队列(例如,内部存储队列、内部储存队列等)。在该示例中,dlb1902包括示例出列逻辑1914,用于从队列1910检取数据,并将检取到的数据提供给消费者1906以结合数据执行计算任务。
138.在该示例中,入列逻辑1908和/或出列逻辑1914是硬件。例如,可以由一个或多个模拟或数字电路、逻辑电路、(多个)可编程处理器、(多个)可编程控制器、(多个)gpu、(多个)dsp、(多个)asic、(多个)pld和/或(多个)fpld来实现入列逻辑1908和/或出列逻辑1914。在此类示例中,入列逻辑1908和/或出列逻辑1914可以使用专门构建的门来实现,以促进与由生产者1904标识的数据相关的计算任务。
139.在一些示例中,入列逻辑1908和/或出列逻辑1914可以通过硬件、软件、固件和/或硬件、软件和/或固件的任何组合来实现。有利地,通过使用入列逻辑1908替换通常在软件中实现的入列功能和/或使用出列逻辑1914替换通常在软件中实现的出列功能,dlb 1902可以通过释放核周期以执行不同的计算任务、促进无锁访问、减少轮询、减少存储器和高速缓存行为的影响、促进高排队吞吐量、并在消费者1906之间实现改进的负荷平衡来促进系统1900的性能增益。
140.在图19的图示示例中,队列1910由信用或基于信用的保护模式保护。在一些示例中,生产者1904必须在执行对dlb 1902的入列(例如,入列操作、入列任务等)之前具有可用的信用、令牌等。响应于dlb 1902执行入列,减少与生产者1904中的一个入列的生产者相关联的信用计数。例如,生产者1904可以减少由生产者1904或不同实体维持的本地信用计数。在此类示例中,dlb 1902保持对信用的跟踪,并更新存储器1912或主存储器或系统存储器(例如,dlb 1902外部的存储器)中的每个生产者可用信用计数,生产者1904可以读取该存储器以补充生产者1904的本地信用计数。
141.在一些示例中,生产者1904中的每一个有两组信用。第一组信用可与用于入列到定向队列的定向信用相对应。第二组信用可以与用于入列到负荷平衡队列的负荷平衡信用相对应。下面结合图24和/或图25a-图25d进一步详细描述定向队列和负荷平衡队列。
142.在一些示例中,dlb 1902使用控制寄存器将队列1910中的每一个映射到消费者1906中的一个或多个。dlb 1902可以检查、确定和/或以其他方式分析队列1910的状态,并选择存储在队列1910中的一个队列中的队列元素(qe)以供出列。对于消费者1906中的每一个,dlb 1902可以在出列的qe的存储器1912中写入小环。在此类示例中,环可以实现为固定大小的fifo,其中数据按顺序存储在相邻的存储器位置中(例如,无下一个数据指针)。
143.有利地,通过将小环写入出列qe的存储器1912中,dlb 1902可以改善由消费者1906观察到的出列等待时间。消费者1906可以拥有队列1910的头指针,而dlb 1902可以拥有队列1910的尾指针,因为消费者1906和dlb 1902都知道队列1910的一系列基址、长度等。
144.图20是促进跨多核计算架构的计算任务的调度的图2-图6、图18和/或图19的dlb中的一个dlb的图示,其中第一示例硬件队列调度或管理系统2000包括示例dlb 2002。例如,dlb 2002可以是图18的dlb 1800和/或图19的dlb 1902的示例实现。
145.在图20的图示示例中,第一硬件队列调度系统2000包括示例生产者核2004和示例消费者核2006。在该示例中,dlb 2002与生产者核2004和消费者核2006进行通信。在示例操作中,生产者核2004通过将事件(例如,队列事件、event_dev等)写入在dlb 2002的存储器映射i/o(mmio)空间中(例如,在图19的存储器1912中)的生产者端口地址,将数据入列到dlb 2002。
146.在该示例中,dlb 2002使用传入qe以映射到示例队列(例如,内部队列)2008。dlb 2002将传入qe映射到队列2008的尾(例如,末尾)。在一些示例中,可以在示例排序缓冲区2010中缓冲qe,以等待先前排序的qe(例如,与传入qe相关联的qe)到达和/或以其他方式在生产者端口入列。
147.在图20的图示示例中,示例仲裁器2012、2014通过将队列2008的头部(例如,开始)中的数据映射到示例消费者队列2016来调度计算任务。例如,仲裁器2012、2014可以确定调度输入以包括内部队列2008的状态。在一些示例中,仲裁器2012、2014中的每一个可以每轮(例如,调度轮)选择一个qe出列,并发送到消费者队列2016中选定或标识的一个消费者队列。在该示例中,消费者队列2016通过轮询消费者核2006、生成硬件中断等,将存储在消费者队列2016中的qe出列到消费者核2006。
148.图21是促进跨多核计算架构的计算任务的调度的图2-图6、图18、图19和/或图20的dlb中的一个dlb的图示,其中第二示例硬件队列调度或管理系统2100包括第一示例dlb 2102和第二示例dlb 2104。例如,第一dlb 2102和第二dlb 2104可以是图18的dlb 1800、图19的dlb 1902和/或图20的dlb 2002的示例实现。
149.在图21的图示示例中,第二硬件队列调度系统2100包括第一示例生产者核2106和第二示例生产者核2108,它们分别与dlb 2102、dlb2104中的相应一个进行通信。在该示例中,第一示例消费者核2110和第二示例消费者核2112与dlb 2102、dlb 2104中的相应一个进行通信。在一些示例中,可以使用少于或多于图21中所描绘的dlb 2102、dlb 2104和/或少于或多于图21中所描绘的生产者核2106、生产者核2108和/或消费者核2110、消费者核2112。在该示例中,不存在跨设备仲裁(例如,设备0不为设备n进行仲裁),然而,在其他示例中,可能存在跨设备仲裁。
150.在图21的图示示例中,dlb 2102、dlb 2104与链接生产者核2106、生产者核2108和消费者核2110、消费者核2112的队列和仲裁器的硬件管理系统相对应。在一些示例中,一个或两个dlb 2102、dlb 2104可以是硬件处理器中的外围组件互连(pci)或pci-express(pci-e)设备。例如,一个或两个dlb 2102、dlb 2104可以是包括在硬件处理器中或与硬件处理器进行通信的加速器(例如,硬件加速器)。
151.在图21的图示示例中,dlb 2102、dlb 2104中的每个包括示例重新排序逻辑2114、示例排队逻辑2116和示例仲裁逻辑2118。在该示例中,重新排序逻辑2114、排队逻辑2116和/或仲裁逻辑2118是硬件。在一些示例中,重新排序逻辑2114、排队逻辑2116和/或仲裁逻辑2118可以通过硬件、软件、固件和/或硬件、软件和/或固件的任何组合来实现。
152.在图20的图示示例中,重新排序逻辑2114可以从生产者核2106、生产者核2108中
的一个或多个获取数据,并促进重新排序操作。例如,重新排序逻辑2114可以检查来自生产者核2106、生产者核2108中的一个的数据指针。在此类示例中,数据指针可以与数据流的数据分组相关联。在一些此类示例中,重新排序逻辑2114可以确定数据指针与已知序列或数据流相关联。在一些示例中,生产者核2106可以利用排队逻辑2116将数据指针入列,因为数据指针不与已知数据流相关联,并且可能不需要由重新排序逻辑2114重新排序和/或以其他方式处理。
153.在一些示例中,重新排序逻辑2114将数据指针和与已知数据流中的数据分组相关联的其他数据指针存储在缓冲区(例如,图20的排序缓冲区2010)中,直到获得和/或以其他方式标识与已知数据流相关的数据指针的一部分或全部。重新排序逻辑2114可以将数据指针发送到由排队逻辑2116维护以维护已知数据流的顺序的队列中的一个或多个队列。例如,队列可以将数据指针存储为qe。
154.在图21的图示示例中,排队逻辑2116实现多个队列或缓冲区以存储数据指针或其他信息。在一些示例中,当(多个)队列全部已满时,排队逻辑2116发送数据指针。在一些示例中,排队逻辑2116在异步或同步的基础上将数据指针从队列中的一个或多个队列发送到仲裁逻辑2118。
155.在该示例中,仲裁逻辑2118被配置成用于通过选择消费者核2110、消费者核2112中的给定一个来执行仲裁。例如,仲裁逻辑2118实现一个或多个仲裁器、仲裁逻辑集(例如,第一仲裁逻辑、第二仲裁逻辑等)等,其中一个或多个仲裁器中的每一个、仲裁逻辑集等中的每一个可以与消费者核2110、消费者核2112中的相应一个相对应。在一些示例中,仲裁逻辑2118基于消费者就绪性(例如,消费者核具有可用于执行或完成任务的空间)、任务可用性等。在该示例中,仲裁逻辑2118传送和/或以其他方式促进数据指针从排队逻辑2116到示例消费者队列2120的传递。
156.在该示例中,消费者核2110、消费者核2112与消费者队列2120通信以获得用于后续处理的数据指针。在一些示例中,消费者队列2120中的一个或多个的长度(例如,数据长度)是可编程和/或以其他方式可配置的。在一些示例中,dlb 2102、dlb 2104响应于消费者队列2120的状态、状态变化等,生成对消费者核2110、消费者核2112中的一个的中断(例如,硬件中断)。响应于中断,消费者核2110、消费者核2112中的一个可以从消费者队列2120检取(多个)数据指针。
157.在图21的图示示例中,dlb 2102、dlb 2104可以检查消费者队列2120的状态(例如,已满、未满、未空等)。dlb 2102、dlb 2104可以通过观察dlb 2102、dlb 2104的相关联生产者端口上的入列来跟踪消费者队列2120的满度。例如,响应于每个入列,dlb 2102、dlb 2104可以确定消费者核2110、消费者核2112中的相对应一个消费者核已经完成了对qe的工作,因此,qe的位置现在在由排队逻辑2116维护的队列中可用。例如,qe的格式可以包括指示是否正在返回消费者队列令牌(其可以表示qe在消费者队列2120中的位置)的位。在一些示例中,由于消费者队列2120中没有相关联的条目,因此不是先前出列的完成的新入列不返回消费者队列令牌。
158.图22是促进跨多核计算架构的计算任务的调度的图2-图6、图18、图19、图20和/或图21的dlb中的一个dlb的图示,其中第三示例硬件队列调度或管理系统2200包括示例dlb 2202。例如,dlb 2202可以是图18的dlb 1800、图19的dlb 1902、图20的dlb 2002和/或图21
的dlb 2102、dlb 2104的示例实现。
159.在图22的图示示例中,dlb 2202包括示例入列逻辑2204。例如,入列逻辑2204可以是图19的入列逻辑1908的示例实现。在该示例中,dlb 2202与示例生产者线程2206和示例消费者线程2208进行通信。在该示例中,生产者线程2206和/或消费者线程2208是软件线程。在一些示例中,生产者线程2206和/或消费者线程2208中的一个或多个可以是硬件线程和/或固件线程。生产者线程2206将硬件控制字(hcw)写入示例生产者端口(pp)2210。在该示例中,hcw是以下结合图35描述的采用hcw格式的数据。例如,hcw可以包括要在生产者端口2210上入列的队列元素(qe)。
160.在一些示例中,hcw可以为生产者端口2210返回一个或多个消费者队列令牌,从而指示示例消费者队列2212中的空间可用,如下文进一步详细描述的。在一些示例中,hcw包括最旧(例如,隔最久写入消费者队列的qe)未完成负荷平衡qe的完成(例如,完成通知、完成指示符、完成标志、完成数据等)。例如,hcw可以包括一个字节,该字节具有指示工作者核是否已完成操作的值。在此类示例中,字节可以是指示完成或未完成的标志、标识符、状态等。例如,响应于工作者核完成对数据分组的操作,工作者核可以设置完成字节和/或以其他方式调节完成字节的值以指示完成操作。在此类示例中,工作者核可以将hcw返回到dlb 2202。在一些此类示例中,生产者端口2210可以基于具有指示完成的值的完成字节来确定工作者核完成了对数据分组的操作。在此类示例中,生产者端口2210可以基于该确定来将hcw的数据指针入列。
161.在一些示例中,qe与可以入列到dlb 2202和/或随后存储到示例内部qe存储2216的示例队列2214中的一个或多个存储单元中的数据单元相对应。例如,队列2214可以用随机存取存储器(ram)(例如,静态ram(sram)、动态ram(dram)等)实现。在该示例中,内部qe存储2216包括多个队列2214,并且队列2214中的每一个可以存储多个示例qe 2218。在一些示例中,从生产者线程2206获得的qe具有16字节(即,16b)的数据大小。在一些示例中,qe可具有任何其他数据大小。在该示例中,16b qe中的四个可以打包到64b高速缓存行中,以提高网格带宽效率。因此,相对小的qe大小指示从生产者线程2206传送到消费者线程2208的大部分数据或信息存储在存储器(例如,dlb 2202外部的存储器)中的其他位置,并且在一些示例中,qe的用户定义部分保持指向该数据或信息的指针。例如,从生产者线程2206获得的qe可以包括指向存储在dlb 2202以外的其他地方的网络数据分组的数据指针。
162.在图示示例中,生产者线程2206使用任何发送的数据分组将hcw写入生产者端口2210,并在需要时记录完成。除非通过示例重新排序逻辑2220重新排序,否则hcw中包括的qe将插入到队列2214中指定的一个队列中。在该示例中,队列2214包括内部qe存储元件2218。在该示例中,可任选地(例如,经由一个或多个配置输入、经由一个或多个生产者端口等)将重新排序逻辑2220应用于生产者端口2210接收的来自生产者线程2206的传入qe。重新排序逻辑2220是图18的重新排序控制器1840和/或图21的重新排序逻辑2114的示例实现。队列2214和/或更一般地,内部队列存储2216可以是图18的队列控制器1830、图19的队列1910、图20的队列2008和/或图21的排队逻辑2116的示例实现。
163.在示例操作中,dlb 2202基于两级优先级仲裁器将qe从队列2214调度到消费者线程2208。在一些示例中,可以使用更少或更多级的优先级仲裁器。dlb 2202包括第一示例级仲裁器2222和第二示例级仲裁器2224。在该示例中,第一级仲裁器2222和/或第二级仲裁器
2224是硬件。在一些示例中,一个或两个仲裁器级2222、2224可以由硬件、软件、固件和/或硬件、软件和/或固件的任何组合来实现。
164.在一些示例中,第一级仲裁器2222和/或第二级仲裁器2224实行数据流中数据的分发和优先级排定。例如,第二设备110可以向图1的边缘网络104中的du 122中的第一du发送数据流。在此类示例中,dlb 2202可以包括在du 122中的第一du中。在一些此类示例中,由于第二设备是交通工具(诸如自主交通工具),因此dlb 2202可以优先排定来自第二设备110的数据流。例如,生产者端口2210可以确定与数据流相关联的数据指针具有相对高的优先级值。在此类示例中,生产者端口2210可以将具有相对高优先级的数据指针入列到可以快速处理的队列2214中的一个(多个)队列。在一些此类示例中,第一级仲裁器2222可以将具有相对高优先级的数据指针分配给第二级仲裁器2224,以便在具有较低优先级的其他数据指针之前将具有相对高优先级的数据指针分发给要处理的消费者队列2212中的一个(多个)消费者队列。
165.在图22的图示示例中,第一级仲裁器2222是队列标识符(qid)优先级仲裁器。在一些示例中,基于来自生产者线程2206中一个生产者线程的qe中包括的信息(例如,数据指针、优先级值等),生产者端口2210可以确定qe具有优先级。响应于确定qe具有优先级,qe从生产者端口2210中的一个生产者端口被路由到队列2214中的一个队列,该队列可对应于保持传入qe的优先级和/或以其他方式与保持传入qe的优先级相关联。响应于dlb 2202将qe路由到可以实现和/或以其他方式促进基于优先级的调度的队列2214中的一个队列,dlb 2202将qe路由到第一级仲裁器2222。
166.在一些示例中,第一级仲裁器2222各自具有不同的优先级。例如,第一级仲裁器2222中的第一仲裁器可以具有第一优先级,第一级仲裁器2222中的第二仲裁器可以具有小于第一优先级的第二优先级,等等。在此类示例中,dlb 2202可以通过基于存储在内部qe存储元件2218中的第一存储元件中的第一优先级值将该第一优先级值映射到具有第一优先级的第一级仲裁器2222中的第一仲裁器,来将内部qe存储元件2218中的第一存储元件从队列2214中的第一队列路由到第一级仲裁器2222中的第一仲裁器。或者,第一级仲裁器2222中的一个或多个可以具有相同的优先级。
167.在图22的图示示例中,响应于将qe路由到第一级仲裁器2222,dlb 2202将qe路由到相对应的第二级仲裁器2224,在该示例中,该第二级仲裁器2224是消费者仲裁器。在该示例中,由于第二级仲裁器2224确定、标识和/或以其他方式选择消费者队列2212中用于存储qe的相对应一个消费者队列,因此第二级仲裁器2224是消费者仲裁器。在该示例中,第二级仲裁器2224各自被指派给唯一消费者队列。例如,第二级仲裁器2224中的第一仲裁器被指派和/或以其他方式与消费者队列2212中的第一消费者队列和消费者核2208中的第一消费者核相关联,第二级仲裁器2224中的第二仲裁器被指派和/或以其他方式与消费者队列2212中的第二消费者队列和消费者核2208中的第二消费者核相关联,等等。
168.在图22的图示示例中,响应于将qe路由到第二级仲裁器2224,示例出列逻辑2226将qe写入消费者队列2212中相对应的一个消费者队列。另外或替代地,出列逻辑2226可以包括第一级仲裁器2222或第二级仲裁器2224中的至少一个。在该示例中,消费者队列2212是基于系统或主存储器的消费者队列,其中消费者线程2208中的相对应一个消费者线程可以从与qe相对应的数据分组读取qe并对与qe相对应的数据分组执行一个或多个计算任务。
0、qid 1、qid 2、qid 3)具有八个可用于优先级目的的存储元件。在一些示例中,队列2308、2310、2312中的一个或多个可以包括比图23所描绘的更少或更多的存储元件。在该示例中,具有非原子qid的第二队列2310可以在相同队列中承载、存储等排序或未排序的通信量。例如,非原子qid中的第一非原子qid可以存储排序qe或未排序qe。
177.在图23的图示示例中,仲裁器2314、2316包括第一示例仲裁器2314和第二示例仲裁器2316。在该示例中,第一仲裁器2314实现和/或以其他方式实行负荷平衡仲裁。例如,第一仲裁器2314可促进来自负荷平衡端口的负荷平衡通信量。第一仲裁器2314可被配置成用于映射消费者线程2306中的一个(多个)消费者线程可以从第一队列2308和/或第二队列2310中的哪一个检取数据。在该示例中,第二仲裁器2316实现和/或以其他方式实行直接仲裁。例如,第二仲裁器2316可以一对一地将直接通信量映射到消费者线程2306中的一个(多个)消费者线程。在该示例中,仲裁器2314、2316和消费者线程2306与示例消费者队列2318通信。在该示例中,消费者队列2318是动态ram(dram)中的环(例如,环缓冲区)。或者,消费者队列2318可以配置成任何其他类型的数据组织和/或可以是任何其他类型的存储器。
178.图24是促进跨多核计算架构的计算任务的调度的图2-图6、图18、图19、图20、图21和/或图22的dlb中的一个dlb的示例虚拟化实现的图示,其中第五示例硬件队列调度或管理系统2400包括示例dlb 2402。例如,dlb 2402可以是图18的dlb 1800、图19的dlb 1902、图20的dlb 2002、图21的dlb 2102、图21的dlb 2104、图22的dlb 2202和/或图23的dlb2302的示例实现。
179.在图24的图示示例中,第五硬件队列调度系统2400与图19的生产者和消费者调度系统1900的虚拟化相对应。例如,第五硬件队列调度系统2400可以对应于和/或以其他方式代表图23的第四硬件队列调度系统2300的软件抽象。在该示例中,dlb 2402是dlb 2302的虚拟化和/或其他软件抽象,可用于配置和/或以其他方式促进使用软件执行dlb 2302,同时使用硬件执行与数据相关联的计算任务。
180.在图24的图示示例中,dlb 2402与第一示例线程(例如,生产者线程)2404和第二示例线程(例如,消费者线程)2406进行通信。在该示例中,生产者线程2404可与图23的生产者线程2304的虚拟化和/或其他软件抽象相对应。在该示例中,消费者线程2306可与图23的消费者线程2306的虚拟化和/或其他软件抽象相对应。有利地,通过虚拟化图23的生产者线程2304、消费者线程2306、dlb 2302等,可以改进服务保证。例如,可以在软件中计算、分析等服务质量(qos)参数。
181.有利地,如图24所描绘,通过虚拟化图23的生产者线程2304、消费者线程2306、dlb 2302等,可以将其(多个)部分分配给不同的应用以完成工作负荷。例如,可以将dlb 2402或其(多个)部分分配给图1的应用层128。在此类示例中,dlb 2402的第一部分可被分配用于执行bss的工作负荷,dlb 2402的第二部分可被分配用于执行oss的工作负荷,dlb 2402的第三部分可被分配用于执行5gc、网际协议多媒体核网络子系统(ims)等的工作负荷。
182.在图24的图示示例中,第一组生产者线程2404(例如,生产者线程a-c)与dlb 2402的生产者端口(例如,生产者端口的虚拟化和/或其他软件抽象)通信。在该示例中,第一组生产者线程2404对应于和/或以其他方式实现第一虚拟机(vm 0)、第一应用(app 0)、vm 0执行app 0等。
183.在该示例中,第二组生产者线程2404(例如,生产者线程d-e)与dlb 2402的生产者
端口通信。在该示例中,第二组生产者线程2404对应于和/或以其他方式实现第二虚拟机(vm 1)、第二应用(app 1)、vm 1执行app 1等。在该示例中,第三组生产者线程2404(例如,生产者线程f-h)与dlb 2402的生产者端口通信。在该示例中,第三组生产者线程2404对应于和/或以其他方式实现第三虚拟机(vm 2)、第三应用(app 2)、vm 2执行app 2等。
184.在图24的图示示例中,dlb 2402包括示例仲裁器(例如,仲裁逻辑)2408,以促进dlb 2402与示例消费者队列2410之间的通信。在该示例中,仲裁器2408可与图23的第一仲裁器2314和/或第二仲裁器2316的虚拟化和/或其他软件抽象相对应。在该示例中,消费者队列2410可与图23的消费者队列2318的虚拟化和/或其他软件抽象相对应。
185.图26是使用dlb的第四示例工作流2600的图示,诸如图18的dlb 1800、图19的dlb 1902、图20的dlb 2002、图21的dlb 2102、图21的dlb 2104、图22的dlb 2202、图23的dlb 2302和/或图24的dlb2402。在一些示例中,第四工作流2600可与示例生产者/消费者流水线相对应。例如,生产者/消费者流水线可以实现操作的链或流水线。
186.在第四工作流2600期间,第一示例核2604通过完成计算任务(例如,认证数据分组、对数据分组进行解密/加密等)作为消费者核进行操作。响应于第一核2604完成计算任务,第一核2604可以从作为消费者核操作转变到作为生产者核操作。例如,第一核2604可以将与完成的计算任务相关联的数据入列到dlb 2602。在此类示例中,dlb 2602可以将数据出列到工作者核池2606中的一个(多个)工作者核。响应于工作者核池2606中的一个(多个)工作者核完成与出列数据相关联的(多个)计算任务,工作者核池2606中的一个(多个)工作者核可以将数据入列到dlb 2602。响应于入列,dlb 2602可以将数据出列到第二示例核2608。在该示例中,第二核2608作为消费者核操作。
187.在第四工作流2600期间,每一次通过dlb 2602可以提供在示例工作者核池2606的多个核之间负荷平衡后续计算任务的机会。在该示例中,工作者核池2606实现多核处理器。或者,工作者核池2606可以实现分布式多核环境,其中工作者核池2606中的第一组工作者核包括在第一多核处理器中,工作者核池2606中的第二组工作者核包括在第二多核处理器中,等等。
188.在一些示例中,诸如处理与图1的多核计算环境100相关联的通信工作负荷示例,通过图示示例的生产者/消费者流水线的一整组计算任务可与数据分组相对应(例如,接收数据分组、发送数据分组等)。在此类示例中,数据分组可以经由多次通过dlb 2602、跨多个核(例如,第一核2604、工作者核池2606中的一个(多个)工作者核、第二核2608等)处理。
189.在一些示例中,第四工作流2600实行诸如在线促进拍卖(例如,实时企业拍卖)之类的应用。例如,第一核2604可以从诸如图1的第一设备108之类的设备接收代表拍卖出价的事件。在此类示例中,dlb 2602可以将标识拍卖出价的数据指针按接收顺序入列。dlb 2602可以将数据指针出列到工作者核池2606,以完成对拍卖出价的操作。例如,工作者核池2606可以从拍卖出价中提取时间戳数据、拍卖项目描述数据、定价数据、支付数据等,处理提取的数据,存储提取的数据等。在此类示例中,响应于完成对拍卖出价的操作,工作者核池2606可以将数据指针入列到dlb 2602,具有操作已完成的指示。
190.在一些示例中,第四工作流2600实行诸如自主移动(例如,自主驾驶、自主飞行等)之类的应用。例如,第一核2604可以从诸如第二设备110、图1的第三设备112、图1的第四设备114等之类的设备接收代表自主移动数据(例如,交通工具速度、飞行速度、交通工具或
uav地球同步位置数据(gps)、高度等)的事件。在此类示例中,dlb 2602可以按照接收顺序将标识自主移动数据的数据指针入列。dlb 2602可以将数据指针出列到工作者核池2606,以完成对自主移动数据的操作。例如,工作者核池2606可以基于自主移动数据来确定将第二设备110从第一位置移动到第二位置的一组方向、将第三设备112从第三位置移动到第四位置的飞行路径等。在此类示例中,响应于完成对自主移动数据的操作,工作者核池2606可以将数据指针入列到dlb 2602,具有操作已经完成的指示。
191.图27是可使用一个或多个dlb实现的示例应用2700的图示,一个或多个dlb诸如图18的dlb 1800、图19的dlb 1902、图20的dlb 2002、图21的dlb 2102、图21的dlb 2104、图22的dlb 2202、图23的dlb 2302、图24的dlb 2402和/或图26的dlb 2602中的一个(多个)。在该示例中,应用2700是多级处理应用,其中使用本文所述的一个或多个dlb改进操作。
192.在图27的图示示例中,应用2700可对应于和/或以其他方式代表具有严格等待时间、数据吞吐量、动态负荷平衡和/或可缩放性要求的应用。例如,应用2700可实现4g或5g蜂窝网络分组处理应用,其中一个或多个dlb可用于改进与示例接收(rx)分类任务或操作2702、示例预加密(pre-crypto)任务或操作2704、示例加密(crypto)任务或操作(例如,加密操作)2706、示例后加密(postcrypto)和/或传输(tx)操作2708相关的操作。
193.在示例操作中,诸如图14的nic 1414之类的示例nic 2710可以将数据指针入列到图26的dlb 2602,其中数据指针与存储在存储器(例如,处理器平台的系统或主存储器)中的数据分组相对应。例如,数据分组可以是数据流中的多个数据分组中的第一数据分组。dlb 2602可以将数据指针出列到图26的工作者核池2606中的工作者核。在示例操作中,工作者核可以从存储器检取数据分组、完成对数据分组的rx分类操作2702,以及将处理后的数据分组返回到存储器。
194.在示例操作中,响应于rx分类操作2702的完成,工作者核可以将数据入列到dlb 2602,数据可以包括处理后的数据分组的数据指针和/或rx分类操作2702的完成的指示。在示例操作中,dlb 2602可以将数据指针出列到工作者核或不同工作者核,以对数据分组执行预加密操作2704。在示例操作中,nic 2710可以使数据流的另一数据指针入列。dlb 2602可以将数据指针出列到工作者核池2606的工作者核以执行rx分类操作2702,同时工作者核池2606的不同工作者核处理预加密操作2704。有利地,dlb 2602可以通过将应用2700的操作指派为由工作者核池2606中的一个(多个)工作者核完成来执行应用2700。
195.图28是用于执行应用(诸如图27的应用2700)的、包括示例dlb 2802的第六示例硬件队列调度或管理系统2800的图示。例如,dlb 2802可以是图18的dlb 1800、图19的dlb 1902、图20的dlb 2002、图21的dlb 2102、图21的dlb 2104、图22的dlb 2202、图23的dlb 2302、图24的dlb 2402和/或图26的dlb 2602的示例实现。在该示例中,第六硬件队列调度系统2800包括示例局域网(lan)接收(rx)接口2804、示例lan发送(tx)接口2806、示例接收线程(例如,接收核、接收核的虚拟化等)2808、示例工作者线程(例如,工作者核、工作者核的虚拟化等)2810、示例发送线程(例如,发送核、发送核的虚拟化等)2812。
196.图29是图28的第六硬件队列调度系统2800实行诸如通信应用(例如,ipsec应用)之类的应用的注释图示。例如,该应用可以与网络网关或其他类型的网络接口相关,该网络接口可以包括图28的dlb 2802。在该示例中,nic可以实现lan rx接口2804和lan tx接口2806。在该示例中,nic可以对数据分组的分组报头进行散列并生成与该数据分组相关联的
流标识符(流id)、包括该数据分组的数据流等。dlb 2802的nic和/或前端逻辑电路系统可以将采用nic格式的流标识符的第一描述转换为采用dlb和/或qe格式的流标识符的第二描述。例如,接收线程(例如,接收核、接收核的虚拟化等)2808可以执行转换操作以将第一描述转换为第二描述。转换后的流标识符可以作为新事件发送到dlb 2802。dlb 2802可以使用基于流标识符的原子负荷平衡来处理新事件,其中新事件可以可选地具有优先级。例如,dlb2802可以喷射分组和/或以其他方式将新事件发送到示例工作者线程2810,该示例工作者线程2810可以执行新事件。
197.响应于处理新事件的工作者线程2810中的一个工作者线程,dlb 2802可以获得新事件并聚合数据指针,数据指针包括与新事件相对应的第一数据指针和与数据流中相关联数据分组相对应的第二数据指针。响应于将数据指针聚合(例如,通过聚合数据指针来聚合数据分组)在一起返回到单个流中,dlb 2802可以将聚合的数据指针出列到示例发送线程(例如,发送核、发送核的虚拟化等)2812。例如,发送线程2812可以将聚合数据指针的第二描述转换为第一描述。作为对出列的响应,nic可以在lan tx操作2806期间将流发送到不同的硬件、软件和/或固件。
198.图30是可通过dlb实现和/或以其他方式实行的另一示例应用3000的图示,dlb诸如图18的dlb 1800、图19的dlb 1902、图20的dlb2002、图21的dlb 2102、图21的dlb 2104、图22的dlb 2202、图23的dlb 2302、图24的dlb 2402、图26的dlb 2602和/或图28的dlb 2802。在该示例中,应用3000是ipsec路由器应用,包括示例检测ipsec操作3002、示例安全关联(sa)查找操作3004、示例反重放检查操作3006、示例解密认证操作3008、示例反重放窗口(arw)更新操作3010、示例去封装(decap)内部流操作3012、示例路由操作3014和示例发送操作3016。
199.在示例操作中,诸如图27的nic 2710之类的nic可以接收数据流的第一数据分组。在此类示例中,nic 2710可以提供和/或以其他方式将标识第一数据分组的第一数据指针入列到dlb。在一些此类示例中,dlb可以将第一数据指针出列到多核处理器的第一工作者核,以对第一数据分组执行检测ipsec操作3002。
200.在一些示例中,响应于第一工作者核将ipsec操作3002的完成入列到dlb,dlb可以将第一数据指针出列到第一工作者核或第二工作者核,以对第一数据分组执行sa查找操作3004。在此类示例中,当第一工作者核或第二工作者核正在对第一数据分组执行sa查找操作3004时,dlb可以将第二数据指针出列到第一工作者核、第二工作者核或第三工作者核中可用的一个工作者核,以处理对第二数据分组的检测ipsec操作3002。在一些此类示例中,dlb和工作者核可以通过应用3000的每个操作来处理第一数据分组、第二数据分组等,以处理数据流。有利地,通过将操作的调度迁移到dlb以在硬件中实现并增加用于完成应用3000的操作的工作者核的可用性,多核处理器的dlb和工作者核可以通过图30的示例中描述的操作链来处理数据流。
201.图31是可通过dlb实现和/或以其他方式实行的又一示例应用3100的图示,dlb诸如图18的dlb 1800、图19的dlb 1902、图20的dlb2002、图21的dlb 2102、图21的dlb 2104、图22的dlb 2202、图23的dlb 2302、图24的dlb 2402、图26的dlb 2602和/或图28的dlb 2802。在该示例中,应用3100是ipsec路由器应用,包括具有可选加密的大型外部通信隧道的组合。
202.图31的图示示例的应用3100可以包括大量内部通信流。应用3100可具有一定数量的工作者核或线程,每个工作者核或线程运行外部隧道处理、基于内部隧道处理的路由器算法等。应用3100可以基于原子性来实现反重放检查和更新。应用3100可以基于对由示例nic 3102(例如,图27的nic2710)获得的数据分组的分组报头的检查来确定流标识符,其中可以基于内部分组报头(例如,5元组散列)来计算流标识符。
203.在该示例中,应用3100是多级ipsec应用,包括使用轮询模式驱动程序(pmd)执行的示例分组接收操作3104、示例排序(ord)操作3106、一个或多个示例安全关联(sa)查找时期检查解密操作3108、示例异步传输模式(atm)目录(dir)操作3110、示例反重放窗口(arw)更新操作3112、示例atm操作3114、一个或多个示例内部隧道路由操作3116、示例dir操作3118和使用pmd执行的示例分组发送操作3120。有利地,响应于多核处理器中的工作者核中的一个(多个)工作者核完成图31的应用3100中描述的操作,dlb可以顺序地将与数据流的数据分组相关联的数据指针出列到工作者核中的一个(多个)工作者核。
204.图32是与可使用dlb实现的示例三级流水线中的收费(charging)点和归还点相对应的第五示例工作流3200的图示,dlb诸如图18的dlb 1800、图19的dlb 1902、图20的dlb 2002、图21的dlb 2102、图21的dlb 2104、图22的dlb 2202、图23的dlb 2302、图24的dlb 2402、图26的dlb 2602和/或图28的dlb 2802。在该示例中,第五工作流3200基于硬件和/或软件信用方案,以防止软件(例如,应用、一个或多个软件线程等)溢出与dlb相关的硬件事件存储。例如,包括在dlb中和/或以其他方式与dlb相关联的存储器或存储的每个单元可以由信用表示。
205.在图32的图示示例中,端口(例如,图22的生产者端口2210)花费信用来将事件入列(例如,指示使数据入列、使数据指针入列的事件等)。dlb可以使用信用重新填充端口,因为导致信用支出的事件已离开dlb的内部存储。在该示例中,信用重新填充来自信用池,并且每个端口可以是一个负荷平衡信用池和一个定向信用池的成员。
206.在图32的图示示例中,dlb可以在硬件信用方案之上分层软件信用方案,以符合每个端口背压。dlb的硬件方案在示例队列/流水线级3202、3204、3206本地,包括第一示例队列级(队列1)3202、第二示例队列级(队列2)3204和第三示例队列级(队列3)3206。在该示例中,dlb实现和/或以其他方式包括队列级3202、3204、3206。例如,当端口入列到队列(例如,生产者3208将数据入列到第一队列级3202)时端口可以花费信用,并且在事件(例如,入列到第一队列级3202的数据)被出列并释放(例如,从第一队列级3202出列并转发(fwd)到第二队列级3204)之后,随后补充信用。与硬件相对应的示例转发器3210可以在队列之间转发数据。例如,诸如图18的dlb 1800、图19的dlb 1902、图20的dlb 2002、图21的dlb 2102、图21的dlb 2104、图22的dlb 2202、图23的dlb 2302、图24的dlb 2402、图26的dlb 2602和/或图28的dlb 2802之类的dlb可以包括由硬件逻辑实现的转发器3210。
207.在图32的图示示例中,在软件信用方案中,当新事件注入系统(例如,注入和/或以其他方式入列到dlb)时,信用被消耗,并且当事件从系统释放时,信用被补充。例如,从事件入列到事件出列,事件“在系统中”。在一些示例中,如果事件在由线程(例如,工作者线程)处理时经过多个事件队列,则该事件仍被视为“在系统中”。
208.在一些示例中,响应于系统中的事件的数量超过阈值(例如,事件阈值、新事件阈值等)(该阈值可以是可配置的),dlb的端口将无法入列。在一些示例中,响应于dlb的端口
没有足够的硬件信用来入列新事件,该端口将无法入列。
209.在一些示例中,可能存在不同类型的硬件信用。例如,第一类硬件信用可以是负荷平衡信用,其可用于入列到dlb的负荷平衡队列。在此类示例中,负荷平衡队列可以与图23的队列2308、2310、2312中的一个(多个)相对应,它们与第一组生产者线程2304(例如,生产者线程a-d)通信。第二类硬件信用可以是定向信用,其可用于入列到dlb的定向队列。例如,定向队列可以与图23的队列2308、2310、2312中的一个(多个)相对应,它们与第二组生产者线程2304(例如,生产者线程e-f)通信。
210.在一些示例中,如果工作者线程缺少将第一事件入列的信用,则在工作者线程可以恢复将第一事件(例如,新事件)入列所需的信用之前,工作者线程可以将第二事件出列。有利地,dlb可以通过(i)停止和/或以其他方式结束重试以入列新事件,(ii)释放dlb试图入列的新事件,和/或(iii)使一个或多个先前入列的事件出列以为新事件腾出空间,来避免、减轻或防止信用死锁场景或操作条件。
211.图33描绘了与硬件队列调度或管理系统(诸如图19的生产者和消费者调度系统1900和/或图20-图24和/或图28的硬件调度队列或管理系统2000、2100、2200、2300、2400、280中的一个(多个))的操作相对应的第一示例数据流图3300。第一数据流图3300包括由第一示例核3310、示例dlb 3320、示例存储器3330或第二示例核3340中的至少一个执行的示例操作。
212.在图33的图示示例中,第一核3310可与图19的生产者1904、图20的生产者核2004之一等相对应。在该示例中,第二核3340可与生产者核或消费者核相对应。例如,作为生产者核的第二核3340可与图19的生产者1904、图20的生产者核2004之一等相对应。在其他示例中,作为消费者核的第二核3340可与图19的消费者1906、图20的消费者核2006之一等相对应。
213.在该示例中,dlb 3320可与图18的dlb 1800、图19的dlb1902、图20的dlb 2002、图21的dlb 2102、图21的dlb 2104、图22的dlb 2202、图23的dlb 2302、图24的dlb 2402、图26的dlb 2602和/或图28的dlb 2802相对应。在该示例中,存储器3330可与计算系统的系统或主存储器相对应。例如,存储器3330可以存储图20的消费者队列2016、图21的消费者队列2120等。
214.在第一示例操作3342期间,如果第一核3310具有可用的生产者信用,则第一核3310可以经由示例写入操作(例如,存储器映射i/o(mmio)写入操作)将队列元素(qe)入列到生产者端口(pp)。在第二示例操作3344期间,dlb 3320可以响应于使qe入列而更新内部生产者计数。在第三示例操作3346期间,dlb 3320在存储器3330的信用低水位标志上写入。在第四示例操作3348期间,在存储器3330中更新每个生产者的可用信用。在第五示例操作3350期间(例如,在第一操作3342之后),第一核3310可以更新与第一核3310相关联的本地生产者信用计数。在第六示例操作3352期间,第一核3310可以轮询存储在存储器3330中的可用信用。在第七示例操作3354期间,响应于第六操作3352期间的轮询,补充第一核3310的生产者信用。
215.图34描绘了与硬件队列调度或管理系统(诸如图19的生产者和消费者调度系统1900和/或图20-图24和/或图28的硬件调度队列或管理系统2000、2100、2200、2300、2400、280中的一个(多个))的操作相对应的第二示例数据流图3400。第二数据流图3400包括由图
33的第一核3310、dlb3320、存储器3330或第二示例核3340中的至少一个执行的示例操作。例如,第二数据流图3400可以是图33的第一数据流图3300的延续或扩展。在此类示例中,第一数据流图3300和第二数据流图3400的操作可以相互关联地发生。
216.在示例操作中,在第八示例操作3402期间,dlb 3320通过将qe写入存储在存储器3330中的示例消费者队列3410的尾部,将qe(例如,在图33的第二操作3344期间入列的qe)出列。例如,消费者队列3410可与图20的消费者队列2016、图21的消费者队列2120等相对应。在第九示例操作3404期间,第二核3340可从消费者队列3410的头部轮询消费者队列3410。在第十示例操作3406期间,响应于轮询,第二核3340检查(多个)可用qe并更新消费者队列3410的头部。例如,响应于轮询,第二核3340可以检取存储在存储器3330中的、与在第八操作3402期间写入的(多个)qe相对应的(多个)数据分组。在此类示例中,第二核3340可以在第十一示例操作3412处对检取到的(多个)数据分组执行工作负荷。
217.在第十二示例操作3414期间,如果第二核3340具有可用的生产者信用,则第二核3340将与工作负荷相关联的(多个)qe入列到dlb 3320的生产者端口。例如,第二核3340可以将(多个)qe写入(例如,mmio写入)dlb 3320的(多个)生产者端口。在第十三示例操作3416期间,dlb 3320使(多个)qe入列,更新由dlb 3320维护的内部生产者信用计数,并更新消费者队列3410的满度。
218.图35是描述了硬件控制字(hcw)和消费者队列元素(qe)的示例实现的示例表3500,该硬件控制字和消费者队列元素可以使用dlb实现,dlb诸如图18的dlb 1800、图19的dlb 1902、图20的dlb 2002、图21的dlb 2102、图21的dlb 2104、图22的dlb 2202、图23的dlb 2302、图24的dlb 2402、图26的dlb 2602、图28的dlb 2802和/或图33-图34的dlb 3320。在该示例中,如所描绘的hcw是16字节(即,16b)实现。或者,hcw可以用不同的数据大小(例如,32b、64b等)来实现。在该示例中,hcw实现了灵活的队列条目或队列元素。例如,图35所描绘的hcw可以实现图22的qe内部存储元件2218中的一个(多个)。
219.在图35的图示示例中,hcw是数据(诸如元数据)。例如,hcw可以包括第一元数据和第二元数据。在此类示例中,第一元数据可以包括与队列条目本身相关的信息,诸如队列id(qid)、优先级、格式和长度。在一些此类示例中,dlb可以使用第一元数据对该队列条目执行入列和/或出列相关操作。在一些示例中,第二元数据包括实际数据(例如,一个或多个数据分组)或指向实际数据的(多个)指针,这些数据将经由出列请求或操作与消费者核、线程、设备等共享。在此类示例中,dlb可以忽略和/或以其他方式不处理第二元数据。
220.在图35的图示示例中,16b hcw包括与指示qe、comp和/或令牌的命令字段(cmd)相对应的1字节(即,1b)。在该示例中,16b hcw包括与用于调试或其他混杂特征的混杂字段(misc)相对应的1b。在该示例中,16b hcw包括与用于原子排队目的的锁标识符(lockid)字段相对应的2b。
221.在图35的图示示例中,16b hcw包括与用于qe信息(q_info)的qe字段相对应的2b。例如,q_info字段可以存储关于数据的原子性、分段、负荷平衡、重新排序要求、序列化等、引用该数据的(多个)指针等的信息。在一些示例中,原子性信息可以描述是否一次将qe提交给单个核。在一些示例中,在决定是否分割数据以供通信量整形时使用分段信息。在一些示例中,负荷平衡信息指示是否可以利用跨多个输出队列的负荷平衡。在一些示例中,重新排序信息用于指示在将条目发送到输出队列或消费者队列时是否需要基于序列号重新排
序。
222.在该示例中,q_info字段包括处理qe所需的负荷平衡器(lb)或lb操作的类型、内部队列标识符(qid)的索引和/或优先级值(例如,0-7范围内的值)。例如,诸如图22的dlb 2202之类的dlb可以基于qid的索引执行重新排序操作(例如,使用图22的重新排序逻辑2220)。在此类示例中,诸如dlb 2202的dlb可以基于优先级值执行仲裁操作(例如,使用图22的第一级仲裁器2222和/或图22的第二级仲裁器2224)。
223.在该示例中,16b hcw包括与可由dlb的虚拟化和/或其他软件抽象层使用的软件(sw)字段相对应的10b。或者,软件字段可用于存储实际数据(例如,一个或多个数据分组)或与实际数据相关联的(多个)数据指针。在一些示例中,第一元数据包括命令字段、混杂字段、锁标识符字段或qe字段中的至少一个。在此类示例中,第二元数据可以包括软件字段。在一些此类示例中,命令字段、混杂字段、锁标识符字段、qe字段和/或软件字段是(多个)元数据标签、(多个)元数据部分等。
224.在图35的图示示例中,消费者qe的实现包括来自生产者hcw的qe字段(q_info)和sw字段(sw)。消费者qe的实现包括与状态字段(status)相对应的1b、与用于调试或其他混杂特征的混杂字段(misc)相对应的1b以及与用于调试目的的调试字段(debug)相对应的2b。
225.图36是包括示例dlb 3602的第一示例多核处理器3600的示例实现的框图。在该示例中,第一多核处理器3600被表示为包括在cpu封装中。在该示例中,dlb 3602中的一个(多个)可与图18的dlb 1800、图19的dlb 1902、图20的dlb 2002、图21的dlb 2102、图21的dlb 2104、图22的dlb 2202、图23的dlb 2302、图24的dlb 2402、图26的dlb 2602、图28的dlb 2802和/或图33-图34的dlb 3320相对应。在该示例中,第一多核处理器3600是硬件。例如,第一多核处理器3600可以由来自任何所期望的系列或制造商的一个或多个集成电路、逻辑电路、微处理器、gpu、dsp或控制器实现。
226.在该示例中,第一多核处理器3600是包括示例cpu核3604的多核cpu。例如,第一多核处理器3600可以包括在图1的du 122中的一个或多个du、图1的cu 124中的一个或多个cu中,等等。在此类示例中,第一多核处理器3600可以是图2的处理器201、图3的处理器308、图4的处理器406等的示例实现。
227.在图36的图示示例中,第一多核处理器3600是基于半导体(例如,基于硅)的设备。在该示例中,第一多核处理器3600至少包括第一示例半导体管芯3606、第二示例半导体管芯3608和第三示例半导体管芯3610。在该示例中,第一半导体管芯3606是包括第一组cpu核3604和dlb 3602的第一实例的cpu管芯。在该示例中,第二半导体管芯3608是包括第二组cpu核3604和dlb 3602的第二实例的cpu管芯。在该示例中,第三半导体管芯3610是i/o管芯,其包括其他示例电路系统3612(例如,存储器、逻辑电路系统等),以促进第一多核处理器3600的操作。或者,半导体管芯3606、3608、3610中的一个或多个可以包括dlb 3602的多于一个实例、更少或更多cpu核3604、更少或更多其他电路系统3612等和/或其组合。
228.在图36的图示示例中,dlb 3602是硬件。例如,可以由一个或多个模拟或数字电路、逻辑电路、(多个)可编程处理器、(多个)可编程控制器、(多个)gpu、(多个)dsp、(多个)asic、(多个)pld和/或(多个)fpld来实现dlb 3602。或者,可以通过硬件、软件和/或固件来实现dlb 3602。
229.在图36的图示示例中,dlb 3602位于第一半导体管芯3606和第二半导体管芯3608的非核中。在该示例中,dlb 3602与cpu核3604中的相对应一个(多个)cpu核进行通信。例如,dlb 3602可以将数据(例如,数据指针或与存储在存储器、硬件等中的数据相关联的其他标识数据)从数据生产者(例如,nic)入列,并将数据出列到cpu核3604中的一个(多个)以供处理。例如,数据可以存储在随机存取存储器(ram)或硬件中的任何其他类型的存储器中。在此类示例中,数据可以存储在第一多核处理器3600中,或者存储在第一多核处理器3600的外部。指针可以与由nic或其他网络接口获得的数据分组(例如,网络数据分组)相对应。有利地,cpu核3604可以将调度相关任务迁移到dlb 3602,从而增加cpu核3604用于额外计算任务的可用性。
230.图37是包括示例dlb 3702的第二示例多核处理器3700的示例实现的框图。在该示例中,第二多核处理器3700被表示为包括在cpu封装中。在该示例中,dlb 3702中的一个(多个)可与图18的dlb 1800、图19的dlb 1902、图20的dlb 2002、图21的dlb 2102、图21的dlb 2104、图22的dlb 2202、图23的dlb 2302、图24的dlb 2402、图26的dlb 2602、图28的dlb 2802、图33-图34的dlb 3320和/或图36的dlb 3602相对应。在该示例中,第二多核处理器3700是硬件。例如,第二多核处理器3700可以由来自任何所期望的系列或制造商的一个或多个集成电路、逻辑电路、微处理器、gpu、dsp或控制器实现。
231.在该示例中,第二多核处理器3700是包括示例cpu核3704的多核cpu。例如,第二多核处理器3700可以包括在图1的du 122中的一个或多个du、图1的cu 124中的一个或多个cu中,等等。在此类示例中,第二多核处理器3700可以是图2的处理器201、图3的处理器308、图4的处理器406等的示例实现。
232.在图37的图示示例中,第二多核处理器3700是基于半导体(例如,基于硅)的设备。在该示例中,第二多核处理器3700至少包括第一示例半导体管芯3706、第二示例半导体管芯3708和第三示例半导体管芯3710。在该示例中,第一半导体管芯3706是包括第一组cpu核3704的cpu管芯。在该示例中,第二半导体管芯3708是包括第二组cpu核3704的cpu管芯。在该示例中,第三半导体管芯3710是i/o管芯,其包括其他示例电路系统3712(例如,存储器、逻辑电路系统等),以促进第一多核处理器3600的操作。在该示例中,第三半导体管芯3710包括dlb 3702的两个实例。在一些示例中,半导体管芯3706、3708、3710中的一个或多个可以包括dlb 3702的多于一个实例、更少或更多cpu核3704、更少或更多其他电路系统3712等和/或其组合。
233.在图37的图示示例中,dlb 3702是硬件。例如,可以由一个或多个模拟或数字电路、逻辑电路、(多个)可编程处理器、(多个)可编程控制器、(多个)gpu、(多个)dsp、(多个)asic、(多个)pld和/或(多个)fpld来实现dlb 3702。在一些示例中,可以通过硬件、软件和/或固件来实现dlb 3702。
234.在图37的图示示例中,dlb 3702与cpu核3704中的相对应一个(多个)cpu核进行通信。例如,dlb 3702可以将数据(例如,数据指针或与存储在存储器、硬件等中的数据相关联的其他标识数据)从数据生产者(例如,nic)入列,并将数据出列到cpu核3704中的一个(多个)以供处理。例如,数据可以存储在ram或硬件中的任何其他类型的存储器中。在此类示例中,数据可以存储在第二多核处理器3700中,或者存储在第二多核处理器3700的外部。指针可以与由nic或其他网络接口获得的数据分组(例如,网络数据分组)相对应。有利地,cpu核
3704可以将调度相关任务迁移到dlb 3702,从而增加cpu核3704用于额外计算任务的可用性。
235.图38是与实现示例dlb 3802的示例现场可编程门阵列(fpga)3800通信的示例多核处理器的图示,dlb 3802诸如图18的dlb 1800、图19的dlb 1902、图20的dlb 2002、图21的dlb 2102、图21的dlb 2104、图22的dlb 2202、图23的dlb 2302、图24的dlb 2402、图26的dlb 2602、图28的dlb 2802、图33-图34的dlb 3320。在该示例中,fpga 3800包括示例fpga接口单元(fiu)3804和示例加速器功能单元(afu)3806,该afu 3806实现dlb 3802。在该示例中,fiu 3804经由核高速缓存接口(cci-p)与afu 3806通信。在该示例中,fiu 3804执行(多个)输出文件3808(诸如超高速集成电路硬件描述语言(vhsic-hdl或vhdl)(例如,具有扩展名.vho的vhdl输出文件))和/或示例库3810(例如,具有扩展名.va的fpga库)。在该示例中,fpga 3800与第一示例dram 3812通信。
236.在图38的图示示例中,fpga 3800经由外围组件互连快速(pcie)接口与示例处理器3814通信。所图示示例的处理器3814包括n个示例核3816、示例末级高速缓存3818和示例pcie根端口3820。在该示例中,处理器3814与第二示例dram 3822通信。在该示例中,第一dram 3812是本地存储器(例如,在fpga 3800的本地),并且第二dram 3822是主机存储器。
237.在示例操作中,处理器3814可以将调度任务迁移到dlb 3802。例如,dlb 3802可以将数据入列,数据诸如标识存储在第二dram 3822中的数据分组的数据指针。在此类示例中,dlb 3802可以将数据指针出列到可存储在第一dram 3812、末级高速缓存3818和/或第二dram 3822中的消费者队列。例如,处理器3814的核3816中的第一核可以轮询存储在末级高速缓存3818中的消费者队列,并确定存在存储在消费者队列中的与第一核相关联的新事件(例如,具有图35所描绘的消费者qe格式的事件)。在此类示例中,第一核可以检取存储在第二dram 3822中的数据分组,该数据分组与在新事件中引用的数据指针相对应。第一核可以对数据分组执行操作,并且响应于完成该操作,可以将处理后的数据分组返回给第二dram 3822。响应于完成,第一核可以将完成入列到dlb 3802,以通知dlb 3802数据分组的处理已经完成。在一些示例中,dlb 3802可以将另一个事件出列到消费者队列以调用核3816之一来对该数据分组或不同的数据分组执行另一操作。
238.图39是包括图38的处理器3814和fpga 3800的系统3900。在该示例中,处理器3814包括示例用户应用3902、示例库3904和示例fpga驱动器3906。用户应用3902可以经由示例应用编程接口(api)3908访问库3904。库3904包括可以实现至少枚举操作3910、访问操作3912和管理操作3914的功能。在该示例中,库3904的枚举操作3910、访问操作3912、管理操作3914等可经由系统调用(例如,ioctl系统调用)3916和/或文件系统(例如,sysfs文件系统)3918调用fpga驱动器3906。
239.在该示例中,fpga驱动器3906包括示例fpga管理引擎(fme)平台驱动器3920和示例加速器功能单元(afu)平台驱动器3922。在该示例中,处理器3814可以经由fme平台驱动器3920和fpga pcie驱动器3923枚举fpga 3800的fme 3924和/或fpga接口管理器(fim)3926。例如,fim3926可以实现图38的fiu 3804。在该示例中,处理器3814可以经由afu平台驱动器3922和fpga pcie驱动器3923枚举图38的afu 3806。在此类示例中,处理器3814可以经由afu平台驱动器3922枚举由afu 3806实现的dlb 3802。
240.在图39的图示示例中,fme 3924和fim 3926代表fpga框架3928。fpga框架3928包
括和/或以其他方式实现由fpga 3800的制造商交付的功能块,以促进fpga 3800的操作。例如,fpga框架3928可以经由fpga框架3928定义的api来抽象fpga 3800的i/o。在此类示例中,i/o可以包括和/或以其他方式实现与外围设备(诸如pci、sdram和四通道小形状因子可插拔(qsfp+)逻辑)相关的i/o逻辑。在该示例中,afu 3806代表用户应用3930。例如,用户应用3930包括和/或以其他方式实现由fpga 3800的用户生成的代码。
241.在该示例中,用户应用3902、api 3908和库3904代表系统3900的用户空间3932。在该示例中,系统调用3916、文件系统3918、fpga驱动器3906和fpga pcie驱动器3923代表系统3900的内核空间。在该示例中,fpga 3800代表系统3900的硬件空间3936。
242.图40a-图40d描绘了图39的系统的不同示例实现。图40a描绘了具有主机的第一示例系统4000。第一系统4000包括示例主机应用4002、示例数据平面开发工具包(dpdk)event_dev dlb轮询模式驱动器(pmd)4004、示例dlb物理功能(pf)驱动器4006和图38和/或图39的dlb 3802。例如,dpdk event_dev dlb pmd 4004可与库3904或其(多个)部分相对应。在该示例中,dlb pf驱动器4006可与图39的afu平台驱动器3922相对应。
243.图40b描绘了具有虚拟化主机的第二示例系统4010。第二系统4010包括图40a的应用4002、dpdk event_dev dlb pmd 4004、dlb pf驱动器4006和dlb 3802。第二系统4010包括示例虚拟化驱动器4012,诸如虚拟化dlb驱动器(vdlb)、虚拟化event_dev驱动器(vdev)等。例如,虚拟化驱动器4012可以与dlb pf驱动器4006的虚拟化相对应。有利地,第二系统4010可以虚拟化和/或以其他方式抽象dlb 3802或其(多个)部分,以供应用4002用于完成工作负荷。在此类示例中,应用4002可以经由虚拟化驱动器4012访问和/或以其他方式调用dlb 3802完成(多个)工作负荷,虚拟化驱动器4012进而调用dlb pf驱动器4006以与dlb 3802通信和/或以其他方式指示dlb 3802完成(多个)工作负荷。有利地,第二系统4010可以向第二系统4010的应用4002或不同系统(例如,图40a的第一系统4000)中的(多个)应用公开dlb 3802的虚拟化。
244.图40c描绘了具有主机或具有不同于的操作系统(例如,等)的主机的第三示例系统4020。第三系统4020包括图40a-图40b的应用4002、图40a-图40b的dpdk event_dev dlb pmd 4004、示例驱动器4022(诸如用户空间i/o(uio)驱动器和虚拟功能i/o(vfio)驱动器)以及图40a-图40b的dlb 3802。
245.图40d描绘了具有非dpdk主机或非dpdk主机的虚拟化的第四示例系统4030。第四系统4030包括图40a-图40c的应用4002、示例dlb库(libdlb)4032、图40b的虚拟化驱动器4012、图40b的dlb pf驱动器4006和图40a-图40c的dlb 3802。
246.图41是包括示例软件队列管理器(sqm)4110的示例生产者和消费者调度系统4100的图示。在该示例中,系统4100包括第一示例硬件4102和第二示例硬件4104。第一硬件4102可与存储器(例如,服务器机架中的非易失性存储器、易失性存储器等)相对应。第二硬件4104可与网络接口卡(nic)(例如,服务器机架中的nic)相对应。
247.在图41的图示示例中,sqm 4110包括示例入列软件4120和示例出列软件4130。入列软件4120可以从示例生产者4140获取数据,并确定(例如,静态确定、随机确定等)多个示例队列4150中的一个以放置或入列数据。出列软件4130可以从多个队列4150中的一个检取或出列数据,并将数据发送给示例消费者4160。数据可以与指针或同存储在第一硬件4102
中的数据相关联的其他标识数据相对应。例如,指针可以存储在ram或与第二硬件4104不同的硬件中的任何其他类型的存储器中。指针可以引用、标识和/或以其他方式与由nic或其他网络接口获得的数据分组(例如,网络数据分组)相对应。
248.在图41的图示示例中,生产者4140和消费者4160是第二硬件4104的硬件处理器的核(例如,核逻辑电路、处理核等)。生产者4140是可以将数据指针发送到入列软件4120以放置到队列4150之一上的代理。例如,生产者4140可与软件抽象相对应,该软件抽象可驱动相对应的硬件处理核打开第一硬件线程以启动存储在第一硬件4102中的第一数据的执行,其中第一数据由第一数据指针引用。生产者4140可以指示第一硬件线程将第一数据指针发送到入列软件4120,以调度第一数据的执行。
249.在图41的图示示例中,消费者4160是可以从队列4150之一检取第一数据指针的另一个代理。例如,消费者4160可与软件抽象相对应,该软件抽象可驱动相对应的硬件处理核打开第二硬件线程以从队列4150中的第一队列检取第一数据指针,从由第一数据指针引用的第一硬件4102的存储器位置检取第一数据,以及执行与第一数据相关联的一个或多个计算任务和/或更一般地处理第一数据。
250.在图41的图示示例中,sqm 4110管理队列4150以按顺序维护工作列表,其中工作列表与存储在队列4150中的数据指针集相对应。数据指针可以存储为头指针、尾指针等。尾指针可以与队列4150中入列软件4120可以写入的下一个位置相对应,并且头指针可以与队列4150中出列软件4130可以从中读取的所存储的数据指针中的下一个数据指针相对应。入列软件4120和出列软件4130可以使用头指针和尾指针来检查队列4150的状态,诸如队列是否为空、非空、满等。
251.图41的所示示例的系统4100在软件中实现由消费者4160执行的计算任务的调度。在一些实例中,系统4100可以表现出算法和性能限制,包括锁等待时间、锁争用、存储器等待时间、高速缓存和监听行为以及多个队列的轮询的影响。系统4100的此类限制可导致核计算周期不足,无法满足更复杂队列配置和/或更复杂调度决策的实时要求,更复杂调度决策诸如要管理数千个队列、确定队列之间的优先级以及促进消费者负荷平衡。
252.在图42-图46中示出了表示用于实现诸如图18的dlb 1800之类的dlb和/或诸如图51的软件分发平台5105之类的软件分发平台的示例硬件逻辑、机器可读指令、硬件实现的状态机和/或其任何组合的流程图。机器可读指令可以是用于由计算机处理器和/或处理器电路执行的一个或多个可执行程序或可执行程序的(多个)部分,计算机处理器和/或处理器电路诸如下文结合图48、图49和/或图50所讨论的示例处理器平台4800、4900、5000中示出的处理器4812、4912、5012。程序可被具体化在与处理器4812、4912、5012相关联的诸如cd-rom、软盘、硬驱动器、dvd、蓝光盘或存储器之类的非瞬态计算机可读存储介质上所存储的软件中,但是整个程序和/或其部分可以替代地由除处理器4812、4912、5012之外的设备执行,和/或被具体化在固件或专用硬件中。此外,虽然参考图42-图46和/或图47所图示的流程图描述了示例程序,但是可替代地使用实现示例dlb 1800的许多其他方法。例如,可改变框的执行次序,和/或可改变、消除或组合所描述的框中的一些框。附加地或替代地,框中的任何框或所有框可以由被构造成用于在不执行软件或固件的情况下执行相应的操作的一个或多个硬件电路(例如,分立的和/或集成的模拟和/或数字电路、fpga、asic、比较器、运算放大器(op-amp)、逻辑电路等)来实现。处理器电路系统可以分布在不同的网络位置中
和/或位于一个或多个设备的本地(例如,单个机器中的多核处理器、跨服务器机架分布的多个处理器等)。
253.本文中描述的机器可读指令能以压缩格式、加密格式、分段格式、编译格式、可执行格式、封装格式等中的一种或多种来存储。本文描述的机器可读指令可以作为可用于创建、制造和/或产生机器可执行指令的数据或数据结构(例如,指令的部分、代码、代码表示等)来存储。例如,机器可读指令可以被分段并被存储在位于网络或网络集合(例如,在云中、在边缘设备中等)中的相同或不同位置处的一个或多个存储设备和/或计算设备(例如,服务器)上。机器可读指令可能需要安装、修改、适配、更新、组合、补充、配置、解密、解压缩、拆包、分发、重新分配、编译等中的一项或多项,以使得它们由计算设备和/或其他机器直接可读取、可解释、和/或可执行。例如,机器可读指令可以存储在多个部分中,这些部分被单独压缩、加密并存储在单独的计算设备上,其中,这些部分在被解密、解压缩和组合时形成实现诸如本文所述的可以一起形成程序的一个或多个功能的一组可执行指令。
254.在另一示例中,机器可读指令可以以它们可被处理器电路系统读取的状态存储,但是需要添加库(例如,动态链接库(dll))、软件开发工具包(sdk)、应用编程接口(api)等,以便在特定的计算设备或其他设备上执行指令。在另一个示例中,在可整体或部分地执行机器可读指令和/或对应的(多个)程序之前,可能需要配置机器可读指令(例如,存储的设置、数据输入、记录的网络地址等)。因此,如本文所使用,机器可读介质可以包括机器可读指令和/或(多个)程序,而不管机器可读指令和/或(多个)程序在存储时或以其他方式处于静态或在传输中时的特定格式或状态如何。
255.本文所描述的机器可读指令可以由任何过去、现在或将来的指令语言、脚本语言、编程语言等表示。例如,机器可读指令可以用以下语言中的任何一种语言来表示:c、c++、java、c#、perl、python、javascript、超文本标记语言(html)、结构化查询语言(sql)、swift等。
256.如上所提及的,可使用存储于非瞬态计算机和/或机器可读介质上的可执行指令(例如,计算机和/或机器可读指令)实现图42-图46和/或图47的示例过程,非瞬态计算机和/或机器可读介质诸如:硬盘驱动器、闪存、只读存储器、压缩盘、数字多功能盘、高速缓存、随机存取存储器和/或在任何时长内(例如,在扩展时间段内、永久地、在简短的实例期间、在临时缓冲和/或信息缓存期间)将信息存储于其内的任何其它存储设备或存储盘。如本文中所使用,术语非瞬态计算机可读介质被明确地定义为包括任何类型的计算机可读存储设备和/或存储盘,并且排除传播信号且排除传输介质。
[0257]“包含”和“包括”(及其所有形式和时态)在本文中用作开放式术语。因此,每当权利要求将任何形式的“包含”和“包括”(例如,包括、包含、包括有、包含有、具有等)用作前序部分或用于任何种类的权利要求记载内容之中时,要理解的是,附加的要素、项等可以存在而不落在对应权利要求或记载的范围之外。如本文中所使用,当短语“至少”被用作例如权利要求的前序部分中的过渡术语时,它是和术语“包含”和“包括”一样的开放式的。当例如以诸如a、b和/或c之类的形式被使用时,术语“和/或”指的是a、b、c的任何组合或子集,诸如(1)单独的a、(2)单独的b、(3)单独的c、(4)a与b、(5)a与c、(6)b与c、以及(7)a与b及与c。如本文中在描述结构、组件、项、对象和/或事物的上下文中所使用,短语“a和b中的至少一个”旨在表示包括(1)至少一个a、(2)至少一个b、和(3)至少一个a和至少一个b中的任何一项的
实现。类似地,如本文中在描述结构、组件、项、对象和/或事物的上下文中所使用,短语“a或b中的至少一个”旨在表示包括(1)至少一个a、(2)至少一个b、和(3)至少一个a和至少一个b中的任何一项的实现。如本文中在描述过程、指令、动作、活动和/或步骤的处理或执行的上下文中所使用,短语“a和b中的至少一个”旨在表示包括(1)至少一个a、(2)至少一个b、和(3)至少一个a和至少一个b中的任何一项的实现。类似地,如本文中在描述过程、指令、动作、活动和/或步骤的处理或执行的上下文中所使用,短语“a或b中的至少一个”旨在表示包括(1)至少一个a、(2)至少一个b、和(3)至少一个a和至少一个b中的任何一项的实现。
[0258]
如本文所使用,单数引用(例如,“一(a、an)”、“第一”、“第二”等)不排除复数。本文所使用的术语“一(a或an)”实体是指一个或多个该实体。术语“一(a)”(或“一(an)”)、“一个或多个”和“至少一个”在本文中可以可互换地使用。此外,尽管单独列出,但多个装置、元件或方法动作可由例如单个单元或处理器来实现。另外,虽然各个特征可以被包括在不同的示例或权利要求中,但是这些特征可能被组合,并且在不同的示例或权利要求中的包含并不意味着特征的组合是不可行和/或不是有利的。
[0259]
图42是代表可被执行以实现dlb的示例机器可读指令4200的流程图,dlb诸如图2的dlb 202、图3的dlb 304、图4-图6的dlb 410、图10的dlb 1008、图14和图16的dlb 1404、图18的dlb 1800、图19的dlb 1902、图20的dlb 2002、图21的dlb 2102、图21的dlb 2104、图22的dlb 2202、图23的dlb 2302、图24的dlb 2402、图26的dlb 2602、图28的dlb 2802、图33-图34的dlb 3320、图36的dlb 3602、图37的dlb 3702和/或图38-图40d的dlb 3802,用于动态负荷平衡数据流。例如,图18的dlb 1800可以包括在图1的du 122之一、图1的cu 124之一等中和/或以其他方式由图1的du 122之一、图1的cu 124之一等实现。在此类示例中,dlb 1800可以执行图42的示例机器可读指令4200来调用du 122之一、cu 124之一等,以加速图1的多核计算环境100中计算任务(例如,5g蜂窝操作)的调度。
[0260]
图42的示例机器可读指令4200从框4202开始,在框4202处,dlb 1800获得包括引用分组流中的数据分组的数据指针的事件。例如,事件控制器4220(图42)可以在生产者端口(例如,图22的生产者端口2210之一)处获得诸如qe之类的事件,其中该事件可以包括引用存储在主存储器(例如,服务器的易失性存储器、服务器的非易失性存储器等)中的数据分组的数据指针。在此类示例中,数据指针可以引用图2的数据流214的数据分组。在一些此类示例中,事件可以具有基于图35的示例中描绘的生产者hcw的格式。
[0261]
在框4204处,dlb 1800处理与事件相关联的数据指针。例如,事件控制器1820可以检查事件的cmd、misc、lockid、q_info、sw等字段。在此类示例中,事件控制器1820可以基于事件的字段、基于事件中包括的数据确定数据指针可以被保存在重新排序缓冲区中、由两级优先级仲裁器的一级或两级处理等和/或其组合。
[0262]
在框4206处,dlb 1800基于与事件相关联的信息来将事件入列到第一队列中。例如,队列控制器1830(图18)可以将事件中包括的标识符(例如,数据指针)入列到队列(诸如图20的队列2008之一),该队列由电路系统(诸如图20的dlb 2002)实现,其中标识符与数据流的数据分组相关联。
[0263]
在框4208处,dlb 1800调度事件以由核执行。例如,仲裁控制器1860(图18)可以从队列2008之一读取数据指针,并标识图20的消费者核2006之一,以处理由数据指针引用的数据分组。在此类示例中,仲裁控制器1860可以将队列2008之一中的数据指针指派给消费
者核2006中的第一消费者核。例如,仲裁控制器1860可以将队列2008之一中的数据指针分配给消费者核2006中的第一消费者核。
[0264]
在框4210处,dlb 1800通过将事件写入与核相关联的第二队列来将事件出列。例如,仲裁控制器1860可以将数据指针从队列2008之一中出列,并将数据指针写入到图20的消费者队列2016之一。
[0265]
在框4212处,dlb 1800调用核来读取事件并执行与该事件相关联的计算操作。例如,响应于仲裁控制器1860将数据指针写入到与消费者核2006之一相关联的消费者队列2016之一,仲裁控制器1860可以调用消费者核2006之一来对与数据指针相关联的数据分组执行一个或多个计算任务、操作等。在此类示例中,响应于利用消费者核2006之一对数据分组执行一个或多个计算任务、一个或多个操作等,消费者核2006之一在事件中写入完成字节。在一些此类示例中,消费者核2006之一将具有完成字节的事件入列到dlb 2002。dlb 2002可以将数据指针提供到消费者核2006中的第二消费者核,以使消费者核2006中的第二消费者核分发数据分组。
[0266]
在框4214处,dlb 1800确定是否还有另一个要处理的事件。例如,事件控制器1820可以确定在诸如生产者端口2210之类的dlb 2202的前端逻辑电路系统处是否接收到新事件。如果在框4214处,dlb 1800确定存在另一个要处理的事件,则控制返回到框4202,以获取另一个事件,否则,图42的示例机器可读指令4200结束。
[0267]
图43是代表可被执行以实现dlb的示例机器可读指令4300的流程图,dlb诸如图2的dlb 202、图3的dlb 304、图4-图6的dlb 410、图10的dlb 1008、图14和图16的dlb 1404、图18的dlb 1800、图19的dlb 1902、图20的dlb 2002、图21的dlb 2102、图21的dlb 2104、图22的dlb 2202、图23的dlb 2302、图24的dlb 2402、图26的dlb 2602、图28的dlb 2802、图33-图34的dlb 3320、图36的dlb 3602、图37的dlb 3702和/或图38-图40d的dlb 3802,用于动态负荷平衡数据流。
[0268]
图43的示例机器可读指令4300从框4302开始,在框4302处,dlb 1800通过将引用数据分组的数据指针入列到动态负荷平衡器来处理数据分组。例如,数据分组可以包括在网络通信的数据流中和/或以其他方式与网络通信的数据流相关联。例如,图1的du 122之一、图1的cu 124之一等可以通过调用dlb 1800来检查与数据分组相关联的事件来处理数据分组,以基于事件中包括的数据来确定优先级、确定是否需要对分组和/或相关联的分组重新排序等。在此类示例中,事件控制器1820(图18)可以检查事件。
[0269]
在框4304处,dlb 1800执行信用检查。例如,事件控制器1820可以花费信用来使与该分组相关联的事件入列。在此类示例中,事件控制器1820可以执行如上结合图32的第五工作流3200所述的信用检查。
[0270]
在框4306处,dlb 1800存储16b硬件控制字(hcw)。例如,事件控制器1820可以基于图35的图示示例的生产者hcw格式生成16b hcw。在此类示例中,事件控制器1820可以将16b hcw存储在存储1880(图18)中。响应于存储16b hcw,控制返回到框4302以处理另一个数据分组。在图43的图示示例中,控制从框4306返回到框4302四次,以在框4308处填充64b存储单元。在一些示例中,控制可能不会返回到框4302,而在其他示例中,控制可返回与四次不同的次数。
[0271]
响应于在框4308处填充64b存储单元,在框4310处dlb 1800执行存储器指令。例
如,事件控制器1820可以执行lfence、mfence、sfence等指令。
[0272]
在框4312处,dlb 1800执行移动数据指令。例如,dlb 1800可以通过执行movdqa指令,将双四字从源操作数移动到目的地操作数。响应于在框4312处执行移动数据指令,控制返回框4302以处理另一个数据分组。
[0273]
图44是代表可被执行以实现dlb的示例机器可读指令4400的流程图,dlb诸如图2的dlb 202、图3的dlb 304、图4-图6的dlb 410、图10的dlb 1008、图14和图16的dlb 1404、图18的dlb 1800、图19的dlb 1902、图20的dlb 2002、图21的dlb 2102、图21的dlb 2104、图22的dlb 2202、图23的dlb 2302、图24的dlb 2402、图26的dlb 2602、图28的dlb 2802、图33-图34的dlb 3320、图36的dlb 3602、图37的dlb 3702和/或图38-图40d的dlb 3802,用于基于事件动态负荷平衡数据流。
[0274]
图44的示例机器可读指令4400从框4402开始,在框4402处,dlb 1800配置事件设备。例如,事件设备可以是图22的dlb 2202。在此类示例中,配置控制器1810可以配置事件端口的数量(例如,图22的生产者端口2210的数量)、事件队列的数量(例如,图22的队列2214的数量)、dlb 2202中的飞行中事件的限制或阈值数量(例如,dlb 2202可以处理的事件的数量、dlb 2202在一个时间间隔期间可以接收的事件的数量等),等等。
[0275]
在框4404处,dlb 1800配置负荷平衡和定向事件端口。例如,配置控制器1810可以配置与图23的第一组生产者线程2304通信的生产者端口2210,以及与图23的第二组生产者线程2304通信的生产者端口2210。在此类示例中,配置控制器1810可以配置与图22的dlb 2202、图23的dlb 2302等的端口相关联的入列队列深度、出列队列深度、新事件阈值等。在一些此类示例中,配置控制器1810可以通过配置队列2214的深度(例如,可以排队的qe的数量)来配置入列队列深度。配置控制器1810可以通过配置图22的消费者队列2212的深度来配置出列队列深度。配置控制器1810可以配置生产者端口2210和/或更一般地dlb 2202可以接收和处理的新事件的阈值数量。
[0276]
在框4406处,dlb 1800配置负荷平衡和定向事件队列。例如,配置控制器1810可以配置与图23的第一组生产者线程2304通信的生产者端口2210,以及与图23的第二组生产者线程2304通信的生产者端口2210。在此类示例中,配置控制器1810可以配置队列可以支持的调度类型、重新排序序号(用于排序调度)和/或原子流(用于原子调度)。在一些此类示例中,配置控制器1810可以将图23的第一队列2308配置为原子队列,将图23的第二队列2310配置为非原子队列,并且将图23的第三队列2312配置为直接队列。
[0277]
在框4408处,dlb 1800将事件队列链接到事件端口。例如,配置控制器1810可以将配置为负荷平衡端口的图23的dlb 2302的第一生产者端口链接到第一队列2308中的一个或多个,将配置为直接端口的dlb 2302的第二生产者端口链接到第二队列2310中的一个或多个等。在此类示例中,配置控制器1810建立事件端口与事件队列之间的链路,以确定可以将哪些队列调度到哪些端口。例如,负荷平衡队列可以链接到任意数量的负荷平衡端口,而定向队列必须链接到单个端口。在此类示例中,配置控制器1810将第一队列2308的qid 1链接到生产者线程2304的生产者核e,并将第一队列2308的qid 0和qid 3链接到生产者线程2304的生产者核b。
[0278]
在框4410处,dlb 1800启动事件设备。例如,配置控制器1810可以启用图22的dlb 2202、图23的dlb 2302等以开始调度事件。在此类示例中,配置控制器1810可以启用、触发
和/或以其他方式调用事件控制器1820(图18)以开始接收事件并调度事件以供处理。
[0279]
在框4412处,dlb 1800接收事件。例如,事件控制器1820可以从端口(例如,生产者端口2210中的一个(多个)生产者端口)接收事件。在此类示例中,事件控制器1820可以接收零个或更多个事件,这取决于端口的队列中的事件的数量(例如,每个生产者端口2210可以有用于接收事件并将事件入列到其中的队列)和/或dlb 1800可以支持的由配置控制器1810配置的事件的最大数量。在一些此类示例中,事件控制器1820可以经由轮询操作模式(例如,生产者端口2210中的一个(多个)轮询生产者线程2206中的一个(多个))来获得事件。或者,事件控制器1820可以响应于生产者核(诸如生产者线程2206中的一个(多个))将事件推送到生产者端口2210中的一个(多个)而接收事件。
[0280]
在框4414处,dlb 1800处理事件。例如,事件控制器1820可以从事件中提取数据,并基于数据来确定如何处理事件。在此类示例中,队列控制器1830(图18)可以基于数据将数据入列到图22的队列2214之一中。在一些示例中,事件控制器1820按顺序处理接收到的事件。例如,对接收到的事件的处理类型取决于事件的数据中包含的队列标识符、事件类型和/或子事件类型字段。例如,多级流水线(例如,具有多个操作的应用,应用诸如图27的应用2700)可以每一级具有一个队列,使得事件的队列标识符指示要应用于事件的哪个处理级。例如,可以分配和/或以其他方式指派图22的队列2214中的第一队列以实行图27的rx分类操作2702的处理,可以分配和/或以其他方式指派队列2214中的第二队列以实行图27的预加密操作2704的处理,等等。
[0281]
在框4416处,dlb 1800转发或释放事件。例如,仲裁控制器1860(图18)可以将事件转发给工作者核池2606中的工作者核,以处理图27的应用2700的操作。在其他示例中,仲裁控制器1860可以响应于完成对事件的应用2700,将事件释放到第二核2608以供分发。
[0282]
在框4418处,dlb 1800确定是否还有另一个要处理的事件。例如,事件控制器1820可确定已在生产者端口2210处接收到另一个事件。如果在框4418处,dlb 1800确定已接收到另一个事件,则控制返回框4412以接收该事件,否则图44的示例机器可读指令4400结束。
[0283]
图45是代表可被执行以实现dlb的示例机器可读指令4500的流程图,dlb诸如图2的dlb 202、图3的dlb 304、图4-图6的dlb 410、图10的dlb 1008、图14和图16的dlb 1404、图18的dlb 1800、图19的dlb 1902、图20的dlb 2002、图21的dlb 2102、图21的dlb 2104、图22的dlb 2202、图23的dlb 2302、图24的dlb 2402、图26的dlb 2602、图28的dlb 2802、图33-图34的dlb 3320、图36的dlb 3602、图37的dlb 3702和/或图38-图40d的dlb 3802,用于动态负荷平衡数据流。
[0284]
图45的示例机器可读指令4500从框4502开始,在框4502处,dlb 1800获得接收(rx)核处的来自数据源的分组流。例如,事件控制器1820(图18)可以标识来自数据源(诸如来自图1的设备环境102的设备108、110、112、114、116中的一个(多个))的要被发送到图1的核网络106和/或云网络107的传入大象流。在此类示例中,大象流可由图3的nic 316接收。在一些此类示例中,nic 316可以包括在图1的du 122中的一个(多个)中和/或与图1的du 122中的一个(多个)通信。例如,du 122可以从rru 120接收大象流。在此类示例中,事件控制器1820可以从图3的生产者核310接收数据流306。
[0285]
在框4504处,dlb 1800基于遥测数据来标识可用的(多个)核。例如,遥测控制器1870(图18)可以基于遥测参数(诸如核利用率百分比)来标识图4的工作者核412的第一工
作者核、第二工作者核和第三工作者核可用。在此类示例中,遥测控制器1870可以从工作者核412获得利用率数据,并基于利用率数据来确定图8的处理核利用率802。
[0286]
在框4506处,dlb 1800将来自rx核的数据分组入列,并将数据分组出列到可用的(多个)核。例如,队列控制器1830(图18)可以将大象流或其(多个)部分从生产者核408入列到存储器,并将大象流或其(多个)部分出列到工作者核412。在此类示例中,队列控制器1830可以将包括数据指针的事件入列,该数据指针引用图22的队列2214中的大象流的数据分组。在一些此类示例中,仲裁控制器1860(图18)可以将事件的数据指针出列到工作者核412中的可用一个(多个)工作者核。
[0287]
在框4508处,dlb 1800优化对数据分组执行(多个)计算任务,以生成处理后的数据分组。例如,遥测控制器1870可以基于处理大象流的工作者核412的当前数量来确定吞吐量阈值不被满足。在此类示例中,配置控制器1810(图18)可以增加分配给处理大象流的工作者核412的数量。下面结合图46描述可被执行以实现框4508的示例过程。
[0288]
在框4510处,dlb 1800重新排序和/或聚合处理后的数据分组。例如,重新排序控制器1840(图18)可以基于标识符(例如,队列标识符、流标识符等)来对处理后的数据分组重新排序。在此类示例中,聚合控制器1850(图18)可以将重新排序的处理后的数据分组聚合成数据流,以准备传输或进一步处理。
[0289]
在框4512处,dlb 1800将处理后的数据分组出列到发送(tx)核。例如,仲裁控制器1860可以将引用经重新排序和/或聚合的处理后的数据分组的数据指针出列到图4的消费者核414。在此类示例中,消费者核414可以基于出列的数据指针来在存储器中的地址处检取重新排序和/或聚合的处理后的数据分组。
[0290]
在框4514处,dlb 1800调用处理后的数据分组到不同逻辑实体的传送。例如,响应于将处理后的数据分组出列到消费者核414,消费者核414可以将处理后的数据分组传送到nic 316,以供传送到不同的硬件、软件和/或固件。在此类示例中,du 122中的一个(多个)du的nic 316可以将检取到的数据分组传送到cu 124中的一个(多个)cu,以供分发到图1的核网络106。
[0291]
在框4516处,dlb 1800确定是否还有另一个要处理的分组流。例如,事件控制器1820可以确定有另一个要处理的传入大象流。在此类示例中,大象流可以从核网络106到设备环境102,从设备环境102到核网络106等等。如果在框4516处,dlb 1800确定存在另一个要处理的分组流,则控制返回框4502以获得另一个分组流。如果在框4516处,dlb 1800确定不存在另一个要处理的分组流,则图45的示例机器可读指令4500结束。
[0292]
图46是代表可被执行以实现dlb的示例机器可读指令4600的流程图,dlb诸如图2的dlb 202、图3的dlb 304、图4-图6的dlb 410、图10的dlb 1008、图14和图16的dlb 1404、图18的dlb 1800、图19的dlb 1902、图20的dlb 2002、图21的dlb 2102、图21的dlb 2104、图22的dlb 2202、图23的dlb 2302、图24的dlb 2402、图26的dlb 2602、图28的dlb 2802、图33-图34的dlb 3320、图36的dlb 3602、图37的dlb 3702和/或图38-图40d的dlb 3802,用于优化对数据分组执行(多个)计算任务以生成处理后的数据分组。
[0293]
可以执行图46的示例机器可读指令4600来实现图45的框4508。图46的示例机器可读指令4600从框4602开始,在框4602处,dlb 1800响应于(多个)计算任务的执行基于遥测数据而确定吞吐量。例如,遥测控制器1870(图18)可以响应于工作者核1410之一被指派给
处理大象流而确定图14的cpu 1402的60%的吞吐量1504。
[0294]
在框4604处,dlb 1800确定吞吐量是否满足线速。例如,遥测控制器1870可以将60%的吞吐量1504与线速1506或100%的吞吐量阈值进行比较,并确定60%的吞吐量1504不符合和/或以其他方式不满足100%的吞吐量阈值。
[0295]
如果在框4604处,dlb 1800确定吞吐量满足线速,则控制进行到框4608以确定是否还有剩下要处理的(多个)数据分组。如果在框4604处,dlb 1800确定吞吐量不满足线速,则在框4606处,dlb 1800增加指派给对分组流的处理的核的数量以提高吞吐量。例如,配置控制器1810(图18)可以分配工作者核1410中的额外的一个(多个)来处理大象流,以提高cpu1402的吞吐量。
[0296]
响应于在框4606处增加核的数量,在框4608处,dlb 1800确定是否还有剩下要处理的(多个)数据分组。如果在框4608处,dlb 1800确定还有剩下要处理的(多个)数据分组,则控制返回框4602,以响应于使用增加数量的核执行(多个)计算任务而确定更新的吞吐量值。如果在框4608处,dlb 1800确定没有剩下要处理的(多个)数据分组,则控制返回到图45的示例机器可读指令4500的框4510,以重新排序和/或聚合处理后的数据分组。
[0297]
图47是表示可以被执行以实现示例软件分发平台(诸如图51的软件分发平台5105)的示例机器可读指令4700的流程图,该示例软件分发平台用于将软件分发到图2-图6、图10、图14、图16、图18-图24、图26、图28、图33、图34和/或图36-图40d的dlb。示例机器可读指令4700从框4702开始,在框4702处,软件分发平台5105生成用于负荷平衡数据流的机器可读指令。例如,软件分发平台5105可以生成图42的机器可读指令4200、图43的机器可读指令4300、图44的机器可读指令4400、图45的机器可读指令4500和/或图46的机器可读指令4600。在此类示例中,软件分发平台5105可以基于图42的机器可读指令4200、图43的机器可读指令4300、图44的机器可读指令4400、图45的机器可读指令4500和/或图46的机器可读指令4600来生成可执行文件。
[0298]
在框4704处,软件分发平台5105将机器可读指令分发给(多个)动态负荷平衡器,以使(多个)dlb被配置并使(多个)dlb调度事件以供处理。例如,软件分发平台5105可以将图42的机器可读指令4200、图43的机器可读指令4300、图44的机器可读指令4400、图45的机器可读指令4500和/或图46的机器可读指令4600、可执行文件等发送到(多个)dlb,该(多个)dlb包括在图1的du 122中的一个(多个)du、图1的cu 124中的一个(多个)cu、图1的核设备126中的一个(多个)核设备等和/或其组合中。在此类示例中,响应于软件分发平台5105将图42的机器可读指令4200、图43的机器可读指令4300、图44的机器可读指令4400、图45的机器可读指令4500和/或图46的机器可读指令4600、可执行文件等分发到(多个)dlb,(多个)dlb可以执行图42的机器可读指令4200、图43的机器可读指令4300、图44的机器可读指令4400、图45的机器可读指令4500和/或图46的机器可读指令4600、可执行文件等,以配置(多个)dlb。在一些此类示例中,图42的机器可读指令4200、图43的机器可读指令4300、图44的机器可读指令4400、图45的机器可读指令4500和/或图46的机器可读指令4600、可执行文件等在被执行时,可将dlb配置为如上结合至少图44的框4402、4404、4406、4408所描述的来配置。在一些此类示例中,图42的机器可读指令4200、图43的机器可读指令4300、图44的机器可读指令4400、图45的机器可读指令4500和/或图46的机器可读指令4600、可执行文件等在被执行时可使(多个)dlb调度与数据流相关联的事件,如本文所述。响应于框4704处机器
可读指令的分发,图47的示例机器可读指令4700结束。
[0299]
图48是被构造用于执行图42-图46的指令以实现图18的dlb1800的示例处理器平台4800的框图。例如,处理器平台4800可以是分布式单元(例如,图1的du 122)、集中式单元(例如,图1的cu 124中的一个cu)、核设备(例如,图1的核设备126中的一个核设备)、服务器(例如,计算机服务器、边缘服务器等)、个人计算机、工作站、自学习机(例如,神经网络)、移动设备(例如,手机、智能电话、诸如ipad
tm
之类的平板)、个人数字助理(pda)、互联网设备、dvd播放器、cd播放器、数字视频记录仪、蓝光播放器、游戏控制台、个人视频记录仪、机顶盒、耳机或其他可穿戴设备、或任何其他类型的计算设备。
[0300]
所图示示例的处理器平台4800包括处理器4812。所图示示例的处理器4812是硬件。例如,处理器4812可以由来自任何所期望的系列或制造商的一个或多个集成电路、逻辑电路、微处理器、gpu、dsp或控制器实现。硬件处理器可以是基于半导体的(例如,基于硅的)器件。在该示例中,处理器4812实现图18的示例配置控制器1810、示例事件控制器1820、示例队列控制器1830、示例重新排序控制器1840、示例聚合控制器1850、示例仲裁控制器1860和示例遥测控制器1870。
[0301]
所图示示例的处理器4812包括本地存储器4813(例如,高速缓存)。所图示示例的处理器4812经由总线4818而与包括易失性存储器4814和非易失性存储器4816的主存储器进行通信。易失性存储器4814可由同步动态随机存取存储器(sdram)、动态随机存取存储器(dram)、动态随机存取存储器和/或任何其他类型的随机存取存储器设备实现。非易失性存储器4816可由闪存和/或任何其他所期望类型的存储器设备实现。由存储器控制器控制对主存储器4814、4816的访问。
[0302]
所图示示例的处理器平台4800还包括接口电路4820。接口电路4820可由任何类型的接口标准实现,诸如以太网接口、通用串行总线(usb)、蓝牙接口、近场通信(nfc)接口和/或pci express(pci快速)接口。
[0303]
在所图示的示例中,一个或多个输入设备4822被连接至接口电路4820。(多个)输入设备4822准许用户将数据和/或命令输入到处理器4812中。(多个)输入设备可以由例如,音频传感器、话筒、相机(静态或视频)、键盘、按钮、鼠标、触摸屏、轨迹板、轨迹球、等点鼠标(isopoint)设备和/或语音识别系统实现。
[0304]
一个或多个输出设备4824也被连接至所图示示例的接口电路4820。输出设备4824可例如,由显示设备(例如,发光二极管(led)、有机发光二极管(oled)、液晶显示器(lcd)、阴极射线管显示器(crt)、面内切换(ips)显示器、触摸屏等)、触觉输出设备、打印机和/或扬声器实现。因此,所图示示例的接口电路4820典型地包括图形驱动器卡、图形驱动器芯片和/或图形驱动器处理器。
[0305]
所图示示例的接口电路4820还包括诸如发射器、接收器、收发器、调制解调器、住宅网关、无线接入点、和/或网络接口之类的通信设备,以促进经由网络4826与外部机器(例如,任何种类的计算设备)交换数据。通信可以经由例如,以太网连接、数字订户线路(dsl)连接、电话线连接、同轴电缆系统、卫星系统、直线对传式无线系统、蜂窝电话系统等。
[0306]
所图示示例的处理器平台4800还包括用于存储软件和/或数据的一个或多个大容量存储设备4828。此类大容量存储设备4828的示例包括软盘驱动器、硬驱动器盘、紧凑盘驱动器、蓝光盘驱动器、独立磁盘冗余阵列(raid)系统、以及数字多功能盘(dvd)驱动器。在该
示例中,一个或多个大容量存储设备4828实现图18的存储1880。
[0307]
图42-图46的机器可执行指令4832可以被存储在大容量存储设备4828中,存储在易失性存储器4814中,存储在非易失性存储器4816中,和/或存储在诸如cd或dvd的可移除非瞬态计算机可读存储介质上。
[0308]
图49是被构造用于执行图42-图46的指令以实现包括第一示例dlb 4940和第二示例dlb 4942的多核计算环境的示例处理器平台4900的框图。第一dlb 4940和/或第二dlb 4942可以由图2的dlb 202、图3的dlb304、图4-图6的dlb 410、图10的dlb 1008、图14和图16的dlb 1404、图18的dlb 1800、图19的dlb 1902、图20的dlb 2002、图21的dlb 2102、图21的dlb 2104、图22的dlb 2202、图23的dlb 2302、图24的dlb 2402、图26的dlb 2602、图28的dlb 2802、图33-图34的dlb 3320、图36的dlb 3602、图37的dlb 3702和/或图38-图40d的dlb 3802实现。例如,处理器平台4900可以是分布式单元(例如,图1的du 122)、集中式单元(例如,图1的cu 124中的一个cu)、核设备(例如,图1的核设备126中的一个核设备)、服务器(例如,计算机服务器、边缘服务器等)、个人计算机、工作站、自学习机(例如,神经网络)、移动设备(例如,手机、智能电话、诸如ipad
tm
之类的平板)、pda、互联网设备、dvd播放器、cd播放器、数字视频记录仪、蓝光播放器、游戏控制台、个人视频记录仪、机顶盒、耳机或其他可穿戴设备、或任何其他类型的计算设备。
[0309]
所图示示例的处理器平台4900包括处理器4912。所图示示例的处理器4912是硬件。例如,处理器4912可以由来自任何所期望的系列或制造商的一个或多个集成电路、逻辑电路、微处理器、gpu、dsp或控制器实现。硬件处理器可以是基于半导体的(例如,基于硅的)器件。在该示例中,处理器4912包括第一dlb 4940。在一些示例中,处理器4912包括第一dlb 4940的多于一个实例。
[0310]
所图示示例的处理器4912包括本地存储器4913(例如,高速缓存)。所图示示例的处理器4912经由总线4918而与包括易失性存储器4914和非易失性存储器4916的主存储器进行通信。易失性存储器4914可由同步动态随机存取存储器(sdram)、动态随机存取存储器(dram)、动态随机存取存储器和/或任何其他类型的随机存取存储器设备实现。非易失性存储器4916可由闪存和/或任何其他所期望类型的存储器设备实现。由存储器控制器控制对主存储器4914、4916的访问。在图49中,第一dlb 4940和/或第二dlb 4942可以访问主存储器。
[0311]
所图示示例的处理器平台4900还包括接口电路4920。接口电路4920可由任何类型的接口标准实现,诸如以太网接口、通用串行总线(usb)、蓝牙接口、近场通信(nfc)接口和/或pci express(pci快速)接口。在图49中,第二dlb 4942可以经由接口电路4920与处理器平台4900的一个或多个不同组件进行交互。
[0312]
在所图示的示例中,一个或多个输入设备4922被连接至接口电路4920。(多个)输入设备4922准许用户将数据和/或命令输入到处理器4912中。(多个)输入设备4922可以由例如音频传感器、话筒、相机(静态或视频)、键盘、按钮、鼠标、触摸屏、轨迹板、轨迹球、等点鼠标(isopoint)设备和/或语音识别系统实现。
[0313]
一个或多个输出设备4924也被连接至所图示示例的接口电路4920。输出设备4924可以例如通过显示设备(例如,led、oled、lcd、crt显示器、ips显示器、触摸屏等)、触觉输出设备、打印机和/扬声器来实现。因此,所图示示例的接口电路4920典型地包括图形驱动器
卡、图形驱动器芯片和/或图形驱动器处理器。
[0314]
所图示示例的接口电路4920还包括诸如发射器、接收器、收发器、调制解调器、住宅网关、无线接入点、和/或网络接口之类的通信设备,以促进经由网络4926与外部机器(例如,任何种类的计算设备)交换数据。通信可以经由例如,以太网连接、数字订户线路(dsl)连接、电话线连接、同轴电缆系统、卫星系统、直线对传式无线系统、蜂窝电话系统等。
[0315]
所图示示例的处理器平台4900还包括用于存储软件和/或数据的一个或多个大容量存储设备4928。此类大容量存储设备4928的示例包括软盘驱动器、硬驱动器盘、紧凑盘驱动器、蓝光盘驱动器、raid系统和dvd驱动器。
[0316]
图42-图46的机器可执行指令4932可以被存储在大容量存储设备4928中,存储在易失性存储器4914中,存储在非易失性存储器4916中,和/或存储在诸如cd或dvd的可移除非瞬态计算机可读存储介质上。
[0317]
图50是能够执行图42-图46的示例指令以实现诸如图49的第一dlb 4940和/或第二dlb 4942之类的dlb的示例系统5000。在图49的图示示例中,系统5000是处理器平台(例如,多核计算系统),诸如服务器(例如,单插槽服务器、双插槽服务器、1u服务器、2u服务器等)。例如,系统可以实现图1的du 122之一、图1的cu 124之一、图1的核设备126之一等。或者,系统5000可以是任何其他类型的计算设备或计算系统。所示示例的系统5000包括示例机箱(chassis)5010,其可耦合到机柜(cabinet)(例如,服务器机柜、安装机架的机柜等)和/或以其他方式集成到机柜中。
[0318]
在所示示例中,系统5000包括多个处理器5012、多个本地存储器5013和图18的多个dlb 1800。或者,可以使用比图50所描绘的更少或更多的多个处理器5012、多个本地存储器5013和/或多个dlb 1800。在该示例中,处理器5012可以实现图48的处理器4812或图49的处理器4912。在该示例中,本地存储器5013可以实现图48的本地存储器4813或图49的本地存储器4813。在该示例中,计算机可读指令5032存储在本地存储器5013中。例如,计算机可读指令5032可以实现图48的计算机可读指令4832或图49的计算机可读指令4932。
[0319]
在图51中图示了图示用于将诸如图48-图50的示例计算机可读指令4832、4932、5032之类的软件分发至第三方的示例软件分发平台5105的框图。示例软件分发平台5105可以由能够存储软件并将软件传送到其他计算设备的任何计算机服务器、数据设施、云服务等来实现。第三方可以是拥有和/或操作软件分发平台5105的实体的客户。例如,拥有和/或操作软件分发平台5105的实体可以是软件(诸如图48-图50的示例计算机可读指令4832、4932、5032)的开发者、销售者、和/或许可者。第三方可以是消费者、用户、零售商、oem等,他们购买和/或许可软件以用于使用和/或转售和/或分许可。在所图示的示例中,软件分发平台5105包括一个或多个服务器和一个或多个存储设备。存储设备存储计算机可读指令4832、4932、5032,该计算机可读指令4832、4932、5032可与图48-图50的示例计算机可读指令4832、4932、5032相对应,如上文所描述。示例软件分发平台5105的一个或多个服务器与网络5110通信,该网络5110可以与因特网和/或上文所描述的示例网络104、106、107、118中的任一个的任何一个或多个相对应。在一些示例中,作为商业事务的一部分,一个或多个服务器响应于将软件传送到请求方的请求。可以由软件分发平台的一个或多个服务器和/或经由第三方支付实体来处理用于软件的交付、销售、和/或许可的支付。服务器使购买者和/或许可者能够从软件分发平台5105下载计算机可读指令4832、4932、5032。例如,软件(其可
与图48-图50的示例计算机可读指令4832、4932、5032相对应)可被下载到示例处理器平台4800、4900、5000,该示例处理器平台用于执行计算机可读指令4832、4932、5032以实现诸如图18的dlb 1800之类的(多个)dlb。在一些示例中,软件分发平台5105的一个或多个服务器周期性地提供、传送和/或强制对软件(例如,图48-图50的示例计算机可读指令4832、4932、5032)的更新,以确保改善、补丁、更新等被分发并应用于终端用户设备处的软件。
[0320]
从前文将会领会,已经公开了用于促进用于多核计算环境的动态负荷平衡器的操作的示例方法、装置和制品。所公开的方法、装置和制品可以分割数据处理的分布,并且以超越将数据执行任务指派给计算核的静态方法的方式动态地负荷平衡多个计算核。
[0321]
所公开的方法、装置和制品控制多个计算或处理核中的哪些核处理数据,并响应于确定所标识的核具有不足的可用利用率量而动态地重新映射。与现有技术相比,所公开的方法、装置和制品通过负荷平衡计算核的工作负荷和将计算任务的调度迁移到专用硬件来提高使用计算设备的效率,从而提高计算核的可用性,以执行额外或不同的工作负荷。所公开的方法、装置和制品相对应地涉及计算机的运行的一个或多个改善。
[0322]
本文中公开了用于多核计算环境中的硬件队列管理的示例方法、装置、系统和制品。进一步的示例及其组合包括以下内容:
[0323]
示例1包括一种用于多核计算环境中的硬件队列调度的设备,该设备包括:处理器的第一核和第二核,以及处理器的管芯中的电路系统,第一核或第二核中的至少一个包括在管芯中,第一核或第二核中的该至少一个与电路系统分离,电路系统用于:将标识符入列到用电路系统实现的队列中,该标识符与数据分组相关联;将队列中的标识符指派给处理器的第一核;以及响应于用第一核对数据分组执行操作,将标识符提供到第二核以使第二核分发数据分组。
[0324]
在示例2中,示例1的主题可以可选地包括:队列是第一队列,并且电路系统用于:基于标识符来确定标识符的优先级;将标识符从第一队列出列到第一仲裁逻辑,第一仲裁逻辑与优先级相关联;将标识符从第一仲裁逻辑提供到第二仲裁逻辑,第二仲裁逻辑与第一核相关联;以及将标识符从第二仲裁逻辑入列到第二队列,第二队列与第一核相关联,第一核用于将标识符从第二队列出列。
[0325]
在示例3中,示例1-2的主题可以可选地包括:标识符是第一标识符,操作是第一操作,并且电路系统用于:响应于吞吐量参数不满足吞吐量阈值而将队列中的第二标识符指派给处理器的第三核,吞吐量参数基于从第一核或第二核中的至少一个获得的遥测数据,第二标识符与第二数据分组相关联;以及响应于第三核对第二数据分组执行第二操作,将第二标识符提供到处理器的第二核或第四核,以使第二核或第四核分发第二数据分组。
[0326]
在示例4中,示例1-3的主题可以可选地包括:队列是第一队列,并且电路系统用于:在电路系统的端口处接收标识符;使用电路系统的重新排序逻辑,对标识符执行重新排序操作;使用电路系统的仲裁逻辑,标识用于入列标识符的第二队列;以及将标识符入列到第二队列,第一核用于将标识符从第二队列出列。
[0327]
在示例5中,示例1-4的主题可以可选地包括:标识符是第一标识符,数据分组是第一数据分组,并且电路系统用于:将第一标识符存储在排序缓冲区中,确定第二标识符是否存储在排序缓冲区中,第二标识符与将在第一数据分组之后分发的第二数据分组相关联;响应于确定第二标识符存储在排序缓冲区中,将第一标识符入列到队列中;以及响应于将
第一标识符入列到队列中,将第二标识符入列到队列中。
[0328]
在示例6中,示例1-5的主题可以可选地包括:第一核用于将操作的完成的通知提供到电路系统,以及将数据分组存储在存储器中,并且第二核用于响应于电路系统将标识符提供到第二核而从存储器中检取数据分组。
[0329]
在示例7中,示例1-6的主题可以可选地包括:电路系统用于:标识标识符的数据源,确定数据源是否具有生产者信用,标识符响应于确定数据源具有生产者信用而被入列到队列中,从与数据源相关联的数个生产者信用中扣除生产者信用,该数个生产者信用存储在存储器中,以及响应于分发,将生产者信用添加到数个生产者信用。
[0330]
示例8包括一种用于多核计算环境中的硬件队列调度的设备,该设备包括:队列控制器,用于将标识符入列到用处理器的管芯中的电路系统实现的队列,该标识符与数据分组相关联;以及仲裁控制器,用于:将队列中的标识符指派给处理器的第一核;以及响应于用第一核对数据分组执行操作,将标识符提供到第二核以使第二核分发数据分组,第一核或第二核中的至少一个包括在处理器的管芯中,第一核或第二核中的该至少一个与电路系统分离。
[0331]
在示例9中,示例8的主题可以可选地包括:队列是第一队列,并且电路系统用于:基于标识符来确定标识符的优先级;将标识符从第一队列出列到第一仲裁逻辑,第一仲裁逻辑与优先级相关联;将标识符从第一仲裁逻辑提供到第二仲裁逻辑,第二仲裁逻辑与第一核相关联;以及将标识符从第二仲裁逻辑入列到第二队列,第二队列与第一核相关联,第一核用于将标识符从第二队列出列。
[0332]
在示例10中,示例8-9的主题可以可选地包括:标识符是第一标识符,操作是第一操作,并且仲裁控制器用于:响应于吞吐量参数不满足吞吐量阈值而将队列中的第二标识符指派给处理器的第三核,吞吐量参数基于从第一核或第二核中的至少一个获得的遥测数据,第二标识符与第二数据分组相关联;以及响应于第三核对第二数据分组执行第二操作,将第二标识符提供到处理器的第二核或第四核,以使第二核或第四核分发第二数据分组。
[0333]
在示例11中,示例8-10的主题可以可选地包括:队列是第一队列,并且进一步包括:事件控制器,用于接收标识符;以及重新排序控制器,用于对标识符执行重新排序操作,并且仲裁控制器用于标识用于入列标识符的第二队列,并且队列控制器用于将标识符入列到第二队列,第一核用于将标识符从第二队列出列。
[0334]
在示例12中,示例8-11的主题可以可选地包括:标识符是第一标识符,数据分组是第一数据分组,并且重新排序控制器用于:将第一标识符存储在排序缓冲区中,并且确定第二标识符是否存储在排序缓冲区中,第二标识符与将在第一数据分组之后分发的第二数据分组相关联;并且队列控制器用于:响应于确定第二标识符存储在排序缓冲区中,将第一标识符入列到队列中;以及响应于将第一标识符入列到队列中,将第二标识符入列到队列中。
[0335]
在示例13中,示例8-12的主题可以可选地包括:事件控制器,用于从第一核获取操作的完成的通知,第一核用于将数据分组存储在存储器中,以及仲裁控制器,用于将标识符提供到第二核,第二核用于响应于接收到标识符而从存储器中检取数据分组。
[0336]
在示例14中,示例8-13的主题可以可选地包括:事件控制器用于标识标识符的数据源,确定数据源是否具有生产者信用,标识符响应于确定数据源具有生产者信用而被入列到队列中,从与数据源相关联的数个生产者信用中扣除生产者信用,该数个生产者信用
存储在存储器中,以及响应于分发,将生产者信用添加到数个生产者信用。
[0337]
示例15包括一种用于多核计算环境中的硬件队列调度的设备,该设备包括:用于将标识符入列到用处理器的管芯中的电路系统实现的队列的装置,该标识符与数据分组相关联;用于将队列中的标识符指派给处理器的第一核的装置;以及用于响应于用第一核对数据分组执行操作而将标识符分配到第二核以使第二核分发数据分组的装置,第一核或第二核中的至少一个包括在处理器的管芯中,第一核或第二核中的该至少一个与电路系统分离。
[0338]
在示例16中,示例15的主题可以可选地包括:队列是第一队列,并且电路系统用于:基于标识符来确定标识符的优先级;将标识符从第一队列出列到第一仲裁逻辑,第一仲裁逻辑与优先级相关联;将标识符从第一仲裁逻辑提供到第二仲裁逻辑,第二仲裁逻辑与第一核相关联;以及将标识符从第二仲裁逻辑入列到第二队列,第二队列与第一核相关联,第一核用于将标识符从第二队列出列。
[0339]
在示例17中,示例15-16的主题可以可选地包括:标识符是第一标识符,操作是第一操作,并且用于指派的装置用于响应于吞吐量参数不满足吞吐量阈值而将队列中的第二标识符指派给处理器的第三核,吞吐量参数基于从第一核或第二核中的至少一个获得的遥测数据,第二标识符与第二数据分组相关联;以及用于分配的装置用于将第二标识符分配到处理器的第二核或第四核,以使第二核或第四核分发第二数据分组。
[0340]
在示例18中,示例15-17的主题可以可选地包括:队列是第一队列,并且进一步包括:用于接收标识符的装置;以及用于对标识符执行重新排序操作的装置,并且用于指派的装置用于标识用于入列标识符的第二队列,并且用于分配的装置用于将标识符入列到第二队列,第一核用于将标识符从第二队列出列。
[0341]
在示例19中,示例15-18的主题可以可选地包括:标识符是第一标识符,数据分组是第一数据分组,并且用于执行的装置用于:将第一标识符存储在排序缓冲区中,并且确定第二标识符是否存储在排序缓冲区中,第二标识符与将在第一数据分组之后分发的第二数据分组相关联;并且用于入列的装置用于:响应于确定第二标识符存储在排序缓冲区中,将第一标识符入列到队列中;以及响应于将第一标识符入列到队列中,将第二标识符入列到队列中。
[0342]
在示例20中,示例15-19的主题可以可选地包括:用于从第一核获取操作的完成的通知的装置,第一核用于将数据分组存储在存储器中,以及用于分配的装置用于将标识符分配到第二核,第二核用于响应于接收到标识符而从存储器中检取数据分组。
[0343]
在示例21中,示例15-20的主题可以可选地包括:用于管理数个生产者信用的装置,用于管理的装置用于:标识标识符的数据源,确定数据源是否具有生产者信用,标识符响应于确定数据源具有生产者信用而被入列到队列中,从与数据源相关联的数个生产者信用中扣除生产者信用,该数个生产者信用存储在存储器中,以及响应于分发,将生产者信用添加到数个生产者信用。
[0344]
示例22包括一种用于多核计算环境中的硬件队列调度的方法,该方法包括:将标识符入列到用处理器的管芯中的电路系统实现的队列,该标识符与数据分组相关联;将队列中的标识符指派给处理器的第一核;用第一核对数据分组执行操作;以及响应于操作的执行,将标识符提供到处理器的第二核以使第二核分发数据分组,第一核或第二核中的至
少一个包括在处理器的管芯中,第一核或第二核中的该至少一个与电路系统分离。
[0345]
在示例23中,示例22的主题可以可选地包括:队列是第一队列,并且进一步包括:基于标识符来确定标识符的优先级;将标识符从第一队列出列到第一仲裁逻辑,第一仲裁逻辑与优先级相关联;将标识符从第一仲裁逻辑提供到第二仲裁逻辑,第二仲裁逻辑与第一核相关联;以及将标识符从第二仲裁逻辑入列到第二队列,第二队列与第一核相关联,第一核用于将标识符从第二队列出列。
[0346]
在示例24中,示例22-23的主题可以可选地包括:标识符是第一标识符,操作是第一操作,并且进一步包括:基于从第一核或第二核中的至少一个中获得的遥测数据来确定吞吐量参数;响应于吞吐量参数不满足吞吐量阈值而将队列中的第二标识符指派给处理器的第三核,第二标识符与第二数据分组相关联;用第三核对第二数据分组执行第二操作;以及将第二标识符提供到处理器的第二核或第四核,以使第二核或第四核分发第二数据分组。
[0347]
在示例25中,示例22-24的主题可以可选地包括:队列是第一队列,并且进一步包括:在电路系统的端口处接收标识符;使用电路系统的重新排序逻辑,对标识符执行重新排序操作;使用电路系统的仲裁逻辑,标识用于入列标识符的第二队列;以及将标识符入列到第二队列,第一核用于将标识符从第二队列出列。
[0348]
在示例26中,示例22-25的主题可以可选地包括:标识符是第一标识符,数据分组是第一数据分组,并且进一步包括:将第一标识符存储在排序缓冲区中,确定第二标识符是否存储在排序缓冲区中,第二标识符与将在第一数据分组之后分发的第二数据分组相关联;响应于确定第二标识符存储在排序缓冲区中,将第一标识符入列到队列中;以及响应于将第一标识符入列到队列中,将第二标识符入列到队列中。
[0349]
在示例27中,示例22-26的主题可以可选地包括:将操作的完成的通知提供到电路系统,将数据分组存储在存储器中,以及响应于电路系统将标识符提供到第二核而用第二核从存储器中检取数据分组。
[0350]
在示例28中,示例22-27的主题可以可选地包括:标识标识符的数据源,确定数据源是否具有生产者信用,标识符响应于确定数据源具有生产者信用而被入列到队列中,从与数据源相关联的数个生产者信用中扣除生产者信用,该数个生产者信用存储在存储器中,以及响应于分发,将生产者信用添加到数个生产者信用。
[0351]
示例29包括一种用于多核计算环境中的动态负荷平衡的设备,该设备包括:处理器的第一核和多个第二核,以及处理器的管芯中的电路系统,该电路系统与第一核和第二核分离,电路系统用于:将标识符入列到电路系统中的一个或多个队列中,该标识符与分组流的数据分组中的相应数据分组相关联;响应于第一核的吞吐量参数不满足吞吐量阈值而分配第二核中的一个或多个第二核来将标识符中的第一标识符出列,用于使第二核中的一个或多个第二核对数据分组中的第一数据分组执行一个或多个操作,数据分组中的第一数据分组与标识符中的经出列的第一标识符相对应;以及将标识符中的第一标识符提供给处理器的一个或多个数据消费者以分发数据分组中的第一数据分组。
[0352]
在示例30中,示例29的主题可以可选地包括:电路系统用于:响应于吞吐量参数不满足吞吐量阈值而分配处理器的第一核或一个或多个第二核中的至少一个来将标识符中的第二标识符出列,用于使第一核或一个或多个第二核中的至少一个对数据分组中的第二
数据分组执行一个或多个操作,该数据分组中的第二数据分组与标识符中的经出列的第二标识符相对应;以及将标识符中的第二标识符提供给处理器的一个或多个数据消费者以分发数据分组中的第二数据分组。
[0353]
在示例31中,示例29-30的主题可以可选地包括:数据分组是第一数据分组,分组流是第一分组流,标识符是第一标识符,一个或多个操作是第一一个或多个操作,并且电路系统用于:将第二标识符入列到一个或多个队列中,该第二标识符与第二分组流的第二数据分组中的相应第二数据分组相关联,第二分组流不同于第一分组流;分配第一核或一个或多个第二核中的至少一个来将第二标识符中的多个第二标识符出列,以使第一核或一个或多个第二核中的至少一个对第二数据分组执行第二一个或多个操作,第二数据分组与第二标识符中的经出列的第二标识符相对应;以及将第二标识符提供给一个或多个数据消费者以分发第二数据分组。
[0354]
在示例32中,示例29-31的主题可以可选地包括:第一标识符是原子队列标识符并且第二标识符是非原子队列标识符或直接队列标识符中的至少一者。
[0355]
在示例33中,示例29-32的主题可以可选地包括:第一核是数据生产者,数据生产者用于从与第一网络通信的网络接口接收数据分组,以及一个或多个数据消费者用于将数据分组传送到网络接口以供分发到第二网络。
[0356]
在示例34中,示例29-33的主题可以可选地包括:吞吐量参数具有基于与第一核相关联的第一遥测数据的第一值,一个或多个第二核包括第三核,并且电路系统用于:响应于第一值不满足吞吐量阈值而分配第三核来将标识符中的第一标识符的第一集合出列;响应于第三核的分配而确定吞吐量参数的第二值,第二值基于与第一核或第三核中的至少一个相关联的第二遥测数据;以及响应于第二值满足吞吐量阈值,将标识符中的第一标识符的第二集合出列到第一核和第三核。
[0357]
在示例35中,示例29-34的主题可以可选地包括:数据分组是第一数据分组,分组流是第一分组流,标识符是第一标识符,并且电路系统用于:分配第二核中的第二第二核中的一个或多个第二核来将与不同于第一分组流的第二数据流的第二数据分组相关联的第二标识符中的多个第二标识符出列,第二核中的第二第二核不包括第一核和第三核。
[0358]
示例36包括一种用于多核计算环境中的动态负荷平衡的方法,该方法包括:将标识符入列到处理器的电路系统中的一个或多个队列中,标识符与分组流的数据分组中的相应数据分组相关联,电路系统与处理器的第一核分离;响应于第一核的吞吐量参数不满足吞吐量阈值而分配处理器的一个或多个第二核来将标识符中的第一标识符出列;用第二核中的一个或多个第二核对与标识符中的经出列的第一标识符相对应的数据分组中的第一数据分组执行一个或多个操作;以及将标识符中的第一标识符提供给处理器的一个或多个数据消费者以分发数据分组中的第一数据分组。
[0359]
在示例37中,示例36的主题可以可选地包括:响应于吞吐量参数不满足吞吐量阈值而分配处理器的第一核或一个或多个第二核中的至少一个来将标识符中的第二标识符出列;用第一核或第二核中的一个或多个第二核中的至少一个对数据分组中的第二数据分组执行一个或多个操作,该数据分组中的第二数据分组与标识符中的经出列的第二标识符相对应;以及将标识符中的第二标识符提供给处理器的一个或多个数据消费者以分发数据分组中的第二数据分组。
[0360]
在示例38中,示例36-37的主题可以可选地包括:数据分组是第一数据分组,分组流是第一分组流,标识符是第一标识符,一个或多个操作是第一一个或多个操作,并且进一步包括:将第二标识符入列到电路系统中的一个或多个队列中,该第二标识符与第二分组流的第二数据分组中的相应第二数据分组相关联,第二分组流不同于第一分组流;标识第一核或一个或多个第二核中的至少一个来将第二标识符中的多个第二标识符出列;用第一核或第二核中的一个或多个第二核中的至少一个对第二数据分组执行第二一个或多个操作,第二数据分组与第二标识符中的经出列的第二标识符相对应;以及将第二标识符提供给一个或多个数据消费者以分发第二数据分组。
[0361]
在示例39中,示例36-38的主题可以可选地包括:第一标识符是原子队列标识符并且第二标识符是非原子队列标识符或直接队列标识符中的至少一者。
[0362]
在示例40中,示例36-39的主题可以可选地包括:第一核是数据生产者,并且进一步包括:通过与处理器通信的网络接口从第一网络接收数据分组;从网络接口向数据生产者提供数据分组;以及将数据分组从一个或多个数据消费者分发到网络接口以供分发到第二网络。
[0363]
在示例41中,示例36-40的主题可以可选地包括:第一网络是云网络或核网络中的至少一个,并且第二网络是边缘网络或设备环境中的至少一个。
[0364]
在示例42中,示例36-41的主题可以可选地包括:吞吐量参数具有基于与第一核相关联的第一遥测数据的第一值,一个或多个第二核包括第三核,并且进一步包括:响应于第一值不满足吞吐量阈值而分配第三核来将标识符中的第一标识符的第一集合出列;响应于第三核的分配而确定吞吐量参数的第二值,第二值基于与第一核或第三核中的至少一个相关联的第二遥测数据;以及响应于第二值满足吞吐量阈值而用第一核和第三核将标识符中的第一标识符的第二集合出列。
[0365]
在示例43中,示例36-42的主题可以可选地包括:数据分组是第一数据分组,分组流是第一分组流,标识符是第一标识符,并且进一步包括:用电路系统分配第二核中的第二第二核中的一个或多个第二核来将与不同于第一分组流的第二数据流的第二数据分组相关联的第二标识符中的多个第二标识符出列,第二核中的第二第二核不包括第一核和第三核。
[0366]
在示例44中,示例36-43的主题可以可选地包括:处理器包括在实现无线电接入网络(ran)或虚拟ran中的至少一个的计算设备中。
[0367]
示例45包括一种用于多核计算环境中的动态负荷平衡的设备,该设备包括:处理器的第一核和第二核,以及处理器的管芯中的电路系统,该电路系统用于将标识符入列到电路系统中的队列中,该标识符与分组流的数据分组相关联;将标识符出列到第一核以使第一核对数据分组执行第一操作;响应于获得第一操作的完成的指示而将标识符入列到队列中;将标识符出列到第一核或第二核,以使第一核或第二核对数据分组执行不同于第一操作的第二操作;以及将标识符提供给处理器的数据消费者以分发数据分组。
[0368]
在示例46中,示例45的主题可以可选地包括:电路系统与第一核和第二核分离,并且管芯包括第一核、第二核和电路系统。
[0369]
在示例47中,示例45-46的主题可以可选地包括:管芯是包括第一核和第二核的第一管芯,并且处理器包括包含电路系统的第二管芯。
[0370]
在示例48中,示例45-47的主题可以可选地包括:第一操作是网际协议安全(ipsec)应用的解密操作,并且第二操作是ipsec应用的加密操作。
[0371]
在示例49中,示例45-48的主题可以可选地包括:队列是第一队列,电路系统用于将标识符从第一队列入列到第二队列,第一核用于轮询第二队列,并且第一核用于响应于轮询而将标识符从第二队列出列。
[0372]
在示例50中,示例45-49的主题可以可选地包括:数据分组是第一数据分组,分组流是第一分组流,标识符是第一标识符,队列是第一队列,并且电路系统用于:将第二标识符入列到第二队列中,第二标识符与第二分组流的第二数据分组相关联,第二分组流不同于第一分组流;分配处理器的第三核来将第二标识符出列,以使第三核对第二数据分组执行第一操作、第二操作或第三操作,第二数据分组与经出列的第二标识符相对应;以及将第二标识符提供给数据消费者以分发第二数据分组。
[0373]
在示例51中,示例45-50的主题可以可选地包括:第一队列基于原子性来排序,并且第二队列基于直接排序来排序。
[0374]
示例52包括一种用于多核计算环境中的动态负荷平衡的方法,该方法包括:将标识符入列到处理器的电路系统中的队列中,该标识符与分组流的数据分组相关联;响应于第一核将标识符从电路系统出列而用处理器的第一核对数据分组执行第一操作;响应于获得第一操作的完成的指示而用电路系统将标识符入列到队列中;响应于第一核或第二核将标识符从电路系统出列而用处理器的第一核或第二核对数据分组执行不同于第一操作的第二操作;以及将标识符提供给处理器的数据消费者以分发数据分组。
[0375]
在示例53中,示例52的主题可以可选地包括:电路系统与第一核和第二核分离,并且处理器包括管芯,该管芯包含第一核、第二核和电路系统。
[0376]
在示例54中,示例52-53的主题可以可选地包括:处理器包括第一管芯和第二管芯,第一管芯包括第一核和第二核,并且第二管芯包括电路系统。
[0377]
在示例55中,示例52-54的主题可以可选地包括:第一操作是网际协议安全(ipsec)应用的解密操作,并且第二操作是ipsec应用的加密操作。
[0378]
在示例56中,示例52-55的主题可以可选地包括:队列是第一队列,并且进一步包括:将标识符从第一队列入列到第二队列,以及用第一核轮询第二队列,第一核用于响应于轮询而将标识符从第二队列出列。
[0379]
在示例57中,示例52-56的主题可以可选地包括:数据分组是第一数据分组,分组流是第一分组流,标识符是第一标识符,队列是第一队列,并且进一步包括:将第二标识符入列到第二队列中,第二标识符与第二分组流的第二数据分组相关联,第二分组流不同于第一分组流;分配处理器的第三核来将第二标识符出列;对第二数据分组执行第一操作、第二操作或第三操作,第二数据分组与经出列的第二标识符相对应;以及向数据消费者提供第二标识符以分发第二数据分组。
[0380]
在示例58中,示例52-57的主题可以可选地包括:第一队列基于原子性来排序,并且第二队列基于直接排序来排序。
[0381]
示例59是包括用于执行示例1-7中的任一项的指令的计算机可读介质。
[0382]
示例60是包括用于执行示例22-28中的任一项的指令的计算机可读介质。
[0383]
示例61是一种设备,该设备包括用于执行示例22-28中的任一项的处理器电路系
统。
[0384]
示例62是一种边缘服务器,该边缘服务器包括用于执行示例22-28中的任一项的处理器电路系统。
[0385]
示例63是一种核服务器,该核服务器包括用于执行示例22-28中的任一项的处理器电路系统。
[0386]
示例64是包括用于执行示例29-35中的任一项的指令的计算机可读介质。
[0387]
示例65是包括用于执行示例36-44中的任一项的指令的计算机可读介质。
[0388]
示例66是一种设备,该设备包括用于执行示例36-44中的任一项的处理器电路系统。
[0389]
示例67是一种边缘服务器,该边缘服务器包括用于执行示例36-44中的任一项的处理器电路系统。
[0390]
示例68是一种核服务器,该核服务器包括用于执行示例36-44中的任一项的处理器电路系统。
[0391]
示例69是包括用于执行示例45-51中的任一项的指令的计算机可读介质。
[0392]
示例70是包括用于执行示例52-58中的任一项的指令的计算机可读介质。
[0393]
示例71是一种设备,该设备包括用于执行示例52-58中的任一项的处理器电路系统。
[0394]
示例72是一种边缘服务器,该边缘服务器包括用于执行示例52-58中的任一项的处理器电路系统。
[0395]
示例73是一种核服务器,该核服务器包括用于执行示例52-58中的任一项的处理器电路系统。
[0396]
尽管本文中已公开了某些示例系统、方法、装置和制品,但本专利涵盖的范围并不限于此。相反,本专利涵盖落入本专利权利要求范围内的全部系统、方法、装置和制品。
[0397]
所附的权利要求由此通过本参考被并入到具体实施方式中,其中每一项权利要求其本身作为本公开的单独的实施例。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1