An error-correcting fully-buffered memory module can detect and correct
some errors in data read from memory chips. An error correction code ECC
controller is added to the Advanced Memory Buffer (AMB) on the memory
module that fully buffers memory requests sent as serial packets. The
error correction controller generates ECC bits for write data, and both
the ECC bits and the write data are written to the memory chips by a DRAM
controller in the AMB. During reads, an ECC checker generates a syndrome
and can activate an error corrector to correct data or signal a
non-correctable error. The corrected data is formed into serial packets
sent back to the motherboard by the AMB. Configuration data for the ECC
controller could be first programmed into a serial-presence-detect
electrically-erasable programmable read-only memory (SPD-EEPROM) on the
memory module, and then copied to error-correction configuration
registers on the AMB during power-up.