SIGCOMM2022:一种采用非流水线架构的P4网络可编程芯片-Trio

FPGA技术江湖 2022-08-25 08:30
可编程数据平面从根本上改变网络元素的构建和管理方式,也在一定程度上平衡了灵活性和性能之间的矛盾这种平衡行为的关键是对数据包处理的良好抽象。数据包处理的常见抽象是匹配动作流水线,最早由OpenFlow提出。通过匹配动作抽象,可以将包处理器建模为一系列匹配和动作流水线阶段。每个流水线阶段对流经的数据包执行不同的操作。这种抽象可以映射到FPGA和下一代ASIC。在这种情况下,与平台和体系结构无关的P4 语言应运而生。为支持P4语言,可编程数据平面大都采用可重配置匹配动作表(Reconfigurable Match TablesRMT)抽象转发模型,定义了可编程解析、可编程匹配与可编程动作等数据包处理行为,而使用 P4 编程语言,可以快速简便地对数据包处理行为进行描述。因此,在人们的印象中,提到P4语言,大脑中就自动出现解析器、逆解析器和多级流表的架构,想到了Barefoot的Tofino芯片。认为解析器、逆解析器加多级Match Action流表的架构就是P4语言唯一硬件架构。然而,实际上,除了这种架构外,还有好几种其它的实现架构。比如今年8月下旬即将召开的SIGCOMM会议上,MIT和Juniper的研究人员联合发表了一篇介绍Trio芯片架构的文章,Trio 芯片就不是采用流水线架构来实现对P4语言支持的。文章主要面向新的应用场景与传统的PISA流水线架构的交换芯片的性能进行对比,现将该文章部分译文奉上,以飨读者。感兴趣的读者也可以提前阅读扎神的文章《Trio 6, Express 5 and Silicon One》以更全面了解相关内容和背景。
摘要:本文介绍了Trio,一种用于瞻博(Juniper)网络MX系列路由器和交换机的可编程芯片组。Trio的架构基于一个多线程的可编程数据包处理引擎和一个分层的大容量内存系统,这使得它与基于流水线的架构有着根本的不同。Trio可以优雅地处理各种网络用例和协议的非同质包处理率,使其成为新兴网络内应用的理想平台。我们首先描述了Trio芯片组的基本构件,包括其多线程的包转发和包处理引擎。然后,我们讨论Trio的编程语言,称为微代码。为了展示Trio灵活的基于Microcode的编程环境,我们描述了两个使用案例。首先,我们展示了Trio为分布式机器学习执行网络内聚合的能力。其次,我们提出并设计了一种使用Trio的定时器线程的网络内滞留者缓解技术。我们在测试平台上使用三个真实的DNN模型(ResNet50、DenseNet161和VGG11)对这两个用例进行了原型测试,以证明Trio在执行网络内聚合的同时缓解串扰的能力。我们的评估表明,当集群中出现散工问题时,Trio的性能比目前基于流水线的解决方案高1.8倍。


01

引言


数据密集型应用是当今在线服务的基础。随着摩尔定律的逐渐放缓,硬件加速器正在努力满足新兴云应用的性能需求,如机器学习、数据库、存储和数据分析。进一步的进展明显受到单台服务器所能容纳的计算量和内存的限制,推动了数据密集型应用对高效分布式系统的需求。
可编程交换机的出现,如英特尔的Tofino[2, 20, 22],为设计新的包处理协议和编译器创造了机会[17, 20, 24, 44, 45, 58, 69, 71]Tofino交换机也为使用网络内计算[23, 60, 74]来加速应用铺平了道路,如缓存[43]、数据库查询处理[50, 73]、机器学习训练[36, 48, 55, 63, 77]、推理[76]和共识协议[27, 28, 52]网络内计算的关键思想是利用交换机的独特优势,直接在网络内进行部分计算,从而减少延迟,提高性能。

尽管可编程交换机一直是这种新模式的重要推动者,但独立于协议的交换机架构(PISA)[2, 20, 22, 58]往往不适合新兴的网内应用,从而限制了进一步发展,阻碍了网内计算应用的广泛采用[35, 37, 67]。

本文介绍了Trio的网络内计算可编程架构。Trio是瞻博网络的可编程芯片组,拥有数十亿美元的预存客户群。它已被部署在全球核心、边缘和数据中心环境中的数十万台路由器和交换机中。Trio芯片组在生产设备中使用已超过十年。

Trio建立在一套定制的处理器内核上,其指令集针对网络应用进行了优化。因此,该芯片组具有传统ASIC的性能,同时享有完全可编程处理器的灵活性,允许通过软件安装新功能。Trio的灵活架构使其能够支持在芯片组发布后很长时间内开发的功能和协议。Trio处理器内核可以访问一个高性能的大内存系统,以存储与系统配置和数据包有关的数据和状态。该内存系统对具有大内存足迹的新兴应用的可扩展性至关重要。

