论文部分内容阅读
由于IT行业的持续发展和人们对各种程序的性能的要求持续提高,处理器的研究也在持续发展,处理器的运算速度也随之持续上升。单核时期,Mooreslaw反应了处理器的发展规律,采用增加处理器频率的办法而改善处理器的运算速度是单核条件下的主要解决途径。但是随着性能的提升,功耗也急速提升,从而主频的上升空间已经越来越小。现在处理器的主要发展趋向,已经从单核走向了多核。通过多核并行计算处理操作系统和应用程序的命令与任务,从而提升处理器的处理能力,已经成为主流的方法。
龙芯处理器是我国自主研发的基于MIPS指令集的处理器,目前已经研究开发出了龙芯的多核处理器型号——龙芯3A处理器。但是目前的处理器体系结构中,X86体系结构仍然占据主导地位,并且许多应用软件与操作系统都是基于X86体系结构开发的,因此,为了使龙芯可以有更好的通用性和更多的用户,如何处理MIPS和X86之间的兼容性就尤为重要。动态二进制翻译则为处理这类难题的最佳途径之一,通过模拟器,将X86的指令动态地翻译为MIPS的指令并且在龙芯主机上执行,可以使兼容的难题得到解决。QEMU是目前开源软件中的一款对龙芯支持比较好的二进制翻译软件,拥有用户统模拟和系统级模拟。
本文在研究了QEMU如何虚拟多个核的方法之后,主要分析了QEMU并行化的基本方法,最终采用了将QEMU虚拟出的CPU,每个CPU都分别进行线程化,再针对翻译块、内存以及I/O等方面进行相关的修改,从而改善和完成针对龙芯体系结构的QEMU的并行化,使其可以在x86平台下稳定的运行。随后将多核多线程并行化的QEMU移植到龙芯3A平台上,解决移植过程中遇到的一些关键问题。而在移植过程中,最主要的一项难题便是X86与MIPS体系结构下的原子指令问题,本文针对了32位、16位、8位对齐情况下的原子指令,64位情况下的原子指令以及非对齐情况下的原子指令三种情况,分别给出了详细的原子指令问题的解决方案,使得并行化的QEMU代码,可以移植到龙芯3A平台下稳定地运行,经过了相关的实验和测试,从而合理的利用龙芯3A的多核优势运行X86的操作系统和应用软件。