Comment mon pilote d'écran gère-t-il autant de données?


61

Je viens de faire quelques calculs rapides:

Sur mon MacBook, la résolution est de 2560x1440, multipliée par 24 bits. Pour les couleurs, nous obtenons 11,05 Mo pour une seule image ou 663 Mo par seconde à 60 ips .

J'imagine qu'il y a une certaine compression, mais par exemple lorsque je bouge avec trois doigts sur mon pavé tactile, c'est assez aléatoire, ce qui se passe ensuite à l'écran et presque tous les pixels changent. Identique à presque toutes les autres interactions.

Veuillez expliquer si mes calculs sont erronés et comment ces données sont-elles transférées de ma carte graphique à mon écran? Quelle est la largeur des bus entre ma carte graphique et mon écran? Peut-être expliquer en quelques mots comment un écran stocke des pixels? Registres à décalage? Cache?


7
"Peut-être expliquer en quelques mots comment un écran stocke des pixels?" L’affichage ne stocke pas les données de pixels, c’est tout ce qui est géré par la RAM de la carte graphique (ou de la RAM système pour les graphiques intégrés). La RAM a facilement plusieurs bande passante GB / s. Les trames sont envoyées à l'écran après un protocole, ainsi les données sont disponibles car elles sont nécessaires à l'affichage.
ks0ze

3
Pourquoi pensez-vous qu'il existe une compression? Que pensez-vous qu'il se passe lorsque les données ne sont pas compressibles? Pensez-vous que l'affichage tombe en arrière?
Mehrdad

3
@Aresloom: Ah, je vois. Une compression avec perte serait un moyen, oui. :) Je pensais que tu pensais à sans perte!
mercredi

2
@ ks0ze certains panneaux plus récents stockent le dernier écran qu'ils ont été envoyés. La mise en cache sur celui-ci consomme moins d'énergie que le processeur graphique, qui pompe une image statique 60 fois par seconde. anandtech.com/show/7208/understanding-panel-self-refresh
Dan Neely

2
Est-ce que les écrans portables modernes utilisent encore LVDS? Il y a une demi-douzaine d'années, les sociétés de GPU envisageaient de le supprimer en même temps que le VGA (qui est sorti de la génération actuelle de GPU en natif) en faveur du port d'affichage intégré.
Dan Neely

Réponses:


69

