Según tengo entendido, las GPU tienen sus propios conjuntos de instrucciones, cuyas instrucciones son generadas por los controladores de gráficos. Las instrucciones de la GPU se envían a la GPU. Entonces, ¿cómo funciona la comunicación gráfica antes de cargar los controladores? ¿Hay algunas instrucciones básicas que las GPU deben implementar como mínimo para garantizar que la computadora pueda realizar tareas básicas de visualización?
drivers
graphics-card
gpu
VortixDev
fuente
fuente
Respuestas:
"¿Hay algunas instrucciones básicas ...?" Sí exactamente. Se requieren todas las GPU para implementar una de varias interfaces simples: son demasiado primitivas para llamarse "conjuntos de instrucciones", con qué firmware de plataforma ("BIOS" o "UEFI") y controladores incluidos con el sistema operativo saben cómo comunicarse . La elección habitual de "interfaz simple" en estos días es "VGA" ("Video Graphics Array"), la interfaz de nivel de registro originalmente definida para las tarjetas de video de ese estándar. (¡Ahora más de 30 años!)
Por ejemplo, si el Administrador de dispositivos en un sistema Windows identifica la tarjeta gráfica como el "Adaptador de video básico de Microsoft", el sistema operativo no pudo encontrar un controlador específico para la tarjeta y en su lugar ha cargado el controlador compatible con VGA.
Bueno, técnicamente, Windows siempre carga ese controlador (para que pueda mostrar, por ejemplo, las pantallas de progreso de arranque), luego (bastante tarde en el arranque) identifica y carga el controlador "real" para su tarjeta gráfica.
El estándar VGA solo admite algunos modos gráficos de baja resolución y modos de texto, y no involucra lo que yo llamaría "programas en ejecución" o incluso "instrucciones" en la GPU. En esencia, el firmware del sistema o el "controlador de video base" simplemente lo pone en el modo deseado y luego escribe bits en un mapa de bits; Los bits en el mapa de bits corresponden directamente a los píxeles en la pantalla. Cualquier aritmética que deba realizarse para dibujar líneas o curvas se realiza en la CPU. Es una forma lenta y de muy bajo nivel para que las cosas aparezcan en la pantalla. Pero es suficiente para pantallas e interacciones simples con el firmware, para instalaciones de SO y pantallas de progreso de arranque temprano, etc.
Wikipedia: Matriz de gráficos de video
fuente
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:
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.
fuente