Hypervisor / 混合关键度整合深度 — 共核 FFI / 多核干扰 / hypervisor 资质

功能安全L1别名 混合关键度整合 · Hypervisor 虚拟化 · QM+ASIL-D 共核 · 多核干扰通道 · 多核 WCET · hypervisor 资质 · 更新

本质与导读

本质 zonal/中央计算把 QM+ASIL-D 逼到共享同一颗多核 SoC,ISO 26262 要求用 type-1 hypervisor 强制 FFI;真正的难点不是空间隔离(MMU 好做),而是多核共享 LLC/DRAM/interconnect 的争用破坏时间隔离、让 WCET 无法 sound bound,只能把动态争用变静态配额;而 hypervisor 本身是隔离的单点,必须按最高共存 ASIL-D 资质,否则 FFI 论证整体塌掉。

主线坐标:横轨 · 功能安全(跨站) · ↑ 全景主线

1. 为什么混合关键度整合是必然

E/E 架构演进的终点是算力集中:分布式 100+ ECU → 域控(动力/底盘/座舱/ADAS 各一域)→ 区域控制 + 中央计算。把多个 ECU 合到少数高性能多核 SoC(CPU 多核 + GPU/NPU),BOM/线束/重量全降。

代价:不同 ASIL 被逼共享一颗芯片ISO 26262 的铁律——混合等级共存,要么全按最高 ASIL 开发(QM 的娱乐代码也按 ASIL-D 做,成本爆炸),要么证明 FFI:低 ASIL/QM 失效不污染 ASIL-D。整合的全部工程难点,就是在一颗多核 SoC 上把 FFI 做扎实——比单 ECU 难,因为共享资源多、干扰通道多。


2. Hypervisor — 多核多 OS 共存的 FFI 载体

FFI 页 讲的是单核/单 OS 内的分区(MPU 内存分区 + OS 时间切片 + Safety OS 底座)。多核 SoC 上要让多个不同 OS(AUTOSAR Classic 跑 ASIL-D 控制 + Linux 跑 QM 座舱)共存,载体升级为 Hypervisor:

多核 SoC 上 hypervisor 分区 + 共享资源干扰通道

  • type-1(裸机)hypervisor 直接跑硬件上,把 SoC 分成多个 VM/partition,各跑各的 OS
  • 空间隔离:硬件虚拟化(ARMv8 EL2 + stage-2 二级地址翻译 / SMMU)+ core 静态分配,VM 间内存/外设互不可见
  • 时间隔离:hypervisor 调度器分配 core 时间 + 资源配额
  • guest 形态:RTOS/AUTOSAR guest 常走 para-virtualization(改 guest 配合 hypervisor,开销小、时序确定);Linux/Android guest 走 full virtualization(不改 guest,开销大)——混合 ASIL 里 ASIL-D guest 偏 paravirt 求时序确定
  • 关系:FFI 是 ISO 要求(共存的硬要求在 26262-9 Clause 6「Criteria for coexistence of elements」;26262-6 Annex D[informative] 给软件 FFI 的三类机制:时序-执行 / 内存 / 信息交换;FFI 页 再拆成工程四维);Safety OS 是单 OS 载体;hypervisor 是多 VM 载体,把"OS 内分区"升到"VM 间分区"
  • 商用:QNX Hypervisor / Vector / ETAS RTA-HVR / OpenSynergy COQOS / PikeOS(SYSGO)

3. 多核干扰通道 — 时间隔离的真敌人

空间隔离(MMU/SMMU)相对好做。难的是时间隔离——多核共享物理资源会互相拖慢,VM-A 的执行时间被 VM-B 的行为影响:

  • 共享 LLC(末级 cache):一个 core 狂刷 cache 把另一 core 的数据挤出 → cache miss 暴涨 → 执行时间膨胀
  • DRAM 控制器 + 内存总线:多 core 争 DRAM 带宽,访存排队 → 延迟随其他 core 的负载变
  • interconnect / NoC:片上互联争用
  • 共享外设 / DMA:DMA 抢总线、外设寄存器争用

