Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Na tej stronie opisano model IoMmu wprowadzony w programie WDDM 2.0. Zobacz Izolacja GPU oparta na IOMMU i Ponowne mapowanie DMA oparte na IOMMU, aby uzyskać najnowsze aktualizacje IOMMU.
Przegląd
Jednostka zarządzania pamięcią (IOMMU) Input-Output to składnik sprzętowy, który łączy magistralę we/wy z funkcją DMA z pamięcią systemową. Mapuje ona adresy wirtualne widoczne dla urządzeń na adresy fizyczne, co ułatwia wirtualizację.
W modelu IoMmu WDDM 2.0 każdy proces ma jedną wirtualną przestrzeń adresową:
- Współdzielony między CPU a GPU.
- Zarządzane przez menedżera pamięci systemu operacyjnego.
Aby uzyskać dostęp do pamięci, procesor GPU wysyła żądanie danych do zgodnego IOMMU. Żądanie zawiera udostępniony adres wirtualny i identyfikator przestrzeni adresowej procesu (PASID). IOMMU wykonuje tłumaczenie adresu przy użyciu udostępnionej tabeli stron. Ta akcja jest pokazana na poniższym diagramie.
Sterownik wyświetlania trybu jądra (KMD) wyraża obsługę modelu IoMmu poprzez ustawienie flagi DXGK_VIDMMCAPS::IoMmuSupported. Po ustawieniu tej flagi menedżer pamięci wideo (VidMm) automatycznie rejestruje dowolny proces przy użyciu procesora GPU z IOMMU i uzyskuje identyfikator PASID dla tej przestrzeni adresowej procesu. Identyfikator PASID jest przekazywany do sterownika podczas tworzenia urządzenia.
VidMm mapuje podstawowe alokacje na segment przysłony przed wyświetleniem, zapewniając, że kontroler wyświetlania ma fizyczny dostęp do tych alokacji.
W modelu IoMmu sterownik wyświetlania trybu użytkownika (UMD) nadal przydziela pamięć wideo dla procesora GPU przy użyciu usługi VidMm Allocate. Ten proces umożliwia UMD wykonywanie następujących czynności:
- Postępuj zgodnie z modelem rezydencji.
- Obsługa modelu udostępniania zasobów DirectX.
- Przed wyświetleniem upewnij się, że podstawowe powierzchnie są widoczne dla jądra i są mapowane na przysłonę.
UMD w całości zarządza pierwszym poziomem tłumaczenia (adres zasobu kafelka do udostępnionego adresu CPU/GPU) w trybie użytkownika.