Trataré de aclarar el "vudú" detrás de todo esto, explicando cómo funcionaba el hardware antiguo. Las GPU modernas no funcionan así, pero emulan la interfaz de CPU a tarjeta gráfica.
tl; dr
Los chips / tarjetas gráficas en los años 80 y principios de los 90 tuvieron que producir una salida extremadamente rápida (en relación con la velocidad del reloj) para que no ejecutaran instrucciones, sino que tenían circuitos fijos. Simplemente absorbieron los datos de la RAM a medida que avanzaban, por lo que la CPU simplemente necesitaba volcar los datos en la RAM en el lugar correcto, y el chip gráfico los recogería y los arrojaría a la pantalla. La CPU también podría establecer varias variables de configuración en el chip gráfico.
Detalles:
En los años 80, las computadoras domésticas tenían un chip gráfico realmente "tonto" que tenía algunos comportamientos fijos. Tendrá más sentido si paso por la tubería al revés.
Monitores CRT
Estos monitores necesitaban entradas analógicas. En otras palabras, mayor voltaje = salida más brillante. Los monitores en color tenían 3 canales (rojo, verde y azul (o, por ejemplo, YUV o YIQ ) ). Estos voltajes ajustaban la fuerza de un haz de electrones. Cosas simples
Los monitores CRT literalmente utilizaron electroimanes para desviar el haz de electrones de izquierda a derecha, luego empezar de nuevo un poco más abajo e ir de izquierda a derecha, y así sucesivamente de arriba a abajo. Luego vuelve a la parte superior y repite.
DAC
Los chips gráficos tenían un convertidor "digital a analógico" (un componente eléctrico muy común ). Esto convirtió los valores digitales (por ejemplo, 2, 4 u 8 bits) en voltajes que podrían suministrarse al monitor.
Exploración
Los chips de gráficos tenían que "mantenerse" con el haz de electrones, enviando el valor correcto al DAC para que pudiera emitir el voltaje correspondiente en el momento correcto. (Se usaron relojes para esto en los que no entraré). No había tiempo para ejecutar instrucciones aquí. Todo estaba conectado y tomó una pequeña cantidad fija de ciclos de reloj.
Modos de video
Los primeros chips no fueron muy rápidos y tenían RAM limitada. Debido a esto, tendían a permitir la selección de varios modos y otros parámetros de configuración, por ejemplo, color de fondo, selección de fuente, ubicación y tamaño del cursor, selección de paleta y sprites. La mayoría ofrecía un modo de "solo carácter" de alta resolución y modos de píxel por píxel de menor resolución.
Los tres modos VGA notables son:
- Modo de texto en color 16 (ish) 80x25 (esto es esencialmente lo que parece una pantalla de carga de BIOS)
- Modo de alta resolución de 16 colores 640x480
- Modo de alto color de 256 colores 320x200
Píxeles de pintura
En términos generales, dependiendo del sistema de gráficos, la tubería se ve más o menos así:
Ubicación actual del píxel ⇒ Datos del carácter / fuente / sprite / píxel / configuración del proceso ⇒ Valores de píxel ⇒ Paleta ⇒ DAC
Es ese segundo paso el que necesita leer desde un par de ubicaciones de RAM. Por ejemplo, en el modo de texto, se buscaría un carácter de 1 byte. Esto formaría un índice en una tabla de fuentes. Se buscaría un poco desde esta tabla, indicando si ese píxel debería ser el color de primer plano o de fondo. Se buscará un tercer byte para obtener ese color de primer plano / fondo. En total, 3 bytes leídos de la RAM.
Pero este "flujo" es más o menos un conjunto de circuitos fijos simples que están dispuestos exactamente como, bueno, el flujo que se acaba de describir.
Interfaz de bus de memoria
Las CPU de Intel tienen este molesto legado llamado bus IO, pero no es importante, así que fingiré que no está allí.
Las CPU acceden a la RAM transmitiendo una solicitud READ o WRITE y una dirección en el bus de memoria. Aunque la mayoría de las direcciones válidas provocan una respuesta de RAM, los dispositivos manejan ciertos rangos . Por ejemplo, LEER desde una dirección particular puede darle información sobre las pulsaciones de teclas del teclado.
Al escribir en las partes correctas del "rango de gráficos", puede escribir tanto el contenido de la pantalla como también establecer los parámetros de configuración de la tarjeta gráfica. El chip gráfico "tonto" no ejecuta ninguna instrucción. Simplemente sigue avanzando lentamente, con unos pocos bytes que fluyen a través de sus circuitos y generan voltajes.
Con VGA, en realidad hay RAM en la tarjeta gráfica, porque puede configurar la tarjeta gráfica para procesar los datos antes de que se grabe en la RAM gráfica, para aumentar el rendimiento en algunas situaciones.
VESA
Las tarjetas gráficas después de VGA ofrecían resoluciones más altas y buena profundidad de color, pero funcionaban con principios similares. Muchas tarjetas gráficas modernas aún ofrecen compatibilidad con esto para permitir una mayor resolución durante el arranque. Pero VGA es el "infalible" que prácticamente todas las tarjetas emularán.