欢迎来到论文网! 识人者智,自知者明,通过生日认识自己! 生日公历:
网站地图 | Tags标签 | RSS
论文网 论文网8200余万篇毕业论文、各种论文格式和论文范文以及9千多种期刊杂志的论文征稿及论文投稿信息,是论文写作、论文投稿和论文发表的论文参考网站,也是科研人员论文检测和发表论文的理想平台。lunwenf@yeah.net。
您当前的位置:首页 > 科技论文 > 计算机论文

一种指令级/流水线级模拟器的设计与实现

时间:2011-04-23  作者:秩名

论文导读:计算机系统结构实验一直是一个难题。在这些实验中学生需要了解指令集(如MIPS)的编码方式、各条指令的功能、流水线的工作过程、流水线对于某些特殊情况的处理方法以及流水线采用不同策略时其性能的差异等。指令级/流水线级模拟器成为了系统结构实验中必然的选择。
关键词:指令级模拟器,流水线级模拟器,计算机系统结构,计算机辅助教学,MIPS
 

在国内高校计算机专业中,计算机系统结构实验一直是一个难题。在这些实验中学生需要了解指令集(如MIPS)的编码方式、各条指令的功能、流水线的工作过程、流水线对于某些特殊情况的处理方法以及流水线采用不同策略时其性能的差异等,如果用传统的实物硬件进行实验,即使可行,也是很复杂的,学生难以通过实物了解流水线在不同时钟周期的内部状态。而且实物硬件器材成本高,容易损坏,很多学校开不起这些实验。如果利用模拟器来进行虚拟实验,则是灵活得多,成本也很低。因此,指令级/流水线级模拟器成为了系统结构实验中必然的选择。

1 相关模拟器分析

目前,国外某些机构已经研发出一些指令级/流水线级模拟器,可分为研究用模拟器和教学用模拟器两类。研究用模拟器,如OVPsim、SimpleScalar等,具有功能强大、性能优越等特点。但是,这些模拟器往往运行在类UNIX操作系统环境下,以命令行方式操作,缺少友好的图形界面;另一方面,这些模拟器由于过于贴近真实机器而具有过多的细节,提高了操作的复杂性。这些因素决定了研究用模拟器不适用于教学。在现有的教学用模拟器中,与本文模拟器相关的有WinDLX、EduMIPS64等等。

WinDLX是Windows平台上的DLX模拟器。DLX是专门为教学而提出的一种简化的RISC体系结构。可查看流水线运行情况,具有良好的图形界面,伴随着采用DLX为实例的教材而广泛使用。但目前体系结构教材已经转向以实际存在的体系结构(主要是MIPS)为实例,因此该模拟器也随之过时。它在功能上不支持非流水执行模式,无法使学生更好地了解单条指令的功能,也无法更直观地掌握流水模式与非流水模式间的区别;它不支持取消延迟槽,无法完成相关对比实验;没有撤销功能,无法取消误操作。这些都限制了它的应用。

总的来讲,这些模拟器目前功能上仍有一些不适用于教学的缺点,而且它们大都为外国机构所开发,国内尚缺少自主研发的教学用模拟器。因此,开发一种教学用指令级/流水线级模拟器是十分必要的。

2模拟器总体设计

为了能够满足教学实验的应用,模拟器的需求参照WinDLX,同时着重注意以下几点:

正确处理目标机器指令代码。在模拟各条指令在流水线内的行为的同时,还要能够正确处理指令间的各种相关性,比如数据相关、控制相关和结构相关等。

友好的图形界面。仿照WinDLX的界面进行设计,用户可以通过图形界面对模拟器进行各项操作,并且能够访问目标机的各项状态,如流水线、内存、寄存器组等等。

支持不同的模拟策略切换。用户可以选择是否采用流水方式执行指令,是否采用延迟槽,以及是否采用定向机制解决数据相关问题等。

便于扩展,能够实现多种体系结构。本文介绍的模拟器框架内可实现MIPS和SPARC体系结构的模拟,而且不排除实现更多的体系结构。

完整的模拟器状态记录,以便支持撤销与恢复。模拟器可单步执行一时钟周期或一条指令,同时也能够撤销上一周期或指令的工作,所以要在每一步执行前保存模拟器状态。

本文模拟器使用C#语言实现,总体框架如图1所示:

指令级模拟器

2.1 模拟器界面模块

界面模块作为一个客户来使用模拟模块而不参与模拟器内部的运作。

本文模拟器的主界面如图2所示:

矩形标注: 时钟周期图矩形标注: 断点管理矩形标注: 内存信息矩形标注: 流水线信息矩形标注: 寄存器信息矩形标注: 目标代码矩形标注: 统计信息图2 模拟器主界面

模拟器的主界面含有七个子窗口,分担了将模拟器状态图形化的大部分工作。它们分别是:代码窗口、寄存器窗口、内存窗口、流水线窗口、时钟周期图窗口、统计窗口和断点窗口。

在程序载入目标代码后,代码窗口将以目标系统结构的指令汇编格式显示各条代码,按指令地址、断点标记、汇编码等分列显示。在执行代码时,各流水线站所处理的指令行会以代表对应站的颜色标记。

