在计算机领域,输入输出内存管理单元(英语:input–output memory management unit,缩写IOMMU)是一种内存管理单元(MMU),它将具有直接記憶體存取能力(可以DMA)的I/O总线连接至主内存。如传统的MMU(将CPU可见的虚拟地址转换为物理地址)一样,IOMMU将设备可见的虚拟地址(在此上下文中也称设备地址或I/O地址)映射到物理地址。部分单元还提供内存保护功能,防止故障或恶意的设备。

ARM将其IOMMU版本定义为系统内存管理单元(SMMU),以补充其虚拟化架构。

IOMMU的一个例子是Intel架构和AMD计算机上使用的AGP和PCI Express显卡所使用的图形地址映射表(GART)。

在x86架构将CPU与平台路徑控制器(PCH)的北桥和南桥拆分前,I/O虚拟化不是由CPU而是由芯片组执行。

输入输出内存管理单元(IOMMU)与内存管理单元(MMU)的比较。

优点

与内存的直接物理寻址相比,拥有IOMMU的优势包括:

  • 分配大容量内存区域可以不需连续的物理内存——IOMMU可将连续的虚拟地址映射到底层中分段的物理地址。因此,有时可以避免使用向量化I/O(分散-集中列表)::sg table。
  • 不支持寻址整个物理内存长度的设备仍可通过IOMMU访问整个内存,避免了与外围设备的可寻址内存空间复制缓冲区有关的开销。
    • 例如,x86计算机可以用x86处理器中的物理地址扩展(PAE)功能访问超过4GB的内存。但是,普通的32位PCI设备根本无法访问4Gib范围外的内存,并且因此它不能直接访问。如果没有IOMMU,操作系统将不得不实现耗时的反弹缓冲区(也称双缓冲区。)
  • 内存得到保护,尝试进行DMA攻击的恶意设备或尝试传输错误内存的故障设备无权读写非明确分配(映射)的内存。内存保护基于一项事实,CPU上运行的操作系统(见图例)专门控制MMU和IOMMU。设备本身无法绕过或损坏已配置的内存管理表。
    • 在虚拟化中,客户机操作系统可以使用非专为虚拟化设计的硬件。诸如使用DMA直接访问内存的显卡等硬件会有更高性能。在虚拟环境中,所有内存地址都会被虚拟机软件重映射,从而导致DMA设备遇到故障。IOMMU则处理这种重映射,允许在客户机操作系统中使用原生的设备驱动程序。
  • 在某些架构中,IOMMU也执行硬件中断重映射,工作方式类似标准内存地址重映射。
  • 外设内存分页可由IOMMU支持。使用PCI-SIG PCIe地址转换服务(ATS)分页请求接口(PRI)扩展的外设可以检测和表示需要内存管理服务。

对于端口I/O的地址空间与内存的内存地址空间不同的系统架构,CPU与设备通过I/O端口通信时不使用。如果端口I/O与内存的地址空间被映射到一个合适的空间,则可以用IOMMU转换I/O访问。

缺点

与内存的直接物理寻址相比,IOMMU的缺点包括:

  • 性能因翻译和管理开销(例如页表变动)有所下降。
  • 增加的I/O分頁表(转换表)消耗一些物理内存。如果该表可与处理器共享,则此问题可以缓解。

虚拟化

当操作系统在虛擬機器内运行时(包括使用半虚拟化的系统,例如Xen),其通常不知道它要访问的内存的主机物理地址。这使其难以直接访问计算机硬件,因为如果客户机系统尝试用客户机的物理地址进行直接記憶體存取(DMA)来吩咐硬件,其可能损坏内存数据,因为硬件不知道给定虚拟机客户机物理地址与主机物理地址之间的映射关系。而由管理程序或主机操作系统介入I/O操作来应用翻译则可以避免损坏,但会增加此I/O操作的延迟。

IOMMU可以依靠将客户机物理地址映射到主机物理地址的相同或兼容转换表重映射硬件访问地址,从而解决延迟问题。

======================================

https://zh.wikipedia.org/wiki/%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86%E5%8D%95%E5%85%83

系统内存管理单元(SMMU)负责内存管理的所有方面,包括缓存和内存虚拟化。 它为所有SoC组件提供了一个通用的内存视图。 它强制实施内存保护和访问原理图,同时扩展与主应用处理器提供的内存虚拟化服务相匹配的内存虚拟化服务,以确保SoC的一致安全性。 SMMU设计用于虚拟化系统,其中多个客户操作系统由管理程序管理。

