Download 计算机组成与设计 硬件 软件接口 MIPS版 原书第6版 6th Edition David A. Patterson full chapter free

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 52

■■■■■■■■ ■■ ■■■■ MIPS■ ■■■6■

6th Edition David A. Patterson


Visit to download the full and correct content document:
https://ebookstep.com/download/ebook-56256086/
More products digital (pdf, epub, mobi) instant
download maybe you interests ...

Konverter AC AC Prinsip dan Aplikasi Tole Sutikno Tri


Wahono

https://ebookstep.com/product/konverter-ac-ac-prinsip-dan-
aplikasi-tole-sutikno-tri-wahono/

Calculate with Confidence, 8e (Oct 26,


2021)_(0323696953)_(Elsevier) 8th Edition Morris Rn
Bsn Ma Lnc

https://ebookstep.com/product/calculate-with-
confidence-8e-oct-26-2021_0323696953_elsevier-8th-edition-morris-
rn-bsn-ma-lnc/

Grammaire essentielle du français A1 ebook 1st Edition


Didier

https://ebookstep.com/product/grammaire-essentielle-du-
francais-a1-ebook-1st-edition-didier/

Die Staatskonkurs Aufgaben im Jahre Die Aufgaben in den


Jahren 1885 bis 88 für die Rechstpraktikanten in der
Pfalz

https://ebookstep.com/product/die-staatskonkurs-aufgaben-im-
jahre-die-aufgaben-in-den-jahren-1885-bis-88-fur-die-
rechstpraktikanten-in-der-pfalz/
Cotton and Williams' Practical Gastrointestinal
Endoscopy - The Fundamentals, 8e (Apr 22,
2024)_(1119525209)_(Wiley-Blackwell) 8th Edition Walsh

https://ebookstep.com/product/cotton-and-williams-practical-
gastrointestinal-endoscopy-the-
fundamentals-8e-apr-22-2024_1119525209_wiley-blackwell-8th-
edition-walsh/

■■■■■ ■■ Tochka ru A1 textbook 2nd Edition Olia


Dolmatova

https://ebookstep.com/download/ebook-47242060/

På nivå Arbeidsbok A1 Gjennombrudd 1st Edition Gølin


Kaurin Nilsen

https://ebookstep.com/product/pa-niva-
arbeidsbok-a1-gjennombrudd-1st-edition-golin-kaurin-nilsen/

Centro 1 A1 A2 1st Edition Daniele Baldassarri Manuela


Brizzi

https://ebookstep.com/product/centro-1-a1-a2-1st-edition-daniele-
baldassarri-manuela-brizzi/

100 FLE Communication essentielle du français A1 1st


Edition Dider

https://ebookstep.com/product/100-fle-communication-essentielle-
du-francais-a1-1st-edition-dider/
0 @ 000 @ O
~
巴 气
、t'

算机组成与设计
硬件/软件接口
戴维. A. 帕特森 (David A. Patterson)
[美] 著
约翰 . L. 亨尼斯 (John L. Hennessy)
王党辉安建峰张萌王继禾译

,I Computer Organization and Design


The Hardware/Software Interface, MIPS Editi皿 Sixth Edition

。 机械工业出版社
China Machine Press
图书在版编目 ( CIP) 数 据

计算机组成与设计 : 硬件/软件接口 : MIPS 版 : 原书第 6 版/ (美)戴维 . A. 帕特森 (David A. Patterson) ,


(美)约翰 . L. 亨尼斯 (John L. Hennessy) 著 , 王党辉等泽 . - - 北京 : 机械工业出版社 , 2022.6 (2023.1 重印)
(计算机科学丛书)
书名原文: Computer Organization and Design: The Hardware/Software Interface, MIPS Edition , Sixth Edition
ISBN 978-7-111-70886-5

I. 心计· 令 . II. 心戴… @约 .. @王 … III.心计算机组成原理 IV. 心 TP301

中国版本图书馆 CIP 数据核字 (2022) 第 092626 号

北京市版权局著作权合同登记 图字 : 01-2021-2551 号。

Computer Organization and Design: The Hardware/Software Interface, MIPS Ed 山 on, Sixth Edition
David A. Patterson, John L. Hennessy
ISBN: 9780128201091
Copyright © 2021 Elsevier Inc. All rights reserved. Authorized Chinese translation published by China
Machine Press.
计算机组成与设计:硬件/软件接口 MIPS 版(原书第 6 版)(王党辉安建峰张萌王继禾译)
ISBN: ~787111708865
Copyright © Elsevier Inc. and China Machine Press. All rights reserved.
No part of this publication may be reproduced or transmitted in any form or by any means, electronic
or mechanical, including photocopying, recording, or any information storage and retrieval system, withou t
permission in writing from Elsevier (Singapore) Pte Ltd. Details on how to seek permission, further information
about the Elsevier's permissions policies and arrangements with organizations such as the Copyright Clearance
Center and the Copyright Licensing Agency, can be found at our website: www.elsevier.com/permissions.
This book and the individual contributions contained in it are protected under copyright by Elsevier Inc.
and China Machine Press (other than as may be noted herein).
This edition of Computer Organization and Des ign: The Hardware/Sof tware Inte rface, MIPS Ed 山 on, Sixth
邸tion is published by China Machine Press under arrangement with ELSEVIER INC.
This edition is authorized for sale in Chinese mainland (excluding Hong Kong SAR, Macao SAR and
Taiwan) . Unauthorized export of this ed山 on is a violation of the Copyright Act. Violation of this Law is
subject to Civil and Criminal Penalties.
本版由 ELSEVIER INC .授权机械工业出版社在中国大陆地区(不包括香港、澳门特别行政区及台湾地区)出版发行。
本版仅限在中国大陆地区(不包括香港、澳门特别行政区及台湾地区)出版及标价销售。未经许可之出口,视为违反著
作权法,将受民丰及刑丰法律之制裁。
本书封底贴有 Elsevier 防伪标签,无标签者不得销售。

注意
本书涉及领域的知识和实践标准在不断变化。新的研究和经验拓展我们的理解,因此须对研究方法、专业实践或
医疗方法作出调整。从业者和研究入员必须始终依靠自身经验和知识来评估和使用本书中提到的所有信息、方法、化
合物或本书中描述的实验。在使用这些信息或方法时,他们应注意自身和他入的安全,包括注意他们负有专业责任的
当事人的安全。在法律允许的显大范圉内,爱思唯尔、译文的原文作者、原文编辑及原文内容提供者均不对因立品责
任、疏忽或其他入身或财产伤害及/或损失承担责任,亦不对由于使用或操作文中提到的方法、产品、说明或思想而
导致的人身或财产伤害及/或损失承担责任。

出版发行:机械工业出版社(北京市西城区百万庄大街 22 号 邮政编码 100037 l


责任编辑:曲熘 责任校对:殷虹
印 刷:河北宝 昌 佳彩印刷有限公司 版 次: 2023 年 1 月第 1 版第 2 次印刷
开本 : 1 85mm x 260mm 1/16 印张: 37.25
书号: ISBN 978 - 7- 111 - 70886 - 5 定价: 149 . 00 元

客服电话: ( 010) 88361066 68326294

版权所有 · 佞权必究
封底元防伪标均为盗版
1 译者序
Computer Organization and Design: The Hardware/Software Interface, MIPS Edition, Sixth Ed山on

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 月于西北工业大学
前言 I
Computer Organization and Design: The Hardware/Software Interface, MIPS Ed山on, Sixth Ed山on

神秘是我们能体验的最美好的事物,它是所有真正的艺术和科学的源泉。
阿尔伯特·爱因斯坦,《我的信仰》, 1930

关千本书
在学习计算机科学与工程时,除了掌握计算的基本原理外,还应该了解该领域的最新进
展。计算领域中各个方向的读者都应学习计算机系统的组成理论,因为这是决定计算机系统
的功能、性能甚至成功的关键。
要推动现代计算机技术的发展,需要对硬件和软件都有深入理解的专业人士。硬件和软
件在多个层次上的相互影响成为理解计算基本原理的框架。无论你的主要兴趣是硬件还是软
件,是计算机科学还是电气工程 ,计算机组成与设计的基本思想都是相 同的 。因 此,本书着
重展示硬件与软件的关系,并重点介绍当今计算机中的基础概念。
处理器巳经由单核发展为多核,且近年来更强调领域专用体系结构,该趋势印证了本
书自第 1 版就提出的观点。过去 , 程序员可以忽略这一发展趋势,并希望计算机体系结构
专家、编译器设计者和芯片 工程师能够帮助他们,让程序不做任何修改就可以更快、更高
效地在新型处理器上运行。但是,这样的时代已经一去不复返了。我们认为,至少在下一
个十年里, 大多数程序员只有理解硬件/软件接口,才能编写出在现代计算机上高效运行的
程序。
本书适合以下读者阅读:在汇编语言或逻辑设计方面只有少许经验,需要理解计算机组
成的基本原理的读者;具有汇编语言或逻辑设计的基础,需要学习如何设计计算机,或者要
进一步理解计算机系统如何工作的读者 。

与本书相关的另一本书
有些读者可能已经熟悉我们的另一本书 《计算机体系结构:量化研究方法》,该
书巳广为流传,经常以作者姓名命名,称为 “Hennessy and Patterson" ( 本书 则常称为
" Patterson and Hennessy”) 。该书的目的 是用坚实的 工程基础和 量化的性价比权衡来描述计
算机体系结构的原理 。 该书基于商用系统,将案例与测量方法相结合,帮助读者理解实际的
设计。该书的目标是通过量化分析方法讲解计算机体系结构,而不是仅仅对相关知识进行描
述。因此,该书主要面向希望深入理解计算机系统的计算机专业人士。
本书的大多数读者并不一定要成为计算机体系结构的设计者。软件设计人员 对系统中
基本硬件技术的理解,将显著影响未来软件系统的性能和能效 。 因此,编译器设计者、操作
系统设计者、数据库程序员以及其他大多数软件工程师对本书所述的原理都应当有充分的了
解 。 同样,硬件设计者也必须清楚自己的工作对软件的影响。
所以,本书的内容绝不仅仅是 “Hennessy and Patterson" 的 子集, 而是进行了大量的 扩
展和修订,以满足不同读者的需求 。 我们对再版 “Hennessy and Patterson" 时删除大量介绍
性材料的效果感到满意,与第 1 版相比,这两本书的内容重叠度已大大降低 。
v

第 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.12 入 人
第 1 章计算机抽象及相关技术
匡 1.13 (历史 ) ` J- - -.f 息 ;一/'

2.1~ 2.14 L 口巳
吕 2.15 (编译器和 Java) 人、
第2章 指令 :计算机的语言
2.16~ 2.22 人丿L 严

窑 2.23 (历史) `一;J 亡了心了

附录 E 指令集体系结构综述 祠 E. l ~ E. 6 入

3.1~ 3.5 卢 人j豆

3.6~ 3.8 (子字并行 ) 人 人


第 3章 计算机的算术运算
3.9~ 3 . 10 (谬误 ) 人、 人.

画 3.11 (历史) 二六7 亡一六二7

附录 B 逻辑设计基础 B.l ~ B.13 人


VI

(续)
章/附录 心
T 关注软件 关注硬件

4.1 (引言) 人 人

4.2 (逻辑设计的一般方法) L—IL-


4.3~4.4 (简单实现) 人 人

4.5 (多周期实现) 人心

4.6 (流水线概述) 比 儿
第 4 章处理器 4.7 (流水线数据通路) 人心 比
4.8~4.10 (冒险和异常) 人

4.11~4.13 (并行和实例) L~ LJL


园 4.14 (Verilog 流水线控制) 比尸

4.15~4.16 (谬误) 人 比

园 4.1 7 (历史) 文 汇亡

附录 D 将控制映射至硬件 铜 D.l~D.6 文 ·
5.1~5.10 人 义

舌 5.11 (廉价冗余磁盘阵列) 义J心 人心


第 5 章大容晕和高速度:开发存储器
霾 5.12 (Verilog cache 控制器) 人
层次结构
5.13~5 .16 人 人一

匣 5.17 (历史) 文 江尸召

6.1~6.9 人 人
一一

第 6 章从客户端到云的并行处理器
, 国 6.10 (集群) x 比
6.11~6.15 人 LL
鹄 6.16 (历史) 汇 入

附录 A 汇编器 、 链接器和 SPIM 仿真器 A.l~A.11 义 人

附录 C 图形 与计算 GPU 弱 C.l ~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 版本也做了这样的比较,并且更新了其他
VII

相关内容。)
· 第 1 章 中基准测试程序的例子从 SPEC2006 升级到 SPEC201 7 。
. 第 4 章中 , 根据教师的需求 , 在 MIPS 的单周期实现和流水线实现之间 , 将多周期实
现作为一节线上内容。一些教师认为使用单周期-多周期-流水线的三步教学法可
使流水线更容易理解。
· 第 4 章和第 5 章的“实例”一节都更新为新的 ARM Cortex-A53 微体系结构和 Intel
Core i7 6700 Skylake 微体系结构。
· 第 5 章和第 6 章的"谬误与陷阱"一节分别增加了使用 Row Hammer 和 Spectre 进行
硬件安全攻击的内容。
. 第 6 章新增一节 , 使用 Google 的张量处理单元 (TPU ) (vl) 对 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 (加州大学伯克利分校)的同行在本书的撰写过程中起了更大的作用 。当 然,如果
读者对新内容不满意 , 抱怨的对象应该只有我一人 。

致谢
在本书的 每一 版中 , 我们都非常幸运地得到了来自许多读者、评审者和其他人员的帮

