计算机组成与设计:硬件/软件接口 MIPS版(原书第6版)
作者 : [美]戴维·A. 帕特森(David A. Patterson),[美]约翰·L. 亨尼斯(John L. Hennessy) 著
译者 : 王党辉 安建峰 张萌 王继禾 译
丛书名 : 计算机科学丛书
出版日期 : 2022-07-07
ISBN : 978-7-111-70886-5
适用人群 : 高等院校计算机专业学生,相关技术人员
定价 : 149.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 592
开本 : 16
原书名 : Computer Organization and Design: The Hardware/Software Interface, MIPS Edition, Sixth Edition
原出版社: Elsevier Inc.
属性分类: 教材
包含CD : 无CD
绝版 :
图书简介

本书由2017年图灵奖的两位得主撰写,是计算机体系结构领域的经典教材,每年被超过40000名学生使用。新版的主要更新是在每章中添加了关于DSA的内容,并更新了所有实例,使全书更加与时俱进,满足学生和读者的新需求。

图书特色

图灵奖得主联袂撰写,计算机体系结构新黄金时代必读之作

图书前言

神秘是我们能体验的最美好的事物,它是所有真正的艺术和科学的源泉。
—阿尔伯特·爱因斯坦,《我的信仰》,1930
关于本书
在学习计算机科学与工程时,除了掌握计算的基本原理外,还应该了解该领域的最新进展。计算领域中各个方向的读者都应学习计算机系统的组成理论,因为这是决定计算机系统的功能、性能甚至成功的关键。
要推动现代计算机技术的发展,需要对硬件和软件都有深入理解的专业人士。硬件和软件在多个层次上的相互影响成为理解计算基本原理的框架。无论你的主要兴趣是硬件还是软件,是计算机科学还是电气工程,计算机组成与设计的基本思想都是相同的。因此,本书着重展示硬件与软件的关系,并重点介绍当今计算机中的基础概念。
处理器已经由单核发展为多核,且近年来更强调领域专用体系结构,该趋势印证了本书自第1版就提出的观点。过去,程序员可以忽略这一发展趋势,并希望计算机体系结构专家、编译器设计者和芯片工程师能够帮助他们,让程序不做任何修改就可以更快、更高效地在新型处理器上运行。但是,这样的时代已经一去不复返了。我们认为,至少在下一个十年里,大多数程序员只有理解硬件/软件接口,才能编写出在现代计算机上高效运行的程序。
本书适合以下读者阅读:在汇编语言或逻辑设计方面只有少许经验,需要理解计算机组成的基本原理的读者;具有汇编语言或逻辑设计的基础,需要学习如何设计计算机,或者要进一步理解计算机系统如何工作的读者。
与本书相关的另一本书
有些读者可能已经熟悉我们的另一本书—《计算机体系结构:量化研究方法》,该书已广为流传,经常以作者姓名命名,称为“Hennessy and Patterson”(本书则常称为“Patterson and Hennessy”)。该书的目的是用坚实的工程基础和量化的性价比权衡来描述计算机体系结构的原理。该书基于商用系统,将案例与测量方法相结合,帮助读者理解实际的设计。该书的目标是通过量化分析方法讲解计算机体系结构,而不是仅仅对相关知识进行描述。因此,该书主要面向希望深入理解计算机系统的计算机专业人士。
本书的大多数读者并不一定要成为计算机体系结构的设计者。软件设计人员对系统中基本硬件技术的理解,将显著影响未来软件系统的性能和能效。因此,编译器设计者、操作系统设计者、数据库程序员以及其他大多数软件工程师对本书所述的原理都应当有充分的了解。同样,硬件设计者也必须清楚自己的工作对软件的影响。
所以,本书的内容绝不仅仅是“Hennessy and Patterson”的子集,而是进行了大量的扩展和修订,以满足不同读者的需求。我们对再版“Hennessy and Patterson”时删除大量介绍性材料的效果感到满意,与第1版相比,这两本书的内容重叠度已大大降低。
第6版的变化
相比于前5版之间的变化,自本书第5版出版至今,计算机体系结构技术和商业模式发生了更大的变化。
摩尔定律放缓:Gordon Moore预测单芯片上集成的晶体管数量每18~24个月翻一番,但是半导体加工工艺按照此趋势发展了50年之后,该预测将不再有效。虽然半导体加工工艺仍然在进步,但进步速度比以前慢了很多,且越来越不可预测。
领域专用体系结构(DSA)的出现:由于摩尔定律的放缓以及Dennard按比例缩小定律的终结,通用处理器的性能每年只有百分之几的提升。另外,Amdahl定律限制了单芯片上处理器核数目增加所能够带来的收益。2020年,DSA被公认为最有发展前途的技术。与通用处理器能够运行所有的应用程序不同,DSA能够更高效地运行特定领域的程序。
微体系结构是安全攻击的直接对象:Spectre(幽灵)能够针对“推测乱序执行”和“硬件多线程”进行时间旁路攻击。这些并不属于任何一类可被修复的bug,从而为处理器设计提出了根本性的挑战。
开放指令集和开源实现:开源软件给计算机体系结构领域带来了机遇和影响。任何组织机构都能够在不签署版权协议的情况下,使用RISC-V等开放指令集设计自己的处理器,并可以将设计实现进行开源。开源的设计实现既可被共享并自由下载,也可以作为有知识产权的RISC-V以供使用。开源软件和硬件对于大学的研究、教学很有益处,可以帮助学生理解理论知识并提升产业技术能力。
信息技术产业的再次整合(re-virticalization):云计算使得不超过6家公司便可为所有用户提供计算基础设施,与20世纪六七十年代的IBM非常类似,这些公司决定软件栈和硬件的部署。上述变化导致这些大型公司开发自己的DSA和RISC-V芯片,并将其部署到自己的云中。
本书第6版反映了这些变化,更新了所有的实例和图。针对用书教师提出的需求,我们对教学方法也做了进一步改进,这些改进的灵感来自给我的孙子辅导数学课时使用的教科书。
在详细介绍第6版的修订情况之前,首先看下表。该表给出了本书的主要内容,并为关注硬件和关注软件的两种读者分别进行了导读。
章/附录 节 关注软件 关注硬件
 第1章 计算机抽象及相关技术  1.1~1.12
 1.13(历史)
 第2章 指令:计算机的语言  2.1~2.14
 2.15(编译器和Java)  
 2.16~2.22
 2.23(历史)
 附录E 指令集体系结构综述  E.1~E.6  
 第3章 计算机的算术运算  3.1~3.5
 3.6~3.8(子字并行)
 3.9~3.10(谬误)
 3.11(历史)
 附录B 逻辑设计基础  B.1~B.13  
 第4章 处理器  4.1(引言)
 4.2(逻辑设计的一般方法)  
 4.3~4.4(简单实现)
 4.5(多周期实现)  
 4.6(流水线概述)
 4.7(流水线数据通路)
 4.8~4.10(冒险和异常)  
 4.11~4.13(并行和实例)
 4.14(Verilog流水线控制)  
 4.15~4.16(谬误)
 4.17(历史)
 附录D 将控制映射至硬件  D.1~D.6  
 第5章 大容量和高速度:开发存储器
     层次结构  5.1~5.10
 5.11(廉价冗余磁盘阵列)
 5.12(Verilog cache控制器)  
 5.13~5.16
 5.17(历史) 
 第6章 从客户端到云的并行处理器  6.1~6.9
 6.10(集群)
 6.11~6.15
 6.16(历史)
 附录A 汇编器、链接器和SPIM仿真器  A.1~A.11
 附录C 图形与计算GPU  C.1~C.11

仔细阅读   有时间则阅读   作为参考   复习或阅读   拓展阅读
现在每章都有“加速”一节。第1章中给出了实现矩阵乘法运算的Python版本,但是性能较为低下,这激发了我们对C语言的学习,第2章使用C语言重写该程序。后续章节分别采用数据级并行、指令级并行、线程级并行以及调整存储器访问以匹配现代服务器的存储层次等方法对矩阵乘法运算进行加速。我们使用的计算机支持512位SIMD操作、推测乱序执行、三级高速缓存,并包含48个处理器核。四种优化方法的实现加起来虽然只有21行C语言代码,但可以将矩阵乘法运算加速近
50 000倍,将运行时间从Python版本的接近6小时减少到优化的C语言版本的不到1秒。如果我重新当一次学生,该例子将激励我使用C语言,并学习本书中硬件概念之下的相关知识。
本书的每一章都增加了“自学”一节,在该节中会提出一些启发思考的问题,然后提供答案,以帮助读者评估自己对章节内容的掌握情况。
除了解释摩尔定律和Dennard按比例缩小定律不再持续之外,第6版中的一个重要变化就是不再强调摩尔定律。
第2章中使用更多的篇幅强调二进制数据没有实质性的含义(因为程序决定数据类型),并且这对于初学者来说不太容易理解。
为了与MIPS指令集进行比较,除了ARMv7、ARMv8和x86之外,第2章还对RISC-V进行了简要介绍。(本书的RISC-V版本也做了这样的比较,并且更新了其他相关内容。)
第1章中基准测试程序的例子从SPEC2006升级到SPEC2017。
第4章中,根据教师的需求,在MIPS的单周期实现和流水线实现之间,将多周期实现作为一节线上内容。一些教师认为使用单周期-多周期-流水线的三步教学法可使流水线更容易理解。
第4章和第5章的“实例”一节都更新为新的ARM Cortex-A53微体系结构和Intel Core i7 6700 Skylake微体系结构。
第5章和第6章的“谬误与陷阱”一节分别增加了使用Row Hammer和Spectre进行硬件安全攻击的内容。
第6章新增一节,使用Google的张量处理单元(TPU)(v1)对DSA进行介绍。第6章的“实例”一节更新为将Google的TPUv3超级计算机与NVIDIA Volta GPU集群进行比较。
最后,本书更新了所有的练习题。
在对内容进行修订的同时,第6版保留了以往版本中有用的元素。为使本书更好地作为参考书,我们仍在新术语第一次出现时给出定义供读者参考。书中标题为“理解程序性能”的部分有助于读者理解程序的性能,以及了解如何提高性能。“硬件/软件接口”部分帮助读者理解有关接口的权衡问题。“重点”部分仍然保留,以防止读者在学习过程中“只见树木而不见森林”。“小测验”及每章最后的“小测验答案”可帮助读者在第一时间强化对内容的理解。本书同样提供MIPS参考数据卡(这是从IBM System/360“绿卡”得到的灵感),并对数据进行了更新,在编写MIPS汇编语言程序时,这应该是很好的参考。
教学支持
我们收集了大量材料供使用本书的教师授课时使用,包括练习题答案、书中的图表、幻灯片等。如需更多信息,请访问https://textbooks.elsevier.com/web/manuals.aspx?isbn=9780128201091。
结束语
从下面的致谢中,读者可以发现我们花费了大量精力去修改本书的错误。由于本书印刷了多次,因此我们有机会做更多的校正。如果读者发现还有遗留的错误,请通过电子邮件与出版社联系。
本书标志着Hennessy和Patterson自1989年以来长期合作的第三次中止。由于要管理一所世界知名的大学,Hennessy校长无法继续承担新版本的实际编写工作,留下Patterson一人感觉自己像是在没有安全保护措施的情况下走钢丝。在致谢名单中列出的人和UC Berkeley(加州大学伯克利分校)的同行在本书的撰写过程中起了更大的作用。当然,如果读者对新内容不满意,抱怨的对象应该只有我一人。
致谢
在本书的每一版中,我们都非常幸运地得到了来自许多读者、评审者和其他人员的帮助。每个人的帮助都使本书更加完美。
特别感谢Rimas Avizenis博士,他开发了不同版本的矩阵乘法程序,并提供了相应的性能数据。我们对他从UC Berkeley毕业之后还长期提供帮助深表谢意。我在UCLA(加州大学洛杉矶分校)读研究生时,曾与他的父亲一起工作,能够与他一起在UC Berkeley共事是一件美好的事情。
还要感谢我的长期合作伙伴—UC Berkeley的Randy Katz。我们讲授本科生的“计算机体系结构”课程时,一起提炼出计算机体系结构的伟大思想。
感谢David Kirk、John Nickolls和他们在 NVIDIA的同事(Michael Garland、John Montrym、Doug Voorhies、Lars Nyland、Erik Lindholm、Paulius Micikevicius、Massimiliano Fatica、Stuart Oberman、Vasily Volkov),他们编写了深入介绍GPU的附录C。再次感谢Jim Larus,他现在是EPFL计算机与通信科学学院的院长,他发挥了在汇编语言方面的专长,欢迎读者使用他开发和维护的模拟器。
非常感谢Jason Bakos(University of South Carolina),他再次为本书更新了练习题。前面几版的练习题由以下人员编写:Perry Alexander(University of Kansas),Javier Bruguera(Universidade de Santiago de Compostela),Matthew Farrens(University of California, Davis),David Kaeli(Northeastern University),Nicole Kaiyan(University of Adelaide),John Oliver(Cal Poly,San Luis Obispo),Milos Prvulovic(Georgia Tech),Jichuan Chang、Jacob Leverich、Kevin Lim、Partha Ranganathan(Hewlett-Packard)。感谢Peter J. Ashenden(Ashenden Design Pty Ltd)对前面几版做出的贡献。
特别感谢Jason Bakos开发了新的幻灯片。
感谢许多教师的贡献,他们回答出版社的调查问卷,评审我们的提议,出席小组会议,并对本版以及前面版本的计划进行分析和反馈。详细名单如下。
专题小组:Bruce Barton(Suffolk County Community College),Jeff Braun(Montana Tech),Ed Gehringer(North Carolina State),Michael Goldweber(Xavier University),Ed Harcourt(St. Lawrence University),Mark Hill(University of Wisconsin,Madison),Patrick Homer(University of Arizona),Norm Jouppi(HP Labs),Dave Kaeli(Northeastern University),Christos Kozyrakis(Stanford University),Zachary Kurmas(Grand Valley State University),Jae C. Oh(Syracuse University),Lu Peng(LSU),Milos Prvulovic(Georgia Tech),Partha Ranganathan(HP Labs),David Wood(University of Wisconsin),Craig Zilles(University of Illinois at Urbana-Champaign)。
调查问卷和评审:Mahmoud Abou-Nasr(Wayne State University),Perry Alexander(The University of Kansas),Hakan Aydin(George Mason University),Hussein Badr(State University of New York at Stony Brook),Mac Baker(Virginia Military Institute),Ron Barnes(George Mason University),Douglas Blough(Georgia Institute of Technology),Kevin Bolding(Seattle Pacific University),Miodrag Bolic(University of Ottawa),John Bonomo(Westminster College),Jeff Braun(Montana Tech),Tom Briggs(Shippensburg University),Scott Burgess(Humboldt State University),Fazli Can(Bilkent University),Warren R. Carithers(Rochester Institute of Technology),Bruce Carlton(Mesa Community College),Nicholas Carter(University of Illinois at Urbana-Champaign),Anthony Cocchi(The City University of New York),Don Cooley(Utah State University),Robert D. Cupper(Allegheny College),Edward W. Davis(North Carolina State University),Nathaniel J. Davis(Air Force Institute of Technology),Molisa Derk(Oklahoma City University),Nathan B. Dodge(The University of Texas at Dallas),Derek Eager(University of Saskatchewan),Ernest Ferguson(Northwest Missouri State University),Rhonda Kay Gaede(The University of Alabama),Etienne M. Gagnon(UQAM),Costa Gerousis(Christopher Newport University),Paul Gillard(Memorial University of Newfoundland),Michael Goldweber(Xavier University),Georgia Grant(College of San Mateo),Merrill Hall(The Master’s College),Tyson Hall(Southern Adventist University),Ed Harcourt(St. Lawrence University),Justin E. Harlow(University of South Florida),Paul F. Hemler(Hampden-Sydney College),Martin Herbordt(Boston University),Steve J. Hodges(Cabrillo College),Kenneth Hopkinson(Cornell University),Dalton Hunkins(St. Bonaventure University),Baback Izadi(State University of New York—New Paltz),Reza Jafari,Robert W. Johnson(Colorado Technical University),Bharat Joshi(University of North Carolina,Charlotte),Nagarajan Kandasamy(Drexel University),Rajiv Kapadia,Ryan Kastner(University of California,Santa Barbara),E. J. Kim(Texas A&M University),Jihong Kim(Seoul National University),Jim Kirk(Union University),Geoffrey S. Knauth(Lycoming College),Manish M. Kochhal(Wayne State),Suzan Koknar-Tezel(Saint Joseph’s University),Angkul Kongmunvattana(Columbus State University),April Kontostathis(Ursinus College),Christos Kozyrakis(Stanford University),Danny Krizanc(Wesleyan University),Ashok Kumar,S. Kumar(The University of Texas),Zachary Kurmas(Grand Valley State University),Robert N. Lea(University of Houston),Baoxin Li(Arizona State University),Li Liao(University of Delaware),Gary Livingston(University of Massachusetts),Michael Lyle,Douglas W. Lynn(Oregon Institute of Technology),Yashwant K. Malaiya(Colorado State University),Bill Mark(University of Texas at Austin),Ananda Mondal(Claflin University),Euripides Montagne(University of Central Florida),Tali Moreshet(Boston University),Alvin Moser(Seattle University),Walid Najjar(University of California,Riverside),Danial J. Neebel(Loras College),John Nestor(Lafayette College),Jae C. Oh(Syracuse University),Joe Oldham(Centre College),Timour Paltashev,James Parkerson(University of Arkansas),Shaunak Pawagi(SUNY at Stony Brook),Steve Pearce,Ted Pedersen(University of Minnesota),Lu Peng(Louisiana State University),Gregory D Peterson(The University of Tennessee),Milos Prvulovic(Georgia Tech),Partha Ranganathan(HP Labs),Dejan Raskovic(University of Alaska,Fairbanks), Brad Richards(University of Puget Sound),Roman Rozanov,Louis Rubinfield(Villanova University),Md Abdus Salam(Southern University),Augustine Samba(Kent State University),Robert Schaefer(Daniel Webster College),Carolyn J. C. Schauble(Colorado State University),Keith Schubert(CSU San Bernardino),William L. Schultz,Kelly Shaw(University of Richmond),Shahram Shirani(McMaster University),Scott Sigman(Drury University),Bruce Smith,David Smith,Jeff W. Smith(University of Georgia,Athens),Mark Smotherman(Clemson University),Philip Snyder(Johns Hopkins University),Alex Sprintson(Texas A&M),Timothy D. Stanley(Brigham Young University),Dean Stevens(Morningside College),Nozar Tabrizi(Kettering University),Yuval Tamir(UCLA),Alexander Taubin(Boston University),Will Thacker(Winthrop University),Mithuna Thottethodi(Purdue University),Manghui Tu(Southern Utah University),Dean Tullsen(UC San Diego),Rama Viswanathan(Beloit College),Ken Vollmar(Missouri State University),Guoping Wang(Indiana-Purdue University),Patricia Wenner(Bucknell University),Kent Wilken(University of California,Davis),David Wolfe(Gustavus Adolphus College),David Wood(University of Wisconsin,Madison),Ki Hwan Yum(University of Texas,San Antonio),Mohamed Zahran(City College of New York),Amr Zaky(Santa Clara University),Gerald D. Zarnett(Ryerson University),Nian Zhang(South Dakota School of Mines & Technology),Xiaoyu Zhang(California State University San Marcos),Jiling Zhong(Troy University),Huiyang Zhou(The University of Central Florida),Weiyu Zhu(Illinois Wesleyan University)。
特别感谢Mark Smotherman一遍又一遍地查找本书中的技术错误和文字错误,他的工作显著改进了这一版的质量。
还要感谢Morgan Kaufmann公司同意在Steve Merken和Beth LoGiudice的领导下对本书进行再版,没有他们的工作,我不可能完成本书。我们还要感谢Beula Christopher对出版过程的管理,感谢Patrick Ferguson设计了新的封面。
以上提到的近150人为本书提供了大量帮助,使之成为我们期望的最好的书。希望读者能够喜欢本书!

上架指导

计算机\计算机组成

封底文字

随着通用处理器和专用处理器在日常生活中的广泛应用,对于下一代计算机设计者而言,理解计算机如何进行计算以及如何进行多方面的折中与优化变得尤为重要。一届又一届的学生通过本书开始了解硬件/软件接口、存储层次以及流水线等知识,进而迈入体系结构的复杂世界。
—— Mark Hempstead 塔夫茨大学
这是一本值得珍藏在书架上(或阅读软件中)的计算机体系结构教材。书中的内容既传统又新颖,不仅介绍了那些经典原理——摩尔定律、抽象、加速大概率事件、冗余性、存储层次、并行和流水线,而且结合新兴发展趋势对原理进行阐释,这些趋势既包括面向深度学习的体系结构等前景大好的方面,也包括处理器核的网络攻击等糟糕的方面。
—— Mark D. Hill 威斯康星大学麦迪逊分校
开放指令集体系结构(如RISC-V)兴起,AI、安全和虚拟化正逐步在新的处理器体系结构和应用中得以实现。本书的更新与领域的发展保持同步,在展示这些变化的同时,依然涵盖丰富的基本原理。本书定将助力新时代的软硬件设计者实现更加安全、高效的系统。
—— Dave Kaeli 美国东北大学
在计算机系统设计方面有一些传统原理,这些原理对于理解任何计算机体系结构的组织与性能都必不可少。基于这些原理并结合独特的教学方法,本书展示了计算机体系结构从单处理器到新的领域专用体系结构(DSA)的发展过程。新版使用Google的TPU超级计算机作为DNN-DSA示例,这宣告下一代计算机体系结构已登上舞台。
—— Euripides Montagne 中佛罗里达大学
多年以来,这本书一直是经典中的经典。它非常值得一读,其中关于硬件/软件接口的见解极具价值,对于关注性能及能效比提升的未来硬件工程师和软件开发者都非常有益。虽然MIPS体系结构与ARM和RISC-V很相似,但是由于MIPS相对简单,因此更加适于教学。
—— Tali Moreshet 波士顿大学

