计算机组成原理课程教学探讨

时间:2022-11-22 10:11:53

计算机组成原理课程教学探讨

摘要:在分析计算机组成原理课程地位和教学现状的基础上,以计算机系统能力培养为导向,借鉴国内示范高校的教改经验,探讨地方普通高校计算机组成原理课程的教学内容、教学实践和教学方法,并阐述教学系统设计及具体实施过程。

关键词:计算机组成原理;系统能力培养;地方高校

当今时代计算机技术的应用极大地推动了社会经济的蓬勃发展,不断改变着社会的生活方式。计算机技术的高速发展对高等学校计算机类专业学生的培养也不断提出更高的要求,国内计算机领域的专家学者也在不断探索和改革计算机类专业的教学模式、方法和内容。近年来,各高校都在实践基于系统能力的培养模式。系统能力是由系统知识和工程实践能力组成的:系统知识,即掌握计算机核心系统的工作原理及其构造方法,理解计算机系统的软硬件相互作用关系;工程实践能力,即用工程方法开发计算机应用系统。

1课程地位和教学现状

计算机组成原理课程在计算机类的培养方案中一直作为核心课程,在课程体系中占有重要位置,起到承上启下的作用[1]。在从2009年开始的全国计算机专业研究生入学考试中,计算机组成原理作为4门核心基础课之一,并且占有45分,可见其课程地位的重要性。然而,学生对这门课程学习的积极性普遍不高,学生认为“难学”,教师觉得“难教”。究其原因,可能有以下几点:①课程知识点涉及面广、多而繁杂、概念抽象[2]。该课程既不像离散数学课程逻辑性强,也不像数据结构有算法理论,更不像高级语言可编程实现。②现在的就业岗位,绝大多数岗位要求的都是软件编程类。各高校的研究生招生的方向也是软件方向居多,硬件方向偏少,长期以来就在学生中形成了“爱软怕硬”的现象。③课程内容主要是以讲授功能部件的工作原理为主,软硬件脱节,难以建立计算机系统的层次感,难以深入理解计算机系统的工作过程。④没有以处理器的设计为主线来讲授,所以难以建立计算机系统的整机概念。近年来,在全国计算机教学指导委员会的指导和推动下,各高校都在进行计算机系统能力培养的教学改革。国内有多所985高校在10年前就已经开始了系统能力培养试点工作,现在他们的成功经验开始在其他高校示范推广。到2017年3月,已有58所高校入选教指委系统能力培养试点高校。目前,国内主要有4种系统能力培养模式[3]:①以RandalE.Bryant教授等编写的《深入理解计算机系统》教材为代表,从程序员的角度来讲述应用程序员如何能够利用系统知识写出更高效的程序。②以YaleN.Patt教授等编写的《计算系统概论》教材为代表,目的是让学生在掌握计算机底层工作的原理机制之后,能更加从容地解决以后可能面临的新问题,包括高级编程语言方面的问题。③以袁春风教授编写的《计算机系统基础》教材为代表,使学生能够很好地将高级语言程序、汇编语言、编译和链接、组成原理、操作系统等相关的基础内容有机贯穿起来,以建立完整的计算机系统概念,从而能深刻理解计算机系统的工作原理。④以“一个CPU、一个OS、一个编译器”为目标,在统一硬件实验平台上以MIPS或者ARM指令集为基础,逐步建立深化系统观念。这些都是国内顶尖“985”高校探索出来的行之有效的培养模式,但对学生能力、教师水平、实验设备等方面都有很高的要求,地方高校很难一步到位、全面推广,必须因校制宜、量体裁衣。

2教学系统设计