Trio的结构与Tofino的结构有根本的不同。Trio有一个非流水线结构,因此不同的数据包不一定流经芯片上的相同物理路径。Trio中的入站数据包是使用成千上万的并行线程独立处理的(详情见2)。这些线程使用运行-完成模型[12, 70],其中一个线程将执行所需的指令,以完成它目前正在处理的数据包的处理。Trio有专门的逻辑,以确保同一流量的数据包按顺序交付,但不同流量的数据包可以不按顺序处理,使其能够有效地处理混合的并发应用。

因此,Trio可以优雅地处理不同的数据包处理率:它可以为需要丰富的每包处理的应用提供低于线速的支持,同时为具有简单的每包处理需求的应用保持线速。相比之下,基于PISA的交换机在处理数据包时,处于同一流水线的数据包需要遍历流水线的各个阶段,无论P4程序是怎样的;P4程序[19]的部署只有完全成功和完全失败两个结果,基于PISA的交换机无法支持灵活的数据包处理速率,以可编程性为代价,换取数据包的线速处理能力。

在本文中,我们首先描述了Trio芯片组的基本构件,包括其数据包处理引擎和周围的内存系统的细节(2)。接下来,我们描述了Trio的编程语言,称为Microcode(3)。然后,我们以机器学习训练的网络内聚合作为第一个用例,解释Trio灵活的Microcode设计(4)。我们将网络中的串扰缓解作为第二个用例,以证明Trio在启动高效的基于定时器的线程方面的独特能力(5)。我们证明了在Trio中实现滞留者缓解是直接的,而据我们所知,在基于PISA的设备中实现高效的滞留者缓解是具有挑战性的,甚至是不可能的。

我们在一个带有Juniper MX480设备[10]、一个64个100Gbps Tofino交换机和六个华硕ESC4000AE10服务器的测试平台上实现这两个用例,每个服务器都有一个A100 Nvidia GPU[11]和一个100Gbps Mellanox ConnectX5网卡。我们训练三个DNN模型(ResNet50[41]、DenseNet161[42]和VGG11[68]),以证明Trio在执行网内聚合的同时减轻散兵线的能力。我们的评估表明,当集群中出现散工时,Trio比最先进的网内聚合平台SwitchML[63]的性能高出1.8倍。

瞻博网络将继续发展Trio芯片组,为现有和新兴应用提供更高的带宽、更低的功耗和更多的功能,同时还将开发软件基础架构以支持更多的使用案例。我们邀请网络界确定能够利用Trio可编程架构的新用例。

02


Trio的结构


自2009年推出以来,Trio芯片组已经经历了六代[16],具有各种性能点和架构。本节详细介绍了Trio的最新架构。首先,我们对基于Trio的路由器1中的数据包转发和处理做了一个高层次的概述。然后,我们转向Trio的数据包处理引擎的细节。最后,我们解释Trio的各种内存类型和读-改-写操作。

1      基于Trio的路由器体系结构

图1说明了基于Trio的路由器(或交换机)与基于PISA的交换机之间的高层区别。每个基于Trio的设备都有两个重要的组成部分:(i)包转发引擎和(ii)包处理引擎,下面将介绍。

数据包转发引擎(PFE)。PFE是Trio转发平面的中心处理元素,用于系统地将数据包移入和移出设备。一个基于Trio的设备由一个或多个PFE组成。根据不同的年代,每个Trio芯片组支持不同的数据包处理带宽。Trio的第一代PFE用多个芯片支持40Gbps的网络带宽。今天,Trio的第六代PFE在单个芯片中支持1.6 Tbps。小型路由器可能只有一个PFE,而大型路由器则有多个PFE,通过互连结构连接,如图1(a)所示。通过在PFE之间提供any-to-any的全互连连接,互连结构扩大了设备的带宽,远远超过了单个芯片所能支持的范围。每个PPE在入口和出口方向上都处理数据包。数据包通过一个入口PFE到达系统,并通过一个出口PFE离开。

包处理引擎(PPE)。每个PFE都有数百个多线程的包处理引擎(PPE),如图2所示。每个PPE支持几十个线程同时处理不同的数据包。与Tofino的架构不同,流水线不能访问对方的寄存器,一个PFE中的PPE线程可以通过共享内存有效地共享状态。第2.2节更详细地解释了PPE的基于线程的设计。

平行数据包处理。PFE的硬件逻辑自动将每个进入的数据包分为头和尾部分(类似于PISA的头和有效载荷)。数据包头是数据包的第一部分,通常大到足以容纳处理数据包所需的所有数据包头(每一代Trio设备的数据包头大小不同,但通常约为200字节)。尾部由数据包的剩余字节组成(如果有的话)。当一个新的数据包到达时,PFE内部的一个硬件模块,称为调度模块,根据可用性将数据包头发送到PPE进行处理,PPE为这个数据包头生成一个新线程。数据包尾部被保存在PFE的内存和队列子系统中的数据包缓冲区,以避免在PPE线程中存储大量的字节。默认情况下,每个线程在一个数据包上工作。许多PPE线程并行工作以提供所需的处理带宽。

