一周没更新微信公众号,有点快要长草的感觉,正好周末赶上点想写的东西。
下面这张图,来自一篇国外的报道《IBM Preps Power9 For AI And HPC Launch, Forges BigNUMA Iron》,简单说就是16插槽Power9系统的互连设计。
由16路互连拓扑图引发的疑问
首先,每个“横排”的4颗CPU应该在一个CEC机箱内,每个CPU都有3条蓝色连接通往另外3个CPU。
在CEC之间,每个CPU又通过3条绿色的SMP线缆“纵向”连接同一列上的3个CPU,这样所有16个插槽之间最多只需要“2跳”。
这里有朋友提出疑问:“CEC内部连接的16 Gb/s带宽还不如跨机箱的25 Gb/s?”另外如果这些连接只是单bit宽度,换算成GB/s也太低了点吧?
显然上图交待的还不够全面,或者说应该写成GT/s更准确。那么,实际带宽到底是多少?
在同一篇报道中,我还看到“Power9 SU”最大只到12核心。最小内存1TB也就是每颗CPU都要配64GB。DDR4内存的频率只有1.6GHz,在这些背后又有哪些玄机呢?
为此我翻出自己一年前写的《初探OpenPOWER9服务器设计:x86不再寂寞》,找到其中一部分答案。
- “每颗POWER9 LaGrange CPU拥有8个DDR4内存通道,每通道支持2个DIMM插槽(每CPU 16个DIMM,总共32 DIMM);
- CPU之间通信经过2条30-bit X-bus,工作在16Gbps的一致性互连;
- POWER9 LaGrange整合PCI Gen4控制器,两颗CPU一共引出84 lane;
- 每个CPU支持2个x8 lane的NVLink/OpenCAPI@ 25Gbps。
不难计算出,POWER 9每条X-bus的带宽为60GB/s,两条就是120GB/s;每个x8 lane NVLink/OpenCAPI的带宽为25GB/s。”
可以看到,在一块主板/CEC机箱内部CPU之间的16Gbps互连是30-bit X-bus,而跨CEC的SMP线缆应该走的就是25Gbps8信道CAPI。
紧接着问题又来了:上图中OCP项目的设计,每颗CPU的X-bus和NVLink/OpenCAPI都只有2组,Power9要互连16路至少需要3组才对啊?
Power9的Scale Out和Scale Up两个版本
然后我又翻出了另一篇新闻:
Power9的2个版本——SO(横向扩展)和SU(纵向堆叠)
首先Power9应该有2种Core,SMT8(同步8线程)的“大核”和SMT4(同步4线程)的“小核”。左边Scale Out系列SMT4的最大24核,对应就是OCP使用的OpenPOWER;而只有最大12核SMT8的Scale Up系列,才能支持到16插槽互连。
这个原因在CPU四周围就可以看出来,Power9 SU将4B SMP(严格说32bit X-bus,估计含2位校验码)增加到3组,25G I/O增加到4组。代价是的8通道内存控制器没有完全内置,而是像以前Intel Xeon E7那样通过DMI连接外面的控制/缓冲芯片。(Power8以前也这么设计过)
Dell PowerEdge R910服务器的内存板,当年它支持4路Intel Xeon 7500和第一代Xeon E7处理器。散热片下有2颗SMB内存缓冲芯片。
在《四路Xeon SP服务器内存减半:Intel葫芦里卖的什么药?》一文中我就提到,Intel最新一代Xeon Scalble平台全部采用CPU直连内存的设计,包括支持四路的型号也不再需要SMB内存缓冲芯片。这样做除了成本之外,降低了内存插槽数量和最大容量支持,但也保证了内存频率和性能(特别是延时)。
所以,这大概就是我们看到通过DMI桥接内存的Power9 SU,DDR4内存频率只支持到1.6GHz的原因吧。
CAPI和NVLink对PCIe Gen4物理连接的复用
这张图反映的是Power9的25G I/O用于连接NVIDIA GPU(也就是NVLink工作模式)。前面我们提到每一组x8 lane的单向带宽是25GB/s,全双工就是50GB/s,那么300GB/s应该对应6组NVLink。这与上文中Power9 SU示意图的4组25G似乎有些不符,后面我会讲可能的原因。
在CAPI支持模式下,4组25G I/O被定义为OpenCAPI 3.0(蓝色箭头),提供总共200GB/s的双向带宽。而共用部分PCIeGen4物理层资源的CAPI 2.0(红色箭头,也可以被定义为NVLink?),由于速率限制在16GT/s,所以2组x16 lane或者4组x8 lane的最大双向带宽就是128GB/s。
扩展阅读
《PCI Express 4.0规范全文下载,SSD和网卡何时能受益?》
上图中列出CAPI连接的设备是ASIC或者FPGA,而看下面这张图我们就能理解它们也能用于互连Power9 CPU。
首先,刚才我们就提到3组x16 PCIe Gen4中的2组可以重定义为CAPI 2.0。另一方面,我还认为如果NVLink的最大带宽要想达到300GB/s,很可能也会复用这部分PCIe资源。
Intel Xeon抱定QPI+PCIe?与Power不同的生存之道
相比传统PCIe连接,CAPI的一大好处是设备(FPGA/ASIC)可以与CPU共享内存地址,这样也就为用于CPU之间的NUMA对等连接建立了基础。当然PCIe也支持DMA,像EMC VMAX高端存储的Scale-out架构应该说也相当于实现了NUMA,而真正将PCIe重定义为CPU互连的还有AMD。
上图我在《AMD EPYC官方资料乌龙?谈服务器CPU互连效率》一文中曾经列出,不过AMD目前的“胶水封装”只是将“重定义的PCIe”用于2路CPU互连。
话题似乎总要回到目前占据主流市场优势的Intel。我们知道Intel支持PCIe Gen4的进度比Power9要晚,而之前PCIe基本一直是Intel在主导而IBM等跟随。对于NVLink/OpenCAPI和GenZ似乎Intel也无动于衷?
扩展阅读
《Gen-Z互连(下):第一步25-100GB/s、PCI-SIG的反应》
显然,我认为Intel选择这样的策略不是因为技术门槛,只用3条QPI互连CPU是他们觉得4路以上服务器的市场太小。而IBM Power的目标则不同——用户群则较小且针对性强一些(同时保持较高的利润率来支撑研发),部分高端关键业务和HPC用户更需要在单机上实现Scale Up的高性能“胖节点”。
同时,Intel也不是自己一个人在战斗,还有些服务器厂商提供了第三方Node Controller芯片来支持更大规模(8路及以上)的Xeon服务器。比如下图就是我在《Bull 8-16路服务器:为何基于双CPU模块互连?》一文中介绍过的架构。
至于协处理器的连接/互连,大家可能知道当前Xeon Phi的命运,Intel未来重点在FPGA还是“GPU”我也不确定,所以现在不太好评论和推测。
距离Power9正式发布的日子应该越来越近了,到时候我哪里写的不对请大家在下面留言:)