APP下载

基于RISC-V 架构的计算机系统能力培养机制探索

2020-12-19项东升张其林

计算机教育 2020年1期
关键词:源代码计算机系统开源

张 军,项东升,张其林,王 普

(湖北文理学院 计算机工程学院,湖北 襄阳 411053)

0 引 言

新一代信息技术的发展驱动着新产品、新产业和新模式迅猛发展。新一代计算机技术是当前信息技术创新的主流,包括以下特征[1]:①云计算、大数据、人工智能、物联网等新技术带来新的知识体系和技术内容,支撑新产品与新产业的不断出现和发展;②计算机技术与其他学科深度交叉融合,持续促进产品创新与模式改革。为了适应这些特征,计算机类人才必须了解不同系统平台的底层结构,能够从系统层面综合设计,通过软硬件协同设计实现最优的系统方案,这对计算机类专业人才的系统能力提出很高要求。

通过系统能力培养,计算机类学生深入理解并掌握计算机系统的工作机制和原理,理解计算机系统硬件与软件层次结构和相互关联(如处理器架构、操作系统及高级语言程序之间的逻辑层次和相互联系),并能够进行软硬件协同设计,能够设计与开发满足新时代需求的计算机系统。这就要求计算机类学生既有完备的计算机系统知识,又有解决复杂工程问题的实践能力,强化和提升学生的应用和创新能力,提高学生适应信息技术发展趋势的能力[2]。

虽然国内外在系统能力培养上已经取得了许多研究进展,但是国内地方院校在系统能力培养方面存在一些问题[3],不能满足新经济发展的需求。首先,传统的基于“示意图+例题”的知识点讲授方法和以验证为目的实验平台无法提供知识点的实现细节,不利于学生对知识点的理解和应用;其次,由于各门课程的教学与实验平台缺乏延续性,缺少贯穿各门课程的综合性实验平台,不利于学生工程实践能力与创新能力培养,学用脱节[4];最后,清华大学等高校的系统能力培养实验平台在地方高校的应用存在困难。这些实验平台对教师的工程能力要求较高,且不能作为教师的科研平台,地方高校教师在教学与科研的双重压力下,没有提高自身工程能力、充分发挥实验平台作用的积极性。

1 系统能力培养的思路

当前教学通常基于“示意图+例题”讲解知识点。一方面因为看不到知识点的具体实现,学生掌握了知识点的工作原理后不能灵活使用所学内容;另一方面,教学中的知识点相互独立,学生不了解各知识点在计算机系统中的位置及相互关系。为了解决这些问题,需要一个辅助教师授课的教学平台,教学平台中包含知识点的具体实现。教师将核心知识点的具体实现(开源项目源代码)作为教学案例,使学生将理论知识与具体实现相结合,并基于教学平台将所有知识点串联在一起,促进学生对知识点的深入理解和灵活应用。

实验是加深学生对知识点理解和应用的重要环节。当前以验证为目的实验平台无法提供实现细节,各门课程的教学与实验平台缺乏延续性,并且缺少贯穿各门课程的综合性实验平台。学生总是要花时间学习新的实验环境,增加了学生负担。各门课的实验环境不能有效结合在一起,不能进行综合性的实验,不利于学生工程能力与创新能力的培养。为了解决这些问题,需要将各门课程的教学平台与实验平台统一,并且平台代码开源。课程间的教学与实践平台要相互关联,能够开展大型综合性实验。

基于以上分析,教学与实验平台必须满足以下要求:①平台所用代码是开源免费的,并且代码简洁、书写规范、容易理解,方便教师从中提取教学案例,同时方便学生自己搭建实验环境,使其不受时间和空间的影响;②平台所用代码在工业界或科学研究上广泛接受,使其能够用于教师的科研项目,提高教师的积极性;③平台所用代码能够实现完整的计算机系统,基于该系统可以解决较复杂的工程问题,培养学生的工程能力和创新能力。

2 基于开源代码的教学与实验平台

国家计算机系统能力培养工作小组提出的“一个 CPU、一个编译器、一个操作系统”方案能够很好地体现计算机能力培养的具体方法[5-6]。经过调研,基于RISC-V 的CPU、编译器和操作系统开源项目可满足上述要求。

