计算机应用技术硕士学位论文-S3C2410嵌入式系统仿真环境研究与实现.pdf_第1页
计算机应用技术硕士学位论文-S3C2410嵌入式系统仿真环境研究与实现.pdf_第2页
计算机应用技术硕士学位论文-S3C2410嵌入式系统仿真环境研究与实现.pdf_第3页
计算机应用技术硕士学位论文-S3C2410嵌入式系统仿真环境研究与实现.pdf_第4页
计算机应用技术硕士学位论文-S3C2410嵌入式系统仿真环境研究与实现.pdf_第5页
免费预览已结束,剩余58页可下载查看

计算机应用技术硕士学位论文-S3C2410嵌入式系统仿真环境研究与实现.pdf.pdf 免费下载

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

文档简介

中南大学 硕士学位论文 s3c2410嵌入式系统仿真环境研究与实现 姓名:周艳科 申请学位级别:硕士 专业:计算机应用技术 指导教师:胡小龙 20090501 摘要 模拟技术是对真实环境进行模拟的技术。近年来模拟技术是研究的热 点,应用范围十分广泛。在嵌入式系统中,应用模拟技术可以改善开发环 境,避免硬件干扰,集中精力开发软件,特别是对于缺少嵌入式硬件开发 环境的用户来说,它将是一个非常有效的学习和开发工具。 本文首先介绍模拟技术的理论基础,阐述了嵌入式仿真相关技术;然 后讨论了软件模拟方式和指令集模拟执行方法;接着分析已有软件模拟器 的框架结构,设计出$ 3 c 2 4 1 0 软件模拟器的框架并对它的工作流程进行了 简述,着重讨论指令集模拟策略的优化和多线程模拟流水线的方法;最后 对存储系统的模拟和e l f 文件加载器设计进行阐述,并对模拟器的整体功 能和部分性能进行验证。 本文分析了传统指令模拟器的模拟方法,对指令集模拟方法进行了改 进,主要对指令字解析过程进行改进、优化了解释函数、采用模拟c a c h e 加快指令运行;应用穿线代码的理念来提高指令模拟器的性能;分析已有 软件模拟器的框架结构,设计适合$ 3 c 2 4 1 0 软件模拟器的结构;采用多线 程模拟流水线,利用多线程与流水线的并行性提高模拟器的性能。 关键词:模拟器,解释执行,指令集,e l f 文件 a b s t r a c t s i m u l a t i o nt e c h n o l o g yi sat e c h n o l o g yt h a ts i m u l a t e sr e a le n v i r o n m e n t i nr e c e n ty e a r s ,s i m u l a t i o nt e c h n o l o g yi sah o tt o p i cf o rr e s e a r c h ,w h o s e a p p l i c a t i o ns c o p e i sv e r ye x t e n s i v e i ne m b e d d e ds y s t e m s ,t h es i m u l a t i o n t e c h n o l o g yc a nb ea p p l i e dt oi m p r o v et h ed e v e l o p m e n te n v i r o n m e n t ,a v o i d h a r d w a r ei n t e r f e r e n c e ,a n dc o n c e n t r a t eo nd e v e l o p i n gs o f h v a r e ,a n dw i l lb ea v e r ye f f e c t i v el e a r n i n ga n dd e v e l o p m e n tt o o l s ,e s p e c i a l l yf o rt h eu s e r sl a c k i n g e m b e d d e dh a r d w a r ed e v e l o p m e n te n v i r o n m e n t , f i r s t l y , t h i st h e s i si n t r o d u c e st h eb a s i ct h e o r yo fs i m u l a t i o nt e c h n o l o g y , e x p o u n d st h ee m b e d d e ds i m u l a t i o nr e l a t e dt e c h n o l o g i e s ,a n dt h e nd i s c u s s e s s o f t w a r es i m u l a t i o nm e t h o da n di n s t r u c t i o ns e ts i m u l a t i o ne x e c u t i o nm e t h o d s ; t h ee x i s t i n gs o f t w a r ee m u l a t o rf r a m e w o r ki sa n a l y z e d ,f o l l o w e db yt h ed e s i g n o fs o f t w a r ee m u l a t o rf i a m e w o r kf o r $ 3c 2 410a n dt h eg e n e r a li n t r o d u c t i o no f i t sw o r k f l o w , w i t ht h eo p t i m i z a t i o ns t r a t e g i e sf o ri n s t r u c t i o ns e ts i m u l a t i o n a n dt h em e t h o dt om u l t i - t h r e a ds i m u l a t i o n p i p e l i n eb e i n g d i s c u s s e d e m p h a t i c a l l y ;f i n a l l y ,t h es i m u l a t i o no fs t o r a g es y s t e ma n dt h ed e s i g no f e l ff i l e sl o a d e ra r ee l u c i d a t e d ,a n dt h ei n t e g r a lf u n c t i o no ft h es i m u l a t o r a n d p a r t i a lp e r f o r m a n c ea r ev a l i d a t e d t h i st h e s i s a n a l y z e sa n di m p r o v e st h e s i m u l a t i o nm e t h o do ft h e t r a d i t i o n a li n s t r u c t i o ns e ts i m u l a t o r , m a i n l yf o c u s i n go nt h ei m p r o v e m e n to f i n s t r u c t i o nw o r da n a l y t i c a lp r o c e s s ,t h eo p t i m i z a t i o no fe x p l a i n e df u n c t i o n , a n dt h ea d o p t i o no fs i m u l a t i n gc a c h et oa c c e l e r a t ei n s t r u c t i o ne x e c u t i o n ;t h e c o n c e p to ft h r e a d i n gc o d ei sa p p l i e dt oi m p r o v ei n s t r u c t i o n ss i m u l a t o r ;t h e e x i s t i n gs o f t w a r ee m u l a t o rf r a m e w o r k i sa n a l y z e d ,f o l l o w e db yt h ed e s i g no f s o f t w a r ee m u l a t o rf r a m e w o r ks u i t a b l ef o r $ 3 c 2 410 ;b ya d o p t i n gm u l t i - t h r e a d s i m u l a t i o np i p e l i n e ,t h ep a r a l l e lo fm u l t i t h r e a da n dp i p e l i n ei m p r o v e st h e i i p e r f o r m a n c eo f t h es i m u l a t o r k e yw o r d s s i m u l a t o r , i n t e r p r e t i n ge x e c u t i o n ,i n s t r u c t i o ns e t ,e l ff i l e i i i 原创性声明 本人声明,所呈交的学位论文是本人在导师指导下进行的研究工作及 取得的研究成果。尽我所知,除了论文中特别加以标注和致谢的地方外, 论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得中南 大学或其他单位的学位或证书而使用过的材料。与我共同工作的同志对本 研究所作的贡献均已在论文中作了明确的说明。 作者签名:遥j 堑鲴 日期:2 q q 墨虹月j 卫日 学位论文版权使用授权书 本人了解中南大学有关保留、使用学位论文的规定,即:学校有权保 留学位论文并根据国家或湖南省有关部门规定送交学位论文,允许学位论 文被查阅和借阅;学校可以公布学位论文的全部或部分内容,可以采用复 印、缩印或其它手段保存学位论文。同时授权中国科学技术信息研究所将 本学位论文收录到中国学位论文全文数据库,并通过网络向社会公众 提供信息服务。 作者签名:匿i 塑导师签名塑:! :垒日期:2 q q 墨年月业日 硕士学位论文第一章绪论 1 1 课题研究背景 第一章绪论 软件模拟器技术从7 0 年代开始发展,9 0 年代初,p c 硬件的全系统模拟被广泛研究 与实现【l 】。最早完成一个完整系统的是斯坦福大学实验室的s i m o s 2 1 ,后来又出现了 很多优秀的模拟器,包括商业的和开源的,比如:v m 眦鹏【3 1 ,v i r t u a lp c 【4 】,v i r t u a l s e r v e r l 5 1 ,q e m u 6 】等。 软件模拟器有许多种,如模拟一个芯片时序逻辑的模拟器、只模拟c p u 指令的模 拟器、模拟整个硬件开发板的模拟器、模拟一个p d a 的模拟器等。存在一些纯软件的 仿真器或模拟器j 如s t a n f o r d 大学的s i m o s 模拟器,它仿真的是m i p s 系列c p u 和相关 外设,可以在其上运行s g i 公司的i f i x l 7 j 操作系统和软件;p s i m 是一个仿真p o w e r p c 指 令集的模拟器,目前只支持简单的命令行应用程序【8 l ;c o p i l o t 是一个p d a 模拟器,它 是由g r e gh e w g i l l 出于个人喜好编写的,它仿真的是m 6 8 kc p u ,通过它可以给 p a l m o s 【9 】的软件开发者提供一个模拟开发环境【1 0 l 。b o c h s 是一个仿真x 8 6c p u 的开源 项目,目前还支持a m d 6 4c p u ,在它上面可以运行l i n u x 操作系统。其它一些商业的 仿真软件如v m w a r e 和v i r t u a l p c 可以仿真一个真实的x 8 6 计算机,而v i r t u t e c hs i m i c s 仿真器可以仿真多种c p u 和硬件,功能强大,可用于硬件和系统软件的评测【l 。 a r m 处理器的模拟器有采用动态重编译方法【1 2 1 的a r mp h e t a m i n e 1 3 1 和 t a r m a c h 】,有基于指令集模拟的s w a r m t l 5 j 以及a r m 公司的a r m u l a t o r l l 6 ,还有一 种支持a r m 、x 8 6 、a l p h a 指令集结构仿真器s i m p l e s c a l a r ( 4 0 版) 【1 。7 1 。结构仿真器 是指仿真芯片真实的物理结构的仿真器,它不仅仿真了芯片的寄存器和存储器,而且 还仿真了芯片的c a c h e 结构、跳转指令预测和乱序执行等。因而它不仅能给出指令执行 的效果,而且还能够给出指令在流水线中运行的过程,对于芯片的开发有非常大的借 鉴意义。 国内嵌入式系统模拟器比较成熟的软件有s l ( ) ,e y e 【i s l 和w u k o n g 1 9 1 。s k y e y e 是2 0 0 2 由清华大学的博士后陈渝发起并成功实现的开源项目,旨在实现多种嵌入式开发板的 通用模拟器。s k e y e 在通用的l i n u x 和w i n d o w s 平台实现个仿真集成开发环境,模拟 常见的嵌入式计算机系统。s k y e y e 基于g d b a r m u l a t o r ,模仿了一个完整的嵌入式系 统【2 0 1 ,目前包括c p u 、内存、i o 寄存器、时钟、u a r t 、网络芯片、m m u 、c a c h e , l c d 等各种硬件【2 l _ 1 ,但还没有u s b 接口的模拟【2 2 1 。s k y e y e 支持的操作系统有u c l i n u x 、 u c o s i i 和a r m l i n u x l 2 3 】【2 4 】 【2 5 1 w u k o n g 是浙江大嵌入式软件研发中心从2 0 0 4 年1 0 b 开始研发的通用嵌入式系统 硕士学位论文第一章绪论 模拟器,可运行在w i n d o w s 和l i n u x 平台上,它支持主流嵌入式处理器体系结构和常 见嵌入式系统外部设备,实现了对嵌入式系统的全系统模拟,可以直接运行嵌入式系 统的二进制文件。同时,w u k o n g 提供调试支持和运行数据收集,为嵌入式开发者提 供了较完善的支持。 1 2 课题研究意义及其主要内容 软件模拟器扮演了许多重要角色,其用途包括。 1 硬件的廉价替代方案 相比于目标机器的真实硬件,作为一种软件模拟器显然成本低而且易于取得,因 此使用全系统模拟器是相对于购买真实硬件的一种廉价替代方案。例如,m s w i n d o w s 平台上,人们经常使用v m w a r e 、v i r t u a lp c 等全系统模拟器软件来模拟另一台运行 l i n u x 操作系统的p c ;而各种游戏机模拟器使得过去流行的各种终端( t e r m i n a l ) 游戏 能够在p c 上重放异彩。 2 模拟异构计算机以克服移植性问题 移植性问题首先是针对遗留系统的:随着计算机不断的更新换代,对遗留系统的 向后兼容性成为软件开发者需要考虑的一个重要问题。模拟技术可以在计算机升级 时,将旧硬件上面运行的软件通过模拟器在新硬件中运行,因而提供了一种经济的遗 留系统向新系统移植软件的解决方案。其次,移植性问题存在于不同体系结构的计算 机之间:通过在各种平台上利用模拟技术实现一个“虚拟机“ ,从而实现软件的跨平 台运行。最著名的例子是s u n 微系统公司的j a v a 虚拟机平台,基于j a v a 虚拟机的 j 2 s e 、j 2 e e 等软件平台取得了巨大成功。 3 硬件设计和系统设计平台 全系统模拟器帮助技术人员深入了解软件系统运行时的动态行为,即程序在运行 中硬件被使用到的情况( 包括指令执行周期的情况,内存使用情况,缓存换入换出的 情况等) 。这些动态信息对于硬件构架设计师,指令设计者,和系统软件( 例如操作 系统、启动软件) 开发者来说,有着非常重要的意义。出于降低开发成本等方面的考 虑,现代的硬件设计、系统软件调试等底层的研发工作一般都选择在模拟器上进行 4 嵌入式系统的应用 目前嵌入式开发平台通常采用交叉开发工具链( c r o o s s p l a t f o r mt o o lc h a i n s ,一般 包括编译器、链接器、调试器等工具) ,用这种开发方式在开发过程中需与硬件打交道, 软件与硬件之间敏感的交互影响会产生大量的麻烦和进度的延误,很多不确定因素会 引起错误。模拟器与交叉开发工具链结合起来解决这一问题。在模拟器支持下,交叉 编译器编译出的软件可以在被安装到真实硬件上测试之前( 例如于硬件设计还未定 2 厶 硕士学位论文第一章绪论 型,或者硬件还不能获得时) 先在模拟器上进行运行和调试,从而加快开发过程。 论文进行的嵌入式系统模拟器的研究,在嵌入式系统领域中还是一个比较新的研 究方向,它与虚拟化技术有密切的联系,目前市场上大多成熟、可用的模拟器是不公 开源代码的,要想使模拟器的功能更适合实际工作的需要,那就需要进行研究,设计 适合实际工作的软件模拟器。 论文将用v i s u a ls t u d i o2 0 0 3 下用c + + 实现$ 3 c 2 4 1 0 开发板【2 6 】的主要功能的模拟, 首先根据框架结构设计原则和已有软件模拟器设计的框架结构,结合$ 3 c 2 4 1 0 体系结 构,设计出适合$ 3 c 2 4 1 0 软件模拟器的结构,其次分析了e l f 文件的格式,设计和实 现e l f 文件加载器;再次分析$ 3 c 2 4 10 指令字的特征,对传统指令集模拟方案提出了 一定的改进,把穿线代码的理念应用到指令集模拟中;最后使用多线程技术模拟流水 线,提高了指令集模拟的性能。 1 3 论文主要工作 论文深入分析了指令集模拟的仿真方法,根据$ 3 c 2 4 1 0 指令集的特征,在v i s u a l s t u d i o2 0 0 3 下用c + + 实现$ 3 c 2 4 1 0 模拟器,对指令集模拟的研究做了积极的探索。 论文主要工作包括以下几个方面。 1 根据框架结构设计原则和已有软件模拟器设计的框架结构,结合$ 3 c 2 4 1 0 体系 结构提出与之适应的软件仿真器模型; 2 分析了传统指令集模拟器的指令集模拟,对指令集模拟进行了改进; 3 应用穿线代码的理念来加快指令集模拟执行的速度; 4 采用多线程来模拟流水线,利用多线程模拟流水线的并行性来提高性能。 1 4 论文组织 论文全文共分六章,其结构安排如下: 第一章为绪论,概述了国内外软件模拟器的研究现状,阐述了论文研究的意义和 拟定实现的目标,然后简述了论文的主要工作,实现的功能。 第二章主要总结了软件模拟器的主要研究现状;简述了软件模拟器的相关技术, 分析了软件模拟器中主要采用的策略, 第三章简述已有软件模拟器设计的框架结构,根据框架结构设计原则,结合 $ 3 c 2 4 1 0 体系结构,设计出适合s 3 c 2 4 1 0 软件模拟器的结构。 第四章是处理器的模拟,处理器的模拟的最主要是指令集与流水线的模拟。本章 主要是$ 3 c 2 4 1 0 指令集模拟和流水线的模拟,首先分析传统软件模拟器中指令模拟的 3 硕士学位论文 第一章绪论 策略和$ 3 c 2 4 1 0 指令的格式,然后对传统的指令模拟策略进行了改进,最后用多线程 对流水线进行了模拟。 第五章根据$ 3 c 2 4 1 0 的存储系统的结构,对存储系统中的m m u 、c a c h e 、w r i t e b u f f e r 进行模拟:协处理器是对处理器功能的必要的补充,因此论文对协处理器进行 模;e l f 文件加载器负责把l i n u x 系列操作系统下的文件加载到处理器中,这部分在 $ 3 c 4 1 0 模拟器中也是不可缺少的一部分,所以论文中对其进行设计。 第六章对$ 3 c 2 4 1 0 模拟器功能进行了验证。 第七章为结束语。对所做的研究与设计工作进行了总结,并阐述了将来进一步的 工作。 4 硕士学位论文 第二章软件模拟器技术 第二章软件模拟器技术 模拟器是指一种用于模仿其它硬件行为的软件或者硬件。早在大型机时代,人们 为了实现软件兼容性的目的( 当时的软件开发费用极为昂贵) ,作为新开发的硬件系 统的一部分,开发了世界上第一台模拟器。现在提及模拟器时,多半是指能够运行于 某种硬件系统下的一种软件,这个软件可以模仿另一种硬件系统对数据的处理过程, 并最终得到相同或者相似的结果。 2 1 模拟技术理论基础 模拟技术理论需要追溯到图灵机( t u r i n gm a c h i n e ) 。英国数学家艾伦图灵( a l 锄 t u r i n g ) - 于1 9 3 7 年发表著名的论可计算的数,以及其在判定问题中的应用1 2 7 】一文, 文中提出了图灵机的概念,奠定了计算理论的基石。图灵机模型三部分组成:一个有 穷状态控制器,一条无限长的输入带和一个读写头。图灵机的基本模型【2 8 1 可如图2 1 所示: 图2 - l 图灵机模型 图灵机不断根据读写头当前指向格子的符号和有穷控制器的当前状态,依次执行 如下操作【2 8 】: 1 按照转移函数的规则改变有穷控制器的状态; 2 ( 1 ) 在被扫描的单元格上打印一个符号,改写原有的符号,或者 ( 2 胜制读写头向左或向右移动一个单元。 形式上,图灵机( m ) 可以用一个五元组【2 8 1 表示: m = ( k ,三,万,s ,h ) ( 2 一1 ) 其中:k 是状态的有穷集合;三是字母表,即合法带符号的有穷集合:s e k 是 初始状态;hk 是停机状态的集合:万是转移函数,是自( k - h ) 三到k ( 三,一,一) 的映射。 著名的丘奇一图灵命题( 1 1 1 ec h u r c h t u r i n gt h e s i s ) 2 8 j 舢:一切可计算的命题 5 硕士学位论文第二章软件模拟器技术 都可以被图灵机计算,该命题的另一种推论形式则是,当前的所有计算机,在理论上 都是可以被图灵机模拟的。 而图灵这样定义“模拟( s i m u l a t i o n ) “ 的概念【2 7 l :“当一台数字计算机运行一个状 态转移表( 即运行一个程序) ,而该状态转移表描述了另一台离散状态机器的状态转 移、输入和输出时,便说该计算机( 前者) 在模拟这台机器( 后者) “ 。这便是计算 机模拟技术的的理论基础。 在论文中,对软件仿真与软件模拟没有区分,可以当同一个概念。 2 2 软件模拟技术 软件模拟技术可以分为基于事件驱动和基于电路行为。在软件模拟中人们通常采 基于事件驱动的仿真技术,可分为连续事件仿真和离散事件仿真,在一般情况下人们 采用的是实现离散事件仿真的基本功能。离散事件模拟有两种模拟类型:单个事件模 拟和多重事件模拟,模拟算法采用高效的事件推进法。模拟过程可概括为( 如图2 2 所示) : 第一步:扫描存放当前等待的模拟事件列表,将最先发生的事件推进到活动对象 列表; 第二步:扫描活动对象列表,按模拟流程图进行推进; 第三步:推进模拟时钟,处理相应的性能指标; 第四步:显示模拟结果。其中生成起始事件序列有三种方法可选择:平均分布、 随机分布和按统计样本生成【2 9 1 。 事件驱动算法是一个同步模拟算法,对并发事件的处理是由一个中央控制时间机 构来管理,把时间划分为一个个细小时隙t ,且认为在一个t 时隙之内发生的事件都 是并行事件,只有在当前模拟时隙内的所有并行事件处理完毕,模拟时间才前进一个 时隙,通过一个全局半有序的事件列表中存储事件,通常用首尾相连的循环堆栈来完 成算法此部分的实现。其中t 即为模拟周期,一般较小【3 0 l 。模拟过程中采用两个列表: 一个是事件时间列表,它临时记录事件和事件发生的时间,在这里不断地对事件按它 发生的时间从小到大的顺序进行排序,以便知道当前哪个事件最先发生;一个是活动 对象列表,它记录当前的活动对象是谁,模拟算法是基于事件驱动的模拟时钟推进算 法,先将从用户界面输入的开始事件进行按时间从小到大的顺序进行排序,然后将开 始事件直接推进活动对象列表,并且将模拟时钟推进到最先发生事件的时间,再判断 活动对象列表中的下属的对象为功能、事件、连线和规则。如果是连线,判断连线的 下属对象是功能、事件还是规则。如果是事件,直接将事件推进到活动对象列表中。 以图表文字的形式输出是规则,判断规则的类型并进行相应的处理:如果是功能,则计 6 硕士学位论文 第二章软件模拟器技术 算相应的时间、成本、队列长度、占用率等技术指标,再将功能的执行时间= 模拟时 钟的当前时间+ 功能的执行时间+ 等待时间,并且将功能推进到事件列表中,再重新对 事件时间列表进行排序,然后不断地将事件时间列表中的最先发生的事件推进到活动 对象列表中。如果是规则,依据规则的类型进行相应的处理,并将规则推进到活动对 象列表中。依此循环,直到模拟结束,对模拟的结果进行分类和计算,统计相应的空 闲时间、忙时间、成本、净增加价值和每个功能的成本、等待时间、处理时间以及队 列长度、各个功能所增加的价值等一系列数据。通过以上活动,对用户建立的流程模 型进行动态模拟,计算性能等指标,为分析评价和辅助决策提供信息。 r开始、 上 生成;件列表 模拟初始化 r 扫描事件列表 推进模拟时钟 可视化模拟显示 处理性能指标 否 生成分析报告 厂 结束 、 l 图2 2 基于事件驱动的模拟流程图 基于电路行为的模拟模型主要着眼于电路系统功能和内部运行过程进行模拟,其 7 硕士学位论文第二章软件模拟器技术 基本元素是操作和过程,各操作之间主要考虑其数据传输、时序配合、操作流程和状 态转换。高层次模拟的方法一般是对描述的解释执行,或者将硬件描述语言的描述编 译成一般软件语言如汇编语言、c 、c + + ,然后执行。高层次描述和模拟也可以实现 寄存器传输级的描述和模拟。常用做法是,在硬件描述语言基础上,结合高级语言的 语法规则,设计实现一种嵌入式系统前端开发工具语言,以完成硬件环境以及单片机 的形式化描述。该工具语言描述数字硬件设备,允许用户从硬件的逻辑行为、逻辑组 成和硬件延时等三方面对数字硬件设备进行描述,这种描述与硬件设备的设计方法、 实现技术等因素无关。 用工具语言对每个模拟器件进行描述,并用器件编辑器对分立的数字器件或具有 某一功能的功能块元件进行编辑,并支持器件的图形描述转化为用工具语言形式化描 述,最后将工具语言翻译成功能相同的高级语言程序及可执行代码。从通过这种方式 生成的模拟器件库中,选择元器件搭建起所需模拟的仿真电路,这样就得到了模拟的 硬件平台。 2 3 软件模拟方式 从软件模拟器中执行指令的处理事务的时间来可分为串行模拟和并行模拟。 2 3 1 串行模拟 串行模拟通常应用在系统模拟器中,系统模拟器要模拟c p u 的工作和各个外部 设备的工作,考虑到各个部件间运行步调的一致,被模拟的设备的动作必须是同步的。 串行模拟最为简单的一种同步方式( p r o e m u l a t o t l 3 1 】,s k y e y e l 3 2 1 等都采用这种方式) , 在每个指令周期上处理c p u 和外设的同步问题,即处理器每完成一条指令的模拟后, 主程序依次调用所有外设的模拟方法,完成外设在这期间相应动作的模拟。该过程可 以用图2 3 i 驯来表示。 2 3 2 并行模拟 基于指令周期进行同步的串行模拟虽然一定程度上解决了同步的问题,但是仍然 存在如下的问题:在串行模拟器中,模拟函数被主程序反复轮询,而它们却很可能在 做一个重复的工作嘲j 如,检查某个管脚值,而该管脚值却通常保持不变,在这种 情况下,串行模型其实是在无谓浪费宿主c p u 时间。而并行模拟可以有效解决这个 问题【3 1 】:每个外设建立并拥有一个独立的内建线程,外设模拟工作都在各自的内建线 程中完成,而不是交由系统唯一的全局线程完成模拟开始时,外设的内建线程周期 8 硕士学位论文第二章软件模拟器技术 性被系统唤醒,执行工作循环,通常是每隔一段固定的时问检查某些系统标志( 例如 处理器相关引脚信息) ,若满足条件,则去完成相应的模拟工作,之后线程休眠,让 出c p u 时间,直至下一次被系统唤醒。并行模拟方法可以避免无意义的轮询,因此 提高了模拟的效率,但是它也带来了线程间同步机制的问题,因为不论何种同步方法 ( 信号量、互斥等) 都有一定的开销,只有当线程间同步的开销小于节省的时间,这 种方法才具有实际意义。 图2 3 串行模拟示意图 $ 3 c 2 4 1 0 的并行模拟机制对上述方案做了一些改进,主要体现在利用时间局部性 原理对线程休眠时间进行灵活地控制,具体方法是,当线程被唤醒后,如果发现无事 可做( 即相应标志未被置位) ,那么其下次休眠的时间则相应减少( 例如为上次时间 的一半,但有下限) ,反之则相应增加( 例如为上次时间的两倍,但有上限) 。应用时 间局部性原理,如果一个外设被系统使用,那么它很可能很快被再次使用,反之亦然。 2 3 3 混杂模型 外设的使用频率不相同,各自的动态特性也各异,因此在整个模拟器系统中,单 一使用并行或者串行的机制模拟所有外设元件,并不是一个完美的选择。不同的外设 9 硕士学位论文 第二章软件模拟器技术 有其不同的动态特性,因此,论文中提出了一种针对模拟目标特性的串并行混杂的方 案来模拟外设: 对需要频繁响应并且工作内容较为简单的外设元件( 例如各种片内集成的外设元 件等) ,采取串行方式来模拟,用指令周期进行同步,以保证外设的运行响应时间; 响应不是很频繁而且其业务又比较复杂的外设,则可以选择采取并行方式模拟, 例如网卡等,这确保不把宿主c p u 时间浪费在无谓的轮询上。 混杂模型方案的基本原则是,对各个外设元件根据其行为特性,合理选择模拟方 式来混合模拟,从而达到最佳的模拟效率。 2 4 指令集模拟 指令集模拟器有两种基本解决方案:解释执行,程序中的每条指令在被执行前进 行转换:编译后执行,在程序运行前将整个程序从机器a 上的语言转换为机器b 上 的语言。基于编译的技术,将目标指令转化为等效的一组宿主机指令,该过程可以在 编译时进行,称为静态编译模拟,也可在运行时进行,称为动态编译模拟。 2 4 i 解释执行 解释执行是使用得最为广泛的一种指令集模拟方式,。被s i m o s t 3 3 1 、s k y e y e 、 a r m u l a t o r l 3 2 1 、p r o e m u l a t o r l 3 1 】等采用。 解释执行的工作原理是构建和目标机器对应的模拟寄存器和模拟内存空间,随后 在执行流程中,利用这些模拟的硬件环境机械地模拟真实c p u 的工作流程,通常为 “取指一解码一执行“ 的循环。指令集模拟器一般不涉及周期级别的模拟,因此c p u 内部流水线之类的细节不被考虑。 解释执行过程大致分为以下几个步骤: 1 模拟的c p u 根据模拟的p c 寄存器从模拟的内存空间中取出指令; 2 根据解码规则进行解码,解码过程中判断出该指令的类型; 3 调用该指令的处理函数,处理函数中对模拟器的状态( 包括寄存器,内存等) 进行更新操作,尤其是修改p c 寄存器: 4 跳到l 。 图2 - 4 形象化地展示了这一过程。 大多数指令集模拟器都是用该方法实现的,这是因为解释执行的方法有如下几个 显著的优势: 1 过程简单明了,很容易设计和实现; 2 可移植性最好; 】0 硕士学位论文 第二章软件模拟器技术 3 由于不使用任何缓存机制,对于自修改代码不存在问题; 4 最易于实现调试机制; 但是,由于解释执行机制完全没有利用局部性原理,经常会进行多次的无谓的重 复取指和解码,因而它的性能较差,在效率敏感的场合并不适用。在$ 3 c 2 4 1 0 模拟器 中,解释执行是最基本的指令集合模拟算法,所有体系结构的指令集模拟模块都实现 了解释执行算法,同时,当模拟器在调试模式下运行时,也均采用该算法。 图2 - 4 指令解释执行图 2 4 2 基于编译的方法 1 动态编译 动态编译【3 4 j 1 3 5 1 【3 6 1 是运行时将目标机器二进制代码编译为宿主机器二进制代码的 模拟技术。它由下列步骤组成: 将目标机器二进制代码分为若干直线代码块( d i r e c tb l o c k ) 作为模拟的基本单元, 每个直线代码块以跳转指令作为结束标志。 指令执行过程中,先根据待执行指令的地址判断其所在的直线代码块是否曾被译 过。 如果否,则将此段直线代码块翻译成宿主机代码,并将其放入一个翻译结果缓冲 池中( t r a n s l a t i o nc a c h e ) ,并维护一个哈希表,将指令地址和翻译结果缓冲池中的位 置对应起来; 如果是,则直接从翻译缓冲池中取出宿主机器的二进制代码 动态编译技术在效率上的优势是非常突出的,因为其充分利用了局部性原理,不 硕士学位论文第二章软件模拟器技术 存在重复取指和解码。同时,动态编译技术可以在宿主机器的二进制代码级别进行优 化,比穿线代码更充分地发掘了优化的空间。关注效率的模拟器一般使用动态编译技 术,q e m u 项目1 3 7 】便是基于一种改进的动态编译模型,其模拟效率十分惊人。动态 编译方案的缺点是可移植性和自修改代码问题,宿主机器的二进制级别优化必然给平 台移植带来麻烦;而每次发现自修改代码,需要更新整个翻译结果缓存池,带来相当 大的效率损失。 2 静态编译 静态编译【3 8 】是效率最高的模拟方法,它将指令的编译过程移到了编译阶段完成, 如图2 5 所示。即事先将目标机器的二进制代码翻译到宿主机器平台,模拟器运行时已 经是在执行宿主机器代码,完全没有运行时解码和编译开销,其模拟效率自然最高。 但是静态编译的缺陷也是致命的,它只能处理完全静态的代码,不允许任何的自修改 代码存在,也不允许目标机器有外部存储,因此它在系统模拟器中应用范围很有限。 在论文的模拟框架中,不考虑对这种方案的支持。 2 5 本章小结 图2 5 静态编译 本章简述了软件模拟技术的理论基础是图灵机和图灵关于模拟的定义;介绍了软 件模拟技术,它可分为基于事件驱动和基于电路行为的模拟,阐述了软件模拟中常见 1 2 n 硕士学位论文 第二章软件模拟器技术 的模拟方法,主要有串行模拟与并行模拟,介绍了指令集模拟器中所主要使用方法: 解释执行和基于编译的方法,基于编译的方法又可分为静态编译和动态编译,并分析 它们在模拟器中使用的优点及其缺陷。 1 3 硕士学位论文 第三章s 3 c 2 410 软件模拟器框架设计 第三章$ 3 c 2 4 1 0 软件模拟器框架设计 在现代嵌入式系统领域中,软件模拟技术已成为一种非常重要的技术。与不使用 模拟技术的嵌入式开发相比,软件模拟技术可以极大地降低设计成本和缩短设计周 期。然而,由于开发嵌入式系统的软件模拟器有许多难点,如模拟器框架的设计、指 令集的模拟、流水线的模拟和时序的模拟等问题,限制了软件模拟技术的快速发展, 在嵌入式系式中许多研究人员已经提出了各种各样的方法和技术来解决这些问题。但 是,到目前为止,这些问题还并未得到根本性解决。论文中对这些问题提出了部分解 决方案。本章对一些软件模拟器的框架结构进行了分析,根据框架设计原则和 $ 3 c 2 4 1 0 体系结构特点,设计出适合$ 3 c 2 4 1 0 软件模拟器的框架。 3 1 已有软件模拟器框架 1 s i m p l e s c a l a r 软件模拟器框架 s i m p l e s c a l a r l 3 9 1 ,m 软件模拟器框架如图3 1 所示。第l 层是抽象出的硬件模型, 如取指令器、流水线、分支预测器、高速缓存和其他核心模型等这些模型既可以单独 使用,也可以集成到一个完整的体系结构模拟器中;第2 层是模拟内核, 主要提供 事件模拟服务;第3 层主要提供目标指令集体系结构( 即要模拟的指令集) 和目标接口, 目前, 可以支持的目标指令集体系结构有p i s a ,a l p h a ,p o w e r p c 和x 8 6 等。 在s i m p l e s c a l a r 中,不同硬件部件间信息交换的模拟是通过函数参数传递和全局 变量实现的这种方法容易造成信息不加限制地流动而产生许多副作用另一个缺点是: 由于大量使用全局变量,使得程序结构变得比较混乱,使程序维护成了一个沉重的 负担所以,要理解和维护,特别是更改它以适应多种不同的、新的设计需要花费较 多的时间和精力。 2 s k y e y e 软件模拟器框架 s k y e y e i 墙】软件模拟器框架图如图3 2 所示。s k y e y e 从功能上分为如下几个模块: ( 1 ) 配置选项解析和初始化模块:在模拟硬件开始运行前,根据配置文件的选项, 控制对模拟硬件的配置和初始化。 ( 2 ) 处理器模拟宏模块:主要完成与处理器体系结构相关的模拟,它可细分为: c p u 指令模拟执行模块、m m u c a c h e 模拟模块、c o p r o c e s s o r ( 协处理器) 模拟模块。 ( 3 ) i o 模拟宏模块:本模块包含各种逻辑行为各异的外设模拟,主要包括系统i o 模拟模块、网络芯片模拟模块、l c d 模拟模块等 1 4 硕士学位论文 第三章$ 3 c 2 4 1 0 软件模拟器框架设计 ( 目标机应用程序和操作系统 ) , 硬件模犁 、 、 : 流水线1 f取指 处理器核 、厂 、 预测器高速缓存1 厂 、 模拟器内核 f 燃委目标机体系。 f 目标机i o i 结构模拟器 j【接u 宿主机平台 图3 - 1s i m p l e s e a l a r 软件模拟器框架 ( 4 ) 系统i o 模拟模块:本模块的主要任务包括:根据配置文件进行i o 和外设 初始化;完成各种外部i o 设备的模拟( 如时钟计数器累加、产生中断等) ;进行各种 特定c p u 和外设的i o 寄存器读写的模拟。本模块与各种具体的开发板和c p u 有很 紧密的联系。 ( 5 ) 网络芯片模拟模块:本模块主要完成了对8 0 1 9 a s 网络芯片的模拟工作,主 要任务包括:模拟8 0 1 9 a s 的控制逻辑、8 0 1 9 a s 与具体开发板i o 模拟模块的接口、 虚拟网络输入输出接口处理。 ( 6 ) l c d 模拟模块:本模块主要完成l c d 控制逻辑的模拟,是目前唯一需要g u l 支持的模块,它的主要任务是:配置l c d 硬件模拟、模拟l c d 控制逻辑。 ( 7 ) m e m o r y 模拟模块:本模块与具体的c p u 和开发板无关,它的主要任务包 括:根据配置文件进行内存初始化,并加载b i n a r yi m a g e 文件;进行r a m r o m 读写 的模拟。 3 2 $ 3 c 2 4 1 0 软件模拟器框架设计 软件框架设计的过程,是基于软件质量各个要素不断做出权衡的过程。1 9 7 8 年, m c c a l l l 4 l l 等人定义了1 1 种描述软件质量的要素正确性、可靠性、有效性、完整 性、可用性、可维护性、灵活性、可测试性、可移植性、可重用性、可互操作性,描 述了软件质量的诸方面属性。而这些属性,都是软件架构设计者进行软件架构设计时 考虑的因素。$ 3 c 2 4 1 0 开发板体系结构如图3 3 所示。$ 3 c 2 4 1 0 开发板中包括如下几 个部分:a r m 9 2 0 t 的处理器、m m u 、c a c h e 、w r i t eb u f f e r 、总线、l c d 、外部协处 15 硕士学位论文 第三章$ 3 c 2 410 软件模拟器框架设计 理器、u a r t 、u s b 设备2 q 等。 图3 - 2s k y e y e 软件模拟器框架 论文所设计的$ 3 c 2 4 1 0 软件模拟器的框架如图3 4 所示。该框架主要包含5 个功 能单元和连接各单元的总线,同时出于模拟运行控制考虑,专i - 】j n 入控制核和控制管 道等元素,各功能单元又可由更小的部件组成。在具体实现时,替换增减某单元内部 的组成部件,甚至更改控制核接收的命令集,就可得到一个新的模拟器,这种做法在 开发同系列模拟器时可以极大地降低工作量。 1 6 硕士学位论文第二章$ 3 c 2 410 软件模拟器框架设计 图3 3s 3 c 2 4 1 0 体系结构图 软件模拟器模型的8 个组成部分共同协作完成微控制器的模拟器功能: 1 控制核:控制核是对外窗口,接收处理所有外部命令,接受环境的时序控制, 使与其它运行实体步调一致,并帮助完成微控制器与其他模拟器硬件的信号传输;同 时也是运行枢纽,完成诸如创建、运行、停止和销毁等动作,负责使内部各模块协调 运行。 2 控制管道和总线:这两个数据通道都是全双工通道,c p u 等基本功能部件同 时挂接在上面,既是数据接收方也是信息发送方。一旦有数据传送请求,通道查看目 的地,将数据送往对方。由发送方和接收方负责请求合理性、数据有效性,通道只是 数据通路,不实现这些控制逻辑。控制管道上流动控制命令、反馈数据、物理信号和 异常信息等,其数据格式由收发双方约定;总线b u s 模拟器是微控制器的内部物理总 17 硕士学位论文第三章$ 3 c 2 410 软件模拟器框架设计 线的模拟。 3 中央处理器c p u :所有c p u 都依照流水线处理各执行环节:取指、译码、形 成地址、取数据及执行、回写,每个环节设计为一个独立的模块,以便于移植和重用。 c p u 模拟器部件逐条解释执行机器代码,处理发生的复位和中断;在调试模式下要根 据调试命令控制应用运行。在这部分主要由指令集查模拟和流水线两部分组成。 4 存储控制器:存储控制器的模拟器参数主要包括空间大小、地址分配和读写控 制等。这在第五章将详细阐述。 5 系统集成模块:系统集成模块是属于系统级的控制器,与c p u 一样也是微控 制器必不可少的部分,是片上集成的时钟发生器、中断控制、电源管理、看门狗等单 元的总和,将这些部件作为标准,根据所模拟器微控制器的组成进行配置,不同的配 置即为不同的模拟器微控制器。 6 设备模块:设备模块包括定时器、d m a 、u s b 等设备,与系统集成模块一样 需要配置。 7 通信模块:通信模块是处理器与片外其他模拟器硬件设备问传送物理信号的通 道。在本模型中这些信号传输需借助控制管道和控制核。 8 e l f 文件加载器:主要作用是把e l f 文件格式的可执行文

温馨提示

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

评论

0/150

提交评论