谭志虎,胡迪青,秦磊华
(华中科技大学 计算机学院,湖北 武汉 430074)
“计算机组成原理”课程设计的改革
谭志虎,胡迪青,秦磊华
(华中科技大学 计算机学院,湖北 武汉 430074)
本文分析了“计算机组成原理”课程设计现状,结合计算机系统设计能力的培养目标,基于logisim仿真平台对传统课程设计内容与过程管理进行了改革,学生从构建最基本的单周期CPU开始,由易到难逐步实现动态分支预测流水线。课程改革实施达到预期效果,学生完成率高,成就感强,有助于计算机系统设计能力的培养。
计算机组成原理;课程设计;系统设计能力培养
“计算机组成原理”作为计算机专业基础课,在计算机系统能力培养目标中起着重要的承上启下作用。对学生而言,其理论教学完成计算机硬件系统认知能力的培养,实践教学承载计算机系统设计能力的培养。其课程设计为该课程大型综合实验,旨在进一步加深学生对理论知识的理解,提升学生动手能力和工程应用能力,培养学生创新意识。在高度重视系统能力培养的新形势下,如何安排好课程设计这一教学环节是一个值得研究的问题[1]。
当前,“计算机组成原理”实践教学改革的主流方向是基于FPGA的EDA设计方式进行CPU设计实践,这种方式彻底扭转了传统的实验箱实验效率低下、调试困难、多验证少设计、系统设计规模有限、成本高等问题。
实践教学采用真实的硬件设计方式有助于激发学生学习兴趣,但在实施过程中也发现一些问题:①学习周期长、难度大,学生要在短时间内熟练掌握硬件描述语言以及软硬件开发环境,实属不易,学生畏难情绪严重;②师资要求高,计算机学科教师普遍缺乏电子工程专业背景,在学生具体实践过程中很难提供有效的技术支持与指导,学生往往必须依靠自学完成实验。③硬件设计程序化,学生照搬高级语言编程的思维以软件形式构建电路,抽象的硬件描述语言使学生很难建立设计与电路的对应关系,数字电路设计方法无法延续到实验中。
以我院为例,过去10年我们一直在自研的FPGA实验箱上进行课程实验和课程设计。多年实践表明,由于FPGA方式学习周期长,难度大,教师指导乏力,仅有少数学生能较好完成FPGA课程设计任务。这种局面难以适应系统能力培养的要求,有必要探索既能强化系统设计能力,又能分步实施的“计算机组成原理”课程设计教学模式。
1)系统设计与实现分离
FPGA实验方案过于强调CPU系统最终的工程实现,学生投入巨大精力学习解决大量与系统设计无关的工程实现问题,然而FPGA工程实现能力并不是所有专业学生必须掌握的能力,也不能寄希望一门课程承担系统设计实现能力培养的全部内容。应尽可能使学生更多地关注系统设计本身,而不是工程实现的繁琐细节,因此,系统实现能力的培养,我们考虑安排在高年级的系统能力综合实践环节完成,并分步实施系统设计能力与实现能力的培养。
2)设计任务应有足够规模和分量
程序设计能力需要有一定规模的代码量训练,硬件系统设计能力也需要一定规模的硬件系统进行实训,只有达到足够规模,一个系统所具有的共性特征、开发难点等信息才能较好显现,学生才能真正学习并掌握系统构造的方法,才能更进一步领会系统构造的核心原则[3]。
3)设计内容应紧扣理论教学知识点
围绕流水CPU设计开展实验,尽可能多地覆盖课程主要知识点,让学生在设计过程中加深对知识点的理解,实现实践教学为理论教学服务的目的。
4)课程教师应亲自指导实践教学
为促进理论教学与实践教学的无缝对接,课程教师必须对课程设计整个环节精确把控并亲自参与实际指导,这有利于落实以学生为中心的教育理念。
3.1 实验平台选择
基于系统设计与实现分离的原则,结合国内外同行的先进经验[5],我们最终选择了Logisim作为课程设计的实验平台。Logisim是一款数字电路仿真软件[6],是针对小型CPU系统设计实验的开源软件平台,其采用分离数字电路模块构建原理图的方式进行系统设计,延续了数值逻辑课程中的数字电路设计方法,有利于培养学生硬件设计思维,回避了硬件描述语言过于抽象、硬件设计程序化的问题。设计系统仿真验证简单,设计者无需关心系统的最终具体实现,实现了系统设计与实现的分离[4,5]。该平台易学易用、调试简单、零实验成本,无场地和人员要求,易于构建复杂电路系统,方便进行灵活多变的设计型实验。
3.2 实验内容建设
为达成系统设计能力培养顶层目标,我们选择了流水CPU系统设计作为课程设计主要内容,从构建最基本的运算器,数据通路开始完成单周期CPU,逐步过渡到理想流水线,气泡式、数据重定向,动态分支预测流水线,内容层次递进,难度逐渐增加,成果逐步复用,学生在规定的时间内根据自己的能力尽力完成,各阶段均提供标准测试程序,方便评测对比,让学生体会到不同阶段成果在性能上的逐渐提升,逐步加深对流水机制的理解。与其他院校的思路不同,课程设计内容的规模和份量并不体现在指令系统的规模和完备性上,而是体现在流水机制处理上,尽可能让大多数学生体会到一个相对完整的小型流水CPU的设计。
(1)指令集选择,指令集是CPU设计的主要依据,我们选用了美国加州伯克利大学CS61C 2013实验中的指令集系统并进行了适当扩充,该指令集包括20条类MIPS指令,小指令集有效降低了系统设计的准入难度,让更多学生得到训练。
(2)单周期CPU设计,根据指令集的功能需求,学生设计封装自己的运算器、寄存器堆、构建主要数据通路,并依据硬布线设计方法设计封装控制器,实现单周期CPU,记录标准测试程序运行周期数,验证功能正确性,图1为单周期CPU 示意图。
图1 单周期CPU
(3)理想流水线设计,将单周期CPU进一步改造成多周期无冲突流水CPU,流水线不同阶段之间设置接口部件,通过接口向后段传递数据,控制信息,向前段反馈信息。设计理想流水线的目的是为了将设计难度进一步细分。
(4)气泡式流水线设计,在理想流水线基础上加入冲突检测器,学生需要思考流水冲突检测器放置在哪个阶段,不同类型的指令数据相关性,Load-Use相关如何检测,相关检测器如何设计、封装等问题,最终还需实现插气泡方式的流水冲突处理。
(5)数据重定向流水线设计,需要思考在哪个阶段进行数据重定向检测,哪个阶段完成数据重定向,数据重定向来源,采用数据重定向机制后是否还需要插入气泡,Load-Use 冲突能否利用数据重定向机制解决等问题。
(6)动态分支预测机制实现,要求实现分支目标缓冲器结构的动态分支预测。本阶段需要思考如何在指令还未取出无法译码其功能时就通过 PC 值动态预测分支,不同预测算法对实际分支指令执行的影响,分支目标缓冲器淘汰算法等问题。
3.3 课程设计过程管理
为达成工程教育认证中普惠教育的要求,课程设计要求学生独立完成。由于课程设计工作量大且具有相当难度,如何保证完成率并最终落实系统设计能力的培养,必须有强有力的过程管理进行配合,具体实施过程中,我们做了如下工作:
(1)执行相对严格的考勤管理,要求学生在规定地点,时间内集中完成课程设计;实施精细的进度控制,设置多个检查节点,及时汇总公布每日工作进度,给进度落后的学生以适当压力,同时,因材施教进行帮扶指导;各检查节点必须检查详细的日志和过程文档,过程文档要求格式规范,图文并茂,以资培养学生良好的文档习惯以及撰写规范文档的能力。
(2)营造以学习为中心的学习环境,提供及时的线下指导,每个小班配备一名指导教师,所有指导教师必须经过系统的教学培训,能独立完成课设内容后才能上岗;构建灵活的线上交流平台,充分利用各种云移动平台进行团队协作,开展文档交流,在线讨论等活动,课下师生也能进行线上互动;提供丰富的学习资源,甚至购买大量的参考书籍供学生及时查阅;提供丰富的测试用例,方便学生检查,也便于成绩评定。
课程设计改革首先在2012班试点,适当改进后再在普通班进行推广。表1为完成度对比,从表上可以看出所有学生均能完成单周期方案,其他方案完成比例依次是91%、67%、58%和20%,数据分布合理,该实验难度递进合理,既能让大部分同学经历相对完整流水线CPU设计训练,也给学生提供进一步探索创新的空间;卓工班64%完成了动态分支预测部分,反映了较强的学习能力。调查反馈表明,课程设计改革效果显著,具体体现为以下几个方面:
表1 课程设计完成度
(1)有效提升学生系统设计能力,logisim平台提升了系统设计效率,大多数学生均能亲自经历相对完整且具有一定规模的流水CPU设计过程,有助于普惠教育的达成。部分学生完成实验后都无法相信自己也能亲手构建如此复杂的系统,成就感强。
(2)践行“做中学”理念,实践教学助力理论教学。课程设计内容覆盖组成核心知识点,甚至包括相当份量的自学内容,学生反馈在设计过程中真正弄懂了那些课堂上没有明白或未学习的内容,真正体验了做中学的优势。
(3)严格过程管理,营造较好的学习氛围,有效保障了学习时间和效率,也减少了抄袭现象,良好的学习氛围进一步激发了学生主动学习的热情和创新意识的提高,线上线下互动频繁,最终保证了课程设计完成率。
“计算机组成原理”课程设计改革经过不断改进,取得了令人满意的效果,在传统组成原理实验箱模式与FPGA模式之外探索出第三条实践教学道路,课程设计难度适中,工作量饱满,内容丰富,激发了学生学习热情和创新意识,有助于计算机系统能力的养成。
(谭志虎等文)
后续计划围绕扩大指令系统规模、中断机制、cache机制和虚存等方面展开研究,努力提升课程设计最终成果的复杂度和完成度,进一步加强学生系统设计能力的培养。
[1] 袁春风,王帅.大学计算机专业教育应重视“系统观”培养[J].北京:中国大学教学,2013,(12):41-46.
[2] 袁春风,张泽生,蔡晓燕等.计算机组成原理课程实践教学探索[J].北京:计算机教育,2011,(17):110-114.
[3] 高小鹏.计算机专业系统能力培养的技术途径[J].北京:中国大学教学,2014,(8):53-57.
[4] Stanley T, Chetty V, Styles Metal.Teaching computer architecture through simulation:(a brief evaluation of CPU simulators)[J].Evansville:Journal of Computing Sciences in Colleges, 2012,27(4):37-44.
[5] Burch C.Logisim:a graphical system for logic circuit design and simulation [J].New York:Journal on Educational Resources in Computing (JERIC),2002,2(1):5-16.
Curriculum Design Reform of the Computer Organization Principle Course
TAN Zhi-hu, HU Di-qing, QIN Lei-hua
(ComputerschoolofScienceandTechnology,HuazhongUniversityofSci.&Tech.Wuhan430074,China)
After analysing current situation of curriculum design for Computer Organization Principle, we reforme the traditional content and process management of curriculum design based on logisim simulator.Students firstly design single cycle CPU, at last finish the dynamic branch prediction pipeline.Reform effect is expected to achieve a high success rate, a strong sense of achievement, which is helpful to the training of computer system design ability.
computer organization prineiple; curriculum design; system design ability training
2015-11-13;
2016-03-01 基金项目:教育部人文社科基金“校企深度融合的信息产业自主可控人才培养模式研究与实践”(14JDGC013)湖北省/华中科技大学教学研究项目“计算机专业系统能力培养的研究与实践”(2015067)
谭志虎(1974-),男,博士,副教授,主要从事计算机网络存储教学和研究,E-mail:stan@hust.edu.cn
胡迪青(1968-),男,博士,副教授,主要从事嵌入式系统教学和研究,E-mail:hudq024@hust.edu.cn
G642.0
A
1008-0686(2016)06-0110-04