6.2 存内逻辑 IMPLY:明星门与它的争议


6.2 存内逻辑 IMPLY:明星门与它的争议

本节摘要:IMPLY(实质蕴涵)门让忆阻器"边存边算",一度被视为存内逻辑的明星。本节拆解它的操作序列与真值表,算清 NAND 门要用多少步,并给出社区对它的两条批评与一条平反——最后划出它真正适用的边界。

IMPLY 是怎么用一个器件做逻辑的

IMPLY 门的电路简朴到过分:一个忆阻器存一个逻辑位(HRS 为逻辑 0,LRS 为逻辑 1),串一个电阻 R_G 到地。计算 p→q(p 蕴涵 q,等价于 ¬p∨q)只需两步:p 器件加电压 V_cond,q 器件加电压 V_set,两电压之和的分配恰好使"仅当 p 为 1 时 q 上的有效电压低于阈值"——q 的最终状态就是 ¬p∨q 的结果,同时结果就存回 q 里。运算与存储在同一个物理动作里完成,这确实是冯诺依曼机器做不到的优雅。

但优雅要经受账本检验。下表是 IMPLY 与布尔基的组合成本:

目标门 IMPLY 操作序列 步数 需要的额外器件
p→q 两电压同加 1 步 0
NOT p 与固定 0 做 IMPLY 1 步 1 个清零器件
NAND(p,q) NOT·IMPLY·IMPLY·NOT 链 6 步 2 个暂存器件
AND(p,q) NOT(NAND) 7 步 2 个暂存器件
XOR(p,q) IMPLY 链展开 10 步以上 3 个暂存器件

注意 NAND 是数字逻辑的普适基——任何布尔函数都由它搭出。IMPLY 单步便宜,搭出通用逻辑却要 6~10 步、每步一次全器件读写、还要为暂存器件分配阵列面积。单位门成本的反转是全部争议的核心

社区的两条批评与一条平反

批评一:串行依赖杀死并行性。 IMPLY 链的每一步都依赖上一步的结果存在特定器件里,逻辑深度直接变成时间串行度。大型布尔网络映射到 IMPLY 阵列后,关键路径长度 = 门数的常数倍,吞吐量被钉死。对比同面积 CMOS 逻辑的流水线并行,差距以数量级计。

批评二:写 endurance 成为新的"计算预算"。 IMPLY 的每一步都是真实的电学写操作——逻辑跑得越多,器件损耗越快。一个跑 10⁹ 次运算的例程会给参与器件带来 10¹⁰ 量级的写入,已在 RRAM endurance 的边缘徘徊。CMOS 逻辑从不为"计算次数"付材料账,这是范式级的成本结构差异。

平反:它不该对标 CPU,该对标"状态就在那"的场景。 IMPLY 的甜蜜点不是通用计算,而是数据已经以忆阻状态存在、且只需少量本地判决的地方:阵列内坏块标记的就地更新、存算结果的阈值化判决(比较器逻辑)、BCI/无时钟异步电路的状态转移。在这些场景,IMPLY 省掉的是"把一个比特搬出去再搬回来"的整条路径,6~10 步的代价依然远小于搬运。用错对标对象的批评与用错对标对象的宣传一样多——这句是本节真正想留下的判断。

与多数逻辑(MAJ)的路线对比

IMPLY 之外,存内逻辑还有第二条路线:基于电流求和的多数逻辑门(MAJ)。三个(或奇数个)忆阻器并联,列电流代表"1"的个数,配合读出阈值即可实现多数表决——MAJ 与 NOT 组合同样是普适基。两条路线的性格对比:

维度 IMPLY MAJ 多数逻辑
单门步数 1 步(但组合爆炸) 1 步求和 + 1 步读出判决
并行性 差(串行链) 好(整列同时求和)
与存算架构的关系 独立范式 就是存算矩阵乘的特例
工程进展 原型演示为主 已嵌入若干存算芯片的激活/池化

MAJ 的胜出原因一眼可见:它不再假装自己是"新逻辑门",而是诚实地当存算架构的一个特例。这个收缩反而换来了落地。存内逻辑十年史的最短总结:越是想替代 CPU 的路线越是停在论文,越是甘当协处理器的路线越是进了芯片。

IMPLY 的物理原理:为什么两步就能算蕴涵

补一段原理细节,让"两步算蕴涵"不悬空。IMPLY 利用的是忆阻器 SET 操作的阈值特性:设 V_SET 是把高阻态写低所需的阈值电压。第一步给 p 器件加一个低于阈值的条件电压 V_cond(它只起"垫高电位"作用,不改写 p);同时给 q 器件加 V_set(高于阈值)。q 两端的实际电压是两者之差:若 p 为高阻(逻辑 0),压降几乎全落在 p 上,q 分到足额的 V_set,被写成低阻(逻辑 1);若 p 为低阻(逻辑 1),p 像一根导线把电位垫高,q 两端分到的电压不足阈值,q 保持原状。于是 q 的终态恰为"p 为 0 时置 1,p 为 1 时保持"——正是 ¬p∨q 的定义。整个门的"放大器"其实就是 p 器件自己的电阻状态,这是它在器件物理上最漂亮的地方:存储状态本身就是逻辑的驱动条件。也正因为驱动条件依赖 p 的实际阻值(而非理想 0/1),p 的阻值漂移会直接改变判决裕度——变异性问题在这里从"数据可靠性"升级成了"逻辑正确性",这是批评一之外更深的一层隐忧。

一道判定题的完整过程

背景:一个忆阻阵列存着 1 Mb 传感器数据的压缩位图,需要就地统计"每行是否全零"并标记。操作:按行做 1024 输入的 MAJ(或 NOR 判决),每行一次列求和 + 一次标记写,1 K 行共约 2048 次器件操作;若搬出去做:读出 1 Mb(约 1 ms 带宽开销)→ CPU 计算(微秒级)→ 写回标记(再搬运一次)。解读:就地方案的器件操作虽多但全程纳秒级,总耗时约百微秒且免两次搬运;搬运方案的三段协议栈开销压倒计算本身。变式:若判定逻辑需要复杂的多级条件(比如"连续三行全零才标记"),IMPLY/MAJ 链深度暴涨,答案反转——搬出去。判定公式:就地逻辑的深度预算约为 3~5 级,超过就搬。

⚠️ 常见坑:把 IMPLY 论文里的"步数"当成时间单位。文献常写"NAND 仅需 6 步",但每步包含写脉冲、建立时间与读回校验,实际耗时是步数乘以数百纳秒;与 CMOS 门皮秒级延迟对比时,这个换算经常被悄悄略过。

💡 关键直觉:存内逻辑的正确问题不是"器件能不能做逻辑"(能),而是"哪些逻辑值得就地做"(浅层的、数据已就位的、判决型的)。把"能"与"值得"分开,这一节的所有矛盾就都解开了。

本节要点回顾

  • IMPLY 的优雅与代价:单步运算即存即算,但通用逻辑要 6~10 步加暂存器件,单位成本反超 CMOS。
  • 两条致命批评:串行依赖钉死吞吐、写 endurance 变成计算预算;平反在于对标"状态就位"的就地判决场景。
  • MAJ 路线的胜出:甘当存算架构的特例,反而进了芯片——收缩定位换来落地。
  • 深度预算口诀:就地逻辑超过 3~5 级就搬回 CPU,超过即反转。

作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U