Você está na página 1de 9

TEMA 2 - ARQUITECTURA DE DISPOSITIVOS DE

COMUNICACIONES EN EL PC
1 INTRODUCCIÓN
En una visión simplificada de la estructura de un ordenador, diferenciamos tres bloques funcionales
(CPU, Memoria y Periferia) interconectados por tres buses (direcciones, datos y control).
Según esta disposición simplificada, la información viajaría entre los tres bloques por el bus de
datos, de manera que la CPU determinaría en qué posición de la memoria o en qué dirección de la

MEMORIA
CPU PERIFERIA

BUS DE CONTROL

BUS DE DIRECCIONES

BUS DE DATOS

periferia se escribiría/leería gracias al bus de direcciones. Todo ello estaría manipulado en el


tiempo a través del bus de control.
Para aclarar este proceso vamos a poner un ejemplo genérico de transacción de datos:
Deseamos enviar el carácter ‘ñ’, existente en la memoria, a una impresora. Para llevar a cabo este
proceso, el sistema debe ejecutar una instrucción. Al menos se cumplirán estos pasos:
- la CPU coloca en el bus de direcciones la posición donde se encuentra la instrucción
- la CPU activa la línea de lectura de memoria (bus de control)
- Por el bus de datos llega a la CPU la información de la instrucción y el valor del carácter ‘ñ’
que queremos enviar.
- La CPU pone ahora en el bus de direcciones la posición de E/S donde se halle la
impresora.
- Activa la línea de control de escritura sobre el dispositivo de E/S (un registro de la
impresora)
- Envía por el bus de datos el valor del carácter ‘ñ’ y la impresora lo gestiona según su
protocolo.

Todo este proceso es mucho más complejo en la realidad pero conceptualmente se realiza así y de
forma sincronizada por el reloj del sistema.

Arquitectura de E/S de comunicaciones de red 1


2 Puertos Entrada/Salida
Cualquier dispositivo (distinto de la memoria RAM) que intercambie datos con el sistema lo hace a
través de un "puerto", por esto se denominan también puertos de E/S ("I/O ports"). Desde el
punto de vista del software, un puerto es una interfaz con ciertas características; se trata por tanto
de una abstracción (no nos referimos al enchufe con el que se conecta físicamente un dispositivo
al sistema), aunque desde el punto de vista del hardware, esta abstracción se corresponde con un
dispositivo físico capaz de intercambiar información (E/S) con el bus.
Como los dispositivos E/S tienen algún tipo de conexión con el bus externo, deben tener una
dirección (o conjunto de ellas) que los identifique. Los podemos comparar con un teléfono, un
dispositivo con el que se puede enviar/recibir información mediante una dirección. Hablar de un
puerto E/S es casi siempre sinónimo de una dirección, y es costumbre informática referirse a estas
direcciones en hexadecimal. De modo que, por ejemplo, un puerto puede ser 0x21 en un fichero
fuente o 21h en un texto informático.

2.1 Direcciones de puertos


El modo de direccionamiento del PC ha adoptado dos modelos, según 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 rápidos (típicamente los adaptadores gráficos).

2.1.1 Direccionamiento dedicado


