第3版前言 本次修订再版的主要动因是补充精简指令集计算机(RISC)方面的内容。虽然第2版也有RISC相关的内容,但仅限于指令系统特性的介绍,未涉及RISC的数据通路和控制器的设计。第3版以RISCV开源指令集架构为例,介绍了单周期和流水线的数据通路以及控制器的设计方法,并且将第2版指令流水线的相关内容合并到RISC这一章,补充了解决数据冲突的数据通路实例。 为了使读者能够更清楚地理解指令系统、数据通路以及控制器设计方法上的内在联系,在章节组织上,将微程序控制的复杂指令集计算机和硬布线控制的精简指令集计算机各独立为一章,均从指令系统到一般性原理,再到具体实例,使读者从中体会微架构的发展变化。同时,第3版改变了以总线等信息传送通道分类数据通路的方法,不再强调数据通路结构的单总线或多路径,而是强调控制方法和性能的差别,分为单周期、多周期和流水线的数据通路。 第3版的另一个主要修订是JUC系列教学模型机,将第2版的JUCⅡ模型机改进为JUC3。为便于教学实施,JUC3分成基本模块和扩展模块,本书主要介绍基本模块,扩展模块留待实验环节讨论。JUC3主要对ALU电路进行了改进,优化数据通路设计,相应地修改了微指令格式,此外还有一些细节修改。 本次修订延续了前两版理论与实践结合的特点。书中介绍的RISCV单周期和流水线结构以及 JUC3模型机已经在FPGA上设计实现,并且经过了两轮实验教学的检验。 课程组开发了远程FPGA虚拟实验平台,建设了实验 慕课资源,与理论课程配合开展实验教学。 各章的具体修订情况如下。第1章中计算机的主要性能指标增加了平均指令周期,这个概念在第2版中是放在控制器一章的,改到第1章便于理解与其他性能指标的联系。第2章补充了多媒体数据的表示。第3章扩充了例题和习题。第4章的修订主要涉及 4.1.3节补码加减运算的逻辑实现和4.6节运算器的组织,修改了算术运算电路和ALU电路实例,它们将用于JUC3教学模型机; 补充了数据通路的结构类型,通过一个简单的例子阐明单周期、多周期、流水线数据通路的概念,为第7章的硬布线控制打基础。第5章修订了非易失性半导体存储器的相关内容,并且将原第8章中的多模块存储器改到这一章。第6章抽取了第2版微程序控制和复杂指令系统的相关内容,教学模型机升级为JUC3,内容上进行了精简。第7章从单周期、多周期和流水线的角度重写了硬布线控制方法,增加了RISCV开源指令集构架、RISCV的单周期微架构设计和RISCV的流水线微架构设计,同时将第2版第6章RISC相关内容和第7章流水线相关内容融合到这一章。第8章主要修改了高速缓存三种映像方式的组织结构图,相应地重写了文字讲解并补充了例题; 虚拟存储器部分没有修改。第9章基本没有修改。最后增加了一个附录,比较详细地介绍了RISCV的指令系统。 第3版的修订工作主要由肖铁军、丁伟、葛桂萍和马学文完成。肖铁军负责第1章、第4章、第6章和第8章的修订,丁伟负责第2章、第3章的修订,葛桂萍负责第5章的修订,第7 章的修订工作由丁伟、葛桂萍和肖铁军合作完成,马学文编写了附录。肖铁军和丁伟承担了全书的统稿工作。邹婷婷、杨旭东参加了本书第1版和第2版的编写工作。 由于编者的水平有限,尤其RISCV是近年的新架构,如果书中有疏漏之处,欢迎读者提出意见和建议。 本书配套微课视频,请读者先用手机微信扫描封底刮刮卡,获得权限,再扫描书中章节标题 旁的二维码,即可观看相应的教学视频。其他教学资源可扫描下方二维码获得。本书还配套了在线作业系统,读者可扫描封底刮刮卡,登录作业系统,即可在线答题。 教学资源 编者 2021年7月 第2版前言 本书第1版出版后不少教师和读者发来电子邮件,提出了许多宝贵的意见和建议。为了使本书能够更好地适应不同学校、专业的教学计划,反映计算机技术的发展,第2版对书中内容做了一些补充和修改、调整。第2版还配套了实践教程,便于结合理论课开展实践教学,倡导“从设计的角度理解计算机的组成和工作原理”的教学理念。 近年有些学校尝试教学改革,将硬件相关基础课程打通为一门“计算机组成原理”或“计算机硬件基础”,为此本书第2版增加了“信息表示”和“逻辑电路基础”两章,其中“信息表示”一章除了介绍进位计数制和定点数、浮点数的表示等内容外,还增加了如何理解C语言数据类型的内容。“逻辑电路基础”一章除了逻辑代数基础知识外,着重从应用的角度介绍计算机中常用的基本逻辑模块的功能。考虑到有的专业没有单独开设汇编语言课程,“指令系统”这一章补充了汇编语言程序设计的基础知识。存储器与存储体系分为两章,“存储器”一章增加了相变存储器等新型非易失性存储器; “存储体系”一章重点对高速缓存做了修改。“控制器和中央处理器”一章介绍的模型机升级为JUCⅡ,该模型机已经在FPGA上实现,配套实践教程设计了相应的实验和课程设计项目; 这一章安排在“存储体系”之前,有利于更早地建立整机的概念,更好地理解高速缓存、虚拟存储与CPU的关系。将第1版的“输入输出系统”和“系统总线”两章合并为一章,删除了教学中一般较少涉及的输入输出设备内部结构原理以及I/O通道等内容,重新组织了内容。 本书第2版主要由肖铁军、丁伟、邹婷婷、杨旭东、马学文共同编写,刘芳参加了第9章的部分编写工作。欢迎读者一如既往地对本书提出意见和建议。 编者 2014年9月 第1版前言 本书适用于高等院校计算机类各专业及相关专业的本科生。“计算机组成原理”作为计算机专业的一门重要的核心专业基础课程,主要讨论计算机从部件到整机的组织结构和工作原理,在课程体系中起着承上启下的作用。 本书讲述的是一般性原理,并不针对任何具体的商业机型,而是综合了国内外计算机类型中较为成熟的先进技术,兼顾计算机发展的新技术、新成果,力求做到深入浅出。为了避免一般性的抽象原理不利于分析理解,本书既从面上反映不同的典型结构,也有深入的分析,点面结合; 通过一个模型机的实例将相关章节联系起来,最终形成一个整机的概念,系统性较强。本书设计的JUC1教学微处理器已经在FPGA上设计实现,可用于配套的实践教学。 本书共分7章,授课学时为70~90学时,在教学中可根据具体情况对书中内容进行取舍。 第1章计算机系统概论首先透过计算机的发展历程探究计算机技术飞速发展的动力所在,然后介绍了冯·诺依曼结构计算机的基本组成,使读者建立整体概念,了解计算机各部件之间的关系,有利于后续的学习。 第2章讨论运算方法和运算器,包括数制与编码的基础知识、数据的表示方法和校验方法、定点数和浮点数的四则运算及溢出判断方法、运算器的组织结构及数据加工流程。 第3章介绍存储器和存储体系。存储器以存储位元—存储器芯片—主存储器为主线,讲述相关的半导体存储器原理和主存储器的构成; 存储体系以高速缓存—主存—虚拟存储为层次,讨论如何解决速度与容量的矛盾。 第4章是指令系统,讲述指令系统的一般设计原则、寻址技术,最后以JUC1教学模型机为例,介绍了它的指令系统。 第5章是很关键的一章,通过这一章的学习将建立起计算机主机的概念,并通过指令执行流程,理解计算机的工作原理。在讲述了控制器的基本原理之后,以JUC1教学模型机为例,具体讲解了微程序控制器设计方法。这一章的最后还介绍了指令流水线。 第6章和第7章讲解输入输出系统和系统总线,包括常用外部设备、辅助存储器、主机与外设的数据传送方式、总线仲裁等内容。 本书由计算机组成原理课程组的6位老师合作编写,第1章和第5章由肖铁军编写,第2章由邹婷婷编写,第3章主要由杨旭东编写,第4章由丁伟编写,第6章由袁晓云编写,马学文编写了第7章以及第3章的一部分。研究生于洋参加了JUC1教学模型机的FPGA设计和验证工作。由于编者水平有限,书中难免有疏漏之处,敬请读者批评指正。 编者 2010年3月