控制流检测可以有效地提高微处理器容错能力.针对传统软件实现的控制流检测时空开销大的缺点,提出了一种软硬件结合的控制流检测与恢复方法.该方法通过编译自动插入签名数据,由硬件在分支/跳转指令之后自动执行检测,并且提供了硬件现场保存和恢复机制,检测到控制流错误后无需复位系统即可以快速恢复正常控制流.基于8051体系结构实现了软硬件结合的控制流检测与恢复方法,实验结果表明与传统的软件控制流检测相比,该方法在保持相同的错误检测率的情况下,可以大幅减小二进制代码量和额外的性能开销,在发生控制流错误以后可以快速恢复正常控制流.
With the exponential increase in the transistors per chip, microprocessors are becoming more susceptible to soft errors. Control flow checking has been proved effective in promoting soft error tolerant ability of microprocessors. The conventional control flow checking method inserts large number of signature instructions in the program by compiler. So it imposes large overheads on both binary code size and program execution performance. Moreover, the conventional control flow checking method does not consider the recovery from control flow errors. A new method, control flow checking and recovering by compiler signatures and hardware checking (CFCCH), is proposed in this paper to solve the aforementioned problems. CFCCH uses a compiler to insert signature data, not signature instructions, in the program to reduce the binary code size. Hardware checking is automatically triggered after the branch/jump instruction so that the execution cycles of the checking operation can be reduced. Hardware implemented context saving and recovering is also proposed to provide fast recovering from control flow errors. CFCCH based on 8051 architecture is implemented in this paper. Random faults are injected in the 8051 microcontroller with CFCCH to evaluate the soft error tolerant ability. The experimental results demonstrate that compared with the conventional control flow checking method, CFCCH can efficiently reduce the binary code size and program execution time while keeping the same soft error tolerant ability.