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

12

Parece que os dois grandes fabricantes de GPUs estão constantemente lançando drivers atualizados com 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 nunca ouvimos falar sobre os drivers de CPU da AMD ou da Intel para um determinado aplicativo ou versão do Windows ou algo assim?

Louis
fonte
1
Em relação aos VTCs: isso não é ambíguo. Há um raciocínio específico sobre o que é ajustado e por que, com os drivers de GPU (e CPU).
Ben Richards
1
Os fornecedores de CPU lançam atualizações. Veja, por exemplo, downloadcenter.intel.com/… (clique em firmware na extrema direita)
derobert 12/12/12
@derobert - Interessante, obviamente, a Intel não tem intenção de repetir o fiasco do Pentium. No entanto, essas atualizações são para microcódigo do processador e não são "drivers de CPU". O microcódigo é executado em um nível inferior ao código da máquina dos arquivos kernel e .exe .
sawdust
@sawdust, o microcódigo da CPU (pelo menos em parte) é responsável por converter as instruções x86 que a CPU recebe nas operações reais que executa. Portanto, é realmente um pouco semelhante aos drivers gráficos. É claro que a Intel se preocupa muito mais com a correção do que a nVidia, portanto, suas atualizações provavelmente são principalmente correções de bugs.
derobert

Respostas:

13

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

Uma GPU é um circuito muito complicado. Existe para descarregar determinadas tarefas que demoram muito tempo em uma CPU. Eles recebem conjuntos de dados e instruções sobre o que fazer com esses dados. A GPU deve poder solicitar 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 completo. Esta é uma descrição muito simplista do pipeline de computação gráfica . Existem várias etapas que devem ser tomadas 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, há certas coisas conhecidas por correr mais rápido ou mais devagar nesse pipeline. Parte da gravação de um driver para um dispositivo está interpretando dados e instruções enviadas ao dispositivo, convertendo-os para que o dispositivo possa entendê-los. Quando um driver está fazendo isso, ele pode tomar decisões sobre como enviar os dados para o dispositivo, para que as tarefas levem o menor tempo possível. No entanto, um driver geralmente não possui muitas informações sobre o que o programa está executando. Tudo o que recebe do programa são as chamadas da API ("desenhe uma linha", "colore um ponto", "sombreie um triângulo" etc.). Portanto, as suposições que ele pode fazer não são muito boas.

Quando a AMD ou a nVidia lança uma atualização de driver que contém melhorias de desempenho para jogos específicos, isso significa que o driver detectará o jogo que está chamando de 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 rapidamente trocadas dentro ou fora da memória, ou que 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 ele será enviado à GPU para execução. Se o motorista souber como o jogo usa o hardware, ele pode organizar os dados e escolher conjuntos de instruções que executam a tarefa desejada de maneira a aumentar o rendimento e a eficiência.

Às vezes, porém, após o envio do produto, podem ser encontrados erros em alguma parte da GPU. Pode ser obscuro o suficiente para ter sido esquecido na validação quando o chip estava sendo projetado, mas pode ser descoberto que ele causa algum comportamento indesejável ou com erros (ou mesmo trava) em um jogo específico que o atinge. Nesse caso, o driver detectará esse estado de buggy e o contornará, transferindo algum cálculo para o lado da CPU ou alterando a maneira como ele alimenta os dados na GPU para que não entre nesse estado. Estes, novamente, serão lançados na forma de atualizações de driver.

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

Ben Richards
fonte
Sobre os engenheiros de driver entenderem como um jogo é implementado, isso me faz pensar se as telas iniciais da Nvidia em alguns jogos são mais do que apenas anúncios.
Louis
2
@ Louis Eles não são apenas anúncios. Eles são porque a NVidia mantém relacionamentos especiais com determinados estúdios de jogos e oferece assistência aos desenvolvedores para otimizar o código do jogo para o hardware gráfico da NVidia. A AMD também faz isso (ocasionalmente você verá um logotipo da AMD em um jogo), mas a NVidia historicamente teve uma presença muito maior.
Ben Richards
Lendo isso novamente, vejo que é uma ótima resposta e onde a marca de seleção pertence. Eu gostaria que todas as respostas fossem tão ensinadas em suas explicações.
Louis
Você integraria isso ( mais números ) como exemplo para outra recompensa?
Louis
10

"Drivers de CPU" raramente existem, e certamente não são módulos carregáveis. O ocasional "driver da CPU" seria necessário para alguma variação no controle multicore ou no manuseio de interrupções (por exemplo, os núcleos duplos da AMD precisavam de um driver WinXP para uma utilização completa). Caso contrário, a maioria dos sistemas operacionais é configurada e criada 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á lançada.

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

serragem
fonte
2
Isso explica por que os downloads de drivers para o meu cartão estão acima de 200 MB agora.
Louis
Eu realmente duvido que haja 200 MB de código nesses drivers. Eu ficaria surpreso se fosse mais do que um punhado de MB em relação a todos esses algoritmos. >.>
user541686
1
@Mehrdad por curiosidade, abri o EXE do instalador com 7-zip para o driver da Nivida. a pasta Display.Driver tem 147 MB ​​de tamanho, existe um exe com 31 MB, todos os outros arquivos acima de 660 KB são uma DLL.
Scott Chamberlain
@ Scott: Esse exe é quase certamente um arquivo de mais arquivos contendo o código real . Espero que os arquivos reais tenham no máximo um punhado de megabytes ... modulo quaisquer recursos que eles possam conter, que não são código.
user541686
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 funcionar paralelamente na maioria das tarefas e torná-lo mais eficaz do que uma CPU de uso geral.

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

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

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

user178979
fonte
"A maioria dos novos modelos de CPU possui um firmware programável", por favor, explique.
Tim