Felix

技术源于积累,成功始于执着!

DDR扫盲——single rank与dual-rank

0
阅读(342) 评论(0)

一般来讲,一条内存总线的data宽度是64bits,也就是说总线上有64条道,每条道上一次传送1位数据。

DIMM上的每个内存颗粒,提供4位、8位或者16位数据,来组成这64位数据(data word)。提供4位数据的芯片记作x4,提供8位数据的记作x8(即x4、x8 and x16 Configuration)据此,要组成一个64位的word就需要16片x4的芯片或者8片x8的芯片(没有x4和x8的芯片混搭的情况)。所以,一条DIMM上一般至少有8颗内存颗粒(x16的用的比较少),排列在DIMM的一面或两面上。标准的DIMM的每一面有足够的空间容纳第9颗芯片,这第9颗芯片用来存储4bits或8bits的ECC.

如果1根ECC DIMM的9颗芯片都位于DIMM的同一面,就叫做single-sided(单面)。如果9颗芯片分布在DIMM的两面,就叫做double-sided(双面)。

1根 single-sided x8 ECC DIMM,和1根 double-sided x4 ECC DIMM,产生72bits数据(64bits data+8 bits ECC)。前者单面8颗芯片,后者双面,每面8颗共16颗芯片。两者都只用1个片选信号用来激活DIMM上的所有芯片。相反,1根 double-sided x8 DIMM 要求有2个片选信号来激活DIMM上的芯片来访问72-bit的block.(总结得出,1个片选信号对应72bits data,这样才能控制72bit的数据齐进齐出,对吧)。

image.png

 作为对single-sided和double-sided的补充,DIMM还被分为single-rankdouble-rank(也就是我们在内存的lable上经常能看到的1R,2R)。内存的rank的定义,是指在DIMM上通过一部分或者所有的内存颗粒产生的一个64-bit的area或者说block。对ECC DIMM来说,一个内存rank有72个数据位(64 bits data+8 bits ECC).

1根single-rank ECC DIMM (x4 or x8)为了产生72bits的block要动用到它身上所有的内存芯片,这些芯片被同一个片选信号控制。而1根double-rank ECC DIMM可以产生2个block的72bits数据,但需要2个片选信号。这两个片选信号是交错的,因此两组芯片(被同一片选信号控制的芯片为1组)不用争抢内存总线。

另外还有quad-rank的DIMM,由4个片选信号控制4组芯片。这4个片选信号也是交错的。(4R的DIMM一般用在server上面)。(single rank的DIMM与double-rank的DIMM在实际使用中相比较,1R的有优点。有些平台对内存的支持,不仅仅在内存容量上有限制,还在rank上也有限制。像Intel的E7320和E7520就限制在8 rank.平台虽然一共有8个内存插槽,但是如果用了两对2GB double-rank的内存,就已经达到了8 rank的上限(2对,共4根内存,每根有两个rank)。这时,纵使还有4个内存插槽空着,也不能在往上升级,这才只有8GB的内存在使用。如果,换成4对2GB single-rank的内存,同样是达到8 rank的上限,可是内存容量却达到了16GB。差距还是很大的哦!)

芯片组把每个rank当作一个在内存总线上的electrical load。对于较慢速度的总线,load的数量并不对总线纤毫的完整性产生负面影响。但是对于速度较快的总线来说,比如DDR2-667,芯片组可以驱动的load是有限的。为了补偿,现在的芯片组提供多个内存总线。