太空探索之装备:Chipkill自愈内存(转帖)

来源:百度文库 编辑:超级军网 时间:2024/04/27 13:54:01
Chipkill内存是IBM为NASA(美国太空总署)计划于2003年向火星发射的 “火星漫游者”探测器而设计的,其宗旨只有一个:高可靠性。那么,Chipkill内存是怎样实现高可靠性的呢?



█ 内存纠错技术的发展过程



90年代初,内存体系采用奇偶性校验(Parity Verifying)技术。奇偶校验内存在每一字节(8位)外又额外增加了一位作为错误检测之用,BIOS中的监控程序会将存入内存中的数据位相加,并将结果存于校验位中。比如一个字节中存储了某一数值10011110,每一位加起来的结果为奇数(1+0+0+1+1+1+1+0=5),校验位存入1。当CPU读取储存的数据时,监控程序再次相加存储的8位数据,并将计算结果与校验位相比较。如果发现二者不同,系统就会产生出错信息。奇偶校验技术仅能粗略地检查内存错误,并不具备纠错能力。



另一种内存纠错技术叫做ECC(Error Correct Code,纠错码),它也是在原来的数据位上外加位来实现的,增加的位用来重建错误数据。在ECC纠错体系中,如果数据为n个字节,则外加的ECC位为log2n + 5。例如对于64位数据,需要外加log28 + 5 = 8个ECC位。



当出现一个存储位错误时,ECC体系可以自动进行纠错。当出现2个数据位错误时,可以检测出来,但不能纠错,这种行为通常称作“单错纠正/双错检测(Single Error Correction/Double Error Detection ,简称SEC/DED)。一次存取中有2个以上的数据位出错时,由于SEC/DED体系检测不出来了,致使数据的完整性受损。采用这种结构的存储器,当检测出多位错误时,系统就会报告出现了致命故障(Fatal fault),之后系统崩溃。



随着RAM芯片的集成度的提高和内存容量的增大,内存发生错误的概率也随之增加。几年前被认为很可靠的SEC/DED内存体系,今天已经力不从心了,寻求具有多位纠错能力的内存体系结构一直是众多厂商追求的目标。



1996年,Compaq公司的Advanced ECC技术实现了纠正单一内存芯片上的多位错误,也可以纠正内存条上单芯片的失效。1998年,惠普在LH3服务器产品中提出的自修复概念,主要内容也是内存的多位纠错能力。



Chipkill内存是IBM为NASA(美国太空总署)计划于2003年向火星发射的 “火星漫游者”探测器而设计的,如图1。2001年,IBM将这种chipkill技术移植到“蓝色基因”服务器产品中,成为其面向电子商务的电子蜥蜴计划中的一个重要行动。接着DELL等厂商也纷纷在服务器中采用了这种内存体系。







图1  Chipkill内存



Chipkill是一种具有自愈(Self-healing)能力的内存体系结构,在工作过程中进行自我测试(self-test)和自我诊断(self-diagnosis),如果某个RAM芯片或内存条损坏,可以向管理员报告出错信息,但机器仍可继续运行,管理人员可在适当的时候更换故障的零件。



█ Chipkill内存的结构



RAM器件失效最为严重的情形是其全部数据位全部发生错误,纠正这种错误的基本思路应该着眼于芯片和系统的硬件结构,而不可能通过软件升级的方式来达到目的。



存储器中的每个字节外加一个ECC位构成ECC字。如果存储器系统的数据宽度为32个字节(或256位),实际的存储器数据的宽度是256+32=288位。同时,每一个数据位都被置于分离的ECC字中。



图2描述了这种方法工作的原理。存储系统由4个DIMM模块构成,32个字节(256位)的数据被分成4个ECC字,每个ECC字含有8个字节(64位)的数据位和8个ECC位。这样,一个ECC字的实际长度为64+8=72位,存储数据总长度为72×4=288位。







图2 Chipkill内存纠错原理



存储器控制器(Memory Controller)把每个ECC字被分成4个长度为18位的段,分别存储于4个DIMM中。同时,每个DIMM中也存储了4个来自不同的ECC字的段。然后,每个段的18个位再被存储在不同的RAM芯片中。



