掌桥专利:专业的专利平台
掌桥专利
首页

基于OpenCL实现证券交易系统中Binary协议行情加速解码的系统

文献发布时间:2023-06-19 11:50:46


基于OpenCL实现证券交易系统中Binary协议行情加速解码的系统

技术领域

本发明涉及FPGA开发领域,尤其涉及行情解码领域,具体是指一种基于OpenCL实现证券交易系统中Binary协议行情加速解码的系统。

背景技术

证券交易系统中,行情一直是最重要的环节之一。交易所向会员单位提供行情网关程序,会员单位使用行情解码程序,与交易所行情网关程序连接,然后解码收到的行情数据,进行行情处理,最后分发给行情使用者。行情解码分发系统大多采用软件开发。软件开发人员单纯依靠CPU、低延时网卡和低延时开发套件等,越来越接近时延瓶颈,再考虑到操作系统的调度和时延抖动,很难进入(几)微秒甚至纳秒级的竞争。FPGA(可编程逻辑阵列),作为可编程硬件,可以处理网络数据,内部的大量逻辑资源可以重新“编程”,实现业务逻辑,而且时延抖动小。但是,当前FPGA的行情解码方案,大多采用HDL开发(verilog HDL或者VHDL)。HDL开发周期长,调试复杂,迭代速度慢,而且金融行业的FPGA硬件工程较少。本方案利用OpenCL这一高级语言开发FPGA行情解码,可以充分利用CPU和FPGA的优势,让两者分工合作。

发明内容

本发明的目的是克服了上述现有技术的缺点,提供了一种满足稳定性好、操作简便、适用范围较为广泛的基于OpenCL实现证券交易系统中Binary协议行情加速解码的系统。

为了实现上述目的,本发明的基于OpenCL实现证券交易系统中Binary协议行情加速解码的系统如下:

该基于OpenCL实现证券交易系统中Binary协议行情加速解码的系统,其主要特点是,所述的系统包括CPU、FPGA板卡、行情网关和交换机,所述的FPGA板卡和CPU相连接,所述的行情网关通过TCP与FPGA板卡相连接,所述的交换机通过UDP组播与FPGA板卡相连接,所述的CPU负责加载板卡解码程序,维护上下游链路,并配置FPGA板卡,所述的FPGA板卡通过OpenCL开发,用于行情解码。

较佳地,所述的FPGA板卡包括TOE模块、IO模块和FPGA应用模块,所述的IO模块分别连接TOE模块和FPGA应用模块,所述的TOE模块与行情网关和交换机相连接,所述的TOE模块稳定与TCP/UDP的通信功能,建立与交易所的TCP连接,并将解码后的行情数据发送至交换机。

较佳地,所述的TOE模块包括第一TOE单元和第二TOE单元,具备独立的万兆以太网通信,所述的第一TOE单元与行情网关相连接,所述的第二TOE单元与交换机相连接,所述的第一TOE单元建立到行情网关的TCP连接,接收原始行情数据,在数据打上TCP连接的标识,所述的第二TOE单元接收并将解码后的数据以UDP组播的形式发送到交换机上。

较佳地,所述的TOE模块包括为FPGA板卡提供物理层、链路层、网络层和传输层的通信功能,并支持ping,telnet和IGMP的协议。

采用了本发明的基于OpenCL实现证券交易系统中Binary协议行情加速解码的系统,基于OpenCL,实现证券交易所(如深交所)的证券交易系统中的行情解码的流水线处理和并行处理,相对于传统的HDL开发FPGA,本发明开发速度更快、调试更方便,性能和稳定性更高。

附图说明

图1为本发明的基于OpenCL实现证券交易系统中Binary协议行情加速解码的系统的结构图。

图2为本发明的基于OpenCL实现证券交易系统中Binary协议行情加速解码的系统的应用层协议的结构示意图。

图3为本发明的基于OpenCL实现证券交易系统中Binary协议行情加速解码的系统的原始行情数据进行行情解码的示意图。

具体实施方式

为了能够更清楚地描述本发明的技术内容,下面结合具体实施例来进行进一步的描述。

本发明的该基于OpenCL实现证券交易系统中Binary协议行情加速解码的系统,其中包括CPU、FPGA板卡、行情网关和交换机,所述的FPGA板卡和CPU相连接,所述的行情网关通过TCP与FPGA板卡相连接,所述的交换机通过UDP组播与FPGA板卡相连接,所述的CPU负责加载板卡解码程序,维护上下游链路,并配置FPGA板卡,所述的FPGA板卡通过OpenCL开发,用于行情解码。