重新排序引擎。当数据包处理完成后,修改后的数据包头被发送到重新排序引擎。重排引擎保留更新的包头,直到同一流程中所有较早到达的数据包都被处理,以确保按顺序交付。然后,Reorder Engine将修改后的数据包头发送到内存和排队子系统,以便排队传输。

2      包处理引擎

Trio的PPE提供了固定处理流水线或现有专门处理单元难以或无法实现的功能。每个PPE都是一个VLIW(超长指令字)多线程的微码引擎核心。每个微指令都控制着多个ALU、操作数和结果选择,以及复杂的多路分支。执行一个微指令所需工作的复杂性意味着每个指令需要多个时钟周期。因为每个PFE通常同时为许多数据包提供服务,所以一个PPE不需要高的单线程性能。Trio中的每个线程一次只有一条数据通路指令。Trio不会将同一线程上的指令与前一条指令分派到PPE流水线中,直到后者退出流水线。因此,不需要在同一线程的指令之间传递数据,因为在数据回写完成之前,后续指令不依赖于前一指令的结果。

PPE线程。一个PPE线程通常在数据包头到达PPE时启动,并在该PPE对该数据包的处理完成后销毁。线程的销毁由芯片中的硬件逻辑自动处理,尽管程序员可以控制何时放弃线程的执行。线程也可以响应某些内部事件而启动,包括统计收集和定时器(更多细节见5)。外部事件有能力通过类似的机制来催生新线程的执行。入口和出口PFE中的PPE共同处理处理数据包所需的所有功能(例如,数据包解析、路由查找、数据包重写)。

每线程本地存储。每个PPE有两种主要的内部存储形式。首先,每个线程有一个专用的本地存储器池(1.25 KBytes)。本地存储器可以在任何字节边界访问,使用指针寄存器或微指令中包含的地址。在一个PPE线程启动之前,数据包头被加载到该线程的本地存储器中。当发送数据包时,修改后的数据包头会从线程的本地存储器中卸载。指针寄存器的使用允许对包头以及其他类型的数据结构进行有效的访问。其次,每个线程都有32个64位的通用寄存器,这些寄存器对它是私有的。本地存储(内存和寄存器)持有正在处理的数据包的特定信息。跨包的共享状态被保存在所有PPE都可以访问的共享内存系统中。

ALU类型。有两种ALU类型:(i)条件ALU和(ii)移动ALU。条件ALU用于算术或逻辑运算,产生32位数据结果和/或用于比较运算,产生1位条件结果。移动ALU产生32位的结果,可以写进寄存器或本地存储器。来自条件ALU的结果可以作为移动ALU的输入。这种ALU组织允许每个指令的资源在排序控制(接下来描述)和生成逻辑/算术结果之间灵活分配,以存储在寄存器/存储器中。重要的是,每个ALU操作数和每个移动ALU结果可以是一个任意长度的位域(最多32位)和一个任意的位偏移。这有两个主要的好处。首先,它提高了访问包头中不同大小的字段的效率。第二,它提高了内存和寄存器容量的利用率,使每块数据只使用它所需要的比特。Trio在PPE和共享内存系统中都有ALU。前者用于对寄存器和本地存储器的操作,而后者则用于对存储在共享存储器系统中的数据进行操作。通过将数据包尾部的部分移动到PPE线程的本地存储器,也支持对数据包尾部的操作。

排序逻辑。一个或多个条件ALU的条件结果可以被排序逻辑单元用来选择下一个要执行的微指令。每个微指令包括一个至八个微指令的目标块的地址。任何或所有的条件结果都可以被忽略,所使用的条件结果的组合也非常灵活。数据包处理中的许多工作涉及代码中复杂的条件分支,特别是在解析期间。Trio在一条指令中执行复杂的多路分支的能力与数据包处理应用的需求非常匹配。PPE支持对子程序的调用-返回机制,子程序可以嵌套到八层深处。

高效的哈希计算。高效的负载平衡是所有路由器/交换机的一个重要要求。在一个基于Trio的系统中,一个Microcode程序负责指定哪些数据包字段被包括在哈希计算中。这使得哪些数据包字段有助于负载平衡的决定具有完全的灵活性,包括从协议尚未发明的数据包头中选择字段的能力。Trio中的哈希函数是一个使用专用逻辑实现的高质量哈希函数。因此,哈希函数的实现比用软件实现的类似哈希函数更有效。可编程字段选择和硬接线哈希函数的结合,使PPE在灵活性和效率方面达到了前所未有的平衡。

灵活的编程。对PPE可处理的报头数量或类型没有固定限制。因此,PPE可以使用Trio的微码程序(3)轻松创建新的报头或消耗/删除数据包中的现有报头。随着新协议的开发,Trio数据包处理架构可以通过增强运行在PPE上的软件来适应。由于PPE的多线程结构,PPE还可以创建或消耗数据包来完成任务,如保持功能,其速度远远高于控制平面CPU所能支持的速度。重要的是,处理周期在不同的应用之间是可以互换的,从而能够优雅地处理不同应用的数据包处理要求。因此,基于Trio的系统可以为数据包处理较丰富的应用提供较低的数据包速率,为数据包处理较简单的应用提供较高的数据包速率,或两者混合使用。

