Skip to content
Search

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.

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

author Zer0 sitemap