Sempre que sai uma nova consola é costume compararmos a mesma a um PC uma vez que as diferenças das arquitecturas não permitem comparações directas e como tal torna-se difícil a avaliação de performances. Com a PS4 tal não parece ser verdade uma vez que a arquitectura usada deriva da do PC. Mas será bem assim?
A Playstation 2 possuía uma pequeno processador RISC a 300 MHZ. Comparativamente aos PCs que existiram na altura da vida útil da consola e que atingiram velocidades de 2,5 Ghz, a PS2 parecia possuir muito pouca potência.
No entanto o Emotion Engine que a equipava não partilhava a mesmo arquitectura usada nos PCs. A consola, dotada de apenas 32 MB de RAM, algo que na altura era igualmente muito pouco comparativamente ao usado nos PCs, conseguia acompanhar, com maiores ou menores diferenças gráficas, os PCs da sua época.
As justificações para tal eram basicamente duas: Um hardware diferente e que não pode ser comparado ao MHz, e uma arquitectura criada para funcionar igualmente de forma diferente. E para explicarmos a questão da arquitectura vamos voltar a falar da velha questão dos tubos e dos baldes.
A arquitectura usada nos nossos PCs sempre sofreu de um grave problema: A limitação de larguras de banda nos canais de comunicação entre os diversos componentes. Na altura da PS2, apesar de os PCs possuírem processadores mais rápidos, maiores memórias e placas gráficas mais poderosas, os canais de comunicação entre os componentes já sofriam do problema de sempre: Falta de largura de banda.
Efectivamente o PCI, o canal de comunicação mais comum da altura, e mesmo o AGP, o canal de comunicação mais rápido existente na época e utilizado para fazer comunicar o CPU e o GPU, eram bastante lentos como o comprova a tabela que se segue:
Versão | Velocidade | Transferência(MB/s) | Frequencia (MHz) | Voltagem (V) | |
---|---|---|---|---|---|
PCI | – | 133 | 33 | 3.3/5 | |
AGP 1.0 | 1× | 266 | 66 | 3.3 | |
AGP 1.0 | 2× | 533 | 66 | 3.3 | |
AGP 2.0 | 4× | 1066 | 66 | 1.5 | |
AGP 3.0 | 8× | 2133 | 66 | 0.8 | |
AGP 3.5 * | 8× | 2133 | 66 | 0.8 |
Mesmo o PCIExpress, actualmente em uso, não veio resolver nada. Desde essa altura até aos dias de hoje a capacidade das memórias dos PC’s aumentou tremendamente e, comparativamente, os valores de transferência, face à memória disponível, mantêm-se extremamente baixos. Por exemplo, o PCI Express 1.0 possuía uma capacidade de 250 MB/s por pista, o que quer dizer que com uma Slot 16x a sua capacidade máxima de transferência era de 4 GB/s. No PCI Express 2.0 esse valor duplicou para 500 MB/s por pista, aumentando a transferência para 8 GB/s, e com o PCI Express 3.0, actualmente usado, o valor aumentou para 1 GB/s por pista, ou seja um total de 32 GB/s numa Slot 32x (entretanto criada).
Mas voltado a 1999, nessa altura mesmo as placas gráficas PC da altura da PS2 deixavam muito a desejar na sua largura de banda interna. Uma 3DFX Voodoo 2, na altura um exponente máximo do grafismo PC possuía uma largura de banda interna de acesso à sua RAM de 2,1 GB/s. E uma Geforce 256 DDR, a primeira placa gráfica com T&L apenas possuía uma largura de banda interna de 2,7 GB/s.
Assim, se referirmos que em 1999, a PS2 possuía um bus interno de comunicação capaz de 2,4 GB/s entre o CPU e os seus dois co-processadores vectoriais, 3,2 GB/s de acesso à sua RAM e 1,2 GB/s de acesso à componente gráfica, e que a sua memória gráfica de 4 MB, possuía uma largura de banda interna de 48 GB/s, rapidamente percebemos que a PS2 estava muito melhor equipada para colocar todo o seu hardware em comunicação sem restrições do que os PCs da altura.
Por outras palavras, e usando a comparação que tanto gostamos, se a arquitectura x86 dos PCs possui “canos” de comunicação de pouca capacidade e compensa usando “Baldes” (memórias) com elevadas capacidades nos extremos da tubagem (RAM geral e memória gráfica), a arquitectura concebida para PS2 possuía baldes pequenos, mas tubos com largura suficiente para mover os dados rapidamente sem qualquer constrangimento. Ou seja, não era preciso muita memória pois os dados podiam ser retirados e processados das mesmas muito rapidamente.
E esta filosofia manteve-se na Playstation 3 lançada em 2006. As larguras de banda conjunta dos dois Bus de comunicação existentes para comunicação entre componentes passavam os 40 GB/s (mais que o actual PCIe 3.0 oferece), mantendo-se as memórias reduzidas.
Mas eis que surge o anuncio da PS4, e a filosofia muda. A arquitectura é agora x86 e o hardware é igualmente idêntico ao usado nos PCs. Assim sendo parece que pela primeira vez podemos usar a metodologia tradicional de comparação entre PCs e dizer que a PS4 é na realidade um PC com pouca capacidade de processamento. Mas será que realmente podemos?
Desenganem-se! A consola usa tecnologia x86, mas a mesma foi radicalmente alterada de forma a inovar e remover todas as limitações até agora existentes e reconhecidas a essa plataforma. Basicamente a Playstation 4 não vai ter “baldes” largos nem pequenos, e não vai ter “tubos” largos nem pequenos. Comparativamente a Playstation 4 será toda ela uma “piscina” onde a “água” está em todos os lados e chega a todos os componentes sem limites.
Uma análise à realidade dos PC’s mostra que devido às limitações de largura de banda dos canais de comunicação, apenas cerca de 1% dos dados gerados na memória usada pela placa gráfica e dos dados gerados na memória usada pelo CPU, são partilhadas. É uma limitação física imposta pelas baixas larguras de banda dos canais de comunicação PCIe que são muito inferiores às larguras de banda internas das RAMs, impedindo assim colaborações entre os dois componentes a um nível intrínseco e elevado. Mas com a Playstation 4 essa situação não acontecerá, e pela primeira vez, TODO o conteúdo da RAM poderá ser acedido livremente por ambos os componentes que podem agora colaborar a um nível nunca antes possível.
Para tal a Sony concebeu a consola pensando na forma ideal de criar uma plataforma onde CPU e GPU funcionassem 100% em conjunto. E para tal viu como necessidade o optar por colocar em todo o sistema memória GDDR5, a memória usada nas placas gráficas, mais rápida e mais cara que a tradicional DDR3 usada pelos CPUs, e que seria acedida pelos dois processadores (gráfico e genérico). Desta forma não só elimina completamente todas as restrições de larguras de banda impostas pela RAM tradicional ao processador central e GPU, como cria uma estrutura unificada onde o CPU e o GPU partilham totalmente toda a RAM. E isto é uma novidade até hoje inexistente, e que deverá permitir situações que até hoje nunca foram possíveis em PCs, integrando o CPU e o GPU de formas nunca antes concebidas e em entreajuda mútua, e com uma largura de banda de 176 GB/s.
A acreditar no que tem vindo a ser dito, curiosamente a Microsoft não optou por esta situação. Manteve dois tipos de RAM diferentes, uma DDR3 mais lenta, e uma memória cache de 32 MB de alta velocidade (ESRAM) para compensação. Auxiliou igualmente o acesso a essa RAM, de forma a eliminar restrições, com alguns chips aceleradores que aumentam a largura de banda. O resultado final, apesar de inferior, é algo semelhante ao usado na PS4, mas com uma complexidade técnica muito superior e que se reflectirá em complexidade de programação. Mas acima de tudo acaba por manter separado o CPU e o GPU não permitindo a interacção que será possível na Playstation 4.
Curiosamente a solução da Microsoft, bem como algumas intermédias foram igualmente ponderadas pela Sony que acabou por as abandonar pelas restrições causadas no seu conceito de interacção total entre CPU e GPU.
Basicamente a arquitectura da PS4 é uma arquitectura PC que, mais do que melhorada, é eliminada das restrições dos canais de comunicação existentes. A consola foi desenhada para oferecer ganhos significativos onde a arquitectura PC, pelos limites físicos impostos pelo PCIe, não consegue, oferecendo mesmo assim um ambiente de programação em tudo semelhante ao que os PCs oferecem.
Mas para conseguir esta visão a mudança de RAM não era suficiente. O hardware PC, mais especificamente o GPU nunca foi pensado para este tipo de colaboração de partilha aberta de dados com o CPU, possuindo assim outras barreiras a esta implementação, e para conseguir a sua visão a Sony teve de fazer várias mudanças no hardware gráfico que equipa a Playstation 4.
Normalmente um GPU possui dois canais de comunicação. Um que é usado para o GPU aceder à sua memória, e outro que é usado para o ligar ao PCI Express e aceder à RAM geral. A questão é que os caches da GPU colocam entraves a esta comunicação com a RAM geral uma vez que sempre que o GPU escreve dados que quer que o CPU veja, ou que o GPU leia dados que o CPU criou, há que realizar limpezas das caches internas, e isso são operações penalizadoras a nível de ciclos, tornando-se assim lentas e impedindo que CPU e GPU possam comunicar livremente ao nível que a Sony pretendia.
Para resolver o problema a Sony realizou três alterações naquilo que é a arquitectura normal de uma placa gráfica de PC:
- A primeira alteração passou por acrescentar um terceiro canal de comunicação que permite ao GPU aceder à memória do sistema sem passar pelas suas caches. Assim, os dados podem passar entre os dois processadores principais sem problemas de comunicação. E este canal acrescenta à placa gráfica uma largura de banda para este tipo de operações especificas de comunicação directa com o CPU de 20 GB/s, ou seja é superior à largura de banda oferecida pelo PCIe 2.0 16x.
- No uso dos restantes dois canais de comunicação tradicionais a Sony reduziu as limitações impostas pela limpeza das caches. Para tal mexeu nas caches criando a possibilidade de serem marcadas partes da mesma e permitindo assim um acesso selectivo ao seu conteúdo sem necessidade de limpeza. Esta situação permite agora usar estes canais para colocar a placa gráfica em processamento genérico sem afectar o de forma significativa as operações gráficas que ocorram em paralelo. Por outras palavras, a Sony criou uma forma de reduzir significativamente a sobrecarga colocada na placa gráfica quando há processamento genérico e gráfico a ocorrer no GPU em simultâneo.
- Finalmente, e não menos importante, a arquitectura AMD usada em todas as placas gráficas PC permite a aceitação de uma fonte de comandos gráficos e duas fontes de comandos genéricos a ocorrerem em simultâneo. Mas a Sony alterou igualmente essa situação aumentando as fontes de comandos genéricos para 64. Ou seja, com estas alterações o GPU irá realmente fazer muito mais do que gráficos na PS4, e tudo isso sem afectar a sua performance nesse campo. A Sony refere ainda que criou na placa vários níveis de arbitrariedade que permitem ao hardware decidir o que executar, quando executar e como executar, de forma a não prejudicar o cálculo gráfico e performances gerais.
Estas alterações são situações que nunca foram previstas nos PCs e que são limitações existentes nos mesmos desde que a arquitectura x86 começou a usar GPUs. Assim, como pode ser visto, comparar uma Playstation 4 a um PC apenas baseado-se nas especificações do hardware é, uma comparação demasiadamente simplista, uma vez que a consola possui uma arquitectura que lhe permite puxar pelo hardware de formas bem superiores às que a arquitectura x86 permite.
No entanto, apesar de as alterações que já vimos se revelarem como profundas e significativas para o aumento do desempenho e performances do sistema, bem como na forma de uso do mesmo, há mais alterações na consola que a tornam num super PC. E algumas delas vieram directamente de conceitos da sua irmã mais velha, a PS3.
Como sabemos, o processador Cell usado na PS3, apesar de complexo e difícil de programar é de uma versatilidade e potência extrema. E os seus SPUs são rápidos o suficiente para intervir no processamento gráfico e não é incomum o Cell ser usado para simplificar determinados trabalhos gráficos complexos e que roubariam extrema performance à placa gráfica, tornando-os em trabalhos mais ligeiros e que podem ser realizados sem grande carga do GPU. E este conceito foi transportado para a Playstation 4, mas sem o uso dos SPUs.
Dado que todo o conceito da PS4 passa por impedir o congestionamentos de comunicação/processamento que pudessem abrandar a consola e o problema mais comum, o congestionamento da memória e da comunicação entre GPU e CPU foi resolvido com o uso da GDDR5 partilhada por todo o sistema, bem como pelas alterações já indicadas, o conceito acima referido e proveniente do Cell foi usado para minimizar o segundo factor considerado como principal causa de congestionamentos num sistema, o excessivo número de vértices numa cena.
Na realidade há várias formas de reduzir este problema, sendo que a maior parte passa por uma boa gestão do que é colocado em cena. Se o que vemos são milhões de triângulos de 1 único pixel que saturam a cena, o que se pode pedir é que a cena seja recriada usando menos triângulos e de maiores dimensões. Mas essa é uma questão de optimização e boa programação que passa apenas pelos programadores.
No entanto, a Sony optimizou a sua consola para ajudar a superar esses problemas. E para isso implementou várias melhorias adicionais no hardware ao alterar o mesmo para poder misturar a capacidade de processamento genérico do GPU com a sua gestão gráfica interagindo um com o outro sem a necessidade do CPU.
Para isso implementou no GPU alterações a nível do firmware e hardware, bem como do seu compilador interno. Com estas alterações, os triângulos (vértices) de uma cena são compilador duas vezes, uma como um compute shader, outra como um vertex shader. Esta metodologia permite usar o compute shader como um crivo e verificar se os triângulos são realmente visíveis da perspectiva do utilizador, reduzindo-se assim o número de triângulos que o vertex shader usa. Tudo isto é realizado sem penalizações para o hardware permitindo trazer poupanças significativas nos cálculos e na colocação desnecessária de vértices no ecrã. Mas para isso o compute shader e o vertex shader tiveram de ser intimamente ligados no hardware, algo que não existia.
Como se pode constatar a PS4 de PC apenas possui a semelhança na arquitectura. Na realidade a consola é efectivamente um Super PC pensado para não possuir restrições à performance do hardware. O que a consola poderá dar está apenas limitado pelas capacidades físicas do hardware e não por restrições nas comunicações. E esse é actualmente o maior problema existente nos PCs onde normalmente o hardware se vê limitado pelas performances dos restantes componentes e da capacidade em comunicar com eles.
Mas mais ainda, os componentes da consola podem interagir a um nível que nos PCs é actualmente impossível.
A consola possuirá ainda vários processadores adicionais dedicados. Por exemplo, teremos um processador dedicado que tratará de tarefas em segundo plano, bem como um outro que permitirá a descompressão de video e audio por hardware em tempo real e sem penalizar os processadores principais. Existirá ainda um processador capaz de descomprimir/comprimir ficheiros Zlib em tempo real, permitindo assim a movimentação de dados comprimidos e a redução da ocupação das larguras de banda.
Vendo a PS4 pensamos é que talvez esteja é na altura de se repensar a arquitectura dos nossos PCs. E a PS4 é um bom exemplo do que se pode e deve fazer para a melhorar.