一、冗余设计概述

1.1 什么是硬件冗余

硬件冗余,说白了就是「多准备一套」。

我经常跟团队里的年轻人讲:你开车出门,后备箱里放个备胎,这就是冗余。电子系统里也一样——关键功能不能只靠一份硬件撑着,万一它挂了,整个系统就瘫了,那不行。

从技术角度定义:硬件冗余是指为系统中的关键功能,配置两套或两套以上的硬件资源。正常工作时,这些资源要么同时运行,要么一主一备;一旦主用通道出问题,备用通道立刻顶上。

举个例子,汽车刹车系统里的轮速传感器。我参与过的一个项目,每个车轮装了2个霍尔传感器,而不是1个。为什么?因为如果只有一个传感器,它坏了,ABS、ESC这些安全功能全废了。两个传感器同时坏的概率,比一个坏的概率低好几个数量级——这就是冗余的价值。

核心思想: 用增加硬件成本,换取系统可靠性和安全性的提升。

1.2 为什么需要冗余

这个问题,我每次讲课都会先问学员:「你们觉得,一个芯片的失效率是多少?」

有人答10⁻⁶,有人答10⁻⁹。都对,但都不够。因为哪怕失效率是10⁻¹²,只要系统里只有一个通道,它就有失效的可能。而功能安全标准(比如ISO 26262)要求的是:单点故障不能导致安全目标被违反

说白了,冗余解决两个核心问题:

  • 功能安全: 满足ASIL等级要求。比如ASIL D要求单点故障度量指标(SPFM)≥99%,没有冗余几乎不可能达到。
  • 可靠性: 提升系统的平均无故障时间(MTTF)。我记得有个项目,客户要求系统在10年内失效概率低于1%,不加冗余根本算不过去。

我遇到过最典型的场景是:一个ECU的电源管理芯片,单颗的FIT(失效率)是50。如果只用一颗,系统整体的FIT就是50。但如果用两颗做冷备份,系统FIT可以降到个位数。嗯,这就是冗余在可靠性上的直接体现。

避坑指南: 我曾经见过一个团队,为了省成本,在关键路径上只放了一颗电容。结果EMC测试时,那颗电容炸了,整个项目延期3个月。冗余不是万能的,但没有冗余是万万不能的。

1.3 冗余设计的分类

冗余不是只有一种玩法。根据工作模式和切换方式,我习惯把它分成三类:

1.3.1 静态冗余

静态冗余,也叫「多数表决冗余」。所有冗余模块同时工作,输出通过表决器决定最终结果。

最经典的例子就是三模冗余(TMR)。三个相同的模块同时计算,输出结果「三取二」。只要有两个模块结果一致,系统就认为那是正确的。

我做过一个飞行控制系统的项目,CPU用了三颗,每颗跑同样的代码,输出通过硬件表决器比较。当时有个同事问:「三颗CPU同时坏的概率有多大?」我说:「概率极低,但更关键的是——如果其中一颗因为宇宙射线发生了单粒子翻转,另外两颗还能把它纠正回来。」

静态冗余特点: 无切换延迟,实时性好,但功耗和成本高。

1.3.2 动态冗余

动态冗余,也叫「备份冗余」。平时只有主模块工作,备用模块处于待机状态。一旦检测到主模块故障,系统切换到备用模块。

这种模式在汽车电子里很常见。比如双路供电:主电源挂了,备用电源自动切入。切换时间通常在微秒级,对系统影响很小。

但这里有个坑——我曾经踩过:动态冗余的故障检测机制本身不能失效。如果你用来检测主模块故障的电路自己先坏了,那备用模块永远切不过来。所以,检测电路本身也需要冗余设计。

注意: 动态冗余的切换时间必须满足系统实时性要求。如果切换时间超过系统允许的故障反应时间,冗余就失去了意义。

1.3.3 混合冗余

混合冗余,就是把静态和动态结合起来。一部分模块做静态表决,另一部分做动态备份。

举个例子,我设计过一个ADAS域控制器:

  • 主计算通道用了双核锁步(静态冗余),两个核同时跑,输出比较
  • 另外还配了一个独立的备份计算模块(动态冗余),主通道挂了就切过去

这种方案的好处是:日常运行时,双核锁步能覆盖大部分故障;极端情况下,备份模块兜底。成本虽然高,但安全等级可以做到ASIL D。

1.4 三种冗余的对比

类型 工作方式 切换延迟 成本 典型应用
静态冗余 所有模块同时工作,多数表决 航空航天、高铁控制
动态冗余 主模块工作,备用模块待机 有(微秒~毫秒级) 汽车电子、工业控制
混合冗余 静态+动态组合 部分无,部分有 最高 自动驾驶、安全关键系统

1.5 知识体系框架

下面这张图,是我自己总结的冗余设计知识体系。你把它理解透了,后面章节学起来会轻松很多。

硬件冗余设计 为什么需要冗余 冗余的分类 功能安全 可靠性提升 静态冗余 动态冗余 混合冗余 设计关键点 故障检测机制 切换时间 共因失效 诊断覆盖率 满足功能安全目标 + 提升系统可靠性

这张图里,我把冗余设计的「为什么」「是什么」「怎么做」串在了一起。你仔细看——最底层是最终目标:满足功能安全目标,提升系统可靠性。上面三层,每一层都是下一层的支撑。

我个人习惯,做任何冗余设计之前,先把这张图画出来。哪个环节薄弱,哪个环节有风险,一目了然。

一个小建议: 刚开始学冗余设计,别急着选方案。先搞清楚你的系统需要什么等级的安全目标,再决定用静态、动态还是混合。我见过太多人一上来就搞TMR,结果成本爆炸,性能还过剩。

公众号:蓝海资料掘金营,微信deep3321