Artigos, VGAs

Otimização de timings da memória do GPU – Vale a pena?

Fala pessoal, beleza?

Muito se fala hoje em dia sobre otimização de timings de memória, especialmente após o lançamento dos AMD Ryzen, que por conta da forma que suas interconexões internas foram projetadas muito se beneficiam do uso de memórias rápidas com latência baixa, o que colocou novamente em evidencia a “arte” de otimizar ao máximo o funcionamento das memórias e com isso, formentou o desenvolvimento de ferramentas como a Ryzen DRAM Calculator, que visam tornar esse processo um pouco mais amigável para o usuário final.

https://www.techpowerup.com/download/ryzen-dram-calculator/

Até aqui estou falando apenas de CPUs mas e em GPUs? Será que esse tipo de otimização trás ganhos de desempenho nas mesmas? Bom, esse tipo de “otimização” já é conhecida faz muito tempo e softwares como o “ATI Tray Tools” já permitiam fazer esse tipo de ajuste até mesmo nas longínquas Radeon 9XXX que ainda usavam memórias DDR1. Em tempos mais modernos, essa ultima onda de mineração de Etherium usando GPUs também serviu como “motor” para o desenvolvimento de aplicativos que permitam ao usuário mexer com esse tipo de ajuste nas GPUs AMD, afinal de contas, o “algoritmo” do Etherium se beneficia muito de latências reduzidas e por isso a otimização dos clocks/timings de memória nos GPUs trazem grandes incrementos da Perf/W nesse workload. Mas e em benchmarks? Será que fazer esse tipo de ajuste trás ganhos em 3D? É isso que vamos ver nesse artigo! 🙂

Enfim, existem duas abordagens possíveis para alterar os timings de memória nessas VGAs:

  1. Biosmod, que é a que vou mostrar utilizando a RX590.
  2. Utilizar um software para fazer os ajustes on-the-fly, o que irei mostrar utilizando a RX Vega 64 Strix.

No caso da Vega 56/64, esse também é o único jeito de se fazer essa alteração devido ao fato das mesmas não permitirem o uso de bios modificadas, limitando esse tipo de brincadeira apenas a troca da bios original por outra de outro modelo.

Desde já, recomendo a todos a leitura dessa thread no Reddit e no Guru3D, ambas trazem muitas informações, possibilidades de ajustes e testes realizados por outros usuários.

  • Configuração utilizada:

CPU: AMD Ryzen 7 2700X (obrigado AMD!)

MOBO: ASUS ROG Crosshair VII HERO

RAM: 2x8GB Patriot Viper Steel 4400CL19

VGA: XFX Radeon RX590 Fatboy e ASUS RX Vega 64 Strix

STORAGE: SSD Crucial BX500 240GB

SOFTWARE: Windows 10 x64 build 1803 e Adrenalin 19.4.1

Objetivos do artigo: Introduzir/explanar os procedimentos para otimização dos timings nos GPUs AMD e verificar se existem ganhos em benchmarks usados no cenário competitivo. Detalhes sobre como foram conduzidos os testes, procedimentos e os demais softwares utilizados nesse artigo estão descritos no texto a seguir.

  • HBM2 (ASUS RX Vega 64 Strix):

Como disse anteriormente, para as Vega não existe a possibilidade de alterar a bios, portanto, o ajuste dos timings só pode ser feito via software e para isso foi utilizado o AMD Memory Tweaker, que é app que ilustra essa matéria e permite não só o ajuste dos timings das Radeons 14nm usando memórias GDDR5 e HBM2 como também trás as funcionalidades do Wattman em uma interface semelhante a aquela do OverdriveNT que utilizei no review da RX Vega 64 Strix.

Para as memórias HBM2, é permitido alterar todos os timings “on-the-fly” e acredito que existam três formas distintas de se fazer essa otimização:

  1. Se tiver acesso as documentações dessas memórias, pode usar a mesma como referência para saber quais timings usar, as relações entre eles e por ai vai. Lembrando que cada tipo de memória diferente requer ajustes diferentes e possuem relações distintas entre os timings, em outras palavras, usar as mesmas relações nos reviews de memória DDR4 em HBM2 pode não dar muito certo. 🙂
  2. Tentativa e erro. Com algum bom senso é perfeitamente possível usar essa abordagem pois caso de errado, o pior que vai acontecer é a máquina travar em 3D e voltar com os parâmetros originais após o reboot.
  3. Procurar em fóruns ajustes que já tenham sido testados por outras pessoas e usar como referência para o seu. Lembrando que é importante verificar qual o fabricante da memória usada pela placa que você tem em mãos pois normalmente existe uma diferença razoável entre os timings de memórias de diferentes fabricantes.

A abordagem adotada aqui foi a 3ª e usei esse ajuste como referência para chegar nesse da galeria abaixo que foi o que usei nos testes. Lembrando que a RX Vega 64 Strix desse artigo usa memórias Samsung, que os resultados podem variar mesmo para outros modelos iguais e que timings muito agressivos podem acabar por sacrificar a frequência máxima atingida pelas memórias em relação ao padrão.

