第1章 计算机设计基本原理 1
1.1 简介 1
1.2 计算机的分类 3
桌面计算机 3
服务器 4
嵌入式计算机 5
1.3 计算机系统结构的定义 5
指令集系统结构 6
系统结构的其他方面:设计满足目标和功能要求的组成和硬件 8
1.4 实现技术的发展趋势 9
性能的发展趋势:带宽优于时延 10
晶体管性能与连线的规模 12
1.5 集成电路功耗的发展趋势 12
1.6 成本的发展趋势 13
时间、产量、产品化的影响 14
集成电路的成本 15
成本与价格 17
1.7 可靠性 18
1.8 测量、报告和总结计算机的性能 20
基准测试程序 20
性能评价报告 23
性能评测结果的总结 23
1.9 计算机设计的量化原则 26
采用并行性 26
局部性原理 27
关注经常性事件 27
Amdahl定律 27
处理器性能公式 29
1.10 综合:性能和性价比 32
桌面计算机和机架式系统的性能和性价比 32
事务处理服务器的性能和性价比 33
1.11 谬误和易犯的错误 35
1.12 结论 38
1.13 历史回顾和参考文献 39
1.14 范例分析及习题 39
范例分析1:芯片制作成本 39
范例分析2:计算机系统中的功耗 40
范例分析3:Web服务器中可靠性(及故障)的开销 42
范例分析4:性能 43
第2章 指令级并行及其开发 45
2.1 指令级并行:概念与挑战 45
什么是指令级并行 46
数据相关和冒险 47
2.2 支持指令级并行的基本编译技术 51
基本流水线调度和循环展开 51
循环展开和调度的小结 54
2.3 采用预测技术减小转移开销 55
静态转移预测 55
动态转移预测和转移预测缓存 56
Tournament预测器:整体局部自适应预测器 59
2.4 采用动态调度克服数据冒险 61
动态调度:概念 62
用Tomasulo方法进行动态调度 63
2.5 动态调度:举例和算法 67
Tomasulo算法:细节 69
Tomasulo算法:一个基于循环的例子 69
2.6 基于硬件的推测 72
2.7 采用多发射和静态调度技术开发指令级并行 79
基本的VLIW方法 80
2.8 采用动态调度、多发射和推测方法开发指令级并行 82
2.9 指令传送和推测的高级技术 84
提高取指令带宽 84
推测:实现问题和扩展 88
2.10 综合:Intel Pentium 4 91
Pentium 4性能分析 92
2.11 谬误和易犯的错误 97
2.12 结论 98
2.13 历史回顾和参考文献 99
2.14 范例分析及习题 99
范例分析1:探讨微系统结构技术的影响 99
范例分析2:对转移预测器建模 104
第3章 指令级并行性的限制 106
3.1 介绍 106
3.2 指令级并行性限制的研究 106
硬件模型 107
窗口大小和最大发射数的限制 108
实际转移和跳转预测的影响 110
有限寄存器的影响 112
非完美别名分析的影响 113
3.3 实际处理器中的指令级并行性限制 114
克服研究模型的限制 117
3.4 相关问题:硬件推测和软件推测 118
3.5 多线程:使用指令级并行支持线程级并行的开发 119
同时多线程:将线程级并行转换为指令级并行 120
3.6 综合:高级多发射处理器的性能和效率 124
是什么限制了多发射处理器 126
3.7 谬误和易犯的错误 127
3.8 结论 128
3.9 历史回顾和参考文献 128
3.10 范例分析及习题 128
范例分析1:相关和指令级并行 128
第4章 多处理器和线程级并行 134
4.1 简介 134
并行系统结构的分类 135
通信和存储器系统结构模型 138
并行处理遇到的挑战 138
4.2 对称式共享存储器系统结构 140
什么是多处理器的Cache一致性 140
实施一致性的基本方案 142
监听协议 143
基本实现技术 143
协议范例 144
对称式共享存储器多处理器和监听协议的局限性 148
实现监听Cache一致性 149
4.3 对称式共享存储器多处理器的性能 149
商业负载 150
商业负载的性能测试 151
多道程序和操作系统负载 155
多道程序和操作系统负载的性能 156
4.4 分布式共享存储器和基于目录的一致性 158
基于目录的Cache一致性协议:基础知识 159
目录协议范例 161
4.5 同步:基本要素 163
基本硬件原语 164
用一致性实现锁 165
4.6 存储器连贯性模型:介绍 167
程序员的视角 168
非严格连贯性模型:基本概念 168
关于连贯性模型的最后小结 169
4.7 相关问题 169
编译器优化和连贯性模型 169
在严格连贯性模型中用推测来实现时延隐藏 169
包含性及其实现 170
4.8 综合:Sun T1多处理器 171
T1的性能 171
运行SPEC基准测试程序的多核处理器的性能 175
4.9 谬误和易犯的错误 177
4.10 结论 181
4.11 历史回顾和参考文献 181
4.12 范例分析及习题 182
第5章 存储器层次结构设计 198
5.1 简介 198
5.2 11种先进的Cache性能优化方法 202
第一种优化:小而简单的Cache减少命中时间 203
第二种优化:路预测减少命中时间 204
第三种优化:踪迹Cache减少命中时间 204
第四种优化:流水线Cache访问 205
第五种优化:利用非阻塞Cache增加Cache带宽 205
第六种优化:利用多组Cache增加Cache带宽 206
第七种优化:关键字优先和提前重启动以减小缺失代价 207
第八种优化:合并写缓冲区以降低缺失代价 207
第九种优化:编译器优化以降低缺失率 209
第十种优化:指令和数据硬件预取以降低缺失代价/缺失率 211
第十一种优化:编译控制预取降低缺失代价/缺失率 212
Cache优化技术小结 214
5.3 存储器技术及性能优化 214
SRAM技术 215
DRAM技术 215
在DRAM芯片内部改善存储器性能 217
5.4 保护:虚拟存储器和虚拟机 218
通过虚拟存储器来提供保护 219
虚拟机的保护 220
虚拟机监视器的必备条件 221
虚拟机(缺乏)的指令集系统结构支持 221
虚拟机在虚拟存储器和I/O上的冲突 222
虚拟机监视器的实例:Xen虚拟机 222
5.5 相关问题:存储器层次设计 225
保护和指令集系统结构 225
预测执行和存储系统 225
I/O和Cache数据的一致性 226
5.6 综合:AMD Opteron存储器层次结构 226
Opteron存储层次结构的性能 230
5.7 谬误和易犯的错误 233
5.8 结论 238
5.9 历史回顾和参考文献 239
5.10 范例分析及习题 239
范例分析1:通过简单的硬件实现Cache性能优化 239
范例分析2:通过先进技术优化Cache性能 241
范例分析3:存储器技术及优化 242
范例分析4:虚拟机 243
范例分析5:综合:高度并行化存储系统 245
第6章 存储系统 248
6.1 简介 248
6.2 磁盘存储的高级话题 248
磁盘功耗 250
磁盘阵列的高级话题 251
6.3 实际故障的定义和实例 254
伯克利Tertiary Disk系统 255
Tandem 256
其他方面研究:操作员在可靠性中扮演的角色 257
6.4 I/O性能可靠性评测 258
吞吐率与响应时间 259
事务处理基准测试程序 260
SPEC系统级文件服务器、邮件及Web的基准测试程序 261
基准测试程序可靠性的实例 262
6.5 排队论简介 263
随机变量的泊松分布 266
6.6 相关问题 272
点到点连接和用交换机代替总线 272
块服务器与文件管理器的对比 272
异步I/O和操作系统 273
6.7 I/O系统设计与评价——互联网存储档案集群 273
互联网存储档案集群 274
互联网存储档案集群的成本、性能和可靠性评价 274
计算TB-80集群的MTTF 276
6.8 综合:NetApp FAS6000文件管理器 277
6.9 谬误和易犯的错误 278
6.10 结论 282
6.11 历史回顾和参考文献 282
6.12 范例分析及习题 282
范例分析1:解析磁盘 282
范例分析2:解析磁盘阵列 284
范例分析3:RAID重构 287
范例分析4:RAID性能的预测 289
范例分析5:I/O子系统设计 290
范例分析6:失效位 291
范例分析7:排序 294
附录A 流水线:基础和中级概念 297
附录B 指令系统原理与实例 352
附录C 存储器层次结构回顾 385
参考文献 427
索引 453