Wie geht mein Bildschirmtreiber mit so vielen Daten um?

61

Ich habe nur ein paar schnelle Berechnungen angestellt:

Auf meinem MacBook habe ich eine Auflösung von 2560x1440 multipliziert mit 24 Bit für Farben. Wir erhalten 11,05 MB für ein einzelnes Bild oder 663 MB pro Sekunde bei 60 fps .

Ich schätze, es gibt eine gewisse Komprimierung, aber wenn ich mich zum Beispiel mit drei Fingern über mein Touchpad bewege, das ist ziemlich zufällig, passiert was als nächstes auf dem Bildschirm und fast jedes Pixel ändert sich. Wie bei fast jeder anderen Interaktion.

Bitte erläutern Sie, ob meine Berechnungen falsch sind und wie diese Daten von meiner Grafikkarte auf meinen Bildschirm übertragen werden. Wie breit sind die Busse zwischen meiner Grafikkarte und meinem Bildschirm? Vielleicht kurz erklären, wie ein Display Pixel speichert? Schieberegister? Zwischenspeicher?

Felix Crazzolara
quelle
7
"Vielleicht kurz erklären, wie ein Display Pixel speichert?" Das Display speichert eigentlich nicht die Pixeldaten, die alle vom RAM auf der Grafikkarte (oder vom System-RAM für integrierte Grafiken) verwaltet werden. Der RAM hat leicht mehrere GB / s Bandbreite. Frames werden nach einem Protokoll an das Display gesendet, sodass die Daten so verfügbar sind, wie sie für die Anzeige benötigt werden.
ks0ze
3
Warum gibt es Ihrer Meinung nach eine Komprimierung? Was passiert Ihrer Meinung nach, wenn die Daten nicht komprimierbar sind? Denken Sie, dass das Display zurückfällt?
Mehrdad
3
@Aresloom: Ah, ich verstehe. Verlustbehaftete Komprimierung wäre eine Möglichkeit, ja. :) Ich dachte du denkst an verlustfrei!
Mehrdad
2
@ ks0ze Einige neuere Panels speichern den letzten Bildschirm, den sie gesendet haben. Das Zwischenspeichern dort verbraucht weniger Energie als die GPU, die ein statisches Bild 60 Mal pro Sekunde herauspumpt. anandtech.com/show/7208/understanding-panel-self-refresh
Dan Neely
2
Verwenden moderne Laptop-Displays immer noch LVDS? Vor einem halben Dutzend Jahren planten die GPU-Unternehmen gleichzeitig mit VGA (das aus der aktuellen Generation der nativen GPU-Ausgabe hervorgegangen ist), auf Embedded-Display-Port umzusteigen.
Dan Neely

Antworten:

70

Ihre Berechnungen sind im Wesentlichen korrekt. Bei einem 1440p60Hz-Signal haben Sie eine Datenrate von 5,8 Gbit / s, sobald Sie auch die Austastzeit berücksichtigen (nicht sichtbarer Pixelrand in der Bildausgabe).

Für HDMI / DVI wird eine 10 / 8b-Codierung verwendet, was bedeutet, dass tatsächlich 30 Bit gesendet werden, während die Daten codiert und Protokollsteuerwörter hinzugefügt werden, obwohl 24 Bit Farbdaten pro Pixel angegeben werden. Es wird überhaupt keine Komprimierung durchgeführt, die Rohdaten werden gesendet, sodass Sie eine Datenbandbreite von 7,25 Gbit / s benötigen .

Nochmal Blick auf HDMI / DVI. Für die Datenübertragung wird der Signalisierungsstandard "TDMS" verwendet. Der HDMI V1.2-Standard schreibt ein Maximum von 4,9 Gbit / s für einen Single-Link (3 serielle Datenleitungen + 1 Taktleitung) oder im Falle von Dual-Link-DVI ein Maximum von 9,8 Gbit / s (6 serielle Datenleitungen) vor ). Es ist also mehr als ausreichend Bandbreite vorhanden, um 1440p60 über einen Dual-Link-DVI-Anschluss zu übertragen, jedoch nicht über einen HDMI V1.2-Anschluss.

