提问人:Silicomancer 提问时间:4/5/2023 更新时间:4/6/2023 访问量:27
使用 CRC 的冗余存储
Redundant storage using CRC
问:
假设我在嵌入式系统存储中有一些 32 位字。我想使用完全冗余存储来保护这些数据。这意味着将每个字存储两次,并在每次读取访问时交叉检查数据字及其副本。
有人告诉我,以不同的方式存储副本是有好处的。特别是有人说,最好为每个 32 位数据字存储一个 32 位 CRC 校验和,而不是 1:1 的副本。
通常,CRC有助于节省内存空间,同时提供一定程度的安全性。但是,在上述情况下,情况并非如此。相反,它消耗 CPU 时间进行 CRC 计算。
那么,上述多样化的冗余有意义吗?它在哪些方面更胜一筹?
答:
1赞
Mark Adler
4/6/2023
#1
不难想象,在两个 32 位字中会导致相同错误的故障模式,导致您认为如果您只发送第二个副本,它已正确传输。例如,位 3 始终卡在上。
另一方面,某些故障模式极不可能以一种导致正确 CRC 的方式修改单词及其 CRC。
评论
0赞
Silicomancer
4/6/2023
明白了。对我来说,找到这样的故障模式有点困难。我可以想出数据总线故障。你还有什么想法?
1赞
Mark Adler
4/6/2023
您的内存出现故障,并且始终提供零。
0赞
Mark Adler
4/6/2023
顺便说一句,对于此应用程序,最好对 n 位使用远少于 n 个冗余位。一位奇偶校验可能会检测到错误。6 位对 32 的汉明码将允许您纠正 1 位错误。
0赞
Mark Adler
4/6/2023
我为您的具体问题将“频道”编辑为“内存”。然而,“通道”是数据在空间(电线)或时间(内存)中移动的总称。
1赞
Mark Adler
4/6/2023
整个芯片都死了。
评论