0. 一句话定位

工业机器人和的「急停、制动、安全限速」这类功能,不允许跑在会因调度抖动、内存回收而卡顿的通用 Linux 上。高通 IQ 系列(基于 QRB5165 等高通跃龙处理器)的解法,是在主 SoC 之外划出一块物理隔离的安全岛(Safety Island),里面是一颗锁步双核(Lock-Step Dual-Core)微控制器,独立时钟、独立电源、独立看门狗,按 IEC 61508 SIL3 等级设计。

本篇解决三个问题:

  1. SIL3 到底要求什么 —— 不是「写得更小心」,而是硬件架构级约束。

  2. 安全岛长什么样 —— 它和主 SoC 怎么分工、怎么隔离、怎么通信。

  3. 锁步双核凭什么可靠 —— 同一份代码跑两遍、错开两拍、逐拍比对,能检出哪些故障。


1. 为什么需要功能安全:从一次「停不住」说起

设想一台关节机器人,主控 SoC 上跑着 Linux + ROS2,做视觉抓取。某次抓取失败,应用进程 panic,Linux 触发 OOM Killer 回收内存,CPU 调度被阻塞 200 ms。就在这 200 ms 里,机械臂以全速撞向工作台边缘——而本应负责「超速即断电」的软件限速逻辑,此刻正因为内存回收而根本没被调度。

这就是功能安全(Functional Safety)要解决的核心问题:安全功能必须在规定时间内、确定性地被执行,即便系统其它部分已经崩溃

1.1 功能安全 ≠ 功能可靠

概念 关注点 例子
可靠性 Reliability 系统能不能一直正常工作 机器人「能正常抓取」的概率
功能安全 Safety 系统失效时,能不能安全地停下来 机器人失控时「能断电停住」

一台机器人可以很不可靠(经常报错停机),但只要每次失效都能安全停机,它就是功能安全的。反过来,一台从不报错的机器人,如果某次真的失控却停不下来,它就是功能不安全的。高通把安全功能从「跑在 Linux 上的应用」剥离出来,正是为了把「失效 → 安全停机」这条路径变成一条不依赖主系统状态的、硬件保证的快车道

1.2 安全完整性等级(SIL)与失效概率

IEC 61508 用 SIL(Safety Integrity Level) 量化一条安全功能在「要求发生时,能正确执行」的概率,共 4 级:

等级 危险失效概率 PFH, 每小时 风险降低因子 RRC 典型应用
SIL 1 < 10⁻⁶ 10–100 轻微伤害
SIL 2 < 10⁻⁷ 100–1 000 严重伤害
SIL 3 < 10⁻⁷(且硬件容错更高) 1 000–10 000 人员重伤 / 单点致死
SIL 4 < 10⁻⁸ 10 000–100 000 群体性灾难

高通 IQ 系列的安全岛按 SIL3 设计,覆盖绝大多数工业机器人、协作机械臂、AGV 急停场景。SIL3 的关键不是「算得更准」,而是当单一硬件故障发生时,系统仍能安全响应——这直接决定了必须用锁步双核这样的硬件架构。


2. IEC 61508 SIL3 对硬件架构的硬约束

读懂安全岛之前,先看 SIL3 到底卡了哪几条硬件指标。这些指标不是「软件写得规范就行」,而是架构选型时就锁死的。

2.1 硬件故障裕度(HFT)与架构约束

IEC 61508 用 HFT(Hardware Fault Tolerance) 表示「能容忍几个硬件故障仍安全」。HFT=0 意味着任意单点故障即可能导致危险失效,因此对这类系统的诊断覆盖率要求极高。

通道类型 SIL3 所需最小 HFT 含义
Type A(元件失效模式可确定) HFT ≥ 0(但需 ≥ 99% 诊断覆盖) 单通道 + 强诊断,即 1oo1D
Type A HFT ≥ 1(≥ 60% 诊断覆盖) 双通道冗余,即 1oo2 / 2oo2

1oo1D(one-out-of-one with Diagnostics):单一通道 + 诊断。靠锁步比较器把诊断覆盖率做到 ≥ 99%,从而满足 SIL3 对 HFT=0 的严苛要求。这正是高通安全岛锁步双核的架构选型依据——不靠冗余两套独立核,而靠同一指令流双执行 + 逐拍比较,在面积/功耗受限的 SoC 内达成 SIL3。

2.2 诊断覆盖率(DC)与安全失效分数(SFF)

  • DC(Diagnostic Coverage):故障能被自动检出的比例。SIL3 / HFT=0 要求 DC ≥ 99%(很高),意味着几乎每一种 CPU 内部故障都要有检出手段。

  • SFF(Safe Failure Fraction) = (安全失效 + 可诊断危险失效)/ 全部失效。SIL3 / HFT=0 要求 SFF ≥ 99%

把 DC 拉到 99%,靠的是在硬件层面逐拍比较双核输出——这就是锁步机制存在的根本理由。

2.3 平均故障检测时间与响应时间

