我们平常所提到的计算机的主存指的是动态主存(即动态RAM),动态RAM的记忆单元是依靠电容上的电荷表示信息的,而电容的绝缘电阻不是无穷大,总会有漏电情况发生。由于半导体栅极上电容的电荷只能保持几毫秒,使得动态RAM中的数据经过一段时间就会丢失,这也就是动态RAM中所谓的“动态”。为了防止动态 RAM中的信息丢失,就需要一个额外设置一个电路每隔两毫秒就对其中所有的记忆单元进行充电,以恢复原来的电荷,这个过程就叫动态RAM的刷新。刷新类似于读操作,但刷新时不发选址信号。读/写过程中也能进行刷新工作,但因读/写是随机的,可能有的存储单元长期不被访问,若不及时补偿电荷,将使存储信息被破坏,因此,必须定时刷新。为了区别上述两种情况,不妨把读/写过程中的刷新叫做“再生”,把非读/写过程中的定时刷新叫做“刷新”。定时刷新可以由专门的控制逻辑产生刷新地址。由于它不依赖于外部的访问,所以刷新对CPU是透明的。从上一次对整个存储器刷新结束到下一次对整个存储器全部刷新一遍所用的时问间隔称为刷新周期(或再生周期),一般为2ms。
集中式刷新
在允许的最大刷新周期内,根据存储容量的大小和存取周期的长短,集中安排一段刷新时间,在刷新时间内停止读/写操作。例如,Intel 1103动态RAM,采用32 X 32存储矩阵,存取周期为0.5us,连续刷新32行,共读32个读/写周期,即一次刷新总时间为16us。2ms内内可进行4000次读/写操作,前面3968个周期用于读写操作,后32个周期用于刷新。这种刷新方式在读/写操作时不受刷新的影响,读写速度较高,但刷新时必须停止读/写操作,形成一段“死区”。“死区”占4000中的32,故死时间率为0.8%。“死区”随存储元件的增多而加长,对于64X64的存储矩阵,“死区”长度增加一倍,死时间率为16%。为了减少“死区”,对大容量的MOS芯片,可以采取一个刷新周期内同时刷新多行,以减少刷新周期数。
分散式刷新
分散式刷新是指把每行存储单元的刷新分散到每个读写周期内进行。即把系统周期分为两段,前半段时间用来读/写数据或使存储器处于保持状态,后半段时间则用来对存储矩阵时的一行进行刷新操作。这种刷新增加了机器的存取时间,如存储芯片的存取时间为0.5us,则机器的存地时间为1us。对于前述32X32的存储芯片来说,整个存储器刷新一遍需要32us,也就是说以32us作为刷新间隔。这种刷新避免了“死区”,但加长了机器的存取时间,降低了整机的运算速度,而且刷新操作过十频繁,没有充分利用芯片所允许的最大刷新新隔时间。这种种适用于高速存储器。还应指出,这种刷新的行地址和读/写的地址不同,通常由存储器内部自动按0、1、2、.……、31字线依次进行,或由刷新地址计数器提供。
异步式刷新
异步式刷新是上述两种方式的结合,它充分利用了最大刷新间隔时间并使“死区”缩短。 对于128 * 12816K * 1位的存储矩阵,每行的刷新间隔时间是128行对2ms的分割,即约隔15.6us刷新一行。在2ms内分散地对128行轮流刷新一遍,刷新一行时只停止一个读/写操作时间,若仍为0.5us,这样,对每行来说,刷新时间仍为2ms,而“死区”长度则缩短为0.5us。消除“死区”还可以采用不定期的刷新方式,即可以把刷新操作安排在CPU不访问主存的时候,例如,利用CPU取出指令后进行译码的这段时间。这时,刷新操作对CPU是透明的,故称透明刷新。这种刷新没有单独占用CPU的时间,也没有“死时间”,效率最高,但是刷新的控制线路较为复杂。