根据ISO26262,功能安全是指不存在因电气和电子系统故障行为引起的危害而导致的不合理风险。
无论垂直市场如何,这个定义都意味着对任何安全相关系统有很多非常具体的要求。
各种安全标准还定义了不同级别的安全完整性,即特定系统需要有多“安全”。例如,控制车辆制动器的系统将具有最高级别的安全性,因为这种系统的故障可能是灾难性的。
然而,控制驾驶员座椅电机的系统虽然仍具有安全要求,但相对没有那么高的要求。在ISO26262中,这被定义为“汽车安全完整性等级”或“ASIL”。ASIL目前被定义为四个不同的级别,从“A”(最低)到“D”(最高)。这些级别与系统必须达到的诊断覆盖率直接相关,换句话说,与给定系统预期检测到的故障数量直接相关。
根本挑战
随着汽车行业向完全自主实施迈进,人们期望这场革命将带来一个更安全的世界。超过90%的车辆事故是由人为错误引起的,新一代车辆最终可以极大地降低死亡数字。然而,在车辆上实现功能安全,仍有几个基本挑战需要解决。自动化的系统需要消耗大量的计算性能,并且,由于它们能够控制车辆的方向和速度,因此它们需要具备最高水平的安全完整性。
那么,实现这一目标的技术选择是什么?
1. 锁步(lock-step)
在“锁步”中配置两个 CPU 内核是实现高级别诊断覆盖率的传统方法 - 能够检测错误情况的发生。原理很简单,每个内核执行完全相同的代码,每个内核都将输出反馈给一个比较逻辑模块。
比较逻辑模块逐周期比较输出,只要结果相等,一切正常。如果结果之间存在差异,则可能表明需要做更多检查或处理故障情况。
需要进行的操作由系统开发人员定义,并取决于相关系统。它既可以直接重新启动,或者在给定一段时间后重新检查错误条件是否仍然存在。锁步设计固定在芯片中,因此没有灵活性,因此,虽然拥有两个内核,但实际只能运用到单个内核的性能。
这种方法运用的非常普遍,多年来一直适用于微控制器和不太复杂的确定性微处理器。
2. 冗余执行(Redundant execution)
提供更高性能功能的 CPU 通常更复杂,确定性更低,因此对锁步更具挑战性。这导致了解决上述挑战还需要考虑更多方案,软件冗余或冗余执行就是一种选择。
此方法假定两个独立的应用程序,运行在不同的 CPU 内核上,甚至在不同的虚拟机中(如果实施了虚拟化)。当应用的输出可用时,它们与额外的高安全完整性内核进行比较,以确保正确性,由于其独立的时钟和电源,通常被称为“安全岛”。这个安全岛将负责最后的“决定和启动”阶段。此方法可以降低高计算群集上的诊断覆盖率要求,还可以在实现中引入更大程度的灵活性,同时提高效率。
然而,它也大大增加了系统的复杂性,再加上交叉检查的颗粒度较低。由于软件灵活性的优势,这种方法可能会在未来几年更广泛地用于某些需要安全性和高计算性能的应用程序。
3. 分核锁(Split-Lock):两全其美
最终的解决方案必须是将两种方法的优势(灵活性、性能、简单性和经过验证)结合在一起的解决方案。通过引入“分核锁”功能,高计算性能与高安全完整性支持相结合。
分核锁与锁步有何不同?从本质上讲,它增加了锁步 CPU 实现中不可用的灵活性。它允许系统在启动时配置为“拆分模式”(两个独立的CPU,可用于不同的任务和应用程序)或“锁定模式”(CPU的锁定步进,用于高安全性完整性应用)。这种灵活性甚至可以扩展到支持潜在的故障操作模式 - 继续在降级模式下运行而不是完全关闭系统的能力。例如,在锁定模式下运行时,如果一个内核开始出现故障情况,系统可能会被静默,故障内核可能会下线(拆分),从而允许在降级的操作模式下继续运行。这种“拆分可用”功能对于部署自主功能的系统都至关重要。
-
cpu
+关注
关注
68文章
10824浏览量
211088 -
故障
+关注
关注
6文章
386浏览量
29370
原文标题:锁步,冗余执行,以及分核锁
文章出处:【微信号:谈思实验室,微信公众号:谈思实验室】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论