SIL3 不只要求「能检出」,还要求

  • MTTD(故障检测时间):故障发生到被检出,须远小于安全功能响应周期。

  • 安全功能响应时间:从检测到故障,到执行器进入安全状态(断电 / 制动),通常要求毫秒级

通用 Linux 的中断响应、调度抖动是几十毫秒到百毫秒级且不可预测,根本不可能满足。这把安全功能逼出了主 SoC、逼进了安全岛

2.4 共因失效与独立性要求

SIL3 特别防范共因失效(CCF)——单一外部扰动(电源毛刺、电磁干扰、单粒子翻转)同时打穿两路冗余。对策是物理独立性:独立时钟树、独立电源域、独立复位、独立看门狗。高通安全岛把这几项全部做在主 SoC 之外、独立的电压轨上,正是回应这条约束。


3. IQ 系列安全岛硬件架构

理解了 SIL3 的约束,再看安全岛架构就顺理成章:主 SoC 负责算(Linux/ROS2/视觉/运动规划),安全岛负责「兜底安全」,两者物理隔离,仅通过受限通道通信。

3.1 主 SoC 系统域(Application Domain)

左边大蓝框是大家熟悉的骁龙主 SoC,对应本系列第 2–4 篇讲过的部分:

  • Kryo CPU 复合体:8 核 Cortex-A77/A55,跑 Linux + ROS2。

  • 异构加速子系统:Adreno GPU、Hexagon DSP、HVX+NPU,做视觉推理与信号处理。

  • NoC 片上互连 + LPDDR5 + System Cache:共享内存与总线。

  • 外设接口:MIPI CSI-2 摄像头、PCIe/USB、I2C/SPI/UART、CAN-FD。

关键点在底部那条红框注解:主系统域是「非安全」的——调度抖动、内存回收、中断延迟都不可预测,因此它可以做感知和决策,但不能做最终的安全裁决。所有「感知结果 → 安全动作」的判定,必须把安全相关的部分交给右侧安全岛。

3.2 功能安全域(Safety Island)

右边红框就是安全岛,与主 SoC 物理隔离,独立成域:

  • 锁步双核 CPU:两颗 Cortex-R 风格的实时核,一主一校验,逐拍比较(详见第 4 节)。

  • 专用 TCM/SRAM:带 ECC 的紧耦合内存,避免被主 SoC 内存访问干扰。

  • 安全 RTOS:ASIL-D 认证的小型实时内核,行为可分析、可认证。

  • 安全外设:安全看门狗 SWDT、故障检测 FDI/BIST、安全 GPIO/PWM——这些是直接驱动急停、制动、断电的物理通道。

  • 独立时钟 / 电源 / 复位:绿色条,是抵抗共因失效的物理独立性保障。

3.3 隔离墙与跨域通信

两域之间那道灰色窄条是物理隔离墙。主 SoC 不能直接读写安全岛内存,安全岛也不能反过来干扰主系统。两者唯一的交互通道是中间那条虚线箭头:受限的 IPC Gateway

这条通道是有意设窄的:

  • 它是单向/受限的:主系统可以「请求」安全动作,但不能「直接执行」。

  • 安全岛永不信任主系统的命令,任何安全动作都由安全岛自己用独立逻辑裁决后再输出。

  • 即使主 SoC 整个 Linux 崩溃,安全岛仍能靠独立看门狗检测到「主系统心跳丢失」,自主进入安全状态。

3.4 安全输出通道

图右下绿色箭头是整条链路的终点:安全岛 → 安全输出通道 → 急停 / 制动 / 电机断电。这条路径完全不经过主 SoC,是 SIL3 要求的「失效时安全响应」的物理保证。下一篇会把它接到工业机器人制动系统上做实战。

一句话归纳:主 SoC 是「大脑」,负责看和想;安全岛是「安全脊髄」,负责在最坏情况下独立地让机器停下来。SIL3 的所有硬件约束,最终都落在这套「隔离 + 独立 + 受限通信」的物理架构上。


4. 锁步双核机制

安全岛之所以能用 1oo1D(单通道 + 诊断)达到 SIL3,核心靠的是锁步双核 + 周期级比较器。这一节拆开它的执行模型、比较器和故障覆盖能力。

4.1 双核执行与延迟比较模型

图 2 左侧是时间轴。同一份指令流同时送进两颗核,但校验核滞后固定延迟 δ(典型 2 个时钟周期)

周期 Core 0 主核 Core 1 延迟校验核
T 取指 IF / 译码 ID —— 等待 ——
T+1 执行 EX / 访存 MEM 取指 IF / 译码 ID
T+2 写回 WB 执行 EX / 访存 MEM
T+3 —— 空闲 —— 写回 WB

这个「错开 2 拍」看似只是时序技巧,实则有深意:

  • 避开共模瞬态故障。电源毛刺、电磁干扰、单粒子翻转这类瞬态扰动,往往在同一时刻影响两个执行单元。如果两核完全同步,瞬态故障会同时打中两核、产生相同的错误结果,比较器无从分辨。延迟 2 拍后,瞬态扰动发生时主核已经在执行,而校验核还在「等待」,两者不在同一执行拍,于是同一扰动只会打中其中一个——结果失配,比较器就能检出。

  • 让信号稳定后再比对。主核执行完毕、结果写回寄存器、信号稳定后,校验核才在延迟拍复现同一指令,此时比较的是稳定后的结果,避免了比较器读到毛刺期的不确定值。

