PCI、PCIe 和 NVLink

在计算机系统中,不同的设备(如 CPU、内存、显卡、存储设备等)之间的 数据交换 需要通过 总线 来实现。

在同一个机器内,PCIe 负责 CPU 与 GPU 之间的通信,NVlink 负责 GPU 与 GPU 之间的通信。机器间的通信可通过 TCP/IP 网络协议或 RDMA 网络协议(InfiniBand、iWARP、RoCE)进行。

PCI总线(Perpheral Component Interconnect)

1. PCI 总线的背景

在 早期计算机 中,设备数量相对较少,且速度差距不大,因此 PCI 总线 被设计为一个 共享并行总线,可以让多个设备连接到同一条总线上并共享带宽。

  • PCI 总线 是一种典型的 I/O 总线,主要用于将外设与 CPU 和内存连接。

  • 在这种架构中,多个设备会通过 PCI 总线 共享相同的带宽进行数据传输。

2. PCI 总线的连接方式

在传统的计算机架构中,PCI 总线 与 北桥(Northbridge)南桥(Southbridge) 配合工作:

  • 北桥 (Northbridge):负责 高速数据传输 ,并直接与 CPU内存 进行交互。它处理 内存访问、显卡(如 AGP、PCIe)以及 高速总线(如 FSB)的数据传输。

  • 南桥 (Southbridge):主要处理较慢的外设,如 硬盘、USB 端口、音频设备、网络适配器、PCI 总线 及其他 I/O 设备 。南桥与 CPU 通过 北桥 连接。

CPU 内部,北桥 起到了重要作用,将前端总线分为两个部分:

  • 本地总线(与高速缓存进行高速通信)

  • 前端总线(与主内存和外部设备进行通信)

3. PCI 总线的特点与限制

  • 共享总线 :所有设备共享同一条总线带宽,因此 带宽竞争 是问题之一。某些低速设备可能会导致 带宽瓶颈,影响整个系统的性能。

  • 并行传输 :由于采用并行传输,多个信号会在同一时刻通过多根线路传输。这种方式容易出现 信号同步问题,并且存在 电磁干扰(EMI) 和 串扰,使得传输稳定性降低。

  • 不适合高速设备 :PCI 总线的 带宽有限,尤其是对 显卡、SSD 等高带宽需求的设备来说,PCI 总线 的性能无法满足其需求。

由于这些限制,PCI 总线 被逐渐淘汰,PCIe(PCI Express)成为了主流的替代方案。

PCIe (PCI Express)

1. PCIe 的出现与发展

随着计算机硬件的快速发展,传统的 PCI 总线 在 带宽 和 延迟 上逐渐无法满足现代高速设备的需求,尤其是 显卡、SSD(固态硬盘)和 网络适配器 等设备对高速数据传输的要求不断提升。因此,PCIe(PCI Express)应运而生,成为现代计算机系统中 高速设备连接的标准

PCIe 与传统的 PCI 总线 相比,采用了 串行点对点 连接模式,极大地提高了 带宽稳定性,并解决了并行总线带来的 同步问题 和 电磁干扰。

2. PCIe 与传统 PCI 总线的主要区别

3. PCIe 的工作原理

PCIe 采用 串行数据传输点对点连接 。每个设备通过独立的 通道(Lane) 与主板上的 根复杂 (Root Complex) 进行通信。每个通道由一对发送和接收信号组成,通常有以下几种配置:x1 (1 个通道)、x4 (4 个通道)、x8 (8 个通道)、x16(16 个通道)

PCIe 通道的带宽会随着通道数的增加而提高。例如,PCIe 3.0 x16 的理论最大带宽为 16 GT/s,即 16 吉比特每秒,而 PCIe 4.0 x16 则可以提供 32 GT/s 的带宽。

PCIe Root Complex 是 CPU 或 PCH(平台控制器集线器)内部的一个组件,负责管理所有的 PCIe 通道,协调数据的传输。

4. PCIe 总线架构图

  • CPU:整个系统的计算核心,通过 FSB (前端总线)连接 Root Complex(根复合体)。

  • Root Complex:是 PCIe 总线的根节点,负责连接 CPU、内存和所有 PCIe 设备。承担 CPU 与 PCIe 设备之间、PCIe 设备与内存之间的数据转发。

  • PCIe Switch:作用是扩展 PCIe 总线的端口数量,让一个上游链路可以连接多个下游设备。交换机支持级联,进一步扩展了设备接入能力。

  • PCIe Endpoint(PCIe端点设备):常说的 PCIe 外设,比如 GPU、网卡、NVMe SSD、RAID 卡等。他们通过PCIe链路与根复合体或交换机通信,是实际提供功能的硬件。

  • PCIe bridge to PCI/PCI-X(PCIe桥接器):兼容性组件,用于连接旧版的PCI/PCI-X设备,让他们可以接入 PCIe 总线。

数据传输逻辑:

  • CPU 通过 FSB 将指令和数据发送个 Root Complex。

  • Root Complex 负责将数据路由到目标设备:可以直接发给连接在它总线上的 Endpoint 或桥接器;也可以通过 PCIe Switch 转发给更多下游的 Endpoint 设备。

  • 设备处理完数据后,同样通过这条路径将结果返回给CPU或写入内存。

5. PCIe 的优势

  • 高带宽 :PCIe 3.0 和 PCIe 4.0 提供了显著高于传统 PCI 总线的带宽,特别适合 显卡、存储设备(如 NVMe SSD)、网络卡 等需要高速数据传输的设备

  • 低延迟 :通过 点对点连接 ,数据可以直接从 设备CPU内存,大大减少了数据传输的延迟,尤其对于需要实时数据处理的应用(如视频处理、游戏)至关重要。

  • 灵活性与扩展性:PCIe 支持多种设备和配置,支持多种 插槽类型,从 x1 到 x16,并且支持 热插拔 和 即插即用(Plug and Play)。

  • 高效能:PCIe 支持 全双工通信(同时进行数据传输和接收),进一步提升了带宽效率。

在现代计算机架构中,PCIe 被用来连接各种高速设备 ,成为 显卡、存储设备、网络适配器 等重要硬件的主力连接标准。特别是在 Intel 和 AMD 处理器系统中,PCIe 控制器 常常集成到 CPU 内部,或者通过 PCH(平台控制器集线器) 管理。这种设计简化了计算机的架构,减少了传统 南桥 或 北桥 的作用。同时,PCIe 为现代 NVMe SSD 提供了直接连接的途径,实现了更快的读写速度,不再需要经过 芯片组 或 南桥 等中介设备的传输。

串行点对点

串行传输 中,数据以 一个比特接一个比特 的方式通过 单根信号线 进行传输,而不是像并行传输那样通过多根信号线同时传送多个比特。

  • 并行传输:多个比特通过多根信号线同时传输。例如,在 PCI 总线中,数据通过多条并行信号线同时传输多个比特。

  • 串行传输 :每次传输一个比特,数据流以 比特串 的形式按顺序传输。例如,在 PCIe 中,数据以一个比特接一个比特的方式传输。

点对点传输 表示在 通信链路中每个设备之间有独立的连接。每个设备通过单独的链路与目标设备进行直接通信,而不是通过一个共享的总线。

  • 共享总线 :例如,传统的 PCI 总线 是一个共享的并行总线,多个设备连接到同一总线上,它们争夺带宽,所有设备共享同一信号通道。

  • 点对点传输 :例如,在 PCIe 中,每个设备都有与 根复杂(Root Complex)其他设备独立连接,每个设备都拥有独立的通信通道。

PCIe Switch

PCIe Switch 是一种硬件设备,在 PCIe 总线中扮演着交通枢纽的角色。打破了传统的一对一连接方式,允许多个设备通过单个 PCIe 接口接入,还能实现设备间的数据交换和通信。

主要组成部分

