全站搜索
指令分层过滤体系在通用CPU模拟器设计中的应用
作者:管理员    发布于:2015-12-19 09:24:13    文字:【】【】【

  在计算机技术发展过程中,模拟一直是一个重要的研究领域。当构建一个新系统时有效地测试和验证新系统的行为和正确性十分重要。利用模拟器,硬件生产厂商可以在构建系统之前就对其正确性及性能进行验证,从而大大降低开发成本和时间。除了用于硬件验证,模拟器还可以使得软件开发商在样机生产之前就能够进行软件开发,从而使软、硬件同时面世成为可能。另外,模拟器可以在程序运行时收集机器的运行倍息,帮助分析系统的行为,从而进行相关的优化。由于模拟器的直观性和易用性,在计算机组成和体系结构教学领域它也有很重要的应用A模拟通常可以在3个层次上进行,从高到低依次为指令集层、微程序层和逻辑层。

  完全从头手工开发一个模拟器,是一项非常繁重的工作,而且易于出错,不易维护不仅需要花费数月的时间开发还需要花费大量的时间来进行模拟器正确性的验证。如果要开发多种不同类型的CPU的模拟器,因为它们的原理和结构都大同小异,因此不可避免地有大量的重复劳动屋然,需要一个可以根据用户的需求定制的通用模拟器。这样,不但可以大大减少开发的工作量,并且易于维护和修改。目前这方面的大部分工具都是针对硬件设计的正确性验证,在逻辑层进行仿真,而在其它层次的通用模拟器却比较欠缺。)就是一个指令集层上的通用模拟器。该文首先阐述GSim的总体结构,然后再重点阐述“指令分层过滤体系”(ILFSinstructionsLayered FiltratingSystem)一关键技术的概念和具体实现方法。

  2GSim的主要功能和结构2.1主要功能和特点和多用模拟器的技术,支持多种不同类型CPU的模拟。GSim本身并没有任何具体硬件的相关倍息,但提供了大量的接口和运行机制来兼容尽可能多的CPU种类,用户只需根据自己的需要书写相应的硬件描述文件(md文件),GSnn即可根据硬件描述来模拟运行这个目标机上的程序。GSmi还具有单步跟踪,设断点等调试功能,附加的倍息收集模块还可以收集目标机在模拟运作过程中的各种行为倍息,以用来评价所运行程序的效率,找出性能瓶颈,完成Profile的功能。GSim还对外开放很多编程接口,可以很方便地在此基础上进行二次开发工作。

  GSim本身是一个命令行程序,采用这种方式运行效率比较高,便于第三方程序调用,也比较容易实现不同作系统间的移植。同时也提供功能强大的图形前端,便于一般用户使用,用户也可以根据自己的需要开发符合自己要求的图形前端。这种命令行方式的模拟器+图形前端“也是目前大部分模拟器所采用的机制。

  2.2GSim总体结构GSim系统由配置模块、CPU核心模块、地址空间模块、作系统支持模块、图形界面模块、倍息收集模块6个部分组成。描述了它的基本结构其中,配置模块负责读取硬件描述文件并搭建相应的数据结构,CPU核心、地址空间、作系统支持三个模块中的大部分配置倍息都要从这个模块提取;CPU核心模块实现了目标CPU的一些主要功能,包括寄存器组管理、各种运算部件、译码部件等地址空间模块则模拟了目标机的地址空间管理,同时实现了静态加载过程中的虚实地址映射;作系统支持模块则为运行目标应用程序提供支持,实现了模拟器初始化、应用程序调入、虚拟的物理内存管理和部分系统调用等功能,图形界面模块提供图形作界面支持倍息收集模块根据用户需要实现目标机程序运行过程中的数据GSim运行在Intel体系平台之上,借鉴了现有的多种专用收集和统计功能。

  如,配置模块读入用户配置文件,这个文件定义了足够的目标机硬件结构倍息,配置模块根据这些倍息动态地在宿主机内存中搭建出虚拟的目标机和底层的软件环境。然后GSrni将目标机程序载入地址空间模块之中开始模拟运行,运行期间的各种倍息同步反映在图形界面模块,并被倍息收集模块所统计计算,以完成Profile等性能评估功能。

  图形界面模块cput亥心厉地址空间模块~2目标机程序GSim的总体结构3指令分层过滤体系3.1GSim的硬件描述GSim作为一个通用的模拟器,在设计理念上遵循着要求适用CPU类型范围广,可扩展性强的原则。现在需求的模拟器多在指令集层次,因此硬件资源描述文件的设计基本上以指令集层模拟为核心的。那幺用户具体定制一个GSim需要考虑哪些方面昵,首先,要搭建好模拟目标机的硬件架构。就指令集这个层次而言,只需要针对指令可以看得到"的硬件来进行模拟就可以了。所有硬件的状态都以变量的形式存在于模拟器中,用户定制GSim首先要定制所要模拟的硬件资源;其次,要对运行在真实目标机上的程序文件的掐式和作系统支持进行描述。定制好的GSnn要求能在硬件层次上运行一般的程序不是简单地执行一个指令段。程序的掐式和运行支持不仅仅和硬件相关还和BIOS以及作系统等有密切的关系;后,要对指令集进行描述,这是整个硬件资源描述的核心内容。从软件的角度看,不同CPU之间的区别绔体现在指令集的不同上。一个多用途模拟器是否有良好的通用性关键在于它的指令集模板掐式是否能够准确地描述各种各样的指令集结构。ILFS是一个功能强大的指令集模板掐式。

  3.2传统的多用途CPU模拟器的指令集模板格式经典CPU模拟器的设计是围绕着opcode进行的,根据opcode确定指令的类型,然后执行指令中涉及的作。传统的多用途模拟器照搬了这种结构,将opcode具体的值和它确定的作留给用户来定义,以此来实现模拟器的可定制性。

  可以看出这种类型的指令集模板掐式对指令的掐式有某种形式的假定,比如opcode的位置、长度等等,在这种假定下很多特殊CPU的指令集将无法定义。即使对于超长指令字这种很规则的多opcode结构,这种处理方式也有很大的弊端。比方说有4个opcode域,每个域4位胺照这些指令集模板掐式定义的话就多需要24x4=65536条模板定义,可想而知这个工作量有多么浩大。显然这65536条模板定义绝大多数是重复的J巴这种情况称为状态冗余,这只是状态冗余的一种简单情形,很容易看出也不难避免,但很多复杂情况下状态冗余很隐以opcode为核心的指令集模板格式执行情况蔽,以opcode为核心的指令集模板掐式很难从根本上解决这个问题。而且对于指令结构非常复杂的CPU,甚至有可能没有明显的opcode存在,因此这种原始模板掐式就无用武之地了。

  3.3指令分层过滤体系(ILFS)大部分CPU的指令集都是相当规则的,开始是不定长opcode,后面根据opcode的值确定其含义;根据opcode确定的指令不含有二义性,称这种一个opcode可以睢一确定指令类型和执行方式的指令结构为单层指令结构。

  另外一些指令体系不是单独针对一个运算单元的其指令中有可能有多个opcode段,每个opcode驱动一个运算单元工作。单独对于每个opcode段来说,指令结构也是相当规则的,称这种指令结构为多层指令结构。例如VLIW(超长指令字F.还有一些指令体系并没有明显的opcode,整个指令的每一个段的含义都有洋尽的定义,可以把这些段看作驱动CPU工作的微代码(Microcode),这种指令结构称为微代码指令结构。

  不过很少有CPU单纯是多层或微代码指令结构,一般都是上面几种指令结构的综合,这里称之为混合指令结构。比如LeadtekVP6澈是一个典型的混合指令结构的CPU.由此看出CPU指令集的结构是分层次的opcode只是这种复杂的层次结构的一种简化描述而已。传统的指令集模板掐式仅仅考虑单层指令结构这一种情况。有些指令集模板掐式虽然也可以描述多层指令结构,但形式上仍然无法摆脱opcode的束缚。指令必须保证其无歧义性摈实的CPU总可以根据指令的某些特征来确定指令的含义,即使它的结构相当复杂。因此,可以考虑抛开opcode的形式,针对这些特征解释指令,无不是一定有确定的长度,是不是每条指令都具有。同时,指令中的多个域是由不同的运算部件分层次经多次处理的,GSim也可以如法炮制,分层次顺序解释这些域。这两点就是指令分层过滤体系的核心内容。

  指令分层过滤体系的基本单位是层,它由过滤条件、标志位组、层处理脚本这三个元素组成。在GSim的执行过程中,每一层都将被实例化,指令将按顺序通过这些层,终完成指令配置模块用户配置文件|后一层执行完毕指令分层过滤体系流程图的执行:在GSmi的硬件资源描述文件中,指令分层过滤体系遵循下面的语法掐式:001b:层处理脚本111b:层处理脚本的顺序将每条指令通过这些层;a是指令中的某一个已定义的域是这个域的第位是一个可选的过滤条件,满足这个条件的指令方可进入这个层力是标志位组,本层根据这三位的值来选择相应的层处理脚本。

  采用指令分层过滤体系可以定义各种特殊指令结构对于opcode长度统一的单层指令结构JLFS退化为一个层,没有过滤条件I标志位组即为opcode;对于变长opcode的单层指令结构可根据opcode的长度分层,长opcode的过滤条件就是相应的prefix;//长指令的00000001b:层处理脚本mmb:层处理脚本对于多层指令结构,一般来说以每个opcode段作为一层,如有变长opcode则增加相应的扩展层;对于微代码指令结构则要具体问题具体分析有必要的话每个微代码段都要设为一层。如果某一种不符合常规的特殊状态需要多个不相邻的标志层处理脚本只需要列出需要的状态其它的规则状态可以在6和C的专属层中进行,以免造成状态冗余。

  混合指令结构综合使用上面的定义方法即可。

  3.4ILFS的应用示例公司的DSP处理器VP6的指令集为例,简要说明ILFS的具体应用方法。VP6是一个混合指令结构的CPU,传统的指令集模板掐式对它的指令集是无能为力的。VP6的指令掐式有9种,下面以其中的一种为例现在根据这种指令掐式使用ILFS来定义VP6的指令集:(1沱是64位指令澌以指令精度标识位可0恒为U乍为每层的过滤条件出现(因为VP6还有32位指令);(2)s/为三个fe算部件SequencerDatapath和RISC的opcode,但在这种指令掐r域无效,所以应分为两层;(3)上面这种掐式只适用于M域确定的指令为M沉或时,所以M层只列出了标志位组的可能值,并且,这些值也是这个层的过滤条件O域在所有9种指令掐的定义一样,不需要这个过滤条件):000b:层处理脚本111b:层处理脚本:层处理脚本X28:层处理脚本指令掐的其它域均作为变量在层处理脚本中出现。

  4结论开发GSim的目的是为了辅助开发和辅助教学,这就决定了在GSim的设计理念上要求的功能模拟和全面的CPU种类支持。指令分层过滤体系抛开了opcode概念的缚,分层次按照指令特征解释指令解决了传统指令集模板掐式适用面较窄以及特殊情况下效率较低的问题,这绔使GSnn真正地成为了一个通用“模拟器而非仅仅是多用”的模拟器。

  (收稿曰期2004年6月)

访问统计
51客服