Vos calculs sont corrects en substance. Pour un signal 1440p60Hz, vous avez un débit de données de 5,8 Gbps une fois que vous avez également pris en compte le temps de suppression (bordure de pixel non visible dans la sortie d'image).

Pour HDMI / DVI, un codage 10 / 8b est utilisé, ce qui signifie que bien que vous ayez à dire 24 bits de données couleur par pixel, ce dernier est en fait envoyé lorsque les données sont codées et que des mots de contrôle de protocole sont ajoutés. Aucune compression n'est effectuée, les données brutes sont envoyées, ce qui signifie que vous avez besoin d'une bande passante de données de 7,25 Gbps .

Encore une fois en regardant HDMI / DVI. Il utilise la norme de signalisation "TDMS" pour le transfert de données. La norme HDMI V1.2 prescrit un maximum de 4,9 Gbps pour un lien unique (3 lignes de données série + 1 ligne d’horloge) ou, dans le cas du Dual-Link DVI, un maximum de 9,8 Gbps (6 lignes de données série, je pense ). La bande passante est donc plus que suffisante pour réaliser une résolution 1440p60 via un DVI Dual-Link, mais pas via une HDMI V1.2.

Dans la norme HDMI V1.3 (la plupart des appareils ont été passés à la V1.4a, qui correspond à la même bande passante que la 1.3), la bande passante a été doublée à environ 10 Gbps, ce qui prend en charge une résolution de 1440p60.

Par exemple, DisplayPort a 4 flux de données série, chacun capable (en V1.1) de 2,16 Gbps par flux (en tenant compte du codage). Ainsi, avec un lien V1.1, vous pouvez créer facilement 1440p60 avec les 4 flux. Ils ont également publié une norme plus récente, la V1.2, qui double ce nombre à 4,32 Gbps / flux, permettant ainsi un UHD à 60Hz. Il existe une version plus récente qu'ils ont encore poussée à 6.4 Gbps / flux .


Au départ, ces chiffres semblent énormes, mais en réalité moins quand on considère l’USB 3.0. Cela a été publié avec un débit de données de 5 Gbps sur un seul câble (en fait deux, un pour TX, un pour RX, mais je digresse). PCIe, que votre carte graphique utilise en interne, fonctionne actuellement à une vitesse allant jusqu'à 8 Gbit / s via une seule paire différentielle. Il n'est donc pas surprenant que les interfaces de données externes se rattrapent.


Mais la question demeure, comment fait-on? Lorsque vous pensez à VGA, il s’agit de fils simples pour les données R, V et B qui sont envoyés au format analogique. Comme nous le savons, l’analogique est très sensible au bruit, et le débit des DAC / ADC est également limité, ce qui limite énormément ce que vous pouvez faire passer (sachant que vous pouvez à peine faire 1440p60Hz sur VGA si vous êtes chanceux).

Cependant, avec les normes modernes, nous utilisons des normes numériques qui sont beaucoup plus insensibles au bruit (il suffit de distinguer le plus haut ou le plus bas plutôt que toutes les valeurs entre les deux), et vous supprimez également le besoin de conversion entre analogique et numérique.

De plus, l’avènement des standards différentiels sur les terminaisons simples aide beaucoup car vous comparez maintenant la valeur entre deux fils (différence + ve = 1, différence -ve = 0) plutôt que de comparer un seul fil avec un certain seuil. Cela signifie que l'atténuation est moins un problème, car elle affecte les deux fils de la même manière et s'atténue jusqu'à la tension du point médian - la "différence de tension" de l'œil devient plus petite, mais vous pouvez toujours savoir si elle est + ve ou -ve même si ce n'est que 100 mV ou moins. Les signaux asymétriques, une fois atténués, risquent de tomber en dessous de votre seuil et de devenir indiscernables, même si l'amplitude est toujours égale ou supérieure à 1V.

En utilisant une liaison série sur une liaison parallèle, nous pouvons également utiliser des débits de données plus rapides, car l’asymétrie cesse de poser problème. Dans un bus parallèle, disons large 32 bits, vous devez adapter parfaitement les caractéristiques de longueur et de propagation de 32 câbles afin que les signaux ne se décalent pas (décalage). Dans une liaison série, vous ne disposez que d’un seul câble, vous ne pouvez donc pas biaiser.


TL; DR Les données sont envoyées au débit binaire complet calculé (plusieurs Gbps), sans compression. Les techniques modernes de signalisation des liaisons numériques en série sur des paires différentielles rendent cela possible.


De plus, je pense que certains écrans HDMI utilisaient 2 liens HDMI 1.2v pour obtenir l'image, divisant efficacement l'écran en 2. Cela donnerait une bande passante combinée essentiellement de 9,8 Gbps.
Ismael Miguel

5
@Aresloom 5GHz est le point où pratiquement tous les processeurs commencent à fondre en raison du nombre considérable de transistors qui commutent simultanément et génèrent des quantités massives de chaleur. Cela ne signifie pas que 5 GHz est la plus haute horloge pour tout , il s'agit de chaleur (et quel matériau vous utilisez - le silicium n'est pas toujours le meilleur). Le meilleur exemple auquel je puisse penser est un DSAX96204Q Keysight Infinnium dans lequel chacun des quatre frontaux est équipé d’un échantillonneur au phosphure d’indium à 80 GHz! Mais cet échantillonneur ne contient qu'une vingtaine de transistors et il consomme plusieurs watts (les processeurs modernes en ont des milliards )
Sam

4
@Aresloom 340 MHz serait la fréquence d'horloge, le débit de données est sérialisé de telle sorte que (dans TDMS par exemple) 10 bits soient envoyés sur un câble à chaque cycle d'horloge - de sorte qu'une horloge à 340 MHz produirait 3,4 Gbps. Il ne s’agit que des câbles et du matériel de (dé) sérialisation (SERDES) à la périphérie des CI vidéo qui fonctionnent à ces débits de données série. Après le matériel SERDES, il y a un bus parallèle en interne qui redescend à la fréquence la plus basse. Les blocs SERDES peuvent fonctionner très rapidement - PCIe est de 8 Gbps par voie, de sorte que les blocs SERDES fonctionnent à 4 GHz (en utilisant les deux bords d'horloge pour les bits - DDR).
Tom Carpenter

1
8b / 10b améliore le rejet d'erreur car il est plus facile de détecter les transitions que les états dans les signaux rapides. Cet encodage garantit qu’il n’y aura pas trop de zéros ou de zéros consécutifs.
pjc50

