Jogos multi-GPU em chips: arquitetura e recursos para PC

Multi-GPUs por chips estão chegando e, embora os veremos primeiro na forma de placas HPC e, portanto, fora do mercado de jogos, sabemos há muito tempo que a evolução é para a construção de placas gráficas baseadas em Multi-GPUs por chips. Mas o que eles trazem em comparação com um monolítico convencional GPU? Leia mais para descobrir.

Jogos multi-GPU em chips

A arquitetura que discutimos neste artigo ainda não está disponível no mercado, nem mesmo foi apresentada, mas é o produto de uma análise dos avanços produzidos nos últimos anos, bem como das diferentes patentes sobre Multi-GPU chips que ambos AMD, NVIDIA e Intel tem publicado nos últimos dois anos. É por isso que decidimos pegar essas informações e sintetizar para que você tenha uma ideia de como esses tipos de GPUs funcionam e quais problemas gráficos eles vêm resolver.

Renderização 3D tradicional com várias GPUs

GPU dupla

Usar múltiplas placas gráficas para combinar seu poder de renderizar cada quadro em videogames 3D não é novidade, já que no Voodoo 2 da 3dfx é possível dividir o trabalho de renderização, total ou parcialmente, entre várias placas gráficas. A maneira mais comum de fazer isso é Alternate Frame Rendering, onde o CPU envia a lista de telas de cada quadro alternadamente para cada GPU. Por exemplo, a GPU 1 lida com os quadros 1, 3, 5, 7, enquanto a GPU 2 lida com os quadros 2, 4, 6, 8, etc.

Existe outra maneira de renderizar uma cena em 3D, que é Split Frame Rendering, que consiste em várias GPUs renderizando uma única cena e dividindo o trabalho, mas com as seguintes nuances: uma GPU é a GPU mestre que lê a lista de telas e cuida do resto. As primeiras etapas do pipeline, antes da rasterização, são realizadas exclusivamente na primeira GPU, como para a rasterização e as etapas posteriores são realizadas igualmente em cada GPU.

Split Frame Rendering parece uma forma justa de distribuir o trabalho, entretanto, agora veremos quais são os problemas que este método acarreta e com quais limitações ele apresenta.

As limitações de Split Frame Rendering e a solução potencial

Chiplets GPU

Cada GPU contém 2 coleções de drives DMA, o primeiro par pode ler ou gravar dados simultaneamente no sistema RAM através da porta PCI Express, mas em muitas placas gráficas com suporte a Crossfire ou SLI existe uma outra coleção de drives DMA, os quais permitem o acesso ao VRAM do outro gráfico. Claro, na velocidade da porta PCI Express, que é um verdadeiro gargalo.

Idealmente, todas as GPUs trabalhando juntas teriam a mesma memória VRAM em comum, mas este não é o caso. Portanto, os dados são duplicados tantas vezes quanto o número de placas gráficas envolvidas na renderização, o que é extremamente ineficiente. A isso temos que adicionar a maneira como as placas gráficas funcionam ao renderizar gráficos 3D em tempo real, o que fez com que a configuração com várias placas gráficas não fosse mais usada.

Cache de bloco em uma multi-GPU por chips

Cache de bloco

O conceito de Tile Caching começou a ser usado a partir da arquitetura Maxwell da NVIDIA e da arquitetura Vega da AMD, trata-se de pegar alguns conceitos da renderização por tiles, mas com a diferença que ao invés de renderizar cada tile em uma memória separada e somente gravá-lo na VRAM quando a conclusão é feita no cache de segundo nível. A vantagem disso é que ele economiza no custo de energia de algumas operações gráficas, mas a desvantagem é que depende da quantidade de cache de nível superior que está na GPU.