RISC-V 是由美国加州大学伯克利分校于2010 年提出的全新简单且开放免费的精简指令集体系架构。与主流的处理器架构(如ARM 或x86)相比,RISC-V 不需要考虑向后兼容,并借助计算机体系结构多年的发展经验,使其架构更简单高效。经过多年的发展,已经有丰富的开源RISC-V 处理器实现,如加州大学伯克利分校开发的Rocket 与Boom 处理器核,我国芯来科技开发的蜂鸟E200 处理器核。以开源RISC-V 处理器为实验平台的研究论文更是逐年增加。众多芯片公司(如三星、英伟达、西部数据等)开始使用或者计划将自研的RISC-V 处理器用于产品。另一方面,RISC-V 社区已经提供完整的工具链,RISC-V 基金也会持续维护工具链,包括支持RISC-V 的GCC 编译器和LLVM 编译器、操作系统、仿真器、QEMU 模拟器和测试套件。

经过调研,我们选择芯来科技开发的蜂鸟E200 RISC-V 处理器作为数字电路设计、计算机组成原理、计算机接口技术等课程的教学与实验平台;选择已经移植到蜂鸟E200 处理器的FreeRTOS 作为操作系统课程的教学与实验平台,采用开源的编译器LLVM 作为编译原理课程的教学与实验平台,并将三者相结合,开展大型综合性实验。

蜂鸟E200 处理器是由芯来科技开发的一款开源RISC-V 处理器,具有以下优点:①该处理器不仅提供处理器核的实现,还包括SoC 实现、FPGA 平台和软件示例;②处理器代码由Verilog HDL 编写并添加丰富的注释,可读性强,容易理解,最重要的是代码全部开源免费,相关内容在配套书籍中有详细介绍,非常适合作为高校教学案例;③处理器代码由拥有多年处理器开发经验的团队编写,代码符合工业级标准,不仅可以作为教师的科研教学平台,还可以作为师生创新创业平台;④该处理器由国内研发团队开发,可方便获得开发人员的技术支持。

FreeRTOS 虽然是一款轻量级的操作系统,但可基本满足较小系统的需求,其功能包括任务管理、时间管理、信号量、消息队列、内存管理等,完全满足操作系统课程的需求。FreeRTOS目前有较高的市场占有率,且源码公开,完全免费,更重要的是,内核文件仅由3个C文件组成,方便学生学习。

LLVM 是用C++编写的编译框架系统,目前已经被苹果、Xilinx、Facebook、Google 等大公司采用。LLVM 由一系列模块、可重用的编译工具链构成,可读性和可扩展性都优胜于GCC。LLVM 所有代码遵循的开源协议允许被任意修改、商用,而且不需要开源。因此,学生可以基于该框架开发出商业产品而不会受到开源协议的约束。LLVM 开发者社区非常活跃,用户手册和开发文档非常完善,并且网络上很多学习案例,因此学生具有丰富的学习资源。LLVM 可提供编写良好的中间表示,可以作为多种语言的后端,提供针对多种CPU 的代码生成功能[7]。

3 基于开源项目的教学与实验改革

基于RISC-V 开源项目,通过教学知识点与开源项目相结合,可以将理论知识与具体实现相对应。通过统一的教学与实验平台,贯穿计算机类专业知识点,提高学生工程能力和创新能力。首先,从上述教学与实验平台提取教学案例,阅读与讲解开源代码,使教学内容具体化,提高学生的学习兴趣。课后学生通过复现教学案例,通过分析源代码加深对各知识点的理解;其次,学生基于教学与实验平台对所学知识进行拓展,如对现有方面进行评估和优化,尝试改变知识点的实现算法。通过这个过程理解各核心知识点的工作原理及其实现方法,能够加深对计算机系统的全面理解,提高学生的创新能力;最后,以项目为驱动,基于蜂鸟E200 处理器、FreeRTOS 操作系统和LLVM 编译器,解决较复杂的工程问题,培养学生的应用和创新能力。

3.1 教学方式改革

课程内容改革主要解决课程间知识点无衔接与教学内容抽象两个问题。为了解决这两个问题,我们梳理计算机系统能力培养的关键知识点,并将这些知识点划分到上述4 门核心课程中。在讲授课程时,将核心知识点与蜂鸟E200处理器、RTOS 操作系统和LLVM 编译器的具体实现对应,形成教学案例。通过案例演示并结合代码分析增强学生对核心知识点的理解。

