資源描述:
《基于fpga的并行計(jì)算技術(shù)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、基于FPGA的并行計(jì)算技術(shù)更新于2012-03-1317:15:57文章出處:互聯(lián)網(wǎng)1?微處理器與FPGA微處理器普遍采用馮·諾依曼結(jié)構(gòu),即存儲(chǔ)程序型計(jì)算機(jī)結(jié)構(gòu),主要包括存儲(chǔ)器和運(yùn)算器2個(gè)子系統(tǒng)。其從存儲(chǔ)器讀取數(shù)據(jù)和指令到運(yùn)算器,運(yùn)算結(jié)果儲(chǔ)存到存儲(chǔ)器,然后進(jìn)行下一次讀取-運(yùn)算-儲(chǔ)存的操作過程。通過開發(fā)專門的數(shù)據(jù)和指令組合,即控制程序,微處理器就可以完成各種計(jì)算任務(wù)。馮·諾依曼型計(jì)算機(jī)成功地把信息處理系統(tǒng)分成了硬件設(shè)備和軟件程序兩部分,使得眾多信息處理問題都可以在通用的硬件平臺(tái)上處理,只需要開發(fā)具體的應(yīng)用
2、軟件,從而極大地降低了開發(fā)信息處理系統(tǒng)的復(fù)雜性。然而,馮·諾依曼型計(jì)算機(jī)也有不足之處,由于數(shù)據(jù)和指令必須在存儲(chǔ)器和運(yùn)算器之間傳輸才能完成運(yùn)算,使得計(jì)算速度受到存儲(chǔ)器和運(yùn)算器之間信息傳輸速度的限制,形成所謂的馮·諾依曼瓶頸[1];同時(shí),由于運(yùn)算任務(wù)被分解成一系列依次執(zhí)行的讀取-運(yùn)算-儲(chǔ)存過程,所以運(yùn)算過程在本質(zhì)上是串行的,使并行計(jì)算模式在馮·諾依曼型計(jì)算機(jī)上的應(yīng)用受到限制。受到半導(dǎo)體物理過程的限制,微處理器運(yùn)算速度的提高已經(jīng)趨于緩慢,基于多核處理器或者集群計(jì)算機(jī)的并行計(jì)算技術(shù)已經(jīng)逐漸成為提高計(jì)算機(jī)運(yùn)算性能
3、的主要手段。并行計(jì)算設(shè)備中包含多個(gè)微處理器,可以同時(shí)對多組數(shù)據(jù)進(jìn)行處理,從而提高系統(tǒng)的數(shù)據(jù)處理能力?;诩河?jì)算機(jī)的超級計(jì)算機(jī)已經(jīng)成為解決大型科學(xué)和工程問題的有利工具。然而,由于并行計(jì)算設(shè)備中的微處理器同樣受馮·諾依曼瓶頸的制約,所以在處理一些數(shù)據(jù)密集型,如圖像分析等問題時(shí),計(jì)算速度和性價(jià)比不理想。現(xiàn)場可編程門陣列(FPGA)是一種新型的數(shù)字電路。傳統(tǒng)的數(shù)字電路芯片都具有固定的電路和功能,而FPGA可以直接下載用戶現(xiàn)場設(shè)計(jì)的數(shù)字電路。FPGA技術(shù)顛覆了數(shù)字電路傳統(tǒng)的設(shè)計(jì)-流片-封裝的工藝過程,直接在成品
4、PFGA芯片上開發(fā)新的數(shù)字電路,極大地?cái)U(kuò)大了專用數(shù)字電路的用戶范圍和應(yīng)用領(lǐng)域。自從20世紀(jì)80年代出現(xiàn)以來,F(xiàn)PGA技術(shù)迅速發(fā)展,F(xiàn)PGA芯片的晶體管數(shù)量從最初的數(shù)萬個(gè)迅速發(fā)展到現(xiàn)在的數(shù)十億個(gè)晶體管[2],F(xiàn)PGA的應(yīng)用范圍也從簡單的邏輯控制電路發(fā)展成為重要的高性能計(jì)算平臺(tái)。FPGA芯片中的每個(gè)邏輯門在每個(gè)時(shí)鐘周期都同時(shí)進(jìn)行著某種邏輯運(yùn)算,因此FPGA本質(zhì)上是一個(gè)超大規(guī)模的并行計(jì)算設(shè)備,非常適合用于開發(fā)并行計(jì)算應(yīng)用。目前,F(xiàn)PGA已被成功地應(yīng)用到分子動(dòng)力學(xué)、基因組測序、神經(jīng)網(wǎng)路、人工大腦、圖像處理、機(jī)器
5、博弈等領(lǐng)域,取得了數(shù)十到數(shù)千倍的速度提高和優(yōu)異的性價(jià)比[3-18]。2?FPGA并行算法的設(shè)計(jì)與開發(fā)FPGA通過邏輯電路實(shí)現(xiàn)計(jì)算功能,而微處理器則通過程序和存儲(chǔ)器控制計(jì)算過程。FPGA和微處理器在基本架構(gòu)上的根本區(qū)別,決定了它們算法的設(shè)計(jì)理念和方法也存在很大區(qū)別[4-5]。與微處理器相比,F(xiàn)PGA最主要的優(yōu)勢是可以同時(shí)對大量變量進(jìn)行邏輯運(yùn)算和賦值,實(shí)現(xiàn)并行運(yùn)算;而FPGA最主要的劣勢則是失去了微處理器所提供的許多基本計(jì)算工具,如浮點(diǎn)數(shù)計(jì)算、初等函數(shù)取值等。在設(shè)計(jì)FPGA算法時(shí),應(yīng)該充分發(fā)揮FPGA可以
6、同時(shí)對大量變量進(jìn)行邏輯運(yùn)算和賦值的優(yōu)勢,而盡量避免使用浮點(diǎn)數(shù)運(yùn)算、初等函數(shù)取值等數(shù)值計(jì)算功能,所以并不是任何并行計(jì)算問題都適于在FPGA上實(shí)現(xiàn)。一般來說,F(xiàn)PGA最適用于需要大量并行邏輯或者整數(shù)運(yùn)算的計(jì)算任務(wù)。例如,圖像處理應(yīng)用中的線性除噪、形態(tài)學(xué)變換、邊緣檢測、模式匹配等應(yīng)用,就非常適合在FPGA上實(shí)現(xiàn)[10-16]。FPGA算法中常用的電路結(jié)構(gòu)包括流水線型和并行陣列型兩種(見圖1)。在流水線型結(jié)構(gòu)中,計(jì)算任務(wù)被分解成多個(gè)子任務(wù),由多個(gè)子電路依次完成,多組數(shù)據(jù)依次進(jìn)入流水線電路,同時(shí)進(jìn)行不同階段的計(jì)算
7、(見圖1(a))。忽略首批數(shù)據(jù)進(jìn)入流水線的延遲,流水線型電路處理數(shù)據(jù)的用時(shí)等于所有子任務(wù)中最長的用時(shí)。如果每個(gè)子任務(wù)都可以采用組合電路來完成而不需要時(shí)序電路,則所有子任務(wù)都可以在一個(gè)FGPA時(shí)鐘內(nèi)完成,從而實(shí)現(xiàn)極高的運(yùn)算速度和性價(jià)比。圖1?流水線型電路和并行陣列型電路?在并行陣列型電路中,多組并行排列的子電路同時(shí)接收整體數(shù)據(jù)的多個(gè)部分進(jìn)行并行計(jì)算(見圖1(b))。并行陣列型電路中的子電路本身可以是簡單的組合電路,也可以是復(fù)雜的時(shí)序電路,如流水線型電路。如果受邏輯資源限制,無法同時(shí)處理全部數(shù)據(jù),也可以依
8、次處理部分?jǐn)?shù)據(jù),直到完成全部數(shù)據(jù)的處理。圖2示出了FPGA系統(tǒng)的開發(fā)流程。一般采用硬件描述語言(HDL),如Verilog、VHDL等,實(shí)現(xiàn)FPGA并行算法。雖然有一些類似C語言的軟件可以幫助沒有數(shù)字電路設(shè)計(jì)經(jīng)驗(yàn)的用戶實(shí)現(xiàn)FPGA設(shè)計(jì),但是由于包括C語言在內(nèi)的微處理器編程語言蘊(yùn)含了許多微處理器的計(jì)算模式和理念,所以會(huì)影響或干擾FPGA并行算法的實(shí)現(xiàn)。使用HDL可以更好地結(jié)合FPGA的計(jì)算模式,設(shè)計(jì)出更合理的并行算法。一般選用