面向系统能力培养的计算机硬件课程实验教学改革

2018-02-08 12:17赖晓铮李垚圣黄永燊
计算机教育 2018年2期
关键词:计算机硬件外设计算机系统

赖晓铮,毕 盛,李垚圣,黄永燊

(华南理工大学 计算机科学与工程学院,广东 广州 510641)

0 引 言

随着计算机科学技术的飞速发展,计算机系统应用日益深化和多元化,对计算机专业人才培养提出了巨大的挑战。如何适应计算机技术发展的新趋势,培养具备系统能力的计算机专业人才,已成为国内外教育领域关注的焦点。国外CS2013(Computer Science Curricula 2013, ACM&IEEE)提出,计算机科学本科毕业生应具备系统层次的视野,强调学生需从多层次的细节抽象思考问题,对计算机的理解要从计算机系统结构和构建分析过程出发[1]。我国高校计算机科学与技术专业教指委从能力培养的角度,强调要重视计算机系统类核心课程教学及对学生计算机系统能力的培养[2]。

计算机系统类核心课程包括计算机组成原理、操作系统和编译原理这3门课程,其中计算机组成原理是唯一的“硬件”核心课程,重点论述计算机的逻辑结构组成,其前导课程数字逻辑偏重于讲解逻辑结构部件的电子(器件)实现,后续课程计算机体系结构侧重于讲解由逻辑结构部件组成的CPU整体架构,再后续的课程微机接口则着眼于CPU与各种外设接口组成不同的微型计算机系统。上述课程前后衔接,共同构成计算机专业的硬件课程群[3-5]。计算机硬件课程把具体的硬件电路和抽象的逻辑结构有机结合,是编译原理、操作系统等其他核心课程的基础,有利于锻炼学生的动手实践能力,培养学生计算机系统设计的全局观念[6]。清华大学、北京航空航天大学、南京大学等国内高校以各种形式从不同程度对计算机硬件课程的实验教学改革进行了卓有成效的实践与探索[7-9]。

1 计算机硬件课程实验教学的现状与问题

传统的计算机硬件课程实验一般在计算机模型实验箱上进行,实验箱上的ALU、控制器、RAM、ROM等各个计算机部件已经固定,操作实验时,学生参照实验指导书上的说明,通过插拔连线、拨动开关、编写微程序等方式与实验箱交互。该实验模式存在以下问题:实验箱结构普遍老化,缺少流水线、堆栈等计算机体系结构的最新发展成果;学生每次实验都需要大量繁琐的连线操作,而且只能做验证实验,不能自主设计CPU电路,严重降低了学习兴趣,影响实验教学效果[10]。

近年来,国内高校一直致力于探索基于可编程逻辑器件FPGA的硬件实验改革,让学生在实验中直接利用硬件描述语言HDL实现计算机功能组件的描述和连接[10-12]。这种新兴的实验模式亦存在以下问题:学生需要有相当的FPGA基础才能开始学习,但是现有的课程安排缺乏足够的课时和熟练的师资去培养学生的FPGA设计能力;此外,学生容易误把硬件描述语言HDL等同于高级编程语言,不利于建立起对硬件电路的正确认识[13]。

2 基于虚拟仿真的实验教学改革

虚拟仿真技术可以较好地解决上述计算机硬件课程实验教学中存在的问题:在proteus软件的虚拟仿真环境中,运用常见的中小逻辑器件“积木式”搭建计算机组成部件,设计CPU,甚至组装外设接口,构成微型计算机系统。上述实验过程与传统的“模型实验箱”的面板插线过程非常类似,不需要任何专业知识就能操作,而且所有硬件电路都是“透明”的,可以直观地看到每根导线和每个器件管脚上的电平高低;同时,上述实验过程具有“可编程逻辑FPGA”的高度灵活性,学生不仅可以根据教科书上的计算机体系结构知识,自主设计不同架构的CPU,如经典的流水线架构,还可以自定义CPU的指令集,也可以采用最底层的机器语言实现对CPU的编程。虚拟仿真实验技术所具备的“低门槛”和“高灵活性”特点,有利于降低计算机硬件类课程的实验门槛,提高学生对计算机硬件课程的学习兴趣;有利于增强学生的自主创新意识,提升学生的计算机硬件系统分析能力和设计能力。

以虚拟仿真技术为手段,可以构建数字逻辑、计算机组成原理、计算机体系结构和微机接口技术的贯通式硬件课程实验教学体系,如图1所示。各阶段的实验从简到难依次递进,有效衔接,让学生逐步建立起完整的计算机系统分析和设计观。

图1 计算机硬件课程群的实验教学体系

3 计算机硬件课程群的实验教学内容设计

3.1 数字逻辑实验系列

