基于复杂度的嵌入式软件功耗模型
级模型分析得到该函数在每组参数Ii情况下的功耗。
其中然后通过矩阵运算即可回归出参数向量C。
3基于复杂度的插入排序函数软件功耗建模
以下将以Integrator/CM7TDMI评估板的ARM7TDMI微处理器为基础,对插入排序函数来构建基于复杂度的嵌入式软件功耗模型(第2页)。
假设某运行在ARM7TDMI处理器上的函数,对一长度为n的整形数组a[n]使用简单插入排序算法进行排序。算法的C语言代码与其经过ARMCC编译器编译后的汇编代码如下:
voidins_sort(inta[],intn){
intx,i,j;
for(i=1;i<n;i++)
for(j=0;j<i;j++){
if(a[i]<a[j]){
x=a[j];
a[j]=a[i];
a[i]=x;
}
}
}
ins_sortPROC
STRlr,[sp,#-4]!
MOVr3,#1
B|L1.56|
|L1.12|MOVr2,#0
B|L1.44|
|L1.20|LDRr12,[r0,r3,LSL#2]
LDRlr,[r0,r2,LSL#2]
CMPr12,lr
STRLTr12,[r0,r2,LSL#2]
STRLlr,[r0,r3,LSL#2]
ADDr2,r2,#1
|L1.44|CMPr2,r3
BLT|L1.20|
ADDr3,r3,#1
|L1.56|CMPr3,r1
BLT|L1.12|
LDRpc,|sp|,#4
3.1基于复杂度的功耗模型
简单插入排序算法平均复杂度为O(n2)。该函数的软件功耗模型可用如下线性公式描述:
其中,n为数组的长度,E为在输入数组长度的n的情况下函数的功耗。
3.2获得系数cj
在这一步骤中,主要以Integrator/CM7TDMI评估板的三段流水线、不设cache的ARM7TDMI处理器的指令级功耗模型为基础,分析该插入排序函数分别在输入数组长度n=10、20、40情况下的功耗情况,并通过回归法获得系数cj。
在该指令级功耗模型中,指令执行的功耗主要来自两个部分:执行单条指令引起的功耗(basecost)与连续执行不同类型的指令导致处理器状态改变所引起的额外功耗(inter-instructioncost)。其公式如下:
其中,Ei为执行第I条指令的基本指令功耗(表2),Oij为连续执行第I条和第I指令引起的额外功耗(表3),ε为流水线断流引起的功耗(表4)。
《基于复杂度的嵌入式软件功耗模型(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/169097.html
其中然后通过矩阵运算即可回归出参数向量C。
3基于复杂度的插入排序函数软件功耗建模
以下将以Integrator/CM7TDMI评估板的ARM7TDMI微处理器为基础,对插入排序函数来构建基于复杂度的嵌入式软件功耗模型(第2页)。
假设某运行在ARM7TDMI处理器上的函数,对一长度为n的整形数组a[n]使用简单插入排序算法进行排序。算法的C语言代码与其经过ARMCC编译器编译后的汇编代码如下:
voidins_sort(inta[],intn){
intx,i,j;
for(i=1;i<n;i++)
for(j=0;j<i;j++){
if(a[i]<a[j]){
x=a[j];
a[j]=a[i];
a[i]=x;
}
}
}
ins_sortPROC
STRlr,[sp,#-4]!
MOVr3,#1
B|L1.56|
|L1.12|MOVr2,#0
B|L1.44|
|L1.20|LDRr12,[r0,r3,LSL#2]
LDRlr,[r0,r2,LSL#2]
CMPr12,lr
STRLTr12,[r0,r2,LSL#2]
STRLlr,[r0,r3,LSL#2]
ADDr2,r2,#1
|L1.44|CMPr2,r3
BLT|L1.20|
ADDr3,r3,#1
|L1.56|CMPr3,r1
BLT|L1.12|
LDRpc,|sp|,#4
3.1基于复杂度的功耗模型
简单插入排序算法平均复杂度为O(n2)。该函数的软件功耗模型可用如下线性公式描述:
其中,n为数组的长度,E为在输入数组长度的n的情况下函数的功耗。
3.2获得系数cj
在这一步骤中,主要以Integrator/CM7TDMI评估板的三段流水线、不设cache的ARM7TDMI处理器的指令级功耗模型为基础,分析该插入排序函数分别在输入数组长度n=10、20、40情况下的功耗情况,并通过回归法获得系数cj。
在该指令级功耗模型中,指令执行的功耗主要来自两个部分:执行单条指令引起的功耗(basecost)与连续执行不同类型的指令导致处理器状态改变所引起的额外功耗(inter-instructioncost)。其公式如下:
其中,Ei为执行第I条指令的基本指令功耗(表2),Oij为连续执行第I条和第I指令引起的额外功耗(表3),ε为流水线断流引起的功耗(表4)。
《基于复杂度的嵌入式软件功耗模型(第2页)》