基于fpga的加速卡及其加速方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及計算機技術(shù)領(lǐng)域,具體地,涉及一種基于FPGA的加速卡及其加速方法。
【背景技術(shù)】
[0002]FPGA(Field-ProgrammabIe Gate Array),即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)的發(fā)展的產(chǎn)物。器件最在是有Xilinx公司于1985年首家推出,是一種新型的高密度PLD,采用CM0S-SRAM工藝制作。FPGA的結(jié)構(gòu)分為三部分:可編程邏輯模塊,可編程I/O模塊和可編程內(nèi)部互聯(lián)區(qū)IR13FPGA內(nèi)部有許多可編程的邏輯單元(LE,LogicElement),用戶可以通過對這些可編程成的模塊進行現(xiàn)場編程以實現(xiàn)不同的邏輯功能,相對于專用集成電路,F(xiàn)PAG有更高的靈活性,開發(fā)周期較短,單集成度較低。FPGA可進行多次編程,編程速度快,用戶可靈活控制。
[0003]DMA(Direct Memory Access),即直接內(nèi)存存取,它是一種高速的數(shù)據(jù)傳輸技術(shù),DMA可以實現(xiàn)外部設(shè)備和存儲器之間的直接數(shù)據(jù)交換,可以不通過CUP進行干預,可以大大的提高數(shù)據(jù)的傳輸速度,并節(jié)省CPU資源,從而提高整個系統(tǒng)的運行效率。整個數(shù)據(jù)傳輸可以通過DMA控制器進行控制,CPU只需要在數(shù)據(jù)傳輸?shù)钠鹗歼M行操作,其他時間CPU可以進行其他事件的處理,釋放系統(tǒng)資源,提高數(shù)據(jù)傳輸效率。
[0004]隨著計算機科學技術(shù)的發(fā)展和應(yīng)用領(lǐng)域的不斷拓展,許多特定的應(yīng)用領(lǐng)域?qū)τ嬎銠C的數(shù)據(jù)處理速度都有了越來越高的要求。CPU的結(jié)構(gòu)便于它在短時間內(nèi)完成各種不同的指令,但有些重復任務(wù)無法非常有效迅速地被處理。通過采用專門設(shè)計的處理器可以解決這個問題,但成本會大大提高。采用FPGA芯片等硬件加速來分擔一部分CPU的工作是目前主流的解決方法,但采用FPGA進行硬件加速有兩個問題,一是一塊FPGA加速器的資源不夠解決某些復雜大計算量的任務(wù);二是在采用FPGA做協(xié)處理,同時運行多個加速算法,同一個PC1-E接口下,幾個設(shè)備并存,硬件驅(qū)動可能相當麻煩。
[0005]經(jīng)過檢索發(fā)現(xiàn):公開號為CN102819818A的中國專利申請,提供了一種基于FPGA芯片的動態(tài)可重構(gòu)技術(shù)實現(xiàn)圖像處理的方法,利用FPGA芯片的可重構(gòu)技術(shù)實現(xiàn)圖像處理的加速,預先生成圖像處理功能模塊的設(shè)計文件,然后根據(jù)需要將FPGA芯片的重構(gòu)模塊配置為一個或多個圖像處理功能模塊進行圖像信號處理;該方法實現(xiàn)方法簡單、實現(xiàn)成本低廉,但是需要預先生成固定的圖像處理功能模塊,應(yīng)用范圍有限,且局限于圖像處理功能。公開號為CN104657308A的中國專利申請,提供了一種用FPGA實現(xiàn)的服務(wù)器硬件加速的方法,基于FPGA實現(xiàn)的采用QPI總線的服務(wù)器硬件加速,通過在FPGA內(nèi)構(gòu)建硬件加速模塊,并通過報文轉(zhuǎn)換模塊將硬件加速模塊發(fā)起的操作轉(zhuǎn)換為報文送到QPI總線進行加速;該方法可配置不同的加速算法來對應(yīng)不同的計算應(yīng)用,雖然具有較高的靈活性和擴展性,但是僅適用于QPI總線的計算機,對主流的PC1-E總線不具備通用性和普適性。
【發(fā)明內(nèi)容】
[0006]本發(fā)明針對現(xiàn)有技術(shù)中存在的上述不足,提供了一種基于FPGA的加速卡及其加速方法。
[0007]為實現(xiàn)上述目的,本發(fā)明是通過以下技術(shù)方案實現(xiàn)的。
[0008]根據(jù)本發(fā)明的一個方面,提供了一種基于FPGA的加速卡的加速方法,包括如下過程:
[0009 ] 在FPGA內(nèi)部構(gòu)建:PC1-E總線接口模塊、多個DMA、DMA重置模塊、多個用戶可重構(gòu)加速模塊、LVDS-光纖模塊、交叉總線模塊以及DDR3控制模塊;其中:
[0010]所述PC1-E總線接口模塊用于支持FPGA內(nèi)部的DMA對內(nèi)存控制器的讀寫訪問以及用于支持字節(jié)不對齊;
[0011 ]所述DMA用于完成DMA運行管理以及數(shù)據(jù)流流向控制;
[0012]所述DMA重置模塊用于完成對用戶可重構(gòu)加速模塊內(nèi)部比特流的重置與更改,動態(tài)實時更新用戶可重構(gòu)加速模塊的加速算法;
[0013]所述用戶可重構(gòu)加速模塊用于加載不同的加速算法比特流,完成加速任務(wù);
[0014]所述LVDS-光纖模塊用于提供LVDS和光纖之間的連接,形成LVDS-光纖,完成多個加速卡之間的互聯(lián);
[0015]所述交叉總線模塊用于提供各個用戶可重構(gòu)算法模塊之間的全交互聯(lián)接和/或各個用戶可重構(gòu)算法模塊與LVDS-光纖之間的全交互聯(lián)接;
[0016]所述DDR3控制模塊用于完成DMA對DDR3的讀寫控制。
[0017]優(yōu)選地,所述PC1-E總線接口模塊包括PC1-E總線和PC1-E多通道DMA接口,所述PC1-E總線接口模塊的外部通過PC1-E總線連接PC,PC1-E總線接口模塊的內(nèi)部使用PC1-E多通道DMA接口與多個DMA相連。
[0018]優(yōu)選地,多個DMA分別連接PC1-E總線接口模塊和DDR3控制模塊,同時與多個用戶可重構(gòu)模塊對應(yīng)連接。
[0019]優(yōu)選地,所述DMA重置模塊與PC1-E總線接口模塊相連接。
[0020]優(yōu)選地,多個用戶可重構(gòu)加速模塊與多個DMA之間——對應(yīng)連接,同時連接交叉總線模塊。
[0021 ]優(yōu)選地,所述DDR3控制模塊的外部連接DDR3,DDR3控制模塊的內(nèi)部連接多個DMA。
[0022]優(yōu)選地,F(xiàn)PGA內(nèi)部構(gòu)建采用Verilog硬件描述語言實現(xiàn);通過ISE編譯生成二進制比特流文件,將比特流文件固化到固件存儲器,硬件上電后FPGA通過固件存儲器完成比特流的加載。
[0023]優(yōu)選地,所述數(shù)據(jù)流流向為如下任一項:
[0024]-PC1-E總線接口模塊_>外存MEM;
[0025 ] -PC1-E總線接口模塊_>用戶加速重構(gòu)算法模塊;
[0026]-外存MEM->用戶加速重構(gòu)算法模塊;
[0027]-外存MEM->PCI_E總線接口模塊;
[0028]-用戶加速重構(gòu)算法模塊->外存MEM;
[0029 ]-用戶加速重構(gòu)算法模塊_>PC1-E總線接口模塊。
[0030]根據(jù)本發(fā)明的第二個方面,提供了一種利用上述基于FPGA的加速卡的加速方法得到的基于FPGA的加速卡,包括:PC1-E總線接口模塊、多個DMA、DMA重置模塊、多個用戶可重構(gòu)加速模塊、LVDS-光纖模塊、交叉總線模塊以及DDR3控制模塊;
[0031]其中:
[0032]所述PC1-E總線接口模塊用于支持FPGA內(nèi)部的DMA對內(nèi)存控制器的讀寫訪問以及用于支持字節(jié)不對齊;
[0033]所述DMA用于完成DMA運行管理以及數(shù)據(jù)流流向控制;
[0034]所述DMA重置模塊用于完成對用戶可重構(gòu)加速模塊內(nèi)部比特流的重置與更改,動態(tài)實時更新用戶可重構(gòu)加速模塊的加速算法;
[0035]所述用戶可重構(gòu)加速模塊用于加載不同的加速算法比特流,完成加速任務(wù);
[0036]所述LVDS-光纖模塊用于提供LVDS-光纖之間的連接,形成LVDS-光纖,完成多個加速卡之間的互聯(lián);
[0037]所述交叉總線模塊用于提供各個用戶可重構(gòu)算法模塊之間的全交互聯(lián)接和/或各個用戶可重構(gòu)算法模塊與LVDS-光纖之間的全交互聯(lián)接;
[0038]所述DDR3控制模塊用于完成DMA對DDR3的讀寫控制。
[0039]優(yōu)選地,所述PC1-E總線接口模塊包括PC1-E總線和PC1-E多通道DMA接口,所述PC1-E總線接口模塊的外部通過PC1-E總線連接PC,PC1-E總線接口模塊的內(nèi)部使用PC1-E多通道DMA接口與多個DMA相連。
[0040]與現(xiàn)有技術(shù)相比,本發(fā)明具有如下有益效果:
[0041]1、本發(fā)明實現(xiàn)方法簡單,成本低廉;
[0042]2、配置有多個DMA和多個用戶可重構(gòu)模塊,通過將任務(wù)分解并進行平行計算節(jié)約處理時間,提高處理效率;
[0043]3、多個加速卡之間可以通過LVDS和光纖實現(xiàn)交火,根據(jù)應(yīng)用需要自由進行擴展;
[0044]4、利用FPGA本身可重構(gòu)的特點,通過加載不同的bit流文件可以實現(xiàn)不同的加速應(yīng)用,應(yīng)用范圍廣。
【附圖說明】
[0045]通過閱讀參照以下附圖對非限制性實施例所作的詳細描述,本發(fā)明的其它特征、目的和優(yōu)點將會變得更明顯:
[0046]圖1為本發(fā)明的硬件結(jié)構(gòu)框圖。
[0047]圖中:101為PC1-E總線,102為PC1-E多通道DMA接口,103為內(nèi)存控制器I,104為內(nèi)存控制器II,105為DDR3I,106為DDR3II,107為交叉總線模塊,108為LVDS-光纖模塊,109為DMA重置模塊,110為多個DMA,111為多個用戶可重構(gòu)加速模塊。
【具體實施方式】
[0048]下面對本發(fā)明的實施例作詳細說明:本實施例在以本發(fā)明技術(shù)方案為前提下進行實施,給出了詳細的實施方式和具體的操作過程。應(yīng)當指出的是,對本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進,這些都屬于本發(fā)明的保護范圍。
[0049]實施例
[0050]本實施例提供了一種基于FPGA的加速卡的加速方法,包括如下過程:
[0051 ] 在FPGA內(nèi)部構(gòu)建PC1-E總線接口模塊,多個DMA、DMA重置模塊、多個用戶可重構(gòu)加速模塊、LVDS-光纖模塊、交叉總線模塊以及DDR3控制模塊。
[0052]具體方法是:
[0053]在FPGA內(nèi)部構(gòu)建一個PC1-E總線接口模塊,該PC1-E總線接口模塊包括PC1-E總線和PC1-E多通道DMA接口。該PC1-E總線接口模塊的外部通過PC1-E總線連接PC,PC1-E總線接口模塊的內(nèi)部使用統(tǒng)一的PC1-E多通道DMA接口與多個DMA相連。主要支持FPGA內(nèi)部其他DMA對內(nèi)存控制器的讀寫訪問,支持字節(jié)不對齊等。
[0054]在FPGA內(nèi)部構(gòu)建多個DMA,該DMA連接PC1-E總線接口模塊和DDR3控制模塊,同時與多個用戶可重構(gòu)模塊一一對應(yīng)連接。主要完成DMA運行的管理、數(shù)據(jù)流的流向控制,數(shù)據(jù)流可以選擇為:
[0055]PC1-E總線接口模塊_