Postado Qua 8 Set 2010 - 6:18
ATENÇÃO !
Este tópico NÃO é destinado a avaliações de configurações, sua finalidade é explicar, a grosso modo, alguns mitos do mundo da informática e assim guiar quem quer entender as razões de alguns resultados.
----------------------------
Muitas pessoas quando escutam falar em placas de vídeo hoje em dia ou as levam como “mais memória, mais desempenho”, ou “nome maior (7900GT X 8500GT) placa melhor”, isso vem sendo muito comum já a algum tempo, por isso eu me ofereci para escrever esse pequeno artigo para o Fórum do Clube do Hardware, estava faltando um artigo com reais argumentos técnicos e uma visão mais ampla das GPUs modernas.
Neste artigo eu pretendo colocar quais são os pontos que realmente definem o desempenho de uma placa de vídeo. Começaremos então com a arquitetura:
1º Fator que influência no desempenho Arquitetura:
Todo hardware hoje em dia, seja ele um computador desktop ou um hardware primitivo, trabalha com uma arquitetura, nossos computadores possuem processadores cuja arquitetura foi escrita levando como base a arquitetura x86, mas só porque a arquitetura de um Core 2 Duo é derivada da x86, não quer dizer que ela seja igual à de um Pentium Pro. Ambos usam o x86, mas existe uma diferença monstruosa entre eles, trata-se da evolução! Falar assim é fácil, claro, mas estamos falando de algo realmente grande, vamos partir para as GPUs, atualmente no mercado, temos duas “linhas de pensamento” digamos assim, sobre as GPUs, é a da AMD e a da nVidia, ambas são baseadas no Shader Model 4.X (As GeForce 8, 9 e GTX2XX são baseadas no Shader Model 4.0, as Radeon HD2X00 são baseadas no Shader Model 4.0 e as Radeon HD3XX0 e 4XX0 são baseadas no Shader Model 4.1).
Mas se são baseadas em modelos de shader tão parecidos (O Shader Model 4.1 não trouxe muitas mudanças físicas à arquitetura pelo que eu sei), porque por exemplo uma GeForce 8800ULTRA é tão superior a uma Radeon HD2900XT (que também é Shader Model 4.0 compliant) ?
Isso vem agora das diferenças “reais” entre as arquiteturas delas, uma arquitetura não é definida pelo Shader Model na qual a mesma foi baseada e sim na forma como a AMD e a nVidia definiram-na, isso varia muito, por exemplo, a forma que os Stream Processors (a parte do chip que processa os dados dos pontos que compõem a imagem) trabalham, são diferentes em cada placa, em uma Radeon HD eles trabalham em uma disposição diferente nos pipelines (conjunto de partes do chip que executam funções diferentes no tratamento da imagem, funções como o processamento dos polígonos, aplicação de filtros..), muitos pensam que os pipelines são as “unidades que desapareceram” depois da GeForce 7/Radeon X1K, isso é errado, atualmente cada pipeline em uma GPU SM4.0 tem um número X de Stream Processors, isso faz toda a diferença, por exemplo, as Radeon HD possuem 64 pipelines com 5 Stream Processors cada, isso torna ela uma GPU mais capacitada para alguns tipos de serviços especiais que precisam de paralelismo grande, como nas GPUs profissionais, já a nVidia seguiu outra alternativa de processamento, ela preferiu trabalhar apenas com 16 pipelines, porém pipelines mais longas, cada uma com 8 Stream Processors.
Ainda devemos considearar que os Stream Processors e a forma de contá-los varia de fabricante para fabricante, por exemplo, a AMD considera como Stream Processors inclusive suas unidades lógicas aritméticas, isso não é lá totalmente certo, já foi feito o mesmo na série X1K, suas GPUs com 16 pipelines supostamente tinham 48, pois cada pipeline possuía 3 ALUs, na série HD2K (e também na 3k, 4k e 5k) cada “bloco” de Stream Processors, que no caso, representa 1 das 64 pipelines, possui uma unidade que “junta” o serviço realizado por 5 ALUs, esse “bloco” pode ser chamado Stream Processor, pois o “valor resultante” do serviço dele, é um “stream” (Streams são cadeias de dados) já a nVidia anuncia suas GPUs como 128 Stream Processors, uma vez que cada unidade dessas possui duas ULAs (vocês vão ver eu escrever ALU ou ULA em várias partes deste texto, não se assustem, representam a mesma coisa, ULA = Unidade Lógica Aritmética, e ALU significa Artithmetical Logic Unit).
Diagrama da arquitetura da GeForce 8800GTX Fonte: TechReport/NVIDIA
Diagrama da arquitetura da Radeon HD2900XT Fonte: TechReport/AMD
OBS.: O que é uma ALU?
R.: A Unidade lógica aritmética trabalha como se fosse uma unidade de processamento normal, ela é capaz de ler e processar streams. Nas GPUs atuais, tanto as GeForce 7/8 Radeons X1K/HD as ALUs são capazes de realizar uma operação MAD (Multiply-Add) com precisão de ponto flutuante (o tipo de cálculo que executam) de 32bit por ciclo, pois elas obedecem as atuais regras de processamento de vídeo IEEE 754.
Por que não posso considerar uma ALU como um stream processor? Pois as ULAs não conseguem montar seu trabalho sozinhas, elas precisam de uma Branch Execution Unit (em outras palavras, uma unidade que vai distribuir o trabalho para as ALUs), cada uma das 64 pipelines do R600 é formada de 5 ALUs + 1 Branch Execution Unit + Registradores de “Propósito Geral”, isso pode ser considerado um “Super Stream Processor”, uma vez que ela é capaz de trabalhar 5 pedaços de dados, endereça-las em uma só instrução imensa (chamada de VLIW, Very Long Instruction Word, porcamente traduzida “Palavra de Instrução muito grande”). Cada uma dessas pequenas unidades contidas no R600 se chama SIMD (Single Instruction Multiple Data, seria algo como “múltiplos dados em uma instrução”)
Um Stream Processor (HD2900XT) - Fonte: TechReport/AMD
O “porque” da nVidia também possuir mais desempenho com AA (Anti Aliasing, anti serrilhamento, um dos filtros de qualidade de imagem mais utilizados e mais pesados), isso é mais um dos problemas provenientes da arquitetura, o que explica isso basicamente é o fato de as GPUs da nVidia trabalharem com AA via ROP, ROPs (Render OutPuts) são as unidades encarregadas unicamente a trabalhar com AA e processos finais na renderização da imagem, já a AMD escolheu o caminho proposto pelo Shader Model 4.1, que trabalha o AA via Stream Processors, o AA é calculado pelas unidades que trabalhariam o gráfico do jogo, por isso em jogos pesados, a GPU não tem performance satisfatória, ela está com as unidades ocupadas em gráficos e o usuário está forçando ela a trabalhar AA nessas mesmas unidades. (isso vale pras HD 2000 e 3000, foi corrigido na 4000 e 5000 e elas tem ótimo desempenho quando o AA é ativado)
Não se sabe o porque da AMD escolher este caminho para andar nas Radeon HD, não se sabe se este é o caminho mais certo, sabemos apenas que ela poderia ter feito algo hibrido e seria muito mais satisfatório na visão do usuário, a nVidia possui a metodologia do AA via ROP, justamente por isso ela possui 24 ROPs nas suas GPUs Enthusiast (8800GTX e 8800ULTRA), 20/16 ROPs nas GPUs High End (20 nas GeForce 8800GTS derivadas do G80 e 16 nas GeForce 8800 derivadas do G92).
Outro motivo do AA para a nVidia conseguir aplicar AA com mais facilidade nas suas GeForce 8 é que seu AA usa uma arquitetura diferente, a forma que ele é disposto, a forma que ele armazena e lê informações na memória é diferenciado em relação ao da AMD. Apesar da qualidade ser muito próxima, é impossível negar que na atual situação a AMD é a que se sobressai em possibilidades com o AA, já que Stream Processors são unidades 100% programáveis, você as trabalha da forma que você quiser, a nVidia também possui essa alternativa, mas fazer uso dela seria a mesma coisa que entregar a vitória ao adversário, uma vez que seus ROPs extras seriam um “peso morto” dentro da GPU.
Mas até agora só falamos de arquiteturas no caso G80/G92 X R600/RV670 (Shader Model 4.X)
Vamos partir para comparações com as GPUs passadas, onde a nova arquitetura de processamento imposta pelo DirectX10 se mostra superior à antiga arquitetura:
Basicamente os benefícios de se usar uma GPU com DirectX10 é algo que foi batizado de “Dynamic Load Balancing” (Balanço de carregamento dinâmico).
Até o DirectX9C, as GPUs possuíam 2 unidades diferentes de processamento em suas pipelines, eram os Pixel Shaders e os Vertex Shaders, um bom exemplo para tomarmos é a GeForce 7900GTX, ela tinha 24 pixel pipelines com 2 ALUs cada, resultando 48 Operações de Pixel e 8 Vertex Pipelines, é fato que os jogos sempre usaram mais de operações de pixel, mas alguns jogos fugiam um pouco dessa regra, especialmente jogos RTS (estilo Age of Empires), esses fazem uso massivo das unidades de Vertex (vértices), por isso em jogos como Company of Heroes, nós podemos notar uma diferença monstruosa entre GPUs DX9 X DX10.
As GPUs DirectX10 trabalham com Stream Processors, essas unidades são programáveis, elas podem processar tanto Vertex quanto Pixel Shaders, isso torna possível fazer balanço do uso das unidades, nunca deixar uma sobrecarregada, no G70/G71 e no R520/R580/R580+ era muito comum os Vertex Shaders se sobrecarregarem, agora no G80/G92, R600/RV670 isso se torna muito difícil!
Tirando o fato que o DirectX10 trouxe muitas possibilidades com as GPUs, como por exemplo o poder de processar Geometry Shaders, a geometria até pouco tempo atrás era trabalhada inteiramente pela CPU, hoje em dia isso PODE mudar, não quer dizer que vá, pois os programadores estão aplicando o DirectX10 muito lentamente nos jogos, e isso deverá demorar muito ainda, mas em todo caso, jogos como Call of Juarez DirectX10 já trabalha Física via Geometry Shaders, tornando assim, a gama de possibilidades com processamento de física muito maior!
2º Fator que influencia no desempenho Clock
Depois de analisar a melhor arquitetura para escolher a sua GPU, chegou a hora de analisar o clock dela, duas GPUs de arquitetura igual com clocks diferentes possuem diferenças de performance.
Primeiramente, o que é clock:
Para quem já teve aula de física deve notar que o clock é medido em Hz, 1Hz é a medição de freqüência em física, em movimento circular, 1Hz representa um ciclo de uma roda girando em 1 segundo por exemplo, em GPUs e processadores não é muito diferente, 1Hz representa 1 ciclo de processamento, 1 instrução que entra para ser processada pode ficar muitos ciclos parados dentro do hardware (por isso clock não é tudo), por isso que hoje em dia as freqüências subiram assustadoramente em relação a antigamente, um processador de 3GHz (lembrem-se Giga é 10^9) é capaz de realizar 3.000.000.000 ciclos por segundo (pulso de clock).
É aí que encaixamos isso na nossa arquitetura, quando já definimos qual a melhor dentro de nossas cabeças, devemos passar a analisar a velocidade com que os dados são processados dentro dessa arquitetura.
Não tem muito segredo, uma GPU que tem o clock de 600MHz é proporcionalmente mais rápida que uma que tem o clock a 500MHz (neste exemplo, no máximo 20%), isto é, se forem exatamente o mesmo chip. Não se pode comparar um G80 (GeForce 8800GTS 640/320MB / GeForce 8800GTX / GeForce 8800ULTRA) com um G70 (GeForce 7800GT/7800GTX).
Outro ponto interessante do fator “clock” é o que vem sendo aplicado nas GPUs da série 8 em diante (NVIDIA), elas possuem diferenciação no clock da GPU em relação ao clock dos Stream Processors, enquanto os Stream Processors trabalham a um clock acelerado, a GPU trabalha com um valor bem mais baixo, no caso da GeForce 8800GTX por exemplo, enquanto sua GPU trabalha a 575MHZ os Stream Processors trabalham com um multiplicador de 2x sobre este clock, resultando em 1350MHz. Isso faz com que a parte que “realmente importa” trabalhe mais rápido, enquanto o “resto” que normalmente fica mais estático e/ou não conseguem atingir altos clocks fica com a velocidade reduzida, isso ajuda tanto no desempenho quanto no consumo e calor gerado!
Mas não devemos só analisar o clock da GPU para saber qual a melhor PLACA DE VIDEO, analisando apenas a GPU, quem tem mais clock em relação a outra igual, ganha, mas vamos para o próximo tópico.
3º Fator que influencia no desempenho Taxa de transferência das memórias
Mais uma vez, memórias possuem a quantidade de ciclos de leitura/gravação determinadas pelo seu clock, hoje em dia já possuímos memórias de GDDR4 rodando por aí, as suas limitações (não nos chips comercializados, mas nos que estão em testes) são algo próximo de 3.2GHz (3.200.000.000 operações), nas GPUs a venda, o mais comum hoje em dia é encontrar memórias GDDR3 trabalhando a 1600MHz / 1800MHz, em algumas GPUs mid end já temos memórias GDDR3/GDDR4 a 2000MHz, mas será que isso apenas basta? A velocidade das memórias É sim definida pelo seu clock, mas isso não quer dizer que necessariamente a comunicação entre a GPU e elas seja determinada por este valor!
O fator que determina a velocidade da memória em relação à sua comunicação com a GPU é o seu bus (barramento), ele é determinado em bits, hoje em dia placas de video como a Radeon HD2900XT já possuem 512bit, mas, assim como o clock, não podemos analisar os “bits” separadamente, temos que colocar tudo no papel para saber o que resulta em mais “banda de memória” (Velocidade que a memória transporta dados para a GPU). Felizmente existe uma fórmula muito simples para calcular a banda de memória.
X bits / 8 * Y MHz = Z MB/s
Então, vamos comparar uma Radeon HD2600XT GDDR4 com uma Radeon HD2900XT GDDR3 para ver como colocar as duas coisas no papel e descobrir quem é realmente mais forte nesse quesito, a Radeon HD2600XT GDDR4 possui um bus de 128bit com memórias a 2.2GHz, enquanto a HD2900XT possui um bus de 512bit com memórias a 1.6GHz.
Radeon HD2900XT : 512bits / 8 * 1600 = 102400MB/s (102,4GB/s)
Radeon HD2600XT : 128bits / 8 * 2200 = 35200MB/s (35,2GB/s)
Como podem ver, o clock da memória esta longe de ser algo realmente importante, assim como o padrão utilizado (GDDR3 ou GDDR5) não define uma placa ser mais rápida ou melhor que outra, pois pode-se usar chips GDDR3 de clock menor mas mais bits ou usar chips GDDR5 com clock bem alto e menos bits para se conseguir a mesma taxa de transferência. Quem decide isso é o fabricante da placa de vídeo, lembrando que ele leva em consideração o preço dos chips de memória, da placa de circuito impresso (PCB) e o consumo elétrico das memórias.
8800GTX X X1950XTX - Cada chip de memória BGA tem 32bit, Fonte: TechReport
Portanto a melhor escolha agora para nós é aquela que tem a melhor arquitetura, depois de avaliar isso, escolhemos um modelo que cabe no nosso bolso, depois dessa escolha que acho que é uma das mais difíceis, vemos qual integrador (eVGA, PowerColor, etc...) oferece melhor clock e melhor banda de memória, o próximo passo é escolher um slot adequado para nós!
CONTINUA EM BAIXO ---
Este tópico NÃO é destinado a avaliações de configurações, sua finalidade é explicar, a grosso modo, alguns mitos do mundo da informática e assim guiar quem quer entender as razões de alguns resultados.
----------------------------
Muitas pessoas quando escutam falar em placas de vídeo hoje em dia ou as levam como “mais memória, mais desempenho”, ou “nome maior (7900GT X 8500GT) placa melhor”, isso vem sendo muito comum já a algum tempo, por isso eu me ofereci para escrever esse pequeno artigo para o Fórum do Clube do Hardware, estava faltando um artigo com reais argumentos técnicos e uma visão mais ampla das GPUs modernas.
Neste artigo eu pretendo colocar quais são os pontos que realmente definem o desempenho de uma placa de vídeo. Começaremos então com a arquitetura:
1º Fator que influência no desempenho Arquitetura:
Todo hardware hoje em dia, seja ele um computador desktop ou um hardware primitivo, trabalha com uma arquitetura, nossos computadores possuem processadores cuja arquitetura foi escrita levando como base a arquitetura x86, mas só porque a arquitetura de um Core 2 Duo é derivada da x86, não quer dizer que ela seja igual à de um Pentium Pro. Ambos usam o x86, mas existe uma diferença monstruosa entre eles, trata-se da evolução! Falar assim é fácil, claro, mas estamos falando de algo realmente grande, vamos partir para as GPUs, atualmente no mercado, temos duas “linhas de pensamento” digamos assim, sobre as GPUs, é a da AMD e a da nVidia, ambas são baseadas no Shader Model 4.X (As GeForce 8, 9 e GTX2XX são baseadas no Shader Model 4.0, as Radeon HD2X00 são baseadas no Shader Model 4.0 e as Radeon HD3XX0 e 4XX0 são baseadas no Shader Model 4.1).
Mas se são baseadas em modelos de shader tão parecidos (O Shader Model 4.1 não trouxe muitas mudanças físicas à arquitetura pelo que eu sei), porque por exemplo uma GeForce 8800ULTRA é tão superior a uma Radeon HD2900XT (que também é Shader Model 4.0 compliant) ?
Isso vem agora das diferenças “reais” entre as arquiteturas delas, uma arquitetura não é definida pelo Shader Model na qual a mesma foi baseada e sim na forma como a AMD e a nVidia definiram-na, isso varia muito, por exemplo, a forma que os Stream Processors (a parte do chip que processa os dados dos pontos que compõem a imagem) trabalham, são diferentes em cada placa, em uma Radeon HD eles trabalham em uma disposição diferente nos pipelines (conjunto de partes do chip que executam funções diferentes no tratamento da imagem, funções como o processamento dos polígonos, aplicação de filtros..), muitos pensam que os pipelines são as “unidades que desapareceram” depois da GeForce 7/Radeon X1K, isso é errado, atualmente cada pipeline em uma GPU SM4.0 tem um número X de Stream Processors, isso faz toda a diferença, por exemplo, as Radeon HD possuem 64 pipelines com 5 Stream Processors cada, isso torna ela uma GPU mais capacitada para alguns tipos de serviços especiais que precisam de paralelismo grande, como nas GPUs profissionais, já a nVidia seguiu outra alternativa de processamento, ela preferiu trabalhar apenas com 16 pipelines, porém pipelines mais longas, cada uma com 8 Stream Processors.
Ainda devemos considearar que os Stream Processors e a forma de contá-los varia de fabricante para fabricante, por exemplo, a AMD considera como Stream Processors inclusive suas unidades lógicas aritméticas, isso não é lá totalmente certo, já foi feito o mesmo na série X1K, suas GPUs com 16 pipelines supostamente tinham 48, pois cada pipeline possuía 3 ALUs, na série HD2K (e também na 3k, 4k e 5k) cada “bloco” de Stream Processors, que no caso, representa 1 das 64 pipelines, possui uma unidade que “junta” o serviço realizado por 5 ALUs, esse “bloco” pode ser chamado Stream Processor, pois o “valor resultante” do serviço dele, é um “stream” (Streams são cadeias de dados) já a nVidia anuncia suas GPUs como 128 Stream Processors, uma vez que cada unidade dessas possui duas ULAs (vocês vão ver eu escrever ALU ou ULA em várias partes deste texto, não se assustem, representam a mesma coisa, ULA = Unidade Lógica Aritmética, e ALU significa Artithmetical Logic Unit).
Diagrama da arquitetura da GeForce 8800GTX Fonte: TechReport/NVIDIA
Diagrama da arquitetura da Radeon HD2900XT Fonte: TechReport/AMD
OBS.: O que é uma ALU?
R.: A Unidade lógica aritmética trabalha como se fosse uma unidade de processamento normal, ela é capaz de ler e processar streams. Nas GPUs atuais, tanto as GeForce 7/8 Radeons X1K/HD as ALUs são capazes de realizar uma operação MAD (Multiply-Add) com precisão de ponto flutuante (o tipo de cálculo que executam) de 32bit por ciclo, pois elas obedecem as atuais regras de processamento de vídeo IEEE 754.
Por que não posso considerar uma ALU como um stream processor? Pois as ULAs não conseguem montar seu trabalho sozinhas, elas precisam de uma Branch Execution Unit (em outras palavras, uma unidade que vai distribuir o trabalho para as ALUs), cada uma das 64 pipelines do R600 é formada de 5 ALUs + 1 Branch Execution Unit + Registradores de “Propósito Geral”, isso pode ser considerado um “Super Stream Processor”, uma vez que ela é capaz de trabalhar 5 pedaços de dados, endereça-las em uma só instrução imensa (chamada de VLIW, Very Long Instruction Word, porcamente traduzida “Palavra de Instrução muito grande”). Cada uma dessas pequenas unidades contidas no R600 se chama SIMD (Single Instruction Multiple Data, seria algo como “múltiplos dados em uma instrução”)
Um Stream Processor (HD2900XT) - Fonte: TechReport/AMD
O “porque” da nVidia também possuir mais desempenho com AA (Anti Aliasing, anti serrilhamento, um dos filtros de qualidade de imagem mais utilizados e mais pesados), isso é mais um dos problemas provenientes da arquitetura, o que explica isso basicamente é o fato de as GPUs da nVidia trabalharem com AA via ROP, ROPs (Render OutPuts) são as unidades encarregadas unicamente a trabalhar com AA e processos finais na renderização da imagem, já a AMD escolheu o caminho proposto pelo Shader Model 4.1, que trabalha o AA via Stream Processors, o AA é calculado pelas unidades que trabalhariam o gráfico do jogo, por isso em jogos pesados, a GPU não tem performance satisfatória, ela está com as unidades ocupadas em gráficos e o usuário está forçando ela a trabalhar AA nessas mesmas unidades. (isso vale pras HD 2000 e 3000, foi corrigido na 4000 e 5000 e elas tem ótimo desempenho quando o AA é ativado)
Não se sabe o porque da AMD escolher este caminho para andar nas Radeon HD, não se sabe se este é o caminho mais certo, sabemos apenas que ela poderia ter feito algo hibrido e seria muito mais satisfatório na visão do usuário, a nVidia possui a metodologia do AA via ROP, justamente por isso ela possui 24 ROPs nas suas GPUs Enthusiast (8800GTX e 8800ULTRA), 20/16 ROPs nas GPUs High End (20 nas GeForce 8800GTS derivadas do G80 e 16 nas GeForce 8800 derivadas do G92).
Outro motivo do AA para a nVidia conseguir aplicar AA com mais facilidade nas suas GeForce 8 é que seu AA usa uma arquitetura diferente, a forma que ele é disposto, a forma que ele armazena e lê informações na memória é diferenciado em relação ao da AMD. Apesar da qualidade ser muito próxima, é impossível negar que na atual situação a AMD é a que se sobressai em possibilidades com o AA, já que Stream Processors são unidades 100% programáveis, você as trabalha da forma que você quiser, a nVidia também possui essa alternativa, mas fazer uso dela seria a mesma coisa que entregar a vitória ao adversário, uma vez que seus ROPs extras seriam um “peso morto” dentro da GPU.
Mas até agora só falamos de arquiteturas no caso G80/G92 X R600/RV670 (Shader Model 4.X)
Vamos partir para comparações com as GPUs passadas, onde a nova arquitetura de processamento imposta pelo DirectX10 se mostra superior à antiga arquitetura:
Basicamente os benefícios de se usar uma GPU com DirectX10 é algo que foi batizado de “Dynamic Load Balancing” (Balanço de carregamento dinâmico).
Até o DirectX9C, as GPUs possuíam 2 unidades diferentes de processamento em suas pipelines, eram os Pixel Shaders e os Vertex Shaders, um bom exemplo para tomarmos é a GeForce 7900GTX, ela tinha 24 pixel pipelines com 2 ALUs cada, resultando 48 Operações de Pixel e 8 Vertex Pipelines, é fato que os jogos sempre usaram mais de operações de pixel, mas alguns jogos fugiam um pouco dessa regra, especialmente jogos RTS (estilo Age of Empires), esses fazem uso massivo das unidades de Vertex (vértices), por isso em jogos como Company of Heroes, nós podemos notar uma diferença monstruosa entre GPUs DX9 X DX10.
As GPUs DirectX10 trabalham com Stream Processors, essas unidades são programáveis, elas podem processar tanto Vertex quanto Pixel Shaders, isso torna possível fazer balanço do uso das unidades, nunca deixar uma sobrecarregada, no G70/G71 e no R520/R580/R580+ era muito comum os Vertex Shaders se sobrecarregarem, agora no G80/G92, R600/RV670 isso se torna muito difícil!
Tirando o fato que o DirectX10 trouxe muitas possibilidades com as GPUs, como por exemplo o poder de processar Geometry Shaders, a geometria até pouco tempo atrás era trabalhada inteiramente pela CPU, hoje em dia isso PODE mudar, não quer dizer que vá, pois os programadores estão aplicando o DirectX10 muito lentamente nos jogos, e isso deverá demorar muito ainda, mas em todo caso, jogos como Call of Juarez DirectX10 já trabalha Física via Geometry Shaders, tornando assim, a gama de possibilidades com processamento de física muito maior!
2º Fator que influencia no desempenho Clock
Depois de analisar a melhor arquitetura para escolher a sua GPU, chegou a hora de analisar o clock dela, duas GPUs de arquitetura igual com clocks diferentes possuem diferenças de performance.
Primeiramente, o que é clock:
Para quem já teve aula de física deve notar que o clock é medido em Hz, 1Hz é a medição de freqüência em física, em movimento circular, 1Hz representa um ciclo de uma roda girando em 1 segundo por exemplo, em GPUs e processadores não é muito diferente, 1Hz representa 1 ciclo de processamento, 1 instrução que entra para ser processada pode ficar muitos ciclos parados dentro do hardware (por isso clock não é tudo), por isso que hoje em dia as freqüências subiram assustadoramente em relação a antigamente, um processador de 3GHz (lembrem-se Giga é 10^9) é capaz de realizar 3.000.000.000 ciclos por segundo (pulso de clock).
É aí que encaixamos isso na nossa arquitetura, quando já definimos qual a melhor dentro de nossas cabeças, devemos passar a analisar a velocidade com que os dados são processados dentro dessa arquitetura.
Não tem muito segredo, uma GPU que tem o clock de 600MHz é proporcionalmente mais rápida que uma que tem o clock a 500MHz (neste exemplo, no máximo 20%), isto é, se forem exatamente o mesmo chip. Não se pode comparar um G80 (GeForce 8800GTS 640/320MB / GeForce 8800GTX / GeForce 8800ULTRA) com um G70 (GeForce 7800GT/7800GTX).
Outro ponto interessante do fator “clock” é o que vem sendo aplicado nas GPUs da série 8 em diante (NVIDIA), elas possuem diferenciação no clock da GPU em relação ao clock dos Stream Processors, enquanto os Stream Processors trabalham a um clock acelerado, a GPU trabalha com um valor bem mais baixo, no caso da GeForce 8800GTX por exemplo, enquanto sua GPU trabalha a 575MHZ os Stream Processors trabalham com um multiplicador de 2x sobre este clock, resultando em 1350MHz. Isso faz com que a parte que “realmente importa” trabalhe mais rápido, enquanto o “resto” que normalmente fica mais estático e/ou não conseguem atingir altos clocks fica com a velocidade reduzida, isso ajuda tanto no desempenho quanto no consumo e calor gerado!
Mas não devemos só analisar o clock da GPU para saber qual a melhor PLACA DE VIDEO, analisando apenas a GPU, quem tem mais clock em relação a outra igual, ganha, mas vamos para o próximo tópico.
3º Fator que influencia no desempenho Taxa de transferência das memórias
Mais uma vez, memórias possuem a quantidade de ciclos de leitura/gravação determinadas pelo seu clock, hoje em dia já possuímos memórias de GDDR4 rodando por aí, as suas limitações (não nos chips comercializados, mas nos que estão em testes) são algo próximo de 3.2GHz (3.200.000.000 operações), nas GPUs a venda, o mais comum hoje em dia é encontrar memórias GDDR3 trabalhando a 1600MHz / 1800MHz, em algumas GPUs mid end já temos memórias GDDR3/GDDR4 a 2000MHz, mas será que isso apenas basta? A velocidade das memórias É sim definida pelo seu clock, mas isso não quer dizer que necessariamente a comunicação entre a GPU e elas seja determinada por este valor!
O fator que determina a velocidade da memória em relação à sua comunicação com a GPU é o seu bus (barramento), ele é determinado em bits, hoje em dia placas de video como a Radeon HD2900XT já possuem 512bit, mas, assim como o clock, não podemos analisar os “bits” separadamente, temos que colocar tudo no papel para saber o que resulta em mais “banda de memória” (Velocidade que a memória transporta dados para a GPU). Felizmente existe uma fórmula muito simples para calcular a banda de memória.
X bits / 8 * Y MHz = Z MB/s
Então, vamos comparar uma Radeon HD2600XT GDDR4 com uma Radeon HD2900XT GDDR3 para ver como colocar as duas coisas no papel e descobrir quem é realmente mais forte nesse quesito, a Radeon HD2600XT GDDR4 possui um bus de 128bit com memórias a 2.2GHz, enquanto a HD2900XT possui um bus de 512bit com memórias a 1.6GHz.
Radeon HD2900XT : 512bits / 8 * 1600 = 102400MB/s (102,4GB/s)
Radeon HD2600XT : 128bits / 8 * 2200 = 35200MB/s (35,2GB/s)
Como podem ver, o clock da memória esta longe de ser algo realmente importante, assim como o padrão utilizado (GDDR3 ou GDDR5) não define uma placa ser mais rápida ou melhor que outra, pois pode-se usar chips GDDR3 de clock menor mas mais bits ou usar chips GDDR5 com clock bem alto e menos bits para se conseguir a mesma taxa de transferência. Quem decide isso é o fabricante da placa de vídeo, lembrando que ele leva em consideração o preço dos chips de memória, da placa de circuito impresso (PCB) e o consumo elétrico das memórias.
8800GTX X X1950XTX - Cada chip de memória BGA tem 32bit, Fonte: TechReport
Portanto a melhor escolha agora para nós é aquela que tem a melhor arquitetura, depois de avaliar isso, escolhemos um modelo que cabe no nosso bolso, depois dessa escolha que acho que é uma das mais difíceis, vemos qual integrador (eVGA, PowerColor, etc...) oferece melhor clock e melhor banda de memória, o próximo passo é escolher um slot adequado para nós!
CONTINUA EM BAIXO ---