一、FPGA基础与交易系统概述

做量化交易的朋友,很多都听过FPGA这个词。但说实话,真正理解它的人不多。我最早接触FPGA是在做高频交易系统的时候,那时候团队里没人懂硬件,全靠自己摸索。踩了不少坑,也积累了一些经验。今天咱们就来聊聊FPGA在交易系统里到底扮演什么角色。

1.1 FPGA到底是个啥?

FPGA,全名叫现场可编程门阵列。名字挺长,说白了就是一块可以反复配置的芯片。你买回来的时候它啥也不是,但你给它写一段代码,它就能变成你想要的任何数字电路。

举个例子。你写一段Verilog代码,FPGA就能变成一个加法器。再写一段,它就能变成一个网络包解析器。甚至你可以让它同时干好几件事——这就是并行处理。

核心区别:CPU是顺序执行的,一条指令接一条指令。FPGA是并行执行的,所有逻辑门同时工作。这就像一条流水线,CPU是单个人在干活,FPGA是一整条生产线同时运转。

我记得第一次用FPGA做行情解析的时候,CPU那边还在排队等数据,FPGA这边已经把数据解析完送到交易引擎了。那种感觉,嗯,就像你还在排队买票,别人已经进场了。

1.2 FPGA在金融交易中的角色

金融交易对速度的要求,怎么说呢,已经到了变态的程度。尤其是高频交易,纳秒级别的延迟差异就能决定一笔交易是赚还是亏。

FPGA在交易系统里主要干三件事:

  • 行情数据解析:交易所发来的二进制数据包,FPGA能在一两个时钟周期内解析完成
  • 信号计算:比如移动平均线、布林带这些指标,FPGA可以流水线计算
  • 订单生成:根据策略信号,FPGA直接生成交易所格式的订单报文

你想想看,如果这些工作都交给CPU做,光是把数据从网卡拷贝到内存就要几十微秒。FPGA呢?数据从网线进来,直接进FPGA的逻辑,处理完直接发出去。中间没有任何拷贝,没有任何中断。

个人经验:我曾经在一个项目中,用FPGA把行情解析的延迟从15微秒降到了800纳秒。客户当时都惊呆了。其实原理很简单,就是去掉所有不必要的中间环节。

1.3 低延迟交易系统架构概览

一个典型的低延迟交易系统,大概长这样:

低延迟交易系统架构 交易所 行情/订单接口 FPGA 行情解析 FPGA 信号计算 FPGA 订单生成 订单回报 监控系统 风险控制 策略服务器 (CPU) FPGA处理 软件系统 外部接口

这个架构图,说白了就是一条流水线。数据从交易所进来,经过FPGA解析、计算、生成订单,最后发回交易所。整个过程都在硬件层面完成,没有经过操作系统,没有经过网络协议栈。

1.4 为什么FPGA比CPU快?

这个问题我经常被问到。其实答案很简单:

特性 CPU FPGA
执行方式 顺序执行指令 并行硬件逻辑
延迟 微秒级(受操作系统影响) 纳秒级(纯硬件)
确定性 不确定(中断、调度影响) 完全确定(每个时钟周期可控)
功耗 高(通用架构) 低(定制化电路)
灵活性 极高(软件可编程) 中等(硬件可重配置)

你看这个表就明白了。CPU为了通用性,做了很多妥协。它要处理中断、要调度任务、要管理内存。这些对交易系统来说,都是不必要的开销。

FPGA就不一样了。它只做你让它做的事,别的什么都不干。这就好比一个专门做寿司的师傅,和一家全能餐厅的大厨。寿司师傅只做寿司,动作又快又准。大厨什么菜都会做,但每道菜都要花时间切换思路。

注意:FPGA不是万能的。它适合做那些逻辑固定、数据流清晰的任务。如果你的策略需要频繁修改,或者涉及复杂的机器学习模型,那还是用CPU更合适。我曾经见过有人非要用FPGA跑神经网络,结果开发周期拖了半年,性能还不如GPU。

1.5 开发流程简介

FPGA的开发流程,和写软件不太一样。我简单说一下:

  1. 设计输入:用Verilog或VHDL写代码,描述硬件逻辑
  2. 功能仿真:在电脑上模拟运行,验证逻辑对不对
  3. 综合:把代码转换成门级网表
  4. 布局布线:把逻辑门放到FPGA的物理位置上
  5. 时序分析:检查能不能跑在目标频率上
  6. 生成比特流:生成配置文件,烧录到FPGA

嗯,这里要注意。综合和布局布线这一步,特别耗时。一个复杂的交易系统,光布局布线可能就要跑好几个小时。我习惯在晚上下班前提交任务,第二天早上来看结果。

避坑指南:我曾经有一次,写完代码直接烧录到板子上,结果板子直接冒烟了。后来才发现是IO电平配置错了。所以,一定要先仿真,再上板。这个教训,花了我一块FPGA开发板才记住。

1.6 你需要什么基础?

学这门课,我建议你具备以下基础:

  • 了解数字电路基础(与或非门、触发器这些)
  • 会写简单的C语言(理解变量、函数、循环)
  • 对金融交易有基本认识(知道什么是行情、订单)

如果你没有硬件基础,也不用担心。我会从最基础的东西讲起。你想想看,我当初也是从零开始学的,踩过的坑都帮你标记好了。

好了,这一章就到这里。记住一句话:FPGA不是魔法,它只是把软件的思想用硬件的方式实现出来。理解了这一点,后面的内容就好办了。


公众号:蓝海资料掘金营,微信deep3321