"Does ECC really CORRECT data, or does it only know whether the data it has is corrupt? Does it actually provide greater stability, or just error reporting?"
Answer is both. It can correct single bit errors and will notify of larger than single bit errors.
Answer to stability issue. Yes it is more stable due to its name.
ECC
(Error Correction Code) - A method of checking the integrity of data in DRAM. ECC provides more elaborate error detection than parity; ECC can detect multiple-bit errors and can locate and correct single-bit errors.
<A HREF="http://www.kingston.com/tools/bits/bit13.asp" target="_new">- Taken Directly from Kingston's Website -</A>
61
THE ULTIMATE MEMORY GUIDE KINGSTON TECHNOLOGY DIFFERENT KINDS OF MEMORY
ERROR CHECKING
Ensuring the integrity of data stored in memory is an important aspect of memory design. Two primary means of accomplishing this are parity and error correction code (ECC).
Historically, parity has been the most commonly used data integrity method. Parity can detect – but not correct – single-bit errors. Error Correction Code (ECC) is a more comprehensive method of data integrity checking that can detect and correct single-bit errors.
Fewer and fewer PC manufacturers are supporting data integrity checking in their designs. This is due to a couple of factors. First, by eliminating support for parity memory, which is more expensive than standard memory, manufacturers can lower the price of their computers. Fortunately, this trend is complemented by the second factor: that is, the increased quality of memory components available from certain manufacturers and, as a result, the relative infrequency of memory errors.
The type of data integrity checking depends on how a given computer system will be used. If the computer is to play a critical role – as a server, for example – then a computer that supports data integrity checking is an ideal choice. In general:
• Most computers designed for use as high-end servers support ECC memory.
• Most low-cost computers designed for use at home or for small businesses support
non-parity memory.
<A HREF="http://www.kingston.com/tools/umg/default.asp" target="_new">- This was also take right off of Kingston's Website -</A>
The memory is just memory. In general, memory doesn't do parity or ECC, that is done by memory control logic on the motherboard, in the chip set, or (as in the 21066) in the CPU.
The memory only has to store the parity or ECC bits, just as it stores the data bits.
Parity is implemented on most PCs with one parity bit per byte. For a 32-bit word size there are four parity bits, for a total of 36 bits that have to be stored in the memory. On most Pentium and Pentium Pro systems, and a few 486 systems, there is a 64-bit wide memory data path, so there are eight parity bits, for a total of 72 bits.
When a word is written into memory, each parity bit is generated from the data bits of the byte it is associated with. This is done by a tree of exclusive-or gates. When the word is read back from the memory, the same parity computation is done on the data bits read from the memory, and the result is compared to the parity bits that were read. Any computed parity bit that doesn't match the stored parity bit indicates that there was at least one error in that byte (or in the parity bit itself). However, parity can only detect an odd number of errors. If an even number of errors occur, the computed parity will match the read parity, so the error will go undetected. Since memory errors are rare if the system is operating correctly, the vast majority of errors will be single-bit errors, and will be detected.
Unfortunately, while parity allows for the detection of single bit errors, it does not provide a means of determining which bit is in error, which would be necessary to correct the error. This is why parity is only an Error Detection Code (EDC).
ECC is an extension of the parity concept. ECC is usually performed only on complete words, rather than individual bytes. In a typical ECC system with a 64-bit data word, there would be 7 ECC bits. Each ECC bit is calculated as the parity of a different subset of the data bits. The key to the power of ECC is that each data bit contributes to more than one ECC bit. By making careful choices as to which data bits contribute to which ECC bits, it becomes possible to not just detect a single-bit error, but actually identify which bit is in error (even if it is one of the ECC bits). In fact, the code is usually designed so that single-bit errors can be corrected, and double-bit errors can be detected (but not corrected), hence the term Single Error Correction with Double Error Detection (SECDED).
When a word is written into ECC-protected memory, the ECC bits are computed by a set of exclusive-or trees. When the word is read back, the exclusive-OR trees use the data read from the memory to recompute the ECC. The recomputed ECC is compared to the ECC bits read from the memory. Any discrepancy indicates an error. By looking at which ECC bits don't match, it is possible to identify which data or ECC bit is in error, or whether a double-bit error occurred. In practice this comparison is done by an exclusive-or of the read and recomputed ECC bits. The result of this exclusive-or is called the syndrome. If the syndrome is zero, no error occurred. If the syndrome is non-zero, it can be used to index a table to determine which bits are in error, or that the error is uncorrectable. This table lookup stage is implemented in hardware in some systems, and via an interrupt, trap, or exception in others. In the latter case, the system software is responsible for correcting the error if possible. On the Alpha this is one of the functions of PALcode.
<A HREF="http://www.brouhaha.com/~eric/computers/ecc.html" target="_new">- By Eric Smith -</A> See his stats<A HREF="http://www.catsdogs.com/wwwesmith.html" target="_new"> here.</A>
I still do not have any statistical answers to ECC vs Parity vs Non-ECC Non- Parity memory types. The order listed is slowest to fastest. But it is hard to tell the difference to the human eye just like 219fps vs 220fps. Humans cannot differentiate between a fraction of a nanosecond.
Any more questions?
<b>"The events of my life are quite inconsequential.." - Dr. Evil</b> :lol: