ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

RTX5090 GB202芯片级拆解:21760个CUDA核心如何组织与算力实现

RTX5090 GB202芯片级拆解:21760个CUDA核心如何组织与算力实现

1. 从一张晶圆到21760个核心:GB202的物理真相

1.1 为什么非要“数核心”这件事值得较真

拿到RTX5090这颗GPU,绝大多数人的第一反应是跑个分、看个帧率,然后发一句“强无敌”就完事了。但如果你真的想知道它的算力从哪来,光看跑分是看不出来的。跑分只能告诉你结果,不能告诉你原因。真正决定一张卡上限的,是它芯片里面到底塞了多少东西、这些东西怎么排列、数据怎么在它们之间流动。

GB202这颗核心,官方标称21760个CUDA核心。这个数字听起来很抽象,我换个说法:如果把每个CUDA核心比作一个工人,那GB202就是一座同时容纳两万多名工人的超级工厂。但工厂的产能不只取决于工人数量,还取决于车间怎么划分、流水线怎么设计、原材料怎么运进来、成品怎么送出去。所以“数核心”只是第一步,真正有价值的是搞清楚这些核心是怎么被组织起来的,以及这种组织方式对实际算力意味着什么。

我之所以对这件事特别感兴趣,是因为在实际工作中经常遇到一种情况:两张卡理论算力差不多,但跑同一个模型或者同一个渲染任务,效率能差出百分之三四十。问题往往就出在芯片的内部结构上,而不是核心数量本身。所以这篇文章我会从物理结构讲到逻辑架构,再落到实际算力表现,把GB202这颗芯片拆开来看。

1.2 GB202的制造背景与工艺选择

GB202采用的是台积电4N定制工艺,这个“4N”不是随便起的名字,它是台积电5nm工艺的一个增强版本,专门为高性能计算场景做了优化。具体优化了什么?主要是漏电控制和频率响应。简单说,就是在同样功耗下能跑到更高的频率,或者在同样频率下功耗更低。

为什么不用更先进的3nm?这里有一个很现实的考量。3nm工艺在2024年到2025年这个时间节点上,良率和成本都还没有达到大规模量产消费级GPU的理想状态。GB202的晶圆面积大约在750平方毫米左右,这个面积下如果用3nm,单片晶圆能切出来的合格芯片数量会非常少,成本会高到离谱。4N工艺虽然听起来没那么“先进”,但它的成熟度保证了产能和成本可控。

注意:工艺节点数字(比如5nm、4N、3nm)并不直接等于性能。它更多影响的是功耗、漏电和密度。实际性能还要看架构设计和频率策略。

从物理尺寸来看,GB202的晶体管数量达到了惊人的程度。具体数字官方没有完全公开,但根据晶圆面积和4N工艺的密度推算,大概在900亿到1000亿个晶体管之间。这个数量级意味着什么?你手机里那颗旗舰芯片大概在150亿到200亿晶体管左右,GB202是它的五倍以上。

1.3 从晶圆到芯片:3D拆解到底拆的是什么

所谓“3D芯片级拆解”,不是真的拿一把刀把芯片切开,而是通过多层扫描和逐层剥离的方式,把芯片的内部结构一层一层地呈现出来。具体做法是:先用X射线或者电子显微镜对芯片进行无损扫描,获取整体结构;然后用离子束逐层剥离,每剥离一层就拍一次高分辨率图像;最后把这些图像叠加起来,重建出三维结构。

这个过程能看到的层次包括:最顶层的金属互连层、中间的晶体管层、底层的衬底。金属互连层就像城市里的道路网,负责把数据从一个地方运到另一个地方。晶体管层就是真正的“工人”,负责执行计算。衬底则是地基,提供物理支撑和散热通道。

