由于增加了一枚芯片,FB-DIMM模组内总共就要用到三种不同用途的电压,驱动DDR2内存芯片的1.8V电压,内存“命令/地址”信号的终结器则要用到0.9V电压,至于缓冲芯片本身必须用到1.5V驱动电压才行。
因此,FB-DIMM模组的供电设计会比现行DDR/DDR2模组要复杂一些。与之对应的是功耗问题,非常奇怪的是,安装位置不同但规格参数完全相同的FB-DIMM模组居然消耗不一样的电能。第一条模组典型功耗为3.4W,而通道内的最后一条模组一般只需消耗2.4W功耗,这种情况与缓冲控制芯片的任务指派机制有关,第一条模组的缓冲芯片必须承担更多的数据转发和合并工作,相应的,缓冲控制芯片的任务负担也多一些,多消耗电能并不奇怪。
缓冲芯片工作在很高的频率上,芯片发热量必然比较可观,有鉴于此,Intel也对它的散热方案作出参考性的定义。利用一个固定在内存PCB板上的弹簧片来夹紧散热片,这一方案显然比较简单,FB-DIMM内存厂商也完全可以发展出其他的方案,比如说像现在不少高速DDR500内存一样,将模组两面用金属散热片包覆起来,散热效果估计会更好些。
八、前途无量的FB-DIMM
毫无疑问,FB-DIMM近乎是一种梦幻级的内存技术,在现有技术基础上实现跨越式的性能提升,成本也相当低廉。更重要的是,FB-DIMM并不是什么空中楼阁,到明年我们便可看到FB-DIMM内存正式在Intel服务器中大放光彩。单从技术角度出发,我们也许会发现FB-DIMM谈不上有多少独创的东西:DDR2内存芯片、类似PCI Express的串行总线,但它更多是一种创新思想的产物,正因为如此,构建于成熟技术基础上的FB-DIMM才拥有如此的魅力。相对昂贵的XDR内存,FB-DIMM平民本质注定了它必将成为最终的胜利者。
Intel表态,FB-DIMM将专注于IA架构服务器领域,PC平台仍然按照DDR2、DDR3按部就班地升级,是否将FB-DIMM引入暂无结论。不过,廉价、易于实现的FB-DIMM注定有这样的发展潜力,只要Intel愿意,让PC同样享有FB-DIMM技术易如反掌,即便只用到4通道设计,FB-DIMM的效能也将超出DDR2系统两倍之多,性能优势极其明显,凭借此举Intel便可在竞争中占据主动地位。而这势必反过来影响CPU的设计,为配合内存带宽的大幅提升,CPU前端总线也应进行相应的速度扩展,甚至可考虑直接转向串行总线(目前CPU前端总线均为64位并行结构),以此打造的全新计算机系统,将现有平台远远甩在后头。Intel没有对外界透露FB-DIMM是否会将应用领域拓展,但我们相信,这样的可能性完全存在。
未来的内存之战注定会在FB-DIMM与Rambus XDR之间展开,现行DDR2系统终结于2007年,而DDR3大约只能用到2010年,在这之后,DDR体系很难有进一步的提升空间,朝向窄位或者串行方向发展乃是大势所趋。从性能而论,全新架构的XDR也许会有更大的优势,但高成本再次成为其致命弊端。廉价、平滑升级的FB-DIMM拥有很大的胜算,再考虑到FB-DIMM为Intel自己的杰作,我们几乎可以断定它将成为传统DDR体系的终结者。
九、服务器模组中的ECC和Registered
服务器所承担的都是关键性任务,往往要求24小时×365天的不间断运行,而且不允许中途故障频出或者频繁重启,对可靠性和稳定性两项指标要求极为苛刻。但PC机就简单得多,系统崩溃重启即可,每天开机时间多数不超过10小时。截然不同的应用实际决定了二者在内存技术上的差异,服务器内存拥有ECC和Registers功能,而针对PC的普通内存条则没有这两项技术,那么它们究竟起到什么作用呢?
ECC校验功能
ECC校验功能大家应该比较熟悉,在许多地方都有它的踪迹。ECC功能所起的作用就是检查数据在传输过程中是否出错,一旦发现接收到的数据错误就立刻将它抛弃,并命令对方重新发送一次。这种机制可以有效减少服务器的故障率,倘若数据在传输中出错却没被检查出来,CPU使用错误的数据后很可能出现更严重的错误,造成系统意外崩溃的情形。虽然在日常应用中这种情况极少出现,但服务器在高负载、长时间不间断运行的状态下,数据出错就难免了,因此对这些领域来说,内存模组拥有ECC校验功能是必不可少的。
ECC的实现原理较为简单,它在每个字节中增加一个校验字位,并以此为基础来判断数据正确与否。我们可以看到,普通DDR/DDR2内存模组都为64bit位宽,而ECC模组的位宽达到72bit,多出的8bit其实就是校验位。另外,我们必须明确一个概念,ECC只能对数据包进行检查,判断数据是否正确,如果发现错误便让对方重发,而不是直接修复数据。目前,具有错误自动修复功能的内存只有在某些大型计算机、军用战机、人造卫星、空间探测器、火星车等高精尖设备中才会用到。
ECC功能由模组中附加ECC校验芯片来实现,但要让ECC发挥作用还离不开内存控制器的支持,目前针对服务器的芯片组均可支持该项特性。一般ECC校验只能检查出1bit的数据错误,但如果内存控制器设计得足够强大,ECC机制也可以侦测到一个字节数据中多个比特位同时出错的情形。
Registers功能
Registers通常与ECC概念被一并提起,不少人甚至认为二者都是纯粹的错误校验。其实,Registers的概念与ECC大不相同,它指的是信号的重新驱动(re-driving)过程—在很多时候,内存中保留的数据经过多次刷新之后有可能出现失真,代表二进制数据的电平信号发生偏差。一旦出现这种情况,很容易导致数据传输出错的情形,而Registers所起到的其实是一个事前预防的作用。拥有Registers功能的内存模组,可以通过重新驱动控制信号来改善内存的运作,提高电平信号的准确性,有助于保持系统长时间稳定运作。不过,因为Registers的信号重驱动需花费一个时钟周期,延迟时间有所增加,因此它的实际性能会稍低于普通内存,相当于以性能换取稳定性。
Registers功能同样要由专门的芯片实现,它承担信号重驱动的控制职能。由于工作方式不同,有无Registers功能的两种模组是不能混用的。
ECC Registers功能的168-pin SDRAM,图中上部方框所示为Registers芯片。