999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

動態重構硬件加速中的性能開銷建模

2022-03-22 03:34:24苑福利婁文啟陳香蘭
計算機工程與應用 2022年6期
關鍵詞:資源模型設計

苑福利,宮 磊,婁文啟,陳香蘭

中國科學技術大學 計算機科學與技術學院,合肥 230027

近年來,基于FPGA的動態可重構計算技術逐漸成為硬件加速中的研究熱點。自從20世紀80年代中期Xilinx公司推出第一款現場可編程門陣列(field programmable gate array,FPGA)以來,近幾十年隨著半導體工藝和制造工藝的不斷進步,可編程器件的片上資源和規模不斷增大,現代FPGA芯片的浮點計算性能可以達到10 TFLOPS量級。同時由于自動設計技術的發展,以及可編程接口的不斷豐富,可重構技術正迅速發展和成熟起來。

動態可重構技術是近些年出現的一種使用FPGA進行設計的新型理念,該技術可以充分利用FPGA的可編程性和可重構性,通過將FPGA片上的邏輯資源進行時分復用,可以將時間軸上不重疊的功能進行隔離并實現為可重構模塊(reconfigurable module,RM),在需要時加載到片上進行執行。通過這種方式,可以允許用戶只對FPGA的部分區域進行重新配置,而其余部分在重構過程中正常運行,這與傳統的靜態全局重構方式相比,重新配置的比特流文件更小,可以將FPGA的有限資源進行“時分復用”,具有更高的靈活性和比較小的重構開銷。因此,動態重構技術其特有的靈活性和高效性,被廣泛應用于硬件加速、航天、數據中心等多個領域。

最近,以卷積神經網絡為代表的深度學習被廣泛應用于圖像分類、目標檢測、計算機視覺等領域[1-3],得益于FPGA的高性能和可重構特性,能夠兼具ASIC芯片的執行效率和通用處理器CPU靈活性,具有高性能和低功耗的優勢,被廣泛應用于硬件加速[4-5]。何凱旋等人[6]針對CNN硬件實現時資源限制問題,提出基于FPGA動態重構的卷積神經網絡加速器設計,在Xilinx VC707 FPGA平臺實現Lenet-5手寫體識別網絡,與靜態設計相比節省大量資源;宮磊[7]充分挖掘可重構硬件特性解決CNN硬件加速中的軟、硬件特征失配問題,并基于DQN深度強化學習控制FPGA運行時重構;Ye等人[8]采用一種流水線方式在FPGA上多個重構區動態映射每個流水線段,并在Xilinx VC709 FPGA平臺對VGG16網絡進行部署加速。

上述基于FPGA動態重構的硬件加速工作,重構時間往往在毫秒級別,重構開銷不能忽視且會顯著影響加速器的性能,如采用流水線方式動態重構FPGA,若開銷過大會使流水線停頓抵消可重構帶來的好處,最壞情況下可能比靜態重構有更差的性能。然而重構開銷在系統設計的早期階段難以估算,往往在設計最終階段布局布線后才能獲得,因此需要一個在可重構系統設計的早期階段提供精準估算重構開銷的方法,用于指導可重構系統的設計。

然而為獲得一個估算重構開銷的方法需面臨如下挑戰:(1)重構開銷和諸多因素有關。不同的資源量、重構區劃分策略、設備器件等都會對重構時間產生影響,這對估算重構開銷帶來了挑戰。(2)動態重構設計流程復雜,實驗周期長,中間環節容易出錯,如布局布線失敗、分配資源不足等,都會對模型的準確性產生影響。(3)對估算新型FPGA硬件重構開銷的研究較少,以往工作針對特定的FPGA,不能很好應用于新型FPGA,參考價值較小。

目前有部分對重構開銷進行估算的研究工作,如工作[9]調查影響重構開銷的因素并提出一個估算模型,但誤差在30%左右;Claus等人[10]提出一種計算方法預測重構開銷,但只適用于Virtex-II系列FPGA;Duhem等人[11]提出一個快速內部配置訪問端口,并建模評估重配置時間;Morales-Villanueva等人[12]基于綜合報告提出兩個開銷模型指導可重構設計,但未對新型FPGA進行分析。這些研究工作往往只考慮重構過程中的物理組件參數,而忽略了對比特流文件的分析,由于重構開銷和重配置比特流大小、配置端口速度息息相關,因此估算精度較低;其次部分方法適應于特定的FPGA,不能很好應用于新型FPGA,移植性較差。

