【经验分享】一文了解解决大位宽效率问题的分段总线的前世今生

原创 网络交换FPGA 2022-10-03 09:47
当以太网接口的速率提升到100G以上后,用传统FPGA来实现对应的数据处理时,一定会遇到总线效率的问题。本文就分享团队对大位宽高速数据处理时采用的分段总线方法的一些心得,希望大家可以批评指正。

01


分段总线及格式


1.1 分段总线的格式

随着不断提升的以太网带宽对总线吞吐率要求的提升,需要在芯片内部采用更高的主频、更大的总线位宽,但受制程及功耗影响,总线频率不能持续提升,这就需要在总线数据位宽方面加大提升力度。下图为Achronix公司在介绍400G以太网FPGA实现时给出的结论,对于400G以太网的数据处理,意味着数据总线位宽超过1024bit,时钟频率超过724MHz,传统的FPGA在实现时很难做到时序收敛。


主要原因在于更宽的数据总线带来了总线效率的问题,针对变长数据输入的情景,当芯片内部总线位宽变大时,若每个总线字在数据传输过程中不能被有效利用,则可能导致总线效率降低。

例如,在位宽为64bit的总线上传输65字节的数据帧,其在总线上的传输格式如下图所示,第9个总线字仅用来传输1字节,导致总线效率降低,约为90.3%。

若总线位宽再进一步提升至512bit后,如下图所示,总线效率只有50.8%。

可见,在传统总线中,当传输数据量未对齐边界到总线位宽时,总线效率随位宽的拓宽而降低。

【以下内容来源于刘欢博士的论文】

为解决上述总线效率问题,需要引入分段总线格式。非分段总线每个 总线字内仅可以容纳一个数据帧的内容,当总线字不能被充分利用时(如长度为 64 字节的数据总线承载 65 字节的帧),未利用部分使用特定值(如全 0)做填充处理, 在某些帧长下,填充字段所占比例过高,导致总线效率低下。分段总线将数据总线字分为多个总线段,每个总线段可以容纳一个数据帧的内容,换言之,一个总线字由多个总线段组成,此时一个总线字可以承载多个数据帧的内容,从而降低了填充字段的影响。

分段总线在工业界与学术界均获得了关注与研究,在工业界,Xilinx 与 Intel 的 400G 和600G以太网 IP 核、PCIe IP核等的片内总线均采用了简单分段总线格式,以实现更高的总线效率;在学术界,涌现了一种新的分段总线架构:Multi Buses[1],下文分别对两种分段总 线格式进行介绍,并分析其总线效率与实现开销。

(1)Xilinx/Intel 分段总线格式

Xilinx 在其最新一代 Versal ACAP 中采用了 600G 以太网 IP 硬核[316],该 IP 核可以支持一个 400G 以太网端口+2个100G 以太网端口,对于 400G 以太网端口,用户侧采用1024比特数据总线,该数据总线分为 8 段,每段 128 比特;Intel 在其最新一代Agilex FPGA中采用Chiplet技术集成了400G 以太网[2-4],其面向用户侧接口 也采用了 1024 比特数据总线,该总线分为 16 段,每段 64 比特。Xilinx/Intel分段总线格式如图所示。

Xilinx/Intel 分段总线运行频率均为 390MHz 左右,在频率受限的前提下,通过使 用宽总线,可以实现更高的最高吞吐量;通过使用分段总线,可以在一个总线数据字中承载多个数据帧的数据,减小填充的影响,从而提升总线效率,增强对短数据帧的支持。

(2)Multi Buses 分段总线格式

最近,学术界涌现出了一种名为 Multi Buses 的新型分段总线,该总线格式如图所示,数据总线采用了 Word、Region、Block 和 Item 四个度量标准,下图仅为示意图,四种度量标准之间的数量关系可以任意定义。图中 Word 代表了总线字, 其长度与总线宽度相等;Block 与 Xilinx/Intel 分段总线格式中的总线段起到相同的 作用,即单个 Block 内仅可以承载一个数据帧的内容,未使用部分采用特定值填充;Item 即总线传输的最小单位,例如,以太网/PCIe等传输总线,其用户侧数据总线的 最小传输单位为 1 字节;Region 是 Multi Buses 引入的新概念,也是该总线的重要创新点,下面对 Region 的概念与优势进行详细介绍。

数据总线用于传输数据,而处理模块用于处理总线承载的数据,在设计总线格式时,除需要考虑总线的传输效率外,还需要顾及处理模块的实现复杂度。对于 Xilinx/Intel 分段总线,总线段的长度越小,填充字段造成的影响越小,因此可以实现更高的总线效率,但由于数据帧的结束可能发生在任意一个总线段,因此每个总线段都需要预留一个处理模块,换言之,总线效率提高的同时,设计的面积复杂度也线性提高了。

