30·第1章计算机概要与技术 20=80/n+20 0=80/n 可见,如果乘法运算占总负载的80%,则无论怎样改进乘法,也无法达到性能提高至5倍的结 果。特定改进的性能提升由所使用的改进特征的数量所限制。这个概念也产生了在每天的生活 中我们称为“收益递减”的定律。 当我们知道一些函数所消耗的时间及其潜在的加速时,我们就可以使用Amdahl定律预测性 能的提升。将Amdahl定律与CPU性能公式结合,是一种很方便的性能评价工具。读者可以在本 章练习中进一步体会。 硬件设计的共同主题是Amdahl定律的一个推论:加速常见事件。这个推论提示我们,在许 多情况下某些事件的发生频率可能比其他事件高得多。因此,改进量的大小受事件占用时间的 多少的限制。因此,加快常见事件相对于加快罕见事件更能提高性能。具有讽刺意味的是,常见 事件往往比罕见事件更简单,因而更容易实现。 Amdahl定律还应用于并行处理器数量的实际限制中,我们将在第7章中的“谬误与陷阱” 介绍。 谬误:利用率低的计算机功耗低。 服务器的工作负载是变化的,所以在低利用率的情况下功率很重要。例如,Google服务器中 CPU利用率大多数时间在10%~50%之间,只有不到1%的时间达到100%。图1-22给出了三种 服务器在100%负载、50%负载、10%负载和空闲时的最好SPECpower结果。从中可以看到,即 使服务器的利用率只有10%,也会消耗掉大约2/3的峰值功耗。 100 50r 50% 10% 10% 主动 主动 服务器制造商 微处理器 总核数 时钟 性能蜂信 负载 负载 负载 负载 负载 空闲 空闲 插槽数 频率 (Ss时jops 下的 下的 100% 下的 100% 下的 100% 功耗 功耗 功耗 功耗 功耗 功耗 功耗 HP Xeon E5440 82 3.0 GHz 308022 269w 227W 84% 174wW 65% 160 W 59% Dell Xeon E5440 8/2 2.8 GHz 305413 276W 230W 83% 173W 63% 157W 57% Fujitsu Seimens Xeon X3220 4/1 2.4GHz 143742 132 W 110W 83% 85W65%80W 60% 图1-22三种服务器在最佳ssj_ops per watt时的SPECPower(2007年第4季度) 三种服务器的ssj-ops per watt依次为698、682和667。上面两种服务器内存为16GB,最下面的服务器内存为8CB。 陷阱:用性能公式的一个子集去度量性能。 我们早就指出了一种谬误:简单地只用时钟频率、指令数和CPI之一去预测性能。另一种常 犯的错误是只用三种因素之二去比较性能。虽然这样做在有些条件下可能正确,但这种方法容 易误用。实际上,几乎所有取代用时间去度量性能的方法都会导致歪曲的结果或错误的解释。 例如,曾经有一种用MPS°(每秒百万条指令)取代时间去度量性能的方法。对于一个给 定的程序,MIPS表示为: MIPS= 指令数 执行时间×10 MIPS是指令执行的速率,它规定了性能与执行时间成反比,越快的计算机具有越高的MIPS 值。从表面看,MIPS既容易理解,又符合人的直觉。 其实,用MPS作为度量性能的指标,存在三个问题。首先,MIPS规定了指令执行的速率, 曰MIPS(million instructions per second):基于百万条指令的程序执行速度的一种测量。指令条数除以执行时间与 I0之积就得到了MPS
第1章计算机概要与技术·31 但没有考虑到指令的能力。我们没有办法用MPS去比较不同指令集的计算机,因为指令数肯定 是不同的。其次,在同一计算机上,不同的程序会有不同的MPS,因而一台计算机不会只有一 个MIPS值。例如,将执行时间用指令数、CPI、时钟频率代入之后可得: MIPS 指令数 —一=时钟频率 指令数×CPI ×106 CPI×106 时钟频率 回顾一下,SPEC2006在AMD Opteron X4上的CPI最大值和最小值是相差13倍的,MIPS也是如 此。最后一点,也是最重要的一点,如果一个新程序执行的指令数更多,但每条指令的执行速度 更快,则MIPS的变化是与性能无关的。 小测验 某程序在两台计算机上.的性能测量结果为: 测量内容 计算机A 计算机B 指令数 100亿次 80亿次 时钟频率 4 GHz 4 GHz CPI 1.0 1.1 1)哪台计算机的MIPS值更高? 2)哪台计算机更快? 1.9本章小结 那里…ENIAC配备有18000个真空管,重量达30吨,未来的计算机具有1000个真空管, 可能仅仅有1.5吨重。 -《Popular Mechanics》,1949.3 虽然很难准确预测未来计算机的成本与性能将发展到怎样的水平,但确定的是一定会比现 在的计算机更好。计算机性能水平的提高是永无止境的,计算机设计者和程序员必须理解更广 泛的问题。 硬件和软件设计者都是用分层的方法构建计算机系统,每个下层都对其上层隐藏本层的细 节。这个抽象原理是理解当今计算机系统的基础,但这并不意味着设计者只要懂得抽象原理就 足够了。也许最重要的抽象层次是硬件和底层软件之间的接口,称为指令集体系结构。将指令集 体系结构作为一个常量可以使其不同的实现方法(价格和性能可能不同)能够运行同一软件。 产生的一个副效应:这些预先排除可能需要接口发生变化的那些革新结构。 有一个可靠的测定性能的方法,即用实际程序的执行时间作为尺度。该执行时间与我们能 够通过下面公式测量到的其他重要指标相关: 秒数/程序=(指令数/程序)×(时钟周期数/指令数)×(秒数/时钟周期数) 本书中我们将多次使用这一公式及其组成因子。必须明确的是,任何一个独立的因子都不 能确定性能,只有三个因子的乘积(即执行时间)才是可靠的性能度量标准。 重点 执行时间是唯一有效且不可推翻的性能度量方法。人们曾经提出许多其他度量方法,但均 以失败告终。有些从一开始就没有反映执行时间,因而是无效的;还有一些只能在有限条件下有。 效,超出了限制条件则失效,或是没有清晰的说明有效性的限制条件。 现代处理器硬件的关键技术是硅。与理解集成电路技术同样重要的是理解我们所期望的技 术进步速率。在硅技术加快硬件进步的同时,计算机组织的新思想也改进了产品的性价比。其中
32·第1章计算机橛要与技术 有两个重要的新思想:第一,在程序中开发并行性,目前的典型方法是借助多处理器;第二,开 发存储层次结构的访问局部性,目前的典型方法是通过cache.。 功耗已经取代芯片面积,成为微处理器设计中最重要的资源。保存功耗并且改进性能的需 求已经迫使硬件工业向多核微处理器跃进,从而迫使软件工业向并行硬件编程跃进。 计算机设计总是以价格和性能来度量的,也包括其他一些重要的因素,如功耗、可靠性、成 本和可扩展性等。尽管本章的重点放在价格、性能和功耗上,但是最佳的设计应该在特定的应用 领域中取得所有因素之间适当的平衡。 本书导读 本章介绍了计算机的基本概念,以及计算机的五个常见部件:运算器、控制器、存储器、输 入和输出(见图1-4)。这五个部件也是本书后面几章的框架: ·运算器:第3、4、7章和附录A ·控制器:第4、7章和附录A ·存储器:第5章 ·输入:第6章 ·输出:第6章 如上所述,第4章介绍处理器如何开发隐式并行性,第7章介绍并行革命的核心一显式并 行多核微处理器,附录A介绍高度并行的图像处理器芯片。第5章介绍如何开发层次存储结构 的访问局部性。第2章介绍指令集(编译器和计算机之间的接口),并强调了编译器和编程语言 在利用指令集特性方面的作用。附录B提供了第2章指令集的参考数据。第3章介绍计算机如何 处理算术运算。附录C在光盘上,介绍逻辑设计。 1.10拓展阅读 活跃的科学领域就像一个巨大的蚂蚁窝;人们消失在互相对立的(tumbling)的观,点中,人 们以光速传递着信息,将信息从一个地方传到另一个地方。 一Lewis Thomas,《细胞生命的礼赞》中的“自然科学”,1974 本书的每一章都有“拓展阅读”一节,可在本书所附的光盘上找到。我们可以通过一系列 的计算机来追踪某一思想的发展历程,或者叙述一些重要的历史贡献,还提供参考数据以便你 进一步探究。 本章的“拓展阅读”提供了几个关键思想的历史背景,其目的是向你介绍对技术进步作出 贡献的重要历史人物。通过理解过去,你可以更好地理解那些推动未来计算技术进步的力量。 CD中每个拓展阅读之后都会提示进一步阅读,这部分具体内容会在CD中的“进一步阅读”部 分。在CD中能看到1.10节的剩余部分。 1.11练习题 练习由Universidade de Santiago de Compostela(圣地亚哥大学·德孔波斯特拉)的Javier Bru- uera提供。 本版的习题大都设计成以定性的介绍辅以可选的参数表。这些参数是解题所必需的,你可 以决定采用任意一个,或者全部的参数来解题(每个题目需要多少个参数由你决定)。例如,可 以将作业布置成“用表中A行的参数完成练习4.1.1”。教师也可以依需要更换参数来定制习题 以求新的解题方案。 定量习题的数目各章不同,主要取决于教材内容。当定量的方法不适合时就提供一些常规
第1章计算机概要与技术·33 的练习。 完成练习所需的相对时间比率标示在题号之后的方括号中。平均来说,做标记[10]的练 习用的时间是做标记[5]的练习的2倍。做题前应先阅读的章节则标示在尖括号中。例如, <1.3>表示你应该在读过1.3节后才能完成本题。 习题1.1 从下面的列表中找出与问题最为匹配的一项,用项号回答,每项只能使用一次。 1.虚拟世界 8.数据中心 15.编译程序 22.高级语言 2.桌面计算机 9.嵌入式计算机 16.位 23.系统软件 3.服务器 10.多核处理器 17.指令 24.应用软件 4.低端服务器 11.VHDL 18.汇编语言 25.Cobol 5.超级计算机 12.RAM 19.机器语言 26.Fortran 6.terabyte 13.CPU 20.C 7.petabyte 14.操作系统 21.汇编程序 1.1.1[2]<1.1>用于运行大规模问题,并通常通过网络访问的计算机 1.1.2[2]<1.1>10或20字节 1.1.3[2]<1.1>由成百上千个处理器和若干terabyte级内存组成的计算机 1.1.4[2]<1.1>目前尚为科学幻想的应用,但是很可能即将成为现实 1.1.5[2]<1.1>一种称为随机访问内存的内存 1.1.6[2]<1.1>一种称为中央处理器的计算机部件 1.1.7[2]<1.1>上千个处理器形成的大集群 1.1.8[2]<1.1>在同一个芯片中含有几个处理器的微处理器 1,1.9[2]<1.1>没有显示器和键盘的桌面计算机,通常通过网络访问 1.1.10[2]<1.1>当今最大的一类计算机,运行一个应用或一组相关的应用 1.1.11[2]<1.1>用于描述硬件部件的特殊语言 1.1.12[2]<1.1>对单用户以低成本提供高性能的个人计算机 1.1.13[2]<1.2>将高级语言语句翻译成汇编语言的程序 1.1,14[2]<1.2>将符号指令翻译成二进制指令的程序 1.1.15[2]<1.1>商业数据处理用的高级语言 1.1.16[2]<1.1>处理器能够理解的二进制语言 1.1.17[2]<1.1>处理器能够理解的命令 1.1.18[2]<1.1>科学计算用的高级语言 1.1.19[2]<1.1>机器指令的符号表示 1.1.20[2]<1.1>用户程序和硬件之间的接口,能提供许多服务和监视功能 1.1.21[2]<1.1>用户开发的软件/程序 1.1.22[2]<1.1>二进制位(值为0或1) 1.1.23[2]<1.1>应用软件和硬件之间的软件层,包括操作系统和编译程序 1.1.24[2]<1.1>用于编写应用程序和系统软件的高级语言 安匹 1,1.25[2]<1.1>由字和代数符号组成的可移植语言,在计算机中运行前必须翻译成汇编程序 1.1.26[2]<1.1>102或2o字节 PDG 习题1.2 1.2.1[10]<1.3>一个彩色显示器中的每个像素由三种基色(红,绿,蓝)构成,每种基色用8位表示
34·第1章计算机概要与技术 分辨率为1280×800像素。请问为了保存一帧图像需要多大的缓存(以字节计算)? 1.2.2[5]<1.3>如果-一台计算机有一个2GB的主存,并且该主存没有存储其他信息,它最多可保存多少 帧图像? 1.2.3[5]<1.3>如果一台计算机连到1Gbps以太网上,发送256KB的文件需要多长时间? 1.2.4[5]<1.3>假定cache比DRAM快10倍,DRAM比磁盘快100000倍,闪存比磁盘快1000倍。如果 从cache读取-一个文件需要2微秒,请问从DRAM、磁盘和闪存读取需要多长时间? 习题1.3 有3种不同的处理器PI、P2和P3执行同样的指令集,其时钟频率和CPI如下表: 处理器 时钟频率 CPI P1 2 GHz 1.5 P2 1.5 GHz 1.0 P3 3 CHz 2.5 1.3.1[5]<1.4>哪个处理器性能最高? 1.3.2[5]<1.4>如果每个处理器执行一个程序都花费10秒钟时间,求它们的时钟周期和指令数。 1.3.3[10]<1.4>我们试图把时间减少30%,但这会引起CP增加20%。间:时钟频率应该是多少才能 达到时间减少30%的目的? 以下的习题采用下表的信息。 处理器 时钟频率 指令数 时间 P1 2 GHz 20×109 78 P2 1.5 CHz 30×109 10s P3 3 CHz 90×109 98 1.3.4[10]<1.4>求每个处理器的P℃(每周期的指令数)。 1.3.5[5]<1.4>求P2的时钟频率为多少才能将其执行时间减少到与P1的一样? 1.3.6[5]<1.4>求P2的指令数为多少才能将其执行时间减少到与P3的一样? 习题1.4 同一个指令集体系结构有2种不同的实现方式。有A,B,C和D4类指令,每种实现方式的时钟频率 和CPI由下表给定。 时钟频率 CPI(A类) CPI(B类) CPI(C类) CPI(D类) P1 1.5 GHz 1 2 3 4 P2 2 GHz 2 2 20 1.4.1[10]<1.4>给定一个程序,有106条指令,按如下比例分为4类:A10%;B20%;C50%;D 20%。问哪种实现方式更快? 1.4.2[5]<1.4>每种实现方式总的CPI是多少? 1.4.3[5]<1.4>两种情况下的时钟周期各是多少? 下表所示为某一程序的指令数。 PDG 算术 存储 取数 分支 总数 500 50 100 50 700