案例研究 · 量子 LDPC 译码

把量子纠错译码器搬上 FPGA

从第一性原理复刻 IBM 面向 gross 量子码的 Relay-BP 译码器,由一个逐层逐位对齐的模型生成。 它落在公开的硅片包络上,唯一真正的余量在算法层。

AlgoSilicon 工程团队 · 2026

容错量子计算机每一轮测量都要读出一个错误信号,并在下一轮到来之前推断出最可能的物理错误。 对超导量子比特来说,这个预算大约是每轮一微秒。译码器因此是一台硬实时的经典机器,而不是一个离线 求解器,也是横在今天实验室机器与一台真正可用的机器之间的关键之一。

这是用我们的算法到硬件流程,从算法一路做到布线后硅片,复刻 IBM 面向 [[144,12,12]] gross 码的 Relay-BP 译码器的全过程。先把诚实的结论摆出来:它落在与公开参考实现相同的硅片包络上,真正的贡献 是一张「哪些优化有效」的清晰地图,以及那一个真正有效的算法杠杆。

译码器到底在做什么

普通的置信传播是经典纠错译码的主力:每个校验把已知信息告诉每个错误位,各位更新自己的置信度, 几轮之后最可能的错误图样就浮现出来。但它在量子码上会卡住,码的结构会制造出对称的陷阱,让置信度 来回振荡、永不收敛。Relay-BP 加了三个想法来打破这种对称。

码图上的置信传播加上 Relay-BP 的三个想法:把每个位的先验与上一轮置信度按逐节点强度混合的记忆偏置、带着新强度从上一段出发的接力、保留最优有效解并在收敛时停止的集成
在置信传播之上的三个想法:记忆偏置、段间接力、以及集成最优收敛解。

记忆偏置把每个位的先验与它上一轮的置信度按逐节点强度混合,这个强度允许为负。接力把整个译码分成 多段,每一段从上一段的置信度出发、并重新抽取强度,等于换一条新路径去找解。集成保留最低权重的有效解, 并在任一段收敛的瞬间停止。在 gross 码上,这套组合的逻辑错误率比通用后处理译码器大约低一个数量级 (IBM,arXiv:2506.01779)

把这台机器摊开来看

后面所有的内容,本质上都只是下面四个小单元在码图上反复铺开的结果。先在电路层看清它们是值得的, 因为代价、那堵墙、以及最后的收益,都指回这四者之一。

校验单元每个校验一个。它求出进来的两个最小幅值以及最小值所在的位置,把符号合并成 一个奇偶位,只送出这个压缩后的元组。每条边的细节留到位侧再算,这正是输出总线得以精简、布线得以负担 的原因。

校验单元微架构:拆分符号-幅值消息,一棵二最小合并树给出最小与次小幅值以及选择子,符号异或成奇偶位,输出一个压缩四元组到位单元
校验单元:一棵二最小合并树加一个奇偶符号,输出一个压缩元组而不是每条边一个值。

位单元每个错误位一个。一个小选择器从压缩元组里重建每条进来的消息,该位把它们与 先验相加并饱和,再用前后向相减给出每条出去的消息和当前硬判决。这个重建步骤,正是偿还校验单元压缩的 那一步。

位单元微架构:一个选择子多路复用器从压缩元组重建每条校验消息,求和并饱和与先验累加,前后向相减给出每条出去的消息和硬判决
位单元:选择器重建被推迟的最小值,再累加、饱和,并按边做前后向更新。

记忆偏置单元是 Relay-BP 想法在硬件里的样子,每个位一个。它用一次乘法和一次移位把 先验与上一轮置信度混合,被钉住的位则直接透传先验。逐节点强度可以为负,正是这一点让一次译码跳出对称 停滞。

记忆偏置单元微架构:一个差、一次按逐节点强度的有符号乘、一次算术移位、加回到先验、以及一个钉住位透传多路复用器
记忆偏置单元:一次乘、一次移位、加回先验,外加一个钉住位透传。

控制包在循环外面。段计数器索引一张逐段强度表,喂给记忆偏置单元,置信度从一段带到 下一段。一个未满足校验数的统计驱动两个寄存器:一个记住迄今最优的尝试,另一个统计进展停滞了多久。 错误信号清零则立刻结束译码。那唯一真正有效的优化,就住在这里。

控制微架构:一张逐段强度表喂给记忆偏置单元,未满足校验数的统计驱动用于集成的保留最优寄存器和用于提前终止的停滞计数器,反馈路径带着置信度开始下一段
控制:一张逐段强度表、一个用于集成的保留最优寄存器、一个用于提前终止的停滞计数器。

硬件为何如此之大,时钟又花在哪

参考的硅片译码器是全并行的:每个图节点一个计算单元,每条边一根线,一整轮只用两个时钟周期。它没有 集中的消息存储,消息就活在布线本身里,这也是为什么整个设计由布线而非逻辑主导。

全并行译码器:一个校验阶段和一个位阶段在布线上交换消息,两周期一次循环,校验子检查驱动提前终止,没有集中的消息存储
全并行:两周期一次循环,消息存在布线里而不是存储里。

我们实测了一个可综合的距离 5 版本(gross 码的忠实代理),并与公开的 gross 码硅片实现对比。每条关键 路径大约 70% 是跨芯片搬运消息的线延迟,这是这类码图固有的性质。时钟受限于布线,而不是逻辑。这正是 结果落在参考包络上、而非超过它的原因:布线就是那堵墙,对任何做全并行的人都是同一堵墙。

每条关键路径约 70% 是跨芯片布线而非逻辑,因此时钟和资源用量落在公开硅片包络上,而不是超过它
每条路径约 70% 是跨芯片布线。时钟与资源用量落在公开包络上。

什么改善了延迟,什么没有

译码延迟等于迭代次数乘以每次迭代周期数再除以时钟。当时钟被布线钉死之后,真正能改善延迟的手段其实 很少,而且有几个看似聪明的方向反而帮了倒忙。

手段地图:选对数据位宽把迭代降到四分之一、有效,提前终止削掉最坏情况延迟、有效,而对比较树做流水、把计算时分复用、压缩布局分区,对一个延迟优先的设计都是死胡同
每个手段的实测结果。两个有效,三个是延迟优先设计的死胡同。

选对数据位宽把迭代次数降到四分之一,是一个实打实的胜利:位宽更小虽省面积,却收敛慢得多,省下的 面积是个延迟陷阱。对比较树做流水提升了时钟,却每次迭代多花一个周期,单次译码延迟反而更差。把计算时分 复用满足不了一微秒的预算。把布局压缩到更少的芯片分区,用跨区延迟换来了拥塞、时序退化。真正有效的杠杆 在算法层:一次尝试一旦不再有进展,就立刻结束它。

对停滞的未满足校验数做提前终止,把最坏情况迭代削掉约三分之一,逻辑错误率还提升了,因为每一次新的接力都在探索一条通往有效解的新路径,代价约为半个百分点的面积
对停滞的校验计数做提前终止,把最坏情况迭代削掉约三分之一,精度还提升了。

提前终止把最坏情况迭代次数削掉了约 32%,而且精度不降。逻辑错误率不降反升,因为每一次新的接力都在 探索一条通往有效解的新路径。在硬件上它只要统计一下未满足的校验数和一个小计数器,代价约为半个百分点的 面积和几兆赫兹的时钟,对一个延迟优先的译码器是一笔很划算的交易。

这对方法本身意味着什么

这个从「逐层与数学对齐」的模型生成出来的译码器,坐在了 gross 码公开硅片的包络上:同样的时钟区间、 同样的资源量级。它没有更快,因为那堵墙是码图的布线,对任何全并行实现都一样。可迁移的成果是那个循环和 那张诚实的地图:在受布线限制的设计上,时钟是码图的性质,所以该把力气花在更少的迭代或更少的线上,而不是 流水或布局;任何提前停止的策略都要在规模上用逻辑错误率验证,而不是只看收敛。这里每一个数字都追溯到一次 实测,每一层都与下一层逐位对齐。

完整的技术细节(四个单元的电路级微架构、实测的资源与时钟表、以及验证链)见 技术报告

了解量子 LDPC 工作

gross 码译码器的状态、实测的资源与时钟数字、以及验证链都在产品页上。也欢迎和我们聊聊面向你的 平台的实时译码。

量子 LDPC 产品