2.1构建教学内容。近年来,国内一些高水平的高校大多选用国外的一些经典教材,如DavidPatterson教授和Hennessy教授编著的ComputerOrganizationandDesign:theardware/SoftwareInterface,Bryant教授等编著的ComputerSystems:AProgrammer’sPerspective等。这些教材虽然有中译本,但篇幅太大、内容太多,给学生的学习带来较大困难。一般地方高校将其作为参考书,并结合国内的优秀教材,构建教学内容。教学内容构建的原则如下:①把硬件和软件结合起来讲授,“软硬兼施”,使学生熟悉软件和数据在计算机中的表示、存储、类型转换、局部性原理、编译优化、执行过程等,内容具体而不抽象,使学生能够正确分析和解决软件运行中出现的各种问题,帮助学生编写高效率的程序代码;②以MIPS指令集处理器的设计为主线,使学生熟悉数据通路和控制器的设计思想,清晰、具体地建立整机的概念。这样组织教学,内容线索清楚、多而不乱。具体内容安排如下:①计算机概论部分,减少对计算机的基本介绍部分内容,增加计算机系统的层次结构内容、计算机开发与执行过程和性能评价部分的内容。②运算方法和运算器部分,增加的内容有结合C语言来讲解数据在底层的表示、存储、类型转换、运算、大端小端等知识点,可以激发学生的学习兴趣。特别是一个运算同时有无符号数和有符号数参加、不同类型数据在位扩展和截断运算时都会出现意想不到的结果,学生会特别好奇,有学习的动力。把C语言中的运算与MIPS指令中的运算对照讲解,使学生能够从高级进入到底层,有知其然而知其所以然的感觉。在基本运算部件中,强调带标志位的加法器,与后续的CPU设计内容相呼应。③指令系统部分增加的内容有MIPS指令系统和MIPS指令汇编语言,各种程序结构和过程用调用的机器代码表示。给学生讲解汇编和反汇编的过程,学生会感兴趣,觉得有收获。④中央处理器部分,该部分内容与原来只讲授CPU的基本工作原理完全不同,是具体以一定数量的MIPS指令集为例,详细分析每条指令的格式和实现过程,构建数据通路,设计组合逻辑控制器和微程序控制器,对于流水线部分,主要讲清楚其工作原理和存在的问题及解决办法。⑤多层次的存储器体系结构部分,该部分的内容与之前没有明显的增减,但在程序访问的局部性和Cache命中率等知识点的讲授时应结合C语言程序,可以加深学生对计算机工作原理的认识和理解。⑥总线及输入输出系统部分内容没有明显的增减。总之,把软硬件结合起来讲授,可以吸引学生的兴趣,调动学习的积极性;以MIPS指令集为基础→功能部件→单周期CPU→多周期CPU→流水线CPU为主线,能够使学生建立整机的系统概念和设计能力。2.2规划实验教学。1)原来的实验教学设计。举例来说,湖北工业大学原有的实验项目是运算器实验、存储器及数据通路实验和微程序控制器实验等3个实验项目,平台使用的是基于FPGA的试验箱、QuatrusⅡ软件平台和VHDL语言。该实验方式带有综合性和设计性,但受硬件条件限制,主要是利用实验系统提供的功能部件来完成简单的设计实验,很大程度上是偏向于验证性,微程序控制器实验也主要是在系统提供的微程序中进行微指令修改。这对加深理解计算机工作原理有帮助,但对构建整机概念和设计CPU支持不足。此外,还有如下缺点:①实验过程繁琐,实验过程中,需要学生先选择电路模式、芯片参数设置、引脚锁定、USB-Blaster连接、配置文件下载等一系列过程,这些过程既繁琐又容易出错,最主要的是与实验的主要任务不是密切相关,浪费学生很多时间,影响实验效果;②实验灵活性不够,由于试验箱的数量有限,学生只能在实验室完成实验,限制了学生实验的时间,对学生来说,没有时间选择上的灵活性;③试验箱容易损坏,随着时间的推移,试验箱逐步损坏严重,又不能及时补充,严重影响学生的实验效果。2)实验平台选择。实践教学采用真实的硬件设计方式固然很好,但一般地方高校的硬件设备可能支持不足,还要求学生在短时间内熟练掌握硬件描述语言以及软硬件开发环境,实属不易。此外,学生畏难情绪严重,对师资要求也高,抽象的硬件描述语言使学生很难建立设计与电路的对应关系[4]。所以,如果一味强调硬件上的实现,可能还难以达到设计CPU的初衷。通过学习其他高校的先进经验,湖北工业大学实验平台现在采用logisim仿真软件。logisim是一款基于Java的应用程序,可运行在任何支持Java环境的平台,由于是免费软件,不存在商业软件授权和费用问题,对办学经费紧张的地方高校非常适合。Logisim中的设计是图行化界面,学习快捷、易于上手,电路的设计和仿真都很方便,可以完全脱离硬件仿真运行[5]。学生可以方便地在自己电脑上使用,增强了实验的灵活性,也方便了教师对实验结果的检查和验收。3)实验项目设置。实验项目有ALU设计实验、寄存器堆设计实验和MIPS单周期(多周期)CPU设计实验3个项目,由于学时原因,学生在实验课内无法完成实验任务,需要学生在课外花费大量的时间。第1个ALU设计实验,主要让学生完成1个32位的加法器,1个能够产生加减控制、溢出判断、符号控制、结果选择控制等信号的局部控制器,1个能够产生加减运算输出、逻辑或运算输出、比较结果输出及各种运算标志位的运算器。第2个寄存器堆设计实验,主要是让学生构建1个MIPS寄存器组,内部包含32个32位寄存器,具有1个写入端口和2个读出端口。第3个MIPS单周期(多周期)CPU设计实验,让学生完成10条以上MIPS指令的单周期或多周期的CPU设计并通过测试程序的测试。第3个实验在前2个实验的基础上,要添加指令译码器、主控制器、地址产生和转移逻辑、位扩展等部件。控制器主要采用组合逻辑控制器。单周期和多周期CPU设计实例如图1和图2所示。在软件仿真平台上完成实验,优点是同样能够培养学生处理器的设计能力,加深对计算机的理解,建立整机系统的概念,方便灵活,减少了学生的设计和实现难度,实验成功率会提高。不足之处是难以提高学生的硬件系统设计和调试能力。对于部分感兴趣的同学,可以通过短学期选修课程设计来提高硬件设计和调试能力。4)过程管理加强。上述3个实验项目,学生在课内安排的实验时间内是难以完成的,需要在课外安排时间,因此,应该加强监督管理和课外辅导。实验采用小班上课,任课教师现场讲解和指导,课外通过线上和线下进行辅导答疑。虽然没有严格的考勤,但设置几个模块的完成时间和检查点,并对落后进度的学生给予帮助。对每位同学的实验要验收实验结果和提问答辩,而不仅仅是批阅实验报告。5)课程设计增设。利用暑期短学期实践时间,让部分有兴趣的同学可以继续选修这门课程的课程设计,在logisim仿真平台上完成理想流水线→转发流水线→气泡流水线→分支流水线CPU的设计。愿意再继续深入学习的同学,可以基于VerilogHDL设计并下载到FPGA实验板上。2.3设计教学方法。除了采用通用的教学方法外,结合计算机组成原理这门课程和学生的学习状态,主要可以采用以下一些有针对性的教学方法。1)激发学习热情。目前,学生对计算机组成原理课程的学习积极性普遍都不高,但对高级语言课程学习很感兴趣,如讲解C语言程序在计算机中执行的过程和可能出现的问题。同一功能的不同程序为何效率有很大差别等问题,激发了学生的学习积极性。把硬件和软件结合起来讲,使学生能够深入理解计算机的工作原理和工作过程,可以提高学生分析问题和解决问题的能力。例如:通过分析不同程序运行中的Cache命中率,让学生懂得只有深入理解计算机底层的工作原理,才能编制出高效的程序。再例如让学生思考,在浮点加法运算中,(X+Y)+Z=X+(Y+Z)是否一定成立?引起学生兴趣。2)消除畏惧心理。学生对硬件电路设计有畏惧心理,在计算机组成原理课程的教学中,要淡化元器件的设计细节,强调以功能模块设计为先导。采用课堂现场在logisim仿真软件上演示一些功能部件设计过程,如同玩游戏、搭积木,消除学生畏惧心理。3)目标驱动教学法。以建立整机系统概念、深入理解计算机系统工作原理为目标,以MIPS指令集为基础设计CPU作为主线组织课程的教学内容,线索清晰、多而不乱;采用与C语言程序相结合的方法来讲解计算机的工作原理,激发学生的学习兴趣,具体而不抽象。4)采用多种方式讲解知识点。采用前后内容关联讲解和多用汇编讲高级语言程序,多用图解释概念,使学生容易接受和理解一些比较枯燥和抽象的知识点。5)探索本科生导师机制。导师为学生设置问题,让学生课外查阅资料,组织课外小组讨论,开展课外CPU设计竞赛等活动,鼓励学生参加大学生电子竞赛、物联网大赛等科技竞赛活动。

