《计算机组成与设计》(美)戴维·A.帕特森,约翰·L.亨尼斯著;易江芳,刘先华等译|(epub+azw3+mobi+pdf)电子书下载

图书名称:《计算机组成与设计》

【作 者】(美)戴维·A.帕特森,约翰·L.亨尼斯著;易江芳,刘先华等译
【丛书名】计算机科学丛书
【页 数】 470
【出版社】 北京:机械工业出版社 , 2020.04
【ISBN号】978-7-111-65214-4
【价 格】139.00
【分 类】计算机体系结构-微型计算机-接口技术
【参考文献】 (美)戴维·A.帕特森,约翰·L.亨尼斯著;易江芳,刘先华等译. 计算机组成与设计. 北京:机械工业出版社, 2020.04.

图书封面:

图书目录:

《计算机组成与设计》内容提要:

本书由2017年图灵奖得主Patterson和Hennessy共同撰写,是计算机体系结构领域的经典书籍,强调软硬件协同设计及其对性能的影响。本书采用开源的RISC-V指令系统体系结构,讲解硬件技术、汇编语言、算术运算、流水线、存储层次、IO以及并行处理器。新内容涵盖平板电脑、云基础设施、ARM(移动计算设备)以及x86(云计算)体系结构,新实例包括IntelCorei7、ARMCortex-A53以及NVIDIAFermiGPU。本书适合计算机体系结构领域的专业技术人员参考,也适合高等院校计算机相关专业的学生阅读。

《计算机组成与设计》内容试读

|第1章

Computer Organization and Design:The Hardware/Software Interface,RISC-V Edition

计算机抽象及相关技术

1.1引言

欢迎阅读本书!我们很高兴有机会来分享令人兴奋的计算机系人类文明因为那些我们不统世界。这绝不是一个枯燥乏味、进步缓慢、新思想在忽视中调零

假思索即可完成的要务数

的领域。相反!计算机是难以置信而充满活力的信息技术产业的产

量的增加而进步。

Alfred North Whitehead.

物,其各类相关产品约占美国国民生产总值的10%。美国经济在某

数学导论,191

些方面已经与信息技术密不可分,而这一领域正按照摩尔定律所预

示的那样快速发展。这个不同寻常的行业在以惊人的速度拥抱创新。在过去的30年中,已经出现了许多新型计算机,这些新型计算机的引人导致了计算产业的革命,而它们很快又被其他人所建造的更好的计算机所取代。

自从20世纪40年代末电子计算机诞生以来,这场创新竞争已经带来了史无前例的进步。例如,如果运输行业能够和计算机行业保持同样的发展速度,那么如今我们花一分钱就可以在一秒钟内从纽约赶到伦敦。稍微思考一下这样的进步会如何改变社会一居住在南太平洋的塔希提岛,而工作在旧金山,晚上去莫斯科参加波修瓦芭蕾舞团的演出一你就能理解这种变革的意义了。

沿着农业革命、工业革命的发展方向,计算机促进了人类的第三次革命一信息革命。由此产生的人类智力的成倍增长自然而深刻地影响了人们的日常生活,甚至改变了人们寻求新知识的方式。现在有了一个新的科学探索方式,即计算科学家加入了理论与实验科学家的行列,共同探索天文学、生物学、化学和物理学等领域的前沿问题。

计算机革命仍在继续向前推进。每当计算成本降低为原来的十分之一,计算机的发展机遇就会成倍增长。原本出于经济因素而不可行的应用突然变得切实可行。例如在不久之前,下述各项应用还曾经只是“计算机科学幻想”。

·车载计算机:直到20世纪80年代初微处理器的价格和性能得到显著改善之前,用计算机来控制汽车几乎是天方夜谭。如今,计算机可以通过控制汽车发动机降低污染、提高燃油效率,还能通过盲点警示、车道偏离警示、移动目标检测和气囊保护实现碰撞时对乘客的保护,从而增加汽车的安全性。

·手机:谁曾预想到计算机系统的发展会导致全球半数以上的人口拥有移动电话,并让人们几乎可以与世界上任何地方的人进行交流?

·人类基因组项目:以前用以匹配和分析人类DNA序列的计算机设备成本高达数亿美

