用于时间敏感联网的确定性分组调度和DMA的制作方法

文档序号:29522441发布日期:2022-04-06 23:43阅读:319来源:国知局
用于时间敏感联网的确定性分组调度和DMA的制作方法
用于时间敏感联网的确定性分组调度和dma
技术领域
1.本公开总体上涉及计算机联网的领域,并且更具体地但不排他地涉及用于时间敏感联网的确定性分组调度和dma。


背景技术:

2.时间敏感联网(tsn)是指一组标准,这些标准定义了通过网络进行时间敏感数据传输的机制。然而,在某些情况下,具有tsn能力的网络接口控制器(nic)可能无法满足许多时间敏感应用越来越严格的联网需求。例如,由于各种设计限制,nic执行的分组调度和直接存储器访问(dma)操作可导致等待时间和抖动,该等待时间和抖动导致分组传输延迟。
附图说明
3.通过在结合所附附图来阅读以下具体实施方式,最好地理解本公开。值得强调的是,根据行业内的标准惯例,各种特征不一定是按比例绘制的,并且仅用作说明目的。在显式或隐式地示出比例的情况下,它仅提供一个说明性示例。在其他实施例中,为了使讨论清楚,可以任意地扩大或缩小各种特征的尺寸。
4.图1图示出网络接口控制器的示例实施例。
5.图2图示出具有用于确定性分组传输的基于通信量类别的调度和dma的网络接口控制器的示例实施例。
6.图3图示出根据各实施例的用于在网络接口控制器(nic)上执行用于确定性分组传输的基于通信量类别的调度和dma的流程图。
7.图4图示出具有用于确定性分组传输的解耦描述符和数据dma的网络接口控制器的示例实施例。
8.图5图示出根据各实施例的用于在网络接口控制器(nic)上执行用于确定性分组传输的解耦描述符和数据dma的流程图。
9.图6图示出具有用于分组传输的高精度实时性能监控的网络接口控制器的示例实施例。
10.图7图示出传送描述符写回格式的示例。
11.图8a-图8b图示出事务编码方案和基于该方案的各种编码事务的示例。
12.图9图示出用于传输分组而执行的一系列操作的分组传输等待时间的图表。
13.图10图示出根据各实施例的用于在网络接口控制器(nic)上执行用于分组传输的高精度实时性能监控的流程图。
14.图11图示出针对边缘计算的边缘云配置的概览。
15.图12图示出端点、边缘云和云计算环境之间的操作层。
16.图13图示出用于边缘计算系统中的联网和服务的示例方法。
17.图14图示出根据各实施例的示例计算平台。
具体实施方式
18.下列公开提供用于实现本公开的不同特征的许多不同的实施例或示例。下文描述组件和布置的特定示例以简化本公开。当然,这些仅是示例,并且不旨在是限制性的。此外,本公开可以在各示例中重复附图标号和/或字母。这种重复只是为了简明和清晰,并且本身不规定所讨论的各实施例和/或配置之间的关系。不同的实施例可具有不同的优点,并且没有特定的优点对于任何实施例一定是必需的。介绍
19.用于确定性网络的新兴ieee标准(统称为“时间敏感联网”(tsn))以极高的时间精度实现通过网络的时间敏感数据传输。因此,工业和汽车领域的嵌入式设备越来越多地集成tsn控制器,以利用时间敏感联网的优势。然而,信息技术(it)和操作技术(ot)不可避免的融合、工作负荷整合以及对跨多个连接设备的无缝通信的需要,对网络性能提出了越来越严格的要求,包括更高的带宽、更短的端到端等待时间和硬实时交付需求。然而,在一些情况下,由于各种设计限制,因此网络接口控制器(nic)无法满足这些越来越严格的要求。
20.例如,nic在短时间段内确定性地传输大分组突发的能力受到各种因素的限制,包括nic采用的(多个)调度算法(例如,如各种ieee tsn标准(诸如ieee 802.1qav和ieee 802.1qbv)中定义的)、与经由直接存储器访问(dma)从主存储器中获取分组描述符和有效载荷相关联的等待时间和抖动、突发大小(突发大小越大,nic引起的等待时间越高),以及上游dma读取请求被排序的顺序,以及其他因素。
21.例如,nic通常使用直接存储器访问(dma)操作从主存储器中获取分组传输所需的数据,诸如每个分组的描述符和有效载荷数据。描述符仅包含指向存储分组的有效载荷数据的存储器地址的指针,而有效载荷数据包含分组的实际内容。因此,在获取描述符之前,nic不知道存储分组有效载荷被存储在哪里,这意味着必须在分组有效载荷之前获取描述符。因此,nic通常为每个分组传输执行至少两个往返dma操作——一个dma操作用于预取描述符而另一个dma操作用于获取分组有效载荷。然而,与这些dma操作相关联的等待时间和抖动在某些情况下(尤其是在传输大分组突发时)导致分组传输延迟。
22.虽然nic可以利用各种基于优先级的调度方案来帮助确保及时传输分组(例如,固定优先级、加权严格优先级和加权轮询),但这些方案并不总是有效,因为当从存储器中预取分组描述符时,它们缺乏对分组启动时间和通信量类别优先级的了解。因此,虽然这些方案就在线传输数据分组的调度方面提供了一些改进,但它们完全不知道何时预取分组的描述符,这使得它们不适合低等待时间和硬实时应用,特别是在时间敏感通信量与最大努力通信量混合的情况下。例如,在传输分组突发时,对分组有效载荷数据的高优先级上游读取请求可能被阻塞或卡在低优先级请求之后,从而导致巨大的等待时间峰值和抖动。
23.例如,由于分组的描述符必须在其有效载荷之前被获取,因此nic的dma调度器通常给予描述符预取比有效载荷获取更高的优先级。这导致来自每个分组传输队列的若干描述符预取请求的生成提前于有效载荷获取请求。例如,具有8个分组传输队列的nic执行在每个队列深处预取16个条目,可以生成128个描述符读取请求,这可能导致实际分组有效载荷dma请求的队头阻塞(head of line blocking)。最坏的情况需要等待所有128个描述符的dma完成,然后才能调度第一有效载荷dma请求。增加未决信用可以提高平均带宽,但它无助于等待时间和确定性,因为有效载荷数据dma请求仍然排在所有128个描述符请求之后。
此外,在当前的nic架构中,对内部队列缓冲区(例如,rf存储器)的访问是单通道的——因此,在将低优先级完成写入队列缓冲区时,高优先级完成必须等待,这进一步增加了传输等待时间。
24.可以在nic上实施各种调度算法以提高分组传输的及时性和确定性,诸如基于时间的调度(tbs)、基于信用的整形器(cbs)和调度通信量的增强(est)。
25.基于时间的调度(tbs)方法将包含分组启动时间的新字段添加到分组的描述符中。以此方式,一旦调度器获取并解析描述符,它就知道何时传输分组,这减少了与分组传输相关联的一些不确定性。然而,由于启动时间是描述符本身的一部分,因此需要在甚至可以调度相对应的分组有效载荷获取之前预取描述符。因此,调度器为所有队列和通信量类别生成描述符读取请求,这造成等待时间气泡,因为高优先级分组有效载荷请求排在描述符请求之后。
26.(在ieee 802.1qav标准中定义的)基于信用的整形器(cbs)方法基于各个队列的信用的可用性来调度用于传输的分组。再一次,该方法侧重于确定何时在行上启动分组。然而,无论队列的信用的可用性如何,描述符总是被预取——一旦队列的尾点前进并且新的描述符变得可用于预取,调度器将开始启动描述符预取。虽然可以通过将基于信用的调度方法扩展到描述符来潜在地解决队头阻塞问题(例如,在预取描述符之前等待可用信用),但这不是一个可行的解决方案,因为它将显著增加整个分组传输等待时间(例如,由于等待信用变得可用,然后获取描述符,并且然后获取分组有效载荷数据)。
27.(ieee 802.1qbv标准中定义的)调度通信量增强(est)方法使用“门控制列表”(gcl)来确定何时传输分组。每个门控制列表指定特定队列何时打开或关闭以传输该队列中的分组。再一次,该方法侧重于与分组有效载荷数据而不是描述符相关联的调度。因此,虽然该方法改进了对何时启动分组的控制,但它并没有解决何时预取描述符。因此,该方法遭受与上述其他调度方法相同的缺点。
28.虽然上述方法大大地改善了调度,但它们都没有解决队头阻塞问题和由描述符预取引起的相关联等待时间峰值。上述方法主要解决关于有效载荷数据的分组调度和启动,意味着何时在行上或在线上传输数据分组,但这些方法没有用于智能预取描述符的机制(例如,基于相对应分组的通信量类别)。
29.此外,没有基于通信量类别的请求分离——描述符和有效载荷两者的所有上游dma读取请求都在单个请求队列中按顺序排序。因此,在高优先级请求之前的任何低优先级请求将阻塞高优先级请求并导致巨大的等待时间峰值,这导致不确定性并增加整体端到端等待时间。
30.除了具有单独的队列之外,这些方法的另一个缺点在于缺乏通信量类别服务质量(qos)区分。例如,实时通信量与最大努力通信量的数据获取没有区别——两种类型的分组获取所花费的时间相同,因为它们通过相同的i/o总线(例如,axi/iosf总线)和虚拟信道。此外,仲裁仅在请求发起时执行,这意味着刚好在低优先级通信量请求后的来自快速队列的高优先级请求被卡在队列等待中。此外,增加信用数将没有帮助,因为稍后调度的高优先级请求仍然可以等待在先前调度的低优先级描述符请求之后。
31.与获取描述符和分组数据相关联的等待时间可以潜在地使用各种其他技术来改善,诸如将描述符存储在nic本身而不是主存储器中。虽然该方法可以显著地减少整体分组
传输等待时间,但它需要对现有nic硬件和nic软件驱动器模型进行重大改变。
32.因此,网络接口控制器遭受到各种设计限制,使它们在某些情况下容易受到等待时间、抖动和传输延迟的影响。然而,更短的周期时间对于许多应用和用例至关重要,诸如工业控制回路应用和工作负荷整合。因此,本公开提出了用于最小化网络接口控制器中的分组等待时间和抖动的各种解决方案,以及用于实时准确地监控分组等待时间和抖动的解决方案,这些解决方案对时间敏感联网(tsn)应用特别有益。用于时间敏感联网(tsn)的实时突发数据的确定性、低等待时间调度
33.如上所述,网络接口控制器受到各种设计限制的影响,在某些情况下导致分组等待时间、抖动和传输延迟。图1图示出遭受上述设计限制的网络接口控制器(nic)100的示例实施例。例如,如下文进一步描述的,单个存储器路径用于所有通信量类别,这导致瓶颈,并且由于读取请求的拥挤产生的漏斗效应导致请求的授权延迟和最终的完成延迟,因为高优先级请求可能等待在低优先级请求之后。
34.在所示的实施例中,nic 100包括多个分组传输队列102、用于调度(例如,使用调度器105)和经由传输接口117通过网络130传输分组的mac层引擎104、用于从队列102中选择分组以馈送到mac层引擎104的复用器103、用于检索dma描述符和分组传输的数据的dma引擎108、用于高速缓存由dma引擎108检索的dma描述符的描述符高速缓存110、系统i/o的i/o接口112、用于存储器读取请求和完成(例如,用于分组描述符/数据)的读取请求队列115和完成队列116,以及用于经由系统结构或互连与计算系统或soc的其他部分(例如,主存储器120)通信的系统结构桥114。
35.在所示实施例中,nic 100包括指定为队列0-7(q
0-q7)的八个分组传输队列102,并且每个队列102可以被应用映射到唯一的虚拟局域网(vlan)id。此外,这些队列102基于必须为每个队列102中的分组提供的qos级别来在内部映射到各种通信量类别(例如,tc
0-tc7)。然而,在所示实施例中,所有通信量类别映射到同一虚拟信道(vc0)以与计算系统的其他部分(例如,主存储器120和与nic 100位于同一片上系统(soc)上的任何其他组件)进行通信和i/o。
36.例如,具有最高优先级的快速通信量(例如,具有严格qos需求的时间敏感数据)可以映射到队列7,而队列7可以映射到用于实时通信量的通信量类别7(tc7)。同时,具有最低优先级或qos的最大努力通信量可以被映射到队列0,而队列0可以被映射到用于具有最低优先级的通信量的通信量类别0(tc0)。然而,所有这些通信量类别共享同一虚拟信道(vc0)以供片上通信和i/o。
37.以该方式,每个队列都静态映射到具有固定优先级的通信量类别。此外,此映射基于每个队列的数字分配而不是vlan id。例如,队列的优先级由队列的数字分配固定,意味着队列7的优先级高于队列6,队列6的优先级高于队列5,
……
,而队列1的优先级高于队列0。然而,该固定优先级方案限制了应用,因为不可能将通信量动态分配到队列——动态分配通信量到队列的能力对于动态环境中的应用尤为重要,诸如工作负荷随着现场设备添加或减少(例如,故障)而不断变化的工业应用。
38.基于由调度器105实现的调度算法(诸如如上所述基于时间的调度(tbs)、基于信用的整形器(cbs)(ieee 802.1qav)、或调度通信量增强(est)(ieee 802.1qbv))来确定从各个队列102传输分组的顺序。
39.基于由调度器105执行的调度算法,媒体接入控制(mac)层104简单地生成对直接存储器访问(dma)引擎108的请求。然后dma引擎108基于分组队列102的固定优先级在它们之间进行仲裁,并为所选分组生成dma请求。然而,由于描述符持有指向需要传输的分组有效载荷数据的地址指针,因此需要在生成对分组有效载荷的dma数据请求之前获取描述符。因此,如果描述符尚未被预取,则dma引擎108在它获取分组数据之前生成描述符请求。
40.然而,在所示实施例中,只有一个输入/输出(i/o)接口112来服务i/o请求,这意味着只有一个读取请求队列115用于跨所有分组队列102的描述符和分组数据两者。因此,对于分组有效载荷的dma数据请求可能必须在读取请求队列115中等待,直到预先发出的请求被批准。考虑到单个队列没有优先级,这在处理单个分组队列102时不是问题。然而,当启用多个分组队列102时(例如,这是基于tsn的应用的情况),将存在属于每个分组队列102的描述符预取请求,该请求可以阻塞分组数据请求。特别地,虽然描述符预取的目的是减少端到端等待时间,但当背靠背(back-to-back)数据突发包含与低优先级通信量混合的硬实时通信量时,可能出现副作用,因为实时请求有时会卡在低优先级请求后面并导致巨大的等待时间峰值。预取的概念显著提高了整体带宽,并且当实时通信量周围有一些保护带时可以使用该方案,但它不太适合背靠背突发通信量。
41.因此,图2图示出网络接口控制器(nic)200的示例实施例,该网络接口控制器(nic)200具有用于确定性分组传输的基于通信量类别的调度和dma,其消除了上文结合图1的nic 100描述的设计限制和不确定性。
42.在所示实施例中,nic 200包括多个分组传输队列202、用于经由传输接口217(例如,使用调度器电路系统205、vlan到tc映射寄存器206和时间感知仲裁器207)通过网络230调度和传输分组的mac层引擎204、从队列202中选择分组以馈送到mac层引擎204的复用器203、用于为分组传输检索dma描述符和数据的dma引擎电路系统208、用于高速缓存由dma引擎208检索的dma描述符的描述符高速缓存210、用于dma引擎208与分组队列202之间的快速通信量和最大努力通信量的多个数据路径209a-b、用于快速通信量和最大努力通信量的多个i/o接口212a-b和相对应的请求队列215a-b以及完成队列216a-b,以及用于经由系统结构或互连与计算系统或soc的其他部分(例如,主存储器220)通信的系统结构桥214。
43.在所示实施例中,nic 200包括指定为队列0-7(q
0-q7)的八个分组传输队列202,并且每个队列202可以被应用映射到唯一的虚拟局域网(vlan)id。此外,这些队列202基于必须为每个队列202中的分组提供的qos级别来在内部映射到各种通信量类别(例如,tc
0-tc7)。此外,每个通信量类别被映射到相对应的虚拟信道(vc),用于与计算系统的其他组件(诸如主存储器220)进行通信和i/o。
44.例如,对于支持两个虚拟信道(vc0和vc1)的soc,具有最高优先级的快速通信量(例如,具有严格qos需求的时间敏感数据)可以映射到队列5-7(q
5-q7),队列5-7(q
5-q7)可以分别映射到通信量类别5-7(tc
5-tc7),而通信量类别5-7(tc
5-tc7)上的数据流可以通过为实时通信量保留的虚拟信道1(vc1)路由。同时,具有最低优先级或qos的最大努力通信量可以映射到队列0-4(q
0-q4),队列0-4(q
0-q4)可以分别映射到通信量类别0-4(tc
0-tc4),而通信量类别0-4(tc
0-tc4)上的数据流可以通过用于低优先级通信量的虚拟信道0(vc0)路由。
45.或者,对于支持与nic 200支持的通信量类别的数量相同数量的虚拟信道的soc,每个通信量类别可以被映射到唯一的虚拟信道。例如,假设支持8个通信量类别和虚拟信
道,通信量类别tc
0-tc7可以分别映射到虚拟信道vc
0-vc7。
46.此外,在所示实施例中,在分组队列202之间执行基于通信量类别的仲裁以基于分组的通信量类别来调度分组的dma描述符和数据请求,并且使用用于不同级别的qos(诸如快速通信量vs最大努力通信量)的单独i/o接口212a-b、读取请求队列215a-b和完成队列216a-b处理这些请求。以此方式,基于分配给每个分组传输队列的通信量类别来对分组的dma描述符和数据请求进行调度并将其拆分到单独的数据路径上。
47.例如,多个单个i/o接口212a-b、读取请求队列215a-b、完成队列216a-b和数据路径209a-b用于处理具有不同级别的优先级的通信量。在所示实施例中,例如,nic 200上的快速通信量和最大努力通信量分别使用两个单独的i/o接口212a-b、读取请求队列215a-b、完成队列216a-b和从dma引擎208返回到分组传输队列202的数据路径209a-b来处理。
48.然而,支持的i/o路径和通信量类别的数量在不同的实施例中可能不同。在一些实施例中,例如,支持的i/o路径和通信量类别的数量可以相等,使得每个通信量类别具有其自己的专用i/o路径(例如,两个单独的i/o路径用于两个通信量类别,八个单独的i/o路径用于八个通信量类别等)。或者,支持的i/o路径的数量可以小于支持的通信量类别的数量,使得多个通信量类别共享同一i/o路径(例如,由通信量类别0-4共享的最大努力通信量的第一i/o路径,以及由通信量类5-7共享的快速通信量的第二i/o路径)。
49.在所示的实施例中,mac调度器205基于通信量类别来生成上游读取请求并将该通信量类别信息传递给dma引擎208。然后dma引擎208在两个单独的请求队列215a-b中生成读取请求,这些请求通过两个单独的i/o接口212a-b进行处理。例如,被称为“快速”通信量的高优先级实时通信量的读取请求将通过“快速”i/o接口212a进入“快速”读取请求队列215a,并且响应数据将类似地经由通过快速i/o接口212a的“快速”完成队列216a返回。同时,被称为“最大努力”通信量的低优先级通信量的读取请求将通过“最大努力”i/o接口212b进入“最大努力”读取请求队列215b,并且响应数据将类似地经由通过快速i/o接口212a的“最大努力”完成队列216b返回。i/o接口212a-b、队列215a-b和216a-b以及系统桥214可以使用任何合适的i/o接口或结构标准(诸如高级可扩展接口(axi)和/或intel片上系统结构(iosf)等)来实现。
50.此外,到内部分组发送队列缓冲器202(例如,rf存储器)的数据路径也被跨通信量类别划分以消除冲突。例如,在图示的实施例中,存在从dma引擎208到分组传输队列202的分开的快速和最大努力的数据路径或接口209a-b。
51.在所示实施例中,mac层204在由调度器205实现的现有调度算法(例如,tbs/qav/qbv)之上实现“通信量类别感知”仲裁。为了促进这一点,mac层204中存在寄存器206,该寄存器206将vlan id映射到每个队列202的通信量类别,这被称为vlan到通信量类别映射寄存器206。这种映射使得能够动态分配通信量类别优先级而不是限于固定优先级方案(例如,图1中的nic 100的固定优先级方案)。
52.除了vlan id到tc映射寄存器206之外,mac层204包括时间感知仲裁器207,其为每个队列202使用单独的预取定时器。例如,每个预取定时器的值可以取决于通信量类别。
53.因此,基于调度算法(例如,tbs/qav/qbv)连同通信量类别和预取定时器值,mac层204和/或调度器205现在准确地知道何时生成描述符预取请求。代替盲目地为所有队列202生成描述符预取请求,现在mac层204具有充足的信息来确定何时预取分组的描述符以及何
时发出分组的数据dma请求。因此,仲裁现在发生在mac层204而不是dma引擎208中——dma引擎208只是mac层204的管道。
54.当mac层204调度请求时,通信量类别信息连同读取请求一起被传递到dma引擎208,并且dma引擎208基于请求的通信量类别来简单地将请求处理为“快速”或“最大努力”。例如,高优先级(快速)请求被引导到快速请求队列215a,而低优先级(最大努力)请求被引导到最大努力请求队列215b。每个请求队列215a-b可以有它自己的信用。
55.在soc结构侧,每个请求队列215a-b被映射到桥214上从nic 200到更大计算系统或片上系统(soc)的单独虚拟信道。由于这些虚拟信道的管道已经存在于soc侧一直到存储器220,因此端到端保持低等待时间qos。完成经由两个单独的虚拟信道(用于“最大努力”通信量的虚拟信道0(vc0)和用于“快速”通信量的虚拟信道1(vc1))返回到nic 200,并且类似地,它们然后被引导到nic 200上两个单独的完成缓冲区216a-b。
56.如果完成是针对描述符的,则dma引擎208解析描述符并生成针对相同类型的请求队列215a或215b上的分组有效载荷的数据dma请求。完成数据然后被路由到单独的数据路径209a-b上的本地队列存储器202,用于快速通信量与最大努力通信量。拆分内部存储器路径确保在写入分组队列存储器202的同时不存在高优先级数据和低优先级数据的冲突。
57.基于调度算法和启动时间,分组数据被从本地队列存储器202读取,通过添加分组的各个字段进行分组化,然后以确定性方式通过网络230在线上传输。
58.这种解决方案提供了许多优点。例如,该解决方案减少了端到端等待时间,可以实现更短的周期时间和更多的工作负荷整合,并提供每个通信量类别调度的精确分组传输,并由此改善整体周期抖动。特别地,该解决方案通过具有基于通信量类别的调度/仲裁以及通过为高优先级快速通信量描述符和数据以及低优先级最大努力通信量描述符和数据具有单独的请求队列来显著减少等待时间。具有基于通信量类别的仲裁并将高优先级请求和低优先级请求分离到不同的队列中,显著提高了确定性并减少了等待时间。此外,该方案消除了上述的“队头”阻塞问题(例如,结合图1的nic 100),因为高优先级通信量请求将不再等待在低优先级通信量请求之后。此外,虽然以上示例主要结合两个通信量类别或优先级进行描述,但该解决方案可以扩展到任意数量的通信量类别和队列。例如,根据ieee 802.1q规范,最多可以有8个通信量类别优先级。
59.在各实施例中,nic 200的各个组件和功能可以使用任何合适的硬件和/或软件逻辑的组合来实现,包括处理电路系统、存储器、通信接口、固件、驱动器、应用等,如结合其他实施例进行描述的。
60.图3图示出根据各实施例的用于在网络接口控制器(nic)上执行用于确定性分组传输的基于通信量类别的调度和dma的流程图300。在各实施例中,例如,流程图300可以使用图2的nic 200和/或本公开通篇描述的任何其他网络接口控制器、计算设备、平台、系统和环境来实现和/或执行。
61.流程图开始于框302,在框302中,nic的调度器电路系统(例如,基于调度算法、通信量类别/通信量优先级、预取定时器等)调度或选择要从主机计算系统的主存储器中检索的分组。
62.该流程图然后进行到框304,在框304中调度器电路系统向dma引擎电路系统发送读取请求和所选分组的通信量类别。
63.流程图然后进行到框306,其中dma引擎电路系统确定该分组是否包含最大努力通信量或快速通信量(例如,基于由调度器电路系统提供的通信量类别)。
64.如果分组包含最大努力通信量,则流程图然后进行到框308,在框308中dma引擎电路系统发送描述符请求,并且随后通过最大努力i/o接口发送分组的数据dma请求(例如,一旦描述符被返回)。
65.然而,如果分组包含快速通信量,则流程图然后进行到框310,在框310中dma引擎电路系统发送描述符请求,并且随后通过快速i/o接口发送针对分组的数据dma请求(例如,一旦描述符被返回)。
66.流程图然后进行到框312,在框312中dma引擎电路系统接收带有分组有效载荷数据的数据完成,然后到框314,在框314中dma引擎电路系统将分组数据存储在nic用于该分组的适当传输队列中。
67.流程图然后进行到框316,在框316中nic的mac层和/或调度器调度分组以供在分组的指定启动时间通过传输接口进行传输。
68.在此处,流程图可以完成。然而,在一些实施例中,流程图可以重新开始和/或可以重复某些框。例如,在一些实施例中,流程图可在框302处重新开始,以继续调度和传输数据分组。用于时间敏感联网的确定性、低等待时间描述符解耦的dma
69.nic在短时间内确定性地传输分组的能力不仅取决于其(例如,在各种ieee tsn标准(诸如ieee 802.1qav和ieee 802.1qbv)中定义的)调度算法,而且还取决于与从主存储器获取数据所需的时间量相关联的等待时间和抖动。
70.例如,如上所述,nic通常使用直接存储器访问(dma)操作从主存储器中获取分组传输所需的数据,诸如每个分组的描述符和有效载荷数据。描述符仅包含指向存储分组有效载荷数据的存储器地址的指针,而有效载荷数据包含分组的实际内容。因此,在获取描述符之前,nic不知道存储分组有效载荷的位置,这意味着必须在分组有效载荷之前获取描述符。因此,nic通常为每个分组传输执行至少两个往返dma操作——一个dma操作预取描述符而另一个dma操作获取分组有效载荷。然而,在一些情况下,与这些dma操作相关联的等待时间和抖动可导致分组传输延迟。
71.特别地,nic通常采用单个dma引擎来获取描述符和分组有效载荷两者(例如,如上文结合图1的nic 100所示和描述的)。例如,一旦分组传输队列的尾指针被nic软件驱动器提前,mac层就向nic上的唯一dma引擎发起请求以获取描述符。然而,对于时间敏感应用,nic通常需要多个分组队列:至少一个队列用于硬实时通信量,而一个或多个队列用于最大努力通信量。在一些实施例中,例如,nic可以支持多达8个发送队列和8个接收队列。因此,nic必须发出多个上游读取请求,该多个上游读取请求包含描述符请求和有效载荷数据请求的混合。例如,mac层可获取一些队列的描述符并获取其他队列的有效载荷数据,同时还执行某些队列的上游写入。此外,所有这些操作都由当前nic架构中的单个dma引擎处理。将单个dma引擎用于时间敏感事务和非时间关键事务的混合将导致大的等待时间峰值,然而,这对于时间敏感应用(例如,实时工业应用)来说可能是很大的问题。例如,确定性/更短的周期时间对于工业控制回路应用和工作负荷整合至关重要。因此,消除此类应用的这些等待时间峰值至关重要。
72.例如,大多数分组传输等待时间是由描述符和分组数据dma操作引起的。每个分组传输需要nic的mac层与主存储器之间的两次往返延迟(一次往返用于描述符,而另一次往返用于分组有效载荷)。在当前的nic架构中,描述符预取是远在相对应的分组传输之前进行的,这大大提高了线路吞吐量和带宽。然而,当启用多个时间敏感队列时,来自一个队列的描述符预取请求通常在来自另一队列的分组数据请求之前被调度。因此,时间敏感分组请求必须等待先前调度的描述符请求获得批准,并且这些分组数据请求简单地在请求队列中等待,直到最终获得批准,这导致额外的分组等待时间和抖动
73.例如,返回图1,nic 100包括指定为队列0-7的多个分组传输队列102,并且每个队列102可以被应用映射到唯一的虚拟局域网(vlan)id。此外,这些队列102基于必须为每个队列102中的分组提供的qos级别来在内部映射到各种通信量类别(例如,tc
0-tc7)。例如,具有最高优先级的快速通信量(例如,具有严格qos要求的时间敏感数据)可以映射到队列7,而队列7可以映射到用于实时通信量的通信量类别7(tc7)。同时,具有最低优先级或qos的最大努力通信量可以被映射到队列0,而队列0可以被映射到用于具有最低优先级的通信量的通信量类别0(tc0)。此外,在所示的实施例中,所有通信量类别共享同一虚拟信道(vc0)以供片上通信和i/o。
74.以此方式,每个队列102被静态映射到具有固定优先级的通信量类别,其基于每个队列的数字分配而不是vlan id(例如,队列7具有比队列6更高的优先级,队列6具有比队列5更高的优先级,
……
,并且队列1具有比队列0更高的优先级)。
75.基于由调度器105实现的调度算法(例如,tbs、cbs(ieee 802.1qav)、est(ieee 802.1qbv)),媒体接入控制(mac)层104简单地生成对直接存储器访问(dma)引擎108的请求。然后dma引擎108基于队列102的固定优先级在它们之间进行仲裁,并为所选分组生成dma请求。然而,由于描述符持有指向需要传输的分组有效载荷数据的地址指针,因此需要在生成对分组有效载荷的dma数据请求之前获取描述符。因此,如果描述符尚未被预取,则dma引擎108在它获取分组数据之前生成描述符请求。
76.然而,在所示实施例中,只有一个输入/输出(i/o)接口112来服务i/o请求,这意味着只有一个读取请求队列115用于跨所有分组队列102的描述符和分组数据两者。因此,对于分组有效载荷的dma数据请求可能必须在读取请求队列115中等待,直到预先发出的请求被批准。考虑到单个队列没有优先级,这在处理单个分组队列102时不是问题。然而,当启用多个分组队列102时(例如,这是基于tsn的应用的情况),将存在来自若干分组队列102的描述符预取请求,该请求可以阻塞分组数据请求。
77.因此,虽然描述符预取的目的是增加带宽利用率并减少端到端等待时间,但当前的方法仅对单个队列有效,因为在描述符预取与多个时间关键队列联用时可能出现各种副作用。例如,由于描述符与数据分组有效载荷请求的混合,因此有时时间敏感数据有效载荷请求可能卡在低优先级(例如,最大努力)数据分组和描述符请求之后,这严重影响分组传输等待时间。
78.如上文结合图2的nic 200的实现所描述的,可以通过具有单独的i/o接口和请求队列来将最大努力通信量与快速通信量分开来减少这种副作用。虽然这种信道分离技术可以大大减少来自最大努力通信量的干扰,但在各个快速通信量请求之间仍然可能存在意外干扰。例如,来自一个快速队列的描述符请求可远远领先于来自另一快速队列的分组数据
请求,这导致大的等待时间峰值。
79.因此,多个通信量类别和虚拟信道的使用(例如,如上文结合图2的nic 200所描述的)可以在一定程度上减少这些等待时间峰值,但并没有消除它们。例如,可以将多个队列分配为时间敏感队列,并且这些时间敏感队列之间的事务可以在相同的通信量类别和虚拟信道上进行。将最大努力队列与时间敏感队列分开,并在单独的通信量类别和虚拟信道(例如,tc0/vc0)上路由最大努力事务,可以大大减少等待时间峰值。然而,由于多个时间敏感队列可被分配给相同的通信量类别和/或虚拟信道,仍然存在等待时间峰值的风险,因为一个时间敏感队列的描述符预取可能与另一时间敏感队列的分组有效载荷获取混合。由于单个dma引擎用于描述符和分组数据两者,因此这些事务一个接一个地进入同一请求队列。因此,分组有效载荷事务必须等待直到描述符预取被批准,从而导致额外的等待时间。最重要的是,由于描述符预取通常是在突发模式下执行的,因此在这个时间附近发起的任何分组有效载荷事务都必须等待整个描述符预取事务突发被批准。在这种情况下产生的额外等待时间通常取决于传输队列的预取深度——预取深度越大,额外等待时间越高。
80.因此,虽然为最大努力通信量和快速通信量拥有单独的请求队列将显著改善等待时间,但它仍然容易受到大等待时间峰值的影响。例如,当启用多个快速队列时,所有快速队列将共享相同的通信量类别和信道。因此,即使最大努力通信量请求与快速通信量请求分离,各个快速分组队列中的描述符和分组数据仍然必须共享相同的请求队列,这最终导致意外的等待时间峰值。
81.基于描述符的dma是一种标准架构,许多以太网nic和其他i/o协议(例如,usb)利用其来减少等待时间。此外,如本公开通篇所述,还存在被nic用来减少等待时间的各种调度算法,诸如基于时间的调度(tbs)、基于信用的整形器(cbs)(ieee 802.1qav)以及调度通信量增强(est)(ieee802.1qbv)。虽然这些dma和调度技术提供了相当大的等待时间改进,但它们都没有解决某些dma操作导致的等待时间,诸如描述符预取以及描述符预取请求与分组数据请求的混合。
82.减少dma等待时间的另一种潜在方法是为每个分组队列分配唯一的通信量类别和虚拟信道。虽然本公开通篇描述的实施例支持该方法,但是该方法的主要缺点是增加的面积成本和管芯尺寸。例如,对于具有8个传输(tx)队列和8个接收(rx)队列的nic,为每个队列拥有唯一的通信量类别和虚拟信道将显著增加面积和芯片尺寸。此外,soc可能没有足够的虚拟信道来支持唯一的每个队列分配,因为许多当前的soc仅支持两个虚拟信道(vc0和vc1)。此外,对于需要大量队列的应用,该方法不可缩放,因为ieee 802.1q标准中只定义了8个通信量类别。
83.另一种减少dma等待时间的潜在方法是简单地完全关闭或禁用描述符预取。这将强制mac在分组被调度以供传输时获取分组的描述符,这意味着分组的描述符和数据有效载荷的dma操作将是顺序的,从而消除了若干描述符请求在数据有效载荷请求之前的可能性。然而,该方法的主要缺点在于,由于大的分组间间隙,因此nic的带宽利用率将非常低。例如,由于与soc相关联的等待时间,因此将存在大的分组间间隙,从而阻止实现全线速。对于需要全线速的应用以及当非实时应用有大量最大努力通信量时,这是主要限制。
84.减少dma等待时间的另一种潜在方法是将描述符存储在nic本身而不是主存储器(例如,ddr存储器)中,这可以显著减少总体分组传输等待时间,但也需要对现有nic硬件和
b可以是物理上或逻辑上分离的,诸如分别执行描述符和分组数据dma的两个独立或不同的dma引擎408a-b,或者逻辑上支持用于描述符和分组数据dma的分离且独立的dma线程408a-b的单个dma引擎408。无论底层实现如何,关键在于(多个)dma引擎408能够区分描述符请求和分组数据请求,以便可以独立且并行地(例如,使用单独的事务id)对它们进行处理。
92.在所示实施例中,例如,数据dma引擎408a用于处理分组数据dma请求,并且描述符dma引擎408b用于处理描述符dma请求。
93.此外,由于描述符是预取的,因此描述符dma请求的时间敏感性远低于分组数据dma请求。因此,在所示实施例中,所有描述符dma请求都被静态映射到低优先级通信量类别,并且始终在最大努力虚拟信道(例如,vc0)上进行,而不管它们的实际通信量类别或优先级。
94.数据dma引擎408a专门排他地用于分组有效载荷的dma数据传送。此外,数据dma引擎408a具有通信量类别和基于通信量类别的仲裁能力的知识,类似于以上关于图2的nic 200描述的功能。因此,数据dma请求是基于其通信量类别或优先级进行处理的。
95.作为示例,假设nic 400支持八个分组传输队列402(q
0-q7)和八个通信量类别(tc
0-tc7),但是nic 400是在仅支持两个虚拟信道(vc0和vc1)的计算系统或soc上实现的。在一些实施例中,具有最低优先级或qos的最大努力通信量可以映射到队列0-4(q
0-q4),队列0-4(q
0-q4)可以相应地映射到通信量类别0-4(tc
0-tc4),而通信量类别0-4(tc
0-tc4)的数据流可以通过计算系统的可用于低优先级通信量的虚拟信道0(vc0)来路由。同时,具有最高优先级的快速通信量(例如,具有严格qos需求的时间敏感数据)可以映射到队列5-7(q
5-q7),队列5-7(q
5-q7)可以相应地映射到通信量类别5-7(tc
5-tc7),而通信量类别5-7(tc
5-tc7)的数据流可以通过计算系统的可为实时通信量保留的虚拟信道1(vc1)来路由。
96.在该示例中,由于计算系统或soc仅支持两个虚拟信道(vc0和vc1),因此数据dma引擎408a将通过把通信量类别tc
0-tc7映射到最大努力队列和快速通信量队列中,来将数据dma通信量分别推送到两个单独的读取请求队列中。例如,由于通信量类别tc
0-tc4包含最大努力通信量,因此它们被映射到最大努力请求队列中,该通信量最终通过用于低优先级通信量的虚拟信道(例如,vc0)进行路由。此外,由于通信量类别tc
5-tc7包含快速通信量,因此它们被映射到快速请求队列中,该通信量最终通过用于高优先级通信量的虚拟信道(例如,vc1)进行路由。
97.然而,描述符dma引擎408b将所有描述符请求视为最大努力通信量,而不管它们的实际通信量类别或优先级。例如,所有描述符请求都被推送到单个读取请求队列中,而不管它们的实际通信量类别或优先级,将其该所有描述符请求作为最大努力通信量进行处理并最终通过用于低优先级通信量的虚拟信道(例如,vc0)进行路由。
98.来自dma引擎408a、408b的各种请求队列的通信量然后被馈送到通信量路由器412中,该路由器将通信量映射或路由到对应于适当虚拟信道(vc0和vc1)的相对应上游队列中。
99.例如,通信量路由器412经由单个读取请求队列从描述符dma引擎408b接收通信量,该队列包含针对所有通信量类别(tc
0-tc7)的描述符请求。但是,由于所有描述符请求都被视为最大努力通信量,而不管其实际通信量类别或优先级,因此所有通信量类别(tc
0-tc7)的描述符通信量都被路由到对应于虚拟信道0(vc0)的请求队列,该虚拟信道0(vc0)用于低优先级通信量。
100.此外,通信量路由器412经由两个单独的读取请求队列(例如,分别用于最大努力通信量和快速通信量)从数据dma引擎408a接收通信量。来自这些请求队列之一的通信量包含通信量类别0-4(tc
0-tc4)的数据dma请求,而来自另一个请求队列的通信量包含通信量类别5-7(tc
5-tc7)的数据dma请求。由于通信量类别0-4(tc
0-tc4)的数据dma请求被视为最大努力通信量,因此该通信量被路由到对应于虚拟信道0(vc0)的请求队列,该虚拟信道0(vc0)用于低优先级通信量。此外,由于通信量类别5-7(tc
5-tc7)的数据dma请求被视为快速通信量,因此该通信量被路由到对应于虚拟信道1(vc1)的请求队列,该虚拟信道1(vc1)用于高优先级通信量。
101.以此方式,通信量路由器412将最大努力通信量类别(例如,tc
0-tc4)的数据有效载荷和所有通信量类别(例如,tc
0-tc7)的描述符推送到同一低优先级虚拟信道(例如,vc0),而快速通信量类别(例如,tc
5-tc7)的数据有效载荷被推送到高优先级虚拟信道(例如,vc1)上。
102.因此,用于低优先级通信量的虚拟信道(vc0)由以下各项共享:(i)所有通信量类别的描述符(例如,tc
0-tc7的描述符)和(ii)低优先级或最大努力通信量类别的分组数据有效载荷(例如,tc
0-tc4的分组数据),因为与高优先级快速通信量类别的分组数据有效载荷(例如,tc
5-tc7的分组数据)相比,这些类型的通信量较不时间敏感。
103.同时,为高优先级通信量保留的虚拟信道(vc1)被排他地用于高优先级或快速通信量类别的时间敏感分组数据有效载荷(例如,tc
5-tc7的分组数据)。
104.以此方式,描述符dma与所有分组数据dma解耦,描述符dma和低优先级分组数据dma共享分配给最大努力通信量的虚拟信道(例如,vc0),并且时间敏感分组数据dma使用为快速通信量保留的虚拟信道(例如,vc1)。因此,该方法极大地提高了确定性并减少了抖动。
105.图5图示出根据各实施例的用于在网络接口控制器(nic)上执行用于确定性分组传输的解耦描述符和数据dma的流程图500。在各实施例中,例如,流程图500可以使用图4的nic 400和/或本公开通篇描述的任何其他网络接口控制器、计算设备、平台、系统和环境来实现和/或执行。
106.流程图开始于框502,在框502中描述符dma引擎从nic上的调度器接收描述符预取请求。
107.流程图然后进行到框504,在框504中描述符dma引擎通过低优先级虚拟信道将描述符请求作为最大努力通信量进行发送/路由,而不管其通信量类别。
108.流程图然后进行到框506,在框506中描述符dma引擎接收描述符完成并且将描述符高速缓存在描述符高速缓存中。
109.流程图然后进行到框508,在框508中数据dma引擎从调度器电路系统接收分组数据请求。
110.流程图然后进行到框510,其中数据dma引擎确定该分组是否包含最大努力通信量或快速通信量(例如,基于由调度器电路系统提供的通信量类别)。
111.如果分组包含最大努力通信量,则流程图继续到框512,在框512中数据dma引擎通过低优先级虚拟信道将数据dma请求作为最大努力通信量进行发送/路由。
112.然而,如果分组包含快速通信量,则流程图继续到框514,在框514中数据dma引擎通过高优先级虚拟信道将数据dma请求作为快速通信量进行发送/路由。
113.流程图然后进行到框516,在框516中数据dma引擎接收具有分组有效载荷数据的数据完成并且将分组数据存储在nic的针对该分组的适当传输队列中。
114.流程图然后进行到框518,在框518中nic的mac层和/或调度器调度分组以供在分组的指定启动时间通过传输接口进行传输。
115.在此处,流程图可以完成。然而,在一些实施例中,流程图可以重新开始和/或可以重复某些框。例如,在一些实施例中,流程图可在框502处重新开始,以继续调度和传输数据分组。用于时间敏感联网的分组等待时间和抖动的实时监控
116.虽然时间敏感联网(tsn)标准定义了用于精确调度分组的算法,但没有定义用于精确、实时监控分组的传输等待时间和启动时间抖动的标准化方法。
117.ieee 802.3标准定义了远程网络监控管理信息库(rmon mib)规范,这是使各种网络监控器和控制台系统能够交换网络监控数据的标准监控规范。例如,rmon1 mib由十个组组成,其中组1收集实时lan统计,诸如利用率、冲突、crc错误等。由于这些标准,当前的nic实现有监控和收集这些统计的各种rmon计数器,诸如用于所有好的和坏的帧的帧大小计数器、用于好的多播帧的帧计数器、用于crc错误的帧计数器等等。然而,这些rmon计数器仅监控一般网络统计(例如,通用以太网lan统计)——它们不监控tsn特定的实时分组等待时间和与tsn分组传送相关联的抖动,也不对违反规定的启动时间的分组进行计数或跟踪。对于硬实时工业应用,实时(例如,在应用运行时)监控分组等待时间和抖动以确定每个分组是否确实在正确的时间启动并向应用报告任何未命中是至关重要的。因此,当前没有标准机制来在时间关键的应用运行时实时精确地监控分组等待时间和抖动。现有的rmon计数器用于基于通用以太网的统计,而不适用于tsn应用。
118.合成工作负荷和测试程序也可用于监控或评估分组传输的性能。然而,这些合成工作负荷和测试程序不是实时执行的,它们是不准确的,并且它们不能保证系统是否满足硬实时需求。
119.例如,该方法涉及使用基于合成工作负荷的非运行时合成测试来测量分组等待时间和抖动。合成测试测量从(例如,由nic驱动器执行的)尾指针更新到物理层接口(诸如媒体独立接口(mii)(例如,千兆位媒体独立接口(gmii)或串行千兆位媒体独立接口(sgmii))的分组等待时间。每当nic驱动器使用指向新数据有效载荷的地址指针更新描述符时,尾指针就前进。当尾指针在头指针之前时,nic开始从相对应的传送环形缓冲区(trb)中获取描述符并将它们存储在该尾指针的本地预取缓冲区中。在合成测试中,测试软件在更新nic中的尾指针之前刚好执行“读取时间戳计数器”(rdtsc)指令,并且因此参考时间戳计数器时钟捕获数据传送的起点。nic获取描述符,解析它,并且然后启动dma以从存储器中获取数据有效载荷。
120.一旦数据有效载荷在nic的本地存储器(例如,本地sram)中可用,mac将数据分组化并在物理层接口(例如,gmii接口)上传输它。此时,mac记录关于ptp时钟的时间戳。分组传输时间是基于尾指针更新(例如,基于tsc时钟)与经由物理层/gmii接口传输(例如,基于ptp时间戳)之间的时间差计算的。类似地,通过从实际启动时间中减去调度的启动时间(例如,分别基于tsc时钟和ptp时钟)来计算抖动并将其发送到寄存器。该方法有若干问题。
121.首先,使用合成工作负荷和合成测试程序测量分组等待时间,这与客户现场应用
不同。实时分组等待时间受工作负荷、干扰和实时通信量模式的影响很大,但通常很难在实验室中重现客户的实时故障。此外,由于若干资源是共享的(例如,cpu核、存储器/高速缓存、结构),这些合成测试将无法提供对分组等待时间的准确测量。
122.其次,测量是从尾指针更新开始的,由于两个原因,这是非常不准确的。第一个原因是nic在获取描述符后没有立即解析描述符。描述符存储在nic内部的预取高速缓存中,直到需要解析描述符并获取数据有效载荷。第二个原因是描述符在突发中预取,这意味着描述符不是一个接一个地获取的。例如,mac层发出等于头指针减去尾指针的突发请求。为了克服这个问题,在测试过程中预取被关闭并且尾指针一次只增加一个描述符。通过这样做,分组现在将不经常传输,并且不考虑与背靠背分组压力、线头阻塞、未决信用的有限可用性、有限的预取高速缓存以及若干其他硬件特定的限制相关联的等待时间。因此,测量提供了过于乐观的等待时间值,这使得难以捕捉或标识离群值。
123.第三,软件使用与nic不同的时钟。例如,软件使用与soc的时间戳计数器(tsc)相对应的应用时钟,而nic使用精确时间协议(ptp)时钟。因此,需要考虑时钟之间存在一些差异。
124.由于这些问题,因此当前的方法是不准确的,并且无法保证非常低的周期时间和硬实时工业应用所需的准确度或可靠性水平(例如,九个9的准确度,或99.9999999%)。
125.因此,没有已知的解决方案可用于在运行时监控硬件特定的实时等待时间和抖动。
126.因此,本公开提出了一种用于以高精度实时监控分组等待时间和抖动的解决方案。所提出的解决方案使用nic中的ptp时钟来消除因使用不同时钟域而导致的不准确性。nic硬件精确测量分组等待时间和抖动,并使用每个分组传输的传输等待时间、启动时间抖动和传输时间戳来更新描述符。不需要任何合成工作负荷,也不需要合成测试。此外,监控是在应用运行时实时执行的。
127.例如,每个分组的分组等待时间和抖动由nic计算,并且连同与传输分组的时间相对应的时间戳,在名为“传输等待时间”和“传输抖动”的传输描述符中新定义的字段中更新,如图7所示,其图示出传送描述符写回格式的示例。nic通过从实际启动时间中减去调度的启动时间来计算分组抖动,然后将产生的抖动值写回到描述符中。
128.软件可以读取这些等待时间和抖动以及其他状态位,以了解分组是否已在调度的时间和所需的启动时间窗口内传输。所提出的架构还实时提供对跨109个样本的跨若干分组的最小、平均和最大等待时间值的统计,以可靠地获得最坏情况的数字。
129.所提出的架构为时间敏感工业应用提供了一种实时监控技术,并通过提供对现有rmon标准的扩展来大大减轻管理实时网络的负担。所提出的解决方案在实际应用条件下,在运行时精确测量硬件分组等待时间和启动时间抖动。例如,等待时间和抖动字段被嵌入在描述符本身中,并且当nic关闭描述符时,nic为每个分组精确测量这些值并写回这些值。
130.所提出的方法提供了更可靠的运行时统计,这是硬实时应用所需要的。例如,所提出的解决方案提供了更可靠的数据,并且可以保证高达9个9的准确度(例如,99.9999999%的准确度),该准确度是非常低的周期时间和硬实时工业应用所需要的。
131.此外,不需要额外的软件来实现该技术。nic驱动器可以读取运行时性能统计并将其提供给应用软件,该应用软件可以使用该信息实时进行路线修正。
132.该解决方案的另一个优点在于,它显著降低了利用该解决方案的nic的开发人员和客户的额外测试成本。例如,nic开发人员花费大量时间和资源来收集实时性能数据,使用该解决方案可以大大简化这一过程。
133.图6图示出具有用于分组传输的高精度实时性能监控的网络接口控制器600的示例实施例。在一些实施例中,例如,nic 600可以用于以非常高的精度为tsn应用实时监控分组传输的等待时间和抖动。此外,在一些实施例中,在nic 600上实现的解决方案可以在本公开通篇描述的其他nic实施例上实现(例如,图1的nic 100、图2的nic 200和/或图4的nic 400)。
134.在图示的实施例中,nic 600包括多个发送和接收队列602,并且基于vlan id(虚拟lan标识符)来将数据通信量隔离到这些队列602中。这些队列602基于用于提供qos的优先级在内部被映射到各种通信量类别。
135.例如,具有高优先级的快速分组可以用特定的vlan id标记并映射到队列0,而队列0可以映射到通信量类别1(tc1)。此外,映射到通信量类别1(tc1)的数据流可以通过虚拟信道1(tc1)进行路由,该信道可以被保留用于实时通信量。vlan到通信量类别(tc)到虚拟信道(vc)的映射在整个主机计算系统或与nic 600相关联的soc(例如,经由i/o接口612、系统桥614和主存储器620)中提供用于时间敏感实时分组数据的低等待时间路径。因此,该映射确保了分组从应用一直到以太网线路的qos。
136.类似地,具有低优先级的最大努力通信量可以用不同的vlan id标记并映射到队列1,而队列1可以映射到通信量类别0(tc0)并通过虚拟信道0(vc0)进行路由,该信道可以与许多其他i/o设备共享。最大努力通信量用于非时间关键的通信量,并且不保证等待时间。
137.由于等待时间在不同队列602之间显著变化,因此为了在运行时精确地监控分组,必须用唯一的事务id来标记这些分组。图8a图示出事务编码方案的示例。这种编码方案提供了基于队列或信道号、数据类型(例如,描述符或数据有效载荷)和事务类型(例如,传输(tx)或接收(rx)事务或者上游读取或写事务)唯一地标识分组的能力。图8b图示出基于图8a的编码方案的各种编码事务的示例,如下文进一步讨论的。
138.在nic 600中,监控逻辑616容纳在nic ptp时钟619上运行的自由运行的16位定时器。对于250mhz的ptp时钟,该定时器可以测量高达256微秒(μs)的等待时间。监控逻辑616查看每个上游事务并基于arid和rid来对事务进行解码。
139.例如,当发起信道0上的上游描述符读取时,监控器616用5'b00010的arid标识该事务,并在时间't1'拍摄ptp时间戳的快照,并且状态机等待完成。当完成到达nic 600时,监控器逻辑616用具有相同值5'b00010的rid标识相对应的队列0描述符完成,并在时间't2'拍摄ptp时间戳的另一个快照,并将其存储在先进先出(fifo)缓冲区中。
140.在接收到描述符后,mac 604解析描述符并为分组有效载荷调度dma(例如,经由dma引擎608)。由于新的编码方案具有区分描述符和数据的能力,因此现在同一信道0上的上游数据事务用5’b00011的arid发起。现在,监控器块616在时间“t
3”处获取另一个ptp时间戳并将该时间戳存储在fifo中,并且状态机等待完成。当与信道0数据有效载荷相对应的完成到达nic 600时,监控块616用5’b00011的相同id值标识该事务,并在时间

t4’
获取ptp时间戳并将时间戳推送到fifo中。
141.由于不同的优先级并且取决于启动时间,事务可以在不同的虚拟信道和不同的时
间进行。此外,基于队列映射到的虚拟信道(vc),完成可能出现乱序。各种因素影响等待时间,并且因此影响分组时间戳值,包括上游未决信用、分组大小、突发大小、队列数量等。
142.一旦mac 604接收到数据有效载荷,mac 604将数据存储在本地分组缓冲区602中并创建帧分组并在物理层接口617(例如,gmii)上将其传输到物理编码子层(pcs)和串行器/解串器(serdes)以最终将其发送到串行线上。当mac 604在物理层接口617(例如,gmii)(通过网络630)上传输分组时,监控器616在“t
5”处获取另一时间戳。
143.基于描述符中的ctl位(例如,经由控制寄存器615),监控器逻辑616基于以下等式来计算分组等待时间(例如,使用减法器617):分组传输等待时间(ptl)=ctl*(描述符(t
2-t1)+解析(t
3-t2))+数据(t
4-t3)+xmt(t
5-t4)
144.监控逻辑616还通过从实际启动时间(t5)中(例如,使用减法器617)减去调度的启动时间来计算启动时间抖动,如下面的等式所示:启动时间抖动(ltj)=实际启动时间(t5)-调度的启动时间(t5’
)
145.例如,减法器逻辑617从监控器616的fifo中读取给定信道的时间戳t1到t5,并基于控制位和上述等式来计算传输等待时间和传输抖动。
146.监控逻辑616然后将分组传输等待时间和启动时间抖动值发送到mac层604,该mac层604通过在稍后时间关闭描述符来在内部更新描述符字段。
147.每个传输信道/队列将有单独的fifo来存储其分组时间戳。最小/平均/最大逻辑618计算所有过去经传输的分组的最小、平均和最大分组等待时间值。通常,平均值将接近最小值,除非尾部有一些离群值。
148.图9图示出用于传输分组而执行的一系列操作的分组传输等待时间的图表900。例如,图表900示出了在分组传输期间发生的操作序列(例如,描述符请求、描述符完成、有效载荷请求、有效载荷完成、数据传输)、每个操作的等待时间以及整个分组传输的总等待时间。分组抖动是基于传输描述符中指定的启动时间和分组被传输的实际时间t5计算的。应用软件可以读取描述符和状态寄存器来确定定时离群值的根本原因并适当地微调系统的操作,诸如资源利用率、工作负荷、干扰通信量、改变调度等。
149.图10图示出根据各实施例的用于在网络接口控制器(nic)上执行用于分组传输的高精度实时性能监控的流程图1000。在各实施例中,例如,流程图1000可以使用图6的nic 600和/或本公开通篇描述的任何其他网络接口控制器、计算设备、平台、系统和环境来实现和/或执行。
150.流程图开始于框1002,其中在时间t1检测到描述符读取请求并且捕获相对应的ptp时间戳。
151.流程图然后前进到框1004,其中在时间t2检测到描述符读取完成并且捕获相对应的ptp时间戳。
152.流程图然后进行到框1006,其中在时间t3检测到对描述符有效载荷的数据dma请求并且捕获相对应的ptp时间戳。
153.流程图然后进行到框1008,其中在时间t4检测到对描述符有效载荷的数据dma完成并且捕获相对应的ptp时间戳。
154.流程图然后前进到框1010,其中在时间t5检测到分组传输并且捕获相对应的ptp
时间戳。
155.流程图然后进行到框1012以基于时间戳t
1-t5来计算分组传输等待时间和抖动,然后进行到框1014以使用分组等待时间和抖动计算来更新描述符字段。
156.在此处,流程图可以完成。然而,在一些实施例中,流程图可以重新开始和/或可以重复某些框。例如,在一些实施例中,流程图可以在框1002重新开始以继续监控和检测与分组传输相关联的事件并计算分组传输的等待时间和抖动。示例计算环境
157.以下部分给出了各种计算设备、平台、系统和环境的示例,这些设备、平台、系统和环境可用于实现本公开通篇描述的时间敏感联网功能或者可以与本公开通篇描述的时间敏感联网功能一起实现。
158.图11是示出用于边缘计算的配置的概览的框图1100,该配置包括在以下许多示例中被称为“边缘云”的处理层。如图所示,边缘云1110共同定位在边缘位置(诸如接入点或基站1140、本地处理中枢1150、或中央局1120),并且因此可以包括多个实体、设备、和装备实例。与云数据中心1130相比,边缘云1110被定位成更靠近端点(消费者和生产者)数据源1160(例如,自主交通工具1161、用户装备1162、商业和工业装备1163、视频捕捉设备1164、无人机1165、智慧城市和建筑设备1166、传感器和iot设备1167等)。在边缘云1110中的边缘处提供的计算、存储器、和存储资源对于为由端点数据源1160使用的服务和功能提供超低等待时间的响应时间以及减少从边缘云1110朝向云数据中心1130的网络回程通信量(由此改善能耗和整体网络使用等益处)至关重要。
159.计算、存储器和存储是稀缺资源,并且通常根据边缘位置而减少(例如,在消费者端点设备处可用的处理资源比在基站处、在中央局处可用的处理资源更少)。然而,边缘位置越靠近端点(例如,用户装备(ue)),空间和功率通常就越受限。因此,边缘计算试图通过分配被定位成既在地理上更靠近又在网络访问时间上更靠近的更多的资源来减少网络服务所需的资源量。以此种方式,边缘计算尝试在适当的情况下将计算资源带到工作负荷数据,或者,将工作负荷数据带到计算资源。
160.以下描述了边缘云架构的各方面,该架构涵盖多种潜在的部署,并解决了一些网络运营商或服务提供商在其自身基础设施中可能具有的限制。这些包括以下的变体:基于边缘位置的配置变化(例如,因为处于基站级别的边缘在多租户场景中可能具有更受限制的性能和能力);基于对边缘位置、位置的层、或位置的组可用的计算、存储器、存储、结构、加速等资源的类型的配置;服务、安全性、以及管理和编排能力;以及实现端服务的可用性和性能的相关目标。取决于等待时间、距离、和定时特征,这些部署可以在网络层中完成处理,这些网络层可以被视为“接近边缘”层、“靠近边缘”层、“本地边缘”层、“中间边缘”层、或“远边缘”层。
161.边缘计算是一种开发范式,其中计算在网络的“边缘”处或靠近于网络的“边缘”被执行,典型地通过使用在基站、网关、网络路由器、或与产生和消耗数据的端点设备靠近得多得多的其他设备处实现的计算平台(例如,x86或arm计算硬件架构)来执行。例如,边缘网关服务器可装配有存储器池和存储资源,以针对连接的客户端设备的低等待时间用例(例如,自主驾驶或视频监控)实时地执行计算。或者作为示例,基站可被扩充有计算和加速资源,以直接为连接的用户装备处理服务工作负荷,而无需进一步经由回程网络传输数据。或
者作为另一示例,中央局网络管理硬件能以标准化计算硬件来代替,该标准化计算硬件执行虚拟化网络功能,并为服务的执行提供计算资源并且为连接的设备提供消费者功能。在边缘计算网络内,可能存在计算资源将被“移动”到数据的服务中的场景,以及其中数据将被“移动”到计算资源的场景。或者作为示例,基站计算、加速和网络资源可以提供服务,以便通过激活休眠容量(订阅、按需容量)来根据需要缩放至工作负荷需求,以便管理极端情况、紧急情况或为部署的资源在显著更长的实现的生命周期中提供长寿命。
162.图12图示出端点、边缘云和云计算环境之间的操作层。具体而言,图12描绘了在网络计算的多个说明性层之间利用边缘云1110的计算用例1205的示例。这些层开始于端点(设备和事物)层1200,该端点层1200访问边缘云1110以进行数据创建、分析、和数据消费活动。边缘云1110可以跨越多个网络层,诸如边缘设备层1210,该边缘设备层1210具有网关、内部(on-premise)服务器、或位于物理上邻近边缘系统中的网络装备(节点1215);网络接入层1220,该网络接入层1220涵盖基站、无线电处理单元、网络中枢、区域数据中心(dc)、或本地网络装备(装备1225);以及位于它们之间的任何装备、设备或节点(在层1212中,未详细图示出)。边缘云1110内和各层之间的网络通信可以经由任何数量的有线或无线介质来实现,包括经由未描绘出的连接性架构和技术来实现。
163.由于网络通信距离和处理时间约束而导致的等待时间的示例的范围可以从在端点层1200之间时的小于毫秒(ms),在边缘设备层1210处的低于5ms到当与网络接入层1220处的节点通信时的甚至10到40ms之间。在边缘云1110之外是核心网络1230层和云数据中心1240层,它们各自均具有增加的等待时间(例如,在核心网络层1230处的50-60ms、到在云数据中心层处的100ms或更多ms之间)。因此,在核心网络数据中心1235或云数据中心1245处的、具有至少50至100ms或更长的等待时间的操作将无法完成用例1205的许多时间关键的功能。出于说明和对比的目的,提供这些等待时间值中的每一个等待时间值;将会理解,使用其他接入网络介质和技术可以进一步降低等待时间。在一些示例中,相对于网络源和目的地,网络的各个部分可以被分类为“靠近边缘”层、“本地边缘”层、“接近边缘”层、“中间边缘”层或“远边缘”层。例如,从核心网络数据中心1235或云数据中心1245的角度来看,中央局或内容数据网络可以被视为位于“接近边缘”层内(“接近”云,具有在与用例1205的设备和端点通信时的高等待时间值),而接入点、基站、内部服务器或网络网关可以被视为位于“远边缘”层内(“远”离云,具有在与用例1205的设备和端点通信时的低等待时间值)。将会理解,构成“靠近”、“本地”、“接近”、“中间”或“远”边缘的特定网络层的其他分类可以基于等待时间、距离、网络跳数或其他可测量的特性,如从网络层1200-1240中的任一层中的源所测量的特性。
164.由于多个服务利用边缘云,因此各种用例1205可能在来自传入流的使用压力下访问资源。为了实现低等待时间的结果,在边缘云1110内执行的服务在以下方面平衡了不同的要求:(a)优先级(吞吐量或等待时间)和服务质量(qos)(例如,在响应时间要求方面,用于自主汽车的通信量可能比温度传感器具有更高的优先级;或者取决于应用,性能敏感度/瓶颈可能存在于计算/加速器、存储器、存储、或网络资源上);(b)可靠性和复原性(例如,取决于应用,一些输入流需要被作用并且以任务关键型可靠性来路由通信量,而一些其他输入流可以容忍偶尔的故障;以及(c)物理约束(例如,功率、冷却和形状因子)。
165.这些用例的端对端服务视图涉及服务流的概念,并且与事务相关联。事务详细说
明了消费服务的实体的整体服务要求、以及资源、工作负荷、工作流、以及业务功能和业务水平要求的相关联的服务。根据所描述的“条款”执行的服务能以确保事务在服务的生命周期期间的实时和运行时合约顺应性的方式在每层处被管理。当事务中的组件缺失其约定的sla时,系统作为整体(事务中的组件)可以提供以下能力:(1)理解sla违反的影响,以及(2)增强系统中的其他组件以恢复整体事务sla,以及(3)实现补救的步骤。
166.因此,考虑到这些变化和服务特征,边缘云1110内的边缘计算可以提供实时或接近实时地服务和响应于用例1205的多个应用(例如,对象跟踪、视频监控、连接的汽车等)的能力,并满足这些多个应用的超低等待时间要求。这些优势使全新类别的应用(虚拟网络功能(vnf)、功能即服务(faas)、边缘即服务(eaas)、标准过程等)得以实现,这些应用由于等待时间或其他限制而无法利用传统的云计算。
167.然而,伴随边缘计算的优势而来的有以下注意事项。位于边缘处的设备通常是资源受限的,并且因此存在对边缘资源的使用的压力。典型地,这是通过对供多个用户(租户)和设备使用的存储器和存储资源的池化来解决的。边缘可能是功率受限且冷却受限的,并且因此需要由消耗最多功率的应用对功率使用作出解释。在这些经池化的存储器资源中可能存在固有的功率-性能权衡,因为它们中的许多可能使用新兴的存储器技术,在这些技术中,更多的功率需要更大的存储器带宽。同样,还需要硬件和信任根受信任的功能的改善的安全性,因为边缘位置可以是无人的,并且可能甚至需要经许可的访问(例如,当被容纳在第三方位置时)。在多租户、多所有者、或多访问设置中,此类问题在边缘云1110中被放大,此类设置中,由许多用户请求服务和应用,特别是当网络使用动态地波动以及多个相关者、用例、和服务的组成改变时。
168.在更一般的级别上,边缘计算系统可以被描述为涵盖在先前讨论的、在边缘云1110(网络层1200-1240)中操作的层处的任何数量的部署,这些层提供来自客户端和分布式计算设备的协调。一个或多个边缘网关节点、一个或多个边缘聚合节点和一个或多个核心数据中心可以跨网络的各个层而分布,以由电信服务提供商(“电信公司”或“tsp”)、物联网服务提供商、云服务提供商(csp)、企业实体或任何其他数量的实体提供边缘计算系统的实现,或者代表电信服务提供商(“电信公司”或“tsp”)、物联网服务提供商、云服务提供商(csp)、企业实体或任何其他数量的实体提供边缘计算系统的实现。诸如当进行编排以满足服务目标时,可以动态地提供边缘计算系统的各种实现方式和配置。
169.与本文提供的示例一致,客户端计算节点可以被具体化为任何类型的端点组件、设备、装置或能够作为数据的生产者或消费者进行通信的其他事物。进一步地,如边缘计算系统中所使用的标签“节点”或“设备”不一定意指此类节点或设备以客户端或代理/仆从/跟随者角色操作;相反,边缘计算系统中的节点或设备中的任一者指代包括分立的和/或连接的硬件或软件配置以促进和/或使用边缘云1110的各个实体、节点或子系统。
170.由此,边缘云1110由网络层1210-1230之间的边缘网关节点、边缘聚合节点或其他边缘计算节点操作并在网络层1210-1230之间的边缘网关节点、边缘聚合节点或其他边缘计算节点内被操作的网络组件和功能特征形成。因此,边缘云1110可被具体化为提供边缘计算和/或存储资源的任何类型的网络,这些边缘计算和/或存储资源被定位成接近具有无线电接入网络(ran)能力的端点设备(例如,移动计算设备、iot设备、智能设备等),这在本文中进行讨论。换言之,边缘云1110可被预想为连接端点设备和传统网络接入点、同时还提
供存储和/或计算能力的“边缘”,这些传统网络接入点充当进入到包括移动运营商网络(例如,全球移动通信系统(gsm)网络、长期演进(lte)网络、5g/6g网络等)的服务提供商核心网络中的入口点。其他类型和形式的网络接入(例如,wi-fi、长程无线、包括光学网络的有线网络)也可替代此类3gpp运营商网络被利用或与此类3gpp运营商网络组合来利用。
171.边缘云1110的网络组件可以是服务器、多租户服务器、装置计算设备和/或任何其他类型的计算设备。例如,边缘云1110可以包括包含壳体、底盘、机箱或外壳的自包含电子设备的装置计算设备。在一些情况下,可以针对便携性来确定壳体尺寸,以使得其可由人类携载和/或被运输。示例壳体可包括形成一个或多个外表面的材料,该一个或多个外表面部分地或完整地保护装置的内容物,其中,保护可包括天气保护、危险环境保护(例如,emi、振动、极端温度)和/或使得能够浸入水中。示例壳体可包括用于为固定和/或便携式实现方式提供功率的功率电路系统,诸如ac功率输入、dc功率输入、(多个)ac/dc或dc/ac转换器、功率调节器、变压器、充电电路、电池、有线输入和/或无线功率输入。示例壳体和/或其表面可包括或连接至安装硬件,以实现到诸如建筑物、电信结构(例如,杆、天线结构等)和/或机架(例如,服务器机架、刀片支架等)之类的结构的附接。示例壳体和/或其表面可支持一个或多个传感器(例如,温度传感器、振动传感器、光传感器、声学传感器、电容传感器、接近度传感器等)。一个或多个此类传感器可被包含在装置的表面中、由装置的表面携载、或以其他方式被嵌入在装置的表面中和/或被安装至装置的表面。示例壳体和/或其表面可支持机械连接,诸如推进硬件(例如,轮子、螺旋桨等)和/或铰接硬件(例如,机械臂、可枢转附件等)。在一些情况下,传感器可包括任何类型的输入设备,诸如用户接口硬件(例如,按键、开关、拨号盘、滑块等)。在一些情况下,示例壳体可包括包含在其中、由其携载、嵌入其中和/或附接于此的输出设备。输出设备可包括显示器、触摸屏、灯、led、扬声器、i/o端口(例如,usb)等。在一些情况下,边缘设备是为特定目的而被呈现在网络中、但是可具有可用于其他目的的处理和/或其他能力的设备(例如,红绿灯)。此类边缘设备可以独立于其他联网设备,并且设置有具有适合其主要目的的形状因子的壳体;但对于不干扰其主要任务的其他计算任务,它仍然是可用的。边缘设备包括物联网设备。装置计算设备可包括用于管理诸如设备温度、振动、资源利用率、更新、功率问题、物理和网络安全性之类的本地问题的硬件和软件组件。结合图14描述了用于实现装置计算设备的示例硬件。边缘云1110还可以包括一个或多个服务器和/或一个或多个多租户服务器。此类服务器可包括操作系统和虚拟计算环境。虚拟计算环境可包括管理(生成、部署、损毁等)一个或多个虚拟机、一个或多个容器等的管理程序。此类虚拟计算环境提供其中一个或多个应用和/或其他软件、代码或脚本可在与一个或多个其他应用、软件、代码或脚本隔离的同时执行的执行环境。
172.在图13中,(以移动设备、计算机、自主交通工具、业务计算装备、工业处理装备的形式的)各种客户端端点1310交换特定于端点网络聚合类型的请求和响应。例如,客户端端点1310可以通过借助于内部网络系统1332交换请求和响应1322,经由有线宽带网络获得网络接入。一些客户端端点1310(诸如移动计算设备)可以通过借助于接入点(例如,蜂窝网络塔)1334交换请求和响应1324,经由无线宽带网络获得网络接入。一些客户端端点1310(诸如自主交通工具)可通过街道定位网络系统1336,经由无线机载网络获得请求和响应1326的网络接入。然而,无论网络接入的类型如何,tsp可以在边缘云1110内部署聚合点1342、1344来聚合通信量和请求。因此,在边缘云1110内,tsp可以(诸如在边缘聚合节点1340处)
部署各种计算和存储资源以提供请求的内容。边缘聚合节点1340和边缘云1110的其他系统被连接至云或数据中心1360,该云或数据中心1360使用回程网络1350来满足来自云/数据中心对网站、应用、数据库服务器等的更高等待时间请求。边缘聚合节点1340和聚合点1342、1344的附加或合并的实例(包括部署在单个服务器框架上的那些实例)也可以存在于边缘云1110或tsp基础设施的其他区域内。
173.图14图示根据各实施例的计算平台1400(也被称为“系统1400”、“设备1400”、“装置1400”等等)的示例。在各实施例中,计算平台1400可用本公开通篇描述的时间敏感联网(tsn)功能实现或可用于实现本公开通篇描述的时间敏感联网(tsn)功能。在一些实施例中,例如,计算平台1400的网络接口控制器(nic)1416可以分别用图1、图2、图4和图6的nic 100、200、400和/或600的一些或全部tsn功能来实现。
174.在各实施例中,平台1400可以适合用作本文中关于本文示出和描述的任何其他附图讨论的的任何其他元件/设备。平台1400还可被实现在服务器计算机系统或本文中所讨论的某个其他元件、设备或系统中,或者被实现为服务器计算机系统或本文中所讨论的某个其他元件、设备或系统。平台1400可包括示例中示出的组件的任何组合。平台1400的组件可被实现为集成电路(ic)、集成电路的部分,分立电子器件,或者在计算机平台1400中适配的其他模块、逻辑、硬件、软件、固件或其组合,或者被实现为以其他方式结合在更大的系统的机架内的组件。图14的示例旨在示出计算机平台1400的组件的高级视图。然而,可省略所示出的组件中的一些组件,可存在附加的组件,并且所示出的组件的不同布置可在其他实现方式中发生。
175.平台1400包括处理器电路系统1402。处理器电路系统1402包括电路系统,诸如但不限于一个或多个处理器核以及以下各项中的一个或多个:高速缓存存储器、低压差电压调节器(ldo)、中断控制器、串行接口(诸如spi、i2c或通用可编程串行接口电路)、实时时钟(rtc)、定时器-计数器(包括间隔定时器和看门狗定时器)、通用i/o、存储器卡控制器(诸如安全数字/多媒体卡(sd/mmc)或类似物)、接口、移动产业处理器接口(mipi)接口、以及联合测试接入小组(jtag)测试接入端口。在一些实现方式中,处理器电路系统1402可包括一个或多个硬件加速器,这一个或多个硬件加速器可以是微处理器、可编程处理设备(例如,fpga、asic)等等。一个或多个硬件加速器可包括例如计算机视觉和/或深度学习加速器。在一些实现方式中,处理器电路系统1402可包括片上存储器电路系统,该片上存储器电路系统可包括任何合适的易失性和/或非易失性存储器,诸如dram、sram、eprom、eeprom、闪存存储器、固态存储器、和/或诸如本文中所讨论的那些存储器设备技术之类的任何其他类型的存储器设备技术。
176.处理器电路系统1402的(多个)处理器可以包括例如一个或多个处理器核(cpu)、应用处理器、gpu、risc处理器、acorn risc机器(arm)处理器、cisc处理器、一个或多个dsp、一个或多个fpga、一个或多个pld、一个或多个asic、一个或多个基带处理器、一个或多个射频集成电路(rfic)、一个或多个微处理器或控制器,或其任何合适的组合。处理器电路系统1402的处理器(或核)可与存储器/存储耦合或者可包括存储器/存储,并且可被配置成用于执行存储器/存储中所存储的指令以使得各种应用或操作系统能够在平台1400上运行。在这些实施例中,处理器电路系统1402的处理器(或核)被配置成用于操作应用软件以向平台1400的用户提供特定服务。在一些实施例中,处理器电路系统1402可以是用于根据本文中
的各实施例进行操作的专用处理器/控制器。
177.作为示例,处理器电路系统1402可包括可从加利福尼亚州圣克拉拉市的公司获得的基于架构酷睿
tm
(core
tm
)的处理器,诸如基于i3、i5、i7和i9的处理器;基于微控制器的处理器,诸如夸克
tm
(quark
tm
)、凌动
tm
(atom
tm
)、或其他基于mcu的处理器;(多个)处理器;(多个)处理器、(多个)处理器、或另一此类处理器。然而,可使用任何数量的其他处理器,诸如以下各项中的一项或多项:超微半导体公司(amd)架构,诸如,(多个)或处理器、加速处理单元(apu)、mxgpu、(多个)处理器等等;来自处理器等等;来自公司的(多个)a5-a12和/或s1-s4处理器,来自技术公司的(多个)骁龙
tm
(snapdragon
tm
)或centriq
tm
处理器,的(多个)开放多媒体应用平台(omap)
tm
处理器;来自mips技术公司的基于mips的设计,诸如,mips勇士m类(warrior m-class)、勇士i类(warrior i-class)和勇士p类(p-class)处理器;许可自arm控股有限公司的基于arm的设计,诸如,arm cortex-a、cortex-r和cortex-m族处理器;由cavium
tm
公司提供的等等。在一些实现方式中,处理器电路系统1402可以是片上系统(soc)、封装中系统(sip)、多芯片封装等等的部分,其中处理器电路系统1402和其他组件被形成到单个集成电路或单个封装中,诸如来自其他组件被形成到单个集成电路或单个封装中,诸如来自公司的爱迪生
tm
(edison
tm
)或伽利略
tm
(galileo
tm
)soc板。处理器电路系统1402的其他示例在本公开中的其他地方被提及。
178.另外或替代地,处理器电路系统1402可包括诸如但不限于以下各项的电路系统:一个或多个fpd,诸如fpga等等;pld,诸如cpld、hcpld等等;asic,诸如结构化asic等等;psoc;等等。在此类实施例中,处理器电路系统1402的电路系统可包括逻辑块或逻辑结构以及其他互连的资源,逻辑块或逻辑结构以及其他互连的资源可被编程为执行各种功能,诸如本文中所讨论的各实施例的过程、方法、功能等。在此类实施例中,处理器电路系统1402的电路系统可包括用于将逻辑块、逻辑结构、数据等存储在lut等等中的存储器单元(例如,eprom、eeprom、闪存、静态存储器(例如,sram、反熔丝等)。
179.处理器电路系统1402可通过互连1406(例如,总线)来与系统存储器电路系统1404通信。可使用任何数量的存储器设备来提供给定量的系统存储器。作为示例,存储器电路系统1404可以是根据联合电子器件工程委员会(jedec)设计的随机存取存储器(ram)、动态ram(dram)、和/或同步dram(sdram),该jedec设计诸如,ddr或移动ddr标准(例如,lpddr、lpddr2、lpddr3或lpddr4)。存储器电路系统1404还可包括非易失性存储器(nvm),诸如高速电可擦除存储器(统称为“闪存存储器”)、相变ram(pram)、电阻存储器(诸如,磁阻随机存取存储器(mram))等,并且可包含来自和的三维(3d)交叉点(xpoint)。存储器电路系统1404还可以包括持久性存储设备,其可以是任何类型的暂时的和/或持久性的存储,包括但不限于,非易失性存储器、光存储、磁存储和/或固态大容量存储等等。
180.存储器电路系统1404的各个存储器设备可被实现为焊入式封装的集成电路、插口式存储器模块、以及插入式存储器卡。存储器电路系统1404可被实现为任何数量的不同封装类型,诸如单管芯封装(sdp)、双管芯封装(ddp)或四管芯封装(q17p)。在一些示例中,这
些设备可以直接焊接到主板上,以提供薄型解决方案,而在其他示例中,设备被配置为一个或多个存储器模块,这一个或多个存储器模块进而通过给定的连接器耦合至主板。可使用任何数量的其他存储器实现方式,诸如其他类型的存储器模块,例如,不同种类的双列直插存储器模块(dimm),包括但不限于microdimm(微dimm)或minidimm(迷你dimm)。在实施例中,存储器电路系统1404可与处理器电路系统1402被设置在同一管芯或封装(例如,同一soc、同一sip、或与处理器电路系统1402被焊接在同一mcp上)上或者同一管芯或封装中。
181.为了提供对信息(诸如数据、应用、操作系统(os)等等)的持久性存储,存储电路系统1408也可经由互连1406耦合至处理器电路系统1402。在示例中,存储电路系统1408可经由固态盘驱动器(ssdd)来实现。可用于存储电路系统1408的其他设备包括闪存卡(诸如sd卡、microsd卡、xd图片卡,等等)和usb闪存驱动器。在低功率实现方式中,存储电路系统1408可以是与处理器电路系统1402相关联的管芯上存储器或寄存器。然而,在一些示例中,存储电路系统1408可使用微硬盘驱动器(hdd)来实现。进一步地,除所描述的技术之外或替代所描述的技术,可将任何数量的新技术用于存储电路系统1408,这些新技术诸如阻变存储器、相变存储器、全息存储器或化学存储器,等等。
182.存储电路系统1408存储用于实现本文中描述的技术的软件、固件或硬件命令形式的计算逻辑1483(或“模块1483”)。可采用计算逻辑1483来存储计算机程序或用于创建计算机程序的数据的工作副本和/或永久副本,以用于平台1400的各组件(例如,驱动器等)、平台1400的操作系统、和/或一个或多个应用的操作,以用于执行本文中讨论的实施例。计算逻辑1483可作为指令1482或用于创建指令1482的数据被存储或被加载到存储器电路系统1404中,用于由处理器电路系统1402执行以提供本文中所描述的功能。各种元件可由受处理器电路系统1402支持的汇编器指令或可被编译成此类指令(例如,指令1470或用于创建指令1470的数据)来实现。编程指令的永久副本可在工厂中或在现场通过例如分发介质(未示出)、通过通信接口(例如,从分发服务器(未示出))、和/或空中下载(ota)被置于存储电路系统1408的持久性存储设备中。
183.在示例中,经由图14的存储器电路系统1404和/或存储电路系统1408提供的指令1482被具体化为包括程序代码、计算机程序产品或用于创建计算机程序的数据一个或多个非瞬态计算机可读存储介质(参见例如,ntcrsm 1460),其中计算机程序或数据用于指引平台1400的处理器电路系统1402在平台1400中执行电子操作和/或执行特定的动作序列或动作流,例如,如参考先前所描绘的操作和功能的(多个)流程图和(多个)框图所描述的。处理器电路系统1402通过互连1406来访问一个或多个非瞬态计算机可读存储介质。
184.在替代实施例中,可将编程指令(或用于创建指令的数据)设置在多个ntcrsm 1460上。在替代实施例中,可将编程指令(或用于创建指令的数据)设置在计算机可读瞬态存储介质(诸如信号)上。可使用传输介质,经由网络接口设备,利用多种传输协议中的任何一种协议(例如,http),进一步通过通信网络来传送或接收由机器可读介质具体化的指令。可以利用一种或多种计算机可用或计算机可读介质的任何组合。该计算机可用或计算机可读介质例如可以是但不限于一个或多个电子、磁、光、电磁、红外或半导体系统、装置、设备或传播介质。例如,ntcrsm 1460可由针对存储电路系统1408和/或存储器电路系统1404所描述的设备来具体化。计算机可读介质的更具体的示例(非排他性列表)将包括下述项:具有一条或多条线的电连接件、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器
(rom)、可擦除可编程只读存储器(eprom或闪存)、光纤、便携式压缩盘只读存储器(cd-rom)、光存储设备、和/或光盘、诸如支持互连网或内联网的传输介质之类的传输介质、磁存储设备、或任何数量的其他硬件设备。注意,计算机可用或计算机可读介质可甚至是其上打印有程序(或用于创建程序的数据)的纸张或另一合适的介质,因为程序(或用于创建程序的数据)可经由例如对纸张或其他介质的光学扫描而被电子地捕获,然后如有必要被编译、解释或以其他方式适当进行处理,然后被存储在计算机存储器中(暂存(stage)或不暂存在一个或多个中间存储介质中)。在本文档的上下文中,计算机可用或计算机可读介质可以是可以包含、存储、传达、传播、或传输程序(或用于创建程序的数据)以供指令执行系统、装置或设备使用或结合指令执行系统、装置或设备一起使用的任何介质。计算机可用介质可包括传播的数据信号以及随其体现在基带中或作为载波的一部分的计算机可用程序代码(或用于创建程序代码的数据)。可使用任何适当的介质来传送计算机可用程序代码(或用于创建程序的数据),合适的介质包括但不限于无线、线缆、光纤电缆、rf等。
185.在各实施例中,本文中所描述的程序代码(或用于创建程序代码的数据)能以压缩格式、加密格式、分段格式、封装格式等中的一种或多种格式来存储。本文中描述的程序代码(或用于创建程序代码的数据)可能要求安装、修改、适配、更新、组合、补充、配置、解密、解压缩、拆包、分发、重新分配等中的一项或多项,以使得它们可直接由计算设备和/或其他机器读取和/或执行。例如,程序代码(或用于创建程序代码的数据)可被存储在多个部分中,这些部分单独地被压缩、被加密并被存储在分开的计算设备上,其中,这些部分在被解密、被解压缩和被组合时形成实现诸如本文中所描述的程序代码(用于创建程序代码的数据)的一组可执行指令。在另一示例中,程序代码(或用于创建程序代码的数据)能以它们可被计算机读取的状态存储,但是要求添加库(例如,动态链接库)、软件开发工具包(sdk)、应用编程接口(api)等,以便在特定的计算设备或其他设备上执行指令。在另一示例中,在可整体地或部分地执行/使用程序代码(或用于创建程序代码的数据)之前,可能需要配置程序代码(或用于创建程序代码的数据)(例如,存储设置、输入数据、记录网络地址等)。在该示例中,程序代码(或用于创建程序代码的数据)可被拆包,被配置成用于恰当的执行,并且被存储在第一位置,其中配置指令位于区别于第一位置的第二位置。配置指令可由动作、触发器、或不与实现所公开的技术的指令共同位于存储或执行位置的指令发起。相应地,所公开的程序代码(或用于创建程序代码的数据)旨在包含此类机器可读指令和/或(多个)程序(或用于创建此类机器可读指令和/或程序的数据),而不管机器可读指令和/或(多个)程序在被存储或以其他方式处于静态或在运送中时的特定格式或状态如何。
186.用于执行本公开的操作(例如,先前所讨论的计算逻辑1483、指令1482、1470)的计算机程序代码能以一种或多种编程语言的任何组合来编写,这些编程语言包括:面向对象的编程语言,诸如python、ruby、scala、smalltalk、java
tm
、c++、c#等等;过程编程语言,诸如,“c”编程语言、go(或“golang”)编程语言等等;脚本语言,诸如,javascript、服务器侧javascript(ssjs)、jquery、php、pearl、python、ruby on rails、加速移动页脚本(ampscript)、mustache模板语言、handlebars模板语言、guide模板语言(gtl)、php、java和/或java服务器页面(jsp)、node.js、asp.net、jamscript等等;标记语言,诸如,超文本标记语言(html)、可扩展标记语言(xml)、java脚本对象简谱(json)、层叠样式表
(css)、java服务器页面(jsp)、messagepack
tm
、thrift、抽象语法标记一(asn.l)、协议缓冲(protobuf)等等;一些其他合适的编程语言,包括专有编程语言和/或开发工具或任何其他语言工具。用于执行本公开的操作的计算机程序代码还能以本文中所讨论的编程语言的任何组合来编写。程序代码可以整体地在系统1400上执行、部分地在系统1400上执行、作为独立的软件包执行、部分在系统1400上并且部分在远程计算机上执行或者整体地在远程计算机或服务器上执行。在后一场景中,可通过任何类型的网络(包括lan或wan)将远程计算机连接至系统1400,或可(例如,通过使用互联网服务提供商的互联网)进行到外部计算机的连接。
187.在示例中,处理器电路系统1402上的指令1470(单独地,或与存储在计算机可读介质中的指令1482和/或逻辑/模块1483组合地)可配置受信任执行环境(tee)1490的执行或操作。tee 1490操作为可由处理器电路系统1402访问的受保护区域以实现对数据的安全访问以及指令的安全执行。在一些实施例中,tee 1490可以是与系统1400的其他组件分开的物理硬件设备,诸如安全嵌入式控制器、专用soc、或防篡改小芯片、或具有嵌入式处理设备和存储器设备的微控制器。此类实施例的示例包括符合台式和移动架构硬件(dash)的网络接口卡(nic);管理/可管理性引擎、聚合安全引擎(cse)或聚合安全管理/可管理性引擎(csme)、由提供的受信任执行引擎(txe),其中的每一个都可结合活跃管理技术(amt)和/或vpro
tm
技术来操作;平台安全协处理器(psp)、具有dash可管理型的高级a系列加速处理单元(apu)、安全飞地协处理器;crypto
ꢀꢀ
4807、4808、4809和/或4765密码协处理器、具有智能平台管理接口(ipmi)的基板管理控制器(bmc),戴尔
tm
远程辅助卡(drac ii)、集成式戴尔
tm
远程辅助卡(idrac),等等。
188.在其他实施例中,tee 1490可实现为安全飞地,这些安全飞地是系统1400的处理器和/或存储器/存储电路系统内的代码和/或数据的隔离区域。仅在安全飞地内被执行的代码可访问同一安全飞地内的数据,并且该安全飞地仅可使用安全应用(其可由应用处理器或防篡改微控制器实现)访问。例如,可以通过使用软件防护扩展(sgx)或硬件安全扩展、由绿洲实验室
tm
提供的基石飞地来提供tee 1490的各种实现方式以及处理器电路系统1402或存储器电路系统1404和/或存储电路系统1408中伴随的安全区域。安全强化、硬件信任根、和受信任或受保护操作的其他方面可以通过tee 1490和处理器电路系统1402在设备1400中实现。
189.在一些实施例中,存储器电路系统1404和/或存储电路系统1408可被划分为隔离的用户空间实例(诸如容器、分区、虚拟环境(ve)等)。隔离的用户空间实例可以使用合适的操作系统级虚拟化技术来实现,诸如容器、容器、容器和/或区域、虚拟私有服务器、dragonfly 虚拟核和/或监狱(jail),chroot监狱和/或类似物。虚拟机器还可用于一些实现方式中。在一些实施例中,存储器电路系统1404和/或存储电路系统1408可被划分为一个或多个受信任存储器区域,用于存储tee1490的应用或软件模块。
190.虽然指令1482被示出为存储器电路系统1404中所包括的代码块并且计算逻辑1483被示出为存储电路系统1408中的代码块,但应当理解,这些代码块中的任何代码块能以硬连线电路来代替,例如,被构建成fpga、asic或某个其他合适的电路系统。例如,在处理器电路系统1402包括(例如,基于fpga的)硬件加速器以及处理器核的情况下,硬件加速器(例如,fpga单元)可被预配置有前述的计算逻辑(例如,预配置有适当的位流)以执行先前所讨论的功能中的一些或全部(代替采用要由(多个)处理器核执行的编程指令)。
191.存储器电路系统1404和/或存储电路系统1408可存储操作系统(os)的程序代码,该操作系统可以是通用os或为计算平台1400专门编写的并被定制成用于计算平台1400的os。例如,os可以是unix或类unix os(诸如例如,由红帽企业提供的linux)、由提供的windows 10
tm
、由、由提供的macos,等等。在另一示例中,os可以是移动os,诸如,由如,由提供的由提供的由提供的windows10由kaios技术公司提供的kaios,等等。在另一示例中,os可以是实时os(rtos),诸如,由apache软件基金会提供的apache mynewt、由提供的windows 10 for 由公司提供的微控制器操作系统(“microc/os”或“μc/os”)、freertos、由提供的由sysgo 提供的pikeos、由提供的android 由黑莓公司提供的rtos、或任何其他合适的rtos,诸如,本文中所讨论的那些rtos。
192.os可包括操作以控制特定设备的一个或多个驱动器,这些特定设备被嵌入在平台1400中、被附连至平台1400、或以其他方式与平台1400通信地耦合。驱动器可包括允许平台的其他组件与各种i/o设备交互或控制各种i/o设备的各个驱动器,这些i/o设备可存在于平台1400内或连接至平台1400。例如,驱动器可包括用于控制和允许对显示设备的访问的显示驱动器、用于控制和允许对平台1400的触摸屏接口的访问的触摸屏驱动器、用于获取传感器电路系统1421的传感器读数并且控制和允许对传感器电路系统1421的访问的传感器驱动器、用于获取致动器1422的致动器位置和/或控制和允许对致动器1422的访问的致动器驱动器、用于控制和允许对嵌入式图像捕捉设备的访问的相机驱动器、用于控制和允许对一个或多个音频设备的访问的音频驱动器。操作系统还可包括为一个或多个应用提供程序代码和/或软件组件以获得并使用来自安全执行环境(see)、受信任执行环境(tee)、和/或平台1400的管理引擎(未示出)的数据的一个或多个库、驱动器、api、固件、中间件、软件glue等。
193.组件可通过总线1406进行通信。ix 1406可包括任何数量的技术,包括isa、扩展isa、i2c、spi、点对点接口、电源管理总线(pmbus)、pci、pcie、pcix、upi、加速器链路、cxl、capi、opencapi、qpi、upi、opa ix、rapidio
tm
系统ix、ccix、gen-z联合体ix、超级传输互连、提供的nvlink、时间触发协议(ttp)系统、flexray系统和/或任何数量的其他ix技术。ix 1406可以是例如在基于soc的系统中使用的专属总线。
194.互连1406将处理器电路系统1402耦合至通信电路系统1409以用于与其他设备通信。通信电路系统1409是硬件元件或硬件元件的集合,用于通过一个或多个网络(例如,云
1401)通信和/或与其他设备(例如,网格设备/雾1464)通信。通信电路系统1409包括基带电路系统1410(或“调制解调器1410”)和射频(rf)电路系统1411和1412。
195.基带电路系统1410包括用于执行各种协议和无线电控制功能的一个或多个处理设备(例如,基带处理器)。基带电路系统1410可与平台1400的应用电路系统(例如,处理器电路系统1402、存储器电路系统1404、和/或存储电路系统1408的组合)对接以用于生成并处理基带信号并且用于控制rf电路系统1411或1412的操作。基带电路系统1410可处置实现经由rf电路系统1411或1412与一个或多个无线电网络的通信的各种无线电控制功能。基带电路系统1410可包括电路系统,该电路系统诸如但不限于一个或多个单核或多核处理器(例如,一个或多个基带处理器)或控制逻辑,用于处理从rf电路系统1411和/或1412的接收信号路径接收的基带信号并生成要经由传送信号路径被提供至rf电路系统1411或1412的基带信号。在各实施例中,基带电路系统1410可实现用于管理基带电路系统1410的资源、调度任务等的rtos。rtos的示例可包括由提供的嵌入式操作系统(ose)
tm
,由,由提供的nucleus rtos
tm
,由提供的多功能实时可执行程序(vrtx)、由提供的threadx
tm
、freertos、由、freertos、由提供的rex os、由(open kernel(ok))提供的okl4或任何其他合适的rtos,诸如,本文中讨论的那些。
196.虽然并未由图14示出,但在一个实施例中,基带电路系统1410包括用于操作一个或多个无线通信协议的(多个)单独的处理设备(例如,“多协议基带处理器”或“协议处理电路系统”)和用于实现phy功能的(多个)单独的处理设备。在该实施例中,协议处理电路系统操作或实现一个或多个无线通信协议的各种协议层/实体。在第一示例中,当通信电路系统1409是蜂窝射频通信系统(诸如毫米波(mmwave)通信电路系统或某种其他合适的蜂窝通信电路系统)时,协议处理电路系统可操作lte协议实体和/或5g/nr协议实体。在第一示例中,协议处理电路系统1402将操作mac、rlc、pdcp、sdap、rrc和nas功能。在第二示例中,当通信电路系统1409是wifi通信系统时,协议处理电路系统可操作一个或多个基于ieee的协议。在第二示例中,协议处理电路系统将操作wifi mac和llc功能。协议处理电路系统可包括用于存储针对操作协议功能的程序代码和数据的一个或多个存储器结构(未示出)以及用于执行该程序代码并使用该数据执行各种操作的一个或多个处理核(未示出)。协议处理电路系统提供针对基带电路系统1410和/或rf电路系统1411和1412的控制功能。基带电路系统1410还可支持针对多于一个无线协议的无线电通信。
197.继续前述实施例,基带电路系统1410包括用于实现phy的(多个)单独的处理设备,该phy包括harq功能、加扰和/或解扰、译码(编码)和/或解码、层映射和/或解映射、调制符号映射、所接收符号和/或位度量确定、多天线端口预编码和/或解码(其可包括时-空、空-频或空间译码中的一者或多者)、参考信号生成和/或检测、前置序列生成和/或解码、同步序列生成和/或检测、控制信道信号盲解码、射频移位以及其他相关功能等。调制/解调功能可包括快速傅里叶变换(fft)、预编码、星座映射/解映射功能。译码(编码)/解码功能可包括卷积译码、咬尾卷积译码、turbo译码、viterbi译码、或低密度奇偶校验(ldpc)译码。调制/解调和编码器/解码器功能的实施例不限于这些示例,并且在其他实施例中可包括其他合适的功能。
198.通信电路系统1409还包括用于实现通过非固态介质使用经调制的电磁辐射而与无线网络的通信的rf电路系统1411和1412。rf电路系统1411和1412中的每一个都包括接收信号路径,该接收信号路径可包括用于将模拟rf信号(例如,现有的或接收到的经调制的波形)转换为要提供给基带电路系统1410的数字基带信号的电路系统。rf电路系统1411和1412中的每一个还包括传送信号路径,该传送信号路径可包括被配置成用于转换由基带电路系统1410提供的数字基带信号以被转换为将经由天线阵列被放大和传送的模拟rf信号(例如,经调制的波形),天线阵列包括一个或多个天线元件(未示出)。天线阵列可以是多个微带天线或制造在一个或多个印刷电路板的表面上的印刷天线。天线阵列按各种形状形成为金属箔贴片(例如,贴片天线),并且可使用金属传输线等与rf电路系统1411或1412耦合。
199.rf电路系统1411(也被称为“网格收发器”)用于与其他网格或雾设备1464通信。网格收发器1411可使用任何数量的频率和协议,诸如ieee802.15.4标准下的2.4ghz传输,使用如由特别兴趣小组定义的低能量(ble)标准、或标准,等等。为特定的无线通信协议配置的任何数量的rf电路系统1411可用于至网格设备1464的连接。例如,wlan单元可用于实现根据ieee 802.11标准的wifi
tm
通信。此外,例如根据蜂窝或其他无线广域协议的无线广域通信可经由wwan单元发生。
200.网格收发器1411可使用用于不同范围的通信的多种标准或无线电来进行通信。例如,平台1400可使用基于ble的或另一低功率无线电的本地收发器与靠近的/接近的(例如,在约10米内的)设备通信以节省功率。更远的(例如,在约50米内的)网格设备1464可通过zigbee或其他中间功率无线电而达到。这两种通信技术能以不同的功率水平通过单个无线电发生,或者可通过分开的收发器而发生,分开的收发器例如使用ble的本地收发器和分开的使用zigbee的网格收发器。
201.可包括rf电路系统1412(也被称为“无线网络收发器”、“云收发器”等等)以经由本地网络协议或广域网协议与云1401中的设备或服务通信。无线网络收发器1412包括一个或多个无线电以与云1401中的设备通信。云1401可与先前所讨论的云144相同或类似。无线网络收发器1412可以是遵循ieee802.15.4或ieee 802.15.4g标准等的lpwa收发器,诸如本文中所讨论的那些无线网络收发器。平台1400可使用由semtech和lora联盟开发的lorawan
tm
(长距离广域网)在广域上通信。本文中所描述的技术不限于这些技术,而是可与实现长距离、低带宽通信(诸如sigfox和其他技术)的任何数量的其他云收发器一起使用。进一步地,可使用其他通信技术,诸如在ieee1002.15.4e规范中描述的时分信道跳。
202.除了针对如本文中所描述的网格收发器1411和无线网络收发器1412而提及的系统之外,还可使用任何数量的其他无线电通信和协议。例如,无线电收发器1411和1412可包括使用扩展频谱(spa/sas)通信以实现高速通信的lte或其他蜂窝收发器。进一步地,可使用任何数量的其他协议,诸如用于中速通信和预设网络通信的网络。
203.收发器1411和1412可包括符合下列无线电通信技术和/或标准(包括但不限于本文中所讨论的那些)中的任何一个或多个无线电通信技术和/或标准和/或可根据其进行操作的无线电。
204.网络接口电路系统/控制器(nic)1416可被包括以使用标准网络接口协议提供至云1401或至其他设备(诸如,网格设备1464)的有线通信。标准网络接口协议可包括以太网、通过gre隧道的以太网、通过多协议标签交换(mpls)的以太网、通过usb的以太网,或者可基
于其他类型的网络协议,诸如控制器区域网络(can)、局部互连网络(lin)、设备网(devicenet)、控制网(controlnet)、数据高速公路+、profibus或profinet,等等。可使用物理连接、经由nic 1416提供去往/来自平台1400的网络连接性,物理连接可以是电气的(例如,“铜互连”)或光学的。物理连接还包括合适的输入连接器(例如,端口、插座、插槽等)和输出连接器(例如,插头、引脚等)。nic 1416可包括一个或多个专用处理器和/或fpga以使用前述网络接口协议中的一个或多个进行通信。在一些实现方式中,nic 1416可包括多个控制器以使用相同或不同的协议提供到其他网络的连接性。例如,平台1400可包括提供通过以太网到云的连接的第一nic 1416和提供通过另一类型的网络到其他设备的通信的第二nic 1416。
205.计算平台1400可以包括或被耦合到加速电路系统1462,该加速电路系统1462可以由一个或多个ai加速器、神经计算棒、神经形态硬件、fpga、gpu的布置、一个或多个soc、一个或多个cpu、一个或多个数字信号处理器、专用asic、或被设计用于完成一个或多个专有任务的其他形式的专用处理器或电路系统来具体化。这些任务可以包括ai处理(包括机器学习、训练、推断、和分类操作)、视觉数据处理、网络数据处理、对象检测、规则分析等。
206.互连1406可将处理器电路系统1402耦合至外部接口1418(也被称为“i/o接口电路系统”等等),该外部接口1418用于连接外部设备或子系统。外部设备尤其包括传感器电路系统1421、致动器1422、和定位电路系统1445。
207.传感器电路系统1421可包括其目的为检测其环境中的事件或其环境的改变并将关于检测到的事件的信息(传感器数据)发送到其他设备、模块、子系统等的设备、模块或子系统。此类传感器1421的示例尤其包括:惯性测量单元(imu),包括加速度计、陀螺仪、和/或磁力计;微机电系统(mems)或纳机电系统(nems),包括3轴加速度计、3轴陀螺仪和/或磁力计;液位传感器;流量传感器;温度传感器(例如,热敏电阻);压力传感器;气压传感器;重力仪;高度计;图像捕捉设备(例如,相机);光检测和测距(lidar)传感器;接近度传感器(例如,红外辐射检测器等等)、深度传感器、环境光传感器,超声波收发器;话筒;等等。
208.外部接口1418将平台1400连接至致动器1422,允许平台1400改变其状态、位置和/或取向,或者移动或控制机制或系统。致动器1422包括用于移动或控制机制或系统的电设备和/或机械设备,并且将能量(例如,电流或移动的空气和/或液体)转换为某个种类的运动。致动器1422可包括一个或多个电子(或电化学)设备,诸如,压电生物形态、固态致动器、固态继电器(ssr)、基于形状记忆合金的致动器、基于电活性聚合物的致动器、继电器驱动器集成电路(ic),等等致动器1422可包括一个或多个机电设备,诸如,气动致动器、液压致动器、机电开关(包括机电继电器(emr))、电动机(例如,dc电动机、步进电动机、伺服机构等)、轮、推进器、螺旋桨、爪、夹具、挂钩、可听语音生成器和/或其他类似的机电组件。平台1400可被配置成用于基于一个或多个捕捉到的事件和/或从服务提供商和/或各种客户端系统接收到的指令或控制信号来操作一个或多个致动器1422。
209.定位电路系统1445包括用于接收由全球导航卫星系统(gnss)的定位网络传送/广播的信号并对其进行解码。导航卫星星座(或gnss)的示例包括美国的全球定位系统(gps)、俄罗斯的全球导航系统(glonass)、欧盟的伽利略系统、中国的北斗导航卫星系统、区域导航系统或gnss增强系统(例如,利用印度星座(navic)、日本的准天顶卫星系统(qzss)、法国的多普勒轨道成像和卫星综合无线电定位(doris)等进行的导航)等等。定位电路系统1445
包括与定位网络(诸如导航卫星星座节点)的组件通信的各种硬件元件(例如,包括诸如交换机、滤波器、放大器、天线元件等等之类的用于促进ota通信的硬件设备)。在一些实施例中,定位电路系统1445可包括用于定位、导航和定时的微技术(micro-pnt)ic,其使用主定时时钟来执行位置跟踪/估计而无需gnss辅助。定位电路系统1445也可以是通信电路系统1409的部分或者与通信电路系统1409交互以与定位网络的节点和组件通信。定位电路系统1445还可向应用电路系统提供位置数据和/或时间数据,应用电路系统可使用该数据使操作与各种基础设施装备(例如,无线电基站)同步以用于逐向道路导航等等。当gnss信号不可用或当gnss定位精度对于特定应用或服务不足够时,可使用定位增强技术来向应用或服务提供增强的定位信息和数据。此类定位增强技术可以包括例如基于卫星的定位增强(例如,egnos)和/或基于地面的定位增强(例如,dgps)。
210.在一些实现方式中,定位电路系统1445是或包括ins,其是使用传感器电路系统1421(例如,诸如加速度计之类的运动传感器、诸如陀螺仪之类的旋转传感器、以及高度计、磁传感器和/或类似物)来连续计算(例如,使用航位推算、三角测量等)平台1400的定位、定向和/或速度(包括移动的方向和速度)而无需外部参考的系统或设备。
211.在一些示例中,各种i/o设备可存在于平台1400内或连接至平台1400,i/o设备是指图14中的输入设备电路系统1486和输出设备电路系统1484。输入设备电路系统1486和输出设备电路系统1484包括被设计成用于实现用户与平台1400的交互的一个或多个用户接口以及被设计成用于实现外围组件与平台1400的交互的外围组件接口。输入设备电路系统1486可包括用于接受输入的任何实体或虚拟装置,输入设备电路系统1486尤其包括一个或多个实体或虚拟按钮(例如,重置按钮)、物理键盘、小键盘、鼠标、触摸板、触摸屏、话筒、扫描仪、头戴式耳机,等等。
212.可包括输出设备电路系统1484,以示出信息或以其他方式传达信息,诸如传感器读数、(多个)致动器位置、或其他类似信息。可将数据和/或图形显示在输出设备电路系统1484的一个或多个用户接口组件上。输出设备电路系统1484可包括任何数量的音频或视觉显示器和/或音频或视觉显示器的任何组合,尤其包括具有从平台1400的操作生成或产生的字符、图形、多媒体对象等的输出的一个或多个简单的视觉输出/指示器(例如,二进制状态指示器(例如,发光二极管(led))和多字符视觉输出/或更复杂的输出,诸如,显示设备或触摸屏(例如,液晶显示器(lcd)、led显示器、量子点显示器、投影仪等)。输出设备电路系统1484还可包括扬声器或其他发声设备、(多个)打印机等等。在一些实施例中,传感器电路系统1421可被用作输入设备电路系统1486(例如,图像捕捉设备、运动捕捉设备等等),并且一个或多个致动器1422可被用作输出设备电路系统1484(例如,用于提供触觉反馈等的致动器)。在另一示例中,近场通信(nfc)电路系统可被包括以读取电子标签和/或与另一启用nfc的设备通信,该nfc电路系统包括与天线元件耦合的nfc控制器并且包括处理设备。外围组件接口可包括但不限于非易失性存储器端口、usb端口、音频插孔、电源接口等。
213.电池1424可耦合至平台1400来为平台1400供电,电池1424可在其中平台1400不处于固定位置的实施例中使用。电池1424可以是锂离子电池、铅酸汽车电池、金属-空气电池(诸如锌-空气电池、铝-空气电池、锂-空气电池)、锂聚合物电池,等等。在其中平台1400被安装在固定位置的实施例中,平台1400可具有耦合至电网的电源。在这些实施例中,平台1400可包括功率三通电路系统,该功率三通电路系统用于提供汲取自网络电缆的电功率以
使用单个电缆提供到平台1400的功率供给和数据连接性两者。
214.可在平台1400中包括pmic 1426来跟踪电池1424的充电状态(soch)并控制对平台1400的充电。pmic 1426可用于监测电池1424的其他参数(诸如电池1424的健康状态(soh)和功能状态(sof))以提供故障预测。pmic 1426可包括电压调节器、电涌保护器、功率警报检测电路系统。功率警报检测电路系统可检测掉电(欠压)和电涌(过压)状况中的一者或多者。pmic 1426可通过互连1406将关于电池1424的信息传达至处理器电路系统1402。pmic 1426还可包括允许处理器电路系统1402直接监测电池1424的电压或来自电池1424的电流的模数(adc)转换器。电池参数可用于确定平台1400可执行的动作,诸如传输频率、网格网络操作、感测频率,等等。作为示例,pmic 1426可以是电池监测集成电路,诸如来自线性技术公司(linear technologies)的ltc4020或ltc2990、来自亚利桑那州的凤凰城的安森美半导体公司(on semiconductor)的adt7488a、或来自德克萨斯州达拉斯的德州仪器公司的ucd90xxx族的ic。
215.功率块1428或耦合至电网的其他电源可与pmic 1426耦合以对电池1424充电。在一些示例中,功率块1428能以无线功率接收器来代替以例如通过平台1400中的环形天线来无线地获得功率。pmic 1426中可包括无线电池充电电路,诸如来自加利福尼亚州的苗比达市的线性技术公司的ltc4020芯片,等等。所选择的特定的充电电路取决于电池1424的尺寸,并因此取决于所要求的电流。可使用由无线充电联盟(airfuel alliance)颁布的airfuel标准、由无线电力协会(wireless power consortium)颁布的qi无线充电标准、或由无线电力联盟(alliance for wireless power)颁布的rezence充电标准等等来执行充电。示例
216.下文提供了本公开通篇中所描述的技术的说明性示例。这些技术的实施例可包括下文所描述的示例中的任何一个或多个示例及其任何组合。在一些实施例中,前述图中的一个或多个图中所阐述的系统或组件中的至少一个可以被配置成用于执行下面的示例中所阐述的一个或多个操作、技术、过程和/或方法。
217.示例1包括一种网络接口控制器,包括:多个分组传输队列,用于将多个数据分组排队以供传输,其中多个数据分组被分配到多个通信量类别;多个输入/输出(i/o)接口,用于从主机计算系统的存储器中检索多个数据分组,其中多个i/o接口中的每个i/o接口被分配到多个通信量类别中的一个或多个;调度器电路系统,用于选择要从存储器中检索的第一数据分组,其中第一数据分组将从多个数据分组中选择;直接存储器访问(dma)引擎电路系统,用于基于第一数据分组的相对应通信量类别来经由多个i/o接口中的一个i/o接口从存储器中检索第一数据分组,其中dma引擎电路系统用于将第一数据分组存储在多个分组传输队列中的相对应分组传输队列中;以及传输接口,用于在由调度器电路系统指示的相对应启动时间通过网络传输第一数据分组。
218.示例2包括示例1的网络接口控制器,其中多个i/o接口包括:用于快速通信量的第一i/o接口;以及用于最大努力通信量的第二i/o接口。
219.示例3包括示例2的网络接口控制器,进一步包括:与第一i/o接口相关联的第一读取请求队列,其中第一读取请求队列用于快速通信量;以及与第二i/o接口相关联的第二读取请求队列,其中第二读取请求队列用于最大努力通信量。
220.示例4包括示例1的网络接口控制器,其中用于选择要从存储器中检索的第一数据分组的调度器电路系统进一步用于:基于第一数据分组的相对应通信量类别来从多个数据分组中选择第一数据分组。
221.示例5包括示例4的网络接口控制器,其中用于基于与第一数据分组的相对应通信量类别来从多个数据分组中选择第一数据分组的调度器电路系统进一步用于:基于用于第一数据分组的相对应通信量类别的预取定时器来从多个数据分组中选择第一数据分组。
222.示例6包括示例5的网络接口控制器,其中调度器电路系统包括用于多个通信量类别的多个预取定时器。
223.示例7包括示例4的网络接口控制器,其中调度器电路系统包括映射寄存器,用于将多个虚拟局域网(vlan)映射到多个通信量类别,其中多个vlan被分配到多个分组传输队列。
224.示例8包括示例1的网络接口控制器,其中dma引擎电路系统包括:描述符dma引擎,用于检索与多个数据分组相对应的多个描述符;以及数据dma引擎,用于检索与多个描述符相对应的多个数据有效载荷。
225.示例9包括示例8的网络接口控制器,进一步包括通信量路由器,其中通信量路由器包括多个i/o接口,并且其中通信量路由器用于:通过与主机计算系统相关联的第一虚拟信道路由多个描述符,其中第一虚拟信道与最大努力通信量相对应;通过与主机计算系统相关联的第一虚拟信道路由多个数据有效载荷的第一子集,其中第一子集与最大努力通信量相对应;以及通过与主机计算系统相关联的第二虚拟信道路由多个数据有效载荷的第二子集,其中第二子集与快速通信量相对应。
226.示例10包括其上存储有指令的至少一种非瞬态机器可读存储介质,其中该指令当在网络接口控制器的电路系统上执行时,使电路系统用于:通过网络接口控制器的调度器电路系统选择要从主机计算系统的存储器中检索的第一数据分组,其中第一数据分组将从与网络接口控制器的多个分组传输队列相对应的多个数据分组中选择,其中该多个数据分组被分配到多个通信量类别;通过网络接口控制器的直接存储器访问(dma)引擎电路系统从存储器中检索第一数据分组,其中第一数据分组将基于第一数据分组的相对应通信量类别而经由网络接口控制器的多个输入/输出(i/o)接口中的一个i/o接口来检索,其中多个i/o接口中的每个i/o接口被分配到多个通信量类别中的一个或多个;通过dma引擎电路系统将第一数据分组存储在多个分组传输队列中相对应的分组传输队列中;以及在由调度器电路系统指示的相对应启动时间经由网络接口控制器的传输接口通过网络传输第一数据分组。
227.示例11包括示例10的存储介质,其中多个i/o接口包括:用于快速通信量的第一i/o接口;以及用于最大努力通信量的第二i/o接口。
228.示例12包括示例10的存储介质,其中使调度器电路系统用于选择要从存储器中检索的第一数据分组的指令进一步使调度器电路系统用于:基于第一数据分组的相对应通信量类别来从多个数据分组中选择第一数据分组。
229.示例13包括示例12的存储介质,其中使调度器电路系统用于基于第一数据分组的相对应通信量类别来从多个数据分组中选择第一数据分组的指令进一步使调度器电路系统用于:基于用于第一数据分组的相对应通信量类别的预取定时器来从多个数据分组中选
择第一数据分组。
230.示例14包括示例10的存储介质,其中指令进一步使电路系统用于:通过dma引擎电路系统的描述符dma引擎检索与多个数据分组相对应的多个描述符;以及通过dma引擎电路系统的数据dma引擎检索与多个描述符相对应的多个数据有效载荷。
231.示例15包括示例14的存储介质,其中指令进一步使电路系统用于:由网络接口控制器的通信量路由器,通过与主机计算系统相关联的第一虚拟信道路由多个描述符,其中第一虚拟信道与最大努力通信量相对应;由通信量路由器,通过与主机计算系统相关联的第一虚拟信道路由多个数据有效载荷的第一子集,其中第一子集与最大努力通信量相对应;以及由通信量路由器,通过与主机计算系统相关联的第二虚拟信道路由多个数据有效载荷的第二子集,其中第二子集与快速通信量相对应。
232.示例16包括由网络接口控制器执行的一种方法,包括:通过网络接口控制器的调度器电路系统选择要从主机计算系统的存储器中检索的第一数据分组,其中第一数据分组将从与网络接口控制器的多个分组传输队列相对应的多个数据分组中选择,其中该多个数据分组被分配到多个通信量类别;通过网络接口控制器的直接存储器访问(dma)引擎电路系统从存储器中检索第一数据分组,其中第一数据分组将基于第一数据分组的相对应通信量类别而经由网络接口控制器的多个输入/输出(i/o)接口中的一个i/o接口来检索,其中多个i/o接口中的每个i/o接口被分配到多个通信量类别中的一个或多个;通过dma引擎电路系统将第一数据分组存储在多个分组传输队列中相对应的分组传输队列中;以及在由调度器电路系统指示的相对应启动时间经由网络接口控制器的传输接口通过网络传输第一数据分组。
233.示例17包括示例16的方法,其中多个i/o接口包括:用于快速通信量的第一i/o接口;以及用于最大努力通信量的第二i/o接口。
234.示例18包括示例16的方法,其中由调度器电路系统选择要从存储器中检索的第一数据分组包括:基于第一数据分组的相对应通信量类别来从多个数据分组中选择第一数据分组。
235.示例19包括示例18的方法,其中基于与第一数据分组相对应的通信量类别来从多个数据分组中选择第一数据分组包括:基于用于第一数据分组的相对应通信量类别的预取定时器来从多个数据分组中选择第一数据分组。
236.示例20包括示例16的方法,进一步包括:通过dma引擎电路系统的描述符dma引擎检索与多个数据分组相对应的多个描述符;以及通过dma引擎电路系统的数据dma引擎检索与多个描述符相对应的多个数据有效载荷。
237.示例21包括示例20的方法,进一步包括:由网络接口控制器的通信量路由器,通过与主机计算系统相关联的第一虚拟信道路由多个描述符,其中第一虚拟信道与最大努力通信量相对应;由通信量路由器,通过与主机计算系统相关联的第一虚拟信道路由多个数据有效载荷的第一子集,其中第一子集与最大努力通信量相对应;以及由通信量路由器,通过与主机计算系统相关联的第二虚拟信道路由多个数据有效载荷的第二子集,其中第二子集与快速通信量相对应。
238.示例22包括一种用于通过网络传输多个数据分组的计算设备,包括:主机处理器;存储器;以及网络接口控制器,包括:多个分组传输队列,用于将多个数据分组排队以供传
输,其中多个数据分组被分配到多个通信量类别;多个输入/输出(i/o)接口,用于从存储器中检索多个数据分组,其中多个i/o接口中的每个i/o接口被分配到多个通信量类别中的一个或多个;调度器电路系统,用于选择要从存储器中检索的第一数据分组,其中第一数据分组将从多个数据分组中选择;直接存储器访问(dma)引擎电路系统,用于基于第一数据分组的相对应通信量类别来经由多个i/o接口中的一个i/o接口从存储器中检索第一数据分组,其中dma引擎电路系统用于将第一数据分组存储在多个分组传输队列中相对应的分组传输队列中;以及传输接口,用于在由调度器电路系统指示的相对应启动时间通过网络传输第一数据分组。
239.示例23包括示例22的计算设备,其中多个i/o接口包括:用于快速通信量的第一i/o接口;以及用于最大努力通信量的第二i/o接口。
240.示例24包括示例23的计算设备,其中网络接口控制器进一步包括:与第一i/o接口相关联的第一读取请求队列,其中第一读取请求队列用于快速通信量;以及与第二i/o接口相关联的第二读取请求队列,其中第二读取请求队列用于最大努力通信量。
241.示例25包括示例22的计算设备,其中dma引擎电路系统包括:描述符dma引擎,用于检索与多个数据分组相对应的多个描述符;以及数据dma引擎,用于检索与多个描述符相对应的多个数据有效载荷。
242.示例26包括示例25的计算设备,其中网络接口控制器进一步包括通信量路由器,其中通信量路由器包括多个i/o接口,并且其中通信量路由器用于:通过与计算设备相关联的第一虚拟信道路由多个描述符,其中第一虚拟信道与最大努力通信量相对应;通过与计算设备相关联的第一虚拟信道路由多个数据有效载荷的第一子集,其中第一子集与最大努力通信量相对应;以及通过与计算设备相关联的第二虚拟信道路由多个数据有效载荷的第二子集,其中第二子集与快速通信量相对应。
243.示例27包括一种设备,包括用于实现如示例16-21中的任一项的方法的装置。
244.示例28包括一种设备,包括用于实现如示例16-21中的任一项的方法的逻辑、模块或电路系统。
245.示例29包括一个或多个非瞬态计算机可读介质,包括指令,该指令用于在指令由电子设备的一个或多个处理器执行时使得电子设备实现示例16-21中的任一项的方法。
246.示例30包括一种设备,包括:一个或多个处理器、以及包括指令的一个或多个计算机可读介质,该指令在由一个或多个处理器执行时使得一个或多个处理器实现示例16-21中的任一项的方法。
247.示例31包括一种计算机程序,包括指令,其中由处理元件执行程序用于使处理元件实现示例16-21中的任一项的方法。
248.示例32包括一种移动设备,包括用于实现如示例16-21中的任一项的方法的电路系统。
249.示例33包括一种用户装备设备,包括用于实现如示例16-21中的任一项的方法的电路系统。
250.示例34包括一种客户端计算设备或端用户设备,包括用于实现如示例16-21中的任一项的方法的电路系统。
251.示例35包括一种媒体流设备或服务器,包括用于实现如示例16-21中的任一项的
方法的电路系统。
252.示例36包括一种内容交付服务器或网络,包括用于实现如示例16-21中的任一项的方法的电路系统。
253.示例37包括一种无线通信系统,包括用于实现如示例16-21中的任一项的方法的节点。
254.示例38包括一种接入点,用于实现如示例16-21中的任一项的方法。
255.示例39包括一种基站,用于实现如示例16-21中的任一项的方法。
256.示例40包括一种云计算系统、云服务器或云节点,包括用于实现如示例16-21中的任一项的方法的电路系统。
257.示例41包括一种边缘计算系统、边缘服务器或边缘节点,包括用于实现如示例16-21中的任一项的方法的电路系统。
258.众多其他改变、替换、变体、更改和修改对本领域技术人员而言可以是确定的,并且本公开旨在将所有此类改变、替换、变体、更改和修改涵盖为落在所附权利要求书的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1