经过上述处理,每个DRAM芯片中只保存了ECC字的一位。如果RAM芯片失效,导致某个芯片中的全部18个位都出错,也只是造成ECC字的一位错误。因为每个ECC字具有SEC/DED能力,可以自动纠错,所以可以恢复所有的数据。当然,对于RAM中的某一位、某一行、某一列发生失效,系统也可以实现自动纠正错误。



█ Chipkill内存的应用前景



通过对ECC体系进行改造而设计的自动纠错的内存体系结构,实现了人们盼望已久的彻底避免系统瘫痪和数据丢失的目的。短短几年内,集成了chipkill技术的电脑产品已经在交通调度、证券交易等高可靠性系统中得到了广泛应用了。



人们发现,使用chipkill内存的电脑产品,在提高了可靠性的同时,也降低了系统维护成本,减少了电子商务中的风险和法律责任,种种好处足以抵消价格偏高的不利因素。我们相信,chipkill技术不久就会出现在包括台式机、笔记本和嵌入式系统等所有电脑产品中。



作者:陈忠民Chipkill内存是IBM为NASA(美国太空总署)计划于2003年向火星发射的 “火星漫游者”探测器而设计的,其宗旨只有一个:高可靠性。那么,Chipkill内存是怎样实现高可靠性的呢?



█ 内存纠错技术的发展过程



90年代初,内存体系采用奇偶性校验(Parity Verifying)技术。奇偶校验内存在每一字节(8位)外又额外增加了一位作为错误检测之用,BIOS中的监控程序会将存入内存中的数据位相加,并将结果存于校验位中。比如一个字节中存储了某一数值10011110,每一位加起来的结果为奇数(1+0+0+1+1+1+1+0=5),校验位存入1。当CPU读取储存的数据时,监控程序再次相加存储的8位数据,并将计算结果与校验位相比较。如果发现二者不同,系统就会产生出错信息。奇偶校验技术仅能粗略地检查内存错误,并不具备纠错能力。



另一种内存纠错技术叫做ECC(Error Correct Code,纠错码),它也是在原来的数据位上外加位来实现的,增加的位用来重建错误数据。在ECC纠错体系中,如果数据为n个字节,则外加的ECC位为log2n + 5。例如对于64位数据,需要外加log28 + 5 = 8个ECC位。



当出现一个存储位错误时,ECC体系可以自动进行纠错。当出现2个数据位错误时,可以检测出来,但不能纠错,这种行为通常称作“单错纠正/双错检测(Single Error Correction/Double Error Detection ,简称SEC/DED)。一次存取中有2个以上的数据位出错时,由于SEC/DED体系检测不出来了,致使数据的完整性受损。采用这种结构的存储器,当检测出多位错误时,系统就会报告出现了致命故障(Fatal fault),之后系统崩溃。



随着RAM芯片的集成度的提高和内存容量的增大,内存发生错误的概率也随之增加。几年前被认为很可靠的SEC/DED内存体系,今天已经力不从心了,寻求具有多位纠错能力的内存体系结构一直是众多厂商追求的目标。



1996年,Compaq公司的Advanced ECC技术实现了纠正单一内存芯片上的多位错误,也可以纠正内存条上单芯片的失效。1998年,惠普在LH3服务器产品中提出的自修复概念,主要内容也是内存的多位纠错能力。



Chipkill内存是IBM为NASA(美国太空总署)计划于2003年向火星发射的 “火星漫游者”探测器而设计的,如图1。2001年,IBM将这种chipkill技术移植到“蓝色基因”服务器产品中,成为其面向电子商务的电子蜥蜴计划中的一个重要行动。接着DELL等厂商也纷纷在服务器中采用了这种内存体系。



5090da09-2248-4154-b75f-1458ae57bf14.jpg (9.67 KB, 下载次数: 8)

下载附件 保存到相册

2012-7-25 08:58 上传





图1  Chipkill内存



Chipkill是一种具有自愈(Self-healing)能力的内存体系结构,在工作过程中进行自我测试(self-test)和自我诊断(self-diagnosis),如果某个RAM芯片或内存条损坏,可以向管理员报告出错信息,但机器仍可继续运行,管理人员可在适当的时候更换故障的零件。



█ Chipkill内存的结构

d9b16044-b0bf-4f72-9f64-6d01f82abfd2.jpg (44.4 KB, 下载次数: 8)

下载附件 保存到相册

2012-7-25 08:59 上传




RAM器件失效最为严重的情形是其全部数据位全部发生错误,纠正这种错误的基本思路应该着眼于芯片和系统的硬件结构,而不可能通过软件升级的方式来达到目的。