3      共享内存系统

最近的Trio芯片组在每个PFE中支持几个GBytes的内存。本节对Trio的共享内存系统进行了概述。

共享内存的优点。对于交换机和路由器来说,一些数据结构,如计数器和(流量)管制器,需要以很高的速度修改。为了支持数百个PPE线程对这些数据结构的有效访问,Trio的共享内存系统成为所有线程访问和修改数据的地方。所有对共享内存系统的数据访问(读、写和读-修改-写)都由位于共享内存系统附近的读-修改-写引擎处理。当多个线程在同一时间访问同一内存位置时,不需要将数据从一个线程移到另一个线程。相反,数据修改发生在读-修改-写引擎内部。这允许在内存附近高速更新数据,很好地满足了数据包处理应用的需要。相比之下,传统处理器使用的基于缓存线的一致性模型需要在访问过程中把数据移到线程中;当多个线程试图修改同一内存位置时,这会造成较长的延迟。虽然这种模型可以支持对数据进行更复杂和更普遍的操作,但对于可以被数百个线程访问的数据结构来说,它的表现很差。

内存类型。Trio存储器系统经过优化,为相对较小(8字节)的请求提供了较高的访问速率。为了实现所需的带宽、延迟和容量的组合,存储器系统使用两种类型的存储器,如图3所示:(i)高带宽的片上存储器,从PPE的访问延迟约为70ns;(ii)基于DRAM的大型高带宽片外存储器,从PPE的访问延迟约为300 ns至400 ns。片上存储器是由一个严重的多槽SRAM实现的,通常用于频繁访问的数据结构。片外存储器有一个几百万字节的片上缓存,它与片上SRAM类似,并且是大量的多Bank,以提供高吞吐量。片上SRAM和片外DRAM缓存的大小是可以软件配置的(通常分别为2-8 MBytes和8-24 MBytes)。片外DRAM是几GB字节。片内和片外存储器在结构上是等同的,存在于一个统一的地址空间的不同范围内。它们只在容量、延迟和可用带宽上有所不同。这使得数据结构可以被放置在最符合其容量和带宽要求的存储器类型中。

内存交易。内存系统支持不同大小的读写操作,从8字节到64字节(以8字节为增量)。Trio可以用8字节的访问来支持全部的内存系统带宽。此外,还支持丰富的读-改-写操作,包括数据包/字节计数器、Policers、逻辑获取和操作(And/Or/Xor/Clear)、获取和交换、屏蔽式写入和32位添加。读-修改-写操作由读-修改-写引擎启用,具体规定如下。

读-修改-写引擎。数据包处理需要极其高速的读-修改-写操作。处理一个数据包可能涉及到对多个计数器的更新,对一个或多个策略器的操作,以及应用程序需要的其他操作。处理读-改-写操作的天真方法是,在操作进行时,让一个线程拥有一个内存位置的所有权。但这种方法不能满足数据包处理的高效率要求。相比之下,Trio将读-改-写操作卸载到它的内存系统中,由一个读-改-写引擎来处理一系列的内存位置。如果对同一内存位置的多个请求在同一时间到达,该引擎将依次处理这些请求,以保证更新的一致性。在混合读、写和读-修改-写操作时,不需要向内存中的某个位置发出明确的一致性命令。每个读-改-写引擎以每个时钟周期8字节的速度处理内存请求。因此,整个共享内存系统的单个读-修改-写引擎不能提供足够高的速率处理数据包所需的内存带宽。为了应对这一挑战,Trio支持几组SRAM和片外缓存,并有自己的读-修改-写引擎,使读-修改-写处理带宽能够与原始内存带宽一起扩展。

Crossbar和共享内存性能。Trio的Crossbar被设计为支持所有的读-修改-写引擎,因此Crossbar本身不会限制内存性能。如果提供给某个读-改-写引擎的负载超过了每周期8字节的吞吐量,就会通过Crossbar产生背压。瞻博网络在每一代Trio芯片中都增加了读-改-写引擎的数量,以便内存带宽随着数据包处理带宽的增加而增加。

03

Trio的编程环境



本节对Trio的编程环境进行了概述。第1节描述了Trio的编程语言和基于Trio设备的编程工具链。第2节提供了一个用Trio微代码编程的数据包过滤例子。

1      Trio的编程语言和工具链

基于Trio的设备的编程语言是一种叫做Microcode的类C语言。程序员在Microcode中实现所有的数据包处理操作,包括数据包解析、路由查找、数据包重写和网络内计算(如果有)。图4显示了在Trio上为新的应用程序编程所需的工具。要在Trio上编程一个新的应用程序,程序员使用Microcode语言来编写新的应用程序,并将新的Microcode程序添加到现有的代码库中。然后,程序员使用Trio的编译器生成软件图像并配置目标设备。

