嵌入式软件能耗的影响因素

总结文献资料,对嵌入式软件能耗的影响因素进行了分析,参考的文献和资料在文章末尾

对一个嵌入式系统而言,除了完成基本的功能,要在市场上提高自身的产品竞争力,有很多优化的方向,其中,能耗就是一个重要的设计因素,一些典型的例子包括手机、蓝牙耳机、蓝牙音箱等,它们的续航能力常常是顾客选购的一个参考因素,也影响了顾客的满意程度。

低能耗的设计是指在不影响系统运行的前提下, 将系统运行时的能耗降到最低,一个完整的嵌入式系统包括物理硬件系统和对应操作的软件系统,对一名软件工程师来说,在硬件选型之外,对于能耗因素更多关注在软件相关的能耗。

  • 计算机产生能耗的基本原因

    计算机产生的能耗是指:系统运行时,电脑CPU、Cache以及I/O设备等硬件产生的能量消耗。

    软件不会直接产生能耗,只有当软件在操作系统中,通过软件内部的每一条指令代码驱动对应的硬件模块进行任务工作, 从而由硬件模块产生系统能耗。

    计算机系统的能耗是由硬件系统所直接决定, 而软件系统则是驱动硬件系统产生能耗的主要原因

  • 抽象的软件能耗分析

    根据文献1所述,可以从三个层面进行能耗分析,分别是指令层、算法层、软件体系结构层,概述如下:

    • 指令层

      • 数据存取是一个相当大的工作量,减少指令对存储器的存储操作, 如果选择优化后的编译器, 则可能会实现系统的低能耗
      • 高级程序语言转码为低级语言,指令的执行次数和执行时间会影响能耗
      • 对指令的执行顺序进行再次排序, 降低指令间电路交换的频率, 系统能耗就会减少
      • 对于处理器的特定优化技术可降低能耗
    • 算法层

      在算法层次下, 软件的能耗由算法和算法中数据结构所决定:对程序代码中的语句进行调度、对算法和数据结构进行合适的选择与设计, 从而找出设计低能耗软件的方法

      • 算法执行次数:算法的执行产生对应能耗, 算法执行次数决定软件能耗大小
      • 时间复杂度:时间复杂度决定着算法运行时间的长短, 运行时间的长短影响着算法执行次数, 从而影响着软件能耗
      • 空间复杂度:空间复杂度表示着算法运行中所需的存储空间大小, 减少存储空间大小可以实现降低软件能耗
    • 体系结构层

      好的软件应该具备一个好的软件体系结构, 同时软件体系结构还对软件能耗产生影响。 相比于指令级和算法级, 这一级别的能耗研究分析才刚刚起步

      因为嵌入式软件一般是在嵌入式实时操作系统下运行, 资源受限, 所以必须高效的设计嵌入式软件, 去除冗余, 优化构件:

      • 程序模块复杂性:减少程序平均复杂性,可提高软件简单性,进而实现软件的能耗优化
      • 程序模块耦合度:耦合度越高,软件越复杂
      • 构建间通信接口:减少数据传输时的通信能耗

    以上分类比较抽象,下面举两个更具体例子

  • 一些更具体的例子

    • 内核对任务的调度策略

      • 减少不必要的进程切换:

        进程切换会导致CPU的唤醒和功耗,因此选用合适的调度策略可以减少不必要的上下文切换,从而降低能耗

      • 优化任务分配

        避免高耗能任务连续执行,可降低整体能耗

    • 利用硬件特性

      • 如C/C++中struct的对齐,结构体对齐可以提高访问速度和提高内存利用率
  • 参考

    嵌入式系统软件能耗分析技术的研究 - 中国知网 (cnki.net)

    基于RTOS的CPU能耗控制技术研究.pdf资源-CSDN文库

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值