计算机组成与体系结构:性能设计(原书第10版)
作者 : [美]威廉·斯托林斯(William Stallings)著
译者 : 贺莲 译
丛书名 : 计算机科学丛书
出版日期 : 2021-08-18
ISBN : 978-7-111-68835-8
适用人群 : 高校计算机及相关专业本科生、计算机领域的技术人员
定价 : 149.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 578
开本 : 16
原书名 : Computer Organization and Architecture:Designing for Performance,Tenth Edition
原出版社: Pearson Education Asia
属性分类: 教材
包含CD : 无CD
绝版 :
图书简介

本书是计算机组成与体系结构领域的经典教材。它对组成与体系结构领域的必要基础知识进行了全面的介绍。同时,本书涉及领域的前沿进展。与前一版相比,第10版对许多主题进行了修订,并增加了新内容,包括GPGPU、异构多核处理器、嵌入式系统、微控制器、云计算、系统性能、存储器、直接缓存访问、Intel酷睿微架构等。本书对涉及的理论知识辅以充分的例子,其中大多数例子都来自两种使用广泛的指令集,即x86和ARM。适合作为高校计算机及相关专业学生的教材,对从事计算机组成与体系结构研究和工作的人员也有很大的参考价值。

图书特色

紧跟计算机设计的发展趋势,剖析计算机组成与体系结构的原理与实现

图书前言

第10版的新内容
自本书第9版出版以来,计算机组成与体系结构领域的创新和改进不断。在新版本中,我试着反映这些变化,并保持对整个领域广泛而全面的覆盖。为了本次修订,我们对第9版进行了广泛审阅,审阅者是讲授这些主题的教授和在该领域工作的专业人士。因此,第10版进一步明晰或改进了许多地方的描述,也完善了插图。
除了这些用以提升教学效果和用户友好性的改动外,本书还有一些实质性的变化。全书的章节组织仍然和以前大致相同,但修订了许多资料,并添加了新资料。最值得注意的变化如下:
GPGPU(图形处理单元(GPU)上的通用计算):近年来非常重要的新发展之一就是GPGPU的广泛使用,它与传统的CPU协作,以处理涉及大量数据的各种应用程序。本版新增加了一章专门讨论GPGPU。
异构多核处理器:多核架构的最新发展是异构多核处理器。多核计算机一章(第18章)中添加了一节内容,介绍了各种类型的异构多核处理器。
嵌入式系统:对第1章中的嵌入式系统概述部分做了大幅修订和扩充,以反映嵌入式技术的现状。
微控制器:就数量而言,当前我们使用的几乎所有计算机都是嵌入式微控制器。第1章中的嵌入式系统部分现在包括微控制器。全书以ARM Cortex-M3微控制器为例贯穿始终。
云计算:新增了对云计算的讨论,第1章对其进行了概述,第17章进行了更详细的阐述。
系统性能:修订、扩充和重组了关于系统性能问题的部分,以使其显得更加清晰和透彻。第2章专门讨论了这个主题,而且系统性能问题将贯穿全书。
闪存:更新和扩充了闪存部分,现在包含对内存(第5章)与外存(第6章)闪存技术与组成的讨论。
非易失性RAM:本版添加的内容是三种重要的新非易失性固态RAM技术—STT-RAM、PCRAM和ReRAM,它们位于存储器层次结构中的不同位置。
直接缓存访问(DCA):为了满足高速网络连接的协议处理需求,Intel和其他制造商开发了DCA技术,它提供的吞吐量远远高于传统的直接内存访问(DMA)方法。第7章新增了对DCA的详细讨论。
Intel酷睿微架构:与上一版相同,Intel x86系列自始至终都作为主要的示例系统。我们更新了这部分内容以反映新的Intel系统,尤其是Intel酷睿微架构,它用于PC和服务器产品。
家庭作业:增加了家庭作业的数量,这些作业都配有参考答案,可供学生练习。
对ACM/IEEE计算机科学课程指南 2013的支持
本书既适合学生,也适合专业读者。作为一本教科书,它可以用于计算机科学、计算机工程和电气工程专业的一学期或两学期的本科课程。这一版的内容支持ACM/IEEE计算机科学课程指南 2013(CS2013)的建议。CS2013把所有课程划分为三类:核心一级(所有的主题都应包含在课程中),核心二级(应包含所有或几乎所有的主题),选修(希望提供广度和深度)。在体系结构和组成(AR)部分,CS2013包括五个核心二级主题和三个选修主题,每个主题又有多个子主题。本书涵盖了CS2013列出的所有八个主题。表P-1给出了本书对AR知识领域提供的支持。
表P-1 对CS2013 AR知识领域的覆盖
IAS知识单元 主  题 本书覆盖章节
数字逻辑与数字系统(核心二级) ? 计算机体系结构概述与历史
? 组合或时序逻辑/现场可编程门阵列作为基本的组合+时序逻辑构建模块
? 多种表示/分层的解释(硬件仅仅是另外一层)
? 物理约束(门延迟、扇入、扇出、能耗/功率) ? 第1章
? 第11章
数据的机器级表示(核心二级) ? 位、字节和字
? 数值数据的表示和数值的进制
? 定点和浮点系统
? 有符号和补码表示
? 非数值数据的表示(字符编码和图数据) ? 第9章
? 第10章
汇编级计算机组成(核心二级) ? 冯·诺伊曼机的基本组成
? 控制单元,取指、译码和执行
? 指令集和类型(数据处理、控制、I/O)
? 汇编/机器语言编程
? 指令格式
? 寻址模式
? 子程序调用和返回机制(参照PL/语言翻译与执行)
? I/O和中断
? 共享内存的多处理器/多核结构
? SIMD与MIMD简介,Flynn分类法 ? 第1章
? 第7章
? 第12章
? 第13章
? 第17章
? 第18章
? 第20章
? 第21章
? 附录A
存储系统的组织与结构(核心二级) ? 存储系统及其技术
? 存储层次结构:时间和空间局部性
? 主存组成和操作
? 延迟、周期时间、带宽和交叉
? 缓存(地址映射、块大小、替换和存储策略)
? 多处理器缓存一致性/使用存储系统的内核间同步/原子性内存操作
? 虚拟存储器(页表、TLB)
? 故障处理和可靠性 ? 第4章
? 第5章
? 第6章
? 第8章
? 第17章
接口与通信(核心二级) ? I/O基本原理:握手、缓冲、可编程I/O、中断驱动的I/O
? 中断结构:向量化和优先级、中断确认
? 外部存储、物理组成及驱动
? 总线:总线协议、仲裁、直接内存访问(DMA)
? RAID体系结构 ? 第3章
? 第6章
? 第7章
功能性组成(选修) ? 实现简单的数据通路,包括指令流水线、冒险检测和解决
? 控制单元:硬布线实现与微程序实现
? 指令流水线
? 指令级并行(ILP)简介 ? 第14章
? 第16章
? 第20章
? 第21章
多处理及其他体系结构(选修) ? SIMD和MIMD指令集与体系结构示例
? 互联网络
? 共享多处理器内存系统和内存一致性
? 多处理器缓存一致性 ? 第12章
? 第13章
? 第17章
性能提高(选修) ? 超标量体系结构
? 分支预测、推测执行、乱序执行
? 预取
? 向量处理器和GPU
? 多线程的硬件支持
? 可扩展性 ? 第15章
? 第16章
? 第19章

