首个基于FPGA开源200Gbps数据包逆解析器的设计

原创 网络交换FPGA 2021-03-06 10:24

P4改变了网络格局,因为它允许表达自定义数据包处理。近年来,有几篇著作将P4程序映射到FPGA。但是,这些工作大部分都集中在实现数据包解析器或match action阶段。迄今为止,尚未有报道提出关于FPGA的通用数据包逆解析的原理。推荐一篇2021年FPGA顶会会议论文,介绍基于FPGA开源200Gbps数据包逆解析器的设计与实现。开源链接:https://github.com/luinaudt/deparser/tree/FPGA_paper.

摘要:P4语言极大地改变了网络领域,因为它可以快速描述和实现新的网络应用程序。尽管可以使用P4语言描述各种各样的应用程序,但是当前的可编程开关体系结构对P4程序施加了很大的限制。为了解决这个缺点,人们已经探索了将FPGA作为P4应用的潜在目标。P4应用程序使用三种抽象来描述:数据包解析器,匹配操作表和数据包逆解析器,后者使用匹配操作表的结果重新组合输出数据包。尽管FPGA上的数据包解析器和匹配表的实现已在文献中得到了广泛报道,但对于数据包逆解析器并没有提出一般的设计原理。

实际上,在FPGA上实现高速高效的逆解析器仍然是一个悬而未决的问题,因为它需要大量的互连,并且必须针对P4程序量身定制该体系结构。

因此,在一些在FPGA上实现P4应用程序的工作中,逆解析器消耗了大量的芯片资源。因此,在本文中,我们通过介绍FPGA上高效和快速的逆解析器的设计原理来解决这个问题。

作为一个神器,我们将介绍一种可通过P4程序生成高效的,可诊断的析器架构的工具。我们的设计已通过基于cocotb的框架进行了验证和仿真。最终的架构在Xilinx Ultrascale + FPGA上实现,并支持200 Gbps以上的吞吐量,同时与其他解决方案相比将资源使用量减少了近10倍。

CCS概念:
• 硬件→可重新配置的逻辑应用程序; 
• 计算机系统组织→可重构计算;高级语言架构;
• 网络→编程接口。

关键词:
数据包逆解析器;图形优化;P4语言

01

INTRODUCTION

P4域特定语言(DSL)[6]重塑了网络域,因为它允许描述具有很大灵活性的自定义数据包转发应用程序。使用FPGA卸载网络任务的兴趣日益浓厚。例如,微软已经在其数据中心部署了FPGA,以实现Azure服务器的数据平面[8]。网络内计算是最近考虑使用FPGA的另一种途径[20]。

另外,最近的一些工作利用FPGA可重配置性来创建可编程数据平面并实现P4应用[5、13、21]。

如图1所示,P4应用程序包含三个抽象:数据包解析器,处理阶段(匹配动作表)和数据包逆解析器(第2.2节)。尽管已经广泛探索了FPGA上高效数据包解析器的设计[3、5、19],但很少有精力致力于高效数据包逆解析器的实现。首先,据我们所知,仅一篇论文涵盖了该主题[7]。然而,Cabal等人[7]仅报告了100 Gbps数据包逆解析器的FPGA资源消耗,而未涵盖设计原理和微体系结构细节。

第二,如Luinaud等[16]观察到,数据包逆分解器可能会消耗超过80%的资源来实现一个完整的流水线,这会危害FPGA来实现更复杂的P4应用程序的能力。

本文介绍了一种开源代码解决方案,可在FPGA上生成高效且高速的数据包逆解析器。它为FPGA数据包逆解析器的设计原理奠定了基础。它包括一个体系结构和一个编译器,可从P4程序生成一个逆解析器。

用Python描述了解析器编译器(第4节),并为提出的解析器体系结构生成了可综合的VHDL代码。

生成的架构利用了FPGA固有的可配置性,从而避免了无法在FPGA上有效实现的硬件构造,例如交叉开关或桶形移位器[1,25]。
仿真环境基于cocotb [11],它允许使用几个现成的Python包(例如Scapy)来生成测试用例。另外,可以将测试中的设计与虚拟网络接口[12]连接起来。结果,可以使用P4行为参考模型来进行行为验证[17]。

已针对各种数据包头评估了生成的体系结构。评估显示,与最新解决方案(第5节)相比,生成的逆解析器支持200 Gbps以上的数据包吞吐量,同时将资源使用量减少10倍以上。

