Hypervisor / 混合关键度整合深度 — 共核 FFI / 多核干扰 / 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:
- 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 塌
缩写表
| 缩写 | 全称 | 中文 |
|---|---|---|
| FFI | Freedom From Interference | 免于干扰 |
| QM | Quality Management (non-safety) | 质量管理级(非安全) |
| WCET | Worst-Case Execution Time | 最坏执行时间 |
| VM | Virtual Machine / partition | 虚拟机 / 分区 |
| LLC | Last-Level Cache | 末级缓存 |
| MMU | Memory Management Unit | 内存管理单元 |
| SMMU | System MMU (IO 虚拟化) | 系统 MMU |
| DRAM | Dynamic RAM | 动态内存 |
| DMA | Direct Memory Access | 直接内存访问 |
| SEooC | Safety Element out of Context | 脱离上下文的安全元素 |
| AoU | Assumptions of Use | 使用假设 |
| NoC | Network-on-Chip | 片上网络 |
Cross-references
- ← 索引
- Freedom from Interference — FFI 四维 + 单 OS Safety OS 底座(本页 prereq,讲多核多 VM)
- ISO 26262 Part 6 软件 — 软件安全开发流程
- ASIL 分解 — 共存元素的等级与分解
- 共因失效深度 — hypervisor 单点是共因源
- AURIX TC3xx ASIL-D — lockstep 多核安全 MCU