1. 一份白皮书背后的行业信号:为什么车载智能计算平台需要功能安全
第一次看到《车载智能计算平台功能安全白皮书(2020年)》这个标题时,我的直觉是:这不是一份普通的行业报告,而是车载计算从“能用”走向“敢用”的分水岭。地平线参与编写这件事本身就说明了一个趋势——做AI芯片的公司不再只谈算力和TOPS,而是开始认真回答一个更硬核的问题:当智能驾驶系统接管方向盘和刹车时,怎么保证它不出事?
这个问题的核心就是功能安全。在汽车电子领域,功能安全不是新概念,ISO 26262早就为ECU(电子控制单元)定义了从ASIL A到ASIL D的完整体系。但车载智能计算平台和传统ECU有本质区别:传统ECU的功能是确定的、可穷举的,而AI计算平台运行的是神经网络,它的输出是概率性的、不可完全解释的。这就产生了一个根本矛盾——确定性安全体系如何约束概率性AI系统。
白皮书要解决的正是这个矛盾。它面向的是车载智能计算平台的设计者、安全工程师、芯片架构师、Tier1供应商以及主机厂的电子电气架构团队。如果你正在做域控制器、智驾计算平台或者相关安全认证,这份白皮书里的框架和思路值得逐条拆解。即便你不是汽车行业的人,只要涉及高可靠性AI系统的落地,里面的安全设计方法论同样有参考价值。
我花了几天时间把白皮书的核心内容做了梳理,结合自己在嵌入式安全和AI部署方面的经验,把其中最关键的技术点、设计思路和实操层面的注意事项整理出来。下面从整体设计逻辑开始,逐层拆到具体的实现细节。
2. 车载智能计算平台功能安全的整体设计逻辑
2.1 为什么传统安全体系在AI计算平台上“不够用”
传统汽车电子的功能安全设计遵循一个基本假设:系统的失效模式可以被枚举,失效概率可以被量化,安全机制可以覆盖所有已知失效路径。比如一个刹车控制器,它的输入输出关系是确定的,你可以通过冗余传感器、看门狗、锁步核等手段把失效率降到ASIL D要求的水平。
但车载智能计算平台面对的场景完全不同。它要处理的是摄像头、激光雷达、毫米波雷达的多模态融合数据,运行的是深度学习模型,输出的是感知结果和规划决策。这里面有几个传统安全体系覆盖不了的维度:
- 模型的不确定性:同一个场景,模型两次推理可能给出不同结果,尤其是边缘案例(corner case)。你没法用“输入A必然输出B”的方式来定义安全约束。
- 算力动态调度:车载计算平台通常要同时跑多个任务——感知、定位、规划、控制、座舱交互。算力分配是动态的,任务之间的干扰和资源竞争会引入新的失效模式。
- 数据依赖的脆弱性:AI模型的性能高度依赖训练数据分布。如果实际道路出现训练集中未覆盖的场景,模型可能给出完全错误的输出,而这种失效在传统FMEA(失效模式与影响分析)中很难被识别。
- 持续更新需求:智能驾驶系统需要OTA升级模型和算法,每次更新都可能引入新的安全风险,传统“一次认证、终身有效”的模式行不通。
白皮书的核心贡献在于,它没有试图用传统安全体系去硬套AI系统,而是提出了一个分层安全架构:底层硬件和基础软件仍然遵循ISO 26262的确定性安全要求,上层AI计算和决策模块则引入新的安全机制,比如运行时监控、输出合理性校验、安全兜底策略等。
2.2 分层安全架构:从芯片到系统的四层防护
白皮书里我印象最深的是它的分层思路。整个车载智能计算平台的功能安全被拆成四个层次,每一层有不同的安全目标和实现手段:
| 层级 | 安全目标 | 关键手段 | 典型ASIL等级 |
|---|---|---|---|
| 芯片层 | 硬件失效检测与容错 | 锁步核、ECC、BIST、电压频率监控 | ASIL D |
| 基础软件层 | 操作系统与中间件安全 | 分区隔离、时间监控、安全通信 | ASIL D |
| AI计算层 | 模型推理可靠性 | 输入校验、输出置信度评估、冗余推理 | ASIL B~D |
| 应用层 | 决策与执行安全 | 安全兜底、降级策略、人机共驾 | ASIL D |
这个分层的关键在于安全边界清晰。芯片层和基础软件层是确定性的,可以用传统方法做认证;AI计算层是概率性的,需要用新的方法论;应用层则负责最终的 safety goal 达成。每一层之间的接口都有明确的安全假设和约束条件。
地平线作为AI芯片厂商参与编写,重点贡献应该在芯片层和AI计算层的衔接上。比如他们的征程系列芯片,在硬件层面支持锁步核和ECC,在AI推理层面支持输出置信度监控和冗余计算。这些机制怎么和上层安全策略配合,白皮书里应该有比较详细的描述。
2.3 安全生命周期:从设计到运营的闭环
传统功能安全强调V模型开发流程——需求、设计、实现、测试、验证,每个阶段都有对应的安全活动。但车载智能计算平台的安全不是一次性的,它需要覆盖整个生命周期:
- 设计阶段:定义安全目标(Safety Goal),做危害分析与风险评估(HARA),确定ASIL等级。
- 开发阶段:实现安全机制,做FMEDA(失效模式、影响及其诊断分析),验证安全完整性。
- 部署阶段:现场监控,收集失效数据,做安全验证。
- 运营阶段:OTA更新后的安全再验证,持续监控AI模型性能漂移。
- 报废阶段:安全数据归档,经验反馈到下一代设计。
白皮书特别强调了运营阶段的安全监控。因为AI模型在实际道路上的表现会随着环境变化而漂移,比如季节更替、道路施工、新型车辆出现等。如果没有持续的监控和再验证机制,设计阶段的安全假设可能很快失效。
3. 核心安全机制的技术细节与实操要点
3.1 芯片级安全:锁步核与ECC的实际部署
车载智能计算平台的芯片级安全是整个功能安全体系的基石。白皮书里提到的芯片级安全机制主要包括三类:计算冗余、存储保护和监控电路。
计算冗余最典型的就是锁步核(Lockstep Core)。它的原理很简单:两个相同的CPU核同时执行相同的指令,每个时钟周期比较输出。如果结果不一致,说明其中一个核出了故障,系统立即触发安全响应。锁步核的难点不在于设计,而在于故障注入测试——你怎么证明锁步机制真的能覆盖所有单点失效?白皮书里建议用故障注入工具(如基于FPGA的故障注入平台)对锁步比较器、时钟树、复位逻辑等关键路径做系统性验证。
存储保护主要靠ECC(纠错码)。车载计算平台里,SRAM、DRAM、Flash都需要ECC保护。ECC的选择有讲究:SEC-DED(单纠错双检错)是最常用的方案,但对于安全关键数据,可能需要更强的纠错能力。实操中要注意的是,ECC的纠错日志要能被安全监控模块读取,否则你只知道“发生了纠错”,不知道“纠错频率是否在上升”——而纠错频率上升往往是硬件老化的早期信号。
监控电路包括电压监控、频率监控、温度监控和看门狗。这些看起来简单,但实际部署时容易踩坑。比如看门狗的超时时间设置:太短会导致正常任务被误杀,太长则失去保护意义。白皮书建议根据任务的最坏执行时间(WCET)来设定,并留出合理的余量。
实操心得:芯片级安全机制验证时,不要只做“功能正常”的测试,一定要做故障注入测试。我见过太多项目,锁步核在正常运行时没问题,但注入一个时钟抖动故障后,比较器逻辑直接挂死,安全响应根本没触发。故障注入要覆盖:单比特翻转、多比特翻转、时钟毛刺、电压跌落、温度越界等场景。
3.2 AI推理安全:置信度评估与冗余推理
AI计算层的安全是白皮书最具创新性的部分。传统安全体系里没有“置信度”这个概念,但AI模型天然需要它。白皮书提出的思路是:不要求AI模型永远正确,但要求它知道自己什么时候可能不正确。
具体实现上,有几个关键机制:
输入校验:在推理之前,对输入数据做合理性检查。比如摄像头图像,要检查亮度是否在合理范围、是否有遮挡、帧率是否正常。如果输入异常,直接触发安全降级,不进入推理流程。这一步看起来简单,但能过滤掉大量低级失效。
输出置信度评估:模型输出通常包含类别概率或检测框置信度。白皮书建议设置动态阈值——不是固定0.5或0.7,而是根据场景复杂度动态调整。比如在高速公路场景,阈值可以设高一些;在拥堵城区,阈值适当降低,但触发更频繁的安全监控。
冗余推理:对安全关键输出,用两个独立模型或同一模型的不同精度版本做交叉验证。如果两个结果差异超过阈值,说明模型不确定,触发安全兜底。冗余推理的代价是算力翻倍,所以白皮书建议只对关键输出(如障碍物检测、车道线识别)做冗余,非关键输出(如交通标志分类)可以不做。
运行时监控:在推理过程中监控硬件状态——算力单元利用率、内存带宽、温度等。如果发现异常,比如某个NPU核心温度过高导致降频,系统要能感知并调整任务调度。
注意事项:置信度阈值不能拍脑袋定。我建议用ROC曲线在验证集上找最佳工作点,然后根据安全目标反推可接受的误报率和漏报率。比如ASIL D要求漏报率低于10^-8/小时,那阈值就要设得足够高,同时用冗余推理来补偿漏报。
3.3 安全兜底与降级策略:系统失效时怎么办
再好的安全设计也不能保证100%不出问题。白皮书里明确提出了安全兜底(Safety Fallback)的概念:当系统检测到无法保证安全运行时,要能进入一个预定义的安全状态。
安全兜底的核心是降级策略。降级不是简单的“关机”,而是根据失效严重程度和当前驾驶场景,选择最合适的响应:
- 一级降级:AI推理置信度低,但系统仍能运行。此时降低车速、增加跟车距离、提示驾驶员接管。
- 二级降级:某个传感器失效或算力单元故障。切换到冗余传感器或降级感知功能(比如从多模态融合降级到单摄像头)。
- 三级降级:计算平台整体失效。触发最小风险策略(MRM),靠边停车或安全停车。
降级策略的设计难点在于场景适配。同样是算力单元故障,在高速公路上和在停车场里的响应完全不同。白皮书建议用状态机来管理降级逻辑,每个状态定义明确的进入条件、退出条件和安全动作。
实操中,降级策略要和HARA(危害分析与风险评估)的输出对齐。每个安全目标对应一个或多个降级路径,每条路径都要做验证。我见过一些项目,降级逻辑写得很漂亮,但从来没在实车上验证过——真到触发的时候,发现执行器响应时间不够,或者驾驶员根本没注意到接管提示。
4. 从白皮书到落地:车载计算平台安全开发的完整流程
4.1 安全需求分解:从整车安全目标到芯片安全机制
功能安全开发的第一步是安全需求分解。整车层面定义的安全目标(比如“避免非预期加速”)要逐层分解到系统、软件、硬件,最终落到芯片的具体安全机制上。
这个过程在传统ECU开发中已经很成熟,但车载智能计算平台增加了AI计算层,分解路径变得更复杂。举个例子:
- 整车安全目标:避免因感知失效导致的碰撞。
- 系统安全需求:感知系统应在100ms内检测到前方障碍物,漏检率低于10^-6/小时。
- AI计算安全需求:障碍物检测模型在置信度低于阈值时,应输出“不确定”标志,触发冗余推理。
- 芯片安全需求:NPU应支持输出置信度读取,并在置信度计算异常时触发中断。
白皮书里给出了一个安全需求追溯矩阵的模板,确保每一条整车安全目标都能追溯到具体的芯片机制。这个矩阵在功能安全审核时是必查项,建议从项目第一天就开始维护,不要等到审核前才补。
4.2 FMEDA分析:量化AI计算平台的失效模式
FMEDA(失效模式、影响及其诊断分析)是功能安全的核心分析工具。传统ECU的FMEDA主要关注硬件随机失效,但AI计算平台还需要考虑系统性失效和AI模型失效。
白皮书建议把FMEDA分成三部分:
- 硬件FMEDA:覆盖芯片的随机失效,计算SPFM(单点故障度量)和LFM(潜伏故障度量)。ASIL D要求SPFM≥99%,LFM≥90%。
- 软件FMEDA:分析基础软件和AI推理框架的失效模式,比如内存越界、任务死锁、推理超时等。
- AI模型FMEDA:这是新增部分,分析模型在不同场景下的失效模式——漏检、误检、分类错误、输出抖动等。AI模型FMEDA没法用传统失效率量化,白皮书建议用场景覆盖率和性能边界来替代。
实操中,AI模型FMEDA是最难做的。我的经验是:先定义模型的运行设计域(ODD),在ODD内用大量场景做测试,统计失效分布;在ODD边界做压力测试,找出模型开始失效的临界条件;在ODD外做对抗测试,验证安全兜底机制是否有效。
4.3 安全验证与确认:测试用例设计与故障注入
安全验证是功能安全开发中最耗时的环节。白皮书里强调,车载智能计算平台的安全验证不能只做“正常功能测试”,必须包含故障注入测试和边界场景测试。
故障注入测试要覆盖:
- 硬件故障:单比特翻转、多比特翻转、时钟丢失、电压跌落。
- 软件故障:任务超时、内存泄漏、通信丢包。
- AI模型故障:输入噪声、对抗样本、模型输出异常。
边界场景测试要覆盖:
- 传感器边界:强光、黑夜、雨雾、隧道进出。
- 场景边界:cut-in、加塞、施工区、事故现场。
- 算力边界:多任务并发、温度降频、内存不足。
白皮书建议用故障注入平台来自动化这些测试。我参与过的一个项目里,我们用FPGA搭建了一个故障注入环境,可以精确控制注入位置和注入时间,测试效率比手工注入高了十倍不止。
避坑技巧:故障注入测试一定要在系统集成后做,不要只在模块级别做。我见过模块级测试全过,但系统集成后,故障注入导致安全响应链路断掉——因为模块间的通信协议没有定义故障传播规则。
5. 常见问题与排查技巧实录
5.1 安全机制误触发:原因分析与解决思路
安全机制误触发是车载计算平台功能安全落地时最常见的问题。表现是:系统在正常场景下频繁进入降级状态,影响用户体验。
常见原因有这几类:
| 误触发类型 | 典型原因 | 排查方法 | 解决思路 |
|---|---|---|---|
| 置信度误判 | 阈值设置过严 | 统计正常场景置信度分布 | 动态阈值+场景自适应 |
| 冗余推理不一致 | 两个模型训练数据分布不同 | 对比两个模型的输出分布 | 统一训练数据或做输出校准 |
| 看门狗超时 | WCET估算不准 | 实测任务执行时间分布 | 重新估算WCET+留余量 |
| ECC纠错频繁 | 内存颗粒老化或温度过高 | 读取ECC日志+温度监控 | 更换内存或改善散热 |
排查误触发时,关键是拿到现场数据。我建议在安全监控模块里加一个环形缓冲区,记录触发前后的系统状态——置信度、任务调度、温度、电压等。没有这些数据,你只能猜。
5.2 AI模型性能漂移:运营阶段的安全监控
AI模型在实验室表现很好,但部署到实际道路上,性能会随着时间漂移。白皮书里提到了这个问题,但给的方案比较原则性。我结合自己的经验补充几点:
监控指标:不要只看准确率,要监控置信度分布和输出熵。如果置信度分布整体下移,或者输出熵增大,说明模型遇到了不熟悉的场景。
数据回传:建立数据回传机制,把低置信度样本和触发安全兜底的样本传回云端。这些样本是模型迭代的宝贵资源。
影子模式:新模型上线前,先用影子模式跑一段时间——新模型在后台运行,输出不参与控制,只做对比。如果新模型和旧模型输出差异大,说明新模型可能有问题。
再验证触发条件:定义明确的再验证触发条件,比如置信度分布偏移超过阈值、安全兜底触发频率上升、OTA更新后等。
5.3 安全认证的实操经验:从文档到现场审核
功能安全认证不是交文档就完事,现场审核才是真正的考验。我经历过几次TÜV和SGS的审核,总结了几条经验:
- 追溯性:审核员会随机抽一条安全需求,让你从整车目标一路追溯到芯片机制。追溯链不能断,文档要能互相引用。
- 工具置信度:如果你用仿真工具做安全验证,要提供工具置信度评估(TCL)。审核员会问:你怎么证明这个仿真工具本身是可靠的?
- 变更管理:任何设计变更都要有变更影响分析。审核员会查变更记录,看你是不是“偷偷改了没记录”。
- 现场测试:审核员可能要求现场做故障注入演示。提前准备好测试环境和测试用例,别到时候手忙脚乱。
实操心得:认证前做一次内部预审核,找没参与项目的同事来挑毛病。自己人看自己的文档容易有盲区,外人一眼就能看出追溯链断在哪里。
6. 白皮书之后:车载计算平台安全的发展方向
白皮书是2020年发布的,这几年车载智能计算平台的安全实践又有了不少新进展。从我个人观察来看,有几个方向值得关注。
安全与算力的平衡:安全机制本身要消耗算力。锁步核、ECC、冗余推理都会占用计算资源。怎么在有限算力下实现足够的安全覆盖,是芯片架构师持续面临的挑战。地平线后续的芯片产品在安全机制上做了不少优化,比如用专用安全核来处理监控任务,不占用AI算力。
形式化验证的引入:传统测试只能证明“没有发现失效”,不能证明“不存在失效”。形式化验证可以用数学方法证明安全机制的正确性。虽然目前主要用在芯片级安全验证,但未来可能扩展到AI推理框架。
安全与预期功能安全(SOTIF)的融合:ISO 21448(SOTIF)关注的是“没有系统失效但功能不足”导致的风险。AI模型的性能边界问题正好落在SOTIF范围内。白皮书主要讲功能安全,但实际项目中,功能安全和SOTIF要一起做,不能割裂。
数据驱动的安全监控:用机器学习方法来监控AI模型本身——训练一个“监控模型”来检测主模型的异常输出。这个思路在学术界已经有不少研究,工业界也在逐步落地。
最后分享一个我在实际项目中体会很深的点:功能安全不是加在系统上的“补丁”,而是从架构设计第一天就要考虑的核心约束。我见过太多项目,先做功能,再做安全,结果发现架构上根本改不动,只能打补丁,最后安全机制形同虚设。如果你正在启动一个车载计算平台项目,建议在需求阶段就把安全团队拉进来,一起定义安全目标和架构约束。前期多花两周做安全设计,后期能省两个月做整改。