论文部分内容阅读
21世纪以来,随着计算机运算性能飞速提高和网络带宽迅猛提升,以互联网为中心的新型概念如云计算、大数据以及移动互联网等悄然推动新一代信息革命。系统虚拟化作为云计算的基础技术之一,已经逐渐成为各个架构不可或缺的关键技术。以龙芯为代表的国产MIPS架构处理器也迫切需要一种简单高效可以快速实现的系统虚拟化方案来推动其系统虚拟化发展。 本文以MIPS兼容的国产高性能龙芯处理器为研究平台,详细分析了MIPS架构已有的虚拟化规范和体系结构特点,提出了一套较少硬件支持和较高性能的MIPS架构混合虚拟化方案。方案实现了处理器虚拟化、内存虚拟化和I/O虚拟化,研究了在MIPS架构上增加硬件支持对虚拟化性能的影响以评估了已有的硬件虚拟化规范的不足,并针对这些不足提出了行之有效的解决方法。 本文的主要工作如下: 实现了一套混合虚拟化系统HKVM-Loongson。该系统以KVM(Kernel-based Virtual Machine,基于内核虚拟机)为基础,基于混合虚拟化方案,利用硬件支持提升处理器虚拟化的效率,利用类虚拟化技术提升内存虚拟化的效率。HKVM-Loongson作为龙芯下一代虚拟化系统将被应用到下一代龙芯处理器中,目前可以在模拟平台上稳定运行。 虚拟机退出方面,本文提出了一种延时存储的方法,以减少在CPU中增加的虚拟机专用寄存器所造成的上下文切换开销。MIPS硬件辅助虚拟化规范增加了虚拟机专用寄存器,同时也带来了额外的上下文切换开销。本文利用虚拟机专用寄存器不影响宿主机的特性,提出了一种延时存储方法用于减少虚拟机专用寄存器保存和恢复的开销。通过在模拟平台上验证,该方法消除了单核单个虚拟机运行时所有的虚拟机专用寄存器造成的上下文切换开销,同时也能有效的减少多核多个虚拟机运行时的额外开销。 地址空间区分方面,本文提出了一种虚拟机地址空间区分方案,用以解决混合系统虚拟化方案的地址区分问题。虚拟机和宿主机如果没有地址区分方法,切换时就需要刷新TLB(Translation Lookaside Buffer,转换旁视缓冲器),造成额外开销。本文设计了一套简易高效适用性强的地址空间区分方案,方案分未实现硬件支持和实现硬件支持两种场景分别使用两种方法:复用ASID(Address Space IDentifier,地址空间描述符)方法和内嵌VPID(Virtual Processor IDentifier,虚拟处理器描述符)方法。这种虚拟机地址空间区分方案适用于混合虚拟化方案和KVM-Loongson的类虚拟化方案。通过使用类虚拟化系统KVM-Loongson在硬件平台上和使用混合虚拟化系统HKVM-Loongson在EVE模拟平台验证,该方法在不修改硬件情况下减少虚拟机近一半的TLB刷新数量,在修改硬件情况下能更加简单地实现消除刷新TLB的硬件支持,是一种简单高效适应性强的方法。 内存虚拟化方面,本文详细分析了结构化TLB类型MMU(Memory Management Unit,内存管理单元)的内存虚拟化方法特点,提出了一种基于影子缓冲的内存全虚拟化方法。本文对比分析了当前内存虚拟化方案和硬件规范中的双TLB地址映射方案的优劣,评估了当前使用的异构虚拟化内存与主流方案性能,发现双TLB地址映射方法带来更多的TLB缺失异常。针对这个问题,本文提出了基于影子缓冲的内存全虚拟化方法。通过QEMU模拟平台验证,这种方法对硬件修改较少,而且造成的异常数量更少,可以实现高效的内存全虚拟化。 本文实现了一套MIPS架构上的混合虚拟化解决方案并开发了基于此方案的虚拟化系统HKVM-Loongson,有效解决了MIPS架构上虚拟化效率和硬件设计复杂度问题,为在国产龙芯处理器上快速部署虚拟化方案提供了有力支持,同时也为龙芯在云计算和大数据等领域的应用提供了技术支持,为其他RISC架构上部署系统虚拟化方案提供了借鉴意义。