大家好,这里是大话硬件。
上一篇文章介绍了SDRAM基础,了解到SDRAM的发展历程。这篇文章主要总结SDRAM内部的构造和最基础的内存访问周期。
打开DDR的数据手册,在Diagram这一页如下所示:
上面的框图说明SDRAM内部有大量banks,即多bank架构。这个多Bank有点像图书馆里面的书架。
下面是1Gb内存DDR3手册,可以看到有8个Banks,对应到框图里面的Bank0~Bank7
将Bank类比成书架,如下所示
在Bank内部,存在不同的行Rows,而每一行又有很多列columns
根据上面的类比,当需要读取或者写入数据时,也就是要借取或者还回某本书,需要3个地址信息,分别是哪个Bank(书架),哪一行,哪一列。
那么在DDR内部,完成一次数据的操作,具体是如何进行的呢?
芯片上电完成初始化后处理idle状态。进行数据处理,主要有3步:
第一步:activating 激活
激活命令会把数据所在的bank一行,全部复制到bank对应的缓冲行里面,这里的行缓冲区访问速度非常快。
可以类比成你需要在图书馆找到清华大学出版的电路书籍,你在前台发出指令,图书馆会将一推车清华大学出版的电路书籍全部送到你面前。
第二步:读取或写入 read/write
此时数据在高速行缓冲区,可以直接进行读取或者写入。你能直接找你想要的具体的一本书籍。
第三步:预充电 precharge
当读取或者写入完成后,需要将这一行关闭掉,使其恢复到初始化的状态,这个动作就是预充电。
预充电完,将会发生两个变化: 如果刚刚写入了新的数据到缓冲行,那么预充电会把修改后的数据,复制到Bank中,使Bank的数据完成更新。另外,复制完成后,缓冲区将恢复到初始态。
此时整个Bank又回到了idle的状态。
上面三步,就是DDR一次完整的内存访问周期。对应下面的1,2,3。
根据上面状态机可知,在DDR内部还有refresh的操作,即刷新。在上一篇文章中介绍了SDRAM内部最小单元是一个电容和晶体管,但是这个电容并不是理想的,会慢慢漏电。刷新的操作就是给这些电容充电,防止因为漏电导致0和1发生翻转,导致数据错误。
从上面框图看出,刷新操作是不能读取或者写入数据的,因为上一个状态是idle也就是在预充电完成之后,才能进行刷新。可见刷新的频率和时间其实会影响到SDRAM操作的效率。因为刷新是实实在在地消耗时间,不能进行任何的数据操作。
将上面的命令功能总结如下:
下一篇文章将介绍SDRAM流水线操作指令关注我,让我成为你的专属小太阳吧
314