法律状态公告日
法律状态信息
法律状态
2013-08-21
未缴年费专利权终止 IPC(主分类):G06F11/36 授权公告日:20080430 终止日期:20120704 申请日:20060704
专利权的终止
2008-04-30
授权
授权
2007-02-14
实质审查的生效
实质审查的生效
2006-12-13
公开
公开
技术领域
本发明涉及嵌入式模拟器设计领域,特别是涉及一种嵌入式系统模拟器中的动态软件能耗测试方法。
背景技术
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。
机译: 用于动态配置软件控制硬件软件嵌入式系统中的多维数据处理管道的系统和方法
机译: 一种保护嵌入式系统软件的方法及嵌入式系统
机译: 一种保护嵌入式系统软件的方法及嵌入式系统