欢迎来到天天文库
浏览记录
ID:32901364
大小:1.19 MB
页数:3页
时间:2019-02-17
《面向多目标的指令集模拟技术》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、面向多目标的指令集模拟技术摘要:针对传统指令集模拟器的目标依赖性,提出基于虚指令集的多目标指令集模拟技术。采用解释型模拟策略,利用虚指令集技术优化虚指令集构造,进一步设计出面向多目标的指令集模拟器。实验结果证明该技术具有快速、灵活、可重用等特性,该模拟器在后续工作和兼容性方面优于传统模拟器。1概述指令集模拟器(InstructionSetSimulator,ISS)是在本地计算机环境下模拟其他处理器上程序运行过程的工具。前者被称作宿主机,后者被称作目标机,目标机通常是不存在或者是当时不可用的,它通过模拟每条指令在目标处理器上
2、的执行效果来模拟目标机程序,是目标处理器的软件模拟器[1]。指令集模拟器是处理器和嵌入式系统设计中的重要工具,是进行系统体系结构软件设计评估、系统软件设计开发及软硬件协同开发的有利工具。一个传统的指令集模拟器只能针对一个或几个同型号的处理器,而不同的处理器需要不同的模拟器,这是制约其发展的重要因素。本文通过设计一种通用的虚拟指令集,摆脱对目标指令集的依赖,实现针对多目标可扩展的指令集模拟[2]。2模拟策略在经典的VanNeumann结构的计算机中,程序执行过程可分为4步:取指令,分析指令,执行和获得下一条指令地址。在使用软件
3、模拟时,核心过程是分析指令和执行指令,将要执行的目标指令集代码译码转换为本机支持的指令序列,在本地执行代码。指令集模拟器根据实现方式的不同,分为解释型模拟器和编译型模拟器[3]。解释型模拟方法是在宿主机内存中建立一个数据结构来表示目标机的状态,宿主机根据目标机的指令对该数据结构进行相应操作,代表目标机改变状态,从而模拟目标机的具体实现过程。其主体是一个取指、译码、执行的循环,即从内存中读出一个指令字,分析指令并生成指令的操作码,通过调度和根据指令语义来运算并更新处理器状态。其流程如图1所示。编译型模拟器由于预先进行了一系列预
4、处理,模拟时直接运行宿主机指令,其性能较高,但编译型模拟器一般仅能模拟静态代码,对于在运行时动态产生或修改代码的应用程序,如操作系统等无法正常模拟。解释型模拟器由于采用“解释”的形式逐条模拟指令,性能一般较低,但解释型模拟器仿真灵活性较高,便于调试跟踪,易于实现,因此,大多数指令集模拟器都采用解释型模拟策略。考虑上述优点,本文采用解释型模拟策略。3虚指令集构造的关键技术虚拟指令集(VirtualInalrucllonSet,VIS)是一种抽象的指令集系统,其设计思想来源于Java虚拟机。它是对各种运行于实际硬件之上的指令集系
5、统的高度概括,将各种指令集翻译为统一的虚拟指令。在设计多目标模拟器时,虚拟指令充当目标代码和模拟器中间的桥梁,为模拟器屏蔽各种指令集的复杂性,作为后端模拟器只须考虑如何模拟虚拟指令的执行,简化了模拟器的设计,提高了系统的可扩展性。根据虚拟指令的定义,虚拟指令集应该包含所有指令集的功能,但并不表示虚拟指令集就是所有指令集的超集。一般,指令集中包括一部分最基本的指令来实现底层的基本功能,其他的指令通过对基本指令的嵌套调用来实现复杂操作。3.1虚拟指令集构造原则在设计构造虚拟指令集时,要遵循以下原则[4]:(1)支持目标支持的数据
6、结构和结构特征。虚拟指令集只有支持目标需要的数据结构和结构特征,才能正确有效地表示和模拟相应状态的操作和变化。(2)足够的复杂度。虚拟指令集应具有一定的复杂度,这样才能直接表示大部分指令,从而实现应有的功能操作。(3)最优化的指令集子集。虚拟指令集要能直接实现大部分常用指令,要避免虚拟指令的反复嵌套,而影响模拟器执行的效率。虚拟指令的条数不宜太多,要减少指令冗余,以利于简单地描述语义,降低模拟难度。3.2虚拟指令集设计根据指令集的特性,在构建虚拟指令集时可以根据指令的不同特点分别对待。采用分层的设计思想,利用基本指令与自定义
7、指令相结合的策略来构建虚拟指令集,将整个指令集划分为若干层次,高层次指令由低层次指令间接实现[5]。在设计虚拟指令集的架构时,将指令分为基本指令L1和自定义指令L22层。基本指令属于底层指令,包含原子操作L1.1与常用指令L1.2,能实现常见指令的基本功能。自定义指令通常是一些复杂指令,需要进行多种复杂运算。其中,原子操作是最底层的操作,包括基本运算指令、逻辑指令、比特操作指令和程序控制等指令,它是整个指令集的基础。常用指令相比原子指令复杂但使用率高,对于此类通用且复杂度较低的常用指令,可以由数条原子操作指令的组合来实现。为
8、保证整个系统的效率,一些复杂度较高或者处理器特有的指令,不宜用大量基本操作实现。针对此类特殊指令,可以自定义一条指令并通过单独的模拟来实现其功能操作。指令集分层示意图如图3所示。确定虚拟指令集的最小基本指令类可以参考RISC指令集,遵循以下步骤[6]:(1)确定最小运算类。各种处理器都有运
此文档下载收益归作者所有