3. NPU架构概览

NPU(Neural Processing Unit)并非通用处理器的替代品,而是为神经网络推理与训练中高度重复的乘加运算、数据搬运和激活函数计算量身定制的专用加速引擎。理解NPU的架构,关键在于把握其“数据流驱动计算”的本质:与CPU的指令流驱动不同,NPU更关注如何让数据在存储层次与计算阵列之间高效流动,从而最大化算力利用率。本章将拆解NPU的四大核心支柱——计算单元、内存层次、控制与调度、专用硬件模块,并结合音视频流水线场景,说明它们如何协同工作。

NPU 核心架构与数据流总览 外部存储 DDR4/LPDDR5 权重/特征图/指令 带宽: 32-128B/cycle 片上存储层次 L2 SRAM (共享) L1 SRAM L1 SRAM 多bank并行访问 支持DMA双缓冲 计算阵列 MAC 单元 16x16 阵列 MAC 单元 16x16 阵列 激活/池化/归一化单元 INT8/FP16 混合精度 专用硬件模块 卷积/转置卷积引擎 深度可分离卷积 Transformer 加速器 控制与调度单元 (Sequencer / DMA Controller) 指令解码 | 依赖分析 | 流水线调度 | 中断/事件管理 DMA读 数据总线 中间结果 控制/状态 关键设计要点: 1. 数据流方向:外部存储 → 片上SRAM → 计算阵列 → 专用模块 → 写回外部存储 2. 控制流独立:指令由Sequencer解析,DMA负责数据搬运,计算单元专注运算 3. 双缓冲机制:L2 SRAM分为A/B区,计算当前帧时预取下一帧数据 4. 专用模块与MAC阵列并行工作,通过内部总线交换中间结果 5. 音视频场景中,NPU与ISP/CODEC通过AXI总线共享DDR带宽,需关注QoS

3.1 核心组件:从宏观视角拆解NPU的“五脏六腑”

NPU的宏观架构通常由五个核心组件构成:计算引擎(Compute Engine)、片上存储(On-chip Memory)、控制单元(Control Unit)、数据搬运引擎(DMA)以及专用硬件加速模块(Dedicated Accelerators)。这五个部分并非孤立存在,而是通过总线矩阵(如AXI或NoC)紧密耦合,形成一个以数据为中心的流水线系统。

计算引擎是NPU的心脏,通常由大量MAC(Multiply-Accumulate)单元组成二维阵列。以常见的16×16阵列为例,单个时钟周期可完成256次乘加运算。但MAC阵列并非越大越好——阵列规模受限于片上存储带宽和功耗预算。例如,一个运行INT8精度的NPU,若MAC阵列需要每周期读取256个权重和256个激活值,则L1 SRAM必须提供至少512B/cycle的读取带宽,这对存储器的物理设计提出了极高要求。

控制单元负责指令的解析与调度。与CPU的乱序执行不同,NPU通常采用静态调度或简单的动态调度策略。指令队列中预存了由编译器生成的指令序列,每条指令包含操作码、目标地址、数据长度等字段。控制单元逐条解码并发射,同时监控各计算单元的忙闲状态。在音视频处理场景中,控制单元还需处理帧同步信号(如VSYNC),确保NPU与ISP、视频编解码器的处理节奏一致。

核心原理:NPU的算力利用率 = (实际有效MAC运算次数) / (理论峰值MAC运算次数)。影响利用率的最大瓶颈并非MAC阵列本身,而是数据供给速度。若DMA搬运数据的速度跟不上MAC消耗数据的速度,计算单元就会处于“饥饿”状态,导致利用率骤降。因此,优秀的NPU架构设计会优先保障存储带宽与计算吞吐的匹配。

3.2 内存层次:数据搬运的“高速公路”与“小巷”

NPU的内存层次设计直接决定了数据访问的延迟与带宽。典型层次结构为:寄存器文件(Register File)→ L1 SRAM → L2 SRAM → 外部DDR。每一层级的容量递增,但访问延迟也同步增加。寄存器文件紧贴MAC单元,容量极小(通常仅能容纳当前计算所需的操作数),但访问延迟仅为1个时钟周期。L1 SRAM通常为每个计算子单元私有,容量在几十KB到几百KB之间,用于缓存当前计算块(Tile)的数据。L2 SRAM为所有计算单元共享,容量可达数MB,用于缓存整个特征图或权重矩阵。

