动态随机存储器的刷新

以下内容来自于哔哩哔哩视频网站的王道论坛的计算机组成原理****,如有侵权,请联系我删除掉

遇到的问题

前面提到了动态随机存取器DRAM的电荷只能维持2ms,那么该以怎么样的方式使其保持状态稳定呢

需要解决的问题是

要想在2ms内,存储器上面的所有的存储单元都被刷新到,需要思考下面几个问题

  • 多久刷新一次
  • 每次刷新多少个存储单元
  • 如何刷新
  • 在什么时刻刷新

模型图

动态随机存储器的刷新

为什么要采用行地址和列地址的组合模式

通过前面的分析可以知道,如果输入到译码器的地址线有n根,那么存储体内就有2n根选通线来对应存储单元,采用了行列地址模式之后,需要的是2n/2+2n/2根线。大大减少了布线的复杂性和选通线的数量,以8个地址线为例,如果采用简单模型,则需要256根线,而采用了行列地址模式,则只需要32根选通线。
关于刷新,是有硬件支持为基础的,就是读取一行的信息然后重新写入,这个过程占用的是一个读/写周期。
接下来看如果行列地址的时候,可用的三个刷新策略
以下是一个行列为128*128的地址,读写周期为0.5微秒的存储器的例子,先换算以下时间单位
1 m s = 1000 u s 1ms=1000us 1ms=1000us, 2 m s = 2000 u s 2ms=2000us 2ms=2000us

  • 每次读写完,都刷新一行

存在的问题是有的行可能会被刷新多次

此时每次读写完占用了0.5us,然后又利用了0.5us进行刷新,也就是说一个存储周期用了1us,那么2ms内就有2000个周期,也就是是说每行都被刷新了2000次,这显然对性能是一种浪费

  • 2ms内集中安排时间全部刷新

存在的问题是存在一个较长的死区,这段时间无法访问存储器

此时前面的一段时间时间专门用来读写操作,后面一定要留下充足的时间来对所有的行进行集中刷新,因为一共有128行,那么集中刷新的时间就是128*0.5us,也就是64us来刷新,这64us是死区,无法访问存储器,这个死区可能用无法忍受的

  • 2ms每行刷新一次即可

目前存储器采用的就是这种策略

如果在2ms内128行只需要刷新一次,那么就把2ms分割成128个周期,每个周期分别刷新一次就可以了,2ms/128=15.6us,那么在每个15.6us的末端只要留下0.5us进行刷新,前面的时间都用来读写操作即可
特别说明: 不论是哪一种刷新策略,在死区都是无法访问存储器的

动态随机存储器的刷新