Appearance
NV 架构初解
几个问题引入一下:
1.GPU是怎么出现的
2.GPU如何转变为现在的计算卡
3.为什么大家都要搞AI,聊一下我的思考
Fermi前
GPU出现-图形渲染需求倒逼的硬件形态
两个核心原因:
1.图形计算往往是SIMT,同一逻辑在海量数据重复执行,每个像素的处理方式是基本相同的,我们需要多个简单计算单元同时算的场景,不需要每个都像cpu那么聪明。
2.早期的图形计算往往是固定功能图形管线实现,随着各种游戏画面等的渲染需求逐渐多样化,固定管线已经不能满足渲染需求,于是,可编程着色器逐一出现。
我们来简单了解下图形技术:
Ray Tracing(光线追踪):
RTX core 光线追踪(Turing架构引入的)效果如图:

光追本质就是模拟真实光线在场景中折射散射反射的物理过程,计算量巨大,需要每个像素发射并追踪多条光线。
所以实际上在早年,图形渲染无法满足这么大的计算量,没有足够的硬件支持,所以我们需要一种计算快,效果稍差的技术,即光栅算法。
Rasterizer(光栅算法)
光栅算法实际上就是在解决一个问题:怎么把三维空间的几何图形,转换成屏幕上一个个像素的颜色值。

与光追相反,光栅算法是从物体出发,看哪些像素跟物体有关,然后渲染这些像素点。
Tesla架构之前:
而**GPU(**Graphics Processing Unit)这个概念也随着1999年发布的NVIDIA GeForce 256,进入了大众视野,这张卡第一次把"顶点处理→光栅化→片元处理→输出"整条图形管线都搬到了显卡芯片上,才第一次真正把 CPU 从图形计算里解放出来。但是其管件本身仍然还是固定功能,开发者只能调参数,改不了算法。
2001年GeForce 3开始引入可编程Vertex Shader,随后Pixel Shader也逐渐可编程化,开发者能自己写代码控制渲染效果。
但这一代硬件有个问题:Vertex Shader和Pixel Shader是两块物理上完全分开的电路,专用且不通用。在不同场景下,可能一个跑满另外一个闲置,这种设计明显不好。
Tesla架构
Nvidia在Tesla架构里做了一件影响深远的事:把Vertex Shader和Pixel Shader这两种专用电路,统一成一种通用、可编程的计算单元(SP,Stream Processor),并新增了Geometry Shader(GS)阶段的编程支持。不管是顶点、几何还是像素任务,现在都丢给同一批SP,由调度器动态分配,解决了硬件资源浪费的问题。这一代GPU也第一次完整支持了C语言编程。
也是基于SP的出现,NV才有条件把GPU包装成通用计算平台对外开放,这就是CUDA(Compute Unified Device Architecture),其可以用类似于C写_global_函数(kernel核函数),通过<<<Grid,Block>>>语法一次性起成千上万个线程,指挥GPU上的SP去做和图形渲染毫无关系的通用数值计算——矩阵乘法、科学计算,后来的深度学习训练/推理,都是通过这套方式跑起来的。GPGPU也逐渐爆发。
从Fermi(费米)到Ampere(安培)
架构变化:
| 架构名称 | 中文名字 | 发布时间 | 纳米制程 | 核心参数 | 特点&优势 | 代表型号 |
|---|---|---|---|---|---|---|
| Fermi | 费米 | 2010 | 40nm, 30 亿晶体管 | 16 个 SM,每个 SM 包含 32 个 CUDA Cores,一共 512 CUDA Cores | 首个完整 GPU 计算架构,支持与共享存储结合的 Cache 层次 GPU 架构,支持 ECC GPU 架构 | Quadro 6000 |
| Kepler | 开普勒 | 2012 | 28nm, 71 亿晶体管 | 15 个 SMX,每个 SMX 包括 192 个 FP32+64 个 FP64 CUDA Cores | 游戏性能大幅提升,首次支持 GPU Direct RDMA 技术 | K80, K40M |
| Maxwell | 麦克斯韦 | 2014 | 28nm, 80 亿晶体管 | 16 个 SM,每个 SM 包括 4 个处理块,每个处理块包括 32 个 CUDA Cores+8 个 LD/ST Unit + 8 SFU | 每组 SM 单元从 192 个减少到每组 128 个,每个 SMM 单元拥有更多逻辑控制电路 | M5000, M4000GTX 9XX 系列 |
| Pascal | 帕斯卡 | 2016 | 16nm, 153 亿晶体管 | GP100 有 60 个 SM,每个 SM 包括 64 个 CUDA Cores,32 个 DP Cores | NVLink 第一代,双向互联带宽 160GB/s,P100 拥有 56 个 SM HBM | P100, P6000, TTX1080 |
| Volta | 伏特 | 2017 | 12nm, 211 亿晶体管 | 80 个 SM,每个 SM 包括 32 个 FP64+64 Int32+64 FP32+8 个 Tensor Cores | NVLink2.0,Tensor Cores 第一代,支持 AI 运算,NVSwitch1.0 | V100, TiTan V |
| Turing | 图灵 | 2018 | 12nm, 186 亿晶体管 | TU102 核心 72 个 SM,SM 重新设计,每个 SM 包含 64 个 Int32+64 个 FP32+8 个 Tensor Cores | Tensor Core2.0,RT Core 第一代 | T4,2080TI, RTX 5000 |
| Ampere | 安培 | 2020 | 7nm, 283 亿晶体管 | 108 个 SM,每个 SM 包含 64 个 FP32+64 个 INT32+32 个 FP64+4 个 Tensor Cores | Tensor Core3.0,RT Core2.0,NVLink3.0,结构稀疏性矩阵 MIG1.0 | A100, A30 系列 |
实际上,每一代架构的变化都有其产品需求,背景,或者上一代未解决的问题,NV也是基于此进行迭代的,我们来看一下重点变化。
Fermi架构

Fermi的架构目的主要还是为了图形计算,整个GPU内部有4个GPC(图形处理簇),单个GPC包含4个SM,一个光栅引擎。
共16 个 SM,每个 SM 包含 32 个 CUDA Cores,一共 512 CUDA Cores。



Pascal架构
NV提供了NVlink用来做单机多卡间GPU的点到点通信,带宽达到160GB/s
NVLink:

Volta架构
cuda core拆分为FPU和ALU,可以一条指令执行不同的计算
改进SIMT,每个线程有独立PC和Stack
Tensor core,针对深度学习提供张量核心,针对卷积计算进行加速
- 之前的GEMM 操作是通过编码成FMA,硬件层面则是把数据通过:寄存器-ALU-寄存器-ALU-寄存器(先乘再加)的方式来回搬运
- 每个Tensor core每周期执行4X4X4 GEMM,即64个FMA。


基本上AI的训练方式都是这种混合精度的计算,保证数据有效性。

一般编程接口wmma暴露给开发者的都是wrap级尺寸(16*16*16),会自动拆成(4*4*4)。
Fragment
每一步都涉及到很多数据搬运与存储,先从全局显存搬到共享内存,再到寄存器,再到tensor core,算完传回寄存器。
会根据硬件多级缓存,放到block,warp,thread里面,最终提供tensor core的核心计算
- nvlink第二代...
Hopper架构-为加速计算实现新的巨大飞跃
核心升级点

Hopper SM+Tensor Core



采用TSMC 4N工艺,频率提升了不少,满配的GH100有8个GPC,每个GPC有9个TPC,每个TPC内2个SM,累计144个SM,支持第四代NVLink和PCIe Gen5,支持6个HBM3 Stacks,DRAM带宽增加到3TB/s, L2Cache增加到了60MB

Tensor Core 支持 FP8 指令,支持 E4M3 (1个符号位,4 个指数位,3 个尾数位,范围小精度高)和 E5M2 (1个符号位,5个指数位,2个尾数位,范围大精度低)两种格式。中间累加值可以是 FP32 或者 FP16。

Transformer Engine
也就是动态调整浮点精度,自动在每一层网络里判断用FP8还是FP16/BF16、自动做scale/unscale

核心是用上一轮次的统计结果去预判本轮该用什么精度。
TMA

专门用来做大块张量数据在全局内存和共享内存之间搬运的硬件单元,搬运过程是异步的、不占用SM算力资源,为的是让计算单元和数据搬运可以完全并行,提升大矩阵运算时的数据供给效率。
Thread Block Cluster和 Distributed Shared Memory



核心是增添了线程块簇,分布式共享内存。把原本
Grid->Block->thraed 变成了 Grid->Thread Block Cluster->Bolck->thread
把SM通过L2 Cache数据交换 变成了可以通过 同一个线程块簇,SM to SM network的分布式共享内存方式,更短,速度更快。
是为了解决多kernel之间以生产者消费者方式通信,SM之间彼此的带宽需求也在增加,之前都是走L2Cache,这次的设计就是为了解决这个瓶颈。
BlackWell架构-为生成式AI和加速计算带来的突破性进步
核心升级点

Dual-Die设计


单裸芯片面积已经到达极限,想堆更多晶体管,一块已经装不下了,B系列卡直接把两块die合成一块GPU,通过NV-HBI(high bandwidth interface),带宽10TB/s,台积电4nm工艺,晶体管数量208billion,hopper(80billion)的2.6倍。
但是其单个die本身实际只提升了13.5%,增长乏力了,因此很多芯片厂也都把目光投向先进封装,通过高带宽把芯片连到一起实现算力增长。



虽然看起来是12GPC,共192SM,但是这个是物理设计上限,实际上最终量产出货的B100/B200 只用了其中80个SM,由于良品率和功耗控制,剩下的全都被关闭。
所以实际上B系列卡是80*2,共160个SM
B系列卡也是有问题的,比如SFU单元不足,在attention/moe里softmax指数运算在这里会存在瓶颈,所以B300翻倍了SFU的吞吐。
第二代Transformer Engine:FP4/FP6
Hopper的Transformer Engine只支持到FP8(E4M3/E5M2)。Blackwell把这套动态精度调整机制升级到了第二代,新增支持FP6和FP4两种更低精度格式。FP4意味着每个数字只用4个bit表示(大概是1个符号位+2或3个指数位+剩下给尾数),精度进一步压缩,但换来的是推理吞吐量大约是Hopper FP8的5倍左右。目前FP4更多是推理场景,通过缩放系数+微块缩放(micro-scaling,MXFP4/MXFP6)把一个张量切成很多小块block,每个小block单独算一个scale,只要block划分足够细,就能把block内部数值调整到fp4擅长的小范围,就能控制住误差。
第二代Transformer Engine干的事,就是自动决定"这一层、这一块数据,到底该用FP4、FP6、FP8还是更高精度",以及配套的scaling factor该设多少。它会持续做Range Analysis,如果发现某一块数据用FP4的精度损失会导致明显的推理效果下降(分布范围太宽),就自动升级用FP6或FP8去处理那部分。
支持的数据类型:

第五代NVLINK
Blackwell的NVLink升级到第五代,单GPU对外带宽1.8TB/s(是Hopper第四代NVLink 900GB/s的两倍),单GPU 1.8TB/秒的双向吞吐量是PCIe Gen5的14倍以上,可满足当前最复杂大型模型的高速通信需求。在包含72个GPU的NVLink域(NVL72)中,聚合带宽高达130TB/秒——这一数据传输量超过了整个互联网的流量。
支持的NVLink Domain规模扩大到最多576个GPU可以连在同一个高速互联域里。Hopper首次引入NVLink Switch打开了这条路,Blackwell则是把这条路继续往更大规模上铺。
RAS Engine:硬件级故障预测
Blackwell新增了一个专门的RAS Engine(Reliability, Availability, Serviceability),在硬件层面持续监测芯片的健康状态,能提前预测潜在的硬件故障(比如显存颗粒、互联链路的异常征兆),在真正报错宕机之前就发出预警,配合上层的集群调度系统提前把有风险的节点摘出去,减少大规模训练任务因为某张卡意外挂掉而整体中断重跑的成本。
机密计算升级:TEE-I/O
Hopper第一次把Confidential Computing做进硬件(TEE),但当时只保护GPU内部计算和显存,数据在GPU和CPU/网络之间传输的那段路径不算在保护范围内。
Blackwell升级为TEE-I/O,把加密和隔离范围扩展到了NVLink互联这条通路上,意味着多GPU协同训练时,GPU之间传输的数据也能保持硬件级加密。
rubin平台
提一嘴rubin平台,2026发布,FP4算力是B系列的2.5倍,SM数量在B系列上又加了50%,怎么做的呢
封装:把PCIe/NVLink/NVLinkC2C构成了一些独立的I/O Die 通过NV-HBI合封, 使得主计算Die有了更大的面积用于放置更多的SM
制程:4NP->3NP
带宽更大,更容易跑满算力。
第三代Transformer Engine优化。
rubin已经不叫架构了,叫平台,专为代理式AI和推理时代而构建,用于应对大规模多步骤问题求解和上下长文工作流。与Nvidia Blackwell架构产品相比,每瓦可提供更多token,并降低了每token成本
构建出了一套多芯异构的完整计算平台,多了DPU等
目前刚提出,投入市场还需时间,还需要解决电源,功率,网络,散热等问题,期待一手吧。
最后聊一下对AI的理解吧,之前一直在想为什么GPU放那不用也算成本,不是没有消耗么,以及一系列的问题。最近逐渐有了一些对AI问题的思考,主要是下面几点:
1.折旧,比如说安培架构的卡,距今也就6年,但是随着新架构提出,新精度新技术,老卡逐渐跟不上时代了,逐渐会被弃用,因此一定要尽可能把卡调度上,在折旧前就让其产生对应的价值。
2.算力利用率,我理解把卡调度给业务是一方面,如何让这些卡的算力都能尽可能用上又是一方面。是更进一步的指标了,做起来应该会有更多的价值。
3.对烤机的价值,烤机就是要验收这些新卡新增的硬件模块,这些模块可能怎么坏,怎么样的负载能把他烤出来,比如新增的FP4就要用benchfp去烤,比如带宽的变化,用p2pbench(nv bandwidth,membw),互联nccl,RAS我看目前烤机没有接,主要是靠ECC计数,温度上限来进行阈值判断。
4.为什么要建设AI,构建GPU集群呢。我理解其实是资本上的博弈,现在已经从互联网时代转为AI时代,为什么每个公司都要挤破头卷AI呢。不只是希望AI能产生多少价值,大家基本都是亏本在做。更多的是市场的AI占有,你不做AI,就没法站在牌桌上,面对这个上万亿的未来市场,做AI就是为了有这个上场的资格,投资者也更愿意往这里投钱,没有公司能接受赢家通吃,不做就会被淘汰。
参考文献:
https://zhuanlan.zhihu.com/p/1900569635532800833
https://github.com/Infrasys-AI/AISystem/blob/main/02Hardware/README.md