A memory controller includes scrub circuitry that performs scrub cycles in
a way that does not delay processor reads to memory during the scrub
cycle. Atomicity of the scrub operation is assured by protocols set up in
the memory controller, not by using an explicit atomic read-correct-write
operation. The result is a memory controller that efficiently scrubs
memory while minimizing the impact of scrub cycles on system performance.