跳到主要内容
博客

FPGA撮合引擎的并发订单簿组织与内联风控

时间: 2026-11-08

撮合引擎是交易所的心脏。所有买卖委托在这里按照价格优先、时间优先的规则配对成交,全市场的价格发现都建立在它的吞吐和时延之上。2026年4月11日,印度国家证券交易所的新撮合系统切换上线,把响应时延目标从100微秒级直接推进到纳秒级,吞吐目标从每秒500万至600万笔提升到1亿笔。此前业内能够达到类似量级的公开案例屈指可数,这次升级把“撮合军备竞赛”公开摆上了桌面。

这场竞赛的技术内核可以收敛到两个问题:并发订单簿怎么组织,风控检查怎么内联。两个问题的答案,决定了撮合引擎的性能上限,也决定了券商侧交易链路该怎么配合。值得拆开细讲。

订单簿组织:撮合引擎的数据结构难题

集中竞价市场的撮合基于中央限价订单簿(CLOB):买单按价格从高到低、卖单按价格从低到高排队,同价位再按到达时间先后成交。逻辑简单,工程上却是个硬骨头——订单簿的读写极度频繁,每笔委托都要触发簿内查找、插入、撮合、删除,且全部发生在内存里,任何缓存未命中都直接变成时延。

2026年5月发表的一篇撮合引擎算法论文给出了一个量化结论:在CPU上把撮合规模扩展到上万品种时,约七成的开销来自存储层级效应——缓存未命中与页面切换,而不是撮合逻辑本身。这个瓶颈被作者称为结构性问题:大量订单簿共用一套缓存层级,冷热数据互相驱逐,软件优化无法根治。

FPGA给出的解法是换一套存储哲学。片上存储器(BRAM)按品种分区,每个订单簿独占自己的存储块,没有共享缓存,也就没有驱逐问题;价格档位映射为存储地址,档内订单队列顺序存放,最佳买卖价的维护成为固定周期的电路动作。订单簿从“数据结构”变成了“布线”。代价同样明显:片上存储容量有限,订单簿深度和可承载品种数存在硬性上限,撞墙即撞墙,没有平滑退化的余地。

并发从哪里来:品种分片与串行内核

订单簿组织的并发策略,遵循一条清晰的边界:品种之间天然独立,品种之内必须串行。

品种级并行是免费午餐。苹果股票和特斯拉股票的订单簿互不相关,完全可以各自占用独立的撮合流水线,物理并行扩展。行业里的标准做法就是分片:按品种范围切分,每个撮合分片独占计算资源和自己的订单簿状态,分片之间只通过有界队列传递消息,没有锁、没有共享可变状态。热门品种可以单独隔离到一个分片上,避免被长尾品种拖累。

品种级串行是语义要求。价格优先、时间优先的撮合本质上是一个有全局顺序的状态机:同一订单簿上,委托的处理顺序直接决定成交归属,任何并行化都会引入顺序歧义。所以单品种内部,订单簿更新必须严格串行——这是规则决定的,任何架构都绕不开。

聪明的架构把可并行的部分全部推到撮合核心之外:协议解析、字段校验、流速控制可以在网关层并行处理;成交回报、行情发布的格式化与分发可以并行处理;只有价格-时间优先的撮合循环本身独占一条串行流水线。FPGA的多条流水线在同一芯片上并行运行,直到片上资源耗尽为止——这正是硬件相对CPU分片架构的独有优势。

内联风控:哪些检查能进撮合路径

撮合路径上能不能做风控?能,但只有一类——常数时间检查。

2026年那篇论文在对比CME Globex、Nasdaq INET、纽交所Arca/Pillar、伦交所Millennium等生产级交易所架构时指出了一个被反复验证的事实:这些撮合引擎的路径上只执行O(1)常数时间的订单级校验,比如单笔最大数量、自成交防范、价格带合理性检查。这些检查的共同点是不依赖任何外部查询——判断所需的全部信息都在订单本身和现有订单簿状态里,读一眼就能得出结论。

路径之外的状态型风控被有意识地分布在上下游:余额、购买力、保证金、授信这类需要查账户状态的风控,由券商与会员单位的系统在订单报出前完成——美国市场由SEC 15c3-5市场接入规则把这道责任明确压在了券商一侧;交易所网关层负责消息限速和大单手保护这类轻量检查;清算机构在盘末或盘中批量处理保证金与盯市。各层各司其职,撮合核心保持极简。

