并行计算机组成与设计
作者 : [美]米歇尔?杜波依斯(Michel Dubois) [美]穆拉里?安纳瓦拉姆(Murali Annavaram) [瑞典]佩尔?斯坦斯托姆(Per Stenström) 著
丛书名 : 计算机科学丛书
出版日期 : 2017-04-11
ISBN : 978-7-111-56223-8
定价 : 99.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 380
开本 : 16
原书名 : Parallel Computer Organization and Design
原出版社: Cambridge University Press
属性分类: 教材
包含CD :
绝版 :
图书简介

本书教授计算机组成和设计领域的基本原理以及如何在并行计算时代应对新兴技术的挑战,为学生在未来的职业生涯中从事计算机系统设计打下坚实的基础。

图书前言

在飞速发展的技术驱动下,计算机体系结构成为一个快速发展的领域。自20世纪90年代中期以来,计算系统的速度和可靠性显著增强,这主要得益于技术的发展、更快的主频和更深的流水线。这些改进将高性能计算机带给大众,对社会产生了深远影响,促进了网络创新和人类活动中生产力的大幅提升。我们所处的信息革命如同18世纪的工业革命,没有人会否认这次革命得益于技术的发展和微处理器体系结构的发展。
但是,这样快速的发展在未来可能无法维持下去,流水线深度已经达到可用的极限,由于功耗限制,主频也无法大幅突破。随着技术的发展以及片上资源的变少,可靠性、复杂性和功耗成为计算机设计考虑的首要问题,而不再是传统上考虑的成本、面积和性能。这些趋势促进了并行处理和并行体系结构的发展,因为这是解决当前和未来可能面临的体系结构问题的一条新的甚至可能是唯一的途径。人们普遍认为,我们需要利用并行处理才能使计算机领域呈现一片新的景象,而这个巨大的改变会产生深远的社会影响。因此,无论是工业界还是学术界,对并行体系结构的兴趣都已从工程上的好奇转换为实在的任务。
随着时间的流逝,各层次的并行化已经成为现代计算机系统发展的瓶颈。多处理器结构通过连接多个处理器提供了可扩展的性能表现,并已在高端系统领域称霸数十载。多处理器开发线程级并行(TLP),允许大型应用拥有很多线程,如计算机图形、科学/工程计算、数据库管理以及通信服务。随着体系结构和编译器技术的发展,微体系结构则开发指令级并行(ILP),并且获得了良好的性能表现。内存系统结构为了跟上指令吞吐量的需求,通过允许同时访问大量数据并保证执行的正确性而获得了快速发展。互连和相关的协议也不断改进,可以有效连接成百上千个处理器以及主频为几GHz的芯片。最近,微处理器的体系结构集成了系统级并行结构的范例,如向量处理和多处理器。在片上多处理器时代,每个微处理器都有多个核或CPU,每个核可以并发执行多个线程。
并行体系结构很难设计也很难编程,我们必须理解并行体系结构带来的问题。本书针对最新的指令级并行和线程级并行技术给出了清晰易懂的讲解,此外,还将可靠性和功耗作为设计目标进行讲解。先前计算机体系结构方面的教材主要将性能作为设计考虑的核心问题。然而,现在尽管性能依旧是设计中的一个主要问题,但是复杂性、功耗和可靠性等其他问题也成为很重要的设计因素,这本关于并行计算机体系结构的新书将会讲解这些内容。
本书的基本目的是解释并行体系结构如何工作以及分析当今并行体系结构的正确设计,尤其是在技术受限的情况下。我们一般不会给出性能数据,并且尽力回避系统的具体细节描述。我们鼓励读者阅读发布在相关会议或期刊上的资料,详细的参考书目和历史发展回顾将会发布在网上。这会留下更多空间来讲解设计的基本问题,同时鼓励学生思考、创新、实现自己的设计。为了达到实践和创新的层次,全面了解现存的设计和实际问题以及限制因素是必需的过程。本书利用丰富的例子来解释概念,并且激发读者自己思考。此外,本书还用两章(第8章和第9章)的篇幅描述了一些工业界和学术界使用的系统和工具。
习题是学习的重要部分,每章之后的习题都采用问答题形式,有些很长很难的题目被分成了多个子问题。习题的主要目的是给学生创造机会以对每章的概念有深刻的理解,并且培养学生的抽象思维能力。
本书适合对计算机体系结构感兴趣的计算机、电子工程和计算机科学专业的高年级本科生以及研究生阅读,也适合计算机行业中的工程师参考。由于本书涵盖了从微处理器到多处理器的大量知识,既包括基本内容也包含一些前沿的研究点,因此在教学时,可以通过选择不同的章节来适应不同的难度级别。学生可以学到硬件结构和组成多处理器的各个部分,以及技术发展趋势对于体系结构的影响,还有与性能、功耗、可靠性和功能正确性相关的设计问题等。本书可以用于研究生的基础课程,也可以用于接下来的高阶研究课程。本书的预修课程是计算机体系结构及组成,涵盖指令集和简单流水线处理器体系结构等内容。例如五级流水线及其控制相关的知识,包括前递、停顿和刷新等问题,这些可以帮助学生理解微处理器章节中更复杂的硬件问题。为了体现完整性,本书也包括了基本的指令集、流水线和存储等相关概念。由于现代微体系结构会影响多处理器的特征,因此了解其工作原理是必需的,此外还需要一定的编程知识。
内容纲要
本书整体内容完备,同时我们也尽力保证每一章都是独立且完备的,这可能会导致一些重复。本书共9章。第1章给出了计算机体系结构领域的基本观点,概述处理器、内存、互连网络、性能问题(主要是如何评判计算机系统)以及讨论技术发展对未来体系结构的影响。
对工艺实现细节的理解也是非常重要的,因为很多体系结构的设计决策都受底层工艺的影响。因此在第2章中,我们对CMOS进行回顾并探讨相关问题。有VLSI设计背景的学生可以略过某些讲解。这一章主要是针对计算机科学专业的学生,他们可能对电子工程和CMOS技术只有粗略的了解。这部分知识对理解本书其他部分没有影响,但是可以帮助学生理解为什么如今的体系结构会是这样,并了解一些设计决策的原因。这一章同其他章节的明显区别在于只介绍工艺相关的知识。
第3、4和6章讲述了并行系统设计的几个基本方面:处理器、存储和互连网络。第3章讲述微体系结构,对指令集和基本的机器结构(如五级流水线)进行了概括介绍,并在这一过程中给出了本书其他部分用到的指令集和基本ISA原理。这一章重点强调异常以及异常处理方法,因为异常对于开发微体系结构中的并行性有很大影响。有体系结构背景的学生可以略过该章的大部分内容。该章主要介绍通过各种软硬件方法来开发指令级并行。首先,考虑静态调度处理器(包括超标量处理器,它是五级流水线的扩展)中的设计问题。由于没有哪种机制可以进一步优化静态调度的指令并开发ILP,因此编译器技术就显得十分重要。而动态乱序(OoO)执行处理器则可以在几百条指令的执行窗口内重新动态调度(编译后)指令。在第3章,我们会一步步讲解OoO处理器的发展,从Tomasulo算法开始一直到可以推测调度的推测执行处理器,这也是目前最先进的OoO处理器。乱序执行处理器是处理器体系结构设计的一个极端,由于其支持动态调度,因而随着并行指令数的增加会带来复杂性和功耗等问题。并行微体系结构设计的另一个极端是超长指令字(VLIW)结构。在这种结构中,在编译阶段就决定了所有的动作(包括什么时候取指、译码和开始执行),这极大地降低了硬件复杂性和功耗。而实际处理器设计可以在两个极端之间进行折中,显式并行指令计算(Explicity Parallel Instruction Computing,EPIC)就是这样的一个尝试。最后,处理器还通过向量微体系结构来开发细粒度并行,向量处理在性能和功耗方面都很有效,并且广泛用于多媒体和信号处理应用中。
第4章讲解存储层次结构在硬件层的特点。如今,需要多层次并发存储结构来为并行微体系结构提供足够的指令和数据。这包括非阻塞cache设计以及软硬件预取策略。这些方法必须保证内存行为的正确性。另一个理解并行体系结构的重要因素是虚拟存储系统。正是因为有了虚存,现代体系结构必须能处理精确异常,多处理器必须采取相关的机制来保证每个处理器虚存的一致性(在第5章中介绍)。
第6章主要讲解互连网络问题。互连网络连接系统部件(系统区域网络,SAN)或者片上资源(片上网络,OCN)。由于并行体系结构性能的提高需要允许多个部件的并行访问,因此互连网络的设计对性能和功耗都极其重要,设计空间很大。第6章提供了互连网络设计的完整介绍,包括性能模型、交换策略、网络拓扑、路由算法和交换结构等。
第5、7和8章是关于多处理器的。第5章给出了消息传递和共享内存多处理器的基本结构和机制。首先通过程序例子讲解编程模型和基本的应用编程接口,这样可以方便读者理解体系结构中需要的各种机制。该章分层给出了消息传递所需的基本体系结构支持,从各种消息传递原语到实现所需的基本交换协议,再到加速所需的相关硬件支持。第5章其余部分关注共享内存系统。共享内存系统有几种可行的组织方式,不过出于商业上的考虑,目前最主要的方式是利用现有的商业微处理器来搭建新的多处理器系统,这些现有的微处理器都有自己的cache。共享内存系统的每个处理器和片上多处理器的每个核都有自己的私有指令cache、数据cache和虚地址转换cache。因此必须采取某些机制保证它们在结构上的一致性。该章将介绍总线系统和分布式共享内存系统(cc-NUMA和COMA)这两大类结构。
第5章介绍了共享内存系统的体系结构,而第7章则主要解决共享内存多处理器的逻辑属性问题,包括同步、一致性和存储一致性模型,这三者之间有着紧密且微妙的联系。同步原语和对应的机制对于多线程程序的执行至关重要,必须要有硬件支持。在多个cache和缓存中同一个地址对应的多个备份需要保证一致性。共享内存系统最终的正确性在于存储一致性,它规定了访存的动态交错顺序。本书从静态调度处理器和动态调度处理器两方面描述了存储一致性模型的实现。第7章是本书中理论性最强的一章,但是也并不要求读者具备相关的理论背景。
第8章讲解片上多处理器(CMP)。由于具有集成密度高、通信延迟低的特点,因此CMP有可能带来新的、更简单高效的编程模型。在CMP环境中,CPU相对低廉,可以用于各种新型计算模式。本章包括CMP相关的诸多内容,如CMP体系结构、核内多线程、事务内存、推测多线程和辅助执行等。
最后,第9章关注计算机体系结构设计的量化评估模型。计算机体系结构的很多设计决策是基于一系列在面积、性能、功耗和可靠性等方面的权衡而得出的。任何旨在改进现有实现的设计都必须经过严格的量化评估以评价这些改进的有效性。因此,学生和实践人员需要理解探索设计空间的量化方法。在本章中,我们会介绍很多这类话题,比如模拟方法、采样技术、工作负载特征刻画方法等。
致谢
编写本书花费了5年时间,这是我们的本科生和研究生教学经验以及多年实践经验的结晶。并行计算机体系结构和并行处理无论在短期还是长期都扮演着重要的角色。因此,我们将在并行体系结构和并行编程方面继续努力教授计算机科学和计算机工程专业的学生。本书是我们对这一目标的贡献。
Michel Dubois
多年来,我有幸受到很多杰出同事的影响,尽管很多人我并不相识。感谢普渡大学的导师Fayé Briggs,在最需要的时候,他给了我研究的信心。感谢明尼苏达大学和普渡大学为我提供了面对世界所必需的研究生教育,这是无价的。
作为一名南加州大学的教师,我从我的博士研究生那里学到了很多,希望他们也能从我这里学到知识。学生们帮我建立和发展了我对于计算机体系结构的想法(有些是好的,也有些是坏的)和观点,他们是:Christoph Scheurich、Aydin Uresin、Jin-Chin Wang、Fong Pong、Luiz Barroso、Kangwoo Lee、Adrian Moga、Xiaogang Qiu、Jaeheon Jeong、Jianwei Chen以及Jinho Suh。尤其是Jinho在编写本书时给了我们很大的帮助。
当然,还要感谢我的父母Solange和André,是他们把我带到这个世界,并且在我到美国继续研究生学习时依然支持我,虽然我的决定伤了他们的心。还要感谢妻子Lorraine,感谢她对我工作的支持。
最后,我代表三位作者对剑桥大学出版社的团队表示感谢:Julie Lancashire,感谢她从一开始对本项目的热情;Sarah Matthews,她参与了大部分出版工作,使得我们在整个过程中都保持热情;Irene Pizzie,他帮助我们修改了语法错误,尽力确保了本书内容的一致性。
Murali Annavaram
当我接受Michel Dubois教授的邀请编写本书时,我完全不知道这部杰作将耗费的时间和精力。但是,经过两年的努力完成这本书后,我看到我们共同努力的结果比我们任何一个人独立完成的书都要好,这让我很满足。我希望通过这本书分享我多年来在工业和学术上的经验,书中的内容来自于我从这个领域的大师们那里学到的东西。尤其是Edward S.Davidson教授对我的影响最为巨大,我至今还怀念他的红色和蓝色墨迹。Yale Part教授教会我如何教学,他的授课方式很有感染力。我还要感谢Walid Najjar教授以及Farnam Jahanian教授给我这个机会。
在我的职业生涯中,没有人的影响力可以超过John Shen,他真的是一个非常棒的老板。我还要感谢以下这些人:Ed Grochowski,他是一个创造性思维大师;Bryan Black,他和他的Austin团队开阔了我的视野;Quinn Jacobson,他给了我足够的信任;Viji Srinivasan,我和他就预取机制进行了长时间的讨论。
我在南加州大学的研究是本书一些内容的基础。感谢美国国家科学基金(NSF)和诺基亚公司给我的研究资助,同时,我的研究工作也离不开我的研究生团队的帮助,他们是我撰写章节的试读者,并给出了习题的答案。这里尤其要感谢Jinho Suh,他的能力非常全面,从统计到排版编辑都从未让我失望过。
Bob和Nancy教会我回馈社会。Kirti、Kalpesh以及密歇根大学和加州州立大学的团队给了我很大支持。在这里我无法把名字一一列全,感谢你们。
最后,感谢为我牺牲了个人时间的家庭成员们,谢谢你们!
Per Stenstrom
我对这本书的贡献很大程度上来源于多年来对并行计算机体系结构的研究。如果没有我的导师Lars Philipson,我无法完成这些,他在20世纪80年代早期就独具慧眼地发现了共享内存多处理器技术的潜力。更重要的是,他给了我对科学正确的认识和完成研究的信心。我的博士研究生给了我灵感,他们教会了我很多东西。我多年的研究成果都浓缩在这本书中,我从我的博士生身上学到了很多,感谢他们:Mats Brorsson、Fredrik Dahlgren、Magnus Ekman、Hkan Grahn、Mafijul Islam、Thomas Lundqvist、Magnus Karlsson、Jim Nilsson、Ashley Saulsbury、Jonas Skeppstedt、Martin Thuresson、M.M.Waliullah以及Fredrik Warg。
此外,我还想感谢计算机体系结构社区的很多人,他们对我的职业发展有很大的影响。对卡内基-梅隆大学、斯坦福大学、南加州大学以及Sun公司的访问,很大程度上影响了我对计算机体系结构到底是什么的理解。我的灵感的另一个重要来源是与欧洲同行们在HiPEAC上的交流,我希望可以列出所有我想感谢的人,但是人数确实太多了,谢谢你们所有人!
我们早先已经在查尔姆斯理工大学对本书进行了课堂测试,得到了很多有用的反馈。我尤其要感谢下面这些给我们反馈的人:Bhavishya Goel、Ben Juurlink、Johan Karlsson、Sally McKee、Filippo Del Tedesco、Andras Vajda以及M.M.Waliullah。
最后,也是最重要的,感谢妻子Carina和女儿Sofia对我的无私支持和理解。

