Jednostka zarządzania pamięcią wejścia-wyjścia - Input–output memory management unit

Porównanie jednostki zarządzania pamięcią we/wy (IOMMU) z jednostką zarządzania pamięcią (MMU).

W obliczeniowej , jednostka zarządzania pamięcią wejścia-wyjścia ( IOMMU ) to jednostka zarządzania pamięcią (MMU), który łączy się bezpośredni dostęp do pamięci- -capable (DMA) I / O magistrali do pamięci głównej . Podobnie jak tradycyjne MMU, co przekłada procesora -visible adresów wirtualnych na adresy fizyczne , IOMMU odwzorowuje adres urządzenia widoczne (nazywanego również adresy urządzeń lub adresy I / O w tym kontekście) do adresów fizycznych. Niektóre jednostki zapewniają również ochronę pamięci przed wadliwymi lub złośliwymi urządzeniami.

Przykładem IOMMU jest tablica mapowania adresów grafiki (GART) używana przez karty graficzne AGP i PCI Express na komputerach z architekturą Intel i AMD.

W architekturze x86, przed podziałem funkcjonalności mostka północnego i mostka południowego między procesorem a koncentratorem kontrolera platformy (PCH), wirtualizacja we/wy nie była wykonywana przez procesor, ale przez chipset .

Zalety

Zalety posiadania IOMMU w porównaniu z bezpośrednim fizycznym adresowaniem pamięci (DMA), obejmują:

  • Duże regiony pamięci mogą być przydzielane bez konieczności bycia ciągłymi w pamięci fizycznej – IOMMU mapuje ciągłe adresy wirtualne na podstawowe pofragmentowane adresy fizyczne. W ten sposób można czasem uniknąć korzystania z wektorowych I/O (listy rozproszone ).
  • Urządzenia, które nie obsługują adresów pamięci wystarczająco długo, aby zaadresować całą pamięć fizyczną, nadal mogą adresować całą pamięć przez IOMMU, unikając narzutów związanych z kopiowaniem buforów do iz adresowalnej przestrzeni pamięci urządzenia peryferyjnego.
    • Na przykład komputery x86 mogą adresować więcej niż 4 gigabajty pamięci dzięki funkcji rozszerzenia adresu fizycznego (PAE) w procesorze x86. Mimo to zwykłe 32-bitowe urządzenie PCI po prostu nie może adresować pamięci powyżej granicy 4 GiB, a zatem nie może uzyskać do niej bezpośredniego dostępu. Bez IOMMU system operacyjny musiałby zaimplementować czasochłonne bufory odbicia (znane również jako bufory podwójne).
  • Pamięć jest chroniona przed złośliwymi urządzeniami, które próbują ataków DMA i wadliwymi urządzeniami, które próbują błędnych transferów pamięci, ponieważ urządzenie nie może odczytywać ani zapisywać w pamięci, która nie została dla niego jawnie przydzielona (zmapowana). Ochrona pamięci opiera się na fakcie, że system operacyjny działający na CPU (patrz rysunek) kontroluje wyłącznie zarówno MMU, jak i IOMMU. Urządzenia nie są fizycznie w stanie obejść ani uszkodzić skonfigurowanych tabel zarządzania pamięcią.
    • W wirtualizacji , gości systemy operacyjne mogą używać sprzętu, który nie jest specjalnie wykonany dla wirtualizacji. Sprzęt o wyższej wydajności, taki jak karty graficzne, używa DMA do bezpośredniego dostępu do pamięci; w środowisku wirtualnym wszystkie adresy pamięci są ponownie mapowane przez oprogramowanie maszyny wirtualnej, co powoduje awarię urządzeń DMA. IOMMU obsługuje to ponowne mapowanie, umożliwiając używanie natywnych sterowników urządzeń w systemie operacyjnym gościa.
  • W niektórych architekturach IOMMU wykonuje również ponowne mapowanie przerwań sprzętowych , w sposób podobny do standardowego ponownego mapowania adresów pamięci.
  • Stronicowanie pamięci peryferyjnej może być obsługiwane przez IOMMU. Urządzenie peryferyjne korzystające z rozszerzenia interfejsu żądania strony (PRI) PCI-SIG PCIe Address Translation Services (ATS) może wykryć i zasygnalizować potrzebę korzystania z usług menedżera pamięci.

W przypadku architektur systemowych, w których port I/O jest odrębną przestrzenią adresową od przestrzeni adresowej pamięci, IOMMU nie jest używane, gdy CPU komunikuje się z urządzeniami za pośrednictwem portów I/O . W architekturach systemowych, w których port I/O i pamięć są mapowane na odpowiednią przestrzeń adresową, IOMMU może tłumaczyć dostępy do portów I/O.

Niedogodności

Wady posiadania IOMMU w porównaniu z bezpośrednim fizycznym adresowaniem pamięci obejmują:

  • Pewne pogorszenie wydajności spowodowane narzutami związanymi z tłumaczeniem i zarządzaniem (np. przeglądanie tabel stron).
  • Zużycie pamięci fizycznej dla dodanych tabel stron we/wy (tłumaczenia) . Można to złagodzić, jeśli tabele mogą być współużytkowane z procesorem.

Wirtualizacja

Gdy system operacyjny działa wewnątrz maszyny wirtualnej , w tym systemów korzystających z parawirtualizacji , takich jak Xen i KVM , zwykle nie zna adresów fizycznych hosta pamięci, do której uzyskuje dostęp. Utrudnia to zapewnienie bezpośredniego dostępu do sprzętu komputerowego, ponieważ gdyby system operacyjny gościa próbował nakazać sprzętowi wykonanie bezpośredniego dostępu do pamięci (DMA) przy użyciu adresów fizycznych gościa, prawdopodobnie uszkodziłoby to pamięć, ponieważ sprzęt nie wie o tym mapowanie między adresem fizycznym gościa i adresem fizycznym hosta dla danej maszyny wirtualnej. Uszkodzenia można uniknąć, jeśli hiperwizor lub system operacyjny hosta ingerują w operację we/wy w celu zastosowania translacji. Jednak takie podejście wiąże się z opóźnieniem operacji we/wy.

IOMMU rozwiązuje ten problem poprzez ponowne mapowanie adresów dostępnych przez sprzęt zgodnie z tą samą (lub kompatybilną) tabelą translacji, która jest używana do mapowania adresu fizycznego gościa na adres fizyczny hosta.

Opublikowane specyfikacje

  • Firma AMD opublikowała specyfikację technologii IOMMU o nazwie AMD-Vi .
  • IBM zaoferował wsparcie programu Extended Control Program: tryb Virtual Storage Extended (ECPS:VSE) na linii 43xx ; programy kanałów używały adresów wirtualnych.
  • Firma Intel opublikowała specyfikację technologii IOMMU pod nazwą Virtualization Technology for Directed I/O, w skrócie VT-d .
  • Informacje o Sun IOMMU zostały opublikowane w sekcji Device Virtual Memory Access (DVMA) w Solaris Developer Connection.
  • IBM Translation sterowania Wejście (TCE) został opisany w dokumencie zatytułowanym partycja logiczna Bezpieczeństwo w IBM eServer pSeries 690.
  • PCI-SIG ma odpowiednich prac pod względem I / O Virtualization (IOV) oraz Address Translation Services (ATS).
  • ARM definiuje swoją wersję IOMMU jako jednostkę zarządzania pamięcią systemową (SMMU), aby uzupełnić swoją architekturę wirtualizacji.

Zobacz też

Bibliografia

Zewnętrzne linki