(计算机应用技术专业论文)通用指令集描述语言的设计和实现.pdf_第1页
(计算机应用技术专业论文)通用指令集描述语言的设计和实现.pdf_第2页
(计算机应用技术专业论文)通用指令集描述语言的设计和实现.pdf_第3页
(计算机应用技术专业论文)通用指令集描述语言的设计和实现.pdf_第4页
(计算机应用技术专业论文)通用指令集描述语言的设计和实现.pdf_第5页
已阅读5页,还剩67页未读 继续免费阅读

(计算机应用技术专业论文)通用指令集描述语言的设计和实现.pdf.pdf 免费下载

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

文档简介

摘要 随着软硬件技术的发展,用软件虚拟硬件一构造虚拟机来辅助硬件设计、开发系统软件 和应用软件已经越来越普遍。通过虚拟机平台,开发者可以在一台p c 机上同时使用多个目 标机器。软件开发者可以在x 8 6 机器上使用虚拟机开发、运行和调试a r m 、8 0 5 1 程序;硬 件开发者也可以在虚拟机上验证硬件设计的优劣。虚拟机开发是个庞大的工程,开发工作 量主要集中在处理器的模拟,即指令集模拟部分,约占总工作量8 0 左右。如何快速建立 高质量虚拟仿真环境,特别是处理器模拟模型是迫切需要解决的问题。 论文在分析主流机器语言和指令集描述语言的基础上,研究了处理器抽象模型方法,设 计实现了一种轻量级处理器指令集描述语言s m a r t - i s d l ,其且的是为快速高效建立处理器 模拟模型提供一种中间形式化语言。s m a r t 1 s d l 是一种通用的指令集描述语言,可用于描 述各种体系结构的处理器模型,如a r m 、m i p s 、8 0 5 1 等。通过对c p u 模型的抽象,s m a r t - i s d l 可以快速建立处理器模拟模型,将处理器取指、译码、执行等真实部件映射成s m a r t - i s d l 描述模板文法的相应描述模型完成处理器部件快速模拟。s m a r t i s d l 模板文法可以直观 地表达指令集行为特点,它通过对体系存储系统、指令实体相关特性的描述,并借助辅助工 具链,自动生成最终代码,取代使用c c + + 等编写指令集模拟,降低虚拟机模拟和调试的工 作量。s m a r t - l s d l 使用流行的可扩展标记语言x m l 作为表现形式,在表现力上直观而且简 单。目前s m a r t - i s d l 描述模板主要表现为2 个直观的实体:a ) 机器存储部件,其中包括了 寄存器和内存的表示:b ) 指令实体,包括了指令的格式、类型、指令执行时行为等。不同于 其他指令集描述语言,s m a r t i s d l 实现了多体系结构描述,可以描述不同体系c p u 支持的 指令集台;屏蔽机器各个部件的交互细节,提供直观的访问操作;支持多内存体系结构的访 问;支持变长数据和变长指令的存取、执行:支持对单独寄存器位访问操作,并且支持寄存 器别名访问。 在系统级模拟器开发过程中,通过s m a r t i s d l 辅助,开发人员在模拟处理器时可以对 体系底屡了解甚少,转而关注指令集执行行为特性。理解指令执行行为不需要特殊专业背景 一般说来,指令行为就是对寄存器和内存操作以及改变处理器和内存系统的状态 s m a r t - i s d lj i 要作出了以下几点贡献:a ) 降低了模拟器开发者的要求,s m a r t i s d l 这种中 间语言形式化地表现了处理器各个部件以及指令行为特点。b ) 减轻了模拟器开发的工作量, 通过s a m r t - i s d l 描述模板和工具链生成目标代码,可以减少整个开发的工作量。c ) 降低了 代码出错率。d ) 给模拟器开发带来了很多弹性选择,特别在生成目标代码时,可以根据需要 生成多个可用部件,比如反汇编器、信息统计、指令跟踪器等。 论文的研究可以归纳为:首先,分析了机器描述描述语言和指令集描述语言的相关技术 并提出指令集描述语言的解决方案;其次,通过抽象处理器模型,设计实现了s m a r t - i s d l 描述模板文法,为快速高效建立处理器模型提供了一种中间描述语言i 最后,设计实现了 s m a r t - i s d l 的解释器用于自动生成处理器模拟目标代码。 关键词:虚拟机指令集机器语言描述语言体系结构代码生成描述语言 i i a b s t r a c t s y s t e ms i m u l a t o rh a sb e e nas i g n i f i c a n tt o o lf o re m b e d d e ds y s t e md e v e l o p e r si nt h ef i e l do f h a r d w a r ed e s i g n ,s y s t e ms o f t w a r ea n da p p l i c a t i o ns o f t w a r ed e v e l o p m e n t w i t hap r o p e rs i m u l a t i o n p l a t f o r m ,d e v e l o p e r sa r ec a p a b l et or u n ,d e b u ga n dv e r i f ye m b e d d e ds y s t e ms o f i w a r eo fd i f f e r e n t a r c h i t e c t u r e si nav i r t u a le n v j r o n m e n t t h e r e f o r ec o m p u t e rs y s t e ms i m u l a t o r sh a v ee n t e r e dt h e s p o t l i g h to f b o t ha c a d e m i aa n di n d u s t r y t h ed e v e l o p m e n to fc o m p u t e rs y s t e ms i m u l a t o ri sac o m p l e xe n g i n e e r i n gp r o c e s s ,a n dm o s t o fi t sd e v e l o p i n ge f f o r t s ( 8 0 ) a r es p e n to nt h ei n s t r u c t i o ns e ts i m u l a t i o ns u b s y s t e m w h i c hi st h e m a i nf o c u so ft h i sp a p e r f o l l o w i n ga c o m p r e h e n s i v es u r v e yo fm o s tp o p u l a ri n s t r u c t i o ns e t a r c h i t e c t u r e ( i s a ) d e s c r i p t i o nl a n g u a g e s ,t h i st h e s i sp r e s e n t ss m a r t - i s d l al i g h t - w e i g h t1 s a d e s c r i p t i o nl a n g u a g e ,s m a r t - i s d li sag e n e r a lp u r p o s ei s ad e s c r i p t i o nl a n g u a g e ,w h i c hi sc a p a b l e o f d e s c r i b i n gv a r i o u si s a ,s u c ha sa r m ,m i p s ,8 0 5 1a n ds oo n s m a r t - i s d lu s e sas i m p l ea n d i n t u i t i v es y n t a xb a s e do nx m ls p e c i f i c a t i o n ,w h i c hc o n s i s t so ft h ef o l l o w i n gt w oe l e m e n t s : ( i ) s t o r a g ed e f i n i t i o n ,c o v e r i n gr e p r e s e n t a t i o no fr e g i s t e rf i l e sa n dm e m o r ys y s t e m s ( i i ) i r t s t r u c t i o n d e f m i t i o n ,i n c l u d e si n s t r u c t i o nf o r m a t ,c a t e g o r y , o p e r a t i o na n ds o0 n b e s i d e sh e t e r o g e n o u s a r c h i t e c t u r es u p p o r t ,t h ef e a t u r e so fs m a r t - i s d li n c l u d es u p p o r tf o rm u l t i p l em e m o r ys y s t e m , v a r i a b l el e n g t hi n s t r u c t i o na n dd a t aa n dr e g i s t e ra l i a s t h i st h e s i sa l s od i s c u s s e si nd e t a i la b o u tt h e d e s i g na n di m p l e m e n t a t i o no fac a 3 d eg e n e r a t o rt h a tp r o d u c e sa n s ic + + c o d e sw i t hs m a s t - i s d l i n p u t t h em a j o rc o n t r i b u t i o no ft h i st h e s i si st oe a s et h ed e v e l o p m e n to fi n s t r u c t i o ns e ts i m u l a t o r w i t hh i g h - l e v e la b s t r a c t i o no fp r o c e s s o ks u c hh i g hl e v e lm o d e l sa l s oe n h a n c et h em a i n t a i n a b i l i t y a n df l e x i b i l i t yo f g e n e r a t e ds i m u l a t o ra sar e s u l t k e y w o r d s :s i m u l a t o r ;i n s t r u c t i o n - s e t ; m a c h i n e l a n g u a g e ;d e e r i p t i o n - l a n g u a g e ; a r e h i t e t u r e ;c o d e g e n e r a t i o n ;d e s c r i p t i o n - l a n g u a g e ; 1 1 i 图表目录 图表2 - 1 最小虚拟机部件集合4 图表2 2 直接翻译执行一:。5 图表2 - 3 编译翻译执行5 图表2 _ 4 动态翻译执行6 图表4 1 s m a r t i s d l 自动生成各种部件1 3 图表4 - 2 通过描述文件生成各种部件1 4 图表4 3x m ls c h e m a 结构图1 8 图表4 - 4s m a n i s d l 和c p u 主要部件的对应关系一2 0 图表4 5s m a r t - l s d l 屏蔽了机器的细节2 l 图表4 - 6s m a r t ,i s d l 解释器结构图3l 图表4 7 节点的树状结构3 2 图表4 8 语义、语法检查类3 3 图表4 - 9 后端工具链代码生成流程3 3 图表4 1 0s m a r t i s d l 到c c + + 映射关系3 6 图表5 1 解释器生成代码运行在虚拟机环境中一3 8 图表5 - 2s m a r t - i s d l 解释器各个部分4 0 图表5 。3m i p s 4 k 主处理器c o r e 的结构图 s j ,4 l 图表5 4m m s 的3 类指令格式4 2 图表5 5 虚拟机结构图4 3 图表5 - 6s m a r t i s d l 描述文件结构4 3 图表5 7 运行科学计算时的状态( m i p s 4 k ) 4 4 图表5 - 8a r m 7 t d m i 运行u e l i n u x 的情况4 4 图表5 - 9 厂家的s p e c 一o ,4 5 通用指令集描述语言的设计和实现 1 1 研究背景 第1 章绪论 计算机仿真或虚拟 1 】一直是计算机技术一个很重要的分支。用软件虚拟硬件一构造虚 拟机来辅助硬件设计、开发系统软件和应用软件已经越来越普遍。通过虚拟机平台,开发者 可以在一台p c 机上同时使用多个目标机器。软件开发者可以在x 8 6 机器上使用虚拟机开发、 运行和调试a r m 、8 0 5 l 程序;硬件开发者也可以在虚拟机上验证硬件设计的优劣。与传统 方法相比,计算机虚拟有以下优点:a ) 不一定要提供真实的硬件环境,就可以进行完整试验; b ) 能提供整个计算机域内所有有关变量完整详尽的数据和信息ic ) 不用进行系统实验;d ) 可 预测试验变化过程和域终结果,使人们对过程变化规律有深入的了解。 如今,仿真技术和虚拟技术被广泛应用各个领域,特别在嵌入式系统的开发过程中,由 于在不同应用领域中,嵌入式开发要求的硬件体系差别很大,用软件进行系统仿真或虚拟硬 件非常必要。嵌入式开发特有的特性:1 ) 领域针对性强,不同领域对硬件和软件的要求区别 很大2 ) 一般软件不能满足嵌入式领域的要求,需要对软件进行裁减3 ) 软件的开发和调试一 般都需要特定的硬件环境,比如嵌入式很多都使用a r m 处理器,软件不能直接跑在一般 p c 机器上4 ) 嵌入式一般都是底层开发。 嵌入式开发的上述特性在很大程度上阻碍了其自身发展,为了克服这些困难,衍生发展 了很多嵌入式软硬件设计模式,设计开发工具。比如在硬件设计上,有v i - i d l 6 这样的硬 件描述语言,有v e r i l o g 这样强大的开发设计工具。而在软件开发上,出现了很多软件模拟 硬件的虚拟机环境,这些软件可以使嵌入式软件开发和调试在p c 机器上直接完成,完全脱 离了对嵌入式硬件环境的要求。这种软件模拟硬件的方法极大促进了程序员的开发效率,也 降低了嵌入式开发成本,给嵌入式开发带来了很大的弹性。这种软件开发已经成为嵌入式开 笈里不可或缺的分支,也可以把这种软件叫做虚拟机、仿真器或模拟器。比如n o k i a 提供给 开发人员有s y m b i a n 模拟器,a r m 公司提供了套a d s 模拟平台,b r e , a 有b r e w 手机模 拟器等等。 如今,几乎所有的嵌入式开发都会在模拟平台或环境中进行。因此可以说,对虚拟机或 仿真器本身的开发在嵌入式开发中也成为一门独立的技术或学科。在嵌入式系统中,虚拟机 非常多:比如s u l i 的j 2 m e 虚拟机,模拟a r m 4 】的s k y e y e 2 1 ,模拟m i p s 的p c s i m ,模拟 x 8 6 的v r n w a r e ,以及模拟多平台的q e m u 3 ,w u k o n g 等等。开发过虚拟机的人都知道,完 通用指令集描述语言的设计和实现 成一个虚拟机是个庞大的工程,不仅要对体系结构非常了解,光那上百条指令模拟就是一 个头痛的问题。为了使虚拟机开发变得容易简单,8 0 年代出现了一种叫体系结构描述语言。 专门描述不同的体系硬件,利用这些描述语言可以“绘画”出一台硬件机器。指令集描述语 言( d s l ) 是从体系结构描述语言中剥离出来,专门针对不同体系或特定体系的描述语言,用 于描述指令集合和处理器状态,并通过工具链生成环境目标代码。 本文主要针对不同体系结构设计和研究指令集描述语言,通过该语言对处理器的抽象和 描述,借助相应解释器的辅助生成目标代码,最后在w a k o n g 环境下能仿真出真实的硬件机 器。 1 2 研究内容和意义 本文的主要研究内容是对不同体系结构( 特别是嵌入式系统) c p u 或c o p r o c e s s o r 指令集 的描述和表示,并且能快速生成该体系指令集的仿真器和虚拟机。通过分析不同体系结构, 特别是对指令集的分析,基于x m l 表现方式将指令行为表现出来,这里包括内存系统、寄 存器操作、a l u 操作等部件表示。然后使用解释器b a j i e 将 口v i l 表示翻译成目标代码,生 成环境插件或库,从而模拟出c p u 部件。 随着计算机应用不断发展,应用领域越来越多,要求的试验和运行平台也越来越多比 如单片机开发主要应用 n m i 的8 0 5 1 系列芯片;在教学领域,体系结构基本采用m i p s 系列 芯片;而在其他嵌入式领域,比如现在的手机厂商很多都采用a r m 体系,由于这些体系存 在很大的结构差别,这种差异性使开发变得困难。如果能提供统一的平台,这将简化开发过 程,也可以降低开发成本。因此国外出现了q e m u 3 、v r n w a r e 、s i m o s 这样的软件,通过 对计算机硬件的虚拟或仿真,提供与目标机器一样的编程接口,开发者甚至可以在普通p c 机器上开发和运行手机应用程序、开发运行在不同体系上的程序,并且对程序执行行为信息 的收集和分析,可以针对不同应用,对程序做最优优化。除此,虚拟机可以用于硬件体系的 设计和实现,系统软件的设计和开发。为系统软件开发和调试提供具有良好可见性和重现性 的模拟环境,使得软硬件可以同步进行,比如设计一个新指令集合,在没有真实硬件的情况 下,可以借助虚拟机验证和完善指令集的设计。 然而虚拟机或系统仿真器开发是一个相当庞大的工程,不仅要模拟计算机的各种硬件, 包括内存、数据总线、时钟、串口、c p u 等,还要组装这些部件,能够使这些部件很好地 协调工作。在这些部件模拟中,c p u 模拟的工作量最大,c p u 拥有几十个寄存器,上百条 指令,完全手工模拟( 采用c + 十,c 等语言编写) 是相当费时和难调试的,如果采用一种符台c p u 特性的描述语言并通过工具链自动生成目标代码,可以快速模拟c p u 部件。 s m a r t - i s d l 是专i 1 用于描述指令集的描述语言,它支持多种体系结构,可以描述c p u 体系结构,描述寄存器、内存。通过s m a r t i s d l 描述语言,开发虚拟机甚至不需要开发者 2 通用指令集描述语言的设计和实现 对体系有太多深入了解,就可以快速描述c p u ,并且通过改变模板文件,可以改变目标代 码的生成,同时提供的s m a r t - i s d l 解释器在指令行为翻译过程中,出错率非常低,远低于 传统的纯手工( 使用c c + t 语言) 模拟。 1 :3 文章结构 该文的余下结构,将做如下安排: 第二章:介绍虚拟机各种概念。主要有虚拟机的定义,虚拟机模拟过程中指令集的模拟 技术和比较,还有就是在虚拟机模拟过程中代码自动生成技术。 第三章:介绍了指令集描述语言的背景和各项技术。 第四章:重点分析了s m a r t - i s d l 的设计和实现:采用x m l 作为前端表现形式以及x m l 的语法检查:s m a r t i s d l 描述模板文法分析,解释器的设计和实现。在解释器实现过程中, 应用了第四代脚本语言p y t h o n ,简化了解释器的设计和实现,并保证整个解释器执行效率 高效、扩展性好。 第五章:从实际例子出发,重点介绍s m a r t - i s d l 的应用。通过举例,说明在虚拟机模 拟中,特别在指令集模拟时,通过和c ,c 等传统语言比较,s m a r t - i s d l 表现出很大优势, 降低了程序员开发的工作量,同时也降低了开发者对体系和c p u 指令集了解程度的要求。 在有厂家i n s t r u c t i o ns e t ss p e c 说明的前提下,保证程序员可以快速、容易仿真出c p u ,最 终开发出系统级别的虚拟机或仿真器。 第六章对全文的研究作了总结从整个系统的设计和实现,总结本文在虚拟机模拟过程 种的主要贡献和不足,并对接下来的研究方向作了展望。 3 通用指令集描述语言的设计和实现 第2 章虚拟机模拟介绍 2 1 虚拟机的定义 虚拟机【1 是在单一硬件环境之上,创建若干个虚拟计算环境( 虚拟机) ,每个虚拟机将 一台仿真的、完整的计算机提供给用户( 包括仿真的c p u 、内存、总线、硬盘等) ,虚拟机 之间相互隔离,用户之间互不干扰。 虚拟机( v n 岫lm a c h i n e ) 是一个虚构出来的计算机,它是可以使多操作系统并行运行 在单个物理机器上的一种系统,能够提供更加有效的底层硬件使用。在虚拟机中,中央处理 器芯片从系统其它韶分划分出一段存储区域,操作系统和应用程序运行在“保护模式”环境 下。对于运行在虚拟机上的o s 和应用程序而言,虚拟机是透明的。虚拟机的各个部件和真 实机器是样的,它们完全不知虚拟机的存在。 一个完整的虚拟机需要模拟真实c p u 、内存、总线、硬盘等其中c p u 模拟大约占整 个模拟过程的8 0 工作量,而指令集模拟几乎是c p u 模拟的全部工作量。所以虚拟机模拟 也可以说是体系结构指令集合的模拟。除了主要的c p u 模扭外。虚拟机还需要模拟太量外 设来支持o s 或应用程序的运行,虚拟机要运行o s ,至少要模拟的外设有串口、时钟,如 果耍支持鄹络,就必须模拟网卡。图21 是虚拟机部件的最小集台。 图表2 - 1 最小虚拟机部件集合 2 2 虚拟机的指令模拟和生成技术 2 2 1 指令模拟技术 c p u 模拟是虚拟机模拟的主要部分,而c p u 棋拟除了一些中簖模拟外,其余部分几乎 就是c p u 指令集模拟,因此指令集模拟【7 】【8 】 9 的好坏直接关系到虚拟机模拟的好坏,指令 就尾c p u 指令集模拟,因此指令集模拟【7 】 8 】 9 的好坏直接关系到虚拟机模拟的好坏,指令 通用指令集描述语言的设计和实现 第2 章虚拟机模拟介绍 2 1 虚拟机的定义 虚拟机【1 】是在单硬件环境之上,创建若干个虚拟计算环境( 虚拟机) ,每个虚拟机将 一台仿真的、完整的计算机提供给用户( 包括仿真的c p u 、内存、总线、硬盘等) ,虚拟机 之间相互隔离,用户之间互不干扰。 虚拟机( v i r t u a lm a c h i n e ) 是一个虚构出来的计算机,它是可以使多操作系统并行运行 在单个物理机器上的一种系统,能够提供更加有效的底层硬件使用。在虚拟机中,中央处理 器芯片从系统其它部分划分出一段存储区域,操作系统和应用程序运行在“保护模式”环境 下。对于运行在虚拟机上的o s 和应用程序而言,虚拟机是透明的,虚拟机的各个部件和真 实机器是样的,它们完全不知虚拟机的存在。 一个完整的虚拟机需要模拟真实c p u 、内存、总线、硬盘等,其中c p u 模拟大约占整 个模拟过程的8 0 工作量,而指令集模拟几乎是c p u 模拟的全部工作量。所以虚拟机模拟 也可以说是体系结构指令集合的模拟。除了主要的c p u 模拟外,虚拟机还需要模拟大量外 设来支持o s 或应用程序的运行,虚拟机要运行o s ,至少要模拟的外设有串口、时钟,如 果要支持网络,就必须模拟网卡。图2 1 是虚拟机部件的最小集合。 图表2 1 最小虚拟机部件集合 2 2 虚拟机的指令模拟和生成技术 2 2 1 指令模拟技术 c p u 模拟是虚拟机模拟的主要部分,而c p u 模拟除了一些中簖模拟外,其余部分几乎 就是c p u 指令集模拟。因此指令集模拟【7 】【g 】【9 】的好坏直接关系到虚拟机模拟的好坏,指令 通用指令集描述语言的设计和实现 集模拟工作量也是虚拟机模拟工作量的主要参考。 虚拟机模拟从上世纪7 0 年代开始,已经经历了几十年的探索和研究。现在已经有很多 关于虚拟机模拟的论文和技术成果,这些技术主要都是围绕指令集模拟。模拟技术发展到现 在主要技术可以分为3 类: 1 直接翻译模拟 指令直接翻译是软件实现虚拟机的最基本方法,它先l o a d 目标代码,然后在本机( h o s t m a c h i n e ) 执行合适的动作( 如图) ,和真实机器一样,虚拟机通过f e t c h ,d e c o d e ,e x e c u t e 等步 骤完成指令译码和执行等工作。这种方法优点是可扩展性和可重构性比较好,而且便于o s 和应用程序调试。但由于每条指令在执行前都必须被译码( 解释) ,所以这种方法的译码开 销比较大,执行速度比较慢。 r l 图表2 2 直接翻译执行 2 编译翻译模拟 编译翻译将译码的一部分时间开销转移到c o m p l i e 阶段,从而有效地提高虚拟机的运行 效率。使用这种技术必须有s i m u l a t i o nc o m p i l e r , 而且对于每种不同的目标机模拟,c o m p i l e r 都有很大差别。它的原理就是将要模拟的目标代码先通过s i m u l a t i o nc o m p i l e r 翻译成本机 ( h o s tm a c h i n e ) 指令这样虚拟机就可以直接取指令和执行译码过程完全被移到了编译时间。 这种方法对于虚拟机来讲,运行速度是最快的,但是它在翻译阶段,丢失了“原目标2 进制 代码”的所有信息,在虚拟机中没法进行p r o f i l e 和调试,。对于试验和科研有很大缺陷,所 以这种模拟技术在实际工作中很少被采用。 闰表2 3 编译翻译执行 3 动态翻译模拟 动态翻译技术是现在虚拟机中总体模拟效率最好的一种模拟技术,它是在程序执行过程 中进行翻译,并且将已经翻译好的指令c a c h e 起来,这样第二次遇到该指令就不用再翻译。 5 通用指令集描述语言的设计和实现 也就是说程序被动态分析和翻译成目标机器的b i n a r y 代码。动态翻译技术克服了静态翻译 技术的一些缺点,比如:静态技术因为是翻译执行,所以必须在自己的代码中控制寄存器 ( r e g i s t e r ) 和内存位置( m e m o r y ) ,还有动态技术支持代码的自我调整,视指令执行频率,动 态调整执行策略。但是动态翻译技术在实现上比前两种方法要复杂。 2 2 2 代码生成技术 图表2 _ 4 动态翻译执行 不管什么体系结构,指令集无非是一些数据操作、内存操作、寄存器操作、l o 操作、 异常操作,对于一条指令,它都会有o p c o d e 、条件位、操作数等组成,比如m i p s s 指令 地r 格式和a r m 指令格式: o pr s眉r曰ds h a m tf u n c t 655 5 5 6 m i p s 指令r 格式 例姐如咄h - a r m 指令格式 所咀现在流行的c p u 指令集都会有很多相似性。 随着虚拟机模拟技术的发展,指令模拟部分的代码生成技术也有了长足发展,总的来讲, 有以下几种生成技术: i ) 纯手工编写:手工编写所有的模拟函数。这种方法应该是最基本和最早的方法这种早 期的方法存在很多弊端。 繁琐机械:一种体系结构通常有几百甚至上千条指令,对指令的实现存在大量机械 劳动 易于出错:指令集模拟通常是对位进彳亍操作,程序员都是和数字打交道,人工编写 非常易于出错 晕构性差:由于指令集模拟的代码通常有成百上千个函数组成,一旦虚拟机核心部 分修改,这部分的修改工作量极大 2 ) 利用宏展开:大量利用c 的宏特性减少工作量。这种方法利用脚本和虚拟机的核心接口 ( 宏) 自动生成大量宏代码减少人工编码。但是这种方法也存在明显的缺陷: 6 通用指令集描述语言的设计和实现 代码的可读性差:减少了代码编写工作量但是显著降低代码可读性 代码难于调试:依赖宏展开的代码十分难以调试 3 ) 设计一套描述体系或指令集的高级语言:由于体系结构的各个部件和指令集合存在很多 相似性和共性,所以可以设计一套高级语法专门用来描述体系结构和指令集合来辅助虚拟机 模拟,就像硬件描述语言v h d l 6 。s m a r t - i s d l ( i n s t r u c t i o ns e td e s c r i p t i o nl a n g u a g e ) 就是为 描述指令集而专门设计的描述语言。 2 3 本章小节 本章介绍了虚拟机和仿真器的基本概念和定义,主要介绍了指令模拟和生成技术,指令 模拟技术主要有直接翻译模拟、编译翻译模拟、动态翻译模拟几种,其中介绍了每种方法的 优缺点。本章还介绍了在模拟过程中各种代码自动生成技术,这个也是本文重点,在接下去 的章节中,主要介绍指令集描述语言和相关工具,最大限度发挥代码自动生成的优势和效率。 1 通用指令集描述语言的设计和实现 第3 章机器描述语言 随着半导体技术的发展,计算机硬件更新换代越来越快,特别在嵌入式领域,不同的应 用,硬件体系会有所不同,为了便于在这些领域进行系统和应用开发,出现了用软件模拟硬 件的技术一虚拟技术或仿真技术。随着虚拟机模拟技术的发展,人们发现虚拟机开发是一个 庞大的工程,不仅要投入很大的人力,而且在调试过程中,存在很多困难。为此,在虚拟机 模拟过程中出现了越来越多的辅助工具,来帮助虚拟机模拟者开发程序。比如像q e m u 3 1 就使用了脚本工具自动生成代码,减轻代码开发的工作量,减少代码出错率。也有专门用来 描述机器的机器语言 1 0 和体系语言a d l i l 】 1 2 】【1 3 】 1 4 】 1 5 】,硬件设计描述语言v h d l , 以及专门描述c p u 指令集的i n s t r u c t i o ns e t d e s c r i p t i o nl a n g u a g e ( 1 s d l ) 1 6 1 7 1 8 。 3 1 机器描述语言相关技术概述 在这里文章介绍一些体系描述语言的相关技术,这些技术主要是被用于软件模拟器开发 和硬件体系结构设计,在过去几十年,仿真技术不断发展,在这过程中,产生了很多体系结 构描述语言,用于帮助仿真或模拟开发。 1 m i m o l a 1 9 】 m i m o l a 设计系统是基于m i m o l a 硬件描述语言,用于模拟硬件的设计环境。m i m o l a 在 表现能力上,比i s d l 更加底层。m i m o l a 在结构描述上相对来说更加底层,因此在模拟器f 类 似用v e r i l o g 写的模拟模型) 开发中,会有很多没有必要的复杂冗长描述;当然,由于m i m o l a 非常底层。所以它的描述语言很容易合成各种硬件部件。 2 n m l 2 0 2 1 】 n m l 机器描述语言是一种高层的机器描述语言,它可以被用于代码自动生成工具。它 已经被用于了c h e s s 2 2 系统,c h e s s 系统是为描述嵌入式d s p 处理器,并自动产生代码 的系统。n m l 和i s d l 非常相似,除了n m l 在某些地方有限制处理,比如资源竞争时候的 处理。r i m e 仅限于描述合法指令,因此要使它能描述非法指令,必须结合额外的规则,最 后会导致描述语言非常不直观。n m l 在描述硬件中并产生代码的适用程度很难确定,因为 它提供了很多结构化信息用于产生代码。 3l i s a 2 3 】 l i s a 语言被用于机器描述,特别被用于自动产生快速编译型的模拟器模拟中,编译模 拟执行在第二章的指令模拟技术中已经有过介绍。根据l i s a 语言描述的结构内容,我们猜 想它也适用于机器描述,因为它没有关于任何机器描述的文档发布。然而l i s a 非常不适台 8 通用指令集描述语言的设计和实现 代码产生和反汇编,如果它被应用与本文描述的系统,( 需要有代码的译码、执行、反汇编、 统计信息等) 就没有办法。 4 i - l m d e s p l a y d o h 2 4 1 h m d e s 是一种机器描述语言,它基于一种叫p l a y d o h 的参数化结构,主要用于t r i m a r a n 编译器系统。它代表了非常通用的体系集合,甚至包括指令预测执行等复杂特性。然而由于 p l a y d o h 非常通用并包含了广泛的体系结构,它又使用了参数化的结构,因此它使用的范围 非常有限。h m d e s 同样适用于指令集的描述,但是比起i s d l 它会有更多的限制范围。 3 2 指令集描述语言 指令集描述语言i s d l ,区别于机器或体系描述语言,它仅限于指令集或c p u 描述。由 于i s d l 针对性强,所以它在指令集描述上,可以做到更加直观,更加简单同样在自动产 生代码上,也可以更加清晰和更有扩展性。比如,可以产生c p u 的执行流程,甚至可以产 生流水步骤等信息。目前,指令集描述语言大多采用标记型语法,比如在文章“i s d l :a n i n s t r u c t i o ns e td e s c r i p t i o nl a n g u a g ef o rr e t a r g e t a b i l i t y ” 1 6 】中就采用了如下所示的语法来表 示a d c 指令的行为,其中包括了指令的o pc o d e ,寄存器操作,指令周期和指令延时等信 息: s e c t i o na s s e m b l y f i e l dm a i o : a d cx y s r c ,a c c m a i n o p 。0 x 2 i i ( a c c 3 ) i ( x y s r c 4 ) ;) 。 a c c 一t 。 “ , ”。 0 0 0 0 0 0 :i n l :i n 2 :o u t :x x x x x :1 0 0 0 0 0 r o u t l _ r i n + r i n 2 ; 上例描述了a d d 指令的行为,包括了注释信息,操作的寄存器以及指令格式等信息。 作为指令集描述语言。i s d l 至少应该具有以下几点功能: 1 具有描述处理器模式的功能,一般处理器至少有两种模式,u s e r $ 1 】s u p e r v i o r ( 或k e m e l ) 两种模式,像a r m 就有7 中处理器模式,i s d l 必须很好地表现处理器的不同模式,因为 在4 i 同模式下,物理寄存器或内存系统都有差别。 2 具有描述寄存器的功能,包括寄存器种类,寄存器个数,寄存器的限制使用等等, 指令操作基本上就是两个对象内存和寄存器,当然还有一些指令会操作协处理或一些断点 指令等。功能强大的描述语言,还应该能表现如寄存器别名等特性。 3 能表现指令寻址方式,一般指令的寻址方式分为寄存器直接寻址、寄存器间接寻址、 立即数寻址等几种方式,寻址方式不同,指令表现行为有所差异,对地址的访问会有所不同。 4 能表现指令格式,指令格式主要是指令在译码过程中所用,可以通过指令的操作c o d e 和特殊位来区分不同指令指令格式还包括了操作数,地址等信息。 5 表现指令行为,指令行为就是指令执行过程中对c p u 内部状态的改变,包括寄存器 改变,内存改变甚至是其他硬件的改变等。指令行为描述是描述语言的主要功能,比如上面 的两个例子中,对a d c 指令和a d d 指令的表达。 一种优秀的描述语言还应该在以下几点给予支持更好地袁现指令集或处理器的能力, 同时也给编程人员更大的方便: 1 指令集分类,指令集分类可以让阅读和编写者更好地组织代码结构,同时在代码生 成阶段,可以更加规则地生成目标代码。 2 内存系统,如果没有内存系统的表现形式,可能有些体系结构就比较难以模拟,像 8 0 5 1 体系结构内存系统分为片内和片外内存,在表现指令行为时,有时候要指明操作的内 存是属于哪一块。 3 指令微观表现,如果要模拟处理器硬件的全部特性,包括指令流水等,就需要描述 语言有对微观行为的表示,比如指令周期,延时等特性。 4 资源限制操作,资源限制主要是指在资源有限的情况下,可能会存在资源竞争,这 个时候就需要描述语言指明哪些资源不能用,这个也是模拟像流水技术等必要的表现能力。 5 。指令行为的注释,注释是能让阅读更加方便,比如像上面的例子中, 0 通用指令集描述语言的设计和实现 d e 讯证i o f o r 也ea :d d | i 碰;:拄u c t k n 。 a d dr d ;l s ,r t r d = r sq - i t ; w h e r er d r s r ta l e 丘o mt h err e g i s t e rf i l e 就是对指令a d d 行为的注释,注释同时可以在代码生成时生成相应注释代码。也给以后维 护带来方便。 以上总结了指令集描述语言的总体特性。一种好的指令集描述语言,应该具有以上提到 的表现能力。 3 3 本章小节 本章主要介绍了与模拟器开发领域相关的描述语言技术,这些语言为开发软件模拟器和 硬件设计提供了强大的工具。和传统方式相比,这些技术对开发人员来说,显然是一把利剑, 给开发过程带来方便和帮助。本章主要分析指令集描述语言,和机器描述语言有所不同,指 令集描述语言主要用于描述处理器特性,而机器描述语言更加底层,如果用它描述指令集, 显然会有很多弊端,需要有一种单独的描述语言来表现指令集行为。在第二节介绍了指令集 描述语言的主要特性,以及它的表现形式等。 通用指令集描述语言的设计和实现 第4 章s m a r t i s d l 的设计和实现 4 1 设计目的 s m a r t i s d l 不是一种通用语言,它是一种专门用于不同体系指令集描述的语言,可以 说它是种领域描述语言,它根据指令描述特点,设计出符合指令集描述习惯的语法。 s m a r t i s d l 主要可以描述c p u 寄存器及其状态,体系结构内存结构,指令格式,各个指令 行为。s m a r t i s d l 在描述指令集行为上比其他语言更加形象直观,比如寄存器位操作是 指令运行中比较普遍的操作s m a r t i s d l 就支持这样的操作,# r e g ( 2 0 1 0 ) 在s m a r t ,i s d l 中的意义就是访问寄存器r e g 的2 0 b i t1 0 b i t ,s m a r t i s d l 还支持内存读写访问,在 s m a r t i s d l 中内存访问只需用 号。并且程序编写者可以指定访问内存的长度,像a r m , 8 0 5 1 都存在变长指令,每次f e t c h 指令有可能是8 位、1 6 位、3 2 位,这就需要语言本身支 持变睦访问。 使用s m a r t i s d l 可以降低开发虚拟机的难度和减少虚拟机开发的时间。做过仿真器和 虚拟机的人都知道,在完全模拟硬件过程中,指令模拟出错率非常高,而且调试相当麻烦, 有时候为了找出哪条指令模拟出错会花费开发者几天甚至几周时间。而s m a r t - i s d l 使用形 象的表示方法,在模拟指令行为时,直观简单、出错率低,检查出错相对容易。 s m a r t i s d l 描述语言,基本包含了指令集模拟的全部信息,包括寄存器信息、指令格 式信息、指令分类信息、内存访阿信息、指令行为等。通过收集这些信息,使用相应的解释 器或工具,自动生成代码,整个流程如下图所示: 1 2 通用指令集描述语言的设计和实现 图表4 1 s m a m t s d l 自动生成各种部件 s m a r t - i s d l 包含了如下信息,用以生成完整的指令集仿真器: 目标机器的指令格式描述,供生成译码部件使用。 指令语义描述,也就是说描述该指令的行为特点。 指令语法描述,通过语法描述

温馨提示

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

评论

0/150

提交评论