架构演进:从GPU到NPU再到存算一体
大家好,我是你们的老朋友。今天咱们聊一个硬核话题——AI芯片的架构演进。说实话,我在这个行业摸爬滚打了十几年,亲眼看着芯片架构从通用走向专用,从计算走向存储融合。这条路,走得真不容易。
你想想看,十年前我们还在用CPU跑神经网络,那叫一个慢。后来GPU横空出世,大家欢呼雀跃。再后来,NPU来了,专门为AI而生。现在呢?存算一体开始冒头。每一步都是被需求逼出来的。
为什么GPU能成为AI计算的起点?
GPU最初是为图形渲染设计的。但巧了,图形渲染需要大量并行计算,神经网络也需要。这就叫「无心插柳柳成荫」。
我记得2012年,AlexNet在ImageNet上大杀四方,用的就是两块GTX 580。那时候我还在做视频编解码芯片,看到这个结果,第一反应是:「这玩意儿能火」。
GPU的优势在哪?说白了就三点:
- 大量ALU:一个GPU有几千个计算核心,可以同时处理成千上万个神经元
- 高带宽显存:HBM、GDDR,带宽动辄几百GB/s,喂得饱计算单元
- 成熟的生态:CUDA、cuDNN,你想要的库基本都有
但GPU有个致命问题——功耗太高。一块A100功耗400W,数据中心里几千块卡,电费吓死人。而且GPU的架构是为图形设计的,很多晶体管浪费在纹理单元、光栅化这些AI用不上的地方。
核心观点:GPU是AI计算的「过渡方案」,不是「终极方案」。它证明了并行计算的价值,但也暴露了通用架构的局限性。
NPU:为AI而生的专用芯片
NPU(神经网络处理器)的出现,说白了就是「把GPU里用不上的东西砍掉,把AI需要的做到极致」。
我参与过一款NPU的设计,当时团队争论最多的问题就是:「到底要不要支持浮点?」 最后我们选择了INT8量化,因为推理场景下,精度损失可以接受,但功耗和面积能省一大截。
NPU的典型架构长这样:
// 简化的NPU计算单元结构
MAC阵列(16x16)→ 累加器 → 激活函数 → 池化单元
↑
权重缓存(SRAM)
↑
数据流控制器(DMA + 指令调度)
NPU的核心设计理念:
- 数据流驱动:计算单元按数据流组织,减少中间结果搬运
- 近存计算:把SRAM放在计算单元旁边,降低访存延迟
- 量化友好:支持INT4/INT8/FP16混合精度
举个例子,华为的达芬奇架构,就是典型的NPU设计。它把矩阵计算、向量计算、标量计算分开,各司其职。我在项目中遇到过一个问题:「为什么NPU跑卷积很快,但跑Transformer就很慢?」 答案很简单——Transformer的注意力机制需要大量数据搬运,NPU的本地SRAM不够用了。
避坑指南:我曾经在NPU设计里过度追求MAC利用率,结果忽略了数据搬运的瓶颈。后来发现,很多场景下,「数据移动的功耗远大于计算本身」。所以,别只盯着算力,要关注数据流。
存算一体:打破「存储墙」的革命
说到存算一体,我得先讲一个概念——「存储墙」。什么意思呢?就是处理器算力增长很快,但内存带宽跟不上。你算得再快,数据拿不过来,白搭。
存算一体的思路很直接:「既然数据搬运是瓶颈,那就在存储里面直接算」。这就像你不再把书从书架上搬到桌子上看,而是直接在书架上翻书。
目前主流的存算一体技术分两类:
| 技术路线 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| 模拟存算一体 | 利用电阻变化(如RRAM)做乘法 | 功耗极低,密度高 | 精度受限,工艺不成熟 |
| 数字存算一体 | 在SRAM/DRAM中嵌入计算单元 | 精度高,兼容性好 | 面积开销大,设计复杂 |
我记得2020年,我参观过一家初创公司,他们用RRAM做了一个存算一体芯片。演示的时候,跑一个ResNet-50,功耗只有0.5W。我当时就震惊了——同样的任务,GPU要200W。虽然精度差了一点,但方向绝对正确。
注意:存算一体目前最大的问题是「精度和可靠性的平衡」。模拟计算受工艺波动影响大,同一个芯片不同批次,结果可能不一样。数字方案虽然稳定,但面积和成本上去了。所以,短期内存算一体更适合对精度要求不高的场景,比如边缘推理。
三种架构的对比与选择
说了这么多,咱们来做个对比。我习惯用一张图来总结:
从这张图能看出来,三种架构各有各的战场。GPU适合训练和通用场景,NPU在推理领域大放异彩,存算一体则在功耗敏感的边缘场景有巨大潜力。
我个人建议,选型的时候别盲目追新。如果你的产品需要高精度、快速迭代,GPU还是首选。如果功耗和成本敏感,NPU更合适。至于存算一体,嗯,再等两年,等工艺成熟了再说。
未来趋势:异构融合
最后聊点展望。我觉得未来的AI芯片不会是单一架构,而是「异构融合」。什么意思呢?就是一颗芯片上,既有GPU的通用计算单元,又有NPU的专用加速器,还有存算一体的近存计算模块。
我在一个项目中试过这种方案:用GPU做训练,NPU做推理,存算一体做预处理。效果还不错,但调度是个大问题。不同架构之间的数据同步、任务分配,搞不好就变成「三个和尚没水喝」。
所以,架构演进不只是硬件的事,软件生态、编译工具、调度框架都得跟上。这也是为什么我说,做AI芯片,「硬件是骨架,软件是灵魂」。
我的经验:如果你现在要设计一款AI芯片,别急着选架构。先想清楚你的应用场景——「数据量多大?精度要求多高?功耗预算多少?」 然后,再决定用GPU、NPU还是存算一体。很多时候,「够用就好」比「追求极致」更明智。
好了,这一章就聊到这儿。下一章咱们深入讲讲NPU的微架构设计,包括脉动阵列、数据流优化这些硬核内容。到时候见。