一种基于FPGA的高速网络数据传输系统及方法技术方案

技术编号:25842454 阅读:21 留言:0更新日期:2020-10-02 14:21
本发明专利技术公开了一种基于FPGA的高速网络数据传输系统及方法,本发明专利技术的系统包括上位机、PCIe交换机、网络交换机和至少两个安装于PCIe交换机的FPGA计算板卡,本发明专利技术的方法中,上位机将运算数据发送给报文发送FPGA计算板卡,报文发送FPGA计算板卡将数据处理后按照连接号发送至报文接收FPGA计算板卡,若计算未完成,报文接收FPGA计算板卡作为下一报文发送FPGA计算板卡将数据处理后发送至下一报文接收FPGA计算板卡直到计算完成并将计算结果返回上位机,本发明专利技术实现了上位机与FPGA计算板卡之间的数据传输以及FPGA计算板卡之间的数据转发,利用FPGA的带宽实现高速网络数据传输。

【技术实现步骤摘要】
一种基于FPGA的高速网络数据传输系统及方法
本专利技术涉及计算机网络技术,尤其涉及一种基于FPGA的高速网络数据传输系统及方法。
技术介绍
伴随大数据的快速发展,数据运算规模也在快速膨胀,对现有的运算处理设备带来极大挑战。一种方式升级现有设备的运算能力,还有一种方式就是协同运算,将运算分解成小的运算单元,然后放在不同运算设备上进行处理。由于计算任务是灵活多变的,而ASIC(专用集成电路)研发成本高、周期长。花费大量的时间大规模部署了一批某种神经网络的加速卡,很快就会出现另一种更高效的神经网络,再次更换ASIC的加速卡会消耗更多的成本。而FPGA具有卓越的性能和灵活性。FPGA比CPU甚至GPU能效高,因为CPU、GPU都属于冯诺依曼结构,指令译码执行、共享内存,而FPGA本质上是无指令、无需共享内存的体系结构。最主要的是FPGA只需要几百毫秒就可以更新逻辑功能,不需要更换硬件,节省更多的成本。对通信密集型任务,FPGA相比CPU、GPU的优势就更大了。从吞吐量上讲,FPGA上的收发器可以直接接上40Gbps甚至100Gbps的网线,以线速处理任意大小的数据包;而CPU需要从网卡把数据包收上来才能处理,很多网卡是不能线速处理64字节的小数据包的。尽管可以通过插多块网卡来达到高性能,但CPU和主板支持的PCIe插槽数量往往有限,而且网卡、交换机本身也价格不菲。从延迟上讲,网卡把数据包收到CPU,CPU再发给网卡,即使使用DPDK(数据平面开发套件)这样高性能的数据包处理框架,延迟也有4~5微秒。更严重的问题是,通用CPU的延迟不够稳定。
技术实现思路
本专利技术要解决的技术问题就在于:针对现有技术存在的技术问题,本专利技术提供一种基于FPGA的高速网络数据传输系统及方法,减少上位机对FPGA计算板卡的干预,实现FPGA计算板卡之间的直接数据传输,不需要通过PCIe将数据加载到内存处理后再把数据传输到下一个FPGA计算板卡,进而降低FPGA计算板卡之间的数据传输延时。为解决上述技术问题,本专利技术提出的技术方案为:一种基于FPGA的高速网络数据传输系统,其特征在于,包括上位机、PCIe交换机、网络交换机和至少两张安装于PCIe交换机的FPGA计算板卡,所述上位机通过PCIe交换机连接每张FPGA计算板卡,所述FPGA计算板卡之间通过网络交换机互相连接,所述FPGA计算板卡包括互相连接的网络接口模块和核心计算模块,所述网络接口模块包括介质访问控制单元、包解析单元、包编辑单元、会话单元和缓存单元,所述网络交换机、介质访问控制单元、会话单元、缓存单元、核心计算模块和上位机依次双向连接,所述包解析单元设置于网络交换机到上位机的数据传输方向上介质访问控制单元的输出端和会话单元的输入端之间,所述包编辑单元设置于上位机到网络交换机的数据传输方向上介质访问控制单元的输入端和会话单元的输出端之间,其中:介质访问控制单元用于将所接收的报文或数据包互相转换后进行传输;包解析单元用于提取报文中的描述符信息,同时对报文的合法性进行检查;包编辑单元用于将描述符信息以及负载编辑成合法的报文;会话单元用于发起建立连接或撤销连接请求,同时按照TCP/IP协议完成报文应答响应,并获取缓存单元请求发送的负载后进行发送;还用于针对收到的报文按照TCP/IP协议建立连接或撤销连接,并将报文承载的负载发给缓存单元;缓存单元用于将不同连接的数据进行暂时保存,还用于接收请求后进行对应的数据发送。进一步的,所述缓存单元通过AXI-Stream接口和核心计算模块连接。进一步的,所述会话单元包括会话检查器、会话维护器和查找表,所述会话检查器通过查找表和会话维护器双向连接,所述包解析单元通过会话检查器和缓存单元连接,所述包编辑单元通过会话维护器和缓存单元连接,其中:会话检查器用于获取报文头信息和负载,根据TCP/IP协议完成建立连接或撤销连接或数据报文接收,还用于将所获取的负载发送给缓存单元;查找表用于记录连接号以及对应的报文头信息;会话维护器用于根据上位机的配置执行建立连接请求或撤销连接请求的发起,以及执行获取缓存单元中的数据负载并发送,还用于根据TCP/IP协议完成报文应答响应。本专利技术还提出一种基于FPGA的高速网络数据传输方法,应用于上述的基于FPGA的高速网络数据传输系统,包括以下步骤:步骤1)各FPGA计算板卡分别上电就绪;步骤2)上位机重启并识别各FPGA计算板卡;步骤3)上位机分别配置各FPGA计算板卡的网络接口参数;步骤4)各FPGA计算板卡两两之间建立连接并生成连接号,分别将每一对FPGA计算板卡的连接号发送到上位机;步骤5)上位机根据连接号配置各FPGA计算板卡之间的数据传输方向;步骤6)上位机在各FPGA计算板卡中选取报文发送FPGA计算板卡并将运算数据发送给报文发送FPGA计算板卡的核心计算模块;步骤7)报文发送FPGA计算板卡中,核心计算模块将运算结果以及对应的连接号发送给缓存单元,缓存单元将运算结果存入缓存空间并向会话单元发送数据发送请求;步骤8)报文发送FPGA计算板卡中,会话单元收到数据发送请求,返回应答,然后缓存单元将运算结果和连接号发送给会话单元,会话单元根据连接号在会话单元的查找表里查找报文头信息,然后将运算结果作为负载并将报文头信息和负载发送给包编辑单元;步骤9)报文发送FPGA计算板卡中,包编辑单元收到报文头信息和负载后按照TCP/IP协议将报文头信息和负载编辑成完整的报文,并将报文发送给介质访问控制单元;步骤10)报文发送FPGA计算板卡中,介质访问控制单元收到报文后,将报文缓存并按照IEEE802.3规范封装为数据包,然后将数据包发送到网络交换机,同时启动计时器,如果超过预设时间后没有收到报文接收FPGA计算板卡发送的数据报文应答报文,则返回步骤8)开始重复发送此次发送的数据报文,直到收到报文接收FPGA计算板卡发送的数据报文应答报文;步骤11)交换机根据报文头信息将收到的数据包转发到报文接收FPGA计算板卡;步骤12)报文接收FPGA计算板卡中,介质访问控制单元将收到的符合IEEE802.3规范的数据流中的数据包解析成完整报文,并将报文发送给包解析单元;步骤13)报文接收FPGA计算板卡中,包解析单元收到报文后,首先对报文进行合法性检查,然后提取报文头信息和负载并发送给会话单元;步骤14)报文接收FPGA计算板卡中,会话单元收到报文头信息后,根据报文头信息判断此报文是否为错误报文且是否为发送到本设备的报文,如果报文为错误报文或不是发送到本设备的报文就丢弃此报文并返回步骤12),如果报文不为错误报文且为发送到本设备的报文,就根据收到的报文头信息在会话单元的查找表里查找连接号,然后把连接号和收到的负载发送给缓存单元,同时发送数据报文应答报文给报文发送FPGA计算板卡;步骤15)报文接收FPGA计算板卡中,缓存单元收到数据负载后存入缓存空间,本文档来自技高网
...

