999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于FPGA快速實現定制化RISC-V處理器*

2022-10-28 01:22:02蔣句平任會峰
計算機工程與科學 2022年10期
關鍵詞:指令

陸 松,蔣句平,任會峰

(1.無錫學院,江蘇 無錫 214105;2.國防科技大學計算機學院,湖南 長沙 410073)

1 引言

處理器作為信息處理的引擎,推動了人類社會數字化、信息化和智能化的進程。人們對處理器性能的追求永無止境。在特定領域的硬件加速,需要使用ASIC芯片、協處理器或加速卡來擴展處理器功能[1]。過去由于指令集的封閉性,這些加速部件的設計和應用軟件的開發通常滯后于處理器設計[2,3]。

Figure 2 RISC-V base opcode map,inst[1:0]=11

隨著開放指令集RISC-V的流行[4-6],其已應用于IoT智能硬件[7]、嵌入式系統[8]、信號處理[9]、人工智能[10]、安全設備[11]及高性能計算[12-14]等不同領域。大量開源和商業IP軟核[15]的出現,使RISC-V處理器的快速定制化成為可能,讓軟硬件協同設計更加高效,大幅縮短了軟硬件系統設計周期[16]。

本文基于FPGA設計了蜂鳥E203上[17,18]的計算向量內積的自定義指令,以加速矩陣運算。按照增加自定義指令、擴展ALU功能單元、連接控制信號和數據通路、FPGA原型驗證和應用程序測試的流程開展了以下工作:

(1)在RV32IMAC指令集基礎上增加計算向量內積的指令,確定指令類型和編碼;

(2)擴展蜂鳥E203軟核ALU部件,實現向量內積運算的硬件邏輯;

(3)連接控制信號和數據通路,完成向量內積指令的譯碼、派遣、執行、交付和寫回;

(4)完成自定義指令的功能仿真,并在FPGA平臺上進行原型驗證;

(5)定制GCC編譯器,增加對向量內積指令的支持,與硬件設計同步進行軟件開發。

2 向量內積指令的定義和編碼

蜂鳥E203軟核是使用Verilog語言實現的,支持RV32IMAC指令集。每條指令由操作碼、功能碼和操作數組成,具有6種基本指令格式[4,17],如圖1所示,分別是:用于寄存器-寄存器操作的R型指令、用于短立即數和訪存load操作的I型指令、用于訪存store操作的S型指令、用于條件跳轉操作的B型指令、用于長立即數的U型指令和用于無條件跳轉的J型指令。

Figure 1 Instruction format for base 32-bit RISC-V

有2種擴展RISC-V指令集的方法:

(1)模塊標準化方法。使用RISC-V的標準擴展模塊,包括B、E、H、J、L、N、P、Q等多種可選擴展[4]。

(2)在標準指令集基礎上加入定制指令。與ASIC芯片相似,指令集可裁剪,具有更高的性能,但需要注意與標準指令的編碼沖突問題。

為加速矩陣運算,本文采用了第2種方法,在RV32IMAC指令集基礎上引入一條向量內積R型指令vec_inner_prod,選擇標準指令編碼空間(如圖2所示)中的一個保留編碼1101011作為向量內積的指令操作碼,其指令格式如圖 3所示。

Figure 3 Instruction format for vec_inner_prod

3 向量內積指令的硬件邏輯

3.1 蜂鳥E200系列CPU的基本架構

蜂鳥E200系列是兩級流水線結構[17],如圖4所示,指令的譯碼、執行、交付和寫回均處于流水線的第2級,由EXU單元完成。

Figure 4 Two-stage pipeline of Hummingbird E203 IP

EXU的微架構如圖5所示,其執行過程如下:

(1)取指單元IFU通過IR寄存器將指令發送給EXU進行譯碼;

(2)通過譯碼出的操作數寄存器索引來讀取Regfile;

(3)維護指令的相關性;

(4)將指令派遣給不同的運算單元執行;

(5)交付指令;

(6)將運算結果寫回Regfile。

Figure 5 Microarchitecture of EXU in Hummingbird E203 IP

增加向量內積指令需要對指令執行路徑上的各個部件進行擴展,主要涉及“譯碼與派遣”部件、ALU、寄存器文件等。

3.2 向量內積運算部件

待增加的向量內積運算部件vec_mul用于計算向量A=[A0,A1,A2,A3]和B=[B0,B1,B2,B3]的內積,向量長度為4,存放于寄存器中,其計算結果如式(1)所示:

result=A0×B0+A1×B1+

A2×B2+A3×B3

(1)

向量內積運算部件vec_mul使用4個乘法器組成計算陣列,其邏輯結構如圖6所示。

Figure 6 Logical structure of vec_mul unit

3.3 指令派遣和數據通路相關控制

