第一论文网免费提供教育技术学论文范文,教育技术学论文格式模板下载

计算机组成与其他课程之间的关联内容分析

  • 投稿熊伟
  • 更新时间2015-10-09
  • 阅读量847次
  • 评分4
  • 97
  • 0

袁春风,杨若瑜,王 帅,唐 杰

(南京大学计算机科学与技术系,江苏南京210046)

摘要:说明计算机组成及其他相关课程在整个计算机系统中的位置,分析计算机组成与其他相关课程之间的前、后关系;阐述计算机组成课程教学如何为先行课程答疑解惑以及如何为后续课程奠定基础,对计算机组成、程序设计、操作系统等课程的关联内容进行具体描述。

教育期刊网 http://www.jyqkw.com
关键词 :计算机组成;课程内容关联;操作系统

文章编号:1672-5913(2015)17-0035-04 中图分类号:G642

基金项目:2013年教育部一英特尔产学合作专业综合改革项目“计算机系统专业课程体系”。

第一作者简介:袁春风,女,教授,研究方向为大数据处理系统、Web信息检索与本文挖掘、计算机体系结构,cfyuan@nju.edu.cn。

1 计算机组成在计算机系统中的位置

图1描述了计算机系统抽象层的转换。从图1可以看出,计算机系统由不同的抽象层构成,“计算”的过程就是不同抽象层转换的过程,上层是下层的抽象,而下层是上层的具体实现。

计算机组成课程涉及的内容主要位于图1中寄存器传送层( RTL)以上的微体系结构和ISA层次,介于软件和底层硬件电路之间的交界面上,属于整个计算机学科和计算机系统中最重要的基础核心内容。该课程是计算机专业最重要的专业基础课之一,所涉及的内容除了与数字逻辑电路、嵌入式系统等偏硬件类课程有直接关联外,还与操作系统、编译程序、高级语言程序设计等软件方面的课程密切相关。因而,在整个计算机专业教学中,该课程起着重要的承上启下作用。

计算机组成课程在整个计算机系统相关课程链中处于中心位置,该课程教学效果的好坏,对于学生建立计算机系统整机概念和培养学生分析、设计、开发、应用计算机系统的能力至关重要。该课程起到“粘合剂”的作用,在教学过程中应有机结合计算机软件和硬件,站在高级语言程序员的角度来理解计算机组成与系统结构,通过为程序员描述底层机器级行为把计算机系统中的各个抽象层联系起来。

2与高级语言程序设计课程的关联

高级语言程序必须转换为机器语言目标代码后才能在计算机中运行,其执行结果虽然由高级语言语句和所处理的数据类型及数据的值来决定,但归根到底还是由执行程序的计算机低层机器级行为决定。具体来说,在以下课程内容中可以与高级语言程序设计的相关内容建立关联。

2.1 数据的表示和运算

数据的表示和运算是计算机组成课程中的基本内容,传统上该课程仅介绍各类定点数和浮点数的编码表示、非数值数据的编码表示以及相应的各种算术运算算法及其运算电路,很少把这些内容与高级语言程序中处理的数据建立关联。事实上,高级语言程序中的数据就是该课程中介绍的数据,只是从不同角度看到的数据的属性不同罢了。例如,C语言程序中unsigned型数据就是定点二进制数,int型数据就是补码定点整数,float和double型数据就是IEEE 754单精度和双精度浮点数;C语言中支持的各种运算就是由该课程介绍的运算电路实现的;各种数据类型的位数就是定、浮点数编码的位数。

由于计算机中运算数据通路宽度和其他底层机器结构的限制,高级语言程序在进行数据类型转换或特定运算时会出现一些意外结果,如果不把高级语言程序中的数据及其运算与低层机器结构及机器级数据的表示建立关联,则很难理解为何会发生这些意外结果。同样,在讲述数据存放方式时,也可把大端/小端、对齐方式与具体程序及指令相关联,使学生深刻理解计算机系统各层次之间的关联。

