Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo descreve o modelo GpuMmu , que foi introduzido no Windows 10 (WDDM 2.0).
No modelo GpuMmu, a GPU tem sua própria unidade de gerenciamento de memória (MMU) que converte endereços virtuais de GPU por processo para endereços físicos.
Cada processo tem espaços de endereço virtual de CPU e GPU separados que usam tabelas de páginas distintas. O gerenciador de memória de vídeo (VidMm) gerencia o espaço de endereço virtual da GPU de todos os processos. A VidMm também é responsável por alocar, crescer, atualizar, garantir residência e liberar tabelas de páginas. O formato de hardware das tabelas de página usadas pela GPU MMU é desconhecido para o VidMm e está abstraído através de interfaces de controladores de dispositivos (DDIs). A abstração suporta uma tradução de múltiplos níveis, incluindo uma tabela de páginas de tamanho fixo e uma tabela de páginas raiz redimensionável.
Embora o VidMm seja responsável por gerenciar o espaço de endereço virtual da GPU e suas tabelas de páginas subjacentes, o VidMm não atribui automaticamente endereços virtuais da GPU às alocações. Esta responsabilidade recai sobre o driver de modo de usuário (UMD).
VidMm oferece dois serviços principais para o UMD:
Alocação e desalocação de memória. O UMD pode alocar memória de vídeo através do retorno de chamada Allocate existente e liberar essa memória através do retorno de chamada Deallocate existente. Allocate retorna um identificador para uma alocação VidMm no UMD. Um mecanismo de GPU pode operar neste identificador. Tal alocação refere-se especificamente à memória de vídeo física, que um mecanismo de GPU pode acessar e processar por meio de uma lista de alocação.
Gestão do espaço de endereçamento virtual na GPU. Para mecanismos executados no modo virtual, um endereço virtual de GPU precisa ser explicitamente atribuído a uma alocação antes de poder ser acessado virtualmente. Para este propósito, o VidMm oferece os serviços UMD para reservar ou liberar endereços virtuais da GPU e mapear intervalos de alocação específicos no espaço de endereçamento virtual da GPU de um processo. Esses serviços são flexíveis e permitem à UMD um controle detalhado sobre o espaço de endereçamento virtual de uma GPU de processo. O UMD pode decidir atribuir um endereço virtual de GPU específico a uma alocação ou permitir que o VidMm escolha automaticamente um disponível, possivelmente especificando algumas restrições de endereço virtual de GPU min e max. Uma única alocação pode ter vários mapeamentos de endereço virtual de GPU associados a ela e os serviços são fornecidos ao UMD para implementar o contrato de Tile Resource.
Da mesma forma, em uma configuração de adaptador de vídeo vinculado, o UMD pode mapear explicitamente endereços virtuais de GPU para instâncias de alocação específicas. Para cada mapeamento, a UMD pode escolher se o mapeamento deve ser para si próprio ou para uma GPU peer específica. Neste modelo, os endereços virtuais da CPU e GPU atribuídos a uma alocação são independentes. Um UMD pode decidir mantê-los iguais em ambos os espaços de endereço ou mantê-los independentes.
Os endereços virtuais da GPU são gerenciados logicamente em uma granularidade de página fixa de 4 KB por meio da interface DDI. Os endereços virtuais da GPU podem fazer referência a alocações residentes em um segmento de memória ou na memória do sistema. A memória do sistema é gerenciada com granularidade física de 4 KB, enquanto os segmentos de memória são gerenciados em 4 KB ou 64 KB à escolha do driver. Todas as alocações VidMm são alinhadas e dimensionadas para ser um múltiplo do tamanho de página escolhido pelo driver.
O acesso a um intervalo inválido de endereços virtuais da GPU resulta em uma violação de acesso e encerramento do contexto e/ou dispositivo que causou a falha de acesso. Para recuperar-se de tal falha, o VidMm inicia uma reinicialização do motor que, se não for bem-sucedida, é escalada para uma recuperação de deteção de tempo de espera a nível do adaptador (TDR).
O modelo GpuMmu é ilustrado no diagrama a seguir: