0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

为您的 DSP 应用程序优化软件

张勇 来源:DengQilong 作者:DengQilong 2022-07-21 16:20 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

经验丰富的嵌入式系统程序员已经知道将代码优化到目标平台的大部分技巧,但是我们中的许多人相对较晚才接触到嵌入式系统编程,因为我们在限制较少的平台上学习了我们的编码技能。除了算法的一般效率之外,我们不必过多担心硬件细节,但在嵌入式应用程序中,我们需要更加小心,当然是为了性能,还要适应我们想要做的实际限制我们的硬件目标,尤其是可用内存的类型和大小。这些系统中的内存是您必须将所有软件和所有工作数据装入其中的手提箱,而且手提箱通常比您希望的要小得多。

作为一个额外的复杂因素,这些系统中通常有不止一种类型的内存。为了保持编程简单,您只看到一个逻辑内存空间,但某些地址范围可能以不同的方式在硬件中实现。一些空间可以实现为外部主存储器,可以通过一级或多级高速缓存从处理器访问。

一个常见的硬件优化将实现另一个范围作为紧耦合内存 (TCM)。它与处理器位于同一芯片内,通常紧邻该处理器。TCM 为存储在该内存中的任何指令或数据提供有保证的单时钟周期访问,这与标准内存不同,标准内存只有在指令/数据已经在缓存中时才能提供该性能;否则它必须进入主存储器,花费更多的时钟周期。TCM 是(内存映射)快速片上内存的一个例子;还有其他用途,例如用于图像处理中快速访问的图像缓冲区。

另一个考虑因素 - 使用片上存储器可降低功耗,而使用主存储器会消耗更多功率,这要归功于更高的电流来驱动所有这些封装引脚和芯片之间的电路板互连。这是低功耗应用中的一个重要考虑因素。

为什么不只使用大的片上存储器并从片外不频繁地加载/存储?不幸的是,大型片上存储器显着增加了芯片面积,并且随着芯片尺寸的增长,该设备变得更加昂贵且竞争力下降。系统架构师必须非常小心地平衡性能增益与此成本,考虑他们是否可能仅提供 16KB 的 TCM 与可能多达 1MB 的 TCM。这让程序员有很多责任要尽可能节俭和谨慎地使用或规划这些存储器(如果你在早期的芯片架构中有发言权),尤其是在涉及到你想要的功能或数据时使用快速内存。

您需要在这里做的一些事情是相当明显的;我假设您从基于 PC 的实现或为早期产品开发的实现开始。由于您显然对 DSP 感兴趣,因此您可能计划进行大量浮点计算。尽可能将数据类型从双精度减少到单精度;仅此一项就可能将数据大小减半。

临时内存池是一种一次性分配内存块以满足多个较小相关分配需求的方法,它在分配和释放速度方面很受欢迎,但在内存方面可能非常昂贵。尝试将所有这些合并到一个内存池中,只要它们不并行使用或硬着头皮返回堆上的传统malloc;这可能会慢一些,但在内存中效率会高很多。

特别是在 TCM 方面,分析代码以找到消耗最多运行时间的函数。您的策略将是从需求最高的功能开始,决定其中哪些可以适合 TCM。当然,这里必须有一些判断。如果一个高需求函数调用一个低需求函数,你能负担得起从缓存中拉出那个低需求函数吗?只要缓存命中率很高,或者偶尔较长的延迟是可以容忍的,这可能就可以了。

在支持 MP3 和 FLAC 解码器的音乐播放器中,较长的延迟可能是可以的。每首歌曲最多只能使用一个,因此它们不需要都驻留在快速内存中。接受延迟加载所需的任何内容,按需从片外加载到快速存储器中。

您希望将生产代码和数据压缩到尽可能小的大小,因此作为一般良好卫生的一点,请确保所有调试、分析和日志记录代码都包含在编译指示中,这些编译指示可以在生产构建中禁用。在 PC 代码中,您可能不会太担心这一点(特别是如果您想在生产软件上运行调试器),但在这里它是必不可少的。相反,您还应该确保在 禁用该代码的情况下运行所有回归测试。只需要在调试中忽略一个运行时依赖项即可创建下游噩梦。

同样,请确保您的软件中的每一段代码都在被使用。运行覆盖测试。如果您发现未使用的代码,则可能是早期版本的遗留问题,可能需要它。这里不是,所以你应该能够摆脱它,对吧?再次,你必须小心。也许这是对一个不能忽视的非常罕见的情况的错误处理。也许它应该包含在回归测试中,但直接触发太难了。您必须根据与架构师甚至硬件团队的讨论做出决定。

