一般来说,可以通过对系统质量、可维护性、可靠性、可用性及安全性等指标做出评测,来衡量系统在环境中的性能。功能安全是系统相对于可能出现的操作错误、硬件故障及环境变化的整体安全性。这取决于系统或设备能否响应输入正确地运行,包括安全地管理操作错误、硬件故障和环境变化。功能安全的目标是避免不可接受的身体伤害,或对健康直接或间接造成的损害风险。
为了确保安全功能能够符合设计初衷,包括在操作员输入不正确和故障模式等情况下,人们一直不断改进各种标准。IEC61508是适用于各个行业的国际功能安全标准之一,名称是“电气/电子/可编程电子安全相关系统的功能安全(E/E/PE或E/E/PES)”。ISO 26262是从IEC 61508衍生而来的功能安全标准,名称为“道路车辆-功能安全”,适用于汽车行业。ISO 26262定义了汽车设备的功能安全,适用于所有汽车电子电气安全相关系统的整个生命周期。
SoC系统级芯片遵循多种设计技术,以符合安全标准,这些在ISO-26262标准中都有所介绍。冗余、自检机制、信号监测、电压电源监测和“看门狗”是在符合安全标准的设备中所使用的几种技术。冗余是这些设备的主要组成部分。冗余在汽车设备中的使用有多种方式,许多符合安全标准的设备将锁步、ECC、CRC及校验等用作冗余技术。本文将主要介绍SoC中使用到的冗余技术,包括硬件、软件、信息和时间冗余等。
汽车硬件冗余机制
冗余是指除了在关键功能中使用的组件外,还包含额外的组件,旨在提高系统的可靠性和可用性。冗余的添加方式有很多,如硬件(例如双核锁步)冗余、软件冗余、信息冗余(例如将ECC添加到存储器)和时间冗余。一般情况下,冗余依据MooN概念工作。
N分之M(M-out-of-N,MooN)系统包含N个相同的组件,工作原理是:如果N个组件中的至少M个组件正常工作,那么该系统没有错误。一个示例是三重模块化冗余(TMR),这实际上是一个三分之二(2oo3)系统。如果3个组件中至少有两个组件(大部分)正常运行,那么该系统则被视为正常运行。
MooN系统在硬件和软件中使用。在硬件中,关键组件被复制,根据多数投票原则做出决策。而在软件中,一个任务被重复多次,然后比较任务执行结果,生成最后结果。在SoC中,硬件冗余可以采用多种形式:复制执行安全关键任务的内核(也称为锁步)、延迟锁步(1oo1系统)、非对称锁步、三次投票(2oo3系统)。
在符合安全标准的高级设备中,执行安全关键任务的内核被复制,应用在锁步模式下运行这两个内核,比较结果,确保冗余处理产生完全相同的结果。如未获得完全相同的结果,则视为发生了故障。
在锁步模式下,同时将同一组输入发送到这两个内核,然后这两个内核在相同的时钟周期内执行相同的计算,定期比较结果,检测是否发生了故障(无论是瞬时故障、间歇性还是永久性故障)。一旦输出不匹配,通常会标记故障并执行重启。图1显示了锁步中的内核(双核锁步)。
图1:锁步中的内核(双核锁步)工作原理
延迟锁步是锁步的一种,其中一个内核的输入延迟了N个时钟周期,另一个内核的输出也延迟了相同的时间,然后比较结果。用这种方法,可获得时间分集。由于一个内核在N个时钟周期后将执行相同的运算,冲击这两个内核并以相同的方式影响其功能的噪声脉冲的概率将大大减少。图2显示了延迟锁步的工作配置。馈送给内核2的数据被延迟了两个时钟周期。内核2的重置也延迟了两个周期。内核1的输出延迟了两个时钟周期,然后由校验器电路进行比较。如发现故障,则标记错误。
图2:延迟锁步的工作配置
在非对称冗余中,不复制相同的内核,而是使用不同的内核。不同的专用内核通过一个接口与主内核紧密耦合,实现内部和外部结果的逐步比较。该接口降低了复杂性,缩短了错误检测延迟。主核执行关键的任务,而专用的多样化内核则复制足够多的主核执行,确保能够检测故障,或确保主核的安全运行。由于硬件的多样性,可以有效覆盖共因故障和系统故障。内核的不同结构将导致不同的内核反应方法,改善共因故障的诊断覆盖。因此这两个内核发生的同类故障的情况将减少。并行通道无需单独的代码,专用内核比主核小。有时,主核的面积差异可高达50%及以上。这种方法的缺点是,可能需要详细的分析来证明诊断覆盖。
此类冗余在位级实施,安全关键任务中所使用的寄存器位被复制两次,根据多数投票逻辑生成输出。这是2oo3多数投票系统的一个示例,如果这三个触发器中的任何一个发生故障,那么其余的两个触发器将掩盖故障。假设很难同时损坏这三个触发器中的两个,那么这种技术可保持系统运行。由于在这种情况下,面积补偿是双倍的,因此需要彻底检验设计配置位,确定安全关键的配置信息,避免任何不必要的面积开销。
软件多样化冗余
在软件冗余中,将在软件中执行该任务多次。可使用不同的软件执行该任务多次(不同的算法用于同一个任务),然后比较结果, 这将改善诊断覆盖。
设计中使用两种完全不同的软件实现,即在一个处理单元中使用不同的算法来执行相同的任务。图3说明了实现情况。主用通道负责计算,如果计算错误,可能导致危险。冗余通道负责检验主用通道的计算,如果发现故障则采取行动。冗余通道采用单独的算法设计和代码实现,以提供软件多样化。一旦两条通道都完成后,则比较这两种冗余软件实现的输出数据。如发现差异,则生成故障消息。
图3:单一硬件通道软件冗余工作原理
算法多样化示例包括:A+B=C与C-B=A。一个通道使用正常的计算,另一个通道使用二进制补码数学。
两个处理单元相互交换数据(包括结果、中间结果和测试数据),在每个单元中使用软件比较数据,如检测到差异则生成故障消息。图4说明了实现情况。在这种情况下,主用通道和冗余通道在不同的处理单元中使用不同的软件算法来执行。如果使用不同的处理器类型以及单独的算法设计、代码和编译器,那么这种方法允许硬件和软件多样性。另外,外设复制与内核复制不同。外设共享外部世界的相同输入,外设的输出在软件中进行比较。例如,在SoC中使用多个ADC,输入信道被复制到大多数ADC,它们的输出可在软件中进行比较。
图4:多处理单元软件冗余工作原理
信息冗余和时间冗余
信息冗余是指在通过嘈杂的信道传输信息时添加到实际数据中的冗余数据,目的是检测故障或修复故障。 下面介绍了几种信息冗余方案,如:奇偶校验位、校验和、纠错码。
奇偶校验位是指被添加到二进制数据结尾的位,指示数据中“1”的数量是奇数还是偶数。偶校验方案是指如果数据中“1”的数量为奇数,则向数据添加一个“1”。奇校验方案是指,如果数据中“1”的数量为偶数,则向数据添加一个“1”。例如,如果实际数据为“11110000 0000”,并且在其后添加了一个偶校验位,那么“111100000 0000 0”将通过通信信道传输。在接收器端,如果收到单个的位触发数据,那么接收器将检测到数据在传输过程中被破坏,可请求发射器重新发送数据。
校验和是使用某些函数通过信息数据计算的数据。它与信息数据一起通过噪声信道传输。在接收器端,使用收到的数据计算校验和。计算的校验和应匹配所收到的校验和。错误检测功能取决于冗余比特数量、数据大小,以及生成校验和所用的多项式。奇偶性、模块化和和与位置相关的校验和是几种可用于错误检测的校验和示例。在检测到错误的情况下,可通过信号通知发射器,重新传输数据。
某些校验函数不仅能够检测错误,还能指出数据中可能引入的某些类型的错误,从而在不重新发送数据的情况下让接收器能够获得正确的数据,这些函数被称为纠错码。能够被校正的错误也有限制。例如,汉明码是纠错码。尽管汉明码能够检测到双位错误,但只能校正数据中的单位错误。格雷码能够检测四位错误,但只能校正三位错误。BCH 码、Goppa码、Reed-Solomon 码、Reed-Muller码和Hadamard码是以其发明人命名的其他代码。此类编码技术可作为信息和编码理论的一部分进行研究,是应用数学、电子工程和计算机科学的一个有趣和广泛的分支。
时间冗余是指以冗余的方式执行安全关键的任务,随时间而变化。由于这些冗余任务随时间而变化,因此有助于消除瞬时故障。其中,单个硬件信道上的时间冗余是使用同一款软件在一个硬件上执行多次安全关键的任务,然后再比较多次运算的结果。如果发现差异,则执行相关的纠正操作。上述“软件冗余”部分中描述的“软件多样化冗余”(一个硬件通道)是此类冗余的扩展版本。
并行硬件信道上的时间冗余是在并行信道上执行、但不同时执行所有安全关键的任务,它有助于随着时间的推移创建冗余。 瞬时故障不会以相同的方式影响操作,即使并行信道是对称的硬件。上述“硬件冗余”部分中描述的“延迟锁步”是此类时间冗余的一个示例。
结语
汽车行业使用到多种设计技术,以实现安全性,各种冗余技术是实现安全性所必不可少的,目的是确保设备在发生故障时更加可靠和稳定。硬件冗余的优势是能够尽早检测到故障,但代价是需要增加硬件数量。另一方面,如果系统成本有限,那么软件冗余可能用处更大。总之,冗余是实现提高汽车安全性能的关键所在,可以利用硬件和软件冗余,以及信息冗余、时间冗余等,使得系统更加稳定而可靠。
作者:Deepak Negi、Neha Bagri和Vikas Agarwal
飞思卡尔半导体
联系客服