|
DRAM Data Integrity Mode
Common Options : ECC, Non-ECC
Details
ECC, which stands for Error
Checking and Correction, enables the memory controller to detect
and correct single-bit soft memory errors. The memory controller will also
be able to detect double-bit errors though it will not be able to correct
them. This provides increased data integrity and system stability. However,
this feature can only be enabled if you are using special ECC memory
modules.
Now, this type of memory module is special because it has extra memory
chips and a wider path. This is because the chipset needs to append a
certain number of extra ECC bits (called ECC code) to each data word that's
written to the memory module. When the data word is read back, the memory
controller will recalculate the ECC code of the read data word and compare
them to the original ECC code that were written to memory earlier. If the
codes are identical, then the data is valid.
But if there's a single-bit error in the data word, the memory
controller can identify the defective bit by analyzing the differences in
the two ECC codes. That bit can then be corrected by simply flipping it to
the opposite state (from 0 to 1 or vice versa).
Just for general information, here's a list of ECC code length required
for various data path widths using the current Hamming code algorithm
standard :-
8-bit data path = 5 ECC
bits
16-bit data path = 6 ECC bits
32-bit data path = 7 ECC bits
64-bit data path = 8 ECC bits
128-bit data path = 9 ECC bits
Because present day processors use 64-bit wide data paths, 72-bit (64-bit
data + 8-bit ECC) ECC DRAM modules are required to implement ECC. Note
that the maximum data transfer rate of the 72-bit ECC DRAM module is the
same as the 64-bit DRAM module. The extra 8-bits is only for ECC codes and
do not carry any data.
In fact, because the memory controller has to calculate the ECC code for
every data word that is read or written, there will be some performance
degradation, roughly in the region of 3-5%. This is one of the reason
why ECC DRAM modules aren't that popular. Throw in the fact that ECC DRAM
modules are both expensive and harder to get; and you have the top three
reasons why ECC DRAM modules will never be mainstream solutions.
But if data integrity is of utmost importance to you and you can't
afford to have your system down due to errant cosmic rays or radiation from
the DRAM packaging, ECC DRAM is the only way to go. The loss of 3-5% in DRAM
performance is minor compared to the peace of mind afforded by ECC.
In any case, the matter of this BIOS function is much easier to settle.
If you are using standard 64-bit DRAM DIMMs, you must set this function to
Non-ECC. But if you already spent the extra dollar to get 72-bit ECC
DRAM, set this function to ECC. No matter what people say about
losing that 3-5% of performance. It doesn't make sense to buy expensive ECC
DRAM DIMMs and then disabled ECC. Remember, you are not really losing
performance. You are just trading it for greater stability and data
integrity.
|