译者序

Patterson和Hennessy是计算机领域的知名学者,为计算机学科和产业的发展做出了巨大贡献。两位学者共同获得了2017年度图灵奖,以表彰他们在计算机体系结构设计和评估方面开创了一套系统的、量化的方法,该方法对微处理器行业产生了深远的影响。他们合著的Computer Organization and Design:The Hardware/Software Interface一书现已更新至第6版,对计算机组成的研究和设计实践进行了全面系统的总结。该书具有MIPS、ARM和RISC-V三个版本,无论哪个版本,都深入系统地阐述了计算机组成与设计中的不变要素,使读者能够掌握相关的基本原理和设计技术。目前,国际上许多大学都采用该书作为教材,国内采用该书作为“计算机组成原理”或“计算机组成与系统结构”等课程教材的高校也越来越多。
第6版在保留计算机组成方面传统论题并延续前5版特点的基础上,引入了许多近几年计算机领域发展中的新论题,如领域专用体系结构(DSA)、硬件安全攻击等。另外,在实例方面也与时俱进地采用新的ARM Cortex-A53微体系结构和Intel Core i7 6700 Skylake微体系结构等现代设计对计算机组成的基本原理进行说明。在关于处理器的一章中,在单周期处理器和流水线处理器之间增加了对多周期处理器的介绍,使读者更易理解流水线处理器产生的必然性。
感谢机械工业出版社华章分社一直关注本书的引进和中译本的出版工作,曲熠编辑为中译本的翻译工作提出了大量宝贵意见。
感谢清华大学郑纬民教授对前3版中译本所做的工作,是他使这本重要教材在国内有了广泛的读者。感谢西北工业大学康继昌教授、樊晓桠教授和安建峰副教授对第4版中译本所做的工作。特别感谢国防科技大学陈微老师和北京大学易江芳老师,两位老师分别翻译的ARM版和RISC-V版对本书的翻译工作起到了非常重要的参考作用。
西北工业大学计算机学院的魏天昊、申世东、杨益滔、张博、聂子铭、江嘉熙、马瑞阳、杨士欣、董玉博、杨一帆、占硕、王典、王翰墨、王玉佳、陈树炎、吴奇、吕柏璇、杨凯裕等学生参与了本书的文字校对工作。
由于译者水平有限,书中难免存在一些翻译不当或理解欠妥的地方,希望读者批评指正。

