第一部分 引言 2
第1章 引言 2
1.1 计算机体系结构的研究内容 2
1.1.1 一以贯之 2
1.1.2 什么是计算机 5
1.1.3 计算机的基本组成 6
1.2 衡量计算机的指标 8
1.2.1 计算机的性能 8
1.2.2 计算机的价格 10
1.2.3 计算机的功耗 11
1.3 计算机体系结构的发展 12
1.3.1 摩尔定律和工艺的发展 13
1.3.2 计算机应用和体系结构 17
1.3.3 计算机体系结构发展 18
1.4 体系结构设计的基本原则 20
1.4.1 平衡性 20
1.4.2 局部性 21
1.4.3 并行性 22
1.4.4 虚拟化 23
1.5 本章小结 24
习题 24
第二部分 指令系统结构 26
第2章 指令系统 26
2.1 指令系统简介 26
2.2 指令系统设计原则 26
2.3 指令系统发展历程 28
2.3.1 指令集的演变 28
2.3.2 存储管理的演变 29
2.3.3 运行级别的演变 31
2.4 本章小结 32
习题 32
第3章 指令集结构 33
3.1 地址空间 33
3.2 操作数 36
3.2.1 数据类型 36
3.2.2 访存地址 36
3.2.3 寻址方式 36
3.3 指令操作和编码 37
3.4 RISC指令集比较 38
3.5 C语言的机器表示 43
3.6 本章小结 46
习题 47
第4章 异常与中断 48
4.1 异常分类 48
4.2 异常处理 48
4.3 中断 50
4.3.1 中断的优先级和原子性 50
4.3.2 向量化中断 51
4.3.3 中断传递机制 52
4.4 本章小结 52
习题 52
第5章 存储管理 53
5.1 存储管理的原理 53
5.2 TLB的结构和使用 55
5.3 TLB异常的处理 57
5.4 本章小结 60
习题 61
第6章 软硬件协同 62
6.1 函数调用规范 62
6.1.1 MIPS ABI整数寄存器约定 62
6.1.2 MIPS ABI函数调用约定 63
6.1.3 MIPS堆栈布局 64
6.2 中断的生命周期 66
6.3 系统调用过程 67
6.4 同步与通信 68
6.4.1 基于互斥的同步机制 68
6.4.2 非阻塞的同步机制 69
6.5 本章小结 70
习题 70
第三部分 计算机硬件结构 72
第7章 计算机组成原理和结构 72
7.1 冯·诺依曼结构 72
7.2 计算机的组成部件 73
7.2.1 运算器 73
7.2.2 控制器 73
7.2.3 存储器 74
7.2.4 输入设备 77
7.2.5 输出设备 77
7.3 计算机系统硬件结构发展 79
7.3.1 CPU-GPU-北桥-南桥四片结构 80
7.3.2 CPU-北桥-南桥三片结构 81
7.3.3 CPU-弱北桥-南桥三片结构 81
7.3.4 CPU-南桥两片结构 82
7.3.5 SoC单片结构 82
7.4 处理器和IO设备间的通信 82
7.4.1 IO寄存器寻址 83
7.4.2 处理器和IO设备之间的同步 83
7.4.3 存储器和IO设备之间的数据传送 84
7.4.4 IO中断控制器 85
7.5 本章小结 86
习题 86
第8章 计算机总线接口技术 87
8.1 总线概述 87
8.2 总线分类 88
8.3 片上总线 88
8.4 内存总线 93
8.5 系统总线 99
8.5.1 HyperTransport总线 99
8.5.2 HyperTransport包格式 102
8.6 IO总线 103
8.6.1 PCIE总线 103
8.6.2 PCIE包格式 104
8.7 本章小结 105
习题 105
第9章 计算机系统启动过程分析 106
9.1 处理器核初始化 106
9.1.1 处理器复位 107
9.1.2 调试接口初始化 107
9.1.3 TLB初始化 108
9.1.4 Cache初始化 109
9.2 总线接口初始化 111
9.2.1 内存初始化 112
9.2.2 IO总线初始化 113
9.3 设备的探测及驱动加载 113
9.4 多核启动过程 117
9.4.1 初始化时的多核协同 117
9.4.2 操作系统启动时的多核唤醒 118
9.5 本章小结 120
习题 120
第四部分 CPU的微结构 122
第10章 二进制与逻辑电路 122
10.1 计算机中数的表示 122
10.1.1 二进制 122
10.1.2 定点数的表示 123
10.1.3 浮点数的表示 125
10.2 MOS晶体管工作原理 127
10.2.1 半导体 128
10.2.2 NMOS和PMOS晶体管 128
10.3 CMOS逻辑电路 130
10.3.1 数字逻辑电路 130
10.3.2 常见CMOS电路 134
10.3.3 CMOS电路延迟 136
10.4 本章小结 137
习题 137
第11章 简单运算器设计 139
11.1 定点补码加法器 139
11.1.1 一位全加器 139
11.1.2 行波进位加法器 140
11.1.3 先行进位加法器 141
11.2 减法运算实现 144
11.3 比较运算实现 145
11.4 移位器 145
11.5 本章小结 146
习题 147
第12章 定点补码乘法器 148
12.1 补码乘法器 148
12.2 Booth乘法器 150
12.3 华莱士树 154
12.4 本章小结 158
习题 158
第13章 指令流水线 159
13.1 单周期处理器 159
13.2 流水线处理器 161
13.3 指令相关和流水线冲突 164
13.4 提高流水线效率的技术 168
13.4.1 多发射数据通路 169
13.4.2 动态调度 169
13.4.3 转移预测 173
13.4.4 Cache 174
13.5 本章小结 175
习题 177
第五部分 并行处理结构 180
第14章 并行编程基础 180
14.1 程序的并行行为 180
14.1.1 指令级并行性 180
14.1.2 数据级并行性 181
14.1.3 任务级并行性 181
14.2 并行编程模型 181
14.2.1 单任务数据并行编程模型 182
14.2.2 多任务共享存储编程模型 182
14.2.3 多任务消息传递编程模型 182
14.2.4 共享存储与消息传递编程模型的编程复杂度 183
14.3 典型并行编程环境 186
14.3.1 数据并行SIMD编程 186
14.3.2 POSIX编程标准 187
14.3.3 OpenMP标准 189
14.3.4 消息传递编程接口 195
习题 198
第15章 多核处理结构 200
15.1 多核处理器的发展演化 200
15.2 多核处理器的访存结构 203
15.2.1 通用多核处理器的片上Cache结构 203
15.2.2 存储一致性模型 205
15.2.3 Cache一致性协议 207
15.3 多核处理器的互连结构 211
15.4 多核处理器的同步机制 216
15.5 典型多核处理器 221
15.5.1 龙芯3号多核处理器 221
15.5.2 Intel SandyBridge架构 222
15.5.3 IBM Cell处理器 224
15.5.4 NVIDIA GPU 225
15.5.5 Tile64处理器 227
习题 229
第六部分 系统评价与性能分析 232
第16章 计算机系统评价和性能分析 232
16.1 计算机系统性能评价指标 232
16.1.1 计算机系统常用性能评价指标 232
16.1.2 并行系统的性能评价指标 236
16.2 测试程序集 237
16.2.1 微基准测试程序 238
16.2.2 SPEC CPU基准测试程序 246
16.2.3 并行系统基准测试程序 251
16.2.4 其他常见的基准测试程序集 252
16.3 性能分析方法 253
16.3.1 分析建模的方法 255
16.3.2 模拟建模的方法和模拟器 256
16.3.3 性能测量的方法 258
16.4 性能测试和分析实例 270
16.4.1 动态执行指令的数目和分类 271
16.4.2 SPEC CPU基准测试程序的分值对比 273
16.4.3 动态执行指令数对比 274
16.4.4 IPC对比 276
16.4.5 分支误预测率和分支吞吐率对比 277
16.4.6 存储访问延迟对比 280
16.4.7 存储访问操作的并发性 281
16.4.8 并发操作性对比 282
习题 283
总结:什么是计算机体系结构 285
参考文献 293