跳到正文
半导体开放世界

存算一体

Compute-in-Memory也称 CIM、IMC、内存计算

把部分运算放入存储阵列,用电导与电流求和执行乘加,并同时核对精度、外围开销和器件稳定性。

报告问题

速览

约 1 分钟

用阵列里的存储状态参与运算,可减少特定任务的数据搬移;电路的乘加结果仍要经过读出、编码和外围处理。

系统理解

约 2 分钟

模拟存算一体把输入映射成电压、权重映射成电导,再通过欧姆定律与电流求和得到点积。正负权重、多比特精度、编程误差与时间漂移决定这种物理结果怎样对应算法结果;ADC、复用和分块决定整个系统的速度与能效。

在电阻式存储阵列和模数转换基础上,连接器件物理、混合信号电路与计算架构。

关键参数

关键参数
参数单位含义
电导范围与读电压—决定乘积电流及对存储状态的扰动边界
转换精度与复用比例—决定读出范围、误差和有效周期数
编程误差与漂移—决定初始及随时间变化的权重偏差

常见误区

  • 存算一体一定不需要数字外围。
  • 单元能存多级电导就保证同样多位的有效计算精度。
  • 只看TOPS/W就能公平比较不同加速器。

工程深入

12 条结论 · 1 道例题

对象与计算机制

定义

存算一体把运算的一部分放到存储阵列内

存算一体利用保存数据的阵列直接参与运算,减少某些数据在独立存储单元与计算单元之间的搬移。本页聚焦以电导保存权重、用电压与电流完成向量矩阵乘法的模拟方案,不把所有存算一体实现都归为模拟电路。12

成立条件 讨论阵列内乘累加;输入输出、控制和非线性处理仍可能依赖外围电路。

公式

列电流求和实现带单位的向量矩阵乘法

在线性读出范围内,每个单元产生输入电压与电导的乘积电流,同一列按基尔霍夫电流定律求和。要把这个电流解释成算法数值,还需要输入、电导和输出的比例映射,不能把安培直接当无量纲神经网络输出。12

Ij=∑iViGijI_j=\sum_i V_iG_{ij}
Ij = Σᵢ ViGij
IjI_j
第j列的输出电流单位 A
ViV_i
第i行相对于列虚地的输入电压单位 V
GijG_{ij}
第i行第j列单元在读工作点的电导单位 S

成立条件 列端近似虚地,线阻压降和器件非线性可忽略,读电压不改变已存电导。

例题:动手算一次教学假设,可复算

教学用两行两列线性阵列,输入分别为0.10V、0.20V;两行电导分别为(10,20)μS、(30,40)μS。求两列电流。

已知

  • 采用理想虚地列端,无线阻、噪声或电导扰动。
  • 1V×1μS=1μA;所给数值是教学假设。

步骤

  1. I1=0.10×10+0.20×30=7.0μA第一列分别收集1.0μA和6.0μA。
  2. I2=0.10×20+0.20×40=10.0μA第二列分别收集2.0μA和8.0μA。
结果 两列输出电流分别为7.0μA和10.0μA。

两个输出都是同一输入向量与不同电导列的点积。

适用边界 这只证明理想电路的乘加关系,未给ADC量程和映射比例,不能据此判断有效计算位数。

精度与编码

公式

有符号权重需要差分或参考编码

电导本身不能任意取负值;可用两组非负电导的差表示正负权重,再在模拟域或数字域相减。差分编码引入额外单元和读出路径,不能只按净电流估计整个阵列的电流消耗。12

ΔGj=Gj+−Gj−,ΔI=∑jVjΔGj\Delta G_j=G_j^{+}-G_j^{-},\qquad\Delta I=\sum_jV_j\Delta G_j
ΔGj = Gj⁺ − Gj⁻;ΔI = Σⱼ VjΔGj
ΔGj\Delta G_j
第j对单元的有效电导差单位 S
Gj+G_j^{+}
正支路电导单位 S
Gj−G_j^{-}
负支路电导单位 S
VjV_j
对应输入电压单位 V
ΔI\Delta I
两支路总电流之差单位 A