表达式语法。Microcode支持C风格的表达式。支持的变量类型包括标量(label, bool, 和不同大小的整数)和复合(struct 和union)。Microcode还支持指针和数组,条件,函数调用和Gotos,以及switch语句。

指令边界。一个Microcode程序有多个指令。一条Microcode指令可以执行有限的操作,程序员需要明确指定指令的边界。通常情况下,一条Microcode指令可以执行四个寄存器或两个本地存储器的读取,以及两个寄存器或两个本地存储器的写入。

变量存储类。当在Microcode中定义一个新的变量时,程序员需要指定存储该变量的位置。有三种类型的变量存储类:内存(PPE的本地内存和寄存器),总线(表示变量作为ALU的输入),和虚拟(表示常量值)。对存储在共享内存系统中的数据的访问,如转发表,是通过下面规定的外部事务实现的。

外部交易。PPE可以通过Crossbar向其他模块发出外部事务(XTXN),如共享内存系统、哈希查找/插入/删除、高性能过滤器和计数器/警戒器块。这些XTXN可以是同步的或异步的。在同步XTXN中,PPE线程被暂停,直到收到XTXN回复;在异步XTXN中,PPE线程继续正常运行。PPE也可以通过XTXNs从数据包尾部获取数据。在这种情况下,数据包尾巴从内存和队列子系统发出,通过Crossbar,然后到达PPE的本地内存。一个XTXN由PPE向目标发出的请求和目标向PPE发回的回复组成。XTXN的格式取决于目标块。例如,发送到共享内存系统的读取请求以内存地址为参数,数据在XTXN响应寄存器中返回。

编译器。为了编译Microcode程序,程序员使用一个叫做Trio Compiler(TC)的工具。TC将指令的源代码映射到指令可以控制的各种资源,包括将变量映射到它们的底层存储,并将指令分配到PPE内的Microcode内存。TC同时具有编译器和汇编器的特点。在编译器方面,TC支持将高级C风格的表达式翻译成硬件指令。在汇编器方面,TC的源代码必须包含指令的划分,即程序员标记代表一条指令的代码块的开始和结束。如果指定给一条指令的代码不合适,TC的编译就会失败,因为它不能在多条指令中实现要求的动作。TC没有一个单独的编译和连接阶段。它需要完整的源代码而不是单个模块来生成二进制文件。这个二进制文件包含初始化PPE资源的数据,如Microcode内存和本地内存。它还定义了所需的符号,如本地内存中数据包头开始的地址。该二进制文件是Trio的ASIC驱动程序用于设备初始化的Junos2软件镜像的一部分。

vMX虚拟路由器。瞻博网络正在共同努力,使第三方能够访问基于Trio的设备编程。作为第三方访问Trio功能的第一步,瞻博网络开发了vMX虚拟路由器[5]。vMX是一个虚拟化的通用路由平台,由一个虚拟控制平面(VCP)和一个虚拟转发平面(VFP)组成。VCP由Junos操作系统驱动,VFP运行为x86环境优化的Microcode引擎。vMX可作为授权软件,部署在基于x86的服务器和云服务上,如亚马逊网络服务。

高级转发接口。在Trio中,数据包转发是一个由PFE执行的操作序列。每个操作都可以用潜在包转发操作图上的一个节点表示。PFE根据单个数据包的类型/字段,为其执行一系列操作。瞻博网络高级转发接口(AFI)[3]提供了部分可编程性,允许第三方开发者通过一个称为沙盒的小型虚拟容器控制和管理这个转发路径图的一部分。该沙盒使开发者能够添加、删除和改变特定数据包的操作顺序。

2      Microcode程序示例(略)

04

Trio讨论和未来的用例


Trio用于网络内遥测。大多数网络运营商需要遥测或深入了解其网络中的流量,以便进行容量规划、服务级协议监测、安全缓解和其他用途。目前的网络设备通常依靠数据包采样,使用设备中嵌入的内部处理器或外部监测设备进行进一步处理。由于通过设备的流量很大,而可用于监测的处理和带宽有限,只有一小部分数据包(几万分之一或更少)被选中进行监测,而且采样数据包的决定往往是盲目的,基于一个简单的时间间隔[62]。Trio的数据包处理的灵活性和操作资源的可用性使其适合网络内遥测。例如,服务提供商可以利用Trio的大内存来跟踪传入的数据包,以保持足够的信息用于遥测。此外,Trio的定时器线程适用于定期监测和异常分析。为了给网络运营商提供更智能的遥测,可以根据Trio已经提取的用于路由的数据包字段,对每个数据包执行基于机器学习的分类技术。最后,数据结构可以更有效地存储,从而减少外部监测设备的传输带宽和处理周期。

Trio用于网络内安全。为了减轻DDoS攻击,基于Trio的MX系统支持识别和丢弃恶意数据包的功能,充分利用了芯片组的高性能和灵活的数据包过滤机制。Trio还在SRX安全平台上充当基于安全流的快速转发路径[1]。Trio能够对传入的数据包进行额外的复杂的网络内安全处理,通过聚合特征或对服务提供商安装的ML模型进行推理,以识别和缓解流量中的异常情况。与基于设备的解决方案不同,Trio在网络数据通路上进行异常检测的可编程架构可实现低延迟的威胁缓解。

