crcredundancyerror-detection

Redundant storage using CRC


Lets say I have a some 32 bit words in an embedded system storage. I want to protect that data using full redundant storage. This means to store each word twice and cross-checking the data word and its copy on each read access.

I was told that there is advantage in storing the copies in a different way. Especially it was said that it is better to store a 32 bit CRC checksum for each 32 bit data word instead of a 1:1 copy.

Normally CRCs help saving memory space while providing a certain degree of safety. However in the above situation this would no be the case. Instead it consumes CPU time for CRC computation.

So does the diverse redundancy described above make sense? In which way is it superior?


Solution

  • It's not hard to imagine failure modes that would result in the same error in both 32-bit words, leading you to think that it was transferred correctly if you just sent a second copy. E.g., bit 3 is always stuck on.

    On the other hand, it would be extremely unlikely that some failure mode would modify both the word and it's CRC in a way that would result in the correct CRC.