¿Existe alguna diferencia entre un puerto de E/S y un puerto físico?

¿Existe alguna diferencia entre un puerto de E/S y un puerto físico?

AFAIK, se aplican las siguientes definiciones:

  • Los puertos de E/S sondirecciones de memoriaSe utiliza como interfaz para comunicarse con dispositivos externos, por ejemplo, una impresora.
  • Un puerto físico (es decir, conector) es la interfaz física a la que conecta el dispositivo.

Como puedes ver por esta definición, son dos cosas diferentes. Sin embargo, ¿es esto (mi definición) correcto? ¿O es en realidad una cosa y el puerto físico tiene una dirección de memoria?

Interpreté la definición anterior de un libro que estoy leyendo sobre arquitectura de computadoras, pero ahora que leo más, poco a poco me estoy confundiendo. Creo que mis definiciones podrían estar equivocadas y malinterpreté el libro.

Realmente agradecería que la respuesta pudiera explicar brevemente cómo se usan los puertos de E/S... Simplemente no lo entiendo.

Respuesta1

¿Existe alguna diferencia entre el puerto de E/S y el puerto físico?

Se aplican las siguientes definiciones:

  • Los puertos de E/S son direcciones de memoria que se utilizan como interfaz para comunicarse con dispositivos externos, por ejemplo, una impresora.
  • Un puerto físico (conector) es la interfaz física a la que conecta el dispositivo.

Sus definiciones son esencialmente correctas.

Un puerto de E/S se comunica mediante uncontrolador de software (dispositivo)con un dispositivo físico (un dispositivo que está conectado a un puerto físico).

VerSistemas de E/Spara obtener una descripción más detallada.

Respuesta2

Un "puerto de E/S" en realidad pertenece más al dominio del software, y esto comenzó debido al diseño heredado del hardware Intel x86, donde había una diferencia real entre la memoria y los puertos de E/S. Podrías tener ambos dispositivos en el bus de direcciones, y cuando quisieras hablar con la memoria, afirmarías una señal que "apagaba" los puertos de E/S y "encendía" la memoria, y viceversa si querías hablar. a E/S. Había un esquema de direccionamiento diferente para la memoria y las E/S, por lo que el software también tenía que realizar un seguimiento de eso.

La razón por la que la memoria y las E/S necesitaban compartir el bus de datos se debía a la cantidad limitada de espacio de direcciones disponible en una CPU de 16 bits (64k). A medida que los CPU evolucionaron, el bus de datos creció a 32 bits (4 gigas) y 64 bits (¡18 quintillones!) y no fue necesaria la sobrecarga para compartir.

Con los procesadores de 32 y 64 bits que se utilizan ahora, tanto la memoria como las E/S se direccionan directamente y los dispositivos de E/S se asignan a un área diferente de direcciones. Este método se llama E/S asignada en memoria.

Con respecto a los puertos físicos, tanto los puertos de E/S como las E/S asignadas en memoria están conectados a hardware que almacena y formatea aún más (es decir, RS-232) la señal que va a un conector que se encuentra en la parte posterior de la computadora.

Respuesta3

El espacio/puertos de E/S es una creación heredada específica de x86. En los viejos tiempos, había múltiples espacios de direcciones diferentes (es posible que haya visto la tendencia reciente hacia el espacio de direcciones de memoria compartida para compartir mejor los recursos de CPU/GPU, como en PlayStation 4 y Xbox One) para direccionar la memoria y direccionar " Periféricos de E/S".

El espacio de E/S se utilizó para comunicarse con periféricos de hardware "reales", como su puerto serie o puerto paralelo. Convencionalmente, en la dirección del espacio de E/S 0x3F8, el primer puerto serie de un sistema se ubicaría allí. Para hablar con este dispositivo, en lugar de utilizar instrucciones de acceso a la memoria convencionales, debería emitir instrucciones de acceso a E/S; en Linux, por ejemplo, usaría outb(), outl() o outw(), dependiendo del ancho que desee utilizar. De nuevo,este es un espacio de memoria completamente diferenteque el mapa de memoria del sistema.

A medida que las PC y x86 maduraron (léase: ahora podríamos abordar de forma nativa 32 bits de memoria y más),mapeado en memoriaLas E/S se vuelven más comunes. Ahora, una ubicación de memoria arbitraria en el mapa de memoria del sistema (por ejemplo, de 0 a 0xFFFFFFFF) podría asignarse dinámicamente a un dispositivo específico. Un dispositivo PCI tendrá BAR (registros de dirección base) que requieren una cierta cantidad de memoria O espacio de E/S. Por lo tanto, una simple lectura/escritura para decir la dirección de memoria 0x80000000 puede en realidad asignarse a un dispositivo PCI físico que activa un LED cuando escribe un '1' en esa ubicación. Esta es una simplificación excesiva que ignora la existencia de memoria virtual/espacio de direcciones por proceso e incluso direcciones de espacio de usuario versus espacio de kernel.

Así queresumir, en mi opinión y como ingeniero eléctrico/informático, un "puerto IO" se refiere a una ubicación en la arquitectura x86Memoria E/Sespacio que se asigna a algún dispositivo específico. Un puerto físico sería un conector real y tangible en su dispositivo informático, ya sea USB, serie, lo que sea.

Como ejemplo divertido, si recuerdas haber jugado juegos antiguos de DOS como Star Wars: Dark Forces, recordarás haber configurado, por ejemplo, tu SoundBlaster Pro. Establecerás parámetros como Puerto 220, IRQ 5, DMA 1. Esto le indica al juego que tu tarjeta de sonido está ubicada en el espacio de E/S en 0x220, usando el canal IRQ 5 (recuerda, no tenías un APIC de alta gama). En este punto, probablemente tenía un Intel 8259 o dos) y el canal 1 de DMA.

Respuesta4

No estaría de acuerdo con tu afirmación. El términopuertoestá asociado con una interfaz física, como un puerto USB, un conector db-25 (SR-232), etc. Como era de esperar, el términoPuerto de E/STambién se interpreta frecuentemente como el "físico".pines de E/S.

Sin embargo, es cierto que estosPuertos de E/S, o conjunto de pines, tienen asociadosregistros de E/S, por lo que se puede considerar aproximadamente unaPuerto de E/Sser de hecho undirección de memoria.

En la siguiente figura se puede ver4 puertos de E/S, al que podrá conectar cables. Cada puerto, tiene asociadoregistros de E/S. Por ejemplo, PB0el nivel lógico del pin (primer pin en la figura) dependerá de cómo se combinen los niveles lógicos seleccionados de los registros ( DDRB, PINBy ) en ese pin. PORTBUnregistro de E/S, como el DDRB, tiene un asociadodirección de memoriaal que puedes acceder a través de código y cambiar sus valores lógicos.

ingrese la descripción de la imagen aquí

[Enlace de imágen]

información relacionada