Por dentro da Scorpio Engine o coração do Project Scorpio

A Digital Foundry, escolhida pela Microsoft para revelar os aspectos mais técnicos do Scorpio fez mais um artigo detalhando um pouco mais como a Microsoft projetou o seu novo console, e como sempre a Xbox Core trás as informações para vocês!

Como já falado anteriormente, o principal aspecto do projeto do Scorpio foi uma otimização sem nenhum precedente em que eles testaram diversas configurações para chegar no seu objetivo de trazer os jogos de Xbox One para 4K nativos no novo console, e agora eles explicam o processo e detalham alguma das mudanças.

E para quem esperava que o nome do novo console pudesse realmente ser Xbox One Scorpio, a Microsoft diz que o nome do Project Scorpio era o nome do processador desde o começo, e que decidiu manter o nome na versão final como Scorpio Engine, mas que o nome do console mesmo será outro e revelado apenas na E3.

Projetando através de dados

O processo foi realizado pela sua ferramenta chamada PIX (Performance Inspector for Xbox) que permite analisar profundamente a performance do jogo, desde como está o uso internamente dos caches do processador, a uma análise por pixel de quanto exatamente aquele shader demorou para ser calculado. Adicionando a possibilidade de testar simulações de outros hardwares eles rodaram por meses testes automatizados totalizando mais de 30 mil simulações. Todos os jogos do Xbox One foram testados e eles tinham dados precisos de exatamente o que deveria ser modificado para fazer com que cada um deles rodasse a 4K nativos no Project Scorpio. Apenas depois de ter em mãos todas essas simulações que a Microsoft e a AMD começaram a projetar a arquitetura ótima para entregar a maioria dos jogos em 4K nativos (O objetivo sendo jogos até 900p no Xbox One sendo possível de rodar nativamente em 4K no Scorpio) com o menor custo possível.

Jaguar, pero no mucho

Para tal o principal conceito adotado foi o de melhor relação custo/benefício. Por exemplo, a decisão de usar Ryzen ou não. Por questões de preço, tamanho e disponibilidade da tecnologia o Ryzen seria custoso demais para ser incluído no Scorpio, assim tanto a Microsoft quanto a AMD trabalharam em cima dele e de outros componentes desenvolvendo customizações novas ou trazendo de outras arquiteturas. Como falamos, a CPU base do Scorpio é o Jaguar, mas a Microsoft conseguiu reduzir bastante os gargalos de performance, e chegou num design novo, muito mais eficiente para o Xbox que o Jaguar tradicionalmente usado.

A primeira modificação foi a frequência, 31% maior. A vantagem de aumentar a frequência é que não introduz potencialmente novos gargalos como por exemplo adicionar mais unidades de execução. Com a frequência tudo trabalha mais rápido e a performance disso é linear, ou seja, só por isso o processador do Scorpio tem performance 31% maior que a do Xbox One. Mas a Microsoft em seus testes percebeu algumas áreas aonde o processador não trabalhava com a performance máxima possível. A primeira foi a latência de memória. A Microsoft percebeu que em vários momentos a CPU ficava parada esperando dados para processar, e modificou os controladores de memória, os caches internos do processador permitindo que a CPU sempre esteja bem alimentada e aumentando sua eficiência. Outro grande problema da performance do processador no Xbox One é o fato do ambiente aonde ele roda os jogos ser virtualizado, o que é bom porque permite facilmente ser portado para outras arquiteturas, e no caso do Scorpio, permitir rodar os jogos numa máquina mais poderosa e com arquitetura completamente diferente deixando os jogos acessando todo o poder extra disponível para rodar melhor, porém tem um impacto direto na performance. No Scorpio a Microsoft aproveitou a oportunidade para customizar o próprio núcleo do jaguar diminuindo o impacto da tradução de código exigida pela virtualização, chegando mais próximo da performance que o processador teria executando um código nativo. Como já falado, outros dois impactos de performance eram a competição de memória entre o processador e placa de vídeo e as tarefas do DirectX que usavam muito tempo de CPU para comandar a GPU.

Segundo a Microsoft essas customizações foram suficientes para atingir os seus objetivos e são mais eficientes em termos de custo que usar um processador mais poderoso e mais caro. E quais são esses objetivos? Obviamente isso varia de jogo para jogo, mas em jogos aonde o processador era o único responsável por slowdowns o objetivo era que o mesmo jogo no Scorpio pudesse rodar no framerate alvo sem slowdown nenhum. E em jogos aonde a CPU embora não ocasionava slowdowns, mas limitava o framerate máximo, é possível chegar aos 60fps. Como dissemos, vai depender do jogo e do desenvolvedor, mas a princípio um jogo 900p a 30fps no Xbox One, tem 2 caminhos diretos para o Scorpio com praticamente nenhuma necessidade de otimização: 4K nativos a 30 fps, ou 1080p a 60fps. Um jogo a 900p e 30fps passar para 4K60 é um tanto improvável devido à imensa performance exigida da GPU nesse salto, mas talvez possa ser alcançada com soluções não nativas como checkerboard.

Nem Vega, nem Polaris, nem o que tínhamos no Xbox One

Quanto a GPU, o princípio base também foi otimizar a relação custo/benefício ao máximo. O números de unidades de processamento foi aumentado drasticamente (de 12 para 40), mas todo o resto viu aumento muito mais modestos como os ROPs que subiram de 16 para 32. Novamente a Microsoft preferiu aumentar o clock ao invés de fazer uma GPU monstruosamente grande, e juntamente com a AMD tentou otimizar os problemas de performance pontuais, trazendo features da Polaris e Vega (atual e futura arquitetura da AMD) e também criando soluções customizadas para o console. Por exemplo, com o aumento de resolução mesmo o dobro de ROPs a um aumento de clock de 37% não é suficiente para lidar com um número de pixels 4 a 5.67 vezes maior (de 900p a 1080p para 4K), e para lidar com isso a nova engine de compressão da AMD, introduzida na Polaris foi usada. Os caches internos da GPU foram aumentados drasticamente em 4 vezes, reduzindo bastante o consumo da banda, e assim como na Vega, alguns componentes da GPU passam a utilizar diretamente o cache ao invés da memória principal para melhor performance. Há indícios por uma documentação vazada que o novo rasterizador da Vega, que é baseado em tiling (basicamente ao invés de renderizar a tela toda de uma vez ele divide a tela em pequenos quadrados, com a vantagem de que os dados pertencentes a esses quadrados cabem facilmente no cache, maximizando a performance e reduzindo o uso de memória), mas nessa apresentação a Microsoft não confirmou a presença dele. Entretanto, uma das features controversas do Ps4 Pro, a possibilidade de se usar números de ponto flutuante de 16bits (ao contrário do tradicional a 32) ao dobro de velocidade, e é uma das features que a AMD está introduzindo na Vega, chegou a ser considerada no Scorpio mas foi retirada. Há dúvidas quanto à configuração da GPU e o layout de memória escolhida, pois da última vez que a AMD tentou isso acabou com uma placa de vídeo que não poderia utilizar toda a banda disponível. Para evitar isso a Microsoft também modificou o controlador de memória da GPU, para garantir que a mesma possa sempre utilizar exatamente a quantidade de memória que precisa. Além disso, há modificações no controlador de memória para permitir que os outros consumidores, CPU, processador de áudio, o bloco responsável pela gravação do jogo em 4K60 possam todos realizar suas tarefas sem prejudicar o acesso do outro. No total, foram mais de 60 customizações realizadas na GPU para maximizar a performance.

Além das customizações a performance da GPU aumentou devido ao co processador DX12. No nosso outro artigo nós falamos da vantagem que ele trás na CPU, mas também é um grande ganho para a placa de vídeo. Assim como no processador, uma das principais causas da falta de performance é a falta de dados para processar, fazendo o processador ficar parado, porém no caso da GPU um motivo extra para o que isso pode acontecer é a CPU não dar conta de mandar todos os comandos para a placa de vídeo, que perde performance por ficar parada enquanto espera os comandos da CPU. Com o co processador, basicamente a CPU fica livre para o código do jogo, e a GPU fica sempre ocupada permitindo uma maior eficiência.

