孙 辉
(安徽大学 计算机科学与技术学院,安徽 合肥230039)
“计算机系统结构”课程是计算机科学与技术专业中非常重要的课程之一。该课程是一门集理论和实践为一体的专业基础课,它要求学生能够在已经掌握的计算机硬件和软件等相关知识基础上,理解和掌握计算机整机系统中软、硬件组成及相互之间的关系,能够从系统的、全面的角度而非单一硬件或软件的角度来解决问题。随着信息产业的发展,“计算机系统结构”教学在保证基本结构和框架等知识点的同时,兼顾信息领域产业化的发展特点。
数据驱动时代下,数据密集型应用是大多数据处理的主要应用之一,比如滴滴打车信息处理、社交网络数据分析、大规模视频数据关联信息的挖掘等应用,已成为大数据时代数据处理的基本核心。以数据驱动为特征的大数据时代(也可以称之为数据驱动时代),数据密集型应用的处理和分析是计算机系统结构领域所面临的新应用,同时,计算机系统结构又面临新的问题。计算机系统结构教学需要结合当前信息化特征,在学习基础知识点的同时,加深对课堂教学内容的理解和掌握。本实验课程的教学目的是培养学生全面理解计算机系统各大部件的基本结构、基本原理、基本工作过程,掌握计算机系统量化研究方法及设计方法,同时在实践过程中培养学生利用计算机系统在不同信息处理模式下解决问题的能力。培养学生实事求是、严谨的科学作风,提高学生分析问题、解决问题的能力和动手能力。
从科研角度来看,“计算机系统结构”(Computer Architecture and System)是一门研究计算机系统发展及计算机软、硬件系统设计的综合性较强的课程。从教学角度讲,计算机系统结构的教学是一门集多种基础课程为一体的、计算机专业学生必须要重点掌握的、综合性教学课程。计算机系统结构课程主要阐述计算机系统结构的基本原理、计算机系统量化分析方法和设计原则、计算机系统结构性能评价、以及在新型应用背景下的技术实现。在教学内容上,计算机系统结构是综合性比较强的一门课程,除了要掌握计算机编程知识、数据结构等基本课程外,还需要掌握模拟电路、数字逻辑、计算机组成原理、计算机操作系统、编译原理、汇编语言等计算机科学与技术专业课程。
计算机系统结构课程重点培养计算机科学与技术专业本科生的系统思考问题的能力、抽象思维能力、自顶向下、自底向上、从中间到两端的系统设计、性能分析能力和解决问题的能力。这门课程是计算机科学与技术专业非常重要的课程,国家985、211等重点高等院校和普通高校在培养目标和教学课程计划上都开设了这门课程,计算机系统结构课程教学研究相关工作也非常丰富。
有人根据教学经验提出了高等计算机系统结构课程研究型教学方法,结合最前沿的计算机系统结构特点和实践,这在教学水平和学生的接受能力上要求较高,也能更好培养学生在研究和学习方面的系统能力,从而加深对计算机系统结构更全面的理解[1]。有人从面向计算机专业学生系统能力培养的角度分析了计算机系统能力的内涵,结合教学现状,从系统的角度出发,探索和研究计算机专业学生的系统能力培养方法,以期解决当前计算机专业学生在系统能力培养方面存在的问题,建立以计算机组成原理为核心的硬件课程群[2]。有人提出了计算机系统结构课程群建设的教学方法,构建计算机系统结构课程教学体系[3]。合理地关联《计算机组成原理》、《计算机系统结构》和《高性能计算机系统结构》等面向计算机系统结构的三门核心课程,通过系统规划,加强建设,理顺了课程之间横向、纵向的关系,形成了重点突出、衔接较为合理的课程体系。
除了计算机系统方面的教学研究之外,计算机系统结构课程的知识点方面的研究也卓有成效。有人重点阐述了在计算机系统结构课程中的流水线技术教学内容和方法,其提出在教学过程中增加和突出微机上常用的新的系统结构和流水线技术,引入DLX虚拟处理器实验来开展流水线的设计与实现,系统化介绍流水线技术从而提高流水线技术的教学效果[4]。有人针对计算机系统设计中程序局部性原理在计算机系统结构课程教学中的特点,提出如何在教学中针对时间局部性和空间局部性来讲解计算机系统结构课程中的内容,有效提高计算机系统在存储系统和流水线技术方面的功能性[5]。有人分析了计算机系统结构课程在多核时代的发展变化,针对多核技术知识点在课程中的设计安排,探讨课程的教学内容与教学模式,阐述多核时代计算机系统结构课程的特色[6]。
通过对计算机系统结构课程教研工作的调研,发现计算机系统结构在教学内容和教学思路上都有很大的提高,包括计算机系统结构方面的教学工作和计算机系统结构各个细节方面的研究工作。教学方面结合现有信息技术发展特点,调整计算机系统结构课程内容也是教学的要求。针对现有的数据驱动下的应用特征,开展计算机系统结构的教学工作显得尤为重要。
数据驱动下的计算机系统结构教学不是脱离原有计算机系统结构原课程基础而开设的新的教学体系,而是结合现有数据驱动下的负载特征,在现有教学基础上增加相关的教学内容,可在阐述计算机系统基础时,增加两个方面的分析。首先,对数据驱动下的应用特征的独特性,举例加深理解当前计算机系统结构所需要面临的问题,典型的例子就是大数据处理下的海量数据的存储和计算、人工智能下对大数据内容和规律的挖掘等。这些内容在一定程度上为问题的提出做好铺垫。其次从计算机系统的CPU计算能力、存储能力、输入/输出交互能力等多个方面展开。面向数据驱动的课程教学内容设计为:第一,计算机系统结构概论,包括计算机系统结构的发展、计算机系统解决应用性能问题的分类以及并行性等知识点。第二,指令系统、数据表示、寻址技术,并给出指令执行的量化研究方法和性能参数。第三,流水线技术、并行和并发执行:结合数据驱动的特点,阐述并发流水线、并行性以及重叠机制的应用。第四,指令级并行特征及局限性案例。第五,存储系统:cache-内存系统、数据密集型存储管理机制、数据密集型负载评测指标、内存性能参数及命中率表示。第六,内存-外存结构:外存储系统特征及类型、外存储系统性能评测指标、基于数据密集型负载的内外存储系统协同优化机制。第七,输入输出系统及量化研究参数。第八,并行化技术及其在计算机系统中的应用,数据级并行、线程级并行、功能级并行等相关系统结构的软硬件发展及其类型。
这样在保证计算机系统结构基本原理的基础上,增加了针对数据驱动应用特征,计算机系统结构应该具有哪些特殊的内容及其系统特征,这些新增加内容分布在每个章节上,在教学内容和教学安排上突出了不同应用下计算机系统结构在软硬件结构上的优化方法,紧扣信息技术和计算机科学的发展趋势,有效支持在新型数据驱动环境下,计算机系统的教学和科研工作。
具体到教学环节上,需要授课教师指导学生搜集最新与课程相关的计算机系统结构研究资料和成果,为了紧跟最前沿研究,建议采用国外经典计算机系统结构参考书《Computer Architecture:A Quantitative Approach 5th Edition》[7]。
计算机系统结构是综合性要求较高的理论和实践相结合的一门课程,课程的实践部分主要通过两个方面的实验学习来完成。
第一部分采用 Gem5模拟器软件[8]。Gem5模拟器是一个周期级全系统访问软件,其提供了4个不同的CPU模型,两个不同的系统模型以及两个不同的内存系统模型,并且支持多种指令集(ARM、ALPHA、MIPS、Power、SPARC 和 x86),其中可以在 ARM、ALPHA和x86三种架构上运行Linux操作系统。Gem5的许可证是基于BSD的,这为工业界和学术界的合作搭建了一座非常好的桥梁。虽然开发一套全系统模拟器很复杂,但Gem5正在借助开源的强大合作力 (如 mailing lists,wiki,web-based patch reviews,a publicly accessible source repository等)不断完善自身功能。通过在模拟器上运行则试程序,让学生认识和理解计算机系统内部CPU结构、内存结构及其管理、总线结构、指令系统等进行功能和性能分析,从而掌握计算机系统结构CPU、内存、指令系统等工作原理,认识数据访问、数据相关、指令并行处理等概念。
第二部分采用FPGA上试验具体的一些功能,授课教师指导学生学习开源RISC-V指令集架构[9],并将该开源工程在XILINX开发板上进行计算机系统结构基本组成部件的试验,在掌握基本原理和设计方法后,以小学期试验课题的形式,让学生在FPGA开发板上实现针对数据驱动下的计算机系统中CPU、内存、指令、外存等关键部分的设计和实现,进一步加深对计算机系统结构这门课的认识。有助于将所学到的教学内容转换成实际的工程实践的工作。这非常有助于学生更深入的理解计算机系统结构及其在数据驱动应用下的设计理论和实践方法。
计算机系统结构课程教学涉及内容之广,从底层体系结构到底层操作系统的设计和实现,综合运用了模拟电路及数字电路基础、计算机组成原理、汇编语言、编译原理、计算机操作系统等多学科知识,是一门综合型的教学科目。在教学内容和教学方式上与其他教学有所不同,一方面在教学中保证学生能理解基本概念和原理,另一方面要结合当下信息领域内的应用特征,计算机系统结构的学习如果能与应用实践相结合,以期能解决数据驱动下的新型计算机系统结构所面临的问题。
信息技术的更新日新月异,除了基本的课本知识的讲解之外,还需要时刻把握国内外重点科研院校和研究机构对计算机系统结构的研究成果和进展,及时更新计算机系统结构课程中的相关教学内容,针对本学科领域应用的不同案例,设计和实现计算机系统结构相关改进技术,提高计算机系统结构课程的教学质量和水平,确保计算机系统结构领域知识的与时俱进以及人才培养的实效性,提高学生从系统结构解决实际问题的能力。