256×256 阵列全读 256 次,稀疏解码 4 到 12 次定位 64 个卡死单元

2026-10-21

理想模拟的 256×256 相变阵列上,随机正负 1 探针加稀疏恢复,在 1% 读噪声下用 4 到 12 次读定位最多 64 个卡死单元,逐格读要 256 次。

这篇在解决什么

模拟存内计算把矩阵向量乘做进电阻 crossbar。单元会漂移,有的会 stuck-at,电导不再跟着编程值走。修复得先知道是哪一格坏了。一块 256×256 的 tile,按文中的计数把逐格读完要 256 次,一次读就是施加一个探针向量。2026 年的修复论文 STAR 把持续在片上定位称为不现实,修的时候不用故障图。

剩下的问题很窄:找出 k 个卡死单元,要几次计数读。

方法

定位时手里有一份无噪声的数字权重 Wref,就是加速器本来就存着的编程值。探针是随机 ±1 向量,缩放到单位范数。正向读驱动输入线、读输出线,残差等于模拟读数减去 Wref 乘上探针。转置读把方向倒过来。这篇的模型里,tile 除此之外是理想的:没有编程误差,也没有漂移,误差矩阵恰好只有 k 个非零格。

正向读的输出下标点出一个坐标,另一个坐标藏在探针图案里。故障一多,被点名的行和列会在交叉处造出幽灵格。正交匹配追踪(OMP,每次挑和残差最像的那一格)只留下两个方向的图案都对得上的格子。它停在 2k+4 这个上限,等于事先知道故障数的上界。噪声标准差用无故障 tile 上 8 次重复正向读来估,这 8 次不进表里的读数,也不进任何倍数。

漂移是另一条线。M4 用 4 阶余弦基,每块 tile 拟合 16 个系数的乘性漂移场。探针是 8 次正向、7 次转置,再加一次偏置读。理想形式每次推理都要用数字权重 W0,等于每块 tile 多做一次数字乘,只能当上限。可部署形式把校正折进阵列上的低秩缩放:rank 1 不额外占推理遍数,完整形式最多再要 3 遍。

每条主张事先写成 YAML。计数实验跑完,脚本判 PASS、KILL 或 INCONCLUSIVE。时间戳在作者自己的开发仓库里,不是第三方预注册。

结果

达标线是单元级 F1 的平均值至少 0.9,过不了线就不报读数。设置是边长 256 的 tile、每个格子 240 个新实例,k 取 1、4、16、64。调过参的 X-ABFT 只在 1% 噪声的 k=16 和 k=64 过线,用了 4096 和 2048 次,比全读还多。

方法1% 噪声,k=1/4/16/642% 噪声
双向稀疏解码4 / 6 / 8 / 1216 / 8 / 12 / 12
仅正向稀疏解码16 / 12 / 16 / 1616 / 12 / 16 / 24
Wei–Roth 风格混合基线26 / 27 / 51 / 5132 / 41 / 65(F1 0.895)/ 未过线
调参 X-ABFT未过线 / 未过线 / 4096 / 2048四档都未到 F1 0.9
全格读出256256

k 至少为 4、噪声 1% 时,双向解码比混合基线少 4.3 到 6.4 倍读。大头在解码器:只做正向已经少 1.6 到 4.1 倍。第二方向在 1% 噪声再少 1.3 到 4 倍。到了 2%,节省变小,事先写好的 0.7 这条线没有过。两条要求第二方向把读数比压到 0.7 的预写主张,在 256 tile、2% 噪声上触发 KILL,比值是 0.75 到 1.00。4% 噪声、k=1 时,双向要 64 次,只做正向要 48 次,第二方向更贵。4% 且 k 至少为 4 时,双向用 32 次读达到 F1 0.93 到 0.95,两套先验复现都低于 0.9。后一句是报告级数字,没有对应的注册条款。

把那 8 次噪声标定读算进去,k=4、16、64 在 1% 下的 6、8、12 次变成 14、16、20 次,相对混合基线的倍数从 4.3 到 6.4 降到 1.9 到 3.2。注册条款没有按这个计费重跑。