Im HDMI V1.3-Standard (die meisten Geräte übersprangen tatsächlich auf V1.4a, was der Bandbreite von 1.3 entspricht) wurde die Bandbreite auf etwa 10 Gbit / s verdoppelt, was 1440p60 unterstützen würde, und es ist auch genug Bandbreite für UHD bei 30 Hz (2160p30).

DisplayPort als weiteres Beispiel verfügt über 4 serielle Datenströme, von denen jeder (in Version 1.1 ) 2,16 Gbit / s pro Stream (unter Berücksichtigung der Codierung) unterstützt. Mit einer V1.1-Verbindung können Sie also problemlos 1440p60 mit allen 4 Streams ausführen. Sie haben auch einen neueren Standard veröffentlicht, V1.2, der diesen auf 4,32 Gbit / s / Stream verdoppelt und UHD bei 60 Hz ermöglicht. Es gibt noch eine neuere Version, die sie noch weiter auf 6,4 Gbit / s / Stream gebracht haben .


Anfangs klingen diese Zahlen gewaltig, aber tatsächlich nicht so sehr, wenn man USB 3.0 betrachtet. Das wurde mit einer Datenrate von 5 Gbit / s über nur ein einziges Kabel veröffentlicht (eigentlich zwei, eine für TX, eine für RX, aber ich schweife ab). PCIe, die Ihre Grafikkarte heutzutage intern verwendet, wird über ein einzelnes differentielles Paar mit bis zu 8 Gbit / s betrieben. Es ist also nicht verwunderlich, dass externe Datenschnittstellen aufholen.


Aber die Frage bleibt, wie es gemacht wird? Wenn Sie an VGA denken, besteht dies aus einzelnen Adern für R-, G- und B-Daten, die in einem analogen Format gesendet werden. Analog ist bekanntlich sehr anfällig für Rauschen, und der Durchsatz von DAC / ADCs ist ebenfalls begrenzt, so dass das, was Sie durchsetzen können, massiv eingeschränkt wird ( obwohl Sie mit etwas Glück kaum 1440p60Hz über VGA erreichen können).

Bei modernen Standards verwenden wir jedoch digitale Standards, die wesentlich unempfindlicher gegen Rauschen sind (Sie müssen nur zwischen hohen und niedrigen Werten unterscheiden und müssen nicht zwischen analogen und digitalen Werten konvertieren).

Darüber hinaus hilft die Verwendung von Differentialstandards über Single-Ended erheblich, da Sie jetzt den Wert zwischen zwei Drähten (+ ve Differenz = 1, -ve Differenz = 0) vergleichen, anstatt einen einzelnen Draht mit einem bestimmten Schwellenwert zu vergleichen. Dies bedeutet, dass die Dämpfung ein geringeres Problem darstellt, da beide Drähte gleichermaßen betroffen sind und bis zur mittleren Spannung gedämpft werden - das "Auge" (Spannungsunterschied) wird kleiner, aber Sie können immer noch feststellen, ob es + ve oder -ve ist wenn es nur 100 mV oder weniger ist. Single-ended-Signale, sobald das Signal gedämpft ist, können unter Ihren Schwellenwert fallen und nicht mehr unterscheidbar sein, selbst wenn die Amplitude immer noch 1 V oder mehr beträgt.

Durch die Verwendung einer seriellen Verbindung über eine parallele Verbindung können wir auch zu schnelleren Datenraten wechseln, da der Zeitversatz kein Problem mehr darstellt. In einem parallelen Bus, beispielsweise mit einer Breite von 32 Bit, müssen Sie die Länge und die Ausbreitungseigenschaften von 32 Kabeln perfekt aufeinander abstimmen, damit die Signale nicht gegeneinander phasenverschoben sind (Versatz). In einer seriellen Verbindung haben Sie nur ein einziges Kabel, so dass kein Versatz auftreten kann.


