图书前言

1. 计算机学科的课程体系

一个学科的高等教育必须要有先进的教学理念和完整的课程体系,同时与该学科的发展也是紧密相关的。谈到计算机科学与技术学科的高等教育,就要提到两个国际组织,一是IEEE,二是ACM。IEEE 的全称是Institute of Electrical and Electronics Engineers,即美国电气与电子工程师学会,是美国的一个工程技术和电子专家的组织,主要致力于电气、电子、计算机工程以及和信息技术与科学有关的领域的开发和研究。ACM的全称是Association for Computing Machinery,即美国计算机协会,是一个致力于工程技术和应用领域中信息技术科学教育的国际计算机组织。国际上最系统、最有影响的计算机专业的教学计划当属IEEECS(IEEE属下的计算机学会)与ACM各时期发表的指导性计划,它们对计算机学科教育方面的研究既全面又深入。其中,影响较大的有ACM68课程体系、ACM78课程体系、IEEECS83教程和计算机教程1991(简称CC1991)等。ACM68课程体系和ACM78课程体系是基于课程定义的。CC1991是IEEECS和ACM合作推出的,它将更多的科学原理引入计算机学科的教学计划设计中,给出了计算机学科的科学定义,解答了计算机学科教育界多年来存在的疑问和争论,同时它采用了知识领域(Knowledge Area)、知识单元(Knowledge Unit)和知识点(Topic)来描述计算机学科的核心知识体系,引导人们去考虑学科的本质和核心,从而制定出既符合各自培养目标又符合学科发展的课程体系。

1998年秋,IEEECS和ACM又成立了计算机教程2001(Computing Curricula 2001,CC2001)联合工作组,并于2001年发布了计算机教程2001(即CC2001)。CC2001较好地反映了计算机学科自1991年的发展及这个时期社会发展给学科教育带来的影响。它除了继承CC1991的知识描述体系外,又增加了各级课程的设计方法,并给出了一些推荐课程的描述。

从我国的计算机学科的教育看,1999年前,我国“计算机专业”主要被分为计算机及应用和计算机软件两个专业。从1999年起,按照宽口径培养人才的需要,这两个专业被合并为一个专业,即计算机科学与技术。我国各高校计算机科学与技术专业的教学计划是在中国计算机学会教育专业委员会和全国高等学校计算机教育研究会的指导下制定的。CC2001推出后,中国计算机学会教育专业委员会和全国高等学校计算机教育研究会给予了密切的关注,在对CC2001进行跟踪研究的基础上,结合我国计算机学科的发展现状和我国计算机教育的具体情况,提出了一个适合我国计算机学科教育的课程体系,即中国计算机科学与技术学科教程CCC2002。

近些年,随着计算机技术的高速发展和在各行业应用的普及,社会对计算机学科领域人才的需求分工越来越细,计算机学科的高等教育也发生了变化,各高校在计算机学科先后设置了软件工程、网络工程、电子商务、信息安全等不同的专业或方向,以满足社会对不同专业人才的需求。从 2001 年开始,IEEECS和ACM 把计算机学科细分为“计算机科学CS”、“计算机工程CE”、“信息系统IS”、“信息工程IT”以及“软件工程SE”。2005年IEEECS联合ACM发布了CC2005,2008年发布了CS2008版本(临时版本),2012 年2月开始颁布CS2013。CS2013重新定义计算机科学的知识模块,考量计算机科学教程的要素,提出一个课程体系样本,发展一系列教学内容,尝试着分别从系统和软件开发两个方面,总结基础原理与方法策略,沉淀计算机学科的专业核心知识。其中对于计算机体系结构与组织(AR)知识模块,强化多核并行、虚拟机支持、供电限制,强调 CAD 工具的应用。

我国教育部高等学校计算机科学与技术教学指导委员会在分析研究计算机学科国内外发展和社会需求的基础上,发布了《计算机科学与技术专业发展战略研究报告》,提出了适应我国计算机科学与技术专业高等教育的教学规范。这一教学规范对于我国各高校在计算机科学与技术专业人才培养目标的确定和课程体系的制定等方面都给出了指导性建议。

2. 为什么要学习本课程