这些是时间干扰通道:它们让 ASIL-D 任务的执行时间不再只取决于自己,QM core 一忙就可能饿死(starvation) ASIL-D → 错过 deadline。空间隔离防不住这类**"合法但拖慢"**的干扰。


4. 缓解 — 把动态争用变静态配额

多核 FFI 的核心思路:别让资源动态争用,改成静态配额,让干扰可界定:

  • cache 分区:way-based partitioning / page coloring → 给 ASIL-D VM 独占 cache way,不被 QM 挤出(page coloring 的代价:占用页分配自由度、与大页冲突、需 OS 介入)
  • 内存带宽调控:MemGuard / bandwidth regulation → 给每 core 配带宽配额,限 QM core 的访存速率,保 ASIL-D core 的带宽
  • DRAM bank 分区:不同 core 用不同 bank,减 row-buffer 冲突
  • core 静态独占:ASIL-D VM 独占 core(不与 QM 共 core),消核内抢占干扰
  • 外设/DMA 静态分配:每 VM 固定外设,DMA 通道隔离

把"动态争用"变"静态配额"后,ASIL-D 的最坏访存延迟才有上界 → 时间 FFI 才成立。


5. 多核 WCET 为什么失效

时间 FFI 要落到 WCET(最坏执行时间) 的可界定上:

  • 单核 WCET:静态分析(抽象解释 bound loop/path)或基于测量,假设无外部干扰,能给 sound 上界
  • 多核:其他 core 的干扰让任意一次访存延迟不可预测 → WCET 要么暴增到不可用(按全干扰最坏估)、要么无法 sound bound
  • 出路:先用 §4 的静态配额把干扰封住上界(cache 独占 + 带宽配额),再做 interference-aware WCET——在"干扰被配额限死"的前提下才能给可用的 WCET。没有配额隔离,多核 WCET 谈不上

这就是为什么"先隔离、再算 WCET",顺序反了(先按裸多核算)会得到无意义的天文数字。


6. Hypervisor 资质 — 它是隔离的单点

最关键的一点:Hypervisor 本身是隔离的强制者——所有 partition 的空间/时间 FFI 都由它实施。它一旦失效,全盘隔离失效 = 整个混合关键度论证塌掉 = 单点失效

  • 故 hypervisor 必须按最高共存 ASIL(通常 ASIL-D)开发 + 资质,作为 SEooC(独立于上下文的安全元素)
  • 配置也是安全相关:分区表 / 调度参数 / cache 分区 / 带宽配额——配错了 FFI 就破,配置须按 ASIL-D 管控 + 验证
  • hypervisor 提供 safety manual(AoU):集成方必须怎么配 cache/带宽/调度/外设分配才保 FFI
  • 陷阱:用一个 QM 的开源 hypervisor 跑 ASIL-D 共存 = 隔离没有资质背书 = FFI 论证无效

7. Worked Design — 4核 Cortex-A55 + QNX 7.1 EV 域控混合关键度整合

本节用一个具体的 EV 网关域控制器说明如何落地时间 FFI。目标:证明 ASIL-B 制动扭矩监控任务在 QM 负载最坏情形下仍满足 500 µs deadline;同时保留 QM Linux partition 运行 OTA/连接栈。

平台: 4× ARM Cortex-A55 @ 1.2 GHz,4 MB LLC(8-way 组相联),LPDDR4-3200 单通道 12.8 GB/s
Hypervisor: QNX SDP 7.1 type-1 bare-metal,已认证 ISO 26262 ASIL B(D) SEooC
VM1:Core 0-1 静态独占,QNX Neutrino RTOS para-virt guest,ASIL-B 功能(制动扭矩监控 + EPS 状态上报)
VM2:Core 2-3 静态独占,Linux 6.6 full-virt guest,QM(OTA 客户端 + 以太网连接栈)

