第1章 NPU架构概述
大家好,我是你们这门课的老朋友。今天咱们先不急着撸代码,而是把NPU这玩意儿从头捋一遍。你可能会问:CPU、GPU我熟,NPU到底是个什么角色?嗯,别急,这一章我带你把它看透。
1.1 NPU发展历程:从专用协处理器到AI算力核心
NPU这个概念,其实十年前就有了。我记得2015年左右,我还在做嵌入式芯片,那时候跑个轻量级CNN都得靠DSP硬扛,功耗高、效率低。后来业界发现,AI推理的运算模式——大量矩阵乘法和卷积——跟传统CPU、GPU的通用流水线不太对付。
于是,专门为神经网络设计的处理器就冒出来了。最早的一批NPU,比如某司的NPU IP,说白了就是个乘加阵列加上简单控制逻辑。但很快大家发现,光有算力不行,数据搬运和内存管理才是真正的瓶颈。这也是为什么我后来一头扎进NPU内存子系统,一干就是好多年。
- 萌芽期(2014-2017):NPU作为协处理器,主要做定点加速,内存通常只有几百KB。
- 爆发期(2018-2021):智能终端、自动驾驶需求井喷,NPU开始集成大容量SRAM甚至专用DDR通道。
- 成熟期(2022-至今):大模型时代,NPU成为SoC中的算力核心,内存层次越来越复杂,调度策略直接决定推理效率。
1.2 NPU vs GPU vs CPU —— 三兄弟各有脾气
很多人觉得NPU就是低配版GPU,其实不然。你想想看,GPU是为图形渲染设计的,天生适合大规模并行,但它的调度粒度粗,控制逻辑相对简单。而NPU呢?它专门为神经网络层定制,数据复用模式、激活函数、量化流水线都是硬化的。
| 维度 | CPU | GPU | NPU |
|---|---|---|---|
| 核心设计哲学 | 低延迟、通用 | 高吞吐、图形并行 | 数据流、AI专用 |
| 典型算力(INT8) | ~1 TOPS | ~100 TOPS | ~10-1000 TOPS |
| 片上内存 | L1/L2/L3 cache | L1/shared mem/VRAM | SRAM + 专用缓冲区 |
| 调度粒度 | 指令级 | 线程束/wavefront | 张量/层/子图 |
| 典型功耗 | 15-150W | 150-450W | 0.5-75W |
我在项目中遇到过不少团队,拿着GPU的优化思路直接往NPU上套,结果内存带宽跑不满,延迟反而更高。说白了,NPU的数据流引擎决定了你必须按它的节奏来——先规划好张量在SRAM里的布局,再考虑计算。
1.3 NPU在AI推理中的核心地位
现在你打开手机,人脸解锁、语音识别、实时翻译……背后几乎都是NPU在撑腰。为什么不用GPU?因为NPU能效比高出一大截,而且推理延迟确定性更强。我调过不少推理引擎,在NPU上做一次ResNet-50推理,延迟抖动可以控制在5%以内,GPU上经常因为驱动调度飘到20%。
但核心地位也意味着核心挑战:
- 内存墙:模型越来越大,片上SRAM永远不够用,怎么搬数据、怎么复用,是门艺术。
- 算子碎片化:各种自定义算子,NPU不一定原生支持,需要编译器做内存重排。
- 多任务干扰:同时跑多个推理流,资源怎么切?我见过因为内存冲突导致NPU直接hang死的案例……
上面这张图是我自己画的一个NPU内部数据流简图。你看,从DDR到片上SRAM,再到计算阵列,每一步都涉及内存布局、带宽分配、地址映射。后面的章节,我会把这些细节一个个掰开揉碎讲给你听。
好,第一章就聊到这儿。NPU的轮廓你应该心里有数了。下一章我们直接钻进它的内存层次结构,看看那些SRAM、Cache、缓冲区到底怎么协同工作。到时候我会拿一个真实芯片的memory map出来分析,保证过瘾。