e 参考数据卡见本书封面和封底的背面。 一编辑注
© 关于本书教辅资源,只有使用本书作为教材的教师才可以申请,需要的教师请访间爱思唯尔的教材网站
https://textbooks.elsevier.com/ 进行申诸 。 一编辑注
VIII

助 。 每个人的帮助都使本书更加完美 。
特别感谢 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 (N ortheastern University) , Nic ole Kaiyan (U niversity of Adelaide), John
Oliver (Ca l Poly, San Luis Obispo), Milos Prvulovic (Ge orgia Tech) ,如huan Chang 、 Jacob
Leverich 、 Kevin Lim 、 Partha Rangana than (Hewlett-Packard ) 。 感谢 Peter J. Ashenden(Ashenden
Design Pty Ltd) 对前面几版做出的贡献。
特别感谢 Jason Bakos 开发了新的幻灯片 。
感谢许多教师的贡献,他们回答出版社的调查问卷,评审我们的提议,出席小组会议,
并对本版以及前面版本的 计划进行分析和反馈 。 详细名单如 下 。
专题小组: Bruce Bar ton (S uffolk County Community College), Jeff Braun (Montana
Tech), Ed Gehringer (Nort h Carolina State), Michae l Goldweber (Xav ier University),
Ed Harcourt (S t .Law rence Unive rsity), Mark Hill (U niversity of Wisconsin, Madison ),
Patrick Homer (U niversity of Arizona), Norm Jouppi (HP Labs), Dave Kaeli (N orthea stern
University), Christos Kozyraki s (S tanford University), Zachary Kurmas (Gra nd Valley State
University) , Jae C. Oh (Sy racuse Univers ity ), Lu Peng ( LSU ), . Milos Prv ulovic (Georg诅
Tech), Partha Ranganathan (H P Labs), David Wood (University of Wisconsin ), Craig Zilles
(U niversit y of Illinois at Urbana-Champaign) 。
调查问卷和评审 : Mahmoud Abou-Nasr (Way ne State University), Perry Alexander (T he
University of Kansas), Hakan Aydin (G eorge Mason University), Hussein Badr (S tate University
of New York at Stony Brook), Mac Baker (V irginia M山tary In stitute ), Ron Barnes (Ge orge
Mason University), Douglas Blough (Georgia Institut e of Technolog y), Kevin Bolding ( Seattle
Pa cifi c University), Mio drag Bolic (Unive rsity of Ottawa), John Bonomo (West minster
College), Jeff Braun (M ontana Tech ), Tom Briggs (S hippe nsburg University), Scott Burgess
(H umboldt State University ), Fazli Can (B ilkent University), Warren R. Cari thers (Roc hester
Institute of Technology), Bruce Carlton (Mesa Communit y College), Nichola s Carter (University
of Illinoi s at Urbana - Champ aign ), Anthony Cocchi (T he City University of New York), Don
Cooley (U tah State University), Robert D. Cupp er (A llegheny Co llege), Edward W. Davis
IX

