CN114138707A - 一种基于fpga的数据传输系统 - Google Patents
一种基于fpga的数据传输系统 Download PDFInfo
- Publication number
- CN114138707A CN114138707A CN202111448732.3A CN202111448732A CN114138707A CN 114138707 A CN114138707 A CN 114138707A CN 202111448732 A CN202111448732 A CN 202111448732A CN 114138707 A CN114138707 A CN 114138707A
- Authority
- CN
- China
- Prior art keywords
- module
- data
- tcp
- fpga
- receiving
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于FPGA的数据传输系统,其特征在于:包括主机端和FPGA端;所述FPGA端包括:CMAC模块、TCP/IP模块和用户自定义加速模块;IP模块用于接收网络数据包转发至对应的上层模块并将来自上层模块的数据校验封装后发送给以太网模块;TOE模块包括通用TOE模块和镜像TOE模块,所述通用TOE模块发送和接收TCP数据,并完成TCP拥塞控制;所述镜像TOE模块用于对交换机镜像端口开发完成TCP数据的接收和重排;用户自定义加速模块,用于部署数据加速程序硬件,处理接收到的数据,将处理完的数据发送至TCP/IP模块或主机端。本发明实现主机内存、全局内存和网络通信之间的低延迟数据传输及计算。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种基于FPGA的数据传输系统。
背景技术
目前,网络传输速率增速远超CPU的算力增速,同时,CPU适合对串行的复杂的指令操作进行处理,对大量并行固定模式的计算并不适合。传统的以软件方式处理网络协议的主机资源消耗逐年提高,软件方式的TCP/IP,吞吐率低,更重要的是延迟高,延迟不稳定,不能满足一些对网络延迟有要求的应用场景。
随着市场规模不断扩大,各种应用场景层出不穷,单一加速芯片设计已经难以满足复杂多样性的加速需求。FPGA(Field Programmable Gate Array)凭借其可重构、高并行、低延时等特点成为数据中心的首选可编程硬件,如在微软的ConfigurableCloud、亚马逊的AQUA[3]等数据中心项目中,均选择FPGA作为CPU的协处理器。
Eskandari等人提出一种基于SDAccel开发的系统,使用HLS分别实现了10GbpsTCP协议和IP协议的功能,并将HLS内核映射到不同的FPGA上。但是针对特定场景,如在高频金融交易场景下,由于交易所权限限制等因素,数据需要从交换机的镜像端口获得,传统的TCP握手连接难以建立,同时将完整的TCP/IP协议进行FPGA卸载会产生冗余操作,造成信息的滞后性,这在实时性要求极高的金融交易中是难以忍受的。此外,金融交易受经济、政治等因素影响,需要频繁调整策略,修正参数,对FPGA的可重构性有很高的期望。传统的FPGA开发方式已经无法完美适应该通信场景,且传统FPGA开发方式开发周期长,对上层开发人员不友好,而最新的Vitis FPGA开发框架下缺乏对网络功能的支持。
发明内容
本发明的目的是提供一种基于FPGA的数据传输系统,实现主机内存、全局内存和网络通信之间的低延迟数据传输及计算。
为了解决上述技术问题,本发明提供了一种基于FPGA的数据传输系统,包括主机端和FPGA端;
所述FPGA端包括:
CMAC模块,包括以太网模块,用于接收和发送网络数据包;
TCP/IP模块,包括IP模块和上层协议模块,所述IP模块用于接收网络数据包转发至对应的上层模块并将来自上层模块的数据校验封装后发送给以太网模块;所述上层协议模块包括TOE模块,所述TOE模块包括通用TOE模块和镜像TOE模块,所述通用TOE模块发送和接收TCP数据,并完成TCP拥塞控制;所述镜像TOE模块用于对交换机镜像端口开发完成TCP数据的接收和重排,并将解析出的TCP数据传输给用户自定义加速模块;
用户自定义加速模块,用于部署数据加速程序硬件,处理接收到的数据,将处理完的数据发送至TCP/IP模块或主机端;
其中,所述CMAC模块、TCP/IP模块和用户自定义加速模块之间采用AXI4-Stream接口进行数据交互;
所述主机端用于数据的读写、内存分配以及与所述FPGA之间的调度与管理。
作为本发明的进一步改进,所述以太网模块为10G/25G以太网模块,所述以太网模块在每个FPGA端单独配置;所述以太网模块通过GT引脚连接网络接口,与外部网络进行数据交互。
作为本发明的进一步改进,所述CMAC模块和所述TCP/IP模块之间通过AXI4-Stream接口相连,用于接收和发送网络数据包。
作为本发明的进一步改进,所述IP模块包括IP接收模块和IP发送模块;
所述IP接收模块,接收来自以太网模块的网络数据包,判别协议类型,丢弃IP和ARP以外的网络数据包,同时将ARP数据包转发至ARP模块,对IP网络数据包进行首部校验和检查以及上层协议类型检查,将数据部分转发至对应上层模块;
所述IP发送模块,对ARP和IP模块分开进行处理,计算IP帧的首部校验和,将数据部分与头部进行封装后发送给CMAC模块。
作为本发明的进一步改进,所述上协议层模块包括ARP模块、ICMP模块、UDP模块和所述TOE模块;
所述ARP模块用于ARP请求及响应的发送和接收,ARP映射表放在存储单元内,同时保存128组映射关系,在发出ARP请求后,在映射表中保留500ms,若未收到ARP响应,则会被删除并标记为未答复的请求;
所述ICMP模块用于接收和发送请求报文和回答报文,对接收到的ICMP帧进行校验和检测和计算,封装为回送回答报文,传输至IP发送部分;
所述UDP模块用于接收和发送UDP协议报文,通过主机端来设置目的IP地址、目的端口和源端口,所述UDP模块接收UDP协议报文时,会进行校验和计算,同时支持64K可编程监听端口,对于无效数据报,则直接舍弃;所述模块UDP发送UDP协议报文时,先添加伪首部计算校验和,封装为UDP帧,传输给IP模块;
其中,所有模块使用基于HTTP的自适应码率流媒体传输协议进行实现,模块之间使用64位AXI4-Stream接口连接,支持64个并发TCP连接,每个连接提供32KB大小的缓冲器的作为发送和接收的缓冲区。
作为本发明的进一步改进,所述通用TOE模块包括接收模块、发送模块、计时器模块、状态控制模块、缓冲查找模块和缓冲存储模块;
所述接收模块对TCP数据报进行解析,之后依据TCP首部分进行:仅SYN标志位有效的数据报,为客户端发送的连接请求;SYN和ACK标志位有效的数据报,为服务器发送的确认报文;ACK标志位有效但不携带数据的数据报,为客户端的确认报文;ACK标志位有效且携带数据的数据报,为数据报文;FIN和ACK标志位有效,为连接释放报文;依据分类启动对应的状态控制模块;发送模块等待连接缓存中存放的数据达到MSS字节后,将其组装为一个TCP报文段发送出去;初始窗口大小定义为10MSS字节,当触发拥塞控制机制后,将会被介绍到MSS字节,直到所有的数据报被确认。
作为本发明的进一步改进,所述镜像TOE模块包括接收模块、发送模块和数据缓冲排序模块;
所述镜像TOE模块接收到TCP数据报后,直接对其进行解析,若不携带数据部分,则直接舍弃;在数据缓冲排序模块中按照序列号保存五组数据,进行排序设计;
所述发送模块先添加伪首部计算校验和,之后封装为TCP协议数据报,传输给IP模块。
作为本发明的进一步改进,所述用户自定义加速模块采用FAST解码协议模块,接收从镜像TOE模块传输来的数据,进行处理,将结果传输回主机端。
作为本发明的进一步改进,所述数据传输系统还包括:
在TCP/IP模块中,对于每个TCP/IP连接,在建立时分配一个初始内存地址,默认一个相对的初始序列号,得到一个64字节对齐的初始内存地址,同时将硬件TCP/IP栈的MSS调整为1408字节;
对系统通过数据流优化和数据展开进行并行优化:TCP/IP各层协议间以及每层协议内的数据进行并行化处理;数据展开:数据以64位流输入,将其进行全展开,分为4个16位的数据分别进行累加和移位运算,减少校验和计算的时间开销。
作为本发明的进一步改进,系统采用Xilinx Vitis开发框架进行开发,将TCP/IP协议嵌入开发框架,当从主机端或各模块接收数据时,便会对数据进行处理,当没有数据时,会自动停止运行;Xilinx Vitis开发框架将CU链接至不同的带宽存储器的PC单元,同时设置CU和内存到同一块超级逻辑区域上。
本发明的有益效果:本发明基于FPGA的高性能传输系统设计分为主机端和FPGA端两大部分:主机端负责与OpenCL程序外部的交互、与FPGA端的数据交互及模块部分的调度与管理,FPGA端负责TCP/IP协议及后续数据加速模块的实现;FPGA端包含CMAC模块、TCP/IPKernel以及用户自定义加速模块,其中TCP/IP模块用户可以通过三个模块间使用AXI4-Stream接口进行数据交互,通过使用数据对齐来降低数据模块和内存之间的数据延迟;针对TCP/IP协议各功能模块及校验和计算间无数据关联性的特点,采用数据流优化和数据展开优化形成流水线并行架构;同时对内存架构进行了优化,降低了内核和主机端间的数据传输延迟。
附图说明
图1是本发明系统结构示意图;
图2是Vitis开发平台架构示意图;
图3是OpenCL索引空间示意图;
图4是本发明通用TOE模块结构示意图;
图5是本发明镜像TOE模块结构示意图;
图6是本发明用户自定义加速模块结构示意图;
图7是本发明内核数据流水化模型示意图;
图8是本发明内核数据展开模型示意图;
图9是内存架构优化设计示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
参考图1,本发明实施例提供了一种基于FPGA的数据传输系统,包括主机端和FPGA端;
所述FPGA端包括:
CMAC模块,包括以太网模块,用于接收和发送网络数据包;
TCP/IP模块,包括IP模块和上层协议模块,所述IP模块用于接收网络数据包转发至对应的上层模块并将来自上层模块的数据校验封装后发送给以太网模块;所述上层协议模块包括TOE模块,所述TOE模块包括通用TOE模块和镜像TOE模块,所述通用TOE模块发送和接收TCP数据,并完成TCP拥塞控制;所述镜像TOE模块用于对交换机镜像端口开发完成TCP数据的接收和重排,并将解析出的TCP数据传输给用户自定义加速模块;
用户自定义加速模块,用于部署数据加速程序硬件,处理接收到的数据,将处理完的数据发送至TCP/IP模块或主机端;
其中,所述CMAC模块、TCP/IP模块和用户自定义加速模块之间采用AXI4-Stream接口进行数据交互;
所述主机端用于数据的读写、内存分配以及与所述FPGA之间的调度与管理。
具体的,将系统集成在Vitis开发框架下,整体使用模块化设计。
原理基础:Vitis是Xilinx开发的,目前最先进的FPGA开发框架之一。一般分为Host端(主机端)和FPGA端两部分。Host端使用C/C++进行开发,可以在x86架构或嵌入式处理器上运行。Vitis为用户提供对应的接口规范实现各个模块间的连接,用户可以通过调用OpenCL API来管理运行时(Xilinx Runtime,XRT)与硬件加速器部分的交互。硬件部分可以使用C/C++、OpenCL C或者RTL进行开发。在Vitis中,FPGA被分为两个区域:静态区域(Static Region)和动态区域(Dynamic Region)。静态区域包含常用的基础逻辑,如PCIEDMA等,动态区域为用户自定义逻辑部分。整体开发平台架构如图2所示。
与Vivado和SDAccel相比,Vitis的硬件部分支持使用更多的内核开放方式,无论使用何种源语言,只需遵循Vitis的接口规范,即可实现各个功能模块间的互连,极大地提升了开发效率。但是XRT提供的API仍存在较大的限制,并且没有提供网络部分的支持,这限制了它在分布式开发中的使用,因此需要构建一个基础计算平台来打通主机内存、全局内存和网络通信之间的数据传输。
基于OpenCL的FPGA开发:OpenCL(Open Computing Language)是一个开放的面向由CPU、GPU及其他处理器异构而成的计算机进行编程的行业标准框架。OpenCL应用程序由主机端程序和内核程序两部分构成。内核程序被执行时,会创建一个索引空间(NDRange),如图3所示。索引空间中各点对应一个执行内核的实例,被称为工作项(work-item),工作项在索引空间中的坐标即为其全局ID。工作组(work-group)是工作项的集合,工作项在工作组中的坐标即其局部内存。工作组中的工作项会在一个计算单元(Computing Unit,CU)中的处理单元(Processing Element,PE)上并发执行,实现内核程序的功能。
本发明采用Vitis FPGA开放框架实现整体计算平台的设计。Vitis支持在CPU上仿真OpenCL应用程序,包含软件仿真以及硬件仿真。软件仿真主要目的为确保主机程序和内核程序功能的正确性,只提供纯粹的功能仿真;硬件仿真使用Vivado RTL逻辑模拟器来进行仿真,用以检查C/C++或OpenCL等合成的RTL代码功能的正确性。当在FPGA上执行硬件运行时,Vitis首先将内核代码编译成XO(Xilinx Object)文件,之后使用v++将各内核的XO文件进行编译链接,生成FPGA二进制文件(XCLBIN)。对于C/C++或OpenCL内核代码,可使用v++指令将其编译为XO文件;对于RTL内核或HLS构建的内核,可直接生成XO文件。在编译完成后,将生成主机端可执行文件和二进制文件,以在FPGA上运行内核程序。
基于FPGA的TCP/IP设计与实现:
本发明中设计的可重构计算平台旨在为不同的应用程序提供灵活可配置的基础网络功能。因此,采用模块化设计原则,将不同的功能分离成不同的内核模块。整体设计分为Host端和FPGA端两大部分,FPGA端包含三个内核,CMAC Kernel(CMAC模块)、TCP/IPKernel(TCP/IP模块)以及User Defined Kernel(用户自定义加速模块)。
Host端设计:Host端负责数据的读写、内存分配、初始化以及内核的调度与管理等工作。Xilinx提供XRT配合OpenCL API用于管理上下文和命令队列的创建等操作。Vitis提供三种Host端对内核的调度模式:顺序执行模型(Sequential Mode)、流水线模型(Pipelined Mode)和自由运行模型(Free-Running Mode)。由于TCP/IP协议的监听机制,本发明中采用自由运行模型的调度机制,当从主机或其他内核接收流数据时,便会对数据进行处理,当没有数据时,会自动停止运行。
CMAC内核:包含一个10G/25G High Speed Ethernet Subsystem的IP核模块。该IP核模块采用IEEE 802.3标准,包含完整的以太网MAC和PCS/PMA(Physicalcodingsublayer/Physical medium attachment)功能,可以在每块FPGA开发板上进行单独配置,极大提升了在不同FPGA开发板间的可移植性。该IP模块将整个计算平台基础架构与GT引脚相连,GT引脚指向QSFP28网络接口,与外部网络进行数据交互。CMAC内核可以根据实际应用需求,配置为10G和4*10G两种模式。CMAC内核和TCP/IP内核间使用两个64位AXI4-Stream接口相连,用于接收和发送网络数据包。
需要注意的是,在Vitis中,每个内核间的连接可以通过配置文件来完成,但是无法配置内核和GT引脚间的连接,因此该部分需要在Vivado中完成此部分的配置。
TCP/IP Kernel:TCP/IP内核包含TOE模块、UDP模块、IP模块、ICMP模块和ARP模块,所有模块使用HLS进行实现,之间使用64位AXI4-Stream接口连接。支持最大64个并发TCP连接,每个连接提供32KB大小的buffer的作为发送和接收的缓冲区。
各功能模块均封装为单独的IP核,可以依据应用场景,板卡资源等因素来进行选择性配置。针对金融交易等特殊应用场景,开发出一种类TCP协议来解决此类问题。与CMAC内核相同,TCP/IP内核暴露出固定的接口,供开发人员进行调用。
IP模块包含接收(IP Receiver)和发送(IP Transmit)两个部分,支持IPV4协议,可以通过Host端设置固定的IP地址,子网掩码和网关地址。接收部分会首先判别协议类型,丢弃IP和ARP以外的数据包,同时将ARP数据包转发至ARP模块。之后对IP帧包进行首部校验和检查以及上层协议类型检查,将数据部分转发至对应上层模块。发送模块同样对ARP和IP模块分开进行处理,计算IP帧的首部校验和,将数据部分与头部进行封装后发送给CMAC内核。
ARP模块包含ARP请求的发送和接收以及ARP响应的发送和接收功能。ARP映射表放在BRAM内,同时最多能够保存128组映射关系。在发出ARP请求后,会在映射表中保留500ms,若仍未收到ARP响应,则会被删除并标记为未答复的请求。
ICMP模块包含接收回送请求报文和发送回送回答报文的功能。会对接收到的ICMP帧进行校验和检测和计算,之后封装为回送回答报文,传输至IP发送部分。
UDP模块包含报文的接收和发送功能。可以通过Host端来设置目的IP地址、目的端口和源端口。由于UDP协议发送数据之前不需要建立握手连接,因此是不保证可靠交付。在作为接收端时,会进行校验和计算,同时支持最大64K可编程监听端口,对于无效数据报,则直接舍弃。在作为发送端时,会先添加伪首部计算校验和,之后封装为UDP帧,传输给IP模块。
TOE模块:针对不同需求,TOE模块开发出以下两种TCP变体协议模块。(1)通用TOE模块,需要建立正常的握手连接,支持发送和接收功能,实现TCP拥塞控制,包括拥塞避免和快速重传等;(2)镜像TOE模块,针对交换机镜像端口开发,只实现TCP数据报的接收功能和数据重排功能,解析出的数据部分将传输给上层User Defined内核。两种模块均为每个TCP连接提供了32KB大小的buffer作为数据缓冲区。能够接收的最大报文长度为MSS(MaximumSegment Size)字节,不支持对巨大帧的接收。
如图4所示,通用TOE模块分为接收部分,发送部分,计时器部分、状态控制部分、缓冲查找部分和缓冲存储部分。
接收部分会先对TCP数据报进行解析,之后依据TCP首部分为以下五种(1)仅SYN标志位有效的数据报,为客户端发送的连接请求,(2)SYN和ACK标志位有效的数据报,为服务器发送的确认报文,(3)ACK标志位有效但不携带数据的数据报,为客户端的确认报文,(4)ACK标志位有效且携带数据的数据报,为数据报文,(5)FIN和ACK标志位有效,为连接释放报文。依据分类启动对应的状态机模块。数据发送部分会等待连接缓存中存放的数据达到MSS字节后,就将其组装为一个TCP报文段发送出去。初始窗口大小定义为10MSS字节,当触发拥塞控制机制后,将会被介绍到MSS字节,直到所有的数据报被确认。
镜像TOE模块分为接收模块,发送模块和数据缓冲排序模块三个部分。具体架构如图5所示。该模块针对镜像端口及局域直连网络设计。
在接收到TCP数据报后,由于不需要也无法进行握手协议的建立,会直接对其进行解析,若不携带数据部分,则直接舍弃。在缓冲区按照序列号保存五组数据,进行排序设计。发送模块与UDP协议类似,先添加伪首部计算校验和,之后封装为TCP协议数据报,传输给IP模块。该功能模块设计也可用于FPGA片间通信。
User Defined Kernel:该模块为用户自定义加速模块,用户可以在此部分部署数据加速程序硬件设计,来处理从网络中接收到的数据,同时能够将处理完的数据通过网络发送出去。该模块与TCP/IP模块通过AXI4-Stream接口相连,同时通过XDMA与Host端进行数据交互,整体架构如图6所示。
本发明中,该模块提供了一个FAST解码协议的硬件实现作为对整体计算平台的功能性验证。FAST协议(FIX Adapted for Streaming)是一种金融市场数据协议,主要通过在二进制层面上压缩数据,以此来优化和改善市场信息的传输效率,极大地降低数据通信所需要的带宽消耗和时间开销。在金融市场中,FAST协议是高频加速的技术支持之一,在国内证券交易所中广为使用。
依据上海证券交易所的FAST协议规范,设计实现了3201逐笔成交模板和5801逐笔委托模板中无运算符、常量、复制、缺省和自增五种操作。接收从镜像TOE模块传输来的数据,进行处理,将结果传输回Host端,方便后续数据的金融决策计算。
整体系统设计及优化:
1)数据位宽优化:
在整体设计中,为保持4*10Gbps的传输速率性能,目前的主要的瓶颈在于是网络内核模块和内存之间的数据交互。在TCP/IP内核中,数据部分会暂时存储在内存中,用于重新传输或缓冲目的。理论上来说,若想要达到4*10Gbps的带宽效率,则需要至少40Gbps的内存带宽。Vitis开发架构针对64字节对齐的顺序内存访问提供了优化,若使用未对齐的内存访问,则会显著减少了内存带宽,因为在这种情况下,将触发自动对齐的内存访问。对于每个TCP/IP连接,在建立时会分配一个初始内存地址,并在初始内存地址的偏移量内存储即将到来的数据报。首先,初始内存地址是由连接的初始序列号决定的,这是一个随机数,因此它很可能不是64字节对齐的。其次,在默认的TCP/IP设置中,MSS为1460字节,并非64字节的倍数,但是考虑到网络传输效率以及实际网络传输情况,网络设备通常倾向于发送较短数据报,从而最大限度地提高网络利用率。因此即使数据包按顺序到达并顺序访问内存,由于未对齐的访问,也同样会导致吞吐量下降。为克服这两个效率低下的问题,首先默认一个相对的初始序列号,得到一个64字节对齐的初始内存地址,同时将硬件TCP/IP栈的MSS调整为1408字节,这是比1460低64字节的最大倍数。通过这些改变,极大地提升了网络内核模块和内存之间的读取延迟。
2)AXI4-Stream接口的使用:
Vitis开发架构下,支持使用AXI4-Stream流接口来完成内核之间的数据的传输,本设计中各个模块间均使用AXI4-Stream接口。使用流接口进行开发的优势在于,内核之间可以直接进行数据流式传输,相当于申请了一个无限深度的FIFO,而不必通过全局内存来进行数据传输,能够显著提升传输性能。
同时在Vitis开放框架下,必须使用AXI4-Stream接口才能使用自由运行模型。在自由运行模型下,XCLBIN文件被烧录入FPGA后,内核便开始运行,不需要主机的OpenCL函数clEnqueueTask命令调用执行。当内核从主机或其他内核接收流数据时,便会对数据进行处理,当没有数据时,会自动停止运行,这是符合TCP/IP监听机制的。
3)并行设计优化:
并行优化设计主要通过数据流优化和数据展开等来提升整体设计的并行度。数据流优化通过实现任务级流水和并行性,来达到更高的吞吐量和更低的延迟。TCP/IP各层协议间以及每层协议内的数据均没有数据依赖性,因此可以进行并行化处理,通过消耗一定的硬件资源来实现低延迟高并行的架构。以IP接收模块的实现为例,流水化设计如图7示。该模块可以简化为接收数据(Receive)、校验和计算(Check)、解析数据报(Parser)和转发数据(Trans)四个部分,假设每部分的时间消耗为1个时钟周期,未使用数据流优化时,在实现下次计算时延迟4个时钟周期,使用数据流优化之后,只延迟了一个时钟周期,其他模块也是相同的原理,能够极大程度上地缩短整体平台的执行时间。
数据展开同样是通过增加并行度来实现数据延迟的缩短。以TCP/IP协议中常用的校验和计算为例,数据以64位流输入,将其进行全展开,分为4个16位的数据分别进行累加和移位运算,减少了校验和计算的时间开销,如图8所示。未使用数据展开时,执行校验和计算需要11个时钟周期完成;使用数据展开后,只需2个时钟周期便可完成,可见数据展开取得了优异的优化效果。
4)内存架构优化:
Vitis框架下,Host端和FPGA端的通过全局内存进行数据交互,默认情况下,Vitis自动把全部CU连接到同一全局内存,这导致一次只有一个内核可以和全局内存进行读写数据,限制了整体平台的性能。本文对内存架构进行优化,将CU链接至不同的HBM(HighBandwidth Memory)的PC单元(pseudochannels),同时设置CU和内存到同一块超级逻辑区域(superlogicregions,SLR)上,最大化了带宽的使用。以User Defined Kernel为例,有4个返回值,通过将其分配在和SLR0相连的HBM0的4个PC中,可将传输速率提升为之前的四倍。内存架构如图9所示。
尽管每PC的传输性能为14.3GB/s,低于DDR通道的传输性能19.2GB/s,但是可以通过内存架构的优化,实现对多PC的访问连接,从而实现总体传输效率的提升。
综上,本发明基于FPGA的高性能可重构计算平台的整体平台设计如下,分为Host端和FPGA端两大部分。Host端负责与OpenCL程序外部的交互、与FPGA端的数据交互及Kernel部分的调度与管理,FPGA端负责TCP/IP协议及后续数据加速模块的实现。
FPGA端包含CMAC Kernel、TCP/IP Kernel以及User Defined Kernel三个模块。其中TCP/IP Kernel用户可以通过三个模块间使用AXI4-Stream接口进行数据交互,通过使用数据对齐来降低数据模块和内存之间的数据延迟;针对TCP/IP协议各功能模块及校验和计算间无数据关联性的特点,采用数据流优化和数据展开优化形成流水线并行架构。同时对内存架构进行了优化,降低了内核和Host端间的数据传输延迟。
本发明基于Xilinx Vitis开发框架的高性能可重构计算平台设计。综合使用HLS、OpenCL、RTL语言等设计一种集网络通信功能,并行计算功能一体的计算平台系统,为不同的通信场景提供一种解决方案。主要实现工作如下:
(1)在Vitis框架下,使用HLS对TCP/IP协议栈中UDP协议、IP协议、ARP协议、ICMP协议和MAC层协议已经高频金融交易中的FAST解码协议进行FPGA实现;
(2)在FPGA分别针对常规应用场景和高频金融交易场景上实现两种不同的TOE(TCP Offload Engine)设计;
(3)针对数据传输,通过数据对齐和优化内存架构提升其性能。通过FPGA并行与流水化设计,提升系统整体的数据处理性能;
(4)整体使用模块化设计,通过配置文件实现不同模块间的自由组合。将TCP/IP协议嵌入Vitis开发框架,提供一组网络通信接口,构建了一个打通主机内存、全局内存和网络通信之间数据传输的基础计算平台。
本发明将TCP/IP协议栈卸载到专用硬件模块。通过内存结构优化、数据位宽优化、数据流优化等方法,构建了全流水线架构。实验结果表明:在Xilinx Alevo U50上可获得38.28Gbps的网络吞吐率,基础网络通信穿刺延迟最低为468.4ns,与传统软件处理网络堆栈(Intel i9-9900x+9802BF)相比,速率提升12倍。在满足场景需要的同时,有效减轻了CPU的负载。
以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。
Claims (10)
1.一种基于FPGA的数据传输系统,其特征在于:包括主机端和FPGA端;
所述FPGA端包括:
CMAC模块,包括以太网模块,用于接收和发送网络数据包;
TCP/IP模块,包括IP模块和上层协议模块,所述IP模块用于接收网络数据包转发至对应的上层模块并将来自上层模块的数据校验封装后发送给以太网模块;所述上层协议模块包括TOE模块,所述TOE模块包括通用TOE模块和镜像TOE模块,所述通用TOE模块发送和接收TCP数据,并完成TCP拥塞控制;所述镜像TOE模块用于对交换机镜像端口开发完成TCP数据的接收和重排,并将解析出的TCP数据传输给用户自定义加速模块;
用户自定义加速模块,用于部署数据加速程序硬件,处理接收到的数据,将处理完的数据发送至TCP/IP模块或主机端;
其中,所述CMAC模块、TCP/IP模块和用户自定义加速模块之间采用AXI4-Stream接口进行数据交互;
所述主机端用于数据的读写、内存分配以及与所述FPGA之间的调度与管理。
2.如权利要求1所述的一种基于FPGA的数据传输系统,其特征在于:所述以太网模块为10G/25G以太网模块,所述以太网模块在每个FPGA端单独配置;所述以太网模块通过GT引脚连接网络接口,与外部网络进行数据交互。
3.如权利要求1所述的一种基于FPGA的数据传输系统,其特征在于:所述CMAC模块和所述TCP/IP模块之间通过AXI4-Stream接口相连,用于接收和发送网络数据包。
4.如权利要求1所述的一种基于FPGA的数据传输系统,其特征在于:所述IP模块包括IP接收模块和IP发送模块;
所述IP接收模块,接收来自以太网模块的网络数据包,判别协议类型,丢弃IP和ARP以外的网络数据包,同时将ARP数据包转发至ARP模块,对IP网络数据包进行首部校验和检查以及上层协议类型检查,将数据部分转发至对应上层模块;
所述IP发送模块,对ARP和IP模块分开进行处理,计算IP帧的首部校验和,将数据部分与头部进行封装后发送给CMAC模块。
5.如权利要求4所述的一种基于FPGA的数据传输系统,其特征在于:所述上协议层模块包括ARP模块、ICMP模块、UDP模块和所述TOE模块;
所述ARP模块用于ARP请求及响应的发送和接收,ARP映射表放在存储单元内,同时保存128组映射关系,在发出ARP请求后,在映射表中保留500ms,若未收到ARP响应,则会被删除并标记为未答复的请求;
所述ICMP模块用于接收和发送请求报文和回答报文,对接收到的ICMP帧进行校验和检测和计算,封装为回送回答报文,传输至IP发送部分;
所述UDP模块用于接收和发送UDP协议报文,通过主机端来设置目的IP地址、目的端口和源端口,所述UDP模块接收UDP协议报文时,会进行校验和计算,同时支持64K可编程监听端口,对于无效数据报,则直接舍弃;所述模块UDP发送UDP协议报文时,先添加伪首部计算校验和,封装为UDP帧,传输给IP模块;
其中,所有模块使用基于HTTP的自适应码率流媒体传输协议进行实现,模块之间使用64位AXI4-Stream接口连接,支持64个并发TCP连接,每个连接提供32KB大小的缓冲器的作为发送和接收的缓冲区。
6.如权利要求1所述的一种基于FPGA的数据传输系统,其特征在于:所述通用TOE模块包括接收模块、发送模块、计时器模块、状态控制模块、缓冲查找模块和缓冲存储模块;
所述接收模块对TCP数据报进行解析,之后依据TCP首部分进行:仅SYN标志位有效的数据报,为客户端发送的连接请求;SYN和ACK标志位有效的数据报,为服务器发送的确认报文;ACK标志位有效但不携带数据的数据报,为客户端的确认报文;ACK标志位有效且携带数据的数据报,为数据报文;FIN和ACK标志位有效,为连接释放报文;依据分类启动对应的状态控制模块;发送模块等待连接缓存中存放的数据达到MSS字节后,将其组装为一个TCP报文段发送出去;初始窗口大小定义为10MSS字节,当触发拥塞控制机制后,将会被介绍到MSS字节,直到所有的数据报被确认。
7.如权利要求1所述的一种基于FPGA的数据传输系统,其特征在于:所述镜像TOE模块包括接收模块、发送模块和数据缓冲排序模块;
所述镜像TOE模块接收到TCP数据报后,直接对其进行解析,若不携带数据部分,则直接舍弃;在数据缓冲排序模块中按照序列号保存五组数据,进行排序设计;
所述发送模块先添加伪首部计算校验和,之后封装为TCP协议数据报,传输给IP模块。
8.如权利要求1所述的一种基于FPGA的数据传输系统,其特征在于:所述用户自定义加速模块采用FAST解码协议模块,接收从镜像TOE模块传输来的数据,进行处理,将结果传输回主机端。
9.如权利要求1所述的一种基于FPGA的数据传输系统,其特征在于:所述数据传输系统还包括:
在TCP/IP模块中,对于每个TCP/IP连接,在建立时分配一个初始内存地址,默认一个相对的初始序列号,得到一个64字节对齐的初始内存地址,同时将硬件TCP/IP栈的MSS调整为1408字节;
对系统通过数据流优化和数据展开进行并行优化:TCP/IP各层协议间以及每层协议内的数据进行并行化处理;数据展开:数据以64位流输入,将其进行全展开,分为4个16位的数据分别进行累加和移位运算,减少校验和计算的时间开销。
10.如权利要求1-9中任一项所述的一种基于FPGA的数据传输系统,其特征在于:系统采用Xilinx Vitis开发框架进行开发,将TCP/IP协议嵌入开发框架,当从主机端或各模块接收数据时,便会对数据进行处理,当没有数据时,会自动停止运行;Xilinx Vitis开发框架将CU链接至不同的带宽存储器的PC单元,同时设置CU和内存到同一块超级逻辑区域上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111448732.3A CN114138707B (zh) | 2021-11-30 | 2021-11-30 | 一种基于fpga的数据传输系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111448732.3A CN114138707B (zh) | 2021-11-30 | 2021-11-30 | 一种基于fpga的数据传输系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114138707A true CN114138707A (zh) | 2022-03-04 |
CN114138707B CN114138707B (zh) | 2023-02-21 |
Family
ID=80386458
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111448732.3A Active CN114138707B (zh) | 2021-11-30 | 2021-11-30 | 一种基于fpga的数据传输系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114138707B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115086233A (zh) * | 2022-08-17 | 2022-09-20 | 北京左江科技股份有限公司 | 一种基于fpga的网络报文关键信息提取转发的方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060262797A1 (en) * | 2005-05-18 | 2006-11-23 | International Business Machines Corporation | Receive flow in a network acceleration architecture |
US7647436B1 (en) * | 2005-04-29 | 2010-01-12 | Sun Microsystems, Inc. | Method and apparatus to interface an offload engine network interface with a host machine |
US8028071B1 (en) * | 2006-02-15 | 2011-09-27 | Vmware, Inc. | TCP/IP offload engine virtualization system and methods |
CN106789708A (zh) * | 2016-12-06 | 2017-05-31 | 中国电子科技集团公司第三十二研究所 | Tcp/ip卸载引擎中的多通道处理方法 |
CN209913857U (zh) * | 2019-09-04 | 2020-01-07 | 广州优客科技服务有限公司 | 一种基于fpga和tcp/ip的多路采集与切换系统 |
CN111782579A (zh) * | 2020-06-24 | 2020-10-16 | 华东师范大学 | 一种基于fpga的以太网协议硬件逻辑处理结构 |
CN112073435A (zh) * | 2020-09-28 | 2020-12-11 | 山东产研集成电路产业研究院有限公司 | 一种降低toe中发送通道传输延迟量的方法 |
-
2021
- 2021-11-30 CN CN202111448732.3A patent/CN114138707B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7647436B1 (en) * | 2005-04-29 | 2010-01-12 | Sun Microsystems, Inc. | Method and apparatus to interface an offload engine network interface with a host machine |
US20060262797A1 (en) * | 2005-05-18 | 2006-11-23 | International Business Machines Corporation | Receive flow in a network acceleration architecture |
US8028071B1 (en) * | 2006-02-15 | 2011-09-27 | Vmware, Inc. | TCP/IP offload engine virtualization system and methods |
CN106789708A (zh) * | 2016-12-06 | 2017-05-31 | 中国电子科技集团公司第三十二研究所 | Tcp/ip卸载引擎中的多通道处理方法 |
CN209913857U (zh) * | 2019-09-04 | 2020-01-07 | 广州优客科技服务有限公司 | 一种基于fpga和tcp/ip的多路采集与切换系统 |
CN111782579A (zh) * | 2020-06-24 | 2020-10-16 | 华东师范大学 | 一种基于fpga的以太网协议硬件逻辑处理结构 |
CN112073435A (zh) * | 2020-09-28 | 2020-12-11 | 山东产研集成电路产业研究院有限公司 | 一种降低toe中发送通道传输延迟量的方法 |
Non-Patent Citations (4)
Title |
---|
LI DING; PING KANG; WENBO YIN; LINLI WANG: "Hardware TCP Offload Engine based on 10-Gbps Ethernet for low-latency network communication", 《2016 INTERNATIONAL CONFERENCE ON FIELD-PROGRAMMABLE TECHNOLOGY (FPT)》 * |
ZHENHAO HE; DARIO KOROLIJA; GUSTAVO ALONSO: "EasyNet: 100 Gbps Network for HLS", 《2021 31ST INTERNATIONAL CONFERENCE ON FIELD-PROGRAMMABLE LOGIC AND APPLICATIONS (FPL)》 * |
吴惑等: "基于FPGA的万兆以太网TCP/IP协议处理架构", 《电子设计工程》 * |
景博等: "分布式无线传感器网络及其应用核心技术研究", 《测试技术学报》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115086233A (zh) * | 2022-08-17 | 2022-09-20 | 北京左江科技股份有限公司 | 一种基于fpga的网络报文关键信息提取转发的方法 |
CN115086233B (zh) * | 2022-08-17 | 2022-11-11 | 北京左江科技股份有限公司 | 一种基于fpga的网络报文关键信息提取转发的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114138707B (zh) | 2023-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7274706B1 (en) | Methods and systems for processing network data | |
US20200177510A1 (en) | High Performance, Scalable Multi Chip Interconnect | |
WO2020236279A1 (en) | System and method for facilitating efficient management of idempotent operations in a network interface controller (nic) | |
US7817634B2 (en) | Network with a constrained usage model supporting remote direct memory access | |
US8756270B2 (en) | Collective acceleration unit tree structure | |
US7924848B2 (en) | Receive flow in a network acceleration architecture | |
US11902149B2 (en) | Sync network | |
US10609125B2 (en) | Method and system for transmitting communication data | |
US11550639B2 (en) | Sync groupings | |
CN113490927A (zh) | 具有硬件集成和乱序放置的rdma输送 | |
US20230127722A1 (en) | Programmable transport protocol architecture | |
US20210200601A1 (en) | Sync Group Selection | |
CN114138707B (zh) | 一种基于fpga的数据传输系统 | |
Lant et al. | Enabling shared memory communication in networks of MPSoCs | |
Jang et al. | An Efficient Architecture for a TCP Offload Engine Based on Hardware/Software Co-design. | |
US20220321491A1 (en) | Microservice data path and control path processing | |
Jung et al. | Gpu-ether: Gpu-native packet i/o for gpu applications on commodity ethernet | |
Kurmann et al. | Speculative Defragmentation–Leading Gigabit Ethernet to True Zero-Copy Communication | |
JP2020088517A (ja) | 通信装置、通信装置の制御方法およびプログラム | |
US7962656B1 (en) | Command encoding of data to enable high-level functions in computer networks | |
Hassani et al. | Optimization of communication in mpi-based clusters | |
US20240176652A1 (en) | Programmable data movement processor for collective communication offload | |
US20170295237A1 (en) | Parallel processing apparatus and communication control method | |
Miura et al. | Xmcapi: Inter-core communication interface on multi-chip embedded systems | |
Karlsson et al. | Multiedge: An edge-based communication subsystem for scalable commodity servers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230925 Address after: Room 1301, 13th Floor, Xiqiao Innovation Building (formerly Xiqiao Textile Technology Building), No. 3 Qiyuan East Road, Xiqiao Town, Nanhai District, Foshan City, Guangdong Province, 528000 (Residence Application) Patentee after: High Volume Digital Intelligence Advanced Technology Research (Foshan) Co.,Ltd. Address before: 214000 1800 Lihu Avenue, Binhu District, Wuxi, Jiangsu Patentee before: Jiangnan University |
|
TR01 | Transfer of patent right |