我实际看过一些拆解报告,最直观的感受是:GPU的金属互连层极其复杂,层数多、密度高。这也是为什么GPU的功耗和发热主要集中在数据搬运上,而不是计算本身。有研究数据表明,在一些大规模计算任务中,超过60%的能耗花在了数据在芯片内部和芯片之间的搬运上。所以理解GB202的算力,不能只看CUDA核心数量,还要看它的互连设计。

2. 21760个CUDA核心是怎么排布的

2.1 GPC、TPC、SM:三级组织架构

GB202的21760个CUDA核心不是平铺在芯片上的,而是按照GPC(图形处理集群)、TPC(纹理处理集群)、SM(流式多处理器)三级结构组织起来的。

先看最顶层。GB202一共有12个GPC。每个GPC是一个相对独立的计算单元,拥有自己的调度器和缓存资源。你可以把GPC理解成一个“分厂”,每个分厂有自己的管理层和仓库,分厂之间通过高速互连通信。

每个GPC下面包含若干个TPC。TPC是一个中间层级的组织单位,主要作用是管理纹理单元和部分调度逻辑。在GB202中,每个GPC包含6到8个TPC,具体数量取决于GPC的配置。

最底层是SM。每个TPC包含2个SM,每个SM是真正执行计算的基本单元。GB202的每个SM包含128个CUDA核心。算一下:12个GPC乘以平均7个TPC乘以2个SM乘以128个CUDA核心,大概就是21760这个数字。

这种三级架构的设计逻辑是什么?核心思路是“分而治之”。如果所有核心都平铺在一起,调度器要管理的单元太多,延迟会很高。通过GPC和TPC的分层,调度器只需要管理到GPC级别,每个GPC内部再自行管理TPC和SM,大大降低了调度复杂度。

2.2 每个SM内部的精细结构

一个SM里面不只有128个CUDA核心,还有一大堆配套单元。具体来说,每个SM包含:

  • 128个CUDA核心,分为4个处理块,每个处理块32个核心
  • 4个纹理单元
  • 1个光追核心(RT Core)
  • 4个张量核心(Tensor Core)
  • 256KB的寄存器文件
  • 128KB的L1缓存/共享内存

这里有一个关键点:CUDA核心虽然多,但它们不是独立工作的。每32个核心组成一个“warp”,warp是调度的基本单位。同一个warp内的32个核心必须执行相同的指令,但可以处理不同的数据。这就是SIMT(单指令多线程)架构的核心思想。

为什么是32?因为32是一个在调度效率和灵活性之间取得平衡的数字。太小了,调度开销大;太大了,遇到分支跳转时浪费严重。32这个数字是经过多年实践验证的最优解之一。

实操心得:在写CUDA程序时,尽量让同一个warp内的线程执行相同的代码路径。如果warp内出现分支(比如if-else),两条路径会被串行执行,性能直接减半。这是新手最容易踩的坑之一。

2.3 核心数量与算力的非线性关系

很多人以为CUDA核心数量和算力是线性关系,21760个核心就是10880个核心的两倍算力。实际完全不是这样。

算力受限于多个因素:核心数量、频率、内存带宽、缓存命中率、调度效率。其中任何一个环节成为瓶颈,增加核心数量都无法带来等比例的算力提升。

举个具体例子。假设一个计算任务需要频繁访问显存,而显存带宽是固定的。这时候你增加再多CUDA核心,它们也只能排队等数据,算力提升非常有限。这就是所谓的“内存墙”问题。

GB202在缓解内存墙方面做了几件事:一是增大了L2缓存,二是采用了更宽的显存位宽,三是优化了数据压缩算法。但这些手段只能缓解,不能根治。所以在实际应用中,不同任务的算力表现差异很大。有的任务能跑到理论峰值的80%以上,有的只能跑到30%到40%。

3. 算力实现的关键路径:从晶体管到实际性能

3.1 频率与电压的平衡术

