吴继明,钟群锋,曾碧卿
(华南师范大学 计算机学院,广东 广州 501631)
计算机组成原理是一门研究计算机基本硬件组成和内部运行原理的课程,具有理论性强、难度大、内容抽象、实践性强等特点,是计算机类专业的核心课程,在计算机专业知识结构中起着承上启下的关键作用[1]。与课程配套的计算机组成原理实验课程,是实现理论知识与实践相结合的重要环节,国内外许多高校都在该专业安排相应实验,并以CPU设计为主体开展实践教学,培养学生的计算机系统设计能力[2-8]。当前普通高校的计算机组成原理实验课程的教学方式主要有2种形式:一种是以硬件描述语言和仿真器为主的在FPGA上进行的硬件设计方式[9-12];一种是以实验箱为主的验证方式[13]。基于硬件描述语言进行的FPGA硬件开发设计方式,可以极大地培养学生的硬件设计能力和工程能力,但是对非重点大学的学生来讲学习成本高、实验室硬件环境需要配套设置。基于实验箱的实验课程教学方式,又让学生难以深入理解计算机各个部件的具体结构和相互逻辑关系以及计算机的工作工程。
为了更好地培养学生的计算机系统分析、设计能力,突出实验过程中对器件之间数据、控制关系的理解,教师应尝试在硬件仿真平台Quartus II上,引领学生使用硬件描述语言VHDL完成实验箱上各个模块的仿真设计和模型机的设计。学生在仿真平台上分析出数据之间的关系、理解好器件之间的逻辑关系,再到实验箱上完成工程验证,但是,实验发现学生不是很愿意花时间自学VHDL语言和modlesim仿真平台的使用;另外,即使完成功能仿真后,学生在理解仿真数据之间的关系上也存在一定困难,尤其是对于运行测试程序的模型机,分析仿真数据就更不容易。
Logisim是一款开源的数字电路仿真软件,无须安装,是一种符号图设计语言,提供硬件设计所需的各种基本器件,器件都是参数化设定的;仿真输出界面可按需定制,每个器件或者每根连线上的数据都可以用数值、指示灯等方式显式实时输出,非常直观。以注重逻辑设计能力培养的仿真平台Logisim辅助实验课程的教学,既可以培养学生的自学能力、分析解决问题的能力和逻辑设计能力,又可以提高实验箱上工程验证实验的质量和效率,同时也可极大减少由于不懂原理盲目连线使用实验箱导致的设备损坏率。
实验是理论的延续与拓展,实验内容的安排既要考虑理论知识的深度,又要兼顾学生的综合能力。传统的基于实验箱的验证实验,主要有运算器组成、双端口存储器、数据通路、微程序控制器、CPU组成与机器指令运行、中断原理。基于实验学时的限制和学生综合素质的考虑,大多数普通高校只开设5个验证实验,每个实验3节课。
验证实验课之后,学生对理论知识的理解难以进一步深入,动手实践能力只能停留在端口连线和数据观测层面。为了改善实验效果,加强学生对理论知识的理解与应用,每个验证实验增加虚拟仿真设计环节,扩充2个综合实验,做到以虚辅实,虚实结合,提高实验课程的教学效果。实验内容见表1,每个实验开始的前2周,教师根据学生名单随机产生学生分组(2人一组),每个小组相互合作完成实验内容的仿真设计、功能仿真界面设计和仿真数据的分析。在到实验室进行验证实验之前,要求学生完成相应实验的仿真设计,通过虚拟仿真技术手段(预设的仿真设计内容)加深对相应理论知识与验证实验的理解,培养实验过程中的错误查找与调试能力。
理论课堂上,教师用一次课的时间介绍仿真平台Logisim的特点,帮助学生轻松掌握在该平台上进行逻辑电路设计的方法以及根据需要观察的数据对象设计功能仿真界面进行逻辑功能仿真分析的技巧。理论课之后,学生就可以利用自己的闲余时间进行运算器、存储器、控制器等模块的设计,通过仿真界面分析数据,理解其工作原理,撰写实验预习报告。
实验预习报告是整个实验教学过程中的一个重要环节,反映学生是否进行预先学习,是否基于虚拟仿真平台理解实验原理,是否对实验箱上的操作步骤了如指掌。实验预习报告模板由实验内容、工作过程、数据分析和实验步骤4块构成,其中,工作过程板块描述操作控制信号和时序信号作用下器件之间的逻辑关系——学生用理解的语言描述在虚拟仿真设计中领悟到的逻辑关系;数据分析板块基于虚拟仿真设计描述数据的流动路径和相应的驱动信号,反映模块间的运行机制与原理;实验步骤板块基于虚拟仿真设计过程中的理解,详细描述实验箱上验证实验的操作步骤及需要记录的有关数据。
表1 虚实结合的实验内容
完成符合规范格式的实验预习报告后,到实验室的实验箱上进行工程验证。每个学生选择一台实验箱,原合作小组内的学生空间上分离,在实验课堂上不允许看实验教学视频等资料,基于自己的实验预习报告,在理解与思考的环境中独立完成本次实验课程的内容。在实验预习报告后面补充实验箱上的观测数据,记录实验过程中出现的问题、解决问题的办法和取得的效果。实验课程后,当堂提交实验预习报告,避免学生之间相互抄袭。
2.3.1 双端口存储器案例
在基于实验箱的双端口存储器验证实验中,访存的地址和数据都需要通过连接到公共数据总线DBUS上的置数拨动开关SW来设置,但是许多学生经常在输入访存地址和数据方面出错。在控制信号和置入数据(地址)出现逻辑错误后,学生明白指定单元写入的数据不对,但是是哪个操作环节错误,不能在实验箱上直观地观察到。为了帮助学生更好地理解双端口存储器的工作过程,可在教学中引入基于Logisim仿真平台的双端口存储器仿真设计。设计中,根据需要观察的数据对象和工作过程,在双端口存储器的逻辑图中添加探针,自定义功能仿真的数据界面,如图1所示。
图1 双端口存储器实验
图1右侧是设计双端口存储器的逻辑电路,左侧是根据需要观察的数据对象设计的功能仿真界面,清晰地列出实验操作步骤和实验过程中相应数据的变化。①通过SW开关手动设置数据02H,给出有效的控制信号LDAR1和时序信号T4,即完成左端口访存地址的设定与锁存;②通过SW开关手动设置数据22H,给出有效的控制信号CEL#、LRW=1和时序信号T3,即完成双端口RAM左端口对02H单元写入数据22H;③通过SW开关设置数据02H,给出有效的控制信号LDAR2和时序信号T2,即完成右端口访存地址的设定与锁存;④给出有效的控制信号CER#,可立即观察到RAM右端口输出数据22H,再次给出有效的控制信号LDIR、时序信号T4,可观察到IR的输出为22H。另外,对RAM左端口进行访问时,LED指示灯通过“红色亮”状态表示该操作;对RAM左端口进行读、写操作或者右端口进行读操作时,相应的LED指示灯会呈现亮的状态,便于学生清楚当前的操作类型,判断控制信号的给出是否正确。
有了这样一个预先进行的虚拟仿真设计过程和数据仿真分析,学生就可以清晰表达出验证实验的操作步骤,理解实验内容的本质及其内部器件的工作过程,学生回到实验箱上就可以轻松完成实验和理解其工作原理。当验证实验出现错误时,学生也能够快速查找出错误原因并加以纠正。
2.3.2 微程序控制器案例
微程序思想控制器是一教学重点和难点,学生在传统的实验箱验证过程中,即使采用单拍的工作方式,也难以依据指令周期流程图透彻地理解指令的工作过程。另外,在每个CPU周期内需要哪些有效的控制信号、如何产生这些控制信号,数据是如何在器件之间流动的,在实验箱的验证实验过程中无法快速直观地识别出,尤其是当运行的机器指令程序出错时,学生不知道该从哪里入手查错调试。
为了帮助学生更好地完成验证实验并理解其内部原理,可在教学中引入虚拟仿真设计环节。在教学过程中,教师讲解完基本理论原理后,引导学生完成控制器的设计和模型机的连接,这样学生就可以在一个仿真设计的环境中透彻理解控制器的原理与模型机的运行过程。图2所示为应用微程序方法设计CPU中的控制器并完成实验箱上模型机设计的逻辑电路。为了清晰理解机器指令程序的工作过程和相应模块器件之间的数据关系,掌握计算机的运行过程,设计一个模型机的功能仿真界面,如图3所示。完成模型机逻辑电路设计后,学生就完全可以掌握微程序控制器、运算器、RAM及其他部件之间的逻辑关系与数据通路连接;基于这个功能仿真界面可以彻底明白程序、微程序、指令、微指令之间的关系,了解计算机的运行过程。
图2 多周期CPU模型机逻辑电路
图3 多周期CPU模型机功能仿真界面——执行完指令LAD R2,6的截图
为了比较教学效果,华南师范大学计算机学院把2016级计算机组成原理课程的4个教学班分成2个教改班和2个传统班。2个教改实验班的学生为188人,实验采用虚拟仿真技术进行辅助教学,要求在实体验证实验之前完成虚拟仿真设计;2个传统实验班的学生是189人,在理论学习后直接到机房做实体验证实验。课程结束后,通过对全体学生的实验报告、机房完成实验的时间及实验过程中的释疑次数进行分析,可以发现2个教改班和2个传统班存在显著差异,统计数据见表2。其中,评价指标Ta指实验平均耗时,计算方法为:Ta=(T1-T2)/2,T1为班级上50%学生完成该实验的时间,T2为班级上90%学生完成该实验的时间;评价指标Q_n指实验过程有疑惑或困难的学生数;评价指标Sa指班级上学生完成该实验的平均成绩。
表2的统计数据表明,在3个评价指标上教改班都优于传统班,尤其是实验5模型机实验,传统班的学生在理解模型机的工作原理与解决机器指令运行正确性方面存在很多问题,大多数学生超时完成实验。基于虚拟仿真技术辅助的实验教学过程对教师和学生产生很大影响,主要体现在4个方面。①实验过程得到极大改变。学生不再像以前那样对着实验课本逐条接线,不需要戴着耳机看着视频了解实验原理与工作过程。②每个学生完全可以根据自己对模块工作原理的理解,准确、快速地完成实验箱上线路的连接,对每次按QD按钮产生的一个机器周期内,数据总线、地址总线上LED指示灯的亮灭状态表示的数据了如指掌。③当某个指示灯表征的数据不对时,学生可以自主分析查找判断出是逻辑电路连接问题,还是实验箱系统问题。④实验课堂上,指导教师的角色发生很大的转变,不再是以前那样忙于解答学生遇到的问题,而是穿梭于各个学生之间,对他们提出问题以深化实验内容,既可以判断学生是否真正懂得原理,又可以察觉是否有人滥竽充数。
表2 计算机组成原理实验教学效果统计分析表
课程结束后的调查问卷显示,传统班的学生大多数认为实验太复杂、太麻烦,一旦出错不知如何定位分析,面对实验箱很难理解背后的工作原理。教改班的学生则普遍反映能轻松完成实验箱的验证实验,在实验过程中排除故障时也显得思路清晰、信心满满,对工作原理心中有数;甚至有的学生还希望能扩充指令系统做一个自己的CPU,下载到实验箱上进行工程验证。在这种基于仿真设计的教学方式下,把传统的验证实验转换为实践开发的过程,既能够调动学生的学习积极性,又可以极大地培养学生的逻辑设计能力和分析解决问题能力,同时还能有效遏制实验报告中相互抄袭的现象,改变实验过程中学生不知其所以然的状态。
基于仿真设计辅助的实验教学过程虚实结合、相辅相成,使学生能够在仿真设计过程中加深对所学理论知识的理解与应用,其按需设计的功能仿真界面有助于促进学生理解计算机各模块的工作原理与整机的工作过程。在同一年级不同班级进行的实验教改效果表明,虚拟仿真设计先行的教学方式更有利于学生借助可视化过程透彻理解原理,回到实验箱上后轻松自如地完成实体实验,同时也转换了实验指导教师的工作重心——通过提问的互动方式挖掘知识的深度。