1. 项目概述从“存算分离”到“存算一体”的范式革命在人工智能算力需求爆炸式增长的今天我们正面临着一个日益严峻的“内存墙”问题。传统的冯·诺依曼架构将计算单元CPU/GPU与存储单元内存/硬盘物理分离数据需要在两者之间来回搬运。对于神经网络中频繁的向量-矩阵乘法VMM这类数据密集型操作搬运数据所消耗的能量和时间往往远超实际计算本身。这就像让一位顶尖的数学家计算单元每天的工作不是解题而是不停地从远处的图书馆存储单元搬书效率低下且能耗惊人。存内计算In-Memory Computing, IMC正是为了打破这堵“墙”而生的颠覆性范式。它的核心思想非常直观让存储器自己“学会”计算。具体到基于忆阻器Memristor的存内计算其物理基础是利用忆阻器这种两端器件可编程的、非易失的电阻状态电导值来直接表示神经网络中的突触权重。当输入电压代表输入向量施加到忆阻器交叉阵列Crossbar Array的字线Word Line上时根据欧姆定律和基尔霍夫电流定律在每条位线Bit Line上流出的总电流天然就是输入电压与各忆阻器电导的乘积累加结果即一次完整的模拟域向量-矩阵乘法。这个过程完全在存储单元内部以并行的、模拟的方式完成几乎消除了数据搬运从而实现了极高的能效和吞吐量。我过去几年深度参与了多个忆阻器存算芯片的流片与测试项目亲眼见证了这项技术从实验室原型走向硅验证的艰难与兴奋。这项技术的价值远不止于纸面上的能效数字它代表着一种根本性的设计哲学转变从追求更高的晶体管开关速度转向挖掘存储器物理特性的计算潜力。其应用场景首当其冲便是边缘计算——那些对功耗极其敏感、又需要实时智能的终端设备如智能手机、可穿戴设备、自动驾驶传感器和物联网节点。在这些场景下忆阻器的非易失特性可以实现“零静态功耗”的随时唤醒与推理优势无可比拟。然而将如此美妙的物理概念转化为稳定可靠的系统道路绝非平坦。一个高性能的忆阻器存内计算系统绝非简单地将忆阻器阵列和CMOS外围电路拼凑在一起。它涉及从底层的器件物理、中层的电路设计到上层的架构与算法的深度协同与优化。本文将结合一线研发经验深入拆解基于忆阻器的存内计算系统设计中的核心挑战与跨层协同优化策略并展望未来异构加速器的可能形态。2. 核心挑战与跨层协同设计哲学设计一个实用的忆阻器存内计算系统本质上是一个在计算精度、能效、面积、速度等多目标约束下的复杂优化问题。任何单层的优化都难以奏效必须采用“跨层协同设计”的思维。这意味着电路设计师需要理解器件的非理想特性架构师需要知晓电路的精度限制而算法工程师则要根据硬件特性来定制或选择模型。2.1 器件非理想性的系统级应对策略忆阻器作为模拟计算的核心其本身的非理想特性是系统误差的主要来源。这些特性并非“缺陷”而是其物理本质系统设计必须与之共舞。1. 电导态有限与波动单个忆阻器能够稳定区分的电导状态是有限的例如4态、8态且每个状态存在固有的波动随机性和漂移随时间变化。直接映射高精度权重如32位浮点数会导致严重的精度损失。协同设计实践 - 数字比特切片早期的一种方案是将一个高精度权重拆解到多个低精度忆阻器上。例如一个8位权重可以用4个2位忆阻器来表示。但这带来了新的问题读取时我们需要将多个忆阻器的模拟电流进行加权求和这增加了外围模拟电路的复杂性并且当忆阻器用于计算时其电导是模拟值而非离散的数字态切片间的匹配误差会放大。前沿方案 - 自适应模拟切片更先进的思路是“自适应模拟切片”。它不再将权重均匀地切片而是根据器件编程的精度特性将权重的高有效位MSB映射到编程精度更高的器件或单元上低有效位LSB映射到精度较低的单元。这就像用一把刻度不均匀但总体更精密的尺子去测量通过算法和电路的协同可以实现等效的任意精度编程。这需要在系统设计时紧密集成器件表征数据、编程算法和读出电路校准。2. 器件缺陷与良率制造过程中会产生完全失效开/短路或性能异常的器件。在包含数百万甚至数十亿器件的大规模阵列中即使良率高达99.99%缺陷数量也不容忽视。协同设计实践 - 缺陷感知训练在将神经网络模型映射到硬件之前先对目标芯片的缺陷分布进行扫描和建模生成一个“缺陷图”。随后在软件训练阶段就将这个缺陷图作为约束条件让模型在训练过程中学会“绕过”这些缺陷单元将重要的权重分配到健康的器件上。这相当于让算法提前适应硬件的“伤疤”是算法-硬件协同的典范。系统级容错 - 模拟纠错码受通信领域启发可以将模拟纠错码引入存内计算。通过在计算阵列中冗余部署一些校验单元在计算过程中同步进行结果校验甚至能在不中断运算、不重新校准的情况下纠正某些错误。这需要在阵列架构和外围电路如编解码电路层面进行精心设计权衡额外的面积/功耗开销与获得的可靠性提升。实操心得器件非理想性是无法根除的最好的策略是“测量它、建模它、适应它”。在项目初期就必须建立一套自动化的器件测试与表征流程将关键统计参数如电导分布、漂移系数、循环耐久性反馈给架构和算法团队。我们曾在一个项目中因为早期忽略了器件电导的弛豫效应导致芯片在推理一段时间后准确率缓慢下降后期不得不通过复杂的在线校准电路来弥补代价巨大。2.2 电路级权衡与精度瓶颈即使器件是理想的外围电路也会引入噪声、非线性和量化误差成为系统精度的主要瓶颈。1. 模数转换器能耗与精度的两难忆阻器阵列输出的结果是模拟电流信号要被数字处理器使用必须经过模数转换器。高精度ADC如8-10位功耗巨大可能占整个计算单元功耗的50%以上而低精度ADC如1-4位虽然节能但会引入严重的量化噪声降低计算精度。协同优化路径电路定制化为存内计算定制低功耗ADC架构。例如采用逐次逼近型ADC结合时间域或脉冲宽度调制技术或者利用存内计算本身并行性的特点使用大量超低精度但面积效率高的比较器阵列。算法鲁棒性设计与低精度输入/输出兼容的神经网络模型。二值/三值神经网络将权重和激活值限制在1/-1或1/0/-1极大降低了对ADC精度的需求同时对器件波动也更不敏感。混合精度训练允许在训练时使用高精度部署时量化到低精度也是一种有效的协同策略。2. 互连寄生效应规模与精度的矛盾忆阻器交叉阵列的规模受限于字线和位线上的寄生电阻与电容。当阵列规模变大时线上的IR压降和RC延迟会导致施加在边缘单元和中心单元电压不同读取电流也会因位线负载不同而产生偏差严重破坏计算精度。系统级解决方案阵列分块将一个大矩阵运算拆解到多个中小规模的子阵列Tile中并行计算。这是目前主流芯片采用的方案。但这就引入了新的问题如何高效地在这些子阵列之间路由和交换数据片上网络互连子阵列间的互连策略至关重要。简单的总线连接会成为带宽瓶颈。一些研究尝试使用可配置的开关网络或甚至利用忆阻器交叉阵列本身来实现可重构的互连但这增加了设计的复杂性。最优的子阵列规模和互连拓扑需要根据目标神经网络模型和工艺参数进行协同仿真和探索。3. 其他操作的硬件实现目前大多数忆阻器存内计算研究都聚焦于最耗能的矩阵乘法。但一个完整的神经网络层还包括激活函数如ReLU、池化、归一化等操作。这些操作若仍在数字域实现数据仍需在模拟计算单元和数字处理单元间搬运削弱了存算一体的优势。协同设计前沿探索这些操作的模拟或近存实现。例如利用差分对或反相器电路在模拟域实现ReLU设计特殊的模拟电路进行最大/平均池化。我们的一个原型芯片尝试了用模拟电路实现激活虽然增加了设计难度但整体能效提升了约30%。3. 从系统架构到芯片实现实战拆解理论之后我们深入一个简化的系统架构设计流程看看如何将这些协同思想落地。3.1 核心计算单元忆阻器交叉阵列的微架构设计假设我们要设计一个用于边缘图像识别的存内计算核心支持INT4精度的卷积计算。1. 阵列规模确定首先需要权衡。一个512x512的阵列可以一次性完成更大的矩阵乘但寄生效应严重精度难以保证。一个128x128的阵列精度可控但需要更多次计算来完成大任务。根据我们的仿真和测试在40nm工艺下128x128到256x256是一个在精度、能效和面积间取得较好平衡的“甜蜜点”。这需要与算法团队确认常用卷积核的尺寸确保阵列利用率高。2. 外围电路设计*数模转换器为每条字线配备一个4位电流型DAC将输入的数字激活值转换为驱动电压。设计重点在于线性度和建立时间。 *读出电路每条位线末端连接一个模拟累加器通常是一个积分器或跨阻放大器将各支路电流求和。然后连接一个模数转换器。这里有一个关键技巧采用逐位扫描的输入方式。即每次只输入一个位从最高位开始这样ADC只需要处理一位电流产生的总和其动态范围要求大大降低可以采用超低功耗的比较器型1位ADC通过多次循环完成多位量化。这是许多高性能存内计算芯片如ISSCC上报道的芯片的核心技术。 *写电路权重编程电路需要提供精密的电压/电流脉冲来设定忆阻器电导。必须集成写验证回路写入后立即读取与目标值比较若不满足则施加补偿脉冲直至收敛。这是保证权重精度的生命线。3. 数据流与控制设计一个轻量级的片上控制器FSM负责调度数据流入DAC、控制读写序列、管理ADC转换周期、以及处理子阵列间的数据搬运。其指令集需要专门为矩阵乘加操作优化。3.2 系统集成从计算核心到完整SoC单个计算核心Processing-in-Memory Core不足以运行完整的网络。我们需要构建一个完整的片上系统。1. 多核并行与片上存储将多个计算核心通过片上网络连接起来。每个核心配有本地缓存通常是用SRAM实现的Buffer用于暂存输入特征图和部分和。数据在片上的流动遵循“数据复用”原则尽量减少从片外DRAM的访问。例如一个卷积核权重加载到核心后应尽可能多地与输入图像的不同区域进行运算。2. 混合精度与异构处理并非所有层都适合用忆阻器阵列。例如网络首尾的全连接层可能维度不匹配阵列规模效率低。因此一个实用的系统往往是异构的核心的卷积层用高能效的忆阻器模拟存内计算某些特殊层或后处理则用一个小型的数字NPU或DSP来处理。这就需要设计高效的异构任务调度器和数据一致性协议。3. 芯片实测案例参考近年来已有多款成功的演示芯片。例如2023年《Science》报道的一款芯片集成了多个忆阻器阵列核心实现了完整的片上学习能效比达到78.4 TOPS/W。另一个基于相变存储器的芯片则展示了大规模多核集成。这些芯片的共同点是都采用了上述的跨层协同方法针对特定的非理想性如器件波动、ADC非线性设计了从算法到电路的联合优化方案。4. 前沿探索与未来展望4.1 片上学习从静态推理到动态适应当前绝大多数忆阻器存算系统聚焦于推理即部署训练好的静态模型。但真正的突破在于实现高效的片上训练在线学习。这能让设备在边缘端持续适应新数据和个人化需求同时避免将隐私数据上传至云端。挑战与思路写耐久性与能耗训练涉及权重的频繁更新而忆阻器的写操作能耗高、速度慢且循环次数有限。解决方案包括耐久性感知训练算法在训练算法中引入约束减少不必要的权重更新次数或只更新变化显著的权重。替代训练算法探索无需反向传播的算法如前向-前向算法。该算法仅使用前向传播通过比较正负样本的“好坏度”来局部更新权重无需存储中间激活值极大减少了内存开销和更新频率与忆阻器硬件特性非常匹配。梯度计算与存储反向传播需要存储每一层的输入激活值用于计算梯度这对片上存储是巨大压力。除了采用前向-前向等算法还可以研究近似梯度计算或利用忆阻器阵列本身进行原位梯度计算将误差反向传播也映射到交叉阵列中但这对电路设计提出了极高要求。4.2 异构内存加速器没有银弹只有组合拳没有任何一种存储技术是完美的。忆阻器如ReRAM、PCM非易失、密度高但写入慢、耐久性一般静态随机存储器写入快、耐久性无限但易失、密度低、静态功耗大。未来的趋势不是寻找“万能存储器”而是根据数据访问特性构建异构的内存层次结构。一个前瞻性的架构设想忆阻器阵列作为“慢速但高密度”的存储层存放相对稳定、不常更新的模型权重。例如Transformer模型中的大部分前馈网络权重。SRAM或嵌入式DRAM作为“快速但低密度”的存储/计算层存放需要频繁更新的中间数据、键值缓存K/V Cache或注意力Attention矩阵。例如Transformer推理时每生成一个token都需要更新的K/V矩阵。内容可寻址存储器作为一种特殊的计算结构可以高效实现注意力机制中的相似度搜索或用于超维度计算中的联想记忆。这种异构架构能将不同存储技术的优势结合起来。例如一篇2024年《Science》的文章就展示了一种将忆阻器存内计算与数字存内计算基于SRAM融合的芯片针对权重中更新频率不同的比特位进行异构存储实现了精度与能效的双重优势。4.3 超越神经网络新型计算范式忆阻器的潜力不止于加速深度学习。其动态特性非常适合构建储备池计算系统用于处理时间序列信号如语音、振动传感。其随机性可用于构建随机计算单元加速蒙特卡洛模拟或求解组合优化问题如伊辛模型。甚至可以利用其模拟特性直接实现决策树等机器学习模型。这些新兴方向要求系统架构师跳出深度学习的框架为特定的计算范式设计量身定制的存内计算架构。5. 常见问题与实战避坑指南在项目实践中我们踩过不少坑也积累了一些经验。Q1仿真结果完美但流片测试后模型准确率暴跌可能是什么原因A1这是最常见也最令人头疼的问题。请按以下顺序排查器件模型是否准确仿真用的紧凑模型是否包含了所有关键非理想性电导弛豫、循环至循环波动、器件间差异、非线性、温度依赖性建议流片前必须用测试芯片的数据反复校准模型。寄生参数提取是否充分特别是大规模阵列的互连寄生RC对信号完整性的影响是毁灭性的。必须进行后仿包括提取和仿真。写验证机制是否可靠权重编程不准是一切问题的根源。检查写验证电路的精度和收敛性是否考虑了器件电导在写入后的弛豫设定后松弛。外围电路失配是否考虑DAC的输出阻抗、ADC的偏移在不同核心、不同通道间可能存在失配需要进行系统级的校准。Q2如何为我的应用选择合适的忆阻器技术如ReRAM, PCM, FeRAMA2没有绝对的最好只有最合适。追求高密度、多值存储相变存储器通常能实现更多的稳定中间态适合需要较高权重精度的场景。追求低功耗、CMOS工艺兼容性好氧化物基阻变存储器与标准CMOS后端工艺集成度更高操作电压可能更低。追求超高耐久性用于训练需关注新型器件如电化学随机存储器其写入机制可能提供更高的耐久性。关键决策流程明确应用对精度、速度、功耗、耐久性的核心需求 - 调研各器件技术的实测性能指标不仅仅是论文里的最佳值- 评估与目标代工厂工艺的集成难度与成本 - 制作测试芯片进行可行性验证。Q3存内计算芯片的软件工具链生态如何如何部署模型A3这是目前产业化的最大短板之一。通常需要自下而上构建硬件抽象层为你的芯片定义一套底层驱动API控制数据搬运、计算启动、权重编程等。编译器/映射器这是核心工具。需要将主流框架如PyTorch, TensorFlow训练好的模型根据你芯片的具体架构阵列大小、精度、核数、内存 hierarchy进行图编译、层切分、权重量化、映射调度。这个过程必须考虑你芯片的所有非理想性进行硬件感知的模型微调或再训练。模拟器/评估器在软件层面建立一个芯片的周期精确或功能精确模型用于在流片前评估算法性能迭代软硬件协同设计。个人体会设计忆阻器存内计算系统就像在钢丝上跳舞一边是器件物理的深谷另一边是算法需求的悬崖。最大的感悟是必须抛弃传统数字芯片设计的某些“完美主义”思维。要接受不完美的器件和有噪声的计算转而通过算法韧性、电路巧思和架构冗余来构建一个在统计意义上可靠的系统。这是一个典型的“木桶理论”场景任何一层的短板都会决定最终性能。因此组建一个涵盖器件、电路、架构、算法的跨学科团队并建立高效的协同设计流程与工具链是项目成功不可或缺的前提。这条路虽然艰难但每一次在能效曲线上看到的数量级提升都让人确信它代表着计算的未来。