M A.5.2 cache …………463 A10小结 489 A.5.3 MMU 4t4……444…… 463 A.11拓展阅读 …489 A.5.4存储器空间………………… 463 附录B汇编器、链接器和SPIM A.5.5全局存储器 463 仿真器… 490 A.5.6共享存储器 464 B.1引言… 490 A.5.7局部存储器 4444 464 B.1.1什么时候使用汇编语言… 493 A.5.8常量存储器 ……464 B.1.2汇编语言的缺点 …493 A.5.9纹理存储器 464 B.2汇编器… 494 A.5.10表面 465 B.2.1目标文件的格式 495 A.5.11load/store访问 …465 B.2.2附加工具 496 A.5.12R0P……… 465 B.3链接器…… 498 A.6浮点算术…465 B.4加载… 499 人6.1支持的格式……………… 465 B.5内存的使用…499 A.6.2基本算术… 465 B.6过程调用规范…500 A6.3专用算术…466 B.6.1过程调用 …502 A6.4性能……… 467 B.6.2过程调用举例 503 A.6.5双精度……467 B.6.3另外一个过程调用的例子…505 A.7资料:NVIDIA GeForce88O0 468 B.7异常和中断… 507 A7.1流处理器阵列(SPA) ……468 B.8输人和输出… 509 A.7.2纹理/处理器簇(TPC) ……469 B.9 SPIM 511 A.7.3流多处理器(SM)…470 B.10 MIPS R2000汇编语言…513 A7.4指令集…471 B.10.1寻址方式…514 A.7.5流处理器(SP) 471 B.10.2汇编语法…515 A.7.6特殊功能单元(S)… 471 B.10.3MIPS指令编码 40… 515 A.7.7光栅化… 471 B.10.4指令格式… 516 A.7.8光栅操作处理器(ROP)和 B.10.5常数操作指令 520 存储系统…471 B.10.6比较指令… 520 A.7.9可扩展性… 472 B.10.7分支指令… 521 A.7.10性能 40404… 472 B.10.8跳转指令… 523 A7.11密集线性代数性能…472 B.10.9陷阱指令… 523 A.7.12FFT性能… 473 B.10.10取数指令 …525 A.7.13排序性能 474 B.10.11保存指令 526 A.8资料:将应用映射到GPU 474 B.10.12数据传送指令 …527 A.8.1稀疏矩阵 …475 B.10.13浮点运算指令 …528 A.8.2在共享存储器中进行缓存…477 B.10.14异常和中断指令 532 A8.3扫描和归约…… 478 B.11小结… 533 A8.4基数排序…… 480 B.12参考文献 …533 A8.5GPU上的N-Body应用…482 B.13 练习题 …533 A9谬误与陷阱…… 486 PDG
第1章 Computer Organization and Design:The Hardware/Software Interface,4E 计算机概要与技术 我们可以完成更多重要的操作而不必考虑其完成的过程,这促进了文明的进步。 一Alfred North Whitehead,《An Introduction to Mathematics)》,Igli 1.1引言 欢迎阅读本书!非常高兴有这样的机会和大家一起共享令人兴奋的计算机系统世界。这并 不是个枯燥无味的领域,其进步不像冰河期那般漫长,新思想也不会因为受到忽视而萎缩。事 实上,计算机是一种令人难以置信的、激动人心的信息技术工业的产物,其相关产品几乎占全美 国民生产总值的10%,并按摩尔定律一直持续增长。在过去的二十多年里,出现了许多导致计 算产业革命的新型计算机,但是这些计算机很快就被更好的计算机所取代。 电子计算自20世纪40年代后期出现以来,其创新性的竞争导致了史无前例的进步。如果运 输业的发展速度也像计算器工业那样快,那么今天我们从纽约到伦敦的旅行时间只需1秒钟,花 费只有几美分。想象一下,这样的进步将如何改变社会一生活在南太平洋的塔希提岛,而工作 在旧金山,傍晚去莫斯科吃夜宵一你能够想象得出这种进步意味着什么。 计算机已导致人类文明的第三次革命一信息革命,它是沿着农业革命、工业革命的发展 方向产生的。信息革命导致了人类能力和智慧的成倍增长,自然而深刻地影响着我们的日常生 活,甚至改变了寻求新知识的方法。现在有一种科学探索的新方式,即计算科学家联合理论和实 验科学家,共同探索天文学、生物学、化学和物理学的前沿问题。 计算机革命一直在向前推进。每当计算成本降低10倍,计算机的发展机遇就会增加10倍。 原本经济上不可行的应用,突然变得可行了。例如,下述的各项应用在过去曾经是“计算机科 学幻想”: ·车载计算机在20世纪80年代初微处理器的性能和价格得到极大改进之前,用计算机 来控制汽车几乎是天方夜谭。而今天,用计算机控制汽车发动机是极为普遍的应用,车 载计算机不仅改进了燃油效率,减轻了污染,还通过防险刹车和安全气囊实现了撞车 保护。 ·手机谁曾想到计算机系统的发展会产生移动电话,让人们几乎在全世界的任何地方都 可以自由通信。 ·人类基因项目目前用于绘图和分析人类基因序列的计算机设备价值达几亿美元,这在 10多年前就更加昂贵了。然而,随着计算机设备价格的持续下降,有望在未来实现按个 人基因序列来治疗疾病。 ·万维网在编写本书第1版时,万维网尚不存在,而现在万维网已经改变了整个社会。 在许多地方,它已取代了传统的图书馆。 ·搜索引擎随着万维网规模的扩大和价值的与日俱增,如何快速精确地找到所需信息变 得越来越重要。今天,如果没有搜索引擎,许多人在万维网中将寸步难行。 显而易见,计算机技术的进步儿乎影响着社会的每一个方面。硬件的进步使得程序员可以 编写出各种优秀的应用软件,进而证实计算机几乎是无所不能的。今天的科学幻想在未来就会 成为现实,诸如虚拟世界、实用级别的语音识别和个性化保健等技术正在向我们走来
2·第1章计算机概要与技术 1.1.1计算应用的分类及其特性 计算机的应用领域十分广阔,从智能家电到手机,再到最大型的超级计算机。这些不同的应 用有着不同的设计需求,并以不同的方式通过硬件实现。概括地说,计算机主要包括以下三类 应用: 桌面计算机也许是最为人所知的应用方式,其典型代表为个人计算机,本书的读者几乎都 在大量使用。桌面计算机强调对单用户提供良好的性能,价格低廉,通常运行第三方软件。尽管 此类应用的出现只有短短的30多年,但是已经带来大量新的计算技术革新。 服务器“是过去被称为大型机、小型机或超级计算机的现代形式,通常借助网络访问。服务 器面向大型用户,可以执行单个复杂应用(科学的或工程的),也可以处理大量的简单作业,如 大型Wb服务器。这些应用通常基于其他来源(例如数据库或仿真软件)的软件,并且往往为 了特别的需要而加以修改或定制。服务器的制造技术和桌面计算机差不多,但能够提供更强的 计算或/O能力。服务器的设计通常强调可靠性,因为它的当机开销要比单用户的桌面计算机大 得多。 服务器的功能和价格有很大的伸缩范围。低端服务器可能比桌面计算机稍微贵些,不带显 示器和键盘的大约需要一千美元,一般用于文档存储、小型商务应用或者简单的Wb服务(见 6.l0节)。高端服务器称为超级计算机°,一般由成百上千台处理器组成,内存为terabyte8级, 外存为petabyte⑧级,价格从几百万至几亿美元不等。它们主要用于高端科学和工程计算,如天 气预报、石油勘探和蛋白质结构计算等大规模问题。 诸如eBay和Google等公司所使用的互联网数据中心⑧也包含数以千计的处理器、terabyte级 的内存和petabyte级的外存,尽管它们一般不称为超级计算机。此类数据中心一般由大量计算机 集群(见第7章)构成。 嵌入式计算机是数量最多的一类,应用和性能范围十分广泛。包括在汽车、手机、电视 中的微处理器以及用来控制飞机和货船的处理器网络。嵌入式计算系统的设计目标是运行单 一应用程序或者一组相关的应用程序,并且通常和硬件集成在一起以单一系统的方式一并交 付用户。因此,尽管嵌入式计算机的数量庞大,还是有很多用户从来没有意识到他们正在使 用计算机。 图11显示,最近几年中移动电话对嵌入式计算机的需求增长要比桌面计算机快得多。应该注 意的是,除此之外,嵌人式计算机还大量应用于数字电视、机顶盒、汽车、数码相机、音乐播放 器、视频游戏机等消费品,这些应用更加拉大了嵌入式计算机和桌面计算机之间数量需求的差距。 面向单一应用需求的嵌人式应用通常被严格限制其成本或功耗。以音乐播放器为例,处理 器只需尽量快速地执行有限的功能,除此以外降低成本和功耗是最大的目标。除了低成本的要 求之外,嵌人式计算机对故障非常敏感,因为故障可能会让使用者心烦意乱(例如新电视机无 法正常收看节目),也可能会导致安全事故(例如飞机失事)。在面向消费者的嵌入式应用中, 如数字家电,可靠性是通过设计的简单性获得的一一其重点在于尽可能地保证一项功能的正常 e 桌面计算机(desktop computer):用于个人使用的计算机,通常包含图形显示器、键盘和鼠标等。 服务器(server):用于为多用户运行大型程序的计算机,通常由多个用户并行使用,并且一般通过网络访问。 超级计算机(supercomputer)::具有最高性能和最贵成本的-一类计算机,一般配置为服务器,需要花费数百万美元。 国terabyte(一般简写作TB):原始定义为1099511627776(2o)字节,但有些通信和辅助存储系统将其重新定 PD 义为1000000000000(1012)字节。 国petabyte:1000TB或1024TB,视具体情况而定。 数据中心(datacenter):可满足大量服务器用电、散热和网络需求的房间或建筑物。 ⊕嵌人式计算机(embedded computer):嵌入到其他设备中的计算机,一般运行预定义的一个或者一组应用程序
第1章计算机概要与技术·3 运转。而在大型嵌人式系统中,采用了多种冗余技术(见6.9节)。尽管本书将重点放在通用计 算机上,但是大多数概念可直接或者稍微修改之后用于嵌入式计算机。 口移动电话口PC口电视 1200 图1-11997~2007年之间每年生产的移动 1100 电话、P℃和电视的数量(电视数量 1000 从2004年开始统计) 900 在2006年,交付了超过十亿部新的移动电话。在 800 1997年,移动电话的销量仅为PC机的1.4倍,但是 700 在2007年达到了4.5倍。在2004年,使用中的电视 600 约为20亿台,移动电话约为18亿部,P℃机约为8 500 亿台。而在2004年世界人口约为64亿,相当于每8 400 个人就有1台P℃机、2.2部移动电话和2.5台电视 300 机。在2006年对美国家庭的一项调查中发现,平均 200 每个家庭拥有12台家电,包括3台电视机、2台PC 100 机以及其他电器,如游戏终端、MP3播放器和移动 电话等。 精解:本书中的精解是正文中的一个小节,主要用来对读者可能感兴趣的内容做深人介绍。对此部分 不感兴趣的读者可以直接跳过,因为它并不影响后续内容的学习。 许多嵌入式处理器使用处理器核。处理器核是利用硬件描述语言Verilog或VHDL(见第4章)描述的 处理器版本,它使得设计者能够把其他专用硬件与之集成起来制造在一块芯片上。 1.1.2你能从本书学到什么 成功的程序员总是关心其程序的性能,因为让用户快速得到结果对软件成功与否至关重要。 在20世纪六七十年代,限制计算机性能的主要因素是内存容量。因而那时候程序员的信条是尽 量少占用内存空间,以加速程序的运行速度。近十多年来,计算机和内存的设计技术有了长足进 步。除了嵌人式系统以外,大多数用户对少占内存容量的需求大大减轻了。 现在,关心性能的程序员需要十分明确,20世纪60年代的简单存储模型已经不复存在,现 代计算机的特征是处理器的并行性和内存的层次性。因此,程序员为了创建高性能的编译器、操 作系统、数据库以至应用程序,必须增加对计算机组成的认知。 我们很荣幸有机会为你解释这些知识,阐述机箱覆盖之下的计算机内部软硬件是如何工作 的。当你读完本书之后,我们相信,你将能够理解下面的问题: ·用C或Java等高级语言编写的程序如何翻译成硬件之间的语言?硬件如何执行程序?领 会这些概念是理解软硬件两者如何影响程序性能的基础。 ·什么是软硬件之间的接口,以及软件如何指导硬件完成其功能?这些概念对于许多软件 的编写是十分重要的。 ·哪些因素决定了程序的性能?程序员如何才能改进其程序性能?从本书中我们将知道,程序 性能取决于原始程序、将该程序转换为计算机语言的软件以及执行该程序的硬件的有效性。 ·什么技术可供硬件设计者用于改进性能?本书将介绍现代计算机设计的基本概念。有兴趣的 读者可深入阅读我们的另一本进阶教材《Computer Architecture:A Quantitative Approach》。 ”为什么串行处理近来发展为并行处理?这种发展带来的结果是什么?本书给出了解释,并。 介绍了当今支持并行处理的硬件机制,全面评述了新一代的多核微处理器°(见第7章)。 多核微处理器(multicore microprocessor):在一块集成电路上包含多个处理器(“核”)的微处理器
4·第1章计算机概要与技术 如果无法理解这些问题,那么就无从改进你的程序在现代计算机上的性能,也无法评价各种计 算机在解决特定问题时的优劣。 本书第1章的目的是为其余各章奠定良好的基础。它介绍了各种基本概念和定义,指出如何 正确地剖析软硬件,以及如何评价性能与功耗等。它还介绍了集成电路(为计算机革命提供动 力的技术),并在最后解释了向多核转移的原因。 在本章和后面几章里,读者会看到许多新的术语。但是不用担心,在描述现代计算机时,确 实会有很多专用术语,它们使我们能够精确描述计算机的功能或性能。另外,计算机设计人员 (包括本书作者)喜欢用首字母缩略词°,一旦熟悉了就很容易理解。为了帮助读者理解和记忆 这些专用术语,在术语第一次出现时,我们会在页底给出明确的定义,这样你很快会对这些定义 熟悉起来。 为了加强对软件和硬件对于程序运行性能影响的理解,我们在全书中特别插入了“理解程 序性能”小节,来对程序性能的理解加以概括。下面就是第一个: 理解程序性能 一个程序的性能取决于以下各因素的组合:程序所用算法的有效性,用来建立程序并将其 翻译成机器指令的软件系统,计算机执行机器指令(可能包括/0操作)的有效性。下表总结 了硬件和软件是如何影响性能的。 硬件或软件部件 如何影响性能 何处介绍 算法 决定源代码的行数和执行V0操作的数量 参见其他书 编程语言、编译程序和体系结构 决定每行源代码对应机器指令的数量 第2、3章 处理器和存储器系统 决定指令执行的速度快慢 第4、5、7章 V0系统(硬件和操作系统) 决定V0操作执行的速度快慢 第6章 小测骏 “小测验”的目的是帮助读者评估自己是否掌握了所学的概念。在这些小测验中,有些只有简单的答 案,有些则是为了组内讨论。有些问题的答案可在章尾找到。所有小测验只在节尾出现,如果你确信自己 对该部分内容完全理解,则可以跳过去。 1)1.1节指出,每年嵌入式处理器的售出数量远远超过桌面处理器的数量。根据自己的经验,你是支持还 是反对这种看法?列举你家中使用的嵌入式处理器,它与你家中桌面处理器的数量相比如何? 2)如前所述,软件和硬件都会影响程序的性能。请思考下述的哪个例子属于性能瓶颈。 ·所选算法 ·编程语言或编译程序 ·操作系统 ·处理器 ·V0系统和设备 1.2程序概念入门 在巴黎,我对当地人讲法语,他们只是瞪着我看;我从来没能让这些白痴理解他们自己的 语言。 一马克·吐温,《The Innocents Abroad》)(《异国奇遇》),1869 一个典型的应用程序,如字处理程序或大型数据库,可以由数百万行代码构成,并依靠软件 )首字母缩略词(acronym):由一串单词中每个单词的首字母相连构成的单词