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?
Réponses:
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.
la source
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?).
la source