内容简介:芯片制造商英特尔、Advanced Micro Devices(AMD)和ARM公司部署了指令集扩展,以使硬件支持虚拟化,但其中所涉及的代码和首字母缩略词很难理解。长期以来,硬件支持一直是虚拟化不可或缺的要求,硬件支持可使选定的虚拟机管理程序能够以硬件时钟速度处理复杂的指令权限转换以及管理虚拟化内存资源。指令集扩展可为虚拟化提供硬件支持,指令集扩展是指添加到处理器和其他芯片的整套新晶体管,它可带来新功能以及直接处理特定的新指令。如果没有这种扩展,虚拟化所需的功能和任务将需要软件仿真,而这通常过于繁琐且低效,
芯片制造商英特尔、Advanced Micro Devices(AMD)和ARM公司部署了指令集扩展,以使硬件支持虚拟化,但其中所涉及的代码和首字母缩略词很难理解。
长期以来,硬件支持一直是虚拟化不可或缺的要求,硬件支持可使选定的虚拟机管理程序能够以硬件时钟速度处理复杂的指令权限转换以及管理虚拟化内存资源。
指令集扩展可为虚拟化提供硬件支持,指令集扩展是指添加到处理器和其他芯片的整套新晶体管,它可带来新功能以及直接处理特定的新指令。如果没有这种扩展,虚拟化所需的功能和任务将需要软件仿真,而这通常过于繁琐且低效,无法处理重要的虚拟化任务。
虚拟化主要是一种计算活动,它需要全面的内存管理和对特权访问的控制。因此,英特尔和AMD都在试图提供虚拟化支持–通过在其处理器中添加指令集扩展和一系列互补功能。
英特尔虚拟化技术(VT)
在2005年,英特尔推出Intel VT-x—基于两款奔腾4处理器,这也是英特尔第一次推出虚拟化硬件支持。VT-x添加了10条新指令,可创建和控制虚拟机(VM)。该虚拟化软件在虚拟执行模式运行,其中客户操作系统具有完全权限,而不会干扰受保护和隔离的主机操作系统。
在最初推出VT-x后,英特尔还推出额外的虚拟化技术,虽然这些虚拟化技术不是特定的VT-x命令,但附加功能为英特尔处理器提供了更多的虚拟化功能。
2008年,英特尔增加了对扩展页表(EPT)的支持,这是英特尔部署的二级地址转换(SLAT)或嵌套分页。
虚拟化必须将物理内存地址转换为虚拟内存地址。问题在于这种转换发生了两次:一次是针对主机VM,第二次是针对每个访客VM。这无疑会增加开销并降低性能。扩展页表等二级地址转换技术可改进内存管理和提高性能,主要是通过消除这种开销以及同时处理所有内存管理任务来实现。
2010年,英特尔开始支持不受限制的访客,也被称为IA-32e模式,这种模式使逻辑处理器和虚拟CPU可在处理器上以实模式运行。这使访客虚拟机通过使用自己的扩展页表可在裸机模式运行。VMware
Workstation 14和Fusion 10等部分软件要求处理器支持IA-32e模式。
到2013年,英特尔推出虚拟机控制结构(VMCS)阴影绘制。长期以来,虚拟化面临的挑战是嵌套问题,即在VM中运行VM。每个VM都使用唯一的数据结构,当VM在VM中运行时,数据结构必须交换或更改。
在2013年之前,解决此问题的方法是缓存每个VMCS并使用软件来处理它们,但这个过程太费时并降低性能。而将VMCS阴影绘制添加到处理器可使VMCS处理更加高效并提高VM性能。
AMD虚拟化(AMD-V)
AMD公司最初在2006年向其处理器系列的几款处理器添加了虚拟化支持所需的命令集扩展,包括Athlon 64、Athlon 64 X2、Athlon 64 FX、Turion 64 X2以及部分Opteron、Phenom和Phenom II处理器。AMD-V命令使开发人员能够编写软件以创建和控制VM,支持使用虚拟机管理程序。
随后AMD又以快速虚拟化索引的形式向部分K10和Phenom II处理器增加了二级地址转换或嵌套分页支持以提高物理到虚拟内存转换的性能,这在功能上与英特尔的扩展页表完全相同。
ARM虚拟化
采用RISC架构的处理器已开始部署虚拟化支持。符合行业标准的ARM架构版本8(即ARMv8-A)现在支持虚拟化功能,使ARM芯片能够运行多个VM,且每个VM都有不同的操作系统。
ARMv8.1引入了虚拟化主机扩展(VHE),它为Type 2虚拟机管理程序提供了增强支持。
ARMv8.1-VHE还提供基本地址转换,另一方面,ARMv8.3-NV增加了对嵌套虚拟化的支持。
ARM处理器通常使用精简指令集,这需要更少的能量和冷却,因为晶体管数量非常少,而且,由于其采用更简单的处理器设计,它们通常可以提供更好的性能。ARM芯片长期以来一直部署在嵌入式系统和服务器中,用于处理基本的大容量工作负载,例如Web服务器。
现在,在添加虚拟化硬件支持后,ARM系统可承载更多工作负载,这使其开始吸引更多人的关注,特别是吸引那些极其庞大的数据中心。
英特尔APICv和AMD AVIC
处理器通常会使用中断,使系统能够被现实世界的事件中断,例如键盘信号或系统条件。但是,大量中断可能会影响虚拟化系统的性能,不断要求工作负载停止并等待CPU解决系统中正在发生的其他事情。
中断虚拟化的概念,通过 排序 和排列中断可减轻这些潜在的性能影响。排序使系统能够根据优先级解决中断,而排列则让系统等待最合适的时间来解决中断问题。总体而言,这些技术可最大限度地降低中断对虚拟化环境的性能影响。
在2012年,英特尔和AMD都增加了中断虚拟化。AMD采用的是高级虚拟中断控制器(AVIC),该控制器提供在后期型号的Carrizo处理器中。而英特尔则使用高级可编程中断控制器虚拟化(APICv),该虚拟化最早出现在2013年和2014年的多款Xeon E5处理器中。
在2019年,除部分Intel Atom型号外,几乎所有主要处理器型号都具有虚拟化硬件支持。例如,Atom处理器的Diamondville,Pineview和Cedarview变体不支持Intel-VT。
默认情况下,虚拟化支持并非始终启用。某些系统主板要求管理员在软件可使用虚拟化功能之前启用系统固件(BIOS)中的虚拟化功能。
在这个由三部分组成的系列文章的第二部分中,我们将介绍每个主要的GPU扩展。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 三分钟了解到底虚拟化平台能做什么?
- 虚拟化生态系统及实现从虚拟化走向云端
- KVM虚拟化技术(一)虚拟化简介以及按安装
- 云计算技术分享之桌面虚拟化中的3D虚拟化解决方案经验总结
- 虚拟化技术介绍
- 如何探测虚拟化环境是物理机、虚拟机还是容器?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
UNIX环境高级编程
W.Richard Stevens Stephen A.Rago、Stephen A. Rago / 人民邮电出版社 / 2006-2 / 99.00元
本书是被誉为UNIX编程“圣经”的Advanced Programming in the UNIX Environment一书的更新版。在本书第一版出版后的十几年中,UNIX行业已经有了巨大的变化,特别是影响UNIX编程接口的有关标准变化很大。本书在保持了前一版的风格的基础上,根据最新的标准对内容进行了修订和增补,反映了最新的技术发展。书中除了介绍UNIX文件和目录、标准I/O库、系统数据文件和信......一起来看看 《UNIX环境高级编程》 这本书的介绍吧!