一种基于X86指令集的软件动态能耗统计方法技术

技术编号:8714583 阅读:202 留言:0更新日期:2013-05-17 18:02
本发明专利技术公布了一种基于X86指令集的软件动态能耗统计方法。该方法首先识别X86指令的前缀,然后识别X86指令的操作码和操作数,最后得出X86指令的执行周期数,计算得到整个系统的能耗值。分别从C语言程序和汇编语言程序2个方面对本发明专利技术进行了验证,验证使用的C语言程序分别是冒泡排序(Bubble)、矩阵乘法(Matrix)、约瑟夫环算法(Josephus)、迷宫问题和八皇后问题(Queen),验证使用的7个汇编语言程序都包含了32类X86汇编指令。实验结果表明,本发明专利技术提出的方法对汇编语言程序和C语言程序的能耗统计值与同样的程序在开发板上运行的能耗值的误差在13%以内,这说明了本发明专利技术提出的基于X86 指令集的软件动态能耗统计方法是准确的。

【技术实现步骤摘要】

本专利技术涉及嵌入式软件能耗统计
,尤其是涉及建立一种基于X86指令集的软件动态能耗统计方法
技术介绍
嵌入式系统是一种以应用为中心,以计算机技术为基础,软硬件可剪裁,由专用的处理器、外围支持硬件、操作系统以及用户应用程序等四部分组成的特定计算机系统,被大量使用在网络通信、消费电子、军事电子、传感网络和交通管理等许多领域。据相关统计数据显示,2010年全球嵌入式系统设备已超过160亿台,全年消耗的能源已达5000亿千瓦时,到2020年嵌入式系统设备数量将超过350亿台,消耗的能源将超过9000亿千瓦时。在当前全球都提倡“低碳经济”的背景下,嵌入式系统设备的能耗问题已经成为人们关注的一个热点问题。嵌入式系统的能耗按软硬件体系结构分为硬件能耗和软件能耗两部分,其中硬件的电路活动直接产生的能耗叫硬件能耗,而软件的指令执行和数据存取等操作驱动底层硬件的电路活动间接产生的能耗叫软件能耗。由于当前嵌入式硬件能耗统计和优化方法的成熟运用,使得嵌入式软件能耗的统计和优化成为当前嵌入式系统在能耗统计和优化的关键之处。嵌入式软件能耗统计和优化的研究始于二十世纪90年代,主要包括指令级、算法级以及源程序结构级的低能耗研究。1994年Vivek Tiwari等人首先提出了嵌入式软件低能耗研究的概念,提出了基于Intel 486和SPARC 934处理器的指令级能耗统计模型。2002年T.K.Tan等人在Tiwari等人的基础上构建了一个基于StrongARM处理器的指令级能耗模拟器 EMSIM (Embedded StrongARM Energy Simulator)。2002 年陈偷等人构建了一个在嵌入式操作系统上能够对用户程序源码进行能耗分析和优化的模拟器SkyEye。Intel Atom处理器自2008年开始在嵌入式系统中逐步得到广泛应用,在参考EMSM和SkyEye等模拟器有点的基础上,设计并实现了基于X86指令集的软件动态能耗统计方法。
技术实现思路
本专利技术的目的在于提供一种基于X86指令集的软件动态能耗统计方法。本专利技术解决其技术难题所采用的技术方案的步骤如下: Dlntel X86体系结构中CPU的每条指令都是由前缀(Pref ixes),操作码(opcode),操作数地址(ModR/M),刻度基准(SIB),位移(Displacement),立即数(I_ediate)组成。指令能耗的处理过程,是对X86指令的关键域值的识别、分类、能耗统计的过程。Intel X86体系结构CPU有4类前缀,分别是总线加锁/重复前缀、段超越前缀、操作数长度超越前缀和地址长度超越前缀。X86指令的前缀由上述4类前缀构成,每种前缀只能出现一次,但其顺序没有规定,可以自由排列。前缀的识别过程就是将传入的指令前缀与X86前缀集中的前缀进行比对,伪代码过程如下所示:权利要求1.一种基于X86指令集的软件动态能耗统计方法,其特征在于该方法的步骤如下:Dlntel X86体系结构中CPU的每条指令都是由前缀(Pref ixes),操作码(opcode),操作数地址(ModR/M),刻度基准(SIB),位移(Displacement),立即数(I_ediate)组成,指令能耗的处理过程,是对X86指令的关键域值的识别、分类、能耗统计的过程,Intel X86体系结构CPU有4类前缀,分别是总线加锁/重复前缀、段超越前缀、操作数长度超越前缀和地址长度超越前缀,X86指令的前缀由上述4类前缀构成,每种前缀只能出现一次,但其顺序没有规定,可以自由排列,前缀的识别过程是将传入的指令前缀与X86前缀集中的前缀进行对比; 2) Intel X86指令中有几千个操作码,并且操作码一直呈现增长趋势,同时每个操作码对应的操作数个数不一样,操作数的寻址方式也不相同,操作码的编码采用的是哈夫曼算法,利用这个特性,实现对操作码和操作数的识别,操作码的识别采用的是比对的方法,使用一个二维表来存放所有的X86指令的操作码信息,然后通过将当前待识别的操作码和二维表中的操作码对比来确定待识别的操作码,在开始对操作码进行识别之前,需要先设定指令操作码的信息,然后设定二维表,即查找对照表,二维表中有91个成员,每个成员都是cmddata类型,这91个成员分成32种类型,用来表示X86指令中最常用到的32类指令,每个操作码最多只有三个字节,如果不够3个字节,则将这几个字节直接拷贝到(char*) &opcode处,如果机器码中有repeat prefixes前缀,则将操作码右移8位与repeatprefixes前缀按位或,最后将当前传进来待识别的操作码与二维表中每一项进行比对,确定当前指令的操作码; 3)通过一个统计函数来获得该条指令的指令周期数,然后将各条指令的电流值、电压值、频率值的倒数、周期数等相乘,得该条指令的能耗值,最后将所有出现的指令的能耗值相加,得到整个软件系统的能耗值。全文摘要本专利技术公布了一种基于X86指令集的软件动态能耗统计方法。该方法首先识别X86指令的前缀,然后识别X86指令的操作码和操作数,最后得出X86指令的执行周期数,计算得到整个系统的能耗值。分别从C语言程序和汇编语言程序2个方面对本专利技术进行了验证,验证使用的C语言程序分别是冒泡排序(Bubble)、矩阵乘法(Matrix)、约瑟夫环算法(Josephus)、迷宫问题和八皇后问题(Queen),验证使用的7个汇编语言程序都包含了32类X86汇编指令。实验结果表明,本专利技术提出的方法对汇编语言程序和C语言程序的能耗统计值与同样的程序在开发板上运行的能耗值的误差在13%以内,这说明了本专利技术提出的基于X86 指令集的软件动态能耗统计方法是准确的。文档编号G06F11/36GK103106136SQ20111035772公开日2013年5月15日 申请日期2011年11月14日 优先权日2011年11月14日专利技术者沈艳, 巨辉, 郭兵, 刘云本, 邓勤林, 陈晓丰 申请人:成都信息工程学院本文档来自技高网
...

