数据存储产业服务平台

3.3.1 Chipkill内存技术

3.3.1  Chipkill内存技术

Chipkill内存最初是由20年前的IBM大型机发展过来的,Chipkill是为美国航空航天局(NASA)的“探路者”探测器赴火星探险而研制的。它是IBM公司为了弥补目前服务器内存中ECC技术的不足而开发的,是一种新的ECC内存保护技术(HP也有新的ECC内存技术,本章后面将介绍)。

ECC内存技术虽然可以同时检测和纠正单一比特错误,但如果同时检测出两个以上比特的数据错误,则无能为力。但基于Intel处理器架构的服务器的CPU性能以几何级的倍数提高,而硬盘驱动器的性能同期只提高了5倍,因此为了保证正常运行,服务器需要大量的内存来临时保存从CPU上读取的数据。这样大的数据访问量就导致单一内存芯片在每次访问时通常要提供4(32位)或8(64位)字节以上的数据。一次性读取这么多数据,出现多位数据错误的可能性会大大提高,而ECC又不能纠正双比特以上的错误,这样就很可能造成全部比特数据的丢失,系统就会很快崩溃。IBM的Chipkill技术是利用内存的子结构方法来解决这一难题的。

Chipkill内存子系统的设计原理是这样的:在Chipkill技术支持下,单一内存芯片无论数据宽度是多少,只有一个给定的ECC识别码,它的影响最多为一比特。举个例子来说明,如果使用4比特宽的SDRAM,4比特中的每一位的奇偶性将分别组成不同的ECC识别码,每个ECC单元可单独用一个数据位来保存,也就是说这些识别码分别保存在不同的内存空间中。因此,即使整个内存芯片出了故障,每个ECC单元也将最多出现一比特坏数据。出现这种情况完全可以通过ECC进行逻辑修复,从而保证了内存子系统的容错性,保证了服务器在出现故障时,有强大的自我恢复能力。

Chipkill内存控制器所提供的存储保护在概念上和具有校验功能的磁盘阵列类似。在写数据的时候,把数据写到多个DIMM内存芯片上。这样,每个DIMM所起的作用和存储阵列相同。如果其中任何一个芯片失效了,它只影响到一个数据字节的某一比特,因为其他比特存储在另外的芯片上。出现错误后,内存控制器能够从失效的芯片重新构造“失去”的数据,使得服务器可以继续正常工作。采用这种Chipkill内存技术的内存可以同时检查并修复4个错误数据位,进一步提高了服务器的实用性。

与ECC技术相比,Chipkill内存技术更加有效,提高效率几乎达100倍,它提供对每个DIMM内存芯片纠正4比特错误的能力。如果内存发生错误,Chipkill将自动平稳地让出错的内存芯片离线,而服务器继续保持正常工作。

Chipkill内存技术与ECC技术一样,不仅原来的SD内存可以支持,现在主流的DDR内存也对它提供了支持。由于Chipkill内存技术是通过内存控制器提供的,所以可以在标准的ECC DIMM内存上实现,并且对于操作系统是透明的。在IBM x系列中的x445(如图3-9所示)和最新的x365(如图3-10所示)等子系列服务器中,都采用了Chipkill内存技术。

目前支持Chipkill内存技术的不仅是IBM服务器,许多国内的服务器,如宝德公司的64位新至强机架式服务器PR2520(如图3-11所示,该公司还有许多其他服务器也支持这一内存技术,如PT4050R和PR2520等)、方正公司的方正圆明MT500(如图3-12所示)等也开始支持这一技术。当然实际应用这一技术的服务器厂商远不止这些,可以说Chipkill得到了广泛应用,主要是在中、低端服务器中。

新型的第三代Chipkill内存技术已经集成到了IBM的x架构的芯片组中,不必另外定制。最初IBM公司在主机系统中开发了这一技术,到现在已具有20多年的历史。这种新的功能既可以检测,又可以纠正多比特内存错误,可进一步提高服务器的实用性。同时服务器中只需采用便宜的、工业标准的ECC存储器,而不必另外购买专门的内存,所以IBM的Chipkill内存技术的应用非常广。

未经允许不得转载:存储在线-存储专业媒体 » 3.3.1 Chipkill内存技术