TL; DR Die Daten werden mit der von Ihnen berechneten vollen Bitrate (mehrere Gbit / s) ohne Komprimierung gesendet. Moderne Signalisierungstechniken von serialisierten digitalen Verbindungen über differentielle Paare machen dies möglich.

Tom Carpenter
quelle
Ich denke auch, dass einige HDMI-Displays 2 HDMI 1.2V-Links verwendeten, um das Bild zu erhalten, wodurch der Bildschirm effektiv in 2 geteilt wurde. Dies würde eine kombinierte Bandbreite von im Wesentlichen 9,8 Gbit / s ergeben.
Ismael Miguel
5
@Aresloom 5GHz ist der Punkt, an dem praktisch alle CPUs anfangen zu schmelzen, da die schiere Anzahl der Transistoren gleichzeitig schaltet und enorme Mengen an Wärme erzeugt. Es bedeutet nicht, dass 5 GHz der höchste Takt für alles ist , es kommt auf die Wärme an (und welches Material Sie verwenden - Silizium ist nicht immer das Beste). Das beste Beispiel, das ich mir vorstellen kann, ist ein Keysight Infinnium DSAX96204Q, bei dem jedes der vier Frontends einen Indium-Phosphid-Sampler hat, der bei 80 GHz tickt! Aber dieser Sampler hat nur ein paar Dutzend Transistoren und er brennt mehrere Watt (moderne CPUs haben Milliarden )
Sam
4
@Aresloom 340MHz wäre die Taktrate, die Datenrate wird so serialisiert, dass (zum Beispiel bei TDMS) in jedem Taktzyklus 10 Bit auf einem Kabel gesendet werden - ein 340MHz-Takt würde also 3,4 Gbit / s ergeben. Es sind nur die Kabel und (De-) Serialisierungs- (SERDES-) Hardware an der Peripherie der Video-ICs, die mit diesen seriellen Datenraten betrieben werden. Intern läuft nach der SERDES-Hardware wieder ein Parallelbus mit der niedrigeren Taktrate zurück. SERDES-Blöcke können sehr schnell ausgeführt werden - PCIe ist 8 Gbit / s pro Lane, daher werden die SERDES-Blöcke mit 4 GHz ausgeführt (wobei beide Taktflanken für Bits verwendet werden - DDR).
Tom Carpenter
1
8b / 10b verbessert die Fehlerunterdrückung, da Übergänge leichter erkannt werden können als Zustände in schnellen Signalen. Diese Kodierung garantiert, dass es nicht zu lange aufeinanderfolgende Einsen oder Nullen gibt.
pjc50
1
@curiousdannii Es ist ein interessanter Zyklus, nicht wahr? Zuerst haben wir mit seriellem (zB UART) begonnen, was viel zu langsam war (sagen wir 115kbps max). Dann gingen wir zu parallelen Bussen wie IDE, die bei etwa 66 MHz bei 16 Bit, also 1 Gbit / s oder so, ihren Höchststand erreichten. Dann sind wir zur Serienversion zurückgekehrt, da sich herausstellte, dass wir mit Differenzialbussen sehr schnell fahren können. Aber jetzt ist seriell nicht mehr schnell genug, und wir gehen von einer Art parallelen seriellen Bus aus - mehrere Spuren einzelner serieller Busse, die im Wesentlichen vollständig getrennt behandelt werden können, und dann wird jede Spur-zu-Spur-Abweichung mit FIFOs korrigiert.
Tom Carpenter
19

Moderne Computer sind überraschend schnell. Die Leute werden gerne Full-HD-Videos mit 30 Bildern pro Sekunde laden, ohne zu bemerken, dass dies Milliarden von Rechenoperationen pro Sekunde erfordert. Gamer sind sich dessen tendenziell etwas bewusster. Mit einer GTX 1060 erhalten Sie 4,4 TFLOPS ( Billionen Gleitkommaoperationen pro Sekunde).

Bitte erläutern Sie, ob meine Berechnungen falsch sind und wie diese Daten von meiner Grafikkarte auf meinen Bildschirm übertragen werden.