【技术保护点】
一种基于X86指令集的软件动态能耗统计方法,其特征在于该方法的步骤如下: 1)Intel X86体系结构中CPU的每条指令都是由前缀(Prefixes),操作码(opcode),操作数地址(ModR/M),刻度基准(SIB),位移(Displacement),立即数(Immediate)组成,指令能耗的处理过程,是对X86指令的关键域值的识别、分类、能耗统计的过程,Intel X86体系结构CPU有4类前缀,分别是总线加锁/重复前缀、段超越前缀、操作数长度超越前缀和地址长度超越前缀,X86指令的前缀由上述4类前缀构成,每种前缀只能出现一次,但其顺序没有规定,可以自由排列,前缀的识别过程是将传入的指令前缀与X86前缀集中的前缀进行对比;  2)Intel X86指令中有几千个操作码,并且操作码一直呈现增长趋势,同时每个操作码对应的操作数个数不一样,操作数的寻址方式也不相同,操作码的编码采用的是哈夫曼算法,利用这个特性,实现对操作码和操作数的识别,操作码的识别采用的是比对的方法,使用一个二维表来存放所有的X86指令的操作码信息,然后通过将当前待识别的操作码和二维表中的操作码对比来确定待识别的操作码,在开始对操作码进行识别之前,需要先设定指令操作码的信息,然后设定二维表,即查找对照表,二维表中有91个成员,每个成员都是cmddata类型,这91个成员分成32种类型,用来表示X86指令中最常用到的32类指令,每个操作码最多只有三个字节,如果不够3个字节,则将这几个字节直接拷贝到(char *)&opcode 处,如果机器码中有repeat prefixes前缀,则将操作码右移8位与repeat prefixes前缀按位或,最后将当前传进来待识别的操作码与二维表中每一项进行比对,确定当前指令的操作码; 3)通过一个统计函数来获得该条指令的指令周期数,然后将各条指令的电流值、电压值、频率值的倒数、周期数等相乘,得该条指令的能耗值,最后将所有出现的指令的能耗值相加,得到整个软件系统的能耗值。...

【技术特征摘要】

【专利技术属性】
技术研发人员:沈艳巨辉郭兵刘云本邓勤林陈晓丰
申请(专利权)人:成都信息工程学院
类型:发明
国别省市:四川;51

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

1