当前位置: 首页 > 专利查询>北京大学专利>正文

基于模拟器的嵌入式软件运行时能耗估算方法技术

技术编号:2853754 阅读:226 留言:0更新日期:2012-04-11 18:40
一种基于指令级模拟器和微体系结构级模拟器的嵌入式软件能耗估算方法,能够在嵌入式软件动态模拟运行期间收集软件的指令和地址信息,结合微体系结构部件的能耗估算模型,参照嵌入式软件运行期间指令地址与软件构件对应关系得到软件构件的能耗估算。本发明专利技术能够获得嵌入式软件各个粒度的能耗,即小到函数,大到包括应用软件和操作系统的整个系统,可以用于嵌入式软件开发过程中的能耗估算和优化。

【技术实现步骤摘要】

本专利技术属于嵌入式软件开发过程中的能耗估算
,具体涉及一种估算嵌入式软件运行时能耗的方法。
技术介绍
软件能耗评估方法主要有两类一类为硬件测量方法,一类是软件估算方法。硬件测量方法准确性高,但是对处于开发阶段的软件并不适用,因为软件结构和功能会有变化。并且硬件测量方法很难把获得的测量数据与软件的具体语义联系起来。软件估算方法的准确性低于硬件测量方法,但构建简便,测试周期短,并且成本低廉。实际中多采用软件估算方法。软件估算方法按照估算模型可以分为4类1)晶体管级模型基于这种模型的方法,适用于集成电路设计中估算电路能耗。不适合用来估算大型软件(操作系统,编译器)的能耗。2)微体系结构级模型基于该模型的方法建立了微体系结构级别的流水线模型,每个时钟周期收集能耗信息,并以此为基础来估算能耗,具有较高的准确性,但不能很好地把能耗映射到软件的语义。3)指令级模型基于该模型的估算方法以单条指令为基础累计估算软件的能耗。具有较好的速度,但准确性比微体系结构级模型差。4)系统级模型基于该模型的估算方法把软件能耗归结为软件不同模块的消耗,单位模块有不同状态,并且处于不同的状态时有不同的能耗,由此该模型通过记录软件模块的状态切换来估算能耗。该模型准确性差,适用于选择不同的模块来构成软件系统。
技术实现思路
本专利技术克服现有软件能耗估算方法的不足,利用基本的指令在流水线上执行过程的能耗信息,提供一种,能够获得嵌入式软件各个粒度(小到函数,大到包括应用软件和操作系统的整个系统)的能耗,准确估算更高级别的软件构件的能耗。本专利技术的
技术实现思路
一种,包括 1、分析软件的二进制可执行文件中的符号信息,获取符号的起始地址和结束地址的信息,建立软件构件符号信息表。软件构件的最小单位是函数,根据函数间的调用关系可以构造函数集合组成的操作系统服务、功能模块、整个系统等不同级别的软件构件。2、指令级模拟器模拟软件运行,并获取运行时的指令地址和指令码。在模拟器读取指令的地址后,把地址送给后续取指模块的同时,送给缓存地址流队列。取指模块读到指令码,送给指令执行模块,通过实现指令功能的方式模拟执行指令的同时,将指令码送入指令流队列。3、微体系结构模拟器按照同步的原则,从指令流队列获取指令码,交给微体系结构流水线模拟模块。流水线模拟模块分析指令流需要访问的微体系结构部件(如逻辑运算单元ALU、高速缓存CACHE),按照部件的能耗模型计算被访问部件的能耗。在最后一级微体系结构流水线模拟模块里,累计在该流水线周期内,所有被访问部件的能耗。4、能耗估算模块从地址流队列里,获取与指令码对应的指令地址信息,在软件构件符号信息表中查找该指令所在的函数名符号的起始地址和结束地址,从而判别该指令属于哪一个函数。同时,根据指令所在的函数符号名称建立软件构件能耗信息表,把所有属于该函数的指令的能耗累计起来,估算出该函数的能耗。5、以上步骤获取指令流在处理器上运行过程中的能耗。嵌入式软件访问内存和外部设备时,调用相应的指令。在对该类指令计算能耗时,利用相应的能耗模型。内存的能耗模型中的关键参数是内存的能耗与内存单元的大小和内存访问的时间成正比。外设的能耗模型根据不同的设备硬件特征定制。6、从指令级模拟器输出动态执行的指令和地址流,经过能耗估算模块中的函数调用关系树分析子模块根据函数符号和指令起始/终止地址之间的映射信息和动态执行地址流信息,在线分析并构造出函数调用关系树。能耗估算模块中的软件构件能耗估算子模块,根据函数间的调用关系信息和单个函数能耗信息,合成所需要的任意粒度的软件构件能耗。本专利技术的技术效果能够在嵌入式软件动态模拟运行期间收集软件的指令和地址信息,结合微体系结构部件的能耗估算模型,参照嵌入式软件运行期间指令地址与软件构件对应关系得到软件构件的能耗估算。附图说明下面结合附图,对本专利技术做出详细描述。图1为指令地址和软件构件的映射信息的获取的流程图;图2为指令级模拟器的工作流程图;图3为微体系级模拟器的流水线结构图; 图4为估算软件中函数的能耗流程图。具体实施例方式本专利技术利用模拟器估算嵌入式软件能耗,该方法要用到两个完成部分功能的模拟器1)一个指令级的全系统模拟器该全系统模拟器读入编译链接后生成的二进制映像文件,通过模拟每条指令的执行结果,来实现对嵌入式软件的模拟执行。本专利技术利用该模拟器获得嵌入式软件动态执行的信息(如指令流,地址流),用于后续的能耗分析。2)一个微体系结构级的处理器能耗模拟器该微体系结构级的处理器能耗模拟器模拟了处理器内部的流水线结构和组成部件,以及指令流在流水线中访问到的微体系结构部件(如CACHE,ALU,TLB等部件的能耗),同时建立了各部件的能耗模型。本专利技术利用基本的指令在流水线上执行过程的能耗信息,经过处理,估算更高级别的软件构件的能耗。以skyeye开源指令级模拟器和sim-panalyzer微体系结构级模拟器为基础的嵌入式软件估算系统,运行在skyeye上的ARM-Linux嵌入式操作系统为实施实例1、获取指令地址和软件构件之间的映射信息本专利技术首先要分析软件中各构件的符号信息和指令流地址的对应,从而实现动态执行轨迹与软件语义的结合,为估算软件构件的能耗做准备。下面给出获取指令地址和软件构件符号信息映射的具体步骤(1)把待估算软件编译成带调试信息的可执行文件(2)解析上面第1步得到的可执行文件,获得软件构件的地址信息与构件的映射关系。得到类似下面格式的映射关系<软件函数名,起始地址,结束地址> 图1给出了指令地址和软件构件的映射信息的获取的流程。2、估算单流水线周期内微体系部件的能耗用指令级模拟器运行嵌入式软件,从中捕获动态执行的指令流的地址和指令码;把这些信息经过缓冲和速度匹配方式提供给微体系结构能耗模拟器;用微体系结构能耗模拟器模拟在流水线上模拟执行每条指令,然后根据指令对微体系部件的访问,获得一个时钟周期内微体系部件的能耗。具体实施步骤如下1、从指令级模拟器中捕获动态执行指令流和地址流指令级模拟器负责运行软件,载入软件的可执行二进制代码以后,指令级模拟器进入一个大循环,在这个循环中依次累加指令地址,从该地址取出指令,然后模拟指令执行。(1)地址流的获取指令级模拟器在每个循环的开始依照PC(程序计数器)进行地址变换,本专利技术在此处获取指令地址,并缓存在地址流队列中。(2)指令流的获取在地址变换完成后,指令级模拟器会按照变换得到的位置取指令,本专利技术在此处获取指令并存入指令流队列。2、把指令流和地址流信息传递给微体系结构能耗模拟器采用一个双缓存队列,当指令和地址累积到一定数量时才一次性发送给微体系级模拟器。在缓存发送的过程中指令级模拟器和微体系结构级模拟器的速度不一致,如果指令级模拟器太快将会导致指令地址流缓冲区溢出,本方法利用操作系统提供的IPC来解决这个问题,一旦指令级模拟器太快,操作系统将会阻塞指令级模拟器,使得微体系结构级模拟器有足够的时间来处理指令和地址流。图2给出了指令级模拟器的工作流程。3、微体系结构模拟器执行每一条指令,获取微体系结构级别流水线部件的能耗。从指令级模拟器获得指令和地址后,微体系结构级模拟器处理的方法和步骤(1)从双缓冲队列获取指令流和地址流(2)把获得的指令流交本文档来自技高网...

