内存的原理和时序(SDRAM、DDR、DDR-Ⅱ、RambusDRAM)目录序言第一章SDRAM的原理和时序1.1SDRAM内存模组的物理Bank与芯片位宽1.1.1物理Bank1.1.2芯片位宽1.2SDRAM的逻辑Bank与芯片容量表示方法1.2.1逻辑Bank与芯片位宽1.2.2内存芯片的容量1.2.3与芯片位宽相关的DIMM设计1.3SDRAM的引脚与封装1.4SDRAM芯片初始化、行有效、列读写时序1.4.1芯片初始化1.4.2行有效1.4.3列读写1.5SDRAM的读/写时序与突发长度1.5.1数据输出(读)1.5.2数据输入(写)1.5.3突发长度1.6预充电1.7刷新1.8数据掩码1.9SDRAM的结构、时序与性能的关系1.9.1影响性能的主要时序参数1.9.2增加PHR的方法1.9.3增加PFHR的方法1.9.4内存结构对PHR的影响1.9.5读/写延迟不同对性能所造成的影响1.9.6BL对性能的影响1.10仓库物语第二章DDRSDRAM的原理和时序2.1DDR的基本原理2.2DDRSDRAM与SDRAM的不同2.3差分时钟2.4数据选取脉冲(DQS)2.5写入延迟2.6突发长度与写入掩码2.7延迟锁定回路(DLL)第三章DDR-Ⅱ的原理和新技术3.1DDR-Ⅱ内存结构3.2DDR-Ⅱ的新操作与新时序设计3.2.1片外驱动调校(OCD,Off-ChipDriver)3.2.2片内终结(ODT,On-DieTermination)3.2.3前置CAS、附加潜伏期与写入潜伏期3.3DDR-Ⅱ未来发展3.3.1DDR-Ⅱ的发展计划3.3.2DDR-Ⅱ时代的封装技术第四章RambusDRAM的原理4.1RDRAM简介4.2RDRAM的结构简介4.2.1RDRAM的L-Bank结构4.2.2RDRAM的主要特点4.3RDRAM的具体操作与相关技术4.3.1初始化与命令包4.3.2操作时序计算4.3.3写入延迟与掩码操作4.3.4多通道技术与多通道模组4.3.5黄石技术4.4延迟与总线利用率的比较4.5未来竞争展望第五章内存模组介绍5.1Unb与Reg-DIMM的区别5.2DIMM引脚的基本设计5.3QBM型DIMM5.4模组的堆叠装配序言作为电脑中必不可少的三大件之一(其余的两个是主板与CPU),内存是决定系统性能的关键设备之一,它就像一个临时的仓库,负责数据的中转、暂存……不过,虽然内存对系统性能的至关重要,但长期以来,DIYer并不重视内存,只是将它看作是一种买主板和CPU时顺带买的“附件”,那时最多也就注意一下内存的速度。这种现象截止于1998年440BX主板上市后,PC66/100的内存标准开始进入普通DIYer的视野,因为这与选购有着直接的联系。一时间,有关内存时序参数的介绍文章大量出现(其中最为著名的恐怕就是CL参数)。自那以后,DIYer才发现,原来内存也有这么多的学问。接下来,始于2000年底/2001年初的VIA芯片组4路交错(4-WayInterleave)内存控制和部分芯片组有关内存容量限制的研究,则是深入了解内存的一个新开端。从那时起,很多关于内存方面的深入性文章接踵而至,如果说那时因此而掀起了一股内存热并不夸张。大量的内存文章让更多的用户了解了内存,以及更深一层的知识,这对于DIY当然是一件好事情。然而,令人遗憾的是这些所谓的内存高深技术文章有不少都是错的(包括后来的DDR与RDRAM内存的介绍),有的甚至是很低级的错误。在这近两年的时间里,国内媒体上优秀的内存技术文章可谓是寥若晨星,有些媒体还编译国外DIY网站的大篇内存文章,但可惜的是,外国网站也不见得都是对的(这一点,似乎国内很多作者与媒体似乎都忽视了)。就这样,虽然打开了一个新的知识领域,可“普及”的效果并不那么好,很多媒体的铁杆读者高兴地被带入内存深层世界,但也因此被引向了新的误区。不过,从这期间(2001年初至今)各媒体读者对这类文章的反映来看,喜欢内存技术的玩家大有人在且越来越多,这是各媒体“培养”的成果。这些用户已经不满足如何正确的使用内存,他们更渴望深入的了解这方面原来非常贫乏的知识,这些知识可能暂时不会对他们在使用内存过程中有什么帮助,但会大大满足他们的求知欲。我们这次的专题不再以内存使用为中心,更多的是纯技术性介绍,并对目前现存的主要内存技术误区进行重点纠正。在最后要强调的是,本专题以技术为主,由于篇幅的原因,不可能从太浅的方面入手,所以仍需要有一定的技术基础作保证,而对内存感兴趣的读者则绝不容错过,这也许是您最好的纠正错误认识的机会!第一章SDRAM的原理和时序1.1SDRAM内存模组的物理Bank与芯片位宽正确并深刻理解内存的基础概念,是阅读本专题的第一条件。因为即使是RDRAM,在很多方面也是与SDRAM相似的,而至于DDR与DDR-Ⅱ、QBM等形式的内存更是与SDRAM有着紧密的联系。我们平时看到的SDRAM都是以模组形式出现,为什么要做成这种形式呢?这首先要接触到两个概念:物理Bank与芯片位宽。●1.1.1物理Bank传统内存系统为了保证CPU的正常工作,必须一次传输完CPU在一个传输周期内所需要的数据。而CPU在一个传输周期能接受的数据容量就是CPU数据总线的位宽,单位是bit(位)。当时控制内存与CPU之间数据交换的北桥芯片也因此将内存总线的数据位宽等同于CPU数据总线的位宽,而这个位宽就称之为物理Bank(PhysicalBank,下文简称P-Bank)的位宽。所以,那时的内存必须要组织成P-Bank来与CPU打交道。资格稍老的玩家应该还记得Pentium刚上市时,需要两条72pin的SIMM才能启动,因为一条72pin的SIMM只能提供32bit的位宽,不能满足Pentium的64bit数据总线的需要。直到168pin-SDRAMDIMM上市后,才可以使用一条内存开机。下面将通过芯片位宽的讲述来进一步解释P-Bank的概念。不过要强调一点,P-Bank是SDRAM及以前传统内存家族的特有概念,在RDRAM中将以通道(Channel)取代,而对于像IntelE7500那样的并发式多通道DDR系统,传统的P-Bank概念也不适用。●1.1.2芯片位宽上文已经讲到SDRAM内存系统必须要组成一个P-Bank的位宽,才能使CPU正常工作,那么这个P-Bank位宽怎么得到呢?这就涉及到了内存芯片的结构。每个内存芯片也有自己的位宽,即每个传输周期能提供的数据量。理论上,完全可以做出一个位宽为64bit的芯片来满足P-Bank的需要,但这对技术的要求很高,在成本和实用性方面也都处于劣势。所以芯片的位宽一般都较小。台式机市场所用的SDRAM芯片位宽昀高也就是16bit,常见的则是8bit。这样,为了组成P-Bank所需的位宽,就需要多颗芯片并联工作。对于16bit芯片,需要4颗(4×16bit=64bit)。对于8bit芯片,则就需要8颗了。以上就是芯片位宽、芯片数量与P-Bank的关系。P-Bank其实就是一组内存芯片的集合,这个集合的容量不限,但这个集合的总位宽必须与CPU数据位宽相符。随着计算机应用的发展,一个系统只有一个P-Bank已经不能满足容量的需要。所以,芯片组开始可以支持多个P-Bank,一次选择一个P-Bank工作,这就有了芯片组支持多少(物理)Bank的说法。而在Intel的定义中,则称P-Bank为行(Row),比如845G芯片组支持4个行,也就是说它支持4个P-Bank。另外,在一些文档中,也把P-Bank称为Rank(列)。回到开头的话题,DIMM是SDRAM集合形式的昀终体现,每个DIMM至少包含一个P-Bank的芯片集合。在目前的DIMM标准中,每个模组昀多可以包含两个P-Bank的内存芯片集合,虽然理论上完全可以在一个DIMM上支持多个P-Bank,比如SDRAMDIMM就有4个芯片选择信号(ChipSelect,简称片选或CS),理论上可以控制4个P-Bank的芯片集合。只是由于某种原因而没有这么去做。比如设计难度、制造成本、芯片组的配合等。至于DIMM的面数与P-Bank数量的关系,面数≠P-Bank数,只有在知道芯片位宽的情况下,才能确定P-Bank的数量,大度256MB内存就是明显一例,而这种情况在Registered模组中非常普遍。有关内存模组的设计,将在后面的相关章节中继续探讨。1.2SDRAM的逻辑Bank与芯片容量表示方法●1.2.1逻辑Bank与芯片位宽讲完SDRAM的外在形式,就该深入了解SDRAM的内部结构了。这里主要的概念就是逻辑Bank。简单地说,SDRAM的内部是一个存储阵列。因为如果是管道式存储(就如排队买票),就很难做到随机访问了。阵列就如同表格一样,将数据“填”进去,你可以把它想象成一张表格。和表格的检索原理一样,先指定一个行(Row),再指定一个列(Column),我们就可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理。对于内存,这个单元格可称为存储单元,那么这个表格(存储阵列)叫什么呢?它就是逻辑Bank(LogicalBank,下文简称L-Bank)。L-Bank存储阵列示意图由于技术、成本等原因,不可能只做一个全容量的L-Bank,而且昀重要的是,由于SDRAM的工作原理限制,单一的L-Bank将会造成非常严重的寻址冲突,大幅降低内存效率(在后文中将详细讲述)。所以人们在SDRAM内部分割成多个L-Bank,较早以前是两个,目前基本都是4个,这也是SDRAM规范中的昀高L-Bank数量。到了RDRAM则昀多达到了32个,在昀新DDR-Ⅱ的标准中,L-Bank的数量也提高到了8个。这样,在进行寻址时就要先确定是哪个L-Bank,然后再在这个选定的L-Bank中选择相应的行与列进行寻址。可见对内存的访问,一次只能是一个L-Bank工作,而每次与北桥交换的数据就是L-Bank存储阵列中一个“存储单元”的容量。在某些厂商的表述中,将L-Bank中的存储单元称为Word(此处代表位的集合而不是字节的集合)。从前文可知,SDRAM内存芯片一次传输率的数据量就是芯片位宽,那么这个存储单元的容量就是芯片的位宽(也是L-Bank的位宽),但要注意,这种关系也仅对SDRAM有效,原因将在下文中说明。●1.2.2内存芯片的容量现在我们应该清楚内存芯片的基本组织结构了。那么内存的容量怎么计算呢?显然,内存芯片的容量就是所有L-Bank中的存储单元的容量总合。计算有多少个存储单元和计算表格中的单元数量的方法一样:存储单元数量=行数×列数(得到一个L-Bank的存储单元数量)×L-Bank的数量在很多内存产品介绍文档中,都会用M×W的方式来表示芯片的容量(或者说是芯片的规格/组织结构)。M是该芯片中存储单元的总数,单位是兆(英文简写M,精确值是1048576,而不是1000000),W代表每个存储单元的容量,也就是SDRAM芯片的位宽(Width),单位是bit。计算出来的芯片容量也是以bit为单位,但用户可以采用除以8的方法换算为字节(Byte)。比如8M×8,这是一个8bit位宽芯片,有8M个存储单元,总容量是64Mbit(8MB)不过,M×W是昀简单的表示方法。下图则是某公司对自己内存芯片的容量表示方法,这可以说是昀正规的形式之一。业界正规的内存芯片容量表示方法我们可以计算一下,结果可以发现这三个规格的容量都是128Mbits,只是由于位宽的变化引起了存储单元的数量变化。从这个例子就也可以看出,在相同的总容量下,位宽可以采用多种不同的设计。●1.2.3与芯片位宽相关的DIMM设计为什么在相同的总容量下,位宽会有多种不同的设计呢?这主要是为了满足不同领域的需要。现在大家已经知道P-Bank的位宽是固定的,也就是说当芯片位宽确定下来后,一个P-Bank中芯片的个数也就自然确定了,而前文讲过P-Bank对芯片集合的位宽有要求,对芯片集合的容量则没有任何限制。高位宽的芯片可以让DIMM的设计简单一些(因为所用的芯片少),但在芯片容量相同时,这种DI