指令譯碼部件根據向量內積指令中的操作碼和功能碼來產生控制信號,并發送至ALU部件的控制信號總線上,如圖 7中①所示。當執行的指令為vec_inner_prod時,譯碼部件產生相應的operation選擇信號發送到ALU的多路選擇器,最后輸出向量內積運算部件vec_mul的計算結果。

向量內積運算部件需要掛接在ALU內部,并將其輸入端口連接至寄存器X10~X17,如圖 7中②所示。

另外,為了防止與其它長指令目的寄存器之間有沖突,需要進行數據相關性檢測,并記錄向量內積指令,如圖7中③所示。

Figure 7 Control signals for vec-inner-prod

4 定制化RISC-V在FPGA平臺上的驗證

4.1 驗證流程

定制化RISC-V的驗證分為3個部分:硬件平臺的驗證[19]、交叉編譯環境的驗證[20]和應用軟件的驗證。硬件平臺和交叉編譯環境的驗證用于保證硬件設計和軟件開發環境的正確性,應用軟件的驗證用于測試軟硬件的性能。驗證流程如圖8所示,定制化的RISC-V處理器設計通過EDA工具Vivado生成配置FPGA的比特流文件;應用測試程序通過定制化的交叉編譯器生成與硬件相匹配的二進制可執行文件;兩者加載到FPGA后即可在定制RISC-V處理器上運行二進制應用程序。

Figure 8 Validation procedure on FPGA

4.2 硬件平臺

本文采用Perf-V Artix-7 35T開發板[21],如圖8所示,使用的板載FPGA型號為XC7A35T-1FTG256C,FPGA外部時鐘頻率為50 MHz。

操作系統為Ubuntu 16.04 LTS,硬件開發環境為Vivado 2018.3。

根據前述分析,在E203各部件對應的Verilog代碼中添加向量內積指令的相關運算和控制邏輯,其層次結構如圖 9所示,原理如圖10所示。

Figure 9 Hierarchy of the customized RISC-V core

Figure 10 Schematic diagram of the customized RISC-V core

在Vivado中進行綜合、布局布線(如圖11所示),最終生成配置FPGA的比特流文件并通過JTAG下載。未使用 FPGA DSP單元的情況下,增加向量內積指令及相關控制邏輯會多使用FPGA內9.3%的LUT硬件資源,增加向量內積指令前后硬件資源占用情況如表1所示。

Figure 11 Floorplan of FPGA prototype

Table 1 Resource utilization comparison for customized/non-customized RISC-V

4.3 軟件開發環境

應用測試程序必須使用定制化的交叉編譯器才能生成與硬件相匹配的二進制可執行文件。在基于64位x86架構的Ubuntu 16.04 LTS主機上定制交叉編譯器的步驟如下:(1)根據自定義指令的操作碼計算指令碼、指令掩碼并描述指令格式;(2)將其加入到編譯器源代碼RISC-V的機器描述文件[22,23]中;(3)在主機上編譯支持定制RISC-V指令的交叉編譯器。

在開發板BSP(Board Support Package)[21,24]的支持下,可將C標準庫printf等函數輸出轉發到串口。測試程序以內聯匯編的方式調用向量內積計算匯編指令,該指令匯編助記符為vec_inner_prod,編譯產生的二進制可執行文件使用OpenOCD[25]通過USER JTAG下載到flash存儲器。

4.4 測試程序

測試程序為三重循環的矩陣乘法運算,外層的兩重循環對應于結果矩陣中的每個元素,內層循環用于計算2個向量的內積,未使用自定義向量內積指令的C語言代碼如程序1所示。

程序1未使用向量內積指令vec_inner_prod的矩陣乘法