Trio-ML中的数据包丢失。运行各种不同应用的数据中心可能会出现瞬时流量高峰,而这又可能导致聚合数据包丢失。一个实用的网络内聚合系统需要一定程度的弹性,使长期运行的工作能够在这种突发事件中生存下来。SwitchML[63]建议如何实现这种弹性。Trio-ML的实现有支持这种解决方案的规定,尽管它不是当前代码的一部分,我们把它留给未来的工作。

未来的开放源码计划。我们正在考虑几个未来开源的想法。首先,我们计划为Trio增加对P4编程的全面支持。Juniper工程公司已经为实现这一目标做出了初步努力[6],但最近对P4核心规范的修改和增强,应该可以让更多的灵活性和更多的功能通过P4接口公开。其次,我们计划创建一种特定领域的语言,让第三方开发者能够使用Trio芯片组的全部转发路径功能。瞻博网络正在探索这一领域的发展,并欢迎社区提供反馈。

05

相关工作


使用可编程交换机的网络内计算。之前的几篇论文通过利用网络内部的某种形式的可编程性提出了网络内计算。这些方法分为两类:(1)使用基于PISAb的架构进行线速计算[18, 48, 63];(2)使用片上FPGA进行亚线速计算[21]。我们的网络内ML聚合用例与Sharp[18]、SwitchML[63]、ATP[48]、PANAMA[36]和Flare[29]密切相关。Sharp[18]是Mellanox针对专用ML训练集群的专有设计;它假定网络带宽可以被完全保留。相比之下,我们考虑的是多个用户和应用共享链接的网络。SwitchML[63]和ATP[48]使用市面上的Tofino交换机来执行梯度聚合。尽管Tofino交换机可以进行线速数据包处理,但其流水线结构的可编程性较为有限,这使得网络内的散兵游勇缓解极具挑战性。我们使用SwitchML作为Trio-ML的基线比较。对于我们的用例来说,SwitchML是一个苹果对苹果的比较,使其成为比ATP更合适的基线。更具体地说,ATP的性能改进受到网络内聚合和额外的参数服务器的影响,而SwitchML和Trio-ML更相似,因为这两种方法只使用交换机/路由器进行聚合。PANAMA的[36]网内聚合硬件可以支持灵活的数据包处理,但它是基于FPGA充当线内颠簸,使得它在大规模部署中不切实际。然而,本文旨在利用Trio的可编程架构,从头开始设计新的有状态的网络内应用。Trio的几个关键特征使这些新的应用成为可能。首先,Trio的大内存和对数据包尾部数据的快速访问使网络内的高效计算成为可能。其次,Trio的共享内存系统提供了几GB的存储空间;即使在有散兵游勇的情况下,或者在多个应用程序同时运行的情况下,这也足够用于数据存储。最后,Trio对单个数据包的指令数量没有限制,使Microcode程序能够启动大型数据包所需的计算指令。

缓解散工问题。在理解和缓解分布式系统中散工问题的影响方面,之前有大量的工作[13 15, 25, 26, 30, 31, 33, 34, 38, 46, 51, 56, 57, 59, 61, 72, 75, 78, 79] 。特别是,Harlap等人提出了FlexRR,以减轻散工问题对分布式学习工作的影响[38]。FlexRR要求工人之间进行点对点的通信,以检测速度慢的工人并进行工作重新分配。相比之下,我们考虑在网络内部减轻散兵游勇的影响,不需要工人之间的任何消息传递,也不需要参数服务器。Tandon等人[72]和Raviv等人[61]提出了编码理论框架,通过在工人之间重复训练数据来缓解分布式学习中的散兵游勇;然而,Trio-ML不需要数据重复。

替代传统交换机架构。研究界一直在研究替代的交换机架构,以解决基于PISA的架构的一些限制,如缺乏共享内存和浅层流水线深度。最有竞争力的例子是dRMT(Disaggregated Programmable Switching)[24]。dRMT开关架构实现了一个集中的、共享的内存池,所有的匹配动作阶段都可以访问。dRMT不是在一个流水线上执行匹配动作阶段,而是将这些阶段聚集在一个集群中,并以轮流的顺序执行。一个控制逻辑单元对这些阶段进行调度,以便在尊重程序依赖性的前提下最大限度地提高集群的吞吐量。然而,集中式内存池由一个连接各阶段和内存的多路复用器控制,在一个给定的时钟周期内,只有一个阶段可以访问内存。当一个应用程序需要在多个阶段访问内存时,这可能导致程序执行速度减慢。在Trio中,多个线程可以在同一时间向同一内存位置发送内存访问请求,Trio的读-改-写引擎依次处理这些请求,保证了更新的一致性。此外,dRMT通过crossbar的内存访问是在编译时调度的,这降低了增量更新和重新编译应用程序代码的灵活性。横杠调度算法的复杂性会限制该架构扩展到更多数量的匹配行动处理器的能力。相比之下,Trio的crossbar是实时调度的,从而提供对内存的有效访问。这种动态调度机制使Trio能够从第一代的16个PPE扩展到第六代的160个PPE,而且将来还会继续扩大规模。此外,在dRMT中,数据包解析器和分离器位于匹配动作处理器之外。对依赖查找结果的数据包的内部头的任何解析(例如MPLS封装的数据包)都必须重新循环到解析器中进行处理。相比之下,Trio的PPE是完全可编程的处理器,能够以运行完成的方式处理数据包解析/分离,以及其余的数据包查找和处理。Trio的多线程PPE还允许数据包由不同的Microcode程序根据其处理要求进行处理。