GB202的核心频率不是固定的,而是动态变化的。在轻负载时,频率可以降到很低以节省功耗;在重负载时,频率会提升到最高。这个动态调节的过程叫做DVFS(动态电压频率调节)。

频率和电压的关系不是线性的。大致上,功耗和电压的平方成正比,和频率成正比。所以提升10%的频率,可能需要提升15%到20%的电压,功耗会增加30%以上。这就是为什么超频的边际收益越来越低。

GB202的加速频率大概在2.5GHz到2.8GHz之间,具体取决于散热条件和功耗限制。在这个频率下,每个CUDA核心每秒钟可以执行大约2.5亿次浮点运算。21760个核心加起来,理论浮点算力大概在100 TFLOPS以上(FP32)。

但这个数字是理论峰值,实际能跑到多少,取决于任务类型和数据局部性。

3.2 张量核心与AI算力的关系

现在说到AI算力,就不得不提张量核心。GB202的每个SM包含4个张量核心,总共12个GPC乘以7个TPC乘以2个SM乘以4个张量核心,大概有672个张量核心。

张量核心专门用于矩阵乘法运算,而矩阵乘法是深度学习中最核心的操作。一个张量核心可以在一个时钟周期内完成一个4x4矩阵的乘加运算,而同样的事情如果让CUDA核心来做,需要几十个周期。

这就是为什么AI算力(通常以TOPS为单位)远高于通用浮点算力(TFLOPS)。因为TOPS统计的是整数运算或者低精度浮点运算,而且主要靠张量核心完成。

但这里有一个常见的误解:TOPS高不代表实际AI推理就快。实际推理速度还取决于内存带宽、模型结构、批处理大小等因素。一个TOPS很高但内存带宽不足的卡,在大模型推理时可能反而不如一个TOPS稍低但带宽充足的卡。

3.3 显存子系统对算力的制约

GB202搭配的是GDDR7显存,位宽大概是512位,等效频率在30Gbps以上。算一下带宽:512位除以8等于64字节,乘以30Gbps等于1920GB/s。这个带宽非常恐怖,但仍然是整个系统的瓶颈之一。

为什么?因为GPU的计算速度增长远快于内存带宽增长。过去十年,GPU浮点算力增长了大概30倍,但内存带宽只增长了不到10倍。这个差距就是“内存墙”。

为了缓解这个问题,GB202采用了更大的L2缓存。L2缓存的作用是把经常访问的数据放在离核心更近的地方,减少对显存的访问。GB202的L2缓存大概在128MB左右,比上一代翻了一倍。

但缓存不是万能的。如果数据访问模式没有局部性(比如随机访问一个大数组),缓存命中率会很低,这时候显存带宽就成了硬瓶颈。

注意:在优化GPU程序时,第一优先级永远是提高数据局部性。让相邻的线程访问相邻的内存地址,这样缓存才能发挥作用。这个原则比任何其他优化技巧都重要。

4. 实际算力测试与常见问题排查

4.1 如何正确测量一张卡的算力

测量GPU算力不能只看一个数字。我一般会从四个维度来测:

第一个维度是纯浮点算力。用矩阵乘法或者FFT这类计算密集型任务来测,看能跑到理论峰值的百分之多少。如果低于70%,说明要么代码有问题,要么散热有问题。

第二个维度是内存带宽。用大规模数组拷贝来测,看实际带宽和理论带宽的差距。正常情况下应该在80%到90%之间。

第三个维度是AI推理算力。用常见的模型比如ResNet或者BERT来测,看每秒能处理多少样本。这个数字和TOPS的比值能反映张量核心的利用效率。

第四个维度是实际应用表现。跑一个真实的渲染任务或者训练任务,看帧率或者每秒迭代次数。这个最能反映实际体验。

4.2 常见问题速查表