上架指导

计算机\计算机组成

封底文字

书中没有晦涩抽象的技巧以及使人手足无措的大量数据,而是以完整且易于教学的方式组织成章,并且包含片上多处理器等紧跟工业发展前沿的内容,最后一章量化评估更是点睛之笔。——Mikko Lipasti,威斯康星大学麦迪逊分校

这本书不仅可以帮助你清晰理解并行系统的原理,而且对于并行系统设计者来说也是不可多得的好书。——陈云霁,中国科学院计算技术研究所

并行体系结构是计算机系统获得高性能和高效率的关键,与此同时,并行编程困难和设计瓶颈也带来了重重挑战。这一领域的知识较为艰深,且技术更新迅速,因此,教育界、学术界和企业界都在渴望一本综合性强、权威性高但又浅显易读的书,无疑,本书将是最佳选择。

本书特色
·清晰简明,易于入门。从处理器基础知识到内存结构再到片上多处理器架构,作者都能用易懂的描述和恰当的例子来阐释复杂概念;不过,书中并没有将传统单核体系结构的知识完全略去,因而初学者也可轻松上阵、步步迈进。
·各章独立,内容完备。无需通读全书便可快速学习某一章的主题,教学和自学皆便捷高效;在展开技术层面的深入讨论时,本书更加关注复杂性、功耗和可靠性等与时俱进的重要设计因素,这也是其他教科书鲜有触及的。
·掌握工具,实践创新。系统阐述了实际应用中的并行系统,且专门用一章的篇幅来介绍量化评估工具;在充分了解现有系统及其限制因素的基础上,特别鼓励读者思考并实现自己的设计,以达到实践和创新的高阶学习目标。

