Az IOMMU ( angolul input/output memory management unit ) egy memóriakezelő egység (MMU) az I/O műveletekhez. Csakúgy, mint a hagyományos processzor memóriakezelő egység, amely a processzor által látott virtuális címeket fizikai címekké alakítja, ez az egység a hardvereszköz által látott virtuális címeket fizikai címekké alakítja. Egyes IOMMU-k különböző I/O-korlátok beállítását is lehetővé teszik a rosszul működő eszközök elleni védelem vagy az elkülönítés érdekében, például virtualizáció használatakor (lásd: VT-d ).
Az IOMMU jelenlétében a berendezés nem csak fizikai címeken, hanem logikai (virtuális) címeken is képes DMA műveleteket végrehajtani. Ez a funkció leegyszerűsíti azokat az eszközöket, amelyeknek már nem kell törődniük a DMA-támogatással egy nem folytonos (fizikai címek) memóriaterületen (az ilyen DMA támogatása az illesztőprogramban többletköltséggel jár).
Az IOMMU használatának hátrányai a közvetlen fizikai memóriacímzéshez képest a DMA kérésekben:
Az IOMMU arra szolgál, hogy lehetővé tegye a virtualizált operációs rendszerek számára, hogy közvetlenül működjenek együtt a gazdagép rendszer hardverével. Az ilyen kombinációk IOMMU-ja javítja a biztonságot, a teljesítményt és leegyszerűsíti a virtuális gép megvalósítását. [1] IOMMU példák virtualizációhoz x86/x86_64 platformokon: Intel VT-d és AMD-Vi .
Az IOMMU-t mindig is használták Sun SPARC [2] számítógépeken az SBus buszhoz , és a DEC Alpha [2] számítógépeken is használták a PCI buszhoz .
Az IOMMU egyik változata az AGP GART (Graphics Address Remapping Table, graphic address remapping table [3] ).
A hagyományos PC-kompatibilis számítógépek általában nem rendelkeztek IOMMU-val (kivéve az AGP GART-ot). Ehelyett a 90-es évek vége óta az összes fő perifériát lánc DMA támogatással fejlesztették ki.
A virtuális gépek hipervizorainak széleskörű elterjedése azonban oda vezetett, hogy az IOMMU-támogatást beépítették a "vendég" operációs rendszerekbe, például a Windowsba (a Windows kernel API mindig is támogatta ezt a funkciót, bár ez a támogatás általában nem valósult meg).
Az ilyen támogatás jelenléte a vendég operációs rendszerben az IOMMU-eszköz virtualizálása során nagyban megkönnyíti a komplex eszközök DMA-t használó emulálását a vendég operációs rendszerben, és javítja az ilyen emuláció teljesítményét és biztonságát.