计算机体系结构精髓(原书第2版)
作者 : [美]道格拉斯·科莫(Douglas Comer)著
译者 : 黄智濒 戴志涛 译
丛书名 : 计算机科学丛书
出版日期 : 2019-05-22
ISBN : 978-7-111-62658-9
定价 : 99.00元
教辅资源
扩展信息
语种 : 简体中文
页数 : 302
开本 : 16
原书名 : Essentials of Computer Architecture, Second Edition
原出版社: Taylor & Francis -CRC Press
属性分类: 教材
包含CD : 无CD
绝版 :
图书简介

本书是计算机体系结构的入门教材,从程序员的视角展开讨论,重点介绍基础知识和概念,不深入底层技术的细节。这种视角旨在帮助程序员新手和计算机专业新生理解体系结构对编程的影响,书中浓缩的核心知识点涵盖了程序员需要掌握的所有硬件层面,从而有利于其更好地进行软件的设计、实现和运维。本书分为五个部分,包括数字逻辑、门和数据通路的基础知识,以及体系结构的三个主要方面——处理器、内存和I/O系统。此外,书中还涉及并行、流水线、能源和性能等高级主题,以及一个动手操作的实验。第2版共包含了三个全新的章节,并在整体上进行了与时俱进的修订。

图书特色

图书前言

硬件工程已经从使用分立电子元件转向使用可编程器件。因此,编程变得更加重要。那些理解硬件如何运转和熟知基本硬件原理的程序员,可以更加高效且少犯错误地构建软件系统。掌握计算机体系结构的基础知识使得编程人员能够理解软件如何映射到硬件上,并做出更好的软件设计选择。掌握底层硬件知识也有助于调试,因为它可以让程序员快速地定位问题的根源。
本书适用于一个学期的本科课程。在众多计算机科学课程中,计算机体系结构或计算机组成课程是唯一介绍计算机结构基本概念的课程,这些概念有助于学生理解他们赖以编程的计算机结构。遗憾的是,大多数计算机体系结构书籍都是硬件工程师编写的,目标读者是那些想学习如何设计硬件的学生。本书则采用了不同的方法:不再专注于硬件设计和工程细节,而是针对程序员,解释程序员需要知道的硬件基础知识。因此,本书从程序员的角度解释主题,并强调其对程序员的影响。
全书分为五个部分。第一部分介绍数字逻辑、门电路、数据通路和数据表示的基础知识。大多数学生喜欢这种简短的学习底层硬件的方式(特别是本书不介绍细微的硬件细节)。第二至四部分涵盖体系结构的三个主要方面:处理器、存储器和输入/输出系统。在每一章中,都为学生提供了足够的背景知识,以便他们了解相关机制如何运作及其对程序员的影响,而无须继续了解许多细节。最后,第五部分涵盖并行、流水线、功耗和能耗以及性能等高级主题。
附录A描述课程的一个重要方面——实验,学生可以通过实践学习。尽管大多数实验问题都集中在编程上,但学生应该在前几周完成在面包板上连接门电路。该设备价格低廉(我们购买供学生实验的长期设备时,每位学生花费少于15美元,学生自己购买实验设备花费不到20美元)。
附录C提供对x86汇编语言和x64扩展的简单介绍。许多老师讲授x86系统,要求将其包含在内。该材料位于附录中,意味着选择RISC汇编语言(例如,ARM体系结构)的老师可以将其用于比较。
第2版新增了两章并对全书内容做了一些修改和更新。例如,在第3章中,有关数据通路的部分展示了计算机系统的组件,并描述了当指令执行时数据是如何在这些组件间流动的。通过简单的例子在第2章介绍的数字逻辑与接下来章节介绍的处理器之间搭建了桥梁。在第20章中,覆盖了功耗与能耗的基本概念,读者无须了解更多细节。它解释了为什么以半速运行的双核处理器芯片的功耗要低于全速运行的单核处理器芯片的功耗。
我们建立了一个与本书配套的网站:http://www.eca.cs.purdue.edu。
本书正文及实验练习被普渡大学用作教材,学生对这两方面都非常积极。我们收到了大量关于本书的感谢信息。对于许多学生来说,实验课是他们与硬件的第一次近距离接触,因此学习热情高涨。
感谢许多为本书做出贡献的人。Bernd Wolfinger全面审阅了本书,并就主题和方向提出了一些重要建议。一些教授和学生指出了第1版中的错别字。George Adams为第2版提供了详细的意见和建议。
最后,感谢我的妻子Chris,她耐心细致的编辑和提出的宝贵建议,改进和完善了本书。

