3. NPU硬件架构概览
NPU(Neural Processing Unit)作为面向AI推理与训练加速的专用处理器,其硬件架构与传统CPU、GPU有本质区别。CPU追求低延迟下的通用计算,GPU追求高吞吐的并行渲染与通用计算,而NPU则围绕“数据流驱动计算”这一核心理念设计,将矩阵乘加运算、激活函数、池化、归一化等神经网络算子映射到专用的计算单元与存储结构中。理解NPU硬件架构,需要从计算单元(算力从哪里来)、存储层次(数据放在哪里)、控制流(指令如何调度)、数据通路(数据如何流动)四个维度切入。本章将系统拆解NPU的基本组成,并给出工程视角下的设计判断方法与实战案例。
上图展示了NPU硬件架构的核心组成与数据/控制流向。从宏观视角看,NPU由控制单元统一调度,计算单元阵列负责执行矩阵乘加与向量运算,片上存储层次(寄存器文件、共享内存、权重缓存、激活缓存)为计算单元提供高带宽数据供给,外部存储接口(DRAM/HBM/PCIe)则负责与主存或主机进行数据交换。下面逐一深入剖析每个模块的设计原理与工程要点。
3.1 计算单元:算力的物理载体
核心原理:NPU的计算单元以MAC(Multiply-Accumulate)阵列为核心,辅以ALU、向量单元和池化单元。MAC阵列是NPU的“发动机”,其设计目标是在单个时钟周期内完成大量乘加运算。以典型的8x8 MAC阵列为例,每个MAC单元包含一个乘法器和一个加法器,8x8阵列单周期可完成64次乘加运算。实际芯片中,MAC阵列规模从几十到几千不等,例如华为昇腾310内置8个AI Core,每个AI Core包含4096个MAC单元,单周期可完成4096次乘加。
判断方法:评估计算单元性能时,不能只看MAC数量,还需关注以下指标:
- 算力密度:TOPS/W(每瓦特每秒万亿次运算),反映能效比。
- 数据精度:INT8、FP16、BF16、FP32等,不同精度下MAC阵列的吞吐量不同。
- 利用率:实际运行中MAC阵列的空闲率,受数据供给和调度策略影响。
3.2 存储层次:数据供给的“粮草系统”
核心原理:NPU的存储层次设计遵循“局部性原理”,通过多级缓存减少对DRAM的访问。典型层次为:寄存器文件(RF)→ 共享内存(SMEM)→ 权重缓存/激活缓存 → 外部DRAM。寄存器文件容量最小(几十KB),但读写延迟最低(1-2个时钟周期);共享内存容量中等(几百KB到几MB),延迟约10-20个周期;外部DRAM容量最大(几GB),但延迟高达数百周期。
操作流程:数据在存储层次中的流动遵循以下步骤:
- DMA控制器从DRAM加载权重和输入特征图到片上缓存。
- 数据从共享内存/权重缓存分发到寄存器文件。
- MAC阵列从寄存器文件读取操作数,计算结果写回寄存器文件或共享内存。
- 中间结果在共享内存中暂存,供后续算子使用。
- 最终结果通过DMA写回DRAM。
| 存储层级 | 典型容量 | 访问延迟 | 带宽 | 主要用途 |
|---|---|---|---|---|
| 寄存器文件 | 16KB - 128KB | 1-2周期 | 极高(>10TB/s) | 操作数暂存 |
| 共享内存 | 256KB - 8MB | 10-20周期 | 高(2-8TB/s) | 中间结果、数据重排 |
| 权重缓存 | 512KB - 16MB | 20-50周期 | 中高(1-4TB/s) | 静态权重驻留 |
| 激活缓存 | 256KB - 4MB | 20-50周期 | 中高(1-4TB/s) | 特征图行缓冲 |
| 外部DRAM | 4GB - 64GB | 200-500周期 | 低(50-200GB/s) | 长期存储 |
3.3 控制流:指令调度与同步机制
核心原理:NPU的控制流分为两种模式:指令驱动和数据流驱动。指令驱动模式类似CPU,通过取指-译码-执行流水线控制计算单元;数据流驱动模式则通过数据就绪信号触发计算,适合静态图执行。现代NPU多采用混合模式:控制单元负责粗粒度调度(如算子级切换),计算单元内部采用数据流同步。
判断方法:分析控制流设计优劣时,关注以下关键点:
- 流水线深度:过深的流水线会增加分支预测失败代价,过浅则降低时钟频率。
- 同步开销:多核NPU中,核间同步(如barrier)的延迟直接影响并行效率。
- 指令密度:单条指令能触发的操作数越多,控制开销越低。
3.4 数据通路:数据流动的“高速公路”
核心原理:数据通路定义了数据从存储到计算单元再到存储的物理路径。关键设计包括:总线宽度、交叉开关(Crossbar)、DMA通道、以及数据重排网络。以典型的NPU数据通路为例,DMA从DRAM读取数据后,通过128-bit或256-bit总线将数据分发到各计算单元的输入缓冲;计算结果通过写回总线汇聚到共享内存。
操作流程:一次完整的数据通路操作包含以下步骤:
- 控制单元配置DMA描述符,指定源地址、目的地址、传输长度。
- DMA引擎发起突发传输(Burst),从DRAM读取数据到片上缓存。
- 数据通过交叉开关路由到目标计算单元的输入FIFO。
- 计算完成后,结果通过写回总线传输到共享内存或直接写回DRAM。
3.5 案例拆解:边缘NPU的架构权衡
背景与约束:某智能摄像头SoC需集成NPU,目标是在5W功耗内实现30 FPS的YOLOv5s推理(输入640x640)。约束条件:芯片面积预算为12mm²,DRAM带宽仅25.6GB/s(LPDDR4X)。
初始现象与目标:初步设计采用128个MAC单元、512KB共享内存,实测算力利用率仅35%,帧率仅12 FPS。分析发现瓶颈不在MAC数量,而在数据供给——DRAM带宽被频繁的权重加载耗尽。
关键参数与日志:通过性能计数器监测到:MAC阵列空闲周期占比65%,其中70%的空闲等待权重数据;DRAM读带宽峰值达24GB/s,接近上限。
分析判断过程:YOLOv5s的权重总量约7.2MB(FP16),若每帧都从DRAM加载权重,则需7.2MB×30FPS=216MB/s,看似不高。但实际运行时,卷积层权重复用率低,每次卷积操作需重新加载不同层的权重,导致DRAM访问量剧增。进一步分析发现,权重缓存仅256KB,无法容纳整个骨干网络的权重。
实际操作步骤:
- 将权重缓存扩大至1MB,并采用“层间权重驻留”策略——将骨干网络前5层权重常驻缓存。
- 优化数据通路,增加一条128-bit的专用权重广播总线,避免与激活数据争用带宽。
- 调整DMA调度策略,将权重预取与计算重叠,隐藏DRAM延迟。
结果对比:优化后,MAC利用率提升至72%,帧率从12 FPS提升至28 FPS,功耗仅增加0.8W。DRAM带宽峰值降至18GB/s,留有裕量。
风险与代价:权重缓存增大导致芯片面积增加0.8mm²,但换来了2.3倍的性能提升,性价比可接受。复盘经验:NPU架构设计必须“算力-存储-带宽”三者协同,任何一环短板都会成为系统瓶颈。