一种针对arm指令集的层次分类功耗测量方法

文档序号:6603576阅读:327来源:国知局
专利名称:一种针对arm指令集的层次分类功耗测量方法
技术领域
本发明涉及嵌入式软件功耗测量技术领域,尤其是涉及一种针对ARM指令集的层 次分类功耗测量方法。
背景技术
目前,嵌入式系统在信息家电、智能控制、军事电子等领域得到了广泛的应用。截 止2008年底,全世界嵌入式设备的保有量超过了 30亿台,且数量继续呈快速增长的势头, 每年电力消耗达到1000亿千瓦时以上。在全球倡导“低碳经济”的背景下,嵌入式系统的 功耗是一个日益引起人们关注的热点问题,成为嵌入式系统设计的重要考量因素。HMSim作为一种高精度的指令级嵌入式软件功耗仿真器,可灵活、方便地获得嵌入 式软件的功耗值。在HMSim的功耗统计模型中,单条汇编指令以及指令对的功耗测量是构 建功耗模型的基础,其精确测量结果对高级语言程序(如C、C++)的功耗分析与优化有着重 要的支撑作用。由于ARM指令集的多样性,如256条指令、多种寻址方式、多种立即数、流水 线的影响以及指令周期数的不确定性等,因此,对ARM指令集的功耗进行分析与测量存在 一定的难度。1994年,Tiwari等人提出了对软件功耗进行分析的基本概念,并建立了基本的指 令集功耗模型。2002年,T K Tan针对指令集功耗测量问题,将指令集分成32类,分别测得 每一类指令的基准电流值,将其作为统计指令功耗的基准。但是在功耗统计模型中,又根据 值的相近度将32个基准电流值分成四类,用这四类基准值统计相应分类指令的功耗。可以 看出,指令集的寻址方式、立即数类型、指令对及流水线对指令的功耗存在较大的影响,将 指令集的基准电流值分成四类显得不够精确,误差较大。

发明内容
本文旨在提出一种针对ARM指令集的层次分类功耗测量方法。本发明解决其技术难题所采用技术方案的步骤如下1)首先,将ARM指令集的九类指令归纳为数据处理类、存储加载交换类、状态寄存 器访问和跳转类、协处理器指令类四类;2)其次,根据指令寻址方式对四类指令二次分类,数据处理类指令主要采用立即 寻址和寄存器寻址,对存储加载和交换类指令主要采用基址变址寻址和多寄存器寻址,对 状态寄存器访问和跳转类指令主要采用相对寻址;3)然后,根据立即数类型对寻址方式三次分类,立即数类型将影响立即寻址和寄 存器寻址,立即数类型可分为四类,每一类对指令功耗和周期数的影响相同,因此,采用等 价类划分方法进行测量;4)经上述分类测量后,将每一种指令不同形式的电流值做加权平均,即为该指令 的电流基准值;5)获得指令的电流基准值之后,使用如下公式计算指令功耗
3
其中,a表示三级流水线对指令周期数的影响因子,Iinste表示单条指令的基准电流 值,即单条指令在1个时钟周期内所需的电流值,V表示ARM处理器的电压,f表示ARM处理 器的频率,Ccycle表示执行该条指令所需的时钟周期数,Dij表示指令对功耗;6)步骤5)公式中C。y。le按照下面的公式计算Ccycle = k1+2k2+k3+k4其中,系数k1; k2,k3,k4 > = 0为整数,分别表示执行一条指令所需内部周期⑴、 非连续的周期(N)、连续的周期(S)和协处理器寄存器传输周期(C)四种存储周期的个数;本发明与背景技术相比,具有的有益效果是1)精确性本发明使用针对ARM指令集的层次分类功耗测量方法,相比与其他人 使用的简单分类测量方法,功耗预测的精度得到了较大提升,预测误差在10%以内。2)实用性可用于更高精度地估算软件算法在特定目标板上运行时的功耗值,为 开展相应的功耗优化研究和开发工作打下坚实的数据基础。


