码迷,mamicode.com
首页 > 其他好文 > 详细

对IOMMU 和 vIOMMU 的简单理解

时间:2018-07-04 11:45:16      阅读:289      评论:0      收藏:0      [点我收藏+]

标签:物理   翻译   nes   ping   支持   引入   The   防止   转换   

MMU(Memory Management Unit, 内存管理单元): 将虚拟地址转化为物理地址,cpu与主存之间地址转换。
DMA(Direct Memory Access,直接内存存取): 是一种快速传送数据的机制。DMA 传输将数据从一个地址空间复制到另外一个地址空间。当CPU 初始化这个传输动作,传输动作本身是由 DMA 控制器来实行和完成。最初的DMA地址是物理地址,后来dmar就出现了。 dmar意为DMA remapping,是Intel为支持虚拟机而设计的I/O虚拟化技术,I/O设备访问的DMA地址不再是物理内存地址,而要通过DMA remapping硬件进行转译,DMA remapping硬件会把DMA地址翻译成物理内存地址,并检查访问权限等等。负责DMA remapping操作的硬件称为IOMMU
IOMMU设备访问的虚拟地址转化为物理地址,连接DMA-capable 总线和主存。为了防止设备错误地访问内存,有些IOMMU还提供了访问内存保护机制(检查访问权限)。IOMMU不仅将DMA地址虚拟化,还起到隔离,保护等作用。
vIOMMU: 设备分配到guest以后,guest的内存地址对设备来说是用户空间地址,可以完全访问,如果设备对guest的某些地址进行恶意写,会导致guest crash。所以引入vIOMMU,它对guest的作用,相当于IOMMU对host的作用。它会导致guest的performance下降。For nested virtualization, an IOMMU is required for device assignment to work. Here, to assign a L1 guest device to a L2 guest, we also need a vIOMMU inside L1 guest to build up the page mappings required for device assignment work.

https://nanxiao.me/iommu-introduction/
http://linuxperf.com/?p=67
https://wiki.qemu.org/Features/VT-d

对IOMMU 和 vIOMMU 的简单理解

标签:物理   翻译   nes   ping   支持   引入   The   防止   转换   

原文地址:http://blog.51cto.com/11527071/2135933

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!