(1)数字电路:数字电路是学习计算机系统硬件知识的基础。计算机组成原理课程中用到的译码器、编码器、加法器、触发器等电路单元均在这门课中介绍。考虑到计算机组成原理课程内容较多,可以将相关内容放到数字电路中介绍(例如运算部件和流水线的概念)。在数字电路课程中,在介绍理论知识的同时,基于蜂鸟E200处理器介绍各种电路单元的功能、使用场景和基于Verilog HDL 的描述方法。学生通过课后练习,学习EDA 工具的使用方法,模仿各种电路的Verilog HDL 描述,进而加深对核心知识点的理解,并通过实验课程提前学习部分计算机组成原理知识点。

(2)计算机组成原理:尽管计算机组成原理教材上有丰富的示意图,相关知识点的介绍仍然很抽象,教师讲课时觉得空洞无力,学生也感到空洞乏味。为了将讲授内容与计算机系统的真实情景联系在一起,可针对讲授内容编写一段程序(C 程序或汇编程序),在蜂鸟E200 系统中构建相应场景,使讲授内容具体化。例如,通过分析具体指令的执行过程讲解流水线各阶段的功能、流水线冲突及流水线冲突的解决办法;通过以蜂鸟E200 系统为例介绍各类存储器的作用、系统总线结构及协议、I/O 接口及其编址方式;通过具体例子介绍中断处理过程与DMA 传输数据的过程。学生在课后可基于教师提供的程序复现相关场景,对相关知识进行复习巩固,提高学生的参与度。

(3)操作系统:以实时操作系统FreeRTOS源代码和蜂鸟E200 系统为例,介绍系统存储管理机制、系统任务调度、文件系统、I/O 子系统、中断及系统调用。在讲授时要强调处理器硬件代码与操作系统软件代码相结合,使学生理解计算机系统软件与硬件的协作方法。例如,在启动过程中,软件如何检测系统硬件并对系统硬件进行配置,理解这些系统配置的作用;在任务调度时,任务的上下文包括哪些内容,操作系统如何完成上下文的切换;在中断处理时,硬件如何生成中断向量,操作系统如何根据中断向量进入中断服务程序,中断在系统任务调度中起什么作用。通过这个过程,使学生建立完整的计算机软硬件层次结构。

(4)编译原理:基于LLVM 编译框架介绍编译的工作流程,如词法分析、语法分析、语义分析、代码生成。基于LLVM 编译器的程序优化和静态分析,结合RISC-V 指令集介绍LLVM 编译器后端实现。在课程学习中,教师根据核心知识点,找出对应的LLVM 源代码段,结合源代码介绍编译中所用到的算法,引导学生有选择性地研究LLVM 源代码,这样可以使学生将精力集中在编译算法的实现,减轻学生面对大规模代码的压力。另一方面,LLVM 具有良好的代码风格和丰富的文档,可引导学生学习LLVM 的架构和实现方法,从而掌握实现大规模系统软件的方法。

3.2 实验方式改革

实验内容分为3 个阶段[8]。在实验的第1 阶段,通过考查学生对核心知识点对应源代码的理解,检查学生对核心知识点的理解程度。比如,在介绍编译原理的语法分析时,通过分析LLVM的源代码,得到递归下降风格的语法分析实现过程。在介绍RISC-V 指令格式时,通过分析蜂鸟E200 处理器核的指令译码代码得到不同类型指令的指令格式及各类型指令的译码信号,进而加深对处理器指令功能的理解。该阶段实验以代码分析报告的形式考查,代码分析报告要体现出源代码如何实现核心知识点的工作流程。由于地方高校缺少助教,可安排代码分析讨论活动解决这一问题。挑选代码分析报告写得较好的学生讲解自己的理解,并解答其他同学提出的问题。最后任课教师对有争论的问题进行解答,并根据讨论的过程给予学生实验成绩。这样有两个好处:①实验内容是教学内容的延续,加深学生对核心知识点的理解,提高了学生的学习积极性;②教师可通过实验过程了解学生对核心知识点的困惑,及时解决学生的问题。

