在理论的情况下,一个故障恢复方法只有证明了逻辑上和时序上的正确性后方能使用。理论上FMET可以证明逻辑正确性——注入故障并检测内部重构是否清除了故障的不利影响。但是证明内部重构的时序性则是另一回事。现实中,由于内部重构使用了演化算法,其时序正确性不能从形式上得到证明。这是因为演化算法是带有随机特性的,不能保证每一次独立运行能给出重复性的结果,因而不能保证在运行一定的代数后总能找到一个期望的电路配置。
评估时序的正确性选择一个合适的角度非常重要。不能先运行演化算法然后与修复时间作比较,而应该先确定修复时间,然后再算出留给演化算法的时间能够演化多少代的。如果最终演化配置结果不能满足要求,且配置过程也不能分阶段进行,那么就应该考虑其他的修复方法。
演化算法是一种非确定性算法。因此任何对基于演化硬件的算法的收敛证明,意味着试图证明一个随机算法能够在一个固定时间段内收敛到一个最优解,这完全不可能实现的。
使用内部重构时,降低风险的方式有很多,其具体形式与故障是可预测的还是不可预测的有关。在某些情况下处理一些故障的唯一方法是修改逻辑正确性的定义。
最小可预测故障风险
可预测故障指的是进行FMEA或者FTA分析时能够识别的那些故障,这些故障的详情可知,且它们的影响效果可被观察到。此外,由于分析结果可给出故障发生及其产生效果的时间,因此故障恢复时间是可知的。
可预测故障的一个好处是发生故障时不需要进行任何演化。在系统投入使用前,可以将事先确定的逻辑正确的配置、存放于存储器中;无论何时发生故障,只需简单地下载存储的配置即可。这种情况下,由于再编程时间很短。因而很容易满足时序正确性。
FMET可以验证逻辑正确性,但首要的问题是在进行FMET之前要确定内部重构是否满足故障恢复时限的要求。此时仿真就非常有用。当识别出故障后设计师可以设想修复故障所需要的电路类型,使用演化算法来搜索硬件配置方案,并用仿真器来评估测试。由于此时的目的只是为了估计演化算法的运行时间,算法找到的配置方案不必很完美,因此当发现一个足够接近最佳配置方案时,搜索即可中止。根据式估计出物理硬件的实际配置时间,然后用来与故障恢复时限比较,这样可以快速明确内部重构方案是否可行。
当且仅当重构时间少于故障恢复时限时,才需进行FMET。降低风险的最佳方式是给予足够宽裕的时间。换句话说,内部重构的时间应远短于故障恢复时限。“远短于”的定义跟具体系统及其修复时限有关。对于安全关键系统,即故障可能引起整体崩溃、物理损伤,甚至完全毁坏的系统,修复时限应数倍于重构时间。对于非安全关键系统,这个要求可以放宽,不过缩短重构时间总是有利于降低风险的。这意味着设计者在确定最长重构时间前必须清楚什么是可承受的风险水平。
另一个降低风险的方法是使用板载的预防性维护程序的概念。主要思路是分阶段进行故障恢复。也就是说在每一个长度固定的时间段,内部重构仅搜索有部分改进的方案,当前阶段的演化算法使用前一阶段最后保存的种群作为初始种群。虽然系统(仍带有故障)的性能还不足以满足要求,但阶段与阶段之间保持在线工作状态。此过程反复进行直到最终完全修复。
下面举例说明多阶段修复过程。一个放大器电路的故障不仅降低了增益,还引起了电源负载电流的增大。电流增大所产生和集聚的热量,如果不能在45min内释放掉就会引发更多的故障。假设所用的内部重构过程不能在45min 内完成,于是将其分为两个30min阶段进行。第一阶段的重构目标只是降低电源负载,一旦热量散发出去,第二个修复阶段就能够重新配置放大器以恢复电路增益。注意重配置的顺序是如何安排的。
一个候选电路的适应度是基于该电路与种群中其他所有电路间的平均相关性计算得到的。这会促使电路:
(1)在无故障时产生较少错误。
(2)在有故障时产生较少错误。
(3)拥有与当前种群中其他电路不同的错误分布。
最后一项特别重要,因为它可以使演化算法查找对故障敏感度低的电路。最适合于集合体的电路就是具有最小相关性的电路。
最小化不可预测故障风险
不可预测故障是由超出设计者控制范围的事件引起的。不可预测故障包括两个源头:预料之外的持续性环境变化和外因引起的破坏性结果。
必须强调的是“不可预测”并不等于“不确定”。不可预测的另一层含义是“计划之外”,这个区别很重要,会影响到如何重新定义逻辑的正确性。在讨论逻辑重定义问题之前,需要明确计划外事件和不确定事件的区别。
逻辑正确性的定义应如何改变,与事件是可预测的还是不可预测的,以及修复措施所提供的能力有关。这可以通过两类事件来说明:环境改变(可预测事件)和外因作用(不可预测事件)。
(1)环境改变。当工作环境改变时,部件的特性会发生变化,一个新的硬件配置也许能发掘变化的特性从而恢复失去的功能。这类问题的修复目标与可预测故障一致,必须满足逻辑正确性的要求,即目标是恢复初试系统的所有功能。
(2)外因作用。由于无法预知会引发什么故障,外因作用可能不仅会给系统带来比较严重的破坏,而且对于造成的最终后果也是无法预知的。由于不能保证采取的故障恢复措施能有效处理不可预测故障模式,因而不能保障逻辑正确性。在启动一个修复措施前必须判断其有效性。从这个角度看,内部重构确有其优势:理论上它可以生成设计师从未设想过的电路配置。
在真正的灾难行情况发生时,可能无法将失去的功能恢复到有效的程度。这种情况下,正确的做法应该是从恢复系统功能转向确保系统的生存——这与通常容错系统中对逻辑正确性的解释是相矛盾的。内部重构会寻找一个稳定的系统配置已中止故障扩大。其他的修复行动可以在被破坏的系统离线后再进行。
对于不可预测故障需要注意的是,在某些情况下,时序正确性是可以忽略的。这是否意味着故障恢复第一原则的无效呢?绝对不是,当修复可预测故障时第一原则总是有效的。其理由是可预测故障安全可以通过分析来确定其后果与修复时限,时序正确性所需条件是可以明确的。相反,不可预测故障是不可分析的,关于修复时间的讨论都无意义,再次情形下的时序正确性无法确定。
实践建议
Greenwood等人认为,如果用于重构配置搜索的演化算法具有较高的选择压力和强调变异,那么其性能可能是最佳的。理论上,任何演化算法都可用于配置的搜索,但从实践的观点来看,应避免使用遗传规划算法。用于演化硬件的遗传规划算法应在大型多处理器系统上执行以缩短运行时间。这对容错系统来说确实是个大问题,因为如果没有足够的空间来安置冗余硬件,那就更没有空间来容纳一个大型多处理器系统了。在单处理器系统上运行一个成熟的遗传规划算法,似乎不太可能在几小时内快速完成搜索以满足故障恢复时限要求。
某些器件可以实现局部重构,即配置的改变可以限定在器件的一个小范围内进行。具体思路是在配置流中找出需要改动的特定区域,为了识别从哪个地址开始重构,还需要在配置流中插入一个标志。局部重构减少了Tpgm。这对Tpgm和Tfit为同一数量级时非常重要。
在理论的情况下,一个故障恢复方法只有证明了逻辑上和时序上的正确性后方能使用。理论上FMET可以证明逻辑正确性——注入故障并检测内部重构是否清除了故障的不利影响。但是证明内部重构的时序性则是另一回事。现实中,由于内部重构使用了演化算法,其时序正确性不能从形式上得到证明。这是因为演化算法是带有随机特性的,不能保证每一次独立运行能给出重复性的结果,因而不能保证在运行一定的代数后总能找到一个期望的电路配置。
评估时序的正确性选择一个合适的角度非常重要。不能先运行演化算法然后与修复时间作比较,而应该先确定修复时间,然后再算出留给演化算法的时间能够演化多少代的。如果最终演化配置结果不能满足要求,且配置过程也不能分阶段进行,那么就应该考虑其他的修复方法。
演化算法是一种非确定性算法。因此任何对基于演化硬件的算法的收敛证明,意味着试图证明一个随机算法能够在一个固定时间段内收敛到一个最优解,这完全不可能实现的。
使用内部重构时,降低风险的方式有很多,其具体形式与故障是可预测的还是不可预测的有关。在某些情况下处理一些故障的唯一方法是修改逻辑正确性的定义。
最小可预测故障风险
可预测故障指的是进行FMEA或者FTA分析时能够识别的那些故障,这些故障的详情可知,且它们的影响效果可被观察到。此外,由于分析结果可给出故障发生及其产生效果的时间,因此故障恢复时间是可知的。
可预测故障的一个好处是发生故障时不需要进行任何演化。在系统投入使用前,可以将事先确定的逻辑正确的配置、存放于存储器中;无论何时发生故障,只需简单地下载存储的配置即可。这种情况下,由于再编程时间很短。因而很容易满足时序正确性。
FMET可以验证逻辑正确性,但首要的问题是在进行FMET之前要确定内部重构是否满足故障恢复时限的要求。此时仿真就非常有用。当识别出故障后设计师可以设想修复故障所需要的电路类型,使用演化算法来搜索硬件配置方案,并用仿真器来评估测试。由于此时的目的只是为了估计演化算法的运行时间,算法找到的配置方案不必很完美,因此当发现一个足够接近最佳配置方案时,搜索即可中止。根据式估计出物理硬件的实际配置时间,然后用来与故障恢复时限比较,这样可以快速明确内部重构方案是否可行。
当且仅当重构时间少于故障恢复时限时,才需进行FMET。降低风险的最佳方式是给予足够宽裕的时间。换句话说,内部重构的时间应远短于故障恢复时限。“远短于”的定义跟具体系统及其修复时限有关。对于安全关键系统,即故障可能引起整体崩溃、物理损伤,甚至完全毁坏的系统,修复时限应数倍于重构时间。对于非安全关键系统,这个要求可以放宽,不过缩短重构时间总是有利于降低风险的。这意味着设计者在确定最长重构时间前必须清楚什么是可承受的风险水平。
另一个降低风险的方法是使用板载的预防性维护程序的概念。主要思路是分阶段进行故障恢复。也就是说在每一个长度固定的时间段,内部重构仅搜索有部分改进的方案,当前阶段的演化算法使用前一阶段最后保存的种群作为初始种群。虽然系统(仍带有故障)的性能还不足以满足要求,但阶段与阶段之间保持在线工作状态。此过程反复进行直到最终完全修复。
下面举例说明多阶段修复过程。一个放大器电路的故障不仅降低了增益,还引起了电源负载电流的增大。电流增大所产生和集聚的热量,如果不能在45min内释放掉就会引发更多的故障。假设所用的内部重构过程不能在45min 内完成,于是将其分为两个30min阶段进行。第一阶段的重构目标只是降低电源负载,一旦热量散发出去,第二个修复阶段就能够重新配置放大器以恢复电路增益。注意重配置的顺序是如何安排的。
一个候选电路的适应度是基于该电路与种群中其他所有电路间的平均相关性计算得到的。这会促使电路:
(1)在无故障时产生较少错误。
(2)在有故障时产生较少错误。
(3)拥有与当前种群中其他电路不同的错误分布。
最后一项特别重要,因为它可以使演化算法查找对故障敏感度低的电路。最适合于集合体的电路就是具有最小相关性的电路。
最小化不可预测故障风险
不可预测故障是由超出设计者控制范围的事件引起的。不可预测故障包括两个源头:预料之外的持续性环境变化和外因引起的破坏性结果。
必须强调的是“不可预测”并不等于“不确定”。不可预测的另一层含义是“计划之外”,这个区别很重要,会影响到如何重新定义逻辑的正确性。在讨论逻辑重定义问题之前,需要明确计划外事件和不确定事件的区别。
逻辑正确性的定义应如何改变,与事件是可预测的还是不可预测的,以及修复措施所提供的能力有关。这可以通过两类事件来说明:环境改变(可预测事件)和外因作用(不可预测事件)。
(1)环境改变。当工作环境改变时,部件的特性会发生变化,一个新的硬件配置也许能发掘变化的特性从而恢复失去的功能。这类问题的修复目标与可预测故障一致,必须满足逻辑正确性的要求,即目标是恢复初试系统的所有功能。
(2)外因作用。由于无法预知会引发什么故障,外因作用可能不仅会给系统带来比较严重的破坏,而且对于造成的最终后果也是无法预知的。由于不能保证采取的故障恢复措施能有效处理不可预测故障模式,因而不能保障逻辑正确性。在启动一个修复措施前必须判断其有效性。从这个角度看,内部重构确有其优势:理论上它可以生成设计师从未设想过的电路配置。
在真正的灾难行情况发生时,可能无法将失去的功能恢复到有效的程度。这种情况下,正确的做法应该是从恢复系统功能转向确保系统的生存——这与通常容错系统中对逻辑正确性的解释是相矛盾的。内部重构会寻找一个稳定的系统配置已中止故障扩大。其他的修复行动可以在被破坏的系统离线后再进行。
对于不可预测故障需要注意的是,在某些情况下,时序正确性是可以忽略的。这是否意味着故障恢复第一原则的无效呢?绝对不是,当修复可预测故障时第一原则总是有效的。其理由是可预测故障安全可以通过分析来确定其后果与修复时限,时序正确性所需条件是可以明确的。相反,不可预测故障是不可分析的,关于修复时间的讨论都无意义,再次情形下的时序正确性无法确定。
实践建议
Greenwood等人认为,如果用于重构配置搜索的演化算法具有较高的选择压力和强调变异,那么其性能可能是最佳的。理论上,任何演化算法都可用于配置的搜索,但从实践的观点来看,应避免使用遗传规划算法。用于演化硬件的遗传规划算法应在大型多处理器系统上执行以缩短运行时间。这对容错系统来说确实是个大问题,因为如果没有足够的空间来安置冗余硬件,那就更没有空间来容纳一个大型多处理器系统了。在单处理器系统上运行一个成熟的遗传规划算法,似乎不太可能在几小时内快速完成搜索以满足故障恢复时限要求。
某些器件可以实现局部重构,即配置的改变可以限定在器件的一个小范围内进行。具体思路是在配置流中找出需要改动的特定区域,为了识别从哪个地址开始重构,还需要在配置流中插入一个标志。局部重构减少了Tpgm。这对Tpgm和Tfit为同一数量级时非常重要。