• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于RISC-V 的神經網絡加速器硬件實現(xiàn)*

      2023-03-22 07:23:24鞠虎高營田青周穎
      電子與封裝 2023年2期
      關鍵詞:加速器指令架構

      鞠虎,高營,田青,周穎

      (中國電子科技集團公司第五十八研究所,江蘇無錫 214035)

      1 引言

      近年來人工智能(AI)算法不斷取得突破性進展,各種復雜的深度學習算法已滲透到人類社會生活的諸多方面,如智能交通、無人駕駛、智慧醫(yī)療等[1]。目前大多數(shù)深度學習算法采用圖形處理器(GPU)進行訓練與推理,相比中央處理器(CPU),GPU 極大地提升了深度學習算法的訓練與推理速度。盡管GPU 計算資源豐富,但是存在極大的功耗開銷,在硬件資源和功耗受限的條件下,GPU 不是一個很好的計算加速平臺。國內外公司都在積極推動AI 芯片的研發(fā),英偉達推出了基于NVIDIA Volta 架構的NVIDIA Tesla V100GPU[2],可實現(xiàn)每秒120 萬億次的峰值運算能力。谷歌面向云業(yè)務推出脈動陣列架構[3],峰值計算能力達到每秒92 萬億次計算操作,增加了浮點計算單元和高帶寬內存。國內在GPU 和現(xiàn)場可編程邏輯門陣列(FPGA)芯片領域基礎相對薄弱,百度開發(fā)的云端AI芯片“昆侖”的峰值處理速度達到每秒260 萬億次定點運算。寒武紀發(fā)布的云端智能芯片MLU100 的最高峰值速度可達166.4 萬億次定點運算,可支持各類深度學習和常見機器學習算法。這類處理器大多基于精簡指令微處理器(ARM)架構[4],ARM 架構雖具有良好的生態(tài),但存在供應鏈不穩(wěn)定、自主可控性弱等缺點。第五代開放精簡指令集(RISC-V)[5-6]可基于應用場景,進行指令集的自主修改,因此研究基于RISC-V 的神經網絡加速器[7]架構可為后續(xù)AI 芯片的研究和工程實現(xiàn)奠定基礎。

      本文基于RISC-V,生成了Linux 內核,構建了RISC-V 開發(fā)環(huán)境;定義了深度神經網絡加速器指令集,實現(xiàn)了數(shù)據加載、計算和結果存儲等操作;基于深度學習編譯器,實現(xiàn)了對主流深度學習開發(fā)框架的支持;基于亞科鴻禹開發(fā)板以及接口擴展板,將深度神經網絡加速器和RISC-V CPU 集成,并通過深度學習編譯棧,完成了ZFNet 和ResNet20 神經網絡部署,實現(xiàn)了圖像分類演示的功能。

      2 基于RISC-V CPU 的深度神經網絡加速器

      2.1 神經網絡加速器架構設計

      2.1.1 輕量級ZFNet 神經網絡

      ZFNet 神經網絡在AlexNet 網絡結構[9]上進行微調,提出了一個新的卷積神經網絡可視化技術(反卷積),以輔助觀察中間層及分類層的輸出特征。ZFNet是一個8 層網絡,采用修正線性單元(ReLU)替換Sigmoid函數(shù)作為激活單元,避免了梯度消失問題,同時,在計算上采用重疊的最大池化,以避免池化的模糊效果,提升了特征提取的豐富性。本文對ZFNet 進行輕量化處理以降低網絡參數(shù)量,修改后的ZFNet(M-ZFNet)網絡結構如圖1 所示,包含6 層卷積和2 層全連接。

      圖1 M-ZFNet 網絡架構

      2.1.2 神經網絡加速器核心模塊設計

      神經網絡推理加速器采用可變張量加速器(VTA)架構[10]。

      VTA 是圍繞通用矩陣乘(GEMM)而構建的通用深度學習加速器,可進行高吞吐量的密集矩陣乘法操作。VTA 硬件架構如圖2 所示,主要由獲取、加載、計算和存儲4 個模塊組成,4 個模塊通過隊列和單寫入/讀取內存塊進行通信。

      圖2 VTA 硬件架構

      為支持多種神經網絡的推理任務,本文提出了基于宏操作的指令集。1)加載指令,將內存中輸入和權重加載至緩存區(qū)或者片上寄存器;支持微操作指令加載至微指令緩存;支持動態(tài)填零。2)矩陣乘指令,執(zhí)行微指令緩存中微指令序列,在輸入張量和權重張量組成的矩陣之間計算矩陣乘積,并將結果暫存到片上寄存器中。3)算術邏輯指令,執(zhí)行微指令緩存中的邏輯微指令序列,對片上寄存器的數(shù)據執(zhí)行矩陣的算數(shù)邏輯操作。4)存儲指令,將計算結果從輸出緩存區(qū)存儲到內存中。通過這4 條指令的組合,可靈活實現(xiàn)多種主流的深度神經網絡推理任務,實現(xiàn)智能通用運算。

      加載模塊負責將存儲器的輸入和權重數(shù)據加載到加速器內專用輸入和權重數(shù)據的緩存。加載、通用矩陣乘、算數(shù)邏輯運算及存儲指令結構如圖3 所示。加載模塊支持在加載數(shù)據的同時,在數(shù)據周圍的X 維度和Y 維度分別動態(tài)填零。計算模塊采用通用矩陣相乘運算,將數(shù)據從存儲器中加載到寄存器中,將微操作指令加載到微指令緩存中,計算模塊包含兩種類型的計算微指令:算數(shù)邏輯運算和通用矩陣乘。計算模塊在兩級嵌套循環(huán)內執(zhí)行微指令序列,以減少微內核指令的占用空間,適用矩陣乘法和二維卷積。存儲模塊將計算模塊的輸出數(shù)據從片上內存取出并存儲到動態(tài)存儲器中,存儲指令的譯碼執(zhí)行過程與加載模塊相似,支持從靜態(tài)存儲器到動態(tài)存儲器的跨內存訪問。

      圖3 加載、通用矩陣乘、算數(shù)邏輯運算及存儲指令結構

      2.2 基于RISC-V 的SoC 架構設計

      本文采用開源RISC-V 處理器[11]作為系統(tǒng)級芯片(SoC)中的控制單元,并提出共享內存的設計架構,基于RISC-V CPU 的SoC 架構如圖4 所示,整體架構通過一致性總線(TL)進行系統(tǒng)互聯(lián),利用TL 轉高級可擴展接口(AXI)模塊進行適配。RISC-V CPU 與神經網絡推理加速器之間采用松耦合的互聯(lián)方式,CPU 通過總線向神經網絡推理加速器的AXI 從接口發(fā)送控制指令,控制加速器開始工作,并通過輪詢方式檢測加速器是否計算完成。針對如何快速處理在深度神經網絡推理過程中的數(shù)據,提出共享內存架構,設計對應的連續(xù)內存分配函數(shù)(CMA),以動態(tài)分配較大的連續(xù)空間物理地址。本文將32 位ARM 處理器上的CMA模塊移植到基于64 位RISC-V 的內核上,并針對RISC-V 架構調整虛擬地址到物理地址的映射方式,提高操作系統(tǒng)的內存使用效率。圖4 中DDR 為雙倍數(shù)據速率。

      圖4 基于RISC-V CPU 的SoC 架構

      2.3 SoC 與神經網絡加速器的集成設計

      VTA 各模塊與RISC-V 處理器通過AXI 總線協(xié)議[12]連接,AXI 互聯(lián)模塊包含AXI InterConnect 模塊和AXI SmartConnect 模塊,可將一個或多個AXI 內存映射的主設備連接到一個或多個內存映射的從屬設備,更緊密地集成到硬件設計環(huán)境中,且能自動配置并適應所連接的AXI 主模塊和從屬模塊,每一個被實例化的AXI 互聯(lián)模塊都包含一個AXI Crossbar 模塊,用于多個主接口和從接口的連接。RISC-V SoC 內部總線互聯(lián)架構如圖5 所示,獲取、加載、計算和存儲模塊的標準AXI 從屬接口經過AXI InterConnect 模塊與RISC-V 處理器的主接口連接,通過AXI 總線接收CPU 的控制信號;各模塊的主接口通過AXI SmartConnect 模塊與處理器經過AXI Crossbar 模塊對動態(tài)隨機存取存儲器(DRAM)進行讀寫指令和數(shù)據的操作。VTA 內部提供了傳輸指令的指令隊列、執(zhí)行同步并發(fā)任務的依賴隊列以及存儲數(shù)據的片上緩存區(qū)(包含輸入數(shù)據、權重值和輸出數(shù)據)。

      圖5 RISC-V SoC 內部總線互聯(lián)架構

      3 基于RISC-V CPU 的神經網絡加速器FPGA 實現(xiàn)

      3.1 應用演示系統(tǒng)搭建

      SoC 設計平臺包括RISC-V SoC 生成器、編譯工具鏈和系統(tǒng)仿真工具。SoC 架構采用共享內存的設計架構,并通過TL 進行系統(tǒng)互聯(lián)。CPU 配置方案為單核100 MHz 順序流水線、64 位RISC-V 架構CPU、片上獨立的指令高速緩沖存儲器和數(shù)據高速緩沖存儲器,并配有Xilinx UltraScale DDR 控制器、安全數(shù)碼卡(SD)控制器和通用異步收發(fā)傳輸器(UART)接口。

      VTA 硬件架構的環(huán)境搭建主要分成以下幾個階段:1)構建加速器調用底層函數(shù)接口,用于調用VTA IP 核,配置傳輸參數(shù);2)獲取控制寄存器映射到用戶空間的虛擬地址,對加速器的控制寄存器進行讀寫;3)獲得各種虛擬地址對應的物理地址,傳遞給加速器的控制寄存器;4)將處理數(shù)據對應指令長度和物理地址通過AXI 接口寫入控制寄存器;5)將加速器的控制信號通過AXI 接口寫入其控制寄存器,加速器讀取信號之后開始計算;6)CPU 通過輪詢的方式監(jiān)測加速器的工作狀態(tài),直至加速器計算結束或者用時超標;7)統(tǒng)計VTA 的計算時間,釋放內存。

      深度神經網絡編譯工具鏈是用于深度學習系統(tǒng)的編譯器堆棧,面對不同的深度學習框架和硬件平臺,實現(xiàn)了端到端的統(tǒng)一的軟件棧,能夠高效地把前端深度學習模型部署到CPU、GPU 和專用的加速器上,為了實現(xiàn)對深度神經網絡的支持,本文設計了基于指令包裹的編譯框架,通過將神經網絡推理運算解耦成卷積運算和標量運算,基于所設計的指令集,定義卷積運算指令打包函數(shù),能夠自適應地生成卷積層的指令代碼,同時用戶可以在C 開發(fā)環(huán)境下,調用打包函數(shù),進行運算的靈活分配。深度神經網絡編譯流程如下:1)導入前端基于數(shù)據流圖的深度學習模型,并轉換為計算圖;2)計算圖優(yōu)化層,重構原始計算圖,包括操作符融合和數(shù)據布局轉換;3)張量優(yōu)化層,包含張量描述、硬件源語調度優(yōu)化等;4)根據優(yōu)化目標探索搜索空間,找到最優(yōu)解;5)生成對應的硬件平臺代碼與部署。

      3.2 圖像分類演示

      CIFAR-10 數(shù)據集由60 000 張彩色圖像組成,其中有50 000 張訓練圖像和10 000 張測試圖像,共有飛機、汽車、鳥、貓、鹿、狗、青蛙、馬、船、卡車10 類,每類6 000 張,用作圖像識別的數(shù)據集。

      在硬件模塊設計上,基于開源項目生成SoC 源碼,基于Vivado 綜合工具生成對應的比特流,使用RISC-V 64 位編譯工具鏈生成對應的Linux 操作系統(tǒng),并對操作系統(tǒng)以及應用程序進行仿真測試。在軟件模塊設計上,針對卷積運算測試,按照VTA 硬件配置對輸入和權重進行循環(huán)拆解、重組補零,同時,在單個卷積層中,將大矩陣分塊進行矩陣乘(分塊大小為64 個),編譯生成可執(zhí)行的文件并上板驗證,卷積運算驗證結果如圖6 所示,實現(xiàn)了3 種不同尺寸矩陣的GEMM 計算,試驗結果表明,本設計能保證卷積運算的正確性。

      圖6 卷積運算驗證結果

      為實現(xiàn)圖像分類演示,首先,基于CIFAR-10 數(shù)據集完成了M-ZFNet 神經網絡算法訓練、權重量化與分割,量化長度為有符號的8 位整數(shù)(INT8),并將權重和輸入數(shù)據解碼處理生成bin 文件;其次,基于深度神經網絡編譯工具鏈將深度卷積神經網絡轉換成加速器運行的操作指令,編譯生成可執(zhí)行文件;最后,將bin 文件和可執(zhí)行文件上板驗證,依次完成12 張輸入圖像,輸出維度為10×1,對應CIFAR-10 數(shù)據集中的10 個類別。同時,驗證所設計的架構是否可靈活實現(xiàn)多種主流的深度神經網絡,選取ResNet20 神經網絡,為降低網絡參數(shù)量,對開源ResNet20 進行微調(M-ResNet20),具體網絡結構如下:1~7 層的卷積核大小為16@3×3,步長為1;8~13 層的卷積核大小為32@3×3,卷積層8 的步長為2,其他卷積層步長為1;14~19 層的卷積核大小為56@3×3,卷積層14 的步長為2,其他卷積層步長為1;平均池化層和全連接層均為1 層。FPGA 演示步驟同M-ZFNet。

      兩種網絡的圖像分類演示結果如表1 所示,輸出向量最大值所在位置對應數(shù)據集中的類別,在本輪試驗中,兩種網絡識別準確率均為91.67%(在CPU 端選取的12 張測試數(shù)據集和權重均為浮點型,且測試準確率為100%,對輸入數(shù)據和權重進行的量化操作導致精度損失)。

      表1 兩種網絡的圖像分類演示結果

      在CIFAR10 測試集上推理,所提出的架構總體準確率預測如表2 所示。在CPU 端統(tǒng)計的M-ZFNet 和M-ResNet20 的整體準確率分別為86.36%和91.73%,而在FPGA 端統(tǒng)計的準確率分別為78.95%和84.81%。因為對輸入數(shù)據和權重進行的量化操作導致了精度損失,所以FPGA 端低于CPU 端的統(tǒng)計結果;因為M-ResNet20 的網絡層數(shù)較多,所提取特征的抽象程度較高,所以M-ResNet20 的預測準確率比M-ZFNet 高。試驗結果表明,所設計的架構可實現(xiàn)主流的深度神經網絡推理任務,實現(xiàn)智能通用運算。

      表2 兩種網絡總體準確率預測

      4 結論

      本文探索了基于RISC-V 處理器的神經網絡架構設計與FPGA 實現(xiàn),所設計的架構可靈活實現(xiàn)多種主流的深度神經網絡推理任務,MAC 數(shù)目可達到1 024,量化長度為INT8,編譯棧支持主流卷積神經網絡的編譯,最終完成卷積運算、ZFNet 和ResNet20 神經網絡算法的部署,并完成CIFAR-10 圖像分類演示,試驗選取了12 張測試集,準確率均達到91.67%,且在FPGA端M-ZFNet 整體準確率達78.95%,M-ResNet20 整體準確率達84.81%。為了支持多種不同的神經網絡推理任務,創(chuàng)新地提出了由4 條指令組成的基于宏操作的指令集,依據指令類型的不同可以分別完成數(shù)據加載、計算和結果存儲等操作,利用這4 條指令的組合,可實現(xiàn)智能通用運算。

      所設計的神經網絡推理加速器在精度損失和加速性能方面還有一些方面可以進一步改進:1)由于目前的量化方案精度損失較大,后續(xù)工作可考慮將量化和訓練相結合,在量化后通過微調訓練來彌補量化的精度損失;2)未對神經網絡加速器設計的數(shù)據吞吐量、計算速度、功耗、資源消耗等方面進行研究,后續(xù)將主要研究神經網絡加速器的加速效果。

      猜你喜歡
      加速器指令架構
      輪滑加速器
      化學工業(yè)的“加速器”
      聽我指令:大催眠術
      基于FPGA的RNN硬件加速架構
      全民小康路上的“加速器”
      少先隊活動(2021年6期)2021-07-22 08:44:24
      功能架構在電子電氣架構開發(fā)中的應用和實踐
      汽車工程(2021年12期)2021-03-08 02:34:30
      ARINC661顯控指令快速驗證方法
      測控技術(2018年5期)2018-12-09 09:04:26
      LED照明產品歐盟ErP指令要求解讀
      電子測試(2018年18期)2018-11-14 02:30:34
      LSN DCI EVPN VxLAN組網架構研究及實現(xiàn)
      電信科學(2017年6期)2017-07-01 15:45:17
      等待“加速器”
      道真| 金秀| 丹棱县| 晋州市| 苏州市| 车致| 桓仁| 比如县| 慈利县| 绥棱县| 巴彦县| 北川| 五寨县| 当雄县| 怀安县| 桂东县| 肥西县| 措美县| 敦化市| 石阡县| 西乌珠穆沁旗| 巫溪县| 葫芦岛市| 黄龙县| 盘山县| 桂林市| 兰西县| 陈巴尔虎旗| 固始县| 大兴区| 望江县| 青神县| 增城市| 新营市| 福清市| 信丰县| 黎川县| 宁都县| 宝丰县| 揭阳市| 金阳县|