自電子交易問世以來,對速度的追逐無止境,時刻要求搭建速度最快、最智能的交易平臺。智能和高速就意味著金錢。能夠率先發現交易機會并在其上完成交易的交易平臺將占上風。響應時間已經從“秒”一路降低到“毫秒”、“微秒”。要實現微秒和亞微秒響應時間,憑借傳統的軟件架構或簡單的硬件架構幾無可能,正是這一事實促使在超低時延系統中引入 FPGA 技術。但是,FPGA 編程要求使用 HDL機器語言開發交易策略并將現有交易策略(主要用 C 語言和 C++ 語言編寫)移植到 HDL 機器語言中。這與使用標準的 C 和 C++ 編程在技能上有根本的不同,同時需要增加人員、工具和時間。
有現成的 C-to-HDL 編輯器工具可用,可將現有的 C 代碼移植到硬件描述語言 (HDL),比用 HDL 從頭開發代碼速度快。但是,負責移植代碼工作的人員必須熟悉硬件編程,或者必須遵循具體指南,才能生成可接受的代碼。即便這樣,生成的代碼仍然可能會比用 HDL 直接開發的代碼晦澀低效。
為了降低在 FPGA 以太網卡上直接開發 HDL 代碼所帶來的風險,同時節省開發時間,AdvancedIO 公司率先嘗試將 FPGA 框架用于 10G 以太網 (10GE) 通信。我們的expressXG 開發框架工具套件為保證金融業務的快速部署提供了必要的基礎設施, 可無縫移植到最新一代FPGA 卡上。該工具套件可集成并優化應用開發所需的所有必要的核心功能,能夠最大程度地降低第三方許可成本,讓開發周期縮短數月。開發團隊可隨后將 C-to-HDL 編譯器工具集成在框架中,從而為開發應用的不同部分提供多重選擇。
實際上兩種方法都在項目中有一席之地。在優先考慮效率和代碼緊湊度,或組件在多個項目中使用的情況下,最好使用 expressXG 框架直接開發 HDL 組件。如果著重考慮產品上市時間和定制化,或者要求以 C 語言編寫代碼的情況下,最好使用 C-to-HDL編譯器。這種方法可以克服眾多金融從業人員對 FPGA 的畏懼,同時不會影響性能。
算法交易概覽
說到證券、衍生品、期貨及其它金融工具的交易,總會讓人聯想起塞滿幾百人,叫嚷聲此起彼伏的交易大廳。人們或漫無目的地轉悠,或緊盯計算機屏幕。現實是,當今美國有 70% 以上的交易是由運行在計算機服務器上的算法完成的。在金融業,速度就是一切。哪家公司能夠率先發現機遇并把握機遇,就能夠贏得豐厚的利潤。對某些交易策略而言,率先進入隊列就能贏得交易。這也就毫不奇怪眾多公司竭盡所能地確保自身相對競爭對手的優勢,哪怕是僅僅 1 微秒。
在算法交易系統 (ATS) 中,由運行在高性能計算機上的算法處理交易,制定決策。這種系統運用多種技術來最大程度的降低時延,贏得競爭優勢。具體包括與各個交易所共址、使用最短路徑網絡,以及使用 10G E 來降低時延這一日益風靡的做法。為在競爭中贏得優勢,主要的交易公司同時采用上述所有技術。
證券市場上的交易僅限于經紀人-交易員和屬于交易所成員的市場莊家機構之間。部分這類機構為其他交易公司提供服務,使他們能夠通過他們的帳戶使用“電子式專屬線路下單(DMA)”給交易所下訂單。提供“電子式專屬線路下單”的機構必須建立交易前風險控制制度,以限制財務風險,滿足合規性要求。因此,他們必須采用配備有軟件的服務器,檢查所有經手他們的賬戶的交易。這種檢查必須以線速進行,因為任何延遲都會讓他們及其客戶處于不利境地。現有的基于軟件的交易前風險管理平臺需要數十微秒才能完成金融交易上要求的策略檢查。很明顯這對當今的交易員來說速度不能滿足要求。
圖 1 顯示了簡化交易系統的各個組件。實際上,ATS 可以更多的組件,比如用于執行更復雜算法的服務器或計算云,這里我們不作討論。交易系統可以直接連接到交易所,也可以通過一個或多個交易所接口服務器、電子通信網絡或其它方式連接到交易所。另外,對穩健可靠的交易基礎設施而言,防火墻和入侵檢測系統也是關鍵的組件。
?
基于軟件的解決方案的局限性
ATS 必須能夠接收多種市場饋入,解碼使用的不同協議(如 FIXFAST、ITCH 和 OUCH 等多種名字各異的協議),過濾需要的交易代碼并將其發送到預定義的“籃子”中,供交易算法 (TA) 分析。一旦交易算法判定必須執行某項交易, 就向訂單管理系統(OMS) 發出交易請求,由訂單管理系統與交易所接口服務器或交易所本身通信,下訂單、接收交易確認。ATS服務器還能用極其精確的時戳給輸入的數據加戳,然后將數據送去存檔。加蓋時戳和市場數據采集既可在同一服務器(讓數據經內部網絡進入數據服務器)完成,也可兩個獨立的服務器上執行。
ATS 能夠以超過 6Gbps 的總突發數據速率從多個交易所接收數據。近期納斯達克 (Nasdaq) 宣稱已準備為自己的數據中心客戶提供 40Gbps 的連接,正等待監管部門的批準。數據速率的快速攀升給系統處理器帶來了巨大壓力,同時也從重要的交易數據分析和決策任務上分散了處理能力。根據使用商用 10GE 網絡接口卡對文件服務器測試的結果可以看出,在通過服務器自身的本地堆棧進行 TCP 傳輸時,僅處理 IP 協議就幾乎完全占用了2.2GHz 的處理器,且實現的數據速率不足 5Gbps。為應對這種困局,出現了一種使用一個稱為 TCP 卸載引擎(TOE) 的硬件為網絡協議棧提速的方法。該方法能在一定程度上改善響應時間。
即便在網卡上采用了 TOE,到達主處理器的數據量仍然相當龐大,足以導致不可接受的延遲。為降低時延,有必要先在網卡上過濾相關數據,然后再傳輸給主系統處理器。雖然所有的工作負荷都在 FPGA 層面完成,但響應時間明顯加快。另外 FPGA 可提供與負荷水平無關的相同響應時間。這對常規的處理器是無法實現的。在處理器輕載時,響應時間可以預測,但在重載時,響應時間會延長,直至無法預測。
目前處理器和以太網卡之間通過PCI Express? 總線來通信。理論上 8信道的 PCI Express Gen 2 總線能提供4Gbps 的峰值吞吐量。但 PCI Express受器件驅動程序和操作系統中斷處理內在的時延的牽制。避免通過 PCI Express 總線與主機處理器相連,在網卡上執行金融計算,有著明顯優勢。
FPGA 技術是金融應用的理想選擇,因為它能夠實時處理海量數據,且時延低、一致性好。簡言之,FPGA 能夠提供并行處理能力,這是通用處理器無法匹敵的。由于 FPGA 能夠給交易系統帶來更強勁的性能和極快的速度,設計人員都在努力將盡可能多的功能(比如與交易所通信的 OMS 和部分算法)集成到 FPGA 中,以降低響應時間。圖 2 對基于 FPGA 和 CPU 的系統的響應時間進行了比較。FPGA 不僅速度明顯提高,而且性能隨負荷的增加保持穩定,相比之下基于 CPU 的解決方案響應時間隨負荷增大明顯延長。
?
FPGA 技術的優勢
FPGA 技術能夠提供最佳解決方案,輕松應對高帶寬、實時、高計算強度金融交易應用所面臨的各種難題,這是其他技術無法匹敵的。由 FPGA 在以太網卡上執行交易的解決方案具有多重優勢:
? 在貼近網絡物理接口的 FPGA 上執行交易可避免主機總線、主機處理器和操作系統帶來的時延。這樣可以顯著改善交易的響應時間。
? FPGA 提供線速性能,能夠瞬時執行算法中用于發現并把握交易機會的部分,不給他人察覺機遇的機會。
? FPGA 在運行過程中可重新編程,便于修改參數、更新算法,保持領先于競爭對手。
? FPGA 特別擅長并行處理,能夠同時執行多個交易。
超低時延金融應用難以實現的原因在于它們必須在極高帶寬下以線速運行,必須執行復雜的算法。要實現卓越的高性能,必須針對應用設計專門的架構。這就必須考慮如何在高計算強度的算法和滿足交易的極快響應速度要求之間進行取舍,實現最佳平衡。設計人員必須想盡一切辦法消除瓶頸,最大限度地降低通信時延和處理時延。為避免與主機系統總線有關的時延,應選用功能強大的 FPGA 來實現交易算法的關鍵部分,同時匹配大量的 SRAM 和 SDRAM 存儲器端口和低時延通信端口。
與為單核或多核處理器開發軟件相比, 使用線程的硬件模塊編程FPGA 一般情況下工作量更大,而且要求具備專業技能。另外,還需要投入大量精力和資金學習實現 FPGA 解決方案的有案可循和無案可循的微妙之處,尤其對極高速解決方案而言更是如此。這些特點可能會增大 FPGA的認知風險,延長設計時間,導致部分項目經理和開發團隊趨利避害,轉而尋求次優的軟件實現方案。另外現有的交易算法幾乎都是清一色用 C 和C++ 編寫,將它們移植到 HDL 代碼中不是一件能一蹴而就的小事。
目前已有多種簡化 FPGA 編程工作的方法,比如嵌入式硬核、軟件內核和將 C 代碼移植到 HDL 語言中的各種工具等。雖然每種方法都有自己定位,存在一定的性能缺陷,但每種方案都能加快應用的部署。C-to-HDL工具已成為簡化 FPGA 應用開發的明確選擇。但是這些工具生成的代碼相當晦澀,難以優化。簡言之,在目前沒有什么能夠取代直接 HDL 編程。
直接 HDL 編程與 C-TO-HDL 工具的對比
喬治華盛頓大學開展了一項研究[1,2],對高性能可重配置計算機中用于為FPGA 生成 HDL 代碼的高級語言(HLL) 工具進行了評估,并制定了相應標準用于衡量各種工具相對于直接HDL 編程的效率和生產率。研究人員選擇了四種工作負荷,并邀請擁有不同經驗水平的用戶使用各種工具來實現代碼。結果顯示,各種 HLL-to-HDL工具無一例外地縮短了開發時間,其中有的工具使開發時間縮短了高達61%。但結果也顯示得到的代碼無一例外地比直接用 HDL 開發的代碼低效,占用面積增加了 36% 之多,頻率下降達 50%。另外研究還發現在使用部分工具時,吞吐量顯著下降。[2]而且這些工具生成的代碼相當晦澀,難以進行 HDL 層面的調試。
不過這里應該說明的是測試中使用的四種設計相對簡單。某些金融算法和應用要復雜得多,用 HDL 直接編程方法來實現也更艱難。我們預計隨著更復雜的算法用 FPGA 來實現,使用 HLL-to-HDL 工具應該能夠進一步節省時間。已有現成的 C 語言算法,需要移植到 HDL 中的情況尤為如此,但需要先在 C 語言中編寫,然后移植的情況卻并非如此。
需要注意的是,C 語言和 HDL 有著根本性的差異,不是用 C 語言編寫的一切內容都能夠正確無誤地轉換為HDL。表1 所示的是廠商目前使用的幾種 C 語言變體或子集,現在正在嘗試在OpenGL 上實現標準化。OpenGL 是一種用于新型處理器跨平臺并行編程的開放標準,目前已在 FPGA 上使用。[3]
用 HDL 編寫的 FPGA 開發框架
另一種簡化 FPGA 開發工作并縮短開發周期的方法是使用用 HDL 直接編寫的、對時延和性能進行了高度優化的框架(如圖 3 和圖 4 所示)。這種框架是以太網協議與接口、存儲器控制器以及主機架構接口的深度抽象,故能減少實際人員為實現定制算法付出的精力和時間。這樣開發人員能夠集中精力進行應用開發和集成,不必擔心如何讓各種外部接口在 FPGA 卡上工作。合適的開發框架應保證應用在 FPGA 器件系列直接的可移植性以及在同一系列FPGA 卡之間的可移植性。這樣可以顯著降低未來移植或升級的成本。
?
?
我們已在 AdvancedIO Systems 公司提供的各系列高性能 10GE 卡上實現并驗證了我們的開發框架。這些 10GE卡廣泛用于國防、金融和電信行業等多種市場應用領域。
V5022 卡是專為金融交易優化的產品, 采用賽靈思 Virtex?-6 HXTFPGA,擁有能夠實現大容量、超低時延交易解決方案的應用架構所需的全部必要組件。Virtex-6 HXT 系列可為實現復雜算法提供大量邏輯資源。它擁有 2個高達 8GB 的獨立 Bank、533MHz DDR3 SDRAM 和 4 個高達144Mb 的獨立 Bank、350MHz QDRII+SRAM,是需要緩沖或超高速查找表的高級算法的理想選擇。V5022 卡有四個 10GE端口,能夠大幅降低從光纜到 FPGA 器件內部的 MAC 接口(L2)的時延。
?
V5022 支持 PCI Express Gen2 主機接口,采用卡間高速端口確保系統中各卡之間的超高速通信,無需使用主機系統總線,可進一步降低時延。這為實現更加復雜的交易算法提供了更強大的高速處理能力。
該開發框架提供的主要功能必須集成在開發板上,才能保障一切工作正常。說采集、集成和優化這樣的功能的邏輯是一件既費時又費錢的工作,應該不算過分。因此這種開發框架為項目經理帶來了巨大的價值,有助于加速產品上市進程。
AdvancedIP 投入了大量的精力,以確保其框架經優化后能夠提供最優異的性能,空間占用小,運行效率高。這樣可以讓 FPGA 的大部分資源用于應用開發。比如,當 V5022 使用賽靈思Virtex-6 HX565T 時, 該框架占用FPGA 的資源不足 7.5%。這其中包括PCIe? 接口,四個 10GE 接口、兩個SDRAM 控制器和四個 SRAM 控制器。
該開發框架提供了一個“沙盒”供編程人員開發自己的應用。它有數個易于理解的對外接口,便于在 FPGA 卡上迅速集成應用。另提供示例代碼和示例,展示如何開箱即用地運用接口,布置系統數據流,從而增強開發人員的信心。
節省數月時間
為降低在 FPGA 器件上開發 HDL 代碼涉及的風險,縮短開發時間,我們的FPGA 開發框架集成并優化了在 FPGA卡上開發應用所需的全部控制器。這至少可以縮短項目數月的開發時間。我們還建議將 C-to-HDL 編譯器工具集成在開發框架中,因為研究結果表明,雖然工具生成的代碼效率低于 HDL 直接編碼,但它能夠顯著縮短開發時間。
在現實情況中,不存在一種能夠適應各種情況的萬靈丹式的方法。在權衡開發方法時,設計小組應有許多工具和選項可供使用和選擇。在要求效率或緊湊代碼時,或者在組件用于多個項目中時,最佳方法是使用 FPGA開發框架開發 HDL 組件。若優先考慮產品上市時間,以及已經有 C 語言代碼可用的情況下, 最佳方法是使用C-to-HDL 編譯器工具。最好是使用FPGA 開發框架在 HDL 中開發 TCP/IP 和 UDP/IP堆棧等固定功能的模塊,同時需要經常修改的算法可以使用賽靈思 AutoESL [4] 或 Impulse[5] 高層次綜合工具等高級語言工具來開發。
金融交易系統的應用
圖 7 是需要在很高水平上實現的算法交易系統的不同組成部分。ATS 必須具備讀取一個或多個市場數據饋入,過濾數據并發送到不同“籃子”中用于分析,制定交易決策以及與一個或者多個交易所通信的能力。
?
交易邏輯和策略組件會經常變動,且不同的交易機構有自己的一套做法。他們最好是使用 C-to-HDL 編譯器來實現,以滿足產品上市時間要求,而且如果市場要求,可以在后期轉為使用效率更高的實現方式(使用 FPGA 開發框架)。另一方面,網絡協議和金融協議不會經常發生變化,用高效的方法實現這些協議會嚴重影響系統性能。因此我們建議使用 expressXG 開發框架在 HDL 直接實現這些協議。
速度、響應性和預測性
金融交易行業,在速度和超低時延的推動下,FPGA 技術不斷得到推廣和普及。這個行業的用戶面臨著諸多挑戰,包括不熟悉 FPGA 設計、技能要求不同、有龐大的高級語言代碼庫等。我們的 expressXG FPGA 開發平臺能夠簡化在基于 FPGA 的高性能以太網PCI Express 卡上進行的應用開發工作,并縮短應用開發時間。為便于移植現有的 C 語言代碼,或者在產品上市速度壓倒一切的情況下,我們建議將一個 C-to-HDL 編譯器集成在該框架中。
我們認為集成有 C-to-HDL 編譯器的 expressXG 有助于 FPGA 技術的采用,提高交易系統的速度、響應能力和預測能力。
評論