¿Todos los dispositivos conectados a una PC tienen alguna dirección?

El procesador Intel 80 × 86 que se usa en prácticamente todas las computadoras en estos días tiene dos espacios de direcciones completamente separados. El primero es el espacio de direcciones de memoria (física), que era de 20 bits en el 8086 original, y se ha expandido lentamente a lo largo de los años al estándar actual de 64 bits. Gran parte de este espacio de memoria se usa para la memoria ordinaria, pero en su lugar se usan regiones para interactuar con dispositivos IO que no son memoria o son “memoria especial” (como la memoria de la GPU).

Además, hay un espacio de direccionamiento completamente separado para los puertos de entrada / salida. El espacio del puerto IO tiene 16 bits de ancho y tiene instrucciones especiales (entrada y out ) para acceder a ellos.

La asignación de estos recursos la maneja el sistema operativo y los controladores de dispositivo. En Windows, puede usar el programa msinfo32 o el Administrador de dispositivos para averiguar qué recursos de hardware se asignan a un dispositivo determinado; en un sistema Linux, encontrará esta información en /proc/iomem y /proc/ioports .

La CPU ejecuta instrucciones que transfieren datos hacia y desde la memoria. La ubicación de memoria específica para cada operación de carga o almacenamiento se define por la combinación de 1s y 0s que están presentes en un conjunto de conductores paralelos accionados por la CPU. Estos conductores paralelos se describen colectivamente como un bus. El bus de direcciones tendrá una combinación única de 1s y 0s para cada celda de memoria en la computadora. Estas combinaciones de 1s y 0s en el bus de direcciones se llaman, como es lógico, direcciones. También se accede a los dispositivos (a diferencia de la memoria) utilizando direcciones únicas en un bus de direcciones. Dependiendo de la arquitectura específica, los dispositivos IO pueden compartir espacio en el mapa de direcciones de memoria, o pueden tener un espacio separado dedicado a dispositivos de direccionamiento (IO).

Sin direcciones, no habría ningún mecanismo para que la CPU acceda a los registros que conforman la interfaz de la CPU con los dispositivos. El diseñador del sistema elige las direcciones específicas utilizadas, pero el diseño puede acomodar la configuración del usuario para permitir que diversas combinaciones de dispositivos coexistan en un solo sistema, mientras que cada uno sigue siendo único en el espacio de direcciones.