對此,基于以上挑戰和存在的問題,本文針對現代FPGA構建了新穎的運行時重構性能開銷模型,能夠避免復雜的設計流程,節省大量時間,幫助開發者在設計初期快速評估設計的合理性。由于重構開銷和諸多因素有關,本文提出的方法將諸多影響重構開銷的因素抽象到對比特流文件的分析,通過總結比特流格式構建了可重構時間開銷模型,其準確度較以往工作有很大提高。同時,該方法很好地彌補了針對新型FPGA重構開銷研究的缺少,可以便捷地應用于現代動態重構硬件加速設計中,更具實際意義。本文的主要貢獻如下:

(1)本文提出的方法將諸多影響重構開銷的因素抽象到對比特流文件的分析,通過總結XilinxVirtex-7系列FPGA比特流格式,并以此構建動態重構開銷模型,其準確度較以往工作有很大提高。

(2)提出的模型可以在設計初期提供精準的重構開銷估算,避免冗長的設計流程,節省大量時間。

(3)作為樣例分析,本文在新型FPGA上對流行算法如Winograd、FFT、GEMM、AES和DES等進行重構開銷實驗,結果表明該模型具備快速、準確特點,準確率可達98%,可以便捷地應用于現代動態重構硬件加速中,具有較高的工程實用價值。

1 背景知識

1.1 動態部分重構技術簡介

動態部分可重構(dynamic partial reconfigurable,DPR)作為FPGA一種特性,可以允許用戶通過加載動態配置文件(通常是部分配置比特流文件)來修改運行的FPGA,動態地更新部分邏輯而其他部分功能模塊正常運行。如圖1所示,是一個動態部分重構示意圖,將FPGA部分資源分為A、B兩個可重構區域(reconfigurable partition,RP),在運行過程中根據需要,用戶可以從比特流庫中挑選所需的部分配置比特流文件對可重構區域進行動態配置。

圖1 動態部分重構示意圖Fig.1 Diagram of dynamic partial reconfigurable

在設計實現時,一般將FPGA的邏輯資源分為兩部分:靜態邏輯和可重構邏輯,并劃分到FPGA的不同區域中,如圖1中FPGA的淺色區域表示靜態邏輯,一旦初始配置后在運行時不再改變;深色部分表示可重構邏輯,在運行過程中加載其他配置文件更改先前的硬件邏輯??芍貥嬤壿嫺鶕枰獣澐殖龆鄠€可重構區域RP,每個RP可能存在多個可重構模塊,即該可重構區域的不同功能實現,如A區域對應A1、A2兩個功能實現,B區域對應B1、B2、B3三個功能實現,運行時根據需要加載到FPGA執行。與靜態重構相比,動態配置所需要的部分配置比特流文件更小,配置速度更快;與此同時可以將可重構區的邏輯進行更換加載執行不同的邏輯功能,且不會影響未重新配置區域功能的正常運行,可以充分利用硬件資源,具有很高的擴展性。

1.2 動態部分重構設計過程

常規SRAM工藝的FPGA都可實現靜態重構,而部分特定基于SRAM或FLASH結構的新型FPGA支持動態部分重構,如現代Xilinx、Altera等廠商的FPGA器件都是SRAM查找表結構,可以實現動態部分重構功能,本文以XilinxFPGA為例介紹動態部分重構的設計流程。如圖2是一個動態部分重構設計實現流程,實現主要可以分為初始功能劃分階段、模塊設計和網表文件生成階段、可重構區劃分階段、比特流生成階段和下載五個階段,下面結合圖2進行詳細介紹。

圖2 動態部分重構實現流程Fig.2 Implementation flow of dynamic partial reconfigurable

(1)初始功能劃分。在設計初始階段需對所實現的功能進行劃分,將FPGA在運行過程中不用更改的邏輯劃分到靜態邏輯區域,將需要動態更改的邏輯劃分到可重構邏輯區域,并分成不同的可重構模塊,如圖中的可重構模塊A、B等。最后將劃分后的功能邏輯使用硬件描述語言如VHDL、Verilog等進行編碼實現。

(2)模塊設計和網表文件生成。在實現過程為保證每個模塊性能,每個模塊單獨設計、獨立綜合,同時為了保證布局布線的合理,在實際動態重構時將I/O、原始時鐘等以黑盒形式初始化在頂層文件[13],同時同一重構區域需被重構的不同模塊接口必須相同。完成設計后,使用專用的綜合工具將各可重構模塊綜合生成網表文件,會獲得靜態邏輯網表和可重構模塊網表。

