假设我在嵌入式系统存储中有一些32位字。我想用全冗余存储来保护这些数据。这意味着每个字存储两次,并在每次读访问时交叉检查数据字及其副本。
有人告诉我,用另一种方式存储副本有好处。特别是有人说,最好为每个32位数据字存储32位CRC校验和,而不是1:1的副本。
通常crc有助于节省内存空间,同时提供一定程度的安全性。然而,在上述情况下,情况并非如此。相反,它消耗CPU时间用于CRC计算。
那么上面描述的各种冗余有意义吗?它在哪方面更优越?
不难想象在两个32位字中会导致相同错误的故障模式,导致您认为如果您只是发送第二个副本,则传输是正确的。例如,第3位总是被卡住。
另一方面,某些故障模式将同时修改单词及其CRC,从而产生正确的CRC,这是极不可能的。