前 言Parallel Computer Organization and Design
在飞速发展的技术驱动下,计算机体系结构成为一个快速发展的领域。自20世纪90年代中期以来,计算系统的速度和可靠性显著增强,这主要得益于技术的发展、更快的主频和更深的流水线。这些改进将高性能计算机带给大众,对社会产生了深远影响,促进了网络创新和人类活动中生产力的大幅提升。我们所处的信息革命如同18世纪的工业革命,没有人会否认这次革命得益于技术的发展和微处理器体系结构的发展。
但是,这样快速的发展在未来可能无法维持下去,流水线深度已经达到可用的极限,由于功耗限制,主频也无法大幅突破。随着技术的发展以及片上资源的变少,可靠性、复杂性和功耗成为计算机设计考虑的首要问题,而不再是传统上考虑的成本、面积和性能。这些趋势促进了并行处理和并行体系结构的发展,因为这是解决当前和未来可能面临的体系结构问题的一条新的甚至可能是唯一的途径。人们普遍认为,我们需要利用并行处理才能使计算机领域呈现一片新的景象,而这个巨大的改变会产生深远的社会影响。因此,无论是工业界还是学术界,对并行体系结构的兴趣都已从工程上的好奇转换为实在的任务。
随着时间的流逝,各层次的并行化已经成为现代计算机系统发展的瓶颈。多处理器结构通过连接多个处理器提供了可扩展的性能表现,并已在高端系统领域称霸数十载。多处理器开发线程级并行(TLP),允许大型应用拥有很多线程,如计算机图形、科学/工程计算、数据库管理以及通信服务。随着体系结构和编译器技术的发展,微体系结构则开发指令级并行(ILP),并且获得了良好的性能表现。内存系统结构为了跟上指令吞吐量的需求,通过允许同时访问大量数据并保证执行的正确性而获得了快速发展。互连和相关的协议也不断改进,可以有效连接成百上千个处理器以及主频为几GHz的芯片。最近,微处理器的体系结构集成了系统级并行结构的范例,如向量处理和多处理器。在片上多处理器时代,每个微处理器都有多个核或CPU,每个核可以并发执行多个线程。
并行体系结构很难设计也很难编程,我们必须理解并行体系结构带来的问题。本书针对最新的指令级并行和线程级并行技术给出了清晰易懂的讲解,此外,还将可靠性和功耗作为设计目标进行讲解。先前计算机体系结构方面的教材主要将性能作为设计考虑的核心问题。然而,现在尽管性能依旧是设计中的一个主要问题,但是复杂性、功耗和可靠性等其他问题也成为很重要的设计因素,这本关于并行计算机体系结构的新书将会讲解这些内容。
本书的基本目的是解释并行体系结构如何工作以及分析当今并行体系结构的正确设计,尤其是在技术受限的情况下。我们一般不会给出性能数据,并且尽力回避系统的具体细节描述。我们鼓励读者阅读发布在相关会议或期刊上的资料,详细的参考书目和历史发展回顾将会发布在网上。这会留下更多空间来讲解设计的基本问题,同时鼓励学生思考、创新、实现自己的设计。为了达到实践和创新的层次,全面了解现存的设计和实际问题以及限制因素是必需的过程。本书利用丰富的例子来解释概念,并且激发读者自己思考。此外,本书还用两章(第8章和第9章)的篇幅描述了一些工业界和学术界使用的系统和工具。
习题是学习的重要部分,每章之后的习题都采用问答题形式,有些很长很难的题目被分成了多个子问题。习题的主要目的是给学生创造机会以对每章的概念有深刻的理解,并且培养学生的抽象思维能力。
本书适合对计算机体系结构感兴趣的计算机、电子工程和计算机科学专业的高年级本科生以及研究生阅读,也适合计算机行业中的工程师参考。由于本书涵盖了从微处理器到多处理器的大量知识,既包括基本内容也包含一些前沿的研究点,因此在教学时,可以通过选择不同的章节来适应不同的难度级别。学生可以学到硬件结构和组成多处理器的各个部分,以及技术发展趋势对于体系结构的影响,还有与性能、功耗、可靠性和功能正确性相关的设计问题等。本书可以用于研究生的基础课程,也可以用于接下来的高阶研究课程。本书的预修课程是计算机体系结构及组成,涵盖指令集和简单流水线处理器体系结构等内容。例如五级流水线及其控制相关的知识,包括前递、停顿和刷新等问题,这些可以帮助学生理解微处理器章节中更复杂的硬件问题。为了体现完整性,本书也包括了基本的指令集、流水线和存储等相关概念。由于现代微体系结构会影响多处理器的特征,因此了解其工作原理是必需的,此外还需要一定的编程知识。
内容纲要本书整体内容完备,同时我们也尽力保证每一章都是独立且完备的,这可能会导致一些重复。本书共9章。第1章给出了计算机体系结构领域的基本观点,概述处理器、内存、互连网络、性能问题(主要是如何评判计算机系统)以及讨论技术发展对未来体系结构的影响。
对工艺实现细节的理解也是非常重要的,因为很多体系结构的设计决策都受底层工艺的影响。因此在第2章中,我们对CMOS进行回顾并探讨相关问题。有VLSI设计背景的学生可以略过某些讲解。
……