内存的 3 种刷新方式
最后更新于 2016-05-03 01:59:00
众所周知,内存(Memory)是带电存储的,掉电就会丢失数据,所以需要刷新来保持数据。
原因
由于内存(Memory)以及缓存(Cache)都由相应的存储单元芯片DRAM和SRAM构成存储阵列,是一种半导体存储器件。并且,所有的数据都是逻辑 1
和 0
的组合。
至于 1
与 0
的输出,这源于存储单元芯片的基本结构:晶体管(场效应管)。其中,高低电平(1 和 0)的输出取决于源极电容上保存的电荷量,而电容上电荷的保持是需要一定电压维持的。所以一断电,电容上的电荷会全部消失,相应的数据也就会消失。
解决方案:刷新
解决的方法策略就是,在电容上电荷消失之前,对其刷新一次,让其保持原状态,即保证数据的正确存储。
一般有三种方式:
- 集中刷新 (单次耗费时间)
- 分散刷新 (刷新太过频繁)
- 异步刷新 (高效率,低时间消耗)
一般情况下,电容上的电荷可保持2ms,数据读写周期为0.5us,并且存储阵列的刷新均是按行刷新的。同时,内存刷新相当于一次数据的读写,消耗时间基本和读写周期相同。下面以128 行 ×128 行 ×8bit的存储阵列,即就是 16KB*8bit 的内存(Memory)为例,进行说明:
集中刷新
集中刷新的原理就是,快到 2ms 的时候,也就是电容上电荷即将消失时,停止一切读写状态,对内存进行所有行刷新,那么这样耗费的时间就是:
**刷新消耗时间:**128 行 ×0.5us=64us
这就相当于,在每过 2ms,就有 64us 刷新时间,这 64us 期间内存停止与外界的一切交互,这对数据读写效率的影响是巨大的。
特点:单次时间耗费巨大。
分散刷新
分散刷新的原理就是,每次读写操作完成之后,就刷新一行,这样相当于每次读写操作的时间翻倍0.5us(读写)+0.5us(刷新)。
**每行刷新间隔:**128 行 ×1us=128us
电容上的电荷可保持 2ms,但是分散刷新每隔 128us 就会刷新一次,这样显得太过频繁,在一定程度上影响了读写操作的效率。
特点:刷新太过频繁。
异步刷新
异步刷新的原理就是,既然电容上电荷可保持 2ms,那么就在几乎快到 2ms 的时候刷新。这样相当于每行只刷新一次,对读写操作的影响是最小的。
**行间刷新间隔:**2ms÷128 行=15.625us (取 15.5us)
> **每行 刷新间隔:**15.5us×128 行=1.984ms
可以看出,异步刷新事实上是改进了的分散刷新,分散刷新太过频繁,异步刷新将分散刷新的每行刷新间隔延长到几乎 2ms,保证数据不会丢失即可,极大的降低了刷新操作对读写过程的影响。
特点:刷新一次,保证数据正确性,同时最小化对读写操作的影响。
结语
这就是内存(Memory)以及缓存(Cache)需要带电存储数据的原因,以及保证数据存储正确性的解决策略:刷新操作,其 3 种方式的详细解释。