道格拉斯·科莫

上架指导

计算机体系结构

封底文字

程序员需要学习哪些计算机体系结构知识?本书从这一视角出发,清晰阐释了体系结构的整体脉络,但不深入硬件设计和工程细节。掌握这些核心概念有助于程序员理解硬件/软件接口,在构建软件系统时更加高效,在调试时更加快速地定位问题。
本书分为五大部分。第一部分介绍数字逻辑、门电路、数据通路和数据表示的基础知识。第二至四部分涵盖计算机体系结构的三个主要方面——处理器、存储器和I/O系统,每一章都包含足够的背景知识,帮助读者了解计算机各主要部件的工作原理及其对程序设计的影响。第五部分涉及并行、流水线、能耗和性能等高级主题。第2版添加了两个全新的章节,并在整体上做了与时俱进的修订。
此外,本书网站eca.cs.purdue.edu提供了多种教学资源供读者免费下载,包括PPT和实验指导等。

道格拉斯·科莫(Douglas Comer) 世界知名的计算机网络和TCP/IP专家,普渡大学计算机科学杰出教授,ACM会士,获得了包括USENIX终身成就奖在内的众多奖项。曾担任思科公司首席研究副总裁,CSNET技术委员会主席,DARPA分布式系统架构委员会主席,以及《Software—Practice and Experience》期刊主编。他撰写了一系列突破性的教科书,这些书被翻译成16种语言,在工业界和学术界影响甚广。

黄智濒 北京邮电大学计算机学院讲师,计算机体系结构博士,主讲数字逻辑和计算机体系结构课程。主要研究方向包括GPU加速及大规模并行计算等。
戴志涛 北京邮电大学计算机学院教授,主讲计算机组成原理和嵌入式系统课程。主要研究方向包括嵌入式片上系统架构等。

作者简介

[美]道格拉斯·科莫(Douglas Comer)著:---作者简介---
道格拉斯·科莫(Douglas Comer) 世界知名的计算机网络和TCP/IP专家,普渡大学计算机科学杰出教授,ACM会士,获得了包括USENIX终身成就奖在内的众多奖项。曾担任思科公司首席研究副总裁,CSNET技术委员会主席,DARPA分布式系统架构委员会主席,以及《Software—Practice And Experience》期刊主编。他撰写了一系列突破性的教科书,这些书被翻译成16种语言,在工业界和学术界影响甚广。

---译者简介---
黄智濒 北京邮电大学计算机学院讲师,计算机体系结构博士,主讲数字逻辑和计算机体系结构课程。主要研究方向包括GPU加速及大规模并行计算等。
戴志涛 北京邮电大学计算机学院教授,主讲计算机组成原理和嵌入式系统课程。主要研究方向包括嵌入式片上系统架构等。

译者序