作者简介

[美]米歇尔?杜波依斯(Michel Dubois) [美]穆拉里?安纳瓦拉姆(Murali Annavaram) [瑞典]佩尔?斯坦斯托姆(Per Stenström) 著:
米歇尔·杜波依斯(Michel Dubois) 南加州大学电子工程系教授,研究方向为计算机体系结构、并行处理和计算机系统的性能评估。
穆拉里·安纳瓦拉姆(Murali Annavaram) 南加州大学电子工程系副教授,研究方向为计算机体系结构、3D芯片堆叠和Mobiquitous计算。
佩尔·斯坦斯托姆(Per Stenström) 查尔莫斯理工大学计算机工程系教授,瑞典皇家工程科学院会员。

译者序

在21世纪初期,由于单核处理器的性能提升越来越困难,因此基于多核处理器的并行体系结构获得了快速发展,计算机体系结构的研究重心也开始转向并行体系结构,这给计算机体系结构的课程设置和教材编写都带来了很大挑战。
我们从2005年开始从事多核和众核体系结构的研究,一直在寻找一本系统讲解并行体系结构的优秀入门教材和参考书,本书的出现令我们眼前一亮,这正是我们一直想要的那本教材。
本书的作者是并行计算机体系结构领域的知名学者,教材内容的权威性无需多言。在前言中,作者也给出了非常详细的章节纲要及学习指导,建议读者参考。此外,本书之所以是一本极其出色的教材,我们认为原因还在于其具有以下特色:
内容完备且易懂。本书在重点介绍最新的并行计算机体系结构的同时,对传统单核体系结构中的基本概念和原理也进行了简要介绍,并且讲解方式浅显易懂,即使计算机体系结构知识背景比较薄弱的读者也可以较快入门。
每一章自成体系,内容相对独立且完备。研究人员和工程人员可以有针对性地快速切入相关章节进行学习和查阅,教师在教学环节中也可以根据学生实际情况选择相关章节施教,比如难度较大的第7章更适合研究生课程。
针对体系结构量化评估工具编写了专门的章节。模拟器是计算机体系结构研究和教学中极其重要的工具,然而现有的体系结构教材中往往忽略了对这类工具的介绍。本书在第9章中对量化评估工具进行了系统全面的阐述,这对体系结构领域的初学者来讲是非常有价值的。
本书的翻译工作由范东睿、叶笑春、王达共同协作完成。在翻译过程中,我们也修正了原书中的一些小错误。不过由于我们的水平和精力有限,可能会引入新的错误,恳请大家不吝赐教。
本书的完成得益于中科院计算所许多老师和同学的无私支持。衷心感谢张志敏研究员对译稿部分章节的审校,感谢李文明、吴萌、向陶然、严明玉、李戈、张伍召、张承龙等对译稿的贡献。另外,本书的出版还得到了机械工业出版社的大力帮助,在此也对出版社各位同仁在翻译和审校等环节的辛勤付出表示感谢。