存储器中的每个字节外加一个ECC位构成ECC字。如果存储器系统的数据宽度为32个字节(或256位),实际的存储器数据的宽度是256+32=288位。同时,每一个数据位都被置于分离的ECC字中。



图2描述了这种方法工作的原理。存储系统由4个DIMM模块构成,32个字节(256位)的数据被分成4个ECC字,每个ECC字含有8个字节(64位)的数据位和8个ECC位。这样,一个ECC字的实际长度为64+8=72位,存储数据总长度为72×4=288位。







图2 Chipkill内存纠错原理



存储器控制器(Memory Controller)把每个ECC字被分成4个长度为18位的段,分别存储于4个DIMM中。同时,每个DIMM中也存储了4个来自不同的ECC字的段。然后,每个段的18个位再被存储在不同的RAM芯片中。



经过上述处理,每个DRAM芯片中只保存了ECC字的一位。如果RAM芯片失效,导致某个芯片中的全部18个位都出错,也只是造成ECC字的一位错误。因为每个ECC字具有SEC/DED能力,可以自动纠错,所以可以恢复所有的数据。当然,对于RAM中的某一位、某一行、某一列发生失效,系统也可以实现自动纠正错误。



█ Chipkill内存的应用前景



通过对ECC体系进行改造而设计的自动纠错的内存体系结构,实现了人们盼望已久的彻底避免系统瘫痪和数据丢失的目的。短短几年内,集成了chipkill技术的电脑产品已经在交通调度、证券交易等高可靠性系统中得到了广泛应用了。



人们发现,使用chipkill内存的电脑产品,在提高了可靠性的同时,也降低了系统维护成本,减少了电子商务中的风险和法律责任,种种好处足以抵消价格偏高的不利因素。我们相信,chipkill技术不久就会出现在包括台式机、笔记本和嵌入式系统等所有电脑产品中。



作者:陈忠民
最后一段啥意思啊?到底有没有应用过这种技术的民用产品啊
民品吗?肯定没有,现在ECC内存都没普及,更别提这么高级的。
再说了,打游戏、看个片,整那么高可靠性干吗?
大不了重启。
能否自动检测出出错或损坏的内存单元,然后隔离,不再使用之。
刀客L 发表于 2012-7-25 20:39
能否自动检测出出错或损坏的内存单元,然后隔离,不再使用之。
内存单元损坏?这种概率极小,如果坏了的话,所在芯片就报废了。
如果指的是FLASH或者磁盘的坏块,那这个坏块是文件系统管理的。
SimpleCD 发表于 2012-7-25 09:37
最后一段啥意思啊?到底有没有应用过这种技术的民用产品啊
最后一段的意思是,比如在银行或其他金融机构的计算机系统使用这种内存条。以防止在特殊情况下出现内存数据被外界干扰而产生改变,由此带来的客户信息被篡改或丢失而负相应的法律责任。
2012-7-25 23:42 上传

开始灌水 发表于 2012-7-25 23:35
内存单元损坏?这种概率极小,如果坏了的话,所在芯片就报废了。
如果指的是FLASH或者磁盘的坏块,那这个 ...
没看见正文写的吗?即使内存条出现一个内存芯片损坏,可以将其屏蔽的
txdtj 发表于 2012-7-26 09:00
没看见正文写的吗?即使内存条出现一个内存芯片损坏,可以将其屏蔽的

我说的是芯片报废,没说整个内存条报废。
由于总线是64位的,而很多内存芯片的总线不是64位,如16位、32位。
如果要构成64位数据总线就要64/N个芯片并联,如果这里某个芯片有故障,是严重影响性能的。
当然是用了这种内存条是严重影响性能,如果是传统内存条,电脑是崩溃了。
Chipkill是一种具有自愈(Self-healing)能力的内存体系结构,在工作过程中进行自我测试(self-test)和自我诊断(self-diagnosis),如果某个RAM芯片或内存条损坏,可以向管理员报告出错信息,但机器仍可继续运行,管理人员可在适当的时候更换故障的零件


这不是说得很清楚了吗?如果flash或磁盘存在坏块,文件系统会标记并不再使用,但我们总不会因为一个坏块就把整个U盘或硬盘扔了吧?
这个内存条只是保障电脑不崩溃,管理员还是要换掉的。