目 录
丛书序言
推荐序
自序
前言
第一部分 引言
第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
第二部分 指令系统结构
第2章 指令系统26
2.1 指令系统简介26
2.2 指令系统设计原则26
2.3 指令系统发展历程28
2.3.1 指令集的演变28
2.3.2 存储管理的演变29
2.3.3 运行级别的演变30
2.4 指令集结构32
2.4.1 地址空间32
2.4.2 操作数34
2.4.3 指令操作和编码35
2.5 RISC指令集比较36
2.5.1 指令格式比较36
2.5.2 寻址方式比较36
2.5.3 公共指令功能37
2.5.4 不同指令系统的特色39
2.6 C语言的机器表示40
2.6.1 过程调用40
2.6.2 流程控制语句41
2.7 本章小结43
习题44
第3章 特权指令系统45
3.1 特权指令系统简介45
3.2 异常与中断47
3.2.1 异常分类47
3.2.2 异常处理47
3.2.3 中断49
3.3 存储管理51
3.3.1 存储管理的原理51
3.3.2 TLB的结构和使用53
3.3.3 TLB异常的处理55
3.4 本章小结60
习题60
第4章 软硬件协同62
4.1 函数调用规范62
4.1.1 MIPS ABI整数寄存器约定62
4.1.2 MIPS ABI函数调用约定63
4.1.3 MIPS堆栈布局64
4.2 中断的生命周期66
4.3 系统调用过程67
4.4 同步与通信68
4.4.1 基于互斥的同步机制68
4.4.2 非阻塞的同步机制69
4.5 本章小结69
习题70X
三部分 计算机硬件结构
第5章 计算机组成原理和结构72
5.1 冯·诺依曼结构72
5.2 计算机的组成部件73
5.2.1 运算器73
5.2.2 控制器74
5.2.3 存储器76
5.2.4 输入/输出设备81
5.3 计算机系统硬件结构发展83
5.3.1 CPU-GPU-北桥-南桥四片结构84
5.3.2 CPU-北桥-南桥三片结构84
5.3.3 CPU-弱北桥-南桥三片结构85
5.3.4 CPU-南桥两片结构85
5.3.5 SoC单片结构86
5.4 处理器和IO设备间的通信86
5.4.1 IO寄存器寻址86
5.4.2 处理器和IO设备之间的同步87
5.4.3 存储器和IO设备之间的数据传送88
5.4.4 龙芯3A3000+7A1000桥片系统中的CPU、GPU、DC通信90
5.5 本章小结91
习题91
第6章 计算机总线接口技术93
6.1 总线概述93
6.2 总线分类94
6.3 片上总线95
6.4 内存总线100
6.5 系统总线107
6.5.1 HyperTransport总线107
6.5.2 HT包格式110
6.6 设备总线111
6.6.1 PCIE总线112
6.6.2 PCIE包格式113
6.7 本章小结113
习题114
第7章 计算机系统启动过程分析115
7.1 处理器核初始化115
7.1.1 处理器复位116
7.1.2 调试接口初始化117
7.1.3 TLB初始化119
7.1.4 Cache初始化120
7.2 总线接口初始化122
7.2.1 内存初始化123
7.2.2 IO总线初始化123
7.3 设备的探测及驱动加载124
7.4 多核启动过程129
7.4.1 初始化时的多核协同129
7.4.2 操作系统启动时的
多核唤醒130
7.4.3 核间同步与通信131
7.5 本章小结132
习题132
第四部分 CPU的微结构
第8章 运算器设计134
8.1 二进制与逻辑电路134
8.1.1 计算机中数的表示134
8.1.2 MOS晶体管工作原理139
8.1.3 CMOS逻辑电路141
8.2 简单运算器设计148
8.2.1 定点补码加法器148
8.2.2 减法运算实现153
8.2.3 比较运算实现153
8.2.4 移位器154
8.3 定点补码乘法器155
8.3.1 补码乘法器155
8.3.2 Booth乘法器157
8.3.3 华莱士树161
8.4 本章小结164
习题165
第9章 指令流水线167
9.1 单周期处理器167
9.2 流水线处理器169
9.3 指令相关和流水线冲突171
9.3.1 数据相关引发的冲突及解决办法172
9.3.2 控制相关引发的冲突及解决方法175
9.3.3 结构相关引发的冲突及解决办法176
9.4 流水线与异常处理176
9.5 提高流水线效率的技术177
9.5.1 多发射数据通路177
9.5.2 动态调度178
9.5.3 转移预测181
9.5.4 高速缓存183
9.6 本章小结186
习题188第五部分 并行处理结构
第10章 并行编程基础190
10.1 程序的并行行为190
10.1.1 指令级并行性190
10.1.2 数据级并行性191
10.1.3 任务级并行性191
10.2 并行编程模型191
10.2.1 单任务数据并行模型192
10.2.2 多任务共享存储编程模型192
10.2.3 多任务消息传递编程模型192
10.2.4 共享存储与消息传递编程模型的
编程复杂度193
10.3 典型并行编程环境196
10.3.1 数据并行SIMD编程196
10.3.2 POSIX编程标准197
10.3.3 OpenMP标准200
10.3.4 消息传递编程接口206
习题211
第11章 多核处理结构212
11.1 多核处理器的发展演化212]
11.2 多核处理器的访存结构215
11.2.1 通用多核处理器的片上Cache结构215
11.2.2 存储一致性模型217
11.2.3 Cache一致性协议219
11.3 多核处理器的互连结构223
11.4 多核处理器的同步机制228
11.5 典型多核处理器233
11.5.1 龙芯3号多核处理器233
11.5.2 Intel SandyBridge架构234
11.5.3 IBM Cell处理器236
11.5.4 NVIDIA GPU237
11.5.5 Tile64处理器239
习题241
第六部分 系统评价与性能分析
第12章 计算机系统评价和性能分析244
12.1 计算机系统性能评价指标244
12.1.1 计算机系统常用性能评价指标244
12.1.2 并行系统的性能评价指标248
12.2 测试程序集249
12.2.1 微基准测试程序250
12.2.2 SPEC CPU基准测试程序258
12.2.3 并行系统基准测试程序263
12.2.4 其他常见的基准测试程序集264
12.3 性能分析方法265
12.3.1 分析建模的方法267
12.3.2 模拟建模的方法和模拟器268
12.3.3 性能测量的方法270
12.4 性能测试和分析实例282
12.4.1 动态执行指令的数目和分类283
12.4.2 SPEC CPU基准测试程序的分值对比285
12.4.3 动态执行指令数对比…286
12.4.4 IPC对比288
12.4.5 分支误预测率和分支吞吐率对比289
12.4.6 存储访问延迟对比292
12.4.7 存储访问操作的并发性293
12.4.8 并发操作性对比294
习题295总结:什么是计算机体系结构297
参考文献305