|||
又谈容错——DRAM的差错避免(151207)
闵应骅
我已经不知道发过多少文章谈容错了,这是一个永恒的话题。本月的IEEE Spectrum发表一篇文章谈动态随机存取存储器(DRAM)的差错避免,值得介绍一下。近20年来,人们普遍认为硬件可靠性已经大大提高,主要是软件有问题。可以说没有一个大型软件是没有错误的,所以,错误无穷无尽,要不断修改,不断改进。所以,越老的软件应该越可靠。但是,多伦多大学的一项研究表明,DRAM读写的差错并不少,不过人们不容易发现。
因特尔1971年首先推出1024位DRAM芯片,几年后的16K DRAM芯片就发现存储的某些位与写入的不一样,而且错误率很高。后来,最终定位到陶瓷包装上。芯片包装里面所含的微量放射性材料发射α粒子,破坏数据。这问题发现以后当然很容易解决。但DRAM的差错并没有绝迹,可能引起黑屏、停机,甚至宕机。像Amazon,Facebook, Google这样的大公司大量的并行计算,数据中心里有成千上万台的计算机,它们合作为某一个终端用户服务。超级计算机更集中地运行着它的设备。在这些大型系统中,即使小概率故障较频繁发生,单个计算机可能宕机,如果一年三次,1万台计算机就会差不多一天有100次宕机。
多伦多大学一个研究组收集了许多系统的运行数据,包括美国阿贡国家实验室、劳伦斯利物莫国家实验室、洛斯阿尔莫斯国家实验室,也从大型数据中心的操作员得到消息,包括谷歌公司。我们看到,虽然PC机用户怪系统失效是软件问题,譬如操作系统或浏览器有问题,或者病毒感染,硬件问题还是主要的,例如,洛斯阿尔莫斯,60%的机器失效来源于硬件,而且大部分硬件问题在于DRAM的错误。下图是一个典型的DRAM芯片
1.怎么知道这些可靠性问题是源于DRAM差错?
研究组人员访问了许多运行大数据中心的维护人员,他们说:“要频繁更换的部件是DRAM模块。”可见许多硬件故障出在DRAM模块上。我们知道,大型计算机系统都有存储器的差错校正玛(ECC)和故障数据记录。如果记下每次ECC发现的出错地址和有多少位得到校正,就可以知道系统出过多少DRAM差错,而且错在什么地方。分析劳伦斯利物莫、阿贡、和谷歌的数据,我们发现了这些差错是如何频繁出现的。谷歌12-45%的机器每年至少有1次DRAM差错,这至少比原来的估计频繁了几个数量级。虽然这些机器都用了各种ECC,至少也有0.2-4%不可纠正的DRAM差错,从而产生非预期的停机。
为什么一个已经存在的问题30年后还没搞清楚呢?许多原因:第一,这些错误没有频繁到需要一个大数据集做统计频率估计的程度。你必须研究每年几千台机器。大部分计算机生产厂家做DRAM可靠性估计都是在实验室里用粒子束发射,模拟宇宙射线来做的,认为那就是差错的主要原因。第二,制造厂家和运行大系统的公司不原意公布这些敏感信息。
2.DRAM为什么会出错呢?
一个DRAM芯片单元是由一个电容和一个晶体管构成,电容的冲放电存储一位信息,不像静态RAM,只要有电源,数据保持不变。DRAM不同,存储器中记录信息位的电荷会慢慢地泄露,从而丢失信息。所以,电路需要不断更新电荷状态。所以叫“动态”,但电容的容量大小有差异,充放电曲线受很多因素的影响,不断更新使存储器模块复杂化。但DRAM的优越性是存储器单元的电容非常小,一个芯片上可以放十亿位。在集成电路里面,一个特定的布局布线就可以做成电容,并不像我们平时看到很大的电容分立元件那样。当一位或多位刚写完,另一个命令又要读,DRAM差错就可能发生。许多消费级的计算机没有对这类错误的防护,但服务器一般在DRAM里用差错校正玛(ECC)。其主要想法是用更多的存储位存储数据,当芯片检测到有差错,则进行校正,只要不是太多位同时出错是可以更正的。但是,出错位太多仍然可以引起宕机。
DRAM差错可以分为两类:软差错和硬差错。软差错指某些瞬时干扰,譬如宇宙射线粒子撞击;硬差错源于物理装置本身的问题,一般只是测试DRAM某一位是否固定为0或1。一般说,软差错比硬差错更普通,所以大部分研究集中在软差错,但无人能证实这个假定。
3.DRAM差错有什么特点没有?
多伦多大学的研究人员考察了大型计算系统,用各种不同的负载,研究DRAM技术及其防护机制。他们得以存取谷歌数据中心的数据,两代的IBM蓝色基因超级计算机(一个在劳伦斯利物莫,一个在阿贡),以及在多伦多大学SciNetc超级计算机中心的加拿大最高性能的集群。他们分析了300万亿字节-年的DRAM使用数据。他们发现,高温基本不影响存储器的可靠性,让机器运行于高一点温度,数据中心可以省制冷经费,减少二氧化碳排放。同时也发现,机器的小的因素引起了大差错,即差错连续出现在同一个存储器模块。计算表明,两次这样的差错使DRAM差错概率加倍。这说明软错误不见得是最主要的故障模式。因为,如果差错完全是随机来的,DRAM芯片各点的故障概率应该是一样的。
从上图可见,在劳伦斯利物莫国家实验室的蓝色基因超级计算机的DRAM差错有80%出现在同一个地址。一个DRAM装置被分成若干个存储体,每一个存储体是一个2D存储单元阵列,放在相邻的行和列。阵列中的单元位居某一行和某一列。他们发现多半的故障存储体的故障基本上都在同一行和同一列,也就是一个故障单元。其他相当多的故障出在同一行或同一列,但无法定位某地址。不可想象,随机的核粒子会撞击同一个单元两次。这几乎不可能。所以,不能说DRAM硬差错是软差错造成的。
4。怎么解决DRAM硬差错的问题?
硬差错是永久故障,如果差错在同一个地址发生,只要把该地址列入黑名单,不许使用,就可以防止宕机。如果该单元有许多位需要ECC校正。那么,在较少位差错时就要给出警告。较少位的差错还可以用ECC校正。
操作系统把计算机主存分成页,一般是4K字节为一页。操作系统认为差错来源于很少的几页。事实上,85%的差错来源于0.0001%的页,去掉这些页就可以保持正常运行,而对存储能力影响很小。这被称为页退役。但很少有人用它,因为不知道如何检测和诊断到这种故障。我们的研究组使Facebook在其数据中心用了页退役。我们研究了5个策略。一个是发现第一个差错就退役这一页。其他则是退役一行或一列。我们发现,一般一个计算机退役1M字节就可以防止90%的存储器差错。去掉1M字节对于一个计算机系统来说是无足轻重的。当然,技术人员可以更换整个存储模块。但是,它其实只有几个单元是坏的。页退役不但能防止宕机,而且节省了存储器。
同样的策略也可用于智能手机、平板电脑、和可穿戴电子等设备。DRAM在广泛使用,DRAM一个单元差错就换整个设备,显然是过于浪费。
我们国家在容错方面的研究显得比较弱,队伍好像也没有怎么壮大。原因可能是我们比较注重研究成果的可见性,而对于产品质量和可靠性关注得不够。这对我国产品走向世界非常不利。“让世界爱上中国造”就要提高产品质量和可靠性。最近领导的讲话已经多次强调了这一点,也许情况会有所改善。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-22 20:55
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社