国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于RISC?V 處理器的卷積加速SoC 系統(tǒng)設計

2021-04-29 03:21張坤寧
計算機工程 2021年4期
關鍵詞:指令集分塊加速器

張坤寧,趙 爍,何 虎,鄧 寧,楊 旭

(1.清華大學微電子學研究所,北京 100084;2.北京理工大學軟件學院,北京 100081)

0 概述

自2012 年AlexNet 獲得ILSVRC 比賽的冠軍之后,卷積神經(jīng)網(wǎng)絡(CNN)開始引起關注,并逐漸應用于圖像分類和檢測、人臉識別以及語音識別等領域[1-3]。然而,隨著深度學習技術的快速發(fā)展,CNN在提高識別準確率的同時,網(wǎng)絡深度也在不斷加深,結(jié)構(gòu)更加復雜化,導致網(wǎng)絡的計算量劇增[4-5]。通用處理器在處理大量且繁雜的卷積計算時效率十分低下,且能耗開銷較高。因此,設計專門用于加速卷積計算的硬件架構(gòu)尤為必要。

RISC-V是由加州大學伯克利分校(UCB)提出的一種開源精簡指令集架構(gòu)[6],全球的開發(fā)者能夠共同參與研發(fā)。RISC-V 由3個基本指令集和6個擴展指令集組成,在實現(xiàn)基本指令集的前提下可以根據(jù)自身的實際設計需求靈活選擇相應的擴展指令集[7]。與主要用于桌面計算機的x86架構(gòu)以及用于嵌入式設備的ARM 架構(gòu)相比,RISC-V架構(gòu)具有通用且靈活的優(yōu)勢,并且開源設計的方式也避免了專利保護和高額授權費等給開發(fā)者造成的研發(fā)難度,因此,RISC-V近年來備受研究人員的關注并取得了一定發(fā)展[8-9]。

CNN 中的計算以卷積計算為主,同時還包含一些其他類型的計算。因此,通常采用軟硬件協(xié)同設計的思路,即設計專門的加速器來提高卷積計算的效率,再使用通用處理器完成一些在網(wǎng)絡中所占比例很小、無需在硬件架構(gòu)中實現(xiàn)的計算。目前,基于卷積加速器的軟硬件協(xié)同設計主要通過在FPGA 平臺中構(gòu)建SoC系統(tǒng)來實現(xiàn),所用的通用處理器大多基于ARM架構(gòu)[10-12],雖已出現(xiàn)一些將RISC-V 處理器與卷積加速計算相結(jié)合的設計[13-14],但總體而言數(shù)量仍然較少。

本文基于RISC-V 指令集架構(gòu)提出一種順序雙發(fā)射的超標量處理器設計方法,并構(gòu)建以動態(tài)量化的8 bit 定點數(shù)據(jù)作為輸入的卷積加速器結(jié)構(gòu),對卷積循環(huán)計算順序進行優(yōu)化以進一步提高卷積計算的效率。在此基礎上,構(gòu)建包含RISC-V 處理器和卷積加速器的SoC 系統(tǒng),將其部署在FPGA 平臺上并運行VGG16 網(wǎng)絡,以實現(xiàn)加速效果。

1 基于RISC-V 的處理器設計

1.1 RISC-V 處理器概述

RISC-V 包括一個基本的整數(shù)指令集,所有基于RISC-V 開發(fā)的處理器都必須實現(xiàn)這一基本指令集。此外,RISC-V 還有足夠的操作碼空間用來定義其他基于用戶需求的自定義指令[15]。目前,UCB 已經(jīng)設計出一款名為Rocket Chip 的64 bit、包含5 級流水線的順序執(zhí)行RISC-V 處理器,其使用臺積電40 nm 工藝流片后與采用相同工藝的ARM Cortex-A5 相比,功耗和面積均約降低一半[16]。在與卷積加速器結(jié)合方面,YANG等人對Eyeriss結(jié)構(gòu)進行改進,設計一種基于RISC-V 處理器的卷積加速結(jié)構(gòu),并在Rocket-Chip Simulator 中對該卷積加速結(jié)構(gòu)進行仿真[17]。LI 等人在FPGA 平臺上實現(xiàn)“RISC-V 處理器+卷積加速協(xié)處理器”的SoC 系統(tǒng),其實現(xiàn)了32 bit 單精度浮點卷積運算的加速效果[18]。

