張晉榮 劉靖宇
?
基于FPGA的可重構(gòu)加速體系結(jié)構(gòu)的應(yīng)用分析
張晉榮 劉靖宇
河北工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與軟件學(xué)院,天津 300401
隨著大數(shù)據(jù)、人工智能時(shí)代的到來(lái),傳統(tǒng)計(jì)算機(jī)架構(gòu)已然無(wú)法滿足計(jì)算密集型和數(shù)據(jù)密集型的運(yùn)算。FPGA是一種無(wú)指令、無(wú)共享內(nèi)存的體系結(jié)構(gòu),其內(nèi)部包含大量的可編程的配置重構(gòu)電路,可快速實(shí)現(xiàn)相關(guān)加速算法。采用FPGA進(jìn)行相關(guān)加速體系結(jié)構(gòu)的構(gòu)建,可滿足日益增長(zhǎng)的數(shù)據(jù)處理需求。因此,介紹了FPGA的特點(diǎn)并對(duì)其在各個(gè)領(lǐng)域中的應(yīng)用進(jìn)行分析。
FPGA;可重構(gòu)計(jì)算;算法加速
隨著機(jī)器學(xué)習(xí)、人工智能等大數(shù)據(jù)應(yīng)用的興起,數(shù)據(jù)密集型的高性能計(jì)算越來(lái)越受到人們的關(guān)注。傳統(tǒng)的CPU架構(gòu)難以滿足爆炸式數(shù)據(jù)的處理需求。FPGA(Field-Programmable Gate Array)本質(zhì)上是一種無(wú)指令、無(wú)共享內(nèi)存的體系結(jié)構(gòu),能通過(guò)配置內(nèi)部資源,快速組成相應(yīng)的可重構(gòu)硬件,優(yōu)化系統(tǒng)性能。因此,基于FPGA的加速算法研究和加速體系結(jié)構(gòu)研究已經(jīng)成為工業(yè)界和學(xué)術(shù)界的熱點(diǎn)。
FPGA是在CPLD等可編程邏輯器件的基礎(chǔ)上進(jìn)一步發(fā)展起來(lái)的產(chǎn)物。在數(shù)字電路中對(duì)于一個(gè)n輸入的邏輯單元單元來(lái)說(shuō),不管經(jīng)過(guò)怎樣的運(yùn)算,最多只有2n種結(jié)果。所以如果事先將結(jié)果存入一個(gè)存儲(chǔ)單元(查找表)中,通過(guò)輸入的內(nèi)容在存儲(chǔ)區(qū)域查找對(duì)應(yīng)的輸出內(nèi)容即可實(shí)現(xiàn)與非門電路功能。FPGA的原理也是如此,可以通過(guò)修改存儲(chǔ)單元的內(nèi)容將FPGA配置成不同的硬件。FPGA芯片主要由6部分組成:可編程IO單元、可編程邏輯單元、全局時(shí)鐘管理、嵌入式RAM、布線資源以及內(nèi)嵌的底層功能和專用硬件模塊。
2011年,微軟公司啟動(dòng)了CataPult項(xiàng)目,利用FPGA在AI的相關(guān)服務(wù)上提供算法優(yōu)化。此項(xiàng)目大致經(jīng)過(guò)了三個(gè)階段:第一個(gè)部署階段中,微軟采用給每個(gè)超級(jí)計(jì)算機(jī)插入多個(gè)FPGA卡,但這一方法造成了FPGA之間難以通行,傳輸延遲較大等問(wèn)題。第二個(gè)部署階段中,為了保證數(shù)據(jù)傳輸穩(wěn)定,不和PC機(jī)產(chǎn)生沖突,在每臺(tái)計(jì)算機(jī)中只插入一塊FPGA板卡,并在FPGA間使用專用的網(wǎng)線連接。通過(guò)這種方式,微軟加速了Bing的搜索。第三個(gè)部署階段中,微軟把FPGA部署在網(wǎng)卡和交換機(jī)中間,將硬件變成一種云計(jì)算服務(wù)平臺(tái),這極大地刺激了各個(gè)科技公司對(duì)FPGA的關(guān)注,推動(dòng)了FPGA的應(yīng)用。
2017年1月,騰訊公司推出了高性能異構(gòu)計(jì)算基礎(chǔ)設(shè)施——FPGA云服務(wù),解決了由于移動(dòng)互聯(lián)網(wǎng)快速增長(zhǎng)帶來(lái)的社交軟件的圖像處理問(wèn)題。與此同時(shí),阿里巴巴發(fā)布了FPGA云方案,隨后百度在卷積神經(jīng)網(wǎng)絡(luò)、圖像分類、解密加速等研究領(lǐng)域中發(fā)布了相關(guān)的FPGA平臺(tái)。中國(guó)科學(xué)技術(shù)大學(xué)的研究人員提出了單FPGA上面向服務(wù)的異構(gòu)多核可重構(gòu)片上計(jì)算系統(tǒng)——SOMP。此架構(gòu)一方面集成了各種不同類型的硬件資源,充分利用了MPSOC的優(yōu)勢(shì),實(shí)現(xiàn)了較高的計(jì)算性能;另一方面,調(diào)整了軟硬件任務(wù)劃分和策略,提高了吞吐率和任務(wù)的并行執(zhí)行,方便上層開(kāi)發(fā)者使用硬件資源[1]。
在操作系統(tǒng)方面為底層的可重構(gòu)硬件邏輯提供了通用的編程接口和編程模型,方便上層應(yīng)用軟件開(kāi)發(fā)人員使用。David Andrews等人針對(duì)可重構(gòu)系統(tǒng)提供了統(tǒng)一的多線程模型Hthread,將運(yùn)行在通用處理器上的線程定義為軟件線程,將運(yùn)行在可重構(gòu)資源上的線程定義為硬件線程,通過(guò)操作系統(tǒng)對(duì)軟硬件線程進(jìn)行集中管理,屏蔽了軟硬件之間使用的差異性。FPMR提出了MapReduce框架,將任務(wù)管理、通信和同步等功能進(jìn)行封裝,方便使用者使用硬件資源,此框架對(duì)部分應(yīng)用(RankBoost、SVM、PageRank等算法)有較好的加速效果[2]。
2.3.1 神經(jīng)網(wǎng)絡(luò)加速算法
神經(jīng)網(wǎng)絡(luò)在近年來(lái)的大數(shù)據(jù)應(yīng)用中已經(jīng)成為一個(gè)研究熱點(diǎn)。由于對(duì)計(jì)算時(shí)間的要求不斷提高,國(guó)內(nèi)外學(xué)者越來(lái)越熱衷于實(shí)現(xiàn)用于神經(jīng)網(wǎng)絡(luò)的加速器。ESE提出了稀疏LSTM高效語(yǔ)言識(shí)別引擎,在硬件上實(shí)現(xiàn)了深度學(xué)習(xí)算法。Nurvitadhi研究了循環(huán)神經(jīng)網(wǎng)絡(luò)變體,提出并設(shè)計(jì)了根據(jù)高層次神經(jīng)網(wǎng)絡(luò)模型可自動(dòng)生成可綜合的FPGA加速器的框架DNNWeaver[3]。Escher提出了一個(gè)基于FPGA的CNN加速器——Escher,為其配備了一個(gè)靈活的數(shù)據(jù)緩沖區(qū),實(shí)現(xiàn)了輸入內(nèi)容和權(quán)值轉(zhuǎn)換之間的帶寬平衡,有效降低系統(tǒng)總體帶寬的需求。ISAAC提出了一種針對(duì)卷積神經(jīng)網(wǎng)絡(luò)的加速器,采用eDRAM來(lái)作為流水?dāng)?shù)據(jù)跨時(shí)鐘域的寄存器,以此實(shí)現(xiàn)基于運(yùn)算流水線的神經(jīng)網(wǎng)絡(luò)加速運(yùn)算。
2.3.2 生物信息加速算法
伊利諾伊大學(xué)厄巴納-香檳分校的科研成員使用成對(duì)的HMM算法實(shí)現(xiàn)DNA變異識(shí)別的加速器。在Pair-HMM中有插入、匹配、刪除三種狀態(tài)。南卡羅來(lái)納大學(xué)的研究人員通過(guò)改變NCBI BLAST算法并用FPGA實(shí)現(xiàn),研究人員把使用的數(shù)據(jù)庫(kù)轉(zhuǎn)化為三層表組成的算法實(shí)現(xiàn)索引,其中前兩層數(shù)據(jù)存儲(chǔ)在FPGA中,最后一層數(shù)據(jù)存儲(chǔ)在外存儲(chǔ)器中,此方法大大減少了IO請(qǐng)求次數(shù)[4]。加州大學(xué)的開(kāi)發(fā)人員使用FPGA實(shí)現(xiàn)基因片段中的硬件查詢階段的加速器。在查詢階段主要的問(wèn)題是:第一,如何處理大量短序列匹配;第二,如何消除頻繁訪存。研究人員通過(guò)多個(gè)PE組成的體系結(jié)構(gòu)實(shí)現(xiàn)該加速器。
2.3.3 數(shù)據(jù)庫(kù)算法加速算法
傳統(tǒng)數(shù)據(jù)庫(kù)在處理復(fù)雜操作時(shí)效率低下,因此Rene Mueller等在2010年指出可以將FPGA運(yùn)用在數(shù)據(jù)庫(kù)中,加速數(shù)據(jù)庫(kù)的查找、增刪等操作。哈希操作在數(shù)據(jù)庫(kù)應(yīng)用中是一個(gè)很頻繁的操作,利用FPGA加速哈希操作可以實(shí)現(xiàn)整個(gè)哈希系統(tǒng)。這一技術(shù)已經(jīng)在網(wǎng)絡(luò)中得到廣泛使用。Muhsen Owaida等人提出了Centaur算法,把FPGA加速器表示成一個(gè)硬件線程集成到數(shù)據(jù)庫(kù)引擎中,實(shí)現(xiàn)FPGA的靈活體系結(jié)構(gòu),允許數(shù)據(jù)庫(kù)可以混合并行執(zhí)行[5]。
隨著人工智能、大數(shù)據(jù)的發(fā)展,數(shù)據(jù)密集型和計(jì)算密集型的應(yīng)用給傳統(tǒng)計(jì)算機(jī)帶來(lái)巨大的負(fù)擔(dān),人們將更多的注意力轉(zhuǎn)移到計(jì)算機(jī)體系結(jié)構(gòu)的研究,以尋求相應(yīng)的突破。FPGA在加速特定算法、操作系統(tǒng)資源調(diào)度等方面有較大的應(yīng)用前景,也為其硬件資源的使用者提供了方便的接口。
[1]馮曉靜.面向服務(wù)的異構(gòu)多核片上系統(tǒng)的關(guān)鍵技術(shù)研究及實(shí)現(xiàn)[D].北京:中國(guó)科學(xué)技術(shù)大學(xué),2013.
[2]Shan Y,et al. FPMR:MapReduce framework on FPGA[C]// the 18th annual ACM/SIGDA international symposium on Field programmable gate arrays,2010.
[3]Sharma H,et al. From high-level deep neural models to FPGAs[C]// Microarchitecture(MICRO),49th Annual IEEE/ACM International Symposium,2016.
[4]Bradshaw J A,R Karakchi,J D Bakos. Two-Hit Filter Synthesis for Genomic Database Search [C]//24th Annual International Symposium on Field-Programmable Custom Computing Machines (FCCM),2016.
[5]Owaida M,et al. Centaur:A Framework for Hybrid CPU-FPGA Databases[C]// IEEE International Symposium on Field-Programmable Custom Computing Machines,2017.
Application Analysis of Reconfigurable Acceleration Architecture Based on FPGA
Zhang Jinrong Liu Jingyu
School of Computer Science and Engineering, Hebei University of Technology, Tianjin 300401
s: With the advent of big data and artificial intelligence, traditional computer architectures have been unable to satisfy computationally intensive and data-intensive operations.The FPGA is a kind of no instructions, no shared memory architecture, its internal contains a large number of programmable reconstruct circuit configuration, which can quickly implement the accelerate algorithm. Using FPGA to accelerate the building of architecture can meet the increasing data processing requirements.The paper introduces the characteristics of FPGA and analyzes its application in various fields.
FPGA; reconfigurable calculation;accelerate algorithm
TN79+1
A
河北省高等學(xué)校科學(xué)技術(shù)研究項(xiàng)目資助(QN2014192);河北省科技計(jì)劃項(xiàng)目(15210325);河北省自然科學(xué)基金(F2016202145)。