3. NPU硬件架构概览

NPU(Neural Processing Unit)作为面向AI推理与训练加速的专用处理器,其硬件架构与传统CPU、GPU有本质区别。CPU追求低延迟下的通用计算,GPU追求高吞吐的并行渲染与通用计算,而NPU则围绕“数据流驱动计算”这一核心理念设计,将矩阵乘加运算、激活函数、池化、归一化等神经网络算子映射到专用的计算单元与存储结构中。理解NPU硬件架构,需要从计算单元(算力从哪里来)、存储层次(数据放在哪里)、控制流(指令如何调度)、数据通路(数据如何流动)四个维度切入。本章将系统拆解NPU的基本组成,并给出工程视角下的设计判断方法与实战案例。

NPU硬件架构总览:计算单元、存储层次、控制流、数据通路 控制单元 (Control Unit) 指令译码 / 调度 / 同步 指令流 计算单元阵列 (Compute Array) MAC 8x8 矩阵 乘加运算 MAC 16x16 矩阵 乘加运算 MAC 32x32 矩阵 乘加运算 ALU 激活/池化 非线性运算 向量单元 归一化/拼接 逐元素运算 池化 Max/Avg 降采样 数据写回 片上存储层次 (On-chip Memory Hierarchy) 寄存器文件 容量最小 / 速度最快 存放操作数 共享内存 (SMEM) 几百KB ~ 几MB 中间结果缓存 权重缓存 静态权重驻留 减少DRAM访问 激活缓存 输入/输出特征图 行缓冲 DMA / 总线 外部存储接口 (DRAM / HBM / PCIe) 数据加载与结果回写 控制信号 同步信号 控制流 数据流 外部存储访问 控制/同步信号

上图展示了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阵列的空闲率,受数据供给和调度策略影响。
经验提醒:在选型或设计NPU时,应优先关注“有效算力”而非“峰值算力”。例如,某NPU标称100 TOPS INT8算力,但若片上存储带宽不足,实际利用率可能仅40%-60%。建议使用矩阵乘算子(如GEMM)进行benchmark测试,观察MAC阵列的占用率。

3.2 存储层次:数据供给的“粮草系统”

核心原理:NPU的存储层次设计遵循“局部性原理”,通过多级缓存减少对DRAM的访问。典型层次为:寄存器文件(RF)→ 共享内存(SMEM)→ 权重缓存/激活缓存 → 外部DRAM。寄存器文件容量最小(几十KB),但读写延迟最低(1-2个时钟周期);共享内存容量中等(几百KB到几MB),延迟约10-20个周期;外部DRAM容量最大(几GB),但延迟高达数百周期。

操作流程:数据在存储层次中的流动遵循以下步骤:

  1. DMA控制器从DRAM加载权重和输入特征图到片上缓存。
  2. 数据从共享内存/权重缓存分发到寄存器文件。
  3. MAC阵列从寄存器文件读取操作数,计算结果写回寄存器文件或共享内存。
  4. 中间结果在共享内存中暂存,供后续算子使用。
  5. 最终结果通过DMA写回DRAM。
存储层级典型容量访问延迟带宽主要用途
寄存器文件16KB - 128KB1-2周期极高(>10TB/s)操作数暂存
共享内存256KB - 8MB10-20周期高(2-8TB/s)中间结果、数据重排
权重缓存512KB - 16MB20-50周期中高(1-4TB/s)静态权重驻留
激活缓存256KB - 4MB20-50周期中高(1-4TB/s)特征图行缓冲
外部DRAM4GB - 64GB200-500周期低(50-200GB/s)长期存储
风险提示:存储层次设计不当会导致“存储墙”问题——计算单元等待数据而空闲。常见误区是过度追求大容量缓存而忽视带宽匹配。例如,若MAC阵列需要4TB/s的数据供给,而共享内存带宽仅2TB/s,则算力利用率必然低于50%。设计时应遵循“带宽匹配”原则:缓存带宽 ≥ 计算单元消耗带宽。