译 者
2017年2月

图书目录

出版者的话
赞誉
译者序
前言
第1章 总述1
 1.1 什么是计算机体系结构2
 1.2 并行体系结构的基本组成3
  1.2.1 处理器4
  1.2.2 存储6
  1.2.3 互连9
 1.3 并行体系结构10
  1.3.1 指令级并行10
  1.3.2 线程级并行10
  1.3.3 向量和阵列处理器11
 1.4 性能12
  1.4.1 基准测试集13
  1.4.2 Amdahl定律15
 1.5 技术挑战19
  1.5.1 功耗和能量19
  1.5.2 可靠性19
  1.5.3 连线延迟20
  1.5.4 设计复杂度20
  1.5.5 尺寸缩小极限和CMOS终点21
 习题22
第2章 工艺及其影响25
 2.1 概述25
 2.2 电学基本定律26
  2.2.1 欧姆定律26
  2.2.2 电阻26
  2.2.3 电容27
 2.3 MOSFET晶体管和CMOS反相器27
 2.4 工艺变更30
 2.5 功耗和能耗31
  2.5.1 动态功耗31
  2.5.2 静态功耗35
  2.5.3 功耗和能量指标37
 2.6 可靠性38
  2.6.1 故障和错误38
  2.6.2 可靠性指标39
  2.6.3 故障率和老化40
  2.6.4 瞬时故障42
  2.6.5 间歇性故障44
  2.6.6 永久性故障48
  2.6.7 工艺偏差及其对故障的影响48
 习题49
