就好比数据中心的伺服器和 Switch 用 LAN 线或光纤线互联,CXL 将会是 CPU 与 GPU 的新一代互联技术。Source:Wccftech
CXL 技术简介取代 PCIe先讲回 Intel CXL 标準的原意——作为 CPU 与 Accelerator 加速器(如 FPGA / GPU 显示卡)之间的互联通信。一直以来, CPU 都是透过主机板上的 PCIe 插槽及 PCIe 协议( Protocol )与显示卡沟通,但当 Intel 联合阿里巴巴、 Cisco 、 Dell EMC 、 Facebook 、 Google 、 HPE 、华为及微软组成强大阵容的联盟后,就发表了 CXL 的开放标準,以解决目前 PCIe 协议于 CPU 与显示卡之间的高延迟( Latency )及频宽不足的问题。
目前 CPU 与 GPU 之间是透过 PCIe 互联。Source:NVIDIA
Intel 与多个厂商组成联盟,使 CXL 技术具备极高兼容性。Source:Anandtech
兼容性高为兼容各品牌的各种产品, CXL 1.0 的物理层面是基于 PCIe 5.0 ,所以未来的 Server CPU 仍是置于主机板 CPU Socket,显示卡 / 绘图卡也是插在 PCIe 插槽上,不过 CPU 与 GPU 并非以 PCIe 协议进行沟通,而是採用新的 CXL 协议,因此 PCIe 5.0 可理解为纯粹提供实体插槽。传闻 Intel 会于 2020 年推出 Xe 系列独立显示卡, PCIe 5.0 可能会在差不多时间应用于伺服器,或者再晚一、两年, Intel 预计 CXL 技术会于 PCIe 6.0 年代被广泛应用。
CXL 1.0 的物理层是基于 PCIe 5.0,所以显示卡也是插在 PCIe 槽。Source:Anandtech
当显示卡插进 PCIe 槽后,会自动协商用 PCIe 或 CXL Protocol 进行传输。Source:Wccftech
提升 CPU 与 GPU 的互联效率CXL 强调低延迟,允许 CPU 与 GPU 之间绕过 PCIe 协议,用 CXL 协议来共用、互取对方的记忆体资源,形成一个「连贯」的记忆体池。当中可细分为 3 个协议:
CXL.io :类似目前的 PCIe 输入输出 I/O,取代 PCIe 协议
CXL.cache :容许加速器 / GPU 要求存取 CPU 的快取( Cache )
CXL.memory :反方向,容许 CPU 要求存取加速器 / GPU 的记忆体,例如是 HBM2 等
透过 CXL 协议, CPU 与 GPU 之间就形同连成单一个庞大的堆叠记忆体池( Stacked Memory ), CPU Cache 和 GPU HBM2 记忆体犹如放在一起,有效降低两者之间的延迟,故此能大幅提升数据运算效率,令 AI 人工智能、机器学习、媒体服务、高效能运算( HPC )及云端服务变得非常快速。
CXL 使 CPU Cache 和 GPU 记忆体能够共用。Source:Wccftech
CXL 的应用,本文集中讲述中间一格。Source:Wccftech
CXL 或应用于 Intel Xe 家用显示卡那为甚幺外媒 Wccftech 的编辑会认为 CXL 可推动 Intel Xe 架构多路显示卡的发展,甚至有机会比 NVIDIA SLI 或 AMD CrossFire 先进呢?虽然目前 CXL 都只是指 Server CPU 及 GPU 之间的互联, Intel 亦从没说过 Xe 显示卡会否与 CXL 有关,甚至也没怎透露过更多眉目,但既然 CXL 可令 CPU 和 GPU 共用记忆体,也应该可在 GPU 与 GPU 之间上实现。
目前 Intel 没透露太多资料,只是邀请了很多设计师构想 Xe 显示卡的外观。本文的 Xe 卡图片都是来自 Intel Odyssey「设计智囊团」,非落实的设计。
过去 SLI 的限制Pascal 年代的 GeForce GTX 10 系列或更早前的游戏显示卡,所用的 NVIDIA SLI 多路显示卡技术,并不太有效把多张显示卡的记忆体「加起来」, API 或应用程式可能将之视为单一 GPU ,令工作分配未必平均,各张显示卡需要不断「同步」大家的资料,但 SLI 互联技术的延迟又高、频宽不够,导致较少游戏及应用程式能有效发辉 Multi-GPU 的功用。
以前 NVIDIA GeForce 显示卡用 SLI 桥接器(左),到 RTX 2080 及 RTX 2080 Ti 就转用 NVLINK(右)。
SLI 和 NVLink 是种 GPU 与 GPU 之间的互联技术
NVLink 早已做到 CXL 功能不过上述 CXL 的功能,其实某程度上,NVIDIA 早于 2014 年的 NVLink 已经实现到。 NVLink 初期是应用于 Pascal 架构的 Tesla 显示卡,之后在 Turing 架构的 GeForce RTX 2080 及 RTX 2080 Ti 打进家用市场。 NVLink 是种取代 SLI 的 Multi-GPU 互联技术,能把各 GPU 的记忆体加起来(Stacked Memory),因而大幅提升频宽及运算效率。但除了做 GPU <-> GPU 之间的互联外,其实 NVLink 亦能于 GPU <-> CPU 之间、或 Multi-GPU <-> CPU 之间做到 Stacked Memory,使 CPU 与 GPU 的记忆体能够共享,即是上述 CXL 的功能。只不过支援 NVLink 的 CPU 实在少之又少,最着名的是 IBM 的 POWER8 处理器。即使是 NVIDIA 的 DGX-2 超级电脑,都未能发挥到 NVLINK CPU <-> GPU 互联优势,因为内里搭载的是 Intel Xeon CPU,并不支援 NVLink 。
NVLink 可应用于 GPU 与 CPU 之间的互联。Source:NVIDIA
NVIDIA 自家的 DGX 超级电脑搭载 Intel Xeon CPU ,所以 Tesla P100 与 CPU 之间并无 NVLink 连接。Source:WikiChip
CXL 比 NVLink 优胜之处无可置疑,Intel 是市佔率最高的 CPU 品牌,若要在 CPU <-> GPU 互联技术比武, CXL 绝对比 NVIDIA NVLink 有更大优势,兼容的产品亦多很多。不过 CXL 能否在家用市场大放异彩,就很难说準,始终目前都很少游戏开发者会为 SLI / NVLink 一小撮人加入 Multi-GPU 技术,更遑论购买多张 Intel Xe 显示卡的客户群, CXL 的 CPU <-> GPU 互联能否为游戏带来突破性影响,亦是未知之数。一切还是待 Intel 发表 Xe 显示卡才下定论吧。
Source:Wccftech、NVIDIA NVLink Blog、Anandtech、IBM