想象一座繁忙的餐厅后厨:主厨(CPU)技艺再精湛,也要一次次放下锅铲,跑到几十米外的仓库(内存)去取食材(数据)。取一趟葱、切一刀、再跑一趟拿高汤——真正“颠勺”的时间不到三成,大部分时间和电费都耗在了“跑腿”上。这就是冯诺依曼架构最著名的“存储墙”。而“存内计算”给了我们另一种可能:干脆把灶台搬进仓库,让食材就摆在手边的“智慧调料架”上。每个格子是一个能记住自己开度的“记忆阀门”(忆阻器),高汤从顶部倒下,流过每个阀门后汇入底部水槽,水槽收集的总量就是一次矩阵向量乘法的结果。这篇文章会带你从“跑腿的主厨”出发,看懂存内计算如何用欧姆定律和基尔霍夫定律替代软件循环,也看清真实阀门并不完美——以及聪明的主厨们如何见招拆招。

岗位关联

存内计算是突破冯诺依曼瓶颈的关键技术路径,已用于边缘 AI 推理芯片与数据中心加速卡。理解它的原理与工程挑战,你才能在 AI 硬件选型、芯片评估和推理部署中做出正确决策,为投身 AI 芯片行业打下扎实基础。

目录
  1. 可视化演示
  2. 冯诺依曼瓶颈
  3. 存内计算思想
  4. 忆阻器原理
  5. 矩阵乘法实现
  6. 精度与挑战
  7. 缓解与验证
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。

本节配有交互动效(进入视口后自动加载,约 3KB)。

系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T

冯诺依曼瓶颈

想象一家生意火爆的餐厅后厨。主厨(处理器)手艺再快,每做一道菜都得放下锅铲,一路小跑去储藏室(内存)取食材(数据):跑一趟拿葱、跑一趟拿蒜、再跑一趟取高汤……一餐饭下来,主厨真正“颠勺”的时间不到三成,其余全耗在跑腿上。图里那条 CPU 与内存之间的粗箭头,就是一条永远拥挤的传菜通道——计算机体系结构里,它叫“存储墙”。

冯诺依曼架构把“计算”与“存储”拆成两个独立部件:CPU 负责算,内存负责存,二者通过总线来回搬运数据。随着处理器主频一路飙升而内存带宽增长缓慢,搬运造成的浪费被急剧放大。到了今天动辄数十亿参数的神经网络时代,待搬运的数据量多到难以想象,“跑腿”开销早已盖过了“做饭”本身。

更深层的问题出在能量上:一次数据搬运消耗的能量,远高于一次乘加运算本身。即便计算单元全速运转,系统能效也被搬运拖垮,这便形成了“功耗墙”。把搬运成本与计算成本之比写出来,差距一目了然:

所以,业界常开玩笑说“没有跑腿,就没有瓶颈”。要打破这道墙,光把储藏室搬近一点远远不够——最好的办法,是让主厨直接在储藏室里做菜。

E搬运E计算≈102∼103\displaystyle \frac{E_{\text{搬运}}}{E_{\text{计算}}} \approx 10^2 \sim 10^3
这条公式说明:在传统架构中,搬一次数据的能耗是算一次的 100~1000 倍,所以“少搬运”比“算得快”更能省电、提效。
  1. 搬运能量分子 $E_{\text{搬运}}$ 表示处理器从内存读写一次数据所消耗的能量,是传统架构里最容易被忽视的“隐形电费”。
    E搬运E_{\text{搬运}}
  2. 计算能量分母 $E_{\text{计算}}$ 表示执行一次加法或乘法运算需要的能量,是衡量算力能效的基本单位。
    E计算E_{\text{计算}}
  3. 数量级$\approx 10^2 \sim 10^3$ 说明搬运成本比计算成本高出一到三个数量级,这正是存储墙与功耗墙共同的数学根源。
    ≈102∼103\approx 10^2 \sim 10^3

