AISystem 系列解读:NVLink 原理深度剖析——从 PCIe 瓶颈到第五代 1800GB/s 互连
AISystem 系列解读:NVLink 原理深度剖析——从 PCIe 瓶颈到第五代 1800GB/s 互连
导读
随着大模型参数量从亿级跃升至万亿级,单卡算力已无法支撑训练需求,大规模 GPU 集群间的数据交换效率直接决定了整个算力系统的上限。本篇以 NVLink 原理剖析 为骨架,系统拆解 NVLink 的诞生背景、电气与数据链路结构、flit 通信协议、互联拓扑以及 Blackwell 第五代 NVLink 的演进路径,并穿插本仓库同系列文档(分布式通信与 NVLink、NV Switch 深度解析)中的分布式并行与集合通信背景。读完你将掌握:为什么 PCIe 会成为多 GPU 系统的性能瓶颈、NVLink 每代链路带宽的计算逻辑、NVLink 数据包如何在物理层保证高速与可靠,以及 2024 年 Blackwell 架构中每 GPU 1800GB/s 带宽从何而来。
为什么需要 NVLink:PCIe 与 GPU 互连的瓶颈
PCIe 互联技术的局限
PCIe(Peripheral Component Interconnect Express)是一种高速串行计算机扩展总线标准,广泛应用于服务器中连接 GPU、SSD 等设备,通过高带宽、低延迟的数据传输支撑复杂计算任务。然而,随着 AI 与机器学习领域数据集和模型规模的指数级增长,PCIe 的带宽逐渐成为限制因素。
在英伟达推出 NVLink 和 NVSwitch 之前,构建强大计算节点的常规方法是:通过 PCIe 交换机将多个 GPU 直接连接到 CPU(以 PCIe 3.0 时代为例,x16 链路可提供的双向带宽约为 32GB/s)。这在当时被视为高效的数据传输方式,但很快成为系统性能提升的瓶颈:
- 新一代 GPU 的数据处理能力大幅增强,如果互联带宽没有相应提升,GPU 在处理完当前数据后必须等待下一批数据到达,计算效率显著下降;
- 数据传输速度不足意味着即使是最先进的 GPU 也无法充分发挥性能潜力,限制大规模并行计算系统的整体表现。
正是为了突破这一瓶颈,英伟达开发了 NVLink:它提供比 PCIe 3.0 更高的数据传输速率,大幅减少 GPU 之间的数据搬运时间,使多个 GPU 可以更高效地共享数据,从而提升整体计算性能。
现代 GPU 的并行计算基石:SM、GPC 与 HBM
要理解 NVLink 的价值,先要看清现代 GPU 的内部结构。单个 GPU 内部包含多个流多处理器(SM)核心,这是实现并行计算的基石;通过 CUDA(Compute Unified Device Architecture)技术,开发者可以编写程序驱动这些硬件单元并行执行复杂计算任务。
GPU 内部的工作任务被划分并分配给每个图形处理簇(GPC)和流多处理器(SM)核心,这种工作分配机制确保计算资源被充分利用。为了支撑这种高速计算,GPU 通常配备高带宽内存(HBM,High Bandwidth Memory)——一种堆叠式内存技术,通过宽接口和高传输速率显著提升内存带宽,为 GPC/SM 核心提供快速访问大量数据的能力。GPC/SM 核心之间可以共享 HBM 中的数据,使数据交换更高效。
多 GPU 系统面临的三大通信问题
在没有专用高速互连技术的系统中,GPU 之间的通信和数据交换通常涉及以下几个方面:
- PCIe 通信:多个 GPU 协同工作时,彼此间的通信通过 PCIe 总线进行。由于 PCIe 带宽有限,它可能成为高速数据传输的瓶颈。
- 对 HBM 的访问:如果 GPU A 需要直接访问 GPU B 的 HBM 内存,数据必须通过 PCIe 总线传输,其带宽远低于 HBM 的内存带宽,比 GPU 内部访问 HBM 慢得多。
- 通过 CPU 的调度:在没有直接 GPU 对 GPU 通信能力的系统中,CPU 充当数据交换的中介,负责在多个 GPU 之间分配和调度计算任务,并管理数据在 GPU 与系统内存之间的传输。
对于数据传输密集型应用,频繁的 GPU 间通信会使 PCIe 的带宽限制被放大,直接导致性能下降。而 NVLink 的出现提供了革命性的替代方案:GPU 的 GPC 可以直接访问连接在同一系统中其他 GPU 上的 HBM 数据,这种直接内存访问机制显著降低延迟;NVLink 支持多条链路同时操作,可通过多条 NVLink 同时对其他 GPU 内的 HBM 数据进行访问,每条链路的数据传输速率远高于 PCIe,多链路组合使整体带宽成倍增加。
此外,NVLink 不仅是一种点对点的通信协议,还可以通过连接到 GPU 内部的交换机(XBARs)实现更复杂的连接拓扑,让多 GPU 系统中的每个 GPU 都能以极高效率访问其他 GPU 的内存与计算单元。值得强调的是:NVLink 并不是要取代 PCIe,而是作为补充和增强。系统中常同时使用 NVLink 与 PCIe——NVLink 负责高速 GPU 间通信,PCIe 负责 GPU 与 CPU、存储等系统组件之间的通信,这种设计允许系统根据不同的通信需求灵活选择最合适的技术。
NVLink 带来的多 GPU 系统能力跃升
从系统层面看,NVLink 的引入带来了四方面提升:
- 多 GPU 互联能力提升:更多 GPU 可以高效地连接在一起,使构建大规模 GPU 集群成为可能,深度学习、科学模拟等领域可以处理更复杂的问题。
- 单一 GPU 驱动进程的全局控制:通过 NVLink,单个 GPU 驱动进程可以控制所有 GPU 的计算任务,简化多 GPU 系统的编程和使用。
- 无干扰的 HBM 内存访问:通过使用 LD/ST 指令和远程直接内存访问(RDMA)技术,GPU 可以在不受其他进程干扰的情况下直接访问其他 GPU 的 HBM 内存,减少数据传输延迟。
- XBAR 的独立演进与带宽提升:GPU 内部的交换机(XBAR)作为桥接器,可独立于 GPU 核心演进发展,提供更高的带宽和更灵活的连接拓扑,为 NVLink 的未来扩展保留空间。
NVLink 技术细节剖析
初代 NVLink 结构:32 条配线的精巧设计
第一代 NVLink 首次亮相于 P100 GPU,设计初衷是超越传统 PCIe 通道,实现 GPU 间以及 GPU 与 CPU 之间更高效率、更高带宽的数据传输。
每条 NVLink 由一对双工双路信道组成,通过巧妙地将 32 条配线组合起来形成 8 对不同的配对。这种结构的带宽计算逻辑为:
2 位双向传输(2 bit)× 8 对配对(8 pair)× 2 条线(2 wire)= 32 条线(32 wire)
在 P100 GPU 上,英伟达搭载了 4 条这样的 NVLink 通道,每条通道提供双向总共 40GB/s 的带宽,整个 P100 芯片因此达到 160GB/s 的总带宽,为数据密集型应用提供了强大的数据处理能力。
仓库佐证:NVLink 的代际演进脉络可在 分布式通信与 NVLink 中查看——从 Pascal 架构到 Hopper 架构经历了四代发展,P100 中每一个 NVLink 为 40GB/s,而第二代 V100 到 H100 每个 NVLink 链路为 50GB/s,整体带宽的提升主要依靠增加链路数量实现。
NVLink 实现细节:带宽效率与能力边界
P100 的四条 NVLink 通道实现了高达 94% 的带宽效率,意味着几乎所有的数据传输都能以极高的效率完成,极大减少了传输过程中的损耗。更重要的是,NVLink 的能力不止于数据搬运:
- 对等原子操作:NVLink 不仅支持 GPU 之间的数据读写操作,还支持原子操作到对等 GPU,为复杂计算任务和数据处理提供更灵活的支持;
- CPU 协同:P100 可以通过 NVLink 与支持 NVLink 的 CPU 进行数据读写,提升 CPU 与 GPU 的协同工作效率,为异构计算环境中的数据共享和任务协调提供更高效的方案;
- 链路捆绑(Lane Bundling):NVLink 链路可以被"捆绑"起来以实现更高的带宽,多条 NVLink 通道组合使用可进一步满足对数据传输速度有极高要求的应用场景,使 P100 能根据应用需求动态调整数据传输策略。
NVLink 通信协议:Brick、差分对与 flit 数据包
深入协议细节,NVLink 的链接架构中有几个核心概念:
Brick(通道基本单元):每个 NVLink 是一个双向接口,由 8 个差分对组成,总计 32 条线。这些差分对采用直流耦合(DC coupled)技术,并配置 85 欧姆的差分终端 以优化信号传输质量。为提高设计灵活性和兼容性,NVLink 引入了**通道反转(Channel Reversal)和通道极性(Channel Polarity)**概念——设备间的物理通道顺序和极性可根据实际布线和设计需要调整,从而简化物理布局和路由复杂度。
flit(flow control digit,流量控制数字)数据包结构:NVLink 采用基于 flit 的数据包结构,一个单向的 NVLink 数据包可以包含 1 到 18 个 flit,每个 flit 包含 128 位。这种设计允许在单个数据包中传输不同大小的数据:
| 数据包组成 | 单向传输数据量 | 峰值带宽利用率 |
|---|---|---|
| 1 个头部 flit + 16 个数据有效载荷 flit | 256 字节 | 94.12% |
| 1 个头部 flit + 4 个数据有效载荷 flit | 64 字节 | 80% |
头部 flit 的结构包含了三类关键字段:
- 25 位的循环冗余校验(CRC):负责错误检测,确保数据传输的可靠性;
- 83 位的传输字段(Transaction field):包含请求类型、地址、流量控制位和标记标识符等信息;
- 20 位的数据链路字段(Data link):涉及数据包长度、应用编号标签和确认标识符等内容。
其中,地址扩展(Address Extension)机制通过保留静态位、仅传输变化位来优化数据传输效率。
错误检测与容错机制:NVLink 协议通过 25 位 CRC 实现错误检测。接收方(Receiver)负责将接收到的数据保存在重播缓冲区(Replay buffer)中,对数据包进行排序,并在确认 CRC 无误后将数据发送回源端。CRC 字段的设计使得最大数据包能够容忍高达 5 个随机位错误,或者在差分对发生突发错误时,支持最多 25 个连续位错误的容错能力。这种精心设计的电气和数据结构,既保证了高速传输的稳定性与可靠性,也为高性能计算提供了强有力的支撑。
NVLink 互联拓扑:从 Power8+ 到 DGX-1
为实现 GPU 间的高效链接和协作计算,需要基于 NVLink 系统配置和性能成本要求,合理配置 GPU 之间 NVLink 通道的物理布局和连接方式。
IBM Power8+ 的全连接 mesh:初代 DGX-1 通常采用常规互联形式,而 IBM 在基于 Power8+ 微架构的 Power 处理器上引入了 NVLink 1.0 技术,使 P100 GPU 可以直接通过 NVLink 与 CPU 相连,无需经过 PCIe 总线,实现 GPU 与 CPU 之间的高速、低延迟直接通信。通过这种方式,每个节点的 4 个 GPU 可以配置成一种全连接的 mesh 结构,GPU 之间可直接交换数据,在深度学习和计算密集型任务中实现更高效的数据传输和协作计算。
DGX-1 的 cube-mesh 混合拓扑:DGX-1 集成了 8 块 P100 GPU 和 2 块志强 E5 2698v4 处理器。由于每块 GPU 只有 4 条 NVLink 通道,GPU 形成了一种混合的 cube-mesh 网络拓扑结构:GPU 被分成两组,每组 4 块,组内形成 mesh 结构,组间形成 cube 结构。
PCIe 与 QPI 的配合:由于 GPU 所需的 PCIe 通道数量超过了芯片组所能提供的数量,每一对 GPU 连接到一组 PCIe 交换机上,再与志强处理器相连;随后两块 Intel 处理器通过 QPI 总线相连。这种配置确保每个 GPU 都能获得足够的 PCIe 带宽,同时通过 QPI 总线为系统提供高速的 CPU 间通信通道。
拓扑演进对照:在 NV Switch 深度解析 中可以看到后续演进:DGX-2 引入第一代 NVSwitch(每卡 6 条 NVLink,6 个 NVSwitch 全互联);DGX-A100 采用第二代 NVSwitch(每卡 12 条 NVLink,6 个 NVSwitch 全连接);DGX-H100 采用第三代 NVSwitch(每卡 18 条 NVLink,4 个 NVSwitch 分层拓扑,以 5/4/4/5 条链路分接,共 72 个 NVLink 提供 3.6TB/s 全双工带宽)。
第五代 NVLink:Blackwell 的带宽跃升
在 2024 年的 Blackwell 架构中,英伟达继续在服务器带宽和可扩展性方面迭代:
- 带宽翻倍:NVLink 带宽从每 GPU 900GB/s 增加一倍,达到每 GPU 1800GB/s。这是过去几年 NVLink 带宽的最大跃升——2022 Hopper 架构的 NVLink 带宽仅比上代提高了 50%。
- 每芯片数据量不变:GPU 芯片数量翻倍的同时互连带宽也翻了一倍,因此每个芯片接收的数据量并没有改变。但由于两个芯片需要作为单个处理器一起工作,需要传输和重新排列的数据总量显著增加。
- 链路数不变、速率翻倍:每个 GPU 的 NVLink 数量没有改变——GH100 Hopper 的 NVLink 容量为 18 个链接,Blackwell GPU 的 NVLink 容量也是 18 个链接。NVLink 5 带来的所有带宽增益都来自链路内每个高速对的 200Gbps 更高信号传输速率,这与前几代 NVLink 的模式一致:每次迭代都使信号传输速率翻倍。
- 域扩展移到机架级:由于 NVLink 4 的链路数量保持不变,本地芯片拓扑选项基本保持不变。英伟达的 HGX H100 设计结合了 4 路和 8 路设置,HGX B200/B100 设置也相同。但这并不意味着英伟达没有增加 NVLink 域中 GPU 数量的雄心——这将在机架级别而非节点级别实现。
软件侧呼应:NVLink 的高带宽需要与分布式并行策略配合才能转化为训练收益。本仓库 数据并行、张量并行、流水并行 等文档讲解了 DP/PP/TP 混合并行如何利用底层互连带宽;而 分布式通信与 NVLink 中介绍了 GPU 上最常用的集合通信库 NCCL——通过 NCCL 的 API(广播、归约、全局归约、全局同步等集合通信原语),可以利用 NVLink 或 NVSwitch 将不同 GPU 相互连接起来,实现跨 GPU 的高效数据交换。
小结与思考
回顾 NVLink 的技术全貌,可以提炼出三个核心结论:
- NVLink 的重要性:随着神经网络模型参数量的激增,传统 PCIe 总线已无法满足 GPU 间及 GPU 与 CPU 间的高速数据传输需求。NVLink 通过提供远超 PCIe 的传输速度和低延迟,有效解决了这一瓶颈,是实现万亿级参数模型训练的关键硬件基础。
- NVLink 的技术细节:NVLink 通过创新的通道设计(8 对差分对、32 条配线)和高效的 flit 数据包结构(1~18 个 flit、128 位/ flit),实现了高带宽利用率(最高 94.12%)和强大的错误检测能力(25 位 CRC,容错 5 个随机位错误或 25 个连续位错误);其灵活的拓扑结构(mesh、cube-mesh、NVSwitch 全互联)和对等通信支持(LD/ST、RDMA、原子操作),为大规模 GPU 集群的高效协作计算提供了可能。
- NVLink 的发展与演进:自 P100 GPU 首次引入以来,NVLink 经历了多代发展——每链路带宽从 P100 的 40GB/s 提升到 V100/H100 的 50GB/s,每 GPU 链路数从 4 路增至 18 路,最新一代在 Blackwell 架构中实现了每 GPU 1800GB/s 的带宽,进一步推动了高性能计算和神经网络模型训练的能力边界。
深入阅读
- NVLink 原理剖析(本篇文档):NVLink 电气结构、flit 协议与拓扑细节
- 分布式通信与 NVLink:分布式并行策略、集合通信原语与 NCCL
- NV Switch 深度解析:NVSwitch 的演进、芯片参数与 SHARP 技术
- 英伟达 GPU 详解目录:Tensor Core 与 NVLink 系列课程大纲
- AI 硬件体系架构概述:AI 芯片全景知识地图


