本發(fā)明涉及半導(dǎo)體集成電路,尤其涉及一種基于risc-v的卷積神經(jīng)網(wǎng)絡(luò)加速處理系統(tǒng)及其協(xié)處理器。
背景技術(shù):
1、隨著人們對(duì)卷積神經(jīng)網(wǎng)絡(luò)的需求逐漸多元,對(duì)運(yùn)算精度的要求不斷提高,導(dǎo)致卷積神經(jīng)網(wǎng)絡(luò)的層數(shù)逐漸增多,規(guī)模和參數(shù)的數(shù)量也大幅增長(zhǎng)。若將算法部署在視頻監(jiān)控、移動(dòng)終端等嵌入式系統(tǒng)上,嵌入式處理器的計(jì)算性能不足的問(wèn)題使其難以滿足算力需求,因此卷積神經(jīng)網(wǎng)絡(luò)的硬件加速技術(shù)成為當(dāng)前學(xué)術(shù)界和工業(yè)界的研究熱點(diǎn)之一。
2、國(guó)內(nèi)外學(xué)者通過(guò)不同方式來(lái)加速卷積神經(jīng)網(wǎng)絡(luò)運(yùn)算,許庚林等提出一種由32位專用指令控制、具有可切換卷積計(jì)算結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)協(xié)處理器,實(shí)現(xiàn)復(fù)雜神經(jīng)網(wǎng)絡(luò)在fpga平臺(tái)上的加速計(jì)算,可通過(guò)指令控制mac結(jié)構(gòu)或乘加樹(shù)結(jié)構(gòu),該協(xié)處理器加速效果較好但是fpga為了追求靈活性,使每個(gè)最基本的clb都必須可配置,造成了大量冗余,以至于效率不高且有限的帶寬和片上存儲(chǔ)也限制著fpga在神經(jīng)網(wǎng)絡(luò)加速器中的應(yīng)用。劉芳等提出在risc-v架構(gòu)的基礎(chǔ)上,為卷積神經(jīng)網(wǎng)絡(luò)定制專用的加速處理系統(tǒng)rcp(risc-v?cnnprocessor),通過(guò)定制處理器技術(shù)從硬件視角進(jìn)行卷積運(yùn)算的加速。但是該加速處理系統(tǒng)未設(shè)計(jì)輸出數(shù)據(jù)及輸出數(shù)據(jù)緩沖模塊,多次卷積操作需要頻繁從內(nèi)存中讀取數(shù)據(jù)浪費(fèi)不必要的時(shí)間。苗瑞霞等為加速嵌入式平臺(tái)arm?cmsis-nn上的神經(jīng)網(wǎng)絡(luò)卷積算法采用risc-v的p拓展指令集中特有的8位數(shù)據(jù)操作指令,優(yōu)化arm?cmsis-nn庫(kù)中因?yàn)槿鄙賒sp指令8位數(shù)據(jù)操作指令而帶來(lái)的內(nèi)存使用效率不高的不足。該方法同樣未設(shè)計(jì)數(shù)據(jù)緩存模塊,加速效果并不理想。傅思揚(yáng)等設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)低功耗嵌入式卷積神經(jīng)網(wǎng)絡(luò)加速處理系統(tǒng),并采用單周期內(nèi)只對(duì)1行數(shù)據(jù)進(jìn)行卷積操作,后接累加器進(jìn)行行卷積結(jié)果累加得到運(yùn)算結(jié)果的方法來(lái)對(duì)卷積運(yùn)算進(jìn)行優(yōu)化。該設(shè)計(jì)通用性較低,僅支持卷積核尺寸為5*5的卷積計(jì)算,不支持卷積核尺寸大于5*5的卷積運(yùn)算,并且在卷積尺寸小于5*5時(shí),會(huì)造成資源閑置。楊維科等基于rocket-chip開(kāi)源處理器,提出了一種基于eyeriss結(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡(luò)加速模塊,該加速器結(jié)構(gòu)通過(guò)進(jìn)行橫向(卷積核權(quán)值),縱向(輸出計(jì)算結(jié)果)以及斜向(輸入圖像)的數(shù)據(jù)重用,大大減少了卷積層的時(shí)間消耗,但該設(shè)計(jì)中eyeriss結(jié)構(gòu)容易造成pe運(yùn)算單元資源的浪費(fèi)。上述工作存在資源消耗較大、加速效果不理想以及通用性較低等問(wèn)題。因此,設(shè)計(jì)一種可加速卷積運(yùn)算,并且資源消耗低、可適用于不同卷積尺寸的高性能密度協(xié)處理器是解決上述問(wèn)題的有效途徑。
技術(shù)實(shí)現(xiàn)思路
1、為解決背景技術(shù)中存在的技術(shù)問(wèn)題,本發(fā)明提出一種基于risc-v的卷積神經(jīng)網(wǎng)絡(luò)加速處理系統(tǒng)及其協(xié)處理器。
2、第一方面,本發(fā)明提出的一種基于risc-v的卷積神經(jīng)網(wǎng)絡(luò)加速處理系統(tǒng),包括:主處理器和協(xié)處理器,主處理器與協(xié)處理器之間通過(guò)擴(kuò)展加速接口連接;
3、其中,主處理器用于通過(guò)擴(kuò)展加速接口向協(xié)處理器發(fā)送自定義的輸入數(shù)據(jù)指令:其中,輸入數(shù)據(jù)指令包括載入輸入特征圖指令以及載入權(quán)值指令;
4、協(xié)處理器用于在接收到主處理器發(fā)送的輸入數(shù)據(jù)指令后,通過(guò)擴(kuò)展加速接口向主處理器發(fā)送存儲(chǔ)請(qǐng)求信號(hào);
5、主處理器用于在接收到存儲(chǔ)請(qǐng)求信號(hào)后,通過(guò)擴(kuò)展加速接口將主處理器的數(shù)據(jù)緊耦合存儲(chǔ)器中存儲(chǔ)的輸入數(shù)據(jù)加載至協(xié)處理器中,協(xié)處理器用于將輸入數(shù)據(jù)進(jìn)行緩存;其中,輸入數(shù)據(jù)包括輸入特征圖和權(quán)值參數(shù);
6、當(dāng)輸入數(shù)據(jù)加載完畢后,主控制器用于通過(guò)擴(kuò)展加速接口向協(xié)處理器發(fā)送卷積運(yùn)算指令;
7、協(xié)處理器用于在接收到卷積運(yùn)算指令后對(duì)輸入數(shù)據(jù)進(jìn)行卷積計(jì)算,得到輸出數(shù)據(jù),并將輸出數(shù)據(jù)進(jìn)行緩存;其中,輸出數(shù)據(jù)包括輸出特征圖;
8、主處理器還用于通過(guò)擴(kuò)展加速接口向協(xié)處理器發(fā)送輸出數(shù)據(jù)指令;其中,輸出數(shù)據(jù)指令包括導(dǎo)出輸出特征圖指令;
9、協(xié)處理器還用于在接收輸出數(shù)據(jù)指令后通過(guò)擴(kuò)展加速接口將輸出數(shù)據(jù)寫回至主處理器的數(shù)據(jù)緊耦合存儲(chǔ)器中。
10、在本實(shí)施例中,協(xié)處理器包括頂層控制模塊、輸入數(shù)據(jù)緩存模塊、卷積運(yùn)算模塊和輸出數(shù)據(jù)緩存模塊;
11、頂層控制模塊通過(guò)擴(kuò)展加速接口與主處理器連接,頂層控制模塊用于負(fù)責(zé)與主處理器進(jìn)行通訊以接收輸入數(shù)據(jù)指令、輸入數(shù)據(jù)、卷積運(yùn)算指令和輸出數(shù)據(jù)指令,并將輸入數(shù)據(jù)指令、卷積運(yùn)算指令和輸出數(shù)據(jù)指令分別轉(zhuǎn)化為對(duì)應(yīng)使能信號(hào),然后將使能信號(hào)傳輸給相應(yīng)的模塊;
12、輸入緩存模塊用于緩存頂層控制模塊從主處理器接收到的輸入數(shù)據(jù)指令,并將輸入數(shù)據(jù)指令中的相應(yīng)參數(shù)及數(shù)據(jù)傳至卷積運(yùn)算模塊;
13、卷積模塊用于根據(jù)頂層控制模塊所發(fā)送的使能信號(hào)以及輸入緩存模塊傳輸?shù)南鄳?yīng)參數(shù)及數(shù)據(jù)進(jìn)行卷積運(yùn)算,并將卷積運(yùn)算得到的輸出數(shù)據(jù)存入輸出緩存模塊,并返回卷積完成信號(hào)給頂層控制模塊;
14、輸出緩存模塊用于緩存卷積運(yùn)算所得輸出特征圖數(shù)據(jù),還用于根據(jù)頂層控制模塊所發(fā)送的使能信號(hào)將輸出數(shù)據(jù)傳輸至頂層控制模塊,頂層控制模塊還用于通過(guò)擴(kuò)展加速接口將輸出數(shù)據(jù)寫回至主處理器的數(shù)據(jù)緊耦合存儲(chǔ)器中。
15、在本實(shí)施例中,卷積運(yùn)算模塊包括可重構(gòu)處理單元和重構(gòu)控制單元;
16、其中,重構(gòu)控制單元用于根據(jù)輸入數(shù)據(jù)指令中的輸入卷積核的尺寸生成重構(gòu)指令;
17、可重構(gòu)處理單元包括多個(gè)pe處理單元,多個(gè)pe處理單元用于形成pe陣列;其中,可重構(gòu)處理單元用于根據(jù)重構(gòu)指令進(jìn)行pe陣列的重構(gòu),并在重構(gòu)后對(duì)輸入數(shù)據(jù)進(jìn)行卷積計(jì)算,得到輸出數(shù)據(jù)。
18、在本實(shí)施例中,可重構(gòu)處理單元包括50個(gè)pe處理單元,可重構(gòu)處理單元能夠重構(gòu)形成5個(gè)3*3、2個(gè)5*5或1個(gè)7*7大小的pe陣列。
19、在本實(shí)施例中,協(xié)處理器采用1111011作為opcode,opcode包括custom3_load_imp、custom3_store_omp、custom3_load_weigh和custom3_conv四條指令;
20、其中,custom3_load_imp指令為載入輸入特征圖指令;
21、custom3_store_omp為導(dǎo)出輸出特征圖指令,該指令用于將卷積后的輸出特征圖輸出到主處理器的dtcm;
22、custom3_load_weigh為載入輸入權(quán)值指令,該指令用于將存儲(chǔ)在主處理器dtcm中的權(quán)重參數(shù)傳輸給協(xié)處理器;
23、custom3_conv為卷積運(yùn)算指令,這條指令用于啟動(dòng)卷積運(yùn)算操作。
24、第二方面,本發(fā)明還提出了一種基于risc-v的卷積神經(jīng)網(wǎng)絡(luò)加速處理系統(tǒng)中的協(xié)處理器,包括:頂層控制模塊、輸入數(shù)據(jù)緩存模塊、卷積運(yùn)算模塊和輸出數(shù)據(jù)緩存模塊;
25、頂層控制模塊用于通過(guò)擴(kuò)展加速接口與主處理器連接,頂層控制模塊用于負(fù)責(zé)與主處理器進(jìn)行通訊以接收輸入數(shù)據(jù)指令、輸入數(shù)據(jù)、卷積運(yùn)算指令和輸出數(shù)據(jù)指令,并將輸入數(shù)據(jù)指令、卷積運(yùn)算指令和輸出數(shù)據(jù)指令分別轉(zhuǎn)化為對(duì)應(yīng)使能信號(hào),然后將使能信號(hào)傳輸給相應(yīng)的模塊;
26、輸入緩存模塊用于緩存頂層控制模塊從主處理器接收到的輸入數(shù)據(jù)指令,并將輸入數(shù)據(jù)指令中的相應(yīng)參數(shù)及數(shù)據(jù)傳至卷積運(yùn)算模塊;
27、卷積模塊用于根據(jù)頂層控制模塊所發(fā)送的使能信號(hào)以及輸入緩存模塊傳輸?shù)南鄳?yīng)參數(shù)及數(shù)據(jù)進(jìn)行卷積運(yùn)算,并將卷積運(yùn)算得到的輸出數(shù)據(jù)存入輸出緩存模塊,并返回卷積完成信號(hào)給頂層控制模塊;
28、輸出緩存模塊用于緩存卷積運(yùn)算所得輸出特征圖數(shù)據(jù),還用于根據(jù)頂層控制模塊所發(fā)送的使能信號(hào)將輸出數(shù)據(jù)傳輸至頂層控制模塊,頂層控制模塊還用于通過(guò)擴(kuò)展加速接口將輸出數(shù)據(jù)寫回至主處理器的數(shù)據(jù)緊耦合存儲(chǔ)器中;
29、其中,輸入數(shù)據(jù)指令包括載入輸入特征圖指令以及載入輸入權(quán)值指令,輸入數(shù)據(jù)包括輸入特征圖和權(quán)值參數(shù),輸出數(shù)據(jù)包括輸出特征圖,輸出數(shù)據(jù)指令包括導(dǎo)出輸出特征圖指令。
30、在本實(shí)施例中,卷積運(yùn)算模塊包括可重構(gòu)處理單元和重構(gòu)控制單元;
31、其中,重構(gòu)控制單元用于根據(jù)輸入數(shù)據(jù)指令中的輸入卷積核的尺寸生成重構(gòu)指令;
32、可重構(gòu)處理單元包括多個(gè)pe處理單元,多個(gè)pe處理單元用于形成pe陣列;其中,可重構(gòu)處理單元用于根據(jù)重構(gòu)指令進(jìn)行pe陣列的重構(gòu),并在重構(gòu)后對(duì)輸入數(shù)據(jù)進(jìn)行卷積計(jì)算,得到輸出數(shù)據(jù)。
33、在本實(shí)施例中,可重構(gòu)處理單元包括50個(gè)pe處理單元,可重構(gòu)處理單元能夠重構(gòu)形成5個(gè)3*3、2個(gè)5*5或1個(gè)7*7大小的pe陣列。
34、在本實(shí)施例中,該協(xié)處理器采用1111011作為opcode,opcode包括custom3_load_imp、custom3_store_omp、custom3_load_weigh和custom3_conv四條指令;
35、其中,custom3_load_imp指令為載入輸入特征圖指令;
36、custom3_store_omp為導(dǎo)出輸出特征圖指令,該指令用于將卷積后的輸出特征圖輸出到主處理器的dtcm;
37、custom3_load_weigh為載入輸入權(quán)值指令,該指令用于將存儲(chǔ)在主處理器dtcm中的權(quán)重參數(shù)傳輸給協(xié)處理器;
38、custom3_conv為卷積運(yùn)算指令,這條指令用于啟動(dòng)卷積運(yùn)算操作。
39、本發(fā)明中,所提出的基于risc-v的卷積神經(jīng)網(wǎng)絡(luò)加速處理系統(tǒng)及其協(xié)處理器,采用主處理器和協(xié)處理器異構(gòu)的配合,利用主處理器處理已辦任務(wù),并利用協(xié)處理器處理卷積神經(jīng)網(wǎng)絡(luò)相關(guān)運(yùn)算,通過(guò)擴(kuò)展加速接口將協(xié)處理器與主處理器連接,可以解決傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)加速方法中的cpu計(jì)算并行度不高和gpu功耗過(guò)高的問(wèn)題。