首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DMA和IOMMU有什么区别?

DMA和IOMMU有什么区别?
EN

Stack Overflow用户
提问于 2019-07-01 11:25:30
回答 1查看 5.2K关注 0票数 12
  • 什么是DMA和IOMMU?DMA和IOMMU是如何使用的?
  • 如果体系结构不支持IOMMU呢?
  • 如何在没有IOMMU的情况下使用DMA?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-01 11:51:45

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只能在功能更强大的微处理器上使用。你不会在微控制器和大多数嵌入式系统上找到它。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56834833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档