第3章 处理器微结构51
 3.1 概述51
 3.2 指令集架构52
  3.2.1 指令类型和操作码53
  3.2.2 指令混合55
  3.2.3 指令操作数55
  3.2.4 异常、陷阱和中断58
  3.2.5 存储一致性模型60
  3.2.6 本书的核心ISA60
  3.2.7 CISC和RISC61
 3.3 静态调度流水线63
  3.3.1 经典五级流水线64
  3.3.2 指令乱序完成69
  3.3.3 超流水和超标量CPU72
  3.3.4 分支预测73
  3.3.5 静态指令调度73
  3.3.6 静态流水线的优缺点77
 3.4 动态调度流水线78
  3.4.1 解决数据相关:Tomasulo算法79
  3.4.2 推测执行82
  3.4.3 动态分支预测83
  3.4.4 支持推测的Tomasulo算法87
  3.4.5 动态内存歧义消除89
  3.4.6 显式寄存器重命名91
  3.4.7 指令发射后的寄存器读取93
  3.4.8 推测指令调度94
  3.4.9 打破数据流限制:值预测97
  3.4.10 单周期多指令98
  3.4.11 处理复杂ISA98
 3.5 超长指令字微结构99
  3.5.1 动态和静态技术100
  3.5.2 VLIW体系结构100
  3.5.3 循环展开102
  3.5.4 软件流水103
  3.5.5 非循环VLIW调度108
  3.5.6 谓词指令109
  3.5.7 推测内存歧义消除110
  3.5.8 异常110
 3.6 EPIC微结构112
 3.7 向量微结构113
  3.7.1 算术/逻辑向量指令113
  3.7.2 内存向量指令114
  3.7.3 向量分段开采和链接115
  3.7.4 条件语句116
  3.7.5 scatter和gather操作117
 习题118
