Was unterscheidet GPU-Treiber von anderen Gerätetreibern, was Leistungsoptimierungen ermöglicht?

12

Es sieht so aus, als ob die beiden großen GPU-Hersteller ständig aktualisierte Treiber veröffentlichen, die hier und da eine kleine Leistungssteigerung bewirken. Wenn sie für dasselbe Spiel spielen, summiert sich das mit der Zeit.

Warum hören wir in diesem Zusammenhang nie, dass AMD oder Intel CPU-Treiber für eine bestimmte App oder Version von Windows oder so etwas optimieren?

Louis
quelle
1
In Bezug auf die VTCs: Dies ist nicht mehrdeutig. Es gibt spezielle Überlegungen, was mit GPU- (und CPU-) Treibern optimiert wird und warum.
Ben Richards
1
CPU-Anbieter veröffentlichen Updates. Siehe z. B. downloadcenter.intel.com/ (klicken Sie ganz rechts auf Firmware)
derobert 12.12.12
@derobert - Interessant, Intel hat offensichtlich nicht die Absicht, das Pentium-Fiasko zu wiederholen. Allerdings ist dieser Updates für Prozessor - Mikrocode und ist nicht „CPU - Treiber“. Der Mikrocode wird auf einer niedrigeren Ebene ausgeführt als der Computercode der Kernel- und EXE- Dateien.
Sägemehl
@sawdust der CPU-Mikrocode (zumindest teilweise) ist dafür verantwortlich, die x86-Anweisungen, die die CPU empfängt, in die tatsächlichen Operationen zu übersetzen, die sie ausführt. Also ist es den Grafiktreibern eigentlich etwas ähnlich. Intel kümmert sich natürlich viel mehr um die Korrektheit als nVidia, daher handelt es sich bei den Updates wahrscheinlich hauptsächlich um Bugfixes.
Derobert

Antworten:

13

Erstens gibt es manchmal Fälle, in denen ein Treiber-Patch veröffentlicht wird, der die Leistung oder Effizienz einer bestimmten CPU erhöht. Aber offensichtlich stellen Sie diese Frage, weil sie einfach nicht so häufig ist. Das Konzept der CPU-Treiberoptimierungen ist jedoch ähnlich.

Eine GPU ist eine sehr komplizierte Schaltung. Es ist vorhanden, um bestimmte Aufgaben auszulagern, deren Ausführung auf einer CPU sehr lange dauert. Sie erhalten Datensätze und Anweisungen, wie sie mit diesen Daten umgehen sollen. Die GPU muss in der Lage sein, die Daten in einer verwaltbaren Weise anzuordnen und die Anweisungen zu interpretieren, um anzugeben, was zu tun ist. Dann muss es eine Reihe von mathematischen Operationen an den Daten ausführen. Danach müssen die Daten erneut sortiert und die Ergebnisse nach Abschluss an das Betriebssystem zurückgesendet werden. Dies ist eine sehr vereinfachte Beschreibung der Computergrafik-Pipeline . Es müssen mehrere Schritte ausgeführt werden, bevor die Daten für das Programm bereit sind.

Da die GPU nun Befehlssätze akzeptieren und sehr komplizierte mathematische Operationen in der Hardware implementieren muss, gibt es bestimmte Dinge, von denen bekannt ist, dass sie schneller oder langsamer durch diese Pipeline laufen. Beim Schreiben eines Treibers für ein Gerät werden die an das Gerät gesendeten Daten und Anweisungen interpretiert und übersetzt, damit das Gerät sie verstehen kann. Wenn ein Fahrer dies tut, kann er entscheiden, wie die Daten an das Gerät gesendet werden sollen, damit die Aufgaben so schnell wie möglich ausgeführt werden. Ein Fahrer hat jedoch im Allgemeinen nicht viele Informationen darüber, was das Programm, das er bedient, tut. Alles, was es vom Programm erhält, sind die API-Aufrufe ("zeichnen Sie eine Linie", "färben Sie einen Punkt", "schattieren Sie ein Dreieck" usw.). Die Annahmen, die sich daraus ergeben können, sind also nicht sehr gut.

Wenn AMD oder nVidia ein Treiberupdate veröffentlichen, das Leistungsverbesserungen für bestimmte Spiele enthält, bedeutet dies, dass der Treiber erkennt, welches Spiel die Grafikhardware aufruft, und über eine Reihe von fest codierten Annahmen verfügt, die bekannt sind, wie das Spiel ist umgesetzt. Es kann sein, dass das Spiel eine Menge Texturbilder hat, die schnell in den Speicher verschoben werden müssen, oder dass viel Farbe im laufenden Betrieb gemischt wird, um bestimmte Lichteffekte zu erzielen. In der Regel werden in einem Spiel kleine Programme (sogenannte "Shader") implementiert, die beschreiben, wie diese Berechnungen durchgeführt werden, und diese werden zur Ausführung an die GPU gesendet. Wenn der Fahrer weiß, wie das Spiel die Hardware verwendet, kann er die Daten organisieren und Anweisungssätze auswählen, die die gewünschte Aufgabe auf eine Weise ausführen, die den Durchsatz und die Effizienz erhöht.

