当前位置: 首页 > article >正文

聊聊航空航天软件中常用的SIFT(Software-Implemented Fault Tolerance)三版本方案

一、SIFT技术

在软件程序控制流程中,特别是在SIFT(Software-Implemented Fault Tolerance)系统中使用三版本编程(Three-Version Programming, 3VP)意味着为同一个任务创建三个独立的软件版本。每个版本由不同的开发团队使用不同的方法和假设来编写,以尽量减少不同版本之间的共同错误模式。这三个版本的程序并行执行相同的计算,并将结果提交给一个投票器(voter),投票器根据多数原则决定最终输出。这种设计是为了提高系统的容错能力,即使其中一个或两个版本出现故障或产生错误的结果,只要有一个版本是正确的,系统仍然可以正常运行。

SIFT系统中的具体应用

  1. 冗余任务执行:在SIFT系统中,为了实现超高的可靠性,任务会在三个处理器上重复执行。这意味着同一任务会被分解成三个独立的实例,每个实例都由一个不同的软件版本来处理。

  2. 结果投票:每次迭代后,每个处理器都会生成自己的结果。这些结果随后被送到一个3路多数投票器(3-way majority voter)进行仲裁。如果至少有两个处理器的结果一致,那么这个一致的结果就被选作最终输出。这样的机制可以有效地屏蔽单点故障的影响。

  3. 错误检测与隔离:当投票过程中发现不一致时,即没有达成多数共识时,系统会产生一个错误信号。这个信号用于检测、隔离和重新配置系统。例如,在航天飞机的例子中,如果四个计算机中有任何一个与其他三个不一致,它可能会被认为是有问题的,并从服务中移除。

  4. 系统恢复:对于像航天飞机这样的复杂五计算机系统,其中四台计算机组成一组,在正常操作期间提供冗余,而第五台作为备用。如果主组中的两台计算机发生故障,剩余的计算机仍能通过投票继续工作;但如果第三台也出现问题,导致无法形成多数意见,则备用计算机接管系统控制责任。

优点

  • 增强可靠性:通过多样化的实现方式减少了共模错误的可能性。
  • 快速故障检测:能够迅速识别出异常行为的组件。
  • 自动恢复能力:允许系统在不影响整体性能的情况下自动排除故障单元。

实际案例

例如,在航空控制系统中,SIFT架构确保即使某些组件或软件版本出现了未预见的问题,飞机仍然可以安全地完成其飞行任务。这种方法已经被证明是非常有效的,尤其是在需要极高可靠性的环境中,如航空航天领域。

二、汽车软件研发中为什么不用SIFT

在汽车软件研发中,直接采用完整的SIFT(Software Implemented Fault Tolerance)方案并不常见,主要是因为SIFT最初是为航空和航天等对安全性要求极高的领域设计的。这些领域的系统通常需要达到非常高的可靠性标准,例如无故障工作时间可以长达数年,并且必须能够在极端条件下持续运行。相比之下,虽然汽车行业也高度重视安全性和可靠性,但其面临的挑战和技术实现路径有所不同。

然而,汽车行业中确实存在借鉴SIFT理念和技术的情况,尤其是在高级驾驶辅助系统(ADAS)和自动驾驶技术的发展过程中。随着车辆智能化程度的不断提高,车载软件复杂度增加,对于软件可靠性的需求也随之上升。因此,某些SIFT的核心概念如冗余管理和投票机制已经被应用于汽车软件开发中,以增强系统的容错能力和安全性。以下是几个具体的应用方式:

  1. 冗余架构:类似于SIFT中的多版本编程(NVP),一些关键的安全相关功能可能会有多个独立实现版本。每个版本由不同的团队使用不同方法开发,然后并行执行。这样做的目的是减少共同模式错误的可能性。

  2. 结果融合与仲裁:当多个传感器或控制单元提供相同类型的数据时(比如速度、位置等),可以通过投票或其他形式的结果融合来决定最终使用的值。这种方法有助于提高测量精度,并能在单个传感器失效时维持系统正常运作。

  3. 健康监控与自诊断:现代汽车配备了大量的自我诊断功能,能够实时监测各个子系统的状态。如果检测到异常情况,系统可以采取相应的措施,如切换到备用组件或者限制某些功能,直到问题得到解决。

  4. 故障隔离与恢复:通过硬件分区和软件设计,确保即使某一模块出现故障也不会影响其他部分的工作。同时,具备快速识别故障源的能力,并能自动尝试重启或重新配置受影响的部分。

  5. 混合关键性调度:为了保证最严格的安全要求得以满足,同时不影响非关键任务的执行效率,采用了混合关键性的任务调度策略。这使得高优先级的安全相关任务总能得到及时处理。

  6. 基于模型的开发与验证:利用形式化验证工具和技术,从设计阶段就确保软件逻辑正确无误,从而降低潜在的风险。

尽管如此,值得注意的是,由于成本效益考量以及物理空间限制等因素,汽车制造商不会完全复制SIFT那样复杂的架构。相反,他们会根据实际需求选择性地应用其中的关键技术和原则,以达到所需的可靠性水平而不至于过度增加系统复杂度或制造成本。此外,ISO 26262等国际标准也为汽车电子电气系统的功能安全提供了指导方针,促进了更广泛的安全机制的应用。


http://www.kler.cn/a/443599.html

相关文章:

  • 使用 HTML5 Canvas 实现动态蜈蚣动画
  • Thinkphp 使用workerman消息实现消息推送完整示例
  • 一键图片转3D模型,AI建模,一键把图片转三维模型,二维图片转3维模型,AI建模
  • MATLAB符号计算-符号表达式基础运算操作
  • Qt使用QZipWriter和QZipReader来解压、压缩文件
  • 使用Python获取PDF文本和图片的精确位置
  • 前端打印(html)
  • 设计模式之创建型
  • sql server 备份恢复
  • 《Vue3实战教程》5:响应式基础
  • 【异常】GL-SFT1200路由器中继模式,TL-CPE1300D无法搜寻5G网问题分析
  • 如何在STM32中使用RTC定时器
  • [一招过] Python的正则表达式篇
  • 基于51单片机的交通灯设计—夜间、紧急、复位、可调时间、四个数码管显示
  • kubeadm一键部署K8S 集群架构
  • Gitee与idea的项目提交步骤
  • MySQL专题:SQL优化实践
  • JavaCV 之中值滤波:提升图像质量的有效方法
  • 【C语言】库函数常见的陷阱与缺陷(一):字符串处理函数[2]--gets函数
  • PHP:构建动态网站的后端基石
  • 微服务-02
  • 拍立淘按图搜索API接口需要遵循一定的步骤和注意事项
  • 从Python到C++的转变之路——如何高效复现C++开源项目 || Windows || Visual Studio || 持续更新
  • IP协议详解
  • 八大网络安全策略:如何防范物联网(IoT)设备带来的安全风险
  • 开发功能需求文档: Django 管理后台图片字段管理