论文部分内容阅读
随着集成电路制造工艺的持续发展,现代计算机系统的性能在大幅度提高的同时,其可靠性也正日益面临着软错误的严重威胁。软错误,指的是元器件吸收并积累外界能量例子的辐射,当达到一定程度时,有可能会造成器件状态的改变,通常表现为位翻转。软错误会改变程序的控制流和数据流,造成程序的错误或者异常,给计算机系统的可靠性和可用性带来极大的损害。对于那些用于极端环境的计算机系统,软错误会造成更大的危害。 当前针对软错误的容错技术大体可以分为两类:基于硬件实现和基于软件实现。基于硬件实现的容错技术错误覆盖率高、性能好,但是成本高。基于软件实现的容错技术,能够在不增加成本的情况下,具有较好的灵活性和错误覆盖率。但是,基于软件实现的容错技术面临的严峻挑战是往往会给计算机系统造成比较大的性能开销。 在Java虚拟机层面实现容错具有移植性好、透明等优势,但是同样面临性能的问题。本文在Java虚拟机层面进行了容错技术的研究,分别针对Java虚拟机的控制流和数据流提出了容错方法,并提高了Java虚拟机的访存和取址性能。本文的主要工作如下: 1.提出并实现了一种针对Java虚拟机控制流的多位错误恢复方法。该方法是一种主动性的、预防性的错误恢复技术,通过对Java虚拟机分步骤地、并行地、并发地进行再生,达到消除Java虚拟机中软错误的目的。实验结果表明,该方法能够有效提升Java虚拟机的可靠性,同时对Java虚拟机产生的性能损失不到1%。 2.提出并实现了一种针对Java虚拟机数据流的错误检测方法。该方法基于数据的时间信息和来源信息对数据进行有差别的校验,可以实现对Java虚拟机的堆空间和栈空间中的数据进行错误检测。实验结果表明,通过该方法以及相应的优化算法,比如短生命期数据优化、更新校验码优化、栈顶优化以及获取当前时间优化,Java虚拟机的可靠性和错误检测的效率得到了显著的提高。 3.提出并实现了一种基于双基址寻址指令的快速访存方法和一种加载地址的优化方法。该方法从硬件和软件两方面优化MIPS64位Java虚拟机的访存和取址的过程,减少了生成代码的指令数,提高了程序性能。实验结果表明,该方法能够有效提升龙芯平台64位Java虚拟机的性能并降低Java虚拟机生成代码的体积。上述部分成果在基于龙芯处理器的Java虚拟机上得到了实际应用。