現在如何在 FPGA 上實現 HFT 系統?
我已經閱讀了有關 FPGA 上 HFT 系統的不同實現的資訊。
- 氬高頻交易系統(http://trading-gurus.com/argon-design-an-fpga-based-hft-platform/)
- 僅硬體實現或混合解決方案http://msrg.org/publications/pdf_files/2010/moTrading-Efficient_Event_Processing_through_.pdf
- FPGA 實現提要處理程序的領域特定語言 ( http://msrg.org/publications/pdf_files/2010/moTrading-Efficient_Event_Processing_through_.pdf )。
像思科這樣的供應商聲稱他們已經通過高性能 NIC 獲得了相同的結果(http://www.cisco.com/c/dam/en/us/products/collat eral/switches/nexus-3000-series-switches/white_paper_c11-716030 .pdf)。
我的問題是,現在高頻交易系統的哪一部分主要在 FPGA 上實現?FPGA仍然很受歡迎嗎?是否僅在 FPGA 上實現了饋送處理程序?因為上面描述的這些系統中的一些只有在 FPGA 上實現的饋送處理程序,因為策略變化太多,或者太難在 FPGA 上實現。其他人聲稱他們還在 FPGA 上實施了交易策略,或者使用高性能 NIC 代替 FPGA 來建構 HFT 系統。我讀過不同的方法,但我發現很難比較,因為大多數結果都是在不同的輸入集上測試的。
這是一種思考方式:想像您可以在 ASIC 中做某事(即直接在硬體中)。然而,製造過程本身就很昂貴,而且您得到的設計是以後無法更改的。ASIC 對預定義的任務很有意義,例如比特幣探勘、著名的數據處理算法等。
另一方面,我們有普通的 CPU(以及協處理器 CPU 和 GPU),它們是通用的,但以非常高的速度處理少量(就並髮指令而言)指令集。
FPGA 是中間地帶。它們是“硬體模擬器”,因此可以認為比實際硬體慢 10 倍,但對於並發操作的性能仍然比 CPU 更高,前提是您能夠利用晶片相應地擴展您的邏輯。
FPGA的一些用途是:
- 影片轉碼(如電視中的高畫質影片解碼)以及各種數據採集板
- 固定資料結構解析(Regex解析)
- 離散系統模擬(例如,模擬紙牌遊戲的結果)
- 許多“正確嵌入”的應用程序,例如在航空航天或科學研究中
用於 quant 用途的 FPGA 的問題在於它不適合浮點計算,特別是因為普通 CPU 已經針對 SIMD 等進行了優化。但是,對於任何定點或固定大小的資料結構,FPGA 設計允許您將設備配置為同時進行大量處理。
在交易中完成的一些事情是使用 FPGA 來處理 feed 處理程序(直接從網路流中解析)以及在硬體中建構交易結構的某些部分(例如訂單簿),以便能夠處理快速變化的資料結構而無需載入 CPU。
FPGA 的主要目標是解決快速處理數據而不支付傳播成本的問題。這與諸如 GPGPU(或任何 PCI-dwelling 卡,例如 Xeon Phi)之類的設備形成鮮明對比,後者為從設備獲取數據或從設備獲取數據付出了性能損失。也就是說,DMA 選項在這方面也在改進。