法律状态公告日
法律状态信息
法律状态
2014-09-17
未缴年费专利权终止 IPC(主分类):G06F9/45 授权公告日:20130109 终止日期:20130727 申请日:20090727
专利权的终止
2013-01-09
授权
授权
2010-07-28
实质审查的生效 IPC(主分类):G06F9/45 申请日:20090727
实质审查的生效
2009-12-23
公开
公开
所属技术领域
本发明涉及嵌入式软件功耗优化技术领域,尤其是涉及一种基于复杂度的嵌入式软件功耗BP神经网络建模方法。
背景技术
目前在国家提倡“节能减排”的背景下,嵌入式系统的功耗是一个日益引起人们关注的热点问题,已受到各级政府部门和业内软/硬件开发商的高度重视。
嵌入式计算机系统(简称嵌入式系统)是典型的软件驱动执行的系统,从其组成分析,嵌入式软件的运行驱动了低层微处理器、总线、Cache、存储器和I/O接口等硬件的电路活动,导致了系统功耗的产生,因此,嵌入式软件是产生系统功耗的“主动”因素和“活跃”因素,这也是嵌入式软件功耗的本质含义。
嵌入式软件的功耗优化设计是研究在一定性能(如速度、吞吐量、实时性、可靠性、防危性、可信性、成本等)约束下嵌入式软件的功耗优化(功耗降低或功耗最小化)问题,属于静态功耗优化技术,包括功耗仿真、功耗建模、功耗估计、功耗降低、功耗评价以及相应支持工具开发等内容,是软件运行时开展动态功耗管理(DPM:Dynamic Power Management)和RTOS功耗相关任务调度(Power-aware Task Scheduling)的基础。其中,功耗建模主要是从软件本身影响其功耗的相关因素(即软件设计特征)角度,深入分析了软件功耗的构成及形成机理,建立功耗与关联因素的关系模型。嵌入式软件功耗模型通常可以分为以下四类:
1)基于硬件性能计数器的功耗模型(Hardware performance counter-based power model):由于多数现代微处理器中都嵌入了可编程的计数器,通过监控系统发生的事件,能够用于测量微处理器的性能,因而进一步可用于软件的功耗分析与优化。
2)指令级的功耗模型(Instruction-level power model):又称为低层模型或微模型(Micro-model),通过对微处理器的每条汇编指令以及指令对(Instruction pair)进行功耗测量,实现汇编语言程序级的功耗分析与估计,同时,通过编译时产生的符号表信息也能够部分实现对高级语言程序的功耗分析与优化。
3)基于特征的宏模型(Characterization-based macro-model):又称为高层模型,针对高级语言程序(如C、C++和Java等)的函数或子程序,采用回归拟合方法建立功耗与软件的某些相关高层度量特征(如算法复杂度或基于路径的基本块关联信息(Trace-based basic-blockcorrelation information))之间的关联模型,能够快速地对软件的功耗进行分析与估计。这是当前软件功耗建模的一个主要方向,一些研究者根据具体的研究问题提出了明确的功耗函数关系,如二元线性函数关系。
4)基于微结构级仿真的功耗模型(Architectural level simulation-based power model):针对特定结构的微处理器,采用周期精确的全功能微结构级功耗仿真器(Cycle-accuratefull-function power simulator),如Wattch和SoftWatt,对软件的功耗进行测量和估计,从而为软件的功耗分析与优化提供基础数据。
目前,针对嵌入式软件的功耗分析与建模技术,为了提高功耗估计的速度,宏模型一般使用简单的二元线性函数。从理论上看,假设软件功耗与软件高层度量特征之间的关联关系是线性回归函数关系,缺乏充分的依据;从实践上看,线性函数拟合功耗函数关系,虽然模型简单,估计速度较快,但功耗估计值误差也较大(一般在20%以内),许多情况下不能满足实际工程需要。两方面综合分析,嵌入式软件功耗函数更可能是一个非线性函数。
发明内容
本发明的目的在于提供了一种基于算法复杂度的嵌入式软件功耗BP神经网络建模方法。
本发明解决其技术难题所采用的技术方案的步骤如下:
1)度量算法复杂度的特征量
嵌入式软件功耗在算法层次上与算法复杂度密切相关,本发明抽取出算法复杂度的下列三个特征量进行度量:
●时间复杂度OS度量:选择算法的平均时间复杂度作为时间复杂度的计算依据。
●空间复杂度SS度量:选择算法在其运行期间辅助变量所申请空间总量作为空间复杂度的计算依据。
●输入规模IS度量:输入规模的度量方法一般受算法的操作细节影响,不同的具体算法有不同的度量方法,如对于一个英文字符拼写检查算法,统计输入中词或者字符的数量作为输入规模的度量;对于排序、查找列表的最小元素等与列表有关的算法,列表的长度是该算法的输入规模;而一个n次多项式p(x)=anxn+…+a0求值的问题,输入规模是多项式的次数,或者是多项式系数的个数。
2)建立基于算法复杂度的软件功耗模型
通过如下公式得到嵌入式软件的功耗:
ES=PS×TS=f(CS)×TS=f(Os,Ss,Is)×TS
其中:
ES表示软件的功耗,
PS表示软件的平均功率,
TS表示软件的运行时间,
CS表示功耗相关的算法复杂度的特征量,
f表示软件功率与算法复杂度的特征量的关联函数(简称功耗函数)。
由于PS=f(Os,Ss,Is),为确定功耗函数f,本发明采用BP(Back-Propagation反向传播)神经网络(简称BP网络)拟合,实现功耗函数逼近。
3)BP网络的功耗函数逼近
BP网络是将W-H学习规则一般化,对非线性可微分函数进行权值训练的多层网络。本发明采用具有n个隐层节点的单隐层三层BP网络,使用输入矢量Os,Ss,Is和相应的输出矢量PS样本集训练BP网络,逼近功耗函数f,包括以下步骤:
●隐层数的确定:使用单隐层的BP网络。
●节点数的确定:根据如下经验公式选择隐层节点数n1,
其中,n=3为输入节点个数,m=1为输出节点个数,a为1到10之间的常数,因此,n1取值范围为3~12。
●各层函数的确定:BP网络训练中隐层传递函数使用tansig函数,输出层传递函数使用purelin函数。
●BP网络的训练与构造:通过功耗仿真实验平台HMSim获得软件功耗实验数据,用于训练、构造BP网络,确定各层的权值和阈值,形成一个训练好的BP网络模型,从而逼近功耗函数f,使该BP网络能够在一定输入规模下产生相应期望PS的输出。本发明与背景技术相比,具有的有益效果是:
1)精确性:本发明建立的基于复杂度的软件功耗BP网络宏模型,相比与其他人建立的线性函数功耗宏模型,功耗预测的精度得到了较大提升,预测误差在10%以内。
2)实用性:可用于快速预测(或估算)软件算法在一定输入规模情况下的功耗值,为开展相应的功耗优化研究和开发工作打下坚实的数据基础。
附图说明
图1是本发明整个系统工作的流程图。
图2是本发明BP网络结构图。
具体实施方式
下面结合附图和实例对本发明作进一步的说明。
1)度量算法复杂度的特征量
嵌入式软件功耗在算法层次上与算法复杂度密切相关,本发明抽取出算法复杂度的下列三个特征量进行度量:
●时间复杂度OS度量:选择算法的平均时间复杂度作为时间复杂度的计算依据,并将算法的平均时间复杂度O(n)、O(logn)、O(nlogn)、O(n2)和O(n3)依次映射为1、2、3、4和5。
●空间复杂度SS度量:选择算法在其运行期间辅助变量所申请空间总量作为空间复杂度的计算依据。如对于一个结构变量,可将其每个成员所占用的空间累积起来,即可得到该变量所需要的内存。类似地,可得到一个数组变量所需要的空间,方法是用数组的大小乘以单个数组元素所需要的空间,如一个int A[rows][cols]的数组,如果使用Microsoft Visual C++编译器,int数据类型占用字节数为4,则数组占用了4×rows×cols字节;对于算法中辅助变量未使用列表的情况下,其空间度量为1个int单位。
●输入规模IS度量:输入规模的度量方法一般受算法的操作细节影响,不同的具体算法有不同的度量方法,如对于一个英文字符拼写检查算法,统计输入中词或者字符的数量作为输入规模的度量;对于排序、查找列表的最小元素等与列表有关的算法,列表的长度是该算法的输入规模;而一个n次多项式p(x)=anxn+…+a0求值的问题,输入规模是多项式的次数,或者是多项式系数的个数。
根据上面描述的度量规则,实例训练样本算法集(具体实现为训练样本函数列表)的时间复杂度、空间复杂度和输入规模度量结果如表1所示。
表1训练样本函数列表
其中,MAX_SIZE表示一维数组的长度,NUMBER表示二维数组每一维的长度。
2)建立基于算法复杂度的软件功耗模型
嵌入式软件功耗的一般模型可表示为:
ES=PS×TS=f(CS)×TS
其中,ES表示软件的功耗,PS表示软件的平均功率(可以是通过一组基准程序测试获得的平均值,也可以通过功耗-特征关联模型获得),TS表示软件的运行时间(算法越复杂,运行时间越长),CS表示功耗的某些软/硬件相关特征度量,f表示软件功率与软/硬件相关特征度量的关联函数(简称功耗函数)。
从算法层次上考虑PS的软件关联特征,进一步得到:
PS=f(CS)=f(Os,Ss,Is)
其中,OS为算法的时间复杂度度量,SS为算法的空间复杂度度量,IS为算法输入规模的度量。
为确定功耗函数f,建立更精确的算法级功耗模型,本发明采用BP网络进行拟合,实现功耗函数逼近。
3)BP网络的功耗函数逼近
本发明采用具有n个隐层节点的单隐层三层BP网络(其结构如图2所示),使用输入矢量Os,Ss,Is和相应的输出矢量PS样本集训练BP网络,逼近功耗函数f。由于BP网络具有3个输入矢量Os,Ss和Is,因而BP网络输入层的节点数为3个;由于BP网络具有1个输出矢量PS,因而BP网络输出层的节点数为1个。
因此,隐层节点数n1根据如下公式计算获得:
其中,n=3为输入节点个数,m=1为输出节点个数,a为1到10之间的常数,因此,n1取值范围为3~12。根据样本集训练结果误差分析,n1=11时误差最小。
BP网络训练中隐层传递函数使用tansig函数,输出层传递函数使用purelin函数。
表1是BP网络的输入样本,每一个样本在不同输入规模下运行产生的功耗数据由功耗仿真试验平台HMSim获得。
设置网络训练误差为MSE(Mean square error均方差),其期望值为10-7,利用这些样本对BP网络进行训练,构造BP网络,得到的BP网络权值和阈值如下:
b2=[-1.5508]
其中,w1为输入层到隐层的权值,b1为隐层的阈值,w2为隐层到输出层的权值,b2为输出层的阈值。
在确定各层的权值和阈值后,形成一个训练好的BP网络模型,从而逼近功耗函数f,使该BP网络能够在一定输入规模下产生相应期望PS的输出,即软件功率PS。
最后,确定估算算法集,以求二维整数数组中的最大值函数Max为例,利用BP网络可预测该函数的功率PS,然后由实际运行时间TS,根据公式ES=PS×TS,可计算出软件功耗ES,并与其实际测试的功耗值进行比较。其中,Max函数的算法特征量度量值、预测功耗值和通过功耗仿真试验平台HMSim获得的实际功耗值如表2所示,可以看出,预测功耗值和实际功耗值的误差范围为3%~10%。
表2测试函数复杂度度量和预测结果
机译: 基于统一建模语言(UML)设计模型的嵌入式软件功耗预测方法
机译: 统一建模语言UML设计模型预测嵌入式软件功耗的方法
机译: 一种改进基于DCF的无线网络中功耗的方法,其中考虑到了通过使用划分为一个最佳窗口部分和一个基于IEEE的DOWS状态段的BEACON间隔来最小化彼此通信的终端的功耗