良许Linux教程网 干货合集 DSP算法库到底有多快?

DSP算法库到底有多快?

01 DSP算法库

一、引言

在ARM单片机开发中,有一套名为CMSIS的DSP数字信号处理函数库。这个函数库包含了许多基本的数据函数、快速数学运算、复数运算、滤波器、矩阵、变换、点击控制、统计、支持函数以及插值函数等。它覆盖了工程应用中的大多数算法。那么,有一个疑问,使用CMSIS中的DSP函数,与普通的数学库中的函数相比,到底能够提供多大的性能提升?接下来,我们将对比一下开方运算和正弦三角函数的计算速度,以便在不同的场景下选择合适的数学库。

image-20240407223207326
image-20240407223207326

二、测试方法

测试硬件平台是昨天制作的 STM32F103单片机,这是 M3内核的 ARM 单片机。这个单片机比较简单和流行,看一下它的数学计算速度。利用一个端口输出高低电平表示计算所需要的时间。

image-20240407223210971
image-20240407223210971

为了使用 DSP数据库,需要在 IAR 开发环境中,对 工程文件选项 General 中的 连接库设置中,选择 CMSIS DSP。在程序中增加 arm math 头文件即可。测试程序大循环中,执行普通的 sine 三角函数计算,前后设置 LED 输出管脚电平,因此输出高电平脉冲宽度表示sine 函数计算时间。中间相隔1ms之后,再执行 DSP中的sine 函数,也使用 LED 管脚的高电平指示执行时间。后面通过示波器便可以直观的对比两个函数执行速度的差异性了。image-20240407223214748

image-20240407223218323
image-20240407223218323

三、测试结果

使用示波器,测量 LED 管脚的波形,可以看到前后两个脉冲信号。前面的信号是普通数学库中的 sine 函数,时间较长,后面是 DSP库中的 sine 函数,明显时间短。这说明了对于 M3 内核的 单片机,使用 DSP数学库的效率还是非常高的。需要说明的是,此时 单片机系统时钟为 64MHz。为了更加精确的对比两个数学库执行时间,将波形展开。利用示波器的光标测量功能,测试脉冲的时间宽度。普通sine 函数,计算时间为 41.7微秒,测量 DSP sine 函数,执行时间只有10微秒,通过对比可以知道,对于 三角函数 sine计算,DSP算法库比起普通的数学函数要快四倍左右。

image-20240407223221865
image-20240407223221865

sine运算对比:
math:41.7us
DSP:10us

▲ 图1.3.1 计算sine函数对比普通数学库与DSP库的执行速度

下面再对比一下浮点开方数学运算。使用的方法是一样的。通过示波器测量 普通数学库函数和 DSP数学库函数之间的差别。普通的数学库,计算一个浮点数开方需要 12.52 微秒,DSP数学库中的开方运算,只需要 4.9微秒。比普通的数学库增加了不到 3倍。这说明不同的数学运算,DSP提速不一样。

image-20240407223244600
image-20240407223244600

开方运算对比:
math:12.52us
DSP:4.9us

image-20240407223247826
image-20240407223247826
▲ 图1.3.2 对比开方运算算法函数速度的差异

最后对比一下普通的整数位移操作。对128个数字中的整型数往左位移,对比普通的 C 语言位移所需要的时间以及DSP 库中位移函数运算时间。C语言位移消耗了大约 24微秒,DSP 库函数消耗了 16.65微秒,速度大约快了 三分之一左右。

image-20240407223252046
image-20240407223252046
image-20240407223255302
image-20240407223255302
▲ 图1.3.3 位移操作

位移两位对比:
C:24us
DSP:16.65us

※ 总  结 ※

本文对比了 CMSIS DSP数学库中的部分函数速度,都比使用普通的C语言以及math 库中函数速度有所提高,三角函数提高了四倍左右,普通的位移操作只提高了三分之左右。

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部