Compartilhar via


Modelo gpuMmu

No modelo GpuMmu , a GPU (unidade de processamento gráfico) tem sua própria MMU (unidade de gerenciamento de memória) 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 gerenciador de memória de vídeo gerencia o espaço de endereço virtual da GPU de todos os processos e é responsável por alocar, crescer, atualizar, garantir residência e liberar tabelas de páginas. O formato de hardware das tabelas de página, usado pela MMU de GPU, é desconhecido para o gerenciador de memória de vídeo e é abstraído por meio de DDIs (interfaces de driver de dispositivo). A abstração dá suporte a uma tradução em nível de vários níveis, incluindo uma tabela de página de tamanho fixo e uma tabela de página raiz redimensionável.

Embora o gerenciador de memória de vídeo seja responsável por gerenciar o espaço de endereço virtual da GPU e suas tabelas de páginas subjacentes, o gerenciador de memória de vídeo não atribui automaticamente endereços virtuais de GPU a alocações. Essa responsabilidade se enquadra no driver de modo de usuário.

O gerenciador de memória de vídeo oferece dois conjuntos de serviços para o driver de modo de usuário. Primeiro, o driver de modo de usuário 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 Deallocate existente. Assim como hoje, isso retorna ao driver de modo de usuário um identificador para uma alocação de gerenciador de memória de vídeo, que pode ser operada por um mecanismo de GPU. Essa alocação representa apenas a parte física de uma alocação e pode ser referenciada por um mecanismo, operando fisicamente, por meio da referência de lista de alocação.

Para mecanismos em execução no modo virtual, um endereço virtual de GPU precisa ser atribuído explicitamente a uma alocação antes de ser acessado virtualmente. Para essa finalidade, o gerenciador de memória de vídeo oferece aos serviços de driver de modo de usuário 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 muito flexíveis e permitem ao driver de modo de usuário controle refinado sobre um espaço de endereço virtual de GPU de processo. O driver de modo de usuário pode decidir atribuir um endereço virtual de GPU muito específico a uma alocação ou permitir que o gerenciador de memória de vídeo escolha automaticamente um disponível, possivelmente especificando algumas restrições mínimas e máximas de endereços virtuais de GPU. Uma única alocação pode ter vários mapeamentos de endereço virtual de GPU associados a ele e os serviços são fornecidos ao driver de modo de usuário para implementar o contrato de recurso de bloco.

Da mesma forma, em uma configuração de adaptador de exibição vinculada, o driver de modo de usuário pode mapear explicitamente o endereço virtual de GPU para instâncias de alocação específicas e escolher para cada mapeamento se o mapeamento deve ser para si mesmo ou para uma GPU par específica. Nesse modelo, os endereços virtuais de CPU e GPU atribuídos a uma alocação são independentes. Um driver de modo de usuário 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, que são 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 do gerenciador de memória de vídeo 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 dessa falha, o gerenciador de memória de vídeo inicia uma redefinição de mecanismo que é promovida a uma TDR (recuperação de detecção de tempo limite) de todo o adaptador, se não for bem-sucedida.

O modelo GpuMmu é ilustrado abaixo:

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