Input–output memory management unit
lastmod 2019-11-25created 2019-11-251 edits
IOMMU (Input/Output Memory Management Unit, IOMMU) is a memory management unit (MMU) that connects a DMA-capable I/O bus to main memory. Just as an MMU translates CPU-visible virtual addresses to physical addresses, an IOMMU translates device-visible virtual addresses (called device addresses or I/O addresses) to physical addresses. It also provides memory protection to guard memory against faulty peripheral devices.
About
An IOMMU can do the following.
Transalation
- Provides mappings so that device (IO or bus) addresses can be translated to physical addresses.
- Buffers used for DMA must be physically contiguous, but this restriction goes away when using an IOMMU.
- Because the IOMMU uses a mapping table separate from the MMU, pages in system memory do not have to be contiguous.
- Buffers used for DMA must be physically contiguous, but this restriction goes away when using an IOMMU.
Isolation
- Provides access control for device access to memory.
IO Virtualization
- Supports virtualization, letting devices use separate DMA virtual address spaces.
- Just as the MMU in the cpu has a separate MMU for virtualization, the IOMMU is similar.
See also
Favorite site
Pages that link here