数字逻辑课程是计算机硬件课程群的先导课程,计算机硬件电路设计中所涉及的逻辑器件,如寄存器、译码器、计数器等都必须在该课程中熟练掌握。表1中的5个数字逻辑实验,遵循“逻辑门→算术电路→组合逻辑电路”和“触发器→寄存器→计数器”两条主线展开。上述实验的设计吸收了国外教材的先进经验[14],不仅介绍集成器件的功能和使用方法,还用逻辑门搭建对应的等效电路,如图2中的74LS153数据选择器及等效的4选1数据选择电路,能让学生更清晰地了解逻辑器件的工作原理和结构。

3.2 计算机组成原理实验系列

计算机组成原理课程是计算机系统类核心课程,课程内容包含表2中的5个实验,系统地介绍组成CPU的三大部件:运算器、存储器和控制器。其中,控制器是最重要的内容,而状态机则是控制器中最核心的部分,用以产生控制器所需的自动时序。“状态机”实验则分别介绍两种经典的状态转移电路:环形计数器和扭环计数器(Johnson计数器)。在两个“控制器”实验中构建一个“最小版本”CPU,且只具有程序跳转功能,这样可以让学生注意力集中在控制器运行机制上。该“最小版本”CPU框架分别提出3种控制器设计方案:微程序、单周期和多周期硬布线控制器。

表1 数字逻辑实验内容

图2 数据选择器74LS153及其等效电路

表2 计算机组成原理实验内容

3.3 计算机体系结构实验系列

CPU设计是计算机系统能力培养中一个至关重要的环节,包括表3中的4个实验。该系列实验的总体设计思想是在一个统一的CPU指令集框架下,主要是38条机器指令,采用不同的CPU架构如微程序、硬布线、流水线等来实现CPU。从编程角度看,4个实验所设计的CPU程序基本一致,除了流水线CPU需要考虑指令相关性,而底层的硬件架构则互不相同,学生能通过比较深入理解CPU架构的细节。学生甚至可以通过“搭积木”的方式,围绕自定义的指令集,循序渐进地组装定制版CPU,并且运用自定义的指令编写机器语言程序,实现特定的功能,如循环、程序分支、数组处理、子程序调用等。此外,嵌套中断CPU实验硬件实现了CPU的PC和PSW“断点”堆栈,从而支持CPU(微程序/硬布线/流水线)的四级嵌套中断机制。通过上述CPU设计,学生能对CPU有全面的理论认识和切身的设计体会。

“流水线CPU”实验中首次实现了完全由逻辑门构建的具有中断功能的流水线CPU,这在现有的国内外公开文献里尚未有报道。如图3所示,该CPU采用“取指(F)→译码(D)→执行(E)→写回(W)”四级流水线架构,其中译码、执行和写回阶段有各自独立的指令寄存器D_IR、E_IR和W_IR。流水线CPU的数据通路严格按照国外经典教材[15]讲授的寄存器传输级(RTL)描述方式构建,分为译码、执行和写回的三级结构;数据通路的每一级都有独立的硬布线控制器,由该级指令寄存器译码生成微操作信号,级间设有寄存器组,用以保存指令相关数据经过该级硬布线逻辑执行后的中间结果。当某条指令在流水线CPU的指令寄存器流水线“D_IR→E_IR→W_IR”上推进时,指令相关数据亦在CPU数据通路的各级同步推进。

表3 计算机体系结构实验内容

图3 流水线CPU电路图

3.4 微机接口实验系列

CPU设计完成后,学生还需要把CPU与不同的外设接口进行组合,才能构成一个完整的计算机系统。微机接口实验提供了CPU常见的8种外设:①并行IO端口芯片8255;②定时器/计数器芯片8253;③串口通信芯片8251;④模数转换芯片ADC0809;⑤数模转换芯片DAC0832;⑥液晶屏模块LCD1602;⑦中断控制器8259;⑧DMA实验8237。8种外设形成8个实验,均能使用计算机体系结构实验定义的指令集中的38条机器指令,在微程序CPU上编写机器语言程序驱动外设,能完全重现传统微机原理课程实验中8086CPU驱动外设所实现的功能。

4 “软硬一体化”的实验箱创新

学生除了在proteus虚拟仿真环境中进行实验之外,还可以通过“软硬一体化”的实验箱模式在实际环境中动手验证,如图4所示。硬件实验箱采用模块化设计,众多外设模块都挂在由核心模块——通用仿真器延伸出来的16位地址和数据总线上,除了包括上述微机接口实验系列中涉及的8种外设,即8255、8253、8251、ADC0809、DAC0832、液晶屏、8259和8237之外,还有串口转USB模块(连接PC)、矩阵键盘、数码管、流水灯、拨码开关、交通灯模型等。

图4 “软硬一体化”实验箱