存内计算思想

如果给储藏室装上灶台,食材就摆在手边,主厨再也不用跑腿了。更进一步,把菜谱提前写成调料架上一排排可调的阀门——这便是存内计算(Computing-in-Memory)的蓝图:不仅让“做饭的地方”挨着“原料”,还让原料本身参与烹饪。

存内计算的核心思想是“原位计算”:把矩阵向量乘法这类最耗时的操作,直接在存储阵列内部完成,而不是先把全部数据搬出内存再运算。按存储介质不同,主流方案可分为三类:SRAM 存内计算速度快、易与逻辑工艺兼容;RRAM(忆阻器)存内计算密度高、可非易失存储;此外还有基于 DRAM、Flash 等的探索。无论哪种介质,目标都是让数据“就地生成结果”。

从能耗结构上看,存内计算把功耗公式里最大的“搬运项”直接清零:

主厨还是那个主厨,但灶台、调料架与食材融为一体,出菜速度自然天翻地覆——这正是存内计算在推理场景能效远胜传统芯片的根本原因。

P总=P计算+P搬运→原位计算P总≈P计算\displaystyle P_{\text{总}} = P_{\text{计算}} + P_{\text{搬运}} \quad\xrightarrow{\text{原位计算}}\quad P_{\text{总}} \approx P_{\text{计算}}
这段箭头式推演想表达:传统系统把功耗花在“算”与“搬”两件事上,而存内计算让“搬”趋近于零,总功耗几乎只剩计算本身。
  1. 总功耗$P_{\text{总}}$ 是整个系统运行时的功率,由计算与搬运两部分构成,是衡量芯片能效的总账本。
    P总P_{\text{总}}
  2. 搬运项$P_{\text{搬运}}$ 对应数据在处理器与存储之间穿梭所消耗的功率,是传统架构中的“大头开销”。
    P搬运P_{\text{搬运}}
  3. 原位计算转移$\xrightarrow{\text{原位计算}}$ 表示通过把运算搬进存储阵列,使搬运功率趋近于零,总功率约等于计算功率。
    →原位计算\xrightarrow{\text{原位计算}}

忆阻器原理

智慧调料架的关键,是每个格子里的“记忆阀门”:你把它拧到某个开度,它就牢牢记住这个位置,即使断水断电也不松手。酱汁流过阀门的量,恰好等于“阀门开度 × 倒入流速”——开度大,过汤多;开度小,过汤少。

这个会记忆开度的阀门,在电路世界里就是忆阻器(Memristor)。忆阻器的核心参数是电导 $G$(电阻的倒数):$G$ 越大,阀门开得越大、越容易导电。关键在于,$G$ 可以被编程为多个稳定档位,断电后依然保持,天然充当“模拟权重存储器”。实际芯片中,忆阻器通常排成横纵交错的交叉阵列:水平方向是字线,竖直方向是位线,每个交叉点就是一个忆阻器单元,整块阵列如同一面巨大的调料架。

忆阻器表达权重的本质,是让电导落在某个离散档位上。档位越多,单个器件能存储的比特数越高:

有了会“记得开度”的阀门,调料架才能一边存储一边参与做菜——“存”与“算”在物理层面合为一体,这正是存内计算区别于传统存储芯片的分水岭。

I=G×V,G∈{g1,g2,…,g2B}\displaystyle I = G \times V, \qquad G \in \{g_1, g_2, \ldots, g_{2^B}\}
这条公式把忆阻器一分为二地讲清楚:左边是欧姆定律,说明“电流 = 电导 × 电压”;右边说明电导并非连续任意值,而是落在 $2^B$ 个可编程档位中,代表 $B$ 比特的权重精度。
  1. 电流$I$ 表示流过忆阻器单元的电流,它是后续列线求和的最小贡献单位。
    II
  2. 电导$G$ 是器件的模拟电导,好比阀门的开度,决定了“导通能力”的大小。
    GG
  3. 欧姆关系$I = G \times V$ 表明电流由电导与电压共同决定,乘法在物理上一步完成,无需软件指令。
    I=G×VI = G \times V
  4. 档位集合$\{g_1, \ldots, g_{2^B}\}$ 表示电导可编程为 $2^B$ 档,即单个器件可存储 $B$ 比特权重。
    G∈{g1,g2,…,g2B}G \in \{g_1, g_2, \ldots, g_{2^B}\}

