¿Cómo sabe la CPU dónde enviar solicitudes como a la GPU?

Solo quiero agregar algo a la respuesta de Tose Nikolov, que es correcta e informativa. Los sistemas operativos modernos crean y mantienen una cosa llamada “Capa de abstracción de hardware” (o HAL), que es esencialmente una gran tabla de direcciones de memoria correspondientes a los diversos controladores que se cargan para el hardware en el sistema. Estos controladores luego asignan sus propias funciones al hardware real.

En el caso de Windows, esta HAL se mantiene en el registro y generalmente supone que la mayoría del hardware no cambiará entre las botas. Parte de por qué puede arrancar tan rápido como lo hace después de la primera instalación es que Windows simplemente carga la última tabla HAL en la memoria y realiza algunas comprobaciones para verificar que las cosas realmente siguen igual que el último arranque.

El HAL se divide esencialmente en varias secciones: controladores de arranque críticos (por ejemplo, los controladores de la placa base y la CPU, el controlador de almacenamiento, etc.), dispositivos no críticos (por ejemplo, los dispositivos de video y de red) y dispositivos plug-and-play (por ejemplo, cualquier cosa conectado a USB). Si los dispositivos de arranque críticos cambian, es posible que el sistema no pueda iniciarse porque no puede inicializar sus controladores más básicos; esto puede requerir que ejecute una “instalación de reparación”, que reiniciará todo y escaneará su hardware nuevamente para formar un nuevo HAL. De lo contrario, el sistema puede detectar cuándo un controlador ya no es correcto para el hardware, recurrir a un controlador genérico (si lo necesita) y luego buscar un controlador más apropiado.

Todo este mantenimiento está automatizado en la actualidad, de modo que, cuando su hardware es estable, las cosas “simplemente funcionan”. Sin embargo, bajo el capó, es un sistema MUY complejo.

La cadena dice así:

  1. Su programa necesita algo dibujado en la pantalla.
  2. Su programa inicializa una biblioteca del sistema operativo para hacerlo. Para los gráficos esto es openGL o DirectX.
  3. Su programa envía sus solicitudes de sorteo a la biblioteca.
  4. La biblioteca ve en qué pantalla está intentando dibujar. Luego encuentra el controlador de gráficos responsable de esa pantalla.
  5. La biblioteca envía las solicitudes de sorteo al conductor.
  6. El controlador recibe las solicitudes y las procesa. A veces, el controlador maneja estas solicitudes en la CPU, a veces el controlador envía la solicitud a la GPU.
  7. La GPU procesa la solicitud y realiza la operación requerida.

Mostraré otro lado de esto.

¿Cómo detecta el sistema operativo los dispositivos? Definitivamente no puede simplemente sondear todas las direcciones y puertos de E / S porque puede hacer cosas al azar por error …

La solución es una tabla proporcionada en el firmware en sí, es decir, la tabla ACPI (que es un nombre poco apropiado ya que no es solo una tabla). La tabla ACPI contiene información específica de la placa base: cómo apagar, suspender, cómo acceder a PCI, USB, SATA, etc. Es decir, todo lo que está soldado a la placa base. Además, es posible que el firmware genere entradas adicionales (por ejemplo, entradas adicionales para una GPU conectada a PCIE que se convierte en primaria)