国家知识产权局专利局专利审查协作天津中心 天津 300304
摘要:本文从x86体系结构及其发展入手,基于x86虚拟化技术难点讲解,结合专利申请技术梳理,对x86架构虚拟机技术中硬件虚拟机技术和操作系统虚拟机技术发展作了详尽分析。可以了解:随着硬件微小化、资源节约化、物理机安全化等方面需求的增加,硬件虚拟机技术和操作系统虚拟机技术均在减少资源占用、提高安全性、提升虚拟机管理等方面探索不断改进的方式方法。经过本文对x86体系结构虚拟化技术的梳理,期望可以对该领域研究提供一定帮助。
关键词:x86;虚拟化;专利技术;分析
1.1 x86体系结构
通常,比较流行的两大处理器体系结构是MIPS公司的MIPS32/64指令集为代表的精简指令集计算机RISC处理器体系结构,和以Intel公司的x86为代表的复杂指令集计算机CISC处理器体系结构。RISC处理器可用指令较少,便于执行较简单的功能。
X86是使用x86指令集体系结构的所有微处理器家族系列的一类署名。x86 最初由 Intel 公司发明,由开始的 16 位结构发展到今天的 64 位结构。X86由8086微处理器开始,8086在三年后为IBM PC所选用,之后x86便成为了个人计算机的标准平台,成为了历来最成功的CPU架构。
1.2X86体系结构发展
8086是16位处理器,直到1985年32位的80386的开发,这个架构都维持是16位。接着一系列的处理器表示了32位架构的细微改进,推出了数种的扩充,直到2003年AMD对于这个架构发展了64位的扩充,并命名为AMD64。后来Intel也推出了与之兼容的处理器,并命名为Intel 64。两者一般被统称为x86-64或x64,开创了x86的64位时代。
2.1 X86虚拟化技术难点
虽然X86架构在PC市场占据绝对的垄断地位,但是由于其在初始设计时,并没有考虑到虚拟化需求,所以它对虚拟化的支持不够, X86的ISA有17条敏感指令(比如LGDT等)不属于特权指令。也就是说,当虚拟机执行到这些敏感指令的时候,很有可能出现错误,将会影响到整个机器的稳定。同时还有许多X86虚拟化所需要面对的问题未被研究。
2.2 X86虚拟化技术专利化概述
第一件x86架构下虚拟技术的先期研究性专利申请出现于1996年,随着服务器虚拟技术逐渐被尝试引入到PC平台,x86虚拟技术在1998-2001年进入最早应用者的探索阶段,因而专利申请数量一直持续低量状态;随着虚拟化逐渐项PC服务器领域渗透,2002-2005年进入x86虚拟机中主流有限应用的开发和测试阶段,专利申请量相较于前一阶段有所上升,且保持上升态势;随着x86虚拟技术的逐渐成熟,大量x86虚拟技术投入到生产系统以及企业标准化应用当中,例如免费的商业级可用性的虚拟化产品移入到那些新进入虚拟化世界的用户中,伴随着虚拟架构不断完善,从2006年开始,x86虚拟机及其相关改进专利申请大量涌现,并在2011增幅再度加大,持续保持增长状态,专利申请从2006年42件上升到2014年的250件。2016年后,虽然存在其他架构下的虚拟技术研究兴起,但x86架构虚拟机的专利申请量这一上升态势将会持续保持。
由于x86虚拟化技术研究起步于美国,且早期国内相关技术研究涉及的公司、组织较单一,同时x86虚拟技术本身存在着相当大的难度以及技术壁垒,2006年以前中国的x86虚拟技术专利申请美国申请占主要地位,从2007年起,中国专利申请占比逐渐提升。x86架构下的虚拟机相关专利主要集中在大公司,其中前位所在国家均集中在美国,以威睿(VMWARE)公司、微软、IBM、英特尔为主导,均是较早的投入到x86架构下虚拟机研究,并一直保持着该领域的技术优势。此外,日本的企业也是该领域的主要申请人,而在国内申请人中,专利申请量排名靠前的是华为、中国科学院、威盛电子、浪潮、联想等。x86虚拟技术的逐渐进入标准化、规模化的应用领域,不仅使得内外国大公司重视该技术的相关专利申请保护,同时国内的一些高校、研究所也开始组织研究该技术,并取得了一定的研究结果。
目前,基础专利申请大多掌握在美国大公司的手中,使得我国该领域技术发展处于不利状态;但同时,我国该领域技术发展又出现不同于外国发展的方向的分支,x86架构虚拟机安全性研究分支,且该方向上我国专利研究占主导位置;现阶段,由于中国专利申请的质量不高,与美国具有一定的技术差距;近些年国内专利申请量不断提升,但是重点专利2015年起有所下降,说明国内申请人仍然热衷于该领域的技术创新,但是该领域技术已经日趋成熟,申请人的技术创新创造性高度较低,而国外申请人从2014年开始申请量已经日渐减少,同样说明了该领域的技术创新的空间不大,国外申请人已经慢慢减少对此项技术的研发。
2.3 X86虚拟化技术专利技术发展路线
自IBM 研究中心在试验室里实现了其主机的镜像,虚拟机一直在大型机和小型机中运行, 直到二十世纪九十年代年VMware解决了一度被认为不太可能完成的x86平台的虚拟化问题,并且开创了x86平台的虚拟化市场。下面将从x86虚拟机技术中硬件虚拟机以及操作系统虚拟机两个方面记述x86虚拟技术的发展脉络。
图1给出了x86架构下硬件虚拟机技术和操作系统虚拟机技术的发展脉络及关键专利申请,根据技术发展特点主要分为三个阶段:x86虚拟技术最早期应用者探索阶段、x86虚拟技术用到有限应用的开发和测试阶段,以及x86虚拟技术投入到生产系统和企业标准化应用阶段。
图1 专利技术发展路线
硬件虚拟技术
硬件虚拟机支持在一台计算机上存在多个运行时环境,每个运行时环境可以支持一个操作系统。硬件虚拟机软件主要有三种实现方式:仿真(也是整系统模拟,动态翻译全虚拟化),虚拟机模拟完整的硬件;半虚拟化,例如Xen;本地虚拟(也是全虚拟化)。
由于X86体系架构固有的虚拟化技术漏洞,基于x86体系架构的系统虚拟机技术长期没有得到发展。经过前期探索形成一些x86架构虚拟技术的不成形的研究构思,例如CN97182273,1997.6.25一种改进的微处理器,提出对主处理硬件形态化;直至1998年PCT专利申请WO9918484和WO9918486第一篇严格意义上的关于x86架构虚拟技术的研究成果出现,在存储器和CPU之间添加预处理器(虚拟机解释器(VMI))能改善虚拟机指令的处理。由于二十世纪外国对中国专利申请布局不够重视,相关技术首次在中国申请专利还是在2001年,专利号为CN1596398,发明名称为对虚拟机解释器(VMI)加速硬件的软件支持,将应用程序编程接口(API)规定用于软件陷阱的附加功能,软件陷阱从虚拟机硬件中消除对于递归虚拟机指令的处理,并代之以使用软件处理递归虚拟机指令。
2000-2005年期间,x86虚拟技术逐渐应用到有限的应用的开发和测试中,为了减少当时还很庞大的硬件实体面积,针对硬件的虚拟化技术也逐渐被提出和研究。2004年开始Intel、超威半导体和微软开始提出x86架构下虚拟机的相关研究结果,Intel和超威半导体并于2005年先后发布其支持虚拟化指令的微处理器,表征其在x86硬件虚拟技术领域取得了典型性的成功,例如CN CN1585927-2001.9.27用于提供系统完整性和遗留环境模拟的方法,CN1575453-2000.12.27用于解决在一个虚拟机监控器和一个客户操作系统之间的地址空间冲突的方法,实现了虚拟机中存储空间冲突的问题。同期微软提出了x86架构下硬件虚拟解决方案及其主流应用的开发解决方案促进了X86体系下虚拟化技术的快速发展。相关专利有CN1601510-2004.3.5分布式计算系统的架构和分布式应用程序的自动设计、部署及管理,CN1797345-2004.12.30用于虚拟化图形子系统的系统和方法。
从2005年后半年起,x86虚拟技术开始逐渐投入到生产系统和企业标准化应用中去。随着计算机微小化的发展趋势越烈,针对硬件虚拟化技术研究出现大量,发明涉及硬件各个方面改进,如专利申请CN101278263-2005.10.8虚拟机环境中的输入/输出设备与物理存储器之间的直接存储器访问,实现硬件抽象组件特别地能够与所述VMM协同交互以使所述设备驱动器能够接收来自所述I/O设备的DMA;CN101266635-2006.12.27提供对临界存储器区域的受保护访问,基于虚拟处理器的系统的硬件检测对存储器的识别区域的存储器访问的指定类型,并且响应于所述检测而生成用于所述基于虚拟处理器的系统的虚拟机监视器的中断; CN101859256-2010.10.13一种硬件虚拟机中精简模式切换的I/O虚拟化方法,实现了在保证通信延在应用可以忍受的范围内最大程度的减少因为I/O通信引起的模式切换次数,从而提高硬件虚拟机的I/O性能;CN104685479-2012.8.29客户虚拟机内的虚拟输入/输出存储器管理单元,实现对虚拟机中虚拟I/O端口优化设计;CN105184113-2014.3.27用于实现安全视频输出路径的硬件辅助虚拟化,优化硬件辅助虚拟化技术,实现虚拟机的同步化。
同时,随着我国特有网络发展迅速、安全问题严峻等特点,近年来,国内的公司、组织在针对x86虚拟机硬件技术研究方面出现了与国外公司越来越重视硬件辅助虚拟化方面研究不同的分支,硬件虚拟机技术安全方面研究。如CN1896903-2007.1.17支持可信计算的虚拟机系统及在其上实现可信计算的方法,实现了该虚拟机监视器中设置有重定向通道,该重定向通道用于将来自不可信操作系统的I/O指令重定向到可信操作系统;CN104375890-2008.12.31用于执行安全嵌入式容器的处理器扩展;CN102012801-2011.4.13反病毒虚拟机硬件加速系统,实现虚拟机中针对硬件病毒的检测与防范;CN102096786-2011.6.15基于硬件虚拟化的跨平台安全保护系统,达到预防或及时制止有害攻击行为的目的;CN102521531-2012.6.27基于硬件虚拟化的密码保护系统,提供安全输入环境和交互接口,同时在虚拟机管理器层部署内核保护模块,实现x86硬件虚拟机安全授权保护。
操作系统虚拟技术
操作系统虚拟技术为基于虚拟机运行的主机操作系统创建了一个虚拟层, 用来虚拟主机的操作系统。最早x86架构下的操作系统虚拟技术,是受到虚拟化技术引入到x86架构过程中产生的,例如,其中CN1607503-2003.10.14在虚拟机器中使用合成指令的系统和方法,通过提供引发俘获并由此为虚拟机器(VM)提供安全处理指令的机会的一组“合成指令”,弥补了x86处理器体系结构中的缺点。通过使用对x86体系机构“非法”、但仍可被虚拟机器理解的指令,该方法使用了这些合成指令以在虚拟机器中执行较佳定义的动作,这些动作当由传统指令向x86处理器执行时将是有问题的,但是它们为x86处理器系统提供了大大改进的处理器虚拟化。基于此,为进一步提高运行效能,同时解决多种不同位操作系统运行的问题,2004年微软公司提出一种用于在虚拟机环境中实现操作系统的系统和方法(CN1716193,2004.6.30), 该操作系统能够确定它是否在虚拟机环境中操作,并且还能够修改其行为以在虚拟机环境中更有效地操作,具体的该操作系统知道它们正在虚拟机环境中操作,并且作为这一认识的结果,能够减少与虚拟机环境相关联的某些性能额外开销,实现了放松访客操作系统正在专用硬件上操作的假象,并描述由访客操作系统由于该假象被放松而更有效地操作的方法。而为了实现一个虚拟机的应用软件可以在第二虚拟机上应用,即迁移,CN1696902-2004.05.11迁移虚拟机的系统,实现了将操作系统和应用从该共享存储器复制到第二计算机或第二LPAR中第一虚拟机专用的第二专用存储器。然后,第一虚拟机在第二计算机或第二LPAR中重新开始。
随着计算机安全性设计需求的增加,操作系统虚拟机技术发展也存在安全领域分支,例如CN101226577-2008.7.23基于可信硬件与虚拟机的微内核操作系统完整性保护方法,采用可信硬件实现了虚拟机操作系统安全性、完整性的保护;CN102819712-2012.12.12保证虚拟机操作系统安全性的方法及装置,仅需要重新编译虚拟机操作系统和适当修改虚拟机监视器VMM便可以在MIPS架构安全的使用虚拟机操作系统;而减少资源消耗、同步管理操作系统也是操作虚拟机技术的重点发展方向,主要专利有CN101681269-2007.5.16多虚拟化技术的自适应动态选择与应用,实现了虚拟化计算机系统的虚拟化层中实现的多虚拟化技术之间的自治选择;CN101620547-2010.1.6 X86计算机虚拟化的物理中断处理方法,解决了同时运行多个虚拟化操作系统的X86计算机中物理中断处理方法实现复杂、代码庞大和中断处理开销大等问题;CN101876918-2010.11.3虚拟机客户操作系统同步任务感知方法,实现了Guest OS中运行的程序的类型并以此对虚拟机(VM)进行分类便于管理目的;CN102959513-2013.3.6虚拟机器合并方法和系统,将多个虚拟机操作系统合并在一个物理机上;CN105940375-2014.3.6针对多操作系统设备的动态再分配,实现了虚拟机多操作系统基于KMC的管理。
3.总结
本文通过对x86架构虚拟机技术中硬件虚拟机技术和操作系统虚拟机技术发展作了详尽分析,可以了解:随着硬件微小化、资源节约化、物理机安全化等方面需求的增加,硬件虚拟机技术和操作系统虚拟机技术均在减少资源占用、提高安全性、提升虚拟机管理等方面探索不断改进的方式方法。因此从整体上看,随着全球多方面技术不断精进,x86架构虚拟机技术经历了早期技术探索、前期有限应用开发、测试,直至近些年投入生产系统和企业标准化应用中,x86架构虚拟机技术发展已接近成熟。