本文的贡献如下:
• 利用FPGA可配置性(§3)的解析器架构;
• 开源P4-to-VHDL数据包逆解析器编译器(第4节);
• 基于cocotb的仿真环境,可简化解析器验证(第5节)。

02

数据包处理

本节介绍P4语言以及如何组织P4程序组件来描述数据包处理。
>2.1 P4语言
P4 [6]是命令性DSL,用于描述可编程数据平面上的自定义数据包处理。
· 2.1.1 P4程序概述
构成P4程序的组件有四个:标头,解析器,控制和switch。报头是由特定宽度的字段和有效位组成的结构。标头的结构用于定义可以由P4程序处理的标头集。解析器块表示顺序和提取包头的方式。控制块描述了对标头执行的操作。
· 2.1.2 控制操作
在控制块中,可以执行多种操作类型来修改标头。逆解析器需要关注两个特定的操作setValid和setInvalid,这两个操作可分别用于将标头有效性位设置为有效或无效。

 在P4中,控制块还实现了解析逻辑。这些块由一系列的emit语句组成。首先,这些语句的顺序决定了标题的发出顺序。

其次,仅在设置了有效位的情况下才发送头。
由于发出语句的顺序决定了报头的发出顺序,并且由于可以由先前的控制块更改有效性位,因此逆解析器必须能够在运行时插入或删除报头。
>2.2 P4程序组件
本文考虑了Benáček等人提出的交换结构[5]由三部分组成:解析器,处理部分和逆解析器,如图1所示。

解析器。解析器将数据包作为输入,并生成数据包头矢量(PHV)和数据包有效负载。在我们的设计中,我们假设PHV由两部分组成:包含标头数据的PHV_data总线和指示每个标头组件有效性位的位图矢量PHV_valid总线。我们还假设数据包有效负载是通过流总线发送的,第一个字节位于位置0。

处理过程。处理部分从解析器中获取PHV作为输入,并输出修改后的PHV,并将其转发给逆解析器。PHV上的操作可以是标头数据修改或标头有效性位更改。

解析器。逆解析器模块将来自处理部分的PHV和来自解析器的有效负载作为输入。它输出要在流式总线上发送的数据包。

03

Deparser架构原则

在本节中,我们介绍Deparser架构原则。首先,我们介绍一个Deparser抽象机。其次,我们介绍了Deparser I / O信号。第三,我们介绍了拟议的Deparser的微体系结构。我们所有的设计选择都使用FPGA固有的可配置性,并为Deparser编译器提供可配置的模块。
>3.1 Deparser抽象机
Deparser抽象机如图2所示。在此体系结构中,我们假设PHV已缓冲并与PHV有效向量一起到达了Deparser。

算法1展示了PHV移位器模块的伪代码,而算法2展示了有效载荷移位器。

在FPGA上实现逆解析器的主要限制因素是头插入所需的大量互连和桶形移位器。为了限制这些块的使用,我们基于标头和有效载荷构造了一个新数据包。因此,由于可以在编译时完全推断出P4解析逻辑,并且由于FPGA是可重新配置的,因此我们为指定的P4程序定制了逆解析器架构,以减轻这些限制因素。

现在,我们介绍了Deparser的输入和输出。
>3.2 输入和输出
该逆解析器具有3个输入和1个输出。输出Pkt_out和输入有效负载是AXI4流总线[2]。这两个总线的数据宽度是一个编译时间参数。两个输入PHV_data和PHV_valid分别包含标题数据和要解析的有效性位。在编译P4应用程序时,将确定PHV_data和PHV_valid的宽度。
>3.3 微体系结构细节
在内部,逆解析器是围绕三个块构建的:PHV移位器,有效负载移位器和选择器。PHV移位器获取PHV_data和PHV_valid作为输入,并输出要发送的头帧。

有效载荷移位器接收有效载荷和PHV_valid作为输入,并生成有效载荷数据帧。有效负载移位器和PHV移位器都输入到选择器。选择器根据有效负载移位器和PHV移位器接收到的状态生成Pkt_out帧。
· 3.3.1 PHV移位器
PHV移位器将PHV位移位以构建数据包。它由图3所示的标头移位器组成。标头移位器的最大数量等于Pkt_out总线宽度。