(North Carolin a Stat e Un iversity) , Nathaniel J . Davis ( Air Force Insti tute of Technology) ,
M olisa Derk ( Oklahom a City University) , Nathan B . Dodge (The Uni versit y of Texas at
Dallas) , Derek Eager ( University of Saskatche wan) , Ernest Ferguson (Northwest Missouri
State University) , Rhonda Kay Gaede(The University of Alabama) ,Etienne M. Gagnon(U QAM),
Costa Gerousis (Christopher N ewport Unive rsity), 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. L awrence 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 Univers ity of New York —New Paltz) , Reza
Jafari , Robert W. Johnson ( Colorado Technical Uni versity) , Bharat Joshi (University of
North Carolina, Charlotte) , Nagarajan Kandasamy (Drexel University) , Rajiv Kapadia ,
Ryan Kastner (Uni versity 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) , Mani sh 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 (Seatt le University) , Walid Najjar (Uni versity of California ,
Riverside) , Danial J. Neebel(Loras College),John Nestoi{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
x

(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 人为本书提供了大量帮助 , 使之成为我们期望的最好的书 。 希望读者
能够喜欢本书!

David A. Patterson
1 作者简介
Computer Organization and Design: The Hardware/Soft ware Interface, MIPS Edit~o!~!~ i~ I

戴维 . A. 帕特森 (David A. Patterson) 从 1977 年在加州大学伯克利分校任职开始一直


讲授计算机体系结构课程 , 曾任计算机科学系的 Pardee 主席。他的教学工作获得了加州大
学杰出教学奖、 ACM Karlstrom 奖、 IEEE Mulligan 教育奖章和本科生教学奖。因对 RISC 的
贡献 , 他获得了 IEEE 技术进步奖和 ACM Eckert-Mauchly 奖 ; 因对 RAID 的贡献 , 他与合
作者分亨了 IEEE Johnson 信息存储奖。他和 John Hennessy 分享了 IEEE John von Neumann
奖章与 C&C 奖励。他是美国艺术与科学院、美国国家工程院、美国国家科学院和计算机历
史博物馆院士, ACM 和 IEEE 会士,并且入选了硅谷工程名人堂。他曾任伯克利 EECS 系
CS 部门主席 、 计算研究学会主席和 ACM 主席 。 这些贡献使他获得了 ACM 和 CRA 的杰
出服务奖 。 他因关 于公民科学和计算多样化的研究而获得了 Tapia 成就奖 , 并千 2017 年与
Hennessy 分享了图灵奖。
在伯克利, Patterson 领导了 RISC I 的设计与实现,这是第一款 VLSI 精简指令系统计
算机 , 并且是商用 SPARC 体系结构的基础 。 他是廉价磁盘冗余阵列 (RAID ) 项目的负责
人,许多公司利用 RAID 技术开发出高可靠存储系统 。 他也参与了工作站网络 (NOW) 项
目 , 该项目先引导了互联网公司对集群技术的使用,之后又引导了云计算的应用。这些项目
获得了三项 ACM 最佳论文奖。 2016 年,他成为伯克利荣休教授和 Google 杰出工程师 , 目
前,他在 Google 从事机器学习领域专用体系结构的研究 。 他也是 RISC-V 国际协会副主席
和 RISC-V 国际开源实验室主任 。
约翰 . L.亨尼斯 (John L. Hennessy) 从 1977 年开始任职于斯坦福大学电气工程与计
算机科学系 , 是斯坦福大学第 十任校 长。 Hennessy 是 ACM 和 IEEE 会士,美国国家工程
院、美国国家科学院、 美 国艺术 与 科学院院士 。 他获得了许多奖项,其中包括:因对 RISC
的贡献获得的 2001 年 ACM Eckert-Mauchly 奖, 2001 年 Seymour Cray 计算机工程奖 , 与
Patterson 分享的 2000 年 John von Neumann 奖章,与 Patterson 分享 的 2017 年图灵奖 。 他还
获得了七个荣誉博士学位。
1981 年 , 他在斯坦福大学与几个研究生开始了 MIPS 项目 。在 1984 年完成该项目后,
他离开大学, 与他人共同创建 了 MIPS 计算机系统公司(现在的 MIPS 技术公司),该公司开
发了第一款商用 RISC 微处理器。 2006 年 , MIPS 微处理器销售了 20 亿片 , 应用范围从视
频游戏和掌上计算机到激光打印机和网络交换机 。后来 , Hennessy 领导了 DASH (共享存储
样的体系结构)项目 , 该项目建立了第 一个可扩展 cache 一致性多处理器的原型系统,其许
多关键思想已经应用在先进的多处理器中。除了技术活动与大学工作外,他还是多家创业公
司的早期顾间 和投资者 。
他目前是 Knight-Hennessy 学者奖学金项目的主管 ,并担任 Alphabet 的非执行董事长。
日录 1
Computer Organization and Design: The Hardware/Software Interface , MIPS Edition, Sixth Edition

译者序 1.9.2 SPEC 功耗基准测试程序 ..,.. .. 34


前言 1.10 加速:使用 Python 语言编写矩阵
作者简介 乘法程序 .................................... 35
1.11 谬误与陷阱... . .. .. ... .... ... .............. 36
第 1 章计算机抽 象及相关技术 .. 1 1.12 本章小结. . ................................. 38
1.1 引言 . .. . . .... ......... J 回 1.13 历史观点和拓展阅读 . .. •· 39
1.1.1 计算应用的分类及其特性........ 2 1.14 §~.. ........ .................................
自学.. ........ ..... 39
1.1.2 欢迎来到后 PC 时代..... 3 1.15 练习题. ...... .. ............. .... ...... ... ... 42
1.1.3 你能从本书学到什么 ................4

1.2 计算机体系结构的 7 个伟大思想... 6 第 2 章指令:计算机的语言 46


1.2.1 使用抽象简化设计.................. 6 2.1 弓 I 言... ........................... ... . . .. . ..... 46
1.2.2 加速大概率事件................. . ... 6 2.2 计算机硬件的 操作. ................. . .... 48

1.2.3 通过并行提高性能............. . . . .. 6 2 .3 计算机硬件的操作数.............. . ..... 50


1.2.4 通过流水线提高性能...... . ..... 6 2.3 .1 存储器操作数 . .. . ....... .. .......... 51
1.2.5 通过预测提高性能......... . ........ 7 2.3.2 常数或立即数操作数. ........... . 53
1.2.6 存储层次.. . .. . .... . .. . ... .. .. . .. . ... . . . . 7 2.4 有符号数和无符号数................…· 54
1.2.7 通过冗余提高可靠性 . ............ . . 7 2.5 计算 机中指 令的表示... . ................ 59
1.3 程序表象之下....................... . .... ... 8 2.6 逻辑操作. ......................... . . ... . ... . . 65
1.4 机箱 之内的硬件. .. ... .... .... .. .. . . . ..... JO 2.7 决策指令 ······ ····· ············· · · · ·· · · · · · · · · 67
1.4. 1 显示器.......... . ...... . ... · ·····•······ 11 2.7.1 循环...... . . . .. .. . . . .. ... ............... . 68
1.4.2 触摸屏 . .... ... ...... .................... 12 2.7.2 case/switch 语句........ .... ........ 70

1.4.3 打开机箱 ...... . . ... ..... . . . . . ......... 13 2.8 计算机硬件对过程的支持 . 71


1.4.4 数据安全 ...... . ......... . . . ... ... . .... 15 2.8.1 使用更多寄存器 . ... . ........... . ... 72
1.4.5 与其他 计 算机通信. .. ...... .. ...... 16 2.8.2 嵌套过程.............................. 74

1.5 处理器和存储器制造技术............ 17 2.8.3 在栈中为新数据分配空间 .... 76


1.6 性能... . .. . ........ . .... . .. .. ... . ..... . . . ...... 20
2.8.4 在堆中为新数据分配空间. . ... 76
1.6.1 性能的定义... . ..... . ... . ............. 21 2.9 人机交互..... . ... . .... . .. . ...... . ........... 78

1.6.2 性能的度量.... ... ..•. .......... . .. .... 23 2 .10 MIPS 中 32 位立即数和地址的


1.6.3 CPU 性能及其因素................ 24 寻址· · ·················· ·· ······ ··· ·· ···· ·····
82
1.6.4 指令的性能. ............... . .... .. .... 25 , 2. 10.1 32 位立即数........................ 83

1.6.5 经典的 CPU 性能公式 . . . . . ... 26 2.10.2 分支和跳转中的寻址 ...... .. .. 83


1.7 功耗墙 . ... . ...... . ............ . ............... 28 2.10.3 MIPS 寻址模式总结 . ....... .. .. 85
1.8 沧海巨变: 从单处理器向多处理器 2.10.4 机器语言解码...................... 87

转变 . ... . .. ............. . ....................... 30 2.11 并行与指令:同步.................···· 89


1.9 实例 : Intel Co re i7 基准. . . .. .. ... .. 32 2 .12 翻译并执行程序 . ............ ... 91
1.9.1 SPEC CPU 基准测试程序... .... 32 2.12.1 编译器.. . ....... .. ........ . . . ... . . .... 91
XIII

2.12.2 汇编器............ . .......... . ...... 91 3.3.3 更快速的乘法...... . .. . .. . ......... 139


2.12.3 链接器.. . .. ... ...... ..... ....... 93 3.3.4 MIPS 中的乘法.... . ....... . .... 140
2.12.4 加栽器.. . ...... . .. .. .............. 95 3.3.5,J 、结.. . ................ .. . . . . ......... ·140

2.12.5 动态链接库. . ....... . ......... . .. . . 95 3.4 除法 .. .. . . . . . .......................... . ...... 140


2.12.6 启动一个 Java 程序 .... . 97 3.4.1 除法算法和硬件............... . 141
2.13 综合实例 : C 排序程序 98 3.4.2 有符号除法 . ...... . . . . .. . . ... . · · · · 143
2.13.1 swap 过程.. .. . .... ..... . .. .. .. ... 98 3.4.3 更快速的除法. .. .... ... . . . .... . . . .. J44
2.13.2 sort 过程................· · · · · · JOO 3.4.4 MIPS 中的除法 .. ... ... . ........... 144
2.14 数组与指针. . .............. . ............ 104 3.4.5,J 、结.. .. ........................ . ...... 145
2.14.1 用数组实现 clear... . ... ········· 104 3.5 浮点运算........................... . ..... 146
2.14.2 用指针实现 clear···· · ···· · .... ·· 106 3.5.1 浮点表示............. . ... . .. . ... .. .. . 147
2.14.3 比较两个版本的 clear········· 106 3.5.2 浮点加法 . ... . . . . .. . . . . ...... 151
画 2.15 高级内容 : 编译 C 语言和解释 3.5.3 浮点乘法 .. .... . ... . ... . .... . . . .. 154
Java 语言 . . . . .... .. .. .. .. . . . .. ..... . ..···· 107 3.5.4 MIPS 中的浮点指令............. 156
2.16 实例 : ARMv7 (32 位)指令集 107 3.5.5 算术精确性.......... . .... .. . 161
2.16.1 寻址模式.....................·· ·· 108 3.5.6,J 、结....................... . ...... . . . .· 163
2.16.2 比较和条件分支 . . . . . .. .. . .. . . . . 108 3.6 并行性和计算机算术 : 子字并行 164
2.16 .3 ARM 的特色 . ... . . . . . ........ 109 3.7 实例 : x86 中的流处理 SIMD
2.17 实例 : ARMv8 (64 位)指令集 111 扩展和高级向量扩展... . . . ..... . ...·· 166
2.18 实例 : RISC-V 指令集..... :...... · 112 3.8 加速 : 子字并行和矩阵乘法 167
2.19 实 例 : x86 指令集.................... . 112 3.9 谬误与陷阱................................ 168

2.19.1 Intel x86 的演进 112 3.10 本章小结 . . . 171


2 . 19.2 x86 寄存器和数据寻址模式 114 国 3.11 历史观点和拓展阅读................ 174
2.19 .3 x86 整数操作. . . .. .. .. .. . . . . . ..... 115 3.12 自学.. . ........ . . . ..... . .. . . . . · ·· · ·· · ····· 174

2.19.4 x86 指令编码................ 117 3.13 练习题 . .. .. .............. 176


2.19.5 x86 总结............................ 119
2.20 加速 : 使用 C 语言编写矩阵 第 4 章处理器 .. .. .... .. .... 181
乘法程序 .... . . . .... .. . ...... . .. . ... . . .. .. . 119 4.1 弓 l 言· · ····· · ·· ·· ········ · ······· · ······· · ··· · · 181
2.21 谬误与陷阱············· • ·· · ·· · ··· ·· · · ·· · 120 4.1. 1 一个基本的 MIPS 实现 182
2.22 本章小结··· · ·· ·· ···· ·· · · ···· · · ·· · ····· · ·· 122 4. 1.2 实现方式概述,........ , ... . . . 182
器 2.23 历史观点和拓展阅读 ..... 124 4.2 逻辑设计的一般方法 . ·· · • · · ·· · ·•"" 184
2.24 自学. .. .. . .... . ..... .. .... . ... . ..... . ....... ]24 4.3 建立数据通路...... . ...... . . . . . ......... . 187

2.25 练习题................ . ........... . ..... .. . 126 4.4 一 个简单的实现机制.. .. .. . . . .. . . . ... 193


4.4.1 ALU 控制................. . ....... · · 193
第 3 章计算机的算术运算. . .. .. ......... 132 4.4.2 主控制单元的设计...... . ... . . . 195
3.1 弓 l 言.................. ....... .. ...... . ....... .. 132 4.4.3 为什么不使用单周期实现方式 201
3.2 加法和减法 . . . . . . . 132 罢 4.5 多 周期实现...... ...... ........ ... 202

3.3 乘法. . . . .. . .. . . . , ... . .. . . ... .. . .. .. . .. . ....... 136 4.6 流水线概述........ . ............. . .. . .... . . 203

3.3.1 顺序的乘法算法和硬件 . 137 4.6.1 面向流水线的指令集设计 ·206


3.3.2 有符号乘法 ... ........ ... ........... 139 4.6.2 流水线冒险····· · ····· ······ ····· ·· · 207
XIV

4.6.3,J 、结................................... 212 5.2.2 DRAM 技术········· · ·· · ··········· 285


4.7 流水线数据通路与控制...…......... 213 5.2.3 闪存.............. . .................... 287

4.7.1 图形化表示的流水线…......... 221 5.2.4 磁盘存储器....... . ... . ... . ..... . ... 287
4 .7.2 流水线控制......................... 224 5.3 cache 的基本原理········ · ·············· 289
4.8 数据冒险:旁路与阻塞............... 227 5.3.1 cache 访问········· · ·· · ······ · ······· 291
4.9 控制冒险................................... 237 5.3.2 cache 缺失处理....... . ............ 295
4.9.1 假定分支不发生............... . .. 238 5.3.3 写操作处理. . ... . .. ·· · ··············296

4.9.2 缩短分支的延迟····· · ·········· · · 238 5.3.4 cache 实例: Intrinsity

4.9.3 动态分支预测.... . ....... . .. . . . .... 241 FastMATH 处理器.. ··············297


5 . 3.5,J 、结.................. . ............... ·299
4.9.4,J 、结......... . . . ....... . ...... . ....... ·244

5.4 cache 性能的评估和改进 ···· ······· ·· 299


4.10 异常 ········································245
5.4.1 通过更灵活地放置块来减少
4 .10.1 M腮体系结构中的异常处理… 245
cache 缺失........................... 302
4.10.2 流水线实现中的异常 ··········246
5.4.2 在 cache 中查找块.............… 305
4.11 指令级并行.............................. 249
5.4.3 替换块的选择...................... 306
4.11.1 推测的概念.............. . ......... 250
5.4.4 使用多级 cache 结构减少
4.11.2 静态多发射处理器.…......... 251
缺失代价... . . . .. . .............. ....... 307
4.11.3 动态多发射处理器........…·· 255
5.4.5 通过分块进行软件优化........ 309
4 .11.4 能耗效率与高级流水线····· 258
5.4 . 6,J、结••.•···················· · ···········
312
4.12 实例 : Intel Core i7 6700 和
5.5 可信存储器层次............... ........... 312
ARM Cortex-A53 · · · · · ·· · · · ·· · ·· · · · · · · · 259 5.5.l 失效的定义......................... 313
4 .12.1 ARM Cortex -A53 ···············259
5.5.2 纠正一位错、检测两位错的
4.12.2 A53 流水线的性能.... . ........ 261
汉明编码 (SEC/DED)·········· 314
4.12.3 Intel Core i7 6700 · ·· · ·· · · · · · · ·· 263 5.6 虚拟机........................ . . . ........... 317

4.12.4 Intel Core i7 的性能......... ···265


5.6.1 虚拟机监视器的必备条件.... 318
4.13 加速:指令级并行和矩阵乘法 ···266
5.6.2 指令集体系结构(缺乏)对
萝 4.14 高级主题:数字设计概述--— 虚拟机的支持...................... 319
使用硬件设计语言进行流水线 5.6.3 保护和指令集体系结构....... 319
建模以及更多流水线示例..… ..268 5.7 虚拟存储器................................ 320
4.15 谬误与陷阱. ..... .. ........ .. .... ..... ···268 5.7.1 页的存放和查找.................. 323
4.16 本章小结········•"•········ · ···· ·· ··· · ·· 269 5.7.2 缺页故障......... . ................... 324
据 4.17 历史观点和拓展阅读 ····· · ········ · ·269 5.7.3 关于写................................ 327
4.18 自学......... . ................. .. ···· · ······269 5.7.4 加快地址转换: TLB ········ ···· 327
4.19 练习题........ ... ..... . .................... 270 5.7.5 集成虚拟存储器、 TLB 和
cache··································
331
第 5 章大容量和高速度:开发 5.7.6 虚拟存储器中的保护.... .. ..... . 332
存储器层次结构··· · · · ···· · ········· 281
5.7.7 处理 TLB 缺失和缺页·········· 333
5.1 弓 I 言 ················· · ························ 281 5.7.8 小、结.... .. ... . ......................... 337

5.2 存储器技术................................ 285 5.8 存储器层次结构的 一般框架 .. 338


5.2.1 SRAM 技术.............. . .... . .. . .. 285 5.8.1 问题 1: 块放在何处............ 339
XV

5.8.2 问题 2 : 如何找到块.... . ....... 340 6.6 图形处理单元······ · ················· · ··· 390


5.8.3 问题 3 : cache 缺 失时替换 6.6.1 NVIDIA GPU 体系结构简介. 391
哪一块· · · · · ·· ··· · · · ·· · · · ·· ·· · · · ·· ·· · ·· 340 6.6.2 NVIDIA GPU 存储结构........ 393
5.8.4 问题 4 : 写操作如何处理······ 341 6.6.3 GPU 展望. .... ... ........ ........... 394
5.8.5 3C : 一种理解存储器层次 6.7 领域专用体系结构. . ................... 396
结构行为的直观模型...... 342 6.8 集群、仓储级计算机和其他
5.9 使用有限状态机来控制简单的 消息传递多处理器................. 398
cache·························· ········ ·· ····· 343 6.9 多处理器网络拓扑简介· · ············· 402
5.9.1 一个简单的 cache · ···· · ····· · ···· 343 国 6.10 与外界通信:集群网络.......... 404
5.9.2 有限状态机......... . ............... 344 6.11 多处理器基准测试程序和

5.9.3 一个简单 cache 控制器的 性能模型..... . ... . ...... . ..... . ......... .. 405
有限状态机.. ... .. .. .. ...... . ....... 346 6.11.1 性能模型. ....................... . . 407
5.10 并行与存储器层次结构 : 6.11.2 Roofline 模型.... .... ............. 408
cache 一致性. . .. . ...... . .. . .· · ·········· 347 6. 11.3 两代 Opteron 的比较.......... 409
5.10 .1 实现一致性的基本方案...... 348 6.12 实例 : Google TPUv3 超级
5. 10.2 监听协议........................... 348 计算机和 NVIDIA Volta GPU
的评测..................................... 413
锯 5.11 并行与存储器层次结构:廉价
冗余磁盘阵列 . ........ . ............ . .... 350 6.12.1 DNN 的 训练和推理........ .... 413

6.12.2 DSA 超级计算机网络 ......... 414


雒 5.12 高级内容:实现 cache 控制器 350
6.12.3 DSA 超级计算机节点......... 414
5.13 实例 : ARM Cortex-A53 和 Intel
6.12.4 DSA 算术运算.. ..... .. ....... . .. 416
Core i7 的存储器层次结构. 350
5.14 加速 : cache 分块和矩阵乘法. 354 6.12.5 TPUv3 与 Volta GPU 的比较. .. 417
5.15 谬误与陷阱 . . . . . . . .. . ..... . ...... . ... . .. . 355
6.12.6 性能.. . ... . . . . . . . . . ... . ....... . ... . ... 418

5.16 本章小结................................. 359 6.13 加速 : 多处理器和矩阵乘法 419


6.14 谬误与陷阱.. . . . ... . .. . . . . . .. . ... . .. . . .. . 421
国 5.17 历史观点和拓展阅读................ 359
5.18 自学........................... . . . .... . ..... 359
6.15 本章小结 . . . ....... . .. . ... . .. . ...... . .. .. . 423

5.19 练习题........ . .. . ............. . .. . ........ 362 锯 6.16 历史观点和拓展阅读. .. ... . . . . ... . .. 425
6.17 自学................................... . .. . . 425

第6章 从客户端到云的并行处理器 374 6.18 练习题····································· 426

6.1 引言..... .
•...... 374 ........ 附录 A 汇编器、链接器和 SPIM
6.2 创建并行处理程序的难点. . 376 仿真器................................... 435
6.3 SISD 、 MIMD 、 SIMD 、 SPMD 和
向 量机.. .... . . 379 附录 B 逻辑设计基础....................... 486

6.3.1 x86 中的 SIJ\1D : 多 媒体扩展 "·380 索弓 I. . ....... .. ........... . .............................. 544


6.3.2 向量机. . .. . . . .... . .. . .. . .. . ... . ... . ..,380

6.3.3 向量与标量....... ......... 382 网络内容e


6.3.4 向量与多媒体扩展............... 382 附录 C 图形与计算 GPU
6.4 硬件多线程................................ 385 附录 D 将控制映射至硬件

6.5 多核和其他共享内存多处理器. . 387 附录 E 指令集体系结构综述

e 网络内容请访问原书配套网站 https://textbooks.elsevier.com/web/manuals . aspx?isbn=97801 2820 1091 下载。


—编辑注
I 第1 章
Computer Organization and Design: The Hardware/Software Interface, MIPS Edition, Sixth Ed山on

计算机抽象及相关技术

1.1 引言

欢迎阅读本书!非常高兴有机会与大家一起分享令人兴奋的 在不关庄具体过程的情况下

趣的领域。事实上,计算机是极度充满生气的信息技木工业的产 1二亡二二尸
计算机系统世界 。 这是一 个进步飞快、新思想层出不穷、非常有

物 , 其相关产品几乎占全美国民生产总值的 10% 。美国的经济已


完成更多的重要操作 , 这种

励呻c//0J1/oM吭em叩cs, l如
经与信息技术密不可分。这个不寻常的工\Iv 领域具有惊人的发展
速度 。 在过去 40 年里,出现了许多引起计算产业革命的新型计算机 , 但它们很快就被更好
的计算机所取代。
电子计算机自 20 世纪 40 年代后期诞生以来,其充满创新性的竞争带来了史无前例的
进步 。 如果运输业能够以计算机工业的速度发展 , 那么我们 只 需要花一美分就可 以在一秒钟
之内从纽约赶到伦敦。想象一下,这样的进步将如何改变社会一一在南太平洋的塔希提岛生


活,而在旧金 山 工作 , 傍晚去莫斯科欣赏波修瓦芭蕾舞团的演出——你能够想象得 出 这种技
术进步的意义。
沿着农业革命、工业革命的发展方向 , 计算机促进了人类的第三次革命 信息革命 。
信息革命使人类的能力成倍增长,自然而深刻地影响着人类的日常生活,甚至改变了人类寻
求新知识的方法 。 现在出现了 一 种科学探索的新方式, 即 计算科学家联合理论和实验科学
家 , 共同探索天文学、生物学、化学、物理学及其他学科的前沿问题 。
计算机革命一直在向前推进 。每当 计算成本降低为原来的 1/10, 计算机的发展机遇就会
成倍增长。原本出于经济原因不可实现的应用突然就变得可实现了 。 例如 , 下述各项应用在
过去都曾是“计算机科学幻想 ”:
· 车载计算机 : 在 20 世 纪 80 年代初微处理器的性能和价格得到极大改进之前,用计
算机来控制汽车几乎是天方夜谭。而今天,车载计算机不仅能够通过控制汽车发动
机降低污染、提高燃油效率 , 而且能够实现自动驾驶且控制安全气囊在碰撞时展开,
从而提升行车 的安全性 。
· 手机 : 谁曾想到计算机系统的发展会使全球半数以上的人口拥有手机,并让人们几
乎在全球的各个角落都可以自由通信?
. 人类基因项目 : 以前用于匹配和分析人类基因 序 列的计算机设备价格高达儿亿美元 。
在过去 的 15 ~ 25 年里,用于该项目的计算机设备的价格降低为原来的 11100~ 1/10 。
随着计算机设备价格的持续下降,人们可以获得自己的基因序列 , 从而量身定制医
疗服务。
·万 维网 :在 编 写本书第 1 版时,万维网尚不存在,而现在万维网已经改变了整个社
会 。 对许多人来说 , 网络已取代 了 传统的图书馆和报纸 。
2 第1 章

·搜索 引擎 : 随着万维网规模的扩大和价值的与日俱增,如何快速精确地找到所需信
息变得越来越重要。今天,如果没有搜索引擎 ,许多人在万维网 中将寸步难行 。
显而易见,计算机技术的进步几乎影响着社会的每一个方面。硬件的进步使得程序员可
以编写出各种优秀的应用软件,进而证实计算机几乎是无所不能的 。今天的科学幻想预示着
巨口 未来的“杀手级“应用 , 例如增强现实眼镜、无现金社会和无人驾驶汽车等 。

1.1 . 1 计算应用的分类及其特性

从智能家电到手机再到最大型超级计算机,它们虽然使用了一套通用的硬件技术(参见
1.4 节和 1.5 节),但这些不同的应用有着不同的设计需求,并以不同的方式通过硬件实现 。
概括地说,计算机主要包括以下 三类应用:
个人计算机 (Personal Computer, PC) :这也许是最为人所知的
应用方式,本书的读者几乎都在广泛使用 。 个人计算机强调对单个
用户提供良好的性能,且价格低廉,通常运行第 三方软件 。尽管此
I忱卫,::
形显示器、键盘和鼠标等。

类应用的出现只有短短 40 年,但它推动了许多计算技术的革新 。

归归”红

于的户过
用序用通
为计网
器型多-

多算
用机 ,使问

运通,
服务器 (server) :过去被称为大型机,通常借助网络访问 。服


---- ..

程入 1 般
务器适用千执行大负载任务,可以执行单个复杂应用(科学或工程

并络
行访

应用),也可以处理大量的简单作业,如大型 Web 服务器。这些应


用通常基千其他来源的软件(例如数据库或仿真软件),并且往往为
了特殊的需要而加以修改或定制 。 服务器的制造技术和桌面计算机
超级计算机:具有最高性
的制造技术基本相同 ,但服务器能够提供更强的计算、存储和 1/0
能和最高成本的一类计算
能力 。 通常情况下,当发生故障时,服务器比个人计算机恢复的代 机,一般配置为服务器,
价高得多,因此服务器更加强调可靠性。 需要花费数千万甚至数亿
美元 。
服务器的功能和价格具有很大的伸缩范围 。不带显示器和键盘
的低端服务器可能比桌面计算机稍微贵些 , 大约需要 1000 美元,
一般用于文档存储 、 小型商务应用或 者简单的 Web 服务(见 6.11 terabyte: 一般简写作 TB,
原始定义为 1 099 511627776
节) 。 高端服务器称为超级计算机 (supercomputer) ,一般由成于上
(240) 字节,但有些通信
万个处理器组成,内存为 terabyte 级,其价格高达数千万甚至上亿 和辅助存储系统将 其重新

美元。 它们主要用千高端科学计算和工程计算,如天气预报、石油 定义为 1 000 000 000 000


( 1012) 字节 。 为了避免混
勘探、蛋白质结构分析等大规模问题 。 虽然这类超级计算机代表了
淆,使用术语 tebibyte (T心)
最 高 的计算能力,但是它们只占服务器中相对很小的 一部分,在整 表示 240 字节,而 terabyte
个计算机市场份额中所占比例也很小 。 指 1012 字节。 图 1-1 给出

嵌入式计算机 (embedded computer) :这是数量最多的一类计 了十进制和二进制术语的


范围 。
算机, 应用和性能范 围十分广泛,包括汽车、电视 中的微处理器以
及用来控制飞机和货船的处理器网络。当今一个流行 的术语是物联
嵌设 行应

其般一
入备预用

计 的义序
算计的
式中 定程

机 算一

嵌 ,或

他运组
入一者
:机个

网 (Internet of Things, IoT) ,指多个小型设备在网络上通过无线方


式进行通信 。嵌入式计算系统的设计目标是运行单一应用程 序或者
一组相关 的应用程序,并且通常和硬件集成 , 作为单一 系统交付给

用户。因此,尽管嵌入式计算机的数量庞大,还是有很多用户从来
曰] 没有意识到他们 正在使用计算机 。
计算机袖象及相关技术 3