本书的目标
本书是介绍计算机结构与功能的,其目标是尽可能清晰完整地介绍现代计算机系统的性质与特点。
由于种种原因,这个任务颇具挑战性。首先,有各种各样的产品可以被称作计算机,从只值几美元的单芯片微处理器到价值数千万美元的超级计算机。多样性不仅表现在成本方面,还表现在尺寸、性能和应用方面。其次,计算机技术的特点就是变化非常迅速,且从未停止。这些变化涉及计算机技术的方方面面,从用于构造计算机组件的底层集成电路技术,到组合这些组件时越来越多用到的并行性的概念。
尽管计算机领域不断变化且非常多样,但某些基本概念始终是适用的。这些概念的应用取决于技术的现状和设计者的性价比目标。本书的目标是对计算机组成与体系结构进行全面讨论,并将它们与当代的设计问题联系起来。
副书名“性能设计”展示了本书采用的主题与方法。虽然获得高性能在计算机系统设计中一直都很重要,但这一需求从未像现在这样强烈,也从未像这样难以满足。计算机系统所有的基本性能,包括处理器速度、内存速度、内存容量和互连数据速率,都在迅速增长。而且,它们的增长速度不尽相同,很难设计一个平衡系统来最大化所有元素的性能和利用率。因此,计算机设计逐渐变成了一种博弈:改变一部分的结构或功能来弥补另一部分的性能不足。我们将在本书中看到,这种博弈在许多设计决策中都发挥着作用。
和其他系统一样,计算机系统由一组相互关联的部件组成。描述系统特性的最好方式是它的结构和功能,结构是指部件的互连方式,而功能是指各个部件的操作。此外,计算机的组成是层次化的。每个主要部件都可以分解为若干主要子部件,可以描述这些子部件的结构和功能,由此进一步说明主要部件。为了清晰和易于理解,本书自上而下地描述这个层次结构:
计算机系统:主要部件是处理器、内存、I/O。
处理器:主要部件是控制单元、寄存器、ALU和指令执行单元。
控制单元:为处理器所有部件的操作和协调提供控制信号。传统上采用微程序实现,主要部件是控制存储器、微指令序列逻辑和寄存器。最近,微程序设计并不那么突出了,但仍然是一种重要的实现技术。
我们的目标是在清晰明确的上下文中展示新的内容,从而尽可能地帮助读者理解这些知识。同时,相比自下而上的方式,学生的学习积极性会更高。
在讨论过程中,我们从体系结构(机器语言程序员可见的系统属性)和组成(实现该体系结构的操作单元及其互连)两个角度来审视系统的方方面面。
示例系统
本书旨在使读者了解当代系统的设计原则和实现问题。仅有纯粹的概念和理论是不够的,为了说明概念并把它们与必须做出的实际设计选择联系起来,我们选择了两个处理器系列作为运行示例:
Intel x86体系结构:非嵌入式计算机系统中应用最广泛的体系结构是x86。x86本质上是复杂指令集计算机(CISC),但是又具有一些精简指令集计算机(RISC)的特点。x86系列的最新成员使用了超标量和多核设计原则。x86体系结构特性的演变为计算机体系结构大多数设计原则的演变提供了一个独特的研究案例。
ARM:ARM体系结构大概是应用最广泛的嵌入式处理器,用于手机、iPod、远程传感器设备和许多其他设备。ARM本质上是RISC。ARM系列的最新成员使用了超标量和多核设计原则。
本书中的许多例子(但不是全部)都来自这两个计算机系列。许多其他系统,无论是当代的还是过去的,都体现了重要的计算机体系结构设计特性。
本书的组织结构
本书由六个部分组成:
引言
计算机系统
算术与逻辑
中央处理单元
并行结构(包括多核)
控制单元
本书具备很多适用于教学的特色,包括使用交互式仿真和大量图表来使讨论更加清晰。每章都有关键词列表、复习题、练习题以及扩展阅读建议。本书还包括常用缩略语列表和参考文献列表。
教师资源
教师的教辅资料可从本书的教师资源中心(IRC)获取,可以通过出版商网站www.pearsonhighered.com/stallings访问,也可以在本书的配套网站WilliamStallings.com/Computer-Organization上点击“Pearson Resources for Instructors”链接访问。如需访问IRC,请通过pearsonhighered.com/educator/replocator/requestSalesRep.page与当地的Pearson销售代表联系,或致电Pearson教师服务热线1-800-526-0485。IRC提供以下资料:
项目手册:项目资源,包括文档和可移植的软件,以及本前言后面列出的所有项目类别的推荐项目作业。
解题手册:每章复习题和练习题的参考答案。
PPT:全部章节的PPT,适用于教学。
PDF文档:本书所有的图表文件。
题库:每章的问题集。
样例教学大纲:本书包含的资料多于一学期所需的量。因此,为教师提供了几个样例教学大纲,以指导在有限时间内如何使用本书。这些样例都是基于教授本书第1版时的实际经验。
配套网站WilliamStallings.com/ComputerOrganization(点击Instructor Resources链接)包含如下内容:
使用本书的其他课程的网站链接。
Internet邮件列表的注册信息,供使用本书的教师之间以及与作者之间进行信息、建议与问题的交流。
学生资源
在新版本中,学生可以在两个网站上获得大量的原始支持材料。在配套网站WilliamStallings.com/ComputerOrganization(点击Student Resources链接)上,有按章节组织的相关链接列表和勘误表。
购买新书的读者可以在6个月内访问付费内容网站,其中包含在线章节、在线附录、家庭作业与参考答案。
最后,WilliamStallings.com/StudentSupport.html上的Computer Science Student Resource Site由我维护。
项目和其他学生练习
对许多老师来说,计算机组成与体系结构课程的一个重要组成部分是一个或多个项目,通过这些项目,学生可以获得实践经验来强化从书中学到的概念。本书为此提供了相关的支持,教师可将这些项目用于教学。Prentice Hall提供的教辅资源不仅包括关于布置和构建项目的指导,还包含一组针对各种项目类型和特定任务的用户手册,这些都是专门为本书编写的。教师可以针对下列各方面布置作业:
交互式仿真作业:说明见后文。
研究项目:一系列研究任务,指导学生在互联网上研究特定主题并撰写报告。
仿真项目:IRC支持使用两个仿真包—SimpleScalar可用于探索计算机组成与体系结构设计问题;SMPCache是一个强大的教学工具,能够检查对称多处理器的缓存设计问题。
汇编语言项目:使用一种简化的汇编语言CodeBlue,提供了基于流行的Core War概念的任务。
阅读/报告任务:论文列表,每章一篇或多篇论文,可以布置给学生阅读并让他们撰写一篇简短的报告。
写作作业:一份写作作业清单,帮助学习书中的内容。
题库:包含是非题、多选题、填空题及答案。
这些多样化的项目和练习使教师能够使用本书丰富学生的学习体验,也可以定制课程计划以满足师生的特定需求。详情请见本书附录A。
交互式仿真
本版的一个重要特征是结合了交互式仿真。这些仿真为理解现代计算机系统的复杂设计特性提供了强大的工具。共有20个交互式仿真用于说明计算机组成与体系结构设计的关键概念和算法。在本书的相应位置上,我们用图标表示有相关的交互式仿真可供学生在线使用。在动画中,用户可以设置初始条件,因此可以作为学生作业的基础。教师补充材料包括一组作业,每个作业对应一个动画。每个作业都有几个可以布置给学生的具体问题。
要访问动画,请点击本书网站http://williamstallings.com/ComputerOrganization上的旋转地球。
致谢
新版本受益于许多人的审阅,他们慷慨地贡献了自己的时间和专业知识。以下教授和讲师审阅了本书全部或大部分内容:Molisa Derk(Dickinson 州立大学),Yaohang Li (Old Dominion大学),Dwayne Ockel (Regis大学),Nelson Luiz Passos(Midwestern 州立大学),Mohammad Abdus Salam(Southern大学),Vladimir Zwass(Fairleigh Dickinson大学)。
以下专家提供了一个或多个章节的技术意见:Rekai Gonzalez Alberquilla,Allen Baum,Jalil Boukhobza,Dmitry Bufistov,Humberto Calderón,Jesus Carretero,Ashkan Eghbal,Peter Glaskowsky,Ram Huggahalli,Chris Jesshope,Athanasios Kakarountas,Isil Oz,Mitchell Poplingher,Roger Shepherd,Jigar Savla,Karl Stevens,Siri Uppalapati,Sriram Vajapeyam博士,Kugan Vivekanandarajah,Pooria M. Yaghini,Peter Zeno。
Peter Zeno撰写了第19章中的GPGPU部分。
Appalachian 州立大学的Cindy Norris教授、New Brunswick大学的Bin Mu教授以及Alaska 大学的Kenrick Mock教授提供了家庭作业。
Massachusetts大学的Aswin Sreedhar设计了交互式仿真作业,并编写了习题库。
西班牙Extremadura大学的Miguel Angel Vega Rodriguez教授、Juan Manuel Sánchez Pérez教授(博士)和Juan Antonio Gómez Pulido教授(博士)编写了指导手册中的SMPCache问题,以及SMPCache用户指南。
Wisconsin大学的Todd Bezenek和Lehigh大学的James Stine编写了指导手册中的SimpleScalar问题,Todd还编写了SimpleScalar用户指南。

