DRAM刷新refresh相关知识归类-基础小知识(三)


img
RAM每一位数据都是通过芯片内的一个 小电容充电(或低电平)存储的。但随着时间的推移,电容逐渐失去电荷。为避免丢失存储的数据,必须 定期刷新以将电荷(如果存在)恢复到其原始级别。此刷新过程包括读取每个位的值,然后将其写回。在此“刷新”期间,内存被占用,无法执行加载或存储位等正常操作。知道了应该这么做,但怎么去做以及有什么办法更有效率去做,就是接下来要整理的内容。

一、背景小知识

动态随机存储器(DRAM)具有速度快、密度高、成本低的优势,被广泛应用于计算机的主存.DRAM采用电容作为存储单元,电容电荷的多少表示数字"0"或"1".由于存在漏电现象,电容里的电荷会缓慢流失,造成数据丢失.为保证数据正确性,DRAM采用周期性的刷新操作,在数据丢失前,把数据读出然后重新写入存储单元.刷新操作会阻碍正常访存的执行,造成性能上的开销;同时刷新操作会消耗额外的功耗,带来功耗上的开销.刷新的开销与DRAM密度相关。随着内存容量需求的增加,DRAM占系统整体功耗的比例可达40%。

1.1 DRAM的层次结构

在这里插入图片描述
从顶层到Rank,Chip,Bank,Sub-array,MAT,Cell。一个Chip内部包含有多个Bank,每个bank包含有独立的行地址译码器(row decoder)和感应放大器(sense amplifier)。一般认为,Bank 是DRAM完成独立操作的最小单元。继续往下划分又分为Sub-array,MAT,Cell,具体介绍可参加参考文献一。重点是知道每个存储单元由一个电容和一个晶体管组成,电容的电荷多少表示数字‘1’或‘0’,晶体管的栅极与字线(Wordline)相连,字线控制晶体管的导通,晶体管的漏极与位线(bitline)相连,导通时由位线表示单元里存储的数据。

1.2 刷新要求

在这里插入图片描述
JEDEC要求在常温下每64ms(高温下为32ms)刷新一遍所有DRAM存储单元。这是一项相当耗时的操作。为避免每64ms出现一次大的停顿,这一过程被分为8192个较小的刷新操作。在每个操作中,计算机的存储器控制器向DRAM芯片发送刷新命令。在接收到指令后,芯片将刷新其单元总数的1/8192。计算一下: 64ms / 8192 = 7812.5 ns或7.81μs。简化DRAM控制器设计,DRAM控制器只需要在每个刷新周期向每个Rank发送8192个刷新。根据自身密度决定刷新行数,DRAM控制器发送2个刷新命令之间的间隔为刷新周期的1/8192,定义为TREF1;DRAM芯片执行一个刷新命令的时间取决于DRAM芯片的密度,定义为TREC.因此每个间隔内需要刷新的行数增多,刷新所占的时间比例不断增大。以4Gb DDR3 DRAM 为例,要求在300ns内完成对64行(8个Bank,每个Bank刷新8行)的刷新操作。单行刷新的延迟大约为50ns,在300ns完成对64行的刷新操作,只能通过并行方式实现,并行单行刷新所消耗的叠加电流必须在DRAM容许范围内。

典型的内存芯片用于刷新的时间占其运行时间的很大一部分——介于0.4%到5%之间。此外,存储器芯片功耗是典型计算机功耗中的一大部分,并且大部分功耗都用于执行刷新。
在这里插入图片描述

一个bank内多行并行刷新,实现在TRFC刷新64行的操作。

1.3 DRAM存储芯片的读写时序

img

DRAM读周期:为了使芯片能正确地接收行、列地址并实现读操作,各信号的时间关系应符合下面的要求:行地址必须在RAS#信号有效之前送到芯片的地址输入端;CAS#信号应滞后RAS#一段时间,并滞后于列地址送到芯片地址输入端的时间;RAS#、CAS#应有足够的宽度;WE#信号为高,并在CAS#有效之前建立。

DRAM写周期:1、WE#信号为低,并在信号CAS#有效之前建立。2、数据必须在CAS#有效之前出现在DIN端。

1.4 刷新方式分类

  • 集中式刷新:在规定的一个刷新周期,对所有存储单元集中一段时间逐行刷新。

例如:对64✖64的矩阵刷新,存取周期是0.5us,刷新1行的时间为0.5μs(刷新时间是等于存取周期的。因为刷新的过程与一次存取相同,只是没有在总线上输入输出。存取周期>真正用于存取的时间,因为存取周期内、存取操作结束后仍然需要一些时间来更改状态。刷新周期为2ms(占4000个存取周期)。则集中刷新共需0.5✖64=32us(占64个存取周期),在这段时间内存只用来刷新,阻塞一切存取操作,其余3968个存取周期用来读/写或维持信息。

这64个存取周期称为“死时间”,所占的比率64/4000*100%=1.6%称为死时间率。

这种方式的优点是速度高,缺点是死时间长。

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

例如:对64*64的矩阵刷新,存取周期是0.5us,则读写周为0.5us。

刷新周期为:64*1us=64us<2ms , 在2ms丢失电荷前就会及时补充。

优点是没有死时间了,缺点是速度慢。无异于加长了存取周期,会使系统运行速度降低,刷新操作也过于频繁。

  • 异步式刷新:指不规定一个固定的刷新周期,将每一行分来来看,只要在2ms内对这一行刷新一遍就行。

例如:对64*64的矩阵刷新,存取周期为0.5us。

要使每行能在2ms内刷新一次,即每隔 (2ms/64us) 刷新一行,也就是对这一行来说,下一次对它进行刷新的间隔,期间要经过64次内存刷新周期才又轮得到它。

每行刷新的时间仍为0.5us,刷新一行只停止一个存取周期,但对每行来说,刷新间隔在2ms以内,死时间缩短为0.5us。

参考文献

【1】崔泽汉, 陈明宇. 大容量DRAM的刷新开销问题及优化技术综述[J]. 计算机研究与发展, 2016, 53(2):416-430.

【2】JEDEC:Joint Electron Device Engineering Council. http://www.jedec.org 固态技术学会

【3】你的计算机内存每7.8微秒会有一个小停顿

【4】DRAM(动态)存储器

【5】刷新周期

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

【7】挑战408——组成原理(10)——SRAM与DRAM

  • 7
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Paul安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值