计算机冗余容错fault-tolerant computerrongCUO llSUQn』l 容错计算机(fault-tol~t computer)在硬件发生故障或软件产生错误时仍能继续运行并完成其既定任务的计算机系统。
容错计算机的主要设计目标是为了提高计算机系统的可靠性、可用性和可信性等性能。
提高计算 ·600· 容机可靠性的方法可以分为两大类:一类是排错技术,主要是通过使用可靠性高的元器件,严格的老化筛选等方法达到尽量减少发生故障的可能性;另一类是容错技术,主要是运用元余技术来抵消由于故障而引起的影响。
所谓冗余技术,简单地说,是在正常系统运行所需的基础上加上一定数量的信息、时间或后备硬件、后备软件的方法。
冗余技术是容错计算机中容错技术的基础。
冗余大致上可以分为下列几种类型: (l)硬件冗余以检测或屏蔽故障为目的而添加一定硬件设备的方法; (2)软件冗余为了检测或屏蔽软件中的错误而添加一些在正常运行时不需要的软件的方法; (3)信息冗余在实现正常功能所需的信息以外,再附加一些信息的方法,例如纠错码就是信息冗余的一种形式; (4)时间冗余使用附加一定的时间来完成系统的功能,这些附加的时间主要是用在故障检测或故障屏蔽上。
最常用的硬件冗余是硬件的重复。
硬件冗余一般可以分为3种类型:静态冗余(也称为被动冗余)、动态冗余(也称为主动冗余)和混合冗余。
静态冗余将已发生的故障屏蔽起来,使不影响运行的结果。
被动冗余主要是依靠表决机制来屏蔽发生的故障,因而这种方法不需要故障检测也不必进行系统的重新配置等就可以获得容错的效果。
被动冗余技术中使用最广的是三模元余TM[R。
TMR的基本概念是使用3套完全相同的硬件系统执行相同的任务,然后由1个多数表决器对这3套系统的输出进行表决以确定整个系统的输出。
多数表决器的表决原则是三中取二。
也就是说三模冗余系统可以容许有1个模块发生故障而不至于影响到整个系统运行的正确性。
三模冗余的关键是多数表决器本身的可靠性问题。
提高多数表决器可靠性的方法有多种,其中最常用的方法是多数表决器本身也使用三模冗余,即利用3个独立的多数表决器,每个多数表决器分别接受来自3个模块的输出作为它的输人,然后再分别输出。
这种系统通常被称为带三重多数表决器的三模冗余系统。
除了三模冗余系统外,还有多于三模的冗余,称为N模冗余。
主动冗余技术与被动冗余技术相反,它是通过故障检测、故障定位及故障恢复等手段达到容错的目的。
因而在主动冗余技术中不是去防止故障引发的错误,而是暴露由故障引发的错误,从而去纠正错误。
主动冗余技术中最典型的方法是构造带有比较器的双工系统。
在这种方法中,使用两套完全相同的硬件,且同时完成完全相同的任务,然后对它们的结果作比较。
当然,仅仅有1 个比较器的双工系统只能检测到有无故障,尚不足以确定哪一个模块出了故障。
所以在这样的系统中还必须增加一定的措施才能作故障定位。
动态冗余技术除了上述方法以外,还有诸如热备份、使用把关定时器等都是较为常用的方法。
硬件冗余的第三种类型是混合冗余。
这种技术是将主动冗余和被动冗余结合起来,且取二者之长处。
它先使用被动冗余中的故障屏蔽技术,使系统免受某些可以被屏蔽的故障的影响。
而对那些无法屏蔽的故障则采用主动冗余中的故障检测、故障定位、故障恢复等技术,并且对系统可以作重新配置。
因此,混合冗余的效果要大大优于主动和被动冗余。
然而,由于混合冗余既要有被动冗余的屏蔽功能,又要有主动冗余的各种检测、定位等功能,它的附加硬件的开销是相当大的,所以混合冗余的成本很高,仅在对可靠性要求极高的场合中采用。
混合冗余的方法也有多种,例如,带热备份的N模冗余技术,自清洗冗余技术、筛选模块冗余技术等。
信息冗余是一种将冗余信息添加到数据上从而达到故障检测、故障屏蔽和容错的目的。
信息冗余最好的例子就是检错码和纠错码。
这是将冗余的信息加到一个数据字上使每一个数据字变为一个新的带有冗余信息的字。
这种冗余信息的添加方法是按照一组预定的规则进行的。
符合添加规则而形成的带有冗余信息的字称为码字,而那些虽带有冗余信息但不符合添加规则的字则称为非码字。
按添加冗余信息的规则加上冗余信息的过程称为编码。
反之,将已编码的字恢复成原来形式的过程则称为译码。
一般来说,经过编码的码字只是全部编码的子集,另一部分则是非码字,当系统出现故障时,可能会将码字变成非码字,于是在译码过程中会将引起非码字的故障检测出来。
这就是检错码的基本思想。
至于纠错码则不仅可以将错误检测出来,而且还能将由故障引起的非码字纠正成正确的码字。
由此可见,信息冗余的主要任务在于研究出一套理想的编码和译码技术来提高信息冗余的效率。
编码技术中最简单、最常用的检错码是奇偶校验码。
奇偶校验的基本思想是在二进制的信息字上附加一位冗余位,称为校验位,使得该码字(这里的码字是信息位加上冗余位而形成的信息字)中所含有的1的个数为偶数或为奇数b如果码字中的1的个数为偶餐·60 1. 容数,则称这种校验为偶校验。
如果码字中的1的个数为奇数,则称这种校验为奇检验。
由于奇偶校验码简单实用,便于硬件的实现,因而在计算机系统中被广泛使用。
但是奇偶校验码存在一定的缺点,例如它不能检测偶数个同时发生的故障,因而在它的基础上又发展了多种不同的奇偶校验码,例如分段奇偶校验码、分字节奇偶校验码等。
除此以外,还有、中取m”码、双重码、检查和以及循环码等都是常用的检错码。
汉明码(参见存储器差错校验)是纠错码中最典型的代表。
它不仅能够检测出1个甚至两个故障,而且还能将错误纠正过来,将非码字改正为码字,因而被广泛采用。
时间冗余是以时间(即降低系统运行速度)为代价以减少硬件冗余和信息冗余的开销来达到提高可靠性的目的。
在某些实际应用中,硬件冗余和信息冗余的成本、体积、功耗、重量等开销可能过高,而时间并不是太重要的因素时,可以使用时间冗余。
时间冗余的基本概念是重复多次进行相同的计算,或称为重复执行,简称复执,以达到故障检测的目的。
实现时间冗余的方法很多,但是其基本思想不外乎是对相同的计算任务重复执行多次,然后将每次的运行结果存放起来再进行比较。
若每次的结果相同则认为无故障;若存在不同的结果则说明检测到了故障。
不过,这种方法往往只能检测到瞬时型故障而不宜检测永久型的故障。
这是因为瞬时型故障会使各次运行产生不同的结果。
若不仅要检测瞬时型故障,而且还要检测固定故障等永久型故障,则单靠时间冗余是有困难的。
因此,在系统中还必须附加少量的冗余硬件。
时间冗余与硬件冗余的结合,既能检测瞬时型故障,又能检测永久型故障。
软件冗余是利用冗余的软件来检测硬件和软件故障的方法。
利用冗余软件进行故障检测的方法很多。
常用的有一致性检查、能力检查和多版本程序设计等。
一致性检查是对某一运行结果先作一定的预测,然后在程序运行中和运行后对其结果与预测的结果作比较。
若实际结果在期望值的范围内,则一认为正常,若实际结果超越了期望值的范围,则认为有故障。
能力检查是用检查程序去检查系统中各个部件应有的能力,例如用程序来读写某一个存储单元,以检查该单元的存储和读写能力,又如用一组特定的数据去检查运算逻辑部件,以判断该部件能否进行正常的运算等。
多版本程序设计是对一个相同的任务(或算法)用不同的方法进行程序设计,然后对不同版本的程序运行后得到的结果进行比较,若所有版本运行的结果相同,则认为无故障,否则,就认为有故障存在。
值得注意的是,这种方法实际上是来自于硬件冗余技术中的N模冗余的思想。
多版本程序设计不仅能检查硬件故障,也可以检查软件本身的故障,因此,在软件容错技术中经常使用。
上述的冗余技术,即硬件冗余、信息冗余、时间冗余和软件冗余是使系统获得容错功能和提高可靠性的基本措施和手段。
在实际应用中,上述4种冗余技术经常是结合起来使用的。
将这些冗余技术融合在一个计算机系统中,就称这个系统为冗余系统。
一般说来,一个较为完整的冗余系统,在处理运行中出现的故障时,大体上有以下10个步骤: (l)故障检测这是处理故障的基础,因为要容错就先要将故障检测出来。
故障检测的方法很多,如上述的奇偶校验就是检测故障的一种方法。
故障检测一般分为两类:联机检测和脱机检测。
前者提供了实时检测的能力,这种检测工作与系统的正常工作同时进行。
后者在进行检测时,系统必须停止正常工作。
(2)故障屏蔽这与故障检测正好相反,它不是将故障检测出来,而是将出现的故障屏蔽起来,使系统不受故障的影响。
(3)故障限制限制故障影响的范围,防止已发生的故障影响到系统的其它部分。
(4)复执这是一种检测瞬时型故障的有效措施。
它可以提高计算机抗瞬时型故障干扰的能力。
(5)故障诊断在故障检测的基础上,对故障进行定位。
这对以后的修复、重配置等有很重要的意义。
(6)系统重配置若故障一旦被检出并定位,系统应有能力将发生故障的元件或部件替换下来,或将故障部件与其它部分隔离开来。
当故障部件被替换下来后,系统中可能缺少了这一部件,但系统仍应能保持正常运行,只是系统运行速度下降、功能减弱。
这一现象称为系统降级使用。
(7)系统恢复当检测出故障,必要时在系统重配置后即可消除故障引发的差错。
这时,系统应能返回到出现故障断点前的情况继续运行。
这个过程称为系统恢复。
(8)系统重新启动如果系统由于出现过多的故障而造成大量的错误,以致破坏了许多无法恢复的信息时,就不能再使用上述的系统恢复的办法,而必须重新启动运行。
重新启动分为热启动和冷启动。
前者是在部分信息遭到破坏但还有一部分可以利用的情况时使用,而后者则是在几乎所有信息均遭破坏的情况下使用。
(9)修复凡是已确定有故障的部件必须进行修复。
修复分为脱机修复和联机修复二种。
若要修复的部件卸下后对系统影响不大,或者修复这些部件时系统必定会停机,就使用脱机修复。
联机修复通常是指系统能自动启用备份部件替代有故障部件,并保持系统继续运行,然后再修复切换下来的故障部件。
(10)系统重组合当上述各步完成后,系统必须重新组合,以便完全恢复正常运行。
容错计算机主要应用于工业生产、医疗、航空、航天、军事、公安、交通、金融、机要等部门对计算机的可靠性要求很高的场合。
在应用需求的推动下,容错计算机的理论和技术在不断发展。
尤其是在硬件和软件容错理论、测试算法、诊断技术等方面,尚需继续深人研究。