【技术保护点】
1.一种基于FPGA的高速网络数据传输系统,其特征在于,包括上位机(1)、PCIe交换机(2)、网络交换机(3)和至少两张安装于PCIe交换机(2)的FPGA计算板卡(4),所述上位机(1)通过PCIe交换机(2)连接每张FPGA计算板卡(4),所述FPGA计算板卡(4)之间通过网络交换机(3)互相连接,所述FPGA计算板卡(4)包括互相连接的网络接口模块和核心计算模块,所述网络接口模块包括介质访问控制单元、包解析单元、包编辑单元、会话单元和缓存单元,所述网络交换机(3)、介质访问控制单元、会话单元、缓存单元、核心计算模块和上位机(1)依次双向连接,所述包解析单元设置于网络交换机(3)到上位机(1)的数据传输方向上介质访问控制单元的输出端和会话单元的输入端之间,所述包编辑单元设置于上位机(1)到网络交换机(3)的数据传输方向上介质访问控制单元的输入端和会话单元的输出端之间,其中:/n介质访问控制单元用于将所接收的报文或数据包互相转换后进行传输;/n包解析单元用于提取报文中的描述符信息,同时对报文的合法性进行检查;/n包编辑单元用于将描述符信息以及负载编辑成合法的报文;/n会话单元用于发起建立连接或撤销连接请求,同时按照TCP/IP协议完成报文应答响应,并获取缓存单元请求发送的负载后进行发送;还用于针对收到的报文按照TCP/IP协议建立连接或撤销连接,并将报文承载的负载发给缓存单元;/n缓存单元用于将不同连接的数据进行暂时保存,还用于接收请求后进行对应的数据发送。/n...

【技术特征摘要】
1.一种基于FPGA的高速网络数据传输系统,其特征在于,包括上位机(1)、PCIe交换机(2)、网络交换机(3)和至少两张安装于PCIe交换机(2)的FPGA计算板卡(4),所述上位机(1)通过PCIe交换机(2)连接每张FPGA计算板卡(4),所述FPGA计算板卡(4)之间通过网络交换机(3)互相连接,所述FPGA计算板卡(4)包括互相连接的网络接口模块和核心计算模块,所述网络接口模块包括介质访问控制单元、包解析单元、包编辑单元、会话单元和缓存单元,所述网络交换机(3)、介质访问控制单元、会话单元、缓存单元、核心计算模块和上位机(1)依次双向连接,所述包解析单元设置于网络交换机(3)到上位机(1)的数据传输方向上介质访问控制单元的输出端和会话单元的输入端之间,所述包编辑单元设置于上位机(1)到网络交换机(3)的数据传输方向上介质访问控制单元的输入端和会话单元的输出端之间,其中:
介质访问控制单元用于将所接收的报文或数据包互相转换后进行传输;
包解析单元用于提取报文中的描述符信息,同时对报文的合法性进行检查;
包编辑单元用于将描述符信息以及负载编辑成合法的报文;
会话单元用于发起建立连接或撤销连接请求,同时按照TCP/IP协议完成报文应答响应,并获取缓存单元请求发送的负载后进行发送;还用于针对收到的报文按照TCP/IP协议建立连接或撤销连接,并将报文承载的负载发给缓存单元;
缓存单元用于将不同连接的数据进行暂时保存,还用于接收请求后进行对应的数据发送。


2.根据权利要求1所述的基于FPGA的高速网络数据传输系统,其特征在于,所述缓存单元通过AXI-Stream接口和核心计算模块连接。


3.根据权利要求1所述的基于FPGA的高速网络数据传输系统,其特征在于,所述会话单元包括会话检查器、会话维护器和查找表,所述会话检查器通过查找表和会话维护器双向连接,所述包解析单元通过会话检查器和缓存单元连接,所述包编辑单元通过会话维护器和缓存单元连接,其中:
会话检查器用于获取报文头信息和负载,根据TCP/IP协议完成建立连接或撤销连接或数据报文接收,还用于将所获取的负载发送给缓存单元;
查找表用于记录连接号以及对应的报文头信息;
会话维护器用于根据上位机(1)的配置执行建立连接请求或撤销连接请求的发起,以及执行获取缓存单元中的数据负载并发送,还用于根据TCP/IP协议完成报文应答响应。


