基本信息
- 原书名:Computer Organization and Architecture: Themes and Variations
- 作者: (英)艾伦·克莱门茨(Alan Clements)
- 译者: 沈立
- 丛书名: 计算机科学丛书
- 出版社:机械工业出版社
- ISBN:9787111558071
- 上架时间:2017-3-15
- 出版日期:2017 年3月
- 开本:16开
- 版次:1-1
- 所属分类:计算机 > 计算机科学理论与基础知识 > 基础知识 > 计算机原理
教材

内容简介
计算机书籍
本书由资深的计算机体系结构教育家Alan Clements博士编写,原书名为《计算机体系结构:原理与演变》(Computer Organization & Architecture: Themes and Variations),书中不仅覆盖单机系统的组成原理和系统结构的各个方面,还包括计算机的性能评价方法以及多发射、粗粒度并行等内容。作者希望本书能够适合电子工程(EE)、电子与计算机工程(ECE)、计算机科学(CS)等不同专业的教学需要。书中围绕基本概念、指令集体系结构、处理器组成和能效、存储与外设以及处理器级并行等五个核心问题将这些内容有条不紊地组织在一起,以便满足不同专业的教学需要。
中文版引进的时候综合考虑国内高校“计算机组成与结构”或类似课程的教学目标以及我们对本书的定位,对原书进行了适当裁剪和重新组合,分为两册:《计算机组成原理》和《计算机存储与外设》。
本书即为《计算机组成原理》,涵盖原书前三部分,共6章,主要介绍计算机系统的组成和体系结构的基本概念、指令系统以及处理器实现等涉及计算机组成原理课程的内容。
作译者
20世纪70年代,有关微处理器设计实践的文献非常少,他出版了这一领域的第一本书。该书反响非常好,他又撰写了两本重要教材。《计算机硬件原理》(The Principles of Computer)是一本本科生教材,全面地介绍了计算机硬件,其内容涵盖了从布尔代数到测量转速的外设等各个方面。为鼓励学生对计算机体系结构感兴趣,该书采用一种对学生友好的风格撰写。
20世纪80年代,Alan撰写了有关微处理器系统设计的权威教材,介绍了设计一款微处理器的全部阶段,并提供大量实际电路,弥合了学术与实践之间的巨大鸿沟。由于Alan在微处理器设计方面的贡献,1993年摩托罗拉授予Alan提赛德大学终身教授。
多年以来,Alan对计算机体系结构教学中的问题越来越感兴趣,越来越多地参与到计算机科学的教育活动中。2001年,他担任了计算机学会国际学生竞赛主席(CSIDC),并于同年获得英国国家教学奖,这是英国高等教育的最高奖项。Alan积极参加工程教育的前沿会议,并担任两本刊物的计算机科学教育专刊的客座编辑。
Alan在IEEE计算机学会(CS)担任了多个职务,包括CS出版社主编,CS第二副主席,教育活动委员会主席等。他还担任了伊拉克利翁和科罗拉多州立大学的客座教授。
Alan积极参加学科课程体系设计,撰写了关于未来计算机体系结构教育的论文,参加了CS/ACM 2001计算课程体系项目。他为欧盟、英国政府、日立公司和希捷公司等提供咨询工作。
2007年Alan获得IEEE计算机学会泰勒布斯(Taylor Booth)教育奖。
除了教学和写作之外,Alan还对摄影感兴趣,他的作品曾数次公开展出。他还是一个私人飞行员,将他对飞行和摄影的爱好结合在一起。在www.pbase.com/clements上可以找到他的摄影作品。
2010年Alan Clements从全职教学岗位退休,专心于写作和拍摄。
目录
译者序
前言
本书导读
作者简介
第一部分 起始篇
第1章 计算机系统体系结构 4
1.1 什么是计算机系统体系结构 7
1.2 体系结构和组成 11
1.2.1 计算机系统和技术 14
1.2.2 计算机体系结构在计算机科学中的地位 14
1.3 计算机的发展 16
1.3.1 机械计算机 17
1.3.2 机电式计算机 19
1.3.3 早期的电子计算机 19
1.3.4 微机和PC革命 20
1.3.5 摩尔定律和进步的历程 21
1.3.6 存储技术发展 22
1.3.7 普适计算 23
1.3.8 多媒体计算机 23
译者序
计算机组成原理与系统结构是计算机科学与技术及相关专业的核心基础内容,其教学效果对于培养学生的计算机系统能力具有很大的影响。这两部分涉及的内容相互融合,密不可分。越来越多的国内外高校在教学设计、教学实施、教材编写时将这两部分内容结合在一起,并取得了明显的效果。
本书的英文版《Computer Organization and Architecture: Themes and Variations》不仅覆盖了单机系统的组成原理和系统结构的各个方面,还包括计算机的性能评价方法及多发射、粗粒度并行等内容。作者希望本书能够适合电子工程(EE)、电子与计算机工程(ECE)、计算机科学(CS)等不同专业的教学需要。书中围绕基本概念、指令集体系结构、处理器组成和能效、存储与外设,以及处理器级并行等五个核心问题将这些内容有条不紊地组织在一起,以便满足不同专业的教学需要。
综合考虑国内高校“计算机组成与结构”或类似课程的教学目标以及我们对本书的定
位,中文纸质版分成了两本《计算机组成原理》和《计算机存储与外设》。
本书即为《计算机组成原理》,涵盖原书的前三部分(中文版《计算机组成原理》第1~6章分别对应原书第1章、第2章前8节、第3~5章和第7章)。
第一部分主要介绍计算机系统的组成、体系结构的基本概念。第1章介绍了计算机组成和结构的有关概念、计算机的发展历程,以及存储程序计算机,在读者面前呈现出基本存储程序计算机系统的形象。第2章则讨论了数据在计算机中的表示方法和运算方法。
第二部分介绍了指令系统的概念和实例。这部分包含三章内容。第3章首先介绍ISA的基本概念,之后以ARM指令集为例介绍了ISA设计时需要考虑的主要问题,如指令类型、寻址方式、数据表示等。第4章介绍了MIPS——另一个经典的RISC指令集,以增加知识的深度和广度。第5章着重介绍了当前处理器为特定领域应用(比如多媒体应用)提供的支持,特别是指令集的支持。
第三部分介绍了处理器的实现以及一些影响处理器性能的因素。这部分只有一章,即第6章。它首先介绍了设计控制器的两种经典方法——微程序与组合逻辑,然后讨论了流水线技术、影响流水线性能的因素及一些可行的解决方法。
《计算机存储与外设》涵盖原书的第四部分(中文版《计算机存储与外设》第1~4章分别对应原书的第9~12章),介绍了计算机系统中的存储器、总线、输入/输出等内容。第1章介绍了Cache的组织和工作原理,以及虚存技术。第2~3章涵盖了从静态半导体存储器到磁盘和光存储的各种存储技术。第4章介绍了I/O的基本工作原理以及总线系统,并描述了一些支持多媒体系统的现代高速接口。
中文纸质版没有收录原书中的门和数字逻辑、性能评价、多发射处理器、处理器级并行等内容(即原书2.9~2.11节和第6、8、13章),因为这些内容一般会在“数字逻辑” “计算机体系结构”“计算机系统性能评价”等课程中专门介绍。有兴趣的读者可以在中文版出版社网站(http://www.hzbook.com)上找到相关章节的中文译文。
本书内容较多,翻译时间紧迫,尽管我们尽量做到认真仔细,但还是难免会出现错误和不尽如人意的地方。在此欢迎广大读者批评指正,我们也会及时在网上更新勘误表,便于大家阅读。
沈立
2016年12月于长沙
前言
从20世纪50年代起大学就开始教授这门被称为计算的学科了。一开始,大型机主导了计算,这个学科包括对计算机本身、控制计算机的操作系统、语言和它们的编译器、数据库以及商业计算等的研究。此后,计算的发展呈指数增长,到现在已包含多个不同的领域,任何一所大学都不可能完全覆盖这些领域。人们不得不将注意力集中在计算的基本要素上。这一学科的核心在于机器本身:计算机。当然,作为一个理论概念,计算可以脱离计算机而独立存在。实际上,在20世纪三四十年代计算机革命开始之前,人们已经进行了相当多的关于计算机的科学理论基础的研究工作。然而,计算在过去40年里的发展方式与微处理器的崛起紧密联系在一起。如果人们无法拥有价格非常便宜的计算机,Internet也无法按照它已有的轨迹取得成功。
由于计算机本身对计算的发展及其发展方向产生了巨大影响,在计算的课程体系中包含一门有关计算机如何工作的课程是非常合理的。大学里计算机科学或计算机工程方向的培养方案中都会有这样一门课程。实际上,专业和课程的认证机构都将计算机体系结构作为一项核心要求。比如,计算机体系结构就是IEEE 计算机协会和ACM联合发布的计算学科课程体系的中心内容。
介绍计算机具体体现与实现的课程有各种各样的名字。有人将它们叫作硬件课,有人管它们叫作计算机体系结构,还有人把它们叫作计算机组成(以及它们之间的各种组合)。本书用计算机体系结构表示这门研究计算机设计方法和运行方式的课程。当然,我会解释为什么这门课程有那么多不同的名字,并会指出可以用不同的方式来看待计算机。
与计算机科学的所有领域一样,计算机体系结构也随着指令集设计、指令级并行(ILP)、Cache缓存技术、总线系统、猜测执行、多核计算等技术的发展而飞速进步。本书将讨论所有这些话题。
计算机体系结构是计算机科学的基石。例如,计算机性能在今天的重要性超过了以往任何时候,为了做出最佳选择,即便是那些购买个人电脑的用户也必须了解计算机系统的结构。
尽管绝大多数学生永远不会设计一台新的计算机,但今天的学生却需要比他们的前辈更全面地了解计算机。虽然学生们不必是合格的汇编语言程序员,但他们一定要理解总线、接口、Cache和指令系统是如何决定计算机系统的性能的。
而且,理解计算机体系结构会使学生能够更好地学习计算机科学的其他领域。例如,指令系统的知识就能使学生更好地理解编译器的运行机制。
写作这本书的动机源于我在提赛德大学(University of Teesside)讲授计算机体系结构中级课程的经历。我没有按照传统方式授课,而是讲授了那些能够最好地体现计算机体系结构伟大思想的内容。在这门课程里,我讲授了一些强调计算机科学整体概念的主题,对学生的操作系统和C语言课程均有不小的帮助。这门课非常成功,特别是在激发学生的学习动力方面。
任何编写计算机体系结构教材的人必须知道这门课会在3个不同的系讲授:电子工程(EE),电子与计算机工程(ECE),计算机科学(CS)。这些系有自己的文化,也会从各自的角度看待计算机体系结构。电子工程系和电子与计算机工程系会关注电子学以及计算机的每个部件是如何工作的。面向这两个系的教材会将重点放在门、接口、信号和计算机组成上。而计算机科学系的学生大都没有足够的电子学知识背景,因此很难对那些强调电路设计的教材感兴趣。实际上,计算机科学系更强调底层的处理器体系结构与高层的计算机科学抽象之间的关系。
尽管要写出一本能够同时满足电子工程系、电子与计算机工程系和计算机科学系的教材几乎是不可能的,但本书进行了有效的折中,它为电子工程系和电子与计算机工程系提供了足够的门级和部件级的知识,而这些内容也没有高深到使计算机科学系的学生望而却步的程度。
本科计算机体系结构课可在三个不同层次上讲授:介绍性的、中级的和高级的。有些学校会讲授全部三个层次的内容,有些学校则将这些内容压缩为两个层次,还有一些学校只进行介绍。本书面向那些学习第一层次和第二层次计算机体系结构课的学生,以及那些希望了解微处理器体系结构当前进展的职业工程师。学习本书的唯一前提条件是读者应了解高级语言(如C)的基本原理和基本的代数知识。
由于本书覆盖了计算机体系结构的基础内容、核心知识以及高级主题,内容丰富,篇幅很大,适用于计算机体系结构相关的不同课程裁剪使用。综合考虑国内高校计算机组成与结构系列课程的教学目标和课程设置,中文版分成了两本《计算机组成原理》和《计算机存储与外设》。原书中关于门和数字逻辑、性能评价、多发射处理器、处理器级并行的内容,可在中文版出版社网站(http://www.hzbook.com)下载。——编辑注
本书特色
为什么还要编写一本计算机体系结构教材?计算机体系结构是一个很有吸引力的话题,它会介绍如何使用大量与非门那样的基本元件搭建一台计算机,也会介绍如何用常识来解决技术问题。例如,提升处理器速度的Cache在概念上并不比信封背面的记录复杂多少。同样地,所有处理器都使用了福特所发明的汽车制造技术:流水线或生产线。作者努力使本书的内容更加有趣或覆盖更多的主题,例如本书将介绍一些通过将氧原子从晶体的一端移到另一端来工作的存储设备。
用“它不是什么”来描述一个对象通常比用“它是什么”来描述更容易一些。本书并不关心微处理器系统设计、接口和外设的工程细节,当然也不会是一本汇编语言的入门教材。本书的主题是微处理器体系结构而不是微处理器系统设计。就目前而言,计算机体系结构被定义为机器语言程序员所看到的计算机视图。这就是说,计算机体系结构并不关注计算机的实际硬件或实现,而仅关注它能做什么。我们也不会考虑微处理器的一些硬件和接口特征,除非它们对体系结构有明显的作用(例如Cache、存储管理和总线)。
目标体系结构
任何体系结构教材的作者都会选定一个目标体系结构,作为讲授计算机设计和汇编语言程序设计基础知识的平台。教师们通常会热烈讨论究竟是用一款真正的商用处理器还是用一个假想的抽象处理器来讲授一门课。抽象处理器容易理解,学习曲线也比较浅,而且学生们通常会觉得理解一个真实处理器的细节知识很不值得。但另一个方面,实践工程都要适应真实世界中的各种约束。而且,一台真正的机器会告诉学生,工程师们为了制造出商用产品所必须做出的设计选择。
在20世纪七八十年代,DEC公司的PDP-11小型计算机被广泛地用作教学平台。随着摩托罗拉68K等16位微处理器的出现,PDP-11逐渐退出了课程教学。按照学术界的观点,68K(大致以早期的PDP-11为基础)是一台理想的机器,因为它的结构相对规整,学生也很容易用68K汇编语言编程。也许旁观者会希望使用绝大多数个人电脑都使用的、随处可见的Intel IA32系列处理器,让它在计算机体系结构教学中发挥重要作用,毕竟很多学生都有Intel处理器的亲身使用经验。但80x86系列处理器从未在学术界真正流行起来,因为每当一款新处理器发布,其复杂的结构都会以某种特定方式变化,这给学生带来了沉重的负担。一些教师采用高性能RISC处理器教学,比如MIPS,这种处理器功能强大也容易理解。但这种高端RISC处理器多用于工作站,大多数学生对其不甚了解(老师们观察到,由于熟悉个人电脑,学生们通常更需要基于个人电脑的技术)。不过现在,RISC处理器既用于高性能计算机,也用于绝大多数手机之中。
我选择ARM处理器作为介绍汇编语言和计算机组成的平台。这是一款性能高、结构优雅、易于学习的处理器。而且ARM处理器有很多开发工具,这意味着学生们可以写好ARM汇编语言源程序,并在实验室或家里的个人电脑上运行这些程序。