对于开发人员来说,需要根据实际场景和使用的需要,使用不同厂家,不同型号的DDR,虽然原理上大同小异,但是还是有一些细节上的需要注意的地方,接触一个新的DDR芯片,首先就是需要找到对应的datasheet,而能都读懂datasheet,也是一个硬件工程师的必备技能。
一、基础信息
学习阅读datasheet,最直接的方式当然是找到一个datasheet的示例,这里我采用的是MT40A1G16WBU-083E的DDR,这个名字看着就很长,但是其实每一段都有其对应的含义,阅读完本文,我们就可以做到仅仅根据名字就了解这个DDR的大致信息了。
以上就是这块DDR的datasheet的第一页内容。首先我们从左上角的商标就可以获知这是一块来自 Micron 的DDR。
1.1 厂家
这里我们介绍几家知名的DDR厂家:
- Micron Technology, Inc:全球领先的半导体制造公司,专注于存储和半导体技术,特别是动态随机存取存储器(DRAM)、闪存(NAND Flash)和固态硬盘(SSD)等产品。Micron的存储解决方案广泛应用于消费电子、计算机、数据中心、网络、移动设备、汽车、工业和其他专业应用领域。
- Samsung Electronics(三星电子):全球最大的内存芯片制造商之一,生产各种类型的存储器,包括DDR3、DDR4和DDR5。三星的内存技术领先,并且在手机、服务器、PC等市场中占据重要地位。
- SK Hynix:韩国的另一大内存制造商,全球第二大存储芯片制造商。SK Hynix在DRAM市场占有较大份额,提供高性能的存储解决方案。
- Kingston Technology(金士顿):金士顿是全球知名的内存模块制造商,虽然它不生产芯片,但它将各种内存芯片集成到自己的模块中,提供广泛的内存解决方案,特别是在消费市场和服务器市场中很受欢迎。
1.2 TwinDie™ 1.2V DDR4 SDRAM MT40A1G16 – 64 Meg x 16 x 16 Banks x 1 Ranks
Micron的TwinDie™技术能够将两个独立的存储芯片封装在一个模块中,提高了内存的密度和容量,通常用于高性能应用场景,如服务器和高端计算系统。
1.2V是DDR4的对应电压,我们使用的这块DDR就是属于DDR4类型。
版本 | 发行年份 | 电压 (V) | 数据速率 (MHz) | 带宽 (MB/s) | 引脚数量 (DIMM) | 特点 |
DDR1 | 2000 | 2.5 | 200 - 400 | 1600 - 3200 | 184 | DDR1是第一代双倍数据速率内存。它通过双边缘的数据传输,提供了比传统SDRAM快一倍的传输速率。 |
DDR2 | 2003 | 1.8 | 400 - 800 | 3200 - 6400 | 240 | DDR2进一步提高了数据速率,优化了信号传输,支持更高的时钟频率,并通过降低电压实现了更好的功耗控制。 |
DDR3 | 2007 | 1.5 | 800 - 1600 | 6400 - 12800 | 240 | DDR3提供了更高的频率和带宽,并支持更大的内存模块容量。与DDR2相比,DDR3在性能和能效上都有显著提升。 |
DDR4 | 2014 | 1.2 | 1600 - 3200 | 12800 - 25600 | 288 | DDR4在能效、数据速率和容量方面有显著提高,能够支持更大的内存模块。它的时钟频率更高,延迟优化,满足了当代计算机和服务器对高带宽的需求。 |
DDR5 | 2020 | 1.1 | 3200 - 6400 | 25600 - 51200 | 288 | DDR5在数据速率、带宽和效率上都有极大的提升,尤其适合高性能计算、AI、大数据等对内存有极高需求的应用。DDR5还引入了更智能的电源管理和更高的能效优化。 |
MT40A1G16 – 64 Meg x 16 x 16 Banks x 1 Rank 各个部分的解释:
64 Meg:每个bank的存储密度为64 Mbit(兆bit)。
x16:数据位宽为16位(bit)。每次数据传输时,16位数据会并行传输。
16 Banks:芯片包含16个独立的bank。DDR4 SDRAM中,更多的bank可以提高内存的并发访问性能。
1 Rank:内存中只有1个rank。rank指的是内存模块中的独立访问的颗粒组。1个rank意味着内存条上所有颗粒是同时工作的。
总容量计算:64 Meg×16(bit宽度)×16(banks)=16384 Mbits = 2048 MB=2 GB。MT40A1G16 这颗DDR4 SDRAM芯片的总容量为 2GB。
1.3 Description
描述部分会给出一些关于本芯片的基本介绍:“16Gb (TwinDie™) DDR4 SDRAM 使用了美光的 8Gb DDR4 SDRAM die;通过将两个x8组合成一个x16。它的信号类似于单die的x16设计,额外增加了一个ZQ连接以实现更快的ZQ校准,并且需要一个BG1控制信号用于x8的寻址。有关未在本文档中包含的规格,请参考美光的 8Gb DDR4 SDRAM 数据手册(x8选项)。基础部件编号 MT40A1G8 的规格与TwinDie制造部件编号 MT40A1G16 相对应。”
1.4 Features
特征部分会给出一下基本的参数信息,一般来说,对于开发人员,这部分不需要特别关注。
1.5 Options & Marking
这部分就给出了DDR名字的组成含义,这部分可以结合DDR Part Numbers部分一起看,但是我们使用的这块DDR手册中没有这部分,我们从其他的datasheet里找一张图来暂时用一下:
现在我们有了2个DDR的名字:MT40A1G16WBU-083E(我们现在的DDR4),MT41J256M8DA-125:K(我们刚刚为了看DDR Part Numbers引入的一块DDR3)。
Name | Type |
Configuration
|
Package
|
Speed Grade
|
Temperature
|
Revision
|
MT40A1G16WBU-083E | MT40A | 1G16 | WBU | -083E | None |
A
:B, D
:H
|
MT41J256M8DA-125:K | MT41J | 256M8 | DA | -125 | None | :K |
1.5.1 Type
区分不同的系列,有时候相同系列的不同产品会共用一本datasheet。
1.5.2 Configuration
配置内容,我们可以从中获知这块DDR的组成结构。不过有一个需要注意的点,以MT40A1G16WBU-083E为例,我们之前计算的DDR容量是64 Meg×16(bit宽度)×16(banks)=16384 Mbits = 2048 MB=2 GB,到这里为什么要用1G表示呢?
这是因为1G16表示的是16根数据线16bit,对应的容量就是1G * 16 = 16Gbit = 2G Byte,与我们之前计算的是一致的。这里的1G可以有一个抽象化的理解,如果我们把整个DDR展平,那么1G就是深度,16就是数据位宽。
1.5.3 Package
封装形式,了解就行
1.5.4 Speed Grade
我们首先解释一下两个参数的含义:
- CL(CAS Latency):表示内存从接收到命令到数据实际可用之间的时钟周期数。CL值越低,延迟越低,性能越好,但较高的时钟频率通常会使用较高的CL值以维持稳定性。
- Cycle Time(也可以表示成tCK):指的是内存时钟每个周期所需的时间。单位为纳秒(ns),周期越短,内存的时钟频率越高,数据传输速度也越快。
接下来,我们就可以查询Datasheet获取DDR的时钟频率了。
- -083E表示:0.833ns @ CL = 16 (DDR4-2400),时钟周期为1/0.833ns = 1200MHZ
- -125表示:tCK = 1.25ns, CL = 11,时钟周期为1/1.25ns = 800MHZ
这是DDR内存的时钟频率(实际数据传输率是该频率的两倍,因为DDR(Double Data Rate)在时钟的上升沿和下降沿都传输数据)。
1.5.5 Temperature & Revision
这个我们就不关心啦
二、时序及地址信息
针对不同的速度等级,DDR Datasheet会给出不同的时序参数信息表格:
2.1 时序关键参数解释
- Data Rate (MT/s):数据传输速率,以每秒百万次传输(MT/s)为单位,表示DDR内存每秒可以传输的数据量。DDR4内存的典型数据速率如2400 MT/s、2666 MT/s、2933 MT/s等。我们之前提到的实际数据传输率是DDR时钟频率的两倍,因为DDR(Double Data Rate)在时钟的上升沿和下降沿都传输数据,就是指的这个速率。
- Target tRCD-tRP-CL: 其实就是把后面的3个参数连起来的一种表示方式,单位应该是时钟周期
- tRCD(Row to Column Delay):行到列延迟,表示激活一个内存行后,到访问该行中某一列所需的最小时钟周期数。单位为纳秒(ns)。
- tRP(Row Precharge Time):行预充电时间,表示关闭当前正在访问的行,并准备访问另一行所需的时间。单位为纳秒(ns)。
- CL(CAS Latency):CAS延迟,表示从发送读命令到数据实际可用之间的时钟周期数。单位为纳秒(ns)。
tRCD、tRP、CL 的值是根据时钟周期时间(tCK)计算的。有了Target tRCD-tRP-CL后,我们就可以计算出后面的每个参数。
例如-083E的Target tRCD-tRP-CL为16-16-16,tCK = 0.833ns,tRCD = 16 * tCK = 13.328ns,其他两个参数也是一样计算。
2.2 地址信息
参数 | 值 | 中文解释 |
Configuration | 64 Meg x 16 x 16 banks x 1 rank | 每个bank有64 Mbit的存储,数据宽度为16位,共16个bank,1个rank |
Bank group address | BG[1:0] | 2位bank组地址,表示有4个bank组 |
Bank count per group | 4 | 每个bank组包含4个bank |
Bank address in group | BA[1:0] | 2位bank地址,用于选择每个bank组中的具体bank |
Row addressing | A[15:0] | 16位行地址,共64K行(65536个行) |
Column addressing | A[9:0] | 10位列地址,共1K列(1024个列) |
Page size | 1KB | 每个页面大小为1KB,行与列的组合决定页面大小 |
Data width | x16 | 数据宽度为16位,意味着每次传输16位(2字节)数据 |
Rank count | 1 | 该内存芯片包含1个rank |