核心模块——通用仿真器,是一个带USB接口的ARM单片机,其主要功能是以高频率定期扫描上述外设所挂的数据和地址总线上的高低电平,然后打包成USB协议的数据块,通过USB线传送到PC机的proteus虚拟仿真软件中,在虚拟仿真环境总线模型延伸出来的虚拟总线上形成相对应的高低电平;同样,总线模型也解析虚拟总线上的高低电平信号,通过USB总线传送到通用仿真器上,并在实验箱的物理总线上模拟出相对应的高低电平。因此,PC虚拟仿真环境的虚拟总线和实验箱上的物理总线互相映射,可以看成是一条“总线”。

如图4所示,在PC机的虚拟仿真环境中,学生可以开放式自定义CPU及其指令集,也可以选择8086、8051、ARM等CPU模型进行编程,然后通过虚拟总线映射到实验箱的物理总线,控制实验箱面板上的真实外设。这样,借助虚拟仿真技术,学生不需要繁琐的接插线,就能快速设计和搭建CPU,大大提高实验速度和可靠性;同时,学生可以观察实验箱面板上的物理外设并动手实践,实现“软硬一体化”的实验效果。

5 结 语

随着计算机科学技术不断发展,计算机专业学生已经从过去的应用开发者,向计算机系统分析和设计者转变。工程师要了解软件,程序员也要熟悉硬件,软硬件协同设计成为必然发展趋势。虚拟仿真教学路线就是让计算机专业的学生“零基础”进行计算机硬件课程实验,不追求“高大上”的实验技术,只追求“直观、便捷、高效”的实验效果,降低学习门槛,提高学习兴趣,贴近实际为基础课程实验教学服务。我们采用的所有实验都是“抛砖引玉”的开放式实验,仅仅为师生提供启发和参考,教师和学生可以自由探索,设计定制自己的CPU,或者把CPU与多个外设组成更加复杂的计算机系统。未来的工作重点是尝试通过虚拟仿真技术设计更复杂的32位CPU,如MIPS架构、RISC-V架构等;同时,在机器语言编程的基础上,结合编译原理课程,鼓励学生自行设计编译器和汇编器,甚至在自己设计的CPU上移植嵌入式操作系统,真正实现计算机核心类课程,如计算机组成原理、编译原理和操作系统的大综合。

[1]The joint task force on computing curricula of ACM/IEEE. Computer science curricula 2013 ironman draft(version 0.8)[EB/OL].(2013-03-26)[2016-06-07]. http://ai.stanford.edu/users/sahami/CS2013/ironman-draft/cs2013-ironman-v0.8.pdf.

[2]教育部高等学校计算机科学与技术专业教学指导分委员会. 高等学校计算机科学与技术专业人才专业能力构成与培养[M].北京: 机械工业出版社, 2010: 19-20.

[3]唐志强, 朱子聪. 计算机专业硬件课程体系的改革[J]. 计算机工程与科学, 2014(增刊2): 159-161.

[4]施青松, 陈文智. 强化计算机课程贯通教学深入面向系统能力培养[J]. 中国大学教学, 2014(12): 61-65.

[5]盛建伦, 巩玉玺, 刘淑霞, 等. 计算机专业硬件基础课程实验教学体系的研究[J]. 实验室研究与探索, 2013(10): 387-391.

[6]肖娟, 龚德良, 陆武魁, 等. 计算机硬件基础课程实验改革与实践[J]. 计算机教育, 2014(5): 43-45.

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

[8]高小鹏. 计算机专业系统能力培养的技术途径[J]. 中国大学教学, 2014(8): 53-57.

[9]刘卫东, 张悠慧, 向勇, 等. 面向系统能力培养的计算机专业课程体系建设实践[J]. 中国大学教学, 2014(8): 48-52.

[10]杨锐, 翟社平, 宁晓菊. 面向系统能力培养的计算机组成原理实践教学改革[J]. 计算机教育, 2016(12): 24-27.

[11]何红旗, 常瑞, 张有为, 等. 计算机硬件类课程实践教学的困境与思考[J]. 计算机教育, 2016(2): 34-36.

[12]董梁, 翟社平, 王晓婕, 等. 计算机硬件实践教学改进探索[J]. 计算机教育, 2016(7): 55-59.

[13]冯国富, 马玉奇, 易丛琴, 等. 面向数字逻辑与计算机组成原理衔接的实践环节[J]. 计算机教育, 2017(2): 141-145.

[14]Mano M M. 逻辑与计算机设计基础[M]. 4版. 北京: 机械工业出版社, 2012.

[15]Bryant R E, O’Hallaron D. 深入理解计算机系统[M]. 2版. 北京: 机械工业出版社, 2010.

猜你喜欢
计算机硬件外设计算机系统
基于Unity的计算机硬件组装仿真教学系统设计
关于不法分子冒充《小型微型计算机系统》名义诈骗的严正声明
IBM推出可与人类“辩论”的计算机系统
关于不法分子冒充《小型微型计算机系统》名义诈骗的严正声明
计算机系统集成实施与项目管理途径分析
计算机硬件设备驱动程序分析
中职计算机硬件课程教学策略探讨
计算机硬件的设计安全探究
外设天地行情
外设天地行情