4.一种基于FPGA的高速网络数据传输方法,应用于根据权利要求1~3任一所述的基于FPGA的高速网络数据传输系统,其特征在于,包括以下步骤:
步骤1)各FPGA计算板卡(4)分别上电就绪;
步骤2)上位机(1)重启并识别各FPGA计算板卡(4);
步骤3)上位机(1)分别配置各FPGA计算板卡(4)的网络接口参数;
步骤4)各FPGA计算板卡(4)两两之间建立连接并生成连接号,分别将每一对FPGA计算板卡(4)的连接号发送到上位机(1);
步骤5)上位机(1)根据连接号配置各FPGA计算板卡(4)之间的数据传输方向;
步骤6)上位机(1)在各FPGA计算板卡(4)中选取报文发送FPGA计算板卡并将运算数据发送给报文发送FPGA计算板卡的核心计算模块;
步骤7)报文发送FPGA计算板卡中,核心计算模块将运算结果以及对应的连接号发送给缓存单元,缓存单元将运算结果存入缓存空间并向会话单元发送数据发送请求;
步骤8)报文发送FPGA计算板卡中,会话单元收到数据发送请求,返回应答,然后缓存单元将运算结果和连接号发送给会话单元,会话单元根据连接号在会话单元的查找表里查找报文头信息,然后将运算结果作为负载并将报文头信息和负载发送给包编辑单元;
步骤9)报文发送FPGA计算板卡中,包编辑单元收到报文头信息和负载后按照TCP/IP协议将报文头信息和负载编辑成完整的报文,并将报文发送给介质访问控制单元;
步骤10)报文发送FPGA计算板卡中,介质访问控制单元收到报文后,将报文缓存并按照IEEE802.3规范封装为数据包,然后将数据包发送到网络交换机(3),同时启动计时器,如果超过预设时间后没有收到报文接收FPGA计算板卡发送的数据报文应答报文,则返回步骤8)开始重复发送此次发送的数据报文,直到收到报文接收FPGA计算板卡发送的数据报文应答报文;
步骤11)网络交换机(3)根据报文头信息将收到的数据包转发到报文接收FPGA计算板卡;
步骤12)报文接收FPGA计算板卡中,介质访问控制单元将收到的符合IEEE802.3规范的数据流中的数据包解析成完整报文,并将报文发送给包解析单元;
步骤13)报文接收FPGA计算板卡中,包解析单元收到报文后,首先对报文进行合法性检查,然后提取报文头信息和负载并发送给会话单元;
步骤14)报文接收FPGA计算板卡中,会话单元收到报文头信息后,根据报文头信息判断此报文是否为错误报文且是否为发送到本设备的报文,如果报文为错误报文或不是发送到本设备的报文就丢弃此报文并返回步骤12),如果报文不为错误报文且为发送到本设备的报文,就根据收到的报文头信息在会话单元的查找表里查找连接号,然后把连接号和收到的负载发送给缓存单元,同时发送数据报文应答报文给报文发送FPGA计算板卡;
步骤15)报文接收FPGA计算板卡中,缓存单元将收到的负载存入缓存空间,并向核心计算模块发送数据发送请求,收到核心计算模块的响应后,将负载从缓存中取出并和连接号一同发送给核心计算模块;
步骤16)报文接收FPGA计算板卡中,核心计算模块收到负载后进行运算得到运算结果,根据收到的连接号和上位机(1)的配置判断是否需要将计算结果发送给其他FPGA计算板卡进一步计算,是则当前报文接收FPGA计算板卡作为报文发送FPGA计算板卡并返回步骤7),否则向上位机(1)发送运算结果和运算完成通知并进入步骤17);
步骤17)上位机(1)收到运算结果和运算完成通知后,向每一对FPGA计算板卡发送撤销连接通知。


5.根据权利要求4所述的基于FPGA的高速网络数据传输方法,其特征在于,步骤4)具体包括以下步骤:
步骤4.1)选取一个FPGA计算板卡(4)作为客户端,选取另一个FPGA计算板卡(4)作为服务端;
步骤4.2)上位机(1)生成客户端和服务端的配置参数;
步骤4.3)上位机(1)向客户端下发建立连接指令,客户端向服务端发起建立连接请求,服务端响应请求,客户端和服务端分别进行合法性检查,如果没有建立连接则建立新的连接后客户端返回连接成功的报告并将连接号发送到上位机(1);如果连接已有则客户端返回连接已有的报告到上位机(1);如果服务端在规定的时间没有回应,则客户端返回连接失败的报告到上位机(1);
步骤4.4)返回步骤4.1)直到各FPGA计算板卡(4)两两之间建立连接并生成连接号。


6.根据权利要求5所述...

【专利技术属性】
技术研发人员:王自伟王志奇胡啸东徐亚东朱峰李振斌
申请(专利权)人:常州楠菲微电子有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1