APP下载

“计算机体系结构”课程实验教学建设

2011-12-31沈立张春元王志英

计算机教育 2011年22期

  摘 要:实验是“计算机体系结构”课程教学的重要环节,能够有效辅助学生对课堂教学中各个关键问题的理解与掌握。文章系统分析课程的各个知识点,探讨适合每个知识点的实验方式,提出十五个实验模块。在实施教学时,可以为不同培养类型和知识结构的学生指定适合的实验模块。文章最后提出了若干与强化实验教学有关的问题。
  关键词:计算机体系结构;实验教学;模拟;仿真
  
  1 背景
  “计算机体系结构”(以下简称“体系结构”)是计算机科学与技术专业计算机工程方向的一门重要课程,它强调从系统级的角度介绍计算机的组成和相应软硬件模块的设计与实现方法。通过课程学习,学生能够深入理解和掌握计算机系统的软硬件接口、各项性能指标、系统性能的基本分析方法,以及为了达到最佳性能、最佳性价比、最佳性能功耗比等不同设计目标所应采用的软硬件设计技术。
  除了课堂讲授,实验也是该课程教学的一个重要环节。通过实验,能够有效地加深学生对课堂上所学习的各个关键知识点的理解与掌握。以2010年研究生入学考试的第44题为例:
  44. 某计算机的主存地址空间大小为256MB,按字节编址。指令和数据Cache分离,均有8个Cache行,每个Cache行大小为64B,数据Cache采用直接映射方式。现有两个功能相同的程序A和B,其伪代码如下所示:…(略)
  假定int类型数据用32位补码表示,程序编译时i、j、sum均分配在寄存器中,数组a按行优先方式存放,其地址为320(十进制)。请回答,要求说明理由或给出计算过程。
  (1) 若不考虑用于Cache一致性维护和替换算法
  
  的控制位,则数据Cache的总容量为多少?
  该题第(1)问主要考察学生对“数据Cache中存放了哪些数据和控制信息”这一知识点的掌握情况。能够正确回答该问的同学并不多,因为绝大部分同学都忽视了valid bit和dirty bit这两个重要信息。
  我们对我院2007级的部分本科生进行了调查,让他们独立完成该题。参加调查的学生都系统地学习过Cache的相关知识,并进行过16位CPU的设计实验,但其中一半同学仅设计实现了基本指令流水线,另一半同学还完成了分离的一级指令Cache和数据Cache设计。
  从调查结果来看,完成了Cache设计的同学回答正确率远远高于另一部分同学,他们认为实验有助于加深他们对这一知识点的理解与掌握,并且效果明显。
  在Hennessy和Patterson推出了《计算机体系结构:量化分析方法》[1]这一经典教材后,量化研究方法已经成为当前计算机体系结构教学和相关研究所采用的基本方法。这进一步增加了计算机体系结构实验的重要性,学生通过实验掌握性能数据的收集和分析方法。因此,加强实验建设,充分发挥实验作用已经成为高水平计算机体系结构课程建设必须完成的重要任务。
  
  作者简介:沈立,男,副教授,研究方向为计算机系统结构、编译技术、虚拟化技术;张春元,男,教授,研究方向为计算机系统结构;王志英,男,教授,研究方向为计算机系统结构。
  
  目前进行体系结构实验主要有软件模拟和硬件仿真两种形式,虽然二者在功能上基本等效,但由于抽象程度不同,它们所反映出的实现细节也不相同。以Cache子系统设计实现为例,无论是软件模拟还是硬件仿真都可以反映出valid bit和dirty bit等控制信息所占用的存储容量;而在动态指令调度的相关实验中,虽然通过两种方法都能够得到动态调度带来的性能加速,但硬件仿真方法能够更准确地反映出实现该机制所需的开销。
  笔者从以下三个方面介绍在该课程实验教学方面所作的工作:首先,在分析该课程各知识点的特点以及其是否适合进行实验的基础上,我们设计了15个实验模块;其次,探讨了如何为不同培养类型和知识结构的学生选择合适的实验模块,以及在组织和实施实验教学方面采取的措施;第三,提出若干值得思考的问题。
  2 课程知识点分析
  在进行实验教学时,应针对不同的教学目标采取不同的实验模式。一般说来,对于那些以理解掌握成熟的模型、协议、算法等为主要目标的知识点,如Cache一致性协议,往往以验证性实验为主;而对于那些以熟练使用某种方法解决实际问题为主要目标的知识点,如Cache的结构和优化方法,往往以设计性实验为主。
  下面以我们正在使用的教材[2]为主,结合国内外其它有影响力的教