魔龙公爵 3星
共回答了321个问题采纳率:98.2% 评论
IOMMU(i/o memory management unit)。iommu有两大功能:控制设备dma地址映射到机器物理地址(dmar),中断重映射(intremap)(可选)
1.1 dma地址空间映射
Iommu 的主要功能为设备dma时刻能够访问机器的物理内存区,同时保证安全性。
在没有Iommu的时候,设备通过dma可以访问到机器的全部的地址空间。
1、这种机制下如果将设备的驱动放在用户态,那么如何保护机器物理内存区对于用户态驱动框架设计带来挑战。当出现了iommu以后,iommu通过控制每个设备dma地址到实际物理地址的映射转换,使得在一定的内核驱动框架下,用户态驱动能能够完全操作某个设备dma和中断成为可能。
2、如果将这个物理设备通过透传的方式进入到虚拟化虚拟机里,虚拟机的设备驱动配置设备的dma后,hypervisor必须在透传设备dma访问时刻,对dma访问进行截获,将其中dma访问的虚拟机物理地址,转换为hypervisor为虚拟机分配的物理地址,也就是需要将虚拟机透传设备dma访问做vpaddr(虚拟机物理地址)---->ppaddr(物理机物理地址)。这部分截获对虚拟机dma来说带来切换到hypervisor开销,hypervisor转换地址开销。
当引入了iommu以后,这部分开销由iommu硬件承担,所有hypervisor工作就更加简单,只需要将透传设备Iommu dma地址映射表使用vpaddr--->ppaddr地址转换表即可(这部分表在hypervisor里配置在ept中)
3、方便了老式32位pci硬件在64位机器上的使用。只需要在iommu地址映射表上配置32bitpci设备dma地址-->64位机器物理地址即可。
4、方便了主机os配置设备dma工作,因为dma要求使用连续的地址空间进行读写,有了iommu的存在os就可以为设备配置连续的dma地址而真正对应的非连续的物理地址
21小时前
猜你喜欢的问题
1天前2个回答
1天前1个回答
1天前1个回答
1天前1个回答
1天前1个回答
1天前3个回答
热门问题推荐
2个月前1个回答
1个月前1个回答
1个月前5个回答
1个月前2个回答
3个月前4个回答
2个月前2个回答
2个月前2个回答
3个月前2个回答
3个月前1个回答