标头移位器具有三个输入:PHV_data,PHV_valid和启动信号。它输出:标头数据,有效的标头和最后的标头。PHV_valid和启动输入连接到状态机模块。状态机模块驱动标题有效和标题最后输出。PHV_data输入连接到驱动头数据输出的多路复用器。多路复用器根据状态机模块的一个输出选择PHV_data的位之一。状态机是从逆解析器图(§4)以及多路复用器的输入数量中得出的。
· 3.3.2有效负载转换器
有效负载移位器将有效负载与发出的标题对齐。有效负载移位器的基本模块如图4所示。它以数据,Ctrl和Keep作为输入,并输出有效负载数据和有效负载保持信号。数据总线和Keep总线分别连接到Deparser的有效负载输入总线的AXI tdata和tkeep信号。该总线的每个字节都连接到图4中多路复用器1的一个输入。Keep信号的每个位都连接到多路复用器3的一个输入。Ctrl信号确定应选择多路复用器1和3的哪个输入。最后,可以注册多路复用器1和3的输出,以将数据输出延迟一个周期。多路复用器2和4选择当前值或延迟值。Ctrl总线的值由在编译时生成的较小且恒定的关联内存设置。
· 3.3.3 选择器
该模块在有效负载移位器和PHV移位器之间选择正确的输出数据,并生成AXI4流输出信号数据包数据,数据包保留和数据包最后。选择器将有效负载移位器的输出和PHV移位器的输出作为输入,如图5所示。

分组数据和分组保持信号由块数据选择分配。该块被复制以分配所有分组数据位。

根据输入信号“具有有效负载”指示的有效负载的存在,“最后一个包”信号是“ PHV最后”或“有效负载最后”。
· 3.3.4 FPGA上的多路复用器
所呈现的不同构造块高度依赖于FPGA上的多路复用器实现。我们选择使用多路复用器,因为它们已在FPGA上有效实现。实际上,一个16:1的多路复用器在Xilinx FPGA上消耗了一个切片[23]。虽然拥有一个非常大的多路复用器会变得很昂贵,但我们知道每个多路复用器的输入数量将由编译器减少到最少(第4.2.2节)。

04

生成逆解析器

逆解析器可以表示为有向无环图(DAG)。为了生成Deparser DAG,使用p4c-bm2-ss编译器将P4程序编译为JSON文件[18]。生成的JSON文件然后用于生成一个Deparser DAG。可以优化此DAG,但是此优化留给以后的工作。本节的其余部分介绍了从Deparser DAG生成不同的Deparser模块的过程。
>4.1 Deparser DAG
用于以太网,IPv4,IPv6,TCP和UDP数据包的Deparser DAG的示例如图6所示。DAG的每个节点(不包括开头和结尾)均表示一个报头。DAG的每个箭头表示可能要发出的下一个报头。起始和结束之间的每个路径代表可能发出的一组报头。

表1列出了所有可能的路径。

为了从DAG获得逆解析器,有两个部分。第一部分对deparser图进行变换,以生成PHV移位器。第二部分使用deparser图生成净荷移位器。

>4.2 PHV移位器的生成

为了生成PHV移位器的标题移位器,我们构建了deparser图的sub-DAG。每个子DAG代表一个报头移位器块(第3.3.1节)。由于大多数网络协议都是按字节对齐的[5],因此我们为每个输出字节构建一个sub-DAG。这允许合并PHV移位器状态机,因此降低了逆解析器的体系结构复杂性。
· 4.2.1子DAG的生成
在子DAG中,每个节点都包含标题和要提取的字节。每个边缘都指示要到达相应下一节点的报头有效性条件。我们提出了算法3来生成子DAG。
所提出的算法通过遍历Deparser图来遍历所有可能的标头发射序列。我们将序列的每个字节分配给一个子DAG。当子DAG第一次处理来自特定标头的字节时,我们将边缘条件设置为此标头。图7显示了使用算法3使用图6的deparserDAG和128位输出总线生成的子DAG。
· 4.2.2 Sub-DAG转换
子DAG转换分为两个部分:标头移位器多路复用器生成和状态机生成。生成的多路复用器的输入数量等于子DAG中的节点数量。状态机是从子DAG派生的,其中每个节点代表一个状态,每个边沿代表一个过渡。头字节位置被转换为多路复用器的输入位置。
>4.3有效载荷移位器关联内存的创建
有效载荷移位器体系结构在第3.3.2节中介绍。我们使用该图生成驱动Ctrl信号的关联内存。使用deparser图可以分两步生成此内存。首先,我们通过查看Deparser图表中开始和结束之间的所有可能路径来确定可能的有效标头的设置PH。集合PH中的每个元素ph由PHV_valid总线值和所有标头宽度的总和组成。