2.2 Cache的基本原理

Cache的基本原理是计算机组成课程的重要内容。虽然从程序员的角度来说,编程过程中根本感觉不到Cache的存在,但是,由于程序访问的局部性特点,引入Cache后可以保证其命中率更高,从而在绝大多数情况下可以只访问高速的Cache而使CPU访存速度加快。因此,程序设计时是否考虑访问局部性对程序的性能是至关重要的,要做一名高水平的程序员必须深刻理解Cache机制。

因为Cache对程序员透明,所以在程序设计课程中肯定不会涉及Cache问题。如果在计算机组成课程中不将Cache与程序设计关联的话,学生就不知道在编程时要考虑局部性,从而可能编写出局部性很差的程序,极大地降低程序的执行性能。

实际上,在高级语言程序设计中很多情况下都存在如何开发访问局部性的问题,也有很多程序例子可以用于分析访问局部性和程序性能之间的关系,从而更好地理解Cache的基本原理。

2.3 虚拟地址空间划分

因为高级语言在计算机系统中属于操作系统以上的抽象层,高级语言程序中使用的地址,不管是代码的地址还是数据的地址,对应用程序员(即上述“逻辑地址”定义中的用户)来说都是感觉不到的。汇编语言虽然在计算机系统中属于较低抽象层,汇编语言程序员可以为代码段和数据段定义地址,但是这个地址并不是我们所说的虚拟地址。因此,即便学生有用汇编语言编写程序的经验,也无法正确理解“用户编制程序时所用的地址”这样的概念。

正确理解“虚拟地址”这个概念,对于学习虚拟存储器知识点至关重要。将虚拟地址空间的划分和程序设计中的相关概念建立关联,有助于学生理解“虚拟地址”概念,也更容易理解“所有程序使用相同的地址空间”这句话。而且,对于学生进一步理解程序设计中涉及的变量作用域和寿命等问题也有很大帮助。

2.4 指令系统设计

指令集体系结构(ISA)是计算机系统中最核心的抽象层,位于软件和硬件交界面。指令系统设计是计算机组成课程中最核心的内容。传统上这部分教学着重介绍指令系统设计涉及的指令格式、操作码编码、操作类型和寻址方式问题,而不提及指令系统与高级语言之间的关系。事实上,高级语言程序作为指令系统设计的需求,它们之间是密切相关的,高级语言处理的数据及其运算就是指令中的数据及其运算,高级语言语句的实现就是若干条指令构成的指令序列的实现。因此,指令系统设计时,需要从如何满足高级语言中数据及其运算以及各类语句功能的需要出发,从如何解决高级语言功能的问题人手来讲解指令系统的相关知识点。

3 与数字逻辑电路和体系结构课程的关联

通常,数字逻辑电路在计算机组成之前开设,而计算机体系结构则在计算机组成之后开设,这3门课程的内容位于计算机系统中同一层或相邻层,它们之间存在较大关联。

3.1 基本运算部件

半加器、全加器和无符号加法器的内容是数字逻辑电路中的主要内容,包括SN74181芯片、SN74182芯片等都不应作为计算机组成课程的主要内容。如果在课程教学中涉及SN74181、SN74182等芯片及其级联等内容的话,其意义仅在于让学生了解现代CPU是如何用快速的先行进位方式来实现加法器的,而不需要让学生了解如何进行芯片级联,更不能让学生产生错误的认识,以为现代计算机的CPU是由芯片级联形成的。

3.2 CPU的组织结构

传统课堂上,有关CPU组织的内容都是以总线式CPU作为模型机来进行讲解的,这样的模型机实际上都不能反映现实技术,现代CPU中指令的执行都采用高级流水线技术。

为了与计算机体系结构很好地衔接和关联,计算机组成课程需要细化指令流水线的执行过程。在讲解指令流水线之前给出单周期数据通路及其控制器的结构,然后在单周期处理器的基础上给出流水线处理器的结构,再在流水线处理器中分析一个指令序列中的各指令在指令流水线每个时钟周期内的数据流动过程,从而为理解指令流水线执行时可能的冒险现象以及解决流水线冒险的处理方法打下良好的基础。

