计算机组成与设计:硬件/软件接口(原书第4版)
作者 : (美)David A. Patterson;John L. Hennessy 著
译者 : 康继昌 樊晓桠 安建峰 等译
丛书名 : 计算机科学丛书
出版日期 : 2011-12-29
ISBN : 978-7-111-35305-8
定价 : 99.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 550
开本 : 16
原书名 : Computer Organization and Design, Fourth Edition
原出版社: Elsevier
属性分类: 教材
包含CD :
绝版 :
图书简介

本书是计算机组成的经典教材。全书着眼于当前计算机设计中最基本的概念,展示了软硬件间的关系,并全面介绍当代计算机系统发展的主流技术和最新成就。
同以往版本一样,本书采用MIPS处理器作为展示计算机硬件技术、汇编语言、计算机算术、流水线、存储器层次结构以及I/O等基本功能的核心。书中强调了计算机从串行到并行的最新革,在每章中都纳入了并行硬件和软件的主题,以软硬件协同设计发挥多核性能为最终目标。

图书特色

计算机组成与设计
硬件/软件接口
(原书第4版)
Computer Organization and Design
The Hardware / Software Interface Fourth Edition 
(美)David A. Patterson  John L. Hennessy 著 康继昌 樊晓桠 安建峰 等译

这本最畅销的计算机组成书籍经过全面更新,关注现今发生在计算机体系结构领域的革命性变革:从单处理器发展到多核微处理器,从串行发展到并行。与前几版一样,本书采用了MIPS处理器来展示计算机硬件技术、汇编语言、计算机算术、流水线、存储器层次结构以及I/O等基本功能。此外,本书还包括一些关于ARM和x86体系结构的介绍。

本书特色
涵盖从串行计算到并行计算的革命性变革,新增了关于并行化的一章,并且每章中还有一些强调并行硬件和软件主题的小节。
新增一个由NVIDIA的首席科学家和架构主管撰写的附录,介绍了现代GPU的出现和重要性,首次详细描述了这个针对可视计算进行了优化的高度并行化、多线程、多核的处理器。
描述一种度量多核性能的独特方法——Roofline模型,自带AMD Opteron X4、Intel Xeon 5000、Sun UltraSPARC T2和 IBM Cell的基准测试和分析。
涵盖一些关于闪存和虚拟机的新内容。
提供了大量富有启发性的练习题。
将AMD Opteron X4和Intel Nehalem作为贯穿本书的实例。
用SPEC CPU2006组件更新了所有处理器性能实例。

作者简介
David A. Patterson 加州大学伯克利分校计算机科学系教授,美国国家工程研究院院士,IEEE和ACM会士,曾因成功的启发式教育方法被IEEE授予James H. Mulligan,Jr教育奖章。他因为对RISC技术的贡献而荣获1995年IEEE技术成就奖,而在RAID技术方面的成就为他赢得了1999年IEEE Reynold Johnson信息存储奖。2000年他和John L. Hennessy分享了John von Neumann奖。

John L. Hennessy 斯坦福大学校长,IEEE和ACM会士,美国国家工程研究院院士及美国科学艺术研究院院士。Hennessy教授因为在RISC技术方面做出了突出贡献而荣获2001年的Eckert-Mauchly奖章,他也是2001年Seymour Cray计算机工程奖得主,并且和David A. Patterson分享了2000年John von Neumann奖。

图书前言

神秘是一种我们能够体验到的最美丽的东西。
  它是所有真正艺术和科学的源泉。
——阿尔伯特·爱因斯坦,《我的世界观》,1930
关于本书
  我们认为,在学习计算机科学与工程时,除了掌握计算的基本原理外,还应该了解该领域当今的最新状态。我们也感觉到,计算领域中各种读者希望有机会欣赏到计算机系统的组织范例。后者决定了计算机系统的功能、性能,甚至成功与否。
  现代计算机技术需要各种计算方面的专家,他们不仅能理解硬件,而且能理解软件。硬件和软件之间在许多层次上的相互关系,提供了理解计算基本原理的框架。无论你的主要兴趣是硬件还是软件,是计算机科学还是电气工程,计算机组成与设计中的中心思想是相同的。因而,本书着重于展示硬件与软件之间的相互关系,重点介绍概念,这是当今计算机的基础。
  最近单处理器已发展为多核微处理器,这也印证了本书自第1版就预测的这一发展前景。有些程序员忽视了这一发展趋势,他们仍希望计算机体系结构专家、编译器编写者和芯片工程师能够帮助他们,让程序不作任何改进就可以更快地运行在新型处理器上。但是,这样的时代已经过去了。为了使程序更快地运行,必须将其并行化。程序员在编程时不用考虑硬件的并行特性,这一目标要很多年才能实现。我们认为,至少在下一个十年里,大多数程序员必须理解软硬件接口,才能使程序在并行计算机上有效地运行。
  本书适合以下读者:在汇编语言或逻辑设计方面只有少许经验,需要理解基本的计算机组成的读者;具有汇编语言或逻辑设计的基础,需要学习如何设计计算机,或要进一步理解计算机系统是如何工作的读者。
  机械工业出版社已出版了本书的第3版、第4版和第5版影印书,书名为《计算机体系结构:量化研究方法》。
与本书相关的另一本书
  有些读者可能已熟悉作者的另一本书《Computer Architecture:A Quantitative Approach》。该书已广为流传,经常以作者姓名命名,称为“Hennessy and Patterson”(本书则经常被称为“Patterson and Hennessy”)。我们写该书的目的是要用坚实的工程基础和量化的性价比权衡,来描述计算机体系结构的原理。我们以商用产品为例,用测量的方法来描述实际的设计经验。我们的目标是用量化的方法而不是用描述的方法学习计算机体系结构,希望这一方法有助于培养能精确理解计算机的专业人才。
  本书的大多数读者并不一定要成为计算机体系结构的设计者。但是,未来软件设计人员对与软件系统一起工作的基本硬件技术的理解程度,将严重影响软件系统的性能和能效。因此,编译器编写者、操作系统设计者、数据库程序员,以及其他大多数软件工程师对本书提出的原理必须有充分的了解。同样,硬件设计者也必须清楚地理解他们的工作对应用软件的影响。
  所以,本书的内容远多于“Hennessy and Patterson”,而且这些内容已大量修订,以适应不同专业的读者。我们对再版“Hennessy and Patterson”时删除大量介绍性材料的效果感到满意,这使得新版与第1版内容的重叠大大降低,本书亦是如此。