06

结论


本文介绍了瞻博网络的可编程芯片组Trio,以及它在新兴数据密集型网络内应用中的应用。Trio已经生产了十多年,建立了一个庞大的客户群,拥有数十亿美元的市场份额。我们描述了Trio的多线程和可编程的包转发和包处理引擎。然后,我们使用分布式机器学习训练的网络内聚合和网络内散工问题缓解作为两个用例来说明Trio的微代码和编程环境。我们的评估表明,Trio的性能比今天基于流水线的解决方案高出1.8倍。
 翻译:董菁     图文排版:潘伟涛

责任编辑:刘欢 潘伟涛


- End -

往期精选 

 
 

【免费】FPGA工程师人才招聘平台

FPGA人才招聘,企业HR,看过来!

系统设计精选 | 基于FPGA的实时图像边缘检测系统设计(附代码)

基于原语的千兆以太网RGMII接口设计

时序分析理论和timequest使用_中文电子版

求职面试 | FPGA或IC面试题最新汇总篇

FPGA图像处理专题课新增Vivado部分内容,线上线下均可报名

FPGA时序分析及约束专题课新增Vivado部分内容,线上线下均可报名

资料汇总|FPGA软件安装包、书籍、源码、技术文档…(2022.05.15更新)

FPGA就业班,课程内容丰富,系统性学习FPGA,高薪就业,线上线下同步,9月15日开班!

FPGA技术江湖广发江湖帖

无广告纯净模式,给技术交流一片净土,从初学小白到行业精英业界大佬等,从军工领域到民用企业等,从通信、图像处理到人工智能等各个方向应有尽有,QQ微信双选,FPGA技术江湖打造最纯净最专业的技术交流学习平台。


FPGA技术江湖微信交流群

加群主微信,备注职业+方向+名字进群


FPGA技术江湖QQ交流群

备注地区+职业+方向+名字进群