3结语

作为地方高校,基于计算机系统能力的培养,在计算机组成原理课程的教学改革方面,笔者从教学内容的组织、实验平台的选择、实验项目的规划、教学方法的设计等方面进行了一些探索。教改永远在路上,如教学内容还需要深化、实验规模还需要扩大,在课程体系上还需要与操作系统、编译原理等核心课程有机结合,只有这样才能真正达到计算机系统能力培养的要求。

参考文献:

[1]唐朔飞,刘旭东,王诚.“计算机组成原理”课程教学实施方案[J].中国大学教学,2011(11):42-45.

[2]袁春风,张泽生,杨若瑜,等.“计算机组成与系统结构”课程建设思路与教学实践[J].计算机教育,2012(2):62-66.

[3]王志英,周兴社,袁春风,等.计算机专业学生系统能力培养和系统课程体系设置研究[J].计算机教育,2013(9):1-6.

[4]谭志虎,胡迪青,秦磊华.计算机组成原理课程设计的改革[J].电气电子教学学报,2016(6):110-112.

[5]StanleyT,ChettyV,StylesM,etal.Teachingcomputerarchitecturethroughsimulation:AbriefevaluationofCPUsimulators[J].JournalofComputingSciencesinColleges,2012,27(4):37-44.

作者:邵雄凯 叶志伟 欧阳勇 李浩 王春枝 单位:湖北工业大学 计算机学院