FB-DIMM内存性能初探 处理器、IO和内存是影响一个平台性能的三个关键因素。在平衡的平台上,这三个方面的性能应该相互匹配,不应该有过于突出或者过于“瘸腿”的方面,这也就是Amdahl定律的中心思想。 最近几年,CPU技术迅速的发展,除了主频快速提升之外,还通过增加超线程技术、多核心技术等来提升处理器的性能;已经使用了十余年的PCI总线也开始被PCI-Express总线取代,IO性能更高,配置也更灵活了;显然内存技术也需要作相应的改进才能适应其它两个方面的改变。 首先新的内存技术必须可以解决容量和带宽的问题,另外还要保持较为理想的内存延迟。现有服务器平台上所使用的DDR/DDR2内存均为并行设计,随着内存工作频率越来越高,抑制多条并行信号线之间的干扰变得越来越困难。一般的解决方法是降低每通道所支持的DIMM数量,但是这同服务器平台上需要越来越大容量的内存的发展趋势是不符的。虽然现在单条内存模组的容量越来越大,但是依然无法抵消有限的每通道DIMM数量的限制。
为什么不改进内存控制器让它能够支持更多的通道呢?现在的并行内存通道每个接口的针脚数量已经达到了240 pins,如果继续增加内存控制所支持的内存通道数量,相关电路的复杂程度会使得整个平台的成本提升到无法接受的地步。 其次,新的内存技术升级换代成本不能太高,自身的成本也不能有明显的提升,否则无法应用于主流平台上。为了满足这个需求,新的内存技术应该尽可能少的影响现有内存厂商,特别是内存芯片厂商,这样才能获得更广泛的支持,使得新的内存技术标准得以存活下去。 第三,新的内存技术标准必须能够满足未来10年左右的服务器、存储、工作站和通讯等平台的需求,提供足够的可靠性、可用性和适用性(RAS)。 FB-DIMM内存技术的优势 FB-DIMM(Fully-Buffered DIMM)技术借助于串行技术,在现有DDR2内存模组上成功的实现了上述的设计目标。如下图所示,它在内存控制器接口和现有的内存模组接口之间插入了一个缓冲部件,这个缓冲部件到DRAM芯片之间的接口兼容目前的DDR2技术规范,因此可以直接现有的DDR2内存芯片来装配FB-DIMM内存模组(同样的原理,未来FB-DIMM可以采用DDR3芯片,以满足服务器平台今后发展的需要)。内存控制器和缓存部件之间则采用了点对点串行接口技术,而不再是现在的共享并行接口。 FB-DIMM基本工作概况 FB-DIMM内存所采用的缓冲部件被称为AMB(advanced memory buffer,高级内存缓冲)的芯片,Intel、IDT、NEC等厂商均已经开始生产这种芯片。这颗芯片的主要作用是响应内存控制器的命令,它将内存控制器发出的指令传送给DRAM。它实际上担当了串行和并行转换的角色,因为它的存在,可以在FB-DIMM上直接使用现有的DRAM芯片。这种设计思路可以大大降低推广这种新内存技术的阻力,因为它不需要内存芯片厂商做任何的改变,而之前从SDRAM向DDR或者Rambus转变的过程则需要内存芯片厂商的支持。更重要的是它为今后的内存技术升级提供了较大的空间,比如未来DDR3投入应用之后,FB-DIMM技术也可以通过采用DDR3 DRAM芯片而“升级”。 而且在FB-DIMM的宣传材料中出现了向后兼容的字样,也就是说现有的FB-DIMM平台很有可能可以直接使用FB-DIMM DDR3内存——因为内存控制器是通过AMB芯片同DRAM芯片交互的,实现这一点并非不可能。 应用FB-DIMM技术的平台最高可支持6个通道,每通道可支持8 DIMMs,每DIMM可支持2 Ranks内存模组。目前最高容量的FB-DIMM内存为4GB,因此理论上该平台最高可配置192GB的内存。从Intel已经发布的Intel 5000系列芯片组来看,他们最多支持4个通道,每通道支持4个DIMMs,理论上可配置64GB内存。不过,就我们目前所看到已经发布的服务器而言,大部分是配置了8 DIMM,因此最大内存容量为32GB。每个FB-DIMM通道的数据输出带宽可达6.7GB/s,6个通道总共可以提供40.2GB/s的内存带宽。即便是现在的Intel 5000P芯片组也可以提供26.8GB/s。 可见,FB-DIMM技术大大提高了服务器平台内存容量和带宽,为X86服务器进入更高端应用奠定了基础。 FB-DIMM布线优势 每个FB-DIMM通道仅需要69条信号线即可,同现在的并行DDR2通道需要240条信号线相比,其布线的复杂程度将会大大的降低。上图是支持DDR2内存主板的布线(左)和支持FB-DIMM内存主板的布线(右),在支持DDR2 Registered DIMM的主板上,1个通道需要两个Routing层用于信号线,另外还需要一层用于供电,而在支持FB-DIMM的主板上,2个通道则仅需要两个Routing层即可(供电亦包括在其中)。很明显,这样会大大简化主板布线,降低主板设计难度,缩短产品研发周期,提升生产率。 FB-DIMM技术对于操作系统和应用程序是透明的,因此现有的操作系统和软件均可直接在应用了FB-DIMM技术的硬件平台上运行。 FB-DIMM技术细节 FB-DIMM技术,更确切的说是一种新的内存架构,它主要用于解决服务器平台对于内存容量、带宽等方面提出的更高的需求。从内存系统架构的角度来看,FB-DIMM同Registered DIMM和Unbuffered DIMM有着很大的不同。FB-DIMM协议采用了很多新技术,其中支持封包数据格式的串行链路接口和专用的读/写路径是其关键点。点对点差分信号互联和数字去重(de-emphasis)是FBD通道链路的关键点。利用数据流进行时钟恢复(Clock recovery)是FBD时钟的关键点。FB-DIMM支持时钟重同步和重采样操作。CRC (Cyclic Redundancy Check,循环冗余码校验)同数据流一并传输,可确保在高速数据传输过程中的可靠性。Failover机制支持带有动态IO故障的系统运行。另外,FB-DIMM采用了菊花链方式连接,也就是AMB和AMB之间、AMB和Host之间、AMB和DRAM之间都是点对点互联。 这个章节的名称虽然是《FB-DIMM技术细节》,但是我们无意也不可能在短短一个章节中面面俱到,因此我们将通过了解几个关键词,来对于这种新的内存技术做更进一步的了解。 关键词之一:频率 FB-DIMM内存系统概要 在FB-DIMM技术中有多个需要了解的频率参数,包括时钟频率、DRAM时钟频率、DRAM数据传输率、通道传输率和通道单元间隔(channel unit interval)。所有的频率参数之间具有一定的比例关系。外部时钟源为AMB和Host提供基准时钟输入信号,这个频率相对于通道和DRAM频率要低的多。AMB倍增了外部时钟输入,为DRAM的运行提供时钟信号。DRAM数据传输率两倍于DRAM时钟输入信号——这也就是DDR(Double data rate)的基本工作模式。通道速度则由单元间隔(UI:Unit Interval)来衡量,单元间隔也就是在FBD通道中电源转换的平均时间间隔。它六倍于DRAM数据传输率。 因此如果外部时钟源为166MHz(6ns),那么AMB则为DRAM输出333MHz(3ns)的信号源,很容易计算FBD通道单元间隔为250 ps(皮秒,1ns=1000ps),也就是4.0Gbps的传输率。 FB-DIMM主要频率关系
|
UI |
CLK_DRAM |
CLK-REF |
Frequency |
DDR2-533 |
312.5ps |
266MHz |
133MHz |
3.2Gb/s |
DDR2-667 |
250.0ps |
333MHz |
166MHz |
4.0Gb/s |
DDR2-800 |
208.3ps |
400MHz |
200MHz |
4.8Gb/s |
在FB-DIMM平台设计中,为每个AMB和Host提供的基准时钟信号并没有考虑相位调节的问题。这主要是其时钟同步是通过FB-DIMM内存子系统的外部基准时钟和通道数据流来实现的——这一点同PCI-Express总线的实现方式是相同的。这种方式也造成了在没有数据通讯的时候,使得发射器和接收器之间不同步,在FBD通道内通过引入最小转换密度来解决这个问题。 时钟信号的矫正 关键词之二:接口 AMB接口功能 FB-DIMM中的关键部件为AMB(Advanced Memory Buffer,高级内存缓冲)和它的所有接口。它们包括2个FBD链路(links)接口,1个DDR2通道接口和1个SMBus接口。FB-DIMM采用了菊花链拓朴结构,提供了良好的扩展性,每通道可支持单DIMM到8 DIMM扩展。 FB-DIMM通道具有双向通讯路径,南向(south bound)链路和北向(north bound)链路,均采用物理差分信号,分别代表不同方向的信号传输。南向指的是从主控制器向DIMM的方向,北向则相反。南向主要用于传输到DRAM的命令和在DRAM中寻址并且向其中写入数据。而北向则用于从DRAM读取的数据。南向输入链路宽度为10 lane,北向输入链路宽度为14 lane。 AMB所提供的DDR2通道可直接连接到DDR2 SDRAM。DDR2通道支持2 ranks,每rank包含8 bank,可操作16 row/column请求,具有64条数据信号线和8条校验位信号线。 AMB支持SMBus接口,这也就意味着它允许系统不必通过FBD链路也能访问配置寄存器。不过,AMB并非SMBus的主控制器,仅是从属接口,其工作频率为100 kHz。这个接口在启动系统过程中、诊断链路故障的时候非常的有用,对AMB所必需的。 关键词之三:帧和带宽 南向和北向具有不同的数据帧格式和帧格式容量,其中北向的读取数据传输率两倍于写入数据传输速率。采用这种非对称设计的主要原因是因为实际应用中读多写少。 帧格式 南向包括10对差分信号线(20条物理信号线),它采用了10x12 (10 IO [或者 Lane] x 12 IO switching)帧格式,可以传送10x12 bit 信息每DRAM时钟。一个南向帧被分为三个命令slot,如上图所示,Command slot A传送带地址的命令。Command slot B 和 C 传送带抵制的命令或者向DRAM的写数据。 写数据通过Command+Wdata帧在FBD南向命令和数据连接上传输。每个FBD通道内的Command+Wdata帧可以传输72 bits数据。两个Command+Wdata帧则可以传输144 bits数据,这同单个DRAM命令时钟周期内传输的数据量(18 Bytes)是相匹配的。单通道内可以产生1个DRAM突发8传输或者在两个连续通道可以产生1个突发4传输,均可以提供72 Bytes的数据(64 Bytes数据 + 8 Bytes ECC数据)。南向命令和数据连接的峰值理论吞吐量将只有单DRAM通道的一半。比如,当使用DDR2 533 DRAM时,南向命令和数据连接峰值理论带宽为2.133 GB/s。 北向包括14对差分信号线(28条物理信号线)。它采用了 14x12 (14 IO [或者Lane] x 12 IO switching)帧格式,每个DRAM时钟可以传输14x12 bit信息。一个北向帧可以分为两个部分,均可以从DRAM读取数据。 FBD通道的北向数据链路用于传输读取到的数据。每个FBD北向数据帧可传输144bits数据,也就是18Bytes,正好是单个DRAM命令时钟周期内所能传输的包含有ECC数据的容量。14单通道可完成1个DRAM 8突发,相邻的两通道可完成1个DRAM 4突发,这两种方式均可提供72 Bytes的数据(64 Bytes数据 + 8 Bytes ECC数据)。北向数据链接将会同单个DRAM通道的峰值理论吞吐量相同。比如,当使用DDR2 533 DRAM时,北向数据连接峰值理论带宽是4.267 GB/s。 单FBD通道的峰值理论吞吐量则是北向数据连接峰值理论吞吐量与南向数据连接峰值理论吞吐量之和。单FBD通道的峰值理论吞吐量是单DRAM通道的1.5倍。比如,当使用DDR2 533 DRAM时,DDR2 533通道的峰值理论吞吐量为4.267 GB/s,FBD-533通道的峰值理论吞吐量为6.4 GB/s。 关键词之四:FBD通道延迟 当不使用可变读取延迟(Variable Read Latency)功能的时候,FBD通道中的任何一个FBDIMM的延迟同其它的FBDIMM是相同的。当更多的DIMM被加入到FBD通道时,从每个DIMM中读取数据的延迟会相应的增加。这主要是因为FBD通道是由多个基于点对点内部互联DIMM组成的,内存请求要必须要经过N-1个缓冲才能到达第N个缓冲。所以4 DIMM通道配置的空闲读取延迟要被1 DIMM通道配置的长一些。采用可变读取延迟功能则能够使得靠近Host的DIMM的延迟更短一些。 关键词之五:热插拔(Hot-add和Hot-remove) FBDIMM通道本身并不具有监测通道内是否增加了FBDIMM的机制,还是需要依靠系统的内存控制器来对于新添加的FBDIMM进行初始化。然后执行一个热添加复位操作,新的FBDIMM就可以同原来的FBDIMM一起协同工作了。拆卸FBDIMM的之前,也是由Host向最后一个FBDIMM发出一个快速复位操作使其脱离工作状态,然后即可进行拆卸了。需要注意的是,虽然是“热插拔”,但是实际上在安装或者拆卸FBDIMM的瞬间,FBDIMM插槽上的供电是会断掉的,如果实现这样的功能就是系统平台所要考虑的范畴了。 FB-DIMM内存外观以及物理规格 FB-DIMM外形尺寸 DDR2 DIMM外形尺寸 我们参考了三星公布的产品规格文档,并且分别将FB-DIMM和Registered DDR2 DIMM的外观尺寸做了对比。Registered DDR2 DIMM外形尺寸为133.35mm x 30mm,而FB-DIMM外形尺寸为133.35mm x 30.35mm。虽然前面我们了解到FB-DIMM实际上有效信号线仅需要69条,但是现在的FB-DIMM依然是240pin。两者内存模组防呆缺口的位置不同,FB-DIMM位于67mm和51mm交界处,而DDR2 DIMM位于63mm和55mm交界处。 两者的内存芯片的分布方式也不一样,比如均采用18颗内存芯片的内存模组,Registered DDR2 DIMM一般是正反两面各自有9颗,而FB-DIMM则是在一面为8颗,另外一面10颗,芯片数量较少的一面还要安装AMB芯片。
从前面的介绍来看,AMB芯片是一颗非常繁忙的芯片,整条FB-DIMM模组的所有指令、数据的进出都要经过这颗芯片。对于一个通道内多个DIMM的情况,最靠近内存控制器的DIMM的AMB芯片是最繁忙的。在这种情况下,这颗芯片的发热量不容小觑,因此所有的FB-DIMM内存模组都需要为AMB安装散热片来散热,不同的厂商提供的不同的解决方案,比如英飞凌仅仅为AMB安装了单独的散热片,而三星则采用了全包的散热片。 根据Kingston提供的资料显示,FB-DIMM的耗电量比DDR2 Registered DIMM高(约3-5瓦每支),这对于内存而言是个很高的数字。假设在安装了8条FB-DIMM的系统内,所增加的功耗就是24-40瓦! FB-DIMM是Intel又一次在内存技术方面试图引导行业的尝试,但这次Intel的情况和策略均同几年前推广Rambus时不同。首先,FB-DIMM技术并不涉及内存芯片的标准,更确切的说它是基于现有内存技术基础上的一种新的应用方式,因此并不需要诸如三星、英飞凌等半导体巨头的支持与否;其次,FB-DIMM已经成为了JEDEC标准,并且得到了主要的内存模组厂商的支持;第三点,Intel只是计划在其Xeon平台上使用,并不会涉及到PC、笔记本,因此波及面不会太大,因此推广的目的更容易达到。 当然,FB-DIMM内存也存在一定的问题,它需要一颗AMB芯片,根据服务器厂商反映,目前FB-DIMM内存的价格比主流的Registerred ECC DDR2内存高20-30%。另外,AMB芯片会带来3-5W的额外功耗,对于整个系统来说则是20-40W的增长幅度,因此无论是系统供电还是系统散热都是需要更多投入。 我们IT168评测中心通过对于一款三星FB-DIMM内存和一款英飞凌FB-DIMM内存分别在Intel 5000P芯片组和Intel 5000V芯片组上的表现进行了考察。在性能上,他们可以提供满足新一代双核Xeon处理器的需求,不过我们的测试结果无法区分4通道和2通道FB-DIMM配置的内存子系统的性能差异。在兼容性上,这两款内存均可以配合不同的芯片组工作,可以很好的支持现有的Windows 2003操作系统、应用软件。 ECC是“Error Checking and Correcting”的简写,中文名称是“错误检查和纠正”。ECC是一种能够实现“错误检查和纠正”的技术,ECC内存就是应用了这种技术的内存,一般多应用在服务器及图形工作站上,这将使整个电脑系统在工作时更趋于安全稳定。
要了解ECC技术,就不能不提到Parity(奇偶校验)。在ECC技术出现之前,内存中应用最多的是另外一种技术,就是Parity(奇偶校验)。我们知道,在数字电路中,最小的数据单位就是叫“比特(bit)”,也叫数据“位”,“比特”也是内存中的最小单位,它是通过“1”和“0”来表示数据高、低电平信号的。在数字电路中8个连续的比特是一个字节(byte),在内存中不带“奇偶校验”的内存中的每个字节只有8位,若它的某一位存储出了错误,就会使其中存储的相应数据发生改变而导致应用程序发生错误。而带有“奇偶校验”的内存在每一字节(8位)外又额外增加了一位用来进行错误检测。比如一个字节中存储了某一数值(1、0、1、0、1、0、1、1),把这每一位相加起来(1+0+1+0+1+0+1+1=5)。若其结果是奇数,对于偶校验,校验位就定义为1,反之则为0;对于奇校验,则相反。当CPU返回读取存储的数据时,它会再次相加前8位中存储的数据,计算结果是否与校验位相一致。当CPU发现二者不同时就作出视图纠正这些错误,但Parity有个缺点,当内存查到某个数据位有错误时,却并不一定能确定在哪一个位,也就不一定能修正错误,所以带有奇偶校验的内存的主要功能仅仅是“发现错误”,并能纠正部分简单的错误。
通过上面的分析我们知道Parity内存是通过在原来数据位的基础上增加一个数据位来检查当前8位数据的正确性,但随着数据位的增加Parity用来检验的数据位也成倍增加,就是说当数据位为16位时它需要增加2位用于检查,当数据位为32位时则需增加4位,依此类推。特别是当数据量非常大时,数据出错的几率也就越大,对于只能纠正简单错误的奇偶检验的方法就显得力不从心了,正是基于这样一种情况,一种新的内存技术应允而生了,这就是ECC(错误检查和纠正),这种技术也是在原来的数据位上外加校验位来实现的。不同的是两者增加的方法不一样,这也就导致了两者的主要功能不太一样。它与Parity不同的是如果数据位是8位,则需要增加5位来进行ECC错误检查和纠正,数据位每增加一倍,ECC只增加一位检验位,也就是说当数据位为16位时ECC位为6位,32位时ECC位为7位,数据位为64位时ECC位为8位,依此类推,数据位每增加一倍,ECC位只增加一位。总之,在内存中ECC能够容许错误,并可以将错误更正,使系统得以持续正常的操作,不致因错误而中断,且ECC具有自动更正的能力,可以将Parity无法检查出来的错误位查出并将错误修正。 目前一些厂商推出的入门级低端服务器使用的多是普通PC用的SD RAM,不带ECC功能,在选购时应该注意这个指标。 1:你自己对比,我感觉好像不是一个概念! 2:是的 |