(3)可重構區劃分。使用PlanAhead軟件定義設計的物理布局,通過創建物理約束(Pblocks)來定義可重新配置的區域,在FPGA的Device視圖繪制一個矩形區域,需要保證繪制的該區域內包含的資源數略大于可重構模塊所需資源的最大值。完成所有可重構區域RP設置后,運行DRC檢查保證設計的合理性。

(4)比特流生成。通過軟件生成一個完整的配置設計,該配置包含每個靜態模塊和每個可重構分區的一個可重構模塊,為完整配置設計保存檢查點,之后可以刪除可重新配置模塊,并僅保存靜態設計檢查點,鎖定靜態邏輯位置和路由,之后可以在該靜態設計中添加新的可重構模塊并實現這個新配置,重復該步驟直到所有可重構模塊都實現。通過該過程可以生成一個完整的.bit配置文件和多個可重構模塊的部分配置.bit文件。

(5)下載。在FPGA上燒寫完整的配置文件,然后根據需要將部分配置比特流文件下載到板上,動態更改FPGA的實現功能。

2 FPGA重構性能開銷模型

FPGA由可編程邏輯單元(configurable logic block,CLB)、塊RAM(Block RAM,BRAM)、專用數字處理單元(DSP48E1)、可編程布線資源、可編程IO資源等部分組成。Xilinx的7系列FPGA是基于ASMBL架構[14]的,如圖3所示。該架構的特點是資源按照列排布,同一列包含相同的資源,通過將不同的列進行組合,可以獲得面向不同應用、滿足各種功能的FPGA。通過XilinxISE開發工具可以對這些資源進行編程,生成.bit文件,稱為配置比特流文件,包含對CLB、BRAM、DSP的配置信息,通過比特流文件重新燒寫配置電路來實現不同的邏輯功能。通過Xilinx官方文檔給出的包類型、幀組織、寄存器格式編寫腳本代碼對比特流文件分析,得到比特流格式并提出一種估算比特流大小的方法,并基于此構建運行時重構性能開銷模型。

圖3 ASMBL架構Fig.3 ASMBL architecture

2.1 配置比特流包類型和幀組織

(1)比特流包類型。Xilinx FPGA配置比特流由兩種數據包類型組成:類型1和類型2,如表1和表2所示。其中類型1數據包有5部分組成,頭類型固定為001表示類型1;操作碼分為4種:00表示空操作、01為讀、10為寫、11保留;寄存器地址后五位有效,用于標識寄存器地址;字計數用于標識后面緊跟的32位數據個數。類型2數據包有3部分組成,頭類型固定為010表示類型2;操作碼和和字計數與類型1數據包含義一致。類型1數據包字計數只有11位,用于讀寫短數據,同時類型2數據包沒有寄存器地址,只能跟在類型1數據包后面,通過兩者組合來實現讀寫大段數據功能。

表1 類型1配置包格式Table 1 Type 1 configuration package format

表2 類型2配置包格式Table 2 Type 2 configuration package format

(2)比特流幀組織。FPGA進行配置的最小數據單位是幀,這些幀是FPGA配置內存空間最小可尋址段,因此所有操作必須在整個配置幀上進行。對于7系列FPGA、每一幀由101個32位的字組成[15](不同系列不同)。每個配置幀有一個32位的地址,通過幀地址寄存器(frame address register,FAR)可以對該幀進行尋址,用于指示其在FPGA上的位置。表3對FAR進行詳細介紹,可以分為5部分,其中塊類型低三位有效:000表示為互連和塊配置,001為BRAM配置,010為互連塊和特殊幀;上/下指示器指示配置的是FPGA上部分還是下部分;行地址表示配置的當前行;列地址表示配置的當前列;次地址表示列內幀地址。

表3 FAR寄存器格式Table 3 FAR register format

Xilinx 7系列的FPGA內部被分成不同的時鐘區域數,即被劃分為多個行,每行按照列再次劃分,行列交叉形成不同大小矩陣塊,放置著CLB、BRAM、DSP等資源,矩陣塊從左到右有著不同數量配置幀,取決于矩陣塊資源類型。為了估算配置比特流大小,需要知道比特流格式,每列的配置幀數等,Xilinx官方提供的內容十分分散且有限,部分內容還被有意地忽略了,通過實驗解析比特流格式,并得出一個配置比特流大小估算方法。

