首页 / 专利库 / 电脑零配件 / 固件 / 软件 / 用于流处理的数据处理单元

用于流处理的数据处理单元

阅读:0发布:2021-02-14

专利汇可以提供用于流处理的数据处理单元专利检索,专利查询,专利分析的服务。并且描述了一种利用 数据处理 单元(DPU)的新处理体系结构。与以中央处理单元(CPU)为中心的传统计算模型不同,DPU被设计用于以数据为中心的计算模型,在该以数据为中心的计算模型中,数据处理任务以DPU为中心。DPU可以看作是高度可编程的高性能I/O和数据处理集线器,其被设计为聚合和处理去往和来自其他设备的网络和存储I/O。DPU包括用于直接连接到网络的网络 接口 、用于直接连接到一个或多个应用处理器(例如CPU)或存储设备的一个或多个应用处理器接口,以及 多核处理器 ,其中每个处理核执行运行至完成数据平面 操作系统 。数据平面操作系统被配置为支持控制平面 软件 堆栈和用于执行数据处理任务的软件功能的库。,下面是用于流处理的数据处理单元专利的具体信息内容。

1.一种数据处理单元(DPU)集成电路,包括:
网络接口,被配置为发送和接收与网络的流数据单元;
主机接口,被配置为发送和接收与应用处理器或者存储设备的流数据单元;
多个可编程处理核;
运行至完成数据平面操作系统,在所述多个可编程处理核中的两个或者更多个可编程处理核上执行;
运行至完成软件功能,在所述多个可编程处理核中的一个可编程处理核上的所述数据平面操作系统上被调用,以处理工作单元,其中所述工作单元与所述流数据单元中的一个或者多个流数据单元相关联,并且其中所述工作单元指定所述软件功能用于处理所述流数据单元中的所述一个或者多个流数据单元,并且还指定所述多个可编程处理核中的所述一个可编程处理核用于执行所述软件功能;以及
多任务控制平面操作系统,在所述多个可编程处理核中的一个或者多个可编程处理核上执行。
2.根据权利要求1所述的DPU集成电路,还包括:控制平面软件堆栈,在所述可编程处理核中的至少一个可编程处理核上的所述数据平面操作系统上执行,其中所述控制平面软件堆栈包括管理程序和在所述管理程序上执行的所述多任务控制平面操作系统。
3.根据权利要求1所述的DPU集成电路,其中执行所述控制平面操作系统的所述可编程处理核中的至少一个可编程处理核包括专用于所述控制平面操作系统的独立处理核。
4.根据权利要求1所述的DPU集成电路,还包括:一个或者多个控制平面服务代理,在所述控制平面操作系统上执行,所述控制平面服务代理被配置为执行软件结构的建立和拆除以支持由在所述数据平面操作系统上执行的所述软件功能执行的工作单元处理。
5.根据权利要求1所述的DPU集成电路,其中所述流数据单元包括数据分组,还包括在所述控制平面操作系统上执行的一个或者多个控制平面服务代理,所述控制平面服务代理被配置为确定所述数据分组的分组流是合理的,并且向在所述可编程处理核中的所述一个可编程处理核上执行的所述数据平面操作系统发送指令,以在流表中建立所述分组流。
6.根据权利要求1所述的DPU集成电路,其中被调用以处理所述工作单元的所述软件功能包括被包括在由所述数据平面操作系统提供的功能库中的多个软件功能中的一个软件功能,并且其中被包括在所述功能库中的所述多个软件功能包括:一个或者多个网络功能、一个或者多个存储功能、一个或者多个安全功能、以及一个或者多个分析功能。
7.根据权利要求1所述的DPU集成电路,其中所述流数据单元包括数据分组,并且其中在所述可编程处理核中的所述一个可编程处理核上执行的所述数据平面操作系统被配置为:
接收所述数据分组的分组流;
在流表中执行查找以确定所述分组流是合理的;以及
将所述分组流映射到所述可编程处理核中的所述一个可编程处理核,以用于对所述分组流的所述数据分组的序列化处理。
8.根据权利要求7所述的DPU集成电路,其中所述分组流包括以下各项中的一个:联网分组流、存储分组流、安全分组流、和分析分组流。
9.根据权利要求1所述的DPU集成电路,还包括:在电路装置中实现的多个工作单元队列,其中所述工作单元队列中的至少一个工作单元队列与所述可编程处理核中的所述一个可编程处理核相关联并且被配置为存储多个工作单元,所述多个工作单元被排队以用于在所述可编程处理核中的所述一个可编程处理核上处理。
10.根据权利要求9所述的DPU集成电路,还包括:在电路装置中被实现的队列管理器,所述队列管理器被配置为:
接收所述工作单元,所述工作单元指定所述软件功能和用于执行所述软件功能的所述可编程处理核中的所述一个可编程处理核;
将所述工作单元排队到与所述可编程处理核中的所述一个可编程处理核相关联的所述工作单元队列中的所述一个工作单元队列;
将所述工作单元从所述工作单元队列中的所述一个工作单元队列出队列到所述可编程处理核中的所述一个可编程处理核;以及
在所述可编程处理核中的所述一个可编程处理核上调用由所述工作单元指定的所述软件功能,以用于处理所述工作单元。
11.根据权利要求10所述的DPU集成电路,其中为了处理所述工作单元,所述可编程处理核中的所述一个可编程处理核被配置为:
从所述工作单元队列中的所述一个工作单元队列接收所述工作单元;
从所述可编程处理核中的所述一个可编程处理核的高速缓存存储器中取得与所述工作单元相关联的所述流数据单元;
执行由所述工作单元指定的所述软件功能,以处理所述流数据单元;以及将处理所述工作单元的结果输出到所述工作单元队列,其中所述结果包括一个或者多个新的工作单元消息。
12.根据权利要求1所述的DPU集成电路,还包括:存储器,被配置为存储所述工作单元和被布置为工作单元堆栈的一个或者多个附加工作单元,其中所述工作单元包括所述工作单元堆栈内的后续工作单元的标识符,以用于在所述工作单元的完成时对所述流数据单元的进一步处理。
13.根据权利要求12所述的DPU集成电路,还包括:在电路装置中被实现的一个或者多个加速器单元,其中所述加速器单元中的至少一个加速器单元被配置为:
执行被包括在所述工作单元堆栈中的一个或者多个硬件命令,作为所述工作单元的输入参数;以及
在所述一个或者多个硬件命令的完成时,继续执行由所述工作单元标识的所述工作单元堆栈内的所述后续工作单元。
14.根据权利要求1所述的DPU集成电路,还包括:联网单元,被实现在电路装置中并且被配置为支持所述网络接口以直接连接到所述网络而无需单独的网络接口卡(NIC),所述联网单元被配置为控制所述DPU集成电路和所述网络之间的所述流数据单元的输入和输出。
15.根据权利要求1所述的DPU集成电路,还包括:至少一个主机单元,被实现在电路装置中并且被配置为支持所述主机接口以直接连接到所述应用处理器或者所述存储设备,所述主机单元被配置为进行以下中的至少一项:控制所述DPU集成电路和所述应用处理器之间的所述流数据单元的输入和输出、或者控制与所述存储设备的所述流数据单元的存储。
16.根据权利要求1所述的DPU集成电路,还包括:
在电路装置中被实现的相干存储器管理器,所述相干存储器管理器被配置为控制对所述DPU集成电路的相干高速缓存存储器的访问;以及
在电路装置中被实现的非相干存储器管理器,所述非相干存储器管理器被配置为控制对所述DPU集成电路的非相干缓冲存储器的访问,其中所述可编程处理核中的每个可编程处理核被连接到所述相干存储器管理器和所述非相干存储器管理器,并且其中所述可编程处理核中的每个可编程处理核被配置为将所述流数据单元存储在所述非相干缓冲存储器中,并且将其他数据存储在所述相干高速缓存存储器中。
17.根据权利要求16所述的DPU集成电路,其中为了处理所述工作单元,所述可编程处理核中的所述一个可编程处理核被配置为经由所述非相干存储器管理器从所述非相干缓冲存储器取回与所述工作单元相关联的所述流数据单元。
18.根据权利要求1所述的DPU集成电路,其中所述可编程处理核中的每个可编程处理核使用高级编程语言可编程。
19.一种系统,包括:
网络;
应用处理器或者存储设备中的至少一个;以及
数据处理单元(DPU)集成电路,包括:
网络接口,被配置为发送和接收与所述网络的流数据单元;
主机接口,被配置为发送和接收与所述应用处理器或者所述存储设备中的所述至少一个的流数据单元;
多个可编程处理核;
运行至完成数据平面操作系统,在所述多个可编程处理核中的两个或者更多个可编程处理核上执行;
运行至完成软件功能,在所述多个可编程处理核中的一个可编程处理核上的所述数据平面操作系统上被调用,以处理工作单元,其中所述工作单元与所述流数据单元中的一个或者多个流数据单元相关联,并且其中所述工作单元指定所述软件功能用于处理所述流数据单元中的所述一个或者多个流数据单元,并且还指定所述多个可编程处理核中的所述一个可编程处理核用于执行所述软件功能;以及
多任务控制平面操作系统,在所述多个可编程处理核中的一个或者多个可编程处理核上执行。
20.根据权利要求19所述的系统,
其中所述应用处理器或者所述存储设备中的至少一个包括中央处理单元,所述中央处理单元包括操作系统和在所述操作系统上执行的一个或者多个服务代理;以及其中所述DPU集成电路的所述数据平面操作系统被配置为接收所述流数据单元以用于代表在所述中央处理单元的所述操作系统上执行的所述服务代理进行处理。
21.根据权利要求19所述的系统,其中所述应用处理器或者所述存储设备中的所述至少一个包括多个固态驱动器,并且其中所述DPU集成电路被配置为在所述网络与所述多个固态驱动器中的任意一个固态驱动器之间发送和接收所述流数据单元。
22.根据权利要求19所述的系统,其中所述应用处理器或者所述存储设备中的所述至少一个包括中央处理单元,并且其中所述DPU集成电路被配置为进行以下中的至少一项:代表所述中央处理单元发送和接收与所述网络的所述流数据单元,或者代表所述中央处理单元发送和接收与存储设备的所述流数据单元。
23.根据权利要求19所述的系统,其中所述应用处理器或者所述存储设备中的所述至少一个包括图形处理单元,并且其中所述DPU集成电路被配置为将所述流数据单元从所述网络或者存储设备中的至少一个馈送到所述图形处理单元以用于处理。