Apesar da falta de esram, não haverá problemas de compatibilidade com nenhum jogo do Xbox One. Havia muitas soluções possíveis para isso, mas como a quantidade de banda disponível no Scorpio é muito maior, a mais fácil, ou seja, simplesmente mapear 32mb de memória dentro dos 8GB disponíveis para o jogo e para o jogo fingir que a esram ainda existe já se mostrou super eficaz conseguindo uma performance maior no Scorpio que no Xbox One, mesmo para jogos que a utilizem extensivamente.

A Digital Foundry afirmou que perguntou diretamente para a Microsoft, quão mais performance poderíamos esperar do Scorpio em comparação à PCs com as mesmas ou parecidas especificações. E a Microsoft foi bem categórica: Não tem nenhum dado quanto a isso, pois todas as customizações no console foram realizadas com base nos objetivos específicos e não igualar a performance à placa de vídeo X ou Y. Mas que pela extensão das customizações eles esperam que ele de fato fique à frente de PCs com capacidades teóricas similares. A DF aponta que de fato foi o que presenciou no demo de Forza 6, mas que como é apenas um jogo é muito cedo para traçar uma estimativa real de performance, apesar de um começo promissor.

E quanto aos jogos? O que podemos esperar disso?

A Microsoft deixou bem claro o objetivo que ela tinha quando projetou o Scorpio: Uma arquitetura super direta para conseguir resultados aceitáveis e que ports realizados em 1 ou 2 dias já alcancem as seguintes métricas: 1080p no Xbox One (enfatizando que o console deveria ter mais jogos 1080p nativos se não fosse a necessidade de otimizações extras como a esram) possam ser tragos a 4K nativos com muito poder de sobra para melhorias visuais; Jogos em 900p no Xbox One também possam ser tragos para 4K nativos com um pouco de poder de sobra, possibilitando menos melhorias visuais. Jogos muito abaixo de 900p (por volta de 720p) utilizando de técnicas de upscaling como checkerboard ou reconstrução temporal para 4K (não nativos) também com poder de sobra para melhorias visuais. É claro, há a possibilidade de otimizações futuras para conseguir por exemplo que um jogo 900p no Xbox one rode a 4K no Scorpio com configurações bem acima do que o Xbox One é capaz. Mas o objetivo principal é que com poucos dias de port se chegue nos 4K nativos com pouquíssimo esforço no (Porque a maioria deles só vão entregar 4K reais se de fato não for muito trabalho extra de conseguir isso no Scorpio)

Mas a Microsoft garante que não há nenhuma restrição para os developers quanto a isso, e o desenvolvedor é completamente livre para utilizar a estratégia que achar melhor para o seu jogo. E que mesmo alguns developers que conseguiram trazer jogos a 900p ou abaixo nativamente para 4K optaram por uma técnica de upscaling para oferecer mais efeitos visuais, enquanto outros preferiram usar as melhorias no processador para entregar 60fps a 1080p.

O que a Microsoft restringe para os developers é que todo jogo que oferecer opções de qualidade visual e performance, deverão fazer para todas as opções de resolução suportadas. Isso não quer dizer que se um jogo optar por oferecer uma opção 60fps em 1080p ele vai ter que ser obrigado a rodar a 4K e 60fps, mas sim que ele vai ter que dar essa opção mesmo se a pessoa estiver com o console configurado para 4K, mas nesse caso, mesmo um upscale direto de 1080p para 4K seria válido.

Outro requerimento muito importante, é que em hipótese alguma, independente da resolução e qualidade um jogo no Scorpio pode rodar pior que no Xbox One base. O framerate mínimo aceitável é o mesmo do Xbox One, e é um dos principais motivos que o devkit do Scorpio permite analisar a performance simultaneamente do Scorpio, Xbox One e S.

Pela performance que aparentemente a Microsoft já está esperando e tão antes do lançamento do console, nós acreditamos que vamos ver versões bem equivalentes ao PC no máximo por um bom tempo no Scorpio, possivelmente com algumas otimizações para entregar isso como soluções de AA customizadas, alguns efeitos como sombras e transparências com resolução um pouco menor etc, além do framerate original do Xbox One, enquanto no PC pode-se chegar a 60fps e uma qualidade de imagem ainda mais impecável. O que seria um feito impressionante para um console.