3.3 数据通路的定时

对于数据通路的定时,传统教学都会提到CPU的三级时序信号系统和机器周期的概念,事实上这些概念都是在引入Cache之前的处理器设计中应用的,在现代计算机中它们是过时的知识点,不应该作为主要内容,最多只是历史性或过渡性介绍内容。传统教学中很少对现代计算机中数据通路定时方式作介绍,而这个内容却是非常重要的,它是学生理解时钟周期和主频以及计算机性能等内容的基础,需要在教学中增加这部分内容。

4 与操作系统课程的关联

操作系统是计算机组成的后续课程。操作系统的主要内容是如何管理计算机的资源,而计算机组成课程介绍的就是这些计算机中的资源,如CPU、存储器和I/O。操作系统需要通过硬件提供的特权指令直接对硬件底层进行控制和处理,这两门课程内容之间存在非常密切的关联。这两门课程之间的关联主要体现在以下几个方面。

4.1 异常和中断处理

异常和中断是打断用户进程正常执行的两大类事件,它们的发生会引起CPU从执行用户进程的用户模式转入执行系统进程的内核模式。计算机组成课程的传统教学中,没有引入CPU运行模式的概念,学生对很多关键问题缺乏正确认识。例如,异常和中断如何引起CPU模式的切换?硬件需要为此提供哪些机制?硬件和操作系统之间如何协调处理异常和中断?中断(异常)返回指令与过程返回指令功能的差别以及它们各自在数据通路中的执行过程是什么?

为了更好地与操作系统的相应内容衔接,在计算机组成课程中应该增加或强化以下内容:严格区分内部异常和外部中断,将内部异常的内容放在介绍CPU数据通路和控制器的部分;通过分析具体指令执行过程中可能的异常事件强化内部异常的概念,并通过例子说明异常响应过程的具体操作;引入CPU运行模式,将异常响应过程与模式切换结合起来,在操作系统课程教学时回顾这部分内容并细化操作系统内核中相应的处理细节,这样,学生可以非常清晰地了解整个过程,包括相关的硬件和软件部分。

4.2 虚拟存储器机制

计算机组成和操作系统课程都涉及虚拟存储器,传统教学在这两门中所讲的内容很多都是重复的。例如,两门课程都会讲3种虚拟管理方式:地址转换、页表和页表项、TLB,如果不特别强调硬件和操作系统在实现虚拟存储机制中的角色,会给学生带来困惑,不知道哪些内容属于硬件设计需要考虑的,哪些是操作系统需要考虑的。

通过将虚拟存储管理与指令执行关联起来讲解可以非常具体地说明计算机系统中硬件和操作系统之间协调完成特定任务的过程。同样,介绍TLB工作原理时也可以与指令的执行过程进行关联,让学生了解TLB缺失也是由CPU在执行指令过程中进行地址转换时发现的。如果用硬件实现对TLB缺失的处理,那么就像Cache缺失处理一样,CPU冻结当前指令的执行时序,即当前正在执行的指令被阻塞,转到相应的缺失处理控制逻辑去执行,结束后再回到当前被冻结的指令执行;如果用软件实现对TLB缺失的处理,那么就像缺页处理一样,会引起CPU执行模式的切换,调出操作系统内核进行相应处理。

4.3 系统控制类指令的设计

在计算机组成课程中讲解指令系统的设计时,会提到指令系统中有系统控制类指令,但是具体有哪些指令则很少提到。事实上,这些系统控制类指令主要用于操作系统内核程序,并且与机器底层的控制有关。例如,操作系统在进程切换时,需要冲刷Cache和TLB,因此,会有一些与Cache和TLB管理相关的系统控制类指令;自陷和系统调用是从用户态向核心态转换的一种方式,因此,指令系统设计时需要有自陷指令和系统调用指令。如果在讲相关内容时,提一下系统控制类指令与进程切换和CPU模式转换等知识的关系,也可以为学生学好操作系统打下良好的基础。