最后,我要感谢负责出版本书的诸位编辑,他们所做的工作一如既往地出色。他们来自Pearson出版集团,特别是我的编辑Tracy Johnson、她的助理Kelsey Loanes、项目经理Carole Snyder,以及生产经理Bob Engelhardt。感谢Mahalatchoumy Saravanan以及Jouve India的工作人员,他们迅速、出色地完成了生产任务。还要感谢Pearson集团的营销人员,没有他们的努力,这本书就不会呈现在大家面前。

上架指导

计算机\计算机组成

封底文字

本书以Intel x86和ARM两个处理器系列为例,深入讨论了计算机组成与体系结构的基本原理和实现,并将它们运用到当代的设计问题中。新版保持了之前版本的特色,全面覆盖整个领域,并在此基础上紧跟技术的发展步伐。
第10版重要更新
新增一章专门讨论GPGPU。
新增一节介绍各种类型的异构多核处理器。
对嵌入式系统部分做了大幅修订和扩充,加入了微控制器。
新增章节以详细讲解云计算技术。
修订、扩充和重组了关于系统性能问题的部分。
更新闪存部分,包括内存和外存的闪存技术及组成。
添加三种重要的非易失性固态RAM技术——STT-RAM,PCRAM,ReRAM。
对直接缓存访问进行详细讨论。
更新Intel酷睿微架构的相关示例。
作者简介
威廉·斯托林斯(William Stallings) 知名计算机图书作者,曾13次获得美国教材和学术专著作者协会颁发的年度最佳计算机科学教材奖。目前,他是一名独立顾问,为众多计算机和网络制造商、软件开发公司以及政府前沿研究机构提供服务。