4.2 比较器与故障响应链路

图 2 右上是整条响应链:

Core 0 输出 ─┐
            ├─→  比较器 Comparator  ─┬─ 结果一致 → 继续执行
Core 1 输出 ─┘  (逐拍比对)         └─ 结果失配 → 安全异常 → 触发安全中断 + 强制复位
(延迟 δ)                          + 独立看门狗 SWDT

要点:

  • 逐拍比较:不是「跑完一段比对一次」,而是每个时钟周期对双核的输出向量(寄存器值、总线信号、控制信号)比对,故障检测在纳秒级完成。

  • 失配即安全异常:一旦失配,比较器立刻产生安全中断,并强制锁步核复位,进入安全状态。这个判定在硬件层面完成,不经过任何软件,因此不依赖软件是否还能运行

  • 与独立看门狗联动:若故障导致核本身停滞、程序跑飞,逐拍比较器可能「停不下」——这时由独立看门狗 SWDT 兜底,超时即复位。两条机制互补,覆盖「能比对」和「没法比对」两种情形。

4.3 故障覆盖能力

图 2 右下四张卡是锁步机制能覆盖的故障类别,这正是 SIL3 要求 DC ≥ 99% 的依据:

故障类型 例子 锁步如何检出
共模瞬态故障 SET、单粒子翻转 SEU 延迟核错开执行拍,避开发恢复周期,双核结果不一致 → 可检出
永久故障 Core 某一路径固定失效 同一指令双核结果长期不一致 → 可检出
寄存器 / 总线故障 控制寄存器、数据通路 逐拍比较输出向量,覆盖控制流与数据流
核停滞 / 程序跑飞 死循环、停机 比较器 + 独立 SWDT 双重监测,超时即复位

需要诚实说明其边界:锁步双核对软件共性设计错误(两核跑同一份错误代码,结果相同但都错)无能为力——因为比较器看到的是「一致」。这类故障要靠安全 RTOS 的流程化设计、多样化的软件校验(如端到端校验、独立的安全监督任务)来兜底,这也是下一篇「安全通信协议」要解决的内容。锁步机制覆盖的是随机硬件故障,不是系统性软件故障

4.4 从锁步到 SIL3 的闭合

把上面的点串起来,就能回答「为什么锁步双核能支撑 SIL3」:

  • HFT=0 + DC≥99%:锁步比较器把单通道的诊断覆盖率做到 99% 级别,满足 SIL3 对 1oo1D 的架构约束。

  • 毫秒级检测与响应:逐拍比较使故障检测在纳秒级完成,安全中断与复位是硬件硬连线动作,远快于通用 Linux。

  • 抗共因失效:延迟执行 + 独立时钟/电源/复位,把共模瞬态和共因失效的风险压到最低。

  • 看门狗兜底:独立 SWDT 覆盖核停滞这种「比较器也无能为力」的情形,补全故障检测的最后一环。

至此,SIL3 在硬件层面被一套「锁步双核 + 比较器 + 独立看门狗 + 物理隔离安全岛」的架构兑现。下一篇会从硬件转向运行时:看门狗如何分级、故障检测 FDI/BIST 怎么跑、安全通信协议怎么防数据损坏,最后落到工业机器人制动系统实战。

5. 运行时视角:安全岛的启动与监控流程

把前两节的静态架构串成一条运行时流程,就是安全岛上电到稳态监控的完整生命周期。

流程里值得关注的几处与 SIL3 的对应关系:

  • 独立上电与自检(P1–P3):安全岛先于、独立于主 SoC 上电,并做 BIST 自检。自检不过直接进安全状态——绝不带着未知硬件缺陷投入运行

  • 比较器逐拍比对(L3–L4):第 4 节的锁步机制在每个安全周期内持续运行,失配即走 FAULT 分支。

  • 三条通往安全状态的路径FAULT(比较器失配)、WDTX(看门狗超时)、HB(主系统心跳丢失)任意一条触发,都独立地、不经过软件地进入 SAFE。这对应 SIL3「单一故障仍能安全响应」。

  • 安全输出独立动作(SAFE):最终的急停/制动断电不经过主 SoC,呼应第 3 节的安全输出通道。

6. 小结

本篇做了三件事:

  1. 厘清 SIL3 的硬件约束:HFT、DC≥99%、SFF≥99%、毫秒级响应、抗共因失效——这些是架构级约束,不是软件规范能补的。

  2. 给出安全岛架构:主 SoC 算、安全岛兜底,物理隔离 + 受限 IPC + 独立安全输出通道。

  3. 拆解锁步双核:延迟 2 拍执行 + 逐拍比较器 + 独立看门狗,构成 1oo1D 架构,把随机硬件故障检测做到 99% 覆盖。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