误码率是一条会移动的曲线
NAND 的原始误码率不是常数。它随擦写循环累积上升,随数据保持时间延长上升,随同一块被读取的次数上升,还会因为读取时的结温偏离编程时的结温而上升。这几个因素可以叠加。因此纠错能力不能按新盘状态定标,必须按寿命末期的最恶劣组合来定,否则盘在第四、第五年会出现看似突然的可靠性劣化。
第一级:硬判决必须做到不可感知
硬判决路径上,主控拿到每个单元 1 bit 的判决结果,交给 LDPC 解码器按最小和算法迭代。这一级是纯硬件实现且迭代次数有上限,原因很直接:J750/J770 规划的 QD1 4KB 随机读平均延迟为 65 µs,整个读路径包含 NAND 阵列读出、通道传输、纠错和主机侧返回,留给纠错的预算只有几微秒量级。任何需要固件介入的处理都会破坏这个预算。
第二级:用读次数换纠错能力
硬判决失败后,主控对同一页施加多组偏移读电压重复读取,把非零即一的判决变成对数似然比的多级量化。信息量增加使纠错能力大约提高一个数量级,但每一次额外读取都是完整的 NAND 阵列访问,单次纠错时间从微秒级跳到百微秒甚至毫秒级。软判决因此是尾延迟的主要来源之一,它的价值在于兜底,触发率必须压到极低。
与读电压跟踪、Read Retry 的分工
三种手段是递进关系而不是并列。自适应读电压跟踪按块的擦写次数和保持时间预测最优参考电压,从源头压低误码率;Read Retry 在换电压重读这一层解决问题,不动解码器;软判决是最后一道。把跟踪做准,前两级就能吸收绝大多数场景,软判决只在少数老化块上被唤醒。反过来,如果电压跟踪偷懒,软判决触发率上升,P99.9 延迟会立刻恶化。
UBER 目标如何反推设计余量
UBER ≤1 扇区/10^18 bits 读 这个目标决定了码率、冗余字节数和迭代上限的取值。冗余占用物理 NAND 空间,冗余越大用户可见容量越低,这是容量与可靠性之间的直接交换。J750(1 DWPD)与 J770(3 DWPD)共用同一介质与同一解码器,差异来自预留空间和写入策略,而纠错余量按 J770 的寿命末期条件统一定标,让两条产品线共享一套已验证的纠错配置。
