1 痛点问题分析
我国信息领域在基础软硬件的原始创新能力不足的问题归结根本在于,我国高校对于计算机人才过于关注应用能力的培养,缺乏系统能力和基础软硬件原始创新能力的培养[1-3]。所谓“系统能力”,是指能够理解计算机系统的整体性、关联性、层次性、动态性和开放性,掌握计算机软硬件协同工作及相互作用机制,并综合运用多种知识与技术完成全系统开发的能力。可以说,系统能力培养将关乎我国整个自主可控信息产业的人才培养质量、自主创新能力、核心竞争力[4-5]。为了适应我国IT产业对自主可控人才的迫切需求,教育部计算机专业教育教学指导委员会(简称教指委)启动了系统能力培养专项,近两届教指委均将其列为重点工作之一[6]。
计算机组成与体系结构是计算机专业的核心课程,在系统能力培养体系中更是一门承上启下的课程。它以数字逻辑与数字系统课程为技术基础,为操作系统、编译原理等后续课程提供底层计算平台,是从事处理器等高端芯片设计的重要基石。目前国内多数高校本课程的授课和实验主要采用如下几种方式:①采用高级语言模拟计算机系统中关键部件的功能,如Cache、分支预测器、Tomasulo指令调度器等,通过仿真对性能、功耗等指标进行评估[7];②采用画电路原理图方式,如Logisim等工具,设计处理器和计算机系统,再通过仿真验证结果[8-9];③利用硬件描述语言和EDA工具设计电路,然后综合仿真并通过FPGA进行验证[10-12]。但这些方式均没有体现出系统能力培养所要求的整体性、关联性和层次性,集中表现为以下痛点问题。
1)教学内容繁杂,缺少产出导向和知识贯穿。
传统教学中该课程要学习10~14章内容,覆盖计算机体系结构的各个层面。但课程多采用横向“解剖式”教学方法,缺乏纵向“贯穿式”知识传授,知识点缺少衔接。此外,过多的教学内容,由于缺少产出导向,学生学习缺乏目标,不知道如何应用这些知识解决实际问题。
2)多验证性实验,缺少综合性实验。
传统实践教学多以基于仿真的验证性实验为主,虽然可以让学生基本理解、掌握计算机系统运行的基本原理,但由于仿真与真实系统的差异性以及验证实验缺乏足够的工程量,使得复杂计算机系统设计过程中存在的深层次问题难以暴露,学生系统设计能力的训练严重不足。
3)评价手段单一,限制了对能力和素质的训练。
多以期末考试作为主要评价方式,手段单一,无法反映学生阶段性学习效果,无法激发学习兴趣和学习主动性,限制了其在团队协作、解决复杂工程问题、辩证思维、自主学习等能力和素质方面的训练。
2 课程教学改革的总体思路
课程以知识、能力、素质产出为牵引,以学生未来职业发展和国家重大需求为导向,以践行系统能力培养为核心教学目标,以FPGA口袋实验室为平台载体,基于软硬件协同设计方法学,围绕“设计一台功能完备、可支持操作系统和常见应用运行的计算机系统”这一复杂工程问题,构建与前后多门课程知识点“一以贯之”的项目式教学模式,从认知、分析、设计、集成、优化、应用多个层次实现对于学生系统能力的培养,使学生能够深入地理解计算机系统的运行机理,最终成长为掌握自主可控技术、突破卡脖子领域的信息产业创新型人才。
(1)知识产出:计算机软硬件协同工作机制。
(2)能力产出:计算机系统分析能力、设计与集成能力、优化与应用能力。
(3)素养产出:自主学习、辩证思维、团队合作。
3 项目式教学的实施路径
3.1 重塑以产出牵引的贯穿式知识体系
围绕基于MIPS32指令集的处理器和SoC设计这一课程目标,将本课程与前序课程的知识点进行梳理、重塑和“珠串化”,明确各课程在系统能力培养过程中的作用,如图1所示。
相比于传统课程,移除了对课程目标支撑不强的知识点,形成核心知识和能力要求(见表1)。被移除的知识点并没有被抛弃,而是转入到选修课程“高等计算机体系结构”中,使得对计算机体系结构感兴趣的学生可以进一步深入学习。
3.2 项目式实践教学体系构建与实施
课程的项目式教学模式概括为一句话:“奋斗一学期,造台计算机”。按照业界开发团队的组织架构,学生被分为6~8人组成的开发团队,每个团队又细分为模拟器开发组、CPU设计组、SoC设计组、验证测试组,分别承担如下任务(如图2所示)。
1)CPU仿真测试环境设计与搭建。
该任务由3个子任务构成,采用高级程序设计语言,基于trace仿真的方式,设计如下仿真器:MIPS32指令集仿真器、Cache仿真器和分支预测仿真器。其中MIPS32指令集仿真器为必做子任务,其他两个为选做任务。
(1)子任务1:MIPS32指令集仿真器,用于实现对程序执行过程的模拟和调试。该指令集仿真器可支持单步执行、断点、显示寄存器信息等功能,为后续的处理器设计提供交叉验证环境。
(2)子任务2:Cache仿真器可支持对L1、L2 Cache结构的建模,可对主要的Cache 体结构参数、替换策略和写策略进行灵活配置。仿真器读入访存地址流,模拟访存过程,获取多种访存性能量化结果。
(3)子任务3:分支预测仿真器可支持对常见局部分支预测器和全局分支预测器的建模,可对分支历史表BHT的项数、分支历史寄存器的位宽等参数进行设置。
2)CPU的设计与实现。
学生采用原理图方式设计流水线处理器的微架构,然后采用基于HDL的现代集成电路设计流程,完成具有5级流水线的CPU的建模,并基于EDA工具进行全流程实现。所设计的5级流水线处理器至少满足如下设计要求。
(1)流水线至少5级,数据通路为32位。
(2)采用哈佛结构,指令访问端口和数据访问端口分离。
(3)支持32个32位寄存器、HILO寄存器和CP0协处理器。
(4)支持硬乘法器和除法器。
(5)支持数据旁路、分支延迟槽和流水线暂停机制。
(6)支持异常和中断处理。
除上述要求外,设计团队可采用课中所学的知识对处理器性能进行进一步优化,例如,Cache、分支预测器、更深的流水线深度、多发射技术、乱序执行技术等。
3)SoC系统设计与实现。
基于IP复用方法学,采用Vivado开发环境中提供的原理图设计方式,围绕所设计的CPU和AXI4总线完成片上系统(SoC)的集成和搭建。整个SoC功能完备,具有处理器、存储系统和常见I/O外设,学生可根据各设计团队的最终目标集成所需的IP,但要求至少包括主存、SPI Flash、GPIO、UART、Timer。此外,针对目标SoC还要定义存储空间划分方式,并针对所集成的IP设计外设驱动程序,为操作系统微内核的移植或常见应用的开发提供完成运行时的环境。
4)系统验证与测试。
针对所设计的处理器及目标SoC,开发各类测试用例,并结合标准测试用例和龙芯杯测试用例,对系统功能进行交叉验证和性能评估,为CPU和SoC的优化提供量化分析结果的数据依据。
3.3 打造“学中做—做中学”的混合授课模式
课程打破了传统的理论与实践分裂的授课模式,围绕项目案例,形成了“理论+实践”混合授课模式。
(1)课前,教师明确并布置处理器及计算机系统设计任务,向学生详细讲解设计要求和评测方法。学生自由分组,构成设计团队,初步制订项目分工和工作计划。每次课前,教师向学生发布预习任务,使学生提前了解课中将要完成的设计内容和目标,并给出处理器及计算机系统各组成部分的初步设计方案。
(2)课中,教师围绕案例,重在讲解处理器及计算机系统设计方法;学生随堂开展设计工作,并以组为单位讨论设计中出现的问题和优化改进方案。基于OBE教学理念,形成集师讲生练、生练师评、生练生评、生生协作等多种互动形式为一体的“理论+实践”混合式课堂。
(3)课后,学生根据课上学习的知识进一步完善处理器及计算机系统设计方案。各设计团队借助git管理整个项目工程,并通过在线共享文档管理项目进度。
3.4 建立多元化、分层次、过程性的评价
本课程弱化期末理论考试,突出项目式实践教学的占比,摒弃传统单一化、单层次、结果性的评价,采用多元化、分层次、过程性的评价。
课程最终成绩由平时成绩、实验成绩和期末考试成绩综合构成,各部分比例如下:平时成绩占20%,实验成绩占60%,期末考试占20%。
(1)平时成绩主要考查学生对计算机体系结构基本概念的掌握程度,成绩由4次平时作业及4次随堂测试构成。
(2)实验成绩主要考核学生是否能够综合应用课程所学的知识,完成处理器及SoC的设计与实现。该部分成绩又由4个阶段任务成绩和答辩汇报成绩构成。其中,4个阶段任务占80%,答辩汇报占20%。阶段任务的成绩由教师评定,采用分层级打分方式,每个阶段任务由4个层级构成(见表2),表中分数均为起评分,教师根据学生的完成质量给出具体分值。答辩汇报的成绩又由2部分构成,分别为教师评定占70%,组内互评占30%。
(3)期末考试主要考查学生应用量化方法对计算机体系结构进行分析和设计的能力。考试形式为卷面考试,题型均为主观题,考试时间1h。
4 改革成效
从2018年至今,各阶段任务完成情况逐年递增,见表3。
课程的学生评教成绩从2018年前的90分提升到95分以上,学生普遍反映实验虽然挑战性高,但内容和资源丰富,知识点之间逻辑关系清晰,任务设置合理。学生还反映本课程有利于能力提升,使系统思维得到了充分训练,同时激发了学习的积极性。
学生组队参加全国大学生系统能力大赛,分别获得二等奖1次,三等奖3次。此外,毕业生中入职华为海思、麒麟、飞腾等国内基础软硬件企业的人数逐年增多,学生对于从事基础软硬件的热情和信心正在逐步增强。经过多年探索,本课程对学生系统创新能力的培养初获成效,在一定程度上扭转了计算机专业学生普遍存在的“欺软怕硬”现象,真正做到“双腿”走路。
本教学团队共撰写相关教材3本,其中《SoC系统设计与实现》和《计算机系统设计》分获首届天津大学优秀教材建设一、二等奖,已被数十所高校选定为相关课程的指定教材或参考教材。课程大纲和实验大纲入选“全国计算机类教学资源建设优秀课程配套资源”。本教学团队承担了和课程相关的4项教育部产学合作协同育人项目,2项天津大学教改项目,其中1项结题为优秀。课程组教师多次受邀参加各类教学研讨会,并报告分享课程建设经验,如“第一届长三角计算机系统能力培养教学与实践高峰论坛”“计算机系统能力培养峰会”等。
5 结 语
计算机组成与体系结构课程以“掌握自主可控信息技术人才培养”这一国家战略需求为导向,以学生未来职业发展为中心,围绕“奋斗一学期,造台计算机”这一课程目标,打造了全方位系统创新能力培养课堂。学生开展自主式学习,教师进行靶向式辅助,实现了掌握自主可控技术的基础软硬件创新型人才的培养。经过多年探索,取得了良好的教学效果。下一步,拟从以下3方面入手继续完善相关工作。
(1)进一步完善课程内容,对课程所设计的计算机系统进一步扩展,使其支持RISC-V、LoongArch等多种具有自主知识产权或开源的指令集系统,推动开源文化和自主知识产权的设计理念在学生群体中的普及和传播。
(2)针对课程内容制作MOOC课程,形成集理论教学和实践教学为一体的在线教学资源,并向全国推广。
(3)进一步细化和完善评价体系,利用全过程留痕的学情数据,分层次、细粒度对学生的设计成果进行评价,逐步以项目完成度和完成质量的评价取代基于考试的评价方式。
参考文献:
[1] 倪光南. 发展自主可控的信息技术和产业[J]. 电子产品世界, 2015(22): 25-26.
[2] 秦磊华, 谭志虎. 信息产业自主可控人才培养问题研究[J]. 科技管理研究, 2016(36): 37-41.
[3] 胡伟武. 新工科建设的内涵与行动[J]. 中国军转民, 2020(5): 8-13.
[4] 郑纬民. 计算机专业大学生的系统能力培养[J]. 中国大学教学, 2021(5): 19-23.
[5] 董跃宇, 强振平, 胡坤融, 等. 新工科理念下的计算机系统能力培养教学体系建设探讨[J]. 大学教育, 2021(6): 115-117.
[6] 高小鹏. 计算机专业系统能力培养的技术途径[J]. 中国大学教学, 2014(8): 53-57, 34.
[7] 蔡晓军, 栾峻峰, 申兆岩, 等. 面向冯·诺依曼计算机的指令执行虚拟仿真设计与探讨[J]. 实验技术与管理, 2022, 39(5): 89-93.
[8] 胡迪青, 谭志虎, 秦磊华. 计算机专业硬件实验自动评测系统设计与实现[J]. 电气电子教学学报, 2020, 42(4): 115-118.
[9] 胡迪青, 谭志虎, 吴非.“计算机组成原理”课程虚拟仿真实践教学研究[J]. 电气电子教学学报, 2018, 40(4): 113-116.
[10] 乔百友, 赵相国, 袁野. 计算机体系结构课程教学改革实践[J]. 教育教学论坛, 2019(51): 85-86.
[11] 秦国锋, 李晨扬, 林芃芃, 等. 重构计算机系统教学: 从MIPS到RISC-V计算机原型系统实验[J]. 实验技术与管理, 2022, 39(5): 189-198.
[12] 吴强彭, 彭蔓蔓. 计算机系统结构课程在线研讨式教学实践[J]. 计算机教育, 2021(10): 72-75.
基金项目:教育部2021年第一批产学合作协同育人项目(202101108006);天津大学2021年本科教育教学改革研究项目。
第一作者简介:魏继增,男,天津大学副教授,研究方向为计算机系统结构,weijizeng@tju.edu.cn。
引文格式:魏继增,陈仁海. 面向系统能力培养的计算机组成与体系结构课程项目式教学改革 [J].计算机教育,2023(2):74-78.
转自:“计算机教育”微信公众号
如有侵权,请联系本站删除!