基于复杂度的嵌入式软件功耗模型
表2Integrator/CM7TDMIARM7TDMI基本指令功耗
InstructionE/nJInstructionE/nJADDR2,R0,R10.710KDRR2,[R1,R3]2.774ANDR2,R0,R10.856STRR2,[R1,R3]1.961ORRR2,R0,R10.907MULR2,R0,R12.768ORRSR2,R0,R10.967MLAR2,R0,R1,R03.748MOVR2,R10.935CMPR0,R10.751MOVR0,R00.903SWPR2,R0,[R1]3.917ADDR2,R0,R1,ASRR32.137MRSR2,CPSR0.977Blable3.095MSRCPSR_f,R21.143
表3执行连接两条源操作数类型不同指令的功耗
Instr1/Instr2SHIFT_REGSHIFT_IMMREGIMMSHIFT_REG-0.332-0.215-0.232-0.159SHIFT_IMM-0.269-0.177-0.165-0.103REG-9.02E-02-5.98E-02-0.186-0.200IMM-0.141-5.35E-02-9.08E-02-7.53E-02
表4流水线断流引起的功耗
InstructiontypeEnergycost/nJAny2.04
根据以上表中的数据结合该函数汇编指令,得出该插入排序函数的指令级功耗分析情况(表5)。
表5简单插入排序指令级功耗分析
指令BasecostIntercostStallcostMOVr3,#10.930--B|L1,56|3.100-0.0752.04MOVr2,#00.930-0.032-B|L1,44|3.100-0.0752.04LDRr12,[r0,r3,LSL#2]3.270-0.032-LDRlr,[r0,r2,LSL#2]3.270-0.177-CMPr12,lr0.830-0.1652.04STRITr12,[r0,r2,LSL#2]2.480-0.060-STRLTlr,[r0,r3,LSL#2]2.480-0.177-CMPr2,r2,#11.590-0.103-CMPr2,r30.830-0.0912.04BLT|L1.20|3.100-0.0602.04ADDr3,r3,#11.590-0.075-CMPr3,r10.830-0.0912.04BLT|L1.12|3.100-0.2002.04
至此,可以得出完整的简单插入排序函数的基于复杂度的嵌入式软件功耗模型(第3页)
E=93.51-5.38n+10.672
3.3基于复杂度的嵌入式软件功耗模型(第3页)的估算功耗
当输入数组长度为n=80的情况下,通过该模型可快速估算出插入排序函数的功耗
E=93.51-5.38×80+10.67×1600=67924.85(nJ)
与指令级功耗模型的估测值误差小于1%(表6),而利用基于复杂度的功耗模型估测该函数执行所需的功耗的速度而大大提高。
表6各种数组长度下简单插入排序指令级功耗
数组长度指令级功耗模型估测基于复杂度的功耗模型估测误差n=101106.338--n=204252.333 《基于复杂度的嵌入式软件功耗模型(第3页)》