成立条件 此处讨论电导差分编码;零点、缩放和共模范围必须由实际电路定义。

机制

多比特拆分要按位权重建结果

单元能稳定区分的电导级数不足以承载整个权重时,可以把权重分散到多个单元,并把各列或各周期结果按位权移位相加。输入也可按多个脉冲周期编码;单次阵列读出不必等于完整多比特乘法。1

成立条件 采用位切片或逐位输入时才需要对应的重建过程;不得把额外周期从吞吐量计算中省去。

外围与实现

边界

ADC与列复用限制可同时读出的规模

阵列同时产生列电流,并不代表每列都有独立且足够精度的ADC。模数转换的分辨率、输入范围和面积,以及列复用安排,会限制一次激活的行列数并增加转换周期。12

成立条件 限于带ADC的混合信号实现;不把某个宏电路的共享比例当通用规则。

边界

较高单元电阻降低列电流但存在读出折中

并行激活时多个单元电流累加,较低导通电阻会增加列电流和线阻压降,推动选择器与读出电路尺寸增大。提高电阻可降低这些负担,但过小读电流会增加感测难度,需和噪声、速度一起选择。12

成立条件 比较采用相同读电压和激活数量;这里不规定适用于全部技术的最佳电阻值。

关联

分块缩小阵列也会增加外围成本

把大矩阵拆到多个子阵列可减轻长导线压降,并输出部分和;完整结果还要经过跨块累加和数据传递。子阵列更小通常需要更多转换和外围电路,因而不能只看单块阵列误差下降就宣称系统能效提高。12

成立条件 分块方案需同时计入转换、累加和通信成本;具体收益由阵列尺寸及映射决定。

编程与稳定性

机制

编程校验把目标权重转换成受控电导

离线训练得到的权重写入器件后,要测量实际电导并按误差追加或调整写脉冲,直到进入允许窗口。写入校验减小编程误差,但它自身消耗时间和能量,也不能保证后续保持期间电导永远不变。12

成立条件 适用于可读回并逐步调节电导的实现;校验容差和最大重试次数需明确。

定义

推理与训练对写入通路的要求不同

固定权重推理以读取为主;原位训练需要反复改变电导,因而额外关注更新步长、更新对称性、写入耐久性和脉冲开销。片上训练还可能用多个二进制单元表示权重,并不必然要求单个器件连续调节高精度电导。12

成立条件 先区分固定权重推理、模拟原位更新和多单元片上数字权重更新,再比较器件指标。

机制

电导更新的非线性与不对称会改变训练步长

相同写脉冲不一定产生相同电导增量,而且增强与减弱电导的响应可能不同。这会使硬件实际更新偏离算法预期;影响取决于更新算法和器件工作范围,不能用静态电导级数替代更新曲线检验。12

成立条件 针对直接用器件脉冲执行模拟权重更新的训练;固定权重推理应另评估编程后的误差。

边界

漂移与涨落会让已校准权重偏离目标

编程结束只定义了初始电导;短期弛豫、长期漂移、读扰动和随机涨落可能使后续乘加结果发生变化。应在声明的温度、时间和读偏压下评估准确率,而不是把刚写完时的电导误差当全寿命误差。12

成立条件 不同存储材料的机制不同;不假定所有器件都采用同一漂移指数。

指标与证据

边界

比较TOPS/W要同时对齐精度与统计边界

不同输入位数、权重位数、输出准确率和MAC计数方式会改变标称吞吐量;只测阵列核心的能效不能直接代替包含转换、控制和数据搬移的整机能效。比较时应说明计入哪些电路以及一次MAC算几个操作。1

成立条件 教材图中采用8bit×8bit MAC计为两个操作;此为比较口径,不是所有报告的默认定义。

出处

2 份资料 · 22 处引用
  1. 1

    半导体存储器件与电路

    查看这个来源 →
  2. 2

    Device and Circuit Architectures for In-Memory Computing

    查看这个来源 →

本页结论均已对照来源核对,其中 2 条目前只有一个来源,尚未经过同行专家审阅。发现不准确的地方,请告诉我们。

报告这一页的问题