第4版的修订目的
  第4版的修订目的包括:第一,描述微处理器的多核革命,全书将贯穿并行软硬件的思想;第二,梳理已有的内容以腾出篇幅介绍并行性;第三,从总体上提高教材水平;第四,更新技术内容,以反映自2004年第3版出版以来业界的新变化;第五,利用当今互联网时代的有利条件,提供了大量有用的练习题。
  在详细介绍第4版的修订目的之前,首先看下表。该表给出了本书的主要内容,并为关注硬件和关注软件的两种读者分别进行了导读。其中,第1、4、5和7章对两种读者是同样重要的。第1章更新了引言部分,增加了功耗重要性和由其引出的微处理器从单核转向多核的讨论,以及性能评价和基准测试程序的相关材料(这在第3版中是独立的一章)。第2章对于硬件读者来说很可能是复习性材料;而对于软件读者来说是重要的阅读材料,特别是想要深入学习编译器和面向对象语言的读者。它包括第3版中第3章的内容,介绍了完整的MIPS体系结构(浮点指令除外)。第3章适合对定点运算或者对浮点运算感兴趣的读者,有些人可能不需要学习第3章,可以跳过去。第4章是把第3版的两章合并起来介绍流水线处理器。其中,4.1节、4.5节和4.10节为关注软件的读者提供了流水线概述。关注硬件的读者将发现第4章提供了流水线处理器的核心技术,读者需要根据自己的专业背景,决定是否首先阅读附录C中提供的逻辑设计部分。第5章和第6章描述的存储器对关注软件的读者是极为重要的,如果时间允许,其他读者也应该尽量深入阅读。第7章介绍了多核、多处理器和集群,是业界最新的内容,每个人都应该阅读。