计算机系统的核心知识点均有不断改进的过程,即有多种实现方法。在实验的第2 阶段,要求学生模仿开源代码中核心知识点的实现方式,实现另一种改进型的实现方式,通过这个过程提高学生的动手能力。比如,处理器的cache 可分为全相连、组相连、多路组相连3 种形式。在实验时可要求学生在源代码的基础上实现另外两种形式,并对比这几种形式,从而加深理解不同cache 组织形式的优缺点。在这个阶段,不仅进一步加深了学生对相关知识点的理解,同时提高了学生的动手能力,培养了学生分析问题与解决问题的能力。

实验的第3 阶段重点培养学生的创新能力,这个阶段主要以课程设计的方式实现。课程设计包括各门核心专业课的课程设计及计算机系统能力培养的专业课。前者主要考查学生对各门课程核心知识点的理解与使用情况,后者主要考查学生计算机系统能力的培养情况。考查形式为,由教师为学生指定题目,学生在开源平台上予以解决。题目的来源包括教师自己的研究课题、历年来计算机学科比赛的题目,鼓励学生提出自己感兴趣的问题。这样有两个好处:①以问题为导向,将各学科的核心内容有机融合在一起,提高学生解决复杂问题的能力;②将教学与科研联系在一起,为教师的科研培养更多助手。

4 基于开源项目的教学与实验平台的优势

(1)具体化的教学内容。传统基于“示意图+例题”讲解的授课方式以原理分析为主,学生主要依靠课本中示意图和例题辅助理解。通过将蜂鸟E200 处理器系统、FreeRTOS 操作系统和LLVM 编译器的具体实现作为教学案例,学生对所讲内容有直观理解。更重要的是,学生能够根据教师提供的代码重现讲授场景,不仅提高了学生的学习积极性,还提高了动手能力。

(2)贯通式能力培养。能力培养的贯通性体现在教学内容与课程实验两个方面。首先,蜂鸟E200 处理器系统和FreeRTOS 操作系统代表一个完整的计算机系统,通过将二者相结合,使2 门课程的核心知识点有效衔接在一起,学生对计算机系统有整体认识。其次,课程实验也基于这个平台,教学内容与课程实验紧密联系在一起,学生通过实验深入理解所学内容,也降低了学生的学习难度。

(3)提高学生解决复杂工程问题的能力。蜂鸟E200 处理器系统、FreeRTOS 操作系统和LLVM 编译器虽然都是开源代码,但均按照工业标准实现,是非常好的学习范例。通过对二者源代码的学习,不仅能深入理解计算机系统的工作原理,还能掌握软件与硬件协同设计的方法,进而通过配套实验,培养学生解决复杂工程问题的能力。

(4)面向社会需求。在处理器领域,RISV-V作为一种全新的、开放免费的指令集架构在国内外受到广泛关注和使用。基于蜂鸟E200 处理器系统的学习,学生深入理解RISV-V 处理器架构,能够为学生打下坚实的处理器设计基础。在操作系统领域,FreeRTOS 有着20%的市场占有率,针对实时操作系统的移植、驱动开发等能够直接满足企业的需求。LLVM 是产品级的开源编译框架,基于LLVM 的学习,学生不仅可以学习编译器的架构和实现,还可以学习如何实现较大规模的系统软件。基于三者的学习,最终培养能够解决复杂工程问题的紧缺人才。

5 结 语

将RISC-V 开源项目作为教学与实验平台,不仅能够将教学内容具体化,还能为计算机系统相关的各门课程提供贯通式的实验平台,为面向计算机系统能力培养的教学改革提供参考依据。笔者团队将“自上而下”地协调各门课程的教学与实验内容改革,详细设计和规划各门课程的教学与实验内容,顺利完成计算机系统能力培养的课程改革任务。

猜你喜欢

源代码计算机系统开源
人工智能下复杂软件源代码缺陷精准校正
基于TXL的源代码插桩技术研究
五毛钱能买多少头牛
IBM推出可与人类“辩论”的计算机系统
软件源代码非公知性司法鉴定方法探析
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0
分布处理计算机系统研究
揭秘龙湖产品“源代码”
MIMD 并行计算机系统结构与定量分析