为什么DRAM需要刷新
DRAM(Dynamic Random Access Memory)即动态RAM,是我们熟知的内存,用在手机,电脑等设备当中用于存储数据与指令.通常所讲的RAM即指DRAM.DRAM由晶体管和小容电容存储单元组成。每个存储单元都有一小的蚀刻晶体管,这个晶体管通过小电容的电荷保持存储状态,即开和关。电容类似于小型充电电池。它可以用电压充电以代表1,放电后代表0,但是被充电的电容会因放电而丢掉电荷,所以它们必须由一新电荷持续地"刷新"。
接下来的例子我们以一个16K*1位的芯片来进行讲解.
16K->214=(27)2=(128×128)B,故该芯片有128*128根行线与列选择线.
而对DRAM刷新的方法是一次刷新完整的一行,即我们一共需要刷新128次共128行.
DRAM最大刷新周期:2ms,8ms,16ms等(DRAM在这些时间内会丢失电容,所以必须刷新).
我们假设最大刷新周期为2ms,即在间隔2ms的时间内,这128行必须全部刷新完毕,并设定存储周期为0.5us(即这0.5us将进行数据的读/写或一行的刷新)
集中刷新
集中刷新顾名思义,即在某一个时间段集中对这写行进行刷新.
首先我们计算出对128行刷新所需要的时间:
128*0.5us=64us(集中刷新时间)
2ms-64us=1936us(正常进行读写或维持电容内数据有效的时间)
故由于有着64us的时间需要对电容进行刷新,因此这一段时间称为"死区",即这段时间内CPU无法对DRAM进行访问.
优点:结构简单,实现简单
缺点:由于死区时间的导致,CPU在这段时间内无法进行大部分的工作,这是由于CPU所需要的部分指令是需要从内存中取得的
分散刷新
分散刷新的含义即对每一行进行独立的刷新,其实现方法为:
对于该行,前0.5us进行数据正常的存取,后0.5us进行该行的刷新,因此由于这一特性,使得DRAM的存储周期变为了1us(0.5+0.5),即128行将会在128us内完成全部的刷新,在2ms的时间内这128行将会被刷新2000/128=15.6次.
优点:无死区,不会导致CPU的空转
缺点:存储周期翻倍,CPU效率降低,且由于刷新时间间隔内会多次的对电容进行刷新,造成硬件磨损
异步刷新
异步刷新是前两种刷新的折中考虑.
对于这128行,在2ms的刷新间隔内,我们可以轻易的算出只需要每
2000/128=15.6us刷新一行即可完成2ms内对所有行的刷新,因此异步刷新也正是使用这思路.
即在这15.6us中,只会剩余0.5us用于最后对行的刷新,其余时间用于对存储单元进行数据访问.
如果将DRAM的刷新安排在CPU对指令的译码阶段,由于这个阶段CPU不访问存储器,所以这种方案既克服了分散刷新需独占0.5μs用于刷新,使存取周期加长且降低系统速度的缺点,又不会出现集中刷新的访存“死区”问题,从根本上上提高了整机的工作效率。
目前大部分使用的刷新方法都是这种
优点:不会过度刷新且没有死区