Qu'est-ce qui différencie les pilotes GPU des autres pilotes de périphériques, ce qui permet d'optimiser les performances?

12

Il semble que les deux grands fabricants de GPU publient constamment des pilotes mis à jour qui ont de petites augmentations de performances ici et là. Quand ils sont pour le même jeu, je parie que cela s'additionne avec le temps.

Dans cet esprit, pourquoi n'avons-nous jamais entendu parler de pilotes de processeur AMD ou Intel pour une certaine application ou version de Windows ou quelque chose?

Louis
la source
1
Concernant les VTC: ce n'est pas ambigu. Il existe un raisonnement spécifique concernant ce qui est modifié et pourquoi, avec les pilotes GPU (et CPU).
Ben Richards
1
Les fournisseurs de CPU publient des mises à jour. Voir, par exemple, downloadcenter.intel.com/… (cliquez sur le firmware à l'extrême droite)
derobert
@derobert - Intéressant, évidemment Intel n'a pas l'intention de répéter le fiasco du Pentium. Cependant, ces mises à jour concernent le microcode du processeur et ne sont pas des "pilotes CPU". Le microcode est exécuté à un niveau inférieur à celui du code machine des fichiers du noyau et .exe .
sciure
@sawdust le microcode CPU (au moins en partie) est responsable de la traduction des instructions x86 que le CPU reçoit en opérations réelles qu'il effectue. Donc, c'est en fait quelque peu similaire aux pilotes graphiques. Bien sûr, Intel se soucie beaucoup plus de l'exactitude que nVidia, donc leurs mises à jour sont probablement principalement des corrections de bugs.
derobert

Réponses:

13

Premièrement, il existe parfois des cas où un correctif de pilote est publié qui peut améliorer les performances ou augmenter l'efficacité d'un certain processeur. Mais évidemment, vous posez cette question parce que ce n'est tout simplement pas si courant. Cependant, ce que font les optimisations du pilote CPU est similaire dans le concept.

Un GPU est un circuit très compliqué. Il existe pour décharger certaines tâches qui prennent très longtemps à faire sur un CPU. Ils reçoivent des ensembles de données et des instructions sur ce qu'il faut faire de ces données. Le GPU doit être en mesure de classer les données de manière gérable et d'interpréter les instructions pour lui dire quoi faire. Ensuite, il doit effectuer une série d'opérations mathématiques sur les données. Après cela, il doit à nouveau réorganiser les données et renvoyer les résultats au système d'exploitation une fois terminé. Il s'agit d'une description très simpliste du pipeline d'infographie . Plusieurs étapes doivent être effectuées avant que les données ne soient prêtes pour le programme.

Maintenant, comme le GPU doit accepter des ensembles d'instructions et implémenter des opérations mathématiques très compliquées dans le matériel, certaines choses sont connues pour fonctionner plus rapidement ou plus lentement dans ce pipeline. Une partie de l'écriture d'un pilote pour un périphérique consiste à interpréter les données et les instructions envoyées au périphérique, à les traduire pour que le périphérique puisse les comprendre. Lorsqu'un pilote effectue cette opération, il peut prendre des décisions sur la façon d'envoyer les données à l'appareil afin que les tâches prennent le moins de temps possible. Cependant, un pilote n'a généralement pas beaucoup d'informations sur ce que fait le programme qu'il dessert. Tout ce qu'il reçoit du programme sont les appels d'API ("dessiner une ligne", "colorier un point", "ombrer un triangle", etc.). Ainsi, les hypothèses qu'il peut faire ne sont pas très bonnes.

Quand AMD ou nVidia publie une mise à jour du pilote qui contient des améliorations de performances pour des jeux spécifiques, cela signifie que le pilote détectera quel jeu appelle le matériel graphique et aura une série d'hypothèses codées en dur qui sont connues sur la façon dont le jeu est mis en œuvre. Il se peut que le jeu ait beaucoup d'images de texture qui doivent être rapidement échangées dans et hors de la mémoire, ou qu'il mélange beaucoup de couleurs à la volée pour produire certains effets d'éclairage. Habituellement, un jeu implémentera de petits programmes (appelés "shaders") qui décrivent comment effectuer ces calculs, et il sera envoyé au GPU pour exécution. Si le pilote sait comment le jeu utilise le matériel, il peut organiser les données et choisir des ensembles d'instructions qui exécutent la tâche souhaitée d'une manière qui augmente le débit et l'efficacité.

Parfois, cependant, une fois le produit expédié, des bogues peuvent être détectés dans une partie du processeur graphique. Il peut être suffisamment obscur pour avoir été manqué lors de la validation lors de la conception de la puce, mais il peut être constaté qu'il provoque un buggy ou un comportement indésirable (ou même des plantages) dans un jeu particulier qui le frappe. Dans ce cas, le pilote détectera cet état de bogue et le contournera, soit en déchargeant certains calculs du côté du processeur ou en modifiant la façon dont il alimente les données vers le GPU afin qu'il n'entre pas dans cet état. Ceux-ci, encore une fois, seront publiés sous forme de mises à jour de pilotes.

Donc, fondamentalement, cela ne modifie pas les performances du matériel lui-même, il modifie simplement la façon dont il utilise le matériel, afin qu'il puisse fonctionner plus efficacement et plus rapidement sur le même ensemble de données.

Ben Richards
la source
À propos des pilotes qui comprennent comment un jeu est implémenté, je me demande si ces écrans de démarrage Nvidia dans certains jeux sont plus que de simples publicités.
Louis
2
@Louis Ce ne sont pas que des publicités. C'est parce que NVidia entretient des relations spéciales avec certains studios de jeux et offre une assistance aux développeurs pour optimiser le code de jeu pour le matériel graphique NVidia. AMD le fait aussi (parfois vous verrez un logo AMD dans un jeu), mais NVidia a toujours été beaucoup plus présent.
Ben Richards
En relisant cela, je vois que c'est une excellente réponse et où la coche appartient. Je souhaite que toutes les réponses soient si pédagogiques dans leurs explications.
Louis
Pourriez-vous intégrer cela ( plus de chiffres ) comme exemple pour une autre prime?
Louis
10

Les "pilotes CPU" existent rarement, et certainement pas en tant que modules chargeables. Le "pilote CPU" occasionnel serait nécessaire pour certaines variations du contrôle multicœur ou de la gestion des interruptions (par exemple, AMD dual-cores avait besoin d'un pilote WinXP pour une utilisation complète). Sinon, la plupart des OS sont configurés et construits pour accéder directement au CPU. Si un problème apparaît et est grave, le code du noyau est corrigé et une mise à jour du noyau est publiée.

Les GPU ne sont plus seulement des périphériques; ils sont devenus des co-processeurs. Le «pilote GPU» ne fournit pas seulement un accès aux périphériques, il inclut des algorithmes de traitement (c'est-à-dire des sous-programmes graphiques) pour le GPU intégré au pilote. La taille de ces "pilotes" est un cadeau / indice. Ce sont ces algorithmes / sous-programmes qui sont améliorés.

sciure
la source
2
Cela explique pourquoi les téléchargements de pilotes pour ma carte dépassent maintenant les 200 Mo.
Louis
Je doute vraiment qu'il y ait 200 Mo de code dans ces pilotes. Je serais surpris s'il s'agissait de plus d'une poignée de Mo concernant tous ces algorithmes. >.>
user541686
1
@Mehrdad par curiosité, j'ai ouvert le programme d'installation EXE avec 7-zip pour le pilote de Nivida. le dossier Display.Driver fait 147 Mo, il y a un exe qui fait 31 Mo, tous les autres fichiers au-dessus de 660 Ko sont une DLL.
Scott Chamberlain
@Scott: Cet exe est presque certainement une archive de plus de fichiers contenant le code réel . Je m'attends à ce que les fichiers réels soient une poignée de mégaoctets tout au plus ... modulo toutes les ressources qu'ils pourraient contenir, qui ne sont pas du code.
user541686
0

Ce ne sont pas seulement les pilotes, c'est le GPU lui-même. Un GPU est spécialisé dans divers types de calculs (par exemple, FFT) et de manipulation de mémoire. Il peut fonctionner en parallèle sur la plupart des tâches données et le rendre plus efficace qu'un CPU à usage général.

Avec une meilleure connaissance des programmes en cours d'exécution, vous pouvez optimiser la manipulation de la mémoire ou les processus de calcul pour ces programmes. Le GPU est très polyvalent dans la façon de faire des calculs et d'effectuer des manipulations de mémoire, de sorte que le firmware ou le pilote parfait doit encore être écrit. ;) Il y a beaucoup de place pour des améliorations.

La plupart des autres appareils ne sont pas aussi polyvalents dans son utilisation. La plupart du matériel sur un PC doit fonctionner selon ses spécifications, suivre les protocoles, donc le pilote n'a pas besoin d'être optimisé.

A, oublié le CPU. > _ <Le CPU peut être optimisé. La plupart des nouveaux modèles de CPU ont un firmware programmable, mais l'augmentation des performances ne vaut pas la peine. Il est uniquement utilisé pour corriger les erreurs dans le processus de construction du matériel.

user178979
la source
"La plupart des nouveaux modèles de CPU contiennent un microprogramme programmable", veuillez expliquer.
Tim