本帖最后由 HEU-liukai 于 2024-8-6 15:15 编辑
本章主要以Nvidia DGX A100产品为例,介绍了其总体设计及CPU与内存子系统的设计,Nvidia DGX A100整机(包含了2台AMD EPYC Rome 7742处理器(每颗64核心,共128核)、8个Nvidia A100 SXM GPU和8张Mellanox CX6 IB 200G HDR/200G RoCE网卡等)分为了两部分,包括系统主板和SXM子卡(SXM接口是一种高带宽、高功率的Socket解决方案,用于将NVIDIA的GPU连接到服务器或数据中心的主板上),其中包括了CPU与内存子系统、PCI-E子系统、存储子系统和GPU子系统。
根据Rome 7742为代表的Zen2系列处理器的内部架构图可知,每颗Rome 7742包括4个NUMA,每个NUMA包括2个Compute Die,每个Compute Die分为2个LLC(Last Level Cache,最后遗迹缓存)单元,每个LLC包括4个物理核和8个超线程。
Nvidia DGX A100整机包含了2台AMD EPYC Rome 7742处理器,每个处理器可支持128个PCI-E 4.0通道(PCI-E子系统是一种高速串行计算机扩展总线标准),那么Nvidia DGX A100两台处理器互通时,又会占用每台处理器的48个通道,则双路系统最终剩下160个PCI-E 4.0通道。Nvidia DGX A100对PCI-E子系统进行了特殊的设计,引入了PCI-E Switch,其能够将多条PCI-E总线互联互通,使得Nvidia DGX A100包含的2台7742处理器能够连接到Nvidia DGX A100整机中的各类高性能计算存储设备。主要可应用于以下两种场景:
(1)多个能够支持Root Complex(根联合体,RC)功能的PCI-E设备的对等互联。
(2)在Root Complex支持的PCI-E通道数量不足的情况下,对PCI-E通道进行扩展。
关于PCI-E子系统的设计中,为了避免使PCI-E的upstream通道成为性能瓶颈,在调度GPU时通过建立绑定关系,令同一个PCI-E Switch下的一个GPU、一张CX6网卡和一块SSD卡绑定为一组,即每个PCI-E Switch下有两组,Nvidia DGX A100 PCI-E子系统下共可分为8组。那么这种分组应该就是将upstream通道数据流向分成两部分,分别可以通过MLX CX6网卡来实现跨服务器节点GPU之间的互访来减弱“多打一”效应,从而避免SW到RC的带宽成为瓶颈问题。
此外,为了实现同一台服务器的两块GPU之间的互访,NVidia推出了NVLink技术来实现GPU之间的互通,Nvidia为8颗A100提供了一块专用的子卡,即SXM子卡,该子卡上安装了6块NVLink Switch,通过8个SXM接口(实际上就是PCI-E x16接口和NVLink 2.0 x6接口的集合),安装8张A100 GPU卡,能够实现8张A100 GPU卡的全连接的互联互通。
概念补充:
(1)文中提到,在Rome 7742中,各个Compute Die与Memory/IO Die之间互通采用的是Infinity Fabric技术。Infinity Fabric(简称IF)是AMD开发的一种高速互连技术,主要用于连接AMD处理器内部的各个核心、缓存以及其他组件,以实现高效的数据传输和通信。该技术被广泛应用于AMD的Ryzen和EPYC系列处理器中,在EPYC处理器中,Infinity Fabric不仅连接了处理器内部的各个组件,还支持在多个处理器之间建立连接,以实现更高效的数据传输和通信。
在多处理器互通的场景下,AMD的Infinity Fabric技术相当于Intel的QPI/UPI技术。QPI(Intel QuickPath Interconnect)和UPI(Intel Ultra Path Interconnect)是Intel开发的两种高速互联技术,主要用于实现芯片之间的直接互联。UPI在2017年取代了QPI,其拥有更高的通信速率、效率以及更低的功耗。
(2)Root Complex是PCI-E总线架构中的起始点,通常被集成在主板的南桥芯片内,负责将处理器和内存子系统连接到由一个或多个交换设备组成的PCI-E交换结构。它类似于PCI-E系统中的主机桥(北桥),是I/O层次结构的根节点,用于连接CPU/Memory子系统到I/O子系统。
(3)Compute Die(计算晶片)是专门用于执行计算任务的芯片部分,它集成了各种计算核心和相关模块,如CPU核心、GPU核心、缓存等。
(4)NUMA(Non-Uniform Memory Access)是一种计算机内存架构,其中处理器访问内存的时间取决于内存相对于处理器的位置。在NUMA架构中,内存被划分为多个区域,每个区域由一个或多个处理器(或处理器核心)直接访问,这些处理器通常被称为“节点”(node)。每个节点内的内存访问速度较快,而跨节点的内存访问则相对较慢。