Por que o gpu sozinho não pode suportar a carga de gráficos; por que há necessidade de desempenho da CPU? [duplicado]

0

Apesar de ter uma GPU de ponta, existe sempre uma exigência de um CPU similar de gama alta para jogar jogos de gama alta.

Sem uma CPU igual ou equivalente, a GPU é como nada?

Por que jogar uma CPU deve ser uma necessidade, já que lida com cálculos. Uma GPU é aquela que lida com todos os gráficos do jogo.

Portanto, a GPU não deve depender da CPU para jogos.

    
por FrozenKing 04.10.2012 / 22:38

4 respostas

2

A GPU é um ótimo mecanismo para pequenas operações altamente previsíveis, o tipo de que é necessário aos milhares para pintar uma única imagem em uma tela (buffer de memória) para ser exibido em uma tela.

A GPU pode realizar centenas de operações em um único buffer de memória simultaneamente usando o que é conhecido como shader programs, isso é usado para deixar as imagens bonitas, adicionando recursos que tornam os jogos modernos tão impressionantes. O problema é que, devido a sua necessidade de alta velocidade e rendimento de dados, esses programas precisam ser continuamente alterados, apontados para novos dados e geralmente gerenciados.

Esta é apenas uma das coisas que uma CPU faz para jogos modernos. A placa gráfica faz com que pareça bonito, enquanto a CPU diz apenas como para torná-lo bonito. Muitos jogos de estratégia também exigem o rastreamento em tempo real de muitos milhares de objetos no jogo e o que esses objetos estão fazendo em qualquer momento.

Por exemplo, vou lhe dar uma ideia usando um jogo, o Supreme Commander.

Você tem uma única unidade. Bastante simples.

Essa unidade pode estar em movimento, caso em que você precisa acompanhar os vetores de direção e velocidade para esse objeto.

A unidade tem uma arma e, nesse caso, você precisa rastrear se está ou não disparando.

A arma dispara balas, para cada bala disparada o jogo tem que criar um objeto detalhando a direção e a velocidade dessa bala, ou pelo menos criar uma linha virtual a partir da arma e então testar se outros objetos no jogo se cruzam linha.

Digamos que não seja uma arma simples, mas sim algo como um lançador balístico, ela precisa de uma simulação balística mais realista. A bala precisa ser rastreada enquanto cruza o mapa, tendo sua velocidade e altura constantemente simuladas por um modelo balístico (próximo) do mundo real. Isso precisará ser feito centenas de vezes por segundo para que o projétil pareça correto.

Isto é tudo ao mesmo tempo que dizer à placa de vídeo apenas o que pintar de onde você mente.

O projétil precisa ser constantemente testado para ver se ele está ocupando o mesmo espaço que uma unidade inimiga, caso em que você tem um ataque, caso contrário, continue.

Se ocorrer um acerto, você precisa calcular o que acontece, a unidade recebe dano ou é morta? Em ambos os casos, precisamos mostrar ao usuário algum tipo de animação "estridente"? Pedaços de estilhaços voando, esse tipo de coisa ... Nesse caso, cada um desses fragmentos de estilhaços precisa ser rastreado, animado e eventualmente destruído, para que eles não precisem mais ser simulados.

Agora imagine que cada jogador pode ter até 500 unidades, todas potencialmente capazes de se mover, para disparar várias armas ou lançadores de mísseis, para ter que testar se há inimigos próximos para atirar em primeiro lugar. Potencialmente, milhares de interações de balas, caminhos de mísseis e projéteis balísticos que precisam ser todos criados, rastreados, testados e têm ações visíveis que acontecem como resultado. Coloque 8 jogadores nesse jogo e você terá rapidamente vários milhares de unidades com dezenas de milhares de projéteis em jogo, todos com "objetos" de programação associados que precisam ser criados, rastreados e destruídos ao longo da vida do objeto.

Essa é uma quantia enorme de cálculos que é necessária para exibir cada quadro de gráficos, e isso antes de você dizer à placa gráfica o que ela mostra.

Em muitos jogos você pode (meio) ignorar qualquer coisa que esteja fora da tela ou fora de área no momento, mas não com um jogo RTS, cada unidade pode se mover, disparar e morrer independentemente do que você está olhando naquele momento dado. Cada unidade também tem um "AI" embutido para dizer como deve se mover, como evitar obstáculos, como chegar ao inimigo, quando deveria estar atirando, como ele pode disparar.