1.2 順序雙發(fā)射超標量RISC-V 處理器

本文基于RISC-V 指令集標準,提出一種順序雙發(fā)射的超標量處理器設計方法。處理器支持RV32IMAFC指令集,具有32 bit 的整數(shù)指令和地址空間,采用9 級流水線架構(gòu),并支持動態(tài)分支預測技術,處理器對外還兼容AXI4 接口,能夠原位替換ARM A 系列的處理器,從而為構(gòu)建包含RISC-V 處理器和卷積加速器的SoC系統(tǒng)提供支撐。

處理器整體架構(gòu)如圖1 所示,包含指令緩存模塊、指令獲取模塊、指令分發(fā)模塊、指令解碼模塊、指令執(zhí)行模塊、數(shù)據(jù)緩存模塊、數(shù)據(jù)傳輸模塊以及寄存器堆等。處理器通過指令緩存模塊從存儲器中讀取指令并組成指令包,指令包經(jīng)拆分后發(fā)送到指令解碼模塊和指令分發(fā)模塊。在6 個執(zhí)行單元中,A0 和A1 兩個算術邏輯單元支持加法、減法、乘法、移位和邏輯運算等操作,LD和ST 負責完成存儲器與處理器之間的數(shù)據(jù)訪存,DIV單元執(zhí)行整型除法和取余計算,F(xiàn)PU 負責完成單精度浮點數(shù)的加法、減法、乘法、除法和開方等運算。處理器采用9 級指令流水線,主要分為指令獲取、指令分發(fā)、指令執(zhí)行和寫回4 個步驟。具體地,首先將128 bit 的指令包進行拆分,然后對指令進行解析并根據(jù)指令的類型將其發(fā)送到相應的執(zhí)行單元,最后將執(zhí)行結(jié)果寫入寄存器堆或存儲器中。

圖1 基于RISC-V 指令集的處理器架構(gòu)Fig.1 Architecture of the processor based on RISC-V instruction set

2 卷積加速器設計

2015 年,ZHANG 等人基于roofline 模型提出卷積加速器的設計分析機制,對計算吞吐和數(shù)據(jù)帶寬等進行定量分析[19]。2016 年,麻省理工大學提出的Eyeriss 深度學習處理芯片采用行固定的方式實現(xiàn)數(shù)據(jù)復用[20]。目前,卷積加速設計主要圍繞以下方面展開:基于CNN 網(wǎng)絡中輸入特征映射和卷積核多通道的特性,利用FPGA 中的計算資源進行并行計算[21];基于有限的片上存儲資源,對輸入和權重數(shù)據(jù)進行分塊,并通過設置片上緩存來暫時存儲分塊數(shù)據(jù);通過設計特定的循環(huán)展開計算順序,實現(xiàn)片上緩存數(shù)據(jù)的復用,從而減少片上緩存與片外存儲之間的訪存次數(shù)并實現(xiàn)高效的并行計算[22]。

本文設計的卷積加速器由計算單元、片上緩存和控制單元3 個部分組成,其整體架構(gòu)如圖2 所示。計算單元主要由乘加陣列、BN 計算模塊、定點處理模塊、激活模塊以及池化模塊組成,是完成加速計算的關鍵部分。片上緩存調(diào)用FPGA 的BRAM 資源,暫存來自DDR 的輸入特征映射、權重數(shù)據(jù)以及卷積計算結(jié)果??刂茊卧饕a(chǎn)生一些控制卷積計算過程的信號,以保證計算過程準確有序。

圖2 卷積加速器架構(gòu)Fig.2 Convolution accelerator architecture

