韩东红 徐久强 史岚 刘铮
摘要:《计算机组成原理》主要学习计算机系统中5大硬件部分的功能结构、工作原理及协调工作方式,是计算机科学与技术专业的核心专业课。本文针对该课程理论性强、内容抽象的特点,就教学和学习中存在的一些共性问题,尝试利用多种教学手段、建立贯通课理念、激发学生学习主动性等教学改革方法,旨在提高学生对硬件系统的学习、分析和设计能力。
关键词:计算机组成原理;硬件系统;分析和设计;教学改革
中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2018)52-0118-02
一、前言
《计算机组成原理》是计算机科学与技术专业的一门核心专业课,该课程基于冯·诺依曼模型,系统讲述计算机内部结构以及计算机五大硬件部分的功能特征、工作原理、交互方式和基本设计方法[1],是全国计算机专业硕士研究生入学考试的重点专业考试课程,也是师生普遍反映难教难学的课程之一[2-3]。
该课程的先导课包括《模拟电子》、《数字电路》、《汇编语言程序设计》、《C语言》等,后续课程有《计算机体系结构》、《接口技术》、《计算机网络》等,关系比较密切的还包括《操作系统》、《编译原理》等课程。可见该课程在计算机专业本科生的知识体系中起着承上启下的作用,在计算机系统中占据非常重要的地位。作为诸多硬件课程的核心骨干课,根据多年的教学体验,学生们在学习过程中主要存在以下问题:
1.课程内容抽象,学生难以理解。课程中讲授的很多内容都是芯片级内部发生的,例如数据是如何表示、如何存储的;如何构成一位加法器,进而构成并行加法器并扩展成为能实现多种算术逻辑运算的ALU;控制器是如何取指令、译码并执行的,期间控制信息、地址信息、数据信息如何在数据通路上流动;Cache工作期间,其硬件部分是如何存储主存地址、判断是否命中并执行替换策略的等;中断处理过程中I/O接口的各寄存器内容的如何动态变化等等。这些学习内容非常抽象,如果仅凭课本、PPT及课堂讲解,缺乏形象、具体的教学手段,大多数学生难以掌握课程内容。因此,如何合理组织教学内容、采用多种教学手段,吸引学生注意力,便于学生理解和掌握,是一个亟待解决的问题。
2.与诸多课程联系紧密,授课缺乏贯通性。《计算机组成原理》与其先导课、后续课的内容联系紧密,知识存在密切的相关性。例如,为解决一个实际应用问题编写的高级语言程序,其中的一条高级语言指令如何经编译、汇编后成为幾条机器指令(涉及《编译原理》、《汇编程序设计》的内容);如何由操作系统为该程序在内存中安排空间进行存储(涉及《操作系统》的内容);在CPU取一条机器指令结束后,对操作码译码的译码器如何设计(涉及《数字电路》的知识);讲授中断接口控制器的原理时,实际例子(如Intel 8259A中断控制器)会在《接口技术》中讲述。因此,如果仅仅讲解本课程的内容,缺乏相关知识的贯通性,学生们只能片面、局部地学习一门课程,其实很难真正理解和掌握本课程的内容,也不能真正了解和其他课程的关系,从而难以建立对整个计算机系统的认识。可见,如何在教学过程中从计算机系统层次结构的角度,考虑相关课程的贯通性,设计和调整教学内容,并辅助采用多种教学手段,是一个有意义并且富有挑战性的难题。
3.“灌输式”教学方式,学生兴趣不高。该课程涉及的内容广泛,包括计算机硬件系统中5大硬件部分的基本组成、工作原理及设计方法,并建立整机的概念及熟悉其工作机制。长期以来采取的“满堂灌”式的教学方法,较少采用启发式、任务驱动式、课堂讨论式的教学方法,忽略了学生的主体地位,无法调动学生的主观能动性。
据相关研究表明,尽管国内外学者专家对该课程的教学方法提出了很多有建设性的探索[4-8],但鉴于该课程自身特点,如何应对上述挑战,仍然是授课教师面临和需要不断思考、解决的问题。
二、具体教改措施
针对在《计算机组成原理》课程教学中存在的问题,结合多年来的教学实际,采取的教改方法包括:
1.采用多种教学手段,培养学生关于硬件系统的认知能力和设计能力。组成原理的内容很抽象,而且电路图、时序图很多。为提高课堂教学效果,我们都采用了多媒体教学手段,将所需要的硬件结构图等以PPT的形式给出,节省了在黑板上画图的时间。但是,在学习并行加法器的进位链、CPU取指译码执行等内容时,仅依靠静态的多媒体课件无法演示各部件的数据流、控制流以及工作时序等动态信息。因此开发了相应的Demo系统,例如制作指令的执行流程、流水线的工作过程、中断的工作过程等,通过丰富的色彩、动感的画面,将极其抽象的知识直观显示出来,有助于学生理解和掌握各部分的工作原理及整机的运行机制。
2.尝试运用贯通课理念,让学生真正建立计算机系统的概念。结合计算机系统中与《计算机组成原理》相关的课程,在授课过程中通过内容说明和其他课程的关系,让学生清楚计算机硬件整机结构、工作原理及和底层硬件、高层软件的关系,了解计算机系统运行机制。(1)和其他课程的授课教师共同制定各自的讲课内容,避免重复和遗漏。例如在先导课程《汇编程序设计》中已经讲过的补码、原码、补码知识,本门课中就可以略讲。再如指令流水方式以及通道方式等内容,因为学时有限,由后续课程《计算机体系结构》讲授。(2)通过具体的例子,在课程中指出并强调与其他先导课及后续课程的关系。例如,在介绍指令系统内容时,可以结合学生学过的面向8086的汇编语言,复习汇编指令结构的同时,了解汇编指令和机器指令的对应关系。再例如,CPU的组成及结构的学习是课程的重点和难点。讲授过程中拟结合可视化的Demo系统,向同学们演示高级语言指令→汇编语言指令→机器语言指令,再由操作系统分配内存存储区域,最后由CPU取指译码执行的过程。这一过程涉及高级语言、汇编程序设计、编译原理、操作系统以及数字电子等课程的知识。最后通过一个综合的例子,动态演示系统演示了数据流、指令流在计算机系统内的流动过程。让学生们掌握本课程内CPU工作原理的同时,了解了计算机系统协调统一工作的过程。
3.改“填鸭式”教学为“学生主体”的方式,唤醒学生的“内驱力”。在课堂教学上采用启发式教育,变学生“被动听讲”为“主动思考”。同时在培养学生分析和设计能力的基础上,通过对计算机硬件系统不同阶段面临的问题及技术发展面临的挑战进行分析和探讨,结合新技术的介绍和未来技术发展趋势,引领学生突破惯性思维,以培养学生的创新意识。(1)采用启发式教育。在一个知识点结束时,做简单总结概述,同时通过启发式问题,引入下一个知识点。例如静态RAM的工作原理结束后总结其特点,因其集成度不高的不足,引入动态RAM。再例如,介绍总线使用权的总裁问题时,教材中只是简单提及通过硬件方式实现。此时可以启发学生思考,如何设计相应的硬件逻辑来实现此功能?(2)针对不同的教学层次内容,采用不同的教学方法。依据教学大纲的具体要求,合理组织教学内容,按照基本通用原理讲透、真实计算机系统举例、前沿技术简介等几个层次来逐层讲解。其中基本通用原理由教师讲清楚,对真实计算机环节,可以由学生预习并以小组讨论的形式进行。而前沿知识的学习,则可以采用学生查最新国内外资料并给大家做PPT展示等方法进行,可以培养学生们查阅资料以及个人表述等能力。(3)培养学生解决复杂工程问题的能力。在相关内容讲解结束后,可以给同学们布置相关的设计问题,培养他们运用所学的专业知识,解决实际复杂工程问题的能力。例如CPU部分,要求在掌握CPU工作原理的基础上,同学们学会分析和设计硬布线控制器及微程序控制器。
参考文献:
[1]教育部高等学校计算机科学与技术教学指导委员会.高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)[M].北京:高等教育出版社,2006.
[2]唐朔飞,刘旭东,王诚,等.“计算机组成原理”课程教学实施方案[J].中国大学教学,2010,(11):42-45.
[3]王丽芳.计算机组成原理教学研究与实践[J].计算机教育,2006,(12):39-40.
[4]李东勤,徐勇,常赫.计算机组成原理课程教学改革的研究和探索[J].电脑知识与技术,2017,13(3):107-108.
[5]王秀芹,李春杰,李丹.轉动课堂下《计算机组成原理》课程讨论型教学模式[J].福建电脑,2017,33(1):76-77.
[6]彭亚琴,王万生.计算机组成原理教学方法探析[J].教育教学论坛,2017,(10):205-206.
[7]葛桂萍,肖铁军,陈才扣,等.基于FPGA的"计算机组成原理"实践教学的改革[J].实验技术与管理,2018,(4).
[8]柏静,陈莉,孙建彬,等.基于Blend-Learning的“计算机组成原理”教学探究[J].计算机教育,2016,(6):77-80.