Bom, sobre os resultados, se a ideia for fazer isso visando melhora do desempenho em jogos, acredito que pode acabar não valendo muito a pena, afinal de contas, apesar dos ganhos serem consistentes, em termos de FPS são bem pequenos como é possível ver no gráfico abaixo com meus resultados usando o Unigine Superposition 4K. De todo modo, de acordo com esses testes conduzidos por um usuário do fórum do Guru3D, os ganhos em jogos variaram dos +1.9% até os +5.5%, o que sem sombra de dúvidas é um ganho, porém, tenho certeza que muita gente vai ponderar se vale a pena todo esse trabalho para isso.

Agora, vendo sobre a ótica de alguém que pretende competir em rankings como o HWBOT, onde o que importa é o resultado final do benchmark, ai a coisa muda de figura pois por mais que os ganhos em FPS pareçam pequenos, a diferença na pontuação final não é nada desprezível e sem a menor dúvida, pode ser a diferença entre terminar em 2º ou 1º lugar na categoria. 🙂

Para terem uma ideia, consegui alcançar a minha melhor marca no FSE após esses ajustes e olha que estou me referindo aos resultados no gelo seco, ainda que o riser PCI-E estivesse jogando contra o desempenho e estabilidade nesse caso. 🙂

  • GDDR5 (XFX RX590 Fatboy):

Como disse anteriormente, com a RX480 adotei a abordagem do biosmod e para isso é necessário usar algumas ferramentas como o PolarisBiosEditor, atikmdag-patcher e ATIFlash. Tenha em mente que esse procedimento caso feito de maneira errada pode acabar por “brickar” a placa de vídeo!

O primeiro passo para realizar o biosmod é arranjar um dump da bios a ser modificada, algo que pode ser obtido usando o GPU-Z ou na database do Techpowerup.

Após isso, é necessário ir atrás da ferramenta usada para fazer as alterações na bios, que no caso, trata-se do Polaris Bios Editor (PBE). Logo ao executar o mesmo, nos é apresentado a mensagem abaixo, que definitivamente deve ser levada a sério para prevenir eventuais sustos:

Após isso, o procedimento é bastante simples e se resume a carregar a bios e trocar as strings dos timings, lembrando que nas Polaris, existe uma “tabela” de timings para diferentes clocks de memória sendo que a ideia aqui é simplesmente substituir os timings dos 2000MHz por aqueles que são usados pra 1875MHz ou mesmo 1750MHz.

Existem outras ferramentas para fazer a “decodificação” dos timings abrindo a possibilidade de editar manualmente todos os parâmetros, porém, o propósito desse artigo é mostrar de maneira resumida o procedimento e os resultados em benchmarks 3D, então não abordarei isso por aqui. Na galeria abaixo, fiz um pequeno “passo a passo” usando screenshots do PBE com algumas instruções para caso alguém fique um pouco perdido na hora de fazer esse esquema todo. 🙂

Este slideshow necessita de JavaScript.

Caso você também tenha uma XFX RX590 Fatboy que use chips Micron, segue o link com as bios prontas, use por sua conta e risco!

Para “flashear” a bios, foi usado o ATIFlash em sua versão Windows, bastando executar o mesmo como administrador, carregar a bios e dar flash. Se você estiver usando a bios relativa ao modelo da sua placa, não haverá necessidade de usar comandos para forçar o flash, entretanto, se esse não for o caso, será necessário ir atrás desses comandos. 😉

Se tudo correu bem até aqui, a máquina irá reiniciar, dar vídeo normalmente e carregar o SO, entretanto, é necessário aplicar um pequeno patch no driver para o que o mesmo ignore a assinatura criptográfica “corrompida” da bios e tudo possa funcionar normalmente. Esse patch pode ser encontrado nesse link.

Em relação aos resultados obtidos, para rodar esses testes tanto em “Stock” quanto “OC” usei o GPU com em 1580MHz, PL +50% e fan @ 100% com o intuito de manter a frequência de operação do mesmo sempre constante, conforme mostrei no review da placa, e variei apenas o clock da memória, sendo 2000MHz em stock e 2250MHz em OC.

E novamente, apesar dos ganhos parecerem modestos, eles são significativos em um cenário de ranking competitivo e novamente, essa diferença pode ser aquela entre o 1º e 2º lugar do ranking, conforme expliquei anteriormente.

Conclusão:

Em ambos os casos analisados aqui (GDDR5 e HBM2), os benchmarks apresentaram ganhos após a otimização dos timings provando a assim validade desse procedimento além da mineração, entretanto, apesar de não ter testado jogos aqui, é visível que os ganhos em termos de FPS são bem diminutos e ainda que na real isso varie de jogo para jogo, dificilmente excederá a marca dos 5%, tornando tudo isso algo um tanto questionável para o público geral.

E por enquanto é isso pessoal! Dúvidas, criticas e sugestões são bem-vindos! Até a proxima!

 

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s