建立集合PH后,对于每个可能的元素ph∈PH,我们为Ctrl分配一个值。对于每个可能的PHV_valid值,我们计算有效负载的偏移量。使用等式Offset = phw(mod w)获得偏移,其中w是总线宽度,而phw表示发出的标头的总位数。最后,我们为位于偏移值以下的每个有效负载移位器设置连接到图4的多路复用器2和4的Ctrl位的值。

05

结果

本节介绍了这项工作的结果。首先,我们描述实验设置。然后,我们介绍了编译器参数对生成的体系结构的影响。最后,我们将实现结果与以前的工作进行比较。
>5.1实验设置
我们为以下三个协议栈生成了逆解析器:
•T1:以太网,IPv4 / IPv6,TCP / UDP
•T2:以太网,IPv4 / IPv6,TCP / UDP,ICMP / ICMPv6
•T3:以太网,2×VLAN,2×MPLS,IPv4 / IPv6,  TCP / UDP,ICMP / ICMPv6

为了验证我们的工作,我们基于cocotb框架[11]开发了一个仿真平台。我们为AXI4-stream总线开发了cocotb驱动程序和监视器,从而使我们能够快速评估不同的Deparser配置。Xilinx Vivado 2019.1用于合成和布局布线。为了实现可重复性,我们的代码是开放的1。
开源地址:https://github.com/luinaudt/deparser/tree/FPGA_paper

>5.2编译器参数的影响
为了评估图形复杂度的影响,我们从非优化的deparserDAG和逆解析器DAG(被视为优化的逆解析器DAG)生成并合成了逆解析器。使用解析器DAG作为逆解析器DAG是在P4 14 [9]中提出的实现。表2列出了针对Xilinx xcvu3p-3 FPGA时,每个综合运行的Block RAM(BRAM),查找表(LUT)和触发器(FF)的使用情况。结果表明,两个因素主导着资源的使用:复杂度和数据总线宽度。


图的复杂度。图形的复杂性受逆解析器代码和图形简化程度的影响。由于简化的Deparser DAG具有较少的边,因此可减少其PHV_shifter的状态机和有效负载移位器的关联内存的大小。另外,每个子DAG需要更少的节点。结果,减少了PHV移位器复用器的输入数量。例如,在T1中,有5个标头。对于未优化的解析器DAG,这将导致总共32条路径,而简化的逆解析器图仅包含7条路径。
总线宽度。除了图形复杂度之外,总线宽度还会影响资源消耗。提出的设计具有6个时钟周期的延迟。而且,输出数据包的等待时间是要发射的总报头长度和总线宽度的函数。如表2所示,对于大型公交车,与较小型公交车相比,最坏情况的等待时间减少了。标头发射的最坏情况延迟可以通过以上公式计算。

同样,增加总线宽度会增加LUT和FF的使用率。对于64位至256位不等的数据总线,资源使用量会略有增加,但是对于512位总线而言,这种增加变得非常重要。有两个因素可以解释这种较高的复杂性。首先,多路复用器的最小数量以每个输出位1个多路复用器的速率增加。其次,对于较大的总线,由于标头对齐,因此对于每个输出帧,可以将更多标头附加到总线上。

因此,PHV移位器的可能输入的重用较少。
>5.3实现结果
我们还为三个协议栈(具有512位数据总线)实现了非优化的Deparser DAG。我们将Deparser实施结果与Xilinx SDNet 2017.4 [24]和Benáček等人生成的Deparser进行了比较[5]。这些实现的结果显示在表3中。我们的Deparser支持的吞吐量比Benáček等人提出的Deparser大20 Gpbs[5],同时将资源使用量减少5倍。

与Xilinx SDNet [24]生成的逆解析器相比,在最坏的情况下,我们的逆解析器支持的吞吐量低60 Gbps,但我们的逆解析器使用的资源却少了近10倍。

比较实施和综合结果时,资源消耗保持稳定。在T1和T2的情况下,布局布线后的性能几乎相同。但是,可以通过对多路复用器进行流水线化来提高最大时钟频率,而不会显着影响资源消耗。实际上,生成的体系结构每个切片消耗少于一个FF,而典型的切片则具有八个FF。结果,未使用的FF可以用于流水线复用器,因为它们不太可能由其他模块驱动。

06

