关于RISC-V的P扩展简述与实例解析

描述

1.说明

在研究RISC-V的指令集的时候,其指令是模块化的,这就为其指令的扩展提供了更多的可能性。下面仅代表我对RISC V的P扩展指令的一些理解。

DSP算法

按照指令集的设计,其扩展分为基础指令和扩展指令部分。基础指令是必须实现的,扩展指令则可根据需求进行定制。

根据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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
jf_42033629 2022-04-28
0 回复 举报
p扩展要怎么安装呢 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分