EMSIM中指令仿真与功耗模拟的研究

来源 :硅谷 | 被引量 : 0次 | 上传用户:lh305879918
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要]EMSIM是一款用于嵌入式功耗统计的指令集模拟器。结合SA-110的体系结构通过对EMSIM源码的分析,研究EMSIM对SA-110指令集的模拟方法,分析功耗统计算法在EMSIM中是如何实现的。为用软件的方法统计嵌入式系统功耗提供借鉴。
  [关键词]EMSIM 嵌入式系统 指令集模拟器 功耗统计
  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0120030-02
  
  一、前言
  
  随着计算机技术和集成电路工艺的迅速发展,嵌入式系统的应用也越来越广泛。在嵌入式系统的应用领域中(如手机、路由器等),功耗已经成为嵌入式系统设计要考虑的一个重要因素。但是一个软件在硬件平台上运行所消耗的功耗用仪表测量是难以实现的,而一个用软件的方式来统计嵌入式系统功耗的方法在参考文献[1][2]中被提出。这种方法用在嵌入式软件开发中,不仅便于在开发过程中评估产品的功耗,还可以节省成本,为开发低功耗产品提供了一个便利的工具。并且在参考文献[1]中指出,用这种方法统计出的功耗误差率不超过5%。这个误差率是可以被接受的。
  
  二、EMSIM中指令有关的仿真
  
  (一)指令仿真介绍
  指令仿真器(Instruction Set Simulator,ISS)是用来在一台计算机上模拟另外一台计算机上程序运行过程的软件工具。现在的仿真器主要可以分为两大类,一类是硬件仿真器(emulator)。另一类是软件仿真器(simulator),这类仿真器是以纯软件的形式来仿真程序在目标芯片上的运行,EMSIM所采用的指令模拟即是这种方式。EMSIM模拟了StrongARM系列中的SA-110处理器以及相关的外设。
  (二)EMSIM的结构
  EMSIM的结构图如图1所示。在图1中,右边是EMSIM所模拟的各个硬件子系统。EMSIM模拟的模块包括:(1)一个SA-110的处理器核,其中包括一个指令集仿真器ISS、16K的指令Cache、16K的数据Cache、存储管理单元MMU。(2)中断控制单元。(3)时钟。(4)两个UART。(5)内存系统。图1的左边是使用EMSIM的流程图,其中方框代表所用的辅助工具,圆柱体代表目标在操作过程中不同阶段所处的不同状态。如图中所示,所要模拟的程序要用交叉编译器的编译程序arm-linux-gcc编译成二进制可执行文件,然后该文件由Initrd-gengrator装载在文件系统Initrd(boot loader initialized RAM disk)中,再由Linker把Linux内核和Initrd做成压缩的映像文件(ROM Image),当EMSIM启动时自动把ROM Image装载入它模拟的Memory中,由ISS取指令并完成指令的译码和执行。
  (三)EMSIM中ISS的实现
  EMSIM详细模拟了SA-110处理器的寄存器和三级流水线。EMSIM用变量模拟CPU的寄存器,用case语句来判断指令类型以实现指令的译码,用函数调用模拟指令的执行。
  1.寄存器的模拟
  寄存器被定义在 struct ARMul_State{……}结构体中,ARMul_State动态地保存了CPU运行时当前的状态。其中有关寄存器的定义如下:
  ARMword Reg[16]; /* the current register file */
   ARMword RegBank[7][16]; /* all the registers */
   ARMword Cpsr; /* the current psr */
   ARMword Spsr[7]; /* the exception psr's */
  ARMword为32位无符号数,Reg[16]为当前处理器模式下的通用寄存器,RegBank[7][16]为七种处理器模式下各自的寄存器,Cpsr为程序状态寄存器,Spsr[7]为七种处理器模式模式下的各个程序状态保存寄存器。
  2.三级流水线的模拟
  EMSIM模拟了处理器的三级流水线,完成了取指、译码和执行的模拟,处理器的三级流水线如图2所示。
  
  (1)取指:即从寄存器中取出指令,放入指令流水线。对应于模拟器的实现是根据pc的值从Memery中取指放入loaded变量中,该操作由函数ARMul_LoadInstrS(state,pc+(isize * 2),isize)实现。
  (2)译码:指令被译码。模拟器没有具体的对应实现,只是把译码阶段的指令保存在decoded变量中。
  (3)执行:执行具体的指令控制逻辑,读取相关的寄存器,完成数据处理操作、地址转移操作或执行存储器数据访问操作等。指令执行的模拟由ARMul_Emulate32/26函数实现。
  在ARMul_Emulate32/26有定义:
   ARMword pc ; /* the address of the current instruction */
   ARMword instr, /* the current instruction */
   ARMword decoded, loaded ; /* instruction pipeline */
  Loaded,decoded,instr分别代表了指令在CPU中的三个阶段即取指、译码、执行,在每条指令执行前都有操作:
  instr = decoded ;
  decoded = loaded ;
  loaded = ARMul_LoadInstrS(state,pc+(isize * 2),isize) ;
  来完成三级流水线的模拟。我们从参考文献[4][5]中可以总结出:
  (1)指令码的最高4位(bit[31,28])为指令的条件码,它共有16种组合以表示各种可执行的条件,这是所有指令共有的部分。
  (2)接着条件码的后8位(bit[27,20])用来区别不同类型的指令,称为译码区。
  (3)最后的20位(bit[19,0])为指令操作数,不同的操作数决定了不同的寻址模式。
  因此ARMul_Emulate32/26函数首先根据指令码的最高四位来判断指令的执行条件是否满足,若满足则再根据bit[27,20]来区别指令类型,不同的指令对应不同的函数调用,此操作由case语句完成。而每条指令的操作数都由bit[19,0]确定。
  
  三、EMSIM的功耗统计算法
  
  EMSIM中功耗的统计是基于任务的。当每个任务被创建时系统为它创建一个功耗统计表TEBS(Task Energy Balance Sheet)。TEBS统计任务中每个函数的功耗,每个函数的功耗由ARMul_Emulate32/26函数中调用函数ARMul_do_en
  ergy(state, instr,pc)统计。EMSIM功耗统计示例如图3所示。其中,ISS:指令集模拟器;FES:函数功耗栈;FC:函数调用;FR:函数调用返回[1]。
  
  四、总结
  
  EMSIM作为嵌入式系统功耗仿真的有效工具,不仅详细地模拟了SA-110系统体系结构的各个硬件模块,并且把用软件统计系统功耗的方法用在指令模拟模块中。这为嵌入式低功耗产品的设计提供了便利,也为嵌入式系统功耗统计提出了一个新思路。本文详细分析了EMSIM的结构组成和对SA-110模拟的实现,深入研究了EMSIM功耗统计的算法。本文为学习指令集仿真器和开发功耗统计的软件提供了诸多便利。
  
  参考文献:
  [1]T.K.Tan,A.Raghunathan,N.K.Jha. EMSIM: An energy simulation framework for embedded operating system[J].Circuit & Systems,2002(5):464-467
  [2]T.K.Tan,A.Raghunathan,N.K.Jha.A Simulation Framework for Energy-Consumption Analysis of OS-Driven Embedded Applications.
  [3]周立功,ARM嵌入式系统基础教程[M].北京:北京航空航天大学出版社,2005.
  [4]ARM Limited.ARM Architecture Reference Manual[S].ARM Limited,2000.
  [5]Andrew Sloss,Dominic Symes,Chris Wright.ARM System Developer's Guide:Designing and Optimizing System Software[M].Morgan Kaufmann Publishers,2004.
  
  作者简介:
  朱建,男,汉族,河南确山人,四川大学计算机(软件)学院硕士研究生,主要研究方向:嵌入式系统。
  
  注:“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。”