Respecto a los dispositivos de direccionamiento dedicado, desde la introducción del IBM-PC, es
costumbre que determinados dispositivos muy comunes se conecten mediante puertos de
direcciones determinadas.
Algunas direcciones (hex) de puertos en el PC XT/AT EGA (Enhanced Graphic Adapter) 2B0-2BF
Dispositivo Dirección EGA 2C0-2CF
Controlador DMAC#1 primario 8237A 000-00F EGA 2D0-2DF
Controlador de interrupciones PIC#1 8259A 020-021 GPIB Adaptador 0 (AT) 2E0-2E7
Temporizador programable PIT 8253 y 8254 040-043 Puerto serie 8250 (COM4) 2E8-2EF
Controlador periféricos PPI 8255 (XT) 060-063 Puerto serie 8250 (COM2) 2F8-2FF
Controlador 8742 (AT) 060-064 Tarjetas específicas (prototipos) 300-30F
Altavoz del sistema 061-061 Tarjetas específicas (prototipos) 310-31F
CMOS RAM & NMI Mask Reg (AT) 070-071 Controlador disco duro (XT) 320-32F
Registros de página DMA 081-08F Tarjeta de red 360-363
Controlador de interrupciones PIC#2 (AT) 0A0-0A1 Tarjeta de red 368-36B
NMI Mask register (XT) 0A2-0AF Puerto paralelo (LPT1) 378-37F
Controlador DMAC#2 secundario (AT) 0C0-0DF SDLC Puerto 2 380-38F
Clear / Reset del coprocesador matemático 0F0-0F1 SDLC Puerto 1 3A0-3AF
Coprocesador matemático 80287 0F8-0FF MDA (Monochrome Display Adapter) 3B0-3BB
Controlador de disco duro (AT) 1F0-1FF Puerto paralelo (LPT3) 3BC-3BF
Puerto de juegos 200-20F EGA 3C0-3CF
Unidad de expansión (XT) 210-21F CGA 3D0-3DF
Ratón (conectado al bus) 238-23B Puerto serie 8250 (COM3) 3E8-3EF
Ratón de bus alternativo 23C-23F Controlador de disquete 3F0-3F7
Puerto paralelo (LPT2) 278-27F Puerto serie 8250 (COM1) 3F8-3FF

Arquitectura de E/S de comunicaciones de red 2


En la tabla adjunta se muestran algunas de estas direcciones típicas para dispositivos de E/S. Las
referencias a los chips se refieren a los utilizados en los primeros PCs. Actualmente han sido
sustituidos por uno o dos integrados (Chipset) que realizan todas las funciones.
Puede observarse que para un mismo periférico se tienen varias direcciones (un "rango"). La
razón es que estos dispositivos tienen varios registros y/o son programables, para lo que disponen
de registros especiales (cada registro de un Byte tiene una dirección, y estas son correlativas). Por
ejemplo, el controlador de puerto serie de los primeros PCs era un circuito integrado 8250 de
National Semiconductor; que dispone de 8 registros, aunque los datos se reciben y transmiten por
uno de ellos, el resto sirve para programar y controlar el funcionamiento del chip.
Respecto a las asignaciones "Estándar" de algunos puertos, es pertinente hacer algunas
observaciones:
En realidad IBM definió de forma distinta las direcciones de puerto de las interfaces de impresora
en los PC monocromo y en los de color. Las asignaciones fueron las siguientes:
Puerto Monocromo Color
LPT1 3BC-3BFh 378-37Fh
LPT2 378-37Fh 278-27Fh
LPT3 278-27Fh ---

En lo referente a los puertos serie, durante la secuencia inicial de identificación del hardware, la
BIOS realiza una búsqueda de dispositivos de E/S por direcciones en un orden determinado, y les
asigna un nombre lógico según el orden de aparición. En el caso de los puertos serie el orden
suele ser el siguiente:
Puerto Dirección
COM1 3F8-3FFh
COM2 2F8-2FFh
COM3 3E8-3EFh
COM4 2E8-2EFh
Podemos conocer las direcciones de E/S asignadas a los distintos dispositivos periféricos en un
determinado sistema. En el caso de tener un sistema operativo Windows bastará con acceder a las
propiedades del dispositivo hardware que nos interese conocer. Obtendremos una pantalla similar
a la de la figura

Los usuarios de Linux pueden consultarse en el fichero /proc/ioports mediante el comando


cat /proc/ioports

Arquitectura de E/S de comunicaciones de red 3


