4.4. Operaciones de Entrada /salida

Tanto en la E/S programada como la basada en interrupciones, la UCP debe

encargarse de la transferencia de datos una vez que sabe que hay datos disponibles

en el controlador. Una mejora importante para incrementar la concurrencia entre la

UCP y la E/S consiste en que el controlador del dispositivo se pueda encargar de

efectuar la transferencia de datos, liberando de este trabajo a la UCP, e interrumpir

a la UCP sólo cuando haya terminado la operación completa de E/S. Esta técnica

se denomina acceso directo a memoria (DMA, Direct Memory Access).

Cuando se utiliza acceso directo a memoria, es el controlador el que se encarga

directamente de transferir los datos entre el periférico y la memoria principal, sin

requerir intervención alguna por parte del procesador. Esta técnica funciona de la

siguiente manera: cuando el procesador desea que se imprima un bloque de datos,

envía una orden al controlador indicándole la siguiente información:

• Tipo de operación: lectura o escritura.

• Periférico involucrado en la operación.

• La dirección de memoria desde la que se va a leer o a la que va a escribir

directamente con el controlador de dispositivo (dirección).

• El número de bytes a transferir (contador).

Donde el campo Operación corresponde al código de operación de las instrucciones

máquina normal. Especifica la operación que debe realizar la CCW. La unidad de

control decodifica este campo y envía las señales adecuadas de control al

dispositivo. Existen varias operaciones, las más importantes son las siguientes:

• Lectura: el canal transfiere a memoria principal un bloque de palabras de

tamaño especificado en el campo nº de palabras, en orden ascendente de

direcciones, empezando en la dirección especificada en el campo dirección

del dato.

• Escritura: el canal transfiere datos de memoria principal al dispositivo. Las

palabras se transfieren en el mismo orden que en la operación de lectura.

• Control: se utiliza esta orden para enviar instrucciones específicas al

dispositivo de E/S, como rebobinar una cinta magnética, etc.

• Bifurcación: cumple en el programa de canal la misma función que una

instrucción de salto en un programa normal. El canal ejecuta las CCW en

secuencia, salvo cuando aparece una CCW de este tipo, que utiliza el campo

dirección del dato como la dirección de la siguiente CCW a ejecutar.

Los pasos a seguir en una operación de E/S con DMA son los siguientes:

1. Programación de la operación de E/S. Se indica al controlador la

operación, los datos a transferir y la dirección de memoria sobre la que se

efectuará la operación.

2. El controlador contesta aceptando la petición de E/S.

3. El controlador le ordena al dispositivo que lea (para operación de lectura)

una cierta cantidad de datos desde una posición determinada del dispositivo

a su memoria interna.

4. Cuando los datos están listos, el controlador los copia a la posición de

memoria que tiene en sus registros, incrementa dicha posición de memoria y

decrementa el contador de datospendientes de transferir.

5. Los pasos 3 y 4 se repiten hasta que no quedan más datos por leer.

6. Cuando el registro de contador está a cero, el controlador interrumpe a la

UCP para in dicar que la operación de DMA ha terminado.

Inicio y control de los programas de canal

Hemos visto como se utilizan los programas de canal para realizar operaciones de

E/S. Estos programas residen en la memoria principal del computador y se ejecutan

en el canal. Vamos a examinar ahora la forma en que la CPU inicia y supervisa las

operaciones de E/S, es decir, el programa de canal. En el IBM S/370 existen cuatro

instrucciones máquina que la CPU puede utilizar para estos fines. Son las

siguientes:

• START I/O Inicia una operación de E/S. El campo de dirección de la

instrucción se emplea para especificar el canal y el dispositivo de E/S que

participa en la operación.

• HALT I/O Finaliza la operación del canal.

• TEST CHANNEL Prueba el estado del canal.

• TEST I/O Prueba el estado del canal, el subcanal y el dispositivo de E/S.

Una operación de E/S se inicia con la instrucción START I/O. La ubicación del

programa de canal en la memoria principal viene definida en la palabra de dirección

de canal (CAW: Channel Address word), que siempre está almacenada en la

posición 72 de la memoria principal.

Funciones implicadas en las operaciones de entrada/salida

Para que un computador pueda ejecutar un programa debe ser ubicado

previamente en la memoria, junto con los datos sobre los que opera, y para ello

debe existir una unidad funcional de entrada de información capaz de escribir en la

memoria desde el exterior. Análogamente, para conocer los resultados de la

ejecución de los programas, los usuarios deberán poder leer el contenido de la

memoria a través de otra unidad de salida de datos. La unidad de

Entrada/Salida (E/S) soporta estas funciones, realizando las comunicaciones del

computador (memoria) con el mundo exterior (periféricos). Los dispositivos