作为本发明的优选实施方式,所述的FPGA板卡包括TOE模块、IO模块和FPGA应用模块,所述的IO模块分别连接TOE模块和FPGA应用模块,所述的TOE模块与行情网关和交换机相连接,所述的TOE模块稳定与TCP/UDP的通信功能,建立与交易所的TCP连接,并将解码后的行情数据发送至交换机。

作为本发明的优选实施方式,所述的TOE模块包括第一TOE单元和第二TOE单元,具备独立的万兆以太网通信,所述的第一TOE单元与行情网关相连接,所述的第二TOE单元与交换机相连接,所述的第一TOE单元建立到行情网关的TCP连接,接收原始行情数据,在数据打上TCP连接的标识,所述的第二TOE单元接收并将解码后的数据以UDP组播的形式发送到交换机上。

作为本发明的优选实施方式,所述的TOE模块包括为FPGA板卡提供物理层、链路层、网络层和传输层的通信功能,并支持ping,telnet和IGMP的协议。

本发明的具体实施方式中,利用FPGA实现了对证券交易所(如深交所)的证券交易系统中Binary协议行情解码的加速,具体为:采用x86 CPU和FPGA搭建异构加速平台,CPU负责控制,FPGA负责解码。CPU负责板卡解码程序的加载,上下游链路的维护,和FPGA板卡的配置;FPGA板卡采用OpenCL开发,包含网络包处理、会话管理、不同证券交易所(如深交所)的证券交易系统中Binary协议类型的行情解码、汇聚多路行情解码数据、组播发送功能模块。

从开发语言的新颖方面,本专利采用的是OpenCL开发FPGA,OpenCL是一种高级开发语言,开发方式和流程与文件一的FPGA开发完全不同,本技术方案是金融行业里面首个将OpenCL应用于行情解码加速的技术方案。使用OpenCL开发这一技术方案,还可以提升行情解码开发的速度,迭代快,更能适应交易所的协议迭代和更新。

本技术方案集成TOE(TCP Offloading Engine)模块,使得FPGA具备稳定的TCP/UDP通信功能,可以建立与交易所的TCP连接,同时还能将解码后的行情数据通过UDP组播发送到网络中。

网络通信功能从底层到上层有五层(物理层,链路层,网络层,传输层,应用层),而该专利提供物理层、链路层、网络层、传输层这四层功能。一般应用层是自定义协议,前面四层是标准通信协议。

本技术方案中的实现交易行情解码加速的技术效果所用到的相应的技术特征不是本领域的惯用手段,是一种非常新颖的开发手段。本技术方案的核心是采用OpenCL开发的行情解码,而OpenCL在此之前都未在FPGA金融加速领域得到应用,本方案是业内第一个将其运用到实际工程应用中。同时也是第一个将OpenCL和TOE通信模块结合使用,进行行情解码的技术方案。同时,该技术方案的行情解码性能与业内惯用手段开发的做过比较,稳定性和性能都较之更好,对于开发效率方面的提升更为明显。

本方案采用的是Intel的PAC(Programmable Acceleration Card,可编程加速卡)和x86CPU构建的异构加速平台。PAC卡内置FPGA型号为Arria 10GX,通过x86服务器上的PCIe3.0(Peripheral Component Interconnect express)总线与CPU相连接。参见附图一。

本方案选择的开发语言和运行平台框架为OpenCL。OpenCL分为两个部分。一个是主机部分,提供C/C++调用的动态库,包含操作设备的一些驱动接口和操作方法,以及整个OpenCL运行环境。另一个是设备(FPGA)部分,设备侧的开发使用OpenCL C代码进行开发,基于C99标准的,可以在linux环境下进行开发和调试、优化。

在FPGA中,集成具备网络通信功能的TOE(TCP Offloading Engine)的IP(Intellectual Property,知识产权)核。为FPGA提供物理层、链路层、网络层(IP)、传输层(TCP/UDP单播/UDP组播)这四层的通信功能,同时支持ping,telnet和IGMP这类协议。进入TOE的数据,将通过IO channel发送给FPGA应用部分,这部分一般也称之为kernel部分,采用OpenCL C开发。同时,kernel通过IO channel,可以将数据通过TOE发送到对应的会话连接上。

该方案的通信连接方式如附图1。FPGA板卡上有两个网络通信模块第一TOE单元和第二TOE单元,具备独立的万兆以太网通信功能。异构平台通过第一TOE单元建立到交易所的行情网关的TCP连接,进行登录,并接收原始行情数据。行情数据通过TCP连接进入第一TOE单元,第一TOE单元将数据打上该TCP连接的标识,经过内部的IO channel进入行情解码的Kernel部分。行情解码将原始数据进行解析,然后通过IO channel发送到第二TOE单元网口,第二TOE单元将解码后的数据,以UDP组播的形式发送到交换机上,下游客户和系统就可以接收到解码后的数据。

