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