但是,需要注意的是,数据帧在传输时需要满足最小长度要求,例如,以太网帧的最小传输长度为 64 字节,数据帧的最小传输长度可能远大于总线段的长度,而处理模块处理数据时,一般以数据帧为单位。因此,如果可以把各个总线段的处理结果聚合为数据帧的处理结果,然后交由处理模块做进一步处理,如此可以有效减少处理模块的数量,进而减小面积开销。根据该思想,Multi Buses 提出了 Region 的概 念,Region 的大小与传输数据帧的最小长度紧密相关,在一个 Region 中,允许承载两个数据帧的内容,因此在一个 Region 中仅会出现一个数据帧结束,该结束数据帧的后续处理,将交由本 Region 对应的处理模块进行。

举例说明 Region 的概念与设计优势。使用 4096 比特/512 字节数据总线传输以太 网数据帧,当总线段长度为 8 字节时,总线段数量为 64,此时如果不引入 Region 的 概念,则需要 64个处理模块以完成数据帧的处理;以太网数据帧的最小长度为 64 字节,因此一个总线字中最多承载 9个数据帧的数据,并出现 8个数据帧结束,此时 56个处理模块都是空闲的。引入 Region 的概念,并将 Region 大小设置为 64 字节,此 时一个总线数据字可以分为 8个 Region,每个 Region 对应一个处理模块,数据处理模块的数量降低了 87.5%,当传输最短帧时,数据处理模块的利用率可以达到 100%。

(3)分段总线效率与面积开销分析

总线效率 𝑒𝑓𝑓𝑖𝑐𝑖𝑒𝑛𝑐𝑦 与总线段长度 𝑠𝑒𝑔𝑤𝑖𝑑𝑡ℎ、数据帧长度f𝐿𝑒𝑛的关系如下面公式所示,该公式含义为,分段总线的总线效率等于数据帧长度与所用总线段总长 度的比值,换言之,总线效率仅取决于数据帧长度与总线段长度,与 Region 的大小无关。

根据上面公式,考虑总线段长度为 8、16、32、64 字节的场景,当数据帧长度 范围为 64∼512 字节时,数据帧长、总线段长度与总线效率的关系如下图3.16a所示, 总线段长度为 8、16、32、64 字节时,对应的总线效率范围分别是 90.28%∼100%、 81.25%∼100%、67.71%∼100%、50.78%∼100%,可以发现,减小总线段长度可以保证最坏情况下的总线效率。

对于宽度为 4096 比特/512 字节的数据总线,当传输以太网帧(最小帧长 64 字节)时,对于 Multi Buses 分段总线,处理模块的数量仅与 Region 的数量有关,因此 无论分段长度如何,所需处理模块个数始终为 512/64 = 8;而对于 Xilinx/Intel 分段总线,所需处理模块数量等于总线段的数量,因此减小分段长度虽然可以提高最坏情况下的总线效率,但同时也会导致更高的面积开销。两种分段总线所需处理模块的对 比如图3.16b 所示。

【以上内容来源于刘欢博士的论文

02


分段总线实例


2.1 Xilinx PCIe IP中的总线分段

2.1.1 64bit传统总线模式

以Xilinx的PCIe2.0 IP核为例,该IP支持64bit和128bit两种总线位宽。

在64bit位宽的模式下,该IP与传统总线无异,因为64bit模式的位宽较小,且TLP报文均以32bit对界,所以不会对总线效率产生太大影响。

2.1.2 128bit分段总线模式

而在128bit位宽的模式下,该IP采用了类似分段的思想来处理接收方向的数据总线,即在一个时钟周期内,128bit的总线上可以同时允许有两个TLP帧在传输,Xilinx称其为Receiving Straddled(跨接),产生跨接的时序图如下所示:

这种模式下AXIS的tlast信号不起作用,由边带信号tuser携带sof和eof信息来标识一帧的开始及结束。红框标出的是第一帧TLP,绿框是第二帧TLP,可见在跨接情况下,128bit总线允许一个周期中传输两帧的信息,在上图表示为第二个周期传输了帧1的尾数据和帧2的TLP Head,而在帧1的尾数据D1和帧2的TLP Head(H0、H1)间隔了一个DW,所以该总线可视为两段的分段总线,在一定程度上提高了总线的利用率。