译者序

《计算机组成与体系结构:性能设计》已经出版到第10版了,这本经典教材对计算机组成与体系结构领域的必要基础知识进行了全面介绍,以简明的方式阐述了非常复杂的专业主题。主要内容包括计算机系统、算术和逻辑、中央处理器、并行组织(含多核)以及控制单元等。本书对之前的版本进行了大量修订,并增加了新的内容。比如,增加了一章专门讨论GPGPU;在多核计算机一章中增加了一个关于异构多核处理器的小节;对嵌入式系统、系统性能、闪存等内容进行了修订、扩充和更新;新增了对云计算的讨论;在非易失性RAM部分新增了三种重要的非易失性固态RAM技术;对DCA进行了详细讨论。
本书系统地介绍了现代计算机系统的性质与特点,对计算机组成与体系结构进行了全面讨论,并把它们与当前的计算机设计问题联系起来。本书采用了理论与实践相结合的方式,在详细介绍理论知识的基础上,选择x86和ARM处理器作为运行示例,帮助读者从真实产品的角度理解理论知识。本书还提供了大量的练习题,便于学习者理解和实践理论知识。
感谢机械工业出版社华章分社的朱劼,由于她的热心推荐,译者才有幸翻译了这本优秀的专业书籍。感谢朱秀英编辑细致耐心的工作以及提出的相关建议。
尽管译者秉持认真细致的态度进行翻译,但由于能力所限,难免会存在错误与疏漏,希望广大读者批评指正。