Step 1 — Cache Way 分配

LLC 4 MB,8-way → 每 way 512 KB。按 AoU 配置 way bitmap:

  • Way 0–3(2 MB)→ VM1(ASIL-B);way 4–7(2 MB)→ VM2(QM)
  • VM1 working set(brake monitor + EPS 双任务):约 1.1 MB,完全装入 2 MB partition
  • 结果:LLC 命中率 ;cache miss 率

对比基线(无 way 分区、QM 随机逐出):QM 工作集 1.8 MB 与 VM1 工作集争 4 MB LLC → VM1 命中率跌至 ,

Step 2 — MemGuard 带宽配额

LLC miss 退回 DRAM:LPDDR4-3200 单通道峰值 12.8 GB/s。

  • LLC 命中延迟 ;DRAM 延迟
  • 平均访存延迟(隔离):
  • 平均访存延迟(无隔离):
  • 延迟比:

MemGuard 配置:PMU 计数窗口 1 ms,QM cap = 4.0 GB/s(单窗口上限 4.0 MB)。QM 超额时 PMU 触发 interrupt → hypervisor throttle QM core stall。

Step 3 — WCET 分析(干扰前后对比)

制动扭矩监控任务分析:内存绑定比 ,基准 WCET(隔离、满带宽)

无 cache 分区时的 WCET 预测:

635 µs > 500 µs 预算 → FAIL,必须做 cache/带宽隔离。

有 cache 分区 + MemGuard 时:,余量

Step 4 — Hypervisor 配置(AoU 关键项)

QNX SDP 7.1 配置文件(buildfile)必须固化以下项——否则 SEooC AoU 不满足,ASIL-B 论证塌:

配置项正确值危险默认
way bitmap VM10x0F(way 0–3)全共享 0xFF
way bitmap VM20xF0(way 4–7)全共享 0xFF
CPU affinity VM1Core 0, Core 1(静态)允许迁移
CPU affinity VM2Core 2, Core 3(静态)允许迁移
MemGuard window1 ms无限(不启用)
QM bandwidth cap4.0 GB/s无限制

配置本身是安全相关工作产品,须在 ASIL-B(D) 工具链中版本控制并经 review。

Step 5 — FFI 论证闭合

完成以上四步配置后,可按 ISO 26262-9 §6 三维逐一闭合 FFI 论证:

  • 空间 FFI:SMMU stage-2 PA 地址翻译由 hypervisor 强制 → VM2 不可见 VM1 物理内存 ✓
  • 时间 FFI(memory):way 分区 + MemGuard cap → ✓(Step 3 证明无隔离 635 µs 超出,确认隔离必要)
  • 时间 FFI(CPU):core 静态独占 → VM2 不共享 VM1 的调度器,无抢占干扰 ✓
  • 信息交换 FFI:VM1↔VM2 仅通过 QNX pulse(单向、大小有界、E2E CRC16 校验),VM2 无法注入 VM1 执行流 ✓
  • Hypervisor 失效:QNX 7.1 SEooC ASIL B(D) → 隔离本身的失效已按 ASIL-B(D) 路径管控 ✓

8. Gotcha — 混合关键度整合的七大工程陷阱

混合关键度整合翻车几乎都发生在三类认知盲区:把空间隔离等同于 FFI、把单核 WCET 方法直接套用多核、以及低估 hypervisor 本身的安全要求。

G1 — 以为 MMU/MPU 空间隔离就完成了 FFI。空间隔离阻断的是内存读写越界,与时间干扰正交。共享 LLC/DRAM 控制器/NoC 的时间争用在地址空间完全隔离的情况下依然存在:VM2 大量 cache miss 把 VM1 的工作集挤出 LLC,VM1 的每次访存退回 DRAM,执行时间随 VM2 负载随机膨胀。Step 3 的量化显示膨胀 1.67 倍——不做 cache/带宽分区,空间 FFI 只说明了 26262 三维中的"内存",时间维度和信息交换维度均未覆盖。