巳雹霆一.可·l1 圈,只,“暹.
kilobyte KB 1000 1 k 心 byte KiB 210 2%
megabyte MB 1000 2 mebibyte MiB 220 5%
gigabyte GB 10003 g心 byte GiB 230 7%
terabyte TB 10004 tebibyte TiB 240 10%
petabyte PB 1000 5 pebibyte PiB 250 13%
exabyte EB 10006 exbibyte EiB 260 15%
zettabyte ZB 10007 zebibyte ZiB 270 18%
yottabyte YB 10008 yobibyte YiB 280 21%
ronnabyte RB 10009 robibyte RiB 290 24%
queccabyte QB 100010 quebibyte QiB 2100 27%

图 1-1 通过为常用容昼加一个二进制标记解决 2x 与 lOY 字节的模糊性。最后一列表示二进


制术语与相应的十进制术语所表示数值之间的差距。在以 bit 为单位时 , 这些表示
方法同样适用 , 因此 g1gab1t (Gb) 是 10如t , 而 gig如t (G巾)是 230血。 使用公制
系统的组织创建了十进制前缀,为了适应存储系统总容量的不断增加,最后两个术
语是千 20 1 9 年提出的 。 所有的术语名称均由拉丁语词源演化而来,表示 1000 的
次方

面向单一应用需求的嵌入式应用通常对成本或功耗有严格限制 。 以音乐播放器为例,处
理器运行速度只需满足有限功能的需求, 而 降低成本和功耗是最重要的设计目 标。除了低成
本的要求之外,由 于 故障可能会给用户带来不便(例如,新电视机无法正常收看节目),或
引发安全事故(例如,飞机或货船的计算机系统崩溃),因此嵌入式计算机对故障非常敏感。
在面 向 消费者的嵌入式应用中(如数字家电), 一般通过简单设计来获得可靠性 其重点
在千尽可能保证一项功能的正常运转 。 而在大型嵌入式系统中 ,采用了 在服务器领域应用的
多种冗余技术。尽管本书将重点放在通用计算机上 , 但是大多数概念可直接或稍做修改后用
于嵌入式计算机。
1 精解本书中的“精解”是正文中的 一 些段落,主要用来对读者可能感兴趣的内容做深
入介绍 。由于并不影响后续内容的学习,因此对 此不感兴趣的读者可以直接跳过。
许多嵌入式处理器使用处理器核。处理器核是利用硬件描述语言(如 Verilog 或 VHDL,
见笫 4 章)描述的处理器版本 , 它使得设计者能够把其他专用硬件与之集成在一块芯片上。

1.1.2 欢迎来到后 PC 时代

技术 的 持续进步给计算 机硬件带来了革命性的变化 , 对整个信息技术工 业产生 了 震动。


就像 40 年前开始 出现的个人计算机对产业带来的变化一样,我们已经从本书的第 4 版开始 m
感受到这种变 化 。 替代 PC 的是个人移动设备 (Personal Mob il e Dev i ce, PMD) 。 PMD 使用
电池供电 ,通过无线方式连接到 网络,价格通常只有几百美元 。 另
个 人移 动设 备:连接到
外 ,与 PC 一样, PMD 可下载软件 ( App) 并运行。与 PC 不同的是, 网络上的小型无线设备 。
PMD 不再有键盘和鼠标,而是采用触摸屏甚至语音作为输入 。 当今 PMD 由电池供电,通过下

的 PMD 可 以 是智能手机或平板电脑 , 而是明天的 PMD 可能会包括 栽 App 的方式安装软件 。


智能手机和平板电脑是典
电子眼镜 。 图 1-2 给 出了 平板电脑和智能手机 的 增长速度与 PC 和
型的 PMD。
传统手机的增长速度的对比 。
4
第 1 章

1600 -·--- ·-·-


-^ 智能手机
1400

1000
快血

600
手机

400 -I —----:
~~00,--
~7•
心~竺'七
- ."- ,,,.~ (不包括智能手机)
•·=--一 个人电脑(不包括平板电脑)
200
平板电脑
0 +----,----r--,_二-r一 I I I I I I, 1
卜 0 0 0,.... C\J O 寸 m o 卜 0
0 0 0,....,....,....,....,....,....,....,....,....
000000000000
C\J C\J C\J C\J C\J C\J C\J C\J C\I C\J C\J C\J

图 1 -2 后 PC 时代,平板电脑和智能手机的年产量与 PC 和传统手机的年产昼对比。智能
手机反映了手机工业的近期增长情况,并且在 20 11 年超过了 PC 的产量 。 PC 、平
板电脑和传统手机的产拯在持续下滑。手机、 PC 和平板电脑的峰值出货量分别出
现在 20 11 年、 2013 年 和 2014 年 。 PC 的出货量占所有产品出货蜇的比率从 2007
年的 20% 降到了 2018 年的 10%

吓务釭”
过服根量
算大运不
通模商数

提集
计 的些租


云务一出
云计算 (cloud computing) 替代了传统的服务器,它依赖千现



器用务
规营同

群,求
在称为仓储级计算机 (Warehouse Scale Computer , WSC) 的 巨型数

需趴
据中心 。 像 Amazon 和 Google 这样的公司构建了包含 50 000 台服
务器的 wsc, 并将其中的一部分租给其他公司使用。这样,租用
WSC 的公司就可以为 PMD 提供软件服务,而不用自己构建 WSC 。 软件即服务:在网 络上以

事实 上 ,与 PMD 和 WSC 是硬件工业的革命类似,通过 云计算实现 服务的方式提供软件和数


据 。 其运行方式通常不是
的“软件 即服务 ”( Software as a Service, SaaS) 是软件工业的革命。
在本地设备上运行所有的
当今的软件开发者通常 在 PMD 运行一部分应用程序,同时将另 一 二进制代码,而是通过诸
部分应用部署在云上 。 如运行在本地客户端的浏
览器等小程序登录到远程
1.1.3 你能从本书学到什么 服务器上执行。典型 的例
子是 Web 搜索和社交网络。
二 因为让用户快速得到结果对软件的成功至关重要,所以成功的
程序员总是关心其程序的性能。在 20 世纪六七十年代,限制计算机性能的主要因素是内存
容量。因 此那时候程序员 经 常遵循的信条是:尽量少占用内存空间,以加速程序的运行速
度。过去的 2 0 多年里,计算机设计和内 存技术有了长足的进步,除了嵌入式计算系统 以外 ,
大多数应用中,内存容量对计算机性能的影响大大降低了。
现在,关心性能的程序员应该十分明确, 20 世纪 60 年代的简单存储模型已经不复存
在,现代计算机的特征是处理器的并行性和存储的层次性 。 另外,当今的程序员需要考虑在
PMD 或云上运行程序的能效,这就要求他们了解代码之下的很多细节(见 1.7 节) 。 因此,
程序员为了开发出有 竞争力的软件版本,必须加强对计算机组成的理解 。
我们很荣幸有机会为读者讲述计算机中这些革命性的知识,阐述程序之下的软件及机箱
计算机捡象及相关技术 5

覆盖之下的硬件是如何工作的。当你读完本书之后 ,我们相信你将能够回答下面的问题 :
· 使用 C 或者 Java 等高级语言编写的程序如何转化为机器语言?硬件如何执行最终的
程序?掌握这些概念是全面理解软硬件如何影响程序的基础。
· 什么是软硬件之间的接口?软件如何指导硬件完成所需功能?这些概念对于理解如
何编写软件至关重要。
· 哪些因素决定了程序的性能?程序员如何改进程序性能?从本书中我们将知道,程序
性能取决于原始程序、将该程序转换为计算机语言的软件以及硬件执行程序的有效性。
· 硬件设计者采用什么技术能够改进性能?本书将介绍现代计算机设计的基本概念 。有
兴趣的读者可深入 阅读我们的另 一本进阶教材 《计算机体系结构 : 量化研究方法》 。
· 硬件设计者可使用哪些技术提高能效?程序员可使用哪些技术改变能效?
· 为什么串行处理近来发展为并行处理?这种发展带来的结果是什么?本书给出了解
释 , 并介绍 了当今支持并行处理的硬件机制 , 评述了新一代

. 言言F:二1+ :二1?十算机架构师提出的哪 1飞飞二:多理;:理器


多核微处理器:在一块集
的多核微处理器 (multicore microprocessor) (见第 6 章)。

