答案 0 :(得分:2)
DMA(直接内存访问)是一项硬件功能,它使内存访问独立于微处理器当前运行的程序而发生。 I / O设备可以使用它在DMA传输期间直接执行内存读取或写入操作,而无需执行任何微处理器指令。微处理器可以同时执行不相关的程序。此外,DMA可用于与任何正在运行的程序同时高效地复制内存块。
IOMMU(输入-输出内存管理单元)是一项硬件功能,可扩展I / O设备的DMA访问。它类似于用于将虚拟内存地址映射到物理内存地址的MMU。普通MMU用于为每个进程提供自己的虚拟地址空间,而IOMMU用于为每个I / O设备提供自己的虚拟地址空间。这样,I / O设备将看到一个简单的连续地址空间,可能使用32位地址进行访问,而实际上,物理地址空间是碎片化的,并超过了32位。
没有IOMMU的DMA要求I / O设备使用实际的物理地址。设置DMA传输时,处理器还必须使用物理地址。另外,不带IOMMU的DMA可以用于内存复制(因为它不涉及I / O设备)。
IOMMU仅在功能更强大的微处理器上可用。在微控制器和大多数嵌入式系统上都找不到。