RISC-V(Reduced Instruction Set Computing-V)是一個開源指令集架構(ISA),它的設計目標是提供一個簡潔、可擴展且高效的指令集,適用于各種應用場景,從低功耗設備到高性能計算。易靈思提供完整的RISC-V 解決方案,致力于讓開發者和硬件設計人員可以根據需要自定義和擴展指令集,且無需擔心專有技術的限制。
RISC-V的特點:
簡潔高效:RISC-V采用精簡的指令集,使得每條指令的執行時間更短,提高了處理器的性能。
模塊化設計:RISC-V支持通過擴展來增強處理器功能,比如加速浮點運算、增加原子操作指令等。
開源免費:RISC-V的開源性質允許任何人使用、修改和擴展指令集,降低了硬件開發的成本。
可定制性強:用戶可以根據實際應用需求,添加或刪除指令、修改處理器架構。
易靈思提供的RISC-V IP支持用戶自定義指令。眾所周知,自定義指令不僅能夠提升特定算法的執行效率,尤其是在涉及到計算密集型或硬件加速任務時,尤其重要。例如,在數字信號處理(DSP)、圖像處理或加密解密等應用中,自定義指令能夠顯著提高處理速度,并降低處理延遲。通過使用易靈思的Sapphire RISC-V SoC IP核,開發者可以靈活配置和生成支持自定義指令的系統設計,充分利用FPGA硬件資源進行定制化加速。這樣的設計不僅滿足了高性能計算的需求,也降低了開發復雜度和硬件成本。
本次講給大家介紹易靈思RISCV的自定義指令:
在Sapphire RISC-V SoC中,支持用戶定義的自定義指令,這使得開發者能夠加速特定的計算任務。自定義指令接口支持R型指令格式,并通過兩個寄存器(rs1 和 rs2)向自定義硬件邏輯傳輸數據。用戶可以定義最多1024個ID,每個ID對應一個特定的功能。
接下來我們先看一下R指令的格式:

上圖是RISC-V手冊中的基礎的指令,我們需要重點看一下R指令格式,其中bit6:0是opcode,bit11:7是rd——作為輸出,bit14:12是function3,bit19:15是rs1,bit24:20是rs2,bit31:25是function7。
其中function3和function7共10bit,因此支持1024個功能ID。
自定義指令的使用方法:
RISCV DIE中定義指令:用戶可以通過定義一個特定的功能ID來指定指令的行為。
FPGA測處理 對應的接口信號:

cmd_valid:指令是否有效,表明指令數據已經準備好。
cmd_ready:表示硬件邏輯是否準備好接收指令。
function_id:指定自定義指令的功能ID,用于標識不同的自定義操作。
inputs_0 和 inputs_1:分別對應傳遞到自定義硬件邏輯的兩個輸入寄存器 rs1 和 rs2。
rsp_valid:指示自定義指令的處理結果是否有效。
rsp_ready:表示處理器是否準備好接收結果。
outputs_0:存儲自定義指令的處理結果,通常會返回到處理器寄存器中。
用戶自定義指令的時序圖:

其中function_id是R指令的function7和function3,{ function7, function3}。
用戶可以根據function_id和接收到的input0和input_1處理自己的邏輯,比如矩陣加速運算等。
那么在RISC-V開發中如何撰寫自己的代碼呢?其實在生成RISCV的參考例子中,我們可以看到有一個用戶自定義命令的demo(customInstructionDemo),在這個例子中我們可以看到如下的代碼:

其中tea_l和tea_u傳入rs1和rs2的寄存器的值,也就是對應時序圖中的input_0和input_1,CUSTOM0保持不變,其實等于0x0B,而第二個和第三個參數對應的是function3和function7,對應的是時序圖中的function_id信號,另外我們觀察這個宏定義,有句話:[rd] "=r" (__v) , 表示將匯編語句的結果輸出到一個名為__v的變量中,這個變量通過"=r"指定為一個通用寄存器(r)。rd是目標寄存器,通常是結果存儲的地方。也就是接收將時序圖中的outputs_0信號,然后返回給C語言程序處理。
Demo采用一個加密算法,分別通過RISCV計算和FPGA測的邏輯計算進行對比,其結果表明擁有36倍的加速性能:

自定義指令可以顯著提高特定算法的處理效率,尤其是在涉及到頻繁運算或者特定硬件加速的任務中,比如數字信號處理(DSP)、圖像處理或加密解密等。相信通過使用Efinix的Efinity軟件,開發者可以配置和生成支持自定義指令的Sapphire SoC設計,進一步增強系統的功能與性能,加快您的設計。
隨著易靈思提供的Efinity開發平臺和RISC-V架構的強大支持,開發者能夠在不依賴專有技術的前提下,根據具體應用需求快速實現硬件加速方案。這種高度可定制性使得RISC-V架構在面向未來的計算密集型應用中,具有巨大的潛力和競爭優勢。通過自定義指令的靈活應用,開發者能夠在實現高性能和低功耗的同時,進一步提升系統的整體效率和可靠性。
因此,無論是在高效的硬件加速應用中,還是在需要快速響應和高吞吐量的實時系統中,易靈思的RISC-V IP核與自定義指令的結合,提供了一個理想的解決方案,助力開發者在更短的時間內實現創新,推動技術的快速發展。
易靈思公司介紹
易靈思是一家國產FPGA公司,總部位于深圳前海。公司憑借自主可控的Quantum硬件架構,采用邏輯和路由可以互換的XLR結構,實現了創新的產品設計與軟件算法,使得FPGA產品具備低功耗、小體積、高密度、高性能等優勢。已量產的40nm Trion系列及16nm鈦金系列 FPGA產品,廣泛應用于機器視覺、顯示、工業控制、醫療、汽車、AI和通信等終端領域。
重要產品

鈦金系列FPGA具有增強的Quantum架構,16nm工藝,35K 至 1,000K 邏輯單元,超高性能 300-500MHz,封裝最小可至3.5mm*3.4mm@60K LE,功耗低至競爭對手的1/4,硬核資源豐富,最新產品TJ375現已量產。
-
FPGA
+關注
關注
1656文章
22317瀏覽量
631097 -
開源
+關注
關注
3文章
4056瀏覽量
45651 -
RISC-V
+關注
關注
48文章
2820瀏覽量
52109 -
易靈思
+關注
關注
6文章
63瀏覽量
5507
原文標題:易靈思FPGA RISC-V 如何使用自定義指令加速設計
文章出處:【微信號:易靈思官微,微信公眾號:易靈思官微】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
如何使用RISC-V創建自定義處理器
采用匯編指示符來使用自定義指令
為什么選擇RISC-V?
SOPC中自定義外設和自定義指令性能分析
Codasip采用Imperas技術來強化其RISC-V處理器驗證優勢
RISC-V以在定制芯片中引入48位計算
如何看待RISC-V SoC設計中自定義擴展的指令集架構

易靈思FPGA RISC-V自定義指令的使用方法
評論