CN111967244B - 一种基于fpga的fast协议解码方法、装置及设备 - Google Patents
一种基于fpga的fast协议解码方法、装置及设备 Download PDFInfo
- Publication number
- CN111967244B CN111967244B CN202010751254.2A CN202010751254A CN111967244B CN 111967244 B CN111967244 B CN 111967244B CN 202010751254 A CN202010751254 A CN 202010751254A CN 111967244 B CN111967244 B CN 111967244B
- Authority
- CN
- China
- Prior art keywords
- field
- decoding
- fields
- fast protocol
- state machine
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 74
- 230000008569 process Effects 0.000 claims abstract description 23
- 238000012545 processing Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 9
- 230000011218 segmentation Effects 0.000 claims description 4
- 230000003139 buffering effect Effects 0.000 claims description 3
- 230000000694 effects Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 5
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 150000002678 macrocyclic compounds Chemical class 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
- G06F40/146—Coding or compression of tree-structured data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
- G06F40/221—Parsing markup language streams
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3068—Precoding preceding compression, e.g. Burrows-Wheeler transformation
- H03M7/3077—Sorting
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/70—Type of the data to be coded, other than image and sound
- H03M7/707—Structured documents, e.g. XML
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6005—Decoder aspects
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6017—Methods or arrangements to increase the throughput
- H03M7/6023—Parallelization
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Communication Control (AREA)
Abstract
本申请公开了一种基于FPGA的FAST协议解码方法,通过即时获取实际的XML模板并对其进行解析,生成FAST协议中间表示,并根据预先设置的解码参数确定单次读取的最大字段数,进而生成字段匹配状态机,因此该方法能够支持动态更新的XML模板,且允许根据实际网络带宽灵活设置最大字段数,适用于不同网络带宽的应用场景。在解码过程中,该方法通过字段移位寄存器和字段匹配状态机实现每次并行读取并解码多个字段的功能,显著提升了解码效率。此外,本申请还提供了一种基于FPGA的FAST协议解码装置、设备及可读存储介质,其技术效果与上述方法的技术效果相对应。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种基于FPGA的FAST协议解码方法、装置、设备及可读存储介质。
背景技术
国内沪深LEVEL-2行情采用面向流的金融信息交换协议(FIX Adapted ForStreaming,FAST)协议进行传输。FAST是一种面向消息数据流的、具有高的压缩率和处理效率的编码方法,FAST编码包含了利用XML信息模板编码和变长编码字节压缩等过程。
现有技术中,一种FAST协议解码方案包括读数据,字段解码以及解码结果输出三个部分,并通过缓存器进行中间结果缓存。读数据部件负责从FAST行情数据输入流缓存器中读取字段的编码值,字段解码部件依据字段操作符的规则负责具体的解码,结果输出部件负责输出解码的字段值至FIX消息缓存器。但是,其核心的FAST字段解码每次操作至多读取一个字段的编码值,性能受到限制,解码效率较低。而且,在实际应用中,XML模板可能需要动态修改,这种情况下需要修改控制逻辑,该方案无法适用于修改后的XML模板。
可见,如何提供一种FAST协议的解码方案,避免每次只能解码一个字段以及不支持动态变化的XML模板的缺陷,是亟待本领域技术人员解决的问题。
发明内容
本申请的目的是提供一种基于FPGA的FAST协议解码方法、装置、设备及可读存储介质,用以解决当前的FAST协议解码方案每次只能解码一个字段以及不支持动态变化的XML模板,因此解码效率低下,场景适应能力较差的问题。其具体方案如下:
第一方面,本申请提供了一种基于FPGA的FAST协议解码方法,包括:
获取FAST协议的XML模板;根据所述XML模板的结构确定字段的存在条件,并根据所述XML模板中字段的分布情况,生成包括所述存在条件的FAST协议中间表示;
根据所述FAST协议中间表示和预先设置的解码参数,生成字段匹配状态机,其中所述解码参数包括每时钟周期处理的最大字段数,所述字段匹配状态机用于描述解码过程中每次读取的字段,单次读取的字段数小于等于所述最大字段数,且同一次读取的字段的存在条件相互独立;
利用FPGA接收FAST协议的字节数据流,将所述字节数据流分割为字段数据流,并缓存至字段移位寄存器中;
根据所述字段匹配状态机,从所述字段移位寄存器中并行读取相应的字段,并进行解码。
优选的,所述根据所述XML模板的结构确定字段的存在条件,包括:
若目标字段在所述XML模板中处于循环结构中,则确定所述目标字段与在所述XML模板中位于所述目标字段之前的字段之间的存在关系,以作为所述目标字段的存在条件;
若目标字段在所述XML模板中未处于循环结构中,则确定在存在位图字段中与所述目标字段对应的目标比特位,以作为所述目标字段的存在条件。
优选的,所述根据所述XML模板中字段的分布情况,生成包括所述存在条件的FAST协议中间表示,包括:
根据所述XML模板确定字段的解码属性;根据所述XML模板中字段的分布情况,生成包括所述存在条件和所述解码属性的FAST协议中间表示。
优选的,所述将所述字节数据流分割为字段数据流,并缓存至字段移位寄存器中,包括:
将所述字节数据流分割为字段数据流,在每次缓存时,将所述最大字段数的字段并行缓存至字段移位寄存器中。
优选的,所述根据所述字段匹配状态机,从所述字段移位寄存器中并行读取相应的字段,包括:
根据存在位图字段进行字段匹配,确定各个字段是否存在;根据所述字段匹配状态机,从所述字段移位寄存器中并行读取相应的字段。
优选的,所述利用FPGA接收FAST协议的字节数据流,将所述字节数据流分割为字段数据流,包括:
利用FPGA接收FAST协议的字节数据流,根据停止位,将所述字节数据流分割为字段数据流。
优选的,在所述根据所述FAST协议中间表示和预先设置的解码参数,生成字段匹配状态机之前,还包括:
根据当前网络带宽,确定相应的解码参数。
第二方面,本申请提供了一种基于FPGA的FAST协议解码装置,包括:
模板解析模块:用于获取FAST协议的XML模板;根据所述XML模板的结构确定字段的存在条件,并根据所述XML模板中字段的分布情况,生成包括所述存在条件的FAST协议中间表示;
状态机生成模块:用于根据所述FAST协议中间表示和预先设置的解码参数,生成字段匹配状态机,其中所述解码参数包括每时钟周期处理的最大字段数,所述字段匹配状态机用于描述解码过程中每次读取的字段,单次读取的字段数小于等于所述最大字段数,且同一次读取的字段的存在条件相互独立;
数据流分割模块:用于利用FPGA接收FAST协议的字节数据流,将所述字节数据流分割为字段数据流,并缓存至字段移位寄存器中;
解码模块:用于根据所述字段匹配状态机,从所述字段移位寄存器中并行读取相应的字段,并进行解码。
第三方面,本申请提供了一种基于FPGA的FAST协议解码设备,包括:
存储器:用于存储计算机程序;
处理器:用于执行所述计算机程序,以实现如上所述的基于FPGA的FAST协议解码方法的步骤。
第四方面,本申请提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如上所述的基于FPGA的FAST协议解码方法的步骤。
本申请所提供的一种基于FPGA的FAST协议解码方法,包括:获取FAST协议的XML模板;根据XML模板的结构确定字段的存在条件,并根据XML模板中字段的分布情况,生成包括存在条件的FAST协议中间表示;根据FAST协议中间表示和预先设置的解码参数,生成字段匹配状态机,其中解码参数包括每时钟周期处理的最大字段数,字段匹配状态机用于描述解码过程中每次读取的字段,单次读取的字段数小于等于最大字段数,且同一次读取的字段的存在条件相互独立;利用FPGA接收FAST协议的字节数据流,将字节数据流分割为字段数据流,并缓存至字段移位寄存器中;根据字段匹配状态机,从字段移位寄存器中并行读取相应的字段,并进行解码。
综上,针对目前对动态更新的XML模板支持较差且无法适应不同网络带宽的问题,该方法通过即时获取实际的XML模板并对其进行解析,生成FAST协议中间表示,并根据预先设置的解码参数确定单次读取的最大字段数,进而生成字段匹配状态机,因此该方法能够支持动态更新的XML模板,且允许根据实际网络带宽灵活设置最大字段数。在解码过程中,该方法通过字段移位寄存器和字段匹配状态机实现单次解码多个字段的功能,具体的,输入字节流经过分割成为字段之后,存储在字段移位寄存器之中,通过字段匹配状态机每次并行读取小于等于最大字段数的字段,并解码,显著提升了解码效率。
此外,本申请还提供了一种基于FPGA的FAST协议解码装置、设备及可读存储介质,其技术效果与上述方法的技术效果相对应,这里不再赘述。
附图说明
为了更清楚的说明本申请实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请所提供的一种基于FPGA的FAST协议解码方法实施例一的实现流程图;
图2为本申请所提供的一种基于FPGA的FAST协议解码方法实施例一的过程示意图;
图3为本申请所提供的一种基于FPGA的FAST协议解码方法实施例二的实现流程图;
图4为本申请所提供的FAST协议XML模板UA3201示意图;
图5为根据XML模板UA3201生成的二进制数据示意图;
图6为本申请所提供的一种基于FPGA的FAST协议解码方法实施例二中S302的细化流程图;
图7为本申请所提供的FAST协议XML模板UA3202示意图;
图8为本申请所提供的根据XML模板UA3202生成的一种可行的字段匹配状态机的示意图;
图9为本申请所提供的一种基于FPGA的FAST协议解码方法实施例二的整体过程示意图;
图10为本申请所提供的实际应用中一种字段匹配状态机的示意图;
图11为本申请所提供的一种基于FPGA的FAST协议解码装置实施例的功能框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前的FAST协议解码方案存在以下缺点:
第一,解码过程中每次只能读取一个字段,而在常见的10G带宽的网络接口中,输入的FAST数据流中往往包含最多4个字段,可见目前的FAST解码方案不能充分发挥带宽优势。
第二,金融领域的XML模板存在动态更新的可能,目前的FAST解码方案通过人工手动挂载新解码算子,并且需要修改控制器控制逻辑,需要较长的修改和验证时间,无法第一时间完成更新,可见目前的FAST解码方案不支持动态更新的XML模板。
第三,对于不同种类带宽的网络接口,包括1G/10G/25G/40G/100G等,目前的FAST解码方案采用同样的解码方法,无法灵活适应不同的网络带宽。
针对以上问题,本申请提供了一种基于FPGA的FAST协议解码方法、装置、设备及可读存储介质,即时获取实际的XML模板并对其进行解析,并根据预先设置的解码参数确定单次读取的最大字段数,进而生成字段匹配状态机,因此能够支持动态更新的XML模板,且允许根据实际网络带宽灵活设置最大字段数,而且在将输入字节流分割成为字段之后,存储在字段移位寄存器之中,通过字段匹配状态机每次并行读取小于等于最大字段数的字段,并解码,显著提升了解码效率。
下面对本申请提供的一种基于FPGA的FAST协议解码方法实施例一进行介绍,参见图1,实施例一包括:
S101、获取FAST协议的XML模板;根据所述XML模板的结构确定字段的存在条件,并根据所述XML模板中字段的分布情况,生成包括所述存在条件的FAST协议中间表示;
S102、根据所述FAST协议中间表示和预先设置的解码参数,生成字段匹配状态机;
S103、利用FPGA接收FAST协议的字节数据流,将所述字节数据流分割为字段数据流,并缓存至字段移位寄存器中;
S104、根据所述字段匹配状态机,从所述字段移位寄存器中并行读取相应的字段,并进行解码。
本实施例整体框架如图2所示,主要包括3个部分:
第一部分,生成FAST协议中间表示,首先读入FAST协议的XML模板,分析该XML模板的结构,确定XML模板中各个字段的存在条件,并根据XML模板中字段的分布情况,生成FAST协议中间表示。本实施例中,该FAST协议中间表示包含字段的存在条件这一信息。
上述存在条件用于描述每一个FAST字段的存在性与之前接收的FAST字段之间的关系。具体的,在实际应用中,XML模板中的字段的存在性可能不受其他字段影响,也可能受到位于该字段之前的字段的实际值的影响。针对这两种情形,本实施例分别描述每个字段的存在条件。
第二部分,生成FAST协议的字段匹配状态机,依据FAST协议中间表示和预先设置的解码参数,生成字段匹配状态机。其中,解码参数包含以下信息:每时钟周期处理的最大字段数;字段匹配状态机用于描述解码过程中每次读取的字段,且满足以下条件:单次读取的字段数小于等于所述最大字段数,且同一次读取的字段的存在条件相互独立。
其中,解码参数是指:每时钟周期处理的最大字段数。具体取值可以根据实际应用场景而自行配置,具体可以是4,8,16,32,64等多种配置,本实施例对此不做限定。
所谓存在条件相互独立,当前字段是否存在这一情况不受其他字段的影响。
本部分的主要目的在于进行FPGA并行化优化,最小化FPGA处理延时与处理逻辑。具体的,通过字段匹配状态机描述每次读取过程中能够读取到的一定数量存在条件相互独立的字段,实现每次并行读取多个字段的目的,提升解码效率。作为一种优选的实施方式,字段匹配状态机具体可以描述每次读取过程中能够读取到的存在条件相互独立的最大数量的字段,可以理解的是,此处的最大数量也需要满足小于等于前述最大字段数的条件。
第三部分,对FAST协议的字节数据流进行分段并解码。
具体的,可以根据前述字段匹配状态机生成RTL解码代码,然后通过运行该RTL解码代码实现整个解码流程。
本实施例所提供一种基于FPGA的FAST协议解码方法,针对目前单次解码最多一个字段的问题,通过字段移位寄存器加字段匹配状态机的方案予以解决,在输入字节流经过分割成为字段之后,存储在字段移位寄存器之中,通过字段匹配状态机动态读取可变个字段,实现单次解码多个字段的处理能力,显著提升解码效率。针对目前系统对于动态模板更新支持较差并无法适应不同带宽网络的问题,在生成字段匹配状态机的过程中,即时获取实际的XML模板并对其进行解析,并根据预先设置的解码参数确定单次读取的最大字段数,进而生成字段匹配状态机,因此能够支持动态更新的XML模板,且允许根据实际网络带宽灵活设置最大字段数。
综上,本实施例至少包括以下优点:
优点1,支持XML模板动态更新;
优点2,解码逻辑支持每次并行解码多个字段,提高了解码性能;
优点3,解码逻辑支持多种网络带宽,高度灵活可配置,充分发挥网络带宽的优势。
下面开始详细介绍本申请提供的一种基于FPGA的FAST协议解码方法实施例二,实施例二基于前述实施例一实现,并在实施例一的基础上进行了一定程度上的拓展。
具体的,本实施例对确定字段存在条件的过程进行了详细描述;本实施例在缓存过程也采用并行缓存的方式,如以当前的最大字段数进行缓存;此外,本实施例能够自动根据当前网络带宽设置相应的解码参数。
参见图3,实施例二具体包括:
S301、根据当前网络带宽,确定相应的解码参数;即时获取FAST协议的XML模板;
S302、根据所述XML模板的结构确定字段的存在条件;
S303、根据所述XML模板确定字段的解码属性;根据所述XML模板中字段的分布情况,生成包括所述存在条件和所述解码属性的FAST协议中间表示;
S304、根据所述FAST协议中间表示和预先设置的解码参数,生成字段匹配状态机;
S305、根据字段匹配状态机,生成FAST协议的RTL解码代码;
S306、在FPGA上运行所述RTL解码代码,接收FAST协议的字节数据流;根据停止位,将所述字节数据流分割为字段数据流;在每次缓存时,将所述最大字段数的字段并行缓存至字段移位寄存器中;
S307、根据存在位图字段进行字段匹配,确定各个字段是否存在;根据所述字段匹配状态机,从所述字段移位寄存器中并行读取相应的字段,并进行解码。
一个典型的FAST协议XML模板UA3201如图4所示,XML模板的每一行用于描述一个字段,包含字段的类型、名称、ID号、操作符等关键元素。字段经过了变长编码压缩,同时以停止位为分界符分割字段。
根据该模板编码之后,实际行情接收到的二进制数据如图5所示,相邻两个字段之间通过停止位,也即字节的最高位为1来分割。图5中,前几个字段为5ffc,1981,81,81,3630333032b0等。第一个字段通常为存在位图字段,决定了后续传输的字段是模板中哪个具体字段。如5ffc即0101_1111_1111_1100意味着在经过解码之后的存在位图为1011111_1111100(舍掉两个字节的最高位),存在位图用于XML模板中描述的各个字段是否存在,此处的存在位图具体表示:TemplateID(MessageType)存在,DataStatus不存在,TradeIndex、TradeChannel、SecurityID、TradeTime、TradePrice、TradeQty、TradeMoney、TradeBuyNo、TradeSellNo和TradeBSFlag存在。由于图4所示的XML模板仅有12个字段,因此,存在位图的最后两位0为填充字节bit,无实际意义。
在中间表示生成过程中,本实施例首先读入FAST协议的XML模板,分析该XML模板的结构,最终依据其是否包含内部循环,各个字段的存在条件与解码属性以及配置的FAST解码参数等,生成FAST协议中间表示。因此,如图6所示,上述S302包括:
S601、若目标字段在所述XML模板中处于循环结构中,则确定所述目标字段与在所述XML模板中位于所述目标字段之前的字段之间的存在关系,以作为所述目标字段的存在条件;
S602、若目标字段在所述XML模板中未处于循环结构中,则确定在存在位图字段中与所述目标字段对应的目标比特位,以作为所述目标字段的存在条件。
例如,XML模板UA3201对应的FAST协议中间表示如下所示,其描述了以下信息:每一个字段的存在性是由存在位图的某一bit决定:
TID reg_pmap[0]
DataStatus reg_pmap[1]
TradeIndex reg_pmap[2]
TradeChannel reg_pmap[3]
SecurityID reg_pmap[4]
TradeTime reg_pmap[5]
TradePrice reg_pmap[6]
TradeQty reg_pmap[7]
TradeMoney reg_pmap[8]
TradeBuyNo reg_pmap[9]
TradeSellN,reg_pmap[10]
TradeBSFlag reg_pmap[11]
再以图7的XML模板UA3202片段为例,该模板存在循环结构。省略开头一些较为固定的部分,对于循环结构中,其对应的部分FAST协议中间表示如下所示,该部分FAST协议中间表示描述了以下信息:每个字段的存在性与其之前接收的字段之间的关系:
Orders(BidLevels>0&&NoOrders>0)
OrderQueueOperator(BidLevels>0&&NoOrders>0&&ImageStatus==2)
OrderQueueOperatorEntryID(BidLevels>0&&NoOrders>0&&ImageStatus==2&&OrderQueueOperator==2or 3)
OrderQty(BidLevels>0&&NoOrders>0&&ImageStatus==2&&OrderQueueOperator!=3)
对于比较简单的FAST协议的XML模板,例如如图4所示的UA3201,其字段的存在性仅仅取决于存在位图字段。对于比较复杂的FAST协议的XML模板,例如如图7所示的UA3202,其字段的存在性不仅取决于存在位图,还取决于其它字段的实际值。因此,为了使接收匹配状态机复杂度最小化,同时满足输入的字段处理能力参数的要求,需要根据FAST协议中间表示生成字段匹配状态机。
假设当前网络带宽允许的最大字段数为4,那么,以如图7所示的UA3202模板为例,则一种可行的字段匹配状态机如图8所示。图8的每一行为字段匹配状态机的一个状态,每一行的字段数量不超过预先设置的最大字段数,即不超过4字段。图8中,第4行表示一个大循环的开始,第6行表示该大循环中子循环的开始;同理,第10行表示另一个大循环的开始,第12行表示该大循环中子循环的开始。
利用FPGA进行FAST协议解码时,首先根据停止位将输入字节数据流分割为字段数据流,并缓存到字段移位寄存器中;再根据XML模板的存在位图字段对字段进行动态匹配,根据字段匹配状态机,从所述字段移位寄存器中并行读取相应的字段,并进行解码,得到FAST行情数据,整体解码流程如图9所示。
可见,本实施例提供的一种基于FPGA的FAST协议解码方法,其显著特征包括:
第一,生成FAST协议中间表示,首先读入FAST协议XML模板,分析FAST协议网络结构,依据其是否包含内部循环,各个字段的存在与解码属性以及配置的FAST解码参数等,生成FAST协议中间表示格式。
第二,生成FAST协议的字段匹配状态机,依据FAST协议中间表示和FAST解码参数进行FPGA并行化优化,最小化FPGA处理延时与处理逻辑,得到FAST协议的字段匹配状态机。
第三,生成FAST协议的RTL解码代码,通过运行RTL解码代码,实现对FAST协议的数据流的解码。
在实际应用中,FAST行情数据中可能包含买和卖2个方向的档位循环数据以及委托循环数据,如果按照输入字段个数进行解码,则跳转关系过于复杂。为了减少字段匹配的复杂度,本申请将输入字段先缓存到字段移位寄存器中,其中移位寄存器输入字段个数为每一个时钟周期的最大字段数。例如,在10Gbits/s的情况下输入为4个字节,则对应最多4个字段。移位寄存器的输出为字段匹配状态机的读取个数,此处兼顾吞吐量和设计时钟频率,最大支持4个字段的读取。字段匹配状态机通过限制FAST解码状态的跳转,简化匹配状态机状态的个数并提高时钟频率;同时通过获取并行个数的字段,提高了整体的吞吐能力。
具体的匹配状态机跳转如10所示,如图10所示,本申请中匹配状态机由传统的逐个字段跳转更改为多个并行字段的匹配跳转,提高了单个时钟处理多个字段的能力;同时,状态机之间的跳转进行了优化,不是简单地按照输入的字段数进行跳转,而是通过事先限定状态机的跳转可能,根据已知的信息,动态地读取多个并行字段,在尽可能多地读取字段的前提下简化状态机的复杂度。
基于以上两个特征,本申请减少了FAST数据需要处理的cycle数,并提高了匹配状态机的主频,从而减少了整体处理延时。
下面对本申请实施例提供的一种基于FPGA的FAST协议解码装置进行介绍,下文描述的一种基于FPGA的FAST协议解码装置与上文描述的一种基于FPGA的FAST协议解码方法可相互对应参照。
如图11所示,本实施例的基于FPGA的FAST协议解码装置,包括:
模板解析模块111:用于获取FAST协议的XML模板;根据所述XML模板的结构确定字段的存在条件,并根据所述XML模板中字段的分布情况,生成包括所述存在条件的FAST协议中间表示;
状态机生成模块112:用于根据所述FAST协议中间表示和预先设置的解码参数,生成字段匹配状态机,其中所述解码参数包括每时钟周期处理的最大字段数,所述字段匹配状态机用于描述解码过程中每次读取的字段,单次读取的字段数小于等于所述最大字段数,且同一次读取的字段的存在条件相互独立;
数据流分割模块113:用于利用FPGA接收FAST协议的字节数据流,将所述字节数据流分割为字段数据流,并缓存至字段移位寄存器中;
解码模块114:用于根据所述字段匹配状态机,从所述字段移位寄存器中并行读取相应的字段,并进行解码。
本实施例的基于FPGA的FAST协议解码装置用于实现前述的基于FPGA的FAST协议解码方法,因此该装置中的具体实施方式可见前文中的基于FPGA的FAST协议解码方法的实施例部分,例如,模板解析模块111、状态机生成模块112、数据流分割模块113、解码模块114,分别用于实现上述基于FPGA的FAST协议解码方法中步骤S101,S102,S103,S104。所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再展开介绍。
另外,由于本实施例的基于FPGA的FAST协议解码装置用于实现前述的基于FPGA的FAST协议解码方法,因此其作用与上述方法的作用相对应,这里不再赘述。
此外,本申请还提供了一种基于FPGA的FAST协议解码设备,包括:
存储器:用于存储计算机程序;
处理器:用于执行所述计算机程序,以实现如上文所述的基于FPGA的FAST协议解码方法的步骤。
最后,本申请提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如上文所述的基于FPGA的FAST协议解码方法的步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的方案进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (8)
1.一种基于FPGA的FAST协议解码方法,其特征在于,包括:
获取FAST协议的XML模板;根据所述XML模板的结构确定字段的存在条件,并根据所述XML模板中字段的分布情况,生成包括所述存在条件的FAST协议中间表示;
根据所述FAST协议中间表示和预先设置的解码参数,生成字段匹配状态机,其中所述解码参数包括每时钟周期处理的最大字段数,所述字段匹配状态机用于描述解码过程中每次读取的字段,单次读取的字段数小于等于所述最大字段数,且同一次读取的字段的存在条件相互独立;
利用FPGA接收FAST协议的字节数据流,将所述字节数据流分割为字段数据流,并缓存至字段移位寄存器中;
根据所述字段匹配状态机,从所述字段移位寄存器中并行读取相应的字段,并进行解码;
所述根据所述XML模板的结构确定字段的存在条件,包括:
若目标字段在所述XML模板中处于循环结构中,则确定所述目标字段与在所述XML模板中位于所述目标字段之前的字段之间的存在关系,以作为所述目标字段的存在条件;
若目标字段在所述XML模板中未处于循环结构中,则确定在存在位图字段中与所述目标字段对应的目标比特位,以作为所述目标字段的存在条件;
所述根据所述XML模板中字段的分布情况,生成包括所述存在条件的FAST协议中间表示,包括:
根据所述XML模板确定字段的解码属性;根据所述XML模板中字段的分布情况,生成包括所述存在条件和所述解码属性的FAST协议中间表示;
所述基于FPGA的FAST协议解码方法,还包括:
根据所述字段匹配状态机生成RTL解码代码,通过运行所述RTL解码代码实现整个解码流程。
2.如权利要求1所述的方法,其特征在于,所述将所述字节数据流分割为字段数据流,并缓存至字段移位寄存器中,包括:
将所述字节数据流分割为字段数据流,在每次缓存时,将所述最大字段数的字段并行缓存至字段移位寄存器中。
3.如权利要求1所述的方法,其特征在于,所述根据所述字段匹配状态机,从所述字段移位寄存器中并行读取相应的字段,包括:
根据存在位图字段进行字段匹配,确定各个字段是否存在;根据所述字段匹配状态机,从所述字段移位寄存器中并行读取相应的字段。
4.如权利要求1所述的方法,其特征在于,所述利用FPGA接收FAST协议的字节数据流,将所述字节数据流分割为字段数据流,包括:
利用FPGA接收FAST协议的字节数据流,根据停止位,将所述字节数据流分割为字段数据流。
5.如权利要求1-4任意一项所述的方法,其特征在于,在所述根据所述FAST协议中间表示和预先设置的解码参数,生成字段匹配状态机之前,还包括:
根据当前网络带宽,确定相应的解码参数。
6.一种基于FPGA的FAST协议解码装置,其特征在于,包括:
模板解析模块:用于获取FAST协议的XML模板;根据所述XML模板的结构确定字段的存在条件,并根据所述XML模板中字段的分布情况,生成包括所述存在条件的FAST协议中间表示;
状态机生成模块:用于根据所述FAST协议中间表示和预先设置的解码参数,生成字段匹配状态机,其中所述解码参数包括每时钟周期处理的最大字段数,所述字段匹配状态机用于描述解码过程中每次读取的字段,单次读取的字段数小于等于所述最大字段数,且同一次读取的字段的存在条件相互独立;
数据流分割模块:用于利用FPGA接收FAST协议的字节数据流,将所述字节数据流分割为字段数据流,并缓存至字段移位寄存器中;
解码模块:用于根据所述字段匹配状态机,从所述字段移位寄存器中并行读取相应的字段,并进行解码;
所述基于FPGA的FAST协议解码装置,还用于:
若目标字段在所述XML模板中处于循环结构中,则确定所述目标字段与在所述XML模板中位于所述目标字段之前的字段之间的存在关系,以作为所述目标字段的存在条件;
若目标字段在所述XML模板中未处于循环结构中,则确定在存在位图字段中与所述目标字段对应的目标比特位,以作为所述目标字段的存在条件;
根据所述XML模板确定字段的解码属性;根据所述XML模板中字段的分布情况,生成包括所述存在条件和所述解码属性的FAST协议中间表示;
根据所述字段匹配状态机生成RTL解码代码,然后通过运行所述RTL解码代码实现整个解码流程。
7.一种基于FPGA的FAST协议解码设备,其特征在于,包括:
存储器:用于存储计算机程序;
处理器:用于执行所述计算机程序,以实现如权利要求1-5任意一项所述的基于FPGA的FAST协议解码方法的步骤。
8.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如权利要求1-5任意一项所述的基于FPGA的FAST协议解码方法的步骤。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010751254.2A CN111967244B (zh) | 2020-07-30 | 2020-07-30 | 一种基于fpga的fast协议解码方法、装置及设备 |
PCT/CN2021/076927 WO2022021852A1 (zh) | 2020-07-30 | 2021-02-19 | 一种基于fpga的fast协议解码方法、装置及设备 |
US18/007,434 US20230281385A1 (en) | 2020-07-30 | 2021-02-19 | Fpga-based fast protocol decoding method, apparatus, and device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010751254.2A CN111967244B (zh) | 2020-07-30 | 2020-07-30 | 一种基于fpga的fast协议解码方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111967244A CN111967244A (zh) | 2020-11-20 |
CN111967244B true CN111967244B (zh) | 2023-03-14 |
Family
ID=73363681
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010751254.2A Active CN111967244B (zh) | 2020-07-30 | 2020-07-30 | 一种基于fpga的fast协议解码方法、装置及设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230281385A1 (zh) |
CN (1) | CN111967244B (zh) |
WO (1) | WO2022021852A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111967244B (zh) * | 2020-07-30 | 2023-03-14 | 浪潮(北京)电子信息产业有限公司 | 一种基于fpga的fast协议解码方法、装置及设备 |
CN112346843A (zh) * | 2020-11-26 | 2021-02-09 | 上海金融期货信息技术有限公司 | 一种低延时fast协议的解析方法 |
CN112650499A (zh) * | 2020-12-29 | 2021-04-13 | 国泰君安证券股份有限公司 | 基于OpenCL平台实现对交易所level-2 FAST行情的硬件解码处理的系统 |
CN113067581B (zh) * | 2021-03-11 | 2023-02-10 | 深圳华云信息系统有限公司 | 解码系统、解码方法、电子设备及存储介质 |
CN114157734A (zh) * | 2021-12-06 | 2022-03-08 | 北京天融信网络安全技术有限公司 | 数据解析方法、装置、电子设备及存储介质 |
CN115086442B (zh) * | 2022-08-15 | 2022-12-27 | 恒生电子股份有限公司 | 数据处理方法及装置 |
CN115174698B (zh) * | 2022-09-07 | 2022-12-13 | 深圳华锐分布式技术股份有限公司 | 基于表项索引的行情数据解码方法、装置、设备及介质 |
CN117574178B (zh) * | 2024-01-15 | 2024-04-26 | 国网湖北省电力有限公司信息通信公司 | 基于fpga的网络流量字符串自动匹配方法和匹配装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104699448A (zh) * | 2015-03-20 | 2015-06-10 | 上海交通大学 | Fast协议的并行解码系统及其实现方法 |
CN105659274A (zh) * | 2013-10-01 | 2016-06-08 | 艾尼克斯股份有限公司 | 用于在可重构平台中解码数据流的方法和设备 |
CN105654383A (zh) * | 2016-01-07 | 2016-06-08 | 中国科学院信息工程研究所 | 基于流水线架构的低时延fast行情解码装置和方法 |
CN111147462A (zh) * | 2019-12-17 | 2020-05-12 | 苏州浪潮智能科技有限公司 | 一种基于FPGA的step协议解析方法、系统、终端及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100211520A1 (en) * | 2008-10-17 | 2010-08-19 | John Oddie | Method and System for Accelerating the Decoding and Filtering of Financial Message Data Across One or More Markets with Increased Reliability |
CN108040040A (zh) * | 2017-11-30 | 2018-05-15 | 北京锐安科技有限公司 | 一种应用协议报文的自动化解析方法和装置 |
CN111967244B (zh) * | 2020-07-30 | 2023-03-14 | 浪潮(北京)电子信息产业有限公司 | 一种基于fpga的fast协议解码方法、装置及设备 |
-
2020
- 2020-07-30 CN CN202010751254.2A patent/CN111967244B/zh active Active
-
2021
- 2021-02-19 WO PCT/CN2021/076927 patent/WO2022021852A1/zh active Application Filing
- 2021-02-19 US US18/007,434 patent/US20230281385A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105659274A (zh) * | 2013-10-01 | 2016-06-08 | 艾尼克斯股份有限公司 | 用于在可重构平台中解码数据流的方法和设备 |
CN104699448A (zh) * | 2015-03-20 | 2015-06-10 | 上海交通大学 | Fast协议的并行解码系统及其实现方法 |
CN105654383A (zh) * | 2016-01-07 | 2016-06-08 | 中国科学院信息工程研究所 | 基于流水线架构的低时延fast行情解码装置和方法 |
CN111147462A (zh) * | 2019-12-17 | 2020-05-12 | 苏州浪潮智能科技有限公司 | 一种基于FPGA的step协议解析方法、系统、终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111967244A (zh) | 2020-11-20 |
US20230281385A1 (en) | 2023-09-07 |
WO2022021852A1 (zh) | 2022-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111967244B (zh) | 一种基于fpga的fast协议解码方法、装置及设备 | |
US20100050089A1 (en) | Web browser system of mobile communication terminal, using proxy server | |
CN108287877B (zh) | 一种rib渲染压缩文件fpga压缩/解压缩系统及硬件解压方法 | |
US8688621B2 (en) | Systems and methods for information compression | |
CN112165331A (zh) | 数据压缩方法及其装置、数据解压方法及其装置、存储介质及电子设备 | |
CN105052040A (zh) | 多流压缩与解压的方法与系统 | |
CN112817602A (zh) | 一种json格式数据发送、接收方法、设备及介质 | |
CN110990358A (zh) | 一种解压缩方法、电子设备及计算机可读存储介质 | |
KR20130125706A (ko) | 실시간 콘텐츠 서비스를 위한 포렌식 마킹 장치 및 방법 | |
CN114337678A (zh) | 数据压缩方法、装置、设备及存储介质 | |
CN113630125A (zh) | 数据压缩、编码解压缩方法、装置、电子设备及存储介质 | |
US10477245B2 (en) | Methods and devices for coding and decoding depth information, and video processing and playing device | |
CN108573069B (zh) | 一种加速压缩流量正则表达式匹配的Twins方法 | |
CN105338371A (zh) | 一种多媒体转码调度方法和装置 | |
CN114390317B (zh) | 面向流式传输视频的加密方法及系统 | |
CN111063347B (zh) | 实时语音识别方法、服务端及客户端 | |
CN110868610B (zh) | 流媒体传输方法、装置、服务器及存储介质 | |
CN111126003A (zh) | 话单数据处理方法及装置 | |
CN116915368B (zh) | 符合期货交易数据交换协议的数据流的编解码方法和装置 | |
US9495304B2 (en) | Address compression method, address decompression method, compressor, and decompressor | |
CN112311943A (zh) | 一种数据扫描优化方法、装置、系统及相关组件 | |
CN115037981B (zh) | 数据流的解码方法、装置、电子设备与存储介质 | |
CN113625965B (zh) | 分布式存储系统的数据存储方法、系统、装置及存储介质 | |
CN118012650A (zh) | 数据传输方法、装置、计算机设备、存储介质及程序产品 | |
CN115278252A (zh) | 视频传输方法及装置 |
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 |