设为首页收藏本站language 语言切换
查看: 1890|回复: 1
收起左侧

[分享] 在AMD平台上实现KVM虚拟化技术 (27)

[复制链接]
发表于 2012-10-30 15:33:35 | 显示全部楼层 |阅读模式
IOMMU
采用 virtIO 设备比仿真物理设备的方式会急剧的减小因 MMIO 和 PIO 截取而导致的 VMEXIT 数量,因此客操作系统性能会有明显的提升。但 virtIO 方式仍然没有摆脱这种由 VMM 层来实现 IO 设备行为的架构,客操作系统和 VMM 之间仍然存在必不可少的交互操作,让 virtIO 的性能难以提升到真实物理设备所能提供的能力。让客操作系统直接使用 PCI设备 ( 或称 PCI-passthrough) 是最大化其 IO 性能的方式linux
然而,如果没有特殊的硬件支持,让客操作系统直接使用 PCI 设备会带来问题。 第一个问题是,PCI 设备通过 DMA 方式访问内存,最终需要向 DRAM 控制器发出一个有效的物理地址,即 hpa, 但是运行在客操作系统上的设备驱动,其向设备的 DMA 控制寄存器写人的必然是一个 gpa, 这种地址的差别如何解决?第二个问题是对 DMA 的地址和设备的中断控制的问题,如何防止客操作系统恶意地设置用于 DMA 的地址和或通过 PCI 配置空间发起恶意的中断linux
在 AMD 平台上,IOMMU 就是解决虚拟机直接使用物理设备问题的技术。在物理上,IOMMU 就是一个针对于外围设备的内存管理单元,相似于 CPU 上的 MMU。 AMD IOMMU 提供如下功能linux
• 地址翻译。
• 隔离和访问控制。
在 IOMMU 出现之前,x86 上的 GART 硬件实际上已经提供了一定的地址翻译功能。GART 和 IOMMU 相比,在地址翻译上局限性比较大,第一个局限是 GART 只能将其 Aperture 空间的地址翻译成随意的物理地址, 每个使用 GART 的设备必须从 Aperture 申请空间,由于 Aperture 空间的局限性,GART 一般只是用于由 AGP 卡linux独立使用,进行数据拷贝的情形; 第二个局限就是 GART 不具备地址空间隔离能力,所有的设备只能通过一个翻译表将 Aperture 地址空间翻译成其他物理地址区域,无法阻止一个设备的驱动使用另外一个设备的 Aperture 范围。详细:http://www.51rhca.com/archives/580

 楼主| 发表于 2012-10-31 17:32:06 | 显示全部楼层
谢啦!!!
沙发 2012-10-31 17:32:06 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-29 16:46 , Processed in 0.217385 second(s), 28 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表