图1是本发明ARM指令集层次分类图。
具体实施例方式下面结合附图和实例对本发明作进一步的说明。本实例以Winbond W90P710 ARM7TDMI 处理器为例,1)如图1所示,首先,将ARM指令集的九类指令归纳为数据处理类、存储加载交换 类、状态寄存器访问和跳转类、协处理器指令类四类;2)其次,根据指令寻址方式对四类指令二次分类,数据处理类指令主要采用立即 寻址和寄存器寻址,对存储加载和交换类指令主要采用基址变址寻址和多寄存器寻址,对 状态寄存器访问和跳转类指令主要采用相对寻址;3)然后,根据立即数类型对寻址方式三次分类,立即数类型将影响立即寻址和寄 存器寻址,立即数类型可分为四类,每一类对指令功耗和周期数的影响相同,因此,采用等 价类划分方法进行测量;4)经上述分类测量后,将每一种指令不同形式的电流值做加权平均,即为该指令
的电流基准值Iinste。5)根据获得的指令电流基准值,单条指令的功耗可根据如下公式计算 其中,a = 0. 47表示三级流水线对指令周期数的影响因子,Iinstr表示单条指令的 基准电流值,即单条指令在1个时钟周期内所需的电流值,V = 1. 788V表示ARM7TDMI处理 器的电压,f = 80MHz表示ARM7TDMI处理器的频率,Ccycle表示执行该条指令所需的时钟周 期数。6)单条指令执行所需的C。y。le数由下面公式确定
Ccycle = k1+2k2+k3+k4 = 1+2X1+1+0 = 6其中,系数k1; k2,k3,k4 > = 0为整数,分别表示一条指令中内部周期⑴、非连续 的周期(N)、连续的周期(S)和协处理器寄存器传输周期(C)四种存储周期的个数。如执行一条NOP指令仅需要1个连续的周期,即Ccycle-卿=k1+2k2+k3+k4 = 0+2X0+1+0 = 1,执行一条SWP指令需要1个连续的周期,2个非连续的周期,1个内部周期, 即 Ccycle_swp = k1+2k2+k3+k4 = 1+2X1+1+0 = 6。7)采用层次分类功耗测量方法测量ARM指令的电流基准值、根据指令周期数计算 公式以及根据指令功耗计算公式的计算结果如下表所示。
图表IARM指令集的基准电流值Iinste、指令周期数Ceyele和功耗值Einste
权利要求
一种针对ARM指令集的层次分类功耗测量方法,其特征在于该方法的步骤如下1)首先,将ARM指令集的九类指令归纳为数据处理类、存储加载交换类、状态寄存器访问和跳转类、协处理器指令类四类;2)其次,根据指令寻址方式对四类指令二次分类,数据处理类指令主要采用立即寻址和寄存器寻址,对存储加载和交换类指令主要采用基址变址寻址和多寄存器寻址,对状态寄存器访问和跳转类指令主要采用相对寻址;3)然后,根据立即数类型对寻址方式三次分类,立即数类型将影响立即寻址和寄存器寻址,立即数类型可分为四类,每一类对指令功耗和周期数的影响相同,因此,采用等价类划分方法进行测量;4)经上述分类测量后,将每一种指令不同形式的电流值做加权平均,即为该指令的电流基准值;5)获得指令的电流基准值之后,使用如下公式计算指令功耗 <mrow><msub> <mi>E</mi> <mi>instr</mi></msub><mo>=</mo><mfrac> <mrow><msub> <mi>I</mi> <mi>instr</mi></msub><mo>*</mo><mi>V</mi> </mrow> <mi>f</mi></mfrac><mo>*</mo><mi>a</mi><msub> <mi>C</mi> <mi>cycle</mi></msub><mo>+</mo><msub> <mi>D</mi> <mi>ij</mi></msub> </mrow>其中,a表示三级流水线对指令周期数的影响因子,Iinstr表示单条指令的基准电流值,即单条指令在1个时钟周期内所需的电流值,V表示ARM处理器的电压,f表示ARM处理器的频率,Ccycle表示执行该条指令所需的时钟周期数,Dij表示指令对功耗;6)步骤5)公式中Ccycle按照下面的公式计算Ccycle=k1+2k2+k3+k4其中,系数k1,k2,k3,k4>=0为整数,分别表示执行一条指令所需内部周期(I)、非连续的周期(N)、连续的周期(S)和协处理器寄存器传输周期(C)四种存储周期的个数。
全文摘要
本发明公布了一种适用于ARM指令集的功耗测量方法—层次分类功耗测量方法。首先将ARM指令集按照指令类型分成四类,然后再对各类指令按照寻址方式进行分类,最后按照不同寻址方式下操作数的不同进行分类。通过在ARM7TDMI处理器进行实验,根据测试结果完善指令集功耗仿真器HMSim,使仿真测试环境更加接近实际硬件环境,从而为嵌入式软件的功耗测量提供更方便、精确的测试环境。本发明提出的层次分类功耗测量方法应用在HMSim功耗模拟器上之后,应用程序在HMSim上运行的功耗值与实际硬件环境相比,误差在10%以内。
文档编号G06F1/32GK101881995SQ20101019179
公开日2010年11月10日 申请日期2010年6月4日 优先权日2010年6月4日
发明者任磊, 伍元胜, 廖海艳, 沈艳, 王继禾, 罗刚, 郭兵 申请人:四川大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1