本方案为异构平台加速解决方案,分为主机程序和设备程序。主机程序和设备程序通过OpenCL运行框架通信。TCP/UDP组播通信功能则通过TOE对应的驱动程序来实现,主机调用相关通信接口,建立FPGA的TOE与交易所的行情网关的连接。方案设计上,按照功能划分为控制部分和数据处理部分。CPU灵活,编程容易,主机程序用于逻辑控制;FPGA可编程,功能相对固定,适合高速数据处理。因此主机程序负责控制部分,设备程序负责数据处理部分。

主机程序需要管理上下游链路、管理FPGA上的任务调度、监控行情解码。管理上下游链路中的上游链路指FPGA到交易所行情网关的TCP连接,上游连接通过FPGA的第一TOE单元,下游链路指发送解码后的数据的组播链路,下游发送组播通过FPGA的第二TOE单元。主机程序通过调用FPGA的TOE驱动程序,创建到行情网关的Socket连接,然后创建下游的组播连接,将上下游的连接信息通过opencl发送给设备程序(FPGA内部),这样FPGA内部在收发TOE io channel的数据时,就可以区分出上下游的数据,进行处理。FPGA上包含多个硬件kernel任务,例如FPGA板卡的初始化和资源申请释放,TOE的数据处理,TCP/UDP包处理,网关登录,不同行情解析等等。主机程序会在初始化板卡之后,按顺序将这些硬件任务调度起来。在行情解码过程中,主机程序会监控FPGA的上下游链路,接收FPGA的链路状态中断信号,同时也会实时读取FPGA上的统计寄存器和调试寄存器,获得行情解码过程中上下游收发的包个数、字节数,错误统计等信息。

设备程序即FPGA加速任务,包含TOE的数据处理、会话管理、不同类型的行情解码、行情汇聚。在FPGA内部,业务程序通过iochannel与TOE连接,从iochannel中收发的数据会带上TOE的会话信息。在主机程序建立了上下游连接后,将上下游的会话信息写入FPGA。FPGA通过第一TOE单元收到报文,通过报文携带的会话ID信息,识别出是来自行情网关的报文,进行TCP包到行情包的分析整合,分发到不同类型的行情解码模块中。解码的行情类型包括快照、指数快照、逐笔委托、逐笔成交。不同类型行情解码输出的行情包,通过行情汇聚模块统一发送,添加下游的组播会话信息,将其发送到第二TOE单元的iochannel中,第二TOE单元将行情包以UDP组播的方式,发送到下游网络中。

本方案结合交易所的协议特性和TOE的特性,充分利用FPGA的内部逻辑资源,设计出低延时的流水线式协议解析方案。证券交易所(如深交所)的证券交易系统中的行情数据,通过TCP发送到FPGA里面,按照证券交易所(如深交所)的证券交易系统中的协议标准,需要在FPGA内的解码层(应用层)进行数据包的整合。每个应用层的行情包,可以解码出一个行情类别信息。应用层协议包含三个部分:消息头、消息体和消息尾。参看附图二。消息头包含4字节消息类型MsgType(如300111快照,300192逐笔委托等),4字节消息体长度BodyLength。消息尾为4字节的校验和。每解析完一个应用层行情包,后面紧跟的就是另一个行情包,需要根据消息类型进行后续解码。行情中所有整数字段均为大端字节序。

板卡中TOE模块,输出数据的位宽为128bit(16字节),为了充分利用FPGA的流水线处理特性,业务模块从IO channel中每取到16字节都会发送给下一级,进行解码处理,边收边解码,而不是收到一个完整行情包再解析。因此,本方案将原始行情数据按照16字节对齐摆放,进行行情解码。参见附图三,是快照数据按照16字节对齐摆放的结构。通过这种方式,每个FPGA的时钟周期内,都可以解码出部分数据,等数据包接收完,也就完成了行情解码。

采用了本发明的基于OpenCL实现证券交易系统中Binary协议行情加速解码的系统,基于OpenCL,实现证券交易所(如深交所)的证券交易系统中行情解码的流水线处理和并行处理,相对于传统的HDL开发FPGA,本发明开发速度更快、调试更方便,性能和稳定性更高。

在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。

相关技术
  • 基于OpenCL实现证券交易系统中Binary协议行情加速解码的系统
  • 一种基于Linux系统实现虚拟化硬件编解码加速的方法及系统
技术分类

06120113079023