引言
在查阅DDR手册时我们会看到几个关键参数,tRAS(Row Address strobe) tCAS(Column Address Strobe) tPRE(Precharge) ,往往这些数值看上去很抽象,但是如果理解DRAM读写操作的行为就能更好地理解这些数值。下文就是从存储器原理上进行解释,能看懂这些底层行为对于理解DDR时序是十分有利的。
本人的一个感悟就是网络资源丰富一定程度上能帮助理解相关知识,但是这些知识不具备体系,因此理解存在片面或是晦涩难懂,可能学会了也只是硬记下来。
本文参考书籍:Computer Architecture a Quantitative Approach 6th
正文
首先给出一个DDR原理图帮助阐述:
RAS指代CPU给出的激活bank和对应Row的指令 ,这时候DDR将对应Row,也就是上图中那一纵排里面的数据取出来放到一个buffer里面存着,对应上图中左边那一小纵排。实际上这个操作就是把DDR对应的DRAM中的电荷释放出来存到对应的buffer里面,因为DRAM实际上是一个MOS管中浮栅存放电荷来存储数据,所以这个操作把Row里面的DRAM掏空了。后续CPU再给CAS指令选定这个Row里面到底要取哪些数据,选定对应的Column。这个说法很容易令初学者混淆,Row Column给人的感觉是二维阵列,但实际上Colume是这个Row里面进一步细分的一个量程。
所以为什么要Precharge?就是给DRAM充电,把数据恢复回去,不然下次读什么数据呢。
理解充放电这个原理后就可类推,假设一个操作访问完Bank1(假设一个有8bank的DDR3)的Row1,要再去访问Bank1里面的Row2,就需要一个Precharge的操作把Row1的数据恢复回去,并把Row2的数据读到对应的buffer上,这些操作是可以overlap的,也就是可以并行实现以减小延时。如果继续访问Bank1的Row1就可以省去这个操作,因为反正数据在buffer里面。或者一个操作访问完Bank1要再去访问Bank2,那么也需要一个完整的RAS-CAS-PRE等操作。
当然DRAM本身需要刷新,因为MOS管里的电容会不断泄露出来(当然没有核泄漏那么恐怖啦),这种易失特性会导致数据丢失。针对一个Bank需要间断进行数据的重新写入,漏出来的电荷重新给他填上,大概是64ms一次。
好啦,现在你已经了解了DDR的行为了,现在就来设计一个DDR6吧!
标签:CAS,DDR,PRECHARGE,RAS,DRAM,Bank1,Row From: https://www.cnblogs.com/Achilles7/p/16935215.html