Essas coisas não se prestam ao tipo de coisa que uma placa gráfica poderia facilmente fazer. Placas gráficas funcionam bem executando centenas de cópias de um único programa pequeno contra grandes blocos de dados e não se dão muito bem com o tipo de cálculos grandes e longos que cada etapa do cálculo do status de uma única unidade está fazendo. Claro que ele poderia lidar com os projéteis balísticos e coisas assim, mas para cada bit que você rastreia, você perde energia que poderia ser usada para exibir imagens.

As CPUs são muito poderosas e podem lidar com programas de ramificação muito mais complexos do que uma placa gráfica e são muito mais adequadas para gerenciamento em larga escala de um sistema geral, enquanto placas gráficas são boas para processamento de números e exibindo fotos bonitas. p>     
por 04.10.2012 / 23:36
4

A CPU faz muito para jogos, na verdade. Vou listar algumas coisas que posso pensar em cima da minha cabeça.

  • A CPU precisa ser rápida o suficiente para lidar com o througput da sua GPU. Por exemplo, sua CPU precisa ser rápida o suficiente para lidar com o tráfego que vai para sua GPU. É por isso que os jogadores fazem overclock em seus processadores. A sua placa de vídeo pode ser engarrafada pelo seu CPU, esta é uma enorme possibilidade, e a razão pela qual você quer comprar CPU topo de gama quando compra GPUs topo de gama. Exemplo: De volta ao dia eu tive um Phenom II x4 955 e um GTX275. (Ambos final superior no momento) Eu estava testando o meu gargalo em um benchmark Crysis. Para testar a garrafa, você simplesmente altera a resolução na qual sua marca de bancada. Se você está contornando o mesmo FPS em 1920x1080, como você está em 1024x768, então você está com o gargalo. Teoricamente, o seu FPS deve disparar foguetes em uma resolução tão baixa. Este foi o caso para mim com o meu Phenom II, assim que meu processador foi overclocked após 3,6 GHz, eu era capaz de ver um enorme aumento no FPS quando benchmarking em 1024x768.
  • Inteligência Artificial (AI) - Sua CPU manipula AI e faz todo o processamento técnico por trás de como suas unidades não-jogador atuam no jogo. Para jogos modernos, isso não é uma tarefa pequena para sua CPU.
  • Mecanismo de Física - Sim, se você tem Nvidia você pode rodar o PhysX em sua placa, no entanto, por padrão, ele é executado a partir da sua CPU. Mais uma vez, processando números para o seu jogo.

Devo dizer que meu primeiro ponto é a maior razão pela qual seu processador está sendo usado em jogos. Ele está transferindo esses dados para sua GPU e tem que ser rápido o suficiente para acompanhar.

Espero que isso ajude.

    
por 04.10.2012 / 23:04
1

O trabalho da GPU é renderizar (isto é, "desenhar") objetos em um framebuffer que eventualmente são transmitidos para a tela.

O trabalho da CPU é dizer à GPU o que renderizar e onde.

Renderizar a cena é apenas uma parte pequena do jogo (não deve dizer "pequena", mas definitivamente não é tudo o que um jogo é). Você precisa de uma representação interna de objetos, o que eles estão fazendo e o que acontece quando eles interagem. Mesmo que eles não apareçam na tela e sejam desenhados. Os cálculos são necessários para a maior parte e alguns GPUs têm aceleradores "físicos" que podem ajudar. No entanto, a tomada de decisão (ou seja, a ramificação) também é necessária, e isso é algo que os GPUs não são bons em programas de propósito geral que se ramificam em todo o lugar.

    
por 04.10.2012 / 23:49
0

Você não pode comparar a GPU com a CPU desse jeito. Isso é como dizer que você só precisa da parte do seu cérebro que decifra a imagem enviada pelos seus olhos. A GPU faz um ótimo trabalho de computação de números de ponto flutuante, mas há muito mais acontecendo nos bastidores do que apenas números de computação. A CPU ainda está executando o código necessário para alimentar a GPU com dados a serem processados.

Aqui está um bom artigo sobre o assunto. link

    
por 04.10.2012 / 23:22