在音视频流水线中,内存层次的设计需要特别关注带宽分配。例如,一个4K分辨率的视频帧,若以YUV420格式存储,单帧数据量约为12MB。NPU在处理该帧时,需要从DDR中读取原始图像数据、写入中间特征图、再读取权重、最终写回输出结果。若DDR带宽为25.6GB/s(LPDDR4x 3200MHz),则单帧处理时间受限于数据搬运时间而非计算时间。因此,NPU通常采用数据压缩技术(如权重稀疏化、激活值量化)来降低DDR带宽压力。

存储层级容量范围访问延迟带宽特性典型用途
寄存器文件几KB1 cycle极高(与MAC直连)当前操作数缓存
L1 SRAM64KB - 512KB2-4 cycles高(多bank并行)计算块(Tile)数据
L2 SRAM1MB - 8MB10-20 cycles中高(共享总线)特征图/权重缓存
外部DDR4GB - 16GB100+ cycles低(受封装与布线限制)原始帧/模型参数存储

判断内存层次设计是否合理,可观察以下指标:L2命中率(应高于90%)、DMA传输效率(实际传输字节/理论峰值字节)、MAC利用率(应高于70%)。若L2命中率过低,说明数据局部性利用不足,需调整Tile切分策略;若DMA传输效率低,则可能是突发传输长度设置不当或地址对齐问题。

3.3 计算单元:MAC阵列与向量单元的协同

计算单元分为两大类别:矩阵计算单元(MAC阵列)和向量计算单元(Vector Unit)。MAC阵列擅长处理卷积、全连接等矩阵乘运算,其核心结构为脉动阵列(Systolic Array)或基于寄存器堆的广播式阵列。脉动阵列中,数据在相邻PE(Processing Element)之间流动,每个PE仅执行一次乘加操作,减少了数据搬运开销。而广播式阵列则将所有输入数据同时广播给所有PE,适合小尺寸矩阵运算。

向量计算单元负责处理逐元素操作,如激活函数(ReLU、Sigmoid)、池化(Max Pooling)、归一化(BatchNorm)等。这些操作无法高效利用MAC阵列,因此需要独立的向量ALU。向量单元通常支持SIMD(单指令多数据)模式,一个周期可处理多个数据元素。例如,一个128位宽的向量单元,在INT8精度下可同时处理16个元素。

在音视频处理中,计算单元需要灵活应对不同尺寸的输入。例如,视频超分辨率模型可能包含3×3卷积、1×1卷积、转置卷积等多种算子。MAC阵列可通过配置支持不同卷积核尺寸,但转置卷积(上采样)通常需要专门的硬件逻辑或通过“补零+普通卷积”的方式实现,后者会浪费约3/4的算力。因此,部分NPU集成了专用的转置卷积引擎,将上采样操作的计算效率提升至普通卷积的90%以上。

实战经验:在部署YOLOv8等目标检测模型时,若NPU的MAC阵列利用率低于50%,请优先检查模型中的小卷积核(如1×1)占比。1×1卷积虽然计算量小,但数据搬运开销占比高,容易导致MAC阵列“空转”。建议将多个1×1卷积融合为单个3×3卷积(通过结构重参数化),可显著提升利用率。

3.4 专用硬件模块:为特定算子“开小灶”

除了通用的MAC阵列和向量单元,现代NPU还集成了多种专用硬件模块,以应对特定场景的算力需求。在音视频领域,最常见的专用模块包括:硬件卷积引擎(Hardware Convolution Engine)、深度可分离卷积加速器(Depthwise Separable Convolution Accelerator)、Transformer加速器(含Softmax、LayerNorm硬件实现)以及光流/立体匹配专用单元。

