4. 故障监控核心概念
在功能安全工程中,故障(Fault)、错误(Error)、失效(Failure)并不是三个可以互换的同义词,它们描述的是同一因果链上不同阶段的状态。理解这条链,是设计 RH850 故障监控机制、计算 FTTI 以及评估安全机制有效性的前提。ISO 26262 对这三个术语有严格定义,工程实践中若混淆,往往会导致诊断覆盖率虚高、安全目标无法论证。
一、核心原理:故障—错误—失效的因果链
三者构成一条单向传播链:故障是原因,错误是中间状态,失效是最终表现。故障是系统或部件中可能导致错误的异常物理条件,例如电阻开路、存储单元位翻转、时钟抖动超限。错误是故障在系统内部引起的、与正确值或正确状态不一致的表现,例如寄存器中某一位由 0 变为 1。失效则是系统或部件在规定的条件下无法完成规定功能,是错误传播到服务边界后对外可见的结果。
关键点在于:故障不一定立即导致失效。如果错误被安全机制及时检测并处理,系统仍可维持功能或进入安全状态。这正是故障监控存在的意义——在错误传播为失效之前将其拦截。RH850 的锁步核、ECC、看门狗、时钟监控等机制,本质上都是在链的不同位置设置拦截点。
二、故障容错时间间隔 FTTI 的工程含义
故障容错时间间隔(Fault Tolerant Time Interval, FTTI)是指从故障发生到必须进入安全状态之间的最大时间窗口。它由两部分组成:故障检测时间与故障反应时间。安全机制必须在 FTTI 内完成检测并执行响应,否则错误将传播为危害性失效。
在 RH850 项目中,FTTI 通常由整车或系统层分配,例如某 EPS 系统要求 FTTI ≤ 100 ms。工程师需要反推:锁步核比较周期、ECC 中断响应延迟、看门狗超时窗口、安全状态切换时间之和,必须小于该值。若某一环节超限,就需要缩短诊断周期或提高安全机制优先级。
FTTI 计算示例:
FTTI 预算 = 100 ms
├─ 锁步核比较与错误上报:≤ 10 ms
├─ ECC 中断响应与处理:≤ 5 ms
├─ 看门狗超时窗口:≤ 50 ms
├─ 安全状态切换(关断输出):≤ 20 ms
└─ 余量:15 ms
合计 = 100 ms,满足 FTTI 要求
三、安全机制与故障分类的对应关系
安全机制的设计必须针对具体的故障模式。ISO 26262 将故障分为单点故障、残余故障和多点故障。单点故障是未被任何安全机制覆盖、直接导致失效的故障;残余故障是安全机制未完全覆盖的部分;多点故障则需要两个及以上故障组合才导致失效。RH850 的安全机制通常组合使用,以覆盖不同故障类型。
| 故障类型 | 典型示例 | RH850 安全机制 | 覆盖目标 |
|---|---|---|---|
| 单点故障 | CPU 执行单元位翻转 | 锁步核比较 | 检测执行错误 |
| 残余故障 | ECC 无法纠正的双位错误 | ECC + 中断上报 | 检测并进入安全状态 |
| 多点故障 | 时钟漂移 + 看门狗失效 | 时钟监控 + 独立看门狗 | 组合覆盖 |
| 潜伏故障 | 未触发的诊断电路失效 | 上电自检 + 周期自检 | 缩短潜伏时间 |
四、案例场景:RH850 锁步核错误拦截
假设 RH850 主核与锁步核在某一周期执行同一条指令,主核因 α 粒子撞击导致 ALU 输出错误,锁步核输出正确。比较器在下一个周期检测到不一致,触发错误信号。此时:
- 故障:α 粒子撞击导致晶体管状态翻转;
- 错误:主核 ALU 输出与锁步核不一致;
- 安全机制:锁步比较器检测到差异,上报错误;
- 响应:系统在 FTTI 内进入安全状态,避免失效。
若比较器本身失效且未被自检覆盖,则该错误可能传播为失效。因此,锁步核通常还需要配套的比较器自检和错误注入测试,以覆盖潜伏故障。
工程提示:在 RH850 中,锁步核错误通常通过 ECM(Error Control Module)或 ICU 上报,需在启动代码中配置错误响应策略,并确保中断优先级高于普通任务,以满足 FTTI 约束。
五、常见误区与复盘
误区一:把故障等同于失效。故障是原因,失效是结果。安全机制的价值正是在两者之间拦截。
误区二:认为有安全机制就一定安全。安全机制本身也可能失效,必须评估其诊断覆盖率和潜伏故障时间。
误区三:忽略 FTTI 中的反应时间。检测到错误只是第一步,若安全状态切换耗时过长,仍会超出 FTTI。
误区四:只关注单点故障。多点故障和潜伏故障同样需要系统化分析,否则安全论证不完整。
复盘时建议使用故障树或 FMEA 表格,逐条列出故障模式、对应安全机制、检测时间、反应时间和残余风险。只有将故障—错误—失效链与 FTTI 预算对齐,RH850 的故障监控设计才具备可论证的安全完整性。