【交易技术前沿】FPGA技术在沪深行情加速的应用

栏目: 编程工具 · 发布时间: 5年前

内容简介:本文选自作者:郑继翔、张勇、张立生、王先平、李小波、余坚



本文选自 《交易技术前沿》总第三十四期文章(2019年3月)

作者:郑继翔、张勇、张立生、王先平、李小波、余坚

(招商证券股份有限公司)

摘要:

在证券交易领域,行情数据瞬息万变,盈利的机会转瞬即逝,拥有更低的时延、更快的响应,意味着能精准把握买卖机会和点位。现场可编程门阵列(简称 “FPGA”)技术与传统软件系统相比,能实现可预知的超低时延,该技术已在华尔街投行、高频交易等领域大放异彩。

招商证券在国内券商中,首次将FPGA技术成果成功应用于证券交易领域,实现基于FPGA的硬件沪深行情系统(简称“硬件行情系统”)。系统上线以来得到用户的高度认可,为实盘交易持续提供亚微秒级行情服务。

本文主要介绍如何基于FPGA技术实现沪深行情硬件加速,涵盖了系统的设计及实现、系统的实测效果及系统预留的强大扩展性等内容,希望能有助于国内证券行业对FPGA技术的研究和应用,为开发者提供相关技术参考,形成良好的行业技术生态圈。

关键词:FPGA、沪深Level-2行情、异构框架、行情深加工、全息行情、Fin-lib、生态系统

一、概述

1.1 低交易时延的挑战

在证券交易领域,盈利的机会转瞬即逝,“更低交易延迟”是所有金融交易追求的核心目标之一。目前国内金融行业的交易系统大部分基于传统通用CPU架构,交易提速存在瓶颈,满足不了超低时延的交易需求。而随着 FinTech(金融科技)的发展,各种算法交易、量化交易兴起,金融行业追求更低交易延迟时间的“竞赛”不断升级,成为各大金融机构的核心挑战之一。尤其是近年来程序化交易在资本市场的全面应用,传统的软件技术或以软件为核心的加速技术难以满足微秒级的实时处理和实时响应的要求。业内均在寻求搭建低时延交易系统的解决方案,基于GPU、FPGA硬件并行加速的技术逐渐进入证券交易领域,成为金融科技领域顶尖的科技趋势,是华尔街的主流技术之一。

降低交易延迟简单来说就是如何实现金融数据加速。FPGA具有硬件可编程、低功耗、低时延的特性。基于RTL(Register Transfer Level:寄存器传输级)级的逻辑编程,可定制化各类通讯协议(如TCP/IP协议栈卸载)、各种消息编解码(如上交所的FAST协议解码)及系统各种颗粒度的操作,实现数据的并行和流水的并行,达到极低的系统时延和极高的系统容量。

1.2首次将FPGA技术成功应用于沪深行情系统

近年来,随着国内金融市场的快速发展和规模不断扩大,业内信息系统往高性能、高可靠、高容量、低时延的方向发展。第三方金融技术公司,相继推出基于FPGA的产品,尤其在期货行业,使用FPGA开展各类应用的开发,如行情、交易、风控等领域,成效显著,为FPGA在证券行业的应用开发提供参考。

架构的选型招商证券早在2016年布局FPGA技术的应用,组建FPGA团队,启动相关技术调研评估,所评估的方案历经Net-FPGA、OpenCL+RTL异构、RTL+软件异构等,最终基于金融商用系统的稳定性、系统可扩展性、健状性的充分考虑,选定RTL+软件的异构架构。

为何选择FPGA技术落地行情加速FPGA团队对沪深行情从交易所前置机VDE/MDGW至行情应用客户端的时延路径进行分析(见图1-1沪深交易所行情时延示意图),当前业内均采用软件进行行情解码,提供行情服务。这些行情解码服务时延非常大,超过10毫秒,且行情解码软件数据处理能力有限,牛市行情压力下,实时性更无法得到保证。2017年FPGA团队启动沪深Level-2行情加速项目,对利用FPGA技术实现沪深Level-2解码及性能进行反复地验证,同时使用C++软件和Matlab构建沪深行情解码的同步模型,为RTL代码的编写和优化提供参考,最终实现低至纳秒级的沪市STEP-FAST解码引擎,端到端的处理时延降低到10微秒(含网络时延)以下,得到明显的提速效果。

