CN112751784A - 一种数据分发方法、装置、fpga及介质 - Google Patents
一种数据分发方法、装置、fpga及介质 Download PDFInfo
- Publication number
- CN112751784A CN112751784A CN202110048846.2A CN202110048846A CN112751784A CN 112751784 A CN112751784 A CN 112751784A CN 202110048846 A CN202110048846 A CN 202110048846A CN 112751784 A CN112751784 A CN 112751784A
- Authority
- CN
- China
- Prior art keywords
- data
- quintuple information
- distributed
- fpga
- data distribution
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000012545 processing Methods 0.000 claims abstract description 37
- 238000004590 computer program Methods 0.000 claims description 10
- 238000001914 filtration Methods 0.000 claims description 6
- 238000000605 extraction Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 11
- 230000001133 acceleration Effects 0.000 description 6
- 230000003139 buffering effect Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
- H04L49/252—Store and forward routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
Abstract
本申请公开了一种数据分发方法、装置、FPGA及介质,包括:利用预设级数的寄存器缓存待分发数据;从所述寄存器中提取所述待分发数据的第一五元组信息和操作码;比对所述第一五元组信息和所述FPGA自身的第二五元组信息;若所述第一五元组信息与所述第二五元组信息一致,则将所述待分发数据根据所述操作码发送至指令处理模块或数据处理模块。这样,无需利用FIFO,避免FIFO写入读出引起的程序复杂度高的问题,能够降低FPGA资源开销,并且降低操作复杂度。
Description
技术领域
本申请涉及FPGA技术领域,特别涉及一种数据分发方法、装置、FPGA及介质。
背景技术
随着计算机技术的不断进步,传统的处理器架构和解决方案已经无法满足应用需求,多处理器及异构加速系统已成为了主要选择的方向。随着FPGA(即Field ProgrammableGate Array,现场可编程与门阵列)器件的快速发展,其异构加速平台的应用为大数据的计算和算法加速提供了一条新的实现途经。在大数据时代,往往需要多块异构加速卡甚至多平台对某个算法或者某个大块数据进行联合计算,以达到算法加速的目的。在协同计算过程中,往往需要数据在不同加速卡间进行传输,某块加速卡的结果作为另一块加速卡的结果,从而使数据计算可以流水起来,让计算可以快速进行,得到预期的加速效果。在协同加速的过程中,如何将指令和数据区分开,把数据分发给指令处理模块和数据处理模块,成为需要解决的重要问题。
网络中每台设备均有唯一的IP(即Internet Protocol Address,互联网协议地址)地址、MAC(即Media Access Control Address,媒体存取控制位址)地址和端口号,每个操作对应一个opcode(即Operating Code,操作码),指令操作和RDMA(即Remote DirectMemory Access,远程直接数据存取)操作对应的opcode不同。数据包通过光口传输给FPGA加速卡,现有技术是将整个数据包存放到FIFO(即First Input First Output,先进先出)中,并将五元组信息提取出来,包括IP地址、MAC地址和端口号。如果五元组正确,则将数据从FIFO中读出,根据opcode信息将数据分发给指令处理模块和RDMA数据处理模块;如果五元组错误,则将数据从FIFO中读出丢弃。这样,需要在FPGA中使用FIFO IP核来存储整包数据,当数据量大或者需要多通道过滤时,则需要占用大量的FPGA资源,并且使FPGA布局布线和时序收敛难度加大。另外,对FIFO进行写入和读出的操作,加大了控制难度,容易出现错误,也增大了调试难度。
发明内容
有鉴于此,本申请的目的在于提供一种数据分发方法、装置、FPGA及介质,能够降低FPGA资源开销,并且降低操作复杂度。其具体方案如下:
第一方面,本申请公开了一种数据分发方法,应用于FPGA,包括:
利用预设级数的寄存器缓存待分发数据;
从所述寄存器中提取所述待分发数据的第一五元组信息和操作码;
比对所述第一五元组信息和所述FPGA自身的第二五元组信息;
若所述第一五元组信息与所述第二五元组信息一致,则将所述待分发数据根据所述操作码发送至指令处理模块或数据处理模块。
可选的,所述数据分发方法,还包括:
基于所述待分发数据的协议格式确定所述预设级数。
可选的,所述数据分发方法,还包括:
当任一帧所述待分发数据的尾部数据经过所述寄存器,则对所述寄存器依次进行清零操作。
可选的,所述数据分发方法,还包括:
若所述第一五元组信息与所述第二五元组信息不一致,则丢弃所述待分发数据并进行计数。
第二方面,本申请公开了一种数据分发装置,应用于FPGA,包括:
缓存控制模块,用于利用预设级数的寄存器缓存待分发数据;
特征提取模块,用于从所述寄存器中提取所述待分发数据的第一五元组信息和操作码;
特征比对模块,用于比对所述第一五元组信息和所述FPGA自身的第二五元组信息;
数据分发模块,用于若所述特征比对模块判定所述第一五元组信息与所述第二五元组信息一致,则将所述待分发数据根据所述操作码发送至指令处理模块或数据处理模块。
可选的,所述数据分发装置,还包括:
缓存级数确定模块,用于基于所述待分发数据的协议格式确定所述预设级数。
可选的,所述数据分发装置,还包括:
缓存清零模块,用于当任一帧所述待分发数据的尾部数据经过所述寄存器,则对所述寄存器依次进行清零操作。
可选的,所述数据分发装置,还包括:
数据过滤模块,用于若所述特征比对模块判定所述第一五元组信息与所述第二五元组信息不一致,则丢弃所述待分发数据并进行计数。
第三方面,本申请公开了一种FPGA,包括:
存储单元,用于保存计算机程序;
处理单元,用于执行所述计算机程序,以实现前述的数据分发方法。
第四方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,所述计算机程序被处理器执行时实现前述的数据分发方法。
可见,本申请利用预设级数的寄存器缓存待分发数据,从所述寄存器中提取所述待分发数据的第一五元组信息和操作码,比对所述第一五元组信息和所述FPGA自身的第二五元组信息,若所述第一五元组信息与所述第二五元组信息一致,则将所述待分发数据根据所述操作码发送至指令处理模块或数据处理模块。也即,本申请利用多级缓存对待分发数据进行缓存,提取数据的五元组信息与自身的五元组信息进行比对,若一致,则将数据根据操作码发送至对应的模块,这样,无需利用FIFO,避免FIFO写入读出引起的程序复杂度高的问题,能够降低FPGA资源开销,并且降低操作复杂度。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种数据分发方法流程图;
图2为本申请公开的一种具体的数据格式示意图;
图3为本申请公开的一种具体的五元组提取比较程序示意图;
图4为本申请公开的一种状态机结构示意图;
图5为本申请公开的一种具体的数据分发方法流程图;
图6为本申请公开的一种具体的寄存器数据缓存和清零过程程序示意图;
图7为本申请公开的一种具体的数据分发流程图;
图8为本申请公开的一种具体的数据分发测试结果示意图;
图9为本申请公开的一种具体的数据分发装置结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
现有技术中,将整个数据包存放到FIFO(即First Input First Output,先进先出)中,并将五元组信息提取出来,包括IP地址、MAC地址和端口号。如果五元组正确,则将数据从FIFO中读出,根据opcode信息将数据分发给指令处理模块和RDMA数据处理模块;如果五元组错误,则将数据从FIFO中读出丢弃。这样,需要在FPGA中使用FIFO IP核来存储整包数据,当数据量大或者需要多通道过滤时,则需要占用大量的FPGA资源,并且使FPGA布局布线和时序收敛难度加大。另外,对FIFO进行写入和读出的操作,加大了控制难度,容易出现错误,也增大了调试难度。为此,本申请提供了一种数据分发方法,能够降低FPGA资源开销,并且降低操作复杂度。
参见图1所示,本申请实施例公开了一种数据分发方法,应用于FPGA,包括:
步骤S11:利用预设级数的寄存器缓存待分发数据。
在具体的实施方式中,可以基于所述待分发数据的协议格式确定所述预设级数。
例如,参见图2所示,图2为本申请实施例公开的一种具体的数据格式示意图。接收上游模块发送的帧数据,该数据包括MAC包头、IPV4(即Internet Protocol version 4,互联网通信协议第四版)包头、UDP(即User Datagram Protocol,用户数据报协议)包头、特殊协议包头、Payload、CRC(即Cyclic Redundancy Check循环冗余校验)校验码和FCS(即Frame Check Sequences,帧校验序列码)码等,由于需要判断的是MAC包头中的MAC地址,IPV4中的IP地址、UDP中的端口号以及特殊协议中的opcode。从图2中的数据格式中,可以看出提取的信息在帧头的前六拍中,只需要六级缓存即可,因此,可以将接收到的数据进行六级缓存,多余的缓存会导致资源浪费和延迟增大。同时,通过多级缓存可以消除拍数据之间的不连续情况,实现数据的流水处理,不会在帧间引入空拍,从而不会降低带宽。
步骤S12:从所述寄存器中提取所述待分发数据的第一五元组信息和操作码。
步骤S13:比对所述第一五元组信息和所述FPGA自身的第二五元组信息。
步骤S14:若所述第一五元组信息与所述第二五元组信息一致,则将所述待分发数据根据所述操作码发送至指令处理模块或数据处理模块。
在具体的实施方式中,若所述第一五元组信息与所述第二五元组信息不一致,则丢弃所述待分发数据并进行计数。
也即,本实施例中将缓存中的数据中的五元组进行提取,即MAC地址、IP地址和端口号。将提取出的五元组与自身的五元组进行比较,如果正确则数据保留并传输给下游模块,如果数据错误则将数据丢弃并进行计数,例如,参见图3所示,图3为本申请实施例公开的一种具体的五元组提取比较程序示意图。具体的,如果五元组正确,则比较提取出的opcode信息,根据opcode信息,将数据下发到下游模块,包括指令处理模块和数据处理模块。
并且,本实施例中,提取五元组和opcode信息,以及分发数据由状态机完成,参见图4所示,图4为本申请实施例公开的一种状态机结构示意图。当数据下发到下游模块完成后,返回到初始状态,等待下次帧数据的到来。
也即,本申请实施例通过将数据寄存几级,相当于将数据延迟几拍,通过延迟提取出需要的五元组以对数据帧进行判断,不使用FIFO将完整的数据帧进行存储。当五元组正确后,根据opcode将数据分发给指令模块和RDMA模块;当五元组错误后,将数据直接丢弃。
另外,本申请实施例中的数据分发方法通用性更和可移植性更高。
可见,本申请实施例利用预设级数的寄存器缓存待分发数据,从所述寄存器中提取所述待分发数据的第一五元组信息和操作码,比对所述第一五元组信息和所述FPGA自身的第二五元组信息,若所述第一五元组信息与所述第二五元组信息一致,则将所述待分发数据根据所述操作码发送至指令处理模块或数据处理模块。也即,本申请利用多级缓存对待分发数据进行缓存,提取数据的五元组信息与自身的五元组信息进行比对,若一致,则将数据根据操作码发送至对应的模块,这样,无需利用FIFO,避免FIFO写入读出引起的程序复杂度高的问题,能够降低FPGA资源开销,并且降低操作复杂度。
参见图5所示,本申请实施例公开了一种具体的数据分发流程图,包括:
步骤S21:利用预设级数的寄存器缓存待分发数据。
步骤S22:从所述寄存器中提取所述待分发数据的第一五元组信息和操作码。
步骤S23:比对所述第一五元组信息和所述FPGA自身的第二五元组信息。
步骤S24:若所述第一五元组信息与所述第二五元组信息一致,则将所述待分发数据根据所述操作码发送至指令处理模块或数据处理模块。
步骤S25:当任一帧所述待分发数据的尾部数据经过所述寄存器,则对所述寄存器依次进行清零操作。
也即,本申请实施例中,当任一帧所述待分发数据的尾部数据从一个寄存器传输至下一级寄存器后,将上一级寄存器清零。
其中,所述尾部数据可以为数据的有效使能标识。
例如,本实施例利用六级寄存器进行数据缓存,在每一次帧数据传输结束后需要进行清零,但清零不可以让6个寄存器同时清零,这样会导致结尾的数据被直接切断,使传输的数据出现错误。在清零时需要将6个寄存器依次清零,这样,在寄存器依次清零,从而不会影响到最终数据的正确性。
例如,参见图6所示,图6为本申请实施例公开的一种具体的寄存器数据缓存和清零过程程序示意图。
例如,参见图7所示,图7为本申请实施例公开的一种具体的数据分发流程图。
例如,参见图8所示,图8为本申请实施例公开的一种具体的数据分发测试结果示意图,将本申请提供的数据分发方案进行上板测试,得到对应的结果。从测试结果中可以看出本实施例进行了正确的过滤分发,其中第一行是分发给数据处理模块,第二行是发送给指令处理模块,并且帧之间是连续的情况下也可以正常分发。
参见图9所示,本申请实施例公开了一种数据分发装置,应用于FPGA,包括:
缓存控制模块11,用于利用预设级数的寄存器缓存待分发数据;
特征提取模块12,用于从所述寄存器中提取所述待分发数据的第一五元组信息和操作码;
特征比对模块13,用于比对所述第一五元组信息和所述FPGA自身的第二五元组信息;
数据分发模块14,用于若所述特征比对模块判定所述第一五元组信息与所述第二五元组信息一致,则将所述待分发数据根据所述操作码发送至指令处理模块或数据处理模块。
可见,本申请实施例利用预设级数的寄存器缓存待分发数据,从所述寄存器中提取所述待分发数据的第一五元组信息和操作码,比对所述第一五元组信息和所述FPGA自身的第二五元组信息,若所述第一五元组信息与所述第二五元组信息一致,则将所述待分发数据根据所述操作码发送至指令处理模块或数据处理模块。也即,本申请利用多级缓存对待分发数据进行缓存,提取数据的五元组信息与自身的五元组信息进行比对,若一致,则将数据根据操作码发送至对应的模块,这样,无需利用FIFO,避免FIFO写入读出引起的程序复杂度高的问题,能够降低FPGA资源开销,并且降低操作复杂度。
并且,所述数据分发装置,还包括:
缓存级数确定模块,用于基于所述待分发数据的协议格式确定所述预设级数。
进一步的,所述数据分发装置,还包括:
缓存清零模块,用于当任一帧所述待分发数据的尾部数据经过所述寄存器,则对所述寄存器依次进行清零操作。
另外,所述数据分发装置,还包括:
数据过滤模块,用于若所述特征比对模块判定所述第一五元组信息与所述第二五元组信息不一致,则丢弃所述待分发数据并进行计数。
进一步的,本申请实施例公开了一种FPGA,包括处理单元和存储单元;其中,所述存储单元,用于保存计算机程序;所述处理单元,用于执行所述计算机程序,以实现前述实施例公开的数据分发方法。
关于上述数据分发方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
进一步的,本申请实施例还公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的数据分发方法。
关于上述数据分发方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的一种数据分发方法、装置、FPGA及介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种数据分发方法,其特征在于,应用于FPGA,包括:
利用预设级数的寄存器缓存待分发数据;
从所述寄存器中提取所述待分发数据的第一五元组信息和操作码;
比对所述第一五元组信息和所述FPGA自身的第二五元组信息;
若所述第一五元组信息与所述第二五元组信息一致,则将所述待分发数据根据所述操作码发送至指令处理模块或数据处理模块。
2.根据权利要求1所述的数据分发方法,其特征在于,还包括:
基于所述待分发数据的协议格式确定所述预设级数。
3.根据权利要求1所述的数据分发方法,其特征在于,还包括:
当任一帧所述待分发数据的尾部数据经过所述寄存器,则对所述寄存器依次进行清零操作。
4.根据权利要求1所述的数据分发方法,其特征在于,还包括:
若所述第一五元组信息与所述第二五元组信息不一致,则丢弃所述待分发数据并进行计数。
5.一种数据分发装置,其特征在于,应用于FPGA,包括:
缓存控制模块,用于利用预设级数的寄存器缓存待分发数据;
特征提取模块,用于从所述寄存器中提取所述待分发数据的第一五元组信息和操作码;
特征比对模块,用于比对所述第一五元组信息和所述FPGA自身的第二五元组信息;
数据分发模块,用于若所述特征比对模块判定所述第一五元组信息与所述第二五元组信息一致,则将所述待分发数据根据所述操作码发送至指令处理模块或数据处理模块。
6.根据权利要求5所述的数据分发装置,其特征在于,还包括:
缓存级数确定模块,用于基于所述待分发数据的协议格式确定所述预设级数。
7.根据权利要求5所述的数据分发装置,其特征在于,还包括:
缓存清零模块,用于当任一帧所述待分发数据的尾部数据经过所述寄存器,则对所述寄存器依次进行清零操作。
8.根据权利要求5所述的数据分发装置,其特征在于,还包括:
数据过滤模块,用于若所述特征比对模块判定所述第一五元组信息与所述第二五元组信息不一致,则丢弃所述待分发数据并进行计数。
9.一种FPGA,其特征在于,包括:
存储单元,用于保存计算机程序;
处理单元,用于执行所述计算机程序,以实现如权利要求1至4任一项所述的数据分发方法。
10.一种计算机可读存储介质,其特征在于,用于保存计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述的数据分发方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110048846.2A CN112751784A (zh) | 2021-01-14 | 2021-01-14 | 一种数据分发方法、装置、fpga及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110048846.2A CN112751784A (zh) | 2021-01-14 | 2021-01-14 | 一种数据分发方法、装置、fpga及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112751784A true CN112751784A (zh) | 2021-05-04 |
Family
ID=75651945
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110048846.2A Withdrawn CN112751784A (zh) | 2021-01-14 | 2021-01-14 | 一种数据分发方法、装置、fpga及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112751784A (zh) |
-
2021
- 2021-01-14 CN CN202110048846.2A patent/CN112751784A/zh not_active Withdrawn
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8681819B2 (en) | Programmable multifield parser packet | |
US9124541B2 (en) | Zero copy acceleration for session oriented protocols | |
CN111327603B (zh) | 数据传输方法、装置和系统 | |
US20030031172A1 (en) | TCP receiver acceleration | |
CN108462642B (zh) | 基于fpga的udp/ip硬件协议栈及实现方法 | |
WO2016115831A1 (zh) | 一种虚拟机容错的方法、装置及系统 | |
WO2006011963A1 (en) | Processing receive protocol data units | |
CN112272128B (zh) | Hinoc组帧方法、系统、介质、计算机设备及应用 | |
US20070022225A1 (en) | Memory DMA interface with checksum | |
CN111506335A (zh) | 一种基于dsp+fpga的程序在线升级方法及系统 | |
EP3065323B1 (en) | Transmission method and device based on management data input/output multi-source agreements | |
CN111865811B (zh) | 一种数据处理方法、装置、设备及介质 | |
CN108768778B (zh) | 一种网络时延计算方法、装置、设备及存储介质 | |
CN112751784A (zh) | 一种数据分发方法、装置、fpga及介质 | |
WO2017046582A1 (en) | Tcp/ip offload system | |
US9559857B2 (en) | Preprocessing unit for network data | |
US20090285207A1 (en) | System and method for routing packets using tags | |
CN112073436B (zh) | 一种降低toe中接收通道传输延迟量的方法 | |
US9736080B2 (en) | Determination method, device and storage medium | |
US10652162B2 (en) | Scalable packet processing | |
CN113703715A (zh) | 一种正则表达式匹配方法、装置、fpga及介质 | |
US10592299B2 (en) | Computation node device, parallel computer system, and control method for computation node device | |
CN114827312B (zh) | 在智能网卡/dpu内自适应延迟及吞吐率需求的方法及装置 | |
CN114710237B (zh) | 通讯接口的数据处理方法、装置、电子设备及存储介质 | |
US11431815B1 (en) | Mining proxy acceleration |
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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20210504 |