发明名称 一种基于ARM指令集的嵌入式软件能耗统计方法
摘要 本发明公布了一种基于ARM处理器的嵌入式软件能耗统计模型。提供了一种新的模型和技术用于测量软件功耗,为相应的功耗优化研究和开发工作提供数据基础。本发明提出的嵌入式软件能耗统计模型包括处理器、存储器和I/O控制器等硬件单元的能耗,并根据ARM指令集指令周期的规律设计了相应指令周期数的计算方案。将本发明应用到高精度指令级嵌入式软件能耗模拟器HMSim中后,实验结果表明,该模型的能耗计算结果与实际仪器测量结果的误差在10%以内,可准确地反映软件实现方式对系统能耗的影响程度。
申请公布号 CN101894067B 申请公布日期 2012.02.01
申请号 CN201010191808.4 申请日期 2010.06.04
申请人 四川大学 发明人 郭兵;沈艳;朱建;任磊;王继禾;伍元胜;邓勤林
分类号 G06F11/36(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 代理人
主权项 一种基于ARM指令集的嵌入式软件能耗统计方法,其特征在于建立该方法的步骤如下:1)根据嵌入式系统的硬件组成,嵌入式软件能耗分为处理器(MPU)能耗、存储器能耗、I/O控制器能耗和其它硬件单元产生的能耗,其中I/O控制器包括数据总线、UART控制器、LCD控制器、网卡控制器,即:Esoftware=Empu+Emem+Eio+Eother其中,Esoftware表示嵌入式软件能耗,Empu表示处理器能耗,Emem表示存储器能耗,Eio表示I/O控制器能耗,Eother表示嵌入式系统主板上其它硬件单元的能耗,此部分能耗在软件执行时能耗值一般较小,可忽略不计;2)在步骤1)公式中的Empu按照如下公式进行计算: <mrow> <msub> <mi>E</mi> <mi>mpu</mi> </msub> <mo>=</mo> <msub> <mi>E</mi> <mi>instr</mi> </msub> <mo>+</mo> <msub> <mi>E</mi> <mi>inter</mi> </msub> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow> <mi>i</mi> <mo>=</mo> <mi>n</mi> </mrow> </munderover> <mfrac> <mrow> <msub> <mi>I</mi> <mi>i</mi> </msub> <mo>&times;</mo> <msub> <mi>N</mi> <mi>i</mi> </msub> <mo>&times;</mo> <msub> <mi>V</mi> <mi>mpu</mi> </msub> </mrow> <msub> <mi>f</mi> <mi>mpu</mi> </msub> </mfrac> <mo>+</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>2</mn> </mrow> <mrow> <mi>i</mi> <mo>=</mo> <mi>n</mi> </mrow> </munderover> <mfrac> <mrow> <mi>&Delta;</mi> <msub> <mi>I</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>&times;</mo> <msub> <mi>N</mi> <mi>i</mi> </msub> <mo>&times;</mo> <msub> <mi>V</mi> <mi>mpu</mi> </msub> </mrow> <msub> <mi>f</mi> <mi>mpu</mi> </msub> </mfrac> </mrow>其中,Einstr为指令能耗(Instruction Energy Consumption),表示软件执行时单条二进制指令在MPU上产生的能耗,Einter为指令对能耗,即指令间能耗(Inter‑Instruction Energy Consumption),表示软件执行时相邻指令间相互影响在MPU上产生的额外能耗,Ii表示指令i执行时MPU平均电流,Ni为执行指令i所需的时钟周期数,Vmpu为MPU的工作电压,fmpu为MPU的时钟频率,n为软件的指令总条数,ΔIi,i‑1表示指令i和前一条指令i‑1形成的平均指令对电流;3)在步骤2)公式中ΔIi,i‑1按照如下公式进行计算:ΔIi,i‑1=Imean‑Iever=Imeas‑(Ii×Ni+Ii‑1×Ni‑1)/(Ni+Ni‑1)其中,Imeas表示循环执行一对指令时测得的MPU平均电流值,Iever表示一对指令的电流分权平均值,Ii和Ii‑1分别是指令i和i‑1的电流值,Ni和Ni‑1分别是指令i和i‑1在考虑流水线情况下运行所需的MPU时钟周期数;4)在步骤1)公式中的Emem按照如下公式进行计算: <mrow> <msub> <mi>E</mi> <mi>mem</mi> </msub> <mo>=</mo> <mfrac> <mrow> <msub> <mi>I</mi> <mi>mem</mi> </msub> <mo>&times;</mo> <msub> <mi>V</mi> <mi>mem</mi> </msub> <mo>&times;</mo> <msub> <mi>N</mi> <mi>mem</mi> </msub> </mrow> <msub> <mi>f</mi> <mi>mem</mi> </msub> </mfrac> </mrow>其中,Imem表示存储器在有数据访问时的平均电流值,Vmem表示存储器的工作电压,fmem表示存储器的时钟频率,Nmem表示MPU访问存储器总的时钟周期数;5)在步骤1)公式中的Eio按照如下公式进行计算:Eio=Ebus+Euart+Elcd+Enet其中,Ebus表示总线能耗,Euart表示UART控制器能耗,Elcd表示LCD控制器能耗,Enet表示网卡控制器能耗。
地址 610065 四川省成都市武侯区一环路南一段24号