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

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

Los tutoriales de desarrollo de sistemas operativos señalan cómo llegar a los datos de la pantalla escribiendo directamente en VGA, EGA o Super VGA, pero lo que no entiendo es cuál es la diferencia real entre escribir en una dirección fija para visualización y escribir directamente en una tarjeta de video, ya sea integrada. ¿O extraíble? Solo quiero una aclaración básica de mi confusión sobre este tema.

Y como no es un caso tan simple con variables en tarjetas, interfaces conectivas, buses, arquitecturas, sistema en un chip, sistemas integrados, etc., me resulta difícil encontrar una manera de entender la idea detrás de esto al 100%. . ¿Las direcciones fijas diferirían de una GPU de gama alta a una integrada de gama baja? ¿Por qué y por qué no?

Uno de mis objetivos en programación es albergar un kernel y crear un sistema operativo, y un sueño realmente inverosímil. No entender la terminología no sólo me dificulta en algunas áreas, sino que también me hace parecer un tonto en temas de hardware.

EXTRA: Algunas de estas respuestas actuales hablan del uso de la memoria máxima direccionable del procesador en los detalles específicos de 16 bits. El problema son algunos de estos otros problemas que surgen:

1. ¿Qué pasa con la propia memoria de la tarjeta? Eso no necesitaría RAM del sistema para los datos de la pantalla.

2. ¿Qué pasa con los modos de bits superiores? ¿Y no puedes no descuidar el BIOS en modo real (x86) y aún así direccionar la memoria a través de AL?

3. ¿Cómo permanecería sin cambios el concepto de escribir en una dirección fija en una GPU con multitud de registros y rendimiento igual o superior al microprocesador real?

Respuesta1

Técnicamente VGA significaMatriz de gráficos de vídeo, un estándar de vídeo de 640x480 introducido en 1987. En ese momento era una resolución relativamente alta, especialmente para una pantalla a color.

AntesSe introdujo VGA, teníamos algunos otros estándares gráficos, comoHérculesque mostraba texto (80 líneas de 25 caracteres) o gráficos monocromáticos de relativa alta definición (a 720x348 píxeles).

Otros estándares en ese momento eran CGA (Adaptador gráfico en color), que también permitía hasta 16 colores con una resolución de hasta 640x200 píxeles. El resultado de eso se vería así:

ingrese la descripción de la imagen aquí

Finalmente, un estándar de PC digno de mención fue el adaptador de gráficos mejorado (EGA), que permitía resoluciones de hasta 640×350 con 64 colores.

(Estoy ignorando los estándares que no son de PC para que esto sea relativamente breve. Si empiezo a agregar estándares Atari o Amiga -¡hasta 4096 colores en ese momento!- entonces esto se volverá bastante largo).

Luego, en 1987, IBM presentó la computadora PS2. Tenía varias diferencias notables 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).sitenías un ratón); unidades estándar de 3½ pulgadas y un nuevo adaptador gráfico con alta resolución y muchos colores.

Este estándar de gráficos se llamóMatriz de gráficos de vídeo. Utilizaba un conector de 3 filas y 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 Display Port.

Después de VGA

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

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

ingrese la descripción de la imagen aquí

(Gráfico cortesía de Wikipedia)


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

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


Una tercera forma de utilizar "VGA" es para describir una tarjeta gráfica, aunque esa tarjeta pueda producir resoluciones completamente diferentes a las de VGA. El uso es técnicamente incorrecto, o al menos debería ser 'tarjeta compatible con VGA', pero el lenguaje común no hace esa diferencia.


Eso dejaescribiendo en VGA

Esto se debe a la forma en que se dividió la memoria en un IBM XT. La CPU podría acceder hasta 1MiB (1024KiB) de memoria. Los 512 KiB inferiores estaban reservados para RAM, los 512 KiB superiores para tarjetas complementarias, ROM, etc.

Esta área superior es donde se asignó la memoria de las tarjetas VGA. Podrías escribirle directamente y el resultado aparecerá en la pantalla.

