计算机组成原理课程教学分析
一、计算机组成原理课程的特点
计算机组成原理是研究生入学考试的必考科目。该课程以冯诺依曼型计算机为基础,围绕计算机的运算器、控制器、存储器和输入输出设备等五大部件详细介绍它们的工作原理与算法以及具体实现的电路结构。通过学习本课程,要求学生熟练掌握单总线结构CPU的工作原理和设计实现的方法,同时要求学生初步掌握精简指令系统、流水线结构、多体并行存储器、中断的工作原理等知识,为后续课程微机原理与接口技术、计算机系统结构做好准备。该课程首先讲授了8086CPU的编程结构,然后引申出8086 汇编语言的寻址方式和指令系统,学生在掌握上述知识的基础上,进行汇编语言程序设计。汇编语言程序设计可以让学生加深对程序设计方法的理解,同时程序的编写和调试使学生对计算机硬件有一个感性的认识,为以后他们学习微机原理与接口技术、操作系统等课程做准备。
根据国家教育部高教教执委发布的新的教学改革精神,结合我院的具体情况,我院将计算机组成原理与汇编语言两门课程合并成一门全新的计算机组成原理课程。在新的教学体系中,我们将两门课程有效地结合起来去糟取精删繁就简,舍去了两门课程中的重叠部分而突出重点,形成了一套新的教学体系。
二、计算机组成原理与汇编语言教学内容的融合
在传统的计算机组成原理课程中,教师始终围绕着计算机的五大部件按照运算器、存储器、控制器、输入输出系统这个顺序进行讲解,在讲授过程中经常会用到一些实例进行说明,而很多时候是以汇编语言做例子讲解的,两门课程融合在一起的最大好处就是教师在讲授汇编语言的部分时,可以更好地兼顾计算机组成原理,让这两门课程做到无缝对接。
在基础知识部分,我们首先要介绍冯诺依曼型计算机的特点。冯诺依曼型计算机是串行计算机的始祖,所有的串行计算机都要符合冯诺依曼型计算机的特点,这是计算机组成原理基础知识部分的重点。在课程讲授过程中,教师都会画一幅五大部件的关系图,通过图形示意来表示一条指令是如何在五大部件之间流动的,从而使用户从外部观察到计算机处于运行状态。我们考虑从这里引入8086CPU 的编程结构,从计算机组成原理过渡到汇编语言,让指令举例更加具体化,再结合指令的寻址方式,借机说明8086 的汇编语言指令是如何在CPU 中执行的。
在接下来的讲授过程中,我们将介绍8086 汇编语言的寻址方式和指令系统。由于在计算机组成原理课程中也有一章介绍指令系统,我们可以把这个部分与汇编语言的内容合并,以计算机组成原理的部分强调基本概念,以汇编语言的内容来强调具体应用,把内容更加具体化,举例更具有针对性,可以使学生更好地理解寻址方式和指令系统。在这里我们在教学上做了一点改变,我们考虑到汇编语言指令数目较多的特点将指令分类,每类指令选出一到两个具有代表性的指令进行详细说明,其他略讲,然后采用写出指令执行结果的方式进行大量练习,从而巩固这部分知识。在讲授了汇编语言的程序设计方法之后,再讲授计算机组成原理部分的运算器与运算方法部分。在这部分我们可以利用学过的汇编语言知识,结合布斯算法和加减交替法编写定点数乘除法的汇编语言程序,还可以编写浮点数运算的模拟程序。在讲授控制器的部分时,我们可以设计一个类8086 的CPU,把它作为课堂上的CPU 设计举例,这样把一条8086 汇编语言指令放在这个CPU 中运行,可以更直观地反映指令的工作细节,促进学生对控制器的工作原理和汇编语言的理解。
三、计算机组成原理与汇编语言实验内容的融合
计算机组成原理与汇编语言都有实验课,由于在讲授上先讲汇编语言的内容,因此相关实验先进行,然后进行计算机组成原理的实验。我院的计算机组成原理实验课程使用的是由清华大学计算机学院研制开发的TH-union+ 教学实验系统,该系统主要用于计算机组成原理课程的硬件教学实验,还支持监控程序、汇编语言程序设计。在硬件上同时实现了硬布线方式和微程序方式两种控制器结构,既支持用中小集成度的芯片实现CPU 的方案,又支持用高集成度的FPGA门阵列实现CPU 的方案。在软件上可实现指令级模拟,也可以软件模拟硬布线和微程序的操作,为学生学习硬件理论知识起到了重要的辅助作用。但是该实验系统的汇编语言指令与8086 汇编语言是不兼容的,这使学生在短期内很难快速掌握实验系统的汇编语言指令,因此经课程组全体教师研究决定,另外开发一款新的汇编语言转换软件,用来实现两种不同种类的汇编语言互相转换。该软件是利用linux 模拟环境Cygwin 开发实现的。Cygwin 是cygnus solutions 公司开发的一个在windows 平台上运行的类UNIX 模拟环境。在这里我们主要使用了Cygwin 开发环境里的flex 和gcc 两个工具软件。利用flex 工具软件编写的源代码必须转换成c 语言代码格式,然后由linux 下的c 语言编译器gcc 编译成可执行文件,完成最后的开发。
由于TH-union+ 教学实验系统的汇编语言指令共48 条,采用精简指令系统,每条指令的寻址方式是固定的,因此不单独设置关于寻址方式的标志位,当指令进行译码操作的时候,实验系统电路通过分析指令的操作码既了解了指令的操作功能也了解了指令操作数的寻址方式。而8086 汇编语言指令是一个复杂的指令系统,每条指令对应着多种不同的寻址方式,因此我们把教学实验系统的'汇编语言看成是8086 汇编指令系统的子集。通过对转换程序my 的使用,帮助学生对比两种汇编语言之间的相同点和不同点,通过对比学习,学生可以更快速地熟悉实验系统汇编语言。
在这里对于不可转换的汇编语言指令可采取两种处理方式:方式一,发出警告提示并忽略此条指令;方式二,发出错误提示并强行结束程序转换。转换程序your分析了操作码之后开始分析操作数的寻址方式。在这里,我们假设所有指令都采用双操作数,因此在结构体中设置了两个对应寻址方式的变量。具体操作时,如果分析出该操作数的寻址方式可以被实验平台支持,那么就将对应数值保存在结构体的对应变量中以便转换,如果不是实验平台支持的寻址方式,系统将提示用户:你的程序中使用了不可转换的寻址方式,并强行结束转换。在寻址方式转换过程中,有一些特殊情况需要系统自动追加指令。最后,要对输入输出指令单独处理。输入输出操作是后续课程微机原理与接口技术的重要知识点。在编写汇编语言程序过程中,当遇到输入和输出操作都是直接调用DOS 中断或BIOS 中断来实现的。但是教学实验系统没有任何中断程序辅助操作,遇到输入和输出操作只能由学生自己编写。在编写8086 汇编语言程序过程中,凡是遇到输入和输出操作都通过调用这两个宏来实现。每次进行输入输出操作时必须先对指定的状态寄存器的标志位进行判断,以确定硬件是否准备好,是否可以进行输入输出操作。具体做法是使标号由英文字母和数字构成,每次产生新的标号,后面的数字部分就加1,保证新标号与旧标号不同。
计算机组成原理和汇编语言是计算机科学与技术、软件工程专业的专业课程,这两门课程存在着很多联系同时也有一些区别,把这两门课程合并成一门全新的计算机组成原理课是我院一项新的教学改革方案。如何把两门课程很好地融合在一起就成了课程组面临的一个新的挑战,本文结合课程组全体教师的多年教学经验,抛砖引玉,初步提出了一些在教学和实验上的改革方案,希望各界同人多提宝贵意见。
【计算机组成原理课程教学分析】相关文章: