1. 项目背景与核心挑战
在深度学习领域,计算效率和能耗问题一直是制约神经网络大规模部署的关键瓶颈。存内计算(Compute-in-Memory, CIM)架构通过将计算单元与存储单元融合,有效减少了数据搬运带来的能耗开销。其中,基于阻变存储器(RRAM)的神经网络加速器(RRAM-Acc)因其非易失性、高密度和模拟计算特性,成为当前研究的热点。
然而,RRAM加速器面临一个根本性矛盾:CIM架构需要结构化的计算模式,而神经网络权重剪枝(特别是细粒度剪枝)产生的稀疏权重矩阵具有高度非结构化特征。这种矛盾导致两个关键技术难以协同发挥作用:
- 结构化计算需求:RRAM交叉阵列中,每行共享相同输入,每列产生相同输出。单个零值无法跳过,除非整行/整列为零。
- 非结构化稀疏性:细粒度剪枝产生的零值随机分布,难以形成全零行/列,造成存储资源和计算能力的浪费。
图1展示了传统映射方式的问题:尽管近半数RRAM单元存储零值,但由于零值分散分布,无法跳过任何计算,导致大量无效功耗。
关键观察:RRAM交叉阵列中不仅存在零比特(bit-level sparsity),相邻列之间还存在显著的比特模式相似性(bit-level similarity)。这种相似性长期被现有研究忽视。
2. 技术原理与创新设计
2.1 位级稀疏性的数学基础
当权重采用二进制补码表示时,零值的所有比特位均为0,非零值的每个比特位有50%概率为0。因此,整体零比特比例可表示为:
P₀ = p + (1-p)×0.5 = 0.5 + 0.5p其中p为权重值稀疏率。实验数据显示(图3),在LeNet、AlexNet等典型网络中,实际零比特比例与理论值高度吻合,证实了位级稀疏性的普遍存在。
2.2 位级相似性的概率模型
研究发现,RRAM阵列中列向量间存在大量局部相同的比特模式。对于长度为m的n个列向量,任意位置比特值全同的概率为:
P(a⁽¹⁾ᵢ=a⁽²⁾ᵢ=...=a⁽ⁿ⁾ᵢ=0或1) = 1/2ⁿ⁻¹通过数学推导(公式6-7)可知,当n=2时,至少半数行相同的概率超过50%。这一特性使得通过行重排序聚合相似列成为可能,而更大的n值会导致概率急剧下降(图5),因此本文选择两列配对的优化策略。
2.3 核心算法设计
2.3.1 权重存储格式创新
采用二进制补码替代传统的正负权重分离存储方案:
- 节省50%交叉阵列资源
- 仅需增加符号位的移位减操作
- 兼容现有模型无需重训练
8比特权重的乘法运算分解如公式2所示,其中仅第二、三项需要特殊处理,硬件开销可控。
2.3.2 基于汉明距离的重排序算法
算法1(列配对)通过计算列向量间的汉明距离sHD(公式8)识别相似列对,记录相同行位置。算法2在此基础上实现层次化压缩:
- 初始矩阵中寻找sHD最小的列对
- 用相同行构建子矩阵,迭代寻找新列对
- 当相同行数等于操作单元(OU)高度时停止
- 记录行列索引,生成压缩映射方案
图6展示了典型执行过程:首先识别列对(2,9)有7个相同行,用这些行构建子矩阵后找到列对(1,3),最终形成高度为4的OU。该过程确保每个相似列对仅保留一个副本。
2.3.3 计算序列优化
通过行列重排序实现双重压缩:
- 行重排序:创建相似列对
- 列重排序:生成全零行(图7) 采用delta编码存储列索引差异,减少寻址开销。
3. 硬件架构实现
3.1 系统级设计
整体架构如图9所示,关键创新包括:
处理单元(PE)层级:
- 8个计算单元(CU)分别处理权重的不同比特位
- 相同比特位的权重集中存储,统一位移量减少索引开销
计算单元(CU)内部:
- 输入解码器支持水平/垂直两种数据流(图10)
- 输出路由逻辑采用RRAM存储列索引(图11)
- 重复列结果复用,非重复列独立处理
3.2 关键参数优化
操作单元(OU)尺寸选择:
- 高度(OUheight):受ADC分辨率限制设为7
- 宽度(OUwidth):权衡压缩效率与输入索引开销,固定为8
敏感度分析(图8):OUheight越小,压缩率越高,但需要更多计算周期。7×8的OU配置在压缩率与硬件效率间取得最佳平衡。
4. 实验验证与性能分析
4.1 实验设置
- 基准模型:LeNet5、AlexNet、VGG16、GoogleNet、ResNet18
- 对比方案:RePIM(行压缩)、SRE(OU基础设计)、Hoon et al.(高稀疏度优化)
- 评估指标:性能=1/(CCQ×EC),CCQ为计算交叉阵列数量,EC为能耗
4.2 结果分析
性能提升(图12):
- 平均提升61.24%(LeNet5 54.15%至AlexNet 113.92%)
- 中低稀疏度(30-70%)优势显著,因能同时利用零比特和相似性
能耗对比(图14):
- 较RePIM节能1.51-2.52倍
- 索引开销增加被计算资源减少所抵消
横向对比(图13):以ISAAC为基线,本设计性能达205%,远超SRE(115.8%)和RePIM(143.8%)
5. 工程实现要点
5.1 权重预处理流程
- 稀疏化:使用PyTorch L1非结构化剪枝
- 量化:8比特后训练量化(PTQ)
- 编码转换:符号-幅度码转二进制补码
- 矩阵分割:适配交叉阵列尺寸
5.2 硬件设计技巧
- ADC资源共享:水平数据流模式复用ADC
- 动态功耗管理:零值列直接关闭对应行驱动
- 错误容忍设计:相似列允许1-2比特差异(需额外验证)
5.3 典型问题排查
问题1:压缩率低于预期
- 检查OU尺寸是否匹配ADC分辨率
- 验证权重矩阵分割是否产生边缘效应
问题2:计算精度下降
- 确认补码转换未引入溢出
- 检查符号位处理电路时序
问题3:性能提升不显著
- 分析模型稀疏度分布
- 调整OUheight/width比例
6. 应用场景扩展
本技术特别适合以下场景:
- 边缘设备上的实时推理(如手机、IoT设备)
- 大模型中的低秩适配器(LoRA)部署
- 联合稀疏化与量化的模型压缩方案
实验中发现,当权重稀疏度>80%时,传统全零列压缩方案与本方法差距缩小。因此建议在中等稀疏度(30-70%)场景优先采用本方案。