Modelo de GpuMmu
En el modelo de GpuMmu , la unidad de procesamiento de gráficos (GPU) tiene su propia unidad de administración de memoria (MMU) que traduce las direcciones virtuales de GPU por proceso a direcciones físicas.
Cada proceso tiene espacios de direcciones virtuales de CPU y GPU independientes que usan tablas de páginas distintas. El administrador de memoria de vídeo administra el espacio de direcciones virtuales de GPU de todos los procesos y se encarga de asignar, aumentar, actualizar, garantizar la residencia y liberar tablas de páginas. El formato de hardware de las tablas de páginas, que usa la MMU de GPU, es desconocido para el administrador de memoria de vídeo y se abstrae mediante interfaces de controlador de dispositivo (DDIs). La abstracción admite una traducción de nivel multinivel, incluida una tabla de páginas de tamaño fijo y una tabla de página raíz redimensionable.
Aunque el administrador de memoria de vídeo es responsable de administrar el espacio de direcciones virtuales de GPU y sus tablas de páginas subyacentes, el administrador de memoria de vídeo no asigna automáticamente direcciones virtuales de GPU a las asignaciones. Esta responsabilidad se corresponde con el controlador del modo de usuario.
El administrador de memoria de vídeo ofrece dos conjuntos de servicios al controlador en modo de usuario. En primer lugar, el controlador en modo de usuario puede asignar memoria de vídeo a través de la devolución de llamada Desasignar existente y liberar esa memoria a través de la devolución de llamada Desasignar existente. Al igual que hoy, esto devuelve el controlador de modo de usuario un identificador a una asignación de administrador de memoria de vídeo, que puede ser operado por un motor de GPU. Esta asignación representa solo la parte física de una asignación y puede ser referenciada por un motor, funcionando físicamente, a través de la referencia de lista de asignación.
En el caso de los motores que se ejecutan en el modo virtual, una dirección virtual de GPU debe asignarse explícitamente a una asignación para poder acceder a ella virtualmente. Para este propósito, el administrador de memoria de vídeo ofrece los servicios de controladores de modo de usuario para reservar o liberar direcciones virtuales de GPU y asignar intervalos de asignación específicos en el espacio de direcciones virtuales de GPU de un proceso. Estos servicios son muy flexibles y permiten que el controlador del modo de usuario control detallado sobre un espacio de direcciones virtuales de GPU de proceso. El controlador de modo de usuario puede decidir asignar una dirección virtual de GPU muy específica a una asignación, o permitir que el administrador de memoria de vídeo elija automáticamente uno disponible, posiblemente especificando algunas restricciones de direcciones virtuales gpu mínimas y máximas. Una sola asignación puede tener varias asignaciones de direcciones virtuales de GPU asociadas y los servicios se proporcionan al controlador en modo de usuario para implementar el contrato de recursos de mosaico.
Del mismo modo, en una configuración del adaptador de pantalla vinculado, el controlador de modo de usuario puede asignar explícitamente la dirección virtual de GPU a instancias de asignación específicas y elegir para cada asignación si la asignación debe ser propia o a una GPU del mismo nivel específica. En este modelo, las direcciones virtuales de CPU y GPU asignadas a una asignación son independientes. Un controlador en modo de usuario puede decidir mantenerlos iguales en ambos espacios de direcciones o mantenerlos independientes.
Las direcciones virtuales de GPU se administran lógicamente en una granularidad de página de 4 KB fija a través de la interfaz DDI. Las direcciones virtuales de GPU pueden hacer referencia a asignaciones, que residen en un segmento de memoria o en una memoria del sistema. La memoria del sistema se administra en granularidad física de 4 KB mientras que los segmentos de memoria se administran en 4 KB o 64 KB en la elección del controlador. Todas las asignaciones del administrador de memoria de vídeo están alineadas y tienen el tamaño de un múltiplo del tamaño de página elegido por el controlador.
El acceso a un intervalo no válido de direcciones virtuales de GPU produce una infracción de acceso y la terminación del contexto o dispositivo que provocó el error de acceso. Para recuperarse de este tipo de error, el administrador de memoria de vídeo inicia un restablecimiento del motor que se promueve a una recuperación de detección de tiempo de espera extensa (TDR) del adaptador si no se realiza correctamente.
El modelo de GpuMmu se muestra a continuación: