CN105684020B - 硬件平台中的订单账簿管理设备 - Google Patents
硬件平台中的订单账簿管理设备 Download PDFInfo
- Publication number
- CN105684020B CN105684020B CN201480054743.5A CN201480054743A CN105684020B CN 105684020 B CN105684020 B CN 105684020B CN 201480054743 A CN201480054743 A CN 201480054743A CN 105684020 B CN105684020 B CN 105684020B
- Authority
- CN
- China
- Prior art keywords
- order
- book
- data structure
- limits
- limit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Engineering & Computer Science (AREA)
- Technology Law (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Development Economics (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明提供了一种订单账簿管理设备(10),其在集成电路上实施,用于将在输入数据流中识别出的订单聚类到至少一个订单账簿中,每个订单包括价格和数目信息,每个订单与可交易对象相关联并且包括卖出侧和买入侧,每个订单账簿侧存储限制的列表,每个限制与给定的价格和数目相关联,与限制相关联的数目对应于所接收的包括给定价格的订单的数目的和。订单账簿的每侧包括:‑第一数据结构,其用于保留所选择的限制的数量P,对应于具有在保留在账簿的买入侧的N个限制之中的最高价格的P个限制,或者具有在保留在订单账簿的卖出侧的N个限制之中的最低价格的P个限制,第一数据结构中的订单依据订单账簿侧而按价格排序,以及‑第二数据结构,其被布置为树的形式,并且包括具有在账簿的买入侧的N个限制之中的最低价格的N‑P个限制,或者具有在账簿的卖出侧的N个限制之中的最高价格的N‑P个限制。订单账簿管理设备进一步包括第一管理内核(2),其用于处理每个接收到的涉及限制的包括价格信息的指令,响应于对指令的处理而更新第一数据结构和/或针对第二管理内核(3)而产生至少一个更新指令,第二管理内核(3)被配置为,基于更新指令而更新第二数据结构。
Description
技术领域
概括而言,本发明涉及数据处理系统,更具体而言,本发明涉及用于管理硬件平台中的订单账簿的方法和设备。
背景技术
随着在金融业中对于更快地处理大量数据的需求的增长,基于依赖通用CPU的集群(cluster)的数据处理系统显示出了很多限制。实际上,如果集群方法涉及廉价的硬件并且提供简化发展的工具,随着对于高性能计算的需求增加其具有很多更加显著的限制:高电力消耗、昂贵的维护成本、数据中心所需的大量空间。此外,利用集群所获得的整体性能并不随集群数量正比例地增加。不同于集群方法,使用有限数量的配备有FPGA的机器,基于FPGA的数据处理系统能够以大吞吐量并行执行复杂的任务。因此,该硬件方法对于金融和投资业领域中的应用软件的发展尤其适用,在这些领域中,快速计算是保持竞争力的关键。
FPGA(现场可编程门阵列的缩写)指的是可以在制造之后进行配置的集成电路。该配置一般使用硬件描述语言(HDL)来指定。FPGA包含大量的部件(“逻辑块”),以及使得块能够“连接在一起”的可重配置互联的层级。逻辑块可以被配置为执行复杂组合逻辑,或仅执行简单的基本逻辑运算(布尔AND、OR、NAND、XOR等)。因为FPGA可以执行并行计算,所以仅仅在几个时钟周期中,对于多个独立的输入可以同时执行相同的算法。因此,FPGA尤其适于非常快速地执行复杂计算。
出于这些原因,越来越多市面上的数据处理系统使用FPGA来设计。
市面上的数据处理系统一般包括订单账簿管理设备(也称为限制聚类和账簿建立设备),其执行限制聚类和订单账簿建立。订单账簿管理设备取得从通过市场接收的输入指令中识别出的订单。该订单可以最初由交易商发出,并且根据预定的标准由市场计算系统过滤。例如,如果订单是错误的,或者如果订单已经在被市场计算系统接收时立即得到了执行,则可以将其过滤掉。订单账簿管理设备使用在每个指令中传递的工具标识符(instrument identifier)来通过订单账簿对接收到的订单进行排序(“账簿建立”功能)。每个订单账簿包括出价(或者买入)侧和要价(或者卖出)侧。订单账簿中所列的每个订单与可交易物品相关联,并且包括价格和数目信息。如同本文所用的,术语“可交易物品”指的是任何可以在特定价格下以一定数目交易的物品,例如金融产品。订单账簿管理设备则用于匹配相同订单账簿的订单并且按价格分侧,增加其数目(限制聚类功能)。
订单账簿管理设备的一个功能为,在交易所网络上,依据从市场参与者接收到的输入指令(例如,增加、删除或修改订单的指令)来更新订单账簿。然而,在常规的订单账簿管理设备中,这样的升级操作产生大量的开销,并且导致严重的延迟。
发明内容
为了解决这些问题和其他问题,提供了一种订单管理设备,其在集成电路上实施,其中所述订单管理设备包括:
订单聚类存储器,其与对象相关联并且配置在所述集成电路中,所述订单聚类存储器配置为接收包括源自网络的订单的数据并且将所述订单进行聚类,每个订单具有值和数目,所述订单聚类存储器配置为响应于与所述订单相关联的输入指令而将聚类的订单与所述订单聚类存储器中的限制相关联,每个限制与值和数目相关联,每个订单被聚类至与具有与订单值相同值的限制中,与限制相关联的数目对应于被聚类的订单数目的和,所述订单聚类存储器包括:
第一数据结构,其具有固定大小,所述第一数据结构存储关于与P个限制的集合相关联的账簿订单的顶部的数据,P个限制是N个限制的子集,并且基于性能选择标准来选择和/或基于与所述限制相关联的聚类的订单的值来排序,以及
第二数据结构,其包括关于与N个限制的列表中不包括在子集P中的限制相关联的账簿订单的底部的数据,动态分配所述第二数据结构中的条目,
其中,所述订单管理设备进一步包括第一管理内核2,其配置在所述集成电路中,以处理与存储在所述第一数据结构中的账簿订单的顶部有关的输入指令,响应于所述输入指令的处理而更新所述第一数据结构,以及产生并转发与存储在所述第二数据结构中的账簿订单的底部有关的至少一个更新指令;
第二管理内核3,其配置在所述集成电路中,以响应于从所述第一管理内核接收到的所述更新指令而更新所述第二数据结构;以及
报文分发和传输组件,其配置为将来自第一数据结构的数据格式化,并且将格式化的数据转发至第一客户端应用程序,
其中,所述第一管理内核配置为独立于P个限制,在固定数量的时钟周期内以流水线的方式处理输入指令,
其中,所述第一管理内核和所述第二管理内核配置为异步工作,所述第一管理内核配置为独立于由第二处理内核执行的更新指令处理而继续处理输入指令,而不需要等待第二管理内核完成处理或对从所述第一管理内核接收到的指令回答。
优选地,所述第二数据结构包括根节点53和至少一个叶子节点55的树。
优选地,所述根节点53包括一组条目,每个条目与参考值以及指向各自叶子节点55的指针相关联,所述根节点53中的条目按参考值排序,并且其中,每个叶子节点包括与各自值相关联的限制的未排序的列表,每个叶子节点55中的值的范围在第一值与第二值之间,所述第一值为与所述根节点53中的相应指针54相关联的值,所述第二值为与所述根节点53中的在前指针54相关联的值。
优选地,根节点包括第一条目,其存储基于所述性能选择标准选择的账簿的第二数据结构的限制,如果在所述根节点53中不存在指向叶子节点的在前指针,则每个叶子节点的第二值为与第一条目中的选择的限制相关联的值。
优选地,所述第一值包括在所述叶子节点55中,且所述第二值不包括在所述叶子节点55中。
优选地,所述第一管理内核2包括内部缓存21,其用于存储每个订单聚类存储器的第一数据结构。
优选地,条目使用近期最少使用LRU方案而在用于每个订单聚类存储器的所述缓存中分配空间。
优选地,所述树是B+树。
优选地,所述第一管理内核2包括处理内核24,其被配置为,通过以并行和流水线的方式处理所述第一数据结构内的限制,在三个时钟周期内处理每个输入指令200以及相关联的第一数据结构。
优选地,所述第一管理内核2进一步包括比较器23的阵列,其用于将与在输入数据流中识别出的订单相关联的值与所述第一数据结构的每个条目中的值进行比较,并且基于比较器所提供的结果来更新第一数据结构和/或第二数据结构。
优选地,所述第二管理内核3包括至少一个状态机,其用于处理所述第二数据结构的每个叶子节点和根节点。
优选地,所述集成电路包括至少一个处理内核,并且其中,所述状态机在所述处理内核中并行实施,设置了指令分发器以便将由所述第一管理内核2产生的指令分发到处理内核。
优选地,在所述第一数据结构中的限制的数量P使得:
P*S = N*W
其中,N是整数,S是以比特计的限制的大小;以及
W是以比特计的存储器字宽。
本发明还提供了一种聚类订单的方法,其将在输入数据流中识别出的订单聚类到在集成电路中实现的订单管理系统,所述方法包括以下步骤:
维护配置在所述集成电路中的与给定对象相关联的订单聚类存储器,所述订单聚类存储器配置为接收包括源自网络的订单的数据和聚类所述订单,每个订单具有值和数目,维护步骤包括响应于与在所述订单聚类存储器中的所述订单有关的输入指令而将聚类订单与限制相关联,每个限制与值和数目相关联,每个订单聚类到具有与订单值相同值的限制中,与限制相关联的数目对应于聚类的订单数目的和,其中所述维护步骤进一步包括以下步骤:
在具有固定大小的第一数据结构中存储与P个限制的集合相关联的账簿订单的顶部,P个限制是N个限制的子集,并且基于性能选择标准来选择和/或基于与所述限制相关联的聚类的订单的值来排序;以及
与第二数据结构中存储在N个限制的列表中不包括在子集P中的限制相关联的账簿订单的底部,动态分配所述第二数据结构中的条目;
在所述集成电路的第一管理内核中,处理与所述第一数据结构中的订单有关的输入指令,响应于所述输入指令的处理而更新所述第一数据结构,以及在所述第一管理内核中生成与账簿订单的底部有关的更新指令;
在第二管理内核中,响应于从所述第一管理内核接收到的所述更新指令而处理对所述第二数据结构的更新;以及
将来自第一数据结构的数据格式化,并且将格式化的数据转发至第一客户端应用程序,
其中,在第一管理内核中对输入指令的处理独立于P个限制,在固定数量的时钟周期内以流水线的方式执行,以及
其中,所述第一管理内核和所述第二管理内核的工作为异步的,以及其中,独立于在第二处理内核中执行的更新指令处理而继续所述第一管理内核中输入指令的处理,而不需要等待第二管理内核完成处理或对从所述第一管理内核接收到的指令回答。
从而,本发明提供了具有低延迟的改进了的订单账簿管理设备,同时仍能够承受与交易所的10G网络相关联的指令速率。此外,所提出的订单账簿管理设备的延迟和速率针对常规的订单账簿管理设备得到了优化。具体而言,延迟具有很小的变化,并且一般而言,相比于常规的订单账簿管理设备经受小得多的变化。
本发明的另一益处为,账簿的在前版本和新版本都得到输出(在数据包中所包含的指令之前和之后)。
本发明的其他益处将通过下面参考所附附图的具体描述而变得更加明显。
附图说明
参考所附附图,现在将通过示例的方式来描述本发明的实施方案,在附图中,相似的附图标记表示相似的元素,在附图中:
- 图1表示示例性的市场数据处理系统;
- 图2显示了示例性的订单账簿的更新;
- 图3表示根据本发明的特定实施方案的订单账簿管理架构;
- 图4显示了根据本发明的特定实施方案的账簿顶部管理内核的架构;
- 图5表示示例性的账簿底部存储器结构;
- 图6是示出根据本发明的特定实施方案的账簿顶部管理内核的操作的流程图;
- 图7是示出根据本发明的特定实施方案的账簿底部管理内核的操作的流程图;
- 图8显示了根据本发明的特定实施方案的账簿底部管理内核的架构;以及
- 图9是示出根据本发明的特定实施方案的示例性FPGA实施的框图。
具体实施方式
参考图1,其显示了示例性的市场数据处理系统100,该系统被设置为获取和处理从一个或多个数据源(例如,金融交易所)得到的市场数据。
本文中使用的术语“市场数据”指的是从多个外部源接收的数据流形式的数据,包括金融报价以及与股权、固定收入、金融衍生产品、货币和其他投资工具相关联的交易相关的数据。市场数据是金融和投资业的关键元素。对这些市场数据进行处理的方式(延迟、可用性、质量等)对于这些产业的竞争力具有直接影响。市场数据的一个重要特征是其更新频率。实际上,出于战略和竞争的目的,实时更新是必须的。例如,价格数据从交易所到用户的递送接近于实时。
市场数据处理链的第一步骤包括数据获取阶段以及数据包解码阶段,在网络应用程序中的数据获取阶段包括网络(一般为UDP或TCP)获取12,并且一般由NIC(网络接口卡)和操作系统的网络堆栈执行。解码阶段由至少一个解码器13(也称为“市场数据包解码器”)执行,该解码器与馈送源交互,以便处理根据给定的特定源协议(例如,FAST)从交易所网络11接收的市场数据流,并且将其解码。
更具体而言,解码器13被配置为将数据流从其特定源格式转换为内部格式(数据标准化过程)。根据每个数据馈送中的报文结构,解码器13以特定的操作处理每个字段值(field value),将缺失数据填充以其缓存记录的值和状态,并且将其映射到系统所使用的格式。解码器13然后可以基于所解码的报文来调用所选择的订单管理例行程序。
市场数据处理系统100可以进一步包括订单信息管理器14,该订单信息管理器包括至少一个存储器,其用于存储关于每个订单的细节从而在需要时对其进行检索。
如图所示,市场数据处理系统100还可以包括报文分发和传输单元15,其用于将经处理的数据格式化为报文,并且将其分发到所选择的客户端应用程序16以供进一步的处理和决策。当客户端应用程序16位于不同的服务器时,报文传输可以在网络上完成。
市场数据处理系统100进一步包括订单账簿管理设备10(其也可以称为“限制聚类和账簿建立设备”),其用于将待进入订单账簿的订单聚类,对于每个工具呈现可能聚类到限制且根据价格排序的订单列表。一般而言,客户端应用程序16实质上需要访问账簿的第一限制。或者,客户端应用程序可以直接访问订单。
如同本文所使用的,订单账簿指的是金融工具(例如,股票)的未付款限制订单的电子集合。此外,如同本文所使用的:
- 术语“订单”或“限制订单”或“市场订单”指的是以特定的限制价格或更好的价格、或市场订单的市场价格来买入或卖出给定数目的金融工具的订单。
- 术语“限制”指的是对应于一个或几个订单的订单账簿中的“横排”或“条目”。当其对应于几个订单时,其还可以称为“聚类限制”。限制是根据价格聚类的,即,具有相同价格的全部订单的数目相加,以形成限制数目。聚类限制还可以具有“订单计数”属性,该属性反映在该限制中已聚类的订单的数量。订单在账簿中的位置被称为“排数”或“水平”。
订单的大小或数目表示待买入或卖出的股份的数量。
订单账簿包括根据价格排序的限制。订单账簿管理设备10可以被配置为,使用在每个指令中传递的工具标识符,取得在订单信息管理器14的存储器中混合、并且在每次订单被修改或者相反被指令引用时由所述订单信息管理器14发送至订单账簿管理设备10的订单,并且对订单按账簿排序。在一些情况下,订单账簿可以包括来自几个工具的订单,或者包括来自不同市场中的相同的工具(合并账簿)的订单。
订单账簿管理设备10可以进一步被配置为,取得相同的账簿中的单个订单,并且对其按价格进行分侧(出价或要价侧)和匹配,增加其数目。该过程一般称为“限制聚类”。
应当注意,本说明书中所使用的术语“指令”可以不同于术语“报文”。实际上,“指令”表示由解码器13解码了的报文,而“报文”表示根据给定数据协议(例如FAST、二进制或FIX格式)的一套字节。依据其相对于总线宽度的大小,其一般在几个时钟周期中在通用总线上传送。相反,在并行总线上,指令可以仅在一个时钟周期中传送。根据本发明的一个方面,在订单账簿管理设备10的输入中接收的每个指令可以包括至少下列参数中的至少一部分:操作代码(操作码)、账簿标识符、关于账簿侧的位、价格、数目、订单计数以及水平。
当操作码对应于按限制指令(例如,限制生成)时,可以使用价格、数目和订单计数来在该指令所指示的水平上更新限制。在限制生成的示例中,可以将价格、数目和订单计数复制到由指令所指示的水平上的限制,并且使其下面的限制向下移动。
在常规的订单账簿管理系统中,订单一般在订单账簿中保留直至其得到完全执行(订单账簿的大小由于交易而降到零)或被删除。当订单被执行时,执行报文一般从交易所发送至客户端。该报文一般包含订单所执行的大小和价格。然后,客户端相应地更新其账簿,从账簿移除已被执行的大小。
作为小于订单的整个大小的交易的结果,可能出现部分执行。
图2表示在出价侧包含7个限制订单的示例性订单账簿20。在出价侧的订单表示要买入的订单。要价侧(未示出)指的是要卖出的订单。保留在订单账簿20中的限制订单包括:
- 要以12.6 $(价格)买入100股份的订单;
- 要以12.5 $买入120股份的订单;
- 要以12.3 $买入50股份的订单;
- 要以12.0 $买入150股份的订单;
- 要以11.5 $买入130股份的订单;
- 要以11.0 $买入500股份的订单;
- 要以10.0 $买入20股份的订单。
与这些限制订单相关联的价格水平分别为$12.6、$12.5、$12.3、$12.0、11.5 $、11.0 $以及10.0 $。最佳出价指的是最高出价价格,在该示例中最高出价价格是$12.6。最佳出价(出价侧的最高价格)与最佳要价(要价侧的最低价格)之间的差称为“价差”,而中点指的是最佳出价与最佳要价之间的平均值。
该市场数据处理系统可以从包括“按订单”市场(例如,NASDAQ、BATS)的市场接收多种报文:
- 增加报文,其用于请求向订单账簿增加订单;
- 取消或删除报文,其用于请求从订单账簿删除(完全删除或部分删除)订单,
- 执行报文,其请求根据订单账簿执行(完全执行或部分执行)订单,
- 替换或修改报文,其用于请求修改订单账簿中包括的限制订单的一个或多个属性(例如,修改数目和/或价格)。
对于“按限制”市场(例如,CME、EUREX),报文可以进一步包括:
- 限制生成报文,其用以生成(根据其水平而索引的)限制,并且将该限制之下的全部限制向下移动,
- 限制删除报文,其用以删除账簿中的(根据其水平而索引的)限制,并且将该限制之下的全部限制向上移动,以及
- 限制修改报文,其用以修改(根据其水平而索引的)限制。
对于“按价格”市场(例如,LIFFE、TSE),报文还可以包括,价格更新报文,其用于更新根据其价格而索引的限制;如果已经不存在限制,则这样的报文生成限制,如果其数目达到0,则将其删除。
报文可以通过设置在解码器13和订单信息管理器14上游的内核而变换为指令。如此获得的指令可以包括:
- 增加指令,其用以增加在特定价格下的数目和订单计数,
- 删除指令,其用以去掉在特定价格下的数目和订单计数,
- 通过使处于给定水平之下的限制相应移动而在给定水平下生成、修改和删除限制的指令。
将“按订单”和“按价格”指令变换为增加指令和删除指令,使得指令能够不按顺序执行。例如,可以生成一个订单(以数目100增加报文),可以修改相同价格的另一个订单(以新数目200修改报文),还可以完全删除第三订单(删除报文)。订单信息管理器14可以被配置为,记住全部未决订单的当前状态,包括其数目。例如,对于第一订单,原数目可以是0(因为其不存在);对于第二订单,原数目可以是500;对于第三订单,原数目可以是200。因此,订单信息管理器14可以输出:数目200的增加命令、数目300的删除命令以及数目200的删除命令。数目表示当前数目与对于每个订单系统刚刚接收的新数目之间的差(或“增量(delta)”)。“增加”和“删除”指令可以以任何顺序执行,所得的订单账簿管理设备10中限制的总数目保持相同。这种不按顺序执行指令的能力使得账簿顶部管理内核2和账簿底部管理内核3能够异步工作。
因此,能够向订单账簿增加限制订单。如图2所示,增加第一订单“增加60@12.4”(以附图标记220表示)生成了在价格“12.4”下的新限制222,增加第二订单“增加80@12.3”(以附图标记223表示)向订单账簿20中已经存在的限制号“3”(在价格“12.3”下的限制)增加了更多的量。
在常规订单账簿管理设备中,每个新限制订单插入订单账簿中使得订单账簿在出价侧保持按价格从最高到最低的顺序,并且在要价侧保持按价格从最低到最高的顺序。
也能够从订单账簿移除限制订单(取消/移除操作)。该操作从订单账簿20简单地移除指定的限制订单,而维持剩余的限制订单按价格排序。同样地,能够减少每个订单的数目(取消/替换更新)。这样的操作取消限制订单,然后将其替换为价格相同但是数目较少的另一个订单。一般而言,取消订单仅可以降低订单的大小,但是不可以增加其大小。
增加到订单账簿的每个限制订单被交易所分配了唯一标识符。限制订单标识符(也称为订单标识符或者订单ID)用于在接收取消、取消/替换请求时识别待更新的限制订单。
内部市场指的是给定订单账簿中的最佳出价(买入)和最佳要价(卖出)。一般而言,市场处理系统包括订单匹配引擎(未示出),该订单匹配引擎被配置为确定在给定侧(出价或要价侧)的市场订单是否“命中”了在内部市场的另一侧(对应为要价和出价侧)的限制订单(在这样的情况下发生交易)。如同本文所使用的,市场订单指的是需要在最佳可用价格下立即买入或卖出给定的股票数目的订单。
在常规的订单账簿管理设备中,限制按价格排序,使得客户端应用程序可简单且快速地访问账簿顶部(其由第一限制表示)。除了价格和数目之外,限制可以包含构成该限制的订单的数量(当具有相同的价格水平的不同订单的数目已经通过其数目而合并为唯一限制的时候)。
当用软件实施时,订单账簿管理设备10可以依据所需的性能以及记到最近时期的工具或账簿的量而使用多种数据结构来管理限制。在一些现有的订单账簿管理设备中,使用的是简单的表或阵列。然而,这仅在只处理少量的账簿且移动账簿中的限制所耗费CPU(“中央处理器”的缩写)时间来是可接受的时候是适用的。在其他订单账簿管理设备中,使用了更复杂的数据结构(例如,堆、树等)来避免对过多的数据进行移动。然而,这使得对较深的限制的访问更困难且缓慢。
此外,现有的订单账簿管理设备的软件实施在处理大量的账簿时变得缓慢而且低效,主要是因为,这需要处理巨量的数据,而且会导致大量的CPU缓存未命中(cache miss)。对于需要处理给定市场集合上的全部工具的公司而言,这样的方案是不适用的。在这样的软件方法中,可以简单地将负载分散到几个服务器,每个服务器仅处理账簿的一部分。然而,这需要使用工具标识符将订单按路线传输到正确的服务器,而这会增加额外的网络跃点(network hop)。这种方法的其他缺陷包括:服务器的成本、功耗、储存架区的使用以及总体系统的延迟。
其他现有的方案求助于硬件加速以克服软件方法的不足,例如US20120095893,其提供了一种账簿建立系统。然而,该方案需要在CPU与硬件加速卡之间更多的来回传送。这有助于从CPU卸载一些处理,但是对于延迟而言并非最优。
本发明提供具有优化延迟的改进的订单账簿管理设备10。
图3表示根据本发明的特定实施方案的订单账簿管理系统10的总体结构。该订单账簿管理系统10包括第一管理内核2(下文中称为“账簿顶部管理内核”)以及第二管理内核3(下文中称为“账簿底部管理内核”)。
账簿顶部管理内核2被配置为,管理每个订单账簿的顶部部分,而账簿底部管理内核3被设置为,管理账簿的底部部分。每个订单账簿的顶部部分(下文中也称为“账簿顶部”)对于账簿的每一侧包括:账簿中全部N个限制中依据所在侧的P个具有最佳价格的限制的列表(出价侧为最高价格,或要价侧为最低价格)。每个限制可以包括多个订单,而且可以与数目、价格以及订单计数信息相关联。
订单账簿的底部部分(下文中也称为“账簿底部”)保留剩余的N-P个限制,其中每个限制与数目、价格以及订单计数信息相关联。因此,订单账簿的底部部分的限制所具有的价格低于(或高于,依据所在侧而定)与订单账簿的顶部部分相关联的价格。有益地,订单账簿的顶部部分以不同于订单账簿的底部部分的数据结构保留。此外,依据所接收的输入指令,账簿底部管理内核3的运行由账簿顶部管理内核2触发。
这样的根据本发明的订单账簿管理设备10的双重架构具有优化处理性能的益处。具体而言,其能够将每个订单账簿的顶部与订单账簿的底部差异化处理,由于订单账簿的顶部需要得到快速更新以便将经处理的数据发送至客户端应用,而订单账簿的底部可以更新得较慢,所以这优化了延迟。
客户端可以通过API订阅其感兴趣的账簿,该API配置报文分发和传输单元15以向客户端转发应用到所选择账簿的可配置深度的修改。这使得不同客户端能够订阅该系统所处理的账簿的不同子集。在本发明的优选实施方案中,客户端可以仅订阅账簿的顶部部分,而不订阅账簿的底部部分。这是因为,账簿管理内核3的底部一般不会连接到报文分发和传输单元15。
保留在订单账簿的顶部部分中的限制的数量P可以依据多个因素或标准来选择,以便资源和性能能够优化。具体而言:
- 数量P可以被选择为优化对账簿进行存储和更新所需的资源。实际上,数量P越大,加载账簿所花的时间越长,且对其进行存储和更新所采用的资源越多;和/或
- 数量P可以被选择为大于客户端希望订阅的账簿的顶部部分的深度。另外,出于性能的原因,数量P可以被选择为比客户端订阅的账簿部分的大小多几个限制;和/或
- 为最大化存储器使用效率,数量P可以被选择为使得:
P*S = N*W
其中,N是整数,S是以比特计的限制的大小,而W是以比特计的存储器字宽。
或者,该订购账簿管理设备可以被配置为,在账簿的顶部部分加载一半的账簿(仅出价侧或要价侧,其中对应于指令中所接收的侧的那一侧),从而减少加载账簿所需的时间。
输入指令200由账簿顶部管理内核2接收,账簿顶部管理内核2与设置为对账簿的顶部部分进行存储的顶部存储器201交互。输出指令204基于账簿顶部管理内核2和账簿底部管理内核3的处理而产生,账簿底部管理内核3与设置为对账簿的底部部分进行存储的底部存储器33交互。
现在参考图4,其表示账簿顶部管理内核2的架构。每个账簿的顶部部分加载到内部缓存21存储的第一数据结构中。内部缓存21包括一组条目,每个条目存储用于订单账簿的这种数据结构。第一数据结构由账簿顶部管理内核2进行处理。设置内部缓存21是为了隐藏外部存储器的延迟。这使得能够连续处理相同订单账簿上的几个命令,并且避免回压处理部分,其会因为非常宽的总线而影响时序。
缓存条目可以根据“近期最少使用”(LRU)方案来分配空间。更具体而言,当缓存条目需要在其中复制订单账簿时,近期最少使用条目由新账簿重写。对于每个缓存条目,存储处理前的账簿的“旧版本”210以及账簿的“新版本”212(正在处理的版本)。因此,在每个包的末端,在包中的指令应用到了“新版本”缓存212之后,只有已经得到修改的限制被发送到客户端应用程序,从而节约带宽和处理能力。账簿的新版本与旧版本之间的比较可以由比较器23的阵列来执行以便检测更新了的限制。
另外,该订单账簿管理设备可以被配置为,基于保留在缓存部分210和212中的信息,输出账簿的之前版本和新版本(分别对应于在包指令应用之前以及包指令应用之后的账簿状态)。
根据本发明的另一方面,订单限制可以存储在保留在顶部存储器201中已排序的阵列(第一数据结构)中。账簿的两侧(出价侧和要价侧)的当前深度可以存储在读取存储器内核211中的内部存储器中,这使得能够仅读取最小量的存储器以加载缓存中的账簿,从而节约存储器带宽。处理内核24被配置为,以与内部缓存21相同的时钟周期接收输入指令(例如,增加、删除、修改指令等)以及存储在缓存存储器212中表示账簿顶部的第一数据结构。因此通过接收指令和数据,处理内核24可以识别指令待应用到的数据。处理内核24进一步包括比较器的阵列,其用于比较指令中的价格与账簿的每个限制中的价格。
根据本发明的一个方面,处理内核24被配置为,通过并行且以流水线的方式(非有限状态机)处理第一数据结构内的限制,在三个时钟周期内处理每个输入指令200以及相关联的第一数据结构。
图6为账簿顶部管理内核2执行的步骤的流程图。
响应于关于与价格和数目信息相关联的订单的输入指令200(来自“按订单”或“按价格”市场)(步骤600),指令中的价格在步骤601中与订单账簿的每个限制中的价格进行比较。
基于比较结果,作出关于所采取的行动的决策。具体而言,如果在步骤602确定输入指令200涉及现有的限制(指令具有与现存限制相同的价格),则可以在步骤603更新这样的限制。如果该更新导致被更新的限制的数目合计为零(步骤604),则从订单账簿删除该限制(步骤605),并且将订单账簿中位于其下的限制向账簿的顶部移动(步骤606)。如果这生成或加宽了账簿顶部的端部处的空白,则在步骤607,将出栈指令发送至账簿底部内核3,以便请求账簿顶部中的下一个限制。
如果确定与输入指令200相关联的价格在与订单账簿的顶部中现存的限制相关联的价格范围内(步骤608),则在步骤609生成新的限制,并且在步骤610将位于其下的限制向账簿的底部移动。如果订单账簿的顶部已经是完整的,则在步骤611,将入栈指令发送到账簿底部内核3,以便将最后的限制入栈到账簿底部。
如果确定与输入指令200相关联的价格在账簿顶部的价格范围之外(步骤612)而且账簿顶部已经完整,则在步骤613,将指令转发到账簿底部内核3。
响应于关于限制的输入指令200(其来自“按限制”市场),可以更新处于所设置的水平的限制,而不管价格比较的结果。限制可以根据指令中的操作码以及所得的数目而生成或删除,该限制下面的限制可以向上或向下移动。
然后,使用比较器的结果以及输入操作代码,可以对于每个限制产生决策代码。决策代码用于更新每个限制,以及将结果写回缓存21。该决策代码可以包括下列代码:
- “向上移动”代码,其指示处于所考虑的位置的限制从其下面的位置复制过来。
- “向下移动”代码,其指示处于所考虑的位置的限制从其上面的位置复制过来。
- “更新”代码,其指示使用输入指令来更新该限制(将增加数目和订单计数,而价格已经相同)。
- “插入”代码,其指示该限制从输入指令(价格、数目和订单计数)复制过来。
- “无操作”代码,其指示该限制保持相同的值。
例如,响应于限制在水平2的插入,限制0和1将被赋予“无操作”代码,限制2将被赋予“插入”代码,其下面的限制将被赋予“向下移动”代码。
根据本发明的另一方面,账簿顶部管理内核2可以被布置为,完全利用FPGA所提供的并行水平,并且使得能够在尽可能少的时钟周期内处理指令。更具体而言,在与输入指令相同的时钟周期内,可以并行比较限制。然后,对于每个限制,使用这些比较器的结果来计算决策代码。最后,可以使用所得的决策代码来对账簿进行更新。因此,整个更新过程可以仅花费3个时钟周期,而对于每个限制的顺序处理所花费的时钟周期与账簿顶部的限制一样多。
账簿底部管理内核3被配置为,管理每个订单账簿的底部部分。由于账簿的底部部分不会被发送到输出,所以每个账簿的底部部分可以比账簿的顶部部分更新得慢,而且其处理时间不会直接影响整体系统的延迟。此外,订单账簿一般足够小,以至完全适应顶部部分。在多数情况下,对订单账簿的修改不会向账簿底部管理内核3产生指令26。即使对于大到足以横跨管理内核2及3的账簿,许多指令也仅仅涉及账簿的顶部。
由于订单账簿一般没有最大深度并且在理论上可以无限扩展,所以可以使用密度更大的、诸如DDR SDRAM(“双倍数据速率同步动态随机存取存储器”的缩写)的存储器来存储订单账簿的底部部分。为了能够在合理的时间内访问订单账簿的底部部分中的全部限制,对于订单账簿的底部部分设置了特定的数据结构(在本说明书中也称为“第二数据结构”)。第二数据结构可以基于修改的B+树。B+树包括根、内部节点以及叶子。
与二叉树相反,B+树具有非常高的扇出(fan-out),这意味着,从根到叶子需要较少的存储器访问,并因此到达正确的限制需要较少的延迟。
根据本发明的特定实施方案,用于订单账簿的底部部分的B+树可以包括一个固定大小的根节点以及链表化的叶子节点。从而,构成树的数据结构具有固定的大小,而且树仅包括两层:由根节点表示的层以及由叶子节点表示的层。
即使修改的B+树展现出了特定的益处,订单账簿的底部部分也可以基于其他数据结构。这样的数据结构选择为使得账簿底部管理器3能够在有限的时间内(优选在恒定的时间内)访问每一个限制。例如,具有对数访问时间的树来可以用于订单账簿的底部部分。仅出于示意的目的,下面的描述将参考基于B+树数据结构的订单账簿的底部部分而作出。
在本发明的实施方案中,订单账簿管理设备10整合在数据管理平台中,可以使用普通DDR SDRAM(“双倍数据速率同步动态随机存取存储器”的缩写)存储器来存储树(订单账簿的底部部分)的叶子,而对于账簿的顶部以及树的根,可以使用QDR SRAM(“四倍数据速率静态随机存取存储器”的缩写)存储器。
图5表示用于存储订单账簿的一侧(出价侧或要价侧)的示例性数据结构。如图所示,该数据结构包括订单账簿的顶部部分50,以及订单账簿的底部部分的根节点53以及两个叶子节点55。根节点53包括第一行,第一行包括与价格相关联的数目,而在其他行中,根节点包括指向账簿底部叶子节点55(图5显示了两个叶子节点55A和55B)的指针54,每个叶子节点指针54与根节点中的价格56(下文中也称为“参考价格”)相关联。
根据本发明的优选实施方案,根节点53的第一行包括订单账簿的底部部分的最佳限制560。对于出价侧,最佳限制是账簿底部的最高限制,并且对应于订单账簿的底部部分的限制之中的最高价格。对于要价侧,最佳限制是账簿底部的最低限制,并且对应于要价侧的订单账簿的底部部分的限制之中的最低价格。这使得能够对于来自账簿顶部管理内核2的出栈请求快速地响应。为了便于理解本发明的实施方案,下面的描述将参考订单账簿的出价侧而作出(最佳限制对应于最高价格)。然而,本领域技术人员将会容易理解,对于要价侧是相同的应用(最佳限制对应于最低价格)。
在图5的示例中,最高限制与数目“200”和价格“9.5”相关联。
这涉及在发出对出栈请求的响应之后,计算在第一叶子节点55A之外的新的最高限制(在该示例中,新的最高限制表示为与数目“100”和价格“9.3”相关联的限制)。叶子节点55包括多个订单限制,每个订单限制包括与各自的价格551相关联的数目550。每个订单限制可以进一步与订单计数相关联。
每个叶子节点55中价格551的范围是从第一值到第二值。第一值是与根节点53中指向叶子结点55的相应指针54相关联的参考价格56(该价格包含在叶子节点55中)。第二值是与根节点53中在前的行相关联的价格,或者,如果在前的行是根节点的第一行,第二值是最高限制(根节点中的最高价格),所考虑的叶子节点中不包括第二值。例如:
- 叶子节点55A中价格的范围是从值“8.9”到“9.3”,因为指向叶子节点55A的指针54与根节点53中的参考价格“8.9”相关联,并且根节点中的最高限制(第一行)与价格“9.5”相关联(由于叶子节点55A是第一叶子节点,所以不存在在前的指向叶子节点的指针54)。
- 叶子节点55B中价格的范围是从值“8.0”到“8.6”,因为指向叶子节点55B的指针54与根节点53中的参考价格“8.0”相关联,并且在前的行中的叶子节点与参考价格“8.9”(未被包括的值)相关联。
图7为账簿底部管理内核3执行的步骤的流程图。
响应于与价格相关联的来自账簿顶部内核2的增加或入栈指令(下文中称为“价格指令”)(步骤701),账簿底部管理内核3将指令中的价格与根节点53中的价格进行比较(步骤702)。
如果确定价格指令高于根节点53中的最高限制560(步骤703),则在步骤704中将最高限制更新,反而插入对应于该指令的横排。在步骤705,先前最高的限制则在第一叶子55A中入栈。如果该第一叶子已经满了,则根节点的内容被移动为使得叶子1变为叶子2,叶子2变为叶子3等等,并且生成包含先前最高限制的新的叶子。
如果确定指令的价格等于根节点53中最高限制560的价格,则指令的与最高限制的数目和订单计数相加,形成新的最高限制。
如果确定价格指令低于根节点53中的最高限制,则在步骤706中,在这样的叶子节点55中插入新的限制:该叶子节点对应于根节点53中具有低于价格指令的参考价格中的最高参考价格56的指针54。例如,合计“8.2”的指令价格被插入在叶子节点55B中。然后,如果在叶子节点中仍有可用空间,则在内部寄存器中加载所选择的叶子节点55,并且进行更新(708)。
然而,如果叶子节点已经满了,则叶子节点55可以分裂为两个叶子节点,移动在根节点中条目(步骤707)。该分裂通过下述方式完成:将限制中具有最低价格的部分复制到新分配的叶子,并且从“旧”叶子中移除这些限制。然后向根节点53增加指向新叶子的指针,将下面的指针向下移动。
响应于与价格相关联的删除指令(下文中称为“价格指令”)(步骤709),在步骤710,账簿底部管理内核3将指令价格与根节点53中的价格进行比较。
如果价格指令匹配根节点53中的最高限制(步骤712),则更新数目和订单计数。为执行这样的更新,可以从最高限制的数目和订单计数中分别减去指令的数目和订单计数。如果因此获得的新的数目和订单计数为空(null),则在步骤713中,删除对应于最高限制的横排。然后,在步骤714,第一叶子节点55A的最高限制在根节点53入栈,并且从第一叶子节点将其删除。
如果价格指令低于根节点53中的最高限制(步骤715),则在步骤716中,账簿底部管理内核3选择这样的叶子节点55,其对应于具有在根节点53中低于价格指令的参考价格中的较高关联价格56的指针54。例如,对于合计“8.3”的指令价格,选择叶子节点55B(图5)。然后,在步骤717,所选择的叶子节点55被加载到内部寄存器中,并且通过删除对应于指令价格的限制而得到更新。作为对该限制进行删除的结果,如果所选择的叶子55变成空的(步骤718),则在步骤719,从根节点53移除与其相关联的指针54,并且释放该叶子。
响应于从账簿顶部管理内核3接收的出栈指令(步骤720),在步骤721,在加载了根节点53之后,返回最高限制。然后,在步骤722,通过找到第一叶子中的最高限制,以及可能地在第一叶子仅包含一个限制的情况下删除该第一叶子,该最高限制得以恢复。
在本发明的特定实施方案中,如果在步骤709接收的删除指令对应于并不存在的限制,则可以执行额外的步骤。在步骤717,该删除指令将导致与负的数目以及负的订单计数相关联的“负”的限制。这种情况可能在指令不以与其在解码器被接收时精确相同的顺序执行的情况下发生。如此,这些情况没有重大的影响,因为处理指令并不考虑执行顺序:处理是基于移除和增加数目以及可能的订单计数的。例如,假设从账簿顶部删除了限制。然后,账簿顶部向账簿底部发送出栈指令,账簿底部反过来以其根节点的第一限制进行回复。同时,账簿顶部接收了对于出栈的限制的删除指令。由于账簿顶部中不存在该限制,删除指令被发送至账簿底部。然而,账簿底部找不到该限制,因为该限制已经被发送到了账簿顶部。因此,生成了负的限制(717)。该限制将合并到相应的具有正的数目和订单计数值的限制,即,被发送至账簿顶部的限制,因为它们具有相同的价格。取决于账簿中正在进行的动作,该过程可以会耗费一些时间。然而,其影响有限,因为在该限制被上升到提供给客户端的账簿的部分之前,这样的合并就会发生。
根据本发明的一个方面,不同于订单账簿的顶部部分,订单账簿的底部部分的叶子不是按价格排序的。这避免了在生成或删除限制时在叶子内部移动限制,从而减少了对叶子存储器进行的写入量。这也减少了所使用的FPGA资源量。
此外,每个叶子节点可以具有指向下一个叶子的指针57,从而使得在根节点53满了时,能够将叶子链表化。从而,根节点53可以仅指向叶子中的一部分。
在本发明的特定实施方案中,叶子可以包括对应于已经删除了的限制的“洞”(空的限制位置)。当向叶子增加限制时,可以使用第一个可用位置,而无需任何排序操作。此外,删除限制可以仅仅需要将该限制的有效性标记设定为零。因此,找到叶子的最高限制(以将其放置到根节点53中)仅仅需要价格的比较。有利地,通过使用比较器的树来利用FPGA的并行性,这样的比较可以在几个时钟周期中完成。通过节约存储器带宽获得的性能提升,超过了这样的比较所需的几个时钟周期。
参考图8,账簿底部管理内核3的处理部分可以通过状态机60实施。可以将这些状态机中的几个设置为平行的,使得在其他状态机处理其刚刚加载的节点上的指令的同时,一个状态机可以等待叶子节点进行加载。这使得重要的叶子花费很长时间来加载(尤其在使用DDR存储器时)并且对每个指令花费很长的处理时间。设置根节点存储器63以用于存储根节点53,设置叶子节点存储器61以用于存储叶子节点55。指令分发器内核64将指令分发到不同的处理内核,使得用于给定订单账簿的全部指令被发送到相同的处理内核。这避免了在处理涉及相同账簿的连续指令的同时其结果彼此覆盖。此外,可以使用LRU算法来将订单账簿分配给每个处理内核。
分配和释放叶子存储器空间可以通过填充具有指向静态分配的存储器块的指针的FIFO(“先进先出”的缩写)来执行。从而,当叶子需要分配空间时,从FIFO读出指针,而当叶子释放时,将指针装回FIFO。这使得能够简易地对固定大小的存储器块进行动态空间分配。
设置根节点缓存62以用于隐藏存储根节点53的存储器63的延迟影响。更具体而言,其使得读取能够流水线化,而又不受制于由于读取顺序在写入顺序之前发出所导致的根节点存储器返回与在相同地址上的上次写入不匹配的读取结果的问题。
另外,账簿底部管理内核3的处理部分可以包括输出仲裁器实体(arbiterentity)65,其用于混合来自叶子节点处理内核60的指令,以在唯一的输出总线66上提供这些指令。此外,可以设置两个其他的仲裁器实体(未显示)以使得每个内核60和62能够访问存储器61和63。
包括指向未分配空间的叶子节点的指针的FIFO还可以通过两个相关联的仲裁器实体而连接至内核60,所述两个相关联的仲裁器实体中一个用于在FIFO中进行读取,另一个用于在FIFO中进行写入。
通过将订单账簿的顶部的管理与订单账簿的底部的管理分开,以及使两个部分(2和3)异步工作,本发明提供了具有低且恒定的延迟的改进了的订单账簿管理设备10。账簿底部管理内核3的存储器使用的动态的方面避免了需要对于每个订单账簿静态地分配空间,而这需要巨量的存储器(预期的最大订单账簿大小乘以账簿的数量)并且将对最大的账簿大小产生严格的限制。
本发明展现出相对于现有技术的多个益处,包括但不限于:
- 顶部管理内核2的处理与底部管理内核3的处理是异步的:顶部管理内核2可以回答“出栈”指令,而无需在继续处理其输出指令之前等待底部管理内核3;
- 每个限制可以与订单计数相关联;
- 缓存21可以保留账簿的旧版本以及新版本;
- 输出比较器23使得账簿顶部管理内核能够仅输出已经修改了的限制;
- 顶部管理内核2被分割为形成流水线的子内核。
图9显示了市场数据处理系统100的示例性实施,其位于标准服务器(主机系统)91内部的PCIe主板90上的FPGA中。图1所示的链表(网络/UDP获取12、市场数据包解码器13、订单信息管理器14、订单账簿管理设备10、报文格式化&分发15)可以通过下列各项实施:
- UDP&以太网堆栈900,其被配置为在标准以太网上发送输出报文。为了优化性能,该内核可以通过许多以太网连接而作为所述网络上的客户端连接至客户端网络。在相同网络上的其他计算机系统92中的客户端应用程序可以以软件实施、由硬件加速或者完全由硬件实施。或者,客户端应用程序可以直接连接至系统的输出端口,以便节省网络设备所累积的延迟。
- PCIe互联端点901,其被配置为连接至主机系统。
- DMA(“直接存储器访问”)902,其被配置为通过主板的PCIe连接而向主机系统的RAM 93发送输出报文;客户端应用程序从而可以在主机系统的CPU 907上运行,并且消耗(consume)由DMA发送的报文。
- 第二“NIC”DMA 904(“NIC”是网络接口卡的缩写),其被配置为,通过通常由市场数据处理系统的硬件使用的以太网端口,从主机系统的软件接收/向主机系统的软件发送以太网包。PCIe主板90从而可以被操作系统视作普通的网络接口卡。这是各种实际的目的(例如,发送多路群组订阅、登陆到市场交易所的系统、能够检测连接性)所需要的。在特定的实施方案中,重要的、对于延迟敏感的数据可以由硬件直接处理,而其他数据可以由软件处理。这样的配置还使得能够直接连接至交易所的网络11,而无需通过网络交换机或路由器的额外跃点。
- 配置&监控逻辑906,其用于配置其他内核,包括例如向金融工具更新订阅,以及通过PCIe连接来监控系统的状态和性能。为了利用该配置&监控逻辑,可以通过软件API提供软件以在主机的CPU 907上执行。
除了FPGA,PCIe主板90提供可以被市场数据处理系统100用作“外部存储器”的存储器芯片,以及各种支持功能,例如电源调节,以便以主板上部件所需的各种电压向这些部件供电。其还可以包括物理连接器,其用于多个以太网连接。
几个这样的主板可以插入主机系统的PCIe插槽中。这使得能够增减处理能力,以便例如支持更多的市场交易所。主板可以通过主机的PCIe互联而彼此通信。
主机系统91可以是标准的计算机服务器。CPU 907可以被选择为具有到托管市场数据处理系统的PCIe主板的直接PCIe连接,以便最大化其上运行的客户端应用程序908的性能。主机系统还可以装备有网络接口908,其用于连接至配置和管控网络909。这使得能够具有用于配置和管控服务器的专用网络。该服务器还可以装备有任何的标准部件,例如大容量存储设备(硬盘)。
将市场交易所网络、客户端网络以及配置和管控网络在物理上分开具有在安全性以及性能方面的益处。
即使本发明不限于使用PCIe作为FPGA到主机系统的接口,PCIe由于特定的益处而是当前使用最广泛的用于在服务器与加置卡之间的高速传送的主线。然而,本领域技术人员易于理解,市场数据处理系统100可以以任何其他的总线作为接口。
先前的描述被认为仅是本发明原理的说明。此外,由于本领域技术人员易于想到大量修改和变化,其并非旨在将本发明限制为所显示和描述的精确结构和操作,因此,可以采用的所有适当的修改和等同形式落入本发明的范围内。具体而言,本发明不限于所描述的用于账簿的底部部分的数据结构。在提供访问重要账簿中的深层限制的令人满意的性能以及基本恒定的延迟的情况下,也可以替代地使用其他类型的树或堆。
另外,即使所描述的本发明的实施方案集中于一侧(出价侧或要价侧),账簿的两侧可以同时加载到缓存21中并且呈现给处理内核24以及接下来的内核,从而在处理内核24中的FPGA中或订单账簿管理设备10与报文分发单元15之间集成特定的机构。
两侧的可用性可能对于“账簿去交叉”功能尤其有用:处理内核24可以被布置为,检测并修正“交叉的账簿”。如果账簿在出价侧的限制中的一部分具有高于要价侧的特定限制的价格,则该账簿成为“交叉的”。一般而言,这样的条件不会被满足,因为“交叉的”订单应当得到匹配并且由交易所执行(除了市场或工具暂停的阶段(例如拍卖阶段),或工具的交易挂起时之外)。然而,如果系统丢掉或错过了某些市场数据,和/或错过了特定订单的删除或执行以至其卡在了账簿的顶部,则这是可能发生的。因此,处理内核24可以移除最旧的交叉限制(即,在出价侧上的增加期间,如果该增加导致交叉的账簿,则可以移除要价侧的限制直到账簿不再是交叉的)。
Claims (14)
1.一种订单管理设备,其在集成电路上实施,其中所述订单管理设备包括:
-订单聚类存储器,其与对象相关联并且配置在所述集成电路中,所述订单聚类存储器配置为接收包括源自网络的订单的数据并且将所述订单进行聚类,每个订单具有值和数目,所述订单聚类存储器配置为响应于与所述订单相关联的输入指令而将聚类的订单与所述订单聚类存储器中的限制相关联,每个限制与值和数目相关联,每个订单被聚类至与具有与订单值相同值的限制中,与限制相关联的数目对应于被聚类的订单数目的和,所述订单聚类存储器包括:
-第一数据结构,其具有固定大小,所述第一数据结构存储关于与P个限制的集合相关联的账簿订单的顶部的数据,P个限制是N个限制的子集,并且基于性能选择标准来选择和/或基于与所述限制相关联的聚类的订单的值来排序,以及
-第二数据结构,其包括关于与N个限制的列表中不包括在子集P中的限制相关联的账簿订单的底部的数据,动态分配所述第二数据结构中的条目,
其中,所述订单管理设备进一步包括第一管理内核(2),其配置在所述集成电路中,以处理与存储在所述第一数据结构中的账簿订单的顶部有关的输入指令,响应于所述输入指令的处理而更新所述第一数据结构,以及产生并转发与存储在所述第二数据结构中的账簿订单的底部有关的至少一个更新指令;
-第二管理内核(3),其配置在所述集成电路中,以响应于从所述第一管理内核接收到的所述更新指令而更新所述第二数据结构;以及
-报文分发和传输组件,其配置为将来自第一数据结构的数据格式化,并且将格式化的数据转发至第一客户端应用程序,
其中,所述第一管理内核配置为独立于P个限制,在固定数量的时钟周期内以流水线的方式处理输入指令,
其中,所述第一管理内核和所述第二管理内核配置为异步工作,所述第一管理内核配置为独立于由第二处理内核执行的更新指令处理而继续处理输入指令,而不需要等待第二管理内核完成处理或对从所述第一管理内核接收到的指令回答。
2.根据权利要求1所述的订单管理设备,其中,所述第二数据结构包括根节点(53)和至少一个叶子节点(55)的树。
3.根据权利要求2所述的订单管理设备,其中,所述根节点(53)包括一组条目,每个条目与参考值以及指向各自叶子节点(55)的指针相关联,所述根节点(53)中的条目按参考值排序,并且其中,每个叶子节点包括与各自值相关联的限制的未排序的列表,每个叶子节点(55)中的值的范围在第一值与第二值之间,所述第一值为与所述根节点(53)中的相应指针(54)相关联的值,所述第二值为与所述根节点(53)中的在前指针(54)相关联的值。
4.根据权利要求3所述订单管理设备,其中,根节点包括第一条目,其存储基于所述性能选择标准选择的账簿的第二数据结构的限制,如果在所述根节点(53)中不存在指向叶子节点的在前指针,则每个叶子节点的第二值为与第一条目中的选择的限制相关联的值。
5.根据权利要求4所述的订单管理设备,其中,所述第一值包括在所述叶子节点(55)中,且所述第二值不包括在所述叶子节点(55)中。
6.根据权利要求1所述的订单管理设备,其中,所述第一管理内核(2)包括内部缓存(21),其用于存储每个订单聚类存储器的第一数据结构。
7.根据权利要求6所述的订单管理设备,其中,条目使用近期最少使用LRU方案而在用于每个订单聚类存储器的所述缓存中分配空间。
8.根据权利要求2所述的订单管理设备,其中,所述树是B+树。
9.根据权利要求1所述的订单管理设备,其中,所述第一管理内核(2)包括处理内核(24),其被配置为,通过以并行和流水线的方式处理所述第一数据结构内的限制,在三个时钟周期内处理每个输入指令(200)以及相关联的第一数据结构。
10.根据权利要求9所述的订单管理设备,其中,所述第一管理内核(2)进一步包括比较器(23)的阵列,其用于将与在输入数据流中识别出的订单相关联的值与所述第一数据结构的每个条目中的值进行比较,并且基于比较器所提供的结果来更新第一数据结构和/或第二数据结构。
11.根据权利要求2所述的订单管理设备,其中,所述第二管理内核(3)包括至少一个状态机,其用于处理所述第二数据结构的每个叶子节点和根节点。
12.根据权利要求11所述的订单管理设备,其中,所述集成电路包括至少一个处理内核,并且其中,所述状态机在所述处理内核中并行实施,设置了指令分发器以便将由所述第一管理内核(2)产生的指令分发到处理内核。
13.根据权利要求1所述的订单管理设备,其中,在所述第一数据结构中的限制的数量P使得:
P*S=N*W
其中,N是整数,S是以比特计的限制的大小;以及
W是以比特计的存储器字宽。
14.一种聚类订单的方法,其将在输入数据流中识别出的订单聚类到在集成电路中实现的订单管理系统,所述方法包括以下步骤:
维护配置在所述集成电路中的与给定对象相关联的订单聚类存储器,所述订单聚类存储器配置为接收包括源自网络的订单的数据和聚类所述订单,每个订单具有值和数目,维护步骤包括响应于与在所述订单聚类存储器中的所述订单有关的输入指令而将聚类订单与限制相关联,每个限制与值和数目相关联,每个订单聚类到具有与订单值相同值的限制中,与限制相关联的数目对应于聚类的订单数目的和,其中所述维护步骤进一步包括以下步骤:
在具有固定大小的第一数据结构中存储与P个限制的集合相关联的账簿订单的顶部,P个限制是N个限制的子集,并且基于性能选择标准来选择和/或基于与所述限制相关联的聚类的订单的值来排序;以及
与第二数据结构中存储在N个限制的列表中不包括在子集P中的限制相关联的账簿订单的底部,动态分配所述第二数据结构中的条目;
在所述集成电路的第一管理内核中,处理与所述第一数据结构中的订单有关的输入指令,响应于所述输入指令的处理而更新所述第一数据结构,以及在所述第一管理内核中生成与账簿订单的底部有关的更新指令;
在第二管理内核中,响应于从所述第一管理内核接收到的所述更新指令而处理对所述第二数据结构的更新;以及
将来自第一数据结构的数据格式化,并且将格式化的数据转发至第一客户端应用程序,
其中,在第一管理内核中对输入指令的处理独立于P个限制,在固定数量的时钟周期内以流水线的方式执行,以及
其中,所述第一管理内核和所述第二管理内核的工作为异步的,以及其中,独立于在第二处理内核中执行的更新指令处理而继续所述第一管理内核中输入指令的处理,而不需要等待第二管理内核完成处理或对从所述第一管理内核接收到的指令回答。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP13306358.6 | 2013-10-01 | ||
EP20130306358 EP2858025A1 (en) | 2013-10-01 | 2013-10-01 | An order book management device in a hardware platform |
PCT/EP2014/071073 WO2015049306A1 (en) | 2013-10-01 | 2014-10-01 | An order book management device in a hardware platform |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105684020A CN105684020A (zh) | 2016-06-15 |
CN105684020B true CN105684020B (zh) | 2020-06-23 |
Family
ID=49328476
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480054743.5A Active CN105684020B (zh) | 2013-10-01 | 2014-10-01 | 硬件平台中的订单账簿管理设备 |
Country Status (8)
Country | Link |
---|---|
US (1) | US10846795B2 (zh) |
EP (1) | EP2858025A1 (zh) |
CN (1) | CN105684020B (zh) |
AU (1) | AU2014331144B2 (zh) |
CA (1) | CA2925750C (zh) |
HK (1) | HK1225841A1 (zh) |
SG (2) | SG10201802237SA (zh) |
WO (1) | WO2015049306A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10290056B2 (en) | 2012-05-21 | 2019-05-14 | Deutsche Borse Ag | Computer-implemented matching method and engine |
US11094015B2 (en) * | 2014-07-11 | 2021-08-17 | BMLL Technologies, Ltd. | Data access and processing system |
US10079756B1 (en) | 2016-03-17 | 2018-09-18 | Juniper Networks, Inc. | Conserving memory resources of a provider edge device in an ethernet tree |
US10504180B2 (en) * | 2016-12-19 | 2019-12-10 | The Bartley J. Madden Foundation | Volume attentive trade liquidity builder |
US10360629B2 (en) | 2016-12-19 | 2019-07-23 | The Bartley J. Madden Foundation | Volume attentive trade liquidity builder |
US11158001B2 (en) * | 2017-10-09 | 2021-10-26 | Nasdaq Technology Ab | Systems and methods for simultaneous placement of an order object in multiple order books of an automated exchange system |
US20190243796A1 (en) * | 2018-02-06 | 2019-08-08 | Samsung Electronics Co., Ltd. | Data storage module and modular storage system including one or more data storage modules |
US11488243B2 (en) * | 2018-05-24 | 2022-11-01 | Royal Bank Of Canada | Systems and methods for quantitative order routing |
US10880211B2 (en) | 2019-05-06 | 2020-12-29 | Seth Gregory Friedman | Transaction encoding and verification by way of data-link layer fields |
US10868707B1 (en) | 2019-09-16 | 2020-12-15 | Liquid-Markets-Holdings, Incorporated | Zero-latency message processing with validity checks |
EP4144048A4 (en) | 2020-06-08 | 2024-06-26 | Liquid-Markets GmbH | HARDWARE-BASED TRANSACTION EXCHANGE |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07244605A (ja) * | 1994-03-03 | 1995-09-19 | Fujitsu Ltd | データベースシステム及びその更新方法 |
US5892962A (en) * | 1996-11-12 | 1999-04-06 | Lucent Technologies Inc. | FPGA-based processor |
US6321240B1 (en) * | 1999-03-15 | 2001-11-20 | Trishul M. Chilimbi | Data structure partitioning with garbage collection to optimize cache utilization |
US6330556B1 (en) * | 1999-03-15 | 2001-12-11 | Trishul M. Chilimbi | Data structure partitioning to optimize cache utilization |
US8239303B2 (en) * | 1999-09-23 | 2012-08-07 | The Nasdaq Omx Group, Inc. | Match-off of order flow in electronic market system |
US7251629B1 (en) * | 1999-10-14 | 2007-07-31 | Edge Capture, Llc | Automated trading system in an electronic trading exchange |
GB0019341D0 (en) * | 2000-08-08 | 2000-09-27 | Easics Nv | System-on-chip solutions |
US20020184237A1 (en) * | 2001-04-03 | 2002-12-05 | Mcfeely Brooks B. | Methods and apparatus for compiling, processing and disseminating equity transaction data |
AU2003276626A1 (en) * | 2002-06-18 | 2003-12-31 | Douglas Ray Duquette | System and method for analyzing and displaying security trade transactions |
US7552077B1 (en) * | 2002-06-26 | 2009-06-23 | Trading Technologies International, Inc. | System and method for coalescing market data at a network device |
US7813994B1 (en) * | 2002-09-30 | 2010-10-12 | Trading Technologies International, Inc. | System and method for displaying highest and lowest traded prices of tradable objects |
US7577602B2 (en) * | 2002-11-26 | 2009-08-18 | Trading Technologies International Inc. | Method and interface for consolidating price levels on a trading screen |
US20090119224A1 (en) * | 2005-11-18 | 2009-05-07 | Rts Realtime Systems Software Gmbh | Algorithmic trading system, a method for computer-based algorithm trading and a computer program product |
US20070288890A1 (en) * | 2006-05-17 | 2007-12-13 | Ipreo Holdings, Inc. | System, method and apparatus to allow for a design, administration, and presentation of computer software applications |
US7921046B2 (en) * | 2006-06-19 | 2011-04-05 | Exegy Incorporated | High speed processing of financial information using FPGA devices |
US7840482B2 (en) * | 2006-06-19 | 2010-11-23 | Exegy Incorporated | Method and system for high speed options pricing |
US10198767B2 (en) * | 2006-07-28 | 2019-02-05 | Nyse Group, Inc. | Displayed and dark equity options electronic order book with market maker participation |
US7856545B2 (en) * | 2006-07-28 | 2010-12-21 | Drc Computer Corporation | FPGA co-processor for accelerated computation |
US7917912B2 (en) * | 2007-03-27 | 2011-03-29 | International Business Machines Corporation | Filtering application messages in a high speed, low latency data communications environment |
US8301593B2 (en) * | 2008-06-12 | 2012-10-30 | Gravic, Inc. | Mixed mode synchronous and asynchronous replication system |
US20100208729A1 (en) * | 2008-10-17 | 2010-08-19 | John Oddie | Method and System for Receiving Market Data Across Multiple Markets and Accelerating the Execution of Orders |
CA3184014A1 (en) | 2008-12-15 | 2010-07-08 | Exegy Incorporated | Method and apparatus for high-speed processing of financial market depth data |
US9317537B2 (en) * | 2009-09-25 | 2016-04-19 | Adnan Fakeih | Database and method for evaluating data therefrom |
US20130226771A1 (en) * | 2010-01-26 | 2013-08-29 | Patricia MACRI LASSUS | Complex trading mechanism |
US10037568B2 (en) * | 2010-12-09 | 2018-07-31 | Ip Reservoir, Llc | Method and apparatus for managing orders in financial markets |
US9251215B2 (en) * | 2011-01-14 | 2016-02-02 | Hewlett Packard Enterprise Development Lp | Data staging for results of analytics |
US9443269B2 (en) * | 2012-02-16 | 2016-09-13 | Novasparks, Inc. | FPGA matrix architecture |
US20140025549A1 (en) * | 2012-07-20 | 2014-01-23 | oneZero Financial Systems, LLC | Parallel processing system |
-
2013
- 2013-10-01 EP EP20130306358 patent/EP2858025A1/en active Pending
-
2014
- 2014-09-30 US US14/502,523 patent/US10846795B2/en active Active
- 2014-10-01 WO PCT/EP2014/071073 patent/WO2015049306A1/en active Application Filing
- 2014-10-01 SG SG10201802237SA patent/SG10201802237SA/en unknown
- 2014-10-01 AU AU2014331144A patent/AU2014331144B2/en not_active Ceased
- 2014-10-01 CA CA2925750A patent/CA2925750C/en active Active
- 2014-10-01 SG SG11201602335TA patent/SG11201602335TA/en unknown
- 2014-10-01 CN CN201480054743.5A patent/CN105684020B/zh active Active
-
2016
- 2016-12-14 HK HK16114202A patent/HK1225841A1/zh unknown
Non-Patent Citations (1)
Title |
---|
A Low-Latency Library in FPGA Hardware for High-Frequency Trading(HFT);John W.Lockwood;《2012 IEEE 20th Annual Symposium on High-Performance Interconnects》;20121230;第9-16页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105684020A (zh) | 2016-06-15 |
SG11201602335TA (en) | 2016-04-28 |
AU2014331144A1 (en) | 2016-04-21 |
CA2925750A1 (en) | 2015-04-09 |
HK1225841A1 (zh) | 2017-09-15 |
US10846795B2 (en) | 2020-11-24 |
AU2014331144B2 (en) | 2020-07-02 |
CA2925750C (en) | 2023-01-10 |
EP2858025A1 (en) | 2015-04-08 |
WO2015049306A1 (en) | 2015-04-09 |
SG10201802237SA (en) | 2018-04-27 |
US20150095207A1 (en) | 2015-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105684020B (zh) | 硬件平台中的订单账簿管理设备 | |
CN112204513B (zh) | 多租户存储系统中的基于组的数据复制 | |
US9535702B2 (en) | Asset management device and method in a hardware platform | |
US9047243B2 (en) | Method and apparatus for low latency data distribution | |
JP5871619B2 (ja) | 金融市場深度データの高速処理のための方法および装置 | |
US9639407B1 (en) | Systems and methods for efficiently implementing functional commands in a data processing system | |
US20150127649A1 (en) | Efficient implementations for mapreduce systems | |
US20110173396A1 (en) | Performing High Granularity Prefetch from Remote Memory into a Cache on a Device without Change in Address | |
TW201430746A (zh) | 現場可程式閘陣列記憶體分頁 | |
CN110119304B (zh) | 一种中断处理方法、装置及服务器 | |
US9690713B1 (en) | Systems and methods for effectively interacting with a flash memory | |
US10963295B2 (en) | Hardware accelerated data processing operations for storage data | |
US11709835B2 (en) | Re-ordered processing of read requests | |
US8930596B2 (en) | Concurrent array-based queue | |
CN104392377A (zh) | 一种云交易系统 | |
EP3494493A1 (en) | Repartitioning data in a distributed computing system | |
US8819305B2 (en) | Directly providing data messages to a protocol layer | |
CN109983443A (zh) | 实现分叉非易失性存储器快速驱动器的技术 | |
US9811403B1 (en) | Method, apparatus and system for performing matching operations in a computing system | |
US20230259294A1 (en) | Systems, methods, and apparatus for copy destination atomicity in devices | |
US20240193090A1 (en) | Cache structure for high performance hardware based processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1225841 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |