CN100385411C - 一种嵌入式***模拟器中的动态软件能耗测试方法 - Google Patents
一种嵌入式***模拟器中的动态软件能耗测试方法 Download PDFInfo
- Publication number
- CN100385411C CN100385411C CNB2006100522878A CN200610052287A CN100385411C CN 100385411 C CN100385411 C CN 100385411C CN B2006100522878 A CNB2006100522878 A CN B2006100522878A CN 200610052287 A CN200610052287 A CN 200610052287A CN 100385411 C CN100385411 C CN 100385411C
- Authority
- CN
- China
- Prior art keywords
- instruction
- energy consumption
- simulator
- program
- decision
- 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
- 238000005265 energy consumption Methods 0.000 title claims abstract description 70
- 238000012360 testing method Methods 0.000 title claims abstract description 38
- 238000000034 method Methods 0.000 title claims abstract description 21
- 230000002093 peripheral effect Effects 0.000 claims abstract description 36
- 238000012545 processing Methods 0.000 claims description 5
- 230000003068 static effect Effects 0.000 abstract description 4
- 238000011156 evaluation Methods 0.000 abstract 1
- 238000004088 simulation Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 6
- 238000005259 measurement Methods 0.000 description 4
- 238000013480 data collection Methods 0.000 description 2
- 238000007619 statistical method Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种嵌入式***模拟器中的动态软件能耗测试方法。Wukong模拟器是一种全***模拟的嵌入式模拟器,以c++语言编写。本方法将能耗测试插件集成于Wukong模拟器中,为Wukong模拟器的执行指令测试能耗。包括两层结构:外设的能耗测试和***级指令的能耗测试;外设的能耗测试主要是通过在外设启动时计时,统计外设使用时间进行测量;指令级的能耗测试以模拟器中实际运行的指令进行统计,根据统计数目得到最终的指令能耗,使能耗的估算从静态改进到了动态。这一方法能动态地和准确地获取运行于Wukong模拟器上的程序的能耗,并不影响模拟器运行指令的性能,从而使wukong模拟器可以用于以能耗测试为目的的嵌入式***研究,推广了wukong模拟器的使用。
Description
技术领域
本发明涉及嵌入式模拟器设计领域,特别是涉及一种嵌入式***模拟器中的动态软件能耗测试方法。
背景技术
Wukong模拟器是浙大嵌入式软件研发中心从2004年10月开始研发的通用嵌入式***模拟器,它支持主流嵌入式处理器体系结构和常见嵌入式***外部设备,实现了对嵌入式***的全***模拟,可以直接运行嵌入式***的二进制文件。同时,Wukong提供了调试支持和运行数据收集,为嵌入式开发者提供了完善的支持。
Wukong模拟器的特点是:
多体系结构支持:Wukong不针对特定体系结构设计,通用的底层设计为支持主流嵌入式CPU体系结构的运行框架,包括ARM、MIPS、PowerPC、Coldfire乃至51单片机、8086等。
外部设备模拟支持:Wukong支持各种常用嵌入式外部设备模拟,包括串口、LCD、网络芯片、调制解调器、USB等。
全***模拟:Wukong坚持走全***模拟的道路,即能够真实模拟完整***的运行环境,从而使得运行于真实硬件的二进制映象文件可以不加修改的运行于Wukong上。
运行数据收集:在Wukong上运行二进制映象的时候,可以统计各种不同类型的数据收集供开发者进行分析和优化之用。
主流操作***支持:Wukong从一开始就坚持跨平台的设计理念,编写平台无关代码,依靠平台无关库,保证Wukong在主流操作***上可以运行。
可接受的模拟效率:作为嵌入式***模拟器,在目前PC计算环境的计算能力比嵌入式***强很多的情况下,应保证合理的可接受的模拟运行效率。
当前,对程序能耗的测量分成两种方法,实际测量和模拟器估算。实际测量由于需要大型设备,造价较高,且不如模拟器执行程序方便移植和修改,在使用范围上受到了很大的限制;使用模拟器估算程序的能耗又分为动态能耗估计和静态能耗估计。静态能耗估计根据程序的执行代码,估计指令的执行能耗。虽然简单方便,但是不能预测程序在执行过程中的意外情况比如跳转,中断等等,所以能耗的估计准确性不够,动态能耗估计,需要使用相应的模拟器来实现,而Wukong模拟器全***模拟器的特点非常适合动态能耗估算。
发明内容
为了获得更真实的的代码运行能耗、代码执行信息,为了获取更准确的外设使用信息,本发明的目的在于提供一种嵌入式***模拟器中的动态软件能耗测试方法。
本发明解决技术问题所采用的技术方案是:
一种嵌入式***模拟器中的动态软件能耗测试方法,其步骤如下:
1)动态的指令级能耗测试:
判断指令的执行状态:判断指令是处于用户态还是内核态;
判断指令与程序的相关性:如果指令是用户态,判断指令是由什么程序驱动的,如果指令是内核态,判断指令是内核驱动还是由程序中断引起的;
判断指令的类型:判断指令属于哪种类型,模拟器中共有54种指令,包括数据处理,跳转,数据处理三大类;统计不同指令的数目:统计不同类型指令的执行次数,分别累加进入一个数组;
动态的指令级能耗测试,首先由电量测试模块判断指令的执行状态,然后根据指令的执行状态判断他们与程序的相关性,然后根据相关性,如果指令和要测试的程序相关,那么判断指令的类型,再统计指令的数目,如果与程序不相关,那么不做统计,统计好的指令数目乘以不同类型指令的能耗就能得到所有指令的能耗;
2)外设能耗测试:
①判断指令与用户程序的相关性:
判断指令与用户程序的相关性,首先判断一条指令的运行状态,如果一条指令是用户态的,那么不会产生中断,调用外设,如果指令是核心态,那么判断指令是否是要测试的用户程序驱动的,通过指令集能耗测试部分的判断模块,进行判断;
②判断指令是否使用了外设:
判断指令的类型,如果指令是数据处理型的指令,那么不会用到外设,如果指令是中断类型的且中断之后需要用到LCD之类的外部设备,那么自设备启动的时候开始为统计设备的使用时间,保存时间,最后根据不同设备不同状态的能耗来计算模拟器运行程序能耗大小。
本发明具有的有益效果是:首先,动态指令统计方法,充分考虑到了程序执行中产生的各种问题,相比较静态指令统计方法,准确同时又直观:其次,通过统计指令执行次数统计指令的能耗,充分利用了Wukong模拟器全***模拟的特性,利用Wukong模拟器指令集设计清晰的特性,判断执行指令的类型,统计某种指令的执行次数,从而得到该类型指令的总能耗,不影响模拟器的执行速度,不会给模拟器的设计带来多余的负担,同时又为模拟器提供了新的功能;再次,本能耗设计方法充分考虑到外设的多样性,对每种外设的使用时间以及使用的用户进行统计,对于不是由用户程序引起的外设使用,不统计其能耗,从而达到了能耗统计准确的目的。最后,本发明对Wukong模拟器的改进,完全是以插件的形式进行的,避免了对Wukong模拟器的大规模修改,从而保证了Wukong模拟器的完整性。
附图说明
附图是本发明的流程图。
具体实施方式
本发明按照上述四个步骤的判断结构来布局,将每一个步骤作为一个功能模块来实施。最后根据四个步骤的处理结果计算能耗。下面将就本体系作详细介绍。
1)四个判断步骤的结构与功能:
①判断指令的执行状态:操作***中的进程分为内核态和用户态,而操作***的状态也分为内核态和用户态两种。用户态是权限受限制的状态,内核态是权限比较高的状态。这个步骤首先判断指令是处于用户态还是内核态,对指令进行第一次分类。
②判断指令与程序的相关性:根据第一步的结果,这个步骤分两种情况。假如当前指令处于用户态,那么判断这个指令的使用者是谁,如果使用者是要测试的用户程序,那么就说这条指令和用户程序相关的,否则不想关;假如这条指令执行在内核态中,那么判断这个内核态是否是由于要测试的用户程序中断引起的,如果是由用户程序中断引起的,那么说这条指令和用户程序也是相关的。
③判断指令的类型:Wukong模拟器提供了54种指令类型。每条指令的能耗,根据其指令类型的不同又不同,所以如果指令和要测试的用户程序是相关的,就必须判断指令属于那种类型。不同类型的指令的能耗,可以根据实际运行中的测试得到,这样某类指令的能耗乘以某类指令的执行次数,就可以得到一类指令的总能耗了。
④统计不同指令的数目:根据第三步的分类,建立一个数组,统计每类指令的执行次数。当统计结束,每类指令的数目乘以该类指令的执行一次的能耗,然后将这些指令的能耗加起来,就得到指令运行的总能耗。
四个步骤之间是向上进行的流程,首先由电量测试模块判断指令的执行状态,然后根据指令的执行状态判断他们与程序的相关性,然后根据相关性,如果指令和要测试的程序相关,那么判断指令的类型,再统计指令的数目,如果与程序不相关,那么不做统计,统计好的指令数目乘以不同类型指令的能耗就能得到所有指令的能耗;
2)外设使用处理过程
①判断指令与程序的相关性
即使是计算外设的能耗,也要跟踪这个外设是不是由用户程序的执行指令驱动的。假如该指令不是由用户指令驱动的,那么外设的能耗就不应该统计在用户程序的能耗测试里面。
判断指令和用户程序的相关性可以由上面的动态指令数目统计的前两个步骤得到。当执行到第二个步骤的时候,就可以得到指令是否和程序相关。
②判断指令是否调用外设
首先维护一个数值,数组存放每种外设的使用时间。假如当前的执行指令和要测试的用户程序是相关的,那么判断这条指令是否调用了外设。以LCD的启动为例,LCD的启动需要一条中断,告诉内核外设要启动了。之后LCD开始工作,知道再一条中断,LCD工作停止。当指令调用外设,能耗计算模块启动一个计时器为能耗的使用时间计时,当判断指令发送了让外设定制的信号,停止计时,将时间存入数组中对应于该外设的那一项。
③计算外设的能耗
根据实际测量的外设单位时间的内的能耗和数值中维护的各种外设在程序运行期间的能耗,相乘就可以得到每种类型的外设的能耗,再将他们相加就得到了程序运行期间的总能耗。
3)根据前两步的统计结果计算能耗。
将指令的能耗和外设的能耗相加,就得到***运行要测试程序的总能耗。
实施例
现有一个程序源码A,经过交叉编译,生成二进制代码,编译进操作***内核的镜像文件。由Wukong模拟器载入镜像文件。启动uart,点击菜单栏开始统计电量消耗。运行A程序。模拟器运行A程序开始之后电量统计模块开始工作。A程序运行完成,模拟器就得到了A程序运行消耗的电量。
程序A运行的过程就是电量统计的过程。对于编译成二进制代码的程序A。Wukong模拟器逐条指令运行。A开始执行之后对A维护一个数组B[M]和C[N],M是指令最多的数目,数组B的含义是由A驱动的每种类型的指令的数目;N是外设的种类数目,数组C的含义是A驱动的外设使用的累积时间。对于模拟器运行的指令a,电量测试模块首先判断a是否是程序A引起的指令。如果a是用户态程序,所有者是A,那么a是由程序A驱动的指令,判断a的指令类型,归入为B数组,然后判断a是否使用了外设,使用的话,记录外设的使用时间,存入相应的C数组,接着进行下一条指令。如果指令a是用户态且它的所有者不是A,那么直接放弃统计。如果a是内核态,则判断指令a是否是由程序A中断引起的,若不是,则放弃统计,如果是,那么判断a的类型,则类似第一种情况处理B数组和C数组,进行下一条指令。程序全部执行完之后,电量测试模块停止工作,根据B数组的各种指令的数目和C数组中各外设的使用时间,计算耗费的电量D。
Claims (1)
1.一种嵌入式***模拟器中的动态软件能耗测试方法,其特征在于该方法的步骤如下:
1)动态的指令级能耗测试:
判断指令的执行状态:判断指令是处于用户态还是内核态;
判断指令与程序的相关性:如果指令是用户态,判断指令是由什么程序驱动的,如果指令是内核态,判断指令是内核驱动还是由程序中断引起的;
判断指令的类型:判断指令属于哪种类型,模拟器中共有54种指令,包括数据处理,跳转,数据处理三大类;
统计不同指令的数目:统计不同类型指令的执行次数,分别累加进入一个数组;
动态的指令级能耗测试,首先由电量测试模块判断指令的执行状态,然后根据指令的执行状态判断他们与程序的相关性,然后根据相关性,如果指令和要测试的程序相关,那么判断指令的类型,再统计指令的数目,如果与程序不相关,那么不做统计,统计好的指令数目乘以不同类型指令的能耗就能得到所有指令的能耗;
2)外设能耗测试:
①判断指令与用户程序的相关性:
判断指令与用户程序的相关性,首先判断一条指令的运行状态,如果一条指令是用户态的,那么不会产生中断,调用外设,如果指令是核心态,那么判断指令是否是要测试的用户程序驱动的,通过指令集能耗测试部分的判断模块,进行判断;
②判断指令是否使用了外设:
判断指令的类型,如果指令是数据处理型的指令,那么不会用到外设,如果指令是中断类型的且中断之后需要用到LCD之类的外部设备,那么自设备启动的时候开始为统计设备的使用时间,保存时间,最后根据不同设备不同状态的能耗来计算模拟器运行程序能耗大小。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100522878A CN100385411C (zh) | 2006-07-04 | 2006-07-04 | 一种嵌入式***模拟器中的动态软件能耗测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100522878A CN100385411C (zh) | 2006-07-04 | 2006-07-04 | 一种嵌入式***模拟器中的动态软件能耗测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1877545A CN1877545A (zh) | 2006-12-13 |
CN100385411C true CN100385411C (zh) | 2008-04-30 |
Family
ID=37509988
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100522878A Expired - Fee Related CN100385411C (zh) | 2006-07-04 | 2006-07-04 | 一种嵌入式***模拟器中的动态软件能耗测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100385411C (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101520747B (zh) * | 2008-02-29 | 2011-03-30 | 鸿富锦精密工业(深圳)有限公司 | 命令自动统计装置及方法 |
CN101706750B (zh) * | 2009-11-16 | 2013-04-10 | 西安邮电学院 | 一种基于嵌入式模拟器的测试桩获取方法 |
CN101894067B (zh) * | 2010-06-04 | 2012-02-01 | 四川大学 | 一种基于arm指令集的嵌入式软件能耗统计方法 |
CN103106131B (zh) * | 2012-02-15 | 2015-08-12 | 无锡江南计算技术研究所 | ***调用功耗的测试方法与测试装置 |
CN103049384A (zh) * | 2012-12-29 | 2013-04-17 | 中国科学院深圳先进技术研究院 | 一种基于众核的多线程极限能耗测试源程序自动生成框架 |
CN103019903B (zh) * | 2013-01-18 | 2014-11-26 | 哈尔滨工业大学 | 嵌入式设备能耗仿真评测*** |
CN112288428A (zh) * | 2020-09-24 | 2021-01-29 | 咪咕文化科技有限公司 | 模拟器的检测方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020161988A1 (en) * | 1994-09-23 | 2002-10-31 | Cambridge Consultants Limited. | Data processing circuits and interfaces |
CN1752896A (zh) * | 2005-11-08 | 2006-03-29 | 北京大学 | 操作***协作下的嵌入式设备电源管理方法及*** |
CN1766848A (zh) * | 2005-11-08 | 2006-05-03 | 北京大学 | 基于模拟器的嵌入式软件运行时能耗估算方法 |
-
2006
- 2006-07-04 CN CNB2006100522878A patent/CN100385411C/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020161988A1 (en) * | 1994-09-23 | 2002-10-31 | Cambridge Consultants Limited. | Data processing circuits and interfaces |
CN1752896A (zh) * | 2005-11-08 | 2006-03-29 | 北京大学 | 操作***协作下的嵌入式设备电源管理方法及*** |
CN1766848A (zh) * | 2005-11-08 | 2006-05-03 | 北京大学 | 基于模拟器的嵌入式软件运行时能耗估算方法 |
Non-Patent Citations (2)
Title |
---|
支持嵌入式操作***的ARM能耗模拟器设计. 钟伟军,刘明业.计算机应用研究,第4期. 2006 |
支持嵌入式操作***的ARM能耗模拟器设计. 钟伟军,刘明业.计算机应用研究,第4期. 2006 * |
Also Published As
Publication number | Publication date |
---|---|
CN1877545A (zh) | 2006-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100385411C (zh) | 一种嵌入式***模拟器中的动态软件能耗测试方法 | |
CN102722434B (zh) | 一种针对Linux进程调度的性能测试方法和工具 | |
Hao et al. | Estimating mobile application energy consumption using program analysis | |
Lopez-Novoa et al. | A survey of performance modeling and simulation techniques for accelerator-based computing | |
Blackham et al. | Timing analysis of a protected operating system kernel | |
Hu et al. | Lightweight energy consumption analysis and prediction for android applications | |
CN100356341C (zh) | 基于模拟器的嵌入式软件运行时能耗估算方法 | |
Lv et al. | A survey of WCET analysis of real-time operating systems | |
Posadas et al. | System-level performance analysis in SystemC | |
Gerstlauer et al. | Abstract system-level models for early performance and power exploration | |
Barbosa et al. | Assembly-level pre-injection analysis for improving fault injection efficiency | |
Wilhelm | Real time spent on real time | |
Hung et al. | System-wide profiling and optimization with virtual machines | |
Carlsson et al. | Worst-case execution time analysis of disable interrupt regions in a commercial real-time operating system | |
Lu et al. | Lightweight method-level energy consumption estimation for android applications | |
Gottschall et al. | TEA: Time-proportional event analysis | |
Lu et al. | Performance modeling for mpi applications with low overhead fine-grained profiling | |
Wang et al. | An improved instruction-level power model for ARM11 microprocessor | |
Tan et al. | A simulation framework for energy-consumption analysis of OS-driven embedded applications | |
CN101984640A (zh) | 基于凌动处理器的Android手机平台的能耗测量方法 | |
Kaszyk et al. | Full-system simulation of mobile cpu/gpu platforms | |
Zhang et al. | A performance prediction scheme for computation-intensive applications on cloud | |
Peterson et al. | Application of full-system simulation in exploratory system design and development | |
Uddin et al. | Collecting signatures to model latency tolerance in high-level simulations of microthreaded cores | |
Nilakantan et al. | Metrics for early-stage modeling of many-accelerator architectures |
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: 20080430 Termination date: 20120704 |