漂移这边,理想 M4 在推理时仍握着数字权重。BN 折叠的 ResNet-9、CIFAR-10、严格按 16 次矩阵向量乘计:1 小时比最强廉价数字基线 B8 高 2.08 个百分点(86.93 对 84.85,编程值 86.83),1 年高 13.27 个百分点(86.96 对 73.70)。CIFAR-100 一年高 10.75 个百分点(48.60 对 37.85),1 小时只高 0.53,置信区间跨过 0。实际跑的是 17 次,预算条款 NOTMET,按这种读法总判决是 INCONCLUSIVE。

可部署的完整形式比 B8 高 0.6 到 3.7 个百分点。从 1 天起,它比用 32 张图像做的数字再校准低 1.0 到 4.9 个百分点。免费的 rank-1 形式触发了注册 KILL:CIFAR-100 每个时间点的配对置信区间下界都小于 0。

另有一个注册通过的闭环:正向解码器、标定读计入成本、2% 噪声,估计出的故障图在 ResNet-9 上和 oracle 图的准确率差距在 0.25 个百分点以内。这是「没检出差异」,没有做等价性检验。故障密的那一档,图大多退回全读。4% 噪声的扩展实验触发 KILL,新露出故障的召回是 85% 到 89%,门槛是 90%。

为什么重要

控制器若能用大约十几次探针维持一张卡死单元图,重映射修复才有输入。STAR 把持续定位看成不现实。这篇的模拟在 1% 噪声下把预算放在 4 到 12 次,全读是 256 次。

省下来的次数主要来自解码器。阵列做不了转置读,正向 OMP 在 1% 到 2% 噪声下仍是 12 到 24 次,并且过了 F1 这条线。工作是独立研究者的纯模拟,账本把没通过的主张和通过的放在一起:21 份标准文件的最终计数跑,4 个 PASS、7 个 KILL、10 个 INCONCLUSIVE。

局限与存疑

没有硅片。准确率在权重空间里算。数字孪生对上 CrossSim(8-bit DAC、校准过的 8-bit ADC)最多差 5.66 个百分点,门槛 0.5,条款 NOTMET。差距主要落在 B8,事后检查把它归到转换器量化。头条实验的探针读没有 ADC,也没有 DAC。

定位用的 tile 除此之外是理想的。误差矩阵严格 k 稀疏,上面没有漂移残差,也没有编程误差,定位和漂移拟合没有合在一起测。解码器拿到 2k+4 的上限,探针方案还按每个 (k, 噪声) 格子在校准集上选过。达标看的是 240 个实例的平均 F1,这 240 个按 3 个检查点、4 层、20 次故障抽取聚类,文中写明置信区间因此偏紧。没有按芯片报漏检。转置读的硬件代价没有核实。故障密度大约超过 0.3% 之后,全读比探针便宜,这个密度是探索性数字。

和 X-ABFT 的对照落在它的设计区外面。它针对的是每块最多两个故障、读噪声可以忽略。注册实验没有在这个设计区里做阳性对照。Wei–Roth 的基线是这篇自己拼的混合体:原文停在输出线,单元级那一截是这篇补上的。按原文条款跑,单次矩阵向量乘的行解码器行 F1 为 0,总判决按设计就是 INCONCLUSIVE。两边计成本的单位也不一样。

预注册只是作者仓库里的提交时间。有些门槛所在的 YAML 是九次完整跑之后才提交的,仓库证明不了这些门槛早于数据。公开的单次提交发布也不含文中引用的那串提交历史。充分条件的证明没有独立审过。在注册的最小可见幅度上,这个条件要的读数比全读还多,给不出保证。文末注明,代码和正文借助 Claude 完成,责任由作者承担。

B8 在每块 tile 上从几种廉价数字校正里挑误差最小的,挑选时用编程权重当标准答案,基线因此偏强,报出来的增益偏保守。1% 噪声下的「4 到 12 次」停在这一档噪声。论文自己标成这种 PCM 模型典型值的 2% 噪声上,双向解码要 8 到 16 次,第二方向那条 0.7 倍的主张已经失败。能把准确率拉回编程值的漂移校正,靠的是推理路径上仍留着数字权重。它量的是这份估计。阵列里留得下的修法,数字在上一节。

术语

原文与代码

社区讨论

全部论文解读