Comment un GPU / CPU communique-t-il avec une sortie d'affichage standard? (HDMI / DVI / etc) [fermé]

14

Je suis intéressé par la façon dont le cpu / gpu présente (quel que soit l'équipement qu'il fait) les données vidéo après leur traitement.

On m'a dit que la vidéo est traitée par le CPU / GPU puis envoyée à un circuit intégré par une série à haute vitesse qui convertit le signal série en une sortie d'affichage appropriée, mais je ne peux pas le confirmer en recherchant en ligne.

Je suis intéressé par la signalisation et je ne peux pas rechercher de protocoles / etc parce que je ne sais pas ce que je recherche. Ainsi, le CPU / GPU interagit-il directement avec les sorties vidéo (je peux trouver ces protocoles facilement) ou y a-t-il un "intermédiaire" pour ainsi dire et si oui quel est-il, type de puce / etc?

Craig Lafferty
la source
Vous pouvez acheter des RAMDAC vidéo en tant que parties distinctes: ti.com.cn/cn/lit/ds/symlink/tvp3703.pdf bien que cela ne signifie pas qu'il sera séparé sur votre carte graphique.
pjc50

Réponses:

18

L'image affichée sur le moniteur est stockée dans la RAM vidéo de votre ordinateur sur la carte graphique dans une structure appelée framebuffer. Les données du framebuffer sont généralement de couleur RVB 24 bits, il y aura donc un octet pour le rouge, un pour le vert et un pour le bleu pour chaque pixel de l'écran, éventuellement avec quelques octets de remplissage supplémentaires. Les données de la RAM vidéo peuvent être générées par le GPU ou par le CPU. La RAM vidéo est lue en continu par un composant DMA spécialisé sur la carte vidéo et envoyée au moniteur. La sortie du signal vers le moniteur est soit un signal analogique (VGA) où les composants de couleur sont envoyés via des convertisseurs numériques vers analogiques avant de quitter la carte, soit un signal numérique dans le cas de DVI, HDMI ou DisplayPort. Le matériel responsable de cela génère également les signaux de synchronisation horizontale et verticale ainsi que tous les retards appropriés, de sorte que les données d'image ne sont envoyées au moniteur que lorsqu'il est prêt. Dans le DVI et le HDMI, le flux d'informations sur les couleurs des pixels est codé et sérialisé et envoyé via TMDS (transition différentielle minimisée) au moniteur. DisplayPort utilise un codage 8b / 10b. L'encodage sert à plusieurs fins. Premièrement, TMDS minimise les transitions de signaux pour réduire les émissions EMI. Deuxièmement, TMDS et 8b / 10b sont des protocoles DC symétriques afin que les condensateurs de blocage DC puissent être utilisés pour éliminer les problèmes avec les boucles de terre. Troisièmement, 8b / 10b garantit une densité de transition suffisamment élevée pour permettre la récupération de l'horloge au niveau du récepteur, car DisplayPort ne distribue pas d'horloge distincte. le flux d'informations sur la couleur des pixels est codé et sérialisé et envoyé via TMDS (signalisation différentielle à transition minimisée) au moniteur. DisplayPort utilise un codage 8b / 10b. L'encodage sert à plusieurs fins. Premièrement, TMDS minimise les transitions de signaux pour réduire les émissions EMI. Deuxièmement, TMDS et 8b / 10b sont des protocoles DC symétriques afin que les condensateurs de blocage DC puissent être utilisés pour éliminer les problèmes avec les boucles de terre. Troisièmement, 8b / 10b garantit une densité de transition suffisamment élevée pour permettre la récupération de l'horloge au niveau du récepteur, car DisplayPort ne distribue pas d'horloge distincte. le flux d'informations sur la couleur des pixels est codé et sérialisé et envoyé via TMDS (signalisation différentielle à transition minimisée) au moniteur. DisplayPort utilise un codage 8b / 10b. L'encodage sert à plusieurs fins. Premièrement, TMDS minimise les transitions de signaux pour réduire les émissions EMI. Deuxièmement, TMDS et 8b / 10b sont des protocoles DC symétriques afin que les condensateurs de blocage DC puissent être utilisés pour éliminer les problèmes avec les boucles de terre. Troisièmement, 8b / 10b garantit une densité de transition suffisamment élevée pour permettre la récupération de l'horloge au niveau du récepteur, car DisplayPort ne distribue pas d'horloge distincte.

De plus, pour HDMI et DisplayPort, les données audio sont également envoyées à la carte graphique pour être transmises au moniteur. Ces données sont insérées dans des pauses dans le flux de données entre les images vidéo. Dans ce cas, la carte vidéo se présentera comme un récepteur audio au système d'exploitation et les données audio seront transférées via DMA sur la carte pour être incluses avec les données vidéo.