periféricos que se pueden conectar a un computador se suelen clasificar en tres

grandes grupos:

Dispositivos de presentación de datos. Son dispositivos con los que

interactúan los usuarios, portando datos entre éstos y la máquina, por

ejemplo, ratón, teclado, pantalla, impresora, etc.

Dispositivos de almacenamiento de datos. Son dispositivos que forman parte

de la jerarquía de memoria del computador. Interactúan de forma autónoma con la máquina, aunque también sirven para el intercambio de datos con el

usuario, por ejemplo, los discos magnéticos.

Dispositivos de comunicación con otros procesadores. Permiten la

comunicación con procesadores remotos a través de redes, por ejemplo, las

redes de área local o global.

Dispositivos de adquisición de datos. Permiten la comunicación con sensores

y actuadores que operan de forma autónoma en el entorno del computador.

Se utilizan en sistemas de control automático de procesos por computador y

suelen incorporar conversores de señales A/D y D/A.


Los dispositivos de transporte y presentación de datos representan una carga muy

baja de trabajo para el procesador comparados con los dispositivos de

almacenamiento. La siguiente tabla muestra las velocidades de transferencia típicas

para diferentes dispositivos:

Aunque la velocidad de transferencia de los dispositivos de presentación de datos
ha sido tradicionalmente lenta comparada con la de los dispositivos de
almacenamiento, en los últimos tiempos la situación está cambiando. Cada vez
más, los computadores se utilizan para manejar documentos multimedia que
constan de gráficos, vídeos y voz. La siguiente tabla presenta algunos parámetros
de transferencia para los dispositivos modernos de E/S multimedia:

• Los gráficos requieren una gran capacidad de procesamiento de datos, hasta
el punto que se han diseñado procesadores de propósito especial para
manejar de forma eficiente las representaciones gráficas (GPU: Graphic
Processor Unit).

• El problema del vídeo es simplemente la animación de los problemas
gráficos, ya que debe crearse una nueva imagen cada 1/30 de segundo (33
milisegundos).

• El procesamiento de la voz es también elevado porque exige la creación o el
reconocimiento de varios fonemas en tiempo real. De hecho es el medio que
más capacidad de procesamiento requiere debido a que presenta el mayor
grado de intolerancia por retrasos en el usuario.

Los dispositivos periféricos que pueden conectarse a un computador para realizar

entrada y salida de información presentan, pues, las siguientes características:

• Tienen formas de funcionamiento muy diferentes entre sí, debido a las

diferentes funciones que realizan y a los principios físicos en los que se

basan.

• La velocidad de transferencia de datos es también diferente entre sí y

diferente de la presentada por la CPU y la memoria.

• Suelen utilizar datos con formatos y longitudes de palabra diferentes

No obstante, estas diferencias, existen una serie de funciones básicas comunes a

todo dispositivo de E/S:

• Identificación única del dispositivo por parte de la CPU

• Capacidad de envío y recepción de datos

• Sincronización de la transmisión, exigida por la diferencia de velocidad de los

dispositivos de E/S con la CPU

La identificación del dispositivo se realiza con un decodificador de direcciones. El

envío y la recepción de datos tienen lugar a través de registros de entrada y salida

de datos. Los circuitos de sincronización se manipulan por medio de registros de

estado y control. El siguiente esquema representa gráficamente estas funciones:


Las tres funciones básicas se pueden realizar a través del bus del sistema que
conecta la memoria y la CPU, o bien se puede utilizar un bus específico para las
operaciones de E/S. Estas alternativas se traducen en dos formas de organización
de los espacios de direcciones:

Espacios de direcciones unificados
Las unidades de E/S se ubican en el espacio único de direcciones como si fuesen elementos de memoria. A cada unidad de E/S se le asigna un conjunto de direcciones (suficiente para diferenciar todos sus registros internos). La interacción entre CPU y unidad de E/S se realiza a través de instrucciones de referencia a memoria. El bus del sistema es único.
Espacios de direcciones independientes (Memoria y E/S) Las unidades de E/S se ubican en un espacio de direcciones diferente al de memoria. La interacción entre CPU y unidad de E/S se realiza a través de instrucciones específicas de E/S. 
La separación de espacios de direcciones puede soportarse con un bus único de uso compartido entre Memoria y E/S en función del estado de una línea de control MEM/IO:
Pero el desdoblamiento de espacios de direcciones puede responder a la existencia
de dos buses independientes, uno para memoria (bus del sistema) y otro para E/S:

Funcionalmente son equivalentes, pero desde el punto de vista de la codificación
de programas difieren en el uso de las instrucciones. En el caso de E/S asignada
en memoria se utilizan instrucciones de referencia a memoria, mientras que para
E/S aislada existe un grupo particular de instrucciones para realizar esta función.

Comentarios