張晉榮 劉靖宇
?
基于FPGA的可重構(gòu)加速體系結(jié)構(gòu)的應用分析
張晉榮 劉靖宇
河北工業(yè)大學計算機科學與軟件學院,天津 300401
隨著大數(shù)據(jù)、人工智能時代的到來,傳統(tǒng)計算機架構(gòu)已然無法滿足計算密集型和數(shù)據(jù)密集型的運算。FPGA是一種無指令、無共享內(nèi)存的體系結(jié)構(gòu),其內(nèi)部包含大量的可編程的配置重構(gòu)電路,可快速實現(xiàn)相關加速算法。采用FPGA進行相關加速體系結(jié)構(gòu)的構(gòu)建,可滿足日益增長的數(shù)據(jù)處理需求。因此,介紹了FPGA的特點并對其在各個領域中的應用進行分析。
FPGA;可重構(gòu)計算;算法加速
隨著機器學習、人工智能等大數(shù)據(jù)應用的興起,數(shù)據(jù)密集型的高性能計算越來越受到人們的關注。傳統(tǒng)的CPU架構(gòu)難以滿足爆炸式數(shù)據(jù)的處理需求。FPGA(Field-Programmable Gate Array)本質(zhì)上是一種無指令、無共享內(nèi)存的體系結(jié)構(gòu),能通過配置內(nèi)部資源,快速組成相應的可重構(gòu)硬件,優(yōu)化系統(tǒng)性能。因此,基于FPGA的加速算法研究和加速體系結(jié)構(gòu)研究已經(jīng)成為工業(yè)界和學術界的熱點。
FPGA是在CPLD等可編程邏輯器件的基礎上進一步發(fā)展起來的產(chǎn)物。在數(shù)字電路中對于一個n輸入的邏輯單元單元來說,不管經(jīng)過怎樣的運算,最多只有2n種結(jié)果。所以如果事先將結(jié)果存入一個存儲單元(查找表)中,通過輸入的內(nèi)容在存儲區(qū)域查找對應的輸出內(nèi)容即可實現(xiàn)與非門電路功能。FPGA的原理也是如此,可以通過修改存儲單元的內(nèi)容將FPGA配置成不同的硬件。FPGA芯片主要由6部分組成:可編程IO單元、可編程邏輯單元、全局時鐘管理、嵌入式RAM、布線資源以及內(nèi)嵌的底層功能和專用硬件模塊。
2011年,微軟公司啟動了CataPult項目,利用FPGA在AI的相關服務上提供算法優(yōu)化。此項目大致經(jīng)過了三個階段:第一個部署階段中,微軟采用給每個超級計算機插入多個FPGA卡,但這一方法造成了FPGA之間難以通行,傳輸延遲較大等問題。第二個部署階段中,為了保證數(shù)據(jù)傳輸穩(wěn)定,不和PC機產(chǎn)生沖突,在每臺計算機中只插入一塊FPGA板卡,并在FPGA間使用專用的網(wǎng)線連接。通過這種方式,微軟加速了Bing的搜索。第三個部署階段中,微軟把FPGA部署在網(wǎng)卡和交換機中間,將硬件變成一種云計算服務平臺,這極大地刺激了各個科技公司對FPGA的關注,推動了FPGA的應用。
2017年1月,騰訊公司推出了高性能異構(gòu)計算基礎設施——FPGA云服務,解決了由于移動互聯(lián)網(wǎng)快速增長帶來的社交軟件的圖像處理問題。與此同時,阿里巴巴發(fā)布了FPGA云方案,隨后百度在卷積神經(jīng)網(wǎng)絡、圖像分類、解密加速等研究領域中發(fā)布了相關的FPGA平臺。中國科學技術大學的研究人員提出了單FPGA上面向服務的異構(gòu)多核可重構(gòu)片上計算系統(tǒng)——SOMP。此架構(gòu)一方面集成了各種不同類型的硬件資源,充分利用了MPSOC的優(yōu)勢,實現(xiàn)了較高的計算性能;另一方面,調(diào)整了軟硬件任務劃分和策略,提高了吞吐率和任務的并行執(zhí)行,方便上層開發(fā)者使用硬件資源[1]。
在操作系統(tǒng)方面為底層的可重構(gòu)硬件邏輯提供了通用的編程接口和編程模型,方便上層應用軟件開發(fā)人員使用。David Andrews等人針對可重構(gòu)系統(tǒng)提供了統(tǒng)一的多線程模型Hthread,將運行在通用處理器上的線程定義為軟件線程,將運行在可重構(gòu)資源上的線程定義為硬件線程,通過操作系統(tǒng)對軟硬件線程進行集中管理,屏蔽了軟硬件之間使用的差異性。FPMR提出了MapReduce框架,將任務管理、通信和同步等功能進行封裝,方便使用者使用硬件資源,此框架對部分應用(RankBoost、SVM、PageRank等算法)有較好的加速效果[2]。
2.3.1 神經(jīng)網(wǎng)絡加速算法
神經(jīng)網(wǎng)絡在近年來的大數(shù)據(jù)應用中已經(jīng)成為一個研究熱點。由于對計算時間的要求不斷提高,國內(nèi)外學者越來越熱衷于實現(xiàn)用于神經(jīng)網(wǎng)絡的加速器。ESE提出了稀疏LSTM高效語言識別引擎,在硬件上實現(xiàn)了深度學習算法。Nurvitadhi研究了循環(huán)神經(jīng)網(wǎng)絡變體,提出并設計了根據(jù)高層次神經(jīng)網(wǎng)絡模型可自動生成可綜合的FPGA加速器的框架DNNWeaver[3]。Escher提出了一個基于FPGA的CNN加速器——Escher,為其配備了一個靈活的數(shù)據(jù)緩沖區(qū),實現(xiàn)了輸入內(nèi)容和權值轉(zhuǎn)換之間的帶寬平衡,有效降低系統(tǒng)總體帶寬的需求。ISAAC提出了一種針對卷積神經(jīng)網(wǎng)絡的加速器,采用eDRAM來作為流水數(shù)據(jù)跨時鐘域的寄存器,以此實現(xiàn)基于運算流水線的神經(jīng)網(wǎng)絡加速運算。
2.3.2 生物信息加速算法
伊利諾伊大學厄巴納-香檳分校的科研成員使用成對的HMM算法實現(xiàn)DNA變異識別的加速器。在Pair-HMM中有插入、匹配、刪除三種狀態(tài)。南卡羅來納大學的研究人員通過改變NCBI BLAST算法并用FPGA實現(xiàn),研究人員把使用的數(shù)據(jù)庫轉(zhuǎn)化為三層表組成的算法實現(xiàn)索引,其中前兩層數(shù)據(jù)存儲在FPGA中,最后一層數(shù)據(jù)存儲在外存儲器中,此方法大大減少了IO請求次數(shù)[4]。加州大學的開發(fā)人員使用FPGA實現(xiàn)基因片段中的硬件查詢階段的加速器。在查詢階段主要的問題是:第一,如何處理大量短序列匹配;第二,如何消除頻繁訪存。研究人員通過多個PE組成的體系結(jié)構(gòu)實現(xiàn)該加速器。
2.3.3 數(shù)據(jù)庫算法加速算法
傳統(tǒng)數(shù)據(jù)庫在處理復雜操作時效率低下,因此Rene Mueller等在2010年指出可以將FPGA運用在數(shù)據(jù)庫中,加速數(shù)據(jù)庫的查找、增刪等操作。哈希操作在數(shù)據(jù)庫應用中是一個很頻繁的操作,利用FPGA加速哈希操作可以實現(xiàn)整個哈希系統(tǒng)。這一技術已經(jīng)在網(wǎng)絡中得到廣泛使用。Muhsen Owaida等人提出了Centaur算法,把FPGA加速器表示成一個硬件線程集成到數(shù)據(jù)庫引擎中,實現(xiàn)FPGA的靈活體系結(jié)構(gòu),允許數(shù)據(jù)庫可以混合并行執(zhí)行[5]。
隨著人工智能、大數(shù)據(jù)的發(fā)展,數(shù)據(jù)密集型和計算密集型的應用給傳統(tǒng)計算機帶來巨大的負擔,人們將更多的注意力轉(zhuǎn)移到計算機體系結(jié)構(gòu)的研究,以尋求相應的突破。FPGA在加速特定算法、操作系統(tǒng)資源調(diào)度等方面有較大的應用前景,也為其硬件資源的使用者提供了方便的接口。
[1]馮曉靜.面向服務的異構(gòu)多核片上系統(tǒng)的關鍵技術研究及實現(xiàn)[D].北京:中國科學技術大學,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
河北省高等學校科學技術研究項目資助(QN2014192);河北省科技計劃項目(15210325);河北省自然科學基金(F2016202145)。