Lockstep Core 深度 — dual-CPU + comparator (ASIL D 必备)
本质与导读
本质 ASIL D 要求单点 PMHF < 10 FIT,而单核 MCU 物理上做不到 —— 一个 alpha 粒子打中 PC / ALU 引起 SEU,纯软件冗余对 SEU 的诊断覆盖只有 ~60%,残余 ~100 FIT。Lockstep 用两个完全相同的 CPU 同步跑同一指令流、硬件比较器每 cycle 比对输出,不一致即报安全裁决单元切 SafeState;checker 核延迟 1.5-2 cycle 错开做时间分集防共因失效,把诊断覆盖提到 99%、残余压到个位数 FIT、SPFM 顶到 ASIL D 线上。
1. Lockstep 架构
下图把 dual-CPU + comparator 一次说清:
3 件结构:
- Master CPU — 主核,运行 ASIL D 任务,输出对外
- Slave / Checker CPU (mirror) — 完全相同结构,执行同一指令,但输出不对外
- CPU Comparator (CCC) — 硬件对比器,每 cycle 比 PC / GPR / ALU / Bus 输出;不一致不直接是 CPU trap,而是报芯片的集中安全裁决单元(AURIX 的 SMU / NXP 的 FCCU / Renesas 的 ECM)
- delay 1.5-2 cycle — checker 核错开再比较,避免共瞬态(共因/共模瞬态 CCF)—— 时间分集,per ISO 26262-9:2018 Clause 7 DFA
不一致 → 安全裁决 → SafeState 切换(STO)。
2. 为什么 ASIL D 必须 lockstep
ASIL D 的三条硬约束都指向"单核物理上不够"。ISO 26262-5:2018 把随机硬件失效拆成三个定量门槛,分属两个 Clause —— 这一点常被记错:
- SPFM ≥ 99%(单点失效度量,Clause 8 Table 4)
- LFM ≥ 90%(潜伏失效度量,Clause 8 Table 5)
- PMHF < 10 FIT(= ,Clause 9 Table 6)
SPFM / LFM 是 Clause 8 的架构度量,PMHF 是 Clause 9 的失效率量化 —— 不要把三者都归到 §9。
一颗 28 nm 车规 CPU 核的危险失效率(SEU 主导:alpha 粒子 + 中子)量级约 FIT。核心矛盾在诊断覆盖率 DC:
- 纯软件冗余(CRC + 算法复算)对 SEU 的 DC 只有 ~50-70% → 残余 FIT,超标 10 倍。
- lockstep 硬件冗余:ISO 26262-5 Annex D 把冗余硬件(cycle-by-cycle 比较)的 DC 归为 "high" ≈ 99% → 残余 FIT ✓。
同一个 DC = 99% 直接把 SPFM 拉到 ,正好压线 ASIL D。这就是"无 lockstep 单核过不了 ASIL D"的量化根因 —— 不是工艺问题,是软件侦测 SEU 的能力上限只有 ~60%,而 lockstep 把 DC 提到 99%。
(PMHF 完整式还含潜伏 / 双点项与暴露时间,但 CPU 计算路径以 SPF 残余为主导;§12 给端到端 FMEDA 预算。)
3. CPU Comparator 比什么
CCC 每 cycle 对比 5 类信号 —— 任何一类失配都意味着两核状态已经分叉:
3.1 PC (Program Counter)
PC 是最关键的一路:PC 不一致意味着两核已跑到不同指令,检测概率 ~100%,是 lockstep 抓 SEU 翻位最直接的信号。
3.2 GPR (通用寄存器)
R0-R15 / D0-D15 全部逐 cycle 对比,覆盖 ALU 中间结果与 caller-saved register —— 寄存器 bit-flip 会在下一次读回时暴露为 mismatch。
3.3 ALU 输出
加法 / 乘法 / 移位 / 逻辑运算结果与 compare flag(Z/N/C/V)都比对,抓运算单元本身的瞬态翻位。
3.4 Bus 写
Memory / Peripheral 的写地址 + 数据(含 PWM / SPI / CAN 写)对比 —— 这一路直接保护"错误值写到外设"这类会立刻影响执行器的危险后果。
3.5 Trap / interrupt 状态
中断响应是否一致、Trap 时 PC 跳转地址是否相同 —— 控制流分叉(而非数据分叉)也要覆盖,否则两核可能"算得一样但跳得不一样"。
4. Master 与 Slave 的分集(防共因失效 CCF)
lockstep 最怕共因失效(CCF):一个扰动同时以相同方式打中两个核,两核输出同一个错值 → 比较器看不出不一致。ISO 26262-9:2018 Clause 7(相关失效分析 DFA)要求证明两核独立性。主流实现用两类分集:
- 时间分集(最关键) — checker 核延迟 1.5-2 cycle 再比较(AURIX 官方实测 = 2 clock cycle):同一 EMI / 电压瞬态打进来,两核采样时刻错开,不会产生相同错误,反而暴露为 mismatch 被抓住
- 空间 / 布局分集 — checker 核在 die 上与主核分离布局、常用镜像(mirrored / rotated)版图,降低同一 alpha 粒子或局部工艺缺陷同时命中两核的概率
- 独立 clock / power 树 — Master / Slave 各自 clock buffer + 供电分区,防共时钟毛刺 / 共电源跌落
这几条正是 ISO 26262-9 DFA 里"独立性论证"要举的硬件证据 —— 各家 die 上的物理间距不公开统一值,别把某个具体微米数写死,重点是"这三类分集是否都做到"。
5. AURIX Lockstep(Infineon TC3xx)
Infineon 官方术语是 Lockstep / diverse lockstep(不是 "DCC" —— DCC / DCLS 是通用行业叫法,AURIX 文档只叫 Lockstep)。TC397 是主流 EV ASIL D MCU:
5.1 架构
TC397 有 6 个用户可见 TriCore 1.6.2P(CPU0-CPU5,均 300 MHz)。其中 CPU0-CPU3 各配一个专用隐藏 checker 核(共 4 个 lockstep 对,对软件不可见、逐 cycle 影子比对)—— 启 CPU0 lockstep 不消耗 CPU1。CPU4 / CPU5 无 checker,跑 QM / ASIL B 任务。
5.2 配置与"可解锁"
AURIX lockstep 可 enable / disable(TMS570 / MPC5744P 硬件强制不可解锁,这是 AURIX 最大差异)。使能不靠某个运行时寄存器,而是 Boot Mode Header bit + reset:
- ASIL D 主控律运行:lockstep ON,SPFM ≥ 99%
- 算力急用:可解锁 CPU2 / CPU3 跑双线程 QM,但切回 ASIL D 前必须重锁(需走 Boot Mode Header + reset module)—— 忘重锁是高频翻车点(见 §13.4)
5.3 comparator 自检 + 故障注入
lockstep comparator 自身若坏了会漏报(危险 latent fault),所以 AURIX 内建连续后台自检:持续向 comparator 两侧输入注入假故障,验证 mismatch 能被正确抓到 —— 这覆盖 comparator 的 LFM。Tier-1 在 ASIL D 开发期另做 fault injection 测试,验证 mismatch → SMU → Safe-Out 全链在 FTTI 内(TC397 Safe-Out < 1 μs)。
寄存器级细节与整片 FMEDA 见 AURIX TC3xx ASIL D 与 AURIX TC3xx FuSa 深度。
6. NXP S32K3 delayed lockstep
S32K3(车身 / 域控 / 国产 EV 常用)的 lockstep 与 AURIX 术语不同,别混:
- 架构:Arm Cortex-M7,120-240 MHz + FPU;家族从单核 → 双核 → lockstep 缩放
- 模式:delayed lockstep(硬件时间 + 空间冗余),不是 split-lock —— split-lock 是 Cortex-R52 的特性,S32K3 的 M7 lockstep 对是固定的、不可在 boot 时拆开
- 不一致 → FCCU(Fault Collection and Control Unit):NXP 的集中安全裁决模块,达 chip safe state 后再 recovery
- 认证:TÜV-SÜD,ISO 26262 ASIL D / IEC 61508 SIL 3
MCU + SBC 联合设计见 MCU SBC ASIL D Integration。
7. Renesas RH850/U2A(G4MH)
Renesas RH850/U2A(跨域 MCU,日系 EV)的 lockstep:
- 架构:G4MH 核,400 MHz,最多 4 个 dual-core lock-step 对(4 + 4 核),28 nm —— 注意是 G4MH,不是更老的 G3KH(G3KH 用在 P1x / F1x 代)
- 不一致 → ECM(Error Control Module):lockstep 架构里集中的错误检测 / 处理模块
- 分集:delayed lockstep(时间分集)
- 主用日系(丰田 / 本田)+ 部分中国(吉利);同代 U2B 带 RISC-V 并行协处理器,U2C 面向 vehicle-motion / BMS
8. ARM Cortex-R52 split-lock
Cortex-R52 是新一代 ASIL D 实时核,冗余机制与前面几家不同:
- split-lock:复位时按 pin 静态配置 —— 可选若干 lockstep 对,或让全部核独立跑(boot 时定,运行中不可改)。这与 DCLS(两核固定并行比较)是不同技术:split-lock 是"可在 boot 时选择是否成对锁步"
- 真实用家:NXP S32Z / S32E(8× Cortex-R52,split-lock 可配,1 GHz,ASIL D,domain / zonal + EV 控制);ST Stellar SR6x 系列亦采 R52
- 趋势:逐步进入 TriCore / PowerPC 的传统地盘,国产高端实时 MCU 也跟随 ARM 路线
(原稿曾写 "NXP S32R5 / TI TDA4":S32R5 是 A53 + M7 雷达处理器、TDA4 用 Cortex-R5F,都不是 R52 的代表 —— R52 的量产代表是 S32Z / S32E。)
9. lockstep 故障 5 大模式
lockstep 机制自身也会失效,5 类要各有应对 —— 这些属于安全机制的 LFM 范畴:
9.1 CCC 内部故障
比较器自身 SEU 会静默漏报所有 mismatch(危险 latent fault)。解决:comparator 做 LBIST + 周期自检(AURIX 用连续后台自检),ASIL D 必带 LBIST。
9.2 transient mismatch(误触发)
单 cycle 偶发不一致(SEU 自动恢复)。SW 用统计 + threshold(如 < 3 次/小时 ignore),但阈值调太松会掩盖真故障(见 §13.7)。
9.3 永久 mismatch
一核硬损 → 持续 mismatch。立即进 SafeState,不 retry —— 持续失配就是硬故障坐实。
9.4 时钟相位偏
Master / Slave clock skew → 假 mismatch。解决:严格 clock tree design + 工厂校准,把 skew 压在比较窗口内。
9.5 SafeState 切换失败
trap handler bug / stack overflow → 抓到了却切不进安全态。解决:硬件 SafeState fallback(SBC 层,如 TLF35584 Safe-Out 直连栅极 ASC)兜底。
10. lockstep 性能成本
lockstep 是纯冗余,不带来任何算力回报,取舍很直接:
- die size +50-80% — checker 核占面积(注:AURIX 的隐藏 checker 比全功能核小,面积代价低于翻倍)
- 功耗 +60-80% — 两套逻辑同步翻转,满 dynamic power
- 价格 +30-50% — MCU 单价上升
- 性能:单线程性能不变(同步执行,不是并行)
- 冗余资源:无(checker 核不能拿去做并行计算)
总评:为 ASIL D 必付的代价,没 lockstep ASIL D MCU 物理上做不到 —— 唯一"省"法是解锁跑 QM(牺牲安全等级换算力,见 §5.2)。
11. 国产 lockstep MCU 现状
国产 ASIL D lockstep MCU 已有真机,梯队分明:
- 芯驰 E3(SemiDrive) — Arm Cortex-R5F,最多 6 核(其中 4 核可配 dual-core lockstep 或独立运行),800 MHz,TSMC 22 nm,ISO 26262 ASIL D + AEC-Q100 Grade 1 双认证(建厂即做 ASIL D)—— 目前国产最接近 AURIX / S32K3 的高端 ASIL D lockstep MCU,用于线控底盘 / 制动 / BMS / 运动控制
- 杰发 AC7840x(AutoChips,四维图新旗下) — Arm Cortex-M4F,ISO 26262 ASIL-B 产品认证 + AEC-Q100 Grade 1(注:ASIL-B 靠 SW 机制 + STL 达标,并非硬件 lockstep 对),量产用于车身 / 电机 / 热管理
- landscape — 云途、旗芯微、国芯等亦在车规 MCU 赛道布局,ASIL-B / D 认证仍在爬坡
国产差距:lockstep 硬件实现已不是瓶颈(芯驰 E3 证明可到 ASIL D),真正差的是量产 track record + Tier-1 信任 + 完整 Safety 工具链 / 文档。
12. Worked design — TC397 lockstep 对的 SPFM / PMHF 贡献
§2 用"单核 200 FIT → 2 FIT"讲原理;这里用 AURIX TC397 的真实 FMEDA 数字,算 lockstep 对在系统度量里到底贡献多少(整片 FMEDA 见 AURIX TC3xx ASIL D §7,本节只聚焦 lockstep 那一行,数字与之一致)。
设 400 V / 100 kW EV 主驱,安全目标 SG-01(扭矩失控),ASIL D。TC397 的 CPU 计算路径(CPU0 / CPU1 lockstep 对)FMEDA 行:
| 量 | 值 | 来源 / 口径 |
|---|---|---|
| CPU 对危险失效率 | 3.0 FIT | TC397 Safety Manual(CPU 计算路径) |
| lockstep SPF 诊断覆盖 DC_SPF | 99% | cycle-by-cycle 比较(ISO Annex D "high") |
| LBIST / STL 潜伏诊断 DC_LFM | 90% | 定期扫描覆盖上限 |
代入 Clause 8 / 9:
- SPF 残余 0.03 FIT → 单看 CPU 路径 SPFM ,压线 ASIL D(Clause 8 Table 4:≥ 99%)。
- PMHF 贡献 0.03 FIT → 占 ASIL D 预算(< 10 FIT,Clause 9 Table 6)的 0.3%,几乎不吃预算。
- 对照反例:若这颗核只有 SW 冗余(DC ≈ 60%),残余 FIT,CPU 路径 SPFM 跌到 —— 远低于 99% 的 ASIL D 门槛。这就是为什么 ASIL D 主控律必须钉在 lockstep 核上,不能放解锁的 free 核。
潜伏侧:comparator / CPU 逻辑的 latent fault 靠 LBIST(DC_LFM = 90%)扫,残余 FIT 进 LFM;若 LBIST / STL 未按周期调度,DC_LFM 贡献归零,系统 LFM 可能跌破 90%(Clause 8 Table 5)—— 见 §13.5。
一句话:lockstep 对用 DC = 99% 换来 0.03 FIT 残余,单靠这一个机制就把 CPU 路径顶到 ASIL D SPFM 线上;去掉它,再好的工艺也补不回 60% → 99% 这 39 个点。
13. 工程 Gotcha(7 个高频翻车点)
lockstep 不是"打开就安全",7 个设计 / 集成层最常翻车的点:
13.1 共模软件故障 lockstep 抓不到
两核跑同一份软件,若是软件 bug(算法错、数组越界),两核算出一样的错值,比较器看不出不一致 → lockstep 完全无效。lockstep 只防随机硬件失效(SEU / stuck-at),系统性软件失效要靠 SW 冗余 / E-Gas 三层监控 / STL,别指望 lockstep。
13.2 共享资源 CCF 击穿 lockstep
两核常共享 SRAM / cache / 时钟 / 电源。共享资源出错(共电源跌落、共时钟毛刺)会同时同样影响两核 → 不产生 mismatch。所以共享 SRAM 必须 SECDED ECC、时钟与电源要独立分区(§4),并在 DFA 里显式论证 —— 这是评审必问的独立性证据。
13.3 启动盲窗:lockstep engage 前的时间
上电到 lockstep 使能之间有一段窗口(BIST + init),这段时间无硬件冗余保护。若 FTTI 短(如 50 ms)而 BIST 需 160 ms(TC397 LBIST + MBIST),复位后无法在 FTTI 内恢复 → 安全态必须由硬件路径(SBC Safe-Out → 栅极 ASC)在 MCU 起来前就位。
13.4 解锁后忘记重锁(AURIX 特有)
AURIX lockstep 可解锁跑双线程 QM 提算力,但切回 ASIL D 前必须重锁(Boot Mode Header + reset)。忘重锁 → 以为在 ASIL D、实际 CPU 无冗余,DC_SPF 从 99% 归零且无任何报警。Safety Plan 要列 SoP 前必查的锁态清单 + DVP 用例。
13.5 DC_SPF 与 DC_LFM 混用
lockstep 的 DC_SPF(99%,即时比较)与 LBIST 的 DC_LFM(90%,周期扫描)是两个不同机制、不同 Safety Manual 章节的数字,不能互相顶替。把 99% 拿去填 LFM、或反之,FMEDA 直接算错,SPFM / LFM 双双失真。
13.6 comparator 自身是潜伏单点
比较器坏了会静默漏报所有 mismatch(危险 latent fault)。它不在 lockstep 的保护范围内,必须另配 LBIST + 连续自检覆盖其 DC_LFM。漏了这条,comparator 就成了整链的单点失效。
13.7 transient 阈值调太松
SEU 引起的偶发单 cycle mismatch 会自恢复,SW 常设阈值忽略(如 < 3 次/小时)。阈值太松 → 把正在恶化的间歇性硬件故障(冷焊 / 老化)一并 ignore,漏抓真故障;太紧 → 频繁误触发 SafeState。阈值要有 FMEDA 依据,不能拍脑袋。
14. Corner cases(3 个反直觉边界)
评审和实车真会踩到的三个边界工况:
14.1 -40°C 冷启动:BIST 超窗
低温下逻辑更慢,LBIST / MBIST 执行时间拉长,可能超出上电 init 窗口 → INIT_OK 迟到,系统误判 lockstep 未就绪或 FTTI 破窗。要在 -40°C 角实测 BIST 时间,别只在常温验证。
14.2 高温老化末期:间歇 mismatch 频率爬升
器件寿命末期(高温 + 高里程),晶体管老化使间歇故障率上升,transient mismatch 从"偶发"变"频发"。若阈值是出厂固定值,末期会频繁误进 SafeState(可用性塌)或反过来漏抓。DVP 要覆盖老化后的 mismatch 分布,阈值最好可标定。
14.3 双点近同时失效:超出 lockstep 假设
lockstep 假设"一次一个随机失效"。极小概率下两核在同一诊断周期内各自独立失效(尤其 CCF 的 β-factor 被低估时),可能产生两核"错得一样"的巧合 → mismatch 消失。这正是 DFA 要量化 β-factor、把共享资源降到最小的原因;PMHF 的双点项也来自这里。
15. 一句话总结
Lockstep core = ASIL D MCU 的物理必要条件 —— 单核对 SEU 的诊断覆盖只有 ~60%、残余 ~100 FIT,无 lockstep 凑不齐 ASIL D 的 SPFM ≥ 99% / PMHF < 10 FIT。Master + Checker + 比较器 + 1.5-2 cycle delay(AURIX = 2)+ 时间/空间分集 + ECC + LBIST 是标配,不一致报芯片安全裁决单元(SMU / FCCU / ECM)。主流:AURIX Lockstep(diverse,EV 主驱)/ S32K3 delayed lockstep / RH850/U2A G4MH / Cortex-R52 split-lock(新);国产 芯驰 E3 已到 ASIL D。选 MCU 必看 lockstep cert + Safety Manual DC 数字 + Tier-1 经验,并记住 lockstep 抓不到共模软件故障与共享资源 CCF。
核心要点
- ASIL D 单核对 SEU DC 只 ~60%、残余 ~100 FIT,必须 lockstep(SPFM/LFM = ISO 26262-5 Clause 8,PMHF = Clause 9)
- Master + Checker + 比较器 + 1.5-2 cycle delay(AURIX = 2)+ 时间/空间分集防 CCF(DFA = 26262-9 Clause 7)
- 不一致 → 报芯片安全裁决单元:AURIX 的 SMU / NXP 的 FCCU / Renesas 的 ECM,非直接 CPU trap
- 四路线:AURIX Lockstep / S32K3 delayed lockstep / RH850 G4MH / Cortex-R52 split-lock;国产芯驰 E3 达 ASIL D
- lockstep DC ≈ 99% 换 SPFM ≥ 99%;共模软件故障与共享资源 CCF 是它抓不到的盲区
缩写表
只列本页用到的工业标准缩写;通用英语…
只列本页用到的工业标准缩写;通用英语 / 单位 / 月份 / 我们的
层/Lxtag 不列。覆盖不到的术语见正文 inline 注释。
| 缩写 | 全称 | 中文 / 备注 |
|---|---|---|
| ASIL | Automotive Safety Integrity Level | ISO 26262 安全完整性等级 QM→A→B→C→D |
| PMHF | Probabilistic Metric for Hardware Failures | 硬件随机失效概率指标(ISO 26262-5 Clause 9) |
| SPFM | Single-Point Fault Metric | 单点失效度量(Clause 8,ASIL D ≥ 99%) |
| LFM | Latent Fault Metric | 潜伏故障度量(Clause 8,ASIL D ≥ 90%) |
| FIT | Failures In Time | 1e9 小时失效率单位 (1 FIT = 1 failure / 1e9 h) |
| DC | Diagnostic Coverage | 诊断覆盖率(安全机制抓住危险失效的比例) |
| SEU | Single-Event Upset | 单粒子翻转(alpha / 中子引起的 bit-flip) |
| DCLS | Dual-Core Lock-Step | 双核锁步(两核固定并行 + 硬件比较) |
| SMU | Safety Management Unit | AURIX 集中安全管理单元 |
| FCCU | Fault Collection and Control Unit | NXP / ST 的集中故障收集裁决单元 |
| ECM | Error Control Module | Renesas RH850 集中错误控制模块 |
| CCC | CPU Comparator (Core) | 逐 cycle 比较器(本页通用叫法,各家命名不同) |
| BIST | Built-In Self-Test | 内建自检(LBIST 逻辑 / MBIST 存储器) |
| ECC | Error Correcting Code | 纠错码(SECDED = 单纠双检) |
| STL | Software Test Library | 软件自测库(定期扫 CPU 覆盖) |
| STO | Safe Torque Off | 安全扭矩关断 |
| FTTI | Fault Tolerant Time Interval | 故障容错时间间隔 |
| MCU | Microcontroller Unit | 微控制器(本页多指车规多核 MCU) |
| NXP | NXP Semiconductors | 恩智浦半导体 |
| ISO | International Organization for Standardization | 国际标准化组织 |
| PWM | Pulse Width Modulation | 脉冲宽度调制 |
| SPI | Serial Peripheral Interface | 串行外设接口 |
| CAN | Controller Area Network | 控制器局域网 |
| CCF | Common Cause Failure | 共因失效 |
| DFA | Dependent Failure Analysis | 相关失效分析(ISO 26262-9 Clause 7) |
| EV | Electric Vehicle | 电动车 |
| TI | Texas Instruments | 德州仪器 |
| SBC | System Basis Chip | 系统基础芯片(电源 + 收发器 + 监控集成) |
Cross-references
- ← 索引
- 功能安全工程师指南 hub — V-cycle + 8 大主题
- ASIL Decomposition 深度 — lockstep 在分解中的位置
- MCU SBC ASIL D Integration — MCU + SBC 联合设计
- AURIX TC3xx ASIL D — SMU 4-stage + 整片 FMEDA + TC397 worked design
- AURIX TC3xx FuSa 深度 — 6 核 + 4 lockstep 对物理布局与可解锁机制
- ST SPC5 FCCU 安全深度 — ST 系 delayed lockstep + FCCU 对照
- TI Hercules TMS570 ASIL 深度 — 固定 lock-step + ESM 对照
- 汽车 MCU — SMU/IOM/MTU 安全三件套全景
- SafeState Manager 深度 — lockstep trap 后处理
- FMEDA 深度 — lockstep 对 PMHF 贡献
- DFA / FMEDA / FTA — Master/Slave 独立性证据