2.2 比特流格式和大小估算

XilinxISE開發工具生成的.bit比特流是二進制文件,為了方便研究可以通過設置生成.rbt文件,兩者都是FPGA配置文件,只不過.rbt文件是.bit文件的ASCII版本。同時為了獲取每列的配置幀數,生成DebugBitstream文件(每一幀會有一個CRC校驗),在XilinxVC709平臺通過調整可重構分區不同的資源數,生成不同的.rbt文件和DebugBitstream文件,然后編寫腳本代碼對比特流文件進行解析,程序流程圖如圖4所示,按照2.1節介紹的配置比特流包類型和寄存器格式進行逐條解析,獲知每一條命令的具體含義,從而得到配置每列的幀數。

圖4 提取幀組織程序流程圖Fig.4 Flow chart of program for extracting frame organization

根據實驗得到數據和部分參考資料[16]分析,對于VC709有10行并分為上下兩部分,每一列有152幀,每一行會填充一幀;CLB每列有36幀,DSP每列有28幀,BRAM每列有28幀,配置BRAM內容有128幀,同時初始會填充一幀,每行幀結構如表4所示。

表4 Xilinx 7系列FPGA配置每列幀數Table 4 Xilinx 7 series FPGA configuration frame number per column

如圖5是得到的比特流部分內容展示,從圖中可以看到初始首先進行同步操作,以及設備ID、CRC校驗字的寫入,保證比特流被正確地燒寫到FPGA上,然后通過向FAR幀地址寄存器寫入命令字,確定在FPGA上配置位置,如圖中0x00400800根據FAR寄存器格式可知道配置0行、16列下半部分CLB,接著向FDRI寄存器寫入0x360D即13 837個配置字完成CLB配置,最后向CMD寫命令字,表示配置結束解除同步。通過查看對比不同的配置比特流文件,以及Morales-Villanueva等人[12]對5系列FPGA比特流格式的分析,發現配置比特流有一個大致相同的格式,如圖6所示。

圖5 VC709比特流樣例Fig.5 VC709 bitstream sample

有了圖6比特流格式,創建一個計算方法來估算比特流大小和可重構功能模塊的計算/訪存屬性之間的關系,可重構功能模塊的計算-訪存屬性主要由LUT、DSP、BRAM等FPGA資源構成,其中可重構模塊消耗的資源數一般可以通過Xilinx開發軟件布局布線綜合后得到,同時由于可重構區域是在FPGA上繪制一個矩形區域,因此可以根據可重構區域包含的資源數估算重構該區域的比特流文件大小。

圖6 部分重構配置比特流格式Fig.6 Partially reconfigurable configuration bitstream format

對此需要先獲得配置每列資源需要的配置幀數和字節數,對于不同型號的FPGA有一些特定的參數,通過實驗手動解析比特流文件和查看資料得到表4和表5數據。為了得到一個可重構區配置比特流大小需要知道可重構區需要的資源數,即可重構功能模塊計算訪存/屬性(DSP、BRAM等資源),然后根據FPGA每列的資源數如表6,通過公式(1)~(3)得到可重構區CLB列數NCLB、DSP列數NDSP、BRAM列數NBRAM。

表5 VC709 FPGA配置比特流參數Table 5 VC709 FPGA configuration bitstream parameters

表6 VC709 FPGA每列資源數Table 6 VC709 FPGA resources per column

可重構區CLB列數NCLB可以根據重構區總的LUT資源數計算得到,其中一個CLB包含8個LUT,因此CLB列數計算公式如式(1)所示:

可重構區DSP列數NDSP根據重構區總的DSP資源數計算得到,如式(2)所示:

可重構區BRAM列數NBRAM根據重構區總的BRAM資源數計算得到,如式(3)所示:

可重構區域行數HRP,以及是否跨越上下部分Half可以根據可重構區繪制的矩形區域確定,有了上面的輸入參數,根據比特流格式得到一個計算模型來估算部分配置比特流的大小,其計算公式如式(4)~(7)所示。

我初到柳江古鎮的時候,隆冬已在那個小鎮盤桓了一段時間,街頭那棵近千年的黃葛樹枝頭只零星地掛著些干枯的葉子。那些泛黃的葉子極像一片片風車葉,在起風的日子里發出“唰啦、唰啦”的響聲。

2.3 重構性能開銷模型

