计算机组成原理课程实验教学探讨
2015-05-30杨泽雪闵莉王建伟
杨泽雪 闵莉 王建伟
摘要:针对计算机组成原理课程理论和实验教学的特点,分析实验教学存在的问题,提出通过计算机组成原理虚拟实验系统和新型三段式实验项目加强实验教学,该项目包括设计一个初始指令集、设计一个数据通路和控制单元、为处理器编写模拟器3个部分,说明通过该项目学生可以开发和模拟自己的处理器,从而提高实验教学的质量。
关键词:计算机组成原理;计算机专业;实验教学;虚拟实验系统;处理器
引 言
计算机组成原理是计算机专业本科生必修的一门重要专业基础课,在计算机系统层次中具有承上启下的作用,是学习计算机体系结构、操作系统、编译原理、计算机网络、数据库等后续课程的基础 。计算机组成原理主要讲解计算机的硬件组成及整机的工作原理,课程的内容主要包括运算器、控制器、存储器、CPU、总线、指令系统和输入输出系统等 。计算机组成原理课程的教学应建立在硬件、软件组成的系统平台上,不应被理解为单纯的硬件课程,还需要用到汇编语言和操作系统等方面的知识。课程目的也不应该只局限在学习硬件知识上,而更应该立足于如何利用课程学习到的计算机各部件的工作原理设计实现实用的系统,使学生具有较强的计算机应用能力和创造力。
为了实现理论和实践的结合,计算机组成原理的实验教学非常重要。实验教学在教学计划中占据相当大的比重,只有抓住实践环节,才能使学生把理论知识真正转化成自己的能力。
1 课程理论和实践教学现状及存在问题
1.1 理论教学现状
对于计算机组成原理的理论教学,国内外模式存在较大差异。国外的教学主要以学生为主,通过给学生布置研究性课题或仿真性课题、阅读文献,让学生自主完成课程的学习;学生可以在完成课题的过程中学习和领悟计算机各部件的组成及工作原理,通过完成阅读性作业扩展自己的知识面,能够更好地达到课程要求的理沦和实践相结合的目标 。国内的教学主要以教师为主,通过课堂教学和课内实验完成教学 ;而课堂教学主要依靠教师的单向性讲解给学生灌输相关的基本概念和知识,学生与教师之间缺少交流,一旦跟不上教师节奏,学生将失去学习的兴趣;课后的阅读量比较小,大多数学生主要以通过考试为目的;课内实验大多以验证性实验为主,很难达到理论和实践相结合的日标。
1.2 实验教学现状及存在问题
目前在很多学校计算机组成原理的实践教学得不到重视,整门课程大多以理论教学为主,实验教学为辅,实验学时只占课程的1/4,而且实验课程内容陈旧。辅助实践教学的计算机组成原理课程设计也应该在本课程中占据重要作用,而这方面实施效果不是很好,导致该课程以学为用的宗旨难以实现。在实践教学方面,主要存在以下几方面的问题。
1)实验设备与实验内容落后。
大多数实验设备都是某些公司开发的,更新困难,导致实验内容陈旧,只是一些最简单最基本的验证性实验。而计算机发展迅速,实验设备和实验内容很难跟上新技术的发展,使得实验缺乏创新性和自主性。
2)实验内容层次少。
大多数实验以验证性实验为主,缺少综合性的设计实验和自主性的创新实验。验证性实验只是机械地完成实验步骤,即使不懂得内部工作原理也能完成实验,学生要想完成一个综合性的计算机系统设计很困难。
3)实验考核方法不合理。
课程的考核主要以理论成绩为主,对实验部分要求不高,而实验的考核方法单一,主要以提交实验报告为主,考核以小组为单位进行实验,组内有些同学敷衍了事,考核结果不够公正。
2 实验课程改进方法
2.1 建立计算机组成原理课程的虚拟实验系统
在计算机组成原理实验教学中,实验作为学生深刻理解理论知识的一个重要方面,成为教学中不可缺少的重要组成部分。虚拟实验系统是现代教育系统中一种重要的教学资源,对实现教学改革,提高教学质量有重要的意义。
虚拟实验系统是组成原理实验教学手段的有效补充。绝大部分学校的实验设备都无法百分之百满足所有学生需求,而且组成原理的实验设备还具有更新快、价格昂贵等难以克服的问题,模拟实验软件以其低成本、高效率等特点成为组成原理实验教学不可或缺的部分。丰富的模拟元件和参数设置提高了实验的灵活性,降低了学校的实验成本,还可以有效避免实验中真实物理器件的损耗,扩充组成实验的范围和空间。图1给出了计算机组成原理虚拟实验系统功能图。
虚拟实验系统给出了实验操作过程,包括运算器组成实验、存储器组成实验、控制器工作原理实验和输入输出系统实验,使学生更好地理解课堂所学的原理,更好地提高学生的综合分析能力、动手能力和解决问题的能力,教师也能更方便地开展教学。
2.2 设置计算机组成原理综合实验项目
在课内实验设置上,可以将实验分成验证性、设计性、综合性和创新型4种类型,而除了验证性为必修实验外,其他几类可以通过课内大作业形式完成,基于学时的限制,还可以增加课程设计的环节。
例如可以开发一个新型的由3部分组成的项目,要求学生开发和模拟自己的处理器。学生分组设计并对自己的指令集进行编码,设计一个执行其指令集的数据通路和微控制指令,并在计算机上模拟其处理器的模型。该项目给学生自由发挥的空间,让学生设计自己的指令集,同时要求他们为自己的指令集编码并编译一个小程序。通过为他们的处理器建立一个模拟器,学生可以真正看到在自己的处理器上运行的程序。项目不需耍特殊的硬件或软件,也不要求学生有深厚的数字逻辑设计或编程经验。
该项目包括设计一个初始指令集、设计一个数据通路和控制单元以及为处理器编写模拟器3个组成部分。通过该项目,学生不仅学习了处理器的工作过程,而且体验了设计处理器的过程,还以模拟器的方式学习了如何在实际的计算机结构研究过程巾评价处理器的性能。
2.2-1 设计指令集
首先要求学生设计和编写自己的指令集,需要确定机器中应该包含哪些寄存器,创建一个机器指令序列,并且对每个指令编写一个唯一的二进制代码。可限制为同定长度的8位编码,指令存储在至少256个字节的存储器中,不允许复制一个现有的指令集。指令集至少包含寄存器和存储器之问的数据传输指令、基本的算术运算指令和条件控制指令。表l给出了一个指令集的例子。
学生设计的指令集可能与MIPS是相同的,提交的说明书可能与MIPS指令集具有相同的格式和日的,而区别往往在于指令的名字不同。这在学生初次实现这个项目时是允许的,但可以引导学生设计多样化的指令集,例如8080,8086,JVM,PDP-8等。
另外,学生设计的指令集可能过于庞大。对于好的学生,可能倾向于制定具有很多层的复杂机器,而对于没有很好理解课程内容的学生来说,可能设计容易理解但是执行复杂的指令,比如浮点算术运算或结构化程序设计中的while循环概念,一般省略分支指令。这种情况教师可以引导学生删除某些指令,比做大的修改更容易。
2.2.2设计数据通路
这部分要求学生设计执行指令集的数据通路和控制单元,需要说明数据通路的详细工作过程。数据通路需包含寄存器组,包括程序汁数器、指令寄存器、ALU、多路复用器、寄存器堆、符号扩展单元以及将各部件进行连接的导线等。数据通路不需要给出控制机器状态,控制多路复用器的输入,对各个寄存器的时钟输入等过程。学生需要提交控制代码,每条指令的控制代码需要根据一系列的微组合指令序列来编写。对于每条微组合指令,学生需要指定需要输入控制的每个多路复用器和设备的状态,也要指定哪个奇存器接收指令的数据。
当学生设计数据通路时,可能会发生数据通路无法执行指令情况。这有可能是因为滥用总线导致的,所以要求学生禁用总线,并画出所有部件之间的导线,使数据通路更清晰并且正确。
2.2.3设计模拟器
这个部分要求编写一个处理器的模拟器。为了证明自己的模拟器运行正常,研究其处理器的效率,该项目要求学生在他们的模拟器上执行由他们的指令集中指令编写的具有不同大小数据的程序。完成后,学生必须提交他们的模拟器代码,模拟器输出文件,并报告讨论他们的处理器的性能。
该处理器模拟器可以采用C或Java编写,还包括寄存器、RAM和机器的其他组件。模拟器必须是周期准确的,这意味着每个微组合控制指令必须进行建模。将由指令集编写的程序代码装入模拟RAM阵列来开始模拟过程,并将模拟的结果写入到一个输出文件中,用以验证他们的程序工作正常。该模拟器还打印出执行的指令和模拟周期的数目,从而评估其处理器的指令性能。
3 结语
后期我们会将虚拟实验系统和综合实验项目应用于学校的实际教学中,并在实践中进行完善,结合该课程理论和实践教学的特点,研究该计划的后续发展方向,形成该课程的完整实验教学方案,对计算机硬件人才的培养做出贡献。