通过寄存器窗口可以访问当前目标机器中的各个寄存器的值,包括通用寄存器、浮点数寄存器、特殊寄存器和流水线寄存器四组。其中,特殊寄存器包含系统结构定义的,在通用与浮点寄存器之外的寄存器,如MIPS中的HI、LO等;流水线寄存器包括当前流水线内部的一些寄存器,如EX.ALUout等。双击可以改变寄存器的值。寄存器窗口如图3所示:

指令级模拟器

图3 寄存器窗口

通过内存窗口可访问当前目标机器的内存,可通过菜单“内存”、“显示”来修改内存的显示格式,如十进制四字节整数、双精度浮点等,默认为十六进制单字节。双击可修改对应地址的值。科技论文,指令级模拟器。科技论文,指令级模拟器。

流水线窗口显示当前流水线的状态,包括各个流水线站正在处理的指令。科技论文,指令级模拟器。科技论文,指令级模拟器。双击可查看处理的详细过程。科技论文,指令级模拟器。

时钟周期图窗口用来观察流水线运行的过程,是最重要的窗口。它每行表示一条指令,每列表示一个周期,内容则表示对应的指令在对应周期下由哪个流水线站完成了怎样的工作。可通过该窗口来学习流水线对于数据相关、控制相关等特殊情况的处理方式。时钟周期图窗口如图4所示:

指令级模拟器

图4 时钟周期图窗口

统计窗口用于显示模拟器在执行了一段程序后的各项统计信息。

断点窗口用来管理断点,方便调试目标程序。每个断点包括地址和流水线站两个部分,当对应流水线站处理该地址的指令前,模拟器会中断。

对于该模拟器的操作流程,可用状态转移图表示:

 

用户命令:执行

2.2 模拟器模拟模块

该模拟器的模拟模块,负责模拟目标系统结构对指令的译码、执行。它使用Facade设计模式【1】,对界面提供接口,包括操作模拟器的各个方法和事件反调函数,以及构成模拟器的各个对象,如寄存器、内存等等。

在模拟模块内部,为了使该设计能够实现多种体系结构,提供一组抽象父类。这些抽象父类有:Controller、Instruction、Executer、Registers、Memory、Stage等等。在实现某种特定的体系结构时,需要继承这些类,如MipsRegisters:Registers。

为了能够保存模拟器各个对象的状态,使用Memento设计模式【1】,需要这些对象实现IMemento接口。保存状态时,父对象不仅要保存自己的状态,还要调用子对象的IMemento接口并保存子对象状态。

3 模拟器的实现

以MIPS64为例,实现模拟器。

首先出于图形界面的特点,需要将目标程序运行在单独的子线程内。这是因为:在目标程序执行过程中,不可以从主线程修改目标机的各项状态,否则可能会造成目标机无法正常运行,同时当目标程序结束或暂停后,必须通知主线程,使得使用者可以修改目标机的状态;当目标程序运行中出现了陷阱或异常情况,需要通过在线程间发消息来通知主线程,进行相应的处理;如果目标程序中存在死循环,应可通过主线程通知子线程停止运行。科技论文,指令级模拟器。这里可以使用C#中的异步方法调用【2】。

然后要确定该体系结构指令级流水线的结构,以及该体系结构指令在各流水站内的处理方法。本文模拟器采用MIPS经典的五站流水线【3】,在这基础上实现Executer类和Instruction类。Executer类负责对目标代码按周期或按指令进行模拟,其中各个Stage对象分工各个流水站的工作。而每条指令在模拟器中都是一个Instruction对象,采用了Template Function设计模式,不同的Stage对象将调用该对象不同的方法,以实现指令在各个站中的操作;在非流水模式下,只要把这些方法逐个执行即可。同时每条指令包含其源、目寄存器标示以及使用位置和产生位置的标示,用于在执行时判断相关性。

4 实验设计

完成了模拟器的开发、测试后,就可以在这个基础上开设3个实验【4】。

4.1 MIPS指令系统实验

该实验的目的主要是使学生熟悉MIPS指令系统及其特点,加深对MIPS指令操作语义的理解,同时熟悉模拟器的操作。

实验步骤主要是先配置好模拟器;然后载入一个事先准备好的MIPS程序文件,该文件含有MIPS指令集中挑选出一些有代表性指令,按照指令类别分段写在文件中,主要有Load/Store指令、算术运算指令、逻辑运算指令、控制转移指令等类别;然后学生逐指令执行各条指令,观察执行前后模拟器状态(流水线、寄存器、内存等)的变化。

4.2 流水线及流水线中的冲突实验

该实验的目的是使学生理解MIPS结构如何使用5段流水线来实现,理解各段的功能和基本操作,加深对数据冲突、结构冲突以及这些冲突对CPU性能影响的理解,以及掌握解决数据冲突的方法。

 

查看相关论文专题
加入收藏  打印本文
上一篇论文:一种视频对象分割新方法(图文)
下一篇论文:医院信息系统网络安全问题研究
科技论文分类
科技小论文 数学建模论文
数学论文 节能减排论文
数学小论文 低碳生活论文
物理论文 建筑工程论文
网站设计论文 农业论文
图书情报 环境保护论文
计算机论文 化学论文
机电一体化论文 生物论文
网络安全论文 机械论文
水利论文 地质论文
交通论文
相关计算机论文
    无相关信息
最新计算机论文
读者推荐的计算机论文