Partilhar via


Abertura do host da CPU

Para GPUs (unidades de processamento gráfico) discretas do sistema operacional de 32 bits, que não dão suporte a BARRA redimensionável ou quando o redimensionamento da BARRA de buffer de quadro falhar, o WDDM (Modelo de Driver de Vídeo) v2 do Windows oferecerá um mecanismo alternativo pelo qual uma VRAM de GPU discreta pode ser acessada com eficiência. Para GPUs, que dão suporte a um espaço de endereço BAR programável, uma nova funcionalidade de Abertura de Host de CPU é introduzida no WDDM v2 para abstrair essa funcionalidade.

Ao expor uma abertura de host de CPU, o driver de 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 do host da CPU, o que permite que o driver reserve parte da BARRA para fins internos. O tamanho da página é o mesmo que as páginas de GPU do segmento de memória.

Em seguida, o driver do modo kernel 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. Tanto DxgkDdiMapCpuHostAperture quanto DxgkDdiUnmapCpuHostAperture devem estar operacionais imediatamente após a enumeração de segmento e são 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ágina e a tabela de páginas do processo de paginação do sistema durante a inicialização do adaptador.

Quando o acesso à CPU a um segmento de memória é necessário, 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 por meio dele. Isso é ilustrado abaixo.

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

Na configuração do adaptador de exibição vinculado, os itens são semelhantes, exceto os seguintes.

  • A alocação padrão ou LinkMirrored é sempre mapeada para GPU0.
  • A alocação de LinkInstanced tem um intervalo de endereços virtuais de AllocationSize*NumberOfGPUInLink associado a eles com várias partes da alocação sendo mapeadas para uma GPU diferente.

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