Análise à segunda entrevista da Microsoft à Eurogamer

Como de costume a Microsoft dá entrevistas para limpar a imagem da sua consola, pensando que com o uso de termos técnicos poderá levar a crer que há mais performances do que as reais. Mas infelizmente a cada entrevista decepciona cada vez mais.

xboxone-kinectic

Vamos analisar as afirmações da empresa na entrevista dada à Eurogamer.

A Microsoft pretende dar mais 10% de recursos GPU aos programadores

Os factos



A Xbox reserva 10% da potência da sua placa gráfica para as aplicações, TV e Kinect.

O referido

A Microsoft refere que futuramente irá deixar de reservar os 10% de recursos da placa gráfica para o Kinect e aplicações para os fornecer aos programadores.

Dado que o Kinect não funciona sem processamento, a Microsoft afirma que pretende usar apenas a capacidade de processamento genérico secundária do GPU, mantendo a principal e o processamento gráfico acessível aos programadores (Cada pipeline pode processar paralelamente 1 comando gráfico e 2 genéricos (as 2 concurrent pipelines referidas)).

A contradição

No fundo, a Microsoft não liberta 10% de processamento gráfico, apenas optimiza o mesmo. O processamento é na mesma usado mas de outra forma. No global haverá efectivamente algum ganho pela forma como este processamento não reserva recursos desnecessários, mas ele não desaparece, apenas sendo efectuado de outra forma. Qual o ganho real? Desconhecido, mas nunca será realmente de 10% uma vez que o processamento se mantem. No entanto caso a Microsoft liberte 10% de comandos gráficos reservando 10% de comandos genéricos, haverá um ganho gráfico de 10%, com a perda a ser totalmente no processamento genérico. Mas no fundo isso é um mover do processamento para outro sítio, um varrer para baixo do tapete onde não se vê, mas está lá na mesma e quando for preciso levantar o tapete…

E podem apostar que vai ser preciso levantar o tapete pois o GPGPU pode não ser muito usado agora, mas daqui a uns anos vai sê-lo com toda a certeza, não fosse esse o ponto forte da PS4.

 Os ROPS são ou não limitativos das performances da placa?

 Os factos

 A XBox possui 16 ROPS, as unidades que escrevem a imagem final baseando-se nos dados do pixel, vector, shader e texel, o que lhe permite um output de aproximadamente 13.65 Gpixels/segundo, um valor que se pode considerar algo baixo para 1080p face a todo o processamento efectuado em cenários com processamentos gráficos complexos.

 O referido

 A Microsoft refere que a consola foi pensada de forma a que os ROPS não se revelassem limitativos. E dá inclusive um exemplo que mostra como os 13.65 Gpixels não se revelam limitativos uma vez que caso os mesmos fossem usados na totalidade a largura de banda apareceria primeiro a criar limitações. Assim a empresa refere que num caso onde o alvo a render fosse a 32 bits por pixels, com o blending desligado, e com uma superfície com uma profundidade/stencial de 32 bits por pixels, com a profundidade ligada, teria de tratar 12 bytes por pixel (8 bytes de escrita, 4 de leitura). Ora multiplicando este valor pelos 13,65 Gpixels tal implicaria uma largura de banda de 164 GB/s, algo que saturaria a largura de banda da ESRAM.

Ora por esta lógica então as ROPS nunca serão limitativas uma vez que se atingem os limites de largura de banda primeiro, sendo o seu número ideal.

A contradição

Naturalmente algo está mal no exemplo de cima, e basta consultar as especificações das placas da AMD para vermos que a maior parte delas usam 32 ROPS, larguras de banda semelhantes e velocidades de relógio superiores.

Os 13,65 Gpixels da Xbox são obtidos multiplicando o número de ROPS (16), pela velocidade da placa, ou seja 853 Mhz *  16 = 13648 Mpixels = 13.648 Gpixels.

A largura de banda da ESRAM da Xbox é, realisticamente,  de cerca de 150 GB/s, logo com este exemplo ao multiplicarmos os 13,65 pelos 12bytes do exemplo de cima teríamos a memória saturada ao usar 164 GB/s.

 Vamos agora olhar para a Radeon 7870: 1200 Mhz, 32 Rops e 153.6 GB/s. O seu pixel fill rate é de 1200*32 = 38,4 Gigapixels.

 Quer dizer que com a mesma imagem descrita pela Microsoft a placa não precisaria dos 32 ROPS pois 38,4 * 12 bytes = 460 GB/s! Ou seja a placa saturaria na largura de banda caso usa-se os ROPS na sua totalidade.



Que placa gráfica possui 460 GB/s? Serão os ROPS desta placa excessivos e idiotas? Afinal com esta largura de bandaa placa não parece justificar mais do que 11 ROPS uma vez que a 1200 Mhz eles seriam suficientes para saturar a largura de banda disponibilizada.

 Na realidade a Microsoft sabe que isso não é assim, e prova-o ao referir na mesma entrevista, quando da justificação sobre o motivo pelo qual efectuou o Overclock na gráfica, ao referir:

Yes, some parts of the frames may have been ROP-bound

Traduzindo:

Sim, algumas partes dos nossos frames podem ter estado comprometidos pelos ROPS. (não se fiem nas traduções semi automatizadas da Eurogamer.pt pois o que está lá “Sim, algumas partes dos fotogramas podem vir da ROP” nada tem a ver com o texto original, e bound = comprometido / amarrado)

E isto é uma contradição, pois a empresa referiu que ROPS dificilmente podem ser usados ao máximo sem haver limitação da largura de banda primeiro.

Mas Richard Leadbetter da Eurogamer também sabe que isso não é assim e soube questionar, pelo que colocou à Microsoft questões sobre situações onde os ROPS são usados de forma intensiva sem necessitarem de usar mais largura de banda, dando os exemplos dos “depth-only passes”, sombras, “alpha test” e “Z pre-pass”, tudo situações bem reais e comuns em jogos AAA e que são motivo pelo qual se aumenta os número de ROPS sem a preocupação da largura de banda uma vez que o processamento requer passagens múltiplas no pixel antes de se obter o resultado final.

Apanhada, a Microsoft respondeu à defesa, referindo que deixou ao critério dos criadores a escolha entre a resolução e a qualidade dos pixels. Caso optem por resoluções como 720p ou 900p com anti-aliasing, deixando o hardware re-escalar para 1080p, então poderão aplicar mais processamento a cada pixel. Mas caso haja menos processamento, poderão optar pelos 1080p.

Ou seja, a Microsoft reconhece o limite existente alegando que a solução é descer a resolução real no caso de passagem de processamento múltiplas por pixel. E deixo a citação integral da sua frase:

We’ve chosen to let title developers make the trade-off of resolution vs. per-pixel quality in whatever way is most appropriate to their game content. A lower resolution generally means that there can be more quality per pixel. With a high quality scaler and anti-aliasing and render resolutions such as 720p or ‘900p’, some games look better with more GPU processing going to each pixel than to the number of pixels; others look better at 1080p with less GPU processing per pixel

O Futuro

Cada vez mais é notório que ainda antes do lançamento da consola as escolhas da Microsoft se estão a revelar limitativas, contrariando tudo o que se afirma sobre o equilíbrio tão bem pensado da consola.

Agora percebe-se o verdadeiro motivo pelo qual os overclocks existiram. Dadas as limitações que podem impedir jogos com tratamentos gráficos complexos a 1080p por impossibilidade física da placa, um overclock permitia aumentar as performances do sistemas, mas igualmente aumentar este fill rate limitativo que subiu assim dos 12,8 Gpixels/s para os 13,65 Gpixels/s permitindo assim uma ligeira folga nas resoluções.



O que se pode contactar é que os 1080p poderão vir a ser um problema na consola caso os jogos sejam intensivos no uso de efeitos gráficos que requeiram duas ou mais passagens dos ROPS. Isto não impede a consola de ter jogos a 1080p pois a Xbox 360 com apenas 8 ROPS tinha-os, mas impede que os mesmos possam ser tão complexos a nível de tratamento gráfico como os da PS4 que apenas será limitada pelas performances de processamento, mas nunca pelos seus ROPS que, para 1080p, são até excessivos.

Note-se que não se julgue que não veremos muitos jogos 720p em ambas as consolas. A passagem para 720p liberta muitos recursos do sistema que permitem detalhes maiores. Onde aqui se quer chegar é que no caso da PS4 tal só acontecerá pelo facto de a performance do sistema não chegar e nunca por limitação causada pelos ROPS.

Após inúmeras análises ao hardware das consolas, o que percebo claramente é que a PS4 foi pensada de forma de forma a eliminar os problemas tradicionais dos PCs onde por vezes as limitações decorrem de apenas um componente, quando o resto do sistema ainda possui imensa capacidade de processamento. Ou seja, o sistema está pensado de forma a que apenas as performances do todo, e não das partes, sejam o limite. Já a Microsoft olhou para a Xbox como um PC, limitando os componentes ao que considerou o valor adequado, mas mantendo a habitual situação onde quando há desequilíbrios que levam a que um dos componentes seja usado mais intensivamente o mesmo limita as performances do sistema como um todo.

Isto é notório nos ROPS, é notório nos CU, e é notório particularmente na RAM. É aquilo que a Microsoft chama de uma consola balanceada mas que vai requerer igualmente programações balanceadas para se tirar todo o partido do Hardware. E neste caso o balanceamento vai ter custos visuais, sendo que nos jogos multi-plataforma, a serem iguais visualmente, vai ser a resolução.

Esperemos apenas que a Microsoft e/ou os criadores de software consigam arranjar uma solução para este problema.



Posts Relacionados