计算机体系结构是计算机及相关学科的专业技术基础课程,是描绘计算机的过去、现在和未来蓝图的课程。计算机体系结构研究软件、硬件功能分配和对软件、硬件接口的确定。因此,它既需要数字逻辑、计算机系统、计算机组成原理等相关方面的硬件基础知识,又需要操作系统、编译原理、汇编语言甚至高级语言等相关方面的软件知识。很多人觉得这些内容既多又复杂,虽然知道对未来工作有帮助,但面对繁杂的前导知识常常望而却步。本书专为这类读者准备,特别是不想深入了解硬件知识的专业程序开发人员。
本书从程序员视角出发,不涉及过多的底层硬件基础知识,但又深刻清晰地描述了相关的基本原理。作为讲授数字逻辑与数字系统、计算机组成原理以及计算机体系结构的专业教师,翻译完本书之后,不禁感叹科莫博士学识渊博,细节描述细致入微,同时整体脉络清晰,有助于广大程序员全面了解计算机及其基本原理和体系结构,从而实现更高效的软件开发。
在翻译的过程中,译者根据计算机学会计算机术语审定工作委员会推荐的词汇,对原书中的某些描述进行了符合中文习惯的转换。译者尽力准确反映原著的描述,但由于水平有限,翻译中难免有错漏之处,恳请读者和同行批评指正。
最后,感谢家人和朋友的支持和帮助。同时,要感谢参与本书翻译过程的所有人,特别是北京市三帆中学黄天量,北京交通大学附属中学韩乐铮,以及北京邮电大学计算机学院的赵达非、吕滢、何若愚、汤洋、王旭飞、张彦涵、陈俊贤、王珏、许瀚元、桑燊、罗婷等人,最后要感谢北京邮电大学计算机学院体系结构中心的大力支持。

北京邮电大学计算机学院
智能通信软件与多媒体北京市重点实验室
黄智濒 戴志涛
2019年3月于北京

图书目录

