3. SoC基础架构
做SoC选型,最头疼的往往不是CPU核怎么挑,而是AI算力单元怎么配。NPU、GPU、DSP,这三兄弟看着都能做AI,但脾气秉性完全不同。选错了,要么性能跑不满,要么功耗压不住,要么软件生态把你拖死。
我个人习惯,拿到一个AI芯片需求,先不看TOPS,先问三个问题:跑什么模型?实时性要求多高?功耗预算多少?这三个问题定下来,选型方向基本就锁死了。
3.1 三大AI算力单元的本质差异
先看一张对比表,把三者的定位说清楚。
| 维度 | NPU | GPU | DSP |
|---|---|---|---|
| 设计哲学 | 专用加速器,为神经网络定制的数据流架构 | 通用并行处理器,SIMT/SIMD架构 | 信号处理专用,VLIW/SIMD架构 |
| 典型应用 | CNN/RNN/Transformer推理,端侧AI | 训练、图形渲染、通用并行计算 | 语音处理、传感器融合、轻量级AI |
| 算力密度 | 最高(TOPS/mm²) | 中等 | 较低 |
| 灵活性 | 低(算子固化) | 高(可编程性强) | 中(指令集可编程) |
| 功耗效率 | 最高(TOPS/W) | 中等 | 较高 |
| 软件生态 | 厂商绑定,工具链封闭 | CUDA/OpenCL,生态成熟 | TI/CEVA等,相对小众 |
这张表怎么看?我举个例子。你在做智能音箱的SoC选型,主芯片里集成一个NPU跑语音唤醒,功耗只有几十毫瓦,TOPS/W能到10以上。但如果你用GPU跑同样的任务,功耗直接飙到瓦级,电池扛不住。反过来,你要做自动驾驶域控制器,需要同时跑多个大模型,还要做传感器融合,NPU的灵活性就不够了——算子固化,新模型一改,硬件就得重新流片。这时候GPU或者可编程的DSP阵列反而更合适。
3.2 TOPS与TFLOPS:算力指标的正确打开方式
很多刚入行的工程师,看到芯片手册上写着“XX TOPS”就觉得性能很强。其实这里面坑很多。我简单拆解一下。
3.2.1 TOPS(Tera Operations Per Second)
TOPS衡量的是整数运算能力,通常指INT8精度。1 TOPS = 每秒一万亿次操作。
计算公式很简单:
TOPS = 频率(MHz) × MAC单元数量 × 2 × 精度系数 / 10^6
注意那个“×2”——一次乘加操作(MAC)算两次操作(一次乘法+一次加法)。有些厂商会在这里做文章,把MAC数直接当操作数报,虚标20%-50%。
3.2.2 TFLOPS(Tera Floating-point Operations Per Second)
TFLOPS衡量浮点运算能力,常见于GPU和训练芯片。FP32、FP16、BF16的TFLOPS值差异很大。
TFLOPS = 频率(GHz) × 核心数 × 每周期浮点操作数
举个例子,某款GPU标称20 TFLOPS(FP32),但切换到FP16时,理论算力可以翻倍到40 TFLOPS。为什么?因为FP16的位宽只有FP32的一半,同样带宽下可以塞两倍的数据。
3.2.3 TOPS vs TFLOPS:什么时候看哪个?
| 场景 | 推荐指标 | 原因 |
|---|---|---|
| 端侧推理(手机、IoT) | TOPS(INT8) | 推理模型量化后以INT8为主,TOPS更贴近实际 |
| 云端训练 | TFLOPS(FP32/BF16) | 训练需要高精度浮点,TFLOPS更准确 |
| 自动驾驶(混合精度) | 两者都看 | 感知用INT8推理,规划用FP32计算 |
| 语音/音频处理 | TOPS + MFLOPS | 模型小,但实时性要求高,看绝对算力不如看延迟 |
3.3 选型逻辑:从需求到指标的映射
我总结了一套选型流程,每次做项目都按这个走,基本没出过大错。
- 定模型:明确要跑的神经网络类型(CNN/RNN/Transformer)和模型大小(参数数量、层数)。
- 定精度:推理用INT8还是FP16?训练用FP32还是BF16?精度决定了算力指标选TOPS还是TFLOPS。
- 定帧率/吞吐:每秒处理多少帧?或者多少路视频流?这决定了最低算力需求。
- 定功耗:散热条件允许多少瓦?这决定了算力密度(TOPS/W)的下限。
- 定生态:团队熟悉CUDA还是厂商自研工具链?这决定了开发周期和风险。
所需TOPS ≈ 模型MAC数 × 帧率 × 1.2(冗余系数)
比如一个MobileNetV2有3亿MAC,跑30fps,粗估需要 0.3G × 30 × 1.2 ≈ 10.8 GOPS。选个12-15 GOPS的NPU就够用了。别一上来就盯着100 TOPS的芯片看,那是给大模型用的。
3.4 知识体系结构图
下面这张图把本章的核心逻辑串起来了。你可以把它当作选型时的“思维导图”。
3.5 实战中的几个常见误区
最后聊几个我踩过的坑,希望能帮你省点流片费。
- 误区一:TOPS越高越好。 其实很多场景下,算力利用率比峰值TOPS更重要。我见过一款NPU,标称50 TOPS,但实际跑ResNet-50只有30%的利用率,还不如另一款20 TOPS但利用率80%的芯片。
- 误区二:GPU能搞定一切。 GPU确实灵活,但功耗和面积代价很大。在端侧设备里,用GPU跑AI推理,性价比远不如NPU。除非你需要同时做图形渲染和AI计算,否则别硬上GPU。
- 误区三:DSP已经过时了。 其实在语音、音频、传感器融合这些低延迟场景,DSP依然有不可替代的优势。它的指令集可以精确控制每个时钟周期,延迟能做到微秒级,NPU和GPU都做不到。
- 误区四:只看算力不看带宽。 算力再高,内存带宽不够也是白搭。我做过一个项目,NPU的TOPS很高,但DDR带宽只有12.8GB/s,结果模型一跑,数据搬不过来,算力利用率不到40%。
嗯,AI算力单元的选型,说到底就是一场“算力、灵活性、功耗、生态”的四角博弈。没有标准答案,只有最适合你项目需求的方案。下次拿到芯片手册,别只看封面上的大数字,翻到后面看看利用率、带宽、工具链,那才是真正决定项目成败的细节。