硬件卷积引擎与MAC阵列的区别在于,它针对特定卷积参数(如3×3 stride=1)进行了硬连线优化,无需通过指令配置即可完成整个卷积过程。这种设计牺牲了灵活性,但换取了极低的功耗和极高的吞吐。深度可分离卷积加速器则将标准卷积分解为Depthwise卷积和Pointwise卷积,前者在通道维度内进行空间滤波,后者在空间维度内进行通道混合。这种分解可将计算量降低至原来的1/8到1/9,非常适合移动端音视频模型。

Transformer加速器是近年来新增的模块,专门处理自注意力机制中的矩阵乘、Softmax和LayerNorm操作。Softmax函数涉及指数运算,在通用处理器上需要多条指令,而硬件实现则通过查找表或CORDIC算法在单周期内完成。LayerNorm需要计算均值和方差,硬件模块可并行处理多个通道的统计量计算。

风险提示:专用硬件模块并非越多越好。每增加一个专用模块,都会消耗芯片面积和功耗预算,并增加验证复杂度。在选型时,应基于目标工作负载的算子分布进行权衡。例如,若产品主要运行CNN模型,则无需配置Transformer加速器;若涉及视频插帧(光流法),则光流专用单元的价值远大于Transformer加速器。

3.5 案例拆解:4K视频实时超分NPU流水线设计

假设我们需要设计一个用于4K@60fps视频实时超分辨率(从1080p到4K)的NPU子系统。输入为1080p YUV420帧(约3MB),输出为4K YUV420帧(约12MB)。模型采用ESPCN(Efficient Sub-Pixel Convolutional Network),包含3个卷积层和1个亚像素卷积层。

初始目标与约束:处理延迟需小于16.6ms/帧(60fps),功耗预算为3W,DDR带宽限制为12.8GB/s(与ISP、CODEC共享)。

关键参数分析:ESPCN模型总计算量约12.8 GMACs(Giga MACs)。若NPU峰值算力为1 TOPS(INT8),则理论计算时间为12.8ms,接近延迟预算上限。但实际还需考虑数据搬运时间:输入3MB + 输出12MB + 权重约2MB,总搬运量17MB,在12.8GB/s带宽下需1.3ms。因此,计算时间成为瓶颈。

优化操作步骤:

  1. Tile切分:将1080p帧切分为6×6的Tile(每个Tile 180×180像素),确保每个Tile的特征图可完全放入L2 SRAM(需约1.5MB)。
  2. 双缓冲:L2 SRAM分为A/B区,DMA预取下一个Tile的数据到A区,同时计算当前Tile(B区),隐藏DMA延迟。
  3. 算子融合:将卷积层+ReLU+亚像素卷积的通道重排操作融合为单个指令序列,减少中间特征图的DDR写回。
  4. 权重驻留:模型权重仅2MB,可常驻L2 SRAM,避免重复从DDR读取。

结果对比:优化后,单Tile计算时间约0.35ms,DMA搬运时间约0.2ms(双缓冲隐藏后),总处理时间约12.6ms(36个Tile串行+少量开销),满足16.6ms预算。MAC利用率从初始的52%提升至81%。

风险与代价:Tile切分引入了边界像素重叠(每Tile需额外4像素边界),导致计算量增加约4.5%。此外,L2 SRAM容量需求从1.5MB提升至2.1MB(含边界),增加了芯片面积。

复盘经验:在音视频NPU设计中,数据复用是核心优化方向。通过Tile切分和双缓冲,我们成功将DDR带宽占用从理论峰值降低至实际平均值的60%,为ISP和CODEC留出了充足的带宽余量。同时,算子融合减少了中间数据的搬运次数,其收益往往大于单纯提升MAC阵列规模。

总结复盘:NPU架构设计的本质是平衡计算密度与数据供给。核心组件(MAC阵列、向量单元)决定了理论算力上限,而内存层次和DMA设计决定了实际可达算力。专用硬件模块则是针对特定场景的“加速杠杆”,需谨慎评估其性价比。在音视频流水线中,NPU并非孤立工作,其与ISP、CODEC的带宽竞争和帧同步协作,往往比NPU自身的峰值算力更能影响最终系统性能。