https://developer.arm.com/ip-products/system-ip/system-controllers/system-memory-management-unit

SMMU-System Memory Management Unit相关推荐

  1. System Memory Management in Windows CE .NET

    http://msdn2.microsoft.com/en-us/library/ms836792.aspx 转载于:https://www.cnblogs.com/shuiyan/archive/2 ...

  2. ARM V8A体系结构-第十二章 The Memory Management Unit

    概述 内存管理单元(MMU)的一个重要功能是使系统能够运行多个任务,作为独立的程序在它们自己的私有虚拟内存空间中运行.他们不需要了解系统的物理内存映射,也就是硬件实际使用的地址,或者可能同时执行的其他 ...

  3. Operating System Concepts--chap9 Memory Management;

    为什么80%的码农都做不了架构师?>>>    这一章节的memory management内容覆盖从bare-machine approach到paging和segmentatio ...

  4. [翻译] - Inside SQL Server 2000's Memory Management Facilities

    原文地址:Inside SQL Server 2000's Memory Management Facilities     翻译:RicCC Ken Henderson     Microsoft ...

  5. MIT 6.828 (二) Lab 2: Memory management

    Lab 2: Memory management 做这个实验之前首先需要知道什么是分页.分段在这个实验里面没用到过. 前面是一大堆教你怎么获取lab2资源的,我不知道怎么弄,后来乱搞了一下,就把lab ...

  6. 内存管理:Linux Memory Management:MMU、段、分页、PAE、Cache、TLB

    目录 Linux Memory Management Memory Address Need for Virtual Addressing Address Translation Address Tr ...

  7. 《modern operating system》 chapter 3 MEMORY MANAGEMENT 笔记

    MEMORY MANAGEMENT The part of the operating system that manages (part of) the memory hierarchy is ca ...

  8. ARM异常处理(3):Bus faults、Memory management faults、Usage faults、Hard faults详解

    之前介绍了了ARM异常处理(1):异常类型.优先级分组和异常向量表,里面有很多异常类型,其中有几个异常在错误处理中非常有用: 文章目录 1 Bus Fault 2 Memory Management ...

  9. Java (JVM) Memory Model – Memory Management in Java

    原文地址:http://www.journaldev.com/2856/java-jvm-memory-model-memory-management-in-java Understanding JV ...

最新文章

  1. sqljdbc.jar 和 sqljdbc4.jar
  2. 好玩的东西,测试一下
  3. BZOJ2831(小强的金字塔系列问题--区域整点数求法)
  4. SharePoint 2007 文件夹或者文件名过长
  5. 开源全能播放器Vitamio的使用
  6. 基层数字化治理困境如何破局?
  7. c 语言 string类型转换,用标准c++实现string与各种类型之间的转换
  8. mysql alert table 日志_MySQL日志
  9. Redis精进:List的使用和应用场景
  10. 使用SSIS包导入SQL Server FILESTREAM数据
  11. Kafka(下):Kafka消费者API,producer拦截器(interceptor)及案例,kafka流Streams,Stream数据清洗案例,Kafka配置信息,flume对接Kafka
  12. vc2013 调用大漠插件例子
  13. 无人机协同搜索matlab,一种多无人机协同目标搜索方法与流程
  14. docker学习--数据卷
  15. 服务器装系统03系统,服务器系统安装windows2003教程
  16. 中国商业环境发展的五个阶段浅析
  17. 微机原理与接口技术[第三版]——第三章课后习题答案
  18. 为什么说冯诺依曼结构是现代计算机的基础,为什么现代计算机被称为冯·诺依曼结构计算机?...
  19. A-LOAM/LOAM/Lego-LOAM/SC_Lego_LOAM实时构建3d点云地图与2d栅格地图(octomap)
  20. Android 文件夹管理

热门文章

  1. springboot连接阿里云的redis
  2. win7计算机脱机,win7浏览器解除脱机状态的简单方法(图文)
  3. 最简单的SLIC算法实现
  4. Unity-UI-Scrollbar组件
  5. Matlab软件的熟悉
  6. 【音乐随想】变化,理想与坚持
  7. 2021年景德镇高考成绩查询时间,2021年景德镇学院高考录取通知书查询 通知书什么时候可以收到...
  8. PMSM的有感FOC闭环控制讲解
  9. mysql error 1126_install plugin group_replication ERROR 1126 (HY000)
  10. 学习笔记——HTTP上网过程详解