[發(fā)明專利]面向FPGA的粗粒度FIFO硬件通道自動擬合方法在審
| 申請?zhí)枺?/td> | 202310903805.6 | 申請日: | 2023-07-24 |
| 公開(公告)號: | CN116629353A | 公開(公告)日: | 2023-08-22 |
| 發(fā)明(設(shè)計)人: | 趙康;王亞軍;崔軍;侯人靖 | 申請(專利權(quán))人: | 北京郵電大學 |
| 主分類號: | G06N3/10 | 分類號: | G06N3/10;G06F30/331;G06F30/327;G06F8/41;G06F117/08 |
| 代理公司: | 北京方圓嘉禾知識產(chǎn)權(quán)代理有限公司 11385 | 代理人: | 王月松 |
| 地址: | 100876 *** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 面向 fpga 粒度 fifo 硬件 通道 自動 擬合 方法 | ||
本發(fā)明公開了一種面向FPGA的粗粒度FIFO硬件通道自動擬合方法,涉及FPGA技術(shù)領(lǐng)域,該方法包括:獲取數(shù)據(jù)流目標區(qū)域內(nèi)的子函數(shù)調(diào)用及對應的調(diào)用指令序列;判斷任一相鄰子函數(shù)調(diào)用指令是否具有相同的數(shù)組參數(shù)變量,若是將相鄰子函數(shù)調(diào)用指令所對應的函數(shù)體內(nèi)部的所有子函數(shù)調(diào)用實現(xiàn)函數(shù)內(nèi)嵌,并掃描實現(xiàn)函數(shù)內(nèi)嵌的相鄰子函數(shù)內(nèi)每條與數(shù)組參數(shù)變量相關(guān)的讀/寫指令,若相鄰子函數(shù)中的前一個子函數(shù)內(nèi)只有寫指令發(fā)生在數(shù)組參數(shù)變量上且相鄰子函數(shù)中的后一個子函數(shù)內(nèi)只有讀指令發(fā)生在數(shù)組參數(shù)變量上,則完成FIFO硬件通道的擬合。本發(fā)明能夠幫助用戶自動分析函數(shù)間的數(shù)據(jù)傳輸關(guān)系,自動判定并完成FIFO硬件通道的擬合。
技術(shù)領(lǐng)域
本發(fā)明涉及FPGA技術(shù)領(lǐng)域,特別是涉及一種面向FPGA的粗粒度FIFO(first-in-first-out,先入先出)硬件通道自動擬合方法。
背景技術(shù)
目前,神經(jīng)網(wǎng)絡算法廣泛應用于目標檢測、軌跡預測等場景,具有響應快速、準確率高等特點。其中,視覺分析占據(jù)大部分場景。然而,實時環(huán)境瞬息萬變,需要神經(jīng)網(wǎng)絡算法滿足嚴苛的實時性與精確度,此時必須配置超高算力才能實現(xiàn)快速準確的響應,如自動駕駛領(lǐng)域。為了滿足不同應用場景和超高算力的要求,需要定制固化不同神經(jīng)網(wǎng)絡算法的智能芯片。但是,芯片硬件的開發(fā)不同于軟件算法的設(shè)計,其開發(fā)周期更長,迭代改進的速度慢,出錯的概率高,且不同應用場景需要設(shè)計不同的智能芯片,進一步地放大了這些缺陷與局限性。如果僅靠傳統(tǒng)硬件工程師借助經(jīng)驗與手工的設(shè)計方式,則很難滿足上述需求。
電子設(shè)計自動化(electronic?design?automation,EDA)工具,尤其是高層次綜合(High-level?Synthesis,HLS)工具可以有效解決上述這一困境。高層次綜合指的是將C/C++等常用軟件描述語言自動轉(zhuǎn)換為Verilog/VHDL等硬件描述語言。HLS工具,不但可以針對不同的應用場景定制不同的智能芯片,解放生產(chǎn)力,替代傳統(tǒng)硬件工程師,還可以將合適的C/C++軟件描述語言迅速生成合適的硬件描述語言并實現(xiàn)高算力加速。
神經(jīng)網(wǎng)絡算法,應用了大量的矩陣乘、卷積操作、數(shù)組操作等運算,適合采用FPGA固化加速。其中,粗粒度并行加速的效果最佳。在HLS自動固化加速流程中,數(shù)據(jù)流(dataflow)是常用的粗粒度并行加速技術(shù)。在C/C++等軟件描述語言中,函數(shù)是粗粒度一級,子函數(shù)之間是順序執(zhí)行的關(guān)系。如果可以把前一函數(shù)的執(zhí)行結(jié)果提前發(fā)放給下一個函數(shù)并驅(qū)動下一函數(shù)提前并行執(zhí)行,則可以大大提高其運算性能,這也是數(shù)據(jù)流的基本思想。例如:A、B、C在C/C++軟件描述語言中是順序執(zhí)行的粗粒度函數(shù),A的輸出通過數(shù)組temp1傳遞給B,B通過數(shù)組temp1得到數(shù)據(jù)后經(jīng)計算再傳遞給數(shù)組temp2,然后再輸出給C。這種串行執(zhí)行效率極低。如果將數(shù)組temp1、數(shù)組temp2改為FIFO硬件通道,則B可以在A未結(jié)束前提前運行,C也可以在有通道數(shù)據(jù)輸入情況下并行執(zhí)行,以此大大提高運行效率。其中,能夠擬合為FIFO硬件通道的條件有三點:第一,相鄰函數(shù)具有相同數(shù)組,且該數(shù)組在前面函數(shù)內(nèi)只寫,在后面函數(shù)內(nèi)只讀;第二,對目標數(shù)組的讀或?qū)懀仨殗栏癜磧?nèi)存地址順序讀寫,不能發(fā)生跳變;第三,對目標數(shù)組的讀或?qū)懀仨毎l(fā)生在數(shù)組所有元素上,不能遺漏。
目前只能靠人工一點點分析C/C++軟件描述語言,以確定能否擬合為FIFO硬件通道。顯然,如何幫助用戶自動分析函數(shù)間的數(shù)據(jù)傳輸關(guān)系,自動判定并完成FIFO硬件通道的擬合,是提高神經(jīng)網(wǎng)絡芯片自動化效率的關(guān)鍵。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種面向FPGA的粗粒度FIFO硬件通道自動擬合方法,能夠幫助用戶自動分析函數(shù)間的數(shù)據(jù)傳輸關(guān)系,自動判定并完成FIFO硬件通道的擬合,進而提高神經(jīng)網(wǎng)絡芯片的自動化效率。
為實現(xiàn)上述目的,本發(fā)明提供了如下方案:
一種面向FPGA的粗粒度FIFO硬件通道自動擬合方法,包括:
利用LLVM編譯框架,通過函數(shù)、基本塊和指令組成的三級結(jié)構(gòu)獲取數(shù)據(jù)流目標區(qū)域內(nèi)的子函數(shù)調(diào)用及對應的調(diào)用指令序列;所述調(diào)用指令序列包括n個子函數(shù)調(diào)用指令;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京郵電大學,未經(jīng)北京郵電大學許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202310903805.6/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