元。15~25年前,这个项目的计算机成本要高出10~100倍,那时,几乎没有人会考虑加入这个项目。目前,该项目的计算机成本仍然在持续下降,人们将很快就能够获得自己的基因组,从而量身定制医疗服务。

·万维网:在本书第1版出版时,万维网还不存在,而现在万维网已经改变了我们的社会。对于很多人来说,网络已经取代了图书馆和报纸。

2

第1章

·搜索引擎:随着万维网内容的规模和价值的增长,如何找到相关信息变得越来越重要。如今,很多人的生活都很大程度地依赖搜索引擎,如果没有搜索引擎,生活可能会变得举步维艰。

显然,计算机技术的进步几乎影响着社会的方方面面。硬件的进步使得程序员能够创造出奇妙而有用的软件,进而证明了为什么计算机无所不在。现在的科学幻想往往预示着未来最具影响力的应用,例如,虚拟现实眼镜、无现金社会以及自动驾驶汽车都即将到来。

1.1.1传统的计算应用分类及其特点

从智能家电到手机再到最大的超级计算机,虽然在计算机中使用了一套通用的硬件技术(见1.4节和1.5节),但不同的应用具有不同的设计要求,并以不同的方式使用核心硬件技术。宽泛地说,计算机主要被用于如下三种不同的应用场景中

个人计算机(Personal Computer,PC)可能是最广为人知的计

个人计算机:用于个人使

算机形式,本书的读者几乎都在广泛使用。个人计算机强调以低成

用的计算机,通常包含图

本向单个用户交付良好的性能,通常运行第三方软件。这类计算方

形显示器、健盘和鼠标

式推动了许多计算技术的发展,尽管它仅有35年的历史!

服务器是过去曾是庞然大物的计算机的现代形式,通常只能通

服务器:用于为多个用户

过网络访问。服务器适用于执行巨大的工作负载,其中可能包括单

并行运行大型程序的计算

个复杂应用一通常是科学或工程应用程序;也可以执行许多小型

机,通常只能通过网络

作业,例如在构建大型Wb服务器时发生的任务。这些应用程序通

访问。

常来自其他来源(如数据库或模拟系统)的软件,但往往会针对特定需求进行修改或定制。服务器采用与桌面计算机相同的基础技术构

超级计算机:具有最高的

建,但能够提供更强大的计算、存储和输入/输出能力。通常情况

性能和成本的一类计算

下,服务器更强调可靠性,因为相比单用户个人计算机而言,服务

机,一般被配置为服务器且通常耗费数千万美元甚

器发生故障的代价更高。

至数亿美元。

服务器的成本和功能范围跨度极其广泛。低端的服务器可能比

一台不带屏幕和键盘的桌面计算机稍贵一些,大约需要一千美元此类低端服务器通常用于文件存储、小型商业应用或简单的Wb服

太字节:原始的定义为1099511627776(20)

务。高端的服务器则是超级计算机(supercomputer),当前的超级计

字节,而通信和辅助存储

算机一般由成千上万颗处理器和数太字节(terabyte)的内存组成,

系统研发人员用其表示

且成本高达几千万甚至数亿美元。超级计算机通常用于高端科学和

1000000000000(102)字节。为了减少混淆,本书使

工程计算,例如天气预报、石油勘探、蛋白质结构测定和其他大规