章/附录 节 关注软件 关注硬件
第1章 计算机概要与技术 1.1~1.9 ① ①
1.10(历史) ④ ④
第2章 指令:计算机的语言 2.1~2.14 ① ②
2.15(编译器& Java) ③
2.16~2.19 ① ②
2.20(历史) ④ ④
附录E RISC指令集体系结构 E.1~E.19 ③
第3章 计算机的算术运算3.1~3.9 ② ②
3.10(历史) ④ ④
附录C 逻辑设计基础 C.1~C.13 ②
第4章 处理器4.1(引言) ① ①
4.2(逻辑设计惯例) ①
4.3~4.4(简单实现) ② ①
4.5(流水线概述) ③ ①
4.6(流水线数据通路) ② ①
4.7~4.9(冒险、异常) ①
4.10~4.11(并行、实例) ① ①
4.12(Verilog流水线控制) ③
4.13~4.14(谬误) ① ①
4.15(历史) ④ ④
附录D 控制通路的硬件实现 D.1~D.6 ③
第5章 大容量和高速度:开发存储器层次结构 5.1~5.8 ① ①
5.9(实现cache控制器) ③
5.10~5.12 ① ①
5.13(历史) ④ ④
第6章 存储器和其他I/O主题 6.1~6.10 ① ③
6.11(网络) ③ ③
6.12~6.13 ① ③
6.14(历史) ④ ④
第7章 多核、多处理器和集群7.1~7.13 ① ①
7.14(历史) ④ ④
附录A 图形和计算GPU A.1~A.12 ③ ③
附录B 汇编器、链接器和SPIM仿真器B.1~B.12 ⑤ ⑤
  仔细阅读: ①        有时间可读:③        作为参考:⑤
  回顾或阅读:②拓展阅读: ④

  第4版修订的第一个目的是使第3版位于光盘中作为单独一章的并行性成为本书最为重要的内容,其中最为明显的例子是第7章。特别需要说明的是,第7章引入了Roofline(屋顶线)性能模型,并将之用于对4个新型多核体系结构的性能评价。评价结果表明屋顶线模型对于多核微处理器具有相当的洞察力,可以媲美于cache的3C模型。
  在明确了并行性的重要地位之后,除了在第7章专门讲述并行之外,本版在前6章中的每一章都专门开辟一节强调了并行性。
  1.6 沧海巨变:从单处理器向多处理器转变 指出功耗的限制如何迫使业界转向并行性以及并行性为什么是有益的。
  2.11 并行与指令:同步 讨论了共享变量的加锁,尤其是MIPS的Load Linked和Store Conditional指令。
  3.6 并行性和计算机算术:结合律 讨论了数值精度与浮点运算的挑战。
  4.10 并行和高级指令级并行 讨论了各种高级指令级并行(ILP),包括超标量、推测和超长指令字(VLIW)、循环展开和乱序操作(OOO),同时也对流水线深度和功耗之间的关系进行了讨论。
  5.8 并行与存储器层次结构:cache一致性 讨论了cache一致性、连贯性和侦听协议等。
  6.9 并行性与I/O:廉价磁盘冗余阵列。将RAID描述成I/O系统和高效可用的ICO系统。
  第7章总结了发展并行性的乐观理由,分析了为何本次并行性的发展应该比过去更加成功。
  令我特别高兴的是,NVIDIA的首席科学家David Kirk和首席架构师John Nickolls为本版撰写了关于图形处理器GPU的附录A。GPU是对计算机体系结构的一种新的、有趣的推动,附录A第一次对GPU进行了深入介绍。该附录基于本版的并行主题,提出了一种计算风格:允许程序员以多指令多数据(MIMD)的方式思考,然而硬件在任何可能的时候仍尽量以单指令多数据(SIMD)的风格执行。由于GPU价格便宜并且使用广泛——甚至在很多笔记本电脑中都可找到它们——并且它们的编程环境是免费可用的,所以它们提供了一个可用于许多人进行实验的并行硬件平台。
  第二个目的是梳理该书,以便为介绍并行方面的新内容留出空间。第一步是简单地使用更细致的梳理方式对前三版累积下来的所有段落从前到后进行检查,看它们是否仍有在书中存在的需要。粗略的改变是章节的合并以及主题的舍弃。Mark Hill建议舍弃书中多周期处理器的实现这部分内容,取而代之的是,在存储器层次的章节中增加有关多周期cache控制器的内容。这使得处理器可以由单独的一章而不是两章来呈现,并且有关处理器的内容通过删除得到了加强。在第3版中单独作为一章的有关性能的内容,在本版中被合并到了第1章。
  第三个目的是提升本书的教学方法。现在第1章变得更加充实,内容包括性能、集成电路、功耗,为全书奠定了基础。第2、3章原本以演进的风格进行编写,以“单细胞”的体系结构开始,并以第3章最后的完整MIPS体系结构结束。这种松散的写作风格不能很好地适应现代读者的需要。本版将所有的整型指令集归并到第2章,使第3章成为多数读者可以选读的内容,并且每节各自独立,读者不再需要阅读之前的所有节。因此,与之前版本相比,现在第2章是一个更好的参考资料。由于多周期实现会分散读者的注意力,而处理器现在变为单独的一章,所以第4章的编写效果更好。第5章新增了构建cache控制器的部分,此外,CD中新增的部分包含了该cache的Verilog代码。
  第3版配有CD,使得书的页数减少,从而降低了书的价格。而且,有兴趣的读者还可更深入地阅读其中的参考资料。但是,我们积极减少页数的同时,读者却要过于频繁地在书和CD之间来回使用。本版中将不会出现这个问题。现在,CD中有每章的拓展阅读,以及四个章节的更加深入的材料。另外,所有练习都集中在书中,在书和CD之间进行交替使用的次数应该比较少了。
  对于那些想知道为什么我们在本书中包含了CD的读者,答案也很简单:CD中包含了那些我们觉得无论读者在哪里都应该很容易并且即刻可以获得的内容。如果你对更进一步的内容感兴趣,或者你想复习一个VHDL教程(举例来说),它就在CD中,可供你使用。CD的另一个特点是,能极大地加强你对材料的学习:它包含了一个搜索引擎,使你可以搜索书中或CD本身的文本中的任何字符串。如果你正在寻找书的索引中没有包含的内容,你可以简单地输入你要搜索的文本和想要显示在搜索结果中的页码。这是一个非常有用的特点,我们希望当你阅读和回顾本书的时候,可以经常使用。
  这是一个快速发展的领域,并且对于本书新的版本也是同样的情况,编写新版的一个重要的目的就是更新技术内容。AMD Opteron X4模型2356(代码为Barcelona)用来运行书中第1、4、5和7章的示例。第1、6章增加了SPEC中新的功耗测试程序的结果。第2章增加了ARM体系结构的部分,ARM是当前世界上最流行的32位指令集体系结构。第5章新增了一部分内容介绍虚拟机,其重要性再次呈现出来。第5章对Opteron X4多核的cache性能测量进行了详细的描述,以及对其竞争对手Intel Nehalem(将在本版书出版之后进行发布)的性能测量进行了一些细节描述。第6章第一次描述了Flash存储器,同时也对Sun公司的卓越的小型服务器进行了描述,它包含由8个核、16个DIMM和8个碟片组成的1Ubit的磁盘。第6章还描述了关于长期磁盘失效的最新研究结果。第7章涵盖了有关并行的大量话题,包括多线程、SIMD、向量、GPU、性能模型、测试程序和多处理器网络,并描述了Opteron X4额外的3个多核处理器:Intel Xeon模型e5345(Clovertown)、IBM Cell模型OS20和Sun微系统T2模型5120(Niagara 2)。
  最后的目的是,在这个网络时代,尽量使习题对教师有用,因为布置家庭作业一直是学习资料的一个重要方式。然而,几乎是在本书出现的同时,习题答案就会立刻被贴出。对此,我们采取两种方式。首先,专家撰稿人一直在努力为书中的每一章编写全新的习题。第二,大多数习题都有一个含有多种可供替换的量化参数的表格,这些参数用于回答该问题,这种方式为练习题提供了量化描述支持。对指导教师如何选择布置练习而言,绝对的数量加上灵活性使得学生很难在线找到与习题对应的答案。指导教师还可以按照自己的意愿改变这些量化参数,有效阻止那些依赖互联网寻找固定不变的习题集答案的学生。我们认为这种新方法是对本书有价值的补充,无论你是学生还是教师,请让我们知道对于你来说它的效果如何。
  我们保留了以往版本中有用的书本元素。为使本书更好地作为参考书,我们还在新术语第一次出现的页的页脚放置了定义。书中标题为“理解程序性能”部分的内容用于帮助读者理解他们的程序性能,以及如何进行提高,就像书中“硬件/软件接口”部分会帮助读者理解有关接口的权衡问题一样。“宏观图”部分仍然存在,以使读者看到整个“森林”而不是每一棵“树”。“小测验”部分通过在每章的最后提供答案,帮助读者在第一时间加强他们对内容的理解。本版同样提供了MIPS参考数据,这是从IBM System/360得到的灵感,并对可去掉的数据进行了更新,在编写MIPS汇编语言程序时,应该是一个方便的参考。
教学支持
  我们已收集了大量材料供教师授课使用,包括题解、各章测验、本书的图表、讲义注解和幻灯片等,都可从出版商处获得。如需更多信息,请访问以下网址:
textbooks.elsevier.com/9780123744937
结语
  从下面的致谢中,你会知道我们花费了大量精力去修改本书的错误。由于本书印刷了多次,因此我们有机会做更多的校正。如果你发现有遗留的错误,请通过电子邮件与出版社联系:cod4bugs@mkp.com。
本版标志了Hennessy 和Patterson自1989年以来长期合作的中止。由于要管理一所世界知名大学,Hennessy校长将不能继续实质性地承担新版本的编写工作。留下的作者感觉像个总是和伙伴一起演出的演员,突然被推到戏台上独自表演。所以,在致谢名单中列出的人和Berkeley的同行们在撰写本书的过程中甚至起了更大的作用。
第4版致谢
  感谢David Kirk、John Nickolls和他们在NVIDIA的同事们(Michael Garland、John Montrym、Doug Voorhies、Lars Nyland、Erik Lindholm、Paulius Micikevicius、Massimiliano Fatica、Stuart Oberman和Vasily Volkov)提供了第一个深入介绍GPU的附录A。再次感谢Microsoft Research的Jim Larus贡献了他在汇编语言方面的专长,并欢迎本书读者使用他开发并维护的仿真器。
  也要感谢许多专家的贡献,他们为新版编写了大量新的练习题。写出好的练习题并不是一件容易的任务,在此感谢每位贡献者长期而艰苦地开发具有挑战性并吸引人的题目:
  第1章:Javier Bruguera(Universidade de Santiago de Compostela)
  第2章:John Oliver(Cal Poly,San Luis Obispo)、Nicole Kaiyan(University of Adelaide)和Milos Prvulovic(Georgia Tech)
  第3章:Matthew Farrens(University of California,Davis)
  第4章:Milos Prvulovic(Georgia Tech)
  第5章:Jichuan Chang、Jacob Leverich、Kevin Lim和Partha Ranganathan(均来自Hewlett-Packard),以及Nicole Kaiyan(University of Adelaide)
  第6章:Perry Alexander(University of Kansas)
  第7章:David Kaeli(Northeastern University)
  感谢Peter Ashenden编辑和评价了所有的新习题,并完成本书的CD和新的幻灯片的制作。
  感谢普林斯顿大学的David August和Prakash Prabhu提供了每章测验题。
  感谢硅谷的同行们提供了大量新的技术数据:
  AMD——Opteron X4(Barcelona)的详细数据和测量数据:William Brantley、Vasileios Liaskovitis、Chuck Moore和Brian Waldecker。
  Intel——在Intel Nehalem上的预报信息:Faye Briggs。
  Micron——第6章中闪存的背景信息:Dean Klein。
  Sun Microsystems——第2章中SPEC2006基准测试程序的混合指令测量和第6章中Sun Server x4150的详细数据和测量数据:Yan Fisher、John Fowler、Darryl Gove、Paul Joyce、Shenik Mehta、Pierre Reynes、Dimitry Stuve、Durgam Vahia和David Weaver。
  U.C.Berkeley——Krste Asanovic(在第7章中提供了软件并发与硬件并行的思想),James Demmel和Velvel Kahan(有关并行性和浮点计算的注释),Zhangxi Tan(在第5章中设计了cache控制器及其Verilog程序),Sam Williams(在第7章中提供了屋顶线模型及其多核测量结果的数据),以及我在Par Lab中的所有同事,他们对全书的并行性主题给出了大量的建议和回馈。
  感谢许多教师的贡献,他们回答出版商的问卷调查,评审我们的提议,出席小组会议,对第4版计划进行分析和回答。他们是中心组:Mark Hill (Wisconsin大学,Madison),E.J.Kim(Texas A&M 大学),Jihong Kim(Seoul National 大学),Lu Peng(Louisiana 州立大学),Dean Tullsen(UC San Diego),Ken Vollmar(Missouri 州立大学),David Wood(Wisconsin大学,Madison),Ki Hwan Yum(Texas大学,San Antonio),以及评审:Mahmoud Abou-Nasr(Wayne 州立大学),Perry Alexander(Kansas大学),Hakan Aydin(George Mason 大学),Hussein Badr(New York州立大学 at Stony Brook),Mac Baker(Virginia Military Institute),Ron Barne(George Mason 大学),Douglas Blough(Georgia Institute of Technology),Kevin Bolding(Seattle Pacific 大学),Miodrag Bolic(Ottawa大学),John Bonomo (Westminster College),Jeff Braun (Montana Tech),Tom Briggs (Shippensburg 大学),Scott Burgess (Humboldt州立大学),Fazli Can(Bilkent 大学),Warren R.Carithers (Rochester Institute of Technology),Bruce Carlton (Mesa Community College),Nicholas Carter (Illinois大学at Urbana-Champaign),Anthony Cocchi (City 大学 of New York),Don Cooley (Utah 州立大学),Robert D.Cupper (Allegheny College),Edward W.Davis (North Carolina 州立大学),Nathaniel J.Davis (Air Force Institute of Technology),Molisa Derk (Oklahoma City 大学),Derek Eager (Saskatchewan大学),Ernest Ferguson (Northwest Missouri 州立大学),Rhonda Kay Gaede( Alabama大学),Etienne M.Gagnon(UQAM),Costa Gerousis (Christopher Newport 大学),Paul Gillard (Memorial 大学 of Newfoundland),Michael Goldweber (Xavier 大学),Georgia Grant (College of San Mateo),Merrill Hall(The Master’s College),Tyson Hall (Southern Adventist大学),Ed Harcourt (Lawrence大学),Justin E.Harlow (South Florida大学),Paul F.Hemler (Hempden-Sydney College),Martin Herbordt (Boston大学),Steve J.Hodges (Cabrillo College),Kenneth Hopkinson (Cornell 大学),Dalton Hunkins (St.Bonaventure 大学),Baback Izadi (州立大学 of New York—New Paltz),Reza Jafari,Robert W.Johnson (Colorado Technical 大学),Bharat Joshi (North Carolina大学,Charlotte),Nargarajan Kandasamy (Drexel 大学),Rajiv Kapadia,Ryan Kastner (California大学,Santa Barbara),Jim Kirk(Union 大学),Geoffrey S.Knauth (Lycoming College),Manish M.Kochhal (Wayne 州立大学),Suzan Koknar-Tezel (Saint Joseph’s大学),Angkul Kongmunvattana (Columbus 州立大学),April Kontostathis (Ursinus College),Christos Kozyrakis (Stanford 大学),Danny Krizanc (Wesleyan 大学),Ashok Kumar,S.Kumar (Texas大学),Robert N.Lea (Houston) 大学,Baoxin Li (Arizona 州立大学),Li Liao (Delaware大学),Gary Livingston (Massachusetts大学),Michael Lyle,Duoglas W.Lynn (Oregon Institute of Technology),Yashwant K.Malaiya (Colorado 州立大学),Bill Mark (Texas大学at Austin),Annanda Mondal (Claflin 大学),Alvin Moser (Seattle 大学),Walid Najjar (California大学,Riverside),Danial J.Neebel (Loras College),John Nestor (Lafayette College),Joe Oldham (Centre College),Timour Paltashev,James Parkerson (Arkansas大学),Shaunak Pawagi (SUNY at Stony Brook),Steve Pearce,Ted Pedersen (Minnesota大学),Gregory D Peterson (Tennessee大学),Dejan Raskovic (Alaska大学,Fairbanks),Brad Richards (Puget Sound大学),Roman Rozanov,Louis Rubinfield (Villanova 大学),Md Abdus Salam (Southern 大学),Augustine Samba (Kent 州立大学),Robert Schaefer(Daniel Webster College),Carolyn J.C.Schauble (Colorado 州立大学),Keith Schubert (CSU San Bernardino),William L.Schultz,Kelly Shaw (Richmond大学),Shahram Shirani (McMaster 大学),Scott Sigman (Drury 大学),Bruce Smith,David Smith,Jeff W.Smith (Georgia大学,Athens),Philip Snyder (Johns Hopkins 大学),Alex Sprintson (Texas A&M),Timothy D.Stanley (Brigham Young 大学),Dean Stevens (Morningside College),Norza Tabrizi (Kettering 大学),Yuval Tamir (UCLA),Alexander Taubin (Boston 大学),Will Thacker (Winthrop 大学),Mithuna Thottethodi (Purdue 大学),Manghui Tu (Southern Utah 大学),Rama Viswanathan (Beloit College),Guoping Wang (Indiana-Purdue 大学),Patricia Wenner (Bucknell大学),Kent Wilken (California大学,Davis),David Wolfe (Gustavus Adolphus College),David Wood (Wisconsin大学,Madison),Mohamed Zahran (City College of New York),Gerald D.Zarnett (Ryerson 大学),Nian Zhang (South Dakota School of Mines & Technology),Jiling Zhong (Troy 大学),Huiyang Zhou (Central Florida大学),Weiyu Zhu (Illinois Wesleyan 大学)。
  特别感谢Berkeley大学的相关人士,他们为本版最具挑战性的内容(第7章和附录A)提供了大量回馈信息。他们是Krste Asanovic、Christopher Batten、Rastilav Bodik、Bryan Catanzaro、Jike Chong、Kaushik Data、Greg Giebling、Anik Jain、Jae Lee、Vasily Volkov和Samuel Williams。
  感谢Mark Smotherman一遍又一遍地反复寻找本书中的技术错误和写作错误,显著改进了这一版的写作质量。鉴于本版像是个人演出,他所发挥的作用就更为重要了。
  感谢Morgan Kaufmann公司的Denise Penrose同意再次出版本书。Nathaniel McFadden是本版的策划编辑,每周都与我讨论本书内容。Kimberlee Honjo负责组织用户调查和回馈。
  感谢Dawnmarie Simpson管理本书的出版过程,同时感谢对本版做出贡献的许多自由职业者,特别是Multiscience出版社的Alan Rose和diacriTech公司,为本书完成了排版。
  以上提到的近200名人士为本版提供了大量帮助,使之成为我所希望的最好的书。

