第二章 端侧推理硬件基础:CPU、GPU、NPU、DSP架构对比

做AI ISP端侧优化,第一件事不是调模型,而是搞清楚你的代码跑在什么上面。

我见过太多团队,模型在PC上跑得飞快,一上手机就卡成PPT。为什么?说白了,就是没摸透硬件的脾气。端侧芯片就那么点资源,你得知道每个计算单元擅长什么、不擅长什么,才能把活分对地方。

这一章,咱们就把CPU、GPU、NPU、DSP这四兄弟拉出来遛遛。看看它们各自什么路数,算力和带宽之间又该怎么权衡。

2.1 四大计算核心:各怀绝技

端侧SoC里,通常集成了多种计算单元。它们不是替代关系,而是互补关系。我习惯把它们比作一个团队里的不同角色:

  • CPU(中央处理器):团队里的“项目经理”。什么都能干,但干重活效率不高。
  • GPU(图形处理器):团队里的“绘图员”。擅长并行处理简单任务,尤其是矩阵运算。
  • NPU(神经网络处理器):团队里的“AI专工”。专门为神经网络推理设计的,效率最高。
  • DSP(数字信号处理器):团队里的“信号处理专家”。擅长流式数据和信号处理,功耗极低。

咱们先看一张架构对比图,心里有个全局印象:

端侧推理硬件架构对比总览 CPU 通用控制 & 标量运算 GPU 大规模并行 & 矩阵运算 NPU 神经网络专用加速 DSP 信号处理 & 低功耗计算 核心特性对比:并行度 × 能效比 × 灵活性 并行度 低 (2-8核) 高 (数百核) 极高 (MAC阵列) 中 (SIMD) 能效比 1x ~5x ~20x (最高) ~10x 灵活性 最高 (通用) 中 低 (固定) 中 典型适用场景:控制流 / 图形渲染 / AI推理 / 信号预处理 • CPU:任务调度、数据预处理、小模型兜底 • GPU:图像后处理、传统视觉算法、大矩阵运算 • NPU:CNN/Transformer推理、量化模型部署 • DSP:音频处理、传感器数据、低功耗唤醒

2.2 CPU:万金油,但别让它扛大梁

CPU是通用处理器,什么指令都能跑。但它的强项是控制逻辑和串行任务,不是大规模并行计算。

架构特点:

  • 通常2-8个大核 + 若干小核(big.LITTLE架构)
  • 每个核有独立的L1/L2缓存,共享L3缓存
  • 支持复杂的指令流水线和分支预测

在AI ISP中的角色:

  • 模型加载和初始化
  • 数据预处理(图像缩放、格式转换)
  • 后处理(NMS、阈值过滤)
  • 小模型兜底(比如简单的去噪CNN)
我的经验: 别指望CPU跑大模型。我曾经在一个项目里用CPU跑MobileNetV3,帧率只有5fps,换成NPU直接飙到30fps。CPU更适合做“指挥”而不是“干活”。

2.3 GPU:并行利器,但功耗是硬伤

GPU天生为图形渲染设计,核心数多、并行度高。用在AI推理上,主要是利用它的矩阵运算能力。

架构特点:

  • 数百个小型计算核心(如Adreno、Mali)
  • SIMT(单指令多线程)执行模型
  • 高带宽显存(但和CPU共享内存)

在AI ISP中的角色:

  • 传统图像处理算法(直方图均衡、滤波)
  • 大尺寸特征图运算
  • 部分卷积层加速
注意: GPU跑AI推理有两个坑。第一,功耗高,连续跑几分钟手机就发烫降频。第二,驱动开销大,小模型可能还没启动就结束了。我建议:模型小于1M参数,别上GPU。

2.4 NPU:AI推理的“专业选手”

NPU是专门为神经网络设计的。它内部有大量的乘加器(MAC)阵列,可以一条指令完成整个卷积操作。

架构特点:

  • 脉动阵列或SIMD架构
  • 硬件支持量化计算(INT8/INT4)
  • 专用片上缓存,减少内存访问

在AI ISP中的角色:

  • 主力推理引擎(去噪、超分、HDR融合)
  • 端到端模型部署
  • 实时视频流处理
核心优势: NPU的能效比是CPU的10-20倍。同样是跑一个去噪模型,CPU需要2W,NPU可能只要0.2W。对于手机这种电池敏感的设备,NPU是首选。

2.5 DSP:低功耗场景的“隐形冠军”

DSP经常被忽略,但它其实是个宝贝。它擅长流式数据处理,功耗极低。

架构特点:

  • 哈佛架构(指令和数据分开存储)
  • 硬件循环和SIMD指令
  • 极低功耗(通常<100mW)

在AI ISP中的角色:

  • 传感器数据预处理(RAW图处理)
  • 音频降噪
  • Always-on场景(低功耗唤醒)
避坑指南: 我曾经在一个语音唤醒项目里,一开始用CPU做特征提取,功耗降不下来。后来换成DSP,功耗直接降到原来的1/10。但DSP的编程模型比较特殊,需要专门的工具链支持。

2.6 算力与带宽:一对冤家

做端侧优化,光看算力没用。你得同时盯着带宽。

算力是“你能算多快”,带宽是“你能喂多快”。两者必须匹配,否则就是木桶效应。

咱们看一个典型场景:

// 假设一个卷积层
// 输入特征图: 112x112x64
// 权重: 3x3x64x128
// 输出特征图: 112x112x128

// 计算量
MACs = 112 * 112 * 64 * 128 * 3 * 3 = 924,844,032  // 约925M MACs

// 内存访问量
输入: 112 * 112 * 64 * 4 = 3,211,264 字节  // 约3.1 MB
权重: 3 * 3 * 64 * 128 * 4 = 294,912 字节  // 约0.3 MB
输出: 112 * 112 * 128 * 4 = 6,422,528 字节  // 约6.1 MB
总计: 约9.5 MB

假设NPU算力是2 TOPS(每秒2万亿次操作),带宽是10 GB/s。

  • 算力限制:925M MACs / 2 TOPS = 0.46 ms
  • 带宽限制:9.5 MB / 10 GB/s = 0.95 ms

你看,瓶颈在带宽。算力再高,数据喂不进去也是白搭。

关键结论: 端侧推理的瓶颈往往不是算力,而是带宽。我见过太多团队拼命优化算子,结果发现内存拷贝占了60%的时间。优化之前,先看看数据流。

2.7 如何选择:一张决策表

根据我的经验,不同场景下的硬件选择可以参考下表:

场景 推荐硬件 原因
小模型(<1M参数) CPU / DSP 启动快,功耗低,NPU驱动开销不划算
中等模型(1M-10M参数) NPU 能效比最高,适合实时处理
大模型(>10M参数) NPU + GPU NPU做主体,GPU辅助大尺寸特征图
Always-on场景 DSP 功耗极低,适合持续监听
传统图像处理 GPU / DSP 并行度高,适合像素级操作

2.8 实战建议:先摸底,再优化

拿到一块新芯片,我建议你先做三件事:

  1. 跑基准测试:用官方SDK跑几个标准模型,摸清算力和带宽的底牌。
  2. 分析数据流:用profiling工具看内存拷贝和计算的比例。如果内存拷贝超过30%,先优化数据布局。
  3. 量化先行:端侧推理,INT8是标配。先量化,再考虑其他优化。
一句话总结: CPU管调度,GPU管并行,NPU管推理,DSP管低功耗。算力决定上限,带宽决定下限。优化之前,先搞清楚你的瓶颈在哪。