Compartilhar via


Modelo GpuMmu

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 em endereços físicos.

Cada processo tem espaços de endereço virtuais de CPU e GPU separados que usam tabelas de página distintas. O VidMm (gerenciador de memória de vídeo) gerencia o espaço de endereço virtual da GPU de todos os processos. O VidMm também é responsável por alocar, expandir, atualizar, garantir a permanência e liberar tabelas de página. O formato de hardware das tabelas de página usadas pelo MMU de GPU é desconhecido para o VidMm e é abstraído por meio de DDIs (interfaces de driver de dispositivo). A abstração dá suporte a uma tradução em nível multinível, incluindo uma tabela de página de tamanho fixo e uma tabela de página 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 de GPU a alocações. Essa responsabilidade recai sobre o driver de modo de usuário (UMD).

O 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 por meio do retorno de chamada Allocate existente e liberar essa memória por meio do retorno de chamada Desalocar existente. Alocar retorna um identificador para uma alocação de VidMm para o UMD. Um mecanismo de GPU pode operar nesse identificador. Essa 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.

  • Gerenciamento de espaço de endereço virtual de GPU. Para mecanismos em execução no modo virtual, um endereço virtual de GPU precisa ser atribuído explicitamente a uma alocação antes que ele possa ser acessado virtualmente. Para essa finalidade, o VidMm oferece os serviços UMD para reservar ou liberar endereços virtuais de GPU e mapear intervalos de alocação específicos para o espaço de endereço virtual da GPU de um processo. Esses serviços são flexíveis e permitem o controle granular da UMD sobre o espaço de endereço virtual de GPU do 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 mínimas e máximas. 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 exibição vinculada, 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 ela mesma ou para uma GPU peer específica. Nesse modelo, os endereços virtuais de CPU e GPU atribuídos a uma alocação são independentes. Uma UMD pode decidir mantê-los iguais em ambos os espaços de endereço ou mantê-los independentes.

Os endereços virtuais de GPU são gerenciados logicamente em uma granularidade de página fixa de 4 KB por meio da interface DDI. Os endereços virtuais de GPU podem referenciar 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 a 4 KB ou 64 KB à escolha do driver. Todas as alocações VidMm são alinhadas e dimensionadas para serem um múltiplo do tamanho da página escolhido pelo driver.

O acesso a um intervalo inválido de endereços virtuais de GPU resulta em uma violação de acesso e encerramento do contexto e/ou dispositivo que causou a falha de acesso. Para se recuperar de tal falha, o VidMm iniciará uma redefinição do mecanismo que, se não tiver êxito, será promovida a uma recuperação de detecção de tempo limite (TDR) por todo o adaptador.

O modelo gpuMmu é ilustrado no seguinte diagrama:

Diagrama que mostra o modelo gpuMmu com seus componentes e interações.