Partager via


Modèle IoMmu

Cette page décrit le modèle IoMmu introduit dans WDDM 2.0. Consultez l’isolation GPU basée sur l’IOMMU et le remapping IOMMU DMA pour connaître les dernières mises à jour de l’IOMMU.

Vue d’ensemble

Une unité de gestion de la mémoire d’entrée-sortie (IOMMU) est un composant MMU qui connecte un bus d’E/S compatible avec DMA à la mémoire système. Il mappe les adresses virtuelles visibles par l’appareil aux adresses physiques, ce qui le rend utile dans la virtualisation.

Dans le modèle IoMmu WDDM 2.0, chaque processus a un espace d’adressage virtuel unique qui est :

  • Partagé entre l’UC et le GPU.
  • Géré par le gestionnaire de mémoire du système d’exploitation.

Pour accéder à la mémoire, le GPU envoie une demande de données à un IOMMU conforme. La demande inclut une adresse virtuelle partagée et un identificateur d’espace d’adressage de processus (PASID). L’IOMMU effectue la traduction d’adresses à l’aide de la table de pages partagées. Cette action est illustrée dans le diagramme suivant.

Diagramme montrant la traduction d’espace d’adressage du processus IOMMU dans WDDM 2.0.

Le pilote d’affichage en mode noyau (KMD) exprime la prise en charge du modèle IoMmu en définissant les majuscules DXGK_VIDMMCAPS ::IoMmuSupported. Lorsque cet indicateur est défini, le gestionnaire de mémoire vidéo (VidMm) inscrit automatiquement n’importe quel processus à l’aide du GPU auprès de l’IOMMU et obtient un PASID pour cet espace d’adressage de processus. Le PASID est transmis au pilote lors de la création de l’appareil.

VidMm mappe les allocations principales dans le segment d’ouverture avant d’être affiché, ce qui garantit que le contrôleur d’affichage a un accès physique à ces allocations.

Dans le modèle IoMmu, le pilote d’affichage en mode utilisateur (UMD) continue d’allouer de la mémoire vidéo pour le GPU à l’aide du service d’allocation de VidMm. Ce processus permet à l’UMD de :

  • Suivez le modèle de résidence.
  • Prendre en charge le modèle de partage de ressources DirectX.
  • Vérifiez que les surfaces principales sont visibles par le noyau et sont mappées en ouverture avant d’être affichées.

L’UMD gère entièrement le premier niveau de traduction (adresse de ressource de vignette en adresse PROCESSEUR/GPU partagée) en mode utilisateur.