Compartir a través de


Apertura del host de CPU

En el caso de las unidades de procesamiento de gráficos discretos (GPU) del sistema operativo de 32 bits, que no admiten barras de tamaño redimensionables o cuando se produce un error en el búfer de fotogramas, Windows Display Driver Model (WDDM) v2 ofrecerá un mecanismo alternativo por el que se puede acceder eficazmente a una VRAM de GPU discreta. En el caso de las GPU, que admiten un espacio de direcciones BAR programable, se introduce una nueva funcionalidad de apertura de host de CPU en WDDM v2 para abstraer esa funcionalidad.

Al exponer una apertura de host de CPU, el controlador de modo kernel rellena una nueva estructura de límites de DXGK_CPUHOSTAPERTURE para cada segmento que admite una apertura de host de CPU. Esto define el tamaño de la apertura del host de CPU, lo que permite al controlador reservar parte de la barra para fines internos. El tamaño de página es el mismo que las páginas de GPU del segmento de memoria.

A continuación, el controlador de modo kernel expone dos nuevas interfaces de controlador de dispositivo (DDIs) para administrar el espacio de direcciones BAR, en particular DxgkDdiMapCpuHostAperture y DxgkDdiUnmapCpuHostAperture.

El controlador administra la memoria de la tabla de páginas detrás de la apertura del host de CPU y se configura al principio durante la inicialización del controlador. Se espera que DxgkDdiMapCpuHostAperture y DxgkDdiUnmapCpuHostAperture estén operativos inmediatamente después de la enumeración de segmentos y se usen durante la inicialización del administrador de memoria de vídeo para asignar la dirección virtual de CPU al directorio de página y la tabla de páginas del proceso de paginación del sistema durante la inicialización del adaptador.

Cuando se requiere acceso de CPU a un segmento de memoria, el administrador de memoria de vídeo reserva páginas en la apertura del host de CPU y asigna las páginas de segmento de memoria a través de él. Esto se ilustra a continuación:

Diagrama que muestra la asignación de segmentos de apertura del host de CPU en un segmento de memoria de GPU.

En la configuración del adaptador de pantalla vinculado, las cosas son similares, excepto las siguientes.

  • La asignación predeterminada o LinkMirrored siempre se asigna a GPU0.
  • La asignación linkInstanced tiene un intervalo de direcciones virtuales de AllocationSize*NumberOfGPUInLink asociado a ellos con varias partes de la asignación que se asignan a una GPU diferente.

Esto se muestra a continuación: Diagrama que muestra la asignación de segmentos de apertura del host de CPU para las configuraciones del adaptador de pantalla vinculada.