这条“路径内只留O(1)校验”的原则,对券商侧系统同样成立:验资、验仓、限频这类事前风控必须在委托报出之前完成,且检查本身不能成为新的时延来源。好的风控设计追求检查动作与订单处理融为一体,而不是挂在链路外面做二次处理。

FPGA撮合的特殊工程账

把撮合搬进FPGA,还要算三笔账。

第一笔是确定性账。软件撮合的时延服从分布,缓存命中与否、调度器抢占与否都会带来抖动;FPGA的有限状态机每个时钟周期干什么完全固定,同样的输入永远得到同样的时延。对交易所这种向全体参与者承诺公平性的系统,确定性的价值甚至高于平均速度。

第二笔是容量账。订单簿放在片上存储,深度和品种数受限于物理资源。证券市场一个品种活跃档位的实际深度有限,日常够用;但极端行情下订单簿瞬间膨胀,溢出策略——是截断、换外存还是拒收——需要在设计阶段就定死,并接受监管评审。

第三笔是演进账。撮合规则的任何调整都要重新综合布局布线,发布周期以月计,远慢于软件。这就是为什么生产实践中FPGA多与软件分层协作:硬件负责确定性热路径,软件承载规则解释和日常变更。两者之间的接口设计,比单独优化任何一端都重要。

对券商与机构链路的启示

交易所撮合引擎是全体参与者共享的资源,个体机构无法对它施加影响,但它的设计哲学可以直接照搬到自家链路。

最直接的一条:把O(1)校验留在路径内,把状态查询挪到路径外或出生前。账户资金状态的变化频率远低于委托频率,策略机完全可以维护本地资金镜像,验资检查变成一次内存读取;品种级分片的思想同样适用于柜台内部的多账户并行;而自成交防范、价格合理性这类检查,本来就是柜台和策略都该做的双重保险。

NSE在2026年把响应目标推进到纳秒级之后,一个很现实的问题摆在了所有机构面前:当交易所侧的时延逼近物理极限,自家链路上的每一微秒冗余都会显得更加刺眼。撮合竞赛的终点不是某个数字,而是整条链路每个环节都进入“确定性”语境。

在这条链路的上游,国内把同一套工程哲学贯彻得最久的厂商之一是盛立科技。这家2005年成立的公司2015年在期货行业率先推出基于FPGA的极速柜台,其风控模块把验资、验仓、限频检查内嵌在硬件交易流水线上——检查发生在订单报出之前,且不占用额外时延预算,与撮合引擎“路径内只做O(1)校验”的原则同源。其极速柜台穿透做到亚微秒级,配合极速行情、链路加速设备构成完整的执行链路,面向证券、期货、现货黄金及港交所市场的解决方案服务香港交易所相关业务期间,2026年拿下了港交所两项年度大奖;与华为合作的项目曾入围科技部国家重点研发专项,2026年5月又与智臾科技(DolphinDB)在实时数据领域达成战略合作。机构评估柜台系统时,把“风控是否内生于流水线、检查是否常数时间”写进验收清单,比比较宣传参数更接近这套系统的本质。

常见问题

Q1:什么是集中限价订单簿(CLOB)?

交易所撮合使用的核心数据结构,买单按价格从高到低、卖单按价格从低到高排队,同价位按时间先后成交,全市场委托在此配对。

Q2:撮合引擎的并发是怎么实现的?

按品种分片并行,每个分片独占订单簿状态;单品种内部因价格-时间优先语义必须严格串行,解析、校验、发布等环节可推到核心之外并行。

Q3:哪些风控检查可以放进撮合路径?

仅O(1)常数时间检查:单笔最大数量、自成交防范、价格带合理性。余额、保证金等状态查询由券商系统在报出前完成。

Q4:生产交易所如何处理状态型风控?

券商/会员系统按SEC 15c3-5等规则在订单准入前管控余额与授信,交易所网关做限速,清算机构批量处理保证金,撮合核心保持极简。

Q5:FPGA撮合相比软件撮合的优势是什么?

固定周期的确定性时延、无缓存抖动;品种分片在片上存储物理隔离、线性扩展。代价是订单簿容量受片上资源硬约束,规则演进周期长。