柳峰 盛立金融軟件 2016-08-04盛立金融作為金融領(lǐng)域FPGA技術(shù)的領(lǐng)頭企業(yè),是首家實(shí)現(xiàn)FPGA技術(shù)在證券、期貨市場應(yīng)用的機(jī)構(gòu),也是唯一一家實(shí)現(xiàn)多個(gè)產(chǎn)品在實(shí)際生產(chǎn)環(huán)境長期運(yùn)行的企業(yè)。在金融領(lǐng)域方面,F(xiàn)PGA能夠?qū)崿F(xiàn)什么現(xiàn)有CPU技術(shù)做不到的東西? CPU, FPGA和另外經(jīng)常被提到的GPU又到底有什么區(qū)別? 盛立金融作為金融領(lǐng)域FPGA技術(shù)的領(lǐng)頭企業(yè),是首家實(shí)現(xiàn)FPGA技術(shù)在證券、期貨市場應(yīng)用的機(jī)構(gòu),也是唯一一家實(shí)現(xiàn)多個(gè)產(chǎn)品在實(shí)際生產(chǎn)環(huán)境長期運(yùn)行的企業(yè)。在金融領(lǐng)域方面,F(xiàn)PGA能夠?qū)崿F(xiàn)什么現(xiàn)有CPU技術(shù)做不到的東西? CPU, FPGA和另外經(jīng)常被提到的GPU又到底有什么區(qū)別?
CPU: CPU是通用處理器,被設(shè)計(jì)為可以用于任何應(yīng)用。通常來講,一個(gè)CPU核每一個(gè)時(shí)鐘周期只能處理一個(gè)指令,并且指令是按順序執(zhí)行的(sequential processing)。雖然最新的CPU也能支持較大數(shù)量的核,更大的高速緩存(cache),并且新的架構(gòu)能更好的支持流水線(pipelining),動(dòng)態(tài)調(diào)度(dynamic scheduling)等,然而并行運(yùn)算會(huì)造成大量CPU核之間的通信,高速緩存的管理會(huì)十分復(fù)雜。特別是對于網(wǎng)絡(luò)數(shù)據(jù)的收發(fā),由于應(yīng)用程序需要依賴操作系統(tǒng)內(nèi)核來處理網(wǎng)絡(luò)協(xié)議,內(nèi)核會(huì)產(chǎn)生大量的中斷,進(jìn)程調(diào)度,以及上下文切換(context switch),這些都會(huì)引入延遲。并且網(wǎng)絡(luò)數(shù)據(jù)量大的時(shí)候,CPU資源將被網(wǎng)絡(luò)協(xié)議處理大量占用。用FPGA處理網(wǎng)絡(luò)數(shù)據(jù)收發(fā)就不需要依賴操作系統(tǒng)內(nèi)核,而是在FPGA內(nèi)部完成網(wǎng)絡(luò)協(xié)議解析,直接將應(yīng)用層數(shù)據(jù)發(fā)給應(yīng)用程序。 對于計(jì)算機(jī)算法而言,用CPU處理需要將算法分為按順序執(zhí)行的一系列操作,所以雖然CPU主頻很高,但對于某些算法,性能仍然不如GPU和FPGA。
FPGA: FPGA由于其可編程特性,可以被用于實(shí)現(xiàn)任意的邏輯功能,F(xiàn)PGA的每一個(gè)時(shí)鐘周期可以并行處理多個(gè)指令。由于FPGA可以被設(shè)計(jì)為專門處理某個(gè)(或某些)算法,所以即使其支持的時(shí)鐘頻率低于CPU,但單個(gè)時(shí)鐘周期可以完成的運(yùn)算可以遠(yuǎn)大于一個(gè)CPU指令可以完成的運(yùn)算量,甚至整個(gè)算法都可能在幾個(gè)時(shí)鐘周期之內(nèi)完成,所以完成整個(gè)算法FPGA所需的時(shí)鐘周期數(shù)可以遠(yuǎn)低于CPU。不僅如此,F(xiàn)PGA的時(shí)鐘頻率還在不斷提高,目前為止還依舊遵循摩爾定律,而CPU時(shí)鐘頻率已經(jīng)不再按照摩爾定律提升了。除此之外,F(xiàn)PGA的并行處理特性使得大量的邏輯處理單元(算法單元)可以并行存在于FPGA內(nèi)部。在需要處理大量數(shù)據(jù)的情況下,這些數(shù)據(jù)可以并行的分配給這些處理單元,從而獲得比CPU更高的處理吞吐量。FPGA還有一個(gè)特性就是其相對CPU獨(dú)立,不像GPU需要依賴CPU。對于某些特定的應(yīng)用,比如程序化交易,F(xiàn)PGA可以完成網(wǎng)絡(luò)協(xié)議處理、交易算法邏輯,從而避免與CPU和操作系統(tǒng)的通信,從而獲得極低的延遲和極高的可靠性和確定性。 (盛立FPGA交易柜臺(tái))
GPU: GPU的特點(diǎn)是有大量的核(多達(dá)幾千個(gè)核)和大量的高速內(nèi)存,最初被設(shè)計(jì)用于游戲、計(jì)算機(jī)圖像處理等。GPU主要擅長做類似圖像處理的并行運(yùn)算,所謂的“粗粒度并行(coarse-grain parallelism)”。這個(gè)對于圖像處理很適用,因?yàn)橄袼嘏c像素之間相對獨(dú)立,GPU提供大量的核,可以同時(shí)對很多像素進(jìn)行并行處理。但這并不能帶來延遲的提升(而僅僅是處理吞吐量的提升)。比如,當(dāng)一個(gè)消息到達(dá)時(shí),雖然GPU有很多的核,但只能有其中一個(gè)核被用來處理當(dāng)前這個(gè)消息,而且GPU核通常被設(shè)計(jì)為支持與圖像處理相關(guān)的運(yùn)算,不如CPU通用。GPU主要適用于在數(shù)據(jù)層呈現(xiàn)很高的并行特性(data-parallelism)的應(yīng)用,比如GPU比較適合用于類似蒙特卡羅模擬(Monte Carlo simulations)這樣的并行運(yùn)算。GPU的另外一個(gè)問題,是它的“確定性(determinism)”不如FPGA,相對較容易產(chǎn)生計(jì)算錯(cuò)誤(這個(gè)是由GPU結(jié)構(gòu)決定的)。
總論 CPU,F(xiàn)PGA和GPU 因?yàn)樵O(shè)計(jì)結(jié)構(gòu)的不同,有各自適合的應(yīng)用場景。簡而言之,在金融證券行業(yè),CPU適用于對速度和性能要求不是特別高的應(yīng)用,尤其是開發(fā)周期要求較快的應(yīng)用。FPGA更適用于性能以及性能確定性要求高的應(yīng)用。GPU 主要用于計(jì)算量大而且可以并行處理的應(yīng)用。
|