sexta-feira, 6 de fevereiro de 2015

NVIDIA GTX970 e a polemica dos 3.5GB de VRAM

NVIDIA foi pega nas últimas semanas em uma grande controvérsia após vários usuários relatarem baixa performance de um dos modelos de entrada na linha de alta performance , a GTX 970.
  Usuários em fóruns internacionais mostravam que a GTX 970 perdia performance em algumas circunstâncias, outros diziam que a placa não tinha mais do que 3.5 GB de memória útil apesar da caixa mostrar 4 GB de memória. Um dos exemplos citados em um fórum de discussões foi no jogo Shadow of Mordor que somente usava 3.5 GB da placa e apresentava uma performance ruim.

Os testes

Os testes revelaram um tipo de comportamento atípico na forma como a GTX 970 lidava com as transferências de memória a partir de 3.5 GB.
O resultado dos testes são estes:
gtx970memory-Mem2
Se você olhar atentamente, vai notar duas coisas importantes nas áreas demarcadas em amarelo e verde:
  1. O utilitário só consegue testar a memória acessível das placas, o que significa testar entre  0(Zero)  e 3840 MB.g
  2. Do lado esquerdo, a partir do teste 25, a GTX 970 estranhamente reduz a quantidade de gigabytes movidos (GByte/s), tanto para o teste de DRAM como o de L2-Cache, evidenciando algum tipo de limitação que não ocorre nos números da GTX 980 (à direita).  No teste de memoria L2, a GTX 970 tem apenas 14% da velocidade da GTX 980,  já no teste de DRAM, somente 13% é evidenciado.   Algo realmente preocupante.
Nos valores fora das áreas demarcadas é normal que nos 24 testes iniciais a GTX 970 mova menos dados que a GTX 980, pois ela tem uma quantidade inferior de processadores e por isso vai requisitar uma quantidade menor de dados da memória.

Informações erradas

Mas o que ninguém sabia até então era que o “Reviewer’s Guide” enviado pela NVIDIA a sites especializados em placas de vídeo apresentavam incorreções na tabela de especificações da GTX 970.

Abaixo a tabela original/oficial de especificações da GTX 970:
GTX970-OriginalCfg
As marcações em vermelho apontam diversos erros que vamos comentar na sequência.  Com as novas informações, a GTX 970 perdeu 8 ROPs em relação à GTX 980, ficando na verdade com 56 ROPs.  Já a quantidade de memória L2 real não era de 2048 K e sim 1792 K.

Isso só foi possível ser descoberto depois que a própria NVIDIA veio a público para explicar melhor como estava configurada internamente a GTX 970 em relação à GTX 980 e como isso afetava a performance do acesso à memória além de 3.5 GB. O seguinte gráfico fornecido por Jonah Alben da NVIDIA para o site pcper.com desmitificou finalmente a questão, veja:

GM204_arch_0
Diagrama do sistema de memória da GTX 970

Pelo gráfico acima, percebemos que a GTX 970 tem realmente 1792 K de memória L2-Cache pois vem apenas com 7 dos 8 bancos ativos da GTX 980.    Como você tem um bloco de memória L2 desativado, você também não poderá usar 8 ROPs do total de 64 o que dá 56.  

Agora entra a última questão, por que no gráfico em sua parte inferior aparecem duas delimitações , uma de 3.5 GB e outra de 0.5 GB ?

É muito simples, por questões de custeio e para inibir um pouco a performance, NVIDIA desativou um cache L2 e sobrecarregou um bloco de memória L2 atrelando a ele mais um controlador de memória adicional com acesso a 0.5 GB ou 512 MB.  
Adicionalmente se você olhar no topo do gráfico vai perceber que 3 SMs foram desativados o que faz a GTX 970 terminar com 1664 processadores CUDA.

Muitos destes chips também vem de uma seleção de chips que foram recusados em determinados testes na fabrica. Ainda com relação ao custeio, chips GM204 que falharam nos testes para se tornarem GTX 980, podem terminar sendo qualificados para serem testados e virarem uma GTX 970 ou GTX 970M ou até GTX 980M.

Outro ponto importante a se destacar, a placa, apesar de uma memória L2-Cache desativada, ela ainda está usando 8 barramentos de 32-bits (MC<->DRAM) o que totaliza  256-bits.
A placa suporta até 224 GB/s porém o que efetivamente vai conseguir passar por ali são 196 GB/s (7 primeiras portas).  Quando existir a necessidade de passar os últimos 28 GB/s (ultima porta de 512 MB) ela congestionará o ultimo banco L2.
Na prática, o barramento se comportará como se fosse de 224-bits apesar da placa ter todas as linhas de comunicação necessárias para a vazão máxima.  Graças à falta de uma memória cache, um controlador será sobrecarregado o que fará diminuir a vazão real em relação à nominal.

Se você for definir o que é a memória da GTX 970, é correto dizer que ela tem 4 GB de memória, porém se for entrar em detalhes, diga que somente 3.5 GB desta memória são de acesso rápido, os 512 MB finais apesar de utilizáveis, não rodarão à máxima velocidade possível.