有了計算重構比特流大小公式,可以根據FPGA內部配置訪問端口(internal configuration access port,ICAP)速度Speed,計算出重構時間Tconfig用于估算運行時重構開銷,并根據該重構開銷模型指導判斷運行時重構是否能夠帶來收益,其中重構開銷Tconfig由公式(8)計算得到:

對此,可以使用該重構模型對硬件重構是否帶來潛在的性能收益進行判斷,為了方便說明,定義兩個任務A和B順序執行,初始時FPGA硬件架構用于加速對任務A的執行,在該相同硬件架構下執行任務B需要的執行時間是Ti,若使用適用于任務B的硬件架構對FPGA進行重構,其中重構的開銷是Tconfig,使用重構后的硬件加速任務B的執行,執行時間是Tj,則重構帶來的性能收益是Ti-Tj,如果滿足公式(9)認為重構帶來的潛在收益不足以彌補重構的開銷,因此應避免該重構。

為了方便說明,使用Winograd卷積算法F(m×m,r×r)作為計算核心對Alexnet神經網絡[17]卷積層的動態重構進行分析,其中Winograd快速算法是由數學家Winograd在1980年提出[18],通過將輸入信號、卷積核以及輸出結果進行矩陣轉換,將乘法運算轉化為加法操作,可以大幅降低計算開銷,節省DSP資源。目前有多項研究工作將Winograd快速算法的卷積計算應用到神經網絡硬件加速器設計中[19-21],因此使用Winograd算法來測試模型準確性是一個合適的選擇。

如圖7是Winograd卷積計算過程,從圖中可以看出給定一個n×n的輸入塊和r×r的卷積核,通過Winograd卷積算法可以生成一個m×m的輸出特征圖,接著向右滑動m步長,執行相同的計算就可以得到下一個輸出。

圖7 Winograd算法Fig.7 Winograd algorithm

使用二維的Winograd卷積算法F(m×m,r×r)作為計算核心,其中輸出尺寸是m×m,卷積核尺寸是r×r,一旦確定了m和r,可以計算出輸入尺寸n(n=m+r-1),二維Winograd算法計算公式可以根據一維嵌套迭代得到,如式(10)所示。其中g為輸入卷積核、d為輸入分片,G、B、A分別為卷積核轉換矩陣、輸入轉換矩陣和輸出轉換矩陣,當卷積核和輸出尺寸確定下來,轉換矩陣也隨之確定下來,可以提前計算出來。

硬件加速器在卷積層輸入通道和輸出通道使用大小為Pm和Pn的循環展開進行并行計算,對該硬件架構消耗的資源和計算時間進行建模。采用16 bit定點數據,根據Xilinx官方文檔可以知道一個DSP可以在一個時鐘周期內完成一次乘加操作,而DSP在Winograd計算核心點乘時被消耗,因此DSP數量應滿足公式(11),其中n表示輸出尺寸。

LUT資源主要在矩陣轉換時被使用,因此可以提前通過HLS工具測得的實際數據作為參考,LUT數量應滿足公式(12),其中分別表示Winograd計算輸入尺寸為n,卷積核尺寸為r時輸入轉換、輸出轉換和卷積核轉換需要的LUT數。

BRAM資源主要用于輸入、權重和輸出緩存,對輸入輸出采用雙緩沖設計,權重計算前一次性加載一批到片上,因此BRAM數量應滿足公式(13):

在該架構設計下計算一個卷積層需要的時間可以通過公式(14)計算,其中H、W表示輸入圖像的長和寬,M、N表示輸入輸出通道數,當Winograd計算核心采用流水線設計時II等于1,Freq表示加速器工作頻率。

將公式(11)~(13)作為輸入參數代入到運行時重構的性能開銷模型中得到重構開銷,同時在給定資源下進行加速器的設計搜索,并用式(14)計算加速器執行時間,根據公式(9)可以獲得運行時重構帶來的性能收益,以及指導設計是否進行重構。

3 實驗結果與分析

3.1 驗證模型準確性

為了驗證本文提出的重構性能開銷模型的準確性,在XilinxVC709 FPGA平臺上對目前常用的神經網絡模型計算方法如Winograd算法、FFT算法、GEMM(通用矩陣乘法算法)和在相關工作中采用的加密算法如AES、DES等進行硬件加速并部署實現。其中Winograd算法和GEMM算法首先采用Xilinx公司的VivadoHLS 2018.3高層次綜合工具將高級語言編寫的代碼轉換為RTL級代碼,同時對數據采用16位定點量化的方案,加速器工作頻率為100 MHz,然后對所有算法使用Xilinx-Vivado 2018.3集成開發環境對其進行可重構硬件加速設計,并綜合、布局布線產生每個重構模塊的比特流文件。