最后,与架构师(如果需要,还有营销人员)争论他们要求包含哪些功能是真正必要的。他们可能没有意识到,在您可能想到的每一次优化之后,手提箱仍然不会关闭。然后他们将不得不决定可能不得不牺牲他们真正想要的真正酷的功能。或者,也许他们必须回到业务团队并要求更大的片上存储器,使用您可以提供的关于这些存储器需要增长多少的信息。无论哪种方式,你都会看起来不错!

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • dsp
    dsp
    +关注

    关注

    561

    文章

    8269

    浏览量

    368140
  • 嵌入式
    +关注

    关注

    5209

    文章

    20622

    浏览量

    336753
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RDMA设计56:如何设计基于RDMA的应用程序

    本博文主要交流设计思路,在本博客已给出相关博文约140篇,希望对初学者有用。 注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP 设计。 应用程序的工作流程如图 1所示,大致分为 READ 包
    发表于 04-05 09:54

    如何构建蓝牙应用程序

    应用程序使用蓝牙(blueZ)。 我已经安装了 gcc-riscv64-linux-gnu。 但是,没有安装 blueZ 标头和库。 如何构建我的蓝牙应用程序
    发表于 04-01 07:31

    从算法到部署:Enclustra如何用DSP+FPGA/SoC专长,实现功耗与成本双优化

    DSP技术数字信号处理(DSP)是FPGA和SoC的常见应用领域。为了在此领域客户提供最优服务,Enclustra积累了深厚的DSP专业知识,不仅能提供纯粹的实现服务,更能从零开始支
    的头像 发表于 02-27 08:34 456次阅读
    从算法到部署:Enclustra如何用<b class='flag-5'>DSP</b>+FPGA/SoC专长,实现功耗与成本双<b class='flag-5'>优化</b>?

    深入了解API:详解应用程序接口的作用和原理

    引言:在现代软件开发领域中, API(Application Programming Interface,应用程序接口)扮演着至关重要的角色。无论是在Web开发、移动应用还是大型软件系统中,API
    的头像 发表于 11-03 09:37 532次阅读

    【技术贴】解密艾飞天™DSP黑科技(三):特色算法与未来前瞻

    深度好文推荐优质的DSP产品需要承载优秀的DSP算法,方能体现产品的核心价值。数模龙头艾电子的艾飞天DSP特色算法,在提升产品性能和
    的头像 发表于 10-29 18:48 541次阅读
    【技术贴】解密艾<b class='flag-5'>为</b>飞天™<b class='flag-5'>DSP</b>黑科技(三):特色算法与未来前瞻

    【技术贴】解密艾飞天™DSP黑科技(二):产品迭代与性能飞跃

    深度好文推荐中国数模龙头艾电子推出的艾飞天DSP在产品演进过程中,始终致力于吸收先进的技术成果,并结合自身需求与产品特点,进行针对性的优化和创新,最终打造高度适配的产品解决方案。以
    的头像 发表于 10-29 18:47 466次阅读
    【技术贴】解密艾<b class='flag-5'>为</b>飞天™<b class='flag-5'>DSP</b>黑科技(二):产品迭代与性能飞跃

    如何在应用程序调试期间分析栈和堆使用情况

    随着 AMD Vitis 统一软件平台 2021.2 的发布,Vitis 引入了一个 Tcl 脚本,用于在应用程序运行的特定时间点协助查找栈和堆的内存使用情况。该脚本已延续到后续的 Vitis 版本
    的头像 发表于 10-24 16:54 1028次阅读
    如何在<b class='flag-5'>应用程序</b>调试期间分析栈和堆使用情况

    蜂鸟E203内核优化方法

    提高程序的响应速度和并行度。 应用程序优化:针对具体的应用场景,优化算法和程序实现,减少资源占用,提高效率。例如,开发需要用到的驱动
    发表于 10-21 07:55

    学生适合使用的SOLIDWORKS 云应用程序

    随着科技的不断发展,计算机辅助设计(CAD)技术已经成为现代工程教育的重要组成部分。SOLIDWORKS作为一款CAD软件,其教育版云应用程序学生提供了强大而灵活的设计平台。本文将探讨
    的头像 发表于 09-15 10:39 923次阅读
    学生适合使用的SOLIDWORKS 云<b class='flag-5'>应用程序</b>

    ZEISS INSPECT应用程序,解锁工业测量的无限可能(二)

    在使用ZEISS INSPECT测量时,您是否曾觉得软件功能不够灵活? 您是否期待,能在现有功能基础上,叠加单独的功能模块,以满足的定制化需求? 您是否想过,如果软件可以开放API接口与测试
    的头像 发表于 09-12 14:30 1096次阅读
    ZEISS INSPECT<b class='flag-5'>应用程序</b>,解锁工业测量的无限可能(二)

    ZEISS INSPECT应用程序,解锁工业测量的无限可能(一)

    在使用ZEISS INSPECT测量时,您是否曾觉得软件功能不够灵活? 您是否期待,能在现有功能基础上,叠加单独的功能模块,以满足的定制化需求? 您是否想过,如果软件可以开放API接口与测试
    的头像 发表于 08-22 15:41 1916次阅读
    ZEISS INSPECT<b class='flag-5'>应用程序</b>,解锁工业测量的无限可能(一)

    软件更新 | TSMaster 2025.06版来了!AIO/DIO/DDS全面优化,体验再升级

    我们很高兴带来TSMaster2025.06版本的更新汇总!本次升级聚焦AIO、DIO、用户事件、DDS支持、API文档网页版等核心功能,并释放多项新API,全方位优化软件性能、增
    的头像 发表于 07-25 20:04 1436次阅读
    <b class='flag-5'>软件</b>更新 | TSMaster 2025.06版来了!AIO/DIO/DDS全面<b class='flag-5'>优化</b>,体验再升级

    华秋DFM软件升级时,提示“应用程序无法正常启动”怎么办?

    最近有用户反馈: 登录华秋DFM软件,点自动升级的时候有时会报错,导致无法正常升级。 其中有一种情况是: 软件自动升级时,弹出“应用程序无法正常启动(0xc000007b)。请单击“确定\"
    发表于 06-12 18:32

    FANUC程序传输软件的使用

    FANUC程序传输软件的使用
    发表于 06-04 16:23 0次下载

    VirtualLab:光栅的优化与分析

    光栅是光学工程师使用的最基本的工具。为了设计和分析这类组件,快速物理光学建模和设计软件VirtualLab Fusion用户提供了许多有用的工具。其中包括参数优化,以轻松优化系统,以
    发表于 05-23 08:49