David A.Patterson

上架指导

计算机\硬件

封底文字

这本最畅销的计算机组成书籍经过全面更新,关注现今发生在计算机体系结构领域的革命性变革:从单处理器发展到多核微处理器,从串行发展到并行。与前几版一样,本书采用了MIPS处理器来展示计算机硬件技术、汇编语言、计算机算术、流水线、存储器层次结构以及I/O等基本功能。此外,本书还包括一些关于ARM和x86体系结构的介绍。
本书特色:
 涵盖从串行计算到并行计算的革命性变革,新增了关于并行化的一章,并且每章中还有一些强调并行硬件和软件主题的小节。
 新增一个由NVIDIA的首席科学家和架构主管撰写的附录,介绍了现代GPU的出现和重要性,首次详细描述了这个针对可视计算进行了优化的高度并行化、多线程、多核的处理器。
 描述一种度量多核性能的独特方法——Roofline model模型,自带AMD Opteron X4、Intel Xeon 5000、Sun UltraSPARC T2和 IBM Cell的基准测试和分析。
 涵盖一些关于闪存和虚拟机的新内容。
 提供了大量富有启发性的练习题。
 将AMD Opteron X4和Intel Nehalem作为贯穿本书的实例。
 用SPEC CPU2006组件更新了所有处理器性能实例。

作者简介