如表7是使用綜合工具對各算法進行硬件加速測得的資源消耗數,將得到的RTL硬件代碼導出作為可重構模塊,使用Vivado按照動態重構設計流程進行部署實現,在實現時需要保證可重構區域包含的資源量要大于可重構模塊所需資源的最大值,這樣才能布局布線成功。

表7 各算法消耗的資源數Table 7 Number of resources consumed by each algorithm

為了得到完整的.bit和各重構模塊的部分.bit配置文件,需要為完整配置設計保存檢查點并鎖定靜態邏輯位置和路由,在該靜態設計基礎上替換其他重構模塊實現新的配置,從而產生不同的.bit配置文件。本文采用Vivado的動態部分重構項目流程,創建一個包含多個脫離上下文可重構模塊和配置實現的工程,其中每個配置是一個完整的設計,每個可重構分區都有一個可重構模塊,最終分別生成完整的.bit文件和可重構模塊的部分.bit配置文件,操作流程如圖8所示。

圖8 生成比特流文件設計流程Fig.8 Design process for generating bitstream files

從圖8可以看出,初始先完成模塊的設計并獲得網表文件,以及可重構區域的劃分;然后運行綜合工具的優化設計、布局布線設計得到邏輯功能在FPGA上的映射;接著通過write_checkpoint命令保存完整的設計檢查點,至此創建了一個完整的設計實現,為了將靜態部分設計用于后續的所有配置,需要刪除當前的可重構模塊,隔離靜態設計,因此通過update_design命令清除可重構區的邏輯,并使用lock_design-level routing命令鎖定布局布線,此時靜態部分設計被鎖定不會受到后續添加其他可重構模塊的影響,然后使用write_checkpoint命令保存只包含靜態設計的檢查點;之后向鎖定的靜態設計中添加其余新的可重構模塊,同樣完成優化設計、布局布線設計,并通過write_checkpoint命令保存模塊的設計檢查點,重復此操作直到所有模塊被處理完;最后使用pr_verify命令驗證所有配置通過后,使用open_checkpoint命令讀取每個配置到內存中,并通過write_bitstream生成完整.bit文件和部分配置.bit文件。具體的過程描述和動態可重構項目流程可以從Xilinx官方技術文檔[22-23]中查看。

當完成功能劃分、可重構模塊的設計實現、可重構區域的劃分等操作后,進行布局布線以及比特流的生成,如圖9所示是一個重構區域布局布線成功后的結果圖。

圖9 重構區域PlanAhead顯示Fig.9 PlanAhead display of reconstruction area

通過調整可重構區域不同的資源數,如擴大可重構區域矩形面積,可以分別獲得配置該重構區域的配置比特流文件,在保證可重構區域資源數滿足可重構模塊最大需求的前提下進行了多次實驗,獲得多個實際的部分重構比特流文件,并與本文2.3節提出的重構開銷模型得出的估計值進行對比分析,實驗結果如表8所示。

從表8中可知,本文提出的重構開銷模型最小相對誤差僅為0.28%,這是由于綜合工具產生的實際比特流文件,在.bit文件頭部會保存一些冗余信息,里面包含當前ISE工程名字、軟件版本、編譯時間等,這部分信息長度不固定且難以估計,而且并不包含實際的配置數據,因此本模型并沒有將這部分冗余信息加入到模型預測中,所以從實驗結果1、3、5、6等可以看出模型預測值略小于實際測得值,這比較符合實際情況。本文提出的重構開銷模型最大相對誤差僅為4.2%,這是由于模型根據可重構區的不同資源例數進行計算,但是在實際布局布線時可能在可重構區最靠近矩形邊框的資源列無法布線而未使用到,從實驗結果3和4可以看出,實驗4比3多加了一列CLB資源,但實際的重構開銷時間是一樣,是由于實驗4有一列資源未被配置,因此模型預測值會偏大,這可以從實驗結果2、4、6、12等看出模型預測值略大于實際測得值。

表8 重構開銷模型預測誤差表Table 8 Reconfiguration cost model prediction error table

本文針對多種算法實例進行測試驗證模型的準確度,其中Winograd、FFT、GEMM、AES和DES實例的平均相對誤差分別為1.55%、1.24%、1.59%、1.48%和0.53%,提出的重構開銷模型總體平均相對誤差為1.3%,預測精度比較符合實際的需求,可以很好地為設計者在動態重構設計初期對比特流大小和重構開銷進行估算,從而對設計的合理性進行分析,節省大量時間縮短實驗周期。

