法律状态公告日
法律状态信息
法律状态
2017-07-14
未缴年费专利权终止 IPC(主分类):G06F9/30 授权公告日:20131030 终止日期:20160523 申请日:20110523
专利权的终止
2013-10-30
授权
授权
2011-11-30
实质审查的生效 IPC(主分类):G06F9/30 申请日:20110523
实质审查的生效
2011-10-19
公开
公开
技术领域
本发明属于嵌入式系统软件能耗优化设计领域,具体涉及一种快速的指令级处理器能耗估算方法。
背景技术
降低能耗已经成为嵌入式系统设计面临的重要问题之一,人们不仅关注如何降低这些系统的能耗,更需要评估这些系统中各类软件成分对系统能耗的影响,考察各层软件执行过程中涉及到的硬件部件的能耗。当前,对于嵌入式处理器的能耗估算技术发展迅速,能够通过模拟指令在微体系结构部件上执行的过程,估算包括操作系统和应用程序在内的软件系统的能耗,并获得足够精确的估算结果。存在的主要问题是处理器能耗估算速度慢(一条指令的行为大约用5000条指令模拟),模拟框架结构复杂。因此,需要新的处理器能耗估算模型和方法,在保持原有处理器能耗估算准确度的情况下,提高估算速度,简化估算框架结构,从而满足更复杂系统(如虚拟机系统)的全系统能耗估算、对操作系统、中间件、应用软件的能耗评估、优化的需求,更好地服务于低能耗嵌入式系统软件开发。
发明内容
本发明目的在于提出一种快速的指令级处理器能耗估算方法,可以根据软件动态运行过程中的指令、Cache访问、内存及外围部件访问特征,快速地估算软件运行时的处理器能耗。
本发明所述的快速指令级处理器能耗估算方法如下(流程如附图所示):
A.定义程序在处理器上运行过程中所对应的处理器能耗,是该程序的指令执行涉及到的数据通路上的相关部件能耗之和,包括指令在数据通路上的基本能耗和指令间相互影响造成的能耗,后者包括各种流水线停顿、Cache访问及访存操作的能耗。用公式表示为:
Ecache=NIM*EIMiss+NDM*EDMiss+NIH*EIHit+NDH*EDHit
其中Ni、NIM、NDM、NIH、NDH是系数,,在模拟执行软件的过程中统计获得,其含义分别为:
-Ni表示执行的指令条数;
-NIM表示发生指令Cache缺失(记为ICacheMiss)的次数;
-NDM表示发生数据Cache缺失(记为DCacheMiss)的次数;
-NIH表示发生指令Cache命中(记为ICacheHit)的次数;
-NDH表示发生数据Cache命中(记为DCacheHit)的次数。
Ei、EIMiss、EDMiss、EIHit、EDHit是能耗参数,其含义分别是:
1.Ei表示指令在五段流水线上访问不同的计算部件和逻辑部件的基本能耗,因指令而异;
2.EIHit表示单次ICacheHit能耗,是读写ICache的能耗;
3.EIMiss表示单次ICacheMiss能耗,是通过内部总线读写下一级Cache或者内存时在内部总线上的指令传输能耗;
4.EDHit表示单次DCacheHit能耗,是读写DCache的能耗;
5.EDMiss表示单次DCacheMiss能耗,是通过内部总线读写下一级Cache或者内存时在内部总线上的数据传输能耗;
B.利用体系结构级能耗模拟器模拟软件能耗的结果,统计分析获得能耗参数Ei、EIMiss、EDMiss、EIHit、EDHit的值,实现方法如下:
B1.在体系结构级能耗模拟器上模拟执行若干测试程序{P1,P2,...,PN},统计每个程序执行过程中的Ni、NIM、NDM、NIH、NDH;
B2.当测试程序在处理器上执行时,分别累计每类指令在流水线上执行的基本能耗总和、ICacheHit、ICacheMiss、DCacheHit、DCacheMiss操作的总能耗,分别记做ei、eIHit、eIMiss、eDHit、eDMiss;
B3.对每个测试程序Pj,计算该程序的{Ei、EIMiss、EDMiss、EIHit、EDHit}Pj,计算公式为:
B4.计算所有测试程序的{Ei、EIMiss、EDMiss、EIHit、EDHit}Pj的平均值,作为本发明的能耗参数,计算公式为:
C.在指令级模拟器上,模拟执行程序,统计程序的指令条数Ni,实现方法如下:
1.取指,根据程序计数器的值获取下一条指令;
2.解码,对指令进行解码,获得指令的类型i;
3.执行,模拟执行指令的功能,修改指令计数器的值,指向下一条要执行的指令;
4.获取当前运行进程的进程ID;
5.把当前进程ID的当前指令类型i对应的Ni加1;
D.在指令级模拟器上,模拟Cache访问过程,统计程序执行过程中发生ICacheMiss、DCacheMiss、ICacheHit、DCacheHit的次数NIM、NDM、NIH、NDH;
E.利用步骤D获得的能耗参数Ei、EIMiss、EDMiss、EIHit、EDHit,在程序执行结束之后,利用统计获得的Ni、NIM、NDM、NIH、NDH,根据步骤A所述的公式计算该程序在处理器上的能耗。
本发明的有益效果:本发明提出的快速的指令级处理器能耗模型及估算方法,在保持体系结构级能耗模拟方法具有的较高精度基础上,显著加快了软件能耗的估算速度,具有良好的可用性。
附图说明
附图本发明的方法流程图;
具体实施方式
下面通过实例对本发明做进一步说明。需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
实施例:估算一个应用程序Merge-sort在StrongARM处理器上的能耗
本实施例以改进的开源指令级全系统模拟器Ex-Skyeye为基础实现了一个面向StrongARM的处理器能耗估算过程,估算应用程序Merge-sort执行时在处理器上的能耗。
本实施例包括以下操作:1)运行4个测试程序,获得处理器能耗参数;2)在Ex-Skyeye上模拟执行程序,统计执行过程中的Ni计数;3)在Ex-Skyeye上,统计程序执行过程中发生ICacheMiss、DCacheMiss、ICacheHit、DCacheHit的次数NIM、NDM、NIH、NDH;4)计算程序执行过程中在处理器上的能耗。具体步骤如下:
1.运行4个测试程序,获得处理器能耗参数
表1部分指令的基本能耗参数Ei
表2四种Cache操作的能耗、平均值及标准方差
根据表1和表2的结果,可知,选用的能耗参数为:
Ei=0.299,EIHit=0.295,EDHit=0.299,EIMiss=0.002,EDMiss=0.54
2.在Ex-Skyeye上模拟执行程序,统计执行过程中的Ni、NIM、NDM、NIH、NDH计数:
a)Ex-Skyeye模拟执行Merge-sort程序;
b)统计该程序执行过程中执行的指令数总数为24,645,359;
3.在Ex-Skyeye上,统计执行过程中发生ICacheMiss、DCacheMiss、ICacheHit、DCacheHit的次数NIM、NDM、NIH、NDH计数,分别为:
NIM=79,188,NDM=20,975,NIH=25,482,636,NDH=2,218,095;
4.计算程序执行过程中在处理器上的能耗,得到的结果Eprog=8,557,567。
与利用体系结构级能耗模拟器估算出来的结果Eprog=8,270,499相比,误差为3%,模拟及估算时间是体系结构级能耗模拟器的20%。
机译: 基于寄存器相关的优先级以及相关的指令处理电路,处理器系统,方法和计算机可读介质,向执行管线发布指令
机译: 一种处理包含各种指令片段的可变长度指令的方法,所述方法用于Serutilizada的存储器以及包含数字信号的处理器中用于数据处理指令的控制装置
机译: 一种将可变长度指令集的指令预加载到指令缓存中的方法及其处理器