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. 工程陷阱

混合关键度整合翻车几乎都在"只做空间隔离"和"hypervisor 当透明层":

  • 以为 MMU 空间隔离就够 — 时间干扰(共享 LLC/DRAM)照样让 ASIL-D 错过 deadline;必做 cache/带宽分区
  • 单核 WCET 方法套多核 — 严重低估,实车 deadline miss;先静态配额封干扰再算
  • 不做 cache/带宽配额 — QM core 一忙就饿死 ASIL-D
  • 用未资质 hypervisor 跑混合 ASIL — 隔离无背书,FFI 塌
  • 把 hypervisor 当透明层、不算它的失效 — 漏掉最关键单点(它是隔离强制者)
  • 共享外设/DMA 不分配 — 隐蔽干扰通道,空间隔离看不见

核心要点

  • 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