相关工作

Wang等提出了P4FPGA [22]。P4FPGA是面向中等性能FPGA(10 Gbps)的开源且与供应商无关的P4-to-FPGA编译器。Ibanez等[14]建议将Xilinx SDNet P4编译器[24]集成到现成的NetFPGA板[15]中。

这项工作暴露了SDNet在实现逆解析器逻辑方面的局限性,事实证明这是所生成管道中资源消耗最大的模块[16]。确实,根据我们的实验,我们观察到Xilinx SDNet无法优化分解图中的不可达路径。

Benáček等 [5]提出了自动生成基于P4的数据包解析器和VHDL的逆解析器。这项工作扩展到了逆解析器之前对数据包解析器的研究[4]。但是,由于优化是从数据包解析器的设计中得出的,因此没有涵盖该逆解析器的体系结构和设计原理。其他数据包解析器研究包括[3,10,19]。. Gibb等 [10]介绍了数据包解析器的一般设计原理,但未涵盖数据包逆解析器的情况。另外,Attig和Brebner [3]提出了一种语言来代表解析器,并带有架构和编译器,以在FPGA上实现它们。另外,圣地亚哥·达席尔瓦(Santiago da Silva)等人。[19]提议使用图优化,类似于我们的工作,以简化解析器管道。

07

结论

P4改变了网络格局,因为它允许表达自定义数据包处理。近年来,有几篇著作将P4程序映射到FPGA。但是,这些工作大部分都集中在实现数据包解析器或match action阶段。迄今为止,尚未提出关于FPGA的通用数据包逆解析原理。确实,先前关于生成解析逻辑的工作的幼稚方法已经使该模块的硬件实现在FPGA上非常昂贵。在这项工作中,我们通过介绍一套在FPGA上实现数据包逆解析器的设计原则来解决这个问题。在我们的工作中,我们提出了一种与FPGA微体系结构紧密耦合的体系结构,以利用FPGA固有的可配置性。

我们还演示了简化逆解析器图以减少资源消耗的重要性。我们的结果表明,我们提出的去解析器体系结构跨越了100 Gbps的吞吐量边界,同时将资源消耗减少了一个数量级。最后,为了实现可复制性,我们开源了我们的框架和基于cocotb的集成仿真环境。

致谢:作者感谢Kaloom的Thibaut Stimpfling和Bochra Boughzala的深刻见解。这项工作得到了Kaloom,英特尔,Noviflow,加拿大自然科学与工程研究委员会和Prompt的支持。


> 参考文献


[1] M. S. Abdelfattah and V. Betz. 2012. Design tradeoffs for hard and soft FPGAbased Networks-on-Chip. In 2012 International Conference on Field-Programmable Technology. 95–103.

[2] AMBA. 2010. Axi4-stream protocol specification. Technical Report. ARM®.

[3] Michael Attig and Gordon Brebner. 2011. 400 Gb/s Programmable Packet Parsing on a Single FPGA. In Proceedings of the 2011 ACM/IEEE Seventh Symposium on Architectures for Networking and Communications Systems (ANCS ’11). IEEE Computer Society, Washington, DC, USA, 12–23. https://doi.org/10.1109/ANCS.2011.12

[4] P. Benácek, V. Pu, and H. Kubátová. 2016. P4-to-VHDL: Automatic Generation of 100 Gbps Packet Parsers. In 2016 IEEE 24th Annual International Symposium on Field-Programmable Custom Computing Machines (FCCM). 148–155.

[5] Pavel Benáček, Viktor Puš, Hana Kubátová, and Tomáš Čejka. 2018. P4-ToVHDL: Automatic generation of high-speed input and output network blocks.Microprocessors and Microsystems 56 (2018), 22 – 33. https://doi.org/10.1016/j.micpro.2017.10.012

[6] Pat Bosshart, Dan Daly, Glen Gibb, Martin Izzard, Nick McKeown, Jennifer Rexford, Cole Schlesinger, Dan Talayco, Amin Vahdat, George Varghese, and David Walker. 2014. P4: Programming Protocol-Independent Packet Processors.SIGCOMM Comput. Commun. Rev. 44, 3 (July 2014), 87–95. https://doi.org/10.1145/2656877.2656890

[7] J. Cabal, P. Benacek, J. Foltova, and J. Holub. 2019. Scalable P4 Deparser for Speeds Over 100 Gbps. In 2019 IEEE 27th Annual International Symposium on Field-Programmable Custom Computing Machines (FCCM). 323–323. https://doi.org/10.1109/FCCM.2019.00064

