IOMMU地址转换原理

一、MMU VS IOMMU

Fig1. MMU地址转换框图

Fig2. 同一虚拟机下IOMMU地址转换框图

Fig3. 不同虚拟机下IOMMU地址转换框图

二、某个IO DEVICE如何找到其对应的IOPT并完成地址转换?

设备发起DMA请求时,会将自己的Source Identifier(包含Bus/Device/Func)和当前进程的PASID包含在请求中,IO MMU根据该标识完成映射。过程如下:

Fig4. IOMMU页表查询过程

查询详细过程过程如下:

(1) 用device id号查询DTE表,找到一个DTE表项,内容如下:

(2)通过DTE表项中的GCR3 Table Root Pointer找到GCR3 L1表(最高支持L3级)基地址。

(3) 用PSAID查询(最高L3级查询)GCR3表,找到对应PASID和device ID的GCR3表项。

(4) GCR3表项保存了IOMMU对应于PASID和device ID的页表的基地址,IOMMU用该页表对IOVA进行转换,即可得到IOPA。

三、多进程访问IOMMU

现在大部分IOMMU,都支持多进程访问。比如我有两个进程同时从用户态访问设备,他们自己管理iova,这样,他们给iommu提供的iova就可能是冲突的。所以,IOMMU硬件同时支持多张iopt,用进程的id作为下标(对于PCIE设备来说,就是pasid了),Fig.4展示pasid在GPU和CPU地址空间share的一个应用:

Fig.5 CPU和GPU地址空间共享

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

denglin12315

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值