说明书全文

用于流处理的数据处理单元

[0001] 本申请要求2017年7月10日提交的美国临时申请第62/530,691号、2017年9月15日提交的美国专利申请第62/559,021号和2017年11月21日提交的美国临时申请第62/589,427号的利益,其全部内容通过引用并入本文。

技术领域

[0002] 本公开涉及例如在联网和存储领域中用于处理流数据的设备。

背景技术

[0003] 常规计算设备通常包括诸如中央处理单元(CPU)、图形处理单元(GPU)、随机存取存储器、存储装置以及诸如以太网接口的用于将计算设备连接到网络的网络接口卡(NIC)的组件。典型的计算设备以处理器为中心,使得总体计算职责和控制与CPU集中在一起。这样,CPU执行:处理任务;存储器管理任务,诸如在CPU内的本地缓存,随机存取存储器和存储装置之间转移数据;以及联网任务,诸如构造和维护联网堆栈以及从外部设备或网络发送和接收数据。此外,CPU还负责处理例如来自用户界面设备的中断。尽管随着时间新CPU开发中的性能改进有所下降,但对CPU的需求随着时间连续增加。通用CPU通常不被设计用于通常打包的大容量网络和存储工作负载。通常,CPU在执行流数据处理方面相对较差,因为此类业务会在时间上分散并且不能很好地缓存。但是,服务器设备通常使用CPU处理流数据。发明内容
[0004] 通常,本公开描述了一种利用数据处理单元(DPU)的新处理架构。与以中央处理单元(CPU)为中心的传统计算模型不同,本文描述的示例实现利用了DPU,该DPU是为以数据为中心的计算模型而专设计和优化的,在该以数据为中心的计算模型中,数据处理任务以DPU为中心,并且承担DPU的主要责任。例如诸如联网、安全性、存储和分析的各种数据处理任务以及相关的工作加速、分配和调度以及其他此类任务是DPU的领域。DPU可以看作是高度可编程的高性能输入/输出(I/O)和数据处理集线器,其旨在聚合和处理去往和来自多个其他组件和/或设备的网络和存储I/O。这样可以释放CPU的资源(如果有的话)来执行计算密集型任务。
[0005] 高度可编程的DPU包括:网络接口,用于连接到网络以发送和接收流数据单元(例如数据分组);一个或多个主机接口或存储设备,用于连接到一个或多个应用处理器(例如CPU)或存储设备,以发送和接收流数据单元;以及多核处理器,其中所述处理核中的两个或多个处理核核执行运行至完成的数据平面操作系统,在该操作系统上调用软件功能来处理一个或多个流数据单元,以及其中所述处理核中的一个或多个处理核执行多任务控制平面操作系统。数据平面操作系统包括在DPU的裸机上运行的低级别、运行至完成的操作系统,其被配置为支持用于执行数据处理任务的软件功能。在一些示例中,数据平面操作系统还被配置为支持包括多任务控制平面操作系统的控制平面软件堆栈。DPU利用在每个处理核的数据平面操作系统上执行的细粒度工作单元、工作单元队列和队列管理器来序列化分组处理,使得相同分组流中的数据分组由相同处理核处理。这样,DPU能够以处理核之间的精细粒度和低处理开销来处理任意类型的分组流。
[0006] 在一个示例中,本公开针对一种DPU集成电路,该DPU集成电路包括:网络接口,被配置为发送和接收与网络的流数据单元;主机接口,被配置为发送和接收与应用处理器或存储设备的流数据单元;多个可编程处理核;运行至完成数据平面操作系统,在多个可编程处理核中的两个或多个上执行;运行至完成软件功能,在多个可编程处理核之一上的数据平面操作系统上被调用以处理工作单元,其中工作单元与流数据单元中的一个或多个流数据单元相关联,并且其中工作单元指定软件功能用于处理流数据单元中的一个或多个流数据单元,并且还指定多个可编程处理核之一用于执行软件功能;以及在所述多个可编程处理核中的一个或多个上执行的多任务控制平面操作系统。
[0007] 在另一示例中,本公开针对一种系统,该系统包括:网络;应用处理器或存储设备中的至少一个;以及DPU集成电路。DPU集成电路包括:网络接口,被配置为发送和接收与网络的流数据单元;以及主机接口,被配置为发送和接收与应用处理器或存储设备中的至少一个的流数据单元;多个可编程处理核;运行至完成数据平面操作系统,在多个可编程处理核中的两个或多个上执行;运行至完成软件功能,在多个可编程处理核之一上的数据平面操作系统上被调用以处理工作单元,其中工作单元与流数据单元中的一个或多个相关联,并且其中工作单元指定软件功能以用于处理流数据单元中的一个或多个,并且还指定多个可编程处理核之一以用于执行软件功能;以及在所述多个可编程处理核中的一个或多个上执行的多任务控制平面操作系统。
[0008] 一个或多个示例的细节在附图和以下描述中阐述。根据说明书和附图以及根据权利要求书,其他特征、目的和优点将是显而易见的。

附图说明

[0009] 图1A-1D是示出了包括根据本公开的技术配置的数据处理单元的节点的各种示例实现的框图
[0010] 图2是示出了根据本公开的技术的、具有示例数据处理单元的系统的框图,该示例数据处理单元包括被配置为处理工作单元的运行至完成数据平面操作系统。
[0011] 图3是示出了根据本发明的技术的实例数据处理单元的硬件组件的框图。
[0012] 图4是示出了根据本公开的技术的、用于使用数据处理单元中的工作单元来处理流数据的示例流线处理流程的流程图

具体实施方式

