O Infinity Cache é a diferença mais notável entre as placas gráficas RX 6000 recentemente introduzidas (RX 6800, RX 6800 XT e RX 6900) com o Xbox Série X SoC GPU, também baseado em RDNA 2. ¿Mas o que exatamente é o Infinity Cache, para que serve e como funciona? Vamos contar a você todos os seus segredos.
Desde as semanas anteriores à apresentação do RX 6000 sabíamos da existência desse enorme pool de memória dentro da GPU, enorme porque estamos falando do maior cache da história das GPUs com cerca de 128 MB de capacidade . Mas AMD não deu muitas informações sobre ele, simplesmente nos contou sobre sua existência.
Por isso é necessária uma explicação detalhada para entender por que a AMD colocou um cache desse tamanho na versão de seu RDNA 2 para PC.
Localizando o Cache Infinity
O primeiro ponto necessário para entender qual é a função de uma peça dentro do hardware é deduzir sua função a partir de sua localização no sistema.
Como RDNA 2 é uma evolução do RDNA , em primeiro lugar, temos que dar uma olhada na primeira geração da atual arquitetura gráfica da AMD, da qual conhecemos dois chips que são Navi 10 e Navi 14.
Bem, se o Infinity Cache tivesse sido implementado em RDNA, seria na parte que diz Infinity Fabric do diagrama, então, no nível de organização do cache, partiríamos deste:
Onde os aceleradores conectados ao Hub GPU (o codec de vídeo, o controlador de vídeo, os drives DMA, etc.) não têm acesso direto aos caches, nem mesmo ao cache L2.
Com a adição do Infinity Cache as coisas já mudam “um pouco”, pois agora os aceleradores têm acesso a essa memória,
Isso é muito importante, principalmente para o Display Core Next, que é responsável por ler o buffer da imagem final e transmiti-lo para o Display Port ou interface HDMI correspondente para que a imagem seja exibida na tela, isso é importante para reduzir os acessos para VRAM por essas unidades.
Lembrando o sistema de cache RDNA
No RDNA, os caches são conectados uns aos outros da seguinte maneira:
O cache L2 está conectado externamente a 16 canais de 32 Bytes / ciclo cada, se olharmos o diagrama Navi 10, então você verá como esta GPU tem sobre 16 partições de cache L2 e um barramento GDDR256 de 6 bits aos quais eles estão conectados.
Tenha em mente que GDDR6 usa 2 canais por chip que operam em paralelo, cada um de 16 bits.
Em outras palavras, o número de partições de cache L2 em arquiteturas RDNA é igual ao número de canais GDDR16 de 6 bits que estão conectados ao processador gráfico. Em RDNA e RDNA 2 cada partição tem 256 KB, esse é o motivo pelo qual o Xbox Series X que tem um barramento de 320 bits e portanto 20 canais GDDR6 tem cerca de 5 MB de Cache L2.
Um novo nível de cache: o Cache Infinity
Por ser um nível adicional de cache, o Cache Infinity deve ser conectado ao cache L2 diretamente, que é o nível anterior na hierarquia do cache, isso é confirmado para nós pela própria AMD em um rodapé:
Medida calculada pelos engenheiros da AMD, em uma placa Radeon RX 6000 Series com 128MB Cache Infinity AMD e GDDR256 de 6 bits. Medindo as taxas médias de sucesso do AMD Infinity Cache em 4k jogos de 58% nos principais títulos de jogos, multiplicado pela largura de banda máxima teórica do 16 canais de tecido AMD Infinity 64B conectar o cache ao mecanismo gráfico em uma frequência de aumento de até 1.94 GHz.
O GPU usado no RX 6800, RX 6800 XT e RX 6900 é o Navi 21 que tem um barramento GDDR256 de 6 bits, ou seja, tem 16 canais e, portanto, as 16 partições do Caché L2 sendo cada uma conectada a uma partição do Cache Infinity.
Já a questão das “taxas de acerto” de 58% é mais complicada e é o que tentaremos explicar a seguir.
Cache de bloco em GPUs NVIDIA
Antes de continuar com o Infinity Cache temos que entender as razões de sua existência e para isso temos que olhar como as GPUs evoluíram nos últimos anos.
Começando com o NVIDIA Maxwell, GeForce 900 Series, NVIDIA fez uma grande mudança em suas GPUs que eles chamaram de Tile Caching, cuja mudança envolveu conectar o ROPS e a unidade raster ao cache L2.
Com essa mudança, o ROPS parou de gravar na VRAM diretamente, os ROPS são comuns em todas as GPUs e são responsáveis por criar os buffers de imagem na memória.
Graças a essa mudança, a NVIDIA foi capaz de reduzir o impacto da energia no barramento de memória, reduzindo a quantidade de transferências feitas de e para o VRAM e, com isso, a NVIDIA conseguiu obter eficiência energética da AMD com as arquiteturas Maxwell e Pascal.
DSBR, o cache de bloco nas GPUs AMD
A AMD, por outro lado, durante todas as gerações da arquitetura GCN anterior a Vega, conectou os Render Backends (RB) diretamente ao controlador de memória.
Mas começando com o AMD Vega, ele fez duas mudanças na arquitetura para adicionar o cache de blocos às suas GPUs, a primeira delas foi renovar a unidade raster, que ele rebatizou de DSBR, Draw Stream Binning Rasterizer.
A segunda mudança foi que eles conectaram a unidade raster e o ROPS ao cache L2, uma mudança que ainda existe no RDNA e no RDNA 2.
A utilidade do DSBR ou Tile Caching
O Tile Caching ou DSBR é eficiente porque ordena a geometria da cena de acordo com sua posição na tela antes de ser rasterizada, esta foi uma mudança importante desde as GPUs antes da implementação desta técnica ordenou os fragmentos já texturizados antes de enviá-los para o buffer de imagem.
Em Tile Caching / DSBR, o que é feito é ordene os polígonos da cena antes de serem convertidos em fragmentos pela unidade de rasterização.
No cache de bloco, os polígonos são ordenados de acordo com sua posição na tela em blocos, onde cada bloco é um fragmento de n * n pixels.
Uma das vantagens disto é que permite eliminar de antemão os pixels não visíveis dos fragmentos que ficam opacos quando se encontram na mesma situação. Algo que não pode ser feito se os elementos que compõem a cena forem ordenados após a texturização.
Isso evita que a GPU perca tempo com pixels supérfluos e melhora a eficiência da GPU. Caso você ache isso confuso, é tão simples quanto lembrar que ao longo do pipeline gráfico as diferentes primitivas que compõem a cena assumem diferentes formas durante os diferentes estágios dela.
Cache de bloco ou DSBR não é equivalente a renderização de bloco
Embora o nome possa ser enganoso, o cache de bloco não é equivalente à renderização de bloco pelos seguintes motivos:
- Os renderizadores de ladrilho armazenam a geometria da cena na memória, ordenam-na e criam listas de tela para cada ladrilho. Esse processo não ocorre no caso de cache de bloco ou DSBR.
- Na renderização de bloco, os ROPS são conectados a memórias de rascunho fora da hierarquia de cache e não esvaziam seu conteúdo na VRAM até que o bloco tenha sido 100% concluído, então as taxas de acerto são 100%.
- No Tile Caching / DSBR, uma vez que os ROPS / RBs estão conectados ao Cache L2, a qualquer momento as linhas do cache de L2 para RAM podem ser descartadas, portanto não há garantia de que 100% dos dados estejam no cache L2.
Como há uma grande probabilidade de linhas de cache acabarem em VRAM, o que a AMD fez com o Infinity Cache foi adicionar uma camada de cache adicional que coleta os dados descartados do cache L2 da GPU.
O Infinity Cache é um Victim Cache
O Vítima Cache idéia é um legado de CPUs sob arquiteturas Zen que foi adaptado para RDNA 2.
Nos núcleos Zen, o L3 Cache é o que chamamos de Victim Caché, que são responsáveis por coletando as linhas de cache descartadas do L2 em vez de fazer parte do usual esconderijo hierarquia. Ou seja, nos núcleos Zen os dados que vêm de RAM não segue o caminho RAM → L3 → L2 → L1 ou vice-versa, mas em vez disso segue o caminho RAM → L2 → L1, uma vez que o cache L3 atua como Victim Caché.
No caso do Infinity Cache, a ideia é resgatar as linhas do Cache L2 da GPU sem ter que acessar o VRAM , o que permite que a energia consumida por instrução seja muito mais baixa e, portanto, velocidades mais altas podem ser alcançadas. relógio.
Porém, embora a capacidade de 128 MB possa parecer muito alta, não parece suficiente para evitar que todas as linhas descartadas acabem na VRAM, pois no melhor dos casos ela só consegue resgatar 58% . Isso significa que em futuras iterações de sua arquitetura RDNA é muito provável que AMD aumentará a capacidade deste Cache Infinity .