面向移动端 SoC 的高硬件效率神经网络处理单元
三星电子发表在固体电子学顶刊 IEEE JSSC 上的论文《A Multi-Mode 8k-MAC HW-Utilization-Aware Neural Processing Unit With a Unified Multi-Precision Datapath in 4-nm Flagship Mobile SoC》中,提出了一种应用于 4nm 移动 SoC 支持多模式的神经网络处理单元(NPU),专为猎户座移动 SoC 设计,通过统一多精度数据通路支持 INT4/8 及 FP16 运算,实现高能效与高面积效率的平衡。
关键词
计算利用率、深度神经网络(DNN)、领域专用架构(DSA)、推理加速器、稀疏感知零值跳过、统一乘加(MAC)
全文导图及摘要
针对深度卷积、浅层小通道层等端侧 AI 应用中的低硬件利用率场景,三星团队结合编译器提供的张量信息,通过重构计算流(包含基于特征图稀疏特性的零值跳过、Scatter-Gather 等技术),硬件利用率相较第一代提升 4 倍。NPU 支持运行模式动态调整,可灵活适配超低功耗(Always-On 模式,无 DRAM 交互,功耗降低 89%)与低延迟(双核心协同工作,支持跨核 Halo 数据直传)两种工作模式,覆盖语音唤醒、人脸识别、图像分割等典型应用场景。三星内部的实测结果显示,该 NPU 运行 MobileNetEdgeTPU(INT8)能效达 11.59 TOPS/W,运行 DeepLabV3(FP16)能效为 4.26 TFLOPS/W,面积效率分别为 3.45 TOPS/mm² 与 1.72 TFLOPS/mm²。
研究背景
深度神经网络与端侧机器学习的发展推动了移动端 AI 应用的普及,移动端 AI 应用在实时性、隐私性与本地化运行的需求对 DNN 加速器的设计提出了新要求,同时移动平台的计算资源、功耗水平与存储带宽受限。早期,端侧加速器往往采取权重剪枝、稀疏零值跳过、低精度量化等手段,但仍存在诸多局限:
- 深度卷积、浅层网络等场景下硬件利用率显著降低,传统的并行计算架构难以适配低通道数的工作负载;
- 不同的端侧应用的数据精度差异大,如:超分辨率重建应用需要 FP16 保证超分效果,人脸检测/生物识别应用使用 INT8 甚至是 INT4 即可满足要求,同时在 NPU 中为不同精度设计专用的数据通路会造成面积浪费;
- 移动端应用中存在强实时性(如目标检测)与超低功耗常开场景(如语音关键词唤醒)等应用,单一的操作模式(不具备可配置性)无法兼顾多种场景;
- 早期的零值跳过技术多利用权重稀疏性,依赖的模型剪枝技术在当时并未成为实质的行业标准。
三星移动端 NPU 架构演进
1. 前三代移动端 NPU 架构
对从事端侧 NPU 架构的研究人员来说,本文的看点是揭示了三星前三代端侧 NPU 的技术演进思路。
第一代与第二代 NPU 利用权重稀疏性进行零值跳过,虽能提升 NPU 的有效性能,但权重稀疏依赖自定义的剪枝工具且难以作为行业标准推广;另一方面,该架构存在寄存器开销大、多路复用器复杂度随并行度提升而增加的问题,且空间并行度在小尺寸特征图层中的硬件利用率偏低。
在上图中,传统的卷积计算过程(未采用零值跳过)需要 16 个周期完成 kernel 矩阵在输入特征图上的滑动计算过程;基于权重稀疏的卷积计算,则可以先计算非零元素与 IFM 对应元素的乘积(得到 Feature Map Cell),最后再将与非零权重值对应的多个 Feature Map 求和得到结果。值得注意的是,该架构并行度的提升会造成选通 Feature Map Cell 的多路复用器的设计复杂度增加。
从第三代 NPU 开始,三星开始利用特征图稀疏性实现零值跳过,并采用归约加法树代替前代的累加器方案,降低了 26% 的功耗,但在计算深度卷积或浅层网络时的硬件利用率低的问题仍未有效解决。此外,AI 应用对混合精度、多精度计算的支持及更庞大的 MAC 规模的需求日益剧增。
2. 三星提出的第四代移动端 NPU 架构
NPU 架构的演进思路与应用需求的变化紧密相关。三星提到,开发人员反馈了移动端 NPU 的新需求,即:多精度计算支持、深度可分离卷积/浅层网络的高硬件利用率、工作模式可配置。
如上图所示,加速器包含两个 NPU 内核,每个内核包含 4K 个 8bits MACs。NPU 控制器负责管理片上暂存器与外存之间的数据传输。加速器中内置一个用于执行固件的小型 CPU 内核,以及包含张量压缩器(NTC)的 DMA 引擎。
如上图所示,第四代 NPU 的内核部分由张量计算单元、向量计算单元、命令队列管理器及 1MB 的紧耦合存储器组成。张量计算单元由取数据模块(权重/特征图/部分和)及乘加阵列(MAA,4K MACs)组成,每周期可计算 4 组 32 维向量的点积。紧耦合存储器存储单层网络或单个计算块的权重、输入特征图、输出特征图和部分和。
架构设计细节
1. 取数据模块与派遣单元
取数据模块获取并处理输入特征图、权重和部分和。权重 fetcher 会预加载下一计算块(next Tile)的权重,PSUM fetcher 采用双缓冲设计,会预加载下一计算块的部分和。三星提到,由于 NPU 利用特征图稀疏和数据并行来改善硬件利用率低的问题,为避免访存瓶颈,特征图 fetcher 的带宽为乘加阵列带宽需求的数倍(具体几倍,官方没提及)。取数据模块的特征图 fetcher 内置了重用数据缓存(reuse buffer,容量为 1KB),通过特征图数据重用提高有效内存带宽。