G2 — 用单核 WCET 方法直接套多核。单核 WCET 工具(rapitime、aiT、Bound-T 等)假设 cache 状态完全由当前任务决定,miss penalty 是确定值。多核下任何一次访存延迟都依赖其他 core 的实时行为:LLC 命中/未命中不可静态预测 → 工具输出是无意义的天文数字,或者严重低估(把 cache 当全命中)。正确做法:先用 §4 的静态配额(way 分区 + MemGuard)把干扰上界封死,再做 interference-aware WCET——"先隔离再算 WCET"而不是"先算再隔离"。

G3 — page coloring 实现不配套、与大页冲突。page coloring 是 way 分区的软件替代:通过操纵物理地址 bit[n:m] 控制 cache 映射 way,不依赖硬件 way bitmap。但它要求 OS 内存分配器全面参与 → guest OS 须改造(与 full-virt Linux 冲突);使用 hugepages(2 MB/1 GB)时 page color 无法以 4 KB 粒度对齐 → 颜色扩散进错误 way,隔离失效。硬件 way bitmap(本页 Step 4 路径)对 guest OS 透明,是多 OS 共存场景的唯一实用选项。

G4 — 用无资质的开源/QM hypervisor 跑混合 ASILAUTOSAR Adaptive、Xen、KVM 等开源 hypervisor 在汽车领域无 ISO 26262 资质证书。Hypervisor 是隔离的单点(§6):它失效则全盘 FFI 塌。按 ISO 26262-9 §6 "Criteria for coexistence of elements",隔离机制本身必须按最高共存 ASIL 开发——即 ASIL-D 环境需要 ASIL-D(D)资质 hypervisor,ASIL-B 环境需要 ASIL-B(D)。把未资质 hypervisor 写进安全案例,FMEA 评审一眼打穿。

G5 — 把 hypervisor 配置当运行时参数、不纳入安全相关管理。way bitmap、MemGuard cap、CPU affinity 是 FFI 论证的数学前提——改了 way bitmap 就改变了 Step 3 中 的值,整个 WCET 分析需要重算。配置须版本控制 + ASIL-B review + ASIL-B 工具链编译 → buildfile 是安全工作产品(safety element),不是运维参数。发现量产项目把 hypervisor buildfile 放在 QM repo、没有变更影响分析的情况相当常见。

G6 — 共享外设/DMA 通道不显式分配给 VM。PCIe 控制器、Ethernet MAC、USB host 等外设即便已被 SMMU 做了 IO 地址隔离,DMA 控制器依然争占 DRAM 总线带宽。VM2 中 Linux 的 OTA 下载(峰值 80 MB/s)会在 MemGuard 窗口内占用 DMA 带宽,等效于提高 、降低 MemGuard 的有效保障。正确做法:把 DMA 带宽估算计入 MemGuard QM cap 的计算(将 DMA 带宽与 VM2 CPU 访存带宽合并核算)。

G7 — ASIL-B VM 接受 QM VM 的 IPC 消息而不做 E2E 校验。当 VM2 向 VM1 传递数据(如路由更新、标定参数),VM1 直接读 QM 的消息相当于引入了"信息交换干扰通道"——ISO 26262-6 Annex D 分类的第三维。QM 软件 bug 或被攻击后可注入非法帧,污染 VM1 的计算输入。FFI 要求:VM1 只允许接收按 E2E profile 保护(CRC + 计数器)的消息,并在上层软件校验 counter 连续性;任何跳帧、超时或校验错 → VM1 忽略并上报 DTC。


9. Corner — 边界工况

混合关键度整合的边界工况多数在动态事件下出现:QM 突发、冷启时序、OTA 大流量。

