張坤寧,趙 爍,孫慶斌,鄧 寧,何 虎
(清華大學(xué) 微電子學(xué)研究所,北京 100084)
近年來,以CNN(convolution neural networks)為代表的深度學(xué)習(xí)算法已經(jīng)成為人工智能領(lǐng)域重要的研究內(nèi)容,它在圖像識別與檢測定位、人臉識別與自動駕駛等領(lǐng)域發(fā)揮了重要作用[1]。但是隨著算法的精進(jìn)和應(yīng)用場景日益多元化,CNN網(wǎng)絡(luò)在識別準(zhǔn)確率提高的同時(shí),其結(jié)構(gòu)變得越來越復(fù)雜、深度也不斷加深[2]。尤其當(dāng)將其應(yīng)用在嵌入式設(shè)備時(shí),對計(jì)算資源和內(nèi)存資源帶來了很大的挑戰(zhàn)。因此研究CNN網(wǎng)絡(luò)的加速計(jì)算顯得尤為必要,并且對加快技術(shù)落地、拓寬應(yīng)用場景具有重要意義。
Zhang等提出了roofline模型并在基于FPGA的卷積加速器設(shè)計(jì)中使用了數(shù)據(jù)復(fù)用、并行計(jì)算等技術(shù)[3]。Han等則提出“剪枝-定點(diǎn)壓縮-霍夫曼編碼”3種深度壓縮的技巧,極大地減少了CNN網(wǎng)絡(luò)參數(shù)所需的存儲資源,為CNN向嵌入式系統(tǒng)移植開辟了重要思路[4]。Rahman等提出了一種三維陣列結(jié)構(gòu),結(jié)合對片上緩存的優(yōu)化,將加速結(jié)構(gòu)中的乘加單元減少了22%[5]。Yao等還針對新型輕量化網(wǎng)絡(luò)的硬件加速工作進(jìn)行了研究[6]。
本設(shè)計(jì)針對卷積計(jì)算中的循環(huán)計(jì)算順序進(jìn)行了優(yōu)化,并與片上緩存數(shù)據(jù)復(fù)用技術(shù)相結(jié)合,不僅提高了數(shù)據(jù)復(fù)用效率,還進(jìn)一步提高了加速器的通用性。設(shè)計(jì)了專門的計(jì)算單元來進(jìn)行卷積、激活、批標(biāo)準(zhǔn)化(BN)以及池化等操作,并對池化計(jì)算以及數(shù)據(jù)存取順序進(jìn)行了優(yōu)化。使用由加速器和通用處理器組成的SoC系統(tǒng),運(yùn)行VGG16網(wǎng)絡(luò)的推理運(yùn)算過程。此外還提出了一種將加速器進(jìn)行多核擴(kuò)展的方法,為其在不同F(xiàn)PGA平臺上的部署提供了一種思路。
在不影響推理準(zhǔn)確度的前提下,精簡輸入數(shù)據(jù)的位寬,能夠有效降低對片外存儲的帶寬需求[4]。因此在進(jìn)行加速器設(shè)計(jì)之前,首先使用自動化的CNN近似工具Caffe Ristretto完成了數(shù)據(jù)的量化工作。在這個(gè)過程中主要通過在參數(shù)位寬與識別精度之間進(jìn)行折衷,即在可接受的精度損失范圍內(nèi)用最短的位寬來表示網(wǎng)絡(luò)中數(shù)據(jù)。閾值越高,位寬越短;閾值越低,位寬越長。
量化過程分為確定位寬和再訓(xùn)練兩個(gè)階段。在第一階段,輸入32 bits的單精度浮點(diǎn)數(shù),并規(guī)定識別精度的損失閾值,Ristretto工具經(jīng)過計(jì)算和迭代會給出當(dāng)前閾值下的最小位寬長度。然后可以自身具體需求來改變閾值,獲得最適合當(dāng)前設(shè)計(jì)情況下的數(shù)據(jù)位寬。在網(wǎng)絡(luò)再訓(xùn)練階段,需對網(wǎng)絡(luò)參數(shù)進(jìn)行微調(diào)。使用量化后的參數(shù)進(jìn)行前向計(jì)算,反向傳播過程先更新全精度參數(shù)然后再量化。通過若干次迭代,以盡可能將精度提升至量化前的水平。本設(shè)計(jì)將VGG16網(wǎng)絡(luò)的權(quán)值參數(shù)量化為8 bits,并保證了精度下降在1%以內(nèi)。
為解決網(wǎng)絡(luò)不同層中數(shù)據(jù)范圍和絕對值相差較大的問題,采取了動態(tài)量化的策略[7,8],即對于網(wǎng)絡(luò)中不同的計(jì)算層,輸入的圖像數(shù)據(jù)、權(quán)重?cái)?shù)據(jù)以及計(jì)算結(jié)果的整數(shù)位數(shù)和小數(shù)位數(shù)各不相同,以確保8 bits的數(shù)據(jù)位寬能夠涵蓋相應(yīng)計(jì)算層所有數(shù)據(jù)的范圍。表1列出了經(jīng)過量化工具處理后加速器每個(gè)計(jì)算層中權(quán)重、輸入特征映射和卷積計(jì)算結(jié)果的小數(shù)位數(shù)。
表1 3種數(shù)據(jù)的小數(shù)位數(shù)
對于FPGA平臺中實(shí)現(xiàn)的卷積加速設(shè)計(jì),主要圍繞以下思路來展開:基于CNN網(wǎng)絡(luò)中輸入特征映射和卷積核多通道的特性,設(shè)計(jì)乘加陣列進(jìn)行并行計(jì)算[9];基于有限的片上存儲資源,對輸入和權(quán)重?cái)?shù)據(jù)進(jìn)行分塊,并通過設(shè)置片上緩存來暫時(shí)存儲分塊數(shù)據(jù)以減少加速器與片外存儲之間的數(shù)據(jù)訪存次數(shù)[10,11];通過設(shè)計(jì)特定的循環(huán)展開計(jì)算順序,實(shí)現(xiàn)片上緩存數(shù)據(jù)的復(fù)用以及高效的并行計(jì)算效率[12,13]。
加速器主要由計(jì)算單元、片上緩存以及控制器組成。計(jì)算單元主要由乘加模塊、累加模塊、BN計(jì)算模塊、定點(diǎn)處理模塊、激活模塊以及池化模塊組成,是完成加速計(jì)算的關(guān)鍵部分。片上緩存調(diào)用FPGA的BRAM資源,將來自片外的輸入特征映射、權(quán)重?cái)?shù)據(jù)以及卷積計(jì)算結(jié)果暫存。而控制器主要產(chǎn)生一些控制卷積計(jì)算過程的信號,保證計(jì)算準(zhǔn)確有序進(jìn)行。
加速器計(jì)算單元的結(jié)構(gòu)如圖1所示。根據(jù)分塊策略中卷積核在輸入和輸出通道上的分塊尺寸均為16,共包含256個(gè)乘法器和加法器的乘加模塊與累加模塊組成了乘加陣列(MAC),它們分成16組,用來完成16個(gè)輸出通道和16個(gè)輸入通道的并行卷積計(jì)算。對于一組乘加陣列,16個(gè)輸入通道上同一位置的輸入數(shù)據(jù)分別與同一輸出通道中16個(gè)輸入通道的卷積核元素相乘;不同組的乘加陣列之間輸入數(shù)據(jù)相同,卷積核元素則來自16個(gè)不同的輸出通道。由此在一個(gè)時(shí)鐘周期內(nèi)并行完成256次乘法運(yùn)算。一組乘加陣列內(nèi)15個(gè)加法器組成了加法樹,將16個(gè)輸入通道的卷積中間結(jié)果累加起來。
圖1 加速器計(jì)算單元的結(jié)構(gòu)
累加模塊主要用于以下兩種情況:一是將卷積核元素與輸入分塊數(shù)據(jù)做點(diǎn)乘運(yùn)算后的結(jié)果累加起來;另外由于乘加模塊每次只能完成16個(gè)輸入通道的卷積計(jì)算,而多數(shù)CNN網(wǎng)絡(luò)層的通道數(shù)均大于16,累加模塊還負(fù)責(zé)將多個(gè)16通道的計(jì)算結(jié)果累加到一起,得到最終的輸出特征映射。
BN計(jì)算是為了解決CNN網(wǎng)絡(luò)訓(xùn)練過程中因梯度消失而難以收斂的問題而提出的,它通過將卷積計(jì)算的結(jié)果變成標(biāo)準(zhǔn)正態(tài)分布,并進(jìn)行一定的伸縮平移變換,最終在進(jìn)行激活操作之前令其處于激活函數(shù)梯度較大的區(qū)間內(nèi)。其公式為
(1)
在推理計(jì)算中,上述公式中mean、var、γ和β這4個(gè)參數(shù)都是訓(xùn)練好的確定值,因此可以將BN的計(jì)算公式轉(zhuǎn)換成如下一次函數(shù)的形式
y=k*x+b
(2)
乘加陣列中的所有輸入數(shù)據(jù)均為定點(diǎn)8 bits,但經(jīng)過驗(yàn)證得知乘累加過程產(chǎn)生的計(jì)算結(jié)果至少為24 bits才能避免溢出。因此在完成各種乘加計(jì)算之后,定點(diǎn)處理模塊接收來自控制器的關(guān)于計(jì)算結(jié)果的小數(shù)位數(shù)信息,并將24 bits的乘累加結(jié)果截成8 bits。
激活模塊支持ReLU和Leaky ReLU兩種函數(shù)。池化模塊支持最大池化和平均池化兩種類型的計(jì)算,并且通過設(shè)計(jì)并復(fù)用基本的池化計(jì)算單元能夠支持任意尺寸的池化計(jì)算。
片上緩存的容量不僅取決于所用FPGA開發(fā)板的BRAM資源,還取決于所用分塊策略和運(yùn)行的網(wǎng)絡(luò)結(jié)構(gòu)。根據(jù)以上提到的分塊策略,最終將各個(gè)片上緩存的容量大小確定為如表2所示。其中輸入、權(quán)重、輸出和中間結(jié)果緩存均工作在ping-pong模式下,令數(shù)據(jù)傳輸?shù)臅r(shí)間得以充分利用。
表2 各個(gè)片上緩存的容量大小
控制器分為卷積計(jì)算控制器和池化計(jì)算控制器。它們均與AXI總線相連。卷積計(jì)算控制器一方面接收總線傳來的關(guān)于網(wǎng)絡(luò)每一層輸入特征映射以及卷積核各個(gè)維度上的分塊尺寸信息,另一方面在計(jì)算過程中產(chǎn)生判斷每一次分塊計(jì)算開始及完成的信號、數(shù)據(jù)傳遞的使能信號以及片上緩存讀寫數(shù)據(jù)的使能信號、地址以及ping-pong選擇信號等。池化計(jì)算控制器則從總線接收關(guān)于池化計(jì)算使能及池化類型的信號,并給出按照池化計(jì)算順序從緩存中讀取數(shù)據(jù)以及對計(jì)算結(jié)果進(jìn)行拼接的控制邏輯。關(guān)于控制邏輯的細(xì)節(jié)將在下文中介紹。
針對加速器的優(yōu)化設(shè)計(jì)工作主要分為以下3個(gè)方面:優(yōu)化卷積循環(huán)計(jì)算順序、優(yōu)化池化計(jì)算順序和加速器的多核擴(kuò)展設(shè)計(jì)。
在一些前人的相關(guān)研究中,對于卷積計(jì)算單元的設(shè)計(jì)采用復(fù)用輸入數(shù)據(jù)的方法,也就是重復(fù)搬運(yùn)多次卷積核參數(shù)。這種方法的弊端在于計(jì)算單元的控制邏輯會受到卷積核尺寸的影響,尤其是在運(yùn)行具有多種不同尺寸的卷積核的網(wǎng)絡(luò)時(shí),不僅缺乏靈活性,控制邏輯的復(fù)雜性也會大大增加。
而本設(shè)計(jì)在循環(huán)計(jì)算順序方面的優(yōu)化體現(xiàn)在將卷積核與輸入特征映射的點(diǎn)乘運(yùn)算進(jìn)行分解,即固定卷積核的一個(gè)元素,令其完成整個(gè)分塊圖像中所有需要它來參與的乘法運(yùn)算之后再移動到下一個(gè)卷積核元素。這樣依此類推,直到全部卷積核元素將它們各自負(fù)責(zé)的分塊圖像區(qū)域全部掃描一遍后,完成相應(yīng)的卷積運(yùn)算。如圖2所示,在本設(shè)計(jì)中,填充尺寸和卷積計(jì)算步長均為1,以卷積核和輸入分塊圖像的尺寸分別為3*3和9*9為例,每個(gè)卷積核元素要與7*7個(gè)數(shù)相乘。這樣經(jīng)過9*49個(gè)時(shí)鐘周期之后,將這9次相乘的結(jié)果相加,便得到了尺寸為7*7的一次中間計(jì)算結(jié)果。再按照通道數(shù)進(jìn)行累加,便可得到最終結(jié)果。
圖2 改進(jìn)后的卷積循環(huán)計(jì)算次序
在上述循環(huán)計(jì)算順序中,復(fù)用的數(shù)據(jù)為卷積核元素。這種令卷積核元素掃描輸入圖像數(shù)據(jù)的好處是既保證了數(shù)據(jù)復(fù)用,又避免卷積計(jì)算受到卷積核尺寸的限制。這種方法可以用于任意尺寸的分塊圖像與任意尺寸的卷積核的計(jì)算,具有非常好的通用性。本設(shè)計(jì)支持從1*1到11*11等各種尺寸的卷積核,只需將尺寸信息傳給控制器,無需設(shè)計(jì)新的控制邏輯便可完成計(jì)算,十分靈活方便。經(jīng)過優(yōu)化后完整的卷積循環(huán)計(jì)算次序如圖3所示。
圖3 完整的卷積循環(huán)計(jì)算次序
對于池化計(jì)算,為解決池化的輸入數(shù)據(jù)在卷積計(jì)算次序中非連續(xù)排列而造成卷積運(yùn)算之后無法直接開始池化計(jì)算的問題,設(shè)置了池化片上緩存。將一次分塊卷積計(jì)算的結(jié)果暫存之后,再按照池化計(jì)算的順序,從緩存中取出相應(yīng)位置的數(shù)據(jù)。
另外以最常見的2*2池化尺寸為例,經(jīng)過池化計(jì)算后分塊圖像的尺寸變?yōu)樵瓉淼乃姆种?,為了便于網(wǎng)絡(luò)下一層的計(jì)算,使用了一種拼接策略,將4塊池化后的分塊圖像拼接成一塊與池化前尺寸相同的圖像再存入輸出緩存。當(dāng)輸入圖像的分塊尺寸為10*10時(shí),第一塊數(shù)據(jù)完成池化計(jì)算后的25個(gè)結(jié)果分別存入輸出緩存中序號為0~4,10~14,20~24,30~34,40~44的這些地址;第二塊結(jié)果存入的地址為5~9,15~19,25~29,35~39,45~49;第三塊和第四塊計(jì)算結(jié)果分別存入的地址是50~54,60~64,70~74,80~84,90~94和55~59,65~69,75~79,85~89,95~99。這樣的數(shù)據(jù)拼接結(jié)果通過池化控制器中的相應(yīng)邏輯來實(shí)現(xiàn)。而對于7*7的分塊尺寸,其總體思路與10*10的情況是類似的。但考慮到7不能被2整除,因此這種情況下還需一個(gè)額外操作,即在將數(shù)據(jù)送入加速器之前的數(shù)據(jù)重組步驟中,將分塊數(shù)據(jù)的存儲順序變?yōu)榕c池化計(jì)算類似、跨越兩行兩列的14*14。
使用這種拼接策略能夠保證網(wǎng)絡(luò)的每一層輸入分塊圖像的尺寸都是一致的,避免了某幾層網(wǎng)絡(luò)做完池化后還要對輸入分塊數(shù)據(jù)進(jìn)行尺寸上的調(diào)整。
在上述設(shè)計(jì)中,加速器的計(jì)算單元部署了256個(gè)乘法器,將計(jì)算陣列做的規(guī)模較小的原因則是為了使其適應(yīng)在不同F(xiàn)PGA平臺上的應(yīng)用。如果是在資源較少的FPGA開發(fā)板上運(yùn)行加速器,那么部署256個(gè)乘加陣列即可;如果FPGA的資源比較充裕,那么可以以包含256個(gè)乘法器的加速器為整體,進(jìn)行多個(gè)加速器核的擴(kuò)展。
考慮到Xilinx ZCU102開發(fā)板的資源情況,主要探索了以下兩種情況下的擴(kuò)展設(shè)計(jì)。第一種情況是將輸入緩存的尺寸擴(kuò)大為原來的4倍,權(quán)重緩存的容量不變,同時(shí)部署4個(gè)加速器核。這樣便能夠?qū)崿F(xiàn)單核情況下4倍的算力。
第二種情況則是在第一種情況的基礎(chǔ)上,將權(quán)重緩存的容量擴(kuò)大為原來的兩倍,同時(shí)加速器核的數(shù)量增加到8個(gè),此時(shí)算力和并行計(jì)算度相較于第一種情況又提高了一倍。圖4和圖5分別展示了四核和八核加速器的擴(kuò)展設(shè)計(jì)。
圖4 四核加速器的架構(gòu)
圖5 八核加速器的架構(gòu)
這種擴(kuò)展設(shè)計(jì)具有十分突出的優(yōu)勢,不僅成倍提升了加速器的算力,并且這些核僅需由一個(gè)控制器進(jìn)行控制,在進(jìn)行卷積計(jì)算時(shí)它們內(nèi)部的數(shù)據(jù)流是完全一致的。而設(shè)想如果將1024(256*4)或2048(256*8)個(gè)乘法器部署在一個(gè)加速器核中,雖然其算力與以上所述的多核加速器是相同的,但是若遇到開發(fā)板資源受限而需減少計(jì)算資源的情況下,必須大幅度修改計(jì)算單元內(nèi)各個(gè)計(jì)算模塊的控制邏輯。也就是說這樣的設(shè)計(jì)會因具體的開發(fā)板資源情況而具有一定的專用性。而在當(dāng)前擴(kuò)展方式下,如果需要在不同F(xiàn)PGA上運(yùn)行加速器,可以根據(jù)當(dāng)前開發(fā)板的實(shí)際情況靈活選擇加速器核的數(shù)目以及相應(yīng)的片上緩存容量,從而大大增加了部署加速器的便捷性。
將加速器與AXI總線、時(shí)鐘模塊、BRAM控制器、DMA模塊、FPGA開發(fā)板上的ARM處理器以及DDR存儲器等組成可運(yùn)行完整CNN網(wǎng)絡(luò)的SoC系統(tǒng)。如圖6所示,DDR內(nèi)存、DMA控制器、ARM處理器以及加速器的控制器均與AXI總線相連,其中DMA控制DDR通過總線向片上緩存?zhèn)魉蛿?shù)據(jù),這種方式大大提高了數(shù)據(jù)傳輸?shù)男?。ARM處理器用來完成數(shù)據(jù)重組、填充(padding)、分類(softmax)以及計(jì)算準(zhǔn)確率等運(yùn)算,這種軟硬件協(xié)同設(shè)計(jì)的方式既保證了較高的運(yùn)算效率,又具有較強(qiáng)的靈活性和通用性。
圖6 包含卷積加速器的SoC系統(tǒng)
將加速器部署在FPGA開發(fā)板上的流程主要分為以下3個(gè)步驟:
(1)設(shè)計(jì)加速器各個(gè)計(jì)算模塊的功能以及控制器的邏輯,在Vivado中例化BRAM資源作為片上緩存,驗(yàn)證數(shù)據(jù)讀寫和計(jì)算是否正確。
(2)將加速器封裝成IP,并與DDR內(nèi)存、ARM處理器、總線等構(gòu)成SoC系統(tǒng)。運(yùn)行完整的VGG16網(wǎng)絡(luò),測試加速器的性能。
(3)按照上述擴(kuò)展思路,將加速器核的數(shù)量擴(kuò)展為4個(gè)和8個(gè),再次運(yùn)行VGG16網(wǎng)絡(luò)。
推理計(jì)算所用數(shù)據(jù)集選用了來自ImageNet ILSVRC2012的100張圖片,每張圖片尺寸為224*224*3。將經(jīng)過定點(diǎn)處理后的圖片數(shù)據(jù)和訓(xùn)練好的權(quán)重參數(shù)存入FPGA的SD卡,然后再通過軟件從SD卡讀入DDR中。VGG16網(wǎng)絡(luò)的參數(shù)量為132 MB,每完成一張圖片的推理計(jì)算,要進(jìn)行15.84 G次乘加運(yùn)算。
運(yùn)行結(jié)果表明在300 MHz的工作頻率下,單核加速器運(yùn)行VGG16網(wǎng)絡(luò)推理一張圖片各部分所用時(shí)間為387 ms,峰值算力達(dá)到了153.5 GOP/s。通過逐層、逐模塊測試,發(fā)現(xiàn)加速器核中的各種計(jì)算以及數(shù)據(jù)在DDR和片上緩存之間傳輸占據(jù)了絕大部分的運(yùn)行時(shí)間;另外由ARM處理器負(fù)責(zé)的數(shù)據(jù)重組等計(jì)算也需要一定時(shí)間。
表3展示了單核加速器性能與一些前人研究成果的對比。文獻(xiàn)[14]所用FPGA平臺為Xilinx Zynq-7000系列的XC7Z020,文獻(xiàn)[15]和文獻(xiàn)[7]則選用的是同一系列的XC7Z045。這兩種與本設(shè)計(jì)使用的Zynq UltraScale+MPSoC系列的XCZU9EG都是Xilinx公司開發(fā)的SoC可擴(kuò)展處理平臺,但也具有一些不同之處。Zynq-7000的XC7Z020和XC7Z045兩款SoC中的ARM處理器屬于Cortex A9系列,含有的DSP總數(shù)分別為220個(gè)和900個(gè)。而本設(shè)計(jì)中的XCZU9EG所用ARM處理器屬于Cortex A53系列,DSP總數(shù)為2520個(gè)。雖然ARM處理器的型號不同,但如前文所述,處理器計(jì)算所用時(shí)間占總運(yùn)行時(shí)間的比例較小。以及雖然DSP的總數(shù)不同,但加速器的算力并不強(qiáng)烈依賴DSP的數(shù)量。因此表3所列的數(shù)據(jù)具有良好的可比性。
表3 本文加速器性能與前人研究成果對比
從表中數(shù)據(jù)可以發(fā)現(xiàn),在相同量化方式下,本文中加速器實(shí)現(xiàn)了相較于文獻(xiàn)[14]和文獻(xiàn)[15]1.8倍和2.4倍的算力。在所用DSP數(shù)量與文獻(xiàn)[15]基本持平的情況下,取得了2.6倍的DSP效率;雖比文獻(xiàn)[14]用了更多的DSP,其DSP效率卻是它的1.27倍。另外在能耗方面,本文加速器的能耗比為29.0 GOP/s/W,達(dá)到了文獻(xiàn)[14]的1.2倍,文獻(xiàn)[7]的2倍。因此從工作頻率、峰值算力、DSP效率和能耗幾個(gè)方面綜合來看,本文加速器的性能要優(yōu)于前人取得的成果,在卷積加速計(jì)算方面取得了一定的進(jìn)步。
表4展示了單核、四核和八核加速器的性能對比。從表中可以看出,兩種多核加速器與單核相比,算力分別提升了4倍和6.7倍。八核加速器由于工作頻率稍有下降而對算力提升產(chǎn)生了一定影響。單張圖片的推理計(jì)算時(shí)間也分別下降至260 ms和203 ms。
表4 單核與多核加速器的性能對比
根據(jù)以上結(jié)果可以看出,多核加速器單張圖片的推理時(shí)間沒有隨算力提升而等比例下降,原因主要在于CNN網(wǎng)絡(luò)中還有一定數(shù)量的計(jì)算由處理器來完成(這部分時(shí)間大約占總時(shí)間的四分之一),這些時(shí)間并不會隨著硬件算力增加而減少。而八核加速器的單張圖片推理時(shí)間與四核相比也沒有等比例下降,除了上述原因之外,還在于隨著硬件加速部分所花時(shí)間的減少,軟件計(jì)算時(shí)間所占的比例會逐漸增加。此外還由于在ping-pong模式下,一次分塊卷積計(jì)算的時(shí)間小于權(quán)重?cái)?shù)據(jù)的傳輸時(shí)間,而八核每次傳輸?shù)臋?quán)重?cái)?shù)據(jù)量是四核的2倍,傳數(shù)所用的時(shí)間會更長。由于算力提升減少的計(jì)算時(shí)間會被數(shù)據(jù)傳輸時(shí)間覆蓋。
本文針對目前CNN網(wǎng)絡(luò)日益復(fù)雜化帶來的計(jì)算效率較低的問題,提出了一種基于FPGA的定點(diǎn)8 bits加速器結(jié)構(gòu),通過采用有效的分塊策略并結(jié)合優(yōu)化的循環(huán)計(jì)算順序,有效地提高了CNN中卷積計(jì)算的效率。另外還提出了一種對加速器核進(jìn)行整體擴(kuò)展的策略,不僅提升了算力,還為卷積加速設(shè)計(jì)的可擴(kuò)展性應(yīng)用提供了方法。
由于處理器中的計(jì)算在加速器運(yùn)行總時(shí)間中占有一定比例,下一步可繼續(xù)優(yōu)化軟件程序,如在加速器中實(shí)現(xiàn)數(shù)據(jù)填充操作等,降低處理器的計(jì)算時(shí)間;針對數(shù)據(jù)傳輸時(shí)間與計(jì)算時(shí)間未能完美匹配的問題,還需優(yōu)化數(shù)據(jù)傳輸機(jī)制,這對于進(jìn)一步提升加速器性能具有重要意義。