CN100356341C - 基于模拟器的嵌入式软件运行时能耗估算方法 - Google Patents
基于模拟器的嵌入式软件运行时能耗估算方法 Download PDFInfo
- Publication number
- CN100356341C CN100356341C CNB2005100868087A CN200510086808A CN100356341C CN 100356341 C CN100356341 C CN 100356341C CN B2005100868087 A CNB2005100868087 A CN B2005100868087A CN 200510086808 A CN200510086808 A CN 200510086808A CN 100356341 C CN100356341 C CN 100356341C
- Authority
- CN
- China
- Prior art keywords
- instruction
- energy consumption
- address
- simulator
- function
- 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
Images
Abstract
一种基于指令级模拟器和微体系结构级模拟器的嵌入式软件能耗估算方法,能够在嵌入式软件动态模拟运行期间收集软件的指令和地址信息,结合微体系结构部件的能耗估算模型,参照嵌入式软件运行期间指令地址与软件构件对应关系得到软件构件的能耗估算。本发明能够获得嵌入式软件各个粒度的能耗,即小到函数,大到包括应用软件和操作系统的整个系统,可以用于嵌入式软件开发过程中的能耗估算和优化。
Description
技术领域
本发明属于嵌入式软件开发过程中的能耗估算技术领域,具体涉及一种估算嵌入式软件运行时能耗的方法。
背景技术
软件能耗评估方法主要有两类:一类为硬件测量方法,一类是软件估算方法。硬件测量方法准确性高,但是对处于开发阶段的软件并不适用,因为软件结构和功能会有变化。并且硬件测量方法很难把获得的测量数据与软件的具体语义联系起来。软件估算方法的准确性低于硬件测量方法,但构建简便,测试周期短,并且成本低廉。实际中多采用软件估算方法。
软件估算方法按照估算模型可以分为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)把获得的指令流交给微体系结构流水线
(3)流水线解读指令并访问微体系部件,同时计算被访问部件的能耗。计算时机如下,参考图3:
a)在取指阶段,判断指令是否在cache中,如果不在,这需要计指令cache和dtlb的能耗;
b)在发射阶段,要计算寄存器堆的能耗,数据dtlb和数据cache的能耗,同时根据指令的编码,判断指令要用到的运算部件,比如加法指令就计算ALU的能耗,乘法运算就计算MULT的能耗。
c)在执行阶段,计算逻辑部件的能耗,如果还涉及到数据操作,则还要计算数据cache和dtlb的能耗。如果更新了预测缓冲器,则还要计算bpred(预测缓冲器)的能耗。
d)在写回阶段要计算寄存器堆的能耗,要计算bpred(预测缓冲器)的能耗。
(4)在微体系流水线的最后一段,计算这一个流水线周期内所有部件能耗的和。
3、软件中函数的能耗
在上述步骤中获得了<函数名,起始地址,结束地址>信息和单个流水线周期各部件的能耗和总能耗,利用以上信息,来估算该指令所属函数的能耗。参考图4,具体步骤如下:
(1)为每个函数建立一个结构,用来存放这个时间段内该函数的能耗,初始化为0
(2)在每个流水线周期取指令处,根据指令的地址(PC),对照软件符号信息,可以得知该指令所属函数。
(3)在流水线周期末尾把计算所得的单周期能耗归属给(1)中计算得出的函数
(4)在第一条指令运行时,找到该指令的归属函数,并记录这个函数为当前函数
(5)在下一次取指令时,比较指令的归属函数是否变化,如果变化,则记录新函数为当前函数
这样随着流水线的不断循环,最终能得到软件函数的能耗估算。
4、处理器以外部件能耗模型的补充
(1)内存
内存能耗与其Active状态成正比(idle状态忽略不计,因为对软件来讲,内存能耗消耗在对内存的存取上)。内存能耗还与访问时间有关,我们认为时间与访问内存区域的大小成线性关系。所以得到一个计算公式:
E=a+b*size(a,b是常量,size是访问区域大小)
本发明在微体系结构模型中如下处理内存能耗:
1找到微体系机构模型数据CACHE缺失处,插入计算内存能耗的模块。
2找到微体系机构模型指令CACHE缺失处,插入计算内存能耗的模块。
(2)外设有一个能耗模型
本发明目前提供了一个接口,可以添加外设功耗估算模块。接口在微体系级模拟器的指令解码处,只要在该处加入自己的过滤层,鉴别出该指令是访问待估算外设,就可以调用外设能耗估算模块计算外设能耗。
5、估算更粗粒度的软件构件的能耗
根据函数间调用关系信息和单个函数能耗信息,合成所需要的任意粒度的软件构件能耗。函数间调用关系信息可以是静态分析源代码产生的函数调用关系树,也可以是在嵌入式软件运行时,分析得到的运行时函数调用关系树,后一种方法获得的能耗估算结果更为准确。
在微体系结构模拟器的流水线周期的最后一段,估算出嵌入式软件中单个函数在处理器上运行过程的能耗之后,进一步估算更粗粒度的软件构件的能耗的步骤包括:
(1)从指令级模拟器输出动态执行的指令和地址流,把这些信息提供给微体系结构能耗模拟器的同时,也提供给能耗估算模块。能耗估算模块中的函数调用关系树分析子模块根据函数符号和指令起始/终止地址之间的映射信息和动态执行地址流信息,在线分析并构造出函数调用关系树。
构造运行时的函数调用关系树的具体实施步骤如下:
(a)利用堆栈结构保存函数调用关系树的节点信息。读取第一条指令地址。
(b)用该地址在函数符号和指令起始/终止地址映射信息表中查找,确认其对应的函数符号,建立节点作为软件的根函数节点。并记录该指令地址到PC变量里面。
(c)取下一条指令,当前函数的起始/终止地址比较,判断该指令是否仍然在该函数内。
(d)如果该地址不在当前函数内,并且当前函数有父函数,则判断该地址是否在父函数内;如果不在父函数内,并且有祖父函数,则判断该地址是否在祖父函数内。如果在父函数内,则将当前函数节点出栈,表示当前函数返回到父函数。如果在祖父函数内,则将当前函数节点和父函数节点出栈。表示返回到祖父函数内。输出函数调用关系树的一条记录。
(e)如果该函数既不在当前函数,也不在父函数和祖父函数,则用该地址在函数符号和指令起始/终止地址映射信息表中查找,确认其对应的函数符号。如果找到,就做在堆栈重压栈,创建一个新节点,当前函数节点作为父节点,如果父节点已有子节点,就作为已有子节点的兄弟节点。并记录该指令地址到PC变量里面。新节点变成当前节点。
(f)返回(c),循环执行这个过程。直至接收到按键中断。完成运行时的软件函数调用关系树的创建过程。
(2)能耗估算模块中的软件构件能耗估算子模块,根据函数间的调用关系信息和单个函数能耗信息,合成所需要的任意粒度的软件构件能耗。
Claims (5)
1、一种基于模拟器的嵌入式软件运行时能耗估算方法,包括:
分析嵌入式软件中各构件符号信息,获取函数符号和指令起始地址及终止地址之间的映射信息;
用指令级模拟器运行嵌入式软件,从中捕获动态执行的指令流的地址和指令码,把这些信息经过缓冲和速度匹配方式提供给微体系结构能耗模拟器,用微体系结构能耗模拟器执行指令流,获取指令流在处理器上运行过程中单时钟周期内微体系部件的能耗;
根据函数符号和指令起始地址及终止地址之间的映射信息,分析指令流地址信息,获取每个函数的指令流信息,累计函数的所有指令对微体系部件访问的单时钟周期能耗,得到嵌入式软件中函数运行过程的能耗。
2、如权利要求1所述的基于模拟器的嵌入式软件运行时能耗估算方法,其特征在于:获取函数符号和指令起始地址及终止地址之间映射信息的步骤包括:
把所述嵌入式软件编译成带调试信息的可执行文件;
解析上面步骤得到的可执行文件和调试信息,获取函数符号和指令起始地址及终止地址之间映射信息,得到下面格式的映射信息:
<软件函数名,起始地址,结束地址>。
3、如权利要求1所述的基于模拟器的嵌入式软件运行时能耗估算方法,其特征在于:
从指令级模拟器获得指令流的地址和指令码后,微体系结构能耗模拟器处理的步骤:
1)从双缓冲队列获取指令流和地址流;
2)把获得的指令流交给微体系结构流水线;
3)微体系结构流水线解读指令并访问微体系部件,同时计算被访问部件的能耗;
4)在微体系结构流水线的最后一段,计算单时钟周期内微体系所有部件能耗的和。
4、如权利要求1、2或3所述的基于模拟器的嵌入式软件运行时能耗估算方法,其特征在于:根据函数间的调用关系,构造函数集合组成的软件构件,累加函数集合中的每个函数在运行过程中的能耗,得到所需要的任意粒度的软件构件的能耗。
5、如权利要求4所述的基于模拟器的嵌入式软件运行时能耗估算方法,其特征在于:在嵌入式软件运行时,获得函数间的调用关系的步骤包括:
1)从指令级模拟器输出动态执行的指令和地址流;
2)把这些信息提供给微体系结构能耗模拟器的同时,也提供给能耗估算模块;
3)能耗估算模块中的函数调用关系树分析子模块根据函数符号和指令起始地址及终止地址之间的映射信息和动态执行地址流信息,在线分析并构造出函数调用关系树。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100868087A CN100356341C (zh) | 2005-11-08 | 2005-11-08 | 基于模拟器的嵌入式软件运行时能耗估算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100868087A CN100356341C (zh) | 2005-11-08 | 2005-11-08 | 基于模拟器的嵌入式软件运行时能耗估算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1766848A CN1766848A (zh) | 2006-05-03 |
CN100356341C true CN100356341C (zh) | 2007-12-19 |
Family
ID=36742745
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100868087A Expired - Fee Related CN100356341C (zh) | 2005-11-08 | 2005-11-08 | 基于模拟器的嵌入式软件运行时能耗估算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100356341C (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100385411C (zh) * | 2006-07-04 | 2008-04-30 | 浙江大学 | 一种嵌入式系统模拟器中的动态软件能耗测试方法 |
CN101464922B (zh) * | 2009-01-22 | 2010-08-18 | 中国人民解放军国防科学技术大学 | 基于集群系统的计算机体系结构方案并行模拟优选方法 |
CN102043697A (zh) * | 2010-07-29 | 2011-05-04 | 北京大学 | 一种时钟周期精度的系统部件能耗模拟方法 |
CN102231119A (zh) * | 2010-07-29 | 2011-11-02 | 北京大学 | 一种面向嵌入式系统的全系统能耗模拟方法及系统 |
CN102004679B (zh) * | 2010-11-22 | 2012-07-25 | 四川大学 | 一种基于马尔科夫链的构件化嵌入式软件能耗估算模型 |
CN102221988B (zh) * | 2011-05-23 | 2013-10-30 | 北京工商大学 | 一种快速的指令级处理器能耗估算方法 |
CN102426662B (zh) * | 2011-11-08 | 2014-02-26 | 四川大学 | 一种嵌入式软件体系结构级能耗建模方法 |
CN102750222A (zh) * | 2012-06-04 | 2012-10-24 | 四川大学 | 一种基于c语言的嵌入式软件能耗估算方法 |
US9009677B2 (en) * | 2013-03-18 | 2015-04-14 | Microsoft Technology Licensing, Llc | Application testing and analysis |
US11636122B2 (en) | 2015-12-30 | 2023-04-25 | Futurewei Technologies, Inc. | Method and apparatus for data mining from core traces |
CN109426503B (zh) * | 2017-07-21 | 2022-05-31 | 华为技术有限公司 | 提供仿真激励的方法及装置 |
CN110825438B (zh) * | 2018-08-10 | 2022-07-19 | 北京百度网讯科技有限公司 | 用于模拟人工智能芯片的数据处理的方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040010679A1 (en) * | 2002-07-09 | 2004-01-15 | Moritz Csaba Andras | Reducing processor energy consumption by controlling processor resources |
US20040117745A1 (en) * | 2002-12-17 | 2004-06-17 | International Business Machines Corporation | Method of automating chip power consumption estimation calculation |
US6865526B1 (en) * | 2000-01-24 | 2005-03-08 | University Of California-Riverside | Method for core-based system-level power modeling using object-oriented techniques |
-
2005
- 2005-11-08 CN CNB2005100868087A patent/CN100356341C/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6865526B1 (en) * | 2000-01-24 | 2005-03-08 | University Of California-Riverside | Method for core-based system-level power modeling using object-oriented techniques |
US20040010679A1 (en) * | 2002-07-09 | 2004-01-15 | Moritz Csaba Andras | Reducing processor energy consumption by controlling processor resources |
US20040117745A1 (en) * | 2002-12-17 | 2004-06-17 | International Business Machines Corporation | Method of automating chip power consumption estimation calculation |
Non-Patent Citations (1)
Title |
---|
高性能微处理器的微体系结构能量有效性 易会战,杨学军.计算机学报,第27卷第7期 2004 * |
Also Published As
Publication number | Publication date |
---|---|
CN1766848A (zh) | 2006-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100356341C (zh) | 基于模拟器的嵌入式软件运行时能耗估算方法 | |
CN101329638B (zh) | 程序代码的并行性的分析方法和系统 | |
Capra et al. | Is software “green”? Application development environments and energy efficiency in open source applications | |
US7818696B2 (en) | Architectural level throughput based power modeling methodology and apparatus for pervasively clock-gated processor cores | |
US7558719B1 (en) | System and method for runtime analysis of system models for variable fidelity performance analysis | |
US7761272B1 (en) | Method and apparatus for processing a dataflow description of a digital processing system | |
CN103329132A (zh) | 架构优化器 | |
CN103329097A (zh) | 工具生成器 | |
KR102161192B1 (ko) | 코어 트레이스로부터 데이터 마이닝을 하기 위한 방법 및 장치 | |
Posadas et al. | System-level performance analysis in SystemC | |
Stattelmann et al. | Hybrid source-level simulation of data caches using abstract cache models | |
Kang et al. | TQSIM: A fast cycle-approximate processor simulator based on QEMU | |
Wang et al. | Scisim: a software performance estimation framework using source code instrumentation | |
CN105975664A (zh) | 一种芯片功耗评估平台的评估方法 | |
Wang et al. | Software performance simulation strategies for high-level embedded system design | |
CN102520984B (zh) | 目标软件在指定硬件环境中最差时间的计算方法 | |
Rudolf et al. | Automated sensor firmware development-generation, optimization, and analysis | |
Patel et al. | Recent trends in embedded system software performance estimation | |
Rashid | An efficient cycle accurate performance estimation model for hardware software co-design | |
Parisi et al. | Source code classification for energy efficiency in parallel ultra low-power microcontrollers | |
Arndt et al. | Statistical performance prediction for multicore applications based on scalability characteristics | |
Cornaglia et al. | JIT-based context-sensitive timing simulation for efficient platform exploration | |
Zhang et al. | ANN-based performance estimation of embedded software for risc-v processors | |
Cai et al. | Multi-metric and multi-entity characterization of applications for early system design exploration | |
Grüttner et al. | A timed-value stream based ESL timing and power estimation and simulation framework for heterogeneous MPSoCs |
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: 20071219 Termination date: 20121108 |