AMD、Inter服务器处理器更新解析
- 来源:微型计算机 smarty:if $article.tag?>
- 关键字:AMD,Intel smarty:/if?>
- 发布时间:2014-03-23 16:07
近日AMD与Intel接连更新自己的旗舰级服务器处理器产品线,分别引入了十五核心和十六核心的新型号。这些旗舰级的服务器处理器在微架构上有何不同?设计十几个核心的多核处理器需要考虑哪些因素?AMD“推土机”的发展路线目前面临什么情况?本文将借着本次新处理器发布的契机,带领读者们探寻上述问题的答案。
A/I双雄双双更新规格
自从Intel酷睿系列CPU发起反攻之后,AMD已在长达七年的时间里处于CPU性能上的劣势。基于“压路机”微架构的新一代Kaveri APU面世后,自今年1月起已有不少跑分数据可查。尽管相对上一代“打桩机”微架构有了明显提升,显著缩小了与Intel的差距,但是此轮旗舰级服务器处理器产品线的更新,“压路机”却并未参与其中。不过,Intel推出的新处理器也并未使用Haswell,而是继续使用上一代lvy Bridge微架构。当然,无论是AMD还是Intel,采用这种方式都可以理解,毕竟服务器处理器研发的工程量远比消费级产品大得多,为了确保产品的正常更新以及更高的稳定性,Intel和AMD都沿用了前代更加成熟的微架构作为设计基础,并把大量精力花在了如何提高稳定性、整体系统效率、提高住能功耗比等方面。
首先来看Intel,此次产品更新的消息早在去年年底就开始流传,直到今年年初的国际固态电子电路大会(ISSCC)上,Intel才公开其细节。这次推出的新处理器总计超过十款,用于四路至八路的高端服务器,其中Xeon E7-8800 v2系列(代号lvy Town)打破了以往惯例,成为了Intel历史上第一个奇数核心的多核处理器,考虑到MIC众核产品线的设计思路与x86服务器有显著不同,而此前的x86服务器产品线上的最强处理器为十二核心,因此这个处理器同时也成为Intel历史上核心数目最多的多核处理器。这个批次处理器拥有史无前例的43.jl亿个晶体管以及37.5MB三级缓存,基于22nm工艺制造,其运行频率为2.2GHz-2.8GHz,热设计功耗105W至155W。
再来看AMD。本次AMD更新的处理器只有两款,其编号分别为Opteron 6338P与6370P,依据目前公开的情报,这两款处理器仍1日是基于上一代的“打桩机”微架构设计,核心代号“warsaw”,使用32nm工艺,热设计功耗99W,最高支持DDR3-1600,三级缓存同为1 6MB,不同之处在于,6338P为十二核心,使用两个六核处理器进行组合,基础频率2.OGHz,最高频率2.5GHz,6370P为十六核心,使用两个八核处理器进行组合,基础频率2.3GHz,最高频率2.8GHz。
粗略对比之下不难发现,AMD的旗舰级服务器处理器未采用新一代微架构,且并非原生多核设计,现在仍然难有与Intel顶级产品抗衡之力,但AMD也有自己的办法。这两款理器的发布时间卡在Intel的更新消息开始流传,但细节还未确认的当口上,而定价也是杀气腾腾:6338P定价仅为377美元,6370P定价也只有598美元。Intel在这个价位上配置的两款相近处理器Xeon E3-1275 v3与Xeon E3--1280 v3仅为四核心八线程设计,规格差距非常大,AMD的{昔位竞争手段在市场中依然具备一定的竞争力,因此鹿死谁手还未可知。
为什么不用大核代替多核?
看到这一次旗舰级服务器处理器产品线更新的消息,恐怕很多人的内心都会再度失望——为什么不构建一个性能足够强大的大核心以质取胜,反而使用了多核心进行数量上的扩展?没错,从各种测试程序的跑分情况看,近些年处理器单线程性能的提升幅度较为平庸,似乎Intel与AMD这雨家巨头没有做出更多的努力,但实际上的情况并非如此。
现代高性能处理器微架构脱胎自上世纪60年代中后期的超级计算机,当时CDC 6600和IBM 360/91两台初代超级计算机上所采用的乱序执行调度策略惊鸿一现,随后被尘封20余年,直到80年代末90年代初,学术界和工业界试图设计超标量处理器,实现指令多发射的时候,它们才重新登上处理器微架构设计的舞台。超标量、乱序执行、分支预测的研究在整个90年代被推向高潮,处理器单线程性能飞速进步,当时的RISC阵营已经能够做到四发射,也出现了不少试图发掘指令级并行度的创新,大家甚至期望未来出现二十发射、三十发射的处理器。发掘单线程性能的努力在这期间已经到了登峰造极的地步,许多只有在特定场景下才能小幅提高性能的技术都被吸收,集成进处理器微架构内部。
可惜,这一趋势在2005年前后戛然而止。究其原因,是这些激进的设计已经把处理器设计的复杂度推得过高,更新设计变得越来越困难,同时功耗问题也跃居为设计中的头号大敌,不允许再采用疯狂的高性能设计。除了“功耗墙”问题的迎头痛击,“访存墙”问题也从侧翼袭来。乱序超标量+分支预测允许硬件在遇到访存停顿时,将一些不相关指令超莳执行以重叠访存延迟,这一延迟容忍能力曾被寄予厚望,在学术界中提出“访存墙”问题的学者甚至受到研究指令级并行度学者的压制。但是内存子系统的速度越来越难以跟上处理器的步伐,过高的延迟开始让重叠执行的时间节省显得杯水车薪。 在并行编程、多核处理器的设计方法并无技术突破的情况下,受到功耗与访存两大问题压迫的工业界在2005年前后终于被迫转向了多核心设计。随着工艺的逐渐进步,每一代处理器核心可以在功耗允许的前提下进行更多的小幅调优,进行增量式改进,单线程性能再无突破性进步。甚至连原先压制“访存墙”问题的学者也开始公开呼吁高等教育界普及多核心编程方法,以配合未来的多核心设计。这就是我们所面临的现实。
多核设计,可扩展支持不容易!
设计多核心的服务器处理器,要考虑的因素与以往发掘指令级并行度的方法有所不同。既然选择多核而非单核,那么如何扩展到多核就是Intel和AMD不得不考虑的问题。对于这个问题,我们可以用一个简单的示例,来帮助大家明白多核心可扩展性的概念,进而分析服务器多核处理器中使用的技术。
假设有两个处理器核心将执行代码“a=a+1:b=a_1:”,第一句代码被分配给第一个核心,第二句代码被分配到第二个核心,a和b首先被调入多核心的三级共享缓存中。当第一个核心执行完a+l的计算时,a的值会被从共享缓存调入到核心配属的二级乃至一级私有数据缓存中,计算完毕的a的新值也会被存放在这个私有数据缓存里,而当第二核心开始计算b值时,问题就出现了:此时第二核心需要从共享缓存中取出a的值进行计算,但共享缓存中存放的a值是未经过+1计算的1日值,计算完毕的薪值是存放在第一核心的私有缓存里的。
这个问题被称为缓存不一致。实际执行的代码结构远比我们上面的举例来得复杂,参与的核心数目也更多,经常出现核心3、4需要读取核心佣』刚更新的数据,核心2、1需要读取核心3刚刚更新的数据这类{昔综复杂的情况。为了维护多个核心间的缓存一致性,任何一个核心取用并更新的数值,都必须以某种方式通知其他核心,避免其他核心错误地取用1日值。这个问题被称为高速缓存的一致性维护问题,是从单核心向多核心扩展的必经之路,一致性协议设计与实现的好坏,直接影响多核运作的效率。
面对这个司题,最简单的做法是广播,由更新数据的核心向其他核心发送数据包,显式地通知它们数据已经被更新。这个做法简单但效率较低,若是双核心处理器尚可,若是四核乃至八核处理器,则每一个核心的每一次更新数据都要通知其他核心,通讯总线就会拥挤不堪。考虑一个4GHz主频16核心的处理器,乘以平均每周期缓存访问的次数,通讯总线将需要提供上百GB/s的惊人带宽,这根本无法在芯片内部实现,广播的做法是无法满足高可扩展性要求的。
为了弥补这个问题,Intel在自己的服务器处理器中引入了基于目录的缓存一致性维护,这种设计可以选择性地向那些持有受影响数据块的核心发送广播,减少了维护缓存一致性带来的通信开销,同时目录本身在多核心处理器中使用分布式设计,减少了争用。维护缓存一致性需要综合考虑许多变量,继续以广播监听为例,有一种做法是让需要请求数据、散发控制信号的核心自行发出广播请求,这种做法被称为源监听。这种做法的优势在于低延迟,有需要的核心自行发送广播,不需要经过任何媒介,因此适用于4核心以下的多核心处理器,但是这种做法可扩展性不佳,随着核心数目增加,性能反而下降,另一种被称为主节点监听的方法将超越源节点监听成为最佳选择。在主节点监听中,需要发送广播的核心并不直接将广播送出,而是转而送到一个主节点上,由主节点挑选那些持有受影响数据块的核心,然后代为向这些核心广播,这种做法的可扩展性好,适用于核心数目较多的情况。Intel在这个问题上做出了许多针对性的研究工作,自从Sandy Bridge微架构开始,Intel的多核处理器就使用了主节点监听,lvy Bridge微架构也将这一做法继承了下来,主节点监听的设计乜被Intel-再宣传。相比InteI的高调,AMD并未公布自己的微架构使用了什么样的一致性维护方法,使得外界无从探寻究竟。
巨大的三级缓存背后
随着核心数量的大幅增加,无论是AMD还是Intel,都在不断提升核心配套的数据缓存容量。而对这些缓存的管理和访问,也是影响多核处理器性能的关键。我们可以通过核心照片来看看lvy Town的缓存和芯片互联部分的物理实现,这将给我们更多关于多核扩展以及缓存访问的直观认识。lvy Town的三级缓存达到了史无前例的37.5MB,这个三级缓存被分为三块,对应于核心照片中从左到右深绿色、浅绿色、以及深蓝色的三列缓存块,从图中不难分辨,每一列缓存分为五块,每一块大小为2.5MB。
对应模块图不难识别,每一列三级缓存块旁边都有一列同样纵向铺开的处理核心以及它们的私有缓存,一共三列十五组。这也体现了了良好的宏观物理布局,处理核心到一级缓存、二级缓存的物理距离最近,线延迟最少,加上一级缓存和二级缓存相应的组织结构调整,在一级、二级缓存取用数据比三级缓存要快不少。三级缓存块中嵌入的小块部分则是环形总线。当处理核心1所需数据存放在远处的核心1 0旁边的三级缓存中时,环形总线会特通信请求通过一个一个的环形总线中继站传递到核心1 0处。
从这两张图中我们不难窥见,除了缓存,服务器处理器在多核心扩展上所面临的另外两大问题:第一是三级缓存以及相应处理核心及其私有缓存的互联方式。在lvy Town中,为了连接起三排十五个核心,互联总线被设计为两个环路(模块图中的粉色连线),若是核心数目更多,则需要将处理核心、缓存、内存控制器全部挂接在一个片上网络上,这个片上网络中的各个中继点将像计算机网络中的路由器一样控制、排序、转发访存请求,因此这个片上网络如何组织、路由算法如何设计也将影响到多核心的扩展能力,这种片上网络设计在目前已经成为现实。第二,是三级缓存的不对称延迟。访问三级缓存的不同区块,所经历的延迟不同,因此就出现了一个奇妙的现象:在各个核心上进行相同的计算,所花费的时间将会不同。这种现象在目前的微处理器中也已经观察到,因此现在的三级缓存通常会仿效非对称内存(NUMA)-样,组织成非对称缓存(NUCA),较远的三级缓存区块中的数据如果被频繁访问,则可以把它动态转移至更近的区块中降低延迟。片上网络和非对称缓存是当前的多核心扩展研究热点,包括Intel在内的许多公司和研究机构都力此付出心血。
“推土机”的问题仍在迷雾之中
相对于Intel的风光,AMD则显得沉默不少。自K8微架构之后,“推土机”微架构是AMD推出的唯一一个主要微架构革新,其后的“打桩机”、“压路机”等微架构,究其本质都是基于“推土机”的调优,因此“推土机”微架构被各方寄予厚望。但是“推土机”推出后的测试成绩让许多失望,著名硬件资讯网站AnandTech甚至专门刊发文章分析其问题所在。但是截至目前尚无任何大众传媒以及学术会议和期刊上发表精确的硬件测量结果,AMD官方也并未给出任何解释,缺乏数据支持的胡乱定性,以点带面以偏概全的评估结果却在许多网站传播,这些都对理清“推土机”架构相对Sandy Bridge的1生能劣势有害无益。作为计算机体系结构以及处理器微架构的专业研究者,笔者需要指出AnandTech以及其他媒体对于“推土机”微架构诸多分析和猜测的不妥之处。
首先,微架构设计仅仅是全芯片设计中的一部分,并非全部。在微架构设计之外,还有电路,器件以及工艺等几大层面会冲击芯片性能与功耗。而IT传媒对微架构设计关注最多,导致了一种假象,似乎芯片性能好坏主要取决于微架构设计,一旦芯片表现欠佳,微架构设计往往首当其冲,令人哭笑不得。举例来说,分支预测器需要开辟一块很大的历史记录表来保存过去的分支历史,而电路和器件层的设计将在很大程度上决定这个记录表的大小和访问速度,从而影响到功耗、分支预测准确率和失败回退时间;缓存的load_to-use延迟不仅受到微架构制约,更受到物理设计的制约。版图排布将决定各个缓存区块到处理核心的距离,白此影响取用延迟时间。从这两个例子中我们可以看到,全芯片设计是一个系统工程,微架构仅仅是其中一环,芯片性能与功耗问题全都归咎与微架构,是无论如何说不过去的。
其次,普通用户往往出于自身角度考虑,将单线程性能设立为评价微架构性能的唯一指标,其实在其他一些领域,单线程性能并没有传统PC上这么重要,微架构的评价其实是很多元化的。在核心内外,处理器都为多线程并行做出了很多优化,其中一部分还是以牺牲单线程性能为前提的,例如,增加缓存的关联度,进行缓存的切分管理将有助于减少多线程运行时的冲突缺失,但同时可能也将增加每一次访问缓存的时延。牺牲单线程性能来换取多线程并行的微架构,有一个绝佳的实例:在奔腾4处理器把对指令级并行度的发掘推向巅峰的时候,Sun公司推出了一款别出心裁的处理器SPARC T1,这款处理器只有区区六级流水,不支持乱序执行,单线程性能被同期的奔腾4处理器甩出几条街,但是凭借着四路超线程来回切换躲避延迟,SPARC T1在数据库服务器上取得的每核心IPC堪堪能与奔腾4比肩,然而其设计复杂度与功耗都远低于奔腾4,因此T1被作为经典案例写入了计算机体系结构领域的教科书。
最后,实际微架构的设计也运比传媒上宣传的内容复杂得多。以处理器核心内部的流水线为例,有很多可以量化的项目,例如重排序缓冲区(ROB)的大小,保留站(reservation station)可以容纳的条目数量等,但同时也有很多难以量化的项目,例如流水线的旁路(bypass)网络,这个旁路网络负责检查流水线中产生相关性的部分,把相关的数据或者其他资源快速传递给其他部件,从而提高性能,这个旁路可以出现在流水线的很多地方,我们无法找到一个指标去定义bypass网络是否“充足”亦或“健全”。判断微架构层面的性能瓶颈,最好同时也最专业的办法,是使用硬件性能计数器去读取各个部件上报告的指标,可惜的是目前尚无这种测试结果披露,因此我们尚难精确断言“推土机”的具体症结所在。
AMD的转机
虽然微架构层面的特征我们无从得知,但是有一点是已浮出水面的:推土机的定位与当年的T1有着异曲同工之妙。削减FPU、面向线程级并行度、以及AMD CTO Mark Papermaster在Hotchips主题演讲中对云、数据中心服务器的强调,这些举动都放出了明显不过的信号:推土机向着远离传统PC用户的方向迈出了重要的一步。
服务器上运行的应用通常对指令级并行庋要求不太高,但是对线程级并行度要求较高,对浮点计算则几乎没有要求,“推土机”系列处理器明显是投其所好。“推土机”微架构与其说面向传统桌面个人用户,倒不如说是一个面向服务器的微架构。AMD的实力不如Intel,其微架构无法像“酷睿”一样兼顾多面,同时针对服务器应用和传统PC、移动平台进行优化,于是放弃正在衰落的PC市场,专攻高利润率的服务器市场,在目前的情况下也不失为一个明智决定。近期AMD的服务器市场占有率虽然在有所下滑,但是其在低功耗处理器方面的努力,以及不断推出高性价比的多核服务器处理器产品,也让我们对其后续的市场表现拥有较好的预期。
Intel的处理器喜欢使用超线程技术来提供额外的线程级并行度,超线程技术引入的额外线程其实是共享整个流水线从前端到后端的几乎所有资源,而AMD的“推土机模块”则是使用轻量级的真实核心,在相同价位上,多线程性能超过英特尔确实是可以期待的一个亮点,2015年的下一代微架构将引入对服务器应用非常有吸引力的QoS(质量保证)特性,这个QoS将带来怎样的变化,会不会有更好的虚拟化支持,届时的AMD是否在服务器市场上顶住Intel的强攻,继续扩充自己的领地,我们抗目以待。