(美)David A. Patterson;John L. Hennessy 著:David A. Patterson 加州大学伯克利分校计算机科学系教授,美国国家工程研究院院士,IEEE和ACM会士,曾因成功的启发式教育方法被IEEE授予James H. Mulligan,Jr教育奖章。他因为对RISC技术的贡献而荣获1995年IEEE技术成就奖,而在RAID技术方面的成就为他赢得了1999年IEEE Reynold Johnson信息存储奖。2000年他和John L. Hennessy分享了John von Neumann奖。 John L. Hennessy 斯坦福大学校长,IEEE和ACM会士,美国国家工程研究院院士及美国科学艺术研究院院士。Hennessy教授因为在RISC技术方面做出了突出贡献而荣获2001年的Eckert-Mauchly奖章,他也是2001年Seymour Cray计算机工程奖得主,并且和David A. Patterson分享了2000年John von Neumann奖。 加作者照片 加《计算机组成与设计:硬件/软件接口(英文版·第4版·ARM版)》小封面 ISBN 978-7-111-30288-9 定价:95.00元 加作者简介及照片

译者简介

康继昌 樊晓桠 安建峰 等译:暂无简介

译者序

David A.Patterson和John L.Hennessy是目前国际知名院校计算机专业领域的双巨擘。他们合著的《Computer Organization and Design:The Hardware/Software Interface》又发行了第4版。该书是他们对计算机组织研究和实践的全面而系统的总结。目前,世界上很多大学的计算机原理课程都采用这本教材,国内也有不少大学采用这本教材。
  我们认为第4版最主要的特点是强调了计算机从串行到并行的最新变革。本版在每章中都强调了并行硬件和软件的主题,以软硬件协同设计发挥多核性能为最终目标。本版特别描述了一种评测多核性能的Roofline模型,使用SPEC 2006程序集更新了所有处理器的性能评测结果。此外,本版还首次描述了面向可视计算优化的高度多线程多处理器GPU。
  感谢清华大学郑纬民教授对前三版中译本所做的工作,是他使得这本重要教材在国内有了广泛的读者。
除封面署名之外,西北工业大学计算机学院的史莉雯、姚涛、任向隆、郑乔石、韩立敏等也参加了本书的翻译和校对工作。由于译者水平有限,文中肯定存在一些翻译不当或理解欠妥的地方,希望读者批评指正。

康继昌
2011年10月于西北工业大学

图书目录

出版者的话
译者序
前言
第1章 计算机概要与技术1
 1.1 引言1
  1.1.1 计算应用的分类及其特性2
  1.1.2 你能从本书学到什么3
 1.2 程序概念入门4
 1.3 硬件概念入门7
  1.3.1 剖析鼠标8
  1.3.2 显示器8
  1.3.3 打开机箱9
  1.3.4 数据安全12
  1.3.5 与其他计算机通信13
  1.3.6 处理器和存储器制造技术14
 1.4 性能15
  1.4.1 性能的定义15
  1.4.2 性能的测量17
  1.4.3 CPU性能及其因素18
  1.4.4 指令的性能19
  1.4.5 经典的CPU性能公式19
 1.5 功耗墙21
 1.6 沧海巨变:从单处理器向多处理器转变23
 1.7 实例:制造以及AMD Opteron X4基准25
  1.7.1 SPEC CPU基准测试程序27
  1.7.2 SPEC功耗基准测试程序28
 1.8 谬误与陷阱29
 1.9 本章小结31
 1.10 拓展阅读32
 1.11 练习题32
第2章 指令:计算机的语言42
 2.1 引言42
 2.2 计算机硬件的操作43
 2.3 计算机硬件的操作数46
  2.3.1 存储器操作数47
  2.3.2 常数或立即数操作数49
 2.4 有符号和无符号数50
 2.5 计算机中指令的表示54
 2.6 逻辑操作59
 2.7 决策指令61
  2.7.1 循环62
  2.7.2 case/switch语句64
 2.8 计算机硬件对过程的支持65
  2.8.1 使用更多的寄存器66
  2.8.2 嵌套过程68
  2.8.3 在栈中为新数据分配空间69
  2.8.4 在堆中为新数据分配空间70
 2.9 人机交互72
 2.10 MIPS中32位立即数和地址的寻址75
  2.10.1 32位立即数75
  2.10.2 分支和跳转中的寻址76
  2.10.3 MIPS寻址模式总结78
  2.10.4 机器语言解码79
 2.11 并行与指令:同步81
 2.12 翻译并执行程序83
  2.12.1 编译器84
  2.12.2 汇编器84
  2.12.3 链接器85
  2.12.4 加载器87
  2.12.5 动态链接库87
  2.12.6 启动一个Java程序88
 2.13 以一个C排序程序为例89
  2.13.1 swap过程89
  2.13.2 sort过程90
 2.14 数组与指针95
  2.14.1 用数组实现clear96
  2.14.2 用指针实现clear96
  2.14.3 比较两个版本的clear97
 2.15 高级内容:编译C语言和解释Java语言98
 2.16 实例:ARM指令集98
  2.16.1 寻址模式99
  2.16.2 比较和条件分支100
  2.16.3 ARM的特色100
 2.17 实例:x86指令集101
  2.17.1 Intel x86的改进101
  2.17.2 x86寄存器和数据寻址模式103
  2.17.3 x86整数操作104
  2.17.4 x86指令编码106
  2.17.5 x86总结107
 2.18 谬误与陷阱107
 2.19 本章小结108
 2.20 拓展阅读110
 2.21 练习题110
第3章 计算机的算术运算135
 3.1 引言135
 3.2 加法和减法135
  3.2.1 多媒体算术运算137
  3.2.2 小结138
 3.3 乘法139
  3.3.1 顺序的乘法算法和硬件139
  3.3.2 有符号乘法141
  3.3.3 更快速的乘法142
  3.3.4 MIPS中的乘法142
  3.3.5 小结142
 3.4 除法143
  3.4.1 除法算法及其硬件结构143
  3.4.2 有符号除法145
  3.4.3 更快速的除法146
  3.4.4 MIPS中的除法146
  3.4.5 小结147
 3.5 浮点运算148
  3.5.1 浮点表示149
  3.5.2 浮点加法152
  3.5.3 浮点乘法154
  3.5.4 MIPS中的浮点指令157
  3.5.5 算术精确性162
  3.5.6 小结164
 3.6 并行性和计算机算术:结合律165
 3.7 实例:x86的浮点165
  3.7.1 x86浮点体系结构166
  3.7.2 Intel SIMD流扩展2(SSE2)浮点体系结构167
 3.8 谬误与陷阱168
 3.9 本章小结170
 3.10 拓展阅读172
 3.11 练习题173
