Documentos de Académico
Documentos de Profesional
Documentos de Cultura
5 Puertos Entrada/Salida
Nota: Para tener una visin de conjunto, antes de adentrarse en este apartado, dedicado a
los puertos de E/S, es recomendable leer el epgrafe en que se tratan las Entradas/Salidas de
forma genrica ( H2.1)
1 Sinopsis
Cualquier dispositivo (distinto de la memoria RAM) que intercambie datos con el sistema lo hace a
travs de un "puerto", por esto se denominan tambin puertos de E/S ("I/O ports"). Desde el
punto de vista del software, un puerto es una interfaz con ciertas caractersticas; se trata por tanto
de una abstraccin (no nos referimos al enchufe con el que se conecta fsicamente un dispositivo al
sistema), aunque desde el punto de vista del hardware, esta abstraccin se corresponde con un
dispositivo fsico capaz de intercambiar informacin (E/S) con el bus.
Como los dispositivos E/S tienen algn tipo de conexin con el bus externo (
H2), deben tener
una direccin (o conjunto de ellas) que los identifique. Los hemos comparado con un telfono, un
dispositivo con el que se puede enviar/recibir informacin mediante una direccin. Hablar de un
puerto E/S es casi siempre sinnimo de una direccin, y es costumbre informtica referirse a estas
direcciones en hexadecimal ( 2.2.4b). De modo que, por ejemplo, un puerto puede ser 0x21 en
un fuente o 21h en un texto informtico.
Nota: Al tratar de las E/S ( H2.1) hemos indicado que puerto es sinnimo de perifrico; un
dispositivo externo que comunica con el sistema a travs de una direccin. Sin embargo no
todos son dispositivos externos a la placa-base, de hecho algunos dispositivos hardware
incluidos en ella tienen la caracterstica de "Puertos". Por ejemplo, durante mucho tiempo
algunos PC's disponan de un botn frontal sealado "Turbo", con el que se poda cambiar la
velocidad de funcionamiento. Este cambio de la velocidad del reloj tambin puede realizarse
por software. Basta para ello cambiar un par de bits en un "Puerto" instalado en la propia
placa-base (generalmente en el rango 62-6Fh).
2 Direcciones de puertos
El modelo de direccionamiento del PC ha adoptado dos modelos, segn la naturaleza del
dispositivo a conectar: Direccionamiento dedicado para dispositivos de media/baja velocidad.
Por ejemplo, puertos serie y paralelo (impresora), teclado, Etc. y direccionamiento mapeado en
memoria para dispositivos rpidos (tpicamente los adaptadores grficos). En el apartado
dedicado a E/S se explican las diferencias entre ambas modalidades (
H2.1)
2.1 Respecto a los dispositivos de direccionamiento dedicado, desde la introduccin del IBMPC, es costumbre que determinados dispositivos muy comunes se conecten mediante puertos de
direcciones determinadas.
Dispositivo
Controlador DMAC#1
primario 8237A
Direccin
000-00F
Controlador de
020-021
interrupciones PIC#1 8259A
Temporizador
programable PIT 8253 y
8254
040-043
Controlador
perifricos PPI 8255 (XT)
060-063
060-064
061-061
070-071
081-08F
Controlador de
interrupciones PIC#2 (AT)
0A0-0A1
0A2-0AF
Controlador DMAC#2
secundario (AT)
0C0-0DF
0F0-0F1
Coprocesador matemtico
0F8-0FF
Puerto
LPT1
LPT2
Monocromo
3BC-3BFh
378-37Fh
LPT3
278-27Fh
Color
378-37Fh
278-27Fh
---
Puerto
COM1
COM2
COM3
COM4
Direccin
3F8-3FFh
2F8-2FFh
3E8-3EFh
2E8-2EFh
2.1b Los usuarios de Windows 98 pueden comprobar la asignacin de puertos del sistema
mediante la utilidad msinfo032.exe(genralmente en el directorio C:\Archivosde
programa\Archivoscomunes\MicrosoftShared). Los usuarios de Linux pueden
consultarse en el fichero /proc/ioportsmediante el comando
cat /proc/ioports
(lad direcciones de memoria estn expresadas en hexadecimal). En la pgina adjunta se muestra
el resultado de ambas utilidades en un caso concreto (
Ejemplo).:
2.2 Las direcciones mapeadas en memoria se eligieron para algunos dispositivos como los
adaptadores grficos, que requeran mover grandes cantidades de datos muy rpidamente.
Con objeto de no causar conflictos con la RAM general, algunas de estas direcciones fueron
mapeadas desde el principio por los diseadores de IBM, fuera de la denominada memoria
convencional ( H5.1). Es decir, fuera del espacio de los 640 KB que podan utilizarse en los
primeros PC's para Sistema y programas de aplicacin. Por ejemplo, el adaptador de video utiliza
un rea de memoria de 128 KB mapeada entre las direcciones A0000-BFFFFh.
Sin embargo, los decodificadores de direcciones de perifricos de los primitivos PC's solo podan
utilizar direcciones de 10 bits para tales accesos, por lo que las direcciones de puertos estaban
constreidas a 210 (1 KB 0000-0400h). En realidad el espacio era an ms pequeo, puesto que
los primeros 256 Bytes estaban copados por algunos dispositivos de la placa-base, resultando que
los dispositivos E/S deban ser mapeados en 768 Bytes. Generalmente se utilizaron fragmentos de
256 Bytes en la forma xxF0-xxFFh, organizados de forma bastante desordenada.
La introduccin del AT ampli estas direcciones a 16 [2]. Sin embargo, incluso los 64 KB
resultantes eran un espacio pequeo y de organizacin catica, dado que los nuevos dispositivos
se construan de forma que fueran compatibles con las antiguas placas ISA que solo reconocan
direcciones de 10 bits. Incluso las placas para buses posteriores que fueron desarrollados
pensando en 64 KB porque deban ser compatibles hacia atrs con las antiguas placas ISA (que
coexistan en las nuevas). El resultado de todo esto es que, incluso los sistemas actuales con
muchos MB. de RAM, deben seguir lidiando con los puertos a travs de pequeas ventanas de
memoria con localizaciones absurdas.
IOR
Orden de lectura para dispositivo E/S conectado al bus, que debe colocar un dato
en el bus de datos.
IOW
Orden de escritura para dispositivo E/S, que debe leer el dato situado en el bus.
MEMR Esta seal indica a los dispositivos de memoria que deben colocar un dato en el
bus de datos.
MEMW Seal que indica a los dispositivos de memoria que deben almacenar el dato
colocado en el bus de datos.
Una cuestin adicional es que cuando la comunicacin debe establecerse desde el lado del puerto
(es el puerto el que desea establecer comunicacin con el sistema), primero debe anunciarlo al
procesador, para lo que se utiliza un sistema de interrupciones cuyo mecanismo de funcionamiento
se ha detallado en el captulo correspondiente (
H2.4). La consecuencia es que la mayora de
los puertos disponen de lneas IRQ asignadas para este menester.