將本文提出的重構開銷模型和以往工作進行對比,對比結果如表9所示。由于設計方法和硬件平臺的不同會使產生的比特流大小不一樣,因此針對AES和DES算法選擇和以往工作比較接近的比特流測試用例。從對比結果中可以看到本文提出的重構開銷模型精度較以往工作有很大提高,這是由于文獻[9-11]只考慮重構過程中一些物理組件,忽略了對比特流的分析,本文總結比特流格式,并基于此構建的重構開銷模型具有更高的準確度。同時文獻[12]對舊系列FPGA器件進行研究,精度較高但不能很好應用于新型FPGA,本文針對Virtex-7系列FPGA的重構開銷進行研究,具有更高的實際應用價值。

表9 與以往重構開銷模型對比Table 9 Comparison with previous reconfiguration cost model

3.2 模型估算重構性能收益

按照2.3節提出的重構開銷模型,對硬件重構是否帶來潛在的性能收益進行判斷,采用Winograd算法對Alexnet卷積層進行動態重構硬件加速來說明,在XilinxVC709 FPGA平臺進行測試。加速器采用16位定點量化方案,工作頻率為100 MHz,軟件仿真環境采用Xilinx VivadoHLS 2018.3高層次綜合工具,估計Winograd矩陣轉換消耗的LUT資源,XilinxVivado 2018.3開發環境對重構分區和加速器進行綜合和分析。

Winograd計算核心轉換矩陣消耗的LUT資源量通過HLS工具提前測得,如表10所示,作為接下來模型的參數輸入,用于對加速器資源消耗的估計。由表10可以看出,隨著Winograd輸入輸出尺寸的增大,對LUT資源的需求也越大,尤其對于輸出尺寸為3、5類型,由于轉換矩陣中常數不是2的整數倍,因此通過移位需要消耗更多的資源。

表10 Winograd矩陣轉換消耗LUT數Table 10 LUTs consumed by Winograd matrix conversion

針對Alexnet的卷積層Conv_2、Conv_3和Conv_4進行舉例分析,其中Conv_2使用的5×5卷積核,Conv_3和Conv_4使用3×3卷積核,對于5×5的卷積核可以使用定制的5×5卷積硬件架構實現,也可以使用零填充的4個3×3卷積核實現。在有限資源的FPGA可重構區RP下針對卷積層的最大吞吐量進行最優解求解,假定有兩個RP具有的資源量分別為RP1:14 400個LUT、100個DSP、120個18 Kb的BRAM;RP2:20 800個LUT、120個DSP、180個18 Kb的BRAM。求解結果如表11所示。

表11 Alexnet卷積層硬件設計和性能開銷對比Table 11 Hardware design and performance overhead comparison of convolutional layers in Alexnet

從實驗結果可以看出,若FPGA初始時采用3×3的卷積核硬件結構,卷積層Conv_2在可重構區RP1的最優設計是使用F(2×2,3×3)計算核心,Pm=1、Pn=5的并行展開,此時計算時間為51.12 ms,由于Conv_2使用5×5卷積核并不適用于該計算核心,若重構為F(2×2,5×5)計算核心,進行Pm=1、Pn=2的并行展開時,此時計算時間只有31.46 ms,由此可以看出重構帶來的性能收益是縮短19.66 ms的計算時間,顯著大于此次重構的開銷6.34 ms,因此針對這種情況硬件加速時應當選擇進行重構;然而對于可重構區RP2采用初始硬件架構計算Conv_2耗時29.74 ms,若重構為使用F(2×2,5×5)計算核心,Pm=1、Pn=3并行展開的硬件架構,計算時間為21.13 ms,獲得8.61 ms的性能提升,但是此時重構開銷為8.19 ms,重構帶來的性能提升基本被重構開銷耗盡,此種情況下重構并不是一個很好的選擇。同理,針對卷積層Conv_3和Conv_4的硬件加速,由于都使用3×3卷積核,且并行策略一樣,若進行重構并不會獲得額外的性能收益,反而會因重構開銷存在增大整體的計算時間,因此針對這種情況硬件加速時應當選擇不進行重構。

4 總結與展望

