¿Cómo funciona la CPU con otros dispositivos de hardware?

En la mayoría (pero no en todos) los dispositivos de hardware de la CPU moderna se tratan como ubicaciones de memoria en las que se puede escribir o leer.

Para profundizar un poco más, cuando la CPU quiere leer un fragmento de memoria, genera la ubicación de ese lugar como un número binario en las “líneas de dirección” que salen de los pines del chip. Una CPU de 32 bits tiene 32 de estos cables.

Tanto los chips RAM como otros dispositivos de “hardware” pueden ver el número en las líneas de dirección y decidir si ese número “les pertenece” o no.

Casi todos esos números de dirección “pertenecen” a los chips de RAM, y cuando la CPU lee de la RAM, los datos en esa dirección se extraen del chip de RAM y se colocan en otro grupo de cables llamados “Líneas de datos”, que la CPU busca para ver qué había en la memoria en ese lugar.

Sin embargo, cuando la CPU intenta leer datos de una dirección que pertenece a un dispositivo de hardware (un controlador USB o un controlador de disco duro, por ejemplo), entonces sucede algo más complicado. Qué es exactamente eso será diferente para cada dispositivo.

En cualquier sistema operativo moderno, el negocio de leer y escribir en esas direcciones especiales de “hardware” se realiza dentro de una pieza especial de software llamada “Controlador de dispositivo”, y cada dispositivo tiene un controlador de dispositivo diferente que sabe cómo hablar de un lado a otro. lo.

Algunos (probablemente “la mayoría”) de los dispositivos de hardware también pueden enviar una señal eléctrica separada a la CPU para causar una “interrupción”. Esto desencadena un circuito lógico especial dentro de la CPU que hace que se detenga lo que sea que esté haciendo y salte a una ubicación especial en el sistema operativo que hace que ejecute el código del controlador del dispositivo para descubrir qué sucedió.

Entonces, por ejemplo, si presiona una tecla en el teclado, hará que esa interrupción se envíe al sistema operativo, lo que hará que la CPU deje de funcionar lo que estaba ejecutando anteriormente y que el controlador del dispositivo del teclado empezar a correr Ese software hará referencia a algunas de estas ubicaciones de memoria especiales en el hardware del controlador USB para determinar qué periférico USB necesita atención. Cuando se dé cuenta de que era el teclado, leerá los datos de pulsación de teclas, lo colocará en un lugar donde el sistema operativo pueda encontrarlo y devolverá el control a cualquier programa que se haya interrumpido.

Todo esto sucede en unas pocas billonésimas de segundo.

El mismo principio básico se aplica a otros dispositivos, como el controlador WiFi, el controlador de la unidad de disco e incluso la tarjeta gráfica (¡aunque eso es MUCHO más complicado!)

Comprender todo esto es bastante complejo, y si desea jugar con las ideas, sería mejor usar una computadora muy simple como un tablero “Arduino” (es del tamaño de una tarjeta de crédito y cuesta alrededor de $ 20) . Esta computadora es TAN simple que no tiene un sistema operativo o controladores de dispositivo.

En su lugar, puede escribir programas simples que se comuniquen directamente con esas direcciones de memoria especiales para hacer que los pines en los bordes de la placa cambien entre 0 voltios y 5 voltios, o para detectar si algún voltaje de entrada está en algún voltaje u otro.

Puede usar eso para conectar interruptores, LED, motores, etc. ¡Es realmente muy divertido!

En pocas palabras: les habla .

O, para ser más específicos: a cada dispositivo se le asigna un identificador único cuando se identifica a sí mismo (puede ser un identificador, puede ser una dirección, etc.), que luego se utiliza en una comunicación adicional con él.

Una de las tareas del BIOS en una PC (o cualquier tipo de rutina de inicio / POST en cualquier dispositivo) es recopilar una lista de dispositivos conectados al sistema y mantenerla en un lugar accesible en algún lugar del espacio de direcciones (a menos que los dispositivos no pueden cambiar, en cuyo caso la lista puede estar preescrita y almacenada en alguna memoria de solo lectura, o incluso codificada en el software).

Por “dispositivos” me refiero tanto a las cosas externas y mundanas como ratones, teclados y similares, así como a las cosas más “exóticas” como buses internos, controladores de puertos y hubs, administradores, relojes de sistema y similares (que a menudo residen en los mismos chips internamente).

Hay dos maneras.

  1. Sombreando algunas regiones de la RAM. Si intenta acceder a ciertas regiones de RAM física utilizando instrucciones de memoria regulares, el acceso a la memoria se redirige al dispositivo.
  2. Al proporcionar instrucciones especiales de “hablar con el dispositivo”.