DDR原理详解
DDR原理详解
存储器主要分为只读存储器 ROM 和随机存取存储器 RAM两大类。
ROM:只读存储器 ROM 所存数据,一般是装入整机前事先写好的,整机工作过程中只能读出,ROM所存数据稳定,断电后所存数据也不会改变。
RAM:随机存取存储器RAM 是与 CPU 直接交换数据的内部存储器,它可以随时读写,速度快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介,当电源关闭时 RAM 不能保留数据。
DDR SDRAM 在系统时钟的上升沿和下降沿都可以进行数据传输 DDR SDRAM在 SDRAM 的基础上发展而来,这种改进型的 DRAM和 SDRAM 是基本一样的,不同之处在于它可以在一个时钟读写两次数据,这样就使得数据传输速度加倍了,也是目前电脑中用得最多的内存,而且具有成本优势。DDR 已经发展至今已经进化到 DDR5,与 DDR4相比,DDR5 在强大的封装中带来了全新的架构。
从内存控制器到内存颗粒内部逻辑,笼统上讲从大到小为:channel>DIMM>rank>chip>bank>row/column,如下图:
对于DDR可以按照如下层次来区别:
一个DDR有多个内存通道,每个通道可以插若干个DIMM,而每个DIMM上有至少一个以上的RANK,每个RANK由若干个内存芯片组成,这些芯片可能是4/8/16bit的,他们组合的原则就是将位宽凑齐至通道位宽(64bit)。
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
接下来,我们来看一下RANK和CHIP里面有什么:
这是DDR3一个Rank的示意图。我们把左边128MB Chip拆开来看,它是由8个Bank组成,每个Bank核心是个一个存储矩阵,就像一个大方格子阵。这个格子阵有很多列(Column)和很多行(Row),这样我们想存取某个格子,只需要告知是哪一行哪一列就行了,这也是为什么内存可以随机存取而硬盘等则是按块存取的原因。
实际上每个格子的存储宽度是内存颗粒(Chip)的位宽,在这里由8个Chip组成一个Rank,而CPU寻址宽度是64bit,所以64/8=8bit,即每个格子是1个字节。选择每个格子也不是简单的两组信号,是由一系列信号组成
DDR工作原理
了解了DDR的基本组成后,我们来看看DDR如何来完成一次的读写过程。如下图所示,DRAM 的相关操作在内部大概可以分为以下的四个阶段:
-
command transport and decode: 在这个阶段,Host 端会通过 Command Bus 和 Address Bus 将具体的 Command 以及相应参数传递给 DRAM。DRAM 接收并解析 Command,接着驱动内部模块进行相应的操作。其中会根据将addr bus上的数据解码成对应的row address和通过bank control解码后得到对应的bank,其次对应的column也会解码得到对应的地址
-
in bank data movement: 在这个阶段,第一阶段发送需要读取的 Column 的地址给 DRAM。然后 DRAM 再将 Active Command 所选中的 Row 中,DRAM 就将 Memory Array 中的数据从 DRAM Cells 中读出到 Sense Amplifiers,或者将数据从 Sense Amplifiers 写入到 DRAM Cells。
-
in device data movement: 这个阶段中,数据将通过 IO 电路缓存到 Read Latchs 或者通过 IO 电路和 Write Drivers 更新到 Sense Amplifiers。
-
system data transport: 在这个阶段,进行读数据操作时,SDRAM 会将数据输出到数据总线上,进行写数据操作时,则是 Host 端的 Controller 将数据输出到总线上。
在上述的四个阶段中,每个阶段都会有一定的耗时,例如数据从 DRAM Cells 搬运到 Read Latchs 的操作需要一定的时间,因此在一个具体的操作需要按照一定时序进行。同时,由于内部的一些部件可能会被多个操作使用,例如读数据和写数据都需要用到部分 IO 电路,因此多个不同的操作通常不能同时进行,也需要遵守一定的时序。此外,某些操作会消耗很大的电流,为了满足 SDRAM 设计上的功耗指标,可能会限制某一些操作的执行频率。
会消耗很大的电流,为了满足 SDRAM 设计上的功耗指标,可能会限制某一些操作的执行频率。