论文部分内容阅读
摘要:在现代计算机快速发展并且对人们的工作和生活影响越来越大的前提下,人们对于计算机系统容错的需求就越来越强烈,要求计算机系统有良好的容错性能,进而保障计算机系统的正常运行。因此,需要对计算机系统软硬件的容错方法进行分析,进而探索出几种较为实用的计算机容错系统的体系结构,希望能够促进计算机系统容错性能的大幅提升。
关键词:计算机容错系统;容错技术;硬件;软件;冗余
计算机容错系统是由若干台计算机按照一定的容错原则通过资源冗余,配置构成冗余结构的计算机系统,当系统出现一定的运行性故障时,能够依赖系统内驻的容错能力保证系统连续正确地执行其程序并输出正确的结果。对于计算机系统来讲,其软硬件都有着不同的容错方法,因此,我们需要对软硬件的容错方法进行分别的研究,进而促使计算机在实际的运行过程当中实现其软硬件系统容错性能的提高。
1硬件错误的容错方法
计算机可能出现的硬件错误有永久性错误、间歇性错误和瞬态错误。永久性错误是指由于计算机硬件老化、电路元件短路等现象而产生的故障,一旦出现则影响系统原有功能,需通过更换元器件来恢复系统正常工作;瞬态错误的发生率是非常频繁的,在所有系统错误中所占的比例也是最大的,对整个系统可靠性和安全性的影响也是最大的;间歇性错误介于以上两种错误之间,针对系统的可靠性设定了一定的阈值,当瞬态错误的发生频率超过该阈值时表现为间歇性错误。
计算机容错系统为了更好地容错性能,必须是冗余的。不同形式的冗余资源可分为不同的冗余方法,主要包括硬件冗余、信息冗余、时间冗余、线程冗余等集中冗余类型。
1.1硬件冗余
根据冗余程度的不同,硬件冗余还可分为部分冗余和完全冗余。完全冗余可分为冷备、温备、热备以及双工这四种工作方式。以双系统为例,可分为双系统冷备、双系统温备、双系统热备和双系统双工。其中,在对故障导向实时性和安全性要求较高的系统中首选方式是应用双系统双工,而其他三种方式可以应用在一般性系统中,即对故障诊断时间和切换时间没有过高要求的情况。此外,三模、四模的冗余技术的应用也非常广泛。
目前,基于动态可重构现场可编程门阵列(FPGAs)在硬件冗余技术中是研究关注度较高的。这种方法可根据抽象层次分为2层:硬件层(DL)和配置层(CL)。
目前,学界在计算机系统容错技术研究中,对硬件冗余方法的研究最多,花费也相对较大,但是其在提升计算机系统的可靠性和安全性方面的效果也非常良好,技术相对比较成熟,并在很多场合都已实践运用。因此,我们在计算机系统容错中,一般首选硬件冗余。
1.2信息冗余
信息冗余是指通过在原始数据中添加若干冗余位以实现故障检测或故障恢复,这种容错技术包括检错编码和纠错编码。检错编码可以检测出错误,纠错编码可以检测错误,也可以纠正错误。编码技术通常应用于传输、储存、处理信息环节中。比较典型的信息冗余技术有奇偶校验码、循环冗余校验码、海明码及其扩展编码方式等。
相对其他冗余方法,信息冗余技术的优点有:速度快,对冗余信息的处理与原始数据在同一时间段内,无需额外占用时间成本,在数据处理时检错、纠错并行完成,从而避免由于错误恢复操作引发的迟延;代价较小,仅需支付少许额外的编码电路或字节和计算开销,与其他硬件冗余相比开销要小得多,因此,在实际进行计算机系统性能提升的过程中,可以根据实际的需要来选择采用硬件冗余技术还是信息冗余技术。
常见的信息冗余技术有ABFT、RED-FECMechanism、check-sum EDAC。
1.3时间冗余
在对实时性要求不高,且没有实施硬件冗余的系统中,可以采用时间冗余的方法来保证系统可靠性,实现容错机制。在具体应用过程中,时间冗余技术体现为1种方式,分别为:Re-execution of the task on the Same Hardware(RSHW),指同一硬件基础上的同一数据在不同的时间片内执行相同的指令集;利用表决电路和数据延迟单元,把这两者结合处理后的数据根据延迟的多少拷贝出对应的版本,并传送到表决器惊醒表决判断,通过对比得出最佳结果。
时间冗余技术的关键点在延迟时间的大小,也就是说若延迟时间过小可能会导致表决器的输入内容出现错误,无法实现系统容错;若延迟时间过大,会导致时间成本增大,那么容错机制就是去了原本减小延迟的意义。因此,在时间冗余技术的应用中,一定要对系统的时间要求进行合理的判断,进而设置合理的时间冗余,以实现计算机系统容错性能的提高。
1.4硬件线程冗余
硬件线程冗余是指在多线程处理器中使用容错手段实现线程级容错,具体方法是在多线程系统中把主线程拷贝成多个同样的线程并行处理数据,然后通过比较处理结果来实现容错。目前常见的线程冗余技术有基于CMP的容错即芯片级冗余多线程、冗余多线程RMT、基于微线程的粗粒度超标量容错MTB等。
目前在硬件多线程冗余中研究最多的是主副线程通信方式,通过对中间结果队列的共享使线程的执行速度加快,并实现容错。线程冗余技术对硬件成本的要求不高,而且容错效果好,时间开销小,实时性较高,因此硬件线程冗余技术是一种高效可行的硬件容错方法。
2软件错误的容错方法
关于计算机系统的可靠性的评价与分析,需将其软件的可靠性因素考虑进去,但是对这方面的研究却不太成熟,因此相比硬件容错方法效率较低,导致在评估系统的可靠性是忽略软件的失误率。人为设计引发的软件错误一直存在,在一定的输入刺激下产生各种故障,尚无法用统一数学模型进行描述。软件错误的容错方法通常有恢复快方法、软件多样性方法、防卫式程序设计方法。也可以通过改善软件工程、计算机平台环境和构造异常处理模块等方面来提高容错水平。
计算机系统出现故障后恢复的策略通常可分为前向恢复和后向恢复。前向恢复是指使系统继续向前运行,采取措施是系统连贯,弥补故障造成的不连贯,继续计算;后向恢复是指将系统还原到之前的正确阶段,再重新运行计算。
2.1N-version programming方法
N版本软件容错技术是将软件的各个版本交由不一样的开发团队进行开发,用不同的开发语言和方法,独立的设计工具和环境,以减少不同版本之间出现相关错误的几率。此时各个版本的软件设计开发不能违背以下几个原则:总体设计目标要一致,避免错误恢复;各个模块之间要有统一的标准接口;软件设计过程中模块内部对外透明,要进行封装;各个版本的软件开发必须独立。
2.2恢复块方法
恢复块方法的具体过程是配置有主块和后备块,其功能是相同的,首先是主块开始运行,计算结果,若出现故障,则运行一后备块,再计算结果进行测试,未通过则再运行一后备块,直到测试通过,若测试—直未通过,则说明产生了不可恢复的故障。在设计开发过程中应尽量保证主块与各后备块之间的独立性,以降低它们之间的错误的相关性。此外,测试计算结果的程序有着至关重要的地位,必须毫无错误。
2.3防卫式程序设计方法
防卫式程序设计方法是一种保守的容错机制,它不利用任何传统的容错方法就能实现系统容错。它的具体过程是这样的:若程序在运行过程中出现错误,就会调用程序自带的检测代码和恢复代码进行处理,将系统返回到上一个正确的状态,如此,就实现了对程序中出现的错误的检测,错误类型以及影响范围的估计,并且最终实现错误恢复。
3结语
随着极端及系统的规模不断扩大,越来越多的应用部署在计算机系统中,对系统可靠性的要求也越来越高,因此需要更加完善的容错技术来保障系统的可靠性和安全性。目前的硬件冗余容错方法成本较高,耗能较多,物理空间占用较大;信息冗余容错方法中针对瞬态错误的容错技术还有待深入研究;时间冗余容错方法不仅使延迟增大,对永久性错误没有好的容错机制;并行线程冗余容错方法在合理分配线程资源方面没有完善的解决方案;软件冗余技术相对硬件更加落后;恢复块方法中必须保证测试程序的准确性;防卫式程序设计方法尚缺乏完整的理论依据。因此无论哪种容错技术,虽然已经取得了很多研究成果,但是还有不足,仍有许多问题值得进一步探索。
关键词:计算机容错系统;容错技术;硬件;软件;冗余
计算机容错系统是由若干台计算机按照一定的容错原则通过资源冗余,配置构成冗余结构的计算机系统,当系统出现一定的运行性故障时,能够依赖系统内驻的容错能力保证系统连续正确地执行其程序并输出正确的结果。对于计算机系统来讲,其软硬件都有着不同的容错方法,因此,我们需要对软硬件的容错方法进行分别的研究,进而促使计算机在实际的运行过程当中实现其软硬件系统容错性能的提高。
1硬件错误的容错方法
计算机可能出现的硬件错误有永久性错误、间歇性错误和瞬态错误。永久性错误是指由于计算机硬件老化、电路元件短路等现象而产生的故障,一旦出现则影响系统原有功能,需通过更换元器件来恢复系统正常工作;瞬态错误的发生率是非常频繁的,在所有系统错误中所占的比例也是最大的,对整个系统可靠性和安全性的影响也是最大的;间歇性错误介于以上两种错误之间,针对系统的可靠性设定了一定的阈值,当瞬态错误的发生频率超过该阈值时表现为间歇性错误。
计算机容错系统为了更好地容错性能,必须是冗余的。不同形式的冗余资源可分为不同的冗余方法,主要包括硬件冗余、信息冗余、时间冗余、线程冗余等集中冗余类型。
1.1硬件冗余
根据冗余程度的不同,硬件冗余还可分为部分冗余和完全冗余。完全冗余可分为冷备、温备、热备以及双工这四种工作方式。以双系统为例,可分为双系统冷备、双系统温备、双系统热备和双系统双工。其中,在对故障导向实时性和安全性要求较高的系统中首选方式是应用双系统双工,而其他三种方式可以应用在一般性系统中,即对故障诊断时间和切换时间没有过高要求的情况。此外,三模、四模的冗余技术的应用也非常广泛。
目前,基于动态可重构现场可编程门阵列(FPGAs)在硬件冗余技术中是研究关注度较高的。这种方法可根据抽象层次分为2层:硬件层(DL)和配置层(CL)。
目前,学界在计算机系统容错技术研究中,对硬件冗余方法的研究最多,花费也相对较大,但是其在提升计算机系统的可靠性和安全性方面的效果也非常良好,技术相对比较成熟,并在很多场合都已实践运用。因此,我们在计算机系统容错中,一般首选硬件冗余。
1.2信息冗余
信息冗余是指通过在原始数据中添加若干冗余位以实现故障检测或故障恢复,这种容错技术包括检错编码和纠错编码。检错编码可以检测出错误,纠错编码可以检测错误,也可以纠正错误。编码技术通常应用于传输、储存、处理信息环节中。比较典型的信息冗余技术有奇偶校验码、循环冗余校验码、海明码及其扩展编码方式等。
相对其他冗余方法,信息冗余技术的优点有:速度快,对冗余信息的处理与原始数据在同一时间段内,无需额外占用时间成本,在数据处理时检错、纠错并行完成,从而避免由于错误恢复操作引发的迟延;代价较小,仅需支付少许额外的编码电路或字节和计算开销,与其他硬件冗余相比开销要小得多,因此,在实际进行计算机系统性能提升的过程中,可以根据实际的需要来选择采用硬件冗余技术还是信息冗余技术。
常见的信息冗余技术有ABFT、RED-FECMechanism、check-sum EDAC。
1.3时间冗余
在对实时性要求不高,且没有实施硬件冗余的系统中,可以采用时间冗余的方法来保证系统可靠性,实现容错机制。在具体应用过程中,时间冗余技术体现为1种方式,分别为:Re-execution of the task on the Same Hardware(RSHW),指同一硬件基础上的同一数据在不同的时间片内执行相同的指令集;利用表决电路和数据延迟单元,把这两者结合处理后的数据根据延迟的多少拷贝出对应的版本,并传送到表决器惊醒表决判断,通过对比得出最佳结果。
时间冗余技术的关键点在延迟时间的大小,也就是说若延迟时间过小可能会导致表决器的输入内容出现错误,无法实现系统容错;若延迟时间过大,会导致时间成本增大,那么容错机制就是去了原本减小延迟的意义。因此,在时间冗余技术的应用中,一定要对系统的时间要求进行合理的判断,进而设置合理的时间冗余,以实现计算机系统容错性能的提高。
1.4硬件线程冗余
硬件线程冗余是指在多线程处理器中使用容错手段实现线程级容错,具体方法是在多线程系统中把主线程拷贝成多个同样的线程并行处理数据,然后通过比较处理结果来实现容错。目前常见的线程冗余技术有基于CMP的容错即芯片级冗余多线程、冗余多线程RMT、基于微线程的粗粒度超标量容错MTB等。
目前在硬件多线程冗余中研究最多的是主副线程通信方式,通过对中间结果队列的共享使线程的执行速度加快,并实现容错。线程冗余技术对硬件成本的要求不高,而且容错效果好,时间开销小,实时性较高,因此硬件线程冗余技术是一种高效可行的硬件容错方法。
2软件错误的容错方法
关于计算机系统的可靠性的评价与分析,需将其软件的可靠性因素考虑进去,但是对这方面的研究却不太成熟,因此相比硬件容错方法效率较低,导致在评估系统的可靠性是忽略软件的失误率。人为设计引发的软件错误一直存在,在一定的输入刺激下产生各种故障,尚无法用统一数学模型进行描述。软件错误的容错方法通常有恢复快方法、软件多样性方法、防卫式程序设计方法。也可以通过改善软件工程、计算机平台环境和构造异常处理模块等方面来提高容错水平。
计算机系统出现故障后恢复的策略通常可分为前向恢复和后向恢复。前向恢复是指使系统继续向前运行,采取措施是系统连贯,弥补故障造成的不连贯,继续计算;后向恢复是指将系统还原到之前的正确阶段,再重新运行计算。
2.1N-version programming方法
N版本软件容错技术是将软件的各个版本交由不一样的开发团队进行开发,用不同的开发语言和方法,独立的设计工具和环境,以减少不同版本之间出现相关错误的几率。此时各个版本的软件设计开发不能违背以下几个原则:总体设计目标要一致,避免错误恢复;各个模块之间要有统一的标准接口;软件设计过程中模块内部对外透明,要进行封装;各个版本的软件开发必须独立。
2.2恢复块方法
恢复块方法的具体过程是配置有主块和后备块,其功能是相同的,首先是主块开始运行,计算结果,若出现故障,则运行一后备块,再计算结果进行测试,未通过则再运行一后备块,直到测试通过,若测试—直未通过,则说明产生了不可恢复的故障。在设计开发过程中应尽量保证主块与各后备块之间的独立性,以降低它们之间的错误的相关性。此外,测试计算结果的程序有着至关重要的地位,必须毫无错误。
2.3防卫式程序设计方法
防卫式程序设计方法是一种保守的容错机制,它不利用任何传统的容错方法就能实现系统容错。它的具体过程是这样的:若程序在运行过程中出现错误,就会调用程序自带的检测代码和恢复代码进行处理,将系统返回到上一个正确的状态,如此,就实现了对程序中出现的错误的检测,错误类型以及影响范围的估计,并且最终实现错误恢复。
3结语
随着极端及系统的规模不断扩大,越来越多的应用部署在计算机系统中,对系统可靠性的要求也越来越高,因此需要更加完善的容错技术来保障系统的可靠性和安全性。目前的硬件冗余容错方法成本较高,耗能较多,物理空间占用较大;信息冗余容错方法中针对瞬态错误的容错技术还有待深入研究;时间冗余容错方法不仅使延迟增大,对永久性错误没有好的容错机制;并行线程冗余容错方法在合理分配线程资源方面没有完善的解决方案;软件冗余技术相对硬件更加落后;恢复块方法中必须保证测试程序的准确性;防卫式程序设计方法尚缺乏完整的理论依据。因此无论哪种容错技术,虽然已经取得了很多研究成果,但是还有不足,仍有许多问题值得进一步探索。