O SSD nas consolas foi um passo decisivo na resolução de um sério problema do PC. O SSD da PS5, em particular foi revolucionário, mas o certo é que tanto a solução da Sony como a da Microsoft resolveram um problema existente na altura, que era a incapacidade dos sistemas em lidarem com grandes fluxos de dados.
Quando a Sony e a Microsoft, em 2020 lançaram as suas consolas, estas estavam em desenvolvimento já há pelo menos 4 anos. E nessa altura a Sony que desenvolvia a PS5, tal como a Microsoft que na altura desenvolvia a sua Xbox Series, depararam-se com um problema: As máquinas existentes no mercado não estavam desenhadas para a recepção de grandes fluxos de informação, sendo incapazes de lidar com os mesmos.
Com a Xbox e a PlayStation a apoiarem-se em hardware PC, estas empresas constataram que o PC era incapaz de lidar com elevados fluxos de informação em leitura constante e sequencial. Basicamente ao longo dos anos o PC tinha começado a apoiar-se em uma pool de RAM de largas dimensões que continha a totalidade dos dados, carregados antes do jogo se iniciar, não sendo assim dependente de elevadas taxas de transferência fosse de discos ou dos SSDs, para manter a informação atualizada.
Já as consolas não podiam ir por aí. O ter 16 GB de RAM mais 12 GB de memória vídeo, como acontecia com os PCs Gamers da altura era um custo elevadíssimo para uma consola, pelo que uma solução que permitisse às consolas o uso de um streaming de elevado rendimento capaz de refrescar o conteúdo de apenas 16 GB para o GPU+CPU, era algo que tinha de ser desenvolvido.
E nesse sentido, tanto Sony como Microsoft colocaram mãos à obra, sendo que os possuidores de PCs terão de agradecer este desenvolvimento, particularmente o do lado da Microsoft, cuja solução acabou por se arrastar aos PCs, pois caso contrário o problema persistiria e o PC ainda seria incapaz de lidar com grandes fluxos de informação, continuando a apostar nas grandes quantidades de RAM para resolver os seus problemas.
Mas estamos a colocar a carroça à frente dos bois. Vamos continuar a abordar o problema que as consolas enfrentaram.
Todos sabemos que as consolas não são PCs de topo, mas sim sistemas económicos bastante competentes naquilo que fazem, e que se distinguem por um suporte e optimização dedicados. E nesse sentido apareciam dois problemas às mesmas:
- A necessidade de uma pool de memória elevada.
- Os elevados tempos de loading que jogos de nova geração iriam trazer.
Estes dois problemas seriam teoricamente resolvidos com a presença de um SSD nas consolas, mas este, mesmo assim, na altura não resolvia o principal problema. A incapacidade do hardware em lidar com grandes fluxos de informação.
E pior ainda, da mesma maneira que as consolas tem de poupar na RAM, com a introdução do custo de um SSD, estas tinham de poupar igualmente na sua capacidade, pelo que necessitariam de comprimir os dados mais do que o normal, dificultando ainda mais a obtenção dos mesmos em tempo real e em elevada quantidade.
Assim, ambas as marcas conceberam uma solução.
A da Microsoft acaba por ser a mais interessante, não porque seja a melhor ou mais capaz, mas porque foi a que se estendeu aos PCs, e que lhes permite agora performances que de outra forma seriam impossíveis.
Basicamente o PC, tal como a PS4 e Xbox One, descomprimiam os dados do disco usando o seu CPU. Tal implicava um nível de compressão baixo, mas igualmente uma leitura sequencial igualmente baixa. Este problema foi sendo superado no PC com força bruta, basicamente à custa de memórias cada vez mais rápidas e CPUs cada vez mais potentes. Mas as consolas tem um hardware fixo durante 8 anos, que teria de acompanhar também a evolução dos jogos, pelo que não podia contar com melhorias no hardware como o PC.
A solução da Microsoft para este problema passou pelo DirectStorage, onde basicamente a tarefa de recepção e tratamento dos dados é passada para o GPU. Uma solução que, apesar de não ser “gratuita” no uso de recursos do hardware, tem um impacto negligenciável no CPU e GPU, ao passo que se fosse efetuado apenas pelo CPU, este seria esmagado pela carga de trabalho a efetuar apenas com a recepção de dados.
A solução da Sony foi mais longe. Não se tendo de preocupar em executar o mesmo código na consola e no PC, a solução da Sony foi mais complexa, tendo criado todo um sistema de I/O dedicado para a sua consola que resolveu esse problema, mas igualmente outros existentes no PC.
Assim, a Sony usa uma memória tampão que recepciona os dados e os descomprime em tempo real, entregando-os ao sistema já tratados. Este sistema não usa recursos do hardware da consola, e é mais capaz, o que permitiu um SSD mais rápido e capaz que o da Xbox. Segundo a Sony, a capacidade desde sistema dedicado equivaler-se-á a um CPU Zen 2 de 9 núcleos dedicado à descompressão.
Quando do lançamento das consolas, este sistema da Sony era revolucionário e sem paralelo, mesmo no PC.
Um dos que duvidaram da capacidade do sistema da PS5 foi Linus Thorvald do Linus Tech, que fez um vídeo onde pegava num CPU AMD Threadripper de 64 núcleos e um SSD de alta performance propondo-se passar os 5 GB/s da PS5 em velocidade sustentada.
Escusado será dizer, pois isso já é história, que falhou miseravelmente, tendo feito posteriormente um novo vídeo onde pedia desculpas por ter duvidado de que o sistema da Sony não tinha paralelo no mercado.
A situação, quatro anos depois, é já bem diferente. O PC com o Direct Storage começou a expandir-se. Os SSDs de PC hoje batem os da PS5, e a capacidade de descompressão dos GPUs atuais, mas se algo mudou, às consolas se deve, pois foi a sua necessidade de otimizar os recursos para um hardware de menor custo que levou a que estas alterações existissem.
No entanto há que se referir que o sistema de I/O da PS5 ainda hoje é revolucionário pois introduziu duas outras situações que ainda hoje são problemas no PC, e apenas superados pela força bruta.
- Os Cache Scrubbers permitem reduzir os tempos de paragem do GPU por stall, bem como otimizar o processamento do GPU.
- Os motores de coerência permitem reduzir a largura de banda da RAM, permitindo uma eficiência equivalente com uma largura de banda inferior.
A questão é que estas duas situações não se revelam castrantes no PC como era o caso do tratamento de grandes quantidades de dados, sendo mais interessantes na perspectiva de redução de custos nas consolas, do que outra coisa.
Assunto interessante, vejo muitos “Especialistas” na Internet que falam dos consoles com um certo desdenho, fazem comparação direta PC com console e não entendem as particularidades e as especificidades que o console precisa ter para conseguir um custo / benefício que o torne viável. Já vi aqui mesmo na PCmanias o Senhor Mário tentar explicar para interlocutores desatentos aos fatos a razáo de consoles serem diferentes de PCs, a começar pelo preço. Vivemos na era da informação, mas muitos que informam não estão devidamente informados.
O que noto de longa data é que a maioria das pessoas só quer justificar suas escolhas. Hoje, quase todos tem PC em casa pra trabalhar, muitos podem se dar ao luxo de ter um PC bom o suficiente pra jogar, mas me soa muito estranho quando alguém vem falar de PC como bom custo/benefício pra jogar, porque óbvio que PC trazem inúmeras vantagens, mas pra jogar, também traz seus incovenientes e preço é uma delas. Mas entendo perfeitamente quem prefira PC a consoles. Não é mais pra mim, embora vez por outra eu ainda jogue algo por lá, não tenho animo pra melhorar meu PC tão cedo, as MB AM5 estão caríssimas, assim como processadores e GPU do meu interesse (7800xt, 4070s). Mais fácil eu comprar um PS5 Pro e vender meu PS5 Fat mesmo.
Acho que é questão do preço dos jogos e opções. Tem muita coisa menor que não vai para o console e quando vai tem o problema do preço Sony.
Outro ponto é que até o ano passado, a galera trazia muita coisa da China. Em 2022 montei um 5600 + 32 Gb 3200 + mobo + fonte 750w + ssd 1tb + gabinete por 2k. E Gpu usada de mineração era muito barato. Se não me engano uma 3070 era 1500 reais. Ou seja, um PC descente custava 3,5k. Menos que um ps5 na época. Evidente que tinha seus riscos, mas a galera montava tudo assim.
Só para complementar. O aliexpress ainda dividia em 6x + frete grátis. Não tinha como competir. Era literalmente um negócio da China.
Hennan, mas é algo com muitos poréns e pra quem entende, certo. O PC tem seu valor, pode muito mais, mas quando vejo colegas, por vezes, falarem de notebook gamer, por exemplo, pra mim tira metade das vantagens de um PC, que é justamente poder fazer um upgrade progressivo aos poucos. Do jeito que o upgrade é pra um note, é pra um console, basicamente, salvo pela memória e placa de rede, todo e qualquer outro upgrade num note é quase impossível pra além do que pode num console, mas entendo que o PC tenha vantagens sobre os consoles, principalmente pela imensidão de bibliotecas e maior concorrência entre lojas trazendo melhores preços, no geral, ao menos no Brasil que trata tributariamente jogo de console diferente de jogo de PC. A questão é que tem desvantagens também, e montar um PC já é uma delas.
Sem dúvidas. Só comentei pra mostrar que existia um cenário complexo em que através da sonegação, o PC ainda tinha um preço viável. Mas hoje nem isso.
Acho SSD uma das melhores novidades dessa geração. Pessoal só sabe reclamar mas não lembra que os loadings estão rápidos ou inexistentes. Geração passada tinha jogo que o primeiro loading eram minutos.
Off: olha aí o adorably all digital.
https://twitter.com/DoesItPlay1/status/1777610735243161639?t=hbYtbWJGrI7ZZ9_worhndg&s=19
Eu tenho algumas coisas digitais de 360, como Forza Horizon 1 e The Witcher 2, será que vai tudo pro saco mesmo? De lascar!
Tem que ver direito. Talvez se vc já tenha comprado, pode ser que ainda tenha direito. Mas você tem Xbox 360?
Tenho o Xbox One e jogos de 360 que rodam nele.
Se vc comprou, poderá baixar.
Off:
Tu programas em Python Hildo?
Se sim. Eis uma questão simplificada:
Imagina este código (vou meter tudo entre aspas senão a pcmanias rejeita o comentário):
“Peso=int(input(“Introduza o seu peso em KG:”))”
“print(“o seu peso em Júpiter é”,Peso*1.14)”
Se eu introduzir peso 100, o resultado deveria ser 114.
Mas a não ser que eu escreva o seguinte código:
“Peso=int(input(“Introduza o seu peso em KG:”))”
“PesoJup=round(peso*1.14,2)”
“print(“o seu peso em Júpiter é”,PesoJup)”
O resultado será 113.99999999 em vez de 114
Porque raio?
Não sou programador, mas sou um curioso, Mário, e provavelmente não responderei suas dúvidas, mas gostaria de saber:
Se no primeiro caso imprimes só o “Peso” sem a operação de multiplicação após o input,i o que sai na tela, 100 ou algo como 99.99999999, Mário? Pergunto isso pra sabermos se é algum problema na conversão do input para int/float ou se é um erro posterior na operação aritmética mesmo.
Se você só declarar o Peso numa linha posterior novamente, antes de printar na tela, o problema persiste printanto depois?
No primeiro caso, colocando Peso*1.14 dentro de um int(), já não resolveria o problema?
Mário, eu li em alguns lugares que o Input gera uma String (que vem entre aspas) e essa precisa ser tratada antes de fazer as operações pra evitar erro, talvez essa seja uma possível causa do problema, o input não conseguir ser transformado para um int de imediato, gerando problemas de precisão e talvez precise desse tratamento apenas em momento posterior ao recebimento na variável.
Talvez fosse melhor só criar o int do peso após receber a string, tipo Peso = input e só numa linha posterior declarar novamente o peso só que dessa vez fazendo a conversão em momento posterior. Peso=int(Peso), por exemplo.
Mas estou só a levantar hipóteses, não sou programador.
Encontrei isso aqui também que talvez explique a situação da operação não trazer um número inteiro como resultado.
https://docs.python.org/pt-br/3.8/tutorial/floatingpoint.html
Na documentação do Python diz o seguinte:
“Infelizmente, muitas frações decimais não podem ser representadas precisamente como frações binárias. O resultado é que, em geral, os números decimais de ponto flutuante que você digita acabam sendo armazenados de forma apenas aproximada, na forma de números binários de ponto flutuante.”
Como você faz uma operação com ponto flutuante (multiplica por 1.41), talvez isso explique a questão.
Está explicado…
Mas que raio de coisa estranha. E que pode arruinar um código
Questiono o que acontece se de seguida eu fizer algo assim:
“PesoJup=Peso*1.14”
“if_PesoJup==114:”
E iniciava aqui uma sequência if else
Será que o valor chegava aqui correto?
Amanhã tiro a limpo.
PS: Tive de meter um underscore no if senão a PCManias detecta como código e rejeita.
Provavelmente não, mas só testando pra ter certeza, talvez seja melhor sempre meter o round quando se tratar de operações com float se quiser um inteiro. Se for uma linguagem nova pra ti, melhor ir debugando, pois só o tempo pra nos dar uma melhor rotina de programação, evitando esses incovenientes que às vezes são próprios de uma linguagem.
Sim… Eu estava a aproveitar que necessito de reprogramar e ajustar um software antigo e a aprender Python. De repente meto uns resultados temporários no ecrã… E sai-me aquilo.
O valor da variável de input sai correta. Mas a multiplicação não!
Quando isto me aconteceu pensei estar perante uma bug do FPU, tal como aconteceu antes no Pentium. Mas isso seria impossível pois só acontece aqui.
A questão é a explicação que o Juca mandou no link da documentação do python. Falta de precisão do ponto flutuante. Eu já estudei isso a muito tempo, mas existem vários casos que podem dar resultados estranhos. Um muito clássico é somar dois números grandes e o resultado ser negativo ( overflow).
Pfff… Qual será a melhor forma de superar isso. Estava tão entretido a converter e a ajustar um antigo programa para Python e surge-me isto…
Se bem que no JavaScript já me tinha deparado com problemas mesmo com inteiros.
Por exemplo console.log(9332654729891549) na realidade escreve 9332654729891548.
Para já acho que sempre que usar floats vou arredondar a 2 casas decimais, e/ou multiplicar por 100 antes da operação, dividindo novamente depois.
Você pode usar a classe decimal do python.
No link abaixo tem uns exemplos.
https://stackoverflow.com/questions/9232256/round-up-to-second-decimal-place-in-python
Na minha ferramenta tive que usar isso. Pois quando queria mostrar o frame time de 1/60 sempre ficava 16.67 mas eu queria mostrar 16.66
Eu já usei isso! Foi a solução que encontrei!
A questão é que usei porque me apercebi do erro… E o meu receio é que numa outra altura possa estar com um programa já complexo e não perceba de onde o erro vem.
Mas das duas uma, ou arredondo a duas casas decimais, ou multiplico por 100 e trabalho com inteiros, dividindo depois por 100 novamente.
Days Gone no PS4 tinha o primeiro load que superava os 3 minutos
quero saber do jogo em primeira pessoa, que quando vc gira a câmera faz streaming em tempo real dos dados
a hora que sair um jogo assim vou comprar no lançamento mesmo que seja um “the order” do PS5.
Que papo é esse, Deto? Lol
É o papo de uso do SSD e do GE do Ps5, que usando ambos nas suas capacidades totais a renderização se torna tão rápida que só é preciso carregar o que tá no campo de visão do jogador, melhorando grafismo. Cerny falou em Road to Ps5.