——北京空间技术研究院总体设计部 --2018
针对自身不具备 EDAC 功能的星载计算机 SRAM 的抗辐射加固(主要是面对SEU)。
星载软件的平均失效时间(MTTF)由软错误失效率和器件翻转率决定。鉴于器件翻转率由硬件器件自身属性确定,且不可改变,因此一般应用层的防护加固设计是针对前者开展的,即通过降低软错误率的方法提升星载计算机 SRAM 抗辐射的能力。
本文采用软硬件结合的方式来降低软错误率,从而提升星载计算机 SRAM 抗辐射的能力。
(1)硬件
“硬”指通过硬件电路实现对固定长度 SRAM 区数据的校验和计算,并通过比较当前计算结果与预期结果是否一致,判断是否有单粒子翻转事件发生。如果有,则立即产生高优先级中断,并调用中断处理函数对当前 SRAM 区域进行刷新操作,此模式称为“应急维护模式”。
应急维护模式实现方法如下:
星载计算机首次向 SRAM 写入数据时,针对预先定义好的固定长度内存地址计算该段地址空间内所存储数据的奇校验,并将校验结果一并保存。设备运行时,一方面,一旦某个全局变量或静态变量的值被修改,将重新计算相应内存空间段的校验和并替换原来存储的校验和。另一方面,定期触发设备内部奇校验电路,依次对 SRAM 各地址段内的数据进行奇校验,并将计算结果与预存的校验和做一致性判决。如果出现不一致,则立即产生高优先级中断,通知 CPU 进入中断函数。中断函数将根据错误发生的地址段定义及错误数据的属性采取适当的维护措施。如果确认该地址段在可维护地址空间范围内,则对该段数据进行刷新操作,否则通过复位操作重启星载计算机。上述一切动作均由硬件设计自动完成,具有实时性高的特点。
此模式在工程实践中的设计重点是根据星载计算机应用软件的大小以及其任务特性选择自检电路每次计算校验和内存段的长度。如果软件体量很大,为了及时遍历所有数据,实现有效控制软失效的目的,则需要适量增大单次检测的数据段长度。但单次检测长度必将导致单次刷新时间增加。如果星载软件常规任务的实时性要求极高,那么单粒子翻转维护时间的增加将影响常规任务的执行效率。因此工程实践中必须权衡自检遍历周期与单次刷新速度两个互斥因素,选择适合本星载应用软件的自检数据段长度。
星载计算机 SRAM 内部奇校验电路示意图如图所示。
(2)软件
“软”指星载计算机应用软件根据预先定义的防护算法,自主根据其当前任务忙、闲状态,通过查表的方法计算 SRAM 的刷新步长,从而在不影响正常职能任务的前提下,尽可能高效地实现 SRAM 刷新策略,此模式称为“常规空闲维护模式”。
常规空闲维护模式实现方法如下:
在星载计算机应用软件中设计实现系统资源调度查表算法和 SRAM 自主维护模块。
星载计算机应用软件根据其当前工作模式确定空闲周期 T1 与星载计算机 SRAM 可维护地址范围数据维护所需时间 T0 之间的关系,并根据上述情况自主计算 SRAM 本次应该实施的数据维护地址范围。
例如,当 T0>T1 时,根据资源调度算法查表获得本次数据维护内存长度步进 K 和上次数据维护结束内存地址标记 N ,然后 SRAM 自主维护模块将刷新内存地址 N~(N+K-1) 之间的数据,刷新完成后,星载计算机应用软件返回职能任务模式继续执行日常平台或载荷任务。
当 T0
以 DSP 的 SRAM 为例,根据工程文件中内存分配 .cmd 文件的定义,当前工程的代码 段、初始化参数、静态常量段、Switch语句的跳转地址表段、中断跳转地址表段等内存段均是可维护地址段(确定在程序运行过程中不会被修改的数据),都能够在常规空闲维护模式中通过定期刷新实现抗辐射维护。同理,刷新完成后,星载计算机应用软件返回职能任务模式。
软件基于国产 DSP6701 芯片开发实现,DSP 芯片与外部电路之间通过 FPGA 实现通信接口。DSP 芯片主频为 80 MHz,SRAM 存储空间为512KB,芯片本身不具备 EDAC 功能。运行在芯片上的应用软件大小为413KB,存储在外部 PROM 中,设备加电后,通过加载程序搬移到 DSP 内部 SRAM 中运行。
(1)软件架构
软件基于活动对象模型实现,选择目前市面上最轻量级、应用最广泛的 QP(Qualification Programmer)事件驱动软件架构,即层状架构。最底层为板级支持包,是框架与底层硬件的中间件,提供任务调度、上下文切换、任务间通信等多种任务。其上层是事件驱动框架(QF),提供事件驱动机制,确保各活动对象间通信安全。QF再上一层为事件处理器(QEP),用于提供基于 UML状态图的层次状态机的语义。采用 QP框架的优势在于开发人员无需了解复杂的底层硬件接口及事件存储、分发和回收逻辑,只需要明确并创建各活动对象的状态机,设计各状态与事件之间的交互关系,便可通过 QP平台提供的一套建模方法和接口实例化各活动对象、状态机和事件,从而实现应用程序功能。此软件架构能够有效减少软件设计和维护工作量,提高软件开发效率。
(2)活动对象及其状态机创建
通过分解活动对象并分析各对象之间的事件交互关系实现从软件需求分析到基于活动对象模型的软件设计。
第一步分解活动对象的依据是实现松耦合的活动对象组件。在理想情 况下,各对象间不产生任何资源竞争,同时尽可能减少事件通信的频率和数据量。根据此规则,结合星载应用软件特点,将活动主体定义为星载计算机应用软件、星载计算机 SRAM 自检模块和星载计算机 SRAM 部分。
第二步是为已识别的活动对象分配任务和资源。为了避免资源共享,一般方法是将大部分资源封装在一个特定的活动对象中,在整个应用程序运行期间,由该对象负责此部分资源的使用和调度,其他活动对象仅通过事件机制分享资源。本抗辐射加固策略所涉及的系统资源主要是系统运行时间和SRAM 的存取带宽。在软件实现中,将该资源分配给应用程序调度,SRAM 和 SRAM 自检模块只能通过事件交互的方式请求应用系统为其调配上述资源。
各活动对象的事件交互关系如图所示。
应用软件、SRAM 自检模块和 SRAM 内部运行情况、状态迁移逻辑及事件触发条件分别如图 所示。各活动对象及其状态机的 QP对象实例化方法可以套用成熟代码实现,此处不再赘述。
——南京电子技术研究所--2017
抗辐照加固采用系统三模冗余的方式,将C6678 的 8 个核分为 5 组,如下所示,其中运算 1、2、3 组完成完全相同的运算任务,同组间的两个核协同完成运算任务;第一组核 0 作为控制模块,通过读写存于 MSMC 中的标志信息控制计算核的运算处理流程,另外对运算 1、2、3组中计算的结果进行三模冗余表决;最后第 5 组的核 7 周期性检查存于 DDR 中的其他核工作过程中的故障检测结果以及程序区求和校验,并通过外部接口上报主设备。
--南京理工大学 --2016硕士论文
(1)多机冷备份结构
多机冷备份属于动态冗余结构。根据设计的运行时间选用双机、三机或者多机的冷备份方案,在长寿命卫星中得到较多应用。冷备份结构具有功耗低的优点,在只有一个主机运行时,未上电的备用机不易受到福射影响,从而延长了星载计算机的使用寿命。但是该结构下主机切换至各份机时现场恢复需要消耗时间,实时性低。这种容错方案经过多个卫星的在轨验证,是一种比较成熟的容错方案。
(2)双机温备份结构
双机温各份也属于动态冗余结构,是指工作机与备份机同时加电,但是只有工作机的结果对外输出,备份机仅接收数据输入,关断结果输出。如果工作机发生故障,系统会对角色进行切换,将备份机视为工作机,并对其结果对外输出,原工作机将转换为备份机,等待故障修复。该容错结构的优点在于实时性好,能够快速故障恢复,缺点是发生故障时,故障检测判定的依据不易确定,需要増加故障诊断与检测的开销。该容错结构在国内微小卫星计算机平台有采用,但计算机都是一直处于开机运行状态,会由于长时间福射累积引起计算机的总剂量损坏,所以这种方案的星载计算机的寿命较短。
(3)三模冗余结构
三模冗余结构通过三套完全相同结构的系统对输入的数据进行处理,并对所有结果表决输出,实时性很高,在故障切换时数据现场保护好,无停控时间。但是三模冗余结构设计复杂,且和温备份方案相似,会受到福射累积效应的影响影响整机寿命。
从图中可以分析得出双机各份的可靠度高于单机与三模冗余结构,三模冗余在系统刚开始工作时可靠度高于单机系统,但随着时间的推移可靠度严重下降,甚至低于单机系统。
双机备份的容错结构比较适用于立方星。双机备份容错结构具有功耗低、复杂度低、可靠性高等特点,这些特点非常适合于立方星星载计算机系统。但是,双机备份结构具有体积较大的劣势,大卫星的星载计算机一般都采用系统级的备份方案,在星载计算机主系统发生故障时直接切换至备份系统,这种系统级的备份方案将占用卫星较大空间,显然并不能直接应用在立方星中。考虑立方星采用髙性能的 COTS 器件进行系统设计,这些器件集成度高,与大卫星相比电路复杂度降低,如果采用对星载计算机处理器的最小系统而并非整个系统进行备份,则可以有效降低电路面积,达到立方星星载计算机的设计要求。
星载计算机双机备份容错结构主要包括以下几个部分:
(1)CPU_A(B) 最小系统单元,包括 CPU 、SRAM 存储器,作为星载计算机软件的基本运行平台
( 2 )共享存储器单元,用于数据现场保存与恢复、程序和遥测数据等存储
(3)Arbiter 仲裁器单元,是双机备份系统的核心,控制双机故障切换
(4)电源控制单元,由 Arbiter 控制,实现当班机与备份机的故障切换
(5)BUS,降低各单元之间的耦合。该总线实现最小系统与 Arbiter 之间的数据交互,星载计算机软件
与星上其他分系统之间的信号、数据、指令等传递。
双机备份在不考虑 Aibiter 仲裁器单元故障的情况下可以通过切换故障处理器单元,实现系统的高可靠性和长寿命。但是双机冷各份仍然存在另外一个问题:如果 Arbiter 发生故障,则无法执行星载计算机的故障切换,这会影响星载计算机系统的正常运行,以至于出现系统失效。
从上表可看出,在 Arbiter 单元正常的情况下,系统将处于双机冷备份的容错模式,该模式是系统默认的初始化模式,并且将是系统运行时间最长的容错模式。若 Arbiter 单元发生故障失效,在 CPUA/CPU_B都正常的情况下,系统将进入双机热备份模式,然后因某 CPU 单元失效进入单机模式直至系统失效,否则直接进入单机模式直至系统失效。可见,通过容错总线协议的方法可以最大化地利用系统有效资源,直至系统无法工作,极大地提髙系统的可靠性,并可实现系统的长寿命要求。
软件程序存在于在内存中的不同位置,大部分情况下在单粒子翻转现象出现仅仅是改变了内存中某内存数据位,即更改了其中某一个程序的某个逻辑或某个数据从而导致输出错误结果或导致处理器运行故障。在仅是结果输出错误情况下,如果具备了多个相同任务的程序在同时执行,那么即使有一个程序结果出错,通过这几个相同任务结果的对比表决,是可以将错误结果屏蔽的,从而保证程序执行的可靠。同时,如果这些相同任务由不同的程序员设计,彼此的运算逻辑是独立的,则可以进一步提高程序结果的置信度。
在本设计中,N版本同步机制如上图所示,通过嵌入式操作系统提供的信号量机制,阻塞N个版本的任务执行,在规定的条件下发出任务同步信号量,达到各任务同步的目的。这些任务的优先级相同,在接收到任务同步信号量后,将通过操作系统的轮转调度完成这些任务的执行操作,实现软件N版本的同步。