Upstream Port(上游端口): 上游端口连接到 Root Complex上游设备 ,用于接收来自 主机系统(CPU 或 PCH) 的数据。它是 PCIe Switch 的输入端,负责接收数据并将其转发到多个下游端口。作用是 提供 带宽数据路径CPU内存 到多个 下游设备,管理上游到下游的数据传输。

Downstream Ports(下游端口): 下游端口连接到实际的 PCIe 设备 (如显卡、存储设备、网络卡等)。每个下游端口与连接的 PCIe 设备 之间形成数据通信通道。作用是 负责将上游端口传来的数据转发到连接的 端点设备 ,并接收从端点设备返回的数据。一个 PCIe Switch 可以有多个下游端口,支持多个 PCIe 设备 的并行工作。

Switching Fabric(交换矩阵): 交换矩阵是 PCIe Switch 内部用于连接上游端口和下游端口的核心部分。它决定了++数据如何从上游端口传递到正确的下游端口++ 。作用是 交换矩阵管理数据的路由和流量控制,确保每个端口的数据正确地转发到目标设备。它通过内部的连接路径来处理不同端口之间的通信。特点 :现代 PCIe Switch 的交换矩阵支持 多通道并行处理,并且在数据传输时能够有效避免带宽瓶颈。

PCIe Switch 的工作流程

数据请求

  • 当一个 端点设备 (如显卡)需要数据时,它通过 下游端口PCIe Switch 发送请求。

  • PCIe Switch 通过 交换矩阵 将数据请求转发到 上游端口 ,并通过 Root Complex上游设备 获取数据。

数据传输

  • Root Complex内存 获取到数据后,PCIe Switch 会将数据通过 交换矩阵 转发到目标的 下游端口,然后由目标设备接收并处理数据。

返回数据

  • 当设备处理完数据后,它会将结果通过相同的路径返回给 CPU内存,最终完成数据传输。

NVLink 是 NVIDIA 提出的 GPU-GPU 高速互联技术,旨在加快 GPU 与 GPU 之间的数据传输速度,提高系统性能。特点是:带宽远高于 PCIe,延迟更低,针对 GPU 间大规模数据交换进行了优化。

NVLink高速互联的两种形式:直连、NVSwitch。

直连两个 GPU 之间 通过 直接的物理 NVLink 链路 ,即 NVLink Bridge 这个硬件连接器来实现。通常安装在两张 GPU 的顶部接口上。没有NVLink Bridge,NVLink 就无法启用。

NVSwitch (网络交换):是一种更复杂的交换网络结构,允许多个 GPU 通过一个共享的交换机进行连接。是一个高带宽的 交换硬件,它负责将数据从一个 GPU 转发到另一个 GPU。每个 NVSwitch 设备可以连接多个 GPU,并通过 NVLink 提供带宽和低延迟的互联。

可以使用 nvidia-smi topo 查看GPU之间的连接方式:

  • NV18:表示GPU之间存在 NVLink 连接,18是NVLink链路数量。

  • PCIe:表示 GPU 之间通过 PCIe 通信。

  • X:表示 GPU 自身。

相关推荐
~远在太平洋~2 小时前
Linux 基础命令
linux·服务器·数据库
Gofarlic_oms12 小时前
避免Kisssoft高级分析模块过度采购的科学评估方法
大数据·linux·运维·人工智能·matlab
~远在太平洋~3 小时前
Debian系统如何删除多余的kernel
linux·网络·debian
linux kernel3 小时前
第十一部分(下):进程通信
linux·服务器
2401_863905443 小时前
haproxy
linux
皮皮哎哟3 小时前
Linux多线程通信:告别数据混乱
linux·互斥锁·进程间通信·信号量
三天不学习3 小时前
Linux inotify 机制详解,解决“用户实例限制”问题
linux·运维·c#
ZFB00014 小时前
【麒麟桌面系统】V10-SP1 2503 系统知识——插入U盘(移动硬盘)为只读状态
linux·运维·kylin
unfeeling_4 小时前
Keepalived实验
linux·服务器·网络