DRAM refresh里面的tRFC tREFI tREF之间是什么关系

欢迎大家关注微信公众号: DRAM视界
也欢迎大家订阅本专栏。本专栏会持续不断的分享DRAM相关的经验

 **学DRAM的痛苦之一,是DRAM里面的timing太多了,各种各样的timing五花八门,奇形怪状,不知所云。**

Refresh操作里面也有很多对timing的要求,ACT要求tRCD/tFAW, PRE要求tRP, tRTP等。REF要求tRFC/ tREFI/ tREF等等。
那tRFC vs tREFI vs tREF之间是何等的三角关系呢?


tRFC


tRFC = Refresh Cycle Time. 一次Refresh动作需要的时间。为什么有这个timing限制?在这个timing里面,DRAM在做什么?控制器又在做什么?
以下是DDR5 spec里面对tRFC的定义:
在这里插入图片描述
tRFC1/tRFC2/tRFCsb是由于不同的REF模式导致的不同的参数timing。除了这个差别之外,可以看到tRFC还会收到容量大小的影响。不同的refresh mode,tRFC还要求不一样。而且这个地方,为何会受到容量大小的影响呢?

refresh刷新的是什么?刷新的是row. 一个DRAM里面有多少条row?我们还是拿8Gb的DDR5来举例(在大容量的时代,8Gb基本没有存在价值):(本专栏之前的文章就介绍了refresh里面在做什么了,其实refresh = active + precharge)
在这里插入图片描述
看上图,row是65536条,那我们每一次refresh里刷多少条row呢?一条还是两条还是四条?这个次数影响到了tRFC的时间。一次refresh里面要刷的row的次数越多,理论上可能会要求tRFC时间就要越长。因为tRFC期间内,DRAM内部的动作,其实就是简单的ACT–>PRE,把workline打开一次,cell里面的电荷restore一次,然后precharge把wordline再次关闭。通过这种动作实现对cell的刷新。所以tRFC里面要求多少个ACT–>PRE,就要求多少个tRC的时间(tRAS+tRP), 多少个tRC的时间,我们姑且简单理解为相加的关系,最后加起来基本就是对tRFC的要求。tRC=tRAS+tRP基本等于48ns左右。记住这个数字


tREFI


tREFI:两次refresh之间的间隔
在这里插入图片描述
spec严格定义如下:

=====================================================================================
在这里插入图片描述

=====================================================================================

这个描述的意思是32ms内刷新8192次, tREFI就base这个时间来计算。那tREFI=32ms/8192次=3.9us/次。这个地方在DDR5的spec上的描述跟之前的spec上有点差别。我们一般认为tREF是retention的时间。DRAM的cell的retention的标准是64ms. 所以一般是要求64ms内刷新完所有row. 但是这地方的tREF为何是32ms?这个地方的tREF其实不再代表retention的时间,而是只刷新8192次的时间。spec没说32ms内刷完所有row,而只是说32ms内刷到8192次。为何有如此差别?鄙人盲猜是为了跟之间的spec兼容。DDR4/LPDDR4以及更上一代的产品,8192次是可以刷完所有row的。那么到了DDR5, tREF变成了32ms内刷新8K次,也就意味着64ms内是要刷新16K次。

我们先定一个基本原则在这里,不然很容易产生谁是鸡,谁是蛋的问题。

**基本原则是:tREF=64ms(DDR4是8K,DDR5是16K). 是硬性条件。**不满足这个条件,cell就可以bit flip了,data就可能丢失了。也就是说,不管LP3/LP4/DDR3/DDR4/LP5/DDR5甚至未来的LP6/DDR6,还有GDDR系列,64ms时间内,必须把所有的row刷一遍。

具体如何计算?
我们先定tREFI=3.9us(依旧以8Gb DDR5 spec来看),那么64ms内,就是可以刷16K次REF cmd. 那么65536条row要在64ms内刷完(其实64ms内,刷的是16K次=64ms/3.9us),也就是65536条row要通过16K次REF command都要刷一圈。那么一次就要刷4条row**(65536/16K).** tRFC=4*tRC=192ns.也就基本满足spec tRFC 195ns.注意:65536条row是一个bank里面的数量。所以以上的计算方法默认的前提是所有bank都在同时做刷新动作.也即一次REF command里面,在tRFC的时间内,for 8Gb density的话,是所有bank里面都要连续做四条row的ACT–>PRE动作。那么普通的提升arrary retention的办法基本就有两路(排除提升cell本身的办法), 1): 缩短tREFI,在64ms内能多发更多的REF command. 2): 一个tRFC时间内刷更多的row,一次4条提升到一次刷8条,甚至16条。

上面的描述,其实已经体现了tREFI vs tRFC vs tREF之间的关系了。上面假定了tREFI=3.9us来计算的。**base温度不变的情况下:**假如tREFI=7.8us呢,意味着tREF=64ms内,只能发8K次REF cmd来刷完所有array,也就意味着一个REF里面要刷双倍的row(8条),意味着可能更长的tRFC或者更大的power loading. 那假如tREFI=1.9us呢,意味着刷新率(refresh rate)更快,一次REF里面就可能只需要刷两条row了。这个前提是温度要不变的情况。实际情况是相同的density下,tRFC是keep不变的(同一种refresh mode下). tREFI时间一般是随着温度变化而变化。高温的时候tREFI会缩短,来保证array高温下的retention,当然功耗会增加。低温的时候tREFI会变长,来确保array retention没问题的情况下功耗更低。这种交互方式的实现一般是通过DRAM的MR4寄存器来实现。MR4会根据DRAM内部的温度传感器来判定当前DRAM的温度,然后反馈一个状态标志位给到controller。controller会做MR4的轮询检查,一旦发现温度有变化,就会考虑是否触发refresh rate的更改来求得功耗与quality之间的tradeoff

关于DRAM的refresh,还有很多细节能内容,本专栏将会一一分享介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

DRAM视界

你的鼓励将是我分享的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值