可以去网站搜索镁光DDR4 SDRAM关键词。
找出micron DDR4 SDRAM datasheet.pdf ,点击相关链接
上面网址资料应该更全,但是速度太慢。下面网址速度更快:https://pdf.ic37.com/
网上很多图非常不清楚,下面给一张DDR3和DDR4的高清图。
举例,DDR3-1866,意味着芯片与颗粒之间的传输速率是1866bps(单指一根DDR数据信号线,一般DDR3芯片引脚是32bit),
芯片PHY的DDR管脚信号线对应的时钟频率是1866/2=933MHz,因为上下边沿采样原理。
假设芯片接口,DDR数据位宽支持32bit,那么,
控制器如果是128bit数据位宽,那么时钟频率是=(1866*32)/ 128 = 466MHz。
channel (对应多个DDR控制器)> DIMM(内存插槽) > rank(一次访问位宽决定,也成物理bank) > chip(1个chip大多是4bit/8bit/16bit等,组成一个rank,配合完成一次访问的位宽要求。这就是颗粒) > bank(颗粒里的logic-bank,DDR3一般对应8个bank存储体) > row/column
参考文章:
土老冒谈硬件 深度解析DDR3内存新特性
预取bit的意思,我理解就是一个时钟周期时间内,从DDR存储cell能够做到取出多少bit数据。如果一次预取16bit,DDR传输速率就又翻倍了。
一般,协议里称为8n prefetch。这个n,我理解就是DQ位宽。所以一个DDR3 16bit SDRAM内存颗粒,其一次读写访问的数据量是8*16=128bit。
BL,是burst length。对应预取bit数目,DDR3对应的BL是8
BC,是burst chop,中文理解是burst剁开切开,是为了兼容DDR2的burst length为4的情况。DDR3兼容DDR2时,8个burst,只保留前面4个burst有意义,后面4个burst内容无异议被mask掉。
链接文章的时序讲解,图和文字很生动。时序参数和读写访问过程,结合在一起描述的。
https://linux.codingbelief.com/zh/memory/dram/dram_timing.html?q=#additive-latency
DDR2-800内存的标准时序:5-5-5-18,
DDR3-800内存的标准时序则达到了6-6-6-15
DDR3-1066为7-7-7-20
DDR3-1333更是达到了9-9-9-25
这4个数字的含义依次为:CAS Latency(简称CL值)内存CAS延迟时间,这也是内存最重要的参数之一,一般来说内存厂商都会将CL值印在产品标签上。
第二个数字是RAS-to-CAS Delay(tRCD),代表内存行地址传输到列地址的延迟时间。第三个则是Row-precharge
Delay(tRP),代表内存行地址选通脉冲预充电时间。第四个数字则是Row-active Delay(tRAS),代表内存行地址选通延迟。
除了这四个以外,在AMD K8处理器平台和部分非Intel设计的对应Intel芯片组上,如NVIDIA nForce 680i SLI芯片组上,还支持内存的CMD 1T/2T Timing调节,CMD调节对内存的性能影响也很大,其重要性可以和CL相比。
这些参数越低,代表延迟越小。但是系统出了DDR3芯片之外,还有颗粒、PCB板等,需要综合考虑,DDR3延迟不一定比DDR2慢。
一、影响性能的主要时序参数
所谓的影响性能是并不是指SDRAM的带宽,频率与位宽固定后,带宽也就不可更改了。但这是理想的情况,在内存的工作周期内,不可能总处于数据传输的状态,因为要有命令、寻址等必要的过程。但这些操作占用的时间越短,内存工作的效率越高,性能也就越好。
非数据传输时间的主要组成部分就是各种延迟与潜伏期。通过上文的讲述,大家应该很明显看出有三个参数对内存的性能影响至关重要,它们是tRCD、CL和tRP。每条正规的内存模组都会在标识上注明这三个参数值,可见它们对性能的敏感性。
以内存最主要的操作——读取为例。tRCD决定了行寻址(有效)至列寻址(读/写命令)之间的间隔,CL决定了列寻址到数据进行真正被读取所花费的时间,tRP则决定了相同L-Bank中不同工作行转换的速度。现在可以想象一下读取时可能遇到的几种情况(分析写入操作时不用考虑CL即可):
1、要寻址的行与L-Bank是空闲的。也就是说该L-Bank的所有行是关闭的,此时可直接发送行有效命令,数据读取前的总耗时为tRCD+CL,这种情况我们称之为页命中(PH,Page Hit)。
2、要寻址的行正好是前一个操作的工作行,也就是说要寻址的行已经处于选通有效状态,此时可直接发送列寻址命令,数据读取前的总耗时仅为CL,这就是所谓的背靠背(Back to Back)寻址,我们称之为页快速命中(PFH,Page Fast Hit)或页直接命中(PDH,Page Direct Hit)。
3、要寻址的行所在的L-Bank中已经有一个行处于活动状态(未关闭),这种现象就被称作寻址冲突,此时就必须要进行预充电来关闭工作行,再对新行发送行有效命令。结果,总耗时就是tRP+tRCD+CL,这种情况我们称之为页错失(PM,Page Miss)。
显然,PFH是最理想的寻址情况,PM则是最糟糕的寻址情况。上述三种情况发生的机率各自简称为PHR——PH Rate、PFHR——PFH Rate、PMR——PM Rate。因此,系统设计人员(包括内存与北桥芯片)都尽量想提高PHR与PFHR,同时减少PMR,以达到提高内存工作效率的目的。
每个bank的数据量 =行列单元存储bit数=2^15 * 2^7 * 128bit=512Mbit
【这个128bit是怎么搞的,最开始理解一个存储cell的容量,就是数据信号线位宽16bit。这里DDR3是指预取8bit技术,8*16bit=128bit,一个地址对应8个预取pre-fetch的16bit数据。可以这样理解,DQ数据线宽是16bit,每一根DQ数据信号线,支持预取8次。】
4. 所以,内存颗粒的容量= 8 * 512bit = 4Gbit=512MB,根据DDR数据信号线位宽,描述上图产品的规格,即256 * 16bit。
DDR控制器功能简介
图摘自《DDR3存储控制器的设计与实现_彭陈.caj》
一些理解点:
DDR的最小存储单元电路形式是电容,是通过充放电,实现0,1值存储。
如果长时间维持1值,会因为电路漏电特性,把电容里的电荷释放掉。
所以出现自动刷新概念,把DDR里的数据再次充电刷新一次,目的是保留DDR存储值。
根据协议定义,可知bank里的一行最大自动刷新间隔是7.8us;一个bank最大自动刷新间隔是64ms。由此,常见设计,一个bank的行数是8192。因为协议推导出的最大bank行数=64ms/7.8us=8205。
也就是说,DDR控制器需要每次7.8us时,做一次自动刷新的指令。
self-refresh和auto-refresh的区别,个人理解。
预充电和刷新,都是为了保持电荷存储,做出的电路重写动作。
意义是对DDR数据进行加密。
一个实践的方法是芯片TRNG产生伪随机数,然后跟真实数据XOR实现。
另外,关于ZQ校准,有两个命令:ZQCL (ZQ CALIBRATION LONG )和ZQ CALIBRATION SHORT (ZQCS)
Write Leveling的功能是调整DRAM颗粒端DQS信号和CLK信号边沿对齐。
只有使用了fly-by的情况下需使能write leveling。
所谓的fly-by 布线,指地址、命令和时钟(下图黄色单词看不清楚,是clk/addr/command的意思)的布线依次经过每一颗DDR memory芯片。而dq和dqs作了点到点的连接。VTT表示这些信号都接了ODT端接电阻。fly-by 结构相对于T布线,有助于降低同步切换噪声(Simultaneous Switching Noise)。
备注:下图是T型布线。
参考文章:
https://blog.csdn.net/tbzj_2000/article/details/88304245