热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

DMA和IOMMU有什么区别?

如何解决《DMA和IOMMU有什么区别?》经验,为你挑选了1个好方法。

DMA(直接内存访问)是一项硬件功能,它允许独立于微处理器当前运行的程序进行内存访问。I / O设备可以使用它直接执行对内存的读取或写入操作,而无需执行任何微处理器指令。或者,它可以用来有效地复制内存块。在DMA传输期间,微处理器可以同时执行不相关的程序。

IOMMU(输入输出内存管理单元)是一项硬件功能,可将MMU扩展到I / O设备。MMU将虚拟内存地址映射到物理内存地址。普通MMU用于为每个进程提供自己的虚拟地址空间,而IOMMU用于为每个I / O设备提供自己的虚拟地址空间。这样,I / O设备将看到一个简单的连续地址空间,可能使用32位地址进行访问,而实际上,物理地址空间是碎片化的,并超过了32位。

没有IOMMU的DMA要求I / O设备使用实际的物理地址。设置DMA传输时,处理器还必须使用物理地址。另外,不带IOMMU的DMA可用于内存复制(因为它不涉及I / O设备)。

IOMMU仅在功能更强大的微处理器上可用。在微控制器和大多数嵌入式系统上都找不到。



1> Codo..:

DMA(直接内存访问)是一项硬件功能,它允许独立于微处理器当前运行的程序进行内存访问。I / O设备可以使用它直接执行对内存的读取或写入操作,而无需执行任何微处理器指令。或者,它可以用来有效地复制内存块。在DMA传输期间,微处理器可以同时执行不相关的程序。

IOMMU(输入输出内存管理单元)是一项硬件功能,可将MMU扩展到I / O设备。MMU将虚拟内存地址映射到物理内存地址。普通MMU用于为每个进程提供自己的虚拟地址空间,而IOMMU用于为每个I / O设备提供自己的虚拟地址空间。这样,I / O设备将看到一个简单的连续地址空间,可能使用32位地址进行访问,而实际上,物理地址空间是碎片化的,并超过了32位。

没有IOMMU的DMA要求I / O设备使用实际的物理地址。设置DMA传输时,处理器还必须使用物理地址。另外,不带IOMMU的DMA可用于内存复制(因为它不涉及I / O设备)。

IOMMU仅在功能更强大的微处理器上可用。在微控制器和大多数嵌入式系统上都找不到。


推荐阅读
author-avatar
廉杰登_393
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有