矩阵乘法实现

做菜时,主厨从架子顶部把高汤缓缓倒下:汤水沿每一行流过,路过每个阀门时,流过的量由“阀门开度 × 该处汤水量”决定;底部每一列的水槽把所有来水汇在一起——整套流程,恰好完整实现了矩阵向量乘法。

在交叉阵列上,这条流程的电路实现是:行线施加输入电压 $V_i$(对应向量的每个分量),交叉点的忆阻器电导 $G_{ij}$ 代表权重矩阵的元素,列线上汇集的电流 $I_j$ 就是乘加结果。整个过程完全由欧姆定律和基尔霍夫电流定律驱动,没有任何软件循环,因此天然具备极高的并行度。

第 $j$ 列汇集的总电流,可以写成一个优雅的式子:

不过,电导只能是正数,而神经网络权重有正有负。实际芯片因此常采用“差分阵列”:每个权重用一对器件($G^+$、$G^-$)表示,二者之差还原权重的符号与大小。这就好比每道配方都配一甜一咸两瓶阀门,最终味道由两者之差决定——一石二鸟的设计。

Ij=∑i=1NVi×Gij=(VTG)j\displaystyle I_j = \sum_{i=1}^{N} V_i \times G_{ij} = (V^T G)_j
这条公式是存内计算的“灵魂”:它把矩阵向量乘法 $y = Wx$ 拆成了“每个单元算乘法、每条列线做加法”,而这两件事都由物理定律瞬间完成。
  1. 行输入$V_i$ 是施加在第 $i$ 行的输入电压,对应向量 $x$ 的第 $i$ 个分量,好比倒入第 $i$ 排格子的汤汁量。
    ViV_i
  2. 单元电导$G_{ij}$ 是 $(i,j)$ 位置忆阻器的电导,代表权重矩阵第 $i$ 行第 $j$ 列的元素,好比该格阀门的开度。
    GijG_{ij}
  3. 支路电流$V_i \times G_{ij}$ 由欧姆定律给出,是该单元流入第 $j$ 条列线的电流贡献。
    Vi×GijV_i \times G_{ij}
  4. 求和汇聚$\sum_{i=1}^{N}$ 依据基尔霍夫电流定律,把同一列所有电流相加,结果恰好等于矩阵向量乘法的第 $j$ 个输出分量。
    ∑i=1N\sum_{i=1}^{N}

精度与挑战

完美的阀门只存在于图纸上。真实的记忆阀门会生锈、弹簧会疲劳:开度随时间慢慢偏移,反复拧动还会松脱;更麻烦的是,同一家工厂出品的阀门,彼此之间天然就存在细微差别——这就是“工艺变异”。主厨若对阀门误差不闻不问,再好的菜谱也会翻车。

对应到器件层面,忆阻器存在三大非理想特性。其一是电导漂移:写入的状态会随时间和温度缓慢偏离;其二是 I-V 非线性:电流与电压并非严格成正比,阀门“开得越大越容易松”;其三是器件间变异:同一阵列中每个器件的特性都不完全一致,仿佛每只阀门的弹簧硬度都略有不同。再叠加外围电路的限制——输入需要 DAC 编码、输出需要 ADC 量化——实际推理精度会显著偏离理想值,这就是“映射精度损失”。

把一只阀门的真实开度写出来,理想值背后跟着一串“偏差项”:

所以,把菜谱刻进真实世界的调料架后,出锅的味道总难免有点“走样”。好消息是——经验丰富的主厨们早就备好了对策。

G实际=G理想+ΔG漂移+ΔG噪声+ΔG变异\displaystyle G_{\text{实际}} = G_{\text{理想}} + \Delta G_{\text{漂移}} + \Delta G_{\text{噪声}} + \Delta G_{\text{变异}}
这条公式想说明:实际电导 = 目标电导 + 时间漂移 + 随机噪声 + 工艺变异。四个来源共同决定了模拟计算的精度天花板。
  1. 理想值$G_{\text{理想}}$ 是写入时希望达到的目标电导,对应训练好的精确权重。
    G理想G_{\text{理想}}
  2. 漂移项$\Delta G_{\text{漂移}}$ 表示电导随时间、温度缓慢偏移,如同阀门弹簧逐渐松弛。
    ΔG漂移\Delta G_{\text{漂移}}
  3. 噪声项$\Delta G_{\text{噪声}}$ 是读写过程中的随机扰动,每次读取都会带来微小起伏。
    ΔG噪声\Delta G_{\text{噪声}}
  4. 变异项$\Delta G_{\text{变异}}$ 反映制造工艺造成的器件间固有差异,属于“出厂自带”的误差。
    ΔG变异\Delta G_{\text{变异}}

缓解与验证

有经验的主厨不会坐等阀门完美,他们会做三件事:给每道配方装两瓶互相对冲的阀门,抵消开度波动;开张前逐格校准所有阀门;再在菜谱设计时就故意留出容错空间。这套方法论放进芯片设计里,每一件都有对应的技术落点。

缓解策略可以概括为三个层次。器件与电路层面:采用差分阵列抵消共模漂移,并用“写入-校验-重写”(write-verify)把每个电导校准到目标值附近。算法层面:通过含噪训练、量化感知训练提升模型对器件误差的鲁棒性,让网络“天生耐造”。系统层面:通过冗余计算和动态补偿兜底,即使个别阀门失效,整体推理结果依然可靠。

差分结构的核心收益在于共模误差消除。假设正、负阵列的电导同时漂移了同一个量,那么作差之后漂移被抵消:

正是靠着“阀门对冲 + 逐格校准 + 容错菜谱”这套组合拳,存内计算已经从论文走进真实芯片:IBM、台积电以及国内多家 AI 芯片公司,都已在 SRAM/RRAM 存内计算上跑通了语音唤醒、图像分类等真实应用,用极低功耗验证了方案的可行性与效果。

Ij=Ij+−Ij−=∑i=1NVi(Gij+−Gij−)\displaystyle I_j = I_j^{+} - I_j^{-} = \sum_{i=1}^{N} V_i \left( G_{ij}^{+} - G_{ij}^{-} \right)
这条公式展示了差分设计的精妙:$I^+$ 与 $I^-$ 各自包含相似的漂移误差,相减后公共误差相互抵消,而真正的权重信号(两者之差)被完整保留。
  1. 正支路$I_j^{+}$ 由正电导阵列($G^{+}$)产生,代表正权重的贡献部分。
    Ij+I_j^{+}
  2. 负支路$I_j^{-}$ 由负电导阵列($G^{-}$)产生,代表负权重的贡献部分。
    Ij−I_j^{-}
  3. 作差抵消$I_j^{+} - I_j^{-}$ 利用差分结构减去两路的公共漂移和噪声,使误差互相抵消。
    Ij+−Ij−I_j^{+} - I_j^{-}
  4. 权重还原$G_{ij}^{+} - G_{ij}^{-}$ 的差值正比于原始权重,既支持正负权值,又增强了抗干扰能力。
    Gij+−Gij−G_{ij}^{+} - G_{ij}^{-}

AI 应用场景

智能语音唤醒芯片

阶段:边缘端模型推理

