TW201430746A - 現場可程式閘陣列記憶體分頁 - Google Patents
現場可程式閘陣列記憶體分頁 Download PDFInfo
- Publication number
- TW201430746A TW201430746A TW102147292A TW102147292A TW201430746A TW 201430746 A TW201430746 A TW 201430746A TW 102147292 A TW102147292 A TW 102147292A TW 102147292 A TW102147292 A TW 102147292A TW 201430746 A TW201430746 A TW 201430746A
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- layer
- instruction
- page
- financial
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 239
- 230000009471 action Effects 0.000 claims description 40
- 238000000034 method Methods 0.000 claims description 27
- 238000013507 mapping Methods 0.000 claims description 17
- 238000012545 processing Methods 0.000 claims description 15
- 230000004044 response Effects 0.000 claims description 7
- 238000012217 deletion Methods 0.000 claims description 2
- 230000037430 deletion Effects 0.000 claims description 2
- 208000003251 Pruritus Diseases 0.000 description 18
- 230000005540 biological transmission Effects 0.000 description 15
- 239000000872 buffer Substances 0.000 description 15
- 238000010586 diagram Methods 0.000 description 14
- 230000011218 segmentation Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 239000000463 material Substances 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 238000012937 correction Methods 0.000 description 4
- 238000000638 solvent extraction Methods 0.000 description 4
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 101100004179 Schizophyllum commune BAR2 gene Proteins 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000019771 cognition Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001152 differential interference contrast microscopy Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
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/06—Asset management; Financial planning or analysis
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Development Economics (AREA)
- Operations Research (AREA)
- Technology Law (AREA)
- Human Resources & Organizations (AREA)
- Entrepreneurship & Innovation (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Game Theory and Decision Science (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
為改良一市場資料平台之效能,一市場資料平台包含容許所接收之金融資訊繞過該平台之軟體部分且被直接寫入至記憶體中之一硬體卸載解決方案。該硬體卸載解決方案包含一現場可程式閘陣列(FPGA),其承擔先前在軟體中執行的一些任務職責。此等任務包含:對金融資訊饋送對執行在線仲裁以確保獲得金融資訊饋送之一準確複本,且將其儘可能快速地儲存於記憶體中。此等任務亦包含:執行記憶體分頁以容許依一有效率方式儲存及存取金融指令。
Description
本發明係關於金融市場資料之資料處理平台之領域。
在金融業中,金融資訊供應商給顧客提供與金融商品(諸如股票、債券及期權)有關之最新資訊。金融資訊供應商藉由致力於儘可能快速地提供大量最新準確資料而彼此競爭。約1秒之若干分之幾之資訊傳輸延遲之改良可給顧客提供有價值之可行資訊。
為將金融資訊迅速傳輸至顧客,已發展各種市場資料平台以提供金融資訊之即時傳輸。所傳輸之資訊可包含(例如)與各種金融產品相關之出價、報價及交易資訊。市場資料平台接收此資料,處理該資料,且將該資料輸出至顧客。鑒於現代金融市場之規模,市場資料平台需要能夠在不犧牲速度或準確度之情況下處置大量資訊。為此,既有市場資料平台大體上由各具有一或多個處理器以處理所接收之資料之一或多個網路電腦組成。
在既有市場資料平台中,平台中之各電腦大體上透過一介面(諸如一網路介面卡(NIC))而自一外部源接收資料。控制該NIC之一軟體驅動器取得由該NIC接收之資料且將其交遞至作業系統核心。作業系統核心將資料傳送至在一使用者空間中運行之一市場平台軟體應用程式。市場平台軟體堆疊準確地處理所接收之資料且將其寫入至記憶體。一旦已將資料寫入至記憶體,則市場平台軟體之另一部分可(例
如)藉由合成該資料且將其發送至接收該資料之一或多個簽約顧客而使用該資料。
對市場資料平台之處理需求隨著資訊容量日益增大且資訊傳輸延時之容限日益減小而日益增加。在既有系統中,已藉由提高市場資料平台之處理能力而滿足此等需求。此包含:將額外電腦聯網在一起;及將實體處理器(或核心)添加至組成平台之個別機器。儘管此一解決方案在過去運行良好,但此解決方案之成本快速地接近無法隨著效能需求增加而簡單添加處理器或電腦之臨界點。
105‧‧‧網路資料源
110‧‧‧現場可程式閘陣列(FPGA)
115‧‧‧處理器
120‧‧‧記憶體
125‧‧‧匯流排
130‧‧‧輸入/輸出控制器
135‧‧‧非暫時性電腦可讀儲存媒體
140‧‧‧市場資料平台/市場資料軟體
145‧‧‧網路介面卡(NIC)
150‧‧‧軟體計算環境
160‧‧‧外部網路/顧客
205‧‧‧使用者現場可程式閘陣列(FPGA)
210‧‧‧乙太網路介面
215‧‧‧封包剖析器
220‧‧‧在線仲裁機
225‧‧‧ITCH分割器
230‧‧‧適流金融資訊交換(FAST)解碼器
235‧‧‧直接記憶體存取(DMA)機
245‧‧‧橋接器現場可程式閘陣列(FPGA)
250‧‧‧核心
255‧‧‧作業系統
260‧‧‧匯流排傳輸驅動器
265‧‧‧應用程式設計介面(API)
270‧‧‧市場資料軟體
305‧‧‧獲取下一封包
310‧‧‧封包是否被仲裁?
315‧‧‧標記為核心堆疊封包
320‧‧‧轉送至DMA堆疊緩衝器
325‧‧‧擷取序號及訊息計數
330‧‧‧下一預期序號是否大於前一封包之序號?
335‧‧‧間隙序號是否匹配一已接收封包之序號?
340‧‧‧標記為先前所見封包
345‧‧‧捨棄
350‧‧‧標記為間隙封包
355‧‧‧標記為正常封包
360‧‧‧標記為捲軸封包
365‧‧‧判定仲裁群組以繞過緩衝器映射
370‧‧‧轉送至DMA旁路緩衝器(1...n)
375‧‧‧FAST解碼
380‧‧‧將封包解構為個別訊息
385‧‧‧擷取符號且映射至旁路緩衝器
510‧‧‧頁面管理器
520‧‧‧第一層(層1)記憶體
530‧‧‧主指令管理器
540‧‧‧第二層(層2)記憶體
610‧‧‧接收包含指令識別符及動作之指令
620‧‧‧將指令識別符分成第一識別符分段及第二識別符分段
630‧‧‧存取一第一層記憶體以識別對應於第一識別符分段之一頁面指標
640‧‧‧將頁面指標及第二識別符分段組合以形成一第二層記憶體位址
650‧‧‧存取一第二層記憶體以執行第二層記憶體位址處之動作
圖1係根據一實例性實施例之用於處理金融資訊之一市場資料平台之一功能圖。
圖2係根據一實例性實施例之透過一匯流排而介接之一市場資料平台之一FPGA及一軟體計算環境之一功能圖。
圖3係根據一實例性實施例之用於使用一在線仲裁FPGA來執行在線仲裁之一流程圖。
圖4A係根據一實例性實施例之用於使用一在線仲裁FPGA來將FAST解碼併入至在線仲裁中之一流程圖。
圖4B係根據一實例性實施例之用於使用一在線仲裁FPGA來將符號分割併入至在線仲裁中之一流程圖。
圖5係根據一實施例之經組態以執行記憶體分頁以儲存及存取資料之一市場資料平台之一方塊圖。
圖6係根據一實施例之用於執行記憶體分頁之一流程圖。
圖7視覺地繪示根據一實施例之使用市場資料平台之組件之記憶體分頁。
圖式描繪僅供說明之各種實施例。熟習技術者將易於自下列討
論認知:可在不脫離本文中所描述之原理之情況下採用本文中所繪示之結構及方法之替代實施例。
一市場資料平台包含容許所接收之金融資訊繞過該平台之軟體部分且被直接寫入至記憶體中之一硬體卸載解決方案。該硬體卸載解決方案包含承擔先前在軟體中執行之一些任務職責之一現場可程式閘陣列(FPGA)。
此等任務包含:對金融資訊體送對執行在線仲裁以確保獲得金融資訊饋送之一準確複本且將其儘可能快速地儲存於記憶體中。卸載傳入饋送之在線仲裁減少市場資料軟體上之處理負載且亦減少必須由市場資料軟體處置之資料之量。在一實施例中,此減少約50微秒之延時,使處理負載減少約30%至40%,且使輸入至市場資料軟體之資料減少約50%。
除執行在線仲裁之外,FPGA亦可經組態以執行額外金融資訊處理。例如,FPGA可經組態以執行解碼(例如FAST解碼)以解碼使用一協定(例如FAST協定)來編碼之傳入資料。FPGA亦可經組態以對編碼資料執行符號分割(例如ITCH分割)以將一傳入饋送分為多個可管理組塊或使所請求之資料分開。例如,FPGA可提供ITCH分割,作為一直接資料饋送協定,ITCH分割可使用戶自各指令首次輸入之一時間直到其被執行或被取消之一時間追蹤其狀態。FPGA亦可經組態以執行符號過濾。藉由對FPGA執行此等操作(相比於使用市場資料軟體來執行該等操作),市場資料平台能夠進一步促進效能,藉此減少由市場資料平台接收資料之時間與將資料發送至顧客之時間之間之總延時。
市場資料平台亦可經組態以執行記憶體分頁以給金融指令提供快速可靠之儲存及存取。例如,FPGA可經組態以與兩個或兩個以上記憶體階層一起用於提供存取金融指令資訊。不管資料庫(其大小可
調整至(例如)640億位元組及更高)之大小如何,一分層記憶體分頁方法容許市場資料平台在大致相等之一確定時間量內給全部金融指令提供至每一所儲存之金融指令之存取。此降低存取任何給定金融指令所消耗之平均時間。
圖1係根據一實施例之用於處理金融饋送資訊之一市場資料平台140之一功能圖。市場資料平台140自位於一外部網路上之一或多個資料源105接收一或多個金融資訊饋送(或金融資料串流)。市場資料平台140經組態以處理所接收之金融饋送且將資料輸出至亦位於一外部網路上之顧客160。
網路資料源105包含金融資訊之一或多個來源。此等來源可包含(例如)主要來源,諸如股票交易、債券指數、期貨市場、商品市場、共同基金指數或用於其他種類之金融產品之其他市場。該等來源亦可包含第三方服務自主要來源接收金融資訊且輸出次要資訊(諸如市場統計及財務預測)。
金融饋送以一封包串流之形式到達市場資料平台140。各封包可含有一或多個訊息。該等訊息可(例如)表示買入或賣出金融商品之新報價,指示金融商品之已完成交易,提供與金融商品之先前已報告交易之校正有關之通知,且提供與金融商品交易相關之管理細節。金融商品包含任何種類之可交易資產,其包含現金、一實體之一所有權或留置權權益之憑證、或接收或移交該實體之所有權之一契約權利。金融商品之實例包含股票、債券、商品及貨幣。
將饋送資訊自來源105至少一式二份地發送至市場資料平台140。通常,此藉由將資料自來源105以A/B線對傳輸至不同市場資料平台140之IP位址及埠而完成。若該等線對之一者在傳輸期間丟失,則每一線對之此雙重傳輸提供冗餘。資料之冗餘傳輸(其中非常即時
地一起發送一條給定資訊之兩個線對)有助於增加由市場資料平台儘可能快速地接收每條所傳輸之資訊之至少一單一複本之可能性。
冗餘傳輸亦減少重新傳輸或錯誤校正編碼之需要,此係因為全部三項技術具有確保資料被適當接收之一類似目標。由於錯誤校正編碼需要在傳輸之前編碼及在傳輸之後解碼兩者,所以冗餘傳輸較適用於錯誤校正編碼。由於編碼及解碼消耗時間及處理功率兩者,所以其效率不如冗餘傳輸。歸因於將與請求及接收遺漏封包相關聯之時間及處理成本,冗餘傳輸較適用於遺漏封包之重新傳輸。此外,將資料識別為丟失之時間與可獲得資料之一新複本之時間之間之延遲將為一超長時間。在一些情況中,冗餘傳輸可與重新傳輸一起用於確保饋送中之每一單一封包由市場資料平台140接收。
市場資料平台140透過一現場可程式閘陣列(FPGA)110而接收傳入封包對。FPGA 110經組態以對所接收之封包對執行在線仲裁以確保所傳輸之各封包之至少一複本已被接收。在已處理傳入封包串流之後,FPGA 110使用一直接記憶體存取(DMA)來控制匯流排125以將所接收之封包內之訊息直接寫入至記憶體120且無需與作業系統核心或任何其他軟體互動或介接。一旦已將所接收之訊息寫入至記憶體120,則FPGA 110可經由一中斷而與在市場資料平台140上運行之軟體通信以告知軟體:饋送資訊位於記憶體120中。
在較低延時效能之另一可行實施例中,軟體將連續地輪詢緩衝器以等待新資料。在另一組合實施例中,軟體可經組態以在一可組態之時間段內輪詢,若未接收資料,則其將休眠且等待一中斷以再次開始處理。
除FPGA 110之外,市場資料平台140亦包含計算組件,諸如一或多個處理器115、用於存取一非暫時性電腦可讀儲存媒體135之輸入/輸出控制器130、用於使資料在平台140之部件之間傳輸之一或多個匯
流排125、及一網路介面卡145。該等計算組件經組態以操作包含一軟體作業系統之一軟體計算環境。該軟體作業系統經組態以操作利用已由FPGA 110寫入至記憶體120之饋送資訊之市場平台軟體。一般而言,市場資料軟體140自記憶體120讀取訊息且處理該等訊息。接著,在一實施例中,市場平台140使用網路介面卡(NIC)145來將經處理之資訊輸出至一外部網路160上之顧客。在另一實施例中,由一外部電腦進一步使用經處理之資料,而非將經處理之資訊輸出至該電腦。
圖2係根據一實施例之透過一匯流排125而介接之一市場資料平台140之一FPGA 110及一軟體計算環境150之一功能圖。由FPGA 110自一外部網路資料源105直接接收饋送資訊。在一實施例中,FPGA 110包含至少兩個部分:一使用者FPGA 205及一橋接器FPGA 245。在另一實施例中,將使用者FPGA 205及橋接器FPGA 245整合為一單一FPGA。
由使用者FPGA 205透過一網路介面(諸如乙太網路介面210)而接收包含饋送資料線路A及B兩者之饋送資訊。在其他實施例中,該網路介面可使用除乙太網路之外之另一傳輸協定。就一乙太網路實施方案而言,乙太網路介面210可包括各經組態以自與源105相關聯之一網際網路位址接收饋送線路A/B之一者之諸多不同埠。乙太網路介面輸出所接收之封包。
在一實施例中,乙太網路介面210包含兩個埠(圖中未展示)。儘管兩個埠係可操作的,但一次僅將一個埠連接至下游之完整資料路徑。由FPGA 110外部之市場資料軟體270組態選擇何種埠為可操作的。在另一實施例中,同時連接兩個埠。乙太網路介面210可進一步經組態以過濾所接收之封包。例如,乙太網路介面210可包含用於過濾多播群組之一MAC過濾表。在一實施例中,乙太網路介面210包含一嵌入式GTX收發器及一個三模式乙太網路MAC。
將由乙太網路介面210接收之封包轉送至一封包剖析器215。封包剖析器215經組態以剖析各封包內所含之資訊。封包剖析器215經組態以擷取封包之序號、封包中所包含之訊息、封包中所包含之訊息之數目及封包之控制封包類型。封包剖析器215可將所擷取資訊之部分建構為包含元資料(例如序號、訊息數目及控制封包類型)之一標頭。該標頭亦使處置封包之FPGA 110的隨後部分能夠在無需完全剖析封包本身的情況下作出與封包相關的邏輯決定。封包剖析器215亦可經組態以印上具有自乙太網路介面210接收之時間的時戳資料。可將時戳添加至該標頭作為額外元資料。
封包剖析器215經組態以樣例化針對不同類型之金融資訊而饋送之一或多個剖析器。封包剖析器215經組態以根據控制封包類型而將封包發送至此等剖析器。該等剖析器包含(例如)一在線仲裁機220、一DMA機235。接著,一些剖析器會將資料繼續發送至其他剖析器(諸如一適流金融資訊交換(FAST)解碼器230、一ITCH(非為一縮寫詞)分割器225、一未掛牌交易優先權(UTP)剖析器(圖中未展示)、一選擇權價格申報機構(OPRA)剖析器(圖中未展示)及一商品交易顧問(CTA)剖析器(圖中未展示))及一符號過濾器(圖中未展示)。
若一所接收之封包為一堆疊封包或一旁路封包,則使該封包直接通過直接記憶體存取(DMA)機235,使得其可被儘可能快速地寫入至記憶體120。否則,將該封包發送至在線仲裁機220。
在線仲裁機220經組態以執行在線仲裁以判定是否已接收各資料封包之至少一複本。進入在線仲裁機235之各封包具有基於饋送中所包含之封包之數目而遞增之各連續封包之一序號。在線仲裁機220檢查標頭以查看一特定封包之序號是否唯一。一般而言,若已接收具有各序號之一封包,則可認為已適當接收一封包。若偵測到一重複序號,則已接收該封包之一複本,且可捨棄具有相同序號之重複封包。
對於具有非重複序號之封包,在線仲裁機220判定其中將傳送封包之記憶體120中之實體記憶位置。在線仲裁機220進一步設定一DMA命令類型,且更新由市場資料軟體270讀取之各種計數器以檢查所接收饋送之狀態。接著,在線仲裁機220將封包及DMA命令類型傳達至DMA機235,使得封包可被寫入至記憶體120。可在運行時經由一軟體API(應用程式設計介面)265而組態管理在線仲裁程序(即,封包之序號追蹤)之規則。
在線仲裁機220亦可經組態以檢查指示一給定序號之兩個封包未被接收之序號間隙。若偵測到一間隙,則在一時間段內緩衝一群組之所接收封包以等待具有遺漏序號之封包到達。該等待時期可為一預定或可變逾時時期。若具有遺漏序號之一封包未在該逾時時期內到達,則在線仲裁機可將已發生一間隙事件且來自饋送之一些資料已遺漏之一通知傳輸至市場資料軟體270。
在線仲裁機220亦將封包收集於將在一DMA寫入期間一起寫入之仲裁群組中。當該DMA寫入發生時,該等仲裁群組亦指定將被寫入之該等仲裁群組之該等封包在記憶體120中之位置。將封包收集於仲裁群組中容許DMA操作跳過其中封包將被緩衝及映射至記憶體120之區段之緩衝映射程序。通常,此緩衝及映射程序將發生在使用CPU週期時,所以藉由跳過此程序而改良DMA寫入程序之效率且減少執行DMA寫入所需之資源。
在線仲裁機220可輸出至一符號解碼器(諸如一FAST解碼器230)。儘管已相對於一FAST解碼器230而描述,但實際上可使用任何類型之解碼器。FAST(或適流FIX,其中FIX表示「金融資訊交換」)為經開發以編碼通過一電腦網路而有效率地傳播之金融資訊之一資料壓縮協定。基礎FIX協定為用於實體之間之金融資訊傳輸之一開放工業標準協定。FAST協定經設計以最佳化用於串流環境之FIX協定,其
中在一發送者與一接收者之間相對連續地傳輸金融資訊。傳統上,FIX訊息具有歸因於一訊息描述符(其類似於描述待接收之訊息之內容之一封包標頭)之一相對較高額外負擔。相較於FIX,FAST藉由傳輸與訊息分離之訊息描述符及諸多其他修改而消除額外負擔且改良效率。
對於發送至FAST解碼器230之封包,在線仲裁機220將經處理之封包、該等封包之標頭及DMA命令類型輸出至FAST解碼器230,而非將該等封包輸出至DMA機235。FAST解碼器230處理封包中所含之訊息以將其等解碼為一軟體更適用之格式。此可(例如)包含:將僅含有數個字元之編碼訊息解壓縮為更易於由將自記憶體120讀出該等訊息之市場資料軟體讀取之一更長形式。一旦FAST解碼器230已完成解碼一封包中之訊息,則將該封包傳至DMA機235。
FAST解碼器230可將訊息轉換為FIX訊息,或解碼器230可將訊息轉換為任何其他方便格式。例如,一單一封包中所包含之一壓縮系列之三個訊息可為「|10000|CLIENT1|20060126-13:06:58.100|1200|FOO1|∥|200|10∥ ∥|300|-20|BAR2|」。若將該等訊息轉換為FIX訊息,則該等訊息可在解碼之後呈現為「8=FIX.4.4|34=10000|49=CLIENT1|52=20060126-3:06:58.100|44=1200|55=FOO1|8=FIX.4.4|34=10001|49=CLIENT1|52=20060126-3:06:58.200|44=1210|55=FOO1|8=FIX.4.4|34=10002|49=CLIENT1|52=20060126-3:06:58.300|44=1190|55=BAR2|」。替代地,FAST解碼器230可單獨標記各訊息內之各欄位。例如,對於上述第一訊息,FAST解碼器230可將該第一訊息轉換為諸多單獨欄位或鍵值對(其包含「BeginStr」及「FIX.4.4」、「SeqNum」及「10000」、「Sender ID」及「Client 1」、
「SendingTime」及「20060126-3:06:58.100」、「Price」及「1200」、及「Symbol」及「FOO1」)。
在線仲裁機220可輸出至一符號分割器,諸如一ITCH分割器225。儘管已相對於一ITCH分割器而描述,但可使用任何種類之分割器。類似於FAST及FIX,ITCH為用於將金融資訊之一單一饋送分成多個單獨饋送之一協定。ITCH容許一接收者進行與金融資訊之一顧客指令相關之一查詢,且ITCH將跟蹤一顧客指令之有效期之一系列訊息發送至該接收者。ITCH僅為一外傳市場資料饋送且不支援新顧客指令之輸入(即,產生)。
對於發送至ITCH分割器225之封包,在線仲裁機220將經處理之封包、該等封包之標頭及DMA命令類型輸出至ITCH分割器225,而非將該等封包輸出至DMA機235。ITCH分割器225接收一單一多播饋送且將其分成可轉送至其他/不同程序(例如DMA機235)之諸多子饋送。在其中一單一多播饋送包含比一單一處理器可處置之資料多之資料之例項中,使用一ITCH分割器係有用的。例如,可由多個處理器並行地分割及處理一單一饋送。一旦ITCH分割器225已完成分割一封包中之訊息,則將該封包傳至DMA機235。
DMA機225自封包剖析器215、在線仲裁機220、FAST解碼器230及ITCH分割器225之一或多者接收封包及仲裁群組。DMA機235將仲裁群組及封包發送至橋接器FPGA 245以執行至記憶體120之DMA寫入。橋接器FPGA 245經組態以提供具有用於與記憶體120通信之匯流排125之一介面。在一實施例中,橋接器FPGA 245經組態以包含用於與匯流排125通信之一PCI-Express(PCIe)介面。可由橋接器FPGA 245以諸多方式實施DMA寫入。
在一實施例中,橋接器FPGA 245可使用具有匯流排125之PCIe介面來請求控制匯流排125以寫入至記憶體120。一旦控制得以實現,則
橋接器FPGA 245可對至記憶體120之匯流排125執行寫入命令。在其他實施例中,橋接器FPGA 245可在一叢發模式、一週期挪用模式或一透明模式中與處理器115一起操作以執行DMA寫入。
根據該實施方案,DMA寫入可將資料寫入至記憶體120內之任何數目個不同位置。藉由寫入至記憶體中之一個以上位置,所寫入之資料可存取至在任何給定時間於平台140上運行之一個以上軟體應用程式。
除至記憶體120之DMA寫入之外,橋接器FPGA亦可執行其他功能。橋接器FPGA 245亦經組態以在平台140啟動之後負載使用者FPGA 205。橋接器FPGA 245亦可對使用者FPGA 205及橋接器FPGA 245兩者執行暫存器讀取及寫入。橋接器FPGA 245亦可控制低速介面之一小型可插拔式(SFP)裝置。
獨立於FPGA 110,平台140之剩餘者操作為一習知計算架構,例如一「x86」(例如INTEL)或精簡指令集計算(RISC)架構電腦。平台140使用其組件來實施包含一軟體作業系統255之一軟體計算環境150。該作業系統包含用於透過匯流排125而與平台140之硬體部分之剩餘者介接之一核心250。除該核心之外,作業系統255亦可經組態以實施市場資料軟體270。核心250使一或多個API 265可用於待利用之市場資料軟體270以存取平台140之基礎硬體組件。API 265與一匯流排傳輸驅動器260及其他硬體驅動器(圖中未展示)互動以操作平台140之基礎硬體組件。
市場資料軟體270使用一或多個API 265來控制一匯流排傳輸驅動器260以存取藉由橋接器FPGA 245而儲存金融資料訊息之記憶體120。因此,市場資料軟體270不存取所接收之饋送資訊,直至其已經由DMA而寫入至記憶體120。此外,透過使用FPGA 110及DMA,饋送資訊不會在進入記憶體120之前通過軟體計算環境150之任何部分。
此減少在線仲裁程序之延時,且減少對所接收之饋送資訊執行在線仲裁所需之記憶體及軟體資源之量。在一實施例中,相比於透過一NIC而接收饋送資料、透過一軟體堆疊而將所接收之資料發送至一在線仲裁軟體模組及在已由該軟體模組執行在線仲裁之後寫入至記憶體120,使用FPGA 110來執行至記憶體120之一DMA寫入可實現約50微秒之一延時改良。
可用於市場資料軟體270之API 265之一者可為經組態以監測及控制FPGA 110之一FPGA控制API(圖中未展示)。FPGA 110之各種組件(例如在線仲裁機220及DMA機235)可經組態以形成可用統計且寫入至可由該FPGA控制API存取之記憶體資訊。例如,當接收及處理饋送時,在線仲裁機220可相對連續地更新一或多個計數器。可由該FPGA控制API監測此計數器。該FPGA控制API亦可用於控制使乙太網路介面210預訂何種饋送。
圖3係根據一實例性實施例之使用一FPGA 110來執行在線仲裁之一流程圖。在使用者FPGA 205之一乙太網路介面210處接收一金融資訊饋送之至少兩個線路A及B。封包剖析器215自乙太網路介面210接收封包(305)。使用一單一封包作為一實例,封包剖析器215判定是否仲裁該封包(310)。若該封包未被仲裁,則將該封包標記為一核心堆疊封包(315)。接著,將該封包轉送至一DMA堆疊緩衝器(320)以等待藉由橋接器FPGA 245而寫入至記憶體120之一堆疊緩衝部分。
若封包已被仲裁,則封包剖析器215剖析封包之序號及封包中所包含之訊息之數目(325)。將此資訊與封包一起傳至在線仲裁機220。在線仲裁機220比較封包之序號與其接收之最後封包之序號(330)。在線仲裁機220預期接收具有一序號之一封包,該序號為比其接收之前一封包之序號至少高1之一整數值。
若當前封包之序號小於預期值(335),則封包具有兩種選擇。若
封包之序號與一已接收封包之序號匹配,則封包被標記為前一所見封包(340)且作為前一所接收封包之一非本質重複而被捨棄(345)。然而,若序號與任何先前所接收封包之序號不匹配或替代地與所接收封包之序號中之間隙之一者之序號匹配,則將封包標記為一間隙封包(350)。
若封包之序號等於該封包之序號之預期值,則將封包標記為一正常封包(355)。若封包之序號大於預期值,則將封包標記為一捲軸封包(360)。
間隙封包350、正常封包355及捲軸封包360經處理以判定各封包之一仲裁群組(365)。該仲裁群組容許此等類型之封包在DMA寫入期間繞過緩衝器映射。一旦已判定該仲裁群組,則將封包發送至一DMA旁路緩衝器(圖中未展示),藉此減少寫入之前的延遲。經由一DMA寫入而將封包直接寫入至記憶體120。可在已執行至記憶體120之DMA寫入時,通知市場資料軟體270(圖中未展示)。
圖4A及圖4B繪示具有在已將封包標記為間隙封包(350)、正常封包(355)及捲軸封包(360)之後但在已將封包寫入至記憶體120之前之不同步驟的替代實施例。圖4係根據一實施例之使用一在線仲裁FPGA來將FAST解碼併入至在線仲裁中之一流程圖。在圖4A中,於根據間隙封包、正常封包及捲軸封包來判定一仲裁群組(365)之前,使用FAST解碼來處理各封包(375)。在已完成FAST解碼之後,判定各封包之仲裁群組(365)。接著,將仲裁群組轉送至一DMA旁路緩衝器(圖中未展示)(370)。
圖4B係根據一實施例之使用一在線仲裁FPGA來將符號分割併入至在線仲裁中之一流程圖。在圖4B中,對於已被標記為間隙封包、正常封包或捲軸封包之封包,該等封包經解構以獲得構成封包之訊息。對於封包中之各訊息,擷取構成訊息之符號且將該等符號映射至
旁路緩衝器(385)。接著,將旁路緩衝器轉送至待寫入至記憶體120之一DMA旁路緩衝器(370)。總言之,此具有分割訊息及封包之效應,使得該等訊息及封包被放置於旁路緩衝器的不同部分中,且最終被放置於記憶體120中。
圖5係根據一實施例之經組態以執行記憶體分頁之一市場資料平台140之一方塊圖。市場資料平台140經組態以執行記憶體分頁,使得市場資料平台140能夠快速儲存及存取非常大量之金融指令資料。市場資料平台140包含一頁面管理器510、一主指令管理器530、一第一層(層1)記憶體520及一第二層(層2)記憶體540。在一些實施方案中,市場資料平台可包含額外記憶體層(圖中未展示)。
頁面管理器510自一所接收訊息中之一指令識別符產生一指令高分段。頁面管理器檢索層1記憶體520以識別映射至該指令高分段之一頁面指標。該頁面指標對應於層2記憶體中之一頁面以識別金融指令將被儲存或將被作用之位置。頁面管理器510亦經組態以使用層1記憶體520來管理用於儲存金融指令之層2記憶體540之頁面之打開及關閉。在FPGA 110中實施頁面管理器510。
主指令管理器530經組態以使用由頁面管理器510獲得之頁面指標及指令識別符之一指令低分段來產生一第二層記憶體位址。該第二層記憶體位址指定一金融指令在層2記憶體540中之一頁面內之儲存及存取位置。亦在FPGA 110中實施主指令管理器530。
層1記憶體520儲存指令識別符之指令高分段與與層2記憶體540中之頁面相關聯之頁面指標之間之一組映射。各指令高分段與一單一頁面指標相關聯。各頁面指標係指層2記憶體540中之記憶體之一單一頁面。
層2記憶體540將金融指令儲存於諸多不同頁面中。此等頁面可
(例如)為大體上由FPGA 110維持之虛擬頁面,其中各頁面係具有一起始記憶體位址及一結束記憶體位址之實體記憶體之一連續區塊。層2記憶體540中之各頁面儲存共用相同指令高分段之全部金融指令。在層2記憶體540中之各頁面內,將各個別金融指令定址於具有一第二層記憶體位址之記憶體中,其在下文中進一步加以描述。在一實施例中,層2記憶體540中之各頁面之大小實質上等於共用一單一指令高分段之指令識別符之數目乘以用於儲存各金融指令(其包含該第二層記憶體位址)之記憶體之量。
層1記憶體520之大小相對較小於層2記憶體540之大小。此係因為:與儲存全部金融指令之層2記憶體相比,層1記憶體520僅儲存頁面指標與指令高分段之間之映射。例如,在其中指令識別符為40個位元之一實施方案中,層1記憶體520之大小為約196個千位元組。可使用任何已知技術來快速容易地檢索此大小之一記憶體。在此相同實例中,層2記憶體540之大小為約680億個位元組。在一實施例中,兩個層處之頁面大小為1600萬個位元組。在另一實施例中,頁面大小基於指令識別符之分割方式而在層之間變動。頁面大小經選擇以避免較大之稀疏填充頁面,而是代以使用儘可能完全地儘可能常見地平均填充之頁面。
使用與FPGA 110相關聯之實體記憶體及/或使用市場資料平台140之記憶體120來實施記憶體層520及540。FPGA 110中之實體記憶體及/或記憶體120可包含(例如)隨機存取記憶體(RAM)及某些種類之唯讀記憶體(ROM),諸如電可抹除可程式ROM(EEPROM)及快閃記憶體。若RAM用於實施實體記憶體,則可使用不同種類之RAM,其包含區塊RAM(BRAM)、靜態RAM(SRAM)及動態RAM(DRAM)。實體記憶體可位於具有FPGA 110以及頁面管理器510及主指令管理器530之「晶片上」。此可適用於(例如)BRAM。替代地,實體記憶體可位於「晶片
外」(例如)作為由FPGA 110透過匯流排125而存取之市場資料平台140之記憶體120之部分。
跳至圖7,圖7視覺地繪示使用市場資料平台140之組件之一實例性記憶體分頁。下文中相對於圖7中之說明而進一步描述圖5中所描述之平台140之組件。
頁面管理器510經組態以接收(例如)金融指令之資料訊息。可自外部源(例如自一金融資料饋送)接收該等訊息。在一實施方案中,首先使用上文所描述之FPGA 110之在線仲裁部分來處理所接收之訊息。該等訊息包含金融指令資訊、金融指令之一指令識別符及待相對於金融指令資訊而採取之一動作。
例如,金融指令資訊可指示:一方具有以某一價格銷售之一定量之股票、債券或期權。金融指令資訊亦可包含產生指令之一時間及其他識別資訊。
指令識別符係唯一地識別金融指令之一條資料。平台140使用指令識別符來判定一新金融指令在記憶體中之儲存位置以及定位先前已儲存於記憶體中之一金融指令。各訊息之指令識別符具唯一性。然而,諸多訊息將共用指令識別符之相同分段。市場資料平台140利用指令識別符之分段之間之共通性以促進金融指令之快速儲存及存取。
可由一訊息之來源提供該訊息之指令識別符。替代地,可由平台140將指令識別符指派及添加至該訊息。例如,FPGA 110可依訊息之接收順序將一指令識別符依序指派給各所接收之訊息。
指令識別符之大小判定可由市場資料平台140儲存及存取之金融指令之數量。在一實施方案中,指令識別符之長度為自8個位元至256個位元(含8個位元及256個位元)或8個位元至64個位元(含8個位元及64個位元)之任一值。例如,一40位元指令識別符容許唯一識別地約1萬
億個指令。
可相對於一金融指令而採取之動作包含產生(或添加)待由平台140儲存之一新金融指令、讀取一先前所儲存之金融指令之資料、更新一先前所儲存之金融指令或自儲存刪除一金融指令。總言之,此等不同「類型」之指令動作被稱為CRUD(產生、讀取、更新、刪除)操作。
返回參考分頁管理器510,對於一所接收之訊息,頁面管理器510經組態以存取層1記憶體520以判定與該訊息相關聯之一金融指令在層2記憶體540中或將在層2記憶體540中之儲存位置。為此,頁面管理器510將指令識別符分成一第一識別符分段(或「指令高」分段)及一第二識別符分段(或「指令低」分段)。該指令高分段由諸多其他指令識別符共用。
頁面管理器510檢索層1記憶體520以獲得對應於指令高分段之頁面指標。若頁面管理器510找到對應於指令高分段之一頁面指標,則頁面管理器510將所獲得之頁面指標發送至主指令管理器530以執行訊息中所指定之動作。
然而,在一些例項中,頁面管理器510將無法在層1記憶體520中找到與指令高分段匹配之一頁面指標。當發生此情況時,若訊息中之動作指定訊息含有待儲存之一新金融指令,則頁面管理器510經組態以產生來自層2記憶體540之一未指派頁面及頁面指標與不匹配之指令高分段之間之一新映射。例如,可自一記憶體堆疊獲得該未指派頁面。一未指派頁面、頁面指標及一指令高分段之間之一新映射之產生可稱為一頁面之指派或「打開」。因此,頁面管理器510經組態以控制層2記憶體中之頁面之分配以儲存所接收之金融指令。回應於被打開,新指派頁面能夠填充有亦具有相同指令高分段之金融指令。在打開新頁面之後,頁面管理器510將新頁面指標傳達至主指令管理器
530。
一新頁面將何時打開取決於如何指派指令識別符。在其中隨著訊息到達而依序指派指令識別符之一實例性情況中,大多數訊息將具有與先前訊息相同之指令高分段。因此,其等將具有與先前訊息相同之頁面指標。然而,隨著指令識別符遞增,一些訊息將具有與先前指令高分段不匹配之一新指令高分段。此情況係可能的,因為已由較早到達之金融指令「填充」層2記憶體540之先前頁面。一新頁面之打開在層2記憶體中指派其中可儲存到達之金融指令之一新空間。
主指令管理器530自頁面管理器510接收頁面指標及指令低分段以產生精確地識別金融指令在層2記憶體540之頁面中或將在層2記憶體540之頁面中之儲存位置之一第二層記憶體位址。主指令管理器530藉由將頁面指標與指令低分段組合而產生該第二層記憶體位址。例如,在一實施例中,主指令管理器530將頁面指標及指令低分段聯繫在一起以產生該第二層記憶體位址。
主指令管理器530在由層2記憶體540中之頁面指標指定之頁面處執行第二層記憶體位址處之訊息中所指定之動作。若動作為儲存一新金融指令,則主指令管理器530傳輸待儲存之金融資訊。若動作為更新一既有金融指令,則主指令管理器530傳輸待儲存之更新金融資訊。若動作為讀取所儲存之金融指令,則主指令管理器530自層2記憶體540獲得金融指令資訊。
若動作為刪除一所儲存之金融指令,則主指令管理器530經組態以自層2記憶體540刪除金融指令資訊。此可藉由實體地改變先前對應於金融指令資訊之記憶體540中之位元而完成。替代地,此可藉由改變指示是否根據該特定位址而儲存資料之一標誌位元而完成。
此外,關於金融指令刪除,頁面管理器510亦經組態以維持當前儲存於層2記憶體540之各頁面中之金融指令之數量之一計數。可將各
頁面之有效金融指令之數目與各頁面指標、各頁面指標對應之頁面及對應指令高分段一起儲存於層1記憶體520中。例如,一頁面之有效金融指令之數目可為在每次接收一訊息以將一新金融指令添加至一頁面時遞增之一整數計數器。可在每次接收一訊息以自頁面刪除一金融指令時使該計數器遞減。若與一給定頁面及頁面指標相關聯之該計數器達到零,則頁面管理器510判定對應頁面內未儲存金融指令。當發生此情況時,頁面管理器510經組態以刪除頁面指標與指令高分段之間之映射。此釋放(或「關閉」)待被重新指派給一新指令高分段之頁面及頁面指標。可將關閉頁面添加至含有層2記憶體540之其他未指派頁面之一記憶體堆疊。
若根據金融指令之接收時間而至少大致刪除該等金融指令,則隨著時間進展,頁面被將打開,填充有金融指令,最後使金融指令被清空,且接著「被關閉」以用於重新指派且與新到達之金融指令被一起重新使用。然而,預期偶爾會存在未接收刪除訊息之「孤立」金融指令。若使此等孤立金融指令保持未受檢查,則此等孤立金融指令將保持「打開」或否則清空將在頁面填充有新到達之金融指令時被更佳地利用之該等頁面。
在一實施方案中,平台140進一步經組態以將一或多個孤立頁面保存於層2記憶體540中。頁面管理器510經組態以偶爾執行層1記憶體520之一掃描以識別其中有效金融指令之數目之計數低於一臨限值之頁面指標。若一頁面之計數低於一臨限值,則將該頁面之金融指令移動至一孤立頁面。另外,自層1記憶體520移除該頁面之頁面指標與指令高分段之間之映射,藉此關閉供重新使用之頁面。
在一實施方案中,將孤立頁面儲存於一內容可定址記憶體(CAM)中。在其他種類之記憶體中,一位址及一讀取/寫入命令經提供以在由該位址指定之記憶體中之位置處進行相應地讀取或寫入。相比而
言,就一CAM記憶體而言,提供資料欄位作為輸入,且該CAM恢復其中儲存資料欄位之位址(若存在)。CAM記憶體適合於儲存少量資料,且因此非常適合於儲存總量相對較少於由平台140處理之其餘指令之孤立指令。使用CAM記憶體係改良孤立指令之存取效率之一方式。
隨後,可接收與該等孤立金融指令相關之訊息。頁面管理器510經組態以判定何種所接收之訊息對應於孤立金融指令。例如,頁面管理器510可判定:若一訊息具有更新、刪除或讀取之一動作類型且若指令識別符之指令高分段不對應於層1記憶體520中之任何頁面指標,則一訊息對應於一孤立金融指令。回應於判定該訊息與一孤立金融指令相關,主指令管理器530在其中儲存該金融指令之孤立頁面中之位置處執行該訊息中所指定之動作。
記憶體分頁及分層記憶體結構之使用提高資料之存取及儲存速度。特定言之,與在(例如)軟體中實施記憶體分頁相反,在FPGA 110中實施記憶體分頁進一步提高資料之存取及儲存速度。
對於少量小儲存資料,記憶體分頁無法提供顯著效能增益。然而,市場資料平台140經組態以儲存大量資料,其中需要快速存取資料之任何個別項(例如一金融指令)。在將晶片上BRAM用於層1記憶體且將外部RLDRAM用於層2記憶體之平台140之一實施例中,花費約40奈秒來擷取一給定指令識別符之資料之第一訊框。儘管總記憶體容量將為數十億個位元組,但各個別讀取通常將針對少量資料。例如,ITCH分割僅需要讀取一單一位元組,所以總讀取時間將少於50奈秒。
相比而言,既有資料儲存系統無法在此時間訊框內給至少大致依序遞增之有序識別符提供至大量資料之存取。既有資料儲存系統大體上使用在一計算系統上運行之軟體以提供資料存取及儲存。此等基
於軟體之解決方案可(例如)使用雜湊演算法或樹狀查找演算法以存取所儲存資料之個別項。雜湊演算法及樹狀查找演算法可在提供至所儲存資料之任何給定項之存取所花費之時間量內變動。資訊之一些項將被快速存取,而其他項之存取將花費大量時間。此種慢資料存取效能之可能性使基於軟體之解決方案更不適用於其中需要快速及可靠資料存取之情況。
返回參考圖6,圖6繪示根據一實施例之執行記憶體分頁之一流程圖。頁面管理器510接收含有與一金融指令、一指令識別符及相對於該金融指令所採取之一動作相關之資訊之一訊息(610)。頁面管理器510將該指令識別符分成一第一識別符分段及一第二識別符分段(620)。頁面管理器510存取一第一層記憶體520以識別對應於該第一識別符分段之一頁面指標。
主指令管理器530將頁面指標與第二識別符分段組合以形成一第二層記憶體位址(640)。主指令管理器530將該第二層記憶體位址存取於第二層記憶體540之一頁面中(650)。主指令管理器530執行由該第二層記憶體位址處之訊息指定之動作。
在一實施方案中,市場資料平台140包含三個或三個以上記憶體層。前兩個層之外之任何額外記憶體層之結構及功能類似於上文所描述之層1記憶體520。即,額外記憶體層含有先前記憶體層與隨後記憶體層中之頁面之間之映射。無論當前記憶體層之數目如何,第一記憶體層及最後記憶體層類似於來自上文所描述實施例之第一層記憶體520及第二層記憶體540。
在一實施例中,平台140包含三層記憶體。在此實施例中,並非將指令識別符分成兩個分段,而是將指令識別符分成三個部分:一起
始分段、一中間分段及一結束分段。第一層記憶體520包含指令識別符之起始分段與第三(即,中間)層記憶體中之一頁面指標之間之映射。第三層記憶體中之各頁面含有用於具有指令識別符之相同起始分段之全部金融指令之映射。第三層記憶體之各頁面中之映射係指令識別符之中間分段與第二層記憶體540中之一頁面指標之間之映射。
頁面管理器510使用第一層記憶體520及第三層記憶體來管理在第二層記憶體540中打開或關閉記憶體之何種頁面。主指令管理器530使用第二層記憶體540來執行與所接收之金融指令相關之訊息中所指定之動作。然而,在此情況中,主指令管理器530使用指令識別符之結束分段來產生第二層記憶體位址。
額外記憶體層容許市場資料平台利用可用於市場資料平台140之不同類型之記憶體。例如,在一實施例中,在可用於FPGA 110之三種不同類型之實體記憶體(其包含BRAM、SRAM及DRAM)中實施三個不同記憶體層。第一層記憶體520位於BRAM中。BRAM位於FPGA 110之晶片上,且具有少量延時及低記憶密度。因為第一層記憶體520係記憶體之最頻繁存取部分且大小相對較小,所以其非常適合於利用由BRAM提供之低延時及低密度。
第二層記憶體位於SRAM中。SRAM位於FPGA 110之晶片外,具有一適量延時及一適中記憶密度。因為以相對於第一層記憶體520之一中間量存取第二層記憶體,所以其非常適合於在SRAM中被實施。第三層記憶體540位於DRAM中。DRAM位於FPGA 110之晶片外,具有大量延時及一高記憶密度。因為第二層記憶體540被最不頻繁存取但儲存最多資訊(例如金融指令),所以其非常適合於在DRAM中被實施。使記憶體層與實體記憶體之容量匹配可改良市場資料平台140之效能。在其他實施例中,可在任何種類之實體記憶體中實施記憶體層。
為說明之目的,已呈現實施例之以上描述;其非意欲具窮舉性或將本發明限制於所揭示之精確形式。熟習相關領域者應瞭解:可鑒於以上揭示內容而進行諸多修改及變動。
【實施方式】之一些部分描述與對資訊之操作(例如圖3、圖4a及圖4b中所提及之程序)之演算法及符號表示相關之實施例。資料處理之熟習技術者一般使用此等演算法描述及表示來將其等工作之主旨有效地傳達給其他熟習技術者。儘管已描述此等操作之功能、計算或邏輯,但應瞭解:可由電腦程式、可組態電路硬體(例如FPGA)、專用電路或類似物實施此等操作。此外,亦已證實,將操作之此等配置稱為機器、介面、解碼器、分割器及環境(統稱為功能模組)有時係便利的,且不失一般性。
可如所揭示之功能模組中所描述般執行本文中相對於FPGA 110所描述之步驟、操作或程序之任何者。功能模組可被組合成更少模組或被分成更多功能模組。類似地,一個以上FPGA 110可用於如由FPGA 110所執行般執行所描述之步驟、操作或程序。可用一電腦程式產品(其包括一電腦可讀儲存媒體,該電腦可讀儲存媒體含有電腦程式碼)實施軟體計算環境150,可由用於執行所描述之步驟、操作或程序之任何者或全部之一電腦處理器115執行該電腦程式碼。此外,本說明書中所涉及之平台140可包含一單一處理器115,或可為採用多個處理器設計以增加計算能力之架構。
最後,已主要為可讀性及指導之目的而選擇本說明書中所使用之語言,且無法選擇語言來描繪或限制發明標的。因此,意欲範疇不受限於【實施方式】,而是受限於基於【實施方式】之一申請案上發佈之任何請求項。
105‧‧‧網路資料源
110‧‧‧現場可程式閘陣列(FPGA)
115‧‧‧處理器
120‧‧‧記憶體
125‧‧‧匯流排
130‧‧‧輸入/輸出控制器
135‧‧‧非暫時性電腦可讀儲存媒體
140‧‧‧市場資料平台/市場資料軟體
145‧‧‧網路介面卡(NIC)
160‧‧‧顧客/外部網路
Claims (20)
- 一種用於處理所接收之金融指令之現場可程式閘陣列(FPGA),其包括:一頁面管理器,其經組態以:接收包含一金融指令、一指令識別符及相對於該金融指令所採取之一動作之一訊息,將該指令識別符分成一第一識別符分段及一第二識別符分段,及存取一第一層記憶體以識別對應於該第一識別符分段之一頁面指標;及一主指令管理器,其經組態以:將該頁面指標及該第二識別符分段組合為一第二層記憶體位址,及將一第二層記憶體位址存取於對應於該頁面指標之該第二層記憶體中之一頁面中,以執行相對於該金融指令之該動作。
- 如請求項1之FPGA,其中回應於無法識別對應於該第一識別符分段之該頁面指標,該頁面管理器進一步經組態以:判定該動作為添加待儲存之一新金融指令;及在該第一層記憶體中,使該第一識別符分段與對應於該第二層記憶體中之一未指派頁面之一未指派頁面指標映射。
- 如請求項1之FPGA,其中該頁面管理器進一步經組態以:判定該動作為一刪除動作;判定該頁面指標僅具有一單一有效指令;及自該第一層記憶體移除該頁面指標與該第一識別符分段之間 之一映射,以使該頁面可用於該第二層記憶體之一記憶體堆疊上。
- 如請求項1之FPGA,其中該第一層記憶體包括一計數器以指示該第二層記憶體中之各頁面中之有效指令的數目。
- 如請求項4之FPGA,其中該頁面管理器進一步經組態以:回應於判定該動作為添加待儲存之一新金融指令而使該計數器遞增。
- 如請求項4之FPGA,其中該頁面管理器進一步經組態以:回應於判定該動作為刪除一所儲存之金融指令而使該計數器遞減。
- 如請求項1之FPGA,其中該主指令管理器進一步經組態以:判定該動作為刪除一所儲存之金融指令;及自該第二層記憶體刪除該第二層記憶體位址處之該指令。
- 如請求項1之FPGA,其中該主指令管理器進一步經組態以:判定該動作為添加待儲存之一新金融指令;及將該金融指令儲存於該第二層記憶體之該第二層記憶體位址處。
- 一種用於藉由使用一現場可程式閘陣列(FPGA)來處理所接收之金融指令之方法,其包括:接收包含一金融指令、一指令識別符及一動作之一訊息;將該指令識別符分成一第一識別符分段及一第二識別符分段;存取一第一層記憶體以識別對應於該第一識別符分段之一頁面指標;將該頁面指標及該第二識別符分段組合為一第二層記憶體位址;及 將一第二層記憶體位址存取於對應於該頁面指標之該第二層記憶體中之一頁面中,以執行相對於該金融指令之該動作。
- 如請求項9之方法,其中回應於無法識別對應於該第一識別符分段之該頁面指標:判定該動作為添加待儲存之一新金融指令;及在該第一層記憶體中,使該第一識別符分段與對應於該第二層記憶體中之一未指派頁面之一未指派頁面指標映射。
- 如請求項9之方法,其包括:判定該動作為一刪除動作;判定該頁面指標僅具有一單一有效指令;及自該第一層記憶體移除該頁面指標與該第一識別符分段之間之一映射,以使該頁面可用於該第二層記憶體之一記憶體堆疊上。
- 如請求項9之方法,其包括:對於各頁面指標,判定該頁面指標之有效指令的數目;回應於一給定頁面之有效指令之該數目低於一臨限值,將該頁面指標之該等金融指令自該第二層記憶體移動至一孤立頁面;及自該第一層記憶體移除該給定頁面指標與該第一識別符分段之間之該映射,以使該頁面可用於該記憶體層之一記憶體堆疊上。
- 如請求項9之方法,其中該第一層記憶體包括一計數器以指示該第二層記憶體中之各分頁中之有效指令的數目。
- 如請求項13之方法,其包括:回應於判定該動作為添加待儲存之一新金融指令而使該計數器遞增。
- 如請求項13之方法,其包括:回應於判定該動作為刪除一所儲 存之金融指令而使該計數器遞減。
- 如請求項9之方法,其包括:判定該動作為刪除一所儲存之金融指令;及自該第二層記憶體刪除該第二層記憶體位址處之該指令。
- 如請求項9之方法,其包括:判定該動作為添加待儲存之一新金融指令;及將該金融指令儲存於該第二層記憶體之該第二層記憶體位址處。
- 一種用於處理所接收之金融指令之現場可程式閘陣列(FPGA),其包括:用於接收包含一金融指令、一指令識別符及一動作之一訊息之一構件;用於將該指令識別符分成一第一識別符分段及一第二識別符分段之一構件;用於存取一第一層記憶體以識別對應於該第一識別符分段之一頁面指標之一構件;用於將該頁面指標及該第二識別符分段組合為一第二層記憶體位址之一構件;及用於將一第二層記憶體位址存取於對應於該頁面指標之該第二層記憶體中之一頁面中以執行相對於該金融指令之該動作之一構件。
- 如請求項18之FPGA,其中回應於無法識別對應於該第一識別符分段之該頁面指標,該FPGA進一步包括:用於判定該動作為添加待儲存之一新金融指令之一構件;及用於在該第一層記憶體中使該第一識別符分段與對應於該第二層記憶體中之一未指派頁面之一未指派頁面指標映射之一構 件。
- 如請求項19之FPGA,其包括:用於判定該動作為一刪除動作之一構件;用於判定該頁面指標僅具有一單一有效指令之一構件;及用於自該第一層記憶體移除該頁面指標與該第一識別符分段之間之一映射以使該頁面可用於該第二層記憶體之一記憶體堆疊上之一構件。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/720,267 US8548900B1 (en) | 2012-12-19 | 2012-12-19 | FPGA memory paging |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201430746A true TW201430746A (zh) | 2014-08-01 |
TWI525570B TWI525570B (zh) | 2016-03-11 |
Family
ID=49229958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102147292A TWI525570B (zh) | 2012-12-19 | 2013-12-19 | 用於處理所接收之金融指令之現場可程式閘陣列及其使用方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8548900B1 (zh) |
EP (1) | EP2936418A4 (zh) |
CA (1) | CA2893296C (zh) |
SG (1) | SG11201504267QA (zh) |
TW (1) | TWI525570B (zh) |
WO (1) | WO2014099382A1 (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9674318B2 (en) | 2010-12-09 | 2017-06-06 | Solarflare Communications, Inc. | TCP processing for devices |
GB2512061A (en) * | 2013-03-18 | 2014-09-24 | Rapid Addition Ltd | Transactional message format data conversion |
US9691102B2 (en) | 2013-11-07 | 2017-06-27 | Chicago Mercantile Exchange Inc. | Transactionally deterministic high speed financial exchange having improved, efficiency, communication, customization, performance, access, trading opportunities, credit controls, and fault tolerance |
US11037239B2 (en) | 2013-11-07 | 2021-06-15 | Chicago Mercantile Exchange Inc. | Transactionally deterministic high speed financial exchange having improved, efficiency, communication, customization, performance, access, trading opportunities, credit controls, and fault tolerance |
US20150127509A1 (en) | 2013-11-07 | 2015-05-07 | Chicago Mercantile Exchange Inc. | Transactionally Deterministic High Speed Financial Exchange Having Improved, Efficiency, Communication, Customization, Performance, Access, Trading Opportunities, Credit Controls, and Fault Tolerance |
US10929926B2 (en) | 2013-11-07 | 2021-02-23 | Chicago Mercantile Exchange Inc. | Transactionally deterministic high speed financial exchange having improved, efficiency, communication, customization, performance, access, trading opportunities, credit controls, and fault tolerance |
US10366452B2 (en) | 2013-11-07 | 2019-07-30 | Chicago Mercantile Exchange Inc. | Transactionally deterministic high speed financial exchange having improved, efficiency, communication, customization, performance, access, trading opportunities, credit controls, and fault tolerance |
US10467693B2 (en) | 2013-11-07 | 2019-11-05 | Chicago Mercantile Exchange Inc. | Transactionally deterministic high speed financial exchange having improved, efficiency, communication, customization, performance, access, trading opportunities, credit controls, and fault tolerance |
US10332206B2 (en) | 2013-11-07 | 2019-06-25 | Chicago Mercantile Exchange Inc. | Transactionally deterministic high speed financial exchange having improved, efficiency, communication, customization, performance, access, trading opportunities, credit controls, and fault tolerance |
US10692143B2 (en) | 2013-11-07 | 2020-06-23 | Chicago Mercantile Exchange Inc. | Transactionally deterministic high speed financial exchange having improved, efficiency, communication, customization, performance, access, trading opportunities, credit controls, and fault tolerance |
US10095435B1 (en) | 2015-01-09 | 2018-10-09 | Altera Corporation | Methods for initializing memory devices |
US11164248B2 (en) | 2015-10-12 | 2021-11-02 | Chicago Mercantile Exchange Inc. | Multi-modal trade execution with smart order routing |
US11288739B2 (en) | 2015-10-12 | 2022-03-29 | Chicago Mercantile Exchange Inc. | Central limit order book automatic triangulation system |
US10580100B2 (en) | 2016-06-06 | 2020-03-03 | Chicago Mercantile Exchange Inc. | Data payment and authentication via a shared data structure |
US11514448B1 (en) | 2016-07-11 | 2022-11-29 | Chicago Mercantile Exchange Inc. | Hierarchical consensus protocol framework for implementing electronic transaction processing systems |
US10417217B2 (en) | 2016-08-05 | 2019-09-17 | Chicago Mercantile Exchange Inc. | Systems and methods for blockchain rule synchronization |
US10943297B2 (en) | 2016-08-09 | 2021-03-09 | Chicago Mercantile Exchange Inc. | Systems and methods for coordinating processing of instructions across multiple components |
US10748210B2 (en) | 2016-08-09 | 2020-08-18 | Chicago Mercantile Exchange Inc. | Systems and methods for coordinating processing of scheduled instructions across multiple components |
US11366588B2 (en) * | 2017-07-03 | 2022-06-21 | Intel Corporation | Tier-aware read and write |
US10269073B1 (en) * | 2018-03-29 | 2019-04-23 | Arbitrage Technologies | Systems and methods for interpreting exchange data packets using a lookup table |
CN109408545B (zh) * | 2018-09-30 | 2019-10-25 | 中科驭数(北京)科技有限公司 | 目标聚合操作处理方法和装置 |
TWI761236B (zh) * | 2021-06-17 | 2022-04-11 | 皓德盛科技有限公司 | 交易風控裝置 |
US20240143539A1 (en) * | 2022-10-31 | 2024-05-02 | Mellanox Technologies, Ltd. | Remote direct memory access operations with integrated data arrival indication |
US11785087B1 (en) * | 2022-10-31 | 2023-10-10 | Mellanox Technologies, Ltd. | Remote direct memory access operations with integrated data arrival indication |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6715057B1 (en) * | 2000-08-31 | 2004-03-30 | Hewlett-Packard Development Company, L.P. | Efficient translation lookaside buffer miss processing in computer systems with a large range of page sizes |
US7769950B2 (en) * | 2004-03-24 | 2010-08-03 | Qualcomm Incorporated | Cached memory system and cache controller for embedded digital signal processor |
US7773630B2 (en) * | 2005-11-12 | 2010-08-10 | Liquid Computing Corportation | High performance memory based communications interface |
US7840482B2 (en) * | 2006-06-19 | 2010-11-23 | Exegy Incorporated | Method and system for high speed options pricing |
US7921046B2 (en) * | 2006-06-19 | 2011-04-05 | Exegy Incorporated | High speed processing of financial information using FPGA devices |
US7890299B2 (en) * | 2007-05-21 | 2011-02-15 | Qualcomm, Incorporated | Providing event-controlled continuous logging for a mobile operating environment |
US8095735B2 (en) * | 2008-08-05 | 2012-01-10 | Convey Computer | Memory interleave for heterogeneous computing |
CA2743221C (en) | 2008-11-10 | 2016-08-16 | Zomojo Pty Ltd | Improved automated trading system |
US8341340B2 (en) | 2010-07-21 | 2012-12-25 | Seagate Technology Llc | Multi-tier address mapping in flash memory |
US10037568B2 (en) * | 2010-12-09 | 2018-07-31 | Ip Reservoir, Llc | Method and apparatus for managing orders in financial markets |
-
2012
- 2012-12-19 US US13/720,267 patent/US8548900B1/en active Active
-
2013
- 2013-12-04 WO PCT/US2013/073173 patent/WO2014099382A1/en active Application Filing
- 2013-12-04 EP EP13864430.7A patent/EP2936418A4/en not_active Ceased
- 2013-12-04 CA CA2893296A patent/CA2893296C/en active Active
- 2013-12-04 SG SG11201504267QA patent/SG11201504267QA/en unknown
- 2013-12-19 TW TW102147292A patent/TWI525570B/zh active
Also Published As
Publication number | Publication date |
---|---|
WO2014099382A1 (en) | 2014-06-26 |
SG11201504267QA (en) | 2015-07-30 |
EP2936418A1 (en) | 2015-10-28 |
CA2893296A1 (en) | 2014-06-26 |
TWI525570B (zh) | 2016-03-11 |
US8548900B1 (en) | 2013-10-01 |
CA2893296C (en) | 2017-08-29 |
EP2936418A4 (en) | 2016-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI525570B (zh) | 用於處理所接收之金融指令之現場可程式閘陣列及其使用方法 | |
US20220414778A1 (en) | Intelligent Packet Switch | |
US10963962B2 (en) | Offload processing of data packets containing financial market data | |
US11374777B2 (en) | Feed processing | |
US20180276271A1 (en) | Intelligent Feed Switch | |
JP5871619B2 (ja) | 金融市場深度データの高速処理のための方法および装置 | |
US10650452B2 (en) | Offload processing of data packets | |
US11025564B2 (en) | RDMA transport with hardware integration and out of order placement | |
CN1593041B (zh) | 具有多个首部的包的解封装和封装的方法、装置和计算机程序 | |
US7219121B2 (en) | Symmetrical multiprocessing in multiprocessor systems | |
US11068412B2 (en) | RDMA transport with hardware integration | |
EP2832045A1 (en) | Offload processing of data packets | |
US10592418B2 (en) | Cache sharing in virtual clusters | |
CN103124962B (zh) | 优化环协议和技术 | |
US20230316399A1 (en) | Electronic Trading System and Method based on Point-to-Point Mesh Architecture | |
US11159656B2 (en) | Methods and devices for generating a plurality of data packets | |
US8122221B2 (en) | Method and apparatus to combine scattered buffer addresses into a contiguous virtual address space | |
TWI841060B (zh) | 快速查找裝置及交易風控裝置 | |
US20240193090A1 (en) | Cache structure for high performance hardware based processor | |
US11924092B1 (en) | Systems and methods of routing data transaction messages for distributed systems | |
US20240104045A1 (en) | System and method for ghost bridging |