Manchmal können jedoch nach dem Versand des Produkts in einem Teil der GPU Fehler auftreten. Es mag undurchsichtig genug sein, bei der Validierung des Chips übersehen zu werden, aber es könnte sich herausstellen, dass es in einem bestimmten Spiel, das darauf trifft, zu einem fehlerhaften oder unerwünschten Verhalten (oder sogar zu Abstürzen) kommt. In diesem Fall erkennt der Treiber diesen fehlerhaften Zustand und kann ihn umgehen, indem er entweder Berechnungen auf die CPU-Seite verlagert oder die Art und Weise ändert, in der Daten an die GPU übertragen werden, damit diese nicht in diesen Zustand übergeht. Diese werden wiederum in Form von Treiberupdates veröffentlicht.

Im Grunde ändert sich nicht die Leistung der Hardware selbst, sondern lediglich die Art und Weise, wie die Hardware verwendet wird, damit sie effizienter und schneller mit demselben Datensatz arbeiten kann.

Ben Richards
quelle
Da die Treiberingenieure verstehen, wie ein Spiel implementiert wird, frage ich mich, ob diese Nvidia-Startbildschirme in einigen Spielen mehr als nur Werbung sind.
Louis
2
@ Louis Sie sind nicht nur Anzeigen. Dies liegt daran, dass NVidia besondere Beziehungen zu bestimmten Spielestudios unterhält und den Entwicklern Hilfestellung bei der Optimierung des Spielecodes für NVidia-Grafikhardware bietet. AMD tut dies auch (gelegentlich wird in einem Spiel ein AMD-Logo angezeigt), aber NVidia war in der Vergangenheit viel stärker vertreten.
Ben Richards
Wenn ich das noch einmal lese, sehe ich, dass es eine großartige Antwort ist und wo das Häkchen hingehört. Ich wünschte, alle Antworten wären so lehrreich in ihren Erklärungen.
Louis
Würden Sie dies ( mehr Zahlen ) als Beispiel für ein anderes Kopfgeld integrieren?
Louis
10

"CPU-Treiber" gibt es selten und schon gar nicht als ladbare Module. Der gelegentliche "CPU-Treiber" würde für einige Variationen der Multicore-Steuerung oder Interrupt-Behandlung benötigt (z. B. brauchten AMD-Dual-Cores einen WinXP-Treiber für die volle Auslastung). Ansonsten sind die meisten Betriebssysteme so konfiguriert und gebaut, dass sie direkt auf die CPU zugreifen können. Wenn ein schwerwiegendes Problem auftritt, wird der Kernel-Code gepatcht und ein Kernel-Update veröffentlicht.

GPUs sind nicht mehr nur Peripheriegeräte. Sie haben sich zu Co-Prozessoren entwickelt. Der "GPU-Treiber" bietet nicht nur Gerätezugriff, sondern enthält auch Verarbeitungsalgorithmen (dh Grafik-Unterprogramme) für die im Treiber enthaltene GPU. Die Größe dieser "Treiber" ist ein Werbegeschenk / Hinweis. Es sind diese Algorithmen / Unterprogramme, die verbessert werden.

Sägespäne
quelle
2
Das erklärt, warum die Treiber-Downloads für meine Karte jetzt über 200 MB betragen.
Louis
Ich bezweifle wirklich, dass in diesen Treibern Code im Wert von 200 MB enthalten ist . Es würde mich wundern, wenn es in Bezug auf all diese Algorithmen mehr als eine Handvoll MB wären. >.>
user541686
1
@Mehrdad aus Neugier habe ich das Installationsprogramm EXE mit 7-zip für Nividas Treiber geöffnet. Der Display.Driver-Ordner ist 147 MB ​​groß, es gibt eine Exe mit 31 MB, jede andere Datei mit mehr als 660 KB ist eine DLL.
Scott Chamberlain
@Scott: Diese exe ist mit ziemlicher Sicherheit ein Archiv mit mehr Dateien, die den eigentlichen Code enthalten. Ich erwarte, dass die eigentlichen Dateien höchstens eine Handvoll Megabyte groß sind ... modulo alle Ressourcen, die sie enthalten könnten, die kein Code sind.
user541686
0

Es sind nicht nur die Treiber, es ist die GPU selbst. Eine GPU ist auf verschiedene Arten von Berechnungen (z. B. FFT) und Speichermanipulation spezialisiert. Es kann bei den meisten Aufgaben parallel arbeiten und ist effektiver als eine Allzweck-CPU.

Mit besseren Kenntnissen der ausgeführten Programme können Sie die Speichermanipulation oder Berechnungsprozesse für diese Programme optimieren. Die GPU ist sehr vielseitig in der Durchführung von Berechnungen und Speichermanipulationen, also die perfekte Firmware oder Treiber geschrieben werden muss. ;) Es gibt viel Raum für Verbesserungen.

Die meisten anderen Geräte sind nicht so vielseitig einsetzbar. Die meiste Hardware auf einem PC muss in den Spezifikationen ausgeführt werden und den Protokollen folgen, sodass der Treiber nicht optimiert werden muss.

A, habe die CPU vergessen. > _ <Die CPU kann optimiert werden. Die meisten neuen CPU-Modelle verfügen über eine programmierbare Firmware, aber die Leistungssteigerung ist den Aufwand nicht wert. Es wird nur verwendet, um Fehler im Hardware-Erstellungsprozess zu korrigieren.

user178979
quelle
"Die meisten neuen CPU-Modelle enthalten eine programmierbare Firmware", erläutern Sie bitte.
Tim