巨曰
如果无法理解这些问题 , 那么要在现代计算机上提升程序性能 , 或者要评估不同计算机
解决特定问题的优劣性将会是一个反复实验的复杂过程,而不是一个深入分析的科学过程 。
本书第 1 章的目的是为其余各章奠定良好的基础,介绍了各种基本概念和定义 , 指出如
何正确地剖析软硬件 , 以及如何评价性能与功耗 , 还介绍了集成电路(推动计算机革命的技
术),并在最后解释了向多核转变的原因。
在本章和后面几章里,读者会看到许多新的术语,或者 一 些 首字母缩略词:由一串单词
曾听过却不知道其含义的术语。但是不用担心 , 在描述现代计算机 中每个单词的首字母相连
构成的单词 。 例如 RAM 是
时,确实会有很多专业术语 , 这使我们能够精确描述计算机的功能
随机访问存储器 (Random
和性能。另外,计算机设计人员(包括本书作者)喜欢用首字母缩 Access Memory) 的缩略
词, CPU 是中央处理单元
略词 (acronym) ,一旦知道了每个字母代表什么,就会很容易理解 。
(Central Process Unit) 的缩
为了帮助读者理解和记忆这些术语,在这些术语第一 次出现时 , 我
略词 。
们 会给出明确 的定义 。 通过与这些术语的短时间接触,读者将会熟
练地正确使用这些术语的缩写 , 例如 BIOS 、 CPU 、 DIMM 、 DRAM 、 PCie 、 SATA 等 。
为了深入理解软件和硬件对程序运行性能的影响,我们在全书中特别安排了“理解程序
性能 ” 部分,将对程序性能有重要影响的因素加以概括 。 下面就是本书中的第一个“理解程
序性能” 。
I 理解程序性能一个程序 的性能取决于以下各因素的组合 :程 序所用算法的有效性 , 用
来建立程序并将其翻译成机器指令的软件系统,计算机执行机器指令(可能包括 I/0 操作)
的有效性。下表总结了硬件和软件是如何影响性能的。

硬件或软件 部分 ~I
?· ~` 一, 心~~`飞,”心了飞九,二'x^、心飞`芯j
,`...,..4, 心甘~_对
_』 性能的影响 厂7古 该论出现的位

算法 决定了源码级语句的数蛋和 1/0操作的数量 其他书

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

处理器和存储系统 决定了指令的执行速度 第4 、 5 、 6章

1 /0系统(硬件和操作系统) 决定了 1/0操作的执行速度 第4 、 5 、 6章



6 第1 章

膘`帽烘州
小测验 ”小测验”的目的是帮助读者评估自己是否掌握了所学的概念 , 以及是否理解了这些

概念的内涵。在这些小测验中,有些题目可以简要回答,有些则适合进行小组讨论 。 有些问题的答
案可在章末找到。小测验只出现在节末,如果你确信自己对该部分内容完全理解,则可以跳过。
1. 每年嵌入式处理器的售出数量远远超过 PC 处理器甚至后 PC 处理器的数昼。根据自己的经
验,你是支持还是反对这种看法?列举你家里使用的嵌人式处理器,其数量与家里桌面处
理器的数量相比如何?
2 如前所述,软件和硬件都会影响程序的性能 。 能否举例说明以下各要素是如何成为性能瓶

颈的?
.所选算法

.编程语言或编译器

·操作系统
.处理器
• I/0 系统和设备

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

下面介绍计算机架构师在过去 60 年的计算机设计中提出的 7 个伟大思想 。这些 思想影


响深远,以至千在首次应用它们之后的很长时间里,架构师在设计新的处理器时仍会使用这
些思想 。 这些思想将会贯穿本章和后续章节 。 为了说明它们的影响,本节将对这些思想的含
义以及亮点进行介绍 , 在本书的后续章节中将会明确使用它们近 100 次 。

1.2.1 使用抽象简化设计

计算机架构师和程序员必须发明能够提高效率的技术,否则设计时间也将会随资源规模
口们 的增长而加长 。提高 硬件和软件生产率 的主要技术之一是使用抽象 (abstraction) 来表示不
同的设计层次,通过隐藏底层的实现细节给高层提供一个简化的模型 。

1.2.2 加速大概率事件

面速大概率事件 ( common case fast) 远比优化小概率事件更能提高性能 。大概率事件通


常比小概率事件简单,从而易于优化 。 大概率事件规则意味着设计者需要知道什么事件是经
常发生的,这只有通过细致的实验与评估才能得出(见 1.6 节)。可以把加速大概率事件想象
成一辆赛车 , 由 千通 常情况下只有一两名乘客 ,因 此提高赛车 的速度要 比提高小型货车的速
度容易。

1.2.3 通过并行提高性能

从计算诞生开始,计算机设计者就通过并行执行操作来提高性能 。在本书 中将会看到许


多并行的例子。

1.2.4 通过流水线提高性能

在计算机体系结构中, 一个特别的并行性场景就是流水线 (pipelining) 。例如在许多西


计算机袖象及相关技术 7

部片中 , 一些坏人制造了火灾 , 在消防车出现之前 , 会有一个“消防队列”来灭火——小镇


的居民们排成一排 , 通过接力快速将水桶从水源传至火场 , 而不是每个人都在来回奔跑。

1.2.5 通 过预测提高性能

正如谚语“求人准许不如求人原谅" ,下一个伟大的思想就是预测 (prediction) 。在某些


情况下 , 如果从错误预测恢复执行的代价不高,并且预测的准确率相对较高 , 则通过猜测的
方式提前开始某些操作,要比等到确切知道这些操作应该启动时才开始要快一些。

1.2.6 存储层 次

由于存储器的速度通常影响性能、存储器的容量限制解题的规模、存储器的成本是当今
计算机成本的主要部分,因此程序员希望存储器速度更快、容量更大、价格更低。架构师发
现可以通过 存储器层次 (hierarchy of memory) 来解决这些相互矛盾的需求。在存储器层次 [IT]
中,速度最快、容量最小并且每位价格最高的存储器处于顶层,而速度最慢、容量最大且每
位价格最低的存储器处于最底层。在第 5 章将会看到 , 高速缓存技术使得程序员看到的主存
储器同时具有存储器层次中顶层的高速度和底层的大容量及价格便宜的特征。

1.2.7 通过冗余提高可靠性

计算机不仅需要速度快 , 还需要工作可靠。由于任何一个物理器件都有可能失效,因此
可以通过使用冗余部件的方式提高系统的 可 靠性 (dependable) ,冗余部件可以替代失效部
件并帮助检测错误。我们 可以通过牵引式挂车来理解可靠性 : 牵引式挂车后轴两边具有双轮
胎 , 在一个轮胎出问题时卡车仍然 可 以继续工作。 ( 当然 , 在一个轮胎出 问 题时,卡车司机
应立即开往修理厂进行修理,从而恢复其冗余性。)
在本书之前的版本中还给出了第 8 个伟大思想,“面向摩尔定律的设计”。 Intel 公司的
创 始人之- Gordon Moore 于 1965 年预测 : 集成在单芯片上的资源(现指晶体管)数目每年
翻一番。 10 年之后他将其预测修订为每两年翻一番。
事实证明了其预测的准确性,摩尔定律持续推动计算机体系结构发展了 50 年。由于计
算机设计通常需要好几年,在设计开始和完成时,单芯 片 上能够集成的资源("晶体管",见
1.5 节)数量经常双倍甚至是三倍增长。像双 向 飞碟运动员 一样,计算机架构师必须预测其
设计完成时的工艺水平, 而不是设计开始时的工艺水平。
然而 , 集成电路集成度的指数级增长趋势不可能一直持续,摩尔定律已经不再准确。摩
尔定律的放缓为计算机设计者带来了巨大的挑战。 一些人不愿相信摩尔定律的终结,不能接
受这样的事实 。 一部分原因是分不清以下两种说法 : 摩尔预测的每两年翻一番的趋势现在已
经不准确了 ; 半导体工 艺水平不再提升。事实上,半导体工艺水平仍然在进步,只不过进步
速度较之前慢了许多 。 从本书的这一版开始,我们将讨论摩尔定律放缓带来的 问题,该问题
将在第 6 章重点讨论 。
1 精解在集成电路加工工艺随摩尔定律发展的全盛时期,单芯片资源的成本随着加工工
艺的进步而降低。在最近儿代工艺中,单位资源的成本保持不变甚至有所提升 , 其原因包
括:加工设备成本的提升、在更小的特征尺寸下需要更加精细的加工过程、愿意对新加工工
艺进行投资的公司数量减少。越来越少的竞争自然导致更高的价格 。 口习
8
第1 章

1.3 程序表象之下
一个典型的应用程序 , 如 字处理程序或大型数据库系统 , 可以 在巴黎,我对当地人讲法

由数百万行代码构成 , 并依靠复杂的软件库来实现异常复杂的功 语,他们只是瞪着我看;


我从来没能让这些白痴理
能 。众所周知,计算机中的硬件只能执行极为简单的低级指令 。 从
解他们自己的语言。
复杂的应用程序到简单的指令,需要经过几个软件层次来将复杂的 马克·吐温,《异国奇遏), 1869

高 层次操作逐步解释或翻译成简单的计算机指令,这可以作为伟大
思想抽象的一个例子 。

务忠编
软件昆 。

供操程
提括载
统软译等

常序作
件,
系的编器

反J汇
图 1 -3 给出了这些软件的层次结构,外层是应用软件,中心是

:包加
三________一二==-二二一__二==___________


j

硬件,系统软件 (systems software) 位于两者之间 。


系统软件有很多种,其中有两种对于现代计算机系统来说是必
需的:操作系统和编译器。操作系统 (operating system) 是用户程
序和硬件之间的接口,为用户提供各种服务和监控功能。操作系统
最为重要的作用是:
.处理基本的输入和输出操作。
·分配外存和内存 。
|:::: 理计算机资源的监控程序。
1m
·为多个应用程序提供共享计算机资源的服务。
当前我们使用的操作系统主要有 Linux 、 iOS 、安卓 (Android) 和 Windows 。
年三

一应

_
i

',
J r
',

/ / \
i

,
...
//\
',','
I'

>
I'


..
\ I
. ii'

.,、

.\

