根据以上表中的数据结合该函数汇编指令,得出该插入排序函数的指令级功耗分析情况(表5)。
表5 简单插入排序指令级功耗分析
指 令
Base cost
Inter cost
Stall cost
MOV r3,#1
0.930
-
-
B |L1,56|
3.100
-0.075
2.04
MOV r2,#0
0.930
-0.032
-
B |L1,44|
3.100
-0.075
2.04
LDR r12,[r0,r3,LSL #2]
3.270
-0.032
-
LDR lr,[r0,r2,LSL #2]
3.270
-0.177
-
CMP r12,lr
0.830
-0.165
2.04
STRIT r12,[r0,r2,LSL #2]
2.480
-0.060
-
STRLT lr,[r0,r3,LSL #2]
2.480
-0.177
-
CMP r2,r2,#1
1.590
-0.103
-
CMP r2,r3
0.830
-0.091
2.04
BLT |L1.20|
3.100
-0.060
2.04
ADD r3,r3,#1
1.590
-0.075
-
CMP r3,r1
0.830
-0.091
2.04
BLT |L1.12|
3.100
-0.200
2.04
至此,可以得出完整的简单插入排序函数的基于复杂度的嵌入式软件功耗模型
E=93.51-5.38n+10.67 2
3.3 基于复杂度的嵌入式软件功耗模型的估算功耗
当输入数组长度为n=80的情况下,通过该模型可快速估算出插入排序函数的功耗
E=93.51-5.38×80+10.67×1600=67924.85(nJ)
与指令级功耗模型的估测值误差小于1%(表6),而利用基于复杂度的功耗模型估测该函数执行所需的功耗的速度而大大提高。
表6 各种数组长度下简单插入排序指令级功耗
数组长度
指令级功耗模型估测
基于复杂度的功耗模型估测
误 差
n=10
1106.338
-
-
n=20
4252.333
-
-
n=40
16943.823
-
-
n=80
67604.803
67924.85
0.4%
4 总结
本文介绍了一种基于复杂度的嵌入式软件功耗模型,以对象函数的算法平均复杂度的建模参数,利用现有底层指令级功耗模型对函数进行分析,回归出必需的系数,得到该函数完整的基于复杂度的嵌入式软件功耗模型,从而可快速估算出该函数在不同输入情况下的软件功耗。这种分析方法的缺点在于只适用于算法复杂度明显的一些函数,从而较容易构建基于复杂度的模型。另外在建模过程中,仍然需要指令级功耗模型的分析法的协助。
上一页 [1] [2]
本文关键字:模型 嵌入式软件 嵌入式系统-技术,单片机-工控设备 - 嵌入式系统-技术