¿Qué es exactamente VGA, y cuál es la diferencia entre él y una tarjeta de video?

Los tutoriales de desarrollo de sistemas operativos señalan el alcance de los datos de la pantalla escribiendo directamente en VGA o EGA o Super VGA, pero lo que no obtengo es cuál es la diferencia real entre escribir en una dirección fija para mostrar y escribir directamente en una tarjeta de video ya sea a bordo O extraíble? Sólo quiero la clarificación básica de mi confusión sobre esto en mi problema

Y puesto que no es un caso tan sencillo con variables en tarjetas, interfaces conectivas, buses, arquitecturas, sistemas en un chip, sistemas embebidos, etc., me resulta difícil encontrar una forma de entender la idea detrás de este 100% . ¿Las direcciones fijas se diferencian de una GPU de gama alta a una de gama baja? ¿Por qué y por qué no?

Es uno de mis objetivos en la programación para alojar un kernel y hacer un sistema operativo, y un sueño hecho realidad. No entender la terminología no sólo me obstaculiza en algunas áreas, sino que me hace parecer tonto en los temas de hardware.

EXTRA: Algunas de estas respuestas actuales hablan de usar la máxima memoria direccionable de los procesadores en las especificaciones de 16 bits. El problema es algunas de estas otras cuestiones que surgen:

1.¿Qué sobre la memoria de la tarjeta? Eso no necesitaría RAM del sistema para los datos de la pantalla sí mismo.

2.¿Qué pasa en los modos de mayor-bit? ¿Y no puedes no descuidar el BIOS en modo real (x86) y aún dirigir la memoria a través de AL?

3. ¿Cómo el concepto de escribir en una dirección fija permanece sin cambios en una GPU con multitud de registros y rendimiento en o por encima del microprocesador real?

Técnicamente VGA significa Video Graphics Array , un estándar de vídeo de 640×480 introducido en 1987. En el momento que era una relativa alta resolución, especialmente para una pantalla en color.

Antes de que se introdujera VGA, teníamos algunos otros estándares gráficos, como hércules que mostraban texto (80 líneas de 25 caracteres) o gráficos de alta definición monocromática (a 720×348 píxeles).

Otros estándares en ese momento eran CGA ( Color graphics adapter ), que también permitía hasta 16 colores a una resolución de hasta 640×200 píxeles. El resultado de esto sería así:

Introduzca aquí la descripción de la imagen

Por último, un notable estándar de PC fue el adaptador de gráficos mejorado (EGA), que permitió resoluciones de hasta 640 × 350 con 64 colores.

(Estoy ignorando los estándares que no son de PC para mantener este cortocircuito relativo, si empiezo a agregar los estándares de Atari o Amiga hasta 4096 colores en ese momento, entonces esto será bastante largo).

Luego, en 1987, IBM introdujo la computadora PS2. Tenía varias diferencias dignas de mención en comparación con sus predecesores, que incluían nuevos puertos para ratones y teclados (Anteriormente los ratones usaban puertos serie de 25 pines o puertos serie de 9 pines, si tenías un ratón en absoluto); Unidades estándar de 3½ pulgadas y un nuevo adaptador gráfico con una alta resolución y muchos colores.

Este estándar gráfico se llamó Video Graphics Array . Utilizó un conector de 3 filas de 15 pines para transferir señales analógicas a un monitor. Este conector duró hasta hace unos años, cuando fue reemplazado por estándares digitales superiores como DVI y puerto de pantalla.

Después de VGA

El progreso no se detuvo con los estándares VGA. Poco después de la introducción de VGA surgieron nuevos estándares como el 800×600 S uper VGA (SVGA), que utiliza el mismo conector. (Hercules, CGA, EGA etc, todos tenían sus propios conectores.Usted no podía conectar un monitor CGA a una tarjeta VGA, ni siquiera si intentó mostrar una resolución lo suficientemente baja).

Desde entonces nos hemos desplazado a pantallas de resolución mucho más alta, pero el nombre más utilizado sigue siendo VGA. Aunque los nombres correctos serían SVGA, XVGA, UXGA etc etc.

Introduzca aquí la descripción de la imagen

(Gráfica cortesía de Wikipedia)


Otra cosa que se llama 'VGA' es el conector DE15 utilizado con la tarjeta VGA original. Este conector generalmente azul no es la única manera de transferir señales analógicas VGA a un monitor, pero es el más común.

Izquierda: DB5HD Derecha: Conectores VGA alternativos, usualmente utilizados para una mejor calidad) Introduzca aquí la descripción de la imagen