王党辉
2022年3月于西北工业大学

图书目录

译者序
前言
作者简介
第1章 计算机抽象及相关技术 1
1.1 引言 1
1.1.1 计算应用的分类及其特性 2
1.1.2 欢迎来到后PC时代 3
1.1.3 你能从本书学到什么 4
1.2 计算机体系结构的7个伟大思想 6
1.2.1 使用抽象简化设计 6
1.2.2 加速大概率事件 6
1.2.3 通过并行提高性能 6
1.2.4 通过流水线提高性能 6
1.2.5 通过预测提高性能 7
1.2.6 存储层次 7
1.2.7 通过冗余提高可靠性 7
1.3 程序表象之下 8
1.4 机箱之内的硬件 10
1.4.1 显示器 11
1.4.2 触摸屏 12
1.4.3 打开机箱 13
1.4.4 数据安全 15
1.4.5 与其他计算机通信 16
1.5 处理器和存储器制造技术 17
1.6 性能 20
1.6.1 性能的定义 21
1.6.2 性能的度量 23
1.6.3 CPU性能及其因素 24
1.6.4 指令的性能 25
1.6.5 经典的CPU性能公式 26
1.7 功耗墙 28
1.8 沧海巨变:从单处理器向多处理器转变 30
1.9 实例:Intel Core i7基准 32
1.9.1 SPEC CPU基准测试程序 32
1.9.2 SPEC功耗基准测试程序 34
1.10 加速:使用Python语言编写矩阵乘法程序 35
1.11 谬误与陷阱 36
1.12 本章小结 38
1.13 历史观点和拓展阅读 39
1.14 自学 39
1.15 练习题 42
第2章 指令:计算机的语言 46
2.1 引言 46
2.2 计算机硬件的操作 48
2.3 计算机硬件的操作数 50
2.3.1 存储器操作数 51
2.3.2 常数或立即数操作数 53
2.4 有符号数和无符号数 54
2.5 计算机中指令的表示 59
2.6 逻辑操作 65
2.7 决策指令 67
2.7.1 循环 68
2.7.2 case/switch语句 70
2.8 计算机硬件对过程的支持 71
2.8.1 使用更多寄存器 72
2.8.2 嵌套过程 74
2.8.3 在栈中为新数据分配空间 76
2.8.4 在堆中为新数据分配空间 76
2.9 人机交互 78
2.10 MIPS中32位立即数和地址的寻址 82
2.10.1 32位立即数 83
2.10.2 分支和跳转中的寻址 83
2.10.3 MIPS寻址模式总结 85
2.10.4 机器语言解码 87
2.11 并行与指令:同步 89
2.12 翻译并执行程序 91
2.12.1 编译器 91
2.12.2 汇编器 91
2.12.3 链接器 93
2.12.4 加载器 95
2.12.5 动态链接库 95
2.12.6 启动一个Java程序 97
2.13 综合实例:C排序程序 98
2.13.1 swap过程 98
2.13.2 sort过程 100
2.14 数组与指针 104
2.14.1 用数组实现clear 104
2.14.2 用指针实现clear 106
2.14.3 比较两个版本的clear 106
2.15 高级内容:编译C语言和解释Java语言 107
2.16 实例:ARMv7(32位)指令集 107
2.16.1 寻址模式 108
2.16.2 比较和条件分支 108
2.16.3 ARM的特色 109
2.17 实例:ARMv8(64位)指令集 111
2.18 实例:RISC-V指令集 112
2.19 实例:x86指令集 112
2.19.1 Intel x86的演进 112
2.19.2 x86寄存器和数据寻址模式 114
2.19.3 x86整数操作 115
2.19.4 x86指令编码 117
2.19.5 x86总结 119
2.20 加速:使用C语言编写矩阵乘法程序 119
2.21 谬误与陷阱 120
2.22 本章小结 122
2.23 历史观点和拓展阅读 124
2.24 自学 124
2.25 练习题 126
第3章 计算机的算术运算 132
3.1 引言 132
3.2 加法和减法 132
3.3 乘法 136
3.3.1 顺序的乘法算法和硬件 137
3.3.2 有符号乘法 139
3.3.3 更快速的乘法 139
3.3.4 MIPS中的乘法 140
3.3.5 小结 140
3.4 除法 140
3.4.1 除法算法和硬件 141
3.4.2 有符号除法 143
3.4.3 更快速的除法 144
3.4.4 MIPS中的除法 144
3.4.5 小结 145
3.5 浮点运算 146
3.5.1 浮点表示 147
3.5.2 浮点加法 151
3.5.3 浮点乘法 154
3.5.4 MIPS中的浮点指令 156
3.5.5 算术精确性 161
3.5.6 小结 163
3.6 并行性和计算机算术:子字并行 164
3.7 实例:x86中的流处理SIMD扩展和高级向量扩展 166
3.8 加速:子字并行和矩阵乘法 167
3.9 谬误与陷阱 168
3.10 本章小结 171
3.11 历史观点和拓展阅读 174
3.12 自学 174
3.13 练习题 176
第4章 处理器 181
4.1 引言 181
4.1.1 一个基本的MIPS实现 182
4.1.2 实现方式概述 182
4.2 逻辑设计的一般方法 184
4.3 建立数据通路 187
4.4 一个简单的实现机制 193
4.4.1 ALU控制 193
4.4.2 主控制单元的设计 195
4.4.3 为什么不使用单周期实现方式 201
4.5 多周期实现 202
4.6 流水线概述 203
4.6.1 面向流水线的指令集设计 206
4.6.2 流水线冒险 207
4.6.3 小结 212
4.7 流水线数据通路与控制 213
4.7.1 图形化表示的流水线 221
4.7.2 流水线控制 224
4.8 数据冒险:旁路与阻塞 227
4.9 控制冒险 237
4.9.1 假定分支不发生 238
4.9.2 缩短分支的延迟 238
4.9.3 动态分支预测 241
4.9.4 小结 244
4.10 异常 245
4.10.1 MIPS体系结构中的异常处理 245
4.10.2 流水线实现中的异常 246
4.11 指令级并行 249
4.11.1 推测的概念 250
4.11.2 静态多发射处理器 251
4.11.3 动态多发射处理器 255
4.11.4 能耗效率与高级流水线 258
4.12 实例:Intel Core i7 6700和ARM Cortex-A53 259
4.12.1 ARM Cortex-A53 259
4.12.2 A53流水线的性能 261
4.12.3 Intel Core i7 6700 263
4.12.4 Intel Core i7的性能 265
4.13 加速:指令级并行和矩阵乘法 266
4.14 高级主题:数字设计概述—使用硬件设计语言进行流水线建模以及更多流水线示例 268
4.15 谬误与陷阱 268
4.16 本章小结 269
4.17 历史观点和拓展阅读 269
4.18 自学 269
4.19 练习题 270
第5章 大容量和高速度:开发存储器层次结构 281
5.1 引言 281
5.2 存储器技术 285
5.2.1 SRAM技术 285
5.2.2 DRAM技术 285
5.2.3 闪存 287
5.2.4 磁盘存储器 287
5.3 cache的基本原理 289
5.3.1 cache访问 291
5.3.2 cache缺失处理 295
5.3.3 写操作处理 296
5.3.4 cache实例:Intrinsity FastMATH处理器 297
5.3.5 小结 299
5.4 cache性能的评估和改进 299
5.4.1 通过更灵活地放置块来减少cache缺失 302
5.4.2 在cache中查找块 305
5.4.3 替换块的选择 306
5.4.4 使用多级cache结构减少缺失代价 307
5.4.5 通过分块进行软件优化 309
5.4.6 小结 312
5.5 可信存储器层次 312
5.5.1 失效的定义 313
5.5.2 纠正一位错、检测两位错的汉明编码(SEC/DED) 314
5.6 虚拟机 317
5.6.1 虚拟机监视器的必备条件 318
5.6.2 指令集体系结构(缺乏)对虚拟机的支持 319
5.6.3 保护和指令集体系结构 319
5.7 虚拟存储器 320
5.7.1 页的存放和查找 323
5.7.2 缺页故障 324
5.7.3 关于写 327
5.7.4 加快地址转换:TLB 327
5.7.5 集成虚拟存储器、TLB和cache 331
5.7.6 虚拟存储器中的保护 332
5.7.7 处理TLB缺失和缺页 333
5.7.8 小结 337
5.8 存储器层次结构的一般框架 338
5.8.1 问题1:块放在何处 339
5.8.2 问题2:如何找到块 340
5.8.3 问题3:cache缺失时替换哪一块 340
5.8.4 问题4:写操作如何处理 341
5.8.5 3C:一种理解存储器层次结构行为的直观模型 342
5.9 使用有限状态机来控制简单的cache 343
5.9.1 一个简单的cache 343
5.9.2 有限状态机 344
5.9.3 一个简单cache控制器的有限状态机 346
5.10 并行与存储器层次结构:cache一致性 347
5.10.1 实现一致性的基本方案 348
5.10.2 监听协议 348
5.11 并行与存储器层次结构:廉价冗余磁盘阵列 350
5.12 高级内容:实现cache控制器 350
5.13 实例:ARM Cortex-A53和Intel Core i7的存储器层次结构 350
5.14 加速:cache分块和矩阵乘法 354
5.15 谬误与陷阱 355
5.16 本章小结 359
5.17 历史观点和拓展阅读 359
5.18 自学 359
5.19 练习题 362
第6章 从客户端到云的并行处理器 374
6.1 引言 374
6.2 创建并行处理程序的难点 376
6.3 SISD、MIMD、SIMD、SPMD和向量机 379
6.3.1 x86中的SIMD:多媒体扩展 380
6.3.2 向量机 380
6.3.3 向量与标量 382
6.3.4 向量与多媒体扩展 382
6.4 硬件多线程 385
6.5 多核和其他共享内存多处理器 387
6.6 图形处理单元 390
6.6.1 NVIDIA GPU体系结构简介 391
6.6.2 NVIDIA GPU存储结构 393
6.6.3 GPU展望 394
6.7 领域专用体系结构 396
6.8 集群、仓储级计算机和其他消息传递多处理器 398
6.9 多处理器网络拓扑简介 402
6.10 与外界通信:集群网络 404
6.11 多处理器基准测试程序和性能模型 405
6.11.1 性能模型 407
6.11.2 Roofline模型 408
6.11.3 两代Opteron的比较 409
6.12 实例:Google TPUv3超级计算机和NVIDIA Volta GPU的评测 413
6.12.1 DNN的训练和推理 413
6.12.2 DSA超级计算机网络 414
6.12.3 DSA超级计算机节点 414
6.12.4 DSA算术运算 416
6.12.5 TPUv3与Volta GPU的比较 417
6.12.6 性能 418
6.13 加速:多处理器和矩阵乘法 419
6.14 谬误与陷阱 421
6.15 本章小结 423
6.16 历史观点和拓展阅读 425
6.17 自学 425
6.18 练习题 426
附录A 汇编器、链接器和SPIM仿真器 435
附录B 逻辑设计基础 486
索引 544
网络内容
附录C 图形与计算GPU
附录D 将控制映射至硬件
附录E 指令集体系结构综述

教学资源推荐
作者: Linda Null, Julia Lobur
作者: [美]戴维·莫尼·哈里斯(David Money Harris) 哈维玛德学院,莎拉 L.哈里斯(Sarah L. Harris) 哈维玛德学院 著
作者: [美]戴维·A. 帕特森(David A. Patterson),[美]约翰·L. 亨尼斯(John L. Hennessy) 著
作者: [美]玛里琳·沃尔夫(Marilyn Wolf)著
参考读物推荐
作者: Mark Artiges等
作者: [英]姚文祥(Joseph Yiu) 著