.
.`\ i
,I
``、

///
\ /
/

图 1-3 简化的硬件和软件层次图,将硬件作为同心圆的中心,应用软件作为最外层 。在复


杂的应用中,通常存在多个应用软件层 。 例如,一个数据库系统可运行于系统软件

国 之上,而驻留 在该系统软件上的某应用又反过来运行在该数据库之上

编译器 (compiler) 完成另 外一项重要功能: 把用高级语言( 如 C 、 C++ 、 Java 或 Visual


将所序
编为语
译计 言
器算的

翻机

Basic 等)编写的程序翻译成硬件能执行的指令 。 由于现代编程语


级识

译器
高能

语别
言的
:机程

言非常复杂, 而硬件执行的指令比较简单 , 因此,这个翻译过程是


相当复杂的 。 这里仅做简要介绍,第 2 章和附录 A 将做深入介绍 。

从高级语言到硬件语言

如果要控制电子设备,需要向其发送电信号 。 对于计算机来说 , 最简单的信号是“通”


和“断" 。 因此,计算机的字母表中只有 2 个字母 。 就像英语中 26
个字母的使用次数不受限制一样,计算机中 2 个字母的使用次数也 I 釭 2 的数字中的 0或 1,
二进制位:也称为 位 。 基

不受限制 。 计算机中代 表两个字母的符号是 0 和 1 , 我们 通常认为 它是信息的基本组成元素 。


计算机袖象及相关技术 9

计算机语言是基数 为 2 的数或二进制数。每个字母就是一个二进 制 I 指令:计算机硬件所能理


位 ( binary digit) 或一位 (bit) 。我们用千控制计算机的命令是指令 解并执行的命令。
( instruction ) , 指令是能被计算机识别并执行的位串 , 可以将其视为数字 。 例如 , 位串

1000110010100000
告诉计算机将 2 个数相加 。第 2 章将解释为什么数字既表述指令又表示数据 。我们不希望在
此处涉及第 2 章的具体内容 , 但是使用数字既表述指令又表示数据是计算机的基础。
第 一代程序员直接使用二进制数与计算机进行交互 , 工作起来非常枯燥乏味 。 因此,人
们很快发明了接近 于人类思维方式的助记符。最初, 助记符是 手工
翻译成二进制的 , 其过程显然过千烦琐。随后设计人员开发了一种
称为汇编器 (assembler) 的软件,可以将助记符形式的指令自动翻
| 勹翻译立言
程序 。
译成对应的二进制。例如 , 程序员写下

add A,B
汇编器会将其翻译成如下的二进制形式

1000110010100000

该指令告诉计算机将 A 和 B 两个数相加 。 这种符号语言的名称沿用 1 汇 编语言:以助记符形式


至今 , 即汇编语言 (assembly language) 。 而机器可以理解的二进制 表示的机器指令。
语言是机器语 言 ( machine language) 。
虽然汇编语言的发明是一个巨大的进步 , 但它仍然与科学家用
I 机器语言:以二进制形式
来模拟液体流动或会计师用来结算账目所使用的符号相去甚远。 汇
表示的机器指令 。
编语言需要程序员写出计算机执行的每条指令 , 要求程序员像计算
机一样思考。
高级编程语言:如 C、 C-H-、
通过编写一个程序来将更强大的高级语言翻译成计算机指令是计
Java、 Visual Basic 等可移
算机发展早期的 一个重大突破。高级编程语言 (high-level programming
language) 及其编译器大大地提高了软件的生产率。图 1-4 表示 了 这些
程序和编程语言之间的关系,这是 抽象思想的另外一个典型应用 。
植的语言,由 一些单词和
代数符号组成,可以白编

译器转换为汇编语言 。
oo
编译器使得程序员可以写出高级语言表达式 :

A+ B
编译器将其编译为如下的汇编语言语句 :

add A,B
然后,汇编器将 此语句翻译为二进制指令,告诉计算机将 A 和 B 这两个数相加 。
使用高级编程语言有 以 下几个好处 :
第 一 ,允许程序员用更自然的语言来思考,用英文和代数符号来表示,这样的程序看
起来 更像文字, 而 不是密码表 (见图 1-4) 。 另外 , 人们可按用途来开发高级语言。例如,
Fortran 是为科学计算设计的 , Cobol 是为 处理商业数据设计的, Lisp 是为处理符号设计的 ,
等等 。 还有一些特定领域 的语言只为 少数专业用户设计,例如对机器学习感兴趣 的用 户 。
第二,高级语言提高了程序员的生产率 。 如果使用较少的语句即可表示 出 设计意图, 则
可加速程序的开发,这是软件开发方面少有 的共识之一 。简明性是高级语言相对汇编语言最
为明显的优势 。
10 第1 幸

swap(int v[J, int k)


高级语言程序 {int temp;
(C语言) temp= v[k];
v[k] = v[k+l];
v[k+l] = temp;

swap·'
1 t 7. $$$$$$$
udwwwwr
rra11ssj 2211113
$$540404
4$$$$$
汇编语言程序 ',56651',((((
d 22222
(MIPS指令集)

、丿、丿、,'~、丿
',',

0000000010 1000100000000100011000
二进制机器语言程序 00000000100000100001000000100001
(MIPS指令集) 10001101111000100000000000000000
10001110000100100000000000000100
10101110000100100000000000000000
1010 1101 111000100000000000000100
00000011111000000000000000001000

图 1 -4 C 程序编译为汇编语言程序,再汇编为二进制机器语言程序 。 尽管将高级语言翻译
成二进制的机器语言仅需要两步,但一些编译器将“中间结果"略去 ,直接产生二
进制的机器语言 。 这些语言和本图中列举的程序将在第 2 章详细介绍

第 三 ,采用高级语言编写的程序能够独立千开发这些程序的计算机平台,提高了程序的
可移植性 。 因为编译器和汇编器能够把高级语言程序翻译成任何计算机的二进制指令 。 高级
编程语言的这些优势,使其在当今广泛应用,而汇编语言已经很少有人使用了 。

1.4 机箱之内的硬件

我们已经在上节通过程序揭示了计算机软件,在本节中我们将打开机箱盖,学习其中的
硬件 。 任何 一 台计算机的 基础硬件都要完成相同的基本功能:输入数据、输出数据、处理
数据和存储数据。如何实现这些功能将是本书的主题,后续各章将分别讨论如何实现这 4 项
任务 。
在遇到重要知识点时 ,本书都会用“重点”标题加以强调,希望读者对其重点记忆 。 全
书大致有 10 多个重要知识点,这里是第一个,即计算机是由完成输入 、 输出、处理和存储
数据任务的 5 个部件构成的 。
计算机袖象及相关技术 11

计算机的两个关键部件是输入设备 ( input device) 和输 出设备 | 输入设备:为计算机提供 口句


信息的装置 , 如键盘 。
(ou tput device ) , 例如麦克风是输入设备 , 而扬声器是输出设备 。 输
入为计算机提供数据 , 输出将计算结果送给用户。像无线网络等设
备既是输入设备又是输出设备。
第 5 章和第 6 章将详细介绍 1/0 设备,这里由外部 1/0 设备开
|::125m勹 其他计算机的装置 。
始 , 先对计算机硬件做一些基本的介绍。
1 重点组成计算机的 5 个经典部件是输入设备、输出设备、存储器、数据通路 (也称运
算器)和控制器 , 其中最后两个部件通常合称为处理器。图 1-5 表示了一台计算机的标准
组成 。 该组成与硬件技术无关 , 任何计算机(无论是现在的还是过去的)中的任何部件都
可归于这 5 种部件之一。为了加深读者对这一重点的印象 , 我们将在每章开始时都会给出
此图。

接口

评价性能

图 1-5 计算机的 5 个经典部件 。 处理器从存储器中获取指令和数据,输入部件将数据写入


存储器 , 输出部件从存储器中读出数据 , 控制器向数据通路、存储器、输入设备和
输出设备发出命令信号 [TI]

1.4.1 显示器
“2红妇

是薄光术
这物制技

过是穿
液种加租

通层线

对否透
示 聚来显

一施或
______二一._______._一二一一

:合控示

最吸引人的 I/0 设备应该是图形显示器了 。大多 数个人移动设


备都通过液晶显示 (Liquid Crystal Display, LCD) 来获得轻巧、低
功耗的显示效果 。 LCD 并非光源,而是控制光的传输 。 典型的 LCD

内含棒状液态分子团形成的转动螺旋线 , 用来弯 曲来自显示器背后


光源产生的光线或者少量的反射光线 。当 电流通过时 , 液态分子棒不再弯曲,从而不再使光
线弯曲 , 由于两层相互垂 直 的偏光板之间充满液晶材料,如果它不弯曲则光线不能通过。
12 第 1 幸

(在不施加任何电压的情况下,液晶处于初始状态,并将入射光的方 动态矩阵显示.一种液晶

现白色;而当施加电压时,光线不再弯曲,显示屏呈现为黑色。)今 1 制单个像素上光线的传扴。
向扭转 90° , 让背光源的入射光能够通过整个结构,在显示屏上呈

天,大多数 LCD 显示器采用动态 矩阵显示 (active matrix display)


显示技术,使用晶体管控

技术,其每个像素 (pixel ) 都由 一个晶体管精确地控制电流,使图


像更清晰 。 彩色液晶显示屏中, 每个像素由红绿蓝 三个液晶共同组 | ::::口
素按矩阵形式构成 。
成,它们的不同亮度组合决定了最终的画面色彩效果 。 因此,彩色
动态矩阵 LCD 中,每个像素需要使用三个晶体管分别控制三种不同颜色的亮度 。
图像由像素矩阵组成,可以表示成二进制位的矩阵,称为位图
通过计算机显示器,我将
( bitmap) 。 针对不同的屏幕尺寸及分辨率,典型的屏幕中显示矩阵 飞机降落在航空母舰的甲
的大小可以从 1024 X 768 到 2048 X 1536 。 彩色显示器使用 8 位来 板上,观察到一个原子打
到势阱中,乘着火箭以接
表示每个 三原色(红、绿和蓝),每个像素用 24 位表示,可以显示
近光的速度飞和,同时我
百万种不同的颜色 。
了解到计算机最深层的工
计算机硬件采用光栅刷新缓冲区(又称为帧缓冲区)的方式来 作原理 。

素的二进制值以刷新频率读出到显示设备。 图 1-6 显示了一个简化 1:4父, Sc1entificAmencan,


保存位图,以支持图像。 要显示的图像保存在帧缓冲区中 , 每个像 Ivan Sutherland, 计算机图彰

的缓冲区结构,其中的每个像素用 4 位表示 。
使用位图的目的是如实地在屏幕上进行显示 。 因为人眼可以分辨出屏幕上的细小变化 ,
所以图像显示技术极富挑战性 。

帧缓冲区
IIII

光栅扫描CRT显示器

Y。 Y。
二tII

1 /
Y1 · - Y1

X。 X1 X。 X1

图 1-6 左边的帧缓 冲 区 中,每个坐标决定 了右 边光栅扫描 CRT 显示 中相应坐标的灰度 。


像素 (Xo , %)的灰度值是 0011, 小于像素 (Xi, 兀)的灰度值,( X1, 片)的灰度
口汇 值是 1101

1.4.2 触摸屏

PC 使用 LCD 进行显示 , 而后 PC 时代的平板电脑和智能手机使用触摸屏替代了键盘和鼠


标,触摸屏 提供了良好的用户界面,用户可以直接指向感兴趣的内 容 ,而不需要使用鼠标。
触摸屏 可采用 多 种方式实现,许多平板电脑采用电容感应式触摸屏。 如果绝缘玻璃上覆
盖一层透 明的导体 , 人的手指接触到屏幕范围时,由于人是导体 , 将会使屏幕的电场发生变
化,进而导致电容的变化 。 这种技术允许同时接触多个点 , 可以识别手势 , 因此可提供更加
吸引人的用户 界面 。
计算机抬象及相关技术 13

1.4.3 打开机箱

电个成
路甚
成十组
集几管

也数

芯万
片个

由体
叫千
图 1-7 给出了 Apple iPhone Xs Max 智能手机的内部结构。不

:至

,晶
难看出,在计算机五大传统部件中的 I/0 是该设备的主要部分。

o
I/0 设备包括一个电容性的多触点 LCD 、前置摄像头、后置摄像头、
麦克 风、耳机插孔、扬声器 、加速度计、陀螺仪、 Wi-Fi 网络 和蓝
中央处理单元:也称为处
牙网络。其数据通路、控制器和存储器只占很小一部分。 理器,处理器是计算机中

图 1-8 中的小长方形是集成电路 (integrated circuit) , 俗称芯片 最活跃的部分,它包括数


据通路和控制器,将数据
(chip) ,是推动计算 机发展的关键技术 。其中心标有 A12 的芯片中
进行运算、测试结果,并
含有两个大 ARM 处理器和四个小 ARM 处理器,它们的运行频率 按结果发出控制信号使
为 2.5GHz 。处理器是计算机中最活跃的部分。它严格按照程序中的 I/0 设备做出动作等 。

指令运行 , 将数据进行运算、测试结果 , 并按结果发出控制信号使


I/0 设备做出动作。有时候,人们把处理器称为中央处理单元 I 数据通路:是处理器中执
行算术操作的部分 。
(central processor unit) , 即 CPU 。

红勹
根据协
器指器部

器数设
理挥 0
处指 Vo

中备
制的储的
控序存作
为进一步理解硬件 , 图 1-9 展示了一款微处理器的内部细节。

令和分

通调
处理器从逻辑上包括两个主要部件 : 数据通路和控制器,分别相当
于处理器的肌肉和大脑。数据通路 (datapath) 负责完成算术运算 ,
控制器 (control) 负责指导数据通路、存储器和 I/0 设备按照程序的

图 1-8 中的Al2芯片中还有一块容量为 16glgabns (或2OB) 1 行时所需的数据。


指令正确执行。第 4 章将进一步详细说明一个高性能设计的数据通 内存:程序运行时的存储
路和控制器。 空间,同时还存储程序运

的存储器芯片。内存 (memory) 是程序运行时的存储空间,它同时 1DRAM :动态随机访问存


也用于保存程序运行时所使用的数据 。其 内存是一 块 DRAM 芯片 。 储器,集成电路形式的存
储器 , 可随机访问任何地
DRAM 是 dynamic random access memory (动态随机访问存储器)
址的内存。 在 2020 年时,
的缩写。 DRAM 用来存储程序的指令和数据。与串行访问内存(如 访问时间大约为 50ns, 每
磁带)不同的是, DRAM 中的 RAM 是指无论数据存储在什么位置, gigabyte 售价大约为 3 ~6

访问数据所需的时间基本相同。 美元。 口瓦]

Tech

图 I- 7 Apple iPhone Xs Max 智能手机的组成 。左 边是电容性的多触点触摸屏和 LCD, 旁


边是电池 。它们在金属壳内排布在电池旁边,为了能充分利用空间,它们的形状不
是简单的矩形 。图 1-8 显示了靠近金属外壳左下部逻辑主板的详细情况,上面集成
有处理器和存储器 (Techlnsights 提供, www.techinsights.com)
14 第1 章

App le
338S00156 P令11C

TexasInstruments Appl e 338500 4 ll


SN26OOBl AuJioAmplifi幻
Tech
肋ttoryC.h沁陌
nmghts

图 1-8 图 1-7 中 Apple iPhone Xs Max 的逻辑主板。中部的大集成电路是 AppleA 12 芯片,


包含了两个大 ARM 处理器和四个小 ARM 处理器,它们的运行频率为 2.5GHz。
图 1-19 是 A 1 2 中处理器芯片的照片 。 背面大小相当的芯片是 64G心的非易失性
的闪存芯片 。 图中其他芯片是电源控制和 1/0 控制芯片 (Techlnsights 提供, WWW.
国 techinsights. com)

图 1 -9 Al2 内部的处理器集成电路。 芯片尺寸为 8.4mm X9 .91mm, 采用 7nm 工艺制造(见


1. 5 节) 。 芯片的中间部分是两个相同的 ARM 大核,右下角是四个 ARM 小核,最右
端是一个图形处理器单元 (Graphic Processor Unit, GPU, 见 6.6 节),最左端是用
千神经 网 络的领域专用加速器(见 6.7 节),简称为 NPU。中间部分还包含了大小核
的二级高速缓存 (L2, 见第 5 章 ) 。 最顶端和最底端是与主存 (DDRDRAM) 的接口
(Techlnsights 提供, www.techlngishts.com, Anand Tech 提供, www.anandtech.com)
计算机捡象及相关技术 15

进一步深人了解任何一个硬件部件都会加深对计算机的理解。 1 缓存缓存是一种小而快
在处理器内部使用的是另外一种存储器 缓存。缓存 (cache 的存储器,一般作力大而
慢的存储器的缓冲。
memory) 是一种小而快的存储器, 一 般作为 DRAM 的缓冲(缓
存的非技术性定义是一个隐藏事物的安全地方)。 cache 采用的是
, 静态随机访问存储器:一
另一种存储技术 静态随机访问存储器 (Static Random Access 种以集成电路形式存在

Memory , SRAM ) , 其速度更快但单元密度低,因此价格比 DRAM 的存储器,访问速度比


DRAM 更快,但集成度比
更高(见第 5 章)。 SRAM 和 DRAM 是存储器层次中的两层。 巨
DRAM 低。
如前所述,抽象是计算机设计中的一个伟大思想。最重要的抽
象之一是硬件和底层软件之间的接口 。软件通过一个词汇表与硬件 指令集体系结构:也叫体
系结构,是底层软件和硬
进行通信 , 其中的单词称为指令 , 因此该词汇表称为指令集体系结
件之间的抽象接口,包含
构 (instruction set architecture) ,简称体系结构 (architecture) 。指令
了编写正确运行的机器语
集体系结构包含了程序员正确编写二进制机器语言程序所需的全部 言程序所需要的全部信息,

信息,如指令、 I/0 设备等。一般来说,操作系统将 I/0 操作、存储 包括指令、寄存器、存储


访问和 1/0 等 。
器分配和其他底层系统功能的细节进行封装,以便应用程序员无须
关注这些细节。提供给应用程序员的基本指令集和操作系统接口合
应用 二 进制接 口 :用户部
称为应用二进制接口 (Application Binary Interface , ABI ) 。 分的指令加上应用程序员

指令集体系结构允许计算机设计者独立千硬件讨论功能。例 调用的操作系统接口,定
义了不同计算机之间二进
如,我们讨论数字时钟的功能(如计时、显示时间、设置闹钟)时,
制兼容的标准 。
可以不涉及时钟的硬件(如石英晶体 、 LED 显示、按钮)。计算机
设计者将体系结构与体系结构的实现 (Implementatlon) 分开考虑也 I 实现:遵循体系结构抽象
是同样的思路:硬件的实现方式必须依照体系结构的抽象 。这些概 的硬件 。
念产生了另 一个重点。
1 重点无论硬件还是软件都可以抽象成多个层次,每个较低的层次对上层隐藏细节。抽
象层次中的一个关键接口是指令集体系结构 硬件和底层软件之间的接口。这一抽象接口
使得同 一 软件可以由成本不同、性能也不同的实现方法来完成。

1.4.4 数据安全

目前为止 ,我们 已经理解 了 如何输人数据,如何使用这些数据


进行计算,以及如何显示结果。然而 , 一旦关掉电源,所有数据就 |:::存仅心勹
如 DRAM 。
丢失了,这是因为计算机中的内存是易失性存储器 (volatile
memory) 。 与之不 同的是 ,如果关掉 DVD 机 的电源,所记 录的内容
将不会丢失,这是因为 DVD 采用的是非易失性存储器 (nonvolatile
| 二勹;者:的:::
memory) 。 例如 DVD。

为了区分易失性存储器与非易失性存储器,我们将前者称为主
“江江
存 ,'

储程般
主 器序由

也持计
叫运算

存的一
级中中
:保代组

一 行机

存储器 (main memory 或 primary memory) ,将后者称为二级存储器 口


(secondary memory) 。二级存储器形成了存储器层次中(主存储器)
RAM

下面更低的一层。 DRAM 自 1975 年起在主存储器中占主导地位,



D

而磁盘 (magnetic disk) 在二级存储器中占主导地位的时间更早 。 由


1¥ (flash memory) 在个人移动设备中
千 尺寸和形状的约束 , 非易失性半 导体存储器—- IA.I
替代了磁盘。图 1-8 所示 的 iPhone Xs 中 的芯片上 包含了 64GiB 的闪存 。 虽然比 DRAM 的
16 第1 章

访问速度慢,但闪存却便宜很多,并且具有非易失的特点 。 而与 二级存储器:非易失性存

磁盘相比 , 闪存虽然每位的价格更高 , 但是 尺寸更小,在体积、 储器,用来永久保存程序


和数据 。 在个人移动设备
可靠性和能耗等方面都优千磁盘 。 因此闪存已成为 PMD 中二级存
中一般由闪存组成,在服
储器的标配 。 遗憾的是,与硬盘和 DRAM 不同的是 , 闪存单元在写 务器中由磁盘组成 。
入1 ooooo~1 oooooo 次后就有可能损坏 。 因此,文件系统必须记
录对闪存写操作的次数,并且具备避免存储器损坏的策略,例如,
磁盘:也叫硬盘 (hard disk),
将经常访问的数据移动到别的区域存储 。 第 5 章将会详细介绍磁
是非易失性二级存储设备,
盘和闪存 。 由覆盖了磁性材料的旋转
盘片构成 。 因为是旋转的
1.4.5 与其他计算机通信 机械设备,所以磁盘的访
问时间大约是 5 ~ 20ms,
我们巳经介绍了如何输入、计算、显示和保存数据 , 但对于今 2020 年每 gigabyte 的价格
天的计算机来说,还有一项不可缺少的功能:计算机网络 。 如图 1-5 大约为 0.01~0.02 美元 。

所示 , 处理器与存储器和 I/0 设备连接 。 通过网络, 一 台计算机可


以与其他计算机通信,从而扩展计算能力 。 当今网络巳经十分普 闪存:一种非易失性半导
遍 , 逐步成为计算机系统的主干 。一 台新型个人移动设备或服务器 体内存 , 单位价格和速度

如果没有网络接口将是十分可笑的 。 联网的计算机具有如下几个主 均低于 DRAM, 但单位


价格比磁盘高,速度比
耍优点:
磁盘快 。 其访问时间大
·通信:在计算机之间高速交换信息 。 约为 5~50ms, 20 1 2 年

·资源共享:有些 I/0 设备可以由网络上的计算机共享, 不必 每 gigabyte 的价格大约为


0.06 ~0.12 美元。
每台计算机都配备某些 I/0 。
·远程访问 : 通过网络 , 用户可以远程访问计算机 。
网们飞。
域区内络
局理楼网

定栋据
地大的
种 在传
在 同输
巨习 根据传输距离和性能的不 同,网络有多种不同的类型,通信代

一一数
如的
例用

价随着信息传输速度和传输距离的增加而增长 。 最为普遍的网络类 _

型是以太网,其传输距离可达到 1000 于米,传输速率可达到


lOOGbps 。 根据以太网的传输距离和速率,可以将一个建筑物中同
一 层的计算机连接起来 ,这就形成了通常称为局域网 (Local Area
网几跨 o

种 未 陆

域并接

Ne twork , LAN) 的 一个例 子。 局域网通过交换机进行连接,可以提


域到够络
广展 能

将围-丁
区,连

扩且的

_
可范 进

-
百大

-
供路由服务和 一 定的安全保护 。 广域网 (Wide Area Network,
44
WAN) 能够跨大陆进行连接 , 作为因特网的骨干网,可支持万维网

(World Wide Web) 。 广域网通常基千光纤 实 现,由通信公司对外租


借运 营。
在过去的 40 年间,因为应用的普及和性能的大幅度提升,网络已 经改变了计算的方式 。
在 20 世纪 70 年代,个人很难接触到电 子 邮件 , 网络和 Web 还不存在,邮寄磁带是两地之
间传送大量数据的 主要 手段 。 在那个年代 , 基本上没有局 域网,而少数几个广域网容量有限
且访问受限 。
随着 网络技术的进步 , 网络变得越来越便宜,性能也越来越 高 。 在大约 40 年前, 第 一
个标准局域网( 是 以太网的 一个版本 )的最大容量 (也称为带宽) 为 lOMbps, 只能供数十台
计算 机共享。 而今天 ,局域网巳能提供 1 ,__, 1OOGbps 的 带宽 。 光通信技术已 经促使广 域网有
了类似的发展 ,从几百 Kbps 到 Gbps 的 带 宽,支持几百 台 到几百万 台 计算机与全球网络互
连 。 网络规模 的飞速扩大,伴随着带宽的急剧增长,使得网络技术成为 最近 30 年来信息革
计算机捡象及相关投术 17

命的核心推动力 。
最近 15 年来,另一种创新型网络技术重塑了计算机通信的方式 , 这种技术就是无线网
络。后 PC 时代 ( PostPC Eva) 随着无线技术广泛应用而开启。与此同时,原本用来生产无
线电的廉 价半导体 (CMOS) 技术被用来生产存储器和微处理器,使其价格大幅度降低、产
量剧增。当前无线通信技术 (IEEE 标准 802.llac) 支持从 lMbps 到 1300Mbps 的传输速率。
无线网络和有线网络的不同之处在于,某个区域内所有的无线网络用户可以共享无线电波。

小测验 半导体 DRAM 、闪存和磁盘存储有很大差别 。 试从易失性、访问时间和价格三方面对

它们进行比较。

1.5 处理器和存储器制造技术
计算机设计者一直采用最新的电子技术进行设计 , 以期在竞争中取得优势,所以处理器
和存储器以惊人的速度发展 。 图 1 - 10 给出了计算机发展过程 中 采用的各种技术 , 包括其出
现的时间和性价比。这些技术决定了计算机的功能和性能,因此 , 计算机专业人员都应该熟
悉集成电路的基础知识。

匾霆雪 I 曜惕漕酬佩酬
1951 真空管 1
1965 晶体管 35
1975 集成电路 900
199 5 超大规模集成电路 24000 00
2020 甚大规模集成电路 500 000 000 000

图 1- 10 随着时间发展,不同计算机实现技术的性价比 。 来源:波士 顿计算机博物馆 , 其


中 2020 年的数据由作者推断得到(见 1.13 节)

晶体管 (transistor) 是一种受电信号控制的开关。集成电路 (IC) 是由成千上万个晶体


管组成的芯片 。 戈登 · 摩尔预测单芯片上晶体管数量将以成倍的速度增长。为了描述这些晶 巨丑
体管从几百个增长到成千上万的情形,形容词“超大规模”被添加

C1rcmt)。 I 制的简单开关。
到术语中 , 简写为 VLSI , 即超大规模集成电路 (very large-scale 晶体管:一种由电信号控
mtegrated
集成电路集成度的增长率是相当稳定的。图 1 - 11 表示自 1977
路体
规到路
模数
超十的
大万电

数成
集百
成万
电晶

由组
____
__________.___._一塑二____

年以来, DRAM 芯片容最的增长趋势。近几十年以来, DRAM 的


容量每隔 3 年就增长 4 倍,累积增长巳超过 16 000 倍 。 从图 1- 11


o

中还可 以看出 ,摩尔定律巳逐渐变缓, DRAM 芯片容量在过去 6 年


增长了 4 倍。 I 硅:一种自然元素,它是
为了理解集成电路的制造过程 , 我们从头开始介绍 。 芯片的制 一种半导体。
造从硅 (silicon) 材料开始,硅是沙子 中 的一种物质 。 因为硅的导电

硅添加某些成分,可以获得以下三种合成材料: I 好的物质。
能力不强,因此称为半导体 (semiconductor) 。用特殊的化学方法对 半导体.一种导电性能不

· 良好的导电体( 类似于细微的铜线或铝线) 。
Another random document with
no related content on Scribd:
"Yes, Pooh."
"Will you be here too?"
"Yes, Pooh, I will be, really. I promise I will be, Pooh."
"That's good," said Pooh.
"Pooh, promise you won't forget about me, ever. Not even when I'm a
hundred."
Pooh thought for a little.
"How old shall I be then?"
"Ninety-nine."
Pooh nodded.
"I promise," he said.
Still with his eyes on the world Christopher Robin put out a hand and
felt for Pooh's paw.
"Pooh," said Christopher Robin earnestly, "if I—if I'm not quite——"
he stopped and tried again—"Pooh, whatever happens, you will
understand, won't you?"
"Understand what?"
"Oh, nothing." He laughed and jumped to his feet. "Come on!"
"Where?" said Pooh.
"Anywhere," said Christopher Robin.

So they went off together. But wherever they go, and whatever
happens to them on the way, in that enchanted place on the top of
the Forest, a little boy and his Bear will always be playing.
BOOKS FOR BOYS AND GIRLS
BY A. A. MILNE
with Decorations by E. H. SHEPARD:

WHEN WE WERE VERY YOUNG


NOW WE ARE SIX
WINNIE-THE-POOH
THE HOUSE AT POOH CORNER
THE CHRISTOPHER ROBIN STORY BOOK
SONG-BOOKS FROM THE POEMS OF A. A. MILNE
with Music by H. FRASER-SIMSON:
FOURTEEN SONGS
THE KING'S BREAKFAST
TEDDY BEAR AND OTHER SONGS
THE HUMS OF POOH
SONGS FROM "NOW WE ARE SIX"

E. P. DUTTON & CO., INC.


*** END OF THE PROJECT GUTENBERG EBOOK THE HOUSE AT
POOH CORNER ***

Updated editions will replace the previous one—the old editions


will be renamed.

Creating the works from print editions not protected by U.S.


copyright law means that no one owns a United States copyright
in these works, so the Foundation (and you!) can copy and
distribute it in the United States without permission and without
paying copyright royalties. Special rules, set forth in the General
Terms of Use part of this license, apply to copying and
distributing Project Gutenberg™ electronic works to protect the
PROJECT GUTENBERG™ concept and trademark. Project
Gutenberg is a registered trademark, and may not be used if
you charge for an eBook, except by following the terms of the
trademark license, including paying royalties for use of the
Project Gutenberg trademark. If you do not charge anything for
copies of this eBook, complying with the trademark license is
very easy. You may use this eBook for nearly any purpose such
as creation of derivative works, reports, performances and
research. Project Gutenberg eBooks may be modified and
printed and given away—you may do practically ANYTHING in
the United States with eBooks not protected by U.S. copyright
law. Redistribution is subject to the trademark license, especially
commercial redistribution.

START: FULL LICENSE


THE FULL PROJECT GUTENBERG LICENSE
PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK

To protect the Project Gutenberg™ mission of promoting the


free distribution of electronic works, by using or distributing this
work (or any other work associated in any way with the phrase
“Project Gutenberg”), you agree to comply with all the terms of
the Full Project Gutenberg™ License available with this file or
online at www.gutenberg.org/license.

Section 1. General Terms of Use and


Redistributing Project Gutenberg™
electronic works
1.A. By reading or using any part of this Project Gutenberg™
electronic work, you indicate that you have read, understand,
agree to and accept all the terms of this license and intellectual
property (trademark/copyright) agreement. If you do not agree to
abide by all the terms of this agreement, you must cease using
and return or destroy all copies of Project Gutenberg™
electronic works in your possession. If you paid a fee for
obtaining a copy of or access to a Project Gutenberg™
electronic work and you do not agree to be bound by the terms
of this agreement, you may obtain a refund from the person or
entity to whom you paid the fee as set forth in paragraph 1.E.8.

1.B. “Project Gutenberg” is a registered trademark. It may only


be used on or associated in any way with an electronic work by
people who agree to be bound by the terms of this agreement.
There are a few things that you can do with most Project
Gutenberg™ electronic works even without complying with the
full terms of this agreement. See paragraph 1.C below. There
are a lot of things you can do with Project Gutenberg™
electronic works if you follow the terms of this agreement and
help preserve free future access to Project Gutenberg™
electronic works. See paragraph 1.E below.
1.C. The Project Gutenberg Literary Archive Foundation (“the
Foundation” or PGLAF), owns a compilation copyright in the
collection of Project Gutenberg™ electronic works. Nearly all the
individual works in the collection are in the public domain in the
United States. If an individual work is unprotected by copyright
law in the United States and you are located in the United
States, we do not claim a right to prevent you from copying,
distributing, performing, displaying or creating derivative works
based on the work as long as all references to Project
Gutenberg are removed. Of course, we hope that you will
support the Project Gutenberg™ mission of promoting free
access to electronic works by freely sharing Project
Gutenberg™ works in compliance with the terms of this
agreement for keeping the Project Gutenberg™ name
associated with the work. You can easily comply with the terms
of this agreement by keeping this work in the same format with
its attached full Project Gutenberg™ License when you share it
without charge with others.

1.D. The copyright laws of the place where you are located also
govern what you can do with this work. Copyright laws in most
countries are in a constant state of change. If you are outside
the United States, check the laws of your country in addition to
the terms of this agreement before downloading, copying,
displaying, performing, distributing or creating derivative works
based on this work or any other Project Gutenberg™ work. The
Foundation makes no representations concerning the copyright
status of any work in any country other than the United States.

1.E. Unless you have removed all references to Project


Gutenberg:

1.E.1. The following sentence, with active links to, or other


immediate access to, the full Project Gutenberg™ License must
appear prominently whenever any copy of a Project
Gutenberg™ work (any work on which the phrase “Project
Gutenberg” appears, or with which the phrase “Project
Gutenberg” is associated) is accessed, displayed, performed,
viewed, copied or distributed:

This eBook is for the use of anyone anywhere in the United


States and most other parts of the world at no cost and with
almost no restrictions whatsoever. You may copy it, give it
away or re-use it under the terms of the Project Gutenberg
License included with this eBook or online at
www.gutenberg.org. If you are not located in the United
States, you will have to check the laws of the country where
you are located before using this eBook.

1.E.2. If an individual Project Gutenberg™ electronic work is


derived from texts not protected by U.S. copyright law (does not
contain a notice indicating that it is posted with permission of the
copyright holder), the work can be copied and distributed to
anyone in the United States without paying any fees or charges.
If you are redistributing or providing access to a work with the
phrase “Project Gutenberg” associated with or appearing on the
work, you must comply either with the requirements of
paragraphs 1.E.1 through 1.E.7 or obtain permission for the use
of the work and the Project Gutenberg™ trademark as set forth
in paragraphs 1.E.8 or 1.E.9.

1.E.3. If an individual Project Gutenberg™ electronic work is


posted with the permission of the copyright holder, your use and
distribution must comply with both paragraphs 1.E.1 through
1.E.7 and any additional terms imposed by the copyright holder.
Additional terms will be linked to the Project Gutenberg™
License for all works posted with the permission of the copyright
holder found at the beginning of this work.

1.E.4. Do not unlink or detach or remove the full Project


Gutenberg™ License terms from this work, or any files
containing a part of this work or any other work associated with
Project Gutenberg™.
1.E.5. Do not copy, display, perform, distribute or redistribute
this electronic work, or any part of this electronic work, without
prominently displaying the sentence set forth in paragraph 1.E.1
with active links or immediate access to the full terms of the
Project Gutenberg™ License.

1.E.6. You may convert to and distribute this work in any binary,
compressed, marked up, nonproprietary or proprietary form,
including any word processing or hypertext form. However, if
you provide access to or distribute copies of a Project
Gutenberg™ work in a format other than “Plain Vanilla ASCII” or
other format used in the official version posted on the official
Project Gutenberg™ website (www.gutenberg.org), you must, at
no additional cost, fee or expense to the user, provide a copy, a
means of exporting a copy, or a means of obtaining a copy upon
request, of the work in its original “Plain Vanilla ASCII” or other
form. Any alternate format must include the full Project
Gutenberg™ License as specified in paragraph 1.E.1.

1.E.7. Do not charge a fee for access to, viewing, displaying,


performing, copying or distributing any Project Gutenberg™
works unless you comply with paragraph 1.E.8 or 1.E.9.

1.E.8. You may charge a reasonable fee for copies of or


providing access to or distributing Project Gutenberg™
electronic works provided that:

• You pay a royalty fee of 20% of the gross profits you derive from
the use of Project Gutenberg™ works calculated using the
method you already use to calculate your applicable taxes. The
fee is owed to the owner of the Project Gutenberg™ trademark,
but he has agreed to donate royalties under this paragraph to
the Project Gutenberg Literary Archive Foundation. Royalty
payments must be paid within 60 days following each date on
which you prepare (or are legally required to prepare) your
periodic tax returns. Royalty payments should be clearly marked
as such and sent to the Project Gutenberg Literary Archive
Foundation at the address specified in Section 4, “Information
about donations to the Project Gutenberg Literary Archive
Foundation.”

• You provide a full refund of any money paid by a user who


notifies you in writing (or by e-mail) within 30 days of receipt that
s/he does not agree to the terms of the full Project Gutenberg™
License. You must require such a user to return or destroy all
copies of the works possessed in a physical medium and
discontinue all use of and all access to other copies of Project
Gutenberg™ works.

• You provide, in accordance with paragraph 1.F.3, a full refund of


any money paid for a work or a replacement copy, if a defect in
the electronic work is discovered and reported to you within 90
days of receipt of the work.

• You comply with all other terms of this agreement for free
distribution of Project Gutenberg™ works.

1.E.9. If you wish to charge a fee or distribute a Project


Gutenberg™ electronic work or group of works on different
terms than are set forth in this agreement, you must obtain
permission in writing from the Project Gutenberg Literary
Archive Foundation, the manager of the Project Gutenberg™
trademark. Contact the Foundation as set forth in Section 3
below.

1.F.

1.F.1. Project Gutenberg volunteers and employees expend


considerable effort to identify, do copyright research on,
transcribe and proofread works not protected by U.S. copyright
law in creating the Project Gutenberg™ collection. Despite
these efforts, Project Gutenberg™ electronic works, and the
medium on which they may be stored, may contain “Defects,”
such as, but not limited to, incomplete, inaccurate or corrupt
data, transcription errors, a copyright or other intellectual
property infringement, a defective or damaged disk or other
medium, a computer virus, or computer codes that damage or
cannot be read by your equipment.

1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES -


Except for the “Right of Replacement or Refund” described in
paragraph 1.F.3, the Project Gutenberg Literary Archive
Foundation, the owner of the Project Gutenberg™ trademark,
and any other party distributing a Project Gutenberg™ electronic
work under this agreement, disclaim all liability to you for
damages, costs and expenses, including legal fees. YOU
AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE,
STRICT LIABILITY, BREACH OF WARRANTY OR BREACH
OF CONTRACT EXCEPT THOSE PROVIDED IN PARAGRAPH
1.F.3. YOU AGREE THAT THE FOUNDATION, THE
TRADEMARK OWNER, AND ANY DISTRIBUTOR UNDER
THIS AGREEMENT WILL NOT BE LIABLE TO YOU FOR
ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE
OR INCIDENTAL DAMAGES EVEN IF YOU GIVE NOTICE OF
THE POSSIBILITY OF SUCH DAMAGE.

1.F.3. LIMITED RIGHT OF REPLACEMENT OR REFUND - If


you discover a defect in this electronic work within 90 days of
receiving it, you can receive a refund of the money (if any) you
paid for it by sending a written explanation to the person you
received the work from. If you received the work on a physical
medium, you must return the medium with your written
explanation. The person or entity that provided you with the
defective work may elect to provide a replacement copy in lieu
of a refund. If you received the work electronically, the person or
entity providing it to you may choose to give you a second
opportunity to receive the work electronically in lieu of a refund.
If the second copy is also defective, you may demand a refund
in writing without further opportunities to fix the problem.

1.F.4. Except for the limited right of replacement or refund set


forth in paragraph 1.F.3, this work is provided to you ‘AS-IS’,
WITH NO OTHER WARRANTIES OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR
ANY PURPOSE.

1.F.5. Some states do not allow disclaimers of certain implied


warranties or the exclusion or limitation of certain types of
damages. If any disclaimer or limitation set forth in this
agreement violates the law of the state applicable to this
agreement, the agreement shall be interpreted to make the
maximum disclaimer or limitation permitted by the applicable
state law. The invalidity or unenforceability of any provision of
this agreement shall not void the remaining provisions.

1.F.6. INDEMNITY - You agree to indemnify and hold the


Foundation, the trademark owner, any agent or employee of the
Foundation, anyone providing copies of Project Gutenberg™
electronic works in accordance with this agreement, and any
volunteers associated with the production, promotion and
distribution of Project Gutenberg™ electronic works, harmless
from all liability, costs and expenses, including legal fees, that
arise directly or indirectly from any of the following which you do
or cause to occur: (a) distribution of this or any Project
Gutenberg™ work, (b) alteration, modification, or additions or
deletions to any Project Gutenberg™ work, and (c) any Defect
you cause.

Section 2. Information about the Mission of


Project Gutenberg™
Project Gutenberg™ is synonymous with the free distribution of
electronic works in formats readable by the widest variety of
computers including obsolete, old, middle-aged and new
computers. It exists because of the efforts of hundreds of
volunteers and donations from people in all walks of life.

Volunteers and financial support to provide volunteers with the


assistance they need are critical to reaching Project
Gutenberg™’s goals and ensuring that the Project Gutenberg™
collection will remain freely available for generations to come. In
2001, the Project Gutenberg Literary Archive Foundation was
created to provide a secure and permanent future for Project
Gutenberg™ and future generations. To learn more about the
Project Gutenberg Literary Archive Foundation and how your
efforts and donations can help, see Sections 3 and 4 and the
Foundation information page at www.gutenberg.org.

Section 3. Information about the Project


Gutenberg Literary Archive Foundation
The Project Gutenberg Literary Archive Foundation is a non-
profit 501(c)(3) educational corporation organized under the
laws of the state of Mississippi and granted tax exempt status by
the Internal Revenue Service. The Foundation’s EIN or federal
tax identification number is 64-6221541. Contributions to the
Project Gutenberg Literary Archive Foundation are tax
deductible to the full extent permitted by U.S. federal laws and
your state’s laws.

The Foundation’s business office is located at 809 North 1500


West, Salt Lake City, UT 84116, (801) 596-1887. Email contact
links and up to date contact information can be found at the
Foundation’s website and official page at
www.gutenberg.org/contact

Section 4. Information about Donations to


the Project Gutenberg Literary Archive
Foundation
Project Gutenberg™ depends upon and cannot survive without
widespread public support and donations to carry out its mission
of increasing the number of public domain and licensed works
that can be freely distributed in machine-readable form
accessible by the widest array of equipment including outdated
equipment. Many small donations ($1 to $5,000) are particularly
important to maintaining tax exempt status with the IRS.

The Foundation is committed to complying with the laws


regulating charities and charitable donations in all 50 states of
the United States. Compliance requirements are not uniform
and it takes a considerable effort, much paperwork and many
fees to meet and keep up with these requirements. We do not
solicit donations in locations where we have not received written
confirmation of compliance. To SEND DONATIONS or
determine the status of compliance for any particular state visit
www.gutenberg.org/donate.

While we cannot and do not solicit contributions from states


where we have not met the solicitation requirements, we know
of no prohibition against accepting unsolicited donations from
donors in such states who approach us with offers to donate.

International donations are gratefully accepted, but we cannot


make any statements concerning tax treatment of donations
received from outside the United States. U.S. laws alone swamp
our small staff.

Please check the Project Gutenberg web pages for current


donation methods and addresses. Donations are accepted in a
number of other ways including checks, online payments and
credit card donations. To donate, please visit:
www.gutenberg.org/donate.

Section 5. General Information About Project


Gutenberg™ electronic works
Professor Michael S. Hart was the originator of the Project
Gutenberg™ concept of a library of electronic works that could
be freely shared with anyone. For forty years, he produced and
distributed Project Gutenberg™ eBooks with only a loose
network of volunteer support.

Project Gutenberg™ eBooks are often created from several


printed editions, all of which are confirmed as not protected by
copyright in the U.S. unless a copyright notice is included. Thus,
we do not necessarily keep eBooks in compliance with any
particular paper edition.

Most people start at our website which has the main PG search
facility: www.gutenberg.org.

This website includes information about Project Gutenberg™,


including how to make donations to the Project Gutenberg
Literary Archive Foundation, how to help produce our new
eBooks, and how to subscribe to our email newsletter to hear
about new eBooks.

You might also like