电子产业一站式赋能平台

PCB联盟网

搜索
查看: 2064|回复: 0
收起左侧

浙大嵌入式培训中心_嵌入式系统中软件优化的低功耗设计

[复制链接]

2607

主题

2607

帖子

7472

积分

高级会员

Rank: 5Rank: 5

积分
7472
发表于 2020-7-27 17:59:42 | 显示全部楼层 |阅读模式
浙大嵌入式培训中心_嵌入式系统中软件优化的低功耗设计,   

   

  嵌入式系统是以应用为中心、以计算机技术为基础,并且软硬件可裁减,适用于应用系统对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统[1]。在嵌入式系统的设计中,低功耗设计(Low-Power Design)是必须面对的问题。其原因在于嵌入式系统被广泛应用于便携式和移动性较强的产品中,而这些产品不是一直都有充足的电源供应,往往靠电池来供电,所以应从每一个细节来考虑降低功率消耗,尽可能地延长电池的使用时间。事实上,从全局来考虑低功耗设计已经成为了一个越来越迫切的问题。

  低功耗是便携式电子设备必须具备的一个关键特性。过去几年的研究主要针对硬件部分,而现在人们则更注重通过优化软件部分来降低系统功耗。要想对软件进行优化,必须了解每条指令所产生的功耗,并选择正确的编译方法,以降低程序执行的功耗。由于各种微处理器架构不同,指令集和功耗也不一样。因此,适用于某一处理器的优化方式并不一定适用于其他处理器。这样,选择与可降低功耗的软件相匹配的微处理器便十分重要。

  1 编译优化

  编译器的作用是将由高级语言编写的程序,如C/C++等,翻译成能够在目标机上执行的程序。换句话说,编译器为高级语言程序员提供了一个抽象层,使得程序员能够通过编写与实际问题相近的高级语言代码(而不用汇编或者机器语言),方便地解决实际问题;同时,也使得程序的可读性和可维护性得到保证,提高软件开发的效率。另外,将程序移植到新的目标机,也只要用相应的编译器对程序进行重新编译,而不必重新编写程序。

  但是某些情况下,这样的做法是以牺牲程序的执行性能为代价的。编译器的有效性以及它所生成的代码效率,可以与专家级的汇编/机器语言程序员所编写的代码相比较得出,因此可以通过对编译器的优化,生成效率更高的代码。

  通过优化编译器可以有效地降低嵌入式设备的功耗。在一个程序中,每一条指令都将激活微处理器中的某些硬件部件,因此,正确选择指令可降低处理器的功耗。通过建立特定处理器架构下指令集的功耗信息,利用“减少跳转的指令重排序”等方法,可以进行有效的软件低功率优化。

  这里作两点假设:① 每一条指令都有一个固定量的功率;② 每条指令的散热与它的操作数及其他指令无关。从图1可以看到,通过对指令的重新排序,可以把一段程序的初始功率状况,如图1(A)所示,转换成图1(B)所示的那样。可以得出这样的结论:尽管两种情况中局部区域的散热状况不一样,但是它们所消耗的总电能是一致的。换句话说,可以在不影响总耗电的情况下,对程序的局部散热情况作出某些调整,以符合实际的需要。下面通过将指令进行重新排序来实现系统功耗的降低[2]。

  嵌入式中lr和pc, 嵌入式参数数据库, 嵌入式系统安全现状, 嵌入式底层驱动产品, 英特尔嵌入式项目, 嵌入式实战30g项目, 佛山嵌入式培训, 嵌入式汽车电子面试, 嵌入式三维圆柱图, 海康嵌入式系统, 嵌入式软件应纳税额, 新疆嵌入式居住计划, 如何连接嵌入式视频, 嵌入式控制是否通电, 嵌入式培训免费, 嵌入式装饰圆形, 嵌入式个人发展方向, 480W嵌入式热板, 嵌入式培训粤嵌, 嵌入式是大坑, 嵌入式学习网站, 自动化个嵌入式区别,
  


   

  图1程序内局部区域功率的两种可能性

  2 指令排序

  我们知道,运行某一特定程序的处理器的功率P=I&TImes;Vdd(I为平均电流,Vdd为给定的电压),则程序的功耗E=P&TImes;T(T为程序的执行时间);同时,T=N&TImes;T(T为指令周期),即为主频的倒数,N为程序执行的周期数)。在嵌入式系统,尤其是在移动设备中,一般都通过电池供电,故系统的功耗是一个非常重要的指标。现在,Vdd和T都是已知量,因此程序消耗的电能E与电流I和程序周期数N的乘积成正比。这里通过引用参考文献[3]中所建立的模型来进行阐述。该模型中通过示波器等设备,测量并估计执行每条指令所需要的电流I[4]。综上所述,可以利用嵌入式处理器中的多数据存储区域的特性,实现数据的并行处理,通过对指令的排序,减少指令的执行周期,从而达到降低功耗的目的。

  2.1 举例

  假设有一段C语言程序,如图2(A)所示。图2(B)是其相应的汇编代码,图2(C)表示每个结点带有两个权值的数据依赖图(Data Dependence Graph,DDG)。第一个权值表示结点在DDG中的深度,如V10的第一个权值为1,V0的第一个权值为6。假设这个权值越大,表示其优先级越高,如图2(C)中V0和V1具有最高的优先级。

  
  


   

  
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表