Lockstep Core 深度 — dual-CPU + comparator (ASIL D 必备)

功能安全L2别名 lockstep · dual-core lockstep · DCLS · delayed lockstep · CPU comparator · split-lock · 更新

本质与导读

本质 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 一次说清:

Lockstep Core — 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 任务。

  • 比较延迟 = 2 clock cycle:Infineon 官方明确 checker 输入与主核输出各延迟 2 cycle 送比较器,做时间分集防共瞬态
  • 不一致 → 报 SMU(Safety Management Unit),不是直接 CPU trap:SMU 集中裁决,4-stage reaction,< 1 μs 驱动 Safe-Out pin 给外部 SBC(TLF35584)
  • AURIX 用 SMU,不是 FCCU —— FCCU 是 NXP / ST 的集中安全模块叫法,别张冠李戴

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 DAURIX 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 FITTC397 Safety Manual(CPU 计算路径)
lockstep SPF 诊断覆盖 DC_SPF99%cycle-by-cycle 比较(ISO Annex D "high")
LBIST / STL 潜伏诊断 DC_LFM90%定期扫描覆盖上限

代入 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 是它抓不到的盲区

缩写表

只列本页用到的工业标准缩写;通用英语…

只列本页用到的工业标准缩写;通用英语 / 单位 / 月份 / 我们的 层/Lx tag 不列。覆盖不到的术语见正文 inline 注释。

缩写全称中文 / 备注
ASILAutomotive Safety Integrity LevelISO 26262 安全完整性等级 QM→A→B→C→D
PMHFProbabilistic Metric for Hardware Failures硬件随机失效概率指标(ISO 26262-5 Clause 9)
SPFMSingle-Point Fault Metric单点失效度量(Clause 8,ASIL D ≥ 99%)
LFMLatent Fault Metric潜伏故障度量(Clause 8,ASIL D ≥ 90%)
FITFailures In Time1e9 小时失效率单位 (1 FIT = 1 failure / 1e9 h)
DCDiagnostic Coverage诊断覆盖率(安全机制抓住危险失效的比例)
SEUSingle-Event Upset单粒子翻转(alpha / 中子引起的 bit-flip)
DCLSDual-Core Lock-Step双核锁步(两核固定并行 + 硬件比较)
SMUSafety Management UnitAURIX 集中安全管理单元
FCCUFault Collection and Control UnitNXP / ST 的集中故障收集裁决单元
ECMError Control ModuleRenesas RH850 集中错误控制模块
CCCCPU Comparator (Core)逐 cycle 比较器(本页通用叫法,各家命名不同)
BISTBuilt-In Self-Test内建自检(LBIST 逻辑 / MBIST 存储器)
ECCError Correcting Code纠错码(SECDED = 单纠双检)
STLSoftware Test Library软件自测库(定期扫 CPU 覆盖)
STOSafe Torque Off安全扭矩关断
FTTIFault Tolerant Time Interval故障容错时间间隔
MCUMicrocontroller Unit微控制器(本页多指车规多核 MCU)
NXPNXP Semiconductors恩智浦半导体
ISOInternational Organization for Standardization国际标准化组织
PWMPulse Width Modulation脉冲宽度调制
SPISerial Peripheral Interface串行外设接口
CANController Area Network控制器局域网
CCFCommon Cause Failure共因失效
DFADependent Failure Analysis相关失效分析(ISO 26262-9 Clause 7)
EVElectric Vehicle电动车
TITexas Instruments德州仪器
SBCSystem Basis Chip系统基础芯片(电源 + 收发器 + 监控集成)

Cross-references