版权归原作者所有,如有侵权,请联系我们

[科普中国]-内存刷洗

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

内存刷洗(英语:Memory scrubbing)也可称内存擦洗内存清洗,它是指从每个电脑存储器位置读取数据、以一种错误纠错码(ECC)纠正比特错误(如果存在),然后将校正后的数据写回到相同位置。

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

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

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

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

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

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

内存刷洗提高了可靠性,因此它可被归类为可靠性、可用性和可维护性(RAS)特性。1

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

参见数据刷洗,包含内存刷洗等的一般分类

软性错误,执行内存刷洗的一个重要原因

错误检测与纠正,内存刷洗的一般理论

内存刷新,用于保留存储在内存中的信息。1

本词条内容贡献者为:

李嘉骞 - 博士 - 同济大学