基于项目学习的CPU体系架构教学方法
2016-11-02张振宇李国金刘英哲
张振宇 李国金 刘英哲
摘要: 为不了解硬件的学生讲授CPU体系架构是一件很困难的事情,以往的教学方式是基于仿真与纸上练习的,但是效果非常有限,因为在课堂上讲解电子系统设计是非常复杂的。在过去的两年中,我们开发了一套运行于FPGA的实用实验。要求学生从零开始在60个学时内独立开发处理器,并在处理器上采用汇编语言运行一些小程序。通过设计处理器的不同模块使得学生一步步的理解体系架构,所有的模块像堆积木一样构成整个处理器。两年的运行实践证明这种基于项目学习的教学方法是非常有效的,一些学生对CPU体系架构产生了浓厚兴趣,并攻读了硕士学位。
关键词:CPU体系架构;FPGA;基于项目学习
中图分类号:G64 文献标识码:A 文章编号:1009-3044(2016)18-0157-02
1 简介
处理器体系架构是辽宁工程技术大学电子系开设的专业核心课,然而传统的教学方法偏重于理论并采用仿真方法验证[1,2]。学生没有机会在硬件平台上实现处理器模块,多年的教学实践表明该方法是低效的,无法锻炼动手能力和提升想象力。 Cifredo等对处理器体系结构教学做了有益的尝试[3],大多数尝试取得的进展非常有限,无法满足课程要求。
基于项目的学习是一种以学生为中心的教学模式,学生在教师或专家的指导下提出问题,并探究这些问题的答案。Martinez等曾采用该教学模式提升CPU体系架构的教学效果[4],但是学生并没有真正掌握设计一款可运行处理器的技巧。
FPGA能以较低成本短周期内设计更为复杂的高性能系统, 使得学生对体系架构有更深入的理解,可用于计算机体系架构课程教学中。本文将采用基于项目的教学方法在Nexys FPGA平台上完成实现一种处理器,并以项目的完成状况作为主要考核依据。
2 课程计划
基于项目的学习被分为几个复杂环节,全部学生被分为若干小组,每个小组两人。每个小组不仅要完成处理器的已有功能,而且能够在处理器上开发他们所希望的新功能。基于项目的学习过程包含了各种活动使得学生能够一开始就学习到处理器所需的各种功能。每一个环节都要为处理器增加新功能,学生要独立完成各项功能。小组成员间要互相讨论设计中遇到的难题。课程结束时,每个小组要实现真正处理器,该处理器能够采用汇编语言运行实际算法。
全部课程为十二周,每周学生都要完成以下工作:
u 讲座,主要介绍新模块,一个半小时。
u 动手训练环节,每30个学生一组,为在FPGA上实现上述模块做准备,一个半小时。
u 在FPGA上实现模块,两个小时。
课程内容主要包括:
u 熟悉FPGA平台,并进行一些简单的操作。
u 采用逻辑门建立原理图,并仿真电路的功能。
u 四位加法器,熟悉可重用概念,采用更高级的仿真方法设计更复杂电路。
u 熟悉十六位显示原理,理解时序电路原理。
u 理解有限状态机原理,掌握基本的编程方法,熟悉控制通路概念。
u 掌握寄存器和总线概念,连接接寄存器到总线。
u 掌握算术逻辑单元的设计技巧,并能为其添加功能。
u 熟悉数据存储器和堆栈等概念,并掌握设计技巧。
经过一段时间学习学生已经获得了关于处理器功能和架构足够知识,也掌握了记忆、理解、应用、分析和创造能力,可以着手设计处理器。目标处理器架构如图1所示,该处理器为十六位,每个时钟周期执行一个指令,流水线采用延迟分支避免流水线停止。处理器包含通用寄存器R1-R5、接口寄存器Rsw、Rled、R7seg、数据寄存器Ram和Rdm和算术逻辑单元寄存器。
图1 处理器架构
3 教学效果
学期结束后,学生已经掌握了独立设计处理器的全部细节,并能够从零开始构建强大的处理器。学生设计的处理器可被用作实际处理器来使用,并能在处理器上运行自己编写的程序。
同时学生也能够独立的为算术逻辑单元增加新功能。另外学生也掌握了如何在FPGA开发板上实现处理器的技术,诸如IP核和硬件重用等高端数字设计技术也被涵盖在课程中。
表1列出了课程的学习下过及这些效果是如何达到的。最终成绩小测验、期末考试和项目完成效果构成。超过百分之七十五设计出能够实际运行的处理器,其中百分之十五以上学生完成得非常好。
4 总结
本文提出了一种基于项目的处理器体系架构教学方法,该方法要求学生从零开始构建处理器。通过设计学生能够掌握应用FPGA设计处理器架构和当代数字设计的基本知识,整个学期中学生能够构建简单的逻辑模块并把他们整合成为更复杂的模块。学习成绩由小测验、期末考试和项目完成效果构成。基于项目的学习方法非常受学生欢迎,学生的自主性和创造力得到极大程度的发挥。
参考文献:
[1] Grunbacher, Herbert, and Maziar Khosravipour, “Teaching computer Architecture”.
[2] Shine V. J., and P. K. Sathish, “Teaching computer Architecture using Simulation Tools”, International Joural of Computer Science & Information Technologies 5.2 (2014).
[3] Cifredo-Chacon, M., Angel Quiros-Olozabal, and Jose Maria, “Computer Architecture and FPGA: A learning-by-doing Methodology for digital-native Students,” Computer Applications in Engineering Educations, 2015.
[4] Marlinez-Mones, Alejamdra, E. Gomez-Sanchez, Y. A. Dimitriadis, “Multiple case studies to enhance project-based learning in computer architecture course,” IEEE Transactions on education, 48.3, 2005: 482-489.