第1章计算机概要与技术·25 ·第4章,4.10节:并行和高级指令级并行。尽管明确地知道并行编程的困难,在20世纪 90年代依然付出了巨大的努力和投资用于研究硬件和编译程序的并行性。本章描述了其 中的一些技术,包括取指与多指令同时执行和推测决策结果、指令执行等。 ·第5章,5.8节:并行与存储器层次结构:cache一致性。降低通信开销的一个方法是让 所有处理器使用同一个地址空间,任何处理器可以读写任何数据。今天的计算机都采用 cace技术,即在处理器附近更快的存储器中,保持数据的一个临时复制。可以想象,如 果多个处理器访问cache中的共享数据不一致的话,并行编程将尤为困难。本章将介绍 保持所有cache数据一致性的机制。 ·第6章,6.9节:并行性与/O:廉价磁盘冗余阵列(RAID)。如果你在并行性革命中忽 略了I/O,那么你的并行程序将在等待/O上浪费大量的时间。本章介绍的RAID技术, 可以加速外存访问的速度,这体现了并行性的另一个优点:利用资源的多个复制,即使 有一个复制失效了,系统仍能继续工作。因此,RAD能同时改进/O性能和可用性。 除了这些章节之外,还有一整章介绍并行编程。第7章详细叙述了并行编程的挑战性;提出 了两种方法来解决共享编址通信和显式消息传输;介绍了一种易于编程的并行性模型;讨论了 使用基准测试程序对并行处理器进行评测的困难;为多核微处理器引入了一个新的简单性能模 型;最后,描述和评价了四种使用该种模型的多核微处理器。 本书从这一版开始在附录A中介绍了GPU(graphics processing unit)。GPU是一种在桌面计算 机中越来越普及的图形处理器,它是为加速图像处理而发明的。得益于高度的并行性,GPU表现出 了优越的性能,并已发展为完善的编程平台。附录A介绍了NVIDIA GPU及其并行编程环境。 1.7实例:制造以及AMD Opteron X4基准 我想,就像书一样,“计算机”是一个全世界广泛应用的概念。但我没有想到它会发展得如 此迅速,因为我完全没有预料到我们在一块芯片上可以得到像我们最终得到的如此多的部件。 晶体管的进步完全出乎我们的预料。它比我们预想的发展要快。 一J.Presper Eckert,ENIAC的创建者之一,言论发表于I991 本书的每一章都有“实例”一节,它将本书中的概念与我们日常使用的计算机联系起来, 这些小节涵盖了现代计算机中使用到的技术。下面是本书中的第一个“实例”小节,我们将以 AMD Opteron X4为例,说明如何制造集成电路,以及如何测量性能和功耗。 芯片的制造从硅开始。硅是从沙子中发现的一种物质。由于它导电性能不好,所以称为半 导体·。用特殊的化学方法对硅添加某些材料,可以把其细微的区域转变为以下三种类型之一: ·良好的导电体(类似于细微的铜线或铝线) ·良好的绝缘体(类似于塑料或玻璃膜) ·可控的导电体或绝缘体(类似开关) 晶体管属于第三种。VLSI电路是由数亿个上述三种材料组合起来并封装在一起所制成的。 集成电路的制造过程对决定芯片的价格非常关键,因此对计算机设计者十分重要。图118 表示了集成电路制造的整个过程。集成电路的制造是从硅锭开始的,它像一根巨大的香肠。目 前使用的硅锭直径约8~12英寸,长度约12~24英寸。硅锭经切片机切成片厚度不超过0.1英 寸的晶圆°。这些晶圆经过大约20~40步化学加工最终产生之前所讨论的晶体管、导体和绝缘 曰硅(silicon):一种自然元素,它是一种半导体。 PDG 已半导体(semiconductor):一种导电性能不好的物质。 自硅锭(silicon crystal ingot):一块由硅晶体组成的棒。直径大约在8-12英寸,长度约12-24英寸。 )晶圆(wafer):厚度不超过O.1英寸的硅锭片,被用来制造芯片
26·第1章计算机概要与技术 体。如今的集成电路包含一层晶体管,但是可能具有多个绝缘层间隔的2~8层金属导体。 硅锭 空白硅晶圆 切片机 20步~40步 处理过程 测试后的芯片 测试后的 图样化晶圆 ▣▣ 品圆 ▣☒▣☒ 封装 切块机 品圆 测试仪 ▣OO口 ▣▣ 封装后的芯片 测试后的芯片 ▣▣▣ 部件 ▣▣网 ▣▣ 测试仪 ▣▣▣ 交付用户 图1-18芯片制造的全过程 从硅锭切下来之后,空白的晶圆经过大约20步~40步的加工,产生图样化的晶圆(见图119)。这些图样 化的晶圆被-个晶圆测试器所测试,产生一个表明哪些部分是好的图。之后,这些品圆被进一步切成芯片 (见图119)。在本图中,-一个晶圆能生产20个芯片,其中有17个通过测试。(X意味着这个芯片是坏的) 本例中芯片的良率/成品率是17/20,也就是85%。这些合格芯片被封装而且发布给用户之前经过多次测试。 一个坏的封装会在最终的测试中被发现。 图1-19 AMD Opteron2芯片的12英寸(300mm)晶圆, 还尝心 Opteron X4芯片的上代产品(AMD提供) 良率为100%的圆片中的晶圆的数目是17。晶圆边缘几十个不完整的芯片是没用的。之所以包含它们,因 为这样给硅片生产掩膜相当容易。晶圆使用90m的工艺,这意味着最小的品体管的尺寸儿乎接近90nm,尽 管它们通常比实际的特征尺寸还要小,这个特征尺寸是将晶体管“图纸尺寸”和最终的生产尺寸相比。 PDG 晶圆中或是在图样化的几十个步骤中出现一个细微的瑕疵就会使其附近的电路损坏,这些
第1章计算机概要与技术·27 瑕疵使得制成一个完美的晶圆几乎是不可能的。有儿种策略可以解决这一问题,最简单的策略 是把晶圆切分成许多独立的晶圆,也就是现在所称的芯片°。图1-19所示就是切分前的微处理器 晶圆,而图1-9则是单个微处理器芯片及其主要部件。 通过切分,可以只淘汰那些有瑕疵的芯片,而不必淘汰整个晶圆。对这一过程的量化描述可 以用成品率来表示,其定义为合格芯片数占总芯片数的百分比。例如,假设总芯片有22片, 其中有瑕疵的芯片为3片,则成品率为19/22=86%。 当芯片尺寸增大时,集成电路的价格会快速上升,因为成品率和硅片中芯片的总数都下降 了。为了降低价格,一个大芯片常采用下一代工艺进行尺寸收缩(包括晶体管和导线)的方法, 从而改进每硅片的芯片数和成品率。 合格芯片要连接到V0引脚上,这一过程称为“封装”。在封装之后,必须进行最后一次测 试,因为封装过程也可能出错。最后芯片将被交付用户。 如之前提到的,功耗是在设计过程中所面临的不断增长的压力,主要有两个原因:第一,芯 片的工作必须供电,并且电源必须均匀地分布在芯片上,现代微处理器通常用几百个引脚满足 供电和接地的需求,并使用多层互连来使电源和接地均匀分布到芯片上。第二,功耗是以散热的 形式从芯片中排除的,而芯片的面积非常小。例如,2008年的AMD0 pteron X423562.0GHz处 理器功耗为120瓦,而其表面积只有约1平方厘米。 精解:集成电路的成本可以用下面3个公式来表示: 每芯片的价格=每晶圆的价格/(每晶圆的芯片数×成品率) 每晶圆的芯片数≈晶圆面积/芯片面积 成品率=1/(1+(单位面积的瑕疵数×芯片面积2))2 第1个公式是直接导出的。第2个公式是近似的,因为没有减去晶圆边上不满足芯片矩形要求的面积 (参见图119)。第3个公式是基于集成电路工厂的成品率经验,与重要加工步骤的数量呈指数关系。 因此,芯片的成本取决于成品率、芯片和晶圆的面积,与芯片的面积之间的关系一般不是线性的。 1.7.1 SPEC CPU基准测试程序 用户日复一日使用的程序是用于评价新型计算机最完美的程序。所运行的一组程序集构成 了工作负载⑧。要评价两台计算机系统,只需简单地比较工作负载在两台计算机上的运行时间。 然而大多数用户并不这样做,他们通过其他方法测量计算机的性能,从而决定最终的选择。最常 用的测量方法是使用一组专门用于测量性能的基准测试程序⑧。这些测试程序形成负载,用户期 望预测实际负载的性能。 SPEC(System Performance Evaluation Cooperative)是由许多计算机销售商共同出资赞助并支 持的合作组织,目的是为现代计算系统建立基准测试程序集。1989年,SPEC建立了重点面向处 理器性能的基准程序集(现在称为SPEC89)。历经5代发展,目前最新的是SPEC CPU2006,它 包括12个整数基准程序集(CINT2006)和17个浮点基准程序集(CFP2006)。CNT2006包括C 编译程序、量子计算机仿真、下象棋程序等,CFP2006包括有限元模型结构化网格法、分子动力 学质点法、流体动力学稀疏线性代数法等。 图1-20列举了SPEC整数基准程序及其在AMD Opteron X4上的执行时间、指令数、CPI和时 曰暇疵(dcf®ct):晶圆上一个徽小的缺陷,或者在图样化的过程中因为包含这个缺陷而导致芯片失效。 芯片(die):从晶圆中切割出来的一个单独的矩形区域,更加正式的叫法是芯片(chip)。 目成品率(yild):合格芯片数占总芯片数的百分比。 @ 作负载(workload):运作在计算机上的一组程序,可以直接使用用户的一组实际应用程序,也可以从实际程 序中构建。 国基准测试程序(benchmark):用于比较计算机性能的程序
28·第1章计算机概要与技术 钟周期时间等。注意:CP的最大值和最小值相差达到13倍。 时钟周期时间 执行时间 参考时间 描述 名利 指令数x10 (秒×10D (秒) (秒) SPECratio 解释性串处理 perl 2118 0.75 0.4 637 9770 15.3 块分类压缩 bzip2 2389 0.85 0.4 817 9650 11.8 GNUC编译器 gcc 1050 1.72 0.4 724 8050 11.1 组合优化 mcf 336 10.00 0.4 1345 9120 6.8 g0游戏(人工智能) go 1658 1.09 0.4 721 10490 14.6 搜索基因序列 hmmer 2783 0.80 0.4 890 9330 10.5 象棋游戏(人工智能) sjeng 2176 0.96 0.4 837 12100 14.5 量子计算机仿真 libquantum 1623 1.61 0.4 1047 20720 19.8 视频压缩 h264avc 3102 0.80 0.4 993 22130 22.3 离散事件仿真库 omnetpp 587 2.94 0.4 690 6250 9.1 游戏/路径寻找 astar 1082 1.79 0.4 773 7020 9.1 XML,语法分析 xalancbmk 1058 2.70 0.4 1143 6900 6.0 几何平均值 11.7 图1-20 SPECINTC2006基准程序在AMD Opteron X4 model2356(Barcelona)上的运行结果 按照1.4.5节的等式,执行时间是本表的三个因素的乘积:上亿的指令数、每个执行的时钟数(CPI), 以及纳秒级的时钟周期时间。SPECratio仅仅是参考时间,由SPEC所提供,被所测量的执行时间相除。 SPECINTC20O6所引用的单个数目是SPECratio的几何平均数。图5-40展示的是mcf、libquantum、omnetpp以 及xalancbmk具有相对高的CPI,因为这些负载的cache缺失率比较高。 为了简化测试结果,SPEC决定使用单一的数字来归纳所有12种整数基准程序。具体方法是 将被测计算机的执行时间标准化,即将被测计算机的执行时间除以一个参考处理器的执行时间, 结果称为SPECratio。SPECratio值越大,表示性能越快(因为SPECratio是执行时间的倒数)。 CINT2006或CFP2006的综合测试结果是取SPECratio的几何平均值。 精解:在使用SPECratio比较两台计算机时采用的是几何平均值,这样可以使得无论采用哪个计算机进 行标准化都可得到同样的相对值。如果采用的是算术平均值,结果会随选用的参考计算机而变。 儿何平均值的公式是 执行时间比: 其中执行时间比是执行时间按参照计算机进行标准化的结果, a:表示a1×a2×…×amo 1.7.2SPEC功耗基准测试程序 目前,SPEC提供了十几种不同的基准测试程序,使用真实的应用程序、严格制定的执行规 则以及报告需求,达到测试不同的计算环境的目的。其中最新的是SPECpower,它可以报告服务 器在不同负载水平下(以10%的比例递增)的功耗。图1-21给出了在基于Barcelona处理器的服 务器上的测试结果。 SPECpower最早来自于面向Java商业应用的SPEC基准程序(SPECJBB2OO5),它主要测试处 理器、caches、主存以及Java虚拟机、编译器、无用单元收集器、操作系统片段。性能采用吞吐 率来测量,单位是每秒完成的操作次数。还是为了简化结果,SPEC采用单个的数字来进行归纳, 称为“overall ssj_.ps per Watt”,其计算公式是: overall ssj_ops per Watt 云i.p)/(2pora) 式中,ssj_ops,为工作负载在每10%增量处的性能,power:是对应的功耗
第1章计算机概要与技术·29 性能 平均功耗 目标负载 (ssj ops) (瓦 100% 231867 295 90% 211282 286 80% 185803 275 70% 163427 265 60% 140160 256 50% 118324 246 40% 92035 233 30% 70500 222 20% 47126 206 10% 23066 180 0% 0 141 总和 1283590 2605 ∑ssj_ops/Epower= 493 图1-21 SPECpower_.ssj2008在服务器上的运行结果 服务器的具体配置为双插槽23 GHz AMD Opteron X42356(Barcelona)处理器,16 GB DDR2-667DRAM,5O0GB硬盘。 小测验 产量是决定集成电路价格的一个关键因素。下列哪些理由说明了芯片产量越高成本就越低? A.高产量使得在制造过程中能够适当调节设计,从而提高成品率。 B.设计高产量芯片的工作量比设计低产量芯片小。 C.制造芯片用的掩膜很贵,产量高时每芯片的掩膜成本就低。 D.工程开发的成本高,并且基本与产量无关,故产量高时每芯片的开发成本较低。 E.产量高时,通常每芯片的面积比产量低时小,因此成品率较高。 1.8谬误与陷阱 科学一定开始于神话和对神话的批判。 -Sir Karl Popper,The Philosophy of Science),1957 本书中每一章都会有“谬误与陷阱”一节,其目的是说明我们在实际中经常遇到的误解, 我们称之为“谬误”。当讨论谬误时,我们会举出一个反例。我们也讨论陷阱,即那些容易犯的 错误。通常陷阱是指一般原理只在有限的上下文中才是真的。本节旨在帮助你在设计或使用计 算机时避免犯同样的错误。价格/性能谬误和陷阱使许多计算机架构师掉入圈套。下面开始介绍 本书的第一个陷阱,虽然它曾迷惑了许多设计者,却揭示了计算机设计中的一个重要关系。 陷阱:在改进计算机的某个方面时期望总性能的提高与改进大小成正比。 软硬件设计者都曾碰到过这个陷阱。用一个简单的例子就可以很好地说明。假设一个程序 在一台计算机上运行需要100秒,其中80秒的时间用于乘法操作。如果要把该程序的运行速度 提高到5倍,乘法操作的速度应该改进多少? 改进以后的程序执行时间可用下面的Amdahl定律e计算: 改进后的执行时间=受改进影响的执行时间/改进量+不受影响的执行时间 代入本例的数据进行计算: 改进后的执行时间=80/n+(100-80) 由于要求快至5倍,新的执行时间应该是20: PDG 曰Amdahl定律(Amdahl'slaw):阐述了“对于特定改进的性能提升可能由所使用的改进特征的数量所限制”的 规则。它是“收益递诚定律”的量化版本