内存刷洗

内存刷洗（）也可称内存擦洗、内存清洗，它是指从每个電腦記憶體位置读取数据、以一种错误纠错码（ECC）纠正位元错误（如果存在），然后将校正后的数据写回到相同位置。

由于现代计算机内存芯片的高度集成，单个内存单元的结构已足够小到易于受到宇宙射线和/或阿尔法粒子的影响。由这些现象引发的错误被称为軟性錯誤，这对基于DRAM或SRAM的内存来说可能是个问题。在任何单个内存位元发生软错误的概率非常小。但是，配以现代计算机的庞大内存空间，加之长时间持续运行的如服务器，在已安装内存中发生软错误的概率可能比较显著。

纠错内存中的信息被冗余存储，以便能校正每个内存字（word）的单比特错误。也因如此，ECC内存可以支持对内存的刷洗。换句话说，如果内存控制器系统性扫描内存，则可以检测到单比特错误，并可以使用ECC校验和来确定出错的比特并将校正的数据写回内存。

概述 
在同一个字（word）未发生多比特错误前周期性检查每个内存位置很重要，这是因为截至2008年，ECC内存模块还不能校正出现多比特的错误。

为了不干扰来自CPU的常规内存请求以及防止電腦性能下降，刷洗通常仅在空闲时进行。由于刷洗是由正常的读取和写入操作组成，它可能增加内存相较非刷洗操作时的。因此，刷洗应该周期性但不是持续性进行。许多服务器可以在BIOS设置程序中配置刷洗周期。

普通的内存读取是由CPU或DMA设备发出和检查ECC错误，但由于数据局部性原因，它们可能被限制在小范围的地址空间内，并且保持位置、很长时间不被触碰。这些位置因而可能容易受到多个软错误的影响，而刷洗可确保在指定时间内检查整个内存。

在某些系统上，不止主内存（基于DRAM的内存）支持刷洗，有些CPU高速缓存（基于SRAM）也可以。在大多数系统上，两者都可以独立配置刷洗速率。因为缓存比主内存小得多，所以缓存的擦洗不需要频繁进行。

内存刷洗提高了可靠性，因此它可被归类为可靠性、可用性和可維護性（RAS）特性。

变种 
它通常有两种变体，被称为巡逻刷洗（patrol scrubbing）与按需刷洗（demand scrubbing）。虽然它们本质上都执行内存刷洗及相关的错误纠正（如果可行），两者的主要区别是如何启动和执行。巡逻刷洗会在系统空闲时自动运行，而按需刷洗是在数据被主存储器实际请求时执行错误纠正。

参见 
 ，包含内存刷洗等的一般分类
 軟性錯誤，执行内存刷洗的一个重要原因
 错误检测与纠正，内存刷洗的一般理论
 ，用于保留存储在内存中的信息。

参考资料 

電腦記憶體