Resizable BAR na RTX 3060

Junto com o lançamento da RTX 3060, dia 25 de fevereiro, a NVIDIA lançou um driver com suporte para Resizable BAR — um recurso que promete dar uma performance extra em games quando habilitado.

Hoje, vamos esmiuçar esse recurso mais especificamente na forma como a NVIDIA resolveu adotá-lo — que é diferente da forma da AMD fazer — e ainda vamos compartilhar testes em jogos e aprender muita coisa no caminho.

Resizable BAR é uma forma mais adequada às especificações PCI Express modernas para transferir dados entre a memória principal do sistema e os dispositivos PCI Express do seu PC.

Esse recurso é especificamente interessante para placas de vídeo, já que ele expõe e disponibiliza ao processador toda a memória VRAM da sua GPU. Em se expondo esses dados, você pode economizar tempo, reduzindo overhead do processador, seja cortando etapas e desocupando o CPU nas inúmeras operações por segundo que acontecem entre a memória principal do sistema e a memória da placa de vídeo.

Mas isso tá ficando técnico demais e eu não quero que você saia do texto agora…

Vamos então tentar entender como um dado sai da memória do sistema (a tal da memória RAM) e vai para a GPU (a tal da memória VRAM).

Basicamente, transferir dados da RAM para a VRAM se dá por DMA (Direct Memory Access) ou por DCA (Direct CPU Access). DMA é uma forma de comunicação de memória dentro do próprio hardware, em que uma engine de cópia de dados (hardware copy engine) internamente presente na placa de vídeo consegue acessar diretamente as informações que quer na memória RAM do sistema.

Como esse método tem uma sobrecarga no CPU para cada vez que é inicializado, ele serve bem se for para iniciar uma transferência grande, isolada, com alto volume. Mas se for fazer várias transferências de pequenos arquivos ou dados, aí ela acaba não valendo a pena, porque o overhead fica justamente na inicialização de cada uma dessas transações.

Ah! E ainda tem a questão de o hardware ter uma limitação de tarefas de DMA que podem ser executadas ao mesmo tempo, então meio que o driver da sua placa de vídeo vai ter que arbitrar quem roda o quê primeiro. Se tem driver atuando, tem overhead no CPU. Se tem concorrência de tarefas por DMA, tem fila de espera e portanto, perda de tempo.

Já por acesso direto da CPU, o CPU é quem faz a transação de dados da RAM para a VRAM no lugar da engine interna dos dispositivos. Por obviedade, quando não é mais a Hardware Copy Engine quem está fazendo a transação, mas sim o CPU, fica fácil de perceber que há uma sobrecarga extra no processador.

Até porque, CPU é serializado, faz tudo funcionar em filas sequenciais, então uma transação dessas que ocupe uma fila do processador, não vai te permitir fazer outra coisa no mesmo momento em que a cópia está usando tempo do CPU.

Porém, como esse método não tem um overhead no tempo de inicialização de cada tarefa, como no DMA, acaba sendo uma melhor opção para usar transferências de dados pequenos.

Cabe ao driver da placa de vídeo que quer ter acesso aos dados que estão na memória, inteligentemente saber qual a melhor forma de conseguir os dados referidos. Se por DMA ou DCA. Em termos leigos, se usando hardware interno da placa ou usando o CPU.

O problema com a forma que tudo isso é feito hoje é que o sistema só consegue enxergar e habilitar acesso a 256MB na memória da placa de vídeo por vez. Por mais que a sua placa de vídeo tenha 256 GB — uma placa dessas nem existe, mas suponhamos — o sistema só vai poder endereçar algo para 256 MB por vez.

Tendo disponível apenas uma pequena porção da memória da placa de vídeo, o sistema é obrigado a ficar fazendo a troca dessa zona mapeada de 256 MB dentro da GPU e trocando-a de acordo com a zona requerida para transferir e expor dados. Cada troca, cada slide, cada swap desses, toma tempo de CPU. Querendo ou não, isso cria uma carga nos processadores atuais que nem deveriam criar, afinal, com as especificações PCI Express 4.0 tão à frente das especificações de antigamente, não há uma razão sequer para não redimensionarem esses limite ridículo de 256MB.

E foi isso que resolveram fazer. Redimensionar o limite do tamanho de memória acessível para cada registro de endereço base de dispositivos PCI Express no computador. Chamam isso de Redimensionamento de Registro de endereço base PCI, ou, em inglês, Resizable BAR.

Com ele, o sistema agora pode ter acesso à totalidade da memória dos dispositivos PCI Express, eliminando a necessidade de ficar trocando zonas das memórias, economizando tempo de CPU que pode ser usado em outra coisa.

Esse tempo economizado, nem sempre repercute em um ganho de performance. Inclusive, é possível que se perca performance em certos casos, quando o driver não é inteligente o bastante e acaba jogando cópias curtas para DMA enquanto poderia ter jogado para DCA e reduzir o overhead. Enfim…

Por situações como essa, em que há perdas de performance, que a NVIDIA resolveu tomar um approach diferente em relação ao Resizable BAR. Quando você liga o ResBAR em NVIDIA, ele só vai efetivamente estar ligado em jogos certificados pela empresa e que tem ganhos de performance.

Os jogos certificados com ganhos são os seguintes:

Assassins Creed Valhalla

Battlefield V

Borderlands 3

Forza Horizon 4

Gears 5

Metro Exodus

Red Dead Redemption 2

Watch Dogs Legion

Já os jogos que a equipe de engenheiros de software da NVIDIA não pôde testar ou que não tiveram perdas de FPS, simplesmente ficarão com o ResBAR desabilitado, mesmo que você já tenha habilitado. Claro! Para você não perder FPS, né cara? Sacada legal!

Por outro lado, quando usado em RADEON, da feita que você habilita o recurso, ele fica ativado tanto nos jogos que tem ganhos, quanto nos que não tem. O que acaba sendo uma faca de dois gumes para ambos os lados.

Em NVIDIA, você só se beneficia nos jogos que os caras testaram. Aí sabe-se lá quantos anos os caras vão levar para rodar os jogos que você quer jogar. Se é que vão testar… Em contraponto, para não perder FPS, você mesmo ter que ficar descobrindo qual que é a melhor opção para aquele jogo específico (ligado ou desligado) fica complicado né? Enfim, acho que a AMD poderia ter um laboratório testando jogos e otimizando pontualmente para garantir uma lista cada vez maior de jogos que ganham performance com a técnica nova ao mesmo tempo que a NVIDIA poderia nos dar a liberdade de forçar o uso do ResBAR em um jogo específico via painel de controle.

Para habilitar o ResBAR, basta ter uma placa mãe AMD séries 400 e 500 e um CPU Ryzen 5000 ou Placas mãe Intel 400 com Intel Core de 10ª e 11ª gerações.

Para verificar os ganhos reais na RTX 3060, testamos 10 jogos. Não apenas os listados pela NVIDIA como certificados, mas tambem testamos alguns jogos não certificados só para ver se eles não perdem performance mesmo.

Começando pelos jogos não certificados: Assassins Creed Odyssey, Hitman III, Shadow of the Tomb Raider e The Division 2 de fato não tiveram perdas de performance. Apenas quando a gente liga o Hardware GPU Scheduling que identificamos perdas. Porém, é um recurso de uma atualização recente do Windows sem relação ao Resizable BAR.

Red Dead Redemption 2 é o único jogo certificado que não teve qualquer alteração na performance. Seja com Resizable BAR ligado, seja com Agendamento por aceleração de hardware ligado.

Todos os outros jogos certificados pela NVIDIA que testamos realmente tiveram aumento, que acabam sendo sempre inferiores a 10%. Não é aquilo que dizemos: “olha só que maraviiiiiiiilha”, né, mas saindo de graça, ainda é melhor que nada.

Em VGAs AMD, sites especializados conseguiram detectar ganhos de performance de até 20%, um salto grande e relevante. Em compensação, alguns jogos tiveram perdas consideráveis, o que não acontece na NVIDIA RTX 3060.

