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
    +关注

    关注

    552

    文章

    7962

    浏览量

    348267
  • 嵌入式
    +关注

    关注

    5068

    文章

    19019

    浏览量

    303291
收藏 人收藏

    评论

    相关推荐

    使用OpenVINO™ ElectronJS中创建桌面应用程序

    呈现。启动应用程序后,会看到一个带有黑色占位符的界面。要激活摄像头,只需从检测到的设备列表中选择喜欢的
    的头像 发表于 11-25 11:35 66次阅读
    使用OpenVINO™ ElectronJS中创建桌面<b class='flag-5'>应用程序</b>

    PCM2912应用程序的操作环境

    电子发烧友网站提供《PCM2912应用程序的操作环境.pdf》资料免费下载
    发表于 10-21 09:33 0次下载
    PCM2912<b class='flag-5'>应用程序</b>的操作环境

    I2C启动加载准备TMS320C645x应用程序

    电子发烧友网站提供《I2C启动加载准备TMS320C645x应用程序.pdf》资料免费下载
    发表于 10-16 11:30 0次下载
    <b class='flag-5'>为</b>I2C启动加载准备TMS320C645x<b class='flag-5'>应用程序</b>

    DSP/BIOS 5应用程序迁移到SYS/BIOS 6

    电子发烧友网站提供《将DSP/BIOS 5应用程序迁移到SYS/BIOS 6.pdf》资料免费下载
    发表于 09-27 10:54 0次下载
    将<b class='flag-5'>DSP</b>/BIOS 5<b class='flag-5'>应用程序</b>迁移到SYS/BIOS 6

    keil软件怎么运行写好的程序

    Keil软件是一款功能强大的嵌入式开发工具,广泛应用于单片机、ARM、DSP等嵌入式系统的开发。本文将介绍如何使用Keil软件运行写好的程序。 安装Keil
    的头像 发表于 09-02 10:29 1571次阅读

    Anthropic推出iPhone应用程序和业务层

    Anthropic 推出 iPhone 应用程序和业务层,支持使用Claude 3 Opus、Sonnet 和 Haiku 模型
    的头像 发表于 05-07 10:22 403次阅读

    优化嵌入式DSP软件的编译器

    确定哪个索引或一组索引对于优化很重要取决于应用程序开发人员的目标。例如,性能优化意味着开发人员可以使用速度较慢或成本较低的 DSP 来完成相同数量的工作。
    发表于 05-03 09:45 206次阅读
    <b class='flag-5'>优化</b>嵌入式<b class='flag-5'>DSP</b><b class='flag-5'>软件</b>的编译器

    使用Docker部署Go Web应用程序步骤

    大多数情况下Go应用程序被编译成单个二进制文件,web应用程序则会包括模版和配置文件。而当一个项目中有很多文件的时候,由于很多文件没有同步就会导致错误的发生并且产生很多的问题。
    发表于 04-20 09:33 475次阅读
    使用Docker部署Go Web<b class='flag-5'>应用程序</b>步骤

    SOLIDWORKS云应用程序:面向学生的全新机遇

    随着科技的快速发展和数字化转型的深入,SOLIDWORKS云应用程序的推出,无疑为学生提供了一个全新的学习和实践平台。SOLIDWORKS,作为一款工程设计软件,其云应用程序的推出,不仅提升了工作效率,还为学生提供了更为便捷的学
    的头像 发表于 03-25 15:39 256次阅读

    应用程序中的服务器错误怎么解决?

    在使用应用程序时,可能会遇到服务器错误的问题。这种错误通常会导致应用程序无法正常运行 ,给用户带来不便。下面将介绍应用程序中的服务器错误及其解决方法,帮助您快速解决这一问题。
    的头像 发表于 03-12 15:13 5774次阅读

    LTE MQTT通信应用程序说明

    电子发烧友网站提供《LTE MQTT通信应用程序说明.pdf》资料免费下载
    发表于 02-21 10:47 0次下载
    LTE MQTT通信<b class='flag-5'>应用程序</b>说明

    dsp是什么意思 dsp怎么调音质最好

    DSP是数字信号处理的简称,是通过电子设备对音频信号进行处理和优化的技术。DSP可以对音频信号进行各种滤波、降噪、增强、混响、均衡等处理,从而改善音质或满足特定的音频需求。 要调整DSP
    的头像 发表于 01-31 14:08 1.1w次阅读

    如何构建linux开发环境和编译软件工程、应用程序

    前文介绍了如何使用官方提供的镜像文件启动开发板,本文将说明如何构建linux开发环境和编译软件工程、应用程序
    的头像 发表于 01-03 12:31 1940次阅读
    如何构建linux开发环境和编译<b class='flag-5'>软件</b>工程、<b class='flag-5'>应用程序</b>

    如何在Spring Boot应用程序中整合ZXing库

    在数字化时代,二维码已经成为了信息交流的一种常见方式。它们被广泛用于各种应用,从产品标签到活动传单,以及电子支付。本文将向展示如何在Spring Boot应用程序中整合ZXing库,以创建和解析QR码。
    的头像 发表于 12-03 17:39 1061次阅读

    开发java应用程序的基本步骤是

    Java应用程序。确定希望应用程序能够执行的任务和提供的功能。这将有助于指导您在开发过程中进行决策并确定实现代码的方式。 2.设计应用程序:在开始编写代码之前,
    的头像 发表于 11-28 16:52 1524次阅读