RAM分类
RAM分成2大类:SRAM和DRAM
DDR概述
DDR的全称为Double Data Rate SDRAM(双倍速率的SDRAM),就是我们平时说的内存颗粒,也就是内存芯片。
DDR在原有的SDRAM的基础上改进而来,SDRAM在一个CLK周期传输一次数据,而DDR在一个CLK周期传输两次数据,分别在上升沿和下降沿各传输一次数据。
随着技术的发展,DDR经历了多轮技术迭代,发展出了DDR2、DDR3、DDR4、DDR5,从DDR到DDR5主要的区别是在于传输速率的不同,随着时钟周期的不断降低,传输速率也不断提高。
DDR的发展历程
第一代:SDR(单数据速率同步DRAM):SDR每个时钟周期只能传输一条指令,数据传输速度较慢。
第二代:DDR(双倍数据速率同步DRAM):DDR通过在时钟周期的上升沿和下降沿进行数据传输,速度是SDR的两倍。
第三代:DDR2:DDR2在DDR的基础上进行了改进,提高了时钟频率,增加了预取数据位数,提高了数据传输效率和稳定性。
第四代:DDR3:DDR3进一步提升了频率和预取位数,提升了数据传输速度和能效,增加了带宽。
第五代:DDR4:DDR4在DDR3的基础上,采用了更先进的制造工艺,提升了带宽和能效,降低了工作电压。
第六代:DDR5:DDR5是目前的最新一代,实现了更高的数据传输率、更多的带宽、更低的工作电压和更好的效率。保持了与DDR4相同的引脚配置。
LPDDR:主要用于移动设备,如智能手机和平板电脑,强调低功耗。
GDDR:主要用于高性能计算领域,如显卡,强调高速度和高带宽。
DIMM概述
DIMM(Dual Inline Memory Module)双列直插内存模块,也就是我们常见的内存条。
- 最初在80286时代,内存颗粒(Chip)是直接插在主板上的,叫做DIP(Dual In-line Package)。
- 到了80386时代,换成1片焊有内存颗粒的电路板,叫做SIMM(Single-Inline Memory Module)。由阵脚形态变化成电路板带来了很多好处:模块化,安装便利等等,由此DIY市场才有可能产生。当时SIMM的位宽是32bit,即一个周期读取4个字节。
- 到了奔腾时,位宽变为64bit,即8个字节,于是SIMM就顺势变为DIMM(Double-Inline Memory Module)。这种形态一直延续至今,也是内存条的基本形态。
DIMM说白了就是将若干个内存颗粒,单独焊接在一块独立的电路板上,方便模块化和安装。当然现在DIMM因其用途不同,又分为很多种,比如:
- RDIMM: 全称(Registered DIMM),寄存型模组,主要用在服务器上,为了增加内存的容量和稳定性分有ECC和无ECC两种,但市场上几乎都是ECC的。
- UDIMM:全称(Unbuffered DIMM),无缓冲型模组,这是我们平时所用到的标准台式电脑DIMM,分有ECC和无ECC两种,一般是无ECC的。
- SO-DIMM:全称(Small Outline DIMM),小外型DIMM,笔记本电脑中所使用的DIMM,分ECC和无ECC两种。
- Mini-DIMM:DDR2时代新出现的模组类型,它是Registered DIMM的缩小版本,用于刀片式服务器等对体积要求苛刻的高端领域。
可以看到这些DIMM规格尺寸,都会有所差异:
内存颗粒内部层级结构
Bank、Column、Row
我们把某型号128MB内存颗粒拆开来看,它是由8个Bank组成,我们也称为Logical Bank(逻辑Bank)。每个Bank就是一个存储矩阵,就像一个大方格子阵。一般来讲,每个Bank中格子数量是相同的。这个格子阵有很多列(Column)和很多行(Row),这样我们想存取某个格子,只需要告知是哪一行哪一列就行了,这也是为什么内存可以随机存取而硬盘等则是按块存取的原因。
图中,1638410248字样,表示一个Bank中由16384行,1024列组成,每个格子可保存8bit,也就是1字节数据。那么每行可以存储1024*8bit=1KB。每行的存储容量,称为Page Size。
内存颗粒内部逻辑层次,如下:
Bank Group
随着颗粒容量提升,bank数越来越多,到DDR4时出现Bank Group,我们可以理解为,将多个Bank编成一个组,这个组就是Bank Group。如下:
- Device Width:颗粒位宽,常见为4/8/16bit。
- Die Density:颗粒密度,也就是容量,随着DDR代数迭代,容量越来越大。
- Bank:DDR4以前是没有Bank Group的,所以该值就表示整个颗粒中Bank数量。但是在DDR4和DDR5中,就表示每个Bank Group中Bank的数量,整个颗粒Bank数量 = Bank Group * Bank。
- Bank Group:Bank分组数量,该特性只存在于DDR4和DDR5中。
内存颗粒容量计算
前面说了这颗内存芯片容量为128MB,那么这个大小是怎么计算出来的呢?
说到这里,就不得不提内存芯片的位宽 (Device Width),每个内存芯片都有自己的位宽,即每个传输周期能提供的数据量。说白了,这个芯片位宽就是,每个格子可以实际存储的数据大小。
理论上,完全可以做出一个位宽为64bit的芯片,但这对技术要求很高,在成本和实用性方面也都处于劣势,所以芯片的位宽一般都较小。一般常见的内存芯片位宽为4/8/16三者之一。
若128MB内存芯片,为DDR3,其位宽为8bit,那么DDR3颗粒容量 = 每个BANK的格子数 × BANK数 × 芯片位宽,即:128MB=128x1024x1024 Byte=(16x1024x1024)x8x1 Byte。每个格子存储1个字节,每个Bank可存储16MB,8个Bank共存储128MB。
从上面Bank图,也可以看到16384x1024x8字样,表示一个Bank中由16384行,1024列组成,每个格子可保存8bit,也就是1字节数据。那么一个Bank中格子数就是16384x1024,和上面公式中16x1024x1024相等。
若内存芯片,为DDR4或DDR5,那么DDR4/DDR5颗粒容量 = 每个BANK的格子数 × BANK数 × 芯片位宽 x BankGroup数
内存颗粒的封装方式
芯片package,就是芯片封装,内部可能有多个die。可以理解为将多个芯片电路封装为一个芯片,外部看起来就是一块芯片。
我们上文讲过一个内存颗粒的大小如何计算,理论上一个内存颗粒的大小可以通过上式算出。但是实际使用时,厂商为了扩容而改变封装方式:
一般来说,一个Package包含一个Die(这里指一个内存颗粒),即SDP,此时容量还是为一个内存颗粒的容量大小,也就是上文中所描述的内容。
而一个Package包含2个Die,即DDP(Dual-Die Package)的封装方式,此时容量就是2个内存颗粒的容量。
当然,DDP这种封装方式,也可以理解为将两个内存颗粒并联,扩展位宽,比如两个8位的内存颗粒,采用DDP的封装方式,那么整体上就可以看做是一个16位的内存颗粒。
所以,如果需要计算整个Package容量大小,在计算出单个颗粒大小后,还需要知道Die per Package,即每个Package中有多少个Die颗粒,即:
Package容量 = 单个颗粒(Die)容量 x Die per Package
RANK
RANK是什么
下文中提到的,内存颗粒皆指Package的概念了,也就是电路板上肉眼实实在在看到的芯片。
上面讲到内存颗粒,我们都知道内存条上可不止一个内存颗粒,一般都是由很多内存颗粒共同组成一根内存条。那么你知道这些颗粒是怎么组织起来的吗,还是说多一个颗粒,少一个颗粒都无所谓呢?接下来,继续介绍。
我们知道,CPU与内存之间的数据接口位宽是64bit,也就意味着CPU在一个时钟周期内会向内存发送或从内存读取64bit的数据。
可是,单个内存颗粒的位宽仅有4bit、8bit或16bit,个别也有32bit的。显然发送方和接收方的位宽必须一致,不能说我发了64位数据出来,你才收到前面的16位,后面的就丢掉了。因此,必须把多个颗粒并联起来,组成一个位宽为64bit的数据集合,才可以和CPU互连。
我们可以,把这样一个由多个颗粒组成的64bit位宽集合,称为一个RANK。而实际上,这里64bit位宽指的是内存通道(Memory Channel)的宽度,内存通道的概念后面会讲到。大家需要认识到的就是,多个颗粒组成当前内存通道的位宽,这个位宽集合,称之为一个RANK。
不同类型DDR,其通道位宽不一样,如:
- 在DDR3、DDR4上内存通道位宽为64bit。
- DDR5上,单根DIMM双通道,每个通道位宽为32bit。
为了和逻辑BANK相区分,也经常把RANK称为Physical BANK(物理BANK),简写为P-BANK。逻辑Bank,简写为L-BANK。一个RANK中颗粒数量 = 通道位宽 / 颗粒位宽
比如,128MB内存芯片,其位宽为8bit,那么需要8块芯片才能组成64bit位宽,将这些芯片焊接到一块DIMM上,插到主板上就可以使用了。这时,该DIMM的总容量就是128MB*8=1GB。
假设,该主板只有一个DIMM插槽,并且我们还想将DIMM扩容至2GB,并且还只能使用128MB,位宽为8bit的内存颗粒。那么应该如何实现呢?说的更直白一点,就是如何做到单个DIMM容量翻倍。下面,就开始介绍。
多RANK的意义
假设内存通道位宽为64bit,即一个RANK为64bit,每一个64bit位宽背后都是由若干个颗粒组成的。
比如,使用16颗8bit位宽内存芯片,分别组成2个RANK,如下图所示:
我们可以把原本两根物理DIMM的内存颗粒全部安装在一块内存印刷电路板上,使得一根内存条具备两倍的内存容量。 这就相当于,物理上虽然只有一根内存条,但是通过划分不同的RANK,在逻辑上可以看成是2根内存条。
同一个RANK内部的所有内存颗粒chips,连接到同一个CS(Chip Select,片选)信号线上,内存控制器能够对同一个RANK的所有chips同时进行读写操作,而在同一个RANK的chip也分享同样的控制信号。在RANK选择好后,RANK内部的所有内存颗粒一起被选中,共提供64bit的数据。
对于上面图中,也就是说,RANK0和RANK1共享同一组addr/command信号线,利用cs片选线选择欲读取或是写入的那一组内存颗粒,之后,就可以对这一组内存颗粒进行读写。
小结:
- 为了保证和CPU的沟通,一个DIMM中至少要有一个RANK。但是,为了保证有一定的内存容量,经常是采用一个DIMM两个RANK的结构。
- 一条DIMM(DDR3/DDR4)上RANK数的计算:所有内存芯片位宽之和为64就是1个RANK,如果是128就是2个RANK。
- 纠正一个误区:假如出现了所有内存芯片位宽之和等于128。则分成两个RANK,当读取一个RANK时,另一个RANK就不能读取(片选一次只能选中一个RANK),通常很多厂家就分别将这两部分放在DIMM的两面上。这就造成了许多人的错觉:单面的(16M,64M)只占用一个物理BANK,而双面的(32M,128M)则需占用两个物理BANK,实际根本不能这样认识。目前绝大多数的芯片组都只能支持一根内存包含两个物理BANK,物理BANK与面数是无关的,PCB电路可以设计成双面和单面,也可把全部芯片(16颗)放在一面上(至少从理论上是完全可能)。有些内存条单面就是一个物理BANK,但有些双面才是一个物理BANK,所以不能一概而论。
- 多RANK与单RANK相比,只是纯粹增加容量,并不会提高访问带宽。
DIMM容量计算
我们知道一根DIMM上可能有多个RANK,所以我们用通道位宽/内存芯片位宽,就可以得到一个RANK需要几颗芯片组成,然后使用芯片容量x芯片数,就可以得到一个RANK的容量大小,再结合RANK数量,可以计算出整根DIMM的容量。
DDR3或DDR4的DIMM计算公式,如下:
DIMM容量(DDR3/DDR4) = (芯片容量 x 64 / 内存芯片位宽) x RANK数
由于DDR3、DDR4,只能一根DIMM对应1个通道,所以上述公式,实际是默认计算的一个通道容量,而DDR5的DIMM对应2个通道。DDR5的DIMM计算公式,如下:
DIMM容量(DDR5) = (芯片容量 x 32 / 内存芯片位宽) x 每通道RANK数 x 2
具体计算过程,可以参考:DDR5内存条容量计算
CHANNEL
内存控制器(Memory Controller)是计算机系统内部控制内存并且负责内存与CPU之间数据交换的重要组成部分。
**CHANNEL即内存通道,实际上是一种内存的带宽加速技术。**一个DDR控制器中可能有一个内存通道,也可能有两个内存通道。最常见的是双通道,民用级电脑都支持,服务器还有3通道和4通道等。
DDR3/DDR4内存通道
内存通道实际是对应一组时钟、命令、地址、数据线,这组总线也就是所谓的内存通道。一般一个内存通道,可以连接若干个DIMM。
DDR3/DDR4的内存通道,如下图所示:
DDR3/DDR4内存通道关键点,一个通道上可以插多根DIMM,每个DIMM只会占用一个通道。
下面以双通道为例,解释一下多通道技术。
- 双通道,就是在北桥(又称之为MCH)芯片级里设计两个内存控制器,这两个内存控制器可相互独立工作,每个控制器控制一个内存通道。
- 在这两个内存通过CPU可分别寻址、读取数据,从而使内存的带宽增加一倍,数据存取速度也相应增加一倍(理论上)。流行的双通道内存构架是由两个64bitDDR内存控制器构筑而成的,其带宽可达128bit。因为双通道体系的两个内存控制器是独立的、具备互补性的智能内存控制器,因此二者能实现彼此间零等待时间,同时运作。两个内存控制器的这种互补“天性”可让有效等待时间缩减50%,从而使内存的带宽翻倍。双通道是一种主板芯片组(Athlon64集成于CPU中)所采用新技术,与内存本身无关,任何DDR内存都可工作在支持双通道技术的主板上,所以不存在所谓“内存支持双通道”的说法。
DDR5内存通道
DDR5不会为每个DIMM提供一个64位数据通道,而是为每个DIMM提供两个独立的32位数据通道(考虑ECC时为40位)。
也就是说一个DIMM会占用2个通道。
一个DDR5内存控制器,对应2个通道,每个通道32bit。这2个通道一起向一根DIMM累计提供64bit的数据访问。
与传统的DDR4双通道相比,一个DDR5内存控制器对应2个通道,2个DDR5内存控制器就对应4个通道。说的更直白就是,DDR4需要至少2根DIMM才能组成双通道;DDR5一根DIMM就可以组成双通道,2根DIMM就可以组成4通道。
一个内存通道可以插多少根内存条
关于这个问题,我之前也有个误区,想当然的认为每个通道,应该可以插无数根内存条,就看硬件厂商做了多少个插槽,而实际这是错误的。一个内存控制器无论是,有一个或两个内存通道,但是一般单个通道支持的RANK数量是有限的。
比如,一个通道最大支持8个RANK,那么可能有以下几种情况:
- 若单条DIMM有1个RANK,那么这样的DIMM,可以插8根;
- 若单条DIMM有2个RANK,那么这样的DIMM,可以插4根;
- 若单条DIMM有4个RANK,那么这样的DIMM,可以插2根;
所以理论上,一个通道到底可以插多少根内存条,与通道支持的最大RANK数,以及DIMM的RANK数有关。
内存控制器到内存颗粒层次总结
从内存控制器到内存颗粒内部逻辑,笼统上讲从大到小为:channel>DIMM>rank>chip>bank>row/column,如下图所示:
DDR3/DDR4层次
在计算机系统中,有多个内存通道,每个通道可以插若干个DIMM,而每个DIMM上有至少一个以上的RANK,每个RANK由若干个内存芯片组成,这些芯片可能是4/8/16bit的,他们组合的原则就是将位宽凑齐至通道位宽(64bit)。
DDR5层次
DDR5的DIMM对应2个通道,每2个通道上,可以插若干个DIMM。而每个通道上有至少一个以上的RANK,每个通道上RANK最多为2个。每个RANK由若干个内存芯片组成,这些芯片可能是4/8/16bit的,他们组合的原则就是将位宽凑齐至通道位宽(32bit)。
以上都是芯片以上层次的结构,在单个内存芯片内部,还有层次划分,可能芯片package中有多个Die,每个Die上,还可能分为多个BANK Group,每个Bank Group下,还有多个Bank,每个BANK是由按行列方式排列的若干个格子组成。
SPD数据
SPD是什么
SPD(serial presence detect),即串行存在检测,中文怪怪的。SPD是DIMM的相关描述信息。
在每根内存条上,都有一份SPD数据,这份数据保存在一个可擦写的eeprom芯片中。SPD数据记录了该内存的许多重要信息,诸如内存的芯片及模组厂商、工作频率、工作电压、速度、容量、电压与行、列地址带宽等参数。SPD数据一般都是在出厂前,由DIMM制造商根据内存芯片的实际性能写入到eeprom芯片中。
SPD信息最重要的作用是作为一个身份标识,让主板能够识别到它。比如,使用CPU-Z软件读取到的SPD信息,如下图所示。
SPD数据格式
不同类型的DDR,他们的SPD数据长度和格式可能会不一样,比如:
- DDR2、DDR3的DIMM,对应的SPD数据长度为256B;
- DDR4的DIMM,对应的SPD数据长度为512B;
- DDR5的DIMM,对应的SPD数据长度为1024B。
但是,在这些不同长度的SPD数据中,有一些字段偏移可能是不兼容的。对于一些很基础的信息,他们的格式是一致的,比如DDR4与DDR3中,第0-5字节,他们表示的含义是相同的,其他则可能就不同。
所以,具体的话,还是需要参考对应的手册。
SPD数据篡改
我们前面提到,SPD芯片是一块可擦写的存储器,意味着SPD信息是可以更改的。所以它就成为了一些山寨厂商造假的“乐土”。
山寨厂商采用低劣的内存颗粒和PCB,通过专门的读写设备和软件,复刻正规品牌内存条的SPD信息,达到“挂羊头卖狗肉”的目的。但由于品质不可靠,这类内存条在使用过程中极易出现运行不稳定或者导致电脑死机的情况。
三星、镁光、海力士内存颗粒命名规则
三星内存颗粒命名规则
镁光内存颗粒命名规则
海力士内存颗粒命名规则
三星DDR3芯片中不同引脚的作用
CK和CK#引脚
CK和CK#引脚在三星DDR中的作用是差分时钟输入。这两个引脚提供差分时钟信号,所有地址、控制输入信号均在CK的上升沿和CK#的下降沿的交叉位置进行采样
CKE引脚
CKE引脚(时钟使能引脚)的主要作用是控制内部时钟信号的使能状态。
当CKE引脚为高电平时,它激活内部时钟信号,同时使能设备的输入缓冲器和输出驱动器。相反,当CKE引脚为低电平时,它会停用这些内部时钟信号,以及相关的输入缓冲器和输出驱动器。这种设计使得DDR内存能够在不需要数据传输时节省功耗,通过控制时钟信号的使能状态来优化功耗和性能。
CS#引脚
CS#引脚是片选信号,其主要作用是屏蔽所有命令。
CS#引脚是低电平有效信号,当信号为高电平时,所有命令均被屏蔽。这意味着当CS#引脚被激活时,DDR内存模块不会响应任何命令,从而实现对内存的访问控制。在多rank系统中,CS#引脚也可以作为rank选择信号,用于选择不同的内存颗粒或rank。
此外,CS#引脚在系统中的具体应用场景包括:
- 屏蔽命令:当CS#引脚被激活时,所有的命令都会被屏蔽,内存模块不会响应任何操作。
- 多rank选择:在多rank系统中,CS#引脚可以作为rank选择信号,用于选择不同的内存颗粒或rank。
这些功能使得CS#引脚在内存控制中起到了关键的作用,确保了内存访问的精确控制和管理的灵活性。
ODT(On-Die Termination)引脚
ODT(On-Die Termination)引脚在三星DDR中的作用是改善存储器通道的信号完整性,通过在芯片内部进行端接,减少信号反射,从而确保信号的稳定传输。
ODT功能通过允许DRAM控制器独立地打开或关闭任何或所有DRAM设备的终端电阻来实现。这种设计可以改善存储器通道的信号完整性,减少信号反射,确保信号的稳定传输。在DDR信号传输过程中,由于末端阻抗变化,信号会发生反射,使用ODT可以有效消除这种反射,从而减小DDR SDRAM接收端的信号畸变。
此外,ODT引脚的使用还涉及到信号同步和电源管理。在DDR3中,DQS(双向数据控制引脚)用于内存和内存控制器之间的信号同步。DQS信号由数据信号发出端发出,接收端根据DQS的上、下沿来触发数据的接收。ODT功能在不同的工作状态下开关,以适应读写操作的需求,从而优化信号质量和传输效率
RAS、CAS和WE引脚
RAS、CAS和WE引脚的作用如下:
- RAS(Row Address Strobe)引脚:RAS引脚是行地址选通脉冲,用于将行地址送入行地址锁存器。在访问存储器时,首先由RAS引脚将行地址送入行地址锁存器,以便访问特定的行。
- CAS(Column Address Strobe)引脚:CAS引脚是列地址选通脉冲,用于将列地址送入列地址锁存器。在行地址被选中后,CAS引脚将列地址送入列地址锁存器,以便访问特定的列。
- WE(Write Enable)引脚:WE引脚是写入使能信号,用于控制数据的写入操作。当WE引脚为高电平时,允许数据写入存储器;当WE引脚为低电平时,禁止数据写入。
这些引脚共同工作,使得DRAM能够高效地访问和操作存储单元。
DM引脚(通常分为DMU和DML两个单端)
DM引脚主要用于数据屏蔽功能。在写操作期间,当DM信号被采样为高电平时,输入数据会被屏蔽。这意味着DM引脚可以用于控制哪些数据应该被写入内存中,哪些数据应该被忽略。在x8模式下,DM/TDQS/TDQS#通过模式寄存器MR1中的A11设置使能该功能
DM引脚包括DMU和DML引脚,DMU和DML引脚在DDR3中分别代表数据掩码的高位和低位信号:
- DMU:数据掩码的高位信号(Data Mask Upper)。在DDR3中,数据掩码信号(DM)用于关闭某些数据位,以减少功耗或解决信号干扰问题。DMU信号在数据掩码信号中表示高位,通常与16位数据位宽中的高位字节相关联1。
- DML:数据的低位信号(Data Mask Lower)。与DMU相对应,DML信号表示数据掩码的低位,与16位数据位宽中的低位字节相关联。在写操作中,当DML采样为高电平时,对应的低位数据将被屏蔽,不进行写入操作
这些信号的作用是在进行数据传输时,能够灵活地关闭某些数据位,从而优化功耗和信号完整性。例如,在16位的数据传输中,可以通过DMU和DML信号来关闭不需要传输的数据位,减少不必要的功耗和干扰。
BA0-BA2引脚
BA0-BA2:输入,bank地址输入信号。BA0~BA2定义了那个bank被使能
A0~A15引脚
A0~A15:输入,地址输入。在ACT命令中提供行地址,在读写命令中提供列地址,从而在指定rank的内存阵列中选择一个位置。另外,在MRS命令中,还作为操作码使用,即写入模式寄存器的值。
A10/AP引脚
A10/AP:输入,在DDR3中的作用是表示PRECHARGE命令期间对某个bank进行预充电。
在DDR3中,A10/AP引脚用于控制自动预充电(precharge)操作。通过A10采样决定是否执行自动刷新,高电平有效,当A10为低电平时,由BA[0:2](即BA0,BA1,BA2)决定哪个bank进行auto-precharge;而当A10为高电平时,则对所有bank进行auto-precharge
A12/BC#引脚
A12/BC#:输入,在DDR3中的作用是控制burst chop功能。
在DDR3内存中,A12/BC#引脚主要用于控制burst chop功能。当A12/BC#引脚为高电平时,表示启用burst chop功能,这允许在数据突发传输过程中动态地减少突发长度,从而提高内存带宽的利用率。相反,当A12/BC#引脚为低电平时,表示不启用burst chop功能,数据突发将按照预设的长度进行传输。
此外,A12/BC#引脚还与模式寄存器(MR)有关。在READ和WRITE命令期间,A12/BC#引脚的电平会被采样,以决定是否执行burst chop。具体来说,高电平表示启用BL8(即8个时钟周期的突发长度),而低电平则表示不启用burst chop,保持默认的突发长度
RESET#引脚
RESET#引脚在三星DDR中的作用是低电平异步复位信号。当RESET#引脚为低电平时,它会触发异步复位操作,使系统或设备回到初始状态。
复位信号的时序要求。在DDR3的设计中,复位信号的时序要求非常重要。具体来说:
- 在RESET#有效期间,CKE可以有一段时间不稳定。
- 在RESET#释放之前,CKE必须在10ns之前稳定为0。
- RESET#释放之后,需要等待500us之后,CKE才可以置为1。
- 在电源稳定后,RESET#需保持至少200us2。
这些时序要求确保了系统在复位过程中的稳定性和可靠性。
DQS和DQS#(通常分为DQSU+DQSU#和DQSL+DQSL#两对差分)
DQS(双向数据选通信号)和DQS#(双向数据选通信号的互补信号)在DDR内存中的作用是同步数据传输,确保数据的准确性和完整性。
DQS和DQS#的基本功能:
- 数据同步:DQS和DQS#用于同步数据传输。在读模式时,DQS由存储器发出,信号接收端根据DQS的上、下沿来触发数据的接收。在写模式时,DQS由CPU发出,内存根据DQS的信号来触发数据的发送。
- 信号同步:DQS和DQS#确保数据信号(DQ)与时钟信号(CK)同步。所有控制和地址输入信号在CK上升沿和CK#下降沿交叉处被采样,输入数据选通(DQS)参考CK和CK#的交叉。
DQS和DQS#在读写操作中的具体应用:
- 读操作:在读模式下,DQS由存储器发出,信号接收端根据DQS的上、下沿来触发数据的接收。这样确保了数据在正确的时刻被读取,避免了数据错位。
- 写操作:在写模式下,DQS由CPU发出,内存根据DQS的信号来触发数据的发送。这样确保了数据在正确的时刻被写入存储器。
DQS和DQS#的电气特性:
- 电压和电流:DQS和DQS#的电气特性包括电压和电流的要求,确保信号的稳定传输。具体的电气参数可能因不同的DDR版本而有所不同,例如DDR3和DDR4在信号的预处理和同步机制上有所不同。
- 阻抗匹配:为了减少信号反射,通常会在DQS和DQS#上使用匹配电阻,确保信号的稳定传输。
通过这些机制,DQS和DQS#确保了DDR内存中数据的准确和高效传输,提高了系统的整体性能。
TDQS和TDQS#引脚
TDQS和TDQS#引脚在DDR3中的作用主要是为了解决不同DIMM混合使用时产生的信号完整性问题。
TDQS和TDQS#是DDR3中新增的引脚,它们与DM引脚复用。TDQS的主要功能是提供终端电阻,以解决在x4和x8混合使用的系统中DQS信号负载不同导致的信号完整性问题。当TDQS使能时,DM信号被禁止,TDQS和TDQS#提供终端电阻,确保信号的稳定传输。
此外,TDQS和TDQS#的使用场景和配置方式也有所不同。在x8的内存条中,每8bits需要一对DQS,而在x4的内存条中每4bits需要一对DQS。在x4与x8混合使用的系统中,由于DQS信号的负载不同,会产生信号完整性问题。TDQS功能通过提供额外的终端电阻来简化设计,确保信号的稳定传输。
总的来说,TDQS和TDQS#引脚在DDR3中起到了关键作用,通过提供终端电阻来确保不同DIMM混合使用时信号的完整性和稳定性。
注意数据选通端接信号只适用于x8的DRAM。通过MR1寄存器模式选择寄存器A11=1使能,信号使能后,DQS和DQS#将进行与TDQS和TDQS#一样的电阻进行端接。当未使能情况下,DM/TDQS将提供数据掩码功能。在x4和x16模式下TDQS功能不能使用,通过A11=0使该功能失效。
DQ引脚
DQ引脚是DDR内存中的数据引脚,用于传输数据。在DDR3和DDR4中,DQ引脚的具体作用如下:
- 数据传输:DQ引脚负责数据的双向传输。在DDR3和DDR4中,数据是双边沿传输,即在时钟的上升和下降沿都可以采样数据。DQ引脚在读写操作中起到关键作用,确保数据的准确传输。
- 信号同步:DQ引脚与DQS(双向数据控制引脚)配合使用,确保数据的同步和稳定。DQS信号用于同步DQ引脚上的数据传输,确保在正确的时钟沿进行数据的发送和接收。
- 信号完整性:DQ引脚的设计和布局对信号完整性有重要影响。在PCB设计中,DQ引脚需要等长设计,以减少信号延迟和干扰,确保数据的稳定传输
ZQ引脚
ZQ引脚在三星DDR中的作用是进行ZQ校准。ZQ校准是通过ZQ引脚上的240欧姆低公差参考电阻来实现的,该引脚通过一个命令集,利用片上校准引擎(ODCE)自动校验数据输出驱动的导通电阻与ODT的终结电阻值。具体来说,系统发出指令后,ZQ引脚会在不同的操作状态下使用不同的时钟周期进行校准:在加电与初始化后用512个时钟周期,在退出自刷新操作后用256个时钟周期,在其他情况下用64个时钟周期
电源引脚
DDR3电源引脚:
VDDQ:电源引脚,DQ供电电源1.5V+/-0.075。
VDD:电源引脚,芯片供电电源。
VREFDQ:电源引脚,DQ参考电压。
VREFCA:电源引脚,地址参考电压。
DDR4相较DDR3新增的引脚及其功能
DDR4相比DDR3,在电源管理、数据完整性、并行访问和系统可靠性上都有显著改进。这些改动使DDR4在速度、功耗和稳定性上比DDR3更具优势,特别是在高性能计算和服务器应用中。
VDDQ
- 功能:这是DDR4数据输出缓冲器的电源引脚,较高的VDDQ可以提升信号完整性和数据传输速度。
- 用途:VDDQ与VDD(核心电压)分开,使内存系统能够更好地管理和优化I/O电压。
- 配置:通常由内存控制器提供,VDDQ电压需要与内存模块的工作I/O电压相匹配。
VPP(在VDD之前上电)
- 功能:VPP是DDR4引入的新电源引脚,用于内部DRAM操作中的字线电压提升,比如刷新和行访问。
- 用途:DDR4中的VPP电压为2.5V,提升性能的同时降低功耗,特别是在行激活操作中。VPP必须与VDD同时或在VDD之前最多10分钟开始上升,并且VPP必须始终等于或高于VDD。
- 配置:VPP电源需根据内存的电源规格进行配置,确保为行访问操作提供足够的电压支持。
Bank Group
- 功能:DDR4新增了“Bank组”概念,每组包含多个Bank。通过“Bank组”机制,DDR4可以实现更高效的数据访问,减少访问延迟并提升带宽。
- 用途:DDR4通过增加Bank组来提高数据吞吐量,支持同时处理多个数据流。
- 配置:需要在内存控制器中支持此配置,确保最大限度利用多Bank并行访问特性。
DBI_n(Data Bus Inversion 引脚)
- 功能:数据总线反转(DBI)是一项用于降低功耗的新技术,当传输数据中“1”的数量超过一半时,会反转数据以减少功耗。
- 用途:减少高速数据传输中的噪声和功耗,提升信号完整性。
- 配置:DBI由内存控制器和DRAM协同工作,当启用时,控制器会自动进行数据反转。
ACT_n:
- 功能:这是行激活命令引脚,主要用于激活DRAM中的特定行以进行读写操作。当ACT_n与CS_n(片选信号)同时为低电平时,表示一个激活命令(Activate Command)正在被输入。在激活命令期间,RAS_n(行地址选通)、CAS_n(列地址选通)和WE_n(写使能)信号引脚会被用作行地址输入引脚,而不是作为控制信号。
- 用途:通过该引脚减少了DDR4中的行命令引脚数量,简化信号设计。
- 配置:由内存控制器根据访问模式自动控制,无需特殊配置。
- ACT引脚(ACT_n)主要作用是激活内存芯片,使其进入激活状态,从而接受读写命令。
PAR(奇偶校验引脚)
- 功能:引入用于命令和地址总线的奇偶校验功能,帮助检测数据传输中的错误。
- 用途:增强DDR4内存的可靠性,特别是对服务器和数据中心应用有帮助。
- 配置:一般与ECC内存搭配使用,需内存控制器支持奇偶校验功能。
Alert_n
- 功能:这是一个用于报告错误状态的引脚,当检测到错误或温度超过限制时,Alert_n会发出信号通知系统。
- 用途:在高负载应用或服务器中,帮助实时监控内存状态并保护系统安全。
- 配置:通常内存控制器会自动处理Alert信号,需确保该引脚正确连接。
TEN(温度传感器引脚)
- 功能:用于监控DRAM的温度,以防止过热。
- 用途:TEN引脚在高温环境中能够触发冷却机制,防止内存因过热而损坏。
- 配置:需要控制器支持温度检测和管理功能,系统可以设置不同的温度阈值。
DDR4相比DDR3去除的引脚
VREFDQ
- 变化:DDR4取消了VREFDQ引脚,取而代之的是内部的参考电压生成机制,简化了系统设计。
- 用途:减少了系统外部电压源的依赖,提高了电源管理效率。
Bank Address(3个地址中的1个被删除)
- 变化:DDR4将部分Bank地址移入Bank组,减少了需要的地址引脚数量。对于x4/x8,内部配置为16个Bank,4个Bank Group,每个Bank Group有4个Bank。对于x16,内部配置为8个Bank,2个Bank Group,每个Bank Group有4个Bank。
- 用途:通过引入Bank组,优化了内存的访问速度和并行度。
例如:
BG0 - BG1:BG0 - BG1定义激活、读、写或预充命令应用到哪个Bank Group。BG0还确定在MRS(Mode Register Set)周期中要访问哪种模式寄存器。X4/8有BG0和BG1, X16只有BG0
- X4:表示每个内存颗粒有4位的数据传输宽度。这种位宽通常用于服务器内存,因为服务器需要处理大量的数据,而X4位宽可以提供更高的数据传输速率。
- X8:表示每个内存颗粒有8位的数据传输宽度。这是最常见的位宽,广泛应用于PC和笔记本内存中,因为其平衡了数据传输速率和成本。
- X16:表示每个内存颗粒有16位的数据传输宽度。这种位宽较少见,通常用于一些特殊的应用场景,如高性能计算或图形处理。
BA0 - BA1:BA0 - BA1定义了激活、读、写或预充电命令被应用到哪个Bank。Bank Address还决定了在MRS(Mode Register Set)周期中要访问哪个模式寄存器。
VDD、VSS、VSSQ
- 变化:相比DDR3,DDR4减少了这些电源和接地引脚的数量,提升了引脚的效率。
- 用途:减少引脚的数量也降低了封装成本,同时不影响性能。
DDR标准
JEDEC(固态技术协会)
JEDEC(Joint Electronic Devices Engineering Council,即美国电子设备与工程联合委员会)即固态技术协会,是微电子产业的领导标准机构,负责制定内存产品的工业标准。在过去50余年的时间里,JEDEC所制定的标准为全行业所接受和采纳。作为一个全球性组织,JEDEC的会员构成是跨国性的。JEDEC不隶属于任何一个国家或政府实体。
DDR3标准
DDR3标准是JEDEC在2005年11月制定的,旨在提高内存的性能和降低功耗,DDR3标准的主要特点有:
- 更高的频率和带宽:DDR3的传输速度达到了800 MHz到2133 MHz,相对于DDR2的最高传输速度400 MHz到800 MHz有了显著的提升。
- 降低功耗:DDR3采用了1.5V的电源电压,并引入了内存讯号终端电阻技术(ODT),进一步降低了功耗。
- 采用堆叠式封装技术:DDR3内存将采用堆叠式封装技术,容量从512MB至8GB不等。
- 应用广泛:DDR3广泛应用于桌面电脑、服务器、笔记本电脑和其他计算设备中,特别是在移动平台和要求高性能的应用中起决定性作用
DDR4标准
尽管JEDEC协会原计划在2011年下半年完成DDR4标准规范的制定工作,但DDR4内存标准的正式公布是在2012年9月底。DDR4标准是当前主流的计算机内存技术,相较于其前身DDR3,在性能、功耗、容量等多个方面都有了显著提升。
基础性能参数
- 传输速率:DDR4内存的传输速率从2133MHz起步,支持更高的频率,如2400MHz、2666MHz、3200MHz等,甚至更高。这些频率意味着每秒钟可以传输的数据量更大,从而提高了系统的整体性能1。
- 带宽:DDR4的每个通道包含64位(即8字节)的数据宽度,这使得在高频率下能够实现极高的带宽。例如,3200MHz的DDR4内存,其带宽可达到25.6GB/s(3200MHz * 64bit / 8)1。
功耗与电压
- DDR4在功耗方面进行了优化,采用了更低的操作电压(通常为1.2V),相较于DDR3的1.5V,有效降低了能耗。此外,DDR4还引入了多种节能技术,如动态电压调整(DVFS)、电源管理单元(PMU)等,进一步提高了能效。
容量与架构
- 内存容量:DDR4内存的容量范围广泛,从基本的4Gb(即512MB)起步,逐步扩展到8Gb、16Gb、32Gb等,甚至可以达到更高的容量。这些大容量内存能够满足从个人计算机到服务器、数据中心等不同应用场景的需求。
- 架构与封装:DDR4内存的架构通常基于多存储体(Bank)设计,每个存储体内部包含多个行和列,用于存储数据。DDR4还引入了Bank Group的概念,使得存储体的管理更加灵活。在封装方面,DDR4支持多种封装形式,如FBGA(细间距球栅阵列)封装,以适应不同的主板和插槽设计。
技术特性
- 伪漏极开路(POD)接口:DDR4采用了伪漏极开路(POD)接口技术,可以在不增加额外功耗的情况下提高信号的完整性,进一步降低整体功耗。
- 写入循环冗余校验(CRC):DDR4引入了写入循环冗余校验(Write CRC)功能,这有助于识别多位故障,提高数据传输的可靠性。同时,针对命令(CMD)/地址(ADD)通路的奇偶校验检查也增强了系统的稳定性。
- 堆叠封装技术:为了提高内存的集成度和容量,DDR4采用了堆叠封装技术,如TSV(Through Silicon Via)硅穿孔技术。