O Playstation 4 e o Xbox One são comumente referenciados pelos seus processadores de oito núcleos. Enquanto isso tecnicamente descreve o número de núcleos que os consoles possuem, não é uma maneira precisa de medir quanto deles estão realmente disponíveis.
A Sony e a Microsoft reservam um certo número dos núcleos para o sistema operacional enquanto roda os jogos, no Xbox One, a MS reserva apenas um núcleo, enquanto que a Sony, historicamente reserva dois núcleos no Playstation 4. Isso agora mudou, uma alteração nas notas de atualização de 17 de novembro menciona uma nova habilidade em habilitar o sétimo núcleo, antes bloqueado, no PS4.
São notícias interessantes em uma perspectiva técnica, desde que os desenvolvedores tenham acesso a esse gás extra na performance, mas será que veremos melhorias dramáticas na taxa de frames por segundo ou na jogabilidade?
A performance do processador no Xbox One e PS4
A Microsoft disponibilizou o Xbox One com o sétimo núcleo acessível e uma velocidade de processamento maior (1.73GHz contra os 1.6GHz do PS4). Uma vez que os dois consoles usam o mesmo processador, a combinação de um processador com um clock maior (8% mais rápido) e um núcleo extra (1.16x mais núcleos) deve dar uma vantagem ao Xbox One em cenários de jogos se o processador for o gargalo.
Ao invés, estamos vendo o oposto. Lançamento após lançamento, o Xbox One sempre é confirmado com uma resolução mais baixa do que o PS4. As vezes isso significa um estático 900p contra 1080p, enquanto alguns jogos usam resolução dinâmica e fazem escala por várias configurações para manter altas taxas de frames por segundo. Mesmo nestes casos, o Xbox One é invariavelmente a plataforma que cai para uma resolução global inferior.
Adicionar mais núcleos ao processador de um sistema só melhora o desempenho se o sistema é capaz de aproveitá-los, e isso se torna mais complicado quanto mais núcleos que você tem. Há uma lei geral de informática, conhecida como lei de Amdahl, que descreve a quantidade de desempenho teórico que pode ser adquirida através da adição de núcleos de CPU adicionais.
- A velocidade de um programa usando múltiplos processadores em computação paralela é limitado pela fração sequencial do programa. Por exemplo, se 95% do programa pode ser paralelo, teoricamente o velocidade máximo usando computação paralela seria 20× como apresentado no diagrama, não importando quantos processadores estão sendo usados. Fonte Wikipédia.
A lei de Amdahl afirma que uma porção em série de uma carga de trabalho (aquela parte da tarefa que deve ser executada em um único processador) controla em última instância como a paralelização pode ser útil em qualquer situação dada.
Se 95% de uma carga de trabalho pode ser feita em paralelo, então, movendo de 2 núcleos para 8 núcleos vai melhorar o desempenho 3x mais(de 2x para 6x). Se apenas 50% da carga de trabalho pode ser paralelizada, quadruplicando o número de núcleos de um processador tem apenas um impacto modesto sobre o desempenho.
Motores de renderização de jogos modernos são projetados para manter múltiplos trabalhos ao mesmo tempo, como discutido nesta apresentação em Killzone: Shadow Fall. Este slide ilustra a dificuldade em manter a CPU devidamente equilibrada: Enviando mais blocos em uma tarefa não é útil, cargas de trabalho e atribuições de memória devem todos ser devidamente equilibrados.
Esta apresentação é velha o suficiente para não tirarmos conclusões precipitadas sobre Sony, de agendamento de segmento ou comportamento de execução, uma vez que as áreas do chip já devem ter evoluído ao longo do tempo, mas é informação suficiente para ilustrar que apenas adicionar mais núcleos em um console não garante um melhor desempenho.
Não estamos dizendo que ninguém vai tirar proveito dos novos recursos da CPU, mas é pouco provável que faça uma grande diferença no desempenho entre os dois consoles. Todas as evidências disponíveis sugerem que é a largura de banda de memória do Xbox One limitada e a GPU menor que dificultam o seu desempenho em comparação com o PS4.
É importante lembrar que a visão original da Microsoft para o Xbox One em colocar uma grande quantidade de recursos para Kinect 2, assumindo que os jogadores que valorizam os adicionais o suficiente para pagar US$ 100,00 a mais para incluí-la. Quando essa aposta não conseguiu pegar, a MS deixou um console que tinha recebido uma parcela muito menor de dólares de desenvolvimento do que seu rival.
As estatísticas básicas do PS4 e Xbox One tornam improvável que qualquer console será fundamentalmente um passo a frente do que o outro, mas com rumores de novos consoles aparecendo tão cedo quanto 2018, podemos ver as duas empresas disputando posicionamento diferente em um futuro não muito distante.
Fonte: Extreme Tech.
Glossário:
- Malloc: é um termo da computação que designa uma função da biblioteca padrão das linguagens de programação C e C++ para requisitar alocação dinâmica de memória. É uma forma abreviada de escrever memory allocation (alocação de memória). Fonte: Wikipédia
- Spinlock: A estrutura SpinLock é uma primitiva de sincronização de baixo nível de exclusão mútua que gira enquanto aguarda adquirir um bloqueio.Em computadores multicore, quando o tempo de espera são estimados curtos e quando a contenção é mínima, SpinLock pode executar melhor do que outros tipos de bloqueios.No entanto, é recomendável usar SpinLock somente quando você determinar, por meio de perfis, que o método System.Threading.Monitor ou o método Interlocked estão reduzindo significativamente o desempenho do seu programa. Fonte: Microsoft.
- SPU(Synergistic Processor Unit ou Unidade de Processamento Sinérgico). Elemento da arquitetura do processador que tem a função de prover um grande registro de arquivos, simplificar a geração de códigos, reduzir o tamanho e a potencia de consumo de energia unificando os recursos e simplificar a decodificação e despacho de dados. Fonte: IBM