(计算机应用技术专业论文)arm指令集仿真器的设计与实现.pdf_第1页
(计算机应用技术专业论文)arm指令集仿真器的设计与实现.pdf_第2页
(计算机应用技术专业论文)arm指令集仿真器的设计与实现.pdf_第3页
(计算机应用技术专业论文)arm指令集仿真器的设计与实现.pdf_第4页
(计算机应用技术专业论文)arm指令集仿真器的设计与实现.pdf_第5页
已阅读5页,还剩47页未读 继续免费阅读

(计算机应用技术专业论文)arm指令集仿真器的设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

湖北工业大学硕士学位论文 摘要 指令集仿真器是目前嵌入式系统研究中一个极其重要的领域,一个灵活高效 且准确度高的仿真器不仅可以实现对嵌入式系统硬件环境的仿真,而且是现代微 处理器结构设计过程中性能评估的重要工具 仿真器的性能已经成为影响整个设计效率的重要因素,在现有的指令集仿真 技术中,编译型仿真技术虽然可以获得高的仿真速度,但其对应用的假设过于严 格,限制了其在商业领域中的应用;解释型仿真器虽被普遍使用,但其缺点也很 明显,由于模拟过程中需要耗费大量时间用于指令译码,解释型模拟器速度往往 很有限,使用性能较低。由此可见,如何减少仿真过程中的指令译码时间,是提 高仿真器的性能的关键。 本文旨在提出一个指令集仿真器的原型,重点解决指令解码过程中的速度瓶 颈,在其基础可以进行扩充和改进,以适应不同硬件平台的需要。文章首先从a r m 指令集的指令功能和编码格式入手,通过分析和比较找出了一般常用指令的编码 和实现规律,并在此基础上进行了高级语言的描述,其后提出了改进版解释型指 令集仿真器的设计方案,包括为提高仿真器性能,减少译码时间,创新性的在流 程设计中加入了预解码的步骤,同时用自己设计的压缩算法解决了因预解码产生 大量译码信息而带来的内存过度消耗难题。接下来,描述了仿真器的实现,包括 指令的取指、译码、执行等基本功能,并着重描述了如何通过划分存储域和存储 块的方式模拟真实存储器的读写访问实现。 另外,需要特别指出的是,针对仿真器中普遍存在的调试难问题,本文从一 线程序开发人员的角度,在调试模块的设计中除了断点设置、程序暂停、恢复等 基本功能外,还添加了各类监视设备和程序跟踪的功能,以期能提高本仿真器的 实用性。 在文章的结尾,提出了仿真器的验证方案,并按照该方案对仿真器进行了功 能和性能上的验证,最后对进一步的工作进行了展望。 关键词:指令集仿真器;a r m y 4 指令集;预解码;压缩算法 湖北工业大学硕士学位论文 a b s t r a c t i n s t r u c t i o ns e ts i m u l a t o ri sav e r yi m p o r t a n tr e s e a r c hr e a l mi nt h ee m b e d d e d s y s t e mt o d a y as i m u l a t o rw i t hf l e x i b l e ,f a s ta n da c c u r a t ea b i l i t yn o to n l ys i m u l a t e st h e h a r d w a r ee q u i p m e n to fe m b e d d e ds y s t e mb u ta l s oi sa ni m p o r t a n tt o o lt oe v a l u a t e p e r f o r m a n c ed u r i n gt h em i c r op r o c e s s o ra r c h i t e c t u r ed e s i g n c o n s e q u e n t l y , t h es i m u l a t o r sp e r f o r m a n c ei sak e yf a c t o rf o r t h eo v e r a l ld e s i g n e m c i e n c y t 1 1 e r ea r et w os i m u l a t o r sw h i c hc a l l e di n t e r p r e t a t i v es i m u l a t o ra n dc o m p i l e d s i m u l a t o r c o m p i l e ds i m u l a t o rh a sab e t t e rp e r f o r m a n c e ,b u td u et ot h er e s t r i c t i v e n e s so f t h ec o m p i l e dt e c h n i q u e ,i th a sn o tb e e na b l et op u s ht h r o u g hi nc o m m e r c i a lp r o d u c t s i n t e r p r e t i v es i m u l a t o r sa r ec o m m o n l yu s e db yp e o p l et h o u g hi th a sw a s t et o om u c ht i m e t od e c o d e s oh o wt oi n t r o d u c et h et i m ew es p e n do nd e c o d i n gi st h ek e yt om a k et h e s i m u l a t o rh a sag o o dp e r f o r m a n c e t l l i sp a p e ra l m st or a i s eai n s t r u c t i o ns e ts i m u l a t o rp r o t o t y p e ,f o c u s e do ns o l v i n g t h ei n s t r u c t i o n si nt h ep r o c e s so fd e c o d i n gs p e e db o t t l e n e c k i na l s oc a nb ee x p a n d e d a n di m p r o v e di no r d e rt om e e tt h en e e d so fd i f f e r e n th a r d w a r ep l a t f o r m s i nt h ea r t i c l e , w ef o u n dt h er u l e so fc o d i n ga n dr u n n i n gf o rt h em o s to fi n s t r u c t i o n sb y a n a l y z i n g t h e m w ea l s ot r a n s l a t e dt h e mt oah i g h e rp r o g r a m m i n gl a n g u a g e a f t e rt h a t w em a d ea m o d i f i c a t i o nt ot h ed e s i g no fi n t e r p r e t a t i v es i m u l a t o r i nt h en e wd e s i g n ,p r e - d e c o d i n gi s a d d e dt ot h ep i p e l i n i n g a c t u a l l y ,i tn e e d sb i g g e rm e m o r yt h a na l m o s tw eh a v e s ow e d e s i g na r i t h m e t i ct oc o m p r e s st h ec o d e t h ep r o g r a mi s a l w a y sh a r dt od e b u gb ys i m u l a t o r s ,b u ti t sn o tt r u et o m ys i m u l a t o r b e c a u s ei tc a na l s os e tw a t c hp o i n ta n dt r a c i n gb e s i d e sb a s i cf u n c t i o n s ,s o i tw i l lb ev e r yu s e f u lt op r o g r a m m e r s f i n a l l y , w ef o u n daw a yt ov e r i f yt h ep e r f o r m a n c eo ft h es i m u l a t o r , a n das h o r t p e r s p e c t i v eo f t h ef u t u r ew o r ki sa l s oi n c l u d e da tt h ee n do ft h ep a p e l k e y w o r d s :i n s t r u c t i o ns e ts i m u l a t o r ;a r mv 4i n s t r u c t i o ns e t ; p r c - d e c o d e ;a r i t h m e t i cf o rc o m p r e s s i n g ; 湖班二棠大学 学位论文原创性声明和使用授权说明 原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师指导下,独立进行研究工作所取 得的研究成果。除文中已经标明引用的内容外,本论文不包含任何其他个人或集体己经 发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均已在文中以明确方 式标明。本声明的法律结果由本人承担。 学位论文作者签名: 肌 日期: 9 鬈年 了月弱日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有权保留 并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授 权湖北工业大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采 用影印、缩印或扫描等复制手段保存和汇编本学位论文。 学位论文作者签名:;时八 指导教师签名:“协队 日期:0 6 年y 月u 日日期:始年厂月罗p 日 湖北工业大学硕士学位论文 1 1 课题背景及来源 第1 章引言 在嵌入式系统开发中,软件与目标硬件紧密相关,软件的开发与硬件环境的 选择、设计和配置相互影响,硬件平台和嵌入式应用的复杂性不断提高,导致软 件开发周期长、开发成本昂贵、软件功能调试和性能测试不能及时完成,软件质 量无法保障n 2 1 ;而对于想学习嵌入式l i n u x 等操作系统和一些底层系统软件的研 究人员来说,经常苦于经费不足,缺少足够的硬件开发板和完善的软件开发环境, 目前只能采用的方法是看书和读源代码,无法深入研究和开发嵌入式软件,这种 静态的学习方法不但效率较低而且比较枯燥,且缺少一种动态和亲自实践的感觉。 如何解决上述这些问题,指令集仿真器给出了答案。在软硬件的协同仿真 ( h a r d w a r e s o f t w a r ec o - s i m u l a t i o n ) 口1 中,作为软件仿真器,指令集仿真器是软 硬件协同模拟的重要组成之一h 3 ,利用软硬件协同仿真技术,开发人员能够在硬件 原型构造出来之前,即可对包含软件和硬件的整个嵌入式系统的功能进行验证, 对系统体系结构设计、软硬件功能划分进行评价瞌1 ,它已成为软硬件开发者乃至系 统设计者常用到的验证工具3 。在研究体系结构的过程中,开发人员也可用它来评 估指令集结构,在无法获得真实的目标平台时,用它来验证编译器、操作系统和 应用软件忉,使软硬件功能能够进行有效的的划分,以达到节约时间与成本的目的; 而通过在l i n u x 和w i n d o w s 平台实现一个仿真开发环境,模拟常见的嵌入式计算 机系统,在其上运行uc l i n u x 以及uc o s i i 等多种嵌入式操作系统,学习人员 所需要做的只是在其上进行应用程序开发和调试,而不需与具体硬件打交道,且 有源码级调试环境,可以对运行在仿真系统上的程序进行断点设置或单步跟踪等 调试,还可以进行各种分析,如执行点分析、程序执行覆盖度分析等。这些对真 实开发环境的模拟保证了理论学习与动手实践的互动,提高了学习的效率并在嵌 入式开发方面具有重要的实用价值。 1 2 处理器的仿真技术 现在的仿真器主要可以分为两大类,一类是硬件仿真器( e m u l a t o r ) ,一类是软 件仿真器( s i m u l a t o r ) 嘲,后者又根据微处理器的不同模拟级别,分为以下几种实 湖北工业大学硕士学位论文 现方案阳1 :处理器全功能模型、指令集模拟器( i s s ) 、嵌入式软件编译模拟和采 用处理器硬件模拟与其他几种方案相比,采用i s s 的协同模拟技术具有速度快、 便于对软件进行调试和验证成本低等优点特别是对于一个高性能的系统的开发, 有一个近于实时的仿真速度的软件仿真器,是必不可少的。硬件模拟n 引,虽然仿 真的速度可以达到很快,但由于其成本实在过于昂贵,只有在软件仿真的速度实 在是不可能达到要求的情况下,我们才会考虑采用硬件模拟的办法。除了仿真速 度这外,对于一个指令集的仿真器,我们还主要关注它在以下几个方面的特性: 编译速度,主要是指仿真器把一个应用程序转换成一种可仿真的状态所需要的时 间:可追踪性,主要是指在仿真过程中或仿真结束后,有多少的有用信息我们可 以获得,而获取信息方式的灵活性又如何:可重定位性,主要是指仿真器本身是 否容易进行扩展,使它经过很少的改动,甚至不需要经过改动就可以对于新的目 标机或者在新的宿主平台上使用:互操作性,主要是指其集成其它有用工具的能 力,比如说是否可以仿真过程中使用调试器,是否可以与硬件仿真器进行协同仿 真等等。 1 3 研究现状 在指令集仿真器领域,按现有技术我们可以将它们分成三类:基于解释型, 基于静态编译型,基于动态编译型。过去,由于机器硬件性能等方面的限制,传 统上的指令集仿真器多采用解释型仿真器,这种技术的好处在于它的灵活性很高, 但其最致命的缺点就是由于每条指令需要宿主机用一段代码来解释执行,所以其 仿真的速度非常之慢n 。如参考文献n 羽中描述了一种具有代表性的并被广泛使用 的基于解释的仿真器,针对m i p s 处理器而设计的,具有易于实现以及在灵活性方 面的优势,但在仿真器的执行性能上,这种基于解释型的仿真器遇到了很大的麻 烦,主要的原因是基于解释型的仿真器花费太多的时间用于取指、译码以及分配 的工作上面了,从仿真的角度来看,这些工作是非常地不高效的。 1 2 中所描述 的仿真器,其仿真速度大概比代码在目标机上正常执行时慢2 5 倍。又如在参考文 献 1 3 中所报道的由厂商提供的基于解释型的d s p 仿真器大概需要6 4 个小时仿真 一段只有1 3 秒钟的语音信号的编码转换,而同样的工作在目标上正常执行则只需 要7 秒钟。 相对于解释型仿真器在仿真速度上的低效率,编译型仿真器n 3 1 通过将目标指 令翻译为用于操作目标机状态的一组宿主机指令极大的降低了运行时间,这种仿 真技术最早应用于硬件领域n 帕n 引。文献 1 6 通过一个实际的例子,证明了静态编 2 湖北工业大学硕士学位论文 译技术在性能方面的优越性。为了进一步提高仿真的速度,基于静态编译的仿真 技术又将指令的调度也在编译阶段完成n 7 1 。文献 1 8 对静态编译技术的各种限制 进行优化,加入动态分支处理和动态代码处理模块来取消静态编译技术对自修改 代码和间接跳转指令模拟方面的先天不足。为了解决静态编译在处理动态代码时 所面对的限制,又出现了使用动态二进制翻译技术来将目标指令直接翻译为宿主 机指令的动态基于动态编译的仿真器,如e m b r a n 钔和s h a d e 啪1 ,文献乜妇综合了了 前两者优势,同时利用快速前置技术来进一步提高性能。但是,基于编译的仿真 技术都依赖于这样的一个假设事实:即所有程序代码在仿真开始之前已完全可知, 程序代码在运行期间是静态的乜别。由于这样的假设,很多应用程序不能使用基于 编译技术的仿真器。 1 4 本文的主要研究内容 本文将研究如何在解释型指令集仿真器的基础上对其指令处理流程进行改 进,使其在保持原有灵活性的同时提升仿真速度,以适应人们在高速仿真上的需 求。a r m 指令集共经历了五个主要版本,其中a r mv 4 t 是得到广泛应用的a r m7 t d m i 等处理器所采用的指令集3 1 ,所以本文将在w i n d o w s 平台上开发一个面向a r m 体 系结构版本a r m v 4 指令集的仿真器,完成该指令集的c 语言描述。另外,对于一 个应用软件的开发人员来说,他们最关心的是如何来调试以及优化他们所写的应 用程序代码,因此,还将研究如何实现一个可观测整个仿真模型内部监视器以及 控制应用程序运行的调试器,以增强其程序调试方面的功能,使其更加实用。 希望本次课题的研究能够提出一个通用的,面向嵌入式系统应用的基于c 语 言描述的指令集仿真器。 1 5 论文结构 本文的结构如下: 第一章为绪论,主要介绍了指令集仿真器的研究背景和现状,以及本文的研 究内容; 第二章介绍了a r m 微处理器及其指令集,并详细说明了指令集仿真器的原理, 为后面的设计和改进建立基础: 3 湖北工业大学硕士学位论文 第三章中,我们完成了对指令集仿真器的设计,包括总体流程和各个功能模 块的设计; 第四章中,主要描述了仿真器的实现,包括对指令集模拟和调度: 第五章中,给出了对仿真器功能和性能的验证方案; 本文的最后部分是结论。 1 6 本章小结 在这个部分,我们首先对指令集仿真器的产生背景和处理器的仿真技术进行 了简要介绍,随后又描述了指令集仿真器的研究现状,最后给出了我们论文的整 体结构。在下一章,我们将会对处理器和指令集进行较为细致的阐述,从而为指 令集的描述建立基础。 4 湖北工业大学硕士学位论文 第2 章a r m 微处理器及其指令集仿真器 2 1a r m 微处理器 2 1 1a r m 简介 a r m ( a d v a n c e dr i s cm a c h i n e s ) ,既可以认为是一个公司的名字,也可以认 为是对一类微处理器的通称,还可以认为是一种技术的名字。1 9 9 1 年a r m 公司成 立于英国剑桥,主要出售芯片设计技术的授权。目前,采用a r m 技术知识产权( i p ) 核的微处理器,即我们通常所说的a r m 微处理器,已遍及工业控制、消费类电子 产品、通信系统、网络系统、无线系统等各类产品市场,基于a r m 技术的微处理器 应用约占据了3 2 位r i s c 微处理器7 5 以上的市场份额,a r m 技术正在逐步渗入到我 们生活的各个方面h5 l 。 a r m 公司是专门从事基于r i s c 技术芯片设计开发的公司,作为知识产权供应 商,本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片, 世界各大半导体生产商从a r m 公司购买其设计的a r m 微处理器核,根据各自不同的 应用领域,加入适当的外围电路,从而形成自己的a r m 微处理器芯片进入市场。 目前,全世界有几十家大的半导体公司都使用a r m 公司的授权,因此既使得a r m 技 术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品 更容易进入市场被消费者所接受,更具有竞争力。 2 1 2a r m 微处理器的特点 a r m 处理器的具有如下特点:体积小、低功耗、低成本、高性能;支持t h u m b ( 1 6 位) a r m ( 3 2 位) 双指令集h 引,能很好的兼容8 位1 6 位器件;大量使用寄存器, 指令执行速度更快;大多数数据操作都在寄存器中完成;寻址方式灵活简单,执 行效率高;指令长度固定;全球众多的合作伙伴。a r m 处理器的出色性能使系统设 计者可得到完全满足其确切要求的解决方案。借助于来自第三方开发者的广泛的 支持,设计者可以使用丰富的标准开发工具和a r m 优化的应用软件。 5 湖北工业大学硕士学位论文 2 1 3a r m 微处理器的应用领域 到目前为止,a r m 微处理器及技术的应用几乎已经深入到各个领域: 在工业控制领域内,作为3 2 位的r i s c 架构,基于a r m 核的微控制器芯片不但占 据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域 扩展,a r m 微处理器的低功耗、高性价比,向传统的8 位1 6 位微控制提出了挑战; 在无线通讯领域内,目前已有超过8 5 的无线通讯设备采用了a r m 技术,a r m 以 其高性能和低成本,在该领域的地位日益巩固; 在网络应用领域内,随着宽带技术的推广,采用a r m 技术的a d s l ( 非对称数据 用户线) 芯片正逐步获得竞争优势。此外,a r m 在语音及视频处理上进行了优化, 并获得广泛支持,也对d s p ( 数据信号处理) 的应用领域提出了挑战h 利; 在消费类电子产品领域内,a r m 技术在目前流行的数字音频播放器、数字机顶 盒和游戏机中得到广泛采用; 在成像和安全产品领域内,现在流行的数码相机和打印机中绝大部分采用a r m 技术。手机中3 2 位s i m 智能卡也采用了a r m 技术。 除此以外,a r m 微处理器及技术还应用到许多不同的领域,并会在将来取得更 加广泛的应用。 2 1 4a r m 微处理器结构 a r m 处理器实现加载存储( 1 0 a d s t o r e ) 体系结构,是典型的r i s c 处理器。 只有加载和存储指令可以访问存储器。数据处理指令只对寄存器的内容进行操作。 传统的c i s c ( c o m p l e xi n s t r u c t i o ns e tc o m p u t e r ,复杂指令集计算机) 技术的 指令集随着计算机的发展而引入了各种各样的复杂指令,使得指令集和为此要实 现这些指令的计算机体系结构越来越复杂,已经不堪重负。经过大量的研究和分 析,发现在c i s c 的指令集中,各种指令的使用频率相差悬殊。大概有2 0 的指令被 反复和使用,使用量约占整个程序的8 0 ;而有8 0 左右的指令则很少使用,其使 用量约占整个程序的2 0 ,这就是所谓的2 0 - 8 0 定律乜钔。r i s c 特点如下:指令规 整、对称、简单,指令小于1 0 0 条,基本寻址方式有2 - 3 种;单周期指令,指令字 长度一致,单节拍完成,便于流水操作,对a r m 处理器来说,a r m 7 为三级流水线, a r m 9 为五级流水线,a r m i o 为六级流水线;大量的寄存器,寄存器不少于3 2 个,数 据处理指令只对寄存器的内容操作,只有加载存储指令可以访问存储器。a r m 处 6 湖北工业大学硕士学位论文 理器共有3 7 个寄存器。这些寄存器被安排成部分重叠的组。每种处理器模式都有 不同的寄存器组。分组的寄存器在处理处理器异常和特权操作时可得到快速的上 下文切换。这3 7 个寄存器包括3 1 个通用寄存器和6 个状态寄存器。同时a r m 处理器 又有7 种不同的处理器模式,在每一种微处理模式下均有一组相应的寄存器与之对 应。也就是说,在任意一种处理器模式下,可访问的寄存器包括1 5 个通用寄存器、 l 2 个状态寄存器和程序计数器。在所有寄存器中,有些是在7 种处理器模式下共 用的同一个物理寄存器,而有些寄存器则是在不同的处理器模式下有不同的物理 寄存器。 2 2a r m 指令集 2 2 1a r m 指令集体系结构 a r m 指令集体系结构从开发出来至今,已经发生了重大的演变,未来也将继续 发展。迄今为之,a r m 架构版本发布了7 个系列,也就产生了相同数量的指令集版 本,其中v 4 是目前使用最广泛也最具代表性的一个版本。 a r m 体系具有a r m 和t h u m b 两种指令集。当处理器工作在a r m 状态时,执行a r m 指 令集:而当其工作在t h u m b 状态时,则执行t h u m b 指令集。所有a r m 指令都是3 2 位长 度。指令以字对准方式保存,这样,a r m 状态指令地址的最低2 位总是零。实际上, 一些指令通常使用最低有效位来判定代码是转向t h u m b 代码还是a r m 代码。所有 t h u m b 指令都是1 6 位长度,这些指令可在存储器中以半字对准方式保存。因而,指 令的最低有效位在t h u m b 状态下总为零。实际上,t h u m b 指令集是3 2 位a r m 指令集的 功能子集。 2 2 2a r m 指令的编码 a r m 指令长为固定的3 2 位二进制编码【4 8 1 ,大部分指令编码是由第一操作数、第 二操作数、目的操作数、条件标志影响位及每条指令表示不同功能实现的二进制 位组成。不同指令功能对应着不同的指令编码方式,一条典型的a r m 指令的编码格 式如表2 1 所示: 7 湖北工业大学硕士学位论文 3 l2 82 72 52 42 12 01 91 6 1 51 2l l87o c o n d 0 0 l o p c o d e sr nr d s h i f i e r o p e r a n d 图2 1a r m 指令编码粤 a r m 指令的基本格式及说明如下: c o n d s , , :指令助记符; c o n d :可选的指令执行条件; s :决定指令的操作是否影响c p s r 的值; :目标寄存器; :表示包含第一个操作数的寄存器; :表示第二个操作数。 其中,“ ”内的项是必需的,如 是指令助记符,是必须有的;“ ) ” 内的项是可选的,如 ( c o n d ) 为指令条件码,是可选项。默认情况下为无条件 执行( a l ) 。 2 2 3a r m 指令的分类 a r m 指令集可分为跳转指令、数据处理指令、程序状态寄存器( p s r ) 访问指令、 l o a d s t o r e 指令、协处理器指令、异常中断产生指令 4 9 1 。a r m 指令集是l o a d s t o r e 型的,因此只能通过l o a d s t o r e 指令实现对系统存储器的访问。为了实现这些指 令的仿真,下面就来分别介绍下这些指令: ( 1 ) 跳转指令。用于实现程序流程的跳转,在a r m 程序中有两种方法可以实 现程序流程的跳转,一种是使用专门的跳转指令,另一种是直接向程序计数器p c 写入跳转地址值。通过向程序计数器p c 写入跳转地址值,可以实现在4 g b 的地 址空间中的任意跳转。在跳转之前结合使用m o vl r ,p c 等类似指令,可以保存 将来的返回地址值,从而实现在4 g b 连续的线性地址空间的子程序调用。a r m 指 令集中的跳转指令可以完成从当前指令向前或向后的3 2 m b 的地址空间的跳转。 ( 2 ) 数据处理指令。数据处理指令可分为数据传送指令、算术逻辑运算指令 和比较指令等。 数据传送指令用于在寄存器和存储器之间进行数据的双向传输。 8 湖北工业大学硕士学位论文 算术逻辑运算指令完成常用的算术与逻辑的运算,该类指令不但将运算结果保存 在目的寄存器中,同时更新c p s r 中的相应条件标志位。比较指令不保存运算结 果,只更新c p s r 中相应的条件标志位。 ( 3 ) 程序状态寄存器( p s r ) 访问指令,用于在程序状态寄存器和通用寄存器之 间传送数据。 ( 4 ) 加载存储指令,用于在寄存器和存储器之间传送数据,加载指令用于 将存储器中的数据传送到寄存器,存储指令则完成相反的操作。 ( 5 ) 协处理器指令。主要用于a r m 处理器初始化a r m 协处理器的数据处理 操作,以及在a r m 处理器的寄存器和协处理器的寄存器之间传送数据,和在a r m 协处理器的寄存器和存储器之间传送数据。 ( 6 ) 异常中断产生指令。指令用于产生软件中断,以便用户程序能调用操作 系统的系统例程。 2 2 4a r m 指令的寻址方式 寻址方式是根据指令编码中给出的地址码字段来实现寻找真实操作数地址的 方式。a r m 处理器支持9 种基本寻址方式:寄存器寻址,操作数的值在寄存器中, 指令执行时直接取出寄存器的值来操作;立即寻址;寄存器移位寻址;寄存器间 接寻址;基址寻址;多寄存器寻址;堆栈寻址;块拷贝寻址;相对寻址,相对寻 址是基址寻址的一种变通。由计数器p c 提供基址。指令中的地址码字段作为偏移 量。 2 3 指令集仿真器原理 指令集仿真器( i n s t r u c t i o ns e ts i m u l a t o r ,i s s ) 是用来在一台计算机上模 拟另外一台计算机上程序运行过程的软件工具。前者被称作宿主机,后者被称作 目标机,目标机通常是不存在或者是当时不可用的,它通过模拟每条指令在目标 处理器上的执行效果来模拟目标机程序,是目标处理器的软件模拟器乜副。指令调 度与模拟是指令集模拟器的核心部分,也是实现中代码量最大的部分,主要包括 模拟调度核心函数、与处理器指令集定义对应的一系列指令模拟函数、异常进入 函数和一些公用功能函数,模拟调度核心控制整个模拟过程。 9 湖北工业大学硕士学位论文 2 3 1 指令集仿真器的分类 指令集仿真器根据不同的侧重点有不同的分类方式,指令级仿真器根据其仿 真的精确程度可以分为功能仿真器和机制仿真器两种:功能仿真器的目的就是获 得目标机程序正确的运行结果,指令执行的具体流程则予以忽略;而机制仿真器 不但要获得目标程序的正确结果,还要仿真出目标机指令的执行细节,包括以指 令周期为单位的c p u 取指、译码、执行等各个步骤1 ,因此机制仿真器具有更精确 的仿真效果,更接近于目标机的实际运行过程。 仿真器根据仿真层次又可以分为用户级仿真器和系统级仿真器。用户级仿真 器为目标机应用程序提供运行环境,而不仿真目标机的外围设备,因此它要提供 必要的操作系统功能的支持以保证应用程序的正确运行。系统级仿真器为目标机 操作系统提供运行环境,目标机应用程序在目标操作系统之上运行,这就要求仿 真器仿真包括外设在内的整个计算机硬件系绀2 刀。用户级仿真器只仿真c p u 相关 硬件,注重目标应用程序的运行结果,便于直接利用宿主机操作系统的功能,工 作量相对较小。系统级仿真器仿真整个计算机系统,面向目标操作系统的运行结 果,工作量相对较大。 仿真器根据是否有其他硬件设备的辅助方面来分可分为软件仿真器 ( s i m u l a t o r ) 和硬件仿真器( e m u l a t o r ) 两类,软件仿真器比较硬件仿真器有着不可 替代的优势: ( 1 ) 开发人员能在获得实际硬件原型前,能快速评价目标机软、硬件特性,实 现硬件和软件并行设计开发,并缩短嵌入式软件的开发周期,尽早发现软 件中的缺陷,降低开发成本: ( 2 ) 软件仿真器具有高度的灵活性,可独立对c p u 进行深入分析,或可用于对 整个系统进行建模。还可轻松地进行重新配置,可与各种存储器或外设相 集成。这样就可以对整个嵌入式系统的正确性进行验证。 ( 3 ) 由于软件仿真器能够反复地运行相同的仿真过程,便于在对软件进行调试、 测试过程中,控制与分析应用程序运行及仿真环境的状态,并可以采集到 大量的调试数据。软件仿真器一般都是在i s a ( 指令集体系结构) 级对系统 进行仿真的。 指令集模拟器是处理器的i s a ( i n s t r u c t i o ns e ta r c h i t e c t u r e ) 层次模型乜羽, 是目标处理器i s a 层次的软件模拟器,模拟可执行代码在目标处理器上的执行过 程模拟过程中,用户可以查看目标机的内部状态,例如处理器的寄存器、程序计 l o 湖北工业大学硕士学位论文 数器值等,还可以查看存储器的变化情况。指令集仿真器的实现方法有两大类:一 类是解释型指令集仿真器,另一类是编译型指令集仿真器。 解释型指令集仿真器是将应用程序装载入仿真的存储器中,在运行时模拟“取 指一 译码一 执行”的流水对每条目标指令进行解释,将结果存入仿真的寄存器或 存储器中。这种技术的好处在于它的灵活性很高,但其最致命的缺点就是由于每 条指令者需要宿主机用一段代码来解释执行,所以其仿真的速度非常之慢。 另一类是编译型指令集仿真器,又可细分为基于静态编译与基于动态编译两类, 其原理是将目标机的指令直接翻译为能实现相应功能的宿主机上的指令指令块, 翻译在编译时实现为基于静态编译的指令仿真器,通过在编译期间来处理目标机 应用程序的译码进而提高了整个仿真过程的速度位9 1 。但由于对源程序进行了反编译 后又进行了优化,已经丢失了原来的用户程序与高级语言的对应关系。举例来说, 在嵌入式系统中经常会用n 夕i - 部的程序存储器,由于这些程序的代码在运行之前 是不可预知的,导致嵌入式系统大多不能使用基于编译的仿真技术。基于编译技 术的仿真器同样不适用于在运行期间拥有多套指令集的处理器。如a r m 处理器,为 了减少功耗以及内存的消耗,它在运行期间可能动态地切换至l j t h u m b 指令集,而这 种动态的指令集切换不能被基于编译技术的仿真器所考虑到,因为指令集的切换 可以由程序在运行时的一些状态值来决定的,这些是在编译期间不可预知的。 相比较而言,编译型仿真的仿真速度优于解释型仿真,然而这种速度上的提 高是以损失掉灵活性为代价的啪1 ,另外,解释型指令集仿真器提供了调试运行仿 真器的可能,更利于嵌入式软件测试。 2 3 2 功能模拟 传统的基于解释执行的指令集仿真策略是到目前为止应用最为广泛的一种指 令集仿真器实现技术。它的主体是一个具有三步过程的循环体,分别对应取指、 译码和执行三步操作。运行过程如下: 取指操作:从存储中获得一条指令: 译码操作:对这条指令进行译码,分离出操作码和操作数: 执行操作:根据译码所得的操作码选择适当的执行单元运行这条指令并更新 处理器状态: 湖北工业大学硕士学位论文 图2 2 基于解释执行的仿真策略流程图 随后循环体回到第一步,获取下一条指令。整个过程的流程图如图2 1 所示 ( 引自参考文献 3 1 ) 。 由于这类仿真器设计简单而且灵活,因此几乎所有的商业化的指令集仿真器 都是采用这一策略设计的。 2 3 3 实现方法 指令集仿真器的核心是指令解释部分,指令解释部分的主要功能是将目标机 指令翻译成宿主机指令,更新仿真的寄存器和存储状态,获得目标程序的运行结 果,指令解释主要有静态翻译和动态翻译两种实现方法m 1 。 静态翻译的方法是将目标机程序翻译成宿主机指令文件,然后将指令文件中 的代码直接在宿主机上运行,获得目标程序的运行结果。静态翻译方法的优点是 执行效率很高,其缺点是极大的依赖宿主机的体系结构,无法获得程序运行过程 中的计算机状态,而且也无法对目标程序进行调试。由于其对宿主机的过分依赖 使得它通常只用于宿主机和目标机体系结构相近仿真系统中。事实上这种静态翻 译的方法后来发展成为所谓的二进制翻译技术,它将运行于某种体系结构和操作 系统的可执行文件翻译成另外一种体系结构和操作系统的可执行文件,然后在直 接运行翻译后的程序并获得结果,其运行己经完全脱离了仿真器的支持。 与静态翻译相对应的是动态翻译,动态翻译先将目标程序加载到仿真器,在 仿真器的运行过程中将目标机器指令翻译成一条或多条宿主机器指令,最后再执 1 2 湖北工业大学硕士学位论文 行这些宿主机指令,获得仿真运行结果的方式,动态翻译是一个运行时的翻译过 程。根据目标机器指令和宿主机器指令映射方式的不同,动态翻译又可以分为解 释执行方式,增量翻译方式,块翻译方式以及解释翻译方式: 1 解释执行方式 解释执行方式是目前指令集仿真器开发广泛使用的方法,它使用软件方法在 宿主机上建立目标系统的仿真模型,并且把每条目标指令或每个指令执行单元映 射到相应的高级语言服务子程序,这些服务子程序作用于仿真模型,模拟出指令 在目标系统上执行的效果。 显然,在使用解释执行方式的指令集仿真器中,仿真模型的每个部分都是用 户可控的,能够根据需要收集数据,并且具有良好的灵活性和可扩展性,可以很 容的适应目标系统的修改,但是它的执行效率较低。 2 增量翻译方式 增量翻译方式是将一条目标机器指令直接对应到一条或多条宿主机指令,然 后执行宿主机对应指令的方式。增量翻译分为三部分:翻译序曲( t r a n s l a t i o n p r o l o g u e ) ,翻译本体( t r a n s l a t i o nb o d y ) 和翻译尾声( t r a n s l a t i o ne p i l o g u e ) , 翻译序曲为翻译分配跟踪缓冲区的空间,翻译本体包含仿真代码和跟踪指令,其 中跟踪指令是可选的d 引。翻译尾声更新虚拟状态结构和虚拟p c 值,并将控制返回 主循环。 3 块翻译方式 块翻译方式是将一组目标机器指令翻译成宿主机指令,这种翻译方法是对增 量翻译方法的优化,多条指令共用相同的翻译序曲和翻译尾声,同时减少了翻译 本体中建立指令仿真空间的开销,即减少了进入解释块时分配宿主机寄存器,映 射目标机虚拟状态到宿主机状态的操作,以及退出解释块时映射宿主机状态到目 标机虚拟状态,恢复宿主机寄存器状态等操作所产生的开销,大大的提高了仿真 的速度,i n t e l 公司的i a 一6 4 仿真环境就是采用块翻译的方式阱1 。 4 解释翻译方式 解释翻译方式首先将目标机指令翻译成某中中间代码的形式,然后对中间代 码采用解释执行的方式,瑞典计算机科学院的s i m i c s 采用了解释翻译方式,中间 代码格式被定义为一种双字格式,其中第一个字指向服务例程的指针,第二个字 为服务例程的参数,如寄存器标志等。 在以上4 种动态指令翻译的方式中,解释执行方式和解释翻译执行方式能够 精确的仿真指令执行过程中的各个部件的状态,具有良好的扩展性,使得在仿真 器外部扩充调试器和程序分析器变的十分的方便。另外,由于指令解释部分用高 1 3 湖北工业大学硕士学位论文 级语言的函数实现,使得仿真器具有便于向其他宿主机移植的特点。 2 3 4 现有产品分析 1 a r m u l a t o r a r m u l a t o r 是一个仿真各种a r m 内核结构和指令集的程序阱1 。它与a r m 调试器 联接,提供了在p c 主机系统和支持的工作站上开发a r m 软件的环境,该环境是硬 件独立的。a r m u l a t o r 包括4 个组成部分:( 1 ) a r m 处理器内核模型:处理a r m 内核 与调试器之间的所有通信,不允许用户修改:( 2 ) 存储器接口:在a r m 模型与存储器 模型或存储器管理单元模型之间传递数据:( 3 ) 协处理器接口:处理a r m 内核与协处 理器之间的通信:( 4 ) 操作系统接口:提供程序运行环境。 2 s i m p l e s c a l a r s i m p l e s c a l a r 模拟器采用分层模块化的组成结构s i m p l e s c a l a r 通过采用指 令驱动技术,即由目标指令仿真器对每一条指令进行解释,通过解释的结果驱动性 能模拟器,将功能模拟和性能模拟结合起来协同工作,加快了处理器误预测状态的 恢复对于s y s c a ll 系统调用i o 指令,s i m p l e s c a l a r 将其转换成对操作系统的 系统调用,并将结果返回给相应指令由于s i m p l e s a l a r 的开放性,许多研究项目 都采用它作为研究平台并扩展其功能啪1 其缺点是采用t r a c e 驱动,指令并未在 功能单元执行,这使得它无法模拟ti m d e p e n d e n t 计算,如值预测口7 1 研究人员基于s i m p l e s c a l a r 开发了许多扩展工具和功能,包括功耗模拟器 w a t t c h 啪3 及m a s e 汹1 、多线程模拟器s i m c a 、支持统计采样的s m a r t s 系统m 1 、用于 选择模拟样本的s i m p o i n t “妇以及一个经a l p h a e v 6 工作站验证过的模拟器 s i m - a l p h a 4 2 3 等。 3 其他产品 s i m o s 是一个常用的全系统模拟器h 副,它对系统中各部件实现了不同层次的抽 象,抽象层次越低,精确度越高,速度越慢,适合于操作系统、大型数据库等大 负载情况下系统性能的研究h 4 1 : 2 4 本章小结 在这一章中,我们对a r m 微处理器和指令集及其仿真器进行了简要介绍,作 重讲述了a r m 指令集编码的结构和特点,以及传统的仿真器对其处理流程,这些 都为下面将要进行的仿真器的设计和实现作了技术上的铺垫。 1 4 湖北工业大学硕士学位论文 第3 章仿真器的设计 在这一章中,我们主要介绍仿真器的设计。首先介绍仿真器的总体结构及仿 真流程,随后描述了各个部分的设计思路,最后是小结。 3 1 仿真器的运行环境 在我们的指令集仿真平台中,宿主机为运行w i n d o w sx p 操作系统的i n t e l 公 司p 3 处理器,目标机为运行u c o s i i 操作系统的执行a r m v 虹指令集的a r m 7 处理 器。其中应用程序是用来在仿真平台上运行的用c 语言描述的应用( 含操作系统) , 平台的作用就是仿真此应用在目标机上的运行。编译器用来将应用程序转化为用 目标机指令集描述的二进制文件,此二进制文件随后输入仿真内核。在我们的平 台中,为搭建交叉编译器使用了软件:a r md e v e l o p e rs u i t ev 1 2 ,它是a r m 公 司提供的专门用于a r m 相关应用开发和调试的综合性软件,其中的a r m c c 是a r m c 编译器,用于将用a n s ic 编写的程序编译成3 2 位a r m 指令代码。a r m y 4 指 令集描述是对目标机状态和指令功能的描述,在随后的仿真中,仿真内核通过读 入此指令集描述对编译得到的二进制文件中的指令进行解析,从而达到对目标机 进行仿真的目的。仿真平台的总体框图下如所示: 1 5 湖北工业大学硕士学位论文 图3 1 仿真平台的总体框图 3 2 仿真器的总体设计功能 本仿真器的主要功能是模拟a r m 处理器对指令集的处理能力,当我们把内容 为a r m 指令的二进制b i n 文件输入时,可以模拟在真实a r m 处理器上的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论