具体描述
《计算机体系结构:量化研究方法(第5版)》是最权威的计算机体系结构著作,是久负盛名的经典作品。书中系统地介绍了计算机系统的设计基础、指令集系统结构、流水线和指令集并行技术、层次化存储系统与存储设备、互连网络以及多处理器系统等重要内容。在这个最新版中,作者增加了当前炙手可热的云计算和手机客户端技术等相关内容,探讨了在手机、平板电脑、笔记本电脑和其他移动计算设备上云计算的软硬件实现方式。
作者简介
John L. Hennessy 斯坦福大学校长,IEEE和ACM会士,美国国家工程研究院院士及美国科学艺术研究院院士。Hennessy教授因为在RISC技术方面做出了突出贡献而荣获2001年的Eckert-Mauchly奖章,他也是2001年Seymour Cray计算机工程奖得主,并且和David A.Patterson分享了2000年约翰 · 冯 · 诺依曼奖。
David A. Patterson 加州大学伯克利分校计算机科学系教授,美国国家工程研究院院士,IEEE和ACM会士。他因为对RISC技术的贡献而荣获1995年IEEE技术成就奖,而在RAID技术方面的成就为他赢得了1999年IEEE Reynold Johnson信息存储奖。2000年他和John L. Hennessy分享了约翰 · 冯 · 诺依曼奖。
目录信息
第1章 量化设计与分析基础 1
1.1 引言 2
1.2 计算机的分类 4
1.2.1 个人移动设备 5
1.2.2 桌面计算 5
1.2.3 服务器 6
1.2.4 集群/仓库级计算机 6
1.2.5 嵌入式计算机 7
1.2.6 并行度与并行体系结构的分类 7
1.3 计算机体系结构的定义 8
1.3.1 指令集体系结构:计算机体系结构的近距离审视 9
1.3.2 真正的计算机体系结构:设计满足目标和功能需求的组成和硬件 12
1.4 技术趋势 13
1.4.1 性能趋势:带宽胜过延迟 15
1.4.2 晶体管性能与连线的发展 17
1.5 集成电路中的功率和能耗趋势 17
1.5.1 功率和能耗:系统观点 17
1.5.2 微处理器内部的能耗和功率 18
1.6 成本趋势 21
1.6.1 时间、产量和大众化的影响 21
1.6.2 集成电路的成本 22
1.6.3 成本与价格 26
1.6.4 制造成本与运行成本 26
1.7 可信任度 26
1.8 性能的测量、报告和汇总 28
1.8.1 基准测试 29
1.8.2 报告性能测试结果 32
1.8.3 性能结果汇总 33
1.9 计算机设计的量化原理 34
1.9.1 充分利用并行 35
1.9.2 局域性原理 35
1.9.3 重点关注常见情形 35
1.9.4 Amdahl定律 36
1.9.5 处理器性能公式 38
1.10 融会贯通:性能、价格和功耗 40
1.11 谬论与易犯错误 42
1.12 结语 46
1.13 历史回顾与参考文献 47
第2章 存储器层次结构设计 53
2.1 引言 54
2.2 缓存性能的10种高级优化方法 59
2.2.1 第一种优化:小而简单的第一级缓存,用以缩短命中时间、降低功率 59
2.2.2 第二种优化:采用路预测以缩短命中时间 61
2.2.3 第三种优化:实现缓存访问的流水化,以提高缓存带宽 61
2.2.4 第四种优化:采用无阻塞缓存,以提高缓存带宽 62
2.2.5 第五种优化:采用多种缓存以提高缓存带宽 64
2.2.6 第六种优化:关键字优先和提前重启动以降低缺失代价 64
2.2.7 第七种优化:合并写缓冲区以降低缺失代价 65
2.2.8 第八种优化:采用编译器优化以降低缺失率 66
2.2.9 第九种优化:对指令和数据进行硬件预取,以降低缺失代价或缺失率 68
2.2.10 第十种优化:用编译器控制预取,以降低缺失代价或缺失率 69
2.2.11 缓存优化小结 72
2.3 存储器技术与优化 72
2.3.1 SRAM技术 73
2.3.2 DRAM技术 73
2.3.3 提高DRAM芯片内部的存储器性能 75
2.3.4 降低SDRAM中的功耗 77
2.3.5 闪存 77
2.3.6 提高存储器系统的可靠性 78
2.4 保护:虚拟存储器和虚拟机 79
2.4.1 通过虚拟存储器提供保护 79
2.4.2 通过虚拟机提供保护 81
2.4.3 对虚拟机监视器的要求 82
2.4.4 虚拟机(缺少)的指令集体系结构支持 82
2.4.5 虚拟机对虚拟存储器和I/O的影响 83
2.4.6 VMM实例:Xen虚拟机 84
2.5 交叉问题:存储器层次结构的设计 84
2.5.1 保护和指令集体系结构 84
2.5.2 缓存数据的一致性 85
2.6 融会贯通:ARM Cortex-A8和Intel Core i7中的存储器层次结构 85
2.6.1 ARM Cortex-A8 86
2.6.2 Intel Core i7 89
2.7 谬论与易犯错误 95
2.8 结语:展望 98
2.9 历史回顾与参考文献 99
第3章 指令级并行及其开发 109
3.1 指令级并行:概念与挑战 110
3.1.1 什么是指令级并行 111
3.1.2 数据相关与冒险 111
3.1.3 控制相关 114
3.2 揭示ILP的基本编译器技术 116
3.2.1 基本流水线调度和循环展开 116
3.2.2 循环展开与调度小结 119
3.3 用高级分支预测降低分支成本 120
3.3.1 竞赛预测器:局部预测器与全局预测器的自适应联合 122
3.3.2 Intel Core i7分支预测器 123
3.4 用动态调度克服数据冒险 124
3.4.1 动态调度:思想 124
3.4.2 使用Tomasulo算法进行动态调度 126
3.5 动态调度:示例和算法 130
3.5.1 Tomasulo算法:细节 132
3.5.2 Tomasulo算法:基于循环的示例 133
3.6 基于硬件的推测 135
3.7 以多发射和静态调度来开发ILP 143
3.8 以动态调度、多发射和推测来开发ILP 146
3.9 用于指令传送和推测的高级技术 150
3.9.1 提高指令提取带宽 150
3.9.2 推测:实现问题与扩展 155
3.10 ILP局限性的研究 158
3.10.1 硬件模型 158
3.10.2 可实现处理器上ILP的局限性 160
3.10.3 超越本研究的局限 163
3.11 交叉问题:ILP方法与存储器系统 164
3.11.1 硬件推测与软件推测 164
3.11.2 推测执行与存储器系统 165
3.12 多线程:开发线程级并行提高单处理器吞吐量 165
3.12.1 细粒度多线程在Sun T1上的效果 168
3.12.2 同时多线程在超标量处理器上的效果 170
3.13 融会贯通:Intel Core i7和ARMCortex-A8 173
3.13.1 ARM Cortex-A8 173
3.13.2 Intel Core i7 176
3.14 谬论与易犯错误 179
3.15 结语:前路何方 182
3.16 历史回顾与参考文献 183
第4章 向量、SIMD和GPU体系结构中的数据级并行 193
4.1 引言 194
4.2 向量体系结构 195
4.2.1 VMIPS 196
4.2.2 向量处理器如何工作:一个示例 198
4.2.3 向量执行时间 199
4.2.4 多条车道:每个时钟周期超过一个元素 201
4.2.5 向量长度寄存器:处理不等于64的循环 203
4.2.6 向量遮罩寄存器:处理向量循环中的IF语句 204
4.2.7 内存组:为向量载入/存储单元提供带宽 205
4.2.8 步幅:处理向量体系结构中的多维数组 206
4.2.9 集中—分散:在向量体系结构中处理稀疏矩阵 207
4.2.10 向量体系结构编程 208
4.3 SIMD指令集多媒体扩展 209
4.3.1 多媒体SIMD体系结构编程 212
4.3.2 Roofline可视性能模型 212
4.4 图形处理器 214
4.4.1 GPU编程 214
4.4.2 NVIDIA GPU计算结构 216
4.4.3 NVIDA GPU指令集体系结构 222
4.4.4 GPU中的条件分支 224
4.4.5 NVIDIA GPU存储器结构 226
4.4.6 Fermi GPU体系结构中的创新 228
4.4.7 向量体系结构与GPU的相似与不同 230
4.4.8 多媒体SIMD计算机与GPU之间的相似与不同 233
4.4.9 小结 233
4.5 检测与增强循环强并行 235
4.5.1 查找相关 238
4.5.2 消除相关计算 240
4.6 交叉问题 240
4.6.1 能耗与DLP:慢而宽与快而窄 240
4.6.2 分组存储器和图形存储器 241
4.6.3 步幅访问和TLB缺失 241
4.7 融会贯通:移动与服务器GPU、Tesla与Core i7 241
4.8 谬论与易犯错误 247
4.9 结语 248
4.10 历史回顾与参考文献 250
第5章 线程级并行 256
5.1 引言 257
5.1.1 多处理器体系结构:问题与方法 258
5.1.2 并行处理的挑战 260
5.2 集中式共享存储器体系结构 262
5.2.1 什么是多处理器缓存一致性 263
5.2.2 一致性的基本实现方案 264
5.2.3 监听一致性协议 265
5.2.4 基本实现技术 265
5.2.5 示例协议 267
5.2.6 基本一致性协议的扩展 270
5.2.7 对称共享存储器多处理器与监听协议的局限性 271
5.2.8 实施监听缓存一致性 272
5.3 对称共享存储器多处理器的性能 273
5.3.1 商业工作负载 274
5.3.2 商业工作负载的性能测量 275
5.3.3 多重编程和操作系统工作负载 279
5.3.4 多重编程和操作系统工作负载的性能 280
5.4 分布式共享存储器和目录式一致性 282
5.4.1 目录式缓存一致性协议:基础知识 283
5.4.2 目录式协议举例 285
5.5 同步:基础知识 288
5.5.1 基本硬件原语 288
5.5.2 使用一致性实现锁 289
5.6 存储器连贯性模型:简介 291
5.6.1 程序员的观点 292
5.6.2 宽松连贯性模型:基础知识 293
5.6.3 关于连贯性模型的最后说明 293
5.7 交叉问题 294
5.7.1 编译器优化与连贯性模型 294
5.7.2 利用推测来隐藏严格连贯性模型中的延迟 294
5.7.3 包含性及其实现 295
5.7.4 利用多重处理和多线程的性能增益 295
5.8 融会贯通:多核处理器及其性能 297
5.9 谬论与易犯错误 301
5.10 结语 304
5.11 历史回顾与参考文献 306
第6章 以仓库级计算机开发请求级、数据级并行 319
6.1 引言 320
6.2 仓库级计算机的编程模型与工作负载 323
6.3 仓库级计算机的计算机体系结构 327
6.3.1 存储 328
6.3.2 阵列交换机 328
6.3.3 WSC存储器层次结构 329
6.4 仓库级计算机的物理基础设施与成本 331
6.4.1 测量WSC的效率 334
6.4.2 WSC的成本 335
6.5 云计算:公用计算的回报 338
6.6 交叉问题 342
6.6.1 成为瓶颈的WSC网络 342
6.6.2 在服务器内部高效利用能量 343
6.7 融会贯通:Google仓库级计算机 344
6.7.1 集装箱 344
6.7.2 Google WSC中的冷却与供电 346
6.7.3 Google WSC中的服务器 348
6.7.4 Google WSC中的联网 348
6.7.5 Google WSC的监控与修复 349
6.7.6 小结 349
6.8 谬论与易犯错误 350
6.9 结语 353
6.10 历史回顾与参考文献 354
附录A 指令集基本原理 365
A.1 引言 366
A.2 指令集体系结构的分类 366
A.3 存储器寻址 369
A.4 操作数的类型与大小 374
A.5 指令集中的操作 375
A.6 控制流指令 376
A.7 指令集编码 380
A.8 交叉问题:编译器的角色 382
A.9 融会贯通:MIPS体系结构 388
A.10 谬论和易犯错误 396
A.11 结语 399
A.12 历史回顾与参考文献 400
附录B 存储器层次结构回顾 405
B.1 引言 406
B.2 缓存性能 416
B.3 6种基本的缓存优化 421
B.4 虚拟存储器 435
B.5 虚拟存储器的保护与示例 441
B.6 谬论与易犯错误 447
B.7 结语 448
B.8 历史回顾与参考文献 449
附录C 流水线:基础与中级概念 454
C.1 引言 455
C.2 流水化的主要阻碍——流水线冒险 461
C.3 如何实现流水化 476
C.4 妨碍流水线实现的难题 485
C.5 扩展MIPS流水线,以处理多周期操作 490
C.6 融会贯通:MIPS R4000流水线 498
C.7 交叉问题 504
C.8 谬论与易犯错误 511
C.9 结语 512
C.10 历史回顾与参考文献 512
参考文献 518
索引 543
· · · · · · (收起)
读后感
翻译太差,汉字是认识,但句子没逻辑,很多翻译 是错的。还得看原版,浪费时间,教授们没时间自己翻译,都是研究生做的。书绝对是经典,一定要买原版,不要看翻译,太坑了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...
每一个搞计算机的必读之一,如果想让你的程序运行的快,那么你就读完这本书。 这本书会让你真正的理解什么是cache, cache并不是对程序员是透明的,在编程的时候是需要考虑到的。 这本书需要读至少两遍才能真正体会其中的奥秘。 这本书是我们公司人手必读的一本书之一。
本书总的来说还是比较高级的内容,对内存模型,缓存结构方式的概念原理等都略过不讲。专心讲 quantitative 的部分。如果对体系结构不熟悉,应该先读 <Computer Organization and Design > 或者 <Computer Systems: A Programmer's Perspective>。 本书最大的特点就是...
“《计算机体系结构:量化研究方法》(第5版)继续发扬传统,为学习计算机体系结构的学生提供了有关当前计算平台的最新信息,使他们能够洞悉体系结构,为设计未来系统提供帮助。这一新版本的亮点在于大幅修订了数据级并行章节,用传统的计算机体系结构术语进行了清晰的解读,褪...
用户评价
毫无疑问,这本《计算机体系结构》是一本真正能够启发思想的书。作者在讲解CPU的性能指标,如时钟频率、CPI(Cycles Per Instruction)、IPC(Instructions Per Cycle)时,不仅给出了定义,更重要的是解释了这些指标是如何相互关联,以及如何通过设计来优化它们。书中对性能评估和基准测试的讨论,为我提供了一种科学的方法来衡量计算机系统的能力。我特别喜欢作者在讨论指令流水线中的冲突,如结构冲突、数据冲突和控制冲突时,所提供的解决策略。这些策略,如通过流水线重排、延迟槽、分支预测等,不仅提升了效率,也展现了工程师的智慧。这本书让我意识到,计算机体系结构的每一个设计决策,都是在权衡各种因素,追求最佳的性能、功耗和成本。它培养了我对计算机系统深层运作机制的好奇心,并促使我不断思考,如何才能设计出更高效、更智能的计算机。
这本书的价值在于其能够将一个看似枯燥的技术主题,转化为一次引人入胜的探索之旅。作者在讲解内存系统中,对各种缓存级别(L1, L2, L3)的作用、关联方式(直接映射、组相联、全相联)以及写策略(写回、写通)的详细解释,让我对数据访问的速度和效率有了全新的认识。我尤其受益于书中对内存访问模式对性能影响的分析,这使得我能够更好地优化我的程序,以充分利用缓存,减少等待时间。此外,书中对IO子系统的阐述,包括PCIe总线、USB接口以及各种网络接口卡的原理,也为我提供了一个全面的视角,了解数据是如何从外部世界进入计算机并被处理的。它不仅仅是停留在理论层面,更提供了很多实际的应用场景和设计考量,让我能够将所学知识应用于解决实际问题。
要说最令我印象深刻的,莫过于这本书对不同计算机架构演变历程的梳理。作者在讲解早期计算机的设计思想,以及如何逐步发展到现代的超标量、乱序执行、多核架构时,那种历史的厚重感和技术的迭代感,让我对计算机科学的发展脉络有了更深的理解。书中对存储技术,如DRAM、SRAM、NAND Flash等原理的介绍,以及它们在计算机体系结构中的作用,让我对存储器性能的瓶颈有了更直观的认识。我特别欣赏作者在解释并行计算模型时,对SIMD(Single Instruction, Multiple Data)和MIMD(Multiple Instruction, Multiple Data)的区分和应用场景的分析。这些技术对于科学计算、图形渲染等领域至关重要。这本书让我明白,计算机体系结构并非一成不变,它是一个不断进步和演化的领域,并且紧密地与软件的发展相互促进。
这本《计算机体系结构》是我近期阅读过的最令人印象深刻的计算机科学书籍之一。尽管我对这个领域并不是特别精通,但作者用一种非常清晰且引人入胜的方式,将这个通常被认为枯燥乏味的学科变得生动有趣。书中对计算机硬件底层运作机制的描述,从最基本的逻辑门电路到复杂的处理器设计,都进行了详尽的讲解。我尤其欣赏书中对于不同指令集架构(ISA)的对比分析,这让我对x86、ARM等主流架构有了更深刻的理解,也认识到它们在设计理念上的差异以及各自的优势和劣势。此外,书中对流水线技术、缓存一致性、多处理器系统等高级概念的阐述,更是让我惊叹于现代计算机的复杂性和精妙之处。作者在讲解过程中,始终注重理论与实践相结合,通过大量的图示和实例,将抽象的概念具象化,使得我在阅读过程中不会感到迷茫。即使是对于一些我初次接触的概念,也能在作者的引导下逐步理解,并能将所学知识与我日常接触的计算机应用联系起来。这本书不仅是一本技术手册,更像是一堂高质量的计算机体系结构启蒙课,让我对计算机科学有了更宏观和深入的认识,也激发了我进一步探索这个领域的兴趣。
我必须承认,在翻开这本书之前,我对“计算机体系结构”这个概念的理解非常有限,甚至有些畏惧。然而,作者的写作风格如同一次精彩的导览,将我带入了一个前所未有的知识领域。书中关于指令集设计的讨论,不仅涵盖了RISC和CISC的主要区别,还深入到指令编码、寻址模式等细节。我尤其被书中关于指令集演进的历史回顾所吸引,这让我看到了计算机技术是如何一步步发展至今的,以及每一步的关键决策是如何影响了后来的设计。对于那些令人望而生畏的术语,如TLB(Translation Lookaside Buffer)、DMA(Direct Memory Access)等,作者都给予了非常生动和易于理解的解释,并且通过类比和图示,让这些抽象的概念变得触手可及。此外,书中对虚拟化技术的探讨,让我对云计算和虚拟机的工作原理有了更清晰的认识。它让我明白,那些看起来毫不相干的技术,实际上是紧密联系,共同构成了我们今天所使用的强大计算平台。
对于任何希望深入了解计算机底层运作原理的人来说,这本《计算机体系结构》都是一本不可或缺的读物。作者在讲解存储器管理单元(MMU)和虚拟内存时,对页表、TLB以及地址翻译过程的详细描述,为我揭示了操作系统如何高效地管理内存,并为每个进程提供独立的地址空间。我特别喜欢书中关于输入输出(I/O)处理的章节,它不仅介绍了各种I/O设备的工作方式,还阐述了程序化I/O、中断驱动I/O和DMA(Direct Memory Access)的区别和应用。这让我明白,数据如何在CPU、内存和外部设备之间高效地传输。书中还对互连网络(Interconnection Networks)进行了深入的分析,包括总线、交叉开关以及网络拓扑等,这对于理解大规模并行处理系统的性能至关重要。它让我对现代计算机的每一个组成部分都有了更清晰的认识,并且能够更好地理解这些组件是如何协同工作,以提供我们所期望的计算能力。
我必须说,《计算机体系结构》这本书的深度和广度让我受益匪浅。作者在解释现代处理器如何实现指令级并行(ILP)时,从超标量、乱序执行到动态调度,都进行了详尽的阐述,让我对CPU内部的复杂工作流程有了前所未有的理解。我特别欣赏作者在讨论分支预测技术时,所给出的各种预测算法及其优缺点分析,这让我明白,即使是微小的设计优化,也可能对整体性能产生巨大的影响。书中对多处理器系统的同步和通信机制的探讨,也为我理解并行编程中的挑战提供了重要基础。它让我意识到,构建高效的并行系统,不仅仅是增加CPU核心数量那么简单,还需要精心设计通信协议和同步机制,以避免数据竞争和死锁。这本书不仅提升了我对计算机硬件的认识,更重要的是,它培养了我一种系统性的思考能力,能够从整体的角度去审视和优化任何计算系统。
在我看来,这本《计算机体系结构》是一本集严谨性、深度和广度于一身的佳作。作者在处理那些极其复杂的技术细节时,表现出了非凡的组织能力和清晰的逻辑思维。从CPU的微架构到内存管理单元(MMU)的工作原理,再到输入输出(I/O)设备如何与主系统协同工作,每一个部分都被分解成易于理解的单元,并层层递进地展开。我特别注意到作者在讲解中断处理和异常处理机制时,对事件驱动编程模型以及系统响应流程的细致描述,这对于理解操作系统的底层运作至关重要。书中对存储器层次结构(寄存器、缓存、主内存、辅助存储)的深入剖析,以及各种缓存替换策略(如LRU、FIFO)的比较,为我理解程序性能瓶颈提供了重要的视角。它不仅仅是在描述“是什么”,更是在解释“为什么”,例如为什么需要缓存,缓存的工作原理是什么,以及不同缓存策略会带来怎样的性能差异。这种深度的探究让我对计算机的整体性能优化有了全新的认识,也让我开始思考在软件开发过程中,如何更好地与底层硬件协同工作,以达到最佳效果。
这本《计算机体系结构》绝对是我近年来读过的最宝贵的书籍之一。作者在阐述诸如缓存一致性协议(MESI等)、多处理器通信和同步机制时,所展现出的清晰度和详尽程度,令人印象深刻。我特别欣赏作者对于这些复杂话题的处理方式——不回避其本质的困难,而是将其分解,并提供直观的解释。书中对IO体系结构的介绍,包括总线架构、IO设备接口标准以及中断和DMA的协同工作,为我提供了一个完整的视图,了解数据如何在计算机的不同组件之间流动。我发现,对于软件的性能优化,理解其底层的硬件行为是必不可少的。例如,作者对访存行为和缓存未命中率的分析,让我能够更有针对性地去优化我的代码,减少不必要的内存访问,从而提升程序的执行效率。这本书不仅仅是关于硬件的描述,它更是一种思维方式的培养,让我能够从更高的层面去审视和理解计算机系统的运作。
作为一名软件开发者,我一直觉得对计算机体系结构了解不足是自身的一大短板。这本书的出现,恰好填补了我在这方面的知识空白,并且以一种极其令人满意的方式。作者在讲解指令流水线和超标量处理时,那种循序渐进的讲解方式,从简单的五级流水线到更复杂的乱序执行和分支预测,都处理得恰到好处,让我能够一步步掌握这些核心概念。对于多核处理器的并行处理机制,书中也有非常深入的探讨,包括线程同步、锁机制以及内存模型等关键问题。作者并没有回避那些复杂的理论,而是用清晰的语言和巧妙的例子来解释它们。我特别喜欢书中关于功耗管理和性能功耗比(PPA)的讨论,这在如今移动计算和嵌入式系统日益普及的背景下尤为重要。它让我认识到,设计高性能的计算机系统,并不仅仅是追求极致的速度,还需要在性能、功耗和面积之间找到一个最佳的平衡点。这种全局观的视角,对于任何希望深入理解计算机技术的人来说,都极具价值。
看了第一,二,三,五,六章。从量化的角度理解计算机体系结构,更能深入的理解computer architecture. 设计优秀的指令集体系结构可以更好的指令流水线,分支预测,利于编译器编译出更优的代码等
计算机体系结构的经典书籍,深入浅出地介绍了计算机体系结构的所有演进和技术细节。
本以为是一本类似CSAPP的书,结果发现是偏硬件的
: TP303/0271-3
这本书的亮点在于作者提到了Google的服务器集群架构。。。