第4章 处理器182
 4.1 引言182
  4.1.1 一个基本的MIPS实现183
  4.1.2 实现方式概述183
 4.2 逻辑设计惯例185
 4.3 建立数据通路187
 4.4 一个简单的实现机制192
  4.4.1 ALU控制192
  4.4.2 主控制单元的设计194
  4.4.3 数据通路的操作197
  4.4.4 控制的结束199
  4.4.5 为什么不使用单周期实现方式201
 4.5 流水线概述202
  4.5.1 面向流水线的指令集设计205
  4.5.2 流水线冒险205
  4.5.3 对流水线概述的小结210
 4.6 流水线数据通路及其控制211
  4.6.1 图形化表示的流水线219
  4.6.2 流水线控制222
 4.7 数据冒险:转发与阻塞225
 4.8 控制冒险234
  4.8.1 假定分支不发生234
  4.8.2 缩短分支的延迟235
  4.8.3 动态分支预测237
  4.8.4 流水线小结239
 4.9 异常240
  4.9.1 异常在MIPS体系结构中的处理241
  4.9.2 在流水线实现中的异常242
 4.10 并行和高级指令级并行245
  4.10.1 推测的概念246
  4.10.2 静态多发射处理器247
  4.10.3 动态多发射处理器250
 4.11 实例:AMD Opteron X4(Barcelona)流水线253
 4.12 高级主题:通过硬件设计语言描述和建模流水线来介绍数字设计以及更多流水线示例255
 4.13 谬误与陷阱255
 4.14 本章小结256
 4.15 拓展阅读257
 4.16 练习题257
第5章 大容量和高速度:开发存储器层次结构280
 5.1 引言280
 5.2 cache的基本原理283
  5.2.1 cache访问285
  5.2.2 cache缺失处理288
  5.2.3 写操作处理289
  5.2.4 一个cache的例子:内置FastMATH处理器290
  5.2.5 设计支持cache的存储系统292
  5.2.6 小结294
 5.3 cache性能的评估和改进295
  5.3.1 通过更灵活地放置块来减少cache缺失297
  5.3.2 在cache中查找一个块300
  5.3.3 替换块的选择302
  5.3.4 使用多级cache结构减少缺失代价302
  5.3.5 小结305
 5.4 虚拟存储器305
  5.4.1 页的存放和查找308
  5.4.2 缺页309
  5.4.3 关于写312
  5.4.4 加快地址转换:TLB312
  5.4.5 集成虚拟存储器、TLB和cache315
  5.4.6 虚拟存储器中的保护317
  5.4.7 处理TLB缺失和缺页318
  5.4.8 小结322
 5.5 存储器层次结构的一般架构323
  5.5.1 问题1:一个块可以被放在何处323
  5.5.2 问题2:如何找到一个块324
  5.5.3 问题3:当cache缺失时替换哪一块325
  5.5.4 问题4:写操作如何处理325
  5.5.5 3C:一种理解存储器层次结构行为的直观模型326
 5.6 虚拟机328
  5.6.1 虚拟机监视器的必备条件329
  5.6.2 指令集系统结构(缺乏)对虚拟机的支持329
  5.6.3 保护和指令集系统结构329
 5.7 使用有限状态机来控制简单的cache330
  5.7.1 一个简单的cache330
  5.7.2 有限状态机331
  5.7.3 一个简单的cache控制器的有限状态机333
 5.8 并行与存储器层次结构:cache一致性334
  5.8.1 实现一致性的基本方案335
  5.8.2 监听协议335
 5.9 高级内容:实现cache控制器336
 5.10 实例:AMD Opteron X4(Barcelona)和Intel Nehalem的存储器层次结构337
  5.10.1 Nehalem和Opteron的存储器层次结构337
  5.10.2 减少缺失代价的技术339
 5.11 谬误和陷阱340
 5.12 本章小结342
 5.13 拓展阅读343
 5.14 练习题343
第6章 存储器和其他I/O主题355
 6.1 引言355
 6.2 可信度、可靠性和可用性357
 6.3 磁盘存储器359
 6.4 快闪式存储器362
 6.5 连接处理器、内存以及I/O设备363
  6.5.1 互联基础364
  6.5.2 x86处理器的I/O互联365
 6.6 为处理器、内存和操作系统提供I/O设备接口366
  6.6.1 给I/O设备发送指令367
  6.6.2 与处理器通信368
  6.6.3 中断优先级369
  6.6.4 在设备与内存之间传输数据370
  6.6.5 直接存储器访问和内存系统371
 6.7 I/O性能度量:磁盘和文件系统的例子372
  6.7.1 事务处理I/O基准程序372
  6.7.2 文件系统和Web I/O的基准程序373
 6.8 设计I/O系统373
 6.9 并行性与I/O:廉价磁盘冗余阵列374
  6.9.1 无冗余(RAID 0)376
  6.9.2 镜像(RAID 1)376
  6.9.3 错误检测和纠错码(RAID 2)376
  6.9.4 位交叉奇偶校验(RAID 3)376
  6.9.5 块交叉奇偶校验(RAID 4)376
  6.9.6 分布式块交叉奇偶校验(RAID 5)377
  6.9.7 P+Q冗余(RAID 6)378
  6.9.8 RAID小结378
 6.10 实例:Sun Fire x4150服务器379
 6.11 高级主题:网络383
 6.12 谬误与陷阱383
 6.13 本章小结386
 6.14 拓展阅读387
 6.15 练习题387