C1 — QM OTA 下载峰值导致 MemGuard 窗口对齐抖动。MemGuard PMU 窗口 1 ms 与 OTA TCP 接收 burst 不对齐:OTA 突发发生在窗口的前 200 µs,带宽峰值远超 4.0 GB/s cap。PMU 在 200 µs 内触发 throttle → QM core 被 stall → OTA throughput 下降(可接受);但 throttle 中断路径经 hypervisor 执行,若中断延迟 > 100 µs 则 QM 在窗口首尾获得短暂超额带宽 → VM1 DRAM 延迟出现脉冲性上升。缓解:窗口缩短到 250 µs(4 ms 内 16 个窗口),cap 同比缩至 1 GB/s/窗口;或者调整 TCP receive buffer 把 OTA 突发平滑到 <3.5 GB/s 持续带宽。

C2 — 冷启阶段 hypervisor 初始化期间 ASIL-B VM 上电延迟与 FTTI 约束。Hypervisor 完成 partition 初始化(加载 VM 映像、配置 MMU/SMMU/MemGuard)约需 350–500 ms。这段时间 VM1 未运行 → ASIL-B 功能不可用。如果 FTTI = 20 ms(制动 torque monitor 的典型值),cold-start 初始化 500 ms 期间 HV 已上电并可能收到驾驶指令 → 违反 FTTI。正确做法:安全架构应定义 "ASIL-B 功能可用 deadline" 早于 HV 上电使能;hypervisor 平台须支持 VM1 优先快启(fast-path boot,典型 < 50 ms),把 OTA/connectivity 的 VM2 留在后台慢启。

C3 — EOL 阶段 QM VM 运行内存压力测试导致时间 FFI 破坏。EOL(end-of-line)工厂测试常在 QM partition 中运行内存密集型诊断脚本,LLC way 4–7 被 diagnostic 频繁刷新 → way-coloring 和 way bitmap 的完整性前提被动态压力测试破坏,等效于 Step 3 中 短暂降回 80%。如果此时 ASIL-B VM 恰在运行安全关键监控任务,WCET 瞬间超出 deadline。缓解:EOL 测试 profile 中 ASIL-B VM 须 hold(暂停监控任务)或 EOL 脚本写入 way bitmap 必须限制在 VM2 分区(way 4–7)内,不得越界访问 VM1 的 way 0–3。


核心要点

  • zonal/域控逼出 QM+ASIL-D 共核;ISO 26262 要么全按最高 ASIL(太贵)、要么证 FFI
  • Hypervisor = 多核多 OS 共存的 FFI 载体(FFI 页讲单 OS Safety OS,本页讲多 VM);type-1 裸机 + MMU/SMMU + 调度
  • 时间隔离是真难点:共享 LLC/DRAM/interconnect/DMA 是干扰通道,让 ASIL-D 执行时间被 QM 拖慢→饿死
  • 多核 WCET 失效:必须先用静态配额封干扰(cache 独占 + 带宽配额 + bank 分区 + core 独占),再 interference-aware WCET
  • 缓解 = 动态争用变静态配额
  • Hypervisor 是隔离单点 → 必须按最高共存 ASIL 资质(SEooC),配置也安全相关;用 QM hypervisor 跑混合 ASIL = FFI 塌

缩写表

缩写全称中文
FFIFreedom From Interference免于干扰
QMQuality Management (non-safety)质量管理级(非安全)
WCETWorst-Case Execution Time最坏执行时间
VMVirtual Machine / partition虚拟机 / 分区
LLCLast-Level Cache末级缓存
MMUMemory Management Unit内存管理单元
SMMUSystem MMU (IO 虚拟化)系统 MMU
DRAMDynamic RAM动态内存
DMADirect Memory Access直接内存访问
SEooCSafety Element out of Context脱离上下文的安全元素
AoUAssumptions of Use使用假设
NoCNetwork-on-Chip片上网络

Cross-references