4.4 输入/输出系统

在计算机组成课程中,通常有一个专门的章节介绍I/O系统,而操作系统与I/O系统有着极其密切的关系。

在操作系统的设备管理程序、设备驱动程序和中断服务程序中都涉及I/O设备、I/O接口、I/0控制方式等内容,而这些是计算机组成课程的基本内容。在讲解这部分内容时如果能有意识地说明其和操作系统之间的关联,将会为学生学习后续操作系统课程打下良好基础。MIT6.004课程(Computation Structures,相当于国内的计算机组成课程)实验8设计的实验内容很有启发性,它非常恰当地表达了计算机组成和操作系统两个课程与输入/输出系统之间的关系,对学生理解用户如何从用户进程陷入操作系统,最终由操作系统内核直接控制输入/输出设备这样的过程很有帮助。

5 与编译技术课程的关联

计算机组成是编译技术课程的先行课程。编译器的功能是将高级语言程序转换为机器级代码,而机器级代码的相关内容就是计算机组成课程讲解的主要内容,因此,计算机组成和编译技术之间也有很大关联。

5.1 程序的等价翻译转换

在计算机组成第一讲中通常会通过程序功能等价转换的例子来阐述计算机系统层次结构,可以通过例子让学生初步了解编译程序的概念。然后,在后续相关内容的讲解中,强调经过编译后得到的机器级程序,强调选择哪个寄存器来存放高级语言程序变量是编译器的工作,选择什么样的指令序列来实现特定高级语言程序功能也是编译器的工作,由此来强化编译程序与计算机组成相关内容之间的关联,潜移默化地强化学生的计算机系统整体概念。

5.2 流水线调度与编译优化

计算机组成课程中涉及指令流水线设计,其中数据冒险和控制冒险的处理以及静态和动态流水线调度等内容都与编译优化有关。在介绍这些内容时,可以通过例子说明编译优化的概念。在编译技术课程中不会涉及计算机结构和指令系统,不会介绍这方面的编译优化技术,因此安排在计算机组成或计算机体系结构课程中讲解比较适合。

6 结语

计算机组成课程内容位于计算机系统最核心的中间位置,它对学生建立计算机系统整体概念,培养学生理解、使用、设计和开发计算机系统起着非常重要的作用。在该课程的教学过程中,如果能够很好地与高级语言程序设计课程建立关联,能起到为高级语言程序设计课程答疑解惑的作用,并强化学生在程序调试、程序性能提升、程序移植和程序健壮性等方面的能力。在与数字逻辑电路和计算机体系结构课程的衔接中,还需要更加合理地安排内容,减少重复和陈旧的内容,增加必要的过渡内容。在与操作系统课程的关联部分,需要把硬件实现部分和操作系统实现部分区分开来,侧重讲清楚硬件实现部分以及硬件与操作系统之间的接口部分,把操作系统实现的部分留给操作系统课程。在与编译技术课程的关联中,应着重让学生了解编译程序与机器结构及指令系统的密切关系,并建立编译优化和指令流水线技术的关联。

教育期刊网 http://www.jyqkw.com
参考文献

[1] Yale N P,Sanjay J P.lntroduction to computing systems from bits and gates to c and Beyond[M].2版.北京:机械工业出版社,2006.

[2]袁春风,张泽生,杨若瑜.计算机组成与系统结构课程建设思路与教学实践[J].计算机教育,2012(2): 62-66.

[3]袁春风,计算机组成与系统结构[M].北京:清华大学出版社,2010.

[4] CMU.Introduction to Computer Systems[EB/OL]. [2015-06-30].http://www.cs.cmu.edu/~213/.

[5] MIT. Computation Structures [EB/OL]. [2015-06-30]. http: //6004.csail.mit.edu/.

(编辑:孙怡铭)