资源预览内容
第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
亲,该文档总共7页全部预览完了,如果喜欢就下载吧!
资源描述
- 1 -指令集模拟器发展现状评述指令集模拟器发展现状评述1 万寒1,龙翔1,高小鹏1 1北京航空航天大学计算机学院,北京 (100083) E-mail: wanhancse.buaa.edu.cn 摘摘 要:要: 指令集模拟器作为嵌入式系统体系结构研究的基础研发工具, 能够针对特定的应用 程序进行体系结构调优,并在硬件实现之前,辅助进行软件的同步开发。本文对过去二十年 中指令集模拟器的发展进行分析,将现有技术进行分类,针对模拟器的速度、普适性、易使 用性、编写难度等方面对技术进行评估。最后,给出模拟器发展的展望。 关键词:关键词: 指令集模拟器 解释型仿真 编译型仿真 体系结构描述语言 仿真 方法学 1. 引言引言 随着市场竞争的加剧,嵌入式处理器以及软件的设计者需要设计日渐复杂的嵌入式系统,同时需要保证上市时间,尽可能缩短产品生命周期,这就要求产品具有广阔设计空间并能有效验证产品的功能。 在系统设计及实现的过程中, 研究者在最初的体系结构上运行相应的测试集, 之后选择可改变的结构参数, 再进行性能测试, 通过这一过程的迭代实现在特定应用下的系统体系结构调优。指令集模拟器(Instruction-set Simulator(ISS) )可以辅助硬件研究者的开发,另一方面,软件开发人员可以在性能足够的指令集模拟器上进行软件开发、调试,而不需等待实际硬件的实现。ISS 作为系统设计和实现过程中的必要开发工具,进二十年来受到国内外学者的关注,并得到了迅速的发展。 2. 指令集模拟器发展现状指令集模拟器发展现状 ISS 从最早的解释型指令集模拟器,发展至编译型,其演化过程围绕性能提升展开;随后, 为了结合解释型模拟器支持任意应用程序的特性以及传统编译型模拟器的性能优势, 体系结构研究者采用了许多其他的技术,如 just-in-time cache compiled simulation (JIT-CCS), instruction set compiled simulation (IS-CS)等。 另一方面, 随着嵌入式处理器种类的增多, 可移植性成为衡量模拟器品质的重要特性之一,所谓可移植性即指单一工具支持不同目标处理器工作的能力。之后,为了降低对 ISS 这样复杂软件编码、调试及维护的难度,研究者开发了体系结构描述语言,并基于此构建相应的 ISS。 3. 模拟器典型技术分析模拟器典型技术分析 ISS 是运行于宿主机之上的工具,模拟应用程序在目标机上运行的行为。可用于验证体系结构的设计,编译器的设计以及在开发过程中评估体系结构的设计。 随着模拟器应用的深入,研究人员针对性能、可移植性、易维护性开发了各种模拟器,以下简要介绍几种比较有代表性的 ISS 系统。 3.1 解释型模拟器解释型模拟器 解释型 ISS 如 SimpleScalar1, 长期以来被广泛使用。 SimpleScalar 在宿主机的存储中保存目标机的相应状态, 对加载的代码进行解释并在宿主机上执行相应的动作。 传统的解释模1 1本课题得到高等学校博士学科点专项科研基金(项目编号:20030006026)资助 http:/www.paper.edu.cn - 2 -拟过程如图 1 所示:在运行时进行取指,译码并执行。这样的工作流程使得解释型 ISS 具有高度的仿真精确度,但是由于译码的复杂使其性能低下。 图 1 解释型 ISS 工作流程 3.2 编译型模拟器编译型模拟器 随着的可编程体系结构的复杂度的增加给模拟器性能带来了负面的影响。为了改进性能, 研究者采用基于编译的技术改进了仿真过程中最耗时的过程指令的译码。 译码即通过将每条目标指令转换为一系列的宿主机指令, 这些指令完成对宿主机中所仿真的目标机状态的操作。编译型模拟器依据译码过程处于编译或者运行时,划分为静态编译仿真(Static Compiled ISS)及动态编译仿真(Dynamic Compiled ISS)。 由 Zhu and Gajski2给出的 Static Compiled ISS 将对应用程序的译码移至编译时,如图 2所示。目标应用程序的二进制码编译为 decoded program,之后经过优化生成宿主机的二进制码,并最终运行于宿主机。 图 2 静态编译型 ISS 工作流程 图 3 动态编译型 ISS 工作流程 该技术的主要的限制在于对静态程序代码的需求, 这就局限了编译技术为一小部分数字信号处理器使用。与典型的 DSP 应用(信号处理算法)比较,微控制器体系结构通常运行的是操作系统, 而操作系统的重要特点即程序代码在运行时是动态的, 这就局限了静态编译型模拟器的使用。 Dynamic Compiled ISS 的典型代表为 Embra3及 Shade4,其工作流程如图 3 所示。ISS中的循环为将输入的应用程序进行译码, 并将译码的信息存储备于后用, 之后遇到已译码的指令在运行时发生了变化则将新的译码信息存储于cache中。 该技术由于在运行时进行译码,难于进行代码优化。 为了结合编译型 ISS 的性能优势及解释型 ISS 的应用普适性, 体系结构研究者开发了如JIT-CCS 以及 IS-CS 等技术。 3.3 Just-in-time Cache Compiled Simulation5 该技术在指令即将执行前进行指令译码,确保了应用的普适性。译码后,提取相应的译码信息并存储于运行时的缓存中,该 cache 由指令地址进行索引。在该指令再次被执行时,JIT-CCS 依据当前的程序地址查找 cache 的入口,并比较 cache 内容以及当前的指令,若发现指令被更改,则初始化新的译码。否则,则跳过再次译码。工作流程如图 4 所示。 我们发现,该技术若要将 ISS 的性能提升至编译型 ISS 所达到的性能,需要假设目标应用程序将 90%的执行时间用于重复执行仅占据全部目标代码 10%的指令。而多数实际的应编 译 时运 行 时目 标 应 用 程 序 二 进 制 码仿 真 编 译 器代 码 生 成 器Decoded Program宿 主 应 用 程 序 二 进 制 码运行时应用程序二 进制码取指译码执行Cache 更新已译码?否是http:/www.paper.edu.cn - 3 -用很难满足这一假设。 图 4 JIT-CCS 技术 图 5 IS-CS 技术 3.4 Instruction set compiled simulation6 如图 5 所示,IS-CS 技术将译码过程移至编译时,在运行时若指令被更改,则在该指令执行前进行重新译码。 该技术采用指令抽象技术实现性能提升, 即对输入的应用程序进行部分的转化,得到可在宿主机上快速运行版本。 该技术首先将指令分类, 并采用 C+模版实现每类指令的功能, 模版共四个参数: 条件,操作, 更新标志以及移位操作。 其次, 采用掩码表进行掩码模式以及模版的映射。 在编译时,通过匹配指令二进制码以及掩码模式决定该指令匹配的模版。 之后, 从特定的二进制码位中提取信息赋予模版参数,即将模版特定化。将特定化的模版初始化并加载至临时程序中。最后,临时程序输入 C+编译器,利用编译器优化。 基于该技术的模拟器在运行时的工作类似 JIT-CCS,包含基本的取指、译码及执行。 我们认为,由于须将整个的目标应用程序转化为 decoded program,该技术仅在目标应用程序较小时,编译器可在用户能够容忍的时间内完成相应的编译、优化工作。另一方面,由于需要存储相应的译码信息, 这部分信息将占据大量的运行时存储。 即编译的时间及存储的使用取决于输入程序的大小及仿真的粒度。 3.5 体系结构描述语言体系结构描述语言 编写细粒度的处理器模拟器很难, 实现详细的体系结构仿真更为复杂, 若要手动编写模拟器尤其当需要采用加速技术时势必是费时易错的工作。 另一方面, 随着嵌入式处理器类型的增多,可移植性即单一工具与不同目标处理器协作的能力要求更高。鉴于此,体系结构研究者开发了领域专用语言, 用于描述系统结构, 系统结构的规格说明可用于生成一系列的软件工具,如编译器、汇编器、模拟器以及调试器。 以下介绍 nML7, ISDL9以及 LISA11这三种机器描述语言(ADL),及各自的适用领域。 3.5.1 nML nML 是面向指令集的 ADL, 被用于 CHESS8 环境。 采用树形结构描述指令集, 使用 “与规则”将几组元素成组为更大的元素,使用“或规则”列出一个元素的所有候选者。所有的语义作为属性对规则进行标记。 nML 同时可描述结构及时序信息,如定义存储,需要声明存储名称、大小以存储类型;起 始模 拟 器 (at address n)JIT 仿 真 编 译 器JIT 接 口1234Request nReturn entry 2Lookup nCompile n程 序 计 数 器 (n)指 令 寄 存 器 (.)AddrData 0 4abc edf程 序 存 储仿 真 CacheAddrKey 0 4abc edfData Op src desIndex 1 .2JIT-编 译 单 元.http:/www.paper.edu.cn - 4 -提供时序信息包括流水线延迟的周期数。 研究者采用 ADL 描述依需要设计体系结构特性的规格书,将规格书作为模拟器生成器的输入, 即可生成相应的模拟器。 对设计的体系结构进行调优即通过应用程序在模拟器上的运行情况,调整 ADL 描述生成新的体系结构模拟器并迭代评估。 随着处理器中更为复杂的限制的出现, 如不规则指令级的并行限制以及多发射槽等的出现,nML 难于对这些新的特性进行描述。 3.5.2 ISDL 该语言可用于描述多种体系结构,并主要面向描述 VLIW 处理器。ISDL 的描述包含六个部分:指令字格式,全局定义,存储资源,指令集,限制以及可选的体系结构的细节。 指令字格式部分定义硬件指令字,划分为多个域,每个域可能包含一个或多个子域;全局定义部分描述三个主要类型即 tokens(指令的主要操作数,汇编格式以及二进制码编码的信息),nonterminals(提供操作之间共同的属性)以及 splitfunctions;类似于 nML,ISDL 通过存储资源部分给出结构信息,包括所有对编程者可见的资源,列出存储的名称、大小、寄存器文件以及特殊寄存器; 指令集部分划分为多个域, 相应于可在单一指令中并行执行的操作,每个操作包括:操作名,一组 tokens 或者 nonterminals 作为操作的参数,一组操作位域的命令,RTL 描述(在存储资源上的操作响应),消耗(操作执行的时间,资源冲突的消耗)以及时序模型。 nML 列举了所有的合法组合,而 ISDL 采用布尔表达式的形式描述了非法的组合,这样形成简单的限制描述,有利于描述非法的 ILP 限制。 MIT10研究人员使用 ISDL 描述目标体系结构,之后将机器描述与目标应用程序共同输入编译器,由代码生成器产生的代码可在目标处理器上运行。 ISDL 提供紧凑以及层次化的指令描述,这些都是基于 nML 的属性语法。通过共享操作间的共同元素简化描述,然而,我们发现这些模型缺乏详细的流水线及时序信息,无法生成周期精度的模拟器。 3.5.3 LISA 该语言用于描述周期精度的体系结构。描述包括资源及操作。 资源声明包括硬件资源(寄存器、流水线及存储);操作包括行为,结构以及指令集。 LISA 将类似的操作成组,由于有详细的流水线行为描述,故可用于设计周期精度的模拟器。在开发过程中,解析器读取 LISA 模型,并转化为中间数据库,该库可由其它工具访问。 ADL 的产生,易于对多种指令集的描述,同时避免了每次对体系结构调优后对模拟器的手
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号