[8] A. M. Caulfield, E. S. Chung, A. Putnam, H. Angepat, J. Fowers, M. Haselman, S. Heil, M. Humphrey, P. Kaur, J. Kim, D. Lo, T. Massengill, K. Ovtcharov, M.Papamichael, L. Woods, S. Lanka, D. Chiou, and D. Burger. 2016. A cloud-scale acceleration architecture.In2016 49th Annual IEEE/ACM International Symposium on Microarchitecture(MICRO).1–13. https://doi.org/10.1109/MICRO.2016.7783710

[9] P4 Language Consortium. 2017. The P4 Language Specification, version 1.0.4.Technical Report. https://p4.org/p4-spec/p4-14/v1.0.4/tex/p4.pdf

[10] G. Gibb, G. Varghese, M. Horowitz, and N. McKeown. 2013. Design principles for packet parsers. In Architectures for Networking and Communications Systems.13–24.

[11] Chris Higgs and Stuart Hodgeson.2020. cocotb. https://github.com/cocotb/cocotb

[12] Chris Higgs and Stuart Hodgeson. 2020. Tutorial: Ping — cocotb 1.4.0 documentation. https://docs.cocotb.org/en/stable/ping_tun_tap.html

[13] Stephen Ibanez, Gordon Brebner, Nick McKeown, and Noa Zilberman. 2019. The P4->NetFPGA Workflow for Line-Rate Packet Processing. In Proceedings of the 2019 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays (FPGA ’19). Association for Computing Machinery, New York, NY, USA, 1–9.https://doi.org/10.1145/3289602.3293924

[14] Stephen Ibanez, Gordon Brebner, Nick McKeown, and Noa Zilberman. 2019. The P4->NetFPGA Workflow for Line-Rate Packet Processing. In Proceedings of the 2019 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays (FPGA ’19). Association for Computing Machinery, New York, NY, USA, 1–9.https://doi.org/10.1145/3289602.3293924

[15] J. W. Lockwood, N. McKeown, G. Watson, G. Gibb, P. Hartke, J. Naous, R. Raghuraman, and J. Luo. 2007. NetFPGA–An Open Platform for Gigabit-Rate Network Switching and Routing. In 2007 IEEE International Conference on Microelectronic Systems Education (MSE’07). 160–161.

[16] T. Luinaud, T. Stimpfling, J. S. da Silva, Y. Savaria, and J. M. P. Langlois. 2020.Bridging the Gap: FPGAs as Programmable Switches. In 2020 IEEE 21st International Conference on High Performance Switching and Routing (HPSR). 1–7.https://doi.org/10.1109/HPSR48589.2020.9098978

[17] p4Lang. 2020. behavioral-model: The reference P4 software switch. https://github.com/p4lang/behavioral-model

[18] p4lang. 2020. p4c: P4 16 reference compiler. https://github.com/p4lang/p4c

[19] Jeferson Santiago da Silva, François-Raymond Boyer, and J.M. Pierre Langlois.2018. P4-Compatible High-Level Synthesis of Low Latency 100 Gb/s Streaming Packet Parsers in FPGAs. In Proceedings of the 2018 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays (FPGA ’18). Association for Computing Machinery,NewYork,NY,USA,147–152. https://doi.org/10.1145/3174243.3174270

[20] Yuta Tokusashi, Huynh Tu Dang, Fernando Pedone, Robert Soulé, and Noa Zilberman. 2019. The Case For In-Network Computing On Demand. In Proceedings of the Fourteenth EuroSys Conference 2019 (EuroSys ’19). Association for Computing Machinery, New York, NY, USA, Article 21, 16 pages. https: //doi.org/10.1145/3302424.3303979

[21] Han Wang, Robert Soulé, Huynh Tu Dang, Ki Suh Lee, Vishal Shrivastav, Nate Foster, and Hakim Weatherspoon. 2017. P4FPGA: A Rapid Prototyping Framework for P4. In Proceedings of the Symposium on SDN Research (SOSR ’17). Association for Computing Machinery, New York, NY, USA, 122–135.https://doi.org/10.1145/3050220.3050234

