Fast協(xié)議的并行解碼系統(tǒng)及其實(shí)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及FAST協(xié)議的解碼系統(tǒng)及其實(shí)現(xiàn)方法,特別是涉及一種基于FPGA的FAST協(xié)議(金融壓縮協(xié)議)的并行解碼系統(tǒng)及其實(shí)現(xiàn)方法。
【背景技術(shù)】
[0002]近年來,隨著國內(nèi)外資本市場(chǎng)的快速發(fā)展,資本流動(dòng)性增強(qiáng),金融交易方式日益多樣化。作為一種新興的交易方式,高頻交易(High-frequency Trading,HFT)正日益受到金融證券行業(yè)從業(yè)人員的高度關(guān)注。
[0003]高頻交易是一種應(yīng)用在金融上的主要算法交易模式。準(zhǔn)確來說,高頻交易使用了復(fù)雜的技術(shù)工具和計(jì)算機(jī)算法快速的交易證券,比如用專有的交易策略,通過電腦在秒一級(jí)甚至微秒級(jí)進(jìn)行買入或者賣出。
[0004]高頻交易的單筆利潤一般很低,但是通過密集的交易,仍能保證穩(wěn)定的收益。高頻交易公司通常利用強(qiáng)大的電腦程序進(jìn)行快速交易,持股人的持股時(shí)間經(jīng)常不到一秒。與技術(shù)相對(duì)落后的投資人相比,此類公司依靠IT技術(shù)優(yōu)勢(shì)獲得時(shí)間優(yōu)勢(shì)先行下單?,F(xiàn)有的高頻交易基金通常下單速度已經(jīng)達(dá)到微秒級(jí)別,個(gè)別基金甚至已經(jīng)達(dá)到納秒級(jí)別。高頻交易的消息傳輸帶寬、延遲等方面的問題已經(jīng)成為制約投資人獲利的主要瓶頸。因此,以微秒甚至納秒來計(jì)算證券交易延遲的“低延遲證券交易系統(tǒng)”正逐漸成為金融信息技術(shù)領(lǐng)域研宄的熱點(diǎn)問題。
[0005]根據(jù)金融證券行業(yè)高頻交易系統(tǒng)處理的環(huán)節(jié),交易延遲一般可以分為:網(wǎng)絡(luò)傳輸延遲、網(wǎng)卡處理與中斷延遲、進(jìn)程切換和CPU處理延遲。交易延遲的影響因素涵蓋了網(wǎng)絡(luò)、CPU、存儲(chǔ)器、網(wǎng)絡(luò)接口性能等計(jì)算機(jī)硬件相關(guān)的因素,以及操作系統(tǒng)、中間件(主要為消息中間件)、應(yīng)用軟件等軟件相關(guān)的因素。這些因素在不同層次上對(duì)高頻證券交易延遲造成影響。
【發(fā)明內(nèi)容】
[0006]為克服上述現(xiàn)有技術(shù)存在的不足,本發(fā)明之目的在于提供一種FAST協(xié)議的并行解碼系統(tǒng)及其實(shí)現(xiàn)方法,其可以并行分隔字段以適應(yīng)萬兆以太網(wǎng),可以將FAST模板信息存儲(chǔ)在命令模塊中使得系統(tǒng)更加靈活的適應(yīng)模板的更換,可以并行的解碼使得解碼延遲更低。
[0007]為達(dá)上述及其它目的,本發(fā)明提出一種FAST協(xié)議的并行解碼系統(tǒng),至少包括:
[0008]掩碼模塊,接收數(shù)據(jù)輸入,從輸入的數(shù)據(jù)中提取若干最高位作為停止位標(biāo)志以控制該掩碼模塊的輸出,該掩碼模塊根據(jù)該若干位停止位,對(duì)輸入的數(shù)據(jù)進(jìn)行字段分隔;
[0009]命令模塊,接收并存儲(chǔ)從該掩碼模塊中分割后的字段,然后使用狀態(tài)機(jī)控制,把輸入字段與FAST模板信息進(jìn)行并行匹配;
[0010]解碼模塊,利用四個(gè)并行的解碼單元并行負(fù)責(zé)命令模塊傳遞的字段的解碼,每個(gè)單元負(fù)責(zé)一個(gè)字段的解碼。
[0011]進(jìn)一步地,該掩碼模塊從64位的輸入中提取8個(gè)最高位,作為停止位標(biāo)志,并根據(jù)該8位停止位,在一個(gè)周期內(nèi)分隔8字節(jié)數(shù)據(jù)。
[0012]進(jìn)一步地,該掩碼模塊存儲(chǔ)每一個(gè)周期沒有分隔的剩下的字節(jié),與下一個(gè)周期的輸入拼接在一起,進(jìn)行下一個(gè)周期的字段分隔。
[0013]進(jìn)一步地,該命令模塊通過設(shè)置一個(gè)FIFO以存儲(chǔ)從該掩碼模塊接收到的信息,該FIFO的寫指針每次增加接收的字段個(gè)數(shù),通過命令存儲(chǔ)器存儲(chǔ)著FAST模板中的信息,通過狀態(tài)機(jī)控制,把輸入字段與FAST模板信息進(jìn)行并行匹配。
[0014]進(jìn)一步地,該該命令模塊將第一個(gè)狀態(tài)提取輸入中的一個(gè)字段作為存在位圖,然后根據(jù)參數(shù)化后的模板信息,判斷一個(gè)模板中的字段需不需要存在位圖和輸入字段,將該些內(nèi)容并行的匹配后,傳遞給該解碼模塊。
[0015]進(jìn)一步地,每個(gè)解碼單元通過重組器去除接收到的數(shù)據(jù)的停止位,將數(shù)據(jù)重組,利用解碼器將重組后的數(shù)據(jù)與之前存儲(chǔ)的解碼值作為源操作數(shù),對(duì)源操作數(shù)進(jìn)行操作符的解碼,解碼的方法受該命令模塊傳遞過來的信號(hào)控制,解碼完成后存儲(chǔ)新的解碼值,作為下一次解碼的源操作數(shù)。
[0016]為達(dá)到上述目的,本發(fā)明提供一種FAST協(xié)議的并行解碼的實(shí)現(xiàn)方法,包括如下步驟:
[0017]步驟一,利用掩碼模塊接收數(shù)據(jù)輸入,從輸入的數(shù)據(jù)中提取若干最高位作為停止位標(biāo)志以控制掩碼模塊的輸出,掩碼模塊根據(jù)停止位,對(duì)輸入數(shù)據(jù)進(jìn)行字段分隔;
[0018]步驟二,命令模塊存儲(chǔ)從掩碼模塊中分割后的字段,然后使用狀態(tài)機(jī)控制把輸入字段與FAST模板信息進(jìn)行并行匹配;
[0019]步驟三,利用四個(gè)并行的解碼單元并行負(fù)責(zé)命令模塊傳遞的字段的解碼,每個(gè)單元負(fù)責(zé)一個(gè)字段的解碼。
[0020]進(jìn)一步地,步驟一中,掩碼模塊從64位的輸入中提取8個(gè)最高位作為停止位標(biāo)志,并根據(jù)8位停止位,在一個(gè)周期內(nèi)分隔8字節(jié)數(shù)據(jù)。
[0021]進(jìn)一步地,步驟二中,命令模塊利用FIFO存儲(chǔ)從掩碼模塊中分割后的字段;利用狀態(tài)機(jī)控制工作內(nèi)容,在第一個(gè)狀態(tài)提取輸入中的一個(gè)字段作為存在位圖;然后根據(jù)參數(shù)化后的模板信息,判斷一個(gè)模板中的字段需不需要存在位圖和輸入字段。將該些內(nèi)容并行的匹配后,傳遞給下一個(gè)模塊。
[0022]進(jìn)一步地,于步驟三中,每個(gè)解碼單元通過重組器去除接收到的數(shù)據(jù)的停止位,將數(shù)據(jù)重組,利用解碼器將重組后的數(shù)據(jù)與之前存儲(chǔ)的解碼值作為源操作數(shù),對(duì)源操作數(shù)進(jìn)行操作符的解碼,解碼的方法受該命令模塊傳遞過來的信號(hào)控制,解碼完成后存儲(chǔ)新的解碼值,作為下一次解碼的源操作數(shù)。
[0023]與現(xiàn)有技術(shù)相比,本發(fā)明一種FAST協(xié)議的并行解碼系統(tǒng)及其實(shí)現(xiàn)方法通過并行的分隔字段與解碼,可以有效提高系統(tǒng)的解碼速度,同時(shí),本發(fā)明通過存儲(chǔ)參數(shù)化的模板信息,可以降低更換模板的開銷。
【附圖說明】
[0024]圖1為本發(fā)明一種FAST協(xié)議的并行解碼系統(tǒng)的系統(tǒng)架構(gòu)圖;
[0025]圖2為本發(fā)明一種FAST協(xié)議的并行解碼的實(shí)現(xiàn)方法的步驟流程圖。
【具體實(shí)施方式】
[0026]以下通過特定的具體實(shí)例并結(jié)合【附圖說明】本發(fā)明的實(shí)施方式,本領(lǐng)域技術(shù)人員可由本說明書所揭示的內(nèi)容輕易地了解本發(fā)明的其它優(yōu)點(diǎn)與功效。本發(fā)明亦可通過其它不同的具體實(shí)例加以施行或應(yīng)用,本說明書中的各項(xiàng)細(xì)節(jié)亦可基于不同觀點(diǎn)與應(yīng)用,在不背離本發(fā)明的精神下進(jìn)行各種修飾與變更。
[0027]圖1為本發(fā)明一種FAST協(xié)議的并行解碼系統(tǒng)的系統(tǒng)架構(gòu)圖。如圖1所示,本發(fā)明一種FAST協(xié)議的并行解碼系統(tǒng),在具體實(shí)施例中基于FPGA實(shí)現(xiàn),其至少包括:掩碼模塊10、命令模塊20和解碼模塊30。
[0028]掩碼模塊10是系統(tǒng)的第一個(gè)模塊,接收數(shù)據(jù)輸入,位寬是64位,掩碼模塊10從64位的輸入中提取8個(gè)最高位,作為停止位標(biāo)志。這8位停止位將控制掩碼模塊的輸出。
[0029]掩碼模塊10根據(jù)8位停止位,在一個(gè)周期內(nèi)分隔8字節(jié)數(shù)據(jù)。由于一個(gè)完整的字段有可能在不同的周期內(nèi)傳送,掩碼模塊10會(huì)存儲(chǔ)每一個(gè)周期沒有分隔的剩下的字節(jié),與下一個(gè)周期的輸入拼接在一起,進(jìn)行下一個(gè)周期的字段分隔。在本發(fā)明較佳實(shí)施例中,掩碼模塊10根據(jù)8位停止位通過環(huán)形寄存器與加法器實(shí)現(xiàn)分割字段,其中,加法器將8位停止位相加,其結(jié)果是這個(gè)周期內(nèi)輸入的完整字段的數(shù)量,例如,當(dāng)輸入的8個(gè)字節(jié)的最高位分別是10110101時(shí),加法器將這幾個(gè)數(shù)字相加,得到5,這即是這個(gè)周期內(nèi)輸入的字段個(gè)數(shù)。
[0030]命令模塊20實(shí)現(xiàn)三個(gè)功能:第一是存儲(chǔ)掩碼模塊中分割后的字段;第二是在這個(gè)模塊中存儲(chǔ)著需要解碼的模板信息;第三是把輸入字段與模板信息進(jìn)行匹配。
[0031]命令模塊20中設(shè)置了一個(gè)FIFO (First Input First Output,先進(jìn)先出),存儲(chǔ)從掩碼模塊10接收到的信息。從掩碼模塊10傳遞過來的字段個(gè)數(shù)是不固定的,最少一個(gè),最多八個(gè)。FIFO的寫指針每次增加接收的字段個(gè)數(shù)。
[0032]命令模塊20中的命令存儲(chǔ)器存儲(chǔ)著FAST模板中的信息。FAST模板中關(guān)于字段的信息包括:操作符,操作符對(duì)存在位圖的需要,操作符對(duì)輸入字段的需要和字段格式,被數(shù)字化并存儲(chǔ)在命令模塊的命令存儲(chǔ)器中。
[0033]命令模塊20使用狀態(tài)機(jī)控制工作內(nèi)容。在第一個(gè)狀態(tài)提取輸入中的