DRAM的三种刷新方式的刷新周期问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37345402/article/details/89811528

定时刷新的原因:由于存储单元的访问是随机的,有可能某些存储单元长期得不到访问,不进行存储器的读/写操作,其存储单元内的原信息将会慢慢消失,为此,必须采用定时刷新的方法,它规定在一定的时间内,对动态RAM的全部基本单元电路必作一次刷新,一般取2ms,即刷新周期(再生周期)。

刷新与行地址有关。刷新时一行行进行的,必须在刷新周期内,由专用的刷新电路来完成对基本单元电路的逐行刷新,才能保证DRAM内的信息不丢失。通常有三种方式刷新:集中刷新、分散刷新和异步刷新。

假定:

  • 刷新周期为2ms      
  • 存取周期为0.5μs,即刷新1行的时间为0.5μs(刷新时间是等于存取周期的。因为刷新的过程与一次存取相同,只是没有在总线上输入输出。存取周期>真正用于存取的时间,因为存取周期内、存取操作结束后仍然需要一些时间来更改状态。对于SRAM也是这样,对于DRAM更是如此)。
  • 对128×128的矩阵的存储芯片进行刷新,按存储单元(1B/单元)分为128行128列,即128×128×1B/单元=2^14个单元×1B/单元 = 16KB内存。 (如果是64×64的矩阵,则为64×64×1B/单元=2^12个单元×1B/单元 = 4KB内存)

1.集中刷新

集中刷新是在规定的一个刷新周期内,对全部存储单元集中一段时间逐行进行刷新,此刻必须停止读/写操作。

0.5μs*128=64μs的时间对128行进行逐行刷新,由于这64μs的时间不能进行读/写操作,故称为“死时间”或访存“死区”。

由于存取周期为0.5μs,刷新周期为2ms,即4000个存取周期。

  • 补充一点:为什么刷新与存取不能并行?

因为内存就一套地址译码和片选装置,刷新与存取有相似的过程,它要选中一行——这期间片选线、地址线、地址译码器全被占用着。同理,刷新操作之间也不能并行——意味着一次只能刷一行。

2.分散刷新

分散刷新是指对每行存储单元的刷新分散到每个存取周期内完成。其中,把机器的存取周期tc分成两段,前半段tM用来读/写或维持信息,后半段tR用来刷新。

即在每个存取操作后绑定一个刷新操作。延长了存取周期,这样存取周期就成了0.5μs + 0.5μs =1μs。但是由于与存取操作绑定,就不需要专门给出一段时间来刷新了。这样,每有128个读取操作,就会把0-127行全部刷新一遍。故每隔128μs 就可将存储芯片全部刷新一遍,即刷新周期是1μs×128=128μs远短于2ms,而且不存在停止读/写的死时间,但是存取周期长了,整个系统速度降低了。(分散刷新的刷新周期128μs ,其实不需要这么频繁,会导致浪费)

3.异步刷新

既可以缩短“死时间”,又充分利用最大刷新间隔为2ms的特点,具体操作为:在2ms内对128行各刷新一遍

每隔15.6μs刷新一行(2000μs/128≈15.6μs),而每行刷新的时间仍为0.5μs。这样,刷新一行只能停止一个存取周期,但对每行来说,刷新间隔时间仍为2ms,而死时间为0.5μs。(相对每一段来说,是集中式刷新,相对整体来说,是分散式刷新)

如果将DRAM的刷新安排在CPU对指令的译码阶段,由于这个阶段CPU不访问存储器,所以这种方案既克服了分散刷新需独占0.5μs用于刷新,使存取周期加长且降低系统速度的缺点,又不会出现集中刷新的访存“死区”问题,从根本上上提高了整机的工作效率。

猜你喜欢

转载自blog.csdn.net/m0_37345402/article/details/89811528