Os problemas da Xbox One em esquema.

A ESRAM está a ser o maior problema da Xbox One. E no esquema que fizemos pensamos que conseguimos mostrar de forma gráfica qual o seu problema.

Como tem vindo a ser visto a XBox One possui um grande “gargalo” na sua concepção. E que a está a limitar. Percebe o porque dessa situação.

Na ausência de uma memória com largura de banda suficiente para alimentar o GPU da Xbox One, a Microsoft resolveu utilizar uma memória rápida que servisse de intermediária.

Apesar de a solução funcionar, a dimensão da memória torna-se problemática, uma vez que 32 MB de ESRAM, face à memória global de 8 GB, é bastante pouco.

Por outras palavras, a nível de larguras de banda, as duas consolas estão neste momento como a imagem de baixo mostra:



 

gargalo

 

 

Como se pode ver, a facilidade de extrair a largura de banda, com consequências na obtenção de capacidade de processamento, é incomparavelmente melhor na PS4. Não só não há limites de dimensões ao que pode ser criado (excepto os 8 GB), como qualquer parte da memória pode ser acedida a 176 GB/s.

Na solução da Microsoft o acesso para ser rápido tem de passar pelos 32 MB de ESRAM, no fundo uma gota de água no mar de memória existente (suficiente se devidamente aproveitada), mas que forçosamente necessita de ser usada para boas performances uma vez que os 68 GB/s da DDR3 se revelam insuficientes para altas resoluções.



A ESRAM é assim um gargalo inevitável. Sem ela não há performance, mas com ela há limitações por ser um valor reduzido. Apesar de ser apenas 0.39% da memória total, ela é responsável por 75% da largura de banda que chega ao APU.

Apenas como comparação com a XBox 360, a largura de banda interna da memória rápida diminuiu de 256 GB/s para 204 GB/s, e esta memória aumentou 3,2 vezes. Já a RAM global aumentou 16 vezes e as exigências de largura de banda da placa gráfica cerca de 4 vezes.

Para perceberem como 32 MB é pouco, vou dar um exemplo. E para que não tomem as palavras por apenas minhas, dado que já referi este exemplo milhares de vezes sem que ele causasse o devido impacto, cito-o como parte de um artigo da Eurogamer para que percebam:

A Microsoft diz aos criadores que a ESRAM é desenhada para a alta largura de banda necessária aos elementos gráficos como os shadowmaps, lightmaps, depth targets e render targets. Mas num mundo onde Killzone: Shadow Fall usa 800MB apenas para render targets alone, que dificuldades terão os programadores ao trabalhar com apenas 32 MB de memória rápida para funções similares?

Como perceberão após esta explicação, o problema da Xbox One não é performance, mas sim a dificuldade em a libertar.

Desde sempre que venho a referir que as diferenças de performance na resolução de jogos como Call of Duty são aberrações. E, pelo menos nesta fase, tal não é devido à diferença de potências, mas à dificuldade na sua obtenção.



A solução

Uma possível solução é, como já referi, o Tile Rendering (render em azulejo, ou basicamente, por partes). Uma solução que é usada também na Xbox 360, uma vez que 10 MB de eDRAM nem sempre são suficientes para um render target a 1280*720.

Basicamente o que os programadores fazem nesses casos na Xbox 360 é render não 30 ou 60 fotogramas por segundo, mas 60 ou 120 fotogramas por segundo (respectivamente), mas a metade da resolução. Ou seja, o ecrã é dividido em duas partes, a parte superior e a inferior, sendo cada metade calculada a 60 fotogramas e depois unidas. Desta forma as necessidades de memória passam a metade, e como as performances exigidas para o cálculo acabam por ser as mesmas (mesmo número de pixels e complexidade), a técnica funciona. No entanto esta situação requer que os cálculos da primeira metade do ecrã sejam guardados em qualquer sítio até a segunda metade ser calculada, e isso terá de ser na memória geral. Assim, apesar do método gastar menos memória rápida, exige mais movimentações de dados e mais largura de banda e ciclos de relógio para as transferências dos dados entre as duas memórias.

Esta é uma situação que os futuros exclusivos da consola certamente deverão tentar implementar. Mas infelizmente poderá não ser tão fácil de ser implementada em jogos com motores genéricos, algo que se tem vindo a generalizar para descer custos de produção. E terá sempre custos de performance adicionais.

Eis a técnica descrita pela própria Microsoft, e os comentários de um programador sobre a mesma – (Emil Persson da Avalanche Studios) – aplicada na prática e como ele próprio vê a limitação como um sério entrave às performances da consola.

Seja como for, este problema não se coloca quando os render targets cabem nos 32 MB de RAM, ficando nesse caso válida só a questão das larguras de banda.





error: Conteúdo protegido