第7章 多核、多处理器和集群394
 7.1 引言394
 7.2 创建并行处理程序的难点396
 7.3 共享存储多处理器398
 7.4 集群和其他消息传递多处理器400
 7.5 硬件多线程403
 7.6 SISD、MIMD、SIMD、SPMD和向量机404
  7.6.1 在x86中的SIMD:多媒体扩展405
  7.6.2 向量机406
  7.6.3 向量与标量的对比407
  7.6.4 向量与多媒体扩展的对比408
 7.7 图形处理单元简介408
  7.7.1 NVIDIA GPU体系结构简介410
  7.7.2 深入理解GPU411
 7.8 多处理器网络拓扑简介412
 7.9 多处理器基准测试程序415
 7.10 Roofline:一个简单的性能模型417
  7.10.1 Roofline模型418
  7.10.2 两代Opteron的比较419
 7.11 实例:使用屋顶线模型评估四种多核处理器422
  7.11.1 4个多核系统422
  7.11.2 稀疏矩阵424
  7.11.3 结构化网格425
  7.11.4 生产率426
 7.12 谬误与陷阱427
 7.13 本章小结428
 7.14 拓展阅读429
 7.15 练习题429
附录A 图形和计算GPU439
 A.1 引言439
  A.1.1 GPU发展简史439
  A.1.2 异构系统440
  A.1.3 GPU发展成了可扩展的并行处理器440
  A.1.4 为什么使用CUDA和GPU计算440
  A.1.5 GPU统一了图形和计算441
  A.1.6 GPU可视化计算的应用441
 A.2 GPU系统架构441
  A.2.1 异构CPU-GPU系统架构442
  A.2.2 GPU接口和驱动443
  A.2.3 图形逻辑流水线443
  A.2.4 将图形流水线映射到统一的GPU处理器443
  A.2.5 基本的统一GPU结构444
 A.3 可编程GPU445
  A.3.1 为实时图形编程446
  A.3.2 逻辑图形流水线446
  A.3.3 图形渲染程序447
  A.3.4 像素渲染示例447
  A.3.5 并行计算应用编程448
  A.3.6 使用CUDA进行可扩展并行编程449
  A.3.7 一些限制453
  A.3.8 体系结构隐含的问题453
 A.4 多线程的多处理器架构454
  A.4.1 大规模多线程454
  A.4.2 多处理器体系结构455
  A.4.3 单指令多线程(SIMT)456
  A.4.4 SIMT warp执行和分支457
  A.4.5 管理线程和线程块457
  A.4.6 线程指令458
  A.4.7 指令集架构(ISA)458
  A.4.8 流处理器(SP)461
  A.4.9 特殊功能单元(SFU)461
  A.4.10 与其他多处理器的比较461
  A.4.11 多线程多处理器总结462
 A.5 并行存储系统462
  A.5.1 DRAM的考虑462
  A.5.2 cache463
  A.5.3 MMU463
  A.5.4 存储器空间463
  A.5.5 全局存储器463
  A.5.6 共享存储器464
  A.5.7 局部存储器464
  A.5.8 常量存储器464
  A.5.9 纹理存储器464
  A.5.10 表面465
  A.5.11 load/store访问465
  A.5.12 ROP465
 A.6 浮点算术465
  A.6.1 支持的格式465
  A.6.2 基本算术465
  A.6.3 专用算术466
  A.6.4 性能467
  A.6.5 双精度467
 A.7 资料:NVIDIA GeForce 8800468
  A.7.1 流处理器阵列(SPA)468
  A.7.2 纹理/处理器簇(TPC)469
  A.7.3 流多处理器(SM)470
  A.7.4 指令集471
  A.7.5 流处理器(SP)471
  A.7.6 特殊功能单元(SFU)471
  A.7.7 光栅化471
  A.7.8 光栅操作处理器(ROP)和存储系统471
  A.7.9 可扩展性472
  A.7.10 性能472
  A.7.11 密集线性代数性能472
  A.7.12 FFT性能473
  A.7.13 排序性能474
 A.8 资料:将应用映射到GPU474
  A.8.1 稀疏矩阵475
  A.8.2 在共享存储器中进行缓存477
  A.8.3 扫描和归约478
  A.8.4 基数排序480
  A.8.5 GPU上的N-Body应用482
 A.9 谬误与陷阱486
 A.10 小结489
 A.11 拓展阅读489
附录B 汇编器、链接器和SPIM仿真器490
 B.1 引言490
  B.1.1 什么时候使用汇编语言493
  B.1.2 汇编语言的缺点493
 B.2 汇编器494
  B.2.1 目标文件的格式495
  B.2.2 附加工具496
 B.3 链接器498
 B.4 加载499
 B.5 内存的使用499
 B.6 过程调用规范500
  B.6.1 过程调用502
  B.6.2 过程调用举例503
  B.6.3 另外一个过程调用的例子505
 B.7 异常和中断507
 B.8 输入和输出509
 B.9 SPIM511
 B.10 MIPS R2000汇编语言513
  B.10.1 寻址方式514
  B.10.2 汇编语法515
  B.10.3 MIPS指令编码515
  B.10.4 指令格式516
  B.10.5 常数操作指令520
  B.10.6 比较指令520
  B.10.7 分支指令521
  B.10.8 跳转指令523
  B.10.9 陷阱指令523
  B.10.10 取数指令525
  B.10.11 保存指令526
  B.10.12 数据传送指令527
  B.10.13 浮点运算指令528
  B.10.14 异常和中断指令532
 B.11 小结533
 B.12 参考文献533
 B.13 练习题533

参考读物推荐
作者: 华诚科技 编著
作者: 华诚科技 编著
作者: [美]帕拉格·K. 拉拉(Parag K. Lala) 著
作者: 华诚科技 编著