对于学习汽车工程专业的学生来讲,无论是搞汽车外形设计,还是研究汽车的发动机,都必须对汽车的组成和工作原理有基本的了解。同样,对于计算机专业的学生来讲,了解和掌握计算机的组成及工作原理也是必需的。

目前很多高校计算机专业的学生在不同程度上有着重软轻硬的思想。这主要有两个方面的原因: 一方面,近十年来,随着各行业管理信息系统建设的发展,社会对软件工程师(尤其是应用软件工程师)的需求越来越大,从事软件设计、软件编程、软件维护等方面的人员成为了IT公司、金融、政府及企事业单位紧缺的人才; 另一方面,相对软件课程来讲,硬件课程学起来比较枯燥,没有像语言类软件课程有着学完就能使用的立竿见影的效果。例如,很多高校都开设了“Web程序设计”课程,学生学完该课程后,就能设计网站或制作网页,学生当然很感兴趣。

实际上,在计算机系统中,计算机硬件和计算机软件是相关联的两个部分,硬件为软件的运行提供了一个平台,要编制高质量的软件程序,对计算机有一个整体的了解是十分重要的。对系统软件程序员来讲,系统软件是和硬件紧密相关的,系统软件程序员必须对机器级硬件十分了解,才有可能编制出适应某一机器硬件的系统软件。对应用软件程序员来讲,对机器硬件的了解有助于他们编制更高效和优化的程序。例如,阵列计算机、并行处理计算机、多处理器以及近两年出现的基于多处理器的计算机系统,对并行计算提供了一个支持的平台。对程序员来讲,对计算机硬件实现的并行处理技术的了解,有助于他们充分利用并行计算环境,编制高效的并行程序。

最重要的,前面已经讲到,计算机学科的教育有一个完整的科学体系,课程的设置也是围绕这一体系来进行的。这一科学体系注重培养学生的科学思维能力、创新实践能力、研究和应用能力以及继续学习的能力。作为学生来讲,应该认真学好每一门课程,掌握计算机学科领域所要求的各方面知识。只有这样,才能对本学科有一个完整的理解,才能成为真正合格的计算机科学与技术专业的学生。

计算机组织与结构是计算机专业一门重要的专业基础课程,也是CC2001、CC2005、CS2013以及我国计算机科学与技术专业规范中确定的一门核心课程,它对于学生建立计算机整机概念,了解计算机系统的基本组成、结构和工作原理,从而对本学科其他知识领域和知识单元的内容有更深刻的理解有着非常重要的意义。

3. 教材内容的组织

本教材在内容的组织上,主要按照我国教育部高等学校计算机科学与技术教学指导委员会制定的“计算机科学与技术专业规范”中的知识领域“CSAR计算机体系结构与组织”所要求的内容进行编写。同时,紧跟IEEECS/ACM颁布的CS2013,对计算机体系结构和组织(AR)知识模块的内容做了适当调整。各章节涵盖的知识单元主要包括

AR2 数据的机器级表示(核心学时): 第2章

AR3 汇编级机器组织(核心学时):     第3章

AR4 存储系统组织与结构(核心学时):  第4章

AR5 接口和通信(核心学时):          第5章、第6章

AR6 功能组织(核心学时):            第7章

AR7 多处理和体系结构(核心学时):    第8章

本书共分8章,其中,

第1章首先介绍计算机的发展历程; 然后介绍按IEEE分类法的计算机的分类; 最后,作为本书的一个“序”,概括性地介绍了计算机的硬件组成及计算机的层次结构。

第2章首先介绍二进制等基本的进位计数制; 再介绍在计算机中是如何对我们日常处理的数值数据和非数值数据(主要包括字符、汉字等)进行二进制编码表示的; 然后介绍数值数据在计算机中的二进制运算方法和实现; 最后介绍对计算机中的数据在传递过程中产生的差错进行检测而使用的数据校验码。

第3章首先介绍计算机中汇编级指令的格式、地址结构; 然后介绍指令及操作数的寻址方式,以及指令的种类和功能、典型指令系统的组成等; 最后对精简指令系统RISC进行介绍。