问题现象可能原因排查方法解决思路
算力远低于预期功耗限制查看GPU-Z的功耗曲线提高功耗上限或改善散热
算力波动大温度过高导致降频监控核心温度清理灰尘或更换散热
AI推理速度慢内存带宽瓶颈测实际带宽减小批处理或优化数据布局
多卡效率低互连带宽不足测卡间通信速度检查互连配置
特定任务异常慢分支发散严重用profiler分析重构代码减少分支

4.3 几个容易踩的坑

第一个坑是只看TOPS不看实际。有些卡TOPS标得很高,但那是特定精度下的理论值。实际跑你需要的精度时,可能只有标称值的一半。

第二个坑是忽略散热。GB202的功耗很高,如果机箱风道不好,跑几分钟就会降频。我实测过,同样的卡在开放平台和闷罐机箱里,持续算力能差20%以上。

第三个坑是驱动版本。新卡刚发布时驱动往往不完善,更新几个版本后算力可能会有明显提升。所以拿到新卡先更新到最新驱动。

第四个坑是电源不足。GB202的瞬时功耗可能远超标称值,如果电源余量不够,会出现莫名其妙的降频甚至重启。建议电源额定功率至少是显卡功耗的两倍。

5. 从GB202看GPU算力的未来走向

5.1 堆核心还是堆效率

从GB202的设计可以看出一个趋势:单纯堆CUDA核心的收益越来越低。从上一代到这一代,核心数量增加了大概30%,但实际算力提升在不同任务中差异很大,有的任务提升明显,有的几乎没变。

这说明GPU设计正在从“堆核心”转向“提效率”。具体手段包括:增大缓存、优化调度、专用单元(比如张量核心和光追核心)。未来的GPU可能不会再有大幅度的核心数量增长,而是通过架构优化来提升实际算力。

5.2 芯片级拆解对普通用户的意义

你可能会问:我又不设计芯片,知道这些有什么用?

用处在于:当你理解了一颗芯片的内部结构,你就能更好地判断它的实际表现,而不是被营销数字忽悠。比如你知道张量核心和CUDA核心是两套不同的单元,就不会把TOPS和TFLOPS混为一谈。你知道内存带宽是瓶颈,就会在优化程序时优先考虑数据局部性。

这些知识在实际工作中非常有用。我见过太多人花大价钱买了高TOPS的卡,结果跑自己的任务时发现还不如便宜卡快,就是因为没搞清楚自己的任务瓶颈在哪里。

5.3 关于算力接入方式的思考

最近看到有人在讨论“只能用接入API的方式使用算力吗”这个问题。我的看法是:API接入和本地算力各有适用场景。

API接入的优势是灵活、免维护、按需付费。适合任务量波动大、不想投入硬件维护成本的场景。但劣势也很明显:数据要传到外部、延迟不可控、长期成本可能更高。

本地算力的优势是数据可控、延迟低、长期成本固定。适合任务量大且稳定、对数据隐私要求高的场景。劣势是前期投入大、维护麻烦、升级不灵活。

实际选择时,我一般建议:先用API跑通流程,验证需求真实存在且量足够大之后,再考虑本地部署。不要一上来就买卡,很容易买错。

5.4 我个人在实际操作中的体会

折腾了这么多年的GPU,我最大的体会是:不要迷信参数,要相信实测。参数只是参考,实际表现才是真理。同一颗芯片在不同散热、不同驱动、不同任务下的表现可以差很多。

另外,理解芯片结构不是为了炫技,而是为了在遇到问题时能快速定位。比如你知道数据要经过L2缓存才能到核心,那当缓存命中率低时,你就知道该往哪个方向优化。这种“知道为什么”的能力,比“知道怎么做”更有价值。

最后分享一个小技巧:如果你手头有卡,不妨跑一个简单的矩阵乘法,然后逐步增大矩阵尺寸,观察算力变化。你会看到算力先上升后下降,上升是因为并行度增加,下降是因为缓存装不下了。这个实验能让你直观感受到缓存和带宽对算力的影响,比看任何文章都管用。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进