[0013] 图1A-1D是示出了包括根据本公开的技术配置的数据处理单元的节点的示例实现的框图。特别地,图1A是示出具有数据中心10的示例系统8的框图,该数据中心10包括各种节点的机架,诸如计算节点和存储节点,其中节点中的一个或多个包括根据本公开的技术配置的数据处理理单元。通常,数据中心10为通过网络7和网关设备16耦合到数据中心10的客户11提供用于应用和服务的操作环境。在一些示例中,网络7可以是内容/服务提供商网络。在其他示例中,网络7可以是数据中心广域网(DC WAN)、专用网络或其他类型的网络。数据中心10可以例如托管基础设施设备,诸如计算节点、联网和存储系统、冗余电源和环境控制。网络7可以耦合到由其他提供商管理的一个或多个网络,并且因此可以形成例如因特网的大规模公共网络基础设施的一部分。
[0014] 在一些示例中,数据中心10可以表示许多地理上分布的网络数据中心之一。在图1A的示例中,数据中心10是为客户11提供信息服务的设施。客户11可以是诸如企业和政府的集体实体或个人。例如网络数据中心可以为若干企业和最终用户托管Web服务。其他示例性服务可以包括数据存储、虚拟专用网、文件存储服务、数据挖掘服务、科学或超级计算服务等等。
[0015] 本公开描述了一种新的处理架构,在其中在一个或多个节点内利用数据处理单元(DPU)。与以中央处理单元(CPU)为中心的传统计算模型不同,本文描述的示例实现利用了DPU以及DPU的主要责任,该DPU是为以数据为中心的计算模型而专门设计和优化的,在该模型中,数据处理任务以其为中心。DPU可以被视为是高度可编程的高性能输入/输出(I/O)和数据处理集线器,被设计为聚合和处理去往和来自多个其他组件和/或设备之间的网络和存储I/O。
[0016] 根据本公开的技术,高度可编程的DPU包括网络接口(例如以太网)以连接到网络以发送和接收流数据单元(例如数据分组),一个或多个主机接口(例如外围组件互连快速(PCI-e)),以连接到一个或多个应用处理器(例如CPU或图形处理单元(GPU))或存储设备(例如固态驱动器(SSD))以发送并接收流数据单元,以及多核处理器,该多核处理器具有执行运行至完成的数据平面操作系统的两个或多个处理核,在该操作系统上调用软件功能以用于处理流数据单元中的一个或多个,以及该多核处理器具有执行多任务控制平面操作系统的两个或多个处理核。数据平面操作系统包括在DPU的裸机上运行的低级别、运行至完成的操作系统,该操作系统被配置为支持用于执行数据处理任务的软件功能。在一些示例中,数据平面操作系统还被配置为支持包括多任务控制平面操作系统(例如Linux)的控制平面软件堆栈。DPU利用在数据平面操作系统上执行的细粒度工作单元、工作单元队列、和队列管理器来序列化分组处理,以使相同分组流中的数据分组由相同的处理核进行处理。这样,DPU能够以处理核之间的精细粒度和低处理开销来处理任意类型的分组流。
[0017] 在图1A的所示示例中,数据中心10包括多个机架,该多个机架托管各种类型的设备,该各种类型的设备提供用于托管服务的操作环境。在该示例中,数据中心10包括中央处理单元(CPU)机架20、图形处理单元(GPU)机架22、数据处理单元(DPU)机架24和固态驱动器(SSD)存储设备机架26。尽管在图1A中仅示出了每种类型的机架,但是应当理解,在其他示例中,数据中心10可以包括每种类型的机架的集合,即两个或多个。
[0018] 根据本公开中描述的技术,保持在CPU机架20、GPU机架22和/或DPU机架24中的一个或多个设备可以包括DPU。例如这些DPU可能负责各种数据处理任务,诸如联网、安全性、存储和分析、以及相关的工作加速、分配和调度以及其他此类任务。在某些情况下,DPU可以与应用处理器(例如托管DPU的计算节点的单独的处理设备、服务器、存储设备甚至是本地CPU和/或本地图形处理单元(GPU))结合使用,以用于卸载任意数据处理密集型任务,并将应用处理器释放以用于计算密集型任务。在其他情况下,在与数据处理密集型任务相比控制平面任务相对较小的情况下,DPU可以代替应用处理器。
[0019] 例如如下面进一步解释的,CPU机架20托管被设计用于提供高速执行环境的多个CPU刀片21或其他计算节点。也就是说,每个CPU刀片可包含专门被定制以提供高性能应用执行的多个多核处理器。类似地,GPU机架22可以托管多个GPU刀片23或其他计算节点,其被设计为在CPU或DPU的指导下操作,以执行更适合于GPU的复杂数学和图形操作。SSD机架26可以托管多个SSD刀片27或其他存储节点,其他存储节点包含被设计用于存储和取回数据的永久性存储设备。
[0020] 通常,根据本文所述的技术,数据中心10内的各种计算节点,诸如CPU刀片21、GPU刀片23和DPU刀片25中的任意一个,可以包括DPU,以在数据中心10内执行以数据中心任务。此外,诸如SSD刀片27中的任意一个的数据中心10内的各种存储节点可以与CPU刀片21、GPU刀片23或DPU刀片25内的DPU交互以存储用于由DPU执行的以数据中心任务的数据。如本文所述,DPU被优化以执行输入和输出(I/O)任务,诸如去往和来自存储设备(诸如SSD)的数据的存储和取回、以及联网等。例如DPU可以被配置为相对于被处理的多个指令来执行大量的数据I/O处理任务。DPU可支持一个或多个主机接口,诸如PCI-e端口。DPU可以支持一个或多个高速网络接口,诸如以太网端口,而无需单独的网络接口卡(NIC),并且可以包括专用于网络业务的可编程硬件。DPU可以是高度可编程的,使得DPU可以公开用于选择和编程地配置数据处理操作的硬件原语。DPU也可以针对这些处理任务进行优化。例如DPU可以包括高性能数据处理任务的硬件实现,诸如加密、压缩(和解压缩)、正则表达式处理、查找引擎等。
[0021] 在图1A所示的示例中,机架集合20、22、24和26经由以太网链路连接到高速交换结构14。机架中的每一个保持多个设备,这些设备可以经由PCI-e链路和/或以太网链路在它们各自的机架中互连。另外,在不同机架20、22、24和26中包括的设备可以经由PCI-e链路和/或以太网链路互连。在一些示例中,机架20、22、24和26中的每一个可以是物理设备机架,该物理设备机架具有在其中保持设备的四十个机架单元(例如插槽)。在其他示例中,机架20、22、24和26中的每个可以是逻辑机架或具有二十个机架单元的半物理机架。设备中的每一个可以被实现为单机架或多机架单元(RU)设备。
[0022] 不同机架20、22、24或26中的设备中的一个或多个可以配置为操作为用于数据中心10的存储系统和应用服务器。例如CPU机架20保持多个CPU刀片(“CPU A-N”)21,每个都至少包括CPU。CPU刀片21中的一个或多个可以包括经由PCI-e链路或总线通信地耦合的CPU、DPU以及一个或多个存储设备,例如SSD。在该实现中,DPU被配置为代表CPU从存储设备取回数据,代表CPU将数据存储到存储设备,以及代表CPU从网络7和/或交换结构14取回数据。CPU刀片21中的一个或多个还可以包括被通信地耦合到至少DPU的GPU。在这种情况下,DPU还被配置为将卸载的处理任务(例如图形密集型处理任务或可能受益于图形处理单元的高度并行处理性质的其他任务)发送到GPU。下面参照图1B的计算节点30A更详细地描述CPU刀片21之一的示例实现。
[0023] 在一些示例中,CPU刀片21中的至少一些可能不包括其自己的DPU,而是通信耦合到另一个CPU刀片21上的DPU。换句话说,一个DPU可以被配置为控制CPU刀片21中的不同CPU刀片上的两个或更多CPU的I/O和其他数据处理任务。在其他示例中,CPU刀片21中的至少一些可能不包括其自己的DPU,而是被通信地耦合到在DPU机架24中保持的DPU刀片25之一上的DPU。
[0024] 作为另一示例,GPU机架22保持多个GPU刀片(“GPU A-M”)23,每个GPU刀片至少包括GPU。GPU刀片23中的一个或多个可以包括经由PCI-e链路或总线通信地耦合的GPU、DPU以及一个或多个存储设备,例如SSD。在此实现中,DPU被配置为控制与网络7和/或交换结构14的数据输入和输出,将数据从网络7、交换结构14或存储设备中的至少一个馈送到GPU进行处理,并控制与存储设备的数据的存储。以下关于图1C的计算节点30B更详细地描述GPU刀片23之一的示例实现。
[0025] 在一些示例中,GPU刀片23中的至少一些可能不包括其自己的DPU,而是与GPU刀片23上的另一GPU刀片的DPU通信地耦合。换句话说,一个DPU可以被配置为控制I/O任务以将数据馈送到GPU刀片23中的不同GPU刀片上的两个或更多个GPU。在其他示例中,GPU刀片23中的至少一些可能不包括其自己的DPU,而是代之以通信地耦合到在DPU机架24中保持的DPU刀片25之一上的DPU。
[0026] 作为另一示例,DPU机架24保持多个DPU刀片(“DPU A-X”)25,每个DPU刀片至少包括一个DPU。DPU刀片25中的一个或多个DPU刀片可以包括经由PCI-e链路或总线通信耦合的DPU和一个或多个存储设备,例如SSD,使得DPU刀片25可以替代地被称为“存储刀片”。在该实现中,DPU被配置为控制与网络7和/或交换结构14的数据的输入和输出,对数据执行可编程处理任务,并控制与存储设备的数据的存储。下面相对于图1D的存储节点33更详细地描述DPU刀片25之一的示例实现。
[0027] 如图1A所示,数据中心10还可包括至少一个分离的独立的SSD机架26,该SSD机架26保持多个SSD刀片(“SSD A-Z”)27,每个SSD刀片包括至少一个SSD设备。大多数SSD刀片27不包括它们自己的处理器,例如大多数SSD刀片27上不包括CPU或DPU。相反,在一个示例中,SSD刀片27之一可以包括一个或多个DPU,这些DPU被通信耦合到多个其他SSD刀片27中的每一个。在其他示例中,SSD机架26可以包括DPU刀片,该DPU刀片包括一个或多个DPU,这些DPU被通信地未耦合到多个SSD刀片27中的每一个,或者保持在DPU机架24中的DPU刀片25上的一个或多个DPU可以被通信地耦合到保持在SSD机架26中的多个SSD刀片27。在任意实现中,DPU被配置为控制与网络7和/或交换结构14的数据输入和输出,使用应用处理器(例如CPU刀片21上的CPU或GPU刀片23上的GPU)控制数据的输入和输出输出数据,对数据执行可编程处理任务,并控制用SSD刀片27上的SSD的数据存储。以这种方式,存储的可扩展性不受限制数据中心10中的处理的可扩展性。尽管在图1A中仅示出为包括SSD作为数据中心10的存储设备,但是在其他示例中,数据中心10可以包括保持硬盘驱动器(HD)存储设备或SSD和HD存储设备的组合的一个或多个机架。
[0028] 通常,DPU可以被包括在CPU刀片21、GPU刀片23、DPU刀片25和/或SSD刀片27中或与CPU刀片21、GPU刀片23、DPU刀片25和/或SSD刀片27通信地耦合,以为与客户11相关联的应用和数据提供计算服务和存储设施。这样,DPU可以被视为构建和扩展例如数据中心10的数据中心的基础。
[0029] 在图1A的所示示例中,机架20、22、24和26中的每一个可以包括机架顶(TOR)设备,通过该机架顶设备,保持在物理机架中的每个刀片可以经由以太网链路连接到交换结构14。在其他示例中,物理机架中的一个或多个可能不包括TOR设备,而是可以代之以直接连接到交换结构14或经由未保持在物理机架本身中的另一设备连接到交换结构14。例如DPU机架24可以不包括所示的TOR设备,而是DPU刀片25中的DPU中的每一个可以支持网络接口,通过该网络接口可以直接经由以太网链路连接到交换结构14。
[0030] DPU或机架20、22、24和26中包括至少一个DPU的设备中的任意一个也可以被称为访问节点。换句话说,术语DPU在本文中可以与术语访问节点互换使用。作为访问节点,DPU可以利用交换结构14提供全网状(任意对任意)互连,使得机架20、22、24、26中的设备中的任意一个都可以使用数据中心10中的多个并行数据路径中的任意一个,将流数据(例如给定的分组流中的数据分组)传送到设备中的任意其他设备。例如DPU可以被配置为在DPU之间以及在数据中心交换结构14中的多个并行数据路径中的一些或全部上为分组流喷射(spray)个体分组,并对分组进行重新排序以传递到目的地,以便提供完整的网状连接。
[0031] 尽管在图1中关于数据中心10的交换结构14描述了机架20、22、24和26,但在其他示例中,机架20、22、24、26内设备的DPU可以在任何分组交换网络上提供全网状互连。例如分组交换网络可以包括局域网(LAN)、广域网(WAN)或一个或多个网络的集合。分组交换网络可以具有任意拓扑,例如平坦的或多层的,只要在DPU之间存在完全的连接。分组交换网络可以使用任意技术,包括基于以太网的IP以及其他技术。不管分组交换网络的类型如何,DPU都可以在DPU之间以及在分组交换网络中的多个并行数据路径上喷射分组流的个体数据分组,并对分组进行重新排序以递送到目的地,以便提供全网状连接。
[0032] 在2017年9月15日提交的题为“Access Node for Data Centers”的美国临时专利申请No.62/559,021(代理人案卷号1242-005USP1)中描述了各种示例访问节点的其他示例细节。其全部内容通过引用并入本文。有关数据中心网络架构和互连访问节点的更多详细信息,请参见2018年3月28日提交的题为“Non-Blocking Any-to-Any Data Center Network with Packet Spraying Over Multiple Alternate Data Paths,”的美国专利申请No.15/939,227(代理人案卷号:1242-002US01),其全部内容通过引用并入本文。
[0033] 机架20、22、24、26内设备的DPU中的任意一个的不同操作联网组件都可以使用称为结构控制协议(FCP)的新数据传输协议,以促进跨交换结构14的数据的通信。FCP是一种端到端准入控制协议,其中在一个示例中,发送方明确地请求接收方,目的是传送一定数量的有效负载数据字节。作为响应,接收器基于其缓冲资源、QoS和/或结构拥塞测量来发出授权。通常,FCP使流数据单元(例如分组流的数据分组)能够喷射到源节点和目标节点之间的所有路径,并且可以提供针对请求/授权分组丢失的恢复、适应性和低延迟结构实现、故障的恢复、减少或最小的协议开销成本、支持未经请求的分组传递、支持有FCP能的/没有FCP能力的节点共存、流感知的公平带宽分配、通过自适应请求窗口缩放的传输缓冲区管理、基于接收缓冲区占用的授权管理、改进的端到端QoS、通过加密和端到端认证的安全性和/或改进的ECN标记支持的安全性。有关FCP的更多详细信息,可在2017年9月29日提交的标题为“Fabric Control Protocol for Data Center Networks with Packet Spraying Over Multiple Alternate Data Paths”的美国临时专利申请No.62/566,060(代理人案卷号1242-003USP1)中获得,其全部内容通过引用并入本文。
[0034] 在图1A的示例中,软件定义联网(SDN)控制器18提供了一个高级控制器,用于配置和管理数据中心10的路由和交换基础结构。SDN控制器18在逻辑上并且在某些情况下提供根据本公开的一个或多个实施例的用于促进数据中心10内的一个或多个虚拟网络的操作的物理集中控制器。在一些示例中,SDN控制器18可以响应于从网络管理员接收到的配置输入而操作。
[0035] 在一些示例中,SDN控制器18操作以配置机架20、22、24、26内的设备的DPU,以逻辑地建立一个或多个虚拟结构作为在交换机结构14提供的物理底层网络的顶部之上动态配置的覆盖网络。例如SDN控制器18可以学习和维护DPU的知识并建立与DPU中的每一个的通信控制信道。SDN控制器18使用其对DPU的知识来定义两个或更多个DPU的多个集合(组),以在交换结构14上建立不同的虚拟结构。更具体地说,SDN控制器18可以使用通信控制通道来通知针对给定集合的的每个DPU,其他DPU被包括在相同集合中。作为响应,DPU与在同一集合中包括的其他DPU动态建立FCP隧道作为交换结构14上的虚拟结构。这样,SDN控制器18为虚拟结构中的每一个定义了DPU的集合,并且DPU是负责建立虚拟结构。这样,交换结构14的底层组件可能不了解虚拟结构。在这些示例中,DPU与交换结构14对接并利用交换结构14,以便在任意给定虚拟结构的DPU之间提供全网状(任意对任意)互连。以此方式,机架20、22、24、26内的与形成给定虚拟结构中的给定一个的虚拟结构的任意DPU连接的设备可以使用互连该虚拟结构的DPU的交换结构14中的多个并行数据路径中的任意一个,将流数据单元(例如,给定分组流的数据分组)传送到与该虚拟结构的DPU耦合的机架20、22、24、26中的设备中的任意其他设备。DPU或访问节点操作以在虚拟覆盖网络内或跨虚拟覆盖网络喷射流数据单元的更多详细信息可在2018年3月5日提交的题为“Network Access Node Virtual Fabrics Configured Dynamically over an Underlay Network”的美国临时专利申请No.62/638,788(代理人案卷号:1242-036USP1)中获得,其全部内容通过引用并入本文。
[0036] 尽管未示出,但是数据中心10还可包括例如一个或多个非边缘交换机、路由器、集线器、网关、诸如防火墙的安全设备、入侵检测和/或入侵防御设备、服务器、计算机终端、笔记本电脑打印机数据库、诸如蜂窝电话或个人数字助理的无线移动设备、无线接入点、网桥、电缆调制解调器、应用加速器、或其他网络设备。
[0037] 图1B是示出了示例计算节点30A(例如计算设备或计算装备)的框图,该示例计算节点30A包括根据本公开的技术配置并通信耦合至中央处理单元34的数据处理单元32A。计算节点30A可以表示工作站计算机、服务器设备等。计算节点30A可以表示形成数据中心的多个服务器设备中的服务器设备。例如计算节点30A可以包括至少一个CPU、至少一个DPU、至少一个GPU和至少一个存储设备,例如SSD。作为另一示例,关于图1A,计算节点30A可以表示CPU刀片21中的至少一个、或者通信地耦合在一起的图1A的CPU刀片21中的至少一个、GPU刀片23中的至少一个、和DPU刀片25中的至少一个的组合。
[0038] 在图1B的示例中,计算节点30A包括DPU 32A、CPU 34、GPU36、动态随机存取存储器(DRAM)38、40、42和诸如SSD的存储设备44、闪存驱动器、磁盘驱动器等等。在该示例中,DPU 32A经由主机接口、外围组件互连-快速(PCI-e)总线48耦合到CPU 34、GPU 36、DRAM 38和存储设备44。DPU 32A还充当用于计算节点30A到可以表示因特网的网络50A的网络接口。网络
50A可以基本上类似于图1A的网络7和/或交换结构14。在该示例中,DPU 32A耦合到设备(例如网络50A的提供商边缘路由器,未示出)以经由以太网链路46接入网络50A。DPU 32A位于CPU 34、存储设备44和GPU 36之间并通信耦合到CPU 34、存储设备44和GPU36。尽管仅示出了一个存储设备44,但是应当理解,多个这样的存储设备可以被包括在计算节点30A内或耦合到计算节点30A(并且DPU 32A可以例如经由PCI-e总线耦合到存储设备中的每一个)。
[0039] 可以根据本公开的各种技术来配置DPU 32A。DPU 32A是具有多个处理核的高度可编程的I/O处理器(如下文例如关于图3所讨论的)。处理核中的两个或多个执行被配置为支持用于代表CPU 34执行数据处理任务的软件功能的运行至完成数据平面操作系统,并且处理核中的一个或多个执行多任务控制平面操作系统(如下文关于图2所讨论的)。另外,多核处理器配备有硬件引擎,该硬件引擎允许CPU 34卸载各种过程,诸如密码功能、压缩和正则表达式处理。DPU32A是可以在各种组件和设备之间形成联系的网络接口子系统,例如CPU 34、GPU 36、存储设备44和网络50A的网络设备。
[0040] 在图1B的示例中,DPU 32A提供网络50A、存储设备44、GPU36和CPU 34之间的访问。在其他示例中,诸如DPU 32A的DPU可以聚合并处理到包括应用处理器的多个服务器设备的网络和SSD I/O。以这种方式,DPU 32A被配置为代表CPU 34从存储设备44取回数据,代表CPU 34将数据存储到存储设备44,并且代表CPU 34从网络50A取回数据。此外,DPU 32A是还被配置为将卸载的处理任务(例如图形密集型处理任务、或可能受益于图形处理单元的高度并行处理性质的其他任务)发送到GPU 36,以从GPU 36接收卸载的处理任务的输出,以及以将卸载的处理任务的输出提供给CPU 34。
[0041] 通常,在CPU 34上可执行的软件程序可以执行指令以将与该软件程序相关联的一些或全部数据密集型处理任务卸载到DPU 32A。DPU 32A的处理核中的每一个可以使用高级编程语言来编程,例如C、C++等。通常,由DPU 32A提供的处理的各种硬件实现可以与高级编程语言中的软件库相关联,该高级编程语言可以被用于构造用于由CPU 34执行的软件应用,软件应用通过主机接口来调用和利用DPU32A的功能。因此,程序员可以用编程语言编写软件程序,并使用与DPU 32A的各种过程的硬件实现相关的功能或程序调用来执行这些功能,并且当CPU 34执行该软件程序时,CPU 34将这些功能/程序的性能卸载到DPU 32A。
[0042] 另外地或替代地,CPU 34可以将其他软件程序或功能卸载到DPU 32A,以由DPU 32A的处理核来执行。此外,CPU 34可以经由DPU 32A(例如计算机图形过程)将软件程序或功能卸载到GPU 36。以这种方式,DPU 32A表示动态可编程处理单元,动态可编程处理单元可以执行软件指令,并且提供用于数据处理任务的各种程序或功能的硬件实现,这可以改善这些程序或功能的性能。
[0043] 图1C是示出了包括根据本公开的技术配置的并且通信地耦合到GPU 36的DPU 32B的另一示例计算节点30B(例如计算设备或计算装备)的框图。计算节点30B可以表示工作站计算机、服务器设备等。计算节点30B可以表示形成数据中心的多个服务器设备中的服务器设备。例如计算节点30B可以包括至少一个DPU、至少一个GPU和至少一个存储设备,例如SSD。作为另一示例,关于图1A,计算节点30B可以表示GPU刀片23中的至少一个或通信地耦合在一起的GPU刀片23中的至少一个与DPU刀片25中的至少一个的组合。
[0044] 在图1C的示例中,计算节点30B包括DPU 32B、GPU 36、DRAM38、42和存储设备44,诸如SSD、闪存驱动器、磁盘驱动器等。DPU32B经由主机接口(在该示例中为PCI-e总线48)耦合到GPU 36、DRAM 38和存储设备44。DPU 32B还充当用于计算节点30B到可表示因特网的网络50B的网络接口。网络50B可以基本上类似于图1A的网络7和/或交换结构14。在该示例中,DPU 32B耦合到设备(例如网络50B的提供商边缘路由器,未示出)以经由以太网链路46访问网络50B。DPU 32B位于存储设备44和GPU 36之间并且通信地耦合到存储设备44和GPU36。尽管仅示出了一个存储设备44,但是应当理解,多个这样的存储设备可以被包括在计算节点
30B之内或耦合到计算节点30B(并且DPU 32B可以是例如经由PCI-e总线耦合到存储设备中的每一个)。
[0045] 可以根据本公开的各种技术来配置DPU 32B。DPU 32B可基本上类似于以上关于图1B描述的DPU 32A操作。DPU 32B是具有多个处理核的高度可编程的I/O处理器(如下文例如关于图3所讨论的)。处理核中的两个或多个执行运行至完成数据平面操作系统,运行至完成数据平面操作系统被配置为支持用于执行数据处理任务的软件功能,并且处理核中的一个或多个执行多任务控制平面操作系统(如下文关于图2所讨论的)。多核处理器还配备有被具体地配置为实现各种数据密集型操作的特定硬件单元。DPU 32B是可以在各种组件和设备之间形成联系的网络接口子系统,例如存储设备44、GPU 36和网络50B的网络设备。
[0046] 在图1C的示例中,DPU 32B提供网络50B、存储设备44和GPU36之间的访问。在其他示例中,诸如DPU 32B的DPU可以聚合并处理到包括应用处理器的多个服务器设备的网络和SSD I/O。DPU 32B可以操作为计算节点30B的控制平面(例如实质上是CPU),以促进GPU 36进行数据处理。以这种方式,DPU 32B被配置为控制与网络50B的数据输入和输出。此外,DPU 32B还被配置为将数据从网络50B或存储设备44中的至少一个馈送到GPU 36以用于处理(例如图形密集型处理或其他可能受益于图形处理单元的高度并行处理性质的处理任务)并从GPU 36接收处理的输出。DPU 32B还被配置为控制从网络50B接收的和/或由DPU 32B或GPU 
36处理的、与存储设备44的数据的存储。
[0047] 作为示例,在人工智能(AI)处理的情况下,控制平面功能包括执行控制任务以指令GPU执行某些类型的计算密集型处理,并执行I/O任务以将大量数据馈送到GPU进行处理。通常,控制GPU和存储设备之间的数据移动的I/O处理任务比相对较小的控制任务更为重要,以促进AI处理。因此,在AI处理的示例中,使用DPU 32B代替CPU是有意义的。在图1C的示例中,DPU 32B指令GPU 36对来自网络50B或存储设备44的数据执行矩阵/线性代数,并且向GPU 36和从GPU 36馈送数据。
[0048] 图1D是示出了包括数据处理单元32C的示例存储节点33的框图,数据处理单元32C根据本公开的技术被配置,并且被通信地耦合至一个或多个存储设备45,诸如SSD、闪存驱动器、磁盘驱动器、等等。在该示例中,存储节点33可以表示存储装备、存储服务器或存储控制器,并且可以耦合到存储设备45的集合、机架或集群,其可以在存储节点33的内部或外部,或者其组合。在该应用中,DPU 32C提供对从存储设备45读取和写入存储设备45的数据单元流的高性能处理,并且为那些数据单元流提供到网络50C的直接网络接口。这样,DPU 32C可以被看作是网络可访问存储设备45的专用前端,其提供了增强的执行环境,用于对从存储设备45读取和从计算节点、其他存储节点或与网络50C耦合的其他设备写入存储设备
45的数据进行流处理。
[0049] 如图所示,在该示例中,存储节点33可以包括至少一个DPU和至少一个存储设备,例如SSD。作为另一示例,关于图1A,存储节点33可以表示DPU刀片25中的至少一个,或者通信地耦合在一起的DPU刀片25中的至少一个与一个或多个SSD刀片27或其他存储设备的组合。
[0050] 在图1D的示例中,存储节点33包括DPU 32C、DRAM 38和多个存储设备45。DPU32C经由主机接口(在这个示例中为PCI-e总线48A、48B)耦合到DRAM 38和存储设备45。在一些示例中,PCI-e接口48B可以由一个或多个中间组件处理,以将PCI-e接口转换成其他存储协议,诸如SAS或SATA(串行AT附件)。DPU 32C还充当用于存储节点33到网络50C的网络接口,网络50C可以表示因特网。网络50C可以基本上类似于图1A的网络7和/或交换结构14。在该示例中,DPU 32C可以耦合到设备(例如网络50C的提供商边缘路由器,未示出)以经由以太网链路46访问网络50C。
[0051] 可以根据本公开的各种技术来配置DPU 32C。DPU 32C可以基本上类似于图1B的DPU 32A或图1C的DPU 32B操作。DPU 32C是具有多个处理核的高度可编程的I/O处理器(如下文例如关于图3所讨论的)。处理核中的两个或多个执行被配置为支持用于执行数据处理任务的软件功能的运行至完成数据平面操作系统,并且处理核中的一个或多个执行多任务控制平面操作系统(如下文关于图2所讨论的)。多核处理器还配备有被具体配置为实现各种数据密集型操作的特定硬件单元。DPU 32C是可以在各种组件和设备之间形成联系的网络接口子系统,例如存储设备45和网络50C的网络设备。
[0052] 在图1D的示例中,DPU 32C在网络50C和存储设备45之间提供访问。在其他示例中,诸如DPU 32C的DPU可以聚合并处理到包括应用处理器的多个服务器设备的网络和SSD I/O。DPU 32C可以操作为用于存储节点33的控制平面(例如实质上是CPU),以促进从存储设备45的数据存储和取回。以这种方式,DPU 32C被配置为控制与网络50C的数据的输入和输出。
此外,DPU 32C还被配置为对从网络50C接收或从存储设备45取回的数据执行可编程处理任务。DPU 32C还被配置为控制从网络50C接收和/或DPU 50C处理的、与存储设备45的数据的存储。在一个示例中,存储设备45可以包括整个机架的SSD刀片,每个刀片包括至少一个SSD设备,例如图1A的SSD机架26。在此示例中,用于控制网络和SSD之间数据移动的I/O处理任务比与数据存储相关的相对较小的控制任务更为重要。因此,在存储管理示例中,使用DPU 
32C代替CPU是有意义的。
[0053] 在2017年7月10日提交的标题为“Data Processing Unit forComputing Devices”的美国临时专利申请No.62/530,691(代理人案卷号1242-004USP1)中描述了各种示例DPU的另外的示例细节。其全部内容通过引用并入本文。
[0054] 下面参考图2和图3描述DPU的示例硬件和软件体系结构。针对高性能和高效流处理优化了DPU的硬件和软件体系结构。流被定义为可以具有无限制或不确定的长度的计算对象的有序单向序列(在本文中通常称为流数据单元,或者作为具体示例,称为分组流的数据分组)。在一个简单的示例中,流起源于生产者并终止于消费者,并按顺序进行操作。在某些示例中,流可以定义为流片段的序列;每个流片段包括在物理地址空间中可连续寻址的存储器、该块的偏移量和有效长度。流可以是:离散的,诸如从网络接收到的一系列分组;也可以是连续的,诸如从存储设备读取的字节流。作为处理的结果,一种类型的流可以被转换成另一种类型。与流类型无关,流操作需要高效的片段操纵。
[0055] 流处理是常规通用处理的一种特殊类型,它支持有关访问和方向性的特殊限制。处理通常在任意时间仅访问流的有限部分,称为“窗口”,在其中可以访问随机地址。窗口外部的对象无法通过流接口访问。相反,通用处理将整个存储器视为随时可随机访问。另外,流处理通常沿一个方向进行,称为正向。这些特性使流处理适合流水线操作,因为DPU中的不同处理器可以安全地访问流中的不同窗口。
[0056] 如本文所述,流信息的处理可以与“工作单元”相关联。工作单元(WU)是容器,该容器与流状态相关联,并用于描述(即指向)流中(存储在存储器中)的数据以及任何相关联的元数据和要对该数据执行的操作。工作单元可以动态地起源于DPU的外围单元(例如由联网单元、主机单元或存储设备接口注入)或与一个或多个数据流相关联的DPU的处理器内部,并终止于DPU的另一个外围单元或另一个处理器。通常,由于接收到与流的相应部分相关联的一个或多个工作单元而启动流处理,例如一个或多个流数据单元或分组流的数据分组。
[0057] 工作单元可以表示一个固定长度的数据结构,该结构包括动作值和一个或多个参数。在一个示例中,工作单元包括四个词语,第一个词语具有表示动作值的值,以及三个另外的词语,三个另外的词语中的每个词语表示参数。可以将动作值视为包含消息传递所必需的信息和用于工作单元执行的信息的工作单元头。更具体地说,工作单元的动作值指定用于处理与该工作单元相关联的一个或多个流数据单元的软件功能(也称为事件处理程序或工作单元(WU)处理程序),并指定用于执行软件功能的源和目的地处理核。工作单元数据结构的其他参数可以包括:参数,具有用作用于调用后续的WU处理程序的继续工作单元的指针的值;流参数,具有作为用于说明其与WU处理程序有关的状态的指针的值;以及流数据单元参数,具有用作用于关联流数据单元的指针的值。
[0058] 称为工作单元(WU)堆栈的数据结构可以在DPU的多核处理器系统中使用,以更容易地管理和利用由DPU执行的操作系统的事件驱动、运行至完成的编程模型。WU数据结构是WU堆栈中的构建块,可以很容易地用于组成DPU的多核处理器系统中的处理流水线和服务执行。对于任意给定的处理器核,WU堆栈结构在程序堆栈外部的辅助变量中携带状态、存储器和其他信息。
[0059] 关于工作单元、工作单元堆栈和数据处理单元的流处理的更多详细信息,可在于2017年11月21日提交的题为“Work Unit Stack Data Structures in Multiple Core Processor System”的美国临时专利申请No.62/589,427(代理人案卷号:1242-009USP1)以及于2018年4月10日提交的题为“Efficient Work Unit Processing in a Multicore System”的美国专利申请第15/949,692号(代理人案卷号:1242-014US01)中获得,其每一个的全部内容通过引用并入本文。
[0060] 图2是示出了根据本公开的技术的系统58的框图,该系统58具有数据处理单元(DPU)60,该数据处理单元包括被配置为处理工作单元的运行至完成数据平面操作系统(OS)62。在图2所示的示例中,系统58还包括通信地耦合到DPU 60的CPU90。DPU60和CPU 90中的每个通常表示以数字逻辑电路装置实现的硬件芯片。在一些示例中,DPU 60和CPU 90可以被托管在同一计算设备上,使得系统58可以基本上类似于图1B的计算节点30A进行操作。DPU 60可以基本上类似于图1A的机架20、22、24或26内的设备的DPU中的任意一个进行操作。CPU 90可以基本上类似于图1A的机架20内的设备的CPU中的任意一个进行操作。
[0061] DPU 60是具有多个处理核的高度可编程的I/O处理器(如下文例如关于图3所讨论的)。在图2所示的示例中,DPU 60包括直接连接到网络的网络接口(例如以太网接口)和直接连接到一个或多个应用处理器(例如CPU 90)和一个或多个存储设备(例如SSD)的多个主机接口(例如PCI-e接口)。DPU 60还包括在多个处理核中的两个或多个上执行的运行至完成数据平面操作系统(OS)62。数据平面OS 62提供数据平面64作为用于在数据平面OS 62上调用以处理工作单元的运行至完成的软件功能的执行环境。如上所述,工作单元与一个或多个流数据单元(例如分组流的分组)相关联,并且指定用于处理流数据单元的软件功能和用于执行软件功能的多个处理核之一。
[0062] 被调用以处理工作单元的软件功能可以是用于处理包括在数据平面OS 62所提供的库70中的流数据的多个软件功能之一。在所示的示例中,库70包括网络功能72、存储器功能74、安全功能76和分析功能78。网络功能72例如可以包括与以太网、网络覆盖、联网协议、加密和防火墙有关的网络I/O数据处理功能。存储功能74可以例如包括与NVME(非易失性存储器表达)、压缩、加密、复制、擦除编码和池化有关的存储I/O数据处理功能。安全功能76可以例如包括与加密、正则表达式处理和哈希处理有关的安全数据处理功能。分析功能78可以例如包括与数据转换的可定制流水线有关的分析数据处理功能。
[0063] 通常,数据平面OS 62是在DPU 62的裸机上运行的低级别、运行至完成的操作系统,该操作系统运行用于数据处理的硬件线程并管理工作单元。如下面更详细描述的,数据平面OS 62包括队列管理器的逻辑,以管理工作单元接口,使工作单元从队列中入队和出队,并在由工作单元指定的处理核上调用由工作单元指定的软件功能。在运行至完成编程模型中,数据平面OS 62被配置为从队列中使工作单元出队,在处理核上处理工作单元,并将处理工作单元的结果返回到队列。
[0064] DPU 60还包括在多个处理核中的一个或多个上执行的多任务控制平面操作系统。在一些示例中,多任务控制平面操作系统可以包括Linux、Unix或专用操作系统。在一些示例中,如图2所示,数据平面OS 62提供控制平面66,该控制平面66包括在数据平面OS 62上执行的控制平面软件堆栈。如图所示,控制平面软件堆栈包括管理程序80、在管理程序80上执行的多任务控制平面OS 82、以及在控制平面OS 82上执行的一个或多个控制平面服务代理84。管理程序80可以操作以将控制平面OS 82与在数据平面OS 62上执行的工作单元和数据处理隔离。在控制平面OS 82上执行的服务代理84包括应用级软件,该应用级软件被配置为执行软件结构的建立和拆除,以支持由在数据平面OS 62上执行的软件功能执行的工作单元处理。在数据分组处理的示例中,控制平面服务代理84被配置为通过数据平面OS62上的软件功能来建立用于数据分组处理的分组流,并每当分组处理完成时拆除分组流。这样,DPU 60包括高度可编程的处理器,该处理器可以运行应用级处理,同时利用底层工作单元数据结构进行高度并行化的流处理。
[0065] 在另一示例中,代替在数据平面OS 62之上运行,多任务控制平面操作系统可以在专用于控制平面操作系统并且与执行数据平面OS62的处理核不同的一个或多个独立处理核上运行。在此示例中,如果独立处理核专用于硬件级别的控制平面操作系统,则管理程序可能不被包括在控制平面软件堆栈中。相反,在独立处理核上运行的控制平面软件堆栈可以包括多任务控制平面操作系统和在控制平面操作系统上执行的一个或多个控制平面服务代理。
[0066] CPU 90是一种具有一个或多个处理核的应用处理器,这些处理核针对计算密集型任务而被优化。在图2所示的示例中,CPU 90包括直接连接到DPU 60的多个主机接口(例如PCI-e接口)。CPU90包括支持一个或多个服务代理96以及一个或多个驱动器97的管理程序/OS 92。如图2所示,CPU 90还可以包括在支持一个或多个驱动器98的管理程序/OS 92之上执行的虚拟机(VM)OS94。CPU 90的应用程序级软件,诸如在OS 92上执行的代理96或驱动器97或在VM OS 94上执行的驱动器98,可以确定将哪些数据处理任务从CPU90卸载到DPU60。
例如CPU 90的管理程序/OS 92可以使用PCIe链路的物理功能(PF)和/或虚拟功能(VF),将数据处理任务卸载到DPU 60。CPU 90的VM OS 94可以使用PCIe链路的VF将数据处理任务卸载到DPU 60。
[0067] 在图2所示的示例中,系统58还包括经由控制应用编程接口(API)与DPU 60和CPU 90两者通信的控制器100。控制器100可以提供用于配置和管理在DPU 60和CPU 90的每一个的控制平面操作系统上执行的应用级软件的高级控制器。例如控制器100可以配置和管理哪些数据处理任务要被从CPU 90卸载到DPU60。在一些示例中,控制器100可以包括软件定义的联网(SDN)控制器,该控制器可以基本上类似于图1A的控制器18进行操作。在一些示例中,控制器100可以响应于经由编排API从网络管理员接收到的配置输入而操作。
[0068] DPU 60的数据平面OS 62被配置为接收流数据单元,以用于代表在CPU 90的管理程序/OS 92上执行的应用级软件进行处理。在分组处理的示例中,流数据单元可以包括分组流的数据分组。在该示例中,所接收的分组流可以包括联网分组流,存储分组流,安全分组流,分析分组流或其任意组合中的任意一个。在DPU 60的处理核之一上执行的数据平面OS 62可以从联网单元、主机单元或DPU 60的处理核(如下例如关于图3所述)中的另一个以一个或多个工作单元形式接收分组流中的每一个。用于接收的分组流的工作单元中的每一个可以与分组流的一个或多个数据分组相关联。在接收到分组流之后,数据平面OS 62在流表中执行查找以确定该分组流是合理的,并且将整个分组流映射到DPU 60的处理核之一,以用于对该分组流的分组进行序列化处理。该流表可以包括硬件实现的流表,其由控制平面66用合理的分组流来更新和维护,并且用于将处理核分配给分组流。
[0069] 在接收到的分组流未被数据平面OS 62识别的情况下,例如尚未在流表中建立分组流,数据平面OS 62可以通过控制平面66中的慢速路径发送分组流以用于进行建立。然后,在控制平面OS 82上执行的控制平面服务代理84确定该分组流是合理的,并向数据平面OS 62发送指令以在流表中建立分组流。
[0070] 一旦由控制平面服务代理84建立了分组流,数据平面OS 62就可以将分组流分配给DPU 60的特定处理核,该DPU 60可以对该分组流进行流处理。作为一个示例,数据平面OS 62可以执行队列管理器,该队列管理器被配置为接收与分组流的一个或多个数据分组相关联的工作单元,使该工作单元进入与该分组流的处理核相关联的工作单元队列,将工作单元从工作单元队列中移出到处理核,并在处理核上调用工作单元指定的软件功能来处理工作单元。
[0071] 数据平面OS 62还提供到DPU 62的一个或多个硬件加速器的接口(如下文例如关于图3所讨论的),DPU 62的一个或多个硬件加速器被配置为对各种数据处理功能执行加速。数据平面OS 62可以使用硬件加速器来处理分组流的一个或多个部分,即一个或多个工作单元,其被布置为工作单元(WU)堆栈。在WU堆栈中,第一工作单元包括WU堆栈中后续工作单元的标识符,以用于在第一工作单元的完成后对分组的进一步处理。为了对分组流执行流处理,硬件加速器被配置为执行WU堆栈中包括的作为第一工作单元的输入参数的一个或多个硬件命令,并且在一个或多个硬件命令的完成后,继续执行第一个工作单元标识的WU堆栈中的后续工作单元。
[0072] 如本文所述,DPU利用在每个处理核的数据平面操作系统上执行的细粒度工作单元、工作单元队列和队列管理器来序列化分组处理,使得相同分组流的数据分组由相同的处理核处理。这样,DPU能够以处理核之间的精细粒度和低处理开销来处理任意类型的分组流。为了进行比较,其他多核系统可以使用共享存储器和定进行通信以确保持储器的一致性。锁定方案可以是比本文描述的工作单元方案量级更大的粒度的级别。例如与工作单元方案关联的处理开销小于100个时钟周期。处理开销可能包括实现工作单元的周期数,和使工作单元出队并将工作单元部署到给定的处理核进行处理的周期数。如本文所述,在给定的运行至完成硬件线程上序列化分组处理以维持同步,导致与常规多核系统中使用的锁定方案的开销大致相同。
[0073] 图3是说明根据本公开的技术的实例数据处理单元130的硬件组件的框图。DPU 130通常表示以数字逻辑电路装置实现的硬件芯片。DPU 130可基本上类似于图1A的机架
20、22、24或26、图1B的DPU 32A、图1C的DPU 32B或图1D的DPU 32C中的设备的DPU中的任意一个进行操作。因此,DPU 130可以例如经由PCI-e、以太网(有线或无线)或其他此类通信介质来通信地耦合到CPU、GPU、一个或多个网络设备、服务器设备、随机存取存储器、存储介质(例如固态驱动器(SSD))、数据中心结构等。
[0074] 在图3所示的示例中,DPU 130包括多个可编程处理核140A-140N(“核140”)。DPU 130可以基本类似于图2的DPU 60进行操作,其中运行至完成数据平面OS 62在每个核140上执行。每个核140包括级别1高速缓存141A-N中相应的一个(“高速缓存141”)。高速缓存141可以包括用于缓存诸如流数据单元(例如用于流处理的分组或其他数据)的非相干数据的L1缓冲器高速缓存。L1缓冲区高速缓存可以存储数据以进行短期高速缓存,使得数据可用于快速访问。
[0075] DPU 130还包括联网单元142、相干存储器管理器144、非相干存储器管理器145、一个或多个主机单元146、多个加速器148A-148X(“加速器148”)、队列管理器150、和多个工作单元(WU)队列152。尽管在图3中未示出,但核140、联网单元142、相干存储器管理器144、非相干存储器管理器145、主机单元146、加速器148、队列管理器150、和WU队列152中的每一个彼此通信地耦合。
[0076] 在该示例中,DPU 130表示高性能、超融合的网络、存储装置以及数据处理器和输入/输出集线器。例如联网单元142可以被配置为与例如网络设备的一个或多个外部设备发送和接收流数据单元。联网单元142可以执行网络接口卡功能、分组交换等,并且可以使用大的转发表并提供可编程性。联网单元142可以公开用于连接到诸如图1A的网络7和/或交换结构14的网络的网络接口(例如以太网)端口。主机单元146中的每一个可以暴露一个或多个主机接口(例如PCI-e)端口,以与应用处理器(例如服务器设备的x86处理器或托管DPU 130的设备的本地CPU或GPU)和/或数据存储设备(例如SSD)发送和接收流数据单元。DPU 
130可以进一步包括一个或多个高带宽接口,用于连接到片外外部存储器(图3中未示出)。
[0077] 每个加速器148可以被配置为对各种数据处理功能执行加速,诸如查找、矩阵乘法、加密、压缩、正则表达式处理等。例如加速器148可以包括查找引擎、矩阵乘法器、密码引擎、压缩引擎、正则表达式解释器等的硬件实现。
[0078] 队列管理器150被配置为维护和操纵WU队列152。WU队列152中的至少一个可以与核140中的每一个关联,并被配置为存储排队的多个工作单元,以在核140中的相应一个上进行处理。在一些示例中,核140中的每一个可以具有WU队列152中的专用的一个,该WU队列152存储工作单元以供核140中的相应的一个进行处理。在其他示例中,核140中的每一个可以具有两个或多个专用WU队列152,其存储不同优先级的工作单元以供核140的相应一个处理。如图3所示,队列管理器150和WU队列152都相对于核140物理集中。但是,WU队列152可以在逻辑上分散。
[0079] 数据处理单元130可以利用两种类型的片上存储器或存储设备,即,相干高速缓存存储器和非相干缓冲存储器(图3中未示出)。相干存储器管理器144被配置为控制对相干高速缓存存储器的访问,并且非相干存储器管理器145被配置为控制对非相干缓冲存储器的访问。以此方式,数据处理单元130的组件中的任意一个(即,核140、联网单元142、主机单元146、加速器148、队列管理器150和WU队列152)和任意数量的外部设备(例如网络设备、服务器、外部存储设备等)可以经由相干存储器管理器144访问相干高速缓存存储器,并且可以经由非相干存储器管理器145访问非相干缓冲存储器。存储器管理器144、145可以被配置为执行根据本公开的用于执行存储器管理的多个操作。DPU的分叉存储系统的更多详细信息在于2018年4月10日提交的题为“Relay Consistent Memory Management in a Multiple Processor System”的美国专利申请No.15/949,892(代理人案卷号1242-008US01)中可获得,其全部内容通过引用并入本文。
[0080] 核140可以包括MIPS(无互锁流水线级微处理器)核、ARM(高级RISC(精简指令集计算)机器)核、PowerPC(具有增强型RISC的性能优化-性能计算)核、RISC-V(RISC五个)核或复杂指令集计算(CISC或x86)核中的一个或多个。核140中的每一个可以被编程为处理与给定分组流有关的一个或多个事件或活动,诸如例如联网分组流、存储分组流、安全分组流或分析分组流。核140中的每一个可以使用高级编程语言(例如C、C++等)来编程。
[0081] 在一些示例中,多个核140根据与分组相关联的一个或多个工作单元,以顺序的方式执行指令,以用于处理由网络单元142或主机单元146接收到的、与分组流的每个数据分组有关的多个事件。如上所述,工作单元是在核140与联网单元142或主机单元146之间交换的数据集,其中每个工作单元可以表示与给定数据分组有关的事件中的一个或多个事件。更具体地,工作单元与一个或多个数据分组相关联,并且指定用于处理数据分组的软件功能,并且还指定用于执行该软件功能的核140之一。
[0082] 通常,为了处理工作单元,由工作单元指定的核140之一被配置为从存储器中取回与工作单元相关联的数据分组,并执行由工作单元指定的软件功能以处理数据分组。例如核140之一可以经由非相干存储器管理器145从非相干存储器缓冲器中取回数据分组,并且将数据分组缓存在核140中相应一个核中的高速缓存141之一中。
[0083] 在更详细的示例中,通过在工作单元接收队列(例如WU队列152之一)中接收消息来用信号通知接收工作单元。WU队列152中的每个与核140中的一个相关联,并且可在工作单元消息的头部中寻址。在从联网单元142、主机单元146之一或核140另一核中接收到工作单元消息后,队列管理器150将工作单元排队在与由工作单元指定的核140之一相关联的WU队列152之一中。在队列管理器150将工作单元从WU队列152中的一个队列中取出后,队列管理器150将工作单元传递到核140之一。然后,队列管理器150调用由工作单元在核140之一上指定的软件功能,以用于处理工作单元。
[0084] 为了处理工作单元,核140之一从WU队列152之一接收工作单元。然后核140之一从核140中的相应一个核中的高速缓存141之一中取得与工作单元相关联的分组,并执行所调用的软件功能以处理该分组。然后,核140之一将处理工作单元的对应结果输出回WU队列152。例如在处理工作单元时,核140之一可以通过执行到映射到工作单元发送队列(例如,WU队列152中的另一个)的地址的、存储的指令来生成新的工作单元消息。存储的指令将消息的内容写入队列。来自核140之一的工作单元消息的释放可以与来自高速缓存141中的相关联的一个高速缓存的脏数据的冲刷互锁(通过其被选通)。
[0085] 作为一个示例用例,流处理可以分为在源和目的地之间的多个中间处理器处执行的工作单元。根据每个阶段要执行的工作量,所涉及的中间处理器的数量和类型可能会有所不同。在处理与每个数据分组有关的多个事件时,多个核140中的第一核,例如核140A,可以处理多个事件中的第一个事件。此外,第一核140A可向多个核140中的例如核140B的第二核提供一个或多个工作单元中的第一工作单元。此外,第二核140B可以响应于从第一核140B接收到第一工作单元来处理多个事件中的第二事件。
[0086] 图4是示出了根据本公开的技术的用于使用DPU中的工作单元来处理流数据的示例流水线处理流程的流程图。图4示出了多个处理核350A-350N(其可以对应于图3的核140)的示例,并且其每个可以包括L1缓冲器高速缓存352A-352N(其可以对应于图3的高速缓存141)。
[0087] 图4还示出了相干存储器(其可以对应于由图3的相干存储器管理器144管理的相干高速缓存存储器)和非相干缓冲存储器(其可以对应于由图3的非相干存储器管理器145管理的非相干缓冲存储器)。此外,如图4所示,每个核350与要由核处理的工作单元340的队列(可以对应于图3的WU队列152)相关联。WU队列340可以是由图3的队列管理器150维护的队列。
[0088] 如图4所示,每个核350执行数据平面软件以用于处理流数据单元,诸如数据分组。数据平面软件可以对应于图2的DPU 60的数据平面OS62。在该示例中,每个核350提供用于软件功能集合的执行环境(其可以对应于在图2的DPU 60的数据平面64上执行的库70内的功能)。在图4中,软件功能通常被示为F1-Fn,但在本文中也称为事件处理程序或WU处理程序。可以根据运行至完成编程模型对每个软件功能进行编程,以用于对流数据单元应用一个或多个操作。此外,各种软件功能可以表示用于对分组执行更高级别的操作的不同的离散代码部分。例如一组软件功能在链路在一起以处理公共的一个或多个工作单元时,可以执行高级操作,例如加密、身份验证、深度分组检查等。组中的每个单独的软件功能可以表示要执行的整体操作的不同的运行至完成代码部分,并且该组的软件功能可以在相同或不同的核350上执行。
[0089] 如图4的示例所示,每个处理核350执行服务于将由核处理的相应WU队列340的调度器330A-330N中的对应的一个。每个调度器330访问针对其核的相应的WU队列340,并且基于队列头部的工作单元内的数据结构,实例化用于处理工作单元的软件功能(F)的实例。
[0090] 如本文所述,WU队列340内的每个工作单元与将由相应核处理的一个或多个流数据单元相关联。在一个示例中,每个工作单元包括与一个或多个数据分组的关联(例如指向该一个或多个数据分组的指针),并且还可以包括与工作单元堆栈(“WU堆栈”)的关联(例如指向工作单元堆栈(“WU堆栈”)的指针),工作单元堆栈携带程序状态、缓存的数据以及程序执行在处理对应的分组时所需的其他信息。如本文中进一步描述的,在各种示例中,WU队列340内的每个工作单元指定(例如通过标识符或索引)软件功能F,该软件功能F将由调度器
330实例化以用于处理工作单元。另外,每个工作单元包括用于发送工作单元的核350或其他硬件单元的标识符,以及一旦被调用的软件功能F完成处理就可以接收工作单元的核350或其他硬件单元的标识符。
[0091] 在由调度器330实例化时,被调用的软件功能F有效地提供无缝程序执行,以使用程序状态、缓存的数据和在对应WU堆栈内指定的其他信息对与工作单元相关联的流数据单元进行操作。在执行期间,软件功能F可以例如作为运行至完成事件处理程序执行,以用于对流数据单元执行一个或多个特定操作。而且,程序执行的连续性经由通过相应的WU堆栈所携带的程序状态和缓存的数据被保持。在处理工作单元时,软件功能F可以通过针对相关联的数据分组在WU堆栈上执行类似堆栈的操作,并可选地指示队列管理器创建附加工作单元以进行进一步处理相关联的数据分组,来进一步操纵与例如数据分组的特定流数据单元关联的对应WU堆栈。
[0092] 如本文中进一步描述的,当处理工作单元时,由调度器调用的软件功能F的对应实例可以对与处理流水线中的数据分组一起流动的WU堆栈执行类似堆栈的操作。换句话说,WU堆栈可被视为工作单元集合,该工作单元集合共同实现了整体逻辑功能,而这些工作单元尚未入队进行处理。工作单元以堆栈格式被布置在WU堆栈中,并且可以使用堆栈操作由软件功能F操纵(插入、移除等),以指定用于整个逻辑功能的未来工作单元。软件功能F可以例如针对程序状态、缓存的数据以及任意输入或输出变量来访问WU堆栈内的当前帧以用于对数据分组执行对应功能。此外,软件功能可以有效地从WU堆栈中“弹出”当前帧,在WU堆栈上推送附加的工作单元帧,和/或使附加的工作单元被创建并排队在WU队列340中,以用于执行在工作单元上的附加的代码部分(功能)。这样,WU堆栈可用于使用多个软件功能来促进程序执行和整个逻辑功能的流水线化,其中不希望在单个核上的单个运行至完成事件中执行所有操作。
[0093] 应用编程接口(API)可以被软件功能(F)所利用,用于与WU堆栈进行交互并对WU堆栈进行操纵,WU堆栈与由多个处理核正在处理的流数据单元(例如数据分组)相关联。例如软件功能(F)可以通过执行类似堆栈的操作来操纵WU堆栈,诸如分配WU堆栈、释放WU堆栈、将新帧推送到现有WU堆栈上。另外,API可以进一步允许软件功能发送与在WU堆栈被推送的特定帧相关联的继续,这进而使具有指向该帧的指针的工作单元被排队在WU队列中以进行处理。
[0094] 对于本文所述的过程、装置和其他示例或说明,包括在任何流程图表或流程图中,包括在本文所述的任何技术中的某些操作、动作、步骤或事件,可以以不同的顺序执行,可以被完全添加、合并或省去(例如,并非所有描述的动作或事件对于实践这些技术都是必需的)。此外,在某些示例中,可以例如通过多线程处理、中断处理或多个处理器同时而不是顺序地执行操作、动作、步骤或事件。即使未明确标识为自动执行,其他某些操作、动作、步骤或事件也可以自动执行。而且,被描述为自动执行的某些操作、动作、步骤或事件可以备选地不自动执行,而是在某些示例中,这样的操作、动作、步骤或事件可以响应于输入或另一事件而执行。
[0095] 以上阐述的详细描述旨在作为各种配置的描述,并且并非旨在表示其中可以实践本文描述的概念的唯一配置。详细描述包括特定细节,以用于为了提供对各种概念的透彻理解。但是,可以在没有这些特定细节的情况下实践这些概念。在某些情况下,在附图中以框图形式示出了公知的结构和组件,以避免使这些概念模糊。
[0096] 在一个或多个示例中,可以以硬件、软件、固件或其任意组合来实现所描述的功能。如果以软件实现,则功能可以作为一个或多个指令或代码存储在计算机可读介质上和/或在计算机可读介质上发送,并由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,其对应于诸如数据存储介质的有形介质,或者通信介质,其包括有助于将计算机程序从一个地方转移到另一个地方(例如根据通信协议)的任意介质。以这种方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质,或者(2)诸如信号或载波的通信介质。数据存储介质可以是可由一台或多台计算机或一个或多个处理器访问以取回指令、代码和/或数据结构以实现本公开中描述的技术的任意可用介质。计算机程序产品可以包括计算机可读介质。
[0097] 作为示例而非限制,此类计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁性存储设备、闪存或可以用于以指令或数据结构形式存储所需程序代码并且可以由计算机访问的任意其他介质。而且,任意连接都适当地称为计算机可读介质。例如如果使用同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或诸如红外、无线电和微波的无线技术从网站、服务器或其他远程源发送指令,则介质的定义包括同轴电缆、光纤电缆、双绞线、DSL或诸如红外、无线电和微波的无线技术。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他瞬态介质,而是针对非瞬态的有形存储介质。所使用的磁盘和光盘包括光盘(CD)、激光光盘、光碟、数字多功能光盘(DVD)、软盘和蓝光光盘,其中盘通常以磁性方式复制数据,而光盘则通过激光光学方式复制数据。上述的组合也应包括在计算机可读介质的范围内。
[0098] 指令可以由一个或多个处理器执行,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其他等效集成或分立逻辑电路装置。因此,本文所使用的术语“处理器”或“处理电路装置”可以分别指任意前述结构或适合于实现所描述的技术的任意其他结构。另外,在一些示例中,可以在专用硬件和/或软件模块内提供所描述的功能。同样,该技术可以在一个或多个电路或逻辑元件中完全实现。
[0099] 本公开的技术可以在各种各样的设备或装置中实现,包括无线手机、移动或非移动计算设备、可穿戴或不可穿戴计算设备、集成电路(IC)或IC集合(例如芯片组)。在本发明中描述各种组件、模块或单元以强调被配置为执行所公开的技术的设备的功能方面,但不一定需要由不同硬件单元来实现。相反,如上所述,各种单元可以组合在硬件单元中,或者由互操作的硬件单元的集合提供,包括与合适的软件和/或固件结合的如上所述的一个或多个处理器。
[0100] 已经描述了各种示例。这些和其他示例在所附权利要求的范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