解决的问题:智能音箱、耳机需要 7×24 小时监听唤醒词,传统方案中麦克风数据持续从内存搬运到 DSP 处理,待机功耗高、电池不耐用。存内计算把语音模型权重直接烧录进忆阻器阵列,音频特征输入后直接在阵列内完成矩阵乘法,将唤醒功耗从毫瓦级压到微瓦级。

具体案例:某国产 AI 芯片公司采用 RRAM 存内计算方案实现“小爱/天猫精灵”等唤醒词的本地识别,待机功耗较传统 DSP 方案降低约一个数量级,响应延迟也因省去搬运而明显缩短。

云端推荐排序加速

阶段:数据中心推理服务

解决的问题:推荐系统里 embedding 与 MLP 层包含海量矩阵乘加运算,GPU 内存带宽成为瓶颈,单次请求耗电高、延迟大。存内计算加速卡把权重驻留在片上的 RRAM 阵列中,输入特征直接完成乘加,显著缓解“搬运墙”。

具体案例:某互联网公司在广告点击率预估模型上部署存内计算原型卡,实测单卡能效比(每瓦特推理次数)较传统 GPU 提升 5~10 倍,端到端延迟降低约 40%。

可穿戴健康监测

阶段:端侧实时推理

解决的问题:手表、手环中的心电/血氧分析需要持续运行小型神经网络,电池容量有限。存内计算让网络权重“长在”存储里,省去频繁搬运,使可穿戴设备可以全天候分析心律异常,而无需频繁充电。

具体案例:某医疗可穿戴设备厂商在 PPG 信号分类器上采用 SRAM 存内计算协处理器,整机续航从 3 天延长到 10 天,房颤检测准确率保持在 93% 以上。

Python 演示

python42 行
import numpy as np def train_layer(X, y, lr=0.1, epochs=100):    """在普通计算机上训练单层感知机, 得到权重矩阵 W"""    n = X.shape[0]    W = np.random.randn(2, X.shape[1]) * 0.5    for _ in range(epochs):        scores = X @ W.T        exp = np.exp(scores - scores.max(axis=1, keepdims=True))        probs = exp / exp.sum(axis=1, keepdims=True)        W -= lr * (probs - y).T @ X / n    return W def map_to_conductance(W, G0=1.0, w_max=6.0):    """把权重映射为差分忆阻器电导对 (G+, G-)"""    G_plus = G0 + W / w_max    G_minus = G0 - W / w_max    return G_plus, G_minus def crossbar_inference(X, G_plus, G_minus, noise=0.02):    """在模拟交叉阵列上执行矩阵向量乘法 I = V @ G"""    I_plus = X @ G_plus.T    I_minus = X @ G_minus.T    I_plus *= 1 + noise * np.random.randn(*I_plus.shape)    I_minus *= 1 + noise * np.random.randn(*I_minus.shape)    return I_plus - I_minus def main():    rng = np.random.default_rng(42)    X = rng.random((20, 4))    y = (X[:, 0] + X[:, 1] > 1).astype(int)    y_onehot = np.eye(2)[y]    W = train_layer(X, y_onehot)    G_plus, G_minus = map_to_conductance(W)    scores = crossbar_inference(X[:5], G_plus, G_minus)    preds = np.argmax(scores, axis=1)    print("预测类别:", preds)    print("真实类别:", y[:5])    print("一致率:", np.mean(preds == y[:5])) if __name__ == "__main__":    main()
目的:演示存内计算的完整流程——先在普通计算机上训练出权重,再把权重映射为差分忆阻器电导对,最后在“模拟交叉阵列”里加入噪声完成推理,直观对比存内计算结果与真实标签。
  1. W -= lr * (probs - y).T @ X / n梯度下降更新权重,等价于传统数字芯片里的“训练”阶段。
  2. G_plus = G0 + W / w_max把权重线性映射为正电导,模拟“阀门开度记录权重”。
  3. G_minus = G0 - W / w_max配套的负电导支路,差分结构于是可以表达正负权重。
  4. I_plus = X @ G_plus.T模拟阵列正支路的电流汇聚,一行代码对应整个物理阵列的并行乘加。
  5. I_plus *= 1 + noise * np.random.randn(...)给电流乘上随机扰动,模拟器件非理想特性中的噪声。
  6. return I_plus - I_minus差分作差抵消共模误差,正是芯片设计中削弱漂移的核心思想。