Una tercera forma de 'VGA' se utiliza para describir una tarjeta gráfica, a pesar de que la tarjeta puede producir resoluciones totalmente diferentes de VGA. El uso es técnicamente incorrecto, o debería ser al menos "tarjeta VGA compatible", pero el habla común no hace esa diferencia.


Que deja de escribir en VGA

Esto viene de la manera en que la memoria en un IBM XT fue dividida. La CPU podría tener acceso a 1MiB (1024KiB) de memoria. El 512KiB inferior se reservó para la RAM, el superior 512 KiB para las tarjetas de complemento, ROM, etc

Este área superior es donde se ha asignado la memoria de las tarjetas VGA. Usted podría escribir directamente a él y el resultado se mostraría en la pantalla.

Esto no sólo se utiliza para VGA, sino también para las mismas alternativas de generación.

   G = Modo de Gráficos RAM de Video M = Modo de Texto Monocromo RAM de Video C = Modo de Texto de Color RAM de Video V = Video ROM BIOS (sería "a" en PS / 2) a = ) R = BIOS de ROM de la placa base PS / 2 adicionales (UMA libre en sistemas no PS / 2) R = BIOS de ROM de la placa base b = ROM de BASIC del cassette IBM (sería "R" en compatibles con IBM) h = , Si se carga HIMEM.SYS.  Memoria convencional (base): Primeros 512KB (o 8 pedazos de 64KiB).  Área de memoria superior (UMA): 0A0000: 0B0000 GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG: MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 0C0000: VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0D0000: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0E0000: rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr 0F0000: RRRRRRRRRRRRRRRRRRRRRRRRbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbRRRRRRRR 

( Fuente del mapa ASCII).

Escribir a una "dirección fija" era esencialmente escribir directamente en una tarjeta de vídeo. Todas esas tarjetas de vídeo ISA (CGA, EGA, VGA) básicamente tenían algunos RAM (y registros) mapeados directamente en la memoria de CPUs y el espacio de E / S.

Así que cuando usted escribió un byte a una determinada ubicación de memoria, ese carácter (en modo texto) apareció en la pantalla inmediatamente, ya que de hecho escribió en una memoria ubicada en una tarjeta de video, y la tarjeta de video acaba de utilizar esa memoria.

Todo esto parece muy confuso hoy, especialmente teniendo en cuenta que las tarjetas de video de hoy en día a veces se llaman VGA (y tienen semejanza con las "verdaderas" tarjetas VGA de 1990). Sin embargo, incluso las tarjetas modernas emulan algunas de las funcionalidades de estos diseños antiguos (puede iniciar DOS en la mayoría de las PC modernas y utilizar programas DOS que escriben directamente en la memoria de vídeo). Por supuesto, hoy en día todo se emula en el firmware de la tarjeta de vídeo.

No hay realmente una diferencia: si está escribiendo a la dirección de la memoria de vídeo, entonces el hardware de ruta que a la tarjeta de vídeo.

Si está escribiendo su propio sistema operativo, probablemente tendrá que hacer mucho trabajo para obtener la tarjeta gráfica para asignar su memoria como desea, comenzando por escanear el bus PCI para encontrar la tarjeta.

Hasta ahora las respuestas han explicado que las viejas tarjetas de video funcionaban al tener la memoria de vídeo asignada en el espacio de direcciones del procesador. Esta fue la memoria propia de las tarjetas. El northbridge sabe redirigir las solicitudes de esta memoria asignada al dispositivo VGA.

Luego, además de eso, había amplias expansiones y nuevos modos para tarjetas compatibles con VGA. Esto condujo a la creación de VESA BIOS Extensions (VBE), que operan a través de int 10h . Esto es compatible con la aceleración 2D básica (BitBlt), cursores de hardware, doble / tripple buffering, etc. Este es el método básico para la visualización a todo color en cualquier resolución soportada (incluyendo altas resoluciones). Esta memoria normalmente utilizada interna a la tarjeta también, con el northbridge realizando la redirección como con VGA clásico. Esta es la forma más sencilla de utilizar gráficos full collor / full-resolution.

A continuación tenemos un método directo de acceso a la GPU sin utilizar el bios, que proporciona acceso a las mismas características que VBE, y posiblemente otros. Mi comprensión es bastante borrosa aquí. Creo que esta interfaz es específica del dispositivo, pero no estoy seguro de eso.

Luego está la interfaz de la GPU que puede soportar la acelera- ción en 3D / GP-GPU computación, etc Esto definitivamente requiere fabricante proporcionó controladores o especificaciones para su uso completo, y con frecuencia hay diferencias sustancial incluso entre los dispositivos del mismo fabricante.