
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、如何用fpga實現算法的硬件加速當設計者試圖從算法中獲得最佳性能但軟件辦法已無計可施時,可以嘗試通過硬件/軟件重新劃分來舉行加速。易于實現軟件模塊和硬件模塊的互相交換,且不必轉變處理器或舉行板級變動。本文闡述如何用fpga來實現算法的硬件加速。假如想從代碼中獲得最佳性能,辦法包括優化算法、用法查找表而不是算法、將一切都轉換為本地字長尺寸、用法注冊變量、解開循環甚至可能采納匯編代碼。假如全部這些都不奏效,可以轉向更快的處理器、采納一個不同的處理器架構,或將代碼一分為二通過兩個處理器并行處理。不過,假如有一種辦法可將那些對時光有嚴格要求的代碼段轉換為能夠以5-100倍速度運行的函數調用,而且假如這
2、一辦法是一種可供軟件開發之用的標準工具,這可信嗎?現在,利用可編程規律作為硬件加速的基礎可使這一切都變成現實。圖1:帶定制命令的可配置處理器架構。低成本可編程規律在系統中應用得越來越普遍,這為系統設計者提供了一個無需對處理器或架構舉行大的改動即可獲得更高性能的可選計劃。可編程規律可將計算密集型功能轉換為硬件加速功能。從軟件的角度看,這只是容易地將一個函數調用做進一個定制的硬件模塊中,但運行速度要比通過匯編語言優化的相同代碼或將算法轉換為查找表要快得多。1 硬件加速首先探討一下什么是硬件加速,以及將算法作為定制命令來實現與采納硬件外圍的區分。硬件加速是指利用硬件模塊來替代軟件算法以充分利用硬件所
3、固有的迅速特性。從軟件的角度看,與硬件加速模塊接口就跟調用一個函數一樣。唯一的區分在于此函數駐留在硬件中,對調用函數是透亮的。取決于算法的不同,執行時光最高可加快100倍。硬件在執行各種操作時要快得多,如執行復雜的數學功能、將數據從一個地方轉移到另一個地方,以及多次執行同樣的操縱。本文后面將研究一些通常用軟件完成的操作,經過硬件加速后這些操作可獲得極大的性能提高。假如在系統設計中采納fpga,那么在設計周期的任何時候都可以添加定制的硬件。設計者可以立即編寫軟件代碼,并可在終于定稿之前在硬件部分上運行。此外,還可以實行增量法來打算哪部分代碼用硬件而不是軟件來實現。fpga供給商所提供的開發工具可
4、實現硬件和軟件之間的無縫切換。這些工具可以為規律和中斷規律生成hdl代碼,并可按照系統配置定制軟件庫及include文件。2 帶一些cisc的risc精簡命令集計算(risc)架構的目標之一即是保持命令容易化,以便讓命令運行得足夠快。這與復雜命令集計算(cisc)架構正巧相反,后者普通不會同樣快地執行命令,但每個命令可完成更多處理任務。這兩種架構應用得都很普遍,而且各有所長。假如能按照特定的應用將risc的容易和迅速特性與cisc強大的處理能力結合起來,豈不兩全其美?其實這正是硬件加速所要做的。加入為某種應用而定制的硬件加速模塊可以提高處理能力,并削減代碼復雜性和密度,由于硬件模塊取代了軟件模
5、塊。可以這么說,是用硬件來換取速度和容易性。定制命令和硬件外圍電路方式有兩種硬件加速模塊實現方式。其一是定制命令,它幾乎可在每一個可配置處理器中實現,這是采納可配置處理器的主要優點。1所示,定制命令是作為算術規律單元(alu)的擴展而添加的。處理器只知道定制命令就像其它命令一樣,包括擁有自己的操作代碼。至于c代碼,宏可自動生成,從而使得用法該定制命令跟調用函數一樣。假如定制命令需要幾個時鐘周期才干完成,而且要延續調用它,則可以流水線式定制命令來實現。這樣可在每個時鐘周期產生一個結果,不過開頭時有些延遲。硬件加速模塊的另一種實現方式是硬件外圍電路。在這一方式下,數據不是傳遞給軟件函數,而是寫入存
6、儲器映射的硬件外圍電路中。計算是在cpu之外完成的,因此在外圍電路工作的同時cpu可以繼續運行代碼。其實代替軟件算法的只是一個一般的硬件外圍電路。與定制命令的另一個不同之處是硬件外圍電路可以拜訪系統中的其它外圍電路或存儲器,而無須cpu介入。按照硬件需要做什么、怎么工作以及需要多長時光可以打算采納是定制命令還是硬件外圍電路更合適。對于那些在幾個周期內就可完成的操作,定制命令普通更好些,由于它產生的開銷要更少。對于外圍電路,普通需要執行幾個命令來寫入控制寄存器、狀態寄存器和數據寄存器,而且需要一個命令來讀取結果。假如計算需要幾個周期,實施外圍電路比較好,由于它不會影響cpu流水線。或者,也可以實
7、施前面所述的流水線式定制命令。另一個區分是定制命令需要有限數目的操作數,并返回一個結果。按照處理器命令集架構的不同,操作數也各異。對某些操縱,這樣可能顯得很棘手。此外,假如需要硬件從存儲器或存儲器中的其它外圍電路讀出和寫入,則必需采納硬件外圍電路,由于定制命令無法拜訪總線。圖2:16位crc算法的硬件實現。(optional)3 挑選代碼當需要優化代碼以滿足某些速度要求時,可能要運行一個代碼仿制工具,或親手檢查該代碼以便了解代碼的哪個部分導致系統停滯。固然,這需要認識代碼以便知道瓶頸在哪兒。即便找出瓶頸所在,如何優化也是個挑戰。有些計劃采納本地字大小的變量、帶預先計算值的查找表,以及通用軟件算
8、法優化。這些技巧可產生快幾倍的執行速度效果。另一種優化c算法的辦法是用匯編語言編寫。過去這種辦法可獲得很好的提高,但現今的編譯器在優化c算法上已做得很好,因此這種性能的提高是有限的。假如需要顯著的性能提高,傳統的軟件算法優化技巧唯恐是不夠的。然而,利用硬件實施的算法比軟件實施要強100倍,這不足為奇。那么,如何確定將哪些代碼轉為硬件實施呢?大可不必將囫圇軟件模塊轉換為硬件,而應挑選那些在硬件中運行得特殊快的操作,比如將數據從一處復制到另一處、大量的數學運算以及任何運行多次的循環。假如一個任務由幾個數學運算組成,還可以考慮在硬件中加速囫圇任務。有些時候,僅加速任務中的一個操作就可滿足性能要求。4
9、 實例:crc算法的硬件加速因為大量且重復的計算,循環冗余校驗(crc)算法或任何“校驗和”算法都是硬件加速的不錯挑選。下面通過一個crc算法的優化過程來探討如何實現硬件加速。首先,利用傳統的軟件技巧來優化算法,然后將其轉向定制命令以加速算法。我們將研究不同實現辦法的性能比較和折衷。crc算法可用來校驗數據在傳輸過程中是否被破壞。這些算法很流行,由于它們具有很高的檢錯率,而且不會對數據吞吐量造成太大影響,由于crc校驗位被添加進數據信息中。但是,crc算法比一些容易的校驗和算法有更大的計算量要求。盡管如此,檢錯率的提高使得這種算法值得去實施。普通說來,發送端對要被發送的消息執行crc算法,并將
10、crc結果添加進該消息中。消息的接收端對包括crc結果在內的消息執行同樣的crc操作。假如接收端的結果與發送端的不同,這解釋數據被破壞了。crc算法是一種密集的數學運算,涉及到二元模數除法(modulo-2 division),即數據消息被16或32位多項式(取決于所用crc標準)除所得的余數。這種操作普通通過異或和移位的迭代過程來實現,當采納16位多項式時,這相當于每數據字節要執行數百條命令。假如發送數百個字節,計算量就會高達數萬條命令。因此,任何優化都會大幅提高吞吐量。代碼列表1中的crc函數有兩個自變量(消息指針和消息中的字節數),它可返回所計算的crc值(余數)。盡管該函數的自變量是一
11、些字節,但算要逐位來執行。該算法并不高效,由于全部操作(與、移位、異或和循環控制)都必需逐位地執行。列表1:逐位執行的crc算法c代碼。/* the width of the crc calculation and result.* modify the typedef for a 16or32-bit crc standard.*/typedef unsigned char crc;define wh (8 * sizeof(crc)define topbit (1 0; "bit)/* try to divide the current data bit.*/if (remain
12、der &topbit)remainder = (remainder 1).傳統的軟件優化圖3:帶crc外圍電路和dma的系統模塊暗示圖。讓我們看一下如何利用傳統的軟件技巧來優化crc算法。由于crc操作中的一個操作數,即多項式(除數)是常數,字節寬crc操作的全部可能結果都可以預先計算并存儲在一個查找表中。這樣,通過一個讀查找表動作就可讓操作按逐個字節執行下去。采納這一算法時,需要將這些預先計算好的值存儲在存儲器中。挑選rom或ram都可以,只要在啟動crc計算之前將存儲器初始化就行。查找表有256個字節,表中每個字節位置包含一個crc結果,共有256種可能的8位消息(與多項式大小無
13、關)。列表2示出了采納查找表辦法的c代碼,包括生成查找表crcinit()中數值的代碼。crc crctable256;void crcinit(void)crc remainder;/* compute the remainder of each possible dividend.*/for (int dividend = 0; dividend 0; "bit)/* try to divide the current data bit.*/if (remainder &topbit)remainder = (remainder > (width - 8);rema
14、inder = crctabledata (remainder表1:各種規模的數據模塊下crc算法測試比較結果。2).采納定制命令辦法crc算法由延續的異或和移位操作構成,用很少的規律即可在硬件中容易實現。因為這一硬件模塊僅需幾個周期來計算crc,采納定制命令來實現crc計算要比采納外圍電路更好。此外,無須涉及系統中任何其它外圍電路或存儲器。僅需要一個微處理器來支持定制命令即可,普通是指可配置微處理器。當在硬件中實現時,算法應當每次執行16或32位計算,這取決于所采納的crc標準。假如采納crc-ccitt標準(16位多項式),最好每次執行16位計算。假如用法8位微處理器,效率可能不太高,由于
15、裝載操作數值及返回crc值需要額外的周期。圖2示出了用硬件實現16位crc算法的內核。信號msg(15.0)每次被移入異或/移位硬件一位。列表3示出了在64kb數據模塊上計算crc的一些c代碼例子。該實例是針對nios嵌入式處理器。列表3:采納定制命令的crc計算c代碼。unsigned short crccompute(unsigned short *data_block, unsigned int nwords)unsigned short* pointer;unsigned short word;/* initialize crc reg to 0xffff*/word = nm_crc
16、 (0xffff, 1); /* nm_crc() is the crc custom instruction */* calculate crc on block of data* nm_crc() is the crc custom instruction*/for (pointer = data_block; pointer 3).crc外圍電路辦法假如將crc算法作為硬件外圍電路來實現,并利用dma將數據從存儲器轉移到外圍電路,這樣還可以進一步提高速度。這種辦法將省去處理器為每次計算而裝載數據所需要的額外周期。dma可在此外圍電路完成前一次crc計算的時鐘周期內提供新的數據。圖3示出了
17、利用dma、crc外圍電路來實現加速的系統模塊暗示圖。在64kb數據模塊上,利用帶dma的定制外圍電路可獲得比逐位計算的純軟件算法快500倍的性能。要知道,隨著數據模塊規模的增強,用法dma所獲得的性能也隨之提高。這是由于設置dma僅需很少的開銷,設置之后dma運行得特殊快,由于每個周期它都可以傳遞數據。因此,若惟獨少數字節的數據,用dma并不劃算。這里所研究的全部采納crc-ccitt標準(16位多項式)的算法都是在 stratix fpga的nios處理器上實現的。表1示出了各種數據長度的測試比較結果,以及大致的硬件用法狀況(fpga中的存儲器或規律單元)。可以看出,算法所用的硬件越多,算法速度越快。這是用硬件資源來換取速度。5 fpga的優點當采納基于fpga的嵌入式系統時,在設計周期之初不必為每個模塊做出用硬件還是軟件的挑選。假如在設計中間階段需要一些額外的性能,則可以利用fpga中現有的硬件資源來加速軟件代碼中的瓶頸部分。因為fpga中的規律單元是可編程的,可針對特定的應用而定制硬件。因此,僅用法所需要的硬件即可,而不必做出任何板級變動(前提是fpga中的規律單元足夠用)。設計者不必轉換到另一個新的處理器或者編寫匯編代碼,就可做到這一點。用法帶可配置處理器的fpga可獲得設計靈便性。設計者可以挑選如何實現軟件代碼中的每個模塊,如用定制命令,或硬件外圍電路。此外,還
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 海洋文化創意產品開發
- 美術課件介紹視頻
- 美術消防員課件圖片
- 美術教師技能大賽課件
- 美術圖案分析課件
- 總助崗位職責
- 林業生態扶貧培訓課件
- 校園安全隱患排查整改方案
- 2020年全國生產安全事故心得體會
- 美容課件介紹
- 期末作文預測外研版七年級英語下冊
- 2025-2030中國功率半導體器件市場格局與投資方向報告
- 統編版五年級升六年級語文暑期銜接《課外閱讀》專項測試卷及答案
- 2025年 煙草陜西公司招聘考試筆試試題附答案
- 2025年老年教育課程設置:藝術修養與審美教學探索報告
- 譯林版一年級下冊全冊英語知識點梳理
- 2025年河北高考真題化學試題+解析(參考版)
- 護理事業十五五發展規劃(2026-2030)
- 2025至2030中國數字出版行業產業運行態勢及投資規劃深度研究報告
- 2025至2030中國中藥材種植行業運作模式與競爭格局分析報告
- 人教版(2024)七年級下冊英語全冊教案(8個單元整體教學設計)
評論
0/150
提交評論