| 性能的代价 - 关于CMP技术的经济性因素思考 |
| 作者/vi 时间/2006-2-4 15:35:00 类别/技术 查看/ |
| 标签:CPU |
|
对于我们需要的计算能力,在经济上是否能够承受? 本文探讨的正是计算设施的成本趋势,并重点研究CMP技术在改善整体计算平台费效比的过程中所面临的各种机遇与挑战。 LUIZ ANDRé BARROSO是Google公司的首席工程师,并且领导该公司的平台工程小组。他曾经为Google的系统基础设施做出过多方面的贡献,其中包括负载平衡、错误探测及恢复、通讯库、性能优化和计算平台设计。在加盟Google之前,他曾经在Compaq和DEC公司承担研究工作,主要研究商业工作负荷的处理器和内存系统架构,并且与他人合作设计出Piranha系统。Barroso拥有南卡罗来纳大学计算机工程博士学位,以及巴西里约热内卢PUC大学的电气工程学士及硕士学位。 芯片多处理技术的经济性因素 成本 在上世纪的九十年代末,越来越多的小组都倡议使用CMP(单芯片多处理器)来替代复杂性较高的单线程CPU,而DEC研究小组正是其中的一个。当时DEC正在设计Piranha系统(基于CMP技术的可扩展架构),这种系统在当时的CMP领域绝对是一种超前设计,因为DEC使用了非常简单的核心(类似上世纪八十年代末的早期RISC设计),并利用它来提供更高水平的线程级并行处理能力。DEC的主要目标是利用有限的芯片预算来实现最佳的商业工作负荷性能。 今天,在开发Google计算基础架构的过程中,问题变得更加广泛,超越了简单的性能问题。为了评价某个特定架构的优劣,首先必须回答下列问题:对于所需要的计算能力,在经济上是否能够承受?Google的多数服务所提出的计算需求都非常高,因此必须首先开发出一套思路,深入理解计算的总体成本,并且不断地寻找合适的硬件/软件设计来优化每个成本单位的性能。 理解系统成本 系统设计界已经开发出了体系完备的各类工具,能够对性能进行全面地测量、建模、预测和优化。然而,这一领域对成本因素的理解与认识仍然处于初级阶段。如果对成本的问题没有全面的考虑和理解,那么任何一种技术或产品的优势都无从谈起,而且也不可能得到验证。 我们可以将企业计算基础设施的TCO(总体拥有成本)分解为四个组件:硬件成本、能源消耗、数据中心的建设及运营成本,以及软件成本。 在商业性部署中,通常最主要的TCO组件就是软件。如果我们将TPC-C测试中使用的系统价格进行粗略分解,就会发现,平均到每个CPU,操作系统和数据库引擎的成本约为4000~20000美元。如果再算上其他操作系统组件、应用和管理软件的授权费用,那么剩下的组件成本几乎可以忽略。如果在部署过程中使用的是PC Server,那么这种情况就会变得更加明显,因为按CPU(甚至核心)或按服务器数量确定授权费用的策略目前仍然是一种非常流行的做法。 Google目前选择的做法是,公司内部自行解决软件开发,并且与开放源代码社团进行合作,通过这种方式来降低软件的成本。虽然软件开发成本仍然存在,但在大型CPU部署中这种成本已经被分散开来。因此,Google就需要对剩下的那些组件特别留意。下面,我们将集中讨论那些更有可能对成本组件产生直接影响的系统设计选择:硬件和能耗成本。 图1表示的是连续三代Google服务器平台的性能、单位服务器价格性能比和性能功率比趋势。Google的硬件解决方案中也包括低端服务器的使用。这些系统是基于数量巨大的PC级组件,因此各代的系统都能够以基本相同的成本提供逐步提高的性能,从而产生了单位服务器价格性能比曲线的逐步上升。 另外,Google的容错软件设计方法也使这些可靠性相对较低的系统组件能够提供可用性很高的服务。 然而,功率性能比却呈现出一种浮动的趋势,虽然人们已经采用了很多方法,努力在设计中提高单位功率下的性能,但这种效果似乎并不明显。换句话来说,每一次性能的提升都伴随着成比例增长的总体平台功率消耗。因此,在TCO中,与功率有关的成本一直呈现增长的趋势。 这些趋势会对计算成本产生重大的影响。下面的分析中忽略了其他间接的功率成本,将注意力完全集中在能源成本方面。今天,基于典型低端x86处理器的服务器成本约为3000美元,平均功耗为200瓦(峰值功耗可以达到300瓦)。通常情况下,由于无效率工作时间和制冷所消耗的功率通常会使能源成本预算翻倍(如果我们假设基本的能源成本为17美分/千瓦时且服务器的寿命周期为4年),那么在今天,该系统的能源成本已经占到了硬件成本中的40%。 更糟糕的事情还在后头。如果单位功率性能在接下来的几年中保持连贯性,那么功率成本将会很容易地超过硬件成本,而且很可能会超出很多。图2描绘的便是这种推演的结果。假设会出现四种不同的年度性能及功率增长率,对于最为极端的情形(年增长率达到50%),在十年使用周期即将结束时,服务器的价格将只占很小的一部分(而且上述推论中还没有考虑能源成本在未来几年中可能出现的增长),在这种极端情况中,机器的功率成本比硬件成本要高得多。 也许可以设想,有一天电力企业会创造出一种有趣的商业模型:如果你愿意与其签订长期的供电合同,这些供电企业将免费向企业提供服务器。 计算设备的功耗失控,其结果很可能对IT设备的总体经济性产生巨大的影响。需要注意的是,尽管从全局来看CPU所消耗的功率只占整体IT系统功耗预算中很小的一部分,但在中低端服务器平台上,这类功耗所占的比率很可能会高达50%~60%。 CMP和计算效率 为了避免那种可怕的未来,CMP技术最近几年被业界广泛采用,处理器厂商们普遍相信:如果能够利用线程级并行技术(TLP),能够通过增加晶体管的数量并提高能源预算,完全可以增加核心的数量,从而更有效地提高性能。这种性能提高是其他任何已知技术所无法比拟的。在这种多线程环境中,预测和推测技术必须极为精确,但不幸的是,许多服务器级的工作负荷所表现出来的指令级并行能力(ILP)都相当差。 Google的一些关键工作负荷就包含此类行为。例如,Google的索引服务应用在新型处理器上,每两个CPU周期里平均只收回一条指令,对多个发起槽(Issue Slot)和可用功能单元的利用率很低。导致这种现象的原因是索引服务应用所使用的数据结构太大,处理器芯片上的缓存无法处理,而且与数据关联的控制流程会将流水线(Pipeline)暴露给较大的DRAM延迟。这类行为还会导致内存系统的利用率过低,因为在上一个内存访问不可用时,新的内存访问不可能发出。在控制流程和内存访问流中也存在很多不可预测性,这就使得预测技术相对失效。 在Piranha的实施过程中充分借鉴了商用工作负荷行为的教训:如果有足够的(硬件和软件)线程,就根本不需要去预测。Piranha所采用的8个CPU核心,事实上是早期RISC设计思想的升华:单发起、顺序、非预测性。第一颗Piranha芯片比其他CPU的性能高出两倍以上,而功耗只有后者的差不多一半。而且当时DEC在设计时完全忽略了功率效率,没有将其作为一个设计目标,但这样的意外收获让人激动。这可以算是一个非常好的例证,充分说明CMP模型与生俱来的功率效率优势。 最近,一些厂商都发布了新的产品,这些产品可以帮助我们深入了解CMP微架构的功率效率潜力。AMD和英特尔都推出了CMP设计,其功率曲线与上一代的单核心产品基本相同。例如,AMD报告称其双核心Opteron 275型处理器的性能比对等的单核心处理器(Opteron 248)要高出约1.8倍,而功率曲线的增长幅度不超过7%。即使悲观地假设整个平台的功率增长幅度相同,双核心平台的功率效率(单位功率性能)仍然比单核心平台提高了近70%。 典型的CMP处理器功耗一览 名称 厂商 最多核心数量 最高主频(GHz) 最大功耗(瓦) Power5+ IBM 4 2.6 约160 UltraSPARC T1 Sun 8 1.2 72 Opteron AMD 2 2.4 95 PA-RISC 8900 惠普 2 1.2 约50 Xeon 英特尔 2 4.0 约130 PWR ficient P.A半导体 8 2.0 40 缓慢的步伐 令人惊讶的是,像采用Piranha这类激进的CMP架构(牺牲单线程性能来换取线程级的并行能力)的商用产品(例如UltraSPARC T1)直到现在才出现,而且很可能要花很长的时间才能正式上市销售。 CMP商用产品的推出过程似乎遵循的是一种更有规则的方式,即随着晶体管预算的增加,较为复杂的核心被逐步添加到新一代的芯片上。如果CMP的前景如此诱人,为什么要用这么长的时间才让它的潜力变成现实呢? 主要原因有以下四个: 功率曲线。事实证明,仅凭设计的复杂性和性能并不足以促使人们转而采用CMP架构。功率才是真正的原因。为了避免采用昂贵的冷却技术,芯片开发商们不得不坚守在功率密度的边界之内,而要想利用传统的技术来实现这一目标已经变得越来越困难。 市场因素。MHz是一个非常容易理解的性能参数,厂商利用它也更容易说服消费者。尽管它只是一种很差的应用性能指标,但多数常用基准测试中所用到的参数也好不到哪去。如果有两种虚伪的评测指标摆在厂商面前,一种能够促进销售,另外一种对销售没有什么好处,那么厂商会选择哪一种呢?结果很容易预测。不幸的是,厂商在MHz上的竞争将处理器引向了另外一条道路—更大、更复杂的单线程系统。这与CMP的宗旨相去甚远,而且越来越远。 执行问题。如果要将传统的复杂核心变为成功的产品,许多人可能会低估工程方面的难度。因此,似乎用退而求其次的方式才能得到成功的解决方案,将才智、动力和执行这些因素通过适当的组合变成真正的产品。 线程并非无处不在。虽然服务器级别的工作负荷在很多年以前就可以实现多线程运行,但桌面工作负荷中却很少出现这种情况。因为桌面系统的数量巨大,而服务器CPU的开发和制造成本又极其高昂,桌面处理器的收益有很大一部分都被用于补贴服务器CPU的研发工作。由于桌面系统缺乏多线程能力,CMP就不可能轻松地实现广泛应用,其推广的急迫性也就不复存在。 可怕的线程 业界采用CMP设计的步伐非常缓慢,这反映出人们对CMP机遇的担忧。业界担心,只有足够的线程时才能够充分发挥CMP的优势。这种担忧的根源主要是两方面的因素:并行编程的复杂性和普通应用的线程级加速潜力。 并行软件的复杂性很可能会降低程序员的生产效率,使程序员很难写出正确的、有效率的程序。即使计算机专业的学生对并行编程的了解也是很有限的,而且也没有哪一种常用的语言与生俱来就可以支持并行计算技术。另外自动编译器并行技术的发展也相当缓慢,这些都使人们担心很多应用根本来不及充分发挥多线程芯片的优势。 当然,也有乐观的一面。小型多处理器的使用范围正在逐步扩大,这使得更多的程序员能够接触到并行处理硬件。而且市场上也出现了越来越多的工具,可以帮助程序员查找错误和性能问题(例如线程检查程序和性能调试程序)。另外,一些专家级的程序员能够编写效率较高的线程代码,其他程序员也可以充分利用这些资源,快速锁定和线程高效内存分配库就是这类编程杰作中的典型例证,而且它们也在被广泛地利用。 从更大的规模上来说,Google的MapReduce等库使程序员可以更容易地编写高效的应用,并让这些应用使用数百个甚至数千个线程在大型数据集中完成挖掘任务。 的确,有些算法是很难实现高效并行运行的,但多数需要CMP提供额外性能的领域是可以实现并行计算的。除了一些特例外,要想获得并行加速是比较容易实现的,这也就是为什么数据库应用的并行工作负荷在过去的十年中一直能够成功运行的原因。 在Google的应用中,通常可以对CPU密集型工作负荷进行调整,使其可以在需要的时候使用更多的硬件线程。也就是说,只要硬件资源数量较大的服务器在经济上具备了足够的吸引力,Google就会毫不犹豫地选择多线程处理技术。 CMP面临的真正挑战并不是在服务器上,而是在桌面一级。许多常用的桌面应用都不具备并行处理能力,一方面是因为它们使用的数据集较小,另外也是因为直到最近几年多线程CPU才出现在桌面系统市场中。随着越来越多的数据密集型工作负荷(如语音识别)成为桌面系统的常见应用,CMP系统对这部分市场的吸引力也会变得越来越大。 CMP逐步主流化 对于Google提供的这类大规模服务来说,高性价比的分布式计算系统是必不可少的。在这些系统中,由于工作负荷的分布式特性,单线程的性能并不重要,重要的是整个系统的综合成本/性能比。芯片多处理技术非常适合满足此类要求。 在运行并行工作负荷时,CMP可以比传统的乱序单核心架构更好地利用片上集成的资源和内存系统,因此可以在预算不变的前提下带来更高的性能。可以说,CMP比传统的CPU设计拥有更高的功率效率,因此可以帮助用户在未来的几年中有效控制能源消耗的成本。 然而,值得注意的是,单凭CMP并不能解决功率效率方面的挑战,但可以至少在未来的两至三代CPU上减轻这方面可能出现的问题。从长远趋势上来看,只有在基本线路和架构上创新才是解决这类问题的根本出路。 计算机行业已经准备接受芯片多处理技术,并将其作为桌面和服务器市场中的主流解决方案,但似乎业界对CMP的接纳仍然有一些不情愿—只有当厂商将CPU的温度控制在一个安全的热值曲线内时,CMP并行技术才会成为必然的选择。这种方法虽然可以将单线程性能方面的损失减至最低程度,但它也很可能无法实现芯片多处理技术完整的成本效益潜力。一些厂商都将赌注押在了速度较慢的核心上,希望它们能够对高性能系统的经济性产生积极影响,但事实上这种赌博的风险更大。 |
| 查看该用户更多文章>> |