本文針對動態重構硬件加速時,動態重構開銷在設計初期難以測算問題,提出一個動態重構開銷的估算模型,可以在可重構系統設計早期獲得精準的重構開銷,避免冗長的設計流程,加速可重構系統的設計。本文不同于以往研究方法,將影響重構開銷的諸多因素抽象到對比特流的分析,總結比特流格式來估算比特流大小,并基于此構建的重構開銷模型準確度更高,并通過實驗在XilinxVC709FPGA平臺針對神經網絡計算方法如Winograd算法、FFT算法、GEMM算法和加密算法如AES、DES進行了動態重構模式下的硬件部署,實驗結果表明該模型的總體平均相對誤差僅為1.3%,預測精度比較符合實際的需求。同時該模型可以便捷地應用于現代動態重構硬件加速中,具有較高的工程實用價值,使用該模型對Alexnet神經網絡的卷積層硬件加速時重構是否帶來性能收益進行了實驗分析,為動態重構設計者在設計初期提供一個方案來估算設計的合理性,可以有效縮短實驗周期。

本文提出的運行時重構性能開銷模型,是通過FPGA內部配置訪問端口ICAP來估算出重構的時間開銷,接下來的研究可以從比特流的配置過程入手,對FPGA的配置時間開銷進一步研究。同時實驗中也發現動態重構的開銷不容忽視,對硬件加速器的性能影響比較大,接下來研究可以從減少重構開銷入手,如配置比特流壓縮、提升ICAP配置端口帶寬等。

猜你喜歡
資源模型設計
一半模型
基礎教育資源展示
重要模型『一線三等角』
一樣的資源,不一樣的收獲
重尾非線性自回歸模型自加權M-估計的漸近分布
資源回收
瞞天過?!律O計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
資源再生 歡迎訂閱
資源再生(2017年3期)2017-06-01 12:20:59
主站蜘蛛池模板: 国产xx在线观看| 综合五月天网| 91在线无码精品秘九色APP| 国产美女91视频| 99免费在线观看视频| 一级毛片免费高清视频| 亚洲高清资源| 老色鬼久久亚洲AV综合| 中国国产高清免费AV片| 人妻21p大胆| 麻豆精品在线视频| 成人蜜桃网| 日韩激情成人| 亚洲第一黄片大全| 亚洲高清中文字幕在线看不卡| 久久精品中文无码资源站| 久久精品国产亚洲AV忘忧草18| 亚洲成人免费看| 97视频在线观看免费视频| 日本在线亚洲| 国产成人精品视频一区二区电影| 成年人久久黄色网站| 国产杨幂丝袜av在线播放| 999精品在线视频| 国产凹凸视频在线观看| 伊人久热这里只有精品视频99| 亚洲男人在线| 欧美国产成人在线| 精品色综合| 国产精品亚洲天堂| 国产精品蜜臀| 中文字幕有乳无码| 人妻21p大胆| 国产香蕉在线| 亚洲精品第1页| 97超级碰碰碰碰精品| 亚洲三级片在线看| 国产精品网拍在线| 色噜噜狠狠色综合网图区| 中文字幕久久波多野结衣 | 狠狠操夜夜爽| 97久久精品人人| 免费一级毛片| 久草中文网| 日韩人妻无码制服丝袜视频| 最新亚洲av女人的天堂| 天天躁夜夜躁狠狠躁图片| 国产成人亚洲欧美激情| 午夜无码一区二区三区在线app| 免费看的一级毛片| 日韩精品久久无码中文字幕色欲| 理论片一区| 亚洲三级成人| 亚洲成在人线av品善网好看| 精品剧情v国产在线观看| 亚洲日韩AV无码精品| 国产日本欧美在线观看| 国产黑丝视频在线观看| 久久综合色视频| 欧美全免费aaaaaa特黄在线| 在线观看国产精品一区| 亚洲综合欧美在线一区在线播放| 亚洲成aⅴ人片在线影院八| 狠狠亚洲五月天| 欧美激情综合一区二区| 日韩毛片免费视频| 91久久精品日日躁夜夜躁欧美| 亚洲香蕉久久| 青青草原偷拍视频| 日韩色图区| 久综合日韩| 国产99久久亚洲综合精品西瓜tv| 97国产精品视频自在拍| 狠狠亚洲婷婷综合色香| 在线国产资源| 91欧美亚洲国产五月天| 999精品免费视频| 国产成人精品2021欧美日韩| 国产精品成人AⅤ在线一二三四| 国产精品无码久久久久久| 看国产毛片| 有专无码视频|