计算机组成原理
作者 : [英]艾伦?克莱门茨(Alan Clements)著
丛书名 : 计算机科学丛书
出版日期 : 2017-03-17
ISBN : 978-7-111-55807-1
定价 : 79.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 367
开本 : 16
原书名 : Computer Organization and Architecture: Themes and Variations
原出版社: Cengage Learning
属性分类: 教材
包含CD :
绝版 :
图书简介

本书介绍了计算机组成与体系结构的主流技术和最新技术,强调完整的计算机系统(CPU、内存、总线和流水线),用不同的实例来加强核心内容。

图书前言

21世纪是科学和技术奇迹频出的时代。计算机已经做到了人们期望它做到的一切——甚至更多。生物工程解开了细胞的秘密,使科学家能够合成10年前无法想象的新药。纳米技术让人们有机会窥探微观世界,将计算机革命与原子工程结合在一起创造出的纳米机器人,也许有一天能够植入人体,修复人体内部的创伤。普适计算带来了手机、MP3播放器和数码相机,使人们彼此之间能够通过Internet保持联系。计算机是几乎所有现代技术的核心。本书将阐述计算机是如何工作的。
从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汇编语言源程序,并在实验室或家里的个人电脑上运行这些程序。
采用Intel IA-64结构的Itanium处理器是现代教材中目标体系结构的一个有力候选。这是一款功能极其强大但又极其复杂的处理器,不过它的基本结构却比80x86系列简单。Itanium体系结构上大量创新性的特征验证了计算机体系结构课程中的许多概念——从数据栈到猜测执行,从流水线到指令级并行。因此,本书将在高性能计算部分介绍这种处理器的一些特点。
本书并不是一部传统的计算机体系结构教材。它超出了传统课程的范畴,涵盖了许多有趣、重要且相关的内容。作者的一个重要目标是提供适合学生吸收的知识。很多时候,学生大学毕业后会发现他们的知识体系中有令人难堪的巨大空白。据我了解,目前还没有一本教材采用这种方法。例如,所有计算机体系结构教材都会介绍浮点运算,但却很少会讨论用于存储大量文本和视频信息的数据压缩的代码,更不会介绍MP3数据压缩这项工业界的核心技术。类似地,计算机体系结构教材很少覆盖面向多媒体应用的体系结构支撑等内容。下面列出了本教材的一些特色内容。
历史
有关计算机体系结构的书籍通常会有一部分内容介绍计算机的发展历史。这些历史通常是不精确的,并会受到这一领域专家的批评。不过,我认为介绍历史的章节非常重要,因为有关计算机历史的知识会帮助学生理解计算机是如何发展的以及为何会这样发展。知道了计算机从哪里来,学生就能更好地理解它们在未来有可能怎样发展。在这本教材里,笔者给出了一段计算发展的简史,而与本书英文版配套的网络补充材料中则给出了更多的历史背景。
对操作系统的支持
操作系统与计算机体系结构密切地关联在一起。本书涵盖的体系结构内容(例如存储管理、上下文切换、保护机制等),即使是那些对操作系统进行研究的研究者,也会感兴趣。
对多媒体的支持
现代计算机体系结构背后最重要的驱动力是多媒体系统的发展及其对高性能和高带宽的无尽需求。本书介绍了如何面向多媒体应用优化现代体系结构。读者可以了解多媒体应用对计算机体系结构及对总线、计算机外设设计的影响,例如面向视听应用的硬盘。
输入/输出系统
今天的计算机不仅比它们的前身快得多,还提供了更多、更复杂的将信息输入计算机和从计算机中取出的手段。如果计算机仅与键盘、调制解调器和打印机连接,I/O的重要性几乎可以忽略。现在的计算机经常与数字摄像机连接,需要传输大量数据。读者将会看到一些现代的高性能I/O系统,例如USB和FireWire接口,还会更深入地探究一些与输入/输出相关的内容,如握手机制和缓冲机制。
计算机存储系统
存储系统是计算机世界里的灰姑娘。没有高密度、高性能的存储系统,就不会有价格便宜的桌面系统,更不会有32GB存储容量的数码相机。本书将存储系统分为两章:前一章介绍半导体存储器,后一章介绍磁和光存储器。读者还会看到一些有趣的、正在兴起的存储技术,如相变存储器和铁电存储器。
方法
我之所以欣赏一本书,是因为它能够展现作者的风格与观点,希望本书也是如此。
笔者发现,插图和文字说明的质量是很多教材的一个不足之处。很多时候插图几乎没有注解,插图要表达的意思根本没有表现出来。本书的所有插图都由我自己完成,希望它们能够很好地阐释教材的内容。