第4章 存储层次136
 4.1 概述136
 4.2 金字塔形存储层次137
  4.2.1 访存局部性138
  4.2.2 存储层次中的一致性138
  4.2.3 存储包含139
 4.3 cache层次139
  4.3.1 cache映射及组织方式139
  4.3.2 替换策略142
  4.3.3 写策略143
  4.3.4 cache层次的性能144
  4.3.5 cache失效的分类145
  4.3.6 非阻塞cache145
  4.3.7 cache预取和预加载147
 4.4 虚拟存储149
  4.4.1 引入虚存的动机149
  4.4.2 从操作系统视角看到的虚拟存储149
  4.4.3 虚地址转换151
  4.4.4 访存控制151
  4.4.5 多级页表152
  4.4.6 反向页表153
  4.4.7 旁路转换缓冲153
  4.4.8 带物理标识的虚地址cache154
  4.4.9 带虚标识的虚地址cache157
 习题157
第5章 多处理器系统162
 5.1 概述162
 5.2 并行编程模型163
  5.2.1 共享内存系统164
  5.2.2 消息传递系统166
 5.3 基于消息传递的多处理器系统167
  5.3.1 消息传递原语167
  5.3.2 消息传递协议169
  5.3.3 消息传递协议的硬件支持170
 5.4 基于总线的共享内存系统171
  5.4.1 多处理器cache组织172
  5.4.2 一个简单的侦听cache协议173
  5.4.3 侦听cache协议的设计空间176
  5.4.4 协议变种181
  5.4.5 多阶段侦听cache协议的设计问题184
  5.4.6 通信事件的分类188
  5.4.7 TLB一致性190
 5.5 可扩展共享内存系统192
  5.5.1 目录协议的基本概念和术语193
  5.5.2 目录协议实现方法193
  5.5.3 目录协议的扩展性197
  5.5.4 层次化系统200
  5.5.5 页面迁移和复制201
 5.6 全cache共享内存系统204
  5.6.1 基本概念、硬件结构和协议204
  5.6.2 平坦COMA206
 习题207
