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