2.1 計算單元

卷積計算由乘加陣列完成,計算單元由若干個乘法器和加法器組成。卷積計算的效率提升主要通過陣列之間的并行計算以及陣列內(nèi)部的循環(huán)展開乘加計算來實現(xiàn)。并行計算需要對輸入圖像映射和卷積核在各個維度上進行分塊。鑒于主流的卷積神經(jīng)網(wǎng)絡的輸入、輸出通道數(shù)均為16 的倍數(shù),因此,本文將乘加陣列在輸入和輸出通道維度上的分塊尺寸確定為16,即其包含的乘法器和加法器的個數(shù)為256。此外,考慮到測試集中圖片的尺寸為224×224,對于輸入特征映射,本文將其在行、列2 個維度上的分塊尺寸均設置為7。圖3 所示為乘加陣列的結(jié)構(gòu)。

圖3 乘加陣列的結(jié)構(gòu)Fig.3 Structure of the multiplier and accumulation array

在循環(huán)展開乘加計算順序的過程中,采取將卷積核與輸入特征映射的點乘運算進行分解的方式,即固定一個卷積核元素,令其完成全部分塊數(shù)據(jù)中所有需要其參與的乘法運算,然后再移動到下一個元素。在本文設計中,輸入特征映射的行、列分塊尺寸均為7,在數(shù)據(jù)填充尺寸為1 的情況下,一個卷積核元素將全部輸入數(shù)據(jù)掃描一遍共需49(7×7)個時鐘周期,因此,尺寸為3×3 的卷積核與分塊數(shù)據(jù)的一次中間結(jié)果計算共需9×49 個時鐘周期。

算法1 描述了上述并行計算和循環(huán)展開計算的過程。這種令單個卷積核元素與整個分塊數(shù)據(jù)依次進行乘法運算的方式,優(yōu)勢在于既復用了卷積核數(shù)據(jù),又令乘加陣列中的計算不受卷積核尺寸的限制,只需將卷積核的尺寸信息通過控制器傳給計算單元,便可設計簡單且通用的控制邏輯對片上緩存中的數(shù)據(jù)傳輸以及乘加陣列中的計算進行控制,從而大幅提升卷積加速器的通用性。

算法1卷積計算算法

2.2 片上緩存

如圖2 所示,加速器中設置了輸入緩存、權重緩存和輸出緩存,同時在計算單元中還有用于存儲卷積中間結(jié)果的緩存以及用于存儲池化計算模塊輸入數(shù)據(jù)的池化緩存等。通過緩存數(shù)據(jù),能夠減少加速器與DDR 之間的數(shù)據(jù)訪存次數(shù),從而實現(xiàn)數(shù)據(jù)復用并降低由傳輸數(shù)據(jù)所產(chǎn)生的能耗[23]。

上述緩存均工作在ping-pong 模式下,設置兩塊尺寸相同的緩存,在一塊緩存與DDR 進行數(shù)據(jù)交互時,另一塊緩存則向計算模塊傳輸數(shù)據(jù),這種方式能夠充分利用數(shù)據(jù)傳輸?shù)臅r間,提高加速器的運行效率。

2.3 控制單元

控制器一方面接收總線傳遞的關于網(wǎng)絡每一個計算層各個維度上的分塊尺寸信息,另一方面又在計算過程中產(chǎn)生計算開始及完成的信號、片上緩存讀寫數(shù)據(jù)的使能信號以及地址等。

3 SoC 系統(tǒng)設計