贺莲
2021年4月于珞珈山

图书目录

译者序

前言
作者简介
第一部分 引言
第1章 基本概念和计算机演化 2
1.1 组成与体系结构 2
1.2 结构与功能 3
1.2.1 功能 3
1.2.2 结构 4
1.3 计算机简史 8
1.3.1 第一代:真空管 9
1.3.2 第二代:晶体管 13
1.3.3 第三代:集成电路 15
1.3.4 第三代以后 18
1.4 Intel x86体系结构的演化 20
1.5 嵌入式系统 22
1.5.1 物联网 23
1.5.2 嵌入式操作系统 23
1.5.3 应用处理器和专用处理器 23
1.5.4 微处理器与微控制器 24
1.5.5 嵌入式与深度嵌入式系统 24
1.6 ARM体系结构 25
1.6.1 ARM的演进 25
1.6.2 指令集架构 25
1.6.3 ARM产品 26
1.7 云计算 29
1.7.1 基本概念 29
1.7.2 云服务 30
1.8 关键词、复习题和练习题 31
第2章 性能问题 34
2.1 优化性能设计 34
2.1.1 微处理器速度 35
2.1.2 性能平衡 35
2.1.3 芯片组成与体系结构的改进 37
2.2 多核、MIC和GPGPU 38
2.3 Amdahl定律和Little定律 39
2.3.1 Amdahl定律 39
2.3.2 Little定律 40
2.4 计算机性能的基本度量 41
2.4.1 时钟速度 42
2.4.2 指令执行速率 42
2.5 计算均值 44
2.5.1 算术均值 45
2.5.2 调和均值 46
2.5.3 几何均值 47
2.6 基准测试和SPEC 49
2.6.1 基准测试原则 49
2.6.2 SPEC基准测试 50
2.7 关键词、复习题和练习题 54
第二部分 计算机系统
第3章 计算机功能与互连的顶层视图 60
3.1 计算机组件 60
3.2 计算机功能 62
3.2.1 取指和执行 62
3.2.2 中断 65
3.2.3 I/O功能 71
3.3 互连结构 71
3.4 总线互连 72
3.5 点对点互连 74
3.5.1 QPI物理层 75
3.5.2 QPI链接层 76
3.5.3 QPI路由层 77
3.5.4 QPI协议层 77
3.6 PCI Express 77
3.6.1 PCI物理和逻辑架构 78
3.6.2 PCIe物理层 79
3.6.3 PCIe事务层 80
3.6.4 PCIe数据链路层 82
3.7 关键词、复习题和练习题 83
第4章 高速缓存 87
4.1 计算机存储系统概述 87
4.1.1 存储系统的特性 87
4.1.2 存储器层次结构 89
4.2 高速缓存存储器原理 92
4.3 高速缓存设计要素 94
4.3.1 高速缓存地址 94
4.3.2 高速缓存大小 95
4.3.3 映射函数 96
4.3.4 替换算法 105
4.3.5 写策略 106
4.3.6 数据行大小 107
4.3.7 高速缓存的数量 107
4.4 Pentium 4高速缓存结构 109
4.5 关键词、复习题和练习题 111
附录4A 两级存储的性能特征 116
第5章 内部存储器 121
5.1 半导体存储器 121
5.1.1 组成 121
5.1.2 DRAM和SRAM 121
5.1.3 ROM的类型 123
5.1.4 芯片逻辑 124
5.1.5 芯片封装 126
5.1.6 模块组织 126
5.1.7 交叉存储器 128
5.2 纠错 128
5.3 DDR DRAM 131
5.3.1 同步DRAM 132
5.3.2 DDR SDRAM 133
5.4 闪存 135
5.4.1 操作 135
5.4.2 NOR和NAND闪存 135
5.5 新的非易失性固态存储器技术 137
5.5.1 STT-RAM 137
5.5.2 PCRAM 138
5.5.3 ReRAM 139
5.6 关键词、复习题和练习题 139
第6章 外部存储器 143
6.1 磁盘 143
6.1.1 磁性读写机制 143
6.1.2 数据组织和格式 144
6.1.3 物理特性 146
6.1.4 磁盘性能参数 147
6.2 RAID 149
6.2.1 RAID级别0 151
6.2.2 RAID级别1 153
6.2.3 RAID级别2 153
6.2.4 RAID级别3 154
6.2.5 RAID级别4 154
6.2.6 RAID级别5 155
6.2.7 RAID级别6 155
6.3 固态驱动器 156
6.3.1 SSD与HDD的比较 156
6.3.2 SSD组成 157
6.3.3 实际问题 157
6.4 光存储器 158
6.4.1 光盘 158
6.4.2 数字通用光盘 160
6.4.3 高清光盘 161
6.5 磁带 162
6.6 关键词、复习题和练习题 163
第7章 输入/输出 166
7.1 外部设备 167
7.1.1 键盘和监视器 167
7.1.2 磁盘驱动器 168
7.2 I/O模块 168
7.2.1 模块功能 168
7.2.2 I/O模块结构 169
7.3 可编程I/O 170
7.3.1 可编程I/O概述 170
7.3.2 I/O命令 170
7.3.3 I/O指令 171
7.4 中断驱动I/O 172
7.4.1 中断处理 173
7.4.2 设计问题 175
7.4.3 Intel 82C59A中断控制器 176
7.4.4 Intel 8255A可编程外设接口 177
7.5 直接内存访问 180
7.5.1 可编程I/O和中断驱动I/O的缺点 180
7.5.2 DMA功能 180
7.5.3 Intel 8237A DMA控制器 182
7.6 直接高速缓存访问 184
7.6.1 使用共享的最后一级高速缓存的DMA 184
7.6.2 高速缓存相关的性能问题 186
7.6.3 直接高速缓存访问策略 187
7.6.4 直接数据I/O 188
7.7 I/O通道和处理器 189
7.7.1 I/O功能的演化 189
7.7.2 I/O通道的特性 190
7.8 外部互连标准 190
7.8.1 通用串行总线 190
7.8.2 FireWire串行总线 191
7.8.3 小型计算机系统接口 191
7.8.4 Thunderbolt 191
7.8.5 InfiniBand 192
7.8.6 PCI Express 192
7.8.7 SATA 192
7.8.8 Ethernet 192
7.8.9 Wi-Fi 192
7.9 IBM zEnterprise EC12 I/O结构 193
7.9.1 通道结构 193
7.9.2 I/O系统组织 194
7.10 关键词、复习题和练习题 196
第8章 操作系统的支持 200
8.1 操作系统概述 200
8.1.1 操作系统的目标与功能 200
8.1.2 操作系统类型 202
8.2 调度 208
8.2.1 长期调度 208
8.2.2 中期调度 208
8.2.3 短期调度 209
8.3 内存管理 212
8.3.1 交换 212
8.3.2 分区 213
8.3.3 分页 214
8.3.4 虚拟内存 216
8.3.5 转换后援缓冲器 218
8.3.6 分段 219
8.4 Intel x86内存管理 220
8.4.1 地址空间 220
8.4.2 分段 220
8.4.3 分页 222
8.5 ARM内存管理 224
8.5.1 内存系统组织 224
8.5.2 虚拟内存地址转换 224
8.5.3 内存管理格式 225
8.5.4 访问控制 227
8.6 关键词、复习题和练习题 227
第三部分 算术与逻辑
第9章 数字系统 232
9.1 十进制系统 232
9.2 按位记数系统 233
9.3 二进制系统 233
9.4 二进制与十进制的转换 233
9.4.1 整数 234
9.4.2 小数 234
9.5 十六进制表示 235
9.6 关键词和练习题 237
第10章 计算机算术运算 238
10.1 算术和逻辑单元 238
10.2 整数表示 239
10.2.1 原码表示法 239
10.2.2 二进制补码表示法 240
10.2.3 范围的扩展 242
10.2.4 定点表示法 243
10.3 整数算术运算 243
10.3.1 非 243
10.3.2 加法和减法 244
10.3.3 乘法 246
10.3.4 除法 251
10.4 浮点表示 254
10.4.1 原则 254
10.4.2 二进制浮点表示的IEEE标准 256
10.5 浮点算术运算 260
10.5.1 加减法 260
10.5.2 乘除法 262
10.5.3 精度考量 263
10.5.4 二进制浮点算术运算的IEEE标准 264
10.6 关键词、复习题和练习题 266
第11章 数字逻辑 270
11.1 布尔代数 270
11.2 门 272
11.3 组合电路 274
11.3.1 布尔函数的实现 274
11.3.2 多路复用器 281
11.3.3 译码器 282
11.3.4 只读存储器 283
11.3.5 加法器 285
11.4 时序电路 287
11.4.1 触发器 287
11.4.2 寄存器 290
11.4.3 计数器 290
11.5 可编程逻辑器件 293
11.5.1 可编程逻辑阵列 293
11.5.2 现场可编程门阵列 295
11.6 关键词和练习题 296
第四部分 中央处理单元
第12章 指令集:特性与功能 300
12.1 机器指令特性 300
12.1.1 机器指令的要素 300
12.1.2 指令表示 301
12.1.3 指令类型 302
12.1.4 地址个数 303
12.1.5 指令集设计 304
12.2 操作数类型 305
12.2.1 数字 305
12.2.2 字符 306
12.2.3 逻辑数据 306
12.3 Intel x86和ARM数据类型 306
12.3.1 x86数据类型 306
12.3.2 ARM数据类型 308
12.4 操作类型 309
12.4.1 数据传输 310
12.4.2 算术运算 311
12.4.3 逻辑运算 311
12.4.4 转换 313
12.4.5 输入/输出 313
12.4.6 系统控制 314
12.4.7 转移控制 314
12.5 Intel x86和ARM操作类型 317
12.5.1 x86操作类型 317
12.5.2 ARM操作类型 321
12.6 关键词、复习题和练习题 323
附录12A 小端序、大端序和双端序 328
第13章 指令集:寻址模式与格式 331
13.1 寻址模式 331
13.1.1 立即数寻址 333
13.1.2 直接寻址 333
13.1.3 间接寻址 333
13.1.4 寄存器寻址 333
13.1.5 寄存器间接寻址 334
13.1.6 偏移寻址 334
13.1.7 栈寻址 336
13.2 x86和ARM寻址模式 336
13.2.1 x86寻址模式 336
13.2.2 ARM寻址模式 338
13.3 指令格式 340
13.3.1 指令长度 340
13.3.2 位的分配 341
13.3.3 变长指令 343
13.4 x86和ARM指令格式 346
13.4.1 x86指令格式 346
13.4.2 ARM指令格式 348
13.5 汇编语言 350
13.6 关键词、复习题和练习题 351
第14章 处理器结构与功能 355
14.1 处理器的组织 355
14.2 寄存器的组织 356
14.2.1 用户可见寄存器 356
14.2.2 控制和状态寄存器 358
14.2.3 微处理器寄存器组织示例 359
14.3 指令周期 360
14.3.1 间接周期 360
14.3.2 数据流 361
14.4 指令流水线 363
14.4.1 流水线策略 363
14.4.2 流水线性能 367
14.4.3 流水线冒险 368
14.4.4 处理分支 369
14.4.5 Intel 80486流水线 373
14.5 x86处理器系列 375
14.5.1 寄存器组织 375
14.5.2 中断处理 378
14.6 ARM处理器 380
14.6.1 处理器组织 380
14.6.2 处理器模式 381
14.6.3 寄存器组织 382
14.6.4 中断处理 383
14.7 关键词、复习题和练习题 384
第15章 精简指令集计算机 388
15.1 指令执行的特点 389
15.1.1 操作 390
15.1.2 操作数 390
15.1.3 过程调用 391
15.1.4 启示 391
15.2 使用大型寄存器文件 392
15.2.1 寄存器窗口 392
15.2.2 全局变量 394
15.2.3 大型寄存器文件与高速缓存 394
15.3 基于编译器的寄存器优化 395
15.4 精简指令集架构 397
15.4.1 为什么是CISC 397
15.4.2 精简指令集架构的特点 398
15.4.3 CISC与RISC特性 400
15.5 RISC流水线 401
15.5.1 规整指令的流水线 401
15.5.2 流水线优化 402
15.6 MIPS R4000 404
15.6.1 指令集 405
15.6.2 指令流水线 406
15.7 SPARC 408
15.7.1 SPARC寄存器组 409
15.7.2 指令集 410
15.7.3 指令格式 411
15.8 RISC与CISC之争 412
15.9 关键词、复习题和练习题 413
第16章 指令级并行与超标量处理器 416
16.1 概述 416
16.1.1 超标量与超流水 417
16.1.2 限制 418
16.2 设计问题 420
16.2.1 指令级并行性与机器并行性 420
16.2.2 指令发射策略 421
16.2.3 寄存器重命名 424
16.2.4 机器并行性 425
16.2.5 分支预测 425
16.2.6 超标量执行 426
16.2.7 超标量实现 426
16.3 Intel酷睿微架构 427
16.3.1 前端 429
16.3.2 无序执行逻辑 430
16.3.3 整数和浮点执行单元 431
16.4 ARM Cortex-A8 431
16.4.1 取指单元 433
16.4.2 指令译码单元 434
16.4.3 整数执行单元 436
16.4.4 SIMD和浮点流水线 437
16.5 ARM Cortex-M3 437
16.5.1 流水线结构 438
16.5.2 分支处理 439
16.6 关键词、复习题和练习题 440
第五部分 并行结构
第17章 并行处理 446
17.1 多处理器结构 446
17.1.1 并行处理器系统的类型 446
17.1.2 并行组织结构 447
17.2 对称多处理器 448
17.2.1 组织结构 449
17.2.2 多处理器操作系统设计考量 451
17.3 高速缓存一致性和MESI协议 451
17.3.1 软件解决方案 452
17.3.2 硬件解决方案 452
17.3.3 MESI协议 453
17.4 多线程和芯片多处理器 456
17.4.1 隐式和显式多线程 456
17.4.2 显式多线程的方法 457
17.5 集群 459
17.5.1 集群配置 460
17.5.2 操作系统设计问题 461
17.5.3 集群计算机体系结构 462
17.5.4 刀片服务器 463
17.5.5 集群与SMP的比较 464
17.6 非均匀内存访问 464
17.6.1 动机 465
17.6.2 组织 465
17.6.3 NUMA的优点和缺点 467
17.7 云计算 467
17.7.1 云计算要素 467
17.7.2 云计算参考架构 470
17.8 关键词、复习题和练习题 471
第18章 多核计算机 476
18.1 硬件性能问题 476
18.1.1 增加并行性和复杂性 476
18.1.2 能耗 477
18.2 软件性能问题 478
18.2.1 多核软件 478
18.2.2 应用程序示例:Valve游戏软件 480
18.3 多核组织结构 481
18.3.1 高速缓存的层级 481
18.3.2 同时多线程 483
18.4 异构多核组织结构 483
18.4.1 不同的指令集架构 483
18.4.2 等价指令集架构 486
18.4.3 高速缓存一致性和MOESI模型 488
18.5 Intel Core i7-990X 490
18.6 ARM Cortex-A15 MPCore 490
18.6.1 中断处理 492
18.6.2 高速缓存一致性 493
18.6.3 L2高速缓存一致性 494
18.7 IBM zEnterprise EC12大型机 494
18.7.1 组织结构 494
18.7.2 高速缓存结构 495
18.8 关键词、复习题和练习题 497
第19章 通用图形处理单元 499
19.1 CUDA基础 499
19.2 GPU与CPU 500
19.2.1 CPU与GPU架构之间的基本差异 501
19.2.2 性能与每瓦特性能比较 501
19.3 GPU架构概述 502
19.3.1 基准GPU架构 502
19.3.2 全芯片布局 502
19.3.3 流式多处理器架构的详细信息 504
19.3.4 了解存储器类型和编程的重要性 506
19.4 Intel Gen8 GPU 507
19.5 何时把GPU当作协处理器使用 511
19.6 关键词和复习题 511
第六部分 控制单元
第20章 控制单元操作 514
20.1 微操作 514
20.1.1 取指周期 515
20.1.2 间接周期 516
20.1.3 中断周期 517
20.1.4 执行周期 517
20.1.5 指令周期 518
20.2 处理器的控制 519
20.2.1 功能需求 519
20.2.2 控制信号 520
20.2.3 控制信号示例 521
20.2.4 处理器内部组织结构 522
20.2.5 Intel 8085 523
20.3 硬布线实现 526
20.3.1 控制单元输入 526
20.3.2 控制单元逻辑 527
20.4 关键词、复习题和练习题 528
第21章 微程序控制 530
21.1 基本概念 530
21.1.1 微指令 530
21.1.2 微程序控制单元 532
21.1.3 Wilkes控制 534
21.1.4 优缺点 536
21.2 微指令排序 537
21.2.1 设计注意事项 537
21.2.2 排序技术 537
21.2.3 地址生成 539
21.2.4 LSI-11微指令排序 540
21.3 微指令执行 540
21.3.1 微指令分类法 541
21.3.2 微指令编码 543
21.3.3 LSI-11微指令执行 544
21.3.4 IBM 3033微指令执行 547
21.4 TI 8800 548
21.4.1 微指令格式 549
21.4.2 微序列器 550
21.4.3 寄存器ALU 553
21.5 关键词、复习题和练习题 556
附录A 计算机组成和体系结构教学项目
附录B 汇编语言与相关主题
缩略语
参考文献
在线资源
附录C 系统总线
附录D 协议与协议架构
附录E 加扰
附录F 替换高速缓存策略
附录G 交叉存储器
附录H 国际基准字母表
附录I 栈
附录J Thunderbolt和Infiniband
附录K 虚拟存储器页替换算法
附录L 哈希表
附录M 递归过程
附录N 更多指令流水线内容
附录O 时序图
术语表

教学资源推荐
作者: [美]戴维·A. 帕特森(David A. Patterson),[美]约翰·L. 亨尼斯(John L. Hennessy) 著
作者: [美]莫尔·哈肖尔-巴尔特(Mor Harchol-Balter) 著
作者: (美)Jonathan W.Valvano
作者: 颜志英
参考读物推荐
作者: (美)Sun Microsystems, Inc
作者: 赵建领; 薛园园
作者: (美)Elecia White 著
作者: 陆平 赵培 左奇 等编著