CN101894067B - 一种基于arm指令集的嵌入式软件能耗统计方法 - Google Patents
一种基于arm指令集的嵌入式软件能耗统计方法 Download PDFInfo
- Publication number
- CN101894067B CN101894067B CN2010101918084A CN201010191808A CN101894067B CN 101894067 B CN101894067 B CN 101894067B CN 2010101918084 A CN2010101918084 A CN 2010101918084A CN 201010191808 A CN201010191808 A CN 201010191808A CN 101894067 B CN101894067 B CN 101894067B
- Authority
- CN
- China
- Prior art keywords
- energy consumption
- mpu
- expression
- instruction
- mem
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公布了一种基于ARM处理器的嵌入式软件能耗统计模型。提供了一种新的模型和技术用于测量软件功耗,为相应的功耗优化研究和开发工作提供数据基础。本发明提出的嵌入式软件能耗统计模型包括处理器、存储器和I/O控制器等硬件单元的能耗,并根据ARM指令集指令周期的规律设计了相应指令周期数的计算方案。将本发明应用到高精度指令级嵌入式软件能耗模拟器HMSim中后,实验结果表明,该模型的能耗计算结果与实际仪器测量结果的误差在10%以内,可准确地反映软件实现方式对系统能耗的影响程度。
Description
所属技术领域
本发明涉及嵌入式软件能耗优化技术领域,尤其是涉及建立一种基于ARM指令集的嵌入式软件能耗统计方法。
背景技术
嵌入式系统由嵌入式硬件和嵌入式软件组成,是典型的软件驱动执行的系统。硬件的电路活动“直接”导致了系统能耗的产生,软件的指令执行和数据存取等操作驱动了底层硬件的电路活动,“间接”导致了系统能耗的产生,这也是嵌入式软件能耗的本质含义。先前的许多研究表明,不同的汇编指令、源程序结构、软件算法和软件体系结构造成硬件不同的工作方式,从而进一步影响系统能耗。嵌入式系统能耗可分为硬件能耗和软件能耗,软件能耗是指在软件运行期间,软件驱动直接相关硬件(包括处理器、存储器和I/O控制器等)活动产生的能耗总和,其它的系统能耗一般归为硬件能耗,如处理器在进入空闲状态前无软件指令执行的一段间隔期和在空闲状态下某些硬件单元保持上电状态而产生的能耗以及I/O控制器无软件访问时产生的能耗等。因此,将系统能耗明确划分为软件能耗和硬件能耗,更便于直接观察软件实现方式(如数据结构和算法)对系统能耗的影响程度。
嵌入式软件能耗的度量是开展嵌入式软件能耗分析与优化的基础性工作。度量软件能耗最直接的方法是使用电子仪器(如功率计)进行测量,由于需要将软件运行在硬件平台上进行测量,所以在硬件开发完成之前无法测量软件能耗,使得软件开发和硬件开发相互牵制。另一种方法是采用能耗模拟器测量软件能耗,通过计算机软件模拟某一特定嵌入式硬件系统,并采用能耗统计模型,在软件运行的同时统计软件能耗,可灵活、方便地获得嵌入式软件的能耗值。
国际上对于嵌入式软件能耗统计模型的研究历史并不长,1994年Tiwari等人在文中首先提出了对软件能耗进行分析的基本概念,建立了基本的指令级能耗模型,并提出了指令电流的测试方法;Sinha测量了基于StrongARM SA-1100处理器的ARM指令集电流值,提出了软件能耗的统计方法;T.K.Tan在Sinha测得的指令电流值基础上,构建了基于StrongARMSA-1100处理器的指令级能耗模拟器EMSIM(Embedded StrongARM Energy Simulator),并采用EMSIM对嵌入式软件能耗进行了分析工作;Li Tao等提出了对操作系统采用服务例程级功耗建模的思想,并具体分析了Embedded Linux操作系统50种服务例程的功耗-IPC关联模型;赵霞等通过模拟运行嵌入式操作系统和应用软件,利用微体系结构能耗模型估算单时钟周期指令能耗,提出基于软件功能结构的操作系统内核能耗估算模型。在上述能耗统计模型 中,主要统计了软件执行时在处理器上产生的单条指令能耗,不足之处在于并未计算指令对、存储器、I/O控制器等能耗。
发明内容
本发明的目的在于提供了一种基于ARM指令集的嵌入式软件能耗统计方法。
本发明解决其技术难题所采用的技术方案的步骤如下:
1)根据嵌入式系统的硬件组成,嵌入式软件能耗可分为处理器(MPU)能耗、存储器能耗、I/O控制器能耗(如数据总线、UART控制器、LCD控制器、网卡控制器等)和其它硬件单元产生的能耗,即:
Esoftware=Empu+Emem+Eio+Eother
其中,Esoftware表示嵌入式软件能耗,Empu表示处理器能耗,Emem表示存储器能耗,Eio表示I/O控制器能耗,Eother表示嵌入式系统主板上其它硬件单元的能耗,此部分能耗在软件执行时能耗值一般较小,可忽略不计;
2)在步骤1)公式中的Empu按照如下公式进行计算:
其中,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按照如下公式进行计算:
其中,Imem表示存储器在有数据访问时的平均电流值,Vmem表示存储器的工作电压,fmem表示存储器的时钟频率,Nmem表示MPU访问存储器总的时钟周期数;
5)在步骤1)公式中的Eio按照如下公式进行计算:
Eio=Ebus+Euart+Elcd+Enet
其中,Ebus表示总线能耗,Euart表示UART控制器能耗,Elcd表示LCD控制器能耗,Enet表示网卡控制器能耗。
本发明与背景技术相比,具有的有益效果是:
1)精确性:使用本发明中基于ARM处理器的嵌入式软件能耗统计模型建立的软件能耗模拟器计算的能耗,与仪器实际测量结果相比,误差在10%以内。
2)实用性:可用于快速预测(或估算)嵌入式软件在ARM处理器平台上运行时的能耗值,为开展相应的功耗优化研究和开发工作打下坚实的数据基础。
附图说明
具体实施方式
下面结合实例对本发明作进一步的说明。
1)根据嵌入式系统的硬件组成,嵌入式软件能耗可分为处理器(MPU)能耗、存储器能耗、I/O控制器能耗(如数据总线、UART控制器、LCD控制器、网卡控制器等)和其它硬件单元产生的能耗,即:
Esoftware=Empu+Emem+Eio+Eother
其中,Esoftware表示嵌入式软件能耗,Empu表示处理器能耗,Emem表示存储器能耗,Eio表示I/O控制器能耗,Eother表示嵌入式系统主板上其它硬件单元的能耗,此部分能耗在软件执行时能耗值一般较小,可忽略不计;
2)在步骤1)公式中的Empu按照如下公式进行计算:
其中,以当前指令STR R0,[R1],上一条指令MOV R1,R0为例,Einstr为指令能耗 (Instruction Energy Consumption),表示软件执行时STR指令在MPU上产生的能耗,Einter为指令对能耗(或指令间能耗,Inter-Instruction Energy Consumption),表示软件执行时受上一条指令的执行状态影响当前指令在MPU上执行产生的额外能耗,Ii表示STR指令执行时MPU平均电流为43.55mA,Ni为STR指令执行所需的时钟周期数为4个,Vmpu为MPU的工作电压1.788V,fmpu为MPU的时钟频率80MHz,n为软件的指令总条数,ΔIi,i-1表示当前STRR0,[R1]指令和前一条指令MOV R1,R0形成的平均指令对电流2.568mA;
3)在步骤2)公式中ΔIi,i-1的值按照如下公式进行计算:
Δi,i-1=Imeas-Iever=Imeas-(Ii×Ni+Ii-1×Ni-1)/(Ni+Ni-1)
其中,Imeas表示循环执行由MOV R1,R0和STR R0,[R1]组成的执行对测得的MPU平均电流值44.51mA,Ii和Ii-1分别是指令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)公式中的Emem按照如下公式进行计算:
其中,Imem表示存储器在有数据访问时的平均电流值,Vmem表示存储器的工作电压,fmem表示存储器的时钟频率,Nmem表示MPU访问存储器总的时钟周期数;
5)在步骤1)公式中的Eio按照如下公式进行计算:
Eio=Ebus+Euart+Elcd+Enet
其中,Ebus表示总线能耗,Euart表示UART控制器能耗,Elcd表示LCD控制器能耗,Enet表示网卡控制器能耗。I/O的能耗按照下面的通用公式进行计算:
比如
Claims (1)
1.一种基于ARM指令集的嵌入式软件能耗统计方法,其特征在于建立该方法的步骤如下:
1)根据嵌入式系统的硬件组成,嵌入式软件能耗分为处理器(MPU)能耗、存储器能耗、I/O控制器能耗和其它硬件单元产生的能耗,其中I/O控制器包括数据总线、UART控制器、LCD控制器、网卡控制器,即:
Esoftware=Empu+Emem+Eio+Eother
其中,Esoftware表示嵌入式软件能耗,Empu表示处理器能耗,Emem表示存储器能耗,Eio表示I/O控制器能耗,Eother表示嵌入式系统主板上其它硬件单元的能耗,此部分能耗在软件执行时能耗值一般较小,可忽略不计;
2)在步骤1)公式中的Empu按照如下公式进行计算:
其中,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按照如下公式进行计算:
Δ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按照如下公式进行计算:
其中,Imem表示存储器在有数据访问时的平均电流值,Vmem表示存储器的工作电压,fmem表示存储器的时钟频率,Nmem表示MPU访问存储器总的时钟周期数;
5)在步骤1)公式中的Eio按照如下公式进行计算:
Eio=Ebus+Euart+Elcd+Enet
其中,Ebus表示总线能耗,Euart表示UART控制器能耗,Elcd表示LCD控制器能耗,Enet表示网卡控制器能耗。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101918084A CN101894067B (zh) | 2010-06-04 | 2010-06-04 | 一种基于arm指令集的嵌入式软件能耗统计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101918084A CN101894067B (zh) | 2010-06-04 | 2010-06-04 | 一种基于arm指令集的嵌入式软件能耗统计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101894067A CN101894067A (zh) | 2010-11-24 |
CN101894067B true CN101894067B (zh) | 2012-02-01 |
Family
ID=43103261
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010101918084A Expired - Fee Related CN101894067B (zh) | 2010-06-04 | 2010-06-04 | 一种基于arm指令集的嵌入式软件能耗统计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101894067B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102221988B (zh) * | 2011-05-23 | 2013-10-30 | 北京工商大学 | 一种快速的指令级处理器能耗估算方法 |
CN103106131B (zh) * | 2012-02-15 | 2015-08-12 | 无锡江南计算技术研究所 | 系统调用功耗的测试方法与测试装置 |
CN112288428A (zh) * | 2020-09-24 | 2021-01-29 | 咪咕文化科技有限公司 | 模拟器的检测方法、装置、电子设备及存储介质 |
CN116011593B (zh) * | 2023-03-09 | 2023-06-16 | 支付宝(杭州)信息技术有限公司 | 一种网络模型能耗的确定方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004310568A (ja) * | 2003-04-09 | 2004-11-04 | Matsushita Electric Ind Co Ltd | シミュレータ装置、シミュレーション方法および性能解析方法 |
CN100399292C (zh) * | 2005-04-15 | 2008-07-02 | 中国人民解放军国防科学技术大学 | 一种快速开发嵌入式应用系统的方法及应用系统 |
CN100385411C (zh) * | 2006-07-04 | 2008-04-30 | 浙江大学 | 一种嵌入式系统模拟器中的动态软件能耗测试方法 |
CN101382915B (zh) * | 2008-10-23 | 2013-04-17 | 无锡中星微电子有限公司 | 一种软件调试系统及调试方法 |
-
2010
- 2010-06-04 CN CN2010101918084A patent/CN101894067B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101894067A (zh) | 2010-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Desrochers et al. | A validation of DRAM RAPL power measurements | |
Goel et al. | Portable, scalable, per-core power estimation for intelligent resource management | |
Shen et al. | Power containers: An OS facility for fine-grained power and energy management on multicore servers | |
Ge et al. | Powerpack: Energy profiling and analysis of high-performance systems and applications | |
Kasichayanula et al. | Power aware computing on GPUs | |
Goel et al. | A methodology for modeling dynamic and static power consumption for multicore processors | |
Balaji et al. | CPMIP: measurements of real computational performance of Earth system models in CMIP6 | |
CN101894067B (zh) | 一种基于arm指令集的嵌入式软件能耗统计方法 | |
Lee et al. | PowerTrain: A learning-based calibration of McPAT power models | |
Coplin et al. | Energy, power, and performance characterization of GPGPU benchmark programs | |
Bokhari et al. | In-vivo and offline optimisation of energy use in the presence of small energy signals: A case study on a popular android library | |
CN116632838B (zh) | 应用于发电企业的电能供给分析的方法及装置 | |
Wang et al. | GPGPU power estimation with core and memory frequency scaling | |
Goel et al. | Techniques to measure, model, and manage power | |
US20130211752A1 (en) | Software power analysis | |
CN101881995B (zh) | 一种针对arm指令集的层次分类功耗测量方法 | |
Wang et al. | EPPMiner: An extended benchmark suite for energy, power and performance characterization of heterogeneous architecture | |
Wang et al. | An improved instruction-level power model for ARM11 microprocessor | |
Roberts et al. | The power-optimised software envelope | |
CN102880785A (zh) | 针对gpu程序的源码级数据传输能耗估算方法 | |
Stockman et al. | A novel approach to memory power estimation using machine learning | |
Lang et al. | High-resolution power profiling of GPU functions using low-resolution measurement | |
CN101882103A (zh) | 一种嵌入式设备i/o接口的软件能耗统计方法 | |
Abou-Of et al. | Trade-off between low power and energy efficiency in benchmarking | |
Keller et al. | One joule per GFlop for BLAS2 now! |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120201 Termination date: 20130604 |