Agora, no intuito de entender um pouco mais a fundo o Resizable BAR, vamos fazer uma análise detalhada do comportamento do sistema nos dois jogos que mais ganharam frames por segundo: Watch Dogs Legion e Gears 5.

Um primeiro detalhe que gostaria de destacar é que, em ambos os games, tivemos a manutenção do uso do CPU e da GPU. É preciso explicar, de antemão que, se rende mais FPS, o uso de CPU deveria aumentar. Se nesse caso, não aumenta, mesmo com até 9% de ganhos de FPS, é porque, inegavelmente tivemos um ganho de eficiência no uso de recursos tanto do CPU quanto da GPU.

Outro dispositivo que teve economia em alocação foi na memória do sistema, a RAM. Em WATCH DOGS Legion, estamos falando de uma economia substancial de mais de 1GB de RAM. Em Gears 5, a economia chega em quase 1.5GB. Não é pouca coisa gente. Afinal, não se trata apenas de economia de recursos como também de render mais, requerendo menos.

A VRAM teve um comportamento semelhante, com uso mais eficiente. Mas variou um pouco o comportamento em cada um dos jogos que citamos. Em WATCH DOGS Legion, no início do benchmark, o uso era basicamente o mesmo e a discrepância aumenta do meio pro fim. Em Gears 5, começa com uso menor com Resizable BAR ligado e se equivalem ao final. De toda forma, ou o uso é menor ou marginalmente semelhante quando você liga o resizable BAR.

A única coisa que aumenta de uso é o controlador de memória da GPU. Ele sim, fica uniformemente maior quando ligamos o resizable BAR. E isso é extremamente interessante.

Usamos o CPU e a GPU com mais eficiência. Diminuímos o uso de RAM e VRAM sistematicamente. Ganhamos FPS. E tudo isso em troca de apenas um pouco mais de uso do controlador de memória da placa de vídeo. Uma troca que vale bastante a pena.

Esse detalhe me faz pressupor que os ganhos nas RX 6000 são maiores justamente porque a nível arquitetural, a AMD tem um controlador de memória de GPU mais sofisticado, já que tem o auxilio de 128MB de cache — o famoso infinity cache — e por isso consegue extrair mais ganhos com o Resizable BAR. Mas é só um palpite.

Fica aqui de palpite também que possamos ver ganhos maiores em CPUs mais simples que estejam enfrentando gargalos maiores, como nos Ryzen 3000 — que agora já tem suporte oficializado pela AMD.

E tambem fica minha curiosidade para os ganhos de performance nas RTX 3060Ti e superiores, com maior bus interface e até nas 3080 e 3090 com GDDR6X. A NVIDIA ainda não liberou o suporte para elas, já que precisam de atualização de vBIOS.

Agora, depois desses vários testes e dessa análise profunda, posso dizer para vocês que o Resizable BAR, em RTX 3060 vale a pena estar ligado. Ele te garante ganho de performance em alguns jogos selecionados sem comprometer em outros.

O que eu não posso recomendar é que você migre de plataforma — tipo saia de um 9900k com Z390 pra um 10700k com Z490 — só por causa de Resizable BAR. Os ganhos são bons quando são de graça. Se você já está munido de uma plataforma que o suporte, aí você liga e ganha performance grátis. Assim, é filé. Do contrário, nem zica com isso.

Mesma coisa é para quem está em RTX 2000 ou inferior e RX 5000 e inferiores. Migrar para uma placa nova de mesma performance só para ligar o Resizable BAR não faz sentido nenhum.

No mais, pessoal, Resizable BAR é um recurso que é bem vindo mas que, acho eu deveria ser suportado em mais séries de placas de vídeo. Para quem tiver a sorte de ter máquinas modernas, vale a pena desabilitar.

Se vocês quiserem ver mais testes como esse, não esqueçam de deixar o aplauso aqui no Medium e nos seguir para ver nossos futuros comparativos.

Um grande abraço e até a próxima.

An enthusiast media for enthusiast followers

An enthusiast media for enthusiast followers