[Análise] Além da redução dos loadings nos SSDs: conheça um pouco da RAM virtual

#Artigo Publicado por carloseduardocd, em .

Saudações,

Microsoft e Sony apresentaram as especificações técnicas dos seus novos consoles. E uma das principais novidades envolve o uso de SSDs NVME tanto no console da Sony quanto da Microsoft.

É do conhecimento de muitos que essa novidade reduzirá o tempo de loading dos jogos, como já foi demonstrado em apresentações tanto da Sony, quanto da Microsoft. No caso da Sony, reduziram o loading do game SpiderMan de 8 segundos do Playstation 4 Pro para 0.8 segundos no Playstation 5. E também na Microsoft, reduzindo o loading do game State of Decay 2 de 35 no Xbox One X para 8 segundos no Xbox Series X.

O futuro uso dos SSDs nos novos consoles têm servido de polêmica, já que a Sony apresentou um modelo de SSD com velocidade consideravelmente superior à proposta da Microsoft. Neste caso, as diferenças apresentadas são de 5 a 5.5gb/s para o modelo da Sony contra 2.4gb/s para o modelo da Microsoft. Com isso, é natural que surjam questionamentos se toda essa diferença de performance dos SSDs irá acarretar apenas em loadings mais rápidos, ou se existe algum outro fator envolvido.

O objetivo deste artigo consiste em apresentar um novo recurso possível graças à inclusão dos SSDs nos novos consoles, que têm sido pouco comentado, entretanto poderá ser essencial na nova geração. Este recurso é a A RAM Virtual.

Já de antemão gostaria de deixar claro que a RAM virtual deverá ser aproveitada em ambos os consoles , porém o desempenho superior do SSD no Playstation 5 poderá acarretar em algumas vantagens.

O conceito de RAM virtual está associado à disponibilização de um espaço de endereçamento da memória RAM que excede o limite estabelecido pelo console. Como exemplo, se o console possui 10GB de RAM física disponível para jogos, o desenvolvedor irá trabalhar considerando que vá usufruir simultaneamente de mais memória RAM do que este limite estabelecido. A quantidade excedente se trata exatamente da memória virtual, que na nova geração de consoles estará alocada diretamente nos SSDs.

Para explicar melhor este recurso, precisamos entender como a memória RAM é usada nos jogos atualmente.

IMAGEaHR0cHM6Ly9jYXJsb3NlZHVhcmRveHAuZmlsZXMud29yZHByZXNzLmNvbS8yMDIwLzAzL3BzNDEuanBn

A Figura 1 demonstra de forma simplificada a arquitetura no console Playstation 4 lançado em 2013. Ao ligar o console, o Sistema Operacional é gradativente carregado para a memória RAM, ocupando cerca de 3 GB no Playstation 4. Suponha-se que o usuário deseja jogar o Game1, que possui espaço em disco de 100GB. Este amontoado de espaço incluem os polígonos dos personagens, cenários, cut-scenes, dentre outros. No mundo ideal, o desenvolvedor não gostaria de se preocupar com a limitação de espaço na RAM, e os 100GB estariam disponíveis simultaneamente na RAM, com cada informação sendo carregada via código-fonte no momento em que o desenvolvedor assim desejar.

Mas na prática não é assim que funciona. Um console como o Playstation 4 (PS4) possui 8GB RAM, com cerca de 5GB (4.5 fixo + 0.5 flexível) disponíveis para jogos e o restante para o Sistema Operacional. Então o desenvolvedor tem uma tarefa extra em garantir que cada trecho de gameplay não ultrapasse o limite da RAM física do console, (no caso do Playstation 4, de 5GB).

Então, esta dinâmica funciona da seguinte forma: quando um game se inicia, uma operação de loading é demandada para carregar até 5GB de dados para a RAM do console. E no decorrer do gameplay, loadings menores irão ocorrer, já que os dados que já estão na memória RAM não precisam ser carregados novamente. Serão carregados apenas novos dados demandados, subscrevendo os que não serão mais necessários para o game (por ex, uma cut-scene que já foi mostrada). Estes loadings ocorrem em várias situações em que não percebemos, inclusive durante a renderização de cut-scenes.

A grande questão é: seria possível o desenvolvedor usar mais memória RAM simultaneamente para algum jogo, excedendo o limite disponível pelo console?

Para que isso seja possível, deve-se disponibilizar uma memória em que o seu acesso seja rápido o bastante para não gerar gargalos em real time, no caso, in game. Para isso, o tempo de acesso deve ser compatível com os 176 GB/s que a RAM é acessada pela CPU e GPU.

No caso do Playstation 4, a única forma de exceder o espaço de endereçamento da memória RAM seria "pegando emprestado" uma parte da memória em disco, e usando como RAM. Entretanto, embora seja possível, não é algo viável. Os HDDs são muito lentos, neste caso, fui até otimista em colocar 0.1 GB/s, pois na prática, pode ser muito mais lento, pois o tempo de entrega dos dados oscila com a localização das informações dentro do HDD.

Resumindo, na prática os HDDs não são viáveis para se fazer uso de memória virtual in game real time.

IMAGEaHR0cHM6Ly9jYXJsb3NlZHVhcmRveHAuZmlsZXMud29yZHByZXNzLmNvbS8yMDIwLzAzL3BzNS5qcGc=

Na Figura 2, observa-se a arquitetura resumida do Playstation 5. Neste caso, embora o tempo de acesso aos SSDs sejam consideravelmente inferiores à taxa de transferência da RAM com a CPU e GPU, a diferença é pequena o bastante para considerar o carregamento de dados do jogo em real time.

Isso não quer dizer que os loadings deixarão de existir. O carregamento inicial do jogo é grande demais para ser feito em real time. Na prática, estamos falando de 13GB sendo carregados de uma vez. Entretanto, carregamentos menores que ocorrem durante o jogo já são viáveis de ocorrerem em real time. Isso significa, que durante o jogo, os desenvolvedores poderão considerar o uso de mais memória RAM simultaneamente, mesmo que fisicamente estejam limitados a 13GB.

Com isso, surgem duas perguntas:

1) O que isso impacta na prática? Especialmente em jogos mundo aberto, ao considerar um espaço de memória muito maior, pode-se fazer uso de muito mais objetos e cenários simultaneamente, com dados e informações sendo trocadas na tela em questão de milissegundos. Isso envolve uma mudança de paradigma ao desenvolver o jogo. É por isso que jogos das gerações anteriores somente irão usufruir de menor tempo de loading, pois ampliar o espaço de endereçamento envolve abrir código-fonte e alterar diretamente a arquitetura do software, no caso o jogo. E isso não se faz em poucos dias.

2) Qual a vantagem que o Playstation 5 terá em relação ao Xbox Series X? Se houver um grande carregamento de dados durante o jogo, a tendência é que o Playstation 5 tenha menos possibilidade de sofrer quedas de frames em real time devido à "atrasos na entrega" dos dados via SSD. Entretanto, como opinião pessoal, acho pouco provável que essa vantagem será vista claramente em jogos multiplataforma . Em jogos exclusivos, é bem provável que farão uso da maior quantidade de memória possível sendo trocada em realtime.

É isso, espero ter ajudado.

☠ Ayrton Senna
☠ Ayrton Senna #carloseduardocd

River Raid, Enduro, Super Mario World, Top Gear e Street Fighter 2. O restante foi consequência.