计算机科学丛书 当四 原书第4版 计算机组成与设计 硬件/软件接口 (美)David A.Patterson John L,Hennessy著章德昌见晓慢安建修零保 Computer Organization and Design The Hardware Software Interface foenh Editoa COMPUTER ORGANIZATION AND DESIGN THE HARDWARE /SOFTWARE INTIRFACE DAVIDA FATTERSON JOHN L HINNESSY M 别光盘 机城工立出板杜 Cnno Mochne Piess
目录 Computer Organization and Design:The Hardware/Software Interface,4E 出版者的话 2.4有符号和无符号数…50 译者序 2.5计算机中指令的表示…54 前言 2.6逻辑操作 4… 59 2.7决策指令 61 第】章计算机概要与技术…1 2.7.1循环… 62 1,1引言…1 2.7.2ca3e/switch语句…64 1.1.1计算应用的分类及其特性…2 2.8计算机硬件对过程的支持…65 1.1.2你能从本书学到什么…3 2.8.1使用更多的寄存器…………66 1.2程序概念人门… 4 2.8.2嵌套过程…68 1.3硬件概念人门……7 2.8.3在栈中为新数据分配空间 69 1.3.1剂析鼠标……8 2.8.4在堆中为新数据分配空间 70 1.3.2显示器…8 2.9人机交互…72 1.3.3打开机箱 9 ·2.10MS中32位立即数和地址的寻址…75 1.3.4数据安全…12 2.10.132位立即数… 75 1.3.5与其他计算机通信…13 2.10.2分支和跳转中的寻址…76 1.3.6处理器和存储器制造技术 ……14 2.10.3MIPS寻址模式总结 78 1.4性能…15 2.10.4机器语言解码 79 1.4.1性能的定义…15 2.11并行与指令:同步 81 1.4.2性能的测量…17 2.12翻译并执行程序 …83 1.4.3CPU性能及其因素…18 2.12.1编译器…… 84 1.4.4指令的性能…19 2.12.2汇编器… 84 1.4.5经典的CPU性能公式…19 2.12.3链接器… 85 1.5功耗墙…21 2.12.4加载器…… 87 1.6沧海巨变:从单处理器向多处理器 2.12.5动态链接库… 87 转变…… 23 2.12.6启动一个Java程序 ……88 1.7实例:制造以及AMD Opteron X4基准·25 2.13以一个C排序程序为例 ”4”4。 89 1.7.1 SPEC CPU基准测试程序·27 2.13.13wap过程…89 1.7.2SPEC功耗基准测试程序…28 2.13.2s0xt过程…90 1.8谬误与陷肼…… 29 2.14数组与指针… 95 1.9本章小结 …31 2.14.1用数组实现clear 0…4g 96 1.10拓展阅读……… 32 2.14.2用指针实现clear… 96 1.11练习题…… 32 2.14.3比较两个版本的clear …97 第2章指令:计算机的语言… 42 2.15高级内容:编译C语言和解释 2.】引言…42 Jav阳语言…98 2.2计算机硬件的操作… 43 2.16实例:ARM指令集 …98 2.3计算机硬件的操作数… 46 2.16.1寻址模式…99 2.3.1存储器操作数… 47 2.16.2比较和条件分支 ……100 2.3.2常数或立即数操作数… 49 2.16.3ARM的特色…100 PDG
Ⅻ 2.17实例:x86指令集…101 3.11练习题 ………4… 173 2.17.1 intel x86的改进 …101 第4章处理器…… 182 2.17.2x86寄存器和数据寻址模式…103 4.1引言…… 182 2.17.3x86整数操作 …104 4.1.1一个基本的MIPS实现…183 2.17.4x86指令编码… 106 4.1.2实现方式概述 …183 2.17.5x86总结…107 4.2逻辑设计惯例…… 185 2.18谬误与陷阱… 107 4.3建立数据通路 44444t… 187 2.19本章小结… 108 4.4一个简单的实现机制 192 2.20拓展阅读…… 110 4.4.1ALU控制… 192 2.21练习题 110 44.2主控制单元的设计………194 第3章计算机的算术运算…135 4.4.3数据通路的操作…… 197 3.1引言… 135 4.4.4控制的结束…199 3.2加法和减法… 135 4.4.5为什么不使用单周期实现方式…201 3.2.1多媒体算术运算 …… 137 4.5流水线概述 202 3.2.2小结… 138 4.5.1面向流水线的指令集设计…205 3.3乘法… 139 4.5.2流水线冒险…205 3.3.1顺序的乘法算法和硬件… 139 4.5.3对流水线概述的小结… 210 3.3.2有符号乘法… 141 4.6流水线数据通路及其控制… 211 3.3.3更快速的乘法 142 4,6.1图形化表示的流水线… 219 3.3.4MPS中的乘法 142 4.6.2流水线控制…222 3.3.5小结… 142 4.7数据冒险:转发与阻塞…225 3.4除法… 143 4.8控制冒险…234 3.4.1除法算法及其硬件结构… 143 4.8.1假定分支不发生…234 3.4.2有符号除法 145 4.8.2缩短分支的延迟 ………,235 3.4.3更快速的除法 …146 4.8.3动态分支预测 …237 3.4.4MIPS中的除法…146 4.8.4流水线小结 …239 3.4.5小结… 147 4.9异常…240 3.5浮点运算… 148 4.9.1异常在M体系结构中的处理…241 3.5.1浮点表示… 149 4.9.2在流水线实现中的异常…242 3.5.2浮点加法… 152 4.10并行和高级指令级并行 …245 3.5.3浮点乘法 44, 154 4.10.1推测的概念…… 246 3.5.4MIPS中的浮点指令 。…004004。 157 4.10.2静态多发射处理器 …247 3.5.5算术精确性 162 4.10.3动态多发射处理器 250 3.5.6小结… 164 4.11实例:AMD Opteron X4(Barcelona) 3.6并行性和计算机算术:结合律… 165 流水线…253 3.7实例:x86的浮点…165 4.12 高级主题:通过硬件设计语言描述 3.7.1x86浮点体系结构…166 和建模流水线来介绍数字设计以及 3.7.2 Intel SIMD流扩展2(SSE2) 更多流水线示例… 255 浮点体系结构 …167 4.13谬误与陷阱… 255 3.8谬误与陷阱… 168 4.14本章小结 …256 3.9本章小结… 170 4.15拓展阅读 4004.04。。00。年 257 3.10拓展阅读 …172 4.16练习题 257 PDG
N 第5章大容量和高速度:开发存储器 5.7.1一个简单的cache……330 层次结构……280 5.7.2有限状态机……331 5.1 引言…280 5.7.3一个简单的cache控制器的 5.2 cache的基本原理…283 有限状态机…333 5.2.1 cache访问…285 5.8并行与存储器层次结构:cache 5.2.2 cache缺失处理…· 288 一致性……………334 5.2.3写操作处理……… 289 5.8.1实现一致性的基本方案…335 5.2.4-个cache的例子:内置 5.8.2监听协议…335 FastMATH处理器…,290 5.9高级内容:实现cache控制器…336 5.2.5设计支持cache的存储系统…292 5.10实例:AMD Opteron X4(Barcelona)和 5.2.6小结…… 294 Intel Nehalem的存储器层次结构…337 5.3 cache性能的评估和改进 …295 5.10.】Nehalem和Opteron的存储器 5.3.1通过更灵活地放置块来减少 层次结构…337 cache缺失……297 5.10.2减少缺失代价的技术 …339 5.3.2在cache中查找一个块… 300 5.11谬误和陷阱… 340 5.3.3替换块的选择…302 5.12本章小结…342 5.3.4使用多级cache结构减少缺失 5.13拓展阅读 ……343 代价……302 5.14练习题…343 5.3.5小结…305 第6章存储器和其他/0主题…355 5.4虚拟存储器… 305 61引言…355 5.4.1页的存放和查找…308 6.2可信度、可靠性和可用性…357 5.4.2缺页… 309 6.3磁盘存储器…359 5.4.3关于写……3l2 6.4.快闪式存储器…362 5.4.4加快地址转换:TLB…312 6.5连接处理器、内存以及/0设备…363 5.4.5集成虚拟存储器、TmB和cache…315 6.5.1互联基础…364 5.4.6虚拟存储器中的保护…317 6.5.2x86处理器的/0互联… 365 5.4.7处理TLB缺失和缺页… 318 6.6为处理器、内存和操作系统提供 5.4.8小结…322 /0设备接口…366 5.5存储器层次结构的一般架构… 323 6.6.1给/0设备发送指令…367 5.5.1问题1:一个块可以被放在何处…323 6.6.2与处理器通信…368 5.5.2问题2:如何找到一个块… 324 6.6.3中断优先级… 369 5.5.3问题3:当cache缺失时替换 6.6.4在设备与内存之间传输数据…370 哪一块… 325 6.6.5直接存储器访问和内存系统…371 5.5.4问题4:写操作如何处理… 325 6.7V0性能度量:磁盘和文件系统 5.5.53C:一种理解存储器层次结构 的例子…372 行为的直观模型…326 6.7.1事务处理/0基准程序…372 5.6虚拟机… 328 6.7.2文件系统和Wb/0的 5.6.1虚拟机监视器的必备条件…329 基准程序……373 5.6.2指令集系统结构(缺乏)对 6.8设计/0系统…373 虚拟机的支持…329 6.9并行性与V0:廉价磁盘冗余阵列…374 5.6.3保护和指令集系统结构…329 6.9.1无冗余(RAD0) …376 5.7使用有限状态机来控制简单的cache…330 6.9.2镜像(RAD1)...376 PDG
W 6.9.3错误检测和纠错码(RAID2)·376 7.15练习题…… 429 6.9.4位交叉奇偶校验(RAD3)…376 附录A图形和计算GPU… 439 6.9.5块交叉奇偶校验(RAID4)…376 A.1引言 … 439 6.9.6分布式块交叉奇偶校验 A.1.1GPU发展简史 …439 (RAID 5) …377 A.1.2异构系统 …440 6.9.7P+Q冗余(RAID6) …378 A.1.3GPU发展成了可扩展的 6.9.8RAID小结…378 并行处理器…440 6.10实例:Sun Fire x4150服务器…379 A.1.4为什么使用CUDA和GPU 6.11 高级主题:网络…383 计算…440 6.12谬误与陷阱………383 A.1.5GPU统一了图形和计算 ……441 6.13本章小结 ……386 A1.6GPU可视化计算的应用…441 6.14拓展阅读 …387 A2GPU系统架构…441 6.15练习题 387 A.2.1异构CPU-GPU系统架构…442 第7章多核、多处理器和集群… 394 A.2.2GPU接口和驱动… 443 7.1引言…394 A.2.3图形逻辑流水线 ……443 7.2创建并行处理程序的难点……396 A2.4将图形流水线映射到统一的 7.3共享存储多处理器…………398 GPU处理器…443 7.4集群和其他消息传递多处理器…400 A.2.5基本的统一GPU结构 444 7.5硬件多线程… 403 A.3可编程GPU ..... 445 7.6SISD、MIMD、SIMD、SPMD和 A3.1为实时图形编程… 446 向量机…………404 A3.2逻辑图形流水线 888848888e4。e。e04 446 7.6.1在x86中的SMD:多媒体扩展…405 A3.3图形渲染程序 ………447 7.6.2向量机……406 A.3.4像素渲染示例 447 7.6.3向量与标量的对比…407 A.3.5并行计算应用编程 448 7.6.4向量与多媒体扩展的对比…408 A.3.6 使用CUDA进行可扩展并行 7.7图形处理单元简介 ………408 编程…449 7.7.1 NVIDIA GPU体系结构简介 …410 A.3.7一些限制 453 7.7.2深入理解GPU…411 A3.8体系结构隐含的问题…453 7.8多处理器网络拓扑简介…412 A.4多线程的多处理器架构 …454 7.9多处理器基准测试程序… 415 A4.1大规模多线程…454 7.10 Roofline:一个简单的性能模型 417 A.4.2多处理器体系结构 …455 7.10.1 Roofline模型 418 A.4.3单指令多线程(SMT) …456 7.10.2两代0 pteron的比较… 419 A.4.4 SIMT warp执行和分支 457 7.11实例:使用屋顶线模型评估四种 A.4.5管理线程和线程块 ……457 多核处理器……422 A4.6线程指令…458 7.11.14个多核系统… 422 A4.7指令集架构(ISA) 458 7.11.2稀疏矩阵… 424 A.4.8流处理器(SP) …… 461 7.11.3结构化网格…425 A.4.9特殊功能单元(SFU) …461 7.11.4生产率… 426 A.4.10与其他多处理器的比较 **……461 7.12谬误与陷阱… 427 A.4.11 多线程多处理器总结 462 7.13本章小结 428 A5并行存储系统… 462 7.14拓展阅读 429 A.5.1 DRAM的考虑 ……462 PDG
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):由一串单词中每个单词的首字母相连构成的单词