2.1.2 Direcciones mapeadas en memoria
Las direcciones mapeadas en memoria se eligieron para algunos dispositivos como los
adaptadores gráficos, que requerían mover grandes cantidades de datos muy rápidamente.
Con objeto de no causar conflictos con la RAM general, algunas de estas direcciones fueron
mapeadas desde el principio por los diseñadores de IBM, fuera de la denominada memoria
convencional. Es decir, fuera del espacio de los 640 KB que podían utilizarse en los primeros
PC's para Sistema y programas de aplicación. 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 periféricos de los primitivos PC's solo podían
utilizar direcciones de 10 bits para tales accesos, por lo que las direcciones de puertos estaban
constreñidas a 210 (1 KB 0000-0400h). En realidad el espacio era aún más pequeño, puesto que
los primeros 256 Bytes estaban copados por algunos dispositivos de la placa-base, resultando que
los dispositivos E/S debían ser mapeados en 768 Bytes. Generalmente se utilizaron fragmentos de
256 Bytes en la forma xxF0-xxFFh, organizados de forma bastante desordenada.
La introducción del AT amplió estas direcciones a 16. Sin embargo, incluso los 64 KB resultantes
eran un espacio pequeño y de organización caótica, dado que los nuevos dispositivos se
construían de forma que fueran compatibles con las antiguas placas ISA que solo reconocían
direcciones de 10 bits. Incluso las placas para buses posteriores que fueron desarrollados
pensando en 64 KB porque debían ser compatibles hacia atrás con las antiguas placas ISA (que
coexistían 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 través de pequeñas ventanas de
memoria con localizaciones absurdas.
Comunicar con los puertos
Nos detendremos brevemente en analizar los aspectos involucrados en las operaciones E/S con
los puertos desde una doble vertiente: Lógica y física; esta última relativa a los mecanismos
involucrados en el intercambio.

2.1.3 Aspectos lógicos


El software utilizado depende de la modalidad de direccionamiento (dedicado o mapeado) que se
elija. En el segundo caso, se dispone un amplio repertorio de recursos para mover datos entre los
registros y la memoria (la mayoría de las instrucciones del procesador operan de esta forma), así
como de los mecanismos auxiliares de transferencia, como el acceso directo a memoria DMA.
El panorama es distinto cuando se trata de puertos de direccionamiento dedicado. En este caso,
para realizar las operaciones E/S en los procesadores 8088 y descendientes, solo se dispone de
dos instrucciones específicas: IN y OUT. La primera lee un byte del registro de salida del puerto y
lo sitúa en un registro del procesador; la segunda escribe el contenido de un registro del
procesador en un registro del puerto.
Por supuesto, cualquier programa que quiera utilizar puertos deberá emplear directa o
indirectamente estas dos instrucciones ensamblador, aunque en muchos casos no es
imprescindible enredarse en demasiados detalles.
Los usuarios de DOS pueden utilizar servicios del Sistema; concretamente la interrupción 21h que
realiza operaciones de E/S con puertos (utilizando IN y OUT por supuesto). Por ejemplo, las
instrucciones:
MOV DL,7
MOV AH,2
INT 21
provocan un pitido en el sistema bajo DOS. La explicación es la siguiente: La última instrucción
invoca una interrupción software número 33 (21h) que, como hemos indicado, corresponde a los
servicios del DOS. Cuando esto ocurre, se comprueba el contenido del registro AH, que en este

Arquitectura de E/S de comunicaciones de red 4


caso es 2 (valor previamente establecido en la segunda instrucción), lo que indica que debe
escribirse un carácter en pantalla (un dispositivo de salida); en este caso, el carácter que se envía
al puerto es el contenido del registro DL, que previamente se ha establecido en el valor 7 con la
primera instrucción. El 7 es el valor BELL ASCII; cuando se intenta mostrar este carácter, se
produce un pitido en el altavoz del sistema.
Los demás Sistemas disponen de utilidades análogas. Por ejemplo, los sistemas Windows
disponen de una DLL específica para este tipo de servicios.

2.1.4 Aspectos físicos


El procedimiento que se sigue el procesador para las E/S hacia puertos, es siempre el mismo:
poner el dato en el bus de datos y la dirección en el de direcciones. Como indicamos a
continuación, el sistema sabe que se trata de una dirección de memoria (real o de puerto
mapeado) o de un puerto de dirección dedicada, y cual es la acción esperada (lectura o escritura)
porque se dispone de 4 líneas específicas en el bus de control:
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 señal indica a los dispositivos de memoria que deben
colocar un dato en el bus de datos.
MEMW: Señal que indica a los dispositivos de memoria que deben
almacenar el dato colocado en el bus de datos.
Una cuestión adicional es que cuando la comunicación debe establecerse desde el lado del puerto
(es el puerto el que desea establecer comunicación con el sistema), primero debe anunciarlo al
procesador, para lo que se utiliza un sistema de interrupciones. La consecuencia es que la mayoría
de los puertos disponen de líneas IRQ asignadas para este menester.

3 TÉCNICAS DE ENTRADA Y SALIDA (E/S)


Los periféricos agrupan a una enorme cantidad de dispositivos de muy distintas naturaleza aunque
todos ellos se caracterizan por dar un enlace con el mundo exterior al ordenador. Sin ellos la
máquina sería un elemento cerrado inservible pues no podríamos introducir ni sacar ninguna
información.
Si la CPU tuviera que conectarse directamente con todos los periféricos, el sistema tendría un
rendimiento muy bajo, por eso se utilizan las interfaces, de manera que la CPU les envía la
información y son éstas las que se encargan de conectarse con los periféricos. Esto tiene el
inconveniente de que la CPU debe estar en constante conexión con las interfaces de
entrada/salida con la consiguiente pérdida de ciclos de CPU. La solución a este problema ha sido
crear dispositivos, cada vez más sofisticados, que se encargan de conectarse con las interfaces.
Junto con la CPU y la memoria, el tercer elemento clave en un sistema computador son los
módulos de entrada/salida. Los módulos de entrada/salida
se conectan directamente al bus de sistema y su misión
es controlar uno o más periféricos, es decir son los
encargados de llevar el peso de la transferencia. Para
poder llevar a cabo su misión deben contener la lógica
necesaria para permitir la comunicación entre el periférico
y el bus.
Las funciones asignadas al módulo de entrada/salida son:
- Control y temporización de la transmisión de información
- Comunicación con la CPU

Arquitectura de E/S de comunicaciones de red 5


- Comunicación con los dispositivos periféricos
- Almacenamiento temporal de datos (función de buffer)
- Detección y corrección de errores.
Llamamos técnicas de entrada/salida a las que utiliza el módulo de E/S para comunicarse con el
procesador. Existen tres técnicas: Programada, Interrupciones, Acceso Directo a Memoria.

3.1 E/S PROGRAMADA (POLLING, SONDEO,


ESCRUTINEO)
Al proceso de comprobar periódicamente los bits de
estado de los periféricos para ver si es el momento de
realizar la siguiente operación de entrada/salida se le
llama escrutinio, sondeo, encuesta (polling). Es la forma
más simple de que un dispositivo de entrada/salida se
comunique con el procesador.
El periférico pone la información en el registro de estado
del módulo de entrada/salida y el procesador debe venir y
recoger la información, por lo tanto el procesador tiene el
control y hace todo el trabajo.
La principal característica de esta técnica es que la CPU
permanece en un ciclo hasta que el periférico modifica el
registro de estado del módulo para informar que está
disponible para una nueva operación. El computador
adapta su velocidad de trabajo a la del periférico (qué esta
marcada por los circuitos electromecánicos), y además en
muchas ocasiones pierde ciclos de trabajo efectivo debido
a la espera. Esta forma de trabajo tiene algunos
inconvenientes, como son:
- Pérdida de tiempo, puesto que durante la espera
la CPU no hace trabajo útil. Con periféricos lentos
el bucle de espera puede repetirse miles de
veces.
- Esta técnica es difícil de aplicar cuando se quiere para atender a varios periféricos
- Existen tareas que no pueden esperar a que acabe el ciclo de espera.
- Una solución parcial es la limitación del tiempo de espera del bucle.
Solo se usa para periféricos lentos. Por ejemplo, la frecuencia del ratón es de 0,02Kbytesps, muy
baja comparada con la de discos 2000Kbps o del disco óptico de 500kbps.
Existe otra modalidad de entrada salida programada llamada sin espera de respuesta. En esta
modalidad se supone que cuando el procesador lee el dato, este ya se encuentra preparado.
Elimina el bucle de espera pero es muy propensa a errores.

Arquitectura de E/S de comunicaciones de red 6


3.2 LAS INTERRUPCIONES
Una interrupción es una bifurcación externa al programa en
ejecución provocada por una señal que viene del exterior de la
CPU. Esta señal llega a través de una línea llamada de petición
de interrupción. Las interrupciones también pueden ser internas
a la CPU en este caso se llaman excepciones.
- La CPU indica al módulo de E/S el periférico al que
quiere acceder y la operación que quiere realizar
- A continuación se desentiende de la operación y se
pone a trabajar en algún otro proceso
- Cuando el módulo de entrada/salida acaba la operación,
interrumpe a la CPU para indicarle que ya está lista para
intercambiar información con ella.
- La CPU realiza la transferencia de información tras lo cual continua con el trabajo
interrumpido
Una de las características más importantes de esta técnica
es que debe realizarse una interrupción a la CPU por cada
byte que se intercambia. Esto como veremos más adelante
será una de las causas que provocan la aparición de otras
técnicas de Entrada/Salida. Además una interrupción es
asíncrona, es decir se produce independientemente de la
señal de reloj que sincroniza el sistema. Su principal ventaja
es que eliminan el ciclo de espera del procesador entre cada
entrada de byte.
Se llama rutina de servicio de interrupción a la rutina que se
ejecuta en respuesta a una solicitud de interrupción. Su
forma de actuar es similar a la de una subrutina, debido a
que rompe la secuencia de ejecución del programa, aunque
es diferente porque el programador no sabe de antemano
cuando se llevará a cabo.

Arquitectura de E/S de comunicaciones de red 7


3.3 EL ACCESO DIRECTO A MEMORIA (DMA)
Las técnicas de escrutinio y de interrupciones sólo son útiles para transferencias de pequeño
ancho de banda. En estos casos, el peso de la transacción la sigue llevando la CPU. Pero cuando
hay que realizar grandes intercambios de información entre un dispositivo de alta velocidad y la
CPU, su utilización puede degradar enormemente el rendimiento del sistema. Este es el caso de
los discos duros en los que el ancho de banda es grande (grandes bloque de información que
pueden contener cientos o miles de bytes). Este es el motivo por el que los diseñadores de
computadores inventaron un mecanismo para descargar al procesador de trabajo y lograr que el
controlador del dispositivo transfiriese datos
directamente a/desde la memoria, sin involucrar al
procesador. A este mecanismo se le denomina
Acceso Directo a Memoria (DMA).
En esta nueva técnica todavía se utilizan las
interrupciones para comunicarle al procesador que
ha acabado la transferencia o para comunicarle un
error. El ADM se implementa con un controlador
especializado que transfiere datos entre un
dispositivo de entrada/salida y la memoria
independientemente del procesador.
1. Cuando la CPU desea leer o escribir un bloque
de datos, envía un comando al controlador de DMA
comunicándole la siguiente información:
- Tipo de operación (si es entrada o salida)
- Dirección del módulo de Entrada/Salida
- Primera posición de la memoria a la que se desea acceder
- Nº de palabras a leer o escribir
2. A continuación la CPU reanuda su trabajo, y es el controlador de DMA el encargado de manejar
la E/S.
3. Cuando la transferencia ha terminado el controlador de DMA envía una señal de interrupción a
la CPU.
Como se puede ver la CPU solo interviene al principio y al final de la operación

PERIFÉRICOS DE COMUNICACIONES DE RED


Hasta ahora hemos analizado los dispositivos E/S de forma genérica. En las siguientes imágenes
observamos el aspecto que nos ofrecen algunos dispositivos comerciales orientados a las
comunicaciones de red. Diferenciamos los dispositivos internos que precisan una instalación física
en el interior del PC (normalmente en la ranura PCI) y otros denominados externos, cuyo enlace
con el ordenador se llevará a cabo a través de conexiones USB, RS-232, etc.
Conviene recordar que todos ellos actúan según se ha explicado en las páginas anteriores. Todos
ellos cuentan con registros de control, registros de datos, etc que permiten su configuración,
conocimiento de su estado y su transmisión/recepción de datos.

Arquitectura de E/S de comunicaciones de red 8


Arquitectura de E/S de comunicaciones de red 9