1. 项目概述当存内计算遇上脉冲神经网络在人工智能硬件加速的赛道上我们一直在寻找一个“圣杯”既要算得快、算得准又要功耗低、面积小。传统的冯·诺依曼架构计算和存储分离数据像潮水一样在处理器和内存之间来回搬运这“搬运”本身消耗的能量常常比实际计算还要多。存内计算CIM的出现就是为了从根本上解决这个“内存墙”问题。它的思路很直接既然数据搬运是瓶颈那就把计算单元直接搬到数据旁边在内存阵列里就地完成运算比如神经网络里最核心的乘累加MAC操作。而在神经网络家族中脉冲神经网络SNN因其模仿生物神经元的工作方式而备受关注。它不进行连续的数值计算而是通过离散的“脉冲”事件来传递信息具有天然的稀疏性和事件驱动特性理论上能实现极低的功耗。更吸引人的是SNN支持一种名为脉冲时序依赖可塑性STDP的生物启发式无监督学习规则让硬件能够像大脑一样根据输入信号的时序关系自主调整连接强度权重实现“边推理、边学习”。然而将CIM与SNN的片上STDP学习结合起来面临着一系列棘手的硬件挑战。传统的静态随机存取存储器SRAMCIM单元面积大、密度低而一些基于新兴存储器如RRAM的方案又面临工艺不成熟、与标准CMOS产线兼容性差的问题。嵌入式动态随机存取存储器eDRAM凭借其高密度和逻辑工艺兼容性成为一个有吸引力的折中选择但其固有的破坏性读取和电荷保持问题又给CIM设计带来了新的难题。我们今天要深入拆解的就是一篇来自学术前沿的硬核工作一个基于3T-1C eDRAM的存内计算系统专门为SNN的片上无监督STDP学习而优化。它通过一系列精巧的电路和架构创新在28nm CMOS工艺下实现了0.57 mm²的面积、0.15 nJ/像素的学习能耗并在MNIST数据集上达到了89.4%的分类准确率。这不仅仅是一个电路设计更是一套完整的、从存储单元到系统架构的协同优化方案。无论你是芯片设计工程师、神经形态计算研究者还是对高效AI硬件感兴趣的开发者这篇文章都将带你深入其技术核心理解每一个设计决策背后的“为什么”。2. 核心设计思路为何是3T-1C eDRAM在深入电路细节之前我们必须先理解整个设计的顶层思路。目标很明确为SNN的片上STDP学习设计一个高密度、高能效的CIM宏单元。这直接引出了几个核心需求首先存储单元必须足够小以容纳海量的突触权重其次它需要支持高效的行列转置访问因为STDP学习规则要求能按列对应突触后神经元快速读取和更新权重最后整个系统的模拟计算部分必须尽可能避免使用高功耗的模数转换器ADC。2.1 存储单元选型从1T-1C到3T-1C的进化常见的eDRAM单元是1T-1C结构它只有一个晶体管和一个电容面积效率极高。但其读取是破坏性的通过电荷共享原理将存储节点SN的电荷分享到位线上进行感应读取后存储节点的数据就被破坏了必须紧接着进行一次“写回”操作来恢复数据。这个“恢复”操作带来了额外的功耗和延迟开销对于需要频繁进行权重读取的在线学习场景来说这是不可接受的。另一种思路是使用增益单元Gain Cell例如2T-1C eDRAM。它的读取是非破坏性的通过控制晶体管的栅极电压来感应存储状态而不影响存储电荷。听起来很完美但它有一个致命问题潜行电流。在读取时当读位线电压升高同一列中那些存储‘0’低电平的未选中单元其读端口晶体管可能会被微弱地打开形成从读位线到地的潜行电流路径。这会严重降低读取裕度增加功耗并限制位线动态电压范围进而影响可表示的权重精度。为了解决潜行电流问题同时避免破坏性读取的恢复开销论文提出了3T-1C eDRAM单元。它在2T结构的基础上增加了一个晶体管将“读访问”晶体管和“存储”晶体管的功能分离开。这个额外的晶体管就像一道闸门有效阻断了潜行电流路径。虽然比2T-1C多了一个晶体管面积略有增加但它同时获得了非破坏性读取行方向的潜力和解决潜行电流问题的能力为后续设计扫清了障碍。实操心得单元选型的权衡在芯片设计中没有“银弹”。1T-1C面积最小但需恢复2T-1C无需恢复但有潜行电流3T-1C解决了前两者的问题但面积稍大。这个选择体现了经典的“面积-性能-功耗”权衡。关键在于论文作者敏锐地意识到对于CIM中的SNN学习行列访问能力和读取稳定性的优先级高于极致的单元面积。他们通过后续的“无恢复访问”机制巧妙地将3T-1C在列读时固有的破坏性读取的劣势转化为了优势。2.2 双模操作与转置访问一核两用的智慧这个3T-1C单元被设计成支持双模操作以完美适配SNN的推理和学习两种任务。CIM模式行向访问用于推理在此模式下单元进行行向读取。当一个负脉冲代表输入脉冲施加到行字线时根据存储的权重值是‘H’高逻辑1还是‘L’低逻辑0会在行位线上产生或不产生一个充电电流。同一列上的所有单元产生的电流在行位线的电容上进行积分累加直接模拟了SNN中突触后神经元膜电位的累积过程。这个过程是非破坏性的且得益于3T结构没有潜行电流干扰保证了累积的线性度和精度。存储模式列向访问用于学习当某个突触后神经元发放脉冲时需要更新与之连接的所有突触权重。这时系统切换到存储模式进行列向访问。通过激活列字线该列所有单元的存储节点与列位线进行电荷共享从而读取权重值。这个过程是破坏性的但关键在于读取之后紧接着就是根据STDP规则计算新权重并写入。既然旧数据马上就会被新数据覆盖那么传统的“恢复”操作就变得多余了。这就是“无恢复访问”的核心思想将“读-计算-写”序列化使破坏性读取不再成为负担反而省去了恢复功耗。这种行列转置访问能力使得无论是按行进行并行的乘积累加推理还是按列进行并行的权重读取/更新学习都能高效完成。一个非转置的阵列在更新一列权重时需要逐行访问需要n个周期n为行数而转置阵列可以单周期访问整列极大加速了学习过程。2.3 告别ADC混合信号神经元的巧妙设计SNN的另一个特点是其输出是二值的脉冲事件。这启发我们能否避免使用高精度、高功耗的ADC来读取模拟的膜电位论文给出的答案是泄漏积分发放位线LIF_BL和混合信号神经元。传统的模拟神经元膜电位在电容上积分当电压超过阈值时发放脉冲。但电源电压限制了电容电压的最大范围为了表示大范围的膜电位值不得不进行电压缩放这会损害信号裕度和线性度。本文的混合信号神经元方案非常巧妙模拟积分膜电位仍在LIF_BL的电容上以模拟电压形式积分。模拟减法与数字计数当积分电压超过一个参考电压Vref时并不立即发放脉冲而是先启动一个“减法”操作。一个专用的减法电路块会从LIF_BL电容上放掉相当于Vref的电荷。同时一个数字计数器NS加1。虚拟扩展范围神经元的真实膜电位由两部分共同表示LIF_BL上剩余的模拟电压 数字计数器NS的值 * Vref。这就相当于把模拟电压的动态范围“虚拟地”扩展了不再受限于电源电压。只有当模拟部分再次积分超过Vref才继续减法和计数。当需要判断是否发放脉冲时系统会根据当前的NS值动态调整比较器的阈值。这个方法用简单的减法电路和数字计数器取代了复杂的ADC同时避免了纯近似方法带来的精度损失是兼顾能效和精度的典范。3. 核心电路实现细节拆解理解了顶层架构我们深入到晶体管级看看这些巧思是如何落地的。3.1 3T-1C eDRAM单元结构与操作单元的核心是三个NMOS晶体管M1, M2, M3和一个金属-氧化物-金属MOM电容。M1写访问管栅极连接列字线CWL用于写入数据。源极连接列位线CBL。M2存储管其栅极电容与MOM电容共同构成存储节点SN。它用于保持电荷其栅压状态‘H’或‘L’代表存储的权重。M3读访问管栅极连接行字线R_RWL源极连接行位线R_RBL。它是行向读出的关键。MOM电容利用多层金属M1-M7在单元内部垂直堆叠形成在不显著增加单元面积的前提下最大化存储电容。大电容对于提高列读时的电荷共享裕度、延长数据保持时间至关重要。行向累积操作推理权重以电压形式存储在SN节点V(SN) VDD代表权重‘0’V(SN) ≈ 0V代表权重‘1’。输入脉冲到来时R_RWL被施加一个负向短脉冲例如从VDD降到0V再恢复。如果存储的权重是‘1’SN为低M2管关闭M3管的源极接R_RBL和漏极接SN电位接近M3无法导通R_RBL上无电流。如果存储的权重是‘0’SN为高M2管开启。当R_RWL变低时M3管导通电流从R_RBL通过M3和M2流向地对R_RBL的寄生电容进行放电注意原文描述为充电实际根据电路结构更可能是放电或电流积分具体取决于预充电电平。同一列上所有被激活单元输入为1且权重为0的电流会共同对R_RBL电容进行积分电压变化量即代表了膜电位的累积。列向读/写操作学习读CBL被预充电到VDD/2。激活CWL施加一个升压电压如1.4V以克服NMOS阈值损失存储节点SN的电荷与CBL共享。根据SN是‘H’还是‘L’CBL电压会产生微小的正或负变化。这个变化被灵敏放大器Sense Amplifier, SA检测并放大。写根据STDP计算出的新权重值通过写驱动电路将CBL或CBLB驱动到全摆幅VDD或GND并通过导通的M1管写入SN节点。3.2 实现无恢复访问的灵敏放大器这是设计中的一大亮点。传统的DRAM灵敏放大器在检测到数据后需要将放大后的数据再写回存储单元进行恢复。为了支持“无恢复访问”论文设计了一种新型灵敏放大器电路。其关键控制信号是位线隔离信号ISO_BL, ISO_BLB。在学习读操作时完成电荷共享和灵敏放大后ISO_BL和ISO_BLB信号被关闭。这切断了灵敏放大器输出端与位线CBL/CBLB之间的连接。因此即使位线上的电压已被读取操作破坏灵敏放大器内部锁存的数据也已准备好用于后续计算但破坏性的电压不会通过位线反馈回去影响存储单元。紧接着写驱动电路根据新计算出的权重直接驱动位线将新数据写入单元。而在需要数据刷新的操作时ISO_BL和ISO_BLB信号则保持开启使灵敏放大器能够将数据恢复到位线并写回单元保持数据完整性。这种设计使得同一个灵敏放大器能够自适应地支持两种操作模式学习时的无恢复高速访问以及维持数据持久性所需的刷新操作。模拟结果显示相比传统必须恢复的读取无恢复访问在eDRAM CIM宏中节省了约27%的能耗。3.3 抗工艺偏差的减法电路块混合信号神经元中的减法操作是通过在固定时间窗口内打开一个NMOS放电管来实现的。然而晶体管的驱动电流受工艺偏差影响很大固定的放电时间可能导致每次减去的电荷量不一致引入计算误差。为此论文提出了一个工艺跟踪减法块。它由一组二进制加权的NMOS晶体管M1-M6、选择逻辑和一个预充电PMOS管构成。其工作流程如下启动校准在系统启动时该电路执行一个校准序列。循环测试在每个校准周期先将LIF_BL预充电到一个已知电压然后尝试用当前选中的NMOS组合进行放电。比较与调整放电后将LIF_BL剩余电压与目标参考电压Vref进行比较。如果电压高于Vref说明放电不足则在下一个周期激活更多或更大尺寸的NMOS管如果低于Vref则减少。锁定配置通过这种线性搜索找到能使放电后电压最接近Vref的NMOS管组合。这个组合就被锁定用于后续正常的减法操作。这个过程确保了即使在不同的工艺角下每次减法操作从LIF_BL上移走的电荷量对应电压Vref是基本恒定的大大增强了系统的鲁棒性。4. 系统级架构与工作流程有了强大的基础单元和电路模块我们来看它们如何被组织成一个完整的SNN处理器。4.1 整体硬件架构该系统针对MNIST手写数字数据集裁剪为24x24像素进行优化实现了一个全连接层576个输入神经元 x 400个输出神经元每个突触权重为3比特。eDRAM突触阵列这是核心计算和存储区域。为了支持3比特权重权重值的不同位被存储在不同的存储体中。例如最低有效位LSB存储在一个存储体下一位存储在另一个以此类推。整个阵列被划分为多个Tile每个Tile包含一组例如4x3个存储体连接到40个突触后神经元。总共10个Tile来支持400个输出神经元。脉冲解码器将输入的数字脉冲地址解码为具体的行控制信号。它被设计成可以并行解码最多4个输入脉冲地址以利用输入脉冲的稀疏性。权重更新模块这是STDP学习算法的“大脑”。它接收从突触阵列读取的当前权重值以及来自系统的“脉冲时间差”信号根据NSD-STDP算法计算权重更新概率并通过伪随机数生成器决定是增强、抑制还是保持权重。计算块与寄存器阵列管理每个神经元的动态阈值Vref和减法计数NS实现混合信号神经元的逻辑。比较器将LIF_BL的模拟电压与动态阈值Vref进行比较产生“发放”或“减法”控制信号。4.2 片上无监督学习工作流程整个芯片的工作遵循一个清晰的流程输入编码24x24的MNIST图像被转换为脉冲序列例如根据泊松分布在1000个时间步内生成脉冲。推理与膜电位积分脉冲解码器将输入脉冲地址转换为行选通信号。选中的行在eDRAM阵列中执行并行MAC操作电流在LIF_BL上积分。膜电位处理比较器持续监控LIF_BL电压。如果电压超过Vref且处于“减法模式”则触发减法电路NS计数器加1。如果电压超过Vref且处于“发放模式”则该突触后神经元“发放”脉冲。侧抑制与学习触发当一个神经元发放后侧抑制机制会暂时抑制其他神经元形成竞争学习。同时该神经元的发放触发了学习过程。权重更新STDP学习 a.列读发放神经元对应的整列权重被并行读取无恢复访问。 b.STDP计算权重值和对应的“脉冲时间差”被送入WUM。WUM根据公式计算增强或抑制的概率并与随机数比较决定权重更新方向。 c.列写计算出的新权重被并行写回该列的所有突触单元。循环上述过程在每个时间步重复直到处理完所有输入时间步。整个训练使用60,000个无标签图像进行。4.3 保持时间与精度权衡eDRAM需要定期刷新以防止数据丢失。在CIM中问题更复杂存储节点电压的衰减不仅会导致数据丢失还会因为晶体管电流特性的变化导致MAC计算的非线性误差。论文通过蒙特卡洛仿真分析了刷新周期与分类精度之间的关系。由于SNN输入的脉冲具有稀疏性单个周期内只有少量单元被激活因此单次计算误差较小。但误差会在LIF_BL的模拟积分过程中随时间累积。仿真表明存在一个最佳平衡点当刷新周期设置为120微秒时分类精度损失仅为约0.3%同时对系统吞吐量的影响也处于可接受水平归一化性能影响为0.33。这个刷新周期远长于典型DRAM的要求得益于较大的MOM电容和优化的电路设计。5. 实现结果、挑战与实战启示5.1 性能评估与对比该设计采用28nm CMOS工艺实现。面积整个SNN处理器面积为0.57 mm²。其中eDRAM突触阵列占据了约50.7%的面积每个CIM宏单元包含144x40的阵列及外围电路面积为2377 µm²。能效在处理一个输入脉冲序列平均1270个周期含刷新操作的学习模式下整体能耗为0.15 nJ/像素。其中eDRAM CIM宏本身的能耗占总能耗的28.85%。精度在考虑了器件偏差、位线累积非线性、比较器失调等硬件非理想因素后在MNIST数据集上达到了89.4%的分类准确率。与同类工作相比该设计在多个维度上表现出色vs. SRAM CIM得益于eDRAM的高密度面积效率显著提升。vs. 新兴存储器CIM完全基于标准CMOS逻辑工艺兼容性好易于集成。vs. 带ADC的方案通过LIF_BL和混合信号神经元彻底消除了大型ADC的面积和功耗开销。vs. 其他无ADC方案通过减法-计数法虚拟扩展动态范围避免了简单近似带来的精度损失或复杂模拟电路的开销。5.2 关键挑战与应对策略实录在实际实现中团队遇到了几个典型问题他们的解决方案具有很高的参考价值问题一位线累积的非线性现象在行向累积时每个单元的读端口晶体管作为电流源其漏源电流Ids会随着漏极电压即LIF_BL电压升高而减小由于沟道长度调制效应等。这导致累积电压与激活单元数量之间不是完美的线性关系。解决使用精细调谐的动态参考电压。他们不是用一个固定的Vref与LIF_BL比较而是根据当前LIF_BL的电压水平或NS计数使用一个查找表或计算电路来微调Vref的值以补偿这种非线性。如图22所示Vref的差值Vdiff随着LIF_BL电压升高而减小从而抵消非线性影响。问题二工艺偏差对减法操作的影响现象如前所述固定宽度的放电脉冲在不同工艺角下会导致不同的放电量。解决引入启动时的工艺跟踪校准电路。如前文3.3节所述通过二进制加权的晶体管阵列和反馈比较自动校准出适合当前芯片的放电晶体管组合确保减法操作的准确性。问题三比较器失调现象比较器的输入失调电压会导致发放阈值发生偏移影响精度。解决在系统级仿真中建模并纳入考虑。通过蒙特卡洛仿真得到比较器失调的统计分布例如σ15.77 mV并将此误差模型整合到C系统仿真器中从而在算法层面评估其对最终分类精度的影响确保设计余量。问题四阵列规模与布线开销现象为了实现多比特权重需要将不同比特位的存储体连接起来LIF_BL的全局布线会带来巨大的寄生电容和面积开销。解决基于Bank的邻近布局。将共享相同LIF_BL的存储体在物理布局上相邻放置极大缩短了高负载模拟信号线的走线长度减少了延迟、功耗和面积。5.3 给实践者的建议与扩展思考设计起点是算法与架构的协同这项工作的成功始于对NSD-STDP算法特性的深刻理解。无恢复访问、行列转置需求、脉冲事件的稀疏性这些算法特征直接驱动了电路和架构的创新。在做任何CIM或神经形态芯片设计前必须吃透目标算法。拥抱混合信号设计纯数字设计功耗高纯模拟设计精度难控、鲁棒性差。混合信号设计像本文这样在关键路径积分用模拟实现高能效在控制逻辑和扩展范围上用数字保证精度和灵活性是未来边缘AI芯片的主流方向。“不完美”单元的巧妙利用eDRAM的破坏性读取本是缺点但通过“读-计算-写”的流水线设计反而变成了节省功耗的优点。这启示我们有时不需要追求每个单元都完美系统级的优化可以化劣势为优势。系统仿真至关重要芯片流片成本高昂。必须建立包含电路非理想特性失调、非线性、噪声、偏差的系统级行为模型或仿真器如本文的C仿真器在设计早期就评估这些非理想因素对最终算法精度的影响进行迭代优化。可扩展性思考本文针对MNIST和全连接层进行了优化。面对更复杂的网络如卷积SNN和数据集架构需要如何调整可能需要引入层次化的事件路由、更灵活的突触连接、以及支持卷积窗滑动的数据流控制。3T-1C单元的双模访问特性为此提供了良好的基础但整体的片上网络和存储体组织将面临新的挑战。这项研究为我们展示了一条通往高能效、学习型边缘智能硬件的清晰路径。它不仅仅是一个优秀的电路设计更是一个从器件、电路到架构、算法的完整协同设计范例。随着工艺演进和算法创新基于eDRAM或类似混合信号技术的存内计算架构有望在更广泛的实时、低功耗AI应用场景中发挥关键作用。