用太比字节(tebibyte,TB】

模问题。尽管这样的超级计算机代表了最高的计算能力,但它们只

这个术语来表示2字节,

占据了服务器中相对较小的一部分,在整个计算机市场中所占总销

而使用太字节(terabyte,

售收入的比例也很小

TB)表示10字节。图1-

展现了十进制和二进制数值

嵌入式计算机是计算机中最大的一个类别,其应用场景和性能

和名称的全部范围。

范围也最为广泛。嵌人式计算机包括汽车、电视机中的微处理器或计算机,以及控制飞机或货船的处理器网络。嵌入式计算系统的设

嵌入式计算机:用于运行

计目标是运行单一应用程序或者一组相关的应用程序,并且通常和

某预定应用程序或软件集

硬件集成在一起以单一系统的方式一并交付。因此,尽管嵌入式计

合的计算机,一般内嵌于

算机的数量庞大,但仍然有大多数用户从来没有意识到他们正在使

其他设备中

计算机抽象及相关技术3

用计算机。

十进制

二进制

术语

缩写

数值

术语

缩写

数值

增长百分比

千字节

KB

103

千比字节

KiB

210

2%

兆字节

MB

106

兆比字节

MiB

220

5%

吉字节

GB

109

吉比字节

GiB

230

7%

太字节

TB

102

太比字节

TiB

240

10%

拍字节

PB

1015

拍比字节

PiB

250

13%

艾字节

EB

1018

艾比字节

EiB

260

15%

泽字节

ZB

1021

泽比字节

ZiB

270

18%

尧字节

YB

1024

尧比字节

YiB

280

21%

图1-1通过为所有常见规格术语添加二进制记法解决了2与10字节的不明确性。在最后

一列中,我们标记了二进制术语比相应的十进制术语大出多少的具体比例,可以看到该数值从上往下逐渐增大。这些前缀可以用于位和字节,所以吉位(Gb)为10位,而吉比位(Gib)为20位

嵌人式应用常常具有特定的应用程序要求,这需要将最低性能与严格的成本及功耗限制结合在一起考虑。以音乐播放器为例,处理器只需要尽快执行有限的功能,除此之外,成本和功耗最小化是最重要的目标。尽管成本很低,但是嵌入式计算机通常对故障的容忍度较低,因为故障可能会令人不安(例如,新买的电视无法正常工作),甚至是破坏性的(例如,飞机或货船上的计算机系统崩溃)。在面向消费者的嵌入式应用(如数字家电)中,一般通过简单设计来获得可靠性一其重点在于尽可能地保证一项功能的正常运转。而在大型嵌入式系统中,采用了服务器领域的冗余技术。尽管本书的重点是通用计算机,但大多数概念直接或稍作修改即可适用于嵌入式计算机。

详细阐述“详细阐述”是正文中的一些简短段落,提供读者可能感兴趣的特定主题的更多详细信息。因为后续材料并不依赖于详细阐述内容,所以对此不感兴趣的读者可以直接跳过。

许多嵌入式处理器都是使用处理器核进行设计,处理器核是使用Verilog或VHDL(参见第4章)等硬件描述语言编写的处理器版本。它使得设计人员可将其他专用硬件与处理器核集成在一块单芯片上进行制造。

1.1.2欢迎来到后PC时代

技术的持续进步给计算机硬件带来了革命性的代际变迁,也改变了整个信息技术产业。从本书的上一版以来,我们经历了这种变化,这种变化就好像30年前个人电脑所带来的影响一样重大。替代个人电脑的是个人移动设备(Personal Mobile Device,PMD)。个人移动设备利用电池供电,通过无线方式连接到互联网,价格通常只有几百美元。此外,和个人电脑一样,用户可以下载软件(“应用程序”)

个人移动设备:连接到互

在其上运行。与个人电脑不同的是,个人移动设备不再拥有键盘和

联网的小型无线设备;它们依靠电池供电,并通过

鼠标,更可能依靠触摸屏或语音作为输入。当前的个人移动设备是

下载App的方式来安装软

智能手机或平板电脑,但未来的个人移动设备可能包括电子眼镜。

件。常见的例子有智能手

图1-2给出了平板电脑及智能手机与个人计算机及传统手机之数量

机和平板电脑。

随时间快速增长情况的对比。

4第1章

1400

1200

电话(不包括智能手机】

1000

狐800

智能手机

600

400

个人计算机(不包括平板电脑)

200

平板电脑

0+

200720082009201020112012

图1-2代表着后PC时代的平板电脑及智能手机每年的产量与个人计算机及传统手机的对

比。智能手机反映了手机行业近期的增长情况,并于2011年超过了个人计算机产量。平板电脑是增长最快的计算机类别,在2011年至2012年间几乎成倍增长。个人计算机和传统电话的产量保持不变甚至下降

云计算接替了传统服务器,它依赖于现在称为仓储级计算机

云计算:通过互联网提供

(Warehouse Scale Computer,WSC)的巨型数据中心。像亚马逊和

服务的大规模服务器集

谷歌这样的公司构建了包含100000台服务器的仓储级计算机,一

群,一些服务提供商动态地将不同数量的服务器作

些公司租用其中的一部分为个人移动设备提供软件服务而无须建立

为像水、电一样的公用资

自己的仓储级计算机。事实上,正如个人移动设备和仓储级计算机

源进行租用

正在改变硬件行业一样,通过云计算实现的软件即服务(SaaS)正在彻底改变软件行业。当今的软件开发人员经常会将应用的一部分

软件即服务:通过互联网以服务的方式提供软件和

运行在个人移动设备上,另一部分则部署在云上。

数据,通常是通过一个小型客户端程序(例如运行

1.1.3你能从本书中学到什么

在本地客户端设备上的浏览器)连接网络以运行程

成功的程序员总是关注程序的性能,因为让用户快速获得结果

序或获取数据,而不是必

对于软件的成功而言至关重要。20世纪六七十年代,限制计算机性

须完全在本地设备上安装

能的主要因素是计算机的内存容量。因此,当时的程序员经常遵循

和运行所有二进制代码。

一个简单的信条:尽量减少程序占用的内存空间以加速程序运行。

具体的例子包括Web搜索和社交网络。

近十年以来,计算机设计和存储器技术有了显著进步,除了嵌入式

计算系统以外,大多数应用系统中内存容量对计算机性能的影响已大大降低了。

现在,关心性能的程序员应该非常明确,20世纪60年代的简单存储模型已经不复存在,现代计算机的特征是处理器的并行性和存储的层次性。我们将在第3章至第6章中展示

如何将C程序的性能提高200倍,从而阐释这一理解的重要性。此外,正如我们在1.7节中

所阐述的,当今的程序员需要考虑在个人移动设备或云上程序运行的能效,这就要求他们了解代码之下的诸多细节。因此,程序员为了创造有竞争力的软件,必须加强对计算机组成的认知。

我们很荣幸有机会解释这个革命性的计算机器中的内容,并阐明程序之下的软件以及机箱覆盖下的硬件是如何工作的。在你读完这本书的时候,我们相信你能够回答以下问题:

●用C或Java等高级语言编写的程序如何被翻译成机器语言,以及硬件如何执行最终

计算机抽象及相关技术5

的程序?这些概念是理解软硬件如何影响程序性能的基础。

·软件和硬件之间的接口是什么?软件如何指导硬件执行所需的功能?这些概念对于理解如何编写软件是至关重要的。

·什么因素决定了程序的性能,以及程序员如何改进程序性能?我们将从本书知道,这取决于原始程序、将该程序转换成计算机语言的软件以及硬件执行该程序的有效性。

·硬件设计人员可以使用哪些技术来提高性能?本书将介绍现代计算机设计的基本概念。感兴趣的读者可以在我们的进阶教材《计算机体系结构:量化研究方法》中找到更多关于此主题的内容

·硬件设计人员可以使用哪些技术来改善能效?程序员可以做些什么来改变能效?

·串行处理近来发展到并行处理的原因和结果是什么?本书给出了这一发展变化的动机,描述了当前支持并行的硬件机

多核微处理器:在单个集

制,并评述了新一代“多核”微处理器(见第6章)。

成电路中包含多个处理器

·自1951年第一台商用计算机以来,计算机架构师提出的哪

(“核”)的微处理器。

些伟大思想奠定了现代计算技术的基础?

如果不了解这些问题的答案,那么要在现代计算机上改进程序性能,或者要评估不同计算机解决特定问题的优劣,都将是一个复杂的反复试验过程而非一个深入分析的科学过程。

第1章为本书的其余章节奠定基础。它介绍了基本概念和定义,对软件和硬件的主要组成部分进行了剖析,展示了如何评估性能和功耗,介绍了集成电路(推动计算机革命的技术),并在最后解释了技术向多核转变的原因。

在本章及后面的章节中,读者可能会看到很多新的术语,或者可能听到过但不确定确切含义的术语。请不要惊慌或担心!在描述现代计算机时,确实会使用许多专用术语来作为帮助,它使我们能够精确地描述计算机的功

首字母缩略词:通过提取

一串单词的首字母构成的

能或性能。此外,计算机设计师(包括本书作者)喜欢使用首字母

单词。例如:RAM是随

缩略词,一旦知道这些字母代表的是什么,就很容易理解了。为了

机存取存储单元(Random

帮助读者记住和理解这些术语,在术语第一次出现的时候,本书将

Access Memory)的首字

母缩略词,CPU是中央处

给出明确定义。经过与术语的短时间接触,你将会熟练掌握它们,

理单元(Central Processing

而且你的朋友也将对你正确使用BIOS、CPU、DIMM、DRAM、

Unit)的首字母缩略词。

PCIe、SATA等许多缩略词印象深刻」

为了加强对程序运行时如何应用软件和硬件以影响性能的理解,我们安排了贯穿整书的专门模块“理解程序性能”,概括对程序性能的重要理解。下面就是第一个。

理解程序性能程序的性能取决于以下各因素的组合:程序中所用算法的有效性,用来创建程序和将其翻译为机器指令的软件系统,计算机执行这些机器指令(可能包括输入/输出操作)时的有效性。下表总结了软件和硬件是如何影响程序性能的。

软件或硬件组成部分

该部分如何影响性能

该主题出现的位置

算法

决定了源码级语句的数量和执行引/O操作的数量

其他书籍

编程语言、编译器和体系结构决定了每条源码级语句对应的计算机指令数星

第2、3章

处理器和存储系统

决定了指令执行速度

第4、5、6章

/O系统(硬件和操作系统)】

决定了/○操作可能的执行速度

第4、5、6章

如上所述,为了说明本书中思想的作用,我们在一系列章节中对一个完成矩阵和向量相

6第1章

乘的C程序的性能进行优化。每个步骤都可以帮助我们理解现代微处理器中的底层硬件是如

何将性能提高200倍的!

·在第3章的数据级并行部分中,我们使用C语言固有的子字并行将性能提高了

3.8倍。

·在第4章的指令级并行部分中,我们使用循环展开来开发多指令发射和乱序执行硬件,将性能再提高2.3倍。

·在第5章的存储层次优化部分中,我们使用高速缓存分块技术将大型矩阵性能再次提高2到2.5倍。

●在第6章的线程级并行部分,我们在OpenMP中使用循环并行来开发多核硬件,将性能再次提高4到14倍。

自我检测“自我检测”部分旨在帮助读者评估自己是否理解一章中介绍的主要概念并理解这些概念的含义。其中一些问题的答案比较简单,另外一些问题则适用于小组讨论。在本章最后可以找到一些具体问题的答案。“自我检测”只出现在章节末,如果你确定自己完全理解了这部分内容,则可以跳过该部分。

1.每年嵌入式处理器的销售数量远远超过PC处理器甚至后PC处理器的数量。根据自己的经

验,你支持还是反对这种看法?尝试列举你家中的嵌人式处理器。它与你家中传统计算机的数量相比如何?

2.如前所述,软件和硬件都会影响程序的性能。请思考以下哪个例子属于性能瓶颈。

·所选算法

·编程语言或编译器

·操作系统

·处理器

·IVO系统和设备

1.2计算机体系结构中的8个伟大思想

现在我们来介绍计算机架构师在过去60年中提出的8个伟大思想。这些思想非常强大,以至于在应用这些思想产生首台计算机之后的很长时间里,新一代的架构师仍然在设计中通过模仿向先驱致敬。这些伟大的思想将贯穿在本章和后续章节的主题中,明确使用了近100次。

1.2.1面向摩尔定律的设计

计算机设计者面临的一个永恒的问题就是摩尔定律(Moore'slaw)驱动的快速变化。摩尔定律指出单芯片上所集成的晶体管资源每18至24个月翻一番。摩尔定律是Intel公司的创始人之一戈登·摩尔在1965年对集成电路容量做出的预测。由于计算机设计需要花费数年时间,因此在项目结束时,每个芯片的可用晶体管资源相对设计开始时可以轻易实现双倍或四倍增长。像双向飞碟运动员一样,计算机架构师必须预测其设计完成时的工艺水平,而不是设计开始时的工艺水平。

···试读结束···

阅读剩余
THE END