【交易技术前沿】FPGA技术在沪深行情加速的应用

图1-1 沪深交易所行情时延示意图

1.3 千倍的提速效果

国内证券领域FPGA技术储备基本空白,招商证券硬件行情系统创新地搭建CPU-FPGA异构框架,设计层次分明,高效地发挥FPGA的效能。使用RTL语言开发沪深Level-2解码核心算法,尤其是沪市STEP-FAST解码算法,解码时延低至纳秒级,同时实现超高的处理容量。

硬件行情系统经过开发阶段的持续优化,通过各项严苛的性能压力测试,实现环回时延低于10微秒,性能提升1000倍。采用FPGA芯片级全流水设计使系统达到超高吞吐率,实测百倍于当前市场全天的行情流量峰值,能够轻松应对牛市的流量冲击。与当前生产主流行情服务系统实时测试对比,显示系统能够实现平均8 ~ 13毫秒不等的提速效果,尤其是面对复杂的沪市FAST编码,更显示了FPGA解码的强大性能。

除此之外,硬件行情系统还根据行情数据的特性设计实时行情数据压缩同步传输方案,开发高效的压缩/解压缩算法,大大降低沪深之间的数据传输带宽,使沪深任一节点均享受全市场的FPGA提速带来的超低时延行情服务。

行情数据的深度加工是本系统的重要组成部分,在FPGA行情解码的基础已经实现深市全息行情服务,后续计划将提供更多有意义的行情深加工服务。

二、FPGA技术在沪深行情加速的设计与实现

2.1 基于FPGA的异构架构设计

根据业务及扩展需求,对基础硬件选型指导如下:

(1)10GE万兆以太网接口,行情源、TCP行情推送、组播行情推送采用独立的接口。

(2)可定制化的TOE IP,支持TCP、UDP、IGMP、ICMP、ARP、RARP全卸载,且TCP连接数支持至少32个。

(3)PCIe Gen3X8,且兼容Gen1/2/3。

(4)至少两个Bank DDR,内存容量不少于8GB。

(5)至少两个Bank QDR。

传统TCP /IP 协议是基于CPU( Central Processing Unit,中央处理器) 软件实现的,而使用CPU 进行TCP /IP 协议栈处理,存在能力不强、效率不高的缺点,占用大量的CPU 资源,浪费存储空间及产生大量功耗,使其性价比很低,影响性能,万兆以太网的的带宽资源得不到充分的利用。故所选的板卡使用万兆以太网口作为其信息传输接口,支持TCP /IP 协议栈的TOE IP是关键之一。通过FPGA 来实现TCP /IP 协议栈以及以太网MAC 控制器,将原本属于主CPU 的这部分工作由额外的硬件电路完成,减轻CPU 的负担,加速网络处理的能力,提升系统的性能。 系统的可扩展性是系统设计的重点之一。由下往上分为五个逻辑层次,包括FPGA基础通信层、FPGA行情业务层、行情管理层、Host-FPGA接口层和Host管理服务层,层次之间设计开发边界明确,上层依赖下层模块,调用下层或同层模块的接口,上下层之间功能充分解耦,如下图2-1所示。

【交易技术前沿】FPGA技术在沪深行情加速的应用

图2-1 系统架构框图

其中FPGA基础通信实现独立的通信功能,提供清晰的功能边界和明确的开发接口。在Host侧与FPGA侧可通过C++方式的API进行直接调用。

2.2 Level-2行情解码引擎

上海证券交易所信息网络公司(简称“上交所”)于2016年建设新一代的低时延行情发布系统LDDS,支持多种信源,具有低时延、大流量、易扩展、高可用等特点,系统在较优的网络环境中平均时延小于1ms。该Level-2 行情系统是基于FAST技术标准、面向专业投资者的新一代实时行情发布系统。与传统的基本行情相比,Level-2行情更加实时,包含更多的价位深度、逐笔成交、订单等内容和其他有价值的信息。下面以上交所的Level-2行情为例,阐述行情解码引擎的实现。

上交所的LDDS以国际标准的金融信息交换协议(FIX/FAST)为基础,结合中国标准的证券交易数据交换协议(STEP)的特点确定数据传输协议,根据我国证券市场数据的特点以及Level-2行情内容的特性设计在证券市场数据领域具有独创性的算法。FAST协议在保持FIX协议灵活性的基础上,将市场数据大幅度压缩,大大提高了处理速度。FAST系统大幅减少Level-2行情所需的传输带宽(不到原来的25%)和发布系统的负荷(减少到原来的10%)

鉴于上交所FAST协议的复杂性,同时根据RTL的特性,设计出一套并行、全流水式的高效STEP-FAST解码引擎方案,如下图2-2所示,不同行情类型解码并行处理,根据实际应用增加例化引擎数量,达到更高的数据解码吞吐率。同时做到FAST的XML模板可配,以应对交易所的变更。

【交易技术前沿】FPGA技术在沪深行情加速的应用

图2-2 上交所FAST解码引擎框图

2.3 全息行情

当前业内千档行情基于深市最新Level-2行情计算所得的盘口功能,它能突破原先的10档行情的限制,深度揭示个股从跌停到涨停所有价位的委托量和委托明细,让用户对个股的委托明细看得更清晰,非常适合于观察远距离的大挂单和垫单的情况,了解个股市场状态。如果使用程序自动化分析跟踪个股千档行情的变动,千档行情将成为程序化交易的利器。

硬件行情系统提供深度行情加工增值服务――全息行情,即在实现千档行情的基础上,用户可根据实际需求定制N档行情及其成交委托明细。客户端在接收实时行情的同时,支持全息行情的订阅和接收功能。

三、硬件行情系统的测试结果

3.1性能测试

通过SignalTap工具分析FPGA内部处理时延小于0.5微秒,对于动辄N个毫秒的软件系统而言,时延完全可以忽略不计。

在开发硬件行情系统的过程中,同步开发配套的测试系统,测试系统主要包括模拟行情源、回放行情源及客户端自动化测试程序组成。回放行情源使用真实交易所行情数据文件进行可控速率的回放,以对硬件行情系统在不同吞吐率下进行正确性、稳定性及系统容量等测试。

使用回放行情源,将回放速率调至软件极限,测试系统的处理容量,结果显示沪市的峰值处理容量高达200万笔/s,深市的峰值处理容量高达300万笔/s。相对于当前(2019年1月)的行情,硬件行情系统处理容量百倍于当前日内行情流量峰值,应付牛市的流量冲击绰绰有余。

在达到FPGA系统容量上限之前,整个系统不会出现反压,系统时延相当平稳,这也是FPGA系统的优点之一,不存在CPU的系统调度问题,在上限容量之内的任意流量,其时延都是固定不变的。

3.2 实时行情提速效果对比测试

硬件行情系统在交易所托管机房上线后,为测试实时行情的提速性能,在一台测试主机上分别部署FPGA行情客户端和当前公司生产正常使用的软件行情客户端,两套系统接入同一个行情源,以保证双方在同一起跑线上。在测试主机上运行性能测试程序,其中运行两个独占CPU的线程分别将两个客户端收到的行情数据打上时间戳,而后通过独立的写文件线程将数据写入文件。如下图3-1所示。采集一整天的数据(2018-11-20),在收市后运行数据分析对比程序将两个系统的行情数据进行同一条行情数据的匹配,获得同一行情两个系统推送到测试主机的时间差,这个时间差就是FPGA系统相对于软件行情系统的提速时间。

【交易技术前沿】FPGA技术在沪深行情加速的应用

图3-1 实时行情提速测试示意图

测试统计结果显示:软件行情系统,端到端的处理时延约13毫秒(含网络时延),而硬件行情系统低至10微秒,性能提升1000倍。

四、关于扩展性的考虑

众所周知,采用RTL方式进行开发,存在RTL设计的兼容性、扩展性较差的缺点,当预设的功能开发完成后,出现新的需求或功能变更时,开发测试周期会很漫长,故应在系统设计之初在架构上考虑系统扩展性的问题,以应对市场的变化和客户的需求。

(1) 单板支持沪深双市场

当前沪深交易所之间行情数据不共享,系统在沪深机房分别处理相应交易所的数据。考虑到未来可能沪深交易所开放行情共享,设计在同一块板上能同时处理沪深行情数据解码推送,只需通过上层软件进行配置,即可实现单板支持沪深双市场,无须修改FPGA的RTL设计。