Esto no sólo se usó para VGA, sino también para alternativas de la misma generación.

  G = RAM de vídeo en modo gráfico
  M = RAM de vídeo en modo texto monocromo
  C = RAM de vídeo en modo texto en color
  V = BIOS de ROM de vídeo (sería "a" en PS/2)
  a = ROM de la placa adaptadora y RAM de propósito especial (espacio UMA libre)
  r = BIOS ROM adicional de la placa base PS/2 (UMA gratuito en sistemas que no sean PS/2)
  R = BIOS ROM de la placa base
  b = ROM BÁSICA del Cassette de IBM (sería "R" en compatibles con IBM)
  h = Área de alta memoria (HMA), si HIMEM.SYS está cargado.

Memoria convencional (base):   
Primeros 512 KB (u 8 fragmentos de 64 KB).

Área de memoria superior (UMA):

0A0000: GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
0B0000: MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
0C0000: VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
0D0000: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
0E0000: rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
0F0000: RRRRRRRRRRRRRRRRRRRRRRRRbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbRRRRRRRR

(Fuentedel mapa ASCII).

Respuesta2

Escribir a una "dirección fija"eraesencialmente escribiendo directamente en una tarjeta de video. Todas esas tarjetas de video ISA (CGA, EGA, VGA) esencialmente tenían algo de RAM (y registros) asignados directamente a la memoria de la CPU y al espacio de E/S.

Entonces, cuando escribiste un byte en una determinada ubicación de memoria, ese carácter (en modo texto) apareció en la pantalla inmediatamente, ya que de hecho escribiste en una memoria ubicada en una tarjeta de video, y la tarjeta de video solo usó esa memoria.

Todo esto parece muy confuso hoy en día, especialmente considerando que las tarjetas de video actuales a veces se llaman VGA (y se parecen a las tarjetas VGA "verdaderas" de la década de 1990). Sin embargo, incluso las tarjetas modernas emulan algunas de las funciones de estos diseños más antiguos (puede iniciar DOS en la mayoría de las PC modernas y usar programas de DOS que escriben directamente en la memoria de video). Por supuesto, hoy en día todo se emula en el firmware de la tarjeta de vídeo.

Respuesta3

Realmente no hay una diferencia: si estás escribiendo en la dirección de la memoria de video, entonces el hardware la enrutará a la tarjeta de video.

Si está escribiendo su propio sistema operativo, probablemente tendrá que trabajar mucho para lograr que la tarjeta gráfica asigne su memoria como usted desea, comenzando por escanear el bus PCI para encontrar la tarjeta.

Respuesta4

Hasta ahora, las respuestas han explicado que las tarjetas de video antiguas funcionaban al tener la memoria de video asignada al espacio de direcciones del procesador. Esta era la propia memoria de la tarjeta. El puente norte sabe redirigir las solicitudes de esta memoria asignada al dispositivo VGA.

Luego, además de eso, hubo muchas ampliaciones y nuevos modos para tarjetas compatibles con VGA. Esto llevó a la creación de VESA BIOS Extensions (VBE), que operan a través de int 10h. Esto admite aceleración 2D básica (BitBlt), cursores de hardware, almacenamiento en búfer doble/triple, etc. Este es el método básico para visualización a todo color en cualquier resolución admitida (incluidas las resoluciones altas). Esto normalmente también usaba memoria interna de la tarjeta, con el puente norte realizando la redirección como con el VGA clásico. Esta es la forma más sencilla de utilizar gráficos a todo color y resolución completa.

A continuación, veremos algún método directo para acceder a una GPU sin usar la BIOS, que proporciona acceso a las mismas funciones que VBE, y posiblemente a otras adicionales. Mi comprensión es bastante confusa aquí. Creo que esta interfaz es específica del dispositivo, pero no estoy del todo seguro de ello.

Luego está la interfaz GPU que puede admitir aceleración 3D/cómputo GP-GPU, etc. Esto definitivamente requiere controladores o especificaciones proporcionados por el fabricante para su uso completo y, con frecuencia, existen diferencias sustanciales incluso entre dispositivos del mismo fabricante.

información relacionada