在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 84|回复: 0

[原创] DRAM里面的refresh/tRFC/tREFI的理解

[复制链接]
发表于 6 小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 zxqwolf 于 2025-3-16 14:59 编辑

一篇关于DRAM里面的refresh/tRFC/tREFI的介绍,转自微信公众号:DRAM视界
          粘贴的内容格式乱七八糟。欢迎去公众号查看内容。。。

         DRAM的ACT command打开wordline后,电容里面的data会sharing到bitline上,然后sense amplifier开始工作,将这部分电压进行放大,以便更能充分的识别成0跟1. PRE command就是关闭wordline
        tRFC = Refresh Cycle Time. 一次Refresh动作需要的时间。为什么有这个timing限制?在这个timing里面,DRAM在做什么?
        8Gb DDR4 row是65536条,那我们每一次refresh里刷多少条row呢?一条还是两条还是四条?这个次数影响到了tRFC的时间。一次refresh里面要刷的row的次数越多,理论上可能会要求tRFC时间就要越长。因为tRFC期间内,DRAM内部的动作,其实就是简单的ACT-->RE,把workline打开一次,cell里面的电荷restore一次,然后precharge把wordline再次关闭。所以tRFC里面要求多少个ACT->RE,就要求多少个tRC的时间(tRAS+tRP), 多少个tRC的时间,最后加起来基本就是对tRFC的要求
        基本原则是:tREF=64ms是硬性条件。不满足这个条件,cell就可以bit flip了,data就可能丢失了。也就是说,不管LP3/LP4/DDR3/DDR4/LP5/DDR5甚至未来的LP6/DDR6,还有GDDR系列,64ms时间内,必须把所有的row刷一遍。Base这个条件,我们再看看tRFC跟tREFI是个什么关系?
       一个tRC=tRAS+tRP=48ns,就是一次ACT+PRE的时间
       我们先定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-->RE动作。
      那么普通的提升arrary retention的办法基本就有两路(排除提升cell本身的办法), 1): 缩短tREFI,在64ms内能多发更多的REF command. 2): 一个tRFC时间内刷更多的row,一次4条提升到一次刷8条,甚至16条。
     一般从系统角度提高refresh rate的办法,是缩短tREFI,当然从颗粒角度,提升refresh rate的办法,还包含增加tRFC内刷新row的条数。
     那为什么tRFC会跟着density走呢?我们先看DDR4的spec4Gb vs 8Gb vs 16Gb: row的条数在翻倍)
    DDR4是通过增加row的条数来扩充density的。所以row的条数的翻倍,直接导致要刷新一轮所有array的时间增加。所以在tREFI  跟tREF不变的情况下,row增加,唯一可以做的,就是增加一次REF command里面刷新的条数,这个时候,tRFC的时间就会随着density的增加而增加。
     那么仔细研究会发现,tRFC又不是成倍的增加。4Gb vs 8Gb vs 16Gb, 或者DDR5的tRFC spec,也不是随着density增加一倍而增加一倍的tRFC,为什么呢?
    tRFC的增加是有代价的。refresh的command严重影响DRAM的performance,导致访问DRAM的latency增加的原因就是因为tRFC.  我们当然希望容量的增加是不要以牺牲性能为代价。假如一个tRFC时间内做了四次ACT+PRE(4*tRC), 那么row增加一倍的话,可以单纯增加到8tRC, 但是也可以通过一次ACT开多条row来实现(这个地方不meet interface上的ACT command的spec,需要DRAM内部地址decode来实现). 假如4次tRC时间内,其实可以刷8条row/16条row呢?
    拿DDR3 8个bank而言,假如REF是打开所有的bank的某条row的。那么默认就是一次开8(bank)*4条row(tRC). 当density翻倍,就可以开8*8条row来实现。side effect是同时开更多的row会造成功耗过大,内部power drop等过大,在兼容tRFC跟功耗、power等方面做了取舍。所以我们可以用8(bank)*8条row的方式来做,但是bank之间是错开打开bank
    这样的话,tRFC会稍微增加(增加的时间是每个bank错开的时间), 功耗也会下降(避免同时打开过多的row). 这就是trade off的艺术。DDR4亦然,DDR5既通过增加row的方式来增加density,也通过增加bank数量来增加density,所以道理亦然。


您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-3-16 20:57 , Processed in 0.012865 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表