1.前言
高频交易,硬件加速,这两个词,不管是金融领域从业人员,还是FPGA开发从业人员,对于这两个词应该都不会太陌生。
对于金融行业从业人员来说,高频交易,是用来指代从开仓到平仓只有很短的时间间隔,主要目的是通过市场短暂的价格波动进行获利的交易行为,这种交易行为,对时间十分敏感,这种交易从以前的人工进行操作,交易的时间量级大概是分钟(min)乃至秒(s)级;到后来使用繁杂的计算机程序进行操作,定义一个复杂的模型,编写软件代码让计算自行机判断买入卖出,交易的时间量级大概到了毫秒(ms)级;而到了近年来十分火热的使用FPGA辅助计算机进行硬件级的加速,交易时间的量级甚至来到了微秒(us)级乃至纳秒(ns)级。
对于FPGA从业人员来说,近年来,也许没有参与过这种硬件加速的项目,但是肯定也在社交媒体上看到过硬件加速等等相关的内容,对于FPGA来说,主要是可以并行的处理任务,而且进行操作的时间量级是纳秒级,延时远低于使用软件的毫秒级延时。

2.概述
在证券交易领域,便是高频交易的一个领域,更快的获取行情信息,更低的交易延迟,更快的买入卖出,是每一个交易者所共同追求的目标,财富的盈亏,便在合约行情的短暂波动中。
目前国内金融交易系统有一部分还在使用传统的软件方式进行行情的获取与解码,而有部分已经使用了基于FPGA的硬件加速的方法进行行情的处理,FPGA有可编程、低延时的特性,基于RTL(寄存器传输级)级的逻辑编程,可以定制各种解码方案,实现数据的并行处理,达到极低的延时,满足金融证券交易者对低延时的需求。

3.加速系统的架构介绍

FPGA深度学习硬件加速 fpga硬件加速原理_服务器


本地版行情处理:

行情信息从交易所发出,经过交易所行情网络(上图标号1),进入券商的行情网络进行筛选,再发送到客户交易服务器。

我们要做的便是使用FPGA,在上图标号2、3处,将通过万兆以太网传输而来的行情信息送入FPGA中,再由FPGA进行行情的解码,过滤不需要的行情,发送给客户服务器,客户获得行情信息。行情解码与过滤的处理:

FPGA深度学习硬件加速 fpga硬件加速原理_FPGA深度学习硬件加速_02


由上图:

A、B两路行情通过万兆以太网进入FPGA中,首先进行串转并,PCS,MAC层的处理,再将数据传递到解码模块,解码模块将接收需要的合约的合约报文,不需要的合约报文则丢弃,同时进行分价表的重排序,在从MDQP报文接收到一个需要的完整的合约信息后,或是一个合约信息在接收到MIRP报文且修改完毕后,将合约信息由PCIE模块发送到客户服务器的内存中,由用户取用。

3.加速系统的简单参数
本系统实现功能的简单介绍:
(1)接收主题行情快照查询,MDQP协议,可以配置需要筛选的合约,将需要的合约从MDQP报文中提取出来,由PCIE发送到客户服务端的内存中。
(2)接收增量行情推送,MIRP协议,对需要的合约进行更改,对分价表进行重排序,将修改过后的合约发送到内存中。
(3)MIRP A路、B路选优,选取速度较快的MIRP报文进行处理。
(4)接收MIRP增量行情修改行情,获得最新的行情快照。

4.开发过程的简单示例

一个简答的11个以太网包的MDQP快照查询消息的处理:

FPGA深度学习硬件加速 fpga硬件加速原理_硬件加速_03


从以上MDQP报文中提取的合约信息域:

FPGA深度学习硬件加速 fpga硬件加速原理_fpga开发_04