7.1 ECC基本原理:SECDED与SECDED-DED
ECC的核心思想很简单:在数据里加入冗余校验位。你想想看,如果数据本身多带一些“保镖”,出问题时保镖就能帮忙定位和修复。
7.1.1 SECDED(单纠错双检错)
SECDED是最常见的ECC方案。全称是Single Error Correction, Double Error Detection。它能纠正1个bit的错误,检测出2个bit的错误。
怎么做到的?以经典的(72, 64)编码为例:
- 64位数据 + 8位ECC校验码 = 72位总宽度
- 8位校验码通过汉明码(Hamming Code)生成
- 每个校验位覆盖特定的数据位组合
我习惯用一个比喻:这就像给数据做“奇偶校验矩阵”。每个数据位被多个校验位“盯”着,出问题时,多个校验位会同时报错,通过它们的组合就能定位到具体哪个bit出了问题。
关键点:SECDED能保证:
- 1个bit错误 → 自动纠正,对上层透明
- 2个bit错误 → 检测到并上报,但不纠正
- 3个及以上bit错误 → 可能误判为1bit错误(概率极低)
7.1.2 SECDED-DED(双纠错双检错)
有些场景下,1bit纠错不够用。比如LPDDR5在高速率下,单次访问可能同时出现多个bit错误。这时候就需要SECDED-DED。
DED代表Double Error Detection,但这里的“DED”其实是指能检测到更多错误模式。实际上,SECDED-DED通过增加额外的校验位,把纠错能力从1bit提升到2bit。
举个例子:
| ECC方案 | 数据位 | 校验位 | 总位宽 | 纠错能力 |
|---|---|---|---|---|
| SECDED |