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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
EMSIM中指令仿真与功耗模拟研究

EMSIM中指令仿真与功耗模拟研究   [摘要]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 psrs */   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)执行:执行具体的指令控制逻辑,读取相关的寄存器,完成数据处理操作、地

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档