第6章 互连网络214
 6.1 概述214
 6.2 互连网络的设计空间215
  6.2.1 设计概念综述215
  6.2.2 延迟和带宽模型217
 6.3 交换策略221
 6.4 拓扑结构223
  6.4.1 间接网络223
  6.4.2 直接网络226
 6.5 路由技术229
  6.5.1 路由算法229
  6.5.2 死锁避免和确定性路由231
  6.5.3 放松路由限制:虚通道和转弯模型232
  6.5.4 进一步放松的路由算法:自适应路由233
 6.6 交换架构234
 习题236
第7章 一致性、同步与存储一致性238
 7.1 概述238
 7.2 背景239
  7.2.1 共享内存通信模型239
  7.2.2 硬件组件241
 7.3 一致性和store原子性244
  7.3.1 多处理器一致性的实现困难244
  7.3.2 cache协议246
  7.3.3 store原子性249
  7.3.4 纯一致性254
  7.3.5 store原子性和访存交错262
 7.4 顺序一致性262
  7.4.1 顺序一致性的形式化模型263
  7.4.2 顺序一致性的访存顺序规则265
  7.4.3 入站消息管理266
  7.4.4 store同步性270
 7.5 同步272
  7.5.1 基本同步原语273
  7.5.2 基于硬件的同步276
  7.5.3 基于软件的同步276
 7.6 放松的存储一致性模型279
  7.6.1 不依赖于同步的放松模型280
  7.6.2 依赖同步的放松模型285
 7.7 推测执行中的存储序违反289
  7.7.1 乱序执行处理器中的保守存储模型289
  7.7.2 推测执行中的存储序违反290
 习题292
第8章 片上多处理器299
 8.1 概述299
 8.2 CMP的基本原理300
  8.2.1 技术趋势300
  8.2.2 机遇301
 8.3 核内多线程302
  8.3.1 软件支持的多线程302
  8.3.2 硬件支持的多线程303
  8.3.3 块式(粗粒度)多线程304
  8.3.4 交错(细粒度)多线程308
  8.3.5 乱序执行处理器上的同时多线程311
 8.4 片上多处理器架构314
  8.4.1 同构CMP架构315
  8.4.2 基于异构处理器核的CMP系统320
  8.4.3 连体处理器核322
 8.5 编程模型323
  8.5.1 独立进程324
  8.5.2 显式线程并行324
  8.5.3 事务内存326
  8.5.4 线程级推测执行333
  8.5.5 帮助线程337
  8.5.6 通过冗余执行提高可靠性338
 习题340
第9章 量化评估343
 9.1 概述343
 9.2 模拟器分类344
  9.2.1 用户级模拟器和全系统模拟器344
  9.2.2 功能模拟器和时钟精确模拟器345
  9.2.3 trace驱动模拟器、执行驱动模拟器和直接执行模拟器347
 9.3 模拟器的集成350
  9.3.1 功能优先模拟器的集成350
  9.3.2 时序优先模拟器的集成351
 9.4 多处理器模拟器352
  9.4.1 串行多处理器模拟器352
  9.4.2 并行多处理器模拟器353
 9.5 功耗和热量模拟357
 9.6 工作负载采样359
  9.6.1 基于采样的微架构模拟360
  9.6.2 SimPoint361
 9.7 工作负载特征刻画361
  9.7.1 理解性能瓶颈362
  9.7.2 合成基准测试程序362
  9.7.3 预测工作负载行为362
 习题363

教学资源推荐
参考读物推荐
作者: [美] 沃尔弗拉姆·多纳特(Wolfram Donat) 著
作者: Douglas Schmidt,Michaes Stal,Hans Rohnert,Frank Buschmann
作者: Mark Artiges等