1. NPU基础认知:什么是NPU、NPU与GPU/CPU的区别、NPU的典型架构

各位同学好,我是你们的老王。在芯片行业摸爬滚打了十几年,从CPU到GPU再到NPU,我算是把这几类处理器都折腾了个遍。今天咱们聊聊NPU——这个近几年火得不行的人工智能芯片。

说实话,我第一次接触NPU是在2016年左右。那时候AI刚火起来,大家都在用GPU跑神经网络。我当时就在想:GPU虽然并行能力强,但毕竟是为图形渲染设计的,跑AI总有点「杀鸡用牛刀」的感觉。后来看到NPU的出现,我才觉得——嗯,这才是AI该有的样子。

1.1 什么是NPU?

NPU,全称Neural Processing Unit,神经网络处理器。说白了,就是专门为神经网络计算设计的芯片。

你可能会问:CPU也能跑神经网络,GPU也能跑,为什么还要专门搞个NPU?

我举个例子你就明白了。CPU就像个全能选手,什么活都能干,但干AI这种重复性极高的活,效率不高。GPU像个大力士,一次能扛很多活,但能耗高。NPU呢?它像个专业工匠,只干一件事——矩阵乘法和卷积运算,但干得又快又省电。

核心定义:NPU是一种专门针对神经网络推理和训练任务设计的处理器,通过硬件级别的优化,实现高吞吐、低延迟、低功耗的AI计算。

1.2 NPU与GPU/CPU的区别

我习惯用一个比喻来理解这三者的区别:

  • CPU:像大学教授,什么都会,但一次只能处理一两件事
  • GPU:像流水线工人,能同时处理很多简单任务,但每个任务都不复杂
  • NPU:像专业技师,只做一件事,但做得又快又好

咱们用表格来对比一下:

特性 CPU GPU NPU
设计目标 通用计算 图形渲染 神经网络
计算单元 几个到几十个核心 数千个CUDA核心 脉动阵列/乘加阵列
数据流 控制流驱动 SIMT(单指令多线程) 数据流驱动
典型功耗 15-150W 150-450W 1-50W(移动端)
适用场景 操作系统、数据库 游戏、科学计算 AI推理、模型部署

我在项目中遇到过这样一个场景:用CPU跑一个MobileNet的推理,一帧图像要200ms;换成GPU,降到20ms,但功耗飙到80W;最后用NPU,5ms搞定,功耗才2W。你想想看,在手机或者嵌入式设备上,这个差距意味着什么?

1.3 NPU的典型架构

NPU的架构设计,核心就两个关键词:脉动阵列和数据流。

1.3.1 脉动阵列(Systolic Array)

脉动阵列是NPU最核心的计算单元。我第一次看到这个架构时,觉得它特别像「多米诺骨牌」——数据像水流一样在阵列中流动,每个计算单元只做简单的乘加操作,但整个阵列协同起来,效率惊人。

下面我用一张SVG图来展示脉动阵列的工作原理:

脉动阵列(Systolic Array)数据流示意图 输入特征图 权重 PE PE PE PE PE PE PE PE PE 输出部分和 → 水平数据流(特征图) → 垂直数据流(部分和)

这张图展示的是一个3x3的脉动阵列。每个PE(Processing Element)就是一个乘加单元。数据从左边流入(特征图),从上边流入(权重),每个PE做完乘加后,把结果往下传。这种设计的好处是什么?

  • 数据复用率高:同一个数据可以被多个PE重复使用
  • 局部性极好:数据只在相邻PE间流动,不用频繁访问全局内存
  • 扩展性强:想要更大算力?把阵列做大就行

避坑指南:我曾经在一个项目中,把脉动阵列设计得特别大,想着算力越高越好。结果发现数据搬运成了瓶颈,大部分PE都在空转。后来我学乖了——阵列大小要和片上缓存、带宽匹配,不是越大越好。

1.3.2 数据流(Dataflow)

数据流是NPU的另一个核心概念。说白了,就是数据在芯片里怎么「流」。

我习惯把数据流分为三种类型:

  1. 权重固定(Weight Stationary):权重数据留在PE里不动,输入数据流过来。适合卷积层,因为权重复用率高。
  2. 输入固定(Input Stationary):输入数据留在PE里,权重流过来。适合全连接层。
  3. 输出固定(Output Stationary):部分和结果留在PE里,不断累加。适合深度可分离卷积。

你可能会问:哪种最好?

说实话,没有绝对的好坏。我在实际项目中,通常会根据网络结构动态切换数据流模式。比如MobileNet的深度可分离卷积,用输出固定模式;而ResNet的标准卷积,用权重固定模式更合适。

1.4 小结

这一章我们聊了NPU是什么,它和CPU、GPU的区别,以及它的核心架构——脉动阵列和数据流。这些都是后面章节的基础,一定要理解透。

我个人觉得,理解NPU最好的方式就是动手。下一章我们会搭建一个简单的NPU模拟器,到时候你就能亲手感受数据在脉动阵列中流动的感觉了。

注意:NPU虽然强大,但不是万能的。如果你的算法里有很多分支判断、动态形状,NPU反而可能不如CPU。选型时一定要看场景。

想要更多资料,联系可可