常见误区

误区既然问题是数据搬运太慢,那把 L1/L2 缓存多做大几级、让数据离 CPU 更近一些,不就是存内计算了吗?

正解完全不是一回事。缓存再大,也只是把仓库搬到后厨门口,主厨依然要一勺一勺地取食材——搬运并未消除,只是缩短。存内计算的本质是让运算直接在存储阵列内部发生:阀门(忆阻器)里的电导本身就是权重,通电即算,压根不需要把数据“搬出来”。

为何常见:因为两者从效果上看都缓解了访存延迟,初学者容易把“减少搬运距离”误当成“消除搬运”。

误区模拟电路嘛,只要把电压电流量得足够精细,精度就能做到和数字芯片一样的 16 位、32 位。

正解模拟计算的精度受器件噪声、电导漂移、ADC/DAC 量化等多重限制,实际有效精度通常只有 4~8 比特。数字芯片可以通过增加位宽无限提升精度,而模拟器件的物理噪声是“地板”,再精细的测量也绕不过去。

为何常见:课本上学的都是理想器件模型,忽略了真实世界中的热噪声、工艺误差和老化漂移。

误区权重一旦烧录进忆阻器,就像刻进石头一样稳固,推理结果永远精确,不需要任何维护。

正解忆阻器的电导会随时间漂移、受温度影响,反复读取也会造成轻微扰动,如同记忆阀门“弹簧疲劳”。因此真实芯片需要定期校准、写入校验,或配合容错训练来吸收误差。

为何常见:人们常把非易失存储器类比成 ROM,认为“断电不丢”就等于“永不改变”,忽略了模拟状态的连续漂移特性。

误区存内计算能效这么高,AI 芯片迟早全面换成存内计算架构,GPU 会被淘汰。

正解存内计算在矩阵乘加密集、容错性强的推理场景优势突出,但在通用计算、高精度训练、复杂控制流等任务上仍不如数字处理器。当前的主流趋势是异构融合:GPU/CPU 负责灵活调度与高精度运算,存内计算阵列充当高能效推理引擎。

为何常见:只盯着存内计算在特定 benchmark 上的亮眼数字,忽略了任务的多样性、生态兼容成本和精度天花板。

面试题

Q1. 冯诺依曼架构中“存储墙”问题的本质是什么?

单选题 · easy

  • A.存储器容量增长停滞
  • B.CPU与内存速度差距大← 正确答案
  • C.存储器价格过于昂贵
  • D.存储芯片体积难缩小

答案:B。“存储墙”指的是处理器计算速度与内存访问速度之间不断拉大的鸿沟。主厨(CPU)越跑越快,但仓库(内存)取食材的速度跟不上,跑腿时间成为瓶颈。容量、价格、体积都不是“墙”的核心含义。

Q2. 忆阻器中电流、电压与电导三者遵循哪条物理定律?

单选题 · easy

  • A.欧姆定律← 正确答案
  • B.库仑定律
  • C.安培定律
  • D.楞次定律

答案:A。忆阻器单元的关系式是 I = G × V,这正是欧姆定律的变体:电流等于电导乘以电压。就像水流量等于阀门开度乘以水压,这道题考的是存内计算诞生乘法的最基本原理。

Q3. 模拟存内计算中,神经网络权重通常以什么形式存储在器件中?

