乐于分享
好东西不私藏

边缘 AI 芯片如何又快又省电?HH-PIM 用“大小核 + 混合存储”给 PIM 加上动态调度能力

边缘 AI 芯片如何又快又省电?HH-PIM 用“大小核 + 混合存储”给 PIM 加上动态调度能力
在边缘 AI 设备上跑神经网络,最难的地方往往不是“能不能算”,而是“能不能在很小的功耗预算下稳定地算”。
比如摄像头、可穿戴设备、IoT 传感器节点,它们可能需要实时运行目标检测、异常识别、语音唤醒、健康监测等 TinyML 模型。传统做法把数据不断搬到处理器里计算,会消耗大量能量;而 Processing-in-Memory,也就是 PIM,把计算放到存储器附近,可以减少数据搬运,因此很适合边缘 AI。
但论文《HH-PIM: Dynamic Optimization of Power and Performance with Heterogeneous-Hybrid PIM for Edge AI Devices》指出:现有 PIM 架构在边缘设备中仍然存在一个关键问题——推理负载是动态变化的,但 PIM 计算资源通常是固定配置的。
换句话说,边缘 AI 并不是每一帧、每一秒都需要最高性能。以目标检测为例,有些视频帧里目标很多,需要更多计算;有些帧很简单,计算量很低。如果 PIM 始终按照峰值负载运行,就会浪费大量能耗。
HH-PIM 正是为了解决这个问题而提出的。

一、论文要解决的问题:边缘 AI 的推理负载不是固定的

很多 PIM 设计关注的是降低数据搬运,比如 SRAM-PIM、DRAM-PIM、MRAM-PIM、ReRAM-PIM 等。它们在某些场景下确实能提高能效。
但边缘 AI 设备有两个特殊挑战。
第一,边缘设备功耗预算极低。SRAM 和 DRAM 虽然速度快,但 SRAM 有 leakage power,DRAM 需要 refresh,都不适合长时间存储大量神经网络权重。
第二,推理负载动态变化。一个边缘设备可能一会儿处于低负载,一会儿出现计算峰值。如果硬件始终按照最高性能运行,能耗会很不划算。
因此,传统 Hybrid-PIM 虽然已经把 NVM 和 SRAM 结合起来:用 NVM 存权重,用 SRAM 做输入输出 buffer,但它的数据分配方式通常比较固定,不能很好适应实时变化的 workload。
HH-PIM 的核心目标就是:
在满足应用延迟要求的前提下,根据实时推理负载动态调整数据放置和计算资源使用,从而尽可能省电。

二、HH-PIM 的核心思路:PIM 也做“大小核”

如果熟悉移动 SoC,应该知道 ARM big.LITTLE 架构:高性能大核负责重任务,低功耗小核负责轻任务。这样既能保证性能,又能节省能耗。
HH-PIM 借鉴了这个思想,把 PIM 模块也设计成两类:
一类是HP-PIM,也就是 High-Performance PIM,性能高,但功耗也高。
另一类是LP-PIM,也就是 Low-Power PIM,性能低一些,但更省电。
同时,每个 PIM 模块内部又采用MRAM + SRAM的混合存储结构:
MRAM 适合低功耗、非易失权重存储。
SRAM 适合低延迟访问,在高负载时可以提升性能。
因此,HH-PIM 实际上有四类可用存储/计算资源:
HP-MRAM
HP-SRAM
LP-MRAM
LP-SRAM
这四类资源构成了一个性能和功耗的“选择空间”。运行时系统可以根据当前任务延迟要求,把权重数据动态放到不同位置。
如果负载很高,就更多使用 HP-PIM 和 SRAM,以满足延迟要求。
如果负载很低,就更多使用 LP-PIM 和 MRAM,以降低能耗。
这就是 HH-PIM 的基本设计思想。

三、图 1 解读:HH-PIM 的整体架构

论文图 1 展示了 HH-PIM 的整体结构。
从图中可以看到,HH-PIM 由两个主要集群组成:
左侧是HP-PIM Module Cluster,包含多个 HP-PIM Module。
右侧是LP-PIM Module Cluster,包含多个 LP-PIM Module。
每个 PIM Module 内部都有:
MRAM
SRAM
PE,也就是 Processing Element
Interface
HH-PIM 顶层还有一个 PIM Instruction Queue,用于接收来自处理器核心的 PIM 指令。不同于传统 PIM 只有一个统一 controller,HH-PIM 设计了两个控制器:
HP-PIM Controller负责高性能 PIM 模块。
LP-PIM Controller负责低功耗 PIM 模块。
这张图的重点在于:HH-PIM 不是单一类型 PIM 的堆叠,而是把“高性能计算资源”和“低功耗计算资源”同时放进 PIM 系统中,再通过控制器动态调度。
它解决的不是单纯的“PIM 怎么算得快”,而是“在不同负载下,应该用哪部分 PIM 算,权重应该放在哪类 memory 里”。

四、图 2 解读:PIM Controller 如何管理不同速度的模块?

论文图 2 展示的是 HP-PIM Controller 的内部结构。LP-PIM Controller 与其基本类似。
从图中可以看到,Controller 主要包括:
State Machine
Instruction Decoder
Command Encoder
Data Allocator
CMD Interface Logic
MEM Interface Logic
Data Rearrange Buffer
Address Generator
它的执行流程类似一个小型 PIM 指令处理器,按照 FETCH、DECODE、LOAD、EXECUTE、STORE 等阶段工作。
其中最关键的是Data Allocator和分离的CMD/MEM Interface Logic
为什么要单独设计 Data Allocator?
因为 HH-PIM 的动态优化需要在 HP-PIM 与 LP-PIM 之间移动数据,也需要在 MRAM 与 SRAM 之间调整权重分布。如果没有专门的数据分配和重排机制,频繁搬数据会抵消节能收益。
Data Allocator 的作用就是根据指令和地址信息,决定数据从哪里读、暂存在哪里、最终写到哪个 PIM 模块和哪个 memory bank。
图中的 Data Rearrange Buffer 则用于解决 HP-PIM 和 LP-PIM 速度不一致的问题。比如 HP-PIM 快,LP-PIM 慢,如果数据直接搬运,可能出现写入冲突或等待。Buffer 可以先暂存数据,等目标模块准备好后再写入。
因此,图 2 表达的核心是:
HH-PIM 的高能效不是只靠硬件模块堆出来的,还依赖 Controller 对不同速度、不同功耗模块的精细同步和数据管理。

五、动态数据放置:把权重放哪儿才最省电?

HH-PIM 的架构提供了四类存储空间,但真正的问题是:
给定一个神经网络层的权重,应该有多少放到 HP-SRAM?多少放到 HP-MRAM?多少放到 LP-SRAM?多少放到 LP-MRAM?
论文把这个问题建模成一个组合优化问题。
每个时间片 time slice 内,系统会根据当前任务数量计算一个时间约束。简单说,如果当前 buffer 里任务很多,每个任务就必须更快完成;如果任务少,每个任务就可以慢一点,从而换取更低能耗。
论文定义:
目标:最小化每个 task 的能耗。
约束:每个 task 的执行时间不能超过给定时间限制。
决策变量:不同权重数据被分配到四类 storage space 的数量。
这非常像背包问题:每种存储空间都有自己的“时间成本”和“能量成本”,系统要在时间容量约束下,选择能耗最低的数据分配方案。
但它又比普通背包更复杂,因为:
同一种 storage space 可以被选择多次,类似 unbounded knapsack。
总共必须分配固定数量的权重,类似 multi-choice knapsack。
因此,作者采用 bottom-up dynamic programming,也就是自底向上的动态规划方法求解。

六、算法 1 和算法 2 解读:先分别求,再组合 HP/LP

论文给出了两个算法。
算法 1:为每个集群建立 DP 表
Algorithm 1 的作用是:在给定时间约束和权重数量的情况下,计算某个 PIM 集群内部的最低能耗分配。
这里的 DP 状态可以理解为:
考虑前 i 种存储空间,在时间约束 t 内,放置 k 个权重,能达到的最小能耗是多少。
如果当前 storage space 的时间成本太大,无法满足约束,就继承前一个状态。
如果可以放,就比较两种选择:
不用当前 storage space。
使用当前 storage space 存一个额外权重。
取能耗更低的方案。
需要注意的是,HH-PIM 中 HP-PIM 和 LP-PIM 可以并行执行,但同一个模块内 MRAM 和 SRAM 之间不能完全并行。因此作者不是直接对四类 memory 做一个统一 DP,而是分别对 HP-PIM 和 LP-PIM 做 DP。
算法 2:寻找 HP 和 LP 之间的最优权重划分
Algorithm 2 的作用是把两个 DP 表组合起来。
如果总共有 K 个权重,那么可以给 HP-PIM 分配 khp 个,给 LP-PIM 分配 klp = K - khp 个。
算法枚举不同 khp 和 klp 组合,找到在当前时间约束下总能耗最低的方案。
最终得到一个 allocation_state lookup table。
这个 LUT 在应用初始化阶段构建一次。运行时每个 time slice 只需要根据当前时间约束查表,就能快速得到最优数据放置状态。
这点很重要,因为边缘设备不能在运行时做太复杂的优化计算。论文的策略是:
初始化阶段多算一点,运行时快速查表。

七、图 3 解读:HH-PIM 处理器原型如何验证?

论文图 3 展示了 HH-PIM Processor 的 FPGA 原型和系统架构。
右侧架构图中,处理器包含:
RISC-V Rocket Core
HH-PIM
System Memory
SRAM
IROM
JTAG
FLASH
UART、SPI、I2C 等外设
System Interconnect
其中 Rocket Core 通过 AXI 协议与 HH-PIM 通信,系统互连采用轻量级 NoC。
左侧实物图则展示了作者在 Genesys 2 FPGA Board 上完成的 HH-PIM Processor 原型。
这说明作者不是只做了纯理论建模,而是完成了 RTL 设计和 FPGA 原型验证。论文还给出了资源占用表,例如 HP-PIM module cluster 和 LP-PIM module cluster 都包含多个 BRAM 和 DSP 资源,用于验证功能和性能。
不过功耗不是直接从 FPGA 板测得,而是结合 45nm 工艺综合结果和 NVSim 存储器模型仿真得到。这是论文实验方法中需要注意的一点。

八、表 I、表 III、表 IV、表 V:实验配置怎么看?

论文设置了四类 PIM 架构进行对比。
表 I:四种架构配置
Baseline-PIM:8 个 HP-PIM,每个模块只有 128kB SRAM。
Heterogeneous-PIM:4 个 HP-PIM + 4 个 LP-PIM,每个模块只有 SRAM。
Hybrid-PIM:8 个 HP-PIM,每个模块是 64kB MRAM + 64kB SRAM。
HH-PIM:4 个 HP-PIM + 4 个 LP-PIM,每个模块是 64kB MRAM + 64kB SRAM。
这四组对比非常清楚:
Baseline-PIM 代表传统高性能 SRAM PIM。
Heterogeneous-PIM 只引入 HP/LP 异构,但没有 MRAM/SRAM 混合。
Hybrid-PIM 只引入 MRAM/SRAM 混合,但没有 HP/LP 异构。
HH-PIM 同时具备异构和混合存储。
因此,实验能比较清楚地回答:到底是 heterogeneous 有用,还是 hybrid 有用,还是二者结合最有效。
表 III:HP-PIM 和 LP-PIM 的延迟差异
表 III 给出了不同 memory 和 PE 的延迟。
HP-PIM 工作在 1.2V,速度更快。
LP-PIM 工作在 0.8V,速度更慢但功耗更低。
例如 SRAM read/write 在 HP-PIM 中是 1.12ns,在 LP-PIM 中是 1.41ns;PE 延迟 HP-PIM 为 5.52ns,LP-PIM 为 10.68ns。
这说明 LP-PIM 并不是免费午餐,它省电但更慢,因此需要调度算法判断什么时候可以用它。
表 IV:TinyML 模型
作者使用了三个适合边缘 AI 的 CNN 模型:
EfficientNet-B0
MobileNetV2
ResNet-18
这些模型经过 INT8 quantization 和 pruning。PIM 操作占比分别为 85%、80% 和 75%。
这说明实验主要关注 PIM 能加速的神经网络计算部分,同时也保留了部分非 PIM 操作。
表 V:功耗对比
表 V 展示了不同 memory 和 PE 的功耗。
HP-PIM 中 SRAM 和 MRAM 动态功耗都明显高于 LP-PIM。
LP-PIM 的静态功耗也更低。
这就是 HH-PIM 能节能的基础:当任务不紧张时,尽量把数据和计算放到 LP-MRAM/LP-SRAM,甚至可以对不用的 memory 做 power-gating。

九、图 4 解读:为什么要设计 6 种 workload 场景?

论文图 4 展示了六种 AI benchmark workload pattern。
Case 1:Low Workload Constant,持续低负载。
Case 2:High Workload Constant,持续高负载。
Case 3:Periodic Spike Pattern,周期性峰值。
Case 4:Periodic Spike Pattern frequent,更频繁的周期性峰值。
Case 5:High-Low Pulsing Pattern,高低负载交替。
Case 6:Random Workload,随机负载。
这些场景是为了模拟真实边缘 AI 运行时的动态变化。
例如摄像头监控场景中,绝大多数时间可能没有复杂目标,是低负载;但一旦画面中出现多个目标,计算需求会突然升高。语音、雷达、健康监测等场景也可能出现类似负载波动。
如果只测试固定负载,就无法体现 HH-PIM 动态数据放置算法的价值。因此图 4 是实验设计的关键,它证明 HH-PIM 面向的是“运行时动态变化”的边缘 AI,而不是静态 benchmark。

十、图 6 解读:不同延迟约束下,权重如何移动?

论文图 6 是理解 HH-PIM 动态优化机制最重要的一张图。
横轴是时间片内的任务时间约束 tconstraint。越靠左,说明要求越快;越靠右,说明允许更慢。
左侧 y 轴是 memory utilization ratio,表示权重分布在 HP-SRAM、HP-MRAM、LP-SRAM、LP-MRAM 中的比例。
右侧 y 轴是归一化后的任务能耗 Etask。
图中的灰色区域表示:tconstraint 太小,要求太高,HH-PIM 无法满足。
绿色点表示 HH-PIM 的 peak performance point,也就是达到最高性能时的数据放置状态。此时权重主要放在 HP-SRAM 和 LP-SRAM 中,以充分利用 SRAM 低延迟,同时平衡 HP-PIM 和 LP-PIM 的工作量,减少 idle time。
紫色点表示如果像传统 H-PIM 那样只把权重放在 MRAM 中,能达到的峰值性能。论文数据显示,这种方式明显更慢。例如 EfficientNet-B0 推理时间为 44.5ms,而 HH-PIM 同时使用 SRAM 和 MRAM 时可以达到 31.06ms。
随着 tconstraint 逐渐变大,也就是应用允许更长延迟,HH-PIM 会逐步把权重从高性能高功耗资源迁移到低功耗资源:
先使用 HP-SRAM 和 LP-MRAM 的组合。
再使用 HP-MRAM 和 LP-SRAM 的组合。
接着更多使用 LP-SRAM。
最后在最宽松的延迟要求下,全部权重放入 LP-MRAM。
此时其他 memory 可以 power-gating,最大化节能。
图 6 传达的核心结论是:
HH-PIM 不是固定使用某一种 memory,而是根据延迟约束连续切换权重分布,在性能和能耗之间动态找最优点。

十一、图 5 解读:HH-PIM 在各种负载下到底省多少电?

论文图 5 展示了 HH-PIM 相比 Baseline-PIM、Heterogeneous-PIM 和 Hybrid-PIM 的 energy saving。
从结果可以看到,HH-PIM 在低负载场景收益最大。
在 Case 1,也就是持续低负载场景中,HH-PIM 相比 Baseline-PIM 最高节能 86.23%,相比 Heterogeneous-PIM 最高节能 78.7%,相比 Hybrid-PIM 最高节能 66.5%。
原因很直观:低负载时不需要高性能,HH-PIM 可以更多使用 LP-PIM 和 MRAM,并关闭不必要的高功耗资源。
Case 2,也就是持续高负载,是最不利场景。此时 HH-PIM 仍然相较 Baseline-PIM 和 Hybrid-PIM 有明显节能,但相较 Heterogeneous-PIM 的优势变小,最高只有 3.72%。这是因为高负载下两者都主要使用 HP-SRAM 和 LP-SRAM,调度空间变小。
在 Case 3 到 Case 6 的动态负载中,HH-PIM 仍然保持较好收益。论文表 VI 显示,在周期性峰值、频繁峰值、高低脉冲、随机负载下,HH-PIM 相比 Baseline-PIM 的节能分别可达 72.01%、61.46%、48.94%、59.28%。
总体来看,HH-PIM 平均最高可实现:
相较 Baseline-PIM:60.43% 节能。
相较 Heterogeneous-PIM:36.3% 节能。
相较 Hybrid-PIM:48.58% 节能。
这组数据说明:单独做“大小核 PIM”或单独做“MRAM-SRAM 混合 PIM”都不够,真正有效的是把二者结合起来,并配合动态数据放置算法。

十二、HH-PIM 的技术价值在哪里?

HH-PIM 的贡献可以从三个层面理解。
第一,架构层面:把 heterogeneity 引入 PIM
过去异构计算更多发生在 CPU/GPU 或 big.LITTLE CPU 中。HH-PIM 把这种思想搬到 PIM 内部,让 PIM 本身也拥有高性能模块和低功耗模块。
这使得 PIM 不再只是一个固定性能的加速器,而是能根据负载动态调整工作模式。
第二,存储层面:MRAM 和 SRAM 不再固定分工
传统 H-PIM 通常让 MRAM 存权重,SRAM 做输入输出 buffer。
HH-PIM 则更加灵活:在高负载时,SRAM 也可以存权重,以提升性能;在低负载时,更多权重放到 MRAM,降低能耗。
也就是说,HH-PIM 把 memory type 当成调度资源,而不是固定用途的存储单元。
第三,算法层面:用动态规划做延迟约束下的能耗最小化
HH-PIM 的数据放置不是手工规则,而是建模成优化问题。
目标是最小能耗,约束是满足每个 time slice 的任务处理时间。
初始化阶段构造 LUT,运行时快速查表,兼顾优化效果和边缘设备运行开销。

十三、论文也有哪些局限?

这篇论文非常适合边缘 TinyML 场景,但也有一些需要注意的地方。
第一,实验模型主要是 CNN-based TinyML,包括 EfficientNet-B0、MobileNetV2 和 ResNet-18。对于 Transformer、RNN 或更复杂多模态模型,数据访问模式和 PIM operation ratio 可能不同,需要进一步验证。
第二,HH-PIM 的数据放置需要考虑数据迁移开销。论文已经在 runtime tconstraint 计算中考虑了从上一个 time slice 分配状态迁移到新状态的开销,但实际芯片中更复杂的 NoC 拥塞、memory contention 仍可能影响结果。
第三,功耗来自 45nm 综合和 NVSim 模型,FPGA 主要用于功能和性能验证。这是合理的研究方法,但与真实芯片流片后的功耗仍可能存在差异。
第四,MRAM 写延迟和写能耗通常高于 SRAM,因此 HH-PIM 更适合权重相对稳定的推理场景。如果是频繁在线训练或权重更新场景,还需要重新评估。

结语:边缘 AI 的 PIM,不只是“靠近内存计算”,还要“按负载动态省电”

HH-PIM 这篇论文的核心启发是:
未来边缘 AI 芯片中的 PIM,不应该只是一个固定性能的内存侧加速模块,而应该像处理器大小核一样,具备根据负载动态切换性能和功耗状态的能力。
它通过 HP-PIM + LP-PIM 的异构设计,结合 MRAM + SRAM 的混合存储,再配合动态规划数据放置算法,实现了“在满足延迟要求的前提下尽量省电”。
对于低负载、周期性峰值、随机波动等真实边缘 AI 场景,HH-PIM 展现出明显优势。相比传统 PIM,它最高平均节能 60.43%,证明了“异构 + 混合 + 动态数据放置”是一条很有价值的边缘 AI PIM 设计路线。
一句话总结:
HH-PIM 让 PIM 从一个静态加速器,变成了一个能根据实时推理负载自动选择高性能或低功耗执行路径的自适应边缘 AI 计算架构。

相关学习资料