O que há de diferente nos drivers de GPU de outros drivers de dispositivo, que permite otimizações de desempenho?

12

Parece que os dois grandes fabricantes de GPU estão constantemente lançando drivers atualizados que têm um pequeno aumento de desempenho aqui e ali. Quando eles são para o mesmo jogo, aposto que isso aumenta com o tempo.

Com isso em mente, por que é que nunca ouvimos falar de AMD ou Intel modificando drivers de CPU para um determinado aplicativo ou versão do Windows ou algo assim?

    
por Louis 09.12.2012 / 00:14

3 respostas

13

Em primeiro lugar, às vezes há casos em que um patch de driver é liberado que pode aumentar o desempenho ou aumentar a eficiência de uma determinada CPU. Mas obviamente você está fazendo essa pergunta porque não é tão comum. O que as otimizações do driver da CPU fazem é similar no conceito, no entanto.

A GPU é uma peça de circuito muito complicada. Ele existe para descarregar determinadas tarefas que demoram muito tempo para serem executadas em uma CPU. Eles recebem conjuntos de dados e instruções sobre o que fazer com esses dados. A GPU deve ser capaz de ordenar os dados de uma maneira que seja gerenciável e interpretar as instruções para dizer o que fazer. Em seguida, ele deve executar uma série de operações matemáticas nos dados. Depois disso, ele deve reordenar os dados novamente e enviar os resultados de volta ao sistema operacional quando estiver concluído. Esta é uma descrição muito simplista do pipeline de computação gráfica . Existem várias etapas que devem ser seguidas antes que os dados estejam prontos para o programa.

Agora, como a GPU deve aceitar conjuntos de instruções e implementar operações matemáticas muito complicadas no hardware, haverá certas coisas que são conhecidas por rodar mais rápido ou mais devagar por esse pipeline. Parte da gravação de um driver para um dispositivo é interpretar dados e instruções enviadas para o dispositivo, traduzindo-o para que o dispositivo possa compreendê-lo. Quando um driver está fazendo isso, ele pode tomar decisões sobre como enviar os dados para o dispositivo, para que as tarefas demorem o menor tempo possível. No entanto, um driver geralmente não tem muita informação sobre o que o programa está fazendo. Tudo o que recebe do programa são as chamadas da API ("desenhar uma linha", "colorir um ponto", "sombrear um triângulo", etc). Então, as suposições que podem fazer não são muito boas.

Quando a AMD ou nVidia lançam uma atualização de driver que contém melhorias de desempenho para jogos específicos, o que isso significa é que o driver detectará qual jogo está chamando o hardware gráfico e terá uma série de suposições codificadas que são conhecidas sobre como o jogo é implementado. Pode ser que o jogo tenha muitas imagens de textura que precisam ser trocadas rapidamente dentro e fora da memória, ou que ele faça muita mistura de cores em tempo real para produzir certos efeitos de iluminação. Normalmente, o que um jogo fará é implementar pequenos programas (chamados "shaders") que descrevem como executar esses cálculos, e eles serão enviados para a GPU para execução. Se o motorista sabe como o jogo usa o hardware, ele pode organizar os dados e escolher conjuntos de instruções que executam a tarefa desejada de uma maneira que aumente a produtividade e a eficiência. Como ele sabe o que esperar, ele pode essencialmente "preparar" a GPU e os dados para que sejam executados o mais rápido possível.

Às vezes, no entanto, depois que o produto é enviado, erros podem ser encontrados em alguma parte da GPU. Pode ser obscuro o suficiente para ter sido perdido na validação quando o chip estava sendo projetado, mas pode-se descobrir que ele causa algum comportamento bêbado ou indesejável (ou até mesmo falha) em um jogo específico que o atinge. Nesse caso, o driver detectará esse estado de bugs e o contornará, descarregando alguns cálculos para o lado da CPU ou alterando a maneira como ele alimenta os dados para a GPU, para que ela não entre nesse estado. Estes, novamente, serão lançados na forma de atualizações de drivers.

Então, basicamente, não está mudando o desempenho do hardware em si, está apenas mudando a forma como ele usa o hardware, para que ele possa operar com mais eficiência e rapidez no mesmo conjunto de dados.

    
por 09.12.2012 / 02:10
10

"Drivers de CPU" raramente existem e certamente não são módulos carregáveis. O "driver da CPU" ocasional seria necessário para alguma variação de controle multicore ou manipulação de interrupção (por exemplo, os núcleos duplos da AMD precisavam de um driver WinXP para utilização total). Caso contrário, a maioria dos sistemas operacionais é configurada e construída para acessar a CPU diretamente. Se um problema aparecer e for grave, o código do kernel será corrigido e uma atualização do kernel será liberada.

GPUs não são apenas periféricos; eles evoluíram para coprocessadores. O "driver da GPU" não apenas fornece acesso ao dispositivo, eles incluem algoritmos de processamento (isto é, subprogramas gráficos) para a GPU empacotada no driver. O tamanho desses "drivers" é uma dádiva / pista. São esses algoritmos / subprogramas que estão sendo aprimorados.

    
por 09.12.2012 / 00:54
0

Não são apenas os drivers, é a própria GPU. Uma GPU é especializada em vários tipos de cálculos (por exemplo, FFT) e manipulação de memória. Ele pode trabalhar em paralelo na maioria das tarefas dadas e torná-lo mais eficaz do que uma CPU de propósito geral.

Com um melhor conhecimento dos programas em execução, você pode otimizar a manipulação de memória ou os processos de cálculo para esses programas. A GPU é muito versátil em como fazer cálculos e realizar manipulações de memória, então o firmware ou driver perfeito ainda precisa ser escrito. ;) Há muito espaço para melhorias.

A maioria dos outros dispositivos não são tão versáteis em seu uso. A maioria dos hardwares em um PC precisa executar em suas especificações, seguir os protocolos, para que o driver não precise ser otimizado.

A, esqueci da CPU. > _ < A CPU pode ser otimizada. A maioria dos novos modelos de CPU tem um firmware programável, mas o aumento de desempenho não vale o esforço. É usado apenas para corrigir erros no processo de criação de hardware.

    
por 09.12.2012 / 01:31

Tags