[22] Han Wang, Robert Soulé, Huynh Tu Dang, Ki Suh Lee, Vishal Shrivastav, Nate Foster, and Hakim Weatherspoon. 2017. P4FPGA: A Rapid Prototyping Framework for P4. In Proceedings of the Symposium on SDN Research (SOSR ’17). Association for Computing Machinery, New York, NY, USA, 122–135.https://doi.org/10.1145/3050220.3050234

[23] Xilinx ® . 2016. 7 Series FPGAs Configurable Logic Block. Technical Report. https:// www.xilinx.com/support/documentation/user_guides/ug474_7Series_CLB.pdf

[24] Xilinx ® . 2018. SDnet Development Environment. https://www.xilinx.com/ products/design-tools/software-zone/sdnet.html

[25] Peter Yiannacouras, Jonathan Rose, and J. Gregory Steffan. 2005. The Microarchitecture of FPGA-Based Soft Processors. In Proceedings of the 2005 International Conference on Compilers, Architectures and Synthesis for Embedded Systems (CASES ’05). Association for Computing Machinery, New York, NY, USA, 202–212.https://doi.org/10.1145/1086297.1086325





THE  END


图文排版:祝钊华  责任编辑:潘伟涛

我知道你

在看


网络交换FPGA 秉承“工匠”精神,专注网络与交换领域FPGA开发与芯片实现,记录、分享与交流技术上的点点滴滴,与大家共同进步成长。
评论
  • 一、SAE J1939协议概述SAE J1939协议是由美国汽车工程师协会(SAE,Society of Automotive Engineers)定义的一种用于重型车辆和工业设备中的通信协议,主要应用于车辆和设备之间的实时数据交换。J1939基于CAN(Controller Area Network)总线技术,使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps,用于车载电子控制单元(ECU)之间的通信和控制。小北同学在之前也对J1939协议做过扫盲科普【科普系列】SAE J
    北汇信息 2024-12-11 15:45 99浏览
  • 时源芯微——RE超标整机定位与解决详细流程一、 初步测量与问题确认使用专业的电磁辐射测量设备,对整机的辐射发射进行精确测量。确认是否存在RE超标问题,并记录超标频段和幅度。二、电缆检查与处理若存在信号电缆:步骤一:拔掉所有信号电缆,仅保留电源线,再次测量整机的辐射发射。若测量合格:判定问题出在信号电缆上,可能是电缆的共模电流导致。逐一连接信号电缆,每次连接后测量,定位具体哪根电缆或接口导致超标。对问题电缆进行处理,如加共模扼流圈、滤波器,或优化电缆布局和屏蔽。重新连接所有电缆,再次测量
    时源芯微 2024-12-11 17:11 99浏览
  • 天问Block和Mixly是两个不同的编程工具,分别在单片机开发和教育编程领域有各自的应用。以下是对它们的详细比较: 基本定义 天问Block:天问Block是一个基于区块链技术的数字身份验证和数据交换平台。它的目标是为用户提供一个安全、去中心化、可信任的数字身份验证和数据交换解决方案。 Mixly:Mixly是一款由北京师范大学教育学部创客教育实验室开发的图形化编程软件,旨在为初学者提供一个易于学习和使用的Arduino编程环境。 主要功能 天问Block:支持STC全系列8位单片机,32位
    丙丁先生 2024-12-11 13:15 57浏览
  • 在智能化技术快速发展当下,图像数据的采集与处理逐渐成为自动驾驶、工业等领域的一项关键技术。高质量的图像数据采集与算法集成测试都是确保系统性能和可靠性的关键。随着技术的不断进步,对于图像数据的采集、处理和分析的需求日益增长,这不仅要求我们拥有高性能的相机硬件,还要求我们能够高效地集成和测试各种算法。我们探索了一种多源相机数据采集与算法集成测试方案,能够满足不同应用场景下对图像采集和算法测试的多样化需求,确保数据的准确性和算法的有效性。一、相机组成相机一般由镜头(Lens),图像传感器(Image
    康谋 2024-12-12 09:45 56浏览
  • 全球知名半导体制造商ROHM Co., Ltd.(以下简称“罗姆”)宣布与Taiwan Semiconductor Manufacturing Company Limited(以下简称“台积公司”)就车载氮化镓功率器件的开发和量产事宜建立战略合作伙伴关系。通过该合作关系,双方将致力于将罗姆的氮化镓器件开发技术与台积公司业界先进的GaN-on-Silicon工艺技术优势结合起来,满足市场对高耐压和高频特性优异的功率元器件日益增长的需求。氮化镓功率器件目前主要被用于AC适配器和服务器电源等消费电子和
    电子资讯报 2024-12-10 17:09 92浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-10 16:13 113浏览
  • 铁氧体芯片是一种基于铁氧体磁性材料制成的芯片,在通信、传感器、储能等领域有着广泛的应用。铁氧体磁性材料能够通过外加磁场调控其导电性质和反射性质,因此在信号处理和传感器技术方面有着独特的优势。以下是对半导体划片机在铁氧体划切领域应用的详细阐述: 一、半导体划片机的工作原理与特点半导体划片机是一种使用刀片或通过激光等方式高精度切割被加工物的装置,是半导体后道封测中晶圆切割和WLP切割环节的关键设备。它结合了水气电、空气静压高速主轴、精密机械传动、传感器及自动化控制等先进技术,具有高精度、高
    博捷芯划片机 2024-12-12 09:16 67浏览
  • 首先在gitee上打个广告:ad5d2f3b647444a88b6f7f9555fd681f.mp4 · 丙丁先生/香河英茂工作室中国 - Gitee.com丙丁先生 (mr-bingding) - Gitee.com2024年对我来说是充满挑战和机遇的一年。在这一年里,我不仅进行了多个开发板的测评,还尝试了多种不同的项目和技术。今天,我想分享一下这一年的故事,希望能给大家带来一些启发和乐趣。 年初的时候,我开始对各种开发板进行测评。从STM32WBA55CG到瑞萨、平头哥和平海的开发板,我都
    丙丁先生 2024-12-11 20:14 56浏览
  • RK3506 是瑞芯微推出的MPU产品,芯片制程为22nm,定位于轻量级、低成本解决方案。该MPU具有低功耗、外设接口丰富、实时性高的特点,适合用多种工商业场景。本文将基于RK3506的设计特点,为大家分析其应用场景。RK3506核心板主要分为三个型号,各型号间的区别如下图:​图 1  RK3506核心板处理器型号场景1:显示HMIRK3506核心板显示接口支持RGB、MIPI、QSPI输出,且支持2D图形加速,轻松运行QT、LVGL等GUI,最快3S内开
    万象奥科 2024-12-11 15:42 80浏览
  • 智能汽车可替换LED前照灯控制运行的原理涉及多个方面,包括自适应前照灯系统(AFS)的工作原理、传感器的应用、步进电机的控制以及模糊控制策略等。当下时代的智能汽车灯光控制系统通过车载网关控制单元集中控制,表现特殊点的有特斯拉,仅通过前车身控制器,整个系统就包括了灯光旋转开关、车灯变光开关、左LED前照灯总成、右LED前照灯总成、转向柱电子控制单元、CAN数据总线接口、组合仪表控制单元、车载网关控制单元等器件。变光开关、转向开关和辅助操作系统一般连为一体,开关之间通过内部线束和转向柱装置连接为多,
    lauguo2013 2024-12-10 15:53 93浏览
  • 近日,搭载紫光展锐W517芯片平台的INMO GO2由影目科技正式推出。作为全球首款专为商务场景设计的智能翻译眼镜,INMO GO2 以“快、准、稳”三大核心优势,突破传统翻译产品局限,为全球商务人士带来高效、自然、稳定的跨语言交流体验。 INMO GO2内置的W517芯片,是紫光展锐4G旗舰级智能穿戴平台,采用四核处理器,具有高性能、低功耗的优势,内置超微高集成技术,采用先进工艺,计算能力相比同档位竞品提升4倍,强大的性能提供更加多样化的应用场景。【视频见P盘链接】 依托“
    紫光展锐 2024-12-11 11:50 62浏览
  • 我的一台很多年前人家不要了的九十年代SONY台式组合音响,接手时只有CD功能不行了,因为不需要,也就没修,只使用收音机、磁带机和外接信号功能就够了。最近五年在外地,就断电闲置,没使用了。今年9月回到家里,就一个劲儿地忙着收拾家当,忙了一个多月,太多事啦!修了电气,清理了闲置不用了的电器和电子,就是一个劲儿地扔扔扔!几十年的“工匠式”收留收藏,只能断舍离,拆解不过来的了。一天,忽然感觉室内有股臭味,用鼻子的嗅觉功能朝着臭味重的方向寻找,觉得应该就是这台组合音响?怎么会呢?这无机物的东西不会腐臭吧?
    自做自受 2024-12-10 16:34 153浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-11 17:58 69浏览
我要评论
1
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