IOMMU简述-上篇

IOMMU的全称是Input/Output Memory Management Unit,即输入/输出内存管理单元,其主要功能链接DMA-capable I/O总线和系统内存。传统的内存管理单元MMU,是将CPU-visible的虚拟地址转换成物理地址,而IOMMU则是将Device-visible的虚拟地址转换成物理地址。例如:GARTGraphics Address RemappingTable)就是一种IOMMUPCIE的显卡就是利用GART,将GPU的虚拟地址转换成系统内存的物理地址。但是,需要注意一点,GART不支持保护模式,而现代的IOMMU是支持保护模式的。

1.IOMMU的基本功能

1.1 IOMMU能做什么?

  • 转译Device的Request;
  • Device必须授权访问系统地址空间,包括:页保护,每个Device都有各自的读/写权限;
  • 维护转译表的高速缓存器;

1.2 IOMMU不能做什么?

  • 不是MMU的替代品,CPU访问物理内存,依然使用MMU;
  • 不能支持直接请求Paged I/O,比如:1)Device和Driver无法处理任意的延迟;2)Device和Driver无法识别“I/O Page Fault”之类的错误;3)支持利用远程地址转译的方法间接地请求Page;

2. 系统拓扑结构


 通常情况下,IOMMU会被部署成HT(HyperTransport)或者PCI Bridge的一部分。在高端系统中,CPU和I/O Hub之间可能会有多个HT链接,此时就需要多个IOMMU。

3. IOMMU的优点

3.1虚拟化技术

  • Guest OS直接被分配到实际的Device;
  • 用户空间的应用程序可以直接访问Device;

  • 增强了安全性:1)增加了Device对地址空间的访问控制;2)创建I/O保护域;
  • 增强了可靠性:1)Device之间是独立,互不干扰;2) 保护系统内存不被不明的Device读/写;

  • 支持可信任的输入/输出:在Device和Driver之间创建了保护通道

  • 让传统32位PCI设备能够访问可寻址范围之外的系统内存区域,并且避免使用Bounce Buffer


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值