在Vivado 2018 的IP Integrator 中,將RISC-V 處理器和卷積加速器分別封裝為具有AXI 總線master接口的IP,與DDR、DMA、AXI 總線、時鐘與復位模塊、BRAM 控制器以及UART 等模塊IP 共同組成能夠運行完整CNN 的SoC 系統(tǒng)。CNN 中的卷積、激活、BN 計算、池化以及全連接計算等都能在加速器中完成,并且循環(huán)計算順序經(jīng)過優(yōu)化使得加速器的乘加陣列更具通用性,可支持不同網(wǎng)絡中各種尺寸的卷積核與輸入特征映射的卷積運算。此外,網(wǎng)絡中數(shù)據(jù)填充與分塊、softmax 層計算等耗時較短的操作由RISC-V 處理器來完成。DMA 控制DDR 通過總線向片上緩存?zhèn)魉蛿?shù)據(jù),同時API 函數(shù)中給出的一些控制信息也通過總線傳遞給加速器。圖4 所示為本文SoC 系統(tǒng)架構(gòu)。

圖4 基于RISC-V 處理器和卷積加速器的SoC 系統(tǒng)架構(gòu)Fig.4 SoC system architecture based on RISC-V processor and convolution accelerator

4 實驗結(jié)果與分析

本次實驗推理計算所用的數(shù)據(jù)集選用來自ImageNet ILSVRC2012 的100 張圖片,每張圖片的尺寸為224×224×3。運行的網(wǎng)絡選用VGG16,共包含13 層卷積層和3 層全連接層,總參數(shù)量達132 MB,每完成一張圖片的推理計算要進行15.84G 次乘加運算。

在前文所述的SoC 系統(tǒng)中添加約束并進行布局布線等操作,得到各項資源利用情況,如表1 所示。RISC-V 處理器和卷積加速器的工作頻率分別為100 MHz 和300 MHz。將生成SoC 系統(tǒng)的bitstream文件寫入Xilinx ZCU102 開發(fā)板中,在SDK 中編寫并運行VGG16 網(wǎng)絡的C 語言代碼,以獲得加速器的運行結(jié)果。

表1 FPGA 的資源利用情況Table 1 The utilization of FPGA resources

表2 所示為加速器運行VGG16 網(wǎng)絡的結(jié)果。從表2 可以看出,在300 MHz 的工作頻率下,加速器的峰值算力達到了153.6 GOP/s,完成單張圖片的卷積計算僅需0.23 s。從算力、DSP 效率以及能耗比等方面來看,本文加速器實現(xiàn)了較高的計算性能。

表2 加速器性能指標結(jié)果Table 2 Accelerator performance index results

在運行VGG16 網(wǎng)絡時,Xilinx ZCU102 自帶的ARM Cortex-A53 處理器、Intel i7-8700 處理器以及本文加速器完成單張圖片的卷積計算所花費時間以及加速比結(jié)果如表3 所示。從表3 可以看出,本文加速器的計算效率約為ARM 處理器的634 倍,約為Intel i7 處理器的40 倍。

表3 本文加速器與其他處理器的性能對比Table 3 Performance comparison between accelerator in this paper and other processors

5 結(jié)束語

本文將分塊策略與循環(huán)計算順序優(yōu)化相結(jié)合,設計一種卷積加速結(jié)構(gòu),并與基于RISC-V 開源指令集的順序雙發(fā)射超標量處理器共同組成SoC 系統(tǒng),將該系統(tǒng)部署在FPGA 平臺上,能夠取得較好的加速效果。本文處理器基于開源指令集,可根據(jù)具體的應用需求進行特定的優(yōu)化,擴展指令功能,為“主處理器+卷積加速器”的軟硬件協(xié)同設計模式提供新途徑。下一步將對包含RISC-V 處理器和卷積加速器的協(xié)同設計進行流片,以在提高處理器主頻的同時進一步提升加速器的整體性能。

猜你喜歡
指令集分塊加速器
莫比斯加速器眾創(chuàng)辦公空間
基于Kubernetes的RISC-V異構(gòu)集群云任務調(diào)度系統(tǒng)①
知識快餐店 科學加速器
全民小康路上的“加速器”
3DNow指令集被Linux淘汰
分塊矩陣在線性代數(shù)中的應用
反三角分塊矩陣Drazin逆新的表示
實時微測量系統(tǒng)指令集及解析算法
基于自適應中值濾波的分塊壓縮感知人臉識別
基于多分辨率半邊的分塊LOD模型無縫表達