郭炜 张钢
文章编号:1672-5913(2015)03-0090-04
中图分类号:G642
摘 要:针对计算机设计与调试课程教学内容落后于计算机系统发展的情况,介绍在CDIO理念指导下重新构建计算机设计与调试课程的教学内容和实践过程,提出以设计PowerPC扩展指令协处理器中的VSFX指令作为教学内容的课程改革方案,并在教学过程中进行实践。
关键词:CDIO;计算机设计与调试;课程改革;向量协处理器;AltiVec技术
1 背景
CDIO工程教育模式是近年来国际工程教育改革的重要成果。CDIO代表构思(conceive)、设计(design)、实现(implement)和运行(operate)。CDIO模式以产品研发到产品运行的生命周期为载体,使学生以主动的、实践的、课程之间有机联系的方式学习工科课程。CDIO模式教学以项目开发为主线展开,整个教学过程是一种由教师发起并维持的、在教师指导下以学生为主体的协作、交流过程。
以前,计算机设计与调试课程的任务是让学生用常规集成电路在面板上通过接线的方式,设计实现一个有十几条基本指令的微程序控制器。若干年前,让学生用常规集成电路设计实现一个微程序控制器,无论是从设计的综合性方面、从硬件系列课程内容的贯通性方面,还是从设计实现的工作量方面都是比较合适的,而且计算机设计与调试课程的教学效果也不错。但是,计算机系统快速发展,不论是在微处理器架构方面,还是在计算机系统设计与实现方法方面都发生了巨大的变化,比如在设计过程中,硬件设计语言已经被广泛采用,并且在计算机系统设计中FPGA已经成为基本的手段,计算机辅助硬件设计和仿真平台已经成为基本设计工具,精简指令系统RISC架构在大量的微处理器中被广泛使用,而微程序设计技术已经很少在CPU中使用了。显然,以前计算机设计与调试课程的内容和方法已经不再适合今天的现实情况了。
我们希望计算机设计与调试课程能够跟上计算机技术的发展,使学生通过课程学习,掌握当前主流设计方法和设计主流处理器系统架构,从而有效提高计算机系统的设计能力。在教学方法上,我们借鉴CDIO教学理念,在整个教学过程中突出实践动手和自主学习的特点。
2 PowerPC AltiVec 技术介绍
PowerPC是一种RISC架构的CPU。PowerPC处理器有广泛的应用,是目前市面上主流的处理器。AltNec技术是摩托罗拉PowerPC RISC处理器体系结构的向量并行处理技术,是现有PowerPC体系结构的延伸,它带有128位向量处理装置,可以同时处理整数和浮点数据,AltiVec的顶层架构如图1所示。AltiVec技术的操作是单指令多重数据并行处理,是一种短向量并行体系结构。根据数据大小不同,向量分别具有4、8或16元素长度,和以前巨型计算机的长向量体系结构明显不同。AltiVec技术可以应用于通信业、多媒体等注重性能的应用方案中,达到提高性能的目的。
3 课程内容改革
3.1 课程内容
计算机设计与调试课程是天津大学汁算机科学与技术专业计算机T程方向的一门课程设计类课程,于大三下学期开设,2学分,共40学时计算机设计与调试课程以PowerPC RISC处理器的指令系统为参考,通过设计一个PowerPC扩展指令协处理器AltiVec模块L|i的VSFX指令部分,将计算机组成原理、计算机系统结构、汇编语言、VLSI系统设计这几门课程所学的知识结合起来,由学生自己设计一个简单的“计算机”,进而加深对相关课程的理解,掌握设计方法,熟悉相关设计工具。课程中涉及到的主要内容包括:PowerPC405核、加速处理单元控制器(APUController)和协处理器之间的接口和处理流程、设计流程与功能验证、PowerPC AltiVec指令集、Power ISA中向量加法指令(vadduhm)实例、阳量简单定点单元(VSFX)、AltiVec硬件设计顶层架构和VSFX模块与顶层的连接信号等
该课程使用System Verilog语言构建功能验证平台。随着集成电路芯片设汁的规模不断增大,芯片验证工作成了制约芯片设计水平的关键性因素。传统的验证方法主要依靠人工进行验证,效率较低。System Verilog语言是一种专门用来搭建测试环境的语言。System Verilog语言将硬件描述语言同高级验证语言相结合,提供随机约束、功能覆盖率、断言和面向对象等新技术。课程要求学生学习并使用System Vcrilog语言建立一个可以自动生成测试向量的测试环境,用这个测试环境检查学生设计的系统和功能一
选择协处理器AltiVec模块作为课程的设计内容,有以下几个方面的考虑:由于向量计算在功耗和并行度等方面的优势,使其在现代微处理器设计中的作用正在被重新认识;向量计算的内容是目前计算机组成原理和计算机系统结构等课程中比较薄弱的地方,计算机设计与调试课程恰好可以对此加以弥补;设计向量协处理器可以避免与计算机组成原理、计算机系统结构、VLSI系统设计等课程的设计型实验内容相冲突;设计向量协处理器可以使学生学会使用从行为级建模到用硬件描述语言设计、从仿真到开发板上的验证等全过程的设计软件和设计环境。
3.2 课程设计任务及教学组织形式
3.2.1 课程设计任务
课程设计任务包括4部分内容。
(1)模块设计:采用Verilog HDL,设计PowerPC协处理器AltiVec模块中部分VSFX指令。
(2)顶层模块集成:将设计的VSFX指令模块与其他模块集成,了解模块与模块之间的关系。
(3)仿真验证:用AltiVec汇编指令编写测试程序,通过汇编编译器生成机器代码。在集成环境下,仿真验证设计的正确性。
(4) FPGA开发版上的验证:将所设计的RTL代码放置到FPGA开发板上,验证所设计的硬件实现的正确性。使学生进一步掌握开发板上的接口电路在调试过程中的作用等。
为了使课程设计的设计工作循序渐进,参考CDIO教学模式,把整个设计任务分为8个相互联系、难度逐步增加的子任务。
子任务一:阅读指令定义文档,对小组选定的5条不同类型的指令给予特别关注。
子任务二:以小组为单位,讲解和展示小组将要实现的5条不同类型指令的功能。
子任务三:用C语言实现所要设计的5条不同类型指令的功能,并设计功能测试程序,以C语言实现的功能测试的输入和输出结果为“标准测试程序”,作为下一步硬件设计的测试向量。
子任务四:学习AltNec硬件架构设计;看懂AltiVec中除VSFX模块外的所有RTL代码(Register-Transfer-Level code);画出AltiVec toplevel的硬件架构图。
子任务五:定义所要设计的VSFX模块的架构、子模块;要求画出模块的框图,标注寄存器及多路选择器的位置,明确下一步RTL代码的关键内容。
子任务六:进行VSFX模块的RTL代码设计及仿真验证;完成二级译码电路设计;完成功能模块设计。
子任务七:进行顶层设计及仿真验证。将所设计的VSFX模块与top连接,形成完整的AltiVec模块;进行AltiVec层次的验证;输入所设计的5条指令的汇编指令,采用VSFX模块级的数据,结果与之前的VSFX模块级仿真数据对比。在基本功能测试完成后,将进一步在SystemVerilog语言建立的自动生成测试向量的测试环境中,通过运行生成的100组随机向量,检查学生设计的系统和功能的正确性,保证测试覆盖率。
子任务八:进行FPGA开发板上的验证。RTL级的仿真验证仅仅能保证所设计的硬件的逻辑功能正确性。通过将所设计的RTL代码放置到FPGA开发板上才能够验证所设计的硬件实现的时序正确性及工作速度是否达到设计要求。最后针对FPGA开发板的逻辑综合与静态时序分析,验证设计的时序的正确性以及所设计的电路可以在什么时钟频率下工作等。
3.2.2教学组织形式
在课程设计开始时,教师要求学生自愿组合,每组2人,每组学生从70条VSFX指令中选出5条不同类型的指令,作为准备由硬件实现的指令,这就是小组的设计任务。尽管每个小组都要完成同样的8个子任务,但是由于每组学生所选择的5条指令并不相同,所以每个小组实际完成的任务并不一样。通过布置任务、教师引导、分组讨论、学生实践、扩展阅读、沟通交流、实现设计、完成测试等一系列教学环节,让学生完成一个现代处理器PowerPC扩展指令协处理器AltiVec模块中VSFX指令部分的设计。
在整个课程设计过程中,教师讲得很少,主要靠学生自学、讨论和实践。在每个实验的关键节点上,教师都会安排学生做课堂汇报。在学牛进行汇报过程中,教师及时纠正学生的错误,正确引导学生一步一步完成任务。教师给学生准备了必要的参考阅读资料,包括1 300多页的IBM Power处理器设计文档“Book-IChapter 6.Vector Facility”、260多页的飞思卡尔公司技术手册“AltiVec Technology ProgrammingInterface Manual”、IBM公司和摩托罗拉公司发表在国际会议上的对PowerPC做向量扩展的文章“A Low-power, High-speed Implementation of aPowerPC Microprocessor Vector Extension”和VSFX指令第一级译码器文档等。另外,教师要搭建AltiVec模块的集成与验证平台。
4 结语
在2011级计算机工程专业方向本科生的汁算机设计与调试课程中,我们按照上述新的教学内容和教学组织形式进行了尝试。学生经历r一个完整的系统设计过程,所有学生的设计都通过了仿真检测和在FPGA开发板上的测试。实践表明,教学内容和教学组织形式的改革调动了学生学习的积极性和主动性,取得了非常好的教学效果。