(计算机应用技术专业论文)基于nml的指令集仿真器自动生成技术初步研究.pdf_第1页
(计算机应用技术专业论文)基于nml的指令集仿真器自动生成技术初步研究.pdf_第2页
(计算机应用技术专业论文)基于nml的指令集仿真器自动生成技术初步研究.pdf_第3页
(计算机应用技术专业论文)基于nml的指令集仿真器自动生成技术初步研究.pdf_第4页
(计算机应用技术专业论文)基于nml的指令集仿真器自动生成技术初步研究.pdf_第5页
已阅读5页,还剩55页未读 继续免费阅读

(计算机应用技术专业论文)基于nml的指令集仿真器自动生成技术初步研究.pdf.pdf 免费下载

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

文档简介

华北电力大学硕士学位论文 摘要 在计算机技术发展过程中,仿真一直是一个重要的研究领域。指令集仿真器 ( 1 s s :i n s t r u c t i o ns e ts i m u l a t o r ) 是在指令集体系结构的层次上对目标机进行模 拟,i s s 不仅有助于验证处理器和编译器的设计功能和性能,还能用来评估体系 结构设计的合理性。然而,完全手工开发指令集仿真器是一项非常繁重的工作, 而且易于出错。自动生成技术的引入大大减轻了指令集仿真器的开发工作量。本 论文研究了自动生成技术,并采用 器的自动构造过程。指令集仿真器 发速度并提高其正确性与灵活性。 了坚实的基础。 构件模板的方式实现对目标处理器指令集仿真 自动生成工具的实现加速了指令集仿真器的开 论文工作为实验室日后在仿真领域的研究打下 关键词:指令集仿真器,自动生成技术,构件模板法 a b s t r a c t s i m u l a t i o ni sa ni m p o r t a n ta r e ao fr e s e a r c hd u r i n gt h ed e v e l o p m e n to fc o m p u t e r t e c h n o l o g y i n s t r u c t i o ns e ts i m u l a t o r ( i s s ) i sat o o lt h a ts i m u l a t e st h et a r g e tp r o c e s s o r o ni n s t r u c t i o n - s e ta r c h i t e c t u r el e v e l ,i s sn o to n l yh e l pt ov a l i d a t et h ep r o c e s s o ra n d c o m p i l e rd e s i g na n dp e r f o r m a n c e ,b u ta l s ou s e dt oe v a l u a t et h ea r c h i t e c t u r ed e s i g n d e c i s i o n d e v e l o p i n ga l li s sf u l lm a n u a l l yi sah e a v yw o r k l o a da n de r r o rt r e n d t h e i n t r o d u c t i o no fa u t o m a t i cg e n e r a t i o nt e c h n o l o g yg r e a t l yr e d u c e dt h ew o r k l o a dd u r i n g i s sd e v e l o p m e n t t h i sp a p e rr e s e a r c h e sa u t o m a t i cg e n e r a t i o nt e c h n o l o g ya n da d o p t s c o m p o n e n t - t e m p l a t et e c h n i q u et oa c h i e v i n gt h et a r g e tp r o c e s s o r si s sa u t o m a t i c a l l y t e c t o n i cp r o c e s s t h ei m p l e m e n t a t i o no fi s sa u t o m a t i cg e n e r a t i o nt o o l sa c c e l e r a t e s t h ei ssd e v e l o p m e n ta n di m p r o v e si t sa c c u r a c ya n df l e x i b i l i t y t h i sp a p e rl a y sas o l i d f o u n d a t i o nf o rt h ef u t u r er e s e a r c hi nt h ef i e l do fs i m u l a t i o ni nl a b o r a t o r y l i uj i n g n a n ( c o m p u t e ra p p l i c a t i o nt e c h n o l o g y ) s u p e r v i s e d b yp r o f s h a oz u o z h i k e yw o r d s :i s s ,a u t o m a t i cg e n e r a t i o nt e c h n o l o g y , c o m p o n e n tt e m p l a t e t e c h n i q u e 华北电力大学硕士学位论文 在计算机技术发展过程中,仿 ( i s s :i n s t r u c t i o n 拟,i s s 不仅有助 结构设计的合理性 而且易于出错。自 论文研究了自动生 器的自动构造过程 发速度并提高其正 了坚实的基础。 s e ts i m u l a t o r ) 于验证处理器和 。然而,完全手 动生成技术的引 成技术,并采用 。指令集仿真器 确性与灵活性。 摘要 真一直是一个重要的研究领域。指令集仿真器 是在指令集体系结构的层次上对目标机进行模 编译器的设计功能和性能,还能用来评估体系 工开发指令集仿真器是一项非常繁重的工作, 入大大减轻了指令集仿真器的开发工作量。本 构件模板的方式实现对目标处理器指令集仿真 自动生成工具的实现加速了指令集仿真器的开 论文工作为实验室日后在仿真领域的研究打下 关键词:指令集仿真器,自动生成技术,构件模板法 a b s t r a c t s i m u l a t i o ni sa ni m p o r t a n ta r e ao fr e s e a r c hd u r i n gt h ed e v e l o p m e n to fc o m p u t e r t e c h n o l o g y i n s t r u c t i o ns e ts i m u l a t o r ( i s s ) i sat o o lt h a ts i m u l a t e st h et a r g e tp r o c e s s o r o ni n s t r u c t i o n - s e ta r c h i t e c t u r el e v e l ,i s sn o to n l yh e l pt ov a l i d a t et h ep r o c e s s o ra n d c o m p i l e rd e s i g na n dp e r f o r m a n c e ,b u ta l s ou s e dt oe v a l u a t et h ea r c h i t e c t u r ed e s i g n d e c i s i o n d e v e l o p i n ga l li s sf u l lm a n u a l l yi sah e a v yw o r k l o a da n de r r o rt r e n d t h e i n t r o d u c t i o no fa u t o m a t i cg e n e r a t i o nt e c h n o l o g yg r e a t l yr e d u c e dt h ew o r k l o a dd u r i n g i s sd e v e l o p m e n t t h i sp a p e rr e s e a r c h e sa u t o m a t i cg e n e r a t i o nt e c h n o l o g ya n da d o p t s c o m p o n e n t - t e m p l a t et e c h n i q u et oa c h i e v i n gt h et a r g e tp r o c e s s o r si s sa u t o m a t i c a l l y t e c t o n i cp r o c e s s t h ei m p l e m e n t a t i o no fi s sa u t o m a t i cg e n e r a t i o nt o o l sa c c e l e r a t e s t h ei ssd e v e l o p m e n ta n di m p r o v e si t sa c c u r a c ya n df l e x i b i l i t y t h i sp a p e rl a y sas o l i d f o u n d a t i o nf o rt h ef u t u r er e s e a r c hi nt h ef i e l do fs i m u l a t i o ni nl a b o r a t o r y l i uj i n g n a n ( c o m p u t e ra p p l i c a t i o nt e c h n o l o g y ) s u p e r v i s e d b yp r o f s h a oz u o z h i k e yw o r d s :i s s ,a u t o m a t i cg e n e r a t i o nt e c h n o l o g y , c o m p o n e n tt e m p l a t e t e c h n i q u e 声明尸明 本人郑重声明:此处所提交的硕士学位论文基于i 山几的指令集仿真器自动 生成技术初步研究,是本人在华北电力大学攻读硕士学位期间,在导师指导下 进行的研究工作和取得的研究成果。据本人所知,除了文中特别加以标注和致谢 之处外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得华 北电力大学或其他教育机构的学位或证书而使用过的材料。与我一同工作的同志 对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。 学位论文作者签名:刻立掏 e l 期: 关于学位论文使用授权的说明 o 口譬。;“ 本人完全了解华北电力大学有关保留、使用学位论文的规定,即:学校有 权保管、并向有关部门送交学位论文的原件与复印件;学校可以采用影印、缩 印或其它复制手段复制并保存学位论文;学校可允许学位论文被查阅或借阅: 学校可以学术交流为目的,复制赠送和交换学位论文;同意学校可以用不同 方式在不同媒体上发表、传播学位论文的全部或部分内容。 ( 涉密的学位论文在解密后遵守此规定) 作者签名:童:l 盘掏 日 期:! ! 望:! :乡 鬟! 一 日期:q “弘纠汐 华北电力大学硕士学位论文 1 1 研究背景 第一章绪论 在计算机技术发展过程中,仿真一直是一个重要的研究领域。当构建一个新 系统时,有效地测试和验证新系统的行为和正确性十分重要。利用仿真器,硬件 生产厂商可以在构建系统之前就对硬件的正确性及性能进行验证,从而大大降低 开发的成本和时间。除了用于硬件验证,仿真器还可以使得软件开发商在样机生 产之前就能够进行软件开发,从而使软、硬件同时面世成为可能。另外,仿真器 可以在程序运行时收集机器的运行信息,帮助分析系统的行为,从而进行相关的 优化。 纯软件的仿真器有许多种,如模拟一个芯片时序逻辑的模拟器、只模拟c p u 指令的模拟器、模拟整个硬件开发板的模拟器、模拟一个p d a 的模拟器等等。已 经存在一些纯软件的仿真器或模拟器投入实际应用,如s t a n f o r d 大学的s i m o s 模 拟器,它仿真的是m i p s 系列c p u 和相关外设,可以在其上运行s g i 公司的i r i x 操作系统和软件。p s i m 是一个仿真p o w e r p c 指令集的模拟器,目前支持简单的 命令行应用程序。m 6 8 k 处理器模拟器x c o p i l o t ,通过x c o p i l o t 可以给基于p a l m o s 的软件开发者提供一个模拟开发环境。其它一些商业的仿真软件如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 和硬件,功能强大,可用于硬件和系统软件的评测。 仿真通常可以在4 个层次上进行,从高到低依次为指令集层、组织层、寄存 器传送层和逻辑层【l 】。指令集层仿真是最高层次上的仿真,其仿真的粒度最大。 指令集仿真器【2 j ( i s s :i n s t r u c t i o ns e ts i m u l a t o r ) 是在指令集体系结构( 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 ) 的层次上对目标机进行模拟,它只给出指令的结果, 而不仿真功能部件的具体执行机制【3 】。指令集仿真器是现代处理器设计和软件设 计过程中不可缺少的一部分,i s s 不仅有助于验证处理器和编译器的设计功能和 性能,还能用来评估体系结构设计的合理性,因此,i s s 在现代嵌入式系统的发 展中扮演了非常重要的角色。指令集仿真器主要应用于样机研制出来之前配合软 件开发,以及体系结构相关的教学研究工作中【4 1 。 华北电力大学硕士学位论文 1 2 研究目的和意义 实验室一直致力于$ o c 系统级设计及仿真的研究,已经在功能级建模、仿真 及性能分析开展了很多的工作。实验室开发的a r m 系列的指令级仿真器获得了 较高的仿真速度,而且作为核心部件已经被应用于a r m v 5 硬件开发平台仿真的 构造中。但是,目前指令集仿真器的开发工作完全采用手工编码的形式,这不但 是一项非常繁重的工作,而且易于出错。一般来说,开发仿真器不仅需要花费数 月的时间,而且现代可编程处理器体系越来越复杂,需要花费大量的时间来进行 仿真器正确性的验证。即便如此,在使用该仿真器的时候,也不能认定其已经是 正确的。并且数字消费类产品更新换代迅速,要求减少上市时间才能抢占市场。 这些都对指令集仿真器的开发有着负面的影响。如何快速、高质量地建立起指令 集仿真器成为仿真领域迫切需要解决的问题。指令集仿真器的结构比较固定,这 就为指令集仿真器自动生成提供了前提,自动生成技术的引入不但可以大大减少 开发的工作量,并且易于修改排错。因此,论文的目的是构建一个能够根据用户 描述自动生成目标处理器指令集仿真器的工具,即指令集仿真器的自动生成工具。 与手工开发指令集仿真器相比,使用自动生成工具构造目标处理器指令集仿真器 具有如下特点:首先,根据目标处理器的描述文件来生成仿真器各个部件不易出 错。其次,修改方便,当处理器指令集发生变化时只需对目标处理器的描述文件 即可。采用自动生成技术,开发人员只需修改目标处理器指令集描述模板,就可 以自动生成新的指令集仿真器。这样就大大的缩短了指令集仿真器的开发周期, 从而提高了指令集仿真器构造的灵活性。 实验室在指令集仿真器的设计开发和仿真速度提高等方面积累了丰富的经 验,这些都为本次毕设的研究工作打下了坚实的基础。而且指令集仿真器自动生 成技术的研究会进一步推动实验室在仿真领域的研究工作,最终产品可以进一步 应用到教学实践中,提高教学的质量,降低教学成本。此外,仿真器的应用领域 相当广泛,是s o c 设计的重要组成部分,论文成果也将应用于实际的s o c 设计 过程中。 1 3 论文研究方法及主要工作 本论文的工作思路来源于编译过程,主要的工作分为自动生成工具的前端构 造和后端构造两个主体部分。以下为主要工作内容。 ( 1 ) 指令集仿真器自动生成工具框架设计。根据指令集仿真器自动生成工具 的工作流程确定其框架结构,定义划分指令集仿真器自动生成工具前端和后端工 作任务。 2 华北电力大学硕士学位论文 ( 2 ) 处理器描述模板的构造。通过分析处理描述模型的构造,选择适用于处 理器指令集描述的语言,分析该语言的描述文法及建模过程。 ( 3 ) 指令集仿真器自动生成工具前端实现。分析定义指令集仿真器自动生成 工具前端实现中完成的主要任务以及前端功能的实现。 ( 4 ) 指令集仿真器自动生成工具后端实现。分析定义后端与前端的接口,以 及目标指令集仿真器的框架结构,后端功能的实现。 ( 5 ) 设计验证。通过对具体处理器的描述模型生成对应的指令集仿真器来对 本文设计进行验证。 ( 6 ) 仿真性能优化。实验室在指令集仿真器性能的提高方面具有丰富的经验, 将这些技术融入到自动生成技术,就可以使得目标指令集仿真器具有高效的仿真 性能。 1 4 论文结构 根据论文的主要工作将对该文的余下结构做如下安排。 第二章将对论文涉及的相关技术进行介绍,主要包括指令集仿真器的介绍, 自动生成技术介绍等。 第三章为论文的主体部分,该章重点分析了指令集仿真器自动生成技术在论 文中的实现方法以及构造过程。 ( 1 ) 介绍了指令集仿真器自动生成工具的整体框架。 ( 2 ) 介绍了处理器指令集描述模型的构造。 ( 3 ) 介绍了自动生成工具的前端及后端实现细节。 第四章为设计验证及对目标指令仿真器性能的提高,通过对具体处理器进行 建模最终生成正确的指令集仿真器对本次论文的设计进行验证。尝试将实验室已 有的提高指令集仿真器仿真速度的相关技术与自动生成技术的实现相结合,使得 生成的目标处理器指令集仿真器更加高效。 第五章对全文的工作做出总结,从整个自动生成工具的设计和实现,总结本 文在软件仿真器模拟过程中的主要贡献和不足,并对接下来的研究方向做出展望。 3 华北电力大学硕士学位论文 2 1 指令集仿真器 第二章相关技术介绍 指令集仿真器( i s s :i n s t r u c t i o ns e ts i m u l a t o r ) 是运行在宿主机上的一种工 具,它用来模仿在目标机器上应用程序的运行过程【5 】。i s s 是现代处理器设计和 软件设计过程中不可缺少的一部分,也是通用计算机发展必不可少的工具。它不 仅有助于验证处理器和编译器的设计功能和性能,还能用来评估体系结构参数设 计的合理性【3 1 。在嵌入式系统设计过程中,它同样有着非常重要的地位。目前, 大部分嵌入式软件集成开发环境都提供处理器的指令集模拟器,使得用户在无需 任何硬件的情况下即可在p c 机上完成大部分软件调试工作。而在嵌入式系统软 硬件协调设计中,作为软件模拟器,指令集模拟器是软硬件协同模拟的重要组成 之一,利用软硬件协同模拟技术设计者能够在硬件原型构造出来之前就可对包含 软件和硬件的整个嵌入式系统的功能进行验证,对系统体系结构设计,软硬件功 能划分进行评价。根据实现方法的不同指令集仿真器可分为解释型仿真和编译型 仿真【5 1 ,为了提高解释型仿真的速度问题,已将编译型仿真技术应用到解释型指 令集仿真中,形成了一种新的混合型指令集仿真策略【6 j 。 2 1 1 基于解释的指令集仿真策略 传统的基于解释的指令集仿真策略是到目前为止应用最为广泛的一种指令集 仿真器实现技术。它在内存中建立一个数据结构来代表目标处理器的状态,然后 如图2 1 所示,它进入一个循环,循环体包括取指,解码,分派和执行四部操作。 其中,取指是从内存中取出一个指令字,解码是分析取出的指令字并从中提取出 操作码和操作数,分派是根据操作码来决定正确的执行单元,执行则是通过指令 的语义来更新处理器的状态( 即更新前面提到的那个数据结构) 。由于该仿真策 略简单而且灵活性好,几乎所有的商业化的指令集仿真器都是采用这一策略实现 的。但是,这种仿真策略的缺陷也是显而易见的,速度的劣势使得基于解释型策 略的仿真器性能低下。解释型指令集仿真器工作原理如图2 1 所示。 4 华北电力大学硕士学位论文 匕忙 i指令字 卜+ i 取译 分执 址码 派行 程序存储 器 茗一 _ _ - _ _ _ 图2 1 基于解释型的指令集仿真策略 2 1 2 基于编译的指令集仿真策略 由于模拟过程中需要耗费大量时间用于指令译码,解释型模拟器速度往往很 有限。在对速度要求比较高的情况下,为了克服解释型模拟器在速度方面的不足, 通常采用编译型技术构造指令集模拟器来提高模拟速度。编译型技术通过将目标 指令翻译为用于操作目标机状态的一组宿主机指令来降低运行时间,被模拟的机 器状态通常保存在宿主机的全局存储空间中,编译型指令集模拟器的工作原理如 图2 2 所示。 宿主机指令字j i 蛰i l 谭e 宿主机代 i 一 码 二銮垂二 王妇 图2 - 2 基于编译的指令集仿真策略 基于编译的仿真策略把解码的开销转移到了编译时,所以可以获得比基于解 释的仿真策略更快的速度。但是采用编译策略是基于这样一种假设,即所有的程 序代码在仿真之前都是可知的,并且在运行时是静态运行的。正是由于这种假设, 很多的应用领域被排除在基于编译的仿真器的应用范围之外。例如,具有两套指 令集并可在运行时随意切换的a r m 体系结构。 由于解释型的模拟器实现起来比较简单,同时,由于指令是以解释的形式执 行的可以很方便地实现程序调试,因此,市场上大多数指令集模拟器都是解释型 的。 5 华北电力大学硕士学位论文 2 1 3 混合指令集仿真策略 解释执行的仿真策略虽然实现简单且灵活,但是速度太慢,而先编译后执行 的仿真策略虽然提高了速度,但是不够灵活,实现的难度也较大。针对这两种策 略的优劣,提出了一些折衷的策略以期同时获得这两种策略的优点。具有代表性 的有j i t c c s 和i s c s 技术【3 j 。其中j i t c c s 的全称是j u s t i n t i m ec a c h ec o m p i l e d s i m u l a t i o n ,它的方法是将每条执行后的指令的解码信息存放在缓存中来给下次可 能的这条代码的重复执行提供重用,从而大大减少了解码的时间和次数。而i s c s 的全称是i n s t r u c t i o ns e tc o m p i l e ds i m u l a t i o n ,它的主要策略还是使用了编译执行 的技术,不过i s c s 会在实际执行之前会检查要运行的指令是否在前面的运行中 被修改了,如果是则调用模块来重新解码修改后的指令,以此来增加编译执行的 灵活性。这两种仿真策略在保证仿真灵活性的同时,加快了仿真的执行速度,因 此已经逐步应用到了现在商业应用的指令集仿真器中。本实验室在对a r m v 5 的 指令集仿真器设计中采用了指令c a c h e 技术来提高解释型指令集仿真速度慢的问 题,该技术是j i t c c s 技术的一种实现。 2 2 自动生成技术 2 2 1 自动生成技术概述 国内外有很多研究机构都在致力于仿真器自动生成技术方面的研究,其中比 较著名的有瑞典计算机科学院计算机及网络实验室开发的s i m g e n ,哈佛大学计 算机系开发的n e w j e r s e ym a c h i n e c o d et o o l k i t 6 1 ,美国威斯康星大学开发的 f a c i l e 7 】和c o w a r e 公司推出的l i s a 工具集【引。 仿真器自动生成技术通常有两种思路,根据其特征可分为构件组装法和模板 构造法【。 ( 1 ) 构件组装法。所谓构件组装法,是基于面向对象的方法,将仿真器的各 个部件做成构件放在构件库中,在实际应用时通过组装技术有选择地将各个构件 组装起来,从而生成一个仿真器。可以看出,采用这种方法生成仿真器并不是真 正意义上的仿真器自动生成,而是一种伪自动生成技术,因为实际上仿真器的各 个部件代码还是手工编写的。该方法的优点是当仿真的系统不包含新设计的部件 时,可以比较容易地将构件库中的构件组装,快速生成仿真器。但是具有明显的 缺点,就是仿真器的各个部件实际仍然为手工开发,易于出错,难于修改。 6 华北电力大学硕士学位论文 ( 2 ) 模板构造法。模板构造法是根据对特定体系结构的描述,自动生成仿真 器代码的方法。该方法采用的技术是真正意义上的仿真器自动生成技术。该方法 的优点是,仿真器的部件完全是自动生成,不易于出错,便于修改。 结合构件组装法和模板构造法,北京航空航天大学软件工程研究所提出了基 于构件模板法的自动生成技术【6 】。构件模板法结合了构件组装法和模板构造法的 优点,对于仿真器开发中某些规则性强,并且经常发生变化的部件采用模板构造 法自动生成,其他部件进行手工编码即构件法,最终共同形成仿真器开发中各种 部件的构件库。 2 。2 2 描述模板及处理器描述语言 采用模板构造的方法自动生成指令集仿真器,必须有一个模板来描述目标处 理器特定的指令集体系结构。指令集体系结构( i s a ) 从汇编程序员的角度描述 了处理器的特征。模板和生成部件的关系如图2 3 所示。 图2 3 描述模板与生成部件 其中描述模板描述了指令集结构,仿真器生成工具以描述模板为输入,生成 各种目标仿真器部件的代码,如编译器、汇编器、反汇编器等。 指令集描述模板包括了用于编写汇编程序的信息,它隐藏了执行的细节,展 现了体系结构的抽象视图。具体说来,描述模板应包括如下内容:必须对该系统 的指令格式进行描述,该描述是生成译码器的基础;必须对指令的语义进行描述, 即定义该指令执行的操作;需要对指令的语法进行描述用以生成汇编器和反汇编 器;要描述系统的体系结构方面的特征,包括寄存器、内存、高速缓存、流水线 等信息【9 1 。 为了更好的对目标处理器体系结构进行描述,不少研究机构都定义了适合于 自己开发工作的处理器体系结构描述语言。其中,使用较多的是m i m o l a 1 0 】、 i s d l 1 1 1 、e x p r e s s i o n 1 2 1 、l i s a t 8 1 、n m l 1 3 1 和f a c i l 7 1 。在国内浙江大学也提出了 s m a r ti s d l 描述语言【9 】,该语言专门用于处理器指令集的描述。 7 华北电力大学硕士学位论文 2 2 3n m k 指令集描述语言 指令集描述语言区别于机器或体系描述语言,它仅限于指令集或c p u 描述。 由于指令集描述语言针对性强,所以它在指令集描述上,可以做到更加直观,更 加简单,同样在自动产生代码上,也可以更加清晰和更有扩展性。n m l 描述语言 是指令集描述语言的一种,它可以被用于代码自动生成工具。n m l 描述语言已经 被成功应用于c h e s s 系统的构建,c h e s s 系统是为描述嵌入式d s p 处理器,并 自动产生代码的系统【1 4 1 。 n m l 描述语言是一种专门用于不同处理器体系中指令集描述的语言,n m l 描述语言根据指令描述特点,设计出符合指令集描述习惯的语法,该描述是微处 理器结构描述、行为描述以及指令集描述的综合。结构描述部分为定义目标机的 结构单元,例如寄存器、内存和功能部件等。指令集描述包括指令集的结构、每 个指令的二进制代码、汇编语法以及功能等。行为描述包括描述了指令运行时存 储单元中数据的转移和流水线的情况。为了实现流水线及其类似的概念,n m l 描 述语言引入了瞬时存储结构( t r a n s i t o r ys t o r a g e s ) 的概念【1 5 】,瞬时存储体中的数 值仅在固定的时间内有效。指令集仿真器仅在功能上对目标处理器进行仿真,其 内部实现不予考虑,所以论文实现过程中不必实现对n m l 描述语言中对流水线和 时序等的支持。 一条指令的描述通常具有3 个属性:行为( a c t i o n ) 、汇编语法( s y n t a x ) 、 二进制代码( i m a g e ) 。用n m l 描述语言构造的一个简单处理器模板如图2 - 4 所 示。 8 华北电力大学硕士学位论文 d e f i n i t i o n so fc o n s t a n t su s e di nt h ed e s c r i p t i o n l e t r e g s = 3 l e tm e m s i z e = 1 6 d e f i n i t i o n so f t y p e su s e di nt h ed e s c r i p t i o n t y p ei n d e x2c a r d ( r e g s ) t y p ew o r d = c a r d ( 1 6 ) r e s o u r c ed e c l a r a t i o n r e gr 2 r e g s ,w o r d r e gp c i i ,w o r d 】 m e mm m e m _ s i z e ,w o r d d e l t a i t i o n so f a d d r e s s i n gm o d e s m o d em o v e m o d e2m e r e _ i n d e xir e g _ m o v e m o d er e g _ m o v e ( i :i n d e x ) = r i 】 s y n t a x = f o r m a t ( “i t d ”,i ) i m a g e = f o r m a t ( “0 2 b ”,i ) m o d em e m i n d e x ( i :i n d e x ) = m 【r i 】 s y n t a x = f o r m a t ( “( r d ) ”,i ) i m a g e = f o r m a t ( “1 2 b ”,i ) m o d er e g i s t e r ( i :i n d e x ) = r i 】 s y n t a x = f o r m a t ( “r d ”,d i m a g e = f o r m a t ( 。2 b ”,i ) d e f i n i t i o n so fi n s t r u c t i o n s o pi n s t r u c t i o n ( t :t y p e _ i n s t ) s y n t a x2t s y n t a x i m a g e2t i m a g e a c t i o n 2 p c = p c + i ; o pt y p e _ i n s t2m o v eo pa l u o pib r a n c h _ o p o pm o v e _ o p ( s :m o v e _ m o d e ,d :m o v e m o d e ) s y n t a x2f o r m a t ( “m o v e s ,s ”,s s y n t a x ,& s y n t a x ) i m a g e2f o r m a t ( “l o s s ”,s i m a g e ,d i m a g e ) a c t i o n = d - s ;) o pa l u _ o p ( t :t y p e _ a l u ) s y n t a x = f o r m a t ( “s ”,t s y n t a x ) i m a g e = f o r m a t ( “0 s ”t i m a g e ) a c t i o n = t a c t i o n ; o pt y p e _ a l u 2 a d ds u b o pa d d ( s i :r e g i s t e r ,s 2 :r e g i s t e r ,d :r e g i s t e r ) s y n t a x 。f o r m 砜“a d d s ,s ,s ”,s1 s y n t a x , s 2 s y n t a x ,d s y n t a x ) i m a g e5f o r m a t ( “1 s s s ”,s 1 i m a g e ,s 2 i m a g e ,& i m a g e ) a c t i o n = d = s l + s 2 ; o ps u b ( s1 :r e g i s t e r ,s 2 :r e g i s t e r ,d :r e g i s t e r ) s y n t a x5f o r m a t ( “s u b s ,s ,s ”,s1 s y n t a x ,s 2 s y n t a x ,d s y n t a x ) i m a g e 5f o r m a t ( “0 s s s ”,s 1 i m a g e ,s 2 i m a g e 。d i m a g e ) a c t i o n = d = sl - s 2 ; o pb r a n c h _ o p ( t :c a r d ( 6 ) ) s y n t a x = f o r m a t ( j u m p $ + d ”,0 i m a g e = f o r m a t ( “l1 6 b ” t ) a c t i o n = p c = p c + t - 1 ; 图2 - 4n m l 描述语言构造的简单处理器模板 9 华北电力大学硕士学位论文 该处理器具有8 个通用寄存器,一个p c 指针和6 4 k 的程序存储空间。寻址 方式有寄存器直接寻址和寄存器间接寻址。该处理器中有三类指令:数据传送指 令、数值运算指令和跳转指令。n m l 指令集描述语言对目标处理器的描述是一种 树状的结构,分为3 个部分:指令集总的定义,描述每条指令的共性,是树的根 部;指令集由上到下地描述,例如,可以将指令分为存储器访问指令、运算指令、 转移指令等,再逐渐细分下去,这是树的枝干部分;每条指令的具体描述,这是 树的叶子部分。上述简单处理器描述模板抽象出的树形结构如图2 5 所示。 图2 5 处理器描述模板抽象树 。1 2 b ”- i “r o “i ”,i n i 】) n m l 描述语言基本包含了指令集仿真器开发过程中所需的全部信息,包括寄 存器信息、指令格式信息、指令分类信息、内存访问信息、指令行为等,通过收 集这些信息,使用相应的解释器或工具,自动生成代码。而且n m l 描述语言非常 直观,描述结构中的文法和控制结构与c 语言类似,易于开发人员上手。论文采 用n m l 描述语言作为本论文中处理器模板的构造语言。 1 0 华北电力大学硕士学位论文 第三章指令集仿真器自动生成工具详细设计 3 1 构件模板法与指令集仿真器 构件模板法将自动生成技术中的构件组装法和模板构造法有机的结合起来, 对于仿真器开发中某些规则性强,并且经常发生变化的部件采用模板构造法自动 生成,其他部件进行手工编码,共同形成构件库。对于整个仿真器采用组装的方 法,最终将构件库中的各个部分组装起来生成一个仿真器。 构件模板法结合了构件组装法和模板构造法的优点,如果系统只有某些部件 进行了修改,则可修改相应的模板生成新的部件再将构件库中原有的部件和新生 成的部件组装起来,从而形成新的仿真器。该方法不仅减少了构件组装法中手工 开发仿真器部件的工作量,提高了仿真器部件的重用性,避免了仿真器开发中的 重复性工作,而且减少了仿真器自动生成工具开发的工作量和难度【1 6 】。 论文将构件模板法应用于指令集仿真器的自动生成过程中,其中指令集仿真 器的工作流程实现如图3 1 所示。 l o a d e r ( ) ; 应用程序加载 i s si n i t o ; 脂令集仿真器初始化 w h i l e ( r u n n i n g ) i s s 取指f e c c h o ; i s sd e c o d e ( ) ; 辑码 l s s _ c o m p l e t e o ;执行,状态更新 i s s 慨( ) ;j 毕放空间 图3 1 指令集仿真器工作流程 指令集仿真器工作流程的划分比较固定且流程中每部分的功能定义明确,通 常,对于不同的处理器指令集体系结构,其目标仿真器的译码部分和服务程序部 分经常发生变化,手工开发的工作量大,且不易于修改【1 7 】。相对译码部件和服务 程序部件来说其它部件的手工开发代码量不大。因此,在指令集仿真器的自动生 成过程中自动生成器应该能够根据一个指令集体系结构的描述模板来自动生成译 码和服务程序部分。程序加载部件和取指部件等采用构件组装法。采用构件模板 法生成的指令集仿真器结构如图3 2 所示。 华北电力大学硕士学位论文 图3 2 指令集仿真器结构 仿真器框架主要包括仿真器的初始化代码、取指、译码、执行等部件。其中 阴影部件的生成采用模板构造法,主要包括译码部件和服务程序。其余为手工开 发的部件。将这些自动和手工生成的部件同仿真器的框架组装起来,便形成了一 个基本的指令集仿真器。图3 2 描述了在指令集仿真器的自动生成过程中构件模 板法的应用。由于取指部件等采用构件法生成的部件实现简单,在本次论文中将 不做讨论,论文研究工作的重点在于译码部件和服务程序的自动生成这两个部分, 即模板法在指令集仿真器译码部件和服务程序中的实现。 3 2ais s g 工作流程 结合构件模板法,论文针对r u m l 描述语言提出了指令集仿真器自动生成工具 a i s s g ( a u t o m a t i ci n s t r u c t i o ns e ts i m u l a t o rg e n e r a t o r ) ,a i s s g 是一个软件工具 集,它包括i r g 和g e n 两个独立的工具。a i s s g 的工作流程如图3 3 所示。 1 2 华北电力大学硕士学位论文 图3 3a i s s g 工作流程 前端实现 l j l 后端实现 上 此处引入了编译原理中的相关概念对a i s s g 工作流程进行解释。a i s s g 的前 端实现工具为i r g ,该工具为n m l 描述语言的词法和语法分析工具的组合,用来 提取和收集目标处理器描述模板中的相关信息,并以一种中间表示的形式进行存 储。i r g 实现了从n m l 描述语言对处理器指令集描述的个性信息到实现指令集仿 真器自动生成所需共性信息的抽象和存储过程。a i s s g 的后端实现工具g e n 以前 端生成的目标处理器描述中间表现形式为输入,生成指令集仿真器库中的各部分 构件代码实现。最后将后端过程中生成的代码与手工开发的外部模块代码通过 l i n u x 提供的编译工具g e e 编译生成用于构造目标处理器仿真器的构件函数库。 在实际应用中最终用户只需提供用n m l 描述语言构造的目标处理器描述模板,通 过自动生成工具a i s s g 用户就可以获得构造目标处理器指令集仿真器时所需各 种部件的库函数接口,用户从库中直接调用所需部件来实现最终的指令集仿真器。 图3 3 左侧为指令集仿真器库自动生成过程中生成的各种文件。 3 3 前端生成工具实现 3 3 1ie x & y a c c 相结合的词法和语法分析器生成 在前端工具i r g 的实现过程中,论文借助y a c e 完成n m l 描述语言语法分析 工具的构造。y a e c 代表y e ta n o t h e rc o m p i l e rc o m p i l e r ,将任何一种编程语言的 1 3 一上啧上嘲l。上呲呲上啧上呼t黜 华北电力大学硕士学位论文 所有语法翻译成针对此种语言的y a c c 语法解析器,并采用巴科斯范式( b n f : b a c k u sn a u rf o r m ) 来书写【1 钔。 计算机的输入通常具有某种结构,y a c c 提供了一个对计算机程序的输入进行 结构化的通用工具。y a c c 的用户做出输入处理的功能说明,它包括描述输入结构 的一组规则,识别出这些规则时要调用的代码和进行基本输入工作的低级程序。 然后,由y a c c 产生一个控制其输入过程的函数,该函数叫分析程序,它用来调 用用户提供的低级输入程序( 词法分析程序) ,从而从输入流中找出基本项( 单 词,即编译中的终结符) 来。根据输入结构的规则( 文法规则) ,对这些单词加 以组织。当某条规则被识别出来后,就调用用户对应于这条规则所提供的代码称 为一个动作,动作具有回送值和利用别的动作值的能力。y a c c 把规范说明文件转 换成一个c 语言程序,这个程序根据所定义的规范说明对输入流进行分析【i j 。 y a c c 所需的用来完成用来完成基本输入工作的低级程序论文采用l e x 完成, l e x 是l i n u x 提供的一种生成词法扫描器的工具,词法扫描器是一种识别文本中的 词汇模式的程序。论文实现过程中l e x & y a c c 相配合使用如图3 4 所示。 目标处理器n m l 描 述模型 - - - _ n m l 词法规则n m l 语法规则 图3 4l e x & y a c e 相结合 与手工开发词法语法分析器相比较,利用l e x & y a c c 相结合的方式节省程序 员开发的时间,且生成的词法和语法分析器正确性高。l e x & y a c c 相结合的方式被 广泛的应用于实际编译器开发过程中前端词法和语法分析器的设计过程中【1 8 1 。 3 3 2n m k 描述语言文法分析 利用y a c c 构造语法分析器的过程中目标语言的文法规则是重要的输入信息, 在n m l 描述语言中,对指令集的描述采用层次化的结构

温馨提示

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

评论

0/150

提交评论