Les didacticiels de développement de systèmes d'exploitation identifient les données d'écran en écrivant directement sur VGA ou EGA ou Super VGA, mais ce que je n'obtiens pas, c'est la vraie différence entre écrire sur une adresse fixe pour l'affichage et écrire sur une carte vidéo directement, soit à bord ou amovible? Je veux juste la clarification de base de ma confusion à ce sujet sur ma question
Et comme ce n'est pas un cas si simple avec des variables dans les cartes, les interfaces de connexion, les bus, les architectures, le système sur une puce, les systèmes embarqués, etc., je trouve difficile de trouver un moyen de comprendre l'idée derrière ce 100% . Les adresses fixes différeraient-elles d'un GPU haut de gamme à un bas de gamme intégré? Pourquoi et pourquoi pas?
C'est l'un de mes objectifs en programmation d'héberger un noyau et de créer un système d'exploitation, et un rêve farfelu en effet. Ne pas comprendre la terminologie me gêne non seulement dans certains domaines, mais me fait paraître idiot sur les sujets du matériel.
EXTRA: Certaines de ces réponses actuelles parlent d'utiliser la mémoire adressable maximale du processeur dans les détails sur 16 bits. Le problème est quelques-uns de ces autres problèmes qui se posent:
Qu'en est-il de la mémoire de la carte? Cela n'aurait pas besoin de RAM système pour les données d'écran elles-mêmes.
2. Qu'en est-il des modes de bits supérieurs? Et ne pouvez-vous pas négliger le BIOS en mode réel (x86) et toujours adresser la mémoire via AL?
3.Comment le concept d'écriture sur une adresse fixe resterait-il inchangé sur un GPU avec une multitude de registres et des performances égales ou supérieures au microprocesseur réel?
Réponses:
Techniquement, VGA signifie Video Graphics Array , une norme vidéo 640x480 introduite en 1987. À l'époque, il s'agissait d'une résolution relativement élevée, en particulier pour un écran couleur.
Avant l' introduction de VGA, nous avions quelques autres normes graphiques, telles que les hercules qui affichaient soit du texte (80 lignes de 25 caractères) soit des graphiques monochromes haute définition relatifs (à 720x348 pixels).
À l'époque, les autres normes étaient le CGA ( adaptateur graphique couleur ), qui permettait également jusqu'à 16 couleurs avec une résolution allant jusqu'à 640x200 pixels. Le résultat ressemblerait à ceci:
Enfin, un standard PC remarquable était l'adaptateur graphique amélioré (EGA), qui permettait des résolutions jusqu'à 640 × 350 avec 64 couleurs.
(J'ignore les normes non PC pour garder ce rapport relativement court. Si je commence à ajouter des normes Atari ou Amiga - jusqu'à 4096 couleurs à l'époque! - alors cela deviendra assez long.)
Puis, en 1987, IBM a présenté l'ordinateur PS2. Il avait plusieurs différences notables par rapport à ses prédécesseurs, qui comprenaient de nouveaux ports pour les souris et les claviers (auparavant, les souris utilisaient des ports série à 25 broches ou 9 ports série, si vous aviez une souris); lecteurs standard de 3½ pouces et un nouvel adaptateur graphique avec une haute résolution et de nombreuses couleurs.
Cette norme graphique s'appelait Video Graphics Array . Il utilisait un connecteur à 3 rangées et 15 broches pour transférer des signaux analogiques vers un moniteur. Ce connecteur a duré jusqu'à il y a quelques années, lorsqu'il a été remplacé par des normes numériques supérieures telles que DVI et port d'affichage.
Après VGA
Les progrès ne se sont pas arrêtés aux normes VGA. Peu de temps après l'introduction du VGA, de nouveaux standards sont apparus, comme le 800x600 S uper VGA (SVGA), qui utilisait le même connecteur. (Hercules, CGA, EGA, etc. avaient tous leurs propres connecteurs. Vous ne pouviez pas connecter un moniteur CGA à une carte VGA, même si vous essayiez d'afficher une résolution suffisamment basse).
Depuis lors, nous sommes passés à des écrans de résolution beaucoup plus élevée, mais le nom le plus souvent utilisé reste VGA. Même si les noms corrects seraient SVGA, XVGA, UXGA, etc.
(Courtoisie graphique de Wikipedia)
Une autre chose qui s'appelle «VGA» est le connecteur DE15 utilisé avec la carte VGA d'origine. Ce connecteur généralement bleu n'est pas le seul moyen de transférer des «signaux VGA» analogiques vers un moniteur, mais c'est le plus courant.
Gauche: DB5HD Droite: connecteurs VGA alternatifs, généralement utilisés pour une meilleure qualité)
Une troisième façon d'utiliser «VGA» consiste à décrire une carte graphique, même si cette carte peut produire des résolutions entièrement différentes de VGA. L'utilisation est techniquement incorrecte, ou devrait au moins être une «carte compatible VGA», mais le langage courant ne fait pas cette différence.
Cela laisse écrire à VGA
Cela vient de la façon dont la mémoire sur un IBM XT a été divisée. Le processeur peut accéder jusqu'à 1 Mo (1024 Ko) de mémoire. Les 512 Ko inférieurs étaient réservés à la RAM, les 512 Ko supérieurs aux cartes d'extension, ROM, etc.
Cette zone supérieure est l'endroit où la mémoire des cartes VGA a été mappée. Vous pouvez y écrire directement et le résultat s'affichera à l'écran.
Ce n'était pas seulement utilisé pour VGA, mais aussi pour des alternatives de même génération.
( Source de la carte ASCII).
la source
Dx-nn
famille des connecteurs,x
c'est la taille de la coque,nn
c'est le nombre de broches. Shell B a la même taille qu'un port parallèle (ou un ancien port série à 25 broches à implémentation complète). Shell E est de la même taille que le port série. Donc, techniquement , le connecteur VGA à 15 broches serait DE-15, mais cela ne faisait jamais partie de la gamme originale de connecteurs. AFAIK, il n'a même jamais existé avant l'utilisation d'IBM sur les PS / 2 MCGA, VGA et 8514 / a. Wikipedia a une bonne explication: en.wikipedia.org/wiki/D-subminiatureÉcrire sur une "adresse fixe" consistait essentiellement à écrire directement sur une carte vidéo. Toutes ces cartes vidéo ISA vidéo (CGA, EGA, VGA) avaient essentiellement de la RAM (et des registres) mappés directement dans la mémoire du processeur et l'espace d'E / S.
Donc, lorsque vous avez écrit un octet dans un certain emplacement de mémoire, ce caractère (en mode texte) est immédiatement apparu à l'écran, car vous avez en fait écrit dans une mémoire située sur une carte vidéo, et la carte vidéo vient d'utiliser cette mémoire.
Tout cela semble très déroutant aujourd'hui, surtout si l'on considère que les cartes vidéo d'aujourd'hui sont parfois appelées VGA (et elles ressemblent aux "vraies" cartes VGA des années 1990). Cependant, même les cartes modernes émulent certaines des fonctionnalités de ces conceptions plus anciennes (vous pouvez démarrer DOS sur la plupart des PC modernes et utiliser des programmes DOS qui écrivent directement dans la mémoire vidéo). Bien sûr, de nos jours, tout est émulé dans le firmware de la carte vidéo.
la source
Il n'y a pas vraiment de différence: si vous écrivez à l'adresse de la mémoire vidéo, le matériel l'acheminera vers la carte vidéo.
Si vous écrivez votre propre système d'exploitation, vous devrez probablement faire beaucoup de travail pour que la carte graphique mappe sa mémoire comme vous le souhaitez, en commençant par balayer le bus PCI pour trouver la carte.
la source
Jusqu'à présent, les réponses ont expliqué que les anciennes cartes vidéo fonctionnaient en ayant une mémoire vidéo mappée dans l'espace d'adressage du processeur. C'était la mémoire de la carte. Le northbridge sait rediriger les demandes de cette mémoire mappée vers le périphérique VGA.
Ensuite, il y a eu de nombreuses extensions et de nouveaux modes pour les cartes compatibles VGA. Cela a conduit à la création d'extensions VESA BIOS (VBE), qui fonctionnent via
int 10h
. Cela prend en charge l'accélération 2D de base (BitBlt), les curseurs matériels, la mise en mémoire tampon double / triple, etc. Il s'agit de la méthode de base pour l'affichage en couleur à toutes les résolutions prises en charge (y compris les résolutions élevées). Cette mémoire normalement utilisée interne à la carte aussi, avec le northbridge effectuant la redirection comme avec le VGA classique. Il s'agit de la manière la plus simple d'utiliser des graphiques en couleurs / résolution complète.Ensuite, nous avons une méthode directe d'accès au GPU sans utiliser le bios, qui donne accès aux mêmes fonctionnalités que VBE, et éventuellement à d'autres. Ma compréhension est assez floue ici. Je pense que cette interface est spécifique à l'appareil, mais je n'en suis pas du tout sûr.
Ensuite, il y a l'interface GPU qui peut prendre en charge l'acellération 3D / le calcul GP-GPU, etc.
la source