其他文献
[摘要]介绍基于AT89C51单片机的温度测量系统硬件电路设计方法、工作原理以及程序设计。利用PT1O0阻值随温度变化的特点,将其和其他三个电阻构成非平衡电桥,因而温度的变化可转化成电桥输出微弱电压信号的变化,电压信号经集成运放电路放大后送到A/D转换器,将模拟信号变换成数字信号,单片机根据输入量和设定量进行运算,将结果送到数码管显示,完成对温度的测量。该系统可实现对温度实时较精确的测量,测量范围
期刊
[摘要]通过统一建模语言(UML),提出了基于UML的构件抽取的方法,在此基础上,运用UML的构件抽取方法对教务管理系统进行了构件抽取,为在开发基于构件的教务管理系统中进行构件的抽取提供一种可行的解决方案。  [关键词]统一建模语言 构件 教务管理  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0120062-01    一、统一建模语言及构件发展概况    软件构件技
期刊
[摘要]地理信息系统(GIS,Geographic Information System)是一种基于计算机的工具,它可以对在地球上存在的东西和发生的事件进行成图和分析。GIS技术把地图这种独特的视觉化效果和地理分析功能与一般的数据库操作(例如查询和统计分析等)集成在一起。这种能力使GIS与其他信息系统相区别,从而使其在城市智能交通管理中起到相对应的实用价值。  [关键词]城市交通管理 系统构架 共
期刊
[摘要]随着电子商务技术的发展,网络交易安全成为电子商务发展的核心和关键问题。基于Web Service的电子商务安全的问题已经成为电子商务顺利发展的重要市场环境条件。在分析基于Web Service的电子商务的主要安全要素的基础上,具体介绍采用目前电子商务领域的几种安全技术来消除电子商务活动中的安全隐患。  [关键词]Web Service 电子商务 安全技术  中图分类号:TP3文献标识码:A
期刊
[摘要]简要分析和介绍计算机网络入侵检测系统的主要类型及其技术,给出一个网络入侵检测系统的技术实现机理。  [关键词]计算机 网络 安全 入侵检测  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0120073-01    随着计算机网络规模的爆炸式增长和网络应用的日益深化,安全问题愈发突出,传统的单一安全技术如防火墙、授权与身份认证系统、信息加密等,都是以静态的方式保障
期刊
[摘要]在学习C语言过程中,指针、地址和数组是最富有特色的内容,特别是指针、地址和数组之间相互关系更具有特色。掌握它们之间的相互关系将有助于C语言其他内容的学习,因此学好这部分内容是掌握C语言的关键。主要用图示法阐述指针和地址、指针和数组之间的联系。  [关键词]C语言 指针 地址 数组 图示法  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0120049-01    
期刊
[摘要]主要介绍基于ASP.NET应用系统性能优化方面问题的解决方案。用于提高web应用程序的应用效果。  [关键词]ASP.NET应用系统 性能优化   中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0120077-01    一个系统的性能是否良好,已经成为系统是否成功的标志之一。下面对基于ASP.NET应用系统性能从四个方面进行探讨。    一、编码级别    编码
期刊
[摘要]在“数字校园”环境下,FTP与其他应用系统整合的关键是用户管理的设计,如何分配用户的权限,是用户管理设计中要考虑的一个重要问题。通过分析学院FTP各类用户的特点,采用基于角色的访问控制理论对用户权限进行分配,实现用户与用户与访问权限的逻辑分离。  [关键词]FTP 用户权限管理 角色访问控制  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0120080-01  
期刊
[摘要]首先对界面自动生成的原理进行介绍,然后从界面描述文件、界面组建库设计、界面组建事件监听类、界面自动生成器设计和XML文档复用这五个方面进行设计和介绍。  [关键词]XML 界面自动生成  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0120082-01    用户界面是软件系统的重要组成部分,它主要负责接收用户的输入信息并显示程序处理的结果。随着软件系统规模的不
期刊
[摘要]从数据库设计人员的角度出发讨论SQL Server数据库性能优化的问题,非常详细地从数据库的逻辑设计到物理设计,再到数据库查询三个层次详细的描述数据库设计中性能优化的实现。  [关键词]数据库设计 SQL Server 优化  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0120079-01    数据库系统是企业整个管理信息系统的核心和基础,它的任务就是把系统
期刊