- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第 PAGE 页
基于Web虚拟仿真器在《计算机体系结构》本科教学中应用
一、引言
计算机体系结构是计算机本科专业一门重要专业基础课,是一门从架构角度学习、领会计算机系统必修课程。这门课在计算机专业知识体系中有承上启下衔接地位,能够把计算机组成原理、操作系统、编译原理、汇编语言等课程中所学软硬件知识有机地结合起来,有利于建立起计算机系统设计完整概念。
然而这门课程教与学过程中都存在不少困难,很多理论原理用传统教学法难以让学生有效地理解。怎样将体系结构课程中那些抽象难懂主题以生动清晰方式展现在学生面前,让学生可以与这些主题中流程动态交互方式来学习,是这门课程教学中一个挑战。虚拟仿真器(即模拟器)就成为解决这一挑战有力工具。在国外著名大学教学中都借助了这样手段,诞生了许多这样模拟器工具[1,2]。
这些国外常用模拟器在教学中应用时还存在不少问题,其中比较突出是:有与教材内容匹配度不够高;有操作复杂,运行结果不宜理解,缺乏相应动画效果;有则过于简化,覆盖功能集太小等。这些不足已成为模拟器真正提高教学质量绊脚石。
在国内设计模拟器中,同济大学张晨曦教授开发一套体系结构模拟器算是国内同类模拟器中佼佼者[3]。然而在我们教学使用中也发现它虽简单易用,原理展示清晰,但是仍不能满足我们教学需求。比如,其中MIPSsim模拟器不能在64位系统上运行,在MIPS指令集支持上受限,对浮点L.D与S.D指令支持不好等。其中Cache模拟器没有清晰展示原理细节,只适合性能剖析实验。这套模拟器尚缺少超标量、多线程、虚拟存储、SIMD、输入输出等方面支持。还有就是只能在windows平台使用,带来了使用上限制。
二、基于Web体系结构模拟器整合设计
从头设计全套体系结构模拟器是要花费大量人力物力。我们考虑原则是:尽量整合国内外优秀模拟器技术,并且容易获取、容易使用,不受使用平台限制。用Web技术整合现有优秀模拟器,只需一个浏览器,不需事先安装,不论什么平台都可访问使用,而且还可以方便我们对每个学生使用情况进行监控。我们在校内建立了一个教学模拟器服务器网站(校内IP是172.23.204.31)。里面整合了国外著名大学使用一些Web模式体系结构教学用模拟器。图1是该计算机体系结构教学模拟器主页。
由于包含模拟器数量较多,下文简单描述其中几个。图2是基于WebMIPS模拟器,能够演示MIPS五段流水线中用到各个数据通路部件,特别是冲突检测单元与定向单元。模拟器中不仅列出了每条指令类型(I型、R型或J型等)与二进制格式(指令各个字段),还把MIPS指令执行过程与流水线处理、控制与数据通路设计结合在一起。
图3是一个简单流水线模拟器,以时钟周期图方式演示了5段流水线冲突问题及其解决方案,主要是针对数据冲突解决方法(指令调度与定向技术)。图4是侧重动态调度技术流水线模拟器,不仅可以演示静态调度,还可以对比演示常用动态调度技术,比如记分牌算法(Scoreboarding)与Tomasulo算法。
图5是针对动态分支预测技术模拟器,可以演示分支历史表(1位或2位)技术与关联预测(2*2)技术。图6是向量机模拟器,可以动态展示向量机执行过程以及冲突检测,并可以对向量机中链接技术(Chaining)做对比剖析教学。
三、应用示例
本节以图3所示简单流水线模拟器为例,剖析一下该模拟器使用。在图1所示模拟器主页页面选择Pipelining(w amp; w/o forwarding),便进入到该流水线模拟器界面。先在界面左上角指令执行周期设置窗口中设置长周期指令执行时间(该执行时间是5段流水线中EX段时间),比如分别设置浮点加减、浮点乘法、浮点除法与整数除法执行时间为2、4、6与2个时钟周期,如图7所示。除了这4类指令之外,其他所有指令执行时间都默认是1个周期。
通过右上角添加窗口添加几条要执行指令,比如,依次添加以下4条指令,添加后结果如图8所示,分别为浮点加载指令、浮点加法指令、浮点加法指令与浮点存储指令。指令添加完后,潜在冲突窗口就给出了这几条指令之间潜在冲突剖析,如图9所示。指令0与1之间存在关于寄存器F1RAW写后读冲突(因为指令0写F1,指令1读F1),指令1与2之间存在关于寄存器F3RAW冲突(因为指令1写F3,指令2读F3),指令1与2之间存在关于浮点加减运算部件结构冲突(因为两条指令会同时用该算部件),指令2与3之间存在关于寄存器F4RAW冲突(因为指令2写F4,指令3读F4)。
然后,不采用定向技术运行这段代码(不勾选Data Forwarding),可以单步执行,观察流水线每步操作,也可连续运行。图10给出是运行结束后时钟周期图,红色S标记是停顿周期。从中看出,指令1要停顿
原创力文档


文档评论(0)