论文的核心突破是设计并实现了vIOMMU(模拟 IOMMU),同时提出两项关键优化,解决了直接设备分配的缺陷,且无需修改虚拟机 OS:
Linux 的默认模式会通过放松 IOMMU 保护来提升性能:它会批量失效过期的 IOTLB(IOMMU 中的 I/O 转换后备缓冲器)条目,并每 10 毫秒集中从 IOTLB 中清除这些条目。这种方式确实会降低保护级别 —— 因为在这一短时间窗口内,有缺陷的设备可能通过过期条目成功执行 DMA 事务。尽管如此,对于物理机而言,其性能提升效果十分显著:上述吞吐量从 43% 提升至 91%,这一收益足以证明承担该风险的合理性

总体而言,侧核硬件模拟遵循与同核模拟相同的核心原理:客户机对设备进行编程,虚拟机监控程序检测到客户机的设备访问操作,解析访问的语义并模拟硬件行为。但侧核模拟与同核模拟存在两项根本性差异:第一,当客户机访问设备寄存器时,无需触发从客户机到虚拟机监控程序的昂贵陷阱(trap),取而代之的是,设备寄存器内存区域由客户机与虚拟机监控程序共享,虚拟机监控程序通过轮询(polling)模拟控制寄存器以获取更新;第二,客户机代码与虚拟机监控程序代码在不同核心上运行,这减少了缓存污染,同时提升了各核心专属缓存的利用率。 侧核模拟能否高效运行,取决于 I/O 设备与客户机操作系统之间的接口 —— 因为侧核是通过轮询内存区域获取更新,而非接收离散寄存器访问事件的通知。