论文部分内容阅读
嵌入式系统因其系统精简、专用性强以及高实时性等优点,被广泛的应用于航空航天领域。然而,随着计算机性能大幅度的提升,芯片更容易受到空间辐射的影响。在恶劣辐射环境中,由高能粒子辐射造成的单粒子效应是机载计算机系统失效的主要原因。由单粒子翻转导致计算机系统发生的瞬时故障是单粒子效应最主要的表现形式。由于不同场景下对系统可靠性以及性能开销指标的要求不同,提供具有高可靠性并满足代价约束的错误检测解决方案成为设计高可靠机载计算机系统的一项挑战。因此,研究恶劣环境下嵌入式系统软件的错误检测技术具有重要的意义和应用价值。本文对面向瞬时故障的软件错误检测技术进行了深入的研究。主要研究工作如下:(1)针对基于冗余计算的数据流错误检测方法性能开销较高的问题,提出了基于支持向量回归的数据流错误检测方法。通过分析故障注入的实验结果,结合程序分析技术给出了影响程序指令脆弱性的指令特征的提取方法,基于支持向量回归建立了指令SDC脆弱性预测模型,根据指令SDC脆弱性预测值对目标程序进行不同粒度的指令冗余处理。实验结果表明,该方法能够在保证较高错误检测率的同时,具有较低的性能开销。(2)针对基于标签分析的控制流错误检测方法性能开销较高的不足,设计了基于基本块重划分的控制流错误检测机制。通过分析各种控制流图的控制转移类型,对基本块节点进行重划分和分类,结合基本块跳转规律设计了节点类型标签和前驱/后继标签相结合的双标签分析机制,可有效的提高标签的表达能力,实现了基本块内、基本块间以及过程间的控制流错误检测。通过对检测效能的分析,验证了设计的控制流错误检测机制能达到较高的错误检测率。(3)在上述研究基础上,对LLVM编译器框架进行了研究,基于LLVM编码实现了各功能模块,设计并初步实现了面向瞬时故障的程序加固系统,经过该系统加固后的目标程序可具备面向瞬时故障的错误检测能力。应用该系统对Mibench嵌入式程序集进行加固,在ARM目标平台下进行故障注入实验,实验结果表明,本文设计的错误检测机制能够有效地解决瞬时故障的检测问题。