异构NPU基础:NPU架构差异、算力特征、内存层次与典型应用场景
在异构计算系统中,NPU(神经网络处理单元)并非单一形态的处理器。不同厂商、不同代际的NPU在架构设计哲学、算力表达方式、内存组织结构和部署目标上存在显著差异。理解这些差异是进行功耗延迟调度优化的前提——因为调度器本质上是在“异构资源池”中做决策,而每个资源池的“成本函数”和“执行模型”各不相同。本章将系统梳理NPU的架构分类、算力特征、内存层次结构,并结合边缘与云端两类典型场景,为后续章节的调度策略讨论奠定硬件认知基础。
上图从架构、算力、内存、功耗和场景五个维度对比了边缘NPU与云端NPU的核心差异,并映射到调度器需要关注的关键指标。可以看到,边缘NPU与云端NPU在硬件资源约束上几乎是两个极端,这直接决定了调度算法在设计时的目标函数和约束条件完全不同。
2.1 NPU架构的核心差异:从SIMD到脉动阵列
核心原理:NPU的微架构设计决定了其计算效率和灵活性之间的权衡。边缘NPU通常采用SIMD(单指令多数据)架构配合小规模MAC(乘累加)阵列,这种设计面积小、功耗低,但控制逻辑简单,适合执行固定形状的卷积操作。云端NPU则普遍采用脉动阵列(Systolic Array)或类Tensor Core设计,通过数据在阵列中的“流动”复用权重和激活值,大幅提升计算密度。例如,Google TPU的脉动阵列尺寸达到256×256,单周期可完成65,536次MAC操作。
判断方法:在实际调度中,可以通过以下特征快速识别NPU架构类型:
- 指令集特征:边缘NPU通常支持VLIW(超长指令字)或专用ISA,指令粒度较粗;云端NPU则依赖主机CPU下发kernel,NPU内部执行微码。
- 数据流模式:脉动阵列要求数据按固定节奏“泵入”阵列,对数据排布有严格约束;SIMD架构则允许更灵活的数据访问模式。
- 算子支持范围:边缘NPU往往只支持Conv、Pool、Activation等有限算子集;云端NPU支持更丰富的算子,包括Transformer中的MatMul、Softmax、LayerNorm等。
2.2 算力特征:TOPS、MAC利用率与有效算力
核心原理:标称TOPS(Tera Operations Per Second)是NPU的峰值算力,但实际调度中更关注有效算力——即考虑数据搬运、算子融合、内存带宽限制后的实际吞吐。边缘NPU的峰值算力虽然只有1-4 TOPS,但由于SRAM紧耦合设计,数据搬运开销小,有效算力可达峰值的60-80%。云端NPU峰值算力极高(如A100的INT8算力达624 TOPS),但若算子形状不规则或需要频繁访问HBM,有效算力可能骤降至峰值的20-30%。
判断方法:计算有效算力时,需考虑以下公式:
有效算力 = 峰值TOPS × MAC利用率 × 内存带宽满足系数
其中:
MAC利用率 = 实际MAC周期 / 总周期
内存带宽满足系数 = min(1, 所需带宽 / 可用带宽)
案例拆解:假设某边缘NPU峰值算力为2 TOPS,MAC利用率为70%,但模型权重为8MB,而SRAM仅2MB,需要分4次加载。若每次加载耗时50μs,计算耗时200μs,则内存带宽满足系数为0.8。最终有效算力 = 2 × 0.7 × 0.8 = 1.12 TOPS,仅为峰值的56%。调度器若按峰值算力预估任务耗时,将产生约44%的误差。
| NPU类型 | 峰值算力 | 典型MAC利用率 | 内存瓶颈 | 有效算力占比 |
|---|---|---|---|---|
| 边缘NPU(Ethos-U55) | 0.5 TOPS | 60-75% | SRAM容量 | 50-65% |
| 边缘NPU(RK3588 NPU) | 6 TOPS | 50-70% | DDR带宽 | 35-50% |
| 云端NPU(TPU v4) | 275 TOPS | 70-85% | HBM带宽 | 55-70% |
| 云端NPU(A100 Tensor Core) | 624 TOPS | 40-60% | HBM容量/带宽 | 25-45% |
2.3 内存层次结构:从紧耦合SRAM到HBM
核心原理:NPU的内存层次直接影响数据搬运策略和功耗。边缘NPU采用紧耦合SRAM设计,计算单元直接访问SRAM,无缓存一致性开销,但容量有限(通常512KB-4MB)。云端NPU则采用多级内存层次:寄存器文件→共享内存(SMEM)→L2 Cache→HBM,各级容量和带宽差异巨大。例如,A100的SMEM带宽为19TB/s,而HBM带宽仅2TB/s,相差近10倍。
操作流程:调度器在内存规划时,应遵循以下优先级:
- 数据复用优先:尽可能将权重和激活值驻留在SRAM/SMEM中,减少HBM访问次数。
- 算子融合:将Conv+BN+ReLU等算子融合为单一kernel,避免中间结果写回DDR。
- 双缓冲:在边缘NPU上使用ping-pong缓冲,隐藏数据加载延迟。
- 内存压缩:对稀疏模型使用2:4结构化剪枝,减少内存占用。
2.4 典型应用场景:边缘与云端的调度约束差异
核心原理:边缘场景(如智能摄像头、TWS耳机、工业IoT)对延迟、功耗、成本极度敏感,通常要求端到端延迟<100ms,平均功耗<500mW。云端场景(如大模型推理、推荐系统)则更关注吞吐量、利用率、可扩展性,允许秒级延迟,但要求单卡吞吐达到数千QPS。
案例拆解:以智能门锁的人脸识别为例,边缘NPU(如恒玄BES2700)需在50ms内完成人脸检测+特征提取,功耗预算为80mW。调度器需将模型切分为两个子任务:检测任务(轻量级,2 TOPS算力)和特征提取任务(中等量级,4 TOPS算力),并利用DVFS(动态电压频率调节)在检测阶段运行在低频(500MHz),特征提取阶段提升至1GHz。若调度器未考虑DVFS切换延迟(约10μs),可能导致任务超时。
相比之下,云端推荐系统使用TPU v4进行大规模Embedding查询和MLP推理。调度器需将请求按batch大小动态组合,以最大化脉动阵列利用率。例如,当batch size从1增加到64时,TPU利用率从15%提升至75%,但延迟从2ms增加到15ms。调度器需在SLA(服务等级协议)允许的延迟范围内,动态调整batch size。
| 维度 | 边缘NPU调度 | 云端NPU调度 |
|---|---|---|
| 目标函数 | 最小化功耗,满足延迟约束 | 最大化吞吐,满足SLA |
| 任务粒度 | 单模型多子任务 | 多请求batch化 |
| 资源调整 | DVFS、任务裁剪 | batch size、多卡并行 |
| 内存策略 | SRAM驻留、权重压缩 | SMEM显式管理、HBM带宽优化 |
| 失败处理 | 降级到CPU执行 | 请求排队、超时重试 |
2.5 常见误区与设计复盘
误区一:将TOPS作为唯一算力指标。实际调度中,MAC利用率和内存带宽满足系数对任务耗时的影响远大于峰值TOPS。建议在调度器中维护一张“有效算力查找表”,根据算子类型和输入尺寸动态查询。
误区二:忽视NPU的“冷启动”开销。边缘NPU从休眠状态唤醒需要约1-5ms,云端NPU的kernel启动开销约10-50μs。对于短小任务(<1ms),调度器应优先考虑在CPU上执行,避免NPU启动开销超过任务本身耗时。
误区三:内存层次设计“一刀切”。边缘NPU的SRAM容量小,但访问延迟低(~2ns);云端NPU的HBM容量大,但延迟高(~200ns)。调度器应根据数据复用频率选择存储层级:高频复用数据放SRAM/SMEM,低频数据放DDR/HBM。