集中刷新、分散刷新与异步刷新
对128*128矩阵的存储芯片进行刷新时,若存取周期为0.5μs,刷新周期取2ms。
求在一个刷新周期内的 刷新间隔 、 行刷新间隔 和 刷新时间 分别是多少?
提示:刷新1行的时间为0.5μs( 刷新一行的时间是等于存取周期的。因为刷新的过程与一次存取相同,只是没有在总线上输入输出。刷新间隔:两次刷新的起始时间差
行刷新间隔:两行刷新的起始时间差
刷新时间:规定的一个周期内刷新的总时间
集中刷新
概念:在规定的一个刷新周期内,对全部存储单元集中一段时间逐行进行刷新,此刻必须停止读/写操作。
也就是说,在2ms的刷新周期结束前,预留(128 * 0.5μs=)64μs的时长来进行刷新,以此达到每个刷新周期集中刷新。那么每一个周期都是这样, 则刷新的时间为64μs。
由于是集中逐行刷新, 行刷新间隔也就是存取周期的时间0.5μs;
该方式刷新并不改变刷新周期,则下一次重新刷新还是2ms, 即刷新间隔为2ms 。
分散刷新
概念:指对每行存储单元的刷新分散到每个存取周期内完成。
也就是每存取一次后就进行一个刷新操作,存取与刷新交替进行,把原来的存取周期增大了0.5μs(刷新一行的时间),即现在的存取周期为1μs。那么 行刷新间隔为(0.5μs+0.5μs=)1μs
一共128行,到下一次重新刷新时,已经过去了128 * 1μs=128μs,则 刷新间隔为128μs 。
而分散刷新并不知道在规定的一个周期内一共进行了多少次刷新,因为是绑定在每个存取操作之后的,不需要专门的刷新时间,会循环刷新。因此需要求出一共刷新的次数,在规定的一个周期刷新的次数(每次刷新128行,2ms的时间内一次刷新需要128μs)为2ms / 128μs;而每次刷新(128行)需要的时间是128 * 0.5μs,则 刷新时间为 (2ms / 128) * (128 * 0.5μs) = 1ms
异步刷新
概念:前两种方式的结合,既可缩短“死时间”,又充分利用最大刷新间隔为2ms的特点。即把每行刷新平均分配到2ms的刷新时间里。
由于总的刷新周期不变,则 刷新间隔为2ms
平均分配刷新后,变为每隔(2ms/128 ≈ )15.6μs刷新一行,则 行刷新间隔为15.6μs
由于在一个规定的刷新周期内,刷新的行数是确定的128行,且每行刷新的时间为0.5μs,则 刷新时间为128 * 0.5μs= 64μs
简单总结: 三种刷新中集中刷新的死时间(不能进行读/写操作的时间)最多,而分散刷新增加了存取周期的时间,减少了死时间。异步刷新由于平均分配刷新行数,在保证刷新不至于像分散刷新那样频繁的前提下,也确保了在读取操作的过程中插入刷新操作,没有出现像集中刷新那样的大量死时间。