内容简介
《计算机体系结构:量化研究方法(第5版)》堪称计算机系统结构学科的“圣经”,是计算机设计领域学生和从业者的必读经典。在计算机体系结构的变革时期,作者在这一版中深入介绍了两项新内容:新平台(个人移动设备和仓库级计算机)以及新体系结构(多核和GPU),同时还秉承了前几版的做法,希望通过探讨如何在成本、性能、能耗之间实现平衡,并重点关注一些优秀的工程设计实践,从而揭去计算机体系结构的神秘面纱。
《计算机体系结构:量化研究方法(第5版)》特色:
每章中的“融会贯通”小节关注了业界的各种新技术,包括ARM Cortex-A8、Intel Core i7、NVIDIA GTX-280和GTX-480 GPU,以及谷歌仓库级计算机。
· 每章最后的“案例研究和练习”由业内和学术界的专家编撰而成,主要探讨该章的关键概念。
· “附录”中收录了正文内容所依赖的基本原则。
经常书评
“《计算机体系结构:量化研究方法(第5版)》继续发扬传统,为学习计算机体系结构的学生提供了当前计算平台的信息,使他们能够洞悉体系结构,便于设计未来系统。这一版的亮点在于大幅修订了数据级并行那一章,用传统的体系结构术语清晰地解读了GPU体系结构。”
——Krste Asanovi·,加州大学伯克利分校
“《计算机体系结构:量化研究方法》是一部经典,犹如美酒,历久而弥醇。我在本科毕业时一次购买了本书,它到现在仍然是我经常参考的书籍之一。第4版问世时,我发现其中包含了如此之多的新材料,为了跟上这一领域的趋势,我必须得再买一本。而当审阅第5版时,我发现Hennessy和Patterson再现神奇。全书内容都进行了大量更新,对于希望真正理解云和仓库级计算的人们来说,单凭第6章的内容,这个新版本就值得一读。只有Hennessy和Patterson才可能接触到谷歌、微软等云计算与互联网规模的应用提供商的内部人士,对这一重要领域,业内的介绍材料无出其右。”
——James Hamilton
“Hennessy和Patterson撰写本书的第一版时,研究生们是在用50 000个晶体管组装计算机。今天,仓库级的计算机集群会包含50 000个服务器,每个服务器中包含数十个处理器和数十亿个晶体管。计算机体系结构一直在不停地快速发展,而《计算机体系结构:量化研究方法》紧跟它的步伐,每个版本都准确地解释和分析了这一领域激动人心的重要思想。”
——James Larus,微软研究院
“这一版新增加了一章非常丰富的内容,用来讨论向量、SIMD和GPU体系结构中的数据级并行技术。它解释了应用于大众市场的GPU内部的关键体系结构概念,给出这些概念与传统术语的对应关系,并与向量和SIMD体系结构进行了对比。这一内容非常及时,与业内转向GPU并行计算的潮流相适应。《计算机体系结构:量化研究方法》继续独领风骚,全面地介绍了体系结构方面的重大新进展!”
——John Nickolls,NVIDIA
“本书已经成为一本经典教科书了,这一版突出介绍了各种显式并行技术(数据、线程、请求)的兴起,各用整整一章来描述。数据并行一章尤为夺目:通过向量SIMD、指令级SIMD和GPU的对比,避开每种体系结构的专用术语,揭示了这些体系结构之间的相似与区别。”
——Kunle Olukotun,斯坦福大学
“《计算机体系结构:量化研究方法(第5版)》探讨了各种并行概念和它们各自的技术权衡。和过去的几个版本一样,这一新版本中同样涵盖了技术发展趋势。两个重点是个人移动设备(PMD)和仓库级计算(WSC)的爆炸性增长——与原来一味追求性能相比,这里的焦点已经转为更全面地寻求性能与能效之间的平衡。这些趋势刺激了人们不断追求更强劲的处理能力,而这种追求又推动人们在并行道路上走得更远。”
——Andrew N. Sloss,实施顾问,ARM公司 ARM System Developer’s Guide一书的作者
目录
第1章 量化设计与分析基础
1.1 引言
1.2 计算机的分类
1.2.1 个人移动设备
1.2.2 桌面计算
1.2.3 服务器
1.2.4 集群/仓库级计算机
1.2.5 嵌入式计算机
1.2.6 并行度与并行体系结构的分类
1.3 计算机体系结构的定义
1.3.1 指令集体系结构:计算机体系结构的近距离审视
1.3.2 真正的计算机体系结构:设计满足目标和功能需求的组成和硬件
1.4 技术趋势
1.4.1 性能趋势:带宽胜过延迟
1.4.2 晶体管性能与连线的发展
1.5 集成电路中的功率和能耗趋势
1.5.1 功率和能耗:系统观点
1.5.2 微处理器内部的能耗和功率
1.6 成本趋势
1.6.1 时间、产量和大众化的影响
1.6.2 集成电路的成本
1.6.3 成本与价格
1.6.4 制造成本与运行成本
1.7 可信任度
1.8 性能的测量、报告和汇总
1.8.1 基准测试
1.8.2 报告性能测试结果
1.8.3 性能结果汇总
1.9 计算机设计的量化原理
1.9.1 充分利用并行
1.9.2 局域性原理
1.9.3 重点关注常见情形
1.9.4 Amdahl定律
1.9.5 处理器性能公式
1.10 融会贯通:性能、价格和功耗
1.11 谬论与易犯错误
1.12 结语
1.13 历史回顾与参考文献
第2章 存储器层次结构设计
2.1 引言
2.2 缓存性能的10种高级优化方法
2.2.1 第一种优化:小而简单的第一级缓存,用以缩短命中时间、降低功率
2.2.2 第二种优化:采用路预测以缩短命中时间
2.2.3 第三种优化:实现缓存访问的流水化,以提高缓存带宽
2.2.4 第四种优化:采用无阻塞缓存,以提高缓存带宽
2.2.5 第五种优化:采用多种缓存以提高缓存带宽
2.2.6 第六种优化:关键字优先和提前重启动以降低缺失代价
2.2.7 第七种优化:合并写缓冲区以降低缺失代价
2.2.8 第八种优化:采用编译器优化以降低缺失率
2.2.9 第九种优化:对指令和数据进行硬件预取,以降低缺失代价或缺失率
2.2.10 第十种优化:用编译器控制预取,以降低缺失代价或缺失率
2.2.11 缓存优化小结
2.3 存储器技术与优化
2.3.1 SRAM技术
2.3.2 DRAM技术
2.3.3 提高DRAM芯片内部的存储器性能
2.3.4 降低SDRAM中的功耗
2.3.5 闪存
2.3.6 提高存储器系统的可靠性
2.4 保护:虚拟存储器和虚拟机
2.4.1 通过虚拟存储器提供保护
2.4.2 通过虚拟机提供保护
2.4.3 对虚拟机监视器的要求
2.4.4 虚拟机(缺少)的指令集体系结构支持
2.4.5 虚拟机对虚拟存储器和I/O的影响
2.4.6 VMM实例:Xen虚拟机
2.5 交叉问题:存储器层次结构的设计
2.5.1 保护和指令集体系结构
2.5.2 缓存数据的一致性
2.6 融会贯通:ARM Cortex-A8和Intel Core i7中的存储器层次结构
2.6.1 ARM Cortex-A8
2.6.2 Intel Core i7
2.7 谬论与易犯错误
2.8 结语:展望
2.9 历史回顾与参考文献
第3章 指令级并行及其开发
3.1 指令级并行:概念与挑战
3.1.1 什么是指令级并行
3.1.2 数据相关与冒险
3.1.3 控制相关
3.2 揭示ILP的基本编译器技术
3.2.1 基本流水线调度和循环展开
3.2.2 循环展开与调度小结
3.3 用高级分支预测降低分支成本
3.3.1 竞赛预测器:局部预测器与全局预测器的自适应联合
3.3.2 Intel Core i7分支预测器
3.4 用动态调度克服数据冒险
3.4.1 动态调度:思想
3.4.2 使用Tomasulo算法进行动态调度
3.5 动态调度:示例和算法
3.5.1 Tomasulo算法:细节
3.5.2 Tomasulo算法:基于循环的示例
3.6 基于硬件的推测
3.7 以多发射和静态调度来开发ILP
3.8 以动态调度、多发射和推测来开发ILP
3.9 用于指令传送和推测的高级技术
3.9.1 提高指令提取带宽
3.9.2 推测:实现问题与扩展
3.10 ILP局限性的研究
3.10.1 硬件模型
3.10.2 可实现处理器上ILP的局限性
3.10.3 超越本研究的局限
3.11 交叉问题:ILP方法与存储器系统
3.11.1 硬件推测与软件推测
3.11.2 推测执行与存储器系统
3.12 多线程:开发线程级并行提高单处理器吞吐量
3.12.1 细粒度多线程在Sun T1上的效果
3.12.2 同时多线程在超标量处理器上的效果
3.13 融会贯通:Intel Core i7和ARMCortex-A8
3.13.1 ARM Cortex-A8
3.13.2 Intel Core i7
3.14 谬论与易犯错误
3.15 结语:前路何方
3.16 历史回顾与参考文献
前言/序言
本书的目的
本书到现在已经是第5个版本了,我们的目标一直没有改变,就是要阐述那些为未来技术发展奠定基础的基本原理。计算机体系结构的各种发展机遇总是让我们激情澎湃,不曾有丝毫消退。我们在第1版中就作出过如下的论述:“这个学科不是令人昏昏欲睡、百无一用的纸版模型。绝对不是!这是一个受到人们热切关注的学科,需要在市场竞争力与成本·性能·能耗之间作好权衡,从事这个学科既可能导致可怕的失败,也可能带来显赫的成功。”
在编写第1版时,我们的主要目的是希望改变人们原来学习和研究计算机体系结构的方式。现今,我们感到这一目标依然正确,依然重要。该领域日新月异,在对其进行研究时,必须采用真实计算机上的测量数据和真实示例,而不是去研究一大堆从来都不需要实现的定义和设计。我们不仅热烈欢迎过去与我们结伴而行的老读者,同样也非常欢迎现在刚刚加入我们的新朋友。不管怎样,我们都保证将采用同样的量化方法对真实系统进行分析。
和前几版一样,在编写这个新版本时,我们力争使其既适用于学习高级计算机体系结构与设计课程的学生,也适用于专业的工程师和架构师。与第1版类似,这个版本重点介绍新平台(个人移动设备和仓库级计算机)和新体系结构(多核和GPU)。这一版还秉承了前几版的做法,希望能够通过强调成本、性能、能耗之间的平衡和优秀的工程设计,揭去计算机体系结构的神秘面纱。我们相信这一领域正在日趋成熟,发展成为一门具备严格量化基础的经典理工学科。
关于第5版
我们曾经说过,第4版可能因为转向讨论多核芯片而成为自第1版以来的最重要版本。但我们收到了这样的反馈意见:第4版已经失去了第1版重点突出的优点,它一视同仁地讨论所有内容,不分重点和场合。我们非常确信,第5版不会再有这样的评价了。
我们相信,最令人激动的地方在于计算规模的两个极端:以移动电话和平板电脑之类的个人移动设备(PMD)为客户端,以提供云计算的仓库级计算机为服务器。(具有敏锐观察力的读者可能已经看出本书封面上云计算的寓意。)尽管这两个极端的规模大小不同,但它们在成本、性能和能效方面的共同主题给我们留下了深刻印象。因此,每一章的讨论背景都是PMD和仓库级计算机的计算,第6章是全新的一章,专门讨论仓库级计算机。
本书的另一条主线是讨论并行的所有不同形式。我们首先在第1章指出了两种应用级别的并行,一个是数据级并行(DLP),它的出现是因为有许多数据项允许同时对其进行操作;另一个是任务级并行(TLP),它的出现是因为创建了一些可以独立执行并在很大程度上并行的工作任务。随后解释4种开发DLP和TLP的体系结构样式,分别是:第3章介绍的指令级并行(ILP),第4章介绍的向量体系结构和图形处理器(GPU),这一章是第5版新增加的内容;第5章介绍的线程级并行;第6章通过仓库级计算机介绍的需求级并行(RLP),这一章也是第5版中新增加的。本书中,我们将存储器层次结构的内容提前到第2章,并将存储系统那一章改作附录D。我们对第4章、第6章的内容尤为感到自豪,第4章对GPU的解读是目前最详尽、最清晰的,第6章首次公布了Google仓库级计算机的最新细节。
与前几版相同,本书前三个附录提供了有关MIPS指令集系统、存储器层次结构和流水线的基础知识,如果读者没有读过《计算机组成与设计》之类的书籍,可用作参考。为了在降低成本的同时还能提供一些读者感兴趣的补充材料,我们在网络上提供了另外9个附录,网址为:http://booksite.mkp.com/9780123838728。这些附录的页数之和比本书还要多呢!
这一版继续发扬“以真实示例演示概念”的传统,并增加了全新的“融会贯通”部分。这一版中的“融会贯通”内容包括以下各服务器的流水线组成与存储器层次结构:ARM Cortex A8处理器、Intel core i7处理器、NVIDIA GTX-280和GTX-480 GPU,还有Google仓库级计算机。
主题的选择与组织
和以前一样,我们在选择主题时采用了一种保守的方法,毕竟这个领域中值得讨论的思想实在太多了,不可能在这样一本主要讨论基本原理的书中将其全部涵盖在内。我们没有面面倶到地分析读者可能遇到的所有体系结构,而是将重点放在那些在任何新计算机中都可能涉及的核心概念上。根据一贯坚持的选材标准,本书讨论的思想都经过深入研究并已被成功应用,其内容足以采用量化方法进行讨论。
我们一直重点关注的内容都是无法从其他来源获取的同类资料,因此我们将继续尽可能讨论比较高级的内容。事实上,本书介绍的有些系统,就无法在文献中找到相关描述。如果读者需要了解更为基础的计算机体系结构知识,可以阅读《计算机组成与设计:硬件/软件接口》(Computer Organization and Design: The Hardware/Software Interface)一书。
内容概述
这一版对第1章进行了补充,其中包括能耗、静态功率、动态功率、集成