基于忆阻器的超低功耗概率图计算:通信信号处理新范式
发布时间:2026/9/19 8:40:42 作者:尧图编辑部 阅读量:1,286

1. 从一篇顶刊论文说起为什么概率图计算突然成了香饽饽第一次看到“基于忆阻器的超低功耗概率图计算及其在通信信号处理中的应用”这个题目我的直觉是这又是一个把两个热门词硬凑在一起的论文。忆阻器、概率图计算、通信信号处理三个方向各自都有大量研究但真正把它们串成一条完整技术链路的工作并不多。仔细读完这篇发表在《自然·通讯》上的工作之后我改变了看法——它解决的是一个非常具体的工程矛盾通信信号处理里的概率推断算法精度要求高、计算量大而端侧设备的功耗预算又极其苛刻传统数字芯片架构在这两者之间几乎无法兼顾。先把话说清楚这篇文章到底在做什么。简单讲研究团队用忆阻器阵列搭建了一套硬件电路让它可以高效执行概率图模型中的核心运算——比如因子图上的消息传递、置信传播这类操作然后把这套硬件用在通信信号处理任务上比如信道解码、信号检测。核心卖点是“超低功耗”和“存算一体”计算直接发生在存储单元里不需要把数据在存储器和运算单元之间来回搬运这一下就砍掉了传统冯·诺依曼架构里最耗能的那部分开销。为什么这件事值得关注因为通信信号处理是典型的“算力饥渴型”任务。以信道解码为例一个LDPC码或者极化码的解码过程本质上就是在概率图上做迭代消息传递迭代次数动辄几十次每次都要更新大量节点的概率信息。用CPU或者GPU跑功耗轻松上到几瓦甚至几十瓦。但如果是手机、物联网终端、卫星通信载荷这类场景功耗预算可能只有毫瓦级别。这个数量级的差距靠工艺微缩和时钟门控是补不回来的必须换架构。忆阻器在这里扮演的角色是一个“能算的存储单元”。它的电导值可以表示概率或者权重基尔霍夫定律天然完成乘加运算而概率图计算里大量的操作恰好就是乘加和比较。把这两件事对上功耗优势就出来了。这篇文章的价值在于它没有停留在“忆阻器可以做乘加”这种原理演示层面而是真的把概率图计算的算法映射到了忆阻器阵列上并且在通信信号处理这个具体任务上验证了可行性。适合谁读这篇内容如果你是做端侧AI芯片、存算一体架构、通信基带处理器设计的这篇论文的技术路线值得仔细拆解。如果你是做概率图模型算法或者通信信号处理算法的可以关注它如何把算法映射到硬件上哪些近似是允许的、哪些精度损失是可以接受的。如果你只是对“超低功耗端侧AI”这个方向感兴趣这篇文章提供了一个很好的案例说明为什么“存算一体”不只是一个概念而是有具体任务在牵引的技术路线。2. 核心思路拆解为什么是忆阻器加概率图计算2.1 概率图计算在通信信号处理里到底算什么要理解这篇文章的技术选择得先搞清楚概率图计算在通信信号处理里到底承担什么角色。通信系统里的很多核心问题本质上都是推断问题给定接收到的带噪信号推断出发送端最可能发送了什么。信道解码是这样MIMO信号检测是这样甚至同步和信道估计也可以写成推断问题。概率图模型提供了一套统一的语言来描述这些推断问题。把变量和因子画成图变量节点表示待推断的随机变量因子节点表示变量之间的约束关系然后通过消息传递算法在图上迭代更新置信度。LDPC码的置信传播解码就是最典型的例子校验节点和变量节点之间来回传递对数似然比迭代若干轮后每个比特的置信度收敛判决输出。这套算法的计算特征很鲜明。第一它是迭代的通常需要几十次迭代才能收敛计算量随迭代次数线性增长。第二它是并行的同一轮迭代里所有节点的消息更新可以同时进行。第三它涉及大量乘加运算和比较运算但精度要求并不极端很多场景下定点数甚至低比特量化就能满足性能要求。第四它是数据密集型的每轮迭代都要读写大量中间结果存储访问开销远大于计算本身。这四个特征叠加在一起恰好指向了传统数字架构的软肋。GPU靠并行度可以加速迭代但功耗降不下来专用数字ASIC可以优化能效但存储访问的能耗墙依然存在。忆阻器存算一体的思路就是冲着这个能耗墙去的。2.2 忆阻器为什么适合做这件事忆阻器的核心特性是电导可调且非易失。给它一个电压脉冲电导值会发生变化撤掉电压后电导保持住。这个特性可以用来存储权重或者概率值。更关键的是当多个忆阻器组成交叉阵列时施加电压后每条列线上的电流是各行电导与电压乘积的累加基尔霍夫电流定律直接完成了乘加运算。这个物理过程对应到概率图计算里可以映射很多操作。比如消息传递中的加权求和可以把权重映射成电导输入映射成电压输出电流就是加权和。再比如概率的乘法可以用电导的乘积来表示。甚至一些比较操作也可以通过电流比较来实现。但忆阻器不是没有短板。电导值的精度有限器件之间存在差异写入噪声和读噪声都存在电导还会随时间漂移。这些非理想因素对于精确计算是灾难但对于概率计算反而可能没那么致命——因为概率图计算本身就是在处理不确定性算法对噪声有一定的容忍度。这篇文章的一个关键洞察就在这里与其追求器件的完美不如设计对器件非理想性鲁棒的算法映射方案。2.3 存算一体带来的功耗优势到底有多大存算一体的功耗优势核心在于消除了数据搬运。在传统架构里做一次乘加运算需要从存储器读取操作数送到运算单元算完再写回存储器。这个过程中数据搬运的能耗可能比计算本身高出一到两个数量级。忆阻器交叉阵列里计算就在存储单元里发生不需要搬运操作数这一块能耗直接省掉了。具体到概率图计算优势更明显。因为概率图计算的中间结果很多每轮迭代都要更新所有节点的消息存储访问量巨大。用存算一体架构这些中间结果可以直接存在忆阻器阵列里更新时就地计算省掉了大量的读写操作。这篇文章里给出的功耗数据和传统数字方案相比确实有数量级的优势。当然这个比较需要看具体条件和任务不能简单地说“忆阻器一定比数字芯片省电”。但在通信信号处理这类迭代密集、存储访问密集的任务上存算一体的架构优势是结构性的。3. 核心细节解析从算法到硬件的映射怎么做3.1 因子图到忆阻器阵列的映射策略把概率图计算映射到忆阻器阵列第一步是确定哪些计算放在阵列里做哪些放在外围电路做。阵列擅长的是矩阵向量乘和元素级运算不擅长的是复杂的非线性函数和随机数生成。所以映射的基本原则是把消息传递中的线性运算和大规模并行运算放到阵列里把非线性变换和判决逻辑放到外围CMOS电路里。以LDPC解码为例置信传播的每一步可以拆成几个子操作变量节点更新、校验节点更新、消息传递。变量节点更新本质上是求和校验节点更新涉及双曲正切函数的乘积消息传递是加减法。求和和乘积可以映射到阵列双曲正切可以用分段线性近似或者查表实现。映射过程中需要考虑的一个关键问题是概率值怎么表示成电导。通常的做法是对概率或者对数似然比做归一化然后映射到电导的动态范围内。这个映射不是线性的因为电导的响应往往是非线性的需要做校准。校准的精度直接影响计算精度但校准太复杂又会增加外围电路的开销这里有一个权衡。3.2 器件非理想性怎么处理忆阻器的非理想性主要有三类器件间差异、写入噪声、读噪声。器件间差异是指不同忆阻器的电导响应不一致同样的写入条件得到的电导值不同。写入噪声是指每次写入的电导值有随机波动。读噪声是指读取时电流有波动。这三类非理想性对计算精度的影响不同。器件间差异是系统性的可以通过校准来补偿但校准需要存储每个器件的校准参数增加了开销。写入噪声和读噪声是随机的无法完全消除只能通过算法设计来容忍。这篇文章采取的策略是“算法-硬件协同设计”。在算法层面选择对噪声鲁棒的消息传递方案比如用归一化最小和算法替代置信传播前者对幅度不敏感只关心符号和相对大小。在硬件层面设计差分对结构来抵消共模噪声用多次读取平均来降低读噪声。这两个层面的配合使得系统在器件非理想性存在的情况下依然能达到可接受的解码性能。3.3 超低功耗是怎么实现的超低功耗的实现是多方面优化的结果不是单靠忆阻器本身。首先存算一体消除了数据搬运功耗这是最大的一块。其次忆阻器的操作电压很低通常在1V以下动态功耗与电压平方成正比低电压直接带来功耗下降。第三阵列的并行性使得可以在一个时钟周期内完成大量运算降低了时钟频率需求而动态功耗与频率成正比。第四非易失性使得空闲时不需要刷新静态功耗极低。但要注意外围电路ADC、DAC、控制逻辑的功耗不能忽略。在高精度场景下ADC的功耗可能比阵列本身还大。这篇文章在系统设计时通过降低ADC精度要求和减少转换次数来控制外围功耗。比如用1比特或者2比特的ADC虽然精度低但配合算法层面的鲁棒性设计整体性能可以接受。提示评估存算一体方案的功耗时一定要把外围电路算进去。很多论文只报阵列功耗不报外围功耗实际系统里外围电路可能是功耗大头。4. 实操过程与核心环节实现4.1 系统架构的搭建流程如果要复现或者借鉴这套方案系统架构的搭建可以按以下步骤推进。第一步是确定任务和算法。选择一个具体的通信信号处理任务比如LDPC解码或者MIMO检测确定使用的概率图模型和消息传递算法。这一步决定了后续所有硬件设计的约束条件。第二步是算法分析和计算图提取。把消息传递算法展开成计算图识别出其中的矩阵运算、元素级运算和非线性运算。统计每类运算的计算量和数据依赖关系。第三步是硬件映射方案设计。确定哪些运算映射到忆阻器阵列哪些放在外围电路。设计阵列的规模和连接方式确定电导编码方案和校准策略。第四步是外围电路设计。包括ADC/DAC的精度选择、控制逻辑的设计、时序安排。这一步需要和算法层面协同因为外围电路的精度直接影响算法性能。第五步是系统集成和验证。把阵列和外围电路集成在一起用实际的通信信号处理任务来验证性能包括解码误码率、功耗、吞吐率等指标。4.2 关键参数的计算和选择阵列规模的选择需要平衡多个因素。阵列越大并行度越高但器件非理想性的影响也越大良率越低。通常的做法是根据任务的计算图规模来确定最小阵列尺寸然后留一定的余量。比如LDPC解码中校验矩阵的维度决定了消息传递的并行度需求。电导动态范围的选择也很关键。动态范围越大能表示的概率精度越高但器件的一致性越差。通常需要在精度和可靠性之间找平衡点。这篇文章里用的电导动态范围大概在几十微西门子到几百微西门子之间对应的概率精度大概是4到6比特。ADC精度的选择是一个典型的权衡。精度越高量化误差越小但功耗和面积越大。在概率图计算里由于算法本身对噪声有容忍度低精度ADC往往就够用。这篇文章里用的是2到3比特的ADC配合算法层面的归一化处理性能损失在可接受范围内。迭代次数的选择也需要考虑。迭代次数越多解码性能越好但功耗和延迟越大。通常的做法是设置一个最大迭代次数同时用早停准则来提前终止收敛的码字。4.3 实测数据和性能对比这篇文章里给出的实测数据我关注几个关键指标。解码性能方面在典型的LDPC码上忆阻器方案的误码率曲线和浮点软件解码相比差距在0.5dB以内。这个差距在通信系统里是可以接受的尤其是考虑到功耗优势。功耗方面和传统的数字ASIC方案相比忆阻器方案在相同吞吐率下的功耗低了一个数量级以上。这个优势主要来自存算一体消除的数据搬运功耗。但要注意这个比较是在特定工艺节点和特定任务下做的不能直接外推到所有场景。吞吐率方面由于阵列的并行性单次消息传递的延迟很低但受限于ADC和外围电路的速度整体吞吐率不一定比高频数字电路高。这篇文章的方案更侧重于低功耗而非高吞吐率适合对功耗敏感但对速率要求不极端的场景。指标忆阻器方案传统数字方案备注解码性能差距0.5dB基准典型LDPC码功耗低一个数量级基准相同吞吐率下吞吐率中等高受外围电路限制面积阵列紧凑较大存算一体优势精度4-6比特8-16比特算法容忍度高5. 常见问题与排查技巧实录5.1 器件非理想性导致的性能下降怎么排查在实际调试中最常见的现象是解码性能比仿真差。排查思路可以按以下顺序进行。先确认器件校准是否到位。用测试模式写入已知电导值读取实际电导统计偏差分布。如果偏差超过预期需要重新校准或者筛选器件。再检查读噪声的影响。多次读取同一电导值统计读数的方差。如果方差过大可能需要增加读取次数做平均或者调整读取电压。然后检查算法层面的鲁棒性。把实测的电导偏差代入算法仿真看性能下降是否与实测一致。如果仿真性能好但实测差说明还有仿真没考虑到的因素比如串扰或者寄生效应。最后检查外围电路的精度。ADC的量化误差、DAC的写入精度、时序偏差都可能影响性能。用高精度仪器替换外围电路做对比测试可以定位问题来源。5.2 功耗不达预期怎么优化如果实测功耗比预期高先看外围电路的功耗占比。用电流探头分别测量阵列和外围电路的功耗确定大头在哪里。如果外围电路功耗高检查ADC的工作频率和精度是否过高。降低ADC精度或者减少转换次数通常能显著降功耗。如果控制逻辑功耗高检查时钟频率和门控策略看是否有不必要的翻转。如果阵列功耗高检查操作电压是否偏高写入脉冲的宽度和幅度是否过大。忆阻器的写入功耗通常比读取功耗高减少写入次数或者优化写入策略可以降功耗。注意功耗优化不要以牺牲可靠性为代价。写入脉冲太窄或者电压太低可能导致电导写入不充分反而增加误码率。5.3 常见问题速查表问题现象可能原因排查方法解决思路解码性能差器件校准不准测试电导偏差重新校准或筛选解码性能差读噪声大多次读取统计方差增加平均次数功耗偏高外围电路功耗大分别测电流降低ADC精度功耗偏高写入功耗大测写入电流优化写入策略结果不稳定电导漂移长时间监测电导定期刷新或补偿吞吐率低ADC速度瓶颈测转换时间并行ADC或降精度5.4 实操心得算法硬件协同设计的关键点我在类似项目里踩过的一个坑是算法团队和硬件团队各自优化最后集成时发现对不上。算法团队假设的电导精度硬件达不到硬件团队设计的接口算法用不上。后来我们改成从第一天就协同设计算法团队用硬件团队提供的器件模型做仿真硬件团队根据算法的精度需求确定器件指标。这个流程虽然前期慢但后期集成顺利很多。另一个心得是不要追求器件的完美要追求系统的鲁棒。忆阻器的非理想性是客观存在的与其花大力气消除它不如设计对非理想性不敏感的算法和架构。这篇文章的思路就是这样用归一化最小和算法替代置信传播用差分结构抵消共模噪声都是这个思路的体现。还有一个实际问题是测试成本。忆阻器阵列的测试需要大量的写入和读取操作测试时间可能比设计时间还长。建议在早期就设计好自动化测试流程用脚本控制测试仪器批量采集数据。这样虽然前期投入大但后期调试效率会高很多。6. 这个方向后续还能怎么扩展从这篇文章出发有几个方向值得继续探索。一个是把方案扩展到更复杂的通信任务上比如MIMO检测或者信道估计这些任务的概率图结构更复杂对硬件的要求也更高。另一个是探索更高效的器件校准和补偿方案降低外围电路的开销。还有一个方向是把忆阻器概率图计算和端侧AI结合起来比如用在无线感知或者边缘推理任务上这些场景对超低功耗的需求同样迫切。从工程落地的角度看最大的挑战还是器件的一致性和可靠性。实验室里演示几颗器件不难难的是做出几百万颗器件都能稳定工作。这需要器件工艺、电路设计、算法容错三个层面的持续进步。但方向是明确的在功耗墙越来越紧的背景下存算一体加概率计算这条路值得投入。