for(i=0;i

for(j=0;j

for(k=0;k

{

c[i*C_COL+j]+=a[i*A_COL+k]*b[k*B_COL+j];

}

由于向量內積指令的向量長度為4,因此需要改造上述程序1中的代碼,讓內層循環中的每4個元素組成1個向量,即內層循環以4為步長進行遞增,如程序2代碼所示。對于長度不為4倍數的向量內積,可通過補零處理使其長度成為4的倍數。

程序2使用向量內積指令vec_inner_prod的矩陣乘法

for(i=0;i

for(j=0;j

for(k=0;k

{

asm volatile(

"lw x10,%[a0] lw x14,%[b0] "

"lw x11,%[a1] lw x15,%[b1] "

"lw x12,%[a2] lw x16,%[b2] "

"lw x13,%[a3] lw x17,%[b3] "

"vec_inner_prod %[reg_output],x10,x14 "

:[reg_output]"=r"(result)

:[a0]"m"(a[i*A_COL+(k+0)]),

[b0]"m"(b[(k+0)*B_COL+j]),

[a1]"m"(a[i*A_COL+(k+1)]),

[b1]"m"(b[(k+1)*B_COL+j]),

[a2]"m"(a[i*A_COL+(k+2)]),

[b2]"m"(b[(k+2)*B_COL+j]),

[a3]"m"(a[i*A_COL+(k+3)]),

[b3]"m"(b[(k+3)*B_COL+j])

:"x10","x11","x12","x13",

"x14","x15","x16","x17"

);

c[i*C_COL+j]+=result;

}

對程序2最內層循環代碼進行了如下改造:使用內嵌匯編指令,將2個向量分別載入到寄存器,然后執行向量內積指令 vec_inner_prod,運算結果保存在變量result中,最后將其累加到結果矩陣中相應的元素上。

5 實驗結果

分別對程序1和程序2進行交叉編譯生成目標平臺的二進制可執行文件,兩者在FPGA平臺上的計算結果一致,對于不同規模的矩陣乘法,其所需時間如表2所示,最大加速比為7.6,最小加速比為5.3。

Table 2 Speedup of matrix multiplication on the customized RISC-V

6 結束語

本文基于FPGA在開源IP蜂鳥E203上通過增加自定義指令、擴展ALU功能單元、連接控制信號和數據通路、FPGA原型驗證、定制交叉編譯環境和應用程序測試的流程,設計了擴展RV32IMAC指令集的向量內積指令,實現了加速矩陣運算的定制化RISC-V處理器。對矩陣乘法測試程序上,定制化RISC-V處理器的計算性能有顯著提升,性能加速比達到了5.3~7.6。同時,基于定制化的交叉編譯器,軟件開發與硬件設計可同步進行,大幅縮短了軟硬件協同設計周期。

猜你喜歡
指令
聽我指令:大催眠術
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
殺毒軟件中指令虛擬機的脆弱性分析
電信科學(2016年10期)2016-11-23 05:11:56
巧用G10指令實現橢圓輪廓零件倒圓角
時代農機(2015年3期)2015-11-14 01:14:29
中斷與跳轉操作對指令串的影響
科技傳播(2015年20期)2015-03-25 08:20:30
基于匯編指令分布的惡意代碼檢測算法研究
一種基于滑窗的余度指令判別算法
歐盟修訂電氣及電子設備等產品安全規定
家電科技(2014年5期)2014-04-16 03:11:28
MAC指令推動制冷劑行業發展
汽車零部件(2014年2期)2014-03-11 17:46:27
主站蜘蛛池模板: 久久美女精品| 一本色道久久88综合日韩精品| 亚洲天堂高清| 暴力调教一区二区三区| 高清无码不卡视频| 国产h视频免费观看| 国产精品极品美女自在线看免费一区二区| 国产va视频| 99热国产这里只有精品9九| 黄色网址免费在线| AV熟女乱| 欧美精品色视频| 国产情侣一区二区三区| 91亚洲精品国产自在现线| 波多野结衣一区二区三视频 | 丁香六月激情婷婷| 国产99精品久久| 五月婷婷欧美| 国产理论精品| 国产成人精品男人的天堂| 精品视频第一页| 日韩东京热无码人妻| 欧美国产日本高清不卡| 国产成人免费观看在线视频| 欧美成a人片在线观看| 免费国产黄线在线观看| 亚洲精品777| 中文字幕调教一区二区视频| 色综合中文| 91精品日韩人妻无码久久| 亚洲精品亚洲人成在线| 免费看av在线网站网址| 国产91丝袜在线播放动漫| 国产另类乱子伦精品免费女| 无码精品福利一区二区三区| 精品超清无码视频在线观看| 欧美精品高清| 国产精品免费电影| 四虎综合网| 99热这里只有精品5| 2022国产91精品久久久久久| a毛片免费在线观看| 色噜噜狠狠狠综合曰曰曰| 青草娱乐极品免费视频| 日本成人福利视频| 欧洲av毛片| 国产精品亚洲专区一区| 伊人蕉久影院| 在线无码私拍| 4虎影视国产在线观看精品| a级毛片免费网站| 午夜三级在线| 国产手机在线观看| 99999久久久久久亚洲| 午夜精品区| 91成人精品视频| 久久这里只有精品8| 欧美天堂久久| 国产好痛疼轻点好爽的视频| 99久久国产综合精品2020| 在线中文字幕日韩| 久久人与动人物A级毛片| 玩两个丰满老熟女久久网| 日本成人精品视频| 综合天天色| 亚洲经典在线中文字幕| 一级黄色网站在线免费看| 亚洲第一区在线| 久久婷婷色综合老司机| 国产欧美日韩综合在线第一| 情侣午夜国产在线一区无码| 亚洲精品天堂自在久久77| 亚洲精品无码AⅤ片青青在线观看| 欧美综合区自拍亚洲综合天堂| AV不卡国产在线观看| 亚洲色精品国产一区二区三区| 国产9191精品免费观看| 国产欧美日韩在线一区| 日韩av电影一区二区三区四区| 亚洲最猛黑人xxxx黑人猛交| 日韩av手机在线| 成人a免费α片在线视频网站|