陈智勇
(桂林电子科技大学信息科技学院,广西 桂林 541004)
随着新型计算机系统的设计和应用日益深化,计算机科学与技术专业人才培养也必须与时俱进,培养具备系统能力的计算机专业人才已成为国内外教育专家的共识[1]。教育部高校计算机科学与技术专业教指委从能力培养的角度强调了对计算机学科学生的4项专业能力(计算思维能力、程序分析与设计能力、算法分析与设计能力和计算机系统能力)的培养,其中尤其以计算机系统能力的培养为主[2]。目前清华大学、浙江大学、上海交通大学等高校都在不同程度上进行了系统能力培养的实践与探索[3]。一些高校以MIPS 为模型机,把 CPU 设计与操作系统和编译器的设计以及外围电路的设计结合起来进行软硬件系统综合开发。比如清华大学开发的以MIPS CPU为核心的THINPAD教学实验支撑平台、东南大学开发的以MiniSys-1A CPU为核心的软硬件综合平台[4]。
图1描述了计算机系统多级层次结构与计算机人才之间的对应关系。从图1可以看出,计算机系统由不同的机器构成,这里的机器是指能存储和执行程序的算法和数据结构的集合体。第1—4层为虚拟机器,是以软件为主实现的机器;第5—6层为实际机器,是由硬件和固件实现的机器。计算机各层次的语言总是通过低一级的语言翻译或解释来实现[5]。第5—6层面向计算机硬件设计者,第4层面向操作系统设计者,它们是为运行和支持第1—3层所必需的解释程序和翻译程序设计的,以便能设计和实现不同算法和数据结构的应用问题。第1—3层主要是为应用程序设计者解决各类应用问题设计的。计算机学科主要研究计算机系统各个不同层次的实现及其相互转换的机制,计算机科学与技术专业主要培养在计算机系统或系统某些层次上从事相关工作的人才。
图1 计算机系统多级层次结构与计算机人才之间的对应关系
从图1可看出,计算机科学与技术专业培养的学生主要是设计和研制计算机的硬件设计人员、系统软件开发人员和应用软件开发人员。不管培养哪个层面的计算机技术人才,都要重视培养学生的系统能力。
所谓计算机系统能力,笔者认为,就是对计算机系统有深刻理解,懂得从不同计算机设计者的角度去分析计算机的属性,具备在计算机系统各层次上分析、设计、实现和优化计算机软硬件的能力。
随着超标量超流水线、超长指令字、同时多线程、单芯片多核、多芯片多核单机系统的出现,以及对称式多处理机、集中式共享存储器多处理机、分布式共享存储器多处理机、分布式非共享存储器多处理机、计算机集群等多机系统的出现,计算机系统的分析、设计、实现和优化均基于并行计算机体系结构。比如计算机硬件设计者要考虑多处理器互联网络、容错技术,操作系统设计者要考虑多处理器或多处理机资源调度、并行存储器管理,编译器设计者要考虑并行目标代码优化,应用程序设计者要考虑并行程序设计语言、并行算法等。
只有具备计算机系统能力,计算机硬件设计者才能够设计出性价比高的面向特定应用的专用计算机或通用计算机,操作系统设计者才能编写出充分利用计算机软硬件资源、高效组织计算机工作流程以及方便用户的系统软件,编译程序设计者才能编写出面向计算机硬件结构和操作系统的优化编译器,应用程序设计者才能最合理地利用底层硬件实现机制、系统软件提供的相应功能以及程序设计语言和算法,编写出性能最优的应用软件。
在计算机系统能力培养方面,桂林电子科技大学计算机科学与技术专业的基本培养目标为:建立计算机系统完整概念,深刻理解计算机系统的层次化结构,并能够从不同计算机设计者的角度去分析计算机的属性,具备分析、设计、实现和优化计算机软硬件的能力。具体包括:理解计算机系统中各个层次之间的相互关系,掌握指令集体系结构的工作原理和设计方法,具备使用EDA工具和VHDL 进行计算机硬件设计的基本能力,深刻理解操作系统对计算机硬件管理、进程管理的关系,理解并掌握面向计算机硬件结构的优化编译技术,深刻理解面向计算机硬件结构进行高效程序设计的基本原理和程序设计方法,重视编程技术、调度技术、编译技术与计算机硬件结构的有机结合;要求学生能进行CPU及外围电路设计、操作系统设计和简单编译器设计,具备计算机系统分析能力、系统设计与实现能力、系统优化与创新能力。
根据图1中计算机系统层次结构与计算机人才之间的对应关系,规划出计算机系统层次结构与计算机专业主要课程之间的对应关系,如图2所示。我院从2013级的专业人才培养方案开始,对计算机科学与技术专业的主要课程进行了重新建设,并根据系统能力培养总体目标及计算机系统各层次之间的关系,明确了每门课程的教学目标,制定了相关课程各自涵盖的知识点和能力培养要求。在计算机专业主要课程中,数字逻辑电路、计算机组成原理、操作系统、编译原理、计算机系统结构是构建一个完整计算机系统的核心课程,它是计算机系统研究、设计和应用开发的基础。
图2 计算机系统层次结构与计算机专业主要课程之间的对应关系
课程在计算机系统层次结构中的定位与相互关系、主要知识点和系统能力要求如下。
(1)数字逻辑电路。该课程综合运用了电路与电路技术基础提供的基本电路和器件进行组合逻辑电路和时序逻辑电路的设计,为计算机功能部件的设计和分析打下基础。它系统地介绍了数字逻辑电路设计的基本原理和方法。主要内容包括组合逻辑电路(全加器、加法器、译码器、编码器、比较器等)、时序逻辑电路(寄存器、计数器、移位器、内存储器等)、同步时序逻辑电路的分析与设计、中大规模集成电路的设计方法等。学完该课程,学生能够了解目前主流计算机解决问题最根本的基础是布尔代数和数字逻辑电路,并了解利用数字逻辑电路可以构建执行程序所需的所有功能部件。该课程侧重培养学生进行硬件电路分析、设计、调优和检错的能力。
(2)计算机组成原理。该课程在图2中涉及第5层(传统机器)和第6层(微程序机器),它综合运用了数字逻辑课程中提供的组合逻辑电路和时序逻辑电路来设计计算机的功能部件,同时完成计算机指令集和微指令集的设计。它系统地介绍了计算机最基本的组成和工作原理、分析方法、设计技术等。主要内容包括计算机工作过程、运算方法和运算器、存储系统、指令系统、中央处理器、总线系统和输入/输出系统等。既介绍单机系统各功能部件的组成和工作原理,又以当代典型的Core 2处理器芯片为例介绍CPU内核结构及相关技术;既注重计算机组成的理论知识,又重视高速运算器、主存储器、微程序控制器,以及整个CPU的设计与实现。该课程侧重培养学生计算机硬件的系统级认知能力和计算机系统的设计能力,并与操作系统、编译原理和微机原理与接口技术等课程融合为计算机系统综合课程设计,以培养学生的基本创新能力。
(3)操作系统。该课程对应图2中的第4层(操作系统机器),它是第5层(传统机器)的引申,它提供传统机器所没有的,但为汇编语言和高级语言的使用和实现所需的基本操作,它经第5层的机器语言程序解释实现。课程系统地介绍了操作系统的基本概念和方法、设计原理和实现技术。主要内容包括处理器管理、进程同步、通信和死锁、存储管理、设备管理、文件管理、操作系统安全和保护、网络和分布式操作系统、操作系统设计原则、Linux实例研究。既介绍了经典内容,又以当代主流操作系统Linux作为实例介绍操作系统内核主要模块及定制开发;既注重操作系统的理论知识,又重视操作系统的实践和应用。该课程侧重培养学生抽象、分析、结构、设计方面的能力,特别是对系统软件的设计和开发能力,包括解决操作系统领域有关问题的能力,以及研究和发展操作系统的创新能力。
(4)编译原理。该课程在图2中对应于第2层(高级语言机器)和第4层(操作系统)之间,它用来将高级语言源程序转换成面向计算机硬件能够识别的目标代码。为保证目标程序的高效运行,必须面向计算机体系结构设计优化编译器。它系统地介绍了程序设计语言编译系统的基本原理、设计方法和实现技术。主要内容包括词法分析、自顶向下与自底向上的语法分析、属性方法与语法制导翻译技术、语义分析和中间代码生成、目标程序运行时存储空间组织、代码优化、目标代码生成、并行编译技术基础,以及相关的形式语言和有限自动机的知识。该课程侧重培养学生设计、实现、分析和维护编译程序方面的基本技术,为今后从事应用软件和系统软件的开发打下一定的理论和实践基础。
(5)计算机系统结构。该课程在图2中对应于第4层(操作系统机器)和第5层(传统机器)之间,它从机器语言程序设计者的角度展示计算机系统的属性,即概念性结构和功能特性。它系统地介绍了计算机系统结构的基本概念、设计原理、分析方法以及有关的先进技术和最新发展趋势。主要内容包括计算机性能、超标量超流水线、并行处理技术、向量处理机、多处理机、并行算法和并行编程基础、多线程技术、单芯片多处理器技术、集群技术、云计算等。既介绍具体的并行处理芯片及并行处理机系统,又结合具体应用介绍如何进行粒度打包、并行编程、时延容忍、负载平衡、并行调度、优化编译等。既注重计算机系统的理论知识,又重视编程技术、调度技术、编译技术与计算机硬件结构的有机结合。该课程侧重培养学生计算机系统,特别是并行计算机系统的软硬件综合应用能力,为高效的程序设计、并行操作系统设计和并行编译器设计打下基础。
根据图2所示的计算机专业主要课程,设置计算机科学与技术专业“三横两纵”实践课程教学体系,如图3所示,“三横”是指基础能力培养、专业能力培养和综合能力培养三个层次,“两纵”是指硬件系列课程实践环节和软件系列课程实践环节。图3中列出大学一年级到大学四年级每个阶段开设的专业实践课程及每门课程之间的关系,从图中可以看出,实践课程体系的设置体现了对学生从系统认知能力逐步过渡到专业能力、综合能力的不间断培养过程。
图3 计算机科学与技术专业“三横两纵”实践课程教学体系
在计算机科学与技术专业课程的所有实践环节中,为了让学生全面深刻地理解计算机系统,设置的核心实践环节分别是数字逻辑电路实验、计算机原理课程设计、微机原理与接口技术实验、操作系统课程设计、编译原理课程设计、计算机系统综合课程设计和毕业设计。其中数字逻辑电路实验是计算机原理课程设计的基础,主要培养学生掌握多路选择器、比较器、编码器、译码器、加法器等组合逻辑电路,以及寄存器、寄存器堆、移位器、计数器等时序逻辑电路的VHDL设计方法,它们是计算机组成原理实验中使用的基本部件,以设计运算器、存储器、微程序控制器、数据通路等IP核;计算机原理课程设计是利用计算机组成原理实验封装的IP核,利用EDA软件和VHDL设计一个简单的MIPS CPU;微机原理与接口技术实验主要培养学生掌握并行接口、串行接口、中断控制器、定时器的设计方法,以及外围电路的设计和控制方法,它与计算机原理课程设计的作品可整合成一个有输入/输出系统的计算机硬件系统;操作系统课程设计主要培养学生掌握在MIPS CPU上如何实现进程管理、作业管理、存储管理、设备管理、文件管理等,编写程序并实现相应的系统管理功能;编译原理课程设计主要培养学生掌握词法分析器、语法分析器的设计,并设计一个面向前期设计的计算机硬件系统和操作系统的编译器;计算机系统综合课程设计主要是升级MIPS CPU的指令集,或将CPU重新设计成五级流水CPU,并通过真实程序的运行来测试整个计算机系统硬件、操作系统和编译器设计的正确性,培养在计算机系统各层次上分析、设计、实现和优化计算机软硬件的能力。
我校计算机科学与技术专业从2013级开始已实施计算机系统能力培养的理念,从计算机硬件设计者、系统程序员、应用程序员培养的角度开设计算机专业课程,并通过“三横两纵”实践课程教学体系逐步培养学生的系统认知能力与分析能力、系统设计与实现能力、系统优化与创新能力。通过课程体系和教学内容的改革与实施,计算机科学与技术专业的所有学生都掌握了MIPS CPU的设计与实现方法,以及基于MIPS CPU的操作系统部分功能的实现方法,并且可以在商品化的MIPS CPU和操作系统上完成简单的编译器设计,使学生初步具备了计算机系统综合开发的能力。