3.3 控制流:指令调度与同步机制

核心原理:NPU的控制流分为两种模式:指令驱动和数据流驱动。指令驱动模式类似CPU,通过取指-译码-执行流水线控制计算单元;数据流驱动模式则通过数据就绪信号触发计算,适合静态图执行。现代NPU多采用混合模式:控制单元负责粗粒度调度(如算子级切换),计算单元内部采用数据流同步。

判断方法:分析控制流设计优劣时,关注以下关键点:

  • 流水线深度:过深的流水线会增加分支预测失败代价,过浅则降低时钟频率。
  • 同步开销:多核NPU中,核间同步(如barrier)的延迟直接影响并行效率。
  • 指令密度:单条指令能触发的操作数越多,控制开销越低。
实战场景:以某边缘NPU运行YOLOv5s模型为例,控制单元需依次调度Conv、BN、ReLU、Upsample等算子。若采用逐算子指令下发方式,指令译码开销约占整体延迟的15%。优化方案是使用“算子融合”技术,将Conv+BN+ReLU合并为一条复合指令,控制开销降至5%以下。具体实现时,控制单元通过配置寄存器组(CRG)预置算子参数,计算单元按数据流自动执行,无需逐条指令干预。

3.4 数据通路:数据流动的“高速公路”

核心原理:数据通路定义了数据从存储到计算单元再到存储的物理路径。关键设计包括:总线宽度、交叉开关(Crossbar)、DMA通道、以及数据重排网络。以典型的NPU数据通路为例,DMA从DRAM读取数据后,通过128-bit或256-bit总线将数据分发到各计算单元的输入缓冲;计算结果通过写回总线汇聚到共享内存。

操作流程:一次完整的数据通路操作包含以下步骤:

  1. 控制单元配置DMA描述符,指定源地址、目的地址、传输长度。
  2. DMA引擎发起突发传输(Burst),从DRAM读取数据到片上缓存。
  3. 数据通过交叉开关路由到目标计算单元的输入FIFO。
  4. 计算完成后,结果通过写回总线传输到共享内存或直接写回DRAM。
常见误区:初学者常忽略数据通路中的“数据重排”开销。例如,当卷积核大小为3x3、步长为2时,输入特征图需要按特定顺序重排才能送入MAC阵列。若数据通路不支持灵活的地址映射,重排操作将消耗额外周期。建议在设计中预留可配置的地址生成器(AGU),支持任意步长和窗口滑动。

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,无法容纳整个骨干网络的权重。

实际操作步骤:

  1. 将权重缓存扩大至1MB,并采用“层间权重驻留”策略——将骨干网络前5层权重常驻缓存。
  2. 优化数据通路,增加一条128-bit的专用权重广播总线,避免与激活数据争用带宽。
  3. 调整DMA调度策略,将权重预取与计算重叠,隐藏DRAM延迟。

结果对比:优化后,MAC利用率提升至72%,帧率从12 FPS提升至28 FPS,功耗仅增加0.8W。DRAM带宽峰值降至18GB/s,留有裕量。

风险与代价:权重缓存增大导致芯片面积增加0.8mm²,但换来了2.3倍的性能提升,性价比可接受。复盘经验:NPU架构设计必须“算力-存储-带宽”三者协同,任何一环短板都会成为系统瓶颈。

总结复盘:本章从计算单元、存储层次、控制流、数据通路四个维度剖析了NPU硬件架构。核心要点:①计算单元决定理论峰值算力,但实际性能受存储带宽制约;②存储层次设计需遵循“带宽匹配”原则;③控制流应尽量采用算子融合减少指令开销;④数据通路需支持灵活的重排与广播机制。在后续章节中,我们将深入指令集设计,探讨如何通过指令编码高效驱动这些硬件资源。