支持沪深双市场同时能用于优化沪深行情同步时延,利用沪市FAST行情的高压缩率,直接在将沪市未解码的FAST数据同步到深市,由深市FPGA进行解码,由此可以进一步优化沪市至深市的行情同步时延。

(2) 基于异构的行情深加工服务

行情数据深加工服务在架构上仍采用CPU-FPGA异构设计方案,将复杂的处理分配到Host,需要加速的部分置于FPGA。例如当前的全息行情服务是基于行情数据的深加工服务,利用CPU实现行情数据加工计算,生成的全息行情数据通过FPGA提供的低时延传输通道将数据推送于客户端,在保证性能的同时大大降低开发的难度和Time to Market的时间。

规划中的定制化指数计算服务将采用类似的模式实现。当CPU的计算碰到瓶颈时,将会把计算密集型的部分下沉到FPGA实现,将系统的性能发挥到最优,同时保证开发的时效性。

五、FPGA技术应用的下一步尝试

随着硬件行情系统运行情况及各种对比测试,验证FPGA技术应用于国内证券领域的可行性。行情项目的成功试水,为下一步FPGA应用于交易加速等增加信心。FPGA技术的超低时延、超高容量、高稳定性等优点在金融技术领域将大有可为,未来希望能成为国内金融领域的主流技术之一。

在项目开发过程中,意识到FPGA RTL级的开发难度太大、门槛太高、开发周期太长,尤其在瞬息万变的金融领域,开发周期可能决定项目的成败。通过与Intel公司技术人员的深入沟通,若软件开发人员采用OpenCL技术进行开发将会大大提高项目的开发效率,降低项目Time to Market的时间。

OpenCL是第一个面向异构系统的并行编程标准,是一个统一的编程环境,便于软件开发人员开发出异构的高性能系统。与传统的RTL设计流程相比,OpenCL使用类C的高层编程语言进行设计,更高层次地进行设计的抽象,代码的可重用性、可扩展性与RTL相比将会有质的飞跃。

在FPGA技术在证券行业起步阶段,作为先行者,趟过的不少坑,走过不少弯路,意识到构建行业技术生态圈的重要性,为使FPGA技术能得到进一步应用,计划做以下的尝试:

(1) 与Intel、Cytech等硬件厂商深度合作,将现有硬件行情系统封装成基础BSP。

(2) 行情深加工相关增值业务算法使用OPENCL开发。

(3) 运算Kernel通过IO-Channel的方式直接使用FPGA硬件行情,实现最低的时延。

(4) 平台供第三方金融业务开发者进行业务模块开发、验证和运行。

对未来进行更多的设想,希望能够使用OpenCL等高级语言实现的业务模块包括定制化指数计算、Tick级行情形态计算、个股期权定价计算、股票趋势计算等应用,将行业通用的业务模块可封装成Fin-Lib库,实现如调用软件Lib一样方便。



免责声明

本公众号内容仅供参考。对任何因直接或间接使用本公众号内容而造成的损失,包括但不限于因有关内容不准确、不完整而导致的损失,本公众号不承担任何法律责任。如有问题请反馈至tech_support@sse.com.cn。

-------------------------- 上海证券交易所为证券公司、基金管理公司等市场参与者及相关行业机构提供交易技术支持与服务,包括日常交易技术支持、技术交流研讨、市场调查反馈、证券信息技术知识库、测试等服务。 【交易技术前沿】FPGA技术在沪深行情加速的应用

点击"阅读全文"了解详情


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

程序员的数学

程序员的数学

结城浩 / 管杰 / 人民邮电出版社 / 2012-10 / 49.00元

如果数学不好,是否可以成为一名程序员呢?答案是肯定的。 本书最适合:数学糟糕但又想学习编程的你。 没有晦涩的公式,只有好玩的数学题。 帮你掌握编程所需的“数学思维”。 日文版已重印14次! 编程的基础是计算机科学,而计算机科学的基础是数学。因此,学习数学有助于巩固编程的基础,写出更健壮的程序。 本书面向程序员介绍了编程中常用的数学知识,借以培养初级程序员的数学思维。读......一起来看看 《程序员的数学》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

html转js在线工具
html转js在线工具

html转js在线工具