嵌入式AI芯片基础:NPU架构概览、MAC阵列与数据流、片上存储层次、典型嵌入式AI芯片规格

好,咱们正式开始聊嵌入式AI芯片的硬件基础。这一节我打算把NPU的底裤扒开给你看看——别笑,搞硬件的人都知道,架构这东西,说白了就是“算力怎么来、数据怎么跑、存哪去”这三件事。我这些年调过不少NPU,踩过的坑能绕实验室三圈,今天就把这些经验揉碎了讲给你听。

NPU架构概览:它到底长啥样?

NPU,全称Neural Processing Unit,神经网络处理单元。你想想看,CPU是通用计算的万金油,GPU是图形并行的老大哥,那NPU呢?它是专门为神经网络推理而生的“偏科生”。

我个人习惯把NPU的架构分成三大块:

  • 计算引擎:核心是MAC阵列,干乘加运算的苦力活
  • 数据通路:负责把数据从存储搬到计算单元,再搬回去
  • 控制逻辑:调度整个流程,有点像工地上的包工头

我在项目中遇到过一种情况:芯片算力标称4TOPS,但跑实际模型时连1TOPS都跑不满。为什么?数据通路堵死了!所以你看,光堆MAC没用,数据流才是灵魂。

核心观点:NPU不是简单地把MAC阵列堆起来就完事。架构设计的本质,是在计算、存储、带宽三者之间找平衡。任何一个短板,都会让整个系统白费。

这里我画了一张NPU的典型架构图,帮你建立整体认知:

NPU 典型架构框图 DDR / SRAM 外部存储 系统总线 / NoC 全局缓冲 (Global Buffer) 片上存储层次 MAC 阵列 (Systolic Array) 计算引擎核心 权重固定 / 输出固定 / 行固定 数据流 累加器 + 激活函数 ReLU / SiLU / GELU 写回路径 控制逻辑 指令调度

MAC阵列与数据流:算力是怎么挤出来的?

MAC阵列,全称Multiply-Accumulate阵列。一个MAC单元做一次乘加:y = w * x + b。就这么个简单操作,重复几百万次,就是神经网络的全部。

但问题来了——怎么让这些MAC单元高效工作?这就涉及到数据流了。我见过三种主流的数据流方式:

数据流类型 核心思想 典型场景 我的评价
权重固定 权重存在MAC里不动,输入数据流过来 卷积层,权重复用度高 最常用,但权重要提前加载
输出固定 部分和留在MAC里,权重和输入流式传入 全连接层 适合大矩阵乘法
行固定 权重按行广播,输入按列广播 Systolic Array经典模式 Google TPU用的就是它

嗯,这里要注意。数据流的选择直接影响MAC利用率。我曾经调过一个项目,MAC阵列理论利用率85%,实际跑起来只有40%。查了半天,发现是数据流和存储层次没匹配好——权重加载太慢,MAC阵列一直在空转等数据。

避坑指南:我曾经在选数据流时只看MAC利用率,忽略了数据搬移开销。结果芯片做出来,功耗一半都花在搬数据上了。记住:数据流设计要同时考虑计算效率和数据复用率,缺一不可。

片上存储层次:数据到底该放哪?

存储层次这事,说白了就是“越快的越贵,越大的越慢”。嵌入式AI芯片的存储层次一般分三级:

  1. 寄存器文件:离MAC最近,容量最小(几十KB),延迟1-2个时钟周期
  2. 全局缓冲:片上SRAM,容量几百KB到几MB,延迟几个到十几个周期
  3. 外部存储:DDR或LPDDR,容量GB级,但延迟几十到上百个周期

你想想看,如果每次计算都要去外部DDR取数据,那MAC阵列大部分时间都在等。所以NPU设计的关键之一,就是怎么把数据尽量留在片上。

我个人的经验是:全局缓冲的大小,至少要能放下一次卷积操作的所有输入特征图和权重。否则就会频繁触发“数据换入换出”,性能直接腰斩。

注意:别以为片上SRAM越大越好。SRAM面积大、漏电高,芯片成本蹭蹭往上涨。我见过一个方案,全局缓冲做到4MB,结果芯片面积比预期大了30%,良率直接掉到60%。所以存储层次的设计,本质是面积、功耗、性能的三方博弈。

典型嵌入式AI芯片规格:看看市面上都在用啥

聊了这么多理论,咱们看看实际产品。我挑了三款有代表性的嵌入式AI芯片,给你做个对比:

参数 芯片A(中端) 芯片B(高端) 芯片C(低功耗)
算力 2 TOPS (INT8) 12 TOPS (INT8) 0.5 TOPS (INT8)
MAC阵列规模 64x64 128x128 32x32
全局缓冲 512 KB 2 MB 128 KB
外部存储 LPDDR4 4GB LPDDR5 8GB PSRAM 64MB
功耗 2W 8W 0.3W
典型应用 智能摄像头 自动驾驶域控 可穿戴设备

你看,从0.5 TOPS到12 TOPS,跨度很大。但核心架构逻辑是相通的:MAC阵列决定峰值算力,全局缓冲决定数据复用效率,外部存储决定模型规模上限。

我建议你在选型时,别光盯着TOPS看。先问自己三个问题:

  • 我的模型能完全放进全局缓冲吗?
  • MAC阵列的数据流和我的算子匹配吗?
  • 外部存储带宽够不够喂饱MAC阵列?

这三个问题想清楚了,芯片选型基本不会跑偏。

总结一下:嵌入式AI芯片的NPU,核心就是MAC阵列、数据流、存储层次这三板斧。搞懂了它们,你就掌握了硬件适配的底层逻辑。后面咱们讲SwiGLU适配时,你会发现所有优化手段,最终都落在这三个点上。


公众号:蓝海资料掘金营,微信deep3321