【技术保护点】
一种基于模拟器的嵌入式软件运行时能耗估算方法,包括:分析嵌入式软件中各构件符号文件,获取函数符号和指令起始/终止地址之间的映射信息;用指令级模拟器运行嵌入式软件,从中捕获动态执行的指令流的地址和指令码,把这些信息经过缓冲和速 度匹配方式提供给微体系结构能耗模拟器,用微体系结构能耗模拟器执行指令流,获取指令流在处理器上运行过程中每个流水线周期内的能耗;根据函数符号和指令起始/终止地址之间的映射信息,分析指令流地址信息,获取每个函数的指令流信息,根据指令流在 处理器上运行过程中每个流水线周期内的能耗,估算嵌入式软件中每个函数在处理器上运行过程的能耗。

【技术特征摘要】
1.一种基于模拟器的嵌入式软件运行时能耗估算方法,包括分析嵌入式软件中各构件符号文件,获取函数符号和指令起始/终止地址之间的映射信息;用指令级模拟器运行嵌入式软件,从中捕获动态执行的指令流的地址和指令码,把这些信息经过缓冲和速度匹配方式提供给微体系结构能耗模拟器,用微体系结构能耗模拟器执行指令流,获取指令流在处理器上运行过程中每个流水线周期内的能耗;根据函数符号和指令起始/终止地址之间的映射信息,分析指令流地址信息,获取每个函数的指令流信息,根据指令流在处理器上运行过程中每个流水线周期内的能耗,估算嵌入式软件中每个函数在处理器上运行过程的能耗。2.如权利要求1所述的基于模拟器的嵌入式软件运行时能耗估算方法,其特征在于获取指令地址和软件构件之间的映射信息的步骤包括(1)把待估算软件编译成带调试信息的可执行文件(2)解析上面第1步得到的可执行文件和调试信息,获得软件构件的地址信息与构件的映射关系。得到类似下面格式的映射关系<软件函数名,起始地址,结束地址>。3.如权利要求1所述的基于模拟器的嵌入式软件运行时能耗估算方法,其特征在于从指令级模拟器获得指令和地址后,微体系结构级模拟器处理的步骤(1)从双缓冲队列获取指令流和地址流;(2)把获得的指令流交给微体系结构流水线;(3)流水线解读指令并访问微体系部件,同时计算...

【专利技术属性】
技术研发人员:陈向群赵霞雷志勇
申请(专利权)人:北京大学
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1