Maintenant, vous vous rendez probablement compte que pour un écran 1920 x 1080 à 4 octets par pixel, vous n'avez besoin que d'environ 8 Mo pour stocker l'image, mais la RAM vidéo de votre ordinateur est probablement plusieurs fois plus grande. Cela est dû au fait que la RAM vidéo n'est pas uniquement destinée à stocker le framebuffer. La RAM vidéo est directement connectée au GPU, un processeur spécial conçu pour un rendu 3D et un décodage vidéo efficaces. Le GPU utilise son accès direct à la RAM vidéo pour accélérer le processus de rendu. En fait, obtenir des données de la mémoire principale dans la mémoire vidéo est un peu un goulot d'étranglement car le bus PCI qui connecte la carte vidéo au CPU et à la mémoire principale est beaucoup plus lent que la connexion entre le GPU et la RAM vidéo.

alex.forencich
la source
7

Les différentes sorties d'affichage modernes sont essentiellement des trains binaires série. Le débit binaire est trop élevé pour un processeur (ou s'il pouvait suivre, il réclamerait trop de son temps de traitement). Un morceau de mémoire est mis de côté pour contenir les bits de l'image. Un matériel dédié lit le contenu de la mémoire et le diffuse. Cette pièce est similaire à un contrôleur DMA et en fait assez simple. Ce n'est qu'une petite partie d'un GPU moderne, qui se préoccupe principalement de créer cette image en mémoire à partir de commandes GPU de niveau supérieur.

La mémoire qui contient l'image vidéo peut faire partie de la mémoire principale (bon marché) ou d'une mémoire dédiée accessible simultanément par le «DMA» et le CPU et / ou le GPU. Le `` DMA '' doit être configuré avec différents paramètres, par exemple la largeur et la hauteur des pixels, la profondeur des couleurs, l'emplacement de départ en mémoire, etc.

Sur les ordinateurs modernes, le GPU est un processeur (très spécialisé) qui rivalise avec la vitesse du processeur principal (et la dépasse par lui-même). Il fait des choses comme générer une image psuido-3D à partir d'un tas d'objets 3D avec des textures et des sources de lumière. Tout cela peut être fait à l'intérieur de la mémoire vidéo, par le GPU. Le processeur délivre uniquement les objets, les textures et les sources de lumière.

Lire les données vidéo de la mémoire et les déplacer est un processus assez simple, mais cela doit être fait assez rapidement et tout le temps. Par conséquent, cette tâche est bien adaptée au matériel dédié et mal adaptée à un CPU. AFAIK les derniers ordinateurs qui avaient le CPU impliqué dans la génération du signal vidéo étaient le ZX80 / 81 et Spectrum. Sur ceux-ci, le CPU ne pouvait faire son propre travail que pendant le temps de retour (vertical?).

Wouter van Ooijen
la source
1
Ce sont d'excellentes informations. Le contrôleur DMA (ou un matériel similaire) accède donc directement à la mémoire vidéo? Et sur un système avec des graphiques intégrés qui utilise la RAM système, il accède directement à la RAM système? Désolé pour la simplicité de mes questions. Je suis un grand bricoleur, donc j'ai tendance à sauter dans des choses de niveau supérieur avec des connaissances de niveau inférieur. :)
Craig Lafferty
Et pour assurer le suivi, comment le contrôleur sait-il de quelle adresse dans la RAM «voler» la trame? Les images / bitmaps sont remplacées très rapidement et déplacées, je suppose.
Craig Lafferty
Votre dernier commentaire est correct: il est stocké dans un framebuffer , et pour la vidéo analogique est passé à un RAMDAC . L'adresse du tampon de trames peut être fixe ou spécifiée dans un registre de contrôle. Il existe différentes astuces impliquant l'échange de tampons d'images entre ou pendant les images, ou sur certains systèmes (Amiga), le changement de mode vidéo à mi-chemin d'une image.
pjc50
Pourquoi le processeur serait-il ralenti? N'est-il pas déjà obligé de traiter la vidéo pour que le contrôleur puisse l'utiliser? Je vais prendre une autre supposition ici et dire que le contrôleur lit la RAM encore et encore et que le CPU / GPU ne met à jour la RAM avec de nouvelles informations d'affichage que lorsque quelque chose a changé, donc par exemple le GPU mettra mon écran actuel dans sa RAM et lorsque je déplace mon curseur, il met à jour les pixels qui ont été modifiés. En attendant, le contrôleur lit la RAM environ 60 fois par seconde (sorte de FR standard je suppose).
Craig Lafferty
1
La RAM vidéo n'est pas seulement utilisée pour stocker l'image d'affichage, elle est également utilisée en interne par le GPU pour stocker les données de scène qui sont rendues dans le tampon d'images. Cela peut prendre beaucoup de place car le GPU doit avoir accès aux maillages 3D détaillés des objets ainsi qu'à toutes les données de texture de leurs surfaces.
alex.forencich