Modelo de IoMmu

En esta página se describe el modelo de IoMmu introducido en WDDM 2.0. Consulte El aislamiento de GPU basado en IOMMU y la reasignación de DMA de IOMMU para obtener actualizaciones más recientes de IOMMU.

Información general

Una unidad de administración de memoria (IOMMU) de Input-Output es un componente MMU que conecta un bus de E/S compatible con DMA a la memoria del sistema. Asigna direcciones virtuales visibles para el dispositivo a direcciones físicas, lo que lo hace útil en la virtualización.

En el modelo ioMmu de WDDM 2.0, cada proceso tiene un único espacio de direcciones virtuales que se comparte entre la CPU y la GPU y se administra mediante el administrador de memoria del sistema operativo.

Para acceder a la memoria, la GPU envía una solicitud de datos a una IOMMU compatible. La solicitud incluye una dirección virtual compartida y un identificador de espacio de direcciones de proceso (PASID). La IOMMU realiza la traducción de direcciones mediante la tabla de páginas compartidas. Esto se ilustra en el diagrama siguiente.

Diagrama que muestra la traducción del espacio de direcciones del proceso IOMMU en WDDM 2.0.

El controlador en modo kernel expresa la compatibilidad con el modelo de IoMmu estableciendo los límites DXGK_VIDMMCAPS::IoMmuSupported . Cuando se establece esta marca, el administrador de memoria de vídeo registrará automáticamente cualquier proceso mediante la GPU con la IOMMU y obtendrá un PASID para ese espacio de direcciones del proceso. El PASID se pasa al controlador durante la creación del dispositivo.

El administrador de memoria de vídeo asigna las asignaciones principales al segmento de apertura antes de mostrarse, lo que garantiza que el controlador de pantalla tenga acceso físico a estas asignaciones.

En el modelo de IoMmu, el controlador en modo de usuario sigue asignando memoria de vídeo para la GPU mediante el servicio Allocate del administrador de memoria de vídeo. Esto permite que el controlador en modo de usuario:

  • Siga el modelo de residencia.
  • Compatibilidad con el modelo de uso compartido de recursos de Microsoft DirectX.
  • Asegúrese de que las superficies principales son visibles para el kernel y se asignan a la apertura antes de mostrarse.

El controlador de modo usuario administra completamente el primer nivel de traducción (dirección de recurso de icono a la dirección de CPU o GPU compartida) en modo de usuario.