FPGA技术江湖 任何技术的学习就好比一个江湖,对于每一位侠客都需要不断的历练,从初入江湖的小白到归隐山林的隐世高人,需要不断的自我感悟自己修炼,让我们一起仗剑闯FPGA乃至更大的江湖。
评论
  • 在快速发展的能源领域,发电厂是发电的支柱,效率和安全性至关重要。在这种背景下,国产数字隔离器已成为现代化和优化发电厂运营的重要组成部分。本文探讨了这些设备在提高性能方面的重要性,同时展示了中国在生产可靠且具有成本效益的数字隔离器方面的进步。什么是数字隔离器?数字隔离器充当屏障,在电气上将系统的不同部分隔离开来,同时允许无缝数据传输。在发电厂中,它们保护敏感的控制电路免受高压尖峰的影响,确保准确的信号处理,并在恶劣条件下保持系统完整性。中国国产数字隔离器经历了重大创新,在许多方面达到甚至超过了全球
    克里雅半导体科技 2025-01-03 16:10 121浏览
  • Matter加持:新世代串流装置如何改变智能家居体验?随着现在智能家庭快速成长,串流装置(Streaming Device,以下简称Streaming Device)除了提供更卓越的影音体验,越来越多厂商开始推出支持Matter标准的串流产品,使其能作为智能家庭中枢,连结多种智能家电。消费者可以透过Matter的功能执行多样化功能,例如:开关灯、控制窗帘、对讲机开门,以及操作所有支持Matter的智能家电。此外,再搭配语音遥控器与语音助理,打造出一个更加智能、便捷的居家生活。支持Matter协议
    百佳泰测试实验室 2025-01-03 10:29 143浏览
  • 光耦合器,也称为光隔离器,是一种利用光在两个隔离电路之间传输电信号的组件。在医疗领域,确保患者安全和设备可靠性至关重要。在众多有助于医疗设备安全性和效率的组件中,光耦合器起着至关重要的作用。这些紧凑型设备经常被忽视,但对于隔离高压和防止敏感医疗设备中的电气危害却是必不可少的。本文深入探讨了光耦合器的功能、其在医疗应用中的重要性以及其实际使用示例。什么是光耦合器?它通常由以下部分组成:LED(发光二极管):将电信号转换为光。光电探测器(例如光电晶体管):检测光并将其转换回电信号。这种布置确保输入和
    腾恩科技-彭工 2025-01-03 16:27 155浏览
  • 车身域是指负责管理和控制汽车车身相关功能的一个功能域,在汽车域控系统中起着至关重要的作用。它涵盖了车门、车窗、车灯、雨刮器等各种与车身相关的功能模块。与汽车电子电气架构升级相一致,车身域发展亦可以划分为三个阶段,功能集成愈加丰富:第一阶段为分布式架构:对应BCM车身控制模块,包含灯光、雨刮、门窗等传统车身控制功能。第二阶段为域集中架构:对应BDC/CEM域控制器,在BCM基础上集成网关、PEPS等。第三阶段为SOA理念下的中央集中架构:VIU/ZCU区域控制器,在BDC/CEM基础上集成VCU、
    北汇信息 2025-01-03 16:01 173浏览
  • 本文继续介绍Linux系统查看硬件配置及常用调试命令,方便开发者快速了解开发板硬件信息及进行相关调试。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。查看系统版本信息查看操作系统版本信息root@ido:/# cat /etc/*releaseDISTRIB_ID=UbuntuDISTRIB_RELEASE=20.04DISTRIB_CODENAME=focalDIS
    Industio_触觉智能 2025-01-03 11:37 138浏览
  • 物联网(IoT)的快速发展彻底改变了从智能家居到工业自动化等各个行业。由于物联网系统需要高效、可靠且紧凑的组件来处理众多传感器、执行器和通信设备,国产固态继电器(SSR)已成为满足中国这些需求的关键解决方案。本文探讨了国产SSR如何满足物联网应用的需求,重点介绍了它们的优势、技术能力以及在现实场景中的应用。了解物联网中的固态继电器固态继电器是一种电子开关设备,它使用半导体而不是机械触点来控制负载。与传统的机械继电器不同,固态继电器具有以下优势:快速切换:确保精确快速的响应,这对于实时物联网系统至
    克里雅半导体科技 2025-01-03 16:11 164浏览
  • 影像质量应用于多个不同领域,无论是在娱乐、医疗或工业应用中,高质量的影像都是决策的关键基础。清晰的影像不仅能提升观看体验,还能保证关键细节的准确传达,例如:在医学影像中,它对诊断结果有着直接的影响!不仅如此,影像质量还影响了:▶ 压缩技术▶ 存储需求▶ 传输效率随着技术进步,影像质量的标准不断提高,对于研究与开发领域,理解并提升影像质量已成为不可忽视的重要课题。在图像处理的过程中,硬件与软件除了各自扮演着不可或缺的基础角色,有效地协作能够确保图像处理过程既高效又具有优异的质量。软硬件各扮演了什么
    百佳泰测试实验室 2025-01-03 10:39 137浏览
  • 在测试XTS时会遇到修改产品属性、SElinux权限、等一些内容,修改源码再编译很费时。今天为大家介绍一个便捷的方法,让OpenHarmony通过挂载镜像来修改镜像内容!触觉智能Purple Pi OH鸿蒙开发板演示。搭载了瑞芯微RK3566四核处理器,树莓派卡片电脑设计,支持开源鸿蒙OpenHarmony3.2-5.0系统,适合鸿蒙开发入门学习。挂载镜像首先,将要修改内容的镜像传入虚拟机当中,并创建一个要挂载镜像的文件夹,如下图:之后通过挂载命令将system.img镜像挂载到sys
    Industio_触觉智能 2025-01-03 11:39 113浏览
  • 自动化已成为现代制造业的基石,而驱动隔离器作为关键组件,在提升效率、精度和可靠性方面起到了不可或缺的作用。随着工业技术不断革新,驱动隔离器正助力自动化生产设备适应新兴趋势,并推动行业未来的发展。本文将探讨自动化的核心趋势及驱动隔离器在其中的重要角色。自动化领域的新兴趋势智能工厂的崛起智能工厂已成为自动化生产的新标杆。通过结合物联网(IoT)、人工智能(AI)和机器学习(ML),智能工厂实现了实时监控和动态决策。驱动隔离器在其中至关重要,它确保了传感器、执行器和控制单元之间的信号完整性,同时提供高
    腾恩科技-彭工 2025-01-03 16:28 161浏览
  • 【工程师故事】+半年的经历依然忧伤,带着焦虑和绝望  对于一个企业来说,赚钱才是第一位的,对于一个人来说,赚钱也是第一位的。因为企业要活下去,因为个人也要活下去。企业打不了倒闭。个人还是要吃饭的。企业倒闭了,打不了从头再来。个人失业了,面对的不仅是房贷车贷和教育,还有找工作的焦虑。企业说,一个公司倒闭了,说明不了什么,这是正常的一个现象。个人说,一个中年男人失业了,面对的压力太大了,焦虑会摧毁你的一切。企业说,是个公司倒闭了,也不是什么大的问题,只不过是这些公司经营有问题吧。
    curton 2025-01-02 23:08 290浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