静默错误出在搬运环节
一笔写入从主机DMA出发,经PCIe进入主控SRAM,可能落到DRAM写缓冲,再经LDPC编码写进NAND。每一段介质内部各有防护——SRAM有ECC、DRAM有ECC、NAND有LDPC——但段与段之间的搬运、地址计算与时钟域跨越并不在这些防护的覆盖范围内。真正难查的正是这类错误:数据本身没坏,只是去错了地方。
八个字节里的分工
T10保护信息在每个数据块后追加8字节,三个字段各司其职:Guard Tag是覆盖数据内容的CRC16,负责抓比特翻转;Application Tag留给上层用途;Reference Tag与LBA绑定,负责抓错位写入。第三项是端到端保护中最有价值的部分,因为写到错误LBA的数据在任何纯内容校验下都是“正确”的,只有把地址纳入校验才能识别。
每跨一次边界就重算一次
可行的布置是:主机DMA落入SRAM后立即校验;进出DRAM写缓冲各一次;LDPC编码前一次;NAND读回解码后再一次。原则是每跨越一次介质或时钟域边界就重新验证,让每一段都能独立定责。这样做的额外好处是错误可以在写入NAND之前被拦下——一旦落盘,可选项就只剩下上报和隔离。
与主机侧的接口
DIF/DIX允许主机生成保护信息并随命令下发,盘内校验后透传保存,读回时再交还主机比对,形成贯穿应用到介质的完整链路。这要求命名空间使用带元数据的LBA格式,例如4K数据加64字节元数据。Type 1/2/3的差别集中在Reference Tag的检查规则上,与主机栈的配置必须一致,否则会出现大量误报。
它覆盖不到的那一块
保护信息保护的是用户数据,不是映射表本身。若固件把某个LBA错误地映射到另一段物理地址,读回时Reference Tag能报出不匹配,却无法恢复正确数据。因此映射表需要另一套机制——原子提交、独立校验和、上电一致性检查。多层防护叠加之后,J750/J770的UBER目标定在不高于每读取10^18位一个扇区,T10 DIF/DIX与端到端保护也列入军航科工的企业级功能基线。
