IOMMU

IOMMU ( engelsk  input/output memory management unit ) er en memory management unit (MMU) til I/O operationer. Ligesom den traditionelle processorhukommelsesstyringsenhed, der oversætter virtuelle adresser set af processoren til fysiske adresser, oversætter denne enhed virtuelle adresser set af hardwareenheden til fysiske adresser. Nogle IOMMU'er giver dig også mulighed for at indstille forskellige I/O-grænser for at beskytte mod enheder, der opfører sig forkert eller for isolering, for eksempel ved brug af virtualisering (se VT-d ).

I nærvær af IOMMU har udstyret mulighed for at udføre DMA -operationer ikke kun på fysiske adresser, men også på logiske (virtuelle) adresser. Denne funktion forenkler enheder, der ikke længere behøver at bekymre sig om DMA-understøttelse over et diskontinuerligt (i form af fysiske adresser) hukommelsesområde (understøttelse af sådan DMA i en driver medfører overhead).

Ulemperne ved at bruge IOMMU sammenlignet med direkte fysisk hukommelsesadressering i DMA-anmodninger er:

IOMMU'en bruges til at tillade virtualiserede operativsystemer at arbejde direkte med værtssystemets hardware. At have en IOMMU til disse kombinationer forbedrer sikkerheden, ydeevnen og forenkler implementeringen af ​​den virtuelle maskine. [1] IOMMU-eksempler til virtualisering på x86/x86_64-platforme: Intel VT-d og AMD-Vi .

IOMMU'en har altid været brugt på Sun SPARC [2] -computere til SBus -bussen , og den blev også brugt på DEC Alpha [2] -computere til PCI-bussen .

En variant af IOMMU er AGP GART (Graphics Address Remapping Table, graphic address remapping table [3] ).

Som regel havde almindelige PC-kompatible computere ikke en IOMMU (bortset fra AGP GART). I stedet er alt det vigtigste perifere udstyr blevet udviklet med kæde-DMA-understøttelse siden slutningen af ​​90'erne.

Imidlertid har den udbredte anvendelse af virtuelle maskine-hypervisorer ført til inklusion af IOMMU-understøttelse i "gæste"-operativsystemer såsom Windows (Windows-kerne-API'en har altid understøttet denne funktion, selvom denne understøttelse normalt ikke er blevet implementeret).

Tilstedeværelsen af ​​en sådan støtte i gæsteoperativsystemet, når IOMMU-enheden virtualiseres, letter i høj grad opgaven med at emulere komplekse enheder ved hjælp af DMA i gæsteoperativsystemet og forbedrer ydeevnen og sikkerheden af ​​en sådan emulering.

Noter

  1. QEMU - ArchWiki . Hentet 16. oktober 2018. Arkiveret fra originalen 16. oktober 2018.
  2. 1 2 D Bovet. Linux-kernen, 3. udgave. ISBN 978-5-94157-957-0 , kapitel 13, side 702
  3. D Bovet. Linux-kernen, 3. udgave. ISBN 978-5-94157-957-0 , kapitel 13, side 698

Links