• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 366
  • Last Modified:

Ecc Memory

Can someone please explain the differenc between ECC memory and True Parity Memory.  I thought that ECC was a function of the Memory controller and not the SIMM chip.

1 Solution
This text is from GoldenRam and I couldn't have written it
better myself:

ECC is similar to parity. However, where parity can only detect errors, ECC can actually correct most errors. By correcting memory errors, mission critical computer operations can continue.

ECC memory uses extra bits to store an encrypted code with the data. When the data is written to memory, the ECC code is simultaneously stored. Upon being read back, the stored ECC code is compared to the ECC code generated when the data was read. If the codes don't match, they are decrypted to determine which bit in the data is incorrect. The erroneous bit is "flipped" and the memory controller releases the corrected data.

Errors are corrected "on-the-fly," and corrected data is rarely placed back in memory. If the same corrupt data is read again, the correction process is repeated. Replacing the data in memory would require processing overhead that could accumulate and significantly diminish system performance. If the error occurred because of random events and isn't a defect in the memory, the memory address will be cleaned of the error when the data is overwritten with other data.

By encrypting the ECC code and correcting only single bit errors, very few additional bits are required. Unlike parity, the number of ECC bits doesn't increase at the same rate as the bits per word or data bandwidth. As word size doubles, parity bits double, but ECC bits increase by one. So, if a system uses an 8 bit
word, it would need 1 bit for parity checking, but 5 bits for ECC. However, a 32 bit word needs 4 bits for parity or 7 bits for ECC. Increase the bandwidth to 64 bits and 8 bits are required for both parity or ECC. Below is a chart comparing the bits required for different data bandwidths for ECC and parity:

   Word Bits   ECC Bits   Parity Bits
        8          5            1
       16          6            2
       32          7            4
       64          8            8
      128          9           16

As you can see, at the 64 bit level, it is equally efficient to use ECC or parity. This is how manufacturers use 36 bit memory modules in groups of 2 or more to create an ECC environment. Compaq's Tri-Flex memory bus is such a system. The Tri-Flex bus uses 4 SIMM groups, for a 128 bit bandwidth. Since the 4
modules have 16 spare bits between them, the 9 bits needed for ECC are easily satisfied. Other systems may use special ECC memory modules, but the cost benefit and availability of industry standard 36 bit SIMMs appeals to designers and end-users.

/// John
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

Tackle projects and never again get stuck behind a technical roadblock.
Join Now