专利名称:一种基于arm处理器的嵌入式软件能耗统计模型的制作方法
技术领域:
本发明涉及嵌入式软件能耗优化技术领域,尤其是涉及建立一种基于ARM处理器 的嵌入式软件能耗统计模型。
背景技术:
嵌入式系统由嵌入式硬件和嵌入式软件组成,是典型的软件驱动执行的系统。硬 件的电路活动“直接”导致了系统能耗的产生,软件的指令执行和数据存取等操作驱动了底 层硬件的电路活动,“间接”导致了系统能耗的产生,这也是嵌入式软件能耗的本质含义。先 前的许多研究表明,不同的汇编指令、源程序结构、软件算法和软件体系结构造成硬件不同 的工作方式,从而进一步影响系统能耗。嵌入式系统能耗可分为硬件能耗和软件能耗,软件 能耗是指在软件运行期间,软件驱动直接相关硬件(包括处理器、存储器和I/O控制器等) 活动产生的能耗总和,其它的系统能耗一般归为硬件能耗,如处理器在进入空闲状态前无 软件指令执行的一段间隔期和在空闲状态下某些硬件单元保持上电状态而产生的能耗以 及I/O控制器无软件访问时产生的能耗等。因此,将系统能耗明确划分为软件能耗和硬件 能耗,更便于直接观察软件实现方式(如数据结构和算法)对系统能耗的影响程度。嵌入式软件能耗的度量是开展嵌入式软件能耗分析与优化的基础性工作。度量软件能 耗最直接的方法是使用电子仪器(如功率计)进行测量,由于需要将软件运行在硬件平台上进行 测量,所以在硬件开发完成之前无法测量软件能耗,使得软件开发和硬件开发相互牵制。另一种 方法是采用能耗模拟器测量软件能耗,通过计算机软件模拟某一特定嵌入式硬件系统,并采用能 耗统计模型,在软件运行的同时统计软件能耗,可灵活、方便地获得嵌入式软件的能耗值。国际上对于嵌入式软件能耗统计模型的研究历史并不长,1994年Tiwari等人在 文中首先提出了对软件能耗进行分析的基本概念,建立了基本的指令级能耗模型,并提出 了指令电流的测试方法;Sinha测量了基于StrongARM SA-1100处理器的ARM指令集电 流值,提出了软件能耗的统计方法;T. K. Tan在Sinha测得的指令电流值基础上,构建了 基于 StrongARMSA-IlOO 处理器的指令级能耗模拟器 EMSIM (Embedded StrongARM Energy Simulator),并采用EMSIM对嵌入式软件能耗进行了分析工作;Li Tao等提出了对操作系 统采用服务例程级功耗建模的思想,并具体分析了 Embedded Linux操作系统50种服务例 程的功耗-IPC关联模型;赵霞等通过模拟运行嵌入式操作系统和应用软件,利用微体系结 构能耗模型估算单时钟周期指令能耗,提出基于软件功能结构的操作系统内核能耗估算模 型。在上述能耗统计模型中,主要统计了软件执行时在处理器上产生的单条指令能耗,不足 之处在于并未计算指令对、存储器、I/O控制器等能耗。
发明内容
本发明的目的在于提供了一种基于ARM处理器的嵌入式软件能耗统计模型。本发明解决其技术难题所采用的技术方案的步骤如下1)根据嵌入式系统的硬件组成,嵌入式软件能耗可分为处理器(MPU)能耗、存储器能耗、I/O控制器能耗(如数据总线、UART控制器、IXD控制器、网卡控制器等)和其它硬 件单元产生的能耗,即 其中,Esoftware表示嵌入式软件能耗,Empu表示处理器能耗,Effleffl表示存储器能耗,Eio 表示I/O控制器能耗,E。thCT表示嵌入式系统主板上其它硬件单元的能耗,此部分能耗在软 件执行时能耗值一般较小,可忽略不计;2)在步骤1)公式中的Empu按照如下公式进行计算 其中,Einste为指令能耗(Instruction Energy Consumption),表示软件 执行时单条二进制指令在MPU上产生的能耗,Einte为指令对能耗(或指令间能耗, Inter-Instruction EnergyConsumption),表示软件执行时相邻指令间相互影响在MPU上 产生的额外能耗,Ii表示指令i执行时MPU平均电流,Ni为执行指令i所需的时钟周期数, Vmpu为MPU的工作电压,fmpu为MPU的时钟频率,η为软件的指令总条数,Δ I^1表示指令i 和前一条指令i_l形成的平均指令对电流;3)在步骤2)公式中Δ I^1按照如下公式进行计算Ai,η = Imeas-Iever = Imeas-(Ii X NJIH X NH)/(NJNH)其中,Imeas表示循环执行一对指令时测得的MPU平均电流值,Iever表示一对指令的 电流分权平均值,Ii和Ih分别是指令i和i-Ι的电流值,Ni和Np1分别是指令i和i_l在 考虑流水线情况下运行所需的MPU时钟周期数;4)在步骤1)公式中的Em按照如下公式进行计算 其中,Iffleffl表示存储器在有数据访问时的平均电流值,Vm表示存储器的工作电压, fffleffl表示存储器的时钟频率,Nffleffl表示MPU访问存储器总的时钟周期数;5)在步骤1)公式中的Eitj按照如下公式进行计算Eio = Ebus+Euart+Elcd+Enet 其中,Ebus表示总线能耗,表示UART控制器能耗,Eled表示IXD控制器能耗,Enet 表示网卡控制器能耗。本发明与背景技术相比,具有的有益效果是1)精确性使用本发明中基于ARM处理器的嵌入式软件能耗统计模型建立的软件 能耗模拟器计算的能耗,与仪器实际测量结果相比,误差在10%以内。2)实用性可用于快速预测(或估算)嵌入式软件在ARM处理器平台上运行时的 能耗值,为开展相应的功耗优化研究和开发工作打下坚实的数据基础。
具体实施例方式下面结合实例对本发明作进一步的说明。
4
1)根据嵌入式系统的硬件组成,嵌入式软件能耗可分为处理器(MPU)能耗、存储 器能耗、I/O控制器能耗(如数据总线、UART控制器、IXD控制器、网卡控制器等)和其它硬 件单元产生的能耗,即
「0027 其中,Esoftware表示嵌入式软件能耗,Empu表示处理器能耗,Effleffl表示存储器能耗,Eio 表示I/O控制器能耗,E。thCT表示嵌入式系统主板上其它硬件单元的能耗,此部分能耗在软 件执行时能耗值一般较小,可忽略不计;2)在步骤1)公式中的Empu按照如下公式进行计算
其中,以当前指令STR R0, [R1],上一条指令MOV Rl,RO为例,Einste为指令能耗 (Instruction Energy Consumption),表示软件执行时STR指令在MPU上产生的能耗,Einte 为指令对能耗(或指令间能耗,Inter-Instruction Energy Consumption),表示软件执行 时受上一条指令的执行状态影响当前指令在MPU上执行产生的额外能耗,Ii表示STR指令 执行时MPU平均电流为43. 55mA, Ni为STR指令执行所需的时钟周期数为4个,Vmpu为MPU 的工作电压1. 788V,fmpu为MPU的时钟频率80MHz,η为软件的指令总条数,Δ Ii, 表示当 前STRR0,[R1]指令和前一条指令MOV Rl, RO形成的平均指令对电流2. 568mA ;3)在步骤2)公式中Δ I^1的值按照如下公式进行计算Ai, η = Imeas-Iever = Imeas-(Ii X NJIH X NH)/(NJNH)其中,Imeas表示循环执行由MOV Rl, RO和STR R0, [R1]组成的执行对测得的MPU 平均电流值44. 51mA, Ii和Ih分别是指令MOV和STR的电流值43. 55mA和41. 54mA, Iever 表示这对指令的电流分权平均值(43. 55*1+41. 54*4)/(1+4) = 41. 942mA, Ni和Ni^1分别是 指令MOV和STR在考虑流水线情况下运行1个和4个MPU时钟周期数;4)在步骤1)公式中的Em按照如下公式进行计算 其中,Im表示存储器在有数据访问时的平均电流值,Vm表示存储器的工作电压, fffleffl表示存储器的时钟频率,Nffleffl表示MPU访问存储器总的时钟周期数;5)在步骤1)公式中的Eitj按照如下公式进行计算Eio = Ebus+Euart+Elcd+Enet其中,Ebus表示总线能耗,表示UART控制器能耗,Eled表示IXD控制器能耗,Enet 表示网卡控制器能耗。1/0的能耗按照下面的通用公式进行计算
权利要求
一种基于ARM处理器的嵌入式软件能耗统计模型,其特征在于建立该模型的步骤如下1)根据嵌入式系统的硬件组成,嵌入式软件能耗可分为处理器(MPU)能耗、存储器能耗、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>Σ</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>×</mo><msub> <mi>N</mi> <mi>i</mi></msub><mo>×</mo><msub> <mi>V</mi> <mi>mpu</mi></msub> </mrow> <msub><mi>f</mi><mi>mpu</mi> </msub></mfrac><mo>+</mo><munderover> <mi>Σ</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>Δ</mi><msub> <mi>I</mi> <mrow><mi>i</mi><mo>,</mo><mi>i</mi><mo>-</mo><mn>1</mn> </mrow></msub><mo>×</mo><msub> <mi>N</mi> <mi>i</mi></msub><mo>×</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 EnergyConsumption),表示软件执行时相邻指令间相互影响在MPU上产生的额外能耗,Ii表示指令i执行时MPU平均电流,Ni为执行指令i所需的时钟周期数,Vmpu为MPU的工作电压,fmpu为MPU的时钟频率,n为软件的指令总条数,ΔIi,i 1表示指令i和前一条指令i 1形成的平均指令对电流;3)在步骤2)公式中ΔIi,i 1按照如下公式进行计算Δi,i 1=Imeas 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>×</mo><msub> <mi>V</mi> <mi>mem</mi></msub><mo>×</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表示网卡控制器能耗。
全文摘要
本发明公布了一种基于ARM处理器的嵌入式软件能耗统计模型。提供了一种新的模型和技术用于测量软件功耗,为相应的功耗优化研究和开发工作提供数据基础。本发明提出的嵌入式软件能耗统计模型包括处理器、存储器和I/O控制器等硬件单元的能耗,并根据ARM指令集指令周期的规律设计了相应指令周期数的计算方案。将本发明应用到高精度指令级嵌入式软件能耗模拟器HMSim中后,实验结果表明,该模型的能耗计算结果与实际仪器测量结果的误差在10%以内,可准确地反映软件实现方式对系统能耗的影响程度。
文档编号G06F11/36GK101894067SQ201010191808
公开日2010年11月24日 申请日期2010年6月4日 优先权日2010年6月4日
发明者任磊, 伍元胜, 朱建, 沈艳, 王继禾, 邓勤林, 郭兵 申请人:四川大学