已阅读5页,还剩60页未读, 继续免费阅读
(电路与系统专业论文)基于MADL语言的时钟精确级仿真器生成[电路与系统专业优秀论文].pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于 madl 语言的时钟精确级仿真器生成 摘 要 随着处理器设计复杂度的增加,设计前期在系统级别进行规划对芯 片各方面性能的影响日趋增加。由于系统级设计中需要时钟精确级仿真 器(cas)进行设计空间探索(dse),获得芯片各方面性能,从而帮助确定 设计方案,因此快速生成 cas 成为芯片设计成败的关键。该文提出了 利用 madl 语言构建设计空间探索平台的方法,具体探讨了 cas 生成 的方法,并设计和实现了基于 arm7 处理器的 cas。实践证明,利用 madl 生成 cas,代码生成效率大大提高,且性能更加优良,能精确 的模拟出指令在每个时钟周期里在流水线上流动的情况,完全适合在芯 片设计初期的 dse 工作。 关键词:体系结构描述语言,设计空间探索,系统级设计,时钟精确级 仿真器 madl based cycle accurated simulator generation abstract as the complexity of cpu design increases, system-level design in early development stage is imposing more and more influence upon the chip performance. therefore, generating a cycle-accurate-simulator (cas) plays a key role in the chip design. it can help the designer explore the design space and evaluate the performance of the design. a method of building the design-space-exploration platform and generating cas using madl is proposed in this paper, and an implementation of cas based on arm7 is also given. it can be proved that using madl we can generate cas much easier and the performance of the cas can be much better for it can accurately simulate the action of instruction flow in the pipeline each clock cycle. key words: architecture-description-language(adl), design-space-exploration(dse), system lever design, cycle-accurate-simulator(cas) 图片目录 图 1 各种 adl 及其功能 6 图 2 madl 系统级设计流程8 图 3 osm 模型整体结构9 图 4 osm 示意图10 图 5 内存仿真模块示意图20 图 6 osm 流水线建模示意图24 图 7 arm7 流水线建模图 26 图 8 乘法的 osm 建模35 图 9 swi 二进制指令格式36 图 10 仿真器结构图 39 图 11 yacc 语法分析示意图 41 图 12 lex 和 yacc 使用流程图43 图 13 arm7 指令二进制格式44 表格目录 表 1 intel 公司芯片晶体管的个数与年份的对照表 1 表 2 各种 adl 语言特点 15 表 3 simplescalar 仿真模型17 表 4 内存仿真 read 系列函数21 表 5 内存仿真 write 系列函数21 表 6 实现的 arm7 指令 30 表 7 elf 文件结构图 37 表 8 指令测试结果 50 表 9 程序测试结果 50 符号说明 adl architecture description language cas cycle accurate simulator dse design space exploration elf executable and linkable format madl mescal architecture description language osm operation state machine model 上海交通大学上海交通大学 学位论文原创性声明学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工作 所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体 已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体,均已在 文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。 学位论文作者签名: 马潇 日期: 2007 年 1 月 20 日 上海交通大学上海交通大学 学位论文版权使用授权书学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并 向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人 授权上海交通大学可以将本学位论文的全部或部分内容编入有关数据库进行检索, 可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 保密保密,在 年解密后适用本授权书。 本学位论文属于 不保密 不保密。 (请在以上方框内打“” ) 学位论文作者签名: 马潇 指导教师签名:郭炜,谢凯年 日期: 2007 年 1 月 20 日 日期: 2007 年 1 月 20 日 1 1 绪论 1.1 课题研究背景 自上世纪 60 年代以来,整个集成电路行业的发展就一直遵循 gordon e. moore 的寓言, 按照集成度每十八个月翻一倍, 特征尺寸每十八个月减小一倍的速度发展, 到现在 asic 芯片的集成度已经高达上百万门,先进的制造工艺也已进入 65 纳米。 伴随着集成电路的广泛使用,人们对它们的要求也越来越高。对产品用户而言,要 求更快的速度,更多的功能,更低的功耗,更小的尺寸,更稳定的性能;对生产厂 商而言,为了获得更大的利润,产品的上市时间也要越快越好。这一切都对现在的 电子系统设计工程师和科学家们提出了更多的要求,带来了更大的挑战。对应到电 子系统设计,这些要求和挑战中最难解决的有: 1复杂的逻辑设计 表 1 中为 intel 公司芯片上晶体管的个数与年份的对照表。随着芯片功能和性 能的增加,单个芯片上需要容纳越来越多的晶体管,设计复杂度的增加使得传统的 设计方法逐渐不能满足需求,必须采用更有效的快速电子系统设计方法。 表 1 intel 公司芯片晶体管的个数与年份的对照表 table1 comparison of transistors and years of intels chip 微处理器 推出时间 晶体管数目 4004 1971 2300 8008 1972 2500 8080 1974 4500 8086 1978 29000 intel286 1982 134000 intel386 1985 275000 intel486 1989 1200000 intel pentium 1993 3100000 2 续 表 1 intel pentium ii 1997 7500000 intel pentium iii 1999 9500000 intel pentium 4 2000 42000000 intel itanium 2001 25000000 intel itanium 2 2003 220000000 intel itanium 2(9mb chche) 2004 592000000 2自定指令集的嵌入式芯片设计 嵌入式处理器芯片是当今设计的一个热点,它们往往是针对特定的应用,选择 特定的体系结构并自定义指令集,这类芯片的设计和优化与应用联系紧密,如何合 理选择体系架构,如何合理定义指令集都是在芯片设计初期困扰设计者的难题。 3功耗控制 现今的处理器芯片功耗已达到百瓦量级, 如 intel 的 itanium 2 功耗约 130 瓦7, 功耗的上升对于封装,散热及冷却环境提出了更高的要求,导致封装和制冷成本提 高。另外,对于手持式设备来说,能量由电池提供,但传统的电池能提供的能量有 限。 如镍铬电池每磅仅能提供 20w*h 的能量, 目前的电源技术每五年最大能将电池 的性能提高 30%6。电池能量的限制使得芯片功耗必须限制在一个可以接受的范 围。上述这些因素导致系统的功耗有时甚至成为系统设计首要考虑的目标。 除了以上这些困难,还有其他影响芯片功能的因素,如信号完整性,电磁干扰 等等。再加上越来越复杂的功能,和与之产生的相应的芯片测试和验证工作,导致 了现在越来越多的设计失败。这些因素使得当今的电子系统设计是高风险和高成本 的“双高”产业,即使是一个成功的设计也要通过巨大的产品生产量来平摊设计成 本。调查显示,asic 项目的开展数目从 1998 年的大约 5000 个到 2002 年降为不到 1500 个8。 正是由于上述问题的存在,芯片设计人员需要在设计前期对芯片在系统级别进 行规划并进行设计空间探索(dse:design space exploration)27。设计空间探索 最初是在逻辑综合这个领域被提出来5,逻辑综合中可以以电路面积增大为代价, 通过增加更多并行的门电路以期达到更快的电路运行速度的目的,因此设计者需要 在设计空间中建立一个速度/面积的曲线以取舍和折中。现在 dse 工作抽象的层次 更高,所包括的范围也广泛得多。dse 根据需要建立合适的模型,比如体系结构模 3 型、应用模型或者是编程模型,各种模型所关注的方面各不相同。体系结构模型集 中在对性能、面积、内存以及功耗分析上,在系统和体系结构层面上对芯片设计的 可能的选择进行评估和取舍。应用模型和编程模型则更多的关注于测试负载5。 对于新的处理器的设计,尤其是嵌入式处理器芯片的设计来说,设计人员需要 在众多的选择中权衡。由于最终芯片各方面的性能实质上由芯片的结构、资源和运 行于芯片上的程序这几点共同决定,而通过建立体系结构模型进而进行 dse,使得 设计人员能够实现架构描述以及对自定指令集的分析,从而带来了对软硬件协同系 统性能的分析,因此,在开发初期设计人员需要快速搭建出合适的 dse 平台,对各 种可能的设计方案进行尝试,获得芯片的功耗、速度、面积等方面的性能,以便能 得出一个各方面性能都可接收的折中方案1。 1.2 研究目的 鉴于搭建 dse 平台对于芯片前期设计的重要性, 而目前国内外在这方面的研究 还很少,因此需要探索出一个合适的快速搭建 dse 平台的策略和流程。而在 dse 平台中,时钟精确级的仿真器是最为重要的15,要设计的芯片的各种性能,都是 由它仿真后提供。因此,我毕业设计的主要工作集中在如何快速可靠的对某个用户 定义的芯片生成时钟精确级仿真器。该仿真器与另一位同学实现的针对特定指令集 的编译器一起,搭建 dse 平台。 1.3 所作的工作 本设计在 madl 语言设计者已提供的仿真器实现接口的基础上,用 madl 语 言针对 arm7 处理器建模,实现了基于 arm7 处理器的时钟精确级仿真器,该仿 真器目前支持 arm 的除了协处理器指令之外的绝大部分指令,并能反映所运行的 测试程序的运行周期数,数据和指令 cache 的命中率等信息。 此外,该仿真器还实现了一个测试模式(test mode)。正常模式下,仿真器读取 elf 文件运行程序;在测试模式下,仿真器直接读取汇编代码,在仿真器内部将汇 编代码编码后放入内存中再运行,这样即可保证仿真器只运行设计者想要运行的代 码。汇编代码可以是自己手写的,用于调试仿真器,测试仿真器正确性,也可以是 编译器生成的,用于测试编译器的正确性。 4 1.4 论文结构安排 本论文分为如下五章: 第一章:绪论。介绍本课题的研究背景与研究意义。 第二章:madl 介绍。对 madl 语言的语法介绍,并分析了相比于其他语言 和工具,利用 madl 语言生成时钟精确级仿真器的优势所在。另外,本章还介绍了 madl 语言设计者为使用者提供了一些实现仿真器的接口资源,使用者可以使用它 们,方便建模。 第三章:仿真器实现。这一章介绍了本设计针对 arm7 处理器建模实现的时钟 精确级仿真器。 本章详细分析了如何利用 madl 语言对流水线, 指令集建模以及如 何对 arm7 处理器资源进行抽象并管理, 提出并实现了读入汇编程序仿真的仿真器 工作模式。 第四章:仿真器调试验证。本章提供了该仿真器的调试策略及调试结果 第五章:结论。该章总结本设计的工作,并对今后的工作内容和发展方向作了 进一步的展望。 5 2 madl 介绍 2.1 adl 历史与发展现状 体系结构描述语言(adl: architecture description language)描述的是处理器 的流水线、指令集、存储器等结构信息。adl 语言最早出现于上个世纪七十年代, mimola 就是在 1979 年被提出的一种 adl 语言,到目前为止 adl 语言并没有一 个统一的标准,不同的 adl 语言有着不同的倾向性和应用领域,有的偏重于软件 工具链的生成28,有的则倾向于代码的可硬件综合性342526。按照 adl 语 言在描述上的侧重点不同,可将其分为三类:结构描述类、行为描述类以及混合类 型1: 结构描述类: 抽象层次低,基于结构描述的体系结构描述语言强调对目标机器内部结构信息 的描述,即对功能单元和它们之间连接关系进行详细地描述。它能够支持任意的硬 件结构,甚至有些还支持硬件综合11,但是对于复杂的指令集,这种方法很难有 效地从结构描述中提取指令集信息,因此生成的代码质量不高,这一类型的adl语言 通常都是在adl语言提出初期被使用的,现在已经不多见。常见的结构描述类的adl 语言包括mimola31,udl/i32等 行为描述类: 抽象层次高,此类adl语言侧重对目标机器行为进行描述,主要包括目标系统 指令集,如指令格式,编码,语义等。常见的行为描述类的adl语言包括nml, isdl33,csdl等 混合型: 混合型的 adl 语言对行为描述类的 adl 语言进行了扩展, 加入了硬件资源的抽 象描述。一般来说,此类 adl 语言不仅能够描述目标机器的功能结构信息,也能够 描述目标机器的指令集信息,甚至包括流水线和存储子系统的有关信息。常见的混 合型的 adl 语言包括 madl1,maril34,hmdes,tdl,expression4, lisa12等 6 下图为各种不同类型的 adl 语言的应用领域。 adl 结构描述类结构描述类混合类混合类行为描述类行为描述类 面向综合面向综合面向测试面向测试面向编译面向编译面向操作系统面向操作系统面向仿真面向仿真 图 1 各种 adl 及其功能 figure 1 different adls and their function 目前国内在 adl 语言的研究上还比较有限, 所知的仅有四个关于 adl 的研究, 分别是来自中国科学技术大学、湖南大学、台湾大学和台湾清华大学的项目。而且 这些研究仅限于针对某个软件工具移植的研究: 中国科技大学在可重定位编译器(retargetable compiler)方面对adl进行过一些 研究9,并且采用xpadl构建了一个包含指令级功耗模型和微结构级功耗模型的两 层周期精确系统级功耗模型,从结构描述的正确性、结构与行为描述的一致性和流 水线顺序执行的有效性等方面对xpadl的描述进行验证16。 但是在该项研究中作者 所做的体系结构环境并不完备,首先xpadl只适合描述单处理器系统,而未来的soc 将包含支持多线程体系结构的异构多处理器、asic和多种存储器(如dram和闪存) 等。它们的总线控制协议和存储管理机制等行为将更加复杂,如何覆盖更加广泛的 soc体系结构对于xpadl来说是个很严峻的问题,另外,该项研究中仅仅只针对了 按序执行的流水线结构,没有对流水线冲突、异常等进行研究和验证,也未能支持 乱序执行的流水线结构。再者,在功耗模型方面,该项研究提出的功耗模型只针对 指令功耗进行了建模,并未对指令调度功耗进行建模。 湖南大学采用sim-nml对嵌入式系统编译器,特别是多目标技术和编译器自动 生成技术进行了研究11, sim-nml是印度理工学院kanpur分校计算机科学与工程系 开发的一种基于nml的体系结构描述语台。该项目作者利用adl来描述目标机器信 息,然后通过一个程序将这些信息自动转换为移植gcc所需要的机器描述文件,从 而将gcc自动移植到了nios嵌入式系统开发平台上。但是,该项研究还比较有限, 移植到nios平台上的gcc仅仅只能生成汇编代码,无法生成目标文件,因此,该项 研究未能实现一套完整的编译系统4。 另外,台湾地区的国立台湾大学在用 adl 进行自动移植生成器的研究上也有 7 报道。他们对 gnu 的二进制工具进行了移植10。该项目的研究者采用 adl 来定 义处理器的结构,针对开放源码的 gnu binary utilities 来进行移植。采用 cgen 作 为协助移植的工具。 并利用algen处理程序重定位的工作。 基于cgen和algen, 他们实现了 gnu binary utilities 移植工作的自动化。 台湾清华大学的项目主要是由该校的集成电路设计技术研发中心领导进行的。 该 项目以“网路安全处理器研发”为基点,进行相关处理器架构,设计平台,验证与 测试的研究。 研究的预计成果包括一个可用于soc芯片设计的adl, 利用该adl可自 动生成相应的软件套件以及可综合的硬件代码。其中项目编译器部分将采用gnu项 目的gcc编译器作为可移植的编译器。项目紧密结合工程研究院及产业界公司,如创 意电子源捷科技等,预计将帮助台湾soc产业加速整合,取得技术领先 2324 。 前三个研究均未涉及到如何构建 dse 平台以在开发前期在系统层次对芯片性 能进行探索。而这正是目前设计高复杂度处理器芯片所亟待解决的问题。台湾清华 大学的研究项目非常诱人,但是到目前还未看到该项目成功的报道。 就系统级设计和设计空间探索来说,合适的 adl 语言必须在抽象层次和通用 性上有所折中。较低的抽象层次可以很容易的对体系结构进行精确的描述,但会导 致建模上的繁琐。较高的抽象层次不需要从行为信息中抽象指令集,并且能避免建 模工作纠缠在具体的硬件描述上,但是在通用性上却不够理想。 2.2 madl 在系统级设计的应用 madl(mescal architecture description language)是由普林斯顿大学的秦巍博士 于 2004 年开发完成的一种较为先进的 adl 语言。 madl 语言是一种混合型的 adl 语言,既有行为的描述也有具体硬件资源的抽象。madl 对芯片的描述涵盖了芯片 结构的和指令集的信息,并为软件工具的生成提供了相关描述信息。 图 2 显示了一个通过 madl 语言在芯片设计前期搭建 dse 平台进行系统级设 计的方法。 根据具体应用,设计者构建出处理器的结构,用 madl 语言加以描述,生成包 括编译器和仿真器在内的软件工具,搭建出用以评估软硬件性能的设计空间探索平 台。应用程序通过编译器和汇编器生成机器代码,在仿真器上运行,得到处理器的 各种性能参数,设计者根据反馈的性能参数对设计进行修改,重新构建出设计空间 探索平台,如此迭代,直至获得最佳的设计方案。 8 具体应用具体应用 体系 结构 描述 体系 结构 描述 dse平台平台 反汇编 器 反汇编 器 编译器编译器 汇编器汇编器 cas 仿真器仿真器 设计者设计者 图 2 madl 系统级设计流程 figure 2 madl systematic design flow 由上面描述可以看出,在设计空间探索中,时钟周期精确型仿真器(cas)的生 成具有非常重要的作用。通过时钟周期精确型仿真器,可以得到系统性能的全面评 价,设计者可由此对设计进行方案选择和优化,然后再次仿真评价,如此迭代,直 至获得一个各方面性能可接收的设计方案。 2.3 madl 语法分析 madl 提出操作状态机模型(osm:operation state machine model)的概念, 基本上 madl 语言对于处理器的描述是通过描述 osm 来完成的。 madl 语言由两 部分组成: 核心语言(core language) 和注解语言(annotation language)。 核心语言描述 操作状态机,而注解则描述工具相关信息。这种描述为编译器、仿真器、汇编器和 反汇编器等软件工具的生成提供了重要的信息。 osm 模型对芯片的描述包含了两个 层次,操作层(operation lever)和硬件层(hardware lever)1。操作层包含了指令 集结构(isa)以及动态执行行为的描述,而硬件层则反映了经过 osm 抽象简化后 的处理器的微结构信息。由于存在这样两种不同的抽象方法,madl 建模呈现出既 精确又简洁的特性,而且方便工具从中分析抽取结构相关信息。 2.3.1 osm 模型分析 osm 模型包含了操作层和硬件层两个层次, 操作层与硬件层的通讯是通过令牌 9 管理者来实现的。osm 整体结构图如下所示1: 图 3 osm 模型整体结构 figure 3 overall structure of osm model 操作层 指令集在操作层中实现,所有指令的执行都是由扩展的有限状态机来表示。所 谓“扩展的有限状态机” ,就是给有限状态机里添加上内部状态变量。扩展的有限状 态机可以转化为有限状态机,只要将其中的每一个状态都转换为 n 个状态即可;当 然,这里的 n 对于每个状态是不同的,一般来说,n 的值是由内部状态变量来决定 的。使用内部状态变量有一个明显的优势,就是它压缩了状态机,将本来复杂的有 限状态机压缩成相对简洁的形式。这样也对状态机外部隐藏了一些细节,使得层次 更为清楚。 madl 语言对处理器建模就是以 osm 为设计基础的,对于每条指令,都需要 建立对应的 osm 模型,以实现指令的操作和在流水线中流动的情况。osm 中的一 个级(stage)就代表指令执行时的一个状态,而 osm 中的边(edge)则代表了操 作在执行中合法的一步,具体到实际处理器中就可能对应着指令在流水线中前进了 一级,当然在某些指令导致流水线停顿的时候也可能多个 stage 才代表流水线的一 级。 10 osm中的这些stage和edge构成一张状态图, 这张状态图必须是强连通有向图, 这样才能保证在图中不会出现一个“死状态”或者一个被孤立的部分。扩展有限状 态机中的内部状态变量可以用来记录指令操作的中间结果。 在 osm 中,指令从一个 stage 沿某条 edge 流动到下一个 stage 是有条件的,在 每条边上都备有流动的判定条件,用于裁决该条操作是否能够沿着这条边流动。这 些条件可以是判断在执行时可不可以申请到某些资源,这些资源包括结构类的,数 据类的或者是为了模型的完整性而人为定义出来的资源。比如流水线中的一级就可 以看作一个资源。这个特性可以用来模拟流水线的数据冲突的情况;判断的条件也 可以是某个预先计算得到的值是否符合要求。一个简单的 osm 示意图如下: ifidie ini 译码单元空闲?运算单元空闲? 启动?执行完毕? 图 4 osm 示意图 figure 4 osm example 硬件层 处理器内部的硬件资源在硬件层中定义的,它们以令牌(token)的形式出现的, 令牌被各自的令牌管理者管理的,一个令牌管理者管理着同一类型的一个或多个令 牌。当一个令牌管理者管理着多个令牌的时候,令牌管理者将对这些令牌建立一个 索引。 当 osm 模型中操作层需要使用某资源,也就是需要硬件层的某令牌时,操作 层向该令牌的令牌管理者提出申请,令牌管理者根据申请类型和自己的管理规则来 决定是否要给 osm 分配这个令牌。 osm 对令牌的行为分为控制类行为和数据类行为两种。 控制类行为可分为以下四类: 1申请(allocate) : 一个 osm 会向一个令牌管理者申请它管理的一个令牌,如果这个令牌没有被 占用的话,那么这个申请就成功,令牌管理者会将该令牌分配给 osm。分配操作主 要是针对于一些独享资源的,在流水线中,大部分资源都是独享的。 2询问(inquire) : 11 一个 osm 可以向一个令牌管理者询问某一个令牌当前的状态,但是询问并不 导致对这个令牌的占有。这类行为主要是针对于非独享资源。 3释放(release) : 当 osm 使用完一个令牌后,就会申请释放掉它,令牌管理者可以根据情况选 择接受或拒绝该行为。 4丢弃(discard) : osm 可以强制性地丢弃它所占用的一个令牌,这个操作是无条件执行的。 当一个令牌被分配给了一个 osm 后,在这个 osm 没有释放或者丢弃它之前, 它不能再分配给其他的 osm;但是其他的 osm 可以对这个令牌进行询问操作。丢 弃行为在可以被看作是无条件的释放,这个操作在 osm 重置(reset)时比较有用, 因为 osm 会放掉所有的令牌而进入休眠状态。 osm 模型的指令操作层主要对指令的语法和动态执行行为做了描述。在运行 时, 通常都是很多 osm 在执行。 一个 osm 会在活动和静止两个状态之间反复切换。 活动状态下, osm 的生命周期等同于该条指令在流水线中执行的过程; 指令执行完 毕后,此 osm 也就进入了静止状态。 每一个时钟周期(cycle)内,都会有一些 osm 被唤醒,开始新一轮的活动; 同时会有一些 osm 进入休眠。对这些 osm 的调控是由一个叫做“同步 osm 调度 者”的机制来完成的,osm 之间不会直接进行通信。 2.3.2 madl 语法 前面提到过,madl 核心语言和注解语言两部分组成。在 madl 中,最重要 的是核心语言部分,下面介绍一下 madl 核心语言的内容。 mdal 文件中一般包含以下 5 个段(section) : define section manager section machine section function section operation section 下面对此分别介绍: 1define section 在 define section 中,定义了一些全局变量和函数原型。由于是全局的,这些变 量和函数在整个 madl 项目中都可见。 在这里定义的变量可以直接赋值, 也可以在 12 外部文件中赋值;而在这里定义的函数则是必须要在外部的 c+文件中实现函数体 的。 2manager section 一个 manager section 中包含两个子部分:class section 和 instance section。 class section 定义了令牌管理者的名称和类型, 而 instance section 则 针对 class section 定义的(class)类声明了相应的实体。这有点类似于 c+中的类 和对象的关系。 类的类型包括索引和返回值。 一个madl文件中可以包含多个manager section, 里面定义的类和对象都是全局的。 3machine section 该部分钟描述了一个框架(skeleton),包含了状态图和一些变量,这些变量对 于基于此 machine skeleton 的 operation section 是可见的。其中一种特殊的变量是 token buffer,用来存储申请到的 token。 一个 machine section 可以包含以下几个 subsection: initial osm 的初始状态,即潜伏(dormant)状态 state osm 的普通状态 edge 连接状态的边 buffer token buffer var 变量 每一个 machine section 中直可以包含一个初始状态(initial),而普通状态 (state)不限数目。 4function section 此部分定义一个内部的 madl 函数。这与 define section 中的函数不同,内部 函数的函数体是 madl 的一部分,而 define section 中定义的外部函数的函数体在 外部 c+文件中。 一个 function section 包含一个函数名称、一个可选的变量部分和一个 evaluation subsection。变量部分定义了本地变量,evaluation subsection 实现了函数 中的运算部分,其中包含的语句可以对本地和全局的变量进行读写。与 c 中的函数 不同,madl 的函数不具有返回值,其“返回值”可以通过可写参数代替。 与外部函数一样,内部函数也是全局的,在整个 madl 项目中都可以被调用。 另外还支持递归。 5operation section 13 此部分描述了一个语法操作(syntax operation),而且必须是在一个 skeleton 下完成。 operation section的subsection可以对skeleton中定义的本地变量以及define section 中定义的全局变量进行操作。 一个 operation section 包含一个名称和以下几个部分: var:本地变量声明 这个部分是可选的,它的语法与 machine section 中的变量定义方式差不多。只 是多了一种变量类型or-node, 一个 or-node 变量对应了 and-or 图中的一个节点。 syntax:operation 的汇编语法 这个部分定义了该操作的汇编语法,比如它可以规定本操作的语法为“mov id1 id2”,这个语法类似于汇编语言中的语法,只是语法表达式中的每个词之间是用空 格或符号隔开的。语法表达式里的词可以是以下几种: (1) string 类型,如“ldw”。 (2)变量,可以是全局或本地变量。当把算术值转为 string 时,可以用 modifiers 来指定格式,关于 modifiers 后文有叙述。 (3)table lookup,如 tablea1,这个 table 需在 define section 中定义。 (4)coding: operation 的二进制编码。 这部分定义了该操作的二进制编码,是与其汇编语法一一对应的。编码中的元 素之间以空格隔开,一个编码元素可以是以下几种: bool 值,即 0 和 1,还有无“-”如:0011-00- 变量,如 v1 or-ed bool 值,如:(0011|1100) eval: 初始化操作 在运行时,operation 会和 machine skeleton 绑定,在这个时候,eval 里面的操 作就被执行。与 function section 中的 eval 部分相类似,这个部分里也包含了一些 列的 statements。 trans:状态跳转中的计算和事务处理 此部分描述了 osm 里 edges 上的行为和计算。 在 madl 中,有两个比较常用的命令: import 命令: 该命令的作用是导入其它的 madl 文件,类似于 c 语言中的 include。 using 命令: 此命令的作用是将一个 machine 框架的描述(machine section)和其它一些操作 14 描述(operation section)联系起来。在 using 命令之后直到下一个 using 命令或者文 件的结尾,这其中的所有 operation section 都是以该 using 命令里所使用的 machine 描述为框架的。 在 madl 文件中,符号#表示注释,用法同 c+中的符号“/”,即从此符号 开始到此行结束为注释内容,例: # this line is comment to the end 符号#类似于 c+语言中的/* 或 */,即夹在中间的部分被注释掉,例: # this paragraph is commented to the next symbol # 以上就是 madl 的一个简要的核心语法描述,由于注解语言只是起辅助作用, 在 madl 文件里即使不出现也不会影响程序的正确性,所以在这里就不再详述了。 2.4 用 madl 进行仿真器建模的优势 2.4.1 与其他语言比较 veriloghdl 等硬件描述语言抽象层次太低,而且仿真起来速度非常慢,只能 作为电路具体实现的语言工具,不适用于建模。 systemc 是现在比较热门的一种建模语言,但是这种语言抽象层次还是比较 低,只适用于模拟仿真和硬件综合,难以生成设计空间探索所需要的软件工具。另 外,由于该语言处于较低的抽象层次,因此造成建模繁琐,并且仿真速度慢。所以, systemc 也不是一个适合进行设计空间探索的语言。 c 语言属于较高的抽象层次,对底层硬件的表述模拟较为困难,传统利用 c 语 言手工编写仿真器的方法需要耗费大量人力和时间,如文献13中提出的以 c 语言 实现仿真器,需要对每级流水线单独建模,非常繁琐,实现基本的功能总共需要上 万行代码,而且不能做到真正的时钟精确,只是近似的模拟。 标准建模语言 uml 与 adl 在某种程度上似乎有些相似, 都是对某一系统的结 构性的描述,尤其是 uml 中的组件图,描述了硬件组件之间的联系22,与 adl 的某部分功能很像。 但是 uml 通常是对软件事务进行描述, 而且 uml 的描述可以 说是“有倾向”的,它的描述会对系统的某一个功能有侧重,有时这个功能就是整 个系统所要实现的功能;而 adl 在保证整体框架的同时,对体系中每一个组件都 给予同样的“重视” 。另外很重要的一点就是虽然 uml 可以勉强描述一个体系结构 15 的整体框架, 但是由于缺少更丰富的和更有针对性的语句, uml 很难对指令集进行 描述。 有些其他的体系结构描述语言也可用来建模,比如 lisa,expression 等。 但是它们各有局限性。 lisa 是业内比较常用的一种 adl 语言,lisa 最基本的功能单元是操作 (operation),与流水线中的指令行为相关12。lisa 采用 gantt 图来控制指令执行的 流程。当一条指令被取指和译码后,它被分解为一系列的操作并插入到相关流水级 的 buffer 里,当指令在流水级中流动时相应的操作被执行。但是利用 gantt 图只能 模拟流水线顺序执行的情况,因此,lisa 不能为乱序执行的超标量处理器建模,这 是一个很大的局限。 expression 是另外一种被业界经常使用的 adl 语言,常用来生成仿真器和 高级语言的编译器4。 expression 提供体系结构模版来完成对芯片的描述, 但是 它对于流水线控制的信息不是显式可见的,用户无法自行定制对流水线的控制,这 个缺点使得这种语言的建模范围有着明显的局限性。 下面的表格总结比较了其它 adl 语言各自的特点,表里的括号“ () ”代表虽然 支持,但是有很大的局限性1。 表 2 各种 adl 语言特点 table 2 characteristics of different adl mimo la udl/i nml isdl sled maril hmde s tdl categor y hdl hdl behavi oral behavi oral behavi oral mix mix mix compil er mssq, record coac h cbc, chess aviv vpo marionimpac t prop an simulat or mssb/ u coac h sign/si m checke r gensi m behavi oral represe ntation rt-lev er rt-lev er rt-list rt-list rt-list rt-list rt-list 16 hierarc hical behavi oral represe ntation yes yes yes no yes yes structu ral represe ntation netlist netlist resourc e resourc e resourc e ilp compil er support yes yes yes yes yes cycle simulat or support yes yes (yes) (yes) no no (yes) no control path yes yes no no no no no no constra int model boolea n resourc e resourc e resour ce boolea n other feature s preproc essing support preproc essing support madl 支持仿真器和反汇编器的生成,操作层和硬件层的分层次抽象结构使得 madl 兼顾了抽象性和精确性,既包括对整体的体系结构框架的描述,又包括了对 指令集的描述,并使得可重定位编译工具的生成成为可能12。值得一提
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肌萎缩侧索硬化的小分子药物研究进展总结2026
- 2025朔州市二马高级职业中学工作人员招聘考试试题
- 2025江苏省相城中等专业学校工作人员招聘考试试题
- 2026年高考适应性考试(预测)语文试题及参考答案
- 基坑施工施工技术方案
- 微流控芯片技术辅助下的初中生物分子实验课题报告教学研究课题报告
- 基于人工智能的智能化自适应学习平台架构优化教学研究课题报告
- 基于5G技术的2025年城市智慧交通诱导系统可行性分析
- 高中生物实验教学中科学探究能力培养策略课题报告教学研究课题报告
- 2026年医疗AI影像识别行业创新报告
- 2025年河南省三支一扶招聘考试(3000人)(公共基础知识)测试题附答案解析
- T-CCEMA 0006-2024煤矸石基人造土壤基质
- 2025年国企物业考试试题及答案
- GB/T 3033-2025船舶与海上技术管路系统内含物的识别颜色
- 103 人工智能在教育领域的发展趋势与教师准备
- 精神分裂症测试题
- 江苏省无锡市2025年中考地理真题试卷附真题答案
- 生产管理晋升转正述职
- 疝气病人出院宣教
- 2025年南通纳米碳酸钙项目可行性研究报告
- 老年黄斑变性进展护理
评论
0/150
提交评论