linux内核中IOMMU 基础架构介绍

本文介绍了IOMMU在输入/输出设备地址管理和PCI设备虚拟化中的作用,区分了虚拟化和透传模型,详细阐述了Linux内核中IOMMU子系统的层次结构,以及DMA请求如何通过IOMMU进行地址转换,特别关注了虚拟环境中的地址映射过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IOMMU简介

IOMMU(Input-Output内存管理单元)是内存控制器的一部分,用于将设备虚拟机地址(也可称为io地址或设备地址)转换为物理地址。IOMMU与MMU的区别在于,IOMMU是将设备虚拟机地址转换为物理地址,而MMU是将CPU虚拟地址转换为物理地址。

PCI设备虚拟化模型

PCI设备虚拟化模型主要有两种:虚拟化模型和透传模型

虚拟化模型(基于虚拟机监视器的设备虚拟化)

VMM需要完成guest os与对应的物理设备之间的交互。意味着,VMM需要进行设备地址的转换(设备可见的虚拟地址与物理地址之间的转换),这将消耗更多的CPU资源,且在存在大量IO的时候会极大的影响系统性能。
Emulation

透传模型

如图所示,在guest os与物理设备的交互中VMM被旁路掉。在这种模式下VMM无需部署专门的软件来进行设备的模拟和地址转换,从而通过这种硬件辅助的方式提高系统性能。
passthrough

linux内核中的IOMMU子系统

linux内核中iommu子系统——总体概述

IOMMU子系统包含三层:

  • IOMMU DMA层:该层主要完成DMA请求的接收,并将其转发至IOMMU通用层。是DMA-API与IOMMU-API之间的连接层。
  • IOMMU 通用层:该层提供通用的IOMMU接口用于完成IO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值