单选题 · mid

  • A.数字二进制码
  • B.模拟电导数值← 正确答案
  • C.电容电荷数量
  • D.晶体管开关状态

答案:B。在忆阻器阵列中,权重通过电导的多档位数值来表达,G 越大代表权重越大,如同阀门开度记录配方分量。数字二进制码是传统存储的做法;电荷和开关状态都不是忆阻器表达权重的核心方式。

Q4. 实际存内计算芯片常采用 (G+, G-) 差分结构,最主要的原因是什么?

单选题 · mid

  • A.支持正负权重← 正确答案
  • B.提升存储容量
  • C.降低阵列面积
  • D.简化外围电路

答案:A。电导只能是正数,而神经网络权重有正有负。差分结构用一对器件的电导之差还原权重符号,同时还能抵消两路的共模漂移。提高容量、减小面积、简化电路都不是差分设计的主要动机。

Q5. 电导漂移对神经网络推理的影响主要体现在哪个方面?

单选题 · hard

  • A.输入电压幅度变化
  • B.权重值缓慢偏离← 正确答案
  • C.矩阵维度发生改变
  • D.时钟频率逐渐降低

答案:B。电导漂移指写入的电导状态随时间、温度缓慢变化,而权重正是以电导形式存储的,所以漂移的直接后果是“菜谱分量走样”——权重值偏离训练好的数值。输入电压、矩阵维度、时钟频率都与电导漂移无直接关系。

Q6. 存内计算最核心的架构优势是什么?

单选题 · easy

  • A.大幅提升存储密度
  • B.消除数据搬运瓶颈← 正确答案
  • C.提高时钟主频上限
  • D.简化软件开发流程

答案:B。存内计算把乘法加法直接搬进存储阵列,让数据在“原产地”被消费,从而消除了最耗时的搬运环节。它并不提升存储密度或主频,反而对软件编译提出了新的适配要求。

Q7. 差分映射 w = α(G+ − G−),若 G+ 与 G− 同时漂移 +δ,则计算出的权重如何变化?

单选题 · extreme

  • A.变为零
  • B.增大 δ
  • C.保持不变← 正确答案
  • D.变为负值

答案:C。两路电导同时漂移同一个量时,(G+ + δ) − (G− + δ) = G+ − G−,漂移被完全抵消。这正是差分设计“阀门对冲”的巧妙之处——公共误差消除,真实信号保留。

Q8. 存内计算面临的主要工程挑战包括哪些?

多选题 · mid

  • A.器件工艺变异← 正确答案
  • B.电导漂移非线性← 正确答案
  • C.芯片面积变大
  • D.映射精度受限制← 正确答案

答案:ABD。工艺变异让器件间特性不一致,电导漂移与 I-V 非线性使模拟结果偏离理想值,DAC/ADC 的有限位宽又导致映射精度损失,这三者共同构成主要挑战。芯片面积变大不是存内计算特有的核心难题。

Q9. 以下哪些属于缓解存内计算精度损失的策略?

多选题 · mid

  • A.差分阵列映射← 正确答案
  • B.写入后校准补偿← 正确答案
  • C.取消输入转换
  • D.容错网络训练← 正确答案

答案:ABD。差分阵列抵消共模漂移,写入-校验-重写把电导校准到目标值,含噪训练让模型对误差更鲁棒,三者都是主流缓解手段。取消输入转换意味着去掉 DAC,在实际系统中并不可行。

Q10. 忆阻器存内计算适合 AI 推理场景的原因有哪些?

多选题 · hard

  • A.模拟域天然并行← 正确答案
  • B.极低推理功耗← 正确答案
  • C.精度无任何损失
  • D.减少权重搬运← 正确答案

答案:ABD。交叉阵列在模拟域中所有乘加同时发生,天然并行;物理执行省去搬运,功耗极低且无需反复读取权重。但模拟计算存在精度损失,远非“无任何损失”,因此 C 错误。