赵小刚,丁 玲
(1.武汉大学 国际软件学院软件工程系,湖北 武汉 430072;2.湖北科技学院 计算机科学与技术学院,湖北 咸宁 437100)
基于FPGA的计算机体系结构课程教学改革研究
赵小刚1,丁 玲2
(1.武汉大学 国际软件学院软件工程系,湖北 武汉 430072;2.湖北科技学院 计算机科学与技术学院,湖北 咸宁 437100)
传统计算机体系结构教学实验中缺乏对核心计算机组件CPU的设计分析,本课程改革提出采用先进FPGA实验平台来设计CPU,增强学生对CPU功能及原理的理解。结合计算机体系结构最新发展趋势的新内容的引入,以及微信课堂的新型MOOC教学方式,课程改革取得了满意的效果。
FPGA;CPU;微信课堂;MOOC
计算机硬件的发展日新月异,强大的硬件技术的进步为软件的性能提升带来巨大的便利。因此了解和掌握计算机内部的硬件组成、硬件工作机制等,能够更加清晰的理解底层硬件为上层软件提供的支持,也能够优化软件的使用,更大程度发挥底层硬件的性能。所以对软件工程系的学生来讲,多接触底层硬件,熟练掌握相关知识是成为一个优秀软件工程专业人才的必要条件。
计算机系统结构是软件工程专业的核心必修课程,是数字逻辑、组成原理、操作系统、编译原理和计算机接口技术等专业课程的后续课程。该课程是一门综合了上述多门基础专业课程知识,其重要性决定了学生必须对它进行熟练掌握。但是在我院进行计算机体系结构的教学过程中发现,计算机体系结构讲述的内容比较抽象,主要是关于计算机内部各硬件的工作原理和运行机制,这些东西学生往往又没有直观的认识。计算机体系结构是一个涉及硬软件等多方面知识的课程,一个知识点往往涉及到很多其他课程内容,讲解起来很费力,学生理解难度大;计算机体系结构发展较快,现有书本内容无法保持快速更新;学生也缺乏对这些新热点问题进行思考和实验的平台,无法进行创新性工作。
针对这些问题,需要对体系结构课程进行教学改革:及时更新教学内容,鼓励学生多思考体系结构前沿问题;为学生提供良好的硬件实验平台,让学生对计算机核心组件有直观感受,同时该硬件平台应该有足够能力满足学生创新型实验。下面对这些教改内容进行描述。
课程内容紧跟国内外计算机体系结构的发展,增加了以下内容:
(1)指令系统中增加了MIPS指令集;
(2)流水线技术中增加了ARM流水线详细梳理过程;
(3)存储系统中增加了NVRAM,SSD以及PCRAM等新型存储器件的介绍;
(4)在互联网络中增加了集群互联的消息传递机制和详细示例如Hadoop的使用;
(5)增加了MIPS体系结构一章,介绍MIPS发展历程、体系结构和主流MIPS系统代表Altera FPGA的介绍;
(6)多核技术中增加了虚拟化技术,GPU技术等;
(7)增加对人工智能等特定上层应用的支持的指令系统、CPU新架构的介绍。
通过增加业界和学术界流行的新的体系结构发展热点内容,探讨一些新的研究方向,有助于学生了解体系结构的前沿知识,激发他们的创新意识,为他们以后的科学生涯打下基础。
实验内容上也做较大更新,我们增加了很多新的实验:
(1)简易CPU设计;
(2)基于MIPS架构的汇编程序和C程序设计;
(3)多核CPU交互;
(4)FPGA支持的机器学习算法加速。
本课程在教学方式中,综合采用多种方式来激发学生学习的积极性,加入更多的实践环节强化理论知识点的掌握程度。具体如下。
1.采用多媒体教学方式
计算机系统结构具有较多的有关硬件工作原理的抽象理论,这些理论往往由于其他学科如操作系统、编译原理和数字逻辑相关,学生理解较困难。可以引入声音、图像和视频等多种形式的多媒体素材,增强课堂教学中的理论知识的形象化描述,使教学媒体多样化。我们将体系结构中较难理解的Cache-主存映射机制,流水线的控制相关消除机制等进行了动画展示,这样不仅可以加深学生对抽象理论的理解,而且提高了学生学习兴趣。
2.引入微信课程公众号及微信课堂
随着智能手机的普及,学生越来越喜欢通过这种社交工具进行交流和沟通。移动设备的好处是可以有效的利用碎片化的时间,随时随地就可以通过手机获取信息和相互交互。而微信是学生利用的最多的手机应用。因此可以将微信作为一个新的MOOC平台。我们为系统结构教学专门建立了一个课程公众号,共有三大核心应用:包括课程资料、在线评测和互助答疑等。
课程资料包括课程介绍、课程大纲、课程教案、课程特色和参考资料等,学生可以通过该板块学习课程主要内容;在线评测板块主要是各章节核心知识点的一些考试题目,学生可以学完相应章节后做些自我评测、检测和巩固自己的学习效果;互助答疑是一个学生之间、学生和教师之间进行就系统结构相关难点进行交互讨论的地方,提供给大家一个交流沟通的好场所。
互助答疑还有一个十分重要的小板块,就是微信课堂或微信课程群。这是微信的一个强大的在线学习的功能。微信课堂是针对某一知识点(重点、难点或考点等)进行阐述的、短小精辟的教学视频,它适合于智能手机、平板电脑等互联网终端结合,支持翻转课堂学习、移动学习以及碎片化学习等形式的在线教学应用。我们使用手机录制了Cache-主存映射机制讲解视频,CPU流水线工作原理等视频,放在微信课堂上让学生随时观看;此外通过在微信课堂上放置一些核心知识点的PPT,配合一些语音讲解,使学生随时随地可以参加微课堂的学习,进一步强化学生的认知;学生对相关知识点有疑问,可以通过微信进行在线沟通。
3.新的实验平台的引入
(1)原有平台功能受限
目前体系结构实验主要采用软件模拟的方式来展示体系结构中关键知识点的内容,包括流水线工作原理和特性,Cache存储器工作原理和优点等。主要采用的软件包括WinDLX和SimpleScalar。WinDLX能够以图形方式演示DLX流水线的工作原理。通过改变流水线的段数、缓冲器延时大小、每段花费时间等控制参数,获得不同流水线配置下的流水线加速比等。SimpleScalar模拟器是基于单处理器架构模拟器,同时包含众多的工具集。通过工具集可以模拟许多不同体系结构的CPU,是研究人员使用软件手段模拟和研究CPU架构的方法。
这两种模拟器的使用方法主要是先进行相关体系结构参数设定,然后运行测试程序,最后根据程序运行结果验证设计思路的,其实验对象全部是验证型实验。对于学生而言,所做的工作仅仅只是系统结构技术参数的给定和测试程序的运行,最后从一堆运行出来的数据中得到实验结论。
使用软件模拟的方式适合研究工作者进行学术研究和理论验证,将对体系结构中的新思想体现在相应结构参数中,通过输出结果进行学术论证的常用方法,但是对于理论知识不够完善成熟的本科学生而言,此种实验形式过于枯燥。学生做完实验后,对整个实验过程缺乏感性认识,更谈不上进行进一步的创新工作,实验做到最后流于形式。因此迫切需要一种对设计型实验进行实践操作的实验方法,同时对验证型实验也有直观的验证。
(2)可以支持CPU设计的FPGA平台
计算机体系结构中十分重要的一个内容就是处理器的特性和工作机制。目前的体系结构教学课程中只有处理器结构描述,功能介绍,学生听起来很抽象,没有直观的认识,最好的办法是能够让学生动手设计一个CPU,将书本上的理论知识完全融入到实践中。
对于CPU设计来说,目前有两种方式:一种为软件方式,如SimpleScale等只是实现对CPU功能的模拟,不能对CPU内部工作流程进行控制,指令集的定制等;第二种为采用单片机形式来验证CPU功能,如验证CPU对存储器的访问功能,对总线的访问等,将CPU当作黑盒,根本的原因是单片机的功能固定,不能定制化。
块状溃疡:黄色块状1 mm2记1分,黑色块状1 mm2记2分(块状面积计算方法S=长径/2×短径/2×π)。
合理的方式是采用硬件方式来设计CPU,主流的方法是采用FPGA。FPGA为可编程阵列,通过硬件描述语言可以对FPGA芯片编程,定义不同的功能部件和内部连接方式,包括运算功能的定义,指令集的支持,存储部件的连接等。定义好相关功能后,可以直接在上位机上进行模拟仿真,验证设计方案;也可以方便的下载到FPGA上,通过硬件运行来输出结果。我们在实验课程中采用的是国际通用的Altera DE2教育平台,该平台功能十分强大,除了核心FPGA外,还连接有内存接口,外设接口等,这些接口可以用来与设计好的CPU进行交互。
DE2-115开发板除了可以支持CPU设计外,还可以支持很多的体系结构实验,包括CPU-存储器访问实验,CPU-外设访问实验,总线通讯实验和支持流水线功能的复杂CPU设计,多核CPU等。由于FPGA可以方便的进行硬件编程,它可以支持不同指令集,不同体系结构的CPU设计,也可以支持由简到繁、逐步提升的设计模式。
(3)支持高级课程实验开发
DE2开发板与众不同的地方在于它除了可以支持CPU设计之外,在它的FPGA芯片中还包含一个Nios软核,该软核主频在200MHz左右,基于MIPS架构。加上FPGA上集成的外设接口,存储器接口,整个母版形成了一个完整的专用MIPS指令集的计算机系统。使用该系统可以支持MIPS模式的汇编程序设计,高级语言C语言的程序开发。
由于基于Nios架构的专用处理器不同于常用的通用Intel处理器模式,加上其指令集可以定制,因此可以将它适用于专用场合,用来加速某些特定的数据的处理过程,加速某些特定算法的运算过程,如数字信号处理、机器学习等领域。对于学有余力或希望进行创新实验的学生来说,可以用该平台进行定制化开发工作,参与电子设计大赛。
总体来说,本课程改革的特色如下。
1.引入了体系结构热点前沿知识,鼓励学生自主学习和讨论
随着计算机硬件水平发展速度的不断提升,计算机体系结构方向的新技术也不断涌现。AlphaGo就采用了GPU技术来加快神经网络算法的求解速度,智能手机上采用的不同架构的多核技术等。本课程改革会与时俱进,不断将新的知识点引入课堂,提高学生的眼界;引导学生主动查阅最新文献,讨论学科发展前沿知识。
为了将计算机体系结构的较抽象的硬件知识点讲透彻,我们采用了较多的多媒体手段来制作课件,使用声音、图像和动画来演示复杂的硬件工作机制;为了让学生在讲课之前对所讲内容有较好的认识,在课后能够检验学习效果,我们采用了微信这种能够随时随地学习和沟通的工具,建立了体系结构课程公众号,学生可以通过公众号方便地进行课程学习,自我评测和疑难点讨论。
3.采用先进的FPGA硬件实验平台,丰富和完善体系结构实验环境
CPU是计算机的核心,也是体系结构中需要重点讲述的计算机组件。一直以来,由于不能对CPU内部展开,学生无法准确理解CPU工作原理。而传统的CPU实验只是将CPU当作黑盒,验证其功能。本课程改革引入了最新的FPGA硬件平台,该平台可以支持电路设计和硬件编程,学生可以根据需要进行定制化的CPU设计,加入不同的指令集来加速不同的上层应用包括机器学习程序的运行。学生可以使用该FPGA设计不同的嵌入式程序来驱动不同的外部设备,进行创新型实验。
自从我院从2014年开展计算机体系结构课程改革以来,学生的学习热情得到了极大提高,通过新的FPGA实验平台开展了较多的课程实验,体系结构中的众多重难点知识学生理解难度大大降低。对比2015年体系结构期末考试结果来看,在知识点覆盖相似的条件下,不及格率从12%下降到8%,而优秀率提高了3个百分点。
本文对我院引入FPGA实验平台进行计算机体系结构课程教学改革进行了详细分析和介绍。通过一系列新内容和新教学方法的引入,学生不仅对计算机体系结构的基础知识点认识更加深入,而且对目前体系结构发展的热点问题有了浓厚的兴趣;新的FPGA实验平台更使得学生可以将体系结构的理论知识转化为实际的实验过程,大大强化其感性认知,抽象知识点就可以得到深刻理解;强大的硬件平台更可以支持学生进行创新创业活动。
随着计算机体系结构技术的不断进步,社会上对既掌握熟练的软件编程技术,又对计算机硬软件系统的工作原理有深刻了解的软件工程人才需求越来越大。我们的课程改革也要不断引入新的知识点,采用新的教学方法来不断改进教学质量,努力培养具备现代计算机系统结构视角的软件工程人才。
[1] 方娟.计算机系统结构课程教学改革与实践[C]. 全国计算机新科技与计算机教育学术大会,2010.1 136~1 140.
[2] 黄彩霞, 徐惠. 基于Learning-by-doing的计算机系统结构课程改革[J].计算机教育, 2011, (18):23~26.
[3] 黄彩霞, 杨凤年. “计算机系统结构”实验课程改革和实践[J]. 计算机教育, 2008,(14):156~159.
[4] 王华, 徐洁, 王雁东, 等. “计算机系统结构”课程改革与探索[J]. 计算机教育, 2009, (10).
[5] 端文宗. 基于FPGA的计算机体系结构实验教学硬件平台的设计与实现[J]. 中国电子商情(通信市场), 2012,(5):76~82.
2095-4654(2016)12-0064-04
2016-04-22 基金项目:湖北省自然基金项目(201FFB04505)资助
TP303-4
A