O problema é que um cache não funciona como uma memória convencional e a qualquer momento e sem controle de programa uma linha de cache pode ser enviada para o próximo nível da hierarquia de memória. E se decidirmos aplicar a mesma funcionalidade a uma GPU baseada em chips? Bem, é aqui que o nível de cache adicional entra. Sob o novo paradigma, o cache de último nível de cada GPU é ignorado como memória para o cache de bloco e o cache de último nível da Multi-GPU agora é usado, que seria encontrado em um chip separado.

O LCC em uma Multi-GPU por chips

Chiplets multi-GPU COPA-GPU

O cache de nível mais recente para Multi-GPUs baseadas em chips reúne uma série de características comuns que são independentes de quem é o fabricante, portanto, a lista de características a seguir se aplica a qualquer GPU desse tipo, independentemente do fabricante.

  • Ele não é encontrado em nenhuma das GPUs, mas é externo a elas e, portanto, está em um chip separado.
  • Ele usa um intermediário com uma interface de alta velocidade, como uma ponte de silício ou interconexões TSV para se comunicar com o cache L2 de cada GPU.
  • A alta largura de banda necessária não permite interconexões convencionais e, portanto, só é possível em uma configuração 2.5DIC.
  • O chip onde se encontra a cache de último nível não só armazena a referida memória, mas também onde se encontra todo o mecanismo de acesso VRAM, que desta forma é desacoplado do motor de renderização.
  • Sua largura de banda é muito maior do que a da memória HBM, por isso faz uso de tecnologias de interconexão 3D mais avançadas, que permitem larguras de banda muito maiores.
  • Além disso, como qualquer cache de último nível, ele tem a capacidade de dar consistência a todos os elementos que são clientes dele.

Graças a este cache, cada GPU fica impedido de ter seu próprio poço VRAM para ter um compartilhado, o que reduz muito a multiplicidade de dados e elimina gargalos que são produto da comunicação em um multi-GPU convencional.

GPUs mestre e subordinadas

Chiplets Multi-GPU da Patente AMD

Em uma placa gráfica baseada em um Multi-GPU por chips, a mesma configuração ainda existe como em um Multi-GPU convencional ao criar a lista de exibição. Onde uma única lista é criada, que recebe a primeira GPU que é responsável por gerenciar o resto das GPUs, mas a grande diferença é que o chip LLC que discutimos na seção anterior permite que a primeira GPU coordene e envie tarefas para o resto de unidades de processamento multi-GPU por chips.

Uma solução alternativa é que todos os chips do Multi-GPU ficarão sem o Processador de Comando e este estará no mesmo circuito onde o chip LCC está localizado como maestro da orquestra e aproveitando toda a infraestrutura de comunicação existente para enviar as diferentes instruções threads em diferentes partes da GPU.

No segundo caso não teríamos um GPU master e o resto como subordinados, mas todo o circuito integrado 2.5D seria um único GPU, mas em vez de ser monolítico seria composto de vários chips.

Sua importância para o Ray Tracing

Traçado de raio profissional

Um dos pontos mais importantes para o futuro é o Ray Tracing, que para funcionar exige que o sistema crie uma estrutura de dados espaciais sobre as informações dos objetos para representar o transporte de luz. Foi demonstrado que se essa estrutura estiver próxima do processador, a aceleração sofrida pelo Ray Tracing é importante.

Claro, essa estrutura é complexa e ocupa muita memória. É por isso que ter um grande cache LLC será extremamente importante no futuro. E esta é a razão pela qual o cache LLC estará em um chip separado. Para ter a maior capacidade possível e tornar essa estrutura de dados o mais próximo possível da GPU.

Hoje, grande parte da lentidão do Ray Tracing se deve ao fato de que grande parte dos dados está na VRAM e há uma grande latência em seu acesso. Lembre-se de que o cache LLC em uma Multi-GPU teria vantagens não apenas na largura de banda, mas também na latência de um cache. Além disso, seu grande tamanho e as técnicas de compressão de dados em desenvolvimento nos laboratórios da Intel, AMD e NVIDIA farão com que as estruturas BVH utilizadas para aceleração sejam armazenadas na memória “interna” da GPU.