Compartilhar via


Abertura do host da CPU

Para GPUs (unidades de processamento de elementos gráficos) discretas do sistema operacional de 32-bit, que não dão suporte a BAR redimensionável ou quando o redimensionamento do BAR de buffer de quadros falha, o WDDM v2 (Modelo de Driver de Exibição do Windows) oferecerá um mecanismo alternativo no qual a VRAM de uma GPU discreta pode ser acessada de forma eficiente. Para GPUs que oferecem suporte a um espaço de endereço BAR programável, uma nova funcionalidade de Abertura de Anfitrião da CPU é introduzida no WDDM v2 para abstrair essa funcionalidade.

Ao expor uma abertura de host de CPU, o driver do modo kernel preenche uma nova estrutura de limites de DXGK_CPUHOSTAPERTURE para cada segmento que dá suporte a uma abertura de host de CPU. Isso define o tamanho da abertura de host da CPU, isso permite ao driver reservar parte do BAR para fins internos. O tamanho da página é o mesmo que as páginas de GPU do segmento de memória.

O driver do modo kernel então expõe duas novas DDIs (interfaces de driver de dispositivo) para gerenciar o espaço de endereço BAR, em particular DxgkDdiMapCpuHostAperture e DxgkDdiUnmapCpuHostAperture.

A memória da tabela de páginas por trás da abertura do host da CPU é gerenciada pelo driver e configurada antecipadamente durante a inicialização do driver. Espera-se que DxgkDdiMapCpuHostAperture e DxgkDdiUnmapCpuHostAperture estejam operacionais imediatamente após a enumeração do segmento e sejam usados durante a inicialização do gerenciador de memória de vídeo para mapear o endereço virtual da CPU para o diretório de páginas e a tabela de páginas do processo de paginação do sistema durante a inicialização do adaptador.

Quando é necessário que a CPU acesse um segmento de memória, o gerenciador de memória de vídeo reserva páginas na Abertura do Host da CPU e mapeia as páginas do segmento de memória através dela. Isso é ilustrado abaixo.

Diagrama que mostra o mapeamento do segmento de abertura do host da CPU em um segmento de memória da GPU.

Na configuração do adaptador de exibição vinculado, os detalhes são semelhantes, exceto pelo que segue.

  • Alocações padrão ou LinkMirrored são sempre mapeadas para GPU0.
  • A alocação LinkInstanced tem um intervalo de endereço virtual de AllocationSize*NumberOfGPUInLink associado a ela, com várias partes da alocação sendo mapeadas para diferentes GPUs.

Isso é ilustrado abaixo: Diagrama que mostra o mapeamento de segmento de abertura de host da CPU para configurações de adaptador de exibição vinculadas.