1.說明
在研究RISC-V的指令集的時候,其指令是模塊化的,這就為其指令的擴展提供了更多的可能性。下面僅代表我對RISC V的P擴展指令的一些理解。
按照指令集的設計,其擴展分為基礎指令和擴展指令部分。基礎指令是必須實現的,擴展指令則可根據需求進行定制。
根據The RISC-V Instruction Set Manual版本為20191213的pdf來看,對P擴展的介紹并不多。
其描述也只有一段話,目前官方并未做出更多的描述,不過在GitHub上對P擴展有了更加詳細的表述。
也就是P指令的擴展實際的作用是增加了RISC-V CPU IP產品的DSP算法處理能力。
通過對RISC-V指令的P擴展,可以以更低的功耗和更加高的性能運行這些DSP的應用程序。
2.P擴展與V擴展的差別
通過上述的理解來看,P擴展的官方描述Packed-SIMD Instructions,那么和V擴展代表的向量指令集有什么差異呢。
V擴展,向量計算會更加趨向于高效的處理音頻和視頻,以更低的功耗,更快的處理速度,更加簡單的方式去處理圖像、視頻、音頻等,大大提高處理器的性能。比較典型的應用比如流媒體,MPEG4和H264的編解碼,語音識別和手寫識別,FFT處理,復雜的計算等等。
P擴展,數字信號處理(DSP),更多的去處理一些特殊領域的計算,比如嵌入式中的MP3解碼,伺服電機,嵌入式實時控制等。
雖然兩種都是為了加速計算,用多媒體指令集來實現CPU處理吃力的計算功能,但是在應用領域也是有一些區別。
3.P擴展指令的實例簡單解析
簡單解釋一下這里如何通過指令加速計算。
在文檔的8-bit Addition & Subtraction Instructions中描述如下:
No.MnemonicInstructionOperation
1ADD8 rt, ra, rb8-bit Additionrt.B[x] = ra.B[x] + rb.B[x]; (RV32: x=3..0, RV64: x=7..0)
該指令是一份簡單8位的加法,實際上調用該指令的時候,需要傳遞兩個輸入源,和輸出結果。
因為是ADD8,所以以8bit相加,結果也是8bit。在C語言中定義為unsigned char。
比如定義一個unsigned char數組a1={1,2,3,4}。另外一個數組a1={2,3,4,5}。
那么把這兩個數組通過ADD8指令相加,則得到ret={2,5,7,9}。
實現這個過程,如果用普通的計算方法計算,需要CPU的4個時鐘才能完成這個過程,而如果采用RISC-V的P擴展指令進行計算,則只需要一個時鐘周期便可完成。這樣可以加速計算,降低功能,同時降低CPU的使用率。
編輯:lyn
-
DSP算法
+關注
關注
2文章
39瀏覽量
13581 -
RISC-V
+關注
關注
45文章
2291瀏覽量
46192
原文標題:RISC-V的P擴展
文章出處:【微信號:Embeded_IoT,微信公眾號:嵌入式IoT】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論