通过分析 LLVM 源代码,可以一窥 AMD 即将推出的 GFX1250 数据中心加速器的架构细节。它是一款专为人工智能设计的纯计算芯片,移除了几乎所有图形硬件。其核心变化包括采用统一的工作组处理器(WGP)和强制的 Wave32 模式,这对软件移植提出了新要求。在内存和缓存方面,它显著增加了单个计算波可用的寄存器数量,并将本地共享内存(LDS)与 L0 缓存合并为一个统一的 WGP 缓存。此外,它通过引入新的 WMMA 指令集和类似 Nvidia 的集群级操作功能,旨在提升实际 AI 性能,表明 AMD 正努力在理论和实践性能上全面追赶市场领导者。
核心架构变化
GFX1250 的架构与消费级显卡既有相似之处,也存在关键差异。它采用了工作组处理器 (WGP) 的概念,但其内部结构与编译器交互的方式发生了变化。
- 统一的 WGP 视图: 尽管硬件上可能仍是两个计算单元 (CU),但由于引入了共享的 L0 矢量缓存,编译器不再需要区分它们。AMD 似乎交替使用 CU 和 WGP 这两个术语,表明软件层面的界限已经模糊。
- 强制 Wave32 模式: 与只能运行 Wave64 的上一代 CDNA 或同时支持两种模式的 RDNA 不同,GFX1250 仅支持 Wave32 模式。这意味着从旧架构移植程序时,许多计算内核需要重新评估和优化,以适应新的执行模型。
- 更多的并发计算波: 每个 SIMD 单元可以运行 20 个计算波,比 RDNA4 的 16 个要多,这有助于更好地隐藏延迟。
- 缺失动态寄存器分配: 奇怪的是,RDNA4 中备受推崇的动态 VGPR 分配功能在 GFX1250 中却缺失了。对于需要处理整个张量、寄存器压力极高的机器学习负载来说,这似乎是一个奇怪的倒退。
内存与缓存体系的重大升级
GFX1250 在寄存器和本地内存方面进行了大幅革新,这可能是其性能提升的关键。
- 巨量矢量寄存器 (VGPR): 每个计算波现在最多可以寻址 1024 个 VGPR。这是一个巨大的进步,远超前代 CDNA(256 个 VGPR + 256 个累加 VGPR)和 RDNA(256 个 VGPR)的限制。这使得单个计算波可以处理更复杂的操作而无需频繁访问内存。
- 统一的 WGP 缓存: GFX1250 引入了名为 WGP 缓存 (WGP$) 的新结构,将本地共享内存 (LDS) 和 L0 矢量缓存合并到一个 448KB 的统一空间中。这是 AMD 首次采用这种设计,追随了英伟达和英特尔的做法,允许编译器或程序员根据需求灵活划分缓存和共享内存。
- 更大的本地内存: 可寻址的本地内存(LDS)上限达到了 320KB,是 CDNA4 的两倍,更是远超 RDNA 的 64KB。
这种将 LDS 和 L0 缓存合并的设计,标志着 AMD 长期以来坚持的分离式缓存架构走到了尽头,为资源利用带来了更高的灵活性。
专为计算而生的设计
GFX1250 进一步剥离了图形相关功能,成为比以往任何 CDNA 架构都更纯粹的计算加速器。
- 无光栅器: 不支持导出指令,意味着没有光栅化硬件。
- 无纹理单元: 不支持图像(纹理)指令。
- 无光线追踪: 不支持 BVH(光线追踪)指令。
- 无图形专用指令: 移除了用于像素着色器中顶点数据插值的指令。
- 简化的缓冲指令: 不再支持 MTBUF 和 MUBUF 等缓冲指令。
这些精简措施可以节省芯片面积,并移除在纯计算场景下无人会使用的功能,是一个完全合乎逻辑的设计决策。
人工智能与张量核心能力
AI 能力是 GFX1250 的核心卖点。AMD 似乎采取了一种“两全其美”的策略,结合了 RDNA4 简单的编程模型和 CDNA4 更强的数据处理能力。
- WMMA 指令集: GFX1250 使用了新的 WMMA 指令,取代了旧的 MFMA 指令。它保留了 RDNA4 中 16x16 的矩阵维度(M=N=16),但其处理深度(K值)则沿用了 CDNA4 的标准,支持更丰富的数据类型。
- 广泛的数据类型支持: GFX1250 似乎支持 RDNA4 和 CDNA4 上的所有数据类型(除了专属于 GFX1251 的 fp64),包括 OCP MX 风格的浮点格式。
- 硬件 Tanh 函数: 新增了对
tanh函数的硬件支持。这在传统图形学中很少见,但在神经网络中是常见的激活函数,此举旨在加速 AI 计算。
效仿 Nvidia 的集群级通信
GFX1250 引入了类似于 Nvidia Hopper 架构中 "Thread Block Clusters" 的功能,极大地增强了工作组之间的协作能力。
这是 AMD 版本的“线程块集群”,允许将一组工作负载调度到特定的着色器引擎,并实现工作组之间的直接内存访问。
- 集群级加载: 允许一个工作组直接访问集群内其他工作组的 LDS,类似于 Nvidia 的分布式共享内存 (DSMEM)。这为跨工作组通信提供了更高效率的途径。
- 集群级屏障: 增加了集群级屏障 (cluster-level barriers),这是有效利用集群功能所必需的同步机制。
- 硬件监视器: 除了屏障,AMD 还实现了完整的硬件监视器,允许计算波在特定缓存行被从 L2 缓存中驱逐时收到通知。这是一个 Nvidia 没有直接对应物的新颖功能。
新增与改进的指令集
除了上述主要变化,GFX1250 还带来了一系列新的指令和优化,旨在加速特定类型的计算负载。
- 128B 原子操作: 新增了对全局内存的 128B 原子加载和存储支持。这对于加速类似 Nvidia NCCL 的集合通信库至关重要,尽管这些操作不能通过 PCIe 使用,但可能支持 CXL 和 UALink。
- 张量内存加速器 (TMA): 增强版的 TMA 功能允许数据直接从全局内存加载到 LDS,而无需占用宝贵的 VGPR 寄存器,进一步优化了数据流。
- 显式内存预取: 终于加入了 CPU 上早已普及的内存预取指令。虽然 GPU 可以通过大量并发计算波来隐藏延迟,但在推理等场景下,预取仍能带来一定的性能提升。
- 更精细的等待计数器: GFX1250 采用了类似 RDNA4 的全新等待计数器系统,将旧的、笼统的计数器(如 VMCNT, LGKMCNT)分解为更具体的计数器(如 LOADcnt, STOREcnt, DScnt)。
- LOADcnt: 追踪矢量加载操作。
- STOREcnt: 追踪矢量存储操作。
- DScnt: 追踪 LDS 操作。
- 新增的计数器: 此外还增加了 ASYNCcnt (异步加载/存储), TENSORcnt (张量操作) 等新计数器,使硬件能更精细地管理依赖关系,避免不必要的停顿。