简介
本文的标题是“即将到来的多核革命:希望、风险及影响”,顾名思义,既可以看作是对如今多核处理器的意义做出解释,也可以看作试图从多种不同角度让人了解多核处理器的作用的一种期望。我们更倾向于后一种方式,因为随着时间的推移,多核处理器将在计算行业的转型中扮演不同的重要角色。
本文旨在深入讨论微处理器设计领域中“平衡”与“优化”的含义。章节1介绍了术语表。
接下来的章节将按时间顺序排列,展示随着时间的推移,微处理器设计中“平衡”与“优化”复杂度的逐步提高。
章节2回顾了“我们为何开始设计多核处理器?”。
章节3讨论了与多核处理器相关的系统与软件设计领域的发展情况。
章节4根据目前趋势预测未来的复杂度。
在文章结尾,我们还预测了日渐成熟的多核处理器技术的未来发展。
1. 背景
1.1. 核心概念
在试图介绍多核计算发展之前,我们有必要先在术语和目标方面达成共识。令人讶异的是,这一领域中的很多常用词汇用在计算产品的生产方、采购方和用户方,涵义迥然不同。若针对这些不同的涵义进行研究,将显著增加复杂度和权衡取舍的难度,而它们对于工程设计流程却是至关重要的。
1.1.1. 平衡
对于“平衡”,韦氏在线辞典共列出了 12 个定义,其中与本文关系最为密切的定义有两个。
第5项
a:由于在垂直轴的两端分布等量的重量而产生的稳定性。
b:在对比、对立或交互元素间的均衡性。
c:账目两端的总值相等。
第6项
a:在美学意义上多个元素的完美整合
在计算机系统中,人们对于“平衡”的理解多是这两种概念。前者是定量、分析性的,但却试图迅速将这一定义结合到各种复杂因素之中。计算机系统应该在哪些属性上体现出“对称分布”?我们认为,这些重要的属性包括:成本、价格、功耗、物理尺寸、可靠性以及众多相对独立的性能属性的任意主体。在选择哪些属性实现“平衡”,或如何将多种属性比较整合成单一的“平衡”标准时,将不会存在显而易见的“正确答案”。
当考虑计算机系统的多维设计/配置空间时,“平衡”的美学定义带有设计者强烈的个人色彩,但应用到工程和业务空间上时,如果忽略定量因素,则会使整个 “平衡”概念失去效用。
这些标准定义的缺乏表明了一种不容忽视的微妙关系。在本文中,我们很高兴能够继续使用“平衡”一词,但需要指出,在清晰定义的定量环境中(包括如何将它们组成单一的优化问题),该词只具有数量含义。
1.1.2. 优化
对于“优化”,韦氏在线辞典中仅列出 1 个定义:
使事物(例如一个设计、系统或决策)尽可能完美、起作用或有效的一种行动、流程或方法;具体指参与其中的数学程序(例如找到函数的最大值)。
对于此术语,计算机用户最常见的使用错误,是错误地将编译器理解为“优化器”,在此情况下,往往只将“优化”用作“改进”的同义词。虽然词意相近,但优化(在其数学含义中)指的是在存在约束的条件下(也可能只是由目标功能自身产生的约束限制),将特定的目标功能最小化或最大化。与之对照,“改进”是指“使事物变得更好”,并不具有“优化”概念中至关重要的“权衡”的意义。
计算机系统设计中的优化是指,选择使特定目标功能最大化或最小化的参数,同时,还通常为其他目标功能提供“次级优化”解决方案。在普遍使用的目标功能中,有很多参数相互矛盾,例如,低成本与高性能、低功耗与高性能等。设计参数一旦相互抵触,就将根据具体目标功能的量化公式找到“最优”设计点??例如明确要求,提升10%的性能(或把功耗降低 10%)对其他设计目标会产生怎样的影响?
1.2. 方法
为撰写本文,我们将使用一个带有调整后的系数,并最适应SPEC_fp2000和SPECfp_rate2000基准测试大型子集(截至2006年 3 月)的分析模型,估算多种配置选项的性能影响。
该分析模型包括508个SPEC_fp2000结果730个SPECfp_rate2000结果。另有233个结果被排除在分析之外,因为它们使用了先进的编译器优化或特殊的硬件配置,而这都会导致其与大部分结果进行比较毫无意义。
前面已经对该性能模型进行了介绍,但是,此处对其进行了扩展以纳入更完整的数据集,并已经将它应用到每个SPEC_fp2000基准测试结果的14 个测试项目和几何平均值中。虽然该模型没有捕捉这些基准测试的某些性能特征细节,但它对大量结果进行最小二乘法,能够大幅度减少与单个结果相关的随机“干扰”,并提供很高的平台独立性。
简而言之,该模型假定每个基准测试的执行时间为“CPU 时间”和“内存时间”之和。其中,内存子系统完成的“工作”数量是缓存规模的简单函数,从“大型”缓存(其中“大型”也是该模型的一个参数)最大值线性减少到无缓存的最小值,对大于大型规模的缓存,内存工作量恒定不变。假定 CPU 工作的完成率与芯片采用 64 位 IEEE 算法的峰值浮点性能成正比,而内存工作的完成率与系统在 171.swim(基础)基准测试上的性能成正比。此前的研究已经显示,在 171.swim 基准测试上的性能和使用 STREAM 基准测试直接测量的持续内存性能之间有很强的联系。
该模型的模拟结果与测量结果有很强的相关性,75% 的测量结果都具有15%的模拟映射。这指出,基础的模型假设与这些系统在这些基准测试上的实际性能特征一致。虽然模型中存在某些体系性错误,但模型与观察结果之间的差异并非都来自于硬件假定的过度简化,很多差异也可能来自于编译器、编译器选项、操作系统和基准配置方面的差异。总的来说,该模型足够健壮,可以作为说明微处理器系统中性能和性能价格比灵敏度的基础。
1.3. 假设与建模
为进行性能和性能价格比分析,我们将假定:
双插槽“裸”系统(带有磁盘、内存和网络接口,但没有 CPU)成本为 1,500 美元。
基本CPU 配置为 2.4 GHz 单核处理器,配备 1 MB L2 缓存,成本为 300 美元。
Die设定为CPU 核心和L2 缓存约各占一半,其他片上功能限制在Chip全部区域的小区间中。
“小型芯片”配置为 2.8 GHz 单核心处理器,配备 1 MB L2 缓存,成本为 150 美元。
“大缓存”配置为 2.8 GHz 单核心处理器,配备 3 MB L2 缓存,成本为 300 美元。
“多核”配置为 2.0 GHz 双核心处理器,每个核心配备 1MB L2 缓存,成本为 300 美元。
2. 多核心芯片最初的开发
多核心处理器最初的开发在很大程度上要归功于 CMOS 光刻印刷工艺的持续进步。众所周知,随着CPU 核心的尺寸/带宽的不断提升,很快就会造成投资回报的递减。所以当核心的尺寸工艺收缩到一个小尺度上后,出于对Die经济可行性的考虑,制造商通常有如下选择:
• 生产更小的芯片
• 增加大量缓存
• 增加更多核心
增加更多内存带宽的选择显然会增加大量处理器芯片之外的成本,包括修改主板(如许多PCB层的改动)、增加DIMM插槽等。由于这些额外成本和插槽不兼容的问题,增加更多内存带宽将被单独考虑,与涉及Die尺寸的选项不相关。
图 1 和图 2 显示了一些与这三个选项相关的性能和性能价格比指标,假定光刻印刷面积缩减30%(即区域缩减50%),支持单核心频率提高17%,但需要双核心频率降低17%(以保持相同的功耗水平)。
注意,SPECfp_rate2000基准测试包含14个独立的测试,它们均单独建模。这些可以总结为:最小提速、中值提速、几何平均数提速和最大提速。对于双核心处理器选项,要同时估算单核心 (uni) 和双核心 (mp) 提速。
图 1:针对三种系统配置进行SPECfp_rate2000 性能评估(基于章节 1 中描述的分析模型),假定光刻面积缩减30%(区域缩减50%),相应地,单核心芯片频率提高 17%,双核心芯片频率降低 17%。小型芯片的尺寸为参考芯片的½,同时,大缓存和双核版本扩展到与参考芯片相同的尺寸,且电源需求与参考芯片相同。注意,大缓存情况下的最大提速为+156%,但由于此处的图形范围限制而被截断显示。
图 2:针对三种系统配置的SPECfp_rate2000/价格评估(基于章节 1 中描述的分析模型),假定光刻面积缩减30%(区域缩减50%),相应地,单核心芯片频率提高 17%,双核心芯片频率降低 17%。
依次观察这三种选择:
2.1. 生产更小的芯片
显然,量产那些时钟频率仅满足基本需求的更小/更便宜的芯片,在为客户提升性能和性能价格比方面价值不大。在此例中,处理器价格的下降可以将系统整体成本降低 14%(1,800 美元比 2,100 美元),而 17% 的频率提高可以在性能方面带来 0% 到 14% 的提升,中间和几何平均数提升为 8%-9%(图 1)。这两种因素的结合可以提供 17% 到 33% 的性能价格比提升,其中间和几何平均数性能价格比提升为 27%-28%。
2.2. 增加大量片上缓存
与其他选择相比,增加大量缓存为所有工作负载带来的提升变化范围更大。在此例中,将 L2 缓存从 1 MB 提高到 3 MB 可以带来 0% 到 127% 的性能提升,其中值提升为 0%,几何平均数提升为 11.8%。
17%的CPU频率提升与缓存规模提升相结合可以带来更多收益,二者结合的性能提升为0%到156%,中值提升为11.5%,几何平均数提升为22.5%。
在此情况下,假定芯片的成本与参考系统相同,则性能价格比的提升比率与纯性能提升比率相同。
2.3. 增加CPU 核心
增加核心可以广泛提升各种工作负载的吞吐量,并需要付出不大的频率降低(17%)以满足功耗/冷却限制。在此,我们假设50%的区域缩减使我们能够容纳2个CPU核心,每个都配备与参考芯片相同的L2缓存且成本相同。在运行单一进程时,性能比参考平台低 0% 到 15%,中间和几何平均数性能变化为 -10% 到 -11%。
如果我们可以使用第二个核心运行第二个代码副本,则系统的吞吐量可以提高 0% 到 最大的54%,中间和几何平均数提速为 29% 到 32%。
在这种情况下,假定芯片的成本与参考系统相同,则性能价格比的提升比率与纯性能提升比率相同。
2.4. 讨论
上面三个实例提供了大量令人困扰的独立性能和性价比指标??70 个相对值。就算将SPEC基准测试的14 个性能值减少到3个(最小、几何平均数、最大),仍然给我们留下了9个性能值和12 个性价比值(其中9个与性能值相同)。将这些值结合为1个指标,用以制定合理的设计决策并不是一项轻而易举的事。
这三个选项都具有明显的优势和不足:
设计选项 主要优势 主要缺点
小芯片 降低价格 最弱的提升幅度
大缓存 在少数代码上有巨大的性能提高 最弱的中间和几何平均数性价比提升
双核心 最强的中间和几何平均数吞吐量提升 降低了单处理器性能
找到这六项主要优势或主要缺点中的哪些会对哪些客户构成关键决策因素,相对简单。而上述信息的利用、推广,以及用其来支持公司的商业模型就要复杂得多。
当然,设计决策必须支持公司投资的商业模式。即使是看起来最简单的目标“赚钱”在细节检查上也会一片混乱。可以将商业模型设计为取得最佳短期收入、短期利润、长期收入、长期利润、市场“轰动”或“良好愿望”,也可以设计为实现具体市场份额目标或尽量向竞争对手施加财务压力。真实的市场模型是这些目标的复杂结合,不幸的是,对于“纯粹”的设计优化流程,不同的商业目标可以改变各种性能和性能价格比指标的相对重要程度。
2.5. 补充说明
在所有这些情况中,性能的变化取决于基准系统上内存性能与 CPU 性能的比率。随着可用带宽的提高,大缓存的优势将递减,而更多 CPU 核心的优势将提高。与此相反,相对较低的内存带宽会使大缓存更为关键,而明显降低增加CPU核心带来的吞吐量提升。
对于对缓存有利的SPECint_rate2000基准测试,以2.2 GHz运行的IBM e326服务器上的结果显示:在SPECint_rate2000上,每芯片上同频率核心数量的翻倍可以将吞吐量提高65%到100%(几何平均数提升 = 95%)。
3. 当前和短期问题
3.1. 功耗问题
功耗与性能一样,比我们最初假设的情况更加多元化。在基于高性能微处理器的系统环境中,“功耗问题”包括:
• 通过众多超细针脚/焊点传送到芯片的大量电流。(注意:即使在同样的功耗水平下,随着电压下降,电流上升,针脚/焊点内的热阻也将升高。)
• 消除大量热量,以防止Die温度超过阈值,明显缩短产品寿命。
• “热点”问题:芯片局部区域中的功耗密度过高可能将导致局部故障。(注意:若为了保持同样的功耗水平,将晶圆上的处理器内核尺寸减少一半,同时提高频率,则内核中的功耗密度将提高一倍。)
• 为提供这些服务,需要提供大量电力??包括电力成本和用电升级成本。
• 消除保有这些服务器的设施所产生的大量热量??包括电力成本和机房冷却系统升级成本。
• 消除处理器芯片造成的大量热空气,这些热空气同样影响其他热敏组件(如内存、硬盘等)。
由此可以看出,功耗问题实际上至少与5、6个相互关联而性质截然不同的技术和经济问题有关。
3.2. 吞吐量Vs.功耗/核心Vs.核心数量
针对以同样的功耗水平提高性能这一问题,我们着重讨论一下如何使用越来越多的核心提供更高的吞吐量。
如果参数保持不变,功耗通常以 CPU 时钟频率的平方或立方倍率增长。但是,性能的增长速度是低于频率的线性增长速度的。对于能够利用多线程的工作负载来说,多核心能够显著提高每瓦吞吐量。但是,正如之前所见,这种吞吐量的增长除了等待光刻工艺的提高,使我们能够在一个芯片上放置更多核心之外,我们还可以创建更小的 CPU核心,使其外形更小巧,效能更高。就在前不久这种技术还很少见(除了 Sun T1 处理器芯片),这是因为我们假设单线程性能太重要了,不能牺牲它。
我们将在“长期预测”章节继续讨论这一问题,但是,之前描述的性能模型的直接应用说明,只要 CPU 内核功耗下降的速度大于峰值吞吐量的速度,则通过无限数量的极小快速核心,即可获得最佳吞吐量。显而易见,这种系统的单线程性能将非常低,从而直接影响对单一指标值的优化。为了解决这一问题,一种方法是可以定义一个可接受的最低单线程性能,然后对芯片进行优化,在面积和大功耗的限制条件下,尽可能加入更多的核心。
还有一种方法是将核心数量限制到一个合理的数量。在此处使用的单一吞吐量模型中,我们忽略了通信与同步这一因素。若用户希望在单一的并行/线程应用中使用更多的核心,将需要某种通信/同步,而且对于固定工作负载,还必须要保证通信/同步的开销将随着作业中使用的 CPU 核心数量而单向增长。
由此产生了对 Amdahl 定律的简单修改:
其中,T 为解决问题所需的总时间,Ts 是完成串行(非重叠性)工作所需的时间,Tp 是完成所有可并行工作所需的时间,N 是并行工作使用的处理器数量,To 是结合实施该应用所需的通信与同步,每个处理器的开销。最后这一条件说明,随着处理器的增多,开销也将提高,而这是传统的 Amdahl 定律公式中所没有的。
在标准模型(没有开销)中,解决问题所需的总时间随着 N 函数单调递减,逐渐接近 Ts。在修改后的公式中,可以明显看出,随着 N 的增加,由于出现通信开销,解决问题所需的总时间将开始增加。在上述的简单示例中,可以根据以下公式定义完全并行的应用 (Ts=0) 所需处理器的最优数量:
由此,举例来说,若 To 是 Tp 的 1%,则可以使用 10 个处理器获得最大性能。是否将此作为一个重要设计点,将取决于其他性能与性能价格比指标的相对重要性。
3.3. 市场问题
即将推出的多核芯片与 RISC SMP极其相似 ?? 在过去的 10 年中,RISC SMP 市场的硬件收入超过 2400 亿美元。
与 1990 年代中期的 RISC SMP 一样,这些多核心处理器具备易于使用、内置缓存、共享内存的特性,不同的是,多核心处理器是在单一芯片中实现这些特性。
1995 年前后,SGI POWER Challenge 是中端市场中最畅销的 HPC 服务器 ?? 笔者之一(McCalpin)当年就曾花费近 40 万美元购买了一个配备 8 个 CPU 的系统。在 1996 到 1997 年,CPU 主频为 90 MHz (11 ns),主内存延迟接近 1000 ns,或 90 个时钟周期。2007 年,四核 AMD 处理器的频率超过 2 GHz (0.5 ns),主内存延迟约为 55 ns,或者 110 个时钟周期。这些比例都惊人的相似。
SGI要在Power Challenge上提供充足的内存带宽是一项艰巨的“挑战”(这里的双关令人遗憾)。一个配备 8 个 CPU 的SGI POWER Challenge 的最高浮点性能为 2.88 GFLOPS,最高内存带宽达到 1.2 GB/s,约为 0.42 字节/FLOP。而AMD即将推出四核Barcelona处理器的最高浮点性能约为 32 GFLOPS、最高内存带宽达到约 12.8 GB/s,也是大约 0.4 字节/FLOP的比例。
到1996 年,UNIX 服务器市场的硬件收入超过 220 亿美元,而到 2000 年,该收入提高到近 330 亿美元。之后,该市场一直在萎缩,2006 年,已下滑至 180 亿美元左右。
以下 3 个因素共同导致了市场萎缩:
• 越来越难以保持最初使UNIX服务器获得成功的系统平衡,
• 大规模RISC SMP 难以和小型RISC SMP一样,能不断降低CPU的平均价格,
• AMD推出了基于 IA32 架构、价格更便宜的服务器,进而令基于AMD64 架构的产品在2003年快速推出。
对这三个因素的详细分析也很耐人寻味。
3.3.1. 打破系统平衡
如上所述,最初,RISC SMP 主内存延迟在 100 个CPU时钟范围内,带宽范围接近 0.4 字节/FLOP。该延迟在很大程度上不受 CPU 数量的限制,同时,可以通过配置不同数量的处理器,调整每个处理器的带宽。
在应用领域和每个处理器带宽间,始终存在着明确的系统相关性,即“缓存友好”型应用领域采用满处理器负荷装入SMP,而“高带宽”领域配置更少的处理器或坚持使用单处理器系统。
到 2000 年,RISC SMP 中的主内存延迟已经降低了三分之一,而同时CPU 频率也已经提高了 3 到 6 倍。随着单一系统总线转变为多种NUMA结构,每个处理器的带宽也变得更为复杂。
3.3.2. 价格趋势
1990年代后期,服务器厂商获得了长足的进步,能够使在1990年代初极为成功的系统保持令人满意的系统平衡属性。虽然这获得了高度成功,但是却在经济方面代价不菲。其两大成本来源是:要为这些系统提供片外 SRAM 缓存和监听系统总线,以便实现缓存一致性。对于这些系统来说,大量片外 SRAM 缓存对于这些系统忍受相对较高的内存延迟,并降低对于共享地址和数据总线的带宽需求至关重要。当英特尔停止使用标准的片外 SRAM 缓存时,整个市场停滞不前,而 SRAM 的性价比也无法追随其他电子组件的下降趋势。2000 年,一个大容量片外SRAM缓存的成本要比处理器的成本高好几倍。
但是,对于小型 SMP 来说,减少共享内存和地址总线也就意味着缩短延迟并提高每个处理器的带宽,从而可以使用更小的片外SRAM缓存。随着小RISC SMP与大RISC SMP间的价格/处理器差距进一步拉大,客户也日益转向采用小SMP集群取代大SMP。
3.3.3. “杀手级”微处理器
到 2000 年初,日益商品化、高产量的x86架构的服务器与基于专用 RISC 架构的服务器相比,已具有绝对的性能优势,且高产量服务器能够提供更优越的性价比。转向小型RISC SMP 的趋势使得向小型x86 SMP 的迁移也更为简单。
2003 年,随着基于 AMD64 架构处理器的推出,提供了更高的性能和真64 位寻址能力及整数算法,这一趋势获得了极大的发展动力。英特尔紧随AMD之后推出了 EM64T 架构,从而在几年内,导致了一次声势浩大的将绝大多数 x86 服务器业务从 32 位迁移至 64 位硬件的无缝迁移。
这些趋势并不能说明客户对 SMP 缺乏兴趣。他们确实有兴趣,但是,这些趋势可以说明,众多客户都对大型 SMP 系统所提供功能的价格较为敏感。由于价格差异巨大,市场自然会找到如何使用价格更便宜硬件的途径。
正如RISC SMP市场最终产生了大量进行并行处理编码的ISV(在企业与技术计算方面)一样,多核心x86处理器也将推动更多大型软件的并行化,并显著降低目前小型服务器的价格。
与1990年代的 RISC SMP 市场不同,如今的多核心处理器不会依赖于片外 SRAM 缓存,可对其进行配置以避免产生成本高昂的芯片到芯片的相干性流量(可以通过监听过滤器,也可以简单地使用单芯片服务器,例如Sun T1/Niagara)。也许除了移动/低功耗设备之外,没有任何一个通用CPU的竞争者能够明确地以更低的价格提供更高的 x86 性能。
4. 长期预测
4.1. SoC(SMP on a Chip)
在1990年代中后期,RISC SMP 市场的主流是 4、8 和 16 路 SMP。这种“利润最丰厚”的市场,提供了额外的CPU能力来证明应用并行化的效果,而不会产生让人无法接受的成本开销,也不会为应用提供过多无法有效利用的处理器。
目前的趋势是,数年内将能够在单一芯片上实现类似的 SMP尺寸,从而据此做出多方面的预测:
• 在1990年代,RISC SMP 打开了 UNIX 服务器市场,多核芯片能否以与之相同的方式打开并行代码的新市场?
• 为了有效利用多核处理器芯片,是否需要在架构或编程模式上进行根本性改变?或并行应用能否凭借自身的力量发展,还是需要架构方面的增强(如transactional memory)?
• 提高单一芯片的核心/线程数量,是否能够消除绝大多数用户对于更大型 SMP系统的需求?
即使对于单插槽或双插槽系统,每个芯片上核心数量的提高,将会使用户混合运行多线程和单线程作业(这些作业不会使用全部 CPU 核心),更像最近10年中的大型SMP服务器,而不是传统的使用模式。即使是在这些小系统中,核心数量的日益增多也可以扩展虚拟化的采用,支持多个客户操作系统使用各自专用的核心,但竞争使用内存空间、内存带宽、共享缓存及其他共享资源。
4.2. 设计空间的爆炸式增长
在本文开头的简单示例,已经讨论了在定义适当的微处理器芯片指标参数时的复杂性和相当有限的自由度(例如,一或两个核心加上小容量或大容量缓存)。AMD最初销售的双核处理器基于90纳米的工艺技术,年中即将推出的四核Barcelona将基于 65 纳米工艺技术。采用 45 纳米技术,AMD能够将内核数量再翻一倍(8 个内核);而采用32 纳米技术,AMD则将能够将内核数量再翻一倍(16 个内核),同样22 纳米技术还能够令AMD将内核数量再翻一倍(32 个内核),而这一切都是切实可行的。
最近的研究表明,无论从设计或应用性能的角度来看,CMP 设计空间都是多维的。但问题是,性能与性价比指标的定义已经发展出了很多层次的自由度。若每个应用都拥有不同的单线程性能、多线程性能、单线程性价比和多线程性价比设计点,将更难以做出决定。而且,CPU产量与不断增加的独立“最优”设计点,也将成为芯片产业即将面临的主要挑战。
4.3. 异构化
显而易见,假设不同的资源的成本不同,同类多核芯片不能面向不同工作负载进行优化。若将设计空间扩大加入异构处理器核心,则可增加很多新的自由度。内核间可能不同的参数包括:
• 基本 ISA
• ISA 扩展
• 缓存容量
• 频率
• Issue宽度
• 乱序功能
这一额外的自由度令同质化的多核设计产生了无数的新可能性,既令人兴奋又令人畏惧。
当然,多核心处理器将不限于仅包含 CPU。既然三维图形处理卡已经广泛整合到移动、客户端和工作站系统中,那么将图形处理单元(或图形处理单元的一部分)集成到处理器芯片上应该是自然而然的(详情请参阅 AMD 已发布的“Fusion”计划)。其他类型的异构架构也将成为未来合乎逻辑的选择,但目前来看,好像还没有哪个AMD的竞争对手进行过具有大规模处理器生产意义上的异构化尝试。
4.4. 核心过多?
虽然片内集成4 到 8 个 CPU核心的短期展望着实令人兴奋,但是,从更长期的角度来看,片内集成32、64、128、256个核心也将带来其他挑战。
1990年代末,在 RISC SMP 市场的鼎盛时期,大型(8 路到 64 路)系统成本昂贵,且几乎始终共享使用。单个用户基本不用担心找不到足够多的工作使 CPU保持忙碌。与之相反,即将推出的多核心处理器芯片将是价格适中的商业化产品。个人将能够轻松地负担多个CPU,超过以往“任务并行化”所需要的CPU数量。例如,在 2004 年,一台基于 AMD 或英特尔单核心处理器的高配置双插槽服务器售价为 5,000 到 6,000 美元,拥有5万美元预算的科研人员/工程师,可以购买大约 8 台服务器(16 个内核)以及足够的存储与网络设备。自 2000 年开始,这类系统的数量剧增,很多用户发现在小型集群上,运行独立串行作业时,或仅在一个服务器内进行并行作业(使用 OpenMP 或明确的线程)时,可以充分使用这些小集群的资源。
若厂商提供近乎同样的价格,则使用相同的预算,采用16核的处理器将总共获得256 个核心。科研人员/工程师用户基本不会有数量如此巨大的独立作业(通常,通过参数检查、敏感度分析或整体统计产生),也不会考虑改进此吞吐量,以提高单一作业性能。
更进一步的设想,若使用 5万美元能采购128核的芯片,将获得 2048 个线程,这将使绝大多数用户编程和使用计算机的方式发生根本性变革。因此,多核心处理器开发人员的任务很艰巨,他们必须简化多核心处理器的开发,以提高单一作业的效率。并且,如果多核用户能够提前于自己的竞争对手,率先开发出此并行机制,则该用户将获得更多的竞争优势。
4.5. 带宽情况如何?
相对处理器的性能增长速度,内存带宽的提升速度相对要低的多。通过提高管线能力,DRAM 技术已从根本上改进了自身性能,但这种方法也已经接近其实际极限了。驱动DRAM命令与数据、消化来自 DRAM 的数据、发送/接收数据以及探测/监控往返于其他芯片间的流量等产生的功耗,正日益成为大量电力消耗的主要原因。
如果一个CPU最大浮点性能只支持小于 0.5 GB/s 的主内存带宽,则其在市场中获得成功的几率将明显降低。举例来说,若希望使用 8 个核心,且每个核心每个周期可以以 3 GH 频率速度进行 4 次浮点操作,则毫无疑问,100 GFLOPS(峰值)芯片也非遥不可及,而只能算是合理的中期预期。
另一方面,每个处理器芯片要保持 50 GB/s 的内存带宽,成本也极为昂贵。即使使用 DDR2/3 DRAM 技术,提供 1600 MHz(每个 64 位通道 12.8 GB/s)的数据传输率,则实际上,要保持所期望的内存带宽水平也将需要很多通道(102.4 GB/s 峰值带宽大概需要 8 个通道),这就意味着至少需要 8 个 DIMM,并需要丢弃类似 40 个出色的缓存,以实现 50% 的利用率。(若内存延迟为 50 ns,则 102.4 GB/s 的延迟带宽为 5120 字节,或每 64 个字节延迟 80 个缓存线。所以,共需要约 40 个并发缓存线传输,以保持 50 GB/s 的目标带宽。)
5. 总结与结论
本文的文字与图例说明,在多核心处理器带来的巨大机会和挑战面前,我们才刚刚开始。AMD最初的前进步伐一直受到技术的限制,只能对系统的整体平衡做有限的提升,但是,技术的发展趋势使AMD清楚地看到,未来工艺技术所提供的灵活性将给业界带来大量机会,使AMD能够设计出在功耗、性能和成本特性方面有显著提高的基于微处理器的系统(例如Barcelona和Fusion)。
对于计算产业而言,通过生产标准化的产品来保持高产量,通过创建种类丰富的产品来提高性能、每瓦性能和性能价格比之间的相互牵制,将成为整个行业的主要挑战。即使我们试图保持适度数量的“快速”核心,工艺技术也将支持我们提供超过用户当前的有效使用能力的核心。这将需要整个产业、学术界和计算机用户共同合作,开发出新的方法,能够利用多核心完成“日常”应用,利用片上通信的物理位置实现前所未有的、耦合更为紧密的并行机制。
资料:加速系数与Amdahl定律
衡量多处理器系统的性能时,通常要用到的一个指标叫做加速系数,定义如下:
S(p) = 使用单处理器执行时间(最好的顺序算法)/ 使用具有p个处理器所需执行时间
Amdahl定律的传统方程式表示方式:
S(p) = p / (1 + (p-1)*f)
其中 S(p)表示加速系数
p表示处理器的个数
f表示串行部分所占整个程序执行时间的比例
当f = 5%, p = 20时, S(p) = 10.256左右
当f = 5%, p = 100时, S(p) = 16.8左右
关于作者:
http://home.austin.rr.com/mccalpin/
第一作者曾在SGI和IBM工作,从事过Power家族的研发,也是Stream内存带宽基准测试的发明人,被同行昵称为“带宽博士”。曾多次代表IBM就Power接受媒体采访。
http://www.alliacense.com/Licensing_Charles_Moore_Biography.aspx
第二作者是多核心编程语言的发明人,具有数十年的业内经验。就职于AMD之前曾在多家公司任技术部门要职。
第叁作者是AMD的CTO,他的简历我正在找Dennis要呢:)
本文主要观点
1. 背景
a) 核心概念
i. 平衡
在设计计算机系统时,设计者需要考虑成本、价格、功耗、物理尺寸、可靠性以及众多相对独立的属性的最佳平衡。
ii. 优化
计算机系统设计中的优化是指,选择使特定目标功能最大化或最小化的参数,同时,还通常为其他目标功能提供“次级优化”解决方案。
b) 方法
通过对508个SPEC_fp2000结果730个SPECfp_rate2000结果进行函数建模,进行定量分析。
c) 假设与建模
为进行性能和性能价格比分析,我们将假定:
双插槽“裸”系统(带有磁盘、内存和网络接口,但没有 CPU)成本为 1,500 美元。
基本CPU 配置为 2.4 GHz 单核处理器,配备 1 MB L2 缓存,成本为 300 美元。
2. 多核芯片的研发
a) 生产更小的芯片
量产那些时钟频率仅满足基本需求的更小/更便宜的芯片,在为客户提升性能和性能价格比方面价值不大
b) 增加大量片上缓存
增加大量缓存为所有工作负载带来的提升幅度更大。在此例中,将 L2 缓存从 1 MB 提高到 3 MB 可以带来 0% 到 127% 的性能提升。
c) 增加CPU 核心
增加核心可以广泛提升各种工作负载的吞吐量,并需要付出不大的频率降低(17%)以满足功耗/冷却限制。
d) 三种参数的优劣
设计选项 主要优势 主要缺点
小芯片 降低价格 最弱的提升幅度
大缓存 在少数代码上有巨大的性能提高 最弱的中间和几何平均数性价比提升
双核心 最强的中间和几何平均数吞吐量提升 降低了单处理器性能
3. 当前和短期问题
a) 功耗问题
如何解决与多个领域相关的CPU功耗问题?
b) 功耗与吞吐量及核心和核心数量的矛盾
只要 CPU 内核功耗下降的速度大于峰值吞吐量下降的速度,则通过无限数量的极小快速核心,即可获得最佳吞吐量。显而易见,这种系统的单线程性能将非常低,从而直接影响对单一指标值的优化。为了解决这一问题,一种方法是可以定义一个可接受的最低单线程性能,然后对芯片进行优化,在面积和大功耗的限制条件下,尽可能加入更多的核心。这方面的例子如Sun的UltraSPARC T1 。
如果考虑到核心之间通信/同步的挑战,那么无限制的增加核心并不是惟一的途径。还有一种方法是将核心数量限制到一个合理的数量。综合运用多种手段提升性能。
c) 市场挑战
UNIX的麻烦
i. 越来越难以保持最初使UNIX服务器获得成功的系统平衡
ii. 大规模RISC SMP 难以和小型RISC SMP一样,能不断降低CPU的平均价格
iii. AMD推出了基于 IA32 架构、价格更便宜的服务器,进而令基于AMD64 架构的产品在2003年快速推出
x86-64的机会
iv. 2003 年,随着基于 AMD64 架构处理器的推出,提供了更高的性能和真64 位寻址能力及整数算法,导致了一次声势浩大的将绝大多数 x86 服务器业务从 32 位迁移至 64 位硬件的无缝迁移。
v. 这一趋势可以说明,众多客户都对大型 SMP 系统所提供功能的价格较为敏感。
vi. 正如RISC SMP市场最终产生了大量进行并行处理编码的ISV(在企业与技术计算方面)一样,多核心x86处理器也将推动更多大型软件的并行化,并显著降低目前小型服务器的价格。
4. 长期预测
a) SoC的发展
即使对于单插槽或双插槽系统,每个芯片上核心数量的提高,将会使用户混合运行多线程和单线程作业(这些作业不会使用全部 CPU 核心),更像最近10年中的大型SMP服务器,而不是传统的使用模式。
即使是在这些小系统中,核心数量的日益增多也可以扩展虚拟化的采用,支持多个客户操作系统使用各自专用的核心,但竞争使用内存空间、内存带宽、共享缓存及其他共享资源。
b) 设计空间爆炸式增长
AMD最初销售的双核处理器基于90纳米的工艺技术,年中即将推出的四核Barcelona将基于 65 纳米工艺技术。采用 45 纳米技术,AMD能够将内核数量再翻一倍(8 个内核);而采用32 纳米技术,AMD则将能够将内核数量再翻一倍(16 个内核),同样22 纳米技术还能够令AMD将内核数量再翻一倍(32 个内核),而这一切都是切实可行的。
c) 异构化
多核心处理器将不限于仅包含 CPU。图形处理单元(或图形处理单元的一部分)集成到处理器芯片上应该是自然而然的。其他类型的异构架构也将成为未来合乎逻辑的选择,但目前还没有AMD的竞争对手进行过,具有大规模处理器生产意义上的异构化尝试。
d) 多核心的压力
多核心处理器开发人员的任务很艰巨,他们必须简化多核心处理器的开发,以提高单一作业的效率。并且,如果多核用户能够提前于自己的竞争对手,率先开发出此并行机制,则该用户将获得更多的竞争优势。
e) 内存带宽的挑战
相对处理器的性能增长速度,内存带宽的提升速度相对要低的多。
5. 总结与结论
技术的发展趋势使AMD清楚地看到,未来工艺技术所提供的灵活性将给业界带来大量机会,使AMD能够设计出在功耗、性能和成本特性方面有显著提高的基于微处理器的系统(例如Barcelona和Fusion)。
对于计算产业而言,通过生产标准化的产品来保持高产量,通过创建种类丰富的产品来提高性能、每瓦性能和性能价格比之间的相互牵制,将成为整个行业的主要挑战。
附:
Phil Hester
AMD公司高级副总裁兼首席技术官
Phil Hester是AMD公司高级副总裁兼首席技术官,负责为AMD的微处理器业务制定架构和产品方面的策略和规划。Hester同时也是AMD技术委员会的主席,负责确保产品开发、整合与工艺等各部门的综合技术能力与产品发展方向一致。
Hester把他30多年的先进的系统设计和企业计算经验带到了AMD。在加入AMD之前,Hester是Sanmina-SCI公司旗下Newisys公司的联合创始人,并担任首席执行官。此前,在IBM公司工作的23年中,他担任多个重要技术职位的领导和管理职务,并且是IBM企业技术委员会(IBM Corporate Technology Council)的15名成员之一,主持了包括RS/6000在内的多个系统技术开发项目。
Phil拥有德克萨斯大学的理学士和工程学硕士学位。