第4章首先介绍存储器的组织、分类和分层结构; 然后介绍计算机主存储器的组成与工作原理; 最后介绍提高存储系统性能的交叉存储技术、高速缓冲存储器及虚拟存储器技术等。

第5章首先介绍计算机输入输出系统的组成; 然后对计算机输入输出的控制方式进行详细讨论,包括程序控制方式、中断控制方式、DMA控制方式和通道控制方式等; 最后介绍计算机存储设备——磁盘系统以及由磁盘阵列组成的RAID技术。

第6章首先讲述计算机内部各部件之间的总线互连结构,介绍总线的基本概念、总线的类别和总线的控制方式等; 然后列举几种现代计算机中常用的ISA、PCI等总线标准; 最后介绍几种目前在计算机中常用的USB、IEEE 1394和SCSI等外部总线接口标准。

第7章首先介绍CPU的功能与组成; 再通过一个模型机的例子说明了CPU的指令周期及执行指令的过程; 然后讨论了CPU控制部件设计的硬布线设计法和微程序设计法两种主要方法; 最后以Intel公司的CPU产品为例,介绍了典型CPU的发展。

第8章首先介绍计算机系统的并行性概念,对计算机中使用的时间重叠、资源重复和资源共享等提高并行性的技术途径进行概要性的介绍; 然后分别介绍现代计算机普遍采用的流水线技术和多处理机技术等并行处理技术; 最后对近些年发展起来且应用非常广泛的机群系统、高性能计算和多核处理器进行讨论。

4. 教材的主要特色

结合计算机学科教育重基础、重发展、重创新的要求,本教材在内容组织和编写上有以下特点: 

(1) 首先为学生建立整机的概念。在第1章,通过将学生日常所熟悉的实际PC与计算机的基本组成部件进行对比,使学生对计算机整机的组成有一个初步的认识,对组成计算机系统的主要部件的基本功能有一个初步的了解。

(2) 按照从整机到部件自上而下的思想进行课程内容的组织,使学生在每一章节的学习中,都清楚所学章节的内容与整机的关联。同时对计算机组织与结构的各种概念、思想和原理等进行重点讲述。

(3) 围绕各章节的内容,穿插了一些“知识拓展”,介绍一些计算机系统方面的相关知识以及计算机发展的新技术、新知识等。如在第1章穿插了知识拓展——摩尔定律,计算机的性能评测; 在第2章穿插了知识拓展——二进制的游戏; 在第3章穿插了知识拓展——x86CPU指令系统的扩展指令集; 在第4章穿插了知识拓展——新型动态存储器SDRAM、DDR、DDR2和DDR3,芯片的封装技术; 在第5章穿插了知识拓展——硬盘接口,网络存储系统; 在第6章穿插了知识拓展——前端总线,串行传输还是并行传输; 在第7章穿插了知识拓展——GPU和CPU; 在第8章穿插了知识拓展——超级计算机“天河”二号; 能使学生开拓视野,增长知识。

(4) 为帮助学生更好地学习本课程,专门建设了计算机组织与结构课程教学网站。网站的课程介绍部分介绍了本课程的教学大纲、教学的组织和安排等; 课程教学部分提供了按课堂教学单元进行组织的教学内容、重点难点等; 教学资源部分为学生提供了本课程的教学课件和参考资料; 学习讨论部分提供了一个学生与教师以及学生与学生之间的交流平台等。另外,教学管理部分还进一步为教师提供了一个学生管理、作业管理、考试管理和成绩管理等的平台,教师可以通过本课程网站更好地组织本课程的教学。

5. 教材的学时安排

本教材共分8章,第1~7章全面讲述了单处理机系统的硬件组织和结构,包括计算机中的数据表示和运算、汇编级机器组织、存储系统的组织与结构、输入输出系统的组织、CPU的组织与结构及总线和接口等; 第8章介绍了现代并行处理机系统的一些主流技术和体系结构,包括流水线技术、多处理机系统、机群系统和多核处理器等。本教材建议总学时为60~80学时,各高校按照计算机专业课程体系中课程设置和讲授内容的不同可以灵活调整。

本教材由徐苏担任主编,白小明、张乐、于海雯为副主编,李向军、林振荣等参编并帮助进行课程教学网站的建设。

编者

2015年2月