内容概要
本书即为中文版《计算机组成原理》,分为三个部分,共6章。
第一部分:起始篇,这部分介绍了一些使读者能够讨论计算机体系结构的基本内容。第1章采用了一种不常见的方法来介绍计算机。笔者首先提出一个问题,接下来解决这个问题,然后设计出一个系统——计算机来实现解决方案。我的目的是要说明计算机近似地模拟了人们解决问题的方法。因为计算机体系结构的很多内容是相互关联的,所以我给出了计算机系统的简要概述,这样就可以在详细讨论某些内容之前使用这些内容,比如Cache。
读者会看到将信息以二进制形式编码和表示的方法,例如书中介绍了有符号整数和无符号整数在计算机上的运算方法,描述了如何用浮点数表示非常大和非常小的值,还简要介绍了更复杂的数学函数。
理想情况下,第一部分还应包括计算机是如何从简单的机械计算器发展到今天强大的处理器的详细历史,因为所有学生对这一专业是如何发展的都应该有各自的理解。计算机的发展历史是一个极有吸引力的故事,它始于使乏味的数学计算变得更简单的渴望,后来发展到使世界大大“缩小”的电报和跨大西洋电缆项目。20世纪,现代计算的诞生基于创建电话系统的技术,并受到科学家进行高性能计算以及商业和军事等需求的驱动。其他的人造产品在性能提升和价格降低方面都没有计算机的变化快。有人说,如果汽车能够像计算机发展得那样快,那么人们开车的速度就可以达到光速的很多倍,而每年仅需使用一滴油。
不幸的是,在这里笔者无法客观地对待计算机的历史。在体系结构课上,学生必须学习特定的知识,而且为了成为专业的从业者,他们必须学会一系列技能。因此笔者将一些有关计算机历史的材料放在了本书出版公司的网站上,在下面的“补充材料和资源”一节可以找到详细内容。作者强烈建议所有同学阅读这些材料。计算机科学家有“重新发明车轮”的倾向,因此某一年提出的概念有时会出现在下一年的不同材料中。
第二部分:指令集体系结构,这是本课程的核心,包括三章内容。笔者首先介绍指令集的概念,然后讨论计算机体系结构的一些重要问题,例如计算机能够直接访问和处理的数据结构。第3章介绍ARM系列微处理器,它拥有真正简洁的体系结构,而且它的一些特点引出了几个有趣的话题,例如仅当满足特定条件时指令才会执行的条件执行,这些在该章中都有讨论。如果本书能够覆盖计算机体系结构的所有变化自然最好,但除非你决定将自己的后半生奉献给这一工作,否则不可能有足够的时间。大家将在第4章看到计算机体系结构的一些变化,例如能够极大地简化对复杂数据结构访问的存储器间接寻址模式,以及能够将传统代码压缩为其正常大小的一小半的特殊压缩编码处理器。
第二部分的最后一章将介绍处理器适应视频编码和解码等现代多媒体应用的方法。这一章还会简要介绍多媒体处理的背景,并解释为何高性能计算会如此重要。
第三部分:组成和效能,这部分与计算机组成有关;即,计算机是如何工作的以及它在内部是如何组织的。
第6章介绍计算机是如何工作的。这一章首先介绍微程序设计,这项技术使得设计任意复杂的计算机成为可能,目前它依然用于实现Intel IA32处理器中一些很复杂的指令。接下来将介绍流水线,这是所有现代计算机设计的基础。流水线就像工业上的生产线,指令在流水线上逐条执行,就像流过计算机一样。然而,流水线在遇到非顺序执行的指令(分支)时会出现问题。这章的最后部分将介绍如何处理分支指令引起的问题。
补充材料和资源
本书为教师和学生提供了大量支持材料。这些补充材料都放在出版公司的网站上。要获得这些额外的课程材料,请访问www.cengage.com。在cengage.com主页用页面顶部的搜索框查找本书,就可以找到访问这些资源的产品页。
教师资源
教师资源包括教师答案手册(ISM),包含教材中所有图表的完整PowerPoint幻灯片,以及一套所有公式和例题的幻灯片。
学生资源
学生资源包括:
一本详细介绍用ARM处理器汇编语言编程并在模拟器上运行这些程序的学生练习册;
附加学习材料,包括关于计算机历史的一章和卡诺图概述;
一些有用的链接,包括从ARM公司下载学生版Kiel模拟器的链接;
书中的代码;
本书作者网站(http://www.alanclements.org/)上发布的所有幻灯片的讲义。
致谢
没人能在真空中写出一部教材。所有学科都有其历史、背景和文化,计算机体系结构也不例外。一个作者要么随波逐流,要么沿着一个新的方向写作。没有以前出版的教材,例如当笔者还是学生时用来研究体系结构的教材,笔者也没有办法写出这本书。同样地,笔者也必须感谢数不清的对计算机体系结构知识体系做出了贡献的研究者。我的作用是收集所有这些内容并为学生学习构建一条知识路径。笔者必须决定哪些内容是重要的,哪些是可以忽略的,哪些趋势应该跟随,哪些趋势应被归结为背景知识,等等。不过,笔者还是要感激所有对知识体系做出了贡献的人。
许多人参加了这样一本复杂教材的出版工作,其中最突出的一位就是本书的策划编辑。他就是圣智学习(Cengage Learning)出版公司的Swati Meherishi,是他开始了把最初的手稿转换为最终的优雅文字的漫长过程。策划编辑要有能力去了解书稿以外的内容,并知道本书如何才能适应复杂的市场。他对我有足够的信心,帮我度过了那段无休止写作和修改的时间。感谢Swati能容忍我。另一位本书创作的关键人物是项目开发编辑Amy Hill。Amy花费大量时间通读我的初稿,修改结构和内容组织方式。她给了我很好的建议和温和的指导。感谢圣智学习团队全体人员的努力工作和奉献,没有他们,这个项目还将停留为我硬盘上的一堆文件。还要感谢Rose Kernan和她RPK Editorial Services的团队对本书所有相关任务的高效管理,以及Kristiina Paul的精心研究和获得本书所有第三方材料的许可。
必须感谢所有帮助审阅和修订书稿的审稿人及文字编辑。他们提出了很好的改进建议,并且在我错误理解原始材料时为我指明了正确的方向。
感谢技术审稿人和那些仔细阅读本书并指出错误和疏漏的人。特别是,Loren Schwiebert为修改第3章做了大量工作。俄克拉何马州立大学的Sohum Sohoni审阅了全部书稿的技术内容。还要感谢南加州大学的Shuo Qin,他完成了所有的习题并校正了教师答案手册中的错误。
许多教师在不同阶段对书稿进行了审阅。感谢他们提出的建设性意见。下面是要感谢的部分教师:
Mokhtar Aboelaze(约克大学)
Manoj Franklin(马里兰大学–帕克分校)
Israel Koren(马萨诸塞州立大学安姆赫斯特分校)
Mikko Lipasti(威斯康辛大学–麦迪逊分校)
Rabi Mahapatra(德州农工大学)
Xiannong Meng(巴克内尔大学)
Prabhat Mishra(佛罗里达大学)
William Mongan(德雷塞尔大学)
Vojin G. Oklobdzija(德州大学–达拉斯分校,Eric Jonsson工程学院)
Soner Onder(密歇根技术大学)
Füsun zgüner(俄亥俄州立大学)
Richard J. Povinelli(马凯特大学)
Norman Ramsey(塔夫斯大学)
Bill Reid(克莱姆森大学)
William H. Robinson(范德堡大学)
Carolyn J C Schauble(科罗拉多州立大学)
Aviral Shrivastava(亚利桑那州立大学)
Sohum Sohoni(俄克拉荷马州立大学)
Nozar Tabrizi(凯特林大学)
Dean Tullsen(加利福尼亚大学–圣迭戈分校)
Charles Weems(马萨诸塞州立大学)
Bilal Zafar(南加州大学)
Huiyang Zhou(北加州州立大学)
最后,感谢我的妻子Sue帮我修改书稿。尽管她没有技术背景,但她还是帮助我修改了文中一些英语使用有歧义和难懂的地方。
非常欢迎读者的反馈,无论是批评的还是赞扬的。对于那些能放到本书配套网站上,对学生学习有帮助的附加材料的建议,我会特别感兴趣。请将评论、关注和建议发到globalengineering@cengage.com。也可以通过alanclements@ntlworld.com直接与我联系。

Alan Clements

上架指导

计算机\计算机组成

封底文字

计算机组成原理与系统结构是计算机科学与技术及相关专业的核心基础内容,对于培养学生的计算机系统能力具有很大的影响。这两部分涉及的内容相互融合,密不可分。越来越多的国内外高校在教学设计、教学实施、教材编写时将这两部分内容结合在一起,并取得了明显的效果。
本书由资深的计算机体系结构教育家Alan Clements博士编写,原书名为《计算机体系结构:原理与演变》(Computer Organization & Architecture: Themes and Variations),书中不仅覆盖单机系统的组成原理和系统结构的各个方面,还包括计算机的性能评价方法以及多发射、粗粒度并行等内容。作者希望本书能够适合电子工程(EE)、电子与计算机工程(ECE)、计算机科学(CS)等不同专业的教学需要。作者围绕基本概念、指令集体系结构、处理器组成和能效、存储与外设、以及处理器级并行等五个核心问题将这些内容有条不紊地组织在一起,以便满足不同专业的教学需要。
中文版引进的时候综合考虑国内高校“计算机组成与结构”或类似课程的教学目标以及我们对本书的定位,对原书进行了适当裁剪和重新组合,分为两册:《计算机组成原理部分》和《计算机存储与外设》,没有收录原书中门和数字逻辑、性能评价、多发射处理器、处理器级并行等内容,因为这些内容一般会在“数字逻辑”“计算机体系结构”“计算机系统性能评价”等课程中专门介绍。
《计算机组成原理》涵盖原书前三部分,共6章(分别对应原书第1章、第2章前8节、第3-5章和第7章),主要介绍计算机系统的组成和体系结构的基本概念、指令系统以及处理器实现等涉及计算机组成原理课程的内容。
《计算机存储与外设》涵盖原书第四部分,共4章(分别对应原书第9-12章),主要讲述计算机系统中的存储器、总线和输入/输出等内容。

作者简介

[英]艾伦?克莱门茨(Alan Clements)著:
Alan Clements 国际著名的计算机体系结构教育的推动者和践行者。他于 1997年获得英国拉夫堡大学(Loughborough University)博士学位,随后加入提赛德大学(University of Teesside)计算机科学系。在20世纪70-80年代,他编写了两本计算机体系结构领域的重要教材:《计算机硬件原理》(The Principles of Computer Hardware) 和《微处理器系统设计》(Microprocessor Systems Design)。
2001年,他担任了计算机学会国际学生竞赛(CSIDC)主席,并于同年获得英国国家教学奖(National Teaching Fellowship),这是英国高等教育的最高奖项。由于在计算机体系结构教育方面的贡献,他于2002年获得IEEE CS本科教学奖,2006年获得IEEE CS 泰勒布斯教育奖(Taylor L. Booth award)。2009年被选为IEEE Fellow。他在IEEE计算机学会担任了多个职务,并积极参加课程体系设计,撰写了关于未来计算机体系结构教育的论文,参加了CS/ACM 2001计算课程体系的编写和制定工作。2010年Alan Clements从全职教学岗位退休。

译者序

计算机组成原理与系统结构是计算机科学与技术及相关专业的核心基础内容,其教学效果对于培养学生的计算机系统能力具有很大的影响。这两部分涉及的内容相互融合,密不可分。越来越多的国内外高校在教学设计、教学实施、教材编写时将这两部分内容结合在一起,并取得了明显的效果。
本书的英文版《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月于长沙

图书目录

出版者的话
译者序
前言
本书导读
作者简介
第一部分 起始篇
第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
1.4 存储程序计算机 24
1.4.1 问题描述 24
1.4.2 解决方法 24
1.4.3 构造一个算法 26
1.4.4 计算机需要通过什么来解决问题 27
1.4.5 存储器 29
1.5 存储程序的概念 31
1.6 计算机系统概览 35
1.6.1 存储层次 35
1.6.2 总线 37
1.7 现代计算 39
本章小结 39
习题 40
第2章 计算机算术 42
2.1 数据是什么 43
2.1.1 位与字节 43
2.1.2 位模式 44
2.2 数字 48
2.2.1 位置记数法 48
2.3 二进制运算 49
2.4 有符号整数 52
2.4.1 符号及值表示法 52
2.4.2 二进制补码运算 53
2.5 乘除法简介 55
2.5.1 移位运算 55
2.5.2 无符号二进制乘法 56
2.5.3 快速乘法 57
2.5.4 除法 59
2.6 浮点数 63
2.6.1 IEEE浮点数 64
2.7 浮点运算 68
2.8 浮点运算和程序员 70
2.8.1 浮点运算中的误差传播 71
2.8.2 生成数学函数 72
本章小结 74
习题 74
第二部分 指令集体系结构
第3章 体系结构与组成 79
3.1 存储程序计算机 79
3.1.1 扩展处理器:常量处理 84
3.1.2 扩展处理器:流控制 85
3.2 ISA的组成 93
3.2.1 寄存器 94
3.2.2 寻址方式概述 96
3.2.3 指令格式 98
3.2.4 操作码与指令 99
3.3 ARM指令集体系结构 101
3.3.1 ARM寄存器集 103
3.3.2 ARM指令集 103
3.4 ARM汇编语言 104
3.4.1 ARM程序结构 105
3.4.2 汇编器的实际考虑因素 107
3.4.3 伪指令 110
3.5 ARM数据处理指令 112
3.5.1 算术指令 113
3.5.2 位操作 116
3.5.3 移位操作 117
3.5.4 指令编码——洞察ARM体系结构 121
3.6 ARM的流控制指令 121
3.6.1 无条件分支 122
3.6.2 条件分支 122
3.6.3 测试与比较指令 123
3.6.4 分支与循环结构 124
3.6.5 条件执行 124
3.7 ARM寻址方式 126
3.7.1 立即数寻址 127
3.7.2 寄存器间接寻址 129
3.7.3 带偏移量的寄存器间接寻址 131
3.7.4 ARM的自动前索引寻址方式 134
3.7.5 ARM的自动后索引寻址方式 136
3.7.6 程序计数器相对寻址 136
3.7.7 ARM的load与store指令编码 136
3.8 子程序调用与返回 138
3.8.1 ARM对子程序的支持 139
3.8.2 条件子程序调用 141
3.9 ARM代码实例 141
3.9.1 计算绝对值 141
3.9.2 字节操作与拼接 141
3.9.3 字节逆转 142
3.9.4 乘以2n-1或2n+1 142
3.9.5 多条件的使用 143
3.9.6 只用一条指令 143
3.9.7 实现多段程序 143
3.9.8 简单位级逻辑操作 144
3.9.9 十六进制字符转换 144
3.9.10 输出十六进制字符 144
3.9.11 打印横幅 145
3.10 子程序与栈 145
3.10.1 子程序调用与返回 147
3.10.2 子程序嵌套 148
3.10.3 叶子程序 150
3.11 数据的大小与排列 150
3.11.1 数据组织与端格式 150
3.11.2 数据组织和ARM 152
3.11.3 块移动指令 156
3.12 整合——将所有内容放在一起 160
本章小结 163
习题 163
第4章 指令集体系结构——广度和深度 168
4.1 数据存储和栈 170
4.1.1 存储和栈 172
4.1.2 通过栈传递参数 179
4.2 特权模式和异常 187
4.3 MIPS:另一种RISC 190
4.3.1 MIPS数据处理指令 193
4.4 数据处理与数据传送 195
4.4.1 不可见的交换指令 198
4.4.2 双精度移位 199
4.4.3 压缩和解压缩指令 200
4.4.4 边界测试 201
4.4.5 位字段数据 202
4.4.6 循环 206
4.5 存储器间接寻址 207
4.6 压缩代码、RISC、Thumb和MIPS16 213
4.6.1 Thumb指令集体系结构 214
4.6.2 MIPS16 219
4.7 变长指令 220
本章小结 224
习题 224
第5章 计算机体系结构与多媒体 229
5.1 高性能计算应用 230
5.1.1 图像处理 233
5.2 多媒体的影响——重新使用CISC 243
5.3 SIMD处理简介 246
5.3.1 SIMD技术的应用 254
5.4 流扩展和SIMD技术的发展 259
5.4.1 浮点软件扩展 261
5.4.2 Intel的第三层多媒体扩展 263
5.4.3 Intel SSE3和SSE4指令 264
5.4.4 ARM系列处理器的多媒体
指令 265
本章小结 267
习题 267
第三部分 组成和效能
第6章 处理器控制 272
6.1 通用数字处理器 274
6.1.1 微程序 277
6.1.2 生成微操作 282
6.2 RISC的组成 286
6.2.1 寄存器–寄存器数据通路 289
6.2.2 单周期直通计算机的控制 292
6.3 流水线简介 295
6.3.1 加速比 298
6.3.2 实现流水线 299
6.3.3 冒险 305
6.4 分支和分支开销 312
6.4.1 分支方向 313
6.4.2 流水线中分支的影响 314
6.4.3 分支开销 315
6.4.4 延迟分支 317
6.5 分支预测 320
6.6 动态分支预测 322
6.6.1 分支目标缓冲 325
6.6.2 两级分支预测 328
本章小结 332
习题 332
参考文献 340

教学资源推荐
参考读物推荐
作者: 陆平 赵培 左奇 等编著
作者: 赵建领; 薛园园