PC133时代的168pin SDRAM DIMM1、 物理Bank传统内存系统为了保证CPU的正常工作,必须一次传输完CPU在一个传输周期内所需要的数据。而CPU在一个传输周期能接受的数据容量就是CPU数据总线的位宽,单位是bit(位)。当时控制内存与CPU之间数据交换的北桥芯片也因此将内存总线的数据位宽等同于CPU数据总线的位宽,而这个位宽就称之为物理Bank(Physical Bank,下文简称P-Bank)的位宽。所以,那时的内存必须要组织成P-Bank来与CPU打交道。资格稍老的玩家应该还记得Pentium刚上市时,需要两条72pin的SIMM才能启动,因为一条72pin -SIMM只能提供32bit的位宽,不能满足Pentium的64bit数据总线的需要。直到168pin-SDRAM DIMM上市后,才可以使用一条内存开机。下面将通过芯片位宽的讲述来进一步解释P-Bank的概念。不过要强调一点,P-Bank是SDRAM及以前传统内存家族的特有概念,在RDRAM中将以通道(Channel)取代,而对于像Intel E7500那样的并发式多通道DDR系统,传统的P-Bank概念也不适用。
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,比如SDRAM DIMM就有4个芯片选择信号(Chip Select,简称片选或CS),理论上可以控制4个P-Bank的芯片集合。只是由于某种原因而没有这么去做。比如设计难度、制造成本、芯片组的配合等。至于DIMM的面数与P-Bank数量的关系,在2001年2月的专题中已经明确了,面数≠P-Bank数,只有在知道芯片位宽的情况下,才能确定P-Bank的数量,大度256MB内存就是明显一例,而这种情况在Registered模组中非常普遍。有关内存模组的设计,将在后面的相关章节中继续探讨。SDRAM的逻辑Bank与芯片容量表示方法1、逻辑Bank与芯片位宽讲完SDRAM的外在形式,就该深入了解SDRAM的内部结构了。这里主要的概念就是逻辑Bank。简单地说,SDRAM的内部是一个存储阵列。因为假如是管道式存储(就如排队买票),就很难做到随机访问了。阵列就如同表格一样,将数据“填”进去,你可以把它想象成一张表格。和表格的检索原理一样,先指定一个行(Row),再指定一个列(Column),我们就可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理。对于内存,这个单元格可称为存储单元,那么这个表格(存储阵列)叫什么呢?它就是逻辑Bank(Logical Bank,下文简称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有效,原因将在下文中说明。
不过,M×W是最简单的表示方法。下图则是某公司对自己内存芯片的容量表示方法,这可以说是最正规的形式之一。
业界正规的内存芯片容量表示方法我们可以计算一下,结果可以发现这三个规格的容量都是128Mbits,只是由于位宽的变化引起了存储单元的数量变化。从这个例子就也可以看出,在相同的总容量下,位宽可以采用多种不同的设计。3、与芯片位宽相关的DIMM设计为什么在相同的总容量下,位宽会有多种不同的设计呢?这主要是为了满足不同领域的需要。现在大家已经知道P-Bank的位宽是固定的,也就是说当芯片位宽确定下来后,一个P-Bank中芯片的个数也就自然确定了,而前文讲过P-Bank对芯片集合的位宽有要求,对芯片集合的容量则没有任何限制。高位宽的芯片可以让DIMM的设计简单一些(因为所用的芯片少),但在芯片容量相同时,这种DIMM的容量就肯定比不上采用低位宽芯片的模组,因为后者在一个P-Bank中可以容纳更多的芯片。比如上文中那个内存芯片容量标识图,容量都是128Mbit,合16MB。假如DIMM采用双P-Bank+16bit芯片设计,那么只能容纳8颗芯片,计128MB。但假如采用4bit位宽芯片,则可容纳32颗芯片,计512MB。DIMM容量前后相差出4倍,可见芯片位宽对DIMM设计的重要性。因此,8bit位宽芯片是桌面台式机上容量与成本之间平衡性较好的选择,所以在市场上也最为普及,而高于16bit位宽的芯片一般用在需要更大位宽的场合,如显卡等,至于4bit位宽芯片很明显非常适用于大容量内存应用领域,基本不会在标准的Unbuffered 模组设计中出现。QQread.com 推出各大专业服务器评测 Linux服务器的安全性能 SUN服务器 HP服务器 DELL服务器 IBM服务器 联想服务器 浪潮服务器 曙光服务器 同方服务器 华硕服务器 宝德服务器 SDRAM的引脚与封装内存芯片要想工作,必须要与内存控制器有所联系,同时对于一个电气元件,电源供给也是必不可少的,而且数据的传输要有一个时钟作为触发参考。因此,SDRAM在封装时就要留出相应的引脚以供使用。电源与时钟的引脚就不必多说了,现在我们可以想象一下,至少应该有哪些控制引脚呢?我们从内存寻址的步骤缕下来就基本明白了,从中我们也就能了解内存工作的大体情况。这里需要说明的是,与DIMM一样,SDRAM有着自己的业界设计规范,在一个容量标准下,SDRAM的引脚/信号标准不能只考虑一种位宽的设计,而是要顾及多种位宽,然后尽量给出一个通用的标准,小位宽的芯片也许会空出一些引脚,但高位宽的芯片可能就全部用上了。不过容量不同时,设计标准也会有所不同,一般的容量越小的芯片所需要的引脚也就越小。1、 首先,我们知道内存控制器要先确定一个P-Bank的芯片集合,然后才对这集合中的芯片进行寻址操作。因此要有一个片选的信号,它一次选择一个P-Bank的芯片集(根据位宽的不同,数量也不同)。被选中的芯片将同时接收或读取数据,所以要有一个片选信号。2、 接下来是对所有被选中的芯片进行统一的L-Bank的寻址,目前SDRAM中L-Bank的数量最高为4个,所以需要两个L-Bank地址信号(22=4)。3、 最后就是对被选中的芯片进行统一的行/列(存储单元)寻址。地址线数量要根据芯片的组织结构分别设计了。但在相同容量下,行数不变,只有列数会根据位宽的而变化,位宽越大,列数越少,因为所需的存储单元减少了。4、 找到了存储单元后,被选中的芯片就要进行统一的数据传输,那么肯定要有与位宽相同数量的数据I/O通道才行,所以肯定要有相应数量的数据线引脚。
图注:128Mbit芯片不同位宽的引脚图(NC代表未使用,-表示与内侧位宽设计相同)
根据SDRAM的官方规范,台式机上所用的SDRAM在不同容量下的各种位宽封装标准如下:
QQread.com 推出各大专业服务器评测 Linux服务器的安全性能 SUN服务器 HP服务器 DELL服务器 IBM服务器 联想服务器 浪潮服务器 曙光服务器 同方服务器 华硕服务器 宝德服务器 SDRAM芯片初始化、行有效、列读写时序上文我们已经了解了SDRAM所用到的基本信号线路,下面就看看它们在SDRAM芯片内部是怎么“布置”的,并从这里开始深入了解内存的基本操作与过程,在这一节中我们将接触到有天书之称的时序图,但不要害怕,根据文中的指导慢慢理解,您肯定可以看懂它。首先,我们先熟悉一下SDRAM的内部结构,然后再开始具体的讲述。
128Mbit(32M×4)SDRAM内部结构图(点击放大)芯片初始化可能很多人都想象不到,在SDRAM芯片内部还有一个逻辑控制单元,并且有一个模式寄存器为其提供控制参数。因此,每次开机时SDRAM都要先对这个控制逻辑核心进行初始化。有关预充电和刷新的含义在下文有讲述,要害的阶段就在于模式寄存器(MR,Mode Register)的设置,简称MRS(MR Set),这一工作由北桥芯片在BIOS的控制下进行,寄存器的信息由地址线来提供。
SDRAM在开机时的初始化过程
SDRAM模式寄存器所控制的操作参数:地址线提供不同的0/1信号来获得不同的参数。在设置到MR之后,就开始了进入正常的工作状态,图中相关参数将结合下文具体讲述行有效初始化完成后,要想对一个L-Bank中的阵列进行寻址,首先就要确定行(Row),使之处于活动状态(Active),然后再确定列。虽然之前要进行片选和L-Bank的定址,但它们与行有效可以同时进行。
行有效时序图从图中可以看出,在CS#、L-Bank定址的同时,RAS(Row Address Strobe,行地址选通脉冲)也处于有效状态。此时An地址线则发送具体的行地址。如图中是A0-A11,共有12个地址线,由于是二进制表示法,所以共有4096个行(212=4096),A0-A11的不同数值就确定了具体的行地址。由于行有效的同时也是相应L-Bank有效,所以行有效也可称为L-Bank有效。列读写行地址确定之后,就要对列地址进行寻址了。但是,地址线仍然是行地址所用的A0-A11(本例)。没错,在SDRAM中,行地址与列地址线是共用的。不过,读/写的命令是怎么发出的呢?其实没有一个信号是发送读或写的明确命令的,而是通过芯片的可写状态的控制来达到读/写的目的。显然WE#信号就是一个要害。WE#无效时,当然就是读取命令。
读写操作示意图,读取命令与列地址一块发出(当WE#为低电平是即为写命令)然而,在发送列读写命令时必须要与行有效命令有一个间隔,这个间隔被定义为tRCD,即RAS to CAS Delay(RAS至CAS延迟),大家也可以理解为行选通周期,这应该是根据芯片存储阵列电子元件响应时间(从一种状态到另一种状态变化的过程)所制定的延迟。tRCD是SDRAM的一个重要时序参数,可以通过主板BIOS经过北桥芯片进行调整,但不能超过厂商的预定范围。广义的tRCD以时钟周期(tCK,Clock Time)数为单位,比如tRCD=2,就代表延迟周期为两个时钟周期,具体到确切的时间,则要根据时钟频率而定,对于PC100 SDRAM,tRCD=2,代表20ns的延迟,对于PC133则为15ns。
tRCD=3的时序图QQRead.com 推出数据恢复指南教程 数据恢复指南教程 数据恢复故障解析 常用数据恢复方案 硬盘数据恢复教程 数据保护方法 数据恢复软件 专业数据恢复服务指南 SDRAM的读/写时序与突发长度数据输出(读)在选定列地址后,就已经确定了具体的存储单元,剩下的事情就是数据通过数据I/O通道(DQ)输出到内存总线上了。但是在CAS发出之后,仍要经过一定的时间才能有数据输出,从CAS与读取命令发出到第一笔数据输出的这段时间,被定义为CL(CAS Latency,CAS潜伏期)。由于CL只在读取时出现,所以CL又被称为读取潜伏期(RL,Read Latency)。CL的单位与tRCD一样,为时钟周期数,具体耗时由时钟频率决定。不过,CAS并不是在经过CL周期之后才送达存储单元。实际上CAS与RAS一样是瞬间到达的,但CAS的响应时间要更快一些。为什么呢?假设芯片位宽为n个bit,列数为c,那么一个行地址要选通n×c个存储体,而一个列地址只需选通n个存储体。但存储体中晶体管的反应时间仍会造成数据不可能与CAS在同一上升沿触发,肯定要延后至少一个时钟周期。由于芯片体积的原因,存储单元中的电容容量很小,所以信号要经过放大来保证其有效的识别性,这个放大/驱动工作由S-AMP负责,一个存储体对应一个S-AMP通道。但它要有一个预备时间才能保证信号的发送强度(事前还要进行电压比较以进行逻辑电平的判定),因此从数据I/O总线上有数据输出之前的一个时钟上升沿开始,数据即已传向S-AMP,也就是说此时数据已经被触发,经过一定的驱动时间最终传向数据I/O总线进行输出,这段时间我们称之为tAC(access Time from CLK,时钟触发后的访问时间)。tAC的单位是ns,对于不同的频率各有不同的明确规定,但必须要小于一个时钟周期,否则会因访问时过长而使效率降低。比如PC133的时钟周期为7.5ns,tAC则是5.4ns。需要强调的是,每个数据在读取时都有tAC,包括在连续读取中,只是在进行第一个数据传输的同时就开始了第二个数据的tAC。
CL=2与tAC示意图
数据写入的时序图从图中可见,由于数据信号由控制端发出,输入时芯片无需做任何调校,只需直接传到数据输入寄存器中,然后再由写入驱动器进行对存储电容的充电操作,因此数据可以与CAS同时发送,也就是说写入延迟为0。不过,数据并不是即时地写入存储电容,因为选通三极管(就如读取时一样)与电容的充电必须要有一段时间,所以数据的真正写入需要一定的周期。为了保证数据的可靠写入,都会留出足够的写入/校正时间(tWR,Write Recovery Time),这个操作也被称作写回(Write Back)。tWR至少占用一个时钟周期或再多一点(时钟频率越高,tWR占用周期越多),有关它的影响将在下文进一步讲述。突发长度突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输所涉及到存储单元(列)的数量就是突发长度(Burst Lengths,简称BL)。 在目前,由于内存控制器一次读/写P-Bank位宽的数据,也就是8个字节,但是在现实中小于8个字节的数据很少见,所以一般都要经过多个周期进行数据的传输。上文讲到的读/写操作,都是一次对一个存储单元进行寻址,假如要连续读/写就还要对当前存储单元的下一个单元进行寻址,也就是要不断的发送列地址与读/写命令(行地址不变,所以不用再对行寻址)。虽然由于读/写延迟相同可以让数据的传输在I/O端是连续的,但它占用了大量的内存控制资源,在数据进行连续传输时无法输入新的命令,效率很低(早期的FPE/EDO内存就是以这种方式进行连续的数据传输)。为此,人们开发了突发传输技术,只要指定起始列地址与突发长度,内存就会依次地自动对后面相应数量的存储单元进行读/写操作而不再需要控制器连续地提供列地址。这样,除了第一笔数据的传输需要若干个周期(主要是之前的延迟,一般的是tRCD+CL)外,其后每个数据只需一个周期的即可获得。在很多北桥芯片的介绍中都有类似于X-1-1-1的字样,就是指这个意思,其中的X代表就代表第一笔数据所用的周期数。
非突发连续读取模式:不采用突发传输而是依次单独寻址,此时可等效于BL=1。虽然可以让数据是连续的传输,但每次都要发送列地址与命令信息,控制资源占用极大
突发连续读取模式:只要指定起始列地址与突发长度,寻址与数据的读取自动进行,而只要控制好两段突发读取命令的间隔周期(与BL相同)即可做到连续的突发传输至于BL的数值,也是不能随便设或在数据进行传输前临时决定。在上文讲到的初始化过程中的MRS阶段就要对BL进行设置。目前可用的选项是1、2、4、8、全页(Full Page),常见的设定是4和8。顺便说一下,BL能否更改与北桥芯片的设计有很大关系,不是每个北桥都能像调整CL那样来调整BL。某些芯片组的BL是定死而不可改的,比如Intel芯片组的BL基本都为4,所以在相应的主板BIOS中也就不会有BL的设置选项。而由于目前的SDRAM系统的数据传输是以64bit/周期进行,所以在一些BIOS也把BL用QWord(4字,即64bit)来表示。如4QWord就是BL=4。
另外,在MRS阶段除了要设定BL数值之外,还要具体确定读/写操作的模式以及突发传输的模式。突发读/突发写,表示读与写操作都是突发传输的,每次读/写操作持续BL所设定的长度,这也是常规的设定。突发读/单一写,表示读操作是突发传输,写操作则只是一个个单独进行。突发传输模式代表着突发周期内所涉及到的存储单元的传输顺序。顺序传输是指从起始单元开始顺序读取。假如BL=4,起始单元编号是n,顺序就是n、n+1、n+2、n+3。交错传输就是打乱正常的顺序进行数据传输(比如第一个进行传输的单元是n,而第二个进行传输的单元是n+2而不是n+1),至于交错的规则在SDRAM规范中有具体的定义表,但在这此出于必要性与篇幅的考虑就不列出了。
读取时预充电时序图(上图可点击放大):图中设定:CL=2、BL=4、tRP=2。自动预充电时的开始时间与此图一样,只是没有了单独的预充电命令,并在发出读取命令时,A10地址线要设为高电平(答应自动预充电)。可见控制好预充电启动时间很重要,它可以在读取操作结束后马上进入新行的寻址,保证运行效率。
数据写入时预充电操作时序图(可点击放大):注重其中的tWR参数,由于它的存在,使预充电操作延后,从而造成写回延迟
读取时数据掩码操作,DQM在两个周期后生效,突发周期的第二笔数据被取消(上图可点击放大)
写入时数据掩码操作,DQM立即生效,突发周期的第二笔数据被取消(上图可点击放大)有关内存内部的基本操作就到此结束,其实还有很多内存的操作没有描述,但都不是很重要了,限于篇幅与必要性,我们不在此介绍,有爱好的读者可以自行查看相关资料。图解SDRAM工作流程:仓库物语货物基地(主板)连接着物资(数据)的供求方。基地的货物调度厂房(北桥芯片)掌管着若干个用于临时供货/生产与存储的仓库基地(P-Bank),它们通常隶属于某一仓储集团(DIMM),这种基地与调度厂房之间必须由64条传送带联系着(P-Bank位宽),每条传送带一次只能运送一个标准的货物(1bit数据),而且一次至少要传送64个标准货物,这是它们之间的约定,仓库基地必须满足。
上图(点击放大)就是这样的一个仓库基地(P-Bank),它由4个大仓库(内存芯片)组成,它们的规模都相当大,每个大仓库为基地提供16条传送带(芯片位宽为16bit),总共加起来刚好就是64条。每个大仓库里都有四个规模和结构相同的子仓库(L-Bank),它们都被统一编了号。而子仓库中有很多层(行),每层里又有很多的储藏间(列),每个储藏间可以放置16个标准货物,虽然子仓库的规模很大,但每一层和每一个房间也都编好了号,而且每一层都有一个搬运工在值班。为了与外界联系方便,仓储集团与调度室设置了专线电话,和一个国家一样,每个仓库基地有一个区号(片选),另外还有四个子仓库号码(L-Bank地址),是所有大仓库共享的,一个号码对应所有大仓库中编号相同的子仓库。而专线电话的数量也是四个,这样可保证与某个子仓库通话时不会妨碍给其他子仓库打电话。在子仓库的每层则设立分机给搬运工使用。子仓库的楼下就是传送带,找到货物把它扔到上面。但每个大仓库只有一个传送带,也就是说同一时间内只能有一个子仓库在工作。每个子仓库都有一个自己的生产车间(读出放大器)负责指定货物的生产,并且每个大仓库都有一个外运站(数据输出寄存器)和寄存托运处(数据输入寄存器与写入驱动器)与传送带相连,前者负责货物的输出中转,后者负责所接受货物并寄存然后帮助搬运工运送到指定储藏间。那么它是如何与调度厂房协同工作的呢? 1、需求方有货物请求了,这个请求发送到调度厂房,调度人员开根据货主的要求给指定的子仓库打电话,电话号码是:区号+子仓库号码+楼层分机(片选+L-Bank寻址+行有效/选通)。那一层的搬运工接到电话后就开始预备工作。 2、当搬运工点亮所有储藏间的门牌(tRCD)之后,调度人员会告诉搬运工,货物放在哪个储藏间里(列寻址),假如货物很多,并且是连续存放的,调度员会通知搬运工:“一会儿要搬的时候,从起始房间开始连续将后面的n个房间的货物都搬出来,我就不再重复了”(突发传输)。但是,他告诉搬运工要等一下,要求所有大仓库的人员统一行动,先别出货。 3、根据事先的规定,搬运工在经过指定的时间后开始将货物扔到传送带上,传送带开始运转并将货物送到生产车间,由它来复制出全新的货物,然后再送到传送带上通过外运站向调度厂房运去。人们通常把从搬运工找到具体储藏间开始,到货物真正出现在送往调度厂房的传送带上的这段时间称之为“输出潜伏期”(CL),而从值班人把货物扔到传送带到货物开始传向调度厂房的这段时间,被称为“货物输出延迟”(tAC),它体现了值班人员的反应时间和生产车间的效率,也影响着仓库基地所在集团(DIMM)的名声。
L-Bank交错自动预充电/读取时序图(可点击放大):L-Bank 0与L-Bank 3实现了无间隔交错读取,避免了tRP对性能的影响 三、增加PFHR的方法无论是自动预充电还是交错工作的方法都无法消除tRCD所带来的延迟。要解决这个问题,就要尽量让一个工作行在进行预充电前尽可能多的接收多个工作命令,以达到背靠背的效果,此时就只剩下CL所造成的读取延迟了(写入时没有延迟)。如何做到这一点呢?这就是北桥芯片的责任了。在上文的时序图中有一个参数tRAS(Active to Precharge Command,行有效至预充电命令间隔周期)。它有一个范围,对于PC133标准,一般是预充电命令至少要在行有效命令5个时钟周期之后发出,最长间隔视芯片而异(基本在120000ns左右),否则工作行的数据将有丢失的危险。那么这也就意味着一个工作行从有效(选通)开始,可以有120000ns的持续工作时间而不用进行预充电。显然,只要北桥芯片不发出预充电(包括答应自动预充电)的命令,行打开的状态就会一直保持。在此期间的对该行的任何读写操作也就不会有tRCD的延迟。可见,假如北桥芯片在能同时打开的行(页)越多,那么PFHR也就越大。需要强调的是,这里的同时打开不是指对多行同时寻址(那是不可能的),而是指多行同时处于选通状态。我们可以看到一些SDRAM芯片组的资料中会指出可以同时打开多少个页的指标,这可以说是决定其内存性能的一个重要因素。
Intel 845芯片组MCH的资料:其中表明它可以支持24个页面同时处于打开状态但是,可同时打开的页数也是有限制的。从SDRAM的寻址原理讲,同一L-Bank中不可能有两个打开的行(S-AMP只能为一行服务),这就限制了可同时打开的页面总数。以SDRAM有4个L-Bank,北桥最多支持8个P-Bank为例,理论上最多只能有32个页面能同时处于打开的状态。而假如只有一个P-Bank,那么就只剩下4个页面,因为有几个L-Bank才能有同时打开几个行而互不干扰。Intel 845的MHC虽然可以支持24个打开的页面,那也是指6个P-Bank的情况下(845MCH只支持6个P-Bank)。可见845已经将同时打开页数发挥到了极致。不过,同时打开页数多了,也对存取策略提出了一定的要求。理论上,要尽量多地使用已打开的页来保证最短的延迟周期,只有在数据不存在(读取时)或页存满了(写入时)再考虑打开新的指定页,这也就是变向的连续读/写。而打开新页时就必须要关闭一个打开的页,假如此时打开的页面已是北桥所支持的最大值但还不到理论极限的话,就需要一个替换策略,一般都是用LRU算法来进行,这与VIA的交错控制大同小异。
SDRAM的结构、时序与性能的关系(下)四、内存结构对PHR的影响这是结构设计上的问题,所以单独来说。在我们介绍L-Bank时,曾经提到单一的L-Bank会造成严重的寻址冲突。现在,当我们了解了内存寻址的原理后,就不难理解这句话了。假如只有一个L-Bank,那么除非是背靠背式的操作(PFH),否则tRP、tRCD、CL(读取时)一个也少不了。上文中,内存交错之所以能实现就是因为有多个L-Bank,从这点就可以看出L-Bank数量与页命中率之间的关系了。PHR基本上可以等于“(L-Bank数-1)/L-Bank数”。SDRAM有4个L-Bank,那么页命中率就是75%,DDR-Ⅱ SDRAM最多将有8个L-Bank,PHR最高为87.5%。而RDRAM则最多有32个L-Bank,PHR到了惊人的96.875%,这也是当时RDRAM攻击SDRAM的一主要方面。不过,从内存的结构图上可以看出,L-Bank多了,相应外围辅助的元件也要增加,比如S-AMP,L-Bank地址线等等。在RDRAM的介绍中,我会讲到L-Bank数量增多后所带来的一些新问题。五、读/写延迟不同对性能所造成的影响SDRAM在读取操作时会有CL造成的延迟,而在写入时则是0延迟。这样,在读操作之后马上进行写操作的话,由于没有写延迟,数据线不会出现空闲的时候,保证了数据总线的利用率。但是,若在写操作之后马上进行读操作的话,即使是背靠背式进行,仍然会由于tWR与CL的存在而造成间隔,这期间数据总线将是空闲的,利用率受到了影响。
突发读后写时的操作,以本图为例,在最后一个所需数据(本例为第一笔数据)输出前一个周期使DQM有效,屏蔽第二笔数据的输出;2、发出写入命令,此时所读取的第二笔数据被屏蔽。3、继续DQM以屏蔽第三笔数据的输出。其中tHZ表示输出数据与外部电路的连接周期,tDS表示数据输入预备时间,假如tHZ+tDS>tCK,那么写入操作就要延后一个周期,这要视芯片的具体设计而定(上图可点击放大)
六、BL对性能的影响从读/写之间的中断操作我们又引出了BL(突发长度)对性能影响的话题。首先,BL的长短与其应用的领域有着很大关系,下表就是目前三个主要的内存应用领域所使用的BL,这是厂商们经过多年的实践总结出来的。
BL与相应的工作领域BL越长,对于连续的大数据量传输很有好处,但是对零散的数据,BL太长反而会造成总线周期的浪费。以P-Bank位宽64bit为例,BL=4时,一个突发操作能传输32字节的数据,但假如只需要前16个字节,后两个周期是无效的。假如需要40字节,需要再多进行一次突发传输,但实际只需要一个传输周期就够了,从而浪费了三个传输周期。而对于2KB的数据,BL=4的设置意味着要每隔4个周期发送新的列地址,并重复63次。而对于BL=256,一次突发就可完成,并且不需要中途再进行控制。不少人都因此表示了BL设定对性能影响的担心。但设计人员也不是傻瓜,通过上文的介绍,可以看出他们在这方面的考虑。通过写命令、DQM、读命令的配合/操作,完全可以任意地中断突发周期开始新的操作,而且DQM还可以帮我们在BL中选择有用的数据,从而最大限度降低突发传输对性能带来的影响。另外,预充电命令与专用的突发传输终止命令都可以用来中断BL,前者在中断后进行预充电,后者在中断后不进行其他读/写操作。
专用的突发停止命令可用来中断突发读取,其生效潜伏期与CL相同。对于写入则立即有效(上图可点击放大)
用预充电命令来中断突发读取,生效潜伏期与CL相同,要小于或等于tRP。写入时预充电在最后一个有效写入周期完成,并经过tWR之后发出,同时立即中断突发传输所以,突发周期的中断并不难,但用短BL应付大数据量存取需要不断的指令与列寻址配合,而为了取消不需要的传输周期,由于需要运用额外的控制,也将占用不少的控制资源。所以BL针对不同应用领域有不同设计的主要目的,就是在保证性能的同时,系统控制资源也能得到合理的运用。
如日中天——DDR SDRAM(上)DDR SDRAM全称为Double Data Rate SDRAM,中文名为“双倍数据流SDRAM”。DDR SDRAM在原有的SDRAM的基础上改进而来。也正因为如此,DDR能够凭借着转产成本优势来打败昔日的对手RDRAM,成为当今的主流。由于SDRAM的结构与操作在上文已有具体阐述,所以本文只着重讲讲DDR的原理和DDR SDRAM相对于传统SDRAM(又称SDR SDRAM)的不同。
DDR SDRAM可在一个时钟周期内传送两次数据(上图可点击放大)一、DDR的基本原理有很多文章都在探讨DDR的原理,但似乎也不得要领,甚至还带出一些错误的观点。首先我们看看一张DDR正规的时序图。
DDR SDRAM读操作时序图从中可以发现它多了两个信号: CLK#与DQS,CLK#与正常CLK时钟相位相反,形成差分时钟信号。而数据的传输在CLK与CLK#的交叉点进行,可见在CLK的上升与下降沿(此时正好是CLK#的上升沿)都有数据被触发,从而实现DDR。在此,我们可以说通过差分信号达到了DDR的目的,甚至讲CLK#帮助了第二个数据的触发,但这只是对表面现象的简单描述,从严格的定义上讲并不能这么说。之所以能实现DDR,还要从其内部的改进说起。
DDR内存芯片的内部结构图,注重比较上文中SDRAM的结构图(上图可点击放大)这也是一颗128Mbit的内存芯片,标称规格也与前文的SDRAM一样为32×4bit。从图中可以看出来,白色区域内与SDRAM的结构基本相同,但请注重灰色区域,这是与SDRAM的不同之处。首先就是内部的L-Bank规格。SDRAM中L-Bank存储单元的容量与芯片位宽相同,但在DDR SDRAM中并不是这样,存储单元的容量是芯片位宽的一倍,所以在此不能再套用讲解SDRAM时 “芯片位宽=存储单元容量” 的公式了。也因此,真正的行、列地址数量也与同规格SDRAM不一样了。以本芯片为例,在读取时,L-Bank在内部时钟信号的触发下一次传送8bit的数据给读取锁存器,再分成两路4bit数据传给复用器,由后者将它们合并为一路4bit数据流,然后由发送器在DQS的控制下在外部时钟上升与下降沿分两次传输4bit的数据给北桥。这样,假如时钟频率为100MHz,那么在I/O端口处,由于是上下沿触发,那么就是传输频率就是200MHz。现在大家基本明白DDR SDRAM的工作原理了吧,这种内部存储单元容量(也可以称为芯片内部总线位宽)=2×芯片位宽(也可称为芯片I/O总线位宽)的设计,就是所谓的两位预取(2-bit Prefetch),有的公司则贴切的称之为2-n Prefetch(n代表芯片位宽)。二、DDR SDRAM与SDRAM的不同DDR SDRAM与SDRAM的不同主要体现在以下几个方面。DDR SDRAM与SDRAM的主要不同对比表
(上图可点击放大)
DDR SDRAM与SDRAM一样,在开机时也要进行MRS,不过由于操作功能的增多,DDR SDRAM在MRS之前还多了一EMRS阶段(Extended Mode Register Set,扩展模式寄存器设置),这个扩展模式寄存器控制着DLL的有效/禁止、输出驱动强度、QFC 有效/无效等。
由于EMRS与MRS的操作方法与SDRAM的MRS大同小异,在此就不再列出具体的模式表了,有爱好的话可查看相关的DDR内存资料。下面我们就着重说说DDR SDRAM的新设计与新功能。
如日中天——DDR SDRAM(下)
与CK反相的CK#保证了触发时机的准确性2、 数据选取脉冲(DQS)DQS是DDR SDRAM中的重要功能,它的功能主要用来在一个时钟周期内准确的区分出每个传输周期,并便于接收方准确接收数据。每一颗芯片都有一个DQS信号线,它是双向的,在写入时它用来传送由北桥发来的DQS信号,读取时,则由芯片生成DQS向北桥发送。完全可以说,它就是数据的同步信号。在读取时,DQS与数据信号同时生成(也是在CK与CK#的交叉点)。而DDR内存中的CL也就是从CAS发出到DQS生成的间隔,数据真正出现在数据I/O总线上相对于DQS触发的时间间隔被称为tAC。注重,这与SDRAM中的tAC的不同。实际上,DQS生成时,芯片内部的预取已经完毕了,tAC是指上文结构图中灰色部分的数据输出时间,由于预取的原因,实际的数据传出可能会提前于DQS发生(数据提前于DQS传出)。由于是并行传输,DDR内存对tAC也有一定的要求,对于DDR266,tAC的答应范围是±0.75ns,对于DDR333,则是±0.7ns,有关它们的时序图示见前文,其中CL里包含了一段DQS的导入期。前文已经说了DQS是了保证接收放的选择数据, DQS在读取时与数据同步传输,那么接收时也是以DQS的上下沿为准吗?不,假如以DQS的上下沿区分数据周期的危险很大。由于芯片有预取的操作,所以输出时的同步很难控制,只能限制在一定的时间范围内,数据在各I/O端口的出现时间可能有快有慢,会与DQS有一定的间隔,这也就是为什么要有一个tAC规定的原因。而在接收方,一切必须保证同步接收,不能有tAC之类的偏差。这样在写入时,芯片不再自己生成DQS,而以发送方传来的DQS为基准,并相应延后一定的时间,在DQS的中部为数据周期的选取分割点(在读取时分割点就是上下沿),从这里分隔开两个传输周期。这样做的好处是,由于各数据信号都会有一个逻辑电平保持周期,即使发送时不同步,在DQS上下沿时都处于保持周期中,此时数据接收触发的准确性无疑是最高的。
在写入时,以DQS的高/低电平期中部为数据周期分割点,而不是上/下沿,但数据的接收触发仍为DQS的上/下沿3、 写入延迟在上面的DQS写入时序图中,可以发现写入延迟已经不是0了,在发出写入命令后,DQS与写入数据要等一段时间才会送达。这个周期被称为DQS相对于写入命令的延迟时间(tDQSS, WRITE Command to the first corresponding rising edge of DQS),对于这个时间大家应该很好理解了。为什么要有这样的延迟设计呢?原因也在于同步,究竟一个时钟周期两次传送,需要很高的控制精度,它必须要等接收方做好充分的预备才行。tDQSS是DDR内存写入操作的一个重要参数,太短的话恐怕接受有误,太长则会造成总线空闲。tDQSS最短不能小于0.75个时钟周期,最长不能超过1.25个时钟周期。有人可能会说,假如这样,DQS不就与芯片内的时钟不同步了吗?对,正常情况下,tDQSS是一个时钟周期,但写入时接受方的时钟只用来控制命令信号的同步,而数据的接受则完全依靠DQS进行同步,所以DQS与时钟不同步也无所谓。不过,tDQSS产生了一个不利影响——读后写操作延迟的增加,假如CL=2.5,还要在tDQSS基础上加入半个时钟周期,因为命令都要在CK的上升沿发出。
当CL=2.5时(上图可点击放大),读后写的延迟将为tDQSS+0.5个时钟周期(图中BL=2)另外,DDR内存的数据真正写入由于要经过更多步骤的处理,所以写回时间(tWR)也明显延长,一般在3个时钟周期左右,而在DDR-Ⅱ规范中更是将tWR列为模式寄存器的一项,可见它的重要性。4、 突发长度与写入掩码在DDR SDRAM中,突发长度只有2、4、8三种选择,没有了随机存取的操作(突发长度为1)和全页式突发。这是为什么呢?因为L-Bank一次就存取两倍于芯片位宽的数据,所以芯片至少也要进行两次传输才可以,否则内部多出来的数据怎么处理?而全页式突发事实证实在PC内存中是很难用得上的,所以被取消也不希罕。
但是,突发长度的定义也与SDRAM的不一样了(见本章节最前那幅DDR简示图),它不再指所连续寻址的存储单元数量,而是指连续的传输周期数,每次是一个芯片位宽的数据。对于突发写入,假如其中有不想存入的数据,仍可以运用DM信号进行屏蔽。DM信号和数据信号同时发出,接收方在DQS的上升与下降沿来判定DM的状态,假如DM为高电平,那么之前从DQS中部选取的数据就被屏蔽了。有人可能会觉得,DM是输入信号,意味着芯片不能发出DM信号给北桥作为屏蔽读取数据的参考。其实,该读哪个数据也是由北桥芯片决定的,所以芯片也无需参与北桥的工作,哪个数据是有用的就留给北桥自己去选吧。5、 延迟锁定回路(DLL)DDR SDRAM对时钟的精确性有着很高的要求,而DDR SDRAM有两个时钟,一个是外部的总线时钟,一个是内部的工作时钟,在理论上DDR SDRAM这两个时钟应该是同步的,但由于种种原因,如温度、电压波动而产生延迟使两者很难同步,更何况时钟频率本身也有不稳定的情况(SDRAM也内部时钟,不过因为它的工作/传输频率较低,所以内外同步问题并不突出)。DDR SDRAM的tAC就是因为内部时钟与外部时钟有偏差而引起的,它很可能造成因数据不同步而产生错误的恶果。实际上,不同步就是一种正/负延迟,假如延迟不可避免,那么若是设定一个延迟值,如一个时钟周期,那么内外时钟的上升与下降沿还是同步的。鉴于外部时钟周期也不会绝对统一,所以需要根据外部时钟动态修正内部时钟的延迟来实现与外部时钟的同步,这就是DLL的任务。DLL不同于主板上的PLL,它不涉及频率与电压转换,而是生成一个延迟量给内部时钟。目前DLL有两种实现方法,一个是时钟频率测量法(CFM,Clock Frequency Measurement),一个是时钟比较法(CC,Clock Comparator)。CFM是测量外部时钟的频率周期,然后以此周期为延迟值控制内部时钟,这样内外时钟正好就相差了一个时钟周期,从而实现同步。DLL就这样反复测量反复控制延迟值,使内部时钟与外部时钟保持同步。CC的方法则是比较内外部时钟的长短,假如内部时钟周期短了,就将所少的延迟加到下一个内部时钟周期里,然后再与外部时钟做比较,若是内部时钟周期长了,就将多出的延迟从下一个内部时钟中刨除,如此往复,最终使内外时钟同步。
CFM式DLL工作示意图
CC式DLL工作示意图CFM与CC各有优缺点,CFM的校正速度快,仅用两个时钟周期,但轻易受到噪音干扰,并且假如测量失误,则内部的延迟就永远错下去了。CC的优点则是更稳定可靠,假如比较失败,延迟受影响的只是一个数据(而且不会太严重),不会涉及到后面的延迟修正,但它的修正时间要比CFM长。DLL功能在DDR SDRAM中可以被禁止,但仅限于除错与评估操作,正常工作状态是自动有效的。
昔日贵族——Rambus DRAM(一)谈起DDR SDRAM与Rambus DRAM(简称RDRAM)之间的恩怨,很多人现在还是津津乐道。的确,上一世纪末的内存大战虽胜败已分,但至今仍余波未平。在主流市场DDR SDRAM成为王者,RDRAM则沦为“高端贵族”。
Rambus公司于1990年3月成立,之后不久就有了Rambus的核心专利——RSL(Rambus Signaling Level,Rambus发信电平技术)。Rambus内存最早出现于1995年12月,那时它与任天堂64(Nintendo64)游戏机一起发售,但名声不大。从1996年12月开始,Rambus与Intel合作开发,预备将Rambus推广到PC领域。到Rambus内存真正亮相于PC市场时已经是1999年11月了。
(上图可点击放大)
RDRAM与传统SDRAM的架构比较从架构比较图中,可以看出RDRAM在工作方式上与SDRAM有了很大不同。SDRAM需要多颗芯片并联组成P-Bank与北桥沟通,而在RDRAM架构中每个芯片就是一个单独工作的读写单元,芯片的位宽就是与北桥接口的位宽,所以假如想用ECC,就要用专门的ECC型芯片,也因此有了16/18bit的两种规格。而芯片的位宽就是一个RDRAM通道的位宽(本文以16bit芯片为例进行介绍)。为了达到更高的容量,在一个通道中将多颗RDRAM芯片串起来,形成RIMM(Rambus Interface Memory Module,Rambus接口内存模组),假如主板答应,完全可以设计一个超长的内存插槽与模组,但现实中肯定不能这么做,所以在主板上Rambus又把模组串起来组成通道。由于是串联的形式,所以要求起始端与终结端形成一个完整的通路,而RIMM就是这个通路的串联器,因此Rambus要求所有的插槽必须插满,假如没有RIMM则用C-RIMM(Continuity RIMM,RIMM续连器)代替,以达到联通RSL信号并行终结器的目的。工作时,RDRAM每次寻址一颗芯片,所需要的数据则由通道数据总线传送到北桥,而不像SDRAM那样由所在模组直接通过DIMM接口传向北桥,也因此RIMM的引脚定义几乎是左右对称的。由于位宽的降低,为保证高带宽,RDRAM使用了更高的时钟频率(这就意味着它不可能与系统时钟同步,所以只能叫RDRAM而不是RSDRAM),芯片的工作频率明显高于SDRAM/DDR,这样芯片的工作热量也急剧上升,为此Rambus在官方规范中规定RIMM必须配备散热片,从而成了现在这个样子。
32bit位宽PC1066芯片标准的RIMM,它是目前PC领域中性能最高的RDRAM产品二、RDRAM的结构简介1、 RDRAM的L-Bank结构RDRAM的内部仍主要由L-Bank构成,但它的设计与SDRAM家族有很大的不同。首先,每个L-Bank有两个数据通道A和B,各为8bit位宽(ECC型号为9bit,这种设计就是Direct DRAM较以前RDRAM的不同),每个端口都配有S-AMP。根据L-Bank数量与S-AMP的分配方式不同,目前RDRAM共有三种内核结构,分别是32s、16d与4i。较早时,RDRAM的设计是16d,所谓的d是指Double(双),即除了0与15号L-Bank,其余相邻的L-Bank每个数据通道(A和B)共用一个S-AMP。
16d L-Bank结构(上图可点击放大)后来分别向高端和低端领域发展了32s与4i技术。前者的s代表Split,它将原来的16d内核分割为两个部分,各为16d结构,0、15、16、31号L-Bank的每个数据通道各自独占一个S-AMP。4i则与传统的SDRAM相似,i代表Independent(独立),只有4个L-Bank,各L-Bank的每个数据通道有单独的S-AMP。
32s L-Bank结构
4i L-Bank结构
RDRAM虽然每个数据通道是串行传输,但总体上讲,仍然存在数据块(一次传输的128bit)同步的问题,因此严格的讲,RDRAM从系统架构上讲并不是串行内存由于RDRAM的存储单元容量很大,所以RDRAM的行列地址线也大为减少,以256Mbit的4i结构的RDRAM为例,行地址为12bit(4096),列地址为7bit(128)。假如是32s结构的,由于L-Bank地址的增多,行列地址要更少(分别是9和7bit)。而且RDRAM的行列地址线是独立的,但是RDRAM的行与列地址线各自只有3条和5条,显然不够用,Rambus又是怎么搞定的呢?这就涉及到RDRAM具体的操作设计了。QQread.com 推出游戏功略 http://www.qqread.com/netgame/game/index.Html 魔兽世界 跑跑卡丁车 街头篮球 水浒Q传 龙与地下城OL 征服 轩辕剑5 FIFA07 热血江湖 大唐风云 梦幻西游 武林外传 QQRead.com 推出数据恢复指南教程 数据恢复指南教程 数据恢复故障解析 常用数据恢复方案 硬盘数据恢复教程 数据保护方法 数据恢复软件 专业数据恢复服务指南 昔日贵族——Rambus DRAM(二)三、 RDRAM的具体操作与相关技术1、 初始化与命令包RDRAM也有一个控制寄存器,在开机初始化过程中用来对RDRAM芯片进行配置,有的信息由北桥动态写入(如芯片地址、自刷新模式等),有的则是出厂时就设置好不能更改的(如刷新计数、生产商信息、支持的协议版本等)。在初始化之后,RDRAM才能进入正常的工作状态。 RDRAM的读写操作过程与SDRAM基本是一样的,也要进行片选、L-Bank定址、行/列寻址等操作(此时的行就是指RDRAM内存系统中的页),但由于它的每次操作只针对一颗芯片,所以具体操作起来有很大不同,这主要体现在“命令包”的方式上。
行读/写命令包的信息组成
列读/写命令包的信息组成
至于操作命令包就不在此多说了,因为构成的形式基本就是这样,每次用8个传输周期进行命令发送。而且由于RDRAM的命令代码很多,也比较复杂,在本专题中也不用一一列出,要害在于让大家明白RDRAM的寻址是怎么一回事即可,剩下的具体代码定义,假如有爱好大家可以自行研究。
2、 操作时序计算通过上面的时序图,我们可以发现RDRAM计算时序的方法与SDRAM家族不一样,这在比较两者间时序效率时有着要害的影响。Rambus的时序规定与FPE/EDO内存时一样,在读取时延用了tRAC、tCAC的定义,前者是行访问周期(RAC,RAS Access Cycle/Delay),后者是列访问周期(CAC,CAS Access Cycle/ Delay),你可以把它等同于SDRAM中的CL,但决不能在RDRAM中引入CL这个概念。在写入时则将tCAC替换为tCWD(CAS to Write Delay)。它们的单位都是时钟周期,对于PC800,一个时钟周期就是2.5ns,对于PC1066就是1.876ns了。显然,时钟频率越高,延迟周期就越短。但是这些时序是从命令包发送完毕开始计算,SDRAM则是在命令发送同时开始计算。因此,在计算RDRAM的操作延迟时,命令包本身占用的时间也必须要考虑进来。3、 写入延迟与掩码操作RDRAM为写入设置了专用的延迟tCWD,这并不是被迫而是有意设计的。RDRAM不需要DQS之类的信号进行同步操作,数据是可以立即接受的,但出于总线利用率的考虑,RDRAM加入了写入延迟,它略短于tCAC。在具体操作中,芯片上没有引脚控制写入答应/禁止,一切的命令在命令包中进行定义,所以读命令可以在写过程中发出,经过tCAC后有效。这样在写后读操作中,除了tCAC与tCWD之间的差距外(估计是留给写回的时间),几乎没有任何停顿,而不像SDR/DDR SDRAM中有较大延迟。在写入过程中,数据都是先存在写入缓冲区中,这个操作的目的在于等待掩码的控制。RDRAM的数据掩码只对写入有效,当收到掩码命令后,RDRAM将指定的引脚数据从缓冲区中删除,之后再进行真正的写入。昔日贵族——Rambus DRAM(三)4、多通道技术与多通道模组PC800的速度在当时可算是RDRAM的一极限,但它的1.6GB/s带宽并不能满足高端应用的需要,而且DDR一方主推的产品是P2100的DDR-266,为此RDRAM利用双通道技术来弥补带宽上的不足。简单的说,它就像一个用于内存的RAID,两个通道的数据在RAC一端进行分割(写)与合并(读),两个通道的RIMM缺一不可并要求结构完全一致,因为寻址信号是一样的,必须适用于两个RIMM,这也就意味着两个RIMM的存储轨迹也是一样。但是,数据的寻址延迟并没有变化,只是连续传输率提高了一倍达到3.2GB/s(两个PC800通道),而且总的内存容量也增加了一倍。时至今日,虽然RDRAM使用窄位宽设计,但究竟不是串行的方式,提升频率也越来越困难,最新的PC1066标准也只达到2.1GB/s的带宽,此时双通道设计几乎成为RDRAM的标配。可以说没有双通道技术的支持,RDRAM是很难走到今天的。
RDRAM双通道结构以前,双通道技术是以两条RIMM来实现,在双通道已经是RDRAM标准设计的今天,这种设计的弊病很明显,比如客户的购置成本、主板的布线设计等。为此,在一些内存厂商的支持下,RDRAM出现了多通道模组设计,其主体思路就是将每个通道的信号终结电路移植到模组上来,在一个模组上实现多通道传输。
32bit的RIMM设计,每个通道的终结器做在了模组上目前PC市场上32bit RIMM逐渐开始流行并终将取代传统的双通道设计,对于64bit RIMM,由于是4通道设计,得需要4通道北桥芯片的支持,所以目前不可能在台式机领域里普及。
不同规格的RIMM间比较(上图可点击放大)
5、 黄石技术黄石(Yellowstone)是Rambus为了适应未来带宽的需要而开发的信号与数据传输技术,其主要的技术特点有四个:
黄石技术的物理系统结构A、3.2GHz传输频率,未来可高达6.4GHz,按16bit位宽计算,带宽可达6.4GB/s,双通道应用则为12.8GB/s。B、极低电压的差分RSL信号(DRSL),降低电源消耗并保证信号质量与制造成本。信号电压差值只有200mV,是目前电压差最小的内存信号技术。
DRSL发信技术与其他内存接口发信技术的比较C、八倍数据流技术(ODR,Octal Data Rate)。目前采用黄石技术的RDRAM,时钟频率仍是400MHz,但芯片内部通过专用的锁相回路(PLL)将其转换为1.6GHz的内部时钟,然后在此基础上使用DDR技术,从而能在一个时钟周期内传输8次数据。数据传输频率也因此达到了3.2GHz。
ODR操作示意图D、固定相位技术(FleXPhase),使内存生产者不再费力的去调校PCB的设计以减少延迟/潜伏期对数据/时钟间同步的影响。固定相位技术使信号本身就具备了数据/时钟同步与自校准能力,从而使外围有关时序跟踪的设计与布线变得非常简单,并有助于提高同步性,提高总线利用率。
Rambus展示的用于显卡的点对点黄石RDRAM显存方案黄石技术于2001年10月2日正式发布,但是虽然它有这样那样的优点,但从最近的资料中显示,Rambus主要将其定位于消费电子、网络、通信和图形设备市场。对于目前的桌面PC市场,黄石在近期应用的可能性并不大。
读取操作时RDRAM与DDR SDRAM的延迟比较表(上图可点击放大)从对比表中可以看出,RDRAM相对于DDR SDRAM在首次寻址时的确存在较大的延迟,即使是最新的PC1066,在与DDR-333的比较中也不占优势。不过,借助于双通道的设计,RDRAM在高数据量传输应用中的优势还是比较明显的。另外,在总线的利用率方面RDRAM的设计也居领先地位,这为保证它的总体效率提供了坚实的保障。
各内存的总线效率比较这个对比表是东芝公司经过反复实验而得出的结论,它是通过一些典型的操作(如写-读-读),结合不同页命中情况下的时序,以及刷新对内存操作的影响等分析而得出的。由于DDR SDRAM在L-Bank数量上占劣势,所以出现L-Bank寻址冲突的可能性要大为提高,而且在写后读操作中,RDRAM的延迟也明显小于SDRAM家族,因此虽然PC800的峰值带宽不如DDR-266,但综合效率要更好。这可以解释为什么在一些测试中,RDRAM明显比DDR领先的原因。不过,在以零散数据为主的操作中,RDRAM的固定传输周期以及高延迟就成为了性能的障碍。从前面的分析可以看出,SDRAM/DDR在数据控制上的灵活性要比RDRAM高,首次访问的延迟也更短,因此在某些操作中,即使带宽比RDRAM系统小,性能仍不见得落后。比如845D/E在某些应用测试中,完全可以与双通道PC1066一较高低。而Intel决定在高端服务器领域使用DDR芯片组,也基本是出于这个考虑,因为在服务器的操作中,零散型存取操作所占比例很大。相反,若大规模连续存取操作占比例很大(如视频与音频工作站),那么可能就要考虑RDRAM了。2、 未来竞争展望目前随着多通道技术在DDR上的普及,RDRAM在带宽上的优势也变得不明显了。所以,RDRAM假如不及时提高单通道的性能,很快会被强大的DDR家族赶出台式机领域。但RDRAM的时钟频率已经很高了,再向上提高已经很难,不少RDRAM厂商都表示,800MHz时钟频率可能将是RDRAM的一个巨大门槛,即使能超过,成本可能也是惊人的,要知道目前533/400MHz的RIMM就已使用了8层PCB,800MHz时PCB成本将很难控制。这也是为什么RDRAM急于推出32bit与64bit RIMM的原因,究竟内存这种高带宽应用设备,还是需要一定位宽的保证。而且高位宽的同步性也不像想象中的那么难以控制,DQS的设计就很大程度地解决了这一问题,所以,DDR可以借助较少的转产成本,较低的PCB成本(即使是DDR-Ⅱ也是6层设计),成为PC内存的首选产品。现在再去争论RDRAM与DDR谁胜谁败已经没有意义,RDRAM已经很难再在主流市场重振雄风。这主要不是它的技术限制,而是早期的市场动作与成本的压力造成的。虽然现在4i芯片开始起步,但支持这种结构的芯片组还很难找到(至少850E不支持)。在820时代,RDRAM由于成本而没有打开市场,现在可以通过降低成本来提高竞争力,但DDR一方也有了多通道技术。Rambus也因此明智地将黄石定位于专用/定制市场。这样,在今后很长一段时间里我们只有看DDR的独角戏了。明日之星——DDR-Ⅱ与DDR-Ⅲ(一)作为DDR的接班人,DDR-Ⅱ在规范制定之初就引起了广泛的关注,进入2002年,三星、Elpida、Hynix、Micron等都相继发布了DDR-Ⅱ芯片(最早由三星在5月28日发布),让人觉得DDR-Ⅱ忽然和我们近了。可是,DDR-Ⅱ规范却一直没有正式公开,在JEDEC上仍只有一篇ATi技术人员写的,在目前看来有些内容都已过时的简要介绍。原来,DDR-Ⅱ标准到2002年10月完成度也没有达到100%(厂商透露大约为95%),而上述厂商所推出的芯片也在不断的修改中,预计正式的规范将在明年第一季度推出。不过,DDR-Ⅱ的主体设计已经完成,不会有大的改动,所以通过这些“试验性”芯片,我们仍可把握DDR-Ⅱ的主要信息。DDR-Ⅱ相对于DDR 的主要改进如下:
DDR-Ⅱ、DDR与SDRAM的操作时钟比较所以,当预取容量超过接口一次DDR的传输量时,内部时钟必须降低(除非数据传输不是DDR方式,而是一个时钟周期4次)。假如内部时钟也达到200MHz,那外部时钟也要达到400MHz,这会使成本有大幅度提高。因此,DDR-Ⅱ虽然实现了4-bit预取,但在实际效能上,与DDR是一样的。在上面那幅比较图中,可以看出厂商们的一种误导,它虽然表示出在相同的核心频率下,DDR-Ⅱ达到了两倍于DDR的的带宽,但前提是DDR-Ⅱ的外部时钟频率也是DDR和SDRAM的两倍。在DDR的时钟频率已经达到166/200MHz的今天,再用100MHz去比较,显然意义不大。这点也请大家们注重识别,上图更多的是说明DDR-Ⅱ内外时钟的差异。究竟内部时钟由外部决定,所以外部时钟才是比较的根本基准。总之,现在大家要明确熟悉,在外部时钟频率相同的情况下,DDR-Ⅱ与DDR的带宽一样。二、 DDR-Ⅱ的新操作与新时序设计1、片外驱动调校(OCD,Off-Chip Driver)DDR-Ⅱ内存在开机时也会有初始化过程,同时在EMRS中加入了新设置选项,由于大同小异,在此就不多说了。在EMRS阶段,DDR-Ⅱ加入了可选的OCD功能。OCD的主要用意在于调整I/O接口端的电压,来补偿上拉与下拉电阻值。目的是让DQS与DQ数据信号之间的偏差降低到最小。调校期间,分别测试DQS高电平/DQ高电平,与DQS低电平/DQ高电平时的同步情况,假如不满足要求,则通过设定突发长度的地址线来传送上拉/下拉电阻等级(加一档或减一档),直到测试合格才退出OCD操作。
OCD的作用在于调整DQS与DQ之间的同步,以确保信号的完整与可靠性不过,据一些厂商的技术人员介绍,一般情况下有DQS#(差分DQS时)就基本可以保证同步的准确性,而且OCD的调整对其他操作也有一定影响,因此在普通台式机上不需要用OCD功能,它一般只会出现在高端产品中,如对数据完整性非常敏感的服务器等。2、片内终结(ODT,On-Die Termination)所谓的终结,就是让信号被电路的终端被吸收掉,而不会在电路上形成反射,造成对后面信号的影响。在DDR时代,控制与数据信号的终结在主板上完成,每块DDR主板在DIMM槽的旁边都会有一个终结电压岛的设计,它主要由一排终结电阻构成。长期以来,这个电压岛一直是DDR主板设计上的一个难点。而ODT的出现,则将这个难点消灭了。顾名思义,ODT就是将终结电阻移植到了芯片内部,主板上不在有终结电路。ODT的功能与禁止由北桥芯片控制,ODT所终结的信号包括DQS、RDQS(为8bit位宽芯片增设的专用DQS读取信号,主要用来简化一个模组中同时使用4与8bit位宽芯片时的控制设计)、DQ、DM等。需要不需要该芯片进行终结由北桥控制。 那么具体的终结操作假如实现呢?首先要确定系统中有几条模组,并因此来决定终结的等效电阻值,有150和75Ω两档,这一切由北桥在开机进行EMRS时进行设置。
在向内存写入时,假如只有一条DIMM,那么这条DIMM就自己进行终结,终结电阻等效为150Ω。假如为两条DIMM,一条工作时,另一条负责终结,但等效电阻为75Ω
两个DIMM在交错工作中的ODT情况,第一个模组工作时,第二个模组进行终结操作,等第二个模组工作时,第一个模组进行终结操作(上图可点击放大)现在我们应该基本了解了ODT的功能,它在很大程度上减少了内存芯片在读取时的I/O功率消耗,并简化了主板的设计,降低了主板成本。而且ODT也要比主板终结更及时有效,从而也成为了提高信号质量的重要功能,这有助于降低日后DDR-Ⅱ进一步提速的难度。但是,由于为了确保信号的有效终结,终结操作期将会比数据传输期稍长,从而多占用一个时钟周期的时间而造成总线空闲。不过,有些厂商的技术人员称,通过精确设置tDQSS,可以避免出现总线空闲。QQread.com 推出游戏功略 http://www.qqread.com/netgame/game/index.html 魔兽世界 跑跑卡丁车 街头篮球 水浒Q传 龙与地下城OL 征服 轩辕剑5 FIFA07 热血江湖 大唐风云 梦幻西游 武林外传 明日之星——DDR-Ⅱ与DDR-Ⅲ(二)3、前置CAS、附加潜伏期与写入潜伏期前置CAS(Posted CAS)是为了解决DDR内存中指令冲突而设计的功能。它答应CAS信号紧随RAS发送,相对于以往的DDR等于将CAS前置了。这样,地址线可以马上空出来,便于后面的行有效命令发出,避免造成命令冲突而被迫延后的情况发生,但读/写操作并没有因此而提前,仍有要保证有足够的延迟/潜伏期,为此,DDR-Ⅱ引入了附加潜伏期的概念(AL,Additive Latency),与CL一样,单位为时钟周期数。AL+CL被定义为读取潜伏期(RL,Read Latency),相应的,DDR-Ⅱ还对写入潜伏期(WL,Write Latency)制定了标准,WL是指从写入命令发出到第一笔数据输入的潜伏期,不要将它和tDQSS弄混了,后者是指DQS而不是数据。按规定,WL=RL-1,即AL+CL-1。
在没有前置CAS功能时,对其他L-Bank的寻址操作可能会因当前行的CAS命令占用地址线而延后,并使数据I/O总线出现空闲,当使用前置CAS后,消除了命令冲突并使数据I/O总线的利率提高(上图可点击放大)
设置Posted-CAS后,必须附加潜伏期以保证应有延迟,此时读取潜伏期(RL)就等于AL+CL,从中可以看出AL的值为CL+tRCD-1DDR-Ⅱ中CL最低值为3,最高为5,并且不再有x.5的设计,而AL值则为0-4。当AL设为0时,前置CAS无效,即为传统DDR模式的操作。不过前置CAS在解决命令冲突的时间也带来了新的问题——在背靠背式读取时,仍将经过AL+CL的潜伏期才能读取数据,比传统的只有CL相比,读取的延迟反而增加了。因此,AL=0是默认设置,只有在那些读写命令非常频繁的操作场合,才建议启动前置CAS功能(如服务器等),对于台式机用户,前置CAS的优点不足以抵消其带来的不利影响。
由于有了AL,在同一行中进行再读取时,在CL的基础上仍将增加AL造成的延迟,从而影响了性能三、 DDR-Ⅱ未来发展与DDR-Ⅲ1、 DDR-Ⅱ 的发展计划虽然目前多家厂商都推出了DDR-Ⅱ内存芯片,但从DDR官方组织JEDEC方面得到的信息表明,距离DDR-Ⅱ内存大规模上市还很遥远,2004年才会是DDR-Ⅱ普通的阶段。而由于三星、南亚与Micron公司的大力推广,这期间JEDEC很可能会接受DDR-400标准,目前的争执主要在于能否在DDR-I的体系下保证DDR-400的可靠性。对此(成为JEDEC正式标准),三星与南亚公司都表示了很强的信心。 笔者认为,DDR-400应该会获得认可,究竟市场上是有需要的,而让市场去等一年的时间迎接DDR-Ⅱ 400似乎并不现实。不过,多通道技术在DDR领域里的普及,可能也会改变JEDEC对认证DDR-400的想法,但要害要看多通道的性价比能不能填补这一空档,否则DDR-400就是一个最佳的选择(在完整/进阶版完稿之后又传来了Intel预备支持DDR-400的消息,可见DDR-400的前途)。
三星公司展示的DDR-333(下)与DDR-400(上)内存模组
三星是DDR-400的主推厂商,但请注重DDR-400的电压变化,它可能是引起兼容性问题的根源之一也由于多通道的出现,市场上对DDR-Ⅱ的渴望也并不大,究竟它与同频的DDR-I内存的带宽一样。而从上文可以看出,DDR-Ⅱ相对于DDR-I的不同设计很多都集中在了如何在更高的工作(时钟)频率下保证数据的可靠。只有当DDR-Ⅱ依靠自身的特有功能与设计来获得更高的时钟频率时,再配合多通道,才会真正拉开与DDR-I的距离,那时也就是DDR-Ⅱ普及的开始。但笔者猜测DDR-Ⅱ 400将像DDR-200一样,注定是一个一出生就过时的标准,DDR-Ⅱ至少要从533开始流行。不过在目前情况下,我们还不必太在意DDR-Ⅱ的进展情况,说句实话,它离我们还很远。今天的介绍只是让大家对其有一个大概的了解。明日之星——DDR-Ⅱ与DDR-Ⅲ(三)1、DDR-Ⅱ内存图赏


Micron公司的DDR-Ⅱ 533内存与DDR-Ⅱ分析/检测卡,它用来分析DDR-Ⅱ内存的工作情况,并依此对内存的内部设计进行改进,值得注重的是系统平台用的是令人怀念的Micron自己的芯片组
三星公司展示的DDR-Ⅱ 533内存模组,模组标准为PC4300,相应的,假如是DDR-Ⅱ 400将是PC3200
Elpida公司的DDR-Ⅱ内存模组,银光闪闪的CSP封装显得与众不同2、DDR-Ⅱ时代的封装技术可以肯定的是TSOP-II将在DDR-Ⅱ时代彻底退出内存封装市场。并且将会出现改良型的CSP——WLP(Wafer Level Packaging,晶圆级封装),它是比CSP更为贴近芯片尺寸的封装方法,由于在晶圆上就做好了封装布线,因此在可靠性方面达到了更高的水平。不过,外在的模样仍与现在的CSP封装差不多,WLP更多的改进是在其内部。另外值得一提的是为了应付更高容量的需求而采用的SiP封装技术,它是System-in-a-Package的缩写,有时又称之为Stacked Pakage,可以看作是一种集成封装技术。它将多枚内存芯片核心堆叠在一起,然后统一封装成一颗芯片,在有限的面积内通过充分利用空间达到容量倍增的目的。SiP并不是内存中专用的封装技术,原来是用于多种不同功能的芯片统一封装(如一颗嵌入式CPU+DRAM芯片)。
目前的SiP技术可以在CSP的基础上最多堆叠4枚内存芯片(上图可点击放大)3、DDR-Ⅲ简介DDR-Ⅲ的设计始于2001年5月,目前只有一个大概的规格。按照JEDEC的计划,DDR-Ⅲ将在2007年正式出台,数据传输率至少从667MHz开始,预取数据容量大于4bit(很可能采用RDRAM那样的8bit设计),而且工作电压比1.8V更低,寄生干扰也将进一步减少。显然,它离我们更是遥远,还不到谈论它还的时候,要知道半导体技术日新月异, DDR-Ⅲ完全有可能因此而中途改变设计。在此,我们就当个小花边新闻吧。1、 Unbuffered DIMM:无缓冲型模组,这是我们平时所用到的标准DIMM,分有ECC和无ECC两种,简称Unb-DIMM。2、 Regustered DIMM:寄存型模组,这是高端服务器所使用的DIMM,分有ECC和无ECC两种,但市场上几乎都是ECC的,简称Reg-DIMM。3、 SO-DIMM:Small Outline DIMM,小外型DIMM,笔记本电脑中所使用的DIMM,分ECC和无ECC两种,DDR-Ⅱ时代仅有无ECC的型号。4、 Micro-DIMM:微型DIMM,供小型笔记本电脑或手持式设备使用的DIMM。5、 Mini-DIMM:DDR-Ⅱ时代新出现的模组类型,它是Regustered DIMM的缩小版本,用于刀片式服务器等对体积要求苛刻的高端领域。
各类型内存DIMM对比表
三星公司DDR-333标准的SO-DIMM,容量高达512MB本文将重点讲一下Unb与Reg-DIMM,和未来模组技术的发展一、Unb与Reg-DIMM的区别Unb与Reg-DIMM的最大区别在于模组上有无寄存器。在高容量模组上,内存芯片数量很多,而且在需要大容量内存的工作场合,内存模组的安插数量也是很多的,这使命令与寻址信号的稳定性受到了严重考验。很多芯片组的资料中都说明只有使用Reg-DIMM才能达到标称的最高内存容量,从这点就能猜到寄存器的作用——稳定命令/地址信号,隔离外部干扰。
Reg-DIMM工作示意图,命令与地址信号通过寄存器中继传输至内存芯片在工作时,命令地址信号会先送入寄存器进行“净化”并进入锁存状态,然后再发送至内存芯片,芯片中的数据则不经过寄存器而直接传向北桥。由于要经过中继传输,所以内存操作的时序也会因此而增加一个时钟周期,这是它所带来的一个弊端,但在高端应用中,内存系统的稳定可靠的重要性远在性能之上,所以Reg-DIMM一般只用于高端市场,并且需要芯片组的支持才行(主要是Reg所引起的时序变化)。而在高端设备中,ECC基本都是必须的,因此市场上的Reg-DIMM也都无一例外的是ECC型模组,虽然也有无ECC的Reg-DIMM设计标准。另外,为了保证内存工作时钟的稳定,Reg-DIMM上还要有一颗PLL对时钟信号对主板发来的时钟信号进行跟踪/锁定。在SDRAM时代,这并不是必须的设计,但到了DDR时代,由于对时钟的敏感性,PLL成为了必备元件。
DDR内存模组的结构图,寄存器与PLL是它相对于Unb-DIMM的最大不同现在再回头看看Unb-DIMM,就很明白了。它要害就少了寄存器,但为什么不称之为Unregistered-DIMM呢?其实,Buffered与Registered是Reg-DIMM的两种工作模式,前者在Reg-DIMM上并不常用,它是以时钟异步方式工作的,输出信号的再驱动不与时钟同步,Registered模式下输入信号的再驱动则与时钟同步。显然,Buffered模式下的性能要更低一些。不过,从原理上讲Registered模式也是一种缓冲操作,只是与时钟同步而已。在SDRAM的Reg-DIMM上,Buffered与Registered模式通过REGE信号控制,但到了DDR SDRAM-DIMM时代,可能由于性能的原因Buffered模式被取消了。
德国Infineon公司推出的容量高达2GB的PC2100 Reg-DIMMQQread.com 推出游戏功略 http://www.qqread.com/netgame/game/index.html 魔兽世界 跑跑卡丁车 街头篮球 水浒Q传 龙与地下城OL 征服 轩辕剑5 FIFA07 热血江湖 大唐风云 梦幻西游 武林外传 没有我不行——内存模组(下)二、DIMM引脚的基本设计讲完Unb-DIMM与Reg-DIMM的不同之后,现在我们来看看DIMM引脚上的不同。其实,从内存芯片的引脚上就能推断出一些DIMM的引脚,因为芯片最终要通过DIMM来与主板打交道的。首先,DIMM肯定要有64个引脚用来数据的传输,而且要有Ax地址线、L-Bank地址线、片选、数据掩码、电源、RAS、CAS……等信号,另外,ECC型与Reg型DIMM要有额外的标定引脚,下面我就以SDRAM和DDR SDRAM为例,分Unb-DIMM和Reg-DIMM来介绍一下DIMM都包含有哪些的引脚。
(上图可点击放大)从上面的引脚信号列表中,大家应该能了解到DIMM的大体情况了。其中很多信号定义是不是非常熟悉?从中可以看到,在DDR SDRAM时代已经为8个L-Bank做好了预备,但业界显然没有利用到它,不光是内存厂商,DDR芯片组中似乎没有支持8个L-Bank的设计。还有就是CS信号,从SDRAM到DDR,都有4个CS的设计,但目前的DIMM还都是双P-Bank的设计,不同的是,SDRAM-DIMM上,4个CS是必须的,两个CS对应一个P-Bank芯片集,但到了DDR时代,可能是技术与工艺的进步,一个CS就控制了一个P-Bank。总之,当我们了解了芯片的引脚设计后,对DIMM的引脚组成也就不再生疏。有爱好的读者,可以自行深入研究。
三、QBM型DIMM之所以在前文没有介绍四倍带宽内存(QBM,Quad Band Memory),就是因为不是针对芯片的技术,而针对DIMM的技术。它诞生于DDR时代,是Kentron公司为了解决DDR带宽提供困难而提出的设计方案。主要的思路就是让DIMM上的两个P-Bank交错工作,而交错的时钟周期为原始时钟的1/4,即相位相差90度。
(上图可点击放大)QBM的工作时序图,第二个P-Bank的工作时钟与第一个P-Bank相差90度(1/4周期),这样在第一个P-Bank时钟的高/低电平中部就是第二个P-Bank的触发点,两者都是DDR传输,从而在一个时钟周期内完成4次数据触发,实现四倍带宽为了控制两个P-Bank中同一位置的芯片交错工作,模组上要为每组芯片(在QBM模组上,一个P-Bank位于一侧,两个P-Bank中位置相对的芯片为一组)设置一个开关,以控制不同P-Bank间的通断。并且还要为延迟1/4周期的P-Bank提供一个PLL以保证相位差的准确性。QBM的设计是非常巧妙的,经过对现有的DDR模组的改装,配合新的芯片组即可将带宽提高一倍,有点类似于32bit RIMM,在一个模组上实现了双通道的功能,只是QBM不是双通道并发,而是双通道交错,通过更高的传输频率实现高带宽。但是新增加的开关与PLL元件将增加一定的成本,不过与其所能提供的带宽相比,还是比较划算的。
(上图可点击放大)
Infineon的采用TSOP-II堆叠封装的模组,容量高达2GB
Tessera公司为高容量模组开发的4枚芯片堆叠装配技术μZ Package新闻热点
疑难解答