Wie breit sind die Busse zwischen meiner Grafikkarte und meinem Bildschirm?

Eine andere Antwort hat sich mit der Multi-Gigabit-Natur von HDMI, DisplayLink usw. befasst.

Vielleicht kurz erklären, wie ein Display Pixel speichert? Schieberegister? Zwischenspeicher?

Das Display selbst speichert theoretisch keine Bilddaten.

(Einige Bildschirme, insbesondere Fernseher, speichern ein oder zwei Bilder, um die Bildverarbeitung anzuwenden. Dies erhöht die Latenz und ist bei Spielern unbeliebt.)

Das Grafiksubsystem eines Computers speichert Pixel in einem gewöhnlichen DRAM. Normalerweise wird nicht bei jedem Frame das Ganze vom Prozessor neu gezeichnet, sondern ein Teil der Funktionalität wird an dedizierte Subsysteme und einen Compositor übergeben . Ein Compositor ermöglicht es beispielsweise, jedes Fenster auf dem Desktop als einen eigenen Satz von Pixeln zu speichern, die dann von der dedizierten Hardware verschoben, gescrollt oder gezoomt werden können. Dies wird beim Scrollen auf Mobilgeräten sehr deutlich. Sie können einen kurzen Weg zurücklegen, bis die vorberechneten Pixel "außerhalb des Bildschirms" aufgebraucht sind und die Software anhalten und weitere Elemente in den Puffern des Compositors rendern muss.

Spiele werden in jedem Bild neu gezeichnet, und es gibt eine Menge Literatur darüber, wie eine Szene aufgebaut wird. Dies ist in einem Framebuffer auf der Grafikkarte aufgebaut, der dann ausgesendet wird, während der nächste Frame in einen anderen Puffer gezogen wird.

Die Videodekodierung wird normalerweise auch auf dedizierter Hardware durchgeführt, insbesondere auf H.264.

pjc50
quelle
11

Die Verbindung zwischen Grafikkarte und LCD-Bildschirm wird über mehrere Hochgeschwindigkeits-Differentialpaare mithilfe von TMDS-Signalen hergestellt , die üblicherweise als "Fahrspuren" bezeichnet werden. Typischerweise werden vier Spuren verwendet, so dass man sagen kann, dass der Bus 4 Bit breit ist. Für einige weitere Details gibt es eine Stackhexchange-Antwort .

Jedes LCD-Panel-Modell wird normalerweise mit mehreren Schnittstellen-Inkarnationen hergestellt, daher muss man vorsichtig sein und die Suffixe beachten, wenn man versucht, ein defektes Panel auszutauschen. Die meisten modernen digitalen Verbindungen (HDMI 1.4) haben 10,2 Gbit / s oder nur 2,5 Gbit / s pro Spur. In Ihren Berechnungen (663 MBit / s) werden 1,2 Gbit / s pro Lane (unter der Annahme von 4 Lanes) berechnet, was nicht so viel ist (zum Beispiel hat SATA3 6 Gbit / s).

ZUSATZ auf LCD-Panels. Das Aktivmatrix-LCD versucht tatsächlich, das Einzelbild (Pixeldaten) in Kondensatoren zu speichern, die "Twisted Nematic Cells" (denjenigen, der die Filmpolarisation steuert) zugeordnet sind. Das Problem ist, dass die Größe der analogen Speicherkappen ein Kompromiss zwischen Speicherzeit und Geschwindigkeit des Pixelwechsels sein muss. Es kann also nicht groß gemacht werden, verliert schnell das gespeicherte Potenzial und erfordert daher eine regelmäßige Aktualisierung . Jede Pixelzelle ist über einen Transistor ("aktives" Element) mit Daten- und Adressleitungen verbunden, siehe diesen Tomshardware-Artikel . Die LCD-Treibersteuerung multiplext Daten- und Adressleitungen zeilenweise, wodurch das angezeigte Bild erhalten bleibt. Das Bild selbst wird in einem Bildspeicher (RAM) im Grafikcontroller gespeichert.

Ale..chenski
quelle