若在上图的数据传输情况中,不对128bit总线采用2 seg分段,其效率为62.5%,需要3个时钟周期;而采用2 seg分段后效率提升至了87.5%,只需2个时钟周期。

2.2 Xilinx DCMAC IP中的总线分段

DCMAC是Xilinx最新一代自适应异构计算平台Versal ACAP中采用的600G以太网IP核,支持多种速率以太网的组合,总带宽可达600Gb/s,其用户端使用1536bit位宽的AXIS总线,频率为390.625MHz。

在这种超高位宽的总线中就不能像上述的PCIe2.0 IP一样还可以选择传统总线模式了,DCMAC对AXIS总线进行了12段的分段管理,每段为128bit。如下图所示:

第一个时钟周期,信道0在段6上启动了一次传输,RX_PREAMBLEOUT0是本次传输的前导码,该传输在段11上结束,帧长最多为96字节。

第二个时钟周期,信道1在段3上结束了该信道在前面启动的传输。

第三个时钟周期,信道2在段0、段4和段8上分别启动了一次传输,且帧长都为64字节,也就是DCMAC的1536bit-12 seg分段总线可在一个时钟周期内同时接收处理三个以太网最短帧,这尤其在频繁传输小包的情况下能提高总线的传输效率。

个人理解:在分段总线中,越宽的总线需要更多的段数,因为一帧的传输都启动在一段的开头,段数少了,能够浪费的位宽就多了,效率就随之降低。但段数多了,相关处理逻辑的面积就会增加,功耗也会提高,需在效率(总线中表现为速度)、面积和功耗(PPA)中寻找平衡。

2.3 开源项目Corundum NIC中的分段存储

Corundum针对DMA的特点,采用一种分段存储器来存储DMA引擎接收的数据包或要发送给DMA引擎的数据包。

Corundum支持的MTU默认为9014字节,标准页面下MTU超过4KB的网络设备若想保证Host侧效率就不能进行socket缓冲区与DMA缓冲区间的数据复制,这就表示Host必须支持Scatter/Gather IO,而使用Scatter/Gather就意味着可能多笔DMA传输对应同一个网络数据包,Corundum使用tag号标识一个网络数据包并对outstanding提供支持,若使用普通存储器(FIFO或RAM),其存储格式可能如下图所示,不仅每一帧都会浪费一定的存储空间,还会在读取存储器时使同一帧的数据产生割裂,使后续处理成连续帧变得麻烦。

而Corundum的分段存储器可以将上图中片段①和片段②间的气泡进行消除和对齐,使一个数据包在存储和读取时都是完整连续的一帧,提高了存储效率,缩减了存储和读取的时钟周期,从而提高了存储器访问的带宽。

如下图所示,Corundum分段存储器的每个段都是一个独立的RAM,所以可以在同一个时钟周期索引存储器的不同行,这为跨行排气泡提供了可能。分段存储器的位宽是DMA总线位宽的2倍,在存储时将待存储的数据复制成三份拼接起来,根据字节首地址和长度信息进行滑动窗口操作来截取该数据在分段存储器的一行或两个相邻行中的放置位置,操作粒度为1字节,用字节掩码和段使能信号标识。

个人理解:与2.1和2.2的对总线的分段不同,Corundum对存储器的分段存储的目标是使一个网络数据包连续存储,提高其存储器读写的带宽。但是其下一个数据包不是从相邻段开始存储,而是从下一行的开头开始存储,由于后面要转换成AXIS总线进行传输,这样下一个网络数据包从分段存储器的下一行开始存储会减少转换电路的开销,更重要的是,即使从分段存储器的相邻段开始存储,在非跨行的情况下,也会对该行进行至少2次读取,这和读两行是一样的,都是两个时钟周期,并没有提高大帧之间的效率。

而对总线分段的目标是提高总线本身的传输效率,不涉及到存储器与其他总线间的转换关系,也不涉及到像DMA一样存在多个小帧组成一个大帧的情况,所以需要能在同一个总线周期传输多帧的能力,而不能像Corundum一样,没有在相邻段启动下一个大帧传输,因为这个大帧内部还有小帧,而小帧之间是排气泡的;它还不涉及到“读取”这种行为,读取的结果是没有字节掩码的,只有读取者自己知道哪些数据是有效的,这就产生了上述Corundum分段存储器如果对两个大帧进行非跨行的跨段存储,则在读取时需要对同一行读两次的情景,而总线则可通过边带信号直接携带位置信息,这样就可以在相邻两段存储两帧而不会对总线效率没有提升。

2.3 Achronix FPGA中的总线分段

参考文献:

[1] KEKELY L, CABAL J, PUŠ V, et al. Multi buses: theory and practical considerations of data bus width scaling in fpgas[C]//2020 23rd Euromicro Conference on Digital System Design (DSD). IEEE, 2020: 49-56.

[2] XILINX. Versal ACAP 600G Channelized Multirate Ethernet Subsystem (DCMAC) v1.2 LogiCORE IP Product Guide[EB/OL]. [2022-4-20]. https://docs.xilinx.com/r/en-US/pg369-dcmac. 

[3] INTEL. F-Tile Ethernet Intel® FPGA Hard IP User Guide[EB/OL]. [2022-4-20]. https://www. intel.com/content/www/us/en/docs/programmable/683023/21-4/overview-16832.html.

[4] INTEL. F-tile Architecture and PMA and FEC Direct PHY IP User Guide[EB/OL]. [2022-4-20]. https://www.intel.com/content/www/us/en/docs/programmable/683872/21-2/introduction.html.

 作者:徐铭伟、刘欢     图文排版:潘伟涛

责任编辑:潘伟涛

网络交换FPGA 秉承“工匠”精神,专注网络与交换领域FPGA开发与芯片实现,记录、分享与交流技术上的点点滴滴,与大家共同进步成长。
评论
  • 【萤火工场CEM5826-M11测评】OLED显示雷达数据本文结合之前关于串口打印雷达监测数据的研究,进一步扩展至 OLED 屏幕显示。该项目整体分为两部分: 一、框架显示; 二、数据采集与填充显示。为了减小 MCU 负担,采用 局部刷新 的方案。1. 显示框架所需库函数 Wire.h 、Adafruit_GFX.h 、Adafruit_SSD1306.h . 代码#include #include #include #include "logo_128x64.h"#include "logo_
    无垠的广袤 2024-12-10 14:03 69浏览
  • 天问Block和Mixly是两个不同的编程工具,分别在单片机开发和教育编程领域有各自的应用。以下是对它们的详细比较: 基本定义 天问Block:天问Block是一个基于区块链技术的数字身份验证和数据交换平台。它的目标是为用户提供一个安全、去中心化、可信任的数字身份验证和数据交换解决方案。 Mixly:Mixly是一款由北京师范大学教育学部创客教育实验室开发的图形化编程软件,旨在为初学者提供一个易于学习和使用的Arduino编程环境。 主要功能 天问Block:支持STC全系列8位单片机,32位
    丙丁先生 2024-12-11 13:15 45浏览
  •         在有电流流过的导线周围会感生出磁场,再用霍尔器件检测由电流感生的磁场,即可测出产生这个磁场的电流的量值。由此就可以构成霍尔电流、电压传感器。因为霍尔器件的输出电压与加在它上面的磁感应强度以及流过其中的工作电流的乘积成比例,是一个具有乘法器功能的器件,并且可与各种逻辑电路直接接口,还可以直接驱动各种性质的负载。因为霍尔器件的应用原理简单,信号处理方便,器件本身又具有一系列的du特优点,所以在变频器中也发挥了非常重要的作用。  &nb
    锦正茂科技 2024-12-10 12:57 76浏览
  • 全球知名半导体制造商ROHM Co., Ltd.(以下简称“罗姆”)宣布与Taiwan Semiconductor Manufacturing Company Limited(以下简称“台积公司”)就车载氮化镓功率器件的开发和量产事宜建立战略合作伙伴关系。通过该合作关系,双方将致力于将罗姆的氮化镓器件开发技术与台积公司业界先进的GaN-on-Silicon工艺技术优势结合起来,满足市场对高耐压和高频特性优异的功率元器件日益增长的需求。氮化镓功率器件目前主要被用于AC适配器和服务器电源等消费电子和
    电子资讯报 2024-12-10 17:09 84浏览
  • 近日,搭载紫光展锐W517芯片平台的INMO GO2由影目科技正式推出。作为全球首款专为商务场景设计的智能翻译眼镜,INMO GO2 以“快、准、稳”三大核心优势,突破传统翻译产品局限,为全球商务人士带来高效、自然、稳定的跨语言交流体验。 INMO GO2内置的W517芯片,是紫光展锐4G旗舰级智能穿戴平台,采用四核处理器,具有高性能、低功耗的优势,内置超微高集成技术,采用先进工艺,计算能力相比同档位竞品提升4倍,强大的性能提供更加多样化的应用场景。【视频见P盘链接】 依托“
    紫光展锐 2024-12-11 11:50 44浏览
  • RK3506 是瑞芯微推出的MPU产品,芯片制程为22nm,定位于轻量级、低成本解决方案。该MPU具有低功耗、外设接口丰富、实时性高的特点,适合用多种工商业场景。本文将基于RK3506的设计特点,为大家分析其应用场景。RK3506核心板主要分为三个型号,各型号间的区别如下图:​图 1  RK3506核心板处理器型号场景1:显示HMIRK3506核心板显示接口支持RGB、MIPI、QSPI输出,且支持2D图形加速,轻松运行QT、LVGL等GUI,最快3S内开
    万象奥科 2024-12-11 15:42 65浏览
  • 智能汽车可替换LED前照灯控制运行的原理涉及多个方面,包括自适应前照灯系统(AFS)的工作原理、传感器的应用、步进电机的控制以及模糊控制策略等。当下时代的智能汽车灯光控制系统通过车载网关控制单元集中控制,表现特殊点的有特斯拉,仅通过前车身控制器,整个系统就包括了灯光旋转开关、车灯变光开关、左LED前照灯总成、右LED前照灯总成、转向柱电子控制单元、CAN数据总线接口、组合仪表控制单元、车载网关控制单元等器件。变光开关、转向开关和辅助操作系统一般连为一体,开关之间通过内部线束和转向柱装置连接为多,
    lauguo2013 2024-12-10 15:53 78浏览
  • 概述 通过前面的研究学习,已经可以在CycloneVGX器件中成功实现完整的TDC(或者说完整的TDL,即延时线),测试结果也比较满足,解决了超大BIN尺寸以及大量0尺寸BIN的问题,但是还是存在一些之前系列器件还未遇到的问题,这些问题将在本文中进行详细描述介绍。 在五代Cyclone器件内部系统时钟受限的情况下,意味着大量逻辑资源将被浪费在于实现较大长度的TDL上面。是否可以找到方法可以对此前TDL的长度进行优化呢?本文还将探讨这个问题。TDC前段BIN颗粒堵塞问题分析 将延时链在逻辑中实现后
    coyoo 2024-12-10 13:28 101浏览
  • 一、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 67浏览
  • 本文介绍Linux系统(Ubuntu/Debian通用)挂载exfat格式U盘的方法,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。修改对应的内核配置文件# 进入sdk目录cdrk3562_linux# 编辑内核配置文件vi./kernel-5.10/arch/arm64/configs/rockchip_linux_defconfig注:不清楚内核使用哪个defc
    Industio_触觉智能 2024-12-10 09:44 90浏览
  •         霍尔传感器是根据霍尔效应制作的一种磁场传感器。霍尔效应是磁电效应的一种,这一现象是霍尔(A.H.Hall,1855—1938)于1879年在研究金属的导电机构时发现的。后来发现半导体、导电流体等也有这种效应,而半导体的霍尔效应比金属强得多,利用这现象制成的各种霍尔元件,广泛地应用于工业自动化技术、检测技术及信息处理等方面。霍尔效应是研究半导体材料性能的基本方法。通过霍尔效应实验测定的霍尔系数,能够判断半导体材料的导电类型、载流子浓度及载流子
    锦正茂科技 2024-12-10 11:07 64浏览
  • 我的一台很多年前人家不要了的九十年代SONY台式组合音响,接手时只有CD功能不行了,因为不需要,也就没修,只使用收音机、磁带机和外接信号功能就够了。最近五年在外地,就断电闲置,没使用了。今年9月回到家里,就一个劲儿地忙着收拾家当,忙了一个多月,太多事啦!修了电气,清理了闲置不用了的电器和电子,就是一个劲儿地扔扔扔!几十年的“工匠式”收留收藏,只能断舍离,拆解不过来的了。一天,忽然感觉室内有股臭味,用鼻子的嗅觉功能朝着臭味重的方向寻找,觉得应该就是这台组合音响?怎么会呢?这无机物的东西不会腐臭吧?
    自做自受 2024-12-10 16:34 136浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-10 16:13 105浏览
  • 时源芯微——RE超标整机定位与解决详细流程一、 初步测量与问题确认使用专业的电磁辐射测量设备,对整机的辐射发射进行精确测量。确认是否存在RE超标问题,并记录超标频段和幅度。二、电缆检查与处理若存在信号电缆:步骤一:拔掉所有信号电缆,仅保留电源线,再次测量整机的辐射发射。若测量合格:判定问题出在信号电缆上,可能是电缆的共模电流导致。逐一连接信号电缆,每次连接后测量,定位具体哪根电缆或接口导致超标。对问题电缆进行处理,如加共模扼流圈、滤波器,或优化电缆布局和屏蔽。重新连接所有电缆,再次测量
    时源芯微 2024-12-11 17:11 65浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