出版者的话
译者序
前言
关于作者
第1章 简介及概览 1
1.1 体系结构的重要性 1
1.2 学习基础知识 1
1.3 本书结构 1
1.4 一笔带过的内容 2
1.5 术语:体系结构和设计 2
1.6 小结 2
第一部分 基础知识
第2章 数字逻辑基础 4
2.1 引言 4
2.2 数字计算装置 4
2.3 电气术语:电压和电流 4
2.4 晶体管 5
2.5 逻辑门 5
2.6 使用晶体管实现的“与非”逻辑门电路 7
2.7 表示逻辑门的符号 8
2.8 逻辑门互连的例子 8
2.9 实现二进制加法的数字电路 10
2.10 多逻辑门的集成电路 10
2.11 不只需要组合逻辑电路 11
2.12 维持状态的电路 11
2.13 传播延迟 12
2.14 使用锁存器构建存储器 12
2.15 触发器和波形图 13
2.16 二进制计数器 14
2.17 时钟和时序 15
2.18 反馈的重要概念 17
2.19 启动序列 18
2.20 软件迭代与硬件复制 18
2.21 门和芯片的最简化 19
2.22 使用闲置门 19
2.23 配电和散热 20
2.24 时序和时钟域 20
2.25 无时钟逻辑 21
2.26 电路规模和摩尔定律 21
2.27 电路板和层 22
2.28 抽象层次 23
2.29 小结 23
习题 23
第3章 数据和程序的表示 25
3.1 引言 25
3.2 数字逻辑与抽象的重要性 25
3.3 位和字节的定义 25
3.4 字节大小和可能的值 25
3.5 二进制位权表示法 26
3.6 位序 27
3.7 十六进制记法 28
3.8 十六进制和二进制常数记法 29
3.9 字符集 29
3.10 Unicode 30
3.11 无符号整数、溢出和下溢 30
3.12 给位和字节编号 31
3.13 有符号二进制整数 31
3.14 一个补码数字的例子 32
3.15 符号扩展 33
3.16 浮点数 33
3.17 IEEE浮点值的范围 34
3.18 特殊值 35
3.19 二进制编码的十进制表示 35
3.20 有符号数、分数和压缩BCD表示法 36
3.21 数据聚合 36
3.22 程序的表示 37
3.23 小结 37
习题 37
第二部分 处理器
第4章 处理器和计算引擎的多样性 40
4.1 引言 40
4.2 两种基本的体系结构 40
4.3 哈佛与冯·诺依曼体系结构 40
4.4 处理器的定义 41
4.5 处理器的范围 41
4.6 分层结构和计算引擎 42
4.7 传统处理器的结构 43
4.8 处理器的分类和角色 44
4.9 处理器技术 44
4.10 存储程序 45
4.11 取指–执行周期 45
4.12 程序转换 46
4.13 时钟速率和指令速率 46
4.14 控制:启动和停止 47
4.15 启动取指–执行周期 47
4.16 小结 48
习题 48
第5章 处理器类型和指令集 49
5.1 引言 49
5.2 数学能力、便利性和成本 49
5.3 指令集架构 49
5.4 操作码、操作数和结果 50
5.5 典型的指令格式 50
5.6 可变长度指令与固定长度指令 50
5.7 通用寄存器 51
5.8 浮点寄存器和寄存器标识 51
5.9 使用寄存器编程 51
5.10 寄存器存储体 52
5.11 复杂指令集和精简指令集 53
5.12 RISC设计和执行流水线 53
5.13 流水线和指令延迟 54
5.14 引起流水线停顿的其他原因 55
5.15 对程序员的影响 56
5.16 编程、停顿和无操作指令 56
5.17 转发 56
5.18 操作类型 57
5.19 程序计数器、取指–执行以及分支 57
5.20 子程序调用、参数以及寄存器窗口 58
5.21 一个示例指令集 59
5.22 极简化的指令集 61
5.23 正交性原则 61
5.24 条件码和条件分支 62
5.25 小结 62
习题 62
第6章 数据通路和指令执行 64
6.1 引言 64
6.2 数据通路 64
6.3 示例指令集 64
6.4 内存中的指令 66
6.5 移到下一条指令 67
6.6 取指令 68
6.7 解码指令 69
6.8 连接到寄存器单元 69
6.9 控制和协调 70
6.10 算术运算和复用 70
6.11 涉及存储器中数据的操作 71
6.12 执行过程的示例 72
6.13 小结 73
习题 73
第7章 操作数寻址和指令表示 75
7.1 引言 75
7.2 零、一、二或三地址设计 75
7.3 每指令零操作数 75
7.4 每指令单操作数 76
7.5 每指令两操作数 76
7.6 每指令三操作数 77
7.7 操作数来源和立即数 77
7.8 冯·诺依曼体系结构的瓶颈 77
7.9 显式和隐式操作数编码 78
7.10 组合多个值的操作数 79
7.11 权衡操作数的选择 79
7.12 内存中的值和间接引用 80
7.13 操作数寻址模式的示例 80
7.14 小结 81
习题 81
第8章 CPU:微码、保护和处理器模式 83
8.1 引言 83
8.2 中央处理器 83
8.3 CPU的复杂性 83
8.4 执行模式 84
8.5 向后兼容性 84
8.6 改变模式 84
8.7 特权和保护 85
8.8 多级保护 85
8.9 微码指令 86
8.10 微码变体 87
8.11 微码的优势 87
8.12 FPGA和指令集的改变 88
8.13 垂直微码 88
8.14 水平微码 88
8.15 水平微码的例子 89
8.16 水平微码程序示例 91
8.17 需要多个周期的操作 91
8.18 水平微码和并行执行 92
8.19 前瞻性和高性能执行 92
8.20 并行和执行顺序 93
8.21 乱序指令执行 93
8.22 条件分支和分支预测 94
8.23 对程序员的影响 94
8.24 小结 94
习题 95
第9章 汇编语言和编程范式 96
9.1 引言 96
9.2 高级程序设计语言的特征 96
9.3 低级程序设计语言的特征 97
9.4 汇编语言 97
9.5 汇编语言的语法和操作码 98
9.6 操作数顺序 99
9.7 寄存器名称 100
9.8 操作数类型 100
9.9 汇编语言的编程范式和语言风格 101
9.10 用汇编语言实现if语句 101
9.11 用汇编语言实现if-then-else语句 102
9.12 用汇编语言实现for循环语句 102
9.13 用汇编语言实现while循环语句 103
9.14 用汇编语言实现子程序调用 103
9.15 用汇编语言实现带参数的子程序调用 103
9.16 对程序员的影响 104
9.17 函数调用的汇编语言实现代码 104
9.18 汇编语言与高级语言间的交互 105
9.19 变量和存储的汇编代码 105
9.20 汇编语言代码样例 106
9.21 两次扫描的汇编器 110
9.22 汇编语言的宏 111
9.23 小结 113
习题 113
第三部分 存储器
第10章 内存与存储器 116
10.1 引言 116
10.2 定义 116
10.3 内存的关键方面 116
10.4 内存技术的特点 116
10.5 内存层级的重要概念 117
10.6 指令和数据存储 118
10.7 提取–保存范式 118
10.8 小结 119
习题 119
第11章 物理内存和物理寻址 120
11.1 引言 120
11.2 计算机内存的特点 120
11.3 静态和动态RAM技术 120
11.4 内存技术的两个主要度量 121
11.5 密度 121
11.6 读写性能的分离 121
11.7 延迟和内存控制器 122
11.8 同步和多数据速率技术 122
11.9 内存组织 123
11.10 内存访问和内存总线 123
11.11 字、物理地址和内存传输 124
11.12 物理内存操作 124
11.13 内存字大小和数据类型 125
11.14 字节寻址和将字节映射到字 125
11.15 使用2的幂 126
11.16 字节对齐和编程 126
11.17 内存大小和地址空间 127
11.18 使用字寻址的编程 127
11.19 内存大小和2的幂 128
11.20 指针和数据结构 128
11.21 内存转储 129
11.22 间接寻址和间接操作数 129
11.23 带有独立控制器的多个内存 130
11.24 内存的存储体 130
11.25 交叉存取 131
11.26 内容可寻址存储器 132
11.27 三态内容可寻址存储器 133
11.28 小结 133
习题 133
第12章 缓存器和缓存 135
12.1 引言 135
12.2 在存储层级上的信息传播 135
12.3 缓存的定义 135
12.4 缓存器的特征 135
12.5 缓存术语 136
12.6 最好和最坏情况下的缓存性能 136
12.7 一个典型请求序列的缓存性能 137
12.8 缓存替换策略 138
12.9 最近最少使用替换策略 138
12.10 多级缓存层级结构 138
12.11 预加载缓存 139
12.12 和内存一块使用的缓存 139
12.13 物理内存缓存 140
12.14 写直通策略和写回策略 140
12.15 缓存一致性 141
12.16 L1、L2和L3缓存 141
12.17 L1、L2和L3缓存的大小 142
12.18 指令和数据缓存 142
12.19 改良的哈佛体系结构 143
12.20 内存缓存的实现 143
12.21 直接映射的内存缓存 144
12.22 使用2的幂提高效率 145
12.23 直接映射缓存的硬件实现 146
12.24 组相联的内存缓存 147
12.25 对程序员的影响 148
12.26 小结 148
习题 148
第13章 虚拟内存技术与虚拟寻址 150
13.1 引言 150
13.2 虚拟内存的定义 150
13.3 内存的管理单元和地址空间 150
13.4 多个物理内存系统的接口 150
13.5 地址转换或者地址映射 151
13.6 避免算术计算 152
13.7 不连续的地址空间 152
13.8 虚拟内存的动机 153
13.9 多虚拟地址空间和多道程序 154
13.10 动态地创建虚拟地址空间 155
13.11 基址–界限寄存器 155
13.12 改变虚拟地址空间 155
13.13 虚拟内存和保护 156
13.14 分段 156
13.15 请求分页 157
13.16 请求分页的硬件和软件 157
13.17 页替换 157
13.18 分页术语和数据结构 158
13.19 分页系统中的地址转换 158
13.20 使用2的幂 159
13.21 存在位、使用位和修改位 159
13.22 页表的存储 160
13.23 分页效率和转换后备缓冲区 160
13.24 对程序员的影响 161
13.25 虚拟内存和缓存间的关系 162
13.26 虚拟内存缓存和缓存刷新 162
13.27 小结 163
习题 164
第四部分 输入和输出
第14章 输入/输出的概念和术语 166
14.1 引言 166
14.2 输入和输出设备 166
14.3 外部设备的控制 166
14.4 数据传输 167
14.5 串行与并行数据传输 167
14.6 自同步数据 168
14.7 全双工和半双工交互 168
14.8 接口的吞吐率和延迟 168
14.9 多路复用的基本思想 169
14.10 每个接口支持多个设备 169
14.11 从处理器角度看I/O 170
14.12 小结 170
习题 170
第15章 总线及总线架构 171
15.1 引言 171
15.2 总线的定义 171
15.3 处理器、I/O设备以及总线 171
15.4 物理连接 172
15.5 总线接口 173
15.6 控制、地址和数据线 173
15.7 提取–保存范式 174
15.8 提取–保存和总线宽度 174
15.9 多路复用 175
15.10 总线的宽度和数据项的大小 176
15.11 总线地址空间 176
15.12 潜在错误 177
15.13 地址的配置和插槽 177
15.14 多总线的问题 178
15.15 对设备使用提取–保存 178
15.16 接口的操作 179
15.17 不对称赋值和总线错误 179
15.18 统一内存和设备寻址 180
15.19 总线地址空间中的“洞” 180
15.20 地址映射 180
15.21 总线的程序接口 181
15.22 总线之间的桥 182
15.23 主总线和辅助总线 182
15.24 对程序员的影响 183
15.25 总线的替代者——交换结构 183
15.26 小结 184
习题 185
第16章 可编程的I/O和中断驱动的I/O 186
16.1 引言 186
16.2 I/O范式 186
16.3 可编程的I/O 186
16.4 同步 186
16.5 轮询 187
16.6 轮询的代码 187
16.7 控制和状态寄存器 189
16.8 使用结构来定义CSR 190
16.9 处理器的使用和轮询 190
16.10 中断驱动的I/O 191
16.11 中断机制和取指–执行 191
16.12 处理中断 192
16.13 中断向量 192
16.14 中断初始化和禁用中断 193
16.15 中断一个中断处理程序 193
16.16 中断的配置 194
16.17 动态的总线连接和可插拔设备 194
16.18 中断、性能和智能设备 195
16.19 直接内存访问 195
16.20 用缓冲链扩展DMA 196
16.21 分散读操作和聚集写操作 196
16.22 操作链 197
16.23 小结 197
习题 198
第17章 程序员视角的设备、输入/输出和缓冲 199
17.1 引言 199
17.2 设备驱动程序的定义 199
17.3 设备的独立、封装和隐藏 199
17.4 设备驱动程序的概念 200
17.5 两类设备 200
17.6 设备驱动程序的示例流程 201
17.7 输出操作队列 202
17.8 强制设备发出中断 202
17.9 输入操作队列 203
17.10 异步设备驱动程序和互斥 203
17.11 从应用程序看I/O 204
17.12 库/操作系统二元论 205
17.13 操作系统支持的I/O操作 205
17.14 I/O操作的成本 205
17.15 减少系统调用的开销 206
17.16 缓冲的关键概念 206
17.17 缓冲输出的实现 207
17.18 清空缓冲区 208
17.19 缓冲输入 208
17.20 缓冲的效率 209
17.21 与缓存的关系 209
17.22 一个例子:C语言的标准I/O库 209
17.23 小结 209
习题 210
第五部分 高级主题
第18章 并行 212
18.1 引言 212
18.2 并行性和流水线架构 212
18.3 并行的特征 212
18.4 微观与宏观 212
18.5 微观并行的例子 213
18.6 宏观并行的例子 213
18.7 对称与非对称 214
18.8 细粒度并行与粗粒度并行 214
18.9 显式并行与隐式并行 214
18.10 并行体系结构的类型(弗林分类法) 214
18.11 单指令流单数据流 215
18.12 单指令流多数据流 215
18.13 多指令流多数据流 216
18.14 通信、协同和竞争 218
18.15 多处理器的性能 218
18.16 对程序员的影响 220
18.17 冗余并行体系结构 221
18.18 分布式集群计算机 222
18.19 现代超级计算机 222
18.20 小结 223
习题 223
第19章 数据流水线 225
19.1 引言 225
19.2 流水线的概念 225
19.3 软件流水线 226
19.4 软件流水线的性能和开销 227
19.5 硬件流水线 227
19.6 硬件流水线如何提升性能 228
19.7 何时使用流水线 229
19.8 处理过程的概念划分 230
19.9 流水线架构 231
19.10 流水线的建立、延迟以及排空时间 231
19.11 超流水线架构的定义 231
19.12 小结 232
习题 232
第20章 功率与能耗 233
20.1 引言 233
20.2 功率的定义 233
20.3 能耗的定义 233
20.4 数字电路的功耗 234
20.5 CMOS数字电路的切换功耗 234
20.6 冷却、功耗密度和功率墙 235
20.7 能耗使用 236
20.8 功率管理 236
20.9 能耗使用的软件控制 238
20.10 选择何时睡眠和何时唤醒 239
20.11 睡眠模式和网络设备 240
20.12 小结 240
习题 241
第21章 评估性能 242
21.1 引言 242
21.2 测量计算能力和性能 242
21.3 计算能力的测量 242
21.4 应用相关的指令数 243
21.5 指令混合 244
21.6 标准化测试程序 244
21.7 I/O和内存瓶颈 245
21.8 硬件与软件的权衡 245
21.9 选择拟优化的部件——阿姆达尔定律 246
21.10 阿姆达尔定律和并行系统 246
21.11 小结 246
习题 247
第22章 体系结构的例子和层次 248
22.1 引言 248
22.2 体系结构的层次 248
22.3 系统级架构——个人电子计算机 248
22.4 总线互连和桥接 249
22.5 控制器芯片和物理架构 249
22.6 虚拟总线 250
22.7 连接速率 251
22.8 桥接功能和虚拟总线 252
22.9 板级架构 252
22.10 芯片级架构 253
22.11 片上功能单元的结构 254
22.12 小结 254
习题 255
第23章 硬件模块化 256
23.1 引言 256
23.2 模块化的动机 256
23.3 软件模块化 256
23.4 子程序的参数化调用 257
23.5 硬件扩展和并行 257
23.6 基本块复制 257
23.7 示例设计(重启器) 257
23.8 重启器的高层次设计 258
23.9 适应各种尺寸的构建块 258
23.10 并行互连 258
23.11 互连的例子 259
23.12 模块选择 259
23.13 小结 260
习题 260
附录A 用于计算机体系结构课程的实验练习 261
附录B 布尔代数化简法则 272
附录C x86汇编语言快速入门 273
附录D ARM寄存器定义和调用序列 286

教学资源推荐
作者: John L. Hennessy; David A. Patterson
作者: James A.Rehg; Henry W.Kraebber
作者: [美] 爱德华·阿什福德·李(Edward Ashford Lee) 桑吉特·阿伦库马尔·塞希阿(Sanjit Arunkumar Seshia) 著
作者: [美] 威廉·斯托林斯(William Stallings) 著
参考读物推荐
作者: 王辉耀 主编苗丹国 程 希 副主编
作者: (美)普赖斯·普里切特、唐纳德·鲁滨逊、拉塞尔·克拉克森
作者: 陆平 赵培 左奇 等编著
作者: 高显生 编著