1
@curiousdannii C'est un cycle intéressant, n'est-ce pas? Nous avons d’abord commencé avec le port série (par exemple UART), qui était beaucoup trop lent (disons, 115 kbps maximum). Ensuite, nous sommes allés sur des bus parallèles comme IDE, qui dépassaient environ 66 MHz à 16 bits, soit environ 1 Gbps. Nous sommes ensuite revenus en série car il s’est avéré que nous pouvions aller très vite avec les bus différentiels. Mais maintenant, la série n’est plus assez rapide, nous avons donc recours à une sorte de série parallèle: de multiples voies de bus série individuels pouvant être traitées sont traitées de manière totalement distincte, puis toute inclinaison de voie à voie est corrigée avec des FIFO.
Tom Carpenter

19

Les ordinateurs modernes sont étonnamment rapides. Les gens chargeront volontiers des vidéos Full HD à 30 images par seconde sans se rendre compte que cela implique des milliards d'opérations arithmétiques par seconde. Les joueurs ont tendance à être un peu plus conscients de cela; une GTX 1060 vous rapportera 4,4 TFLOPS ( billion d’ opérations en virgule flottante par seconde).

Veuillez expliquer si mes calculs sont erronés et comment ces données sont-elles transférées de ma carte graphique à mon écran?

Quelle est la largeur des bus entre ma carte graphique et mon écran?

Une autre réponse a abordé la nature multi-gigabits de HDMI, DisplayLink, etc.

Peut-être expliquer en quelques mots comment un écran stocke des pixels? Registres à décalage? Cache?

L'écran lui-même ne stocke, en théorie, aucune donnée d'image.

(Certains écrans, notamment les téléviseurs, stockent une image ou deux pour appliquer le traitement des images. Cela augmente la latence et est impopulaire auprès des joueurs.)

Le sous-système graphique d’un ordinateur stocke les pixels dans une mémoire DRAM ordinaire. En règle générale, il ne redessine pas l'intégralité du processeur à chaque image, mais confie certaines fonctionnalités à des sous-systèmes dédiés et à un compositeur . Un compositeur permettra, par exemple, à chaque fenêtre du bureau d'être stockée sous la forme d'un ensemble distinct de pixels, qui peuvent ensuite être déplacés, défilés ou zoomés par le matériel dédié. Cela devient assez évident avec le défilement sur les appareils mobiles - vous pouvez aller très vite jusqu'à ce que vous manquiez de pixels pré-calculés "hors écran" et que le logiciel doive s'arrêter et en redonner un peu plus dans les tampons du compositeur.

Les jeux sont redessinés à chaque image, et il y a beaucoup de littérature sur la manière dont une scène est construite. Ceci est construit dans un framebuffer sur la carte graphique qui est ensuite transmis tandis que la trame suivante est dessinée dans une mémoire tampon différente.

Le décodage vidéo est généralement attribué également au matériel dédié, notamment H.264.


11

La liaison entre la carte graphique et le panneau LCD est assurée par plusieurs paires différentielles à grande vitesse utilisant la signalisation TMDS , généralement appelée "voies". On utilise généralement quatre voies. On peut donc dire que le bus a une largeur de 4 bits. Pour plus de détails, il existe une réponse stackhexchange .

Chaque modèle de panneau LCD est généralement produit avec plusieurs interfaces incarnées. Il faut donc être prudent et regarder les suffixes lorsque vous essayez de remplacer un panneau endommagé. La liaison numérique la plus moderne (HDMI 1.4) a 10,2 Gbps, soit seulement 2,5 Gbps par voie. Dans vos calculs (663 Mbps), il totalise 1,2 Gbps par voie (en supposant 4 voies), ce qui n’est pas très élevé (par exemple, SATA3 a 6 Gbps).

ADDITION sur des panneaux LCD. L’écran à matrice active tente en réalité de stocker l’image de la trame (données de pixels) dans des condensateurs associés à des "cellules nématiques torsadées" (celles qui contrôlent la polarisation du film). Le problème est que la taille des limites de stockage analogique doit être un compromis entre la durée de stockage et la vitesse de commutation de pixels. Il ne peut donc pas être volumineux, perd rapidement son potentiel stocké et nécessite par conséquent un rafraîchissement périodique . Chaque cellule de pixel est connectée à des lignes de données et d’adresses via un transistor (élément "actif"), voir cet article de Tomshardware . Le pilote-contrôleur LCD multiplexe les lignes de données et d’adresses ligne par ligne, maintenant ainsi l’image affichée. L'image elle-même est stockée dans une mémoire tampon (RAM) à l'intérieur du contrôleur graphique.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.