上QQ阅读APP看书,第一时间看更新
2.3 I/O虚拟化实现技术
通过软件的方式实现I/O虚拟化,目前有两种比较流行的方式:“设备模拟”和“类虚拟化”,两种方式都有各自的优缺点。前者通用性强,但性能不理想;后者性能不错,却又缺乏通用性。为此,英特尔公司发布了VT-d技术(IntelVirtualization Technology for Directed I/O),以帮助虚拟软件开发者实现通用性强、性能高的新型I/O虚拟化技术。
在介绍I/O虚拟化设备之前,先介绍一下评价I/O虚拟技术的两个指标——性能和通用性。针对性能,越接近无虚拟机环境,则I/O性能越好;针对通用性,使用的I/O虚拟化技术对客户机操作系统越透明,则通用性越强。通过Intel VT-d技术,可以很好地实现这两个指标。
要实现这两个指标,面临以下2个问题:
(1)如何让客户机直接访问到设备真实的I/O地址空间(包括端口I/O和MMIO)。
(2)如何让设备的DMA操作直接访问到客户机的内存空间。设备无法区分运行的是虚拟机还是真实操作系统,它只管用驱动程序提供给它的物理地址做DMA操作。
第一个问题和通用性面临的问题程序是类似的,要有一种方法把设备的I/O地址空间告诉给客户机操作系统,并且能让驱动程序通过这些地址访问到设备真实的I/O地址空间。现在VT-x技术已经能够解决第一个问题,可以允许客户机直接访问物理的I/O地址空间。
针对第二个问题,Intel VT-d提供了DMA重映射技术,以帮助设备的DMA操作直接访问到客户机的内存空间。
下面主要介绍当前比较流行的Intel VT-d、IOMMU和SR-IOV技术。